summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCircle CI <circleci@navit-project.org>2017-10-30 00:23:00 +0000
committerCircle CI <circleci@navit-project.org>2017-10-30 00:23:00 +0000
commit82b0529430d6bbfa9d1ebe3c8706c2a37a033b12 (patch)
treea7d8c6e13a25a4add493f7ab74bbd45530d5bfb5
parent3d234b7049c094314ae60de2779cd6672a04d90c (diff)
downloadnavit-82b0529430d6bbfa9d1ebe3c8706c2a37a033b12.tar.gz
Update doc for commit c4e55b27cca91d761c9f4385cddb65b2eb5f8e3c
-rw-r--r--.circleci/config.yml112
-rw-r--r--.gitignore2
-rw-r--r--AUTHORS7
-rwxr-xr-xCMakeLists.txt863
-rw-r--r--COPYING163
-rw-r--r--COPYRIGHT2
-rw-r--r--ChangeLog4
-rw-r--r--ConvertUTF_8h_source.html (renamed from html/ConvertUTF_8h_source.html)0
-rw-r--r--DownloaderAppDelegate_8h_source.html (renamed from html/DownloaderAppDelegate_8h_source.html)0
-rw-r--r--DownloaderConstants_8h_source.html (renamed from html/DownloaderConstants_8h_source.html)0
-rw-r--r--DownloaderDetailViewController_8h_source.html (renamed from html/DownloaderDetailViewController_8h_source.html)0
-rw-r--r--GPL-2339
-rw-r--r--LGPL-2481
-rw-r--r--QNavitQuick_8h_source.html (renamed from html/QNavitQuick_8h_source.html)0
-rw-r--r--QNavitWidget_8h_source.html (renamed from html/QNavitWidget_8h_source.html)0
-rw-r--r--Qt5EspeakAudioOut_8h_source.html (renamed from html/Qt5EspeakAudioOut_8h_source.html)0
-rw-r--r--README.md90
-rw-r--r--RenderArea_8h_source.html (renamed from html/RenderArea_8h_source.html)0
-rw-r--r--RootViewController_8h_source.html (renamed from html/RootViewController_8h_source.html)0
-rw-r--r--StdAfx_8h_source.html (renamed from html/StdAfx_8h_source.html)0
-rw-r--r--Toolchain/arm-apple-darwin9.cmake22
-rwxr-xr-xToolchain/arm-eabi.cmake31
-rw-r--r--Toolchain/arm-linux.cmake14
-rw-r--r--Toolchain/arm-mingw32ce.cmake8
-rw-r--r--Toolchain/i386-mingw32ce.cmake8
-rwxr-xr-xToolchain/i686-android.cmake31
-rw-r--r--Toolchain/mingw32.cmake21
-rw-r--r--Toolchain/xcode-iphone-sim.cmake7
-rw-r--r--Toolchain/xcode-iphone.cmake8
-rw-r--r--VSSpeechSynthesizer_8h_source.html (renamed from html/VSSpeechSynthesizer_8h_source.html)0
-rw-r--r--XF86keysym_8h_source.html (renamed from html/XF86keysym_8h_source.html)0
-rw-r--r--XGetopt_8h_source.html (renamed from html/XGetopt_8h_source.html)0
-rw-r--r--__mingw_8h_source.html (renamed from html/__mingw_8h_source.html)0
-rw-r--r--addwinsock_8h_source.html (renamed from html/addwinsock_8h_source.html)0
-rw-r--r--android_8h_source.html (renamed from html/android_8h_source.html)0
-rw-r--r--annotated.html (renamed from html/annotated.html)0
-rw-r--r--annotated.js (renamed from html/annotated.js)0
-rw-r--r--announcement_8h_source.html (renamed from html/announcement_8h_source.html)0
-rw-r--r--atom_8h_source.html (renamed from html/atom_8h_source.html)0
-rw-r--r--attr_8h_source.html (renamed from html/attr_8h_source.html)0
-rw-r--r--attr__def_8h.html (renamed from html/attr__def_8h.html)0
-rw-r--r--attr__def_8h_source.html (renamed from html/attr__def_8h_source.html)0
-rw-r--r--backend_8h_source.html (renamed from html/backend_8h_source.html)0
-rw-r--r--bc_s.png (renamed from html/bc_s.png)bin676 -> 676 bytes
-rw-r--r--bdwn.png (renamed from html/bdwn.png)bin147 -> 147 bytes
-rw-r--r--binding__win32_8h_source.html (renamed from html/binding__win32_8h_source.html)0
-rw-r--r--bluetooth_8h_source.html (renamed from html/bluetooth_8h_source.html)0
-rw-r--r--bookmarksProxy_8h_source.html (renamed from html/bookmarksProxy_8h_source.html)0
-rw-r--r--bookmarks_8h_source.html (renamed from html/bookmarks_8h_source.html)0
-rw-r--r--cJSON_8h_source.html (renamed from html/cJSON_8h_source.html)0
-rw-r--r--cache_8h_source.html (renamed from html/cache_8h_source.html)0
-rw-r--r--callback_8h_source.html (renamed from html/callback_8h_source.html)0
-rw-r--r--ceglue_8h_source.html (renamed from html/ceglue_8h_source.html)0
-rw-r--r--ci/basic_upload_apks.py82
-rw-r--r--ci/build.sh14
-rw-r--r--ci/build_android.sh41
-rw-r--r--ci/build_android_x86.sh41
-rw-r--r--ci/build_linux.sh40
-rw-r--r--ci/build_tomtom_minimal.sh69
-rw-r--r--ci/build_tomtom_plugin.sh140
-rw-r--r--ci/build_win32.sh8
-rw-r--r--ci/build_wince.sh3
-rw-r--r--ci/dbus_tests.py52
-rw-r--r--ci/docker/tomtom/Dockerfile106
-rw-r--r--ci/docker/tomtom/README.md7
-rw-r--r--ci/docker/tomtom/entrypoint.sh3
-rw-r--r--ci/docker/tomtom/tomtom.cache5
-rw-r--r--ci/import_translations.sh44
-rw-r--r--ci/merge_i18n_update.sh9
-rw-r--r--ci/pointer-64.pngbin1733 -> 0 bytes
-rw-r--r--ci/publish.sh17
-rw-r--r--ci/run_linux_tests.sh66
-rw-r--r--ci/setup_android.sh34
-rw-r--r--ci/setup_common_requirements.sh1
-rw-r--r--ci/setup_tomtom_requirements.sh167
-rw-r--r--ci/xdotools.sh97
-rw-r--r--classBackend.html (renamed from html/classBackend.html)0
-rw-r--r--classBackend.js (renamed from html/classBackend.js)0
-rw-r--r--classBackend.png (renamed from html/classBackend.png)bin375 -> 375 bytes
-rw-r--r--classBookmarkObject.html (renamed from html/classBookmarkObject.html)0
-rw-r--r--classBookmarkObject.js (renamed from html/classBookmarkObject.js)0
-rw-r--r--classBookmarkObject.png (renamed from html/classBookmarkObject.png)bin485 -> 485 bytes
-rw-r--r--classMapObject.html (renamed from html/classMapObject.html)0
-rw-r--r--classMapObject.js (renamed from html/classMapObject.js)0
-rw-r--r--classMapObject.png (renamed from html/classMapObject.png)bin428 -> 428 bytes
-rw-r--r--classNGQMainWindow.html (renamed from html/classNGQMainWindow.html)0
-rw-r--r--classNGQMainWindow.js (renamed from html/classNGQMainWindow.js)0
-rw-r--r--classNGQMainWindow.png (renamed from html/classNGQMainWindow.png)bin496 -> 496 bytes
-rw-r--r--classNGQPoint.html (renamed from html/classNGQPoint.html)0
-rw-r--r--classNGQPoint.js (renamed from html/classNGQPoint.js)0
-rw-r--r--classNGQPoint.png (renamed from html/classNGQPoint.png)bin411 -> 411 bytes
-rw-r--r--classNGQProxy.html (renamed from html/classNGQProxy.html)0
-rw-r--r--classNGQProxy.js (renamed from html/classNGQProxy.js)0
-rw-r--r--classNGQProxy.png (renamed from html/classNGQProxy.png)bin2139 -> 2139 bytes
-rw-r--r--classNGQProxyBookmarks.html (renamed from html/classNGQProxyBookmarks.html)0
-rw-r--r--classNGQProxyBookmarks.js (renamed from html/classNGQProxyBookmarks.js)0
-rw-r--r--classNGQProxyBookmarks.png (renamed from html/classNGQProxyBookmarks.png)bin781 -> 781 bytes
-rw-r--r--classNGQProxyGui.html (renamed from html/classNGQProxyGui.html)0
-rw-r--r--classNGQProxyGui.js (renamed from html/classNGQProxyGui.js)0
-rw-r--r--classNGQProxyGui.png (renamed from html/classNGQProxyGui.png)bin676 -> 676 bytes
-rw-r--r--classNGQProxyNavit.html (renamed from html/classNGQProxyNavit.html)0
-rw-r--r--classNGQProxyNavit.js (renamed from html/classNGQProxyNavit.js)0
-rw-r--r--classNGQProxyNavit.png (renamed from html/classNGQProxyNavit.png)bin706 -> 706 bytes
-rw-r--r--classNGQProxyRoute.html (renamed from html/classNGQProxyRoute.html)0
-rw-r--r--classNGQProxyRoute.js (renamed from html/classNGQProxyRoute.js)0
-rw-r--r--classNGQProxyRoute.png (renamed from html/classNGQProxyRoute.png)bin715 -> 715 bytes
-rw-r--r--classNGQProxySearch.html (renamed from html/classNGQProxySearch.html)0
-rw-r--r--classNGQProxySearch.js (renamed from html/classNGQProxySearch.js)0
-rw-r--r--classNGQProxySearch.png (renamed from html/classNGQProxySearch.png)bin727 -> 727 bytes
-rw-r--r--classNGQProxyVehicle.html (renamed from html/classNGQProxyVehicle.html)0
-rw-r--r--classNGQProxyVehicle.js (renamed from html/classNGQProxyVehicle.js)0
-rw-r--r--classNGQProxyVehicle.png (renamed from html/classNGQProxyVehicle.png)bin734 -> 734 bytes
-rw-r--r--classNGQStandardItemModel.html (renamed from html/classNGQStandardItemModel.html)0
-rw-r--r--classNGQStandardItemModel.js (renamed from html/classNGQStandardItemModel.js)0
-rw-r--r--classNGQStandardItemModel.png (renamed from html/classNGQStandardItemModel.png)bin654 -> 654 bytes
-rw-r--r--classPoiObject.html (renamed from html/classPoiObject.html)0
-rw-r--r--classPoiObject.js (renamed from html/classPoiObject.js)0
-rw-r--r--classPoiObject.png (renamed from html/classPoiObject.png)bin401 -> 401 bytes
-rw-r--r--classQNavitGeoReceiver.html (renamed from html/classQNavitGeoReceiver.html)0
-rw-r--r--classQNavitGeoReceiver.js (renamed from html/classQNavitGeoReceiver.js)0
-rw-r--r--classQNavitGeoReceiver.png (renamed from html/classQNavitGeoReceiver.png)bin512 -> 512 bytes
-rw-r--r--classQNavitQuick.html (renamed from html/classQNavitQuick.html)0
-rw-r--r--classQNavitQuick.js (renamed from html/classQNavitQuick.js)0
-rw-r--r--classQNavitQuick.png (renamed from html/classQNavitQuick.png)bin535 -> 535 bytes
-rw-r--r--classQNavitWidget.html (renamed from html/classQNavitWidget.html)0
-rw-r--r--classQNavitWidget.js (renamed from html/classQNavitWidget.js)0
-rw-r--r--classQNavitWidget.png (renamed from html/classQNavitWidget.png)bin464 -> 464 bytes
-rw-r--r--classQt5EspeakAudioOut.html (renamed from html/classQt5EspeakAudioOut.html)0
-rw-r--r--classQt5EspeakAudioOut.js (renamed from html/classQt5EspeakAudioOut.js)0
-rw-r--r--classQt5EspeakAudioOut.png (renamed from html/classQt5EspeakAudioOut.png)bin518 -> 518 bytes
-rw-r--r--classRenderArea.html (renamed from html/classRenderArea.html)0
-rw-r--r--classRenderArea.js (renamed from html/classRenderArea.js)0
-rw-r--r--classRenderArea.png (renamed from html/classRenderArea.png)bin677 -> 677 bytes
-rw-r--r--classSearchObject.html (renamed from html/classSearchObject.html)0
-rw-r--r--classSearchObject.js (renamed from html/classSearchObject.js)0
-rw-r--r--classSearchObject.png (renamed from html/classSearchObject.png)bin465 -> 465 bytes
-rw-r--r--classVehicleObject.html (renamed from html/classVehicleObject.html)0
-rw-r--r--classVehicleObject.js (renamed from html/classVehicleObject.js)0
-rw-r--r--classVehicleObject.png (renamed from html/classVehicleObject.png)bin458 -> 458 bytes
-rw-r--r--classcorelocation.html (renamed from html/classcorelocation.html)0
-rw-r--r--classes.html (renamed from html/classes.html)0
-rw-r--r--classmapExtract.html (renamed from html/classmapExtract.html)0
-rw-r--r--classmapExtract.js (renamed from html/classmapExtract.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.png)bin730 -> 730 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1Navit.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1Navit.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1Navit.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1Navit.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1Navit.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1Navit.png)bin605 -> 605 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.png)bin893 -> 893 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.png)bin709 -> 709 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.png)bin967 -> 967 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitCamera.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitCamera.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitCamera.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitCamera.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitCamera.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitCamera.png)bin980 -> 980 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitDialogs.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitDialogs.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitDialogs.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.png)bin666 -> 666 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.png)bin1042 -> 1042 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitGraphics.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitGraphics.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitGraphics.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitGraphics.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitMap.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitMap.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitMap.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitMap.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.png)bin675 -> 675 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.png)bin962 -> 962 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitSensors.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitSensors.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitSensors.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitSensors.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitSensors.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitSensors.png)bin769 -> 769 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitSpeech.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitSpeech.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitSpeech.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.png)bin658 -> 658 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.png)bin1242 -> 1242 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitTextTranslations.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitTextTranslations.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitTimeout.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitTimeout.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitTimeout.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.png)bin660 -> 660 bytes
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitVehicle.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitVehicle.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitVehicle.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitVehicle.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitWatch.html (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitWatch.html)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitWatch.js (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitWatch.js)0
-rw-r--r--classorg_1_1navitproject_1_1navit_1_1NavitWatch.png (renamed from html/classorg_1_1navitproject_1_1navit_1_1NavitWatch.png)bin649 -> 649 bytes
-rw-r--r--classqt5__navit__timer.html (renamed from html/classqt5__navit__timer.html)0
-rw-r--r--classqt5__navit__timer.js (renamed from html/classqt5__navit__timer.js)0
-rw-r--r--classqt5__navit__timer.png (renamed from html/classqt5__navit__timer.png)bin481 -> 481 bytes
-rw-r--r--closed.png (renamed from html/closed.png)bin132 -> 132 bytes
-rw-r--r--cmake/FindDBus.cmake26
-rw-r--r--cmake/FindDBusGLib.cmake23
-rw-r--r--cmake/FindGTK2.cmake471
-rw-r--r--cmake/FindGlib.cmake39
-rw-r--r--cmake/FindGmodule.cmake28
-rw-r--r--cmake/FindXGettextGlade.cmake10
-rw-r--r--cmake/Findespeak.cmake29
-rw-r--r--cmake/LibFindMacros.cmake99
-rw-r--r--cmake/build.xml7
-rw-r--r--cmake/copy_files.cmake15
-rw-r--r--cmake/navit_download.cmake10
-rw-r--r--cmake/navit_macros.cmake108
-rw-r--r--cmake/navit_po_version.cmake3
-rw-r--r--cmake/navit_writemapxml.cmake2
-rw-r--r--cmake/navit_xml_parser.cmake25
-rw-r--r--cmake/navit_xml_parser_glade.cmake12
-rw-r--r--cmake/recolor.cmake5
-rw-r--r--cmake/replace.cmake3
-rw-r--r--cmake/strings_xml_parser.cmake10
-rw-r--r--cmake/test.xml3
-rw-r--r--cmake/test.xslt2
-rwxr-xr-xcmake/version.cmake29
-rw-r--r--color_8h_source.html (renamed from html/color_8h_source.html)0
-rw-r--r--command_8h_source.html (renamed from html/command_8h_source.html)0
-rw-r--r--common_8h_source.html (renamed from html/common_8h_source.html)0
-rw-r--r--config.h.cmake97
-rw-r--r--config___8h_source.html (renamed from html/config___8h_source.html)0
-rwxr-xr-xcontrib/android-update-map-sizes.pl41
-rw-r--r--contrib/cursor/navitcursor.svg102
-rwxr-xr-xcontrib/geojson-to-bbox.py35
-rw-r--r--contrib/images/androidtablet.pngbin868038 -> 0 bytes
-rwxr-xr-xcontrib/sailfish/build_on_sailfish_sdk.sh7
-rwxr-xr-xcontrib/sailfish/navit-sailfish.spec145
-rw-r--r--contrib/sjjb_import.pl243
-rw-r--r--contrib/tomtom/SDKRegistry/navit.cap7
-rw-r--r--contrib/tomtom/SDKRegistry/ts.cap8
-rw-r--r--contrib/tomtom/espeakdsp.c101
-rwxr-xr-xcontrib/tomtom/navit-wrapper59
-rw-r--r--contrib/tomtom/ts/ts-wrapper15
-rw-r--r--coord_8h_source.html (renamed from html/coord_8h_source.html)0
-rw-r--r--corelocation_8h_source.html (renamed from html/corelocation_8h_source.html)0
-rw-r--r--country_8h_source.html (renamed from html/country_8h_source.html)0
-rw-r--r--cpack.cmake4
-rw-r--r--crc32_8h_source.html (renamed from html/crc32_8h_source.html)0
-rw-r--r--csv_8h_source.html (renamed from html/csv_8h_source.html)0
-rw-r--r--data_8h_source.html (renamed from html/data_8h_source.html)0
-rw-r--r--data__window_8h_source.html (renamed from html/data__window_8h_source.html)0
-rw-r--r--data__window__int_8h_source.html (renamed from html/data__window__int_8h_source.html)0
-rw-r--r--debug_8h_source.html (renamed from html/debug_8h_source.html)0
-rw-r--r--destination_8h_source.html (renamed from html/destination_8h_source.html)0
-rw-r--r--dir_01be1695a670be0b6d48021481a5b2d6.html (renamed from html/dir_01be1695a670be0b6d48021481a5b2d6.html)0
-rw-r--r--dir_03e3eb2eecbc579fe01fe1cbc1e39671.html (renamed from html/dir_03e3eb2eecbc579fe01fe1cbc1e39671.html)0
-rw-r--r--dir_049d1c8c57dbcf379acaaa14064791e6.html (renamed from html/dir_049d1c8c57dbcf379acaaa14064791e6.html)0
-rw-r--r--dir_049d1c8c57dbcf379acaaa14064791e6.js (renamed from html/dir_049d1c8c57dbcf379acaaa14064791e6.js)0
-rw-r--r--dir_051ff8d3d6d7373477c7750a504c273a.html (renamed from html/dir_051ff8d3d6d7373477c7750a504c273a.html)0
-rw-r--r--dir_051ff8d3d6d7373477c7750a504c273a.js (renamed from html/dir_051ff8d3d6d7373477c7750a504c273a.js)0
-rw-r--r--dir_062cf704faf8860ba50e0ddefeb8b4e5.html (renamed from html/dir_062cf704faf8860ba50e0ddefeb8b4e5.html)0
-rw-r--r--dir_062cf704faf8860ba50e0ddefeb8b4e5.js (renamed from html/dir_062cf704faf8860ba50e0ddefeb8b4e5.js)0
-rw-r--r--dir_0869548661c08605e6acc2b1e629ac65.html (renamed from html/dir_0869548661c08605e6acc2b1e629ac65.html)0
-rw-r--r--dir_0b911790f78934063c7344008ce2a69c.html (renamed from html/dir_0b911790f78934063c7344008ce2a69c.html)0
-rw-r--r--dir_0d964a942848f2da9e4611d1f0b24068.html (renamed from html/dir_0d964a942848f2da9e4611d1f0b24068.html)0
-rw-r--r--dir_0d964a942848f2da9e4611d1f0b24068.js (renamed from html/dir_0d964a942848f2da9e4611d1f0b24068.js)0
-rw-r--r--dir_11bc0974ce736ce9a6fadebbeb7a8314.html (renamed from html/dir_11bc0974ce736ce9a6fadebbeb7a8314.html)0
-rw-r--r--dir_11bc0974ce736ce9a6fadebbeb7a8314.js (renamed from html/dir_11bc0974ce736ce9a6fadebbeb7a8314.js)0
-rw-r--r--dir_12305126b3bea02e6a26c9511d9cc1d7.html (renamed from html/dir_12305126b3bea02e6a26c9511d9cc1d7.html)0
-rw-r--r--dir_12305126b3bea02e6a26c9511d9cc1d7.js (renamed from html/dir_12305126b3bea02e6a26c9511d9cc1d7.js)0
-rw-r--r--dir_1665a1f26aa7f80a33d12b48dabffa73.html (renamed from html/dir_1665a1f26aa7f80a33d12b48dabffa73.html)0
-rw-r--r--dir_1665a1f26aa7f80a33d12b48dabffa73.js (renamed from html/dir_1665a1f26aa7f80a33d12b48dabffa73.js)0
-rw-r--r--dir_16a7e9c1028f2761047e32e74b8532d0.html (renamed from html/dir_16a7e9c1028f2761047e32e74b8532d0.html)0
-rw-r--r--dir_16a7e9c1028f2761047e32e74b8532d0.js (renamed from html/dir_16a7e9c1028f2761047e32e74b8532d0.js)0
-rw-r--r--dir_1a03594d4311eaaa5903d40e9d43d9c6.html (renamed from html/dir_1a03594d4311eaaa5903d40e9d43d9c6.html)0
-rw-r--r--dir_1cbcf0eb16a00953e11e647e048cb14e.html (renamed from html/dir_1cbcf0eb16a00953e11e647e048cb14e.html)0
-rw-r--r--dir_1d90612e2b94e2840a52a97dcade9272.html (renamed from html/dir_1d90612e2b94e2840a52a97dcade9272.html)0
-rw-r--r--dir_1d90612e2b94e2840a52a97dcade9272.js (renamed from html/dir_1d90612e2b94e2840a52a97dcade9272.js)0
-rw-r--r--dir_1e01caeed39e438b48739037bdceb4ca.html (renamed from html/dir_1e01caeed39e438b48739037bdceb4ca.html)0
-rw-r--r--dir_1e01caeed39e438b48739037bdceb4ca.js (renamed from html/dir_1e01caeed39e438b48739037bdceb4ca.js)0
-rw-r--r--dir_1e09e1eef3b8f293ec297f89dc24ff08.html (renamed from html/dir_1e09e1eef3b8f293ec297f89dc24ff08.html)0
-rw-r--r--dir_1e09e1eef3b8f293ec297f89dc24ff08.js (renamed from html/dir_1e09e1eef3b8f293ec297f89dc24ff08.js)0
-rw-r--r--dir_287d7b7976a99f2561b2ce94852b1449.html (renamed from html/dir_287d7b7976a99f2561b2ce94852b1449.html)0
-rw-r--r--dir_287d7b7976a99f2561b2ce94852b1449.js (renamed from html/dir_287d7b7976a99f2561b2ce94852b1449.js)0
-rw-r--r--dir_2aa4980eacc8aab9a0113566592db946.html (renamed from html/dir_2aa4980eacc8aab9a0113566592db946.html)0
-rw-r--r--dir_2e6071dd015bf407accca31deaee8497.html (renamed from html/dir_2e6071dd015bf407accca31deaee8497.html)0
-rw-r--r--dir_2ea991e553e5d35b57b9be4f74274886.html (renamed from html/dir_2ea991e553e5d35b57b9be4f74274886.html)0
-rw-r--r--dir_2ea991e553e5d35b57b9be4f74274886.js (renamed from html/dir_2ea991e553e5d35b57b9be4f74274886.js)0
-rw-r--r--dir_2fc37108f732ff0ccba030a362106989.html (renamed from html/dir_2fc37108f732ff0ccba030a362106989.html)0
-rw-r--r--dir_2fc37108f732ff0ccba030a362106989.js (renamed from html/dir_2fc37108f732ff0ccba030a362106989.js)0
-rw-r--r--dir_36587c23e77b5edc814903d328039f6c.html (renamed from html/dir_36587c23e77b5edc814903d328039f6c.html)0
-rw-r--r--dir_36587c23e77b5edc814903d328039f6c.js (renamed from html/dir_36587c23e77b5edc814903d328039f6c.js)0
-rw-r--r--dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.html (renamed from html/dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.html)0
-rw-r--r--dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.js (renamed from html/dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.js)0
-rw-r--r--dir_399a916a4057be65784a57a4334cd12d.html (renamed from html/dir_399a916a4057be65784a57a4334cd12d.html)0
-rw-r--r--dir_399a916a4057be65784a57a4334cd12d.js (renamed from html/dir_399a916a4057be65784a57a4334cd12d.js)0
-rw-r--r--dir_3a8cc4e97c7c9558c7ed0293a8c475f4.html (renamed from html/dir_3a8cc4e97c7c9558c7ed0293a8c475f4.html)0
-rw-r--r--dir_3a8cc4e97c7c9558c7ed0293a8c475f4.js (renamed from html/dir_3a8cc4e97c7c9558c7ed0293a8c475f4.js)0
-rw-r--r--dir_3c6a17148547da62484d40199057d705.html (renamed from html/dir_3c6a17148547da62484d40199057d705.html)0
-rw-r--r--dir_3c6a17148547da62484d40199057d705.js (renamed from html/dir_3c6a17148547da62484d40199057d705.js)0
-rw-r--r--dir_427b8f7c829b11980b949351e343533f.html (renamed from html/dir_427b8f7c829b11980b949351e343533f.html)0
-rw-r--r--dir_4993c6783887a0bc8a44af89ddf4100f.html (renamed from html/dir_4993c6783887a0bc8a44af89ddf4100f.html)0
-rw-r--r--dir_4993c6783887a0bc8a44af89ddf4100f.js (renamed from html/dir_4993c6783887a0bc8a44af89ddf4100f.js)0
-rw-r--r--dir_4d36eab17b098bd159af5f27a623f307.html (renamed from html/dir_4d36eab17b098bd159af5f27a623f307.html)0
-rw-r--r--dir_4e4a63407ebf32610755ea235ec7d037.html (renamed from html/dir_4e4a63407ebf32610755ea235ec7d037.html)0
-rw-r--r--dir_4e4a63407ebf32610755ea235ec7d037.js (renamed from html/dir_4e4a63407ebf32610755ea235ec7d037.js)0
-rw-r--r--dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html (renamed from html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html)0
-rw-r--r--dir_4eeb864c4eec08c7d6b9d3b0352cfdde.js (renamed from html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.js)0
-rw-r--r--dir_51e781f726fdae13b2b1c599701003ff.html (renamed from html/dir_51e781f726fdae13b2b1c599701003ff.html)0
-rw-r--r--dir_5348599fb53ffd0a04c751b1feb60690.html (renamed from html/dir_5348599fb53ffd0a04c751b1feb60690.html)0
-rw-r--r--dir_5348599fb53ffd0a04c751b1feb60690.js (renamed from html/dir_5348599fb53ffd0a04c751b1feb60690.js)0
-rw-r--r--dir_54f7e3dbaecc7243bd4ca1df73de1d82.html (renamed from html/dir_54f7e3dbaecc7243bd4ca1df73de1d82.html)0
-rw-r--r--dir_54f7e3dbaecc7243bd4ca1df73de1d82.js (renamed from html/dir_54f7e3dbaecc7243bd4ca1df73de1d82.js)0
-rw-r--r--dir_58062094631e8b3486802dabc50a069c.html (renamed from html/dir_58062094631e8b3486802dabc50a069c.html)0
-rw-r--r--dir_58062094631e8b3486802dabc50a069c.js (renamed from html/dir_58062094631e8b3486802dabc50a069c.js)0
-rw-r--r--dir_5815af820a9cc9481f1d0990a0d60286.html (renamed from html/dir_5815af820a9cc9481f1d0990a0d60286.html)0
-rw-r--r--dir_5815af820a9cc9481f1d0990a0d60286.js (renamed from html/dir_5815af820a9cc9481f1d0990a0d60286.js)0
-rw-r--r--dir_5a40adf178dff7122e8e918d506dfd55.html (renamed from html/dir_5a40adf178dff7122e8e918d506dfd55.html)0
-rw-r--r--dir_5bf5a092212d00af6395eab71ebb39ca.html (renamed from html/dir_5bf5a092212d00af6395eab71ebb39ca.html)0
-rw-r--r--dir_5c283744458b038400bd774ec89e9ec9.html (renamed from html/dir_5c283744458b038400bd774ec89e9ec9.html)0
-rw-r--r--dir_5c283744458b038400bd774ec89e9ec9.js (renamed from html/dir_5c283744458b038400bd774ec89e9ec9.js)0
-rw-r--r--dir_5d688059bd21a313bc96de52905569a5.html (renamed from html/dir_5d688059bd21a313bc96de52905569a5.html)0
-rw-r--r--dir_5d688059bd21a313bc96de52905569a5.js (renamed from html/dir_5d688059bd21a313bc96de52905569a5.js)0
-rw-r--r--dir_5efb8cfc1694cbfe4776847fbb5c563b.html (renamed from html/dir_5efb8cfc1694cbfe4776847fbb5c563b.html)0
-rw-r--r--dir_5efb8cfc1694cbfe4776847fbb5c563b.js (renamed from html/dir_5efb8cfc1694cbfe4776847fbb5c563b.js)0
-rw-r--r--dir_629690313ac978c400b86cc5525f4b87.html (renamed from html/dir_629690313ac978c400b86cc5525f4b87.html)0
-rw-r--r--dir_629690313ac978c400b86cc5525f4b87.js (renamed from html/dir_629690313ac978c400b86cc5525f4b87.js)0
-rw-r--r--dir_62ed8f96c89320da3fd7e16a2b85192c.html (renamed from html/dir_62ed8f96c89320da3fd7e16a2b85192c.html)0
-rw-r--r--dir_62ed8f96c89320da3fd7e16a2b85192c.js (renamed from html/dir_62ed8f96c89320da3fd7e16a2b85192c.js)0
-rw-r--r--dir_63b52ddf23d778bbcd97539fd18c8c48.html (renamed from html/dir_63b52ddf23d778bbcd97539fd18c8c48.html)0
-rw-r--r--dir_63b52ddf23d778bbcd97539fd18c8c48.js (renamed from html/dir_63b52ddf23d778bbcd97539fd18c8c48.js)0
-rw-r--r--dir_6401633e45a6ee04875dcf08ad199ed0.html (renamed from html/dir_6401633e45a6ee04875dcf08ad199ed0.html)0
-rw-r--r--dir_6549bedf82156dc06df95cefb015444e.html (renamed from html/dir_6549bedf82156dc06df95cefb015444e.html)0
-rw-r--r--dir_6632ad731806dd8b26d3b944846146dd.html (renamed from html/dir_6632ad731806dd8b26d3b944846146dd.html)0
-rw-r--r--dir_682f25d9f1da5b43b9ccb6b6343fc6a1.html (renamed from html/dir_682f25d9f1da5b43b9ccb6b6343fc6a1.html)0
-rw-r--r--dir_68d2249a13631ab5cc14671480d55776.html (renamed from html/dir_68d2249a13631ab5cc14671480d55776.html)0
-rw-r--r--dir_6964d06faaa66aae8a0594d4dc847a0b.html (renamed from html/dir_6964d06faaa66aae8a0594d4dc847a0b.html)0
-rw-r--r--dir_6964d06faaa66aae8a0594d4dc847a0b.js (renamed from html/dir_6964d06faaa66aae8a0594d4dc847a0b.js)0
-rw-r--r--dir_6bdf73800134bb9604564d37aee1e29f.html (renamed from html/dir_6bdf73800134bb9604564d37aee1e29f.html)0
-rw-r--r--dir_6bdf73800134bb9604564d37aee1e29f.js (renamed from html/dir_6bdf73800134bb9604564d37aee1e29f.js)0
-rw-r--r--dir_6ffc0f016d2deaea924d934b564632d3.html (renamed from html/dir_6ffc0f016d2deaea924d934b564632d3.html)0
-rw-r--r--dir_6ffc0f016d2deaea924d934b564632d3.js (renamed from html/dir_6ffc0f016d2deaea924d934b564632d3.js)0
-rw-r--r--dir_71c7180a61976a97772dea51b3e2c740.html (renamed from html/dir_71c7180a61976a97772dea51b3e2c740.html)0
-rw-r--r--dir_71c7180a61976a97772dea51b3e2c740.js (renamed from html/dir_71c7180a61976a97772dea51b3e2c740.js)0
-rw-r--r--dir_720b853eee6f4465f2234e49d40a2650.html (renamed from html/dir_720b853eee6f4465f2234e49d40a2650.html)0
-rw-r--r--dir_720b853eee6f4465f2234e49d40a2650.js (renamed from html/dir_720b853eee6f4465f2234e49d40a2650.js)0
-rw-r--r--dir_7840427b37271f46ca660243b7a28cba.html (renamed from html/dir_7840427b37271f46ca660243b7a28cba.html)0
-rw-r--r--dir_7840427b37271f46ca660243b7a28cba.js (renamed from html/dir_7840427b37271f46ca660243b7a28cba.js)0
-rw-r--r--dir_799e7b941177909dc945dfdc8b692383.html (renamed from html/dir_799e7b941177909dc945dfdc8b692383.html)0
-rw-r--r--dir_7aca145e4cc077bd1181164f6fd57a65.html (renamed from html/dir_7aca145e4cc077bd1181164f6fd57a65.html)0
-rw-r--r--dir_7aed18b4691c13264304778a7a12cc02.html (renamed from html/dir_7aed18b4691c13264304778a7a12cc02.html)0
-rw-r--r--dir_7aed18b4691c13264304778a7a12cc02.js (renamed from html/dir_7aed18b4691c13264304778a7a12cc02.js)0
-rw-r--r--dir_7e6a584d3889449e2c432321014d65b5.html (renamed from html/dir_7e6a584d3889449e2c432321014d65b5.html)0
-rw-r--r--dir_7e6a584d3889449e2c432321014d65b5.js (renamed from html/dir_7e6a584d3889449e2c432321014d65b5.js)0
-rw-r--r--dir_7f1ddf2750ccac222e58a0a92d422bde.html (renamed from html/dir_7f1ddf2750ccac222e58a0a92d422bde.html)0
-rw-r--r--dir_7f1ddf2750ccac222e58a0a92d422bde.js (renamed from html/dir_7f1ddf2750ccac222e58a0a92d422bde.js)0
-rw-r--r--dir_8022f260cb33bb0f12ace4cf11c510e1.html (renamed from html/dir_8022f260cb33bb0f12ace4cf11c510e1.html)0
-rw-r--r--dir_8022f260cb33bb0f12ace4cf11c510e1.js (renamed from html/dir_8022f260cb33bb0f12ace4cf11c510e1.js)0
-rw-r--r--dir_88345b80b8e003bff9bb55c25fb3b53d.html (renamed from html/dir_88345b80b8e003bff9bb55c25fb3b53d.html)0
-rw-r--r--dir_88345b80b8e003bff9bb55c25fb3b53d.js (renamed from html/dir_88345b80b8e003bff9bb55c25fb3b53d.js)0
-rw-r--r--dir_8b19c315ddc03d8f73d70316e3e36453.html (renamed from html/dir_8b19c315ddc03d8f73d70316e3e36453.html)0
-rw-r--r--dir_8b19c315ddc03d8f73d70316e3e36453.js (renamed from html/dir_8b19c315ddc03d8f73d70316e3e36453.js)0
-rw-r--r--dir_93f15550356fa5bd8f2f7273a263c39b.html (renamed from html/dir_93f15550356fa5bd8f2f7273a263c39b.html)0
-rw-r--r--dir_9942baf907e5932713ea498262916d97.html (renamed from html/dir_9942baf907e5932713ea498262916d97.html)0
-rw-r--r--dir_9942baf907e5932713ea498262916d97.js (renamed from html/dir_9942baf907e5932713ea498262916d97.js)0
-rw-r--r--dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.html (renamed from html/dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.html)0
-rw-r--r--dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.js (renamed from html/dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.js)0
-rw-r--r--dir_9c614f9f6d85e2ed081007371a4f5142.html (renamed from html/dir_9c614f9f6d85e2ed081007371a4f5142.html)0
-rw-r--r--dir_9c614f9f6d85e2ed081007371a4f5142.js (renamed from html/dir_9c614f9f6d85e2ed081007371a4f5142.js)0
-rw-r--r--dir_a9bb7d2344b3b943be7eb3c132605920.html (renamed from html/dir_a9bb7d2344b3b943be7eb3c132605920.html)0
-rw-r--r--dir_aa876c2d98401154a8be1dc7241a159c.html (renamed from html/dir_aa876c2d98401154a8be1dc7241a159c.html)0
-rw-r--r--dir_b2f903c5aadb40b2b3c6f038c9268aec.html (renamed from html/dir_b2f903c5aadb40b2b3c6f038c9268aec.html)0
-rw-r--r--dir_b2f903c5aadb40b2b3c6f038c9268aec.js (renamed from html/dir_b2f903c5aadb40b2b3c6f038c9268aec.js)0
-rw-r--r--dir_b4c3aec6cd8f28418150dce663061cfa.html (renamed from html/dir_b4c3aec6cd8f28418150dce663061cfa.html)0
-rw-r--r--dir_b565d4fcb41986a6b26d7475fb3f69ab.html (renamed from html/dir_b565d4fcb41986a6b26d7475fb3f69ab.html)0
-rw-r--r--dir_b565d4fcb41986a6b26d7475fb3f69ab.js (renamed from html/dir_b565d4fcb41986a6b26d7475fb3f69ab.js)0
-rw-r--r--dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.html (renamed from html/dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.html)0
-rw-r--r--dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.js (renamed from html/dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.js)0
-rw-r--r--dir_bcb057b4e7079233225e5edb60c47dce.html (renamed from html/dir_bcb057b4e7079233225e5edb60c47dce.html)0
-rw-r--r--dir_be188be5249491678773f9f5c5b518cb.html (renamed from html/dir_be188be5249491678773f9f5c5b518cb.html)0
-rw-r--r--dir_be188be5249491678773f9f5c5b518cb.js (renamed from html/dir_be188be5249491678773f9f5c5b518cb.js)0
-rw-r--r--dir_bedabc82e53656e8b58a25ab8e6f1e6f.html (renamed from html/dir_bedabc82e53656e8b58a25ab8e6f1e6f.html)0
-rw-r--r--dir_bf5346e9592bc1ac9fb591bd6d4d769a.html (renamed from html/dir_bf5346e9592bc1ac9fb591bd6d4d769a.html)0
-rw-r--r--dir_bf5346e9592bc1ac9fb591bd6d4d769a.js (renamed from html/dir_bf5346e9592bc1ac9fb591bd6d4d769a.js)0
-rw-r--r--dir_c0734f77ea3dea2197fe756876cb58bd.html (renamed from html/dir_c0734f77ea3dea2197fe756876cb58bd.html)0
-rw-r--r--dir_c5ba526abc58c6152462f2a45a8efcce.html (renamed from html/dir_c5ba526abc58c6152462f2a45a8efcce.html)0
-rw-r--r--dir_c7b46606d24366b69b1a67bdd3f2153b.html (renamed from html/dir_c7b46606d24366b69b1a67bdd3f2153b.html)0
-rw-r--r--dir_c7b46606d24366b69b1a67bdd3f2153b.js (renamed from html/dir_c7b46606d24366b69b1a67bdd3f2153b.js)0
-rw-r--r--dir_c9489aedb91d793176e12fc4e8412440.html (renamed from html/dir_c9489aedb91d793176e12fc4e8412440.html)0
-rw-r--r--dir_c9489aedb91d793176e12fc4e8412440.js (renamed from html/dir_c9489aedb91d793176e12fc4e8412440.js)0
-rw-r--r--dir_c996c867c7dc0e02ecaa98871169fd28.html (renamed from html/dir_c996c867c7dc0e02ecaa98871169fd28.html)0
-rw-r--r--dir_c9e0e5754b02154938f7bb05ce1e7219.html (renamed from html/dir_c9e0e5754b02154938f7bb05ce1e7219.html)0
-rw-r--r--dir_c9e0e5754b02154938f7bb05ce1e7219.js (renamed from html/dir_c9e0e5754b02154938f7bb05ce1e7219.js)0
-rw-r--r--dir_cc1691744fab67de5266c0809c3d8c5f.html (renamed from html/dir_cc1691744fab67de5266c0809c3d8c5f.html)0
-rw-r--r--dir_d1d19abdcfd2470efb720c8c09874a00.html (renamed from html/dir_d1d19abdcfd2470efb720c8c09874a00.html)0
-rw-r--r--dir_d2f6e0f84cbee556810effe24c559bf7.html (renamed from html/dir_d2f6e0f84cbee556810effe24c559bf7.html)0
-rw-r--r--dir_d3ecff0bc160598fe1ec3daebdd455df.html (renamed from html/dir_d3ecff0bc160598fe1ec3daebdd455df.html)0
-rw-r--r--dir_d625ee6c8934bf228cb17ea645bba64b.html (renamed from html/dir_d625ee6c8934bf228cb17ea645bba64b.html)0
-rw-r--r--dir_d96a2be2088865c6bacdc361b708e41e.html (renamed from html/dir_d96a2be2088865c6bacdc361b708e41e.html)0
-rw-r--r--dir_d96a2be2088865c6bacdc361b708e41e.js (renamed from html/dir_d96a2be2088865c6bacdc361b708e41e.js)0
-rw-r--r--dir_e3a1165f6ad1293c53e9ac0f8bf6074a.html (renamed from html/dir_e3a1165f6ad1293c53e9ac0f8bf6074a.html)0
-rw-r--r--dir_e3f7bffca7669cf35b8652af00d5e0d2.html (renamed from html/dir_e3f7bffca7669cf35b8652af00d5e0d2.html)0
-rw-r--r--dir_e3f7bffca7669cf35b8652af00d5e0d2.js (renamed from html/dir_e3f7bffca7669cf35b8652af00d5e0d2.js)0
-rw-r--r--dir_e6c54268d011365494e6c4da02774db2.html (renamed from html/dir_e6c54268d011365494e6c4da02774db2.html)0
-rw-r--r--dir_e6c54268d011365494e6c4da02774db2.js (renamed from html/dir_e6c54268d011365494e6c4da02774db2.js)0
-rw-r--r--dir_e79632891301b850df87e9c0030293fa.html (renamed from html/dir_e79632891301b850df87e9c0030293fa.html)0
-rw-r--r--dir_e79632891301b850df87e9c0030293fa.js (renamed from html/dir_e79632891301b850df87e9c0030293fa.js)0
-rw-r--r--dir_eb07e5cc9fcc31a8449024aa3db6cd75.html (renamed from html/dir_eb07e5cc9fcc31a8449024aa3db6cd75.html)0
-rw-r--r--dir_f0ee4743bbbe555acf5c57851fade7a6.html (renamed from html/dir_f0ee4743bbbe555acf5c57851fade7a6.html)0
-rw-r--r--dir_fb4e75ee58b189715b1a0f0bb7695a3d.html (renamed from html/dir_fb4e75ee58b189715b1a0f0bb7695a3d.html)0
-rw-r--r--dir_fb4e75ee58b189715b1a0f0bb7695a3d.js (renamed from html/dir_fb4e75ee58b189715b1a0f0bb7695a3d.js)0
-rw-r--r--doxygen.css (renamed from html/doxygen.css)0
-rw-r--r--doxygen.png (renamed from html/doxygen.png)bin3779 -> 3779 bytes
-rw-r--r--draw__info_8h_source.html (renamed from html/draw__info_8h_source.html)0
-rw-r--r--dynsections.js (renamed from html/dynsections.js)0
-rw-r--r--emess_8h_source.html (renamed from html/emess_8h_source.html)0
-rw-r--r--endianess_8h_source.html (renamed from html/endianess_8h_source.html)0
-rw-r--r--errno_8h_source.html (renamed from html/errno_8h_source.html)0
-rw-r--r--errorcode_8h_source.html (renamed from html/errorcode_8h_source.html)0
-rw-r--r--espeak__command_8h_source.html (renamed from html/espeak__command_8h_source.html)0
-rw-r--r--eval-plural_8h_source.html (renamed from html/eval-plural_8h_source.html)0
-rw-r--r--event_8h_source.html (renamed from html/event_8h_source.html)0
-rw-r--r--event__glib_8h_source.html (renamed from html/event__glib_8h_source.html)0
-rw-r--r--event__qt5_8h_source.html (renamed from html/event__qt5_8h_source.html)0
-rw-r--r--event__sdl_8h_source.html (renamed from html/event__sdl_8h_source.html)0
-rw-r--r--ezxml_8h_source.html (renamed from html/ezxml_8h_source.html)0
-rw-r--r--fake_8h_source.html (renamed from html/fake_8h_source.html)0
-rw-r--r--fcntl_8h_source.html (renamed from html/fcntl_8h_source.html)0
-rw-r--r--fib_8h_source.html (renamed from html/fib_8h_source.html)0
-rw-r--r--fibpriv_8h_source.html (renamed from html/fibpriv_8h_source.html)0
-rw-r--r--fifo_8h_source.html (renamed from html/fifo_8h_source.html)0
-rw-r--r--file_8h_source.html (renamed from html/file_8h_source.html)0
-rw-r--r--fileformat_8pb-c_8h_source.html (renamed from html/fileformat_8pb-c_8h_source.html)0
-rw-r--r--files.html (renamed from html/files.html)0
-rw-r--r--files.js (renamed from html/files.js)0
-rw-r--r--font__freetype_8h.html (renamed from html/font__freetype_8h.html)0
-rw-r--r--font__freetype_8h_source.html (renamed from html/font__freetype_8h_source.html)0
-rw-r--r--ftv2blank.png (renamed from html/ftv2blank.png)bin86 -> 86 bytes
-rw-r--r--ftv2cl.png (renamed from html/ftv2cl.png)bin453 -> 453 bytes
-rw-r--r--ftv2doc.png (renamed from html/ftv2doc.png)bin746 -> 746 bytes
-rw-r--r--ftv2folderclosed.png (renamed from html/ftv2folderclosed.png)bin616 -> 616 bytes
-rw-r--r--ftv2folderopen.png (renamed from html/ftv2folderopen.png)bin597 -> 597 bytes
-rw-r--r--ftv2lastnode.png (renamed from html/ftv2lastnode.png)bin86 -> 86 bytes
-rw-r--r--ftv2link.png (renamed from html/ftv2link.png)bin746 -> 746 bytes
-rw-r--r--ftv2mlastnode.png (renamed from html/ftv2mlastnode.png)bin246 -> 246 bytes
-rw-r--r--ftv2mnode.png (renamed from html/ftv2mnode.png)bin246 -> 246 bytes
-rw-r--r--ftv2mo.png (renamed from html/ftv2mo.png)bin403 -> 403 bytes
-rw-r--r--ftv2node.png (renamed from html/ftv2node.png)bin86 -> 86 bytes
-rw-r--r--ftv2ns.png (renamed from html/ftv2ns.png)bin388 -> 388 bytes
-rw-r--r--ftv2plastnode.png (renamed from html/ftv2plastnode.png)bin229 -> 229 bytes
-rw-r--r--ftv2pnode.png (renamed from html/ftv2pnode.png)bin229 -> 229 bytes
-rw-r--r--ftv2splitbar.png (renamed from html/ftv2splitbar.png)bin314 -> 314 bytes
-rw-r--r--ftv2vertline.png (renamed from html/ftv2vertline.png)bin86 -> 86 bytes
-rw-r--r--functions.html (renamed from html/functions.html)0
-rw-r--r--functions_b.html (renamed from html/functions_b.html)0
-rw-r--r--functions_c.html (renamed from html/functions_c.html)0
-rw-r--r--functions_d.html (renamed from html/functions_d.html)0
-rw-r--r--functions_dup.js (renamed from html/functions_dup.js)0
-rw-r--r--functions_e.html (renamed from html/functions_e.html)0
-rw-r--r--functions_f.html (renamed from html/functions_f.html)0
-rw-r--r--functions_func.html (renamed from html/functions_func.html)0
-rw-r--r--functions_g.html (renamed from html/functions_g.html)0
-rw-r--r--functions_h.html (renamed from html/functions_h.html)0
-rw-r--r--functions_i.html (renamed from html/functions_i.html)0
-rw-r--r--functions_k.html (renamed from html/functions_k.html)0
-rw-r--r--functions_l.html (renamed from html/functions_l.html)0
-rw-r--r--functions_m.html (renamed from html/functions_m.html)0
-rw-r--r--functions_n.html (renamed from html/functions_n.html)0
-rw-r--r--functions_o.html (renamed from html/functions_o.html)0
-rw-r--r--functions_p.html (renamed from html/functions_p.html)0
-rw-r--r--functions_prop.html (renamed from html/functions_prop.html)0
-rw-r--r--functions_q.html (renamed from html/functions_q.html)0
-rw-r--r--functions_r.html (renamed from html/functions_r.html)0
-rw-r--r--functions_s.html (renamed from html/functions_s.html)0
-rw-r--r--functions_t.html (renamed from html/functions_t.html)0
-rw-r--r--functions_u.html (renamed from html/functions_u.html)0
-rw-r--r--functions_v.html (renamed from html/functions_v.html)0
-rw-r--r--functions_vars.html (renamed from html/functions_vars.html)0
-rw-r--r--functions_vars.js (renamed from html/functions_vars.js)0
-rw-r--r--functions_vars_b.html (renamed from html/functions_vars_b.html)0
-rw-r--r--functions_vars_c.html (renamed from html/functions_vars_c.html)0
-rw-r--r--functions_vars_d.html (renamed from html/functions_vars_d.html)0
-rw-r--r--functions_vars_e.html (renamed from html/functions_vars_e.html)0
-rw-r--r--functions_vars_f.html (renamed from html/functions_vars_f.html)0
-rw-r--r--functions_vars_g.html (renamed from html/functions_vars_g.html)0
-rw-r--r--functions_vars_h.html (renamed from html/functions_vars_h.html)0
-rw-r--r--functions_vars_i.html (renamed from html/functions_vars_i.html)0
-rw-r--r--functions_vars_k.html (renamed from html/functions_vars_k.html)0
-rw-r--r--functions_vars_l.html (renamed from html/functions_vars_l.html)0
-rw-r--r--functions_vars_m.html (renamed from html/functions_vars_m.html)0
-rw-r--r--functions_vars_n.html (renamed from html/functions_vars_n.html)0
-rw-r--r--functions_vars_o.html (renamed from html/functions_vars_o.html)0
-rw-r--r--functions_vars_p.html (renamed from html/functions_vars_p.html)0
-rw-r--r--functions_vars_r.html (renamed from html/functions_vars_r.html)0
-rw-r--r--functions_vars_s.html (renamed from html/functions_vars_s.html)0
-rw-r--r--functions_vars_t.html (renamed from html/functions_vars_t.html)0
-rw-r--r--functions_vars_u.html (renamed from html/functions_vars_u.html)0
-rw-r--r--functions_vars_v.html (renamed from html/functions_vars_v.html)0
-rw-r--r--functions_vars_w.html (renamed from html/functions_vars_w.html)0
-rw-r--r--functions_vars_x.html (renamed from html/functions_vars_x.html)0
-rw-r--r--functions_vars_y.html (renamed from html/functions_vars_y.html)0
-rw-r--r--functions_vars_z.html (renamed from html/functions_vars_z.html)0
-rw-r--r--functions_w.html (renamed from html/functions_w.html)0
-rw-r--r--functions_x.html (renamed from html/functions_x.html)0
-rw-r--r--functions_y.html (renamed from html/functions_y.html)0
-rw-r--r--functions_z.html (renamed from html/functions_z.html)0
-rw-r--r--galias_8h_source.html (renamed from html/galias_8h_source.html)0
-rw-r--r--galloca_8h_source.html (renamed from html/galloca_8h_source.html)0
-rw-r--r--gar2navit_8h_source.html (renamed from html/gar2navit_8h_source.html)0
-rw-r--r--garmin_8h_source.html (renamed from html/garmin_8h_source.html)0
-rw-r--r--geodesic_8h_source.html (renamed from html/geodesic_8h_source.html)0
-rw-r--r--geom_8h_source.html (renamed from html/geom_8h_source.html)0
-rw-r--r--gerror_8h_source.html (renamed from html/gerror_8h_source.html)0
-rw-r--r--getopt_8h_source.html (renamed from html/getopt_8h_source.html)0
-rw-r--r--getopt__long_8h_source.html (renamed from html/getopt__long_8h_source.html)0
-rw-r--r--gettextP_8h_source.html (renamed from html/gettextP_8h_source.html)0
-rw-r--r--ghash_8h_source.html (renamed from html/ghash_8h_source.html)0
-rw-r--r--glib_8h_source.html (renamed from html/glib_8h_source.html)0
-rw-r--r--glib__slice_8h_source.html (renamed from html/glib__slice_8h_source.html)0
-rw-r--r--glibconfig_8h_source.html (renamed from html/glibconfig_8h_source.html)0
-rw-r--r--glibintl_8h_source.html (renamed from html/glibintl_8h_source.html)0
-rw-r--r--glist_8h_source.html (renamed from html/glist_8h_source.html)0
-rw-r--r--glob_8h_source.html (renamed from html/glob_8h_source.html)0
-rw-r--r--globals.html (renamed from html/globals.html)0
-rw-r--r--globals_a.html (renamed from html/globals_a.html)0
-rw-r--r--globals_d.html (renamed from html/globals_d.html)0
-rw-r--r--globals_defs.html (renamed from html/globals_defs.html)0
-rw-r--r--globals_dup.js (renamed from html/globals_dup.js)0
-rw-r--r--globals_enum.html (renamed from html/globals_enum.html)0
-rw-r--r--globals_eval.html (renamed from html/globals_eval.html)0
-rw-r--r--globals_func.html (renamed from html/globals_func.html)0
-rw-r--r--globals_func.js (renamed from html/globals_func.js)0
-rw-r--r--globals_func_g.html (renamed from html/globals_func_g.html)0
-rw-r--r--globals_func_m.html (renamed from html/globals_func_m.html)0
-rw-r--r--globals_func_n.html (renamed from html/globals_func_n.html)0
-rw-r--r--globals_func_p.html (renamed from html/globals_func_p.html)0
-rw-r--r--globals_func_r.html (renamed from html/globals_func_r.html)0
-rw-r--r--globals_func_s.html (renamed from html/globals_func_s.html)0
-rw-r--r--globals_func_t.html (renamed from html/globals_func_t.html)0
-rw-r--r--globals_func_v.html (renamed from html/globals_func_v.html)0
-rw-r--r--globals_g.html (renamed from html/globals_g.html)0
-rw-r--r--globals_m.html (renamed from html/globals_m.html)0
-rw-r--r--globals_n.html (renamed from html/globals_n.html)0
-rw-r--r--globals_p.html (renamed from html/globals_p.html)0
-rw-r--r--globals_r.html (renamed from html/globals_r.html)0
-rw-r--r--globals_s.html (renamed from html/globals_s.html)0
-rw-r--r--globals_t.html (renamed from html/globals_t.html)0
-rw-r--r--globals_type.html (renamed from html/globals_type.html)0
-rw-r--r--globals_v.html (renamed from html/globals_v.html)0
-rw-r--r--globals_vars.html (renamed from html/globals_vars.html)0
-rw-r--r--gmacros_8h_source.html (renamed from html/gmacros_8h_source.html)0
-rw-r--r--gmem_8h_source.html (renamed from html/gmem_8h_source.html)0
-rw-r--r--gmessages_8h_source.html (renamed from html/gmessages_8h_source.html)0
-rw-r--r--gmo_8h_source.html (renamed from html/gmo_8h_source.html)0
-rw-r--r--gprintf_8h_source.html (renamed from html/gprintf_8h_source.html)0
-rw-r--r--gprintfint_8h_source.html (renamed from html/gprintfint_8h_source.html)0
-rw-r--r--gpx2navit__txt_8h_source.html (renamed from html/gpx2navit__txt_8h_source.html)0
-rw-r--r--gquark_8h_source.html (renamed from html/gquark_8h_source.html)0
-rw-r--r--graphics_2win32_2resources_2resource_8h_source.html (renamed from html/graphics_2win32_2resources_2resource_8h_source.html)0
-rw-r--r--graphics_8h.html (renamed from html/graphics_8h.html)0
-rw-r--r--graphics_8h.js (renamed from html/graphics_8h.js)0
-rw-r--r--graphics_8h_source.html (renamed from html/graphics_8h_source.html)0
-rw-r--r--graphics__opengl_8h_source.html (renamed from html/graphics__opengl_8h_source.html)0
-rw-r--r--graphics__qt5_8h_source.html (renamed from html/graphics__qt5_8h_source.html)0
-rw-r--r--graphics__qt__qpainter_8h_source.html (renamed from html/graphics__qt__qpainter_8h_source.html)0
-rw-r--r--graphics__sdl_8h_source.html (renamed from html/graphics__sdl_8h_source.html)0
-rw-r--r--graphics__win32_8h_source.html (renamed from html/graphics__win32_8h_source.html)0
-rw-r--r--group__coord.html (renamed from html/group__coord.html)0
-rw-r--r--group__coord.js (renamed from html/group__coord.js)0
-rw-r--r--group__navit.html (renamed from html/group__navit.html)0
-rw-r--r--group__navit.js (renamed from html/group__navit.js)0
-rw-r--r--gslice_8h_source.html (renamed from html/gslice_8h_source.html)0
-rw-r--r--gslist_8h_source.html (renamed from html/gslist_8h_source.html)0
-rw-r--r--gstrfuncs_8h_source.html (renamed from html/gstrfuncs_8h_source.html)0
-rw-r--r--gthreadprivate_8h_source.html (renamed from html/gthreadprivate_8h_source.html)0
-rw-r--r--gtkext_8h_source.html (renamed from html/gtkext_8h_source.html)0
-rw-r--r--gtypes_8h_source.html (renamed from html/gtypes_8h_source.html)0
-rw-r--r--guiProxy_8h_source.html (renamed from html/guiProxy_8h_source.html)0
-rw-r--r--gui_2win32_2resources_2resource_8h_source.html (renamed from html/gui_2win32_2resources_2resource_8h_source.html)0
-rw-r--r--gui_8h_source.html (renamed from html/gui_8h_source.html)0
-rw-r--r--gui__gtk_8h_source.html (renamed from html/gui__gtk_8h_source.html)0
-rw-r--r--gui__gtk__poi_8h_source.html (renamed from html/gui__gtk__poi_8h_source.html)0
-rw-r--r--gui__internal_8h_source.html (renamed from html/gui__internal_8h_source.html)0
-rw-r--r--gui__internal__bookmark_8h_source.html (renamed from html/gui__internal__bookmark_8h_source.html)0
-rw-r--r--gui__internal__command_8h_source.html (renamed from html/gui__internal__command_8h_source.html)0
-rw-r--r--gui__internal__gesture_8h_source.html (renamed from html/gui__internal__gesture_8h_source.html)0
-rw-r--r--gui__internal__html_8h_source.html (renamed from html/gui__internal__html_8h_source.html)0
-rw-r--r--gui__internal__keyboard_8h_source.html (renamed from html/gui__internal__keyboard_8h_source.html)0
-rw-r--r--gui__internal__menu_8h_source.html (renamed from html/gui__internal__menu_8h_source.html)0
-rw-r--r--gui__internal__poi_8h_source.html (renamed from html/gui__internal__poi_8h_source.html)0
-rw-r--r--gui__internal__priv_8h_source.html (renamed from html/gui__internal__priv_8h_source.html)0
-rw-r--r--gui__internal__search_8h_source.html (renamed from html/gui__internal__search_8h_source.html)0
-rw-r--r--gui__internal__widget_8h_source.html (renamed from html/gui__internal__widget_8h_source.html)0
-rw-r--r--gunicode_8h_source.html (renamed from html/gunicode_8h_source.html)0
-rw-r--r--gutils_8h_source.html (renamed from html/gutils_8h_source.html)0
-rw-r--r--hash-string_8h_source.html (renamed from html/hash-string_8h_source.html)0
-rw-r--r--hierarchy.html (renamed from html/hierarchy.html)0
-rw-r--r--hierarchy.js (renamed from html/hierarchy.js)0
-rw-r--r--index.html (renamed from html/index.html)0
-rw-r--r--inffast_8h_source.html (renamed from html/inffast_8h_source.html)0
-rw-r--r--inffixed_8h_source.html (renamed from html/inffixed_8h_source.html)0
-rw-r--r--inflate_8h_source.html (renamed from html/inflate_8h_source.html)0
-rw-r--r--inftrees_8h_source.html (renamed from html/inftrees_8h_source.html)0
-rw-r--r--interfaceDownloaderAppDelegate.html (renamed from html/interfaceDownloaderAppDelegate.html)0
-rw-r--r--interfaceDownloaderAppDelegate.js (renamed from html/interfaceDownloaderAppDelegate.js)0
-rw-r--r--interfaceDownloaderAppDelegate.png (renamed from html/interfaceDownloaderAppDelegate.png)bin963 -> 963 bytes
-rw-r--r--interfaceDownloaderDetailViewController.html (renamed from html/interfaceDownloaderDetailViewController.html)0
-rw-r--r--interfaceDownloaderDetailViewController.js (renamed from html/interfaceDownloaderDetailViewController.js)0
-rw-r--r--interfaceDownloaderDetailViewController.png (renamed from html/interfaceDownloaderDetailViewController.png)bin687 -> 687 bytes
-rw-r--r--interfaceNavitAppDelegate.html (renamed from html/interfaceNavitAppDelegate.html)0
-rw-r--r--interfaceNavitAppDelegate.js (renamed from html/interfaceNavitAppDelegate.js)0
-rw-r--r--interfaceNavitAppDelegate.png (renamed from html/interfaceNavitAppDelegate.png)bin941 -> 941 bytes
-rw-r--r--interfaceNavitTimer.html (renamed from html/interfaceNavitTimer.html)0
-rw-r--r--interfaceNavitTimer.js (renamed from html/interfaceNavitTimer.js)0
-rw-r--r--interfaceNavitTimer.png (renamed from html/interfaceNavitTimer.png)bin440 -> 440 bytes
-rw-r--r--interfaceNavitView.html (renamed from html/interfaceNavitView.html)0
-rw-r--r--interfaceNavitView.js (renamed from html/interfaceNavitView.js)0
-rw-r--r--interfaceNavitView.png (renamed from html/interfaceNavitView.png)bin387 -> 387 bytes
-rw-r--r--interfaceNavitViewController.html (renamed from html/interfaceNavitViewController.html)0
-rw-r--r--interfaceNavitViewController.js (renamed from html/interfaceNavitViewController.js)0
-rw-r--r--interfaceNavitViewController.png (renamed from html/interfaceNavitViewController.png)bin544 -> 544 bytes
-rw-r--r--interfaceRootViewController.html (renamed from html/interfaceRootViewController.html)0
-rw-r--r--interfaceRootViewController.js (renamed from html/interfaceRootViewController.js)0
-rw-r--r--interfaceRootViewController.png (renamed from html/interfaceRootViewController.png)bin601 -> 601 bytes
-rw-r--r--interfaceVSSpeechSynthesizer.html (renamed from html/interfaceVSSpeechSynthesizer.html)0
-rw-r--r--interfaceVSSpeechSynthesizer.js (renamed from html/interfaceVSSpeechSynthesizer.js)0
-rw-r--r--interfaceVSSpeechSynthesizer.png (renamed from html/interfaceVSSpeechSynthesizer.png)bin597 -> 597 bytes
-rw-r--r--interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.html (renamed from html/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.html)0
-rw-r--r--interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.js (renamed from html/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.js)0
-rw-r--r--interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.png (renamed from html/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.png)bin901 -> 901 bytes
-rw-r--r--io_8h_source.html (renamed from html/io_8h_source.html)0
-rw-r--r--item_8h_source.html (renamed from html/item_8h_source.html)0
-rw-r--r--item__def_8h_source.html (renamed from html/item__def_8h_source.html)0
-rw-r--r--jquery.js (renamed from html/jquery.js)0
-rw-r--r--keys_8h_source.html (renamed from html/keys_8h_source.html)0
-rw-r--r--klatt_8h_source.html (renamed from html/klatt_8h_source.html)0
-rw-r--r--layer_8h_source.html (renamed from html/layer_8h_source.html)0
-rw-r--r--layout_8h_source.html (renamed from html/layout_8h_source.html)0
-rw-r--r--libc_8h_source.html (renamed from html/libc_8h_source.html)0
-rw-r--r--libgnuintl_8h_source.html (renamed from html/libgnuintl_8h_source.html)0
-rw-r--r--linguistics_8h_source.html (renamed from html/linguistics_8h_source.html)0
-rw-r--r--loadinfo_8h_source.html (renamed from html/loadinfo_8h_source.html)0
-rw-r--r--localcharset_8h_source.html (renamed from html/localcharset_8h_source.html)0
-rw-r--r--locale_8h_source.html (renamed from html/locale_8h_source.html)0
-rw-r--r--log_8h_source.html (renamed from html/log_8h_source.html)0
-rw-r--r--main_8h_source.html (renamed from html/main_8h_source.html)0
-rw-r--r--man/CMakeLists.txt5
-rw-r--r--man/maptool.199
-rw-r--r--man/navit.154
-rw-r--r--map-share_8h_source.html (renamed from html/map-share_8h_source.html)0
-rw-r--r--map_8c.html (renamed from html/map_8c.html)0
-rw-r--r--map_8c.js (renamed from html/map_8c.js)0
-rw-r--r--map_8h.html (renamed from html/map_8h.html)0
-rw-r--r--map_8h.js (renamed from html/map_8h.js)0
-rw-r--r--map_8h_source.html (renamed from html/map_8h_source.html)0
-rw-r--r--map__data_8h_source.html (renamed from html/map__data_8h_source.html)0
-rw-r--r--mapset_8c.html (renamed from html/mapset_8c.html)0
-rw-r--r--mapset_8c.js (renamed from html/mapset_8c.js)0
-rw-r--r--mapset_8h_source.html (renamed from html/mapset_8h_source.html)0
-rw-r--r--maptool_8h_source.html (renamed from html/maptool_8h_source.html)0
-rw-r--r--maptype_8h_source.html (renamed from html/maptype_8h_source.html)0
-rw-r--r--math_8h_source.html (renamed from html/math_8h_source.html)0
-rw-r--r--mbrolib_8h_source.html (renamed from html/mbrolib_8h_source.html)0
-rw-r--r--menu_8h_source.html (renamed from html/menu_8h_source.html)0
-rw-r--r--messages_8h_source.html (renamed from html/messages_8h_source.html)0
-rw-r--r--mg_8h_source.html (renamed from html/mg_8h_source.html)0
-rw-r--r--mman_8h_source.html (renamed from html/mman_8h_source.html)0
-rw-r--r--modules.html (renamed from html/modules.html)0
-rw-r--r--modules.js (renamed from html/modules.js)0
-rw-r--r--namespaceorg_1_1navitproject_1_1navit.html (renamed from html/namespaceorg_1_1navitproject_1_1navit.html)0
-rw-r--r--namespaceorg_1_1navitproject_1_1navit.js (renamed from html/namespaceorg_1_1navitproject_1_1navit.js)0
-rw-r--r--namespaces.html (renamed from html/namespaces.html)0
-rw-r--r--namespaces.js (renamed from html/namespaces.js)0
-rw-r--r--nav_f.png (renamed from html/nav_f.png)bin153 -> 153 bytes
-rw-r--r--nav_g.png (renamed from html/nav_g.png)bin95 -> 95 bytes
-rw-r--r--nav_h.png (renamed from html/nav_h.png)bin98 -> 98 bytes
-rw-r--r--navigation_8c.html (renamed from html/navigation_8c.html)0
-rw-r--r--navigation_8c.js (renamed from html/navigation_8c.js)0
-rw-r--r--navigation_8h_source.html (renamed from html/navigation_8h_source.html)0
-rw-r--r--navit/CMakeLists.txt198
-rw-r--r--navit/Doxyfile2384
-rw-r--r--navit/Info.plist40
-rw-r--r--navit/android.c776
-rw-r--r--navit/android.h13
-rw-r--r--navit/android/AndroidManifest.xml.cmake51
-rw-r--r--navit/android/CMakeLists.txt86
-rw-r--r--navit/android/android_layout_default_new.xml855
-rw-r--r--navit/android/build.properties2
-rwxr-xr-xnavit/android/change_xslt.sh58
-rw-r--r--navit/android/libs/TTS_library_stub.jarbin31633 -> 0 bytes
-rw-r--r--navit/android/libs/acra-4.8.5.jarbin154375 -> 0 bytes
-rw-r--r--navit/android/libs/android-support-v4.jarbin1364299 -> 0 bytes
-rw-r--r--navit/android/po2xml.xslt40
-rw-r--r--navit/android/res/drawable-hdpi/ic_notify.pngbin634 -> 0 bytes
-rw-r--r--navit/android/res/drawable-hdpi/icon.pngbin5949 -> 0 bytes
-rw-r--r--navit/android/res/drawable-ldpi/dir_up.pngbin455 -> 0 bytes
-rw-r--r--navit/android/res/drawable-ldpi/file_icon.pngbin160 -> 0 bytes
-rw-r--r--navit/android/res/drawable-ldpi/folder_icon.pngbin113 -> 0 bytes
-rw-r--r--navit/android/res/drawable-ldpi/folder_icon_light.pngbin226 -> 0 bytes
-rw-r--r--navit/android/res/drawable-ldpi/ic_launcher.pngbin2729 -> 0 bytes
-rw-r--r--navit/android/res/drawable-ldpi/ic_notify.pngbin370 -> 0 bytes
-rw-r--r--navit/android/res/drawable-ldpi/icon.pngbin2208 -> 0 bytes
-rw-r--r--navit/android/res/drawable-mdpi/ic_notify.pngbin462 -> 0 bytes
-rw-r--r--navit/android/res/drawable-mdpi/icon.pngbin3353 -> 0 bytes
-rw-r--r--navit/android/res/drawable-xhdpi/ic_notify.pngbin832 -> 0 bytes
-rw-r--r--navit/android/res/drawable-xhdpi/icon.pngbin8858 -> 0 bytes
-rw-r--r--navit/android/res/drawable-xxhdpi/ic_notify.pngbin1216 -> 0 bytes
-rw-r--r--navit/android/res/drawable-xxhdpi/icon.pngbin15235 -> 0 bytes
-rw-r--r--navit/android/res/layout/ua_com_vassiliev_filebrowser_layout.xml84
-rw-r--r--navit/android/res/values-v19/styles.xml31
-rw-r--r--navit/android/res/values-v21/styles.xml46
-rw-r--r--navit/android/res/values/strings-dont-translate.xml22
-rw-r--r--navit/android/res/values/strings.xml84
-rw-r--r--navit/android/res/values/styles.xml42
-rw-r--r--navit/android/src/org/navitproject/navit/FileBrowserActivity.java432
-rw-r--r--navit/android/src/org/navitproject/navit/Navit.java933
-rw-r--r--navit/android/src/org/navitproject/navit/NavitActivityResult.java6
-rw-r--r--navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java385
-rwxr-xr-xnavit/android/src/org/navitproject/navit/NavitAppConfig.java90
-rw-r--r--navit/android/src/org/navitproject/navit/NavitBackupTask.java126
-rw-r--r--navit/android/src/org/navitproject/navit/NavitCamera.java82
-rw-r--r--navit/android/src/org/navitproject/navit/NavitDialogs.java218
-rw-r--r--navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java245
-rw-r--r--navit/android/src/org/navitproject/navit/NavitGraphics.java1210
-rw-r--r--navit/android/src/org/navitproject/navit/NavitMap.java40
-rw-r--r--navit/android/src/org/navitproject/navit/NavitMapDownloader.java711
-rw-r--r--navit/android/src/org/navitproject/navit/NavitRestoreTask.java144
-rw-r--r--navit/android/src/org/navitproject/navit/NavitSensors.java52
-rw-r--r--navit/android/src/org/navitproject/navit/NavitSpeech.java53
-rw-r--r--navit/android/src/org/navitproject/navit/NavitSpeech2.java90
-rw-r--r--navit/android/src/org/navitproject/navit/NavitTextTranslations.java204
-rw-r--r--navit/android/src/org/navitproject/navit/NavitTimeout.java58
-rw-r--r--navit/android/src/org/navitproject/navit/NavitVehicle.java185
-rw-r--r--navit/android/src/org/navitproject/navit/NavitWatch.java102
-rw-r--r--navit/announcement.c68
-rw-r--r--navit/announcement.h24
-rw-r--r--navit/atom.c31
-rw-r--r--navit/atom.h9
-rw-r--r--navit/attr.c1030
-rw-r--r--navit/attr.h251
-rw-r--r--navit/attr_def.h508
-rw-r--r--navit/autoload/osso/CMakeLists.txt2
-rw-r--r--navit/autoload/osso/osso.c100
-rw-r--r--navit/binding/dbus/CMakeLists.txt10
-rw-r--r--navit/binding/dbus/binding_dbus.c2239
-rwxr-xr-xnavit/binding/dbus/eval.py12
-rw-r--r--navit/binding/dbus/navit.introspect34
-rw-r--r--navit/binding/dbus/org.navit_project.navit.service.in3
-rwxr-xr-xnavit/binding/dbus/test.py11
-rw-r--r--navit/binding/python/CMakeLists.txt2
-rw-r--r--navit/binding/python/attr.c99
-rw-r--r--navit/binding/python/binding_python.c370
-rw-r--r--navit/binding/python/common.h55
-rw-r--r--navit/binding/python/config.c73
-rw-r--r--navit/binding/python/navigation.c82
-rw-r--r--navit/binding/python/navit.c146
-rw-r--r--navit/binding/python/navit.xml.python7
-rw-r--r--navit/binding/python/pcoord.c88
-rw-r--r--navit/binding/python/route.c84
-rw-r--r--navit/binding/python/startup.py8
-rw-r--r--navit/binding/python/template.c96
-rw-r--r--navit/binding/win32/CMakeLists.txt9
-rw-r--r--navit/binding/win32/binding_win32.c145
-rw-r--r--navit/binding/win32/binding_win32.h37
-rw-r--r--navit/binding/win32/tell_navit.c179
-rw-r--r--navit/bookmarks.c821
-rw-r--r--navit/bookmarks.h64
-rw-r--r--navit/browserplugin.c552
-rw-r--r--navit/builtin.c.in5
-rw-r--r--navit/cache.c401
-rw-r--r--navit/cache.h14
-rw-r--r--navit/callback.c278
-rw-r--r--navit/callback.h89
-rw-r--r--navit/color.h42
-rw-r--r--navit/command.c1892
-rw-r--r--navit/command.h63
-rw-r--r--navit/config_.c184
-rw-r--r--navit/config_.h26
-rw-r--r--navit/coord.c401
-rw-r--r--navit/coord.h164
-rw-r--r--navit/country.c438
-rw-r--r--navit/country.h41
-rw-r--r--navit/data.h108
-rw-r--r--navit/data_window.c41
-rw-r--r--navit/data_window.h44
-rw-r--r--navit/data_window_int.h31
-rw-r--r--navit/debug.c525
-rw-r--r--navit/debug.h116
-rw-r--r--navit/destination.h29
-rw-r--r--navit/draw_info.h30
-rw-r--r--navit/endianess.h113
-rw-r--r--navit/event.c153
-rw-r--r--navit/event.h72
-rw-r--r--navit/event_glib.c200
-rw-r--r--navit/event_glib.h3
-rw-r--r--navit/fib-1.1/CMakeLists.txt2
-rw-r--r--navit/fib-1.1/README26
-rwxr-xr-xnavit/fib-1.1/configure1045
-rw-r--r--navit/fib-1.1/configure.in17
-rw-r--r--navit/fib-1.1/fh_extractmin.397
-rw-r--r--navit/fib-1.1/fh_makeheap.317
-rw-r--r--navit/fib-1.1/fh_makekeyheap.384
-rw-r--r--navit/fib-1.1/fib.c699
-rw-r--r--navit/fib-1.1/fib.h64
-rw-r--r--navit/fib-1.1/fibpriv.h98
-rw-r--r--navit/fib-1.1/fibtest.c108
-rw-r--r--navit/fib-1.1/fibtest.out37
-rw-r--r--navit/fib-1.1/fibtest2.c96
-rw-r--r--navit/fib-1.1/fibtest2.out37
-rw-r--r--navit/fib-1.1/tt.c91
-rw-r--r--navit/fib-1.1/tt.out29
-rw-r--r--navit/fib-1.1/use.c153
-rw-r--r--navit/file.c925
-rw-r--r--navit/file.h107
-rw-r--r--navit/font/freetype/CMakeLists.txt15
-rw-r--r--navit/font/freetype/font_freetype.c665
-rw-r--r--navit/font/freetype/font_freetype.h108
-rw-r--r--navit/fonts/CMakeLists.txt13
-rw-r--r--navit/fonts/LiberationMono-Bold.ttfbin104980 -> 0 bytes
-rw-r--r--navit/fonts/LiberationMono-BoldItalic.ttfbin117192 -> 0 bytes
-rw-r--r--navit/fonts/LiberationMono-Italic.ttfbin123228 -> 0 bytes
-rw-r--r--navit/fonts/LiberationMono-Regular.ttfbin107920 -> 0 bytes
-rw-r--r--navit/fonts/LiberationSans-Bold.ttfbin133000 -> 0 bytes
-rw-r--r--navit/fonts/LiberationSans-BoldItalic.ttfbin128828 -> 0 bytes
-rw-r--r--navit/fonts/LiberationSans-Italic.ttfbin155304 -> 0 bytes
-rw-r--r--navit/fonts/LiberationSans-Regular.ttfbin133088 -> 0 bytes
-rw-r--r--navit/fonts/LiberationSerif-Bold.ttfbin141132 -> 0 bytes
-rw-r--r--navit/fonts/LiberationSerif-BoldItalic.ttfbin144184 -> 0 bytes
-rw-r--r--navit/fonts/LiberationSerif-Italic.ttfbin138328 -> 0 bytes
-rw-r--r--navit/fonts/LiberationSerif-Regular.ttfbin146036 -> 0 bytes
-rw-r--r--navit/fonts/License.txt19
-rw-r--r--navit/fonts/README68
-rw-r--r--navit/geom.c515
-rw-r--r--navit/geom.h75
-rw-r--r--navit/glib_slice.h7
-rw-r--r--navit/graphics.c3048
-rw-r--r--navit/graphics.h292
-rw-r--r--navit/graphics/CMakeLists.txt11
-rw-r--r--navit/graphics/android/CMakeLists.txt1
-rw-r--r--navit/graphics/android/graphics_android.c1203
-rw-r--r--navit/graphics/cocoa/CMakeLists.txt6
-rw-r--r--navit/graphics/cocoa/graphics_cocoa.m805
-rw-r--r--navit/graphics/egl/CMakeLists.txt2
-rw-r--r--navit/graphics/egl/graphics_egl.c1458
-rw-r--r--navit/graphics/gd/CMakeLists.txt3
-rw-r--r--navit/graphics/gd/graphics_gd.c885
-rw-r--r--navit/graphics/gtk_drawing_area/CMakeLists.txt3
-rw-r--r--navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c1154
-rw-r--r--navit/graphics/null/CMakeLists.txt1
-rw-r--r--navit/graphics/null/graphics_null.c359
-rw-r--r--navit/graphics/opengl/CMakeLists.txt6
-rw-r--r--navit/graphics/opengl/graphics_opengl.c1822
-rw-r--r--navit/graphics/opengl/graphics_opengl.h18
-rw-r--r--navit/graphics/opengl/graphics_opengl_egl.c97
-rw-r--r--navit/graphics/opengl/graphics_opengl_x11.c153
-rw-r--r--navit/graphics/qt5/CMakeLists.txt37
-rw-r--r--navit/graphics/qt5/QNavitQuick.cpp259
-rw-r--r--navit/graphics/qt5/QNavitQuick.h52
-rw-r--r--navit/graphics/qt5/QNavitWidget.cpp247
-rw-r--r--navit/graphics/qt5/QNavitWidget.h52
-rw-r--r--navit/graphics/qt5/event_qt5.cpp188
-rw-r--r--navit/graphics/qt5/event_qt5.h36
-rw-r--r--navit/graphics/qt5/graphics_qt5.cpp1107
-rw-r--r--navit/graphics/qt5/graphics_qt5.h121
-rw-r--r--navit/graphics/qt5/graphics_qt5.qml12
-rw-r--r--navit/graphics/qt5/graphics_qt5.qrc6
-rw-r--r--navit/graphics/qt5/loader.qml44
-rw-r--r--navit/graphics/qt_qpainter/CMakeLists.txt4
-rw-r--r--navit/graphics/qt_qpainter/RenderArea.cpp307
-rw-r--r--navit/graphics/qt_qpainter/RenderArea.h69
-rw-r--r--navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp933
-rw-r--r--navit/graphics/qt_qpainter/graphics_qt_qpainter.h139
-rw-r--r--navit/graphics/sdl/CMakeLists.txt2
-rw-r--r--navit/graphics/sdl/event.c381
-rw-r--r--navit/graphics/sdl/event_sdl.c343
-rw-r--r--navit/graphics/sdl/event_sdl.h44
-rw-r--r--navit/graphics/sdl/graphics_sdl.c1860
-rw-r--r--navit/graphics/sdl/graphics_sdl.h13
-rw-r--r--navit/graphics/sdl/raster.c2007
-rw-r--r--navit/graphics/sdl/raster.h25
-rw-r--r--navit/graphics/win32/CMakeLists.txt1
-rw-r--r--navit/graphics/win32/graphics_win32.c1850
-rw-r--r--navit/graphics/win32/graphics_win32.h68
-rw-r--r--navit/graphics/win32/resources/resource.h4
-rw-r--r--navit/graphics/win32/xpm2bmp.c597
-rw-r--r--navit/graphics/win32/xpm2bmp.h44
-rw-r--r--navit/gtkext.h25
-rw-r--r--navit/gui.c189
-rw-r--r--navit/gui.h77
-rw-r--r--navit/gui/gtk/CMakeLists.txt2
-rw-r--r--navit/gui/gtk/datawindow.c214
-rw-r--r--navit/gui/gtk/destination.c582
-rw-r--r--navit/gui/gtk/gui_gtk.h62
-rw-r--r--navit/gui/gtk/gui_gtk_action.c640
-rw-r--r--navit/gui/gtk/gui_gtk_poi.c362
-rw-r--r--navit/gui/gtk/gui_gtk_poi.h28
-rw-r--r--navit/gui/gtk/gui_gtk_statusbar.c178
-rw-r--r--navit/gui/gtk/gui_gtk_window.c812
-rw-r--r--navit/gui/internal/CMakeLists.txt1
-rw-r--r--navit/gui/internal/gui_internal.c3471
-rw-r--r--navit/gui/internal/gui_internal.h85
-rw-r--r--navit/gui/internal/gui_internal_bookmark.c313
-rw-r--r--navit/gui/internal/gui_internal_bookmark.h13
-rw-r--r--navit/gui/internal/gui_internal_command.c1352
-rw-r--r--navit/gui/internal/gui_internal_command.h8
-rw-r--r--navit/gui/internal/gui_internal_gesture.c145
-rw-r--r--navit/gui/internal/gui_internal_gesture.h8
-rw-r--r--navit/gui/internal/gui_internal_html.c504
-rw-r--r--navit/gui/internal/gui_internal_html.h5
-rw-r--r--navit/gui/internal/gui_internal_keyboard.c560
-rw-r--r--navit/gui/internal/gui_internal_keyboard.h31
-rw-r--r--navit/gui/internal/gui_internal_menu.c373
-rw-r--r--navit/gui/internal/gui_internal_menu.h12
-rw-r--r--navit/gui/internal/gui_internal_poi.c792
-rw-r--r--navit/gui/internal/gui_internal_poi.h57
-rw-r--r--navit/gui/internal/gui_internal_priv.h228
-rw-r--r--navit/gui/internal/gui_internal_search.c635
-rw-r--r--navit/gui/internal/gui_internal_search.h10
-rw-r--r--navit/gui/internal/gui_internal_widget.c1497
-rw-r--r--navit/gui/internal/gui_internal_widget.h193
-rw-r--r--navit/gui/qml/CMakeLists.txt23
-rw-r--r--navit/gui/qml/bookmarksProxy.h171
-rw-r--r--navit/gui/qml/guiProxy.h152
-rw-r--r--navit/gui/qml/gui_qml.cpp477
-rw-r--r--navit/gui/qml/navitProxy.h150
-rw-r--r--navit/gui/qml/ngqpoint.h382
-rw-r--r--navit/gui/qml/proxy.h109
-rw-r--r--navit/gui/qml/routeProxy.h72
-rw-r--r--navit/gui/qml/searchProxy.h229
-rw-r--r--navit/gui/qml/skins/navit/ButtonIcon.qml40
-rw-r--r--navit/gui/qml/skins/navit/Cellar.qml38
-rw-r--r--navit/gui/qml/skins/navit/CommonHighlight.qml9
-rw-r--r--navit/gui/qml/skins/navit/ListSelector.qml49
-rw-r--r--navit/gui/qml/skins/navit/PageAbout.qml28
-rw-r--r--navit/gui/qml/skins/navit/PageBookmarks.qml144
-rw-r--r--navit/gui/qml/skins/navit/PageBookmarksAdd.qml70
-rw-r--r--navit/gui/qml/skins/navit/PageMain.qml29
-rw-r--r--navit/gui/qml/skins/navit/PageNavigate.qml88
-rw-r--r--navit/gui/qml/skins/navit/PagePoi.qml150
-rw-r--r--navit/gui/qml/skins/navit/PagePointInfo.qml79
-rw-r--r--navit/gui/qml/skins/navit/PageRoute.qml94
-rw-r--r--navit/gui/qml/skins/navit/PageSearch.qml92
-rw-r--r--navit/gui/qml/skins/navit/PageSearchSelector.qml108
-rw-r--r--navit/gui/qml/skins/navit/PageSettings.qml54
-rw-r--r--navit/gui/qml/skins/navit/PageSettingsDisplay.qml91
-rw-r--r--navit/gui/qml/skins/navit/PageSettingsLocale.qml33
-rw-r--r--navit/gui/qml/skins/navit/PageSettingsRules.qml38
-rw-r--r--navit/gui/qml/skins/navit/PageSettingsTools.qml32
-rw-r--r--navit/gui/qml/skins/navit/PageSettingsVehicle.qml61
-rw-r--r--navit/gui/qml/skins/navit/Slider.qml74
-rw-r--r--navit/gui/qml/skins/navit/ToggleButton.qml66
-rw-r--r--navit/gui/qml/skins/navit/ToggleSwitch.qml72
-rw-r--r--navit/gui/qml/skins/navit/background.svg23
-rw-r--r--navit/gui/qml/skins/navit/command.js20
-rw-r--r--navit/gui/qml/skins/navit/knob.svg867
-rw-r--r--navit/gui/qml/skins/navit/main.qml31
-rw-r--r--navit/gui/qml/skins/navit/pagenavigation.js15
-rw-r--r--navit/gui/qml/vehicleProxy.h24
-rw-r--r--navit/gui/qt5_qml/CMakeLists.txt9
-rw-r--r--navit/gui/qt5_qml/backend.cpp603
-rw-r--r--navit/gui/qt5_qml/backend.h115
-rw-r--r--navit/gui/qt5_qml/editor/.gitignore73
-rw-r--r--navit/gui/qt5_qml/editor/editor.pro29
-rw-r--r--navit/gui/qt5_qml/editor/gui_qt5_qml.qml59
-rw-r--r--navit/gui/qt5_qml/editor/main.cpp13
-rw-r--r--navit/gui/qt5_qml/editor/main.qml59
-rw-r--r--navit/gui/qt5_qml/editor/map.pngbin604456 -> 0 bytes
-rw-r--r--navit/gui/qt5_qml/editor/qml.qrc42
l---------navit/gui/qt5_qml/editor/skins1
-rw-r--r--navit/gui/qt5_qml/gui_qt5_qml.cpp322
-rw-r--r--navit/gui/qt5_qml/gui_qt5_qml.qrc42
-rw-r--r--navit/gui/qt5_qml/map.pngbin604456 -> 0 bytes
-rw-r--r--navit/gui/qt5_qml/proxy.c70
-rw-r--r--navit/gui/qt5_qml/proxy.h1
-rw-r--r--navit/gui/qt5_qml/qml_bookmark.cpp32
-rw-r--r--navit/gui/qt5_qml/qml_bookmark.h31
-rw-r--r--navit/gui/qt5_qml/qml_map.cpp38
-rw-r--r--navit/gui/qt5_qml/qml_map.h32
-rw-r--r--navit/gui/qt5_qml/qml_poi.cpp74
-rw-r--r--navit/gui/qt5_qml/qml_poi.h51
-rw-r--r--navit/gui/qt5_qml/qml_search.cpp42
-rw-r--r--navit/gui/qt5_qml/qml_search.h34
-rw-r--r--navit/gui/qt5_qml/qml_vehicle.cpp52
-rw-r--r--navit/gui/qt5_qml/qml_vehicle.h40
-rw-r--r--navit/gui/qt5_qml/skins/MainButton.qml71
-rw-r--r--navit/gui/qt5_qml/skins/MainMenu.qml55
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.chevron.down.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.chevron.up.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.cog.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.cogs.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.fullscreen.box.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.home.variant.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.information.circle.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.layer.delete.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.layer.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.location.checkin.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.map.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.power.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.rocket.svg5
-rw-r--r--navit/gui/qt5_qml/skins/icons/appbar.transit.car.svg5
-rw-r--r--navit/gui/qt5_qml/skins/maps.qml36
-rw-r--r--navit/gui/qt5_qml/skins/menu.qml51
-rw-r--r--navit/gui/qt5_qml/skins/modern/MainButton.qml72
-rw-r--r--navit/gui/qt5_qml/skins/modern/MainMenu.qml64
-rw-r--r--navit/gui/qt5_qml/skins/modern/bookmark.qml104
-rw-r--r--navit/gui/qt5_qml/skins/modern/bookmarks.qml108
-rw-r--r--navit/gui/qt5_qml/skins/modern/destination.qml45
-rw-r--r--navit/gui/qt5_qml/skins/modern/destination_address.qml45
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.book.list.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.chevron.down.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.chevron.up.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.city.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.cog.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.cogs.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.fullscreen.box.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.home.variant.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.information.circle.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.layer.delete.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.layer.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.location.checkin.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.location.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.map.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.power.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.rocket.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.timer.rewind.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/appbar.transit.car.svg5
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/bigcity.pngbin958 -> 0 bytes
-rw-r--r--navit/gui/qt5_qml/skins/modern/icons/smallcity.pngbin897 -> 0 bytes
-rw-r--r--navit/gui/qt5_qml/skins/modern/main.qml80
-rw-r--r--navit/gui/qt5_qml/skins/modern/maps.qml45
-rw-r--r--navit/gui/qt5_qml/skins/modern/menu.qml61
-rw-r--r--navit/gui/qt5_qml/skins/modern/navit.svg393
-rw-r--r--navit/gui/qt5_qml/skins/modern/poi.qml104
-rw-r--r--navit/gui/qt5_qml/skins/modern/pois.qml128
-rw-r--r--navit/gui/qt5_qml/skins/modern/search.qml132
-rw-r--r--navit/gui/qt5_qml/skins/modern/search_result_item.qml43
-rw-r--r--navit/gui/qt5_qml/skins/modern/settings.qml44
-rw-r--r--navit/gui/qt5_qml/skins/modern/vehicle.qml11
-rw-r--r--navit/gui/qt5_qml/skins/modern/vehicles.qml46
-rw-r--r--navit/gui/qt5_qml/skins/navit.svg393
-rw-r--r--navit/gui/qt5_qml/skins/pois.qml119
-rw-r--r--navit/gui/qt5_qml/skins/settings.qml41
-rw-r--r--navit/gui/win32/CMakeLists.txt2
-rw-r--r--navit/gui/win32/ceglue.c77
-rw-r--r--navit/gui/win32/ceglue.h16
-rw-r--r--navit/gui/win32/gui_win32.c643
-rw-r--r--navit/gui/win32/resources/navit.icobin10134 -> 0 bytes
-rw-r--r--navit/gui/win32/resources/resource.h4
-rw-r--r--navit/gui/win32/resources/resource.rc16
-rw-r--r--navit/gui/win32/resources/toolbar.bmpbin1398 -> 0 bytes
-rw-r--r--navit/gui/win32/win32_gui_destination.c412
-rw-r--r--navit/gui/win32/win32_gui_notify.c132
-rw-r--r--navit/gui/win32/win32_gui_notify.h18
-rw-r--r--navit/icons/CMakeLists.txt146
-rw-r--r--navit/icons/airport.svg112
-rw-r--r--navit/icons/atm.svg193
-rw-r--r--navit/icons/attraction.svg143
-rw-r--r--navit/icons/autoservice.svg115
-rw-r--r--navit/icons/bahai.svg124
-rw-r--r--navit/icons/bank.svg193
-rw-r--r--navit/icons/bar.svg161
-rw-r--r--navit/icons/beer.svg161
-rw-r--r--navit/icons/bench.svg410
-rw-r--r--navit/icons/bicycle_parking.svg179
-rw-r--r--navit/icons/bicycle_rental.svg151
-rw-r--r--navit/icons/bicycle_shop.svg215
-rw-r--r--navit/icons/biergarten.svg136
-rw-r--r--navit/icons/boat_ramp.svg146
-rw-r--r--navit/icons/boundary_stone.svg320
-rw-r--r--navit/icons/bowling.svg121
-rw-r--r--navit/icons/bridge.svg157
-rw-r--r--navit/icons/buddhist.svg124
-rw-r--r--navit/icons/bus.svg223
-rw-r--r--navit/icons/bus_halt.xpm51
-rw-r--r--navit/icons/bus_stop.svg226
-rw-r--r--navit/icons/cafe.svg121
-rw-r--r--navit/icons/camping.svg124
-rw-r--r--navit/icons/car_dealer.svg161
-rw-r--r--navit/icons/car_rent.svg115
-rw-r--r--navit/icons/car_sharing.svg147
-rw-r--r--navit/icons/car_wash.svg135
-rw-r--r--navit/icons/casino.svg109
-rw-r--r--navit/icons/castle.svg453
-rw-r--r--navit/icons/cemetery.svg124
-rw-r--r--navit/icons/church.svg149
-rw-r--r--navit/icons/cinema.svg162
-rw-r--r--navit/icons/communication.svg130
-rw-r--r--navit/icons/concert.svg147
-rw-r--r--navit/icons/country_.svgzbin2167 -> 0 bytes
-rw-r--r--navit/icons/country_AD.svgzbin16542 -> 0 bytes
-rw-r--r--navit/icons/country_AE.svgzbin321 -> 0 bytes
-rw-r--r--navit/icons/country_AF.svgzbin46096 -> 0 bytes
-rw-r--r--navit/icons/country_AG.svgzbin613 -> 0 bytes
-rw-r--r--navit/icons/country_AI.svgzbin1952 -> 0 bytes
-rw-r--r--navit/icons/country_AL.svgzbin5624 -> 0 bytes
-rw-r--r--navit/icons/country_AM.svgzbin320 -> 0 bytes
-rw-r--r--navit/icons/country_AN.svgzbin494 -> 0 bytes
-rw-r--r--navit/icons/country_AO.svgzbin2264 -> 0 bytes
-rw-r--r--navit/icons/country_AQ.svgzbin680 -> 0 bytes
-rw-r--r--navit/icons/country_AR.svgzbin1170 -> 0 bytes
-rw-r--r--navit/icons/country_AS.svgzbin8267 -> 0 bytes
-rw-r--r--navit/icons/country_AT.svgzbin258 -> 0 bytes
-rw-r--r--navit/icons/country_AU.svgzbin1449 -> 0 bytes
-rw-r--r--navit/icons/country_AW.svgzbin641 -> 0 bytes
-rw-r--r--navit/icons/country_AX.svgzbin319 -> 0 bytes
-rw-r--r--navit/icons/country_AZ.svgzbin645 -> 0 bytes
-rw-r--r--navit/icons/country_BA.svgzbin708 -> 0 bytes
-rw-r--r--navit/icons/country_BB.svgzbin1744 -> 0 bytes
-rw-r--r--navit/icons/country_BD.svgzbin294 -> 0 bytes
-rw-r--r--navit/icons/country_BE.svgzbin304 -> 0 bytes
-rw-r--r--navit/icons/country_BF.svgzbin378 -> 0 bytes
-rw-r--r--navit/icons/country_BG.svgzbin341 -> 0 bytes
-rw-r--r--navit/icons/country_BH.svgzbin346 -> 0 bytes
-rw-r--r--navit/icons/country_BI.svgzbin632 -> 0 bytes
-rw-r--r--navit/icons/country_BJ.svgzbin299 -> 0 bytes
-rw-r--r--navit/icons/country_BL.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_BM.svgzbin37210 -> 0 bytes
-rw-r--r--navit/icons/country_BN.svgzbin12559 -> 0 bytes
-rw-r--r--navit/icons/country_BO.svgzbin848 -> 0 bytes
-rw-r--r--navit/icons/country_BR.svgzbin1765 -> 0 bytes
-rw-r--r--navit/icons/country_BS.svgzbin404 -> 0 bytes
-rw-r--r--navit/icons/country_BT.svgzbin24770 -> 0 bytes
-rw-r--r--navit/icons/country_BV.svgzbin282 -> 0 bytes
-rw-r--r--navit/icons/country_BW.svgzbin309 -> 0 bytes
-rw-r--r--navit/icons/country_BY.svgzbin2215 -> 0 bytes
-rw-r--r--navit/icons/country_BZ.svgzbin66107 -> 0 bytes
-rw-r--r--navit/icons/country_CA.svgzbin835 -> 0 bytes
-rw-r--r--navit/icons/country_CC.svgzbin5345 -> 0 bytes
-rw-r--r--navit/icons/country_CD.svgzbin679 -> 0 bytes
-rw-r--r--navit/icons/country_CF.svgzbin609 -> 0 bytes
-rw-r--r--navit/icons/country_CG.svgzbin315 -> 0 bytes
-rw-r--r--navit/icons/country_CH.svgzbin375 -> 0 bytes
-rw-r--r--navit/icons/country_CI.svgzbin274 -> 0 bytes
-rw-r--r--navit/icons/country_CK.svgzbin882 -> 0 bytes
-rw-r--r--navit/icons/country_CL.svgzbin430 -> 0 bytes
-rw-r--r--navit/icons/country_CM.svgzbin468 -> 0 bytes
-rw-r--r--navit/icons/country_CN.svgzbin1145 -> 0 bytes
-rw-r--r--navit/icons/country_CO.svgzbin210 -> 0 bytes
-rw-r--r--navit/icons/country_CR.svgzbin296 -> 0 bytes
-rw-r--r--navit/icons/country_CU.svgzbin639 -> 0 bytes
-rw-r--r--navit/icons/country_CV.svgzbin912 -> 0 bytes
-rw-r--r--navit/icons/country_CX.svgzbin3919 -> 0 bytes
-rw-r--r--navit/icons/country_CY.svgzbin2522 -> 0 bytes
-rw-r--r--navit/icons/country_CZ.svgzbin422 -> 0 bytes
-rw-r--r--navit/icons/country_DE.svgzbin325 -> 0 bytes
-rw-r--r--navit/icons/country_DJ.svgzbin1175 -> 0 bytes
-rw-r--r--navit/icons/country_DK.svgzbin308 -> 0 bytes
-rw-r--r--navit/icons/country_DM.svgzbin7038 -> 0 bytes
-rw-r--r--navit/icons/country_DO.svgzbin26339 -> 0 bytes
-rw-r--r--navit/icons/country_DZ.svgzbin511 -> 0 bytes
-rw-r--r--navit/icons/country_EC.svgzbin61120 -> 0 bytes
-rw-r--r--navit/icons/country_EE.svgzbin207 -> 0 bytes
-rw-r--r--navit/icons/country_EG.svgzbin5583 -> 0 bytes
-rw-r--r--navit/icons/country_EH.svgzbin622 -> 0 bytes
-rw-r--r--navit/icons/country_ER.svgzbin5002 -> 0 bytes
-rw-r--r--navit/icons/country_ES.svgzbin52198 -> 0 bytes
-rw-r--r--navit/icons/country_ET.svgzbin931 -> 0 bytes
-rw-r--r--navit/icons/country_FI.svgzbin319 -> 0 bytes
-rw-r--r--navit/icons/country_FJ.svgzbin14167 -> 0 bytes
-rw-r--r--navit/icons/country_FK.svgzbin24773 -> 0 bytes
-rw-r--r--navit/icons/country_FM.svgzbin435 -> 0 bytes
-rw-r--r--navit/icons/country_FO.svgzbin320 -> 0 bytes
-rw-r--r--navit/icons/country_FR.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_GA.svgzbin284 -> 0 bytes
-rw-r--r--navit/icons/country_GB.svgzbin628 -> 0 bytes
-rw-r--r--navit/icons/country_GD.svgzbin1375 -> 0 bytes
-rw-r--r--navit/icons/country_GE.svgzbin537 -> 0 bytes
-rw-r--r--navit/icons/country_GF.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_GG.svgzbin346 -> 0 bytes
-rw-r--r--navit/icons/country_GH.svgzbin411 -> 0 bytes
-rw-r--r--navit/icons/country_GI.svgzbin6046 -> 0 bytes
-rw-r--r--navit/icons/country_GL.svgzbin361 -> 0 bytes
-rw-r--r--navit/icons/country_GM.svgzbin809 -> 0 bytes
-rw-r--r--navit/icons/country_GN.svgzbin210 -> 0 bytes
-rw-r--r--navit/icons/country_GP.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_GQ.svgzbin12153 -> 0 bytes
-rw-r--r--navit/icons/country_GR.svgzbin949 -> 0 bytes
-rw-r--r--navit/icons/country_GS.svgzbin27699 -> 0 bytes
-rw-r--r--navit/icons/country_GT.svgzbin37657 -> 0 bytes
-rw-r--r--navit/icons/country_GU.svgzbin5490 -> 0 bytes
-rw-r--r--navit/icons/country_GW.svgzbin410 -> 0 bytes
-rw-r--r--navit/icons/country_GY.svgzbin636 -> 0 bytes
-rw-r--r--navit/icons/country_HK.svgzbin790 -> 0 bytes
-rw-r--r--navit/icons/country_HM.svgzbin1449 -> 0 bytes
-rw-r--r--navit/icons/country_HN.svgzbin422 -> 0 bytes
-rw-r--r--navit/icons/country_HR.svgzbin13999 -> 0 bytes
-rw-r--r--navit/icons/country_HT.svgzbin31691 -> 0 bytes
-rw-r--r--navit/icons/country_HU.svgzbin229 -> 0 bytes
-rw-r--r--navit/icons/country_ID.svgzbin184 -> 0 bytes
-rw-r--r--navit/icons/country_IE.svgzbin220 -> 0 bytes
-rw-r--r--navit/icons/country_IL.svgzbin981 -> 0 bytes
-rw-r--r--navit/icons/country_IM.svgzbin7644 -> 0 bytes
-rw-r--r--navit/icons/country_IN.svgzbin3420 -> 0 bytes
-rw-r--r--navit/icons/country_IO.svgzbin13180 -> 0 bytes
-rw-r--r--navit/icons/country_IQ.svgzbin2450 -> 0 bytes
-rw-r--r--navit/icons/country_IR.svgzbin721 -> 0 bytes
-rw-r--r--navit/icons/country_IS.svgzbin334 -> 0 bytes
-rw-r--r--navit/icons/country_IT.svgzbin209 -> 0 bytes
-rw-r--r--navit/icons/country_JE.svgzbin13121 -> 0 bytes
-rw-r--r--navit/icons/country_JM.svgzbin313 -> 0 bytes
-rw-r--r--navit/icons/country_JO.svgzbin752 -> 0 bytes
-rw-r--r--navit/icons/country_JP.svgzbin271 -> 0 bytes
-rw-r--r--navit/icons/country_KE.svgzbin683 -> 0 bytes
-rw-r--r--navit/icons/country_KG.svgzbin3063 -> 0 bytes
-rw-r--r--navit/icons/country_KH.svgzbin6017 -> 0 bytes
-rw-r--r--navit/icons/country_KI.svgzbin3554 -> 0 bytes
-rw-r--r--navit/icons/country_KM.svgzbin887 -> 0 bytes
-rw-r--r--navit/icons/country_KN.svgzbin557 -> 0 bytes
-rw-r--r--navit/icons/country_KP.svgzbin615 -> 0 bytes
-rw-r--r--navit/icons/country_KR.svgzbin475 -> 0 bytes
-rw-r--r--navit/icons/country_KW.svgzbin215 -> 0 bytes
-rw-r--r--navit/icons/country_KY.svgzbin22215 -> 0 bytes
-rw-r--r--navit/icons/country_KZ.svgzbin8180 -> 0 bytes
-rw-r--r--navit/icons/country_LA.svgzbin208 -> 0 bytes
-rw-r--r--navit/icons/country_LB.svgzbin10942 -> 0 bytes
-rw-r--r--navit/icons/country_LC.svgzbin1018 -> 0 bytes
-rw-r--r--navit/icons/country_LI.svgzbin13590 -> 0 bytes
-rw-r--r--navit/icons/country_LK.svgzbin6279 -> 0 bytes
-rw-r--r--navit/icons/country_LR.svgzbin1067 -> 0 bytes
-rw-r--r--navit/icons/country_LS.svgzbin1517 -> 0 bytes
-rw-r--r--navit/icons/country_LT.svgzbin214 -> 0 bytes
-rw-r--r--navit/icons/country_LU.svgzbin194 -> 0 bytes
-rw-r--r--navit/icons/country_LV.svgzbin268 -> 0 bytes
-rw-r--r--navit/icons/country_LY.svgzbin239 -> 0 bytes
-rw-r--r--navit/icons/country_MA.svgzbin1700 -> 0 bytes
-rw-r--r--navit/icons/country_MC.svgzbin186 -> 0 bytes
-rw-r--r--navit/icons/country_MD.svgzbin24497 -> 0 bytes
-rw-r--r--navit/icons/country_ME.svgzbin48825 -> 0 bytes
-rw-r--r--navit/icons/country_MF.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_MG.svgzbin211 -> 0 bytes
-rw-r--r--navit/icons/country_MH.svgzbin1001 -> 0 bytes
-rw-r--r--navit/icons/country_MK.svgzbin589 -> 0 bytes
-rw-r--r--navit/icons/country_ML.svgzbin194 -> 0 bytes
-rw-r--r--navit/icons/country_MM.svgzbin4619 -> 0 bytes
-rw-r--r--navit/icons/country_MN.svgzbin682 -> 0 bytes
-rw-r--r--navit/icons/country_MO.svgzbin2739 -> 0 bytes
-rw-r--r--navit/icons/country_MP.svgzbin20896 -> 0 bytes
-rw-r--r--navit/icons/country_MQ.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_MR.svgzbin461 -> 0 bytes
-rw-r--r--navit/icons/country_MS.svgzbin7097 -> 0 bytes
-rw-r--r--navit/icons/country_MT.svgzbin16688 -> 0 bytes
-rw-r--r--navit/icons/country_MU.svgzbin218 -> 0 bytes
-rw-r--r--navit/icons/country_MV.svgzbin348 -> 0 bytes
-rw-r--r--navit/icons/country_MW.svgzbin4352 -> 0 bytes
-rw-r--r--navit/icons/country_MX.svgzbin191629 -> 0 bytes
-rw-r--r--navit/icons/country_MY.svgzbin889 -> 0 bytes
-rw-r--r--navit/icons/country_MZ.svgzbin2365 -> 0 bytes
-rw-r--r--navit/icons/country_NA.svgzbin804 -> 0 bytes
-rw-r--r--navit/icons/country_NC.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_NE.svgzbin1097 -> 0 bytes
-rw-r--r--navit/icons/country_NF.svgzbin16417 -> 0 bytes
-rw-r--r--navit/icons/country_NG.svgzbin261 -> 0 bytes
-rw-r--r--navit/icons/country_NI.svgzbin13230 -> 0 bytes
-rw-r--r--navit/icons/country_NL.svgzbin337 -> 0 bytes
-rw-r--r--navit/icons/country_NO.svgzbin282 -> 0 bytes
-rw-r--r--navit/icons/country_NP.svgzbin841 -> 0 bytes
-rw-r--r--navit/icons/country_NR.svgzbin699 -> 0 bytes
-rw-r--r--navit/icons/country_NU.svgzbin1756 -> 0 bytes
-rw-r--r--navit/icons/country_NZ.svgzbin1102 -> 0 bytes
-rw-r--r--navit/icons/country_OM.svgzbin10171 -> 0 bytes
-rw-r--r--navit/icons/country_PA.svgzbin495 -> 0 bytes
-rw-r--r--navit/icons/country_PE.svgzbin268 -> 0 bytes
-rw-r--r--navit/icons/country_PF.svgzbin5854 -> 0 bytes
-rw-r--r--navit/icons/country_PG.svgzbin2988 -> 0 bytes
-rw-r--r--navit/icons/country_PH.svgzbin1919 -> 0 bytes
-rw-r--r--navit/icons/country_PK.svgzbin451 -> 0 bytes
-rw-r--r--navit/icons/country_PL.svgzbin271 -> 0 bytes
-rw-r--r--navit/icons/country_PM.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_PN.svgzbin11106 -> 0 bytes
-rw-r--r--navit/icons/country_PR.svgzbin563 -> 0 bytes
-rw-r--r--navit/icons/country_PS.svgzbin1012 -> 0 bytes
-rw-r--r--navit/icons/country_PT.svgzbin45410 -> 0 bytes
-rw-r--r--navit/icons/country_PW.svgzbin287 -> 0 bytes
-rw-r--r--navit/icons/country_PY.svgzbin23337 -> 0 bytes
-rw-r--r--navit/icons/country_QA.svgzbin814 -> 0 bytes
-rw-r--r--navit/icons/country_RE.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_RO.svgzbin221 -> 0 bytes
-rw-r--r--navit/icons/country_RS.svgzbin60907 -> 0 bytes
-rw-r--r--navit/icons/country_RU.svgzbin186 -> 0 bytes
-rw-r--r--navit/icons/country_RW.svgzbin816 -> 0 bytes
-rw-r--r--navit/icons/country_SA.svgzbin17866 -> 0 bytes
-rw-r--r--navit/icons/country_SB.svgzbin553 -> 0 bytes
-rw-r--r--navit/icons/country_SC.svgzbin270 -> 0 bytes
-rw-r--r--navit/icons/country_SD.svgzbin233 -> 0 bytes
-rw-r--r--navit/icons/country_SE.svgzbin257 -> 0 bytes
-rw-r--r--navit/icons/country_SG.svgzbin582 -> 0 bytes
-rw-r--r--navit/icons/country_SH.svgzbin30078 -> 0 bytes
-rw-r--r--navit/icons/country_SI.svgzbin2859 -> 0 bytes
-rw-r--r--navit/icons/country_SJ.svgzbin282 -> 0 bytes
-rw-r--r--navit/icons/country_SK.svgzbin1775 -> 0 bytes
-rw-r--r--navit/icons/country_SL.svgzbin202 -> 0 bytes
-rw-r--r--navit/icons/country_SM.svgzbin24564 -> 0 bytes
-rw-r--r--navit/icons/country_SN.svgzbin607 -> 0 bytes
-rw-r--r--navit/icons/country_SO.svgzbin309 -> 0 bytes
-rw-r--r--navit/icons/country_SR.svgzbin1141 -> 0 bytes
-rw-r--r--navit/icons/country_ST.svgzbin566 -> 0 bytes
-rw-r--r--navit/icons/country_SV.svgzbin95287 -> 0 bytes
-rw-r--r--navit/icons/country_SY.svgzbin340 -> 0 bytes
-rw-r--r--navit/icons/country_SZ.svgzbin4646 -> 0 bytes
-rw-r--r--navit/icons/country_TC.svgzbin7949 -> 0 bytes
-rw-r--r--navit/icons/country_TD.svgzbin342 -> 0 bytes
-rw-r--r--navit/icons/country_TF.svgzbin1806 -> 0 bytes
-rw-r--r--navit/icons/country_TG.svgzbin483 -> 0 bytes
-rw-r--r--navit/icons/country_TH.svgzbin369 -> 0 bytes
-rw-r--r--navit/icons/country_TJ.svgzbin1974 -> 0 bytes
-rw-r--r--navit/icons/country_TK.svgzbin1089 -> 0 bytes
-rw-r--r--navit/icons/country_TL.svgzbin1024 -> 0 bytes
-rw-r--r--navit/icons/country_TM.svgzbin17172 -> 0 bytes
-rw-r--r--navit/icons/country_TN.svgzbin508 -> 0 bytes
-rw-r--r--navit/icons/country_TO.svgzbin253 -> 0 bytes
-rw-r--r--navit/icons/country_TR.svgzbin493 -> 0 bytes
-rw-r--r--navit/icons/country_TT.svgzbin313 -> 0 bytes
-rw-r--r--navit/icons/country_TV.svgzbin1713 -> 0 bytes
-rw-r--r--navit/icons/country_TW.svgzbin344 -> 0 bytes
-rw-r--r--navit/icons/country_TZ.svgzbin416 -> 0 bytes
-rw-r--r--navit/icons/country_UA.svgzbin266 -> 0 bytes
-rw-r--r--navit/icons/country_UG.svgzbin2902 -> 0 bytes
-rw-r--r--navit/icons/country_UM.svgzbin590 -> 0 bytes
-rw-r--r--navit/icons/country_US.svgzbin590 -> 0 bytes
-rw-r--r--navit/icons/country_UY.svgzbin918 -> 0 bytes
-rw-r--r--navit/icons/country_UZ.svgzbin648 -> 0 bytes
-rw-r--r--navit/icons/country_VA.svgzbin49864 -> 0 bytes
-rw-r--r--navit/icons/country_VC.svgzbin766 -> 0 bytes
-rw-r--r--navit/icons/country_VE.svgzbin540 -> 0 bytes
-rw-r--r--navit/icons/country_VG.svgzbin15568 -> 0 bytes
-rw-r--r--navit/icons/country_VI.svgzbin9326 -> 0 bytes
-rw-r--r--navit/icons/country_VN.svgzbin442 -> 0 bytes
-rw-r--r--navit/icons/country_VU.svgzbin3061 -> 0 bytes
-rw-r--r--navit/icons/country_WF.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_WS.svgzbin933 -> 0 bytes
-rw-r--r--navit/icons/country_YE.svgzbin350 -> 0 bytes
-rw-r--r--navit/icons/country_YT.svgzbin273 -> 0 bytes
-rw-r--r--navit/icons/country_ZA.svgzbin465 -> 0 bytes
-rw-r--r--navit/icons/country_ZM.svgzbin5486 -> 0 bytes
-rw-r--r--navit/icons/country_ZW.svgzbin1910 -> 0 bytes
-rw-r--r--navit/icons/crossing.svg191
-rw-r--r--navit/icons/cursor.svg187
-rw-r--r--navit/icons/cursor.xml20
-rw-r--r--navit/icons/cursor2.pngbin844 -> 0 bytes
-rw-r--r--navit/icons/cursor225.pngbin1014 -> 0 bytes
-rw-r--r--navit/icons/cursor225.svg200
-rw-r--r--navit/icons/cursor450.pngbin807 -> 0 bytes
-rw-r--r--navit/icons/cursor450.svg191
-rw-r--r--navit/icons/cursor675.pngbin1012 -> 0 bytes
-rw-r--r--navit/icons/cursor675.svg200
-rw-r--r--navit/icons/cursor_still.pngbin626 -> 0 bytes
-rw-r--r--navit/icons/cursor_still.svg217
-rw-r--r--navit/icons/dam.svg409
-rw-r--r--navit/icons/danger.svg84
-rw-r--r--navit/icons/daymark.svg143
-rw-r--r--navit/icons/desktop_icons/108x108/navit.pngbin9870 -> 0 bytes
-rw-r--r--navit/icons/desktop_icons/128x128/navit.pngbin12526 -> 0 bytes
-rw-r--r--navit/icons/desktop_icons/22x22/navit.pngbin1110 -> 0 bytes
-rw-r--r--navit/icons/desktop_icons/256x256/navit.pngbin31357 -> 0 bytes
-rw-r--r--navit/icons/desktop_icons/86x86/navit.pngbin7314 -> 0 bytes
-rw-r--r--navit/icons/desktop_icons/navit.desktop.in17
-rw-r--r--navit/icons/diving.svg256
-rw-r--r--navit/icons/drinking_water.svg166
-rw-r--r--navit/icons/dumping_station.xpm112
-rw-r--r--navit/icons/emergency.svg504
-rw-r--r--navit/icons/exit.svg212
-rw-r--r--navit/icons/fastfood.svg296
-rw-r--r--navit/icons/firebrigade.svg130
-rw-r--r--navit/icons/flag_bk_tr.xpm27
-rw-r--r--navit/icons/flag_bk_wh.xpm28
-rw-r--r--navit/icons/flag_bl_wh.xpm28
-rw-r--r--navit/icons/flag_wh_bk.xpm28
-rw-r--r--navit/icons/fountain.svg302
-rw-r--r--navit/icons/fuel.svg191
-rw-r--r--navit/icons/gc_event.xpm41
-rw-r--r--navit/icons/gc_multi.xpm50
-rw-r--r--navit/icons/gc_mystery.xpm40
-rw-r--r--navit/icons/gc_question.xpm25
-rw-r--r--navit/icons/gc_reference.xpm40
-rw-r--r--navit/icons/gc_stages.xpm45
-rw-r--r--navit/icons/gc_tradi.xpm41
-rw-r--r--navit/icons/gc_webcam.xpm44
-rw-r--r--navit/icons/golf.svg186
-rw-r--r--navit/icons/gui_about.svg361
-rw-r--r--navit/icons/gui_actions.svg591
-rw-r--r--navit/icons/gui_active.svg237
-rw-r--r--navit/icons/gui_android_menu.svg120
-rw-r--r--navit/icons/gui_arrow_down.svg73
-rw-r--r--navit/icons/gui_arrow_left.svg73
-rw-r--r--navit/icons/gui_arrow_right.svg73
-rw-r--r--navit/icons/gui_arrow_up.svg73
-rw-r--r--navit/icons/gui_bookmark.svg470
-rw-r--r--navit/icons/gui_display.svg1752
-rw-r--r--navit/icons/gui_formerdests.svg252
-rw-r--r--navit/icons/gui_fullscreen.svg261
-rw-r--r--navit/icons/gui_heightprofile.svg20
-rw-r--r--navit/icons/gui_help.svg398
-rw-r--r--navit/icons/gui_home.svg248
-rw-r--r--navit/icons/gui_inactive.svg233
-rw-r--r--navit/icons/gui_layers.svg33
-rw-r--r--navit/icons/gui_leave_fullscreen.svg422
-rw-r--r--navit/icons/gui_log.svg352
-rw-r--r--navit/icons/gui_map.svg1015
-rw-r--r--navit/icons/gui_maps.svg577
-rw-r--r--navit/icons/gui_menu.svg658
-rw-r--r--navit/icons/gui_minus.svg83
-rw-r--r--navit/icons/gui_plus.svg94
-rw-r--r--navit/icons/gui_quit.svg77
-rw-r--r--navit/icons/gui_rules.svg562
-rw-r--r--navit/icons/gui_search.svg812
-rw-r--r--navit/icons/gui_select_country.svg233
-rw-r--r--navit/icons/gui_select_house_number.svg233
-rw-r--r--navit/icons/gui_select_street.svg237
-rw-r--r--navit/icons/gui_select_town.svg233
-rw-r--r--navit/icons/gui_settings.svg408
-rw-r--r--navit/icons/gui_sound.svg798
-rw-r--r--navit/icons/gui_sound_32.xpm204
-rw-r--r--navit/icons/gui_sound_off.svg771
-rw-r--r--navit/icons/gui_sound_off_32.xpm198
-rw-r--r--navit/icons/gui_stop.svg214
-rw-r--r--navit/icons/gui_strength_0.svg100
-rw-r--r--navit/icons/gui_strength_1.svg100
-rw-r--r--navit/icons/gui_strength_2.svg100
-rw-r--r--navit/icons/gui_strength_3.svg100
-rw-r--r--navit/icons/gui_strength_4.svg100
-rw-r--r--navit/icons/gui_strength_5.svg100
-rw-r--r--navit/icons/gui_tools.svg364
-rw-r--r--navit/icons/gui_town.svg81
-rw-r--r--navit/icons/gui_vehicle.svg81
-rw-r--r--navit/icons/gui_vehicle_pedestrian.svg77
-rw-r--r--navit/icons/gui_zoom_auto.svg557
-rw-r--r--navit/icons/gui_zoom_in.svg554
-rw-r--r--navit/icons/gui_zoom_manual.svg557
-rw-r--r--navit/icons/gui_zoom_out.svg554
-rw-r--r--navit/icons/gui_zoom_route.svg614
-rw-r--r--navit/icons/heliport.svg208
-rw-r--r--navit/icons/highway_exit.xpm65
-rw-r--r--navit/icons/hindu.svg127
-rw-r--r--navit/icons/hospital.svg122
-rw-r--r--navit/icons/hotel.svg198
-rw-r--r--navit/icons/hunting_stand.svg120
-rw-r--r--navit/icons/ic_notify.svg261
-rw-r--r--navit/icons/information.svg142
-rw-r--r--navit/icons/islamic.svg146
-rw-r--r--navit/icons/jain.svg146
-rw-r--r--navit/icons/jewish.svg127
-rw-r--r--navit/icons/justice.svg224
-rw-r--r--navit/icons/level_crossing.svg165
-rw-r--r--navit/icons/library.svg154
-rw-r--r--navit/icons/mark.svg78
-rw-r--r--navit/icons/memorial.svg451
-rw-r--r--navit/icons/menu.svg103
-rw-r--r--navit/icons/military.svg358
-rw-r--r--navit/icons/mini_roundabout.svg190
-rw-r--r--navit/icons/museum.svg242
-rw-r--r--navit/icons/nav_destination_bk.svg147
-rw-r--r--navit/icons/nav_destination_wh.svg147
-rw-r--r--navit/icons/nav_exit_left_bk.svg114
-rw-r--r--navit/icons/nav_exit_left_wh.svg114
-rw-r--r--navit/icons/nav_exit_right_bk.svg113
-rw-r--r--navit/icons/nav_exit_right_wh.svg113
-rw-r--r--navit/icons/nav_keep_left_bk.svg85
-rw-r--r--navit/icons/nav_keep_left_wh.svg86
-rw-r--r--navit/icons/nav_keep_right_bk.svg86
-rw-r--r--navit/icons/nav_keep_right_wh.svg86
-rw-r--r--navit/icons/nav_left_1.xpm69
-rw-r--r--navit/icons/nav_left_1_32.xpm41
-rw-r--r--navit/icons/nav_left_1_bk.svg18
-rw-r--r--navit/icons/nav_left_1_wh.svg18
-rw-r--r--navit/icons/nav_left_2.xpm69
-rw-r--r--navit/icons/nav_left_2_32.xpm41
-rw-r--r--navit/icons/nav_left_2_bk.svg18
-rw-r--r--navit/icons/nav_left_2_wh.svg18
-rw-r--r--navit/icons/nav_left_3_bk.svg18
-rw-r--r--navit/icons/nav_left_3_wh.svg18
-rw-r--r--navit/icons/nav_merge_left_bk.svg112
-rw-r--r--navit/icons/nav_merge_left_wh.svg112
-rw-r--r--navit/icons/nav_merge_right_bk.svg112
-rw-r--r--navit/icons/nav_merge_right_wh.svg112
-rw-r--r--navit/icons/nav_right_1.xpm69
-rw-r--r--navit/icons/nav_right_1_32.xpm41
-rw-r--r--navit/icons/nav_right_1_bk.svg18
-rw-r--r--navit/icons/nav_right_1_wh.svg18
-rw-r--r--navit/icons/nav_right_2.xpm69
-rw-r--r--navit/icons/nav_right_2_32.xpm41
-rw-r--r--navit/icons/nav_right_2_bk.svg18
-rw-r--r--navit/icons/nav_right_2_wh.svg18
-rw-r--r--navit/icons/nav_right_3_bk.svg18
-rw-r--r--navit/icons/nav_right_3_wh.svg18
-rw-r--r--navit/icons/nav_roundabout_l1_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_l1_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_l2_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_l2_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_l3_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_l3_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_l4_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_l4_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_l5_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_l5_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_l6_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_l6_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_l7_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_l7_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_l8_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_l8_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_r1_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_r1_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_r2_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_r2_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_r3_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_r3_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_r4_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_r4_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_r5_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_r5_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_r6_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_r6_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_r7_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_r7_wh.svg20
-rw-r--r--navit/icons/nav_roundabout_r8_bk.svg20
-rw-r--r--navit/icons/nav_roundabout_r8_wh.svg20
-rw-r--r--navit/icons/nav_straight.xpm69
-rw-r--r--navit/icons/nav_straight_32.xpm41
-rw-r--r--navit/icons/nav_straight_bk.svg18
-rw-r--r--navit/icons/nav_straight_wh.svg18
-rw-r--r--navit/icons/nav_svg.html59
-rw-r--r--navit/icons/nav_turnaround_left_bk.svg18
-rw-r--r--navit/icons/nav_turnaround_left_wh.svg18
-rw-r--r--navit/icons/nav_turnaround_right_bk.svg18
-rw-r--r--navit/icons/nav_turnaround_right_wh.svg18
-rw-r--r--navit/icons/navit.svg393
-rwxr-xr-xnavit/icons/navit_svg2png76
-rw-r--r--navit/icons/osd_minus.pngbin329 -> 0 bytes
-rw-r--r--navit/icons/osd_plus.pngbin353 -> 0 bytes
-rw-r--r--navit/icons/pagan.svg123
-rw-r--r--navit/icons/parking.svg100
-rw-r--r--navit/icons/pastafarian.svg130
-rw-r--r--navit/icons/peak.svg151
-rw-r--r--navit/icons/pharmacy.svg98
-rw-r--r--navit/icons/picnic.svg153
-rw-r--r--navit/icons/playground.svg83
-rw-r--r--navit/icons/police.svg117
-rw-r--r--navit/icons/post.svg115
-rw-r--r--navit/icons/public_office.svg97
-rw-r--r--navit/icons/rail_station.svg166
-rw-r--r--navit/icons/repair_service.svg163
-rw-r--r--navit/icons/resort.svg45
-rw-r--r--navit/icons/restaurant.svg136
-rw-r--r--navit/icons/restroom.xpm134
-rw-r--r--navit/icons/ruins.svg801
-rw-r--r--navit/icons/school.svg139
-rw-r--r--navit/icons/shelter.svg222
-rw-r--r--navit/icons/shinto.svg127
-rw-r--r--navit/icons/shop_apparel.svg463
-rw-r--r--navit/icons/shop_computer.svg278
-rw-r--r--navit/icons/shop_department.svg508
-rw-r--r--navit/icons/shop_grocery.svg236
-rw-r--r--navit/icons/shopping.svg202
-rw-r--r--navit/icons/sikh.svg137
-rw-r--r--navit/icons/skiing.svg337
-rw-r--r--navit/icons/sport.svg116
-rw-r--r--navit/icons/stadium.svg235
-rw-r--r--navit/icons/status_calculating_bk.svg86
-rw-r--r--navit/icons/status_calculating_wh.svg86
-rw-r--r--navit/icons/status_no_destination_bk.svg97
-rw-r--r--navit/icons/status_no_destination_wh.svg97
-rw-r--r--navit/icons/status_no_route_bk.svg68
-rw-r--r--navit/icons/status_no_route_wh.svg69
-rw-r--r--navit/icons/status_position_wait_bk.svg67
-rw-r--r--navit/icons/status_position_wait_wh.svg68
-rw-r--r--navit/icons/status_recalculating_bk.svg86
-rw-r--r--navit/icons/status_recalculating_wh.svg86
-rw-r--r--navit/icons/status_routing_bk.svg67
-rw-r--r--navit/icons/status_routing_wh.svg68
-rw-r--r--navit/icons/swimming.svg567
-rw-r--r--navit/icons/taoist.svg200
-rw-r--r--navit/icons/taxi.svg189
-rw-r--r--navit/icons/tec_common.svg3601
-rw-r--r--navit/icons/telephone.svg119
-rw-r--r--navit/icons/theater.svg220
-rw-r--r--navit/icons/toggle_fullscreen.svg86
-rw-r--r--navit/icons/toilets.svg146
-rw-r--r--navit/icons/tomtom_minus.svg6
-rw-r--r--navit/icons/tomtom_plus.svg6
-rw-r--r--navit/icons/tower.svg104
-rw-r--r--navit/icons/townhall.svg236
-rw-r--r--navit/icons/traffic_signals.svg192
-rw-r--r--navit/icons/trailerpark.xpm110
-rw-r--r--navit/icons/unknown.svg87
-rw-r--r--navit/icons/viewpoint.svg74
-rw-r--r--navit/icons/wifi.svg189
-rw-r--r--navit/icons/worship.svg244
-rw-r--r--navit/icons/zipcode.svg104
-rw-r--r--navit/icons/zoo.svg75
-rw-r--r--navit/icons/zoom_in.svg100
-rw-r--r--navit/icons/zoom_out.svg108
-rw-r--r--navit/iphone/downloader/Classes/DownloaderAppDelegate.h21
-rw-r--r--navit/iphone/downloader/Classes/DownloaderAppDelegate.m90
-rw-r--r--navit/iphone/downloader/Classes/DownloaderConstants.h11
-rw-r--r--navit/iphone/downloader/Classes/DownloaderDetailViewController.h22
-rw-r--r--navit/iphone/downloader/Classes/DownloaderDetailViewController.m70
-rw-r--r--navit/iphone/downloader/Classes/DownloaderDetailViewController.xib397
-rw-r--r--navit/iphone/downloader/Classes/RootViewController.h19
-rw-r--r--navit/iphone/downloader/Classes/RootViewController.m185
-rw-r--r--navit/iphone/downloader/Downloader-Info.plist30
-rwxr-xr-xnavit/iphone/downloader/Downloader.xcodeproj/project.pbxproj278
-rw-r--r--navit/iphone/downloader/Downloader_Prefix.pch14
-rw-r--r--navit/iphone/downloader/LocationsArray.plist36
-rw-r--r--navit/iphone/downloader/MainWindow.xib548
-rw-r--r--navit/iphone/downloader/RootViewController.xib384
-rw-r--r--navit/iphone/downloader/main.m17
-rw-r--r--navit/item.c467
-rw-r--r--navit/item.h165
-rw-r--r--navit/item_def.h631
-rw-r--r--navit/keys.h15
-rw-r--r--navit/layer.h31
-rw-r--r--navit/layout.c660
-rw-r--r--navit/layout.h154
-rw-r--r--navit/linguistics.c520
-rw-r--r--navit/linguistics.h21
-rw-r--r--navit/log.c588
-rw-r--r--navit/log.h51
-rw-r--r--navit/main.c414
-rw-r--r--navit/main.h47
-rw-r--r--navit/map-share.h27
-rw-r--r--navit/map.c752
-rw-r--r--navit/map.h283
-rw-r--r--navit/map/binfile/CMakeLists.txt1
-rw-r--r--navit/map/binfile/binfile.c2875
-rw-r--r--navit/map/csv/CMakeLists.txt1
-rw-r--r--navit/map/csv/csv.c885
-rw-r--r--navit/map/csv/csv.h55
-rw-r--r--navit/map/csv/quadtree.c727
-rw-r--r--navit/map/csv/quadtree.h67
-rw-r--r--navit/map/filter/CMakeLists.txt1
-rw-r--r--navit/map/filter/filter.c435
-rw-r--r--navit/map/garmin/CMakeLists.txt12
-rw-r--r--navit/map/garmin/gar2navit.c219
-rw-r--r--navit/map/garmin/gar2navit.h52
-rw-r--r--navit/map/garmin/garmin.c997
-rw-r--r--navit/map/garmin/garmin.h32
-rw-r--r--navit/map/garmin/garmintypes.txt707
-rw-r--r--navit/map/garmin/gentypes.c148
-rw-r--r--navit/map/garmin_img/garmin_img.c1513
-rw-r--r--navit/map/mg/CMakeLists.txt1
-rw-r--r--navit/map/mg/block.c298
-rw-r--r--navit/map/mg/map.c613
-rw-r--r--navit/map/mg/mg.h372
-rw-r--r--navit/map/mg/poly.c265
-rw-r--r--navit/map/mg/street.c1074
-rw-r--r--navit/map/mg/town.c287
-rw-r--r--navit/map/mg/tree.c280
-rw-r--r--navit/map/shapefile/CMakeLists.txt1
-rw-r--r--navit/map/shapefile/shapefile.c796
-rw-r--r--navit/map/textfile/CMakeLists.txt1
-rw-r--r--navit/map/textfile/textfile.c399
-rw-r--r--navit/map/textfile/textfile.h56
-rw-r--r--navit/map_data.h54
-rw-r--r--navit/maps.c102
-rw-r--r--navit/maps/CMakeLists.txt44
-rw-r--r--navit/mapset.c419
-rw-r--r--navit/mapset.h57
-rw-r--r--navit/maptool/CMakeLists.txt20
-rw-r--r--navit/maptool/boundaries.c386
-rw-r--r--navit/maptool/buffer.c76
-rw-r--r--navit/maptool/ch.c550
-rw-r--r--navit/maptool/coastline.c671
-rw-r--r--navit/maptool/fileformat.proto36
-rw-r--r--navit/maptool/generated-code/fileformat.pb-c.c248
-rw-r--r--navit/maptool/generated-code/fileformat.pb-c.h110
-rw-r--r--navit/maptool/generated-code/osmformat.pb-c.c1582
-rw-r--r--navit/maptool/generated-code/osmformat.pb-c.h523
-rw-r--r--navit/maptool/google/protobuf-c/protobuf-c-private.h72
-rw-r--r--navit/maptool/google/protobuf-c/protobuf-c.c2603
-rw-r--r--navit/maptool/google/protobuf-c/protobuf-c.h444
-rw-r--r--navit/maptool/itembin.c718
-rw-r--r--navit/maptool/itembin_buffer.c77
-rw-r--r--navit/maptool/maptool.c1124
-rw-r--r--navit/maptool/maptool.h423
-rw-r--r--navit/maptool/misc.c454
-rw-r--r--navit/maptool/osm.c3538
-rw-r--r--navit/maptool/osm_o5m.c352
-rw-r--r--navit/maptool/osm_protobuf.c385
-rw-r--r--navit/maptool/osm_protobufdb.c865
-rw-r--r--navit/maptool/osm_psql.c189
-rw-r--r--navit/maptool/osm_relations.c200
-rw-r--r--navit/maptool/osm_xml.c245
-rw-r--r--navit/maptool/osmformat.proto209
-rw-r--r--navit/maptool/sourcesink.c169
-rw-r--r--navit/maptool/tempfile.c67
-rw-r--r--navit/maptool/tile.c702
-rw-r--r--navit/maptool/zip.c483
-rw-r--r--navit/maptype.c51
-rw-r--r--navit/maptype.h40
-rw-r--r--navit/menu.c47
-rw-r--r--navit/menu.h49
-rw-r--r--navit/messages.c157
-rw-r--r--navit/messages.h41
-rw-r--r--navit/navigation.c4470
-rw-r--r--navit/navigation.h77
-rw-r--r--navit/navit.c3722
-rw-r--r--navit/navit.dtd156
-rw-r--r--navit/navit.h135
-rw-r--r--navit/navit_lfs.h72
-rw-r--r--navit/navit_nls.c94
-rw-r--r--navit/navit_nls.h14
-rw-r--r--navit/navit_shipped.xml7318
-rw-r--r--navit/osd.c515
-rw-r--r--navit/osd.h82
-rw-r--r--navit/osd/core/CMakeLists.txt1
-rw-r--r--navit/osd/core/osd_core.c4020
-rw-r--r--navit/param.c70
-rw-r--r--navit/param.h34
-rw-r--r--navit/phrase.c53
-rw-r--r--navit/phrase.h27
-rw-r--r--navit/plugin.c435
-rw-r--r--navit/plugin.h174
-rw-r--r--navit/plugin/j1850/CMakeLists.txt1
-rw-r--r--navit/plugin/j1850/j1850.c506
-rw-r--r--navit/plugin/pedestrian/CMakeLists.txt1
-rw-r--r--navit/plugin/pedestrian/pedestrian.c1381
-rw-r--r--navit/plugin_def.h33
-rw-r--r--navit/point.h32
-rw-r--r--navit/popup.c438
-rw-r--r--navit/popup.h28
-rw-r--r--navit/profile.c87
-rw-r--r--navit/profile.h43
-rw-r--r--navit/profile_option.c62
-rw-r--r--navit/projection.c113
-rw-r--r--navit/projection.h40
-rw-r--r--navit/roadprofile.c131
-rw-r--r--navit/roadprofile.h40
-rw-r--r--navit/route.c4250
-rw-r--r--navit/route.h139
-rw-r--r--navit/script.c113
-rwxr-xr-xnavit/script/cabify.sh83
-rwxr-xr-xnavit/script/check_itemdef42
-rwxr-xr-xnavit/script/compare_map26
-rw-r--r--navit/script/download_index.html145
-rwxr-xr-xnavit/script/dump_types26
-rwxr-xr-xnavit/script/gensvg266
-rwxr-xr-xnavit/script/geotag36
-rwxr-xr-xnavit/script/get_map5
-rwxr-xr-xnavit/script/gps_emu19
-rwxr-xr-xnavit/script/gps_emu246
-rwxr-xr-xnavit/script/gps_emu312
-rwxr-xr-xnavit/script/gps_emu4136
-rwxr-xr-xnavit/script/itemgra.pl57
-rw-r--r--navit/script/mapExtract.class.php283
-rw-r--r--navit/script/map_index.php42
-rw-r--r--navit/script/mapextract.php225
-rw-r--r--navit/script/osm/Geo/OSM/APIClientV4.pm226
-rw-r--r--navit/script/osm/Geo/OSM/APIClientV5.pm327
-rw-r--r--navit/script/osm/Geo/OSM/APIClientV6.pm364
-rw-r--r--navit/script/osm/Geo/OSM/EntitiesV3.pm296
-rw-r--r--navit/script/osm/Geo/OSM/EntitiesV5.pm375
-rw-r--r--navit/script/osm/Geo/OSM/EntitiesV6.pm404
-rw-r--r--navit/script/osm/Geo/OSM/MapFeatures.pm194
-rw-r--r--navit/script/osm/Geo/OSM/OsmChangeReaderV3.pm323
-rw-r--r--navit/script/osm/Geo/OSM/OsmChangeReaderV5.pm316
-rw-r--r--navit/script/osm/Geo/OSM/OsmChangeReaderV6.pm316
-rw-r--r--navit/script/osm/Geo/OSM/OsmReaderV3.pm246
-rw-r--r--navit/script/osm/Geo/OSM/OsmReaderV5.pm249
-rw-r--r--navit/script/osm/Geo/OSM/OsmReaderV6.pm249
-rw-r--r--navit/script/osm/Geo/OSM/OsmXML.pm161
-rw-r--r--navit/script/osm/Geo/OSM/Planet.pm336
-rw-r--r--navit/script/osm/Geo/OSM/SegmentList.pm520
-rw-r--r--navit/script/osm/Geo/OSM/Tracks2OSM.pm145
-rw-r--r--navit/script/osm/Geo/OSM/Upload.pm145
-rw-r--r--navit/script/osm/Geo/OSM/Write.pm170
-rwxr-xr-xnavit/script/osm/border_follower.pl139
-rwxr-xr-xnavit/script/osm/osmtool.pl142
-rwxr-xr-xnavit/script/wiki2def60
-rw-r--r--navit/search.c1050
-rw-r--r--navit/search.h96
-rw-r--r--navit/search_houseno_interpol.c251
-rw-r--r--navit/search_houseno_interpol.h54
-rw-r--r--navit/speech.c165
-rw-r--r--navit/speech.h42
-rw-r--r--navit/speech/android/CMakeLists.txt1
-rw-r--r--navit/speech/android/speech_android.c149
-rw-r--r--navit/speech/cmdline/CMakeLists.txt1
-rw-r--r--navit/speech/cmdline/speech_cmdline.c265
-rw-r--r--navit/speech/dbus/CMakeLists.txt1
-rw-r--r--navit/speech/dbus/speech_dbus.c77
-rw-r--r--navit/speech/espeak/CMakeLists.txt2
-rw-r--r--navit/speech/espeak/speak.c518
-rw-r--r--navit/speech/iphone/CMakeLists.txt2
-rw-r--r--navit/speech/iphone/VSSpeechSynthesizer.h18
-rw-r--r--navit/speech/iphone/speech_iphone.m74
-rw-r--r--navit/speech/qt5_espeak/CMakeLists.txt12
-rw-r--r--navit/speech/qt5_espeak/Qt5EspeakAudioOut.cpp117
-rw-r--r--navit/speech/qt5_espeak/Qt5EspeakAudioOut.h55
-rwxr-xr-xnavit/speech/qt5_espeak/qt5_espeak.cpp252
-rw-r--r--navit/speech/speech_dispatcher/CMakeLists.txt1
-rw-r--r--navit/speech/speech_dispatcher/speech_speech_dispatcher.c81
-rw-r--r--navit/start.c26
-rw-r--r--navit/start_apple.m49
-rw-r--r--navit/start_real.c244
-rw-r--r--navit/start_real.h25
-rwxr-xr-xnavit/startonce.sh81
-rw-r--r--navit/sunriset.c300
-rw-r--r--navit/sunriset.h117
-rw-r--r--navit/support/espeak/CMakeLists.txt9
-rw-r--r--navit/support/espeak/StdAfx.h3
-rwxr-xr-xnavit/support/espeak/compiledict.c1671
-rw-r--r--navit/support/espeak/debug.c74
-rw-r--r--navit/support/espeak/debug.h26
-rwxr-xr-xnavit/support/espeak/dictionary.c3490
-rw-r--r--navit/support/espeak/espeak-data/af_dictbin74925 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/ca_dictbin4212 -> 0 bytes
-rwxr-xr-xnavit/support/espeak/espeak-data/config9
-rw-r--r--navit/support/espeak/espeak-data/cs_dictbin7798 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/cy_dictbin3541 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/da_dictbin5327 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/de_dictbin19322 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/el_dictbin4585 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/en_dictbin87069 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/eo_dictbin4746 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/es_dictbin5309 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/fi_dictbin4567 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/fr_dictbin19363 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/grc_dictbin3390 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/hbs_dictbin7404 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/hi_dictbin5696 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/hu_dictbin5916 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/hy_dictbin2469 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/id_dictbin3083 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/is_dictbin5566 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/it_dictbin48870 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/jbo_dictbin2051 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/ku_dictbin2277 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/la_dictbin3911 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/lv_dictbin12558 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/af1_phtransbin1636 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/ca1_phtransbin1372 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/cr1_phtransbin2164 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/cs_phtransbin580 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/de2_phtransbin1444 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/de4_phtransbin1588 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/de6_phtransbin1204 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/en1_phtransbin796 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/es_phtransbin1708 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/fr1_phtransbin1852 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/gr2_phtransbin2212 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/grc-de6_phtransbin484 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/hu1_phtransbin1420 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/id1_phtransbin868 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/in1_phtransbin1252 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/it3_phtransbin892 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/la1_phtransbin748 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/nl_phtransbin1612 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/pl1_phtransbin1540 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/pt1_phtransbin2092 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/pt_phtransbin2092 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/ptbr4_phtransbin2356 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/ptbr_phtransbin2500 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/ro1_phtransbin2116 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/sv2_phtransbin1564 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/sv_phtransbin1564 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/us3_phtransbin1012 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mbrola_ph/us_phtransbin1084 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/mk_dictbin4948 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/nl_dictbin4124 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/no_dictbin3735 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/pap_dictbin2148 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/phondatabin355256 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/phondata-manifest729
-rw-r--r--navit/support/espeak/espeak-data/phonindexbin30256 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/phontabbin36460 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/pl_dictbin40458 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/pt_dictbin14970 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/ro_dictbin24961 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/ru_dictbin5519 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/sk_dictbin8898 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/sq_dictbin3222 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/sv_dictbin9508 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/sw_dictbin3072 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/ta_dictbin2527 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/tr_dictbin4783 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/vi_dictbin4855 -> 0 bytes
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/!v/croak11
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/!v/f118
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/!v/f220
-rw-r--r--navit/support/espeak/espeak-data/voices/!v/f322
-rw-r--r--navit/support/espeak/espeak-data/voices/!v/f418
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/!v/fast11
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/!v/m119
-rw-r--r--navit/support/espeak/espeak-data/voices/!v/m215
-rw-r--r--navit/support/espeak/espeak-data/voices/!v/m316
-rw-r--r--navit/support/espeak/espeak-data/voices/!v/m417
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/!v/m515
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/!v/m613
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/!v/m718
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/!v/whisper13
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/af8
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/bs16
-rw-r--r--navit/support/espeak/espeak-data/voices/ca4
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/cs4
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/cy5
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/da3
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/de5
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/default4
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/el5
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/en/en9
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/en/en-n14
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/en/en-rp12
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/en/en-sc16
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/en/en-us17
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/en/en-wi19
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/en/en-wm12
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/eo3
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/es7
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/es-la11
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/fi4
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/fr7
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/fr-be7
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/hi9
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/hr18
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/hu3
-rw-r--r--navit/support/espeak/espeak-data/voices/hy3
-rw-r--r--navit/support/espeak/espeak-data/voices/hy-west19
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/id8
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/is4
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/it6
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/ku6
-rw-r--r--navit/support/espeak/espeak-data/voices/la13
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/lv6
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-af17
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-af1-en7
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-br19
-rw-r--r--navit/support/espeak/espeak-data/voices/mb/mb-br39
-rw-r--r--navit/support/espeak/espeak-data/voices/mb/mb-br49
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-cr19
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-cz26
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-de26
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-de46
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-de4-en6
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-de510
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-de5-en7
-rw-r--r--navit/support/espeak/espeak-data/voices/mb/mb-de66
-rw-r--r--navit/support/espeak/espeak-data/voices/mb/mb-de6-grc6
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-de77
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-en17
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-es17
-rw-r--r--navit/support/espeak/espeak-data/voices/mb/mb-es27
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-fr19
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-fr1-en8
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-fr48
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-fr4-en8
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-gr26
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-gr2-en6
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-hu16
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-hu1-en6
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-id17
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-it38
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-it48
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-la16
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-nl27
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-nl2-en7
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-pl16
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-pl1-en6
-rw-r--r--navit/support/espeak/espeak-data/voices/mb/mb-pt19
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-ro17
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-ro1-en7
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-sw17
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-sw1-en7
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-sw27
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-sw2-en7
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-us112
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-us212
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mb/mb-us312
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/mk4
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/nl3
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/no6
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/pl5
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/pt7
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/pt-pt7
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/ro5
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/ru6
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/sk4
-rw-r--r--navit/support/espeak/espeak-data/voices/sq6
-rw-r--r--navit/support/espeak/espeak-data/voices/sr15
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/sv4
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/sw4
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/ta6
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/test/grc8
-rw-r--r--navit/support/espeak/espeak-data/voices/test/jbo3
-rw-r--r--navit/support/espeak/espeak-data/voices/test/pap5
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/tr4
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/vi6
-rw-r--r--navit/support/espeak/espeak-data/voices/zh30
-rwxr-xr-xnavit/support/espeak/espeak-data/voices/zh-yue14
-rw-r--r--navit/support/espeak/espeak-data/zh_dictbin41834 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak-data/zhy_dictbin1556 -> 0 bytes
-rw-r--r--navit/support/espeak/espeak.c665
-rw-r--r--navit/support/espeak/espeak_command.c707
-rw-r--r--navit/support/espeak/espeak_command.h145
-rw-r--r--navit/support/espeak/event.c725
-rw-r--r--navit/support/espeak/event.h51
-rw-r--r--navit/support/espeak/fifo.c593
-rw-r--r--navit/support/espeak/fifo.h58
-rwxr-xr-xnavit/support/espeak/intonation.c1104
-rw-r--r--navit/support/espeak/klatt.c1303
-rw-r--r--navit/support/espeak/klatt.h153
-rw-r--r--navit/support/espeak/mbrolib.h205
-rw-r--r--navit/support/espeak/numbers.c1507
-rwxr-xr-xnavit/support/espeak/phoneme.h168
-rwxr-xr-xnavit/support/espeak/phonemelist.c686
-rwxr-xr-xnavit/support/espeak/portaudio.h466
-rwxr-xr-xnavit/support/espeak/portaudio18.h466
-rw-r--r--navit/support/espeak/portaudio19.h1127
-rw-r--r--navit/support/espeak/readclause.c2440
-rwxr-xr-xnavit/support/espeak/setlengths.c673
-rwxr-xr-xnavit/support/espeak/sintab.h258
-rwxr-xr-xnavit/support/espeak/speak.c898
-rw-r--r--navit/support/espeak/speak_init.c6
-rw-r--r--navit/support/espeak/speak_lib.c1156
-rw-r--r--navit/support/espeak/speak_lib.h601
-rwxr-xr-xnavit/support/espeak/speech.h86
-rwxr-xr-xnavit/support/espeak/synth_mbrola.c760
-rwxr-xr-xnavit/support/espeak/synthdata.c682
-rwxr-xr-xnavit/support/espeak/synthesize.c1658
-rwxr-xr-xnavit/support/espeak/synthesize.h377
-rw-r--r--navit/support/espeak/tr_languages.c1335
-rwxr-xr-xnavit/support/espeak/translate.c2800
-rwxr-xr-xnavit/support/espeak/translate.h584
-rw-r--r--navit/support/espeak/voice.h81
-rwxr-xr-xnavit/support/espeak/voices.c1746
-rwxr-xr-xnavit/support/espeak/wave.c1112
-rw-r--r--navit/support/espeak/wave.h52
-rwxr-xr-xnavit/support/espeak/wave_pulse.c935
-rwxr-xr-xnavit/support/espeak/wave_sada.c588
-rwxr-xr-xnavit/support/espeak/wavegen.c1941
-rw-r--r--navit/support/ezxml/CMakeLists.txt1
-rw-r--r--navit/support/ezxml/ezxml.c1022
-rw-r--r--navit/support/ezxml/ezxml.h167
-rw-r--r--navit/support/ezxml/ezxml_init.c6
-rw-r--r--navit/support/gettext_intl/CMakeLists.txt4
-rw-r--r--navit/support/gettext_intl/ChangeLog4
-rw-r--r--navit/support/gettext_intl/VERSION1
-rw-r--r--navit/support/gettext_intl/bindtextdom.c363
-rwxr-xr-xnavit/support/gettext_intl/config.charset608
-rw-r--r--navit/support/gettext_intl/dcgettext.c56
-rw-r--r--navit/support/gettext_intl/dcigettext.c1220
-rw-r--r--navit/support/gettext_intl/dcngettext.c57
-rw-r--r--navit/support/gettext_intl/dgettext.c58
-rw-r--r--navit/support/gettext_intl/dngettext.c59
-rw-r--r--navit/support/gettext_intl/eval-plural.h108
-rw-r--r--navit/support/gettext_intl/explodename.c185
-rw-r--r--navit/support/gettext_intl/finddomain.c192
-rw-r--r--navit/support/gettext_intl/gettext.c63
-rw-r--r--navit/support/gettext_intl/gettextP.h215
-rw-r--r--navit/support/gettext_intl/gmo.h149
-rw-r--r--navit/support/gettext_intl/hash-string.h48
-rw-r--r--navit/support/gettext_intl/intl-compat.c131
-rw-r--r--navit/support/gettext_intl/l10nflist.c421
-rw-r--r--navit/support/gettext_intl/libgnuintl.h384
-rw-r--r--navit/support/gettext_intl/libgnuintl.h.in383
-rw-r--r--navit/support/gettext_intl/loadinfo.h145
-rw-r--r--navit/support/gettext_intl/loadmsgcat.c1423
-rw-r--r--navit/support/gettext_intl/localcharset.c398
-rw-r--r--navit/support/gettext_intl/localcharset.h42
-rw-r--r--navit/support/gettext_intl/locale.alias78
-rw-r--r--navit/support/gettext_intl/localealias.c414
-rw-r--r--navit/support/gettext_intl/localename.c1148
-rw-r--r--navit/support/gettext_intl/log.c98
-rw-r--r--navit/support/gettext_intl/ngettext.c65
-rw-r--r--navit/support/gettext_intl/os2compat.c98
-rw-r--r--navit/support/gettext_intl/os2compat.h46
-rw-r--r--navit/support/gettext_intl/osdep.c24
-rw-r--r--navit/support/gettext_intl/plural-exp.c154
-rw-r--r--navit/support/gettext_intl/plural-exp.h118
-rw-r--r--navit/support/gettext_intl/plural.c1490
-rw-r--r--navit/support/gettext_intl/plural.y381
-rw-r--r--navit/support/gettext_intl/printf-args.c119
-rw-r--r--navit/support/gettext_intl/printf-args.h137
-rw-r--r--navit/support/gettext_intl/printf-parse.c537
-rw-r--r--navit/support/gettext_intl/printf-parse.h75
-rw-r--r--navit/support/gettext_intl/printf.c373
-rw-r--r--navit/support/gettext_intl/ref-add.sin31
-rw-r--r--navit/support/gettext_intl/ref-del.sin26
-rw-r--r--navit/support/gettext_intl/relocatable.c449
-rw-r--r--navit/support/gettext_intl/relocatable.h77
-rw-r--r--navit/support/gettext_intl/textdomain.c141
-rw-r--r--navit/support/gettext_intl/vasnprintf.c897
-rw-r--r--navit/support/gettext_intl/vasnprintf.h61
-rw-r--r--navit/support/gettext_intl/vasnwprintf.h46
-rw-r--r--navit/support/gettext_intl/wprintf-parse.h75
-rw-r--r--navit/support/gettext_intl/xsize.h109
-rw-r--r--navit/support/glib/CMakeLists.txt3
-rw-r--r--navit/support/glib/fake.c119
-rw-r--r--navit/support/glib/fake.h50
-rw-r--r--navit/support/glib/galias.h0
-rw-r--r--navit/support/glib/galiasdef.c0
-rw-r--r--navit/support/glib/galloca.h63
-rw-r--r--navit/support/glib/gatomic.c946
-rw-r--r--navit/support/glib/gerror.c381
-rw-r--r--navit/support/glib/gerror.h92
-rw-r--r--navit/support/glib/ghash.c1202
-rw-r--r--navit/support/glib/ghash.h145
-rw-r--r--navit/support/glib/glib.h42
-rw-r--r--navit/support/glib/glib_init.c6
-rw-r--r--navit/support/glib/glibconfig.h266
-rw-r--r--navit/support/glib/glibintl.h43
-rw-r--r--navit/support/glib/glist.c999
-rw-r--r--navit/support/glib/glist.h120
-rw-r--r--navit/support/glib/gmacros.h273
-rw-r--r--navit/support/glib/gmem.c742
-rw-r--r--navit/support/glib/gmem.h152
-rw-r--r--navit/support/glib/gmessages.c1126
-rw-r--r--navit/support/glib/gmessages.h341
-rw-r--r--navit/support/glib/gprimes.c90
-rw-r--r--navit/support/glib/gprintf.c342
-rw-r--r--navit/support/glib/gprintf.h52
-rw-r--r--navit/support/glib/gprintfint.h69
-rw-r--r--navit/support/glib/gquark.h52
-rw-r--r--navit/support/glib/gslice.c1496
-rw-r--r--navit/support/glib/gslice.h90
-rw-r--r--navit/support/glib/gslist.c1088
-rw-r--r--navit/support/glib/gslist.h116
-rw-r--r--navit/support/glib/gstrfuncs.c3133
-rw-r--r--navit/support/glib/gstrfuncs.h266
-rw-r--r--navit/support/glib/gstring.c1488
-rw-r--r--navit/support/glib/gthreadprivate.h68
-rw-r--r--navit/support/glib/gtypes.h432
-rw-r--r--navit/support/glib/gunicode.h404
-rw-r--r--navit/support/glib/gutf8.c1891
-rw-r--r--navit/support/glib/gutils.c3420
-rwxr-xr-xnavit/support/glib/gutils.h490
-rw-r--r--navit/support/libc/CMakeLists.txt1
-rw-r--r--navit/support/libc/_mingw.h304
-rw-r--r--navit/support/libc/abort.c9
-rw-r--r--navit/support/libc/bsearch.c81
-rw-r--r--navit/support/libc/calloc.c8
-rw-r--r--navit/support/libc/chsize.c51
-rw-r--r--navit/support/libc/close.c27
-rw-r--r--navit/support/libc/errno.h72
-rw-r--r--navit/support/libc/fcntl.h75
-rw-r--r--navit/support/libc/getopt.h111
-rw-r--r--navit/support/libc/gmtime.c25
-rw-r--r--navit/support/libc/io.h372
-rw-r--r--navit/support/libc/libc.c254
-rw-r--r--navit/support/libc/libc.h51
-rw-r--r--navit/support/libc/libc_init.c6
-rw-r--r--navit/support/libc/locale.h22
-rw-r--r--navit/support/libc/localtime.c38
-rw-r--r--navit/support/libc/lseek.c41
-rw-r--r--navit/support/libc/math.h13
-rw-r--r--navit/support/libc/mkdir.c29
-rw-r--r--navit/support/libc/mktime.c32
-rw-r--r--navit/support/libc/open.c135
-rw-r--r--navit/support/libc/process.h147
-rw-r--r--navit/support/libc/read.c30
-rw-r--r--navit/support/libc/rename.c27
-rw-r--r--navit/support/libc/signal.h2
-rw-r--r--navit/support/libc/stat.c151
-rw-r--r--navit/support/libc/strcasecmp.c21
-rw-r--r--navit/support/libc/sys/stat.h196
-rw-r--r--navit/support/libc/sys/time.h56
-rw-r--r--navit/support/libc/sys/types.h124
-rw-r--r--navit/support/libc/time.c28
-rw-r--r--navit/support/libc/timeutil.c126
-rw-r--r--navit/support/libc/timeutil.h17
-rw-r--r--navit/support/libc/unistd.h48
-rw-r--r--navit/support/libc/unlink.c29
-rw-r--r--navit/support/libc/write.c29
-rw-r--r--navit/support/libpng/CMakeLists.txt2
-rw-r--r--navit/support/libpng/libpng_init.c6
-rw-r--r--navit/support/libpng/png.c912
-rw-r--r--navit/support/libpng/png.h3682
-rw-r--r--navit/support/libpng/pngconf.h1496
-rw-r--r--navit/support/libpng/pngerror.c359
-rw-r--r--navit/support/libpng/pngget.c900
-rw-r--r--navit/support/libpng/pngm2pnm.c430
-rw-r--r--navit/support/libpng/pngmem.c610
-rw-r--r--navit/support/libpng/pngread.c1459
-rw-r--r--navit/support/libpng/pngrio.c168
-rw-r--r--navit/support/libpng/pngrtran.c4296
-rw-r--r--navit/support/libpng/pngrutil.c3223
-rw-r--r--navit/support/libpng/pngset.c1253
-rw-r--r--navit/support/libpng/pngtrans.c662
-rw-r--r--navit/support/shapefile/CMakeLists.txt1
-rw-r--r--navit/support/shapefile/dbfopen.c2405
-rw-r--r--navit/support/shapefile/shapefil.h747
-rw-r--r--navit/support/shapefile/shpopen.c3030
-rw-r--r--navit/support/shapefile/shptree.c1266
-rw-r--r--navit/support/win32/CMakeLists.txt2
-rw-r--r--navit/support/win32/ConvertUTF.c539
-rw-r--r--navit/support/win32/ConvertUTF.h149
-rw-r--r--navit/support/win32/X11/XF86keysym.h189
-rw-r--r--navit/support/win32/addwinsock.c8
-rw-r--r--navit/support/win32/addwinsock.h8
-rw-r--r--navit/support/win32/mmap.c43
-rw-r--r--navit/support/win32/serial_io.c166
-rw-r--r--navit/support/win32/serial_io.h42
-rw-r--r--navit/support/win32/stdint.h13
-rw-r--r--navit/support/win32/sys/mman.h8
-rw-r--r--navit/support/win32/win32_init.c6
-rw-r--r--navit/support/wordexp/CMakeLists.txt1
-rw-r--r--navit/support/wordexp/glob.c196
-rw-r--r--navit/support/wordexp/glob.h19
-rw-r--r--navit/support/wordexp/wordexp.c136
-rw-r--r--navit/support/wordexp/wordexp.h42
-rw-r--r--navit/support/wordexp/wordexp_init.c6
-rw-r--r--navit/support/xgetopt/CMakeLists.txt2
-rw-r--r--navit/support/xgetopt/XGetopt.c216
-rw-r--r--navit/support/xgetopt/XGetopt.h29
-rw-r--r--navit/support/xgetopt/getopt_long.c210
-rw-r--r--navit/support/xgetopt/getopt_long.h43
-rw-r--r--navit/support/zlib/CMakeLists.txt1
-rw-r--r--navit/support/zlib/adler32.c149
-rw-r--r--navit/support/zlib/crc32.c423
-rw-r--r--navit/support/zlib/crc32.h441
-rw-r--r--navit/support/zlib/infback.c623
-rw-r--r--navit/support/zlib/inffast.c318
-rw-r--r--navit/support/zlib/inffast.h11
-rw-r--r--navit/support/zlib/inffixed.h94
-rw-r--r--navit/support/zlib/inflate.c1368
-rw-r--r--navit/support/zlib/inflate.h115
-rw-r--r--navit/support/zlib/inftrees.c329
-rw-r--r--navit/support/zlib/inftrees.h55
-rw-r--r--navit/support/zlib/zconf.h332
-rw-r--r--navit/support/zlib/zlib.h1357
-rw-r--r--navit/support/zlib/zlib_init.c6
-rw-r--r--navit/support/zlib/zutil.c318
-rw-r--r--navit/support/zlib/zutil.h269
-rwxr-xr-xnavit/tools/asc2navit135
-rwxr-xr-xnavit/tools/cleanattr.sh50
-rw-r--r--navit/tools/gpx2navit_txt/AUTHORS9
-rw-r--r--navit/tools/gpx2navit_txt/COPYING339
-rw-r--r--navit/tools/gpx2navit_txt/ChangeLog21
-rw-r--r--navit/tools/gpx2navit_txt/INSTALL17
-rw-r--r--navit/tools/gpx2navit_txt/NEWS64
-rw-r--r--navit/tools/gpx2navit_txt/README122
-rw-r--r--navit/tools/gpx2navit_txt/TODO1
-rwxr-xr-xnavit/tools/gpx2navit_txt/autogen.sh11
-rw-r--r--navit/tools/gpx2navit_txt/config.guess1453
-rw-r--r--navit/tools/gpx2navit_txt/config.sub1566
-rw-r--r--navit/tools/gpx2navit_txt/configure.ac47
-rwxr-xr-xnavit/tools/gpx2navit_txt/depcomp423
-rw-r--r--navit/tools/gpx2navit_txt/develop/structures.gifbin39033 -> 0 bytes
-rwxr-xr-xnavit/tools/gpx2navit_txt/install-sh251
-rw-r--r--navit/tools/gpx2navit_txt/man/gpx2navit_txt.1106
-rwxr-xr-xnavit/tools/gpx2navit_txt/missing336
-rwxr-xr-xnavit/tools/gpx2navit_txt/mkinstalldirs99
-rw-r--r--navit/tools/gpx2navit_txt/pinatest2.gpx4790
-rw-r--r--navit/tools/gpx2navit_txt/src/config.h.in99
-rw-r--r--navit/tools/gpx2navit_txt/src/elementControl.c245
-rw-r--r--navit/tools/gpx2navit_txt/src/emess.h51
-rw-r--r--navit/tools/gpx2navit_txt/src/errorcode.h41
-rw-r--r--navit/tools/gpx2navit_txt/src/geod_for.c127
-rw-r--r--navit/tools/gpx2navit_txt/src/geod_inv.c92
-rw-r--r--navit/tools/gpx2navit_txt/src/geod_set.c114
-rw-r--r--navit/tools/gpx2navit_txt/src/geodesic.h70
-rw-r--r--navit/tools/gpx2navit_txt/src/gpx2navit_txt.h293
-rw-r--r--navit/tools/gpx2navit_txt/src/main.c414
-rw-r--r--navit/tools/gpx2navit_txt/src/misc.c363
-rw-r--r--navit/tools/gpx2navit_txt/src/parser.c167
-rw-r--r--navit/tools/gpx2navit_txt/src/setmeta.c73
-rw-r--r--navit/tools/gpx2navit_txt/src/setpath.c260
-rw-r--r--navit/tools/gpx2navit_txt/src/setwpt.c71
-rw-r--r--navit/tools/gpx2navit_txt/src/utils.c218
-rw-r--r--navit/tools/latlon2bookmark/Makefile5
-rw-r--r--navit/tools/latlon2bookmark/latlon2bookmark.c140
-rw-r--r--navit/track.c1231
-rw-r--r--navit/track.h66
-rw-r--r--navit/transform.c1624
-rw-r--r--navit/transform.h111
-rw-r--r--navit/types.h42
-rw-r--r--navit/util.c739
-rw-r--r--navit/util.h60
-rw-r--r--navit/vehicle.c750
-rw-r--r--navit/vehicle.h65
-rw-r--r--navit/vehicle/android/CMakeLists.txt1
-rw-r--r--navit/vehicle/android/vehicle_android.c296
-rw-r--r--navit/vehicle/demo/CMakeLists.txt1
-rw-r--r--navit/vehicle/demo/vehicle_demo.c304
-rw-r--r--navit/vehicle/file/CMakeLists.txt7
-rw-r--r--navit/vehicle/file/vehicle_file.c1054
-rw-r--r--navit/vehicle/file/vehicle_pipe.c27
-rw-r--r--navit/vehicle/file/vehicle_serial.c27
-rw-r--r--navit/vehicle/file/vehicle_socket.c27
-rw-r--r--navit/vehicle/gpsd/CMakeLists.txt8
-rw-r--r--navit/vehicle/gpsd/vehicle_gpsd.c475
-rw-r--r--navit/vehicle/gpsd_dbus/CMakeLists.txt2
-rw-r--r--navit/vehicle/gpsd_dbus/vehicle_gpsd_dbus.c248
-rw-r--r--navit/vehicle/gypsy/CMakeLists.txt2
-rw-r--r--navit/vehicle/gypsy/vehicle_gypsy.c497
-rw-r--r--navit/vehicle/iphone/CMakeLists.txt2
-rw-r--r--navit/vehicle/iphone/corelocation.h62
-rw-r--r--navit/vehicle/iphone/corelocation.m114
-rw-r--r--navit/vehicle/iphone/vehicle_iphone.c165
-rw-r--r--navit/vehicle/maemo/CMakeLists.txt2
-rw-r--r--navit/vehicle/maemo/vehicle_maemo.c329
-rw-r--r--navit/vehicle/null/CMakeLists.txt1
-rw-r--r--navit/vehicle/null/vehicle_null.c183
-rw-r--r--navit/vehicle/qt5/CMakeLists.txt6
-rw-r--r--navit/vehicle/qt5/vehicle_qt5.cpp296
-rw-r--r--navit/vehicle/qt5/vehicle_qt5.h74
-rw-r--r--navit/vehicle/webos/CMakeLists.txt1
-rw-r--r--navit/vehicle/webos/bluetooth.c690
-rw-r--r--navit/vehicle/webos/bluetooth.h6
-rw-r--r--navit/vehicle/webos/cJSON.c514
-rw-r--r--navit/vehicle/webos/cJSON.h127
-rw-r--r--navit/vehicle/webos/vehicle_webos.c386
-rw-r--r--navit/vehicle/webos/vehicle_webos.h37
-rw-r--r--navit/vehicle/wince/CMakeLists.txt1
-rw-r--r--navit/vehicle/wince/vehicle_wince.c955
-rw-r--r--navit/vehicleprofile.c324
-rw-r--r--navit/vehicleprofile.h70
-rw-r--r--navit/version.h.in2
-rw-r--r--navit/window.h27
-rw-r--r--navit/xmlconfig.c1390
-rw-r--r--navit/xmlconfig.h121
-rw-r--r--navit/xslt/README-new-files.txt3
-rw-r--r--navit/xslt/android.xslt131
-rw-r--r--navit/xslt/binding_dbus.xslt6
-rw-r--r--navit/xslt/cursor_scale.xslt41
-rw-r--r--navit/xslt/default_plugins.xslt21
-rw-r--r--navit/xslt/gui_gtk.xslt16
-rw-r--r--navit/xslt/iphone.xslt41
-rw-r--r--navit/xslt/map_sdcard_navitmap_bin.xslt6
-rw-r--r--navit/xslt/map_secondary_sdcard_navitmap_bin.xslt8
-rw-r--r--navit/xslt/navit_drag_bitmap.xslt6
-rw-r--r--navit/xslt/null.xslt6
-rw-r--r--navit/xslt/openmoko.xslt7
-rw-r--r--navit/xslt/osd_android.xslt8
-rw-r--r--navit/xslt/osd_enable_zoom.xslt6
-rw-r--r--navit/xslt/osd_minimum.xslt32
-rw-r--r--navit/xslt/pedestrian.xslt19
-rw-r--r--navit/xslt/pedestrian_button.xslt18
-rw-r--r--navit/xslt/pedestrian_plugin.xslt9
-rw-r--r--navit/xslt/plugin_menu.xslt21
-rw-r--r--navit/xslt/sailfish_cursor.xslt114
-rw-r--r--navit/xslt/sailfish_disable.xslt56
-rw-r--r--navit/xslt/sailfish_gui.xslt35
-rw-r--r--navit/xslt/sailfish_mapset.xslt32
-rw-r--r--navit/xslt/sailfish_osd.xslt38
-rw-r--r--navit/xslt/sailfish_qt5.xslt42
-rw-r--r--navit/xslt/sailfish_svg.xslt34
-rw-r--r--navit/xslt/samplemap.xslt7
-rw-r--r--navit/xslt/speech_espeak.xslt6
-rw-r--r--navit/xslt/tomtom.xslt62
-rw-r--r--navit/xslt/vehicle_null.xslt6
-rw-r--r--navit/xslt/windows.xslt12
-rw-r--r--navit/zipfile.h177
-rw-r--r--navitProxy_8h_source.html (renamed from html/navitProxy_8h_source.html)0
-rw-r--r--navit_8h_source.html (renamed from html/navit_8h_source.html)0
-rw-r--r--navit__lfs_8h_source.html (renamed from html/navit__lfs_8h_source.html)0
-rw-r--r--navit__nls_8h_source.html (renamed from html/navit__nls_8h_source.html)0
-rw-r--r--navtree.css (renamed from html/navtree.css)0
-rw-r--r--navtree.js (renamed from html/navtree.js)0
-rw-r--r--navtreeindex0.js (renamed from html/navtreeindex0.js)0
-rw-r--r--navtreeindex1.js (renamed from html/navtreeindex1.js)0
-rw-r--r--navtreeindex10.js (renamed from html/navtreeindex10.js)0
-rw-r--r--navtreeindex11.js (renamed from html/navtreeindex11.js)0
-rw-r--r--navtreeindex12.js (renamed from html/navtreeindex12.js)0
-rw-r--r--navtreeindex13.js (renamed from html/navtreeindex13.js)0
-rw-r--r--navtreeindex14.js (renamed from html/navtreeindex14.js)0
-rw-r--r--navtreeindex15.js (renamed from html/navtreeindex15.js)0
-rw-r--r--navtreeindex16.js (renamed from html/navtreeindex16.js)0
-rw-r--r--navtreeindex17.js (renamed from html/navtreeindex17.js)0
-rw-r--r--navtreeindex18.js (renamed from html/navtreeindex18.js)0
-rw-r--r--navtreeindex19.js (renamed from html/navtreeindex19.js)0
-rw-r--r--navtreeindex2.js (renamed from html/navtreeindex2.js)0
-rw-r--r--navtreeindex20.js (renamed from html/navtreeindex20.js)0
-rw-r--r--navtreeindex21.js (renamed from html/navtreeindex21.js)0
-rw-r--r--navtreeindex22.js (renamed from html/navtreeindex22.js)0
-rw-r--r--navtreeindex23.js (renamed from html/navtreeindex23.js)0
-rw-r--r--navtreeindex24.js (renamed from html/navtreeindex24.js)0
-rw-r--r--navtreeindex25.js (renamed from html/navtreeindex25.js)0
-rw-r--r--navtreeindex26.js (renamed from html/navtreeindex26.js)0
-rw-r--r--navtreeindex3.js (renamed from html/navtreeindex3.js)0
-rw-r--r--navtreeindex4.js (renamed from html/navtreeindex4.js)0
-rw-r--r--navtreeindex5.js (renamed from html/navtreeindex5.js)0
-rw-r--r--navtreeindex6.js (renamed from html/navtreeindex6.js)0
-rw-r--r--navtreeindex7.js (renamed from html/navtreeindex7.js)0
-rw-r--r--navtreeindex8.js (renamed from html/navtreeindex8.js)0
-rw-r--r--navtreeindex9.js (renamed from html/navtreeindex9.js)0
-rw-r--r--ngqpoint_8h_source.html (renamed from html/ngqpoint_8h_source.html)0
-rw-r--r--open.png (renamed from html/open.png)bin123 -> 123 bytes
-rw-r--r--os2compat_8h_source.html (renamed from html/os2compat_8h_source.html)0
-rw-r--r--osd_8h_source.html (renamed from html/osd_8h_source.html)0
-rw-r--r--osmformat_8pb-c_8h_source.html (renamed from html/osmformat_8pb-c_8h_source.html)0
-rw-r--r--pages.html (renamed from html/pages.html)0
-rw-r--r--param_8h_source.html (renamed from html/param_8h_source.html)0
-rw-r--r--phoneme_8h_source.html (renamed from html/phoneme_8h_source.html)0
-rw-r--r--phrase_8h_source.html (renamed from html/phrase_8h_source.html)0
-rw-r--r--plugin_8h_source.html (renamed from html/plugin_8h_source.html)0
-rw-r--r--plugin__def_8h_source.html (renamed from html/plugin__def_8h_source.html)0
-rw-r--r--plural-exp_8h_source.html (renamed from html/plural-exp_8h_source.html)0
-rw-r--r--png_8h_source.html (renamed from html/png_8h_source.html)0
-rw-r--r--pngconf_8h_source.html (renamed from html/pngconf_8h_source.html)0
-rw-r--r--po/CMakeLists.txt90
-rw-r--r--po/af.po.in2754
-rw-r--r--po/ar.po.in2769
-rw-r--r--po/ast.po.in2748
-rw-r--r--po/be.po.in2743
-rw-r--r--po/bg.po.in2743
-rw-r--r--po/bs.po.in2744
-rw-r--r--po/ca.po.in2759
-rw-r--r--po/ckb.po.in2739
-rw-r--r--po/cs.po.in2787
-rw-r--r--po/cy.po.in2744
-rw-r--r--po/da.po.in2766
-rw-r--r--po/de.po.in2845
-rw-r--r--po/de_CH.po.in2739
-rw-r--r--po/el.po.in2752
-rw-r--r--po/en.po.in2736
-rw-r--r--po/en_AU.po.in2746
-rw-r--r--po/en_CA.po.in2739
-rw-r--r--po/en_GB.po.in2788
-rw-r--r--po/eo.po.in2752
-rw-r--r--po/es.po.in2794
-rw-r--r--po/et.po.in2770
-rw-r--r--po/eu.po.in2749
-rw-r--r--po/fa.po.in2741
-rw-r--r--po/fi.po.in2755
-rw-r--r--po/fil.po.in2743
-rw-r--r--po/fo.po.in2745
-rw-r--r--po/fr.po.in2822
-rw-r--r--po/fr_CH.po.in2752
-rw-r--r--po/fy.po.in2739
-rw-r--r--po/gl.po.in2749
-rw-r--r--po/he.po.in2752
-rw-r--r--po/hi.po.in2745
-rw-r--r--po/hr.po.in2754
-rw-r--r--po/hu.po.in2778
-rw-r--r--po/id.po.in2751
-rw-r--r--po/it.po.in2783
-rw-r--r--po/ja.po.in2741
-rw-r--r--po/jv.po.in2745
-rw-r--r--po/kk.po.in2739
-rw-r--r--po/kn.po.in2739
-rw-r--r--po/ko.po.in2736
-rw-r--r--po/ku.po.in2739
-rw-r--r--po/lb.po.in2739
-rw-r--r--po/lt.po.in2777
-rw-r--r--po/lv.po.in2775
-rw-r--r--po/mk.po.in2755
-rw-r--r--po/ml.po.in2766
-rw-r--r--po/mn.po.in2739
-rw-r--r--po/mr.po.in2739
-rw-r--r--po/nb.po.in2756
-rw-r--r--po/nds.po.in2756
-rw-r--r--po/nl.po.in2797
-rw-r--r--po/nn.po.in2746
-rw-r--r--po/pl.po.in2788
-rw-r--r--po/pms.po.in2739
-rw-r--r--po/pt.po.in2826
-rw-r--r--po/pt_BR.po.in2785
-rw-r--r--po/ro.po.in2760
-rw-r--r--po/ru.po.in2804
-rw-r--r--po/sc.po.in2748
-rw-r--r--po/si.po.in2747
-rw-r--r--po/sk.po.in2779
-rw-r--r--po/sl.po.in2748
-rw-r--r--po/sq.po.in2742
-rw-r--r--po/sr.po.in2778
-rw-r--r--po/sv.po.in2746
-rw-r--r--po/sw.po.in2745
-rw-r--r--po/ta.po.in2741
-rw-r--r--po/te.po.in2741
-rw-r--r--po/th.po.in2738
-rw-r--r--po/tr.po.in2780
-rw-r--r--po/uk.po.in2758
-rw-r--r--po/ur.po.in2751
-rw-r--r--po/vi.po.in2744
-rw-r--r--po/zh_CN.po.in2748
-rw-r--r--po/zh_HK.po.in2750
-rw-r--r--po/zh_TW.po.in2756
-rw-r--r--point_8h_source.html (renamed from html/point_8h_source.html)0
-rw-r--r--popup_8h_source.html (renamed from html/popup_8h_source.html)0
-rw-r--r--portaudio18_8h_source.html (renamed from html/portaudio18_8h_source.html)0
-rw-r--r--portaudio19_8h.html (renamed from html/portaudio19_8h.html)0
-rw-r--r--portaudio19_8h.js (renamed from html/portaudio19_8h.js)0
-rw-r--r--portaudio19_8h_source.html (renamed from html/portaudio19_8h_source.html)0
-rw-r--r--portaudio_8h_source.html (renamed from html/portaudio_8h_source.html)0
-rw-r--r--printf-args_8h_source.html (renamed from html/printf-args_8h_source.html)0
-rw-r--r--printf-parse_8h_source.html (renamed from html/printf-parse_8h_source.html)0
-rw-r--r--process_8h_source.html (renamed from html/process_8h_source.html)0
-rw-r--r--profile_8h_source.html (renamed from html/profile_8h_source.html)0
-rw-r--r--projection_8h_source.html (renamed from html/projection_8h_source.html)0
-rw-r--r--protobuf-c-private_8h_source.html (renamed from html/protobuf-c-private_8h_source.html)0
-rw-r--r--protobuf-c_8h_source.html (renamed from html/protobuf-c_8h_source.html)0
-rw-r--r--qml_2proxy_8h_source.html (renamed from html/qml_2proxy_8h_source.html)0
-rw-r--r--qml__bookmark_8h_source.html (renamed from html/qml__bookmark_8h_source.html)0
-rw-r--r--qml__map_8h_source.html (renamed from html/qml__map_8h_source.html)0
-rw-r--r--qml__poi_8h_source.html (renamed from html/qml__poi_8h_source.html)0
-rw-r--r--qml__search_8h_source.html (renamed from html/qml__search_8h_source.html)0
-rw-r--r--qml__vehicle_8h_source.html (renamed from html/qml__vehicle_8h_source.html)0
-rw-r--r--qt5__qml_2proxy_8h_source.html (renamed from html/qt5__qml_2proxy_8h_source.html)0
-rw-r--r--quadtree_8h_source.html (renamed from html/quadtree_8h_source.html)0
-rw-r--r--raster_8h_source.html (renamed from html/raster_8h_source.html)0
-rw-r--r--relocatable_8h_source.html (renamed from html/relocatable_8h_source.html)0
-rw-r--r--resize.js (renamed from html/resize.js)0
-rw-r--r--roadprofile_8h_source.html (renamed from html/roadprofile_8h_source.html)0
-rw-r--r--routeProxy_8h_source.html (renamed from html/routeProxy_8h_source.html)0
-rw-r--r--route_8c.html (renamed from html/route_8c.html)0
-rw-r--r--route_8c.js (renamed from html/route_8c.js)0
-rw-r--r--route_8h.html (renamed from html/route_8h.html)0
-rw-r--r--route_8h.js (renamed from html/route_8h.js)0
-rw-r--r--route_8h_source.html (renamed from html/route_8h_source.html)0
-rw-r--r--searchProxy_8h_source.html (renamed from html/searchProxy_8h_source.html)0
-rw-r--r--search_8h_source.html (renamed from html/search_8h_source.html)0
-rw-r--r--search__houseno__interpol_8h_source.html (renamed from html/search__houseno__interpol_8h_source.html)0
-rw-r--r--serial__io_8h_source.html (renamed from html/serial__io_8h_source.html)0
-rw-r--r--shapefil_8h_source.html (renamed from html/shapefil_8h_source.html)0
-rw-r--r--signal_8h_source.html (renamed from html/signal_8h_source.html)0
-rw-r--r--sintab_8h_source.html (renamed from html/sintab_8h_source.html)0
-rw-r--r--speak__lib_8h_source.html (renamed from html/speak__lib_8h_source.html)0
-rw-r--r--speech_8h_source.html (renamed from html/speech_8h_source.html)0
-rw-r--r--start__real_8h_source.html (renamed from html/start__real_8h_source.html)0
-rw-r--r--stat_8h_source.html (renamed from html/stat_8h_source.html)0
-rw-r--r--stdint_8h_source.html (renamed from html/stdint_8h_source.html)0
-rw-r--r--structACCENTS.html (renamed from html/structACCENTS.html)0
-rw-r--r--structACCENTS.js (renamed from html/structACCENTS.js)0
-rw-r--r--structAllocator.html (renamed from html/structAllocator.html)0
-rw-r--r--structAllocator.js (renamed from html/structAllocator.js)0
-rw-r--r--structCHANGEPH.html (renamed from html/structCHANGEPH.html)0
-rw-r--r--structCHANGEPH.js (renamed from html/structCHANGEPH.js)0
-rw-r--r--structDBFInfo.html (renamed from html/structDBFInfo.html)0
-rw-r--r--structDBFInfo.js (renamed from html/structDBFInfo.js)0
-rw-r--r--structEMESS.html (renamed from html/structEMESS.html)0
-rw-r--r--structEMESS.js (renamed from html/structEMESS.js)0
-rw-r--r--structInstanceData.html (renamed from html/structInstanceData.html)0
-rw-r--r--structInstanceData.js (renamed from html/structInstanceData.js)0
-rw-r--r--structLANGUAGE__OPTIONS.html (renamed from html/structLANGUAGE__OPTIONS.html)0
-rw-r--r--structLANGUAGE__OPTIONS.js (renamed from html/structLANGUAGE__OPTIONS.js)0
-rw-r--r--structMBROLA__TAB.html (renamed from html/structMBROLA__TAB.html)0
-rw-r--r--structMBROLA__TAB.js (renamed from html/structMBROLA__TAB.js)0
-rw-r--r--structMNEM__TAB.html (renamed from html/structMNEM__TAB.html)0
-rw-r--r--structMNEM__TAB.js (renamed from html/structMNEM__TAB.js)0
-rw-r--r--structMagazine.html (renamed from html/structMagazine.html)0
-rw-r--r--structMagazine.js (renamed from html/structMagazine.js)0
-rw-r--r--structMatchRecord.html (renamed from html/structMatchRecord.html)0
-rw-r--r--structMatchRecord.js (renamed from html/structMatchRecord.js)0
-rw-r--r--structNavitObject.html (renamed from html/structNavitObject.html)0
-rw-r--r--structNavitObject.js (renamed from html/structNavitObject.js)0
-rw-r--r--structPARAM__STACK.html (renamed from html/structPARAM__STACK.html)0
-rw-r--r--structPARAM__STACK.js (renamed from html/structPARAM__STACK.js)0
-rw-r--r--structPHONEME__LIST.html (renamed from html/structPHONEME__LIST.html)0
-rw-r--r--structPHONEME__LIST.js (renamed from html/structPHONEME__LIST.js)0
-rw-r--r--structPHONEME__LIST2.html (renamed from html/structPHONEME__LIST2.html)0
-rw-r--r--structPHONEME__LIST2.js (renamed from html/structPHONEME__LIST2.js)0
-rw-r--r--structPHONEME__TAB.html (renamed from html/structPHONEME__TAB.html)0
-rw-r--r--structPHONEME__TAB.js (renamed from html/structPHONEME__TAB.js)0
-rw-r--r--structPHONEME__TAB__LIST.html (renamed from html/structPHONEME__TAB__LIST.html)0
-rw-r--r--structPHONEME__TAB__LIST.js (renamed from html/structPHONEME__TAB__LIST.js)0
-rw-r--r--structPaDeviceInfo.html (renamed from html/structPaDeviceInfo.html)0
-rw-r--r--structPaDeviceInfo.js (renamed from html/structPaDeviceInfo.js)0
-rw-r--r--structPaHostApiInfo.html (renamed from html/structPaHostApiInfo.html)0
-rw-r--r--structPaHostApiInfo.js (renamed from html/structPaHostApiInfo.js)0
-rw-r--r--structPaHostErrorInfo.html (renamed from html/structPaHostErrorInfo.html)0
-rw-r--r--structPaHostErrorInfo.js (renamed from html/structPaHostErrorInfo.js)0
-rw-r--r--structPaStreamCallbackTimeInfo.html (renamed from html/structPaStreamCallbackTimeInfo.html)0
-rw-r--r--structPaStreamCallbackTimeInfo.js (renamed from html/structPaStreamCallbackTimeInfo.js)0
-rw-r--r--structPaStreamInfo.html (renamed from html/structPaStreamInfo.html)0
-rw-r--r--structPaStreamInfo.js (renamed from html/structPaStreamInfo.js)0
-rw-r--r--structPaStreamParameters.html (renamed from html/structPaStreamParameters.html)0
-rw-r--r--structPaStreamParameters.js (renamed from html/structPaStreamParameters.js)0
-rw-r--r--structREPLACE__PHONEMES.html (renamed from html/structREPLACE__PHONEMES.html)0
-rw-r--r--structREPLACE__PHONEMES.js (renamed from html/structREPLACE__PHONEMES.js)0
-rw-r--r--structRESONATOR.html (renamed from html/structRESONATOR.html)0
-rw-r--r--structRESONATOR.js (renamed from html/structRESONATOR.js)0
-rw-r--r--structRGROUP.html (renamed from html/structRGROUP.html)0
-rw-r--r--structRGROUP.js (renamed from html/structRGROUP.js)0
-rw-r--r--structRealIter.html (renamed from html/structRealIter.html)0
-rw-r--r--structRealIter.js (renamed from html/structRealIter.js)0
-rw-r--r--structSAHooks.html (renamed from html/structSAHooks.html)0
-rw-r--r--structSAHooks.js (renamed from html/structSAHooks.js)0
-rw-r--r--structSHPDiskTreeInfo.html (renamed from html/structSHPDiskTreeInfo.html)0
-rw-r--r--structSHPDiskTreeInfo.js (renamed from html/structSHPDiskTreeInfo.js)0
-rw-r--r--structSHPInfo.html (renamed from html/structSHPInfo.html)0
-rw-r--r--structSHPInfo.js (renamed from html/structSHPInfo.js)0
-rw-r--r--structSHPTree.html (renamed from html/structSHPTree.html)0
-rw-r--r--structSHPTree.js (renamed from html/structSHPTree.js)0
-rw-r--r--structSOUND__ICON.html (renamed from html/structSOUND__ICON.html)0
-rw-r--r--structSOUND__ICON.js (renamed from html/structSOUND__ICON.js)0
-rw-r--r--structSPECT__SEQ.html (renamed from html/structSPECT__SEQ.html)0
-rw-r--r--structSPECT__SEQ.js (renamed from html/structSPECT__SEQ.js)0
-rw-r--r--structSPECT__SEQK.html (renamed from html/structSPECT__SEQK.html)0
-rw-r--r--structSPECT__SEQK.js (renamed from html/structSPECT__SEQK.js)0
-rw-r--r--structSPEED__FACTORS.html (renamed from html/structSPEED__FACTORS.html)0
-rw-r--r--structSPEED__FACTORS.js (renamed from html/structSPEED__FACTORS.js)0
-rw-r--r--structSSML__STACK.html (renamed from html/structSSML__STACK.html)0
-rw-r--r--structSSML__STACK.js (renamed from html/structSSML__STACK.js)0
-rw-r--r--structSYLLABLE.html (renamed from html/structSYLLABLE.html)0
-rw-r--r--structSYLLABLE.js (renamed from html/structSYLLABLE.js)0
-rw-r--r--structSliceConfig.html (renamed from html/structSliceConfig.html)0
-rw-r--r--structSliceConfig.js (renamed from html/structSliceConfig.js)0
-rw-r--r--structSmcBranch.html (renamed from html/structSmcBranch.html)0
-rw-r--r--structSmcBranch.js (renamed from html/structSmcBranch.js)0
-rw-r--r--structSmcEntry.html (renamed from html/structSmcEntry.html)0
-rw-r--r--structSmcEntry.js (renamed from html/structSmcEntry.js)0
-rw-r--r--structTONE__HEAD.html (renamed from html/structTONE__HEAD.html)0
-rw-r--r--structTONE__HEAD.js (renamed from html/structTONE__HEAD.js)0
-rw-r--r--structTONE__NUCLEUS.html (renamed from html/structTONE__NUCLEUS.html)0
-rw-r--r--structTONE__NUCLEUS.js (renamed from html/structTONE__NUCLEUS.js)0
-rw-r--r--structThreadMemory.html (renamed from html/structThreadMemory.html)0
-rw-r--r--structThreadMemory.js (renamed from html/structThreadMemory.js)0
-rw-r--r--structTranslator.html (renamed from html/structTranslator.html)0
-rw-r--r--structTranslator.js (renamed from html/structTranslator.js)0
-rw-r--r--structWGEN__DATA.html (renamed from html/structWGEN__DATA.html)0
-rw-r--r--structWGEN__DATA.js (renamed from html/structWGEN__DATA.js)0
-rw-r--r--structWORD__TAB.html (renamed from html/structWORD__TAB.html)0
-rw-r--r--structWORD__TAB.js (renamed from html/structWORD__TAB.js)0
-rw-r--r--structXPM2BMP__TAG.html (renamed from html/structXPM2BMP__TAG.html)0
-rw-r--r--structXPM2BMP__TAG.js (renamed from html/structXPM2BMP__TAG.js)0
-rw-r--r--structXPMCOLORENTRY__TAG.html (renamed from html/structXPMCOLORENTRY__TAG.html)0
-rw-r--r--structXPMCOLORENTRY__TAG.js (renamed from html/structXPMCOLORENTRY__TAG.js)0
-rw-r--r--struct__ChunkLink.html (renamed from html/struct__ChunkLink.html)0
-rw-r--r--struct__ChunkLink.js (renamed from html/struct__ChunkLink.js)0
-rw-r--r--struct__GDebugKey.html (renamed from html/struct__GDebugKey.html)0
-rw-r--r--struct__GDebugKey.js (renamed from html/struct__GDebugKey.js)0
-rw-r--r--struct__GError.html (renamed from html/struct__GError.html)0
-rw-r--r--struct__GError.js (renamed from html/struct__GError.js)0
-rw-r--r--struct__GHashNode.html (renamed from html/struct__GHashNode.html)0
-rw-r--r--struct__GHashNode.js (renamed from html/struct__GHashNode.js)0
-rw-r--r--struct__GHashTable.html (renamed from html/struct__GHashTable.html)0
-rw-r--r--struct__GHashTable.js (renamed from html/struct__GHashTable.js)0
-rw-r--r--struct__GHashTableIter.html (renamed from html/struct__GHashTableIter.html)0
-rw-r--r--struct__GHashTableIter.js (renamed from html/struct__GHashTableIter.js)0
-rw-r--r--struct__GList.html (renamed from html/struct__GList.html)0
-rw-r--r--struct__GList.js (renamed from html/struct__GList.js)0
-rw-r--r--struct__GMemChunk.html (renamed from html/struct__GMemChunk.html)0
-rw-r--r--struct__GMemChunk.js (renamed from html/struct__GMemChunk.js)0
-rw-r--r--struct__GMemVTable.html (renamed from html/struct__GMemVTable.html)0
-rw-r--r--struct__GMemVTable.js (renamed from html/struct__GMemVTable.js)0
-rw-r--r--struct__GSList.html (renamed from html/struct__GSList.html)0
-rw-r--r--struct__GSList.js (renamed from html/struct__GSList.js)0
-rw-r--r--struct__GTimeVal.html (renamed from html/struct__GTimeVal.html)0
-rw-r--r--struct__GTimeVal.js (renamed from html/struct__GTimeVal.js)0
-rw-r--r--struct__GTrashStack.html (renamed from html/struct__GTrashStack.html)0
-rw-r--r--struct__GTrashStack.js (renamed from html/struct__GTrashStack.js)0
-rw-r--r--struct__OSMPBF____Blob.html (renamed from html/struct__OSMPBF____Blob.html)0
-rw-r--r--struct__OSMPBF____Blob.js (renamed from html/struct__OSMPBF____Blob.js)0
-rw-r--r--struct__OSMPBF____BlobHeader.html (renamed from html/struct__OSMPBF____BlobHeader.html)0
-rw-r--r--struct__OSMPBF____BlobHeader.js (renamed from html/struct__OSMPBF____BlobHeader.js)0
-rw-r--r--struct__OSMPBF____ChangeSet.html (renamed from html/struct__OSMPBF____ChangeSet.html)0
-rw-r--r--struct__OSMPBF____ChangeSet.js (renamed from html/struct__OSMPBF____ChangeSet.js)0
-rw-r--r--struct__OSMPBF____DenseInfo.html (renamed from html/struct__OSMPBF____DenseInfo.html)0
-rw-r--r--struct__OSMPBF____DenseInfo.js (renamed from html/struct__OSMPBF____DenseInfo.js)0
-rw-r--r--struct__OSMPBF____DenseNodes.html (renamed from html/struct__OSMPBF____DenseNodes.html)0
-rw-r--r--struct__OSMPBF____DenseNodes.js (renamed from html/struct__OSMPBF____DenseNodes.js)0
-rw-r--r--struct__OSMPBF____HeaderBBox.html (renamed from html/struct__OSMPBF____HeaderBBox.html)0
-rw-r--r--struct__OSMPBF____HeaderBBox.js (renamed from html/struct__OSMPBF____HeaderBBox.js)0
-rw-r--r--struct__OSMPBF____HeaderBlock.html (renamed from html/struct__OSMPBF____HeaderBlock.html)0
-rw-r--r--struct__OSMPBF____HeaderBlock.js (renamed from html/struct__OSMPBF____HeaderBlock.js)0
-rw-r--r--struct__OSMPBF____Info.html (renamed from html/struct__OSMPBF____Info.html)0
-rw-r--r--struct__OSMPBF____Info.js (renamed from html/struct__OSMPBF____Info.js)0
-rw-r--r--struct__OSMPBF____Node.html (renamed from html/struct__OSMPBF____Node.html)0
-rw-r--r--struct__OSMPBF____Node.js (renamed from html/struct__OSMPBF____Node.js)0
-rw-r--r--struct__OSMPBF____PrimitiveBlock.html (renamed from html/struct__OSMPBF____PrimitiveBlock.html)0
-rw-r--r--struct__OSMPBF____PrimitiveBlock.js (renamed from html/struct__OSMPBF____PrimitiveBlock.js)0
-rw-r--r--struct__OSMPBF____PrimitiveGroup.html (renamed from html/struct__OSMPBF____PrimitiveGroup.html)0
-rw-r--r--struct__OSMPBF____PrimitiveGroup.js (renamed from html/struct__OSMPBF____PrimitiveGroup.js)0
-rw-r--r--struct__OSMPBF____Relation.html (renamed from html/struct__OSMPBF____Relation.html)0
-rw-r--r--struct__OSMPBF____Relation.js (renamed from html/struct__OSMPBF____Relation.js)0
-rw-r--r--struct__OSMPBF____StringTable.html (renamed from html/struct__OSMPBF____StringTable.html)0
-rw-r--r--struct__OSMPBF____StringTable.js (renamed from html/struct__OSMPBF____StringTable.js)0
-rw-r--r--struct__OSMPBF____Way.html (renamed from html/struct__OSMPBF____Way.html)0
-rw-r--r--struct__OSMPBF____Way.js (renamed from html/struct__OSMPBF____Way.js)0
-rw-r--r--struct__ProtobufCAllocator.html (renamed from html/struct__ProtobufCAllocator.html)0
-rw-r--r--struct__ProtobufCAllocator.js (renamed from html/struct__ProtobufCAllocator.js)0
-rw-r--r--struct__ProtobufCBinaryData.html (renamed from html/struct__ProtobufCBinaryData.html)0
-rw-r--r--struct__ProtobufCBinaryData.js (renamed from html/struct__ProtobufCBinaryData.js)0
-rw-r--r--struct__ProtobufCBuffer.html (renamed from html/struct__ProtobufCBuffer.html)0
-rw-r--r--struct__ProtobufCBuffer.js (renamed from html/struct__ProtobufCBuffer.js)0
-rw-r--r--struct__ProtobufCBufferSimple.html (renamed from html/struct__ProtobufCBufferSimple.html)0
-rw-r--r--struct__ProtobufCBufferSimple.js (renamed from html/struct__ProtobufCBufferSimple.js)0
-rw-r--r--struct__ProtobufCEnumDescriptor.html (renamed from html/struct__ProtobufCEnumDescriptor.html)0
-rw-r--r--struct__ProtobufCEnumDescriptor.js (renamed from html/struct__ProtobufCEnumDescriptor.js)0
-rw-r--r--struct__ProtobufCEnumValue.html (renamed from html/struct__ProtobufCEnumValue.html)0
-rw-r--r--struct__ProtobufCEnumValue.js (renamed from html/struct__ProtobufCEnumValue.js)0
-rw-r--r--struct__ProtobufCEnumValueIndex.html (renamed from html/struct__ProtobufCEnumValueIndex.html)0
-rw-r--r--struct__ProtobufCEnumValueIndex.js (renamed from html/struct__ProtobufCEnumValueIndex.js)0
-rw-r--r--struct__ProtobufCFieldDescriptor.html (renamed from html/struct__ProtobufCFieldDescriptor.html)0
-rw-r--r--struct__ProtobufCFieldDescriptor.js (renamed from html/struct__ProtobufCFieldDescriptor.js)0
-rw-r--r--struct__ProtobufCIntRange.html (renamed from html/struct__ProtobufCIntRange.html)0
-rw-r--r--struct__ProtobufCIntRange.js (renamed from html/struct__ProtobufCIntRange.js)0
-rw-r--r--struct__ProtobufCMessage.html (renamed from html/struct__ProtobufCMessage.html)0
-rw-r--r--struct__ProtobufCMessage.js (renamed from html/struct__ProtobufCMessage.js)0
-rw-r--r--struct__ProtobufCMessageDescriptor.html (renamed from html/struct__ProtobufCMessageDescriptor.html)0
-rw-r--r--struct__ProtobufCMessageDescriptor.js (renamed from html/struct__ProtobufCMessageDescriptor.js)0
-rw-r--r--struct__ProtobufCMessageUnknownField.html (renamed from html/struct__ProtobufCMessageUnknownField.html)0
-rw-r--r--struct__ProtobufCMessageUnknownField.js (renamed from html/struct__ProtobufCMessageUnknownField.js)0
-rw-r--r--struct__ProtobufCMethodDescriptor.html (renamed from html/struct__ProtobufCMethodDescriptor.html)0
-rw-r--r--struct__ProtobufCMethodDescriptor.js (renamed from html/struct__ProtobufCMethodDescriptor.js)0
-rw-r--r--struct__ProtobufCService.html (renamed from html/struct__ProtobufCService.html)0
-rw-r--r--struct__ProtobufCService.js (renamed from html/struct__ProtobufCService.js)0
-rw-r--r--struct__ProtobufCServiceDescriptor.html (renamed from html/struct__ProtobufCServiceDescriptor.html)0
-rw-r--r--struct__ProtobufCServiceDescriptor.js (renamed from html/struct__ProtobufCServiceDescriptor.js)0
-rw-r--r--struct__ScannedMember.html (renamed from html/struct__ScannedMember.html)0
-rw-r--r--struct__ScannedMember.js (renamed from html/struct__ScannedMember.js)0
-rw-r--r--struct__SlabInfo.html (renamed from html/struct__SlabInfo.html)0
-rw-r--r--struct__SlabInfo.js (renamed from html/struct__SlabInfo.js)0
-rw-r--r--struct__VIDEO__POWER__MANAGEMENT.html (renamed from html/struct__VIDEO__POWER__MANAGEMENT.html)0
-rw-r--r--struct__VIDEO__POWER__MANAGEMENT.js (renamed from html/struct__VIDEO__POWER__MANAGEMENT.js)0
-rw-r--r--struct__finddata__t.html (renamed from html/struct__finddata__t.html)0
-rw-r--r--struct__finddata__t.js (renamed from html/struct__finddata__t.js)0
-rw-r--r--struct__finddatai64__t.html (renamed from html/struct__finddatai64__t.html)0
-rw-r--r--struct__finddatai64__t.js (renamed from html/struct__finddatai64__t.js)0
-rw-r--r--struct__stat.html (renamed from html/struct__stat.html)0
-rw-r--r--struct__stat.js (renamed from html/struct__stat.js)0
-rw-r--r--struct__wfinddata__t.html (renamed from html/struct__wfinddata__t.html)0
-rw-r--r--struct__wfinddata__t.js (renamed from html/struct__wfinddata__t.js)0
-rw-r--r--struct__wfinddatai64__t.html (renamed from html/struct__wfinddatai64__t.html)0
-rw-r--r--struct__wfinddatai64__t.js (renamed from html/struct__wfinddatai64__t.js)0
-rw-r--r--structaction__cb__data.html (renamed from html/structaction__cb__data.html)0
-rw-r--r--structaction__cb__data.js (renamed from html/structaction__cb__data.js)0
-rw-r--r--structalias__map.html (renamed from html/structalias__map.html)0
-rw-r--r--structalias__map.js (renamed from html/structalias__map.js)0
-rw-r--r--structandroid__search__priv.html (renamed from html/structandroid__search__priv.html)0
-rw-r--r--structandroid__search__priv.js (renamed from html/structandroid__search__priv.js)0
-rw-r--r--structannouncement.html (renamed from html/structannouncement.html)0
-rw-r--r--structannouncement.js (renamed from html/structannouncement.js)0
-rw-r--r--structargument.html (renamed from html/structargument.html)0
-rw-r--r--structargument.js (renamed from html/structargument.js)0
-rw-r--r--structarguments.html (renamed from html/structarguments.html)0
-rw-r--r--structarguments.js (renamed from html/structarguments.js)0
-rw-r--r--structassociated__street.html (renamed from html/structassociated__street.html)0
-rw-r--r--structassociated__street.js (renamed from html/structassociated__street.js)0
-rw-r--r--structattr.html (renamed from html/structattr.html)0
-rw-r--r--structattr.js (renamed from html/structattr.js)0
-rw-r--r--structattrObject.html (renamed from html/structattrObject.html)0
-rw-r--r--structattrObject.js (renamed from html/structattrObject.js)0
-rw-r--r--structattr__bin.html (renamed from html/structattr__bin.html)0
-rw-r--r--structattr__bin.js (renamed from html/structattr__bin.js)0
-rw-r--r--structattr__fixme.html (renamed from html/structattr__fixme.html)0
-rw-r--r--structattr__fixme.js (renamed from html/structattr__fixme.js)0
-rw-r--r--structattr__iter.html (renamed from html/structattr__iter.html)0
-rw-r--r--structattr__iter.js (renamed from html/structattr__iter.js)0
-rw-r--r--structattr__mapping.html (renamed from html/structattr__mapping.html)0
-rw-r--r--structattr__mapping.js (renamed from html/structattr__mapping.js)0
-rw-r--r--structattr__name.html (renamed from html/structattr__name.html)0
-rw-r--r--structattr__name.js (renamed from html/structattr__name.js)0
-rw-r--r--structaux__tile.html (renamed from html/structaux__tile.html)0
-rw-r--r--structaux__tile.js (renamed from html/structaux__tile.js)0
-rw-r--r--structauxmap.html (renamed from html/structauxmap.html)0
-rw-r--r--structauxmap.js (renamed from html/structauxmap.js)0
-rw-r--r--structbinding.html (renamed from html/structbinding.html)0
-rw-r--r--structbinding.js (renamed from html/structbinding.js)0
-rw-r--r--structbinfile__hash__entry.html (renamed from html/structbinfile__hash__entry.html)0
-rw-r--r--structbinfile__hash__entry.js (renamed from html/structbinfile__hash__entry.js)0
-rw-r--r--structblock.html (renamed from html/structblock.html)0
-rw-r--r--structblock.js (renamed from html/structblock.js)0
-rw-r--r--structblock__bt__priv.html (renamed from html/structblock__bt__priv.html)0
-rw-r--r--structblock__bt__priv.js (renamed from html/structblock__bt__priv.js)0
-rw-r--r--structblock__data.html (renamed from html/structblock__data.html)0
-rw-r--r--structblock__data.js (renamed from html/structblock__data.js)0
-rw-r--r--structblock__index.html (renamed from html/structblock__index.html)0
-rw-r--r--structblock__index.js (renamed from html/structblock__index.js)0
-rw-r--r--structblock__index__item.html (renamed from html/structblock__index__item.html)0
-rw-r--r--structblock__index__item.js (renamed from html/structblock__index__item.js)0
-rw-r--r--structblock__list.html (renamed from html/structblock__list.html)0
-rw-r--r--structblock__list.js (renamed from html/structblock__list.js)0
-rw-r--r--structblock__offset.html (renamed from html/structblock__offset.html)0
-rw-r--r--structblock__offset.js (renamed from html/structblock__offset.js)0
-rw-r--r--structblock__priv.html (renamed from html/structblock__priv.html)0
-rw-r--r--structblock__priv.js (renamed from html/structblock__priv.js)0
-rw-r--r--structbookmark__item__priv.html (renamed from html/structbookmark__item__priv.html)0
-rw-r--r--structbookmark__item__priv.js (renamed from html/structbookmark__item__priv.js)0
-rw-r--r--structbookmarks.html (renamed from html/structbookmarks.html)0
-rw-r--r--structbookmarks.js (renamed from html/structbookmarks.js)0
-rw-r--r--structboundary.html (renamed from html/structboundary.html)0
-rw-r--r--structboundary.js (renamed from html/structboundary.js)0
-rw-r--r--structbuffer.html (renamed from html/structbuffer.html)0
-rw-r--r--structbuffer.js (renamed from html/structbuffer.js)0
-rw-r--r--structcJSON.html (renamed from html/structcJSON.html)0
-rw-r--r--structcJSON.js (renamed from html/structcJSON.js)0
-rw-r--r--structcJSON__Hooks.html (renamed from html/structcJSON__Hooks.html)0
-rw-r--r--structcJSON__Hooks.js (renamed from html/structcJSON__Hooks.js)0
-rw-r--r--structcache.html (renamed from html/structcache.html)0
-rw-r--r--structcache.js (renamed from html/structcache.js)0
-rw-r--r--structcache__entry.html (renamed from html/structcache__entry.html)0
-rw-r--r--structcache__entry.js (renamed from html/structcache__entry.js)0
-rw-r--r--structcache__entry__list.html (renamed from html/structcache__entry__list.html)0
-rw-r--r--structcache__entry__list.js (renamed from html/structcache__entry__list.js)0
-rw-r--r--structcallback.html (renamed from html/structcallback.html)0
-rw-r--r--structcallback.js (renamed from html/structcallback.js)0
-rw-r--r--structcallback__list.html (renamed from html/structcallback__list.html)0
-rw-r--r--structcallback__list.js (renamed from html/structcallback__list.js)0
-rw-r--r--structcb__hw__state__trail.html (renamed from html/structcb__hw__state__trail.html)0
-rw-r--r--structcb__hw__state__trail.js (renamed from html/structcb__hw__state__trail.js)0
-rw-r--r--structcdf__data.html (renamed from html/structcdf__data.html)0
-rw-r--r--structcdf__data.js (renamed from html/structcdf__data.js)0
-rw-r--r--structcdf__speed.html (renamed from html/structcdf__speed.html)0
-rw-r--r--structcdf__speed.js (renamed from html/structcdf__speed.js)0
-rw-r--r--structch__edge.html (renamed from html/structch__edge.html)0
-rw-r--r--structch__edge.js (renamed from html/structch__edge.js)0
-rw-r--r--structchar__directive.html (renamed from html/structchar__directive.html)0
-rw-r--r--structchar__directive.js (renamed from html/structchar__directive.js)0
-rw-r--r--structchar__directives.html (renamed from html/structchar__directives.html)0
-rw-r--r--structchar__directives.js (renamed from html/structchar__directives.js)0
-rw-r--r--structcircle.html (renamed from html/structcircle.html)0
-rw-r--r--structcircle.js (renamed from html/structcircle.js)0
-rw-r--r--structcmd__interface.html (renamed from html/structcmd__interface.html)0
-rw-r--r--structcmd__interface.js (renamed from html/structcmd__interface.js)0
-rw-r--r--structcoastline__tile.html (renamed from html/structcoastline__tile.html)0
-rw-r--r--structcoastline__tile.js (renamed from html/structcoastline__tile.js)0
-rw-r--r--structcoastline__tile__data.html (renamed from html/structcoastline__tile__data.html)0
-rw-r--r--structcoastline__tile__data.js (renamed from html/structcoastline__tile__data.js)0
-rw-r--r--structcode.html (renamed from html/structcode.html)0
-rw-r--r--structcode.js (renamed from html/structcode.js)0
-rw-r--r--structcolor.html (renamed from html/structcolor.html)0
-rw-r--r--structcolor.js (renamed from html/structcolor.js)0
-rw-r--r--structcommand__saved.html (renamed from html/structcommand__saved.html)0
-rw-r--r--structcommand__saved.js (renamed from html/structcommand__saved.js)0
-rw-r--r--structcommand__saved__cb.html (renamed from html/structcommand__saved__cb.html)0
-rw-r--r--structcommand__saved__cb.js (renamed from html/structcommand__saved__cb.js)0
-rw-r--r--structcommand__table.html (renamed from html/structcommand__table.html)0
-rw-r--r--structcommand__table.js (renamed from html/structcommand__table.js)0
-rw-r--r--structcompass.html (renamed from html/structcompass.html)0
-rw-r--r--structcompass.js (renamed from html/structcompass.js)0
-rw-r--r--structconfig.html (renamed from html/structconfig.html)0
-rw-r--r--structconfigObject.html (renamed from html/structconfigObject.html)0
-rw-r--r--structcontext.html (renamed from html/structcontext.html)0
-rw-r--r--structcontext.js (renamed from html/structcontext.js)0
-rw-r--r--structcontour.html (renamed from html/structcontour.html)0
-rw-r--r--structcontour.js (renamed from html/structcontour.js)0
-rw-r--r--structcoord.html (renamed from html/structcoord.html)0
-rw-r--r--structcoord.js (renamed from html/structcoord.js)0
-rw-r--r--structcoordObject.html (renamed from html/structcoordObject.html)0
-rw-r--r--structcoordObject.js (renamed from html/structcoordObject.js)0
-rw-r--r--structcoord__3d.html (renamed from html/structcoord__3d.html)0
-rw-r--r--structcoord__3d.js (renamed from html/structcoord__3d.js)0
-rw-r--r--structcoord__d.html (renamed from html/structcoord__d.html)0
-rw-r--r--structcoord__d.js (renamed from html/structcoord__d.js)0
-rw-r--r--structcoord__geo.html (renamed from html/structcoord__geo.html)0
-rw-r--r--structcoord__geo.js (renamed from html/structcoord__geo.js)0
-rw-r--r--structcoord__geo__cart.html (renamed from html/structcoord__geo__cart.html)0
-rw-r--r--structcoord__geo__cart.js (renamed from html/structcoord__geo__cart.js)0
-rw-r--r--structcoord__rect.html (renamed from html/structcoord__rect.html)0
-rw-r--r--structcoord__rect.js (renamed from html/structcoord__rect.js)0
-rw-r--r--structcoord__rectObject.html (renamed from html/structcoord__rectObject.html)0
-rw-r--r--structcoord__rectObject.js (renamed from html/structcoord__rectObject.js)0
-rw-r--r--structcountry.html (renamed from html/structcountry.html)0
-rw-r--r--structcountry.js (renamed from html/structcountry.js)0
-rw-r--r--structcountry__search.html (renamed from html/structcountry__search.html)0
-rw-r--r--structcountry__search.js (renamed from html/structcountry__search.js)0
-rw-r--r--structcountry__table.html (renamed from html/structcountry__table.html)0
-rw-r--r--structcountry__table.js (renamed from html/structcountry__table.js)0
-rw-r--r--structcursor.html (renamed from html/structcursor.html)0
-rw-r--r--structcursor.js (renamed from html/structcursor.js)0
-rw-r--r--structdata__window.html (renamed from html/structdata__window.html)0
-rw-r--r--structdata__window.js (renamed from html/structdata__window.js)0
-rw-r--r--structdatawindow.html (renamed from html/structdatawindow.html)0
-rw-r--r--structdatawindow.js (renamed from html/structdatawindow.js)0
-rw-r--r--structdatawindow__methods.html (renamed from html/structdatawindow__methods.html)0
-rw-r--r--structdatawindow__methods.js (renamed from html/structdatawindow__methods.js)0
-rw-r--r--structdatawindow__priv.html (renamed from html/structdatawindow__priv.html)0
-rw-r--r--structdatawindow__priv.js (renamed from html/structdatawindow__priv.js)0
-rw-r--r--structdb__config.html (renamed from html/structdb__config.html)0
-rw-r--r--structdb__config.js (renamed from html/structdb__config.js)0
-rw-r--r--structdbus__callback.html (renamed from html/structdbus__callback.html)0
-rw-r--r--structdbus__callback.js (renamed from html/structdbus__callback.js)0
-rw-r--r--structdbus__method.html (renamed from html/structdbus__method.html)0
-rw-r--r--structdbus__method.js (renamed from html/structdbus__method.js)0
-rw-r--r--structdefault__flags.html (renamed from html/structdefault__flags.html)0
-rw-r--r--structdefault__flags.js (renamed from html/structdefault__flags.js)0
-rw-r--r--structdiagram__point.html (renamed from html/structdiagram__point.html)0
-rw-r--r--structdiagram__point.js (renamed from html/structdiagram__point.js)0
-rw-r--r--structdisplay__context.html (renamed from html/structdisplay__context.html)0
-rw-r--r--structdisplay__context.js (renamed from html/structdisplay__context.js)0
-rw-r--r--structdisplayitem.html (renamed from html/structdisplayitem.html)0
-rw-r--r--structdisplayitem.js (renamed from html/structdisplayitem.js)0
-rw-r--r--structdisplaylist.html (renamed from html/structdisplaylist.html)0
-rw-r--r--structdisplaylist.js (renamed from html/structdisplaylist.js)0
-rw-r--r--structdisplaylist__handle.html (renamed from html/structdisplaylist__handle.html)0
-rw-r--r--structdisplaylist__handle.js (renamed from html/structdisplaylist__handle.js)0
-rw-r--r--structdisplaylist__icon__cache.html (renamed from html/structdisplaylist__icon__cache.html)0
-rw-r--r--structdisplaylist__icon__cache.js (renamed from html/structdisplaylist__icon__cache.js)0
-rw-r--r--structdiv__flags__map.html (renamed from html/structdiv__flags__map.html)0
-rw-r--r--structdiv__flags__map.js (renamed from html/structdiv__flags__map.js)0
-rw-r--r--structdraw__info.html (renamed from html/structdraw__info.html)0
-rw-r--r--structdraw__info.js (renamed from html/structdraw__info.js)0
-rw-r--r--structdraw__polyline__context.html (renamed from html/structdraw__polyline__context.html)0
-rw-r--r--structdraw__polyline__context.js (renamed from html/structdraw__polyline__context.js)0
-rw-r--r--structdraw__polyline__shape.html (renamed from html/structdraw__polyline__shape.html)0
-rw-r--r--structdraw__polyline__shape.js (renamed from html/structdraw__polyline__shape.js)0
-rw-r--r--structduplicate.html (renamed from html/structduplicate.html)0
-rw-r--r--structduplicate.js (renamed from html/structduplicate.js)0
-rw-r--r--structedge.html (renamed from html/structedge.html)0
-rw-r--r--structedge.js (renamed from html/structedge.js)0
-rw-r--r--structedge__hash__item.html (renamed from html/structedge__hash__item.html)0
-rw-r--r--structedge__hash__item.js (renamed from html/structedge__hash__item.js)0
-rw-r--r--structelement.html (renamed from html/structelement.html)0
-rw-r--r--structelement.js (renamed from html/structelement.js)0
-rw-r--r--structelement__func.html (renamed from html/structelement__func.html)0
-rw-r--r--structelement__func.js (renamed from html/structelement__func.js)0
-rw-r--r--structespeak__EVENT.html (renamed from html/structespeak__EVENT.html)0
-rw-r--r--structespeak__EVENT.js (renamed from html/structespeak__EVENT.js)0
-rw-r--r--structespeak__VOICE.html (renamed from html/structespeak__VOICE.html)0
-rw-r--r--structespeak__VOICE.js (renamed from html/structespeak__VOICE.js)0
-rw-r--r--structevent__idle.html (renamed from html/structevent__idle.html)0
-rw-r--r--structevent__idle.js (renamed from html/structevent__idle.js)0
-rw-r--r--structevent__methods.html (renamed from html/structevent__methods.html)0
-rw-r--r--structevent__methods.js (renamed from html/structevent__methods.js)0
-rw-r--r--structevent__priv.html (renamed from html/structevent__priv.html)0
-rw-r--r--structevent__priv.js (renamed from html/structevent__priv.js)0
-rw-r--r--structevent__timeout.html (renamed from html/structevent__timeout.html)0
-rw-r--r--structevent__timeout.js (renamed from html/structevent__timeout.js)0
-rw-r--r--structevent__watch.html (renamed from html/structevent__watch.html)0
-rw-r--r--structevent__watch.js (renamed from html/structevent__watch.js)0
-rw-r--r--structexpression.html (renamed from html/structexpression.html)0
-rw-r--r--structexpression.js (renamed from html/structexpression.js)0
-rw-r--r--structezxml.html (renamed from html/structezxml.html)0
-rw-r--r--structezxml.js (renamed from html/structezxml.js)0
-rw-r--r--structezxml__root.html (renamed from html/structezxml__root.html)0
-rw-r--r--structezxml__root.js (renamed from html/structezxml__root.js)0
-rw-r--r--structfat__block.html (renamed from html/structfat__block.html)0
-rw-r--r--structfat__block.js (renamed from html/structfat__block.js)0
-rw-r--r--structfibheap.html (renamed from html/structfibheap.html)0
-rw-r--r--structfibheap.js (renamed from html/structfibheap.js)0
-rw-r--r--structfibheap__el.html (renamed from html/structfibheap__el.html)0
-rw-r--r--structfibheap__el.js (renamed from html/structfibheap__el.js)0
-rw-r--r--structfile.html (renamed from html/structfile.html)0
-rw-r--r--structfile.js (renamed from html/structfile.js)0
-rw-r--r--structfile__cache__id.html (renamed from html/structfile__cache__id.html)0
-rw-r--r--structfile__cache__id.js (renamed from html/structfile__cache__id.js)0
-rw-r--r--structfile__header.html (renamed from html/structfile__header.html)0
-rw-r--r--structfile__header.js (renamed from html/structfile__header.js)0
-rw-r--r--structfile__wordexp.html (renamed from html/structfile__wordexp.html)0
-rw-r--r--structfile__wordexp.js (renamed from html/structfile__wordexp.js)0
-rw-r--r--structfiles__relation__processing.html (renamed from html/structfiles__relation__processing.html)0
-rw-r--r--structfiles__relation__processing.js (renamed from html/structfiles__relation__processing.js)0
-rw-r--r--structfilter.html (renamed from html/structfilter.html)0
-rw-r--r--structfilter.js (renamed from html/structfilter.js)0
-rw-r--r--structfilter__entry.html (renamed from html/structfilter__entry.html)0
-rw-r--r--structfilter__entry.js (renamed from html/structfilter__entry.js)0
-rw-r--r--structfont__freetype__font.html (renamed from html/structfont__freetype__font.html)0
-rw-r--r--structfont__freetype__font.js (renamed from html/structfont__freetype__font.js)0
-rw-r--r--structfont__freetype__glyph.html (renamed from html/structfont__freetype__glyph.html)0
-rw-r--r--structfont__freetype__glyph.js (renamed from html/structfont__freetype__glyph.js)0
-rw-r--r--structfont__freetype__methods.html (renamed from html/structfont__freetype__methods.html)0
-rw-r--r--structfont__freetype__methods.js (renamed from html/structfont__freetype__methods.js)0
-rw-r--r--structfont__freetype__text.html (renamed from html/structfont__freetype__text.html)0
-rw-r--r--structfont__freetype__text.js (renamed from html/structfont__freetype__text.js)0
-rw-r--r--structfont__priv.html (renamed from html/structfont__priv.html)0
-rw-r--r--structfont__priv.js (renamed from html/structfont__priv.js)0
-rw-r--r--structform.html (renamed from html/structform.html)0
-rw-r--r--structform.js (renamed from html/structform.js)0
-rw-r--r--structformer__destination.html (renamed from html/structformer__destination.html)0
-rw-r--r--structformer__destination.js (renamed from html/structformer__destination.js)0
-rw-r--r--structframe__t.html (renamed from html/structframe__t.html)0
-rw-r--r--structframe__t.js (renamed from html/structframe__t.js)0
-rw-r--r--structframe__t2.html (renamed from html/structframe__t2.html)0
-rw-r--r--structframe__t2.js (renamed from html/structframe__t2.js)0
-rw-r--r--structframeref__t.html (renamed from html/structframeref__t.html)0
-rw-r--r--structframeref__t.js (renamed from html/structframeref__t.js)0
-rw-r--r--structg2sattr.html (renamed from html/structg2sattr.html)0
-rw-r--r--structg2sattr.js (renamed from html/structg2sattr.js)0
-rw-r--r--structg2scolumns.html (renamed from html/structg2scolumns.html)0
-rw-r--r--structg2scolumns.js (renamed from html/structg2scolumns.js)0
-rw-r--r--structg2sprop.html (renamed from html/structg2sprop.html)0
-rw-r--r--structg2sprop.js (renamed from html/structg2sprop.js)0
-rw-r--r--structg2sstats.html (renamed from html/structg2sstats.html)0
-rw-r--r--structg2sstats.js (renamed from html/structg2sstats.js)0
-rw-r--r--structgar2nav__conv.html (renamed from html/structgar2nav__conv.html)0
-rw-r--r--structgar2nav__conv.js (renamed from html/structgar2nav__conv.js)0
-rw-r--r--structgar2navit.html (renamed from html/structgar2navit.html)0
-rw-r--r--structgar2navit.js (renamed from html/structgar2navit.js)0
-rw-r--r--structgeodesic.html (renamed from html/structgeodesic.html)0
-rw-r--r--structgeodesic.js (renamed from html/structgeodesic.js)0
-rw-r--r--structgeom__poly__segment.html (renamed from html/structgeom__poly__segment.html)0
-rw-r--r--structgeom__poly__segment.js (renamed from html/structgeom__poly__segment.js)0
-rw-r--r--structglob__t.html (renamed from html/structglob__t.html)0
-rw-r--r--structglob__t.js (renamed from html/structglob__t.js)0
-rw-r--r--structgps__sat.html (renamed from html/structgps__sat.html)0
-rw-r--r--structgps__sat.js (renamed from html/structgps__sat.js)0
-rw-r--r--structgps__status.html (renamed from html/structgps__status.html)0
-rw-r--r--structgps__status.js (renamed from html/structgps__status.js)0
-rw-r--r--structgraphics.html (renamed from html/structgraphics.html)0
-rw-r--r--structgraphics.js (renamed from html/structgraphics.js)0
-rw-r--r--structgraphics__data__image.html (renamed from html/structgraphics__data__image.html)0
-rw-r--r--structgraphics__data__image.js (renamed from html/structgraphics__data__image.js)0
-rw-r--r--structgraphics__font.html (renamed from html/structgraphics__font.html)0
-rw-r--r--structgraphics__font.js (renamed from html/structgraphics__font.js)0
-rw-r--r--structgraphics__font__methods.html (renamed from html/structgraphics__font__methods.html)0
-rw-r--r--structgraphics__font__methods.js (renamed from html/structgraphics__font__methods.js)0
-rw-r--r--structgraphics__font__priv.html (renamed from html/structgraphics__font__priv.html)0
-rw-r--r--structgraphics__font__priv.js (renamed from html/structgraphics__font__priv.js)0
-rw-r--r--structgraphics__gc.html (renamed from html/structgraphics__gc.html)0
-rw-r--r--structgraphics__gc.js (renamed from html/structgraphics__gc.js)0
-rw-r--r--structgraphics__gc__methods.html (renamed from html/structgraphics__gc__methods.html)0
-rw-r--r--structgraphics__gc__methods.js (renamed from html/structgraphics__gc__methods.js)0
-rw-r--r--structgraphics__gc__priv.html (renamed from html/structgraphics__gc__priv.html)0
-rw-r--r--structgraphics__gc__priv.js (renamed from html/structgraphics__gc__priv.js)0
-rw-r--r--structgraphics__image.html (renamed from html/structgraphics__image.html)0
-rw-r--r--structgraphics__image.js (renamed from html/structgraphics__image.js)0
-rw-r--r--structgraphics__image__buffer.html (renamed from html/structgraphics__image__buffer.html)0
-rw-r--r--structgraphics__image__buffer.js (renamed from html/structgraphics__image__buffer.js)0
-rw-r--r--structgraphics__image__methods.html (renamed from html/structgraphics__image__methods.html)0
-rw-r--r--structgraphics__image__methods.js (renamed from html/structgraphics__image__methods.js)0
-rw-r--r--structgraphics__image__priv.html (renamed from html/structgraphics__image__priv.html)0
-rw-r--r--structgraphics__image__priv.js (renamed from html/structgraphics__image__priv.js)0
-rw-r--r--structgraphics__keyboard.html (renamed from html/structgraphics__keyboard.html)0
-rw-r--r--structgraphics__keyboard.js (renamed from html/structgraphics__keyboard.js)0
-rw-r--r--structgraphics__methods.html (renamed from html/structgraphics__methods.html)0
-rw-r--r--structgraphics__methods.js (renamed from html/structgraphics__methods.js)0
-rw-r--r--structgraphics__opengl__platform.html (renamed from html/structgraphics__opengl__platform.html)0
-rw-r--r--structgraphics__opengl__platform.js (renamed from html/structgraphics__opengl__platform.js)0
-rw-r--r--structgraphics__opengl__platform__methods.html (renamed from html/structgraphics__opengl__platform__methods.html)0
-rw-r--r--structgraphics__opengl__platform__methods.js (renamed from html/structgraphics__opengl__platform__methods.js)0
-rw-r--r--structgraphics__opengl__window__system.html (renamed from html/structgraphics__opengl__window__system.html)0
-rw-r--r--structgraphics__opengl__window__system.js (renamed from html/structgraphics__opengl__window__system.js)0
-rw-r--r--structgraphics__opengl__window__system__methods.html (renamed from html/structgraphics__opengl__window__system__methods.html)0
-rw-r--r--structgraphics__opengl__window__system__methods.js (renamed from html/structgraphics__opengl__window__system__methods.js)0
-rw-r--r--structgraphics__priv.html (renamed from html/structgraphics__priv.html)0
-rw-r--r--structgraphics__priv.js (renamed from html/structgraphics__priv.js)0
-rw-r--r--structgscale.html (renamed from html/structgscale.html)0
-rw-r--r--structgscale.js (renamed from html/structgscale.js)0
-rw-r--r--structgui.html (renamed from html/structgui.html)0
-rw-r--r--structgui.js (renamed from html/structgui.js)0
-rw-r--r--structgui__config__settings.html (renamed from html/structgui__config__settings.html)0
-rw-r--r--structgui__config__settings.js (renamed from html/structgui__config__settings.js)0
-rw-r--r--structgui__internal__data.html (renamed from html/structgui__internal__data.html)0
-rw-r--r--structgui__internal__data.js (renamed from html/structgui__internal__data.js)0
-rw-r--r--structgui__internal__keyb__mode.html (renamed from html/structgui__internal__keyb__mode.html)0
-rw-r--r--structgui__internal__keyb__mode.js (renamed from html/structgui__internal__keyb__mode.js)0
-rw-r--r--structgui__internal__methods.html (renamed from html/structgui__internal__methods.html)0
-rw-r--r--structgui__internal__methods.js (renamed from html/structgui__internal__methods.js)0
-rw-r--r--structgui__internal__widget__methods.html (renamed from html/structgui__internal__widget__methods.html)0
-rw-r--r--structgui__internal__widget__methods.js (renamed from html/structgui__internal__widget__methods.js)0
-rw-r--r--structgui__menu__info.html (renamed from html/structgui__menu__info.html)0
-rw-r--r--structgui__menu__info.js (renamed from html/structgui__menu__info.js)0
-rw-r--r--structgui__methods.html (renamed from html/structgui__methods.html)0
-rw-r--r--structgui__methods.js (renamed from html/structgui__methods.js)0
-rw-r--r--structgui__priv.html (renamed from html/structgui__priv.html)0
-rw-r--r--structgui__priv.js (renamed from html/structgui__priv.js)0
-rw-r--r--structgui__priv_1_1gesture__elem.html (renamed from html/structgui__priv_1_1gesture__elem.html)0
-rw-r--r--structgui__priv_1_1gesture__elem.js (renamed from html/structgui__priv_1_1gesture__elem.js)0
-rw-r--r--structgui__priv_1_1html.html (renamed from html/structgui__priv_1_1html.html)0
-rw-r--r--structgui__priv_1_1html.js (renamed from html/structgui__priv_1_1html.js)0
-rw-r--r--structgz__header__s.html (renamed from html/structgz__header__s.html)0
-rw-r--r--structgz__header__s.js (renamed from html/structgz__header__s.js)0
-rw-r--r--structhash__entry.html (renamed from html/structhash__entry.html)0
-rw-r--r--structhash__entry.js (renamed from html/structhash__entry.js)0
-rw-r--r--structheightline.html (renamed from html/structheightline.html)0
-rw-r--r--structheightline.js (renamed from html/structheightline.js)0
-rw-r--r--structhn__interpol__attr.html (renamed from html/structhn__interpol__attr.html)0
-rw-r--r--structhn__interpol__attr.js (renamed from html/structhn__interpol__attr.js)0
-rw-r--r--structhouse__number__interpolation.html (renamed from html/structhouse__number__interpolation.html)0
-rw-r--r--structhouse__number__interpolation.js (renamed from html/structhouse__number__interpolation.js)0
-rw-r--r--structhousenumber.html (renamed from html/structhousenumber.html)0
-rw-r--r--structhousenumber.js (renamed from html/structhousenumber.js)0
-rw-r--r--structhtml__tag__map.html (renamed from html/structhtml__tag__map.html)0
-rw-r--r--structhtml__tag__map.js (renamed from html/structhtml__tag__map.js)0
-rw-r--r--structidle__task.html (renamed from html/structidle__task.html)0
-rw-r--r--structidle__task.js (renamed from html/structidle__task.js)0
-rw-r--r--structimg__header.html (renamed from html/structimg__header.html)0
-rw-r--r--structimg__header.js (renamed from html/structimg__header.js)0
-rw-r--r--structinflate__state.html (renamed from html/structinflate__state.html)0
-rw-r--r--structinflate__state.js (renamed from html/structinflate__state.js)0
-rw-r--r--structinternal__state.html (renamed from html/structinternal__state.html)0
-rw-r--r--structinternal__state.js (renamed from html/structinternal__state.js)0
-rw-r--r--structitem.html (renamed from html/structitem.html)0
-rw-r--r--structitem.js (renamed from html/structitem.js)0
-rw-r--r--structitem__bin.html (renamed from html/structitem__bin.html)0
-rw-r--r--structitem__bin.js (renamed from html/structitem__bin.js)0
-rw-r--r--structitem__bin__sink.html (renamed from html/structitem__bin__sink.html)0
-rw-r--r--structitem__bin__sink.js (renamed from html/structitem__bin__sink.js)0
-rw-r--r--structitem__bin__sink__func.html (renamed from html/structitem__bin__sink__func.html)0
-rw-r--r--structitem__bin__sink__func.js (renamed from html/structitem__bin__sink__func.js)0
-rw-r--r--structitem__data.html (renamed from html/structitem__data.html)0
-rw-r--r--structitem__data.js (renamed from html/structitem__data.js)0
-rw-r--r--structitem__hash.html (renamed from html/structitem__hash.html)0
-rw-r--r--structitem__hash.js (renamed from html/structitem__hash.js)0
-rw-r--r--structitem__id.html (renamed from html/structitem__id.html)0
-rw-r--r--structitem__id.js (renamed from html/structitem__id.js)0
-rw-r--r--structitem__methods.html (renamed from html/structitem__methods.html)0
-rw-r--r--structitem__methods.js (renamed from html/structitem__methods.js)0
-rw-r--r--structitem__name.html (renamed from html/structitem__name.html)0
-rw-r--r--structitem__name.js (renamed from html/structitem__name.js)0
-rw-r--r--structitem__priv.html (renamed from html/structitem__priv.html)0
-rw-r--r--structitem__priv.js (renamed from html/structitem__priv.js)0
-rw-r--r--structitem__range.html (renamed from html/structitem__range.html)0
-rw-r--r--structitem__range.js (renamed from html/structitem__range.js)0
-rw-r--r--structitemgra.html (renamed from html/structitemgra.html)0
-rw-r--r--structitemgra.js (renamed from html/structitemgra.js)0
-rw-r--r--structj1850.html (renamed from html/structj1850.html)0
-rw-r--r--structj1850.js (renamed from html/structj1850.js)0
-rw-r--r--structjni__object.html (renamed from html/structjni__object.html)0
-rw-r--r--structjni__object.js (renamed from html/structjni__object.js)0
-rw-r--r--structkeywtab__t.html (renamed from html/structkeywtab__t.html)0
-rw-r--r--structkeywtab__t.js (renamed from html/structkeywtab__t.js)0
-rw-r--r--structklatt__frame__t.html (renamed from html/structklatt__frame__t.html)0
-rw-r--r--structklatt__frame__t.js (renamed from html/structklatt__frame__t.js)0
-rw-r--r--structklatt__global__t.html (renamed from html/structklatt__global__t.html)0
-rw-r--r--structklatt__global__t.js (renamed from html/structklatt__global__t.js)0
-rw-r--r--structklatt__peaks__t.html (renamed from html/structklatt__peaks__t.html)0
-rw-r--r--structklatt__peaks__t.js (renamed from html/structklatt__peaks__t.js)0
-rw-r--r--structknown__translation__t.html (renamed from html/structknown__translation__t.html)0
-rw-r--r--structknown__translation__t.js (renamed from html/structknown__translation__t.js)0
-rw-r--r--structlabel__data.html (renamed from html/structlabel__data.html)0
-rw-r--r--structlabel__data.js (renamed from html/structlabel__data.js)0
-rw-r--r--structlabel__data__offset.html (renamed from html/structlabel__data__offset.html)0
-rw-r--r--structlabel__data__offset.js (renamed from html/structlabel__data__offset.js)0
-rw-r--r--structlabel__header.html (renamed from html/structlabel__header.html)0
-rw-r--r--structlabel__header.js (renamed from html/structlabel__header.js)0
-rw-r--r--structlayer.html (renamed from html/structlayer.html)0
-rw-r--r--structlayer.js (renamed from html/structlayer.js)0
-rw-r--r--structlayout.html (renamed from html/structlayout.html)0
-rw-r--r--structlayout.js (renamed from html/structlayout.js)0
-rw-r--r--structlconv.html (renamed from html/structlconv.html)0
-rw-r--r--structlconv.js (renamed from html/structlconv.js)0
-rw-r--r--structlevel.html (renamed from html/structlevel.html)0
-rw-r--r--structlevel.js (renamed from html/structlevel.js)0
-rw-r--r--structloaded__domain.html (renamed from html/structloaded__domain.html)0
-rw-r--r--structloaded__domain.js (renamed from html/structloaded__domain.js)0
-rw-r--r--structloaded__l10nfile.html (renamed from html/structloaded__l10nfile.html)0
-rw-r--r--structloaded__l10nfile.js (renamed from html/structloaded__l10nfile.js)0
-rw-r--r--structlog.html (renamed from html/structlog.html)0
-rw-r--r--structlog.js (renamed from html/structlog.js)0
-rw-r--r--structlog__data.html (renamed from html/structlog__data.html)0
-rw-r--r--structlog__data.js (renamed from html/structlog__data.js)0
-rw-r--r--structlongest__match.html (renamed from html/structlongest__match.html)0
-rw-r--r--structlongest__match.js (renamed from html/structlongest__match.js)0
-rw-r--r--structlongest__match__list.html (renamed from html/structlongest__match__list.html)0
-rw-r--r--structlongest__match__list.js (renamed from html/structlongest__match__list.js)0
-rw-r--r--structlongest__match__list__item.html (renamed from html/structlongest__match__list__item.html)0
-rw-r--r--structlongest__match__list__item.js (renamed from html/structlongest__match__list__item.js)0
-rw-r--r--structmalloc__head.html (renamed from html/structmalloc__head.html)0
-rw-r--r--structmalloc__head.js (renamed from html/structmalloc__head.js)0
-rw-r--r--structmalloc__tail.html (renamed from html/structmalloc__tail.html)0
-rw-r--r--structmalloc__tail.js (renamed from html/structmalloc__tail.js)0
-rw-r--r--structmap.html (renamed from html/structmap.html)0
-rw-r--r--structmap.js (renamed from html/structmap.js)0
-rw-r--r--structmapObject.html (renamed from html/structmapObject.html)0
-rw-r--r--structmapObject.js (renamed from html/structmapObject.js)0
-rw-r--r--structmap__data.html (renamed from html/structmap__data.html)0
-rw-r--r--structmap__data.js (renamed from html/structmap__data.js)0
-rw-r--r--structmap__download.html (renamed from html/structmap__download.html)0
-rw-r--r--structmap__download.js (renamed from html/structmap__download.js)0
-rw-r--r--structmap__methods.html (renamed from html/structmap__methods.html)0
-rw-r--r--structmap__methods.js (renamed from html/structmap__methods.js)0
-rw-r--r--structmap__priv.html (renamed from html/structmap__priv.html)0
-rw-r--r--structmap__priv.js (renamed from html/structmap__priv.js)0
-rw-r--r--structmap__rect.html (renamed from html/structmap__rect.html)0
-rw-r--r--structmap__rect.js (renamed from html/structmap__rect.js)0
-rw-r--r--structmap__rectObject.html (renamed from html/structmap__rectObject.html)0
-rw-r--r--structmap__rectObject.js (renamed from html/structmap__rectObject.js)0
-rw-r--r--structmap__rect__priv.html (renamed from html/structmap__rect__priv.html)0
-rw-r--r--structmap__rect__priv.js (renamed from html/structmap__rect__priv.js)0
-rw-r--r--structmap__search.html (renamed from html/structmap__search.html)0
-rw-r--r--structmap__search.js (renamed from html/structmap__search.js)0
-rw-r--r--structmap__search__priv.html (renamed from html/structmap__search__priv.html)0
-rw-r--r--structmap__search__priv.js (renamed from html/structmap__search__priv.js)0
-rw-r--r--structmap__selection.html (renamed from html/structmap__selection.html)0
-rw-r--r--structmap__selection.js (renamed from html/structmap__selection.js)0
-rw-r--r--structmapset.html (renamed from html/structmapset.html)0
-rw-r--r--structmapset.js (renamed from html/structmapset.js)0
-rw-r--r--structmapsetObject.html (renamed from html/structmapsetObject.html)0
-rw-r--r--structmapsetObject.js (renamed from html/structmapsetObject.js)0
-rw-r--r--structmapset__handle.html (renamed from html/structmapset__handle.html)0
-rw-r--r--structmapset__handle.js (renamed from html/structmapset__handle.js)0
-rw-r--r--structmapset__search.html (renamed from html/structmapset__search.html)0
-rw-r--r--structmapset__search.js (renamed from html/structmapset__search.js)0
-rw-r--r--structmaptool__force__64.html (renamed from html/structmaptool__force__64.html)0
-rw-r--r--structmaptool__force__64.js (renamed from html/structmaptool__force__64.js)0
-rw-r--r--structmaptool__osm.html (renamed from html/structmaptool__osm.html)0
-rw-r--r--structmaptool__osm.js (renamed from html/structmaptool__osm.js)0
-rw-r--r--structmaptool__params.html (renamed from html/structmaptool__params.html)0
-rw-r--r--structmaptool__params.js (renamed from html/structmaptool__params.js)0
-rw-r--r--structmaptype.html (renamed from html/structmaptype.html)0
-rw-r--r--structmaptype.js (renamed from html/structmaptype.js)0
-rw-r--r--structmarker.html (renamed from html/structmarker.html)0
-rw-r--r--structmarker.js (renamed from html/structmarker.js)0
-rw-r--r--structmbrolib__parameter.html (renamed from html/structmbrolib__parameter.html)0
-rw-r--r--structmbrolib__parameter.js (renamed from html/structmbrolib__parameter.js)0
-rw-r--r--structmbrolib__voice.html (renamed from html/structmbrolib__voice.html)0
-rw-r--r--structmbrolib__voice.js (renamed from html/structmbrolib__voice.js)0
-rw-r--r--structmenu.html (renamed from html/structmenu.html)0
-rw-r--r--structmenu.js (renamed from html/structmenu.js)0
-rw-r--r--structmenu__data.html (renamed from html/structmenu__data.html)0
-rw-r--r--structmenu__data.js (renamed from html/structmenu__data.js)0
-rw-r--r--structmenu__methods.html (renamed from html/structmenu__methods.html)0
-rw-r--r--structmenu__methods.js (renamed from html/structmenu__methods.js)0
-rw-r--r--structmenu__priv.html (renamed from html/structmenu__priv.html)0
-rw-r--r--structmenu__priv.js (renamed from html/structmenu__priv.js)0
-rw-r--r--structmessage.html (renamed from html/structmessage.html)0
-rw-r--r--structmessage.js (renamed from html/structmessage.js)0
-rw-r--r--structmessagelist.html (renamed from html/structmessagelist.html)0
-rw-r--r--structmessagelist.js (renamed from html/structmessagelist.js)0
-rw-r--r--structmo__file__header.html (renamed from html/structmo__file__header.html)0
-rw-r--r--structmo__file__header.js (renamed from html/structmo__file__header.js)0
-rw-r--r--structmouse__event__queue__element.html (renamed from html/structmouse__event__queue__element.html)0
-rw-r--r--structmouse__event__queue__element.js (renamed from html/structmouse__event__queue__element.js)0
-rw-r--r--structnav__next__turn.html (renamed from html/structnav__next__turn.html)0
-rw-r--r--structnav__next__turn.js (renamed from html/structnav__next__turn.js)0
-rw-r--r--structnav__toggle__announcer.html (renamed from html/structnav__toggle__announcer.html)0
-rw-r--r--structnav__toggle__announcer.js (renamed from html/structnav__toggle__announcer.js)0
-rw-r--r--structnavigation.html (renamed from html/structnavigation.html)0
-rw-r--r--structnavigation.js (renamed from html/structnavigation.js)0
-rw-r--r--structnavigationObject.html (renamed from html/structnavigationObject.html)0
-rw-r--r--structnavigationObject.js (renamed from html/structnavigationObject.js)0
-rw-r--r--structnavigation__command.html (renamed from html/structnavigation__command.html)0
-rw-r--r--structnavigation__command.js (renamed from html/structnavigation__command.js)0
-rw-r--r--structnavigation__itm.html (renamed from html/structnavigation__itm.html)0
-rw-r--r--structnavigation__itm.js (renamed from html/structnavigation__itm.js)0
-rw-r--r--structnavigation__maneuver.html (renamed from html/structnavigation__maneuver.html)0
-rw-r--r--structnavigation__maneuver.js (renamed from html/structnavigation__maneuver.js)0
-rw-r--r--structnavigation__status.html (renamed from html/structnavigation__status.html)0
-rw-r--r--structnavigation__status.js (renamed from html/structnavigation__status.js)0
-rw-r--r--structnavigation__way.html (renamed from html/structnavigation__way.html)0
-rw-r--r--structnavigation__way.js (renamed from html/structnavigation__way.js)0
-rw-r--r--structnavit.html (renamed from html/structnavit.html)0
-rw-r--r--structnavit.js (renamed from html/structnavit.js)0
-rw-r--r--structnavitObject.html (renamed from html/structnavitObject.html)0
-rw-r--r--structnavitObject.js (renamed from html/structnavitObject.js)0
-rw-r--r--structnavit__binding__w32__msg.html (renamed from html/structnavit__binding__w32__msg.html)0
-rw-r--r--structnavit__binding__w32__msg.js (renamed from html/structnavit__binding__w32__msg.js)0
-rw-r--r--structnavit__object.html (renamed from html/structnavit__object.html)0
-rw-r--r--structnavit__vehicle.html (renamed from html/structnavit__vehicle.html)0
-rw-r--r--structnavit__vehicle.js (renamed from html/structnavit__vehicle.js)0
-rw-r--r--structnewnode.html (renamed from html/structnewnode.html)0
-rw-r--r--structnewnode.js (renamed from html/structnewnode.js)0
-rw-r--r--structnl2gl__t.html (renamed from html/structnl2gl__t.html)0
-rw-r--r--structnl2gl__t.js (renamed from html/structnl2gl__t.js)0
-rw-r--r--structnode.html (renamed from html/structnode.html)0
-rw-r--r--structnode.js (renamed from html/structnode.js)0
-rw-r--r--structnode__item.html (renamed from html/structnode__item.html)0
-rw-r--r--structnode__item.js (renamed from html/structnode__item.js)0
-rw-r--r--structnotify__priv.html (renamed from html/structnotify__priv.html)0
-rw-r--r--structnotify__priv.js (renamed from html/structnotify__priv.js)0
-rw-r--r--structo5m.html (renamed from html/structo5m.html)0
-rw-r--r--structo5m.js (renamed from html/structo5m.js)0
-rw-r--r--structobject__func.html (renamed from html/structobject__func.html)0
-rw-r--r--structobject__func.js (renamed from html/structobject__func.js)0
-rw-r--r--structodometer.html (renamed from html/structodometer.html)0
-rw-r--r--structodometer.js (renamed from html/structodometer.js)0
-rw-r--r--structoffset__len.html (renamed from html/structoffset__len.html)0
-rw-r--r--structoffset__len.js (renamed from html/structoffset__len.js)0
-rw-r--r--structoption.html (renamed from html/structoption.html)0
-rw-r--r--structoption.js (renamed from html/structoption.js)0
-rw-r--r--structosd.html (renamed from html/structosd.html)0
-rw-r--r--structosd.js (renamed from html/structosd.js)0
-rw-r--r--structosd__button.html (renamed from html/structosd__button.html)0
-rw-r--r--structosd__button.js (renamed from html/structosd__button.js)0
-rw-r--r--structosd__item.html (renamed from html/structosd__item.html)0
-rw-r--r--structosd__item.js (renamed from html/structosd__item.js)0
-rw-r--r--structosd__item__methods.html (renamed from html/structosd__item__methods.html)0
-rw-r--r--structosd__item__methods.js (renamed from html/structosd__item__methods.js)0
-rw-r--r--structosd__methods.html (renamed from html/structosd__methods.html)0
-rw-r--r--structosd__methods.js (renamed from html/structosd__methods.js)0
-rw-r--r--structosd__priv__common.html (renamed from html/structosd__priv__common.html)0
-rw-r--r--structosd__priv__common.js (renamed from html/structosd__priv__common.js)0
-rw-r--r--structosd__scale.html (renamed from html/structosd__scale.html)0
-rw-r--r--structosd__scale.js (renamed from html/structosd__scale.js)0
-rw-r--r--structosd__speed__cam.html (renamed from html/structosd__speed__cam.html)0
-rw-r--r--structosd__speed__cam.js (renamed from html/structosd__speed__cam.js)0
-rw-r--r--structosd__speed__cam__entry.html (renamed from html/structosd__speed__cam__entry.html)0
-rw-r--r--structosd__speed__cam__entry.js (renamed from html/structosd__speed__cam__entry.js)0
-rw-r--r--structosd__speed__warner.html (renamed from html/structosd__speed__warner.html)0
-rw-r--r--structosd__speed__warner.js (renamed from html/structosd__speed__warner.js)0
-rw-r--r--structosd__text.html (renamed from html/structosd__text.html)0
-rw-r--r--structosd__text.js (renamed from html/structosd__text.js)0
-rw-r--r--structosd__text__item.html (renamed from html/structosd__text__item.html)0
-rw-r--r--structosd__text__item.js (renamed from html/structosd__text__item.js)0
-rw-r--r--structosm__protobufdb__context.html (renamed from html/structosm__protobufdb__context.html)0
-rw-r--r--structosm__protobufdb__context.js (renamed from html/structosm__protobufdb__context.js)0
-rw-r--r--structpadding.html (renamed from html/structpadding.html)0
-rw-r--r--structpadding.js (renamed from html/structpadding.js)0
-rw-r--r--structparam__list.html (renamed from html/structparam__list.html)0
-rw-r--r--structparam__list.js (renamed from html/structparam__list.js)0
-rw-r--r--structparent.html (renamed from html/structparent.html)0
-rw-r--r--structparent.js (renamed from html/structparent.js)0
-rw-r--r--structparse__args.html (renamed from html/structparse__args.html)0
-rw-r--r--structparse__args.js (renamed from html/structparse__args.js)0
-rw-r--r--structparsedata.html (renamed from html/structparsedata.html)0
-rw-r--r--structparsedata.js (renamed from html/structparsedata.js)0
-rw-r--r--structpathattr.html (renamed from html/structpathattr.html)0
-rw-r--r--structpathattr.js (renamed from html/structpathattr.js)0
-rw-r--r--structpcoord.html (renamed from html/structpcoord.html)0
-rw-r--r--structpcoord.js (renamed from html/structpcoord.js)0
-rw-r--r--structpcoordObject.html (renamed from html/structpcoordObject.html)0
-rw-r--r--structpcoordObject.js (renamed from html/structpcoordObject.js)0
-rw-r--r--structpedestrian.html (renamed from html/structpedestrian.html)0
-rw-r--r--structpedestrian.js (renamed from html/structpedestrian.js)0
-rw-r--r--structphrase.html (renamed from html/structphrase.html)0
-rw-r--r--structphrase.js (renamed from html/structphrase.js)0
-rw-r--r--structplugin.html (renamed from html/structplugin.html)0
-rw-r--r--structplugin.js (renamed from html/structplugin.js)0
-rw-r--r--structplugins.html (renamed from html/structplugins.html)0
-rw-r--r--structplugins.js (renamed from html/structplugins.js)0
-rw-r--r--structpng__color__16__struct.html (renamed from html/structpng__color__16__struct.html)0
-rw-r--r--structpng__color__16__struct.js (renamed from html/structpng__color__16__struct.js)0
-rw-r--r--structpng__color__8__struct.html (renamed from html/structpng__color__8__struct.html)0
-rw-r--r--structpng__color__8__struct.js (renamed from html/structpng__color__8__struct.js)0
-rw-r--r--structpng__color__struct.html (renamed from html/structpng__color__struct.html)0
-rw-r--r--structpng__color__struct.js (renamed from html/structpng__color__struct.js)0
-rw-r--r--structpng__dsort__struct.html (renamed from html/structpng__dsort__struct.html)0
-rw-r--r--structpng__dsort__struct.js (renamed from html/structpng__dsort__struct.js)0
-rw-r--r--structpng__info__struct.html (renamed from html/structpng__info__struct.html)0
-rw-r--r--structpng__info__struct.js (renamed from html/structpng__info__struct.js)0
-rw-r--r--structpng__row__info__struct.html (renamed from html/structpng__row__info__struct.html)0
-rw-r--r--structpng__row__info__struct.js (renamed from html/structpng__row__info__struct.js)0
-rw-r--r--structpng__sPLT__entry__struct.html (renamed from html/structpng__sPLT__entry__struct.html)0
-rw-r--r--structpng__sPLT__entry__struct.js (renamed from html/structpng__sPLT__entry__struct.js)0
-rw-r--r--structpng__sPLT__struct.html (renamed from html/structpng__sPLT__struct.html)0
-rw-r--r--structpng__sPLT__struct.js (renamed from html/structpng__sPLT__struct.js)0
-rw-r--r--structpng__struct__def.html (renamed from html/structpng__struct__def.html)0
-rw-r--r--structpng__struct__def.js (renamed from html/structpng__struct__def.js)0
-rw-r--r--structpng__text__struct.html (renamed from html/structpng__text__struct.html)0
-rw-r--r--structpng__text__struct.js (renamed from html/structpng__text__struct.js)0
-rw-r--r--structpng__time__struct.html (renamed from html/structpng__time__struct.html)0
-rw-r--r--structpng__time__struct.js (renamed from html/structpng__time__struct.js)0
-rw-r--r--structpng__unknown__chunk__t.html (renamed from html/structpng__unknown__chunk__t.html)0
-rw-r--r--structpng__unknown__chunk__t.js (renamed from html/structpng__unknown__chunk__t.js)0
-rw-r--r--structpoi__param.html (renamed from html/structpoi__param.html)0
-rw-r--r--structpoi__param.js (renamed from html/structpoi__param.js)0
-rw-r--r--structpoint.html (renamed from html/structpoint.html)0
-rw-r--r--structpoint.js (renamed from html/structpoint.js)0
-rw-r--r--structpoint__rect.html (renamed from html/structpoint__rect.html)0
-rw-r--r--structpoint__rect.js (renamed from html/structpoint__rect.js)0
-rw-r--r--structpoly__priv.html (renamed from html/structpoly__priv.html)0
-rw-r--r--structpoly__priv.js (renamed from html/structpoly__priv.js)0
-rw-r--r--structpopulation__table.html (renamed from html/structpopulation__table.html)0
-rw-r--r--structpopulation__table.js (renamed from html/structpopulation__table.js)0
-rw-r--r--structprocess__relation__member__func__priv.html (renamed from html/structprocess__relation__member__func__priv.html)0
-rw-r--r--structprocess__relation__member__func__priv.js (renamed from html/structprocess__relation__member__func__priv.js)0
-rw-r--r--structprofile__option.html (renamed from html/structprofile__option.html)0
-rw-r--r--structprojection__name.html (renamed from html/structprojection__name.html)0
-rw-r--r--structprojection__name.js (renamed from html/structprojection__name.js)0
-rw-r--r--structquadtree__data.html (renamed from html/structquadtree__data.html)0
-rw-r--r--structquadtree__data.js (renamed from html/structquadtree__data.js)0
-rw-r--r--structquadtree__item.html (renamed from html/structquadtree__item.html)0
-rw-r--r--structquadtree__item.js (renamed from html/structquadtree__item.js)0
-rw-r--r--structquadtree__iter.html (renamed from html/structquadtree__iter.html)0
-rw-r--r--structquadtree__iter.js (renamed from html/structquadtree__iter.js)0
-rw-r--r--structquadtree__iter__node.html (renamed from html/structquadtree__iter__node.html)0
-rw-r--r--structquadtree__iter__node.js (renamed from html/structquadtree__iter__node.js)0
-rw-r--r--structquadtree__node.html (renamed from html/structquadtree__node.html)0
-rw-r--r--structquadtree__node.js (renamed from html/structquadtree__node.js)0
-rw-r--r--structrange.html (renamed from html/structrange.html)0
-rw-r--r--structrange.js (renamed from html/structrange.js)0
-rw-r--r--structrect.html (renamed from html/structrect.html)0
-rw-r--r--structrect.js (renamed from html/structrect.js)0
-rw-r--r--structregion__header.html (renamed from html/structregion__header.html)0
-rw-r--r--structregion__header.js (renamed from html/structregion__header.js)0
-rw-r--r--structrelation__member.html (renamed from html/structrelation__member.html)0
-rw-r--r--structrelation__member.js (renamed from html/structrelation__member.js)0
-rw-r--r--structrelations.html (renamed from html/structrelations.html)0
-rw-r--r--structrelations.js (renamed from html/structrelations.js)0
-rw-r--r--structrelations__func.html (renamed from html/structrelations__func.html)0
-rw-r--r--structrelations__func.js (renamed from html/structrelations__func.js)0
-rw-r--r--structrelations__member.html (renamed from html/structrelations__member.html)0
-rw-r--r--structrelations__member.js (renamed from html/structrelations__member.js)0
-rw-r--r--structresonator__t.html (renamed from html/structresonator__t.html)0
-rw-r--r--structresonator__t.js (renamed from html/structresonator__t.js)0
-rw-r--r--structresult.html (renamed from html/structresult.html)0
-rw-r--r--structresult.js (renamed from html/structresult.js)0
-rw-r--r--structresult__list.html (renamed from html/structresult__list.html)0
-rw-r--r--structresult__list.js (renamed from html/structresult__list.js)0
-rw-r--r--structrgn__point.html (renamed from html/structrgn__point.html)0
-rw-r--r--structrgn__point.js (renamed from html/structrgn__point.js)0
-rw-r--r--structrgn__poly.html (renamed from html/structrgn__poly.html)0
-rw-r--r--structrgn__poly.js (renamed from html/structrgn__poly.js)0
-rw-r--r--structroadprofile.html (renamed from html/structroadprofile.html)0
-rw-r--r--structroadprofile.js (renamed from html/structroadprofile.js)0
-rw-r--r--structrocket.html (renamed from html/structrocket.html)0
-rw-r--r--structrocket.js (renamed from html/structrocket.js)0
-rw-r--r--structroute.html (renamed from html/structroute.html)0
-rw-r--r--structroute.js (renamed from html/structroute.js)0
-rw-r--r--structrouteObject.html (renamed from html/structrouteObject.html)0
-rw-r--r--structrouteObject.js (renamed from html/structrouteObject.js)0
-rw-r--r--structroute__crossing.html (renamed from html/structroute__crossing.html)0
-rw-r--r--structroute__crossing.js (renamed from html/structroute__crossing.js)0
-rw-r--r--structroute__crossings.html (renamed from html/structroute__crossings.html)0
-rw-r--r--structroute__crossings.js (renamed from html/structroute__crossings.js)0
-rw-r--r--structroute__data.html (renamed from html/structroute__data.html)0
-rw-r--r--structroute__data.js (renamed from html/structroute__data.js)0
-rw-r--r--structroute__graph.html (renamed from html/structroute__graph.html)0
-rw-r--r--structroute__graph.js (renamed from html/structroute__graph.js)0
-rw-r--r--structroute__graph__point.html (renamed from html/structroute__graph__point.html)0
-rw-r--r--structroute__graph__point.js (renamed from html/structroute__graph__point.js)0
-rw-r--r--structroute__graph__point__iterator.html (renamed from html/structroute__graph__point__iterator.html)0
-rw-r--r--structroute__graph__point__iterator.js (renamed from html/structroute__graph__point__iterator.js)0
-rw-r--r--structroute__graph__segment.html (renamed from html/structroute__graph__segment.html)0
-rw-r--r--structroute__graph__segment.js (renamed from html/structroute__graph__segment.js)0
-rw-r--r--structroute__graph__segment__data.html (renamed from html/structroute__graph__segment__data.html)0
-rw-r--r--structroute__graph__segment__data.js (renamed from html/structroute__graph__segment__data.js)0
-rw-r--r--structroute__guard.html (renamed from html/structroute__guard.html)0
-rw-r--r--structroute__guard.js (renamed from html/structroute__guard.js)0
-rw-r--r--structroute__info.html (renamed from html/structroute__info.html)0
-rw-r--r--structroute__info.js (renamed from html/structroute__info.js)0
-rw-r--r--structroute__path.html (renamed from html/structroute__path.html)0
-rw-r--r--structroute__path.js (renamed from html/structroute__path.js)0
-rw-r--r--structroute__path__segment.html (renamed from html/structroute__path__segment.html)0
-rw-r--r--structroute__path__segment.js (renamed from html/structroute__path__segment.js)0
-rw-r--r--structroute__segment__data.html (renamed from html/structroute__segment__data.html)0
-rw-r--r--structroute__segment__data.js (renamed from html/structroute__segment__data.js)0
-rw-r--r--structroute__traffic__distortion.html (renamed from html/structroute__traffic__distortion.html)0
-rw-r--r--structroute__traffic__distortion.js (renamed from html/structroute__traffic__distortion.js)0
-rw-r--r--structscript.html (renamed from html/structscript.html)0
-rw-r--r--structscript.js (renamed from html/structscript.js)0
-rw-r--r--structscroll__buttons.html (renamed from html/structscroll__buttons.html)0
-rw-r--r--structscroll__buttons.js (renamed from html/structscroll__buttons.js)0
-rw-r--r--structsearch__list.html (renamed from html/structsearch__list.html)0
-rw-r--r--structsearch__list.js (renamed from html/structsearch__list.js)0
-rw-r--r--structsearch__list__common.html (renamed from html/structsearch__list__common.html)0
-rw-r--r--structsearch__list__common.js (renamed from html/structsearch__list__common.js)0
-rw-r--r--structsearch__list__country.html (renamed from html/structsearch__list__country.html)0
-rw-r--r--structsearch__list__country.js (renamed from html/structsearch__list__country.js)0
-rw-r--r--structsearch__list__house__number.html (renamed from html/structsearch__list__house__number.html)0
-rw-r--r--structsearch__list__house__number.js (renamed from html/structsearch__list__house__number.js)0
-rw-r--r--structsearch__list__level.html (renamed from html/structsearch__list__level.html)0
-rw-r--r--structsearch__list__level.js (renamed from html/structsearch__list__level.js)0
-rw-r--r--structsearch__list__result.html (renamed from html/structsearch__list__result.html)0
-rw-r--r--structsearch__list__result.js (renamed from html/structsearch__list__result.js)0
-rw-r--r--structsearch__list__street.html (renamed from html/structsearch__list__street.html)0
-rw-r--r--structsearch__list__street.js (renamed from html/structsearch__list__street.js)0
-rw-r--r--structsearch__list__town.html (renamed from html/structsearch__list__town.html)0
-rw-r--r--structsearch__list__town.js (renamed from html/structsearch__list__town.js)0
-rw-r--r--structselector.html (renamed from html/structselector.html)0
-rw-r--r--structselector.js (renamed from html/structselector.js)0
-rw-r--r--structshape__tree__node.html (renamed from html/structshape__tree__node.html)0
-rw-r--r--structshape__tree__node.js (renamed from html/structshape__tree__node.js)0
-rw-r--r--structshmem__header.html (renamed from html/structshmem__header.html)0
-rw-r--r--structshmem__header.js (renamed from html/structshmem__header.js)0
-rw-r--r--structsize__weight__limit.html (renamed from html/structsize__weight__limit.html)0
-rw-r--r--structsize__weight__limit.js (renamed from html/structsize__weight__limit.js)0
-rw-r--r--structspawn__process__info.html (renamed from html/structspawn__process__info.html)0
-rw-r--r--structspawn__process__info.js (renamed from html/structspawn__process__info.js)0
-rw-r--r--structspeech.html (renamed from html/structspeech.html)0
-rw-r--r--structspeech.js (renamed from html/structspeech.js)0
-rw-r--r--structspeech__methods.html (renamed from html/structspeech__methods.html)0
-rw-r--r--structspeech__methods.js (renamed from html/structspeech__methods.js)0
-rw-r--r--structspeech__priv.html (renamed from html/structspeech__priv.html)0
-rw-r--r--structspeech__priv.js (renamed from html/structspeech__priv.js)0
-rw-r--r--structstat.html (renamed from html/structstat.html)0
-rw-r--r--structstat.js (renamed from html/structstat.js)0
-rw-r--r--structstat__file__info__t.html (renamed from html/structstat__file__info__t.html)0
-rw-r--r--structstat__file__info__t.js (renamed from html/structstat__file__info__t.js)0
-rw-r--r--structstatusbar__priv.html (renamed from html/structstatusbar__priv.html)0
-rw-r--r--structstatusbar__priv.js (renamed from html/structstatusbar__priv.js)0
-rw-r--r--structstopwatch.html (renamed from html/structstopwatch.html)0
-rw-r--r--structstopwatch.js (renamed from html/structstopwatch.js)0
-rw-r--r--structstreet__data.html (renamed from html/structstreet__data.html)0
-rw-r--r--structstreet__data.js (renamed from html/structstreet__data.js)0
-rw-r--r--structstreet__destination.html (renamed from html/structstreet__destination.html)0
-rw-r--r--structstreet__destination.js (renamed from html/structstreet__destination.js)0
-rw-r--r--structstreet__header.html (renamed from html/structstreet__header.html)0
-rw-r--r--structstreet__header.js (renamed from html/structstreet__header.js)0
-rw-r--r--structstreet__header__type.html (renamed from html/structstreet__header__type.html)0
-rw-r--r--structstreet__header__type.js (renamed from html/structstreet__header__type.js)0
-rw-r--r--structstreet__name.html (renamed from html/structstreet__name.html)0
-rw-r--r--structstreet__name.js (renamed from html/structstreet__name.js)0
-rw-r--r--structstreet__name__index.html (renamed from html/structstreet__name__index.html)0
-rw-r--r--structstreet__name__index.js (renamed from html/structstreet__name__index.js)0
-rw-r--r--structstreet__name__number.html (renamed from html/structstreet__name__number.html)0
-rw-r--r--structstreet__name__number.js (renamed from html/structstreet__name__number.js)0
-rw-r--r--structstreet__name__numbers.html (renamed from html/structstreet__name__numbers.html)0
-rw-r--r--structstreet__name__numbers.js (renamed from html/structstreet__name__numbers.js)0
-rw-r--r--structstreet__name__segment.html (renamed from html/structstreet__name__segment.html)0
-rw-r--r--structstreet__name__segment.js (renamed from html/structstreet__name__segment.js)0
-rw-r--r--structstreet__priv.html (renamed from html/structstreet__priv.html)0
-rw-r--r--structstreet__priv.js (renamed from html/structstreet__priv.js)0
-rw-r--r--structstreet__str.html (renamed from html/structstreet__str.html)0
-rw-r--r--structstreet__str.js (renamed from html/structstreet__str.js)0
-rw-r--r--structstreet__type.html (renamed from html/structstreet__type.html)0
-rw-r--r--structstreet__type.js (renamed from html/structstreet__type.js)0
-rw-r--r--structstring__desc.html (renamed from html/structstring__desc.html)0
-rw-r--r--structstring__desc.js (renamed from html/structstring__desc.js)0
-rw-r--r--structsubdivision.html (renamed from html/structsubdivision.html)0
-rw-r--r--structsubdivision.js (renamed from html/structsubdivision.js)0
-rw-r--r--structsuffix.html (renamed from html/structsuffix.html)0
-rw-r--r--structsuffix.js (renamed from html/structsuffix.js)0
-rw-r--r--structsysdep__segment.html (renamed from html/structsysdep__segment.html)0
-rw-r--r--structsysdep__segment.js (renamed from html/structsysdep__segment.js)0
-rw-r--r--structsysdep__string.html (renamed from html/structsysdep__string.html)0
-rw-r--r--structsysdep__string.js (renamed from html/structsysdep__string.js)0
-rw-r--r--structsysdep__string_1_1segment__pair.html (renamed from html/structsysdep__string_1_1segment__pair.html)0
-rw-r--r--structsysdep__string_1_1segment__pair.js (renamed from html/structsysdep__string_1_1segment__pair.js)0
-rw-r--r--structsysdep__string__desc.html (renamed from html/structsysdep__string__desc.html)0
-rw-r--r--structsysdep__string__desc.js (renamed from html/structsysdep__string__desc.js)0
-rw-r--r--structt__espeak__character.html (renamed from html/structt__espeak__character.html)0
-rw-r--r--structt__espeak__character.js (renamed from html/structt__espeak__character.js)0
-rw-r--r--structt__espeak__command.html (renamed from html/structt__espeak__command.html)0
-rw-r--r--structt__espeak__command.js (renamed from html/structt__espeak__command.js)0
-rw-r--r--structt__espeak__key.html (renamed from html/structt__espeak__key.html)0
-rw-r--r--structt__espeak__key.js (renamed from html/structt__espeak__key.js)0
-rw-r--r--structt__espeak__mark.html (renamed from html/structt__espeak__mark.html)0
-rw-r--r--structt__espeak__mark.js (renamed from html/structt__espeak__mark.js)0
-rw-r--r--structt__espeak__parameter.html (renamed from html/structt__espeak__parameter.html)0
-rw-r--r--structt__espeak__parameter.js (renamed from html/structt__espeak__parameter.js)0
-rw-r--r--structt__espeak__terminated__msg.html (renamed from html/structt__espeak__terminated__msg.html)0
-rw-r--r--structt__espeak__terminated__msg.js (renamed from html/structt__espeak__terminated__msg.js)0
-rw-r--r--structt__espeak__text.html (renamed from html/structt__espeak__text.html)0
-rw-r--r--structt__espeak__text.js (renamed from html/structt__espeak__text.js)0
-rw-r--r--structtable__column__desc.html (renamed from html/structtable__column__desc.html)0
-rw-r--r--structtable__column__desc.js (renamed from html/structtable__column__desc.js)0
-rw-r--r--structtable__data.html (renamed from html/structtable__data.html)0
-rw-r--r--structtable__data.js (renamed from html/structtable__data.js)0
-rw-r--r--structtagSHPObject.html (renamed from html/structtagSHPObject.html)0
-rw-r--r--structtagSHPObject.js (renamed from html/structtagSHPObject.js)0
-rw-r--r--structtcoord.html (renamed from html/structtcoord.html)0
-rw-r--r--structtcoord.js (renamed from html/structtcoord.js)0
-rw-r--r--structtemplateObject.html (renamed from html/structtemplateObject.html)0
-rw-r--r--structtemplateObject.js (renamed from html/structtemplateObject.js)0
-rw-r--r--structtile.html (renamed from html/structtile.html)0
-rw-r--r--structtile.js (renamed from html/structtile.js)0
-rw-r--r--structtile__data.html (renamed from html/structtile__data.html)0
-rw-r--r--structtile__data.js (renamed from html/structtile__data.js)0
-rw-r--r--structtile__head.html (renamed from html/structtile__head.html)0
-rw-r--r--structtile__head.js (renamed from html/structtile__head.js)0
-rw-r--r--structtile__info.html (renamed from html/structtile__info.html)0
-rw-r--r--structtile__info.js (renamed from html/structtile__info.js)0
-rw-r--r--structtile__parameter.html (renamed from html/structtile__parameter.html)0
-rw-r--r--structtile__parameter.js (renamed from html/structtile__parameter.js)0
-rw-r--r--structtilt__data.html (renamed from html/structtilt__data.html)0
-rw-r--r--structtilt__data.js (renamed from html/structtilt__data.js)0
-rw-r--r--structtimestamp.html (renamed from html/structtimestamp.html)0
-rw-r--r--structtimestamp.js (renamed from html/structtimestamp.js)0
-rw-r--r--structtimeval.html (renamed from html/structtimeval.html)0
-rw-r--r--structtimeval.js (renamed from html/structtimeval.js)0
-rw-r--r--structtimezone.html (renamed from html/structtimezone.html)0
-rw-r--r--structtimezone.js (renamed from html/structtimezone.js)0
-rw-r--r--structtown__country.html (renamed from html/structtown__country.html)0
-rw-r--r--structtown__country.js (renamed from html/structtown__country.js)0
-rw-r--r--structtown__priv.html (renamed from html/structtown__priv.html)0
-rw-r--r--structtown__priv.js (renamed from html/structtown__priv.js)0
-rw-r--r--structtracking.html (renamed from html/structtracking.html)0
-rw-r--r--structtracking.js (renamed from html/structtracking.js)0
-rw-r--r--structtracking__line.html (renamed from html/structtracking__line.html)0
-rw-r--r--structtracking__line.js (renamed from html/structtracking__line.js)0
-rw-r--r--structtransformation.html (renamed from html/structtransformation.html)0
-rw-r--r--structtransformation.js (renamed from html/structtransformation.js)0
-rw-r--r--structtree__hdr.html (renamed from html/structtree__hdr.html)0
-rw-r--r--structtree__hdr.js (renamed from html/structtree__hdr.js)0
-rw-r--r--structtree__hdr__h.html (renamed from html/structtree__hdr__h.html)0
-rw-r--r--structtree__hdr__h.js (renamed from html/structtree__hdr__h.js)0
-rw-r--r--structtree__hdr__v.html (renamed from html/structtree__hdr__v.html)0
-rw-r--r--structtree__hdr__v.js (renamed from html/structtree__hdr__v.js)0
-rw-r--r--structtree__header.html (renamed from html/structtree__header.html)0
-rw-r--r--structtree__header.js (renamed from html/structtree__header.js)0
-rw-r--r--structtree__leaf__h.html (renamed from html/structtree__leaf__h.html)0
-rw-r--r--structtree__leaf__h.js (renamed from html/structtree__leaf__h.js)0
-rw-r--r--structtree__leaf__v.html (renamed from html/structtree__leaf__v.html)0
-rw-r--r--structtree__leaf__v.js (renamed from html/structtree__leaf__v.js)0
-rw-r--r--structtree__search.html (renamed from html/structtree__search.html)0
-rw-r--r--structtree__search.js (renamed from html/structtree__search.js)0
-rw-r--r--structtree__search__node.html (renamed from html/structtree__search__node.html)0
-rw-r--r--structtree__search__node.js (renamed from html/structtree__search__node.js)0
-rw-r--r--structtriple.html (renamed from html/structtriple.html)0
-rw-r--r--structtriple.js (renamed from html/structtriple.js)0
-rw-r--r--structturn__restriction.html (renamed from html/structturn__restriction.html)0
-rw-r--r--structturn__restriction.js (renamed from html/structturn__restriction.js)0
-rw-r--r--structvehicle.html (renamed from html/structvehicle.html)0
-rw-r--r--structvehicle.js (renamed from html/structvehicle.js)0
-rw-r--r--structvehicle__and__profilename.html (renamed from html/structvehicle__and__profilename.html)0
-rw-r--r--structvehicle__and__profilename.js (renamed from html/structvehicle__and__profilename.js)0
-rw-r--r--structvehicle__methods.html (renamed from html/structvehicle__methods.html)0
-rw-r--r--structvehicle__methods.js (renamed from html/structvehicle__methods.js)0
-rw-r--r--structvehicle__priv.html (renamed from html/structvehicle__priv.html)0
-rw-r--r--structvehicle__priv.js (renamed from html/structvehicle__priv.js)0
-rw-r--r--structvehicleprofile.html (renamed from html/structvehicleprofile.html)0
-rw-r--r--structvehicleprofile.js (renamed from html/structvehicleprofile.js)0
-rw-r--r--structvoice__t.html (renamed from html/structvoice__t.html)0
-rw-r--r--structvoice__t.js (renamed from html/structvoice__t.js)0
-rw-r--r--structvolume.html (renamed from html/structvolume.html)0
-rw-r--r--structvolume.js (renamed from html/structvolume.js)0
-rw-r--r--structwavegen__peaks__t.html (renamed from html/structwavegen__peaks__t.html)0
-rw-r--r--structwavegen__peaks__t.js (renamed from html/structwavegen__peaks__t.js)0
-rw-r--r--structwchar__t__directive.html (renamed from html/structwchar__t__directive.html)0
-rw-r--r--structwchar__t__directive.js (renamed from html/structwchar__t__directive.js)0
-rw-r--r--structwchar__t__directives.html (renamed from html/structwchar__t__directives.html)0
-rw-r--r--structwchar__t__directives.js (renamed from html/structwchar__t__directives.js)0
-rw-r--r--structwidget.html (renamed from html/structwidget.html)0
-rw-r--r--structwidget.js (renamed from html/structwidget.js)0
-rw-r--r--structwin32__binding__private.html (renamed from html/structwin32__binding__private.html)0
-rw-r--r--structwin32__binding__private.js (renamed from html/structwin32__binding__private.js)0
-rw-r--r--structwindow.html (renamed from html/structwindow.html)0
-rw-r--r--structwindow.js (renamed from html/structwindow.js)0
-rw-r--r--structwindow__data.html (renamed from html/structwindow__data.html)0
-rw-r--r--structwindow__data.js (renamed from html/structwindow__data.js)0
-rw-r--r--structwindow__priv.html (renamed from html/structwindow__priv.html)0
-rw-r--r--structwindow__priv.js (renamed from html/structwindow__priv.js)0
-rw-r--r--structwordexp__t.html (renamed from html/structwordexp__t.html)0
-rw-r--r--structwordexp__t.js (renamed from html/structwordexp__t.js)0
-rw-r--r--structwpoint.html (renamed from html/structwpoint.html)0
-rw-r--r--structwpoint.js (renamed from html/structwpoint.js)0
-rw-r--r--structxistate.html (renamed from html/structxistate.html)0
-rw-r--r--structxistate.js (renamed from html/structxistate.js)0
-rw-r--r--structxmldocument.html (renamed from html/structxmldocument.html)0
-rw-r--r--structxmldocument.js (renamed from html/structxmldocument.js)0
-rw-r--r--structxmlstate.html (renamed from html/structxmlstate.html)0
-rw-r--r--structxmlstate.js (renamed from html/structxmlstate.js)0
-rw-r--r--structz__clip__result.html (renamed from html/structz__clip__result.html)0
-rw-r--r--structz__clip__result.js (renamed from html/structz__clip__result.js)0
-rw-r--r--structz__stream__s.html (renamed from html/structz__stream__s.html)0
-rw-r--r--structz__stream__s.js (renamed from html/structz__stream__s.js)0
-rw-r--r--structzip64__eoc.html (renamed from html/structzip64__eoc.html)0
-rw-r--r--structzip64__eoc.js (renamed from html/structzip64__eoc.js)0
-rw-r--r--structzip64__eocl.html (renamed from html/structzip64__eocl.html)0
-rw-r--r--structzip64__eocl.js (renamed from html/structzip64__eocl.js)0
-rw-r--r--structzip__alignment__check.html (renamed from html/structzip__alignment__check.html)0
-rw-r--r--structzip__alignment__check.js (renamed from html/structzip__alignment__check.js)0
-rw-r--r--structzip__cd.html (renamed from html/structzip__cd.html)0
-rw-r--r--structzip__cd.js (renamed from html/structzip__cd.js)0
-rw-r--r--structzip__cd__ext.html (renamed from html/structzip__cd__ext.html)0
-rw-r--r--structzip__cd__ext.js (renamed from html/structzip__cd__ext.js)0
-rw-r--r--structzip__enc.html (renamed from html/structzip__enc.html)0
-rw-r--r--structzip__enc.js (renamed from html/structzip__enc.js)0
-rw-r--r--structzip__eoc.html (renamed from html/structzip__eoc.html)0
-rw-r--r--structzip__eoc.js (renamed from html/structzip__eoc.js)0
-rw-r--r--structzip__info.html (renamed from html/structzip__info.html)0
-rw-r--r--structzip__info.js (renamed from html/structzip__info.js)0
-rw-r--r--structzip__lfh.html (renamed from html/structzip__lfh.html)0
-rw-r--r--structzip__lfh.js (renamed from html/structzip__lfh.js)0
-rw-r--r--structzip__split.html (renamed from html/structzip__split.html)0
-rw-r--r--structzip__split.js (renamed from html/structzip__split.js)0
-rw-r--r--sunriset_8h_source.html (renamed from html/sunriset_8h_source.html)0
-rw-r--r--support_2espeak_2debug_8h_source.html (renamed from html/support_2espeak_2debug_8h_source.html)0
-rw-r--r--support_2espeak_2event_8h_source.html (renamed from html/support_2espeak_2event_8h_source.html)0
-rw-r--r--support_2espeak_2speech_8h_source.html (renamed from html/support_2espeak_2speech_8h_source.html)0
-rw-r--r--support_2libc_2sys_2types_8h_source.html (renamed from html/support_2libc_2sys_2types_8h_source.html)0
-rw-r--r--sync_off.png (renamed from html/sync_off.png)bin853 -> 853 bytes
-rw-r--r--sync_on.png (renamed from html/sync_on.png)bin845 -> 845 bytes
-rw-r--r--synthesize_8h_source.html (renamed from html/synthesize_8h_source.html)0
-rw-r--r--tab_a.png (renamed from html/tab_a.png)bin142 -> 142 bytes
-rw-r--r--tab_b.png (renamed from html/tab_b.png)bin169 -> 169 bytes
-rw-r--r--tab_h.png (renamed from html/tab_h.png)bin177 -> 177 bytes
-rw-r--r--tab_s.png (renamed from html/tab_s.png)bin184 -> 184 bytes
-rw-r--r--tabs.css (renamed from html/tabs.css)0
-rw-r--r--textfile_8h_source.html (renamed from html/textfile_8h_source.html)0
-rw-r--r--time_8h_source.html (renamed from html/time_8h_source.html)0
-rw-r--r--timeutil_8h_source.html (renamed from html/timeutil_8h_source.html)0
-rw-r--r--todo.html (renamed from html/todo.html)0
-rw-r--r--track_8h_source.html (renamed from html/track_8h_source.html)0
-rw-r--r--transform_8c.html (renamed from html/transform_8c.html)0
-rw-r--r--transform_8c.js (renamed from html/transform_8c.js)0
-rw-r--r--transform_8h_source.html (renamed from html/transform_8h_source.html)0
-rw-r--r--translate_8h_source.html (renamed from html/translate_8h_source.html)0
-rw-r--r--types_8h_source.html (renamed from html/types_8h_source.html)0
-rw-r--r--union__GDoubleIEEE754.html (renamed from html/union__GDoubleIEEE754.html)0
-rw-r--r--union__GDoubleIEEE754.js (renamed from html/union__GDoubleIEEE754.js)0
-rw-r--r--union__GFloatIEEE754.html (renamed from html/union__GFloatIEEE754.html)0
-rw-r--r--union__GFloatIEEE754.js (renamed from html/union__GFloatIEEE754.js)0
-rw-r--r--union__GSystemThread.html (renamed from html/union__GSystemThread.html)0
-rw-r--r--union__GSystemThread.js (renamed from html/union__GSystemThread.js)0
-rw-r--r--uniont__espeak__command_1_1command.html (renamed from html/uniont__espeak__command_1_1command.html)0
-rw-r--r--uniont__espeak__command_1_1command.js (renamed from html/uniont__espeak__command_1_1command.js)0
-rw-r--r--unionyyalloc.html (renamed from html/unionyyalloc.html)0
-rw-r--r--unionyyalloc.js (renamed from html/unionyyalloc.js)0
-rw-r--r--unionyystype.html (renamed from html/unionyystype.html)0
-rw-r--r--unionyystype.js (renamed from html/unionyystype.js)0
-rw-r--r--unistd_8h_source.html (renamed from html/unistd_8h_source.html)0
-rw-r--r--util_8h_source.html (renamed from html/util_8h_source.html)0
-rw-r--r--vasnprintf_8h_source.html (renamed from html/vasnprintf_8h_source.html)0
-rw-r--r--vasnwprintf_8h_source.html (renamed from html/vasnwprintf_8h_source.html)0
-rw-r--r--vehicleProxy_8h_source.html (renamed from html/vehicleProxy_8h_source.html)0
-rw-r--r--vehicle_8c.html (renamed from html/vehicle_8c.html)0
-rw-r--r--vehicle_8c.js (renamed from html/vehicle_8c.js)0
-rw-r--r--vehicle_8h_source.html (renamed from html/vehicle_8h_source.html)0
-rw-r--r--vehicle__android_8c.html (renamed from html/vehicle__android_8c.html)0
-rw-r--r--vehicle__android_8c.js (renamed from html/vehicle__android_8c.js)0
-rw-r--r--vehicle__gypsy_8c.html (renamed from html/vehicle__gypsy_8c.html)0
-rw-r--r--vehicle__gypsy_8c.js (renamed from html/vehicle__gypsy_8c.js)0
-rw-r--r--vehicle__null_8c.html (renamed from html/vehicle__null_8c.html)0
-rw-r--r--vehicle__null_8c.js (renamed from html/vehicle__null_8c.js)0
-rw-r--r--vehicle__qt5_8h_source.html (renamed from html/vehicle__qt5_8h_source.html)0
-rw-r--r--vehicle__webos_8h_source.html (renamed from html/vehicle__webos_8h_source.html)0
-rw-r--r--vehicleprofile_8h_source.html (renamed from html/vehicleprofile_8h_source.html)0
-rw-r--r--voice_8h_source.html (renamed from html/voice_8h_source.html)0
-rw-r--r--wave_8h_source.html (renamed from html/wave_8h_source.html)0
-rw-r--r--win32__gui__notify_8h_source.html (renamed from html/win32__gui__notify_8h_source.html)0
-rw-r--r--window_8h_source.html (renamed from html/window_8h_source.html)0
-rw-r--r--wordexp_8h_source.html (renamed from html/wordexp_8h_source.html)0
-rw-r--r--wprintf-parse_8h_source.html (renamed from html/wprintf-parse_8h_source.html)0
-rw-r--r--xmlconfig_8h_source.html (renamed from html/xmlconfig_8h_source.html)0
-rw-r--r--xpm2bmp_8h_source.html (renamed from html/xpm2bmp_8h_source.html)0
-rw-r--r--xsize_8h_source.html (renamed from html/xsize_8h_source.html)0
-rw-r--r--zconf_8h_source.html (renamed from html/zconf_8h_source.html)0
-rw-r--r--zipfile_8h_source.html (renamed from html/zipfile_8h_source.html)0
-rw-r--r--zlib_8h_source.html (renamed from html/zlib_8h_source.html)0
-rw-r--r--zutil_8h_source.html (renamed from html/zutil_8h_source.html)0
3669 files changed, 0 insertions, 559233 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
deleted file mode 100644
index 4f8a82d39..000000000
--- a/.circleci/config.yml
+++ /dev/null
@@ -1,112 +0,0 @@
-version: 2
-defaults: &defaults
- docker:
- - image: ubuntu:14.04
-
-jobs:
- build_linux:
- <<: *defaults
- steps:
- - checkout
- - run:
- name: Build for Linux
- command: |
- bash ci/setup_common_requirements.sh
- bash ci/build_linux.sh
- build_android_arm:
- <<: *defaults
- steps:
- - checkout
- - run:
- name: Setup common requirements
- command: |
- bash ci/setup_common_requirements.sh
- - run:
- name: Prepare the Android build environment
- command: |
- bash ci/setup_android.sh
- - run:
- name: Build for Android ARM
- command: |
- bash ci/build_android.sh
- - store_artifacts:
- path: android-arm/navit
- build_android_x86:
- <<: *defaults
- steps:
- - checkout
- - run:
- name: Setup common requirements
- command: |
- bash ci/setup_common_requirements.sh
- - run:
- name: Prepare the Android build environment
- command: |
- bash ci/setup_android.sh
- - run:
- name: Build for Android X86
- command: |
- bash ci/build_android_x86.sh
- - store_artifacts:
- path: android-x86/navit
- build_win32:
- <<: *defaults
- steps:
- - checkout
- - run:
- name: Build for Windows
- command: |
- bash ci/setup_common_requirements.sh
- bash ci/build_win32.sh
- build_wince:
- <<: *defaults
- steps:
- - checkout
- - run:
- name: Build for Windows CE
- command: |
- bash ci/setup_common_requirements.sh
- bash ci/build_wince.sh
- build_tomtom_minimal:
- <<: *defaults
- docker:
- - image: navit/tomtom-build-image
- steps:
- - checkout
- - run:
- name: Setup common requirements
- command: |
- bash ci/setup_common_requirements.sh
- - run:
- name: Build for Tomtom (minimal)
- command: |
- bash ci/build_tomtom_minimal.sh
- - store_artifacts:
- path: /output
- build_tomtom_plugin:
- <<: *defaults
- docker:
- - image: navit/tomtom-build-image
- steps:
- - checkout
- - run:
- name: Setup common requirements
- command: |
- bash ci/setup_common_requirements.sh
- - run:
- name: Build for Tomtom (plugin)
- command: |
- bash ci/build_tomtom_plugin.sh
- - store_artifacts:
- path: /output
-
-workflows:
- version: 2
- build_all:
- jobs:
- - build_linux
- - build_android_arm
- - build_android_x86
- - build_win32
- - build_tomtom_minimal
- - build_tomtom_plugin
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 8cee6228a..000000000
--- a/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/.gitk-tmp.*
-/CMakeLists.txt.user*
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 426de519d..000000000
--- a/AUTHORS
+++ /dev/null
@@ -1,7 +0,0 @@
-Michael Farmbauer <horwitz@users.sourceforge.net>
-Martin Schaller <martin-s@users.sourceforge.net>
-Pierre Grandin <kazer_@users.sourceforge.net>
-Alexander Atanasov <aatanasov@gmail.com>
-
-And all the Navit Team members and contributors.
-See http://wiki.navit-project.org/index.php/Navit_project_members_and_contributors for the full list!
diff --git a/CMakeLists.txt b/CMakeLists.txt
deleted file mode 100755
index d3d764d36..000000000
--- a/CMakeLists.txt
+++ /dev/null
@@ -1,863 +0,0 @@
-set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.navitproject.navit")
-set(MACOSX_BUNDLE_BUNDLE_NAME "Navit")
-message(STATUS "Building with CMake V${CMAKE_VERSION}")
-project(navit C)
-
-# Workaround for CMake issue 8345 / 9220, see http://trac.navit-project.org/ticket/1041
-if(DEFINED CMAKE_CXX_COMPILER AND CMAKE_CXX_COMPILER MATCHES "^$")
- set(CMAKE_CXX_COMPILER CMAKE_CXX_COMPILER-NOTFOUND)
-endif(DEFINED CMAKE_CXX_COMPILER AND CMAKE_CXX_COMPILER MATCHES "^$")
-if (NOT DISABLE_CXX)
- enable_language(CXX OPTIONAL)
-endif(NOT DISABLE_CXX)
-
-cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
-set(NAVIT_VERSION_MAJOR "0")
-set(NAVIT_VERSION_MINOR "5")
-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" CACHE STRING "Navit package name")
-set(PACKAGE_STRING "${PACKAGE} ${PACKAGE_VERSION}")
-
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
-include("${PROJECT_SOURCE_DIR}/cmake/navit_macros.cmake")
-
-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 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/icons 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)
- MESSAGE(STATUS "LIBDIR variable is not defined. It will be autodetected now.")
- MESSAGE(STATUS "You can set it manually with -DLIBDIR=<value>")
- # check 64 bit
- IF (CMAKE_SIZEOF_VOID_P EQUAL 4)
- 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/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)
- GET_FILENAME_COMPONENT (LIB_DIR ${LIBDIR} NAME)
- 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/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})
-endif(EXTRA_LIBS)
-
-if (EXTRA_INCLUDES)
- include_directories(${EXTRA_INCLUDES})
-endif(EXTRA_INCLUDES)
-
-if (EXTRA_LIBDIR)
- link_directories(${EXTRA_LIBDIR})
-endif(EXTRA_LIBDIR)
-
-### Detect environment
-
-add_plugin(support/espeak "Default" FALSE)
-add_feature(INTERNAL_ESPEAK_COMPLETE "build complete internal libespeak" FALSE)
-add_plugin(support/ezxml "native Glib found" FALSE)
-add_plugin(support/glib "native Glib found" FALSE)
-add_plugin(support/zlib "native zlib found" FALSE)
-add_plugin(support/libpng "native libpng found" FALSE)
-add_plugin(support/wordexp "native wordexp found" FALSE)
-add_plugin(support/gettext_intl "native libintl found" FALSE)
-add_module(font/freetype "freetype not found" FALSE)
-add_module(graphics/android "FreeType library not found" FALSE)
-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/qt5_qml "Qt5 Declarative not found" FALSE)
-add_module(gui/gtk "GTK libs not found" FALSE)
-add_module(vehicle/gpsd "gpsd lib not found" FALSE)
-add_module(vehicle/gypsy "gypsy lib not found" FALSE)
-add_module(vehicle/maemo "Default" FALSE)
-add_module(binding/win32 "Default" FALSE)
-add_module(binding/dbus "dbus-glib-1 not found" FALSE)
-add_module(binding/python "python libraries not found" FALSE)
-add_module(speech/dbus "dbus-glib-1 not found" FALSE)
-add_module(speech/cmdline "neither system() nor CreateProcess() found" FALSE)
-add_module(speech/qt5_espeak "Qt5 multimedia 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)
-add_feature(USE_NATIVE_LANGUAGE_SUPPORT "Gettext not found and not on Windows" FALSE)
-set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_SOURCE_DIR}/cpack.cmake")
-set(CPACK_PACKAGE_VENDOR "Navit team")
-set(CPACK_PACKAGE_VERSION_MAJOR ${NAVIT_VERSION_MAJOR})
-set(CPACK_PACKAGE_VERSION_MINOR ${NAVIT_VERSION_MINOR})
-set(CPACK_PACKAGE_VERSION_PATCH "${NAVIT_VERSION_PATCH}")
-set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
-set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/GPL-2")
-set(CPACK_NSIS_PACKAGE_NAME "Navit ${PACKAGE_VERSION}")
-set(CPACK_PACKAGE_FILE_NAME ${PACKAGE})
-set(CPACK_PACKAGE_EXECUTABLES "navit;Navit")
-set(CPACK_NSIS_HELP_LINK "http://www.navit-project.org/?page=contact")
-set(CPACK_NSIS_URL_INFO_ABOUT "http://www.navit-project.org")
-if(WIN32)
- add_feature(USE_NSIS "makensis not found" FALSE)
- FIND_PROGRAM(NSIS_EXECUTABLE NAMES makensis makensis.exe)
- if(NSIS_EXECUTABLE)
- set_with_reason(USE_NSIS "makensis found" TRUE)
- endif(NSIS_EXECUTABLE)
-
- set(CPACK_GENERATOR ZIP)
- if(USE_NSIS)
- list(APPEND CPACK_GENERATOR NSIS)
- endif(USE_NSIS)
- set(CPACK_PACKAGE_INSTALL_DIRECTORY Navit)
-endif(WIN32)
-INCLUDE (CPack)
-
-INCLUDE (CheckIncludeFiles)
-INCLUDE (CheckLibraryExists)
-INCLUDE (CheckFunctionExists)
-INCLUDE (CheckSymbolExists)
-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)
-find_package(OpenGL)
-find_package(GLUT)
-find_package(GTK2 2.6 COMPONENTS gtk)
-find_package(Gettext)
-find_package(PNG)
-find_package(DBusGLib)
-find_package(PythonLibs)
-find_package(OpenSSL)
-find_package(Threads)
-libfind_pkg_check_modules(FONTCONFIG fontconfig)
-#Qt detection
-if (NOT DISABLE_QT)
- 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)
- find_package(Qt5Multimedia)
- find_package(espeak)
- 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)
- pkg_check_modules(LIBLOCATION liblocation)
- pkg_check_modules(LIBOSSO libosso)
- # Accept even old versions of libgps, because N810 uses an old version (see #1179).
- pkg_check_modules(LIBGPS libgps)
- pkg_check_modules(LIBGPS19 libgps>=2.90)
- # libgpsd<V3.1 is buggy if LC_ALL is set.
- pkg_check_modules(LIBGPS_NEW libgps>=3.1)
- pkg_check_modules(LIBGARMIN libgarmin)
- pkg_check_modules(IMLIB2 imlib2)
- if(IMLIB2_FOUND)
- set(HAVE_IMLIB2 1)
- endif(IMLIB2_FOUND)
-endif(PKG_CONFIG_FOUND)
-#Simple checks
-CHECK_INCLUDE_FILES(wordexp.h HAVE_WORDEXP)
-CHECK_INCLUDE_FILES(endian.h HAVE_ENDIAN_H)
-CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
-CHECK_INCLUDE_FILES(byteswap.h HAVE_BYTESWAP_H)
-CHECK_LIBRARY_EXISTS(gypsy gypsy_control_get_default "" GYPSY_FOUND)
-CHECK_INCLUDE_FILES(libspeechd.h HAVE_LIBSPEECHD)
-CHECK_INCLUDE_FILES(sys/socket.h HAVE_SOCKET)
-CHECK_INCLUDE_FILES(sys/shm.h HAVE_SHMEM)
-CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
-if (NOT HAVE_SNPRINTF)
- CHECK_FUNCTION_EXISTS(_snprintf HAVE_DECL__SNPRINTF)
- if (HAVE_DECL__SNPRINTF)
- set(HAVE_SNPRINTF 1)
- endif(HAVE_DECL__SNPRINTF)
-endif(NOT HAVE_SNPRINTF)
-CHECK_INCLUDE_FILES(locale.h HAVE_LC_MESSAGES)
-CHECK_INCLUDE_FILES(libintl.h HAVE_LIBINTL)
-CHECK_INCLUDE_FILES(sys/time.h HAVE_SYS_TIME_H)
-CHECK_INCLUDE_FILES(getopt.h HAVE_GETOPT_H)
-CHECK_INCLUDE_FILES(string.h HAVE_STRING_H)
-CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
-CHECK_SYMBOL_EXISTS(system stdlib.h HAVE_SYSTEM)
-CHECK_SYMBOL_EXISTS(CreateProcess windows.h HAVE_CREATEPROCESS)
-CHECK_SYMBOL_EXISTS(stpcpy string.h HAVE_STPCPY)
-CHECK_FUNCTION_EXISTS(sbrk HAVE_SBRK)
-CHECK_FUNCTION_EXISTS(getdelim HAVE_GETDELIM)
-CHECK_FUNCTION_EXISTS(getline HAVE_GETLINE)
-CHECK_FUNCTION_EXISTS(fsync HAVE_FSYNC)
-
-
-### Configure build
-#Required libraries, supplied with navit
-if (NOT HAVE_LIBINTL)
- set_with_reason(support/gettext_intl "native libintl missing" TRUE)
- set(USE_LIBGNUINTL TRUE)
-else()
- CHECK_LIBRARY_EXISTS(intl libintl_fprintf "" NEEDS_LIBINTL)
- if (NEEDS_LIBINTL)
- list(APPEND NAVIT_LIBS intl)
- set(INTL_LIBS intl)
- endif(NEEDS_LIBINTL)
-endif(NOT HAVE_LIBINTL)
-
-if (CMAKE_USE_PTHREADS_INIT)
- if (NOT ANDROID)
- list(APPEND NAVIT_LIBS pthread)
- endif(NOT ANDROID)
-endif(CMAKE_USE_PTHREADS_INIT)
-if (Glib_FOUND)
- set(HAVE_GLIB 1)
- include_directories(${Glib_INCLUDE_DIRS})
- list(APPEND NAVIT_LIBS ${Glib_LIBRARIES})
-else(Glib_FOUND)
- set_with_reason(support/glib "Glib not found" TRUE ${INTL_LIBS})
-endif(Glib_FOUND)
-if (Gmodule_FOUND)
- set(HAVE_GMODULE 1)
- include_directories(${Gmodule_INCLUDE_DIRS})
- list(APPEND NAVIT_LIBS ${Gmodule_LIBRARIES})
-endif(Gmodule_FOUND)
-if(ZLIB_FOUND)
- set(HAVE_ZLIB 1)
- include_directories(${ZLIB_INCLUDE_DIRS})
- list(APPEND NAVIT_LIBS ${ZLIB_LIBRARIES})
-else(ZLIB_FOUND)
- message(STATUS "using internal zlib")
- set_with_reason(support/zlib "native zlib missing" TRUE)
-endif(ZLIB_FOUND)
-if(OPENSSL_CRYPTO_LIBRARIES)
- set(HAVE_LIBCRYPTO 1)
- include_directories(${OPENSSL_INCLUDE_DIR})
- list(APPEND NAVIT_LIBS ${OPENSSL_CRYPTO_LIBRARIES})
-endif()
-if(PNG_FOUND)
- set(HAVE_PNG 1)
- include_directories(${PNG_INCLUDE_DIR})
- list(APPEND NAVIT_LIBS ${PNG_LIBRARIES})
-else(PNG_FOUND)
- message(STATUS "using internal libpng")
- set_with_reason(support/libpng "native libpng missing" TRUE)
-endif(PNG_FOUND)
-if (NOT HAVE_WORDEXP)
- message(STATUS "wordexp.h not found. use internal wordexp")
- set_with_reason(support/wordexp "native wordexp missing" TRUE)
-endif()
-if (NOT Glib_FOUND)
- set_with_reason(support/ezxml "Glib not found" TRUE)
-endif()
-
-if(FREETYPE_FOUND)
- pkg_check_modules(FRIBIDI fribidi)
- pkg_check_modules(FRIBIDI2 fribidi>=0.19.0)
- include_directories(${FREETYPE_INCLUDE_DIRS})
- set_with_reason(font/freetype "freetype found" TRUE "${FREETYPE_LIBRARY};${FONTCONFIG_LDFLAGS};${FRIBIDI_LIBRARIES}")
-else(FREETYPE_FOUND)
- MESSAGE("No freetype library found, graphics modules may not be available")
- set_with_reason(graphics/android "FreeType library not found" FALSE)
- set_with_reason(graphics/gd "FreeType library not found" FALSE)
- 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)
- set(HAVE_FONTCONFIG 1)
-endif(FONTCONFIG_FOUND)
-
-if (QT_FOUND)
- if (QT_QTCORE_FOUND AND QT_QTGUI_FOUND AND FREETYPE_FOUND)
- include(${QT_USE_FILE})
- set_with_reason(graphics/qt_qpainter "Qt libraries found" TRUE ${QT_LIBRARIES})
-
- if (QT_QTDECLARATIVE_FOUND AND QT_QTXML_FOUND)
- set_with_reason(gui/qml "Qt Declarative found" TRUE ${QT_LIBRARIES})
- endif()
-
- if (QT_QTSVG_FOUND)
- set(HAVE_QT_SVG 1)
- elseif( USE_SVG AND graphics/qt_qpainter)
- message( WARNING "QT compiled without SVG support")
- 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()
- set_with_reason(gui/qt5_qml "Qt5 found" TRUE
- ${Qt5Quick_LIBRARIES})
-
- endif()
- set_with_reason(graphics/qt5 "Qt5 found" TRUE
- ${Qt5_ADDITIONAL_LIBRARIES}
- ${Qt5Svg_LIBRARIES}
- ${Qt5DBus_LIBRARIES})
- if (Qt5Multimedia_FOUND)
- if (espeak_FOUND)
- set_with_reason(support/espeak "native espeak found" FALSE)
- set_with_reason(speech/qt5_espeak "Qt5Multimedia and libespeak found" TRUE
- ${Qt5Multimedia_LIBRARIES}
- ${espeak_LIBRARIES})
- else()
- set_with_reason(support/espeak "native espeak missing" TRUE)
- set_with_reason(INTERNAL_ESPEAK_COMPLETE "speech_qt5_espeak requires full libespeak" TRUE)
- set_with_reason(speech/qt5_espeak "Qt5Multimedia found" TRUE
- ${Qt5Multimedia_LIBRARIES})
- endif()
- endif()
-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})
- include_directories(${GTK2_INCLUDE_DIRS})
- set(HAVE_GTK2 1)
- set_with_reason(gui/gtk "GTK libs found" TRUE ${GTK2_LIBRARIES})
- if(FREETYPE_FOUND)
- set_with_reason(graphics/gtk_drawing_area "GTK libs found" TRUE ${GTK2_LIBRARIES})
- endif(FREETYPE_FOUND)
-endif(GTK2_FOUND)
-
-CHECK_LIBRARY_EXISTS(freeimage FreeImage_Load "" HAVE_FREEIMAGE)
-if (USE_OPENGLES OR USE_OPENGLES2)
- CHECK_LIBRARY_EXISTS(EGL eglInitialize "" HAVE_EGL)
-endif(USE_OPENGLES OR USE_OPENGLES2)
-if (FREETYPE_FOUND)
- if (OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND AND OPENGL_INCLUDE_DIR)
- message (STATUS "opengl found: ${OPENGL_gl_LIBRARY}")
- include_directories(${OPENGL_INCLUDE_DIR})
- if (USE_OPENGLES2)
- set(USE_OPENGLES TRUE)
- set(GRAPHICS_OPENGL_LIBRARY GLESv2 EGL)
- elseif (USE_OPENGLES)
- set(GRAPHICS_OPENGL_LIBRARY GLESv1_CM EGL)
- else()
- set(GRAPHICS_OPENGL_LIBRARY ${OPENGL_gl_LIBRARY};${OPENGL_glu_LIBRARY};${GLUT_glut_LIBRARY})
- endif(USE_OPENGLES2)
- if (HAVE_FREEIMAGE)
- list(APPEND GRAPHICS_OPENGL_LIBRARY freeimage)
- endif(HAVE_FREEIMAGE)
- set_with_reason(graphics/opengl "Found OpenGL" TRUE ${GRAPHICS_OPENGL_LIBRARY})
- else()
- message (STATUS "opengl not found")
- endif()
-else()
- message (STATUS "no Freetype found")
-endif(FREETYPE_FOUND)
-
-if(SDL_FOUND AND SDLIMAGE_FOUND AND FREETYPE_FOUND)
- set(SDL_IMAGE 1)
- if(SDLTTF_FOUND)
- set(SDL_TTF 1)
- list(APPEND SDL_LIBRARY ${SDLTTF_LIBRARY})
- else(SDLTTF_FOUND)
- list(APPEND SDL_LIBRARY ${FREETYPE_LIBRARY})
- endif(SDLTTF_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(SDL2MAIN AND SDL2IMAGE AND GLES2)
-
-if (LIBGPS_FOUND)
- if (LIBGPS_NEW_FOUND)
- set(VEHICLE_GPSD_REASON "gpsd lib found")
- else(LIBGPS_NEW_FOUND)
- set(VEHICLE_GPSD_REASON "WARNING: old gpsd lib found, buggy if LC_ALL is set")
- endif(LIBGPS_NEW_FOUND)
- set_with_reason(vehicle/gpsd ${VEHICLE_GPSD_REASON} TRUE ${LIBGPS_LDFLAGS})
-endif(LIBGPS_FOUND)
-
-if (GYPSY_FOUND)
- set_with_reason(vehicle/gypsy "gypsy lib found" TRUE)
-endif(GYPSY_FOUND)
-
-if (LIBGARMIN_FOUND)
- include_directories(${LIBGARMIN_INCLUDE_DIRS})
- set_with_reason(map/garmin "Garmin library found" TRUE ${LIBGARMIN_LDFLAGS})
-endif(LIBGARMIN_FOUND)
-
-if(DBusGLib_FOUND)
- include_directories(${DBusGLib_INCLUDE_DIRS})
- set_with_reason(binding/dbus "dbus-glib-1 found" TRUE ${DBusGLib_LIBRARIES})
- set_with_reason(speech/dbus "dbus-glib-1 found" TRUE ${DBusGLib_LIBRARIES})
- set_with_reason(vehicle/gpsd_dbus "dbus-glib-1 found" TRUE ${DBusGLib_LIBRARIES})
-endif()
-
-if(PYTHONLIBS_FOUND)
- set_with_reason(binding/python "python libraries [${PYTHONLIBS_VERSION_STRING}] found" TRUE ${PYTHON_LIBRARIES})
-endif()
-
-if (HAVE_LIBSPEECHD)
- set_with_reason(speech/speech_dispatcher "speech_dispatcher lib found" TRUE speechd)
-endif(HAVE_LIBSPEECHD)
-
-if (HAVE_SYSTEM)
- set_with_reason(speech/cmdline "system() call is available" TRUE)
-endif(HAVE_SYSTEM)
-
-if (HAVE_CREATEPROCESS)
- set_with_reason(speech/cmdline "CreateProcess() call is available" TRUE)
-endif(HAVE_CREATEPROCESS)
-
-if (LIBLOCATION_FOUND)
- set_with_reason(vehicle/maemo "Maemo location library found" TRUE ${LIBLOCATION_LIBRARIES})
-endif(LIBLOCATION_FOUND)
-
-if (LIBOSSO_FOUND)
- set_with_reason(autoload/osso "Maemo osso library found" TRUE ${LIBOSSO_LIBRARIES})
-endif(LIBOSSO_FOUND)
-
-if (GETTEXT_FOUND)
- set_with_reason(USE_NATIVE_LANGUAGE_SUPPORT "Gettext found" TRUE)
-endif(GETTEXT_FOUND)
-
-#Independent modules
-add_module(graphics/null "Default" TRUE)
-add_module(osd/core "Default" TRUE)
-add_module(vehicle/demo "Default" TRUE)
-add_module(vehicle/file "Default" TRUE)
-add_module(vehicle/null "Default" FALSE)
-add_module(gui/internal "Default" TRUE)
-add_module(map/binfile "Default" TRUE)
-add_module(map/filter "Default" TRUE)
-if(NOT MSVC)
-add_module(map/mg "Default" TRUE)
-endif(NOT MSVC)
-add_module_plugin(support/shapefile "Default" TRUE)
-set(map_shapefile_INCLUDES "${CMAKE_SOURCE_DIR}/navit/support/shapefile")
-#set(map_shapefile_LIBRARY_DIRS "${CMAKE_BINARY_DIR}/navit/support/shapefile")
-set(map_shapefile_LIBS "support_shapefile")
-add_module(map/shapefile "Default" TRUE)
-add_module(map/textfile "Default" TRUE)
-add_module(map/csv "Default" TRUE)
-
-#Modules without test yet
-add_module(plugin/pedestrian "Default" FALSE)
-add_module(plugin/j1850 "Default" FALSE)
-add_module(speech/android "Default" FALSE)
-add_module(speech/espeak "Default" FALSE)
-add_module(speech/iphone "Default" FALSE)
-add_module(vehicle/android "Default" FALSE)
-add_module(vehicle/iphone "Default" FALSE)
-add_module(vehicle/wince "Default" FALSE)
-add_module(graphics/cocoa "Default" FALSE)
-
-# other features
-add_feature(USE_PLUGINS "default" TRUE)
-add_feature(USE_ROUTING "default" TRUE)
-add_feature(USE_SVG "default" TRUE)
-add_feature(SVG2PNG "default" TRUE)
-add_feature(SAMPLE_MAP "default" TRUE)
-add_feature(NETWORK_INFO "default" FALSE)
-
-IF(NOT svg2png_scaling)
- IF(NOT ANDROID)
- set(svg2png_scaling 0 16 32 48 64 96)
- ELSE()
- set(svg2png_scaling -1 24 32 48 64 96 128)
- ENDIF()
-ENDIF()
-IF(NOT svg2png_scaling_flag)
- IF(NOT ANDROID)
- set(svg2png_scaling_flag 32)
- ELSE()
- set(svg2png_scaling_flag -1 24 32 64 96)
- ENDIF()
-ENDIF()
-IF(NOT svg2png_scaling_nav)
- IF(NOT ANDROID)
- set(svg2png_scaling_nav 64)
- ELSE()
- set(svg2png_scaling_nav -1 24 32 48 64 96 128)
- ENDIF()
-ENDIF()
-
-add_feature(DBUS_USE_SYSTEM_BUS "default" FALSE)
-add_feature(BUILD_MAPTOOL "default" TRUE)
-add_feature(XSL_PROCESSING "default" TRUE)
-
-set(SUPPORTED_XSLT_PROCESSORS "saxonb-xslt;saxon;saxon8;saxon-xslt;xsltproc;transform.exe")
-find_program(XSLT_PROCESSOR NAMES ${SUPPORTED_XSLT_PROCESSORS})
-if(XSLT_PROCESSOR)
- message(STATUS "Found XSLT processor: ${XSLT_PROCESSOR}")
- execute_process(COMMAND ${XSLT_PROCESSOR} -snone ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test.xml ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test.xslt
- RESULT_VARIABLE SAXON_ERROR OUTPUT_QUIET ERROR_QUIET)
- if (NOT SAXON_ERROR)
- set (XSLT_PROCESSOR_OPTIONS -snone)
- endif()
- # additional parameter is passed to the stylesheet processor as transformation parameter
- macro(compose_xslt_transform_command CMDVAR XSLT_FILE SRC_XML DEST_XML)
- if(${XSLT_PROCESSOR} MATCHES "xsltproc")
- set(${CMDVAR} COMMAND ${XSLT_PROCESSOR} ${XSLT_PROCESSOR_OPTIONS} ${XSLT_FILE} ${SRC_XML} >${DEST_XML})
- else()
- set(${CMDVAR} COMMAND ${XSLT_PROCESSOR} ${XSLT_PROCESSOR_OPTIONS} ${SRC_XML} ${XSLT_FILE} ${ARGN} >${DEST_XML})
- endif()
- endmacro()
-else()
- cfg_feature(XSL_PROCESSING "Saxon missing" FALSE)
-endif(XSLT_PROCESSOR)
-
-if (NOT XSL_PROCESSING)
- message(WARNING "No XSLT processor available. You have to configure "
-"navit.xml yourself, or install an XSLT processor (supported: "
-"${SUPPORTED_XSLT_PROCESSORS}).")
-endif()
-
-### Platform specific settings
-if(NOT CACHE_SIZE)
- SET(CACHE_SIZE 1048576)
-endif(NOT CACHE_SIZE)
-
-if(WIN32 OR WINCE)
- SET(CMAKE_EXECUTABLE_SUFFIX ".exe")
- add_module(graphics/win32 "Windows detected" TRUE)
- add_plugin(support/win32 "Windows detected" TRUE)
-
- SET(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff -I ${CMAKE_CURRENT_SOURCE_DIR}/navit/gui/win32/resources <DEFINES> -i <SOURCE> -o <OBJECT>")
- set_with_reason(support/ezxml "Windows detected" TRUE)
- set_with_reason(speech/espeak "Windows detected" TRUE)
- #speech/espeak does use windows threads, and therefore needs only parts of
- #espeak lib. INTERNAL_ESPEAK_COMPLETE controls this.
- set_with_reason(INTERNAL_ESPEAK_COMPLETE "Windows detected" FALSE)
- set_with_reason(support/espeak "Windows detected" TRUE)
- set_with_reason(binding/win32 "Windows detected" TRUE)
-
- # vehicle_file is broken for windows. use vehicle_wince instead
- # whicle_wince isn't buildable on non-CE windows ssytems
-
- # plugins currently not supported on windows
- set_with_reason(USE_PLUGINS "win32: currently not supported" FALSE)
-
- set(HAVE_API_WIN32_BASE 1)
- set(EZXML_NOMMAP 1)
-
- # Image stuff
- if(NOT graphics/qt_qpainter)
- set_with_reason(USE_SVG "win32: SVGs currently not supported" FALSE)
- else(NOT graphics/qt_qpainter)
- MESSAGE(STATUS "win32: SVGs may not be supported by every available graphics")
- endif(NOT graphics/qt_qpainter)
-
- set(BIN_DIR bin)
- set(SHARE_DIR ./)
- set(LOCALE_DIR locale)
- set(IMAGE_DIR icons)
-
-
- if(HAVE_GTK2 AND NOT MSVC)
- #GTK requires special compile flags
- add_definitions("-mms-bitfields")
- endif(HAVE_GTK2 AND NOT MSVC)
- if(MSVC AND support/espeak)
- add_definitions(-DPLATFORM_WINDOWS)
- endif(MSVC AND support/espeak)
- CHECK_LIBRARY_EXISTS(ws2_32 WSAStartup "" HAVE_WINSOCK)
- if(HAVE_WINSOCK)
- list(APPEND NAVIT_LIBS ws2_32)
- else()
- CHECK_LIBRARY_EXISTS(ws2 WSAStartup "" HAVE_WINSOCK_2)
- if(HAVE_WINSOCK_2)
- set(HAVE_WINSOCK 1)
- list(APPEND NAVIT_LIBS ws2)
- endif()
- endif(HAVE_WINSOCK)
-
- if(MSVC)
- set(HAVE_PRAGMA_PACK 1)
- add_plugin(support/xgetopt "Windows detected" TRUE)
- endif(MSVC)
- set_with_reason(USE_NATIVE_LANGUAGE_SUPPORT "Windows detected" TRUE)
- enable_language(RC)
-
- set(XSLTS "windows;${XSLTS}" CACHE STRING "define a semicolon seperated list of XSLTs to process")
-endif()
-if (WIN32 AND NOT WINCE)
- set(HAVE_API_WIN32 1)
- set(HAVE_STDINT_H 1)
- list(APPEND NAVIT_LIBS winmm)
-endif()
-if(WINCE)
- add_plugin(support/libc "wince detected" TRUE)
- set(HAVE_API_WIN32_CE 1)
- set(BUILD_MAPTOOL FALSE)
- # mingw32ce since gcc 4.7.0 needs HAVE_PRAGMA_PACK as __attribute__((packed)) is broken, see gcc bug 52991
- set(HAVE_PRAGMA_PACK 1)
- set_with_reason(vehicle/file "wince: currently broken" FALSE)
- set_with_reason(vehicle/wince "wince detected" TRUE)
-endif()
-if (APPLE OR USE_UIKIT)
- set_with_reason(vehicle/iphone "apple detected" TRUE)
- set_with_reason(graphics/cocoa "apple detected" TRUE)
- if (EXISTS "${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks/VoiceServices.framework")
- set_with_reason(speech/iphone "apple detected" TRUE)
- endif()
- set(BUILD_BUNDLE TRUE CACHE BOOLEAN "build an osx bundle")
-endif()
-
-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}")
-
-find_program(BZCAT NAMES bzcat)
-if (SAMPLE_MAP)
- if(CMAKE_CROSSCOMPILING)
- cfg_feature(SAMPLE_MAP "downloading binary map because of cross compiling" TRUE)
- set(DOWNLOAD_SAMPLE_MAP TRUE)
- elseif(NOT BZCAT)
- cfg_feature(SAMPLE_MAP "downloading binary map because of missing bzcat" TRUE)
- set(DOWNLOAD_SAMPLE_MAP TRUE)
- elseif(NOT BUILD_MAPTOOL)
- cfg_feature(SAMPLE_MAP "downloading binary map because maptool compilation is disabled" TRUE)
- set(DOWNLOAD_SAMPLE_MAP TRUE)
- endif(CMAKE_CROSSCOMPILING)
-endif(SAMPLE_MAP)
-
-check_symbol_exists (getifaddrs "sys/types.h;ifaddrs.h" HAS_IFADDRS)
-if (HAS_IFADDRS)
- cfg_feature(NETWORK_INFO "ifaddrs.h found" TRUE)
-endif(HAS_IFADDRS)
-
-if(ANDROID)
- find_program(ANDROID_LOCATION NAMES android android.bat)
- find_program(ANT_LOCATION NAMES ant)
- if (NOT ANT_LOCATION)
- message_error("Could not find ant. Please install ant and add it to the search path.")
- else()
- execute_process(COMMAND ${ANT_LOCATION} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cmake RESULT_VARIABLE ANT_VERSION_OK OUTPUT_QUIET ERROR_QUIET)
- if(ANT_VERSION_OK GREATER 0)
- message(WARNING "Old ant version detected. If you need crash reporter, update to at least ant 1.8")
- endif()
- endif()
- if (NOT ANDROID_LOCATION)
- message_error( "Could not find 'Android SDK and AVD Manager'. Please install the android sdk and add the <android-sdk>/tools directory to the search path.")
- endif()
- set(XSLTS "android;${XSLTS}" CACHE STRING "define a semicolon seperated list of XSLTs to process")
- list(APPEND NAVIT_LIBS log)
- set(HAVE_API_ANDROID 1)
- set_with_reason(graphics/android "Android detected, NDK:${ANDROID_NDK_API_VERSION}, API:${ANDROID_API_VERSION}" TRUE)
- set_with_reason(speech/android "Android detected, NDK:${ANDROID_NDK_API_VERSION}, API:${ANDROID_API_VERSION}" TRUE)
- set_with_reason(vehicle/android "Android detected, NDK:${ANDROID_NDK_API_VERSION}, API:${ANDROID_API_VERSION}" TRUE)
- set(SHARED_LIBNAVIT TRUE)
-
- add_feature(XPM2PNG "Android detected" TRUE)
- set(NAVIT_COMPILE_FLAGS "${NAVIT_COMPILE_FLAGS} -fPIC")
-
-endif(ANDROID)
-
-if(FREETYPE_FOUND AND NOT FONTCONFIG_FOUND)
- add_subdirectory( "${CMAKE_CURRENT_SOURCE_DIR}/navit/fonts")
-endif()
-
-# Image conversion
-find_program(IMAGE_CONVERTER NAMES convert)
-execute_process(COMMAND ${IMAGE_CONVERTER} -list format OUTPUT_VARIABLE CONVERT_FORMATS)
-if(CONVERT_FORMATS MATCHES ".*XPM[ *][ ]*XPM[ ]*r[w-].*")
- set(IMAGE_CONVERTER_XPM ${IMAGE_CONVERTER})
-endif()
-
-set(CMAKE_APPBUNDLE_PATH "")
-if (SVG2PNG)
- if (NOT IMAGE_CONVERTER_SVGZ)
- set (SVG_CONVERTER_PROGS rsvg-convert ksvgtopng ksvgtopng4 inkscape)
- set (CMAKE_FIND_APPBUNDLE "NEVER")
- find_program(IMAGE_CONVERTER_SVGZ NAMES ${SVG_CONVERTER_PROGS} PATHS /Applications/Inkscape.app/Contents/Resources/bin)
- if (NOT IMAGE_CONVERTER_SVGZ)
- if(CONVERT_FORMATS MATCHES ".*[ ]*SVG[ ]*r[w-].*")
- set(IMAGE_CONVERTER_SVGZ ${IMAGE_CONVERTER})
- endif()
- endif()
- endif(NOT IMAGE_CONVERTER_SVGZ)
- if (NOT IMAGE_CONVERTER_SVG)
- set(IMAGE_CONVERTER_SVG ${IMAGE_CONVERTER_SVGZ})
- endif(NOT IMAGE_CONVERTER_SVG)
-
- message(STATUS "SVG2PNG-Converter: ${IMAGE_CONVERTER_SVGZ}")
- if (NOT IMAGE_CONVERTER_SVGZ)
- message(WARNING "No SVG2PNG converter found. Please install one of the following tools: ${SVG_CONVERTER_PROGS}, or imagemagick with svg support")
- set_with_reason(SVG2PNG "no converter found" FALSE)
- endif(NOT IMAGE_CONVERTER_SVGZ)
-endif(SVG2PNG)
-
-if (XPM2PNG)
- message(STATUS "XPM2PNG-Converter: ${IMAGE_CONVERTER_XPM}")
- if (NOT IMAGE_CONVERTER_XPM)
- message(WARNING "No XPM2PNG converter found. Please install imagemagick with xpm support")
- set_with_reason(XPM2PNG "no converter found" FALSE)
- endif(NOT IMAGE_CONVERTER_XPM)
-endif(XPM2PNG)
-
-set(XSLTS ${XSLTS} CACHE STRING "define a semicolon seperated list of XSLTs to process")
-
-# Plugins
-if(USE_PLUGINS)
- set(MODULE_BUILD_TYPE "MODULE")
- add_definitions("-fPIC")
- list(APPEND NAVIT_LIBS dl)
-else()
- set(MODULE_BUILD_TYPE "STATIC")
-endif(USE_PLUGINS)
-message(STATUS "Use plugins: ${MODULE_BUILD_TYPE}")
-
-CHECK_INCLUDE_FILES (malloc.h HAVE_MALLOC_H)
-CHECK_INCLUDE_FILES ("sys/param.h;sys/mount.h" HAVE_SYS_MOUNT_H)
-CHECK_INCLUDE_FILES (unistd.h HAVE_UNISTD_H)
-CHECK_FUNCTION_EXISTS (getcwd HAVE_GETCWD)
-CHECK_FUNCTION_EXISTS (memalign HAVE_MEMALIGN)
-CHECK_FUNCTION_EXISTS (valloc HAVE_VALLOC)
-CHECK_FUNCTION_EXISTS (posix_memalign HAVE_POSIX_MEMALIGN)
-CHECK_FUNCTION_EXISTS (popen HAVE_POPEN)
-CHECK_FUNCTION_EXISTS (_atoi64 HAVE__ATOI64)
-
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
-
-# Compile with -Wall -Wextra. We need all the help we can get from the compiler :-).
-# Disabled warnings:
-# -Wno-missing-field-initializers: Used a lot, does not seem problematic.
-# -Wno-unused-parameter: Unfortunately occurs frequently because of
-# functions implementing the interface of a plugin.
-# -Wno-sign-compare: We currently just use int almost everywhere.
-# Unclear if it's really worth correcting.
-if(CMAKE_COMPILER_IS_GNUCC OR CCMAKE_COMPILER_IS_GNUCXX)
- set(COMMON_COMPILER_FLAGS "-Wall -Wundef -Wcast-align -Wpointer-arith -Wno-unused-parameter -Wno-sign-compare")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}")
- set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}")
- # flags not available in old GCC versions, or not for both C and C++
- add_compiler_flag_if_available("-Wno-missing-field-initializers")
- add_compiler_flag_if_available("-Wextra")
- add_compiler_flag_if_available("-Wmissing-prototypes")
- add_compiler_flag_if_available("-Wstrict-prototypes")
- add_compiler_flag_if_available("-Wformat-security")
-endif()
-
-if (EXTRA_DEFINES)
- add_definitions("${EXTRA_DEFINES}")
-endif(EXTRA_DEFINES)
-
-if (NOT NAVIT_DEPENDENCY_ERROR)
- message("\nSummary:\n")
-
- set(SUMMARY_COMPONENTS ${ALL_PLUGINS} ${ALL_MODULE_PLUGINS} ${ALL_MODULES})
- list(SORT SUMMARY_COMPONENTS)
-
- set(LAST_TYPE NONE)
- foreach ( SUMMARY_COMP ${SUMMARY_COMPONENTS})
- # split path to type and name
- string(REPLACE "/" ";" SUMMARY_COMP_LIST ${SUMMARY_COMP})
- list(GET SUMMARY_COMP_LIST 0 SUMMARY_COMP_TYPE)
- list(LENGTH SUMMARY_COMP_LIST SUMMARY_COMP_LIST_LENGTH)
- if ( SUMMARY_COMP_LIST_LENGTH GREATER 1 )
- list(GET SUMMARY_COMP_LIST 1 SUMMARY_COMP_NAME)
- else()
- set(SUMMARY_COMP_NAME ${SUMMARY_COMP})
- endif()
- if ( NOT ${LAST_TYPE} STREQUAL ${SUMMARY_COMP_TYPE})
- message("\n--->>> ${SUMMARY_COMP_TYPE}")
- set(LAST_TYPE ${SUMMARY_COMP_TYPE})
- endif()
- if (${SUMMARY_COMP})
- message("Enabled ${SUMMARY_COMP_NAME} ( ${${SUMMARY_COMP}_REASON} )")
- else()
- message("Disabled ${SUMMARY_COMP_NAME} ( ${${SUMMARY_COMP}_REASON} )")
- endif()
- endforeach()
-
- list(SORT ALL_FEATURES)
- message("\n--->>> Features")
- foreach ( FEATURE ${ALL_FEATURES})
- if ( ${FEATURE} )
- message("Enabled ${FEATURE} ( ${${FEATURE}_REASON} )")
- else()
- message("Disabled ${FEATURE} ( ${${FEATURE}_REASON} )")
- endif()
- endforeach()
-
- if (XSL_PROCESSING)
- if (XSLTS)
- message("\nProcessing XSLT files: ${XSLTS}")
- else()
- message("\nProcessing XSLT files: NONE")
- endif(XSLTS)
- message("See navit/xslt for available XSLT files, and put them into "
- "cache variable 'XSLTS' (without extension .xslt).")
- endif(XSL_PROCESSING)
-
- message("\nTo configure your build use 'cmake -L' to find changeable variables and run cmake again with 'cmake -D <var-name>=<your value> ...'.")
-endif(NOT NAVIT_DEPENDENCY_ERROR)
-
-add_subdirectory (navit)
-add_subdirectory (man)
-
-
-if (USE_NATIVE_LANGUAGE_SUPPORT)
- add_subdirectory (po)
-endif(USE_NATIVE_LANGUAGE_SUPPORT)
diff --git a/COPYING b/COPYING
deleted file mode 100644
index d53a7767c..000000000
--- a/COPYING
+++ /dev/null
@@ -1,163 +0,0 @@
-The following files are lincensed under the terms of the
-GNU General Public License (see GPL-2):
-
-navit/tools/gpx2navit_txt/src/utils.c
-navit/tools/gpx2navit_txt/src/setmeta.c
-navit/tools/gpx2navit_txt/src/setpath.c
-navit/tools/gpx2navit_txt/src/emess.h
-navit/tools/gpx2navit_txt/src/main.c
-navit/tools/gpx2navit_txt/src/geod_for.c
-navit/tools/gpx2navit_txt/src/setwpt.c
-navit/tools/gpx2navit_txt/src/gpx2navit_txt.h
-navit/tools/gpx2navit_txt/src/geodesic.h
-navit/tools/gpx2navit_txt/src/geod_set.c
-navit/tools/gpx2navit_txt/src/errorcode.h
-navit/tools/gpx2navit_txt/src/geod_inv.c
-navit/tools/gpx2navit_txt/src/elementControl.c
-navit/tools/gpx2navit_txt/src/misc.c
-navit/tools/gpx2navit_txt/src/parser.c
-navit/tools/gpx2navit_txt/depcomp
-navit/tools/gpx2navit_txt/config.guess
-navit/tools/gpx2navit_txt/config.sub
-navit/tools/gpx2navit_txt/COPYING
-navit/tools/gpx2navit_txt/missing
-navit/vehicle/file/vehicle_file.c
-navit/vehicle/demo/vehicle_demo.c
-navit/vehicle/gpsd/vehicle_gpsd.c
-navit/gui/sdl/cegui_keyboard.h
-navit/gui/sdl/wmcontrol.c
-navit/gui/sdl/sdl_events.cpp
-navit/gui/sdl/wmcontrol.h
-navit/gui/sdl/gui_sdl.h
-navit/gui/sdl/sdl_events.h
-navit/gui/sdl/cegui_keyboard.cpp
-navit/gui/sdl/gui_sdl_window.cpp
-navit/gui/gtk/gui_gtk.h
-navit/gui/gtk/gui_gtk_window.c
-navit/gui/gtk/datawindow.c
-navit/gui/gtk/destination.c
-navit/gui/gtk/gui_gtk_statusbar.c
-navit/gui/gtk/gui_gtk_action.c
-navit/gui/internal/gui_internal.c
-navit/graphics/opengl/graphics_opengl.c
-navit/graphics/gtk_gl_ext/graphics_gtk_gl_ext.c
-navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp
-navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c
-navit/graphics/null/graphics_null.c
-navit/speech/cmdline/speech_cmdline.c
-navit/speech/speech_dispatcher/speech_speech_dispatcher.c
-navit/data/mg/tree.c
-navit/data/mg/poly.c
-navit/data/mg/street.c
-navit/data/mg/town.c
-navit/data/mg/mg.h
-navit/data/mg/block.c
-navit/data/mg/map.c
-navit/data/textfile/textfile.c
-navit/data/textfile/textfile.h
-navit/data/csv/csv.c
-navit/data/csv/csv.h
-navit/data/binfile/binfile.c
-navit/data/garmin_img/garmin_img.c
-navit/data/garmin/gentypes.c
-navit/data/garmin/gar2navit.c
-navit/data/garmin/garmin.c
-navit/osd/core/osd_core.c
-navit/binding/python/binding_python.c
-navit/binding/dbus/binding_dbus.c
-navit/country.c
-navit/track.c
-navit/util.c
-navit/debug.c
-navit/route.c
-navit/param.c
-navit/menu.c
-navit/speech.c
-navit/attr.c
-navit/transform.c
-navit/projection.c
-navit/layout.c
-navit/cursor.c
-navit/event.c
-navit/gui.c
-navit/osd.c
-navit/item.c
-navit/navigation.c
-navit/graphics.c
-navit/profile.c
-navit/popup.c
-navit/coord.c
-navit/maptool.c
-navit/mapset.c
-navit/plugin.c
-navit/data_window.c
-navit/search.c
-navit/map.c
-navit/maptype.c
-navit/file.c
-navit/vehicle.c
-navit/navit.c
-navit/log.c
-navit/phrase.c
-navit/main.c
-navit/xmlconfig.c
-navit/callback.c
-contrib/android_build.sh
-contrib/sjjb_import.pl
-
-The following files are lincensed under the terms of the
-GNU Library General Public License (see LGPL):
-
-navit/callback.h
-navit/country.h
-navit/track.h
-navit/item_def.h
-navit/util.h
-navit/debug.h
-navit/point.h
-navit/route.h
-navit/param.h
-navit/zipfile.h
-navit/menu.h
-navit/map_data.h
-navit/speech.h
-navit/data.h
-navit/attr.h
-navit/data_window_int.h
-navit/transform.h
-navit/plugin_def.h
-navit/projection.h
-navit/layout.h
-navit/cursor.h
-navit/color.h
-navit/destination.h
-navit/event.h
-navit/gui.h
-navit/osd.h
-navit/item.h
-navit/navigation.h
-navit/graphics.h
-navit/profile.h
-navit/popup.h
-navit/types.h
-navit/coord.h
-navit/draw_info.h
-navit/endianess.h
-navit/map-share.h
-navit/mapset.h
-navit/plugin.h
-navit/data_window.h
-navit/search.h
-navit/gtkext.h
-navit/layer.h
-navit/map.h
-navit/maptype.h
-navit/file.h
-navit/vehicle.h
-navit/log.h
-navit/navit.h
-navit/phrase.h
-navit/main.h
-navit/xmlconfig.h
-navit/attr_def.h
-
diff --git a/COPYRIGHT b/COPYRIGHT
deleted file mode 100644
index 1521cc8a2..000000000
--- a/COPYRIGHT
+++ /dev/null
@@ -1,2 +0,0 @@
-Unless stated otherwise, all files are:
-Copyright 2005 - 2016 Navit Team (see AUTHORS) and are licensed under the GPLv2 (see GPL-2 and COPYING)
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 411115f00..000000000
--- a/ChangeLog
+++ /dev/null
@@ -1,4 +0,0 @@
-Changes and documentation about Navit can be found in the wiki at:
- http://wiki.navit-project.org
-A timeline of opened and closed issue tickets can be found at our trac instance:
- http://trac.navit-project.org
diff --git a/html/ConvertUTF_8h_source.html b/ConvertUTF_8h_source.html
index 51d1872e0..51d1872e0 100644
--- a/html/ConvertUTF_8h_source.html
+++ b/ConvertUTF_8h_source.html
diff --git a/html/DownloaderAppDelegate_8h_source.html b/DownloaderAppDelegate_8h_source.html
index 1bb7c35da..1bb7c35da 100644
--- a/html/DownloaderAppDelegate_8h_source.html
+++ b/DownloaderAppDelegate_8h_source.html
diff --git a/html/DownloaderConstants_8h_source.html b/DownloaderConstants_8h_source.html
index 20abcaf2a..20abcaf2a 100644
--- a/html/DownloaderConstants_8h_source.html
+++ b/DownloaderConstants_8h_source.html
diff --git a/html/DownloaderDetailViewController_8h_source.html b/DownloaderDetailViewController_8h_source.html
index a299165d9..a299165d9 100644
--- a/html/DownloaderDetailViewController_8h_source.html
+++ b/DownloaderDetailViewController_8h_source.html
diff --git a/GPL-2 b/GPL-2
deleted file mode 100644
index d511905c1..000000000
--- a/GPL-2
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, 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 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.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/LGPL-2 b/LGPL-2
deleted file mode 100644
index 2676d08ae..000000000
--- a/LGPL-2
+++ /dev/null
@@ -1,481 +0,0 @@
- GNU LIBRARY GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL. It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it. You can use it for
-your libraries, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
- Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library. If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software. To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
- Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs. This
-license, the GNU Library General Public License, applies to certain
-designated libraries. This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
- The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it. Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program. However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
- Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries. We
-concluded that weaker conditions might promote sharing better.
-
- However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves. This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them. (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.) The hope is that this
-will lead to faster development of free libraries.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, while the latter only
-works together with the library.
-
- Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
- GNU LIBRARY GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License"). Each licensee is
-addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- c) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- d) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library 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 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
diff --git a/html/QNavitQuick_8h_source.html b/QNavitQuick_8h_source.html
index b5d048e3e..b5d048e3e 100644
--- a/html/QNavitQuick_8h_source.html
+++ b/QNavitQuick_8h_source.html
diff --git a/html/QNavitWidget_8h_source.html b/QNavitWidget_8h_source.html
index 654307dc4..654307dc4 100644
--- a/html/QNavitWidget_8h_source.html
+++ b/QNavitWidget_8h_source.html
diff --git a/html/Qt5EspeakAudioOut_8h_source.html b/Qt5EspeakAudioOut_8h_source.html
index fd715a2dd..fd715a2dd 100644
--- a/html/Qt5EspeakAudioOut_8h_source.html
+++ b/Qt5EspeakAudioOut_8h_source.html
diff --git a/README.md b/README.md
deleted file mode 100644
index 152419378..000000000
--- a/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-[![Build Status](https://img.shields.io/circleci/project/github/navit-gps/navit/trunk.svg)](https://circleci.com/gh/navit-gps/navit)
-
-Navit on Android tablet:
-
-![navit on android](https://raw.githubusercontent.com/navit-gps/navit/trunk/contrib/images/androidtablet.png)
-
-Navit on Linux based Carputer:
-
-![navit-nuc-osd](https://github.com/pgrandin/navit-nuc-layout/raw/master/screenshot.png)
-
-<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
-=====
-
-Navit is a open source (GPL) 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.
-
-Navit currently speaks over 70 languages!
-
-You can help translating via our web based translation page :
- http://translations.launchpad.net/navit/trunk/+pots/navit
-
-
-For help or more information, please refer to the wiki :
- http://wiki.navit-project.org
-
-If you don't know where to start, we recommend you to read the
-Interactive Help : http://wiki.navit-project.org/index.php/Interactive_help
-
-
-Maps:
-=====
-
-The best navigation system is useless without maps. Those three maps
-are known to work:
-
-- OpenStreetMaps : display, routing, but street name search isn't complete
- (see http://wiki.navit-project.org/index.php/OpenStreetMaps )
-
-- Grosser Reiseplaner and compliant maps : full support
- (see http://wiki.navit-project.org/index.php/European_maps )
-
-- Garmin maps : display, routing, search is being worked on
- (see http://wiki.navit-project.org/index.php/Garmin_maps )
-
-
-GPS Support:
-============
-
-Navit read the current vehicle position :
-- directly from a file
-- from gpsd (local or remote)
-- from udp server (friends tracking) (experimental)
-
-
-Routing algorithm
-=================
-
-NavIt uses a Dijkstra algorithm for routing. The routing starts at the
-destination by assigning a value to each point directly connected to
-destination point. The value represents the estimated time needed to
-pass this distance.
-
-Now the point with the lowest value is choosen using the Fibonacci
-heap and a value is assigned to connected points whos are
-unevaluated or whos current value ist greater than the new one.
-
-The search is repeated until the origin is found.
-
-Once the origin is reached, all that needs to be done is to follow the
-points with the lowest values to the destination.
-
diff --git a/html/RenderArea_8h_source.html b/RenderArea_8h_source.html
index ad013ba87..ad013ba87 100644
--- a/html/RenderArea_8h_source.html
+++ b/RenderArea_8h_source.html
diff --git a/html/RootViewController_8h_source.html b/RootViewController_8h_source.html
index c85d9952e..c85d9952e 100644
--- a/html/RootViewController_8h_source.html
+++ b/RootViewController_8h_source.html
diff --git a/html/StdAfx_8h_source.html b/StdAfx_8h_source.html
index 153be7ee3..153be7ee3 100644
--- a/html/StdAfx_8h_source.html
+++ b/StdAfx_8h_source.html
diff --git a/Toolchain/arm-apple-darwin9.cmake b/Toolchain/arm-apple-darwin9.cmake
deleted file mode 100644
index 90a0ab821..000000000
--- a/Toolchain/arm-apple-darwin9.cmake
+++ /dev/null
@@ -1,22 +0,0 @@
-
-# specify the cross compiler
-SET(CMAKE_C_COMPILER "arm-apple-darwin9-gcc")
-SET(CMAKE_CXX_COMPILER "arm-apple-darwin9-g++")
-SET(CMAKE_RC_COMPILER_INIT "arm-apple-darwin9-windres")
-SET(PKG_CONFIG_EXECUTABLE "arm-apple-darwin9-pkg-config")
-
-get_filename_component(COMPILER_PATH ${CMAKE_C_COMPILER} PATH)
-set (SDKROOT "/work/compile/cc/iphone/trunk/toolchain" CACHE STRING "PATH to iPhone SDK")
-set(CMAKE_FIND_ROOT_PATH "${SDKROOT}/sys")
-INCLUDE_DIRECTORIES("${SDKROOT}/sys/usr/include")
-
-SET(USE_UIKIT TRUE)
-SET(APPLE_BUILD TRUE)
-
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
-
-ADD_DEFINITIONS(-D__IPHONE_OS_VERSION_MIN_REQUIRED=20200)
-set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_REQUIRED_FLAGS} -lobjc -framework CoreFoundation -bind_at_load")
diff --git a/Toolchain/arm-eabi.cmake b/Toolchain/arm-eabi.cmake
deleted file mode 100755
index 5aec27692..000000000
--- a/Toolchain/arm-eabi.cmake
+++ /dev/null
@@ -1,31 +0,0 @@
-set(CMAKE_SYSTEM_NAME GNU)
-
-set(ANDROID TRUE)
-set(ANDROID_API_VERSION 9 CACHE STRING "Android API Version")
-set(ANDROID_NDK_API_VERSION ${ANDROID_API_VERSION} CACHE STRING "Android NDK API Version")
-set(ANDROID_ARCH "armeabi" CACHE STRING "Android architecture")
-
-find_program(CMAKE_C_COMPILER NAMES arm-eabi-gcc arm-eabi-gcc.exe arm-linux-androideabi-gcc arm-linux-androideabi-gcc.exe)
-find_program(CMAKE_CXX_COMPILER NAMES arm-eabi-gcc arm-eabi-g++.exe arm-linux-androideabi-g++ arm-linux-androideabi-g++.exe)
-set(PKG_CONFIG_EXECUTABLE "arm-eabi-pkg-config")
-
-get_filename_component(COMPILER_PATH ${CMAKE_C_COMPILER} PATH)
-
-set(ANDROID_NDK "${COMPILER_PATH}/../../../../.." CACHE STRING "PATH to Android NDK")
-
-set(NDK_ARCH_DIR "${ANDROID_NDK}/platforms/android-${ANDROID_NDK_API_VERSION}/arch-arm")
-set(CMAKE_FIND_ROOT_PATH ${NDK_ARCH_DIR})
-
-set(CMAKE_REQUIRED_FLAGS "-ldl --sysroot=${NDK_ARCH_DIR} ${EXTRA_COMPILER_FLAGS}")
-set(CMAKE_REQUIRED_INCLUDES "${NDK_ARCH_DIR}/usr/include")
-
-set(NAVIT_COMPILE_FLAGS "-I${NDK_ARCH_DIR}/usr/include -g -D_GNU_SOURCE -DANDROID -fno-short-enums ${CMAKE_REQUIRED_FLAGS}")
-
-set(CMAKE_SHARED_LINKER_FLAGS_INIT "${CMAKE_REQUIRED_FLAGS} -Wl,--no-undefined -Wl,-rpath,/system/lib")
-set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_REQUIRED_FLAGS} -Wl,--no-undefined")
-set(CMAKE_MODULE_LINKER_FLAGS_INIT "${CMAKE_REQUIRED_FLAGS} -Wl,-rpath,/data/data/org.navitproject.navit/lib")
-
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
diff --git a/Toolchain/arm-linux.cmake b/Toolchain/arm-linux.cmake
deleted file mode 100644
index c85a8a6dc..000000000
--- a/Toolchain/arm-linux.cmake
+++ /dev/null
@@ -1,14 +0,0 @@
-set ( CMAKE_SYSTEM_NAME GNU )
-
-# specify the cross compiler
-find_program ( CMAKE_C_COMPILER NAMES arm-linux-gcc )
-find_program ( CMAKE_CXX_COMPILER NAMES arm-linux-g++ )
-
-set ( TOMTOM_SDK_DIR /opt/tomtom-sdk )
-set ( CMAKE_FIND_ROOT_PATH ${TOMTOM_SDK_DIR} )
-
-set ( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
-set ( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
-set ( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
-set ( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY )
-add_definitions(-D_GNU_SOURCE)
diff --git a/Toolchain/arm-mingw32ce.cmake b/Toolchain/arm-mingw32ce.cmake
deleted file mode 100644
index 4ccdd22c4..000000000
--- a/Toolchain/arm-mingw32ce.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-SET(CMAKE_SYSTEM_NAME WINCE)
-
-# specify the cross compiler
-FIND_PROGRAM(CMAKE_C_COMPILER NAMES arm-mingw32ce-gcc arm-wince-mingw32ce-gcc)
-FIND_PROGRAM(CMAKE_CXX_COMPILER NAMES arm-mingw32ce-g++ arm-wince-mingw32ce-g++)
-FIND_PROGRAM(CMAKE_RC_COMPILER_INIT NAMES arm-mingw32ce-windres arm-wince-mingw32ce-windres)
-SET(PKG_CONFIG_EXECUTABLE "arm-mingw32ce-pkg-config")
-SET(WINCE TRUE)
diff --git a/Toolchain/i386-mingw32ce.cmake b/Toolchain/i386-mingw32ce.cmake
deleted file mode 100644
index a1cc562f6..000000000
--- a/Toolchain/i386-mingw32ce.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-SET(CMAKE_SYSTEM_NAME WINCE)
-
-# specify the cross compiler
-FIND_PROGRAM(CMAKE_C_COMPILER NAMES i386-mingw32ce-gcc )
-FIND_PROGRAM(CMAKE_CXX_COMPILER NAMES i386-mingw32ce-g++ )
-FIND_PROGRAM(CMAKE_RC_COMPILER_INIT NAMES i386-mingw32ce-windres )
-SET(PKG_CONFIG_EXECUTABLE "i386-mingw32ce-pkg-config")
-SET(WINCE TRUE)
diff --git a/Toolchain/i686-android.cmake b/Toolchain/i686-android.cmake
deleted file mode 100755
index 4f5630644..000000000
--- a/Toolchain/i686-android.cmake
+++ /dev/null
@@ -1,31 +0,0 @@
-set(CMAKE_SYSTEM_NAME GNU)
-
-set(ANDROID TRUE)
-set(ANDROID_API_VERSION 9 CACHE STRING "Android API Version")
-set(ANDROID_NDK_API_VERSION ${ANDROID_API_VERSION} CACHE STRING "Android NDK API Version")
-set(ANDROID_ARCH "x86" CACHE STRING "Android architecture")
-
-find_program(CMAKE_C_COMPILER NAMES i686-linux-android-gcc i686-linux-android-gcc.exe)
-find_program(CMAKE_CXX_COMPILER NAMES i686-linux-android-g++ i686-linux-android-g++.exe)
-set(PKG_CONFIG_EXECUTABLE "i686-android-pkg-config")
-
-get_filename_component(COMPILER_PATH ${CMAKE_C_COMPILER} PATH)
-
-set(ANDROID_NDK "${COMPILER_PATH}/../../../../.." CACHE STRING "PATH to Android NDK")
-
-set(NDK_ARCH_DIR "${ANDROID_NDK}/platforms/android-${ANDROID_NDK_API_VERSION}/arch-x86")
-set(CMAKE_FIND_ROOT_PATH ${NDK_ARCH_DIR})
-
-set(CMAKE_REQUIRED_FLAGS "-ldl --sysroot=${NDK_ARCH_DIR} ${EXTRA_COMPILER_FLAGS}")
-set(CMAKE_REQUIRED_INCLUDES "${NDK_ARCH_DIR}/usr/include")
-
-set(NAVIT_COMPILE_FLAGS "-I${NDK_ARCH_DIR}/usr/include -g -D_GNU_SOURCE -DANDROID -fno-short-enums ${CMAKE_REQUIRED_FLAGS}")
-
-set(CMAKE_SHARED_LINKER_FLAGS_INIT "${CMAKE_REQUIRED_FLAGS} -Wl,--no-undefined -Wl,-rpath,/system/lib")
-set(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_REQUIRED_FLAGS} -Wl,--no-undefined")
-set(CMAKE_MODULE_LINKER_FLAGS_INIT "${CMAKE_REQUIRED_FLAGS} -Wl,-rpath,/data/data/org.navitproject.navit/lib")
-
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
diff --git a/Toolchain/mingw32.cmake b/Toolchain/mingw32.cmake
deleted file mode 100644
index d00e7d6ab..000000000
--- a/Toolchain/mingw32.cmake
+++ /dev/null
@@ -1,21 +0,0 @@
-SET(CMAKE_SYSTEM_NAME Windows)
-
-FIND_PROGRAM(CMAKE_C_COMPILER NAMES i686-w64-mingw32-gcc i686-mingw32-gcc i586-mingw32-gcc i386-mingw32-gcc i586-mingw32msvc-gcc mingw32-gcc)
-FIND_PROGRAM(CMAKE_CXX_COMPILER NAMES i686-w64-mingw32-g++ i686-mingw32-g++ i586-mingw32-g++ i386-mingw32-g++ i586-mingw32msvc-g++ mingw32-g++)
-
-FIND_PROGRAM(CMAKE_RC_COMPILER_INIT NAMES i686-w64-mingw32-windres i686-mingw32-windres i586-mingw32-windres i386-mingw32-windres mingw32-windres i586-mingw32msvc-windres windres.exe)
-
-FIND_PROGRAM(CMAKE_AR NAMES i686-w64-mingw32-ar i686-mingw32-ar i586-mingw32-ar i386-mingw32-ar i586-mingw32msvc-ar mingw32-ar ar.exe)
-
-IF (NOT CMAKE_FIND_ROOT_PATH)
-EXECUTE_PROCESS(
- COMMAND ${CMAKE_C_COMPILER} -print-sysroot
- OUTPUT_VARIABLE CMAKE_FIND_ROOT_PATH
-)
-ENDIF(NOT CMAKE_FIND_ROOT_PATH)
-
-set(PKG_CONFIG_EXECUTABLE "mingw32-pkg-config")
-
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/Toolchain/xcode-iphone-sim.cmake b/Toolchain/xcode-iphone-sim.cmake
deleted file mode 100644
index 7e80940c8..000000000
--- a/Toolchain/xcode-iphone-sim.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-SET(USE_UIKIT 1)
-SET(TARGETSDK iPhoneSimulator3.2.sdk)
-SET(CMAKE_OSX_SYSROOT /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/${TARGETSDK} CACHE STRING "")
-SET(CMAKE_TRY_COMPILE_OSX_BUNDLE 1)
-SET(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT})
-SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
diff --git a/Toolchain/xcode-iphone.cmake b/Toolchain/xcode-iphone.cmake
deleted file mode 100644
index 06aa1d4ca..000000000
--- a/Toolchain/xcode-iphone.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-SET(USE_UIKIT 1)
-SET(TARGETSDK iPhoneOS4.3.sdk)
-SET(CMAKE_OSX_SYSROOT /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/${TARGETSDK} CACHE STRING "")
-SET(CMAKE_TRY_COMPILE_OSX_BUNDLE 1)
-SET(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer")
-SET(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT})
-SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
diff --git a/html/VSSpeechSynthesizer_8h_source.html b/VSSpeechSynthesizer_8h_source.html
index fcaad2879..fcaad2879 100644
--- a/html/VSSpeechSynthesizer_8h_source.html
+++ b/VSSpeechSynthesizer_8h_source.html
diff --git a/html/XF86keysym_8h_source.html b/XF86keysym_8h_source.html
index 1b2a90f3f..1b2a90f3f 100644
--- a/html/XF86keysym_8h_source.html
+++ b/XF86keysym_8h_source.html
diff --git a/html/XGetopt_8h_source.html b/XGetopt_8h_source.html
index 7f85074ed..7f85074ed 100644
--- a/html/XGetopt_8h_source.html
+++ b/XGetopt_8h_source.html
diff --git a/html/__mingw_8h_source.html b/__mingw_8h_source.html
index 1e6c034f7..1e6c034f7 100644
--- a/html/__mingw_8h_source.html
+++ b/__mingw_8h_source.html
diff --git a/html/addwinsock_8h_source.html b/addwinsock_8h_source.html
index 3602f63f2..3602f63f2 100644
--- a/html/addwinsock_8h_source.html
+++ b/addwinsock_8h_source.html
diff --git a/html/android_8h_source.html b/android_8h_source.html
index ae8a404fd..ae8a404fd 100644
--- a/html/android_8h_source.html
+++ b/android_8h_source.html
diff --git a/html/annotated.html b/annotated.html
index af8045389..af8045389 100644
--- a/html/annotated.html
+++ b/annotated.html
diff --git a/html/annotated.js b/annotated.js
index 418d63edf..418d63edf 100644
--- a/html/annotated.js
+++ b/annotated.js
diff --git a/html/announcement_8h_source.html b/announcement_8h_source.html
index 4e26aa4f1..4e26aa4f1 100644
--- a/html/announcement_8h_source.html
+++ b/announcement_8h_source.html
diff --git a/html/atom_8h_source.html b/atom_8h_source.html
index 967f2bebc..967f2bebc 100644
--- a/html/atom_8h_source.html
+++ b/atom_8h_source.html
diff --git a/html/attr_8h_source.html b/attr_8h_source.html
index 9d26bd38c..9d26bd38c 100644
--- a/html/attr_8h_source.html
+++ b/attr_8h_source.html
diff --git a/html/attr__def_8h.html b/attr__def_8h.html
index 49ffa29e6..49ffa29e6 100644
--- a/html/attr__def_8h.html
+++ b/attr__def_8h.html
diff --git a/html/attr__def_8h_source.html b/attr__def_8h_source.html
index aef660296..aef660296 100644
--- a/html/attr__def_8h_source.html
+++ b/attr__def_8h_source.html
diff --git a/html/backend_8h_source.html b/backend_8h_source.html
index 6077b92a1..6077b92a1 100644
--- a/html/backend_8h_source.html
+++ b/backend_8h_source.html
diff --git a/html/bc_s.png b/bc_s.png
index 224b29aa9..224b29aa9 100644
--- a/html/bc_s.png
+++ b/bc_s.png
Binary files differ
diff --git a/html/bdwn.png b/bdwn.png
index 940a0b950..940a0b950 100644
--- a/html/bdwn.png
+++ b/bdwn.png
Binary files differ
diff --git a/html/binding__win32_8h_source.html b/binding__win32_8h_source.html
index a116605ba..a116605ba 100644
--- a/html/binding__win32_8h_source.html
+++ b/binding__win32_8h_source.html
diff --git a/html/bluetooth_8h_source.html b/bluetooth_8h_source.html
index ec3ce0a1e..ec3ce0a1e 100644
--- a/html/bluetooth_8h_source.html
+++ b/bluetooth_8h_source.html
diff --git a/html/bookmarksProxy_8h_source.html b/bookmarksProxy_8h_source.html
index f6609d77f..f6609d77f 100644
--- a/html/bookmarksProxy_8h_source.html
+++ b/bookmarksProxy_8h_source.html
diff --git a/html/bookmarks_8h_source.html b/bookmarks_8h_source.html
index 996e7d20c..996e7d20c 100644
--- a/html/bookmarks_8h_source.html
+++ b/bookmarks_8h_source.html
diff --git a/html/cJSON_8h_source.html b/cJSON_8h_source.html
index f5823fc67..f5823fc67 100644
--- a/html/cJSON_8h_source.html
+++ b/cJSON_8h_source.html
diff --git a/html/cache_8h_source.html b/cache_8h_source.html
index f4b012696..f4b012696 100644
--- a/html/cache_8h_source.html
+++ b/cache_8h_source.html
diff --git a/html/callback_8h_source.html b/callback_8h_source.html
index 3c83b056f..3c83b056f 100644
--- a/html/callback_8h_source.html
+++ b/callback_8h_source.html
diff --git a/html/ceglue_8h_source.html b/ceglue_8h_source.html
index 2e49c3919..2e49c3919 100644
--- a/html/ceglue_8h_source.html
+++ b/ceglue_8h_source.html
diff --git a/ci/basic_upload_apks.py b/ci/basic_upload_apks.py
deleted file mode 100644
index b4b439536..000000000
--- a/ci/basic_upload_apks.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/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
deleted file mode 100644
index 536ab7781..000000000
--- a/ci/build.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-set -e
-
-echo "$# build script (s) to run"
-
-for i in $(seq 1 $#); do
- eval s=\$$i
- echo "Starting build script #$i : $s"
- if [ ! -z $CIRCLE_ARTIFACTS ]; then
- set -o pipefail
- bash -e $s 2>&1 | tee $CIRCLE_ARTIFACTS/${i}.log
- else
- bash -e $s
- fi
-done
diff --git a/ci/build_android.sh b/ci/build_android.sh
deleted file mode 100644
index ad42c78c2..000000000
--- a/ci/build_android.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-set -e
-
-apt-get update && apt-get install -y wget
-
-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-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=android-${ARCH}
-
-export ANDROID_SDK_HOME=/opt/android-sdk-linux
-export ANDROID_HOME=/opt/android-sdk-linux
-export PATH=${PATH}:${ANDROID_SDK_HOME}/tools:${ANDROID_SDK_HOME}/platform-tools:/opt/tools
-
-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
-pushd $BUILD_PATH
-
-android list targets
-
-cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain/arm-eabi.cmake -DCACHE_SIZE='(20*1024*1024)' -DAVOID_FLOAT=1 -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n -DANDROID_API_VERSION=25 -DANDROID_NDK_API_VERSION=19 ../
-
-make -j $(nproc --all)
-
-if [[ "${CIRCLE_BRANCH}" == "master" ]]; then
- make -j $(nproc --all) apkg-release && mv navit/android/bin/Navit-release-unsigned.apk navit/android/bin/navit-$CIRCLE_SHA1-${ARCH}-release-unsigned.apk || exit 1
-else
- make -j $(nproc --all) apkg && mv navit/android/bin/Navit-debug.apk navit/android/bin/navit-$CIRCLE_SHA1-${ARCH}-debug.apk || exit 1
-fi
-
-echo
-echo "Build leftovers :"
-find .
diff --git a/ci/build_android_x86.sh b/ci/build_android_x86.sh
deleted file mode 100644
index 6e84bc4e1..000000000
--- a/ci/build_android_x86.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-set -e
-
-apt-get update && apt-get install -y wget
-
-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-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=android-${ARCH}
-
-export ANDROID_SDK_HOME=/opt/android-sdk-linux
-export ANDROID_HOME=/opt/android-sdk-linux
-export PATH=${PATH}:${ANDROID_SDK_HOME}/tools:${ANDROID_SDK_HOME}/platform-tools:/opt/tools
-
-
-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
-pushd $BUILD_PATH
-
-android list targets
-
-cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain/i686-android.cmake -DAVOID_FLOAT=1 -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n -DANDROID_API_VERSION=25 -DANDROID_NDK_API_VERSION=19 -DDISABLE_CXX=1 -DDISABLE_QT=1 ..
-make -j $(nproc --all)
-
-if [[ "${CIRCLE_BRANCH}" == "master" ]]; then
- make -j $(nproc --all) apkg-release && mv navit/android/bin/Navit-release-unsigned.apk navit/android/bin/navit-$CIRCLE_SHA1-${ARCH}-release-unsigned.apk || exit 1
-else
- make -j $(nproc --all) apkg && mv navit/android/bin/Navit-debug.apk navit/android/bin/navit-$CIRCLE_SHA1-${ARCH}-debug.apk || exit 1
-fi
-
-echo
-echo "Build leftovers :"
-find .
diff --git a/ci/build_linux.sh b/ci/build_linux.sh
deleted file mode 100644
index 14abb7597..000000000
--- a/ci/build_linux.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-set -e
-
-COVERITY_VERSION="2017.07"
-
-apt-get install -y libpng12-dev librsvg2-bin libfreetype6-dev libdbus-glib-1-dev libgtk2.0-dev curl
-
-cmake_opts="-Dgraphics/qt_qpainter:BOOL=FALSE -Dgui/qml:BOOL=FALSE -DSVG2PNG:BOOL=FALSE -DSAMPLE_MAP=n -Dgraphics/gtk_drawing_area:BOOL=TRUE"
-
-mkdir ${CIRCLE_WORKING_DIRECTORY}/linux-bin && cd ${CIRCLE_WORKING_DIRECTORY}/linux-bin
-
-if [[ "${CIRCLE_PROJECT_USERNAME}" == "navit-gps" && "${CIRCLE_BRANCH}" == "trunk" ]]; then
- # If we are building the official trunk code, push an update to coverity
- wget -nv -c -O /tmp/cov-analysis-linux64-${COVERITY_VERSION}.tar.gz http://sd-55475.dedibox.fr/cov-analysis-linux64-${COVERITY_VERSION}.tar.gz
- tar xfz /tmp/cov-analysis-linux64-${COVERITY_VERSION}.tar.gz --no-same-owner -C /usr/local/share/
- export PATH=/usr/local/share/cov-analysis-linux64-${COVERITY_VERSION}/bin:$PATH
-
- cov-build --dir cov-int cmake ${CIRCLE_WORKING_DIRECTORY}/ ${cmake_opts}
- cov-build --dir cov-int make -j $(nproc --all) || exit -1
- tar czvf navit.tgz cov-int
-
- curl --form token=$COVERITY_TOKEN \
- --form email=$COVERITY_EMAIL \
- --form file=@navit.tgz \
- --form version="${CIRCLE_BRANCH}-$CIRCLE_SHA1" \
- --form description="${CIRCLE_BRANCH}-$CIRCLE_SHA1" \
- https://scan.coverity.com/builds?project=$CIRCLE_PROJECT_USERNAME
-
- # Then update the translation template on launchpad
- 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
-
-else
- cmake ${CIRCLE_WORKING_DIRECTORY}/ ${cmake_opts} || exit -1
- make -j $(nproc --all) || exit -1
-fi
-
-if [[ "$CIRCLE_ARTIFACTS" != "" ]]; then
- cp -r navit/icons $CIRCLE_ARTIFACTS
-fi
diff --git a/ci/build_tomtom_minimal.sh b/ci/build_tomtom_minimal.sh
deleted file mode 100644
index a178b9733..000000000
--- a/ci/build_tomtom_minimal.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/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
-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=$(nproc --all)
-
-mkdir -p build
-pushd 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=../Toolchain/$ARCH.cmake \
--DDISABLE_QT=ON -DSAMPLE_MAP=n -DBUILD_MAPTOOL=n
-make -j$JOBS
-make install
-
-# creating directories
-OUT_PATH="/tmp/tomtom/sdcard"
-[ -d $OUT_PATH ] && rm -rf $OUT_PATH
-mkdir -p $OUT_PATH/navit/bin
-mkdir -p $OUT_PATH/navit/share/fonts
-mkdir -p $OUT_PATH/navit/share/icons
-mkdir -p $OUT_PATH/navit/share/maps
-mkdir -p $OUT_PATH/navit/share/locale
-
-# navit executable
-cp navit/navit $OUT_PATH/navit/bin
-
-# fonts
-cp -r ../navit/fonts/*.ttf $OUT_PATH/navit/share/fonts
-
-# images and xml
-cp $PREFIX/share/navit/icons/*16.png $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/icons/*32.png $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/icons/*48.png $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/icons/*64.png $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/icons/nav*.* $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/icons/country*.png $OUT_PATH/navit/share/icons
-cd ..
-cp $PREFIX/share/navit/navit.xml ./tomtom480.xml
-
-# locale
-cp -r $PREFIX/share/locale $OUT_PATH/navit/share/locale
-
-
-cd $OUT_PATH
-mkdir /output
-zip -r /output/navitom_minimal.zip navit
diff --git a/ci/build_tomtom_plugin.sh b/ci/build_tomtom_plugin.sh
deleted file mode 100644
index 51a15f815..000000000
--- a/ci/build_tomtom_plugin.sh
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/bin/sh
-# this builds a plugin for tomtom
-# 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=$(nproc --all)
-
-echo "Jobs"
-echo $JOBS
-
-# espeak
-pushd /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
-pushd 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
-pushd src
-make install
-popd # src
-popd # espeak-*
-popd # /tmp
-
-
-# navit
-mkdir -p build
-pushd 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
-
-# creating directories
-OUT_PATH="/tmp/tomtom/sdcard"
-[ -d $OUT_PATH ] && rm -rf $OUT_PATH
-mkdir -p $OUT_PATH/navit/bin
-mkdir -p $OUT_PATH/navit/lib
-mkdir -p $OUT_PATH/navit/sdl
-mkdir -p $OUT_PATH/navit/ts
-mkdir -p $OUT_PATH/navit/share/fonts
-mkdir -p $OUT_PATH/navit/share/icons
-mkdir -p $OUT_PATH/navit/share/maps
-mkdir -p $OUT_PATH/navit/share/locale
-
-cp $PREFIX/lib/libfreetype.so.6 $OUT_PATH/navit/lib
-cp $PREFIX/lib/libSDL-1.2.so.0 $OUT_PATH/navit/lib
-cp $PREFIX/lib/libSDL_image-1.2.so.0 $OUT_PATH/navit/lib
-cp $PREFIX/lib/libfreetype.so.6 $OUT_PATH/navit/lib
-cp $PREFIX/lib/libgio-2.0.so $OUT_PATH/navit/lib
-cp $PREFIX/lib/libglib-2.0.so $OUT_PATH/navit/lib/libglib-2.0.so.0
-cp $PREFIX/lib/libgmodule-2.0.so $OUT_PATH/navit/lib/libgmodule-2.0.so.0
-cp $PREFIX/lib/libgobject-2.0.so $OUT_PATH/navit/lib/libgobject-2.0.so.0
-cp $PREFIX/lib/libgthread-2.0.so $OUT_PATH/navit/lib/libgthread-2.0.so.0
-cp $PREFIX/lib/libpng16.so.16 $OUT_PATH/navit/lib
-cp $PREFIX/lib/libts-1.0.so.0 $OUT_PATH/navit/lib
-cp $PREFIX/lib/libxml2.so.2 $OUT_PATH/navit/lib
-cp $PREFIX/lib/libz.so.1 $OUT_PATH/navit/lib
-cp $TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/$ARCH/lib/libstdc++.so.5 $OUT_PATH/navit/lib
-cp $PREFIX/etc/ts.conf $OUT_PATH/navit/ts
-
-# flite
-# cp $PREFIX/bin/flite* bin/
-
-# http://forum.navit-project.org/viewtopic.php?f=17&t=568
-arm-linux-gcc -O2 -I$PREFIX/include -I$PREFIX/usr/include ../contrib/tomtom/espeakdsp.c -o $OUT_PATH/navit/bin/espeakdsp
-
-# SDL testvidinfo
-cp $PREFIX/usr/bin/testvidinfo $OUT_PATH/navit/sdl
-
-# navit executable and wrapper
-cp $PREFIX/bin/navit $OUT_PATH/navit/bin
-cp ../contrib/tomtom/navit-wrapper $OUT_PATH/navit/bin/navit-wrapper
-
-# fonts
-cp -r ../navit/fonts/*.ttf $OUT_PATH/navit/share/fonts
-
-# ts
-cp -r $PREFIX/lib/ts $OUT_PATH/navit/lib/
-cp $PREFIX/bin/ts_* $OUT_PATH/navit/ts/
-
-# images and xml
-cp $PREFIX/share/navit/icons/*16.png $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/icons/*32.png $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/icons/*48.png $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/icons/*64.png $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/icons/nav*.* $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/icons/country*.png $OUT_PATH/navit/share/icons
-cp $PREFIX/share/navit/navit.xml ./tomtom480.xml
-
-
-# locale
-cp -r $PREFIX/share/locale $OUT_PATH/navit/share/locale
-
-# espeak
-cp -r ~/share/espeak-data $OUT_PATH/navit/share/
-cp $PREFIX/bin/espeak $OUT_PATH/navit/bin/
-cp $PREFIX/lib/libespeak.so.1 $OUT_PATH/navit/lib
-
-# add a menu button
-cp -r ../contrib/tomtom/SDKRegistry/ $OUT_PATH/
-cp -r ../contrib/tomtom/ts $OUT_PATH/
-
-convert $PREFIX/share/icons/hicolor/128x128/apps/navit.png -type truecolor -crop 100x100+12+28 -resize 48x48 $OUT_PATH/SDKRegistry/navit.bmp
-convert -background none ../navit/icons/tomtom_plus.svg -resize 80x80 $OUT_PATH/navit/share/icons/tomtom_plus_80_80.png
-convert -background none ../navit/icons/tomtom_minus.svg -resize 80x80 $OUT_PATH/navit/share/icons/tomtom_minus_80_80.png
-
-
-cd $OUT_PATH
-mkdir /output
-zip -r /output/navitom_plugin.zip navit SDKRegistry ts
diff --git a/ci/build_win32.sh b/ci/build_win32.sh
deleted file mode 100644
index 47b05b9d2..000000000
--- a/ci/build_win32.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-apt-get update && apt-get install -y mingw32 mingw32-binutils mingw32-runtime default-jdk nsis
-
-mkdir win32
-pushd win32
-cmake -Dbinding/python:BOOL=FALSE -DSAMPLE_MAP=n -DCMAKE_TOOLCHAIN_FILE=../Toolchain/mingw32.cmake ../ && make -j $(nproc --all) && make -j $(nproc --all) package
-popd
-
-cp win32/*.exe $CIRCLE_ARTIFACTS/
diff --git a/ci/build_wince.sh b/ci/build_wince.sh
deleted file mode 100644
index 7d0b3b471..000000000
--- a/ci/build_wince.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-mkdir wince && cd wince
-cmake ../ -DCMAKE_TOOLCHAIN_FILE=Toolchain/arm-mingw32ce.cmake -DXSLTS=windows -DCACHE_SIZE=10485760 -Dsvg2png_scaling:STRING=16,32 -Dsvg2png_scaling_nav:STRING=32 -Dsvg2png_scaling_flag=16 -DSAMPLE_MAP=n
-make
diff --git a/ci/dbus_tests.py b/ci/dbus_tests.py
deleted file mode 100644
index fe343da32..000000000
--- a/ci/dbus_tests.py
+++ /dev/null
@@ -1,52 +0,0 @@
-import glob
-import dbus
-from dbus import glib
-import gobject
-import sys
-import os
-import time
-from subprocess import call
-from junit_xml import TestSuite, TestCase
-
-
-gobject.threads_init()
-
-glib.init_threads()
-
-bus = dbus.SessionBus()
-
-navit_object = bus.get_object("org.navit_project.navit", # Connection name
- "/org/navit_project/navit/default_navit" ) # Object's path
-
-iface = dbus.Interface(navit_object, dbus_interface="org.navit_project.navit.navit")
-junit_directory=sys.argv[1]
-if not os.path.exists(junit_directory):
- os.makedirs(junit_directory)
-
-tests=[]
-start_time = time.time()
-test_cases = TestCase("zoom (factor) expected 512", '', time.time() - start_time, '', '')
-iface.zoom(-2)
-zoom=iface.get_attr("zoom")[1]
-if zoom !=512 :
- test_cases.add_failure_info('zoom level mismatch. Got '+str(zoom)+', expected 512')
-tests.append(test_cases)
-
-test_cases = TestCase("zoom (factor) expected 1024", '', time.time() - start_time, '', '')
-iface.zoom(-2)
-zoom=iface.get_attr("zoom")[1]
-if zoom !=1024 :
- test_cases.add_failure_info('zoom level mismatch. Got '+str(zoom)+', expected 1024')
-tests.append(test_cases)
-
-test_cases = TestCase("zoom via set_attr expected 512", '', time.time() - start_time, '', '')
-iface.set_attr("zoom", 512)
-zoom=iface.get_attr("zoom")[1]
-if zoom !=512 :
- test_cases.add_failure_info('zoom level mismatch. Got '+str(zoom)+', expected 512')
-tests.append(test_cases)
-
-ts = [TestSuite("Navit dbus tests", tests)]
-
-with open(junit_directory+'dbus.xml', 'w+') as f:
- TestSuite.to_file(f, ts, prettyprint=False)
diff --git a/ci/docker/tomtom/Dockerfile b/ci/docker/tomtom/Dockerfile
deleted file mode 100644
index adddbdbf8..000000000
--- a/ci/docker/tomtom/Dockerfile
+++ /dev/null
@@ -1,106 +0,0 @@
-FROM ubuntu:14.04
-
-RUN apt-get update && apt-get install -y libglib2.0-dev git autogen autoconf libtool imagemagick zip \
- wget build-essential gettext cmake \
- && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-RUN dpkg --add-architecture i386 && apt-get update \
- && apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386 \
- && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-
-ENV ARCH=arm-linux
-ENV TOMTOM_SDK_DIR=/opt/tomtom-sdk
-ENV PREFIX=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/$ARCH/sys-root
-ENV PATH=$TOMTOM_SDK_DIR/gcc-3.3.4_glibc-2.3.2/bin:$PREFIX/bin/:$PATH
-ENV CFLAGS="-O2 -I$PREFIX/include -I$PREFIX/usr/include"
-ENV CPPFLAGS="-I$PREFIX/include -I$PREFIX/usr/include"
-ENV LDFLAGS="-L$PREFIX/lib -L$PREFIX/usr/lib"
-ENV CC=$ARCH-gcc
-ENV CXX=$ARCH-g++
-ENV LD=$ARCH-ld
-ENV NM="$ARCH-nm -B"
-ENV AR=$ARCH-ar
-ENV RANLIB=$ARCH-ranlib
-ENV STRIP=$ARCH-strip
-ENV OBJCOPY=$ARCH-objcopy
-ENV LN_S="ln -s"
-ENV PKG_CONFIG_LIBDIR=$PREFIX/lib/pkgconfig
-RUN mkdir -p $TOMTOM_SDK_DIR
-
-RUN 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 /tmp \
- && tar xzf /tmp/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz -C $TOMTOM_SDK_DIR \
- && rm /tmp/toolchain_redhat_gcc-3.3.4_glibc-2.3.2-20060131a.tar.gz
-
-# zlib
-RUN wget -nv -c http://zlib.net/zlib-1.2.11.tar.gz -P /tmp && cd /tmp/ \
- && tar xzf zlib-1.2.11.tar.gz && cd zlib-1.2.11 \
- && ./configure --prefix=$PREFIX && make && make install \
- && rm -rf /tmp/zlib-1.2.11 /tmp/zlib-1.2.11.tar.gz
-
-# libxml
-RUN wget -nv -c http://xmlsoft.org/sources/libxml2-2.7.8.tar.gz -P /tmp && cd /tmp/ \
- && tar xzf libxml2-2.7.8.tar.gz && cd libxml2-2.7.8/ \
- && ./configure --prefix=$PREFIX --host=$ARCH --without-python && make && make install \
- && rm -rf /tmp/libxml2-2.7.8/ /tmp/libxml2-2.7.8.tar.gz
-
-# libpng
-RUN wget -nv -c https://github.com/navit-gps/dependencies/raw/master/tomtom/libpng-1.6.29.tar.gz -P /tmp && cd /tmp/ \
- && tar xzf libpng-1.6.29.tar.gz && cd libpng-1.6.29/ \
- && ./configure --prefix=$PREFIX --host=$ARCH && make && make install \
- && rm -rf /tmp/libpng-1.6.29/ /tmp/libpng-1.6.29.tar.gz
-
-# Freetype
-RUN wget -nv -c http://download.savannah.gnu.org/releases/freetype/freetype-2.5.0.tar.gz -P /tmp && cd /tmp/ \
- && tar xzf freetype-2.5.0.tar.gz && cd freetype-2.5.0 \
- && ./configure --prefix=$PREFIX --host=$ARCH && make && make install \
- && rm -rf /tmp/freetype-2.5.0 /tmp/freetype-2.5.0.tar.gz
-
-# freetype-config --cflags
-
-# glib
-
-# chmod a-w tomtom.cache
-COPY tomtom.cache /tmp/
-
-RUN wget -nv -c http://ftp.gnome.org/pub/gnome/sources/glib/2.25/glib-2.25.17.tar.gz -P /tmp && cd /tmp / \
- && tar xzf glib-2.25.17.tar.gz && cd glib-2.25.17 \
- && mv /tmp/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 && make install \
- && rm -rf /tmp/glib-2.25.17 /tmp/glib-2.25.17.tar.gz
-
-# tslib
-RUN git clone https://github.com/playya/tslib-svn.git /tmp/tslib-svn && cd /tmp/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 \
- && ./autogen.sh && ./configure --prefix=$PREFIX --host=$ARCH \
- && make && make install \
- && rm -rf /tmp/tslib-svn/
-
-# SDL
-RUN wget -nv -c http://www.libsdl.org/release/SDL-1.2.15.tar.gz -P /tmp && cd /tmp/ \
- && 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 && make install \
- && cd test && ./configure --prefix=$PREFIX --host=$ARCH \
- && make testvidinfo && cp testvidinfo $PREFIX/usr/bin/ \
- && rm -rf /tmp/SDL-1.2.15 /tmp/SDL-1.2.15.tar.gz
-
-# sdl image
-RUN wget -nv -c http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz -P /tmp/ && cd /tmp/ \
- && tar xzf SDL_image-1.2.12.tar.gz && cd SDL_image-1.2.12 \
- && ./configure --prefix=$PREFIX --host=$ARCH && make && make install \
- && rm -rf /tmp/SDL_image-1.2.12 /tmp/SDL_image-1.2.12.tar.gz
-
-COPY entrypoint.sh /
-CMD bash /entrypoint.sh
diff --git a/ci/docker/tomtom/README.md b/ci/docker/tomtom/README.md
deleted file mode 100644
index badaf2707..000000000
--- a/ci/docker/tomtom/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-This is the code used to build the image available at https://hub.docker.com/r/navit/tomtom-build-image/
-
-If you want to build and use that image locally, you can do the following:
-docker build . -t navit/tomtom-build-image
-docker run -ti -v /tmp:/output navit/tomtom-build-image /bin/bash /entrypoint.sh
-
-The resulting build will be in your /tmp/ folder.
diff --git a/ci/docker/tomtom/entrypoint.sh b/ci/docker/tomtom/entrypoint.sh
deleted file mode 100644
index e70e1cb5e..000000000
--- a/ci/docker/tomtom/entrypoint.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-git clone https://github.com/navit-gps/navit.git
-cd navit
-bash ci/build_tomtom_minimal.sh
diff --git a/ci/docker/tomtom/tomtom.cache b/ci/docker/tomtom/tomtom.cache
deleted file mode 100644
index ea2cb3faf..000000000
--- a/ci/docker/tomtom/tomtom.cache
+++ /dev/null
@@ -1,5 +0,0 @@
-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
diff --git a/ci/import_translations.sh b/ci/import_translations.sh
deleted file mode 100644
index 33d94e9c4..000000000
--- a/ci/import_translations.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-# Let's check if there is files in the import queue
-[ -d po/import_queue/ ] || exit 0
-
-# Let's fix the headers of the .po files in the import queue
-for i in po/import_queue/*.po; do
- b=`basename $i`;
- po=${b#*-};
- code=${po%.*}
- git checkout -b i18n/$code
- lname=`head -n1 ${i} | sed 's/# \(.*\) translation.\{0,1\} for navit/\1/'`
- if [[ $lname == "" ]]; then
- echo "Cannot find the language name in the header of $i"
- exit 1
- fi
- d=`date +"%Y"`
- echo "# ${lname} translations for navit" > po/${po}.header
- echo "# Copyright (C) 2006-${d} The Navit Team" >> po/${po}.header
- echo "# This file is distributed under the same license as the navit package." >> po/${po}.header
- echo "# Many thanks to the contributors of this translation:" >> po/${po}.header
- # Build a clean list of the contributors
- IFS=$'\n'
- echo "Downloading https://translations.launchpad.net/navit/trunk/+pots/navit/${code}/+details"
- contributors=`wget -q https://translations.launchpad.net/navit/trunk/+pots/navit/${code}/+details -O - | egrep '^ <a href=".+?" class="sprite person">'`
- for user in $contributors; do
- url=`echo $user|cut -d'"' -f2`
- name=`echo $user|cut -d'>' -f2|cut -d'<' -f1`
- echo "# $name $url" >> po/${po}.header
- done
- echo '' >> po/${po}.header
- echo 'msgid ""' >> po/${po}.header
-
- # We remove two tags that just generate noise
- sed -i '/X-Launchpad-Export-Date/d' ${i}
- sed -i '/X-Generator/d' ${i}
- sed -i '/POT-Creation-Date/d' ${i}
-
- # Let's put the translation from launchpad without the header
- mv po/${po}.header po/${po}.in
- sed '1,/msgid ""/ d' ${i} >> po/${po}.in
-
- git add po/${po}.in && rm $i
- git commit -m "Updated ${lname} translation from launchpad" po/${po}.in
- git push --set-upstream origin i18n/${code}
-done
diff --git a/ci/merge_i18n_update.sh b/ci/merge_i18n_update.sh
deleted file mode 100644
index 1943b27e4..000000000
--- a/ci/merge_i18n_update.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-message=`git log -1 --pretty=%B`
-git config --global user.name "CircleCI"
-git config --global user.email circleci@navit-project.org
-git rebase trunk
-git checkout trunk
-git pull
-git merge --squash ${CIRCLE_BRANCH}
-git commit -m "${message}"
-git push
diff --git a/ci/pointer-64.png b/ci/pointer-64.png
deleted file mode 100644
index 904f6878d..000000000
--- a/ci/pointer-64.png
+++ /dev/null
Binary files differ
diff --git a/ci/publish.sh b/ci/publish.sh
deleted file mode 100644
index a92f620b8..000000000
--- a/ci/publish.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-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
deleted file mode 100644
index 4c937dc7d..000000000
--- a/ci/run_linux_tests.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/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" @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
-
-# 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
-
-# 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
-
diff --git a/ci/setup_android.sh b/ci/setup_android.sh
deleted file mode 100644
index 64e250635..000000000
--- a/ci/setup_android.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-apt-get update && apt-get install -y software-properties-common
-add-apt-repository -y ppa:openjdk-r/ppa
-apt-get update && apt-get install -y openjdk-8-jdk wget expect git curl libsaxonb-java ant
-apt-get remove -y openjdk-7-jre-headless
-
-export ANDROID_SDK_HOME=/opt/android-sdk-linux
-export ANDROID_HOME=/opt/android-sdk-linux
-
-cd /opt && wget -q https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz -O android-sdk.tgz
-cd /opt && tar -xvzf android-sdk.tgz
-cd /opt && rm -f android-sdk.tgz
-
-export PATH=${PATH}:${ANDROID_SDK_HOME}/tools:${ANDROID_SDK_HOME}/platform-tools:/opt/tools
-
-echo y | android update sdk --no-ui --all --filter platform-tools | grep 'package installed'
-#RUN echo y | android update sdk --no-ui --all --filter extra-android-support | grep 'package installed'
-
-echo y | android update sdk --no-ui --all --filter android-25 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter android-24 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter android-23 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter android-18 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter android-16 | grep 'package installed'
-
-echo y | android update sdk --no-ui --all --filter build-tools-25.0.3 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter build-tools-25.0.2 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter build-tools-25.0.1 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter build-tools-25.0.0 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter build-tools-24.0.3 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter build-tools-24.0.2 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter build-tools-24.0.1 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter build-tools-23.0.3 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter build-tools-23.0.2 | grep 'package installed'
-echo y | android update sdk --no-ui --all --filter build-tools-23.0.1 | grep 'package installed'
-
diff --git a/ci/setup_common_requirements.sh b/ci/setup_common_requirements.sh
deleted file mode 100644
index f5fa73cef..000000000
--- a/ci/setup_common_requirements.sh
+++ /dev/null
@@ -1 +0,0 @@
-apt-get update && apt-get install -y wget unzip cmake build-essential gettext
diff --git a/ci/setup_tomtom_requirements.sh b/ci/setup_tomtom_requirements.sh
deleted file mode 100644
index 00bd33c44..000000000
--- a/ci/setup_tomtom_requirements.sh
+++ /dev/null
@@ -1,167 +0,0 @@
-#!/bin/sh
-# this builds navit for tomtom
-
-set -e
-
-# install additional packages to build TT evitonment and navit
-apt-get install -y libglib2.0-dev git autogen autoconf libtool imagemagick zip
-dpkg --add-architecture i386
-apt-get update
-apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386
-
-#remove disturbing build artefact for second run
-rm -f /opt/tomtom-sdk/gcc-3.3.4_glibc-2.3.2/arm-linux/sys-root/bin//glib-genmarshal
-
-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=$(nproc --all)
-
-echo "Jobs"
-echo $JOBS
-
-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 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.29.tar.gz"
-then
- wget -nv -c https://github.com/navit-gps/dependencies/raw/master/tomtom/libpng-1.6.29.tar.gz -P ~/tomtom_assets
-fi
-
-# toolchain
-cd /tmp
-mkdir -p $TOMTOM_SDK_DIR
-tar xzf ~/tomtom_assets/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.11.tar.gz
-tar xzf zlib-1.2.11.tar.gz
-cd zlib-1.2.11
-./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 ~/tomtom_assets/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
-
-
-# in the end we only want Navit locale
-rm -r $PREFIX/share/locale
-
diff --git a/ci/xdotools.sh b/ci/xdotools.sh
deleted file mode 100644
index b745d9f39..000000000
--- a/ci/xdotools.sh
+++ /dev/null
@@ -1,97 +0,0 @@
-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/html/classBackend.html b/classBackend.html
index ddf2abb26..ddf2abb26 100644
--- a/html/classBackend.html
+++ b/classBackend.html
diff --git a/html/classBackend.js b/classBackend.js
index d4ca247f6..d4ca247f6 100644
--- a/html/classBackend.js
+++ b/classBackend.js
diff --git a/html/classBackend.png b/classBackend.png
index e877f8707..e877f8707 100644
--- a/html/classBackend.png
+++ b/classBackend.png
Binary files differ
diff --git a/html/classBookmarkObject.html b/classBookmarkObject.html
index 2fa2aed9c..2fa2aed9c 100644
--- a/html/classBookmarkObject.html
+++ b/classBookmarkObject.html
diff --git a/html/classBookmarkObject.js b/classBookmarkObject.js
index 36d48ff0a..36d48ff0a 100644
--- a/html/classBookmarkObject.js
+++ b/classBookmarkObject.js
diff --git a/html/classBookmarkObject.png b/classBookmarkObject.png
index 68ed703ee..68ed703ee 100644
--- a/html/classBookmarkObject.png
+++ b/classBookmarkObject.png
Binary files differ
diff --git a/html/classMapObject.html b/classMapObject.html
index 729f041ec..729f041ec 100644
--- a/html/classMapObject.html
+++ b/classMapObject.html
diff --git a/html/classMapObject.js b/classMapObject.js
index b85c7a8f7..b85c7a8f7 100644
--- a/html/classMapObject.js
+++ b/classMapObject.js
diff --git a/html/classMapObject.png b/classMapObject.png
index d0ce7dcc3..d0ce7dcc3 100644
--- a/html/classMapObject.png
+++ b/classMapObject.png
Binary files differ
diff --git a/html/classNGQMainWindow.html b/classNGQMainWindow.html
index 650ce30ec..650ce30ec 100644
--- a/html/classNGQMainWindow.html
+++ b/classNGQMainWindow.html
diff --git a/html/classNGQMainWindow.js b/classNGQMainWindow.js
index 5464d8baa..5464d8baa 100644
--- a/html/classNGQMainWindow.js
+++ b/classNGQMainWindow.js
diff --git a/html/classNGQMainWindow.png b/classNGQMainWindow.png
index 9f62ee45a..9f62ee45a 100644
--- a/html/classNGQMainWindow.png
+++ b/classNGQMainWindow.png
Binary files differ
diff --git a/html/classNGQPoint.html b/classNGQPoint.html
index 948e0021a..948e0021a 100644
--- a/html/classNGQPoint.html
+++ b/classNGQPoint.html
diff --git a/html/classNGQPoint.js b/classNGQPoint.js
index 80b4f6489..80b4f6489 100644
--- a/html/classNGQPoint.js
+++ b/classNGQPoint.js
diff --git a/html/classNGQPoint.png b/classNGQPoint.png
index 017bb9ce8..017bb9ce8 100644
--- a/html/classNGQPoint.png
+++ b/classNGQPoint.png
Binary files differ
diff --git a/html/classNGQProxy.html b/classNGQProxy.html
index 85cfda38f..85cfda38f 100644
--- a/html/classNGQProxy.html
+++ b/classNGQProxy.html
diff --git a/html/classNGQProxy.js b/classNGQProxy.js
index 9fba51d7f..9fba51d7f 100644
--- a/html/classNGQProxy.js
+++ b/classNGQProxy.js
diff --git a/html/classNGQProxy.png b/classNGQProxy.png
index a0e6307ee..a0e6307ee 100644
--- a/html/classNGQProxy.png
+++ b/classNGQProxy.png
Binary files differ
diff --git a/html/classNGQProxyBookmarks.html b/classNGQProxyBookmarks.html
index d064b99c4..d064b99c4 100644
--- a/html/classNGQProxyBookmarks.html
+++ b/classNGQProxyBookmarks.html
diff --git a/html/classNGQProxyBookmarks.js b/classNGQProxyBookmarks.js
index 345fad909..345fad909 100644
--- a/html/classNGQProxyBookmarks.js
+++ b/classNGQProxyBookmarks.js
diff --git a/html/classNGQProxyBookmarks.png b/classNGQProxyBookmarks.png
index c91b31933..c91b31933 100644
--- a/html/classNGQProxyBookmarks.png
+++ b/classNGQProxyBookmarks.png
Binary files differ
diff --git a/html/classNGQProxyGui.html b/classNGQProxyGui.html
index 617b0e45f..617b0e45f 100644
--- a/html/classNGQProxyGui.html
+++ b/classNGQProxyGui.html
diff --git a/html/classNGQProxyGui.js b/classNGQProxyGui.js
index 645ca130a..645ca130a 100644
--- a/html/classNGQProxyGui.js
+++ b/classNGQProxyGui.js
diff --git a/html/classNGQProxyGui.png b/classNGQProxyGui.png
index 490ff201f..490ff201f 100644
--- a/html/classNGQProxyGui.png
+++ b/classNGQProxyGui.png
Binary files differ
diff --git a/html/classNGQProxyNavit.html b/classNGQProxyNavit.html
index 6cababf6b..6cababf6b 100644
--- a/html/classNGQProxyNavit.html
+++ b/classNGQProxyNavit.html
diff --git a/html/classNGQProxyNavit.js b/classNGQProxyNavit.js
index 1ffe9d4ee..1ffe9d4ee 100644
--- a/html/classNGQProxyNavit.js
+++ b/classNGQProxyNavit.js
diff --git a/html/classNGQProxyNavit.png b/classNGQProxyNavit.png
index 6d420634b..6d420634b 100644
--- a/html/classNGQProxyNavit.png
+++ b/classNGQProxyNavit.png
Binary files differ
diff --git a/html/classNGQProxyRoute.html b/classNGQProxyRoute.html
index ca0152a5a..ca0152a5a 100644
--- a/html/classNGQProxyRoute.html
+++ b/classNGQProxyRoute.html
diff --git a/html/classNGQProxyRoute.js b/classNGQProxyRoute.js
index 406c325bc..406c325bc 100644
--- a/html/classNGQProxyRoute.js
+++ b/classNGQProxyRoute.js
diff --git a/html/classNGQProxyRoute.png b/classNGQProxyRoute.png
index 4bf80a998..4bf80a998 100644
--- a/html/classNGQProxyRoute.png
+++ b/classNGQProxyRoute.png
Binary files differ
diff --git a/html/classNGQProxySearch.html b/classNGQProxySearch.html
index c610a1a1f..c610a1a1f 100644
--- a/html/classNGQProxySearch.html
+++ b/classNGQProxySearch.html
diff --git a/html/classNGQProxySearch.js b/classNGQProxySearch.js
index 40a9065f8..40a9065f8 100644
--- a/html/classNGQProxySearch.js
+++ b/classNGQProxySearch.js
diff --git a/html/classNGQProxySearch.png b/classNGQProxySearch.png
index 14f741825..14f741825 100644
--- a/html/classNGQProxySearch.png
+++ b/classNGQProxySearch.png
Binary files differ
diff --git a/html/classNGQProxyVehicle.html b/classNGQProxyVehicle.html
index 6d17df1b2..6d17df1b2 100644
--- a/html/classNGQProxyVehicle.html
+++ b/classNGQProxyVehicle.html
diff --git a/html/classNGQProxyVehicle.js b/classNGQProxyVehicle.js
index 690ab72d3..690ab72d3 100644
--- a/html/classNGQProxyVehicle.js
+++ b/classNGQProxyVehicle.js
diff --git a/html/classNGQProxyVehicle.png b/classNGQProxyVehicle.png
index c014d89dd..c014d89dd 100644
--- a/html/classNGQProxyVehicle.png
+++ b/classNGQProxyVehicle.png
Binary files differ
diff --git a/html/classNGQStandardItemModel.html b/classNGQStandardItemModel.html
index b1c605f60..b1c605f60 100644
--- a/html/classNGQStandardItemModel.html
+++ b/classNGQStandardItemModel.html
diff --git a/html/classNGQStandardItemModel.js b/classNGQStandardItemModel.js
index 74d4dfe9b..74d4dfe9b 100644
--- a/html/classNGQStandardItemModel.js
+++ b/classNGQStandardItemModel.js
diff --git a/html/classNGQStandardItemModel.png b/classNGQStandardItemModel.png
index cddf90737..cddf90737 100644
--- a/html/classNGQStandardItemModel.png
+++ b/classNGQStandardItemModel.png
Binary files differ
diff --git a/html/classPoiObject.html b/classPoiObject.html
index de4eeb0c3..de4eeb0c3 100644
--- a/html/classPoiObject.html
+++ b/classPoiObject.html
diff --git a/html/classPoiObject.js b/classPoiObject.js
index cdfce15f5..cdfce15f5 100644
--- a/html/classPoiObject.js
+++ b/classPoiObject.js
diff --git a/html/classPoiObject.png b/classPoiObject.png
index a51fa7939..a51fa7939 100644
--- a/html/classPoiObject.png
+++ b/classPoiObject.png
Binary files differ
diff --git a/html/classQNavitGeoReceiver.html b/classQNavitGeoReceiver.html
index f7561a327..f7561a327 100644
--- a/html/classQNavitGeoReceiver.html
+++ b/classQNavitGeoReceiver.html
diff --git a/html/classQNavitGeoReceiver.js b/classQNavitGeoReceiver.js
index 75e48d63b..75e48d63b 100644
--- a/html/classQNavitGeoReceiver.js
+++ b/classQNavitGeoReceiver.js
diff --git a/html/classQNavitGeoReceiver.png b/classQNavitGeoReceiver.png
index 9313fbdc4..9313fbdc4 100644
--- a/html/classQNavitGeoReceiver.png
+++ b/classQNavitGeoReceiver.png
Binary files differ
diff --git a/html/classQNavitQuick.html b/classQNavitQuick.html
index 22d51a9b1..22d51a9b1 100644
--- a/html/classQNavitQuick.html
+++ b/classQNavitQuick.html
diff --git a/html/classQNavitQuick.js b/classQNavitQuick.js
index 93de98da2..93de98da2 100644
--- a/html/classQNavitQuick.js
+++ b/classQNavitQuick.js
diff --git a/html/classQNavitQuick.png b/classQNavitQuick.png
index 01ef4f597..01ef4f597 100644
--- a/html/classQNavitQuick.png
+++ b/classQNavitQuick.png
Binary files differ
diff --git a/html/classQNavitWidget.html b/classQNavitWidget.html
index d8b77c454..d8b77c454 100644
--- a/html/classQNavitWidget.html
+++ b/classQNavitWidget.html
diff --git a/html/classQNavitWidget.js b/classQNavitWidget.js
index a02081637..a02081637 100644
--- a/html/classQNavitWidget.js
+++ b/classQNavitWidget.js
diff --git a/html/classQNavitWidget.png b/classQNavitWidget.png
index aac7cb676..aac7cb676 100644
--- a/html/classQNavitWidget.png
+++ b/classQNavitWidget.png
Binary files differ
diff --git a/html/classQt5EspeakAudioOut.html b/classQt5EspeakAudioOut.html
index 2daae5784..2daae5784 100644
--- a/html/classQt5EspeakAudioOut.html
+++ b/classQt5EspeakAudioOut.html
diff --git a/html/classQt5EspeakAudioOut.js b/classQt5EspeakAudioOut.js
index 8f1e7d6b7..8f1e7d6b7 100644
--- a/html/classQt5EspeakAudioOut.js
+++ b/classQt5EspeakAudioOut.js
diff --git a/html/classQt5EspeakAudioOut.png b/classQt5EspeakAudioOut.png
index 7bdecdbe6..7bdecdbe6 100644
--- a/html/classQt5EspeakAudioOut.png
+++ b/classQt5EspeakAudioOut.png
Binary files differ
diff --git a/html/classRenderArea.html b/classRenderArea.html
index 50ee9eff2..50ee9eff2 100644
--- a/html/classRenderArea.html
+++ b/classRenderArea.html
diff --git a/html/classRenderArea.js b/classRenderArea.js
index 20af61b7b..20af61b7b 100644
--- a/html/classRenderArea.js
+++ b/classRenderArea.js
diff --git a/html/classRenderArea.png b/classRenderArea.png
index 7a8b60837..7a8b60837 100644
--- a/html/classRenderArea.png
+++ b/classRenderArea.png
Binary files differ
diff --git a/html/classSearchObject.html b/classSearchObject.html
index a4ca9e745..a4ca9e745 100644
--- a/html/classSearchObject.html
+++ b/classSearchObject.html
diff --git a/html/classSearchObject.js b/classSearchObject.js
index 3188d8f9e..3188d8f9e 100644
--- a/html/classSearchObject.js
+++ b/classSearchObject.js
diff --git a/html/classSearchObject.png b/classSearchObject.png
index 2e160b125..2e160b125 100644
--- a/html/classSearchObject.png
+++ b/classSearchObject.png
Binary files differ
diff --git a/html/classVehicleObject.html b/classVehicleObject.html
index f451265d3..f451265d3 100644
--- a/html/classVehicleObject.html
+++ b/classVehicleObject.html
diff --git a/html/classVehicleObject.js b/classVehicleObject.js
index 9a83dbfea..9a83dbfea 100644
--- a/html/classVehicleObject.js
+++ b/classVehicleObject.js
diff --git a/html/classVehicleObject.png b/classVehicleObject.png
index 466b9a848..466b9a848 100644
--- a/html/classVehicleObject.png
+++ b/classVehicleObject.png
Binary files differ
diff --git a/html/classcorelocation.html b/classcorelocation.html
index 8e83c7fb4..8e83c7fb4 100644
--- a/html/classcorelocation.html
+++ b/classcorelocation.html
diff --git a/html/classes.html b/classes.html
index 2bbd0b2e1..2bbd0b2e1 100644
--- a/html/classes.html
+++ b/classes.html
diff --git a/html/classmapExtract.html b/classmapExtract.html
index a4cd70d35..a4cd70d35 100644
--- a/html/classmapExtract.html
+++ b/classmapExtract.html
diff --git a/html/classmapExtract.js b/classmapExtract.js
index 252d8e4a5..252d8e4a5 100644
--- a/html/classmapExtract.js
+++ b/classmapExtract.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.html b/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.html
index 3ad056199..3ad056199 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.html
+++ b/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.js b/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.js
index f1f0ede13..f1f0ede13 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.js
+++ b/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.png b/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.png
index 20514981b..20514981b 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.png
+++ b/classorg_1_1navitproject_1_1navit_1_1FileBrowserActivity.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1Navit.html b/classorg_1_1navitproject_1_1navit_1_1Navit.html
index 69084ceca..69084ceca 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1Navit.html
+++ b/classorg_1_1navitproject_1_1navit_1_1Navit.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1Navit.js b/classorg_1_1navitproject_1_1navit_1_1Navit.js
index 6cfaca94a..6cfaca94a 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1Navit.js
+++ b/classorg_1_1navitproject_1_1navit_1_1Navit.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1Navit.png b/classorg_1_1navitproject_1_1navit_1_1Navit.png
index b5fc6a97d..b5fc6a97d 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1Navit.png
+++ b/classorg_1_1navitproject_1_1navit_1_1Navit.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.html b/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.html
index 802420fb7..802420fb7 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.js b/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.js
index 555bc05c7..555bc05c7 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.png b/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.png
index 7f81d0278..7f81d0278 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitAddressSearchActivity.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.html b/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.html
index ff465a17c..ff465a17c 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.js b/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.js
index 7a8f41dd6..7a8f41dd6 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.png b/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.png
index 62c13c2a6..62c13c2a6 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitAppConfig.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.html b/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.html
index ac2c30d4c..ac2c30d4c 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.js b/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.js
index 76d30cd16..76d30cd16 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.png b/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.png
index 0198411ae..0198411ae 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitBackupTask.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitCamera.html b/classorg_1_1navitproject_1_1navit_1_1NavitCamera.html
index 20d6ffe89..20d6ffe89 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitCamera.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitCamera.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitCamera.js b/classorg_1_1navitproject_1_1navit_1_1NavitCamera.js
index f5043f742..f5043f742 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitCamera.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitCamera.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitCamera.png b/classorg_1_1navitproject_1_1navit_1_1NavitCamera.png
index 3325c2744..3325c2744 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitCamera.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitCamera.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.html b/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.html
index 91bb4f38f..91bb4f38f 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.js b/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.js
index 167e23443..167e23443 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.png b/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.png
index 5c2443209..5c2443209 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitDialogs.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.html b/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.html
index 1162273c5..1162273c5 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.js b/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.js
index d74450070..d74450070 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.png b/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.png
index 2ac0bbaea..2ac0bbaea 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitDownloadSelectMapActivity.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitGraphics.html b/classorg_1_1navitproject_1_1navit_1_1NavitGraphics.html
index a80a040f2..a80a040f2 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitGraphics.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitGraphics.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitGraphics.js b/classorg_1_1navitproject_1_1navit_1_1NavitGraphics.js
index ca863d1ee..ca863d1ee 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitGraphics.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitGraphics.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitMap.html b/classorg_1_1navitproject_1_1navit_1_1NavitMap.html
index 3b9aa6daf..3b9aa6daf 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitMap.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitMap.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitMap.js b/classorg_1_1navitproject_1_1navit_1_1NavitMap.js
index 94664721a..94664721a 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitMap.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitMap.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.html b/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.html
index 4d5215b4c..4d5215b4c 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.js b/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.js
index 4c3965f54..4c3965f54 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.png b/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.png
index 2d455b5e6..2d455b5e6 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitMapDownloader.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.html b/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.html
index e4a56f8be..e4a56f8be 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.js b/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.js
index e393773b8..e393773b8 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.png b/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.png
index 3c8da4b1b..3c8da4b1b 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitRestoreTask.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitSensors.html b/classorg_1_1navitproject_1_1navit_1_1NavitSensors.html
index e961199a2..e961199a2 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitSensors.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitSensors.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitSensors.js b/classorg_1_1navitproject_1_1navit_1_1NavitSensors.js
index cf02fa72c..cf02fa72c 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitSensors.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitSensors.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitSensors.png b/classorg_1_1navitproject_1_1navit_1_1NavitSensors.png
index 3be380ce0..3be380ce0 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitSensors.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitSensors.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.html b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.html
index 3d76a0df1..3d76a0df1 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.js b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.js
index 630c02b0f..630c02b0f 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.png b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.png
index 80e1e6da7..80e1e6da7 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.html b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.html
index 3864b55ba..3864b55ba 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.js b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.js
index 7216dbdd7..7216dbdd7 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.png b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.png
index fec979cc9..fec979cc9 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitSpeech2.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitTextTranslations.html b/classorg_1_1navitproject_1_1navit_1_1NavitTextTranslations.html
index 1c5c14c91..1c5c14c91 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitTextTranslations.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitTextTranslations.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.html b/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.html
index 629ac4e95..629ac4e95 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.js b/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.js
index 3b99062e1..3b99062e1 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.png b/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.png
index 9a9a351da..9a9a351da 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitTimeout.png
Binary files differ
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitVehicle.html b/classorg_1_1navitproject_1_1navit_1_1NavitVehicle.html
index e5bd12ac8..e5bd12ac8 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitVehicle.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitVehicle.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitVehicle.js b/classorg_1_1navitproject_1_1navit_1_1NavitVehicle.js
index c5610fd0b..c5610fd0b 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitVehicle.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitVehicle.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitWatch.html b/classorg_1_1navitproject_1_1navit_1_1NavitWatch.html
index 907f51d99..907f51d99 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitWatch.html
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitWatch.html
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitWatch.js b/classorg_1_1navitproject_1_1navit_1_1NavitWatch.js
index f859d954c..f859d954c 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitWatch.js
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitWatch.js
diff --git a/html/classorg_1_1navitproject_1_1navit_1_1NavitWatch.png b/classorg_1_1navitproject_1_1navit_1_1NavitWatch.png
index 4a5bf12e0..4a5bf12e0 100644
--- a/html/classorg_1_1navitproject_1_1navit_1_1NavitWatch.png
+++ b/classorg_1_1navitproject_1_1navit_1_1NavitWatch.png
Binary files differ
diff --git a/html/classqt5__navit__timer.html b/classqt5__navit__timer.html
index 37485d006..37485d006 100644
--- a/html/classqt5__navit__timer.html
+++ b/classqt5__navit__timer.html
diff --git a/html/classqt5__navit__timer.js b/classqt5__navit__timer.js
index eb06e7c7e..eb06e7c7e 100644
--- a/html/classqt5__navit__timer.js
+++ b/classqt5__navit__timer.js
diff --git a/html/classqt5__navit__timer.png b/classqt5__navit__timer.png
index 6c978ed84..6c978ed84 100644
--- a/html/classqt5__navit__timer.png
+++ b/classqt5__navit__timer.png
Binary files differ
diff --git a/html/closed.png b/closed.png
index 98cc2c909..98cc2c909 100644
--- a/html/closed.png
+++ b/closed.png
Binary files differ
diff --git a/cmake/FindDBus.cmake b/cmake/FindDBus.cmake
deleted file mode 100644
index b6bbdb53d..000000000
--- a/cmake/FindDBus.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-include(LibFindMacros)
-
-libfind_pkg_check_modules(DBUS_PKGCONFIG dbus-1)
-
-FIND_PATH(DBus_INCLUDE_DIR dbus/dbus.h
- PATHS
- ${DBUS_PKGCONFIG_INCLUDE_DIRS}
- /usr/include/dbus-1.0
-# PATH_SUFFIXES dbus
-)
-
-FIND_PATH(DBus_INCLUDE_DIR_ARCH dbus/dbus-arch-deps.h
- PATHS
- ${DBUS_PKGCONFIG_INCLUDE_DIRS}
- /usr/lib/dbus-1.0/include
-# PATH_SUFFIXES dbus
-)
-
-FIND_LIBRARY(DBus_LIBRARY
- NAMES dbus-1
- PATHS ${DBUS_PKGCONFIG_LIBRARY_DIRS}
-)
-
-set(DBus_PROCESS_INCLUDES DBus_INCLUDE_DIR DBus_INCLUDE_DIR_ARCH)
-set(DBus_PROCESS_LIBS DBus_LIBRARY)
-libfind_process(DBus)
diff --git a/cmake/FindDBusGLib.cmake b/cmake/FindDBusGLib.cmake
deleted file mode 100644
index e4e870075..000000000
--- a/cmake/FindDBusGLib.cmake
+++ /dev/null
@@ -1,23 +0,0 @@
-FIND_PACKAGE(DBus)
-
-include(LibFindMacros)
-
-libfind_pkg_check_modules(DBUS_GLIB_PKGCONFIG dbus-glib-1)
-
-FIND_PATH(DBusGLib_INCLUDE_DIR dbus/dbus-glib.h
- PATHS
- ${DBUS_GLIB_PKGCONFIG_INCLUDE_DIRS}
- /usr/include/dbus-1.0
-# PATH_SUFFIXES dbus
-)
-
-FIND_LIBRARY(DBusGLib_LIBRARY
- NAMES
- dbus-glib-1
- PATHS
- ${DBUS_GLIB_PKGCONFIG_LIBRARY_DIRS}
-)
-
-set(DBusGLib_PROCESS_INCLUDES DBusGLib_INCLUDE_DIR DBus_INCLUDE_DIRS)
-set(DBusGLib_PROCESS_LIBS DBusGLib_LIBRARY DBus_LIBRARIES)
-libfind_process(DBusGLib)
diff --git a/cmake/FindGTK2.cmake b/cmake/FindGTK2.cmake
deleted file mode 100644
index d538ca3e8..000000000
--- a/cmake/FindGTK2.cmake
+++ /dev/null
@@ -1,471 +0,0 @@
-# - Try to find GTK2
-# Once done this will define
-#
-# GTK2_FOUND - System has Boost
-# GTK2_INCLUDE_DIRS - GTK2 include directory
-# GTK2_LIBRARIES - Link these to use GTK2
-# GTK2_LIBRARY_DIRS - The path to where the GTK2 library files are.
-# GTK2_DEFINITIONS - Compiler switches required for using GTK2
-#
-# Copyright (c) 2007 Andreas Schneider <mail@cynapses.org>
-#
-# Redistribution and use is allowed according to the terms of the New
-# BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-#
-
-# Set GTK2_DEBUG to enable debug output.
-macro(GTK2_DEBUG_MESSAGE _message)
- if (GTK2_DEBUG)
- message(STATUS "(DEBUG) ${_message}")
- endif (GTK2_DEBUG)
-endmacro(GTK2_DEBUG_MESSAGE _message)
-
-if (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
- # in cache already
- set(GTK2_FOUND TRUE)
-else (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
-
- # use pkg-config to get the directories and then use these values
- # in the FIND_PATH() and FIND_LIBRARY() calls
- include(UsePkgConfig)
-
- pkgconfig(gtk+-2.0 _GTK2IncDir _GTK2LinkDir _GTK2LinkFlags _GTK2Cflags)
-
- find_path(GTK2_GTK_INCLUDE_DIR
- NAMES
- gtk/gtk.h
- PATHS
- $ENV{GTK2_HOME}
- ${_GTK2IncDir}
- ${_GTK2IncDir}/gtk-2.0
- /usr/include/gtk-2.0
- /usr/local/include/gtk-2.0
- /opt/include/gtk-2.0
- /opt/gnome/include/gtk-2.0
- /sw/include/gtk-2.0
- )
- gtk2_debug_message("GTK2_GTK_INCLUDE_DIR is ${GTK2_GTK_INCLUDE_DIR}")
-
- # Some Linux distributions (e.g. Red Hat) have glibconfig.h
- # and glib.h in different directories, so we need to look
- # for both.
- # - Atanas Georgiev <atanas@cs.columbia.edu>
- pkgconfig(glib-2.0 _GLIB2IncDir _GLIB2LinkDir _GLIB2LinkFlags _GLIB2Cflags)
- pkgconfig(gmodule-2.0 _GMODULE2IncDir _GMODULE2LinkDir _GMODULE2LinkFlags _GMODULE2Cflags)
-
- find_path(GTK2_GLIBCONFIG_INCLUDE_DIR
- NAMES
- glibconfig.h
- PATHS
- ${_GLIB2IncDir}
- ${_GMODULE2IncDir}
- ${_GMODULE2IncDir}/glib-2.0
- ${_GLIB2LinkDir}/glib-2.0/include
- /opt/gnome/lib64/glib-2.0/include
- /opt/gnome/lib/glib-2.0/include
- /opt/lib/glib-2.0/include
- /usr/lib64/glib-2.0/include
- /usr/lib/glib-2.0/include
- /sw/lib/glib-2.0/include
- )
- gtk2_debug_message("GTK2_GLIBCONFIG_INCLUDE_DIR is ${GTK2_GLIBCONFIG_INCLUDE_DIR}")
-
- find_path(GTK2_GLIB_INCLUDE_DIR
- NAMES
- glib.h
- PATHS
- ${_GLIB2IncDir}
- ${_GLIB2IncDir}/glib-2.0
- ${_GMODULE2IncDir}
- /opt/include/glib-2.0
- /opt/gnome/include/glib-2.0
- /usr/include/glib-2.0
- /sw/include/glib-2.0
- )
- gtk2_debug_message("GTK2_GLIB_INCLUDE_DIR is ${GTK2_GLIB_INCLUDE_DIR}")
-
- pkgconfig(gdk-2.0 _GDK2IncDir _GDK2LinkDir _GDK2LinkFlags _GDK2Cflags)
-
- find_path(GTK2_GDK_INCLUDE_DIR
- NAMES
- gdkconfig.h
- PATHS
- ${_GDK2IncDir}
- ${_GDK2IncDir}/gtk-2.0
- ${_GDK2LinkDir}/gtk-2.0/include
- /opt/gnome/lib/gtk-2.0/include
- /opt/gnome/lib64/gtk-2.0/include
- /opt/lib/gtk-2.0/include
- /usr/lib/gtk-2.0/include
- /usr/lib64/gtk-2.0/include
- /sw/lib/gtk-2.0/include
- )
- gtk2_debug_message("GTK2_GDK_INCLUDE_DIR is ${GTK2_GDK_INCLUDE_DIR}")
-
- find_path(GTK2_GTKGL_INCLUDE_DIR
- NAMES
- gtkgl/gtkglarea.h
- PATHS
- ${_GLIB2IncDir}
- /usr/include
- /usr/local/include
- /usr/openwin/share/include
- /opt/gnome/include
- /opt/include
- /sw/include
- )
- gtk2_debug_message("GTK2_GTKGL_INCLUDE_DIR is ${GTK2_GTKGL_INCLUDE_DIR}")
-
- pkgconfig(pango _PANGOIncDir _PANGOLinkDir _PANGOLinkFlags _PANGOCflags)
-
- find_path(GTK2_PANGO_INCLUDE_DIR
- NAMES
- pango/pango.h
- PATHS
- ${_PANGOIncDir}
- ${_PANGOIncDir}/pango-1.0/
- /usr/include/pango-1.0
- /opt/gnome/include/pango-1.0
- /opt/include/pango-1.0
- /sw/include/pango-1.0
- )
- gtk2_debug_message("GTK2_PANGO_INCLUDE_DIR is ${GTK2_PANGO_INCLUDE_DIR}")
-
- pkgconfig(cairo _CAIROIncDir _CAIROLinkDir _CAIROLinkFlags _CAIROCflags)
-
- find_path(GTK2_CAIRO_INCLUDE_DIR
- NAMES
- cairo.h
- PATHS
- ${_CAIROIncDir}
- ${_CAIROIncDir}/cairo
- /opt/gnome/include/cairo
- /usr/include
- /usr/include/cairo
- /opt/include
- /opt/include/cairo
- /sw/include
- /sw/include/cairo
- )
- gtk2_debug_message("GTK2_CAIRO_INCLUDE_DIR is ${GTK2_CAIRO_INCLUDE_DIR}")
-
- pkgconfig(gdk-pixbuf-2.0 _GDKPIXBUFIncDir _GDKPIXBUFLinkDir _GDKPIXBUFLinkFlags _GDKPIXBUFCflags)
-
- find_path(GTK2_GDKPIXBUF_INCLUDE_DIR
- NAMES
- gdk-pixbuf/gdk-pixbuf.h
- PATHS
- ${_GDKPIXBUFIncDir}
- ${_GDKPIXBUFIncDir}/gdk-pixbuf-2.0
- /opt/gnome/include/cairo
- /usr/include
- /usr/include/cairo
- /opt/include
- /opt/include/cairo
- /sw/include
- /sw/include/cairo
- /sw/include/gdk-pixbuf-2.0
- )
- gtk2_debug_message("GTK2_CAIRO_INCLUDE_DIR is ${GTK2_CAIRO_INCLUDE_DIR}")
-
- pkgconfig(atk _ATKIncDir _ATKLinkDir _ATKLinkFlags _ATKCflags)
-
- find_path(GTK2_ATK_INCLUDE_DIR
- NAMES
- atk/atk.h
- PATHS
- ${_ATKIncDir}
- ${_ATKIncDir}/atk-1.0
- /opt/gnome/include/atk-1.0
- /usr/include/atk-1.0
- /opt/include/atk-1.0
- /sw/include/atk-1.0
- )
- gtk2_debug_message("GTK2_ATK_INCLUDE_DIR is ${GTK2_ATK_INCLUDE_DIR}")
- if (UNIX)
- find_library(GTK2_GTK_LIBRARY
- NAMES
- gtk-x11-2.0
- PATHS
- ${_GTK2LinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_GTK_LIBRARY is ${GTK2_GTK_LIBRARY}")
-
- find_library(GTK2_GDK_LIBRARY
- NAMES
- gdk-x11-2.0
- PATHS
- ${_GDK2LinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_GDK_LIBRARY is ${GTK2_GDK_LIBRARY}")
- endif(UNIX)
- if (WIN32)
-
- find_library(GTK2_GTK_LIBRARY
- NAMES
- gtk-win32-2.0
- PATHS
- ${_GTK2LinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_GTK_LIBRARY is ${GTK2_GTK_LIBRARY}")
-
- find_library(GTK2_GDK_LIBRARY
- NAMES
- gdk-win32-2.0
- PATHS
- ${_GDK2LinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- endif (WIN32)
- find_library(GTK2_GDK_PIXBUF_LIBRARY
- NAMES
- gdk_pixbuf-2.0
- PATHS
- ${_GDK2LinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_GDK_PIXBUF_LIBRARY is ${GTK2_GDK_PIXBUF_LIBRARY}")
-
- find_library(GTK2_GMODULE_LIBRARY
- NAMES
- gmodule-2.0
- PATHS
- ${_GMODULE2LinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_GMODULE_LIBRARY is ${GTK2_GMODULE_LIBRARY}")
-
- find_library(GTK2_GTHREAD_LIBRARY
- NAMES
- gthread-2.0
- PATHS
- ${_GTK2LinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_GTHREAD_LIBRARY is ${GTK2_GTHREAD_LIBRARY}")
-
- find_library(GTK2_GOBJECT_LIBRARY
- NAMES
- gobject-2.0
- PATHS
- ${_GTK2LinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_GOBJECT_LIBRARY is ${GTK2_GOBJECT_LIBRARY}")
-
- find_library(GTK2_GLIB_LIBRARY
- NAMES
- glib-2.0
- PATHS
- ${_GLIB2LinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_GLIB_LIBRARY is ${GTK2_GLIB_LIBRARY}")
-
- find_library(GTK2_GTKGL_LIBRARY
- NAMES
- gtkgl
- PATHS
- ${_GTK2LinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_GTKGL_LIBRARY is ${GTK2_GTKGL_LIBRARY}")
-
- find_library(GTK2_PANGO_LIBRARY
- NAMES
- pango-1.0
- PATHS
- ${_PANGOLinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_PANGO_LIBRARY is ${GTK2_PANGO_LIBRARY}")
-
- find_library(GTK2_CAIRO_LIBRARY
- NAMES
- pangocairo-1.0
- PATHS
- ${_CAIROLinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_PANGO_LIBRARY is ${GTK2_CAIRO_LIBRARY}")
-
- find_library(GTK2_ATK_LIBRARY
- NAMES
- atk-1.0
- PATHS
- ${_ATKinkDir}
- /usr/lib
- /usr/local/lib
- /usr/openwin/lib
- /usr/X11R6/lib
- /opt/gnome/lib
- /opt/lib
- /sw/lib
- )
- gtk2_debug_message("GTK2_ATK_LIBRARY is ${GTK2_ATK_LIBRARY}")
-
- set(GTK2_INCLUDE_DIRS
- ${GTK2_GTK_INCLUDE_DIR}
- ${GTK2_GLIBCONFIG_INCLUDE_DIR}
- ${GTK2_GLIB_INCLUDE_DIR}
- ${GTK2_GDK_INCLUDE_DIR}
- ${GTK2_PANGO_INCLUDE_DIR}
- ${GTK2_CAIRO_INCLUDE_DIR}
- ${GTK2_ATK_INCLUDE_DIR}
- )
-
- if(GTK2_GDKPIXBUF_INCLUDE_DIR)
- set(GTK2_INCLUDE_DIRS ${GTK2_INCLUDE_DIRS} ${GTK2_GDKPIXBUF_INCLUDE_DIR})
- endif(GTK2_GDKPIXBUF_INCLUDE_DIR)
-
- if (GTK2_GTK_LIBRARY AND GTK2_GTK_INCLUDE_DIR)
- if (GTK2_GDK_LIBRARY AND GTK2_GDK_PIXBUF_LIBRARY AND GTK2_GDK_INCLUDE_DIR)
- if (GTK2_GMODULE_LIBRARY)
- if (GTK2_GTHREAD_LIBRARY)
- if (GTK2_GOBJECT_LIBRARY)
- if (GTK2_PANGO_LIBRARY AND GTK2_PANGO_INCLUDE_DIR)
- if (GTK2_CAIRO_LIBRARY AND GTK2_CAIRO_INCLUDE_DIR)
- if (GTK2_ATK_LIBRARY AND GTK2_ATK_INCLUDE_DIR)
-
- # set GTK2 libraries
- set (GTK2_LIBRARIES
- ${GTK2_GTK_LIBRARY}
- ${GTK2_GDK_LIBRARY}
- ${GTK2_GDK_PIXBUF_LIBRARY}
- ${GTK2_GMODULE_LIBRARY}
- ${GTK2_GTHREAD_LIBRARY}
- ${GTK2_GOBJECT_LIBRARY}
- ${GTK2_PANGO_LIBRARY}
- ${GTK2_CAIRO_LIBRARY}
- ${GTK2_ATK_LIBRARY}
- )
-
- # check for gtkgl support
- if (GTK2_GTKGL_LIBRARY AND GTK2_GTKGL_INCLUDE_DIR)
- set(GTK2_GTKGL_FOUND TRUE)
-
-# set(GTK2_INCLUDE_DIRS
-# ${GTK2_INCLUDE_DIRS}
-# ${GTK2_GTKGL_INCLUDE_DIR}
-# )
-
-# set(GTK2_LIBRARIES
-# ${GTK2_LIBRARIES}
-# ${GTK2_GTKGL_LIBRARY}
-# )
- endif (GTK2_GTKGL_LIBRARY AND GTK2_GTKGL_INCLUDE_DIR)
-
- else (GTK2_ATK_LIBRARY AND GTK2_ATK_INCLUDE_DIR)
- endif (GTK2_ATK_LIBRARY AND GTK2_ATK_INCLUDE_DIR)
- else (GTK2_CAIRO_LIBRARY AND GTK2_CAIRO_INCLUDE_DIR)
- endif (GTK2_CAIRO_LIBRARY AND GTK2_CAIRO_INCLUDE_DIR)
- else (GTK2_PANGO_LIBRARY AND GTK2_PANGO_INCLUDE_DIR)
- endif (GTK2_PANGO_LIBRARY AND GTK2_PANGO_INCLUDE_DIR)
- else (GTK2_GOBJECT_LIBRARY)
- endif (GTK2_GOBJECT_LIBRARY)
- else (GTK2_GTHREAD_LIBRARY)
- endif (GTK2_GTHREAD_LIBRARY)
- else (GTK2_GMODULE_LIBRARY)
- endif (GTK2_GMODULE_LIBRARY)
- else (GTK2_GDK_LIBRARY AND GTK2_GDK_PIXBUF_LIBRARY AND GTK2_GDK_INCLUDE_DIR)
- endif (GTK2_GDK_LIBRARY AND GTK2_GDK_PIXBUF_LIBRARY AND GTK2_GDK_INCLUDE_DIR)
- else (GTK2_GTK_LIBRARY AND GTK2_GTK_INCLUDE_DIR)
- endif (GTK2_GTK_LIBRARY AND GTK2_GTK_INCLUDE_DIR)
-
-
- if (GTK2_INCLUDE_DIRS AND GTK2_LIBRARIES)
- set(GTK2_FOUND TRUE)
- endif (GTK2_INCLUDE_DIRS AND GTK2_LIBRARIES)
-
- if (GTK2_FOUND)
- if (NOT GTK2_FIND_QUIETLY)
- message(STATUS "Found GTK2: ${GTK2_LIBRARIES}")
- endif (NOT GTK2_FIND_QUIETLY)
- else (GTK2_FOUND)
- if (GTK2_FIND_REQUIRED)
- message(FATAL_ERROR "Could not find GTK2")
- endif (GTK2_FIND_REQUIRED)
- endif (GTK2_FOUND)
-
- # show the GTK2_INCLUDE_DIRS and GTK2_LIBRARIES variables only in the advanced view
- mark_as_advanced(GTK2_INCLUDE_DIRS GTK2_LIBRARIES)
-
-
-endif (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
-
diff --git a/cmake/FindGlib.cmake b/cmake/FindGlib.cmake
deleted file mode 100644
index 43414ff54..000000000
--- a/cmake/FindGlib.cmake
+++ /dev/null
@@ -1,39 +0,0 @@
-# - Try to find Glib-2.0 (with gobject)
-# Once done, this will define
-#
-# Glib_FOUND - system has Glib
-# Glib_INCLUDE_DIRS - the Glib include directories
-# Glib_LIBRARIES - link these to use Glib
-
-include(LibFindMacros)
-
-# Use pkg-config to get hints about paths
-libfind_pkg_check_modules(Glib_PKGCONF glib-2.0)
-
-# Main include dir
-find_path(Glib_INCLUDE_DIR
- NAMES glib.h
- PATHS ${Glib_PKGCONF_INCLUDE_DIRS} /sw/include
- PATH_SUFFIXES glib-2.0
-)
-
-# Glib-related libraries also use a separate config header, which is in lib dir
-find_path(GlibConfig_INCLUDE_DIR
- NAMES glibconfig.h
- PATHS ${Glib_PKGCONF_INCLUDE_DIRS} /usr /sw
- PATH_SUFFIXES lib/glib-2.0/include
-)
-
-# Finally the library itself
-find_library(Glib_LIBRARY
- NAMES glib-2.0
- PATHS ${Glib_PKGCONF_LIBRARY_DIRS} /sw/lib
-)
-
-# Set the include dir variables and the libraries and let libfind_process do the rest.
-# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
-set(Glib_PROCESS_INCLUDES Glib_INCLUDE_DIR GlibConfig_INCLUDE_DIR)
-set(Glib_PROCESS_LIBS Glib_LIBRARY)
-libfind_process(Glib)
-
-
diff --git a/cmake/FindGmodule.cmake b/cmake/FindGmodule.cmake
deleted file mode 100644
index 2d5ddd0bb..000000000
--- a/cmake/FindGmodule.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-# - Try to find Glib-2.0 (with gobject)
-# Once done, this will define
-#
-# Glib_FOUND - system has Glib
-# Glib_INCLUDE_DIRS - the Glib include directories
-# Glib_LIBRARIES - link these to use Glib
-
-include(LibFindMacros)
-
-libfind_pkg_check_modules(Gmodule_PKGCONF gmodule-2.0)
-# Main include dir
-find_path(Gmodule_INCLUDE_DIR
- NAMES gmodule.h
- PATHS ${Gmodule_PKGCONF_INCLUDE_DIRS}
- PATH_SUFFIXES gmodule-2.0
-)
-
-# Finally the modulerary itself
-find_library(Gmodule_LIBRARY
- NAMES gmodule-2.0
- PATHS ${Gmodule_PKGCONF_LIBRARY_DIRS}
-)
-
-# Set the include dir variables and the libraries and let libfind_process do the rest.
-# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
-set(Gmodule_PROCESS_INCLUDES Gmodule_INCLUDE_DIR)
-set(Gmodule_PROCESS_LIBS Gmodule_LIBRARY)
-libfind_process(Gmodule)
diff --git a/cmake/FindXGettextGlade.cmake b/cmake/FindXGettextGlade.cmake
deleted file mode 100644
index 3f541ab71..000000000
--- a/cmake/FindXGettextGlade.cmake
+++ /dev/null
@@ -1,10 +0,0 @@
-find_package(Gettext)
-FIND_PROGRAM(XGETTEXT xgettext)
-if (XGETTEXT)
- execute_process(COMMAND echo "<test/>" COMMAND xgettext -L glade - RESULT_VARIABLE GETTEXT_RET)
- if ("${GETTEXT_RET}" STREQUAL "0")
- set(XGETTEXT_GLADE TRUE)
- else()
- set(XGETTEXT_GLADE FALSE)
- endif()
-endif(XGETTEXT)
diff --git a/cmake/Findespeak.cmake b/cmake/Findespeak.cmake
deleted file mode 100644
index 6d390a9a8..000000000
--- a/cmake/Findespeak.cmake
+++ /dev/null
@@ -1,29 +0,0 @@
-# - Try to find espeak (with libespeak)
-# Once done, this will define
-#
-# espeak_FOUND - system has Glib
-# espeak_INCLUDE_DIRS - the Glib include directories
-# espeak_LIBRARIES - link these to use Glib
-
-include(LibFindMacros)
-
-# espeak-related libraries
-find_path(espeak_INCLUDE_DIR
- NAMES speak_lib.h
- PATHS /usr /sw/include
- PATH_SUFFIXES espeak
-)
-
-# Finally the library itself
-find_library(espeak_LIBRARY
- NAMES libespeak.so libespeak.a
- PATHS /sw/lib
-)
-
-# Set the include dir variables and the libraries and let libfind_process do the rest.
-# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
-set(espeak_PROCESS_INCLUDES espeak_INCLUDE_DIR)
-set(espeak_PROCESS_LIBS espeak_LIBRARY)
-libfind_process(espeak)
-
-
diff --git a/cmake/LibFindMacros.cmake b/cmake/LibFindMacros.cmake
deleted file mode 100644
index 69975c51b..000000000
--- a/cmake/LibFindMacros.cmake
+++ /dev/null
@@ -1,99 +0,0 @@
-# Works the same as find_package, but forwards the "REQUIRED" and "QUIET" arguments
-# used for the current package. For this to work, the first parameter must be the
-# prefix of the current package, then the prefix of the new package etc, which are
-# passed to find_package.
-macro (libfind_package PREFIX)
- set (LIBFIND_PACKAGE_ARGS ${ARGN})
- if (${PREFIX}_FIND_QUIETLY)
- set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} QUIET)
- endif (${PREFIX}_FIND_QUIETLY)
- if (${PREFIX}_FIND_REQUIRED)
- set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} REQUIRED)
- endif (${PREFIX}_FIND_REQUIRED)
- find_package(${LIBFIND_PACKAGE_ARGS})
-endmacro (libfind_package)
-
-# CMake developers made the UsePkgConfig system deprecated in the same release (2.6)
-# where they added pkg_check_modules. Consequently I need to support both in my scripts
-# to avoid those deprecated warnings. Here's a helper that does just that.
-# Works identically to pkg_check_modules, except that no checks are needed prior to use.
-macro (libfind_pkg_check_modules PREFIX PKGNAME)
- if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
- include(UsePkgConfig)
- pkgconfig(${PKGNAME} ${PREFIX}_INCLUDE_DIRS ${PREFIX}_LIBRARY_DIRS ${PREFIX}_LDFLAGS ${PREFIX}_CFLAGS)
- else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
- find_package(PkgConfig)
- if (PKG_CONFIG_FOUND)
- pkg_check_modules(${PREFIX} ${PKGNAME})
- endif (PKG_CONFIG_FOUND)
- endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4)
-endmacro (libfind_pkg_check_modules)
-
-# Do the final processing once the paths have been detected.
-# If include dirs are needed, ${PREFIX}_PROCESS_INCLUDES should be set to contain
-# all the variables, each of which contain one include directory.
-# Ditto for ${PREFIX}_PROCESS_LIBS and library files.
-# Will set ${PREFIX}_FOUND, ${PREFIX}_INCLUDE_DIRS and ${PREFIX}_LIBRARIES.
-# Also handles errors in case library detection was required, etc.
-macro (libfind_process PREFIX)
- # Skip processing if already processed during this run
- if (NOT ${PREFIX}_FOUND)
- # Start with the assumption that the library was found
- set (${PREFIX}_FOUND TRUE)
-
- # Process all includes and set _FOUND to false if any are missing
- foreach (i ${${PREFIX}_PROCESS_INCLUDES})
- if (${i})
- set (${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIRS} ${${i}})
- mark_as_advanced(${i})
- else (${i})
- set (${PREFIX}_FOUND FALSE)
- endif (${i})
- endforeach (i)
-
- # Process all libraries and set _FOUND to false if any are missing
- foreach (i ${${PREFIX}_PROCESS_LIBS})
- if (${i})
- set (${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARIES} ${${i}})
- mark_as_advanced(${i})
- else (${i})
- set (${PREFIX}_FOUND FALSE)
- endif (${i})
- endforeach (i)
-
- # Print message and/or exit on fatal error
- if (${PREFIX}_FOUND)
- if (NOT ${PREFIX}_FIND_QUIETLY)
- message (STATUS "Found ${PREFIX} ${${PREFIX}_VERSION}")
- endif (NOT ${PREFIX}_FIND_QUIETLY)
- else (${PREFIX}_FOUND)
- if (${PREFIX}_FIND_REQUIRED)
- foreach (i ${${PREFIX}_PROCESS_INCLUDES} ${${PREFIX}_PROCESS_LIBS})
- message("${i}=${${i}}")
- endforeach (i)
- message (FATAL_ERROR "Required library ${PREFIX} NOT FOUND.\nInstall the library (dev version) and try again. If the library is already installed, use ccmake to set the missing variables manually.")
- endif (${PREFIX}_FIND_REQUIRED)
- endif (${PREFIX}_FOUND)
- endif (NOT ${PREFIX}_FOUND)
-endmacro (libfind_process)
-
-macro(libfind_library PREFIX basename)
- set(TMP "")
- if(MSVC80)
- set(TMP -vc80)
- endif(MSVC80)
- if(MSVC90)
- set(TMP -vc90)
- endif(MSVC90)
- set(${PREFIX}_LIBNAMES ${basename}${TMP})
- if(${ARGC} GREATER 2)
- set(${PREFIX}_LIBNAMES ${basename}${TMP}-${ARGV2})
- string(REGEX REPLACE "\\." "_" TMP ${${PREFIX}_LIBNAMES})
- set(${PREFIX}_LIBNAMES ${${PREFIX}_LIBNAMES} ${TMP})
- endif(${ARGC} GREATER 2)
- find_library(${PREFIX}_LIBRARY
- NAMES ${${PREFIX}_LIBNAMES}
- PATHS ${${PREFIX}_PKGCONF_LIBRARY_DIRS}
- )
-endmacro(libfind_library)
-
diff --git a/cmake/build.xml b/cmake/build.xml
deleted file mode 100644
index 5a4b47965..000000000
--- a/cmake/build.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="Navit" default="help">
-<target name="help">
- <antversion property="antversion" atleast="1.8"/>
- <fail unless="antversion"/>
-</target>
-</project>
diff --git a/cmake/copy_files.cmake b/cmake/copy_files.cmake
deleted file mode 100644
index f9dca52f6..000000000
--- a/cmake/copy_files.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-message("Copy '${GLOB_EXP}' to '${DST}'")
-
-file(GLOB SRC_FILES ${GLOB_EXP})
-
-if ( SRC_FILES )
- foreach (FILE ${SRC_FILES})
- if ( LOWER )
- get_filename_component(FILEN_NAME ${FILE} NAME)
- string(TOLOWER ${FILEN_NAME} FILEN_NAME_LOWER)
- execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FILE} ${DST}/${FILEN_NAME_LOWER})
- else()
- execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${FILE} ${DST}/)
- endif( LOWER )
- endforeach()
-endif()
diff --git a/cmake/navit_download.cmake b/cmake/navit_download.cmake
deleted file mode 100644
index bcc47b3e1..000000000
--- a/cmake/navit_download.cmake
+++ /dev/null
@@ -1,10 +0,0 @@
-message("Downloading ${URL}")
-file(DOWNLOAD ${URL} ${DST} SHOW_PROGRESS STATUS DOWNLOAD_STATUS)
-list(GET DOWNLOAD_STATUS 0 DOWNLOAD_ERR)
-list(GET DOWNLOAD_STATUS 1 DOWNLOAD_MSG)
-if(DOWNLOAD_ERR)
- file(REMOVE ${DST})
- message(SEND_ERROR "Download of sample map from ${URL} failed: "
- "${DOWNLOAD_MSG}\n"
- "To disable the sample map, run cmake with -DSAMPLE_MAP=n .")
-endif(DOWNLOAD_ERR)
diff --git a/cmake/navit_macros.cmake b/cmake/navit_macros.cmake
deleted file mode 100644
index eb1f3fc7c..000000000
--- a/cmake/navit_macros.cmake
+++ /dev/null
@@ -1,108 +0,0 @@
-macro(set_feature_switch_default VARIABLE REASON ENABLE)
- if ((NOT DEFINED ${VARIABLE}) # variable not in cache (first run)
- OR ((DEFINED ${VARIABLE}_AUTODETECTED_VALUE) AND # variable in cache -> different from autodetected value?
- ((${VARIABLE}_AUTODETECTED_VALUE AND ${VARIABLE}) OR # poor man's boolean equal
- (NOT ${VARIABLE}_AUTODETECTED_VALUE AND NOT ${VARIABLE}))))
- set(${VARIABLE}_REASON ${REASON})
- set(${VARIABLE} ${ENABLE} CACHE BOOL "feature switch" FORCE)
- else()
- set(${VARIABLE}_REASON "User defined")
- endif()
- set(${VARIABLE}_AUTODETECTED_VALUE ${ENABLE} CACHE INTERNAL "value autodetected by build script")
-endmacro()
-
-macro(set_with_reason VARIABLE REASON ENABLE)
- if (DEFINED ${VARIABLE}_REASON AND NOT ${VARIABLE}_REASON STREQUAL "User defined")
- set(${VARIABLE} ${ENABLE} CACHE BOOL "feature switch" FORCE)
- set(${VARIABLE}_REASON ${REASON})
- endif()
- string(REPLACE "/" "_" VARIABLE_NAMES ${VARIABLE})
- set(${VARIABLE_NAMES}_LIBS ${ARGN})
- set(${VARIABLE}_AUTODETECTED_VALUE ${ENABLE} CACHE INTERNAL "value autodetected by build script")
-endmacro()
-
-macro(add_feature FEATURE REASON ENABLE)
- list(APPEND ALL_FEATURES ${FEATURE})
- set_feature_switch_default(${FEATURE} ${REASON} ${ENABLE})
-endmacro()
-
-macro(cfg_feature FEATURE REASON ENABLE)
- set(${FEATURE} ${ENABLE})
- if (${FEATURE}_REASON STREQUAL "User defined")
- set(${FEATURE}_REASON "${REASON} *user setting overridden*")
- else()
- set(${FEATURE}_REASON ${REASON})
- endif()
-endmacro()
-
-macro(add_module MODULE_PATH REASON ENABLE)
- list(APPEND ALL_MODULES ${MODULE_PATH})
- set_feature_switch_default(${MODULE_PATH} ${REASON} ${ENABLE})
-endmacro()
-
-# plugins are always linked static
-macro(add_plugin PLUGIN_PATH REASON ENABLE)
- list(APPEND ALL_PLUGINS ${PLUGIN_PATH})
- set_feature_switch_default(${PLUGIN_PATH} ${REASON} ${ENABLE})
-endmacro()
-
-# module plugins are always linked static
-macro(add_module_plugin PLUGIN_PATH REASON ENABLE)
- list(APPEND ALL_MODULE_PLUGINS ${PLUGIN_PATH})
- set_feature_switch_default(${PLUGIN_PATH} ${REASON} ${ENABLE})
-endmacro()
-
-macro(module_add_library MODULE_NAME )
- LINK_DIRECTORIES(${${MODULE_NAME}_LIBRARY_DIRS})
- add_library(${MODULE_NAME} ${MODULE_BUILD_TYPE} ${ARGN})
- SET_TARGET_PROPERTIES(${MODULE_NAME} PROPERTIES COMPILE_DEFINITIONS "MODULE=${MODULE_NAME}")
- TARGET_LINK_LIBRARIES(${MODULE_NAME} ${${MODULE_NAME}_LIBS})
- SET_TARGET_PROPERTIES( ${MODULE_NAME} PROPERTIES COMPILE_FLAGS "${NAVIT_COMPILE_FLAGS} ${${MODULE_NAME}_FLAGS}")
- INCLUDE_DIRECTORIES(${${MODULE_NAME}_INCLUDES})
- if (USE_PLUGINS)
- if (ANDROID)
- TARGET_LINK_LIBRARIES(${MODULE_NAME} ${NAVIT_LIBNAME})
- endif()
- if (APPLE)
- set_target_properties( ${MODULE_NAME} PROPERTIES LINK_FLAGS "-Wl,-undefined -Wl,dynamic_lookup")
- endif()
- # workaround to be compatible with old paths
- set_target_properties( ${MODULE_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/.libs")
-
- install(TARGETS ${MODULE_NAME}
- 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)
-
-macro(supportlib_add_library LIB_NAME )
- add_library(${LIB_NAME} ${ARGN})
- TARGET_LINK_LIBRARIES(${LIB_NAME} ${${LIB_NAME}_LIBS})
- SET_TARGET_PROPERTIES( ${LIB_NAME} PROPERTIES COMPILE_FLAGS "${NAVIT_COMPILE_FLAGS}")
- SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES COMPILE_DEFINITIONS "MODULE=${LIB_NAME}")
- install(TARGETS ${LIB_NAME}
- DESTINATION ${LIB_DIR}/${${LIB_NAME}_TYPE}
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
-endmacro(supportlib_add_library)
-
-macro(message_error)
- set(NAVIT_DEPENDENCY_ERROR 1)
- message( SEND_ERROR ${ARGN})
-endmacro(message_error)
-
-include(CheckCCompilerFlag)
-include(CheckCXXCompilerFlag)
-macro(add_compiler_flag_if_available FLAG)
- set(VAR_FLAG_AVAILABLE_C "FLAG_AVAILABLE_C_${FLAG}")
- check_c_compiler_flag(${FLAG} ${VAR_FLAG_AVAILABLE_C})
- if (${${VAR_FLAG_AVAILABLE_C}})
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG} ")
- endif()
- if(CMAKE_CXX_COMPILER_LOADED) # C++ compiler is optional
- set(VAR_FLAG_AVAILABLE_CXX "FLAG_AVAILABLE_CXX_${FLAG}")
- check_cxx_compiler_flag(${FLAG} ${VAR_FLAG_AVAILABLE_CXX})
- if (${${VAR_FLAG_AVAILABLE_CXX}})
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG} ")
- endif()
- endif()
-endmacro(add_compiler_flag_if_available)
diff --git a/cmake/navit_po_version.cmake b/cmake/navit_po_version.cmake
deleted file mode 100644
index ff5e7d8e4..000000000
--- a/cmake/navit_po_version.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-file(READ "${SRC}" OUTPUT_LINES)
-string(REGEX REPLACE "\"Project-Id-Version: [^\"]*\"" "\"Project-Id-Version: ${PACKAGE_STRING}\\\\n\"" OUTPUT_LINES "${OUTPUT_LINES}")
-file(WRITE "${DST}" "${OUTPUT_LINES}")
diff --git a/cmake/navit_writemapxml.cmake b/cmake/navit_writemapxml.cmake
deleted file mode 100644
index 7ca58d268..000000000
--- a/cmake/navit_writemapxml.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-message("${TEXT}")
-file(WRITE ${DST} "<map type=\"${TYPE}\" data=\"$NAVIT_SHAREDIR/maps/${DATA}\" />\n")
diff --git a/cmake/navit_xml_parser.cmake b/cmake/navit_xml_parser.cmake
deleted file mode 100644
index 9edbcd2b0..000000000
--- a/cmake/navit_xml_parser.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-file(STRINGS "${SRC}" TEXT_LINES REGEX "_\\(")
-file(WRITE ${DST} "// Strings from navit_shipped.xml\n")
-
-foreach (LINE ${TEXT_LINES})
- string(REGEX REPLACE ".*(_\\(\"[^\"]*\"\\)).*" "\\1\n" OUTPUT_LINE ${LINE})
- file(APPEND ${DST} ${OUTPUT_LINE})
-endforeach()
-
-file(READ "${SRC}" SRC_CONTENT)
-
-string(REGEX MATCHALL "<text>([^<>]*)</text>" TEXT_ELEMENTS "${SRC_CONTENT}")
-
-foreach (LINE ${TEXT_ELEMENTS})
- string(REGEX REPLACE ".*<text[^>]*>([^<>]*)</text>.*" "_(\"\\1\")" OUTPUT_LINE ${LINE})
- string(REPLACE "\n" "\\n" OUTPUT_LINE ${OUTPUT_LINE})
- file(APPEND ${DST} "${OUTPUT_LINE}\n")
-endforeach()
-
-string(REGEX MATCHALL "<vehicleprofile [^<>]*name=\"[^\"]+\"" ATTRS "${SRC_CONTENT}")
-
-foreach (LINE ${ATTRS})
- string(REGEX REPLACE ".* name=\"([^\"]+)\"" "_(\"\\1\")" OUTPUT_LINE ${LINE})
- file(APPEND ${DST} "${OUTPUT_LINE}\n")
-endforeach()
-
diff --git a/cmake/navit_xml_parser_glade.cmake b/cmake/navit_xml_parser_glade.cmake
deleted file mode 100644
index 350d8e079..000000000
--- a/cmake/navit_xml_parser_glade.cmake
+++ /dev/null
@@ -1,12 +0,0 @@
-file(READ "${SRC}" OUTPUT_LINES)
-if (PREFIX)
- set(OUTPUT_LINES "<html>" "${OUTPUT_LINES}")
-endif()
-string(REGEX REPLACE "vehicleprofile" "atkaction" OUTPUT_LINES "${OUTPUT_LINES}")
-string(REGEX REPLACE "name=" "description=" OUTPUT_LINES "${OUTPUT_LINES}")
-string(REGEX REPLACE "...CDATA" " " OUTPUT_LINES "${OUTPUT_LINES}")
-string(REGEX REPLACE "\\]\\]" "" OUTPUT_LINES "${OUTPUT_LINES}")
-if (SUFFIX)
- set(OUTPUT_LINES "${OUTPUT_LINES}" "</html>")
-endif()
-file(WRITE ${DST} ${OUTPUT_LINES})
diff --git a/cmake/recolor.cmake b/cmake/recolor.cmake
deleted file mode 100644
index fe99244ec..000000000
--- a/cmake/recolor.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-file(READ "${SRC}" OUTPUT_LINES)
-string(REGEX REPLACE "fill:#111111" "fill:${BGCOLOR}" OUTPUT_LINES "${OUTPUT_LINES}")
-string(REGEX REPLACE "fill:#ffffff" "fill:${FGCOLOR}" OUTPUT_LINES "${OUTPUT_LINES}")
-string(REGEX REPLACE "stroke:#ffffff" "stroke:${FGCOLOR}" OUTPUT_LINES "${OUTPUT_LINES}")
-file(WRITE "${DST}" "${OUTPUT_LINES}")
diff --git a/cmake/replace.cmake b/cmake/replace.cmake
deleted file mode 100644
index 2d8101b46..000000000
--- a/cmake/replace.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
-file(READ "${SRC}" OUTPUT_LINES)
-string(REGEX REPLACE "${MATCHES}" "${REPLACE}" OUTPUT_LINES "${OUTPUT_LINES}")
-file(WRITE ${DST} ${OUTPUT_LINES})
diff --git a/cmake/strings_xml_parser.cmake b/cmake/strings_xml_parser.cmake
deleted file mode 100644
index 747af1c58..000000000
--- a/cmake/strings_xml_parser.cmake
+++ /dev/null
@@ -1,10 +0,0 @@
-file(STRINGS "${SRC}" TEXT_LINES REGEX "<string[ \t]+name=")
-file(WRITE ${DST} "// Strings from android/res/values/strings.xml\n\n")
-
-foreach (LINE ${TEXT_LINES})
- string(REGEX REPLACE ".*<string[^>]+>(.*)</string>.*" "\\1" MSGID ${LINE})
- string(REGEX REPLACE "\\\\'" "'" MSGID ${MSGID})
- string(REGEX REPLACE ".*<string[^>]+name=\"([^>\"]+)\">.*</string>.*" "\\1" RESID ${LINE})
- file(APPEND ${DST} "// Android resource: @strings/${RESID}\n_(\"${MSGID}\")\n")
-endforeach()
-
diff --git a/cmake/test.xml b/cmake/test.xml
deleted file mode 100644
index 23aa0bd32..000000000
--- a/cmake/test.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE config [<!ELEMENT config (#PCDATA)>]>
-<config/>
diff --git a/cmake/test.xslt b/cmake/test.xslt
deleted file mode 100644
index dcfe1f7f3..000000000
--- a/cmake/test.xslt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude"/>
diff --git a/cmake/version.cmake b/cmake/version.cmake
deleted file mode 100755
index 8f82d9f61..000000000
--- a/cmake/version.cmake
+++ /dev/null
@@ -1,29 +0,0 @@
-FIND_PROGRAM(GIT_EXECUTABLE NAMES git git.exe DOC "git command line client")
-
-get_filename_component(SOURCE_DIR ${SRC} PATH)
-
-string(TIMESTAMP VERSION "%y%m%d%H%M")
-
-string(REGEX MATCH "[0-9]+" VERSION_NUM ${VERSION} )
-if(NOT VERSION_NUM)
- message(STATUS "I can't find a release tag. This is probably not Navit's official tree")
- message(STATUS "It's OK, I will default to 0000")
- set(VERSION_NUM "0000")
-endif()
-string(REPLACE "R" "" VERSION_NUM ${VERSION_NUM} )
-if(NOT VERSION_NUM)
- set(VERSION_NUM "0000")
-endif()
-
-string(REGEX MATCH "^[a-z0-9]+" VERSION ${VERSION} )
-
-if (STRIP_M)
- set(VERSION ${VERSION_NUM})
-endif()
-
-set(NAVIT_VARIANT "-")
-
-set(${NAME} ${VERSION})
-
-message (STATUS "Git commit: ${${NAME}}")
-CONFIGURE_FILE(${SRC} ${DST} @ONLY)
diff --git a/html/color_8h_source.html b/color_8h_source.html
index 84a125038..84a125038 100644
--- a/html/color_8h_source.html
+++ b/color_8h_source.html
diff --git a/html/command_8h_source.html b/command_8h_source.html
index 86f56364f..86f56364f 100644
--- a/html/command_8h_source.html
+++ b/command_8h_source.html
diff --git a/html/common_8h_source.html b/common_8h_source.html
index 2eaa7ea11..2eaa7ea11 100644
--- a/html/common_8h_source.html
+++ b/common_8h_source.html
diff --git a/config.h.cmake b/config.h.cmake
deleted file mode 100644
index fa096b58c..000000000
--- a/config.h.cmake
+++ /dev/null
@@ -1,97 +0,0 @@
-#cmakedefine USE_NATIVE_LANGUAGE_SUPPORT 1
-#cmakedefine HAVE_MALLOC_H 1
-#cmakedefine HAVE_SYS_MOUNT_H 1
-#cmakedefine HAVE_STDINT_H 1
-#cmakedefine HAVE_API_ANDROID 1
-#cmakedefine HAVE_API_WIN32_BASE 1
-#cmakedefine HAVE_API_WIN32 1
-#cmakedefine HAVE_API_WIN32_CE 1
-#cmakedefine HAVE_API_TOMTOM 1
-#cmakedefine HAVE_GLIB 1
-#cmakedefine HAVE_GMODULE 1
-#cmakedefine HAVE_GETCWD 1
-#define CACHE_SIZE ${CACHE_SIZE}
-#cmakedefine AVOID_FLOAT 1
-#cmakedefine AVOID_UNALIGNED 1
-#cmakedefine USE_LIBGNUINTL 1
-#cmakedefine HAVE_BYTESWAP_H 1
-/* Versions */
-#cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@"
-#cmakedefine PACKAGE_NAME "@PACKAGE_NAME@"
-#cmakedefine PACKAGE "@PACKAGE@"
-#cmakedefine LOCALEDIR "@LOCALEDIR@"
-
-#cmakedefine HAVE_LIBCRYPTO 1
-
-#cmakedefine HAVE_ZLIB 1
-
-#cmakedefine USE_ROUTING 1
-
-#cmakedefine HAVE_GTK2 1
-
-#cmakedefine HAVE_FONTCONFIG 1
-
-#cmakedefine USE_PLUGINS 1
-
-#cmakedefine SDL_TTF 1
-
-#cmakedefine SDL_IMAGE 1
-
-#cmakedefine HAVE_QT_SVG 1
-
-#cmakedefine HAVE_UNISTD_H 1
-
-#cmakedefine DBUS_USE_SYSTEM_BUS 1
-
-#cmakedefine HAVE_SOCKET 1
-#cmakedefine HAVE_SNPRINTF 1
-#cmakedefine HAVE_DECL__SNPRINTF 1
-
-#cmakedefine HAVE_WINSOCK 1
-
-#cmakedefine HAVE_MEMALIGN 1
-
-#cmakedefine HAVE_POSIX_MEMALIGN 1
-
-#cmakedefine HAVE_VALLOC 1
-
-#cmakedefine HAVE_LC_MESSAGES 1
-
-#cmakedefine HAVE_SYS_TIME_H 1
-
-#cmakedefine HAVE_POPEN 1
-
-#cmakedefine HAVE_GETOPT_H 1
-#cmakedefine HAVE_GETTIMEOFDAY 1
-
-#cmakedefine HAVE__ATOI64 1
-
-#cmakedefine HAVE_STRING_H 1
-
-#cmakedefine EZXML_NOMMAP 0
-
-#cmakedefine HAVE_STPCPY 1
-
-#cmakedefine HAVE_SBRK 1
-
-#cmakedefine HAVE_PRAGMA_PACK 1
-
-#cmakedefine HAVE_GETDELIM 1
-
-#cmakedefine HAVE_GETLINE 1
-
-#cmakedefine HAVE_FSYNC 1
-
-#cmakedefine HAVE_ENDIAN_H 1
-
-#cmakedefine HAVE_FREEIMAGE 1
-
-#cmakedefine USE_OPENGLES 1
-
-#cmakedefine USE_OPENGLES2 1
-
-#cmakedefine HAVE_SHMEM 1
-
-#cmakedefine HAVE_IMLIB2 1
-
-#cmakedefine HAS_IFADDRS 1
diff --git a/html/config___8h_source.html b/config___8h_source.html
index 84c14d6c3..84c14d6c3 100644
--- a/html/config___8h_source.html
+++ b/config___8h_source.html
diff --git a/contrib/android-update-map-sizes.pl b/contrib/android-update-map-sizes.pl
deleted file mode 100755
index ca0f41d85..000000000
--- a/contrib/android-update-map-sizes.pl
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/perl
-# 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.
-
-
-print STDERR "NavitMapDownloader.java map sizes update script.\n";
-print STDERR "Please feed me NavitMapDownloader.java on stdin, get the updated file on stdout.\n";
-
-while(<>){
- if(/^(.*new osm_map_values\(.*)"([\-0-9\.]+)"\s*,\s*"([\-0-9\.]+)"\s*,\s*"([\-0-9\.]+)"\s*,\s*"([\-0-9\.]+)"\s*,\s*([0-9L]+)\s*,\s*([0-9L]+.*\).*$)/i) {
- $prefix=qq($1 "$2", "$3", "$4", "$5",);
- $suffix=$7;
- $size="==err==";
- $curline="$_";
- do{
- print STDERR $curline;
- open IN, "curl --head -L http://maps.navit-project.org/api/map/?bbox=$2,$3,$4,$5|";
- while(<IN>) {
- $size="$1L" if(/^Content-Length:\s*(\d+)/)
- }
- close IN;
- } while($size eq "==err==");
- print "$prefix $size, $suffix\n";
- } else {
- print "$_";
- }
-}
diff --git a/contrib/cursor/navitcursor.svg b/contrib/cursor/navitcursor.svg
deleted file mode 100644
index a87091638..000000000
--- a/contrib/cursor/navitcursor.svg
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="42"
- height="42"
- viewBox="0 0 42.000002 42.000001"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="navitcursor.svg">
- <title
- id="title3336">Navit cursor</title>
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.2"
- inkscape:cx="24.988831"
- inkscape:cy="19.67354"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Navit cursor</dc:title>
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:creator>
- <cc:Agent>
- <dc:title>jfitie@gmail.com</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source>Navit</dc:source>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1010.3623)">
- <path
- style="fill:#008500;fill-rule:evenodd;stroke:#008500;stroke-width:0.25000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 0,1049.3623 21.000002,-39 0,24 z"
- id="path3365"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:#00bc00;fill-rule:evenodd;stroke:#008500;stroke-width:0.25000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 42.000004,1049.3623 -21.000002,-39 0,24 z"
- id="path4167"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:#009c00;fill-opacity:1;fill-rule:evenodd;stroke:#008500;stroke-width:0.25000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 0,1049.3623 21.000002,-15 0,6 z"
- id="path4169"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:#006500;fill-opacity:1;fill-rule:evenodd;stroke:#008500;stroke-width:0.25000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 21.000002,1034.3623 0,6 21.000002,9 z"
- id="path4171"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/contrib/geojson-to-bbox.py b/contrib/geojson-to-bbox.py
deleted file mode 100755
index 6f6d79466..000000000
--- a/contrib/geojson-to-bbox.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/python
-import json
-import argparse
-parser = argparse.ArgumentParser()
-
-parser.add_argument("-csv" , help="Output all files opmitted as a csv file, saperated by comma or if set by opmitted seperator", action="store_true")
-parser.add_argument("-csv-seperator", help="Set the seperator used by csv output", default=",")
-parser.add_argument("files", type=argparse.FileType('r'), nargs='+')
-
-args=parser.parse_args()
-
-for f in args.files:
- content=f.read()
- json_obj = json.loads(content)
- minx=999999
- maxx=-999999
- miny=999999
- maxy=-999999
- if json_obj['geometry']['type'] == "Polygon":
- for region in json_obj['geometry']['coordinates'][0]:
- minx=min(minx,region[0])
- maxx=max(maxx,region[0])
- miny=min(miny,region[1])
- maxy=max(maxy,region[1])
- elif json_obj['geometry']['type'] == "MultiPolygon":
- for sub in json_obj['geometry']['coordinates']:
- for region in sub[0]:
- minx=min(minx,region[0])
- maxx=max(maxx,region[0])
- miny=min(miny,region[1])
- maxy=max(maxy,region[1])
- if args.csv:
- print(f.name+args.csv_seperator+str(minx)+args.csv_seperator+str(miny)+args.csv_seperator+str(maxx)+args.csv_seperator+str(maxy))
- else:
- print(f.name+": "+str(minx)+" "+str(miny)+" x "+str(maxx)+" "+str(maxy))
diff --git a/contrib/images/androidtablet.png b/contrib/images/androidtablet.png
deleted file mode 100644
index ec6885325..000000000
--- a/contrib/images/androidtablet.png
+++ /dev/null
Binary files differ
diff --git a/contrib/sailfish/build_on_sailfish_sdk.sh b/contrib/sailfish/build_on_sailfish_sdk.sh
deleted file mode 100755
index 663d31b48..000000000
--- a/contrib/sailfish/build_on_sailfish_sdk.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#! /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
deleted file mode 100755
index a798aa487..000000000
--- a/contrib/sailfish/navit-sailfish.spec
+++ /dev/null
@@ -1,145 +0,0 @@
-# $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: 4
-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
-BuildRequires: qt5-qtmultimedia
-BuildRequires: qt5-qtmultimedia-devel
-BuildRequires: qt5-qtmultimedia-gsttools
-BuildRequires: qt5-qtmultimedia-plugin-mediaservice-gstaudiodecoder
-BuildRequires: qt5-qtmultimedia-plugin-mediaservice-gstcamerabin
-BuildRequires: qt5-qtmultimedia-plugin-mediaservice-gstmediacapture
-BuildRequires: qt5-qtmultimedia-plugin-mediaservice-gstmediaplayer
-BuildRequires: qt5-qtmultimedia-plugin-resourcepolicy-resourceqt
-BuildRequires: qt5-qtmultimedia-plugin-audio-alsa
-BuildRequires: qt5-qtmultimedia-plugin-playlistformats-m3u
-BuildRequires: qt5-qtmultimedia-plugin-audio-pulseaudio
-
-#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/icons \
- -DLIB_DIR:PATH=share/harbour-navit/lib \
- -DBUILD_MAPTOOL:BOOL=FALSE \
- -Dfont/freetype: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 \
- -DXSLTS:STRING="sailfish_disable;sailfish_qt5;sailfish_osd;sailfish_cursor;sailfish_mapset;sailfish_svg;sailfish_gui" \
- %{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
-
-%files
-%defattr(644, root, root, 755)
-%{_datadir}/harbour-navit/navit.xml
-%{_datadir}/harbour-navit/icons/
-%{_datadir}/harbour-navit/maps/osm_bbox_11.3,47.9,11.7,48.2.bin
-%{_datadir}/harbour-navit/espeak-data/
-%{_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
-%doc %{_mandir}/man1/harbour-navit.1.gz
-%doc %{_mandir}/man1/maptool.1.gz
-
-
-%changelog
-*Tue Oct 17 2017 metalstrolch 0.5.1-4
-- Fix medium GUI icon size to cope with changed icon set on upstream
-- Update upstream
-
-*Wed Jun 05 2017 metalstrolch 0.5.1-3
-- Enable rotating.
-- Create default config from xlst
-- Switch to QT font rendering.
-- Remove freetype dep.
-
-*Wed May 03 2017 metalstrolch 0.5.1-2
-- Use qt5_espeak
-
-*Mon Apr 10 2017 metalstrolch 0.5.1-1
-- Almost harbour valid
-
-*Mon Dec 14 2015 metalstrolch 0.5.1-0
-- Initial sailfish release
-- Initial package.
-
diff --git a/contrib/sjjb_import.pl b/contrib/sjjb_import.pl
deleted file mode 100644
index 9c5b61e1a..000000000
--- a/contrib/sjjb_import.pl
+++ /dev/null
@@ -1,243 +0,0 @@
-#!/usr/bin/perl -w
-
-# Convert the map icons from http://www.sjjb.co.uk/mapicons/
-# for use by navit - we want the "Positive" variant and we want
-# a different color for each section.
-# WARNING: EXISTING FILES WILL BE OVERWRITTEN WITHOUT HESITATION!
-
-# Usage:
-# sjjb_import.pl [source-dir] [dest-dir]
-
-# (C)opyright 2012 Lutz Möhrmann
-# License: GPL v2
-
-### config #########################################################
-
-# TODO: Set to 1 to get the "Negative" version as shown here:
-# http://www.sjjb.co.uk/mapicons/contactsheet
-# The first value from $colors will be used as background in this
-# case, otherwise it's the foreground
-#$negative = 0;
-
-# TODO: Foreground color if $negative is set.
-$fg_color = 'ffffff';
-
-# Use the second value from $colors to produce a tiny border
-$use_border = 0;
-
-# Some icons in place_of_worship/ (and possibly other directories)
-# contain a drop-shadow. Set to 1 to keep it.
-$use_shadow = 0;
-
-# TODO: produce "White Glow"
-#$use_glow = 1;
-
-# Format is main-color, border-color
-%colors = (
- accommodation => ['00c08f', '226282'],
- amenity => ['734A08', '825d22'],
- barrier => ['666666', '808080'],
- education => ['39ac39', '208020'],
- food => ['c02727', '815c21'],
- health => ['da0092', '822262'],
- landuse => ['999999', '666666'],
- money => ['000000', '404040'],
- place_of_worship => ['5e8019', '7a993d'],
- poi => ['990808', '802020'],
- power => ['8e7409', '806d20'],
- shopping => ['ad30c0', '762282'],
- sport => ['39ac39', '208020'],
- tourist => ['b26609', 'bf8830'],
- transport => ['0089cd', '206080'],
- water => ['0050da', '204380'],
-);
-
-# Select/rename icons. The first string is the source filename (with path,
-# but w/o .svg suffix), the second one is the destination filename. If omited,
-# the source fn is used.
-@icons = (
- ['accommodation/shelter2', 'shelter'],
-
- ['amenity/library'],
- ['amenity/town_hall2', 'townhall'],
-
-# ['barrier/', ''],
-
-# ['education/', ''],
-
- ['food/biergarten'],
- ['food/drinkingtap', 'drinking_water'],
-
- ['health/hospital_emergency', 'emergency'],
-
-# ['landuse/', ''],
-
-# ['money/', ''],
-
- ['place_of_worship/bahai3', 'bahai'],
- ['place_of_worship/buddhist3', 'buddhist'],
-# ['place_of_worship/christian3', 'christian'], # that's "church"
- ['place_of_worship/hindu3', 'hindu'],
- ['place_of_worship/islamic3', 'islamic'],
- ['place_of_worship/jain3', 'jain'],
- ['place_of_worship/jewish3', 'jewish'],
- ['place_of_worship/pagan3', 'pagan'], # not there (yet)
- ['place_of_worship/pastafarian3', 'pastafarian'], # not there (yet)
- ['place_of_worship/shinto3', 'shinto'],
- ['place_of_worship/sikh3', 'sikh'],
- ['place_of_worship/taoist3', 'taoist'], # not there (yet)
- ['place_of_worship/unknown', 'worship'],
-
-# ['poi/', ''],
-
-# ['power/', ''],
-
-# ['shopping/', ''],
-
- ['sport/leisure_centre', 'sport'],
-
- ['tourist/casino'],
- ['tourist/castle2', 'castle'],
- ['tourist/memorial'],
- ['tourist/picnic'],
- ['tourist/theatre', 'theater'],
-
- ['transport/bus_stop2', 'bus_stop'],
- ['transport/daymark'], # not there (yet)
- ['transport/rental_car', 'car_rent'],
-
- ['shopping/car', 'car_dealer'],
- ['shopping/clothes', 'shop_apparel'],
- ['shopping/computer', 'shop_computer'],
- ['shopping/department_store', 'shop_department'],
-
- ['water/dam'],
-);
-
-### /config ########################################################
-
-use File::Basename;
-use XML::Twig;
-
-@fg_patterns= ("fill:white:1", "stroke:white:1", "fill:#ffffff:1", "stroke:#ffffff:1");
-@bg_patterns= ("fill:#111111:1", "fill:#111:1");
-@brd_patterns= ("stroke:#eeeeee:1", "stroke:#eee:1");
-@sh_patterns= ('fill:#ffffff:0.25', 'stroke:#ffffff:0.25');
-
-$dbg_level= 1;
-
-sub dbg {
- my ($lvl, $text)= @_;
- if ($lvl <= $dbg_level)
- { print STDERR $text; }
-}
-
-sub change {
- my ($value, $patterns, $color, $transparent)= @_;
- &dbg(3, "change('$$value', , '$color', '$transparent')\n");
- foreach $p (@{$patterns}) {
- my ($k, $v, $a)= split(':', $p);
- $o= $opacity;
- if ($$value =~ m/\Aopacity:([.0-9]+)/i)
- { $o*= $1; }
- elsif ($$value =~ m/;opacity:([.0-9]+)/i)
- { $o*= $1; }
- if ($$value =~ m/$k-opacity:([.0-9]+)/i)
- { $o*= $1; }
- if ($o >= 0.5) # we don't want half transparent stuff like in tourist/memorial or amenity/town_hall2
- { $o= 1; }
- &dbg(4, "p='$p' k='$k' v='$v' a='$a' o='$o'\n");
- if ( !($$value =~ m/$k:$v/i)
- or ((defined $a) and ($a != $o)) )
- { next; }
- if (!$transparent) {
- &dbg(4, "changing color to '$color'\n");
- $$value =~ s/$k:$v/$k:$color/i;
- } else {
- &dbg(4, "changing opacity to '0'\n");
- if ($$value =~ m/$k-opacity:[0-9]/i) {
- $$value =~ s/$k-opacity:[0-9]/$k-opacity:0/i;
- } else {
- $$value =~ s/$k:$v/$k:$v;$k-opacity:0/i;
- }
- }
-
- }
-}
-
-sub g_handler {
- my $att= $_->{'att'};
- if (!defined $att->{'style'})
- { return; }
-
- if ($att->{'style'} =~ m/[^-]?opacity:([.0-9]+)/i)
- { $opacity= $1; }
-}
-
-sub handler {
- my $att= $_->{'att'};
- if (!defined $att->{'style'})
- { return; }
-
- &dbg(2, " in: '$att->{'style'}'\n");
- my $fg= $negative ? $fg_color : $color1;
- &change(\$att->{'style'}, \@sh_patterns, $fg, !$use_shadow);
- &change(\$att->{'style'}, \@fg_patterns, $fg, 0);
- &change(\$att->{'style'}, \@bg_patterns, $color1, !$negative);
- &change(\$att->{'style'}, \@brd_patterns, $color2, !$use_border);
- &dbg(2, " out: '$att->{'style'}'\n\n");
-}
-
-sub get_arg {
- my ($no, $q)= @_;
- if ($ARGV[$no]) {
- return $ARGV[$no];
- } else {
- print $q."\n";
- $input= <STDIN>;
- chomp($input);
- return $input;
- }
-}
-
-$sjjb_dir= get_arg(0, "Directory holding the extracted svg's from http://www.sjjb.co.uk/mapicons/downloads");
-$dest_dir= $ARGV[1] ? $ARGV[1] : dirname(__FILE__)."/../navit/icons/";
-
-foreach $i (@icons) {
- my ($path, $icon)= split('/', $i->[0]);
- my ($dest)= $i->[1] ? $i->[1] : $icon;
- $color1= '#'.$colors{$path}[0];
- $color2= '#'.$colors{$path}[1];
- $opacity= 1.0;
-
- my $in_fn= "$sjjb_dir/$path/$icon.svg";
- open(my $in_f, $in_fn) or die "Couldn't read '$in_fn': $!";
- my $decl= <$in_f>; chomp $decl; # save the '<?xml ...'-line
- my $in;
- while (<$in_f>) { $in.= $_; }
- close($in_f);
- &dbg(1, "file $in_fn: ".length($in)." bytes.\n");
- my $xml= XML::Twig->new(
- pretty_print => 'indented',
- twig_handlers => {
- 'path' => \&handler,
- 'rect' => \&handler,
- 'circle' => \&handler,
- 'svg:path' => \&handler,
- 'svg:rect' => \&handler,
- 'svg:circle' => \&handler,
- },
- start_tag_handlers => {
- 'g' => \&g_handler,
- 'svg:g' => \&g_handler,
- },
- );
-
- $xml->parse($in);
-
- my $out_fn= "$dest_dir/$dest.svg";
- open(my $out_f, "> $out_fn") or die "Couldn't write to '$out_fn': $!";
- print $out_f $decl."\n".$xml->sprint();
-
- $xml->purge;
-}
diff --git a/contrib/tomtom/SDKRegistry/navit.cap b/contrib/tomtom/SDKRegistry/navit.cap
deleted file mode 100644
index d9bae49b7..000000000
--- a/contrib/tomtom/SDKRegistry/navit.cap
+++ /dev/null
@@ -1,7 +0,0 @@
-Version|100|
-AppName|navit-wrapper|
-AppPath|/mnt/sdcard/navit/bin/|
-AppIconFile|navit.bmp|
-AppMainTitle|Navit|
-AppPort|2001|
-COMMAND|CMD|hallo|navit.bmp|Navit|
diff --git a/contrib/tomtom/SDKRegistry/ts.cap b/contrib/tomtom/SDKRegistry/ts.cap
deleted file mode 100644
index c10c831a4..000000000
--- a/contrib/tomtom/SDKRegistry/ts.cap
+++ /dev/null
@@ -1,8 +0,0 @@
-Version|100|
-AppName|ts-wrapper|
-AppPath|/mnt/sdcard/navit/ts/|
-AppIconFile||
-AppMainTitle|Touchscreen|
-AppPort||
-COMMAND|CMD|hallo||Touchscreen|
-
diff --git a/contrib/tomtom/espeakdsp.c b/contrib/tomtom/espeakdsp.c
deleted file mode 100644
index bd6689a1f..000000000
--- a/contrib/tomtom/espeakdsp.c
+++ /dev/null
@@ -1,101 +0,0 @@
-#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/contrib/tomtom/navit-wrapper b/contrib/tomtom/navit-wrapper
deleted file mode 100755
index f4eadb9e0..000000000
--- a/contrib/tomtom/navit-wrapper
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-
-cd /mnt/sdcard/navit/bin
-
-# Set some paths.
-export PATH=$PATH:/mnt/sdcard/navit/bin
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/sdcard/navit/lib:/mnt/sdcard/LoquendoTTS/lib
-export HOME=/mnt/sdcard/navit
-export NAVIT_LIBDIR=/mnt/sdcard/navit/lib/navit
-export NAVIT_SHAREDIR=/mnt/sdcard/navit/share
-export NAVIT_LOCALEDIR=/mnt/sdcard/navit/share/locale
-
-# tslib requirements.
-export TSLIB_CONSOLEDEVICE=none
-export TSLIB_FBDEVICE=/dev/fb
-export TSLIB_TSDEVICE=/dev/ts
-export TSLIB_CALIBFILE=/mnt/sdcard/navit/ts/pointercal
-export TSLIB_CONFFILE=/mnt/sdcard/navit/ts/ts.conf
-export TSLIB_PLUGINDIR=/mnt/sdcard/navit/lib/ts
-
-# SDL requirements.
-export SDL_MOUSEDRV=TSLIB
-export SDL_MOUSEDEV=$TSLIB_TSDEVICE
-export SDL_NOMOUSE=1
-export SDL_FBDEV=/dev/fb
-export SDL_VIDEODRIVER=fbcon
-export SDL_AUDIODRIVER=dsp
-
-# Set time zone.
-export TZ="CEDT-01:00:00CEST-02:00:00,M3.4.0,M10.4.0"
-
-# Set language.
-export LANG=en_US
-
-export ESPEAK_DATA_PATH=/mnt/sdcard/navit/share
-
-# Run Navit.
-if /mnt/sdcard/navit/sdl/testvidinfo | grep 480x272
-then
- /mnt/sdcard/navit/bin/navit /mnt/sdcard/navit/share/tomtom480.xml 2>/mnt/sdcard/navit/navit.log&
-# tomtom320xml is not provided yet
-# elif /mnt/sdcard/navit/sdl/testvidinfo | grep 320x240
-# then
-# /mnt/sdcard/navit/bin/navit /mnt/sdcard/navit/share/config/tomtom320.xml 2>/mnt/sdcard/navit/navit.log&
-else
- exit 1
-fi
-
-# Kill TTN while Navit is running.
-killall ttn
-
-while [ $? -eq 0 ]
-do
-echo "\0" > /dev/watchdog
-sleep 10
-ps | grep -v grep | grep -v wrapper | grep navit
-done
-
-/sbin/reboot
diff --git a/contrib/tomtom/ts/ts-wrapper b/contrib/tomtom/ts/ts-wrapper
deleted file mode 100644
index 6f8f8e2d5..000000000
--- a/contrib/tomtom/ts/ts-wrapper
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-cd /mnt/sdcard
-
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/sdcard/navit/lib
-
-export TSLIB_CONSOLEDEVICE=none
-export TSLIB_FBDEVICE=/dev/fb
-export TSLIB_TSDEVICE=/dev/ts
-export TSLIB_CALIBFILE=/mnt/sdcard/navit/ts/pointercal
-export TSLIB_CONFFILE=/mnt/sdcard/navit/ts/ts.conf
-export TSLIB_PLUGINDIR=/mnt/sdcard/navit/lib/ts
-
-/mnt/sdcard/navit/ts/ts_calibrate
-/mnt/sdcard/navit/ts/ts_test
diff --git a/html/coord_8h_source.html b/coord_8h_source.html
index ddf205836..ddf205836 100644
--- a/html/coord_8h_source.html
+++ b/coord_8h_source.html
diff --git a/html/corelocation_8h_source.html b/corelocation_8h_source.html
index 8e31efc40..8e31efc40 100644
--- a/html/corelocation_8h_source.html
+++ b/corelocation_8h_source.html
diff --git a/html/country_8h_source.html b/country_8h_source.html
index 9c3ddf7fb..9c3ddf7fb 100644
--- a/html/country_8h_source.html
+++ b/country_8h_source.html
diff --git a/cpack.cmake b/cpack.cmake
deleted file mode 100644
index 2bf38e619..000000000
--- a/cpack.cmake
+++ /dev/null
@@ -1,4 +0,0 @@
-if(CPACK_GENERATOR=="ZIP")
- set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1)
-endif(CPACK_GENERATOR=="ZIP")
-
diff --git a/html/crc32_8h_source.html b/crc32_8h_source.html
index 06c2b17c4..06c2b17c4 100644
--- a/html/crc32_8h_source.html
+++ b/crc32_8h_source.html
diff --git a/html/csv_8h_source.html b/csv_8h_source.html
index 710b6f5af..710b6f5af 100644
--- a/html/csv_8h_source.html
+++ b/csv_8h_source.html
diff --git a/html/data_8h_source.html b/data_8h_source.html
index 3c5cb6050..3c5cb6050 100644
--- a/html/data_8h_source.html
+++ b/data_8h_source.html
diff --git a/html/data__window_8h_source.html b/data__window_8h_source.html
index 30345e0bd..30345e0bd 100644
--- a/html/data__window_8h_source.html
+++ b/data__window_8h_source.html
diff --git a/html/data__window__int_8h_source.html b/data__window__int_8h_source.html
index a03b61b6e..a03b61b6e 100644
--- a/html/data__window__int_8h_source.html
+++ b/data__window__int_8h_source.html
diff --git a/html/debug_8h_source.html b/debug_8h_source.html
index 25a4beb4b..25a4beb4b 100644
--- a/html/debug_8h_source.html
+++ b/debug_8h_source.html
diff --git a/html/destination_8h_source.html b/destination_8h_source.html
index 510386f13..510386f13 100644
--- a/html/destination_8h_source.html
+++ b/destination_8h_source.html
diff --git a/html/dir_01be1695a670be0b6d48021481a5b2d6.html b/dir_01be1695a670be0b6d48021481a5b2d6.html
index be1b16827..be1b16827 100644
--- a/html/dir_01be1695a670be0b6d48021481a5b2d6.html
+++ b/dir_01be1695a670be0b6d48021481a5b2d6.html
diff --git a/html/dir_03e3eb2eecbc579fe01fe1cbc1e39671.html b/dir_03e3eb2eecbc579fe01fe1cbc1e39671.html
index 203375974..203375974 100644
--- a/html/dir_03e3eb2eecbc579fe01fe1cbc1e39671.html
+++ b/dir_03e3eb2eecbc579fe01fe1cbc1e39671.html
diff --git a/html/dir_049d1c8c57dbcf379acaaa14064791e6.html b/dir_049d1c8c57dbcf379acaaa14064791e6.html
index c3cb254b2..c3cb254b2 100644
--- a/html/dir_049d1c8c57dbcf379acaaa14064791e6.html
+++ b/dir_049d1c8c57dbcf379acaaa14064791e6.html
diff --git a/html/dir_049d1c8c57dbcf379acaaa14064791e6.js b/dir_049d1c8c57dbcf379acaaa14064791e6.js
index ef0c95c8d..ef0c95c8d 100644
--- a/html/dir_049d1c8c57dbcf379acaaa14064791e6.js
+++ b/dir_049d1c8c57dbcf379acaaa14064791e6.js
diff --git a/html/dir_051ff8d3d6d7373477c7750a504c273a.html b/dir_051ff8d3d6d7373477c7750a504c273a.html
index a8de8de0f..a8de8de0f 100644
--- a/html/dir_051ff8d3d6d7373477c7750a504c273a.html
+++ b/dir_051ff8d3d6d7373477c7750a504c273a.html
diff --git a/html/dir_051ff8d3d6d7373477c7750a504c273a.js b/dir_051ff8d3d6d7373477c7750a504c273a.js
index c7212b6c3..c7212b6c3 100644
--- a/html/dir_051ff8d3d6d7373477c7750a504c273a.js
+++ b/dir_051ff8d3d6d7373477c7750a504c273a.js
diff --git a/html/dir_062cf704faf8860ba50e0ddefeb8b4e5.html b/dir_062cf704faf8860ba50e0ddefeb8b4e5.html
index 2b42fae02..2b42fae02 100644
--- a/html/dir_062cf704faf8860ba50e0ddefeb8b4e5.html
+++ b/dir_062cf704faf8860ba50e0ddefeb8b4e5.html
diff --git a/html/dir_062cf704faf8860ba50e0ddefeb8b4e5.js b/dir_062cf704faf8860ba50e0ddefeb8b4e5.js
index 4060486ce..4060486ce 100644
--- a/html/dir_062cf704faf8860ba50e0ddefeb8b4e5.js
+++ b/dir_062cf704faf8860ba50e0ddefeb8b4e5.js
diff --git a/html/dir_0869548661c08605e6acc2b1e629ac65.html b/dir_0869548661c08605e6acc2b1e629ac65.html
index 86a43a9b8..86a43a9b8 100644
--- a/html/dir_0869548661c08605e6acc2b1e629ac65.html
+++ b/dir_0869548661c08605e6acc2b1e629ac65.html
diff --git a/html/dir_0b911790f78934063c7344008ce2a69c.html b/dir_0b911790f78934063c7344008ce2a69c.html
index 7dd52ffde..7dd52ffde 100644
--- a/html/dir_0b911790f78934063c7344008ce2a69c.html
+++ b/dir_0b911790f78934063c7344008ce2a69c.html
diff --git a/html/dir_0d964a942848f2da9e4611d1f0b24068.html b/dir_0d964a942848f2da9e4611d1f0b24068.html
index 74b92c94c..74b92c94c 100644
--- a/html/dir_0d964a942848f2da9e4611d1f0b24068.html
+++ b/dir_0d964a942848f2da9e4611d1f0b24068.html
diff --git a/html/dir_0d964a942848f2da9e4611d1f0b24068.js b/dir_0d964a942848f2da9e4611d1f0b24068.js
index 066d8316e..066d8316e 100644
--- a/html/dir_0d964a942848f2da9e4611d1f0b24068.js
+++ b/dir_0d964a942848f2da9e4611d1f0b24068.js
diff --git a/html/dir_11bc0974ce736ce9a6fadebbeb7a8314.html b/dir_11bc0974ce736ce9a6fadebbeb7a8314.html
index dcf8f48c6..dcf8f48c6 100644
--- a/html/dir_11bc0974ce736ce9a6fadebbeb7a8314.html
+++ b/dir_11bc0974ce736ce9a6fadebbeb7a8314.html
diff --git a/html/dir_11bc0974ce736ce9a6fadebbeb7a8314.js b/dir_11bc0974ce736ce9a6fadebbeb7a8314.js
index de53ae8f8..de53ae8f8 100644
--- a/html/dir_11bc0974ce736ce9a6fadebbeb7a8314.js
+++ b/dir_11bc0974ce736ce9a6fadebbeb7a8314.js
diff --git a/html/dir_12305126b3bea02e6a26c9511d9cc1d7.html b/dir_12305126b3bea02e6a26c9511d9cc1d7.html
index 6b3522f81..6b3522f81 100644
--- a/html/dir_12305126b3bea02e6a26c9511d9cc1d7.html
+++ b/dir_12305126b3bea02e6a26c9511d9cc1d7.html
diff --git a/html/dir_12305126b3bea02e6a26c9511d9cc1d7.js b/dir_12305126b3bea02e6a26c9511d9cc1d7.js
index a09400a73..a09400a73 100644
--- a/html/dir_12305126b3bea02e6a26c9511d9cc1d7.js
+++ b/dir_12305126b3bea02e6a26c9511d9cc1d7.js
diff --git a/html/dir_1665a1f26aa7f80a33d12b48dabffa73.html b/dir_1665a1f26aa7f80a33d12b48dabffa73.html
index ac1a8dd73..ac1a8dd73 100644
--- a/html/dir_1665a1f26aa7f80a33d12b48dabffa73.html
+++ b/dir_1665a1f26aa7f80a33d12b48dabffa73.html
diff --git a/html/dir_1665a1f26aa7f80a33d12b48dabffa73.js b/dir_1665a1f26aa7f80a33d12b48dabffa73.js
index 80de00bb1..80de00bb1 100644
--- a/html/dir_1665a1f26aa7f80a33d12b48dabffa73.js
+++ b/dir_1665a1f26aa7f80a33d12b48dabffa73.js
diff --git a/html/dir_16a7e9c1028f2761047e32e74b8532d0.html b/dir_16a7e9c1028f2761047e32e74b8532d0.html
index cd7bd585a..cd7bd585a 100644
--- a/html/dir_16a7e9c1028f2761047e32e74b8532d0.html
+++ b/dir_16a7e9c1028f2761047e32e74b8532d0.html
diff --git a/html/dir_16a7e9c1028f2761047e32e74b8532d0.js b/dir_16a7e9c1028f2761047e32e74b8532d0.js
index c42b6e0e8..c42b6e0e8 100644
--- a/html/dir_16a7e9c1028f2761047e32e74b8532d0.js
+++ b/dir_16a7e9c1028f2761047e32e74b8532d0.js
diff --git a/html/dir_1a03594d4311eaaa5903d40e9d43d9c6.html b/dir_1a03594d4311eaaa5903d40e9d43d9c6.html
index 6b9030182..6b9030182 100644
--- a/html/dir_1a03594d4311eaaa5903d40e9d43d9c6.html
+++ b/dir_1a03594d4311eaaa5903d40e9d43d9c6.html
diff --git a/html/dir_1cbcf0eb16a00953e11e647e048cb14e.html b/dir_1cbcf0eb16a00953e11e647e048cb14e.html
index 0c31a7ee8..0c31a7ee8 100644
--- a/html/dir_1cbcf0eb16a00953e11e647e048cb14e.html
+++ b/dir_1cbcf0eb16a00953e11e647e048cb14e.html
diff --git a/html/dir_1d90612e2b94e2840a52a97dcade9272.html b/dir_1d90612e2b94e2840a52a97dcade9272.html
index 367dc88f0..367dc88f0 100644
--- a/html/dir_1d90612e2b94e2840a52a97dcade9272.html
+++ b/dir_1d90612e2b94e2840a52a97dcade9272.html
diff --git a/html/dir_1d90612e2b94e2840a52a97dcade9272.js b/dir_1d90612e2b94e2840a52a97dcade9272.js
index d3146a516..d3146a516 100644
--- a/html/dir_1d90612e2b94e2840a52a97dcade9272.js
+++ b/dir_1d90612e2b94e2840a52a97dcade9272.js
diff --git a/html/dir_1e01caeed39e438b48739037bdceb4ca.html b/dir_1e01caeed39e438b48739037bdceb4ca.html
index a7a9184cf..a7a9184cf 100644
--- a/html/dir_1e01caeed39e438b48739037bdceb4ca.html
+++ b/dir_1e01caeed39e438b48739037bdceb4ca.html
diff --git a/html/dir_1e01caeed39e438b48739037bdceb4ca.js b/dir_1e01caeed39e438b48739037bdceb4ca.js
index 4bd7b7a97..4bd7b7a97 100644
--- a/html/dir_1e01caeed39e438b48739037bdceb4ca.js
+++ b/dir_1e01caeed39e438b48739037bdceb4ca.js
diff --git a/html/dir_1e09e1eef3b8f293ec297f89dc24ff08.html b/dir_1e09e1eef3b8f293ec297f89dc24ff08.html
index a92aaa50f..a92aaa50f 100644
--- a/html/dir_1e09e1eef3b8f293ec297f89dc24ff08.html
+++ b/dir_1e09e1eef3b8f293ec297f89dc24ff08.html
diff --git a/html/dir_1e09e1eef3b8f293ec297f89dc24ff08.js b/dir_1e09e1eef3b8f293ec297f89dc24ff08.js
index 692cf7138..692cf7138 100644
--- a/html/dir_1e09e1eef3b8f293ec297f89dc24ff08.js
+++ b/dir_1e09e1eef3b8f293ec297f89dc24ff08.js
diff --git a/html/dir_287d7b7976a99f2561b2ce94852b1449.html b/dir_287d7b7976a99f2561b2ce94852b1449.html
index a2bf8f533..a2bf8f533 100644
--- a/html/dir_287d7b7976a99f2561b2ce94852b1449.html
+++ b/dir_287d7b7976a99f2561b2ce94852b1449.html
diff --git a/html/dir_287d7b7976a99f2561b2ce94852b1449.js b/dir_287d7b7976a99f2561b2ce94852b1449.js
index 76bc69caf..76bc69caf 100644
--- a/html/dir_287d7b7976a99f2561b2ce94852b1449.js
+++ b/dir_287d7b7976a99f2561b2ce94852b1449.js
diff --git a/html/dir_2aa4980eacc8aab9a0113566592db946.html b/dir_2aa4980eacc8aab9a0113566592db946.html
index 6e01418f0..6e01418f0 100644
--- a/html/dir_2aa4980eacc8aab9a0113566592db946.html
+++ b/dir_2aa4980eacc8aab9a0113566592db946.html
diff --git a/html/dir_2e6071dd015bf407accca31deaee8497.html b/dir_2e6071dd015bf407accca31deaee8497.html
index 67980f4b2..67980f4b2 100644
--- a/html/dir_2e6071dd015bf407accca31deaee8497.html
+++ b/dir_2e6071dd015bf407accca31deaee8497.html
diff --git a/html/dir_2ea991e553e5d35b57b9be4f74274886.html b/dir_2ea991e553e5d35b57b9be4f74274886.html
index c81afc9f5..c81afc9f5 100644
--- a/html/dir_2ea991e553e5d35b57b9be4f74274886.html
+++ b/dir_2ea991e553e5d35b57b9be4f74274886.html
diff --git a/html/dir_2ea991e553e5d35b57b9be4f74274886.js b/dir_2ea991e553e5d35b57b9be4f74274886.js
index 31137b9a5..31137b9a5 100644
--- a/html/dir_2ea991e553e5d35b57b9be4f74274886.js
+++ b/dir_2ea991e553e5d35b57b9be4f74274886.js
diff --git a/html/dir_2fc37108f732ff0ccba030a362106989.html b/dir_2fc37108f732ff0ccba030a362106989.html
index c9cd960f9..c9cd960f9 100644
--- a/html/dir_2fc37108f732ff0ccba030a362106989.html
+++ b/dir_2fc37108f732ff0ccba030a362106989.html
diff --git a/html/dir_2fc37108f732ff0ccba030a362106989.js b/dir_2fc37108f732ff0ccba030a362106989.js
index 7aa1b177b..7aa1b177b 100644
--- a/html/dir_2fc37108f732ff0ccba030a362106989.js
+++ b/dir_2fc37108f732ff0ccba030a362106989.js
diff --git a/html/dir_36587c23e77b5edc814903d328039f6c.html b/dir_36587c23e77b5edc814903d328039f6c.html
index 7a5e19620..7a5e19620 100644
--- a/html/dir_36587c23e77b5edc814903d328039f6c.html
+++ b/dir_36587c23e77b5edc814903d328039f6c.html
diff --git a/html/dir_36587c23e77b5edc814903d328039f6c.js b/dir_36587c23e77b5edc814903d328039f6c.js
index 051db681a..051db681a 100644
--- a/html/dir_36587c23e77b5edc814903d328039f6c.js
+++ b/dir_36587c23e77b5edc814903d328039f6c.js
diff --git a/html/dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.html b/dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.html
index a4be17c1c..a4be17c1c 100644
--- a/html/dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.html
+++ b/dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.html
diff --git a/html/dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.js b/dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.js
index 75155a5f8..75155a5f8 100644
--- a/html/dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.js
+++ b/dir_3755bef44ed3bfb4ffcb6a41c1c79aa2.js
diff --git a/html/dir_399a916a4057be65784a57a4334cd12d.html b/dir_399a916a4057be65784a57a4334cd12d.html
index c3e8ebfcb..c3e8ebfcb 100644
--- a/html/dir_399a916a4057be65784a57a4334cd12d.html
+++ b/dir_399a916a4057be65784a57a4334cd12d.html
diff --git a/html/dir_399a916a4057be65784a57a4334cd12d.js b/dir_399a916a4057be65784a57a4334cd12d.js
index a11fc0ac9..a11fc0ac9 100644
--- a/html/dir_399a916a4057be65784a57a4334cd12d.js
+++ b/dir_399a916a4057be65784a57a4334cd12d.js
diff --git a/html/dir_3a8cc4e97c7c9558c7ed0293a8c475f4.html b/dir_3a8cc4e97c7c9558c7ed0293a8c475f4.html
index 001b18b4b..001b18b4b 100644
--- a/html/dir_3a8cc4e97c7c9558c7ed0293a8c475f4.html
+++ b/dir_3a8cc4e97c7c9558c7ed0293a8c475f4.html
diff --git a/html/dir_3a8cc4e97c7c9558c7ed0293a8c475f4.js b/dir_3a8cc4e97c7c9558c7ed0293a8c475f4.js
index f017d487a..f017d487a 100644
--- a/html/dir_3a8cc4e97c7c9558c7ed0293a8c475f4.js
+++ b/dir_3a8cc4e97c7c9558c7ed0293a8c475f4.js
diff --git a/html/dir_3c6a17148547da62484d40199057d705.html b/dir_3c6a17148547da62484d40199057d705.html
index d715a0a1e..d715a0a1e 100644
--- a/html/dir_3c6a17148547da62484d40199057d705.html
+++ b/dir_3c6a17148547da62484d40199057d705.html
diff --git a/html/dir_3c6a17148547da62484d40199057d705.js b/dir_3c6a17148547da62484d40199057d705.js
index 5ae85478f..5ae85478f 100644
--- a/html/dir_3c6a17148547da62484d40199057d705.js
+++ b/dir_3c6a17148547da62484d40199057d705.js
diff --git a/html/dir_427b8f7c829b11980b949351e343533f.html b/dir_427b8f7c829b11980b949351e343533f.html
index cab3f0d82..cab3f0d82 100644
--- a/html/dir_427b8f7c829b11980b949351e343533f.html
+++ b/dir_427b8f7c829b11980b949351e343533f.html
diff --git a/html/dir_4993c6783887a0bc8a44af89ddf4100f.html b/dir_4993c6783887a0bc8a44af89ddf4100f.html
index a2bd27c7a..a2bd27c7a 100644
--- a/html/dir_4993c6783887a0bc8a44af89ddf4100f.html
+++ b/dir_4993c6783887a0bc8a44af89ddf4100f.html
diff --git a/html/dir_4993c6783887a0bc8a44af89ddf4100f.js b/dir_4993c6783887a0bc8a44af89ddf4100f.js
index e58a20c28..e58a20c28 100644
--- a/html/dir_4993c6783887a0bc8a44af89ddf4100f.js
+++ b/dir_4993c6783887a0bc8a44af89ddf4100f.js
diff --git a/html/dir_4d36eab17b098bd159af5f27a623f307.html b/dir_4d36eab17b098bd159af5f27a623f307.html
index 801e40ba0..801e40ba0 100644
--- a/html/dir_4d36eab17b098bd159af5f27a623f307.html
+++ b/dir_4d36eab17b098bd159af5f27a623f307.html
diff --git a/html/dir_4e4a63407ebf32610755ea235ec7d037.html b/dir_4e4a63407ebf32610755ea235ec7d037.html
index 10328b1b2..10328b1b2 100644
--- a/html/dir_4e4a63407ebf32610755ea235ec7d037.html
+++ b/dir_4e4a63407ebf32610755ea235ec7d037.html
diff --git a/html/dir_4e4a63407ebf32610755ea235ec7d037.js b/dir_4e4a63407ebf32610755ea235ec7d037.js
index 7339ca366..7339ca366 100644
--- a/html/dir_4e4a63407ebf32610755ea235ec7d037.js
+++ b/dir_4e4a63407ebf32610755ea235ec7d037.js
diff --git a/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html b/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html
index 0eef574ed..0eef574ed 100644
--- a/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html
+++ b/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html
diff --git a/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.js b/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.js
index 90d3cdcb9..90d3cdcb9 100644
--- a/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.js
+++ b/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.js
diff --git a/html/dir_51e781f726fdae13b2b1c599701003ff.html b/dir_51e781f726fdae13b2b1c599701003ff.html
index 83b9bd349..83b9bd349 100644
--- a/html/dir_51e781f726fdae13b2b1c599701003ff.html
+++ b/dir_51e781f726fdae13b2b1c599701003ff.html
diff --git a/html/dir_5348599fb53ffd0a04c751b1feb60690.html b/dir_5348599fb53ffd0a04c751b1feb60690.html
index 8b9c6250c..8b9c6250c 100644
--- a/html/dir_5348599fb53ffd0a04c751b1feb60690.html
+++ b/dir_5348599fb53ffd0a04c751b1feb60690.html
diff --git a/html/dir_5348599fb53ffd0a04c751b1feb60690.js b/dir_5348599fb53ffd0a04c751b1feb60690.js
index d2ab98e61..d2ab98e61 100644
--- a/html/dir_5348599fb53ffd0a04c751b1feb60690.js
+++ b/dir_5348599fb53ffd0a04c751b1feb60690.js
diff --git a/html/dir_54f7e3dbaecc7243bd4ca1df73de1d82.html b/dir_54f7e3dbaecc7243bd4ca1df73de1d82.html
index b9e22eb4a..b9e22eb4a 100644
--- a/html/dir_54f7e3dbaecc7243bd4ca1df73de1d82.html
+++ b/dir_54f7e3dbaecc7243bd4ca1df73de1d82.html
diff --git a/html/dir_54f7e3dbaecc7243bd4ca1df73de1d82.js b/dir_54f7e3dbaecc7243bd4ca1df73de1d82.js
index 18ccc2d79..18ccc2d79 100644
--- a/html/dir_54f7e3dbaecc7243bd4ca1df73de1d82.js
+++ b/dir_54f7e3dbaecc7243bd4ca1df73de1d82.js
diff --git a/html/dir_58062094631e8b3486802dabc50a069c.html b/dir_58062094631e8b3486802dabc50a069c.html
index 803d91522..803d91522 100644
--- a/html/dir_58062094631e8b3486802dabc50a069c.html
+++ b/dir_58062094631e8b3486802dabc50a069c.html
diff --git a/html/dir_58062094631e8b3486802dabc50a069c.js b/dir_58062094631e8b3486802dabc50a069c.js
index 100f80ff7..100f80ff7 100644
--- a/html/dir_58062094631e8b3486802dabc50a069c.js
+++ b/dir_58062094631e8b3486802dabc50a069c.js
diff --git a/html/dir_5815af820a9cc9481f1d0990a0d60286.html b/dir_5815af820a9cc9481f1d0990a0d60286.html
index 5c786fc9a..5c786fc9a 100644
--- a/html/dir_5815af820a9cc9481f1d0990a0d60286.html
+++ b/dir_5815af820a9cc9481f1d0990a0d60286.html
diff --git a/html/dir_5815af820a9cc9481f1d0990a0d60286.js b/dir_5815af820a9cc9481f1d0990a0d60286.js
index 0edf49089..0edf49089 100644
--- a/html/dir_5815af820a9cc9481f1d0990a0d60286.js
+++ b/dir_5815af820a9cc9481f1d0990a0d60286.js
diff --git a/html/dir_5a40adf178dff7122e8e918d506dfd55.html b/dir_5a40adf178dff7122e8e918d506dfd55.html
index 2908697b4..2908697b4 100644
--- a/html/dir_5a40adf178dff7122e8e918d506dfd55.html
+++ b/dir_5a40adf178dff7122e8e918d506dfd55.html
diff --git a/html/dir_5bf5a092212d00af6395eab71ebb39ca.html b/dir_5bf5a092212d00af6395eab71ebb39ca.html
index 353a1803b..353a1803b 100644
--- a/html/dir_5bf5a092212d00af6395eab71ebb39ca.html
+++ b/dir_5bf5a092212d00af6395eab71ebb39ca.html
diff --git a/html/dir_5c283744458b038400bd774ec89e9ec9.html b/dir_5c283744458b038400bd774ec89e9ec9.html
index 3aff5d6c6..3aff5d6c6 100644
--- a/html/dir_5c283744458b038400bd774ec89e9ec9.html
+++ b/dir_5c283744458b038400bd774ec89e9ec9.html
diff --git a/html/dir_5c283744458b038400bd774ec89e9ec9.js b/dir_5c283744458b038400bd774ec89e9ec9.js
index aad7c21e0..aad7c21e0 100644
--- a/html/dir_5c283744458b038400bd774ec89e9ec9.js
+++ b/dir_5c283744458b038400bd774ec89e9ec9.js
diff --git a/html/dir_5d688059bd21a313bc96de52905569a5.html b/dir_5d688059bd21a313bc96de52905569a5.html
index 6d98a1f4b..6d98a1f4b 100644
--- a/html/dir_5d688059bd21a313bc96de52905569a5.html
+++ b/dir_5d688059bd21a313bc96de52905569a5.html
diff --git a/html/dir_5d688059bd21a313bc96de52905569a5.js b/dir_5d688059bd21a313bc96de52905569a5.js
index c4d10e8a5..c4d10e8a5 100644
--- a/html/dir_5d688059bd21a313bc96de52905569a5.js
+++ b/dir_5d688059bd21a313bc96de52905569a5.js
diff --git a/html/dir_5efb8cfc1694cbfe4776847fbb5c563b.html b/dir_5efb8cfc1694cbfe4776847fbb5c563b.html
index 9a2594234..9a2594234 100644
--- a/html/dir_5efb8cfc1694cbfe4776847fbb5c563b.html
+++ b/dir_5efb8cfc1694cbfe4776847fbb5c563b.html
diff --git a/html/dir_5efb8cfc1694cbfe4776847fbb5c563b.js b/dir_5efb8cfc1694cbfe4776847fbb5c563b.js
index f706d499c..f706d499c 100644
--- a/html/dir_5efb8cfc1694cbfe4776847fbb5c563b.js
+++ b/dir_5efb8cfc1694cbfe4776847fbb5c563b.js
diff --git a/html/dir_629690313ac978c400b86cc5525f4b87.html b/dir_629690313ac978c400b86cc5525f4b87.html
index 52fed774c..52fed774c 100644
--- a/html/dir_629690313ac978c400b86cc5525f4b87.html
+++ b/dir_629690313ac978c400b86cc5525f4b87.html
diff --git a/html/dir_629690313ac978c400b86cc5525f4b87.js b/dir_629690313ac978c400b86cc5525f4b87.js
index 438127b33..438127b33 100644
--- a/html/dir_629690313ac978c400b86cc5525f4b87.js
+++ b/dir_629690313ac978c400b86cc5525f4b87.js
diff --git a/html/dir_62ed8f96c89320da3fd7e16a2b85192c.html b/dir_62ed8f96c89320da3fd7e16a2b85192c.html
index 2c8b698ee..2c8b698ee 100644
--- a/html/dir_62ed8f96c89320da3fd7e16a2b85192c.html
+++ b/dir_62ed8f96c89320da3fd7e16a2b85192c.html
diff --git a/html/dir_62ed8f96c89320da3fd7e16a2b85192c.js b/dir_62ed8f96c89320da3fd7e16a2b85192c.js
index 45149a933..45149a933 100644
--- a/html/dir_62ed8f96c89320da3fd7e16a2b85192c.js
+++ b/dir_62ed8f96c89320da3fd7e16a2b85192c.js
diff --git a/html/dir_63b52ddf23d778bbcd97539fd18c8c48.html b/dir_63b52ddf23d778bbcd97539fd18c8c48.html
index 4fff71d38..4fff71d38 100644
--- a/html/dir_63b52ddf23d778bbcd97539fd18c8c48.html
+++ b/dir_63b52ddf23d778bbcd97539fd18c8c48.html
diff --git a/html/dir_63b52ddf23d778bbcd97539fd18c8c48.js b/dir_63b52ddf23d778bbcd97539fd18c8c48.js
index 84ca6300b..84ca6300b 100644
--- a/html/dir_63b52ddf23d778bbcd97539fd18c8c48.js
+++ b/dir_63b52ddf23d778bbcd97539fd18c8c48.js
diff --git a/html/dir_6401633e45a6ee04875dcf08ad199ed0.html b/dir_6401633e45a6ee04875dcf08ad199ed0.html
index 6c8c75d70..6c8c75d70 100644
--- a/html/dir_6401633e45a6ee04875dcf08ad199ed0.html
+++ b/dir_6401633e45a6ee04875dcf08ad199ed0.html
diff --git a/html/dir_6549bedf82156dc06df95cefb015444e.html b/dir_6549bedf82156dc06df95cefb015444e.html
index 85d224055..85d224055 100644
--- a/html/dir_6549bedf82156dc06df95cefb015444e.html
+++ b/dir_6549bedf82156dc06df95cefb015444e.html
diff --git a/html/dir_6632ad731806dd8b26d3b944846146dd.html b/dir_6632ad731806dd8b26d3b944846146dd.html
index 5806a1763..5806a1763 100644
--- a/html/dir_6632ad731806dd8b26d3b944846146dd.html
+++ b/dir_6632ad731806dd8b26d3b944846146dd.html
diff --git a/html/dir_682f25d9f1da5b43b9ccb6b6343fc6a1.html b/dir_682f25d9f1da5b43b9ccb6b6343fc6a1.html
index ed90182e4..ed90182e4 100644
--- a/html/dir_682f25d9f1da5b43b9ccb6b6343fc6a1.html
+++ b/dir_682f25d9f1da5b43b9ccb6b6343fc6a1.html
diff --git a/html/dir_68d2249a13631ab5cc14671480d55776.html b/dir_68d2249a13631ab5cc14671480d55776.html
index e5e6badbf..e5e6badbf 100644
--- a/html/dir_68d2249a13631ab5cc14671480d55776.html
+++ b/dir_68d2249a13631ab5cc14671480d55776.html
diff --git a/html/dir_6964d06faaa66aae8a0594d4dc847a0b.html b/dir_6964d06faaa66aae8a0594d4dc847a0b.html
index 3974bce7f..3974bce7f 100644
--- a/html/dir_6964d06faaa66aae8a0594d4dc847a0b.html
+++ b/dir_6964d06faaa66aae8a0594d4dc847a0b.html
diff --git a/html/dir_6964d06faaa66aae8a0594d4dc847a0b.js b/dir_6964d06faaa66aae8a0594d4dc847a0b.js
index d3389d523..d3389d523 100644
--- a/html/dir_6964d06faaa66aae8a0594d4dc847a0b.js
+++ b/dir_6964d06faaa66aae8a0594d4dc847a0b.js
diff --git a/html/dir_6bdf73800134bb9604564d37aee1e29f.html b/dir_6bdf73800134bb9604564d37aee1e29f.html
index d6f15063a..d6f15063a 100644
--- a/html/dir_6bdf73800134bb9604564d37aee1e29f.html
+++ b/dir_6bdf73800134bb9604564d37aee1e29f.html
diff --git a/html/dir_6bdf73800134bb9604564d37aee1e29f.js b/dir_6bdf73800134bb9604564d37aee1e29f.js
index 6246fb474..6246fb474 100644
--- a/html/dir_6bdf73800134bb9604564d37aee1e29f.js
+++ b/dir_6bdf73800134bb9604564d37aee1e29f.js
diff --git a/html/dir_6ffc0f016d2deaea924d934b564632d3.html b/dir_6ffc0f016d2deaea924d934b564632d3.html
index 56b03ac4d..56b03ac4d 100644
--- a/html/dir_6ffc0f016d2deaea924d934b564632d3.html
+++ b/dir_6ffc0f016d2deaea924d934b564632d3.html
diff --git a/html/dir_6ffc0f016d2deaea924d934b564632d3.js b/dir_6ffc0f016d2deaea924d934b564632d3.js
index 07d8f6dc2..07d8f6dc2 100644
--- a/html/dir_6ffc0f016d2deaea924d934b564632d3.js
+++ b/dir_6ffc0f016d2deaea924d934b564632d3.js
diff --git a/html/dir_71c7180a61976a97772dea51b3e2c740.html b/dir_71c7180a61976a97772dea51b3e2c740.html
index 42c3d3521..42c3d3521 100644
--- a/html/dir_71c7180a61976a97772dea51b3e2c740.html
+++ b/dir_71c7180a61976a97772dea51b3e2c740.html
diff --git a/html/dir_71c7180a61976a97772dea51b3e2c740.js b/dir_71c7180a61976a97772dea51b3e2c740.js
index 3aa6b5584..3aa6b5584 100644
--- a/html/dir_71c7180a61976a97772dea51b3e2c740.js
+++ b/dir_71c7180a61976a97772dea51b3e2c740.js
diff --git a/html/dir_720b853eee6f4465f2234e49d40a2650.html b/dir_720b853eee6f4465f2234e49d40a2650.html
index effb0d076..effb0d076 100644
--- a/html/dir_720b853eee6f4465f2234e49d40a2650.html
+++ b/dir_720b853eee6f4465f2234e49d40a2650.html
diff --git a/html/dir_720b853eee6f4465f2234e49d40a2650.js b/dir_720b853eee6f4465f2234e49d40a2650.js
index bd82e8994..bd82e8994 100644
--- a/html/dir_720b853eee6f4465f2234e49d40a2650.js
+++ b/dir_720b853eee6f4465f2234e49d40a2650.js
diff --git a/html/dir_7840427b37271f46ca660243b7a28cba.html b/dir_7840427b37271f46ca660243b7a28cba.html
index 1df40ec57..1df40ec57 100644
--- a/html/dir_7840427b37271f46ca660243b7a28cba.html
+++ b/dir_7840427b37271f46ca660243b7a28cba.html
diff --git a/html/dir_7840427b37271f46ca660243b7a28cba.js b/dir_7840427b37271f46ca660243b7a28cba.js
index ea205d303..ea205d303 100644
--- a/html/dir_7840427b37271f46ca660243b7a28cba.js
+++ b/dir_7840427b37271f46ca660243b7a28cba.js
diff --git a/html/dir_799e7b941177909dc945dfdc8b692383.html b/dir_799e7b941177909dc945dfdc8b692383.html
index 590f1665a..590f1665a 100644
--- a/html/dir_799e7b941177909dc945dfdc8b692383.html
+++ b/dir_799e7b941177909dc945dfdc8b692383.html
diff --git a/html/dir_7aca145e4cc077bd1181164f6fd57a65.html b/dir_7aca145e4cc077bd1181164f6fd57a65.html
index afaac9aa1..afaac9aa1 100644
--- a/html/dir_7aca145e4cc077bd1181164f6fd57a65.html
+++ b/dir_7aca145e4cc077bd1181164f6fd57a65.html
diff --git a/html/dir_7aed18b4691c13264304778a7a12cc02.html b/dir_7aed18b4691c13264304778a7a12cc02.html
index faa230e8c..faa230e8c 100644
--- a/html/dir_7aed18b4691c13264304778a7a12cc02.html
+++ b/dir_7aed18b4691c13264304778a7a12cc02.html
diff --git a/html/dir_7aed18b4691c13264304778a7a12cc02.js b/dir_7aed18b4691c13264304778a7a12cc02.js
index ee799a138..ee799a138 100644
--- a/html/dir_7aed18b4691c13264304778a7a12cc02.js
+++ b/dir_7aed18b4691c13264304778a7a12cc02.js
diff --git a/html/dir_7e6a584d3889449e2c432321014d65b5.html b/dir_7e6a584d3889449e2c432321014d65b5.html
index 6dcf1b105..6dcf1b105 100644
--- a/html/dir_7e6a584d3889449e2c432321014d65b5.html
+++ b/dir_7e6a584d3889449e2c432321014d65b5.html
diff --git a/html/dir_7e6a584d3889449e2c432321014d65b5.js b/dir_7e6a584d3889449e2c432321014d65b5.js
index 6eda487e0..6eda487e0 100644
--- a/html/dir_7e6a584d3889449e2c432321014d65b5.js
+++ b/dir_7e6a584d3889449e2c432321014d65b5.js
diff --git a/html/dir_7f1ddf2750ccac222e58a0a92d422bde.html b/dir_7f1ddf2750ccac222e58a0a92d422bde.html
index ca22f411b..ca22f411b 100644
--- a/html/dir_7f1ddf2750ccac222e58a0a92d422bde.html
+++ b/dir_7f1ddf2750ccac222e58a0a92d422bde.html
diff --git a/html/dir_7f1ddf2750ccac222e58a0a92d422bde.js b/dir_7f1ddf2750ccac222e58a0a92d422bde.js
index 4ea2ea429..4ea2ea429 100644
--- a/html/dir_7f1ddf2750ccac222e58a0a92d422bde.js
+++ b/dir_7f1ddf2750ccac222e58a0a92d422bde.js
diff --git a/html/dir_8022f260cb33bb0f12ace4cf11c510e1.html b/dir_8022f260cb33bb0f12ace4cf11c510e1.html
index 8e5add80a..8e5add80a 100644
--- a/html/dir_8022f260cb33bb0f12ace4cf11c510e1.html
+++ b/dir_8022f260cb33bb0f12ace4cf11c510e1.html
diff --git a/html/dir_8022f260cb33bb0f12ace4cf11c510e1.js b/dir_8022f260cb33bb0f12ace4cf11c510e1.js
index 6118c04cc..6118c04cc 100644
--- a/html/dir_8022f260cb33bb0f12ace4cf11c510e1.js
+++ b/dir_8022f260cb33bb0f12ace4cf11c510e1.js
diff --git a/html/dir_88345b80b8e003bff9bb55c25fb3b53d.html b/dir_88345b80b8e003bff9bb55c25fb3b53d.html
index f30a0335d..f30a0335d 100644
--- a/html/dir_88345b80b8e003bff9bb55c25fb3b53d.html
+++ b/dir_88345b80b8e003bff9bb55c25fb3b53d.html
diff --git a/html/dir_88345b80b8e003bff9bb55c25fb3b53d.js b/dir_88345b80b8e003bff9bb55c25fb3b53d.js
index 63a2eaf62..63a2eaf62 100644
--- a/html/dir_88345b80b8e003bff9bb55c25fb3b53d.js
+++ b/dir_88345b80b8e003bff9bb55c25fb3b53d.js
diff --git a/html/dir_8b19c315ddc03d8f73d70316e3e36453.html b/dir_8b19c315ddc03d8f73d70316e3e36453.html
index d877e3b71..d877e3b71 100644
--- a/html/dir_8b19c315ddc03d8f73d70316e3e36453.html
+++ b/dir_8b19c315ddc03d8f73d70316e3e36453.html
diff --git a/html/dir_8b19c315ddc03d8f73d70316e3e36453.js b/dir_8b19c315ddc03d8f73d70316e3e36453.js
index cb8a64815..cb8a64815 100644
--- a/html/dir_8b19c315ddc03d8f73d70316e3e36453.js
+++ b/dir_8b19c315ddc03d8f73d70316e3e36453.js
diff --git a/html/dir_93f15550356fa5bd8f2f7273a263c39b.html b/dir_93f15550356fa5bd8f2f7273a263c39b.html
index 05692789a..05692789a 100644
--- a/html/dir_93f15550356fa5bd8f2f7273a263c39b.html
+++ b/dir_93f15550356fa5bd8f2f7273a263c39b.html
diff --git a/html/dir_9942baf907e5932713ea498262916d97.html b/dir_9942baf907e5932713ea498262916d97.html
index 13fc9736f..13fc9736f 100644
--- a/html/dir_9942baf907e5932713ea498262916d97.html
+++ b/dir_9942baf907e5932713ea498262916d97.html
diff --git a/html/dir_9942baf907e5932713ea498262916d97.js b/dir_9942baf907e5932713ea498262916d97.js
index dc39a5057..dc39a5057 100644
--- a/html/dir_9942baf907e5932713ea498262916d97.js
+++ b/dir_9942baf907e5932713ea498262916d97.js
diff --git a/html/dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.html b/dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.html
index 86fa1c19e..86fa1c19e 100644
--- a/html/dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.html
+++ b/dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.html
diff --git a/html/dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.js b/dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.js
index 60f4895ff..60f4895ff 100644
--- a/html/dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.js
+++ b/dir_9ba5d7c5d3f2b673fd3a7e1c44a65e13.js
diff --git a/html/dir_9c614f9f6d85e2ed081007371a4f5142.html b/dir_9c614f9f6d85e2ed081007371a4f5142.html
index 65d1607fe..65d1607fe 100644
--- a/html/dir_9c614f9f6d85e2ed081007371a4f5142.html
+++ b/dir_9c614f9f6d85e2ed081007371a4f5142.html
diff --git a/html/dir_9c614f9f6d85e2ed081007371a4f5142.js b/dir_9c614f9f6d85e2ed081007371a4f5142.js
index d72d9cc87..d72d9cc87 100644
--- a/html/dir_9c614f9f6d85e2ed081007371a4f5142.js
+++ b/dir_9c614f9f6d85e2ed081007371a4f5142.js
diff --git a/html/dir_a9bb7d2344b3b943be7eb3c132605920.html b/dir_a9bb7d2344b3b943be7eb3c132605920.html
index ed29ff990..ed29ff990 100644
--- a/html/dir_a9bb7d2344b3b943be7eb3c132605920.html
+++ b/dir_a9bb7d2344b3b943be7eb3c132605920.html
diff --git a/html/dir_aa876c2d98401154a8be1dc7241a159c.html b/dir_aa876c2d98401154a8be1dc7241a159c.html
index 1a49cd02c..1a49cd02c 100644
--- a/html/dir_aa876c2d98401154a8be1dc7241a159c.html
+++ b/dir_aa876c2d98401154a8be1dc7241a159c.html
diff --git a/html/dir_b2f903c5aadb40b2b3c6f038c9268aec.html b/dir_b2f903c5aadb40b2b3c6f038c9268aec.html
index 53c533df8..53c533df8 100644
--- a/html/dir_b2f903c5aadb40b2b3c6f038c9268aec.html
+++ b/dir_b2f903c5aadb40b2b3c6f038c9268aec.html
diff --git a/html/dir_b2f903c5aadb40b2b3c6f038c9268aec.js b/dir_b2f903c5aadb40b2b3c6f038c9268aec.js
index b95bc4b2c..b95bc4b2c 100644
--- a/html/dir_b2f903c5aadb40b2b3c6f038c9268aec.js
+++ b/dir_b2f903c5aadb40b2b3c6f038c9268aec.js
diff --git a/html/dir_b4c3aec6cd8f28418150dce663061cfa.html b/dir_b4c3aec6cd8f28418150dce663061cfa.html
index a6b6b90ef..a6b6b90ef 100644
--- a/html/dir_b4c3aec6cd8f28418150dce663061cfa.html
+++ b/dir_b4c3aec6cd8f28418150dce663061cfa.html
diff --git a/html/dir_b565d4fcb41986a6b26d7475fb3f69ab.html b/dir_b565d4fcb41986a6b26d7475fb3f69ab.html
index f9a3d8a19..f9a3d8a19 100644
--- a/html/dir_b565d4fcb41986a6b26d7475fb3f69ab.html
+++ b/dir_b565d4fcb41986a6b26d7475fb3f69ab.html
diff --git a/html/dir_b565d4fcb41986a6b26d7475fb3f69ab.js b/dir_b565d4fcb41986a6b26d7475fb3f69ab.js
index c42f103bc..c42f103bc 100644
--- a/html/dir_b565d4fcb41986a6b26d7475fb3f69ab.js
+++ b/dir_b565d4fcb41986a6b26d7475fb3f69ab.js
diff --git a/html/dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.html b/dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.html
index a88d281b4..a88d281b4 100644
--- a/html/dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.html
+++ b/dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.html
diff --git a/html/dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.js b/dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.js
index bb87a1473..bb87a1473 100644
--- a/html/dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.js
+++ b/dir_b7007fe8f1dc2d1a9adfc8067bd6a2ee.js
diff --git a/html/dir_bcb057b4e7079233225e5edb60c47dce.html b/dir_bcb057b4e7079233225e5edb60c47dce.html
index 5b014c1d1..5b014c1d1 100644
--- a/html/dir_bcb057b4e7079233225e5edb60c47dce.html
+++ b/dir_bcb057b4e7079233225e5edb60c47dce.html
diff --git a/html/dir_be188be5249491678773f9f5c5b518cb.html b/dir_be188be5249491678773f9f5c5b518cb.html
index bdee5de07..bdee5de07 100644
--- a/html/dir_be188be5249491678773f9f5c5b518cb.html
+++ b/dir_be188be5249491678773f9f5c5b518cb.html
diff --git a/html/dir_be188be5249491678773f9f5c5b518cb.js b/dir_be188be5249491678773f9f5c5b518cb.js
index fb65b91e6..fb65b91e6 100644
--- a/html/dir_be188be5249491678773f9f5c5b518cb.js
+++ b/dir_be188be5249491678773f9f5c5b518cb.js
diff --git a/html/dir_bedabc82e53656e8b58a25ab8e6f1e6f.html b/dir_bedabc82e53656e8b58a25ab8e6f1e6f.html
index da0194c51..da0194c51 100644
--- a/html/dir_bedabc82e53656e8b58a25ab8e6f1e6f.html
+++ b/dir_bedabc82e53656e8b58a25ab8e6f1e6f.html
diff --git a/html/dir_bf5346e9592bc1ac9fb591bd6d4d769a.html b/dir_bf5346e9592bc1ac9fb591bd6d4d769a.html
index bb0a8ff6a..bb0a8ff6a 100644
--- a/html/dir_bf5346e9592bc1ac9fb591bd6d4d769a.html
+++ b/dir_bf5346e9592bc1ac9fb591bd6d4d769a.html
diff --git a/html/dir_bf5346e9592bc1ac9fb591bd6d4d769a.js b/dir_bf5346e9592bc1ac9fb591bd6d4d769a.js
index 4185415d6..4185415d6 100644
--- a/html/dir_bf5346e9592bc1ac9fb591bd6d4d769a.js
+++ b/dir_bf5346e9592bc1ac9fb591bd6d4d769a.js
diff --git a/html/dir_c0734f77ea3dea2197fe756876cb58bd.html b/dir_c0734f77ea3dea2197fe756876cb58bd.html
index 8cfa8968f..8cfa8968f 100644
--- a/html/dir_c0734f77ea3dea2197fe756876cb58bd.html
+++ b/dir_c0734f77ea3dea2197fe756876cb58bd.html
diff --git a/html/dir_c5ba526abc58c6152462f2a45a8efcce.html b/dir_c5ba526abc58c6152462f2a45a8efcce.html
index 6aa02fccb..6aa02fccb 100644
--- a/html/dir_c5ba526abc58c6152462f2a45a8efcce.html
+++ b/dir_c5ba526abc58c6152462f2a45a8efcce.html
diff --git a/html/dir_c7b46606d24366b69b1a67bdd3f2153b.html b/dir_c7b46606d24366b69b1a67bdd3f2153b.html
index fb903a5bb..fb903a5bb 100644
--- a/html/dir_c7b46606d24366b69b1a67bdd3f2153b.html
+++ b/dir_c7b46606d24366b69b1a67bdd3f2153b.html
diff --git a/html/dir_c7b46606d24366b69b1a67bdd3f2153b.js b/dir_c7b46606d24366b69b1a67bdd3f2153b.js
index ef6fa6221..ef6fa6221 100644
--- a/html/dir_c7b46606d24366b69b1a67bdd3f2153b.js
+++ b/dir_c7b46606d24366b69b1a67bdd3f2153b.js
diff --git a/html/dir_c9489aedb91d793176e12fc4e8412440.html b/dir_c9489aedb91d793176e12fc4e8412440.html
index 078c95ace..078c95ace 100644
--- a/html/dir_c9489aedb91d793176e12fc4e8412440.html
+++ b/dir_c9489aedb91d793176e12fc4e8412440.html
diff --git a/html/dir_c9489aedb91d793176e12fc4e8412440.js b/dir_c9489aedb91d793176e12fc4e8412440.js
index 057123d06..057123d06 100644
--- a/html/dir_c9489aedb91d793176e12fc4e8412440.js
+++ b/dir_c9489aedb91d793176e12fc4e8412440.js
diff --git a/html/dir_c996c867c7dc0e02ecaa98871169fd28.html b/dir_c996c867c7dc0e02ecaa98871169fd28.html
index dac1a21b3..dac1a21b3 100644
--- a/html/dir_c996c867c7dc0e02ecaa98871169fd28.html
+++ b/dir_c996c867c7dc0e02ecaa98871169fd28.html
diff --git a/html/dir_c9e0e5754b02154938f7bb05ce1e7219.html b/dir_c9e0e5754b02154938f7bb05ce1e7219.html
index 43634ada3..43634ada3 100644
--- a/html/dir_c9e0e5754b02154938f7bb05ce1e7219.html
+++ b/dir_c9e0e5754b02154938f7bb05ce1e7219.html
diff --git a/html/dir_c9e0e5754b02154938f7bb05ce1e7219.js b/dir_c9e0e5754b02154938f7bb05ce1e7219.js
index 6ec8e651e..6ec8e651e 100644
--- a/html/dir_c9e0e5754b02154938f7bb05ce1e7219.js
+++ b/dir_c9e0e5754b02154938f7bb05ce1e7219.js
diff --git a/html/dir_cc1691744fab67de5266c0809c3d8c5f.html b/dir_cc1691744fab67de5266c0809c3d8c5f.html
index a2ae70784..a2ae70784 100644
--- a/html/dir_cc1691744fab67de5266c0809c3d8c5f.html
+++ b/dir_cc1691744fab67de5266c0809c3d8c5f.html
diff --git a/html/dir_d1d19abdcfd2470efb720c8c09874a00.html b/dir_d1d19abdcfd2470efb720c8c09874a00.html
index c526fd310..c526fd310 100644
--- a/html/dir_d1d19abdcfd2470efb720c8c09874a00.html
+++ b/dir_d1d19abdcfd2470efb720c8c09874a00.html
diff --git a/html/dir_d2f6e0f84cbee556810effe24c559bf7.html b/dir_d2f6e0f84cbee556810effe24c559bf7.html
index d5b13a8b8..d5b13a8b8 100644
--- a/html/dir_d2f6e0f84cbee556810effe24c559bf7.html
+++ b/dir_d2f6e0f84cbee556810effe24c559bf7.html
diff --git a/html/dir_d3ecff0bc160598fe1ec3daebdd455df.html b/dir_d3ecff0bc160598fe1ec3daebdd455df.html
index 02cb482e8..02cb482e8 100644
--- a/html/dir_d3ecff0bc160598fe1ec3daebdd455df.html
+++ b/dir_d3ecff0bc160598fe1ec3daebdd455df.html
diff --git a/html/dir_d625ee6c8934bf228cb17ea645bba64b.html b/dir_d625ee6c8934bf228cb17ea645bba64b.html
index 1edfd5c4b..1edfd5c4b 100644
--- a/html/dir_d625ee6c8934bf228cb17ea645bba64b.html
+++ b/dir_d625ee6c8934bf228cb17ea645bba64b.html
diff --git a/html/dir_d96a2be2088865c6bacdc361b708e41e.html b/dir_d96a2be2088865c6bacdc361b708e41e.html
index 61301dd4f..61301dd4f 100644
--- a/html/dir_d96a2be2088865c6bacdc361b708e41e.html
+++ b/dir_d96a2be2088865c6bacdc361b708e41e.html
diff --git a/html/dir_d96a2be2088865c6bacdc361b708e41e.js b/dir_d96a2be2088865c6bacdc361b708e41e.js
index 2c66f4a0a..2c66f4a0a 100644
--- a/html/dir_d96a2be2088865c6bacdc361b708e41e.js
+++ b/dir_d96a2be2088865c6bacdc361b708e41e.js
diff --git a/html/dir_e3a1165f6ad1293c53e9ac0f8bf6074a.html b/dir_e3a1165f6ad1293c53e9ac0f8bf6074a.html
index 27eb22fed..27eb22fed 100644
--- a/html/dir_e3a1165f6ad1293c53e9ac0f8bf6074a.html
+++ b/dir_e3a1165f6ad1293c53e9ac0f8bf6074a.html
diff --git a/html/dir_e3f7bffca7669cf35b8652af00d5e0d2.html b/dir_e3f7bffca7669cf35b8652af00d5e0d2.html
index 240adf5c8..240adf5c8 100644
--- a/html/dir_e3f7bffca7669cf35b8652af00d5e0d2.html
+++ b/dir_e3f7bffca7669cf35b8652af00d5e0d2.html
diff --git a/html/dir_e3f7bffca7669cf35b8652af00d5e0d2.js b/dir_e3f7bffca7669cf35b8652af00d5e0d2.js
index 99b6dc44d..99b6dc44d 100644
--- a/html/dir_e3f7bffca7669cf35b8652af00d5e0d2.js
+++ b/dir_e3f7bffca7669cf35b8652af00d5e0d2.js
diff --git a/html/dir_e6c54268d011365494e6c4da02774db2.html b/dir_e6c54268d011365494e6c4da02774db2.html
index b5e57541e..b5e57541e 100644
--- a/html/dir_e6c54268d011365494e6c4da02774db2.html
+++ b/dir_e6c54268d011365494e6c4da02774db2.html
diff --git a/html/dir_e6c54268d011365494e6c4da02774db2.js b/dir_e6c54268d011365494e6c4da02774db2.js
index 248555a3b..248555a3b 100644
--- a/html/dir_e6c54268d011365494e6c4da02774db2.js
+++ b/dir_e6c54268d011365494e6c4da02774db2.js
diff --git a/html/dir_e79632891301b850df87e9c0030293fa.html b/dir_e79632891301b850df87e9c0030293fa.html
index 4fb1fd91a..4fb1fd91a 100644
--- a/html/dir_e79632891301b850df87e9c0030293fa.html
+++ b/dir_e79632891301b850df87e9c0030293fa.html
diff --git a/html/dir_e79632891301b850df87e9c0030293fa.js b/dir_e79632891301b850df87e9c0030293fa.js
index a31ad4d22..a31ad4d22 100644
--- a/html/dir_e79632891301b850df87e9c0030293fa.js
+++ b/dir_e79632891301b850df87e9c0030293fa.js
diff --git a/html/dir_eb07e5cc9fcc31a8449024aa3db6cd75.html b/dir_eb07e5cc9fcc31a8449024aa3db6cd75.html
index 062372a41..062372a41 100644
--- a/html/dir_eb07e5cc9fcc31a8449024aa3db6cd75.html
+++ b/dir_eb07e5cc9fcc31a8449024aa3db6cd75.html
diff --git a/html/dir_f0ee4743bbbe555acf5c57851fade7a6.html b/dir_f0ee4743bbbe555acf5c57851fade7a6.html
index 88011dcbf..88011dcbf 100644
--- a/html/dir_f0ee4743bbbe555acf5c57851fade7a6.html
+++ b/dir_f0ee4743bbbe555acf5c57851fade7a6.html
diff --git a/html/dir_fb4e75ee58b189715b1a0f0bb7695a3d.html b/dir_fb4e75ee58b189715b1a0f0bb7695a3d.html
index e9618142c..e9618142c 100644
--- a/html/dir_fb4e75ee58b189715b1a0f0bb7695a3d.html
+++ b/dir_fb4e75ee58b189715b1a0f0bb7695a3d.html
diff --git a/html/dir_fb4e75ee58b189715b1a0f0bb7695a3d.js b/dir_fb4e75ee58b189715b1a0f0bb7695a3d.js
index aa12a8f62..aa12a8f62 100644
--- a/html/dir_fb4e75ee58b189715b1a0f0bb7695a3d.js
+++ b/dir_fb4e75ee58b189715b1a0f0bb7695a3d.js
diff --git a/html/doxygen.css b/doxygen.css
index f0f36f89f..f0f36f89f 100644
--- a/html/doxygen.css
+++ b/doxygen.css
diff --git a/html/doxygen.png b/doxygen.png
index 3ff17d807..3ff17d807 100644
--- a/html/doxygen.png
+++ b/doxygen.png
Binary files differ
diff --git a/html/draw__info_8h_source.html b/draw__info_8h_source.html
index 95abb125f..95abb125f 100644
--- a/html/draw__info_8h_source.html
+++ b/draw__info_8h_source.html
diff --git a/html/dynsections.js b/dynsections.js
index ed092c7f6..ed092c7f6 100644
--- a/html/dynsections.js
+++ b/dynsections.js
diff --git a/html/emess_8h_source.html b/emess_8h_source.html
index ea3e85d97..ea3e85d97 100644
--- a/html/emess_8h_source.html
+++ b/emess_8h_source.html
diff --git a/html/endianess_8h_source.html b/endianess_8h_source.html
index 67673ca9a..67673ca9a 100644
--- a/html/endianess_8h_source.html
+++ b/endianess_8h_source.html
diff --git a/html/errno_8h_source.html b/errno_8h_source.html
index 97d601e67..97d601e67 100644
--- a/html/errno_8h_source.html
+++ b/errno_8h_source.html
diff --git a/html/errorcode_8h_source.html b/errorcode_8h_source.html
index 3b346aaae..3b346aaae 100644
--- a/html/errorcode_8h_source.html
+++ b/errorcode_8h_source.html
diff --git a/html/espeak__command_8h_source.html b/espeak__command_8h_source.html
index ac60c84c6..ac60c84c6 100644
--- a/html/espeak__command_8h_source.html
+++ b/espeak__command_8h_source.html
diff --git a/html/eval-plural_8h_source.html b/eval-plural_8h_source.html
index 49c94344f..49c94344f 100644
--- a/html/eval-plural_8h_source.html
+++ b/eval-plural_8h_source.html
diff --git a/html/event_8h_source.html b/event_8h_source.html
index 768ee08cf..768ee08cf 100644
--- a/html/event_8h_source.html
+++ b/event_8h_source.html
diff --git a/html/event__glib_8h_source.html b/event__glib_8h_source.html
index 3e39b2b2e..3e39b2b2e 100644
--- a/html/event__glib_8h_source.html
+++ b/event__glib_8h_source.html
diff --git a/html/event__qt5_8h_source.html b/event__qt5_8h_source.html
index d7ae73fcd..d7ae73fcd 100644
--- a/html/event__qt5_8h_source.html
+++ b/event__qt5_8h_source.html
diff --git a/html/event__sdl_8h_source.html b/event__sdl_8h_source.html
index 2179df109..2179df109 100644
--- a/html/event__sdl_8h_source.html
+++ b/event__sdl_8h_source.html
diff --git a/html/ezxml_8h_source.html b/ezxml_8h_source.html
index 7f4d74092..7f4d74092 100644
--- a/html/ezxml_8h_source.html
+++ b/ezxml_8h_source.html
diff --git a/html/fake_8h_source.html b/fake_8h_source.html
index 0d7f797bc..0d7f797bc 100644
--- a/html/fake_8h_source.html
+++ b/fake_8h_source.html
diff --git a/html/fcntl_8h_source.html b/fcntl_8h_source.html
index f0bd7b576..f0bd7b576 100644
--- a/html/fcntl_8h_source.html
+++ b/fcntl_8h_source.html
diff --git a/html/fib_8h_source.html b/fib_8h_source.html
index 907269795..907269795 100644
--- a/html/fib_8h_source.html
+++ b/fib_8h_source.html
diff --git a/html/fibpriv_8h_source.html b/fibpriv_8h_source.html
index 0b983123f..0b983123f 100644
--- a/html/fibpriv_8h_source.html
+++ b/fibpriv_8h_source.html
diff --git a/html/fifo_8h_source.html b/fifo_8h_source.html
index 57092fbd9..57092fbd9 100644
--- a/html/fifo_8h_source.html
+++ b/fifo_8h_source.html
diff --git a/html/file_8h_source.html b/file_8h_source.html
index 2ff1c1388..2ff1c1388 100644
--- a/html/file_8h_source.html
+++ b/file_8h_source.html
diff --git a/html/fileformat_8pb-c_8h_source.html b/fileformat_8pb-c_8h_source.html
index 0a08200b3..0a08200b3 100644
--- a/html/fileformat_8pb-c_8h_source.html
+++ b/fileformat_8pb-c_8h_source.html
diff --git a/html/files.html b/files.html
index 168d58635..168d58635 100644
--- a/html/files.html
+++ b/files.html
diff --git a/html/files.js b/files.js
index 6864692bd..6864692bd 100644
--- a/html/files.js
+++ b/files.js
diff --git a/html/font__freetype_8h.html b/font__freetype_8h.html
index 24f774c70..24f774c70 100644
--- a/html/font__freetype_8h.html
+++ b/font__freetype_8h.html
diff --git a/html/font__freetype_8h_source.html b/font__freetype_8h_source.html
index 3aa470e16..3aa470e16 100644
--- a/html/font__freetype_8h_source.html
+++ b/font__freetype_8h_source.html
diff --git a/html/ftv2blank.png b/ftv2blank.png
index 63c605bb4..63c605bb4 100644
--- a/html/ftv2blank.png
+++ b/ftv2blank.png
Binary files differ
diff --git a/html/ftv2cl.png b/ftv2cl.png
index 132f6577b..132f6577b 100644
--- a/html/ftv2cl.png
+++ b/ftv2cl.png
Binary files differ
diff --git a/html/ftv2doc.png b/ftv2doc.png
index 17edabff9..17edabff9 100644
--- a/html/ftv2doc.png
+++ b/ftv2doc.png
Binary files differ
diff --git a/html/ftv2folderclosed.png b/ftv2folderclosed.png
index bb8ab35ed..bb8ab35ed 100644
--- a/html/ftv2folderclosed.png
+++ b/ftv2folderclosed.png
Binary files differ
diff --git a/html/ftv2folderopen.png b/ftv2folderopen.png
index d6c7f676a..d6c7f676a 100644
--- a/html/ftv2folderopen.png
+++ b/ftv2folderopen.png
Binary files differ
diff --git a/html/ftv2lastnode.png b/ftv2lastnode.png
index 63c605bb4..63c605bb4 100644
--- a/html/ftv2lastnode.png
+++ b/ftv2lastnode.png
Binary files differ
diff --git a/html/ftv2link.png b/ftv2link.png
index 17edabff9..17edabff9 100644
--- a/html/ftv2link.png
+++ b/ftv2link.png
Binary files differ
diff --git a/html/ftv2mlastnode.png b/ftv2mlastnode.png
index 0b63f6d38..0b63f6d38 100644
--- a/html/ftv2mlastnode.png
+++ b/ftv2mlastnode.png
Binary files differ
diff --git a/html/ftv2mnode.png b/ftv2mnode.png
index 0b63f6d38..0b63f6d38 100644
--- a/html/ftv2mnode.png
+++ b/ftv2mnode.png
Binary files differ
diff --git a/html/ftv2mo.png b/ftv2mo.png
index 4bfb80f76..4bfb80f76 100644
--- a/html/ftv2mo.png
+++ b/ftv2mo.png
Binary files differ
diff --git a/html/ftv2node.png b/ftv2node.png
index 63c605bb4..63c605bb4 100644
--- a/html/ftv2node.png
+++ b/ftv2node.png
Binary files differ
diff --git a/html/ftv2ns.png b/ftv2ns.png
index 72e3d71c2..72e3d71c2 100644
--- a/html/ftv2ns.png
+++ b/ftv2ns.png
Binary files differ
diff --git a/html/ftv2plastnode.png b/ftv2plastnode.png
index c6ee22f93..c6ee22f93 100644
--- a/html/ftv2plastnode.png
+++ b/ftv2plastnode.png
Binary files differ
diff --git a/html/ftv2pnode.png b/ftv2pnode.png
index c6ee22f93..c6ee22f93 100644
--- a/html/ftv2pnode.png
+++ b/ftv2pnode.png
Binary files differ
diff --git a/html/ftv2splitbar.png b/ftv2splitbar.png
index fe895f2c5..fe895f2c5 100644
--- a/html/ftv2splitbar.png
+++ b/ftv2splitbar.png
Binary files differ
diff --git a/html/ftv2vertline.png b/ftv2vertline.png
index 63c605bb4..63c605bb4 100644
--- a/html/ftv2vertline.png
+++ b/ftv2vertline.png
Binary files differ
diff --git a/html/functions.html b/functions.html
index 7de6a1385..7de6a1385 100644
--- a/html/functions.html
+++ b/functions.html
diff --git a/html/functions_b.html b/functions_b.html
index 89a21a6d6..89a21a6d6 100644
--- a/html/functions_b.html
+++ b/functions_b.html
diff --git a/html/functions_c.html b/functions_c.html
index e7382cb11..e7382cb11 100644
--- a/html/functions_c.html
+++ b/functions_c.html
diff --git a/html/functions_d.html b/functions_d.html
index c280bd7e9..c280bd7e9 100644
--- a/html/functions_d.html
+++ b/functions_d.html
diff --git a/html/functions_dup.js b/functions_dup.js
index 88e913063..88e913063 100644
--- a/html/functions_dup.js
+++ b/functions_dup.js
diff --git a/html/functions_e.html b/functions_e.html
index d41f78c5b..d41f78c5b 100644
--- a/html/functions_e.html
+++ b/functions_e.html
diff --git a/html/functions_f.html b/functions_f.html
index 3180d221d..3180d221d 100644
--- a/html/functions_f.html
+++ b/functions_f.html
diff --git a/html/functions_func.html b/functions_func.html
index 0d928c2fa..0d928c2fa 100644
--- a/html/functions_func.html
+++ b/functions_func.html
diff --git a/html/functions_g.html b/functions_g.html
index 23277fa1a..23277fa1a 100644
--- a/html/functions_g.html
+++ b/functions_g.html
diff --git a/html/functions_h.html b/functions_h.html
index 5de03c699..5de03c699 100644
--- a/html/functions_h.html
+++ b/functions_h.html
diff --git a/html/functions_i.html b/functions_i.html
index f97a1f612..f97a1f612 100644
--- a/html/functions_i.html
+++ b/functions_i.html
diff --git a/html/functions_k.html b/functions_k.html
index ce9796d3c..ce9796d3c 100644
--- a/html/functions_k.html
+++ b/functions_k.html
diff --git a/html/functions_l.html b/functions_l.html
index 0a1c3fd00..0a1c3fd00 100644
--- a/html/functions_l.html
+++ b/functions_l.html
diff --git a/html/functions_m.html b/functions_m.html
index d63ee1593..d63ee1593 100644
--- a/html/functions_m.html
+++ b/functions_m.html
diff --git a/html/functions_n.html b/functions_n.html
index 4e1224930..4e1224930 100644
--- a/html/functions_n.html
+++ b/functions_n.html
diff --git a/html/functions_o.html b/functions_o.html
index 1ae08d485..1ae08d485 100644
--- a/html/functions_o.html
+++ b/functions_o.html
diff --git a/html/functions_p.html b/functions_p.html
index f3f5d37d1..f3f5d37d1 100644
--- a/html/functions_p.html
+++ b/functions_p.html
diff --git a/html/functions_prop.html b/functions_prop.html
index 570f3c735..570f3c735 100644
--- a/html/functions_prop.html
+++ b/functions_prop.html
diff --git a/html/functions_q.html b/functions_q.html
index 2209c5162..2209c5162 100644
--- a/html/functions_q.html
+++ b/functions_q.html
diff --git a/html/functions_r.html b/functions_r.html
index 96ab19d26..96ab19d26 100644
--- a/html/functions_r.html
+++ b/functions_r.html
diff --git a/html/functions_s.html b/functions_s.html
index c8386b4de..c8386b4de 100644
--- a/html/functions_s.html
+++ b/functions_s.html
diff --git a/html/functions_t.html b/functions_t.html
index f8436694e..f8436694e 100644
--- a/html/functions_t.html
+++ b/functions_t.html
diff --git a/html/functions_u.html b/functions_u.html
index c1f77dad7..c1f77dad7 100644
--- a/html/functions_u.html
+++ b/functions_u.html
diff --git a/html/functions_v.html b/functions_v.html
index 8251b53e1..8251b53e1 100644
--- a/html/functions_v.html
+++ b/functions_v.html
diff --git a/html/functions_vars.html b/functions_vars.html
index d8b1dd6f4..d8b1dd6f4 100644
--- a/html/functions_vars.html
+++ b/functions_vars.html
diff --git a/html/functions_vars.js b/functions_vars.js
index 93106aa7e..93106aa7e 100644
--- a/html/functions_vars.js
+++ b/functions_vars.js
diff --git a/html/functions_vars_b.html b/functions_vars_b.html
index 5fc37bd73..5fc37bd73 100644
--- a/html/functions_vars_b.html
+++ b/functions_vars_b.html
diff --git a/html/functions_vars_c.html b/functions_vars_c.html
index 7de7f08c5..7de7f08c5 100644
--- a/html/functions_vars_c.html
+++ b/functions_vars_c.html
diff --git a/html/functions_vars_d.html b/functions_vars_d.html
index b6fb2dd67..b6fb2dd67 100644
--- a/html/functions_vars_d.html
+++ b/functions_vars_d.html
diff --git a/html/functions_vars_e.html b/functions_vars_e.html
index b70f916e4..b70f916e4 100644
--- a/html/functions_vars_e.html
+++ b/functions_vars_e.html
diff --git a/html/functions_vars_f.html b/functions_vars_f.html
index 57b08f98f..57b08f98f 100644
--- a/html/functions_vars_f.html
+++ b/functions_vars_f.html
diff --git a/html/functions_vars_g.html b/functions_vars_g.html
index d9278ab5e..d9278ab5e 100644
--- a/html/functions_vars_g.html
+++ b/functions_vars_g.html
diff --git a/html/functions_vars_h.html b/functions_vars_h.html
index baed3c0c4..baed3c0c4 100644
--- a/html/functions_vars_h.html
+++ b/functions_vars_h.html
diff --git a/html/functions_vars_i.html b/functions_vars_i.html
index 9189063ac..9189063ac 100644
--- a/html/functions_vars_i.html
+++ b/functions_vars_i.html
diff --git a/html/functions_vars_k.html b/functions_vars_k.html
index 4f0cb5845..4f0cb5845 100644
--- a/html/functions_vars_k.html
+++ b/functions_vars_k.html
diff --git a/html/functions_vars_l.html b/functions_vars_l.html
index 3de3c25f5..3de3c25f5 100644
--- a/html/functions_vars_l.html
+++ b/functions_vars_l.html
diff --git a/html/functions_vars_m.html b/functions_vars_m.html
index 4cec5ec7d..4cec5ec7d 100644
--- a/html/functions_vars_m.html
+++ b/functions_vars_m.html
diff --git a/html/functions_vars_n.html b/functions_vars_n.html
index 5fd71ef3c..5fd71ef3c 100644
--- a/html/functions_vars_n.html
+++ b/functions_vars_n.html
diff --git a/html/functions_vars_o.html b/functions_vars_o.html
index f710a384d..f710a384d 100644
--- a/html/functions_vars_o.html
+++ b/functions_vars_o.html
diff --git a/html/functions_vars_p.html b/functions_vars_p.html
index 791766f1d..791766f1d 100644
--- a/html/functions_vars_p.html
+++ b/functions_vars_p.html
diff --git a/html/functions_vars_r.html b/functions_vars_r.html
index 06bcbeaea..06bcbeaea 100644
--- a/html/functions_vars_r.html
+++ b/functions_vars_r.html
diff --git a/html/functions_vars_s.html b/functions_vars_s.html
index 407d64c73..407d64c73 100644
--- a/html/functions_vars_s.html
+++ b/functions_vars_s.html
diff --git a/html/functions_vars_t.html b/functions_vars_t.html
index 4040a1b26..4040a1b26 100644
--- a/html/functions_vars_t.html
+++ b/functions_vars_t.html
diff --git a/html/functions_vars_u.html b/functions_vars_u.html
index a07ec1c49..a07ec1c49 100644
--- a/html/functions_vars_u.html
+++ b/functions_vars_u.html
diff --git a/html/functions_vars_v.html b/functions_vars_v.html
index c48757ba0..c48757ba0 100644
--- a/html/functions_vars_v.html
+++ b/functions_vars_v.html
diff --git a/html/functions_vars_w.html b/functions_vars_w.html
index 8e44cc1ea..8e44cc1ea 100644
--- a/html/functions_vars_w.html
+++ b/functions_vars_w.html
diff --git a/html/functions_vars_x.html b/functions_vars_x.html
index 6311591a3..6311591a3 100644
--- a/html/functions_vars_x.html
+++ b/functions_vars_x.html
diff --git a/html/functions_vars_y.html b/functions_vars_y.html
index abcd02283..abcd02283 100644
--- a/html/functions_vars_y.html
+++ b/functions_vars_y.html
diff --git a/html/functions_vars_z.html b/functions_vars_z.html
index 852018df4..852018df4 100644
--- a/html/functions_vars_z.html
+++ b/functions_vars_z.html
diff --git a/html/functions_w.html b/functions_w.html
index c2baa7e7a..c2baa7e7a 100644
--- a/html/functions_w.html
+++ b/functions_w.html
diff --git a/html/functions_x.html b/functions_x.html
index 52906aca9..52906aca9 100644
--- a/html/functions_x.html
+++ b/functions_x.html
diff --git a/html/functions_y.html b/functions_y.html
index 330da8009..330da8009 100644
--- a/html/functions_y.html
+++ b/functions_y.html
diff --git a/html/functions_z.html b/functions_z.html
index b41c46d84..b41c46d84 100644
--- a/html/functions_z.html
+++ b/functions_z.html
diff --git a/html/galias_8h_source.html b/galias_8h_source.html
index 33deba93a..33deba93a 100644
--- a/html/galias_8h_source.html
+++ b/galias_8h_source.html
diff --git a/html/galloca_8h_source.html b/galloca_8h_source.html
index fd20e295b..fd20e295b 100644
--- a/html/galloca_8h_source.html
+++ b/galloca_8h_source.html
diff --git a/html/gar2navit_8h_source.html b/gar2navit_8h_source.html
index 8b0f0a3f9..8b0f0a3f9 100644
--- a/html/gar2navit_8h_source.html
+++ b/gar2navit_8h_source.html
diff --git a/html/garmin_8h_source.html b/garmin_8h_source.html
index e3bba8a04..e3bba8a04 100644
--- a/html/garmin_8h_source.html
+++ b/garmin_8h_source.html
diff --git a/html/geodesic_8h_source.html b/geodesic_8h_source.html
index 901f9e776..901f9e776 100644
--- a/html/geodesic_8h_source.html
+++ b/geodesic_8h_source.html
diff --git a/html/geom_8h_source.html b/geom_8h_source.html
index 2d171d8d1..2d171d8d1 100644
--- a/html/geom_8h_source.html
+++ b/geom_8h_source.html
diff --git a/html/gerror_8h_source.html b/gerror_8h_source.html
index b64227637..b64227637 100644
--- a/html/gerror_8h_source.html
+++ b/gerror_8h_source.html
diff --git a/html/getopt_8h_source.html b/getopt_8h_source.html
index 5cfafc6ad..5cfafc6ad 100644
--- a/html/getopt_8h_source.html
+++ b/getopt_8h_source.html
diff --git a/html/getopt__long_8h_source.html b/getopt__long_8h_source.html
index fe5ab098c..fe5ab098c 100644
--- a/html/getopt__long_8h_source.html
+++ b/getopt__long_8h_source.html
diff --git a/html/gettextP_8h_source.html b/gettextP_8h_source.html
index f97e85003..f97e85003 100644
--- a/html/gettextP_8h_source.html
+++ b/gettextP_8h_source.html
diff --git a/html/ghash_8h_source.html b/ghash_8h_source.html
index e2751d810..e2751d810 100644
--- a/html/ghash_8h_source.html
+++ b/ghash_8h_source.html
diff --git a/html/glib_8h_source.html b/glib_8h_source.html
index 1871fd5af..1871fd5af 100644
--- a/html/glib_8h_source.html
+++ b/glib_8h_source.html
diff --git a/html/glib__slice_8h_source.html b/glib__slice_8h_source.html
index 0a3455c8e..0a3455c8e 100644
--- a/html/glib__slice_8h_source.html
+++ b/glib__slice_8h_source.html
diff --git a/html/glibconfig_8h_source.html b/glibconfig_8h_source.html
index ec9232830..ec9232830 100644
--- a/html/glibconfig_8h_source.html
+++ b/glibconfig_8h_source.html
diff --git a/html/glibintl_8h_source.html b/glibintl_8h_source.html
index 151450217..151450217 100644
--- a/html/glibintl_8h_source.html
+++ b/glibintl_8h_source.html
diff --git a/html/glist_8h_source.html b/glist_8h_source.html
index ced1a678a..ced1a678a 100644
--- a/html/glist_8h_source.html
+++ b/glist_8h_source.html
diff --git a/html/glob_8h_source.html b/glob_8h_source.html
index b381b610c..b381b610c 100644
--- a/html/glob_8h_source.html
+++ b/glob_8h_source.html
diff --git a/html/globals.html b/globals.html
index d84e50dc6..d84e50dc6 100644
--- a/html/globals.html
+++ b/globals.html
diff --git a/html/globals_a.html b/globals_a.html
index 7c38d666d..7c38d666d 100644
--- a/html/globals_a.html
+++ b/globals_a.html
diff --git a/html/globals_d.html b/globals_d.html
index 7a55a5a49..7a55a5a49 100644
--- a/html/globals_d.html
+++ b/globals_d.html
diff --git a/html/globals_defs.html b/globals_defs.html
index 05be1e9d6..05be1e9d6 100644
--- a/html/globals_defs.html
+++ b/globals_defs.html
diff --git a/html/globals_dup.js b/globals_dup.js
index 990323755..990323755 100644
--- a/html/globals_dup.js
+++ b/globals_dup.js
diff --git a/html/globals_enum.html b/globals_enum.html
index cde500cfb..cde500cfb 100644
--- a/html/globals_enum.html
+++ b/globals_enum.html
diff --git a/html/globals_eval.html b/globals_eval.html
index d2523b70d..d2523b70d 100644
--- a/html/globals_eval.html
+++ b/globals_eval.html
diff --git a/html/globals_func.html b/globals_func.html
index e80b7d6c7..e80b7d6c7 100644
--- a/html/globals_func.html
+++ b/globals_func.html
diff --git a/html/globals_func.js b/globals_func.js
index 8eed3c65a..8eed3c65a 100644
--- a/html/globals_func.js
+++ b/globals_func.js
diff --git a/html/globals_func_g.html b/globals_func_g.html
index 0bb5d1f68..0bb5d1f68 100644
--- a/html/globals_func_g.html
+++ b/globals_func_g.html
diff --git a/html/globals_func_m.html b/globals_func_m.html
index f64be8bc9..f64be8bc9 100644
--- a/html/globals_func_m.html
+++ b/globals_func_m.html
diff --git a/html/globals_func_n.html b/globals_func_n.html
index 46a78490d..46a78490d 100644
--- a/html/globals_func_n.html
+++ b/globals_func_n.html
diff --git a/html/globals_func_p.html b/globals_func_p.html
index 4df532caf..4df532caf 100644
--- a/html/globals_func_p.html
+++ b/globals_func_p.html
diff --git a/html/globals_func_r.html b/globals_func_r.html
index 5e779f10c..5e779f10c 100644
--- a/html/globals_func_r.html
+++ b/globals_func_r.html
diff --git a/html/globals_func_s.html b/globals_func_s.html
index 639ada5cf..639ada5cf 100644
--- a/html/globals_func_s.html
+++ b/globals_func_s.html
diff --git a/html/globals_func_t.html b/globals_func_t.html
index 2ff9fdda1..2ff9fdda1 100644
--- a/html/globals_func_t.html
+++ b/globals_func_t.html
diff --git a/html/globals_func_v.html b/globals_func_v.html
index ec4776037..ec4776037 100644
--- a/html/globals_func_v.html
+++ b/globals_func_v.html
diff --git a/html/globals_g.html b/globals_g.html
index 2e3e15b0e..2e3e15b0e 100644
--- a/html/globals_g.html
+++ b/globals_g.html
diff --git a/html/globals_m.html b/globals_m.html
index 24bb2fb33..24bb2fb33 100644
--- a/html/globals_m.html
+++ b/globals_m.html
diff --git a/html/globals_n.html b/globals_n.html
index 5dc5d97f4..5dc5d97f4 100644
--- a/html/globals_n.html
+++ b/globals_n.html
diff --git a/html/globals_p.html b/globals_p.html
index 196cb2752..196cb2752 100644
--- a/html/globals_p.html
+++ b/globals_p.html
diff --git a/html/globals_r.html b/globals_r.html
index 58e50f239..58e50f239 100644
--- a/html/globals_r.html
+++ b/globals_r.html
diff --git a/html/globals_s.html b/globals_s.html
index 5efef6a9d..5efef6a9d 100644
--- a/html/globals_s.html
+++ b/globals_s.html
diff --git a/html/globals_t.html b/globals_t.html
index dc813388d..dc813388d 100644
--- a/html/globals_t.html
+++ b/globals_t.html
diff --git a/html/globals_type.html b/globals_type.html
index 370b92129..370b92129 100644
--- a/html/globals_type.html
+++ b/globals_type.html
diff --git a/html/globals_v.html b/globals_v.html
index 703774637..703774637 100644
--- a/html/globals_v.html
+++ b/globals_v.html
diff --git a/html/globals_vars.html b/globals_vars.html
index 567007554..567007554 100644
--- a/html/globals_vars.html
+++ b/globals_vars.html
diff --git a/html/gmacros_8h_source.html b/gmacros_8h_source.html
index c3315d96c..c3315d96c 100644
--- a/html/gmacros_8h_source.html
+++ b/gmacros_8h_source.html
diff --git a/html/gmem_8h_source.html b/gmem_8h_source.html
index 9cde768ca..9cde768ca 100644
--- a/html/gmem_8h_source.html
+++ b/gmem_8h_source.html
diff --git a/html/gmessages_8h_source.html b/gmessages_8h_source.html
index bebb70f95..bebb70f95 100644
--- a/html/gmessages_8h_source.html
+++ b/gmessages_8h_source.html
diff --git a/html/gmo_8h_source.html b/gmo_8h_source.html
index 3a6227570..3a6227570 100644
--- a/html/gmo_8h_source.html
+++ b/gmo_8h_source.html
diff --git a/html/gprintf_8h_source.html b/gprintf_8h_source.html
index 853ccc013..853ccc013 100644
--- a/html/gprintf_8h_source.html
+++ b/gprintf_8h_source.html
diff --git a/html/gprintfint_8h_source.html b/gprintfint_8h_source.html
index a6b1effe8..a6b1effe8 100644
--- a/html/gprintfint_8h_source.html
+++ b/gprintfint_8h_source.html
diff --git a/html/gpx2navit__txt_8h_source.html b/gpx2navit__txt_8h_source.html
index ef2d7dd33..ef2d7dd33 100644
--- a/html/gpx2navit__txt_8h_source.html
+++ b/gpx2navit__txt_8h_source.html
diff --git a/html/gquark_8h_source.html b/gquark_8h_source.html
index 4b502af39..4b502af39 100644
--- a/html/gquark_8h_source.html
+++ b/gquark_8h_source.html
diff --git a/html/graphics_2win32_2resources_2resource_8h_source.html b/graphics_2win32_2resources_2resource_8h_source.html
index a8a139ef6..a8a139ef6 100644
--- a/html/graphics_2win32_2resources_2resource_8h_source.html
+++ b/graphics_2win32_2resources_2resource_8h_source.html
diff --git a/html/graphics_8h.html b/graphics_8h.html
index c642e723c..c642e723c 100644
--- a/html/graphics_8h.html
+++ b/graphics_8h.html
diff --git a/html/graphics_8h.js b/graphics_8h.js
index 7f004cc4e..7f004cc4e 100644
--- a/html/graphics_8h.js
+++ b/graphics_8h.js
diff --git a/html/graphics_8h_source.html b/graphics_8h_source.html
index 7d9d8cba7..7d9d8cba7 100644
--- a/html/graphics_8h_source.html
+++ b/graphics_8h_source.html
diff --git a/html/graphics__opengl_8h_source.html b/graphics__opengl_8h_source.html
index b0db96979..b0db96979 100644
--- a/html/graphics__opengl_8h_source.html
+++ b/graphics__opengl_8h_source.html
diff --git a/html/graphics__qt5_8h_source.html b/graphics__qt5_8h_source.html
index 5863ddcf8..5863ddcf8 100644
--- a/html/graphics__qt5_8h_source.html
+++ b/graphics__qt5_8h_source.html
diff --git a/html/graphics__qt__qpainter_8h_source.html b/graphics__qt__qpainter_8h_source.html
index 454a39271..454a39271 100644
--- a/html/graphics__qt__qpainter_8h_source.html
+++ b/graphics__qt__qpainter_8h_source.html
diff --git a/html/graphics__sdl_8h_source.html b/graphics__sdl_8h_source.html
index 66976fce2..66976fce2 100644
--- a/html/graphics__sdl_8h_source.html
+++ b/graphics__sdl_8h_source.html
diff --git a/html/graphics__win32_8h_source.html b/graphics__win32_8h_source.html
index 52dcf4bad..52dcf4bad 100644
--- a/html/graphics__win32_8h_source.html
+++ b/graphics__win32_8h_source.html
diff --git a/html/group__coord.html b/group__coord.html
index e7d61187a..e7d61187a 100644
--- a/html/group__coord.html
+++ b/group__coord.html
diff --git a/html/group__coord.js b/group__coord.js
index 2d0a459af..2d0a459af 100644
--- a/html/group__coord.js
+++ b/group__coord.js
diff --git a/html/group__navit.html b/group__navit.html
index f29bb0e23..f29bb0e23 100644
--- a/html/group__navit.html
+++ b/group__navit.html
diff --git a/html/group__navit.js b/group__navit.js
index 2d5ca317a..2d5ca317a 100644
--- a/html/group__navit.js
+++ b/group__navit.js
diff --git a/html/gslice_8h_source.html b/gslice_8h_source.html
index cdad96ed4..cdad96ed4 100644
--- a/html/gslice_8h_source.html
+++ b/gslice_8h_source.html
diff --git a/html/gslist_8h_source.html b/gslist_8h_source.html
index e24643de1..e24643de1 100644
--- a/html/gslist_8h_source.html
+++ b/gslist_8h_source.html
diff --git a/html/gstrfuncs_8h_source.html b/gstrfuncs_8h_source.html
index aa2fa2043..aa2fa2043 100644
--- a/html/gstrfuncs_8h_source.html
+++ b/gstrfuncs_8h_source.html
diff --git a/html/gthreadprivate_8h_source.html b/gthreadprivate_8h_source.html
index 29dffdadc..29dffdadc 100644
--- a/html/gthreadprivate_8h_source.html
+++ b/gthreadprivate_8h_source.html
diff --git a/html/gtkext_8h_source.html b/gtkext_8h_source.html
index f1fb22346..f1fb22346 100644
--- a/html/gtkext_8h_source.html
+++ b/gtkext_8h_source.html
diff --git a/html/gtypes_8h_source.html b/gtypes_8h_source.html
index 174b04c25..174b04c25 100644
--- a/html/gtypes_8h_source.html
+++ b/gtypes_8h_source.html
diff --git a/html/guiProxy_8h_source.html b/guiProxy_8h_source.html
index 3d67698b4..3d67698b4 100644
--- a/html/guiProxy_8h_source.html
+++ b/guiProxy_8h_source.html
diff --git a/html/gui_2win32_2resources_2resource_8h_source.html b/gui_2win32_2resources_2resource_8h_source.html
index c522d2d26..c522d2d26 100644
--- a/html/gui_2win32_2resources_2resource_8h_source.html
+++ b/gui_2win32_2resources_2resource_8h_source.html
diff --git a/html/gui_8h_source.html b/gui_8h_source.html
index 53f1317ef..53f1317ef 100644
--- a/html/gui_8h_source.html
+++ b/gui_8h_source.html
diff --git a/html/gui__gtk_8h_source.html b/gui__gtk_8h_source.html
index 3168e93bc..3168e93bc 100644
--- a/html/gui__gtk_8h_source.html
+++ b/gui__gtk_8h_source.html
diff --git a/html/gui__gtk__poi_8h_source.html b/gui__gtk__poi_8h_source.html
index 006ed3b0c..006ed3b0c 100644
--- a/html/gui__gtk__poi_8h_source.html
+++ b/gui__gtk__poi_8h_source.html
diff --git a/html/gui__internal_8h_source.html b/gui__internal_8h_source.html
index 8121645cb..8121645cb 100644
--- a/html/gui__internal_8h_source.html
+++ b/gui__internal_8h_source.html
diff --git a/html/gui__internal__bookmark_8h_source.html b/gui__internal__bookmark_8h_source.html
index 1c913230e..1c913230e 100644
--- a/html/gui__internal__bookmark_8h_source.html
+++ b/gui__internal__bookmark_8h_source.html
diff --git a/html/gui__internal__command_8h_source.html b/gui__internal__command_8h_source.html
index fa8805eb3..fa8805eb3 100644
--- a/html/gui__internal__command_8h_source.html
+++ b/gui__internal__command_8h_source.html
diff --git a/html/gui__internal__gesture_8h_source.html b/gui__internal__gesture_8h_source.html
index 3a074be78..3a074be78 100644
--- a/html/gui__internal__gesture_8h_source.html
+++ b/gui__internal__gesture_8h_source.html
diff --git a/html/gui__internal__html_8h_source.html b/gui__internal__html_8h_source.html
index b6bfb4dbc..b6bfb4dbc 100644
--- a/html/gui__internal__html_8h_source.html
+++ b/gui__internal__html_8h_source.html
diff --git a/html/gui__internal__keyboard_8h_source.html b/gui__internal__keyboard_8h_source.html
index dddeaffe2..dddeaffe2 100644
--- a/html/gui__internal__keyboard_8h_source.html
+++ b/gui__internal__keyboard_8h_source.html
diff --git a/html/gui__internal__menu_8h_source.html b/gui__internal__menu_8h_source.html
index d30ff1405..d30ff1405 100644
--- a/html/gui__internal__menu_8h_source.html
+++ b/gui__internal__menu_8h_source.html
diff --git a/html/gui__internal__poi_8h_source.html b/gui__internal__poi_8h_source.html
index e26c10f8a..e26c10f8a 100644
--- a/html/gui__internal__poi_8h_source.html
+++ b/gui__internal__poi_8h_source.html
diff --git a/html/gui__internal__priv_8h_source.html b/gui__internal__priv_8h_source.html
index 51f9290fc..51f9290fc 100644
--- a/html/gui__internal__priv_8h_source.html
+++ b/gui__internal__priv_8h_source.html
diff --git a/html/gui__internal__search_8h_source.html b/gui__internal__search_8h_source.html
index b4d1d81e6..b4d1d81e6 100644
--- a/html/gui__internal__search_8h_source.html
+++ b/gui__internal__search_8h_source.html
diff --git a/html/gui__internal__widget_8h_source.html b/gui__internal__widget_8h_source.html
index 8da23ba9c..8da23ba9c 100644
--- a/html/gui__internal__widget_8h_source.html
+++ b/gui__internal__widget_8h_source.html
diff --git a/html/gunicode_8h_source.html b/gunicode_8h_source.html
index a234c7c33..a234c7c33 100644
--- a/html/gunicode_8h_source.html
+++ b/gunicode_8h_source.html
diff --git a/html/gutils_8h_source.html b/gutils_8h_source.html
index c98c93ec8..c98c93ec8 100644
--- a/html/gutils_8h_source.html
+++ b/gutils_8h_source.html
diff --git a/html/hash-string_8h_source.html b/hash-string_8h_source.html
index 3338de2cf..3338de2cf 100644
--- a/html/hash-string_8h_source.html
+++ b/hash-string_8h_source.html
diff --git a/html/hierarchy.html b/hierarchy.html
index 81517a18b..81517a18b 100644
--- a/html/hierarchy.html
+++ b/hierarchy.html
diff --git a/html/hierarchy.js b/hierarchy.js
index cbaae5174..cbaae5174 100644
--- a/html/hierarchy.js
+++ b/hierarchy.js
diff --git a/html/index.html b/index.html
index 3decb8cc5..3decb8cc5 100644
--- a/html/index.html
+++ b/index.html
diff --git a/html/inffast_8h_source.html b/inffast_8h_source.html
index d3b29c3e9..d3b29c3e9 100644
--- a/html/inffast_8h_source.html
+++ b/inffast_8h_source.html
diff --git a/html/inffixed_8h_source.html b/inffixed_8h_source.html
index 0342f7494..0342f7494 100644
--- a/html/inffixed_8h_source.html
+++ b/inffixed_8h_source.html
diff --git a/html/inflate_8h_source.html b/inflate_8h_source.html
index d17954c35..d17954c35 100644
--- a/html/inflate_8h_source.html
+++ b/inflate_8h_source.html
diff --git a/html/inftrees_8h_source.html b/inftrees_8h_source.html
index 752671aef..752671aef 100644
--- a/html/inftrees_8h_source.html
+++ b/inftrees_8h_source.html
diff --git a/html/interfaceDownloaderAppDelegate.html b/interfaceDownloaderAppDelegate.html
index bbd02b70a..bbd02b70a 100644
--- a/html/interfaceDownloaderAppDelegate.html
+++ b/interfaceDownloaderAppDelegate.html
diff --git a/html/interfaceDownloaderAppDelegate.js b/interfaceDownloaderAppDelegate.js
index f5f3ed8ae..f5f3ed8ae 100644
--- a/html/interfaceDownloaderAppDelegate.js
+++ b/interfaceDownloaderAppDelegate.js
diff --git a/html/interfaceDownloaderAppDelegate.png b/interfaceDownloaderAppDelegate.png
index 32698fbad..32698fbad 100644
--- a/html/interfaceDownloaderAppDelegate.png
+++ b/interfaceDownloaderAppDelegate.png
Binary files differ
diff --git a/html/interfaceDownloaderDetailViewController.html b/interfaceDownloaderDetailViewController.html
index f9ef94ba9..f9ef94ba9 100644
--- a/html/interfaceDownloaderDetailViewController.html
+++ b/interfaceDownloaderDetailViewController.html
diff --git a/html/interfaceDownloaderDetailViewController.js b/interfaceDownloaderDetailViewController.js
index 17352c74c..17352c74c 100644
--- a/html/interfaceDownloaderDetailViewController.js
+++ b/interfaceDownloaderDetailViewController.js
diff --git a/html/interfaceDownloaderDetailViewController.png b/interfaceDownloaderDetailViewController.png
index 491f112ef..491f112ef 100644
--- a/html/interfaceDownloaderDetailViewController.png
+++ b/interfaceDownloaderDetailViewController.png
Binary files differ
diff --git a/html/interfaceNavitAppDelegate.html b/interfaceNavitAppDelegate.html
index ea5691b12..ea5691b12 100644
--- a/html/interfaceNavitAppDelegate.html
+++ b/interfaceNavitAppDelegate.html
diff --git a/html/interfaceNavitAppDelegate.js b/interfaceNavitAppDelegate.js
index 37c6456f4..37c6456f4 100644
--- a/html/interfaceNavitAppDelegate.js
+++ b/interfaceNavitAppDelegate.js
diff --git a/html/interfaceNavitAppDelegate.png b/interfaceNavitAppDelegate.png
index 4af187be8..4af187be8 100644
--- a/html/interfaceNavitAppDelegate.png
+++ b/interfaceNavitAppDelegate.png
Binary files differ
diff --git a/html/interfaceNavitTimer.html b/interfaceNavitTimer.html
index 9282721b7..9282721b7 100644
--- a/html/interfaceNavitTimer.html
+++ b/interfaceNavitTimer.html
diff --git a/html/interfaceNavitTimer.js b/interfaceNavitTimer.js
index b7624e1f0..b7624e1f0 100644
--- a/html/interfaceNavitTimer.js
+++ b/interfaceNavitTimer.js
diff --git a/html/interfaceNavitTimer.png b/interfaceNavitTimer.png
index 645d17081..645d17081 100644
--- a/html/interfaceNavitTimer.png
+++ b/interfaceNavitTimer.png
Binary files differ
diff --git a/html/interfaceNavitView.html b/interfaceNavitView.html
index 36ad8713b..36ad8713b 100644
--- a/html/interfaceNavitView.html
+++ b/interfaceNavitView.html
diff --git a/html/interfaceNavitView.js b/interfaceNavitView.js
index 19a35bf88..19a35bf88 100644
--- a/html/interfaceNavitView.js
+++ b/interfaceNavitView.js
diff --git a/html/interfaceNavitView.png b/interfaceNavitView.png
index a10e67726..a10e67726 100644
--- a/html/interfaceNavitView.png
+++ b/interfaceNavitView.png
Binary files differ
diff --git a/html/interfaceNavitViewController.html b/interfaceNavitViewController.html
index b5a87f2c2..b5a87f2c2 100644
--- a/html/interfaceNavitViewController.html
+++ b/interfaceNavitViewController.html
diff --git a/html/interfaceNavitViewController.js b/interfaceNavitViewController.js
index 9a25d6986..9a25d6986 100644
--- a/html/interfaceNavitViewController.js
+++ b/interfaceNavitViewController.js
diff --git a/html/interfaceNavitViewController.png b/interfaceNavitViewController.png
index 0446e6b61..0446e6b61 100644
--- a/html/interfaceNavitViewController.png
+++ b/interfaceNavitViewController.png
Binary files differ
diff --git a/html/interfaceRootViewController.html b/interfaceRootViewController.html
index b71f2f774..b71f2f774 100644
--- a/html/interfaceRootViewController.html
+++ b/interfaceRootViewController.html
diff --git a/html/interfaceRootViewController.js b/interfaceRootViewController.js
index 1dceae45a..1dceae45a 100644
--- a/html/interfaceRootViewController.js
+++ b/interfaceRootViewController.js
diff --git a/html/interfaceRootViewController.png b/interfaceRootViewController.png
index 19a4f7fe0..19a4f7fe0 100644
--- a/html/interfaceRootViewController.png
+++ b/interfaceRootViewController.png
Binary files differ
diff --git a/html/interfaceVSSpeechSynthesizer.html b/interfaceVSSpeechSynthesizer.html
index 73801aa43..73801aa43 100644
--- a/html/interfaceVSSpeechSynthesizer.html
+++ b/interfaceVSSpeechSynthesizer.html
diff --git a/html/interfaceVSSpeechSynthesizer.js b/interfaceVSSpeechSynthesizer.js
index 823b4226c..823b4226c 100644
--- a/html/interfaceVSSpeechSynthesizer.js
+++ b/interfaceVSSpeechSynthesizer.js
diff --git a/html/interfaceVSSpeechSynthesizer.png b/interfaceVSSpeechSynthesizer.png
index 5f654d4ad..5f654d4ad 100644
--- a/html/interfaceVSSpeechSynthesizer.png
+++ b/interfaceVSSpeechSynthesizer.png
Binary files differ
diff --git a/html/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.html b/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.html
index 745ec5b2e..745ec5b2e 100644
--- a/html/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.html
+++ b/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.html
diff --git a/html/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.js b/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.js
index 369291dc9..369291dc9 100644
--- a/html/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.js
+++ b/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.js
diff --git a/html/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.png b/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.png
index 694dcb59b..694dcb59b 100644
--- a/html/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.png
+++ b/interfaceorg_1_1navitproject_1_1navit_1_1NavitActivityResult.png
Binary files differ
diff --git a/html/io_8h_source.html b/io_8h_source.html
index 33ad52802..33ad52802 100644
--- a/html/io_8h_source.html
+++ b/io_8h_source.html
diff --git a/html/item_8h_source.html b/item_8h_source.html
index 0651a74ed..0651a74ed 100644
--- a/html/item_8h_source.html
+++ b/item_8h_source.html
diff --git a/html/item__def_8h_source.html b/item__def_8h_source.html
index 0ae730ed8..0ae730ed8 100644
--- a/html/item__def_8h_source.html
+++ b/item__def_8h_source.html
diff --git a/html/jquery.js b/jquery.js
index 3db33e62d..3db33e62d 100644
--- a/html/jquery.js
+++ b/jquery.js
diff --git a/html/keys_8h_source.html b/keys_8h_source.html
index 1ae91d69f..1ae91d69f 100644
--- a/html/keys_8h_source.html
+++ b/keys_8h_source.html
diff --git a/html/klatt_8h_source.html b/klatt_8h_source.html
index 246f57e9d..246f57e9d 100644
--- a/html/klatt_8h_source.html
+++ b/klatt_8h_source.html
diff --git a/html/layer_8h_source.html b/layer_8h_source.html
index bbb5e9c81..bbb5e9c81 100644
--- a/html/layer_8h_source.html
+++ b/layer_8h_source.html
diff --git a/html/layout_8h_source.html b/layout_8h_source.html
index 1029d5ff5..1029d5ff5 100644
--- a/html/layout_8h_source.html
+++ b/layout_8h_source.html
diff --git a/html/libc_8h_source.html b/libc_8h_source.html
index dc70ab4f9..dc70ab4f9 100644
--- a/html/libc_8h_source.html
+++ b/libc_8h_source.html
diff --git a/html/libgnuintl_8h_source.html b/libgnuintl_8h_source.html
index 0f83310b2..0f83310b2 100644
--- a/html/libgnuintl_8h_source.html
+++ b/libgnuintl_8h_source.html
diff --git a/html/linguistics_8h_source.html b/linguistics_8h_source.html
index 1d0b004a1..1d0b004a1 100644
--- a/html/linguistics_8h_source.html
+++ b/linguistics_8h_source.html
diff --git a/html/loadinfo_8h_source.html b/loadinfo_8h_source.html
index 1d1e1ff84..1d1e1ff84 100644
--- a/html/loadinfo_8h_source.html
+++ b/loadinfo_8h_source.html
diff --git a/html/localcharset_8h_source.html b/localcharset_8h_source.html
index 778ec7301..778ec7301 100644
--- a/html/localcharset_8h_source.html
+++ b/localcharset_8h_source.html
diff --git a/html/locale_8h_source.html b/locale_8h_source.html
index 93a82a19d..93a82a19d 100644
--- a/html/locale_8h_source.html
+++ b/locale_8h_source.html
diff --git a/html/log_8h_source.html b/log_8h_source.html
index 9a17ba987..9a17ba987 100644
--- a/html/log_8h_source.html
+++ b/log_8h_source.html
diff --git a/html/main_8h_source.html b/main_8h_source.html
index 2fd5107a3..2fd5107a3 100644
--- a/html/main_8h_source.html
+++ b/main_8h_source.html
diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt
deleted file mode 100644
index 886dc1227..000000000
--- a/man/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-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/maptool.1 b/man/maptool.1
deleted file mode 100644
index 4112d0b15..000000000
--- a/man/maptool.1
+++ /dev/null
@@ -1,99 +0,0 @@
-.TH maptool 1 "$Date$" "$Revision$" "USER COMMANDS"
-.SH NAME
-maptool \- parse osm textfile and convert to Navit binfile format
-.SH SYNOPSIS
-.B For OSM XML data:
-.B bzcat planet.osm.bz2 | maptool mymap.bin
-[\-h] [\-5 <file>] [\-6] [\-a <level>] [\-c] -[\-d <connect string]
-[\-e <phase>] [\-i <file>] [\-k] [\-M] [\-N] [\-o] [\-r <file>] [\-s <phase>]
-[\-S <size>] [\-w] [\-W] [\-U] [\-z <level>]
-
-.B For OSM Protobuf/PBF data:
-.B maptool \-\-protobuf \-i planet.osm.pbf planet.bin
-[\-h] [\-5 <file>] [\-6] [\-a <level>] [\-c] [\-e <phase>]
-[\-i <file>] [\-k] [\-M] [\-N] [\-o] [\-P] [\-r <file>] [\-s <phase>]
-[\-S <size>] [\-w] [\-W] [\-U] [\-z <level>]
-.SH DESCRIPTION
-maptool parses osm textfile and converts it to Navit binfile format
-.SH OPTIONS
-.TP
-\-h (\-\-help)
-display a short help message
-.TP
-\-5 (\-\-md5)
-set file where to write md5 sum
-.TP
-\-6 (\-\-64bit)
-set zip 64 bit compression
-.TP
-\-a (\-\-attr-debug-level) <level>
-control which data is included in the debug attribute
-.TP
-\-c (\-\-dump-coordinates)
-dump coordinates after phase 1
-.TP
-\-d (\-\-db) <connect string>
-get osm data out of a postgresql database with osm simple scheme and given connect string
-.TP
-\-D (\-\-dump)
-dump map data to standard output in Navit textfile format
-If this option is specified, the output file parameter must be omitted.
-.TP
-\-e (\-\-end) <phase>
-end at specified phase
-.TP
-\-E (\-\-experimental)
-enable experimental features (if available)
-.TP
-\-i (\-\-input-file) <file>
-specify the input file name (OSM), overrules default stdin
-.TP
-\-k (\-\-keep-tmpfiles)
-do not delete tmp files after processing. useful to reuse them
-.TP
-\-M (\-\-o5m)
-input data is in o5m format
-.TP
-\-n (\-\-ignore-unknown)
-do not output ways and nodes with unknown type
-.TP
-\-N (\-\-nodes-only)
-process only nodes
-.TP
-\-P (\-\-protobuf)
-input data is in pbf (Protocol Buffer) format
-.TP
-\-r (\-\-rule-file) <file>
-read mapping rules from specified file
-.TP
-\-s (\-\-start) <phase>
-start at specified phase
-.TP
-\-S (\-\-slice-size) <phrase>
-limit memory to use for some large internal buffers, in bytes. Default is 1 GB.
-Smaller slices reduce peak memory usage, at the cost of increased processing time.
-.TP
-\-t (\-\-timestamp) <y-m-dTh:m:s>
-set zip timestamp
-.TP
-\-w (\-\-dedupe-ways)
-ensure no duplicate ways or nodes. useful when using several input files
-.TP
-\-W (\-\-ways-only)
-process only ways
-.TP
-\-U (\-\-unknown-country)
-add objects with unknown country to index
-.TP
-\-x (\-\-index-size)
-set maximum country index size in bytes
-.TP
-\-z (\-\-compression-level) <level>
-set the compression level
-.SH BUGS
-Should you find one, please report it :
- http://trac.navit-project.org
-.SH AUTHOR
-The navit Team - http://www.navit-project.org
-.SH SEE ALSO
-navit(1)
diff --git a/man/navit.1 b/man/navit.1
deleted file mode 100644
index 5deed88d6..000000000
--- a/man/navit.1
+++ /dev/null
@@ -1,54 +0,0 @@
-.TH navit 1 "$Date$" "$Revision$" "USER COMMANDS"
-.SH NAME
-navit \- The modular touchscreen-friendly vector based navigation software.
-.SH SYNOPSIS
-.B navit
-[\-h] [\-v] [\-d <debuglevel> ] [\-c <config file>]
-.SH DESCRIPTION
-Navit is a open source (GPL) car navigation system with routing engine.
-
-Its 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.
-
-Navit is translated in more than 40 languages currently, please see https://translations.launchpad.net/navit/trunk
-
-For more informations, please refer to our wiki :
- http://wiki.navit-project.org
-
-You can also try our mailing lists :
- http://sourceforge.net/mailarchive/forum.php?forum_name=navit-users
-
-Or visit us on IRC : #navit on the freenode network
-.SH OPTIONS
-.TP
-\-h
-Display a short help text and exit.
-.TP
-\-v
-Display the version number and exit.
-.TP
-\-d <debuglevel>
-Increase debugging output. Debuglevel 0 is the default, higher values
-will print more debugging output.
-.TP
-\-c <config file>
-Specify the config file (navit.xml) to use. If not specified, Navit will
-use a default config file.
-.SH BUGS
-Should you find one, please report it :
- http://trac.navit-project.org
-.SH AUTHOR
-The navit Team - http://www.navit-project.org
-.SH SEE ALSO
-maptool(1)
diff --git a/html/map-share_8h_source.html b/map-share_8h_source.html
index 243207005..243207005 100644
--- a/html/map-share_8h_source.html
+++ b/map-share_8h_source.html
diff --git a/html/map_8c.html b/map_8c.html
index 2230e77e1..2230e77e1 100644
--- a/html/map_8c.html
+++ b/map_8c.html
diff --git a/html/map_8c.js b/map_8c.js
index 46fc77db8..46fc77db8 100644
--- a/html/map_8c.js
+++ b/map_8c.js
diff --git a/html/map_8h.html b/map_8h.html
index a4f8a07f7..a4f8a07f7 100644
--- a/html/map_8h.html
+++ b/map_8h.html
diff --git a/html/map_8h.js b/map_8h.js
index e6289a657..e6289a657 100644
--- a/html/map_8h.js
+++ b/map_8h.js
diff --git a/html/map_8h_source.html b/map_8h_source.html
index e1a2b8aca..e1a2b8aca 100644
--- a/html/map_8h_source.html
+++ b/map_8h_source.html
diff --git a/html/map__data_8h_source.html b/map__data_8h_source.html
index 5b3d45731..5b3d45731 100644
--- a/html/map__data_8h_source.html
+++ b/map__data_8h_source.html
diff --git a/html/mapset_8c.html b/mapset_8c.html
index 88655222e..88655222e 100644
--- a/html/mapset_8c.html
+++ b/mapset_8c.html
diff --git a/html/mapset_8c.js b/mapset_8c.js
index 5a779acf3..5a779acf3 100644
--- a/html/mapset_8c.js
+++ b/mapset_8c.js
diff --git a/html/mapset_8h_source.html b/mapset_8h_source.html
index 1c8b9cd89..1c8b9cd89 100644
--- a/html/mapset_8h_source.html
+++ b/mapset_8h_source.html
diff --git a/html/maptool_8h_source.html b/maptool_8h_source.html
index cdf84c6fd..cdf84c6fd 100644
--- a/html/maptool_8h_source.html
+++ b/maptool_8h_source.html
diff --git a/html/maptype_8h_source.html b/maptype_8h_source.html
index a1d5cb43f..a1d5cb43f 100644
--- a/html/maptype_8h_source.html
+++ b/maptype_8h_source.html
diff --git a/html/math_8h_source.html b/math_8h_source.html
index ab18b2614..ab18b2614 100644
--- a/html/math_8h_source.html
+++ b/math_8h_source.html
diff --git a/html/mbrolib_8h_source.html b/mbrolib_8h_source.html
index 37490572e..37490572e 100644
--- a/html/mbrolib_8h_source.html
+++ b/mbrolib_8h_source.html
diff --git a/html/menu_8h_source.html b/menu_8h_source.html
index 8ec5a12d6..8ec5a12d6 100644
--- a/html/menu_8h_source.html
+++ b/menu_8h_source.html
diff --git a/html/messages_8h_source.html b/messages_8h_source.html
index 548a60038..548a60038 100644
--- a/html/messages_8h_source.html
+++ b/messages_8h_source.html
diff --git a/html/mg_8h_source.html b/mg_8h_source.html
index 46f202ee2..46f202ee2 100644
--- a/html/mg_8h_source.html
+++ b/mg_8h_source.html
diff --git a/html/mman_8h_source.html b/mman_8h_source.html
index 3807126c9..3807126c9 100644
--- a/html/mman_8h_source.html
+++ b/mman_8h_source.html
diff --git a/html/modules.html b/modules.html
index 7b78348a3..7b78348a3 100644
--- a/html/modules.html
+++ b/modules.html
diff --git a/html/modules.js b/modules.js
index 55e142625..55e142625 100644
--- a/html/modules.js
+++ b/modules.js
diff --git a/html/namespaceorg_1_1navitproject_1_1navit.html b/namespaceorg_1_1navitproject_1_1navit.html
index 0fc6d16f7..0fc6d16f7 100644
--- a/html/namespaceorg_1_1navitproject_1_1navit.html
+++ b/namespaceorg_1_1navitproject_1_1navit.html
diff --git a/html/namespaceorg_1_1navitproject_1_1navit.js b/namespaceorg_1_1navitproject_1_1navit.js
index 60aff1306..60aff1306 100644
--- a/html/namespaceorg_1_1navitproject_1_1navit.js
+++ b/namespaceorg_1_1navitproject_1_1navit.js
diff --git a/html/namespaces.html b/namespaces.html
index 90da7c995..90da7c995 100644
--- a/html/namespaces.html
+++ b/namespaces.html
diff --git a/html/namespaces.js b/namespaces.js
index 898d59905..898d59905 100644
--- a/html/namespaces.js
+++ b/namespaces.js
diff --git a/html/nav_f.png b/nav_f.png
index 72a58a529..72a58a529 100644
--- a/html/nav_f.png
+++ b/nav_f.png
Binary files differ
diff --git a/html/nav_g.png b/nav_g.png
index 2093a237a..2093a237a 100644
--- a/html/nav_g.png
+++ b/nav_g.png
Binary files differ
diff --git a/html/nav_h.png b/nav_h.png
index 33389b101..33389b101 100644
--- a/html/nav_h.png
+++ b/nav_h.png
Binary files differ
diff --git a/html/navigation_8c.html b/navigation_8c.html
index aa1689c01..aa1689c01 100644
--- a/html/navigation_8c.html
+++ b/navigation_8c.html
diff --git a/html/navigation_8c.js b/navigation_8c.js
index 82c75d429..82c75d429 100644
--- a/html/navigation_8c.js
+++ b/navigation_8c.js
diff --git a/html/navigation_8h_source.html b/navigation_8h_source.html
index 08524aa9a..08524aa9a 100644
--- a/html/navigation_8h_source.html
+++ b/navigation_8h_source.html
diff --git a/navit/CMakeLists.txt b/navit/CMakeLists.txt
deleted file mode 100644
index cac127531..000000000
--- a/navit/CMakeLists.txt
+++ /dev/null
@@ -1,198 +0,0 @@
-include_directories( "${PROJECT_BINARY_DIR}")
-include_directories( "${PROJECT_SOURCE_DIR}")
-include_directories( "${CMAKE_CURRENT_SOURCE_DIR}")
-include_directories( "${CMAKE_CURRENT_BINARY_DIR}")
-include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/support")
-
-# navit cre
-set(NAVIT_SRC 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 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 navit.c navit_nls.c navigation.c osd.c param.c phrase.c plugin.c popup.c
- profile.c profile_option.c projection.c roadprofile.c route.c script.c search.c speech.c start_real.c sunriset.c transform.c track.c
- search_houseno_interpol.c util.c vehicle.c vehicleprofile.c xmlconfig.c )
-
-if(NOT USE_PLUGINS)
- list(APPEND NAVIT_SRC ${CMAKE_CURRENT_BINARY_DIR}/builtin.c)
-endif(NOT USE_PLUGINS)
-
-if (${HAVE_GLIB})
- list(APPEND NAVIT_SRC event_glib.c)
-endif()
-
-if(ANDROID)
- list(APPEND NAVIT_SRC android.c)
- set(NAVIT_LIBNAME navit)
-else()
- set(NAVIT_LIBNAME navit_core)
-endif()
-
-
-foreach ( PLUGIN_PATH ${ALL_PLUGINS})
- if (${PLUGIN_PATH})
- include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_PATH}")
-
- string(REPLACE "/" "_" MODULE_INC ${PLUGIN_PATH})
- list(APPEND NAVIT_SUPPORT_LIBS ${MODULE_INC})
- endif()
-endforeach()
-
-foreach ( MODULE_PATH ${ALL_MODULES})
- if ( ${MODULE_PATH} )
- include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE_PATH}")
-
- string(REPLACE "/" "_" MODULE_INC ${MODULE_PATH})
- list(APPEND MODULES_PROTOTYPE "\nvoid\tmodule_${MODULE_INC}_init(void)")
- list(APPEND MODULES_FUNC "\nmodule_${MODULE_INC}_init()")
-
- if (NOT USE_PLUGINS)
- list(APPEND MODULES_NAME ${MODULE_INC})
- else()
- string(REGEX REPLACE "(^[^/]*)/.*" "\\1" ${MODULE_INC}_TYPE ${MODULE_PATH})
- endif()
- endif()
-endforeach()
-
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/builtin.c.in ${CMAKE_CURRENT_BINARY_DIR}/builtin.c)
-
-include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/fib-1.1")
-
-# Add module paths
-foreach (CURRENT_MODULE ${ALL_PLUGINS} ${ALL_MODULE_PLUGINS} ${ALL_MODULES})
- if (${CURRENT_MODULE})
- add_subdirectory( "${CMAKE_CURRENT_SOURCE_DIR}/${CURRENT_MODULE}")
- endif()
-endforeach()
-
-add_subdirectory (fib-1.1)
-
-if(NOT ANDROID)
- set(NAVIT_START_SRC start.c)
- if(WIN32 OR WINCE AND NOT WIN_OMIT_RESOURCES)
- list(APPEND NAVIT_START_SRC ${CMAKE_CURRENT_SOURCE_DIR}/gui/win32/resources/resource.rc)
- else()
- if (APPLE)
- set(NAVIT_START_SRC start_apple.m)
- endif()
- endif()
- if (BUILD_BUNDLE)
- list(APPEND NAVIT_START_SRC resources/share resources/Icon.png resources/Default.png)
- add_custom_command(OUTPUT resources/Icon.png COMMAND convert -scale 79x79 -crop 60x60+8+19 ${CMAKE_CURRENT_SOURCE_DIR}/icons/desktop_icons/128x128/navit.png resources/Icon.png)
- add_custom_command(OUTPUT resources/Default.png COMMAND convert -scale 79x79 -crop 60x60+8+19 ${CMAKE_CURRENT_SOURCE_DIR}/icons/desktop_icons/128x128/navit.png resources/Default.png)
- endif()
- add_executable(navit ${NAVIT_START_SRC})
- target_link_libraries (navit ${NAVIT_LIBNAME})
- 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)
- set_target_properties(navit PROPERTIES MACOSX_BUNDLE TRUE)
- set_target_properties(navit PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
- add_dependencies(navit navit_config_xml_resource)
- add_dependencies(navit images_resource)
- add_dependencies(navit locale_resource)
- endif()
-endif()
-
-if (SHARED_LIBNAVIT)
- add_library (${NAVIT_LIBNAME} SHARED ${NAVIT_SRC} )
-else(SHARED_LIBNAVIT)
- add_library (${NAVIT_LIBNAME} STATIC ${NAVIT_SRC} )
-endif(SHARED_LIBNAVIT)
-if(NOT MSVC)
- SET(NAVIT_LIBS ${NAVIT_LIBS} m)
-endif(NOT MSVC)
-target_link_libraries(${NAVIT_LIBNAME} ${MODULES_NAME} ${NAVIT_SUPPORT_LIBS} fib ${NAVIT_LIBS} )
-set_target_properties(${NAVIT_LIBNAME} PROPERTIES COMPILE_DEFINITIONS "MODULE=navit;LIBDIR=\"${CMAKE_INSTALL_PREFIX}/${LIB_DIR}\";PREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
-if (DEFINED NAVIT_COMPILE_FLAGS)
- set_target_properties(${NAVIT_LIBNAME} PROPERTIES COMPILE_FLAGS "${NAVIT_COMPILE_FLAGS}")
-endif()
-
-ADD_CUSTOM_TARGET(
- git_version
- ${CMAKE_COMMAND} -D SRC=${CMAKE_CURRENT_SOURCE_DIR}/version.h.in
- -D DST=${CMAKE_CURRENT_BINARY_DIR}/version.h
- -D NAME="GIT_VERSION"
- -P ${PROJECT_SOURCE_DIR}/cmake/version.cmake
-)
-
-# additional parameter are passed to the stylesheet processor as parameter
-macro(process_xslt SRC_XML DEST_XML)
- set(XSLT_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy ${SRC_XML} ${DEST_XML}
- COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/navit/navit.dtd ${CMAKE_CURRENT_BINARY_DIR}/navit.dtd)
- if(XSL_PROCESSING AND XSLTS)
- string(REPLACE "," ";" XSLTS "${XSLTS}")
- foreach(tmp ${XSLTS})
- set(XSLT_FILE "${PROJECT_SOURCE_DIR}/navit/xslt/${tmp}.xslt")
- list(APPEND XSLT_FILES "${XSLT_FILE}")
- list(APPEND XSLT_COMMANDS COMMAND ${CMAKE_COMMAND} -E echo Applying ${tmp}.xslt)
- compose_xslt_transform_command(CMD "${XSLT_FILE}" "${DEST_XML}" "${DEST_XML}.tmp" "${ARGN}")
- list(APPEND XSLT_COMMANDS ${CMD})
- list(APPEND XSLT_COMMANDS COMMAND ${CMAKE_COMMAND} -E rename ${DEST_XML}.tmp ${DEST_XML})
- endforeach()
- endif()
- # Depend on all XSLT files, because the main XSLT file may pull in other files.
- # Ideally we'd parse the main XSLT file for includes, but that is tricky to do reliably.
- # Note that this list of files is only updated when (re)running CMake, so if files are
- # added/deleted, CMake must be re-run manually.
- file(GLOB ALL_XSLT_FILES "${PROJECT_SOURCE_DIR}/navit/xslt/*.xslt")
- ADD_CUSTOM_COMMAND(
- OUTPUT ${DEST_XML}
- DEPENDS ${SRC_XML} ${ALL_XSLT_FILES}
- ${XSLT_COMMANDS}
- )
-endmacro()
-
-if(ANDROID)
- process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitxxxhdpi.xml OSD_SIZE=5.33 ICON_SMALL=128 ICON_MEDIUM=192 ICON_BIG=256)
- process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitxxhdpi.xml OSD_SIZE=4 ICON_SMALL=96 ICON_MEDIUM=128 ICON_BIG=192)
- process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitxhdpi.xml OSD_SIZE=2.67 ICON_SMALL=64 ICON_MEDIUM=96 ICON_BIG=128)
- process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navithdpi.xml OSD_SIZE=2 ICON_SMALL=48 ICON_MEDIUM=64 ICON_BIG=96)
- process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitmdpi.xml OSD_SIZE=1.33 ICON_SMALL=32 ICON_MEDIUM=48 ICON_BIG=64)
- process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navitldpi.xml OSD_SIZE=1 ICON_SMALL=24 ICON_MEDIUM=32 ICON_BIG=48)
- add_custom_target( navit_config_xml ALL DEPENDS navitxxxhdpi.xml navitxxhdpi.xml navitxhdpi.xml navithdpi.xml navitmdpi.xml navitldpi.xml)
-else()
- process_xslt(${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navit.xml "")
- add_custom_target( navit_config_xml_resource DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/navit.xml COMMAND mkdir -p resources/share/navit COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/navit.xml resources/share/navit)
- add_custom_target( locale_resource DEPENDS locales COMMAND mkdir -p resources/share COMMAND cp -a ${CMAKE_CURRENT_BINARY_DIR}/../locale resources/share/locale)
- add_custom_target( navit_config_xml ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/navit.xml)
-endif()
-
-ADD_DEPENDENCIES(${NAVIT_LIBNAME} git_version)
-if (USE_LIBGNUINTL AND NOT HAVE_GLIB)
- ADD_DEPENDENCIES(support_glib support_gettext_intl)
-endif()
-
-
-add_subdirectory (maptool)
-add_subdirectory (icons)
-add_subdirectory (maps)
-if(ANDROID)
- add_subdirectory (android)
-endif()
-
-install(TARGETS navit
- DESTINATION ${BIN_DIR}
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
-
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/navit.xml
- DESTINATION ${SHARE_DIR}
- PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
-
-get_directory_property(INCLUDE_DIRECTORIES INCLUDE_DIRECTORIES)
-WRITE_FILE("cmake_plugin_settings.txt"
- "set(APPLE ${APPLE} CACHE BOOL init)\n"
- "set(ANDROID ${ANDROID} CACHE BOOL init)\n"
- "set(USE_PLUGINS ${USE_PLUGINS} CACHE BOOL init)\n"
- "set(MODULE_BUILD_TYPE \"${MODULE_BUILD_TYPE}\" CACHE STRING init)\n"
- "set(NAVIT_COMPILE_FLAGS \"${NAVIT_COMPILE_FLAGS}\" CACHE STRING init)\n"
- "set(navit_SOURCE_DIR \"${navit_SOURCE_DIR}\" CACHE STRING init)\n"
- "set(NAVIT_LIBNAME \"${NAVIT_LIBNAME}\" CACHE STRING init)\n"
- "set(ANDROID_API_VERSION \"${ANDROID_API_VERSION}\" CACHE STRING init)\n"
- "set(ANDROID_NDK_API_VERSION \"${ANDROID_NDK_API_VERSION}\" CACHE STRING init)\n"
- "set(CMAKE_TOOLCHAIN_FILE \"${CMAKE_TOOLCHAIN_FILE}\" CACHE STRING init)\n"
- "set(INCLUDE_DIRECTORIES \"${INCLUDE_DIRECTORIES}\" CACHE STRING init)\n"
- "set(LIB_DIR \"${LIB_DIR}\" CACHE STRING init)\n"
- "set(CMAKE_INSTALL_PREFIX \"${CMAKE_INSTALL_PREFIX}\" CACHE STRING init)\n"
- )
diff --git a/navit/Doxyfile b/navit/Doxyfile
deleted file mode 100644
index b7e049301..000000000
--- a/navit/Doxyfile
+++ /dev/null
@@ -1,2384 +0,0 @@
-# Doxyfile 1.8.9.1
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME = navit
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER = 0.0
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = ../doc
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
-# page for each member. If set to NO, the documentation of a member will be part
-# of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
-# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
-# Fortran. In the later case the parser tries to guess whether the code is fixed
-# or free formatted code, this is the default for Fortran type files), VHDL. For
-# instance to make doxygen treat .inc files as Fortran files (default is PHP),
-# and .f files as C (default is Fortran), use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO,
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO, these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
-# append additional text to a page's title, such as Class Reference. If set to
-# YES the compound reference will be hidden.
-# The default value is: NO.
-
-HIDE_COMPOUND_REFERENCE= NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
-# list. This list is created by putting \todo commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
-# list. This list is created by putting \test commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES, the
-# list will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT =
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS = YES
-
-# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
-# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
-# cost of reduced performance. This can be particularly helpful with template
-# rich C++ code for which doxygen's built-in parser lacks the necessary type
-# information.
-# Note: The availability of this option depends on whether or not doxygen was
-# compiled with the --with-libclang option.
-# The default value is: NO.
-
-CLANG_ASSISTED_PARSING = NO
-
-# If clang assisted parsing is enabled you can provide the compiler with command
-# line options that you would normally use when invoking the compiler. Note that
-# the include paths will already be set by doxygen for the files and directories
-# specified with INPUT and INCLUDE_PATH.
-# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
-
-CLANG_OPTIONS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX = NO
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the style sheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to YES can help to show when doxygen was last run and thus if the
-# documentation is up to date.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP = NO
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated
-# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW = YES
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE = NO
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
-# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
-# and searching needs to be provided by external tools. See the section
-# "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
-# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
-# string, for the replacement values of the other commands the user is referred
-# to HTML_HEADER.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer. See
-# LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER =
-
-# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# LaTeX style sheets that are included after the standard style sheets created
-# by doxygen. Using this option one can overrule certain style aspects. Doxygen
-# will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list).
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_STYLESHEET =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES, to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE = plain
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE =
-
-# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
-# with syntax highlighting in the RTF output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_SOURCE_CODE = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION = .3
-
-# The MAN_SUBDIR tag determines the name of the directory created within
-# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
-# MAN_EXTENSION with the initial . removed.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_SUBDIR =
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT = xml
-
-# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT = docbook
-
-# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
-# program listings (including syntax highlighting and cross-referencing
-# information) to the DOCBOOK output. Note that enabling this will significantly
-# increase the size of the DOCBOOK output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_PROGRAMLISTING = NO
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sf.net) file that captures the
-# structure of the code including all documentation. Note that this feature is
-# still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO, the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
-# in the source code. If set to NO, only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES, the include files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all references to function-like macros that are alone on a line, have
-# an all uppercase name, and do not end with a semicolon. Such function macros
-# are typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have a unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
-# The default value is: NO.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS = YES
-
-# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH =
-
-# If set to YES the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: YES.
-
-HAVE_DOT = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS = 0
-
-# When you want a differently looking font in the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,
-# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,
-# gif:cairo:gd, gif:gd, gif:gd:gd and svg.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS =
-
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file. If left blank, it is assumed
-# PlantUML is not used or called during a preprocessing step. Doxygen will
-# generate a warning when it encounters a \startuml command in this case and
-# will not generate output for the diagram.
-
-PLANTUML_JAR_PATH =
-
-# When using plantuml, the specified paths are searched for files specified by
-# the !include statement in a plantuml block.
-
-PLANTUML_INCLUDE_PATH =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP = YES
diff --git a/navit/Info.plist b/navit/Info.plist
deleted file mode 100644
index d3a7dff92..000000000
--- a/navit/Info.plist
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>$(EXECUTABLE_NAME)</string>
- <key>CFBundleGetInfoString</key>
- <string></string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>org.navitproject.navit</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleLongVersionString</key>
- <string></string>
- <key>CFBundleDisplayName</key>
- <string>Navit</string>
- <key>CFBundleName</key>
- <string>Navit</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string></string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string></string>
- <key>CSResourcesFileMapped</key>
- <true/>
- <key>LSRequiresCarbon</key>
- <true/>
- <key>NSHumanReadableCopyright</key>
- <string></string>
- <key>UIFileSharingEnabled</key>
- <true/>
-</dict>
-</plist>
diff --git a/navit/android.c b/navit/android.c
deleted file mode 100644
index 6e62da1b3..000000000
--- a/navit/android.c
+++ /dev/null
@@ -1,776 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include <glib.h>
-#include "android.h"
-#include <android/log.h>
-#include "navit.h"
-#include "config_.h"
-#include "command.h"
-#include "debug.h"
-#include "event.h"
-#include "callback.h"
-#include "country.h"
-#include "projection.h"
-#include "map.h"
-#include "mapset.h"
-#include "navit_nls.h"
-#include "transform.h"
-#include "color.h"
-#include "types.h"
-#include "search.h"
-#include "start_real.h"
-#include "track.h"
-
-JNIEnv *jnienv;
-jobject *android_activity;
-int android_version;
-
-struct android_search_priv
-{
- struct jni_object search_result_obj;
- struct event_idle *idle_ev;
- struct callback *idle_clb;
- struct search_list *search_list;
- struct attr search_attr;
- gchar **phrases;
- int current_phrase_per_level[4];
- int partial;
- int found;
-};
-
-int
-android_find_class_global(char *name, jclass *ret)
-{
- *ret=(*jnienv)->FindClass(jnienv, name);
- if (! *ret) {
- dbg(lvl_error,"Failed to get Class %s\n",name);
- return 0;
- }
- *ret = (*jnienv)->NewGlobalRef(jnienv, *ret);
- return 1;
-}
-
-int
-android_find_method(jclass class, char *name, char *args, jmethodID *ret)
-{
- *ret = (*jnienv)->GetMethodID(jnienv, class, name, args);
- if (*ret == NULL) {
- dbg(lvl_error,"Failed to get Method %s with signature %s\n",name,args);
- return 0;
- }
- return 1;
-}
-
-
-int
-android_find_static_method(jclass class, char *name, char *args, jmethodID *ret)
-{
- *ret = (*jnienv)->GetStaticMethodID(jnienv, class, name, args);
- if (*ret == NULL) {
- dbg(lvl_error,"Failed to get static Method %s with signature %s\n",name,args);
- return 0;
- }
- return 1;
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_Navit_NavitMain( JNIEnv* env, jobject thiz, jobject activity, jobject lang, int version, jobject display_density_string, jobject path, jobject map_path)
-{
- const char *langstr;
- const char *displaydensitystr;
- const char *map_file_path;
- android_version=version;
- __android_log_print(ANDROID_LOG_ERROR,"test","called");
- jnienv=env;
- android_activity = (*jnienv)->NewGlobalRef(jnienv, activity);
- langstr=(*env)->GetStringUTFChars(env, lang, NULL);
- dbg(lvl_debug,"enter env=%p thiz=%p activity=%p lang=%s version=%d\n",env,thiz,android_activity,langstr,version);
- setenv("LANG",langstr,1);
- (*env)->ReleaseStringUTFChars(env, lang, langstr);
-
- displaydensitystr=(*env)->GetStringUTFChars(env, display_density_string, NULL);
- dbg(lvl_debug,"*****displaydensity=%s\n",displaydensitystr);
- setenv("ANDROID_DENSITY",displaydensitystr,1);
- (*env)->ReleaseStringUTFChars(env, display_density_string, displaydensitystr);
-
- map_file_path=(*env)->GetStringUTFChars(env, map_path, NULL);
- setenv("NAVIT_USER_DATADIR",map_file_path,1);
- (*env)->ReleaseStringUTFChars(env, display_density_string, map_file_path);
-
- const char *strings=(*env)->GetStringUTFChars(env, path, NULL);
- main_real(1, &strings);
- (*env)->ReleaseStringUTFChars(env, path, strings);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_Navit_NavitDestroy( JNIEnv* env)
-{
- dbg(lvl_debug, "shutdown navit\n");
- exit(0);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitGraphics_SizeChangedCallback( JNIEnv* env, jobject thiz, int id, int w, int h)
-{
- dbg(lvl_debug,"enter %p %d %d\n",(struct callback *)id,w,h);
- if (id)
- callback_call_2((struct callback *)id,w,h);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitGraphics_PaddingChangedCallback(JNIEnv* env, jobject thiz, int id, int left, int top, int right, int bottom)
-{
- dbg(lvl_debug,"enter %p %d %d %d %d\n",(struct callback *)id, left, top, right, bottom);
- if (id)
- callback_call_4((struct callback *)id, left, top, right, bottom);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitGraphics_ButtonCallback( JNIEnv* env, jobject thiz, int id, int pressed, int button, int x, int y)
-{
- dbg(lvl_debug,"enter %p %d %d\n",(struct callback *)id,pressed,button);
- if (id)
- callback_call_4((struct callback *)id,pressed,button,x,y);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitGraphics_MotionCallback( JNIEnv* env, jobject thiz, int id, int x, int y)
-{
- dbg(lvl_debug,"enter %p %d %d\n",(struct callback *)id,x,y);
- if (id)
- callback_call_2((struct callback *)id,x,y);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitGraphics_KeypressCallback( JNIEnv* env, jobject thiz, int id, jobject str)
-{
- const char *s;
- dbg(lvl_debug,"enter %p %p\n",(struct callback *)id,str);
- s=(*env)->GetStringUTFChars(env, str, NULL);
- dbg(lvl_debug,"key=%d",s);
- if (id)
- callback_call_1((struct callback *)id,s);
- (*env)->ReleaseStringUTFChars(env, str, s);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitTimeout_TimeoutCallback( JNIEnv* env, jobject thiz, int id)
-{
- void (*event_handler)(void *) = *(void **)id;
- dbg(lvl_debug,"enter %p %p\n",thiz, (void *)id);
- event_handler((void*)id);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitVehicle_VehicleCallback( JNIEnv * env, jobject thiz, int id, jobject location)
-{
- callback_call_1((struct callback *)id, (void *)location);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitIdle_IdleCallback( JNIEnv* env, jobject thiz, int id)
-{
- dbg(lvl_debug,"enter %p %p\n",thiz, (void *)id);
- callback_call_0((struct callback *)id);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitWatch_poll( JNIEnv* env, jobject thiz, int func, int fd, int cond)
-{
- void (*pollfunc)(JNIEnv *env, int fd, int cond)=(void *)func;
-
- pollfunc(env, fd, cond);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitWatch_WatchCallback( JNIEnv* env, jobject thiz, int id)
-{
- dbg(lvl_debug,"enter %p %p\n",thiz, (void *)id);
- callback_call_0((struct callback *)id);
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitSensors_SensorCallback( JNIEnv* env, jobject thiz, int id, int sensor, float x, float y, float z)
-{
- dbg(lvl_debug,"enter %p %p %f %f %f\n",thiz, (void *)id,x,y,z);
- callback_call_4((struct callback *)id, sensor, &x, &y, &z);
-}
-
-// type: 0=town, 1=street, 2=House#
-void
-android_return_search_result(struct jni_object *jni_o, int type, struct pcoord *location, const char *address)
-{
- struct coord_geo geo_location;
- struct coord c;
- jstring jaddress = NULL;
- JNIEnv* env;
- env=jni_o->env;
- jaddress = (*env)->NewStringUTF(jni_o->env,address);
-
- c.x=location->x;
- c.y=location->y;
- transform_to_geo(location->pro, &c, &geo_location);
-
- (*env)->CallVoidMethod(jni_o->env, jni_o->jo, jni_o->jm, type, geo_location.lat, geo_location.lng, jaddress);
- (*env)->DeleteLocalRef(jni_o->env, jaddress);
-}
-
-JNIEXPORT jstring JNICALL
-Java_org_navitproject_navit_NavitGraphics_CallbackLocalizedString( JNIEnv* env, jobject thiz, jobject str)
-{
- const char *s;
- const char *localized_str;
-
- s=(*env)->GetStringUTFChars(env, str, NULL);
- //dbg(lvl_debug,"*****string=%s\n",s);
-
- localized_str=navit_nls_gettext(s);
- //dbg(lvl_debug,"localized string=%s",localized_str);
-
- // jstring dataStringValue = (jstring) localized_str;
- jstring js = (*env)->NewStringUTF(env,localized_str);
-
- (*env)->ReleaseStringUTFChars(env, str, s);
-
- return js;
-}
-
-JNIEXPORT jint JNICALL
-Java_org_navitproject_navit_NavitGraphics_CallbackMessageChannel( JNIEnv* env, jobject thiz, int channel, jobject str)
-{
- struct attr attr;
- const char *s;
- jint ret = 0;
- dbg(lvl_debug,"enter %d %p\n",channel,str);
-
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- switch(channel)
- {
- case 1:
- // zoom in
- navit_zoom_in_cursor(attr.u.navit, 2);
- navit_draw(attr.u.navit);
- break;
- case 2:
- // zoom out
- navit_zoom_out_cursor(attr.u.navit, 2);
- navit_draw(attr.u.navit);
- break;
- case 6: // add a map to the current mapset, return 1 on success
- {
- struct mapset *ms = navit_get_mapset(attr.u.navit);
- struct attr type, name, data, *attrs[4];
- const char *map_location=(*env)->GetStringUTFChars(env, str, NULL);
- dbg(lvl_debug,"*****string=%s\n",map_location);
- type.type=attr_type;
- type.u.str="binfile";
-
- data.type=attr_data;
- data.u.str=g_strdup(map_location);
-
- name.type=attr_name;
- name.u.str=g_strdup(map_location);
-
- attrs[0]=&type; attrs[1]=&data; attrs[2]=&name; attrs[3]=NULL;
-
- struct map * new_map = map_new(NULL, attrs);
- if (new_map) {
- struct attr map_a;
- map_a.type=attr_map;
- map_a.u.map=new_map;
- ret = mapset_add_attr(ms, &map_a);
- navit_draw(attr.u.navit);
- }
- (*env)->ReleaseStringUTFChars(env, str, map_location);
- }
- break;
- case 7: // remove a map to the current mapset, return 1 on success
- {
- struct mapset *ms = navit_get_mapset(attr.u.navit);
- struct attr map_r;
- const char *map_location=(*env)->GetStringUTFChars(env, str, NULL);
- struct map * delete_map = mapset_get_map_by_name(ms, map_location);
-
- if (delete_map)
- {
- dbg(lvl_debug,"delete map %s (%p)", map_location, delete_map);
- map_r.type=attr_map;
- map_r.u.map=delete_map;
- ret = mapset_remove_attr(ms, &map_r);
- navit_draw(attr.u.navit);
- }
- (*env)->ReleaseStringUTFChars(env, str, map_location);
- }
- break;
- case 5:
- // call a command (like in gui)
- s=(*env)->GetStringUTFChars(env, str, NULL);
- dbg(lvl_debug,"*****string=%s\n",s);
- command_evaluate(&attr,s);
- (*env)->ReleaseStringUTFChars(env, str, s);
- break;
- case 4:
- {
- // navigate to display position
- char *pstr;
- struct point p;
- struct coord c;
- struct pcoord pc;
-
- struct transformation *transform=navit_get_trans(attr.u.navit);
-
- s=(*env)->GetStringUTFChars(env, str, NULL);
- char parse_str[strlen(s) + 1];
- strcpy(parse_str, s);
- (*env)->ReleaseStringUTFChars(env, str, s);
- dbg(lvl_debug,"*****string=%s\n",parse_str);
-
- // set destination to (pixel-x#pixel-y)
- // pixel-x
- pstr = strtok (parse_str,"#");
- p.x = atoi(pstr);
- // pixel-y
- pstr = strtok (NULL, "#");
- p.y = atoi(pstr);
-
- dbg(lvl_debug,"11x=%d\n",p.x);
- dbg(lvl_debug,"11y=%d\n",p.y);
-
- transform_reverse(transform, &p, &c);
-
-
- pc.x = c.x;
- pc.y = c.y;
- pc.pro = transform_get_projection(transform);
-
- dbg(lvl_debug,"22x=%d\n",pc.x);
- dbg(lvl_debug,"22y=%d\n",pc.y);
-
- // start navigation asynchronous
- navit_set_destination(attr.u.navit, &pc, parse_str, 1);
- }
- break;
- case 3:
- {
- // navigate to geo position
- char *name;
- s=(*env)->GetStringUTFChars(env, str, NULL);
- char parse_str[strlen(s) + 1];
- strcpy(parse_str, s);
- (*env)->ReleaseStringUTFChars(env, str, s);
- dbg(lvl_debug,"*****string=%s\n",s);
-
- // set destination to (lat#lon#title)
- struct coord_geo g;
- char *p;
- char *stopstring;
-
- // lat
- p = strtok (parse_str,"#");
- g.lat = strtof(p, &stopstring);
- // lon
- p = strtok (NULL, "#");
- g.lng = strtof(p, &stopstring);
- // description
- name = strtok (NULL, "#");
-
- dbg(lvl_debug,"lat=%f\n",g.lat);
- dbg(lvl_debug,"lng=%f\n",g.lng);
- dbg(lvl_debug,"str1=%s\n",name);
-
- struct coord c;
- transform_from_geo(projection_mg, &g, &c);
-
- struct pcoord pc;
- pc.x=c.x;
- pc.y=c.y;
- pc.pro=projection_mg;
-
- // start navigation asynchronous
- navit_set_destination(attr.u.navit, &pc, name, 1);
-
- }
- break;
- default:
- dbg(lvl_error, "Unknown command: %d", channel);
- }
-
- return ret;
-}
-
-JNIEXPORT jstring JNICALL
-Java_org_navitproject_navit_NavitGraphics_GetDefaultCountry( JNIEnv* env, jobject thiz, int channel, jobject str)
-{
- struct attr search_attr, country_name, country_iso2, *country_attr;
- struct tracking *tracking;
- struct search_list_result *res;
- jstring return_string = NULL;
-
- struct attr attr;
- dbg(lvl_debug,"enter %d %p\n",channel,str);
-
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- country_attr=country_default();
- tracking=navit_get_tracking(attr.u.navit);
- if (tracking && tracking_get_attr(tracking, attr_country_id, &search_attr, NULL))
- country_attr=&search_attr;
- if (country_attr) {
- struct country_search *cs=country_search_new(country_attr, 0);
- struct item *item=country_search_get_item(cs);
- if (item && item_attr_get(item, attr_country_name, &country_name)) {
- struct mapset *ms=navit_get_mapset(attr.u.navit);
- struct search_list *search_list = search_list_new(ms);
- search_attr.type=attr_country_all;
- dbg(lvl_debug,"country %s\n", country_name.u.str);
- search_attr.u.str=country_name.u.str;
- search_list_search(search_list, &search_attr, 0);
- while((res=search_list_get_result(search_list)))
- {
- dbg(lvl_debug,"Get result: %s\n", res->country->iso2);
- }
- if (item_attr_get(item, attr_country_iso2, &country_iso2))
- return_string = (*env)->NewStringUTF(env,country_iso2.u.str);
- }
- country_search_destroy(cs);
- }
-
- return return_string;
-}
-
-JNIEXPORT jobjectArray JNICALL
-Java_org_navitproject_navit_NavitGraphics_GetAllCountries( JNIEnv* env, jobject thiz)
-{
- struct attr search_attr;
- struct search_list_result *res;
- GList* countries = NULL;
- int country_count = 0;
- jobjectArray all_countries;
-
- struct attr attr;
- dbg(lvl_debug,"enter\n");
-
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- struct mapset *ms=navit_get_mapset(attr.u.navit);
- struct search_list *search_list = search_list_new(ms);
- jobjectArray current_country = NULL;
- search_attr.type=attr_country_all;
- //dbg(lvl_debug,"country %s\n", country_name.u.str);
- search_attr.u.str=g_strdup("");//country_name.u.str;
- search_list_search(search_list, &search_attr, 1);
- while((res=search_list_get_result(search_list)))
- {
- dbg(lvl_debug,"Get result: %s\n", res->country->iso2);
-
- if (strlen(res->country->iso2)==2)
- {
- jstring j_iso2 = (*env)->NewStringUTF(env, res->country->iso2);
- jstring j_name = (*env)->NewStringUTF(env, navit_nls_gettext(res->country->name));
-
- current_country = (jobjectArray)(*env)->NewObjectArray(env, 2, (*env)->FindClass(env, "java/lang/String"), NULL);
-
- (*env)->SetObjectArrayElement(env, current_country, 0, j_iso2);
- (*env)->SetObjectArrayElement(env, current_country, 1, j_name);
-
- (*env)->DeleteLocalRef(env, j_iso2);
- (*env)->DeleteLocalRef(env, j_name);
-
- countries = g_list_prepend(countries, current_country);
- country_count++;
- }
- }
-
- search_list_destroy(search_list);
- all_countries = (jobjectArray)(*env)->NewObjectArray(env, country_count, (*env)->GetObjectClass(env, current_country), NULL);
-
- while(countries)
- {
- (*env)->SetObjectArrayElement(env, all_countries, --country_count, countries->data);
- countries = g_list_delete_link( countries, countries);
- }
- return all_countries;
-}
-
-static char *
-postal_str(struct search_list_result *res, int level)
-{
- char *ret=NULL;
- if (res->town->common.postal)
- ret=res->town->common.postal;
- if (res->town->common.postal_mask)
- ret=res->town->common.postal_mask;
- if (level == 1)
- return ret;
- if (res->street->common.postal)
- ret=res->street->common.postal;
- if (res->street->common.postal_mask)
- ret=res->street->common.postal_mask;
- if (level == 2)
- return ret;
- if (res->house_number->common.postal)
- ret=res->house_number->common.postal;
- if (res->house_number->common.postal_mask)
- ret=res->house_number->common.postal_mask;
- return ret;
-}
-
-static char *
-district_str(struct search_list_result *res, int level)
-{
- char *ret=NULL;
- if (res->town->common.district_name)
- ret=res->town->common.district_name;
- if (level == 1)
- return ret;
- if (res->street->common.district_name)
- ret=res->street->common.district_name;
- if (level == 2)
- return ret;
- if (res->house_number->common.district_name)
- ret=res->house_number->common.district_name;
- return ret;
-}
-
-static char *
-town_str(struct search_list_result *res, int level)
-{
- char *town=res->town->common.town_name;
- char *district=district_str(res, level);
- char *postal=postal_str(res, level);
- char *postal_sep=" ";
- char *district_begin=" (";
- char *district_end=")";
- char *county_sep = ", Co. ";
- char *county = res->town->common.county_name;
- if (!postal)
- postal_sep=postal="";
- if (!district)
- district_begin=district_end=district="";
- if (!county)
- county_sep=county="";
-
- return g_strdup_printf("%s%s%s%s%s%s%s%s", postal, postal_sep, town, district_begin, district, district_end, county_sep, county);
-}
-
-static void
-android_search_end(struct android_search_priv *search_priv)
-{
- dbg(lvl_debug, "End search");
- JNIEnv* env = search_priv->search_result_obj.env;
- if (search_priv->idle_ev) {
- event_remove_idle(search_priv->idle_ev);
- search_priv->idle_ev=NULL;
- }
- if (search_priv->idle_clb) {
- callback_destroy(search_priv->idle_clb);
- search_priv->idle_clb=NULL;
- }
- jclass cls = (*env)->GetObjectClass(env,search_priv->search_result_obj.jo);
- jmethodID finish_MethodID = (*env)->GetMethodID(env, cls, "finishAddressSearch", "()V");
- if(finish_MethodID != 0) {
- (*env)->CallVoidMethod(env, search_priv->search_result_obj.jo, finish_MethodID);
- } else {
- dbg(lvl_error, "Error method finishAddressSearch not found");
- }
-
- search_list_destroy(search_priv->search_list);
- g_strfreev(search_priv->phrases);
- g_free(search_priv);
-}
-
-static enum attr_type android_search_level[] = {
- attr_town_or_district_name,
- attr_street_name,
- attr_house_number
-};
-
-static void
-android_search_idle(struct android_search_priv *search_priv)
-{
- dbg(lvl_debug, "enter android_search_idle");
-
- struct search_list_result *res = search_list_get_result(search_priv->search_list);
- if (res) {
- dbg(lvl_debug, "Town: %s, Street: %s\n",res->town ? res->town->common.town_name : "no town", res->street ? res->street->name : "no street");
- search_priv->found = 1;
- switch (search_priv->search_attr.type)
- {
- case attr_town_or_district_name:
- {
- gchar *town = town_str(res, 1);
- android_return_search_result(&search_priv->search_result_obj, 0, res->town->common.c, town);
- g_free(town);
- break;
- }
- case attr_street_name:
- {
- gchar *town = town_str(res, 2);
- gchar *address = g_strdup_printf("%.101s,%.101s, %.101s", res->country->name, town, res->street->name);
- android_return_search_result(&search_priv->search_result_obj, 1, res->street->common.c, address);
- g_free(address);
- g_free(town);
- break;
- }
- case attr_house_number:
- {
- gchar *town = town_str(res, 3);
- gchar *address = g_strdup_printf("%.101s, %.101s, %.101s %.15s", res->country->name, town, res->street->name, res->house_number->house_number);
- android_return_search_result(&search_priv->search_result_obj, 2, res->house_number->common.c, address);
- g_free(address);
- g_free(town);
- break;
- }
- default:
- dbg(lvl_error, "Unhandled search type %d", search_priv->search_attr.type);
- }
- } else {
- int level = search_list_level(search_priv->search_attr.type) - 1;
-
- if (search_priv->found) {
- search_priv->found = 0;
- if (search_priv->search_attr.type != attr_house_number) {
- level++;
- }
- }
- dbg(lvl_info, "test phrase: %d,%d, %d, level %d", search_priv->current_phrase_per_level[0], search_priv->current_phrase_per_level[1], search_priv->current_phrase_per_level[2] , level)
- do {
- while (!search_priv->phrases[++search_priv->current_phrase_per_level[level]]) {
- dbg(lvl_info, "next phrase: %d,%d, %d, level %d", search_priv->current_phrase_per_level[0], search_priv->current_phrase_per_level[1], search_priv->current_phrase_per_level[2] , level)
- if (level > 0) {
- search_priv->current_phrase_per_level[level] = -1;
- level--;
- } else {
- android_search_end(search_priv);
- return;
- }
- }
- } while (level > 0 ? search_priv->current_phrase_per_level[level] == search_priv->current_phrase_per_level[level-1] : 0);
- dbg(lvl_info, "used phrase: %d,%d, %d, level %d, '%s'", search_priv->current_phrase_per_level[0], search_priv->current_phrase_per_level[1], search_priv->current_phrase_per_level[2] , level, attr_to_name(android_search_level[level]))
- dbg(lvl_debug, "Search for '%s'", search_priv->phrases[search_priv->current_phrase_per_level[level]]);
- search_priv->search_attr.type = android_search_level[level];
- search_priv->search_attr.u.str = search_priv->phrases[search_priv->current_phrase_per_level[level]];
- struct attr test;
- test.type = android_search_level[level];
- test.u.str = search_priv->phrases[search_priv->current_phrase_per_level[level]];
- search_list_search(search_priv->search_list, &test, search_priv->partial);
- }
- dbg(lvl_info, "leave");
-}
-
-static char *
-search_fix_spaces(const char *str)
-{
- int i;
- int len=strlen(str);
- char c,*s,*d,*ret=g_strdup(str);
-
- for (i = 0 ; i < len ; i++) {
- if (ret[i] == ',' || ret[i] == ',' || ret[i] == '/')
- ret[i]=' ';
- }
- s=ret;
- d=ret;
- len=0;
- do {
- c=*s++;
- if (c != ' ' || len != 0) {
- *d++=c;
- len++;
- }
- while (c == ' ' && *s == ' ')
- s++;
- if (c == ' ' && *s == '\0') {
- d--;
- len--;
- }
- } while (c);
- return ret;
-}
-
-static void start_search(struct android_search_priv *search_priv, const char *search_string)
-{
- dbg(lvl_debug,"enter %s\n", search_string);
- char *str=search_fix_spaces(search_string);
- search_priv->phrases = g_strsplit(str, " ", 0);
- //ret=search_address_town(ret, sl, phrases, NULL, partial, jni);
-
- dbg(lvl_debug,"First search phrase %s", search_priv->phrases[0]);
- search_priv->search_attr.u.str= search_priv->phrases[0];
- search_priv->search_attr.type=attr_town_or_district_name;
- search_list_search(search_priv->search_list, &search_priv->search_attr, search_priv->partial);
-
- search_priv->idle_clb = callback_new_1(callback_cast(android_search_idle), search_priv);
- search_priv->idle_ev = event_add_idle(50,search_priv->idle_clb);
- //callback_call_0(search_priv->idle_clb);
-
- g_free(str);
- dbg(lvl_debug,"leave\n");
-}
-
-JNIEXPORT jlong JNICALL
-Java_org_navitproject_navit_NavitAddressSearchActivity_CallbackStartAddressSearch( JNIEnv* env, jobject thiz, int partial, jobject country, jobject str)
-{
- struct attr attr;
- const char *search_string =(*env)->GetStringUTFChars(env, str, NULL);
- dbg(lvl_debug,"search '%s'\n", search_string);
-
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- jclass cls = (*env)->GetObjectClass(env,thiz);
- jmethodID aMethodID = (*env)->GetMethodID(env, cls, "receiveAddress", "(IFFLjava/lang/String;)V");
- struct android_search_priv *search_priv = NULL;
-
- if(aMethodID != 0)
- {
- struct mapset *ms4=navit_get_mapset(attr.u.navit);
- struct attr country_attr;
- const char *str_country=(*env)->GetStringUTFChars(env, country, NULL);
- struct search_list_result *slr;
- int count = 0;
-
- search_priv = g_new0( struct android_search_priv, 1);
- search_priv->search_list = search_list_new(ms4);
- search_priv->partial = partial;
- search_priv->current_phrase_per_level[1] = -1;
- search_priv->current_phrase_per_level[2] = -1;
-
- country_attr.type=attr_country_iso2;
- country_attr.u.str=g_strdup(str_country);
- search_list_search(search_priv->search_list, &country_attr, 0);
-
- while ((slr=search_list_get_result(search_priv->search_list)))
- {
- count++;
- }
- if (!count)
- dbg(lvl_error,"Country not found");
-
- dbg(lvl_debug,"search in country '%s'\n", str_country);
- (*env)->ReleaseStringUTFChars(env, country, str_country);
-
- search_priv->search_result_obj.env = env;
- search_priv->search_result_obj.jo = (*env)->NewGlobalRef(env, thiz);
- search_priv->search_result_obj.jm = aMethodID;
-
- start_search(search_priv, search_string);
- }
- else
- dbg(lvl_error,"**** Unable to get methodID: fillStringArray");
-
- (*env)->ReleaseStringUTFChars(env, str, search_string);
-
- return (jlong)(long)search_priv;
-}
-
-JNIEXPORT void JNICALL
-Java_org_navitproject_navit_NavitAddressSearchActivity_CallbackCancelAddressSearch( JNIEnv* env, jobject thiz, jlong handle)
-{
- struct android_search_priv *priv = (void*)(long)handle;
-
- if (priv)
- android_search_end(priv);
- else
- dbg(lvl_error, "Error: Cancel search failed");
-}
diff --git a/navit/android.h b/navit/android.h
deleted file mode 100644
index 24774d0e5..000000000
--- a/navit/android.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <jni.h>
-extern JNIEnv *jnienv;
-extern jobject *android_activity;
-extern int android_version;
-int android_find_class_global(char *name, jclass *ret);
-int android_find_method(jclass class, char *name, char *args, jmethodID *ret);
-int android_find_static_method(jclass class, char *name, char *args, jmethodID *ret);
-
-struct jni_object {
- JNIEnv* env;
- jobject jo;
- jmethodID jm;
-};
diff --git a/navit/android/AndroidManifest.xml.cmake b/navit/android/AndroidManifest.xml.cmake
deleted file mode 100644
index 7aa882bb8..000000000
--- a/navit/android/AndroidManifest.xml.cmake
+++ /dev/null
@@ -1,51 +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_VERSION_INT@"
- android:installLocation="auto">
- <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="@ANDROID_API_VERSION@"/>
- <uses-feature android:name="android.hardware.location.network" android:required="false"/>
- <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
- <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:resizeable="true" android:anyDensity="true"/>
- @ANDROID_PERMISSIONS@
- <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"/>
- <application android:label="@string/app_name"
- android:icon="@drawable/icon"
- android:name=".NavitAppConfig"
- android:theme="@style/NavitBaseTheme">
- <activity android:name="Navit"
- android:label="@string/app_name"
- android:configChanges="locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale|screenSize"
- android:theme="@style/NavitTheme">
- <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>
- <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/CMakeLists.txt b/navit/android/CMakeLists.txt
deleted file mode 100644
index 6a9b9c92f..000000000
--- a/navit/android/CMakeLists.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-if (ANDROID)
-
- FILE(GLOB SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "src/*/*/*/*")
-
- foreach ( PERMISSION ${ANDROID_PERMISSIONS})
- set(ANDROID_PERMISSIONS_EXPANDED "${ANDROID_PERMISSIONS_EXPANDED}<uses-permission\tandroid:name=\\\"android.permission.${PERMISSION}\\\"/>" )
- endforeach()
-
- # Generate Android string resource files from gettext .po.in files.
- # Note: Android language resources should have two letter ISO 639-1 code, and, optionally, iso-3166-1-alpha-2 region code,
- # so we skip all translation files which do not conform these requirements.
- FILE(GLOB POIN_FILES1 RELATIVE ${CMAKE_SOURCE_DIR}/po "${CMAKE_SOURCE_DIR}/po/??.po.in")
- FILE(GLOB POIN_FILES2 RELATIVE ${CMAKE_SOURCE_DIR}/po "${CMAKE_SOURCE_DIR}/po/??_??.po.in")
- set(POIN_FILES ${POIN_FILES1} ${POIN_FILES2})
- foreach (POIN_FILE ${POIN_FILES})
- string(REPLACE ".po.in" "" LANG ${POIN_FILE})
- string(REPLACE "_" "-r" LANG ${LANG})
- set(LANG_RESOURCES ${LANG_RESOURCES} "${CMAKE_CURRENT_BINARY_DIR}/res/values-${LANG}/strings.xml")
- compose_xslt_transform_command(TRANS "${CMAKE_CURRENT_SOURCE_DIR}/po2xml.xslt" "${CMAKE_CURRENT_SOURCE_DIR}/res/values/strings.xml" "${CMAKE_CURRENT_BINARY_DIR}/res/values-${LANG}/strings.xml" "po_file=${CMAKE_SOURCE_DIR}/po/${POIN_FILE}")
- ADD_CUSTOM_COMMAND(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/res/values-${LANG}/strings.xml"
- DEPENDS "${CMAKE_BINARY_DIR}/po/navit.pot" "${CMAKE_SOURCE_DIR}/po/${POIN_FILE}" "${CMAKE_CURRENT_SOURCE_DIR}/po2xml.xslt" "${CMAKE_CURRENT_SOURCE_DIR}/res/values/strings.xml"
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/res/values-${LANG}
- ${TRANS}
- )
- endforeach(POIN_FILE ${POIN_FILES})
-
- add_custom_command (
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/AndroidManifest.xml
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/AndroidManifest.xml.cmake
- COMMAND ${CMAKE_COMMAND} -D SRC=${CMAKE_CURRENT_SOURCE_DIR}/AndroidManifest.xml.cmake
- -D DST=${CMAKE_CURRENT_BINARY_DIR}/AndroidManifest.xml
- -D NAME=ANDROID_VERSION_INT
- -D ANDROID_VERSION_NAME=${PACKAGE_STRING}
- -D ANDROID_API_VERSION=${ANDROID_API_VERSION}
- -D ANDROID_PERMISSIONS:string="${ANDROID_PERMISSIONS_EXPANDED}"
- -D STRIP_M="1"
- -P ${PROJECT_SOURCE_DIR}/cmake/version.cmake
- )
-
- add_custom_command (
- OUTPUT build.xml
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/AndroidManifest.xml ${SRC_FILES}
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND android update project -t android-${ANDROID_API_VERSION} -p ${CMAKE_CURRENT_BINARY_DIR}
- )
-
- add_custom_target( android_resources
- DEPENDS build.xml ${MODULES_NAME} ${NAVIT_SUPPORT_LIBS} ${LANG_RESOURCES}
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/res/raw/
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/libs/${ANDROID_ARCH}
- COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/navit/libnavit.so ${CMAKE_CURRENT_BINARY_DIR}/libs/${ANDROID_ARCH}/
- COMMAND ${CMAKE_COMMAND}
- -D GLOB_EXP="${PROJECT_BINARY_DIR}/navit/navit*.xml"
- -D DST=${CMAKE_CURRENT_BINARY_DIR}/res/raw
- -P ${PROJECT_SOURCE_DIR}/cmake/copy_files.cmake
- COMMAND ${CMAKE_COMMAND}
- -D GLOB_EXP="${PROJECT_BINARY_DIR}/navit/icons/*.png"
- -D DST=${CMAKE_CURRENT_BINARY_DIR}/res/drawable-nodpi
- -D LOWER=1
- -P ${PROJECT_SOURCE_DIR}/cmake/copy_files.cmake
- COMMAND ${CMAKE_COMMAND}
- -D GLOB_EXP="${PROJECT_BINARY_DIR}/navit/*/*/.libs/lib[b-z]*.so"
- -D DST=${CMAKE_CURRENT_BINARY_DIR}/libs/${ANDROID_ARCH}
- -P ${PROJECT_SOURCE_DIR}/cmake/copy_files.cmake
- COMMAND ${CMAKE_COMMAND}
- -D GLOB_EXP="${PROJECT_BINARY_DIR}/po/*.mo"
- -D DST=${CMAKE_CURRENT_BINARY_DIR}/res/raw
- -D LOWER=1
- -P ${PROJECT_SOURCE_DIR}/cmake/copy_files.cmake
- )
-
- add_dependencies (android_resources images locales ${NAVIT_LIBNAME})
-
- add_custom_target ( apkg
- COMMAND ant debug
- )
-
- add_custom_target ( apkg-release
- COMMAND ant release
- )
-
- add_dependencies(apkg android_resources)
- add_dependencies(apkg-release android_resources)
-
-endif(ANDROID)
diff --git a/navit/android/android_layout_default_new.xml b/navit/android/android_layout_default_new.xml
deleted file mode 100644
index d36659f1e..000000000
--- a/navit/android/android_layout_default_new.xml
+++ /dev/null
@@ -1,855 +0,0 @@
- <layer name="polygons">
- <itemgra item_types="poly_wood" order="13-">
- <polygon color="#8ec78d"/>
- <text text_size="5"/>
- </itemgra>
-
- <!-- ocean -->
- <itemgra item_types="poly_water_tiled">
- <polygon color="#82c8ea"/>
- </itemgra>
- <!-- ocean -->
-
- <!-- rivers with text -->
- <itemgra item_types="poly_water" order="10-">
- <polygon color="#82c8ea"/>
- <polyline color="#5096b8"/>
- <text text_size="5"/>
- </itemgra>
- <!-- rivers with text -->
-
-
- <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="poly_sport,poly_sports_pitch" order="0-">
- <polygon color="#4af04f"/>
- </itemgra>
- <itemgra item_types="poly_industry,poly_place" order="0-">
- <polygon color="#e6e6e6"/>
- </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="#fefc8c"/>
- <polyline color="#c0c0c0" width="1"/>
- </itemgra>
- <itemgra item_types="poly_street_2" order="13-16">
- <polygon color="#fefc8c"/>
- <polyline color="#c0c0c0" width="2"/>
- </itemgra>
- <itemgra item_types="poly_street_2" order="17-18">
- <polygon color="#fefc8c"/>
- <polyline color="#c0c0c0" width="3"/>
- </itemgra>
- -->
-
- <!--
- <itemgra item_types="poly_street_3" order="7-11">
- <polygon color="#fefc8c"/>
- <polyline color="#a0a0a0" width="1"/>
- </itemgra>
- <itemgra item_types="poly_street_3" order="12-15">
- <polygon color="#fefc8c"/>
- <polyline color="#a0a0a0" width="2"/>
- </itemgra>
- <itemgra item_types="poly_street_3" order="16-18">
- <polygon color="#fefc8c"/>
- <polyline color="#a0a0a0" width="3"/>
- </itemgra>
- -->
-
-
-
- <!--
- <itemgra item_types="water_line" order="0-">
- <polyline color="#5096b8" width="2"/>
- <text text_size="5"/>
- </itemgra>
- -->
-
- <!--
- <itemgra item_types="water_river" order="0-5">
- <polyline color="#82c8ea" width="2"/>
- </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-4">
- <polyline color="#9b1199" width="8" />
- </itemgra>
- <itemgra item_types="border_country" order="5-7">
- <polyline color="#9b1199" width="12" />
- </itemgra>
- <itemgra item_types="border_country" order="8-12">
- <polyline color="#9b1199" width="20" dash="10,5"/>
- </itemgra>
- <itemgra item_types="border_country" order="13-">
- <polyline color="#9b1199" width="30" dash="10,5,2,1"/>
- </itemgra>
-
-
- </layer>
- <layer name="streets">
-
- <!-- route -->
- <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>
- <!-- route -->
-
-
-
- <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" dash="4,8"/>
- <polyline color="#800000" width="2" dash="4,8"/>
- </itemgra>
- <itemgra item_types="track_gravelled" order="15-16">
- <polyline color="#ffffff" width="5" dash="5,10"/>
- <polyline color="#800000" width="3" dash="5,10"/>
- </itemgra>
- <itemgra item_types="track_gravelled" order="17-">
- <polyline color="#ffffff" width="7" dash="7,15"/>
- <polyline color="#800000" width="5" 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" dash="5,10"/>
- <polyline color="#ff0000" width="3" dash="5,10"/>
- </itemgra>
- <itemgra item_types="footway" order="17-">
- <polyline color="#ffffff" width="7" dash="7,15"/>
- <polyline color="#ff0000" width="5" 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>
-
- <!-- very small "white" street -->
- <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>
-
-
- <!-- small -->
- <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>
-
-
- <!-- little bigger -->
- <!--
- <itemgra item_types="street_3_city,street_3_land,roundabout" order="10">
- <polyline color="#e0e0e0" width="2"/>
- </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>
-
-
- <!-- big -->
- <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="#404040" width="3"/>-->
- <polyline color="#f8dc79" width="4"/>
- </itemgra>
- <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="9">
- <!--<polyline color="#000000" width="5"/>-->
- <polyline color="#f8dc79" width="5"/>
- </itemgra>
- <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="10">
- <!--<polyline color="#000000" width="6"/>-->
- <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>
-
-
- <!-- autobahn / highway -->
- <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"/>
- <!--<polyline color="#fc843b" width="3"/>-->
- <!--<polyline color="#fc843b" width="1"/>-->
- </itemgra>
- <itemgra item_types="highway_city,highway_land" order="6">
- <!--<polyline color="#a8aab3" width="4"/>-->
- <polyline color="#fc843b" width="6"/>
- </itemgra>
- <itemgra item_types="highway_city,highway_land" order="7-8">
- <!--<polyline color="#a8aab3" width="7"/>-->
- <polyline color="#fc843b" width="6"/>
- <!--<polyline color="#a8aab3" width="1"/>-->
- </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="#a8aab3" width="9"/>-->
- <polyline color="#fc843b" width="9"/>
- <!--<polyline color="#a8aab3" width="1"/>-->
- </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" 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" 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.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_left_2" order="0-">
- <icon src="nav_left_2_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_left_3" order="0-">
- <icon src="nav_left_3_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_right_1" order="0-">
- <icon src="nav_right_1_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_right_2" order="0-">
- <icon src="nav_right_2_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_right_3" order="0-">
- <icon src="nav_right_3_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_straight" order="0-">
- <icon src="nav_straight_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_turnaround" order="0-">
- <icon src="nav_turnaround_left_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_l1" order="0-">
- <icon src="nav_roundabout_l1_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_r1" order="0-">
- <icon src="nav_roundabout_r1_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_l2" order="0-">
- <icon src="nav_roundabout_l2_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_r2" order="0-">
- <icon src="nav_roundabout_r2_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_l3" order="0-">
- <icon src="nav_roundabout_l3_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_r3" order="0-">
- <icon src="nav_roundabout_r3_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_l4" order="0-">
- <icon src="nav_roundabout_l4_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_r4" order="0-">
- <icon src="nav_roundabout_r4_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_l5" order="0-">
- <icon src="nav_roundabout_l5_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_r5" order="0-">
- <icon src="nav_roundabout_r5_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_l6" order="0-">
- <icon src="nav_roundabout_l6_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_r6" order="0-">
- <icon src="nav_roundabout_r6_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_l7" order="0-">
- <icon src="nav_roundabout_l7_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_r7" order="0-">
- <icon src="nav_roundabout_r7_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_l8" order="0-">
- <icon src="nav_roundabout_l8_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_roundabout_r8" order="0-">
- <icon src="nav_roundabout_r8_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="route_end" order="0-">
- <icon src="nav_destination_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_none" order="0-">
- <icon src="unknown.png"/>
- </itemgra>
- <itemgra item_types="announcement" order="7-">
- <icon src="gui_sound_32_32.png"/>
- <circle color="#FF089C" radius="10" text_size="7"/>
- </itemgra>
- </layer>
-
-
- <layer name="POI Symbols">
- <itemgra item_types="mini_roundabout" order="12-">
- <icon src="mini_roundabout.png"/>
- </itemgra>
- <itemgra item_types="turning_circle" order="12-">
- <icon src="mini_roundabout.png"/>
- </itemgra>
- <itemgra item_types="poi_airport" order="6-">
- <icon src="airport.png"/>
- </itemgra>
- <itemgra item_types="poi_fuel" order="12-">
- <icon src="fuel.png"/>
- </itemgra>
- <itemgra item_types="poi_bridge" order="12-">
- <icon src="bridge.png"/>
- </itemgra>
- <itemgra item_types="highway_exit" order="12-">
- <icon src="exit.png"/>
- </itemgra>
- <itemgra item_types="poi_auto_club" order="13-">
- <icon src="auto_club.png"/>
- </itemgra>
- <itemgra item_types="poi_bank" order="13-">
- <icon src="bank.png"/>
- </itemgra>
- <itemgra item_types="poi_danger_area" order="13-">
- <icon src="danger_16_16.png"/>
- </itemgra>
- <itemgra item_types="poi_forbidden_area" order="13-">
- <icon src="forbiden_area.png"/>
- </itemgra>
- <itemgra item_types="poi_tunnel" order="12-">
- <icon src="tunnel.png"/>
- </itemgra>
- <itemgra item_types="traffic_signals" order="14-">
- <icon src="traffic_signals.png"/>
- </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,highway_exit,poi_camp_rv,poi_museum_history,poi_hospital,poi_dining,poi_fastfood,poi_police,poi_autoservice,poi_bank,poi_bus_station,poi_bus_stop,poi_business_service,poi_car_rent,poi_church,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>
- <!--
- <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>
diff --git a/navit/android/build.properties b/navit/android/build.properties
deleted file mode 100644
index 5e6455582..000000000
--- a/navit/android/build.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-# sources are UTF-8
-java.encoding=utf-8
diff --git a/navit/android/change_xslt.sh b/navit/android/change_xslt.sh
deleted file mode 100755
index 5f11f0930..000000000
--- a/navit/android/change_xslt.sh
+++ /dev/null
@@ -1,58 +0,0 @@
-#! /bin/bash
-###########################################
-#
-# change android car layout into XSLT for all densities
-# handle with care!
-#
-# Zoff <zoff@zoff.cc> 2011-02-15
-#
-###########################################
-
-in="android_layout_default_new.xml"
-temp="/tmp/temp_layout.tmp"
-out="android_layout_default_parsed.xml"
-
-# setup temp file
-rm -f "$temp"
-cp -p "$in" "$temp"
-
-REG0='0-{round(@1@-number($LAYOUT_001_ORDER_DELTA_1))}'
-REG1='{round(@1@-number($LAYOUT_001_ORDER_DELTA_1))}-'
-REG2='-{round(@1@-number($LAYOUT_001_ORDER_DELTA_1))}'
-REG3='{round(@1@-number($LAYOUT_001_ORDER_DELTA_1))}-{round(@2@-number($LAYOUT_001_ORDER_DELTA_1))}'
-REG4='{round(@1@-number($LAYOUT_001_ORDER_DELTA_1))}'
-
-for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18;do
- a=`echo "$REG0"|sed -e "s#@1@#$i#"`
- cat "$temp"|sed -e "s#order=\"0-${i}\"#order=\"${a}\"#g" > "$out"
- cp -p "$out" "$temp"
-done
-
-# dont change order="0-" values !!
-for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18;do
- a=`echo "$REG1"|sed -e "s#@1@#$i#"`
- cat "$temp"|sed -e "s#order=\"${i}-\"#order=\"${a}\"#g" > "$out"
- cp -p "$out" "$temp"
-done
-
-for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18;do
- a=`echo "$REG2"|sed -e "s#@1@#$i#"`
- cat "$temp"|sed -e "s#order=\"-${i}\"#order=\"${a}\"#g" > "$out"
- cp -p "$out" "$temp"
-done
-
-
-for j in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18;do
- for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18;do
- a=`echo "$REG3"|sed -e "s#@1@#$i#"|sed -e "s#@2@#$j#"`
- cat "$temp"|sed -e "s#order=\"${i}-${j}\"#order=\"${a}\"#g" > "$out"
- cp -p "$out" "$temp"
- done
-done
-
-for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18;do
- a=`echo "$REG4"|sed -e "s#@1@#$i#"`
- cat "$temp"|sed -e "s#order=\"${i}\"#order=\"${a}\"#g" > "$out"
- cp -p "$out" "$temp"
-done
-
diff --git a/navit/android/libs/TTS_library_stub.jar b/navit/android/libs/TTS_library_stub.jar
deleted file mode 100644
index 194b82733..000000000
--- a/navit/android/libs/TTS_library_stub.jar
+++ /dev/null
Binary files differ
diff --git a/navit/android/libs/acra-4.8.5.jar b/navit/android/libs/acra-4.8.5.jar
deleted file mode 100644
index f0044ece8..000000000
--- a/navit/android/libs/acra-4.8.5.jar
+++ /dev/null
Binary files differ
diff --git a/navit/android/libs/android-support-v4.jar b/navit/android/libs/android-support-v4.jar
deleted file mode 100644
index aa0b1a5cc..000000000
--- a/navit/android/libs/android-support-v4.jar
+++ /dev/null
Binary files differ
diff --git a/navit/android/po2xml.xslt b/navit/android/po2xml.xslt
deleted file mode 100644
index 1a92d2db4..000000000
--- a/navit/android/po2xml.xslt
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:po2xml="http://example.com/namespace" exclude-result-prefixes="po2xml">
-<xsl:param name="po_file"/>
-<xsl:output method="xml" indent="yes" encoding="utf-8"/>
-
-<xsl:function name="po2xml:escape">
- <xsl:param name="str" />
- <xsl:sequence select="replace($str,concat('(',codepoints-to-string(39),')'),'\\$1')" />
-</xsl:function>
-
-<xsl:template match="/">
- <resources>
- <xsl:variable name="r" select="." />
- <xsl:for-each select="tokenize(replace(unparsed-text($po_file),'\r',''), '\n+\n')">
- <xsl:analyze-string regex="(.*\n)?msgid &quot;(.*)&quot;\nmsgstr &quot;(.*)&quot;$" select="." flags="s">
- <xsl:matching-substring>
- <xsl:variable name="comment" select="replace(regex-group(1),'#','')" />
- <xsl:variable name="msgid" select="po2xml:escape(replace(regex-group(2),'&quot;\n&quot;','','s'))" />
- <xsl:variable name="msgstr" select="po2xml:escape(replace(regex-group(3),'&quot;\n&quot;','','s'))" />
- <xsl:variable name="resname" select="$r/resources/string[text()=$msgid]/@name" />
- <xsl:choose>
- <xsl:when test="$msgid!='' and $msgstr!='' and $resname!=''">
- <xsl:choose>
- <xsl:when test="$comment!=''">
- <xsl:comment select="$comment"/>
- </xsl:when>
- </xsl:choose>
- <string>
- <xsl:attribute name='name'><xsl:value-of select="$resname"/></xsl:attribute>
- <xsl:value-of select="$msgstr"/>
- </string>
- </xsl:when>
- </xsl:choose>
- </xsl:matching-substring>
- </xsl:analyze-string>
- </xsl:for-each>
- </resources>
-</xsl:template>
-</xsl:transform>
-
diff --git a/navit/android/res/drawable-hdpi/ic_notify.png b/navit/android/res/drawable-hdpi/ic_notify.png
deleted file mode 100644
index 7516b2fbd..000000000
--- a/navit/android/res/drawable-hdpi/ic_notify.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-hdpi/icon.png b/navit/android/res/drawable-hdpi/icon.png
deleted file mode 100644
index 311c57b59..000000000
--- a/navit/android/res/drawable-hdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-ldpi/dir_up.png b/navit/android/res/drawable-ldpi/dir_up.png
deleted file mode 100644
index a4f295530..000000000
--- a/navit/android/res/drawable-ldpi/dir_up.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-ldpi/file_icon.png b/navit/android/res/drawable-ldpi/file_icon.png
deleted file mode 100644
index 4fc6a5efe..000000000
--- a/navit/android/res/drawable-ldpi/file_icon.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-ldpi/folder_icon.png b/navit/android/res/drawable-ldpi/folder_icon.png
deleted file mode 100644
index 00a87a8a6..000000000
--- a/navit/android/res/drawable-ldpi/folder_icon.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-ldpi/folder_icon_light.png b/navit/android/res/drawable-ldpi/folder_icon_light.png
deleted file mode 100644
index 642e47a2a..000000000
--- a/navit/android/res/drawable-ldpi/folder_icon_light.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-ldpi/ic_launcher.png b/navit/android/res/drawable-ldpi/ic_launcher.png
deleted file mode 100644
index 99238729d..000000000
--- a/navit/android/res/drawable-ldpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-ldpi/ic_notify.png b/navit/android/res/drawable-ldpi/ic_notify.png
deleted file mode 100644
index 010d55fb3..000000000
--- a/navit/android/res/drawable-ldpi/ic_notify.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-ldpi/icon.png b/navit/android/res/drawable-ldpi/icon.png
deleted file mode 100644
index da2553687..000000000
--- a/navit/android/res/drawable-ldpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-mdpi/ic_notify.png b/navit/android/res/drawable-mdpi/ic_notify.png
deleted file mode 100644
index d6de8d53f..000000000
--- a/navit/android/res/drawable-mdpi/ic_notify.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-mdpi/icon.png b/navit/android/res/drawable-mdpi/icon.png
deleted file mode 100644
index f8f68e8bc..000000000
--- a/navit/android/res/drawable-mdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-xhdpi/ic_notify.png b/navit/android/res/drawable-xhdpi/ic_notify.png
deleted file mode 100644
index 72371c974..000000000
--- a/navit/android/res/drawable-xhdpi/ic_notify.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-xhdpi/icon.png b/navit/android/res/drawable-xhdpi/icon.png
deleted file mode 100644
index 649fb32d4..000000000
--- a/navit/android/res/drawable-xhdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-xxhdpi/ic_notify.png b/navit/android/res/drawable-xxhdpi/ic_notify.png
deleted file mode 100644
index d47a41154..000000000
--- a/navit/android/res/drawable-xxhdpi/ic_notify.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/drawable-xxhdpi/icon.png b/navit/android/res/drawable-xxhdpi/icon.png
deleted file mode 100644
index 398945c23..000000000
--- a/navit/android/res/drawable-xxhdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/navit/android/res/layout/ua_com_vassiliev_filebrowser_layout.xml b/navit/android/res/layout/ua_com_vassiliev_filebrowser_layout.xml
deleted file mode 100644
index 28bedf592..000000000
--- a/navit/android/res/layout/ua_com_vassiliev_filebrowser_layout.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:padding="3dp" >
-
- <!--
- android:layout_weight="1"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:layout_width="fill_parent"
- android:layout_gravity="top"
- android:background = "#f00"
- android:background = "#0f0"
-
- -->
-
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_margin="0dp"
- android:gravity="top"
- android:orientation="horizontal"
- android:padding="0dp" >
-
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_margin="0dp"
- android:layout_weight="1"
- android:gravity="top"
- android:orientation="horizontal"
- android:padding="0dp" >
-
- <Button
- android:id="@+id/upDirectoryButton"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="top"
- android:layout_margin="0dp"
- android:layout_weight="1"
- android:padding="0dp"
- android:drawableLeft="@drawable/dir_up"
- android:text="Up" />
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_margin="0dp"
- android:layout_weight="1"
- android:gravity="top"
- android:orientation="horizontal"
- android:padding="0dp" >
-
- <Button
- android:id="@+id/selectCurrentDirectoryButton"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="top"
- android:gravity = "center|center_vertical"
- android:layout_margin="0dp"
- android:layout_weight="1"
- android:padding="0dp"
- android:text="Select" />
- </LinearLayout>
- </LinearLayout>
-
- <TextView
- android:id="@+id/currentDirectoryTextView"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Current folder: \n/THis/is/a/long/path/to/test/if/this/will/span/multiple/lines" />
-
- <ListView
- android:id="@+id/fileListView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_marginTop="5dp"
- android:layout_weight="1" />
-
-</LinearLayout> \ No newline at end of file
diff --git a/navit/android/res/values-v19/styles.xml b/navit/android/res/values-v19/styles.xml
deleted file mode 100644
index b3ea5c14f..000000000
--- a/navit/android/res/values-v19/styles.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<resources>
-
- <!--
- Base application theme for API 19+. This theme completely replaces
- NavitBaseTheme from BOTH res/values/styles.xml and
- res/values-v19/styles.xml on API 19+ devices.
- -->
- <style name="NavitBaseTheme" parent="android:Theme.Holo">
-
- <!-- Main theme colors -->
- <!-- your app branding color for the app bar -->
- <item name="android:colorPrimary">@color/navitYellow500</item>
- <!-- darker variant for the status bar and contextual app bars -->
- <item name="android:colorPrimaryDark">@color/navitYellow700</item>
- <!-- theme UI controls like checkboxes and text fields -->
- <item name="android:colorAccent">@color/navitBlue500</item>
- </style>
-
- <!--
- Main Activity theme for API 19+. This theme completely replaces
- NavitTheme from BOTH res/values/styles.xml and
- res/values-v19/styles.xml on API 19+ devices.
- -->
- <style name="NavitTheme" parent="NavitBaseTheme">
-
- <!-- API 19 theme customizations can go here. -->
- <item name="android:windowTranslucentNavigation">true</item>
- <item name="android:windowTranslucentStatus">true</item>
- </style>
-
-</resources> \ No newline at end of file
diff --git a/navit/android/res/values-v21/styles.xml b/navit/android/res/values-v21/styles.xml
deleted file mode 100644
index a1d66bb3d..000000000
--- a/navit/android/res/values-v21/styles.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<resources>
-
- <!--
- Base application theme for API 21+. This theme completely replaces
- NavitBaseTheme from BOTH res/values/styles.xml and
- res/values-v.../styles.xml on API 21+ devices.
- -->
- <style name="NavitBaseTheme" parent="android:Theme.Material">
-
- <!-- Main theme colors -->
- <!-- your app branding color for the app bar -->
- <item name="android:colorPrimary">@color/navitYellow500</item>
- <!-- darker variant for the status bar and contextual app bars -->
- <item name="android:colorPrimaryDark">@color/navitYellow700</item>
- <!-- theme UI controls like checkboxes and text fields -->
- <item name="android:colorAccent">@color/navitBlue500</item>
- </style>
-
- <!--
- Main Activity theme for API 21+. This theme completely replaces
- NavitTheme from BOTH res/values/styles.xml and
- res/values-v21/styles.xml on API 21+ devices.
- -->
- <style name="NavitTheme" parent="NavitBaseTheme">
-
- <!-- API 21 theme customizations can go here. -->
-
- <!--
- Don't use translucent system bars on API 21 as they are drawn with a semitransparent
- black background which can't be changed.
- -->
- <item name="android:windowTranslucentNavigation">false</item>
- <item name="android:windowTranslucentStatus">false</item>
-
- <!--
- We could set any semi-transparent color here (or change it in code), but this would not
- be available on API 19/20. Simply specifying full transparency allows us to implement a
- separate mechanism that will work on all versions.
- -->
- <item name="android:navigationBarColor">@android:color/transparent</item>
- <item name="android:statusBarColor">@android:color/transparent</item>
-
- <item name="android:windowDrawsSystemBarBackgrounds">true</item>
- </style>
-
-</resources> \ No newline at end of file
diff --git a/navit/android/res/values/strings-dont-translate.xml b/navit/android/res/values/strings-dont-translate.xml
deleted file mode 100644
index db794184f..000000000
--- a/navit/android/res/values/strings-dont-translate.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <!-- LANG=en -->
- <!-- GENERIC -->
- <string name="app_name">Navit</string>
- <string name="map_data_copyright">© OpenStreetMap contributors</string>
- <string name="url_wiki_android">http://wiki.navit-project.org/index.php/Navit_on_Android</string>
- <string name="url_wiki_main">http://wiki.navit-project.org</string>
-
- <!-- NOTIFICATION -->
- <string name="notification_name">@string/app_name</string>
-
- <!-- OPTIONS MENU -->
- <string name="optionsmenu_address_search">@string/address_search_title</string>
-
- <!-- Backup Restore -->
- <string-array name="dialog_backup_restore_items">
- <item >@string/backup</item>
- <item >@string/restore</item>
- </string-array>
-</resources>
-
diff --git a/navit/android/res/values/strings.xml b/navit/android/res/values/strings.xml
deleted file mode 100644
index 3a730e807..000000000
--- a/navit/android/res/values/strings.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <!-- LANG=en -->
- <!-- GENERIC -->
- <string name="yes">Yes</string>
- <string name="no">No</string>
-
- <!-- NOTIFICATION -->
- <string name="notification_ticker">Navit started</string>
- <string name="notification_event_default">Navit running</string>
-
- <!-- INITIAL INFOBOX -->
- <string name="initial_info_box_title">Welcome to Navit</string>
- <string name="initial_info_box_message">Thank you for installing Navit!\n\nTo start, select \"Download maps\" from the menu to download a map. Note: The map filesize may be large (>50MB) - a wifi connection is recommended.\n\nMapdata: (c) OpenStreetMap contributors\n\nEnjoy Navit!</string>
- <string name="initial_info_box_OK">OK</string>
- <string name="initial_info_box_more_info">More info</string>
-
-
- <!-- OPTIONS MENU -->
- <string name="optionsmenu_zoom_in">Zoom in</string>
- <string name="optionsmenu_zoom_out">Zoom out</string>
- <string name="optionsmenu_download_maps">Download maps</string>
- <string name="optionsmenu_toggle_poi">Toggle POIs</string>
- <string name="optionsmenu_exit_navit">Exit Navit</string>
- <string name="optionsmenu_backup_restore">Backup / Restore</string>
- <string name="optionsmenu_set_map_location">Set map location</string>
-
- <!-- POSITION POP-UP -->
- <string name="position_popup_title">Position</string>
- <string name="position_popup_drive_here">Route to here</string>
-
- <!-- MAP DOWNLOAD -->
- <string name="map_delete">Delete this map?</string>
- <string name="map_download_title">Map download</string>
- <string name="map_download_downloading">Downloading:</string>
- <string name="map_download_eta">ETA</string>
- <string name="map_download_ready">ready</string>
- <string name="map_download_download_error">Error downloading map.</string>
- <string name="map_download_download_aborted">Map download aborted</string>
- <string name="map_download_not_enough_free_space">Not enough free space</string>
- <string name="map_no_fix">No location. Reopen after location fix.</string>
- <string name="maps_for_current_location">Maps containing current location</string>
-
- <!-- ADDRESS SEARCH -->
- <string name="address_search_title">Address search</string>
- <string name="address_enter_destination">Enter destination</string>
- <string name="address_partial_match">Match partial address</string>
- <string name="address_search_button">Search</string>
- <string name="address_search_searching">Searching...</string>
- <string name="address_search_not_found">Address not found</string>
- <string name="address_search_getting_results">Getting search results</string>
- <string name="address_search_loading_results">Loading search results</string>
- <string name="address_search_no_results">No results found</string>
- <string name="address_search_no_text_entered">No text entered</string>
- <string name="address_search_set_destination">Setting destination to:</string>
- <string name="address_search_towns">Towns</string>
- <string name="address_search_streets">Streets</string>
-
- <!-- Backup Restore -->
- <string name="choose_an_action">Choose an action</string>
- <string name="please_insert_an_sd_card">Please insert an SD Card</string>
- <string name="backing_up">Backing up...</string>
- <string name="restoring">Restoring...</string>
- <string name="failed_to_create_backup_directory">Failed to create backup directory</string>
- <string name="backup_failed">Backup failed</string>
- <string name="no_backup_found">No backup found</string>
- <string name="failed_to_restore">Failed to restore</string>
- <string name="backup_successful">Backup successful</string>
- <string name="restore_successful_please_restart_navit">Restore Successful\nPlease restart Navit</string>
- <string name="backup_not_found">Backup not found</string>
- <string name="restore_failed">Restore failed</string>
- <string name="select_backup">Select backup</string>
- <string name="backup">Backup</string>
- <string name="restore">Restore</string>
-
- <!-- 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/res/values/styles.xml b/navit/android/res/values/styles.xml
deleted file mode 100644
index 91094e222..000000000
--- a/navit/android/res/values/styles.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<resources>
-
- <!--
- Base application theme, dependent on API level. This theme is replaced
- by NavitBaseTheme from res/values-vXX/styles.xml on newer devices.
- -->
- <style name="NavitBaseTheme" parent="android:Theme.Holo">
- <!--
- Theme customizations available in newer API levels can go in
- res/values-vXX/styles.xml, while customizations related to
- backward-compatibility can go here.
- -->
- </style>
-
- <!-- Theme for Navit's main Activity. -->
- <style name="NavitTheme" parent="NavitBaseTheme">
- <!-- All customizations that are NOT specific to a particular API-level can go here. -->
- </style>
-
- <!-- TODO complete list of shades for both colors -->
- <!--
- Primary color is derived average of icon colors (500 in Android parlance):
- 213 164 19 #d5a411 hsl 45 92 84
-
- Dark color is normally the 600 color (i.e. slightly darker than 500)
- 209 155 19 #d19b13 hsl 43 91 82
- -->
-
-
- <!-- Yellow from Navit icon background (300 and 700 are the extremes of the gradient, 500 is the average, 900 is the line color) -->
- <color name="navitYellow300">#e9cb14</color>
- <color name="navitYellow500">#d5a411</color>
- <!-- <color name="navitYellow600">#d19b13</color> -->
- <color name="navitYellow700">#c17d11</color>
- <color name="navitYellow900">#43350f</color>
-
- <!-- Blue from arrow in Navit icon (500 is the midpoint of the gradient, 300 is the end, 900 is the line color) -->
- <color name="navitBlue300">#329eff</color>
- <color name="navitBlue500">#1a6cb6</color>
- <color name="navitBlue900">#1f3157</color>
-
-</resources> \ No newline at end of file
diff --git a/navit/android/src/org/navitproject/navit/FileBrowserActivity.java b/navit/android/src/org/navitproject/navit/FileBrowserActivity.java
deleted file mode 100644
index ab3c47376..000000000
--- a/navit/android/src/org/navitproject/navit/FileBrowserActivity.java
+++ /dev/null
@@ -1,432 +0,0 @@
-package org.navitproject.navit;
-
-//Heavily based on code from
-//https://github.com/mburman/Android-File-Explore
-// Version of Aug 13, 2011
-//Also contributed:
-// Sugan Krishnan (https://github.com/rgksugan) - Jan 2013.
-//
-
-//Project type now is Android library:
-// http://developer.android.com/guide/developing/projects/projects-eclipse.html#ReferencingLibraryProject
-
-//General Java imports
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Collections;
-
-//Android imports
-import android.app.Activity;
-import android.content.Intent;
-import android.content.res.Configuration;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.os.Environment;
-import android.os.StatFs;
-import android.util.Log;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup.LayoutParams;
-import android.view.*;
-import android.widget.*;
-
-//Import of resources file for file browser
-import org.navitproject.navit.R;
-
-public class FileBrowserActivity extends Activity {
- // Intent Action Constants
- public static final String INTENT_ACTION_SELECT_DIR = "ua.com.vassiliev.androidfilebrowser.SELECT_DIRECTORY_ACTION";
- public static final String INTENT_ACTION_SELECT_FILE = "ua.com.vassiliev.androidfilebrowser.SELECT_FILE_ACTION";
-
- // Intent parameters names constants
- public static final String startDirectoryParameter = "ua.com.vassiliev.androidfilebrowser.directoryPath";
- public static final String returnDirectoryParameter = "ua.com.vassiliev.androidfilebrowser.directoryPathRet";
- public static final String returnFileParameter = "ua.com.vassiliev.androidfilebrowser.filePathRet";
- public static final String showCannotReadParameter = "ua.com.vassiliev.androidfilebrowser.showCannotRead";
- public static final String filterExtension = "ua.com.vassiliev.androidfilebrowser.filterExtension";
-
- // Stores names of traversed directories
- ArrayList<String> pathDirsList = new ArrayList<String>();
-
- // Check if the first level of the directory structure is the one showing
- // private Boolean firstLvl = true;
-
- private static final String LOGTAG = "F_PATH";
-
- private List<Item> fileList = new ArrayList<Item>();
- private File path = null;
- private String chosenFile;
- // private static final int DIALOG_LOAD_FILE = 1000;
-
- ArrayAdapter<Item> adapter;
-
- private boolean showHiddenFilesAndDirs = true;
-
- private boolean directoryShownIsEmpty = false;
-
- private String filterFileExtension = null;
-
- // Action constants
- private static int currentAction = -1;
- private static final int SELECT_DIRECTORY = 1;
- private static final int SELECT_FILE = 2;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // In case of
- // ua.com.vassiliev.androidfilebrowser.SELECT_DIRECTORY_ACTION
- // Expects com.mburman.fileexplore.directoryPath parameter to
- // point to the start folder.
- // If empty or null, will start from SDcard root.
- setContentView(R.layout.ua_com_vassiliev_filebrowser_layout);
-
- // Set action for this activity
- Intent thisInt = this.getIntent();
- currentAction = SELECT_DIRECTORY;// This would be a default action in
- // case not set by intent
- if (thisInt.getAction().equalsIgnoreCase(INTENT_ACTION_SELECT_FILE)) {
- Log.d(LOGTAG, "SELECT ACTION - SELECT FILE");
- currentAction = SELECT_FILE;
- }
-
- showHiddenFilesAndDirs = thisInt.getBooleanExtra(
- showCannotReadParameter, true);
-
- filterFileExtension = thisInt.getStringExtra(filterExtension);
-
- setInitialDirectory();
-
- parseDirectoryPath();
- loadFileList();
- this.createFileListAdapter();
- this.initializeButtons();
- this.initializeFileListView();
- updateCurrentDirectoryTextView();
- Log.d(LOGTAG, path.getAbsolutePath());
- }
-
- private void setInitialDirectory() {
- Intent thisInt = this.getIntent();
- String requestedStartDir = thisInt
- .getStringExtra(startDirectoryParameter);
-
- if (requestedStartDir != null && requestedStartDir.length() > 0) {// if(requestedStartDir!=null
- File tempFile = new File(requestedStartDir);
- if (tempFile.isDirectory())
- this.path = tempFile;
- }// if(requestedStartDir!=null
-
- if (this.path == null) {// No or invalid directory supplied in intent
- // parameter
- if (Environment.getExternalStorageDirectory().isDirectory()
- && Environment.getExternalStorageDirectory().canRead())
- path = Environment.getExternalStorageDirectory();
- else
- path = new File("/");
- }// if(this.path==null) {//No or invalid directory supplied in intent
- // parameter
- }// private void setInitialDirectory() {
-
- private void parseDirectoryPath() {
- pathDirsList.clear();
- String pathString = path.getAbsolutePath();
- String[] parts = pathString.split("/");
- int i = 0;
- while (i < parts.length) {
- pathDirsList.add(parts[i]);
- i++;
- }
- }
-
- private void initializeButtons() {
- Button upDirButton = (Button) this.findViewById(R.id.upDirectoryButton);
- upDirButton.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- Log.d(LOGTAG, "onclick for upDirButton");
- loadDirectoryUp();
- loadFileList();
- adapter.notifyDataSetChanged();
- updateCurrentDirectoryTextView();
- }
- });// upDirButton.setOnClickListener(
-
- Button selectFolderButton = (Button) this
- .findViewById(R.id.selectCurrentDirectoryButton);
- if (currentAction == SELECT_DIRECTORY) {
- selectFolderButton.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- Log.d(LOGTAG, "onclick for selectFolderButton");
- returnDirectoryFinishActivity();
- }
- });
- } else {// if(currentAction == this.SELECT_DIRECTORY) {
- selectFolderButton.setVisibility(View.GONE);
- }// } else {//if(currentAction == this.SELECT_DIRECTORY) {
- }// private void initializeButtons() {
-
- private void loadDirectoryUp() {
- // present directory removed from list
- String s = pathDirsList.remove(pathDirsList.size() - 1);
- // path modified to exclude present directory
- path = new File(path.toString().substring(0,
- path.toString().lastIndexOf(s)));
- fileList.clear();
- }
-
- private void updateCurrentDirectoryTextView() {
- int i = 0;
- String curDirString = "";
- while (i < pathDirsList.size()) {
- curDirString += pathDirsList.get(i) + "/";
- i++;
- }
- if (pathDirsList.size() == 0) {
- ((Button) this.findViewById(R.id.upDirectoryButton))
- .setEnabled(false);
- curDirString = "/";
- } else
- ((Button) this.findViewById(R.id.upDirectoryButton))
- .setEnabled(true);
- long freeSpace = getFreeSpace(curDirString);
- String formattedSpaceString = formatBytes(freeSpace);
- if (freeSpace == 0) {
- Log.d(LOGTAG, "NO FREE SPACE");
- File currentDir = new File(curDirString);
- if(!currentDir.canWrite())
- formattedSpaceString = "NON Writable";
- }
-
- ((Button) this.findViewById(R.id.selectCurrentDirectoryButton))
- .setText("Select\n[" + formattedSpaceString
- + "]");
-
- ((TextView) this.findViewById(R.id.currentDirectoryTextView))
- .setText("Current directory: " + curDirString);
- }// END private void updateCurrentDirectoryTextView() {
-
- private void showToast(String message) {
- Toast.makeText(this, message, Toast.LENGTH_LONG).show();
- }
-
- private void initializeFileListView() {
- ListView lView = (ListView) this.findViewById(R.id.fileListView);
- lView.setBackgroundColor(Color.LTGRAY);
- LinearLayout.LayoutParams lParam = new LinearLayout.LayoutParams(
- LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
- lParam.setMargins(15, 5, 15, 5);
- lView.setAdapter(this.adapter);
- lView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- chosenFile = fileList.get(position).file;
- File sel = new File(path + "/" + chosenFile);
- Log.d(LOGTAG, "Clicked:" + chosenFile);
- if (sel.isDirectory()) {
- if (sel.canRead()) {
- // Adds chosen directory to list
- pathDirsList.add(chosenFile);
- path = new File(sel + "");
- Log.d(LOGTAG, "Just reloading the list");
- loadFileList();
- adapter.notifyDataSetChanged();
- updateCurrentDirectoryTextView();
- Log.d(LOGTAG, path.getAbsolutePath());
- } else {// if(sel.canRead()) {
- showToast("Path does not exist or cannot be read");
- }// } else {//if(sel.canRead()) {
- }// if (sel.isDirectory()) {
- // File picked or an empty directory message clicked
- else {// if (sel.isDirectory()) {
- Log.d(LOGTAG, "item clicked");
- if (!directoryShownIsEmpty) {
- Log.d(LOGTAG, "File selected:" + chosenFile);
- returnFileFinishActivity(sel.getAbsolutePath());
- }
- }// else {//if (sel.isDirectory()) {
- }// public void onClick(DialogInterface dialog, int which) {
- });// lView.setOnClickListener(
- }// private void initializeFileListView() {
-
- private void returnDirectoryFinishActivity() {
- Intent retIntent = new Intent();
- retIntent.putExtra(returnDirectoryParameter, path.getAbsolutePath());
- this.setResult(RESULT_OK, retIntent);
- this.finish();
- }// END private void returnDirectoryFinishActivity() {
-
- private void returnFileFinishActivity(String filePath) {
- Intent retIntent = new Intent();
- retIntent.putExtra(returnFileParameter, filePath);
- this.setResult(RESULT_OK, retIntent);
- this.finish();
- }// END private void returnDirectoryFinishActivity() {
-
- private void loadFileList() {
- try {
- path.mkdirs();
- } catch (SecurityException e) {
- Log.e(LOGTAG, "unable to write on the sd card ");
- }
- fileList.clear();
-
- if (path.exists() && path.canRead()) {
- FilenameFilter filter = new FilenameFilter() {
- public boolean accept(File dir, String filename) {
- File sel = new File(dir, filename);
- boolean showReadableFile = showHiddenFilesAndDirs
- || sel.canRead();
- // Filters based on whether the file is hidden or not
- if (currentAction == SELECT_DIRECTORY) {
- return (sel.isDirectory() && showReadableFile);
- }
- if (currentAction == SELECT_FILE) {
-
- // If it is a file check the extension if provided
- if (sel.isFile() && filterFileExtension != null) {
- return (showReadableFile && sel.getName().endsWith(
- filterFileExtension));
- }
- return (showReadableFile);
- }
- return true;
- }// public boolean accept(File dir, String filename) {
- };// FilenameFilter filter = new FilenameFilter() {
-
- String[] fList = path.list(filter);
- this.directoryShownIsEmpty = false;
- for (int i = 0; i < fList.length; i++) {
- // Convert into file path
- File sel = new File(path, fList[i]);
- Log.d(LOGTAG,
- "File:" + fList[i] + " readable:"
- + (Boolean.valueOf(sel.canRead())).toString());
- int drawableID = R.drawable.file_icon;
- boolean canRead = sel.canRead();
- // Set drawables
- if (sel.isDirectory()) {
- if (canRead) {
- drawableID = R.drawable.folder_icon;
- } else {
- drawableID = R.drawable.folder_icon_light;
- }
- }
- fileList.add(i, new Item(fList[i], drawableID, canRead));
- }// for (int i = 0; i < fList.length; i++) {
- if (fileList.size() == 0) {
- // Log.d(LOGTAG, "This directory is empty");
- this.directoryShownIsEmpty = true;
- fileList.add(0, new Item("Directory is empty", -1, true));
- } else {// sort non empty list
- Collections.sort(fileList, new ItemFileNameComparator());
- }
- } else {
- Log.e(LOGTAG, "path does not exist or cannot be read");
- }
- // Log.d(TAG, "loadFileList finished");
- }// private void loadFileList() {
-
- private void createFileListAdapter() {
- adapter = new ArrayAdapter<Item>(this,
- android.R.layout.select_dialog_item, android.R.id.text1,
- fileList) {
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // creates view
- View view = super.getView(position, convertView, parent);
- TextView textView = (TextView) view
- .findViewById(android.R.id.text1);
- // put the image on the text view
- int drawableID = 0;
- if (fileList.get(position).icon != -1) {
- // If icon == -1, then directory is empty
- drawableID = fileList.get(position).icon;
- }
- textView.setCompoundDrawablesWithIntrinsicBounds(drawableID, 0,
- 0, 0);
-
- textView.setEllipsize(null);
-
- // add margin between image and text (support various screen
- // densities)
- // int dp5 = (int) (5 *
- // getResources().getDisplayMetrics().density + 0.5f);
- int dp3 = (int) (3 * getResources().getDisplayMetrics().density + 0.5f);
- // TODO: change next line for empty directory, so text will be
- // centered
- textView.setCompoundDrawablePadding(dp3);
- textView.setBackgroundColor(Color.LTGRAY);
- return view;
- }// public View getView(int position, View convertView, ViewGroup
- };// adapter = new ArrayAdapter<Item>(this,
- }// private createFileListAdapter(){
-
- private class Item {
- public String file;
- public int icon;
- public boolean canRead;
-
- public Item(String file, Integer icon, boolean canRead) {
- this.file = file;
- this.icon = icon;
- }
-
- @Override
- public String toString() {
- return file;
- }
- }// END private class Item {
-
- private class ItemFileNameComparator implements Comparator<Item> {
- public int compare(Item lhs, Item rhs) {
- return lhs.file.toLowerCase().compareTo(rhs.file.toLowerCase());
- }
- }
-
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
- Log.d(LOGTAG, "ORIENTATION_LANDSCAPE");
- } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
- Log.d(LOGTAG, "ORIENTATION_PORTRAIT");
- }
- // Layout apparently changes itself, only have to provide good onMeasure
- // in custom components
- // TODO: check with keyboard
- // if(newConfig.keyboard == Configuration.KEYBOARDHIDDEN_YES)
- }// END public void onConfigurationChanged(Configuration newConfig) {
-
- public static long getFreeSpace(String path) {
- StatFs stat = new StatFs(path);
- long availSize = (long) stat.getAvailableBlocks()
- * (long) stat.getBlockSize();
- return availSize;
- }// END public static long getFreeSpace(String path) {
-
- public static String formatBytes(long bytes) {
- // TODO: add flag to which part is needed (e.g. GB, MB, KB or bytes)
- String retStr = "";
- // One binary gigabyte equals 1,073,741,824 bytes.
- if (bytes > 1073741824) {// Add GB
- long gbs = bytes / 1073741824;
- retStr += (new Long(gbs)).toString() + "GB ";
- bytes = bytes - (gbs * 1073741824);
- }
- // One MB - 1048576 bytes
- if (bytes > 1048576) {// Add GB
- long mbs = bytes / 1048576;
- retStr += (new Long(mbs)).toString() + "MB ";
- bytes = bytes - (mbs * 1048576);
- }
- if (bytes > 1024) {
- long kbs = bytes / 1024;
- retStr += (new Long(kbs)).toString() + "KB";
- bytes = bytes - (kbs * 1024);
- } else
- retStr += (new Long(bytes)).toString() + " bytes";
- return retStr;
- }// public static String formatBytes(long bytes){
-
-}// END public class FileBrowserActivity extends Activity {
diff --git a/navit/android/src/org/navitproject/navit/Navit.java b/navit/android/src/org/navitproject/navit/Navit.java
deleted file mode 100644
index 77a54bc30..000000000
--- a/navit/android/src/org/navitproject/navit/Navit.java
+++ /dev/null
@@ -1,933 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.app.ActivityManager.TaskDescription;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-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;
-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;
-import android.util.DisplayMetrics;
-import android.util.Log;
-import android.view.Display;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-
-public class Navit extends Activity
-{
-
- public NavitDialogs dialogs;
- private PowerManager.WakeLock wl;
- private NavitActivityResult ActivityResults[];
- public static InputMethodManager mgr = null;
- public static DisplayMetrics metrics = null;
- public static int status_bar_height = 0;
- public static int action_bar_default_height = 0;
- public static int navigation_bar_height = 0;
- public static int navigation_bar_height_landscape= 0;
- public static int navigation_bar_width = 0;
- public static Boolean show_soft_keyboard = false;
- public static Boolean show_soft_keyboard_now_showing = false;
- public static long last_pressed_menu_key = 0L;
- public static long time_pressed_menu_key = 0L;
- private static Intent startup_intent = null;
- private static long startup_intent_timestamp = 0L;
- public static String my_display_density = "mdpi";
- public static final int NavitDownloaderSelectMap_id = 967;
- public static final int MAP_NUM_PRIMARY = 11;
- public static final int NavitAddressSearch_id = 70;
- public static final int NavitSelectStorage_id = 43;
- public static String NavitLanguage;
- public static Resources NavitResources = null;
-
- public static final int MAP_NUM_SECONDARY = 12;
- static final String NAVIT_PACKAGE_NAME = "org.navitproject.navit";
- static final String TAG = "Navit";
- static String map_filename_path = null;
- static final String NAVIT_DATA_DIR = "/data/data/" + NAVIT_PACKAGE_NAME;
- static final String NAVIT_DATA_SHARE_DIR = NAVIT_DATA_DIR + "/share";
- 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;
-
-
- /**
- * @brief A Runnable to restore soft input when the user returns to the activity.
- *
- * An instance of this class can be passed to the main message queue in the Activity's
- * {@code onRestore()} method.
- */
- private class SoftInputRestorer implements Runnable {
- public void run() {
- Navit.this.showNativeKeyboard();
- }
- }
-
-
- public void removeFileIfExists(String source) {
- File file = new File(source);
-
- if (!file.exists())
- return;
-
- file.delete();
- }
-
- public void copyFileIfExists(String source, String destination) throws IOException {
- File file = new File(source);
-
- if (!file.exists())
- return;
-
- FileInputStream is = null;
- FileOutputStream os = null;
-
- try {
- is = new FileInputStream(source);
- os = new FileOutputStream(destination);
-
- int len;
- byte buffer[] = new byte[1024];
-
- while ((len = is.read(buffer)) != -1) {
- os.write(buffer, 0, len);
- }
- } finally {
- /* Close the FileStreams to prevent Resource leaks */
- if (is != null)
- is.close();
-
- if (os != null)
- os.close();
- }
- return;
- }
-
-
- public static String _(String in)
- {
- return NavitTextTranslations.get_text(in);
- }
-
- private boolean extractRes(String resname, String result) {
- boolean needs_update = false;
- Log.e(TAG, "Res Name " + resname + ", result " + result);
- int id = NavitResources.getIdentifier(resname, "raw", NAVIT_PACKAGE_NAME);
- Log.e(TAG, "Res ID " + id);
- if (id == 0)
- return false;
-
- File resultfile = new File(result);
- if (!resultfile.exists()) {
- needs_update = true;
- File path = resultfile.getParentFile();
- if ( !path.exists() && !resultfile.getParentFile().mkdirs())
- return false;
- } else {
- PackageManager pm = getPackageManager();
- ApplicationInfo appInfo;
- long apkUpdateTime = 0;
- try {
- appInfo = pm.getApplicationInfo(NAVIT_PACKAGE_NAME, 0);
- apkUpdateTime = new File(appInfo.sourceDir).lastModified();
- } catch (NameNotFoundException e) {
- Log.e(TAG, "Could not read package infos");
- e.printStackTrace();
- }
- if (apkUpdateTime > resultfile.lastModified())
- needs_update = true;
- }
-
- if (needs_update) {
- Log.e(TAG, "Extracting resource");
-
- try {
- InputStream resourcestream = NavitResources.openRawResource(id);
- FileOutputStream resultfilestream = new FileOutputStream(resultfile);
- byte[] buf = new byte[1024];
- int i = 0;
- while ((i = resourcestream.read(buf)) != -1) {
- resultfilestream.write(buf, 0, i);
- }
- resultfilestream.close();
- } catch (Exception e) {
- Log.e(TAG, "Exception " + e.getMessage());
- return false;
- }
- }
- return true;
- }
-
- private void showInfos()
- {
- SharedPreferences settings = getSharedPreferences(NAVIT_PREFS, MODE_PRIVATE);
- boolean firstStart = settings.getBoolean("firstStart", true);
-
- if (firstStart)
- {
- AlertDialog.Builder infobox = new AlertDialog.Builder(this);
- infobox.setTitle(getString(R.string.initial_info_box_title)); // TRANS
- infobox.setCancelable(false);
- final TextView message = new TextView(this);
- message.setFadingEdgeLength(20);
- message.setVerticalFadingEdgeEnabled(true);
- // message.setVerticalScrollBarEnabled(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.initial_info_box_message)); // TRANS
- Linkify.addLinks(s, Linkify.WEB_URLS);
- 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) {
- Log.e("Navit", "Ok, user saw the infobox");
- }
- });
-
- // TRANS
- infobox.setNeutralButton(getString(R.string.initial_info_box_more_info), new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface arg0, int arg1) {
- Log.e("Navit", "user wants more info, show the website");
- String url = "http://wiki.navit-project.org/index.php/Navit_on_Android";
- Intent i = new Intent(Intent.ACTION_VIEW);
- i.setData(Uri.parse(url));
- startActivity(i);
- }
- });
- infobox.show();
- SharedPreferences.Editor edit_settings = settings.edit();
- edit_settings.putBoolean("firstStart", false);
- edit_settings.commit();
- }
- }
-
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB)
- this.requestWindowFeature(Window.FEATURE_NO_TITLE);
- else
- this.getActionBar().hide();
-
- dialogs = new NavitDialogs(this);
-
- NavitResources = getResources();
-
- // only take arguments here, onResume gets called all the time (e.g. when screenblanks, etc.)
- Navit.startup_intent = this.getIntent();
- // hack! Remember time stamps, and only allow 4 secs. later in onResume to set target!
- Navit.startup_intent_timestamp = System.currentTimeMillis();
- Log.e("Navit", "**1**A " + startup_intent.getAction());
- Log.e("Navit", "**1**D " + startup_intent.getDataString());
-
- // init translated text
- NavitTextTranslations.init();
-
- // NOTIFICATION
- // Setup the status bar notification
- // This notification is removed in the exit() function
- NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // Grab a handle to the NotificationManager
- Notification NavitNotification = new Notification(R.drawable.ic_notify, getString(R.string.notification_ticker), System.currentTimeMillis()); // Create a new notification, with the text string to show when the notification first appears
- 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
-
- // Status and navigation bar sizes
- // These are platform defaults and do not change with rotation, but we have to figure out which ones apply
- // (is the navigation bar visible? on the side or at the bottom?)
- Resources resources = getResources();
- int shid = resources.getIdentifier("status_bar_height", "dimen", "android");
- int adhid = resources.getIdentifier("action_bar_default_height", "dimen", "android");
- int nhid = resources.getIdentifier("navigation_bar_height", "dimen", "android");
- int nhlid = resources.getIdentifier("navigation_bar_height_landscape", "dimen", "android");
- int nwid = resources.getIdentifier("navigation_bar_width", "dimen", "android");
- 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 = (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();
- String langu = lang;
- String langc = lang;
- Log.e("Navit", "lang=" + lang);
- int pos = langu.indexOf('_');
- if (pos != -1)
- {
- langc = langu.substring(0, pos);
- NavitLanguage = langc + langu.substring(pos).toUpperCase(locale);
- Log.e("Navit", "substring lang " + NavitLanguage.substring(pos).toUpperCase(locale));
- // set lang. for translation
- NavitTextTranslations.main_language = langc;
- NavitTextTranslations.sub_language = NavitLanguage.substring(pos).toUpperCase(locale);
- }
- else
- {
- String country = locale.getCountry();
- Log.e("Navit", "Country1 " + country);
- Log.e("Navit", "Country2 " + country.toUpperCase(locale));
- NavitLanguage = langc + "_" + country.toUpperCase(locale);
- // set lang. for translation
- NavitTextTranslations.main_language = langc;
- NavitTextTranslations.sub_language = country.toUpperCase(locale);
- }
- Log.e("Navit", "Language " + lang);
-
- SharedPreferences prefs = getSharedPreferences(NAVIT_PREFS,MODE_PRIVATE);
- map_filename_path = prefs.getString("filenamePath", Environment.getExternalStorageDirectory().getPath() + "/navit/");
-
- // make sure the new path for the navitmap.bin file(s) exist!!
- File navit_maps_dir = new File(map_filename_path);
- navit_maps_dir.mkdirs();
-
- // make sure the share dir exists
- File navit_data_share_dir = new File(NAVIT_DATA_SHARE_DIR);
- navit_data_share_dir.mkdirs();
-
- Display display_ = getWindowManager().getDefaultDisplay();
- int width_ = display_.getWidth();
- int height_ = display_.getHeight();
- metrics = new DisplayMetrics();
- display_.getMetrics(Navit.metrics);
- int densityDpi = (int)(( Navit.metrics.density*160)-.5f);
- Log.e("Navit", "Navit -> pixels x=" + width_ + " pixels y=" + height_);
- Log.e("Navit", "Navit -> dpi=" + densityDpi);
- Log.e("Navit", "Navit -> density=" + Navit.metrics.density);
- Log.e("Navit", "Navit -> scaledDensity=" + Navit.metrics.scaledDensity);
-
- ActivityResults = new NavitActivityResult[16];
- setVolumeControlStream(AudioManager.STREAM_MUSIC);
- PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
- wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"NavitDoNotDimScreen");
-
- if (!extractRes(langc, NAVIT_DATA_DIR + "/locale/" + langc + "/LC_MESSAGES/navit.mo"))
- {
- Log.e("Navit", "Failed to extract language resource " + langc);
- }
-
- if (densityDpi <= 120)
- {
- my_display_density = "ldpi";
- }
- else if (densityDpi <= 160)
- {
- my_display_density = "mdpi";
- }
- else if (densityDpi < 240)
- {
- my_display_density = "hdpi";
- }
- else if (densityDpi < 320)
- {
- my_display_density = "xhdpi";
- }
- else if (densityDpi < 480)
- {
- my_display_density = "xxhdpi";
- }
- else if (densityDpi < 640)
- {
- my_display_density = "xxxhdpi";
- }
- else
- {
- Log.e("Navit", "found device of very high density ("+densityDpi+")");
- Log.e("Navit", "using xxxhdpi values");
- my_display_density = "xxxhdpi";
- }
-
- if (!extractRes("navit" + my_display_density, NAVIT_DATA_DIR + "/share/navit.xml"))
- {
- Log.e("Navit", "Failed to extract navit.xml for " + my_display_density);
- }
-
- // --> dont use android.os.Build.VERSION.SDK_INT, needs API >= 4
- Log.e("Navit", "android.os.Build.VERSION.SDK_INT=" + Integer.valueOf(android.os.Build.VERSION.SDK));
- NavitMain(this, NavitLanguage, Integer.valueOf(android.os.Build.VERSION.SDK), my_display_density, NAVIT_DATA_DIR+"/bin/navit",map_filename_path);
-
- showInfos();
-
- Navit.mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- }
-
- @Override
- public void onResume()
- {
- super.onResume();
- Log.d("Navit", "OnResume");
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
- /* Required to make system bars fully transparent */
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
- }
- //InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- // DEBUG
- // intent_data = "google.navigation:q=Wien Burggasse 27";
- // intent_data = "google.navigation:q=48.25676,16.643";
- // intent_data = "google.navigation:ll=48.25676,16.643&q=blabla-strasse";
- // intent_data = "google.navigation:ll=48.25676,16.643";
- if (startup_intent != null)
- {
- if (System.currentTimeMillis() <= Navit.startup_intent_timestamp + 4000L)
- {
- Log.e("Navit", "**2**A " + startup_intent.getAction());
- Log.e("Navit", "**2**D " + startup_intent.getDataString());
- String navi_scheme = startup_intent.getScheme();
- if ( navi_scheme != null && navi_scheme.equals("google.navigation")) {
- parseNavigationURI(startup_intent.getData().getSchemeSpecificPart());
- }
- }
- else {
- Log.e("Navit", "timestamp for navigate_to expired! not using data");
- }
- }
- Log.d(TAG, "onResume");
- if (show_soft_keyboard_now_showing) {
- /* Calling showNativeKeyboard() directly won't work here, we need to use the message queue */
- View cf = getCurrentFocus();
- if (cf == null)
- Log.e(TAG, "no view in focus, can't get a handler");
- else
- cf.getHandler().post(new SoftInputRestorer());
- }
- }
-
- @Override
- public void onPause() {
- super.onPause();
- Log.d(TAG, "onPause");
- if (show_soft_keyboard_now_showing) {
- Log.d(TAG, "onPause:hiding soft input");
- this.hideNativeKeyboard();
- 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("(.*)=(.*)");
- Map<String,String> params = new HashMap<String,String>();
- for (int count=0; count < naviData.length; count++) {
- Matcher m = p.matcher(naviData[count]);
-
- if (m.matches()) {
- params.put(m.group(1), m.group(2));
- }
- }
-
- // d: google.navigation:q=blabla-strasse # (this happens when you are offline, or from contacts)
- // a: google.navigation:ll=48.25676,16.643&q=blabla-strasse
- // c: google.navigation:ll=48.25676,16.643
- // b: google.navigation:q=48.25676,16.643
-
- Float lat;
- Float lon;
- Bundle b = new Bundle();
-
- String geoString = params.get("ll");
- if (geoString != null) {
- String address = params.get("q");
- if (address != null) b.putString("q", address);
- }
- else {
- geoString = params.get("q");
- }
-
- if ( geoString != null) {
- if (geoString.matches("^[+-]{0,1}\\d+(|\\.\\d*),[+-]{0,1}\\d+(|\\.\\d*)$")) {
- String geo[] = geoString.split(",");
- if (geo.length == 2) {
- try {
- lat = Float.valueOf(geo[0]);
- lon = Float.valueOf(geo[1]);
- b.putFloat("lat", lat);
- b.putFloat("lon", lon);
- Message msg = Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_SET_DESTINATION.ordinal());
-
- msg.setData(b);
- msg.sendToTarget();
- Log.e("Navit", "target found (b): " + geoString);
- } catch (NumberFormatException e) { } // nothing to do here
- }
- }
- else {
- start_targetsearch_from_intent(geoString);
- }
- }
- }
-
- public void setActivityResult(int requestCode, NavitActivityResult ActivityResult)
- {
- //Log.e("Navit", "setActivityResult " + requestCode);
- ActivityResults[requestCode] = ActivityResult;
- }
-
- @Override
- public boolean onPrepareOptionsMenu(Menu menu)
- {
- super.onPrepareOptionsMenu(menu);
- //Log.e("Navit","onPrepareOptionsMenu");
- // this gets called every time the menu is opened!!
- // change menu items here!
- menu.clear();
-
- // group-id,item-id,sort order number
- //menu.add(1, 1, 100, getString(R.string.optionsmenu_zoom_in)); //TRANS
- //menu.add(1, 2, 200, getString(R.string.optionsmenu_zoom_out)); //TRANS
-
- menu.add(1, 3, 300, getString(R.string.optionsmenu_download_maps)); //TRANS
- menu.add(1, 5, 400, getString(R.string.optionsmenu_toggle_poi)); //TRANS
-
- menu.add(1, 6, 500, getString(R.string.optionsmenu_address_search)); //TRANS
- menu.add(1, 10, 600, getString(R.string.optionsmenu_set_map_location));
-
- menu.add(1, 99, 900, getString(R.string.optionsmenu_exit_navit)); //TRANS
-
- /* Only show the Backup to SD-Card Option if we really have one */
- if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
- menu.add(1, 7, 700, getString(R.string.optionsmenu_backup_restore)); //TRANS
-
- return true;
- }
-
- // define callback id here
- public static NavitGraphics N_NavitGraphics = null;
-
- // callback id gets set here when called from NavitGraphics
- public static void setKeypressCallback(int kp_cb_id, NavitGraphics ng)
- {
- //Log.e("Navit", "setKeypressCallback -> id1=" + kp_cb_id);
- //Log.e("Navit", "setKeypressCallback -> ng=" + String.valueOf(ng));
- //N_KeypressCallbackID = kp_cb_id;
- N_NavitGraphics = ng;
- }
-
- public static void setMotionCallback(int mo_cb_id, NavitGraphics ng)
- {
- //Log.e("Navit", "setKeypressCallback -> id2=" + mo_cb_id);
- //Log.e("Navit", "setKeypressCallback -> ng=" + String.valueOf(ng));
- //N_MotionCallbackID = mo_cb_id;
- N_NavitGraphics = ng;
- }
-
- public void start_targetsearch_from_intent(String target_address)
- {
- if (target_address == null || target_address.equals(""))
- {
- // empty search string entered
- Toast.makeText(getApplicationContext(), getString(R.string.address_search_not_found), Toast.LENGTH_LONG).show(); //TRANS
- }
- else
- {
- Intent search_intent = new Intent(this, NavitAddressSearchActivity.class);
- search_intent.putExtra("search_string", target_address);
- this.startActivityForResult(search_intent, NavitAddressSearch_id);
- }
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item)
- {
- runOptionsItem(item.getItemId());
- return true;
- }
-
- public void runOptionsItem(int id)
- {
- // Handle item selection
- switch (id)
- {
- case 1 :
- // zoom in
- Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_ZOOM_IN.ordinal()).sendToTarget();
- // if we zoom, hide the bubble
- Log.e("Navit", "onOptionsItemSelected -> zoom in");
- break;
- case 2 :
- // zoom out
- Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_ZOOM_OUT.ordinal()).sendToTarget();
- // if we zoom, hide the bubble
- Log.e("Navit", "onOptionsItemSelected -> zoom out");
- break;
- case 3 :
- // map download menu
- Intent map_download_list_activity = new Intent(this, NavitDownloadSelectMapActivity.class);
- startActivityForResult(map_download_list_activity, Navit.NavitDownloaderSelectMap_id);
- break;
- case 5 :
- // toggle the normal POI layers and labels (to avoid double POIs)
- Message msg = Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_CALL_CMD.ordinal());
- Bundle b = new Bundle();
- b.putString("cmd", "toggle_layer(\"POI Symbols\");");
- msg.setData(b);
- msg.sendToTarget();
-
- msg = Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_CALL_CMD.ordinal());
- b = new Bundle();
- b.putString("cmd", "toggle_layer(\"POI Labels\");");
- msg.setData(b);
- msg.sendToTarget();
-
- // toggle full POI icons on/off
- msg = Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_CALL_CMD.ordinal());
- b = new Bundle();
- b.putString("cmd", "toggle_layer(\"Android-POI-Icons-full\");");
- msg.setData(b);
- msg.sendToTarget();
-
- break;
- case 6 :
- // ok startup address search activity
- Intent search_intent = new Intent(this, NavitAddressSearchActivity.class);
- this.startActivityForResult(search_intent, NavitAddressSearch_id);
- break;
- case 7 :
- /* Backup / Restore */
- showDialog(NavitDialogs.DIALOG_BACKUP_RESTORE);
- break;
- case 10:
- setMapLocation();
- break;
- case 99 :
- // exit
- this.onStop();
- this.exit();
- break;
- }
- }
-
-
- /**
- * @brief Shows the Options menu.
- *
- * Calling this method has the same effect as pressing the hardware Menu button, where present, or touching
- * the overflow button in the Action bar.
- */
- public void showMenu() {
- openOptionsMenu();
- }
-
-
- /**
- * @brief Shows the native keyboard or other input method.
- *
- * @return {@code true} if an input method is going to be displayed, {@code false} if not
- */
- public int showNativeKeyboard() {
- /*
- * Apologies for the huge mess that this function is, but Android's soft input API is a big
- * nightmare. Its devs have mercifully given us an option to show or hide the keyboard, but
- * there is no reliable way to figure out if it is actually showing, let alone how much of the
- * screen it occupies, so our best bet is guesswork.
- */
- Configuration config = getResources().getConfiguration();
- if ((config.keyboard == Configuration.KEYBOARD_QWERTY) && (config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO))
- /* physical keyboard present, exit */
- return 0;
-
- /* Use SHOW_FORCED here, else keyboard won't show in landscape mode */
- mgr.showSoftInput(getCurrentFocus(), InputMethodManager.SHOW_FORCED);
- show_soft_keyboard_now_showing = true;
-
- /*
- * Crude way to estimate the height occupied by the keyboard: for AOSP on KitKat and Lollipop it
- * is about 62-63% of available screen width (in portrait mode) but no more than slightly above
- * 46% of height (in landscape mode).
- */
- Display display_ = getWindowManager().getDefaultDisplay();
- int width_ = display_.getWidth();
- int height_ = display_.getHeight();
- int maxHeight = height_ * 47 / 100;
- int inputHeight = width_ * 63 / 100;
- if (inputHeight > (maxHeight))
- inputHeight = maxHeight;
-
- /* the receiver isn't going to fire before the UI thread becomes idle, well after this method returns */
- Log.d(TAG, "showNativeKeyboard:return (assuming true)");
- return inputHeight;
- }
-
-
- /**
- * @brief Hides the native keyboard or other input method.
- */
- public void hideNativeKeyboard() {
- mgr.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
- show_soft_keyboard_now_showing = false;
- }
-
-
- void setDestination(float latitude, float longitude, String address) {
- Toast.makeText( getApplicationContext(),getString(R.string.address_search_set_destination) + "\n" + address, Toast.LENGTH_LONG).show(); //TRANS
-
- Message msg = Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_SET_DESTINATION.ordinal());
- Bundle b = new Bundle();
- b.putFloat("lat", latitude);
- b.putFloat("lon", longitude);
- b.putString("q", address);
- msg.setData(b);
- msg.sendToTarget();
- }
-
- protected void onActivityResult(int requestCode, int resultCode, Intent data)
- {
- switch (requestCode)
- {
- case Navit.NavitDownloaderSelectMap_id :
- if (resultCode == Activity.RESULT_OK)
- {
- Message msg = dialogs.obtainMessage(NavitDialogs.MSG_START_MAP_DOWNLOAD
- , data.getIntExtra("map_index", -1), 0);
- msg.sendToTarget();
- }
- break;
- case NavitAddressSearch_id :
- if (resultCode == Activity.RESULT_OK) {
- Bundle destination = data.getExtras();
- Toast.makeText( getApplicationContext(),getString(R.string.address_search_set_destination) + "\n" + destination.getString(("q")), Toast.LENGTH_LONG).show(); //TRANS
-
- Message msg = Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_SET_DESTINATION.ordinal());
- msg.setData(destination);
- msg.sendToTarget();
- }
- break;
- case NavitSelectStorage_id :
- if(resultCode == RESULT_OK) {
- String newDir = data.getStringExtra(FileBrowserActivity.returnDirectoryParameter);
- Log.d(TAG, "selected path= "+newDir);
- if(!newDir.contains("/navit"))
- newDir = newDir+"/navit/";
- else
- newDir = newDir+"/";
- SharedPreferences prefs = this.getSharedPreferences(NAVIT_PREFS,MODE_PRIVATE);
- SharedPreferences.Editor prefs_editor = prefs.edit();
- prefs_editor.putString("filenamePath", newDir);
- prefs_editor.commit();
- Toast.makeText(this, String.format(Navit._("New location set to %s\nRestart Navit to apply the changes."),newDir),Toast.LENGTH_LONG).show();
- }
- else Log.w(TAG, "select path failed");
- break;
- default :
- //Log.e("Navit", "onActivityResult " + requestCode + " " + resultCode);
- ActivityResults[requestCode].onActivityResult(requestCode, resultCode, data);
- break;
- }
- }
-
- @Override
- protected void onPrepareDialog(int id, Dialog dialog) {
- dialogs.prepareDialog(id, dialog);
- super.onPrepareDialog(id, dialog);
- }
-
- protected Dialog onCreateDialog(int id)
- {
- return dialogs.createDialog(id);
- }
-
- @Override
- public boolean onSearchRequested() {
- /* Launch the internal Search Activity */
- Intent search_intent = new Intent(this, NavitAddressSearchActivity.class);
- this.startActivityForResult(search_intent, NavitAddressSearch_id);
-
- return true;
- }
-
- public boolean setMapLocation()
- {
- Intent fileExploreIntent = new Intent(this,FileBrowserActivity.class);
- fileExploreIntent
- .putExtra(FileBrowserActivity.startDirectoryParameter, "/mnt")
- .setAction(FileBrowserActivity.INTENT_ACTION_SELECT_DIR);
- startActivityForResult(fileExploreIntent,NavitSelectStorage_id);
-
- return true;
- }
-
- @Override
- public void onDestroy()
- {
- super.onDestroy();
- Log.e("Navit", "OnDestroy");
- // TODO next call will kill our app the hard way. This should not be necessary, but ensures navit is
- // properly restarted and no resources are wasted with navit in background. Remove this call after
- // code review
- NavitDestroy();
- }
-
- public void fullscreen(int fullscreen) {
- int w, h;
-
- isFullscreen = (fullscreen != 0);
- if (isFullscreen) {
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
- }
- else {
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
- getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- }
-
- Display display_ = getWindowManager().getDefaultDisplay();
- if (Build.VERSION.SDK_INT < 17) {
- w = display_.getWidth();
- h = display_.getHeight();
- } else {
- Point size = new Point();
- display_.getRealSize(size);
- w = size.x;
- h = size.y;
- }
- Log.d(TAG, String.format("Toggle fullscreen, w=%d, h=%d", w, h));
- N_NavitGraphics.handleResize(w, h);
- }
-
- public void disableSuspend()
- {
- wl.acquire();
- wl.release();
- }
-
- public void exit()
- {
-// NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
-// nm.cancel(R.string.app_name);
- NavitVehicle.removeListener();
- NavitDestroy();
- }
-
- public native void NavitMain(Navit x, String lang, int version, String display_density_string, String path, String path2);
- public native void NavitDestroy();
-
- /*
- * this is used to load the 'navit' native library on
- * application startup. The library has already been unpacked at
- * installation time by the package manager.
- */
- static
- {
- System.loadLibrary("navit");
- }
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitActivityResult.java b/navit/android/src/org/navitproject/navit/NavitActivityResult.java
deleted file mode 100644
index 63b4e798f..000000000
--- a/navit/android/src/org/navitproject/navit/NavitActivityResult.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package org.navitproject.navit;
-import android.content.Intent;
-
-public interface NavitActivityResult {
- public void onActivityResult(int requestCode, int resultCode, Intent data);
-};
diff --git a/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java b/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java
deleted file mode 100644
index d3989cf48..000000000
--- a/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Locale;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.ProgressDialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.util.Log;
-import android.util.TypedValue;
-import android.view.Gravity;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.EditText;
-import android.widget.ImageButton;
-import android.widget.LinearLayout;
-import android.widget.ListView;
-import android.widget.RelativeLayout;
-import android.widget.Toast;
-import android.widget.RelativeLayout.LayoutParams;
-import android.widget.TextView;
-
-public class NavitAddressSearchActivity extends Activity {
- public static final class NavitAddress {
- public NavitAddress(int type, float latitude, float longitude, String address) {
- result_type = type;
- lat = latitude;
- lon = longitude;
- addr = address;
- }
-
- int result_type;
- float lat;
- float lon;
- String addr;
- }
-
- private static final String TAG = "NavitAddress";
- private static final int ADDRESS_RESULT_PROGRESS_MAX = 10;
-
- private List<NavitAddress> Addresses_found = null;
- private List<NavitAddress> addresses_shown = null;
- private String mAddressString = "";
- private boolean mPartialSearch = false;
- private String mCountry;
- private ImageButton mCountryButton;
- ProgressDialog search_results_wait = null;
- public RelativeLayout NavitAddressSearchActivity_layout;
- private int search_results_towns = 0;
- private int search_results_streets = 0;
- private int search_results_streets_hn = 0;
- private long search_handle = 0;
-
- // TODO remember settings
- private static String last_address_search_string = "";
- private static Boolean last_address_partial_match = false;
- private static String last_country = "";
-
- private int getDrawableID(String resourceName) {
- int drawableId = 0;
- try {
- Class<?> res = R.drawable.class;
- Field field = res.getField(resourceName);
- drawableId = field.getInt(null);
- } catch (Exception e) {
- Log.e("NavitAddressSearch", "Failure to get drawable id.", e);
- }
- return drawableId;
- }
-
- private void setCountryButtonImage() {
- // We have all images stored as drawable_nodpi resources which allows native code to manipulate them
- // without interference with android builtin choosing and scaling system. But that makes us to
- // reinvent the wheel here to show an image in android native interface.
- int flag_icon_sizes[]={24,32,48,64,96};
- int exact_size, nearest_size;
- exact_size=(int)(Navit.metrics.density*24.0 -.5);
- nearest_size=flag_icon_sizes[0];
- for(int size: flag_icon_sizes) {
- nearest_size=size;
- if(exact_size<=size)
- break;
- }
- mCountryButton.setImageResource(getDrawableID("country_" + mCountry+"_"+nearest_size+"_"+nearest_size));
- }
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- Bundle extras = getIntent().getExtras();
- if ( extras != null )
- {
- String search_string = extras.getString(("search_string"));
- if (search_string != null) {
- mPartialSearch = true;
- mAddressString = search_string;
- executeSearch();
- return;
- }
- }
-
- mPartialSearch = last_address_partial_match;
- mAddressString = last_address_search_string;
-
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
- LinearLayout panel = new LinearLayout(this);
- panel.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
- panel.setOrientation(LinearLayout.VERTICAL);
-
- // address: label and text field
- SharedPreferences settings = getSharedPreferences(Navit.NAVIT_PREFS, MODE_PRIVATE);
- mCountry = settings.getString(("DefaultCountry") , null);
-
- if (mCountry == null) {
- Locale defaultLocale = Locale.getDefault();
- mCountry = defaultLocale.getCountry().toLowerCase(defaultLocale);
- SharedPreferences.Editor edit_settings = settings.edit();
- edit_settings.putString("DefaultCountry", mCountry);
- edit_settings.commit();
- }
-
- mCountryButton = new ImageButton(this);
-
- setCountryButtonImage();
-
- mCountryButton.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- requestCountryDialog();
- }
- });
-
- // address: label and text field
- TextView addr_view = new TextView(this);
- addr_view.setText(Navit._("Enter Destination")); // TRANS
- addr_view.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20f);
- addr_view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
- addr_view.setPadding(4, 4, 4, 4);
-
- // partial match checkbox
- final CheckBox checkboxPartialMatch = new CheckBox(this);
- checkboxPartialMatch.setText(Navit._("partial match")); // TRANS
- checkboxPartialMatch.setChecked(last_address_partial_match);
- checkboxPartialMatch.setGravity(Gravity.CENTER);
-
- final EditText address_string = new EditText(this);
- address_string.setText(last_address_search_string);
- address_string.setSelectAllOnFocus(true);
-
- // search button
- final Button btnSearch = new Button(this);
- btnSearch.setText(Navit._("Search")); // TRANS
- btnSearch.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
- btnSearch.setGravity(Gravity.CENTER);
- btnSearch.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- mPartialSearch = checkboxPartialMatch.isChecked();
- mAddressString = address_string.getText().toString();
- last_address_partial_match = mPartialSearch;
- last_address_search_string = mAddressString;
- executeSearch();
- }
- });
-
- ListView lastAddresses = new ListView(this);
- NavitAppConfig navitConfig = (NavitAppConfig) getApplicationContext();
-
- final List<NavitAddress> addresses = navitConfig.getLastAddresses();
- int addressCount = addresses.size();
- if (addressCount > 0) {
- String[] strAddresses = new String[addressCount];
- for (int addrIndex = 0; addrIndex < addressCount; addrIndex++) {
- strAddresses[addrIndex] = addresses.get(addrIndex).addr;
- }
- ArrayAdapter<String> addressList =
- new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strAddresses);
- lastAddresses.setAdapter(addressList);
- lastAddresses.setOnItemClickListener(new OnItemClickListener() {
- public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
- NavitAddress addressSelected = addresses.get(arg2);
- Intent resultIntent = new Intent();
-
- resultIntent.putExtra("lat", addressSelected.lat);
- resultIntent.putExtra("lon", addressSelected.lon);
- resultIntent.putExtra("q", addressSelected.addr);
-
- setResult(Activity.RESULT_OK, resultIntent);
- finish();
- }
- });
- }
-
- String title = getString(R.string.address_search_title);
-
- if (title != null && title.length() > 0)
- this.setTitle(title);
-
- LinearLayout searchSettingsLayout = new LinearLayout(this);
- searchSettingsLayout.setOrientation(LinearLayout.HORIZONTAL);
-
- searchSettingsLayout.addView(mCountryButton);
- searchSettingsLayout.addView(checkboxPartialMatch);
- panel.addView(addr_view);
- panel.addView(address_string);
- panel.addView(searchSettingsLayout);
- panel.addView(btnSearch);
- panel.addView(lastAddresses);
-
- setContentView(panel);
- }
-
- private void requestCountryDialog() {
- final String[][] all_countries = NavitGraphics.GetAllCountries();
-
- Comparator<String[]> country_comperator = new Comparator<String[]>() {
- public int compare(String[] object1, String[] object2) {
- return object1[1].compareTo(object2[1]);
- }
- };
-
- Arrays.sort(all_countries, country_comperator);
-
- AlertDialog.Builder mapModeChooser = new AlertDialog.Builder(this);
- // ToDo also show icons and country code
- String[] country_name = new String[all_countries.length];
-
- for (int country_index = 0; country_index < all_countries.length; country_index++) {
- country_name[country_index] = all_countries[country_index][1];
- }
-
- mapModeChooser.setItems(country_name, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int item) {
- SharedPreferences settings = getSharedPreferences(Navit.NAVIT_PREFS, MODE_PRIVATE);
- mCountry = all_countries[item][0];
- SharedPreferences.Editor edit_settings = settings.edit();
- edit_settings.putString("DefaultCountry", mCountry);
- edit_settings.commit();
-
- setCountryButtonImage();
- }
- });
-
- AlertDialog d=mapModeChooser.create();
- d.getListView().setFastScrollEnabled(true);
- d.show();
- }
-
- /**
- * start a search on the map
- */
- public void receiveAddress(int type, float latitude, float longitude, String address) {
- Log.e(TAG, "(" + String.valueOf(latitude) + ", " + String.valueOf(longitude) + ") " + address);
-
- switch (type) {
- case 0:
- search_results_towns++;
- break;
- case 1:
- search_results_streets++;
- break;
- case 2:
- search_results_streets_hn++;
- break;
-
- }
- search_results_wait.setMessage(Navit._("Towns") + ":" + search_results_towns + " "
- + Navit._("Streets") + ":" + search_results_streets + "/"
- + search_results_streets_hn);
-
- search_results_wait.setProgress(Addresses_found.size() % (ADDRESS_RESULT_PROGRESS_MAX + 1));
-
- Addresses_found.add(new NavitAddress(type, latitude, longitude, address));
- }
-
- public void finishAddressSearch() {
- if (Addresses_found.isEmpty()) {
- Toast.makeText( getApplicationContext(),getString(R.string.address_search_not_found) + "\n" + mAddressString, Toast.LENGTH_LONG).show(); //TRANS
- setResult(Activity.RESULT_CANCELED);
- finish();
- }
- ListView addressesFound = new ListView(this);
- addressesFound.setFastScrollEnabled(true);
- ArrayAdapter<String> addressList =
- new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
-
- addresses_shown = new ArrayList<NavitAddress>();
-
- for (NavitAddress currentAddress : Addresses_found) {
- if (currentAddress.result_type != 0 || search_results_streets == 0) {
- addressList.add(currentAddress.addr);
- addresses_shown.add(currentAddress);
- }
- }
-
- addressesFound.setAdapter(addressList);
-
- addressesFound.setOnItemClickListener(new OnItemClickListener() {
- public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
- NavitAddress addressSelected = addresses_shown.get(arg2);
- Intent resultIntent = new Intent();
-
- resultIntent.putExtra("lat", addressSelected.lat);
- resultIntent.putExtra("lon", addressSelected.lon);
- resultIntent.putExtra("q", addressSelected.addr);
-
- setResult(Activity.RESULT_OK, resultIntent);
- finish();
- }
- });
-
- setContentView(addressesFound);
- search_results_wait.dismiss();
- }
-
- public native long CallbackStartAddressSearch(int partial_match, String country, String s);
- public native void CallbackCancelAddressSearch(long handle);
-
- @Override
- protected Dialog onCreateDialog(int id) {
- search_results_wait = new ProgressDialog(this);
- search_results_wait.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- search_results_wait.setTitle("Loading search results");
- search_results_wait.setMessage("--");
- search_results_wait.setCancelable(true);
- search_results_wait.setProgress(0);
- search_results_wait.setMax(10);
-
- Addresses_found = new ArrayList<NavitAddress>();
- search_results_towns = 0;
- search_results_streets = 0;
- search_results_streets_hn = 0;
-
- search_handle = CallbackStartAddressSearch(mPartialSearch ? 1 : 0, mCountry, mAddressString);
-
- search_results_wait.setOnCancelListener(new DialogInterface.OnCancelListener() {
- @Override
- public void onCancel(DialogInterface dialog) {
- CallbackCancelAddressSearch(search_handle);
- search_handle = 0;
- search_results_wait.dismiss();
- }
- });
- return search_results_wait;
- }
-
- void executeSearch() {
- showDialog(0);
- }
-}
-
diff --git a/navit/android/src/org/navitproject/navit/NavitAppConfig.java b/navit/android/src/org/navitproject/navit/NavitAppConfig.java
deleted file mode 100755
index 13ccc9bb4..000000000
--- a/navit/android/src/org/navitproject/navit/NavitAppConfig.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.navitproject.navit;
-
-import java.util.ArrayList;
-import java.util.List;
-
-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(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;
- private static final String TAG = "Navit";
-
- private List<NavitAddress> mLastAddresses = null;
- private int mLastAddressField;
- private SharedPreferences mSettings;
-
- @Override
- public void onCreate() {
- // call ACRA.init(this) as reflection, because old ant may forgot to include it
- try {
- Class<?> acraClass = Class.forName("org.acra.ACRA");
- Class<?> partypes[] = new Class[1];
- partypes[0] = Application.class;
- java.lang.reflect.Method initMethod = acraClass.getMethod("init", partypes);
- Object arglist[] = new Object[1];
- arglist[0] = this;
- initMethod.invoke(null, arglist);
- } catch (Exception e1) {
- Log.e(TAG, "Could not init ACRA crash reporter");
- }
-
- mSettings = getSharedPreferences(Navit.NAVIT_PREFS, MODE_PRIVATE);
- super.onCreate();
- }
-
- public List<NavitAddress> getLastAddresses() {
- if (mLastAddresses == null) {
- mLastAddresses = new ArrayList<NavitAddress>();
- int mLastAddressField = mSettings.getInt("LastAddress", -1);
- if (mLastAddressField >= 0) {
- int index = mLastAddressField;
- do {
- String addr_str = mSettings.getString("LastAddress_" + String.valueOf(index), "");
-
- if (addr_str.length() > 0) {
- mLastAddresses.add(new NavitAddress(
- 1,
- mSettings.getFloat("LastAddress_Lat_" + String.valueOf(index), 0),
- mSettings.getFloat("LastAddress_Lon_" + String.valueOf(index), 0),
- addr_str));
- }
-
- if (--index < 0) index = MAX_LAST_ADDRESSES - 1;
-
- } while (index != mLastAddressField);
- }
- }
- return mLastAddresses;
- }
-
- public void addLastAddress(NavitAddress newAddress) {
- getLastAddresses();
-
- mLastAddresses.add(newAddress);
- if (mLastAddresses.size() > MAX_LAST_ADDRESSES) mLastAddresses.remove(0);
-
- mLastAddressField++;
- if (mLastAddressField >= MAX_LAST_ADDRESSES) mLastAddressField = 0;
-
- SharedPreferences.Editor editSettings = mSettings.edit();
-
- editSettings.putInt("LastAddress", mLastAddressField);
- editSettings.putString("LastAddress_" + String.valueOf(mLastAddressField), newAddress.addr);
- editSettings.putFloat("LastAddress_Lat_" + String.valueOf(mLastAddressField), newAddress.lat);
- editSettings.putFloat("LastAddress_Lon_" + String.valueOf(mLastAddressField), newAddress.lon);
-
- editSettings.commit();
- }
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitBackupTask.java b/navit/android/src/org/navitproject/navit/NavitBackupTask.java
deleted file mode 100644
index ca52ee46e..000000000
--- a/navit/android/src/org/navitproject/navit/NavitBackupTask.java
+++ /dev/null
@@ -1,126 +0,0 @@
-
-package org.navitproject.navit;
-
-import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.os.AsyncTask;
-import android.os.Environment;
-import android.text.format.Time;
-import android.widget.Toast;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-
-public class NavitBackupTask extends AsyncTask<Void, Void, String> {
-
- private Navit mActivity;
-
- private ProgressDialog mDialog;
-
- public NavitBackupTask(Navit context) {
- mActivity = context;
- }
-
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
-
- /* Create a Wait Progress Dialog to inform the User that we are working */
- mDialog = new ProgressDialog(mActivity);
- mDialog.setIndeterminate(true);
- mDialog.setMessage(mActivity.getString(R.string.backing_up));
- mDialog.show();
- }
-
- @Override
- protected String doInBackground(Void... v) {
- Time now = new Time();
- now.setToNow();
-
- /* This is the Directory where all Subdirectories are stored by date */
- File mainBackupDir = new File(Environment.getExternalStorageDirectory().getPath() + "/navit/backup/");
-
- /* Create the Main Backup Directory if it doesn't exist */
- if (!mainBackupDir.isDirectory()) {
- if (!mainBackupDir.mkdirs())
- return mActivity.getString(R.string.failed_to_create_backup_directory);
- }
-
- /* Create a Timestamp in the format YYYY-MM-DD-Index */
- String timestamp = now.year + "-" + String.format("%02d", now.month+1) + "-" + String.format("%02d", now.monthDay);
- /* Get the next free index */
- int index = 1;
- for (String s : mainBackupDir.list()) {
- if (s.contains(timestamp)) {
- int newIndex = Integer.parseInt(s.substring(11));
- if (newIndex >= index)
- index = newIndex + 1;
- }
- }
- timestamp += "-" + index;
-
- /* This is the Directory in which the Files are copied into */
- File backupDir = new File(Environment.getExternalStorageDirectory().getPath() + "/navit/backup/" + timestamp);
-
- /* Create the Backup Directory if it doesn't exist */
- if (!backupDir.isDirectory()) {
- if (!backupDir.mkdirs())
- return mActivity.getString(R.string.failed_to_create_backup_directory);
- }
-
- ObjectOutputStream preferencesOOs = null;
- try {
- /* Backup Files in home */
- mActivity.copyFileIfExists(Navit.NAVIT_DATA_DIR + "/home/bookmark.txt", backupDir.getPath() + "/bookmark.txt");
- mActivity.copyFileIfExists(Navit.NAVIT_DATA_DIR + "/home/destination.txt", backupDir.getPath() + "/destination.txt");
- mActivity.copyFileIfExists(Navit.NAVIT_DATA_DIR + "/home/gui_internal.txt", backupDir.getPath() + "/gui_internal.txt");
-
- /* Backup Shared Preferences */
- preferencesOOs = new ObjectOutputStream(new FileOutputStream(backupDir.getPath() + "/preferences.bak"));
- preferencesOOs.writeObject(mActivity.getSharedPreferences(Navit.NAVIT_PREFS, Context.MODE_PRIVATE).getAll());
- }
- catch (IOException e) {
- e.printStackTrace();
- return mActivity.getString(R.string.backup_failed);
- }
- finally {
- /* Close Stream to prevent Resource Leaks */
- try {
- if (preferencesOOs != null)
- preferencesOOs.close();
- }
- catch (IOException e) {
- e.printStackTrace();
- return mActivity.getString(R.string.backup_failed);
- }
- }
-
- return null;
- }
-
- @Override
- protected void onPostExecute(String result) {
- super.onPostExecute(result);
-
- /* Dismiss the Wait Progress Dialog */
- mDialog.dismiss();
-
- /* If result is non null an Error occured */
- if (result != null) {
- Toast.makeText(mActivity, result, Toast.LENGTH_LONG).show();
- return;
- }
-
- Toast.makeText(mActivity, mActivity.getString(R.string.backup_successful), Toast.LENGTH_LONG).show();
- }
-
- @Override
- protected void onCancelled() {
- super.onCancelled();
- Toast.makeText(mActivity, mActivity.getString(R.string.backup_failed), Toast.LENGTH_LONG).show();
- mDialog.dismiss();
- }
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitCamera.java b/navit/android/src/org/navitproject/navit/NavitCamera.java
deleted file mode 100644
index bd78b36b2..000000000
--- a/navit/android/src/org/navitproject/navit/NavitCamera.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * 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.
- */
-package org.navitproject.navit;
-
-import java.io.IOException;
-
-import android.content.Context;
-import android.hardware.Camera;
-import android.util.Log;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-
-
-
-
-public class NavitCamera extends SurfaceView implements SurfaceHolder.Callback {
- SurfaceHolder mHolder;
- Camera mCamera;
-
-
-
- NavitCamera(Context context)
- {
- super(context);
- mHolder = getHolder();
- mHolder.addCallback(this);
- mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
- Log.e("NavitCamera","Creator");
-
-
- }
-
-
- public void surfaceCreated(SurfaceHolder holder) {
- // The Surface has been created, acquire the camera and tell it where
- // to draw.
- try {
- mCamera = Camera.open();
- mCamera.setPreviewDisplay(holder);
- } catch (IOException exception) {
- mCamera.release();
- mCamera = null;
- // TODO: add more exception handling logic here
- }
- Log.e("NavitCamera","surfaceCreated");
- }
-
- public void surfaceDestroyed(SurfaceHolder holder) {
- // Surface will be destroyed when we return, so stop the preview.
- // Because the CameraDevice object is not a shared resource, it's very
- // important to release it when the activity is paused.
- mCamera.stopPreview();
- mCamera = null;
- Log.e("NavitCamera","surfaceDestroyed");
- }
-
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- // Now that the size is known, set up the camera parameters and begin
- // the preview.
- Log.e("NavitCamera","surfaceChanged "+w+"x"+h);
- mCamera.stopPreview();
- Camera.Parameters parameters = mCamera.getParameters();
- parameters.setPreviewSize(w, h);
- mCamera.setParameters(parameters);
- mCamera.startPreview();
- }
-
-}
-
diff --git a/navit/android/src/org/navitproject/navit/NavitDialogs.java b/navit/android/src/org/navitproject/navit/NavitDialogs.java
deleted file mode 100644
index f50672ebd..000000000
--- a/navit/android/src/org/navitproject/navit/NavitDialogs.java
+++ /dev/null
@@ -1,218 +0,0 @@
-package org.navitproject.navit;
-
-
-import java.io.File;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.ProgressDialog;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
-import android.widget.ArrayAdapter;
-import android.widget.Toast;
-import android.os.Environment;
-
-public class NavitDialogs extends Handler{
- // Dialogs
- public static final int DIALOG_MAPDOWNLOAD = 1;
- public static final int DIALOG_BACKUP_RESTORE = 2;
- public static final int DIALOG_SELECT_BACKUP = 3;
-
- // dialog messages
- static final int MSG_MAP_DOWNLOAD_FINISHED = 0;
- static final int MSG_PROGRESS_BAR = 1;
- static final int MSG_TOAST = 2;
- static final int MSG_TOAST_LONG = 3;
- static final int MSG_POSITION_MENU = 6;
- static final int MSG_START_MAP_DOWNLOAD = 7;
- static final int MSG_REMOVE_DIALOG_GENERIC = 99;
- static Handler mHandler;
-
- private ProgressDialog mapdownloader_dialog = null;
- private NavitMapDownloader mapdownloader = null;
-
- private Navit mActivity;
-
- public NavitDialogs(Navit activity) {
- super();
- mActivity = activity;
- mHandler = this;
- }
-
- static public void sendDialogMessage(int what, String title, String text, int dialog_num, int value1, int value2)
- {
- Message msg = mHandler.obtainMessage(what);
- Bundle data = new Bundle();
-
- data.putString("title", title);
- data.putString("text", text);
- data.putInt("value1", value1);
- data.putInt("value2", value2);
- data.putInt("dialog_num", dialog_num);
- msg.setData(data);
-
- mHandler.sendMessage(msg);
- }
-
- @Override
- public void handleMessage(Message msg)
- {
- switch (msg.what)
- {
- case MSG_MAP_DOWNLOAD_FINISHED :
- {
- // dismiss dialog, remove dialog
- mActivity.dismissDialog(DIALOG_MAPDOWNLOAD);
- mActivity.removeDialog(DIALOG_MAPDOWNLOAD);
- if (msg.getData().getInt("value1") == 1) {
- Message msg_out =
- Message.obtain(Navit.N_NavitGraphics.callback_handler,
- NavitGraphics.msg_type.CLB_LOAD_MAP.ordinal());
- msg_out.setData(msg.getData());
- msg_out.sendToTarget();
-
- msg_out = Message.obtain(Navit.N_NavitGraphics.callback_handler,
- NavitGraphics.msg_type.CLB_CALL_CMD.ordinal());
- Bundle b = new Bundle();
- int mi=msg.getData().getInt("value2");
- double lon=(Double.parseDouble(NavitMapDownloader.osm_maps[mi].lon1)+Double.parseDouble(NavitMapDownloader.osm_maps[mi].lon2))/2.0;
- double lat=(Double.parseDouble(NavitMapDownloader.osm_maps[mi].lat1)+Double.parseDouble(NavitMapDownloader.osm_maps[mi].lat2))/2.0;
- b.putString("cmd", "set_center(\""+ lon +" "+ lat + "\",1); zoom=256");
- msg_out.setData(b);
- msg_out.sendToTarget();
- }
- break;
- }
- case MSG_PROGRESS_BAR :
- // change progressbar values
- mapdownloader_dialog.setMax(msg.getData().getInt("value1"));
- mapdownloader_dialog.setProgress(msg.getData().getInt("value2"));
- mapdownloader_dialog.setTitle(msg.getData().getString(("title")));
- mapdownloader_dialog.setMessage(msg.getData().getString(("text")));
- break;
- case MSG_TOAST :
- Toast.makeText(mActivity, msg.getData().getString(("text")), Toast.LENGTH_SHORT).show();
- break;
- case MSG_TOAST_LONG :
- Toast.makeText(mActivity, msg.getData().getString(("text")), Toast.LENGTH_LONG).show();
- break;
- case MSG_START_MAP_DOWNLOAD:
- {
- int download_map_id = msg.arg1;
- Log.d("Navit", "PRI id=" + download_map_id);
- // set map id to download
-
- // show the map download progressbar, and download the map
- if (download_map_id > -1)
- {
- mapdownloader = new NavitMapDownloader(download_map_id);
- mActivity.showDialog(NavitDialogs.DIALOG_MAPDOWNLOAD);
- mapdownloader.start();
- }
- }
- break;
- case MSG_REMOVE_DIALOG_GENERIC :
- // dismiss dialog, remove dialog - generic
- mActivity.dismissDialog(msg.getData().getInt("dialog_num"));
- mActivity.removeDialog(msg.getData().getInt("dialog_num"));
- break;
- }
- }
-
- Dialog createDialog(int id)
- {
- AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
-
- switch (id)
- {
- case DIALOG_MAPDOWNLOAD :
- mapdownloader_dialog = new ProgressDialog(mActivity);
- mapdownloader_dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- mapdownloader_dialog.setTitle("--");
- mapdownloader_dialog.setMessage("--");
- mapdownloader_dialog.setCancelable(true);
- mapdownloader_dialog.setProgress(0);
- mapdownloader_dialog.setMax(200);
- DialogInterface.OnDismissListener onDismissListener = new DialogInterface.OnDismissListener()
- {
- public void onDismiss(DialogInterface dialog)
- {
- Log.e("Navit", "onDismiss: mapdownloader_dialog");
- if(mapdownloader!=null)
- mapdownloader.stop_thread();
- }
- };
- mapdownloader_dialog.setOnDismissListener(onDismissListener);
- // show license for OSM maps
- Toast.makeText(mActivity.getApplicationContext(),
- Navit._("Map data (c) OpenStreetMap contributors, ODBL"),
- Toast.LENGTH_LONG).show(); //TRANS
- return mapdownloader_dialog;
-
- case DIALOG_BACKUP_RESTORE :
- /* Create a Dialog that Displays Options wether to Backup or Restore */
- builder.setTitle(mActivity.getString(R.string.choose_an_action)).
- setCancelable(true).
- setItems(R.array.dialog_backup_restore_items,
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- /* Notify User if no SD Card present */
- if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
- Toast.makeText(mActivity,mActivity.getString(R.string.please_insert_an_sd_card), Toast.LENGTH_LONG).show();
-
- switch (which) {
- case 0:
- /* Backup */
- new NavitBackupTask(mActivity).execute();
- break;
- case 1:
- /* Restore */
- mActivity.showDialog(DIALOG_SELECT_BACKUP);
- break;
- }
- }});
- return builder.create();
-
- case DIALOG_SELECT_BACKUP :
- /* Create a Dialog with a list from which the user selects the Backup to be restored */
- File mainBackupDir = new File(Environment.getExternalStorageDirectory().getPath() + "/navit/backup/");
-
- String[] backups = null;
- if(mainBackupDir.isDirectory())
- backups = mainBackupDir.list();
-
- if(backups == null || backups.length == 0) {
- /* No Backups were found */
- builder.setTitle(mActivity.getText(R.string.no_backup_found));
- builder.setNegativeButton(mActivity.getText(android.R.string.cancel), null);
- return builder.create();
- }
-
- builder.setTitle(mActivity.getString(R.string.select_backup));
- final ArrayAdapter<String> adapter = new ArrayAdapter<String>(mActivity, android.R.layout.simple_spinner_item, backups);
- builder.setAdapter(adapter, new OnClickListener(){
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- new NavitRestoreTask(mActivity, adapter.getItem(which)).execute();
- }});
- builder.setNegativeButton(mActivity.getString(android.R.string.cancel), null);
-
- return builder.create();
- }
- // should never get here!!
- return null;
- }
-
- public void prepareDialog(int id, Dialog dialog) {
-
- /* Remove the Dialog to force Android to rerun onCreateDialog */
- if(id == DIALOG_SELECT_BACKUP)
- mActivity.removeDialog(id);
- }
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java b/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java
deleted file mode 100644
index fd117a376..000000000
--- a/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.ExpandableListActivity;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.location.Location;
-import android.location.LocationManager;
-import android.os.Bundle;
-import android.os.Message;
-import android.os.StatFs;
-import android.util.Log;
-import android.view.View;
-import android.widget.ExpandableListView;
-import android.widget.RelativeLayout;
-import android.widget.SimpleExpandableListAdapter;
-import android.widget.TextView;
-
-public class NavitDownloadSelectMapActivity extends ExpandableListActivity {
-
- private static SimpleExpandableListAdapter adapter = null;
- private static final String MAP_BULLETPOINT = " * ";
- private static ArrayList<HashMap<String, String>> downloaded_maps_childs = null;
- private static ArrayList<HashMap<String, String>> maps_current_position_childs = null;
- private static boolean currentLocationKnown = false;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- if (adapter == null) {
- adapter = createAdapter();
- }
- updateDownloadedMaps();
- updateMapsForLocation(NavitMapDownloader.osm_maps);
- setListAdapter(adapter);
- try {
- setTitle(String.valueOf(getFreeSpace() / 1024 / 1024) + "MB available");
- } catch (Exception e) {
- Log.e("Navit","Exception "+e.getClass().getName()+" during getFreeSpace, reporting 'no sdcard present'");
- NavitDialogs.sendDialogMessage(NavitDialogs.MSG_TOAST_LONG, null,
- String.format(Navit._("Current map location %s is not available\nPlease restart Navit after you attach an SD card or select a different map location."),Navit.map_filename_path),
- -1, 0, 0);
- finish();
- }
- }
-
- protected long getFreeSpace()
- {
- StatFs fsInfo = new StatFs(Navit.map_filename_path);
- return (long)fsInfo.getAvailableBlocks() * fsInfo.getBlockSize();
- }
-
- private void updateDownloadedMaps() {
- downloaded_maps_childs.clear();
- for (NavitMap map : NavitMapDownloader.getAvailableMaps()) {
- HashMap<String, String> child = new HashMap<String, String>();
- child.put("map_name", map.mapName + " " + (map.size() / 1024 / 1024) + "MB");
- child.put("map_location", map.getLocation());
- downloaded_maps_childs.add(child);
- }
- }
-
- private void updateMapsForLocation(NavitMapDownloader.osm_map_values osm_maps[]) {
- Location currentLocation = NavitVehicle.lastLocation;
- if (maps_current_position_childs.size() == 0 || (currentLocation != null && !currentLocationKnown)) {
- if (currentLocation == null) {
- LocationManager mapLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
- List<String> providers = mapLocationManager.getProviders(true);
- long lastUpdate = 0;
- long bestUpdateTime = -1;
- for (String provider : providers) {
- Location lastKnownLocation = mapLocationManager.getLastKnownLocation(provider);
- if (lastKnownLocation != null) {
- lastUpdate = lastKnownLocation.getTime();
- if (lastUpdate > bestUpdateTime) {
- currentLocation = lastKnownLocation;
- bestUpdateTime = lastUpdate;
- }
- }
- }
- } else currentLocationKnown = true;
-
- if (currentLocation != null) {
- // if this map contains data to our current position, add it to
- // the
- // MapsOfCurrentLocation-list
- for (int currentMapIndex = 0; currentMapIndex < osm_maps.length; currentMapIndex++) {
- if (osm_maps[currentMapIndex].isInMap(currentLocation)) {
- HashMap<String, String> currentPositionMapChild = new HashMap<String, String>();
- currentPositionMapChild.put("map_name", osm_maps[currentMapIndex].map_name + " "
- + (osm_maps[currentMapIndex].est_size_bytes / 1024 / 1024) + "MB");
- currentPositionMapChild.put("map_index", String.valueOf(currentMapIndex));
-
- maps_current_position_childs.add(currentPositionMapChild);
- }
- }
- }
- }
- }
-
- private SimpleExpandableListAdapter createAdapter() {
-
- NavitMapDownloader.osm_map_values osm_maps[] = NavitMapDownloader.osm_maps;
-
- ArrayList<HashMap<String, String>> resultGroups = new ArrayList<HashMap<String, String>>();
- ArrayList<ArrayList<HashMap<String, String>>> resultChilds =
- new ArrayList<ArrayList<HashMap<String, String>>>();
-
- // add already downloaded maps (group and empty child list
- HashMap<String, String> downloaded_maps_hash = new HashMap<String, String>();
- downloaded_maps_hash.put("category_name", Navit._("Downloaded maps"));
- resultGroups.add(downloaded_maps_hash);
- downloaded_maps_childs = new ArrayList<HashMap<String, String>>();
- resultChilds.add(downloaded_maps_childs);
-
- ArrayList<HashMap<String, String>> secList = new ArrayList<HashMap<String, String>>();
- maps_current_position_childs = new ArrayList<HashMap<String, String>>();
- // maps containing the current location
- HashMap<String, String> matching_maps = new HashMap<String, String>();
- matching_maps.put("category_name", Navit.NavitResources.getString(R.string.maps_for_current_location));
- resultGroups.add(matching_maps);
- resultChilds.add(maps_current_position_childs);
-
- // add all maps
- for (int currentMapIndex = 0; currentMapIndex < osm_maps.length; currentMapIndex++) {
- if (osm_maps[currentMapIndex].level == 0) {
- if (secList != null && secList.size() > 0) {
- resultChilds.add(secList);
- }
- secList = new ArrayList<HashMap<String, String>>();
- HashMap<String, String> map_info_hash = new HashMap<String, String>();
- map_info_hash.put("category_name", osm_maps[currentMapIndex].map_name);
- resultGroups.add(map_info_hash);
- }
-
- HashMap<String, String> child = new HashMap<String, String>();
- child.put("map_name", (osm_maps[currentMapIndex].level > 1 ? MAP_BULLETPOINT : "")
- + osm_maps[currentMapIndex].map_name + " "
- + (osm_maps[currentMapIndex].est_size_bytes / 1024 / 1024) + "MB");
- child.put("map_index", String.valueOf(currentMapIndex));
-
- secList.add(child);
- }
- resultChilds.add(secList);
-
- return new SimpleExpandableListAdapter(this, resultGroups, android.R.layout.simple_expandable_list_item_1,
- new String[] { "category_name" }, new int[] { android.R.id.text1 }, resultChilds,
- android.R.layout.simple_expandable_list_item_1, new String[] { "map_name" },
- new int[] { android.R.id.text1 });
- }
-
- @Override
- public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
- super.onChildClick(parent, v, groupPosition, childPosition, id);
- Log.d("Navit", "p:" + groupPosition + ", child_pos:" + childPosition);
-
- @SuppressWarnings("unchecked")
- HashMap<String, String> child = (HashMap<String, String>) adapter.getChild(groupPosition, childPosition);
-
- String map_index = child.get("map_index");
- if (map_index != null) {
- int mi=Integer.parseInt(map_index);
- if(NavitMapDownloader.osm_maps[mi].est_size_bytes/1024/1024/950>=4) {
- NavitDialogs.sendDialogMessage(NavitDialogs.MSG_TOAST_LONG, null,
- Navit._("Sorry, we currently do not support maps above 3.8G on Android, please select a smaller one."),
- -1, 0, 0);
- return true;
- }
- Intent resultIntent = new Intent();
- resultIntent.putExtra("map_index", mi);
- setResult(Activity.RESULT_OK, resultIntent);
- finish();
- } else {
- // ask user if to delete this map
- askForMapDeletion(child.get("map_location"));
- }
- return true;
- }
-
- private void askForMapDeletion(final String map_location) {
- AlertDialog.Builder deleteMapBox = new AlertDialog.Builder(this);
- deleteMapBox.setTitle(getString(R.string.map_delete)); // TRANS
- deleteMapBox.setCancelable(true);
- final TextView message = new TextView(this);
- message.setFadingEdgeLength(20);
- message.setVerticalFadingEdgeEnabled(true);
- RelativeLayout.LayoutParams layoutParams =
- new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,
- RelativeLayout.LayoutParams.FILL_PARENT);
-
- message.setLayoutParams(layoutParams);
- NavitMap maptoDelete = new NavitMap(map_location);
- message.setText(maptoDelete.mapName + " " + String.valueOf(maptoDelete.size() / 1024 / 1024) + "MB");
- deleteMapBox.setView(message);
-
- // TRANS
- deleteMapBox.setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface arg0, int arg1) {
- Log.e("Navit", "Delete Map");
- Message msg =
- Message.obtain(Navit.N_NavitGraphics.callback_handler,
- NavitGraphics.msg_type.CLB_DELETE_MAP.ordinal());
- Bundle b = new Bundle();
- b.putString("title", map_location);
- msg.setData(b);
- msg.sendToTarget();
- finish();
- }
- });
-
- // TRANS
- deleteMapBox.setNegativeButton(getString(R.string.no), new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface arg0, int arg1) {
- Log.e("Navit", "don't delete map");
- }
- });
- deleteMapBox.show();
- }
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitGraphics.java b/navit/android/src/org/navitproject/navit/NavitGraphics.java
deleted file mode 100644
index a41ab52be..000000000
--- a/navit/android/src/org/navitproject/navit/NavitGraphics.java
+++ /dev/null
@@ -1,1210 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Matrix;
-import android.graphics.Paint;
-import android.graphics.Path;
-import android.graphics.PointF;
-import android.graphics.Rect;
-import android.os.Build;
-import android.os.Handler;
-import android.os.Message;
-import android.util.FloatMath;
-import android.util.Log;
-import android.view.ContextMenu;
-import android.view.Gravity;
-import android.view.KeyEvent;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup.LayoutParams;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.FrameLayout;
-import android.widget.RelativeLayout;
-
-
-public class NavitGraphics
-{
- private NavitGraphics parent_graphics;
- private ArrayList<NavitGraphics> overlays = new ArrayList<NavitGraphics>();
- int bitmap_w;
- int bitmap_h;
- int pos_x;
- int pos_y;
- int pos_wraparound;
- int overlay_disabled;
- int bgcolor;
- float trackball_x, trackball_y;
- View view;
- SystemBarTintView navigationTintView;
- SystemBarTintView statusTintView;
- FrameLayout frameLayout;
- RelativeLayout relativelayout;
- NavitCamera camera;
- Activity activity;
-
- public static Boolean in_map = false;
-
- // for menu key
- private static long time_for_long_press = 300L;
- private static long interval_for_long_press = 200L;
-
- private Handler timer_handler = new Handler();
-
- public void setBackgroundColor(int bgcolor) {
- this.bgcolor = bgcolor;
- if (navigationTintView != null)
- navigationTintView.setBackgroundColor(bgcolor);
- if (statusTintView != null)
- statusTintView.setBackgroundColor(bgcolor);
- }
-
- public void SetCamera(int use_camera)
- {
- if (use_camera != 0 && camera == null)
- {
- // activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
- camera = new NavitCamera(activity);
- relativelayout.addView(camera);
- relativelayout.bringChildToFront(view);
- }
- }
-
- protected Rect get_rect()
- {
- Rect ret=new Rect();
- ret.left=pos_x;
- ret.top=pos_y;
- if (pos_wraparound != 0) {
- if (ret.left < 0) {
- ret.left+=parent_graphics.bitmap_w;
- }
- if (ret.top < 0) {
- ret.top+=parent_graphics.bitmap_h;
- }
- }
- ret.right=ret.left+bitmap_w;
- ret.bottom=ret.top+bitmap_h;
- if (pos_wraparound != 0) {
- if (bitmap_w < 0) {
- ret.right=ret.left+bitmap_w+parent_graphics.bitmap_w;
- }
- if (bitmap_h < 0) {
- ret.bottom=ret.top+bitmap_h+parent_graphics.bitmap_h;
- }
- }
- return ret;
- }
-
- private class NavitView extends View implements Runnable, MenuItem.OnMenuItemClickListener{
- int touch_mode = NONE;
- float oldDist = 0;
- static final int NONE = 0;
- static final int DRAG = 1;
- static final int ZOOM = 2;
- static final int PRESSED = 3;
-
- Method eventGetX = null;
- Method eventGetY = null;
-
- public PointF mPressedPosition = null;
-
- public NavitView(Context context) {
- super(context);
- try
- {
- eventGetX = android.view.MotionEvent.class.getMethod("getX", int.class);
- eventGetY = android.view.MotionEvent.class.getMethod("getY", int.class);
- }
- catch (Exception e)
- {
- Log.e("NavitGraphics", "Multitouch zoom not supported");
- }
- }
-
- @Override
- protected void onCreateContextMenu(ContextMenu menu) {
- super.onCreateContextMenu(menu);
-
- menu.setHeaderTitle(Navit._("Position")+"..");
- menu.add(1, 1, NONE, Navit._("Route to here")).setOnMenuItemClickListener(this);
- menu.add(1, 2, NONE, Navit._("Cancel")).setOnMenuItemClickListener(this);
- }
-
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- switch(item.getItemId()) {
- case 1:
- Message msg = Message.obtain(callback_handler, msg_type.CLB_SET_DISPLAY_DESTINATION.ordinal()
- , (int)mPressedPosition.x, (int)mPressedPosition.y);
- msg.sendToTarget();
- break;
- }
- return false;
- }
-
-
- @Override
- protected void onDraw(Canvas canvas)
- {
- super.onDraw(canvas);
- canvas.drawBitmap(draw_bitmap, pos_x, pos_y, null);
- if (overlay_disabled == 0)
- {
- // assume we ARE in map view mode!
- in_map = true;
- for (NavitGraphics overlay : overlays)
- {
- if (overlay.overlay_disabled == 0)
- {
- Rect r=overlay.get_rect();
- canvas.drawBitmap(overlay.draw_bitmap, r.left, r.top, null);
- }
- }
- }
- else
- {
- if (Navit.show_soft_keyboard)
- {
- if (Navit.mgr != null)
- {
- //Log.e("NavitGraphics", "view -> SHOW SoftInput");
- //Log.e("NavitGraphics", "view mgr=" + String.valueOf(Navit.mgr));
- Navit.mgr.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT);
- Navit.show_soft_keyboard_now_showing = true;
- // clear the variable now, keyboard will stay on screen until backbutton pressed
- Navit.show_soft_keyboard = false;
- }
- }
- }
- }
-
- @Override
- protected void onSizeChanged(int w, int h, int oldw, int oldh)
- {
- Log.e("Navit", "NavitGraphics -> onSizeChanged pixels x=" + w + " pixels y=" + h);
- Log.e("Navit", "NavitGraphics -> onSizeChanged density=" + Navit.metrics.density);
- Log.e("Navit", "NavitGraphics -> onSizeChanged scaledDensity="
- + Navit.metrics.scaledDensity);
- super.onSizeChanged(w, h, oldw, oldh);
-
- handleResize(w, h);
- }
-
- public void do_longpress_action()
- {
- Log.e("NavitGraphics", "do_longpress_action enter");
-
- activity.openContextMenu(this);
- }
-
- private int getActionField(String fieldname, Object obj)
- {
- int ret_value = -999;
- try
- {
- java.lang.reflect.Field field = android.view.MotionEvent.class.getField(fieldname);
- try
- {
- ret_value = field.getInt(obj);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- catch (NoSuchFieldException ex) {}
-
- return ret_value;
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event)
- {
- //Log.e("NavitGraphics", "onTouchEvent");
- super.onTouchEvent(event);
- int x = (int) event.getX();
- int y = (int) event.getY();
-
- int _ACTION_POINTER_UP_ = getActionField("ACTION_POINTER_UP", event);
- int _ACTION_POINTER_DOWN_ = getActionField("ACTION_POINTER_DOWN", event);
- int _ACTION_MASK_ = getActionField("ACTION_MASK", event);
-
- int switch_value = event.getAction();
- if (_ACTION_MASK_ != -999)
- {
- switch_value = (event.getAction() & _ACTION_MASK_);
- }
-
- if (switch_value == MotionEvent.ACTION_DOWN)
- {
- touch_mode = PRESSED;
- if (!in_map) ButtonCallback(ButtonCallbackID, 1, 1, x, y); // down
- mPressedPosition = new PointF(x, y);
- postDelayed(this, time_for_long_press);
- }
- else if ((switch_value == MotionEvent.ACTION_UP) || (switch_value == _ACTION_POINTER_UP_))
- {
- Log.e("NavitGraphics", "ACTION_UP");
-
- if ( touch_mode == DRAG )
- {
- Log.e("NavitGraphics", "onTouch move");
-
- MotionCallback(MotionCallbackID, x, y);
- ButtonCallback(ButtonCallbackID, 0, 1, x, y); // up
- }
- else if (touch_mode == ZOOM)
- {
- //Log.e("NavitGraphics", "onTouch zoom");
-
- float newDist = spacing(getFloatValue(event, 0), getFloatValue(event, 1));
- float scale = 0;
- if (newDist > 10f)
- {
- scale = newDist / oldDist;
- }
-
- if (scale > 1.3)
- {
- // zoom in
- CallbackMessageChannel(1, null);
- //Log.e("NavitGraphics", "onTouch zoom in");
- }
- else if (scale < 0.8)
- {
- // zoom out
- CallbackMessageChannel(2, null);
- //Log.e("NavitGraphics", "onTouch zoom out");
- }
- }
- else if (touch_mode == PRESSED)
- {
- if (in_map) ButtonCallback(ButtonCallbackID, 1, 1, x, y); // down
- ButtonCallback(ButtonCallbackID, 0, 1, x, y); // up
- }
- touch_mode = NONE;
- }
- else if (switch_value == MotionEvent.ACTION_MOVE)
- {
- //Log.e("NavitGraphics", "ACTION_MOVE");
-
- if (touch_mode == DRAG)
- {
- MotionCallback(MotionCallbackID, x, y);
- }
- else if (touch_mode == ZOOM)
- {
- float newDist = spacing(getFloatValue(event, 0), getFloatValue(event, 1));
- float scale = newDist / oldDist;
- Log.e("NavitGraphics", "New scale = " + scale);
- if (scale > 1.2)
- {
- // zoom in
- CallbackMessageChannel(1, "");
- oldDist = newDist;
- //Log.e("NavitGraphics", "onTouch zoom in");
- }
- else if (scale < 0.8)
- {
- oldDist = newDist;
- // zoom out
- CallbackMessageChannel(2, "");
- //Log.e("NavitGraphics", "onTouch zoom out");
- }
- }
- else if (touch_mode == PRESSED)
- {
- Log.e("NavitGraphics", "Start drag mode");
- if ( spacing(mPressedPosition, new PointF(event.getX(), event.getY())) > 20f) {
- ButtonCallback(ButtonCallbackID, 1, 1, x, y); // down
- touch_mode = DRAG;
- }
- }
- }
- else if (switch_value == _ACTION_POINTER_DOWN_)
- {
- //Log.e("NavitGraphics", "ACTION_POINTER_DOWN");
- oldDist = spacing(getFloatValue(event, 0), getFloatValue(event, 1));
- if (oldDist > 2f)
- {
- touch_mode = ZOOM;
- //Log.e("NavitGraphics", "--> zoom");
- }
- }
- return true;
- }
-
- private float spacing(PointF a, PointF b)
- {
- float x = a.x - b.x;
- float y = a.y - b.y;
- return (float)Math.sqrt(x * x + y * y);
- }
-
- private PointF getFloatValue(Object instance, Object argument)
- {
- PointF pos = new PointF(0,0);
-
- if (eventGetX != null && eventGetY != null)
- {
- try
- {
- Float x = (java.lang.Float) eventGetX.invoke(instance, argument);
- Float y = (java.lang.Float) eventGetY.invoke(instance, argument);
- pos.set(x.floatValue(), y.floatValue());
-
- }
- catch (Exception e){}
- }
- return pos;
- }
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event)
- {
- int i;
- String s = null;
- boolean handled = true;
- i = event.getUnicodeChar();
- //Log.e("NavitGraphics", "onKeyDown " + keyCode + " " + i);
- // Log.e("NavitGraphics","Unicode "+event.getUnicodeChar());
- if (i == 0)
- {
- if (keyCode == android.view.KeyEvent.KEYCODE_DEL)
- {
- s = java.lang.String.valueOf((char) 8);
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_MENU)
- {
- if (!in_map)
- {
- // if last menukeypress is less than 0.2 seconds away then count longpress
- if ((System.currentTimeMillis() - Navit.last_pressed_menu_key) < interval_for_long_press)
- {
- Navit.time_pressed_menu_key = Navit.time_pressed_menu_key
- + (System.currentTimeMillis() - Navit.last_pressed_menu_key);
- //Log.e("NavitGraphics", "press time=" + Navit.time_pressed_menu_key);
-
- // on long press let softkeyboard popup
- if (Navit.time_pressed_menu_key > time_for_long_press)
- {
- //Log.e("NavitGraphics", "long press menu key!!");
- Navit.show_soft_keyboard = true;
- Navit.time_pressed_menu_key = 0L;
- // need to draw to get the keyboard showing
- this.postInvalidate();
- }
- }
- else
- {
- Navit.time_pressed_menu_key = 0L;
- }
- Navit.last_pressed_menu_key = System.currentTimeMillis();
- // if in menu view:
- // use as OK (Enter) key
- s = java.lang.String.valueOf((char) 13);
- handled = true;
- // dont use menu key here (use it in onKeyUp)
- return handled;
- }
- else
- {
- // if on map view:
- // volume UP
- //s = java.lang.String.valueOf((char) 1);
- handled = false;
- return handled;
- }
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_SEARCH)
- {
- /* Handle event in Main Activity if map is shown */
- if(in_map)
- return false;
-
- s = java.lang.String.valueOf((char) 19);
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_BACK)
- {
- //Log.e("NavitGraphics", "KEYCODE_BACK down");
- s = java.lang.String.valueOf((char) 27);
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_CALL)
- {
- s = java.lang.String.valueOf((char) 3);
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_VOLUME_UP)
- {
- if (!in_map)
- {
- // if in menu view:
- // use as UP key
- s = java.lang.String.valueOf((char) 16);
- handled = true;
- }
- else
- {
- // if on map view:
- // volume UP
- //s = java.lang.String.valueOf((char) 21);
- handled = false;
- return handled;
- }
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_VOLUME_DOWN)
- {
- if (!in_map)
- {
- // if in menu view:
- // use as DOWN key
- s = java.lang.String.valueOf((char) 14);
- handled = true;
- }
- else
- {
- // if on map view:
- // volume DOWN
- //s = java.lang.String.valueOf((char) 4);
- handled = false;
- return handled;
- }
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_DPAD_CENTER)
- {
- s = java.lang.String.valueOf((char) 13);
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_DPAD_DOWN)
- {
- s = java.lang.String.valueOf((char) 14);
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_DPAD_LEFT)
- {
- s = java.lang.String.valueOf((char) 2);
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_DPAD_RIGHT)
- {
- s = java.lang.String.valueOf((char) 6);
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_DPAD_UP)
- {
- s = java.lang.String.valueOf((char) 16);
- }
- }
- else if (i == 10)
- {
- s = java.lang.String.valueOf((char) 13);
- }
-
- if (s != null)
- {
- KeypressCallback(KeypressCallbackID, s);
- }
- return handled;
- }
-
- @Override
- public boolean onKeyUp(int keyCode, KeyEvent event)
- {
- //Log.e("NavitGraphics", "onKeyUp " + keyCode);
-
- int i;
- String s = null;
- boolean handled = true;
- i = event.getUnicodeChar();
-
- if (i == 0)
- {
- if (keyCode == android.view.KeyEvent.KEYCODE_VOLUME_UP)
- {
- if (!in_map)
- {
- //s = java.lang.String.valueOf((char) 16);
- handled = true;
- return handled;
- }
- else
- {
- //s = java.lang.String.valueOf((char) 21);
- handled = false;
- return handled;
- }
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_VOLUME_DOWN)
- {
- if (!in_map)
- {
- //s = java.lang.String.valueOf((char) 14);
- handled = true;
- return handled;
- }
- else
- {
- //s = java.lang.String.valueOf((char) 4);
- handled = false;
- return handled;
- }
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_SEARCH) {
- /* Handle event in Main Activity if map is shown */
- if(in_map)
- return false;
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_BACK)
- {
- if (Navit.show_soft_keyboard_now_showing)
- {
- Navit.show_soft_keyboard_now_showing = false;
- }
- //Log.e("NavitGraphics", "KEYCODE_BACK up");
- //s = java.lang.String.valueOf((char) 27);
- handled = true;
- return handled;
- }
- else if (keyCode == android.view.KeyEvent.KEYCODE_MENU)
- {
- if (!in_map)
- {
- if (Navit.show_soft_keyboard_now_showing)
- {
- // if soft keyboard showing on screen, dont use menu button as select key
- }
- else
- {
- // if in menu view:
- // use as OK (Enter) key
- s = java.lang.String.valueOf((char) 13);
- handled = true;
- }
- }
- else
- {
- // if on map view:
- // volume UP
- //s = java.lang.String.valueOf((char) 1);
- handled = false;
- return handled;
- }
- }
- }
- else if(i!=10)
- {
- s = java.lang.String.valueOf((char) i);
- }
-
- if (s != null)
- {
- KeypressCallback(KeypressCallbackID, s);
- }
- return handled;
-
- }
-
- @Override
- public boolean onKeyMultiple (int keyCode, int count, KeyEvent event)
- {
- String s = null;
- if(keyCode == KeyEvent.KEYCODE_UNKNOWN) {
- s=event.getCharacters();
- KeypressCallback(KeypressCallbackID, s);
- return true;
- }
- return super.onKeyMultiple(keyCode, count, event);
- }
-
- @Override
- public boolean onTrackballEvent(MotionEvent event)
- {
- //Log.e("NavitGraphics", "onTrackball " + event.getAction() + " " + event.getX() + " "
- // + event.getY());
- String s = null;
- if (event.getAction() == android.view.MotionEvent.ACTION_DOWN)
- {
- s = java.lang.String.valueOf((char) 13);
- }
- if (event.getAction() == android.view.MotionEvent.ACTION_MOVE)
- {
- trackball_x += event.getX();
- trackball_y += event.getY();
- //Log.e("NavitGraphics", "trackball " + trackball_x + " " + trackball_y);
- if (trackball_x <= -1)
- {
- s = java.lang.String.valueOf((char) 2);
- trackball_x += 1;
- }
- if (trackball_x >= 1)
- {
- s = java.lang.String.valueOf((char) 6);
- trackball_x -= 1;
- }
- if (trackball_y <= -1)
- {
- s = java.lang.String.valueOf((char) 16);
- trackball_y += 1;
- }
- if (trackball_y >= 1)
- {
- s = java.lang.String.valueOf((char) 14);
- trackball_y -= 1;
- }
- }
- if (s != null)
- {
- KeypressCallback(KeypressCallbackID, s);
- }
- return true;
- }
- @Override
- protected void onFocusChanged(boolean gainFocus, int direction,
- Rect previouslyFocusedRect)
- {
- super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
- //Log.e("NavitGraphics", "FocusChange " + gainFocus);
- }
-
- public void run() {
- if (in_map && touch_mode == PRESSED)
- {
- do_longpress_action();
- touch_mode = NONE;
- }
- }
-
- }
-
- private class SystemBarTintView extends View {
-
- public SystemBarTintView(Context context) {
- super(context);
- this.setBackgroundColor(bgcolor);
- }
-
- }
-
- public NavitGraphics(final Activity activity, NavitGraphics parent, int x, int y, int w, int h,
- int wraparound, int use_camera)
- {
- if (parent == null)
- {
- this.activity = activity;
- view = new NavitView(activity);
- //activity.registerForContextMenu(view);
- view.setClickable(false);
- view.setFocusable(true);
- view.setFocusableInTouchMode(true);
- view.setKeepScreenOn(true);
- relativelayout = new RelativeLayout(activity);
- if (use_camera != 0)
- {
- SetCamera(use_camera);
- }
- relativelayout.addView(view);
-
- /* The navigational and status bar tinting code is meaningful only on API19+ */
- if(Build.VERSION.SDK_INT >= 19)
- {
- frameLayout = new FrameLayout(activity);
- frameLayout.addView(relativelayout);
- navigationTintView = new SystemBarTintView(activity);
- statusTintView = new SystemBarTintView(activity);
- frameLayout.addView(navigationTintView);
- frameLayout.addView(statusTintView);
- activity.setContentView(frameLayout);
- }
- else
- {
- activity.setContentView(relativelayout);
- }
-
- view.requestFocus();
- }
- else
- {
- draw_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
- bitmap_w = w;
- bitmap_h = h;
- pos_x = x;
- pos_y = y;
- pos_wraparound = wraparound;
- draw_canvas = new Canvas(draw_bitmap);
- parent.overlays.add(this);
- }
- parent_graphics = parent;
- }
-
- static public enum msg_type {
- CLB_ZOOM_IN, CLB_ZOOM_OUT, CLB_REDRAW, CLB_MOVE, CLB_BUTTON_UP, CLB_BUTTON_DOWN, CLB_SET_DESTINATION
- , CLB_SET_DISPLAY_DESTINATION, CLB_CALL_CMD, CLB_COUNTRY_CHOOSER, CLB_LOAD_MAP, CLB_UNLOAD_MAP, CLB_DELETE_MAP
- };
-
- static public msg_type[] msg_values = msg_type.values();
-
- public Handler callback_handler = new Handler()
- {
- public void handleMessage(Message msg)
- {
- switch (msg_values[msg.what])
- {
- case CLB_ZOOM_IN:
- CallbackMessageChannel(1, "");
- break;
- case CLB_ZOOM_OUT:
- CallbackMessageChannel(2, "");
- break;
- case CLB_MOVE:
- MotionCallback(MotionCallbackID, msg.getData().getInt("x"), msg.getData().getInt("y"));
- break;
- case CLB_SET_DESTINATION:
- String lat = Float.toString(msg.getData().getFloat("lat"));
- String lon = Float.toString(msg.getData().getFloat("lon"));
- String q = msg.getData().getString(("q"));
- CallbackMessageChannel(3, lat + "#" + lon + "#" + q);
- break;
- case CLB_SET_DISPLAY_DESTINATION:
- int x = msg.arg1;
- int y = msg.arg2;
- CallbackMessageChannel(4, "" + x + "#" + y);
- break;
- case CLB_CALL_CMD:
- String cmd = msg.getData().getString(("cmd"));
- CallbackMessageChannel(5, cmd);
- break;
- case CLB_BUTTON_UP:
- ButtonCallback(ButtonCallbackID, 0, 1, msg.getData().getInt("x"), msg.getData().getInt("y")); // up
- break;
- case CLB_BUTTON_DOWN:
- ButtonCallback(ButtonCallbackID, 1, 1, msg.getData().getInt("x"), msg.getData().getInt("y")); // down
- break;
- case CLB_COUNTRY_CHOOSER:
- break;
- case CLB_LOAD_MAP:
- CallbackMessageChannel(6, msg.getData().getString(("title")));
- break;
- case CLB_DELETE_MAP:
- File toDelete = new File( msg.getData().getString(("title")));
- toDelete.delete();
- //fallthrough
- case CLB_UNLOAD_MAP:
- CallbackMessageChannel(7, msg.getData().getString(("title")));
- break;
- }
- }
- };
-
- public native void SizeChangedCallback(int id, int x, int y);
- public native void PaddingChangedCallback(int id, int left, int right, int top, int bottom);
- public native void KeypressCallback(int id, String s);
- public native int CallbackMessageChannel(int i, String s);
- public native void ButtonCallback(int id, int pressed, int button, int x, int y);
- public native void MotionCallback(int id, int x, int y);
- public native String GetDefaultCountry(int id, String s);
- public static native String[][] GetAllCountries();
- private Canvas draw_canvas;
- private Bitmap draw_bitmap;
- private int SizeChangedCallbackID, PaddingChangedCallbackID, ButtonCallbackID, MotionCallbackID, KeypressCallbackID;
- // private int count;
-
- /**
- * @brief Adjust views used to tint navigation and status bars.
- *
- * This method is called from handleResize.
- *
- * It (re-)evaluates if and where the navigation bar is going to be shown, and calculates the
- * padding for objects which should not be obstructed.
- *
- */
- private void adjustSystemBarsTintingViews() {
-
- /* frameLayout is only created on platforms supporting navigation and status bar tinting */
- if (frameLayout == null)
- return;
-
- if (!(activity instanceof Navit)) {
- Log.e("NavitGraphics", "Main Activity is not a Navit instance, cannot update padding");
- return;
- }
-
- Navit navit = (Navit) activity;
-
- /*
- * Determine visibility of status bar.
- * The status bar is always visible unless we are in fullscreen mode.
- */
- final Boolean isStatusShowing = !navit.isFullscreen;
-
- /*
- * Determine visibility of navigation bar.
- * This logic is based on the presence of a hardware menu button and is known to work on
- * devices which allow switching between hw and sw buttons (OnePlus One running CyanogenMod).
- */
- final Boolean isNavShowing = !ViewConfiguration.get(navit.getApplication()).hasPermanentMenuKey();
- Log.d("NavitGraphics", String.format("isStatusShowing=%b isNavShowing=%b", isStatusShowing, isNavShowing));
-
- /*
- * Determine where the navigation bar would be displayed.
- * Logic is taken from AOSP RenderSessionImpl.findNavigationBar()
- * (platform/frameworks/base/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java)
- */
- final Boolean isLandscape = (navit.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE);
- final Boolean isNavAtBottom = (!isLandscape) || (navit.getResources().getConfiguration().smallestScreenWidthDp >= 600);
- Log.d("NavitGraphics", String.format("isNavAtBottom=%b (Configuration.smallestScreenWidthDp=%d, isLandscape=%b)",
- isNavAtBottom, navit.getResources().getConfiguration().smallestScreenWidthDp, isLandscape));
-
- int left = 0;
- int top = isStatusShowing ? Navit.status_bar_height : 0;
- int right = (isNavShowing && !isNavAtBottom) ? Navit.navigation_bar_width : 0;
- final int bottom = (!(isNavShowing && isNavAtBottom)) ? 0 : isLandscape ? Navit.navigation_bar_height_landscape : Navit.navigation_bar_height;
-
- /* hide tint bars during update to prevent ugly effects */
- statusTintView.setVisibility(View.GONE);
- navigationTintView.setVisibility(View.GONE);
-
- frameLayout.post(new Runnable() {
- @Override
- public void run() {
- statusTintView.setVisibility(isStatusShowing ? View.VISIBLE : View.GONE);
- FrameLayout.LayoutParams statusLayoutParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, Navit.status_bar_height, Gravity.TOP);
-
- /* Prevent tint views from overlapping when navigation is on the right */
- statusLayoutParams.setMargins(0, 0, (isNavShowing && !isNavAtBottom) ? Navit.navigation_bar_width : 0, 0);
- statusTintView.setLayoutParams(statusLayoutParams);
- Log.d("NavitGraphics", String.format("statusTintView: width=%d height=%d",
- statusTintView.getWidth(), statusTintView.getHeight()));
- navigationTintView.setVisibility(isNavShowing ? View.VISIBLE : View.GONE);
- LayoutParams navigationLayoutParams = new FrameLayout.LayoutParams(
- isNavAtBottom ? LayoutParams.MATCH_PARENT : Navit.navigation_bar_width, // X
- isNavAtBottom ? bottom : LayoutParams.MATCH_PARENT, // Y
- Gravity.BOTTOM | Gravity.RIGHT);
- navigationTintView.setLayoutParams(navigationLayoutParams);
- Log.d("NavitGraphics", String.format("navigationTintView: width=%d height=%d",
- navigationTintView.getWidth(), navigationTintView.getHeight()));
- }
- });
-
- Log.d("NavitGraphics", String.format("Padding left=%d top=%d right=%d bottom=%d", left, top, right, bottom));
-
- PaddingChangedCallback(PaddingChangedCallbackID, left, top, right, bottom);
- }
-
- /**
- * @brief Handles resize events.
- *
- * This method is called whenever the main View is resized in any way. This is the case when its
- * {@code onSizeChanged()} event handler fires or when toggling Fullscreen mode.
- *
- */
- public void handleResize(int w, int h) {
- if (this.parent_graphics != null)
- this.parent_graphics.handleResize(w, h);
- else {
- Log.d("NavitGraphics", String.format("handleResize w=%d h=%d", w, h));
-
- adjustSystemBarsTintingViews();
-
- draw_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
- draw_canvas = new Canvas(draw_bitmap);
- bitmap_w = w;
- bitmap_h = h;
- SizeChangedCallback(SizeChangedCallbackID, w, h);
- }
- }
-
- /**
- * @brief Returns whether the device has a hardware menu button.
- *
- * Only Android versions starting with ICS (API version 14) support the API call to detect the presence of a
- * Menu button. On earlier Android versions, the following assumptions will be made: On API levels up to 10,
- * this method will always return {@code true}, as these Android versions relied on devices having a physical
- * Menu button. On API levels 11 through 13 (Honeycomb releases), this method will always return
- * {@code false}, as Honeycomb was a tablet-only release and did not require devices to have a Menu button.
- *
- * Note that this method is not aware of non-standard mechanisms on some customized builds of Android. For
- * example, CyanogenMod has an option to add a menu button to the navigation bar. Even with that option,
- * this method will still return `false`.
- */
- public boolean hasMenuButton() {
- if (Build.VERSION.SDK_INT <= 10)
- return true;
- else if (Build.VERSION.SDK_INT <= 13)
- return false;
- else
- return ViewConfiguration.get(activity.getApplication()).hasPermanentMenuKey();
- }
-
- public void setSizeChangedCallback(int id)
- {
- SizeChangedCallbackID = id;
- }
- public void setPaddingChangedCallback(int id)
- {
- PaddingChangedCallbackID = id;
- }
- public void setButtonCallback(int id)
- {
- ButtonCallbackID = id;
- }
- public void setMotionCallback(int id)
- {
- MotionCallbackID = id;
- Navit.setMotionCallback(id, this);
- }
-
- public void setKeypressCallback(int id)
- {
- KeypressCallbackID = id;
- // set callback id also in main intent (for menus)
- Navit.setKeypressCallback(id, this);
- }
-
-
- protected void draw_polyline(Paint paint, int c[])
- {
- int i, ndashes;
- float [] intervals;
- // Log.e("NavitGraphics","draw_polyline");
- paint.setStrokeWidth(c[0]);
- paint.setARGB(c[1],c[2],c[3],c[4]);
- paint.setStyle(Paint.Style.STROKE);
- //paint.setAntiAlias(true);
- //paint.setStrokeWidth(0);
- ndashes=c[5];
- intervals=new float[ndashes+(ndashes%2)];
- for (i = 0; i < ndashes; i++)
- intervals[i]=c[6+i];
-
- if((ndashes%2)==1)
- intervals[ndashes]=intervals[ndashes-1];
-
- if(ndashes>0)
- paint.setPathEffect(new android.graphics.DashPathEffect(intervals,0.0f));
-
- Path path = new Path();
- path.moveTo(c[6+ndashes], c[7+ndashes]);
- for (i = 8+ndashes; i < c.length; i += 2)
- {
- path.lineTo(c[i], c[i + 1]);
- }
- //global_path.close();
- draw_canvas.drawPath(path, paint);
- paint.setPathEffect(null);
- }
-
- protected void draw_polygon(Paint paint, int c[])
- {
- //Log.e("NavitGraphics","draw_polygon");
- paint.setStrokeWidth(c[0]);
- paint.setARGB(c[1],c[2],c[3],c[4]);
- paint.setStyle(Paint.Style.FILL);
- //paint.setAntiAlias(true);
- //paint.setStrokeWidth(0);
- Path path = new Path();
- path.moveTo(c[5], c[6]);
- for (int i = 7; i < c.length; i += 2)
- {
- path.lineTo(c[i], c[i + 1]);
- }
- //global_path.close();
- draw_canvas.drawPath(path, paint);
- }
- protected void draw_rectangle(Paint paint, int x, int y, int w, int h)
- {
- //Log.e("NavitGraphics","draw_rectangle");
- Rect r = new Rect(x, y, x + w, y + h);
- paint.setStyle(Paint.Style.FILL);
- paint.setAntiAlias(true);
- //paint.setStrokeWidth(0);
- draw_canvas.drawRect(r, paint);
- }
- protected void draw_circle(Paint paint, int x, int y, int r)
- {
- //Log.e("NavitGraphics","draw_circle");
- // float fx = x;
- // float fy = y;
- // float fr = r / 2;
- paint.setStyle(Paint.Style.STROKE);
- draw_canvas.drawCircle(x, y, r / 2, paint);
- }
- protected void draw_text(Paint paint, int x, int y, String text, int size, int dx, int dy, int bgcolor)
- {
- int oldcolor=paint.getColor();
- Path path=null;
-
- paint.setTextSize(size / 15);
- paint.setStyle(Paint.Style.FILL);
-
- if (dx != 0x10000 || dy != 0) {
- path = new Path();
- path.moveTo(x, y);
- path.rLineTo(dx, dy);
- paint.setTextAlign(android.graphics.Paint.Align.LEFT);
- }
-
- if(bgcolor!=0) {
- paint.setStrokeWidth(3);
- paint.setColor(bgcolor);
- paint.setStyle(Paint.Style.STROKE);
- if(path==null) {
- draw_canvas.drawText(text, x, y, paint);
- } else {
- draw_canvas.drawTextOnPath(text, path, 0, 0, paint);
- }
- paint.setStyle(Paint.Style.FILL);
- paint.setColor(oldcolor);
- }
-
- if(path==null) {
- draw_canvas.drawText(text, x, y, paint);
- } else {
- draw_canvas.drawTextOnPath(text, path, 0, 0, paint);
- }
- paint.clearShadowLayer();
- }
- protected void draw_image(Paint paint, int x, int y, Bitmap bitmap)
- {
- //Log.e("NavitGraphics","draw_image");
- // float fx = x;
- // float fy = y;
- draw_canvas.drawBitmap(bitmap, x, y, null);
- }
-
- /* takes an image and draws it on the screen as a prerendered maptile
- *
- *
- *
- * @param paint Paint object used to draw the image
- * @param count the number of points specified
- * @param p0x and p0y specifying the top left point
- * @param p1x and p1y specifying the top right point
- * @param p2x and p2y specifying the bottom left point, not yet used but kept
- * for compatibility with the linux port
- * @param bitmap Bitmap object holding the image to draw
- *
- * TODO make it work with 4 points specified to make it work for 3D mapview, so it can be used
- * for small but very detailed maps as well as for large maps with very little detail but large
- * coverage.
- * TODO make it work with rectangular tiles as well ?
- */
- protected void draw_image_warp(Paint paint, int count, int p0x, int p0y, int p1x, int p1y, int p2x, int p2y, Bitmap bitmap)
- {
-
- float width;
- float scale;
- float deltaY;
- float deltaX;
- float angle;
- Matrix matrix;
-
- if (count == 3)
- {
- matrix = new Matrix();
- deltaX = p1x - p0x;
- deltaY = p1y - p0y;
- width = (float) (Math.sqrt((deltaX * deltaX) + (deltaY * deltaY)));
- angle = (float) (Math.atan2(deltaY, deltaX) * 180d / Math.PI);
- scale = width / bitmap.getWidth();
- matrix.preScale(scale, scale);
- matrix.postTranslate(p0x, p0y);
- matrix.postRotate(angle, p0x, p0y);
- draw_canvas.drawBitmap(bitmap, matrix, paint);
- }
- }
-
- /* These constants must be synchronized with enum draw_mode_num in graphics.h. */
- public static final int draw_mode_begin = 0;
- public static final int draw_mode_end = 1;
-
- protected void draw_mode(int mode)
- {
- //Log.e("NavitGraphics", "draw_mode mode=" + mode + " parent_graphics="
- // + String.valueOf(parent_graphics));
-
- if (mode == draw_mode_end) {
- if (parent_graphics == null) {
- view.invalidate();
- } else {
- parent_graphics.view.invalidate(get_rect());
- }
- }
- if (mode == draw_mode_begin && parent_graphics != null) {
- draw_bitmap.eraseColor(0);
- }
-
- }
- protected void draw_drag(int x, int y)
- {
- //Log.e("NavitGraphics","draw_drag");
- pos_x = x;
- pos_y = y;
- }
- protected void overlay_disable(int disable)
- {
- Log.e("NavitGraphics","overlay_disable: " + disable + "Parent: " + (parent_graphics != null));
- // assume we are NOT in map view mode!
- if (parent_graphics == null)
- in_map = (disable==0);
- if (overlay_disabled != disable) {
- overlay_disabled = disable;
- if (parent_graphics != null) {
- parent_graphics.view.invalidate(get_rect());
- }
- }
- }
-
- protected void overlay_resize(int x, int y, int w, int h, int wraparound)
- {
- //Log.e("NavitGraphics","overlay_resize");
- draw_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
- bitmap_w = w;
- bitmap_h = h;
- pos_x = x;
- pos_y = y;
- pos_wraparound = wraparound;
- draw_canvas.setBitmap(draw_bitmap);
- }
-
- public static String getLocalizedString(String text)
- {
- String ret = CallbackLocalizedString(text);
- //Log.e("NavitGraphics", "callback_handler -> lozalized string=" + ret);
- return ret;
- }
-
-
-
-
- /**
- * get localized string
- */
- public static native String CallbackLocalizedString(String s);
-
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitMap.java b/navit/android/src/org/navitproject/navit/NavitMap.java
deleted file mode 100644
index b7bd265a4..000000000
--- a/navit/android/src/org/navitproject/navit/NavitMap.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.navitproject.navit;
-
-import java.io.File;
-
-public class NavitMap {
- String fileName;
- String mapName;
- String mapPath;
-
- public NavitMap(String path, String map_file_name) {
- mapPath = path;
- fileName = map_file_name;
- if (map_file_name.endsWith(".bin")) {
- mapName = map_file_name.substring(0, map_file_name.length() - 4);
- } else {
- mapName = map_file_name;
- }
- }
-
- public NavitMap(String map_location) {
- File mapFile = new File(map_location);
-
- mapPath = mapFile.getParent() + "/";
- fileName = mapFile.getName();
- if (fileName.endsWith(".bin")) {
- mapName = fileName.substring(0, fileName.length() - 4);
- } else {
- mapName = fileName;
- }
- }
-
- public long size() {
- File map_file = new File(mapPath + fileName);
- return map_file.length();
- }
-
- public String getLocation() {
- return mapPath + fileName;
- }
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitMapDownloader.java b/navit/android/src/org/navitproject/navit/NavitMapDownloader.java
deleted file mode 100644
index 736af33c8..000000000
--- a/navit/android/src/org/navitproject/navit/NavitMapDownloader.java
+++ /dev/null
@@ -1,711 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-
-import android.location.Location;
-import android.os.Bundle;
-import android.os.Message;
-import android.os.StatFs;
-import android.util.Log;
-
-/**
- * @author rikky
- *
- */
-public class NavitMapDownloader extends Thread
-{
- public static class osm_map_values
- {
- String lon1;
- String lat1;
- String lon2;
- String lat2;
- String map_name = "";
- long est_size_bytes = 0;
- int level = 0;
-
-
- public osm_map_values(String mapname, String lon_1, String lat_1, String lon_2, String lat_2,
- long bytes_est, int level)
- {
- this.map_name = mapname;
- this.lon1 = lon_1;
- this.lat1 = lat_1;
- this.lon2 = lon_2;
- this.lat2 = lat_2;
- this.est_size_bytes = bytes_est;
- this.level = level;
- }
-
- public boolean isInMap(Location location) {
- double longitude_1 = Double.valueOf(this.lon1);
- double latitude_1 = Double.valueOf(this.lat1);
- double longitude_2 = Double.valueOf(this.lon2);
- double latitude_2 = Double.valueOf(this.lat2);
-
- if (location.getLongitude() < longitude_1)
- return false;
- if (location.getLongitude() > longitude_2)
- return false;
- if (location.getLatitude() < latitude_1)
- return false;
- if (location.getLatitude() > latitude_2)
- return false;
-
- return true;
- }
- }
-
- //
- // define the maps here
- // size estimations updated 2017-06-22
- //
- public static final osm_map_values[] osm_maps = {
- new osm_map_values(Navit._("Whole Planet"), "-180", "-90", "180", "90", 23992258630L, 0),
- new osm_map_values(Navit._("Africa"), "-30.89", "-36.17", "61.68", "38.40", 2070076339L, 0),
- new osm_map_values(Navit._("Angola"), "11.4", "-18.1", "24.2", "-5.3", 127557789L, 1),
- new osm_map_values(Navit._("Burundi"), "28.9", "-4.5", "30.9", "-2.2", 124049667L, 1),
- new osm_map_values(Navit._("Canary Islands"), "-18.69", "26.52", "-12.79", "29.99", 133565815L, 1),
- new osm_map_values(Navit._("Congo, Democratic Republic of the"), "11.7", "-13.6", "31.5", "5.7", 244228485L, 1),
- new osm_map_values(Navit._("Ethiopia"), "32.89", "3.33", "48.07", "14.97", 153067406L, 1),
- new osm_map_values(Navit._("Guinea"), "-15.47", "7.12", "-7.58", "12.74", 188047126L, 1),
- new osm_map_values(Navit._("Cote d'Ivoire"), "-8.72", "4.09", "-2.43", "10.80", 132187496L, 1),
- new osm_map_values(Navit._("Kenya"), "33.8", "-5.2", "42.4", "4.9", 190073089L, 1),
- new osm_map_values(Navit._("Lesotho"), "26.9", "-30.7", "29.6", "-28.4", 196189429L, 1),
- new osm_map_values(Navit._("Liberia"), "-15.00", "-0.73", "-7.20", "8.65", 156257253L, 1),
- new osm_map_values(Navit._("Libya"), "9.32", "19.40", "25.54", "33.63", 126046917L, 1),
- new osm_map_values(Navit._("Madagascar"), "42.25", "-26.63", "51.20", "-11.31", 145210721L, 1),
- new osm_map_values(Navit._("Namibia")+"+"+Navit._("Botswana"), "11.4", "-29.1", "29.5", "-16.9", 248970987L, 1),
- new osm_map_values(Navit._("Reunion"), "55.2", "-21.4", "55.9", "-20.9", 126008774L, 1),
- new osm_map_values(Navit._("Rwanda"), "28.8", "-2.9", "30.9", "-1.0", 128267595L, 1),
- new osm_map_values(Navit._("South Africa")+"+"+Navit._("Lesotho"), "15.93", "-36.36", "33.65", "-22.08", 307280006L, 1),
- new osm_map_values(Navit._("Tanzania, United Republic of"), "29.19", "-11.87", "40.74", "-0.88", 253621029L, 1),
- new osm_map_values(Navit._("Uganda"), "29.3", "-1.6", "35.1", "4.3", 179134521L, 1),
- new osm_map_values(Navit._("Asia"), "23.8", "0.1", "195.0", "82.4", 5113673780L, 0),
- new osm_map_values(Navit._("Azerbaijan"), "44.74", "38.34", "51.69", "42.37", 138346406L, 1),
- new osm_map_values(Navit._("China"), "67.3", "5.3", "135.0", "54.5", 1718108758L, 1),
- new osm_map_values(Navit._("Cyprus"), "32.0", "34.5", "34.9", "35.8", 118472448L, 1),
- new osm_map_values(Navit._("India")+"+"+Navit._("Nepal"), "67.9", "5.5", "89.6", "36.0", 601877877L, 1),
- new osm_map_values(Navit._("Indonesia"), "93.7", "-17.3", "155.5", "7.6", 420741405L, 1),
- new osm_map_values(Navit._("Iran, Islamic Republic of"), "43.5", "24.4", "63.6", "40.4", 242016066L, 1),
- new osm_map_values(Navit._("Iraq"), "38.7", "28.5", "49.2", "37.4", 160751805L, 1),
- new osm_map_values(Navit._("Israel"), "33.99", "29.8", "35.95", "33.4", 155685778L, 1),
- new osm_map_values(Navit._("Japan")+"+"+Navit._("Korea"), "123.6", "25.2", "151.3", "47.1", 1029080156L, 1),
- new osm_map_values(Navit._("Kazakhstan"), "46.44", "40.89", "87.36", "55.45", 407633007L, 1),
- new osm_map_values(Navit._("Kyrgyzstan"), "69.23", "39.13", "80.33", "43.29", 147997835L, 1),
- new osm_map_values(Navit._("Malaysia")+"+"+Navit._("Singapore"), "94.3", "-5.9", "108.6", "6.8", 168816435L, 1),
- new osm_map_values(Navit._("Mongolia"), "87.5", "41.4", "120.3", "52.7", 153534851L, 1),
- new osm_map_values(Navit._("Pakistan"), "60.83", "23.28", "77.89", "37.15", 217644321L, 1),
- new osm_map_values(Navit._("Philippines"), "115.58", "4.47", "127.85", "21.60", 281428307L, 1),
- new osm_map_values(Navit._("Saudi Arabia"), "33.2", "16.1", "55.9", "33.5", 242648303L, 1),
- new osm_map_values(Navit._("Taiwan"), "119.1", "21.5", "122.5", "25.2", 1029080156L, 1),
- new osm_map_values(Navit._("Thailand"), "97.5", "5.7", "105.2", "19.7", 185135492L, 1),
- new osm_map_values(Navit._("Turkey"), "25.1", "35.8", "46.4", "42.8", 331087441L, 1),
- new osm_map_values(Navit._("Turkmenistan"), "51.78", "35.07", "66.76", "42.91", 131045087L, 1),
- new osm_map_values(Navit._("UAE+Other"), "51.5", "22.6", "56.7", "26.5", 128934674L, 1),
- new osm_map_values(Navit._("Australia")+"+"+Navit._("Oceania"), "89.84", "-57.39", "179.79", "7.26", 782722650L, 0),
- new osm_map_values(Navit._("Australia"), "110.5", "-44.2", "154.9", "-9.2", 348652900L, 0),
- new osm_map_values(Navit._("Tasmania"), "144.0", "-45.1", "155.3", "-24.8", 253231890L, 1),
- new osm_map_values(Navit._("Victoria")+"+"+Navit._("New South Wales"), "140.7", "-39.4", "153.7", "-26.9", 241500829L, 1),
- new osm_map_values(Navit._("New Caledonia"), "157.85", "-25.05", "174.15", "-16.85", 115512336L, 1),
- new osm_map_values(Navit._("New Zealand"), "165.2", "-47.6", "179.1", "-33.7", 239264192L, 1),
- new osm_map_values(Navit._("Europe"), "-12.97", "33.59", "34.15", "72.10", 11984126789L, 0),
- new osm_map_values(Navit._("Western Europe"), "-17.6", "34.5", "42.9", "70.9", 12648810717L, 1),
- new osm_map_values(Navit._("Austria"), "9.4", "46.32", "17.21", "49.1", 898273634L, 1),
- new osm_map_values(Navit._("Azores"), "-31.62", "36.63", "-24.67", "40.13", 112687225L, 1),
- new osm_map_values(Navit._("BeNeLux"), "2.08", "48.87", "7.78", "54.52", 1771971595L, 1),
- new osm_map_values(Navit._("Netherlands"), "3.07", "50.75", "7.23", "53.73", 1191828033L, 1),
- new osm_map_values(Navit._("Denmark"), "7.65", "54.32", "15.58", "58.07", 365606979L, 1),
- new osm_map_values(Navit._("Faroe Islands"), "-7.8", "61.3", "-6.1", "62.5", 109377568L, 1),
- new osm_map_values(Navit._("France"), "-5.45", "42.00", "8.44", "51.68", 3907969744L, 1),
- new osm_map_values(Navit._("Alsace"), "6.79", "47.27", "8.48", "49.17", 354249349L, 2),
- new osm_map_values(Navit._("Aquitaine"), "-2.27", "42.44", "1.50", "45.76", 443715019L, 2),
- new osm_map_values(Navit._("Auvergne"), "2.01", "44.57", "4.54", "46.85", 287663213L, 2),
- new osm_map_values(Navit._("Basse-Normandie"), "-2.09", "48.13", "1.03", "49.98", 262352354L, 2),
- new osm_map_values(Navit._("Bourgogne"), "2.80", "46.11", "5.58", "48.45", 298868796L, 2),
- new osm_map_values(Navit._("Bretagne"), "-5.58", "46.95", "-0.96", "48.99", 382770794L, 2),
- new osm_map_values(Navit._("Centre"), "0.01", "46.29", "3.18", "48.99", 474224721L, 2),
- new osm_map_values(Navit._("Champagne-Ardenne"), "3.34", "47.53", "5.94", "50.28", 269947824L, 2),
- new osm_map_values(Navit._("Corse"), "8.12", "41.32", "9.95", "43.28", 129902146L, 2),
- new osm_map_values(Navit._("Franche-Comte"), "5.20", "46.21", "7.83", "48.07", 324476070L, 2),
- new osm_map_values(Navit._("Haute-Normandie"), "-0.15", "48.62", "1.85", "50.18", 202782876L, 2),
- new osm_map_values(Navit._("Ile-de-France"), "1.40", "48.07", "3.61", "49.29", 311052699L, 2),
- new osm_map_values(Navit._("Languedoc-Roussillon"), "1.53", "42.25", "4.89", "45.02", 380145667L, 2),
- new osm_map_values(Navit._("Limousin"), "0.58", "44.87", "2.66", "46.50", 206696539L, 2),
- new osm_map_values(Navit._("Lorraine"), "4.84", "47.77", "7.72", "49.73", 330777318L, 2),
- new osm_map_values(Navit._("Midi-Pyrenees"), "-0.37", "42.18", "3.50", "45.10", 462618363L, 2),
- new osm_map_values(Navit._("Nord-pas-de-Calais"), "1.42", "49.92", "4.49", "51.31", 368467511L, 2),
- new osm_map_values(Navit._("Pays-de-la-Loire"), "-2.88", "46.20", "0.97", "48.62", 499471143L, 2),
- new osm_map_values(Navit._("Picardie"), "1.25", "48.79", "4.31", "50.43", 374308041L, 2),
- new osm_map_values(Navit._("Poitou-Charentes"), "-1.69", "45.04", "1.26", "47.23", 342125526L, 2),
- new osm_map_values(Navit._("Provence-Alpes-Cote-d-Azur"), "4.21", "42.91", "7.99", "45.18", 390306134L, 2),
- new osm_map_values(Navit._("Rhone-Alpes"), "3.65", "44.07", "7.88", "46.64", 510797942L, 2),
- new osm_map_values(Navit._("Germany"), "5.18", "46.84", "15.47", "55.64", 3521359466L, 1),
- new osm_map_values(Navit._("Baden-Wuerttemberg"), "7.32", "47.14", "10.57", "49.85", 674361124L, 2),
- new osm_map_values(Navit._("Bayern"), "8.92", "47.22", "13.90", "50.62", 860161150L, 2),
- new osm_map_values(Navit._("Mittelfranken"), "9.86", "48.78", "11.65", "49.84", 203055195L, 2),
- new osm_map_values(Navit._("Niederbayern"), "11.55", "47.75", "14.12", "49.42", 312924770L, 2),
- new osm_map_values(Navit._("Oberbayern"), "10.67", "47.05", "13.57", "49.14", 382734883L, 2),
- new osm_map_values(Navit._("Oberfranken"), "10.31", "49.54", "12.49", "50.95", 235258691L, 2),
- new osm_map_values(Navit._("Oberpfalz"), "11.14", "48.71", "13.47", "50.43", 264536012L, 2),
- new osm_map_values(Navit._("Schwaben"), "9.27", "47.10", "11.36", "49.09", 321141607L, 2),
- new osm_map_values(Navit._("Unterfranken"), "8.59", "49.16", "10.93", "50.67", 303720890L, 2),
- new osm_map_values(Navit._("Berlin"), "13.03", "52.28", "13.81", "52.73", 169019946L, 2),
- new osm_map_values(Navit._("Brandenburg"), "11.17", "51.30", "14.83", "53.63", 323497599L, 2),
- new osm_map_values(Navit._("Bremen"), "8.43", "52.96", "9.04", "53.66", 150963608L, 2),
- new osm_map_values(Navit._("Hamburg"), "9.56", "53.34", "10.39", "53.80", 156284421L, 2),
- new osm_map_values(Navit._("Hessen"), "7.72", "49.34", "10.29", "51.71", 432279328L, 2),
- new osm_map_values(Navit._("Mecklenburg-Vorpommern"), "10.54", "53.05", "14.48", "55.05", 213183908L, 2),
- new osm_map_values(Navit._("Niedersachsen"), "6.40", "51.24", "11.69", "54.22", 819766939L, 2),
- new osm_map_values(Navit._("Nordrhein-westfalen"), "5.46", "50.26", "9.52", "52.59", 967053517L, 2),
- new osm_map_values(Navit._("Rheinland-Pfalz"), "6.06", "48.91", "8.56", "51.00", 442868899L, 2),
- new osm_map_values(Navit._("Saarland"), "6.30", "49.06", "7.46", "49.69", 157721162L, 2),
- new osm_map_values(Navit._("Sachsen-Anhalt"), "10.50", "50.88", "13.26", "53.11", 287785088L, 2),
- new osm_map_values(Navit._("Sachsen"), "11.82", "50.11", "15.10", "51.73", 342620834L, 2),
- new osm_map_values(Navit._("Schleswig-Holstein"), "7.41", "53.30", "11.98", "55.20", 280293910L, 2),
- new osm_map_values(Navit._("Thueringen"), "9.81", "50.15", "12.72", "51.70", 269428239L, 2),
- new osm_map_values(Navit._("Germany")+"+"+Navit._("Austria")+"+"+Navit._("Switzerland"), "3.4", "44.5", "18.6", "55.1", 5746126429L, 1),
- new osm_map_values(Navit._("Iceland"), "-25.3", "62.8", "-11.4", "67.5", 124837162L, 1),
- new osm_map_values(Navit._("Ireland"), "-11.17", "51.25", "-5.23", "55.9", 234750271L, 1),
- new osm_map_values(Navit._("Italy"), "6.52", "36.38", "18.96", "47.19", 1610171395L, 1),
- new osm_map_values(Navit._("Spain")+"+"+Navit._("Portugal"), "-11.04", "34.87", "4.62", "44.41", 1039624918L, 1),
- new osm_map_values(Navit._("Mallorca"), "2.2", "38.8", "4.7", "40.2", 137200636L, 2),
- new osm_map_values(Navit._("Galicia"), "-10.0", "41.7", "-6.3", "44.1", 174549553L, 2),
- new osm_map_values(Navit._("Scandinavia"), "4.0", "54.4", "32.1", "71.5", 1398661090L, 1),
- new osm_map_values(Navit._("Finland"), "18.6", "59.2", "32.3", "70.3", 460997178L, 1),
- new osm_map_values(Navit._("Denmark"), "7.49", "54.33", "13.05", "57.88", 321870414L, 1),
- new osm_map_values(Navit._("Switzerland"), "5.79", "45.74", "10.59", "47.84", 552565332L, 1),
- new osm_map_values(Navit._("United Kingdom"), "-9.7", "49.6", "2.2", "61.2", 901724648L, 1),
- new osm_map_values(Navit._("England"), "-7.80", "48.93", "2.41", "56.14", 937728414L, 1),
- new osm_map_values(Navit._("Buckinghamshire"), "-1.19", "51.44", "-0.43", "52.25", 142256978L, 2),
- new osm_map_values(Navit._("Cambridgeshire"), "-0.55", "51.96", "0.56", "52.79", 142334001L, 2),
- new osm_map_values(Navit._("Cumbria"), "-3.96", "53.85", "-2.11", "55.24", 144422460L, 2),
- new osm_map_values(Navit._("East yorkshire with hull"), "-1.16", "53.50", "0.54", "54.26", 141518744L, 2),
- new osm_map_values(Navit._("Essex"), "-0.07", "51.40", "1.36", "52.14", 162542730L, 2),
- new osm_map_values(Navit._("Herefordshire"), "-3.19", "51.78", "-2.29", "52.45", 129368660L, 2),
- new osm_map_values(Navit._("Kent"), "-0.02", "50.81", "1.65", "51.53", 145482562L, 2),
- new osm_map_values(Navit._("Lancashire"), "-3.20", "53.43", "-2.00", "54.29", 148964975L, 2),
- new osm_map_values(Navit._("Leicestershire"), "-1.65", "52.34", "-0.61", "53.03", 154199956L, 2),
- new osm_map_values(Navit._("Norfolk"), "0.10", "52.30", "2.04", "53.41", 146017009L, 2),
- new osm_map_values(Navit._("Nottinghamshire"), "-1.39", "52.73", "-0.62", "53.55", 147986548L, 2),
- new osm_map_values(Navit._("Oxfordshire"), "-1.77", "51.41", "-0.82", "52.22", 142240992L, 2),
- new osm_map_values(Navit._("Shropshire"), "-3.29", "52.26", "-2.18", "53.05", 136909363L, 2),
- new osm_map_values(Navit._("Somerset"), "-3.89", "50.77", "-2.20", "51.40", 145186096L, 2),
- new osm_map_values(Navit._("South yorkshire"), "-1.88", "53.25", "-0.80", "53.71", 145902650L, 2),
- new osm_map_values(Navit._("Suffolk"), "0.29", "51.88", "1.81", "52.60", 143799697L, 2),
- new osm_map_values(Navit._("Surrey"), "-0.90", "51.02", "0.10", "51.52", 157987139L, 2),
- new osm_map_values(Navit._("Wiltshire"), "-2.41", "50.90", "-1.44", "51.76", 138652346L, 2),
- new osm_map_values(Navit._("Scotland"), "-8.13", "54.49", "-0.15", "61.40", 258853845L, 2),
- new osm_map_values(Navit._("Wales"), "-5.56", "51.28", "-2.60", "53.60", 193593409L, 2),
- new osm_map_values(Navit._("Albania"), "19.09", "39.55", "21.12", "42.72", 146199817L, 1),
- new osm_map_values(Navit._("Belarus"), "23.12", "51.21", "32.87", "56.23", 324470696L, 1),
- new osm_map_values(Navit._("Russian Federation"), "27.9", "41.5", "190.4", "77.6", 2148314279L, 1),
- new osm_map_values(Navit._("Bulgaria"), "24.7", "42.1", "24.8", "42.1", 109869373L, 1),
- new osm_map_values(Navit._("Bosnia and Herzegovina"), "15.69", "42.52", "19.67", "45.32", 187122485L, 1),
- new osm_map_values(Navit._("Czech Republic"), "11.91", "48.48", "19.02", "51.17", 904838442L, 1),
- new osm_map_values(Navit._("Croatia"), "13.4", "42.1", "19.4", "46.9", 460854751L, 1),
- new osm_map_values(Navit._("Estonia"), "21.5", "57.5", "28.2", "59.6", 173378927L, 1),
- new osm_map_values(Navit._("Greece"), "28.9", "37.8", "29.0", "37.8", 109435051L, 1),
- new osm_map_values(Navit._("Crete"), "23.3", "34.5", "26.8", "36.0", 115985063L, 1),
- new osm_map_values(Navit._("Hungary"), "16.08", "45.57", "23.03", "48.39", 350318541L, 1),
- new osm_map_values(Navit._("Latvia"), "20.7", "55.6", "28.3", "58.1", 188188140L, 1),
- new osm_map_values(Navit._("Lithuania"), "20.9", "53.8", "26.9", "56.5", 217852597L, 1),
- new osm_map_values(Navit._("Poland"), "13.6", "48.8", "24.5", "55.0", 1464968657L, 1),
- new osm_map_values(Navit._("Romania"), "20.3", "43.5", "29.9", "48.4", 347931565L, 1),
- new osm_map_values(Navit._("Ukraine"), "22.0", "44.3", "40.4", "52.4", 793611912L, 1),
- new osm_map_values(Navit._("North America"), "-178.1", "6.5", "-10.4", "84.0", 5601866516L, 0),
- new osm_map_values(Navit._("Alaska"), "-179.5", "49.5", "-129", "71.6", 207746039L, 1),
- new osm_map_values(Navit._("Canada"), "-141.3", "41.5", "-52.2", "70.2", 2635719651L, 1),
- new osm_map_values(Navit._("Hawaii"), "-161.07", "18.49", "-154.45", "22.85", 115016656L, 1),
- new osm_map_values(Navit._("USA")+Navit._(" (except Alaska and Hawaii)"), "-125.4", "24.3", "-66.5", "49.3", 4060487198L, 1),
- new osm_map_values(Navit._("Midwest"), "-104.11", "35.92", "-80.46", "49.46", 1145596450L, 2),
- new osm_map_values(Navit._("Michigan"), "-90.47", "41.64", "-79.00", "49.37", 538247019L, 2),
- new osm_map_values(Navit._("Ohio"), "-84.87", "38.05", "-79.85", "43.53", 277022336L, 2),
- new osm_map_values(Navit._("Northeast"), "-80.58", "38.72", "-66.83", "47.53", 1017160709L, 2),
- new osm_map_values(Navit._("Massachusetts"), "-73.56", "40.78", "-68.67", "42.94", 340055487L, 2),
- new osm_map_values(Navit._("Vermont"), "-73.49", "42.68", "-71.41", "45.07", 139626067L, 2),
- new osm_map_values(Navit._("Pacific"), "-180.05", "15.87", "-129.75", "73.04", 207090640L, 2),
- new osm_map_values(Navit._("South"), "-106.70", "23.98", "-71.46", "40.70", 1747935356L, 2),
- new osm_map_values(Navit._("Arkansas"), "-94.67", "32.95", "-89.59", "36.60", 155658661L, 2),
- new osm_map_values(Navit._("District of Columbia"), "-77.17", "38.74", "-76.86", "39.05", 129235755L, 2),
- new osm_map_values(Navit._("Florida"), "-88.75", "23.63", "-77.67", "31.05", 224022108L, 2),
- new osm_map_values(Navit._("Louisiana"), "-94.09", "28.09", "-88.62", "33.07", 210120605L, 2),
- new osm_map_values(Navit._("Maryland"), "-79.54", "37.83", "-74.99", "40.22", 276462622L, 2),
- new osm_map_values(Navit._("Mississippi"), "-91.71", "29.99", "-88.04", "35.05", 177858031L, 2),
- new osm_map_values(Navit._("Oklahoma"), "-103.41", "33.56", "-94.38", "37.38", 200061473L, 2),
- new osm_map_values(Navit._("Texas"), "-106.96", "25.62", "-92.97", "36.58", 430089141L, 2),
- new osm_map_values(Navit._("Virginia"), "-83.73", "36.49", "-74.25", "39.52", 384187569L, 2),
- new osm_map_values(Navit._("West Virginia"), "-82.70", "37.15", "-77.66", "40.97", 220552071L, 2),
- new osm_map_values(Navit._("West"), "-133.11", "31.28", "-101.99", "49.51", 1152909162L, 2),
- new osm_map_values(Navit._("Arizona"), "-114.88", "30.01", "-108.99", "37.06", 182826833L, 2),
- new osm_map_values(Navit._("California"), "-125.94", "32.43", "-114.08", "42.07", 586923326L, 2),
- new osm_map_values(Navit._("Colorado"), "-109.11", "36.52", "-100.41", "41.05", 228623724L, 2),
- new osm_map_values(Navit._("Idaho"), "-117.30", "41.93", "-110.99", "49.18", 170684507L, 2),
- new osm_map_values(Navit._("Montana"), "-116.10", "44.31", "-102.64", "49.74", 176229800L, 2),
- new osm_map_values(Navit._("New Mexico"), "-109.10", "26.98", "-96.07", "37.05", 361793070L, 2),
- new osm_map_values(Navit._("Nevada"), "-120.2", "35.0", "-113.8", "42.1", 200614482L, 2),
- new osm_map_values(Navit._("Oregon"), "-124.8", "41.8", "-116.3", "46.3", 211462685L, 2),
- new osm_map_values(Navit._("Utah"), "-114.11", "36.95", "-108.99", "42.05", 151590197L, 2),
- new osm_map_values(Navit._("Washington State"), "-125.0", "45.5", "-116.9", "49.0", 222553768L, 2),
- new osm_map_values(Navit._("South+Middle America"), "-83.5", "-56.3", "-30.8", "13.7", 958895383L, 0),
- new osm_map_values(Navit._("Argentina"), "-73.9", "-57.3", "-51.6", "-21.0", 376857648L, 1),
- new osm_map_values(Navit._("Argentina")+"+"+Navit._("Chile"), "-77.2", "-56.3", "-52.7", "-16.1", 420275812L, 1),
- new osm_map_values(Navit._("Bolivia"), "-70.5", "-23.1", "-57.3", "-9.3", 175937824L, 1),
- new osm_map_values(Navit._("Brazil"), "-71.4", "-34.7", "-32.8", "5.4", 664872975L, 1),
- new osm_map_values(Navit._("Chile"), "-81.77", "-58.50", "-65.46", "-17.41", 241657330L, 1),
- new osm_map_values(Navit._("Cuba"), "-85.3", "19.6", "-74.0", "23.6", 129043575L, 1),
- new osm_map_values(Navit._("Colombia"), "-79.1", "-4.0", "-66.7", "12.6", 212016580L, 1),
- new osm_map_values(Navit._("Ecuador"), "-82.6", "-5.4", "-74.4", "2.3", 158857591L, 1),
- new osm_map_values(Navit._("Guyana")+"+"+Navit._("Suriname")+"+"+Navit._("Guyane Francaise"), "-62.0", "1.0", "-51.2", "8.9", 123000072L, 1),
- new osm_map_values(Navit._("Haiti")+"+"+Navit._("Dominican Republic"), "-74.8", "17.3", "-68.2", "20.1", 149925689L, 1),
- new osm_map_values(Navit._("Jamaica"), "-78.6", "17.4", "-75.9", "18.9", 113961998L, 1),
- new osm_map_values(Navit._("Mexico"), "-117.6", "14.1", "-86.4", "32.8", 551307973L, 1),
- new osm_map_values(Navit._("Paraguay"), "-63.8", "-28.1", "-53.6", "-18.8", 159498397L, 1),
- new osm_map_values(Navit._("Peru"), "-82.4", "-18.1", "-67.5", "0.4", 212490557L, 1),
- new osm_map_values(Navit._("Uruguay"), "-59.2", "-36.5", "-51.7", "-29.7", 157482719L, 1),
- new osm_map_values(Navit._("Venezuela"), "-73.6", "0.4", "-59.7", "12.8", 167295729L, 1)
- };
-
- private String map_filename_path;
-
- public static NavitMap[] getAvailableMaps() {
- class filterMaps implements FilenameFilter {
- public boolean accept(File dir, String filename) {
- if (filename.endsWith(".bin"))
- return true;
- return false;
- }
- }
- NavitMap maps[] = new NavitMap[0];
- File map_dir = new File(Navit.map_filename_path);
- String map_file_names[] = map_dir.list(new filterMaps());
- if (map_file_names != null) {
- maps = new NavitMap[map_file_names.length];
- for (int map_file_index = 0; map_file_index < map_file_names.length; map_file_index++) {
- maps[map_file_index] = new NavitMap(Navit.map_filename_path, map_file_names[map_file_index]);
- }
- }
- return maps;
- }
- private Boolean stop_me = false;
- private osm_map_values map_values;
- private int map_id;
- private long uiLastUpdated = -1;
-
- private Boolean retryDownload = false; //Download failed, but
- //we should try to resume
- private static final int SOCKET_CONNECT_TIMEOUT = 60000; // 60 secs.
- private static final int SOCKET_READ_TIMEOUT = 120000; // 120 secs.
- private static final int MAP_WRITE_FILE_BUFFER = 1024 * 64;
- private static final int MAP_WRITE_MEM_BUFFER = 1024 * 64;
- private static final int MAP_READ_FILE_BUFFER = 1024 * 64;
- private static final int UPDATE_PROGRESS_TIME_NS = 1000 * 1000000; // 1ns=1E-9s
- private static final int MAX_RETRIES = 5;
- private static final String TAG = "NavitMapDownloader";
-
- protected int retry_counter = 0;
-
- public NavitMapDownloader(int map_id) {
- this.map_values = osm_maps[map_id];
- this.map_id=map_id;
- this.map_filename_path=Navit.map_filename_path;
- }
-
- public void run() {
- stop_me = false;
- retry_counter = 0;
-
- Log.v(TAG, "start download " + map_values.map_name);
- updateProgress(0, map_values.est_size_bytes, Navit._("downloading") + ": " + map_values.map_name);
-
- boolean success;
- do {
- try {
- Thread.sleep(10 + retry_counter * 1000);
- } catch (InterruptedException e1) {}
- retryDownload = false;
- success = download_osm_map();
- } while ( !success
- && retryDownload
- && retry_counter < MAX_RETRIES
- && !stop_me);
-
- if (success) {
- toast(map_values.map_name + " " + Navit._("ready"));
- getMapInfoFile().delete();
- Log.d(TAG, "success");
- }
-
- if (success || stop_me ) {
- NavitDialogs.sendDialogMessage( NavitDialogs.MSG_MAP_DOWNLOAD_FINISHED
- , map_filename_path + map_values.map_name + ".bin", null, -1, success ? 1 : 0 , map_id );
- }
- }
-
- public void stop_thread() {
- stop_me = true;
- Log.d(TAG, "stop_me -> true");
- }
-
- protected boolean checkFreeSpace(long needed_bytes) {
- long free_space = getFreeSpace();
-
- if ( needed_bytes <= 0 )
- needed_bytes = MAP_WRITE_FILE_BUFFER;
-
- if (free_space < needed_bytes ) {
- String msg;
- Log.e(TAG, "Not enough free space or media not available. Please free at least " + needed_bytes / 1024 /1024 + "Mb.");
- if(free_space<0)
- msg=Navit._("Media selected for map storage is not available");
- else
- msg=Navit._("Not enough free space");
- updateProgress(free_space, needed_bytes, Navit._("Error downloading map!") + "\n" + msg);
- return false;
- }
- return true;
- }
-
- protected boolean deleteMap() {
- File finalOutputFile = getMapFile();
-
- if (finalOutputFile.exists()) {
- Message msg =
- Message.obtain(Navit.N_NavitGraphics.callback_handler,
- NavitGraphics.msg_type.CLB_DELETE_MAP.ordinal());
- Bundle b = new Bundle();
- b.putString("title", finalOutputFile.getAbsolutePath());
- msg.setData(b);
- msg.sendToTarget();
- return true;
- }
- return false;
- }
-
- /**
- * @param map_values
- * @return
- */
- protected boolean download_osm_map() {
- long already_read = 0;
- long real_size_bytes = 0;
- boolean resume = true;
-
- File outputFile = getDestinationFile();
- long old_download_size = outputFile.length();
-
- URL url = null;
- if (old_download_size > 0) {
- url = readFileInfo();
- }
-
- if (url == null) {
- resume = false;
- url = getDownloadURL();
- }
-
- // URL url = new URL("http://192.168.2.101:8080/zweibruecken.bin");
- URLConnection c = initConnection(url);
- if (c != null) {
-
- if (resume) {
- c.setRequestProperty("Range", "bytes=" + old_download_size + "-");
- already_read = old_download_size;
- }
- try {
- real_size_bytes=Long.parseLong(c.getHeaderField("Content-Length")) + already_read;
- } catch(Exception e) {
- real_size_bytes=-1;
- }
-
- long fileTime = c.getLastModified();
-
- if (!resume) {
- outputFile.delete();
- writeFileInfo(c, real_size_bytes);
- }
-
- if (real_size_bytes <= 0)
- real_size_bytes = map_values.est_size_bytes;
-
- Log.d(TAG, "size: " + real_size_bytes + ", read: " + already_read + ", timestamp: " + fileTime
- + ", Connection ref: " + c.getURL());
-
- if (checkFreeSpace(real_size_bytes - already_read)
- && downloadData(c, already_read, real_size_bytes, resume, outputFile)) {
-
- File finalOutputFile = getMapFile();
- // delete an already existing file first
- finalOutputFile.delete();
- // rename file to its final name
- outputFile.renameTo(finalOutputFile);
- return true;
- }
- }
- return false;
- }
-
- protected File getDestinationFile() {
- File outputFile = new File(map_filename_path, map_values.map_name + ".tmp");
- outputFile.getParentFile().mkdir();
- return outputFile;
- }
-
- protected boolean downloadData(URLConnection c, long already_read, long real_size_bytes
- , boolean resume,File outputFile) {
- boolean success = false;
- BufferedOutputStream buf = getOutputStream(outputFile, resume);
- BufferedInputStream bif = getInputStream(c);
-
- if (buf != null && bif != null) {
- success = readData(buf, bif, already_read, real_size_bytes);
- // always cleanup, as we might get errors when trying to resume
- try {
- buf.flush();
- buf.close();
-
- bif.close();
- } catch (IOException e) {
- }
- }
- return success;
- }
-
- protected URL getDownloadURL() {
- URL url = null;
- try {
- url =
- new URL("http://maps.navit-project.org/api/map/?bbox=" + map_values.lon1 + "," + map_values.lat1
- + "," + map_values.lon2 + "," + map_values.lat2);
- } catch (MalformedURLException e) {
- Log.e(TAG, "We failed to create a URL to " + map_values.map_name);
- e.printStackTrace();
- return null;
- }
- Log.v(TAG, "connect to " + url.toString());
- return url;
- }
-
- protected long getFreeSpace() {
- try {
- StatFs fsInfo = new StatFs(map_filename_path);
- return (long)fsInfo.getAvailableBlocks() * fsInfo.getBlockSize();
- } catch(Exception e) {
- return -1;
- }
- }
-
- protected BufferedInputStream getInputStream(URLConnection c) {
- BufferedInputStream bif = null;
- try {
- bif = new BufferedInputStream(c.getInputStream(), MAP_READ_FILE_BUFFER);
- } catch (FileNotFoundException e) {
- Log.e(TAG, "File not found on server: " + e);
- if (retry_counter > 0) {
- getMapInfoFile().delete();
- }
- enableRetry();
- bif = null;
- } catch (IOException e) {
- Log.e(TAG, "Error reading from server: " + e);
- enableRetry();
- bif = null;
- }
- return bif;
- }
-
- protected File getMapFile() {
- return new File(map_filename_path, map_values.map_name + ".bin");
- }
-
- protected File getMapInfoFile() {
- return new File(map_filename_path, map_values.map_name + ".tmp.info");
- }
-
- protected BufferedOutputStream getOutputStream(File outputFile, boolean resume) {
- BufferedOutputStream buf = null;
- try {
- buf = new BufferedOutputStream(new FileOutputStream(outputFile, resume), MAP_WRITE_FILE_BUFFER);
- } catch (FileNotFoundException e) {
- Log.e(TAG, "Could not open output file for writing: " + e);
- buf = null;
- }
- return buf;
- }
-
- protected URLConnection initConnection(URL url) {
- HttpURLConnection c = null;
- try {
- c = (HttpURLConnection) url.openConnection();
- c.setRequestMethod("GET");
- } catch (Exception e) {
- Log.e(TAG, "Failed connecting server: " + e);
- enableRetry();
- return null;
- }
-
- c.setReadTimeout(SOCKET_READ_TIMEOUT);
- c.setConnectTimeout(SOCKET_CONNECT_TIMEOUT);
- return c;
- }
-
- protected boolean readData(OutputStream buf, InputStream bif, long already_read, long real_size_bytes) {
- long start_timestamp = System.nanoTime();
- byte[] buffer = new byte[MAP_WRITE_MEM_BUFFER];
- int len1 = 0;
- long mapFileSize = real_size_bytes;
- long startOffset = already_read;
- boolean success = false;
-
- try {
- while (!stop_me && (len1 = bif.read(buffer)) != -1) {
- already_read += len1;
- updateProgress(start_timestamp, startOffset, already_read, mapFileSize);
-
- try {
- buf.write(buffer, 0, len1);
- } catch (IOException e) {
- Log.d(TAG, "Error: " + e);
- if ( !checkFreeSpace(real_size_bytes - already_read + MAP_WRITE_FILE_BUFFER)) {
- if (deleteMap()) {
- enableRetry();
- } else {
- updateProgress(already_read, real_size_bytes, Navit._("Error downloading map!") + "\n"
- + Navit._("Not enough free space"));
- }
- } else {
- updateProgress(already_read, real_size_bytes, Navit._("Error writing map!"));
- }
-
- return false;
- }
- }
-
- if (stop_me) {
- toast(Navit._("Map download aborted!"));
- } else if ( already_read < real_size_bytes ) {
- Log.d(TAG, "Server send only " + already_read + " bytes of " + real_size_bytes);
- enableRetry();
- } else {
- success = true;
- }
- } catch (IOException e) {
- Log.d(TAG, "Error: " + e);
-
- enableRetry();
- updateProgress(already_read, real_size_bytes, Navit._("Error downloading map!"));
- }
-
- return success;
- }
-
- protected URL readFileInfo() {
- URL url = null;
- try {
- ObjectInputStream infoStream = new ObjectInputStream(new FileInputStream(getMapInfoFile()));
- String resume_proto = infoStream.readUTF();
- infoStream.readUTF(); // read the host name (unused for now)
- String resume_file = infoStream.readUTF();
- infoStream.close();
- // looks like the same file, try to resume
- Log.v(TAG, "Try to resume download");
- url = new URL(resume_proto + "://" + "maps.navit-project.org" + resume_file);
- } catch (Exception e) {
- getMapInfoFile().delete();
- }
- return url;
- }
-
- protected void toast(String message) {
- NavitDialogs.sendDialogMessage(NavitDialogs.MSG_TOAST, null, message, -1, 0, 0);
- }
-
- protected void updateProgress(long startTime, long offsetBytes, long readBytes, long maxBytes) {
- long currentTime = System.nanoTime();
-
- if ((currentTime > uiLastUpdated + UPDATE_PROGRESS_TIME_NS) && startTime!=currentTime) {
- float per_second_overall = (readBytes - offsetBytes) / ((currentTime - startTime) / 1000000000f);
- long bytes_remaining = maxBytes - readBytes;
- int eta_seconds = (int) (bytes_remaining / per_second_overall);
-
- String eta_string;
- if (eta_seconds > 60) {
- eta_string = (int) (eta_seconds / 60f) + " m";
- } else {
- eta_string = eta_seconds + " s";
- }
- String info =
- String.format("%s: %s\n %dMb / %dMb\n %.1f kb/s %s: %s", Navit._("downloading")
- , map_values.map_name, readBytes / 1024 / 1024, maxBytes / 1024 / 1024,
- per_second_overall / 1024f, Navit._("ETA"), eta_string);
-
- if (retry_counter > 0) {
- info += "\n Retry " + retry_counter + "/" + MAX_RETRIES;
- }
- Log.e(TAG, "info: " + info);
-
- updateProgress(readBytes, maxBytes, info);
- uiLastUpdated = currentTime;
- }
- }
-
- protected void updateProgress(long positionBytes, long maximumBytes, String infoText) {
- NavitDialogs.sendDialogMessage(NavitDialogs.MSG_PROGRESS_BAR, Navit._("Map download"), infoText
- , NavitDialogs.DIALOG_MAPDOWNLOAD, (int) (maximumBytes / 1024),
- (int) (positionBytes / 1024));
- }
-
- protected void writeFileInfo(URLConnection c, long sizeInBytes) {
- ObjectOutputStream infoStream;
- try {
- infoStream = new ObjectOutputStream(new FileOutputStream(getMapInfoFile()));
- infoStream.writeUTF(c.getURL().getProtocol());
- infoStream.writeUTF(c.getURL().getHost());
- infoStream.writeUTF(c.getURL().getFile());
- infoStream.writeLong(sizeInBytes);
- infoStream.close();
- } catch (Exception e) {
- Log.e(TAG, "Could not write info file for map download. Resuming will not be possible. (" + e.getMessage() + ")");
- }
- }
-
- void enableRetry() {
- retryDownload = true;
- retry_counter++;
- }
- // dialog send helper methods
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitRestoreTask.java b/navit/android/src/org/navitproject/navit/NavitRestoreTask.java
deleted file mode 100644
index aaffcb002..000000000
--- a/navit/android/src/org/navitproject/navit/NavitRestoreTask.java
+++ /dev/null
@@ -1,144 +0,0 @@
-
-package org.navitproject.navit;
-
-import android.app.Activity;
-import android.app.NotificationManager;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.SharedPreferences.Editor;
-import android.os.AsyncTask;
-import android.os.Environment;
-import android.widget.Toast;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.Map;
-import java.util.Map.Entry;
-
-public class NavitRestoreTask extends AsyncTask<Void, Void, String> {
-
- private Navit mActivity;
-
- private ProgressDialog mDialog;
-
- private String mTimestamp;
-
- public NavitRestoreTask(Navit context, String timestamp) {
- mActivity = context;
- mTimestamp = timestamp;
- }
-
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
-
- /* Create a Wait Progress Dialog to inform the User that we are working */
- mDialog = new ProgressDialog(mActivity);
- mDialog.setIndeterminate(true);
- mDialog.setMessage(mActivity.getString(R.string.restoring));
- mDialog.show();
- }
-
- @SuppressWarnings("unchecked")
- @Override
- protected String doInBackground(Void... v) {
-
- /* This is the Directory where all Subdirectories are stored by date */
- File backupDir = new File(Environment.getExternalStorageDirectory().getPath() + "/navit/backup/" + mTimestamp);
-
- /* Check if there is a Backup Directory */
- if (!backupDir.isDirectory())
- return mActivity.getString(R.string.backup_not_found);
-
- ObjectInputStream preferenceOIS = null;
- try {
- /* Delete all old Files in Home */
- mActivity.removeFileIfExists(Navit.NAVIT_DATA_DIR + "/home/bookmark.txt");
- mActivity.removeFileIfExists(Navit.NAVIT_DATA_DIR + "/home/destination.txt");
- mActivity.removeFileIfExists(Navit.NAVIT_DATA_DIR + "/home/gui_internal.txt");
-
-
- /* Restore Files in home */
- mActivity.copyFileIfExists(backupDir.getPath() + "/bookmark.txt", Navit.NAVIT_DATA_DIR + "/home/bookmark.txt");
- mActivity.copyFileIfExists(backupDir.getPath() + "/destination.txt", Navit.NAVIT_DATA_DIR + "/home/destination.txt");
- mActivity.copyFileIfExists(backupDir.getPath() + "/gui_internal.txt", Navit.NAVIT_DATA_DIR + "/home/gui_internal.txt");
-
- /* Restore Shared Preferences */
- preferenceOIS = new ObjectInputStream(new FileInputStream(backupDir.getPath() + "/preferences.bak"));
- Map<String, ?> entries = (Map<String, ?>) preferenceOIS.readObject();
-
- Editor prefEditor = mActivity.getSharedPreferences(Navit.NAVIT_PREFS, Context.MODE_PRIVATE).edit();
-
- /* Remove all old Preferences */
- prefEditor.clear();
-
- /* Iterate through all Entries and add them to our Preferences */
- for (Entry<String, ?> entry : entries.entrySet()) {
- Object value = entry.getValue();
- String key = entry.getKey();
-
- if (value instanceof Boolean)
- prefEditor.putBoolean(key, ((Boolean) value).booleanValue());
- else if (value instanceof Float)
- prefEditor.putFloat(key, ((Float) value).floatValue());
- else if (value instanceof Integer)
- prefEditor.putInt(key, ((Integer) value).intValue());
- else if (value instanceof Long)
- prefEditor.putLong(key, ((Long) value).longValue());
- else if (value instanceof String)
- prefEditor.putString(key, (String) value);
- }
-
- if (!prefEditor.commit())
- return mActivity.getString(R.string.failed_to_restore);
-
- }
- catch (Exception e) {
- e.printStackTrace();
- return mActivity.getString(R.string.failed_to_restore);
- }
- finally {
- try {
- /* Close Stream to prevent Resource leak */
- if (preferenceOIS != null)
- preferenceOIS.close();
- }
- catch (IOException e) {
-
- }
- }
-
- return null;
- }
-
- @Override
- protected void onPostExecute(String result) {
- super.onPostExecute(result);
-
- /* Dismiss the Wait Progress Dialog */
- mDialog.dismiss();
-
- /* If result is non null an Error occured */
- if (result != null) {
- Toast.makeText(mActivity, result, Toast.LENGTH_LONG).show();
- return;
- }
-
- /* Navit needs to be restarted. Currently the User has to restart it by himself */
- Toast.makeText(mActivity, mActivity.getString(R.string.restore_successful_please_restart_navit), Toast.LENGTH_LONG).show();
- NotificationManager nm = (NotificationManager) mActivity.getSystemService(Context.NOTIFICATION_SERVICE);
- nm.cancel(R.string.app_name);
- NavitVehicle.removeListener();
- mActivity.finish();
- }
-
- @Override
- protected void onCancelled() {
- super.onCancelled();
- Toast.makeText(mActivity, mActivity.getString(R.string.restore_failed), Toast.LENGTH_LONG).show();
- mDialog.dismiss();
- }
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitSensors.java b/navit/android/src/org/navitproject/navit/NavitSensors.java
deleted file mode 100644
index b263ed082..000000000
--- a/navit/android/src/org/navitproject/navit/NavitSensors.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * 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.
- */
-package org.navitproject.navit;
-
-import android.content.Context;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-
-
-
-public class NavitSensors implements SensorEventListener {
- private SensorManager mSensorManager;
- private int callbackid;
- public native void SensorCallback(int id, int sensor, float x, float y, float z);
-
-
- NavitSensors(Context context, int cbid)
- {
- mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
- mSensorManager.registerListener((SensorEventListener)this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
- mSensorManager.registerListener((SensorEventListener)this, mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL);
- callbackid=cbid;
- }
-
- public void
- onAccuracyChanged(Sensor sensor, int accuracy)
- {
- }
-
- public void
- onSensorChanged(SensorEvent sev)
- {
- // Log.e("NavitSensor","Type:" + sev.sensor.getType() + " X:" + sev.values[0] + " Y:"+sev.values[1]+" Z:"+sev.values[2]);
- SensorCallback(callbackid, sev.sensor.getType(), sev.values[0], sev.values[1], sev.values[2]);
- }
-}
-
diff --git a/navit/android/src/org/navitproject/navit/NavitSpeech.java b/navit/android/src/org/navitproject/navit/NavitSpeech.java
deleted file mode 100644
index ac6b5de4c..000000000
--- a/navit/android/src/org/navitproject/navit/NavitSpeech.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import android.util.Log;
-
-import com.google.tts.TTS;
-
-
-public class NavitSpeech implements Runnable {
- private TTS tts;
- private TTS.InitListener ttsInitListener;
- private String what;
- private Thread thread;
-
- NavitSpeech(Navit navit)
- {
- ttsInitListener = new TTS.InitListener() {
- public void onInit(int version) {
- }
- };
- tts=new TTS(navit, ttsInitListener, true);
- }
- public void run()
- {
- Log.e("NavitSpeech","In "+what);
- tts.speak(what, 0, null);
- }
- public void say(String what)
- {
- this.what=what;
- thread = new Thread(this, "speech thread");
- thread.start();
- }
-}
-
diff --git a/navit/android/src/org/navitproject/navit/NavitSpeech2.java b/navit/android/src/org/navitproject/navit/NavitSpeech2.java
deleted file mode 100644
index b4ec85d4e..000000000
--- a/navit/android/src/org/navitproject/navit/NavitSpeech2.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import android.content.Intent;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.pm.PackageManager;
-import android.app.AlertDialog;
-import android.speech.tts.TextToSpeech;
-import android.util.Log;
-
-
-public class NavitSpeech2 implements TextToSpeech.OnInitListener, NavitActivityResult {
- private TextToSpeech mTts;
- private Navit navit;
- int MY_DATA_CHECK_CODE=1;
-
-
- public void onInit(int status)
- {
- Log.e("NavitSpeech2","Status "+status);
- }
-
- public void onActivityResult(int requestCode, int resultCode, Intent data)
- {
- Log.e("NavitSpeech2","onActivityResult "+requestCode+" "+resultCode);
- if (requestCode == MY_DATA_CHECK_CODE) {
- if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
- // success, create the TTS instance
- mTts = new TextToSpeech(navit, this);
- } else {
- // missing data, ask to install it
- AlertDialog.Builder builder = new AlertDialog.Builder(navit);
- builder
- .setTitle(R.string.TTS_title_data_missing)
- .setMessage(R.string.TTS_qery_install_data)
- .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- Intent installIntent = new Intent();
- installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
- navit.startActivity(installIntent);
- }
- })
- .setNegativeButton(R.string.no, null)
- .show();
- }
- }
- }
-
- NavitSpeech2(Navit navit)
- {
- this.navit=navit;
- navit.setActivityResult(1, this);
- Log.e("NavitSpeech2","Create");
- Intent checkIntent = new Intent();
- checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
- if (navit.getPackageManager().resolveActivity(checkIntent, PackageManager.MATCH_DEFAULT_ONLY) != null) {
- Log.e("NavitSpeech2","ACTION_CHECK_TTS_DATA available");
- navit.startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
- } else {
- Log.e("NavitSpeech2","ACTION_CHECK_TTS_DATA not available, assume tts is working");
- mTts = new TextToSpeech(navit, this);
- }
- }
- public void say(String what)
- {
- if (mTts != null) {
- mTts.speak(what, TextToSpeech.QUEUE_FLUSH, null);
- }
- }
-}
-
diff --git a/navit/android/src/org/navitproject/navit/NavitTextTranslations.java b/navit/android/src/org/navitproject/navit/NavitTextTranslations.java
deleted file mode 100644
index 93aa5fe76..000000000
--- a/navit/android/src/org/navitproject/navit/NavitTextTranslations.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import java.util.HashMap;
-
-import android.util.Log;
-
-public class NavitTextTranslations
-{
- static String main_language = "en";
- static String sub_language = "EN";
- static String fallback_language = "en";
- static String fallback_sub_language = "EN";
- private static HashMap<String, HashMap<String, String>> Navit_text_lookup = new HashMap<String, HashMap<String, String>>();
-
- public static void init()
- {
- Log.e("NavitTextTranslations", "initializing translated text ...");
- String k = null;
- String[] v = null;
-/*
- k = "exit navit";
- v = new String[]{"en", "Exit Navit", "de", "Navit beenden", "nl", "Navit afsluiten", "fr","Quittez Navit"};
- p(k, v);
-
- k = "zoom in";
- v = new String[]{"en", "Zoom in", "fr", "Zoom-avant"};
- p(k, v);
-
- k = "zoom out";
- v = new String[]{"en", "Zoom out", "fr", "Zoom-arrière", "nl", "Zoom uit"};
- p(k, v);
-
- k = "address search";
- v = new String[]{"en", "Address search", "de", "Adresse suchen", "nl", "Zoek adres", "fr","Cherchez adresse"};
- p(k, v);
-
- k = "Mapdownload";
- v = new String[]{"en", "Mapdownload", "de", "Kartendownload"};
- p(k, v);
-
- k = "downloading";
- v = new String[]{"en", "downloading"};
- p(k, v);
-
- k = "Downloaded maps";
- v = new String[]{"en", "Downloaded maps", "de", "Heruntergeladene Karten", "nl", "Gedownloade kaarten", "fr","Cartes téléchargées" };
- p(k, v);
-
- k = "ETA";
- v = new String[]{"en", "ETA", "de", "fertig in"};
- p(k, v);
-
- k = "Error downloading map";
- v = new String[]{"en", "Error downloading map!", "de", "Fehler beim Kartendownload"};
- p(k, v);
-
- k = "ready";
- v = new String[]{"en", "ready", "de", "fertig"};
- p(k, v);
-
- k = "Ok";
- v = new String[]{"en", "OK"};
- p(k, v);
-
- k = "No address found";
- v = new String[]{"en", "No address found", "de", "Keine Adresse gefunden"};
- p(k, v);
-
- k = "Enter: City and Street";
- v = new String[]{"en", "Enter: City, Street", "de", "Stadt und Straße:"};
- p(k, v);
-
- k = "No search string entered";
- v = new String[]{"en", "No text entered", "de", "Keine Eingabe"};
- p(k, v);
-
- k = "setting destination to";
- v = new String[]{"en", "Setting destination to:", "de", "neues Fahrziel"};
- p(k, v);
-
- k = "getting search results";
- v = new String[]{"en", "getting search results", "de", "lade Suchergebnisse"};
- p(k, v);
-
- k = "searching ...";
- v = new String[]{"en", "searching ...", "de", "Suche läuft ..."};
- p(k, v);
-
- k = "No Results found!";
- v = new String[]{"en", "No Results found!", "de", "Suche liefert kein Ergebnis!"};
- p(k, v);
-
- k = "Map data (c) OpenStreetMap contributors, CC-BY-SA";
- v = new String[]{"en", "Map data (c) OpenStreetMap contributors, CC-BY-SA"};
- p(k, v);
-
- k = "partial match";
- v = new String[]{"en", "partial match", "de", "ungefähr"};
- p(k, v);
-
- k = "Search";
- v = new String[]{"en", "Search", "de", "suchen"};
- p(k, v);
-
- k = "drive here";
- v = new String[]{"en", "Route to here", "de", "Ziel setzen"};
- p(k, v);
-
- k = "loading search results";
- v = new String[]{"en", "Loading search results", "de", "lade Suchergebnisse"};
- p(k, v);
-
- k = "towns";
- v = new String[]{"en", "Towns", "de", "Städte"};
- p(k, v);
-*/
- Log.e("NavitTextTranslations", "... ready");
- }
-
- private static void p(String key, String[] values)
- {
- HashMap<String, String> t = new HashMap<String, String>();
- //Log.e("NavitTextTranslations", "trying: " + key);
- try
- {
- for (int i = 0; i < (int) (values.length / 2); i++)
- {
- t.put(values[i * 2], values[(i * 2) + 1]);
- }
- Navit_text_lookup.put(key, t);
- }
- catch (Exception e)
- {
- Log.e("NavitTextTranslations", "!!Error in translationkey: " + key);
- }
- }
-
- public static String get_text(String in)
- {
- String out = null;
- //Log.e("NavitTextTranslations", "lookup L:" + main_language + " T:" + in);
- try
- {
- out = Navit_text_lookup.get(in).get(main_language);
- }
- catch (Exception e)
- {
- // most likely there is not translation yet
- //Log.e("NavitTextTranslations", "lookup: exception");
- out = null;
- }
-
- if (out == null)
- {
- // always return a string for output (use fallback language)
- //Log.e("NavitTextTranslations", "using default language");
- try
- {
- out = Navit_text_lookup.get(in).get(fallback_language);
- }
- catch (Exception e)
- {
- //Log.e("NavitTextTranslations", "using default language: exception");
- // most likely there is not translation yet
- out = null;
- }
- }
-
- if (out == null)
- {
- // if we still dont have any text, use the ".mo" file and call the c-function gettext(in)
- out = NavitGraphics.getLocalizedString(in);
- if (out != null)
- {
- HashMap<String, String> langmap = new HashMap<String, String>();
- langmap.put(main_language, out);
- Navit_text_lookup.put(in, langmap);
- }
-
- //Log.e("NavitTextTranslations", "return the value from gettext() = " + out);
- }
- return out;
- }
-
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitTimeout.java b/navit/android/src/org/navitproject/navit/NavitTimeout.java
deleted file mode 100644
index b70d8a1ad..000000000
--- a/navit/android/src/org/navitproject/navit/NavitTimeout.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
-
-
-
-public class NavitTimeout implements Runnable {
- private static Handler handler =new Handler() {
- public void handleMessage(Message m) {
- Log.e("Navit","Handler received message");
- }
- };
- private boolean event_multi;
- private int event_callbackid;
- private int event_timeout;
- public native void TimeoutCallback(int id);
-
- NavitTimeout(int timeout, boolean multi, int callbackid)
- {
- event_timeout=timeout;
- event_multi=multi;
- event_callbackid=callbackid;
- handler.postDelayed(this, event_timeout);
- }
- public void run() {
- // Log.e("Navit","Handle Event");
- if (event_multi) {
- handler.postDelayed(this, event_timeout);
- }
- TimeoutCallback(event_callbackid);
- }
- public void remove()
- {
- handler.removeCallbacks(this);
- }
-}
-
diff --git a/navit/android/src/org/navitproject/navit/NavitVehicle.java b/navit/android/src/org/navitproject/navit/NavitVehicle.java
deleted file mode 100644
index 313502b96..000000000
--- a/navit/android/src/org/navitproject/navit/NavitVehicle.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import java.util.List;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.location.Criteria;
-import android.location.GpsSatellite;
-import android.location.GpsStatus;
-import android.location.Location;
-import android.location.LocationListener;
-import android.location.LocationManager;
-import android.os.Bundle;
-import android.util.Log;
-
-public class NavitVehicle {
-
- public static final String GPS_FIX_CHANGE = "android.location.GPS_FIX_CHANGE";
-
- public static Location lastLocation = null;
-
- private static LocationManager sLocationManager = null;
- private static Context context = null;
- private int vehicle_pcbid;
- private int vehicle_scbid;
- private int vehicle_fcbid;
- private String preciseProvider;
- private String fastProvider;
-
- private static NavitLocationListener preciseLocationListener = null;
- private static NavitLocationListener fastLocationListener = null;
-
- public native void VehicleCallback(int id, Location location);
- public native void VehicleCallback(int id, int satsInView, int satsUsed);
- public native void VehicleCallback(int id, int enabled);
-
- private class NavitLocationListener extends BroadcastReceiver implements GpsStatus.Listener, LocationListener {
- public boolean precise = false;
- public void onLocationChanged(Location location) {
- lastLocation = location;
- // Disable the fast provider if still active
- if (precise && fastProvider != null) {
- sLocationManager.removeUpdates(fastLocationListener);
- fastProvider = null;
- }
-
- VehicleCallback(vehicle_pcbid, location);
- VehicleCallback(vehicle_fcbid, 1);
- }
- public void onProviderDisabled(String provider){}
- public void onProviderEnabled(String provider) {}
- public void onStatusChanged(String provider, int status, Bundle extras) {}
-
- /**
- * Called when the status of the GPS changes.
- */
- public void onGpsStatusChanged (int event) {
- GpsStatus status = sLocationManager.getGpsStatus(null);
- int satsInView = 0;
- int satsUsed = 0;
- Iterable<GpsSatellite> sats = status.getSatellites();
- for (GpsSatellite sat : sats) {
- satsInView++;
- if (sat.usedInFix()) {
- satsUsed++;
- }
- }
- VehicleCallback(vehicle_scbid, satsInView, satsUsed);
- }
-
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent.getAction().equals(GPS_FIX_CHANGE)) {
- if (intent.getBooleanExtra("enabled", false))
- VehicleCallback(vehicle_fcbid, 1);
- else if (!intent.getBooleanExtra("enabled", true))
- VehicleCallback(vehicle_fcbid, 0);
- }
- }
- }
-
- /**
- * @brief Creates a new {@code NavitVehicle}
- *
- * @param context
- * @param pcbid The address of the position callback function which will be called when a location update is received
- * @param scbid The address of the status callback function which will be called when a status update is received
- * @param fcbid The address of the fix callback function which will be called when a
- * {@code android.location.GPS_FIX_CHANGE} is received, indicating a change in GPS fix status
- */
- NavitVehicle (Context context, int pcbid, int scbid, int fcbid) {
- this.context = context;
- sLocationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
- preciseLocationListener = new NavitLocationListener();
- preciseLocationListener.precise = true;
- fastLocationListener = new NavitLocationListener();
-
- /* Use 2 LocationProviders, one precise (usually GPS), and one
- not so precise, but possible faster. The fast provider is
- disabled when the precise provider gets its first fix. */
-
- // Selection criteria for the precise provider
- Criteria highCriteria = new Criteria();
- highCriteria.setAccuracy(Criteria.ACCURACY_FINE);
- highCriteria.setAltitudeRequired(true);
- highCriteria.setBearingRequired(true);
- highCriteria.setCostAllowed(true);
- highCriteria.setPowerRequirement(Criteria.POWER_HIGH);
-
- // Selection criteria for the fast provider
- Criteria lowCriteria = new Criteria();
- lowCriteria.setAccuracy(Criteria.ACCURACY_COARSE);
- lowCriteria.setAltitudeRequired(false);
- lowCriteria.setBearingRequired(false);
- lowCriteria.setCostAllowed(true);
- lowCriteria.setPowerRequirement(Criteria.POWER_HIGH);
-
- Log.e("NavitVehicle", "Providers " + sLocationManager.getAllProviders());
-
- preciseProvider = sLocationManager.getBestProvider(highCriteria, false);
- Log.e("NavitVehicle", "Precise Provider " + preciseProvider);
- fastProvider = sLocationManager.getBestProvider(lowCriteria, false);
- Log.e("NavitVehicle", "Fast Provider " + fastProvider);
- vehicle_pcbid = pcbid;
- vehicle_scbid = scbid;
- vehicle_fcbid = fcbid;
-
- context.registerReceiver(preciseLocationListener, new IntentFilter(GPS_FIX_CHANGE));
- sLocationManager.requestLocationUpdates(preciseProvider, 0, 0, preciseLocationListener);
- sLocationManager.addGpsStatusListener(preciseLocationListener);
-
- /*
- * Since Android criteria have no way to specify "fast fix", lowCriteria may return the same
- * provider as highCriteria, even if others are available. In this case, do not register two
- * listeners for the same provider but pick the fast provider manually. (Usually there will
- * only be two providers in total, which makes the choice easy.)
- */
- if (fastProvider == null || preciseProvider.compareTo(fastProvider) == 0) {
- List<String> fastProviderList = sLocationManager.getProviders(lowCriteria, false);
- fastProvider = null;
- for (String fastCandidate: fastProviderList) {
- if (preciseProvider.compareTo(fastCandidate) != 0) {
- fastProvider = fastCandidate;
- break;
- }
- }
- }
- if (fastProvider != null) {
- sLocationManager.requestLocationUpdates(fastProvider, 0, 0, fastLocationListener);
- }
- }
-
- public static void removeListener() {
- if (sLocationManager != null) {
- if (preciseLocationListener != null) {
- sLocationManager.removeUpdates(preciseLocationListener);
- sLocationManager.removeGpsStatusListener(preciseLocationListener);
- context.unregisterReceiver(preciseLocationListener);
- }
- if (fastLocationListener != null) sLocationManager.removeUpdates(fastLocationListener);
- }
-
- }
-}
diff --git a/navit/android/src/org/navitproject/navit/NavitWatch.java b/navit/android/src/org/navitproject/navit/NavitWatch.java
deleted file mode 100644
index ebe5c8727..000000000
--- a/navit/android/src/org/navitproject/navit/NavitWatch.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * 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.
- */
-
-package org.navitproject.navit;
-
-import java.lang.Thread;
-import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
-
-public class NavitWatch implements Runnable {
- private Thread thread;
- private static Handler handler =new Handler() {
- public void handleMessage(Message m) {
- Log.e("NavitWatch","Handler received message");
- }
- };
- private boolean removed;
- private int watch_func;
- private int watch_fd;
- private int watch_cond;
- private int watch_callbackid;
- private boolean callback_pending;
- private Runnable callback_runnable;
- public native void poll(int func, int fd, int cond);
- public native void WatchCallback(int id);
-
- NavitWatch(int func, int fd, int cond, int callbackid)
- {
- // Log.e("NavitWatch","Creating new thread for "+fd+" "+cond+" from current thread " + java.lang.Thread.currentThread().getName());
- watch_func=func;
- watch_fd=fd;
- watch_cond=cond;
- watch_callbackid=callbackid;
- final NavitWatch navitwatch=this;
- callback_runnable = new Runnable() {
- public void run()
- {
- navitwatch.callback();
- }
- };
- thread = new Thread(this, "poll thread");
- thread.start();
- }
- public void run()
- {
- for (;;) {
- // Log.e("NavitWatch","Polling "+watch_fd+" "+watch_cond + " from " + java.lang.Thread.currentThread().getName());
- poll(watch_func, watch_fd, watch_cond);
- // Log.e("NavitWatch","poll returned");
- if (removed)
- break;
- callback_pending=true;
- handler.post(callback_runnable);
- try {
- // Log.e("NavitWatch","wait");
- synchronized(this) {
- if (callback_pending)
- this.wait();
- }
- // Log.e("NavitWatch","wait returned");
- } catch (Exception e) {
- Log.e("NavitWatch","Exception "+e.getMessage());
- }
- if (removed)
- break;
- }
- }
- public void callback()
- {
- // Log.e("NavitWatch","Calling Callback");
- if (!removed)
- WatchCallback(watch_callbackid);
- synchronized(this) {
- callback_pending=false;
- // Log.e("NavitWatch","Waking up");
- this.notify();
- }
- }
- public void remove()
- {
- removed=true;
- thread.interrupt();
- }
-}
-
diff --git a/navit/announcement.c b/navit/announcement.c
deleted file mode 100644
index 9ea367afe..000000000
--- a/navit/announcement.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * 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 "debug.h"
-#include "item.h"
-#include "announcement.h"
-
-struct announcement {
- struct attr **attrs;
-};
-
-struct announcement *
-announcement_new(struct attr *parent, struct attr **attrs)
-{
- struct announcement *this_;
- struct attr *type_attr;
- if (! (type_attr=attr_search(attrs, NULL, attr_name))) {
- return NULL;
- }
- this_=g_new0(struct announcement, 1);
- this_->attrs=attr_list_dup(attrs);
- return this_;
-}
-
-int
-announcement_get_attr(struct announcement *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
-}
-
-int
-announcement_set_attr(struct announcement *this_, struct attr *attr)
-{
- this_->attrs=attr_generic_set_attr(this_->attrs, attr);
- return 1;
-}
-
-int
-announcement_add_attr(struct announcement *this_, struct attr *attr)
-{
- this_->attrs=attr_generic_add_attr(this_->attrs, attr);
- return 1;
-}
-
-int
-announcement_remove_attr(struct announcement *this_, struct attr *attr)
-{
- this_->attrs=attr_generic_remove_attr(this_->attrs, attr);
- return 1;
-}
-
diff --git a/navit/announcement.h b/navit/announcement.h
deleted file mode 100644
index 695df4b6c..000000000
--- a/navit/announcement.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * 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.
- */
-
-struct announcement * announcement_new(struct attr *parent, struct attr **attrs);
-int announcement_get_attr(struct announcement *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int announcement_set_attr(struct announcement *this_, struct attr *attr);
-int announcement_add_attr(struct announcement *this_, struct attr *attr);
-int announcement_remove_attr(struct announcement *this_, struct attr *attr);
diff --git a/navit/atom.c b/navit/atom.c
deleted file mode 100644
index de11ce8bc..000000000
--- a/navit/atom.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <glib.h>
-#include "atom.h"
-
-static GHashTable *atom_hash;
-
-char *
-atom_lookup(char *name)
-{
- if (!atom_hash)
- return NULL;
- return g_hash_table_lookup(atom_hash,name);
-}
-
-char *
-atom(char *name)
-{
- char *id=atom_lookup(name);
- if (id)
- return id;
- if (!atom_hash)
- return NULL;
- id=g_strdup(name);
- g_hash_table_insert(atom_hash, id, id);
- return id;
-}
-
-void
-atom_init(void)
-{
- atom_hash=g_hash_table_new(g_str_hash, g_str_equal);
-}
diff --git a/navit/atom.h b/navit/atom.h
deleted file mode 100644
index cf77057df..000000000
--- a/navit/atom.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-char * atom_lookup(char *name);
-char * atom(char *name);
-void atom_init(void);
-#ifdef __cplusplus
-}
-#endif
diff --git a/navit/attr.c b/navit/attr.c
deleted file mode 100644
index 24b6cbe6a..000000000
--- a/navit/attr.c
+++ /dev/null
@@ -1,1030 +0,0 @@
-/*
- * 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.
- */
-
-/** @file attr.c
- * @brief Attribute handling code
- *
- * Structures and functions for working with attributes.
- *
- * @author Navit Team
- * @date 2005-2014
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <glib.h>
-#include "debug.h"
-#include "item.h"
-#include "coord.h"
-#include "transform.h"
-#include "color.h"
-#include "navigation.h"
-#include "attr.h"
-#include "map.h"
-#include "config.h"
-#include "endianess.h"
-#include "util.h"
-#include "types.h"
-#include "xmlconfig.h"
-
-struct attr_name {
- enum attr_type attr;
- char *name;
-};
-
-
-/** List of attr_types with their names as strings. */
-static struct attr_name attr_names[]={
-#define ATTR2(x,y) ATTR(y)
-#define ATTR(x) { attr_##x, #x },
-
-#define ATTR_UNUSED /* Unused attr_types not needed here.*/
-
-#include "attr_def.h"
-
-#undef ATTR_UNUSED
-
-#undef ATTR2
-#undef ATTR
-};
-
-static GHashTable *attr_hash;
-
-void
-attr_create_hash(void)
-{
- int i;
- attr_hash=g_hash_table_new(g_str_hash, g_str_equal);
- for (i=0 ; i < sizeof(attr_names)/sizeof(struct attr_name) ; i++) {
- g_hash_table_insert(attr_hash, attr_names[i].name, GINT_TO_POINTER(attr_names[i].attr));
- }
-}
-
-void
-attr_destroy_hash(void)
-{
- g_hash_table_destroy(attr_hash);
- attr_hash=NULL;
-}
-
-/**
- * @brief Converts a string to an attr_type
- *
- * This function reads a string and returns the corresponding attr_type.
- *
- * @param name The attribute name
- * @return The corresponding {@code attr_type}, or {@code attr_none} if the string specifies a nonexistent or invalid attribute type.
- */
-enum attr_type
-attr_from_name(const char *name)
-{
- int i;
-
- if (attr_hash)
- return GPOINTER_TO_INT(g_hash_table_lookup(attr_hash, name));
- for (i=0 ; i < sizeof(attr_names)/sizeof(struct attr_name) ; i++) {
- if (! strcmp(attr_names[i].name, name))
- return attr_names[i].attr;
- }
- return attr_none;
-}
-
-
-static int attr_match(enum attr_type search, enum attr_type found);
-
-
-
-/**
- * @brief Converts an attr_type to a string
- *
- * @param attr The attribute type to be converted.
- * @return The attribute name, or NULL if an invalid value was passed as {@code attr}.
- * The calling function should create a copy of the string if it needs to alter it or relies on the
- * string being available permanently.
- */
-char *
-attr_to_name(enum attr_type attr)
-{
- int i;
-
- for (i=0 ; i < sizeof(attr_names)/sizeof(struct attr_name) ; i++) {
- if (attr_names[i].attr == attr)
- return attr_names[i].name;
- }
- return NULL;
-}
-
-/**
- * @brief Creates an attribute from text information
- *
- * This function creates an attribute from two strings specifying the name and
- * the value.
- *
- * @param name The name of the new attribute
- * @param value The value of the new attribute
- * @return The new attribute
- */
-struct attr *
-attr_new_from_text(const char *name, const char *value)
-{
- enum attr_type attr;
- struct attr *ret;
- struct coord_geo *g;
- struct coord c;
- enum item_type item_type;
- char *pos,*type_str,*str,*tok;
- int min,max,count;
-
- ret=g_new0(struct attr, 1);
- dbg(lvl_debug,"enter name='%s' value='%s'\n", name, value);
- attr=attr_from_name(name);
- ret->type=attr;
- switch (attr) {
- case attr_item_type:
- ret->u.item_type=item_from_name(value);
- break;
- case attr_item_types:
- count=0;
- type_str=g_strdup(value);
- str=type_str;
- while ((tok=strtok(str, ","))) {
- ret->u.item_types=g_realloc(ret->u.item_types, (count+2)*sizeof(enum item_type));
- item_type=item_from_name(tok);
- if (item_type!=type_none) {
- ret->u.item_types[count++]=item_type;
- ret->u.item_types[count]=type_none;
- } else {
- dbg(lvl_error,"Unknown item type '%s' ignored.\n",tok);
- }
- str=NULL;
- }
- g_free(type_str);
- break;
- case attr_attr_types:
- count=0;
- type_str=g_strdup(value);
- str=type_str;
- while ((tok=strtok(str, ","))) {
- ret->u.attr_types=g_realloc(ret->u.attr_types, (count+2)*sizeof(enum attr_type));
- ret->u.attr_types[count++]=attr_from_name(tok);
- ret->u.attr_types[count]=attr_none;
- str=NULL;
- }
- g_free(type_str);
- break;
- case attr_dash:
- count=0;
- type_str=g_strdup(value);
- str=type_str;
- while ((tok=strtok(str, ","))) {
- ret->u.dash=g_realloc(ret->u.dash, (count+2)*sizeof(int));
- ret->u.dash[count++]=g_ascii_strtoull(tok,NULL,0);
- ret->u.dash[count]=0;
- str=NULL;
- }
- g_free(type_str);
- break;
- case attr_order:
- case attr_sequence_range:
- case attr_angle_range:
- case attr_speed_range:
- pos=strchr(value, '-');
- min=0;
- max=32767;
- if (! pos) {
- sscanf(value,"%d",&min);
- max=min;
- } else if (pos == value)
- sscanf(value,"-%d",&max);
- else
- sscanf(value,"%d-%d",&min, &max);
- ret->u.range.min=min;
- ret->u.range.max=max;
- break;
- default:
- if (attr >= attr_type_string_begin && attr <= attr_type_string_end) {
- ret->u.str=g_strdup(value);
- break;
- }
- if (attr >= attr_type_int_begin && attr < attr_type_rel_abs_begin) {
- char *tail;
- if (value[0] == '0' && value[1] == 'x')
- ret->u.num=strtoul(value, &tail, 0);
- else
- ret->u.num=strtol(value, &tail, 0);
- if (*tail) {
- dbg(lvl_error, "Incorrect value '%s' for attribute '%s'; expected a number. "
- "Defaulting to 0.\n", value, name);
- ret->u.num=0;
- }
- break;
- }
- if (attr >= attr_type_rel_abs_begin && attr < attr_type_boolean_begin) {
- char *tail;
- int value_is_relative=0;
- ret->u.num=strtol(value, &tail, 0);
- if (*tail) {
- if (!strcmp(tail, "%")) {
- value_is_relative=1;
- } else {
- dbg(lvl_error, "Incorrect value '%s' for attribute '%s'; expected a number or a relative value in percent. "
- "Defaulting to 0.\n", value, name);
- ret->u.num=0;
- }
- }
- if (value_is_relative) {
- if ((ret->u.num > ATTR_REL_MAXREL) || (ret->u.num < ATTR_REL_MINREL)) {
- dbg(lvl_error, "Relative possibly-relative attribute with value out of range: %li\n", ret->u.num);
- }
-
- ret->u.num += ATTR_REL_RELSHIFT;
- } else {
- if ((ret->u.num > ATTR_REL_MAXABS) || (ret->u.num < ATTR_REL_MINABS)) {
- dbg(lvl_error, "Non-relative possibly-relative attribute with value out of range: %li\n", ret->u.num);
- }
- }
- break;
- }
- if (attr >= attr_type_boolean_begin && attr <= attr_type_int_end) {
- if (!(g_ascii_strcasecmp(value,"no") && g_ascii_strcasecmp(value,"0") && g_ascii_strcasecmp(value,"false")))
- ret->u.num=0;
- else if (!(g_ascii_strcasecmp(value,"yes") && g_ascii_strcasecmp(value,"1") && g_ascii_strcasecmp(value,"true")))
- ret->u.num=1;
- else {
- dbg(lvl_error, "Incorrect value '%s' for attribute '%s'; expected a boolean (no/0/false or yes/1/true). "
- "Defaulting to 'true'.\n", value, name);
- ret->u.num=1;
- }
- break;
- }
- if (attr >= attr_type_color_begin && attr <= attr_type_color_end) {
- struct color *color=g_new0(struct color, 1);
- int r,g,b,a;
- ret->u.color=color;
- if(strlen(value)==7){
- sscanf(value,"#%02x%02x%02x", &r, &g, &b);
- color->r = (r << 8) | r;
- color->g = (g << 8) | g;
- color->b = (b << 8) | b;
- color->a = (65535);
- } else if(strlen(value)==9){
- sscanf(value,"#%02x%02x%02x%02x", &r, &g, &b, &a);
- color->r = (r << 8) | r;
- color->g = (g << 8) | g;
- color->b = (b << 8) | b;
- color->a = (a << 8) | a;
- } else {
- dbg(lvl_error,"color %s has unknown format\n",value);
- }
- break;
- }
- if (attr >= attr_type_coord_geo_begin && attr <= attr_type_coord_geo_end) {
- g=g_new(struct coord_geo, 1);
- ret->u.coord_geo=g;
- coord_parse(value, projection_mg, &c);
- transform_to_geo(projection_mg, &c, g);
- break;
- }
- dbg(lvl_debug,"unknown attribute\n");
- g_free(ret);
- ret=NULL;
- }
- return ret;
-}
-
-/**
- * @brief Converts access flags to a human-readable string.
- *
- * @param flags The flags as a number
- * @return The flags in human-readable form
- */
-static char *
-flags_to_text(int flags)
-{
- char *ret=g_strdup_printf("0x%x:",flags);
- if (flags & AF_ONEWAY) ret=g_strconcat_printf(ret,"%sAF_ONEWAY",ret?"|":"");
- if (flags & AF_ONEWAYREV) ret=g_strconcat_printf(ret,"%sAF_ONEWAYREV",ret?"|":"");
- if (flags & AF_SEGMENTED) ret=g_strconcat_printf(ret,"%sAF_SEGMENTED",ret?"|":"");
- if (flags & AF_ROUNDABOUT) ret=g_strconcat_printf(ret,"%sAF_ROUNDABOUT",ret?"|":"");
- if (flags & AF_ROUNDABOUT_VALID) ret=g_strconcat_printf(ret,"%sAF_ROUNDABOUT_VALID",ret?"|":"");
- if (flags & AF_ONEWAY_EXCEPTION) ret=g_strconcat_printf(ret,"%sAF_ONEWAY_EXCEPTION",ret?"|":"");
- if (flags & AF_SPEED_LIMIT) ret=g_strconcat_printf(ret,"%sAF_SPEED_LIMIT",ret?"|":"");
- if (flags & AF_RESERVED1) ret=g_strconcat_printf(ret,"%sAF_RESERVED1",ret?"|":"");
- if (flags & AF_SIZE_OR_WEIGHT_LIMIT) ret=g_strconcat_printf(ret,"%sAF_SIZE_OR_WEIGHT_LIMIT",ret?"|":"");
- if (flags & AF_THROUGH_TRAFFIC_LIMIT) ret=g_strconcat_printf(ret,"%sAF_THROUGH_TRAFFIC_LIMIT",ret?"|":"");
- if (flags & AF_TOLL) ret=g_strconcat_printf(ret,"%sAF_TOLL",ret?"|":"");
- if (flags & AF_SEASONAL) ret=g_strconcat_printf(ret,"%sAF_SEASONAL",ret?"|":"");
- if (flags & AF_UNPAVED) ret=g_strconcat_printf(ret,"%sAF_UNPAVED",ret?"|":"");
- if (flags & AF_FORD) ret=g_strconcat_printf(ret,"%sAF_FORD",ret?"|":"");
- if (flags & AF_UNDERGROUND) ret=g_strconcat_printf(ret,"%sAF_UNDERGROUND",ret?"|":"");
- if (flags & AF_DANGEROUS_GOODS) ret=g_strconcat_printf(ret,"%sAF_DANGEROUS_GOODS",ret?"|":"");
- if ((flags & AF_ALL) == AF_ALL)
- return g_strconcat_printf(ret,"%sAF_ALL",ret?"|":"");
- if ((flags & AF_ALL) == AF_MOTORIZED_FAST)
- return g_strconcat_printf(ret,"%sAF_MOTORIZED_FAST",ret?"|":"");
- if (flags & AF_EMERGENCY_VEHICLES) ret=g_strconcat_printf(ret,"%sAF_EMERGENCY_VEHICLES",ret?"|":"");
- if (flags & AF_TRANSPORT_TRUCK) ret=g_strconcat_printf(ret,"%sAF_TRANSPORT_TRUCK",ret?"|":"");
- if (flags & AF_DELIVERY_TRUCK) ret=g_strconcat_printf(ret,"%sAF_DELIVERY_TRUCK",ret?"|":"");
- if (flags & AF_PUBLIC_BUS) ret=g_strconcat_printf(ret,"%sAF_PUBLIC_BUS",ret?"|":"");
- if (flags & AF_TAXI) ret=g_strconcat_printf(ret,"%sAF_TAXI",ret?"|":"");
- if (flags & AF_HIGH_OCCUPANCY_CAR) ret=g_strconcat_printf(ret,"%sAF_HIGH_OCCUPANCY_CAR",ret?"|":"");
- if (flags & AF_CAR) ret=g_strconcat_printf(ret,"%sAF_CAR",ret?"|":"");
- if (flags & AF_MOTORCYCLE) ret=g_strconcat_printf(ret,"%sAF_MOTORCYCLE",ret?"|":"");
- if (flags & AF_MOPED) ret=g_strconcat_printf(ret,"%sAF_MOPED",ret?"|":"");
- if (flags & AF_HORSE) ret=g_strconcat_printf(ret,"%sAF_HORSE",ret?"|":"");
- if (flags & AF_BIKE) ret=g_strconcat_printf(ret,"%sAF_BIKE",ret?"|":"");
- if (flags & AF_PEDESTRIAN) ret=g_strconcat_printf(ret,"%sAF_PEDESTRIAN",ret?"|":"");
- return ret;
-}
-
-/**
- * @brief Converts attribute data to human-readable text
- *
- * @param attr The attribute to be formatted
- * @param sep The separator to insert between a numeric value and its unit. If NULL, nothing will be inserted.
- * @param fmt Set to {@code attr_format_with_units} if {@code attr} is of type {@code attr_destination_length}
- * or {@code attr_destination_time} or a group type which might contain attributes of those types. Ignored for
- * all other attribute types.
- * @param def_fmt Not used
- * @param map The translation map. This is only needed for string type attributes or group type
- * attributes which might contain strings. It can be NULL for other attribute types. If a string
- * type attribute is encountered and {@code map} is NULL, the string will be returned unchanged.
- *
- * @return The attribute data in human-readable form. The caller is responsible for calling {@code g_free()} on
- * the result when it is no longer needed.
- */
-char *
-attr_to_text_ext(struct attr *attr, char *sep, enum attr_format fmt, enum attr_format def_fmt, struct map *map)
-{
- char *ret;
- enum attr_type type=attr->type;
-
- if (!sep)
- sep="";
-
- if (type >= attr_type_item_begin && type <= attr_type_item_end) {
- struct item *item=attr->u.item;
- struct attr type, data;
- if (! item)
- return g_strdup("(nil)");
- if (! item->map || !map_get_attr(item->map, attr_type, &type, NULL))
- type.u.str="";
- if (! item->map || !map_get_attr(item->map, attr_data, &data, NULL))
- data.u.str="";
- return g_strdup_printf("type=0x%x id=0x%x,0x%x map=%p (%s:%s)", item->type, item->id_hi, item->id_lo, item->map, type.u.str, data.u.str);
- }
- if (type >= attr_type_string_begin && type <= attr_type_string_end) {
- if (map) {
- char *mstr;
- if (attr->u.str) {
- mstr=map_convert_string(map, attr->u.str);
- ret=g_strdup(mstr);
- map_convert_free(mstr);
- } else
- ret=g_strdup("(null)");
-
- } else
- ret=g_strdup(attr->u.str);
- return ret;
- }
- if (type == attr_flags || type == attr_through_traffic_flags)
- return flags_to_text(attr->u.num);
- if (type == attr_destination_length) {
- if (fmt == attr_format_with_units) {
- double distance=attr->u.num;
- if (distance > 10000)
- return g_strdup_printf("%.0f%skm",distance/1000,sep);
- return g_strdup_printf("%.1f%skm",distance/1000,sep);
- }
- }
- if (type == attr_destination_time) {
- if (fmt == attr_format_with_units) {
- int seconds=(attr->u.num+5)/10;
- int minutes=seconds/60;
- int hours=minutes/60;
- int days=hours/24;
- hours%=24;
- minutes%=60;
- seconds%=60;
- if (days)
- return g_strdup_printf("%d:%02d:%02d:%02d",days,hours,minutes,seconds);
- if (hours)
- return g_strdup_printf("%02d:%02d:%02d",hours,minutes,seconds);
- return g_strdup_printf("%02d:%02d",minutes,seconds);
- }
- }
- if (type >= attr_type_int_begin && type <= attr_type_int_end)
- return g_strdup_printf("%ld", attr->u.num);
- if (type >= attr_type_int64_begin && type <= attr_type_int64_end)
- return g_strdup_printf(LONGLONG_FMT, *attr->u.num64);
- if (type >= attr_type_double_begin && type <= attr_type_double_end)
- return g_strdup_printf("%f", *attr->u.numd);
- if (type >= attr_type_object_begin && type <= attr_type_object_end)
- return g_strdup_printf("(object[%s])", attr_to_name(type));
- if (type >= attr_type_color_begin && type <= attr_type_color_end) {
- if (attr->u.color->a != 65535)
- return g_strdup_printf("#%02x%02x%02x%02x", attr->u.color->r>>8,attr->u.color->g>>8,attr->u.color->b>>8, attr->u.color->a>>8);
- else
- return g_strdup_printf("#%02x%02x%02x", attr->u.color->r>>8,attr->u.color->g>>8,attr->u.color->b>>8);
- }
- if (type >= attr_type_coord_geo_begin && type <= attr_type_coord_geo_end)
- return g_strdup_printf("%f %f",attr->u.coord_geo->lng,attr->u.coord_geo->lat);
- if (type == attr_zipfile_ref_block) {
- int *data=attr->u.data;
- return g_strdup_printf("0x%x,0x%x,0x%x",data[0],data[1],data[2]);
- }
- if (type == attr_item_id) {
- int *data=attr->u.data;
- return g_strdup_printf("0x%x,0x%x",data[0],data[1]);
- }
- if (type == attr_item_types) {
- enum item_type *item_types=attr->u.item_types;
- char *sep="",*ret=NULL;
- while (item_types && *item_types) {
- ret=g_strconcat_printf(ret,"%s%s",sep,item_to_name(*item_types++));
- sep=",";
- }
- return ret;
- }
- if (type >= attr_type_group_begin && type <= attr_type_group_end) {
- int i=0;
- char *ret=g_strdup("");
- char *sep="";
- while (attr->u.attrs[i].type) {
- char *val=attr_to_text_ext(&attr->u.attrs[i], sep, fmt, def_fmt, map);
- ret=g_strconcat_printf(ret,"%s%s=%s",sep,attr_to_name(attr->u.attrs[i].type),val);
- g_free(val);
- sep=" ";
- i++;
- }
- return ret;
- }
- if (type >= attr_type_item_type_begin && type <= attr_type_item_type_end) {
- return g_strdup_printf("0x%ld[%s]",attr->u.num,item_to_name(attr->u.num));
- }
- if (type == attr_nav_status) {
- return nav_status_to_text(attr->u.num);
- }
- return g_strdup_printf("(no text[%s])", attr_to_name(type));
-}
-
-/**
- * @brief Converts an attribute to a string that can be displayed
- *
- * This function is just a wrapper around {@code attr_to_text_ext()}.
- *
- * @param attr The attribute to convert
- * @param map The translation map, see {@code attr_to_text_ext()}
- * @param pretty Not used
- */
-char *
-attr_to_text(struct attr *attr, struct map *map, int pretty)
-{
- return attr_to_text_ext(attr, NULL, attr_format_default, attr_format_default, map);
-}
-
-/**
- * @brief Searches for an attribute of a given type
- *
- * This function searches an array of pointers to attributes for a given
- * attribute type and returns the first match.
- *
- * @param attrs Points to the array of attribute pointers to be searched
- * @param last Not used
- * @param attr_type The attribute type to search for. Generic types (such as
- * attr_any or attr_any_xml) are NOT supported.
- * @return Pointer to the first matching attribute, or NULL if no match was found.
- */
-struct attr *
-attr_search(struct attr **attrs, struct attr *last, enum attr_type attr)
-{
- dbg(lvl_info, "enter attrs=%p\n", attrs);
- while (*attrs) {
- dbg(lvl_debug,"*attrs=%p\n", *attrs);
- if ((*attrs)->type == attr) {
- return *attrs;
- }
- attrs++;
- }
- return NULL;
-}
-
-static int
-attr_match(enum attr_type search, enum attr_type found)
-{
- switch (search) {
- case attr_any:
- return 1;
- case attr_any_xml:
- switch (found) {
- case attr_callback:
- return 0;
- default:
- return 1;
- }
- default:
- return search == found;
- }
-}
-
-/**
- * @brief Generic get function
- *
- * This function searches an attribute list for an attribute of a given type and
- * stores it in the attr parameter. If no match is found in attrs and the
- * def_attrs argument is supplied, def_attrs is searched for the attribute type
- * and the first match (if any) is returned.
- * <p>
- * Searching for attr_any or attr_any_xml is supported, but def_attrs will not
- * be searched in that case.
- * <p>
- * An iterator can be specified to get multiple attributes of the same type:
- * The first call will return the first match from attr; each subsequent call
- * with the same iterator will return the next match. After obtaining the last
- * match from attr, def_attrs is searched in the same manner. If no more matching
- * attributes are found in either of them, false is returned.
- *
- * @param attrs Points to the array of attribute pointers to be searched
- * @param def_attrs Points to a list of pointers to default attributes.
- * If an attribute is not found in attrs, the function will return the first
- * match from def_attrs. This parameter may be NULL.
- * @param type The attribute type to search for
- * @param attr Points to a {@code struct attr} which will receive the attribute
- * @param iter An iterator. This parameter may be NULL.
- * @return True if a matching attribute was found, false if not.
- */
-int
-attr_generic_get_attr(struct attr **attrs, struct attr **def_attrs, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- while (attrs && *attrs) {
- if (attr_match(type,(*attrs)->type)) {
- *attr=**attrs;
- if (!iter)
- return 1;
- if (*((void **)iter) < (void *)attrs) {
- *((void **)iter)=(void *)attrs;
- return 1;
- }
- }
- attrs++;
- }
- if (type == attr_any || type == attr_any_xml)
- return 0;
- while (def_attrs && *def_attrs) {
- if ((*def_attrs)->type == type) {
- *attr=**def_attrs;
- return 1;
- }
- def_attrs++;
- }
- return 0;
-}
-
-/**
- * @brief Generic set function
- *
- * This function will search the list for the first attribute of the same type
- * as the supplied new one and replace it with that. If the list does not
- * contain an attribute whose type matches that of the new one, the new
- * attribute is inserted into the list.
- *
- * @param attrs Points to the array of attribute pointers to be updated
- * @param attr The new attribute.
- * @return Pointer to the updated attribute list
- */
-struct attr **
-attr_generic_set_attr(struct attr **attrs, struct attr *attr)
-{
- struct attr **curr=attrs;
- int i,count=0;
- dbg(lvl_debug, "enter, attrs=%p, attr=%p (%s)\n", attrs, attr, attr_to_name(attr->type));
- while (curr && *curr) {
- if ((*curr)->type == attr->type) {
- attr_free(*curr);
- *curr=attr_dup(attr);
- return attrs;
- }
- curr++;
- count++;
- }
- curr=g_new0(struct attr *, count+2);
- for (i = 0 ; i < count ; i++)
- curr[i]=attrs[i];
- curr[count]=attr_dup(attr);
- curr[count+1]=NULL;
- g_free(attrs);
- return curr;
-}
-
-/**
- * @brief Generic add function
- *
- * This function will insert a new attribute into the list.
- *
- * @param attrs Points to the array of attribute pointers to be updated
- * @param attr The new attribute.
- * @return Pointer to the updated attribute list
- */
-struct attr **
-attr_generic_add_attr(struct attr **attrs, struct attr *attr)
-{
- struct attr **curr=attrs;
- int i,count=0;
- dbg(lvl_debug, "enter, attrs=%p, attr=%p (%s)\n", attrs, attr, attr_to_name(attr->type));
- while (curr && *curr) {
- curr++;
- count++;
- }
- curr=g_new0(struct attr *, count+2);
- for (i = 0 ; i < count ; i++)
- curr[i]=attrs[i];
- curr[count]=attr_dup(attr);
- curr[count+1]=NULL;
- g_free(attrs);
- return curr;
-}
-
-struct attr **
-attr_generic_add_attr_list(struct attr **attrs, struct attr **add)
-{
- while (add && *add) {
- attrs=attr_generic_add_attr(attrs, *add);
- add++;
- }
- return attrs;
-}
-
-struct attr **
-attr_generic_prepend_attr(struct attr **attrs, struct attr *attr)
-{
- struct attr **curr=attrs;
- int i,count=0;
- while (curr && *curr) {
- curr++;
- count++;
- }
- curr=g_new0(struct attr *, count+2);
- for (i = 0 ; i < count ; i++)
- curr[i+1]=attrs[i];
- curr[0]=attr_dup(attr);
- curr[count+1]=NULL;
- g_free(attrs);
- return curr;
-}
-
-struct attr **
-attr_generic_remove_attr(struct attr **attrs, struct attr *attr)
-{
- struct attr **curr=attrs;
- int i,j,count=0,found=0;
- while (curr && *curr) {
- if ((*curr)->type == attr->type && (*curr)->u.data == attr->u.data)
- found=1;
- curr++;
- count++;
- }
- if (!found)
- return attrs;
- curr=g_new0(struct attr *, count);
- j=0;
- for (i = 0 ; i < count ; i++) {
- if (attrs[i]->type != attr->type || attrs[i]->u.data != attr->u.data)
- curr[j++]=attrs[i];
- else
- attr_free(attrs[i]);
- }
- curr[j]=NULL;
- g_free(attrs);
- return curr;
-}
-
-enum attr_type
-attr_type_begin(enum attr_type type)
-{
- if (type < attr_type_item_begin)
- return attr_none;
- if (type < attr_type_int_begin)
- return attr_type_item_begin;
- if (type < attr_type_string_begin)
- return attr_type_int_begin;
- if (type < attr_type_special_begin)
- return attr_type_string_begin;
- if (type < attr_type_double_begin)
- return attr_type_special_begin;
- if (type < attr_type_coord_geo_begin)
- return attr_type_double_begin;
- if (type < attr_type_color_begin)
- return attr_type_coord_geo_begin;
- if (type < attr_type_object_begin)
- return attr_type_color_begin;
- if (type < attr_type_coord_begin)
- return attr_type_object_begin;
- if (type < attr_type_pcoord_begin)
- return attr_type_coord_begin;
- if (type < attr_type_callback_begin)
- return attr_type_pcoord_begin;
- if (type < attr_type_int64_begin)
- return attr_type_callback_begin;
- if (type <= attr_type_int64_end)
- return attr_type_int64_begin;
- return attr_none;
-}
-
-int
-attr_data_size(struct attr *attr)
-{
- if (attr->type == attr_none)
- return 0;
- if (attr->type >= attr_type_string_begin && attr->type <= attr_type_string_end)
- return attr->u.str?strlen(attr->u.str)+1:0;
- if (attr->type >= attr_type_int_begin && attr->type <= attr_type_int_end)
- return sizeof(attr->u.num);
- if (attr->type >= attr_type_coord_geo_begin && attr->type <= attr_type_coord_geo_end)
- return sizeof(*attr->u.coord_geo);
- if (attr->type >= attr_type_color_begin && attr->type <= attr_type_color_end)
- return sizeof(*attr->u.color);
- if (attr->type >= attr_type_object_begin && attr->type <= attr_type_object_end)
- return sizeof(void *);
- if (attr->type >= attr_type_item_begin && attr->type <= attr_type_item_end)
- return sizeof(struct item);
- if (attr->type >= attr_type_int64_begin && attr->type <= attr_type_int64_end)
- return sizeof(*attr->u.num64);
- if (attr->type == attr_order)
- return sizeof(attr->u.range);
- if (attr->type >= attr_type_double_begin && attr->type <= attr_type_double_end)
- return sizeof(*attr->u.numd);
- if (attr->type == attr_item_types) {
- int i=0;
- while (attr->u.item_types[i++] != type_none);
- return i*sizeof(enum item_type);
- }
- if (attr->type >= attr_type_item_type_begin && attr->type <= attr_type_item_type_end)
- return sizeof(enum item_type);
- if (attr->type == attr_attr_types) {
- int i=0;
- while (attr->u.attr_types[i++] != attr_none);
- return i*sizeof(enum attr_type);
- }
- dbg(lvl_error,"size for %s unknown\n", attr_to_name(attr->type));
- return 0;
-}
-
-void *
-attr_data_get(struct attr *attr)
-{
- if ((attr->type >= attr_type_int_begin && attr->type <= attr_type_int_end) ||
- (attr->type >= attr_type_item_type_begin && attr->type <= attr_type_item_type_end))
- return &attr->u.num;
- if (attr->type == attr_order)
- return &attr->u.range;
- return attr->u.data;
-}
-
-void
-attr_data_set(struct attr *attr, void *data)
-{
- if ((attr->type >= attr_type_int_begin && attr->type <= attr_type_int_end) ||
- (attr->type >= attr_type_item_type_begin && attr->type <= attr_type_item_type_end))
- attr->u.num=*((int *)data);
- else
- attr->u.data=data;
-}
-
-void
-attr_data_set_le(struct attr * attr, void * data)
-{
- if ((attr->type >= attr_type_int_begin && attr->type <= attr_type_int_end) ||
- (attr->type >= attr_type_item_type_begin && attr->type <= attr_type_item_type_end))
- attr->u.num=le32_to_cpu(*((int *)data));
- else if (attr->type == attr_order) {
- attr->u.num=le32_to_cpu(*((int *)data));
- attr->u.range.min=le16_to_cpu(attr->u.range.min);
- attr->u.range.max=le16_to_cpu(attr->u.range.max);
- }
- else
-/* Fixme: Handle long long */
- attr->u.data=data;
-
-}
-
-static void
-attr_free_content_do(struct attr *attr)
-{
- if (!attr)
- return;
- if (HAS_OBJECT_FUNC(attr->type)) {
- struct navit_object *obj=attr->u.data;
- if (obj && obj->func && obj->func->unref)
- obj->func->unref(obj);
- }
- if (!(attr->type >= attr_type_int_begin && attr->type <= attr_type_int_end) &&
- !(attr->type >= attr_type_object_begin && attr->type <= attr_type_object_end) &&
- attr->type != attr_item_type)
- g_free(attr->u.data);
-}
-
-void
-attr_free_content(struct attr *attr)
-{
- attr_free_content_do(attr);
- memset(attr,0,sizeof(*attr));
-}
-
-void
-attr_free(struct attr *attr)
-{
- attr_free_content_do(attr);
- g_free(attr);
-}
-
-void
-attr_dup_content(struct attr *src, struct attr *dst)
-{
- int size;
- dst->type=src->type;
- if (src->type >= attr_type_int_begin && src->type <= attr_type_int_end)
- dst->u.num=src->u.num;
- else if (src->type == attr_item_type)
- dst->u.item_type=src->u.item_type;
- else if (src->type >= attr_type_object_begin && src->type <= attr_type_object_end) {
- if (HAS_OBJECT_FUNC(src->type)) {
- struct navit_object *obj=src->u.data;
- if (obj && obj->func && obj->func->ref) {
- dst->u.data=obj->func->ref(obj);
- } else
- dst->u.data=obj;
- } else
- dst->u.data=src->u.data;
- } else {
- size=attr_data_size(src);
- if (size) {
- dst->u.data=g_malloc(size);
- memcpy(dst->u.data, src->u.data, size);
- }
- }
-}
-
-struct attr *
-attr_dup(struct attr *attr)
-{
- struct attr *ret=g_new0(struct attr, 1);
- attr_dup_content(attr, ret);
- return ret;
-}
-
-void
-attr_list_free(struct attr **attrs)
-{
- int count=0;
- while (attrs && attrs[count]) {
- attr_free(attrs[count++]);
- }
- g_free(attrs);
-}
-
-struct attr **
-attr_list_dup(struct attr **attrs)
-{
- struct attr **ret;
- int i,count=0;
-
- if (!attrs)
- return NULL;
-
- while (attrs[count])
- count++;
- ret=g_new0(struct attr *, count+1);
- for (i = 0 ; i < count ; i++)
- ret[i]=attr_dup(attrs[i]);
- return ret;
-}
-
-int
-attr_from_line(char *line, char *name, int *pos, char *val_ret, char *name_ret)
-{
- int len=0,quoted;
- char *p,*e,*n;
-
- dbg(lvl_debug,"get_tag %s from %s\n", name, line);
- if (name)
- len=strlen(name);
- if (pos)
- p=line+*pos;
- else
- p=line;
- for(;;) {
- while (*p == ' ') {
- p++;
- }
- if (! *p)
- return 0;
- n=p;
- e=strchr(p,'=');
- if (! e)
- return 0;
- p=e+1;
- quoted=0;
- while (*p) {
- if (*p == ' ' && !quoted)
- break;
- if (*p == '"')
- quoted=1-quoted;
- p++;
- }
- if (name == NULL || (e-n == len && !strncmp(n, name, len))) {
- if (name_ret) {
- len=e-n;
- strncpy(name_ret, n, len);
- name_ret[len]='\0';
- }
- e++;
- len=p-e;
- if (e[0] == '"') {
- e++;
- len-=2;
- }
- strncpy(val_ret, e, len);
- val_ret[len]='\0';
- if (pos)
- *pos=p-line;
- return 1;
- }
- }
- return 0;
-}
-
-/**
- * @brief Checks if an enumeration of attribute types contains a specific attribute.
- *
- * @param types Points to a NULL-terminated array of pointers to {@code enum attr_type}, which will be searched
- * @param type The attr_type to be searched for
- *
- * @return True if the attribute type was found, false if it was not found or if {@code types} is empty
- */
-int
-attr_types_contains(enum attr_type *types, enum attr_type type)
-{
- while (types && *types != attr_none) {
- if (*types == type)
- return 1;
- types++;
- }
- return 0;
-}
-
-/**
- * @brief Check if an enumeration of attribute types contains a specific attribute.
- *
- * This function is mostly identical to {@code attr_types_contains()} but returns the supplied default
- * value if {@code types} is empty.
- *
- * @param types Points to a NULL-terminated array of pointers to {@code enum attr_type}, which will be searched
- * @param type The attr_type to be searched for
- * @param deflt The default value to return if {@code types} is empty.
- *
- * @return True if the attribute type was found, false if it was not found, {@code deflt} if types is empty.
- */
-int
-attr_types_contains_default(enum attr_type *types, enum attr_type type, int deflt)
-{
- if (!types) {
- return deflt;
- }
- return attr_types_contains(types, type);
-}
-
-/**
- * @brief Derive absolute value from relative attribute, given value of the whole range.
- *
- * @param attrval Value of u.num member of attribute capable of holding relative values.
- * @param whole Range counted as 100%.
- * @param treat_neg_as_rel Replace negative absolute values with whole+attr.u.num.
- *
- * @return Absolute value corresponding to given relative value.
- */
-int attr_rel2real(int attrval, int whole, int treat_neg_as_rel)
-{
- if (attrval > ATTR_REL_MAXABS)
- return whole * (attrval - ATTR_REL_RELSHIFT)/100;
- if(treat_neg_as_rel && attrval<0 )
- return whole+attrval;
- return attrval;
-}
-
diff --git a/navit/attr.h b/navit/attr.h
deleted file mode 100644
index 4884ea95b..000000000
--- a/navit/attr.h
+++ /dev/null
@@ -1,251 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_ATTR_H
-#define NAVIT_ATTR_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "projection.h"
-
-enum item_type;
-
-/**
- * Attribute type values, created using macro magic.
- */
-enum attr_type {
-#define ATTR2(x,y) attr_##y=x,
-#define ATTR(x) attr_##x,
-
-/* Special macro for unused attribute types. Creates a placeholder entry
- * in the enum so the following values do not change. */
-#define ATTR_UNUSED ATTR_UNUSED_L(__LINE__)
-#define ATTR_UNUSED_L(x) ATTR_UNUSED_WITH_LINE_NUMBER(x)
-#define ATTR_UNUSED_WITH_LINE_NUMBER(x) ATTR_UNUSED_##x,
-
-#include "attr_def.h"
-
-#undef ATTR_UNUSED_WITH_LINE_NUMBER
-#undef ATTR_UNUSED_L
-#undef ATTR_UNUSED
-
-#undef ATTR2
-#undef ATTR
-};
-
-enum attr_format {
- attr_format_default=0,
- attr_format_with_units=1,
-};
-
-#define AF_ONEWAY (1<<0)
-#define AF_ONEWAYREV (1<<1)
-#define AF_NOPASS (AF_ONEWAY|AF_ONEWAYREV)
-#define AF_ONEWAYMASK (AF_ONEWAY|AF_ONEWAYREV)
-#define AF_SEGMENTED (1<<2)
-#define AF_ROUNDABOUT (1<<3)
-#define AF_ROUNDABOUT_VALID (1<<4)
-#define AF_ONEWAY_EXCEPTION (1<<5)
-#define AF_SPEED_LIMIT (1<<6)
-#define AF_RESERVED1 (1<<7)
-#define AF_SIZE_OR_WEIGHT_LIMIT (1<<8)
-#define AF_THROUGH_TRAFFIC_LIMIT (1<<9)
-#define AF_TOLL (1<<10)
-#define AF_SEASONAL (1<<11)
-#define AF_UNPAVED (1<<12)
-#define AF_FORD (1<<13)
-#define AF_UNDERGROUND (1<<14)
-#define AF_HIGH_OCCUPANCY_CAR_ONLY (1<<18)
-#define AF_DANGEROUS_GOODS (1<<19)
-#define AF_EMERGENCY_VEHICLES (1<<20)
-#define AF_TRANSPORT_TRUCK (1<<21)
-#define AF_DELIVERY_TRUCK (1<<22)
-#define AF_PUBLIC_BUS (1<<23)
-#define AF_TAXI (1<<24)
-#define AF_HIGH_OCCUPANCY_CAR (1<<25)
-#define AF_CAR (1<<26)
-#define AF_MOTORCYCLE (1<<27)
-#define AF_MOPED (1<<28)
-#define AF_HORSE (1<<29)
-#define AF_BIKE (1<<30)
-#define AF_PEDESTRIAN (1<<31)
-
-#define AF_PBH (AF_PEDESTRIAN|AF_BIKE|AF_HORSE)
-#define AF_MOTORIZED_FAST (AF_MOTORCYCLE|AF_CAR|AF_HIGH_OCCUPANCY_CAR|AF_TAXI|AF_PUBLIC_BUS|AF_DELIVERY_TRUCK|AF_TRANSPORT_TRUCK|AF_EMERGENCY_VEHICLES)
-#define AF_ALL (AF_PBH|AF_MOPED|AF_MOTORIZED_FAST)
-
-
-#define AF_DG_ANY (1<<0)
-#define AF_DG_WATER_HARMFUL (1<<1)
-#define AF_DG_EXPLOSIVE (1<<2)
-#define AF_DG_FLAMMABLE (1<<3)
-
-/*
- * Values for attributes that could carry relative values.
- * Some attributes allow both absolute and relative values. The value for these
- * attributes is stored as an int. Absolute values are stored as-is, relative
- * values are stored shifted by adding ATTR_REL_RELSHIFT.
- */
-/** Minimum value for an absolute attribute value. */
-#define ATTR_REL_MINABS -0x40000000
-/** Maximum value for an absolute attribute value. */
-#define ATTR_REL_MAXABS 0x40000000
-/** Minimum value for an relative attribute value (without value shift). */
-#define ATTR_REL_MINREL -0x1FFFFFFF
-/** Maximum value for an relative attribute value (without value shift). */
-#define ATTR_REL_MAXREL 0x20000000
-/**
- * Value shift for relative values. This value is added to an attribute values to indicate
- * a relative value. */
-#define ATTR_REL_RELSHIFT 0x60000000
-
-/** Indicates whether a position is valid **/
-enum attr_position_valid {
- attr_position_valid_invalid, /**< The position is invalid and should be discarded. **/
- attr_position_valid_static, /**< The position is valid but the vehicle is not moving, or moving very slowly.
- Calculations that involve the difference between two consecutive positions,
- such as bearing, may therefore be inaccurate. **/
- attr_position_valid_extrapolated_time, /**< FIXME: this description is just my (mvglasow) guess; this value is not used anywhere as of r5957.
- The position is the vehicle's last known position, and the consumer of the
- information should be aware that the vehicle may have moved since. **/
- attr_position_valid_extrapolated_spatial, /**< FIXME: this description is just my (mvglasow) guess; this value is not used anywhere as of r5957.
- The position is a prediction of the vehicle's current position, based on
- its last known position, the time elapsed since it was obtained and possibly
- other factors. This would be used for positions obtained through inertial
- navigation. **/
- attr_position_valid_valid, /**< The position is valid and can be used for all purposes. **/
-};
-
-#define ATTR_IS_INT(x) ((x) >= attr_type_int_begin && (x) <= attr_type_int_end)
-#define ATTR_IS_DOUBLE(x) ((x) >= attr_type_double_begin && (x) <= attr_type_double_end)
-#define ATTR_IS_STRING(x) ((x) >= attr_type_string_begin && (x) <= attr_type_string_end)
-#define ATTR_IS_OBJECT(x) ((x) >= attr_type_object_begin && (x) <= attr_type_object_end)
-#define ATTR_IS_ITEM(x) ((x) >= attr_type_item_begin && (x) <= attr_type_item_end)
-#define ATTR_IS_COORD_GEO(x) ((x) >= attr_type_coord_geo_begin && (x) <= attr_type_coord_geo_end)
-#define ATTR_IS_NUMERIC(x) (ATTR_IS_INT(x) || ATTR_IS_DOUBLE(x))
-#define ATTR_IS_COLOR(x) ((x) >= attr_type_color_begin && (x) <= attr_type_color_end)
-#define ATTR_IS_PCOORD(x) ((x) >= attr_type_pcoord_begin && (x) <= attr_type_pcoord_end)
-#define ATTR_IS_COORD(x) ((x) >= attr_type_coord_begin && (x) <= attr_type_coord_end)
-#define ATTR_IS_GROUP(x) ((x) >= attr_type_group_begin && (x) <= attr_type_group_end)
-
-#define ATTR_INT(x,y) ((struct attr){attr_##x,{.num=y}})
-#define ATTR_OBJECT(x,y) ((struct attr){attr_##x,{.navit=y}})
-
-struct range {
- short min, max;
-};
-
-struct attr {
- enum attr_type type;
- union {
- char *str;
- void *data;
- long num;
- struct item *item;
- enum item_type item_type;
- enum projection projection;
- double * numd;
- struct color *color;
- struct coord_geo *coord_geo;
- struct navit *navit;
- struct callback *callback;
- struct callback_list *callback_list;
- struct vehicle *vehicle;
- struct layout *layout;
- struct layer *layer;
- struct map *map;
- struct mapset *mapset;
- struct log *log;
- struct route *route;
- struct navigation *navigation;
- struct coord *coord;
- struct pcoord *pcoord;
- struct gui *gui;
- struct graphics *graphics;
- struct tracking *tracking;
- struct itemgra *itemgra;
- struct plugin *plugin;
- struct plugins *plugins;
- struct polygon *polygon;
- struct polyline *polyline;
- struct circle *circle;
- struct text *text;
- struct icon *icon;
- struct image *image;
- struct arrows *arrows;
- struct element *element;
- struct speech *speech;
- struct cursor *cursor;
- struct displaylist *displaylist;
- struct transformation *transformation;
- struct vehicleprofile *vehicleprofile;
- struct roadprofile *roadprofile;
- struct bookmarks *bookmarks;
- struct config *config;
- struct osd *osd;
- struct range range;
- struct navit_object *navit_object;
- int *dash;
- enum item_type *item_types;
- enum attr_type *attr_types;
- long long *num64;
- struct attr *attrs;
- } u;
-};
-
-struct attr_iter;
-/* prototypes */
-void attr_create_hash(void);
-void attr_destroy_hash(void);
-enum attr_type attr_from_name(const char *name);
-char *attr_to_name(enum attr_type attr);
-struct attr *attr_new_from_text(const char *name, const char *value);
-char *attr_to_text_ext(struct attr *attr, char *sep, enum attr_format fmt, enum attr_format def_fmt, struct map *map);
-char *attr_to_text(struct attr *attr, struct map *map, int pretty);
-struct attr *attr_search(struct attr **attrs, struct attr *last, enum attr_type attr);
-int attr_generic_get_attr(struct attr **attrs, struct attr **def_attrs, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-struct attr **attr_generic_set_attr(struct attr **attrs, struct attr *attr);
-struct attr **attr_generic_add_attr(struct attr **attrs, struct attr *attr);
-struct attr **attr_generic_add_attr_list(struct attr **attrs, struct attr **add);
-struct attr **attr_generic_prepend_attr(struct attr **attrs, struct attr *attr);
-struct attr **attr_generic_remove_attr(struct attr **attrs, struct attr *attr);
-enum attr_type attr_type_begin(enum attr_type type);
-int attr_data_size(struct attr *attr);
-void *attr_data_get(struct attr *attr);
-void attr_data_set(struct attr *attr, void *data);
-void attr_data_set_le(struct attr *attr, void *data);
-void attr_free_content(struct attr *attr);
-void attr_free(struct attr *attr);
-void attr_dup_content(struct attr *src, struct attr *dst);
-struct attr *attr_dup(struct attr *attr);
-void attr_list_free(struct attr **attrs);
-struct attr **attr_list_dup(struct attr **attrs);
-struct attr **attr_list_append(struct attr **attrs, struct attr *attr);
-int attr_from_line(char *line, char *name, int *pos, char *val_ret, char *name_ret);
-int attr_types_contains(enum attr_type *types, enum attr_type type);
-int attr_types_contains_default(enum attr_type *types, enum attr_type type, int deflt);
-int attr_rel2real(int attrval, int whole, int treat_neg_as_rel);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/attr_def.h b/navit/attr_def.h
deleted file mode 100644
index 7e66ac3d2..000000000
--- a/navit/attr_def.h
+++ /dev/null
@@ -1,508 +0,0 @@
-/*
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2014 Navit Team
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/** @file attr_def.h
- * @brief Attribute definitions.
- *
- * Any attribute used by a Navit object must be defined in this file.
- *
- * @author Navit Team
- * @date 2005-2014
- */
-
-/* prototypes */
-
-/* common */
-ATTR2(0x00000000,none)
-ATTR(any)
-ATTR(any_xml)
-
-ATTR2(0x00010000,type_item_begin)
-ATTR(town_streets_item)
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR(street_item)
-ATTR_UNUSED
-ATTR(position_sat_item)
-ATTR(current_item)
-ATTR2(0x0001ffff,type_item_end)
-
-ATTR2(0x00020000,type_int_begin)
-ATTR_UNUSED
-ATTR(id)
-ATTR(flags)
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR(flush_size)
-ATTR(flush_time)
-ATTR(zipfile_ref)
-ATTR(country_id)
-ATTR(position_sats)
-ATTR(position_sats_used)
-ATTR(update)
-ATTR(follow)
-ATTR(length)
-ATTR(time)
-ATTR(destination_length)
-ATTR(destination_time)
-ATTR(speed)
-ATTR(interval)
-ATTR(position_qual)
-ATTR(zoom)
-ATTR(retry_interval)
-ATTR(projection)
-ATTR(offroad)
-ATTR(vocabulary_name)
-ATTR(vocabulary_name_systematic)
-ATTR(vocabulary_distances)
-ATTR_UNUSED
-ATTR(antialias)
-ATTR(order_delta)
-ATTR(baudrate)
-ATTR_UNUSED
-ATTR(icon_xs)
-ATTR(icon_l)
-ATTR(icon_s)
-ATTR(spacing)
-ATTR(recent_dest)
-ATTR(destination_distance)
-ATTR(check_version)
-ATTR(details)
-ATTR(width)
-ATTR(offset)
-ATTR(directed)
-ATTR(radius)
-ATTR(text_size)
-ATTR(level)
-ATTR(icon_w)
-ATTR(icon_h)
-ATTR(rotation)
-ATTR(checksum_ignore)
-ATTR(position_fix_type)
-ATTR(timeout)
-ATTR(orientation)
-ATTR(keyboard)
-ATTR(position_sats_signal)
-ATTR(cps)
-ATTR_UNUSED
-ATTR(osd_configuration)
-ATTR(columns)
-ATTR(align)
-ATTR(sat_prn)
-ATTR(sat_elevation)
-ATTR(sat_azimuth)
-ATTR(sat_snr)
-ATTR(autozoom)
-ATTR(version)
-ATTR(autozoom_min)
-ATTR(maxspeed)
-ATTR(cdf_histsize)
-ATTR(message_maxage)
-ATTR(message_maxnum)
-ATTR(pitch)
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR(route_status)
-ATTR(route_weight)
-ATTR_UNUSED
-ATTR(route_mode)
-ATTR(maxspeed_handling)
-ATTR(flags_forward_mask)
-ATTR(flags_reverse_mask)
-ATTR_UNUSED
-ATTR(delay)
-ATTR(lag)
-ATTR(bpp)
-ATTR(fullscreen)
-ATTR(windowid)
-ATTR(hog)
-ATTR(flags_town)
-ATTR(flags_street)
-ATTR(flags_house_number)
-ATTR(use_camera)
-ATTR(flags_graphics)
-ATTR(zoom_min)
-ATTR(zoom_max)
-ATTR(gamma)
-ATTR(brightness)
-ATTR(contrast)
-ATTR(height)
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR(shmkey)
-ATTR(vehicle_width)
-ATTR(vehicle_length)
-ATTR(vehicle_height)
-ATTR(vehicle_weight)
-ATTR(vehicle_axle_weight)
-ATTR(vehicle_dangerous_goods)
-ATTR(shmsize)
-ATTR(shmoffset)
-ATTR_UNUSED
-ATTR(static_speed)
-ATTR(static_distance)
-ATTR(through_traffic_penalty)
-ATTR(through_traffic_flags)
-ATTR(speed_exceed_limit_offset)
-ATTR(speed_exceed_limit_percent)
-ATTR(map_border)
-ATTR(angle_pref)
-ATTR(connected_pref)
-ATTR(nostop_pref)
-ATTR(offroad_limit_pref)
-ATTR(route_pref)
-ATTR(overspeed_pref)
-ATTR(overspeed_percent_pref)
-ATTR(autosave_period)
-ATTR(tec_type)
-ATTR(tec_dirtype)
-ATTR(tec_direction)
-ATTR(imperial)
-ATTR(update_period)
-ATTR(tunnel_extrapolation)
-ATTR(street_count)
-ATTR(min_dist)
-ATTR(max_dist)
-ATTR(cache_size)
-ATTR_UNUSED
-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)
-ATTR(autozoom_max)
-ATTR(nav_status)
-ATTR2(0x00027500,type_rel_abs_begin)
-/* These attributes are int that can either hold relative or absolute values. See the
- * documentation of ATTR_REL_RELSHIFT for details.
- */
-ATTR(h)
-ATTR(w)
-ATTR(x)
-ATTR(y)
-ATTR(font_size)
-
-ATTR2(0x00028000,type_boolean_begin)
-/* boolean */
-ATTR(overwrite)
-ATTR(active)
-ATTR(follow_cursor)
-ATTR_UNUSED
-ATTR(tracking)
-ATTR(menubar)
-ATTR(statusbar)
-ATTR(toolbar)
-ATTR(animate)
-ATTR(lazy)
-ATTR(mkdir)
-ATTR(predraw)
-ATTR(postdraw)
-ATTR(button)
-ATTR(ondemand)
-ATTR(menu_on_map_click)
-ATTR(direction)
-ATTR_UNUSED
-ATTR(gui_speech)
-ATTR(town_id) /* fixme? */
-ATTR(street_id) /* fixme? */
-ATTR(district_id) /* fixme? */
-ATTR(drag_bitmap)
-ATTR(use_mousewheel)
-ATTR_UNUSED
-ATTR(position_magnetic_direction)
-ATTR(use_overlay)
-ATTR_UNUSED
-ATTR(autozoom_active)
-ATTR(position_valid)
-ATTR(frame)
-ATTR(tell_street_name)
-ATTR(bluetooth)
-ATTR(signal_on_map_click)
-ATTR(route_active)
-ATTR(search_active)
-ATTR(unsuspend)
-ATTR(announce_on)
-ATTR(disable_reset)
-ATTR(autostart)
-ATTR(readwrite)
-ATTR(cache)
-ATTR(create)
-ATTR(persistent)
-ATTR(waypoints_flag) /* toggle for "set as destination" to switch between start a new route or add */
-ATTR(no_warning_if_map_file_missing)
-ATTR(duplicate)
-ATTR(has_menu_button)
-ATTR2(0x0002ffff,type_int_end)
-ATTR2(0x00030000,type_string_begin)
-ATTR(type)
-ATTR(label)
-ATTR(data)
-ATTR(charset)
-ATTR(country_all)
-ATTR(country_iso3)
-ATTR(country_iso2)
-ATTR(country_car)
-ATTR(country_name)
-ATTR(town_name)
-ATTR(town_postal)
-ATTR(district_name)
-ATTR(street_name)
-ATTR(street_name_systematic)
-ATTR_UNUSED
-ATTR(debug)
-ATTR(address)
-ATTR(phone)
-ATTR(entry_fee)
-ATTR(open_hours)
-ATTR(skin)
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR(window_title)
-ATTR(qt5_platform)
-ATTR(qt5_widget)
-/* poi */
-ATTR_UNUSED
-ATTR(info_html)
-ATTR(price_html)
-/* navigation */
-ATTR(navigation_short)
-ATTR(navigation_long)
-ATTR(navigation_long_exact)
-ATTR(navigation_speech)
-ATTR(name)
-ATTR(cursorname)
-ATTR(source)
-ATTR(description)
-ATTR(gc_type)
-ATTR_UNUSED
-ATTR(position_nmea)
-ATTR(gpsd_query)
-ATTR(on_eof)
-ATTR(command)
-ATTR(src)
-ATTR(path)
-ATTR(font)
-ATTR(url_local)
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR(icon_src)
-ATTR(position_time_iso8601)
-ATTR(house_number)
-ATTR(osm_member)
-ATTR(osm_tag)
-ATTR(municipality_name)
-ATTR(county_name)
-ATTR(state_name)
-ATTR(message)
-ATTR_UNUSED
-ATTR(enable_expression)
-ATTR(fax)
-ATTR(email)
-ATTR(url)
-ATTR(profilename)
-ATTR(projectionname)
-ATTR(town_or_district_name)
-ATTR(postal)
-ATTR(postal_mask)
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR(town_name_match)
-ATTR(district_name_match)
-ATTR(street_name_match)
-ATTR(language)
-ATTR(subtype)
-ATTR(filter)
-ATTR(daylayout)
-ATTR(nightlayout)
-ATTR(xml_text)
-ATTR(layout_name)
-ATTR_UNUSED
-ATTR_UNUSED
-ATTR(status_text)
-ATTR(log_gpx_desc)
-ATTR(map_pass)
-ATTR_UNUSED
-ATTR(socket)
-/* These attributes for house number interpolation are only written by
- * martin-s' (unpublished) GDF converter. */
-ATTR(house_number_left)
-ATTR(house_number_left_odd)
-ATTR(house_number_left_even)
-ATTR(house_number_right)
-ATTR(house_number_right_odd)
-ATTR(house_number_right_even)
-ATTR(map_release)
-ATTR(accesskey)
-ATTR(http_method)
-ATTR(http_header)
-ATTR(progress)
-ATTR(sample_dir)
-ATTR(sample_suffix)
-ATTR(dbus_destination)
-ATTR(dbus_path)
-ATTR(dbus_interface)
-ATTR(dbus_method)
-ATTR(osm_is_in)
-ATTR(event_loop_system)
-ATTR(map_name)
-ATTR(item_name)
-ATTR(state_file)
-ATTR(on_map_click)
-ATTR(route_depth)
-ATTR(ref)
-ATTR(tile_name)
-ATTR(first_key)
-ATTR(last_key)
-ATTR(src_dir)
-ATTR(refresh_cond)
-/* House number interpolation information from OSM. For OSM data, the interpolation must
- * exclude the end nodes, because these are imported as separate nodes. */
-ATTR(house_number_interpolation_no_ends_incrmt_1)
-ATTR(house_number_interpolation_no_ends_incrmt_2)
-ATTR(dbg_level)
-ATTR(street_name_systematic_nat)
-ATTR(street_name_systematic_int)
-ATTR(street_destination)
-ATTR(exit_to)
-ATTR(street_destination_forward)
-ATTR(street_destination_backward)
-ATTR2(0x0003ffff,type_string_end)
-ATTR2(0x00040000,type_special_begin)
-ATTR(order)
-ATTR(item_type)
-ATTR(item_types)
-ATTR(dash)
-ATTR(sequence_range)
-ATTR(angle_range)
-ATTR(speed_range)
-ATTR(attr_types)
-ATTR(ch_edge)
-ATTR(zipfile_ref_block)
-ATTR(item_id)
-ATTR(pdl_gps_update)
-ATTR2(0x0004ffff,type_special_end)
-ATTR2(0x00050000,type_double_begin)
-ATTR(position_height)
-ATTR(position_speed)
-ATTR(position_direction)
-ATTR(position_hdop)
-ATTR(position_radius)
-ATTR(position_longitude)
-ATTR(position_latitude)
-ATTR(position_direction_matched)
-ATTR2(0x0005ffff,type_double_end)
-ATTR2(0x00060000,type_coord_geo_begin)
-ATTR(position_coord_geo)
-ATTR(center)
-ATTR(click_coord_geo)
-ATTR2(0x0006ffff,type_coord_geo_end)
-ATTR2(0x00070000,type_color_begin)
-ATTR(color)
-ATTR_UNUSED
-ATTR(background_color)
-ATTR(foreground_color)
-ATTR(text_color)
-ATTR(idle_color)
-ATTR(background_color2)
-ATTR(text_background)
-ATTR2(0x0007ffff,type_color_end)
-ATTR2(0x00080000,type_object_begin)
-ATTR(navit)
-ATTR(log)
-ATTR(callback)
-ATTR(route)
-ATTR(navigation)
-ATTR(vehicle)
-ATTR(map)
-ATTR(bookmark_map)
-ATTR(bookmarks)
-ATTR(former_destination_map)
-ATTR(graphics)
-ATTR(gui)
-ATTR(trackingo) /* fixme */
-ATTR(plugins)
-ATTR(layer)
-ATTR(itemgra)
-ATTR(polygon)
-ATTR(polyline)
-ATTR(circle)
-ATTR(text)
-ATTR(icon)
-ATTR(image)
-ATTR(arrows)
-ATTR(mapset)
-ATTR(osd)
-ATTR(plugin)
-ATTR(speech)
-ATTR(coord)
-ATTR(private_data)
-ATTR(callback_list)
-ATTR(displaylist)
-ATTR(transformation)
-ATTR(vehicleprofile)
-ATTR(roadprofile)
-ATTR(announcement)
-ATTR(cursor)
-ATTR(config)
-ATTR(maps)
-ATTR(layout)
-ATTR(profile_option)
-ATTR(script)
-ATTR2(0x0008ffff,type_object_end)
-ATTR2(0x00090000,type_coord_begin)
-ATTR2(0x0009ffff,type_coord_end)
-ATTR2(0x000a0000,type_pcoord_begin)
-ATTR(destination)
-ATTR(position)
-ATTR(position_test)
-ATTR2(0x000affff,type_pcoord_end)
-ATTR2(0x000b0000,type_callback_begin)
-ATTR(resize)
-ATTR(motion)
-ATTR(keypress)
-ATTR(window_closed)
-ATTR(log_gpx)
-ATTR(log_textfile)
-ATTR(graphics_ready)
-ATTR(destroy)
-ATTR(wm_copydata)
-ATTR2(0x000bffff,type_callback_end)
-ATTR2(0x000c0000,type_int64_begin)
-ATTR(osm_nodeid)
-ATTR(osm_wayid)
-ATTR(osm_relationid)
-ATTR(osm_nodeid_first_node)
-ATTR(osm_nodeid_last_node)
-ATTR2(0x000cffff,type_int64_end)
-ATTR2(0x000d0000,type_group_begin)
-ATTR2(0x000dffff,type_group_end)
-ATTR2(0x000e0000,type_item_type_begin)
-ATTR2(0x000effff,type_item_type_end)
diff --git a/navit/autoload/osso/CMakeLists.txt b/navit/autoload/osso/CMakeLists.txt
deleted file mode 100644
index 905afb01b..000000000
--- a/navit/autoload/osso/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-module_add_library(autoload_osso osso.c)
-
diff --git a/navit/autoload/osso/osso.c b/navit/autoload/osso/osso.c
deleted file mode 100644
index f6672090c..000000000
--- a/navit/autoload/osso/osso.c
+++ /dev/null
@@ -1,100 +0,0 @@
-#include <libosso.h>
-#include <stdlib.h>
-#include "config.h"
-#include "debug.h"
-#include "item.h"
-#include "attr.h"
-#include "navit.h"
-#include "plugin.h"
-#include "callback.h"
-#include "config_.h"
-
-static osso_context_t *osso_context;
-static struct attr callback = { attr_callback };
-
-extern char *version;
-
-struct cb_hw_state_trail {
- struct navit* nav;
- osso_hw_state_t *state;
-};
-
-static void
-osso_display_on(struct navit *this_)
-{
- osso_return_t err;
- err = osso_display_blanking_pause(osso_context);
- dbg(lvl_warning, "Unblank result: ",
- err == OSSO_OK ? "Ok" : (err ==
- OSSO_ERROR ? "Error" :
- "Invalid context"));
-}
-
-static gboolean
-osso_cb_hw_state_idle(struct cb_hw_state_trail * params)
-{
- dbg(lvl_debug, "(inact=%d, save=%d, shut=%d, memlow=%d, state=%d)\n",
- params->state->system_inactivity_ind,
- params->state->save_unsaved_data_ind, params->state->shutdown_ind,
- params->state->memory_low_ind, params->state->sig_device_mode_ind);
-
- if (params->state->shutdown_ind) {
- /* we are going down, down, down */
- navit_destroy(params->nav);
- }
-
- g_free(params->state);
- g_free(params);
-
- return FALSE;
-}
-
-/**
- * * Handle osso events
- * * @param state Osso hardware state
- * * @param data ptr to private data
- * * @returns nothing
- **/
-static void
-osso_cb_hw_state(osso_hw_state_t * state, gpointer data)
-{
- struct navit *nav = (struct navit*)data;
- struct cb_hw_state_trail *params = g_new(struct cb_hw_state_trail,1);
- params->nav=nav;
- params->state = g_new(osso_hw_state_t, 1);
- memcpy(params->state, state, sizeof(osso_hw_state_t));
- g_idle_add((GSourceFunc) osso_cb_hw_state_idle, params);
-}
-
-static void
-osso_navit(struct navit *nav, int add)
-{
- dbg(lvl_debug, "Installing osso context for org.navit_project.navit\n");
- osso_context = osso_initialize("org.navit_project.navit", version, TRUE, NULL);
- if (osso_context == NULL) {
- dbg(lvl_error, "error initiating osso context\n");
- }
- osso_hw_set_event_cb(osso_context, NULL, osso_cb_hw_state, nav);
-
- if (add > 0) {
- /* add callback to unblank screen */
- navit_add_callback(nav, callback_new_attr_0(callback_cast (osso_display_on), attr_unsuspend));
- }
-}
-
-void
-plugin_init(void)
-{
- //struct callback *cb;
-
- dbg(lvl_info, "enter\n");
-
- callback.u.callback = callback_new_attr_0(callback_cast(osso_navit), attr_navit);
- config_add_attr(config, &callback);
-}
-
-void
-plugin_deinit(void)
-{
- osso_deinitialize(osso_context);
-}
diff --git a/navit/binding/dbus/CMakeLists.txt b/navit/binding/dbus/CMakeLists.txt
deleted file mode 100644
index 6f081ab09..000000000
--- a/navit/binding/dbus/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-module_add_library(binding_dbus binding_dbus.c)
-set(bindir ${CMAKE_INSTALL_PREFIX}/${BIN_DIR})
-
-configure_file (
- "${CMAKE_CURRENT_SOURCE_DIR}/org.navit_project.navit.service.in"
- "${CMAKE_CURRENT_BINARY_DIR}/org.navit_project.navit.service"
-)
-
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.navit_project.navit.service DESTINATION ${CMAKE_INSTALL_PREFIX}/share/dbus-1/services/)
-
diff --git a/navit/binding/dbus/binding_dbus.c b/navit/binding/dbus/binding_dbus.c
deleted file mode 100644
index 97b48f9c4..000000000
--- a/navit/binding/dbus/binding_dbus.c
+++ /dev/null
@@ -1,2239 +0,0 @@
-/**
- * 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 <string.h>
-#define DBUS_API_SUBJECT_TO_CHANGE
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
-#include "config.h"
-#include "config_.h"
-#include "navit.h"
-#include "coord.h"
-#include "point.h"
-#include "plugin.h"
-#include "debug.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "attr.h"
-#include "layout.h"
-#include "navigation.h"
-#include "command.h"
-#include "callback.h"
-#include "graphics.h"
-#include "track.h"
-#include "vehicle.h"
-#include "vehicleprofile.h"
-#include "map.h"
-#include "mapset.h"
-#include "osd.h"
-#include "route.h"
-#include "search.h"
-#include "callback.h"
-#include "gui.h"
-#include "layout.h"
-#include "roadprofile.h"
-#include "util.h"
-#include "transform.h"
-#include "event.h"
-
-static DBusConnection *connection;
-static dbus_uint32_t dbus_serial;
-
-static char *service_name = "org.navit_project.navit";
-static char *object_path = "/org/navit_project/navit";
-char *navitintrospectxml_head1 = "<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"\n"
- "\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
- "<node name=\"";
-
-char *navitintrospectxml_head2 = "\">\n"
- " <interface name=\"org.freedesktop.DBus.Introspectable\">\n"
- " <method name=\"Introspect\">\n"
- " <arg direction=\"out\" type=\"s\" />\n"
- " </method>\n"
- " </interface>\n";
-
-
-
-GHashTable *object_hash;
-GHashTable *object_hash_rev;
-GHashTable *object_count;
-
-struct dbus_callback {
- struct callback *callback;
- char *signal;
-};
-
-static char *
-object_new(char *type, void *object)
-{
- int id;
- char *ret;
- dbg(lvl_debug,"enter %s\n", type);
- if ((ret=g_hash_table_lookup(object_hash_rev, object)))
- return ret;
- id=GPOINTER_TO_INT(g_hash_table_lookup(object_count, type));
- g_hash_table_insert(object_count, type, GINT_TO_POINTER((id+1)));
- ret=g_strdup_printf("%s/%s/%d", object_path, type, id);
- g_hash_table_insert(object_hash, ret, object);
- g_hash_table_insert(object_hash_rev, object, ret);
- dbg(lvl_debug,"return %s\n", ret);
- return (ret);
-}
-
-static void *
-object_get(const char *path)
-{
- return g_hash_table_lookup(object_hash, path);
-}
-
-static void
-object_destroy(const char *path, void *object)
-{
- if (!path && !object)
- return;
- if (!object)
- object=g_hash_table_lookup(object_hash, path);
- if (!path)
- path=g_hash_table_lookup(object_hash_rev, object);
- g_hash_table_remove(object_hash, path);
- g_hash_table_remove(object_hash_rev, object);
-}
-
-static void *
-resolve_object(const char *opath, char *type)
-{
- char *prefix;
- const char *oprefix;
- void *ret=NULL;
- char *def_navit="/default_navit";
- char *def_gui="/default_gui";
- char *def_graphics="/default_graphics";
- char *def_vehicle="/default_vehicle";
- char *def_vehicleprofile="/default_vehicleprofile";
- char *def_mapset="/default_mapset";
- char *def_map="/default_map";
- char *def_navigation="/default_navigation";
- char *def_route="/default_route";
- char *def_tracking="/default_tracking";
- struct attr attr;
-
- if (strncmp(opath, object_path, strlen(object_path))) {
- dbg(lvl_error,"wrong object path %s\n",opath);
- return NULL;
- }
- prefix=g_strdup_printf("%s/%s/", object_path, type);
- if (!strncmp(prefix, opath, strlen(prefix))) {
- ret=object_get(opath);
- g_free(prefix);
- return ret;
- }
- g_free(prefix);
- oprefix=opath+strlen(object_path);
- if (!strncmp(oprefix,def_navit,strlen(def_navit))) {
- oprefix+=strlen(def_navit);
- struct attr navit;
- if (!config_get_attr(config, attr_navit, &navit, NULL))
- return NULL;
- if (!oprefix[0]) {
- dbg(lvl_debug,"default_navit\n");
- return navit.u.navit;
- }
- if (!strncmp(oprefix,def_graphics,strlen(def_graphics))) {
- if (navit_get_attr(navit.u.navit, attr_graphics, &attr, NULL)) {
- return attr.u.graphics;
- }
- return NULL;
- }
- if (!strncmp(oprefix,def_gui,strlen(def_gui))) {
- if (navit_get_attr(navit.u.navit, attr_gui, &attr, NULL)) {
- return attr.u.gui;
- }
- return NULL;
- }
- if (!strncmp(oprefix,def_vehicleprofile,strlen(def_vehicleprofile))) {
- if (navit_get_attr(navit.u.navit, attr_vehicleprofile, &attr, NULL)) {
- return attr.u.vehicleprofile;
- }
- return NULL;
- }
- if (!strncmp(oprefix,def_vehicle,strlen(def_vehicle))) {
- if (navit_get_attr(navit.u.navit, attr_vehicle, &attr, NULL)) {
- return attr.u.vehicle;
- }
- return NULL;
- }
- if (!strncmp(oprefix,def_mapset,strlen(def_mapset))) {
- oprefix+=strlen(def_mapset);
- if (navit_get_attr(navit.u.navit, attr_mapset, &attr, NULL)) {
- if (!oprefix[0]) {
- return attr.u.mapset;
- }
- if (!strncmp(oprefix,def_map,strlen(def_map))) {
- if (mapset_get_attr(attr.u.mapset, attr_map, &attr, NULL)) {
- return attr.u.map;
- }
- return NULL;
- }
- }
- return NULL;
- }
- if (!strncmp(oprefix,def_navigation,strlen(def_navigation))) {
- if (navit_get_attr(navit.u.navit, attr_navigation, &attr, NULL)) {
- return attr.u.navigation;
- }
- return NULL;
- }
- if (!strncmp(oprefix,def_route,strlen(def_route))) {
- oprefix+=strlen(def_route);
- if (navit_get_attr(navit.u.navit, attr_route, &attr, NULL)) {
- return attr.u.route;
- }
- return NULL;
- }
- if (!strncmp(oprefix,def_tracking,strlen(def_tracking))) {
- if (navit_get_attr(navit.u.navit, attr_trackingo, &attr, NULL)) {
- return attr.u.tracking;
- }
- return NULL;
- }
- }
- return NULL;
-}
-
-static void *
-object_get_from_message_arg(DBusMessageIter *iter, char *type)
-{
- char *opath;
-
- if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_OBJECT_PATH)
- return NULL;
- dbus_message_iter_get_basic(iter, &opath);
- dbus_message_iter_next(iter);
- return resolve_object(opath, type);
-}
-
-static void *
-object_get_from_message(DBusMessage *message, char *type)
-{
- return resolve_object(dbus_message_get_path(message), type);
-}
-
-static enum attr_type
-attr_type_get_from_message(DBusMessageIter *iter)
-{
- char *attr_type;
-
- if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_STRING)
- return attr_none;
- dbus_message_iter_get_basic(iter, &attr_type);
- dbus_message_iter_next(iter);
- return attr_from_name(attr_type);
-}
-
-static void
-encode_variant_string(DBusMessageIter *iter, char *str)
-{
- DBusMessageIter variant;
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &variant);
- dbus_message_iter_append_basic(&variant, DBUS_TYPE_STRING, &str);
- dbus_message_iter_close_container(iter, &variant);
-}
-
-static void
-encode_dict_string_variant_string(DBusMessageIter *iter, char *key, char *value)
-{
- DBusMessageIter dict;
- dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, &dict);
- dbus_message_iter_append_basic(&dict, DBUS_TYPE_STRING, &key);
- encode_variant_string(&dict, value);
- dbus_message_iter_close_container(iter, &dict);
-}
-
-static int
-encode_attr(DBusMessageIter *iter1, struct attr *attr)
-{
- char *name=attr_to_name(attr->type);
- DBusMessageIter iter2,iter3;
- dbus_message_iter_append_basic(iter1, DBUS_TYPE_STRING, &name);
- if (attr->type >= attr_type_int_begin && attr->type < attr_type_boolean_begin) {
- dbus_message_iter_open_container(iter1, DBUS_TYPE_VARIANT, DBUS_TYPE_INT32_AS_STRING, &iter2);
- dbus_message_iter_append_basic(&iter2, DBUS_TYPE_INT32, &attr->u.num);
- dbus_message_iter_close_container(iter1, &iter2);
- }
- if (attr->type >= attr_type_boolean_begin && attr->type <= attr_type_int_end) {
- dbus_message_iter_open_container(iter1, DBUS_TYPE_VARIANT, DBUS_TYPE_BOOLEAN_AS_STRING, &iter2);
- dbus_message_iter_append_basic(&iter2, DBUS_TYPE_BOOLEAN, &attr->u.num);
- dbus_message_iter_close_container(iter1, &iter2);
- }
- if (attr->type >= attr_type_string_begin && attr->type <= attr_type_string_end) {
- encode_variant_string(iter1, attr->u.str);
- }
- if ((attr->type >= attr_type_item_type_begin && attr->type <= attr_type_item_type_end) || attr->type == attr_item_type) {
- encode_variant_string(iter1, item_to_name(attr->u.item_type));
- }
- if (attr->type >= attr_type_pcoord_begin && attr->type <= attr_type_pcoord_end) {
- dbus_message_iter_open_container(iter1, DBUS_TYPE_VARIANT, "ai", &iter2);
- dbus_message_iter_open_container(&iter2, DBUS_TYPE_ARRAY, "i", &iter3);
- if (attr->u.pcoord) {
- dbus_message_iter_append_basic(&iter3, DBUS_TYPE_INT32, &attr->u.pcoord->pro);
- dbus_message_iter_append_basic(&iter3, DBUS_TYPE_INT32, &attr->u.pcoord->x);
- dbus_message_iter_append_basic(&iter3, DBUS_TYPE_INT32, &attr->u.pcoord->y);
- }
- dbus_message_iter_close_container(&iter2, &iter3);
- dbus_message_iter_close_container(iter1, &iter2);
- }
- if (attr->type >= attr_type_object_begin && attr->type <= attr_type_object_end) {
- char *object=object_new(attr_to_name(attr->type), attr->u.data);
- dbus_message_iter_open_container(iter1, DBUS_TYPE_VARIANT, DBUS_TYPE_OBJECT_PATH_AS_STRING, &iter2);
- dbus_message_iter_append_basic(&iter2, DBUS_TYPE_OBJECT_PATH, &object);
- dbus_message_iter_close_container(iter1, &iter2);
- }
- if (attr->type == attr_item_types) {
- char *str=attr_to_text(attr,NULL,0);
- encode_variant_string(iter1, str);
- g_free(str);
- }
- return 1;
-}
-
-
-static DBusHandlerResult
-empty_reply(DBusConnection *connection, DBusMessage *message)
-{
- DBusMessage *reply;
-
- reply = dbus_message_new_method_return(message);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
-
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-
-static DBusHandlerResult
-dbus_error(DBusConnection *connection, DBusMessage *message, char *error, char *msg)
-{
- DBusMessage *reply;
-
- reply = dbus_message_new_error(message, error, msg);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-static DBusHandlerResult
-dbus_error_invalid_attr_type(DBusConnection *connection, DBusMessage *message)
-{
- return dbus_error(connection, message, DBUS_ERROR_INVALID_ARGS, "attribute type invalid");
-}
-
-static DBusHandlerResult
-dbus_error_invalid_parameter(DBusConnection *connection, DBusMessage *message)
-{
- return dbus_error(connection, message, DBUS_ERROR_INVALID_ARGS, "parameter invalid");
-}
-
-static DBusHandlerResult
-dbus_error_invalid_object_path(DBusConnection *connection, DBusMessage *message)
-{
- return dbus_error(connection, message, DBUS_ERROR_BAD_ADDRESS, "object path invalid");
-}
-
-static DBusHandlerResult
-dbus_error_invalid_object_path_parameter(DBusConnection *connection, DBusMessage *message)
-{
- return dbus_error(connection, message, DBUS_ERROR_BAD_ADDRESS, "object path parameter invalid");
-}
-
-static DBusHandlerResult
-dbus_error_navigation_not_configured(DBusConnection *connection, DBusMessage *message)
-{
- return dbus_error(connection, message, DBUS_ERROR_FAILED, "navigation is not configured (no <navigation> element in config file?)");
-}
-
-static DBusHandlerResult
-dbus_error_no_data_available(DBusConnection *connection, DBusMessage *message)
-{
-#if 1
- return dbus_error(connection, message, DBUS_ERROR_FILE_NOT_FOUND, "no data available");
-#else
- return empty_reply(connection, message);
-#endif
-}
-
-#if 0
-static void
-dbus_dump_iter(char *prefix, DBusMessageIter *iter)
-{
- char *prefixr,*vals;
- int arg,vali;
- DBusMessageIter iterr;
- while ((arg=dbus_message_iter_get_arg_type(iter)) != DBUS_TYPE_INVALID) {
- switch (arg) {
- case DBUS_TYPE_INT32:
- dbus_message_iter_get_basic(iter, &vali);
- dbg(lvl_debug,"%sDBUS_TYPE_INT32: %d\n",prefix,vali);
- break;
- case DBUS_TYPE_STRING:
- dbus_message_iter_get_basic(iter, &vals);
- dbg(lvl_debug,"%sDBUS_TYPE_STRING: %s\n",prefix,vals);
- break;
- case DBUS_TYPE_STRUCT:
- dbg(lvl_debug,"%sDBUS_TYPE_STRUCT:\n",prefix);
- prefixr=g_strdup_printf("%s ",prefix);
- dbus_message_iter_recurse(iter, &iterr);
- dbus_dump_iter(prefixr, &iterr);
- g_free(prefixr);
- break;
- case DBUS_TYPE_VARIANT:
- dbg(lvl_debug,"%sDBUS_TYPE_VARIANT:\n",prefix);
- prefixr=g_strdup_printf("%s ",prefix);
- dbus_message_iter_recurse(iter, &iterr);
- dbus_dump_iter(prefixr, &iterr);
- g_free(prefixr);
- break;
- case DBUS_TYPE_DICT_ENTRY:
- dbg(lvl_debug,"%sDBUS_TYPE_DICT_ENTRY:\n",prefix);
- prefixr=g_strdup_printf("%s ",prefix);
- dbus_message_iter_recurse(iter, &iterr);
- dbus_dump_iter(prefixr, &iterr);
- g_free(prefixr);
- break;
- case DBUS_TYPE_ARRAY:
- dbg(lvl_debug,"%sDBUS_TYPE_ARRAY:\n",prefix);
- prefixr=g_strdup_printf("%s ",prefix);
- dbus_message_iter_recurse(iter, &iterr);
- dbus_dump_iter(prefixr, &iterr);
- g_free(prefixr);
- break;
- default:
- dbg(lvl_debug,"%c\n",arg);
- }
- dbus_message_iter_next(iter);
- }
-}
-
-static void
-dbus_dump(DBusMessage *message)
-{
- DBusMessageIter iter;
-
- dbus_message_iter_init(message, &iter);
- dbus_dump_iter("",&iter);
-
-}
-#endif
-
-/**
- * Extracts a struct pcoord from a DBus message
- *
- * @param message The DBus message
- * @param iter Sort of pointer that points on that (iii)-object in the message
- * @param pc Pointer where the data should get stored
- * @returns Returns 1 when everything went right, otherwise 0
- */
-static int
-pcoord_get_from_message(DBusMessage *message, DBusMessageIter *iter, struct pcoord *pc)
-{
-
- if(!strcmp(dbus_message_iter_get_signature(iter), "s")) {
- char *coordstring;
-
- dbus_message_iter_get_basic(iter, &coordstring);
- if(!pcoord_parse(coordstring, projection_mg, pc))
- return 0;
-
- return 1;
- } else {
-
- DBusMessageIter iter2;
- dbus_message_iter_recurse(iter, &iter2);
- if(!strcmp(dbus_message_iter_get_signature(iter), "(is)")) {
- char *coordstring;
- int projection;
-
- dbus_message_iter_get_basic(&iter2, &projection);
-
- dbus_message_iter_next(&iter2);
- dbus_message_iter_get_basic(&iter2, &coordstring);
-
- if(!pcoord_parse(coordstring, projection, pc))
- return 0;
-
- return 1;
- } else if(!strcmp(dbus_message_iter_get_signature(iter), "(iii)")) {
-
- dbus_message_iter_get_basic(&iter2, &pc->pro);
-
- dbus_message_iter_next(&iter2);
- dbus_message_iter_get_basic(&iter2, &pc->x);
-
- dbus_message_iter_next(&iter2);
- dbus_message_iter_get_basic(&iter2, &pc->y);
-
- return 1;
- }
- }
- return 0;
-
-}
-
-static void
-pcoord_encode(DBusMessageIter *iter, struct pcoord *pc)
-{
- DBusMessageIter iter2;
- dbus_message_iter_open_container(iter,DBUS_TYPE_STRUCT,NULL,&iter2);
- if (pc) {
- dbus_message_iter_append_basic(&iter2, DBUS_TYPE_INT32, &pc->pro);
- dbus_message_iter_append_basic(&iter2, DBUS_TYPE_INT32, &pc->x);
- dbus_message_iter_append_basic(&iter2, DBUS_TYPE_INT32, &pc->y);
- } else {
- int n=0;
- dbus_message_iter_append_basic(&iter2, DBUS_TYPE_INT32, &n);
- dbus_message_iter_append_basic(&iter2, DBUS_TYPE_INT32, &n);
- dbus_message_iter_append_basic(&iter2, DBUS_TYPE_INT32, &n);
- }
- dbus_message_iter_close_container(iter, &iter2);
-}
-
-static enum attr_type
-decode_attr_type_from_iter(DBusMessageIter *iter)
-{
- char *attr_type;
- enum attr_type ret;
-
- if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_STRING)
- return attr_none;
- dbus_message_iter_get_basic(iter, &attr_type);
- dbus_message_iter_next(iter);
- ret=attr_from_name(attr_type);
- dbg(lvl_debug, "attr value: 0x%x string: %s\n", ret, attr_type);
- return ret;
-}
-
-static int
-decode_attr_from_iter(DBusMessageIter *iter, struct attr *attr)
-{
- DBusMessageIter iterattr, iterstruct;
- int ret=1;
- double d;
-
- attr->type=decode_attr_type_from_iter(iter);
- if (attr->type == attr_none)
- return 0;
-
- dbus_message_iter_recurse(iter, &iterattr);
- dbus_message_iter_next(iter);
- dbg(lvl_debug, "seems valid. signature: %s\n", dbus_message_iter_get_signature(&iterattr));
-
- if (attr->type >= attr_type_item_begin && attr->type <= attr_type_item_end)
- return 0;
-
- if (attr->type >= attr_type_int_begin && attr->type <= attr_type_boolean_begin) {
- if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_INT32) {
- int val;
- dbus_message_iter_get_basic(&iterattr, &val);
- attr->u.num=val;
- return 1;
- }
- return 0;
- }
- if(attr->type >= attr_type_boolean_begin && attr->type <= attr_type_int_end) {
- if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_BOOLEAN) {
- int val;
- dbus_message_iter_get_basic(&iterattr, &val);
- attr->u.num=val;
- return 1;
- }
- return 0;
- }
- if(attr->type >= attr_type_string_begin && attr->type <= attr_type_string_end) {
- if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_STRING) {
- dbus_message_iter_get_basic(&iterattr, &attr->u.str);
- return 1;
- }
- return 0;
- }
- if(attr->type >= attr_type_double_begin && attr->type <= attr_type_double_end) {
- if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_DOUBLE) {
- attr->u.numd=g_new(typeof(*attr->u.numd),1);
- dbus_message_iter_get_basic(&iterattr, attr->u.numd);
- return 1;
- }
- }
- if(attr->type >= attr_type_object_begin && attr->type <= attr_type_object_end) {
- if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_OBJECT_PATH) {
- char *obj;
- dbus_message_iter_get_basic(&iterattr, &obj);
- attr->u.data=object_get(obj);
- if (attr->u.data) {
- return 1;
- }
- }
- return 0;
- }
- if(attr->type >= attr_type_coord_geo_begin && attr->type <= attr_type_coord_geo_end) {
- if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_STRUCT) {
- attr->u.coord_geo=g_new(typeof(*attr->u.coord_geo),1);
- dbus_message_iter_recurse(&iterattr, &iterstruct);
- if (dbus_message_iter_get_arg_type(&iterstruct) == DBUS_TYPE_DOUBLE) {
- dbus_message_iter_get_basic(&iterstruct, &d);
- dbus_message_iter_next(&iterstruct);
- attr->u.coord_geo->lng=d;
- } else
- ret=0;
- if (dbus_message_iter_get_arg_type(&iterstruct) == DBUS_TYPE_DOUBLE) {
- dbus_message_iter_get_basic(&iterstruct, &d);
- attr->u.coord_geo->lat=d;
- } else
- ret=0;
- if (!ret) {
- g_free(attr->u.coord_geo);
- attr->u.coord_geo=NULL;
- }
- return ret;
- }
- }
- if(attr->type >= attr_type_pcoord_begin && attr->type <= attr_type_pcoord_end) {
- int i;
- if (dbus_message_iter_get_arg_type(&iterattr) == DBUS_TYPE_STRUCT) {
- attr->u.pcoord=g_new(typeof(*attr->u.pcoord),1);
- dbus_message_iter_recurse(&iterattr, &iterstruct);
- if (dbus_message_iter_get_arg_type(&iterstruct) == DBUS_TYPE_INT32) {
- dbus_message_iter_get_basic(&iterstruct, &i);
- dbus_message_iter_next(&iterstruct);
- attr->u.pcoord->pro=i;
- } else
- ret=0;
- if (dbus_message_iter_get_arg_type(&iterstruct) == DBUS_TYPE_INT32) {
- dbus_message_iter_get_basic(&iterstruct, &i);
- dbus_message_iter_next(&iterstruct);
- attr->u.pcoord->x=i;
- } else
- ret=0;
- if (dbus_message_iter_get_arg_type(&iterstruct) == DBUS_TYPE_INT32) {
- dbus_message_iter_get_basic(&iterstruct, &i);
- attr->u.pcoord->y=i;
- } else
- ret=0;
- if (!ret) {
- g_free(attr->u.pcoord);
- attr->u.pcoord=NULL;
- }
- return ret;
- }
- }
- if (attr->type == attr_callback) {
- struct dbus_callback *callback=object_get_from_message_arg(&iterattr, "callback");
- if (callback) {
- attr->u.callback=callback->callback;
- return 1;
- }
- }
- return 0;
-}
-
-static int
-decode_attr(DBusMessage *message, struct attr *attr)
-{
- DBusMessageIter iter;
-
- dbus_message_iter_init(message, &iter);
- return decode_attr_from_iter(&iter, attr);
-}
-
-static void
-destroy_attr(struct attr *attr)
-{
- if(attr->type > attr_type_double_begin && attr->type < attr_type_double_end) {
- g_free(attr->u.numd);
- }
-}
-
-static char *
-get_iter_name(char *type)
-{
- return g_strdup_printf("%s_attr_iter",type);
-}
-
-static DBusHandlerResult
-request_attr_iter(DBusConnection *connection, DBusMessage *message, char *type, struct attr_iter *(*func)(void))
-{
- DBusMessage *reply;
- char *iter_name;
- char *opath;
- struct attr_iter *attr_iter;
-
- attr_iter=(*func)();
- iter_name=get_iter_name(type);
- opath=object_new(iter_name,attr_iter);
- g_free(iter_name);
- reply = dbus_message_new_method_return(message);
- dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &opath, DBUS_TYPE_INVALID);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
-
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-static DBusHandlerResult
-request_attr_iter_destroy(DBusConnection *connection, DBusMessage *message, char *type, void (*func)(struct attr_iter *))
-{
- struct attr_iter *attr_iter;
- DBusMessageIter iter;
- char *iter_name;
-
- dbus_message_iter_init(message, &iter);
- iter_name=get_iter_name(type);
- attr_iter=object_get_from_message_arg(&iter, iter_name);
- g_free(iter_name);
- if (! attr_iter)
- return dbus_error_invalid_object_path_parameter(connection, message);
- object_destroy(NULL, attr_iter);
- func(attr_iter);
-
- return empty_reply(connection, message);
-}
-
-static DBusHandlerResult
-request_destroy(DBusConnection *connection, DBusMessage *message, char *type, void *data, void (*func)(void *))
-{
- if (!data)
- data=object_get_from_message(message, type);
- if (!data)
- return dbus_error_invalid_object_path(connection, message);
- object_destroy(NULL, data);
- func(data);
-
- return empty_reply(connection, message);
-}
-
-
-static DBusHandlerResult
-request_dup(DBusConnection *connection, DBusMessage *message, char *type, void *data, void *(*func)(void *))
-{
- DBusMessage *reply;
- char *opath;
- void *obj;
- if (!data)
- data=object_get_from_message(message, type);
- if (!data)
- return dbus_error_invalid_object_path(connection, message);
- obj=func(data);
- opath=object_new(type,obj);
- reply = dbus_message_new_method_return(message);
- dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &opath, DBUS_TYPE_INVALID);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
-
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-
-static DBusHandlerResult
-request_get_attr(DBusConnection *connection, DBusMessage *message, char *type, void *data, int (*func)(void *data, enum attr_type type, struct attr *attr, struct attr_iter *iter))
-{
- DBusMessage *reply;
- DBusMessageIter iter;
- struct attr attr;
- enum attr_type attr_type;
- struct attr_iter *attr_iter;
- char *iter_name;
-
- if (! data)
- data = object_get_from_message(message, type);
- if (! data)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- attr_type=attr_type_get_from_message(&iter);
- if (attr_type == attr_none)
- return dbus_error_invalid_attr_type(connection, message);
- iter_name=get_iter_name(type);
- attr_iter=object_get_from_message_arg(&iter, iter_name);
- g_free(iter_name);
- if (func(data, attr_type, &attr, attr_iter)) {
- DBusMessageIter iter1;
- reply = dbus_message_new_method_return(message);
- dbus_message_iter_init_append(reply, &iter1);
- encode_attr(&iter1, &attr);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
- return DBUS_HANDLER_RESULT_HANDLED;
- }
- return dbus_error_no_data_available(connection, message);
-
-}
-
-static DBusHandlerResult
-request_command(DBusConnection *connection, DBusMessage *message, char *type, void *data, int (*func)(void *data, enum attr_type type, struct attr *attr, struct attr_iter *iter))
-{
- DBusMessageIter iter;
- struct attr attr;
- char *command;
-
- if (! data)
- data = object_get_from_message(message, type);
- if (! data)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
- return dbus_error_invalid_parameter(connection, message);
- dbus_message_iter_get_basic(&iter, &command);
- dbus_message_iter_next(&iter);
- if (func(data, attr_callback_list, &attr, NULL)) {
- int valid=0;
- callback_list_call_attr_4(attr.u.callback_list, attr_command, command, NULL, NULL, &valid);
- }
- return empty_reply(connection, message);
-
-}
-
-static DBusHandlerResult
-request_set_add_remove_attr(DBusConnection *connection, DBusMessage *message, char *type, void *data, int (*func)(void *data, struct attr *attr))
-{
- struct attr attr;
- int ret;
-
- if (! data)
- data = object_get_from_message(message, type);
- if (! data)
- return dbus_error_invalid_object_path(connection, message);
-
- if (decode_attr(message, &attr)) {
- ret=(*func)(data, &attr);
- destroy_attr(&attr);
- if (ret)
- return empty_reply(connection, message);
- dbg(lvl_error,"failed to set/add/remove attr\n");
- } else {
- dbg(lvl_error,"failed to decode attr\n");
- }
- return dbus_error_invalid_parameter(connection, message);
-}
-
-/* callback */
-
-
-static void
-dbus_callback_emit_signal(struct dbus_callback *dbus_callback)
-{
- DBusMessage* msg;
- msg = dbus_message_new_signal(object_path, service_name, dbus_callback->signal);
- if (msg) {
- dbus_connection_send(connection, msg, &dbus_serial);
- dbus_connection_flush(connection);
- dbus_message_unref(msg);
- }
-}
-
-static void
-request_callback_destroy_do(struct dbus_callback *data)
-{
- callback_destroy(data->callback);
- g_free(data->signal);
- g_free(data);
-}
-
-static DBusHandlerResult
-request_callback_destroy(DBusConnection *connection, DBusMessage *message)
-{
- return request_destroy(connection, message, "callback", NULL, (void (*)(void *)) request_callback_destroy_do);
-}
-
-static DBusHandlerResult
-request_callback_new(DBusConnection *connection, DBusMessage *message)
-{
- DBusMessageIter iter;
- DBusMessage *reply;
- struct dbus_callback *callback;
- char *signal,*opath;
- enum attr_type type;
-
- dbus_message_iter_init(message, &iter);
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
- return dbus_error_invalid_parameter(connection, message);
- dbus_message_iter_get_basic(&iter, &signal);
- dbus_message_iter_next(&iter);
- callback=g_new0(struct dbus_callback, 1);
- callback->signal=g_strdup(signal);
-
- if (dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING) {
- type=attr_type_get_from_message(&iter);
- callback->callback=callback_new_attr_1(callback_cast(dbus_callback_emit_signal), type, callback);
- } else
- callback->callback=callback_new_1(callback_cast(dbus_callback_emit_signal), callback);
- opath=object_new("callback", callback);
- reply = dbus_message_new_method_return(message);
- dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &opath, DBUS_TYPE_INVALID);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-/* config */
-static DBusHandlerResult
-request_config_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "config", config, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))config_get_attr);
-}
-
-static DBusHandlerResult
-request_config_attr_iter(DBusConnection *connection, DBusMessage *message)
-{
- return request_attr_iter(connection, message, "config", (struct attr_iter * (*)(void))config_attr_iter_new);
-}
-
-static DBusHandlerResult
-request_config_attr_iter_destroy(DBusConnection *connection, DBusMessage *message)
-{
- return request_attr_iter_destroy(connection, message, "config", (void (*)(struct attr_iter *))config_attr_iter_destroy);
-}
-
-
-
-/* graphics */
-
-static DBusHandlerResult
-request_graphics_get_data(DBusConnection *connection, DBusMessage *message)
-{
- struct graphics *graphics;
- char *data;
- struct graphics_data_image *image;
- DBusMessage *reply;
-
- graphics = object_get_from_message(message, "graphics");
- if (! graphics)
- return dbus_error_invalid_object_path(connection, message);
-
- if (!dbus_message_get_args(message, NULL, DBUS_TYPE_STRING, &data, DBUS_TYPE_INVALID))
- return dbus_error_invalid_parameter(connection, message);
- image=graphics_get_data(graphics, data);
- if (image) {
- DBusMessageIter iter1,iter2;
- reply = dbus_message_new_method_return(message);
-#if 0
- dbus_message_append_args(reply, DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID);
-#endif
- dbus_message_iter_init_append(reply, &iter1);
- dbus_message_iter_open_container(&iter1, DBUS_TYPE_ARRAY, "y", &iter2);
- if (image->data && image->size)
- dbus_message_iter_append_fixed_array(&iter2, DBUS_TYPE_BYTE, &image->data, image->size);
- dbus_message_iter_close_container(&iter1, &iter2);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
- return DBUS_HANDLER_RESULT_HANDLED;
- }
- return dbus_error_no_data_available(connection, message);
-}
-
-/* gui */
-
-static DBusHandlerResult
-request_gui_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "gui", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))gui_get_attr);
-}
-
-static DBusHandlerResult
-request_gui_command(DBusConnection *connection, DBusMessage *message)
-{
- return request_command(connection, message, "gui", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))gui_get_attr);
-}
-
-
-
-static DBusHandlerResult
-request_graphics_set_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "graphics", NULL, (int (*)(void *, struct attr *))graphics_set_attr);
-}
-
-/* layout */
-
-static DBusHandlerResult
-request_layout_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "layout", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))layout_get_attr);
-}
-
-
-
-/* map */
-
-static DBusHandlerResult
-request_map_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "map", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))map_get_attr);
-}
-
-
-static DBusHandlerResult
-request_map_set_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "map", NULL, (int (*)(void *, struct attr *))map_set_attr);
-}
-
-static DBusHandlerResult
-request_map_dump(DBusConnection *connection, DBusMessage *message)
-{
- DBusMessageIter iter;
- struct map *map;
-
- map=object_get_from_message(message, "map");
- if (! map)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- if(!strcmp(dbus_message_iter_get_signature(&iter), "s")) {
- char *file;
- FILE *f;
- dbus_message_iter_get_basic(&iter, &file);
- /* dbg(0,"File '%s'\n",file); */
- f=fopen(file,"w");
- map_dump_filedesc(map,f);
- fclose(f);
- return empty_reply(connection, message);
- }
- return dbus_error_invalid_parameter(connection, message);
-}
-
-
-/* mapset */
-
-static DBusHandlerResult
-request_mapset_attr_iter(DBusConnection *connection, DBusMessage *message)
-{
- return request_attr_iter(connection, message, "mapset", (struct attr_iter * (*)(void))mapset_attr_iter_new);
-}
-
-static DBusHandlerResult
-request_mapset_attr_iter_destroy(DBusConnection *connection, DBusMessage *message)
-{
- return request_attr_iter_destroy(connection, message, "mapset", (void (*)(struct attr_iter *))mapset_attr_iter_destroy);
-}
-
-static DBusHandlerResult
-request_mapset_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "mapset", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))mapset_get_attr);
-}
-
-/* navigation */
-
-static DBusHandlerResult
-request_navigation_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "navigation", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))navigation_get_attr);
-}
-
-/* osd */
-
-static DBusHandlerResult
-request_osd_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "osd", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))osd_get_attr);
-}
-
-
-static DBusHandlerResult
-request_osd_set_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "osd", NULL, (int (*)(void *, struct attr *))osd_set_attr);
-}
-
-/* roadprofile */
-
-static DBusHandlerResult
-request_roadprofile_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "roadprofile", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))roadprofile_get_attr);
-}
-
-
-static DBusHandlerResult
-request_roadprofile_set_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "roadprofile", NULL, (int (*)(void *, struct attr *))roadprofile_set_attr);
-}
-
-static DBusHandlerResult
-request_roadprofile_attr_iter(DBusConnection *connection, DBusMessage *message)
-{
- return request_attr_iter(connection, message, "roadprofile", (struct attr_iter * (*)(void))roadprofile_attr_iter_new);
-}
-
-static DBusHandlerResult
-request_roadprofile_attr_iter_destroy(DBusConnection *connection, DBusMessage *message)
-{
- return request_attr_iter_destroy(connection, message, "roadprofile", (void (*)(struct attr_iter *))roadprofile_attr_iter_destroy);
-}
-
-/* route */
-
-static DBusHandlerResult
-request_route_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "route", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))route_get_attr);
-}
-
-
-static DBusHandlerResult
-request_route_set_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "route", NULL, (int (*)(void *, struct attr *))route_set_attr);
-}
-
-static DBusHandlerResult
-request_route_add_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "route", NULL, (int (*)(void *, struct attr *))route_add_attr);
-}
-
-static DBusHandlerResult
-request_route_remove_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "route", NULL, (int (*)(void *, struct attr *))route_remove_attr);
-}
-
-static DBusHandlerResult
-request_route_destroy(DBusConnection *connection, DBusMessage *message)
-{
- return request_destroy(connection, message, "route", NULL, (void (*)(void *)) route_destroy);
-}
-
-static DBusHandlerResult
-request_route_dup(DBusConnection *connection, DBusMessage *message)
-{
- return request_dup(connection, message, "route", NULL, (void *(*)(void *)) route_dup);
-}
-
-
-/* navit */
-
-static DBusHandlerResult
-request_navit_draw(DBusConnection *connection, DBusMessage *message)
-{
- struct navit *navit;
-
- navit=object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- navit_draw(navit);
-
- return empty_reply(connection, message);
-}
-
-
-/**
- * Extracts a struct point from a DBus message
- *
- * @param message The DBus message
- * @param iter Sort of pointer that points on that (ii)-object in the message
- * @param p Pointer where the data should get stored
- * @returns Returns 1 when everything went right, otherwise 0
- */
-static int
-point_get_from_message(DBusMessage *message, DBusMessageIter *iter, struct point *p)
-{
- DBusMessageIter iter2;
-
- dbg(lvl_debug,"%s\n", dbus_message_iter_get_signature(iter));
-
- dbus_message_iter_recurse(iter, &iter2);
-
- if (dbus_message_iter_get_arg_type(&iter2) != DBUS_TYPE_INT32)
- return 0;
- dbus_message_iter_get_basic(&iter2, &p->x);
-
- dbus_message_iter_next(&iter2);
-
- if (dbus_message_iter_get_arg_type(&iter2) != DBUS_TYPE_INT32)
- return 0;
- dbus_message_iter_get_basic(&iter2, &p->y);
-
- dbg(lvl_debug, " x -> %x y -> %x\n", p->x, p->y);
-
- dbus_message_iter_next(&iter2);
-
- if (dbus_message_iter_get_arg_type(&iter2) != DBUS_TYPE_INVALID)
- return 0;
-
- return 1;
-}
-
-/**
- * @brief Shows up a message
- * @param connection The DBusConnection object through which \a message arrived
- * @param message The DBusMessage containing the coordinates
- * @returns An empty reply if everything went right, otherwise DBUS_HANDLER_RESULT_NOT_YET_HANDLED
- */
-
-static DBusHandlerResult
-request_navit_add_message(DBusConnection *connection, DBusMessage *message)
-{
- struct navit *navit;
- char *usermessage;
-
- DBusMessageIter iter;
-
- navit=object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- dbus_message_iter_get_basic(&iter, &usermessage);
-
- navit_add_message(navit, usermessage);
-
- return empty_reply(connection, message);
-}
-
-
-/**
- * @brief Centers the screen on a specified position \a pc on the world
- * @param connection The DBusConnection object through which \a message arrived
- * @param message The DBusMessage containing the coordinates
- * @returns An empty reply if everything went right, otherwise DBUS_HANDLER_RESULT_NOT_YET_HANDLED
- */
-
-static DBusHandlerResult
-request_navit_set_center(DBusConnection *connection, DBusMessage *message)
-{
- struct pcoord pc;
- struct navit *navit;
- DBusMessageIter iter;
-
- navit=object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
-
- if (!pcoord_get_from_message(message, &iter, &pc))
- return dbus_error_invalid_parameter(connection, message);
-
- navit_set_center(navit, &pc, 0);
- return empty_reply(connection, message);
-}
-
-/**
- * @brief Centers the screen on a specified position \a p shown on the screen
- * @param connection The DBusConnection object through which \a message arrived
- * @param message The DBusMessage containing the x and y value
- * @returns An empty reply if everything went right, otherwise DBUS_HANDLER_RESULT_NOT_YET_HANDLED
- */
-static DBusHandlerResult
-request_navit_set_center_screen(DBusConnection *connection, DBusMessage *message)
-{
- struct point p;
- struct navit *navit;
- DBusMessageIter iter;
-
- navit=object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
-
- if (!point_get_from_message(message, &iter, &p))
- return dbus_error_invalid_parameter(connection, message);
- navit_set_center_screen(navit, &p, 0);
- return empty_reply(connection, message);
-}
-
-/**
- * @brief Sets the layout to \a new_layout_name extracted from \a message
- * @param connection The DBusConnection object through which \a message arrived
- * @param message The DBusMessage containing the name of the layout
- * @returns An empty reply if everything went right, otherwise DBUS_HANDLER_RESULT_NOT_YET_HANDLED
- */
-static DBusHandlerResult
-request_navit_set_layout(DBusConnection *connection, DBusMessage *message)
-{
- char *new_layout_name;
- struct navit *navit;
- struct attr attr;
- struct attr_iter *iter;
-
- navit=object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- if (!dbus_message_get_args(message, NULL, DBUS_TYPE_STRING, &new_layout_name, DBUS_TYPE_INVALID))
- return dbus_error_invalid_parameter(connection, message);
-
- iter=navit_attr_iter_new();
- while(navit_get_attr(navit, attr_layout, &attr, iter)) {
- if (strcmp(attr.u.layout->name, new_layout_name) == 0) {
- navit_set_attr(navit, &attr);
- }
- }
- return empty_reply(connection, message);
-}
-
-/**
- * @brief Gracefully exit Navit by registering a one-second callback to allow clean shutdown of the dbus connection
- * @param connection The DBusConnection object through which \a message arrived
- * @param message The DBusMessage
- * @returns An empty reply if everything went right, otherwise DBUS_HANDLER_RESULT_NOT_YET_HANDLED
- */
-static DBusHandlerResult
-request_navit_quit(DBusConnection *connection, DBusMessage *message)
-{
- dbg(lvl_debug,"Got a quit request from DBUS\n");
- struct attr navit;
- navit.type=attr_navit;
- struct navit *nav;
- nav = object_get_from_message(message, "navit");
- if (! nav)
- return dbus_error_invalid_object_path(connection, message);
- navit.u.navit=nav;
- config_remove_attr(config, &navit);
-
- struct callback *callback;
- callback=callback_new_1(callback_cast(event_main_loop_quit), NULL);
- event_add_timeout(1000, 1, callback);
- return empty_reply(connection, message);
-}
-
-static DBusHandlerResult
-request_navit_zoom(DBusConnection *connection, DBusMessage *message)
-{
- int factor;
- struct point p, *pp=NULL;
- struct navit *navit;
- DBusMessageIter iter;
-
- navit = object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- dbg(lvl_debug,"%s\n", dbus_message_iter_get_signature(&iter));
-
- dbus_message_iter_get_basic(&iter, &factor);
-
- if (dbus_message_iter_has_next(&iter))
- {
- dbus_message_iter_next(&iter);
- if (!point_get_from_message(message, &iter, &p))
- return dbus_error_invalid_parameter(connection, message);
- pp=&p;
- }
-
- if (factor > 1)
- navit_zoom_in(navit, factor, pp);
- else if (factor < -1)
- navit_zoom_out(navit, 0-factor, pp);
-
- return empty_reply(connection, message);
-
-}
-
-/**
- * @brief Exports the current route as a GPX file
- * @param connection The DBusConnection object through which a message arrived
- * @param message The DBusMessage including the 'filename' parameter
- * @returns An empty reply if everything went right, otherwise DBUS_HANDLER_RESULT_NOT_YET_HANDLED
- */
-static DBusHandlerResult
-request_navit_zoom_to_route(DBusConnection *connection, DBusMessage *message)
-{
- struct navit *navit;
- DBusMessageIter iter;
-
- navit = object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- dbg(lvl_debug,"%s\n", dbus_message_iter_get_signature(&iter));
-
- navit_zoom_to_route(navit,0);
-
- return empty_reply(connection, message);
-
-}
-
-static DBusHandlerResult
-request_navit_route_export_gpx(DBusConnection *connection, DBusMessage *message)
-{
- char * filename;
- struct navit *navit;
- DBusMessageIter iter;
-
- navit = object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
-
- dbus_message_iter_get_basic(&iter, &filename);
-
- struct navigation *nav = navit_get_navigation(navit);
- if(!nav) {
- return dbus_error_navigation_not_configured(connection, message);
- }
-
- dbg(lvl_debug,"Dumping route from dbus to %s\n", filename);
-
- struct map * map=NULL;
- struct map_rect * mr=NULL;
- struct item *item = NULL;
- struct attr attr;
- struct coord c;
- struct coord_geo g;
-
- char *header = "<?xml version='1.0' encoding='UTF-8'?>\n"
- "<gpx version='1.1' creator='Navit http://navit.sourceforge.net'\n"
- " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n"
- " xmlns:navit='http://www.navit-project.org/schema/navit'\n"
- " xmlns='http://www.topografix.com/GPX/1/1'\n"
- " xsi:schemaLocation='http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd'>\n"
- "<rte>\n";
- char *trailer = "</rte>\n</gpx>\n";
-
- map = navigation_get_map(nav);
- if(map)
- mr = map_rect_new(map,NULL);
-
- FILE *fp;
- fp = fopen(filename,"w");
- fprintf(fp, "%s", header);
-
- while((item = map_rect_get_item(mr))) {
- if(item_attr_get(item,attr_navigation_long,&attr)) {
- item_coord_get(item, &c, 1);
- transform_to_geo (projection_mg, &c, &g);
- fprintf(fp,"<rtept lon='%4.16f' lat='%4.16f'><type>%s</type><name>%s</name></rtept>\n",g.lng, g.lat, item_to_name(item->type), map_convert_string_tmp(item->map,attr.u.str));
- }
- }
- fprintf(fp,"%s",trailer);
-
- fclose(fp);
-
- return empty_reply(connection, message);
-}
-
-/**
- * @brief Exports the current route as a GeoJSON file
- * @param connection The DBusConnection object through which a message arrived
- * @param message The DBusMessage including the 'filename' parameter
- * @returns An empty reply if everything went right, otherwise DBUS_HANDLER_RESULT_NOT_YET_HANDLED
- */
-static DBusHandlerResult
-request_navit_route_export_geojson(DBusConnection *connection, DBusMessage *message)
-{
- char * filename;
- struct point p;
- struct navit *navit;
- DBusMessageIter iter;
-
- navit = object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
-
- dbus_message_iter_get_basic(&iter, &filename);
-
- if (dbus_message_iter_has_next(&iter))
- {
- dbus_message_iter_next(&iter);
- if (!point_get_from_message(message, &iter, &p))
- return dbus_error_invalid_parameter(connection, message);
- }
-
- dbg(lvl_debug,"Dumping route from dbus to %s\n", filename);
-
- struct map * map=NULL;
- struct navigation * nav = NULL;
- struct map_rect * mr=NULL;
- struct item *item = NULL;
- struct attr attr;
- struct coord c;
- struct coord_geo g;
-
- char *header = "{\n"
-" \"type\": \"FeatureCollection\",\n"
-" \"features\": [\n"
-" {\n"
-" \"type\": \"Feature\",\n"
-" \"properties\": {\n"
-" \"name\": \"Navit route export\",\n"
-" \"stroke\": \"red\",\n"
-" \"stroke-width\": \"5px\"\n"
-" },\n"
-" \"geometry\": {\n"
-" \"type\": \"LineString\",\n"
-" \"coordinates\": [\n";
-
- nav = navit_get_navigation(navit);
- if(!nav) {
- return dbus_error_navigation_not_configured(connection, message);
- }
- map = navigation_get_map(nav);
- if(map)
- mr = map_rect_new(map,NULL);
-
- FILE *fp;
- fp = fopen(filename,"w");
- fprintf(fp, "%s", header);
- int is_first=1;
- char * instructions;
- instructions=g_strdup("");
- while((item = map_rect_get_item(mr))) {
- if(item_attr_get(item,attr_navigation_long,&attr)) {
- item_coord_get(item, &c, 1);
- transform_to_geo (projection_mg, &c, &g);
- if(!is_first){
- fprintf(fp,",\n");
- instructions=g_strconcat_printf(instructions,",\n");
- }
- fprintf(fp,"[ %4.16f, %4.16f ]",g.lng, g.lat);
- instructions=g_strconcat_printf(instructions, g_strdup_printf(" { \"type\": \"Feature\", \"properties\": { \"Instruction\": \"%s\", \"name\": \"\" }, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ %4.16f, %4.16f ] } }", map_convert_string_tmp(item->map,attr.u.str), g.lng, g.lat));
- /* fprintf(fp,"<rtept lon='%4.16f' lat='%4.16f'><type>%s</type><name>%s</name></rtept>\n",g.lng, g.lat, item_to_name(item->type), map_convert_string_tmp(item->map,attr.u.str)); */
- is_first=0;
- }
- }
-
- fprintf(fp," ]}\n },\n%s ]\n }\n",instructions);
-
- fclose(fp);
-
- return empty_reply(connection, message);
-}
-
-static DBusHandlerResult
-request_navit_block(DBusConnection *connection, DBusMessage *message)
-{
- int mode;
- struct navit *navit;
- DBusMessageIter iter;
-
- navit = object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
-
- dbus_message_iter_get_basic(&iter, &mode);
-
- navit_block(navit, mode);
- return empty_reply(connection, message);
-
-}
-
-static DBusHandlerResult
-request_navit_resize(DBusConnection *connection, DBusMessage *message)
-{
- struct navit *navit;
- int w, h;
- DBusMessageIter iter;
-
- navit = object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- dbg(lvl_debug,"%s\n", dbus_message_iter_get_signature(&iter));
-
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_INT32)
- return dbus_error_invalid_parameter(connection, message);
- dbus_message_iter_get_basic(&iter, &w);
-
- dbus_message_iter_next(&iter);
-
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_INT32)
- return dbus_error_invalid_parameter(connection, message);
- dbus_message_iter_get_basic(&iter, &h);
-
- dbg(lvl_debug, " w -> %i h -> %i\n", w, h);
-
- navit_handle_resize(navit, w, h);
-
- return empty_reply(connection, message);
-
-}
-
-static DBusHandlerResult
-request_navit_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "navit", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))navit_get_attr);
-}
-
-static DBusHandlerResult
-request_navit_attr_iter(DBusConnection *connection, DBusMessage *message)
-{
- DBusMessage *reply;
- struct attr_iter *attr_iter=navit_attr_iter_new();
- char *opath=object_new("navit_attr_iter",attr_iter);
- reply = dbus_message_new_method_return(message);
- dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &opath, DBUS_TYPE_INVALID);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
-
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-static DBusHandlerResult
-request_navit_attr_iter_destroy(DBusConnection *connection, DBusMessage *message)
-{
- struct attr_iter *attr_iter;
- DBusMessageIter iter;
-
- dbus_message_iter_init(message, &iter);
- attr_iter=object_get_from_message_arg(&iter, "navit_attr_iter");
- if (! attr_iter)
- return dbus_error_invalid_object_path_parameter(connection, message);
- navit_attr_iter_destroy(attr_iter);
-
- return empty_reply(connection, message);
-}
-
-
-static DBusHandlerResult
-request_navit_set_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "navit", NULL, (int (*)(void *, struct attr *))navit_set_attr);
-}
-
-static DBusHandlerResult
-request_navit_add_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "navit", NULL, (int (*)(void *, struct attr *))navit_add_attr);
-}
-
-static DBusHandlerResult
-request_navit_remove_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "navit", NULL, (int (*)(void *, struct attr *))navit_remove_attr);
-}
-
-static DBusHandlerResult
-request_navit_set_position(DBusConnection *connection, DBusMessage *message)
-{
- struct pcoord pc;
- struct navit *navit;
- DBusMessageIter iter;
-
- navit = object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- if (!pcoord_get_from_message(message, &iter, &pc))
- return dbus_error_invalid_parameter(connection, message);
-
- navit_set_position(navit, &pc);
- return empty_reply(connection, message);
-}
-
-static DBusHandlerResult
-request_navit_set_destination(DBusConnection *connection, DBusMessage *message)
-{
- struct pcoord pc;
- struct navit *navit;
- DBusMessageIter iter;
- char *description;
-
- navit = object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- if (!pcoord_get_from_message(message, &iter, &pc))
- return dbus_error_invalid_parameter(connection, message);
-
- dbus_message_iter_next(&iter);
- dbus_message_iter_get_basic(&iter, &description);
- dbg(lvl_debug, " destination -> %s\n", description);
-
- navit_set_destination(navit, &pc, description, 1);
- return empty_reply(connection, message);
-}
-
-static DBusHandlerResult
-request_navit_clear_destination(DBusConnection *connection, DBusMessage *message)
-{
- struct navit *navit;
-
- navit = object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
- navit_set_destination(navit, NULL, NULL, 0);
- return empty_reply(connection, message);
-}
-
-static DBusHandlerResult
-request_navit_evaluate(DBusConnection *connection, DBusMessage *message)
-{
- struct navit *navit;
- char *command;
- char *result;
- struct attr attr;
- DBusMessage *reply;
- int error;
-
- navit = object_get_from_message(message, "navit");
- if (! navit)
- return dbus_error_invalid_object_path(connection, message);
-
- attr.type=attr_navit;
- attr.u.navit=navit;
- if (!dbus_message_get_args(message, NULL, DBUS_TYPE_STRING, &command, DBUS_TYPE_INVALID))
- return dbus_error_invalid_parameter(connection, message);
- result=command_evaluate_to_string(&attr, command, &error);
- reply = dbus_message_new_method_return(message);
- if (error)
- dbus_message_append_args(reply, DBUS_TYPE_INT32, &error, DBUS_TYPE_INVALID);
- else if (result)
- dbus_message_append_args(reply, DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-/* search_list */
-
-static DBusHandlerResult
-request_search_list_destroy(DBusConnection *connection, DBusMessage *message)
-{
- return request_destroy(connection, message, "search_list", NULL, (void (*)(void *)) search_list_destroy);
-}
-
-static void
-request_search_list_common(struct search_list_common *slc, DBusMessageIter *iter4)
-{
- if (slc->postal)
- encode_dict_string_variant_string(iter4, "postal", slc->postal);
- if (slc->postal_mask)
- encode_dict_string_variant_string(iter4, "postal_mask", slc->postal_mask);
-}
-
-static DBusHandlerResult
-request_search_list_get_result(DBusConnection *connection, DBusMessage *message)
-{
- struct search_list *search_list;
- struct search_list_result *result;
- DBusMessage *reply;
- DBusMessageIter iter,iter2,iter3,iter4;
- char *country="country";
- char *town="town";
- char *street="street";
- char *house_number="housenumber";
-
- search_list = object_get_from_message(message, "search_list");
- if (! search_list)
- return dbus_error_invalid_object_path(connection, message);
- result=search_list_get_result(search_list);
- if (!result)
- return dbus_error_no_data_available(connection, message);
- reply = dbus_message_new_method_return(message);
- dbus_message_iter_init_append(reply, &iter);
- dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &result->id);
- pcoord_encode(&iter, result->c);
- dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sa{sv}}", &iter2);
- if (result->country && (result->country->car || result->country->iso2 || result->country->iso3 || result->country->name)) {
- dbus_message_iter_open_container(&iter2, DBUS_TYPE_DICT_ENTRY, NULL, &iter3);
- dbus_message_iter_append_basic(&iter3, DBUS_TYPE_STRING, &country);
- dbus_message_iter_open_container(&iter3, DBUS_TYPE_ARRAY, "{sv}", &iter4);
- if (result->country->car)
- encode_dict_string_variant_string(&iter4, "car", result->country->car);
- if (result->country->iso2)
- encode_dict_string_variant_string(&iter4, "iso2", result->country->iso2);
- if (result->country->iso3)
- encode_dict_string_variant_string(&iter4, "iso3", result->country->iso3);
- if (result->country->name)
- encode_dict_string_variant_string(&iter4, "name", result->country->name);
- dbus_message_iter_close_container(&iter3, &iter4);
- dbus_message_iter_close_container(&iter2, &iter3);
- }
- if (result->town && (result->town->common.district_name || result->town->common.town_name)) {
- dbus_message_iter_open_container(&iter2, DBUS_TYPE_DICT_ENTRY, NULL, &iter3);
- dbus_message_iter_append_basic(&iter3, DBUS_TYPE_STRING, &town);
- dbus_message_iter_open_container(&iter3, DBUS_TYPE_ARRAY, "{sv}", &iter4);
- request_search_list_common(&result->town->common,&iter4);
- if (result->town->common.district_name)
- encode_dict_string_variant_string(&iter4, "district", result->town->common.district_name);
- if (result->town->common.town_name)
- encode_dict_string_variant_string(&iter4, "name", result->town->common.town_name);
- dbus_message_iter_close_container(&iter3, &iter4);
- dbus_message_iter_close_container(&iter2, &iter3);
- }
- if (result->street && result->street->name) {
- dbus_message_iter_open_container(&iter2, DBUS_TYPE_DICT_ENTRY, NULL, &iter3);
- dbus_message_iter_append_basic(&iter3, DBUS_TYPE_STRING, &street);
- dbus_message_iter_open_container(&iter3, DBUS_TYPE_ARRAY, "{sv}", &iter4);
- request_search_list_common(&result->street->common,&iter4);
- if (result->street->name)
- encode_dict_string_variant_string(&iter4, "name", result->street->name);
- dbus_message_iter_close_container(&iter3, &iter4);
- dbus_message_iter_close_container(&iter2, &iter3);
- }
- if (result->house_number && result->house_number->house_number) {
- dbus_message_iter_open_container(&iter2, DBUS_TYPE_DICT_ENTRY, NULL, &iter3);
- dbus_message_iter_append_basic(&iter3, DBUS_TYPE_STRING, &house_number);
- dbus_message_iter_open_container(&iter3, DBUS_TYPE_ARRAY, "{sv}", &iter4);
- request_search_list_common(&result->house_number->common,&iter4);
- encode_dict_string_variant_string(&iter4, "name", result->house_number->house_number);
- dbus_message_iter_close_container(&iter3, &iter4);
- dbus_message_iter_close_container(&iter2, &iter3);
- }
- dbus_message_iter_close_container(&iter, &iter2);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-static DBusHandlerResult
-request_search_list_new(DBusConnection *connection, DBusMessage *message)
-{
- DBusMessageIter iter;
- DBusMessage *reply;
- struct mapset *mapset;
- struct search_list *search_list;
- char *opath;
-
- dbus_message_iter_init(message, &iter);
- mapset=object_get_from_message_arg(&iter, "mapset");
- if (! mapset)
- return dbus_error_invalid_object_path_parameter(connection, message);
- search_list=search_list_new(mapset);
- opath=object_new("search_list", search_list);
- reply = dbus_message_new_method_return(message);
- dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &opath, DBUS_TYPE_INVALID);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-static DBusHandlerResult
-request_search_list_search(DBusConnection *connection, DBusMessage *message)
-{
- DBusMessageIter iter;
- struct search_list *search_list;
- struct attr attr;
- int partial;
-
- search_list = object_get_from_message(message, "search_list");
- if (! search_list)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- if (!decode_attr_from_iter(&iter, &attr))
- return dbus_error_invalid_parameter(connection, message);
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_INT32)
- return dbus_error_invalid_parameter(connection, message);
- dbus_message_iter_get_basic(&iter, &partial);
- search_list_search(search_list, &attr, partial);
- return empty_reply(connection, message);
-}
-
-static DBusHandlerResult
-request_search_list_select(DBusConnection *connection, DBusMessage *message)
-{
- DBusMessageIter iter;
- struct search_list *search_list;
- int id, mode;
- enum attr_type attr_type;
-
- search_list = object_get_from_message(message, "search_list");
- if (! search_list)
- return dbus_error_invalid_object_path(connection, message);
-
- dbus_message_iter_init(message, &iter);
- attr_type=decode_attr_type_from_iter(&iter);
- if (attr_type == attr_none)
- return dbus_error_invalid_parameter(connection, message);
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_INT32)
- return dbus_error_invalid_parameter(connection, message);
- dbus_message_iter_get_basic(&iter, &id);
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_INT32)
- return dbus_error_invalid_parameter(connection, message);
- dbus_message_iter_get_basic(&iter, &mode);
- search_list_select(search_list, attr_type, id, mode);
- return empty_reply(connection, message);
-}
-
-/* tracking */
-
-static DBusHandlerResult
-request_tracking_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "tracking", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))tracking_get_attr);
-}
-
-
-
-/* vehicle */
-
-static DBusHandlerResult
-request_vehicle_set_attr(DBusConnection *connection, DBusMessage *message)
-{
- struct vehicle *vehicle;
- struct attr attr;
- int ret;
-
- vehicle = object_get_from_message(message, "vehicle");
- if (! vehicle)
- return dbus_error_invalid_object_path(connection, message);
- if (decode_attr(message, &attr)) {
- ret=vehicle_set_attr(vehicle, &attr);
- destroy_attr(&attr);
- if (ret)
- return empty_reply(connection, message);
- }
- return dbus_error_invalid_parameter(connection, message);
-}
-
-/* vehicleprofile */
-
-static DBusHandlerResult
-request_vehicleprofile_get_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_get_attr(connection, message, "vehicleprofile", NULL, (int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))vehicleprofile_get_attr);
-}
-
-
-static DBusHandlerResult
-request_vehicleprofile_set_attr(DBusConnection *connection, DBusMessage *message)
-{
- return request_set_add_remove_attr(connection, message, "vehicleprofile", NULL, (int (*)(void *, struct attr *))vehicleprofile_set_attr);
-}
-
-static DBusHandlerResult
-request_vehicleprofile_attr_iter(DBusConnection *connection, DBusMessage *message)
-{
- return request_attr_iter(connection, message, "vehicleprofile", (struct attr_iter * (*)(void))vehicleprofile_attr_iter_new);
-}
-
-static DBusHandlerResult
-request_vehicleprofile_attr_iter_destroy(DBusConnection *connection, DBusMessage *message)
-{
- return request_attr_iter_destroy(connection, message, "vehicleprofile", (void (*)(struct attr_iter *))vehicleprofile_attr_iter_destroy);
-}
-
-struct dbus_method {
- char *path;
- char *method;
- char *signature;
- char *signature_name;
- char *response;
- char *response_name;
- DBusHandlerResult(*func)(DBusConnection *connection, DBusMessage *message);
-} dbus_methods[] = {
- {"", "attr_iter", "", "", "o", "attr_iter", request_config_attr_iter},
- {"", "attr_iter_destroy", "o", "attr_iter", "", "", request_config_attr_iter_destroy},
- {"", "get_attr", "s", "attrname", "sv", "attrname,value",request_config_get_attr},
- {"", "get_attr_wi", "so", "attrname,attr_iter", "sv", "attrname,value",request_config_get_attr},
- {"", "callback_new", "s", "signalname", "o", "callback",request_callback_new},
- {"", "callback_attr_new", "ss", "signalname,attribute", "o", "callback",request_callback_new},
- {"", "search_list_new", "o", "mapset", "o", "search",request_search_list_new},
- {".callback","destroy", "", "", "", "", request_callback_destroy},
- {".graphics","get_data", "s", "type", "ay", "data", request_graphics_get_data},
- {".graphics","set_attr", "sv", "attribute,value", "", "", request_graphics_set_attr},
- {".gui", "get_attr", "s", "attribute", "sv", "attrname,value", request_gui_get_attr},
- {".gui", "command_parameter", "sa{sa{sv}}","command,parameter", "a{sa{sv}}", "return", request_gui_command},
- {".gui", "command", "s", "command", "a{sa{sv}}", "return", request_gui_command},
- {".navit", "draw", "", "", "", "", request_navit_draw},
- {".navit", "add_message", "s", "message", "", "", request_navit_add_message},
- {".navit", "set_center_by_string","s", "(coordinates)", "", "", request_navit_set_center},
- {".navit", "set_center", "(is)", "(projection,coordinates)", "", "", request_navit_set_center},
- {".navit", "set_center", "(iii)", "(projection,longitude,latitude)", "", "", request_navit_set_center},
- {".navit", "set_center_screen", "(ii)", "(pixel_x,pixel_y)", "", "", request_navit_set_center_screen},
- {".navit", "set_layout", "s", "layoutname", "", "", request_navit_set_layout},
- {".navit", "zoom", "i(ii)", "factor(pixel_x,pixel_y)", "", "", request_navit_zoom},
- {".navit", "zoom", "i", "factor", "", "", request_navit_zoom},
- {".navit", "zoom_to_route", "", "", "", "", request_navit_zoom_to_route},
- {".navit", "quit", "", "", "", "", request_navit_quit},
- {".navit", "export_as_gpx", "s", "filename", "", "", request_navit_route_export_gpx},
- {".navit", "export_as_geojson", "s", "filename", "", "", request_navit_route_export_geojson},
- {".navit", "block", "i", "mode", "", "", request_navit_block},
- {".navit", "resize", "ii", "upperleft,lowerright", "", "", request_navit_resize},
- {".navit", "attr_iter", "", "", "o", "attr_iter", request_navit_attr_iter},
- {".navit", "attr_iter_destroy", "o", "attr_iter", "", "", request_navit_attr_iter_destroy},
- {".navit", "get_attr", "s", "attribute", "sv", "attrname,value", request_navit_get_attr},
- {".navit", "get_attr_wi", "so", "attribute,attr_iter", "sv", "attrname,value", request_navit_get_attr},
- {".navit", "set_attr", "sv", "attribute,value", "", "", request_navit_set_attr},
- {".navit", "add_attr", "sv", "attribute,value", "", "", request_navit_add_attr},
- {".navit", "remove_attr", "sv", "attribute,value", "", "", request_navit_remove_attr},
- {".navit", "set_position", "s", "(coordinates)", "", "", request_navit_set_position},
- {".navit", "set_position", "(is)", "(projection,coordinated)", "", "", request_navit_set_position},
- {".navit", "set_position", "(iii)", "(projection,longitude,latitude)", "", "", request_navit_set_position},
- {".navit", "set_destination", "ss", "coordinates,comment", "", "", request_navit_set_destination},
- {".navit", "set_destination", "(is)s", "(projection,coordinates)comment", "", "", request_navit_set_destination},
- {".navit", "set_destination", "(iii)s", "(projection,longitude,latitude)comment", "", "", request_navit_set_destination},
- {".navit", "clear_destination", "", "", "", "", request_navit_clear_destination},
- {".navit", "evaluate", "s", "command", "s", "", request_navit_evaluate},
- {".layout", "get_attr", "s", "attribute", "sv", "attrname,value", request_layout_get_attr},
- {".map", "get_attr", "s", "attribute", "sv", "attrname,value", request_map_get_attr},
- {".map", "set_attr", "sv", "attribute,value", "", "", request_map_set_attr},
- {".map", "dump", "s", "file", "", "", request_map_dump},
- {".mapset", "attr_iter", "", "", "o", "attr_iter", request_mapset_attr_iter},
- {".mapset", "attr_iter_destroy", "o", "attr_iter", "", "", request_mapset_attr_iter_destroy},
- {".mapset", "get_attr", "s", "attribute", "sv", "attrname,value", request_mapset_get_attr},
- {".mapset", "get_attr_wi", "so", "attribute,attr_iter", "sv", "attrname,value", request_mapset_get_attr},
- {".navigation","get_attr", "s", "attribute", "", "", request_navigation_get_attr},
- {".osd", "get_attr", "s", "attribute", "sv", "attrname,value", request_osd_get_attr},
- {".osd", "set_attr", "sv", "attribute,value", "", "", request_osd_set_attr},
- {".roadprofile", "get_attr", "s", "attribute", "sv", "attrname,value", request_roadprofile_get_attr},
- {".roadprofile", "get_attr_wi", "so", "attribute,attr_iter", "", "", request_roadprofile_get_attr},
- {".roadprofile", "set_attr", "sv", "attribute,value", "", "", request_roadprofile_set_attr},
- {".roadprofile", "attr_iter", "", "", "o", "attr_iter", request_roadprofile_attr_iter},
- {".roadprofile", "attr_iter_destroy","o", "attr_iter", "", "", request_roadprofile_attr_iter_destroy},
- {".route", "get_attr", "s", "attribute", "sv", "attrname,value", request_route_get_attr},
- {".route", "set_attr", "sv", "attribute,value", "", "", request_route_set_attr},
- {".route", "add_attr", "sv", "attribute,value", "", "", request_route_add_attr},
- {".route", "remove_attr", "sv", "attribute,value", "", "", request_route_remove_attr},
- {".route", "destroy", "", "", "", "", request_route_destroy},
- {".route", "dup", "", "", "", "", request_route_dup},
- {".search_list","destroy", "", "", "", "", request_search_list_destroy},
- {".search_list","destroy", "", "", "", "", request_search_list_destroy},
- {".search_list","destroy", "", "", "", "", request_search_list_destroy},
- {".search_list","get_result", "", "", "i(iii)a{sa{sv}}", "id,coord,dict", request_search_list_get_result},
- {".search_list","search", "svi", "attribute,value,partial", "", "", request_search_list_search},
- {".search_list","select", "sii", "attribute_type,id,mode", "", "", request_search_list_select},
- {".tracking","get_attr", "s", "attribute", "", "", request_tracking_get_attr},
- {".vehicle","set_attr", "sv", "attribute,value", "", "", request_vehicle_set_attr},
- {".vehicleprofile","get_attr", "s", "attribute", "", "", request_vehicleprofile_get_attr},
- {".vehicleprofile","get_attr_wi", "so", "attribute,attr_iter", "", "", request_vehicleprofile_get_attr},
- {".vehicleprofile","set_attr", "sv", "attribute,value", "", "", request_vehicleprofile_set_attr},
- {".vehicleprofile","attr_iter", "", "", "o", "attr_iter", request_vehicleprofile_attr_iter},
- {".vehicleprofile","attr_iter_destroy","o", "attr_iter", "", "", request_vehicleprofile_attr_iter_destroy},
-};
-
-static char *
-introspect_path(const char *object)
-{
- char *ret;
- int i;
- char *def=".default_";
- int def_len=strlen(def);
- if (strncmp(object, object_path, strlen(object_path)))
- return NULL;
- ret=g_strdup(object+strlen(object_path));
- dbg(lvl_debug,"path=%s\n",ret);
- for (i = strlen(ret)-1 ; i >= 0 ; i--) {
- if (ret[i] == '/' || (ret[i] >= '0' && ret[i] <= '9'))
- ret[i]='\0';
- else
- break;
- }
- for (i = 0 ; i < strlen(ret); i++)
- if (ret[i] == '/')
- ret[i]='.';
-
- for (i = strlen(ret)-1 ; i >= 0 ; i--) {
- if (!strncmp(ret+i, def, def_len)) {
- memmove(ret+1,ret+i+def_len,strlen(ret+i+def_len)+1);
- break;
- }
- }
- return ret;
-}
-
-static char *
-generate_navitintrospectxml(const char *object)
-{
- int i,methods_size,n=0;
- char *navitintrospectxml;
- char *path=introspect_path(object);
- if (!path)
- return NULL;
- dbg(lvl_debug,"path=%s\n",path);
-
- // write header and make navit introspectable
- navitintrospectxml = g_strdup_printf("%s%s%s\n", navitintrospectxml_head1, object, navitintrospectxml_head2);
-
- methods_size=sizeof(dbus_methods)/sizeof(struct dbus_method);
- for (i = 0 ; i < methods_size ; i++) {
- // start new interface if it's the first method or it changed
- if (strcmp(dbus_methods[i].path, path))
- continue;
- if ((n == 0) || strcmp(dbus_methods[i-1].path, dbus_methods[i].path))
- navitintrospectxml = g_strconcat_printf(navitintrospectxml, " <interface name=\"%s%s\">\n", service_name, dbus_methods[i].path);
- n++;
-
- // start the new method
- navitintrospectxml = g_strconcat_printf(navitintrospectxml, " <method name=\"%s\">\n", dbus_methods[i].method);
-
- // set input signature if existent
- if (strcmp(dbus_methods[i].signature, ""))
- navitintrospectxml = g_strconcat_printf(navitintrospectxml, " <arg direction=\"in\" name=\"%s\" type=\"%s\" />\n", dbus_methods[i].signature_name, dbus_methods[i].signature);
-
- // set response signature if existent
- if (strcmp(dbus_methods[i].response, ""))
- navitintrospectxml = g_strconcat_printf(navitintrospectxml, " <arg direction=\"out\" name=\"%s\" type=\"%s\" />\n", dbus_methods[i].response_name, dbus_methods[i].response);
-
- // close the method
- navitintrospectxml = g_strconcat_printf(navitintrospectxml, " </method>\n");
-
- // close the interface if we reached the last method or the interface changes
- if ((methods_size == i+1) || ((methods_size > i+1) && strcmp(dbus_methods[i+1].path, dbus_methods[i].path)))
- navitintrospectxml = g_strconcat_printf(navitintrospectxml, " </interface>\n\n");
- }
- // close the "mother tag"
- navitintrospectxml = g_strconcat_printf(navitintrospectxml, "</node>\n");
-
- return navitintrospectxml;
-}
-
-static DBusHandlerResult
-navit_handler_func(DBusConnection *connection, DBusMessage *message, void *user_data)
-{
- int i;
- char *path;
- dbg(lvl_debug,"type=%s interface=%s path=%s member=%s signature=%s\n", dbus_message_type_to_string(dbus_message_get_type(message)), dbus_message_get_interface(message), dbus_message_get_path(message), dbus_message_get_member(message), dbus_message_get_signature(message));
- if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Introspectable", "Introspect")) {
- DBusMessage *reply;
- char *navitintrospectxml = generate_navitintrospectxml(dbus_message_get_path(message));
- dbg(lvl_debug,"Introspect %s:Result:%s\n",dbus_message_get_path(message), navitintrospectxml);
- if (navitintrospectxml) {
- reply = dbus_message_new_method_return(message);
- dbus_message_append_args(reply, DBUS_TYPE_STRING, &navitintrospectxml, DBUS_TYPE_INVALID);
- dbus_connection_send (connection, reply, NULL);
- dbus_message_unref (reply);
- g_free(navitintrospectxml);
- return DBUS_HANDLER_RESULT_HANDLED;
- }
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
-
- for (i = 0 ; i < sizeof(dbus_methods)/sizeof(struct dbus_method) ; i++) {
- path=g_strdup_printf("%s%s", service_name, dbus_methods[i].path);
- if (dbus_message_is_method_call(message, path, dbus_methods[i].method) &&
- dbus_message_has_signature(message, dbus_methods[i].signature)) {
- g_free(path);
- return dbus_methods[i].func(connection, message);
- }
- g_free(path);
- }
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-static DBusObjectPathVTable dbus_navit_vtable = {
- NULL,
- navit_handler_func,
- NULL
-};
-
-#if 0
-DBusHandlerResult
-filter(DBusConnection *connection, DBusMessage *message, void *user_data)
-{
- dbg(lvl_debug,"type=%s interface=%s path=%s member=%s signature=%s\n", dbus_message_type_to_string(dbus_message_get_type(message)), dbus_message_get_interface(message), dbus_message_get_path(message), dbus_message_get_member(message), dbus_message_get_signature(message));
- if (dbus_message_is_signal(message, DBUS_INTERFACE_DBUS, "NameOwnerChanged")) {
- }
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-#endif
-
-static int
-dbus_cmd_send_signal(struct navit *navit, char *command, struct attr **in, struct attr ***out)
-{
- DBusMessage* msg;
- char *opath=object_new("navit",navit);
- char *interface=g_strdup_printf("%s%s", service_name, ".navit");
- dbg(lvl_debug,"enter %s %s %s\n",opath,command,interface);
- msg = dbus_message_new_signal(opath, interface, "signal");
- if (msg) {
- DBusMessageIter iter1,iter2,iter3;
- dbus_message_iter_init_append(msg, &iter1);
- dbus_message_iter_open_container(&iter1, DBUS_TYPE_ARRAY, "{sv}", &iter2);
- if (in) {
- while (*in) {
- dbus_message_iter_open_container(&iter2, DBUS_TYPE_DICT_ENTRY, NULL, &iter3);
- encode_attr(&iter3, *in);
- dbus_message_iter_close_container(&iter2, &iter3);
- in++;
- }
- }
- dbus_message_iter_close_container(&iter1, &iter2);
- dbus_connection_send(connection, msg, &dbus_serial);
- dbus_connection_flush(connection);
- dbus_message_unref(msg);
- }
- g_free(interface);
- return 0;
-}
-
-
-static struct command_table commands[] = {
- {"dbus_send_signal",command_cast(dbus_cmd_send_signal)},
-};
-
-
-static void
-dbus_main_navit(struct navit *navit, int added)
-{
- struct attr attr;
- if (added==1) {
- DBusMessage* msg;
- char *opath=object_new("navit",navit);
- char *interface=g_strdup_printf("%s%s", service_name, ".navit");
- command_add_table_attr(commands, sizeof(commands)/sizeof(struct command_table), navit, &attr);
- navit_add_attr(navit, &attr);
- msg = dbus_message_new_signal(opath, interface, "startup");
- dbus_connection_send(connection, msg, &dbus_serial);
- dbus_connection_flush(connection);
- dbus_message_unref(msg);
- g_free(interface);
- }
-}
-
-void plugin_init(void)
-{
- DBusError error;
-
- struct attr callback;
- object_hash=g_hash_table_new(g_str_hash, g_str_equal);
- object_hash_rev=g_hash_table_new(NULL, NULL);
- object_count=g_hash_table_new(g_str_hash, g_str_equal);
- dbg(lvl_debug,"enter\n");
- dbus_error_init(&error);
-#ifdef DBUS_USE_SYSTEM_BUS
- connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
-#else
- connection = dbus_bus_get(DBUS_BUS_SESSION, &error);
-#endif
- if (!connection) {
- dbg(lvl_error,"Failed to open connection to session message bus: %s\n", error.message);
- dbus_error_free(&error);
- return;
- }
- dbus_connection_setup_with_g_main(connection, NULL);
-#if 0
- dbus_connection_add_filter(connection, filter, NULL, NULL);
- dbus_bus_add_match(connection, "type='signal',""interface='" DBUS_INTERFACE_DBUS "'", &error);
-#endif
- dbus_connection_register_fallback(connection, object_path, &dbus_navit_vtable, NULL);
- dbus_bus_request_name(connection, service_name, 0, &error);
- if (dbus_error_is_set(&error)) {
- dbg(lvl_error,"Failed to request name: %s", error.message);
- dbus_error_free (&error);
- }
- callback.type=attr_callback;
- callback.u.callback=callback_new_attr_0(callback_cast(dbus_main_navit),attr_navit);
- config_add_attr(config, &callback);
-}
diff --git a/navit/binding/dbus/eval.py b/navit/binding/dbus/eval.py
deleted file mode 100755
index a2e1926fd..000000000
--- a/navit/binding/dbus/eval.py
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /usr/bin/python
-import dbus
-import sys
-bus = dbus.SessionBus()
-conn = bus.get_object('org.navit_project.navit',
- '/org/navit_project/navit')
-iface = dbus.Interface(conn, dbus_interface='org.navit_project.navit');
-iter=iface.attr_iter();
-navit=bus.get_object('org.navit_project.navit', conn.get_attr_wi('navit',iter)[1]);
-iface.attr_iter_destroy(iter);
-navit_iface = dbus.Interface(navit, dbus_interface='org.navit_project.navit.navit');
-print navit_iface.evaluate(sys.argv[1]);
diff --git a/navit/binding/dbus/navit.introspect b/navit/binding/dbus/navit.introspect
deleted file mode 100644
index 9366c0cb3..000000000
--- a/navit/binding/dbus/navit.introspect
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
-"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
-<node name="/org/navit_project/navit">
- <interface name="org.freedesktop.DBus.Introspectable">
- <method name="Introspect">
- <arg direction="out" type="s" />
- </method>
- </interface>
-
- <interface name="org.navit_project.navit">
- <method name="get_navit">
- <arg name="iter" type="o" direction="in"/>
- <arg name="navit" type="o" direction="out"/>
- </method>
- <method name="iter_new">
- <arg name="iter" type="o" direction="out"/>
- </method>
- <method name="iter_destroy">
- <arg name="iter" type="o" direction="in"/>
- </method>
- </interface>
-
- <interface name="org.navit_project.navit.navit">
- <method name="zoom">
- <arg type="i" direction="in" />
- </method>
- <method name="zoom">
- <arg type="i(ii)" direction="in" />
- </method>
- <method name="set_center_screen">
- <arg type="ii" direction="in" />
- </method>
- </interface>
-</node>
diff --git a/navit/binding/dbus/org.navit_project.navit.service.in b/navit/binding/dbus/org.navit_project.navit.service.in
deleted file mode 100644
index fc3e4f7a4..000000000
--- a/navit/binding/dbus/org.navit_project.navit.service.in
+++ /dev/null
@@ -1,3 +0,0 @@
-[D-BUS Service]
-Name=org.navit_project.navit
-Exec=@bindir@/navit
diff --git a/navit/binding/dbus/test.py b/navit/binding/dbus/test.py
deleted file mode 100755
index 740f000e6..000000000
--- a/navit/binding/dbus/test.py
+++ /dev/null
@@ -1,11 +0,0 @@
-#! /usr/bin/python
-import dbus
-bus = dbus.SessionBus()
-conn = bus.get_object('org.navit_project.navit',
- '/org/navit_project/navit')
-iface = dbus.Interface(conn, dbus_interface='org.navit_project.navit');
-iter=iface.attr_iter();
-navit=bus.get_object('org.navit_project.navit', conn.get_attr_wi("navit",iter)[1]);
-iface.attr_iter_destroy(iter);
-navit_iface = dbus.Interface(navit, dbus_interface='org.navit_project.navit.navit');
-navit_iface.set_center((1,0x138a4a,0x5d773f));
diff --git a/navit/binding/python/CMakeLists.txt b/navit/binding/python/CMakeLists.txt
deleted file mode 100644
index b0d5dfc3c..000000000
--- a/navit/binding/python/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-include_directories(${PYTHON_INCLUDE_DIRS})
-module_add_library(binding_python attr.c binding_python.c config.c navigation.c navit.c pcoord.c route.c)
diff --git a/navit/binding/python/attr.c b/navit/binding/python/attr.c
deleted file mode 100644
index 2d5ed92b6..000000000
--- a/navit/binding/python/attr.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * 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 "common.h"
-#include "item.h"
-#include "attr.h"
-
-typedef struct {
- PyObject_HEAD
- int ref;
- struct attr *attr;
-} attrObject;
-
-static PyObject *
-attr_func(attrObject *self, PyObject *args)
-{
- const char *file;
- int ret;
- if (!PyArg_ParseTuple(args, "s", &file))
- return NULL;
- ret=0;
- return Py_BuildValue("i",ret);
-}
-
-
-
-static PyMethodDef attr_methods[] = {
- {"func", (PyCFunction) attr_func, METH_VARARGS },
- {NULL, NULL },
-};
-
-
-static PyObject *
-attr_getattr_py(PyObject *self, char *name)
-{
- return Py_FindMethod(attr_methods, self, name);
-}
-
-static void
-attr_destroy_py(attrObject *self)
-{
- if (! self->ref)
- attr_free(self->attr);
-}
-
-PyTypeObject attr_Type = {
- Obj_HEAD
- .tp_name="attr",
- .tp_basicsize=sizeof(attrObject),
- .tp_dealloc=(destructor)attr_destroy_py,
- .tp_getattr=attr_getattr_py,
-};
-
-struct attr *
-attr_py_get(PyObject *self)
-{
- return ((attrObject *)self)->attr;
-}
-
-PyObject *
-attr_new_py(PyObject *self, PyObject *args)
-{
- attrObject *ret;
- const char *name,*value;
- if (!PyArg_ParseTuple(args, "ss", &name, &value))
- return NULL;
- ret=PyObject_NEW(attrObject, &attr_Type);
- ret->attr=attr_new_from_text(name, value);
- ret->ref=0;
- return (PyObject *)ret;
-}
-
-PyObject *
-attr_new_py_ref(struct attr *attr)
-{
- attrObject *ret;
-
- ret=PyObject_NEW(attrObject, &attr_Type);
- ret->ref=1;
- ret->attr=attr;
- return (PyObject *)ret;
-}
-
diff --git a/navit/binding/python/binding_python.c b/navit/binding/python/binding_python.c
deleted file mode 100644
index 51d84fe10..000000000
--- a/navit/binding/python/binding_python.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/**
- * 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 "common.h"
-#include "config.h"
-#include <glib.h>
-#include <fcntl.h>
-#include "coord.h"
-#include "projection.h"
-#include "debug.h"
-#include "item.h"
-#include "map.h"
-#include "mapset.h"
-#include "plugin.h"
-#include "debug.h"
-#include "item.h"
-#include "attr.h"
-#include "xmlconfig.h"
-
-#if defined(MS_WINDOWS) || defined(__CYGWIN__)
-#define Obj_HEAD PyObject_HEAD_INIT(NULL);
-#else
-#define Obj_HEAD PyObject_HEAD_INIT(&PyType_Type)
-#endif
-
-/* *** coord *** */
-
-typedef struct {
- PyObject_HEAD
- struct coord *c;
-} coordObject;
-
-static void coord_destroy_py(coordObject *self);
-
-PyTypeObject coord_Type = {
- Obj_HEAD
- .tp_name="coord",
- .tp_basicsize=sizeof(coordObject),
- .tp_dealloc=(destructor)coord_destroy_py,
-};
-
-
-/* *** map *** */
-
-typedef struct {
- PyObject_HEAD
- int ref;
- struct map *m;
-} mapObject;
-
-static void map_destroy_py(mapObject *self);
-static PyObject *map_getattr_py(PyObject *self, char *name);
-
-PyTypeObject map_Type = {
- Obj_HEAD
- .tp_name="map",
- .tp_basicsize=sizeof(mapObject),
- .tp_dealloc=(destructor)map_destroy_py,
- .tp_getattr=map_getattr_py,
-};
-
-/* *** IMPLEMENTATIONS *** */
-
-/* *** coord *** */
-
-static PyObject *
-coord_new_py(PyObject *self, PyObject *args)
-{
- coordObject *ret;
- int x,y;
- if (!PyArg_ParseTuple(args, "ii:navit.coord",&x,&y))
- return NULL;
- ret=PyObject_NEW(coordObject, &coord_Type);
- ret->c=coord_new(x,y);
- return (PyObject *)ret;
-}
-
-static void
-coord_destroy_py(coordObject *self)
-{
- coord_destroy(self->c);
-}
-
-/* *** coord_rect *** */
-
-typedef struct {
- PyObject_HEAD
- struct coord_rect *r;
-} coord_rectObject;
-
-
-static void coord_rect_destroy_py(coord_rectObject *self);
-
-PyTypeObject coord_rect_Type = {
-#if defined(MS_WINDOWS) || defined(__CYGWIN__)
- PyObject_HEAD_INIT(NULL);
-#else
- PyObject_HEAD_INIT(&PyType_Type)
-#endif
- .tp_name="coord_rect",
- .tp_basicsize=sizeof(coord_rectObject),
- .tp_dealloc=(destructor)coord_rect_destroy_py,
-};
-
-static PyObject *
-coord_rect_new_py(PyObject *self, PyObject *args)
-{
- coord_rectObject *ret;
- coordObject *lu,*rd;
- if (!PyArg_ParseTuple(args, "O!O!:navit.coord_rect_rect",&coord_Type,&lu,&coord_Type,&rd))
- return NULL;
- ret=PyObject_NEW(coord_rectObject, &coord_rect_Type);
- ret->r=coord_rect_new(lu->c,rd->c);
- return (PyObject *)ret;
-}
-
-static void
-coord_rect_destroy_py(coord_rectObject *self)
-{
- coord_rect_destroy(self->r);
-}
-
-/* *** map_rect *** */
-
-typedef struct {
- PyObject_HEAD
- struct map_rect *mr;
-} map_rectObject;
-
-
-static void map_rect_destroy_py(map_rectObject *self);
-
-PyTypeObject map_rect_Type = {
-#if defined(MS_WINDOWS) || defined(__CYGWIN__)
- PyObject_HEAD_INIT(NULL);
-#else
- PyObject_HEAD_INIT(&PyType_Type)
-#endif
- .tp_name="map_rect",
- .tp_basicsize=sizeof(map_rectObject),
- .tp_dealloc=(destructor)map_rect_destroy_py,
-};
-
-static PyObject *
-map_rect_new_py(mapObject *self, PyObject *args)
-{
- map_rectObject *ret;
- coord_rectObject *r;
- if (!PyArg_ParseTuple(args, "O!:navit.map_rect_rect",&coord_rect_Type,&r))
- return NULL;
- ret=PyObject_NEW(map_rectObject, &map_rect_Type);
- ret->mr=map_rect_new(self->m, NULL);
- return (PyObject *)ret;
-}
-
-static void
-map_rect_destroy_py(map_rectObject *self)
-{
- map_rect_destroy(self->mr);
-}
-
-
-/* *** map *** */
-
-static PyObject *
-map_dump_file_py(mapObject *self, PyObject *args)
-{
- const char *s;
- if (!PyArg_ParseTuple(args, "s",&s))
- return NULL;
- map_dump_file(self->m, s);
- Py_RETURN_NONE;
-}
-
-
-static PyObject *
-map_set_attr_py(mapObject *self, PyObject *args)
-{
- PyObject *attr;
- if (!PyArg_ParseTuple(args, "O!", &attr_Type, &attr))
- return NULL;
- map_set_attr(self->m, attr_py_get(attr));
- Py_RETURN_NONE;
-}
-
-
-
-static PyMethodDef map_methods[] = {
- {"dump_file", (PyCFunction) map_dump_file_py, METH_VARARGS },
- {"map_rect_new", (PyCFunction) map_rect_new_py, METH_VARARGS },
- {"set_attr", (PyCFunction) map_set_attr_py, METH_VARARGS },
- {NULL, NULL },
-};
-
-static PyObject *
-map_getattr_py(PyObject *self, char *name)
-{
- return Py_FindMethod(map_methods, self, name);
-}
-
-
-static PyObject *
-map_new_py(PyObject *self, PyObject *args)
-{
- mapObject *ret;
- char *type, *filename;
-
- if (!PyArg_ParseTuple(args, "ss:navit.map", &type, &filename))
- return NULL;
- ret=PyObject_NEW(mapObject, &map_Type);
- ret->m=map_new(NULL,NULL);
- ret->ref=0;
- return (PyObject *)ret;
-}
-
-PyObject *
-map_py_ref(struct map *map)
-{
- mapObject *ret;
- ret=PyObject_NEW(mapObject, &map_Type);
- ret->m=map;
- ret->ref=1;
- return (PyObject *)ret;
-}
-
-static void
-map_destroy_py(mapObject *self)
-{
- if (!self->ref)
- map_destroy(self->m);
-}
-
-/* *** mapset *** */
-
-
-typedef struct {
- PyObject_HEAD
- struct mapset *ms;
-} mapsetObject;
-
-
-static void mapset_destroy_py(mapsetObject *self);
-static PyObject *mapset_getattr_py(PyObject *self, char *name);
-
-PyTypeObject mapset_Type = {
-#if defined(MS_WINDOWS) || defined(__CYGWIN__)
- PyObject_HEAD_INIT(NULL);
-#else
- PyObject_HEAD_INIT(&PyType_Type)
-#endif
- .tp_name="mapset",
- .tp_basicsize=sizeof(mapsetObject),
- .tp_dealloc=(destructor)mapset_destroy_py,
- .tp_getattr=mapset_getattr_py,
-};
-
-static PyObject *
-mapset_add_py(mapsetObject *self, PyObject *args)
-{
- mapObject *map;
- if (!PyArg_ParseTuple(args, "O:navit.mapset", &map))
- return NULL;
- Py_INCREF(map);
- mapset_add_attr(self->ms, &(struct attr){attr_map,.u.map=map->m});
- return Py_BuildValue("");
-}
-
-static PyMethodDef mapset_methods[] = {
- {"add", (PyCFunction) mapset_add_py, METH_VARARGS },
- {NULL, NULL },
-};
-
-static PyObject *
-mapset_getattr_py(PyObject *self, char *name)
-{
- return Py_FindMethod(mapset_methods, self, name);
-}
-
-static PyObject *
-mapset_new_py(PyObject *self, PyObject *args)
-{
- mapsetObject *ret;
- if (!PyArg_ParseTuple(args, ":navit.mapset"))
- return NULL;
- ret=PyObject_NEW(mapsetObject, &mapset_Type);
- ret->ms=mapset_new(NULL,NULL);
- return (PyObject *)ret;
-}
-
-static void
-mapset_destroy_py(mapsetObject *self)
-{
- mapset_destroy(self->ms);
-}
-
-static PyObject *
-config_load_py(PyObject *self, PyObject *args)
-{
- const char *file;
- int ret;
- xmlerror *error;
- if (!PyArg_ParseTuple(args, "s", &file))
- return NULL;
- ret=config_load(file, &error);
- return Py_BuildValue("i",ret);
-}
-
-static PyMethodDef navitMethods[]={
- {"attr", attr_new_py, METH_VARARGS},
- {"coord", coord_new_py, METH_VARARGS, "Create a new coordinate point."},
- {"coord_rect", coord_rect_new_py, METH_VARARGS, "Create a new coordinate rectangle."},
- {"map", map_new_py, METH_VARARGS, "Create a new map."},
- {"mapset", mapset_new_py, METH_VARARGS, "Create a new mapset."},
- {"config_load", config_load_py, METH_VARARGS, "Load a config"},
- {"config", config_py, METH_VARARGS, "Get Config Object"},
- {"pcoord", pcoord_py, METH_VARARGS},
- {NULL, NULL, 0, NULL}
-};
-
-
-PyObject *
-python_object_from_attr(struct attr *attr)
-{
- switch (attr->type) {
- case attr_navigation:
- return navigation_py_ref(attr->u.navigation);
- case attr_route:
- return route_py_ref(attr->u.route);
- default:
- return NULL;
- }
- return NULL;
-}
-
-
-void
-plugin_init(void)
-{
- int fd,size;
- char buffer[65536];
-
- Py_Initialize();
- Py_InitModule("navit", navitMethods);
- fd=open("startup.py",O_RDONLY);
- if (fd >= 0) {
- size=read(fd, buffer, 65535);
- if (size > 0) {
- buffer[size]='\0';
- PyRun_SimpleString(buffer);
- }
- }
-
- Py_Finalize();
-}
diff --git a/navit/binding/python/common.h b/navit/binding/python/common.h
deleted file mode 100644
index c9af7a8ce..000000000
--- a/navit/binding/python/common.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * 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 <Python.h>
-#include "debug.h"
-
-#if defined(MS_WINDOWS) || defined(__CYGWIN__)
-#define Obj_HEAD PyObject_HEAD_INIT(NULL);
-#else
-#define Obj_HEAD PyObject_HEAD_INIT(&PyType_Type)
-#endif
-
-struct navit;
-struct map;
-
-PyObject * python_object_from_attr(struct attr *attr);
-
-PyObject * config_py(PyObject *self, PyObject *args);
-
-PyObject * map_py_ref(struct map *map);
-
-struct navigation;
-PyObject * navigation_py(PyObject *self, PyObject *args);
-PyObject * navigation_py_ref(struct navigation *navigation);
-
-PyObject * navit_py(PyObject *self, PyObject *args);
-PyObject * navit_py_ref(struct navit *navit);
-extern PyTypeObject pcoord_Type;
-PyObject * pcoord_py(PyObject *self, PyObject *args);
-struct pcoord *pcoord_py_get(PyObject *self);
-
-struct route;
-PyObject * route_py(PyObject *self, PyObject *args);
-PyObject * route_py_ref(struct route *route);
-
-extern PyTypeObject attr_Type;
-PyObject * attr_new_py(PyObject *self, PyObject *args);
-PyObject * attr_new_py_ref(struct attr *attr);
-struct attr * attr_py_get(PyObject *self);
diff --git a/navit/binding/python/config.c b/navit/binding/python/config.c
deleted file mode 100644
index c3f04c4df..000000000
--- a/navit/binding/python/config.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * 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 "common.h"
-#include "item.h"
-#include "config_.h"
-
-typedef struct {
- PyObject_HEAD
-} configObject;
-
-static PyObject *
-config_navit(PyObject *self, PyObject *args)
-{
- struct attr navit;
- if (config_get_attr(config, attr_navit, &navit, NULL))
- return navit_py_ref(navit.u.navit);
- return NULL;
-}
-
-
-
-static PyMethodDef config_methods[] = {
- {"navit", (PyCFunction) config_navit, METH_VARARGS },
- {NULL, NULL },
-};
-
-
-static PyObject *
-config_getattr_py(PyObject *self, char *name)
-{
- return Py_FindMethod(config_methods, self, name);
-}
-
-static void
-config_destroy_py(configObject *self)
-{
-}
-
-PyTypeObject config_Type = {
- Obj_HEAD
- .tp_name="config",
- .tp_basicsize=sizeof(configObject),
- .tp_dealloc=(destructor)config_destroy_py,
- .tp_getattr=config_getattr_py,
-};
-
-PyObject *
-config_py(PyObject *self, PyObject *args)
-{
- configObject *ret;
-
- dbg(lvl_debug,"enter\n");
- ret=PyObject_NEW(configObject, &config_Type);
- return (PyObject *)ret;
-}
-
diff --git a/navit/binding/python/navigation.c b/navit/binding/python/navigation.c
deleted file mode 100644
index 75a421d52..000000000
--- a/navit/binding/python/navigation.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * 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 "common.h"
-#include "navigation.h"
-
-typedef struct {
- PyObject_HEAD
- struct navigation *navigation;
-} navigationObject;
-
-static PyObject *
-navigation_get_map_py(navigationObject *self, PyObject *args)
-{
- if (!PyArg_ParseTuple(args, ""))
- return NULL;
- return map_py_ref(navigation_get_map(self->navigation));
-}
-
-
-
-static PyMethodDef navigation_methods[] = {
- {"get_map", (PyCFunction) navigation_get_map_py, METH_VARARGS },
- {NULL, NULL },
-};
-
-
-static PyObject *
-navigation_getattr_py(PyObject *self, char *name)
-{
- return Py_FindMethod(navigation_methods, self, name);
-}
-
-static void
-navigation_destroy_py(navigationObject *self)
-{
-}
-
-PyTypeObject navigation_Type = {
- Obj_HEAD
- .tp_name="navigation",
- .tp_basicsize=sizeof(navigationObject),
- .tp_dealloc=(destructor)navigation_destroy_py,
- .tp_getattr=navigation_getattr_py,
-};
-
-PyObject *
-navigation_py(PyObject *self, PyObject *args)
-{
- navigationObject *ret;
-
- ret=PyObject_NEW(navigationObject, &navigation_Type);
- return (PyObject *)ret;
-}
-
-PyObject *
-navigation_py_ref(struct navigation *navigation)
-{
- navigationObject *ret;
-
- ret=PyObject_NEW(navigationObject, &navigation_Type);
- ret->navigation=navigation;
- return (PyObject *)ret;
-}
-
-
diff --git a/navit/binding/python/navit.c b/navit/binding/python/navit.c
deleted file mode 100644
index 2fde44cbe..000000000
--- a/navit/binding/python/navit.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * 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 "common.h"
-#include "item.h"
-#include "navit.h"
-
-typedef struct {
- PyObject_HEAD
- struct navit *navit;
-} navitObject;
-
-static PyObject *
-navit_set_attr_py(navitObject *self, PyObject *args)
-{
- PyObject *attr;
- if (!PyArg_ParseTuple(args, "O!", &attr_Type, &attr))
- return NULL;
- navit_set_attr(self->navit, attr_py_get(attr));
- Py_RETURN_NONE;
-}
-
-static PyObject *
-navit_get_attr_py(navitObject *self, PyObject *args)
-{
- char *name;
- struct attr attr;
- if (!PyArg_ParseTuple(args, "s", &name))
- return NULL;
- if (!navit_get_attr(self->navit, attr_from_name(name), &attr, NULL)) {
- dbg(lvl_error,"get_attr not ok\n");
- Py_RETURN_NONE;
- }
- dbg(lvl_debug,"get_attr ok\n");
- return python_object_from_attr(&attr);
-}
-
-static PyObject *
-navit_set_center_py(navitObject *self, PyObject *args)
-{
- PyObject *pcoord;
- if (!PyArg_ParseTuple(args, "O!", &pcoord_Type, &pcoord))
- return NULL;
- navit_set_center(self->navit, pcoord_py_get(pcoord), 0);
- Py_RETURN_NONE;
-}
-
-static PyObject *
-navit_set_destination_py(navitObject *self, PyObject *args)
-{
- PyObject *pcoord;
- const char *description;
- int async;
- if (!PyArg_ParseTuple(args, "O!si", &pcoord_Type, &pcoord, &description, &async))
- return NULL;
- navit_set_destination(self->navit, pcoord_py_get(pcoord), description, async);
- Py_RETURN_NONE;
-}
-
-static PyObject *
-navit_set_position_py(navitObject *self, PyObject *args)
-{
- PyObject *pcoord;
- if (!PyArg_ParseTuple(args, "O!", &pcoord_Type, &pcoord))
- return NULL;
- navit_set_position(self->navit, pcoord_py_get(pcoord));
- Py_RETURN_NONE;
-}
-
-
-static PyObject *
-navit_zoom_to_route_py(navitObject *self, PyObject *args)
-{
- if (!PyArg_ParseTuple(args, ""))
- return NULL;
- navit_zoom_to_route(self->navit,0);
- Py_RETURN_NONE;
-}
-
-
-
-
-static PyMethodDef navit_methods[] = {
- {"set_attr", (PyCFunction) navit_set_attr_py, METH_VARARGS },
- {"get_attr", (PyCFunction) navit_get_attr_py, METH_VARARGS },
- {"set_center", (PyCFunction) navit_set_center_py, METH_VARARGS },
- {"set_destination", (PyCFunction) navit_set_destination_py, METH_VARARGS },
- {"set_position", (PyCFunction) navit_set_position_py, METH_VARARGS },
- {"zoom_to_route", (PyCFunction) navit_zoom_to_route_py, METH_VARARGS },
- {NULL, NULL },
-};
-
-
-static PyObject *
-navit_getattr_py(PyObject *self, char *name)
-{
- return Py_FindMethod(navit_methods, self, name);
-}
-
-static void
-navit_destroy_py(navitObject *self)
-{
-}
-
-PyTypeObject navit_Type = {
- Obj_HEAD
- .tp_name="navit",
- .tp_basicsize=sizeof(navitObject),
- .tp_dealloc=(destructor)navit_destroy_py,
- .tp_getattr=navit_getattr_py,
-};
-
-PyObject *
-navit_py(PyObject *self, PyObject *args)
-{
- navitObject *ret;
-
- dbg(lvl_debug,"enter\n");
- ret=PyObject_NEW(navitObject, &navit_Type);
- return (PyObject *)ret;
-}
-
-PyObject *
-navit_py_ref(struct navit *navit)
-{
- dbg(lvl_debug,"navit=%p\n", navit);
- navitObject *ret=PyObject_NEW(navitObject, &navit_Type);
- ret->navit=navit;
- return (PyObject *)ret;
-}
diff --git a/navit/binding/python/navit.xml.python b/navit/binding/python/navit.xml.python
deleted file mode 100644
index ec3e99de5..000000000
--- a/navit/binding/python/navit.xml.python
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE config SYSTEM "navit.dtd">
-<config xmlns:xi="http://www.w3.org/2001/XInclude">
- <plugins>
- <plugin path="$NAVIT_LIBDIR/*/${NAVIT_LIBPREFIX}libbinding_python.so" active="yes"/>
- </plugins>
-</config>
diff --git a/navit/binding/python/pcoord.c b/navit/binding/python/pcoord.c
deleted file mode 100644
index 4fe734a70..000000000
--- a/navit/binding/python/pcoord.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * 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 "common.h"
-#include "coord.h"
-
-typedef struct {
- PyObject_HEAD
- struct pcoord pc;
-} pcoordObject;
-
-static PyObject *
-pcoord_func(pcoordObject *self, PyObject *args)
-{
- const char *file;
- int ret=0;
- if (!PyArg_ParseTuple(args, "s", &file))
- return NULL;
- return Py_BuildValue("i",ret);
-}
-
-
-
-static PyMethodDef pcoord_methods[] = {
- {"func", (PyCFunction) pcoord_func, METH_VARARGS },
- {NULL, NULL },
-};
-
-
-static PyObject *
-pcoord_getattr_py(PyObject *self, char *name)
-{
- return Py_FindMethod(pcoord_methods, self, name);
-}
-
-static void
-pcoord_destroy_py(pcoordObject *self)
-{
-}
-
-PyTypeObject pcoord_Type = {
- Obj_HEAD
- .tp_name="pcoord",
- .tp_basicsize=sizeof(pcoordObject),
- .tp_dealloc=(destructor)pcoord_destroy_py,
- .tp_getattr=pcoord_getattr_py,
-};
-
-PyObject *
-pcoord_py(PyObject *self, PyObject *args)
-{
- pcoordObject *ret;
- const char *str;
- enum projection pro;
- struct coord c;
- if (!PyArg_ParseTuple(args, "si", &str, &pro))
- return NULL;
- ret=PyObject_NEW(pcoordObject, &pcoord_Type);
- coord_parse(str, pro, &c);
- ret->pc.pro=pro;
- ret->pc.x=c.x;
- ret->pc.y=c.y;
- dbg(lvl_debug,"0x%x,0x%x\n", c.x, c.y);
- return (PyObject *)ret;
-}
-
-struct pcoord *
-pcoord_py_get(PyObject *self)
-{
- return &((pcoordObject *)self)->pc;
-}
-
diff --git a/navit/binding/python/route.c b/navit/binding/python/route.c
deleted file mode 100644
index dfbd08cf9..000000000
--- a/navit/binding/python/route.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * 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 "common.h"
-#include "item.h"
-#include "coord.h"
-#include "route.h"
-
-typedef struct {
- PyObject_HEAD
- struct route *route;
-} routeObject;
-
-static PyObject *
-route_get_map_py(routeObject *self, PyObject *args)
-{
- if (!PyArg_ParseTuple(args, ""))
- return NULL;
- return map_py_ref(route_get_map(self->route));
-}
-
-
-
-static PyMethodDef route_methods[] = {
- {"get_map", (PyCFunction) route_get_map_py, METH_VARARGS },
- {NULL, NULL },
-};
-
-
-static PyObject *
-route_getattr_py(PyObject *self, char *name)
-{
- return Py_FindMethod(route_methods, self, name);
-}
-
-static void
-route_destroy_py(routeObject *self)
-{
-}
-
-PyTypeObject route_Type = {
- Obj_HEAD
- .tp_name="route",
- .tp_basicsize=sizeof(routeObject),
- .tp_dealloc=(destructor)route_destroy_py,
- .tp_getattr=route_getattr_py,
-};
-
-PyObject *
-route_py(PyObject *self, PyObject *args)
-{
- routeObject *ret;
-
- ret=PyObject_NEW(routeObject, &route_Type);
- return (PyObject *)ret;
-}
-
-PyObject *
-route_py_ref(struct route *route)
-{
- routeObject *ret;
-
- ret=PyObject_NEW(routeObject, &route_Type);
- ret->route=route;
- return (PyObject *)ret;
-}
-
-
diff --git a/navit/binding/python/startup.py b/navit/binding/python/startup.py
deleted file mode 100644
index f8e801551..000000000
--- a/navit/binding/python/startup.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import navit
-navit.config_load("navit.xml.local")
-pos=navit.pcoord("5023.7493 N 00730.2898 E",1);
-dest=navit.pcoord("5023.6604 N 00729.8500 E",1);
-inst=navit.config().navit();
-inst.set_position(pos);
-inst.set_destination(dest,"Test");
-inst.set_center(pos);
diff --git a/navit/binding/python/template.c b/navit/binding/python/template.c
deleted file mode 100644
index 088cb5ee3..000000000
--- a/navit/binding/python/template.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * 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 "common.h"
-#include "template.h"
-
-typedef struct {
- PyObject_HEAD
- int ref;
- struct template *template;
-} templateObject;
-
-static PyObject *
-template_func(templateObject *self, PyObject *args)
-{
- const char *file;
- int ret;
- if (!PyArg_ParseTuple(args, "s", &file))
- return NULL;
- ret=0;
- return Py_BuildValue("i",ret);
-}
-
-
-
-static PyMethodDef template_methods[] = {
- {"func", (PyCFunction) template_func, METH_VARARGS },
- {NULL, NULL },
-};
-
-
-static PyObject *
-template_getattr_py(PyObject *self, char *name)
-{
- return Py_FindMethod(template_methods, self, name);
-}
-
-static void
-template_destroy_py(templateObject *self)
-{
- if (! self->ref)
- template_destroy(self->template);
-}
-
-PyTypeObject template_Type = {
- Obj_HEAD
- .tp_name="template",
- .tp_basicsize=sizeof(templateObject),
- .tp_dealloc=(destructor)template_destroy_py,
- .tp_getattr=template_getattr_py,
-};
-
-struct template *
-template_py_get(PyObject *self)
-{
- return ((templateObject *)self)->template;
-}
-
-PyObject *
-template_new_py(PyObject *self, PyObject *args)
-{
- templateObject *ret;
-
- ret=PyObject_NEW(templateObject, &template_Type);
- ret->template=template_new();
- ret->ref=0;
- return (PyObject *)ret;
-}
-
-PyObject *
-template_new_py_ref(struct template *template)
-{
- templateObject *ret;
-
- ret=PyObject_NEW(templateObject, &template_Type);
- ret->ref=1;
- ret->template=template;
- return (PyObject *)ret;
-}
-
diff --git a/navit/binding/win32/CMakeLists.txt b/navit/binding/win32/CMakeLists.txt
deleted file mode 100644
index 792a8ff43..000000000
--- a/navit/binding/win32/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-if (USE_LIBGNUINTL AND NOT HAVE_GLIB)
- ADD_DEPENDENCIES(support_glib intl_cmake)
-endif()
-
-module_add_library(binding_win32 binding_win32.c)
-
-add_executable(tell_navit tell_navit.c)
-target_link_libraries(tell_navit ${MODULES_NAME} ${NAVIT_SUPPORT_LIBS} fib ${NAVIT_LIBS} )
-install(TARGETS tell_navit DESTINATION ${BIN_DIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
diff --git a/navit/binding/win32/binding_win32.c b/navit/binding/win32/binding_win32.c
deleted file mode 100644
index c6d3295cc..000000000
--- a/navit/binding/win32/binding_win32.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * 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 <string.h>
-#include <glib.h>
-#include <windows.h>
-#include "config.h"
-#include "config_.h"
-#include "navit.h"
-#include "coord.h"
-#include "point.h"
-#include "plugin.h"
-#include "debug.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "attr.h"
-#include "layout.h"
-#include "navigation.h"
-#include "command.h"
-#include "callback.h"
-#include "graphics.h"
-#include "track.h"
-#include "vehicle.h"
-#include "vehicleprofile.h"
-#include "map.h"
-#include "mapset.h"
-#include "osd.h"
-#include "route.h"
-#include "search.h"
-#include "callback.h"
-#include "gui.h"
-#include "util.h"
-#include "binding_win32.h"
-
-struct win32_binding_private {
- struct navit* navit;
-};
-
-
-
-/* TODO: do something meaningful here
- *
- */
-static int
-win32_cmd_send_signal(struct navit *navit, char *command, struct attr **in, struct attr ***out)
-{
- dbg(lvl_error,"this function is a stub\n");
- if (in) {
- while (*in) {
- dbg(lvl_debug,"another attribute to be sent\n");
- in++;
- }
- }
- return 0;
-}
-
-
-static struct command_table commands[] = {
- {"win32_send",command_cast(win32_cmd_send_signal)},
-};
-
-
-static void
-win32_wm_copydata(struct win32_binding_private *this, int *hwndSender, COPYDATASTRUCT *cpd)
-{
- struct attr navit;
- struct navit_binding_w32_msg *msg;
- navit.type=attr_navit;
- navit.u.navit=this->navit;
- if(cpd->dwData!=NAVIT_BINDING_W32_DWDATA) {
- dbg(lvl_error,"COPYDATA message came with wrong DWDATA value, expected %d, got %d.\n",NAVIT_BINDING_W32_DWDATA,cpd->dwData);
- return;
- }
- if(cpd->cbData<sizeof(*msg)) {
- dbg(lvl_error,"COPYDATA message too short, expected >=%d, got %d.\n",sizeof(*msg),cpd->cbData);
- return;
- }
- msg=cpd->lpData;
- if(cpd->dwData!=NAVIT_BINDING_W32_VERSION) {
- dbg(lvl_error,"Got request with wrong version number, expected %d, got %d.\n",NAVIT_BINDING_W32_VERSION,msg->version);
- return;
- }
- if(strcmp(NAVIT_BINDING_W32_MAGIC,msg->magic)) {
- dbg(lvl_error,"Got request with wrong MAGIC, expected %s, got %*s.\n",NAVIT_BINDING_W32_MAGIC, msg->magic,sizeof(msg->magic));
- return;
- }
- dbg(lvl_debug,"Running command %s\n", msg->text);
- command_evaluate(&navit, msg->text);
-}
-
-static void
-win32_cb_graphics_ready(struct win32_binding_private *this, struct navit *navit)
-{
- struct graphics *gra;
- struct callback *gcb;
-
- gcb=callback_new_attr_1(callback_cast(win32_wm_copydata),attr_wm_copydata, this);
- gra=navit_get_graphics(navit);
- dbg_assert(gra);
- graphics_add_callback(gra, gcb);
-}
-
-static void
-win32_main_navit(struct win32_binding_private *this, struct navit *navit, int added)
-{
- struct attr attr;
- dbg(lvl_debug,"enter\n");
- if (added==1) {
- dbg(lvl_debug,"enter2\n");
- this->navit=navit;
- command_add_table_attr(commands, sizeof(commands)/sizeof(struct command_table), navit, &attr);
- navit_add_attr(navit, &attr);
- navit_add_callback(navit,callback_new_attr_1(callback_cast(win32_cb_graphics_ready),attr_graphics_ready, this));
- }
-
-}
-
-
-
-void plugin_init(void)
-{
- struct attr callback;
- struct win32_binding_private *this=g_new0(struct win32_binding_private,1);
- dbg(lvl_debug,"enter\n");
- callback.type=attr_callback;
- callback.u.callback=callback_new_attr_1(callback_cast(win32_main_navit),attr_navit,this);
- config_add_attr(config, &callback);
-}
-
diff --git a/navit/binding/win32/binding_win32.h b/navit/binding/win32/binding_win32.h
deleted file mode 100644
index 79fe1eb17..000000000
--- a/navit/binding/win32/binding_win32.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * 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.
- */
-
-#ifndef BINDING_WIN32_H
-#define BINDING_WIN32_H
-
-#define NAVIT_BINDING_W32_DWDATA 1
-#define NAVIT_BINDING_W32_MAGIC "NavIt"
-#define NAVIT_BINDING_W32_VERSION 1
-
-struct navit_binding_w32_msg {
- /* Structure version number, should be equal to NAVIT_BINDING_W32_VERSION */
- int version;
- /* Magic code to filter out packets directed to other applications and [mistakely] sent to us or broadcasted.
- * should be equal to NAVIT_BINDING_W32_MAGIC */
- char magic[6];
- /* Command to be executed by Navit */
- char text[1];
-};
-
-#endif
diff --git a/navit/binding/win32/tell_navit.c b/navit/binding/win32/tell_navit.c
deleted file mode 100644
index e06f73258..000000000
--- a/navit/binding/win32/tell_navit.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * 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 "config.h"
-#include <windows.h>
-#include <stdio.h>
-#include <stdarg.h>
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#else
-#include <XGetopt.h>
-#endif
-#include <glib.h>
-#include "binding_win32.h"
-
-static LRESULT CALLBACK message_handler( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
-{
- switch(uMsg) {
- case WM_CREATE:
- return 0;
- }
- return TRUE;
-}
-
-int errormode=1;
-
-void err(char *fmt, ...)
-{
- va_list ap;
- char buf[1024];
-#if defined HAVE_API_WIN32_CE
-#define vsnprintf _vsnprintf
-#endif
- va_start(ap, fmt);
- vsnprintf(buf, sizeof(buf), fmt, ap);
- va_end(ap);
- switch(errormode) {
- case 0: /* be silent */
- break;
- case 1:
- MessageBox(NULL, buf, "tell_navit", MB_ICONERROR|MB_OK);
- break;
- case 2:
- fprintf(stderr,"%s",buf);
- break;
- }
-}
-
-void print_usage(void)
-{
- err(
- "tell_navit usage:\n"
- "tell_navit [options] navit_command\n"
- "\t-h this help\n"
- "\t-e <way>: set way to report error messages:\n"
- "\t\t0 - suppress messages\n"
- "\t\t1 - use messagebox (default)\n"
- "\t\t2 - print to stderr\n"
- );
-}
-
-int main(int argc, char **argv)
-{
- HWND navitWindow;
- COPYDATASTRUCT cd;
- char opt;
-
- TCHAR *g_szClassName = TEXT("TellNavitWND");
- WNDCLASS wc;
- HWND hwnd;
- HWND hWndParent=NULL;
-
-
- if(argc>0) {
- while((opt = getopt(argc, argv, ":hvc:d:e:s:")) != -1) {
- switch(opt){
- case 'h':
- print_usage();
- exit(0);
- break;
- case 'e':
- errormode=atoi(optarg);
- break;
- default:
- err("Unknown option %c\n", opt);
- exit(1);
- break;
- }
- }
- } else {
- print_usage();
- exit(1);
- }
- if(optind==argc) {
- err("Navit command to execute is needed.");
- exit(1);
- }
-
-
- memset(&wc, 0 , sizeof(WNDCLASS));
- wc.lpfnWndProc = message_handler;
- wc.hInstance = GetModuleHandle(NULL);
- wc.lpszClassName = g_szClassName;
-
- if (!RegisterClass(&wc))
- {
- err(TEXT("Window class registration failed\n"));
- return 1;
- } else {
- hwnd = CreateWindow(
- g_szClassName,
- TEXT("Tell Navit"),
- 0,
- 0,
- 0,
- 0,
- 0,
- hWndParent,
- NULL,
- GetModuleHandle(NULL),
- NULL);
- if(!hwnd) {
- err(TEXT("Can't create hidden window\n"));
- UnregisterClass(g_szClassName,NULL);
- return 1;
- }
- }
-
- navitWindow=FindWindow( TEXT("NAVGRA"), NULL );
- if(!navitWindow) {
- err(TEXT("Navit window not found\n"));
- DestroyWindow(hwnd);
- UnregisterClass(g_szClassName,NULL);
- return 1;
- } else {
- int rv;
- char *command=g_strjoinv(" ",argv+optind);
- struct navit_binding_w32_msg *msg;
- int sz=sizeof(*msg)+strlen(command);
-
- cd.dwData=NAVIT_BINDING_W32_DWDATA;
- msg=g_malloc0(sz);
- msg->version=NAVIT_BINDING_W32_VERSION;
- g_strlcpy(msg->magic,NAVIT_BINDING_W32_MAGIC,sizeof(msg->magic));
- g_strlcpy(msg->text,command,sz-sizeof(*msg)+1);
- cd.cbData=sz;
- cd.lpData=msg;
- rv=SendMessage( navitWindow, WM_COPYDATA, (WPARAM)hwnd, (LPARAM) (LPVOID) &cd );
- g_free(command);
- g_free(msg);
- if(rv!=0) {
- err(TEXT("Error %d sending message, SendMessage return value is %d\n"), GetLastError(), rv);
- DestroyWindow(hwnd);
- UnregisterClass(g_szClassName,NULL);
- return 1;
- }
- }
- DestroyWindow(hwnd);
- UnregisterClass(g_szClassName,NULL);
- return 0;
-}
-
-
diff --git a/navit/bookmarks.c b/navit/bookmarks.c
deleted file mode 100644
index aa180e947..000000000
--- a/navit/bookmarks.c
+++ /dev/null
@@ -1,821 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include <stdio.h>
-#include <errno.h>
-#include "config.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include "file.h"
-#include "debug.h"
-#include "projection.h"
-#include "coord.h"
-#include "transform.h"
-#include "callback.h"
-#include "map.h"
-#include "command.h"
-#include "bookmarks.h"
-#include "navit.h"
-#include "navit_nls.h"
-#include "util.h"
-
-/* FIXME: Move this to support directory */
-#ifdef _MSC_VER
-#include <windows.h>
-static int ftruncate(int fd, __int64 length)
-{
- HANDLE fh = (HANDLE)_get_osfhandle(fd);
- if (!fh || _lseeki64(fd, length, SEEK_SET)) {
- return -1;
- }
- return SetEndOfFile(fh) ? 0 : -1;
-}
-#endif /* _MSC_VER */
-
-struct bookmarks {
- //data storage
- struct map *bookmark;
- struct map_rect *mr;
- GHashTable *bookmarks_hash;
- GList *bookmarks_list;
- char* bookmark_file;
- char *working_file;
- struct bookmark_item_priv* clipboard;
- struct bookmark_item_priv* root;
- struct bookmark_item_priv* current;
-
- //Refs to other objects
- struct transformation *trans;
- struct attr **attrs;
- struct callback_list *attr_cbl;
- struct attr *parent;
-};
-
-struct bookmark_item_priv {
- char *label;
- enum item_type type;
- struct pcoord c;
- GList *children;
- GList *iter;
- struct bookmark_item_priv *parent;
- struct item item;
-};
-
-void bookmarks_move_root(struct bookmarks *this_) {
- this_->current=this_->root;
- this_->current->iter=g_list_first(this_->current->children);
- dbg(lvl_info,"Root list have %u entries\n",g_list_length(this_->current->children));
- return;
-}
-void bookmarks_move_up(struct bookmarks *this_) {
- if (this_->current->parent) {
- this_->current=this_->current->parent;
- this_->current->iter=this_->current->children;
- }
- return;
-}
-int bookmarks_move_down(struct bookmarks *this_,const char* name) {
- bookmarks_item_rewind(this_);
- if (this_->current->children==NULL) {
- return 0;
- }
- while (this_->current->iter!=NULL) {
- struct bookmark_item_priv* data=(struct bookmark_item_priv*)this_->current->iter->data;
- if (!strcmp(data->label,name)) {
- this_->current=(struct bookmark_item_priv*)this_->current->iter->data;
- this_->current->iter=g_list_first(this_->current->children);
- dbg(lvl_info,"%s list have %u entries\n",this_->current->label,g_list_length(this_->current->children));
- return 1;
- }
- this_->current->iter=g_list_next(this_->current->iter);
- }
- return 0;
-}
-
-void bookmarks_item_rewind(struct bookmarks* this_) {
- this_->current->children=g_list_first(this_->current->children);
- this_->current->iter=this_->current->children;
- this_->current->iter=this_->current->children;
-}
-struct item* bookmarks_get_item(struct bookmarks* this_) {
- struct item item,*ret;
- if (this_->current->iter==NULL) {
- return NULL;
- }
-
- item=((struct bookmark_item_priv*)this_->current->iter->data)->item;
- this_->current->iter=g_list_next(this_->current->iter);
-
- ret = map_rect_get_item_byid(this_->mr, item.id_hi, item.id_lo);
-
- return ret;
-}
-
-int bookmarks_get_bookmark_count(struct bookmarks* this_) {
- int ret=0;
- bookmarks_item_rewind(this_);
- while (this_->current->iter!=NULL) {
- struct bookmark_item_priv* data=(struct bookmark_item_priv*)this_->current->iter->data;
- if (data->type == type_bookmark) {
- ret++;
- }
- this_->current->iter=g_list_next(this_->current->iter);
- }
- return ret;
-}
-
-const char* bookmarks_item_cwd(struct bookmarks* this_) {
- return this_->current->label;
-}
-
-static void bookmarks_clear_item(struct bookmark_item_priv *b_item) {
- b_item->children=g_list_first(b_item->children);
- while(b_item->children) {
- bookmarks_clear_item((struct bookmark_item_priv*)b_item->children->data);
- b_item->children=g_list_next(b_item->children);
- }
- g_free(b_item->label);
- g_free(b_item);
-}
-
-static void
-bookmarks_clear_hash(struct bookmarks *this_) {
- if (this_->mr) {
- map_rect_destroy(this_->mr);
- }
- bookmarks_clear_item(this_->root);
- g_hash_table_destroy(this_->bookmarks_hash);
- g_list_free(this_->bookmarks_list);
-}
-
-static void
-bookmarks_load_hash(struct bookmarks *this_) {
- struct bookmark_item_priv *b_item;
- struct item *item;
- struct attr attr;
- struct coord c;
- char *pos,*finder;
- char *copy_helper;
-
- if (this_->mr) {
- map_rect_destroy(this_->mr);
- }
- this_->mr=map_rect_new(this_->bookmark, NULL);
-
- this_->bookmarks_hash=g_hash_table_new(g_str_hash, g_str_equal);
- this_->root=g_new0(struct bookmark_item_priv,1);
- this_->root->type=type_none;
- this_->root->parent=NULL;
- this_->root->children=NULL;
- bookmarks_move_root(this_);
-
- while ((item=map_rect_get_item(this_->mr))) {
- if (item->type != type_bookmark && item->type != type_bookmark_folder ) continue;
- if (!item_attr_get(item, attr_path, &attr)) {
- item_attr_get(item, attr_label, &attr);
- }
- item_coord_get(item, &c, 1);
-
- b_item=g_new0(struct bookmark_item_priv,1);
- b_item->c.x=c.x;
- b_item->c.y=c.y;
- b_item->label=g_strdup(attr.u.str);
- b_item->type=item->type;
- b_item->item=*item;
-
- //Prepare position
- bookmarks_move_root(this_);
- finder=b_item->label;
- while ((pos=strchr(finder,'/'))) {
- *pos=0x00;
- dbg(lvl_debug,"Found path entry: %s\n",finder);
- if (!bookmarks_move_down(this_,finder)) {
- struct bookmark_item_priv *path_item=g_new0(struct bookmark_item_priv,1);
- path_item->type=type_bookmark_folder;
- path_item->parent=this_->current;
- path_item->children=NULL;
- path_item->label=g_strdup(finder);
-
- this_->current->children=g_list_append(this_->current->children,path_item);
- this_->current=path_item;
- g_hash_table_insert(this_->bookmarks_hash,b_item->label,path_item);
- this_->bookmarks_list=g_list_append(this_->bookmarks_list,path_item);
- }
- finder+=strlen(finder)+1;
- }
- copy_helper=g_strdup(finder);
- free(b_item->label);
- b_item->label=copy_helper;
- b_item->parent=this_->current;
-
- g_hash_table_insert(this_->bookmarks_hash,b_item->label,b_item);
- this_->bookmarks_list=g_list_append(this_->bookmarks_list,b_item);
- this_->current->children=g_list_append(this_->current->children,b_item);
- this_->current->children=g_list_first(this_->current->children);
- dbg(lvl_debug,"Added %s to %s and current list now %u long\n",b_item->label,this_->current->label,g_list_length(this_->current->children));
- }
- bookmarks_move_root(this_);
-}
-
-struct bookmarks *
-bookmarks_new(struct attr *parent, struct attr **attrs, struct transformation *trans) {
- struct bookmarks *this_;
-
- if (parent->type!=attr_navit) {
- return NULL;
- }
-
- this_ = g_new0(struct bookmarks,1);
- this_->attr_cbl=callback_list_new();
- this_->parent=parent;
- //this_->attrs=attr_list_dup(attrs);
- this_->trans=trans;
-
- this_->bookmark_file=g_strjoin(NULL, navit_get_user_data_directory(TRUE), "/bookmark.txt", NULL);
- this_->working_file=g_strjoin(NULL, navit_get_user_data_directory(TRUE), "/bookmark.txt.tmp", NULL);
-
- this_->clipboard=g_new0(struct bookmark_item_priv,1);
-
- {
- //Load map now
- struct attr type={attr_type, {"textfile"}},
- data={attr_data, {this_->bookmark_file}},
- no_warn={attr_no_warning_if_map_file_missing, {(void *)1}};
- struct attr *attrs[]={&type, &data, &no_warn, NULL};
- this_->bookmark=map_new(this_->parent, attrs);
- if (!this_->bookmark)
- return NULL;
- bookmarks_load_hash(this_);
- }
-
- return this_;
-}
-
-void
-bookmarks_destroy(struct bookmarks *this_) {
-
- bookmarks_clear_hash(this_);
-
- map_destroy(this_->bookmark);
- callback_list_destroy(this_->attr_cbl);
-
- g_free(this_->bookmark_file);
- g_free(this_->working_file);
-
- g_free(this_->clipboard);
- g_free(this_);
-}
-
-struct map*
-bookmarks_get_map(struct bookmarks *this_) {
- return this_->bookmark;
-}
-
-enum projection bookmarks_get_projection(struct bookmarks *this_){
- return map_projection(this_->bookmark);
-}
-void
-bookmarks_add_callback(struct bookmarks *this_, struct callback *cb)
-{
- callback_list_add(this_->attr_cbl, cb);
-}
-
-static int
-bookmarks_store_bookmarks_to_file(struct bookmarks *this_, int limit,int replace) {
- FILE *f;
- struct bookmark_item_priv *item,*parent_item;
- char *fullname;
- const char *prostr;
- int result;
- GHashTable *dedup=g_hash_table_new_full(g_str_hash,g_str_equal,g_free,NULL);
-
- f=fopen(this_->working_file, replace ? "w+" : "a+");
- if (f==NULL) {
- navit_add_message(this_->parent->u.navit,_("Failed to write bookmarks file"));
- return FALSE;
- }
-
- this_->bookmarks_list=g_list_first(this_->bookmarks_list);
- while (this_->bookmarks_list) {
- item=(struct bookmark_item_priv*)this_->bookmarks_list->data;
-
- parent_item=item;
- fullname=g_strdup(item->label);
- while ((parent_item=parent_item->parent)) {
- char *pathHelper;
- if (parent_item->label) {
- pathHelper=g_strconcat(parent_item->label,"/",fullname,NULL);
- g_free(fullname);
- fullname=g_strdup(pathHelper);
- g_free(pathHelper);
- dbg(lvl_debug,"full name: %s\n",fullname);
- }
- }
-
- if (!g_hash_table_lookup(dedup,fullname)) {
- g_hash_table_insert(dedup,fullname,fullname);
- if (item->type == type_bookmark) {
- prostr = projection_to_name(projection_mg);
- if (fprintf(f,"%s%s%s0x%x %s0x%x type=%s label=\"%s\" path=\"%s\"\n",
- prostr, *prostr ? ":" : "",
- item->c.x >= 0 ? "":"-", item->c.x >= 0 ? item->c.x : -item->c.x,
- item->c.y >= 0 ? "":"-", item->c.y >= 0 ? item->c.y : -item->c.y,
- "bookmark", item->label,fullname)<1) {
- g_free(fullname);
- break;
- }
- }
- if (item->type == type_bookmark_folder) {
- prostr = projection_to_name(projection_mg);
- if (fprintf(f,"%s%s%s0x%x %s0x%x type=%s label=\"%s\" path=\"%s\"\n",
- prostr, *prostr ? ":" : "",
- "", 0,
- "", 0,
- "bookmark_folder", item->label,fullname)<1) {
- g_free(fullname);
- break;
- }
- }
- }
-
- /* Limit could be zero, so we start decrementing it from zero and never reach 1
- or it was bigger and we decreased it earlier. So when this counter becomes 1, we know
- that we have enough entries in bookmarks file */
- if (limit==1) {
- break;
- }
- limit--;
-
- this_->bookmarks_list=g_list_next(this_->bookmarks_list);
- }
-
- fclose(f);
-
- g_hash_table_destroy(dedup);
-
- if (this_->mr) {
- map_rect_destroy(this_->mr);
- this_->mr = 0;
- }
-
- unlink(this_->bookmark_file);
- result=(rename(this_->working_file,this_->bookmark_file)==0);
- if (!result)
- {
- navit_add_message(this_->parent->u.navit,_("Failed to write bookmarks file"));
- }
- return result;
-}
-
-/**
- * @param create: create the directory where the file is stored
- * if it does not exist
- * @return The name of the file used to store destinations with its
- * full path. Should be freed using g_free.
- *
- */
-char*
-bookmarks_get_destination_file(gboolean create)
-{
- return g_strjoin(NULL, navit_get_user_data_directory(create), "/destination.txt", NULL);
-}
-
-/*
- * bookmarks_get_center_file
- *
- * returns the name of the file used to store the center file with its
- * full path
- *
- * arg: gboolean create: create the directory where the file is stored
- * if it does not exist
- */
-char*
-bookmarks_get_center_file(gboolean create)
-{
- return g_strjoin(NULL, navit_get_user_data_directory(create), "/center.txt", NULL);
-}
-
-void
-bookmarks_set_center_from_file(struct bookmarks *this_, char *file)
-{
- FILE *f;
- char *line = NULL;
-
- size_t line_size = 0;
- enum projection pro;
- struct coord *center;
-
- f = fopen(file, "r");
- if (! f)
- return;
- getline(&line, &line_size, f);
- fclose(f);
- if (line) {
- center = transform_center(this_->trans);
- pro = transform_get_projection(this_->trans);
- coord_parse(g_strchomp(line), pro, center);
- free(line);
- }
- return;
-}
-
-void
-bookmarks_write_center_to_file(struct bookmarks *this_, char *file)
-{
- FILE *f;
- enum projection pro;
- struct coord *center;
-
- f = fopen(file, "w+");
- if (f) {
- center = transform_center(this_->trans);
- pro = transform_get_projection(this_->trans);
- coord_print(pro, center, f);
- fclose(f);
- } else {
- perror(file);
- }
- return;
-}
-
-static void
-bookmarks_emit_dbus_signal(struct bookmarks *this_, struct pcoord *c, const char *description,int create)
-{
- struct attr attr1,attr2,attr3,attr4,cb,*attr_list[5];
- int valid=0;
- attr1.type=attr_type;
- attr1.u.str="bookmark";
- attr2.type=attr_data;
- attr2.u.str=create ? "create" : "delete";
- attr3.type=attr_data;
- attr3.u.str=(char *)description;
- attr4.type=attr_coord;
- attr4.u.pcoord=c;
- attr_list[0]=&attr1;
- attr_list[1]=&attr2;
- attr_list[2]=&attr3;
- attr_list[3]=&attr4;
- attr_list[4]=NULL;
- if (navit_get_attr(this_->parent->u.navit, attr_callback_list, &cb, NULL))
- callback_list_call_attr_4(cb.u.callback_list, attr_command, "dbus_send_signal", attr_list, NULL, &valid);
-}
-
-/**
- * Record the given set of coordinates as a bookmark
- *
- * @param navit The navit instance
- * @param c The coordinate to store
- * @param description A label which allows the user to later identify this bookmark
- * @returns nothing
- */
-int
-bookmarks_add_bookmark(struct bookmarks *this_, struct pcoord *pc, const char *description)
-{
- struct bookmark_item_priv *b_item=g_new0(struct bookmark_item_priv,1);
- int result;
-
- if (pc) {
- b_item->c.x=pc->x;
- b_item->c.y=pc->y;
- b_item->type=type_bookmark;
- } else {
- b_item->type=type_bookmark_folder;
- }
- b_item->label=g_strdup(description);
- b_item->parent=this_->current;
- b_item->children=NULL;
-
- this_->current->children=g_list_first(this_->current->children);
- this_->current->children=g_list_append(this_->current->children,b_item);
- this_->bookmarks_list=g_list_first(this_->bookmarks_list);
- this_->bookmarks_list=g_list_append(this_->bookmarks_list,b_item);
-
- result=bookmarks_store_bookmarks_to_file(this_,0,0);
-
- callback_list_call_attr_0(this_->attr_cbl, attr_bookmark_map);
- bookmarks_clear_hash(this_);
- bookmarks_load_hash(this_);
-
- bookmarks_emit_dbus_signal(this_,&(b_item->c),description,TRUE);
-
- return result;
-}
-
-int
-bookmarks_cut_bookmark(struct bookmarks *this_, const char *label) {
- if (bookmarks_copy_bookmark(this_,label)) {
- return bookmarks_delete_bookmark(this_,label);
- }
-
- return FALSE;
-}
-int
-bookmarks_copy_bookmark(struct bookmarks *this_, const char *label) {
- bookmarks_item_rewind(this_);
- if (this_->current->children==NULL) {
- return 0;
- }
- while (this_->current->iter!=NULL) {
- struct bookmark_item_priv* data=(struct bookmark_item_priv*)this_->current->iter->data;
- if (!strcmp(data->label,label)) {
- this_->clipboard->c=data->c;
- this_->clipboard->type=data->type;
- this_->clipboard->item=data->item;
- this_->clipboard->children=data->children;
- if (!this_->clipboard->label) {
- g_free(this_->clipboard->label);
- }
- this_->clipboard->label=g_strdup(data->label);
- return TRUE;
- }
- this_->current->iter=g_list_next(this_->current->iter);
- }
- return FALSE;
-}
-int
-bookmarks_paste_bookmark(struct bookmarks *this_) {
- int result;
- struct bookmark_item_priv* b_item;
-
- if (!this_->clipboard->label) {
- return FALSE;
- }
-
- b_item=g_new0(struct bookmark_item_priv,1);
- b_item->c.x=this_->clipboard->c.x;
- b_item->c.y=this_->clipboard->c.y;
- b_item->label=g_strdup(this_->clipboard->label);
- b_item->type=this_->clipboard->type;
- b_item->item=this_->clipboard->item;
- b_item->parent=this_->current;
- b_item->children=this_->clipboard->children;
-
- g_hash_table_insert(this_->bookmarks_hash,b_item->label,b_item);
- this_->bookmarks_list=g_list_append(this_->bookmarks_list,b_item);
- this_->current->children=g_list_append(this_->current->children,b_item);
- this_->current->children=g_list_first(this_->current->children);
-
- result=bookmarks_store_bookmarks_to_file(this_,0,0);
-
- callback_list_call_attr_0(this_->attr_cbl, attr_bookmark_map);
- bookmarks_clear_hash(this_);
- bookmarks_load_hash(this_);
-
- return result;
-}
-
-
-int
-bookmarks_delete_bookmark(struct bookmarks *this_, const char *label) {
- int result;
-
- bookmarks_item_rewind(this_);
- if (this_->current->children==NULL) {
- return 0;
- }
- while (this_->current->iter!=NULL) {
- struct bookmark_item_priv* data=(struct bookmark_item_priv*)this_->current->iter->data;
- if (!strcmp(data->label,label)) {
- this_->bookmarks_list=g_list_first(this_->bookmarks_list);
- this_->bookmarks_list=g_list_remove(this_->bookmarks_list,data);
-
- result=bookmarks_store_bookmarks_to_file(this_,0,0);
-
- callback_list_call_attr_0(this_->attr_cbl, attr_bookmark_map);
- bookmarks_clear_hash(this_);
- bookmarks_load_hash(this_);
-
- bookmarks_emit_dbus_signal(this_,&(data->c),label,FALSE);
-
- return result;
- }
- this_->current->iter=g_list_next(this_->current->iter);
- }
-
- return FALSE;
-}
-
-int
-bookmarks_rename_bookmark(struct bookmarks *this_, const char *oldName, const char* newName) {
- int result;
-
- bookmarks_item_rewind(this_);
- if (this_->current->children==NULL) {
- return 0;
- }
- while (this_->current->iter!=NULL) {
- struct bookmark_item_priv* data=(struct bookmark_item_priv*)this_->current->iter->data;
- if (!strcmp(data->label,oldName)) {
- g_free(data->label);
- data->label=g_strdup(newName);
-
- result=bookmarks_store_bookmarks_to_file(this_,0,0);
-
- callback_list_call_attr_0(this_->attr_cbl, attr_bookmark_map);
- bookmarks_clear_hash(this_);
- bookmarks_load_hash(this_);
-
- return result;
- }
- this_->current->iter=g_list_next(this_->current->iter);
- }
-
- return FALSE;
-}
-
-struct former_destination{
- enum item_type type;
- char* description;
- GList* c;
-};
-
-static void free_former_destination(struct former_destination* former_destination){
- g_free(former_destination->description);
- g_list_foreach(former_destination->c, (GFunc)g_free, NULL);
- g_list_free(former_destination->c);
- g_free(former_destination);
-}
-
-/*
- * Doesn't read any items besides former_destination. So active waypoints items of type former_itinerary and former_itinerary_part are skipped.
- */
-static GList* read_former_destination_map_as_list(struct map *map){
- struct map_rect *mr;
- struct item *item;
- struct attr attr;
- struct former_destination *dest;
- struct coord c;
- int more;
- GList* list = NULL;
- if (map && (mr=map_rect_new(map, NULL))) {
- while ((item=map_rect_get_item(mr))) {
- if (item->type != type_former_destination) continue;
- dest = g_new0(struct former_destination, 1);
- dest->type=item->type;
- item_attr_get(item, attr_label, &attr);
- dest->description = g_strdup(attr.u.str);
- more = item_coord_get(item, &c, 1);
- while (more) {
- dest->c = g_list_append(dest->c, g_new(struct coord, 1));
- *(struct coord *)g_list_last(dest->c)->data = c;
- more = item_coord_get(item, &c, 1);
- }
- list = g_list_prepend(list, dest);
- }
- map_rect_destroy(mr);
- }
- return g_list_reverse(list);
-}
-
-static int
-destination_equal(struct former_destination* dest1, struct former_destination* dest2, int ignore_descriptions)
-{
- if ((dest1->type == dest2->type) &&
- (ignore_descriptions || !strcmp(dest1->description, dest2->description)) &&
- (coord_equal((struct coord *)g_list_last(dest1->c)->data, (struct coord *)g_list_last(dest2->c)->data))){
- return TRUE;
- }
- return FALSE;
-}
-
-/*
- * Find destination in given GList. If remove_found is non-zero, any matching items are removed and new beginning of the list is returned.
- * If remove_found is zero, last matching item is returned. In the latter case, description is ignored and can be NULL.
- */
-static GList*
-find_destination_in_list(struct former_destination* dest_to_remove, GList* former_destinations, int remove_found)
-{
- GList* curr_el = former_destinations;
- GList* prev_el = NULL;
- GList* found_el = NULL;
- struct former_destination* curr_dest;
- while(curr_el){
- curr_dest = curr_el->data;
- if (destination_equal(dest_to_remove, curr_dest, remove_found?0:1)) {
- if(remove_found) {
- free_former_destination(curr_dest);
- curr_el = g_list_remove(curr_el, curr_dest);
- continue;
- } else {
- found_el=curr_el;
- }
- }
- prev_el = curr_el;
- curr_el = g_list_next(curr_el);
-
- }
- if(remove_found)
- return g_list_first(prev_el);
- else
- return found_el;
-
-}
-
-
-static void
-write_former_destinations(GList* former_destinations, char *former_destination_file, enum projection proj)
-{
- FILE *f;
- GList* currdest = NULL;
- GList* c_list = NULL;
- struct coord *c;
- struct former_destination *dest;
- const char* prostr = projection_to_name(proj);
- f=fopen(former_destination_file, "w");
- if (f) {
- for(currdest = former_destinations; currdest; currdest = g_list_next(currdest)){
- dest = currdest->data;
- if (dest->description)
- fprintf(f,"type=%s label=\"%s\"\n", item_to_name(dest->type), dest->description);
- else
- fprintf(f,"type=%s\n", item_to_name(dest->type));
- c_list = dest->c;
- do {
- c = (struct coord *)c_list->data;
- fprintf(f,"%s%s%s0x%x %s0x%x\n",
- prostr, *prostr ? ":" : "",
- c->x >= 0 ? "":"-", c->x >= 0 ? c->x : -c->x,
- c->y >= 0 ? "":"-", c->y >= 0 ? c->y : -c->y);
- c_list = g_list_next(c_list);
- } while (c_list);
- }
- fclose(f);
- } else {
- dbg(lvl_error, "Error updating destinations file %s: %s\n", former_destination_file, strerror(errno));
- }
-}
-/**
- * Append recent destination(s) item to the former destionations map.
- * @param former_destination_map
- * @param former_destination_file
- * @param c coordinates of item point(s). Can be set to NULL when navigation is stopped to remove type_former_itinerary and
- * type_former_itinerary_part items from the file.
- * @param count number of points in this item. Set to 0 when navigation is stopped.
- * @param type type_former_destination, type_former_itinerary and type_former_itinerary_part are meaningful here
- * @param description character string used to identify this destination. If NULL, most recent waypoint at these coordinates will be used
- * to get description.
- * @param limit Limits the number of entries in the "backlog". Set to 0 for "infinite"
- */
-void
-bookmarks_append_destinations(struct map *former_destination_map, char *former_destination_file,
- struct pcoord *c, int count, enum item_type type, const char *description, int limit)
-{
- struct former_destination *new_dest=NULL;
- GList* former_destinations = NULL;
- GList* former_destinations_shortened = NULL;
- struct coord* c_dup;
- int no_of_former_destinations;
- int i;
-
- former_destinations = read_former_destination_map_as_list(former_destination_map);
-
- if(c && count>0) {
- GList *older;
- struct coord ctmp;
- new_dest = g_new0(struct former_destination, 1);
- new_dest->type = type;
- for (i=0; i<count; i++) {
- ctmp.x=c[i].x;
- ctmp.y=c[i].y;
- c_dup = g_new(struct coord, 1);
- transform_from_to(&ctmp,c[i].pro, c_dup, map_projection(former_destination_map));
- new_dest->c = g_list_append(new_dest->c, c_dup);
- }
- older=find_destination_in_list(new_dest, former_destinations,0);
- if(!description && older)
- description=((struct former_destination *)older->data)->description;
- new_dest->description = g_strdup(description?description:_("Map Point"));
-
- former_destinations = find_destination_in_list(new_dest, former_destinations, 1);
- former_destinations = g_list_append(former_destinations, new_dest);
- }
- no_of_former_destinations = g_list_length(former_destinations);
- if (limit > 0 && no_of_former_destinations > limit)
- former_destinations_shortened = g_list_nth(former_destinations, no_of_former_destinations - limit);
- else
- former_destinations_shortened = former_destinations;
-
- write_former_destinations(former_destinations_shortened, former_destination_file, map_projection(former_destination_map));
- g_list_foreach(former_destinations, (GFunc) free_former_destination, NULL);
- g_list_free(former_destinations);
-}
-
diff --git a/navit/bookmarks.h b/navit/bookmarks.h
deleted file mode 100644
index 58ed47fc1..000000000
--- a/navit/bookmarks.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * 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.
- */
-
- #ifndef NAVIT_BOOKMARKS_H
- #define NAVIT_BOOKMARKS_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* prototypes */
-struct bookmarks;
-struct bookmarks *bookmarks_new(struct attr *parent, struct attr **attrs, struct transformation *trans);
-void bookmarks_destroy(struct bookmarks *this_);
-void bookmarks_add_callback(struct bookmarks *this_, struct callback *cb);
-
-int bookmarks_add_bookmark(struct bookmarks *this_, struct pcoord *c, const char *description);
-int bookmarks_cut_bookmark(struct bookmarks *this_, const char *label);
-int bookmarks_copy_bookmark(struct bookmarks *this_, const char *label);
-int bookmarks_paste_bookmark(struct bookmarks *this_);
-int bookmarks_rename_bookmark(struct bookmarks *this_, const char *oldName, const char* newName);
-int bookmarks_delete_bookmark(struct bookmarks *this_, const char *label);
-
-struct map* bookmarks_get_map(struct bookmarks *this_);
-enum projection bookmarks_get_projection(struct bookmarks *this_);
-
-void bookmarks_move_root(struct bookmarks *this_);
-void bookmarks_move_up(struct bookmarks *this_);
-int bookmarks_move_down(struct bookmarks *this_,const char* name);
-
-struct item* bookmarks_get_item(struct bookmarks* this_);
-int bookmarks_get_bookmark_count(struct bookmarks* this_);
-void bookmarks_item_rewind(struct bookmarks* this_);
-const char* bookmarks_item_cwd(struct bookmarks* this_);
-
-char* bookmarks_get_user_data_directory(gboolean create);
-char* bookmarks_get_destination_file(gboolean create);
-void bookmarks_set_center_from_file(struct bookmarks *this_, char *file);
-char* bookmarks_get_center_file(gboolean create);
-void bookmarks_write_center_to_file(struct bookmarks *this_, char *file);
-void bookmarks_append_destinations(struct map *former_destination_map, char *file, struct pcoord *c, int count, enum item_type type, const char *description, int limit);
-/* end of prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
- #endif /* NAVIT_BOOKMARKS_H */
diff --git a/navit/browserplugin.c b/navit/browserplugin.c
deleted file mode 100644
index e5fbc5517..000000000
--- a/navit/browserplugin.c
+++ /dev/null
@@ -1,552 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-navit-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (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.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Josh Aas <josh@mozilla.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#include "browserplugin.h"
-#include <navit/navit.h>
-#include <navit/item.h>
-#include <navit/config_.h>
-#include <navit/callback.h>
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#define PLUGIN_NAME "Navit Sample Plug-in"
-#define PLUGIN_DESCRIPTION PLUGIN_NAME " (Mozilla SDK)"
-#define PLUGIN_VERSION "1.0.0.0"
-
-static NPNetscapeFuncs *sBrowserFuncs = NULL;
-extern struct NPClass navitclass,navitclass2;
-
-typedef struct InstanceData {
- NPP npp;
- NPWindow window;
-} InstanceData;
-
-
-static void
-fillPluginFunctionTable(NPPluginFuncs * pFuncs)
-{
- pFuncs->version = 11;
- pFuncs->size = sizeof(*pFuncs);
- pFuncs->newp = NPP_New;
- pFuncs->destroy = NPP_Destroy;
- pFuncs->setwindow = NPP_SetWindow;
- pFuncs->newstream = NPP_NewStream;
- pFuncs->destroystream = NPP_DestroyStream;
- pFuncs->asfile = NPP_StreamAsFile;
- pFuncs->writeready = NPP_WriteReady;
- pFuncs->write = NPP_Write;
- pFuncs->print = NPP_Print;
- pFuncs->event = NPP_HandleEvent;
- pFuncs->urlnotify = NPP_URLNotify;
- pFuncs->getvalue = NPP_GetValue;
- pFuncs->setvalue = NPP_SetValue;
-}
-
-NP_EXPORT(NPError)
-NP_Initialize(NPNetscapeFuncs * bFuncs, NPPluginFuncs * pFuncs)
-{
- NPError err = NPERR_NO_ERROR;
- NPBool supportsXEmbed = false;
- NPNToolkitType toolkit = 0;
-
- sBrowserFuncs = bFuncs;
-
- fillPluginFunctionTable(pFuncs);
- err =
- sBrowserFuncs->getvalue(NULL, NPNVSupportsXEmbedBool,
- (void *) &supportsXEmbed);
- if (err != NPERR_NO_ERROR || supportsXEmbed != true)
- return NPERR_INCOMPATIBLE_VERSION_ERROR;
- err =
- sBrowserFuncs->getvalue(NULL, NPNVToolkit, (void *) &toolkit);
-
- if (err != NPERR_NO_ERROR || toolkit != NPNVGtk2)
- return NPERR_INCOMPATIBLE_VERSION_ERROR;
-
- return NPERR_NO_ERROR;
-}
-
-NP_EXPORT(char *)
-NP_GetPluginVersion()
-{
- return PLUGIN_VERSION;
-}
-
-NP_EXPORT(char *)
-NP_GetMIMEDescription()
-{
- return "application/navit-plugin:nsc:Navit plugin";
-}
-
-NP_EXPORT(NPError)
-NP_GetValue(void *future, NPPVariable aVariable, void *aValue)
-{
- fprintf(stderr, "NP_GetValue %d\n", aVariable);
- switch (aVariable) {
- case NPPVpluginNameString:
- *((char **) aValue) = PLUGIN_NAME;
- break;
- case NPPVpluginDescriptionString:
- *((char **) aValue) = PLUGIN_DESCRIPTION;
- break;
- default:
- return NPERR_INVALID_PARAM;
- break;
- }
- return NPERR_NO_ERROR;
-}
-
-NP_EXPORT(NPError)
-NP_Shutdown()
-{
- return NPERR_NO_ERROR;
-}
-
-NPError
-NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc,
- char *argn[], char *argv[], NPSavedData * saved)
-{
- char *args[]={"/usr/bin/navit",NULL};
- // Make sure we can render this plugin
- NPBool browserSupportsWindowless = false;
- sBrowserFuncs->getvalue(instance, NPNVSupportsWindowless,
- &browserSupportsWindowless);
- if (!browserSupportsWindowless) {
- printf("Windowless mode not supported by the browser\n");
- return NPERR_GENERIC_ERROR;
- }
-#if 0
- sBrowserFuncs->setvalue(instance, NPPVpluginWindowBool,
- (void *) true);
-#endif
-
- // set up our our instance data
- InstanceData *instanceData =
- (InstanceData *) malloc(sizeof(InstanceData));
- if (!instanceData)
- return NPERR_OUT_OF_MEMORY_ERROR;
- memset(instanceData, 0, sizeof(InstanceData));
- instanceData->npp = instance;
- instance->pdata = instanceData;
- fprintf(stderr, "npp=%p\n", instance);
-
- main_real(1, args);
- return NPERR_NO_ERROR;
-}
-
-NPError
-NPP_Destroy(NPP instance, NPSavedData ** save)
-{
- InstanceData *instanceData = (InstanceData *) (instance->pdata);
- free(instanceData);
- return NPERR_NO_ERROR;
-}
-
-NPError
-NPP_SetWindow(NPP instance, NPWindow * window)
-{
- struct attr navit,graphics,windowid;
- InstanceData *instanceData = (InstanceData *) (instance->pdata);
- if (window->window == instanceData->window.window)
- return;
- instanceData->window = *window;
- fprintf(stderr, "Window 0x%x\n", window->window);
- if (!config_get_attr(config, attr_navit, &navit, NULL)) {
- fprintf(stderr,"No navit\n");
- return NPERR_GENERIC_ERROR;
- }
- if (!navit_get_attr(navit.u.navit, attr_graphics, &graphics, NULL)) {
- fprintf(stderr,"No Graphics\n");
- return NPERR_GENERIC_ERROR;
- }
- windowid.type=attr_windowid;
- windowid.u.num=window->window;
- if (!graphics_set_attr(graphics.u.graphics, &windowid)) {
- fprintf(stderr,"Failed to set window\n");
- return NPERR_GENERIC_ERROR;
- }
-
- return NPERR_NO_ERROR;
-}
-
-NPError
-NPP_NewStream(NPP instance, NPMIMEType type, NPStream * stream,
- NPBool seekable, uint16_t * stype)
-{
- return NPERR_GENERIC_ERROR;
-}
-
-NPError
-NPP_DestroyStream(NPP instance, NPStream * stream, NPReason reason)
-{
- return NPERR_GENERIC_ERROR;
-}
-
-int32_t
-NPP_WriteReady(NPP instance, NPStream * stream)
-{
- return 0;
-}
-
-int32_t
-NPP_Write(NPP instance, NPStream * stream, int32_t offset, int32_t len,
- void *buffer)
-{
- return 0;
-}
-
-void
-NPP_StreamAsFile(NPP instance, NPStream * stream, const char *fname)
-{
-
-}
-
-void
-NPP_Print(NPP instance, NPPrint * platformPrint)
-{
-
-}
-
-int16_t
-NPP_HandleEvent(NPP instance, void *event)
-{
-
-
- return 0;
-
-#if 0
- InstanceData *instanceData = (InstanceData *) (instance->pdata);
- XEvent *nativeEvent = (XEvent *) event;
-
- if (nativeEvent->type != GraphicsExpose)
- return 0;
-
- XGraphicsExposeEvent *expose = &nativeEvent->xgraphicsexpose;
- instanceData->window.window = (void *) (expose->drawable);
-
- GdkNativeWindow nativeWinId = (XID) (instanceData->window.window);
- GdkDrawable *gdkWindow =
- GDK_DRAWABLE(gdk_window_foreign_new(nativeWinId));
- drawWindow(instanceData, gdkWindow);
- g_object_unref(gdkWindow);
-#endif
-
- return 1;
-}
-
-void
-NPP_URLNotify(NPP instance, const char *URL, NPReason reason,
- void *notifyData)
-{
-
-}
-
-struct NavitObject {
- NPClass *class;
- uint32_t referenceCount;
- InstanceData *instanceData;
- int is_attr;
- struct attr attr;
-};
-
-void
-printIdentifier(NPIdentifier name)
-{
- NPUTF8 *str;
- str = sBrowserFuncs->utf8fromidentifier(name);
- fprintf(stderr, "%s\n", str);
- sBrowserFuncs->memfree(str);
-}
-
-NPObject *
-allocate(NPP npp, NPClass * aClass)
-{
- struct NavitObject *ret = calloc(sizeof(struct NavitObject), 1);
- if (ret) {
- ret->class = aClass;
- ret->instanceData = npp->pdata;
- fprintf(stderr, "instanceData for %p is %p\n", ret,
- ret->instanceData);
- }
- return (NPObject *) ret;
-}
-
-
-void
-invalidate(NPObject * npobj)
-{
- fprintf(stderr, "invalidate\n");
-}
-
-
-bool
-hasMethod(NPObject * npobj, NPIdentifier name)
-{
- fprintf(stderr, "hasMethod\n");
- printIdentifier(name);
- if (name == sBrowserFuncs->getstringidentifier("command"))
- return true;
- if (name == sBrowserFuncs->getstringidentifier("get_attr"))
- return true;
- if (name == sBrowserFuncs->getstringidentifier("toString"))
- return true;
- if (name == sBrowserFuncs->getstringidentifier("nativeMethod"))
- return true;
- if (name ==
- sBrowserFuncs->getstringidentifier("anotherNativeMethod"))
- return true;
-
- return false;
-}
-
-enum attr_type
-variant_to_attr_type(const NPVariant *variant)
-{
- if (NPVARIANT_IS_STRING(*variant))
- return attr_from_name(NPVARIANT_TO_STRING(*variant).utf8characters);
- return attr_none;
-}
-
-
-
-bool
-invoke(NPObject * npobj, NPIdentifier name, const NPVariant * args,
- uint32_t argCount, NPVariant * result)
-{
- struct NavitObject *obj = (struct NavitObject *) npobj;
- fprintf(stderr, "invoke\n");
- printIdentifier(name);
- if (name == sBrowserFuncs->getstringidentifier("get_attr")) {
- enum attr_type attr_type;
- struct attr attr;
- if (!argCount)
- return false;
- attr_type=variant_to_attr_type(&args[0]);
- if (attr_type == attr_none)
- return false;
- if (config_get_attr(config, attr_type, &attr, NULL)) {
- struct NavitObject *obj2 = (struct NavitObject *)sBrowserFuncs->createobject(obj->instanceData->npp, &navitclass);
- obj2->is_attr=1;
- obj2->attr=attr;
- OBJECT_TO_NPVARIANT((NPObject *)obj2, *result);
- return true;
- } else {
- VOID_TO_NPVARIANT(*result);
- return true;
- }
- }
- if (name == sBrowserFuncs->getstringidentifier("command")) {
- enum attr_type attr_type;
- struct attr attr;
- NPObject *window;
- NPError err;
- NPVariant value;
- if (!argCount || !NPVARIANT_IS_STRING(args[0]))
- return false;
- if (navit_get_attr(obj->attr.u.navit, attr_callback_list, &attr, NULL)) {
- int valid=0;
- callback_list_call_attr_4(attr.u.callback_list, attr_command, NPVARIANT_TO_STRING(args[0]), NULL, NULL, &valid);
- }
- err=sBrowserFuncs->getvalue(obj->instanceData->npp, NPNVWindowNPObject, (void *) &window);
- fprintf(stderr,"error1:%d\n",err);
- //OBJECT_TO_NPVARIANT(window, *result);
- err=sBrowserFuncs->invoke(obj->instanceData->npp, window, sBrowserFuncs->getstringidentifier("Array"), window, 0, result);
- fprintf(stderr,"error2:%d\n",err);
- INT32_TO_NPVARIANT(23, value);
- err=sBrowserFuncs->setproperty(obj->instanceData->npp, NPVARIANT_TO_OBJECT(*result), sBrowserFuncs->getintidentifier(0), &value);
- INT32_TO_NPVARIANT(42, value);
- err=sBrowserFuncs->setproperty(obj->instanceData->npp, NPVARIANT_TO_OBJECT(*result), sBrowserFuncs->getintidentifier(1), &value);
- fprintf(stderr,"error3:%d\n",err);
-
-
- //VOID_TO_NPVARIANT(*result);
- return true;
- }
- if (name == sBrowserFuncs->getstringidentifier("toString")) {
- char *s;
- if (obj->is_attr) {
- s="[NavitObject attribute]";
- STRINGZ_TO_NPVARIANT(strdup(s), *result);
- return true;
- }
- s=g_strdup_printf("[NavitObject %s]",attr_to_name(obj->attr.type));
- STRINGZ_TO_NPVARIANT(strdup(s), *result);
- g_free(s);
- return true;
- }
- if (name == sBrowserFuncs->getstringidentifier("nativeMethod")) {
- result->type = NPVariantType_Int32;
- result->value.intValue = 23;
- return true;
- }
- if (name ==
- sBrowserFuncs->getstringidentifier("anotherNativeMethod")) {
- result->type = NPVariantType_Int32;
- result->value.intValue = 42;
- return true;
- }
- return false;
-}
-
-
-bool
-invokeDefault(NPObject * npobj, const NPVariant * args, uint32_t argCount,
- NPVariant * result)
-{
- fprintf(stderr, "invokeDefault\n");
- return false;
-}
-
-
-bool
-hasProperty(NPObject * npobj, NPIdentifier name)
-{
- struct NavitObject *obj = (struct NavitObject *) npobj;
- fprintf(stderr, "hasProperty\n");
- printIdentifier(name);
- if (obj->is_attr && name == sBrowserFuncs->getstringidentifier("type"))
- return true;
- if (obj->is_attr && name == sBrowserFuncs->getstringidentifier("val"))
- return true;
- if (name == sBrowserFuncs->getstringidentifier("nativeProperty")) {
- return true;
- }
- return false;
-}
-
-
-bool
-getProperty(NPObject * npobj, NPIdentifier name, NPVariant * result)
-{
- struct NavitObject *obj = (struct NavitObject *) npobj;
- fprintf(stderr, "getProperty %p\n", obj);
- fprintf(stderr, "instanceData %p\n", obj->instanceData);
- if (obj->is_attr && name == sBrowserFuncs->getstringidentifier("type")) {
- STRINGZ_TO_NPVARIANT(strdup(attr_to_name(obj->attr.type)), *result);
- return true;
- }
- if (obj->is_attr && name == sBrowserFuncs->getstringidentifier("val")) {
- struct NavitObject *obj2 = (struct NavitObject *)sBrowserFuncs->createobject(obj->instanceData->npp, &navitclass);
- obj2->attr=obj->attr;
- OBJECT_TO_NPVARIANT((NPObject *)obj2, *result);
- return true;
- }
- if (name == sBrowserFuncs->getstringidentifier("nativeProperty")) {
- result->type = NPVariantType_Object;
- fprintf(stderr, "npp=%p\n", obj->instanceData->npp);
- result->value.objectValue = sBrowserFuncs->createobject(obj->instanceData->npp, &navitclass2);
- return true;
- }
- return false;
-}
-
-
-bool
-setProperty(NPObject * npobj, NPIdentifier name, const NPVariant * value)
-{
- fprintf(stderr, "setProperty\n");
- return false;
-}
-
-
-bool
-removeProperty(NPObject * npobj, NPIdentifier name)
-{
- fprintf(stderr, "removeProperty\n");
- return false;
-}
-
-
-
-
-
-struct NPClass navitclass = {
- 1,
- allocate,
- NULL, /* deallocate */
- invalidate,
- hasMethod,
- invoke,
- invokeDefault,
- hasProperty,
- getProperty,
- setProperty,
- removeProperty,
-};
-
-struct NPClass navitclass2 = {
- 1,
- allocate, /* allocate */
- NULL, /* deallocate */
- invalidate,
- hasMethod,
- invoke,
- invokeDefault,
- hasProperty,
- getProperty,
- setProperty,
- removeProperty,
-};
-
-
-NPError
-NPP_GetValue(NPP instance, NPPVariable variable, void *value)
-{
- fprintf(stderr, "NPP_GetValue %d %d\n", variable,
- NPPVpluginScriptableNPObject);
- if (variable == NPPVpluginNeedsXEmbed) {
- *((NPBool *) value) = true;
- fprintf(stderr, "Xembedd\n");
- return NPERR_NO_ERROR;
- }
-
- if (variable == NPPVpluginScriptableNPObject) {
- *(NPObject **) value =
- sBrowserFuncs->createobject(instance, &navitclass);
- return NPERR_NO_ERROR;
- }
- return NPERR_GENERIC_ERROR;
-}
-
-NPError
-NPP_SetValue(NPP instance, NPNVariable variable, void *value)
-{
- return NPERR_GENERIC_ERROR;
-}
diff --git a/navit/builtin.c.in b/navit/builtin.c.in
deleted file mode 100644
index d340d174b..000000000
--- a/navit/builtin.c.in
+++ /dev/null
@@ -1,5 +0,0 @@
-${MODULES_PROTOTYPE};
-extern void builtin_init(void);
-void builtin_init(void) {
- ${MODULES_FUNC};
-}
diff --git a/navit/cache.c b/navit/cache.c
deleted file mode 100644
index 180b165c0..000000000
--- a/navit/cache.c
+++ /dev/null
@@ -1,401 +0,0 @@
-#include "glib_slice.h"
-#ifdef DEBUG_CACHE
-#include <stdio.h>
-#endif
-#include <string.h>
-#include "debug.h"
-#include "cache.h"
-
-struct cache_entry {
- int usage;
- unsigned int size;
- struct cache_entry_list *where;
- struct cache_entry *next;
- struct cache_entry *prev;
- int id[0];
-};
-
-struct cache_entry_list {
- struct cache_entry *first, *last;
- int size;
-};
-
-struct cache {
- struct cache_entry_list t1,b1,t2,b2,*insert;
- int size,id_size,entry_size;
- int t1_target;
- unsigned int misses;
- unsigned int hits;
- GHashTable *hash;
-};
-
-static void
-cache_entry_dump(struct cache *cache, struct cache_entry *entry)
-{
- int i,size;
- dbg(lvl_debug,"Usage: %d size %d\n",entry->usage, entry->size);
- if (cache)
- size=cache->id_size;
- else
- size=5;
- for (i = 0 ; i < size ; i++) {
- dbg(lvl_debug,"0x%x\n", entry->id[i]);
- }
-}
-
-static void
-cache_list_dump(char *str, struct cache *cache, struct cache_entry_list *list)
-{
- struct cache_entry *first=list->first;
- dbg(lvl_debug,"dump %s %d\n",str, list->size);
- while (first) {
- cache_entry_dump(cache, first);
- first=first->next;
- }
-}
-
-static guint
-cache_hash4(gconstpointer key)
-{
- int *id=(int *)key;
- return id[0];
-}
-
-static guint
-cache_hash20(gconstpointer key)
-{
- int *id=(int *)key;
- return id[0]^id[1]^id[2]^id[3]^id[4];
-}
-
-static gboolean
-cache_equal4(gconstpointer a, gconstpointer b)
-{
- int *ida=(int *)a;
- int *idb=(int *)b;
-
- return ida[0] == idb[0];
-}
-
-static gboolean
-cache_equal20(gconstpointer a, gconstpointer b)
-{
- int *ida=(int *)a;
- int *idb=(int *)b;
-
- return(ida[0] == idb[0] &&
- ida[1] == idb[1] &&
- ida[2] == idb[2] &&
- ida[3] == idb[3] &&
- ida[4] == idb[4]);
-}
-
-struct cache *
-cache_new(int id_size, int size)
-{
- struct cache *cache=g_new0(struct cache, 1);
-
- cache->id_size=id_size/4;
- cache->entry_size=cache->id_size*sizeof(int)+sizeof(struct cache_entry);
- cache->size=size;
- switch (id_size) {
- case 4:
- cache->hash=g_hash_table_new(cache_hash4, cache_equal4);
- break;
- case 20:
- cache->hash=g_hash_table_new(cache_hash20, cache_equal20);
- break;
- default:
- dbg(lvl_error,"cache with id_size of %d not supported\n", id_size);
- g_free(cache);
- cache=NULL;
- }
- return cache;
-}
-
-void
-cache_resize(struct cache *cache, int size)
-{
- cache->size=size;
-}
-
-static void
-cache_insert_mru(struct cache *cache, struct cache_entry_list *list, struct cache_entry *entry)
-{
- entry->prev=NULL;
- entry->next=list->first;
- entry->where=list;
- if (entry->next)
- entry->next->prev=entry;
- list->first=entry;
- if (! list->last)
- list->last=entry;
- list->size+=entry->size;
- if (cache)
- g_hash_table_insert(cache->hash, (gpointer)entry->id, entry);
-}
-
-static void
-cache_remove_from_list(struct cache_entry_list *list, struct cache_entry *entry)
-{
- if (entry->prev)
- entry->prev->next=entry->next;
- else
- list->first=entry->next;
- if (entry->next)
- entry->next->prev=entry->prev;
- else
- list->last=entry->prev;
- list->size-=entry->size;
-}
-
-static void
-cache_remove(struct cache *cache, struct cache_entry *entry)
-{
- dbg(lvl_debug,"remove 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]);
- g_hash_table_remove(cache->hash, (gpointer)(entry->id));
- g_slice_free1(entry->size, entry);
-}
-
-static struct cache_entry *
-cache_remove_lru_helper(struct cache_entry_list *list)
-{
- struct cache_entry *last=list->last;
- if (! last)
- return NULL;
- list->last=last->prev;
- if (last->prev)
- last->prev->next=NULL;
- else
- list->first=NULL;
- list->size-=last->size;
- return last;
-}
-
-static struct cache_entry *
-cache_remove_lru(struct cache *cache, struct cache_entry_list *list)
-{
- struct cache_entry *last;
- int seen=0;
- while (list->last && list->last->usage && seen < list->size) {
- last=cache_remove_lru_helper(list);
- cache_insert_mru(NULL, list, last);
- seen+=last->size;
- }
- last=list->last;
- if (! last || last->usage || seen >= list->size)
- return NULL;
- dbg(lvl_debug,"removing %d\n", last->id[0]);
- cache_remove_lru_helper(list);
- if (cache) {
- cache_remove(cache, last);
- return NULL;
- }
- return last;
-}
-
-void *
-cache_entry_new(struct cache *cache, void *id, int size)
-{
- struct cache_entry *ret;
- size+=cache->entry_size;
- cache->misses+=size;
- ret=(struct cache_entry *)g_slice_alloc0(size);
- ret->size=size;
- ret->usage=1;
- memcpy(ret->id, id, cache->id_size*sizeof(int));
- return &ret->id[cache->id_size];
-}
-
-void
-cache_entry_destroy(struct cache *cache, void *data)
-{
- struct cache_entry *entry=(struct cache_entry *)((char *)data-cache->entry_size);
- dbg(lvl_debug,"destroy 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]);
- entry->usage--;
-}
-
-static struct cache_entry *
-cache_trim(struct cache *cache, struct cache_entry *entry)
-{
- struct cache_entry *new_entry;
- dbg(lvl_debug,"trim 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]);
- dbg(lvl_debug,"Trim %x from %d -> %d\n", entry->id[0], entry->size, cache->size);
- if ( cache->entry_size < entry->size )
- {
- g_hash_table_remove(cache->hash, (gpointer)(entry->id));
-
- new_entry = g_slice_alloc0(cache->entry_size);
- memcpy(new_entry, entry, cache->entry_size);
- g_slice_free1( entry->size, entry);
- new_entry->size = cache->entry_size;
-
- g_hash_table_insert(cache->hash, (gpointer)new_entry->id, new_entry);
- }
- else
- {
- new_entry = entry;
- }
-
- return new_entry;
-}
-
-static struct cache_entry *
-cache_move(struct cache *cache, struct cache_entry_list *old, struct cache_entry_list *new)
-{
- struct cache_entry *entry;
- entry=cache_remove_lru(NULL, old);
- if (! entry)
- return NULL;
- entry=cache_trim(cache, entry);
- cache_insert_mru(NULL, new, entry);
- return entry;
-}
-
-static int
-cache_replace(struct cache *cache)
-{
- if (cache->t1.size >= MAX(1,cache->t1_target)) {
- dbg(lvl_debug,"replace 12\n");
- if (!cache_move(cache, &cache->t1, &cache->b1))
- cache_move(cache, &cache->t2, &cache->b2);
- } else {
- dbg(lvl_debug,"replace t2\n");
- if (!cache_move(cache, &cache->t2, &cache->b2))
- cache_move(cache, &cache->t1, &cache->b1);
- }
-#if 0
- if (! entry) {
- cache_dump(cache);
- exit(0);
- }
-#endif
- return 1;
-}
-
-void
-cache_flush(struct cache *cache, void *id)
-{
- struct cache_entry *entry=g_hash_table_lookup(cache->hash, id);
- if (entry) {
- cache_remove_from_list(entry->where, entry);
- cache_remove(cache, entry);
- }
-}
-
-void
-cache_flush_data(struct cache *cache, void *data)
-{
- struct cache_entry *entry=(struct cache_entry *)((char *)data-cache->entry_size);
- if (entry) {
- cache_remove_from_list(entry->where, entry);
- cache_remove(cache, entry);
- }
-}
-
-
-void *
-cache_lookup(struct cache *cache, void *id) {
- struct cache_entry *entry;
-
- dbg(lvl_debug,"get %d\n", ((int *)id)[0]);
- entry=g_hash_table_lookup(cache->hash, id);
- if (entry == NULL) {
- cache->insert=&cache->t1;
-#ifdef DEBUG_CACHE
- fprintf(stderr,"-");
-#endif
- dbg(lvl_debug,"not in cache\n");
- return NULL;
- }
- dbg(lvl_debug,"found 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]);
- if (entry->where == &cache->t1 || entry->where == &cache->t2) {
- cache->hits+=entry->size;
-#ifdef DEBUG_CACHE
- if (entry->where == &cache->t1)
- fprintf(stderr,"h");
- else
- fprintf(stderr,"H");
-#endif
- dbg(lvl_debug,"in cache %s\n", entry->where == &cache->t1 ? "T1" : "T2");
- cache_remove_from_list(entry->where, entry);
- cache_insert_mru(NULL, &cache->t2, entry);
- entry->usage++;
- return &entry->id[cache->id_size];
- } else {
- if (entry->where == &cache->b1) {
-#ifdef DEBUG_CACHE
- fprintf(stderr,"m");
-#endif
- dbg(lvl_debug,"in phantom cache B1\n");
- cache->t1_target=MIN(cache->t1_target+MAX(cache->b2.size/cache->b1.size, 1),cache->size);
- cache_remove_from_list(&cache->b1, entry);
- } else if (entry->where == &cache->b2) {
-#ifdef DEBUG_CACHE
- fprintf(stderr,"M");
-#endif
- dbg(lvl_debug,"in phantom cache B2\n");
- cache->t1_target=MAX(cache->t1_target-MAX(cache->b1.size/cache->b2.size, 1),0);
- cache_remove_from_list(&cache->b2, entry);
- } else {
- dbg(lvl_error,"**ERROR** invalid where\n");
- }
- cache_replace(cache);
- cache_remove(cache, entry);
- cache->insert=&cache->t2;
- return NULL;
- }
-}
-
-void
-cache_insert(struct cache *cache, void *data)
-{
- struct cache_entry *entry=(struct cache_entry *)((char *)data-cache->entry_size);
- dbg(lvl_debug,"insert 0x%x 0x%x 0x%x 0x%x 0x%x\n", entry->id[0], entry->id[1], entry->id[2], entry->id[3], entry->id[4]);
- if (cache->insert == &cache->t1) {
- if (cache->t1.size + cache->b1.size >= cache->size) {
- if (cache->t1.size < cache->size) {
- cache_remove_lru(cache, &cache->b1);
- cache_replace(cache);
- } else {
- cache_remove_lru(cache, &cache->t1);
- }
- } else {
- if (cache->t1.size + cache->t2.size + cache->b1.size + cache->b2.size >= cache->size) {
- if (cache->t1.size + cache->t2.size + cache->b1.size + cache->b2.size >= 2*cache->size)
- cache_remove_lru(cache, &cache->b2);
- cache_replace(cache);
- }
- }
- }
- cache_insert_mru(cache, cache->insert, entry);
-}
-
-void *
-cache_insert_new(struct cache *cache, void *id, int size)
-{
- void *data=cache_entry_new(cache, id, size);
- cache_insert(cache, data);
- return data;
-}
-
-static void
-cache_stats(struct cache *cache)
-{
- dbg(lvl_debug,"hits %d misses %d hitratio %d size %d entry_size %d id_size %d T1 target %d\n", cache->hits, cache->misses, cache->hits*100/(cache->hits+cache->misses), cache->size, cache->entry_size, cache->id_size, cache->t1_target);
- dbg(lvl_debug,"T1:%d B1:%d T2:%d B2:%d\n", cache->t1.size, cache->b1.size, cache->t2.size, cache->b2.size);
- cache->hits=0;
- cache->misses=0;
-}
-
-void
-cache_dump(struct cache *cache)
-{
- cache_stats(cache);
- cache_list_dump("T1", cache, &cache->t1);
- cache_list_dump("B1", cache, &cache->b1);
- cache_list_dump("T2", cache, &cache->t2);
- cache_list_dump("B2", cache, &cache->b2);
- dbg(lvl_debug,"dump end\n");
-}
-
diff --git a/navit/cache.h b/navit/cache.h
deleted file mode 100644
index b3f5adb09..000000000
--- a/navit/cache.h
+++ /dev/null
@@ -1,14 +0,0 @@
-struct cache_entry;
-struct cache;
-/* prototypes */
-struct cache *cache_new(int id_size, int size);
-void cache_resize(struct cache *cache, int size);
-void *cache_entry_new(struct cache *cache, void *id, int size);
-void cache_entry_destroy(struct cache *cache, void *data);
-void *cache_lookup(struct cache *cache, void *id);
-void cache_insert(struct cache *cache, void *data);
-void *cache_insert_new(struct cache *cache, void *id, int size);
-void cache_flush(struct cache *cache, void *id);
-void cache_dump(struct cache *cache);
-void cache_flush_data(struct cache *cache, void *data);
-/* end of prototypes */
diff --git a/navit/callback.c b/navit/callback.c
deleted file mode 100644
index 293fab0af..000000000
--- a/navit/callback.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/**
- * 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 <string.h>
-#include "item.h"
-#include "debug.h"
-#include "callback.h"
-
-struct callback {
- /* func has variable number of arguments, not (void),
- * but we must declare something... */
- void (*func)(void);
- int pcount;
- enum attr_type type;
- void *p[0];
-
-};
-
-struct callback_list {
- GList *list;
-};
-
-struct callback_list *
-callback_list_new(void)
-{
- struct callback_list *ret=g_new0(struct callback_list, 1);
-
- return ret;
-}
-
-struct callback *
-callback_new_attr(void (*func)(void), enum attr_type type, int pcount, void **p)
-{
- struct callback *ret;
- int i;
-
- ret=g_malloc0(sizeof(struct callback)+pcount*sizeof(void *));
- ret->func=func;
- ret->pcount=pcount;
- ret->type=type;
- for (i = 0 ; i < pcount ; i++) {
- ret->p[i]=p[i];
- }
- return ret;
-}
-
-struct callback *
-callback_new_attr_args(void (*func)(void), enum attr_type type, int count, ...)
-{
- int i;
- void **p=g_alloca(sizeof(void*)*count);
- va_list ap;
- va_start(ap, count);
- for (i = 0 ; i < count ; i++)
- p[i]=va_arg(ap, void *);
- va_end(ap);
- return callback_new_attr(func, type, count, p);
-}
-
-struct callback *
-callback_new(void (*func)(void), int pcount, void **p)
-{
- return callback_new_attr(func, attr_none, pcount, p);
-}
-
-struct callback *
-callback_new_args(void (*func)(void), int count, ...)
-{
- int i;
- void **p=g_alloca(sizeof(void*)*count);
- va_list ap;
- va_start(ap, count);
- for (i = 0 ; i < count ; i++)
- p[i]=va_arg(ap, void *);
- va_end(ap);
- return callback_new(func, count, p);
-}
-
-void
-callback_destroy(struct callback *cb)
-{
- g_free(cb);
-}
-
-void
-callback_set_arg(struct callback *cb, int arg, void *p)
-{
- if (arg < 0 || arg > cb->pcount)
- return;
- cb->p[arg]=p;
-}
-
-void
-callback_list_add(struct callback_list *l, struct callback *cb)
-{
- l->list=g_list_prepend(l->list, cb);
-}
-
-
-struct callback *
-callback_list_add_new(struct callback_list *l, void (*func)(void), int pcount, void **p)
-{
- struct callback *ret;
-
- ret=callback_new(func, pcount, p);
- callback_list_add(l, ret);
- return ret;
-}
-
-void
-callback_list_remove(struct callback_list *l, struct callback *cb)
-{
- l->list=g_list_remove(l->list, cb);
-}
-
-void
-callback_list_remove_destroy(struct callback_list *l, struct callback *cb)
-{
- callback_list_remove(l, cb);
- g_free(cb);
-}
-
-void
-callback_call(struct callback *cb, int pcount, void **p)
-{
- int i;
- void *pf[8];
- if (! cb)
- return;
- if (cb->pcount + pcount <= 8) {
- dbg(lvl_debug,"cb->pcount=%d\n", cb->pcount);
- if (cb->pcount && cb->p)
- dbg(lvl_debug,"cb->p[0]=%p\n", cb->p[0]);
- dbg(lvl_debug,"pcount=%d\n", pcount);
- if (pcount) {
- dbg_assert(p!=NULL);
- dbg(lvl_debug,"p[0]=%p\n", p[0]);
- }
- for (i = 0 ; i < cb->pcount ; i++)
- pf[i]=cb->p[i];
- for (i = 0 ; i < pcount ; i++)
- pf[i+cb->pcount]=p[i];
- switch (cb->pcount+pcount) {
- case 8:
- ((int (*)(void*,void*,void*,void*,void*,void*,void*,void*))cb->func)(
- pf[0],pf[1],pf[2],pf[3],pf[4],pf[5],pf[6],pf[7]);
- break;
- case 7:
- ((int (*)(void*,void*,void*,void*,void*,void*,void*))cb->func)(
- pf[0],pf[1],pf[2],pf[3],pf[4],pf[5],pf[6]);
- break;
- case 6:
- ((int (*)(void*,void*,void*,void*,void*,void*))cb->func)(
- pf[0],pf[1],pf[2],pf[3],pf[4],pf[5]);
- break;
- case 5:
- ((int (*)(void*,void*,void*,void*,void*))cb->func)(
- pf[0],pf[1],pf[2],pf[3],pf[4]);
- break;
- case 4:
- ((int (*)(void*,void*,void*,void*))cb->func)(
- pf[0],pf[1],pf[2],pf[3]);
- break;
- case 3:
- ((int (*)(void*,void*,void*))cb->func)(
- pf[0],pf[1],pf[2]);
- break;
- case 2:
- ((int (*)(void*,void*))cb->func)(
- pf[0],pf[1]);
- break;
- case 1:
- ((int (*)(void*))cb->func)(
- pf[0]);
- break;
- case 0:
- cb->func();
- break;
- }
- } else {
- dbg(lvl_error,"too many parameters for callback (%d+%d)\n", cb->pcount, pcount);
- }
-}
-
-void
-callback_call_args(struct callback *cb, int count, ...)
-{
- int i;
- void **p=g_alloca(sizeof(void*)*count);
- va_list ap;
- va_start(ap, count);
- for (i = 0 ; i < count ; i++)
- p[i]=va_arg(ap, void *);
- va_end(ap);
- callback_call(cb, count, p);
-}
-
-void
-callback_list_call_attr(struct callback_list *l, enum attr_type type, int pcount, void **p)
-{
- GList *cbi;
- struct callback *cb;
-
- if (!l) {
- return;
- }
-
- cbi=l->list;
- while (cbi) {
- cb=cbi->data;
- if (type == attr_any || cb->type == attr_any || cb->type == type)
- callback_call(cb, pcount, p);
- cbi=g_list_next(cbi);
- }
-
-}
-
-void
-callback_list_call_attr_args(struct callback_list *cbl, enum attr_type type, int count, ...)
-{
- int i;
- void **p=g_alloca(sizeof(void*)*count);
- va_list ap;
- va_start(ap, count);
- for (i = 0 ; i < count ; i++)
- p[i]=va_arg(ap, void *);
- va_end(ap);
- callback_list_call_attr(cbl, type, count, p);
-}
-
-void
-callback_list_call(struct callback_list *l, int pcount, void **p)
-{
- callback_list_call_attr(l, attr_any, pcount, p);
-}
-
-void
-callback_list_call_args(struct callback_list *cbl, int count, ...)
-{
- int i;
- void **p=g_alloca(sizeof(void*)*count);
- va_list ap;
- va_start(ap, count);
- for (i = 0 ; i < count ; i++)
- p[i]=va_arg(ap, void *);
- va_end(ap);
- callback_list_call(cbl, count, p);
-}
-
-void
-callback_list_destroy(struct callback_list *l)
-{
- GList *cbi;
- cbi=l->list;
- while (cbi) {
- g_free(cbi->data);
- cbi=g_list_next(cbi);
- }
- g_list_free(l->list);
- g_free(l);
-}
diff --git a/navit/callback.h b/navit/callback.h
deleted file mode 100644
index b0f4b9f81..000000000
--- a/navit/callback.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_CALLBACK_H
-#define NAVIT_CALLBACK_H
-
-#include "item.h"
-#include "attr.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-/* prototypes */
-enum attr_type;
-struct callback;
-struct callback_list;
-struct callback_list *callback_list_new(void);
-struct callback *callback_new_attr(void (*func)(void), enum attr_type type, int pcount, void **p);
-struct callback *callback_new_attr_args(void (*func)(void), enum attr_type type, int count, ...);
-struct callback *callback_new(void (*func)(void), int pcount, void **p);
-struct callback *callback_new_args(void (*func)(void), int count, ...);
-void callback_destroy(struct callback *cb);
-void callback_set_arg(struct callback *cb, int arg, void *p);
-void callback_list_add(struct callback_list *l, struct callback *cb);
-struct callback *callback_list_add_new(struct callback_list *l, void (*func)(void), int pcount, void **p);
-void callback_list_remove(struct callback_list *l, struct callback *cb);
-void callback_list_remove_destroy(struct callback_list *l, struct callback *cb);
-void callback_call(struct callback *cb, int pcount, void **p);
-void callback_call_args(struct callback *cb, int count, ...);
-void callback_list_call_attr(struct callback_list *l, enum attr_type type, int pcount, void **p);
-void callback_list_call_attr_args(struct callback_list *cbl, enum attr_type type, int count, ...);
-void callback_list_call(struct callback_list *l, int pcount, void **p);
-void callback_list_call_args(struct callback_list *cbl, int count, ...);
-void callback_list_destroy(struct callback_list *l);
-/* end of prototypes */
-
-#define callback_new_0(func) callback_new_args(func, 0)
-#define callback_new_1(func,p1) callback_new_args(func, 1, p1)
-#define callback_new_2(func,p1,p2) callback_new_args(func, 2, p1, p2)
-#define callback_new_3(func,p1,p2,p3) callback_new_args(func, 3, p1, p2, p3)
-#define callback_new_4(func,p1,p2,p3,p4) callback_new_args(func, 4, p1, p2, p3, p4)
-
-#define callback_new_attr_0(func,type) callback_new_attr_args(func, type, 0)
-#define callback_new_attr_1(func,type,p1) callback_new_attr_args(func, type, 1, p1)
-#define callback_new_attr_2(func,type,p1,p2) callback_new_attr_args(func, type, 2, p1, p2)
-#define callback_new_attr_3(func,type,p1,p2,p3) callback_new_attr_args(func, type, 3, p1, p2, p3)
-#define callback_new_attr_4(func,type,p1,p2,p3,p4) callback_new_attr_args(func, type, 4, p1, p2, p3, p4)
-
-#define callback_call_0(cb) callback_call_args(cb, 0)
-#define callback_call_1(cb,p1) callback_call_args(cb, 1, p1)
-#define callback_call_2(cb,p1,p2) callback_call_args(cb, 2, p1, p2)
-#define callback_call_3(cb,p1,p2,p3) callback_call_args(cb, 3, p1, p2, p3)
-#define callback_call_4(cb,p1,p2,p3,p4) callback_call_args(cb, 4, p1, p2, p3, p4)
-
-#define callback_list_call_0(cbl) callback_list_call_args(cbl, 0)
-#define callback_list_call_1(cbl,p1) callback_list_call_args(cbl, 1, p1)
-#define callback_list_call_2(cbl,p1,p2) callback_list_call_args(cbl, 2, p1, p2)
-#define callback_list_call_3(cbl,p1,p2,p3) callback_list_call_args(cbl, 3, p1, p2, p3)
-#define callback_list_call_4(cbl,p1,p2,p3,p4) callback_list_call_args(cbl, 4, p1, p2, p3, p4)
-
-#define callback_list_call_attr_0(cbl,type) callback_list_call_attr_args(cbl,type, 0)
-#define callback_list_call_attr_1(cbl,type,p1) callback_list_call_attr_args(cbl, type, 1, p1)
-#define callback_list_call_attr_2(cbl,type,p1,p2) callback_list_call_attr_args(cbl, type, 2, p1, p2)
-#define callback_list_call_attr_3(cbl,type,p1,p2,p3) callback_list_call_attr_args(cbl, type, 3, p1, p2, p3)
-#define callback_list_call_attr_4(cbl,type,p1,p2,p3,p4) callback_list_call_attr_args(cbl, type, 4, p1, p2, p3, p4)
-
-#define callback_cast(x) (void (*)(void))(x)
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/navit/color.h b/navit/color.h
deleted file mode 100644
index dee10a187..000000000
--- a/navit/color.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_COLOR_H
-#define NAVIT_COLOR_H
-
-struct color {
- int r,g,b,a;
-};
-
-#define COLOR_BITDEPTH 16
-#define COLOR_WHITE_ 0xffff,0xffff,0xffff,0xffff
-#define COLOR_BLACK_ 0x0000,0x0000,0x0000,0xffff
-#define COLOR_BACKGROUND_ 0xffff, 0xefef, 0xb7b7, 0xffff
-#define COLOR_TRANSPARENT__ 0x0000,0x0000,0x0000,0xffff
-#define COLOR_WHITE ((struct color) {COLOR_WHITE_})
-#define COLOR_BLACK ((struct color) {COLOR_BLACK_})
-#define COLOR_TRANSPARENT ((struct color) {COLOR_TRANSPARENT_})
-#define COLOR_FMT "0x%x,0x%x,0x%x,0x%x"
-#define COLOR_ARGS(c) (c).r,(c).g,(c).b,(c).a
-
-#define COLOR_IS_SAME(c1,c2) ((c1).r==(c2).r && (c1).g==(c2).g && (c1).b==(c2).b && (c1).a==(c2).a)
-#define COLOR_IS_WHITE(c) COLOR_IS_SAME(c, COLOR_WHITE)
-#define COLOR_IS_BLACK(c) COLOR_IS_SAME(c, COLOR_BLACK)
-
-#endif
diff --git a/navit/command.c b/navit/command.c
deleted file mode 100644
index 4208c575c..000000000
--- a/navit/command.c
+++ /dev/null
@@ -1,1892 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <glib.h>
-#include "item.h"
-#include "xmlconfig.h"
-#include "main.h"
-#include "navit.h"
-#include "vehicle.h"
-#include "speech.h"
-#include "gui.h"
-#include "debug.h"
-#include "callback.h"
-#include "command.h"
-#include "event.h"
-#include "navit_nls.h"
-
-/*
-gui.fullscreen=!gui.fullscreen
-gui.menu()
-gui.get_data()
-zoom_in()
-zoom_out()
-speech.active=!speech.active
-osd_configuration=1
-osd[@type=="xxx"].active=0;osd[@type=="yyy"].active=0
-*/
-
-
-/**
- * The result, or interim result, of evaluating a saved command.
- */
-struct result {
- struct attr attr; /**< The attribute. If {@code allocated} is true, it stores an object that was
- * successfully retrieved. Else it is either a placeholder or a constant value.
- */
- double val;
- const char *var; /**< If {@code allocated} is false, the name of the object to be resolved.
- * Else, it is the name of the object successfully retrieved and stored in
- * {@code attr}, or {@code NULL} if retrieval failed.
- * Only the first {@code varlen} characters are significant.
- */
- int varlen; /**< Number of significant characters in {@code var} */
- const char *attrn; /**< The name of an object that has been resolved but not yet retrieved,
- * {@code NULL} otherwise. Only the first {@code attrnlen} characters are
- * significant.
- */
- int attrnlen; /**< Number of significant characters in {@code attrn} */
- int allocated; /**< Whether the result has been calculated */
-};
-
-struct result_list {
- struct attr **attrs;
-};
-
-struct context {
- struct attr *attr;
- int error;
- int skip;
- const char *expr;
- struct result res;
-};
-
-/**
- * Information about a callback function for a saved command.
- */
-struct command_saved_cb {
- struct callback *cb; /**< The callback function */
- struct attr attr;
-};
-
-/**
- * A saved command.
- */
-struct command_saved {
- struct context ctx;
- struct result res;
- char *command; /**< The command string itself **/
- struct event_idle *idle_ev; /**< Event to update this command **/
- struct callback *idle_cb;
- struct callback *register_cb; /**< Callback to register all the callbacks **/
- struct event_idle *register_ev; /**< Idle event to register all the callbacks **/
- struct attr context_attr; /**< The root of the object hierarchy, which will be assumed as
- * the parent of all unqualified or partially qualified object
- * references. **/
- int num_cbs; /**< Number of entries in {@code cbs} **/
- struct command_saved_cb *cbs; /**< List of callbacks for this saved command **/
- struct callback *cb; /**< Callback that should be called when we re-evaluate **/
- int error;
- int async;
-};
-
-enum error {
- no_error=0, missing_double_quote, missing_opening_parenthesis, missing_closing_parenthesis, missing_closing_brace, missing_colon, missing_semicolon, wrong_type, illegal_number_format, illegal_character, missing_closing_bracket, invalid_type, not_ready, internal, eof_reached
-};
-
-enum op_type {
- op_type_binary, op_type_prefix, op_type_suffix
-};
-
-enum set_type {
- set_type_symbol, set_type_string, set_type_integer, set_type_float
-};
-
-
-
-static void eval_comma(struct context *ctx, struct result *res);
-static struct attr ** eval_list(struct context *ctx);
-
-/**
- * @brief Converts an error to human-readable text.
- *
- * @param err The error code
- *
- * @return A string containing the error description. The caller is responsible for freeing up the string by
- * calling {@code g_free()} when it is no longer needed.
- */
-char *command_error_to_text(int err) {
- switch (err) {
- case no_error:
- return g_strdup("no_error");
- case missing_double_quote:
- return g_strdup("missing_double_quote");
- case missing_opening_parenthesis:
- return g_strdup("missing_opening_parenthesis");
- case missing_closing_parenthesis:
- return g_strdup("missing_closing_parenthesis");
- case missing_closing_brace:
- return g_strdup("missing_closing_brace");
- case missing_colon:
- return g_strdup("missing_colon");
- case missing_semicolon:
- return g_strdup("missing_semicolon");
- case wrong_type:
- return g_strdup("wrong_type");
- case illegal_number_format:
- return g_strdup("illegal_number_format");
- case illegal_character:
- return g_strdup("illegal_character");
- case missing_closing_bracket:
- return g_strdup("missing_closing_bracket");
- case invalid_type:
- return g_strdup("invalid_type");
- case not_ready:
- return g_strdup("not_ready");
- case internal:
- return g_strdup("internal");
- case eof_reached:
- return g_strdup("eof_reached");
- default:
- return g_strdup("unknown");
- }
-}
-
-static void
-result_free(struct result *res)
-{
- if(res->allocated) {
- attr_free_content(&res->attr);
- res->allocated=0;
- } else {
- res->attr.type=type_none;
- res->attr.u.data=NULL;
- }
-}
-
-
-
-static int command_register_callbacks(struct command_saved *cs);
-
-static const char *
-get_op(struct context *ctx, int test, ...)
-{
- char *op;
- const char *ret=NULL;
- va_list ap;
-
- while (*ctx->expr && g_ascii_isspace(*ctx->expr)) {
- ctx->expr++;
- }
-
- va_start(ap, test);
- while ((op = va_arg(ap, char *))) {
- if (!strncmp(ctx->expr, op, strlen(op))) {
- ret=op;
- if (! test)
- ctx->expr+=strlen(op);
- break;
- }
- }
- va_end(ap);
- return ret;
-}
-
-/*static int
-is_int(struct result *res)
-{
- return 1;
-}*/
-
-static int
-is_double(struct result *res)
-{
- return 0;
-}
-
-static void
-dump(struct result *res)
-{
-#if 0
- char object[res->varlen+1];
- char attribute[res->attrnlen+1];
- if (res->var)
- strncpy(object, res->var, res->varlen);
- object[res->varlen]='\0';
- if (res->attrn)
- strncpy(attribute, res->attrn, res->attrnlen);
- attribute[res->attrnlen]='\0';
- dbg(lvl_debug,"type:%s\n", attr_to_name(res->attr.type));
- dbg(lvl_debug,"attribute '%s' from '%s'\n", attribute, object);
-#endif
-}
-
-static enum attr_type
-command_attr_type(struct result *res)
-{
- char *attrn=g_alloca(sizeof(char)*(res->attrnlen+1));
-
- strncpy(attrn, res->attrn, res->attrnlen);
- attrn[res->attrnlen]='\0';
- return attr_from_name(attrn);
-}
-
-/**
- * @brief Retrieves an attribute from an object.
- *
- * This function will retrieve the first matching attribute by calling the {@code get_attr} method for
- * the object type. If {@code object} does not refer to a valid object, or the {@code get_attr} method
- * for the object type could not be defined, the function fails and zero is returned.
- *
- * @param ctx The context (ignored)
- * @param object The object for which the attribute is to be retrieved.
- * @param attr_type The type of attribute to retrieve
- * @param ret Points to a {@code struct attr} to which the attribute will be copied
- *
- * @return True if a matching attribute was found, false if no matching attribute was found or an error
- * occurred
- */
-static int
-command_object_get_attr(struct context *ctx, struct attr *object, enum attr_type attr_type, struct attr *ret)
-{
- int r;
- struct attr dup;
- struct object_func *func=object_func_lookup(object->type);
- if (!object->u.data || !func || !func->get_attr) {
- dbg(lvl_warning, "cannot retrieve attributes from %s (%p), func=%p\n", attr_to_name(object->type), object->u.data, func)
- return 0;
- }
- r=func->get_attr(object->u.data, attr_type, &dup, NULL);
- if(r)
- attr_dup_content(&dup,ret);
- else
- dbg(lvl_warning, "%s (%p) has no attribute %s\n", attr_to_name(object->type), object->u.data, attr_to_name(attr_type))
- return r;
-}
-
-static int
-command_object_add_attr(struct context *ctx, struct attr *object, struct attr *attr)
-{
- struct object_func *func=object_func_lookup(object->type);
- if (!object->u.data || !func || !func->add_attr)
- return 0;
- return func->add_attr(object->u.data, attr);
-}
-
-static int
-command_object_remove_attr(struct context *ctx, struct attr *object, struct attr *attr)
-{
- struct object_func *func=object_func_lookup(object->type);
- if (!object->u.data || !func || !func->remove_attr)
- return 0;
- return func->remove_attr(object->u.data, attr);
-}
-
-
-/**
- * @brief Retrieves the current value of an attribute and stores it in {@code res}.
- *
- * If {@code ctx->skip} is true, the function aborts and no action is taken.
- *
- * Before calling this function, object references in {@code res} must be resolved. That is,
- * {@code res->attr} holds a copy of {@code ctx->attr} and the first {@code res->attrnlen} characters of
- * {@code res->attrn} correspond to the object name.
- *
- * After this function completes, {@code res->allocated} is true, and {@code res->attrn} and
- * {@code res->attrnlen} are reset.
- *
- * If the attribute was successfully retrieved, the first {@code res->varlen} characters of
- * {@code res->var} correspond to an object name and {@code res->attr} holds the attribute.
- *
- * If the attribute could not be retrieved, {@code res->attr.type} is set to {@code attr_none}, and
- * {@code res->var} and {@code res->varlen} are reset.
- *
- * @param ctx The context
- * @param res The result
- */
-static void
-command_get_attr(struct context *ctx, struct result *res)
-{
- int result;
- struct result tmp={{0,},};
- enum attr_type attr_type=command_attr_type(res);
- enum attr_type parent_type = res->attr.type; /* for debugging only */
- if (ctx->skip)
- return;
- result=command_object_get_attr(ctx, &res->attr, attr_type, &tmp.attr);
- result_free(res);
- *res=tmp;
- res->allocated=1;
- if (result) {
- dbg(lvl_debug, "successfully retrieved '%s' from '%s'\n", attr_to_name(attr_type), attr_to_name(parent_type));
- res->var=res->attrn;
- res->varlen=res->attrnlen;
- } else {
- dbg(lvl_warning, "could not retrieve '%s' from '%s'\n", attr_to_name(attr_type), attr_to_name(parent_type));
- result_free(res);
- res->attr.type=attr_none;
- res->var=NULL;
- res->varlen=0;
- }
- res->attrn=NULL;
- res->attrnlen=0;
- dump(res);
-}
-
-static void
-command_set_attr(struct context *ctx, struct result *res, struct result *newres)
-{
- enum attr_type attr_type=command_attr_type(res);
- struct object_func *func=object_func_lookup(res->attr.type);
- if (ctx->skip)
- return;
- if (!res->attr.u.data || !func || !func->set_attr)
- return;
- if (attr_type == attr_attr_types) {
- char *attrn=g_alloca(sizeof(char)*(res->attrnlen+1));
- struct attr *tmp;
- strncpy(attrn, res->attrn, res->attrnlen);
- attrn[res->attrnlen]='\0';
- tmp=attr_new_from_text(attrn, newres->attr.u.str);
- newres->attr.u.data=tmp->u.data;
- newres->allocated=1;
- g_free(tmp);
- }
- newres->attr.type=attr_type;
- func->set_attr(res->attr.u.data, &newres->attr);
- result_free(res);
- *res=*newres;
-}
-
-/**
- * @brief Resolves an object reference.
- *
- * Prior to calling this function, {@code res} must contain a valid, unresolved object reference:
- * {@code res->attr.type} must be {@code attr_none}, and the first {@code res->varlen} characters of
- * {@code res->var} must correspond to an object name.
- *
- * After the function returns, {@code res->attr} holds a copy of {@code ctx->attr} and the first
- * {@code res->attrnlen} characters of {@code res->attrn} correspond to the object name.
- * {@code res->var} and {@code res->varlen} are reset.
- *
- * @param ctx The context
- * @param res The result
- */
-static void
-resolve_object(struct context *ctx, struct result *res)
-{
- if (res->attr.type == attr_none && res->varlen) {
- res->attr=*ctx->attr;
- res->attrn=res->var;
- res->attrnlen=res->varlen;
- res->var=NULL;
- res->varlen=0;
- }
-}
-
-/**
- * @brief Resolves and retrieves an object and stores it in {@code res}.
- *
- * Prior to calling this function, {@code res} must contain a valid, unresolved object reference:
- * {@code res->attr.type} must be {@code attr_none}, and the first {@code res->varlen} characters of
- * {@code res->var} must correspond to an object name.
- *
- * If {@code ctx->skip} is true, the object reference will be resolved but the object will not be
- * retrieved: the first {@code res->attrnlen} characters of {@code res->attrn} correspond to the object
- * name after the function returns, while {@code res->var} and {@code res->varlen} are reset.
- *
- * If {@code ctx->skip} is false, {@code res->allocated} is true after this function completes. The
- * object is stored in {@code res->attr} if it was successfully retrieved, otherwise {@code res->var}
- * and {@code res->varlen} are reset.
- *
- * @param ctx The context
- * @param res The result
- */
-static void
-resolve(struct context *ctx, struct result *res)
-{
- resolve_object(ctx, res);
- if (res->attrn)
- command_get_attr(ctx, res);
-}
-
-static double
-get_double(struct context *ctx, struct result *res)
-{
- resolve(ctx, res);
- return res->val;
-}
-
-
-/**
- * @brief Returns an integer or bool representation of the result of an expression
- *
- * This function evaluates the result of an expression ({@code res->attr}).
- *
- * If {@code res->attr} is of a numeric type, its integer part is returned.
- *
- * If {@code is_bool} is false and {@code res->attr} is not of a numeric type, 0 is returned.
- *
- * If {@code is_bool} is true and {@code res->attr} is of an object or string type, true is returned
- * for non-null, false otherwise.
- *
- * For all other types of {@code res->attr}, 0 (false) is returned.
- *
- * @param ctx The context for the expression
- * @param is_bool If true, return boolean representation, else return integer representation. See description.
- * @param res The result of the evaluation
- *
- * @return The result of the expression, see description.
- */
-static int
-get_int_bool(struct context *ctx, int is_bool, struct result *res)
-{
- resolve(ctx, res);
- if (res->attr.type == attr_none)
- return 0;
- if (res->attr.type >= attr_type_int_begin && res->attr.type <= attr_type_int_end) {
- return res->attr.u.num;
- }
- if (res->attr.type >= attr_type_double_begin && res->attr.type <= attr_type_double_end) {
- return (int) (*res->attr.u.numd);
- }
- if (is_bool && ATTR_IS_OBJECT(res->attr.type))
- return res->attr.u.data != NULL;
- if (is_bool && ATTR_IS_STRING(res->attr.type))
- return res->attr.u.data != NULL;
- dbg(lvl_debug,"bool %d %s\n",is_bool,attr_to_name(res->attr.type));
- ctx->error=wrong_type;
- return 0;
-}
-
-/**
- * @brief Returns an integer representation of the result of an expression
- *
- * This function is a wrapper around {@code get_int_bool()}. It is equivalent to
- * {@code get_int_bool(ctx, 0, res)}. See {@code get_int_bool()} for a description.
- */
-static int
-get_int(struct context *ctx, struct result *res)
-{
- return get_int_bool(ctx, 0, res);
-}
-
-/**
- * @brief Returns a boolean representation of the result of an expression
- *
- * This function is a wrapper around {@code get_int_bool()}. It is equivalent to
- * {@code get_int_bool(ctx, 1, res)}. See {@code get_int_bool()} for a description.
- */
-static int
-get_bool(struct context *ctx, struct result *res)
-{
- return !!get_int_bool(ctx, 1, res);
-}
-
-
-static char *
-get_string(struct context *ctx, struct result *res)
-{
- resolve(ctx, res);
- return attr_to_text(&res->attr, NULL, 0);
-}
-
-static void
-set_double(struct result *res, double val)
-{
- result_free(res);
- res->attr.type=attr_type_double_begin;
- res->attr.u.numd=&res->val;
- res->val=val;
-}
-
-static void
-set_int(struct result *res, int val)
-{
- result_free(res);
- res->attr.type=attr_type_int_begin;
- res->attr.u.num=val;
-}
-
-static void
-result_op(struct context *ctx, enum op_type op_type, const char *op, struct result *inout, struct result *in)
-{
- if (ctx->skip)
- return;
- switch (op_type) {
- case op_type_prefix:
- switch ((op[0] << 8) | op[1]) {
- case ('!' << 8):
- set_int(inout, !get_bool(ctx, inout));
- return;
- case ('~' << 8):
- set_int(inout, ~get_int(ctx, inout));
- return;
- }
- break;
- case op_type_binary:
- resolve(ctx, inout);
- resolve(ctx, in);
- switch ((op[0] << 8) | op[1]) {
- case ('=' << 8)|'=':
- if (inout->attr.type == attr_none || in->attr.type == attr_none) {
- set_int(inout, 0);
- } else if (ATTR_IS_STRING(inout->attr.type) && ATTR_IS_STRING(in->attr.type)) {
- char *s1=get_string(ctx, inout),*s2=get_string(ctx, in);
- set_int(inout, (!strcmp(s1,s2)));
- g_free(s1);
- g_free(s2);
- } else if (ATTR_IS_OBJECT(inout->attr.type) && ATTR_IS_OBJECT(in->attr.type)) {
- set_int(inout, inout->attr.u.data == in->attr.u.data);
- } else
- set_int(inout, (get_int(ctx, inout) == get_int(ctx, in)));
- return;
- case ('!' << 8)|'=':
- if (inout->attr.type == attr_none || in->attr.type == attr_none) {
- set_int(inout, 1);
- } else if (ATTR_IS_STRING(inout->attr.type) && ATTR_IS_STRING(in->attr.type)) {
- char *s1=get_string(ctx, inout),*s2=get_string(ctx, in);
- set_int(inout, (!!strcmp(s1,s2)));
- g_free(s1);
- g_free(s2);
- } else if (ATTR_IS_OBJECT(inout->attr.type) && ATTR_IS_OBJECT(in->attr.type)) {
- set_int(inout, inout->attr.u.data != in->attr.u.data);
- } else
- set_int(inout, (get_int(ctx, inout) != get_int(ctx, in)));
- return;
- case ('<' << 8):
- set_int(inout, (get_int(ctx, inout) < get_int(ctx, in)));
- return;
- case ('<' << 8)|'=':
- set_int(inout, (get_int(ctx, inout) <= get_int(ctx, in)));
- return;
- case ('>' << 8):
- set_int(inout, (get_int(ctx, inout) > get_int(ctx, in)));
- return;
- case ('>' << 8)|'=':
- set_int(inout, (get_int(ctx, inout) >= get_int(ctx, in)));
- return;
- case ('*' << 8):
- if (is_double(inout) || is_double(in))
- set_double(inout, get_double(ctx, inout) * get_double(ctx, in));
- else
- set_int(inout, get_int(ctx, inout) * get_int(ctx, in));
- return;
- case ('/' << 8):
- if (is_double(inout) || is_double(in))
- set_double(inout, get_double(ctx, inout) * get_double(ctx, in));
- else
- set_int(inout, get_int(ctx, inout) * get_int(ctx, in));
- return;
- case ('%' << 8):
- set_int(inout, get_int(ctx, inout) % get_int(ctx, in));
- return;
- case ('+' << 8):
- if (is_double(inout) || is_double(in))
- set_double(inout, get_double(ctx, inout) + get_double(ctx, in));
- else if (ATTR_IS_STRING(inout->attr.type) && ATTR_IS_STRING(in->attr.type)) {
- char *str=g_strdup_printf("%s%s",inout->attr.u.str,in->attr.u.str);
- result_free(inout);
- inout->attr.type=attr_type_string_begin;
- inout->attr.u.str=str;
- inout->allocated=1;
- } else
- set_int(inout, get_int(ctx, inout) + get_int(ctx, in));
- return;
- case ('-' << 8):
- if (is_double(inout) || is_double(in))
- set_int(inout, get_int(ctx, inout) - get_int(ctx, in));
- else
- set_double(inout, get_double(ctx, inout) - get_double(ctx, in));
- return;
- case ('&' << 8):
- set_int(inout, get_int(ctx, inout) & get_int(ctx, in));
- return;
- case ('^' << 8):
- set_int(inout, get_int(ctx, inout) ^ get_int(ctx, in));
- return;
- case ('|' << 8):
- set_int(inout, get_int(ctx, inout) | get_int(ctx, in));
- return;
- case (('&' << 8) | '&'):
- set_int(inout, get_int(ctx, inout) && get_int(ctx, in));
- return;
- case (('|' << 8) | '|'):
- set_int(inout, get_int(ctx, inout) || get_int(ctx, in));
- return;
- default:
- break;
- }
- default:
- break;
- }
- dbg(lvl_error,"Unkown op %d %s\n",op_type,op);
- ctx->error=internal;
-}
-
-static void
-result_set(struct context *ctx, enum set_type set_type, const char *op, int len, struct result *out)
-{
- if (ctx->skip)
- return;
- switch (set_type) {
- case set_type_symbol:
- out->attr.type=attr_none;
- out->var=op;
- out->varlen=len;
- return;
- case set_type_integer:
- out->attr.type=attr_type_int_begin;
- out->attr.u.num=atoi(ctx->expr);
- return;
- case set_type_float:
- out->val = strtod(ctx->expr, NULL);
- out->attr.type=attr_type_double_begin;
- out->attr.u.numd=&out->val;
- return;
- case set_type_string:
- if (len >= 2) {
- out->attr.type=attr_type_string_begin;
- out->attr.u.str=g_malloc(len-1);
- strncpy(out->attr.u.str, op+1, len-2);
- out->attr.u.str[len-2]='\0';
- out->allocated=1;
- return;
- }
- break;
- default:
- break;
- }
- dbg(lvl_error,"unknown set type %d %s\n",set_type,op);
- ctx->error=internal;
-}
-
-/**
- * @brief Evaluates a value and stores its result.
- *
- * This function evaluates the first value in {@code ctx->expr}. A value can be either an object name
- * (such as {@code vehicle.position_speed}) or a literal value.
- *
- * If evaluation is successful, the result is stored in {@code res->attr}.
- *
- * If an object name is encountered, the result has an attribute type of {@code attr_none} and the first
- * {@code res->varlen} characters of {@code res->var} will point to the object name.
- *
- * If a literal value is encountered, the result's attribute type is set to the corresponding generic
- * data type and its value is stored with the attribute.
- *
- * After this function returns, {@code ctx->expr} contains the rest of the expression string, which was
- * not evaluated. Leading spaces before the value will be discarded with the value.
- *
- * If {@code ctx->expr}, after eliminating any leading whitespace, does not begin with a valid value,
- * one of the following errors is stored in {@code ctx->error}:
- * <ul>
- * <li>{@code illegal_number_format} An illegal number format, such as a second decimal dot, was
- * encountered.</li>
- * <li>{@code missing_double_quote} A double quote without a matching second double quote was found.</li>
- * <li>{@code eof_reached} The expression string is empty.</li>
- * <li>{@code illegal_character} The expression string begins with a character which is illegal in a
- * value. This may happen when the expression string begins with an operator.</li>
- * </ul>
- *
- * @param ctx The context to evaluate
- * @param res Points to a {@code struct res} in which the result will be stored
- */
-static void
-eval_value(struct context *ctx, struct result *res) {
- const char *op;
- int dots=0;
-
- result_free(res);
-
- res->varlen=0;
- res->var=NULL;
- res->attrnlen=0;
- res->attrn=NULL;
-
- while (g_ascii_isspace(*(ctx->expr))) {
- ctx->expr++;
- }
- op = ctx->expr;
-
- if ((op[0] >= 'a' && op[0] <= 'z') || (op[0] >= 'A' && op[0] <= 'Z') || op[0] == '_') {
- const char *s=op;
- for (;;) {
- while ((op[0] >= 'a' && op[0] <= 'z') || (op[0] >= 'A' && op[0] <= 'Z') || (op[0] >= '0' && op[0] <= '9') || op[0] == '_') {
- op++;
- }
- if (op-s == 3 && !strncmp(s,"new",3) && op[0] == ' ') {
- op++;
- } else
- break;
- }
- result_set(ctx, set_type_symbol, ctx->expr, op-ctx->expr, res);
- ctx->expr=op;
- return;
- }
- if ((op[0] >= '0' && op[0] <= '9') ||
- (op[0] == '.' && op[1] >= '0' && op[1] <= '9') ||
- (op[0] == '-' && op[1] >= '0' && op[1] <= '9') ||
- (op[0] == '-' && op[1] == '.' && op[2] >= '0' && op[2] <= '9')) {
- while ((op[0] >= '0' && op[0] <= '9') || op[0] == '.' || (res->varlen == 0 && op[0] == '-')) {
- if (op[0] == '.')
- dots++;
- if (dots > 1) {
- ctx->error=illegal_number_format;
- return;
- }
- op++;
- }
- result_set(ctx, dots?set_type_float:set_type_integer, ctx->expr, op-ctx->expr, res);
- ctx->expr=op;
- return;
- }
- if (op[0] == '"') {
- int escaped=0;
- do {
- if (op[0] == '\\') {
- escaped=1;
- if (op[1] == '"')
- op++;
- }
- op++;
- } while (op[0] && op[0] != '"');
- if(!*op) {
- ctx->error=missing_double_quote;
- return;
- }
- op++;
- if (escaped) {
- char *tmpstr=g_malloc(op-ctx->expr+1),*s=tmpstr;
- op=ctx->expr;
- do {
- if (op[0] == '\\')
- op++;
- *s++=*op++;
- } while (op[0] != '"');
- *s++=*op++;
- result_set(ctx, set_type_string, tmpstr, s-tmpstr, res);
- g_free(tmpstr);
- } else
- result_set(ctx, set_type_string, ctx->expr, op-ctx->expr, res);
- ctx->expr=op;
- return;
- }
- if (!*op)
- ctx->error=eof_reached;
- else {
- /*
- * If we get here, ctx->expr does not begin with a variable or a literal value. This is not an
- * error if this function is being called to test if an expression begins with a value.
- */
- dbg(lvl_debug, "character 0x%x is illegal in a value\n",*op);
- ctx->error=illegal_character;
- }
-}
-
-/**
- * @brief Retrieves the next object reference from an expression.
- *
- * This function scans the expression string {@code ctx->expr} for the next object reference. Anything
- * other than an object reference (whitespace characters, literal values, operators and even illegal
- * characters) is discarded until either the end of the string is reached or an object reference is
- * encountered.
- *
- * After this function completes successfully, {@code res->attr.type} is {@code attr_none} and the first
- * {@code res->varlen} characters of {@code res->var} point to the object name.
- *
- * Object names retrieved by this function are unqualified, i.e. {@code vehicle.position_speed} will be
- * retrieved as {@code vehicle} on the first call (return value 2) and {@code position_speed} on the
- * second call (return value 1).
- *
- * @param ctx The context
- * @param res Points to a {@code struct result} where the result will be stored.
- *
- * @return If a complete object name has been retrieved, the return value is 1. If a partial object name
- * has been retrieved (e.g. {@code vehicle} from {@code vehicle.position_speed}), the return value is 2.
- * If no object references were found, the return value is 0.
- */
-static int
-get_next_object(struct context *ctx, struct result *res) {
-
- while (*ctx->expr) {
- res->varlen = 0;
- ctx->error = 0;
-
- eval_value(ctx,res);
-
- if ((res->attr.type == attr_none) && (res->varlen > 0)) {
- if (ctx->expr[0] != '.') {
- return 1; // 1 means "this is the final object name"
- } else {
- return 2; // 2 means "there are more object names following" (e.g. we just hit 'vehicle' in 'vehicle.position_speed'
- }
- }
-
- if (ctx->error) {
- // Probably hit an operator
- ctx->expr++;
- }
- }
-
- return 0;
-}
-
-static void
-eval_brace(struct context *ctx, struct result *res)
-{
- if (get_op(ctx,0,"(",NULL)) {
- eval_comma(ctx, res);
- if (ctx->error) return;
- if (!get_op(ctx,0,")",NULL))
- ctx->error=missing_closing_parenthesis;
- return;
- }
- eval_value(ctx, res);
-}
-
-static void
-command_call_function(struct context *ctx, struct result *res)
-{
- struct attr cbl,**list=NULL;
- char *function=g_alloca(sizeof(char)*(res->attrnlen+1));
- if (res->attrn)
- strncpy(function, res->attrn, res->attrnlen);
- function[res->attrnlen]='\0';
- dbg(lvl_debug,"function=%s\n", function);
- if (ctx->expr[0] != ')') {
- list=eval_list(ctx);
- if (ctx->error) {
- attr_list_free(list);
- return;
- }
- }
- if (!get_op(ctx,0,")",NULL)) {
- attr_list_free(list);
- ctx->error=missing_closing_parenthesis;
- return;
- }
- if (!ctx->skip) {
- if (!strcmp(function,"_") && list && list[0] && list[0]->type >= attr_type_string_begin && list[0]->type <= attr_type_string_end) {
- result_free(res);
- res->attr.type=list[0]->type;
- res->attr.u.str=g_strdup(navit_nls_gettext(list[0]->u.str));
- res->allocated=1;
-
- } else if (!strncmp(function,"new ",4)) {
- enum attr_type attr_type=attr_from_name(function+4);
- result_free(res);
- if (ATTR_IS_INT(attr_type)) {
- if (list && list[0] && ATTR_IS_INT(list[0]->type)) {
- res->attr.type=attr_type;
- res->attr.u.num=list[0]->u.num;
- res->allocated=0;
- } else {
- dbg(lvl_error,"don't know how to create int of args\n");
- }
- } else if (ATTR_IS_STRING(attr_type)) {
- if (list && list[0] && ATTR_IS_STRING(list[0]->type)) {
- res->attr.type=attr_type;
- res->attr.u.str=g_strdup(list[0]->u.str);
- res->allocated=1;
- } else {
- dbg(lvl_error,"don't know how to create string of args\n");
- }
- } else if (ATTR_IS_OBJECT(attr_type)) {
- struct object_func *func=object_func_lookup(attr_type);
- if (func && func->create) {
- res->attr.type=attr_type;
- res->attr.u.data=func->create(list[0], list+1);
- /* Setting allocated to 1 here will make object to be destroyed when last reference is destroyed.
- So created persistent objects should be stored with set_attr_var command. */
- res->allocated=1;
- }
- } else {
- dbg(lvl_error,"don't know how to create %s (%s)\n",attr_to_name(attr_type),function+4);
- }
- } else if (!strcmp(function,"add_attr")) {
- command_object_add_attr(ctx, &res->attr, list[0]);
- } else if (!strcmp(function,"remove_attr")) {
- command_object_remove_attr(ctx, &res->attr, list[0]);
- } else {
- if (command_object_get_attr(ctx, &res->attr, attr_callback_list, &cbl)) {
- int valid =0;
- struct attr **out=NULL;
- dbg(lvl_debug,"function call %s from %s\n",function, attr_to_name(res->attr.type));
- callback_list_call_attr_4(cbl.u.callback_list, attr_command, function, list, &out, &valid);
- if (valid!=1){
- dbg(lvl_error, "invalid command ignored: \"%s\"; see http://wiki.navit-project.org/index.php/"
- "OSD#Navit_commands for valid commands.\n", function);
- }
- if (out && out[0]) {
- result_free(res);
- attr_dup_content(out[0], &res->attr);
- res->allocated=1;
- attr_list_free(out);
- } else
- result_free(res);
- } else
- result_free(res);
- }
- }
- attr_list_free(list);
- res->var=NULL;
- res->varlen=0;
- res->attrn=NULL;
- res->attrnlen=0;
-}
-
-static void
-eval_postfix(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
- const char *op;
-
- eval_brace(ctx, res);
- if (ctx->error) return;
- for (;;) {
- if (!(op=get_op(ctx,0,"[","(",".",NULL)))
- return;
- if (op[0] == '.') {
- eval_brace(ctx, &tmp);
- if (ctx->error) return;
- resolve(ctx, res);
- if (ctx->error) return;
- res->attrn=tmp.var;
- res->attrnlen=tmp.varlen;
- dump(res);
- } else if (op[0] == '[') {
- resolve_object(ctx, res);
- if (ctx->error) return;
- if (get_op(ctx,0,"@",NULL)) {
- if (!ctx->skip) {
- struct object_func *obj_func=object_func_lookup(res->attr.type);
- struct attr_iter *iter;
- struct attr attr;
- enum attr_type attr_type=command_attr_type(res);
- void *obj=res->attr.u.data;
- if (!obj) {
- dbg(lvl_error,"no object\n");
- return;
- }
- if (!obj_func) {
- dbg(lvl_error,"no object func\n");
- return;
- }
- if (!obj_func->iter_new || !obj_func->iter_destroy) {
- dbg(lvl_error,"no iter func\n");
- return;
- }
- iter = obj_func->iter_new(NULL);
- result_free(res);
- res->varlen=0;
- res->attrn=NULL;
- while (obj_func->get_attr(obj, attr_type, &attr, iter)) {
- if (command_evaluate_to_boolean(&attr, ctx->expr, &ctx->error)) {
- result_free(res);
- res->attr=attr;
- }
- }
- obj_func->iter_destroy(iter);
- }
- if (ctx->error) return;
- ctx->expr+=command_evaluate_to_length(ctx->expr, &ctx->error);
- }
- if (!get_op(ctx,0,"]",NULL)) {
- ctx->error=missing_closing_bracket;
- return;
- }
- } else if (op[0] == '(') {
- dbg(lvl_debug,"function call\n");
- resolve_object(ctx, res);
- command_call_function(ctx, res);
- }
- }
-}
-
-static void
-eval_unary(struct context *ctx, struct result *res)
-{
- const char *op;
- op=get_op(ctx,0,"~","!",NULL);
- if (op) {
- eval_unary(ctx, res);
- if (ctx->error) return;
- result_op(ctx, op_type_prefix, op, res, NULL);
- } else
- eval_postfix(ctx, res);
-}
-
-static void
-eval_multiplicative(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
- const char *op;
-
- eval_unary(ctx, res);
- if (ctx->error) return;
- for (;;) {
- if (!(op=get_op(ctx,0,"*","/","%",NULL))) return;
- eval_unary(ctx, &tmp);
- if (!ctx->error)
- result_op(ctx, op_type_binary, op, res, &tmp);
- result_free(&tmp);
- if (ctx->error) return;
- }
-}
-
-static void
-eval_additive(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
- const char *op;
-
- eval_multiplicative(ctx, res);
- if (ctx->error) return;
- for (;;) {
- if (!(op=get_op(ctx,0,"-","+",NULL))) return;
- eval_multiplicative(ctx, &tmp);
- if (!ctx->error)
- result_op(ctx, op_type_binary, op, res, &tmp);
- result_free(&tmp);
- if (ctx->error) return;
- }
-}
-
-static void
-eval_equality(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
- const char *op;
-
- eval_additive(ctx, res);
- if (ctx->error) return;
- for (;;) {
- if (!(op=get_op(ctx,0,"==","!=","<=",">=","<",">",NULL))) return;
- eval_additive(ctx, &tmp);
- if (!ctx->error)
- result_op(ctx, op_type_binary, op, res, &tmp);
- result_free(&tmp);
- if (ctx->error) return;
- }
-}
-
-
-static void
-eval_bitwise_and(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
-
- eval_equality(ctx, res);
- if (ctx->error) return;
- for (;;) {
- if (get_op(ctx,1,"&&",NULL)) return;
- if (!get_op(ctx,0,"&",NULL)) return;
- eval_equality(ctx, &tmp);
- if (!ctx->error)
- result_op(ctx, op_type_binary, "&", res, &tmp);
- result_free(&tmp);
- if (ctx->error) return;
- }
-}
-
-static void
-eval_bitwise_xor(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
-
- eval_bitwise_and(ctx, res);
- if (ctx->error) return;
- for (;;) {
- if (!get_op(ctx,0,"^",NULL)) return;
- eval_bitwise_and(ctx, &tmp);
- if (!ctx->error)
- result_op(ctx, op_type_binary, "^", res, &tmp);
- result_free(&tmp);
- if (ctx->error) return;
- }
-}
-
-static void
-eval_bitwise_or(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
-
- eval_bitwise_xor(ctx, res);
- if (ctx->error) return;
- for (;;) {
- if (get_op(ctx,1,"||",NULL)) return;
- if (!get_op(ctx,0,"|",NULL)) return;
- eval_bitwise_xor(ctx, &tmp);
- if (!ctx->error)
- result_op(ctx, op_type_binary, "|", res, &tmp);
- result_free(&tmp);
- if (ctx->error) return;
- }
-}
-
-static void
-eval_logical_and(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
-
- eval_bitwise_or(ctx, res);
- if (ctx->error) return;
- for (;;) {
- if (!get_op(ctx,0,"&&",NULL)) return;
- eval_bitwise_or(ctx, &tmp);
- if (!ctx->error)
- result_op(ctx, op_type_binary, "&&", res, &tmp);
- result_free(&tmp);
- if (ctx->error) return;
- }
-}
-
-static void
-eval_logical_or(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
-
- eval_logical_and(ctx, res);
- if (ctx->error) return;
- for (;;) {
- if (!get_op(ctx,0,"||",NULL)) return;
- eval_logical_and(ctx, &tmp);
- if (!ctx->error)
- result_op(ctx, op_type_binary, "||", res, &tmp);
- result_free(&tmp);
- if (ctx->error) return;
- }
-}
-
-static void
-eval_conditional(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
- int cond=0;
- int skip;
-
- eval_logical_or(ctx, res);
- if (ctx->error) return;
- if (!get_op(ctx,0,"?",NULL)) return;
- skip=ctx->skip;
- cond=get_bool(ctx, res);
- result_free(res);
- if (ctx->error) return;
- ctx->skip=!cond || skip;
- eval_logical_or(ctx, &tmp);
- ctx->skip=skip;
- if (ctx->error) {
- result_free(&tmp);
- return;
- }
-
- *res=tmp;
- memset(&tmp,0,sizeof(tmp));
-
- if (!get_op(ctx,0,":",NULL)) {
- dbg(lvl_debug,"ctxerr\n");
- ctx->error=missing_colon;
- return;
- }
- ctx->skip=cond || skip;
- eval_logical_or(ctx, &tmp);
- ctx->skip=skip;
- if (ctx->error) {
- result_free(&tmp);
- return;
- }
- if (!cond) {
- result_free(res);
- *res=tmp;
- } else
- result_free(&tmp);
-}
-
-/* = *= /= %= += -= >>= <<= &= ^= |= */
-
-static void
-eval_assignment(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
- eval_conditional(ctx, res);
- if (ctx->error) return;
- if (!get_op(ctx,0,"=",NULL)) return;
- eval_conditional(ctx, &tmp);
- if (ctx->error) {
- result_free(&tmp);
- return;
- }
- resolve(ctx, &tmp);
- if (ctx->error) {
- result_free(&tmp);
- return;
- }
- resolve_object(ctx, res);
- command_set_attr(ctx, res, &tmp);
-}
-
-/* , */
-static void
-eval_comma(struct context *ctx, struct result *res)
-{
- struct result tmp={{0,},};
-
- eval_assignment(ctx, res);
- if (ctx->error) return;
- for (;;) {
- if (!get_op(ctx,0,",",NULL)) return;
- eval_assignment(ctx, &tmp);
- if (ctx->error) return;
- result_free(res);
- *res=tmp;
- }
-}
-
-static struct attr **
-eval_list(struct context *ctx)
-{
- struct result tmp={{0,},};
-
- struct attr **ret=NULL;
- for (;;) {
- eval_assignment(ctx, &tmp);
- if (ctx->error) {
- result_free(&tmp);
- attr_list_free(ret);
- return NULL;
- }
- resolve(ctx, &tmp);
- ret=attr_generic_add_attr(ret, &tmp.attr);
- result_free(&tmp);
- if (!get_op(ctx,0,",",NULL)) return ret;
- }
-}
-
-#if 0
-
-void command(struct attr *attr, char *expr)
-{
- struct result res;
- struct context ctx;
- memset(&res, 0, sizeof(res));
- memset(&ctx, 0, sizeof(ctx));
- ctx.attr=attr;
- ctx.error=0;
- ctx.expr=expr;
- printf("command='%s'\n", expr);
- eval_comma(&ctx,&res);
- printf("err=%d %s\n", ctx.error, ctx.expr);
- dump(&res);
- printf("***\n");
- resolve(&ctx, &res);
- dump(&res);
- printf("%s\n", get_string(&ctx, &res));
-}
-#endif
-
-static void
-command_evaluate_to(struct attr *attr, const char *expr, struct context *ctx, struct result *res)
-{
- result_free(res);
- memset(res, 0, sizeof(*res));
- memset(ctx, 0, sizeof(*ctx));
- ctx->attr=attr;
- ctx->expr=expr;
- eval_comma(ctx,res);
-}
-
-enum attr_type
-command_evaluate_to_attr(struct attr *attr, char *expr, int *error, struct attr *ret)
-{
- struct result res={{0,},};
- struct context ctx;
- command_evaluate_to(attr, expr, &ctx, &res);
- if (ctx.error)
- return attr_none;
- resolve_object(&ctx, &res);
- *ret=res.attr;
- dbg(lvl_debug,"type %s\n",attr_to_name(command_attr_type(&res)));
- return command_attr_type(&res);
-}
-
-void
-command_evaluate_to_void(struct attr *attr, char *expr, int *error)
-{
- struct result res={{0,},};
- struct context ctx;
- command_evaluate_to(attr, expr, &ctx, &res);
- if (!ctx.error)
- resolve(&ctx, &res);
- if (error)
- *error=ctx.error;
- result_free(&res);
-
-}
-
-char *
-command_evaluate_to_string(struct attr *attr, char *expr, int *error)
-{
- struct result res={{0,},};
- struct context ctx;
- char *ret=NULL;
-
- command_evaluate_to(attr, expr, &ctx, &res);
- if (!ctx.error)
- resolve(&ctx, &res);
- if (!ctx.error)
- ret=get_string(&ctx, &res);
- if (error)
- *error=ctx.error;
-
- result_free(&res);
-
- if (ctx.error)
- return NULL;
- else
- return ret;
-}
-
-int
-command_evaluate_to_int(struct attr *attr, char *expr, int *error)
-{
- struct result res={{0,},};
- struct context ctx;
- int ret=0;
-
- command_evaluate_to(attr, expr, &ctx, &res);
- if (!ctx.error)
- resolve(&ctx, &res);
- if (!ctx.error)
- ret=get_int(&ctx, &res);
- if (error)
- *error=ctx.error;
-
- result_free(&res);
-
- if (ctx.error)
- return 0;
- else
- return ret;
-}
-
-int
-command_evaluate_to_boolean(struct attr *attr, const char *expr, int *error)
-{
- struct result res={{0,},};
- struct context ctx;
- int ret=0;
-
- command_evaluate_to(attr, expr, &ctx, &res);
- if (!ctx.error)
- resolve(&ctx, &res);
- if (!ctx.error) {
- if (res.attr.type == attr_none)
- ret=0;
- else if ((res.attr.type >= attr_type_int_begin && res.attr.type <= attr_type_int_end) ||
- (res.attr.type >= attr_type_double_begin && res.attr.type <= attr_type_double_end))
- ret=get_int(&ctx, &res);
- else
- ret=res.attr.u.data != NULL;
- }
-
- result_free(&res);
-
- if (error)
- *error=ctx.error;
- if (ctx.error)
- return 0;
- else
- return ret;
-}
-
-int
-command_evaluate_to_length(const char *expr, int *error)
-{
- struct attr attr;
- struct result res={{0,},};
- struct context ctx;
-
- attr.type=attr_none;
- attr.u.data=NULL;
- command_evaluate_to(&attr, expr, &ctx, &res);
-
- result_free(&res);
-
- if (!ctx.error)
- return ctx.expr-expr;
- return 0;
-}
-
-static int
-command_evaluate_single(struct context *ctx)
-{
- struct result res={{0,},},tmp={{0,},};
- const char *op,*a,*f,*end;
- enum attr_type attr_type;
- void *obj;
- struct object_func *obj_func;
- struct attr_iter *iter;
- struct attr attr;
- int cond=0;
- int skip=ctx->skip;
- if (!(op=get_op(ctx,0,"foreach","if","{",NULL))) {
- eval_comma(ctx,&res);
- if (ctx->error)
- return 0;
- resolve(ctx, &res);
- result_free(&res);
- if (ctx->error)
- return 0;
- return get_op(ctx,0,";",NULL) != NULL;
- }
- switch (op[0]) {
- case 'f':
- if (!get_op(ctx,0,"(",NULL)) {
- ctx->error=missing_opening_parenthesis;
- return 0;
- }
- ctx->skip=1;
- a=ctx->expr;
- eval_conditional(ctx, &res);
- resolve_object(ctx, &res);
- ctx->skip=skip;
- if (!get_op(ctx,0,";",NULL)) {
- ctx->error=missing_semicolon;
- return 0;
- }
- eval_comma(ctx,&res);
- attr_type=command_attr_type(&res);
- obj=res.attr.u.data;
- obj_func=object_func_lookup(res.attr.type);
- if (!get_op(ctx,0,")",NULL)) {
- ctx->error=missing_closing_parenthesis;
- return 0;
- }
- f=ctx->expr;
- ctx->skip=1;
- if (!command_evaluate_single(ctx)) {
- ctx->skip=skip;
- return 0;
- }
- ctx->skip=skip;
- if (ctx->skip) {
- result_free(&res);
- return 1;
- }
- end=ctx->expr;
- if (!obj) {
- dbg(lvl_error,"no object\n");
- return 0;
- }
- if (!obj_func) {
- dbg(lvl_error,"no object func\n");
- return 0;
- }
- if (!obj_func->iter_new || !obj_func->iter_destroy) {
- dbg(lvl_error,"no iter func\n");
- return 0;
- }
- iter = obj_func->iter_new(NULL);
- while (obj_func->get_attr(obj, attr_type, &attr, iter)) {
- ctx->expr=a;
- eval_conditional(ctx, &res);
- resolve_object(ctx, &res);
- tmp.attr=attr;
- resolve(ctx, &tmp);
- if (ctx->error) {
- result_free(&tmp);
- return 0;
- }
- command_set_attr(ctx, &res, &tmp);
- result_free(&tmp);
- ctx->expr=f;
- if (!command_evaluate_single(ctx)) {
- obj_func->iter_destroy(iter);
- return 0;
- }
- }
- obj_func->iter_destroy(iter);
- ctx->expr=end;
- return 1;
- case 'i':
- if (!get_op(ctx,0,"(",NULL)) {
- ctx->error=missing_opening_parenthesis;
- return 0;
- }
- eval_comma(ctx,&res);
- if (!skip && !ctx->error)
- cond=get_bool(ctx, &res);
- result_free(&res);
- if (ctx->error)
- return 0;
- if (!get_op(ctx,0,")",NULL)) {
- ctx->error=missing_closing_parenthesis;
- return 0;
- }
- ctx->skip=!cond || skip;
- command_evaluate_single(ctx);
- ctx->skip=skip;
- if (ctx->error)
- return 0;
- if (get_op(ctx,0,"else",NULL)) {
- ctx->skip=cond || skip;
- command_evaluate_single(ctx);
- ctx->skip=skip;
- if (ctx->error)
- return 0;
- }
- return 1;
- case '{':
- while (!get_op(ctx,0,"}",NULL)) {
- if (!command_evaluate_single(ctx))
- return 0;
- }
- return 1;
- default:
- return 0;
- }
-}
-
-void
-command_evaluate(struct attr *attr, const char *expr)
-{
- /* Once the eval has started we can't rely anymore on the content of
- * expr which may be freed when the calling widget is destroyed by a
- * subsequent command call. Hence the g_strdup. */
-
- char *expr_dup;
- char *err = NULL; /* Error description */
- struct context ctx={0,};
- ctx.attr=attr;
- ctx.error=0;
- ctx.expr=expr_dup=g_strdup(expr);
- for (;;) {
- if (!command_evaluate_single(&ctx))
- break;
- }
- if (ctx.error && ctx.error != eof_reached) {
- char expr[32];
- strncpy(expr, ctx.expr, 32);
- expr[31]='\0';
- err = command_error_to_text(ctx.error);
- dbg(lvl_error, "error %s starting at %s\n", err, expr);
- g_free(err);
- }
- g_free(expr_dup);
-}
-
-#if 0
-void
-command_interpreter(struct attr *attr)
-{
- char buffer[4096];
- int size;
- for (;;) {
- size=read(0, buffer, 4095);
- buffer[size]='\0';
- if (size) {
- buffer[size-1]='\0';
- }
- command(attr, buffer);
- }
-}
-#endif
-
-static void
-command_table_call(struct command_table *table, int count, void *data, char *command, struct attr **in, struct attr ***out, int *valid)
-{
- int i;
- for (i = 0 ; i < count ; i++) {
- if (!strcmp(command,table->command)) {
- if (valid)
- *valid=1;
- table->func(data, command, in, out);
- }
- table++;
- }
-}
-
-void
-command_add_table_attr(struct command_table *table, int count, void *data, struct attr *attr)
-{
- attr->type=attr_callback;
- attr->u.callback=callback_new_attr_3(callback_cast(command_table_call),attr_command, table, count, data);
-}
-
-void
-command_add_table(struct callback_list *cbl, struct command_table *table, int count, void *data)
-{
- struct attr attr;
- command_add_table_attr(table, count, data, &attr);
- callback_list_add(cbl, attr.u.callback);
-}
-
-void
-command_saved_set_cb (struct command_saved *cs, struct callback *cb)
-{
- cs->cb = cb;
-}
-
-/**
- * @brief Returns an integer representation of the evaluation result of a saved command
- *
- * This function is a wrapper around {@code get_int()}. It is equivalent to
- * {@code get_int(&cs->ctx, &cs->res)}. See {@code get_int()} for a description.
- */
-int
-command_saved_get_int (struct command_saved *cs)
-{
- return get_int(&cs->ctx, &cs->res);
-}
-
-int
-command_saved_error (struct command_saved *cs)
-{
- return cs->error;
-}
-
-/**
- * @brief Idle function to evaluate a command
- *
- * This function is called from an idle loop for asynchronous evaluation but may also be called in-line.
- *
- * The result of the evaluation can be retrieved from {@code cs->res} after this function returns. If an
- * error occurred, it will be stored in {@code cs->error}.
- *
- * @param cs The command to evaluate
- */
-static void
-command_saved_evaluate_idle (struct command_saved *cs)
-{
- dbg(lvl_debug, "enter: cs=%p, cs->command=%s\n", cs, cs->command);
- // Only run once at a time
- if (cs->idle_ev) {
- event_remove_idle(cs->idle_ev);
- cs->idle_ev = NULL;
- }
-
- command_evaluate_to(&cs->context_attr, cs->command, &cs->ctx, &cs->res);
-
- if (!cs->ctx.error) {
- cs->error = 0;
-
- if (cs->cb) {
- callback_call_1(cs->cb, cs);
- }
- } else {
- cs->error = cs->ctx.error;
- }
-}
-
-/**
- * @brief Evaluates a command
- *
- * This function examines {@code cs->async} to determine if the command should be evaluated immediately.
- * If {@code cs->async} is true, an idle event is registered to register the command. Else the command
- * is evaluated immediately and the result can be retrieved immediately after this function returns.
- *
- * See {@link command_saved_evaluate_idle(struct command_saved *)} for details.
- *
- * @param cs The command to evaluate
- */
-static void
-command_saved_evaluate(struct command_saved *cs)
-{
- dbg(lvl_debug, "enter: cs=%p, cs->async=%d, cs->command=%s\n", cs, cs->async, cs->command);
- if (!cs->async) {
- command_saved_evaluate_idle(cs);
- return;
- }
- if (cs->idle_ev) {
- // We're already scheduled for reevaluation
- return;
- }
-
- if (!cs->idle_cb) {
- cs->idle_cb = callback_new_1(callback_cast(command_saved_evaluate_idle), cs);
- }
-
- cs->idle_ev = event_add_idle(100, cs->idle_cb);
-}
-
-/**
- * @brief Recreates all callbacks for a saved command
- *
- * @param cs The saved command
- */
-static void
-command_saved_callbacks_changed(struct command_saved *cs)
-{
- // For now, we delete each and every callback and then re-create them
- int i;
- struct object_func *func;
- struct attr attr;
-
- dbg(lvl_debug, "enter: cs=%p, cs->async=%d, cs->command=%s\n", cs, cs->async, cs->command);
-
- if (cs->register_ev) {
- event_remove_idle(cs->register_ev);
- cs->register_ev = NULL;
- }
-
- attr.type = attr_callback;
-
- for (i = 0; i < cs->num_cbs; i++) {
- func = object_func_lookup(cs->cbs[i].attr.type);
-
- if (!func->remove_attr) {
- dbg(lvl_error, "Could not remove command-evaluation callback because remove_attr is missing for type %i!\n", cs->cbs[i].attr.type);
- continue;
- }
-
- attr.u.callback = cs->cbs[i].cb;
-
- func->remove_attr(cs->cbs[i].attr.u.data, &attr);
- callback_destroy(cs->cbs[i].cb);
- }
-
- g_free(cs->cbs);
- cs->cbs = NULL;
- cs->num_cbs = 0;
-
- // Now, re-create all the callbacks
- command_register_callbacks(cs);
-}
-
-/**
- * @brief Registers callbacks for a saved command
- *
- * This function registers callbacks for each attribute used in a saved command, causing the command to
- * be re-evaluated whenever its value might change.
- *
- * This function will fail if an object used in the expression could not be resolved. This may happen
- * during startup if this function is called before all objects have been created. In this case, the
- * caller should schedule the function to be called again at a later time.
- *
- * It will also fail if an error is encountered. This can be determined by examining
- * {@code cs->ctx.error} after the function returns.
- *
- * @param cs The command
- *
- * @return True if all callbacks were successfully registered, false if the function failed
- */
-static int
-command_register_callbacks(struct command_saved *cs)
-{
- struct attr prev; /* The parent of the next object which will be retrieved. */
- struct attr cb_attr;
- int status;
- struct object_func *func;
- struct callback *cb;
- int tmpoffset; /* For debugging. Because we work with pointers into the same string instance.
- * we can figure out offsets by using simple pointer arithmetics.
- */
-
- dbg(lvl_debug, "enter: cs=%p, cs->async=%d, cs->command=%s\n", cs, cs->async, cs->command);
- cs->ctx.expr = cs->command;
- prev = cs->context_attr;
-
- while ((status = get_next_object(&cs->ctx, &cs->res)) != 0) {
- tmpoffset = cs->res.var - cs->command;
- cs->ctx.attr = &prev;
- resolve(&cs->ctx, &cs->res);
-
- if (cs->ctx.error) {
- /* An error occurred while parsing the command */
- tmpoffset = cs->ctx.expr - cs->command;
- dbg(lvl_error, "parsing error: cs=%p, cs->ctx.error=%d\n\t%s\n\t%*s\n", cs, cs->ctx.error, cs->command, tmpoffset + 1, "^");
- return 0;
- } else if (cs->res.attr.type == attr_none) {
- /* We could not resolve an object, perhaps because it has not been created */
- dbg(lvl_error, "could not resolve object in cs=%p:\n\t%s\n\t%*s\n", cs, cs->command, tmpoffset + 1, "^");
- return 0;
- }
-
- if (prev.type != attr_none) {
- func = object_func_lookup(prev.type);
-
- if (func->add_attr) {
- if (status == 2) { // This is not the final attribute name
- cb = callback_new_attr_1(callback_cast(command_saved_callbacks_changed), cs->res.attr.type, (void*)cs);
- } else if (status == 1) { // This is the final attribute name
- cb = callback_new_attr_1(callback_cast(command_saved_evaluate), cs->res.attr.type, (void*)cs);
- cs->ctx.attr = &cs->context_attr;
- } else {
- dbg(lvl_error, "Error: Strange status returned from get_next_object()\n");
- }
-
- cs->num_cbs++;
- cs->cbs = g_realloc(cs->cbs, (sizeof(struct command_saved_cb) * cs->num_cbs));
- cs->cbs[cs->num_cbs-1].cb = cb;
- cs->cbs[cs->num_cbs-1].attr = prev;
-
- cb_attr.u.callback = cb;
- cb_attr.type = attr_callback;
-
- func->add_attr(prev.u.data, &cb_attr);
-
- } else {
- dbg(lvl_error, "Could not add callback because add_attr is missing for type %i\n", prev.type);
- }
- }
-
- if (status == 2) {
- prev = cs->res.attr;
- } else {
- prev = cs->context_attr;
- }
- }
-
- command_saved_evaluate_idle(cs);
-
- dbg(lvl_debug, "done: cs=%p, cs->command=%s\n", cs, cs->command);
- return 1;
-}
-
-/**
- * @brief Creates a new saved command.
- *
- * @param command The command string
- * @param attr The context attribute for the saved command
- * @param cb The callback to call whenver the command is re-evaluated
- * @param async Whether the saved command should be flagged as asynchronous, causing it to be evaluated
- * in an idle callback
- */
-struct command_saved *
-command_saved_attr_new(char *command, struct attr *attr, struct callback *cb, int async)
-{
- struct command_saved *ret;
-
- ret = g_new0(struct command_saved, 1);
- dbg(lvl_debug, "enter, ret=%p, command=%s\n", ret, command);
- ret->command = g_strdup(command);
- ret->context_attr = *attr;
- ret->cb = cb;
- ret->error = not_ready;
- ret->async = async;
-
- if (!command_register_callbacks(ret)) {
- // We try this as an idle call again
- dbg(lvl_debug, "could not register callbacks, will retry as an idle call\n");
- ret->register_cb = callback_new_1(callback_cast(command_saved_callbacks_changed), ret);
- ret->register_ev = event_add_idle(300, ret->register_cb);
- }
-
- return ret;
-}
-
-struct command_saved *
-command_saved_new(char *command, struct navit *navit, struct callback *cb, int async)
-{
- struct attr attr=ATTR_OBJECT(navit, navit);
- return command_saved_attr_new(command, &attr, cb, async);
-}
-
-void
-command_saved_destroy(struct command_saved *cs)
-{
- g_free(cs->command);
- g_free(cs);
-}
diff --git a/navit/command.h b/navit/command.h
deleted file mode 100644
index 985f347eb..000000000
--- a/navit/command.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * 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.
- */
-
-#ifndef NAVIT_COMMAND_H
-#define NAVIT_COMMAND_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct command_table {
- const char *command;
- int (*func)(void *data, char *cmd, struct attr **in, struct attr ***out);
-};
-
-#define command_cast(x) (int (*)(void *, char *, struct attr **, struct attr ***))(x)
-
-/* prototypes */
-enum attr_type;
-struct attr;
-struct callback;
-struct callback_list;
-struct command_saved;
-struct command_table;
-struct navit;
-char *command_error_to_text(int err);
-enum attr_type command_evaluate_to_attr(struct attr *attr, char *expr, int *error, struct attr *ret);
-void command_evaluate_to_void(struct attr *attr, char *expr, int *error);
-char *command_evaluate_to_string(struct attr *attr, char *expr, int *error);
-int command_evaluate_to_int(struct attr *attr, char *expr, int *error);
-int command_evaluate_to_boolean(struct attr *attr, const char *expr, int *error);
-int command_evaluate_to_length(const char *expr, int *error);
-void command_evaluate(struct attr *attr, const char *expr);
-void command_add_table_attr(struct command_table *table, int count, void *data, struct attr *attr);
-void command_add_table(struct callback_list *cbl, struct command_table *table, int count, void *data);
-void command_saved_set_cb(struct command_saved *cs, struct callback *cb);
-int command_saved_get_int(struct command_saved *cs);
-int command_saved_error(struct command_saved *cs);
-struct command_saved *command_saved_attr_new(char *command, struct attr *context, struct callback *cb, int async);
-struct command_saved *command_saved_new(char *command, struct navit *navit, struct callback *cb, int async);
-void command_saved_destroy(struct command_saved *cs);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
- #endif /* NAVIT_COMMAND_H */
diff --git a/navit/config_.c b/navit/config_.c
deleted file mode 100644
index 9f4bd5860..000000000
--- a/navit/config_.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include <signal.h>
-#include "debug.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "callback.h"
-#include "navit.h"
-#include "config_.h"
-#include "file.h"
-#ifdef HAVE_API_WIN32_CE
-#include "libc.h"
-#endif
-
-struct config {
- NAVIT_OBJECT
-} *config;
-
-struct config *
-config_get(void)
-{
- return config;
-}
-
-int config_empty_ok;
-
-int configured;
-
-struct attr_iter {
- void *iter;
-};
-
-void
-config_destroy(struct config *this_)
-{
- attr_list_free(this_->attrs);
- g_free(config);
- exit(0);
-}
-
-static void
-config_terminate(int sig)
-{
- dbg(lvl_debug,"terminating\n");
- config_destroy(config);
-}
-
-static void
-config_new_int(void)
-{
- config=g_new0(struct config, 1);
-#ifndef HAVE_API_WIN32_CE
- signal(SIGTERM, config_terminate);
-#ifndef HAVE_API_WIN32
-#ifndef _MSC_VER
-#ifndef __MINGW32__
- signal(SIGPIPE, SIG_IGN);
-#endif /* __MINGW32__ */
-#endif
-#endif
-#endif
-}
-
-int
-config_get_attr(struct config *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
-}
-
-static int
-config_set_attr_int(struct config *this_, struct attr *attr)
-{
- switch (attr->type) {
- case attr_language:
- setenv("LANG",attr->u.str,1);
- return 1;
- case attr_cache_size:
- return file_set_cache_size(attr->u.num);
- default:
- return 0;
- }
-}
-
-int
-config_set_attr(struct config *this_, struct attr *attr)
-{
- if (config_set_attr_int(this_, attr))
- return navit_object_set_attr((struct navit_object *)this_, attr);
- else
- return 0;
-}
-
-int
-config_add_attr(struct config *this_, struct attr *attr)
-{
- if (!config) {
- config_new_int();
- this_=config;
- }
- return navit_object_add_attr((struct navit_object *)this_, attr);
-}
-
-int
-config_remove_attr(struct config *this_, struct attr *attr)
-{
- return navit_object_remove_attr((struct navit_object *)this_, attr);
-}
-
-struct attr_iter *
-config_attr_iter_new()
-{
- return navit_object_attr_iter_new();
-}
-
-void
-config_attr_iter_destroy(struct attr_iter *iter)
-{
- navit_object_attr_iter_destroy(iter);
-}
-
-
-struct config *
-config_new(struct attr *parent, struct attr **attrs)
-{
- if (configured) {
- dbg(lvl_error,"only one config allowed\n");
- return config;
- }
- if (parent) {
- dbg(lvl_error,"no parent in config allowed\n");
- return NULL;
- }
- if (!config)
- config_new_int();
- config->func=&config_func;
- navit_object_ref((struct navit_object *)config);
- config->attrs=attr_generic_add_attr_list(config->attrs, attrs);
- while (*attrs) {
- if (!config_set_attr_int(config,*attrs)) {
- dbg(lvl_error,"failed to set attribute '%s'\n",attr_to_name((*attrs)->type));
- config_destroy(config);
- config=NULL;
- break;
- }
- attrs++;
- }
- configured=1;
- return config;
-}
-
-struct object_func config_func = {
- attr_config,
- (object_func_new)config_new,
- (object_func_get_attr)navit_object_get_attr,
- (object_func_iter_new)navit_object_attr_iter_new,
- (object_func_iter_destroy)navit_object_attr_iter_destroy,
- (object_func_set_attr)config_set_attr,
- (object_func_add_attr)config_add_attr,
- (object_func_remove_attr)navit_object_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)NULL,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
diff --git a/navit/config_.h b/navit/config_.h
deleted file mode 100644
index 64ac0465c..000000000
--- a/navit/config_.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern int main_argc;
-extern char * const* main_argv;
-extern struct config *config;
-extern int configured;
-extern int config_empty_ok;
-/* prototypes */
-enum attr_type;
-struct attr;
-struct attr_iter;
-struct config;
-struct config * config_get(void);
-void config_destroy(struct config *this_);
-int config_get_attr(struct config *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int config_set_attr(struct config *this_, struct attr *attr);
-int config_add_attr(struct config *this_, struct attr *attr);
-int config_remove_attr(struct config *this_, struct attr *attr);
-struct attr_iter *config_attr_iter_new(void);
-void config_attr_iter_destroy(struct attr_iter *iter);
-struct config *config_new(struct attr *parent, struct attr **attrs);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
diff --git a/navit/coord.c b/navit/coord.c
deleted file mode 100644
index 2bc169d46..000000000
--- a/navit/coord.c
+++ /dev/null
@@ -1,401 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include "debug.h"
-#include "item.h"
-#include "coord.h"
-#include "transform.h"
-#include "projection.h"
-/**
- * @defgroup coord Coordinate handling functions
- * @{
- */
-
-/**
- * Get a coordinate
- *
- * @param p Pointer to the coordinate
- * @returns the coordinate
- */
-
-struct coord *
-coord_get(unsigned char **p)
-{
- struct coord *ret=(struct coord *)(*p);
- *p += sizeof(*ret);
- return ret;
-}
-
-struct coord *
-coord_new(int x, int y)
-{
- struct coord *c=g_new(struct coord, 1);
-
- c->x=x;
- c->y=y;
-
- return c;
-}
-
-struct coord *
-coord_new_from_attrs(struct attr *parent, struct attr **attrs)
-{
- struct attr *x,*y;
- x=attr_search(attrs, NULL, attr_x);
- y=attr_search(attrs, NULL, attr_y);
- if (!x || !y)
- return NULL;
- return coord_new(x->u.num, y->u.num);
-}
-
-
-void
-coord_destroy(struct coord *c)
-{
- g_free(c);
-}
-
-struct coord_rect *
-coord_rect_new(struct coord *lu, struct coord *rl)
-{
- struct coord_rect *r=g_new(struct coord_rect, 1);
-
- dbg_assert(lu->x <= rl->x);
- dbg_assert(lu->y >= rl->y);
-
- r->lu=*lu;
- r->rl=*rl;
-
- return r;
-
-}
-
-void
-coord_rect_destroy(struct coord_rect *r)
-{
- g_free(r);
-}
-
-int
-coord_rect_overlap(struct coord_rect *r1, struct coord_rect *r2)
-{
- dbg_assert(r1->lu.x <= r1->rl.x);
- dbg_assert(r1->lu.y >= r1->rl.y);
- dbg_assert(r2->lu.x <= r2->rl.x);
- dbg_assert(r2->lu.y >= r2->rl.y);
- dbg(lvl_debug,"0x%x,0x%x - 0x%x,0x%x vs 0x%x,0x%x - 0x%x,0x%x\n", r1->lu.x, r1->lu.y, r1->rl.x, r1->rl.y, r2->lu.x, r2->lu.y, r2->rl.x, r2->rl.y);
- if (r1->lu.x > r2->rl.x)
- return 0;
- if (r1->rl.x < r2->lu.x)
- return 0;
- if (r1->lu.y < r2->rl.y)
- return 0;
- if (r1->rl.y > r2->lu.y)
- return 0;
- return 1;
-}
-
-int
-coord_rect_contains(struct coord_rect *r, struct coord *c)
-{
- dbg_assert(r->lu.x <= r->rl.x);
- dbg_assert(r->lu.y >= r->rl.y);
- if (c->x < r->lu.x)
- return 0;
- if (c->x > r->rl.x)
- return 0;
- if (c->y < r->rl.y)
- return 0;
- if (c->y > r->lu.y)
- return 0;
- return 1;
-}
-
-void
-coord_rect_extend(struct coord_rect *r, struct coord *c)
-{
- if (c->x < r->lu.x)
- r->lu.x=c->x;
- if (c->x > r->rl.x)
- r->rl.x=c->x;
- if (c->y < r->rl.y)
- r->rl.y=c->y;
- if (c->y > r->lu.y)
- r->lu.y=c->y;
-}
-
-/**
- * Parses \c char \a *coord_input and writes back the coordinates to \c coord \a *result, using \c projection \a output_projection.
- * \a *coord_input may specify its projection at the beginning.
- * The format for \a *coord_input can be:
- * \li [Proj:][-]0xXX.... [-]0xXX... - Mercator coordinates, hex integers (XX), Proj can be "mg" or "garmin", defaults to mg
- * \li [Proj:][D][D]Dmm.mm.. N/S [D][D]DMM.mm... E/W - lat/long (WGS 84), integer degrees (DD) and minutes as decimal fraction (MM), Proj must be "geo" or absent
- * \li [Proj:][-][D]D.d[d]... [-][D][D]D.d[d] - long/lat (WGS 84, note order!), degrees as decimal fraction, Proj does not matter
- * \li utm[zoneinfo]:[-][D]D.d[d]... [-][D][D]D.d[d] - UTM coordinates, as decimal fraction, with optional zone information (?)
- * Note that the spaces are relevant for parsing.
- *
- * @param *coord_input String to be parsed
- * @param output_projection Desired projection of the result
- * @param *result For returning result
- * @returns The lenght of the parsed string
- */
-
-int
-coord_parse(const char *coord_input, enum projection output_projection, struct coord *result)
-{
- char *proj=NULL,*s,*co;
- const char *str=coord_input;
- int args,ret = 0;
- struct coord_geo g;
- struct coord c,offset;
- enum projection str_pro=projection_none;
-
- dbg(lvl_debug,"enter('%s',%d,%p)\n", coord_input, output_projection, result);
- s=strchr(str,' ');
- co=strchr(str,':');
- if (co && co < s) {
- proj=malloc(co-str+1);
- strncpy(proj, str, co-str);
- proj[co-str]='\0';
- dbg(lvl_debug,"projection=%s\n", proj);
- str=co+1;
- s=strchr(str,' ');
- if (!strcmp(proj, "geo"))
- str_pro = projection_none;
- else {
- str_pro = projection_from_name(proj,&offset);
- if (str_pro == projection_none) {
- dbg(lvl_error, "Unknown projection: %s\n", proj);
- goto out;
- }
- }
- }
- if (! s) {
- ret=0;
- goto out;
- }
- while (*s == ' ') {
- s++;
- }
- if (!strncmp(s, "0x", 2) || !strncmp(s, "-0x", 3)) {
- args=sscanf(str, "%i %i%n",&c.x, &c.y, &ret);
- if (args < 2)
- goto out;
- dbg(lvl_debug,"str='%s' x=0x%x y=0x%x c=%d\n", str, c.x, c.y, ret);
- dbg(lvl_debug,"rest='%s'\n", str+ret);
-
- if (str_pro == projection_none)
- str_pro=projection_mg;
- if (str_pro != output_projection) {
- transform_to_geo(str_pro, &c, &g);
- transform_from_geo(output_projection, &g, &c);
- }
- *result=c;
- } else if (*s == 'N' || *s == 'n' || *s == 'S' || *s == 's') {
- double lng, lat;
- char ns, ew;
- dbg(lvl_debug,"str='%s'\n", str);
- args=sscanf(str, "%lf %c %lf %c%n", &lat, &ns, &lng, &ew, &ret);
- dbg(lvl_debug,"args=%d\n", args);
- dbg(lvl_debug,"lat=%f %c lon=%f %c\n", lat, ns, lng, ew);
- if (args < 4)
- goto out;
- dbg(lvl_debug,"projection=%d str_pro=%d projection_none=%d\n", output_projection, str_pro, projection_none);
- if (str_pro == projection_none) {
- g.lat=floor(lat/100);
- lat-=g.lat*100;
- g.lat+=lat/60;
- g.lng=floor(lng/100);
- lng-=g.lng*100;
- g.lng+=lng/60;
- if (ns == 's' || ns == 'S')
- g.lat=-g.lat;
- if (ew == 'w' || ew == 'W')
- g.lng=-g.lng;
- dbg(lvl_debug,"transform_from_geo(%f,%f)",g.lat,g.lng);
- transform_from_geo(output_projection, &g, result);
- dbg(lvl_debug,"result 0x%x,0x%x\n", result->x,result->y);
- }
- dbg(lvl_debug,"str='%s' x=%f ns=%c y=%f ew=%c c=%d\n", str, lng, ns, lat, ew, ret);
- dbg(lvl_debug,"rest='%s'\n", str+ret);
- } else if (str_pro == projection_utm) {
- double x,y;
- args=sscanf(str, "%lf %lf%n", &x, &y, &ret);
- if (args < 2)
- goto out;
- c.x=x+offset.x;
- c.y=y+offset.y;
- if (str_pro != output_projection) {
- transform_to_geo(str_pro, &c, &g);
- transform_from_geo(output_projection, &g, &c);
- }
- *result=c;
- } else {
- double lng, lat;
- args=sscanf(str, "%lf %lf%n", &lng, &lat, &ret);
- if (args < 2)
- goto out;
- dbg(lvl_debug,"str='%s' x=%f y=%f c=%d\n", str, lng, lat, ret);
- dbg(lvl_debug,"rest='%s'\n", str+ret);
- g.lng=lng;
- g.lat=lat;
- transform_from_geo(output_projection, &g, result);
- }
- ret+=str-coord_input;
- dbg(lvl_info, "ret=%d delta=%d ret_str='%s'\n", ret, GPOINTER_TO_INT(str-coord_input), coord_input+ret);
-out:
- free(proj);
- return ret;
-}
-
-/**
- * A wrapper for coord_parse that also returns the projection.
- * For parameters see coord_parse.
- */
-
-int
-pcoord_parse(const char *c_str, enum projection pro, struct pcoord *pc_ret)
-{
- struct coord c;
- int ret;
- ret = coord_parse(c_str, pro, &c);
- pc_ret->x = c.x;
- pc_ret->y = c.y;
- pc_ret->pro = pro;
- return ret;
-}
-
-void
-coord_print(enum projection pro, struct coord *c, FILE *out) {
- unsigned int x;
- unsigned int y;
- char *sign_x = "";
- char *sign_y = "";
-
- if ( c->x < 0 ) {
- x = -c->x;
- sign_x = "-";
- } else {
- x = c->x;
- }
- if ( c->y < 0 ) {
- y = -c->y;
- sign_y = "-";
- } else {
- y = c->y;
- }
- fprintf( out, "%s: %s0x%x %s0x%x\n",
- projection_to_name( pro ),
- sign_x, x,
- sign_y, y );
- return;
-}
-
-/**
- * @brief Converts a lat/lon into a text formatted text string.
- * @param lat The latitude (if lat is 360 or greater, the latitude will be omitted)
- * @param lng The longitude (if lng is 360 or greater, the longitude will be omitted)
- * @param fmt The format to use.
- * @li DEGREES_DECIMAL=>Degrees with decimal places, i.e. 20.5000°N 110.5000°E
- * @li DEGREES_MINUTES=>Degrees and minutes, i.e. 20°30.00'N 110°30.00'E
- * @li DEGREES_MINUTES_SECONDS=>Degrees, minutes and seconds, i.e. 20°30'30.00"N 110°30'30"E
- *
- *
- * @param buffer A buffer large enough to hold the output + a terminating NULL (up to 31 bytes)
- * @param size The size of the buffer
- *
- */
-void coord_format(float lat,float lng, enum coord_format fmt, char * buffer, int size)
-{
-
- char lat_c='N';
- char lng_c='E';
- float lat_deg,lat_min,lat_sec;
- float lng_deg,lng_min,lng_sec;
- int size_used=0;
-
- if (lng < 0) {
- lng=-lng;
- lng_c='W';
- }
- if (lat < 0) {
- lat=-lat;
- lat_c='S';
- }
- lat_deg=lat;
- lat_min=(lat-floor(lat_deg))*60;
- lat_sec=fmod(lat*3600,60);
- lng_deg=lng;
- lng_min=(lng-floor(lng_deg))*60;
- lng_sec=fmod(lng*3600,60);
- switch(fmt)
- {
-
- case DEGREES_DECIMAL:
- if (lat<360)
- size_used+=g_snprintf(buffer+size_used,size-size_used,"%02.6f°%c",lat,lat_c);
- if ((lat<360)&&(lng<360))
- size_used+=g_snprintf(buffer+size_used,size-size_used," ");
- if (lng<360)
- size_used+=g_snprintf(buffer+size_used,size-size_used,"%03.7f°%c",lng,lng_c);
- break;
- case DEGREES_MINUTES:
- if (lat<360)
- size_used+=g_snprintf(buffer+size_used,size-size_used,"%02.0f°%07.4f' %c",floor(lat_deg),lat_min,lat_c);
- if ((lat<360)&&(lng<360))
- size_used+=g_snprintf(buffer+size_used,size-size_used," ");
- if (lng<360)
- size_used+=g_snprintf(buffer+size_used,size-size_used,"%03.0f°%07.4f' %c",floor(lng_deg),lng_min,lng_c);
- break;
- case DEGREES_MINUTES_SECONDS:
- if (lat<360)
- size_used+=g_snprintf(buffer+size_used,size-size_used,"%02.0f°%02.0f'%05.2f\" %c",floor(lat_deg),floor(lat_min),lat_sec,lat_c);
- if ((lat<360)&&(lng<360))
- size_used+=g_snprintf(buffer+size_used,size-size_used," ");
- if (lng<360)
- size_used+=g_snprintf(buffer+size_used,size-size_used,"%03.0f°%02.0f'%05.2f\" %c",floor(lng_deg),floor(lng_min),lng_sec,lng_c);
- break;
-
-
- }
-
-}
-
-unsigned int
-coord_hash(const void *key)
-{
- const struct coord *c=key;
- return c->x^c->y;
-}
-
-int
-coord_equal(const void *a, const void *b)
-{
- const struct coord *c_a=a;
- const struct coord *c_b=b;
- if (c_a->x == c_b->x && c_a->y == c_b->y)
- return TRUE;
- return FALSE;
-}
-/** @} */
diff --git a/navit/coord.h b/navit/coord.h
deleted file mode 100644
index 8d08c0353..000000000
--- a/navit/coord.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_COORD_H
-#define NAVIT_COORD_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include <stdio.h>
-#include "config.h"
-#include "projection.h"
-
-#define coord_is_equal(a,b) ((a).x==(b).x && (a).y==(b).y)
-
-/*! A integer mercator coordinate */
-struct coord {
- int x; /*!< X-Value */
- int y; /*!< Y-Value */
-};
-
-/*! A integer mercator coordinate carrying its projection */
-struct pcoord {
- enum projection pro;
- int x; /*!< X-Value */
- int y; /*!< Y-Value */
-};
-
-struct coord_rect {
- struct coord lu;
- struct coord rl;
-};
-
-
-#ifdef AVOID_FLOAT
-/**
- * On platforms where we are trying to avoid floats, sometimes we can't.
- * It is better on these platforms to use single precision floating points
- * over double percision ones since performance is much better.
- */
-typedef float navit_float;
-#define navit_sin(x) sinf(x)
-#define navit_cos(x) cosf(x)
-#define navit_tan(x) tanf(x)
-#define navit_atan(x) atanf(x)
-#define navit_acos(x) acosf(x)
-#define navit_asin(x) asinf(x)
-#define navit_sqrt(x) sqrtf(x)
-#else
-typedef double navit_float;
-#define navit_sin(x) sin(x)
-#define navit_cos(x) cos(x)
-#define navit_tan(x) tan(x)
-#define navit_atan(x) atan(x)
-#define navit_acos(x) acos(x)
-#define navit_asin(x) asin(x)
-#define navit_sqrt(x) sqrt(x)
-#endif
-
-
-//! A double mercator coordinate
-struct coord_d {
- double x; /*!< X-Value */
- double y; /*!< Y-Value */
-};
-
-//! A WGS84 coordinate
-struct coord_geo {
- navit_float lng; /*!< Longitude */
- navit_float lat; /*!< Latitude */
-};
-
-//! A cartesian coordinate
-struct coord_geo_cart {
- navit_float x; /*!< X-Value */
- navit_float y; /*!< Y-Value */
- navit_float z; /*!< Z-Value */
-};
-
-/**
- * An enumeration of formats for printing geographic coordinates in.
- *
- */
-enum coord_format
-{
- /**
- * Degrees with decimal places.
- * Ie 20.5000 N 110.5000 E
- */
- DEGREES_DECIMAL,
-
- /**
- * Degrees and minutes.
- * ie 20 30.00 N 110 30.00 E
- */
- DEGREES_MINUTES,
- /**
- * Degrees, minutes and seconds.
- * ie 20 30 30.00 N 110 30 30 E
- */
- DEGREES_MINUTES_SECONDS
-};
-
-enum projection;
-struct attr;
-
-struct coord * coord_get(unsigned char **p);
-struct coord * coord_new(int x, int y);
-struct coord * coord_new_from_attrs(struct attr *parent, struct attr **attrs);
-void coord_destroy(struct coord *c);
-int coord_parse(const char *c_str, enum projection pro, struct coord *c_ret);
-int pcoord_parse(const char *c_str, enum projection pro, struct pcoord *c_ret);
-void coord_print(enum projection pro, struct coord *c, FILE *out);
-struct coord_rect * coord_rect_new(struct coord *lu, struct coord *rl);
-void coord_rect_destroy(struct coord_rect *r);
-int coord_rect_overlap(struct coord_rect *r1, struct coord_rect *r2);
-int coord_rect_contains(struct coord_rect *r, struct coord *c);
-void coord_rect_extend(struct coord_rect *r, struct coord *c);
-void coord_format(float lat,float lng, enum coord_format, char * buffer, int size);
-
-/* prototypes */
-enum coord_format;
-enum projection;
-struct attr;
-struct coord;
-struct coord_rect;
-struct pcoord;
-struct coord *coord_get(unsigned char **p);
-struct coord *coord_new(int x, int y);
-struct coord *coord_new_from_attrs(struct attr *parent, struct attr **attrs);
-void coord_destroy(struct coord *c);
-struct coord_rect *coord_rect_new(struct coord *lu, struct coord *rl);
-void coord_rect_destroy(struct coord_rect *r);
-int coord_rect_overlap(struct coord_rect *r1, struct coord_rect *r2);
-int coord_rect_contains(struct coord_rect *r, struct coord *c);
-void coord_rect_extend(struct coord_rect *r, struct coord *c);
-int coord_parse(const char *c_str, enum projection pro, struct coord *c_ret);
-int pcoord_parse(const char *c_str, enum projection pro, struct pcoord *pc_ret);
-void coord_print(enum projection pro, struct coord *c, FILE *out);
-void coord_format(float lat, float lng, enum coord_format fmt, char *buffer, int size);
-unsigned int coord_hash(const void *key);
-int coord_equal(const void *a, const void *b);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/navit/country.c b/navit/country.c
deleted file mode 100644
index 7d13e69e7..000000000
--- a/navit/country.c
+++ /dev/null
@@ -1,438 +0,0 @@
-/**
- * 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 <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <glib.h>
-#include "debug.h"
-#include "item.h"
-#include "country.h"
-#include "search.h"
-#include "linguistics.h"
-#include "navit_nls.h"
-
-struct country {
- int id;
- const char *car;
- const char *iso2;
- const char *iso3;
- const char *name;
-};
-
-/* List of all known countries and their codes.
- * If you update this list, look at country_table array in maptool/osm.c also. */
-static struct country country[]= {
- { 20, "AND", "AD", "AND", /* 020 */ _n("Andorra")},
- {784, "UAE", "AE", "ARE", /* 784 */ _n("United Arab Emirates")},
- { 4, "AFG", "AF", "AFG", /* 004 */ _n("Afghanistan")},
- { 28, "AG", "AG", "ATG", /* 028 */ _n("Antigua and Barbuda")},
- {660, NULL, "AI", "AIA", /* 660 */ _n("Anguilla")},
- { 8, "AL", "AL", "ALB", /* 008 */ _n("Albania")},
- { 51, "ARM", "AM", "ARM", /* 051 */ _n("Armenia")},
- {530, "NA", "AN", "ANT", /* 530 */ _n("Netherlands Antilles")},
- { 24, "ANG", "AO", "AGO", /* 024 */ _n("Angola")},
- { 10, NULL, "AQ", "ATA", /* 010 */ _n("Antarctica")},
- { 32, "RA", "AR", "ARG", /* 032 */ _n("Argentina")},
- { 16, NULL, "AS", "ASM", /* 016 */ _n("American Samoa")},
- { 40, "A", "AT", "AUT", /* 040 */ _n("Austria")},
- { 36, "AUS", "AU", "AUS", /* 036 */ _n("Australia")},
- {533, "ARU", "AW", "ABW", /* 533 */ _n("Aruba")},
- {248, "AX", "AX", "ALA", /* 248 */ _n("Aland Islands")},
- { 31, "AZ", "AZ", "AZE", /* 031 */ _n("Azerbaijan")},
- { 70, "BiH", "BA", "BIH", /* 070 */ _n("Bosnia and Herzegovina")},
- { 52, "BDS", "BB", "BRB", /* 052 */ _n("Barbados")},
- { 50, "BD", "BD", "BGD", /* 050 */ _n("Bangladesh")},
- { 56, "B", "BE", "BEL", /* 056 */ _n("Belgium")},
- {854, "BF", "BF", "BFA", /* 854 */ _n("Burkina Faso")},
- {100, "BG", "BG", "BGR", /* 100 */ _n("Bulgaria")},
- { 48, "BRN", "BH", "BHR", /* 048 */ _n("Bahrain")},
- {108, "RU", "BI", "BDI", /* 108 */ _n("Burundi")},
- {204, "BJ", "BJ", "BEN", /* 204 */ _n("Benin")},
- {652, NULL, "BL", "BLM", /* 652 */ _n("Saint Barthelemy")},
- { 60, NULL, "BM", "BMU", /* 060 */ _n("Bermuda")},
- { 96, "BRU", "BN", "BRN", /* 096 */ _n("Brunei Darussalam")},
- { 68, "BOL", "BO", "BOL", /* 068 */ _n("Bolivia")},
- {535, NULL, "BQ", "BES", /* 535 */ _n("Bonaire, Sint Eustatius and Saba")},
- { 76, "BR", "BR", "BRA", /* 076 */ _n("Brazil")},
- { 44, "BS", "BS", "BHS", /* 044 */ _n("Bahamas")},
- { 64, "BHT", "BT", "BTN", /* 064 */ _n("Bhutan")},
- { 74, NULL, "BV", "BVT", /* 074 */ _n("Bouvet Island")},
- { 72, "RB", "BW", "BWA", /* 072 */ _n("Botswana")},
- {112, "BY", "BY", "BLR", /* 112 */ _n("Belarus")},
- { 84, "BZ", "BZ", "BLZ", /* 084 */ _n("Belize")},
- {124, "CDN", "CA", "CAN", /* 124 */ _n("Canada")},
- {166, NULL, "CC", "CCK", /* 166 */ _n("Cocos (Keeling) Islands")},
- {180, "CGO", "CD", "COD", /* 180 */ _n("Congo, Democratic Republic of the")},
- {140, "RCA", "CF", "CAF", /* 140 */ _n("Central African Republic")},
- {178, NULL, "CG", "COG", /* 178 */ _n("Congo")},
- {756, "CH", "CH", "CHE", /* 756 */ _n("Switzerland")},
- {384, "CI", "CI", "CIV", /* 384 */ _n("Cote d'Ivoire")},
- {184, NULL, "CK", "COK", /* 184 */ _n("Cook Islands")},
- {152, "RCH", "CL", "CHL", /* 152 */ _n("Chile")},
- {120, "CAM", "CM", "CMR", /* 120 */ _n("Cameroon")},
- {156, "RC", "CN", "CHN", /* 156 */ _n("China")},
- {170, "CO", "CO", "COL", /* 170 */ _n("Colombia")},
- {188, "CR", "CR", "CRI", /* 188 */ _n("Costa Rica")},
- {192, "C", "CU", "CUB", /* 192 */ _n("Cuba")},
- {132, "CV", "CV", "CPV", /* 132 */ _n("Cape Verde")},
- {531, NULL, "CW", "CUW", /* 531 */ _n("Curacao")},
- {162, NULL, "CX", "CXR", /* 162 */ _n("Christmas Island")},
- {196, "CY", "CY", "CYP", /* 196 */ _n("Cyprus")},
- {203, "CZ", "CZ", "CZE", /* 203 */ _n("Czech Republic")},
- {276, "D", "DE", "DEU", /* 276 */ _n("Germany")},
- {262, "DJI", "DJ", "DJI", /* 262 */ _n("Djibouti")},
- {208, "DK", "DK", "DNK", /* 208 */ _n("Denmark")},
- {212, "WD", "DM", "DMA", /* 212 */ _n("Dominica")},
- {214, "DOM", "DO", "DOM", /* 214 */ _n("Dominican Republic")},
- { 12, "DZ", "DZ", "DZA", /* 012 */ _n("Algeria")},
- {218, "EC", "EC", "ECU", /* 218 */ _n("Ecuador")},
- {233, "EST", "EE", "EST", /* 233 */ _n("Estonia")},
- {818, "ET", "EG", "EGY", /* 818 */ _n("Egypt")},
- {732, "WSA", "EH", "ESH", /* 732 */ _n("Western Sahara")},
- {232, "ER", "ER", "ERI", /* 232 */ _n("Eritrea")},
- {724, "E", "ES", "ESP", /* 724 */ _n("Spain")},
- {231, "ETH", "ET", "ETH", /* 231 */ _n("Ethiopia")},
- {246, "FIN", "FI", "FIN", /* 246 */ _n("Finland")},
- {242, "FJI", "FJ", "FJI", /* 242 */ _n("Fiji")},
- {238, NULL, "FK", "FLK", /* 238 */ _n("Falkland Islands (Malvinas)")},
- {583, "FSM", "FM", "FSM", /* 583 */ _n("Micronesia, Federated States of")},
- {234, "FO", "FO", "FRO", /* 234 */ _n("Faroe Islands")},
- {250, "F", "FR", "FRA", /* 250 */ _n("France")},
- {266, "G", "GA", "GAB", /* 266 */ _n("Gabon")},
- {826, "GB", "GB", "GBR", /* 826 */ _n("United Kingdom")},
- {308, "WG", "GD", "GRD", /* 308 */ _n("Grenada")},
- {268, "GE", "GE", "GEO", /* 268 */ _n("Georgia")},
- {254, NULL, "GF", "GUF", /* 254 */ _n("French Guiana")},
- {831, NULL, "GG", "GGY", /* 831 */ _n("Guernsey")},
- {288, "GH", "GH", "GHA", /* 288 */ _n("Ghana")},
- {292, "GBZ", "GI", "GIB", /* 292 */ _n("Gibraltar")},
- {304, "KN", "GL", "GRL", /* 304 */ _n("Greenland")},
- {270, "WAG", "GM", "GMB", /* 270 */ _n("Gambia")},
- {324, "RG", "GN", "GIN", /* 324 */ _n("Guinea")},
- {312, NULL, "GP", "GLP", /* 312 */ _n("Guadeloupe")},
- {226, "GQ", "GQ", "GNQ", /* 226 */ _n("Equatorial Guinea")},
- {300, "GR", "GR", "GRC", /* 300 */ _n("Greece")},
- {239, NULL, "GS", "SGS", /* 239 */ _n("South Georgia and the South Sandwich Islands")},
- {320, "GCA", "GT", "GTM", /* 320 */ _n("Guatemala")},
- {316, NULL, "GU", "GUM", /* 316 */ _n("Guam")},
- {624, "GUB", "GW", "GNB", /* 624 */ _n("Guinea-Bissau")},
- {328, "GUY", "GY", "GUY", /* 328 */ _n("Guyana")},
- {344, "HK", "HK", "HKG", /* 344 */ _n("Hong Kong")},
- {334, NULL, "HM", "HMD", /* 334 */ _n("Heard Island and McDonald Islands")},
- {340, "HN", "HN", "HND", /* 340 */ _n("Honduras")},
- {191, "HR", "HR", "HRV", /* 191 */ _n("Croatia")},
- {332, "RH", "HT", "HTI", /* 332 */ _n("Haiti")},
- {348, "H", "HU", "HUN", /* 348 */ _n("Hungary")},
- {360, "RI", "ID", "IDN", /* 360 */ _n("Indonesia")},
- {372, "IRL", "IE", "IRL", /* 372 */ _n("Ireland")},
- {376, "IL", "IL", "ISR", /* 376 */ _n("Israel")},
- {833, NULL, "IM", "IMN", /* 833 */ _n("Isle of Man")},
- {356, "IND", "IN", "IND", /* 356 */ _n("India")},
- { 86, NULL, "IO", "IOT", /* 086 */ _n("British Indian Ocean Territory")},
- {368, "IRQ", "IQ", "IRQ", /* 368 */ _n("Iraq")},
- {364, "IR", "IR", "IRN", /* 364 */ _n("Iran, Islamic Republic of")},
- {352, "IS", "IS", "ISL", /* 352 */ _n("Iceland")},
- {380, "I", "IT", "ITA", /* 380 */ _n("Italy")},
- {832, NULL, "JE", "JEY", /* 832 */ _n("Jersey")},
- {388, "JA", "JM", "JAM", /* 388 */ _n("Jamaica")},
- {400, "JOR", "JO", "JOR", /* 400 */ _n("Jordan")},
- {392, "J", "JP", "JPN", /* 392 */ _n("Japan")},
- {404, "EAK", "KE", "KEN", /* 404 */ _n("Kenya")},
- {417, "KS", "KG", "KGZ", /* 417 */ _n("Kyrgyzstan")},
- {116, "K", "KH", "KHM", /* 116 */ _n("Cambodia")},
- {296, "KIR", "KI", "KIR", /* 296 */ _n("Kiribati")},
- {174, "COM", "KM", "COM", /* 174 */ _n("Comoros")},
- {659, "KAN", "KN", "KNA", /* 659 */ _n("Saint Kitts and Nevis")},
- {408, "KP", "KP", "PRK", /* 408 */ _n("Korea, Democratic People's Republic of")},
- {410, "ROK", "KR", "KOR", /* 410 */ _n("Korea, Republic of")},
- {414, "KWT", "KW", "KWT", /* 414 */ _n("Kuwait")},
- {136, NULL, "KY", "CYM", /* 136 */ _n("Cayman Islands")},
- {398, "KZ", "KZ", "KAZ", /* 398 */ _n("Kazakhstan")},
- {418, "LAO", "LA", "LAO", /* 418 */ _n("Lao People's Democratic Republic")},
- {422, "RL", "LB", "LBN", /* 422 */ _n("Lebanon")},
- {662, "WL", "LC", "LCA", /* 662 */ _n("Saint Lucia")},
- {438, "FL", "LI", "LIE", /* 438 */ _n("Liechtenstein")},
- {144, "CL", "LK", "LKA", /* 144 */ _n("Sri Lanka")},
- {430, "LB", "LR", "LBR", /* 430 */ _n("Liberia")},
- {426, "LS", "LS", "LSO", /* 426 */ _n("Lesotho")},
- {440, "LT", "LT", "LTU", /* 440 */ _n("Lithuania")},
- {442, "L", "LU", "LUX", /* 442 */ _n("Luxembourg")},
- {428, "LV", "LV", "LVA", /* 428 */ _n("Latvia")},
- {434, "LAR", "LY", "LBY", /* 434 */ _n("Libya")},
- {504, "MA", "MA", "MAR", /* 504 */ _n("Morocco")},
- {492, "MC", "MC", "MCO", /* 492 */ _n("Monaco")},
- {498, "MD", "MD", "MDA", /* 498 */ _n("Moldova, Republic of")},
- {499, "MNE", "ME", "MNE", /* 499 */ _n("Montenegro")},
- {663, NULL, "MF", "MAF", /* 663 */ _n("Saint Martin (French part)")},
- {450, "RM", "MG", "MDG", /* 450 */ _n("Madagascar")},
- {584, "MH", "MH", "MHL", /* 584 */ _n("Marshall Islands")},
- {807, "MK", "MK", "MKD", /* 807 */ _n("Macedonia, the former Yugoslav Republic of")},
- {466, "RMM", "ML", "MLI", /* 466 */ _n("Mali")},
- {104, "MYA", "MM", "MMR", /* 104 */ _n("Myanmar")},
- {496, "MGL", "MN", "MNG", /* 496 */ _n("Mongolia")},
- {446, NULL, "MO", "MAC", /* 446 */ _n("Macao")},
- {580, NULL, "MP", "MNP", /* 580 */ _n("Northern Mariana Islands")},
- {474, NULL, "MQ", "MTQ", /* 474 */ _n("Martinique")},
- {478, "RIM", "MR", "MRT", /* 478 */ _n("Mauritania")},
- {500, NULL, "MS", "MSR", /* 500 */ _n("Montserrat")},
- {470, "M", "MT", "MLT", /* 470 */ _n("Malta")},
- {480, "MS", "MU", "MUS", /* 480 */ _n("Mauritius")},
- {462, "MV", "MV", "MDV", /* 462 */ _n("Maldives")},
- {454, "MW", "MW", "MWI", /* 454 */ _n("Malawi")},
- {484, "MEX", "MX", "MEX", /* 484 */ _n("Mexico")},
- {458, "MAL", "MY", "MYS", /* 458 */ _n("Malaysia")},
- {508, "MOC", "MZ", "MOZ", /* 508 */ _n("Mozambique")},
- {516, "NAM", "NA", "NAM", /* 516 */ _n("Namibia")},
- {540, "NCL", "NC", "NCL", /* 540 */ _n("New Caledonia")},
- {562, "RN", "NE", "NER", /* 562 */ _n("Niger")},
- {574, NULL, "NF", "NFK", /* 574 */ _n("Norfolk Island")},
- {566, "NGR", "NG", "NGA", /* 566 */ _n("Nigeria")},
- {558, "NIC", "NI", "NIC", /* 558 */ _n("Nicaragua")},
- {528, "NL", "NL", "NLD", /* 528 */ _n("Netherlands")},
- {578, "N", "NO", "NOR", /* 578 */ _n("Norway")},
- {524, "NEP", "NP", "NPL", /* 524 */ _n("Nepal")},
- {520, "NAU", "NR", "NRU", /* 520 */ _n("Nauru")},
- {570, NULL, "NU", "NIU", /* 570 */ _n("Niue")},
- {554, "NZ", "NZ", "NZL", /* 554 */ _n("New Zealand")},
- {512, "OM", "OM", "OMN", /* 512 */ _n("Oman")},
- {591, "PA", "PA", "PAN", /* 591 */ _n("Panama")},
- {604, "PE", "PE", "PER", /* 604 */ _n("Peru")},
- {258, NULL, "PF", "PYF", /* 258 */ _n("French Polynesia")},
- {598, "PNG", "PG", "PNG", /* 598 */ _n("Papua New Guinea")},
- {608, "RP", "PH", "PHL", /* 608 */ _n("Philippines")},
- {586, "PK", "PK", "PAK", /* 586 */ _n("Pakistan")},
- {616, "PL", "PL", "POL", /* 616 */ _n("Poland")},
- {666, NULL, "PM", "SPM", /* 666 */ _n("Saint Pierre and Miquelon")},
- {612, NULL, "PN", "PCN", /* 612 */ _n("Pitcairn")},
- {630, "PRI", "PR", "PRI", /* 630 */ _n("Puerto Rico")},
- {275, "AUT", "PS", "PSE", /* 275 */ _n("Palestinian Territory, Occupied")},
- {620, "P", "PT", "PRT", /* 620 */ _n("Portugal")},
- {585, "PAL", "PW", "PLW", /* 585 */ _n("Palau")},
- {600, "PY", "PY", "PRY", /* 600 */ _n("Paraguay")},
- {634, "Q", "QA", "QAT", /* 634 */ _n("Qatar")},
- {638, NULL, "RE", "REU", /* 638 */ _n("Reunion")},
- {642, "RO", "RO", "ROU", /* 642 */ _n("Romania")},
- {688, "SRB", "RS", "SRB", /* 688 */ _n("Serbia")},
- {643, "RUS", "RU", "RUS", /* 643 */ _n("Russian Federation")},
- {646, "RWA", "RW", "RWA", /* 646 */ _n("Rwanda")},
- {682, "KSA", "SA", "SAU", /* 682 */ _n("Saudi Arabia")},
- { 90, "SOL", "SB", "SLB", /* 090 */ _n("Solomon Islands")},
- {690, "SY", "SC", "SYC", /* 690 */ _n("Seychelles")},
- {736, "SUD", "SD", "SDN", /* 736 */ _n("Sudan")},
- {752, "S", "SE", "SWE", /* 752 */ _n("Sweden")},
- {702, "SGP", "SG", "SGP", /* 702 */ _n("Singapore")},
- {654, NULL, "SH", "SHN", /* 654 */ _n("Saint Helena")},
- {705, "SLO", "SI", "SVN", /* 705 */ _n("Slovenia")},
- {744, NULL, "SJ", "SJM", /* 744 */ _n("Svalbard and Jan Mayen")},
- {703, "SK", "SK", "SVK", /* 703 */ _n("Slovakia")},
- {694, "WAL", "SL", "SLE", /* 694 */ _n("Sierra Leone")},
- {674, "RSM", "SM", "SMR", /* 674 */ _n("San Marino")},
- {686, "SN", "SN", "SEN", /* 686 */ _n("Senegal")},
- {706, "SO", "SO", "SOM", /* 706 */ _n("Somalia")},
- {740, "SME", "SR", "SUR", /* 740 */ _n("Suriname")},
- {728, NULL, "SS", "SSD", /* 728 */ _n("South Sudan")},
- {678, "STP", "ST", "STP", /* 678 */ _n("Sao Tome and Principe")},
- {222, "ES", "SV", "SLV", /* 222 */ _n("El Salvador")},
- {534, NULL, "SX", "SXM", /* 534 */ _n("Sint Maarten (Dutch part)")},
- {760, "SYR", "SY", "SYR", /* 760 */ _n("Syrian Arab Republic")},
- {748, "SD", "SZ", "SWZ", /* 748 */ _n("Swaziland")},
- {796, NULL, "TC", "TCA", /* 796 */ _n("Turks and Caicos Islands")},
- {148, "TD", "TD", "TCD", /* 148 */ _n("Chad")},
- {260, "ARK", "TF", "ATF", /* 260 */ _n("French Southern Territories")},
- {768, "RT", "TG", "TGO", /* 768 */ _n("Togo")},
- {764, "T", "TH", "THA", /* 764 */ _n("Thailand")},
- {762, "TJ", "TJ", "TJK", /* 762 */ _n("Tajikistan")},
- {772, NULL, "TK", "TKL", /* 772 */ _n("Tokelau")},
- {626, "TL", "TL", "TLS", /* 626 */ _n("Timor-Leste")},
- {795, "TM", "TM", "TKM", /* 795 */ _n("Turkmenistan")},
- {788, "TN", "TN", "TUN", /* 788 */ _n("Tunisia")},
- {776, "TON", "TO", "TON", /* 776 */ _n("Tonga")},
- {792, "TR", "TR", "TUR", /* 792 */ _n("Turkey")},
- {780, "TT", "TT", "TTO", /* 780 */ _n("Trinidad and Tobago")},
- {798, "TUV", "TV", "TUV", /* 798 */ _n("Tuvalu")},
- {158, NULL, "TW", "TWN", /* 158 */ _n("Taiwan, Province of China")},
- {834, "EAT", "TZ", "TZA", /* 834 */ _n("Tanzania, United Republic of")},
- {804, "UA", "UA", "UKR", /* 804 */ _n("Ukraine")},
- {800, "EAU", "UG", "UGA", /* 800 */ _n("Uganda")},
- {581, NULL, "UM", "UMI", /* 581 */ _n("United States Minor Outlying Islands")},
- {840, "USA", "US", "USA", /* 840 */ _n("United States")},
- {858, "ROU", "UY", "URY", /* 858 */ _n("Uruguay")},
- {860, "UZ", "UZ", "UZB", /* 860 */ _n("Uzbekistan")},
- {336, "SCV", "VA", "VAT", /* 336 */ _n("Holy See (Vatican City State)")},
- {670, "WV", "VC", "VCT", /* 670 */ _n("Saint Vincent and the Grenadines")},
- {862, "YV", "VE", "VEN", /* 862 */ _n("Venezuela")},
- { 92, NULL, "VG", "VGB", /* 092 */ _n("Virgin Islands, British")},
- {850, NULL, "VI", "VIR", /* 850 */ _n("Virgin Islands, U.S.")},
- {704, "VN", "VN", "VNM", /* 704 */ _n("Viet Nam")},
- {548, "VAN", "VU", "VUT", /* 548 */ _n("Vanuatu")},
- {876, NULL, "WF", "WLF", /* 876 */ _n("Wallis and Futuna")},
- {882, "WS", "WS", "WSM", /* 882 */ _n("Samoa")},
- {887, "YAR", "YE", "YEM", /* 887 */ _n("Yemen")},
- {175, NULL, "YT", "MYT", /* 175 */ _n("Mayotte")},
- {710, "ZA", "ZA", "ZAF", /* 710 */ _n("South Africa") },
- {894, "Z", "ZM", "ZMB", /* 894 */ _n("Zambia")},
- {716, "ZW", "ZW", "ZWE", /* 716 */ _n("Zimbabwe")},
- {999, "*", "*", "*", _n("* Unknown, add is_in tags to those cities")},
-};
-
-
-struct country_search {
- struct attr search;
- int len;
- int partial;
- struct item item;
- int count;
- struct country *country;
- enum attr_type attr_next;
-};
-
-static int
-country_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct country_search *this_=priv_data;
- struct country *country=this_->country;
-
- attr->type=attr_type;
- switch (attr_type) {
- case attr_any:
- while (this_->attr_next != attr_none) {
- if (country_attr_get(this_, this_->attr_next, attr))
- return 1;
- }
- return 0;
- // Cast to char* necessary but safe, because our callers know
- // not to modify attr->u.str (hopefully).
- case attr_label:
- attr->u.str=(char*)navit_nls_gettext(country->name);
- this_->attr_next=attr_country_id;
- return 1;
- case attr_country_id:
- attr->u.num=country->id;
- this_->attr_next=country->car ? attr_country_car : attr_country_iso2;
- return 1;
- case attr_country_car:
- attr->u.str=(char*)country->car;
- this_->attr_next=attr_country_iso2;
- return attr->u.str ? 1 : 0;
- case attr_country_iso2:
- attr->u.str=(char*)country->iso2;
- this_->attr_next=attr_country_iso3;
- return 1;
- case attr_country_iso3:
- attr->u.str=(char*)country->iso3;
- this_->attr_next=attr_country_name;
- return 1;
- case attr_country_name:
- attr->u.str=(char*)navit_nls_gettext(country->name);
- this_->attr_next=attr_none;
- return 1;
- default:
- return 0;
- }
-}
-
-
-
-struct item_methods country_meth = {
- NULL, /* coord_rewind */
- NULL, /* coord_get */
- NULL, /* attr_rewind */
- country_attr_get, /* attr_get */
-};
-
-struct country_search *
-country_search_new(struct attr *search, int partial)
-{
- struct country_search *ret=g_new(struct country_search, 1);
- ret->search=*search;
- if (search->type != attr_country_id) {
- ret->search.u.str=linguistics_casefold(ret->search.u.str);
- ret->len=strlen(ret->search.u.str);
- }
- else
- ret->len=0;
- ret->partial=partial;
- ret->count=0;
-
- ret->item.type=type_country_label;
- ret->item.id_hi=0;
- ret->item.map=NULL;
- ret->item.meth=&country_meth;
- ret->item.priv_data=ret;
-
- return ret;
-}
-
-static int
-match(struct country_search *this_, enum attr_type type, const char *name)
-{
- int ret;
- if (!name)
- return 0;
- if (this_->search.type != type && this_->search.type != attr_country_all)
- return 0;
- ret=linguistics_compare(name, this_->search.u.str, linguistics_cmp_expand | (this_->partial?linguistics_cmp_partial:0) | linguistics_cmp_words)==0;
- return ret;
-
-}
-
-
-struct item *
-country_search_get_item(struct country_search *this_)
-{
- for (;;) {
- if (this_->count >= sizeof(country)/sizeof(struct country))
- return NULL;
- this_->country=&country[this_->count++];
- if ((this_->search.type == attr_country_id && this_->search.u.num == this_->country->id) ||
- match(this_, attr_country_iso3, this_->country->iso3) ||
- match(this_, attr_country_iso2, this_->country->iso2) ||
- match(this_, attr_country_car, this_->country->car) ||
- match(this_, attr_country_name, navit_nls_gettext(this_->country->name))) {
- this_->item.id_lo=this_->country->id;
- return &this_->item;
- }
- }
-}
-
-static struct attr country_default_attr;
-static char iso2[3];
-
-struct attr *
-country_default(void)
-{
- char *lang;
- if (country_default_attr.u.str)
- return &country_default_attr;
- lang=getenv("LANG");
- if (!lang || strlen(lang) < 5)
- return NULL;
- strncpy(iso2, lang+3, 2);
- country_default_attr.type=attr_country_iso2;
- country_default_attr.u.str=iso2;
- return &country_default_attr;
-}
-
-void
-country_search_destroy(struct country_search *this_)
-{
- g_free(this_->search.u.str);
- g_free(this_);
-}
diff --git a/navit/country.h b/navit/country.h
deleted file mode 100644
index 6f0d40476..000000000
--- a/navit/country.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_COUNTRY_H
-#define NAVIT_COUNTRY_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* prototypes */
-struct attr;
-struct country_search;
-struct item;
-struct country_search *country_search_new(struct attr *search, int partial);
-struct item *country_search_get_item(struct country_search *this_);
-struct attr *country_default(void);
-void country_search_destroy(struct country_search *this_);
-/* end of prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/data.h b/navit/data.h
deleted file mode 100644
index 19928a391..000000000
--- a/navit/data.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_DATA_H
-#define NAVIT_DATA_H
-
-#include "config.h"
-
-#ifdef WORDS_BIGENDIAN
-#include <byteswap.h>
-#endif
-
-static inline unsigned char
-get_u8(unsigned char **p)
-{
- return *((*p)++);
-}
-
-static inline unsigned short
-get_u16(unsigned char **p) {
- unsigned short ret;
- ret=*((unsigned short *)*p);
- *p+=sizeof(unsigned short);
-#ifdef WORDS_BIGENDIAN
- return __bswap_16(ret);
-#else
- return ret;
-#endif
-}
-
-static inline unsigned short
-get_u16_unal(unsigned char **p) {
- unsigned short ret;
- ret=*(*p)++;
- ret|=(*(*p)++) << 8;
- return ret;
-}
-
-
-static inline unsigned int
-get_u24(unsigned char **p) {
- unsigned long ret;
- ret=get_u16(p);
- ret|=*((*p)++) << 16;
- return ret;
-}
-
-
-static inline unsigned int
-get_u24_unal(unsigned char **p) {
- unsigned long ret;
- ret=get_u16_unal(p);
- ret|=*((*p)++) << 16;
- return ret;
-}
-
-
-static inline unsigned int
-get_u32(unsigned char **p) {
- unsigned long ret;
- ret=*((unsigned int *)*p);
- *p+=sizeof(unsigned int);
-#ifdef WORDS_BIGENDIAN
- return __bswap_32(ret);
-#else
- return ret;
-#endif
-}
-
-static inline unsigned int
-get_u32_unal(unsigned char **p) {
- unsigned long ret;
- ret=*(*p)++;
- ret|=(*(*p)++) << 8;
- ret|=(*(*p)++) << 16;
- ret|=(*(*p)++) << 24;
- return ret;
-}
-
-static inline char *
-get_string(unsigned char **p)
-{
- char *ret=(char *)(*p);
- while (**p) (*p)++;
- (*p)++;
- return ret;
-}
-
-#define L(x) ({ unsigned char *t=(unsigned char *)&(x); t[0] | (t[1] << 8) | (t[2] << 16) | (t[3] << 24); })
-
-#endif
-
diff --git a/navit/data_window.c b/navit/data_window.c
deleted file mode 100644
index 8db7d5d54..000000000
--- a/navit/data_window.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * 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 "data_window.h"
-
-void
-datawindow_mode(struct datawindow *win, int start)
-{
- win->meth.mode(win->priv, start);
-}
-
-void
-datawindow_add(struct datawindow *win, struct param_list *param, int count)
-{
- win->meth.add(win->priv, param, count);
-}
-
-void
-datawindow_destroy(struct datawindow *win)
-{
- win->meth.destroy(win->priv);
- g_free(win);
-}
-
diff --git a/navit/data_window.h b/navit/data_window.h
deleted file mode 100644
index 340a7f3ea..000000000
--- a/navit/data_window.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_DATA_WINDOW_H
-#define NAVIT_DATA_WINDOW_H
-
-struct datawindow;
-struct param_list;
-struct datawindow_priv;
-
-struct datawindow_methods {
- void (*destroy)(struct datawindow_priv *win);
- void (*add)(struct datawindow_priv *win, struct param_list *param, int count);
- void (*mode)(struct datawindow_priv *win, int start);
-};
-
-struct datawindow {
- struct datawindow_priv *priv;
- struct datawindow_methods meth;
-};
-
-
-void datawindow_destroy(struct datawindow *win);
-void datawindow_add(struct datawindow *win, struct param_list *param, int count);
-void datawindow_mode(struct datawindow *win, int start);
-
-#endif
-
diff --git a/navit/data_window_int.h b/navit/data_window_int.h
deleted file mode 100644
index 6d3ead94e..000000000
--- a/navit/data_window_int.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_DATA_WINDOW_INT_H
-#define NAVIT_DATA_WINDOW_INT_H
-
-struct data_window {
- GtkWidget *window;
- GtkWidget *scrolled_window;
- GtkWidget *treeview;
- void(*callback)(struct data_window *, char **cols);
-};
-
-#endif
-
diff --git a/navit/debug.c b/navit/debug.c
deleted file mode 100644
index 6d1bd4c95..000000000
--- a/navit/debug.c
+++ /dev/null
@@ -1,525 +0,0 @@
-/**
- * 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 <signal.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <glib.h>
-#ifndef _MSC_VER
-#include <sys/time.h>
-#endif /* _MSC_VER */
-#include "config.h"
-#include "file.h"
-#include "item.h"
-#include "debug.h"
-
-#ifdef HAVE_API_ANDROID
-#include <android/log.h>
-#endif
-
-#if defined HAVE_API_WIN32_CE || defined _MSC_VER
-#include <windows.h>
-#include <windowsx.h>
-#endif
-
-#ifdef HAVE_SOCKET
-#include <stdlib.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-static int debug_socket=-1;
-static struct sockaddr_in debug_sin;
-#endif
-
-
-#define DEFAULT_DEBUG_LEVEL lvl_error
-dbg_level max_debug_level=DEFAULT_DEBUG_LEVEL;
-#define GLOBAL_DEBUG_LEVEL_UNSET lvl_unset
-dbg_level global_debug_level=GLOBAL_DEBUG_LEVEL_UNSET;
-int segv_level=0;
-int timestamp_prefix=0;
-
-static int dummy;
-static GHashTable *debug_hash;
-static gchar *gdb_program;
-
-static FILE *debug_fp;
-
-#if defined(_WIN32) || defined(__CEGCC__)
-
-static void sigsegv(int sig)
-{
-}
-
-#else
-#include <unistd.h>
-static void sigsegv(int sig)
-{
- char buffer[256];
- if (segv_level > 1)
- sprintf(buffer, "gdb -ex bt %s %d", gdb_program, getpid());
- else
- sprintf(buffer, "gdb -ex bt -ex detach -ex quit %s %d", gdb_program, getpid());
- system(buffer);
- exit(1);
-}
-#endif
-
-void
-debug_init(const char *program_name)
-{
-#ifndef HAVE_API_ANDROID
- gdb_program=g_strdup(program_name);
- signal(SIGSEGV, sigsegv);
-#endif
- debug_hash=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
-#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
- debug_fp = stdout;
-#else
- debug_fp = stderr;
-#endif
-}
-
-
-static void
-debug_update_level(gpointer key, gpointer value, gpointer user_data)
-{
- if (max_debug_level < GPOINTER_TO_INT(value))
- max_debug_level = GPOINTER_TO_INT(value);
-}
-
-void
-debug_set_global_level(dbg_level level, int override_old_value ) {
- if (global_debug_level == GLOBAL_DEBUG_LEVEL_UNSET || override_old_value) {
- global_debug_level=level;
- if (max_debug_level < global_debug_level){
- max_debug_level = global_debug_level;
- }
- }
-}
-
-void
-debug_level_set(const char *name, dbg_level level)
-{
- if (!strcmp(name, "segv")) {
-#ifndef HAVE_API_ANDROID
- segv_level=level;
- if (segv_level)
- signal(SIGSEGV, sigsegv);
- else
- signal(SIGSEGV, NULL);
-#endif
- } else if (!strcmp(name, "timestamps")) {
- timestamp_prefix=level;
- } else if (!strcmp(name, DEBUG_MODULE_GLOBAL)) {
- debug_set_global_level(level, 0);
- } else {
- g_hash_table_insert(debug_hash, g_strdup(name), GINT_TO_POINTER(level));
- g_hash_table_foreach(debug_hash, debug_update_level, NULL);
- }
-}
-
-static dbg_level
-parse_dbg_level(struct attr *dbg_level_attr, struct attr *level_attr)
-{
- if (dbg_level_attr) {
- if(!strcmp(dbg_level_attr->u.str,"error")){
- return lvl_error;
- }
- if(!strcmp(dbg_level_attr->u.str,"warning")){
- return lvl_warning;
- }
- if(!strcmp(dbg_level_attr->u.str,"info")){
- return lvl_info;
- }
- if(!strcmp(dbg_level_attr->u.str,"debug")){
- return lvl_debug;
- }
- dbg(lvl_error, "Invalid debug level in config: '%s'\n", dbg_level_attr->u.str);
- } else if (level_attr) {
- if (level_attr->u.num>= lvl_error &&
- level_attr->u.num<= lvl_debug)
- return level_attr->u.num;
- dbg(lvl_error, "Invalid debug level in config: %ld\n", level_attr->u.num);
- }
- return lvl_unset;
-}
-
-struct debug *
-debug_new(struct attr *parent, struct attr **attrs)
-{
- struct attr *name,*dbg_level_attr,*level_attr;
- dbg_level level;
- name=attr_search(attrs, NULL, attr_name);
- dbg_level_attr=attr_search(attrs, NULL, attr_dbg_level);
- level_attr=attr_search(attrs, NULL, attr_level);
- level = parse_dbg_level(dbg_level_attr,level_attr);
-#ifdef HAVE_SOCKET
- if (!name && level==lvl_unset) {
- struct attr *socket_attr=attr_search(attrs, NULL, attr_socket);
- char *p,*s;
- if (!socket_attr)
- return NULL;
- s=g_strdup(socket_attr->u.str);
- p=strchr(s,':');
- if (!p) {
- g_free(s);
- return NULL;
- }
- *p++='\0';
- debug_sin.sin_family=AF_INET;
- if (!inet_aton(s, &debug_sin.sin_addr)) {
- g_free(s);
- return NULL;
- }
- debug_sin.sin_port=ntohs(atoi(p));
- if (debug_socket == -1)
- debug_socket=socket(PF_INET, SOCK_DGRAM, 0);
- g_free(s);
- return (struct debug *)&dummy;
- }
-#endif
- if (!name || level==lvl_unset)
- return NULL;
- debug_level_set(name->u.str, level);
- return (struct debug *)&dummy;
-}
-
-
-dbg_level
-debug_level_get(const char *message_category)
-{
- if (!debug_hash)
- return DEFAULT_DEBUG_LEVEL;
- gpointer level = g_hash_table_lookup(debug_hash, message_category);
- if (!level) {
- return DEFAULT_DEBUG_LEVEL;
- }
- return GPOINTER_TO_INT(level);
-}
-
-static void debug_timestamp(char *buffer)
-{
-#if defined HAVE_API_WIN32_CE || defined _MSC_VER
- LARGE_INTEGER counter, frequency;
- double val;
- QueryPerformanceCounter(&counter);
- QueryPerformanceFrequency(&frequency);
- val=counter.HighPart * 4294967296.0 + counter.LowPart;
- val/=frequency.HighPart * 4294967296.0 + frequency.LowPart;
- sprintf(buffer,"%.6f|",val);
-
-#else
- struct timeval tv;
-
- if (gettimeofday(&tv, NULL) == -1)
- return;
- /* Timestamps are UTC */
- sprintf(buffer,
- "%02d:%02d:%02d.%03d|",
- (int)(tv.tv_sec/3600)%24,
- (int)(tv.tv_sec/60)%60,
- (int)tv.tv_sec % 60,
- (int)tv.tv_usec/1000);
-#endif
-}
-
-static char* dbg_level_to_string(dbg_level level)
-{
- switch(level) {
- case lvl_unset:
- return "-unset-";
- case lvl_error:
- return "error";
- case lvl_warning:
- return "warning";
- case lvl_info:
- return "info";
- case lvl_debug:
- return "debug";
- }
- return "-invalid level-";
-}
-
-#ifdef HAVE_API_ANDROID
-static android_LogPriority
-dbg_level_to_android(dbg_level level)
-{
- switch(level) {
- case lvl_unset:
- return ANDROID_LOG_UNKNOWN;
- case lvl_error:
- return ANDROID_LOG_ERROR;
- case lvl_warning:
- return ANDROID_LOG_WARN;
- case lvl_info:
- return ANDROID_LOG_INFO;
- case lvl_debug:
- return ANDROID_LOG_DEBUG;
- }
- return ANDROID_LOG_UNKNOWN;
-}
-#endif
-
-void
-debug_vprintf(dbg_level level, const char *module, const int mlen, const char *function, const int flen, int prefix, const char *fmt, va_list ap)
-{
-#if defined HAVE_API_WIN32_CE || defined _MSC_VER
- char message_origin[4096];
-#else
- char message_origin[mlen+flen+3];
-#endif
-
- sprintf(message_origin, "%s:%s", module, function);
- if (global_debug_level >= level || debug_level_get(module) >= level || debug_level_get(message_origin) >= level) {
-#if defined(DEBUG_WIN32_CE_MESSAGEBOX)
- wchar_t muni[4096];
-#endif
- char debug_message[4096];
- debug_message[0]='\0';
- if (prefix) {
- if (timestamp_prefix)
- debug_timestamp(debug_message);
- strcpy(debug_message+strlen(debug_message),dbg_level_to_string(level));
- strcpy(debug_message+strlen(debug_message),":");
- strcpy(debug_message+strlen(debug_message),message_origin);
- strcpy(debug_message+strlen(debug_message),":");
- }
-#if defined HAVE_API_WIN32_CE
-#define vsnprintf _vsnprintf
-#endif
- vsnprintf(debug_message+strlen(debug_message),4095-strlen(debug_message),fmt,ap);
-#ifdef DEBUG_WIN32_CE_MESSAGEBOX
- mbstowcs(muni, debug_message, strlen(debug_message)+1);
- MessageBoxW(NULL, muni, TEXT("Navit - Error"), MB_APPLMODAL|MB_OK|MB_ICONERROR);
-#else
-#ifdef HAVE_API_ANDROID
- __android_log_print(dbg_level_to_android(level), "navit", "%s", debug_message);
-#else
-#ifdef HAVE_SOCKET
- if (debug_socket != -1) {
- sendto(debug_socket, debug_message, strlen(debug_message), 0, (struct sockaddr *)&debug_sin, sizeof(debug_sin));
- return;
- }
-#endif
- FILE *fp=debug_fp;
- if (! fp)
- fp = stderr;
- fprintf(fp,"%s",debug_message);
- fflush(fp);
-#endif
-#endif
- }
-}
-
-void
-debug_printf(dbg_level level, const char *module, const int mlen,const char *function, const int flen, int prefix, const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- debug_vprintf(level, module, mlen, function, flen, prefix, fmt, ap);
- va_end(ap);
-}
-
-void
-debug_assert_fail(const char *module, const int mlen,const char *function, const int flen, const char *file, int line, const char *expr)
-{
- debug_printf(lvl_error,module,mlen,function,flen,1,"%s:%d assertion failed:%s\n", file, line, expr);
- abort();
-}
-
-void
-debug_destroy(void)
-{
- if (!debug_fp)
- return;
- if (debug_fp == stderr || debug_fp == stdout)
- return;
- fclose(debug_fp);
- debug_fp = NULL;
-}
-
-void debug_set_logfile(const char *path)
-{
- FILE *fp;
- fp = fopen(path, "a");
- if (fp) {
- debug_destroy();
- debug_fp = fp;
- fprintf(debug_fp, "Navit log started\n");
- fflush(debug_fp);
- }
-}
-
-struct malloc_head {
- int magic;
- int size;
- char *where;
- void *return_address[8];
- struct malloc_head *prev;
- struct malloc_head *next;
-} *malloc_heads;
-
-struct malloc_tail {
- int magic;
-};
-
-int mallocs,debug_malloc_size,debug_malloc_size_m;
-
-void
-debug_dump_mallocs(void)
-{
- struct malloc_head *head=malloc_heads;
- int i;
- dbg(lvl_debug,"mallocs %d\n",mallocs);
- while (head) {
- fprintf(stderr,"unfreed malloc from %s of size %d\n",head->where,head->size);
- for (i = 0 ; i < 8 ; i++)
- fprintf(stderr,"\tlist *%p\n",head->return_address[i]);
-#if 0
- fprintf(stderr,"%s\n",head+1);
-#endif
- head=head->next;
- }
-}
-
-void *
-debug_malloc(const char *where, int line, const char *func, int size)
-{
- struct malloc_head *head;
- struct malloc_tail *tail;
- if (!size)
- return NULL;
- mallocs++;
- debug_malloc_size+=size;
- if (debug_malloc_size/(1024*1024) != debug_malloc_size_m) {
- debug_malloc_size_m=debug_malloc_size/(1024*1024);
- dbg(lvl_debug,"malloced %d kb\n",debug_malloc_size/1024);
- }
- head=malloc(size+sizeof(*head)+sizeof(*tail));
- head->magic=0xdeadbeef;
- head->size=size;
- head->prev=NULL;
- head->next=malloc_heads;
- malloc_heads=head;
- if (head->next)
- head->next->prev=head;
- head->where=g_strdup_printf("%s:%d %s",where,line,func);
-#if !defined (__GNUC__)
-#define __builtin_return_address(x) NULL
-#endif
- head->return_address[0]=__builtin_return_address(0);
- head->return_address[1]=__builtin_return_address(1);
- head->return_address[2]=__builtin_return_address(2);
- head->return_address[3]=__builtin_return_address(3);
- head->return_address[4]=__builtin_return_address(4);
- head->return_address[5]=__builtin_return_address(5);
- head->return_address[6]=__builtin_return_address(6);
- head->return_address[7]=__builtin_return_address(7);
- head++;
- tail=(struct malloc_tail *)((unsigned char *)head+size);
- tail->magic=0xdeadbef0;
- return head;
-}
-
-
-void *
-debug_malloc0(const char *where, int line, const char *func, int size)
-{
- void *ret=debug_malloc(where, line, func, size);
- if (ret)
- memset(ret, 0, size);
- return ret;
-}
-
-void *
-debug_realloc(const char *where, int line, const char *func, void *ptr, int size)
-{
- void *ret=debug_malloc(where, line, func, size);
- if (ret && ptr)
- memcpy(ret, ptr, size);
- debug_free(where, line, func, ptr);
- return ret;
-}
-
-char *
-debug_strdup(const char *where, int line, const char *func, const char *ptr)
-{
- int size;
- char *ret;
-
- if (!ptr)
- return NULL;
- size=strlen(ptr)+1;
- ret=debug_malloc(where, line, func, size);
- memcpy(ret, ptr, size);
- return ret;
-}
-
-char *
-debug_guard(const char *where, int line, const char *func, char *str)
-{
- char *ret=debug_strdup(where, line, func, str);
- g_free(str);
- return ret;
-}
-
-void
-debug_free(const char *where, int line, const char *func, void *ptr)
-{
- struct malloc_head *head;
- struct malloc_tail *tail;
- if (!ptr)
- return;
- mallocs--;
- head=(struct malloc_head *)((unsigned char *)ptr-sizeof(*head));
- tail=(struct malloc_tail *)((unsigned char *)ptr+head->size);
- debug_malloc_size-=head->size;
- if (head->magic != 0xdeadbeef || tail->magic != 0xdeadbef0) {
- fprintf(stderr,"Invalid free from %s:%d %s\n",where,line,func);
- }
- head->magic=0;
- tail->magic=0;
- if (head->prev)
- head->prev->next=head->next;
- else
- malloc_heads=head->next;
- if (head->next)
- head->next->prev=head->prev;
- free(head->where);
- free(head);
-}
-
-void
-debug_free_func(void *ptr)
-{
- debug_free("unknown",0,"unknown",ptr);
-}
-
-void debug_finished(void) {
- debug_dump_mallocs();
- g_free(gdb_program);
- g_hash_table_destroy(debug_hash);
- debug_destroy();
-}
-
diff --git a/navit/debug.h b/navit/debug.h
deleted file mode 100644
index 49f19566f..000000000
--- a/navit/debug.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_DEBUG_H
-#define NAVIT_DEBUG_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdarg.h>
-#include <string.h>
-
-#ifdef _MSC_VER
-#define __PRETTY_FUNCTION__ __FUNCTION__
-
-/* Uncomment the following define to enable MSVC's memory debugging support */
-/*#define _CRTDBG_MAP_ALLOC*/
-#ifdef _CRTDBG_MAP_ALLOC
-#include <stdlib.h>
-#include <crtdbg.h>
-#endif
-#endif
-
-/** Possible debug levels (inspired by SLF4J). */
-typedef enum {
- /** Internal use only, do not use for logging. */
- lvl_unset=-1,
- /** Error: something did not work. */
- lvl_error,
- /** Warning: something may not have worked. */
- lvl_warning,
- /** Informational message. Should make sense to non-programmers. */
- lvl_info,
- /** Debug output: (almost) anything goes. */
- lvl_debug
-} dbg_level;
-
-extern dbg_level max_debug_level;
-#define dbg_str2(x) #x
-#define dbg_str1(x) dbg_str2(x)
-#define dbg_module dbg_str1(MODULE)
-#define dbg(level,...) { if (max_debug_level >= level) debug_printf(level,dbg_module,strlen(dbg_module),__PRETTY_FUNCTION__, strlen(__PRETTY_FUNCTION__),1,__VA_ARGS__); }
-#define dbg_assert(expr) ((expr) ? (void) 0 : debug_assert_fail(dbg_module,strlen(dbg_module),__PRETTY_FUNCTION__, strlen(__PRETTY_FUNCTION__),__FILE__,__LINE__,dbg_str1(expr)))
-
-#define DEBUG_MODULE_GLOBAL "global"
-
-#ifdef DEBUG_MALLOC
-#undef g_new
-#undef g_new0
-#define g_new(type, size) (type *)debug_malloc(__FILE__,__LINE__,__PRETTY_FUNCTION__,sizeof(type)*(size))
-#define g_new0(type, size) (type *)debug_malloc0(__FILE__,__LINE__,__PRETTY_FUNCTION__,sizeof(type)*(size))
-#define g_malloc(size) debug_malloc(__FILE__,__LINE__,__PRETTY_FUNCTION__,(size))
-#define g_malloc0(size) debug_malloc0(__FILE__,__LINE__,__PRETTY_FUNCTION__,(size))
-#define g_realloc(ptr,size) debug_realloc(__FILE__,__LINE__,__PRETTY_FUNCTION__,ptr,(size))
-#define g_free(ptr) debug_free(__FILE__,__LINE__,__PRETTY_FUNCTION__,ptr)
-#define g_strdup(ptr) debug_strdup(__FILE__,__LINE__,__PRETTY_FUNCTION__,ptr)
-#define g_strdup_printf(fmt...) debug_guard(__FILE__,__LINE__,__PRETTY_FUNCTION__,g_strdup_printf(fmt))
-#define graphics_icon_path(x) debug_guard(__FILE__,__LINE__,__PRETTY_FUNCTION__,graphics_icon_path(x))
-#define dbg_guard(x) debug_guard(__FILE__,__LINE__,__PRETTY_FUNCTION__,x)
-#define g_free_func debug_free_func
-#else
-#define g_free_func g_free
-#define dbg_guard(x) x
-#endif
-
-/* prototypes */
-struct attr;
-struct debug;
-void debug_init(const char *program_name);
-void debug_level_set(const char *name, dbg_level level);
-struct debug *debug_new(struct attr *parent, struct attr **attrs);
-dbg_level debug_level_get(const char *name);
-void debug_vprintf(dbg_level level, const char *module, const int mlen, const char *function, const int flen, int prefix, const char *fmt, va_list ap);
-void debug_printf(dbg_level level, const char *module, const int mlen, const char *function, const int flen, int prefix, const char *fmt, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 7, 8)))
-#endif
-;
-void debug_assert_fail(const char *module, const int mlen, const char *function, const int flen, const char *file, int line, const char *expr);
-void debug_destroy(void);
-void debug_set_logfile(const char *path);
-void debug_dump_mallocs(void);
-void *debug_malloc(const char *where, int line, const char *func, int size);
-void *debug_malloc0(const char *where, int line, const char *func, int size);
-char *debug_strdup(const char *where, int line, const char *func, const char *ptr);
-char *debug_guard(const char *where, int line, const char *func, char *str);
-void debug_free(const char *where, int line, const char *func, void *ptr);
-void debug_free_func(void *ptr);
-void debug_finished(void);
-void *debug_realloc(const char *where, int line, const char *func, void *ptr, int size);
-void debug_set_global_level(dbg_level level, int override_old_value);
-/* end of prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/navit/destination.h b/navit/destination.h
deleted file mode 100644
index 414118336..000000000
--- a/navit/destination.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_DESTINATION_H
-#define NAVIT_DESTINATION_H
-
-/* prototypes */
-struct navit;
-int destination_address(struct navit *nav);
-/* end of prototypes */
-
-#endif
-
diff --git a/navit/draw_info.h b/navit/draw_info.h
deleted file mode 100644
index 0a0467f55..000000000
--- a/navit/draw_info.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_DRAW_INFO_H
-#define NAVIT_DRAW_INFO_H
-
-struct draw_info {
- struct container *co;
- int display;
- int limit;
-};
-
-#endif
-
diff --git a/navit/endianess.h b/navit/endianess.h
deleted file mode 100644
index 2b4047093..000000000
--- a/navit/endianess.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef __ENDIANESS_HANDLER__
-
- /* The following is based on xorg/xserver/GL/glx/glxbyteorder.h
- * which is (c) IBM Corp. 2006,2007 and originally licensed under the following
- * BSD-license. All modifications in navit are licensed under the GNU GPL as
- * described in file "COPYRIGHT".
- *
- * Portions also from GNU C Library include/bits/byteswap.h Also licsend
- * under the GPL.
- *
- * --------------------------
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDERS, THE AUTHORS, AND/OR THEIR SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
- * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-#if HAVE_BYTESWAP_H
- /* machine dependent versions of byte swapping functions. GNU extension.*/
- #include <byteswap.h>
-#if HAVE_ENDIAN_H
- #include <endian.h>
-#endif
-#elif defined(USE_SYS_ENDIAN_H)
- #include <sys/endian.h>
-#if defined(_BYTE_ORDER) && !defined(__BYTE_ORDER)
-#define __BYTE_ORDER _BYTE_ORDER
-#define __LITTLE_ENDIAN _LITTLE_ENDIAN
-#define __BIG_ENDIAN _BIG_ENDIAN
-#endif
-#elif defined(__APPLE__)
- #include <libkern/OSByteOrder.h>
- #define __bswap_16 OSSwapInt16
- #define __bswap_32 OSSwapInt32
- #define __bswap_64 OSSwapInt64
-
-#ifndef __BYTE_ORDER
- #define __LITTLE_ENDIAN 1234
- #define __BIG_ENDIAN 4321
-
- #if defined(__LITTLE_ENDIAN__)
- #define __BYTE_ORDER __LITTLE_ENDIAN
- #elif defined(__BIG_ENDIAN__)
- #define __BYTE_ORDER __BIG_ENDIAN
- #else
- #error "No endianness defined for Mac OS!"
- #endif
-#endif
-
-#elif defined(_WIN32) || defined(__CEGCC__)
- #define __BIG_ENDIAN 4321
- #define __LITTLE_ENDIAN 1234
- #define __BYTE_ORDER __LITTLE_ENDIAN
-#else
- #define __bswap_16(__bsx) ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8))
- #define __bswap_32(__bsx) ((((__bsx) & 0xff000000) >> 24) | \
- (((__bsx) & 0x00ff0000) >> 8) |\
- (((__bsx) & 0x0000ff00) << 8) | \
- (((__bsx) & 0x000000ff) << 24))
-
-
-#endif
-
-#if __BYTE_ORDER == __BIG_ENDIAN
- #define le16_to_cpu(x) __bswap_16 (x)
- #define le32_to_cpu(x) __bswap_32 (x)
- #define le64_to_cpu(x) __bswap_64 (x)
- #define cpu_to_le16(x) __bswap_16 (x)
- #define cpu_to_le32(x) __bswap_32 (x)
- #define cpu_to_le64(x) __bswap_64 (x)
-#elif __BYTE_ORDER == __LITTLE_ENDIAN
- #define le16_to_cpu(x) (x)
- #define le32_to_cpu(x) (x)
- #define cpu_to_le16(x) (x)
- #define cpu_to_le32(x) (x)
-#else
- #error "Unknown endianess"
-#endif
-
-#define __ENDIANESS_HANDLER__
-#endif
-
diff --git a/navit/event.c b/navit/event.c
deleted file mode 100644
index 5aee40689..000000000
--- a/navit/event.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- * 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 <string.h>
-#include <stdlib.h>
-#include "event.h"
-#include "plugin.h"
-#include "debug.h"
-
-static struct event_methods event_methods;
-static const char *e_requestor;
-static const char *e_system;
-
-static int has_quit;
-
-#define require_method_helper(m)\
- if(!event_methods.m) {\
- dbg(lvl_error, "Can't find event system method %s. Event system is %s%s\n",\
- #m ,e_system?"set to ":"not set.", e_system?e_system:"");\
-
-#define require_method(m)\
- require_method_helper(m)\
- return;\
- }
-
-#define require_method2(m,r)\
- require_method_helper(m)\
- return r;\
- }
-
-void event_main_loop_run(void)
-{
- require_method(main_loop_run);
- event_methods.main_loop_run();
-}
-
-void event_main_loop_quit(void)
-{
- if (event_methods.main_loop_quit)
- event_methods.main_loop_quit();
- has_quit=1;
-}
-
-int
-event_main_loop_has_quit(void)
-{
- return has_quit;
-}
-
-struct event_watch *
-event_add_watch(int fd, enum event_watch_cond cond, struct callback *cb)
-{
- require_method2(add_watch, NULL);
- return event_methods.add_watch(fd, cond, cb);
-}
-
-void
-event_remove_watch(struct event_watch *ev)
-{
- require_method(remove_watch);
- 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)
-{
- require_method2(add_timeout, NULL);
- return event_methods.add_timeout(timeout, multi, cb);
-}
-
-void
-event_remove_timeout(struct event_timeout *ev)
-{
- require_method(remove_timeout);
- event_methods.remove_timeout(ev);
-}
-
-struct event_idle *
-event_add_idle(int priority, struct callback *cb)
-{
- require_method2(add_idle, NULL);
- return event_methods.add_idle(priority,cb);
-}
-
-void
-event_remove_idle(struct event_idle *ev)
-{
- require_method(remove_idle);
- event_methods.remove_idle(ev);
-}
-
-void
-event_call_callback(struct callback_list *cb)
-{
- require_method(call_callback);
- event_methods.call_callback(cb);
-}
-
-char const *
-event_system(void)
-{
- return e_system;
-}
-
-int
-event_request_system(const char *system, const char *requestor)
-{
- void (*event_type_new)(struct event_methods *meth);
- if (e_system) {
- if (strcmp(e_system, system)) {
- dbg(lvl_error,"system '%s' already requested by '%s', can't set to '%s' as requested from '%s'\n", e_system, e_requestor, system, requestor);
- return 0;
- }
- return 1;
- }
- event_type_new=plugin_get_category_event(system);
- if (! event_type_new) {
- dbg(lvl_error,"unsupported event system '%s' requested from '%s'\n", system, requestor);
- return 0;
- }
- event_type_new(&event_methods);
- e_system=system;
- e_requestor=requestor;
-
- return 1;
-}
-
-
diff --git a/navit/event.h b/navit/event.h
deleted file mode 100644
index 1aa10cc4f..000000000
--- a/navit/event.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct event_idle;
-struct event_timeout;
-struct event_watch;
-struct callback;
-struct callback_list;
-struct file;
-
-enum event_watch_cond {
- event_watch_cond_read=1,
- event_watch_cond_write,
- event_watch_cond_except,
-};
-
-struct event_methods {
- void (*main_loop_run)(void);
- void (*main_loop_quit)(void);
- struct event_watch *(*add_watch)(int fd, enum event_watch_cond cond, struct callback *cb);
- void (*remove_watch)(struct event_watch *ev);
- struct event_timeout *(*add_timeout)(int timeout, int multi, struct callback *cb);
- void (*remove_timeout)(struct event_timeout *ev);
- struct event_idle *(*add_idle)(int priority, struct callback *cb);
- void (*remove_idle)(struct event_idle *ev);
- void (*call_callback)(struct callback_list *cb);
-};
-
-
-/* prototypes */
-enum event_watch_cond;
-struct callback;
-struct callback_list;
-struct event_idle;
-struct event_timeout;
-struct event_watch;
-void event_main_loop_run(void);
-void event_main_loop_quit(void);
-int event_main_loop_has_quit(void);
-struct event_watch *event_add_watch(int fd, enum event_watch_cond cond, struct callback *cb);
-void event_remove_watch(struct event_watch *ev);
-struct event_timeout *event_add_timeout(int timeout, int multi, struct callback *cb);
-void event_remove_timeout(struct event_timeout *ev);
-struct event_idle *event_add_idle(int priority, struct callback *cb);
-void event_remove_idle(struct event_idle *ev);
-void event_call_callback(struct callback_list *cb);
-char const *event_system(void);
-int event_request_system(const char *system, const char *requestor);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
diff --git a/navit/event_glib.c b/navit/event_glib.c
deleted file mode 100644
index e9bad6c40..000000000
--- a/navit/event_glib.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/**
- * 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 "event.h"
-#include "event_glib.h"
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-
-static GMainLoop *loop;
-
-static void event_glib_main_loop_run(void)
-{
- loop = g_main_loop_new (NULL, TRUE);
- if (g_main_loop_is_running (loop))
- {
- g_main_loop_run (loop);
- }
-}
-
-static void event_glib_main_loop_quit(void)
-{
- if (loop) {
- g_main_loop_quit(loop);
- g_main_loop_unref(loop);
- }
-
-}
-
-struct event_watch {
- GIOChannel *iochan;
- guint source;
-};
-
-static gboolean
-event_glib_call_watch(GIOChannel * iochan, GIOCondition condition, gpointer t)
-{
- struct callback *cb=t;
- callback_call_0(cb);
- return TRUE;
-}
-
-static struct event_watch *
-event_glib_add_watch(int fd, enum event_watch_cond cond, struct callback *cb)
-{
- struct event_watch *ret=g_new0(struct event_watch, 1);
- int flags=0;
- ret->iochan = g_io_channel_unix_new(fd);
- switch (cond) {
- case event_watch_cond_read:
- flags=G_IO_IN;
- break;
- case event_watch_cond_write:
- flags=G_IO_OUT;
- break;
- case event_watch_cond_except:
- flags=G_IO_ERR|G_IO_HUP;
- break;
- }
- ret->source = g_io_add_watch(ret->iochan, flags, event_glib_call_watch, (gpointer)cb);
- return ret;
-}
-
-static void
-event_glib_remove_watch(struct event_watch *ev)
-{
- if (! ev)
- return;
- g_source_remove(ev->source);
- g_io_channel_unref(ev->iochan);
- g_free(ev);
-}
-
-struct event_timeout {
- guint source;
- struct callback *cb;
-};
-
-static gboolean
-event_glib_call_timeout_single(struct event_timeout *ev)
-{
- callback_call_0(ev->cb);
- g_free(ev);
- return FALSE;
-}
-
-static gboolean
-event_glib_call_timeout_multi(struct event_timeout *ev)
-{
- callback_call_0(ev->cb);
- return TRUE;
-}
-
-
-static struct event_timeout *
-event_glib_add_timeout(int timeout, int multi, struct callback *cb)
-{
- struct event_timeout *ret=g_new0(struct event_timeout, 1);
- ret->cb=cb;
- ret->source = g_timeout_add(timeout, multi ? (GSourceFunc)event_glib_call_timeout_multi : (GSourceFunc)event_glib_call_timeout_single, (gpointer)ret);
-
- return ret;
-}
-
-static void
-event_glib_remove_timeout(struct event_timeout *ev)
-{
- if (! ev)
- return;
- g_source_remove(ev->source);
- g_free(ev);
-}
-
-struct event_idle {
- guint source;
- struct callback *cb;
-};
-
-static gboolean
-event_glib_call_idle(struct event_idle *ev)
-{
- callback_call_0(ev->cb);
- return TRUE;
-}
-
-static struct event_idle *
-event_glib_add_idle(int priority, struct callback *cb)
-{
- struct event_idle *ret=g_new0(struct event_idle, 1);
- ret->cb=cb;
- ret->source = g_idle_add_full(G_PRIORITY_HIGH_IDLE+priority, (GSourceFunc)event_glib_call_idle, (gpointer)ret, NULL);
- return ret;
-}
-
-static void
-event_glib_remove_idle(struct event_idle *ev)
-{
- if (! ev)
- return;
- g_source_remove(ev->source);
- g_free(ev);
-}
-
-static void
-event_glib_call_callback(struct callback_list *cb)
-{
-/*
- Idea for implementation:
- Create a pipe then use add_watch
- add callback to a queue
- from here write to the pipe to wakeup the pool
- then from the gui thread process the callback queue
-*/
-}
-
-static struct event_methods event_glib_methods = {
- event_glib_main_loop_run,
- event_glib_main_loop_quit,
- event_glib_add_watch,
- event_glib_remove_watch,
- event_glib_add_timeout,
- event_glib_remove_timeout,
- event_glib_add_idle,
- event_glib_remove_idle,
- event_glib_call_callback,
-};
-
-struct event_priv {
- int data;
-};
-
-static struct event_priv*
-event_glib_new(struct event_methods *meth)
-{
- *meth=event_glib_methods;
- return (struct event_priv *)event_glib_new;
-}
-
-void
-event_glib_init(void)
-{
- plugin_register_category_event("glib", event_glib_new);
-}
diff --git a/navit/event_glib.h b/navit/event_glib.h
deleted file mode 100644
index 9f9b2f52b..000000000
--- a/navit/event_glib.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* prototypes */
-void event_glib_init(void);
-/* end of prototypes */
diff --git a/navit/fib-1.1/CMakeLists.txt b/navit/fib-1.1/CMakeLists.txt
deleted file mode 100644
index 1c86263c4..000000000
--- a/navit/fib-1.1/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-supportlib_add_library(fib fib.c)
-
diff --git a/navit/fib-1.1/README b/navit/fib-1.1/README
deleted file mode 100644
index eabcd5f86..000000000
--- a/navit/fib-1.1/README
+++ /dev/null
@@ -1,26 +0,0 @@
-Version 1.1 now supports increasing the key using the fh_replace*
-functions. Previously it would simply return NULL when you tried to
-increase the key. It also improves performance slightly by only calling
-checkcons when we are about to use it, at extract, instead of calling it
-on every insert.
-
-I have now fixed fh_union and it properly updates the minimum.
-
-Thanks to Ryan Earl for pointing out that in fh_consolidate, it is VERY
-time consuming to constantly malloc/free an array of pointers. The array
-is small enough that simply reallocating when more pointers are needed
-is ok.
-
-Thanks to Thomas Eschbach and Wolfgang Guenther who have pointed out bugs
-with my code. Wolfgang Guenther provided a fix which put in on the correct
-track for where the bug was. They have also provided a few test programs
-that exhibited other bugs which I have now integrated into my source so
-that you can easily regress test the library.
-
-I have reciently completed a review of the code. I have made a number
-of improvements with a few minor interface changes. There is another
-improvement to the rh_replace* family of functions to help eliminate
-redundant code.
-
-I'm still planning on writing a type safe memory allocator for use with
-the code instead of using malloc to hopefully improve performance slightly.
diff --git a/navit/fib-1.1/configure b/navit/fib-1.1/configure
deleted file mode 100755
index 62eaa3d01..000000000
--- a/navit/fib-1.1/configure
+++ /dev/null
@@ -1,1045 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
- if test -n "$ac_help"; then
- echo "--enable and --with options recognized:$ac_help"
- fi
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.13"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set. These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=fib.c
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:529: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # This must be in double quotes, not single quotes, because CPP may get
- # substituted into the Makefile and "${CC-cc}" will confuse make.
- CPP="${CC-cc} -E"
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp.
- cat > conftest.$ac_ext <<EOF
-#line 544 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:550: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
-#line 561 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -nologo -E"
- cat > conftest.$ac_ext <<EOF
-#line 578 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
- ac_cv_prog_CPP="$CPP"
-fi
- CPP="$ac_cv_prog_CPP"
-else
- ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:609: checking for ANSI C header files" >&5
-if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 614 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:622: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- ac_cv_header_stdc=yes
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 639 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "memchr" >/dev/null 2>&1; then
- :
-else
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 657 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "free" >/dev/null 2>&1; then
- :
-else
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
- :
-else
- cat > conftest.$ac_ext <<EOF
-#line 678 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
-EOF
-if { (eval echo configure:689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- :
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_header_stdc=no
-fi
-rm -fr conftest*
-fi
-
-fi
-fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
- cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-for ac_hdr in limits.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:716: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 721 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:726: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
-
-echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:754: checking for inline" >&5
-if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
- cat > conftest.$ac_ext <<EOF
-#line 761 "configure"
-#include "confdefs.h"
-
-int main() {
-} $ac_kw foo() {
-; return 0; }
-EOF
-if { (eval echo configure:768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_c_inline=$ac_kw; break
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-done
-
-fi
-
-echo "$ac_t""$ac_cv_c_inline" 1>&6
-case "$ac_cv_c_inline" in
- inline | yes) ;;
- no) cat >> confdefs.h <<\EOF
-#define inline
-EOF
- ;;
- *) cat >> confdefs.h <<EOF
-#define inline $ac_cv_c_inline
-EOF
- ;;
-esac
-
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
-s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.13"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-
-trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@CPP@%$CPP%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
- else
- sed "${ac_end}q" conftest.subs > conftest.s$ac_file
- fi
- if test ! -s conftest.s$ac_file; then
- ac_more_lines=false
- rm -f conftest.s$ac_file
- else
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f conftest.s$ac_file"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
- fi
- ac_file=`expr $ac_file + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_cmds`
- fi
-done
-if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
-
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
-
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
diff --git a/navit/fib-1.1/configure.in b/navit/fib-1.1/configure.in
deleted file mode 100644
index 827015270..000000000
--- a/navit/fib-1.1/configure.in
+++ /dev/null
@@ -1,17 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(fib.c)
-
-dnl Checks for programs.
-
-dnl Checks for libraries.
-
-dnl Checks for header files.
-AC_HEADER_STDC
-AC_CHECK_HEADERS(limits.h)
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_INLINE
-
-dnl Checks for library functions.
-
-AC_OUTPUT(Makefile)
diff --git a/navit/fib-1.1/fh_extractmin.3 b/navit/fib-1.1/fh_extractmin.3
deleted file mode 100644
index e1492b400..000000000
--- a/navit/fib-1.1/fh_extractmin.3
+++ /dev/null
@@ -1,97 +0,0 @@
-.TH FH_EXTRACTMIN 3 "29 Mar 2000" "libfib"
-.SH NAME
-fh_extractmin \- extract minimum element from a Fibonacci Heap
-.SH SYNOPSIS
-#include <fib.h>
-.PP
-void *
-.PD 0
-.HP 8
-.BR fh_extractmin "(struct fibheap *heap)"
-.PD
-.PP
-void *
-.PD 0
-.HP 8
-.BR fh_min "(struct fibheap *heap)"
-.PD
-.PP
-void *
-.PD 0
-.HP 8
-.BR fh_replacedata "(struct fibheap *heap, struct fibheap_el *elem, void *data)"
-.PD
-.PP
-void *
-.PD 0
-.HP 8
-.BR fh_delete "(struct fibheap *heap, struct fibheap_el *elem)"
-.PD
-.PP
-void
-.PD 0
-.HP 8
-.BR fh_deleteheap "(struct fibheap *heap)"
-.PD
-.PP
-struct fibheap *
-.PD 0
-.HP 8
-.BR fh_union "(struct fibheap *heapa, struct fibheap *heapb)"
-.PD
-.SH DESCRIPTION
-These functions are shared between both key heaps and normal heaps.
-.PP
-Once a
-.B elem
-pointer has been passed to
-.BR fh_delete (3)
-that
-.B elem
-pointer may be reused to store another datum.
-You should make sure that you destroy any copies of the pointer.
-.SH RETURN VALUES
-The
-.B fh_extractmin
-function returns the value of
-.B data
-that is the minimum element and removes it from the heap.
-.PP
-The
-.B fh_min
-function returns the current minimum element but does
-.I not
-remove it from the heap.
-.PP
-The
-.B fh_replacedata
-replaces the data in
-.B elem
-and returns the old data.
-.PP
-The
-.B fh_delete
-function removes
-.B elem
-from the heap, and returns the
-.B data
-that was stored in the element.
-.PP
-The
-.B fh_deleteheap
-complete destroys the heap. It does not free any user supplied
-.B data
-elements stored in the heap.
-.PP
-The
-.B fh_union
-function returns the union of the two heaps
-.B heapa
-and
-.BR heapb .
-.SH SEE ALSO
-.BR fh_makeheap (3),
-.BR fh_makekeyheap (3)
-.SH AUTHORS
-This library and man page was writen by John-Mark Gurney <gurney_j@efn.org>.
-.SH BUGS
diff --git a/navit/fib-1.1/fh_makeheap.3 b/navit/fib-1.1/fh_makeheap.3
deleted file mode 100644
index bd867cd09..000000000
--- a/navit/fib-1.1/fh_makeheap.3
+++ /dev/null
@@ -1,17 +0,0 @@
-.TH FH_MAKEHEAP 3 "29 Mar 2000" "libfib"
-.SH NAME
-fh_makeheap \- make a Fibonacci Heap
-.SH SYNOPSIS
-.nf
-#include <fib.h>
-.PP
-struct fibheap *
-.BR fh_makeheap (void)
-.fi
-.SH DESCRIPTION
-.SH RETURN VALUES
-.SH FILES
-.SH SEE ALSO
-.SH AUTHORS
-This library and man page was writen by John-Mark Gurney <gurney_j@efn.org>.
-.SH BUGS
diff --git a/navit/fib-1.1/fh_makekeyheap.3 b/navit/fib-1.1/fh_makekeyheap.3
deleted file mode 100644
index f55d43072..000000000
--- a/navit/fib-1.1/fh_makekeyheap.3
+++ /dev/null
@@ -1,84 +0,0 @@
-.TH FH_MAKEKEYHEAP 3 "29 Mar 2000" "libfib"
-.SH NAME
-fh_makekeyheap \- make a Fibonacci key Heap
-.SH SYNOPSIS
-#include <fib.h>
-.PP
-struct fibheap *
-.PD 0
-.HP 8
-.BR fh_makekeyheap (void)
-.PD
-.PP
-struct fibheap_el *
-.PD 0
-.HP 8
-.BR fh_insertkey "(struct fibheap *heap, int key, void *data)"
-.PD
-.PP
-int
-.PD 0
-.HP 8
-.BR fh_minkey "(struct fibheap *heap)"
-.PD
-.PP
-void *
-.PD 0
-.HP 8
-.BR fh_replacekey "(struct fibheap *heap, struct fibheap_el *elem, int key)"
-.PD
-.PP
-void *
-.PD 0
-.HP 8
-.BR fh_replacekeydata "(struct fibheap *heap, struct fibheap_el *elem, int key, void *data)"
-.PD
-.SH DESCRIPTION
-The
-.B fh_makekeyheap
-function makes a Fibonacci heap which does ordering based on an
-integer key that is given in addition to the data.
-This menthod is useful so that you can eliminate the need to call
-a comparision function to order the data in the heap.
-.PP
-The pointer to the structure
-.B fibheap
-returned by
-.B fh_makekeyheap
-is an opaque structure. The the pointer can only be passed to other
-functions in the
-.B libfib
-library.
-.PP
-The
-.B fh_insertkey
-function inserts the
-.B data
-element into the heap with a value of
-.BR key .
-The pointer returned can be used in calls to functions like
-.BR fh_delete (3)
-to delete the key from the heap before it gets extracted via
-.BR fh_extractmin (3).
-.SH RETURN VALUES
-The
-.B fh_makekeyheap
-function returns a pointer to a heap structure used to insert and extract
-data elements.
-.PP
-The
-.B fh_insertkey
-functions returns a pointer to a heap element structure which can be used
-to manimulate that data element in the heap.
-.PP
-The
-.B fh_minkey
-function returns the integer key of the data at the top of the heap. If you would like to view the data, see
-.BR fh_min (3).
-.SH SEE ALSO
-.BR fh_extractmin (3)
-.SH AUTHORS
-This library and man page was writen by John-Mark Gurney <gurney_j@efn.org>.
-.SH BUGS
-A key heap does not provide a way for handling key collitions and deffering
-decission to a user provided function to resolve colissions.
diff --git a/navit/fib-1.1/fib.c b/navit/fib-1.1/fib.c
deleted file mode 100644
index cf7451467..000000000
--- a/navit/fib-1.1/fib.c
+++ /dev/null
@@ -1,699 +0,0 @@
-/*-
- * Copyright 1997-2003 John-Mark Gurney.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: fib.c,v 1.2 2007-07-04 22:44:39 martin-s Exp $
- *
- */
-
-#include <fib.h>
-#include <fibpriv.h>
-
-#include <limits.h>
-#include <stdlib.h>
-
-#define swap(type, a, b) \
- do { \
- type c; \
- c = a; \
- a = b; \
- b = c; \
- } while (0) \
-
-#define INT_BITS (sizeof(int) * 8)
-static int
-ceillog2(unsigned int a)
-{
- int oa;
- int i;
- int b;
-
- oa = a;
- b = INT_BITS / 2;
- i = 0;
- while (b) {
- i = (i << 1);
- if (a >= (1 << b)) {
- a /= (1 << b);
- i = i | 1;
- } else
- a &= (1 << b) - 1;
- b /= 2;
- }
- if ((1 << i) == oa)
- return i;
- else
- return i + 1;
-}
-
-/*
- * Private Heap Functions
- */
-static void
-fh_deleteel(struct fibheap *h, struct fibheap_el *x)
-{
- void *data;
- int key;
-
- data = x->fhe_data;
- key = x->fhe_key;
-
- if (!h->fh_keys)
- fh_replacedata(h, x, h->fh_neginf);
- else
- fh_replacekey(h, x, INT_MIN);
- if (fh_extractminel(h) != x) {
- /*
- * XXX - This should never happen as fh_replace should set it
- * to min.
- */
- abort();
- }
-
- x->fhe_data = data;
- x->fhe_key = key;
-}
-
-static void
-fh_initheap(struct fibheap *new)
-{
- new->fh_cmp_fnct = NULL;
- new->fh_neginf = NULL;
- new->fh_n = 0;
- new->fh_Dl = -1;
- new->fh_cons = NULL;
- new->fh_min = NULL;
- new->fh_root = NULL;
- new->fh_keys = 0;
-#ifdef FH_STATS
- new->fh_maxn = 0;
- new->fh_ninserts = 0;
- new->fh_nextracts = 0;
-#endif
-}
-
-static void
-fh_destroyheap(struct fibheap *h)
-{
- h->fh_cmp_fnct = NULL;
- h->fh_neginf = NULL;
- if (h->fh_cons != NULL)
- free(h->fh_cons);
- h->fh_cons = NULL;
- free(h);
-}
-
-/*
- * Public Heap Functions
- */
-struct fibheap *
-fh_makekeyheap()
-{
- struct fibheap *n;
-
- if ((n = malloc(sizeof *n)) == NULL)
- return NULL;
-
- fh_initheap(n);
- n->fh_keys = 1;
-
- return n;
-}
-
-struct fibheap *
-fh_makeheap()
-{
- struct fibheap *n;
-
- if ((n = malloc(sizeof *n)) == NULL)
- return NULL;
-
- fh_initheap(n);
-
- return n;
-}
-
-voidcmp
-fh_setcmp(struct fibheap *h, voidcmp fnct)
-{
- voidcmp oldfnct;
-
- oldfnct = h->fh_cmp_fnct;
- h->fh_cmp_fnct = fnct;
-
- return oldfnct;
-}
-
-void *
-fh_setneginf(struct fibheap *h, void *data)
-{
- void *old;
-
- old = h->fh_neginf;
- h->fh_neginf = data;
-
- return old;
-}
-
-struct fibheap *
-fh_union(struct fibheap *ha, struct fibheap *hb)
-{
- struct fibheap_el *x;
-
- if (ha->fh_root == NULL || hb->fh_root == NULL) {
- /* either one or both are empty */
- if (ha->fh_root == NULL) {
- fh_destroyheap(ha);
- return hb;
- } else {
- fh_destroyheap(hb);
- return ha;
- }
- }
- ha->fh_root->fhe_left->fhe_right = hb->fh_root;
- hb->fh_root->fhe_left->fhe_right = ha->fh_root;
- x = ha->fh_root->fhe_left;
- ha->fh_root->fhe_left = hb->fh_root->fhe_left;
- hb->fh_root->fhe_left = x;
- ha->fh_n += hb->fh_n;
- /*
- * we probably should also keep stats on number of unions
- */
-
- /* set fh_min if necessary */
- if (fh_compare(ha, hb->fh_min, ha->fh_min) < 0)
- ha->fh_min = hb->fh_min;
-
- fh_destroyheap(hb);
- return ha;
-}
-
-void
-fh_deleteheap(struct fibheap *h)
-{
- /*
- * We could do this even faster by walking each binomial tree, but
- * this is simpler to code.
- */
- while (h->fh_min != NULL)
- fhe_destroy(fh_extractminel(h));
-
- fh_destroyheap(h);
-}
-
-/*
- * Public Key Heap Functions
- */
-struct fibheap_el *
-fh_insertkey(struct fibheap *h, int key, void *data)
-{
- struct fibheap_el *x;
-
- if ((x = fhe_newelem()) == NULL)
- return NULL;
-
- /* just insert on root list, and make sure it's not the new min */
- x->fhe_data = data;
- x->fhe_key = key;
-
- fh_insertel(h, x);
-
- return x;
-}
-
-int
-fh_minkey(struct fibheap *h)
-{
- if (h->fh_min == NULL)
- return INT_MIN;
- return h->fh_min->fhe_key;
-}
-
-int
-fh_replacekey(struct fibheap *h, struct fibheap_el *x, int key)
-{
- int ret;
-
- ret = x->fhe_key;
- (void)fh_replacekeydata(h, x, key, x->fhe_data);
-
- return ret;
-}
-
-#include <stdio.h>
-
-void *
-fh_replacekeydata(struct fibheap *h, struct fibheap_el *x, int key, void *data)
-{
- void *odata;
- int okey;
- struct fibheap_el *y;
- int r;
-
- odata = x->fhe_data;
- okey = x->fhe_key;
-
- /*
- * we can increase a key by deleting and reinserting, that
- * requires O(lgn) time.
- */
- if ((r = fh_comparedata(h, key, data, x)) > 0) {
- printf("fh_comparedata r=%d key=%d data=%p\n", r, key, data);
- /* XXX - bad code! */
- abort();
- fh_deleteel(h, x);
-
- x->fhe_data = data;
- x->fhe_key = key;
-
- fh_insertel(h, x);
-
- return odata;
- }
-
- x->fhe_data = data;
- x->fhe_key = key;
-
- /* because they are equal, we don't have to do anything */
- if (r == 0)
- return odata;
-
- y = x->fhe_p;
-
- if (h->fh_keys && okey == key)
- return odata;
-
- if (y != NULL && fh_compare(h, x, y) <= 0) {
- fh_cut(h, x, y);
- fh_cascading_cut(h, y);
- }
-
- /*
- * the = is so that the call from fh_delete will delete the proper
- * element.
- */
- if (fh_compare(h, x, h->fh_min) <= 0)
- h->fh_min = x;
-
- return odata;
-}
-
-/*
- * Public void * Heap Functions
- */
-/*
- * this will return these values:
- * NULL failed for some reason
- * ptr token to use for manipulation of data
- */
-struct fibheap_el *
-fh_insert(struct fibheap *h, void *data)
-{
- struct fibheap_el *x;
-
- if ((x = fhe_newelem()) == NULL)
- return NULL;
-
- /* just insert on root list, and make sure it's not the new min */
- x->fhe_data = data;
-
- fh_insertel(h, x);
-
- return x;
-}
-
-void *
-fh_min(struct fibheap *h)
-{
- if (h->fh_min == NULL)
- return NULL;
- return h->fh_min->fhe_data;
-}
-
-void *
-fh_extractmin(struct fibheap *h)
-{
- struct fibheap_el *z;
- void *ret;
-
- ret = NULL;
-
- if (h->fh_min != NULL) {
- z = fh_extractminel(h);
- ret = z->fhe_data;
-#ifndef NO_FREE
- fhe_destroy(z);
-#endif
-
- }
-
- return ret;
-}
-
-void *
-fh_replacedata(struct fibheap *h, struct fibheap_el *x, void *data)
-{
- return fh_replacekeydata(h, x, x->fhe_key, data);
-}
-
-void *
-fh_delete(struct fibheap *h, struct fibheap_el *x)
-{
- void *k;
-
- k = x->fhe_data;
- if (!h->fh_keys)
- fh_replacedata(h, x, h->fh_neginf);
- else
- fh_replacekey(h, x, INT_MIN);
- fh_extractmin(h);
-
- return k;
-}
-
-/*
- * Statistics Functions
- */
-#ifdef FH_STATS
-int
-fh_maxn(struct fibheap *h)
-{
- return h->fh_maxn;
-}
-
-int
-fh_ninserts(struct fibheap *h)
-{
- return h->fh_ninserts;
-}
-
-int
-fh_nextracts(struct fibheap *h)
-{
- return h->fh_nextracts;
-}
-#endif
-
-/*
- * begin of private element fuctions
- */
-static struct fibheap_el *
-fh_extractminel(struct fibheap *h)
-{
- struct fibheap_el *ret;
- struct fibheap_el *x, *y, *orig;
-
- ret = h->fh_min;
-
- orig = NULL;
- /* put all the children on the root list */
- /* for true consistancy, we should use fhe_remove */
- for(x = ret->fhe_child; x != orig && x != NULL;) {
- if (orig == NULL)
- orig = x;
- y = x->fhe_right;
- x->fhe_p = NULL;
- fh_insertrootlist(h, x);
- x = y;
- }
- /* remove minimum from root list */
- fh_removerootlist(h, ret);
- h->fh_n--;
-
- /* if we aren't empty, consolidate the heap */
- if (h->fh_n == 0)
- h->fh_min = NULL;
- else {
- h->fh_min = ret->fhe_right;
- fh_consolidate(h);
- }
-
-#ifdef FH_STATS
- h->fh_nextracts++;
-#endif
-
- return ret;
-}
-
-static void
-fh_insertrootlist(struct fibheap *h, struct fibheap_el *x)
-{
- if (h->fh_root == NULL) {
- h->fh_root = x;
- x->fhe_left = x;
- x->fhe_right = x;
- return;
- }
-
- fhe_insertafter(h->fh_root, x);
-}
-
-static void
-fh_removerootlist(struct fibheap *h, struct fibheap_el *x)
-{
- if (x->fhe_left == x)
- h->fh_root = NULL;
- else
- h->fh_root = fhe_remove(x);
-}
-
-static void
-fh_consolidate(struct fibheap *h)
-{
- struct fibheap_el **a;
- struct fibheap_el *w;
- struct fibheap_el *y;
- struct fibheap_el *x;
- int i;
- int d;
- int D;
-
- fh_checkcons(h);
-
- /* assign a the value of h->fh_cons so I don't have to rewrite code */
- D = h->fh_Dl + 1;
- a = h->fh_cons;
-
- for (i = 0; i < D; i++)
- a[i] = NULL;
-
- while ((w = h->fh_root) != NULL) {
- x = w;
- fh_removerootlist(h, w);
- d = x->fhe_degree;
- /* XXX - assert that d < D */
- while(a[d] != NULL) {
- y = a[d];
- if (fh_compare(h, x, y) > 0)
- swap(struct fibheap_el *, x, y);
- fh_heaplink(h, y, x);
- a[d] = NULL;
- d++;
- }
- a[d] = x;
- }
- h->fh_min = NULL;
- for (i = 0; i < D; i++)
- if (a[i] != NULL) {
- fh_insertrootlist(h, a[i]);
- if (h->fh_min == NULL || fh_compare(h, a[i],
- h->fh_min) < 0)
- h->fh_min = a[i];
- }
-}
-
-static void
-fh_heaplink(struct fibheap *h, struct fibheap_el *y, struct fibheap_el *x)
-{
- /* make y a child of x */
- if (x->fhe_child == NULL)
- x->fhe_child = y;
- else
- fhe_insertbefore(x->fhe_child, y);
- y->fhe_p = x;
- x->fhe_degree++;
- y->fhe_mark = 0;
-}
-
-static void
-fh_cut(struct fibheap *h, struct fibheap_el *x, struct fibheap_el *y)
-{
- fhe_remove(x);
- y->fhe_degree--;
- fh_insertrootlist(h, x);
- x->fhe_p = NULL;
- x->fhe_mark = 0;
-}
-
-static void
-fh_cascading_cut(struct fibheap *h, struct fibheap_el *y)
-{
- struct fibheap_el *z;
-
- while ((z = y->fhe_p) != NULL) {
- if (y->fhe_mark == 0) {
- y->fhe_mark = 1;
- return;
- } else {
- fh_cut(h, y, z);
- y = z;
- }
- }
-}
-
-/*
- * begining of handling elements of fibheap
- */
-static struct fibheap_el *
-fhe_newelem()
-{
- struct fibheap_el *e;
-
- if ((e = malloc(sizeof *e)) == NULL)
- return NULL;
-
- fhe_initelem(e);
-
- return e;
-}
-
-static void
-fhe_initelem(struct fibheap_el *e)
-{
- e->fhe_degree = 0;
- e->fhe_mark = 0;
- e->fhe_p = NULL;
- e->fhe_child = NULL;
- e->fhe_left = e;
- e->fhe_right = e;
- e->fhe_data = NULL;
-}
-
-static void
-fhe_insertafter(struct fibheap_el *a, struct fibheap_el *b)
-{
- if (a == a->fhe_right) {
- a->fhe_right = b;
- a->fhe_left = b;
- b->fhe_right = a;
- b->fhe_left = a;
- } else {
- b->fhe_right = a->fhe_right;
- a->fhe_right->fhe_left = b;
- a->fhe_right = b;
- b->fhe_left = a;
- }
-}
-
-static void
-fhe_insertbefore(struct fibheap_el *a, struct fibheap_el *b)
-{
- fhe_insertafter(a->fhe_left, b);
-}
-
-static struct fibheap_el *
-fhe_remove(struct fibheap_el *x)
-{
- struct fibheap_el *ret;
-
- if (x == x->fhe_left)
- ret = NULL;
- else
- ret = x->fhe_left;
-
- /* fix the parent pointer */
- if (x->fhe_p != NULL && x->fhe_p->fhe_child == x)
- x->fhe_p->fhe_child = ret;
-
- x->fhe_right->fhe_left = x->fhe_left;
- x->fhe_left->fhe_right = x->fhe_right;
-
- /* clear out hanging pointers */
- x->fhe_p = NULL;
- x->fhe_left = x;
- x->fhe_right = x;
-
- return ret;
-}
-
-static void
-fh_checkcons(struct fibheap *h)
-{
- int oDl;
-
- /* make sure we have enough memory allocated to "reorganize" */
- if (h->fh_Dl == -1 || h->fh_n > (1 << h->fh_Dl)) {
- oDl = h->fh_Dl;
- if ((h->fh_Dl = ceillog2(h->fh_n) + 1) < 8)
- h->fh_Dl = 8;
- if (oDl != h->fh_Dl)
- h->fh_cons = (struct fibheap_el **)realloc(h->fh_cons,
- sizeof *h->fh_cons * (h->fh_Dl + 1));
- if (h->fh_cons == NULL)
- abort();
- }
-}
-
-static int
-fh_compare(struct fibheap *h, struct fibheap_el *a, struct fibheap_el *b)
-{
- if (h->fh_keys) {
- if (a->fhe_key < b->fhe_key)
- return -1;
- if (a->fhe_key == b->fhe_key)
- return 0;
- return 1;
- } else
- return h->fh_cmp_fnct(a->fhe_data, b->fhe_data);
-}
-
-static int
-fh_comparedata(struct fibheap *h, int key, void *data, struct fibheap_el *b)
-{
- struct fibheap_el a;
-
- a.fhe_key = key;
- a.fhe_data = data;
-
- return fh_compare(h, &a, b);
-}
-
-static void
-fh_insertel(struct fibheap *h, struct fibheap_el *x)
-{
- fh_insertrootlist(h, x);
-
- if (h->fh_min == NULL || (h->fh_keys ? x->fhe_key < h->fh_min->fhe_key
- : h->fh_cmp_fnct(x->fhe_data, h->fh_min->fhe_data) < 0))
- h->fh_min = x;
-
- h->fh_n++;
-
-#ifdef FH_STATS
- if (h->fh_n > h->fh_maxn)
- h->fh_maxn = h->fh_n;
- h->fh_ninserts++;
-#endif
-
-}
diff --git a/navit/fib-1.1/fib.h b/navit/fib-1.1/fib.h
deleted file mode 100644
index d8564d3c7..000000000
--- a/navit/fib-1.1/fib.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*-
- * Copyright 1997, 1998-2003 John-Mark Gurney.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: fib.h,v 1.1 2005-12-02 10:41:56 martin-s Exp $
- *
- */
-
-#ifndef _FIB_H_
-#define _FIB_H_
-
-struct fibheap;
-struct fibheap_el;
-typedef int (*voidcmp)(void *, void *);
-
-/* functions for key heaps */
-struct fibheap *fh_makekeyheap(void);
-struct fibheap_el *fh_insertkey(struct fibheap *, int, void *);
-int fh_minkey(struct fibheap *);
-int fh_replacekey(struct fibheap *, struct fibheap_el *, int);
-void *fh_replacekeydata(struct fibheap *, struct fibheap_el *, int, void *);
-
-/* functions for void * heaps */
-struct fibheap *fh_makeheap(void);
-voidcmp fh_setcmp(struct fibheap *, voidcmp);
-void *fh_setneginf(struct fibheap *, void *);
-struct fibheap_el *fh_insert(struct fibheap *, void *);
-
-/* shared functions */
-void *fh_extractmin(struct fibheap *);
-void *fh_min(struct fibheap *);
-void *fh_replacedata(struct fibheap *, struct fibheap_el *, void *);
-void *fh_delete(struct fibheap *, struct fibheap_el *);
-void fh_deleteheap(struct fibheap *);
-struct fibheap *fh_union(struct fibheap *, struct fibheap *);
-
-#ifdef FH_STATS
-int fh_maxn(struct fibheap *);
-int fh_ninserts(struct fibheap *);
-int fh_nextracts(struct fibheap *);
-#endif
-
-#endif /* _FIB_H_ */
diff --git a/navit/fib-1.1/fibpriv.h b/navit/fib-1.1/fibpriv.h
deleted file mode 100644
index a1f173557..000000000
--- a/navit/fib-1.1/fibpriv.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*-
- * Copyright 1997, 1999-2003 John-Mark Gurney.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: fibpriv.h,v 1.1 2005-12-02 10:41:56 martin-s Exp $
- *
- */
-
-#ifndef _FIBPRIV_H_
-#define _FIBPRIV_H_
-
-struct fibheap_el;
-
-/*
- * global heap operations
- */
-struct fibheap {
- int (*fh_cmp_fnct)(void *, void *);
- int fh_n;
- int fh_Dl;
- struct fibheap_el **fh_cons;
- struct fibheap_el *fh_min;
- struct fibheap_el *fh_root;
- void *fh_neginf;
- int fh_keys : 1;
-#ifdef FH_STATS
- int fh_maxn;
- int fh_ninserts;
- int fh_nextracts;
-#endif
-};
-
-static void fh_initheap(struct fibheap *);
-static void fh_insertrootlist(struct fibheap *, struct fibheap_el *);
-static void fh_removerootlist(struct fibheap *, struct fibheap_el *);
-static void fh_consolidate(struct fibheap *);
-static void fh_heaplink(struct fibheap *h, struct fibheap_el *y,
- struct fibheap_el *x);
-static void fh_cut(struct fibheap *, struct fibheap_el *, struct fibheap_el *);
-static void fh_cascading_cut(struct fibheap *, struct fibheap_el *);
-static struct fibheap_el *fh_extractminel(struct fibheap *);
-static void fh_checkcons(struct fibheap *h);
-static void fh_destroyheap(struct fibheap *h);
-static int fh_compare(struct fibheap *h, struct fibheap_el *a,
- struct fibheap_el *b);
-static int fh_comparedata(struct fibheap *h, int key, void *data,
- struct fibheap_el *b);
-static void fh_insertel(struct fibheap *h, struct fibheap_el *x);
-static void fh_deleteel(struct fibheap *h, struct fibheap_el *x);
-
-/*
- * specific node operations
- */
-struct fibheap_el {
- int fhe_degree;
- int fhe_mark;
- struct fibheap_el *fhe_p;
- struct fibheap_el *fhe_child;
- struct fibheap_el *fhe_left;
- struct fibheap_el *fhe_right;
- int fhe_key;
- void *fhe_data;
-};
-
-static struct fibheap_el *fhe_newelem(void);
-static void fhe_initelem(struct fibheap_el *);
-static void fhe_insertafter(struct fibheap_el *a, struct fibheap_el *b);
-static void fhe_insertbefore(struct fibheap_el *a, struct fibheap_el *b);
-static struct fibheap_el *fhe_remove(struct fibheap_el *a);
-#define fhe_destroy(x) free((x))
-
-/*
- * general functions
- */
-static int ceillog2(unsigned int a);
-
-#endif /* _FIBPRIV_H_ */
diff --git a/navit/fib-1.1/fibtest.c b/navit/fib-1.1/fibtest.c
deleted file mode 100644
index 36510087c..000000000
--- a/navit/fib-1.1/fibtest.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*-
- * Copyright 1997, 1998-2003 John-Mark Gurney.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
-
-*/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "fib.h"
-
-int main(void)
-{
- struct fibheap *a;
- void *arr[10];
- int i;
-
- a = fh_makekeyheap();
-
- for (i=1 ; i < 10 ; i++)
- {
- arr[i]= fh_insertkey(a,0,(void *)i);
- printf("adding: 0 %d \n",i);
- }
-
- printf(" \n");
- fh_replacekey(a, arr[1],-1);
- fh_replacekey(a, arr[6],-1);
- fh_replacekey(a, arr[4],-1);
- fh_replacekey(a, arr[2],-1);
- fh_replacekey(a, arr[8],-1);
-
- printf("value(minkey) %d\n",fh_minkey(a));
- printf("id: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[7],-33);
-/* -> node 7 becomes root node, but is still pointed to by node 6 */
- fh_replacekey(a, arr[4],-36);
- fh_replacekey(a, arr[3],-1);
- fh_replacekey(a, arr[9],-81);
-
- printf("value(minkey) %d\n",fh_minkey(a));
- printf("id: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[6],-68);
- fh_replacekey(a, arr[2],-69);
-
- printf("value(minkey) %d\n",fh_minkey(a));
- printf("id: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[1],-52);
- fh_replacekey(a, arr[3],-2);
- fh_replacekey(a, arr[4],-120);
- fh_replacekey(a, arr[5],-48);
-
- printf("value(minkey) %d\n",fh_minkey(a));
- printf("id: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[3],-3);
- fh_replacekey(a, arr[5],-63);
-
- printf("value(minkey) %d\n",fh_minkey(a));
- printf("id: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[5],-110);
- fh_replacekey(a, arr[7],-115);
-
- printf("value(minkey) %d\n",fh_minkey(a));
- printf("id: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[5],-188);
-
- printf("value(minkey) %d\n",fh_minkey(a));
- printf("id: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[3],-4);
-
- printf("value(minkey) %d\n",fh_minkey(a));
- printf("id: %d\n\n", (int)fh_extractmin(a));
-
- printf("value(minkey) %d\n",fh_minkey(a));
- printf("id: %d\n\n", (int)fh_extractmin(a));
-
- fh_deleteheap(a);
-
- return 0;
-}
diff --git a/navit/fib-1.1/fibtest.out b/navit/fib-1.1/fibtest.out
deleted file mode 100644
index 285bd26bb..000000000
--- a/navit/fib-1.1/fibtest.out
+++ /dev/null
@@ -1,37 +0,0 @@
-adding: 0 1
-adding: 0 2
-adding: 0 3
-adding: 0 4
-adding: 0 5
-adding: 0 6
-adding: 0 7
-adding: 0 8
-adding: 0 9
-
-value(minkey) -1
-id: 8
-
-value(minkey) -81
-id: 9
-
-value(minkey) -69
-id: 2
-
-value(minkey) -120
-id: 4
-
-value(minkey) -68
-id: 6
-
-value(minkey) -115
-id: 7
-
-value(minkey) -188
-id: 5
-
-value(minkey) -52
-id: 1
-
-value(minkey) -4
-id: 3
-
diff --git a/navit/fib-1.1/fibtest2.c b/navit/fib-1.1/fibtest2.c
deleted file mode 100644
index 2ce1f6a06..000000000
--- a/navit/fib-1.1/fibtest2.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*-
- * Copyright 1997, 1998-2003 John-Mark Gurney.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
-
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "fib.h"
-
-int
-main(void) {
- struct fibheap *a;
- void *arr[10];
- int i;
- a = fh_makekeyheap();
-
- for (i=1 ; i < 10 ; i++)
- {
- arr[i]= fh_insertkey(a,0,(void *)i);
- printf("adding: 0 %d \n",i);
- }
-
- printf(" \n");
- fh_replacekey(a, arr[1],-38);
- fh_replacekey(a, arr[7],-34);
-
- printf("wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
- fh_replacekey(a, arr[2],-55);
- fh_replacekey(a, arr[5],-56);
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[4],-1);
- fh_replacekey(a, arr[2],-102);
- fh_replacekey(a, arr[6],-1);
- fh_replacekey(a, arr[9],-1);
- fh_replacekey(a, arr[8],-4);
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
- fh_replacekey(a, arr[3],-74);
- fh_replacekey(a, arr[8],-55);
- fh_replacekey(a, arr[4],-2);
-
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
- fh_replacekey(a, arr[4],-3);
- fh_replacekey(a, arr[6],-2);
- fh_replacekey(a, arr[7],-99);
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
- fh_replacekey(a, arr[6],-3);
- fh_replacekey(a, arr[4],-4);
- fh_replacekey(a, arr[8],-94);
- fh_replacekey(a, arr[9],-2);
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
- fh_replacekey(a, arr[6],-4);
-
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
-
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
- /*fh_replacekey(a, arr[9],-3);*/
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
-
- /*fh_replacekey(a, arr[9],-49);*/
-
- fh_deleteheap(a);
-
- return 0;
-}
diff --git a/navit/fib-1.1/fibtest2.out b/navit/fib-1.1/fibtest2.out
deleted file mode 100644
index e9d1704f8..000000000
--- a/navit/fib-1.1/fibtest2.out
+++ /dev/null
@@ -1,37 +0,0 @@
-adding: 0 1
-adding: 0 2
-adding: 0 3
-adding: 0 4
-adding: 0 5
-adding: 0 6
-adding: 0 7
-adding: 0 8
-adding: 0 9
-
-wert(minkey) -38
-Knoten: 1
-
-Wert(minkey) -56
-Knoten: 5
-
-Wert(minkey) -102
-Knoten: 2
-
-Wert(minkey) -74
-Knoten: 3
-
-Wert(minkey) -99
-Knoten: 7
-
-Wert(minkey) -94
-Knoten: 8
-
-Wert(minkey) -4
-Knoten: 6
-
-Wert(minkey) -4
-Knoten: 4
-
-Wert(minkey) -2
-Knoten: 9
-
diff --git a/navit/fib-1.1/tt.c b/navit/fib-1.1/tt.c
deleted file mode 100644
index 0bf580357..000000000
--- a/navit/fib-1.1/tt.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * Copyright 1997, 1998-2003 John-Mark Gurney.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
-
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "fib.h"
-
-int main(void)
-{
-
- struct fibheap *a;
- void *arr[10];
- int i;
-
- a = fh_makekeyheap();
-
- for (i=1 ; i < 8 ; i++)
- {
- arr[i]= fh_insertkey(a,0,(void *)i);
- printf("adding: 0 %d \n",i);
- }
-
- printf(" \n");
-
- fh_replacekey(a, arr[1],-2);
- fh_replacekey(a, arr[4],-3);
- fh_replacekey(a, arr[7],-5);
-
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[3],-2);
- fh_replacekey(a, arr[6],-1);
-
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[1],-9);
- fh_replacekey(a, arr[5],-3);
-
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[2],-4);
- fh_replacekey(a, arr[5],-5);
- fh_replacekey(a, arr[6],-3);
-
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
-
- fh_replacekey(a, arr[2],-6);
- fh_replacekey(a, arr[6],-6);
-
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
-
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
-
- printf("Wert(minkey) %d\n",fh_minkey(a));
- printf("Knoten: %d\n\n", (int)fh_extractmin(a));
-
- fh_deleteheap(a);
-
- return 0;
-}
-
diff --git a/navit/fib-1.1/tt.out b/navit/fib-1.1/tt.out
deleted file mode 100644
index 37a8a47c1..000000000
--- a/navit/fib-1.1/tt.out
+++ /dev/null
@@ -1,29 +0,0 @@
-adding: 0 1
-adding: 0 2
-adding: 0 3
-adding: 0 4
-adding: 0 5
-adding: 0 6
-adding: 0 7
-
-Wert(minkey) -5
-Knoten: 7
-
-Wert(minkey) -3
-Knoten: 4
-
-Wert(minkey) -9
-Knoten: 1
-
-Wert(minkey) -5
-Knoten: 5
-
-Wert(minkey) -6
-Knoten: 6
-
-Wert(minkey) -6
-Knoten: 2
-
-Wert(minkey) -2
-Knoten: 3
-
diff --git a/navit/fib-1.1/use.c b/navit/fib-1.1/use.c
deleted file mode 100644
index 309d85c44..000000000
--- a/navit/fib-1.1/use.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/*-
- * Copyright 1997, 1998-2003 John-Mark Gurney.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
-
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-#include "fib.h"
-
-#define TESTCASE 1
-
-#define COUNT 100000
-#define DIF 1000
-#define MAXEXT 10
-#define VERBOSE 1
-
-int cmp(void *, void *);
-
-int
-cmp(void *x, void *y)
-{
- int a, b;
- a = (int)x;
- b = (int)y;
-
- if (a < b)
- return -1;
- if (a == b)
- return 0;
- return 1;
-}
-
-int
-main(void)
-{
-#if !TESTCASE
- struct fibheap_el *w;
-#else
- int e, j, k;
-#endif
- struct fibheap *a;
- int i, x;
-
- a = fh_makeheap();
- fh_setcmp(a, cmp);
-
- srandom(time(NULL));
-#if TESTCASE
-#if VERBOSE
- printf("inserting: ");
-#endif
- e = 0;
- for (i = 0; i < COUNT; i++) {
-#if VERBOSE
- if (i)
- printf(", ");
-#endif
- fh_insert(a, (void *)(x = random()/10));
-#if VERBOSE
- printf("%d", x);
-#endif
- if (i - e > DIF) {
- k = random() % MAXEXT;
- for (j = 0; j < k; j++, e++)
- printf("throwing: %d\n", (int)fh_extractmin(a));
- }
- }
-
-#if VERBOSE
- printf("\nremaining: %d\n", COUNT - e);
- printf("extracting: ");
-#endif
- for (i = 0; i < COUNT - e; i++) {
-#if VERBOSE
- if (i)
- printf(", ");
- printf("%d", (int)fh_extractmin(a));
-#else
- fh_extractmin(a);
-#endif
- }
-#if VERBOSE
- printf("\n");
-#endif
- if ((int)fh_extractmin(a) == 0)
- printf("heap empty!\n");
- else {
- printf("heap not empty! ERROR!\n");
- exit(1);
- }
-#else
- w = fh_insert(a, (void *)6);
- printf("adding: %d\n", 6);
- fh_insert(a, (void *)9);
- printf("adding: %d\n", 9);
- fh_insert(a, (void *)1);
- printf("adding: %d\n", 1);
- for(i = 0; i < 5; i++) {
- x = random()/10000;
- printf("adding: %d\n", x);
- fh_insert(a, (void *)x);
- }
- fh_insert(a, (void *)4);
- printf("adding: %d\n", 4);
- fh_insert(a, (void *)8);
- printf("adding: %d\n", 8);
- printf("first: %d\n", (int)fh_extractmin(a));
- printf("deleting: %d\n", (int)fh_delete(a, w));
- printf("first: %d\n", (int)fh_extractmin(a));
- printf("first: %d\n", (int)fh_extractmin(a));
- printf("first: %d\n", (int)fh_extractmin(a));
- printf("first: %d\n", (int)fh_extractmin(a));
- printf("first: %d\n", (int)fh_extractmin(a));
- for(i = 0; i < 5; i++) {
- x = random()/10000;
- printf("adding: %d\n", x);
- fh_insert(a, (void *)x);
- }
- printf("first: %d\n", (int)fh_extractmin(a));
- printf("first: %d\n", (int)fh_extractmin(a));
- printf("first: %d\n", (int)fh_extractmin(a));
- printf("first: %d\n", (int)fh_extractmin(a));
- printf("first: %d\n", (int)fh_extractmin(a));
-#endif
-
- fh_deleteheap(a);
-
- return 0;
-}
diff --git a/navit/file.c b/navit/file.c
deleted file mode 100644
index 6764eafe1..000000000
--- a/navit/file.c
+++ /dev/null
@@ -1,925 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 "config.h"
-#include "navit_lfs.h"
-#ifdef _MSC_VER
-#include <windows.h>
-#else
-#include <dirent.h>
-#endif /* _MSC_VER */
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <stdlib.h>
-#include <wordexp.h>
-#include <glib.h>
-#include <zlib.h>
-#include "debug.h"
-#include "cache.h"
-#include "file.h"
-#include "atom.h"
-#include "item.h"
-#include "util.h"
-#include "types.h"
-#include "zipfile.h"
-#ifdef HAVE_SOCKET
-#include <sys/socket.h>
-#include <netdb.h>
-#endif
-
-extern char *version;
-
-#ifdef HAVE_LIBCRYPTO
-#include <openssl/sha.h>
-#include <openssl/hmac.h>
-#include <openssl/aes.h>
-#include <openssl/evp.h>
-#include <openssl/rand.h>
-#endif
-
-#ifdef CACHE_SIZE
-static GHashTable *file_name_hash;
-#endif
-
-static struct cache *file_cache;
-
-#ifdef HAVE_PRAGMA_PACK
-#pragma pack(push)
-#pragma pack(1)
-#endif
-
-struct file_cache_id {
- long long offset;
- int size;
- int file_name_id;
- int method;
-} ATTRIBUTE_PACKED;
-
-#ifdef HAVE_PRAGMA_PACK
-#pragma pack(pop)
-#endif
-
-#ifdef HAVE_SOCKET
-static int
-file_socket_connect(char *host, char *service)
-{
- struct addrinfo hints;
- struct addrinfo *result, *rp;
- int fd=-1,s;
-
- memset(&hints, 0, sizeof(struct addrinfo));
- hints.ai_family = AF_UNSPEC;
- hints.ai_socktype = SOCK_STREAM;
- hints.ai_flags = 0;
- hints.ai_protocol = 0;
- s = getaddrinfo(host, service, &hints, &result);
- if (s != 0) {
- dbg(lvl_error,"getaddrinfo error %s\n",gai_strerror(s));
- return -1;
- }
- for (rp = result; rp != NULL; rp = rp->ai_next) {
- fd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
- if (fd != -1) {
- if (connect(fd, rp->ai_addr, rp->ai_addrlen) != -1)
- break;
- close(fd);
- fd=-1;
- }
- }
- freeaddrinfo(result);
- return fd;
-}
-
-static void
-file_http_request(struct file *file, char *method, char *host, char *path, char *header, int persistent)
-{
- char *request=g_strdup_printf("%s %s HTTP/1.0\r\nUser-Agent: navit %s\r\nHost: %s\r\n%s%s%s\r\n",method,path,version,host,persistent?"Connection: Keep-Alive\r\n":"",header?header:"",header?"\r\n":"");
- write(file->fd, request, strlen(request));
- dbg(lvl_debug,"%s\n",request);
- file->requests++;
-}
-
-static int
-file_request_do(struct file *file, struct attr **options, int connect)
-{
- struct attr *attr;
- char *name;
-
- if (!options)
- return 0;
- attr=attr_search(options, NULL, attr_url);
- if (!attr)
- return 0;
- name=attr->u.str;
- if (!name)
- return 0;
- g_free(file->name);
- file->name = g_strdup(name);
- if (!strncmp(name,"http://",7)) {
- char *host=g_strdup(name+7);
- char *port=strchr(host,':');
- char *path=strchr(name+7,'/');
- char *method="GET";
- char *header=NULL;
- int persistent=0;
- if ((attr=attr_search(options, NULL, attr_http_method)) && attr->u.str)
- method=attr->u.str;
- if ((attr=attr_search(options, NULL, attr_http_header)) && attr->u.str)
- header=attr->u.str;
- if ((attr=attr_search(options, NULL, attr_persistent)))
- persistent=attr->u.num;
- if (path)
- host[path-name-7]='\0';
- if (port)
- *port++='\0';
- dbg(lvl_debug,"host=%s path=%s\n",host,path);
- if (connect)
- file->fd=file_socket_connect(host,port?port:"80");
- file_http_request(file,method,host,path,header,persistent);
- file->special=1;
- g_free(host);
- }
- return 1;
-}
-#endif
-
-static unsigned char *
-file_http_header_end(unsigned char *str, int len)
-{
- int i;
- for (i=0; i+1<len; i+=2) {
- if (str[i+1]=='\n') {
- if (str[i]=='\n')
- return str+i+2;
- else if (str[i]=='\r' && i+3<len && str[i+2]=='\r' && str[i+3]=='\n')
- return str+i+4;
- --i;
- } else if (str[i+1]=='\r') {
- if (i+4<len && str[i+2]=='\n' && str[i+3]=='\r' && str[i+4]=='\n')
- return str+i+5;
- --i;
- }
- }
- return NULL;
-}
-
-int
-file_request(struct file *f, struct attr **options)
-{
-#ifdef HAVE_SOCKET
- return file_request_do(f, options, 0);
-#else
- return 0;
-#endif
-}
-
-char *
-file_http_header(struct file *f, char *header)
-{
- if (!f->headers)
- return NULL;
- return g_hash_table_lookup(f->headers, header);
-}
-
-struct file *
-file_create(char *name, struct attr **options)
-{
- struct file *file= g_new0(struct file,1);
- struct attr *attr;
- int open_flags=O_LARGEFILE|O_BINARY;
-
- if (options && (attr=attr_search(options, NULL, attr_url))) {
-#ifdef HAVE_SOCKET
- file_request_do(file, options, 1);
-#endif
- } else {
- if (options && (attr=attr_search(options, NULL, attr_readwrite)) && attr->u.num) {
- open_flags |= O_RDWR;
- if ((attr=attr_search(options, NULL, attr_create)) && attr->u.num)
- open_flags |= O_CREAT|O_TRUNC;
- } else
- open_flags |= O_RDONLY;
- file->name = g_strdup(name);
- file->fd=open(name, open_flags, 0666);
- if (file->fd == -1) {
- g_free(file->name);
- g_free(file);
- return NULL;
- }
- dbg(lvl_debug,"fd=%d\n", file->fd);
- file->size=lseek(file->fd, 0, SEEK_END);
- if (file->size < 0)
- file->size=0;
- dbg(lvl_debug,"size="LONGLONG_FMT"\n", file->size);
- file->name_id = (long)atom(name);
- }
-#ifdef CACHE_SIZE
- if (!options || !(attr=attr_search(options, NULL, attr_cache)) || attr->u.num)
- file->cache=1;
-#endif
- dbg_assert(file != NULL);
- return file;
-}
-
-#if 0
-struct file *
-file_create_url(char *url)
-{
-}
-#endif
-
-#ifndef S_ISDIR
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-#endif
-#ifndef S_ISREG
-#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-#endif
-
-int file_is_dir(char *name)
-{
- struct stat buf;
- if (! stat(name, &buf)) {
- return S_ISDIR(buf.st_mode);
- }
- return 0;
-
-}
-
-int file_is_reg(char *name)
-{
- struct stat buf;
- if (! stat(name, &buf)) {
- return S_ISREG(buf.st_mode);
- }
- return 0;
-}
-
-long long
-file_size(struct file *file)
-{
- return file->size;
-}
-
-int file_mkdir(char *name, int pflag)
-{
- char *buffer=g_alloca(sizeof(char)*(strlen(name)+1));
- int ret;
- char *next;
- dbg(lvl_debug,"enter %s %d\n",name,pflag);
- if (!pflag) {
- if (file_is_dir(name))
- return 0;
-#if defined HAVE_API_WIN32_BASE || defined _MSC_VER
- return mkdir(name);
-#else
- return mkdir(name, 0777);
-#endif
- }
- strcpy(buffer, name);
- next=buffer;
- while ((next=strchr(next, '/'))) {
- *next='\0';
- if (*buffer) {
- ret=file_mkdir(buffer, 0);
- if (ret)
- return ret;
- }
- *next++='/';
- }
- if (pflag == 2)
- return 0;
- return file_mkdir(buffer, 0);
-}
-
-int
-file_mmap(struct file *file)
-{
-#if 0
- int mmap_size=file->size+1024*1024;
-#else
- int mmap_size=file->size;
-#endif
-#ifdef HAVE_API_WIN32_BASE
- file->begin = (unsigned char*)mmap_readonly_win32( file->name, &file->map_handle, &file->map_file );
-#else
- file->begin=mmap(NULL, mmap_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, file->fd, 0);
- dbg_assert(file->begin != NULL);
- if (file->begin == (void *)0xffffffff) {
- perror("mmap");
- return 0;
- }
-#endif
- dbg_assert(file->begin != (void *)0xffffffff);
- file->mmap_end=file->begin+mmap_size;
- file->end=file->begin+file->size;
-
- return 1;
-}
-
-unsigned char *
-file_data_read(struct file *file, long long offset, int size)
-{
- void *ret;
- if (file->special)
- return NULL;
- if (file->begin)
- return file->begin+offset;
- if (file->cache) {
- struct file_cache_id id={offset,size,file->name_id,0};
- ret=cache_lookup(file_cache,&id);
- if (ret)
- return ret;
- ret=cache_insert_new(file_cache,&id,size);
- } else
- ret=g_malloc(size);
- lseek(file->fd, offset, SEEK_SET);
- if (read(file->fd, ret, size) != size) {
- file_data_free(file, ret);
- ret=NULL;
- }
- return ret;
-
-}
-
-static void
-file_process_headers(struct file *file, unsigned char *headers)
-{
- char *tok;
- char *cl;
- if (file->headers)
- g_hash_table_destroy(file->headers);
- file->headers=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
- while ((tok=strtok((char*)headers, "\r\n"))) {
- char *sep;
- tok=g_strdup(tok);
- sep=strchr(tok,':');
- if (!sep)
- sep=strchr(tok,'/');
- if (!sep) {
- g_free(tok);
- continue;
- }
- *sep++='\0';
- if (*sep == ' ')
- sep++;
- strtolower(tok, tok);
- dbg(lvl_debug,"header '%s'='%s'\n",tok,sep);
- g_hash_table_insert(file->headers, tok, sep);
- headers=NULL;
- }
- cl=g_hash_table_lookup(file->headers, "content-length");
- if (cl)
-#ifdef HAVE__ATOI64
- file->size=_atoi64(cl);
-#else
- file->size=atoll(cl);
-#endif
-}
-
-static void
-file_shift_buffer(struct file *file, int amount)
-{
- memmove(file->buffer, file->buffer+amount, file->buffer_len-amount);
- file->buffer_len-=amount;
-}
-
-unsigned char *
-file_data_read_special(struct file *file, int size, int *size_ret)
-{
- unsigned char *ret,*hdr;
- int rets=0,rd;
- int buffer_size=8192;
- int eof=0;
- if (!file->special)
- return NULL;
- if (!file->buffer)
- file->buffer=g_malloc(buffer_size);
- ret=g_malloc(size);
- while ((size > 0 || file->requests) && (!eof || file->buffer_len)) {
- int toread=buffer_size-file->buffer_len;
- if (toread >= 4096 && !eof) {
- if (!file->requests && toread > size)
- toread=size;
- rd=read(file->fd, file->buffer+file->buffer_len, toread);
- if (rd > 0) {
- file->buffer_len+=rd;
- } else
- eof=1;
- }
- if (file->requests) {
- dbg(lvl_debug,"checking header\n");
- if ((hdr=file_http_header_end(file->buffer, file->buffer_len))) {
- hdr[-1]='\0';
- dbg(lvl_debug,"found %s\n",file->buffer);
- file_process_headers(file, file->buffer);
- file_shift_buffer(file, hdr-file->buffer);
- file->requests--;
- if (file_http_header(file, "location"))
- break;
- }
- }
- if (!file->requests) {
- rd=file->buffer_len;
- if (rd > size)
- rd=size;
- memcpy(ret+rets, file->buffer, rd);
- file_shift_buffer(file, rd);
- rets+=rd;
- size-=rd;
- }
- }
- *size_ret=rets;
- return ret;
-}
-
-unsigned char *
-file_data_read_all(struct file *file)
-{
- return file_data_read(file, 0, file->size);
-}
-
-void
-file_data_flush(struct file *file, long long offset, int size)
-{
- if (file->cache) {
- struct file_cache_id id={offset,size,file->name_id,0};
- cache_flush(file_cache,&id);
- dbg(lvl_debug,"Flushing "LONGLONG_FMT" %d bytes\n",offset,size);
- }
-}
-
-int
-file_data_write(struct file *file, long long offset, int size, const void *data)
-{
- file_data_flush(file, offset, size);
- lseek(file->fd, offset, SEEK_SET);
- if (write(file->fd, data, size) != size)
- return 0;
- if (file->size < offset+size)
- file->size=offset+size;
- return 1;
-}
-
-int
-file_get_contents(char *name, unsigned char **buffer, int *size)
-{
- struct file *file;
- file=file_create(name, 0);
- if (!file)
- return 0;
- file->cache=0;
- *size=file_size(file);
- *buffer=file_data_read_all(file);
- file_destroy(file);
- return 1;
-}
-
-
-static int
-uncompress_int(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen)
-{
- z_stream stream;
- int err;
-
- stream.next_in = (Bytef*)source;
- stream.avail_in = (uInt)sourceLen;
- stream.next_out = dest;
- stream.avail_out = (uInt)*destLen;
-
- stream.zalloc = (alloc_func)0;
- stream.zfree = (free_func)0;
-
- err = inflateInit2(&stream, -MAX_WBITS);
- if (err != Z_OK) return err;
-
- err = inflate(&stream, Z_FINISH);
- if (err != Z_STREAM_END) {
- inflateEnd(&stream);
- if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))
- return Z_DATA_ERROR;
- return err;
- }
- *destLen = stream.total_out;
-
- err = inflateEnd(&stream);
- return err;
-}
-
-unsigned char *
-file_data_read_compressed(struct file *file, long long offset, int size, int size_uncomp)
-{
- void *ret;
- char *buffer = 0;
- uLongf destLen=size_uncomp;
-
- if (file->cache) {
- struct file_cache_id id={offset,size,file->name_id,1};
- ret=cache_lookup(file_cache,&id);
- if (ret)
- return ret;
- ret=cache_insert_new(file_cache,&id,size_uncomp);
- } else
- ret=g_malloc(size_uncomp);
- lseek(file->fd, offset, SEEK_SET);
-
- buffer = (char *)g_malloc(size);
- if (read(file->fd, buffer, size) != size) {
- g_free(ret);
- ret=NULL;
- } else {
- if (uncompress_int(ret, &destLen, (Bytef *)buffer, size) != Z_OK) {
- dbg(lvl_error,"uncompress failed\n");
- g_free(ret);
- ret=NULL;
- }
- }
- g_free(buffer);
-
- return ret;
-}
-
-unsigned char *
-file_data_read_encrypted(struct file *file, long long offset, int size, int size_uncomp, int compressed, char *passwd)
-{
-#ifdef HAVE_LIBCRYPTO
- void *ret;
- unsigned char *buffer = 0;
- uLongf destLen=size_uncomp;
-
- if (file->cache) {
- struct file_cache_id id={offset,size,file->name_id,1};
- ret=cache_lookup(file_cache,&id);
- if (ret)
- return ret;
- ret=cache_insert_new(file_cache,&id,size_uncomp);
- } else
- ret=g_malloc(size_uncomp);
- lseek(file->fd, offset, SEEK_SET);
-
- buffer = (unsigned char *)g_malloc(size);
- if (read(file->fd, buffer, size) != size) {
- g_free(ret);
- ret=NULL;
- } else {
- unsigned char key[34], salt[8], verify[2], counter[16], xor[16], mac[10], *datap;
- int overhead=sizeof(salt)+sizeof(verify)+sizeof(mac);
- int esize=size-overhead;
- PKCS5_PBKDF2_HMAC_SHA1(passwd, strlen(passwd), (unsigned char *)buffer, 8, 1000, 34, key);
- if (key[32] == buffer[8] && key[33] == buffer[9] && esize >= 0) {
- AES_KEY aeskey;
- AES_set_encrypt_key(key, 128, &aeskey);
- datap=buffer+sizeof(salt)+sizeof(verify);
- memset(counter, 0, sizeof(counter));
- while (esize > 0) {
- int i,curr_size,idx=0;
- do {
- counter[idx]++;
- } while (!counter[idx++]);
- AES_encrypt(counter, xor, &aeskey);
- curr_size=esize;
- if (curr_size > sizeof(xor))
- curr_size=sizeof(xor);
- for (i = 0 ; i < curr_size ; i++)
- *datap++^=xor[i];
- esize-=curr_size;
- }
- size-=overhead;
- datap=buffer+sizeof(salt)+sizeof(verify);
- if (compressed) {
- if (uncompress_int(ret, &destLen, (Bytef *)datap, size) != Z_OK) {
- dbg(lvl_error,"uncompress failed\n");
- g_free(ret);
- ret=NULL;
- }
- } else {
- if (size == destLen)
- memcpy(ret, buffer, destLen);
- else {
- dbg(lvl_error,"memcpy failed\n");
- g_free(ret);
- ret=NULL;
- }
- }
- } else {
- g_free(ret);
- ret=NULL;
- }
- }
- g_free(buffer);
-
- return ret;
-#else
- return NULL;
-#endif
-}
-
-void
-file_data_free(struct file *file, unsigned char *data)
-{
- if (file->begin) {
- if (data == file->begin)
- return;
- if (data >= file->begin && data < file->end)
- return;
- }
- if (file->cache && data) {
- cache_entry_destroy(file_cache, data);
- } else
- g_free(data);
-}
-
-void
-file_data_remove(struct file *file, unsigned char *data)
-{
- if (file->begin) {
- if (data == file->begin)
- return;
- if (data >= file->begin && data < file->end)
- return;
- }
- if (file->cache && data) {
- cache_flush_data(file_cache, data);
- } else
- g_free(data);
-}
-
-int
-file_exists(char const *name)
-{
- struct stat buf;
- if (! stat(name, &buf))
- return 1;
- return 0;
-}
-
-void
-file_remap_readonly(struct file *f)
-{
-#if defined(_WIN32) || defined(__CEGCC__)
-#else
- void *begin;
- munmap(f->begin, f->size);
- begin=mmap(f->begin, f->size, PROT_READ, MAP_PRIVATE, f->fd, 0);
- if (f->begin != begin)
- printf("remap failed\n");
-#endif
-}
-
-void
-file_unmap(struct file *f)
-{
-#if defined(_WIN32) || defined(__CEGCC__)
- mmap_unmap_win32( f->begin, f->map_handle , f->map_file );
-#else
- munmap(f->begin, f->size);
-#endif
-}
-
-#ifndef _MSC_VER
-void *
-file_opendir(char *dir)
-{
- return opendir(dir);
-}
-#else
-void *
-file_opendir(char *dir)
-{
- WIN32_FIND_DATAA FindFileData;
- HANDLE hFind = INVALID_HANDLE_VALUE;
-#undef UNICODE // we need FindFirstFileA() which takes an 8-bit c-string
- char* fname=g_alloca(sizeof(char)*(strlen(dir)+4));
- sprintf(fname,"%s\\*",dir);
- hFind = FindFirstFileA(fname, &FindFileData);
- return hFind;
-}
-#endif
-
-#ifndef _MSC_VER
-char *
-file_readdir(void *hnd)
-{
- struct dirent *ent;
-
- ent=readdir(hnd);
- if (! ent)
- return NULL;
- return ent->d_name;
-}
-#else
-char *
-file_readdir(void *hnd)
-{
- WIN32_FIND_DATA FindFileData;
-
- if (FindNextFile(hnd, &FindFileData) ) {
- return FindFileData.cFileName;
- } else {
- return NULL;
- }
-}
-#endif /* _MSC_VER */
-
-#ifndef _MSC_VER
-void
-file_closedir(void *hnd)
-{
- closedir(hnd);
-}
-#else
-void
-file_closedir(void *hnd)
-{
- FindClose(hnd);
-}
-#endif /* _MSC_VER */
-
-struct file *
-file_create_caseinsensitive(char *name, struct attr **options)
-{
- char *dirname=g_alloca(sizeof(char)*(strlen(name)+1));
- char *filename;
- char *p;
- void *d;
- struct file *ret;
-
- ret=file_create(name, options);
- if (ret)
- return ret;
-
- strcpy(dirname, name);
- p=dirname+strlen(name);
- while (p > dirname) {
- if (*p == '/')
- break;
- p--;
- }
- *p=0;
- d=file_opendir(dirname);
- if (d) {
- *p++='/';
- while ((filename=file_readdir(d))) {
- if (!g_ascii_strcasecmp(filename, p)) {
- strcpy(p, filename);
- ret=file_create(dirname, options);
- if (ret)
- break;
- }
- }
- file_closedir(d);
- }
- return ret;
-}
-
-void
-file_fsync(struct file *f)
-{
-#ifdef HAVE_FSYNC
- fsync(f->fd);
-#endif
-}
-
-void
-file_destroy(struct file *f)
-{
- if (f->headers)
- g_hash_table_destroy(f->headers);
- switch (f->special) {
- case 0:
- case 1:
- close(f->fd);
- break;
- }
-
- if ( f->begin != NULL )
- {
- file_unmap( f );
- }
-
- g_free(f->buffer);
- g_free(f->name);
- g_free(f);
-}
-
-struct file_wordexp {
- int err;
- char *pattern;
- wordexp_t we;
-};
-
-struct file_wordexp *
-file_wordexp_new(const char *pattern)
-{
- struct file_wordexp *ret=g_new0(struct file_wordexp, 1);
-
- ret->pattern=g_strdup(pattern);
- ret->err=wordexp(pattern, &ret->we, 0);
- if (ret->err)
- dbg(lvl_debug,"wordexp('%s') returned %d\n", pattern, ret->err);
- return ret;
-}
-
-int
-file_wordexp_get_count(struct file_wordexp *wexp)
-{
- if (wexp->err)
- return 1;
- return wexp->we.we_wordc;
-}
-
-char **
-file_wordexp_get_array(struct file_wordexp *wexp)
-{
- if (wexp->err)
- return &wexp->pattern;
- return wexp->we.we_wordv;
-}
-
-void
-file_wordexp_destroy(struct file_wordexp *wexp)
-{
- if (! wexp->err)
- wordfree(&wexp->we);
- g_free(wexp->pattern);
- g_free(wexp);
-}
-
-
-int
-file_version(struct file *file, int mode)
-{
-#ifndef HAVE_API_WIN32_BASE
- struct stat st;
- int error;
- if (mode == 3) {
- long long size=lseek(file->fd, 0, SEEK_END);
- if (file->begin && file->begin+size > file->mmap_end) {
- file->version++;
- } else {
- file->size=size;
- if (file->begin)
- file->end=file->begin+file->size;
- }
- } else {
- if (mode == 2)
- error=stat(file->name, &st);
- else
- error=fstat(file->fd, &st);
- if (error || !file->version || file->mtime != st.st_mtime || file->ctime != st.st_ctime) {
- file->mtime=st.st_mtime;
- file->ctime=st.st_ctime;
- file->version++;
- dbg(lvl_debug,"%s now version %d\n", file->name, file->version);
- }
- }
- return file->version;
-#else
- return 0;
-#endif
-}
-
-void *
-file_get_os_handle(struct file *file)
-{
- return GINT_TO_POINTER(file->fd);
-}
-
-int
-file_set_cache_size(int cache_size)
-{
-#ifdef CACHE_SIZE
- cache_resize(file_cache, cache_size);
- return 1;
-#else
- return 0;
-#endif
-}
-
-void
-file_init(void)
-{
-#ifdef CACHE_SIZE
- file_name_hash=g_hash_table_new(g_str_hash, g_str_equal);
- file_cache=cache_new(sizeof(struct file_cache_id), CACHE_SIZE);
-#endif
- if(sizeof(off_t)<8)
- dbg(lvl_error,"Maps larger than 2GB are not supported by this binary, sizeof(off_t)=%zu\n",sizeof(off_t));
-}
-
diff --git a/navit/file.h b/navit/file.h
deleted file mode 100644
index bb8b8bdd8..000000000
--- a/navit/file.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_FILE_H
-#define NAVIT_FILE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef PATH_MAX
-#define PATH_MAX 4096
-#endif
-#ifndef __CEGCC__
-#include <time.h>
-#endif
-#include "param.h"
-#include <stdio.h>
-
-struct file {
- struct file *next;
- unsigned char *begin;
- unsigned char *end;
- unsigned char *mmap_end;
- long long size;
- int name_id;
- int fd;
-#ifndef __CEGCC__
- time_t mtime;
- time_t ctime;
- int version;
-#endif
-#if defined(_WIN32) || defined(__CEGCC__)
- long map_handle;
- long map_file;
-#endif
- char *name;
- int special;
- int cache;
- int requests;
- unsigned char *buffer;
- int buffer_len;
- GHashTable *headers;
-};
-
-struct attr;
-
-/* prototypes */
-int file_request(struct file *f, struct attr **options);
-char *file_http_header(struct file *f, char *header);
-struct file *file_create(char *name, struct attr **options);
-int file_is_dir(char *name);
-long long file_size(struct file *file);
-int file_mkdir(char *name, int pflag);
-int file_mmap(struct file *file);
-unsigned char *file_data_read(struct file *file, long long offset, int size);
-unsigned char *file_data_read_special(struct file *file, int size, int *size_ret);
-unsigned char *file_data_read_all(struct file *file);
-void file_data_flush(struct file *file, long long offset, int size);
-int file_data_write(struct file *file, long long offset, int size, const void *data);
-int file_get_contents(char *name, unsigned char **buffer, int *size);
-unsigned char *file_data_read_compressed(struct file *file, long long offset, int size, int size_uncomp);
-unsigned char *file_data_read_encrypted(struct file *file, long long offset, int size, int size_uncomp, int compressed, char *passwd);
-void file_data_free(struct file *file, unsigned char *data);
-int file_exists(char const *name);
-void file_remap_readonly(struct file *f);
-void file_unmap(struct file *f);
-void *file_opendir(char *dir);
-char *file_readdir(void *hnd);
-void file_closedir(void *hnd);
-struct file *file_create_caseinsensitive(char *name, struct attr **options);
-void file_fsync(struct file *f);
-void file_destroy(struct file *f);
-struct file_wordexp *file_wordexp_new(const char *pattern);
-int file_wordexp_get_count(struct file_wordexp *wexp);
-char **file_wordexp_get_array(struct file_wordexp *wexp);
-void file_wordexp_destroy(struct file_wordexp *wexp);
-int file_get_param(struct file *file, struct param_list *param, int count);
-int file_version(struct file *file, int byname);
-void *file_get_os_handle(struct file *file);
-int file_set_cache_size(int cache_size);
-void file_init(void);
-int file_is_reg(char *name);
-void file_data_remove(struct file *file, unsigned char *data);
-/* end of prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/font/freetype/CMakeLists.txt b/navit/font/freetype/CMakeLists.txt
deleted file mode 100644
index 88470e8ff..000000000
--- a/navit/font/freetype/CMakeLists.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-module_add_library(font_freetype font_freetype.c)
-
-if (FRIBIDI_FOUND)
- include_directories(${FRIBIDI_INCLUDE_DIRS})
- set_property(
- TARGET font_freetype
- APPEND PROPERTY COMPILE_DEFINITIONS USE_FRIBIDI=1
- )
- if (NOT FRIBIDI2_FOUND)
- set_property(
- TARGET font_freetype
- APPEND PROPERTY COMPILE_DEFINITIONS FRIBIDIOLD=1
- )
- endif (NOT FRIBIDI2_FOUND)
-endif (FRIBIDI_FOUND)
diff --git a/navit/font/freetype/font_freetype.c b/navit/font/freetype/font_freetype.c
deleted file mode 100644
index 0508c5870..000000000
--- a/navit/font/freetype/font_freetype.c
+++ /dev/null
@@ -1,665 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 "config.h"
-#ifdef HAVE_FONTCONFIG
-#include <fontconfig/fontconfig.h>
-#endif
-#include <ft2build.h>
-#include <glib.h>
-#include FT_FREETYPE_H
-#ifndef USE_CACHING
-#define USE_CACHING 1
-#endif
-#if USE_CACHING
-#include FT_CACHE_H
-#endif
-#ifdef USE_FRIBIDI
-#pragma GCC diagnostic push
-// fribidi.h is a bit misbehaved...
-#pragma GCC diagnostic ignored "-Wundef"
-#include <fribidi.h>
-#pragma GCC diagnostic pop
-#endif
-#include FT_GLYPH_H
-#include "point.h"
-#include "graphics.h"
-#include "debug.h"
-#include "plugin.h"
-#include "color.h"
-#include "atom.h"
-#include "font_freetype.h"
-
-#ifndef HAVE_LOOKUP_SCALER
-#if FREETYPE_MAJOR * 10000 + FREETYPE_MINOR * 100 + FREETYPE_PATCH > 20304
-#define HAVE_LOOKUP_SCALER 1
-#else
-#define HAVE_LOOKUP_SCALER 0
-#endif
-#endif
-
-#define COLOR_BITDEPTH_OUTPUT 8
-#define COL_SHIFT (COLOR_BITDEPTH-COLOR_BITDEPTH_OUTPUT)
-
-struct font_freetype_font {
- int size;
-#if USE_CACHING
-#if HAVE_LOOKUP_SCALER
- FTC_ScalerRec scaler;
-#else
- FTC_ImageTypeRec scaler;
-#endif
- int charmap_index;
-#else
- FT_Face face;
-#endif
-};
-
-struct font_priv {
- int data;
-};
-
-static struct font_priv dummy;
-static FT_Library library;
-#if USE_CACHING
-static FTC_Manager manager;
-static FTC_ImageCache image_cache;
-static FTC_CMapCache charmap_cache;
-static FTC_SBitCache sbit_cache;
-#endif
-static int library_init = 0;
-static int library_deinit = 0;
-
-
-static void
-font_freetype_get_text_bbox(struct graphics_priv *gr,
- struct font_freetype_font *font, char *text,
- int dx, int dy, struct point *ret,
- int estimate)
-{
- char *p = text;
- FT_BBox bbox;
- FT_UInt glyph_index;
- FT_Glyph glyph;
- FT_Matrix matrix;
- FT_Vector pen;
- int i;
- struct point pt;
- int n, len, x = 0, y = 0;
- pen.x = 0 * 64;
- pen.y = 0 * 64;
-#if 0
- matrix.xx = dx;
- matrix.xy = dy;
- matrix.yx = -dy;
- matrix.yy = dx;
-#else
- matrix.xx = 0x10000;
- matrix.xy = 0;
- matrix.yx = 0;
- matrix.yy = 0x10000;
-#endif
-
- len = g_utf8_strlen(text, -1);
- if (estimate) {
- bbox.xMin = 0;
- bbox.yMin = 0;
- bbox.yMax = 13*font->size/256;
- bbox.xMax = 9*font->size*len/256;
- } else {
- bbox.xMin = bbox.yMin = 32000;
- bbox.xMax = bbox.yMax = -32000;
-#if !USE_CACHING
- FT_Set_Transform(font->face, &matrix, &pen);
-#endif
- for (n = 0; n < len; n++) {
- FT_BBox glyph_bbox;
-#if USE_CACHING
- FTC_Node anode = NULL;
- FT_Glyph cached_glyph;
- glyph_index = FTC_CMapCache_Lookup(charmap_cache, font->scaler.face_id, font->charmap_index, g_utf8_get_char(p));
-#if HAVE_LOOKUP_SCALER
- FTC_ImageCache_LookupScaler(image_cache, &font->scaler, FT_LOAD_DEFAULT, glyph_index, &cached_glyph, &anode);
-#else
- FTC_ImageCache_Lookup(image_cache, &font->scaler, glyph_index, &cached_glyph, &anode);
-#endif /* HAVE_LOOKUP_SCALER */
- FT_Glyph_Copy(cached_glyph, &glyph);
- FT_Glyph_Transform(glyph, &matrix, &pen);
-#else
- glyph_index = FT_Get_Char_Index(font->face, g_utf8_get_char(p));
- FT_Load_Glyph(font->face, glyph_index, FT_LOAD_DEFAULT);
- FT_Get_Glyph(font->face->glyph, &glyph);
-#endif /* USE_CACHING */
- FT_Glyph_Get_CBox(glyph, ft_glyph_bbox_pixels, &glyph_bbox);
-
- glyph_bbox.xMin += x >> 6;
- glyph_bbox.xMax += x >> 6;
- glyph_bbox.yMin += y >> 6;
- glyph_bbox.yMax += y >> 6;
- x += glyph->advance.x >> 10;
- y -= glyph->advance.y >> 10;
- if (glyph_bbox.xMin < bbox.xMin)
- bbox.xMin = glyph_bbox.xMin;
- if (glyph_bbox.yMin < bbox.yMin)
- bbox.yMin = glyph_bbox.yMin;
- if (glyph_bbox.xMax > bbox.xMax)
- bbox.xMax = glyph_bbox.xMax;
- if (glyph_bbox.yMax > bbox.yMax)
- bbox.yMax = glyph_bbox.yMax;
- p = g_utf8_next_char(p);
-
- FT_Done_Glyph(glyph);
-#if USE_CACHING
- FTC_Node_Unref(anode, manager);
-#endif
- }
- if (bbox.xMin > bbox.xMax) {
- bbox.xMin = 0;
- bbox.yMin = 0;
- bbox.xMax = 0;
- bbox.yMax = 0;
- }
- }
- ret[0].x = bbox.xMin;
- ret[0].y = -bbox.yMin;
- ret[1].x = bbox.xMin;
- ret[1].y = -bbox.yMax;
- ret[2].x = bbox.xMax;
- ret[2].y = -bbox.yMax;
- ret[3].x = bbox.xMax;
- ret[3].y = -bbox.yMin;
- if (dy != 0 || dx != 0x10000) {
- for (i = 0 ; i < 4 ; i++) {
- pt=ret[i];
- ret[i].x=(pt.x*dx-pt.y*dy)/0x10000;
- ret[i].y=(pt.y*dx+pt.x*dy)/0x10000;
- }
- }
-}
-
-static struct font_freetype_text *
-font_freetype_text_new(char *text, struct font_freetype_font *font, int dx,
- int dy)
-{
- FT_Matrix matrix;
- FT_Vector pen;
- FT_UInt glyph_index;
- int y, n, len, w, h, pixmap_len;
- struct font_freetype_text *ret;
- struct font_freetype_glyph *curr;
- char *p = text;
- unsigned char *gl, *pm;
- FT_BitmapGlyph glyph_bitmap;
- FT_Glyph glyph;
-
- len = g_utf8_strlen(text, -1);
- ret = g_malloc(sizeof(*ret) + len * sizeof(struct text_glyph *));
- ret->glyph_count = len;
-
- matrix.xx = dx;
- matrix.xy = dy;
- matrix.yx = -dy;
- matrix.yy = dx;
-
- pen.x = 0 * 64;
- pen.y = 0 * 64;
-#if !USE_CACHING
- FT_Set_Transform(font->face, &matrix, &pen);
-#endif
-
-#ifdef USE_FRIBIDI
- // Need to use fribidi to handle the string properly
- char visual_text[len*4+1];
- {
- FriBidiChar unicode_text[len+2];
- FriBidiChar visual_unicode_text[len+2];
- FriBidiStrIndex textlen = strlen(text);
-#ifdef FRIBIDIOLD
- FriBidiCharType base = FRIBIDI_TYPE_LTR;
-#else
- FriBidiParType base = FRIBIDI_PAR_LTR;
-#endif
-
- FriBidiStrIndex unicode_len =
-#ifdef FRIBIDIOLD
- fribidi_utf8_to_unicode(text, textlen, unicode_text);
-#else
- fribidi_charset_to_unicode(FRIBIDI_CHAR_SET_UTF8, text, textlen, unicode_text);
-#endif
- fribidi_log2vis(unicode_text, unicode_len, &base, visual_unicode_text, NULL, NULL, NULL);
- // TODO: check return value
-#ifdef FRIBIDIOLD
- fribidi_unicode_to_utf8(visual_unicode_text, unicode_len, visual_text);
-#else
- fribidi_unicode_to_charset(FRIBIDI_CHAR_SET_UTF8, visual_unicode_text, unicode_len, visual_text);
-#endif
- p = visual_text;
- }
-#endif /* USE_FRIBIDI */
-
- for (n = 0; n < len; n++) {
-
-#if USE_CACHING
- FTC_Node anode=NULL;
- FT_Glyph cached_glyph;
- glyph_index = FTC_CMapCache_Lookup(charmap_cache, font->scaler.face_id, font->charmap_index, g_utf8_get_char(p));
-#if HAVE_LOOKUP_SCALER
- FTC_ImageCache_LookupScaler(image_cache, &font->scaler, FT_LOAD_DEFAULT, glyph_index, &cached_glyph, &anode);
-#else
- FTC_ImageCache_Lookup(image_cache, &font->scaler, glyph_index, &cached_glyph, &anode);
-#endif
- FT_Glyph_Copy(cached_glyph, &glyph);
- FT_Glyph_Transform(glyph, &matrix, &pen);
- FT_Glyph_To_Bitmap(&glyph, ft_render_mode_normal, NULL, TRUE);
-#else
- glyph_index = FT_Get_Char_Index(font->face, g_utf8_get_char(p));
- FT_Load_Glyph(font->face, glyph_index, FT_LOAD_DEFAULT);
- FT_Get_Glyph(font->face->glyph, &glyph);
-#endif
- FT_Glyph_To_Bitmap(&glyph, ft_render_mode_normal, NULL, TRUE);
- glyph_bitmap = (FT_BitmapGlyph)glyph;
-
- w = glyph_bitmap->bitmap.width;
- h = glyph_bitmap->bitmap.rows;
- if (w && h)
- pixmap_len = (w + 2) * (h + 2);
- else
- pixmap_len = 0;
- curr = g_malloc0(sizeof(*curr) + pixmap_len);
- if (pixmap_len) {
- curr->w = w;
- curr->h = h;
- }
- curr->pixmap = (unsigned char *) (curr + 1);
- ret->glyph[n] = curr;
-
- curr->x = glyph_bitmap->left << 6;
- curr->y = -glyph_bitmap->top << 6;
- for (y = 0; y < h; y++) {
- gl = glyph_bitmap->bitmap.buffer + y * glyph_bitmap->bitmap.pitch;
- pm = curr->pixmap + y * w;
- memcpy(pm, gl, w);
- }
-
- curr->dx = glyph->advance.x >> 10;
- curr->dy = -glyph->advance.y >> 10;
- FT_Done_Glyph(glyph);
-#if USE_CACHING
- FTC_Node_Unref(anode, manager);
-#endif
- p = g_utf8_next_char(p);
- }
- ret->glyph_count = len;
- return ret;
-}
-
-/**
- * List of font families to use, in order of preference
- */
-static char *fontfamilies[] = {
- "Liberation Sans",
- "Arial",
- "NcrBI4nh",
- "luximbi",
- "FreeSans",
- "DejaVu Sans",
- NULL,
-};
-
-static void
-font_destroy(struct graphics_font_priv *font)
-{
- g_free(font);
- /* TODO: free font->face */
-}
-
-static struct graphics_font_methods font_methods = {
- font_destroy
-};
-
-
-static void
-font_freetype_text_destroy(struct font_freetype_text *text)
-{
- int i;
- struct font_freetype_glyph **gp;
-
- gp = text->glyph;
- i = text->glyph_count;
- while (i-- > 0)
- g_free(*gp++);
- g_free(text);
-}
-
-#if USE_CACHING
-static FT_Error face_requester( FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face* aface )
-{
- FT_Error ret;
- char *fontfile,*fontindex;
- if (! face_id)
- return FT_Err_Invalid_Handle;
- fontfile=g_strdup((char *)face_id);
- dbg(lvl_debug,"fontfile=%s\n", fontfile);
- fontindex=strrchr(fontfile,'/');
- if (! fontindex) {
- g_free(fontfile);
- return FT_Err_Invalid_Handle;
- }
- *fontindex++='\0';
- dbg(lvl_debug,"new face %s %d\n", fontfile, atoi(fontindex));
- ret = FT_New_Face( library, fontfile, atoi(fontindex), aface );
- if(ret) {
- dbg(lvl_error,"Error while creating freetype face: %d\n", ret);
- return ret;
- }
- if((ret = FT_Select_Charmap(*aface, FT_ENCODING_UNICODE))) {
- dbg(lvl_error,"Error while creating freetype face: %d\n", ret);
- }
- return 0;
-}
-#endif
-
-/** Implementation of font_freetype_methods.font_new */
-static struct font_freetype_font *
-font_freetype_font_new(struct graphics_priv *gr,
- struct graphics_font_methods *meth,
- char *fontfamily, int size, int flags)
-{
- struct font_freetype_font *font =
- g_new(struct font_freetype_font, 1);
- int exact, found=0;
- char **family, **family_sav;
-#if USE_CACHING
- char *idstr;
- FT_Face face;
-#endif
-#ifndef HAVE_FONTCONFIG
- char *name;
-#endif
- *meth = font_methods;
-
- if (!library_init) {
- FT_Init_FreeType(&library);
-#if USE_CACHING
- FTC_Manager_New( library, 0, 0, 0, &face_requester, NULL, &manager);
- FTC_ImageCache_New( manager, &image_cache);
- FTC_CMapCache_New( manager, &charmap_cache);
- FTC_SBitCache_New( manager, &sbit_cache);
-#endif
- library_init = 1;
- }
- font->size=size;
-#ifdef HAVE_FONTCONFIG
- dbg(lvl_info, " about to search for fonts, preferred = %s\n", fontfamily);
- family = g_malloc(sizeof(fontfamilies) + sizeof(fontfamily));
- if (fontfamily) {
- memcpy(family, &fontfamily, sizeof(fontfamily));
- memcpy(family + 1, fontfamilies, sizeof(fontfamilies));
- } else {
- memcpy(family, fontfamilies, sizeof(fontfamilies));
- }
- family_sav=family;
- for (exact = 1; !found && exact >= 0; exact--) {
- family=family_sav;
-
-
- while (*family && !found) {
- dbg(lvl_info, "Looking for font family %s. exact=%d\n",
- *family, exact);
- FcPattern *required =
- FcPatternBuild(NULL, FC_FAMILY, FcTypeString,
- *family, NULL);
- if (flags)
- FcPatternAddInteger(required, FC_WEIGHT,
- FC_WEIGHT_BOLD);
- FcConfigSubstitute(FcConfigGetCurrent(), required,
- FcMatchFont);
- FcDefaultSubstitute(required);
- FcResult result;
- FcPattern *matched =
- FcFontMatch(FcConfigGetCurrent(), required,
- &result);
- if (matched) {
- FcValue v1, v2;
- FcChar8 *fontfile;
- int fontindex;
- FcPatternGet(required, FC_FAMILY, 0, &v1);
- FcPatternGet(matched, FC_FAMILY, 0, &v2);
- FcResult r1 =
- FcPatternGetString(matched, FC_FILE, 0,
- &fontfile);
- FcResult r2 =
- FcPatternGetInteger(matched, FC_INDEX,
- 0, &fontindex);
- if ((r1 == FcResultMatch)
- && (r2 == FcResultMatch)
- && (FcValueEqual(v1, v2) || !exact)) {
- dbg(lvl_info,
- "About to load font from file %s index %d\n",
- fontfile, fontindex);
-#if USE_CACHING
- idstr=g_strdup_printf("%s/%d", fontfile, fontindex);
- font->scaler.face_id=(FTC_FaceID)atom(idstr);
- g_free(idstr);
-#if HAVE_LOOKUP_SCALER
- font->scaler.width=0;
- font->scaler.height=size;
- font->scaler.pixel=0;
- font->scaler.x_res=300;
- font->scaler.y_res=300;
-#else
- font->scaler.width=size/15;
- font->scaler.height=size/15;
- font->scaler.flags=FT_LOAD_DEFAULT;
-#endif
- FTC_Manager_LookupFace(manager, font->scaler.face_id, &face);
- font->charmap_index=face->charmap ? FT_Get_Charmap_Index(face->charmap) : 0;
-#else /* USE_CACHING */
- FT_New_Face(library,
- (char *) fontfile,
- fontindex,
- &font->face);
-#endif /* USE_CACHING */
- found = 1;
- }
- FcPatternDestroy(matched);
- }
- FcPatternDestroy(required);
- family++;
- }
- }
- g_free(family_sav);
-#else /* HAVE_FONTCONFIG */
-#ifdef FREETYPE_FONTS
- {
- char *fonts[]={FREETYPE_FONTS};
- name=g_strdup(fonts[flags ? 1:0]);
- }
-#else
- name=g_strdup_printf("%s/fonts/%s-%s.ttf",getenv("NAVIT_SHAREDIR"),"LiberationSans",flags ? "Bold":"Regular");
-#endif
-
-#if USE_CACHING
- idstr=g_strdup_printf("%s/%d", name, 0);
- font->scaler.face_id=(FTC_FaceID)atom(idstr);
- g_free(idstr);
- FTC_Manager_LookupFace(manager, font->scaler.face_id, &face);
- font->charmap_index=face->charmap ? FT_Get_Charmap_Index(face->charmap) : 0;
-#if HAVE_LOOKUP_SCALER
- font->scaler.width=0;
- font->scaler.height=size;
- font->scaler.pixel=0;
- font->scaler.x_res=300;
- font->scaler.y_res=300;
-#else
- font->scaler.width=size/15;
- font->scaler.height=size/15;
- font->scaler.flags=FT_LOAD_DEFAULT;
-#endif
- found=1;
- FTC_Manager_LookupFace(manager, font->scaler.face_id, &face);
- font->charmap_index=face->charmap ? FT_Get_Charmap_Index(face->charmap) : 0;
-#else /* USE_CACHING */
- if (!FT_New_Face(library, name, 0, &font->face))
- found=1;
-#endif /* USE_CACHING */
- g_free(name);
-#endif /* HAVE_FONTCONFIG */
- if (!found) {
- dbg(lvl_error,"Failed to load font, no labelling\n");
- g_free(font);
- return NULL;
- }
-#if !USE_CACHING
- FT_Set_Char_Size(font->face, 0, size, 300, 300);
- FT_Select_Charmap(font->face, FT_ENCODING_UNICODE);
-#endif
- return font;
-}
-
-/** Implementation of font_freetype_methods.get_shadow. */
-static int
-font_freetype_glyph_get_shadow(struct font_freetype_glyph *g,
- unsigned char *data, int stride, struct color *foreground, struct color *background)
-{
- int x, y, w = g->w, h = g->h;
- unsigned int bg, fg;
- unsigned char *pm, *psp,*ps,*psn;
- fg=((foreground->a>>COL_SHIFT)<<24)|
- ((foreground->r>>COL_SHIFT)<<16)|
- ((foreground->g>>COL_SHIFT)<<8)|
- ((foreground->b>>COL_SHIFT)<<0);
- bg=((background->a>>COL_SHIFT)<<24)|
- ((background->r>>COL_SHIFT)<<16)|
- ((background->g>>COL_SHIFT)<<8)|
- ((background->b>>COL_SHIFT)<<0);
- for (y = 0; y < h+2; y++) {
- if (stride) {
- ps = data + stride * y;
- } else {
- unsigned char **dataptr=(unsigned char **)data;
- ps = dataptr[y];
- }
- for (x = 0 ; x < w+2 ; x++)
- ((unsigned int *)ps)[x]=bg;
- }
- for (y = 0; y < h; y++) {
- pm = g->pixmap + y * w;
- if (stride) {
- psp = data + stride * y;
- ps = psp + stride;
- psn = ps + stride;
- } else {
- unsigned char **dataptr=(unsigned char **)data;
- psp = dataptr[y];
- ps = dataptr[y+1];
- psn = dataptr[y+2];
- }
- for (x = 0; x < w; x++) {
- if (*pm) {
- ((unsigned int *)psp)[1]=fg;
- ((unsigned int *)ps)[0]=fg;
- ((unsigned int *)ps)[1]=fg;
- ((unsigned int *)ps)[2]=fg;
- ((unsigned int *)psn)[1]=fg;
- }
- psp+=4;
- ps+=4;
- psn+=4;
- pm++;
- }
- }
- return 1;
-}
-
-/** Implementation of font_freetype_methods.get_glyph. */
-static int
-font_freetype_glyph_get_glyph(struct font_freetype_glyph *g,
- unsigned char *data, int stride, struct color *fg, struct color *bg, struct color *transparent)
-{
- int x, y, w = g->w, h = g->h;
- unsigned int tr;
- unsigned char v,vi,*pm, *ps;
- tr=((transparent->a>>COL_SHIFT)<<24)|
- ((transparent->r>>COL_SHIFT)<<16)|
- ((transparent->g>>COL_SHIFT)<<8)|
- ((transparent->b>>COL_SHIFT)<<0);
- for (y = 0; y < h; y++) {
- pm = g->pixmap + y * w;
- if (stride) {
- ps = data + stride*y;
- } else {
- unsigned char **dataptr=(unsigned char **)data;
- ps = dataptr[y];
- }
- for (x = 0; x < w; x++) {
- v=*pm;
- if (v) {
- vi=255-v;
- ((unsigned int *)ps)[0]=
- ((((fg->a*v+bg->a*vi)/255)>>COL_SHIFT)<<24)|
- ((((fg->r*v+bg->r*vi)/255)>>COL_SHIFT)<<16)|
- ((((fg->g*v+bg->g*vi)/255)>>COL_SHIFT)<<8)|
- ((((fg->b*v+bg->b*vi)/255)>>COL_SHIFT)<<0);
- } else
- ((unsigned int *)ps)[0]=tr;
- ps+=4;
- pm++;
- }
- }
- return 1;
-}
-
-static void
-font_freetype_destroy(void) {
- // Do not call FcFini here: GdkPixbuf also (indirectly) uses fontconfig (for SVGs with
- // text), but does not properly deallocate all objects, so FcFini assert()s.
- if (!library_deinit) {
-#if USE_CACHING
- FTC_Manager_Done(manager);
-#endif
- FT_Done_FreeType(library);
- }
- library_deinit = 1;
-}
-
-static struct font_freetype_methods methods = {
- font_freetype_destroy,
- font_freetype_font_new,
- font_freetype_get_text_bbox,
- font_freetype_text_new,
- font_freetype_text_destroy,
- font_freetype_glyph_get_shadow,
- font_freetype_glyph_get_glyph,
-};
-
-static struct font_priv *
-font_freetype_new(void *meth)
-{
- *((struct font_freetype_methods *) meth) = methods;
- return &dummy;
-}
-
-void
-plugin_init(void)
-{
- plugin_register_category_font("freetype", font_freetype_new);
-#ifdef HAVE_FONTCONFIG
- FcInit();
-#endif
-}
diff --git a/navit/font/freetype/font_freetype.h b/navit/font/freetype/font_freetype.h
deleted file mode 100644
index e4ef58bb9..000000000
--- a/navit/font/freetype/font_freetype.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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.
- */
-
-/** @file
- * @brief Interface to the FreeType 2 library, to render text as bitmaps.
- *
- * This plugin supplies functions to render text (encoded as UTF-8) to bitmaps with the help of
- * FreeType 2. Typical usage:
- * @li create a struct font_freetype_font by calling font_freetype_methods.font_new()
- * @li for the text to render, create a struct font_freetype_text by calling font_freetype_methods.text_new()
- * @li obtain glyph bitmaps by calling font_freetype_methods.get_glyph() on the glyphs inside
- * struct font_freetype_text
- * @li optionally, obtain a "shadow" of the glyph from font_freetype_methods.get_shadow(), to make
- * the text easier to read against a colored background (like the map)
- */
-struct font_freetype_font;
-struct font_freetype_glyph;
-
-/** Methods provided by this plugin. */
-struct font_freetype_methods {
- void (*destroy)(void);
- /**
- * @brief Load a font, preferring one with the given font family.
- *
- * Try to load a font, trying to match either the given font family, or one from a list
- * of hardcoded families, or let fontconfig pick the best match.
- * @param graphics_priv unused
- * @param graphics_font_methods used to return font methods
- * @param fontfamily the preferred font family
- * @param size requested size of font
- * @param flags extra flags for the font (bold,etc)
- * @returns loaded font, or NULL
- */
- struct font_freetype_font *(*font_new) (struct graphics_priv * gr,
- struct
- graphics_font_methods *
- meth, char *font, int size,
- int flags);
- void (*get_text_bbox) (struct graphics_priv * gr,
- struct font_freetype_font * font,
- char *text, int dx, int dy,
- struct point * ret, int estimate);
- struct font_freetype_text *(*text_new) (char *text,
- struct font_freetype_font *
- font, int dx, int dy);
- void (*text_destroy) (struct font_freetype_text * text);
- /**
- * @brief Get glyph "shadow", a glyph bitmap to be used as background.
- *
- * This method returns a glyph shadow, a bitmap with the glyph, where the glyph has been
- * "fattened" by expanding it by one pixel on each side.
- * In Navit, the shadow is used as the background behind the glyph bitmaps (returned by
- * font_freetype_methods.get_glyph() ), to make the text easier to read.
- *
- * @param g glyph to render, usually created via font_freetype_methods.text_new()
- * @param data buffer for result image bitmap. Size must be at least (4 * stride * (g->h+2)).
- * @param stride see font_freetype_methods.get_glyph(). Minimum: g->w+2.
- * @param foreground color for rendering the "shadow"
- * @param background color for rest of the bitmap (typically set to transparent)
- * @returns 0 if depth is invalid, 1 otherwise
- */
- int (*get_shadow) (struct font_freetype_glyph * glyph,
- unsigned char *data, int stride, struct color *fg, struct color *tr);
- /**
- * @brief Get a glyph bitmap.
- *
- * This method returns a bitmap for rendering the supplied glyph.
- *
- * @param g glyph to render, usually obtained from a struct font_freetype_text created via font_freetype_methods.text_new()
- * @param data buffer for result image bitmap. Size must be at least (4 * stride * g->h).
- * @param stride stride (bytes per data row) for result bitmap; must be at least g->w, but may include padding.
- * Special case:
- * If set to 0, 'data' is interpreted as an array of pointers to image data rows (i.e. unsigned char**).
- * @param fg color for rendering the glyph
- * @param bg color to alpha blend with fg for semi-transparent glyph pixels
- * @param transparent color for background pixels
- * @returns 0 if depth is invalid, 1 otherwise
- */
- int (*get_glyph) (struct font_freetype_glyph * glyph,
- unsigned char *data, int stride,
- struct color * fg, struct color * bg, struct color *tr);
-};
-
-struct font_freetype_glyph {
- int x, y, w, h, dx, dy;
- unsigned char *pixmap;
-};
-
-struct font_freetype_text {
- int glyph_count;
- struct font_freetype_glyph *glyph[0];
-};
diff --git a/navit/fonts/CMakeLists.txt b/navit/fonts/CMakeLists.txt
deleted file mode 100644
index 2c2f22531..000000000
--- a/navit/fonts/CMakeLists.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-add_custom_target( fonts ALL DEPENDS ${NAVIT_FONTS}
- COMMAND ${CMAKE_COMMAND}
- -D GLOB_EXP="${CMAKE_CURRENT_SOURCE_DIR}/*.ttf" #${NAVIT_FONTS}"
- -D DST=${CMAKE_CURRENT_BINARY_DIR}
- -P ${PROJECT_SOURCE_DIR}/cmake/copy_files.cmake
-)
-
-FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.ttf")
-install(
- FILES ${files}
- DESTINATION ${SHARE_DIR}/fonts
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
-)
diff --git a/navit/fonts/LiberationMono-Bold.ttf b/navit/fonts/LiberationMono-Bold.ttf
deleted file mode 100644
index 95de75300..000000000
--- a/navit/fonts/LiberationMono-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationMono-BoldItalic.ttf b/navit/fonts/LiberationMono-BoldItalic.ttf
deleted file mode 100644
index 11ec3e779..000000000
--- a/navit/fonts/LiberationMono-BoldItalic.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationMono-Italic.ttf b/navit/fonts/LiberationMono-Italic.ttf
deleted file mode 100644
index 08f55d636..000000000
--- a/navit/fonts/LiberationMono-Italic.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationMono-Regular.ttf b/navit/fonts/LiberationMono-Regular.ttf
deleted file mode 100644
index e3024a09d..000000000
--- a/navit/fonts/LiberationMono-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationSans-Bold.ttf b/navit/fonts/LiberationSans-Bold.ttf
deleted file mode 100644
index 53200d956..000000000
--- a/navit/fonts/LiberationSans-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationSans-BoldItalic.ttf b/navit/fonts/LiberationSans-BoldItalic.ttf
deleted file mode 100644
index d06deca60..000000000
--- a/navit/fonts/LiberationSans-BoldItalic.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationSans-Italic.ttf b/navit/fonts/LiberationSans-Italic.ttf
deleted file mode 100644
index 07275adf6..000000000
--- a/navit/fonts/LiberationSans-Italic.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationSans-Regular.ttf b/navit/fonts/LiberationSans-Regular.ttf
deleted file mode 100644
index 09fac2ff9..000000000
--- a/navit/fonts/LiberationSans-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationSerif-Bold.ttf b/navit/fonts/LiberationSerif-Bold.ttf
deleted file mode 100644
index 3a4ab92ac..000000000
--- a/navit/fonts/LiberationSerif-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationSerif-BoldItalic.ttf b/navit/fonts/LiberationSerif-BoldItalic.ttf
deleted file mode 100644
index dc75de89c..000000000
--- a/navit/fonts/LiberationSerif-BoldItalic.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationSerif-Italic.ttf b/navit/fonts/LiberationSerif-Italic.ttf
deleted file mode 100644
index d92b5e392..000000000
--- a/navit/fonts/LiberationSerif-Italic.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/LiberationSerif-Regular.ttf b/navit/fonts/LiberationSerif-Regular.ttf
deleted file mode 100644
index d100691a2..000000000
--- a/navit/fonts/LiberationSerif-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/navit/fonts/License.txt b/navit/fonts/License.txt
deleted file mode 100644
index f1787287c..000000000
--- a/navit/fonts/License.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-LICENSE AGREEMENT AND LIMITED PRODUCT WARRANTY
-LIBERATION FONT SOFTWARE
-
-This agreement governs the use of the Software and any updates to the Software, regardless of the delivery mechanism. Subject to the following terms, Red Hat, Inc. ("Red Hat") grants to the user ("Client") a license to this work pursuant to the GNU General Public License v.2 with the exceptions set forth below and such other terms as are set forth in this End User License Agreement.
-
- 1. The Software and License Exception. LIBERATION font software (the "Software") consists of TrueType-OpenType formatted font software for rendering LIBERATION typefaces in sans-serif, serif, and monospaced character styles. You are licensed to use, modify, copy, and distribute the Software pursuant to the GNU General Public License v.2 with the following exceptions:
-
- (a) As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
-
- (b) As a further exception, any distribution of the object code of the Software in a physical product must provide you the right to access and modify the source code for the Software and to reinstall that modified version of the Software in object code form on the same physical product on which you received it.
-
- 2. Intellectual Property Rights. The Software and each of its components, including the source code, documentation, appearance, structure and organization are owned by Red Hat and others and are protected under copyright and other laws. Title to the Software and any component, or to any copy, modification, or merged portion shall remain with the aforementioned, subject to the applicable license. The "LIBERATION" trademark is a trademark of Red Hat, Inc. in the U.S. and other countries. This agreement does not permit Client to distribute modified versions of the Software using Red Hat's trademarks. If Client makes a redistribution of a modified version of the Software, then Client must modify the files names to remove any reference to the Red Hat trademarks and must not use the Red Hat trademarks in any way to reference or promote the modified Software.
-
- 3. Limited Warranty. To the maximum extent permitted under applicable law, the Software is provided and licensed "as is" without warranty of any kind, expressed or implied, including the implied warranties of merchantability, non-infringement or fitness for a particular purpose. Red Hat does not warrant that the functions contained in the Software will meet Client's requirements or that the operation of the Software will be entirely error free or appear precisely as described in the accompanying documentation.
-
- 4. Limitation of Remedies and Liability. To the maximum extent permitted by applicable law, Red Hat or any Red Hat authorized dealer will not be liable to Client for any incidental or consequential damages, including lost profits or lost savings arising out of the use or inability to use the Software, even if Red Hat or such dealer has been advised of the possibility of such damages.
-
- 5. General. If any provision of this agreement is held to be unenforceable, that shall not affect the enforceability of the remaining provisions. This agreement shall be governed by the laws of the State of North Carolina and of the United States, without regard to any conflict of laws provisions, except that the United Nations Convention on the International Sale of Goods shall not apply.
-Copyright © 2007 Red Hat, Inc. All rights reserved. LIBERATION is a trademark of Red Hat, Inc.
diff --git a/navit/fonts/README b/navit/fonts/README
deleted file mode 100644
index 51a5329cd..000000000
--- a/navit/fonts/README
+++ /dev/null
@@ -1,68 +0,0 @@
-1. What's this?
-===============
-
-The Liberation Fonts are intended to be open font replacements for the three
-most commonly used fonts on Microsoft systems: Times New Roman, Arial, and
-Courier New.
-
-
-2. Requirements
-===============
-
- * fontforge.
- - http://fontforge.sourceforge.net
-
-
-3. Install
-==========
-
-3.1 Decompress tarball
-
- You can extract the files by following command:
-
- $ tar zxvf liberation-fonts-[VERSION].tar.gz
-
-3.2 Build from the source
-
- Change into directory liberation-fonts-[VERSION]/ and build from sources by
- following commands:
-
- $ cd liberation-fonts-[VERSION]
- $ make
-
- The built font files will be available in 'build' directory.
-
-3.3 Install to system
-
- You can manually install the fonts by copying them to ~/.fonts for a
- particular user, or to /usr/share/fonts/truetype/liberation for system-wide
- availability
-
-
-4. Usage
-========
-
-The fonts should be installed and detected by the system after installation.
-
-
-5. License
-==========
-
-Read the GPL v2 file 'COPYING' and the Liberation Fonts EULA file 'License.txt'
-for more information.
-
-6. Credits
-==========
-
-Special thanks to all liberation-fonts developers and users!
-
- * Caius Chance <cchance at redhat.com>
- - Current project maintainer.
-
- * Mark Webbink <mwebbink at redhat.com>
- - Coordinator.
-
- * Steve Matteson
- - Ascender Corporation <http://www.ascendercorp.com>
-
- * And, all other contributors.
diff --git a/navit/geom.c b/navit/geom.c
deleted file mode 100644
index 65ea4986b..000000000
--- a/navit/geom.c
+++ /dev/null
@@ -1,515 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <string.h>
-#include <math.h>
-#include "geom.h"
-
-void
-geom_coord_copy(struct coord *from, struct coord *to, int count, int reverse)
-{
- int i;
- if (!reverse) {
- memcpy(to, from, count*sizeof(struct coord));
- return;
- }
- from+=count;
- for (i = 0 ; i < count ; i++)
- *to++=*--from;
-}
-
-/**
- * Get coordinates of polyline middle point.
- * @param in *p array of poly vertex coordinates
- * @param in count count of poly vertexes
- * @param out *c coordinates of middle point
- * @returns number of first vertex of segment containing middle point
- */
-int
-geom_line_middle(struct coord *p, int count, struct coord *c)
-{
- double length=0,half=0,len=0;
- int i;
-
- if(count==1) {
- *c=*p;
- return 0;
- }
-
- for (i=0; i<count-1; i++) {
- length+=sqrt(sq(p[i].x-p[i+1].x)+sq(p[i].y-p[i+1].y));
- }
-
- length/=2;
- for (i=0; (i<count-1) && (half<length); i++) {
- len=sqrt(sq(p[i].x-p[i+1].x)+sq(p[i].y-p[i+1].y));
- half+=len;
- }
- if (i > 0) {
- i--;
- half-=length;
- if (len) {
- c->x=(p[i].x*half+p[i+1].x*(len-half))/len;
- c->y=(p[i].y*half+p[i+1].y*(len-half))/len;
- } else
- *c=p[i];
- } else
- *c=p[0];
- return i;
-}
-
-
-void
-geom_coord_revert(struct coord *c, int count)
-{
- struct coord tmp;
- int i;
-
- for (i = 0 ; i < count/2 ; i++) {
- tmp=c[i];
- c[i]=c[count-1-i];
- c[count-1-i]=tmp;
- }
-}
-
-
-long long
-geom_poly_area(struct coord *c, int count)
-{
- long long area=0;
- int i,j=0;
-#if 0
- fprintf(stderr,"count=%d\n",count);
-#endif
- for (i=0; i<count; i++) {
- if (++j == count)
- j=0;
-#if 0
- fprintf(stderr,"(%d+%d)*(%d-%d)=%d*%d="LONGLONG_FMT"\n",c[i].x,c[j].x,c[i].y,c[j].y,c[i].x+c[j].x,c[i].y-c[j].y,(long long)(c[i].x+c[j].x)*(c[i].y-c[j].y));
-#endif
- area+=(long long)(c[i].x+c[j].x)*(c[i].y-c[j].y);
-#if 0
- fprintf(stderr,"area="LONGLONG_FMT"\n",area);
-#endif
- }
- return area/2;
-}
-
-/**
- * Get poly centroid coordinates.
- * @param in *p array of poly vertex coordinates
- * @param in count count of poly vertexes
- * @param out *c coordinates of poly centroid
- * @returns 1 on success, 0 if poly area is 0
- */
-int
-geom_poly_centroid(struct coord *p, int count, struct coord *c)
-{
- long long area=0;
- long long sx=0,sy=0,tmp;
- int i,j;
- long long x0=p[0].x, y0=p[0].y, xi, yi, xj, yj;
-
- /*fprintf(stderr,"area="LONGLONG_FMT"\n", area );*/
- for (i=0,j=0; i<count; i++) {
- if (++j == count)
- j=0;
- xi=p[i].x-x0;
- yi=p[i].y-y0;
- xj=p[j].x-x0;
- yj=p[j].y-y0;
- tmp=(xi*yj-xj*yi);
- sx+=(xi+xj)*tmp;
- sy+=(yi+yj)*tmp;
- area+=xi*yj-xj*yi;
- }
- if(area!=0) {
- c->x=x0+sx/3/area;
- c->y=y0+sy/3/area;
- return 1;
- }
- return 0;
-}
-
-/**
- * Get coordinates of polyline point c most close to given point p.
- * @param in *pl array of polyline vertex coordinates
- * @param in count count of polyline vertexes
- * @param in *p point coordinates
- * @param out *c coordinates of polyline point most close to given point.
- * @returns first vertex number of polyline segment to which c belongs
- */
-int
-geom_poly_closest_point(struct coord *pl, int count, struct coord *p, struct coord *c)
-{
- int i,vertex=0;
- long long x, y, xi, xj, yi, yj, u, d, dmin=0;
- if(count<2) {
- c->x=pl->x;
- c->y=pl->y;
- return 0;
- }
- for(i=0;i<count-1;i++) {
- xi=pl[i].x;
- yi=pl[i].y;
- xj=pl[i+1].x;
- yj=pl[i+1].y;
- u=(xj-xi)*(xj-xi)+(yj-yi)*(yj-yi);
- if(u!=0) {
- u=((p->x-xi)*(xj-xi)+(p->y-yi)*(yj-yi))*1000/u;
- }
- if(u<0)
- u=0;
- else if (u>1000)
- u=1000;
- x=xi+u*(xj-xi)/1000;
- y=yi+u*(yj-yi)/1000;
- d=(p->x-x)*(p->x-x)+(p->y-y)*(p->y-y);
- if(i==0 || d<dmin) {
- dmin=d;
- c->x=x;
- c->y=y;
- vertex=i;
- }
- }
- return vertex;
-}
-
-/**
- * Check if point is inside polgone.
- * @param in *cp array of polygon vertex coordinates
- * @param in count count of polygon vertexes
- * @param in *c point coordinates
- * @returns 1 - inside, 0 - outside
- */
-int
-geom_poly_point_inside(struct coord *cp, int count, struct coord *c)
-{
- int ret=0;
- struct coord *last=cp+count-1;
- while (cp < last) {
- if ((cp[0].y > c->y) != (cp[1].y > c->y) &&
- c->x < ((long long)cp[1].x-cp[0].x)*(c->y-cp[0].y)/(cp[1].y-cp[0].y)+cp[0].x) {
-#if 0
- fprintf(stderr," cross 0x%x,0x%x-0x%x,0x%x %dx%d",cp,cp[0].x,cp[0].y,cp[1].x,cp[1].y,cp[1].x-cp[0].x,c->y-cp[0].y);
- printf("type=selected_line\n");
- coord_print(projection_mg, &cp[0], stdout);
- coord_print(projection_mg, &cp[1], stdout);
-#endif
- ret=!ret;
- }
- cp++;
- }
- return ret;
-}
-
-
-
-GList *
-geom_poly_segments_insert(GList *list, struct geom_poly_segment *first, struct geom_poly_segment *second, struct geom_poly_segment *third)
-{
- int count;
- struct geom_poly_segment *ret;
- struct coord *pos;
-
- if (!second)
- return NULL;
- ret=g_new(struct geom_poly_segment, 1);
- ret->type=second->type;
- count=(second->last-second->first)+1;
- if (first)
- count+=(first->last-first->first);
- if (third)
- count+=(third->last-third->first);
-#if 0
- fprintf(stderr,"count=%d first=%p second=%p third=%p\n",count,first,second,third);
- if (first)
- fprintf(stderr,"first:0x%x,0x%x-0x%x,0x%x (%d)\n",first->first->x,first->first->y,first->last->x,first->last->y, first->last-first->first+1);
- if (second)
- fprintf(stderr,"second:0x%x,0x%x-0x%x,0x%x (%d)\n",second->first->x,second->first->y,second->last->x,second->last->y, second->last-second->first+1);
- if (third)
- fprintf(stderr,"third:0x%x,0x%x-0x%x,0x%x (%d)\n",third->first->x,third->first->y,third->last->x,third->last->y, third->last-third->first+1);
-#endif
- ret->first=g_new(struct coord, count);
- pos=ret->first;
- if (first) {
- count=(first->last-first->first)+1;
- geom_coord_copy(first->first, pos, count, coord_is_equal(*first->first, *second->first));
- pos+=count-1;
- }
- count=(second->last-second->first)+1;
- geom_coord_copy(second->first, pos, count, 0);
- pos+=count;
- if (third) {
- pos--;
- count=(third->last-third->first)+1;
- geom_coord_copy(third->first, pos, count, coord_is_equal(*third->last, *second->last));
- pos+=count;
- }
- ret->last=pos-1;
-#if 0
- fprintf(stderr,"result:0x%x,0x%x-0x%x,0x%x (%d)\n",ret->first->x,ret->first->y,ret->last->x,ret->last->y, ret->last-ret->first+1);
-#endif
- list=g_list_prepend(list, ret);
-#if 0
- fprintf(stderr,"List=%p\n",list);
-#endif
- return list;
-}
-
-void
-geom_poly_segment_destroy(struct geom_poly_segment *seg)
-{
- g_free(seg->first);
- g_free(seg);
-}
-
-GList *
-geom_poly_segments_remove(GList *list, struct geom_poly_segment *seg)
-{
- if (seg) {
- list=g_list_remove(list, seg);
- geom_poly_segment_destroy(seg);
- }
- return list;
-}
-
-int
-geom_poly_segment_compatible(struct geom_poly_segment *s1, struct geom_poly_segment *s2, int dir)
-{
- int same=0,opposite=0;
- if (s1->type == geom_poly_segment_type_none || s2->type == geom_poly_segment_type_none)
- return 0;
- if (s1->type == s2->type) {
- same=1;
- if (s1->type == geom_poly_segment_type_way_inner || s1->type == geom_poly_segment_type_way_outer) {
- opposite=1;
- }
- }
- if (s1->type == geom_poly_segment_type_way_left_side && s2->type == geom_poly_segment_type_way_right_side)
- opposite=1;
- if (s1->type == geom_poly_segment_type_way_right_side && s2->type == geom_poly_segment_type_way_left_side)
- opposite=1;
- if (s1->type == geom_poly_segment_type_way_unknown || s2->type == geom_poly_segment_type_way_unknown) {
- same=1;
- opposite=1;
- }
- if (dir < 0) {
- if ((opposite && coord_is_equal(*s1->first, *s2->first)) || (same && coord_is_equal(*s1->first, *s2->last)))
- return 1;
- } else {
- if ((opposite && coord_is_equal(*s1->last, *s2->last)) || (same && coord_is_equal(*s1->last, *s2->first)))
- return 1;
- }
- return 0;
-}
-
-
-GList *
-geom_poly_segments_sort(GList *in, enum geom_poly_segment_type type)
-{
- GList *ret=NULL;
- while (in) {
- struct geom_poly_segment *seg=in->data;
- GList *tmp=ret;
- struct geom_poly_segment *merge_first=NULL,*merge_last=NULL;
- while (tmp) {
- struct geom_poly_segment *cseg=tmp->data;
- if (geom_poly_segment_compatible(seg, cseg, -1))
- merge_first=cseg;
- if (geom_poly_segment_compatible(seg, cseg, 1))
- merge_last=cseg;
- tmp=g_list_next(tmp);
- }
- if (merge_first == merge_last)
- merge_last=NULL;
- ret=geom_poly_segments_insert(ret, merge_first, seg, merge_last);
- ret=geom_poly_segments_remove(ret, merge_first);
- ret=geom_poly_segments_remove(ret, merge_last);
- in=g_list_next(in);
- }
- in=ret;
- while (in) {
- struct geom_poly_segment *seg=in->data;
- if (coord_is_equal(*seg->first, *seg->last)) {
- long long area=geom_poly_area(seg->first,seg->last-seg->first+1);
- if (type == geom_poly_segment_type_way_right_side && seg->type == geom_poly_segment_type_way_right_side) {
- seg->type=area > 0 ? geom_poly_segment_type_way_outer : geom_poly_segment_type_way_inner;
- }
- }
- in=g_list_next(in);
- }
- return ret;
-}
-
-int
-geom_poly_segments_point_inside(GList *in, struct coord *c)
-{
- int open_matches=0,closed_matches=0;
-#if 0
- fprintf(stderr,"try 0x%x,0x%x:",c->x,c->y);
-#endif
- while (in) {
- struct geom_poly_segment *seg=in->data;
- if (geom_poly_point_inside(seg->first, seg->last-seg->first+1, c)) {
-#if 0
- fprintf(stderr," inside");
-#endif
- if (coord_is_equal(*seg->first,*seg->last))
- closed_matches++;
- else
- open_matches++;
- } else {
-#if 0
- fprintf(stderr," outside");
-#endif
- }
- in=g_list_next(in);
- }
-#if 0
- fprintf(stderr,"\n");
- fprintf(stderr,"open_matches %d closed_matches %d\n",open_matches,closed_matches);
-#endif
- if (closed_matches) {
- if (closed_matches & 1)
- return 1;
- else
- return 0;
- }
- if (open_matches) {
- if (open_matches & 1)
- return -1;
- else
- return 0;
- }
- return 0;
-}
-
-static int
-clipcode(struct coord *p, struct rect *r)
-{
- int code=0;
- if (p->x < r->l.x)
- code=1;
- if (p->x > r->h.x)
- code=2;
- if (p->y < r->l.y)
- code |=4;
- if (p->y > r->h.y)
- code |=8;
- return code;
-}
-
-
-int
-geom_clip_line_code(struct coord *p1, struct coord *p2, struct rect *r)
-{
- int code1,code2,ret=1;
- long long dx,dy;
- code1=clipcode(p1, r);
- if (code1)
- ret |= 2;
- code2=clipcode(p2, r);
- if (code2)
- ret |= 4;
- dx=p2->x-p1->x;
- dy=p2->y-p1->y;
- while (code1 || code2) {
- if (code1 & code2)
- return 0;
- if (code1 & 1) {
- p1->y+=(r->l.x-p1->x)*dy/dx;
- p1->x=r->l.x;
- } else if (code1 & 2) {
- p1->y+=(r->h.x-p1->x)*dy/dx;
- p1->x=r->h.x;
- } else if (code1 & 4) {
- p1->x+=(r->l.y-p1->y)*dx/dy;
- p1->y=r->l.y;
- } else if (code1 & 8) {
- p1->x+=(r->h.y-p1->y)*dx/dy;
- p1->y=r->h.y;
- }
- code1=clipcode(p1, r);
- if (code1 & code2)
- return 0;
- if (code2 & 1) {
- p2->y+=(r->l.x-p2->x)*dy/dx;
- p2->x=r->l.x;
- } else if (code2 & 2) {
- p2->y+=(r->h.x-p2->x)*dy/dx;
- p2->x=r->h.x;
- } else if (code2 & 4) {
- p2->x+=(r->l.y-p2->y)*dx/dy;
- p2->y=r->l.y;
- } else if (code2 & 8) {
- p2->x+=(r->h.y-p2->y)*dx/dy;
- p2->y=r->h.y;
- }
- code2=clipcode(p2, r);
- }
- if (p1->x == p2->x && p1->y == p2->y)
- ret=0;
- return ret;
-}
-
-int
-geom_is_inside(struct coord *p, struct rect *r, int edge)
-{
- switch(edge) {
- case 0:
- return p->x >= r->l.x;
- case 1:
- return p->x <= r->h.x;
- case 2:
- return p->y >= r->l.y;
- case 3:
- return p->y <= r->h.y;
- default:
- return 0;
- }
-}
-
-void
-geom_poly_intersection(struct coord *p1, struct coord *p2, struct rect *r, int edge, struct coord *ret)
-{
- int dx=p2->x-p1->x;
- int dy=p2->y-p1->y;
- switch(edge) {
- case 0:
- ret->y=p1->y+(r->l.x-p1->x)*dy/dx;
- ret->x=r->l.x;
- break;
- case 1:
- ret->y=p1->y+(r->h.x-p1->x)*dy/dx;
- ret->x=r->h.x;
- break;
- case 2:
- ret->x=p1->x+(r->l.y-p1->y)*dx/dy;
- ret->y=r->l.y;
- break;
- case 3:
- ret->x=p1->x+(r->h.y-p1->y)*dx/dy;
- ret->y=r->h.y;
- break;
- }
-}
-
-void geom_init()
-{
-}
diff --git a/navit/geom.h b/navit/geom.h
deleted file mode 100644
index 9de2e6d86..000000000
--- a/navit/geom.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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.
- */
-#ifndef NAVIT_GEOM_H
-#define NAVIT_GEOM_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <glib.h>
-#include "config.h"
-#include "coord.h"
-#include "item.h"
-#include "attr.h"
-
-
-#define sq(x) ((double)(x)*(x))
-
-struct rect {struct coord l,h;};
-
-enum geom_poly_segment_type {
- geom_poly_segment_type_none,
- geom_poly_segment_type_way_inner,
- geom_poly_segment_type_way_outer,
- geom_poly_segment_type_way_left_side,
- geom_poly_segment_type_way_right_side,
- geom_poly_segment_type_way_unknown,
-
-};
-
-struct geom_poly_segment {
- enum geom_poly_segment_type type;
- struct coord *first,*last;
-};
-/* prototypes */
-void geom_coord_copy(struct coord *from, struct coord *to, int count, int reverse);
-void geom_coord_revert(struct coord *c, int count);
-int geom_line_middle(struct coord *p, int count, struct coord *c);
-long long geom_poly_area(struct coord *c, int count);
-int geom_poly_centroid(struct coord *c, int count, struct coord *r);
-int geom_poly_point_inside(struct coord *cp, int count, struct coord *c);
-int geom_poly_closest_point(struct coord *pl, int count, struct coord *p, struct coord *c);
-GList *geom_poly_segments_insert(GList *list, struct geom_poly_segment *first, struct geom_poly_segment *second, struct geom_poly_segment *third);
-void geom_poly_segment_destroy(struct geom_poly_segment *seg);
-GList *geom_poly_segments_remove(GList *list, struct geom_poly_segment *seg);
-int geom_poly_segment_compatible(struct geom_poly_segment *s1, struct geom_poly_segment *s2, int dir);
-GList *geom_poly_segments_sort(GList *in, enum geom_poly_segment_type type);
-int geom_poly_segments_point_inside(GList *in, struct coord *c);
-int geom_clip_line_code(struct coord *p1, struct coord *p2, struct rect *r);
-int geom_is_inside(struct coord *p, struct rect *r, int edge);
-void geom_poly_intersection(struct coord *p1, struct coord *p2, struct rect *r, int edge, struct coord *ret);
-void geom_init(void);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/navit/glib_slice.h b/navit/glib_slice.h
deleted file mode 100644
index bbc30c693..000000000
--- a/navit/glib_slice.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <glib.h>
-#if GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 10
-#define g_slice_alloc0 g_malloc0
-#define g_slice_new0(x) g_new0(x,1)
-#define g_slice_free(x,y) g_free(y)
-#define g_slice_free1(x,y) g_free(y)
-#endif
diff --git a/navit/graphics.c b/navit/graphics.c
deleted file mode 100644
index f89a4f89d..000000000
--- a/navit/graphics.c
+++ /dev/null
@@ -1,3048 +0,0 @@
-/**
- * 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.
- */
-
-//##############################################################################################################
-//#
-//# File: graphics.c
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//#
-//##############################################################################################################
-
-#include <stdlib.h>
-#include <glib.h>
-#include <stdio.h>
-#include <math.h>
-#include "config.h"
-#include "debug.h"
-#include "string.h"
-#include "draw_info.h"
-#include "point.h"
-#include "graphics.h"
-#include "projection.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "map.h"
-#include "coord.h"
-#include "transform.h"
-#include "plugin.h"
-#include "profile.h"
-#include "mapset.h"
-#include "layout.h"
-#include "route.h"
-#include "util.h"
-#include "callback.h"
-#include "file.h"
-#include "event.h"
-
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-/**
- * @brief graphics object
- * A graphics object serves as the target for drawing operations.
- * It encapsulates various settings, and a drawing target, such as an image buffer or a window.
- * Currently, in Navit, there is always one main graphics object, which is used to draw the
- * map, and optionally additional graphics objects for overlays.
- * @see graphics_overlay_new()
- * @see struct graphics_gc
- */
-struct graphics
-{
- struct graphics* parent;
- struct graphics_priv *priv;
- struct graphics_methods meth;
- char *default_font;
- int font_len;
- struct graphics_font **font;
- struct graphics_gc *gc[3];
- struct attr **attrs;
- struct callback_list *cbl;
- struct point_rect r;
- int gamma,brightness,contrast;
- int colormgmt;
- int font_size;
- GList *selection;
- int disabled;
- /*
- * Counter for z_order of displayitems;
- */
- int current_z_order;
- GHashTable *image_cache_hash;
-};
-
-struct display_context
-{
- struct graphics *gra;
- struct element *e;
- struct graphics_gc *gc;
- struct graphics_gc *gc_background;
- struct graphics_image *img;
- enum projection pro;
- int mindist;
- struct transformation *trans;
- enum item_type type;
- int maxlen;
-};
-
-#define HASH_SIZE 1024
-struct hash_entry
-{
- enum item_type type;
- struct displayitem *di;
-};
-
-
-struct displaylist {
- int busy;
- int workload;
- struct callback *cb;
- struct layout *layout, *layout_hashed;
- struct display_context dc;
- int order, order_hashed, max_offset;
- struct mapset *ms;
- struct mapset_handle *msh;
- struct map *m;
- int conv;
- struct map_selection *sel;
- struct map_rect *mr;
- struct callback *idle_cb;
- struct event_idle *idle_ev;
- unsigned int seq;
- struct hash_entry hash_entries[HASH_SIZE];
-};
-
-
-struct displaylist_icon_cache {
- unsigned int seq;
-
-};
-
-static void draw_circle(struct point *pnt, int diameter, int scale, int start, int len, struct point *res, int *pos, int dir);
-static void graphics_process_selection(struct graphics *gra, struct displaylist *dl);
-static void graphics_gc_init(struct graphics *this_);
-
-static void
-clear_hash(struct displaylist *dl)
-{
- int i;
- for (i = 0 ; i < HASH_SIZE ; i++)
- dl->hash_entries[i].type=type_none;
-}
-
-static struct hash_entry *
-get_hash_entry(struct displaylist *dl, enum item_type type)
-{
- int hashidx=(type*2654435761UL) & (HASH_SIZE-1);
- int offset=dl->max_offset;
- do {
- if (!dl->hash_entries[hashidx].type)
- return NULL;
- if (dl->hash_entries[hashidx].type == type)
- return &dl->hash_entries[hashidx];
- hashidx=(hashidx+1)&(HASH_SIZE-1);
- } while (offset-- > 0);
- return NULL;
-}
-
-static struct hash_entry *
-set_hash_entry(struct displaylist *dl, enum item_type type)
-{
- int hashidx=(type*2654435761UL) & (HASH_SIZE-1);
- int offset=0;
- for (;;) {
- if (!dl->hash_entries[hashidx].type) {
- dl->hash_entries[hashidx].type=type;
- if (dl->max_offset < offset)
- dl->max_offset=offset;
- return &dl->hash_entries[hashidx];
- }
- if (dl->hash_entries[hashidx].type == type)
- return &dl->hash_entries[hashidx];
- hashidx=(hashidx+1)&(HASH_SIZE-1);
- offset++;
- }
- return NULL;
-}
-
-/**
- * @brief Sets a generic attribute of the graphics instance
- *
- * This will only set one of the supported generic graphics attributes (currently {@code gamma},
- * {@code brightness}, {@code contrast} or {@code font_size}) and fail for other attribute types.
- *
- * To set an attribute provided by a graphics plugin, use {@link graphics_set_attr(struct graphics *, struct attr *)}
- * instead.
- *
- * @param gra The graphics instance
- * @param attr The attribute to set
- *
- * @return True if the attribute was set, false if not
- */
-static int
-graphics_set_attr_do(struct graphics *gra, struct attr *attr)
-{
- switch (attr->type) {
- case attr_gamma:
- gra->gamma=attr->u.num;
- break;
- case attr_brightness:
- gra->brightness=attr->u.num;
- break;
- case attr_contrast:
- gra->contrast=attr->u.num;
- break;
- case attr_font_size:
- gra->font_size=attr->u.num;
- return 1;
- default:
- return 0;
- }
- gra->colormgmt=(gra->gamma != 65536 || gra->brightness != 0 || gra->contrast != 65536);
- graphics_gc_init(gra);
- return 1;
-}
-
-/**
- * @brief Sets an attribute of the graphics instance
- *
- * This method first tries to set one of the private attributes implemented by the current graphics
- * plugin. If this fails, it tries to set one of the generic attributes.
- *
- * If the graphics plugin does not supply a {@code set_attr} method, this method currently does nothing
- * and returns true, even if the attribute is a generic one.
- *
- * @param gra The graphics instance
- * @param attr The attribute to set
- *
- * @return True if the attribute was successfully set, false otherwise.
- */
-int
-graphics_set_attr(struct graphics *gra, struct attr *attr)
-{
- int ret=1;
- /* FIXME if gra->meth doesn't have a setter, we don't even try the generic attrs - is that what we want? */
- dbg(lvl_debug,"enter\n");
- if (gra->meth.set_attr)
- ret=gra->meth.set_attr(gra->priv, attr);
- if (!ret)
- ret=graphics_set_attr_do(gra, attr);
- return ret != 0;
-}
-
-void
-graphics_set_rect(struct graphics *gra, struct point_rect *pr)
-{
- gra->r=*pr;
-}
-
-/**
- * Creates a new graphics object
- * attr type required
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-struct graphics * graphics_new(struct attr *parent, struct attr **attrs)
-{
- struct graphics *this_;
- struct attr *type_attr, cbl_attr;
- struct graphics_priv * (*graphicstype_new)(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl);
-
- if (! (type_attr=attr_search(attrs, NULL, attr_type))) {
- dbg(lvl_error,"Graphics plugin type is not set.\n");
- return NULL;
- }
-
- graphicstype_new=plugin_get_category_graphics(type_attr->u.str);
- if (! graphicstype_new) {
- dbg(lvl_error,"Failed to load graphics plugin %s.\n", type_attr->u.str);
- return NULL;
- }
- this_=g_new0(struct graphics, 1);
- this_->attrs=attr_list_dup(attrs);
- this_->cbl=callback_list_new();
- cbl_attr.type=attr_callback_list;
- cbl_attr.u.callback_list=this_->cbl;
- this_->attrs=attr_generic_add_attr(this_->attrs, &cbl_attr);
- this_->priv=(*graphicstype_new)(parent->u.navit, &this_->meth, this_->attrs, this_->cbl);
- this_->brightness=0;
- this_->contrast=65536;
- this_->gamma=65536;
- this_->font_size=20;
- this_->image_cache_hash = g_hash_table_new_full(g_str_hash, g_str_equal,g_free,g_free);
- while (*attrs) {
- graphics_set_attr_do(this_,*attrs);
- attrs++;
- }
- return this_;
-}
-
-/**
- * @brief Gets an attribute of the graphics instance
- *
- * This function searches the attribute list of the graphics object for an attribute of a given type and
- * stores it in the attr parameter.
- * <p>
- * Searching for attr_any or attr_any_xml is supported.
- * <p>
- * An iterator can be specified to get multiple attributes of the same type:
- * The first call will return the first match from attr; each subsequent call
- * with the same iterator will return the next match. If no more matching
- * attributes are found in either of them, false is returned.
- * <p>
- * Note that currently this will only return the generic attributes which can be set with
- * {@link graphics_set_attr_do(struct graphics *, struct attr *)}. Attributes implemented by a graphics
- * plugin cannot be retrieved with this method.
- *
- * @param this The graphics instance
- * @param type The attribute type to search for
- * @param attr Points to a {@code struct attr} which will receive the attribute
- * @param iter An iterator. This parameter may be NULL.
- *
- * @return True if a matching attribute was found, false if not.
- *
- * @author Martin Schaller (04/2008)
-*/
-int graphics_get_attr(struct graphics *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
-}
-
-/**
- * @brief Create a new graphics overlay.
- * An overlay is a graphics object that is independent of the main graphics object. When
- * drawing everything to a window, the overlay will be shown on top of the main graphics
- * object. Navit uses overlays for OSD elements and for the vehicle on the map.
- * This allows updating OSD elements and the vehicle without redrawing the map.
- *
- * @param parent parent graphics context (should be the main graphics context as returned by
- * graphics_new)
- * @param p drawing position for the overlay
- * @param w width of overlay
- * @param h height of overlay
- * @param wraparound use wraparound (0/1). If set, position, width and height "wrap around":
- * negative position coordinates wrap around the window, negative width/height specify
- * difference to window width/height.
- * @returns new overlay
- * @author Martin Schaller (04/2008)
-*/
-struct graphics * graphics_overlay_new(struct graphics *parent, struct point *p, int w, int h, int wraparound)
-{
- struct graphics *this_;
- struct point_rect pr;
- if (!parent->meth.overlay_new)
- return NULL;
- this_=g_new0(struct graphics, 1);
- this_->priv=parent->meth.overlay_new(parent->priv, &this_->meth, p, w, h, wraparound);
- this_->image_cache_hash = parent->image_cache_hash;
- this_->parent = parent;
- pr.lu.x=0;
- pr.lu.y=0;
- pr.rl.x=w;
- pr.rl.y=h;
- this_->font_size=20;
- graphics_set_rect(this_, &pr);
- if (!this_->priv) {
- g_free(this_);
- this_=NULL;
- }
- return this_;
-}
-
-/**
- * @brief Alters the size, position and wraparound for an overlay
- *
- * @param this_ The overlay's graphics struct
- * @param p The new position of the overlay
- * @param w The new width of the overlay
- * @param h The new height of the overlay
- * @param wraparound The new wraparound of the overlay
- */
-void
-graphics_overlay_resize(struct graphics *this_, struct point *p, int w, int h, int wraparound)
-{
- if (! this_->meth.overlay_resize) {
- return;
- }
-
- this_->meth.overlay_resize(this_->priv, p, w, h, wraparound);
-}
-
-static void
-graphics_gc_init(struct graphics *this_)
-{
- struct color background={ COLOR_BACKGROUND_ };
- struct color black={ COLOR_BLACK_ };
- struct color white={ COLOR_WHITE_ };
- if (!this_->gc[0] || !this_->gc[1] || !this_->gc[2])
- return;
- graphics_gc_set_background(this_->gc[0], &background );
- graphics_gc_set_foreground(this_->gc[0], &background );
- graphics_gc_set_background(this_->gc[1], &black );
- graphics_gc_set_foreground(this_->gc[1], &white );
- graphics_gc_set_background(this_->gc[2], &white );
- graphics_gc_set_foreground(this_->gc[2], &black );
-}
-
-
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_init(struct graphics *this_)
-{
- if (this_->gc[0])
- return;
- this_->gc[0]=graphics_gc_new(this_);
- this_->gc[1]=graphics_gc_new(this_);
- this_->gc[2]=graphics_gc_new(this_);
- graphics_gc_init(this_);
- graphics_background_gc(this_, this_->gc[0]);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void * graphics_get_data(struct graphics *this_, const char *type)
-{
- return (this_->meth.get_data(this_->priv, type));
-}
-
-void graphics_add_callback(struct graphics *this_, struct callback *cb)
-{
- callback_list_add(this_->cbl, cb);
-}
-
-void graphics_remove_callback(struct graphics *this_, struct callback *cb)
-{
- callback_list_remove(this_->cbl, cb);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-struct graphics_font * graphics_font_new(struct graphics *gra, int size, int flags)
-{
- struct graphics_font *this_;
-
- this_=g_new0(struct graphics_font,1);
- this_->priv=gra->meth.font_new(gra->priv, &this_->meth, gra->default_font, size, flags);
- return this_;
-}
-
-struct graphics_font * graphics_named_font_new(struct graphics *gra, char *font, int size, int flags)
-{
- struct graphics_font *this_;
-
- this_=g_new0(struct graphics_font,1);
- this_->priv=gra->meth.font_new(gra->priv, &this_->meth, font, size, flags);
- return this_;
-}
-
-void graphics_font_destroy(struct graphics_font *gra_font) {
- if(!gra_font)
- return;
- gra_font->meth.font_destroy(gra_font->priv);
- g_free(gra_font);
-}
-
-/**
- * Destroy graphics
- * Called when navit exits
- * @param gra The graphics instance
- * @returns nothing
- * @author David Tegze (02/2011)
- */
-void graphics_free(struct graphics *gra)
-{
- if (!gra)
- return;
-
- /* If it's not an overlay, free the image cache. */
- if(!gra->parent) {
- struct graphics_image *img;
- GList *ll, *l;
-
- /* We can't specify context (pointer to struct graphics) for g_hash_table_new to have it passed to free function
- so we have to free img->priv manually, the rest would be freed by g_hash_table_destroy. GHashTableIter isn't used because it
- broke n800 build at r5107.
- */
- for(ll=l=g_hash_to_list(gra->image_cache_hash);l;l=g_list_next(l)) {
- img=l->data;
- if (img && gra->meth.image_free)
- gra->meth.image_free(gra->priv, img->priv);
- }
- g_list_free(ll);
- g_hash_table_destroy(gra->image_cache_hash);
- }
-
- attr_list_free(gra->attrs);
- graphics_gc_destroy(gra->gc[0]);
- graphics_gc_destroy(gra->gc[1]);
- graphics_gc_destroy(gra->gc[2]);
- g_free(gra->default_font);
- graphics_font_destroy_all(gra);
- g_free(gra->font);
- gra->meth.graphics_destroy(gra->priv);
- g_free(gra);
-}
-
-/**
- * Free all loaded fonts.
- * Used when switching layouts.
- * @param gra The graphics instance
- * @returns nothing
- * @author Sarah Nordstrom (05/2008)
- */
-void graphics_font_destroy_all(struct graphics *gra)
-{
- int i;
- for(i = 0 ; i < gra->font_len; i++) {
- if(!gra->font[i]) continue;
- gra->font[i]->meth.font_destroy(gra->font[i]->priv);
- g_free(gra->font[i]);
- gra->font[i] = NULL;
- }
-}
-
-/**
- * Create a new graphics context.
- * @param gra associated graphics object for the new context
- * @returns new graphics context
- * @author Martin Schaller (04/2008)
-*/
-struct graphics_gc * graphics_gc_new(struct graphics *gra)
-{
- struct graphics_gc *this_;
-
- this_=g_new0(struct graphics_gc,1);
- this_->priv=gra->meth.gc_new(gra->priv, &this_->meth);
- this_->gra=gra;
- return this_;
-}
-
-/**
- * Destroy a graphics context, freeing associated resources.
- * @param gc context to destroy
- * @author Martin Schaller (04/2008)
-*/
-void graphics_gc_destroy(struct graphics_gc *gc)
-{
- if (!gc)
- return;
- gc->meth.gc_destroy(gc->priv);
- g_free(gc);
-}
-
-static void
-graphics_convert_color(struct graphics *gra, struct color *in, struct color *out)
-{
- *out=*in;
- if (gra->brightness) {
- out->r+=gra->brightness;
- out->g+=gra->brightness;
- out->b+=gra->brightness;
- }
- if (gra->contrast != 65536) {
- out->r=out->r*gra->contrast/65536;
- out->g=out->g*gra->contrast/65536;
- out->b=out->b*gra->contrast/65536;
- }
- if (out->r < 0)
- out->r=0;
- if (out->r > 65535)
- out->r=65535;
- if (out->g < 0)
- out->g=0;
- if (out->g > 65535)
- out->g=65535;
- if (out->b < 0)
- out->b=0;
- if (out->b > 65535)
- out->b=65535;
- if (gra->gamma != 65536) {
- out->r=pow(out->r/65535.0,gra->gamma/65536.0)*65535.0;
- out->g=pow(out->g/65535.0,gra->gamma/65536.0)*65535.0;
- out->b=pow(out->b/65535.0,gra->gamma/65536.0)*65535.0;
- }
-}
-
-/**
- * Set foreground color.
- * @param gc graphics context to set color for
- * @param c color to set
- * @author Martin Schaller (04/2008)
-*/
-void graphics_gc_set_foreground(struct graphics_gc *gc, struct color *c)
-{
- struct color cn;
- if (gc->gra->colormgmt) {
- graphics_convert_color(gc->gra, c, &cn);
- c=&cn;
- }
- gc->meth.gc_set_foreground(gc->priv, c);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_gc_set_background(struct graphics_gc *gc, struct color *c)
-{
- struct color cn;
- if (gc->gra->colormgmt) {
- graphics_convert_color(gc->gra, c, &cn);
- c=&cn;
- }
- gc->meth.gc_set_background(gc->priv, c);
-}
-
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_gc_set_linewidth(struct graphics_gc *gc, int width)
-{
- gc->meth.gc_set_linewidth(gc->priv, width);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_gc_set_dashes(struct graphics_gc *gc, int width, int offset, unsigned char dash_list[], int n)
-{
- if (gc->meth.gc_set_dashes)
- gc->meth.gc_set_dashes(gc->priv, width, offset, dash_list, n);
-}
-
-/**
- * @brief Create a new image from file path, optionally scaled to w and h pixels.
- *
- * @param gra the graphics instance
- * @param path path of the image to load
- * @param w width to rescale to, or IMAGE_W_H_UNSET for original width
- * @param h height to rescale to, or IMAGE_W_H_UNSET for original height
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-struct graphics_image * graphics_image_new_scaled(struct graphics *gra, char *path, int w, int h)
-{
- return graphics_image_new_scaled_rotated(gra, path, w, h, 0);
-}
-
-static void
-image_new_helper(struct graphics *gra, struct graphics_image *this_, char *path, char *name, int width, int height, int rotate, int zip)
-{
- int i=0;
- int stdsizes[]={8,12,16,22,24,32,36,48,64,72,96,128,192,256};
- const int numstdsizes=sizeof(stdsizes)/sizeof(int);
- int sz;
- int mode=1;
- int bmstd=0;
- sz=width>0?width:height;
- while (mode<=8) {
- char *new_name=NULL;
- int n;
- switch (mode) {
- case 1:
- /* The best variant both for cpu usage and quality would be prescaled png of a needed size */
- mode++;
- if (width != IMAGE_W_H_UNSET && height != IMAGE_W_H_UNSET) {
- new_name=g_strdup_printf("%s_%d_%d.png", name, width, height);
- }
- break;
- case 2:
- mode++;
- /* Try to load image by the exact name given by user. For example, if she wants to
- scale some prescaled png variant to a new size given as function params, or have
- default png image to be displayed unscaled. */
- new_name=g_strdup(path);
- break;
- case 3:
- mode++;
- /* Next, try uncompressed and compressed svgs as they should give best quality but
- rendering might take more cpu resources when the image is displayed for the first time */
- new_name=g_strdup_printf("%s.svg", name);
- break;
- case 4:
- mode++;
- new_name=g_strdup_printf("%s.svgz", name);
- break;
- case 5:
- mode++;
- i=0;
- /* If we have no size specifiers, try the default png now */
- if(sz<=0) {
- new_name=g_strdup_printf("%s.png", name);
- break;
- }
- /* Find best matching size from standard row */
- for(bmstd=0;bmstd<numstdsizes;bmstd++)
- if(stdsizes[bmstd]>sz)
- break;
- i=1;
- /* Fall through */
- case 6:
- /* Select best matching image from standard row */
- if(sz>0) {
- /* If size were specified, start with bmstd and then try standard sizes in row
- * bmstd, bmstd+1, bmstd+2, .. numstdsizes-1, bmstd-1, bmstd-2, .., 0 */
- n=bmstd+i;
- if((bmstd+i)>=numstdsizes)
- n=numstdsizes-i-1;
-
- if(++i==numstdsizes)
- mode++;
- } else {
- /* If no size were specified, start with the smallest standard size and then try following ones */
- n=i++;
- if(i==numstdsizes)
- mode+=2;
- }
- if(n<0||n>=numstdsizes)
- break;
- new_name=g_strdup_printf("%s_%d_%d.png", name, stdsizes[n],stdsizes[n]);
- break;
-
- case 7:
- /* Scaling the default prescaled png of unknown size to the needed size will give random quality loss */
- mode++;
- new_name=g_strdup_printf("%s.png", name);
- break;
- case 8:
- /* xpm format is used as a last resort, because its not widely supported and we are moving to svg and png formats */
- mode++;
- new_name=g_strdup_printf("%s.xpm", name);
- break;
- }
- if (! new_name)
- continue;
-
- this_->width=width;
- this_->height=height;
- dbg(lvl_debug,"Trying to load image '%s' for '%s' at %dx%d\n", new_name, path, width, height);
- if (zip) {
- unsigned char *start;
- int len;
- if (file_get_contents(new_name, &start, &len)) {
- struct graphics_image_buffer buffer={"buffer:",graphics_image_type_unknown};
- buffer.start=start;
- buffer.len=len;
- this_->priv=gra->meth.image_new(gra->priv, &this_->meth, (char *)&buffer, &this_->width, &this_->height, &this_->hot, rotate);
- g_free(start);
- }
- } else {
- if (strcmp(new_name,"buffer:"))
- this_->priv=gra->meth.image_new(gra->priv, &this_->meth, new_name, &this_->width, &this_->height, &this_->hot, rotate);
- }
- if (this_->priv) {
- dbg(lvl_info,"Using image '%s' for '%s' at %dx%d\n", new_name, path, width, height);
- g_free(new_name);
- break;
- }
- g_free(new_name);
- }
-}
-
-/**
- * @brief Create a new image from file path, optionally scaled to w and h pixels and rotated.
- *
- * @param gra the graphics instance
- * @param path path of the image to load
- * @param w width to rescale to, or IMAGE_W_H_UNSET for original width
- * @param h height to rescale to, or IMAGE_W_H_UNSET for original height
- * @param rotate angle to rotate the image, in 90 degree steps (not supported by all plugins).
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-struct graphics_image * graphics_image_new_scaled_rotated(struct graphics *gra, char *path, int w, int h, int rotate)
-{
- struct graphics_image *this_;
- char* hash_key = g_strdup_printf("%s*%d*%d*%d",path,w,h,rotate);
- struct file_wordexp *we;
- int i;
- char **paths;
-
- if ( g_hash_table_lookup_extended( gra->image_cache_hash, hash_key, NULL, (gpointer)&this_) ) {
- g_free(hash_key);
- dbg(lvl_debug,"Found cached image%sfor '%s'\n",this_?" ":" miss ",path);
- return this_;
- }
-
- this_=g_new0(struct graphics_image,1);
- this_->height=h;
- this_->width=w;
-
- we=file_wordexp_new(path);
- paths=file_wordexp_get_array(we);
-
- for(i=0;i<file_wordexp_get_count(we) && !this_->priv;i++) {
- char *ext;
- char *s, *name;
- char *pathi=paths[i];
- int len=strlen(pathi);
- int i,k;
- int newwidth=IMAGE_W_H_UNSET, newheight=IMAGE_W_H_UNSET;
-
- ext=g_utf8_strrchr(pathi,-1,'.');
- i=pathi-ext+len;
-
- /* Dont allow too long or too short file name extensions*/
- if(ext && ((i>5) || (i<1)))
- ext=NULL;
-
- /* Search for _w_h name part, begin from char before extension if it exists */
- if(ext)
- s=ext-1;
- else
- s=pathi+len;
-
- k=1;
- while(s>pathi && g_ascii_isdigit(*s)) {
- if(newheight<0)
- newheight=0;
- newheight+=(*s-'0')*k;
- k*=10;
- s--;
- }
-
- if(k>1 && s>pathi && *s=='_') {
- k=1;
- s--;
- while(s>pathi && g_ascii_isdigit(*s)) {
- if(newwidth<0)
- newwidth=0;
- newwidth+=(*s-'0')*k;;
- k*=10;
- s--;
- }
- }
-
- if(k==1 || s<=pathi || *s!='_') {
- newwidth=IMAGE_W_H_UNSET;
- newheight=IMAGE_W_H_UNSET;
- if(ext)
- s=ext;
- else
- s=pathi+len;
-
- }
-
- /* If exact h and w values were given as function parameters, they take precedence over values guessed from the image name */
- if(w!=IMAGE_W_H_UNSET)
- newwidth=w;
- if(h!=IMAGE_W_H_UNSET)
- newheight=h;
-
- name=g_strndup(pathi,s-pathi);
- image_new_helper(gra, this_, pathi, name, newwidth, newheight, rotate, 0);
- if (!this_->priv && strstr(pathi, ".zip/"))
- image_new_helper(gra, this_, pathi, name, newwidth, newheight, rotate, 1);
- g_free(name);
- }
-
- file_wordexp_destroy(we);
-
- if (! this_->priv) {
- dbg(lvl_error,"No image for '%s'\n", path);
- g_free(this_);
- this_=NULL;
- }
-
- g_hash_table_insert(gra->image_cache_hash, hash_key, (gpointer)this_ );
-
- return this_;
-}
-
-/**
- * Create a new image from file path
- * @param gra the graphics instance
- * @param path path of the image to load
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-struct graphics_image * graphics_image_new(struct graphics *gra, char *path)
-{
- return graphics_image_new_scaled_rotated(gra, path, IMAGE_W_H_UNSET, IMAGE_W_H_UNSET, 0);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_image_free(struct graphics *gra, struct graphics_image *img)
-{
- /* Image is cached inside gra->image_cache_hash. So it would be freed only when graphics is destroyed => Do nothing here. */
-}
-
-/**
- * @brief Start or finish a set of drawing operations.
- *
- * graphics_draw_mode(draw_mode_begin) must be invoked before performing any drawing
- * operations; this allows the graphics driver to perform any necessary setup.
- * graphics_draw_mode(draw_mode_end) must be invoked to finish a set of drawing operations;
- * this will typically clean up drawing resources and display the drawing result.
- * @param this_ graphics object that is being drawn to
- * @param mode specify beginning or end of drawing
- * @author Martin Schaller (04/2008)
-*/
-void graphics_draw_mode(struct graphics *this_, enum draw_mode_num mode)
-{
- this_->meth.draw_mode(this_->priv, mode);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_draw_lines(struct graphics *this_, struct graphics_gc *gc, struct point *p, int count)
-{
- this_->meth.draw_lines(this_->priv, gc->priv, p, count);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_draw_circle(struct graphics *this_, struct graphics_gc *gc, struct point *p, int r)
-{
- struct point *pnt=g_alloca(sizeof(struct point)*(r*4+64));
- int i=0;
-
- if(this_->meth.draw_circle)
- this_->meth.draw_circle(this_->priv, gc->priv, p, r);
- else
- {
- draw_circle(p, r, 0, -1, 1026, pnt, &i, 1);
- pnt[i] = pnt[0];
- i++;
- this_->meth.draw_lines(this_->priv, gc->priv, pnt, i);
- }
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_draw_rectangle(struct graphics *this_, struct graphics_gc *gc, struct point *p, int w, int h)
-{
- this_->meth.draw_rectangle(this_->priv, gc->priv, p, w, h);
-}
-
-void graphics_draw_rectangle_rounded(struct graphics *this_, struct graphics_gc *gc, struct point *plu, int w, int h, int r, int fill)
-{
- struct point *p=g_alloca(sizeof(struct point)*(r*4+32));
- struct point pi0={plu->x+r,plu->y+r};
- struct point pi1={plu->x+w-r,plu->y+r};
- struct point pi2={plu->x+w-r,plu->y+h-r};
- struct point pi3={plu->x+r,plu->y+h-r};
- int i=0;
-
- draw_circle(&pi2, r*2, 0, -1, 258, p, &i, 1);
- draw_circle(&pi1, r*2, 0, 255, 258, p, &i, 1);
- draw_circle(&pi0, r*2, 0, 511, 258, p, &i, 1);
- draw_circle(&pi3, r*2, 0, 767, 258, p, &i, 1);
- p[i]=p[0];
- i++;
- if (fill)
- this_->meth.draw_polygon(this_->priv, gc->priv, p, i);
- else
- this_->meth.draw_lines(this_->priv, gc->priv, p, i);
-}
-
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_draw_text(struct graphics *this_, struct graphics_gc *gc1, struct graphics_gc *gc2, struct graphics_font *font, char *text, struct point *p, int dx, int dy)
-{
- this_->meth.draw_text(this_->priv, gc1->priv, gc2 ? gc2->priv : NULL, font->priv, text, p, dx, dy);
-}
-
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_get_text_bbox(struct graphics *this_, struct graphics_font *font, char *text, int dx, int dy, struct point *ret, int estimate)
-{
- this_->meth.get_text_bbox(this_->priv, font->priv, text, dx, dy, ret, estimate);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_overlay_disable(struct graphics *this_, int disable)
-{
- this_->disabled = disable;
- if (this_->meth.overlay_disable)
- this_->meth.overlay_disable(this_->priv, disable);
-}
-
-int graphics_is_disabled(struct graphics *this_)
-{
- return this_->disabled || (this_->parent && this_->parent->disabled);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_draw_image(struct graphics *this_, struct graphics_gc *gc, struct point *p, struct graphics_image *img)
-{
- this_->meth.draw_image(this_->priv, gc->priv, p, img->priv);
-}
-
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-int
-graphics_draw_drag(struct graphics *this_, struct point *p)
-{
- if (!this_->meth.draw_drag)
- return 0;
- this_->meth.draw_drag(this_->priv, p);
- return 1;
-}
-
-void
-graphics_background_gc(struct graphics *this_, struct graphics_gc *gc)
-{
- this_->meth.background_gc(this_->priv, gc ? gc->priv : NULL);
-}
-
-
-/**
- * @brief Shows the native on-screen keyboard or other input method
- *
- * This method is a wrapper around the respective method of the graphics plugin.
- *
- * The caller should populate the {@code kbd} argument with appropriate {@code mode} and {@code lang}
- * members so the graphics plugin can determine the best matching layout.
- *
- * If an input method is shown, the graphics plugin should try to select the configuration which best
- * matches the specified {@code mode}. For example, if {@code mode} specifies a numeric layout, the
- * graphics plugin should select a numeric keyboard layout (if available), or the equivalent for another
- * input method (such as setting stroke recognition to identify strokes as numbers). Likewise, when an
- * alphanumeric-uppercase mode is requested, it should switch to uppercase input.
- *
- * Implementations should, however, consider that Navit's internal keyboard allows the user to switch
- * modes at will (the only exception being degree mode) and thus must not "lock" the user into a limited
- * layout with no means to switch to a general-purpose one. For example, house number entry in an
- * address search dialog may default to numeric mode, but since some house numbers may contain
- * non-numeric characters, a pure numeric keyboard is suitable only if the user has the option to switch
- * to an alphanumeric layout.
- *
- * When multiple alphanumeric layouts are available, the graphics plugin should use the {@code lang}
- * argument to determine the best layout.
- *
- * When selecting an input method, preference should always be given to the default or last selected
- * input method and configuration if it matches the requested {@code mode} and {@code lang}.
- *
- * If the native input method is going to obstruct parts of Navit's UI, the graphics plugin should set
- * {@code kbd->w} and {@code kbd->h} to the height and width to the appropriate value in pixels. A value
- * of -1 indicates that the input method fills the entire available width or height of the space
- * available to Navit. On windowed platforms, where the on-screen input method and Navit's window may be
- * moved relative to each other as needed and can be displayed alongside each other, the graphics plugin
- * should report 0 for both dimensions.
- *
- * @param this_ The graphics instance
- * @param kbd The keyboard instance
- *
- * @return 1 if the native keyboard is going to be displayed, 0 if not, -1 if the method is not
- * supported by the plugin
- */
-int graphics_show_native_keyboard (struct graphics *this_, struct graphics_keyboard *kbd) {
- int ret;
- if (!this_->meth.show_native_keyboard)
- ret = -1;
- else
- ret = this_->meth.show_native_keyboard(kbd);
- dbg(lvl_debug, "return %d\n", ret);
- return ret;
-}
-
-
-/**
- * @brief Hides the native on-screen keyboard or other input method
- *
- * This method is a wrapper around the respective method of the graphics plugin.
- *
- * A call to this function indicates that Navit no longer needs the input method and is about to reclaim
- * any screen real estate it may have previously reserved for the input method.
- *
- * On platforms that don't support overlapping windows this means that the on-screen input method should
- * be hidden, as it may otherwise obstruct parts of Navit's UI.
- *
- * On windowed platforms, where on-screen input methods can be displayed alongside Navit or moved around
- * as needed, the graphics driver should instead notify the on-screen method that it is no longer
- * expecting user input, allowing the input method to take the appropriate action.
- *
- * The graphics plugin must free any data it has stored in {@code kbd->gra_priv} and reset the pointer
- * to {@code NULL} to indicate it has done so.
- *
- * The caller may free {@code kbd} after this function returns.
- *
- * @param this The graphics instance
- * @param kbd The keyboard instance
- *
- * @return True if the call was successfully passed to the plugin, false if the method is not supported
- * by the plugin
- */
-int graphics_hide_native_keyboard (struct graphics *this_, struct graphics_keyboard *kbd) {
- if (!this_->meth.hide_native_keyboard)
- return 0;
- this_->meth.hide_native_keyboard(kbd);
- return 1;
-}
-
-#include "attr.h"
-#include "popup.h"
-#include <stdio.h>
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-struct displayitem {
- struct displayitem *next;
- struct item item;
- char *label;
- int z_order;
- int count;
- struct coord c[0];
-};
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-static void xdisplay_free(struct displaylist *dl)
-{
- int i;
- for (i = 0 ; i < HASH_SIZE ; i++) {
- struct displayitem *di=dl->hash_entries[i].di;
- while (di) {
- struct displayitem *next=di->next;
- g_free(di);
- di=next;
- }
- dl->hash_entries[i].di=NULL;
- }
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-static void display_add(struct hash_entry *entry, struct item *item, int count, struct coord *c, char **label, int label_count)
-{
- struct displayitem *di;
- int len,i;
- char *p;
-
- len=sizeof(*di)+count*sizeof(*c);
- if (label && label_count) {
- for (i = 0 ; i < label_count ; i++) {
- if (label[i])
- len+=strlen(label[i])+1;
- else
- len++;
- }
- }
- p=g_malloc(len);
-
- di=(struct displayitem *)p;
- p+=sizeof(*di)+count*sizeof(*c);
- di->item=*item;
- di->z_order=0;
- if (label && label_count) {
- di->label=p;
- for (i = 0 ; i < label_count ; i++) {
- if (label[i]) {
- strcpy(p, label[i]);
- p+=strlen(label[i])+1;
- } else
- *p++='\0';
- }
- } else
- di->label=NULL;
- di->count=count;
- memcpy(di->c, c, count*sizeof(*c));
- di->next=entry->di;
- entry->di=di;
-}
-
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-static void label_line(struct graphics *gra, struct graphics_gc *fg, struct graphics_gc *bg, struct graphics_font *font, struct point *p, int count, char *label)
-{
- int i,x,y,tl,tlm,th,thm,tlsq,l;
- float lsq;
- double dx,dy;
- struct point p_t;
- struct point pb[5];
-
- if (gra->meth.get_text_bbox) {
- gra->meth.get_text_bbox(gra->priv, font->priv, label, 0x10000, 0x0, pb, 1);
- tl=(pb[2].x-pb[0].x);
- th=(pb[0].y-pb[1].y);
- } else {
- tl=strlen(label)*4;
- th=8;
- }
- tlm=tl*32;
- thm=th*36;
- tlsq = tlm*tlm;
- for (i = 0 ; i < count-1 ; i++) {
- dx=p[i+1].x-p[i].x;
- dx*=32;
- dy=p[i+1].y-p[i].y;
- dy*=32;
- lsq = dx*dx+dy*dy;
- if (lsq > tlsq) {
- l=(int)sqrtf(lsq);
- x=p[i].x;
- y=p[i].y;
- if (dx < 0) {
- dx=-dx;
- dy=-dy;
- x=p[i+1].x;
- y=p[i+1].y;
- }
- x+=(l-tlm)*dx/l/64;
- y+=(l-tlm)*dy/l/64;
- x-=dy*thm/l/64;
- y+=dx*thm/l/64;
- p_t.x=x;
- p_t.y=y;
- if (x < gra->r.rl.x && x + tl > gra->r.lu.x && y + tl > gra->r.lu.y && y - tl < gra->r.rl.y)
- gra->meth.draw_text(gra->priv, fg->priv, bg?bg->priv:NULL, font->priv, label, &p_t, dx*0x10000/l, dy*0x10000/l);
- }
- }
-}
-
-static void display_draw_arrow(struct point *p, int dx, int dy, int l, struct graphics_gc *gc, struct graphics *gra)
-{
- struct point pnt[3];
- pnt[0]=pnt[1]=pnt[2]=*p;
- pnt[0].x+=-dx*l/65536+dy*l/65536;
- pnt[0].y+=-dy*l/65536-dx*l/65536;
- pnt[2].x+=-dx*l/65536-dy*l/65536;
- pnt[2].y+=-dy*l/65536+dx*l/65536;
- gra->meth.draw_lines(gra->priv, gc->priv, pnt, 3);
-}
-
-static void display_draw_arrows(struct graphics *gra, struct graphics_gc *gc, struct point *pnt, int count)
-{
- int i,dx,dy,l;
- struct point p;
- for (i = 0 ; i < count-1 ; i++) {
- dx=pnt[i+1].x-pnt[i].x;
- dy=pnt[i+1].y-pnt[i].y;
- l=sqrt(dx*dx+dy*dy);
- if (l) {
- dx=dx*65536/l;
- dy=dy*65536/l;
- p=pnt[i];
- p.x+=dx*15/65536;
- p.y+=dy*15/65536;
- display_draw_arrow(&p, dx, dy, 10, gc, gra);
- p=pnt[i+1];
- p.x-=dx*15/65536;
- p.y-=dy*15/65536;
- display_draw_arrow(&p, dx, dy, 10, gc, gra);
- }
- }
-}
-
-static int
-intersection(struct point * a1, int adx, int ady, struct point * b1, int bdx, int bdy,
- struct point * res)
-{
- int n, a, b;
- dbg(lvl_debug,"%d,%d - %d,%d x %d,%d-%d,%d\n",a1->x,a1->y,a1->x+adx,a1->y+ady,b1->x,b1->y,b1->x+bdx,b1->y+bdy);
- n = bdy * adx - bdx * ady;
- a = bdx * (a1->y - b1->y) - bdy * (a1->x - b1->x);
- b = adx * (a1->y - b1->y) - ady * (a1->x - b1->x);
- dbg(lvl_debug,"a %d b %d n %d\n",a,b,n);
- if (n < 0) {
- n = -n;
- a = -a;
- b = -b;
- }
- if (n == 0)
- return 0;
- res->x = a1->x + a * adx / n;
- res->y = a1->y + a * ady / n;
- dbg(lvl_debug,"%d,%d\n",res->x,res->y);
- return 1;
-}
-
-struct circle {
- short x,y,fowler;
-} circle64[]={
-{0,128,0},
-{13,127,13},
-{25,126,25},
-{37,122,38},
-{49,118,53},
-{60,113,67},
-{71,106,85},
-{81,99,104},
-{91,91,128},
-{99,81,152},
-{106,71,171},
-{113,60,189},
-{118,49,203},
-{122,37,218},
-{126,25,231},
-{127,13,243},
-{128,0,256},
-{127,-13,269},
-{126,-25,281},
-{122,-37,294},
-{118,-49,309},
-{113,-60,323},
-{106,-71,341},
-{99,-81,360},
-{91,-91,384},
-{81,-99,408},
-{71,-106,427},
-{60,-113,445},
-{49,-118,459},
-{37,-122,474},
-{25,-126,487},
-{13,-127,499},
-{0,-128,512},
-{-13,-127,525},
-{-25,-126,537},
-{-37,-122,550},
-{-49,-118,565},
-{-60,-113,579},
-{-71,-106,597},
-{-81,-99,616},
-{-91,-91,640},
-{-99,-81,664},
-{-106,-71,683},
-{-113,-60,701},
-{-118,-49,715},
-{-122,-37,730},
-{-126,-25,743},
-{-127,-13,755},
-{-128,0,768},
-{-127,13,781},
-{-126,25,793},
-{-122,37,806},
-{-118,49,821},
-{-113,60,835},
-{-106,71,853},
-{-99,81,872},
-{-91,91,896},
-{-81,99,920},
-{-71,106,939},
-{-60,113,957},
-{-49,118,971},
-{-37,122,986},
-{-25,126,999},
-{-13,127,1011},
-};
-
-static void
-draw_circle(struct point *pnt, int diameter, int scale, int start, int len, struct point *res, int *pos, int dir)
-{
- struct circle *c;
- int count=64;
- int end=start+len;
- int i,step;
- c=circle64;
- if (diameter > 128)
- step=1;
- else if (diameter > 64)
- step=2;
- else if (diameter > 24)
- step=4;
- else if (diameter > 8)
- step=8;
- else
- step=16;
- if (len > 0) {
- while (start < 0) {
- start+=1024;
- end+=1024;
- }
- while (end > 0) {
- i=0;
- while (i < count && c[i].fowler <= start)
- i+=step;
- while (i < count && c[i].fowler < end) {
- if (1< *pos || 0<dir) {
- res[*pos].x=pnt->x+((c[i].x*diameter+128)>>8);
- res[*pos].y=pnt->y+((c[i].y*diameter+128)>>8);
- (*pos)+=dir;
- }
- i+=step;
- }
- end-=1024;
- start-=1024;
- }
- } else {
- while (start > 1024) {
- start-=1024;
- end-=1024;
- }
- while (end < 1024) {
- i=count-1;
- while (i >= 0 && c[i].fowler >= start)
- i-=step;
- while (i >= 0 && c[i].fowler > end) {
- if (1< *pos || 0<dir) {
- res[*pos].x=pnt->x+((c[i].x*diameter+128)>>8);
- res[*pos].y=pnt->y+((c[i].y*diameter+128)>>8);
- (*pos)+=dir;
- }
- i-=step;
- }
- start+=1024;
- end+=1024;
- }
- }
-}
-
-
-static int
-fowler(int dy, int dx)
-{
- int adx, ady; /* Absolute Values of Dx and Dy */
- int code; /* Angular Region Classification Code */
-
- adx = (dx < 0) ? -dx : dx; /* Compute the absolute values. */
- ady = (dy < 0) ? -dy : dy;
-
- code = (adx < ady) ? 1 : 0;
- if (dx < 0)
- code += 2;
- if (dy < 0)
- code += 4;
-
- switch (code) {
- case 0:
- return (dx == 0) ? 0 : 128*ady / adx; /* [ 0, 45] */
- case 1:
- return (256 - (128*adx / ady)); /* ( 45, 90] */
- case 3:
- return (256 + (128*adx / ady)); /* ( 90,135) */
- case 2:
- return (512 - (128*ady / adx)); /* [135,180] */
- case 6:
- return (512 + (128*ady / adx)); /* (180,225] */
- case 7:
- return (768 - (128*adx / ady)); /* (225,270) */
- case 5:
- return (768 + (128*adx / ady)); /* [270,315) */
- case 4:
- return (1024 - (128*ady / adx));/* [315,360) */
- }
- return 0;
-}
-static int
-int_sqrt(unsigned int n)
-{
- unsigned int h, p= 0, q= 1, r= n;
-
- /* avoid q rollover */
- if(n >= (1<<(sizeof(n)*8-2))) {
- q = 1<<(sizeof(n)*8-2);
- } else {
- while ( q <= n ) {
- q <<= 2;
- }
- q >>= 2;
- }
-
- while ( q != 0 ) {
- h = p + q;
- p >>= 1;
- if ( r >= h ) {
- p += q;
- r -= h;
- }
- q >>= 2;
- }
- return p;
-}
-
-struct draw_polyline_shape {
- int wi;
- int step;
- int fow;
- int dx,dy;
- int dxw,dyw;
- int l,lscale;
-};
-struct draw_polyline_context {
- int prec;
- int ppos,npos;
- struct point *res;
- struct draw_polyline_shape shape;
- struct draw_polyline_shape prev_shape;
-};
-
-static void
-draw_shape_update(struct draw_polyline_shape *shape)
-{
- shape->dxw = -(shape->dx * shape->wi * shape->lscale) / shape->l;
- shape->dyw = (shape->dy * shape->wi * shape->lscale) / shape->l;
-}
-
-static void
-draw_shape(struct draw_polyline_context *ctx, struct point *pnt, int wi)
-{
- int dxs,dys,lscales;
- int lscale=16;
- int l;
- struct draw_polyline_shape *shape=&ctx->shape;
- struct draw_polyline_shape *prev=&ctx->prev_shape;
-
-#if 0
- dbg(lvl_debug,"enter %d,%d - %d,%d %d\n",pnt[0].x,pnt[0].y,pnt[1].x,pnt[1].y,wi);
-#endif
-
- *prev=*shape;
- if (prev->wi != wi && prev->l) {
- prev->wi=wi;
- draw_shape_update(prev);
- }
- shape->wi=wi;
- shape->dx = (pnt[1].x - pnt[0].x);
- shape->dy = (pnt[1].y - pnt[0].y);
- if (wi > 16)
- shape->step=4;
- else if (wi > 8)
- shape->step=8;
- else
- shape->step=16;
-#if 0
- l = int_sqrt(dx * dx * lscale * lscale + dy * dy * lscale * lscale);
-#else
- dxs=shape->dx*shape->dx;
- dys=shape->dy*shape->dy;
- lscales=lscale*lscale;
- if (dxs + dys > lscales)
- l = int_sqrt(dxs+dys)*lscale;
- else
- l = int_sqrt((dxs+dys)*lscales);
-#endif
- shape->fow=fowler(-shape->dy, shape->dx);
- dbg(lvl_debug,"fow=%d\n",shape->fow);
- if (! l)
- l=1;
- if (wi*lscale > 10000)
- lscale=10000/wi;
- dbg_assert(wi*lscale <= 10000);
- shape->l=l;
- shape->lscale=lscale;
- shape->wi=wi;
- draw_shape_update(shape);
-}
-
-static void
-draw_point(struct draw_polyline_shape *shape, struct point *src, struct point *dst, int pos)
-{
- if (pos) {
- dst->x=(src->x*2-shape->dyw)/2;
- dst->y=(src->y*2-shape->dxw)/2;
- } else {
- dst->x=(src->x*2+shape->dyw)/2;
- dst->y=(src->y*2+shape->dxw)/2;
- }
-}
-
-static void
-draw_begin(struct draw_polyline_context *ctx, struct point *p)
-{
- struct draw_polyline_shape *shape=&ctx->shape;
- int i;
- for (i = 0 ; i <= 32 ; i+=shape->step) {
- ctx->res[ctx->ppos].x=(p->x*256+(shape->dyw*circle64[i].y)+(shape->dxw*circle64[i].x))/256;
- ctx->res[ctx->ppos].y=(p->y*256+(shape->dxw*circle64[i].y)-(shape->dyw*circle64[i].x))/256;
- ctx->ppos++;
- }
-}
-
-static int
-draw_middle(struct draw_polyline_context *ctx, struct point *p)
-{
- int delta=ctx->prev_shape.fow-ctx->shape.fow;
- if (delta > 512)
- delta-=1024;
- if (delta < -512)
- delta+=1024;
- if (delta < 16 && delta > -16) {
- draw_point(&ctx->shape, p, &ctx->res[ctx->npos--], 0);
- draw_point(&ctx->shape, p, &ctx->res[ctx->ppos++], 1);
- return 1;
- }
- dbg(lvl_debug,"delta %d\n",delta);
- if (delta > 0) {
- struct point pos,poso;
- draw_point(&ctx->shape, p, &pos, 1);
- draw_point(&ctx->prev_shape, p, &poso, 1);
- if (delta >= 256)
- return 0;
- if (intersection(&pos, ctx->shape.dx, ctx->shape.dy, &poso, ctx->prev_shape.dx, ctx->prev_shape.dy, &ctx->res[ctx->ppos])) {
- ctx->ppos++;
- draw_point(&ctx->prev_shape, p, &ctx->res[ctx->npos--], 0);
- draw_point(&ctx->shape, p, &ctx->res[ctx->npos--], 0);
- return 1;
- }
- } else {
- struct point neg,nego;
- draw_point(&ctx->shape, p, &neg, 0);
- draw_point(&ctx->prev_shape, p, &nego, 0);
- if (delta <= -256)
- return 0;
- if (intersection(&neg, ctx->shape.dx, ctx->shape.dy, &nego, ctx->prev_shape.dx, ctx->prev_shape.dy, &ctx->res[ctx->npos])) {
- ctx->npos--;
- draw_point(&ctx->prev_shape, p, &ctx->res[ctx->ppos++], 1);
- draw_point(&ctx->shape, p, &ctx->res[ctx->ppos++], 1);
- return 1;
- }
- }
- return 0;
-}
-
-static void
-draw_end(struct draw_polyline_context *ctx, struct point *p)
-{
- int i;
- struct draw_polyline_shape *shape=&ctx->prev_shape;
- for (i = 0 ; i <= 32 ; i+=shape->step) {
- ctx->res[ctx->npos].x=(p->x*256+(shape->dyw*circle64[i].y)-(shape->dxw*circle64[i].x))/256;
- ctx->res[ctx->npos].y=(p->y*256+(shape->dxw*circle64[i].y)+(shape->dyw*circle64[i].x))/256;
- ctx->npos--;
- }
-}
-
-static void
-draw_init_ctx(struct draw_polyline_context *ctx, int maxpoints)
-{
- ctx->prec=1;
- ctx->ppos=maxpoints/2;
- ctx->npos=maxpoints/2-1;
-}
-
-
-static void
-graphics_draw_polyline_as_polygon(struct graphics_priv *gra_priv, struct graphics_gc_priv *gc_priv, struct point *pnt, int count, int *width, void (*draw)(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count))
-{
- int maxpoints=200;
- struct draw_polyline_context ctx;
- int i=0;
- int max_circle_points=20;
- if (count < 2)
- return;
-#if 0
- dbg(lvl_debug,"count=%d\n",count);
- for (i = 0 ; i < count ; i++)
- dbg(lvl_debug,"%d,%d width %d\n",pnt[i].x,pnt[i].y,width[i]);
-#endif
- ctx.shape.l=0;
- ctx.shape.wi=0;
- ctx.res=g_alloca(sizeof(struct point)*maxpoints);
- i=0;
- draw_init_ctx(&ctx, maxpoints);
- draw_shape(&ctx, pnt, *width++);
- draw_begin(&ctx,&pnt[0]);
- for (i = 1 ; i < count -1 ; i++) {
- draw_shape(&ctx, pnt+i, *width++);
- if (ctx.npos < max_circle_points || ctx.ppos >= maxpoints-max_circle_points || !draw_middle(&ctx,&pnt[i])) {
- draw_end(&ctx,&pnt[i]);
- ctx.res[ctx.npos]=ctx.res[ctx.ppos-1];
- draw(gra_priv, gc_priv, ctx.res+ctx.npos, ctx.ppos-ctx.npos);
- draw_init_ctx(&ctx, maxpoints);
- draw_begin(&ctx,&pnt[i]);
- }
- }
- draw_shape(&ctx, &pnt[count-2], *width++);
- ctx.prev_shape=ctx.shape;
- draw_end(&ctx,&pnt[count-1]);
- ctx.res[ctx.npos]=ctx.res[ctx.ppos-1];
- draw(gra_priv, gc_priv, ctx.res+ctx.npos, ctx.ppos-ctx.npos);
-}
-
-
-struct wpoint {
- int x,y,w;
-};
-
-enum relative_pos {
- INSIDE = 0,
- LEFT_OF = 1,
- RIGHT_OF = 2,
- ABOVE = 4,
- BELOW = 8
-};
-
-static int
-relative_pos(struct wpoint *p, struct point_rect *r)
-{
- int relative_pos=INSIDE;
- if (p->x < r->lu.x)
- relative_pos=LEFT_OF;
- else if (p->x > r->rl.x)
- relative_pos=RIGHT_OF;
- if (p->y < r->lu.y)
- relative_pos |=ABOVE;
- else if (p->y > r->rl.y)
- relative_pos |=BELOW;
- return relative_pos;
-}
-
-static void
-clip_line_endoint_to_rect_edge(struct wpoint *p, int rel_pos, int dx, int dy, int dw, struct point_rect *clip_rect)
-{
- // We must cast to float to avoid integer
- // overflow (i.e. undefined behaviour) at high
- // zoom levels.
- if (rel_pos & LEFT_OF) {
- p->y+=(((float)clip_rect->lu.x)-p->x)*dy/dx;
- p->w+=(((float)clip_rect->lu.x)-p->x)*dw/dx;
- p->x=clip_rect->lu.x;
- } else if (rel_pos & RIGHT_OF) {
- p->y+=(((float)clip_rect->rl.x)-p->x)*dy/dx;
- p->w+=(((float)clip_rect->rl.x)-p->x)*dw/dx;
- p->x=clip_rect->rl.x;
- } else if (rel_pos & ABOVE) {
- p->x+=(((float)clip_rect->lu.y)-p->y)*dx/dy;
- p->w+=(((float)clip_rect->lu.y)-p->y)*dw/dy;
- p->y=clip_rect->lu.y;
- } else if (rel_pos & BELOW) {
- p->x+=(((float)clip_rect->rl.y)-p->y)*dx/dy;
- p->w+=(((float)clip_rect->rl.y)-p->y)*dw/dy;
- p->y=clip_rect->rl.y;
- }
-}
-
-enum clip_result {
- CLIPRES_INVISIBLE = 0,
- CLIPRES_VISIBLE = 1,
- CLIPRES_START_CLIPPED = 2,
- CLIPRES_END_CLIPPED = 4,
-};
-
-static int
-clip_line(struct wpoint *p1, struct wpoint *p2, struct point_rect *clip_rect)
-{
- int rel_pos1,rel_pos2;
- int ret = CLIPRES_VISIBLE;
- int dx,dy,dw;
- rel_pos1=relative_pos(p1, clip_rect);
- if (rel_pos1!=INSIDE)
- ret |= CLIPRES_START_CLIPPED;
- rel_pos2=relative_pos(p2, clip_rect);
- if (rel_pos2!=INSIDE)
- ret |= CLIPRES_END_CLIPPED;
- dx=p2->x-p1->x;
- dy=p2->y-p1->y;
- dw=p2->w-p1->w;
- while ((rel_pos1!=INSIDE) || (rel_pos2!=INSIDE)) {
- if (rel_pos1 & rel_pos2)
- return CLIPRES_INVISIBLE;
- clip_line_endoint_to_rect_edge(p1, rel_pos1, dx, dy, dw, clip_rect);
- rel_pos1=relative_pos(p1, clip_rect);
- if (rel_pos1 & rel_pos2)
- return CLIPRES_INVISIBLE;
- clip_line_endoint_to_rect_edge(p2, rel_pos2, dx, dy, dw, clip_rect);
- rel_pos2=relative_pos(p2, clip_rect);
- }
- return ret;
-}
-
-static void
-graphics_draw_polyline_clipped(struct graphics *gra, struct graphics_gc *gc, struct point *pa, int count, int *width, int poly)
-{
- struct point *points_to_draw=g_alloca(sizeof(struct point)*(count+1));
- int *w=g_alloca(sizeof(int)*(count+1));
- struct wpoint segment_start,segment_end;
- int i,points_to_draw_cnt=0;
- int clip_result;
- int r_width, r_height;
- struct point_rect r=gra->r;
-
- r_width=r.rl.x-r.lu.x;
- r_height=r.rl.y-r.lu.y;
-
- // Expand clipping rect by 1/3 so wide, slanted lines do not
- // partially end before screen border.
- // Ideally we would expand by the line width here, but in 3D
- // mode the width is variable and needs clipping itself, so that
- // would get complicated. Anyway, 1/3 of screen size should be
- // enough...
- r.lu.x-=r_width/3;
- r.lu.y-=r_height/3;
- r.rl.x+=r_width/3;
- r.rl.y+=r_height/3;
- // Iterate over line segments, push them into points_to_draw
- // until we reach a completely invisible segment...
- for (i = 0 ; i < count ; i++) {
- if (i) {
- segment_start.x=pa[i-1].x;
- segment_start.y=pa[i-1].y;
- segment_start.w=width[(i-1)];
- segment_end.x=pa[i].x;
- segment_end.y=pa[i].y;
- segment_end.w=width[i];
- dbg(lvl_debug, "Segment: [%d, %d] - [%d, %d]...\n", segment_start.x, segment_start.y, segment_end.x, segment_end.y);
- clip_result=clip_line(&segment_start, &segment_end, &r);
- if (clip_result != CLIPRES_INVISIBLE) {
- dbg(lvl_debug, "....clipped to [%d, %d] - [%d, %d]\n", segment_start.x, segment_start.y, segment_end.x, segment_end.y);
- if ((i == 1) || (clip_result & CLIPRES_START_CLIPPED)) {
- points_to_draw[points_to_draw_cnt].x=segment_start.x;
- points_to_draw[points_to_draw_cnt].y=segment_start.y;
- w[points_to_draw_cnt]=segment_start.w;
- points_to_draw_cnt++;
- }
- points_to_draw[points_to_draw_cnt].x=segment_end.x;
- points_to_draw[points_to_draw_cnt].y=segment_end.y;
- w[points_to_draw_cnt]=segment_end.w;
- points_to_draw_cnt++;
- }
- if ((i == count-1) || (clip_result & CLIPRES_END_CLIPPED)) {
- // ... then draw the resulting polyline
- if (points_to_draw_cnt > 1) {
- if (poly) {
- graphics_draw_polyline_as_polygon(gra->priv, gc->priv, points_to_draw, points_to_draw_cnt, w, gra->meth.draw_polygon);
-#if 0
- gra->meth.draw_lines(gra->priv, gc->priv, points_to_draw, points_to_draw_cnt);
-#endif
- } else
- gra->meth.draw_lines(gra->priv, gc->priv, points_to_draw, points_to_draw_cnt);
- points_to_draw_cnt=0;
- }
- }
- }
- }
-}
-
-static int
-is_inside(struct point *p, struct point_rect *r, int edge)
-{
- switch(edge) {
- case 0:
- return p->x >= r->lu.x;
- case 1:
- return p->x <= r->rl.x;
- case 2:
- return p->y >= r->lu.y;
- case 3:
- return p->y <= r->rl.y;
- default:
- return 0;
- }
-}
-
-static void
-poly_intersection(struct point *p1, struct point *p2, struct point_rect *r, int edge, struct point *ret)
-{
- int dx=p2->x-p1->x;
- int dy=p2->y-p1->y;
- switch(edge) {
- case 0:
- ret->y=p1->y+((float)r->lu.x-p1->x)*dy/dx;
- ret->x=r->lu.x;
- break;
- case 1:
- ret->y=p1->y+((float)r->rl.x-p1->x)*dy/dx;
- ret->x=r->rl.x;
- break;
- case 2:
- ret->x=p1->x+((float)r->lu.y-p1->y)*dx/dy;
- ret->y=r->lu.y;
- break;
- case 3:
- ret->x=p1->x+((float)r->rl.y-p1->y)*dx/dy;
- ret->y=r->rl.y;
- break;
- }
-}
-
-static void
-graphics_draw_polygon_clipped(struct graphics *gra, struct graphics_gc *gc, struct point *pin, int count_in)
-{
- struct point_rect r=gra->r;
- struct point *pout,*p,*s,pi,*p1,*p2;
- int limit=10000;
- struct point *pa1=g_alloca(sizeof(struct point) * (count_in < limit ? count_in*8+1:0));
- struct point *pa2=g_alloca(sizeof(struct point) * (count_in < limit ? count_in*8+1:0));
- int count_out,edge=3;
- int i;
-#if 0
- r.lu.x+=20;
- r.lu.y+=20;
- r.rl.x-=20;
- r.rl.y-=20;
-#endif
- if (count_in < limit) {
- p1=pa1;
- p2=pa2;
- } else {
- p1=g_new(struct point, count_in*8+1);
- p2=g_new(struct point, count_in*8+1);
- }
-
- pout=p1;
- for (edge = 0 ; edge < 4 ; edge++) {
- p=pin;
- s=pin+count_in-1;
- count_out=0;
- for (i = 0 ; i < count_in ; i++) {
- if (is_inside(p, &r, edge)) {
- if (! is_inside(s, &r, edge)) {
- poly_intersection(s,p,&r,edge,&pi);
- pout[count_out++]=pi;
- }
- pout[count_out++]=*p;
- } else {
- if (is_inside(s, &r, edge)) {
- poly_intersection(p,s,&r,edge,&pi);
- pout[count_out++]=pi;
- }
- }
- s=p;
- p++;
- }
- count_in=count_out;
- if (pin == p1) {
- pin=p2;
- pout=p1;
- } else {
- pin=p1;
- pout=p2;
- }
- }
- gra->meth.draw_polygon(gra->priv, gc->priv, pin, count_in);
- if (count_in >= limit) {
- g_free(p1);
- g_free(p2);
- }
-}
-
-
-static void
-display_context_free(struct display_context *dc)
-{
- if (dc->gc)
- graphics_gc_destroy(dc->gc);
- if (dc->gc_background)
- graphics_gc_destroy(dc->gc_background);
- if (dc->img)
- graphics_image_free(dc->gra, dc->img);
- dc->gc=NULL;
- dc->gc_background=NULL;
- dc->img=NULL;
-}
-
-static struct graphics_font *
-get_font(struct graphics *gra, int size)
-{
- if (size > 64)
- size=64;
- if (size >= gra->font_len) {
- gra->font=g_renew(struct graphics_font *, gra->font, size+1);
- while (gra->font_len <= size)
- gra->font[gra->font_len++]=NULL;
- }
- if (! gra->font[size])
- gra->font[size]=graphics_font_new(gra, size*gra->font_size, 0);
- return gra->font[size];
-}
-
-void graphics_draw_text_std(struct graphics *this_, int text_size, char *text, struct point *p)
-{
- struct graphics_font *font=get_font(this_, text_size);
- struct point bbox[4];
- int i;
-
- graphics_get_text_bbox(this_, font, text, 0x10000, 0, bbox, 0);
- for (i = 0 ; i < 4 ; i++) {
- bbox[i].x+=p->x;
- bbox[i].y+=p->y;
- }
- graphics_draw_rectangle(this_, this_->gc[2], &bbox[1], bbox[2].x-bbox[0].x, bbox[0].y-bbox[1].y+5);
- graphics_draw_text(this_, this_->gc[1], this_->gc[2], font, text, p, 0x10000, 0);
-}
-
-char *
-graphics_icon_path(const char *icon)
-{
- static char *navit_sharedir;
- char *ret=NULL;
- struct file_wordexp *wordexp=NULL;
- dbg(lvl_debug,"enter %s\n",icon);
- if (strchr(icon, '$')) {
- wordexp=file_wordexp_new(icon);
- if (file_wordexp_get_count(wordexp))
- icon=file_wordexp_get_array(wordexp)[0];
- }
- if (strchr(icon,'/'))
- ret=g_strdup(icon);
- else {
-#ifdef HAVE_API_ANDROID
- // get resources for the correct screen density
- //
- // this part not needed, android unpacks only the correct version into res/drawable dir!
- // dbg(lvl_debug,"android icon_path %s\n",icon);
- // static char *android_density;
- // android_density = getenv("ANDROID_DENSITY");
- // ret=g_strdup_printf("res/drawable-%s/%s",android_density ,icon);
- ret=g_strdup_printf("res/drawable/%s" ,icon);
-#else
- if (! navit_sharedir)
- navit_sharedir = getenv("NAVIT_SHAREDIR");
- ret=g_strdup_printf("%s/icons/%s", navit_sharedir, icon);
-#endif
- }
- if (wordexp)
- file_wordexp_destroy(wordexp);
- return ret;
-}
-
-static int
-limit_count(struct coord *c, int count)
-{
- int i;
- for (i = 1 ; i < count ; i++) {
- if (c[i].x == c[0].x && c[i].y == c[0].y)
- return i+1;
- }
- return count;
-}
-
-
-static void
-displayitem_draw(struct displayitem *di, void *dummy, struct display_context *dc)
-{
- int *width=g_alloca(sizeof(int)*dc->maxlen);
- struct point *pa=g_alloca(sizeof(struct point)*dc->maxlen);
- struct graphics *gra=dc->gra;
- struct graphics_gc *gc=dc->gc;
- struct element *e=dc->e;
- struct graphics_image *img=dc->img;
- struct point p;
- char *path;
-
- while (di) {
- int i,count=di->count,mindist=dc->mindist;
-
- di->z_order=++(gra->current_z_order);
-
- if (! gc) {
- gc=graphics_gc_new(gra);
- graphics_gc_set_foreground(gc, &e->color);
- dc->gc=gc;
- }
- if (item_type_is_area(dc->type) && (dc->e->type == element_polyline || dc->e->type == element_text))
- count=limit_count(di->c, count);
- if (dc->type == type_poly_water_tiled)
- mindist=0;
-#if 0
- if (dc->e->type == element_polygon) {
- int max=1000;
- int offset=5600;
- c+=offset;
- count-=offset;
- if (count < 0)
- count=0;
- if (count > max)
- count=max;
- }
-#endif
- if (dc->e->type == element_polyline)
- count=transform(dc->trans, dc->pro, di->c, pa, count, mindist, e->u.polyline.width, width);
- else
- count=transform(dc->trans, dc->pro, di->c, pa, count, mindist, 0, NULL);
- switch (e->type) {
- case element_polygon:
- graphics_draw_polygon_clipped(gra, gc, pa, count);
- break;
- case element_polyline:
- {
- gc->meth.gc_set_linewidth(gc->priv, 1);
- if (e->u.polyline.width > 0 && e->u.polyline.dash_num > 0)
- graphics_gc_set_dashes(gc, e->u.polyline.width,
- e->u.polyline.offset,
- e->u.polyline.dash_table,
- e->u.polyline.dash_num);
- for (i = 0 ; i < count ; i++) {
- if (width[i] < 2)
- width[i]=2;
- }
- graphics_draw_polyline_clipped(gra, gc, pa, count, width, e->u.polyline.width > 1);
- }
- break;
- case element_circle:
- if (count) {
- if (e->u.circle.width > 1)
- gc->meth.gc_set_linewidth(gc->priv, e->u.polyline.width);
- graphics_draw_circle(gra, gc, pa, e->u.circle.radius);
- if (di->label && e->text_size) {
- struct graphics_font *font=get_font(gra, e->text_size);
- struct graphics_gc *gc_background=dc->gc_background;
- if (! gc_background && e->u.circle.background_color.a) {
- gc_background=graphics_gc_new(gra);
- graphics_gc_set_foreground(gc_background, &e->u.circle.background_color);
- dc->gc_background=gc_background;
- }
- p.x=pa[0].x+3;
- p.y=pa[0].y+10;
- if (font)
- gra->meth.draw_text(gra->priv, gc->priv, gc_background?gc_background->priv:NULL, font->priv, di->label, &p, 0x10000, 0);
- else
- dbg(lvl_error,"Failed to get font with size %d\n",e->text_size);
- }
- }
- break;
- case element_text:
- if (count && di->label) {
- struct graphics_font *font=get_font(gra, e->text_size);
- struct graphics_gc *gc_background=dc->gc_background;
- if (! gc_background && e->u.text.background_color.a) {
- gc_background=graphics_gc_new(gra);
- graphics_gc_set_foreground(gc_background, &e->u.text.background_color);
- dc->gc_background=gc_background;
- }
- if (font)
- label_line(gra, gc, gc_background, font, pa, count, di->label);
- else
- dbg(lvl_error,"Failed to get font with size %d\n",e->text_size);
- }
- break;
- case element_icon:
- if (count) {
- if (!img || item_is_custom_poi(di->item)) {
- if (item_is_custom_poi(di->item)) {
- char *icon;
- char *src;
- if (img)
- graphics_image_free(dc->gra, img);
- src=e->u.icon.src;
- if (!src || !src[0])
- src="%s";
- icon=g_strdup_printf(src,di->label+strlen(di->label)+1);
- path=graphics_icon_path(icon);
- g_free(icon);
- } else
- path=graphics_icon_path(e->u.icon.src);
- img=graphics_image_new_scaled_rotated(gra, path, e->u.icon.width, e->u.icon.height, e->u.icon.rotation);
- if (img)
- dc->img=img;
- else
- dbg(lvl_debug,"failed to load icon '%s'\n", path);
- g_free(path);
- }
- if (img) {
- if (e->u.icon.x != -1 || e->u.icon.y != -1) {
- p.x=pa[0].x - e->u.icon.x;
- p.y=pa[0].y - e->u.icon.y;
- } else {
- p.x=pa[0].x - img->hot.x;
- p.y=pa[0].y - img->hot.y;
- }
- gra->meth.draw_image(gra->priv, gra->gc[0]->priv, &p, img->priv);
- }
- }
- break;
- case element_image:
- dbg(lvl_debug,"image: '%s'\n", di->label);
- if (gra->meth.draw_image_warp) {
- img=graphics_image_new_scaled_rotated(gra, di->label, IMAGE_W_H_UNSET, IMAGE_W_H_UNSET, 0);
- if (img)
- gra->meth.draw_image_warp(gra->priv, gra->gc[0]->priv, pa, count, img->priv);
- } else
- dbg(lvl_error,"draw_image_warp not supported by graphics driver drawing '%s'\n", di->label);
- break;
- case element_arrows:
- display_draw_arrows(gra,gc,pa,count);
- break;
- default:
- dbg(lvl_error, "Unhandled element type %d\n", e->type);
-
- }
- di=di->next;
- }
-}
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-static void xdisplay_draw_elements(struct graphics *gra, struct displaylist *display_list, struct itemgra *itm)
-{
- struct element *e;
- GList *es,*types;
- struct display_context *dc=&display_list->dc;
- struct hash_entry *entry;
-
- es=itm->elements;
- while (es) {
- e=es->data;
- dc->e=e;
- types=itm->type;
- while (types) {
- dc->type=GPOINTER_TO_INT(types->data);
- entry=get_hash_entry(display_list, dc->type);
- if (entry && entry->di) {
- displayitem_draw(entry->di, NULL, dc);
- display_context_free(dc);
- }
- types=g_list_next(types);
- }
- es=g_list_next(es);
- }
-}
-
-void
-graphics_draw_itemgra(struct graphics *gra, struct itemgra *itm, struct transformation *t, char *label)
-{
- GList *es;
- struct display_context dc;
- int max_coord=32;
- char *buffer=g_alloca(sizeof(struct displayitem)+max_coord*sizeof(struct coord));
- struct displayitem *di=(struct displayitem *)buffer;
- es=itm->elements;
- di->item.type=type_none;
- di->item.id_hi=0;
- di->item.id_lo=0;
- di->item.map=NULL;
- di->z_order=0;
- di->label=label;
- dc.gra=gra;
- dc.gc=NULL;
- dc.gc_background=NULL;
- dc.img=NULL;
- dc.pro=projection_screen;
- dc.mindist=0;
- dc.trans=t;
- dc.type=type_none;
- dc.maxlen=max_coord;
- while (es) {
- struct element *e=es->data;
- if (e->coord_count) {
- if (e->coord_count > max_coord) {
- dbg(lvl_error,"maximum number of coords reached: %d > %d\n",e->coord_count,max_coord);
- di->count=max_coord;
- } else
- di->count=e->coord_count;
- memcpy(di->c, e->coord, di->count*sizeof(struct coord));
- } else {
- di->c[0].x=0;
- di->c[0].y=0;
- di->count=1;
- }
- dc.e=e;
- di->next=NULL;
- displayitem_draw(di, NULL, &dc);
- display_context_free(&dc);
- es=g_list_next(es);
- }
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-static void xdisplay_draw_layer(struct displaylist *display_list, struct graphics *gra, struct layer *lay, int order)
-{
- GList *itms;
- struct itemgra *itm;
-
- itms=lay->itemgras;
- while (itms) {
- itm=itms->data;
- if (order >= itm->order.min && order <= itm->order.max)
- xdisplay_draw_elements(gra, display_list, itm);
- itms=g_list_next(itms);
- }
-}
-
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-static void xdisplay_draw(struct displaylist *display_list, struct graphics *gra, struct layout *l, int order)
-{
- GList *lays;
- struct layer *lay;
-
- gra->current_z_order=0;
- lays=l->layers;
- while (lays) {
- lay=lays->data;
- if (lay->active) {
- if (lay->ref)
- lay=lay->ref;
- xdisplay_draw_layer(display_list, gra, lay, order);
- }
- lays=g_list_next(lays);
- }
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-extern void *route_selection;
-
-static void
-displaylist_update_layers(struct displaylist *displaylist, GList *layers, int order)
-{
- while (layers) {
- struct layer *layer=layers->data;
- GList *itemgras;
- if (layer->ref)
- layer=layer->ref;
- itemgras=layer->itemgras;
- while (itemgras) {
- struct itemgra *itemgra=itemgras->data;
- GList *types=itemgra->type;
- if (itemgra->order.min <= order && itemgra->order.max >= order) {
- while (types) {
- enum item_type type=(enum item_type) types->data;
- set_hash_entry(displaylist, type);
- types=g_list_next(types);
- }
- }
- itemgras=g_list_next(itemgras);
- }
- layers=g_list_next(layers);
- }
-}
-
-static void
-displaylist_update_hash(struct displaylist *displaylist)
-{
- displaylist->max_offset=0;
- clear_hash(displaylist);
- displaylist_update_layers(displaylist, displaylist->layout->layers, displaylist->order);
- dbg(lvl_debug,"max offset %d\n",displaylist->max_offset);
-}
-
-
-/**
- * @brief Returns selection structure based on displaylist transform, projection and order.
- * Use this function to get map selection if you are going to fetch complete item data from the map based on displayitem reference.
- * @param displaylist
- * @returns Pointer to selection structure
- */
-struct map_selection *displaylist_get_selection(struct displaylist *displaylist)
-{
- return transform_get_selection(displaylist->dc.trans, displaylist->dc.pro, displaylist->order);
-}
-
-/**
- * @brief Compare displayitems based on their zorder values.
- * Use with g_list_insert_sorted to sort less shaded items to be before more shaded ones in the result list.
- */
-static int displaylist_cmp_zorder(const struct displayitem *a, const struct displayitem *b)
-{
- if(a->z_order>b->z_order)
- return -1;
- if(a->z_order<b->z_order)
- return 1;
- return 0;
-}
-
-/**
- * @brief Returns list of displayitems clicked at given coordinates. The deeper item is in current layout, the deeper it will be in the list.
- * @param displaylist
- * @param p clicked point
- * @param radius radius of clicked area
- * @returns GList of displayitems
- */
-GList *displaylist_get_clicked_list(struct displaylist *displaylist, struct point *p, int radius)
-{
- GList *l=NULL;
- struct displayitem *di;
- struct displaylist_handle *dlh=graphics_displaylist_open(displaylist);
-
- while ((di=graphics_displaylist_next(dlh))) {
- if (di->z_order>0 && graphics_displayitem_within_dist(displaylist, di, p,radius))
- l=g_list_insert_sorted(l,(gpointer) di, (GCompareFunc) displaylist_cmp_zorder);
- }
-
- graphics_displaylist_close(dlh);
-
- return l;
-}
-
-
-
-static void
-do_draw(struct displaylist *displaylist, int cancel, int flags)
-{
- struct item *item;
- int count,max=displaylist->dc.maxlen,workload=0;
- struct coord *ca=g_alloca(sizeof(struct coord)*max);
- struct attr attr,attr2;
- enum projection pro;
-
- if (displaylist->order != displaylist->order_hashed || displaylist->layout != displaylist->layout_hashed) {
- displaylist_update_hash(displaylist);
- displaylist->order_hashed=displaylist->order;
- displaylist->layout_hashed=displaylist->layout;
- }
- profile(0,NULL);
- pro=transform_get_projection(displaylist->dc.trans);
- while (!cancel) {
- if (!displaylist->msh)
- displaylist->msh=mapset_open(displaylist->ms);
- if (!displaylist->m) {
- displaylist->m=mapset_next(displaylist->msh, 1);
- if (!displaylist->m) {
- mapset_close(displaylist->msh);
- displaylist->msh=NULL;
- break;
- }
- displaylist->dc.pro=map_projection(displaylist->m);
- displaylist->conv=map_requires_conversion(displaylist->m);
- if (route_selection)
- displaylist->sel=route_selection;
- else
- displaylist->sel=displaylist_get_selection(displaylist);
- displaylist->mr=map_rect_new(displaylist->m, displaylist->sel);
- }
- if (displaylist->mr) {
- while ((item=map_rect_get_item(displaylist->mr))) {
- int label_count=0;
- char *labels[2];
- struct hash_entry *entry;
- if (item == &busy_item) {
- if (displaylist->workload)
- return;
- else
- continue;
- }
- entry=get_hash_entry(displaylist, item->type);
- if (!entry)
- continue;
- count=item_coord_get_within_selection(item, ca, item->type < type_line ? 1: max, displaylist->sel);
- if (! count)
- continue;
-#if 0
- dbg(lvl_debug,"%s 0x%x 0x%x\n",item_to_name(item->type), item->id_hi, item->id_lo);
-#endif
- if (displaylist->dc.pro != pro)
- transform_from_to_count(ca, displaylist->dc.pro, ca, pro, count);
- if (count == max) {
- dbg(lvl_error,"point count overflow %d for %s "ITEM_ID_FMT"\n", count,item_to_name(item->type),ITEM_ID_ARGS(*item));
- displaylist->dc.maxlen=max*2;
- }
- if (item_is_custom_poi(*item)) {
- if (item_attr_get(item, attr_icon_src, &attr2))
- labels[1]=map_convert_string(displaylist->m, attr2.u.str);
- else
- labels[1]=NULL;
- label_count=2;
- } else {
- labels[1]=NULL;
- label_count=0;
- }
- if (item_attr_get(item, attr_label, &attr)) {
- labels[0]=attr.u.str;
- if (!label_count)
- label_count=2;
- } else
- labels[0]=NULL;
- if (displaylist->conv && label_count) {
- labels[0]=map_convert_string(displaylist->m, labels[0]);
- display_add(entry, item, count, ca, labels, label_count);
- map_convert_free(labels[0]);
- } else
- display_add(entry, item, count, ca, labels, label_count);
- if (labels[1])
- map_convert_free(labels[1]);
- workload++;
- if (workload == displaylist->workload)
- return;
- }
- map_rect_destroy(displaylist->mr);
- }
- if (!route_selection)
- map_selection_destroy(displaylist->sel);
- displaylist->mr=NULL;
- displaylist->sel=NULL;
- displaylist->m=NULL;
- }
- profile(1,"process_selection\n");
- if (displaylist->idle_ev)
- event_remove_idle(displaylist->idle_ev);
- displaylist->idle_ev=NULL;
- callback_destroy(displaylist->idle_cb);
- displaylist->idle_cb=NULL;
- displaylist->busy=0;
- graphics_process_selection(displaylist->dc.gra, displaylist);
- profile(1,"draw\n");
- if (! cancel)
- graphics_displaylist_draw(displaylist->dc.gra, displaylist, displaylist->dc.trans, displaylist->layout, flags);
- map_rect_destroy(displaylist->mr);
- if (!route_selection)
- map_selection_destroy(displaylist->sel);
- mapset_close(displaylist->msh);
- displaylist->mr=NULL;
- displaylist->sel=NULL;
- displaylist->m=NULL;
- displaylist->msh=NULL;
- profile(1,"callback\n");
- callback_call_1(displaylist->cb, cancel);
- profile(0,"end\n");
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_displaylist_draw(struct graphics *gra, struct displaylist *displaylist, struct transformation *trans, struct layout *l, int flags)
-{
- int order=transform_get_order(trans);
- if(displaylist->dc.trans && displaylist->dc.trans!=trans)
- transform_destroy(displaylist->dc.trans);
- if(displaylist->dc.trans!=trans)
- displaylist->dc.trans=transform_dup(trans);
- displaylist->dc.gra=gra;
- displaylist->dc.mindist=flags&512?15:2;
- // FIXME find a better place to set the background color
- if (l) {
- graphics_gc_set_background(gra->gc[0], &l->color);
- graphics_gc_set_foreground(gra->gc[0], &l->color);
- g_free(gra->default_font);
- gra->default_font = g_strdup(l->font);
- }
- graphics_background_gc(gra, gra->gc[0]);
- if (flags & 1)
- callback_list_call_attr_0(gra->cbl, attr_predraw);
- gra->meth.draw_mode(gra->priv, draw_mode_begin);
- if (!(flags & 2))
- gra->meth.draw_rectangle(gra->priv, gra->gc[0]->priv, &gra->r.lu, gra->r.rl.x-gra->r.lu.x, gra->r.rl.y-gra->r.lu.y);
- if (l) {
- order+=l->order_delta;
- xdisplay_draw(displaylist, gra, l, order>0?order:0);
- }
- if (flags & 1)
- callback_list_call_attr_0(gra->cbl, attr_postdraw);
- if (!(flags & 4))
- gra->meth.draw_mode(gra->priv, draw_mode_end);
-}
-
-static void graphics_load_mapset(struct graphics *gra, struct displaylist *displaylist, struct mapset *mapset, struct transformation *trans, struct layout *l, int async, struct callback *cb, int flags)
-{
- int order=transform_get_order(trans);
-
- dbg(lvl_debug,"enter");
- if (displaylist->busy) {
- if (async == 1)
- return;
- do_draw(displaylist, 1, flags);
- }
- xdisplay_free(displaylist);
- dbg(lvl_debug,"order=%d\n", order);
-
- displaylist->dc.gra=gra;
- displaylist->ms=mapset;
- if(displaylist->dc.trans && displaylist->dc.trans!=trans)
- transform_destroy(displaylist->dc.trans);
- if(displaylist->dc.trans!=trans)
- displaylist->dc.trans=transform_dup(trans);
- displaylist->workload=async ? 100 : 0;
- displaylist->cb=cb;
- displaylist->seq++;
- if (l)
- order+=l->order_delta;
- displaylist->order=order>0?order:0;
- displaylist->busy=1;
- displaylist->layout=l;
- if (async) {
- if (! displaylist->idle_cb)
- displaylist->idle_cb=callback_new_3(callback_cast(do_draw), displaylist, 0, flags);
- displaylist->idle_ev=event_add_idle(50, displaylist->idle_cb);
- } else
- do_draw(displaylist, 0, flags);
-}
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_draw(struct graphics *gra, struct displaylist *displaylist, struct mapset *mapset, struct transformation *trans, struct layout *l, int async, struct callback *cb, int flags)
-{
- graphics_load_mapset(gra, displaylist, mapset, trans, l, async, cb, flags);
-}
-
-int
-graphics_draw_cancel(struct graphics *gra, struct displaylist *displaylist)
-{
- if (!displaylist->busy)
- return 0;
- do_draw(displaylist, 1, 0);
- return 1;
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-struct displaylist_handle {
- struct displaylist *dl;
- struct displayitem *di;
- int hashidx;
-};
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-struct displaylist_handle * graphics_displaylist_open(struct displaylist *displaylist)
-{
- struct displaylist_handle *ret;
-
- ret=g_new0(struct displaylist_handle, 1);
- ret->dl=displaylist;
-
- return ret;
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-struct displayitem * graphics_displaylist_next(struct displaylist_handle *dlh)
-{
- struct displayitem *ret;
- if (!dlh)
- return NULL;
- for (;;) {
- if (dlh->di) {
- ret=dlh->di;
- dlh->di=ret->next;
- break;
- }
- if (dlh->hashidx == HASH_SIZE) {
- ret=NULL;
- break;
- }
- if (dlh->dl->hash_entries[dlh->hashidx].type)
- dlh->di=dlh->dl->hash_entries[dlh->hashidx].di;
- dlh->hashidx++;
- }
- return ret;
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-void graphics_displaylist_close(struct displaylist_handle *dlh)
-{
- g_free(dlh);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-struct displaylist * graphics_displaylist_new(void)
-{
- struct displaylist *ret=g_new0(struct displaylist, 1);
-
- ret->dc.maxlen=16384;
-
- return ret;
-}
-
-void graphics_displaylist_destroy(struct displaylist *displaylist)
-{
- if(displaylist->dc.trans)
- transform_destroy(displaylist->dc.trans);
- g_free(displaylist);
-
-}
-
-
-/**
- * Get the map item which given displayitem is based on.
- * NOTE: returned structure doesn't contain any attributes or coordinates. type, map, idhi and idlow seem to be the only useable members.
- * @param di pointer to displayitem structure
- * @returns Pointer to struct item
- * @author Martin Schaller (04/2008)
-*/
-struct item * graphics_displayitem_get_item(struct displayitem *di)
-{
- return &di->item;
-}
-
-/**
- * Get the number of this item as it was last displayed on the screen, dependent of current layout. Items with lower numbers
- * are shaded by items with higher ones when they overlap. Zero means item was not displayed at all. If the item is displayed twice, its topmost
- * occurence is used.
- * @param di pointer to displayitem structure
- * @returns z-order of current item.
-*/
-int graphics_displayitem_get_z_order(struct displayitem *di)
-{
- return di->z_order;
-}
-
-
-int
-graphics_displayitem_get_coord_count(struct displayitem *di)
-{
- return di->count;
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-char * graphics_displayitem_get_label(struct displayitem *di)
-{
- return di->label;
-}
-
-int
-graphics_displayitem_get_displayed(struct displayitem *di)
-{
- return 1;
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-static int within_dist_point(struct point *p0, struct point *p1, int dist)
-{
- if (p0->x == 32767 || p0->y == 32767 || p1->x == 32767 || p1->y == 32767)
- return 0;
- if (p0->x == -32768 || p0->y == -32768 || p1->x == -32768 || p1->y == -32768)
- return 0;
- if ((p0->x-p1->x)*(p0->x-p1->x) + (p0->y-p1->y)*(p0->y-p1->y) <= dist*dist) {
- return 1;
- }
- return 0;
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-static int within_dist_line(struct point *p, struct point *line_p0, struct point *line_p1, int dist)
-{
- int vx,vy,wx,wy;
- int c1,c2;
- struct point line_p;
-
- if (line_p0->x < line_p1->x) {
- if (p->x < line_p0->x - dist)
- return 0;
- if (p->x > line_p1->x + dist)
- return 0;
- } else {
- if (p->x < line_p1->x - dist)
- return 0;
- if (p->x > line_p0->x + dist)
- return 0;
- }
- if (line_p0->y < line_p1->y) {
- if (p->y < line_p0->y - dist)
- return 0;
- if (p->y > line_p1->y + dist)
- return 0;
- } else {
- if (p->y < line_p1->y - dist)
- return 0;
- if (p->y > line_p0->y + dist)
- return 0;
- }
-
- vx=line_p1->x-line_p0->x;
- vy=line_p1->y-line_p0->y;
- wx=p->x-line_p0->x;
- wy=p->y-line_p0->y;
-
- c1=vx*wx+vy*wy;
- if ( c1 <= 0 )
- return within_dist_point(p, line_p0, dist);
- c2=vx*vx+vy*vy;
- if ( c2 <= c1 )
- return within_dist_point(p, line_p1, dist);
-
- line_p.x=line_p0->x+vx*c1/c2;
- line_p.y=line_p0->y+vy*c1/c2;
- return within_dist_point(p, &line_p, dist);
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-static int within_dist_polyline(struct point *p, struct point *line_pnt, int count, int dist, int close)
-{
- int i;
- for (i = 0 ; i < count-1 ; i++) {
- if (within_dist_line(p,line_pnt+i,line_pnt+i+1,dist)) {
- return 1;
- }
- }
- if (close)
- return (within_dist_line(p,line_pnt,line_pnt+count-1,dist));
- return 0;
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-static int within_dist_polygon(struct point *p, struct point *poly_pnt, int count, int dist)
-{
- int i, j, c = 0;
- for (i = 0, j = count-1; i < count; j = i++) {
- if ((((poly_pnt[i].y <= p->y) && ( p->y < poly_pnt[j].y )) ||
- ((poly_pnt[j].y <= p->y) && ( p->y < poly_pnt[i].y))) &&
- (p->x < (poly_pnt[j].x - poly_pnt[i].x) * (p->y - poly_pnt[i].y) / (poly_pnt[j].y - poly_pnt[i].y) + poly_pnt[i].x))
- c = !c;
- }
- if (! c)
- return within_dist_polyline(p, poly_pnt, count, dist, 1);
- return c;
-}
-
-/**
- * FIXME
- * @param <>
- * @returns <>
- * @author Martin Schaller (04/2008)
-*/
-int graphics_displayitem_within_dist(struct displaylist *displaylist, struct displayitem *di, struct point *p, int dist)
-{
- struct point *pa=g_alloca(sizeof(struct point)*displaylist->dc.maxlen);
- int count;
-
- count=transform(displaylist->dc.trans, displaylist->dc.pro, di->c, pa, di->count, 0, 0, NULL);
-
- if (di->item.type < type_line) {
- return within_dist_point(p, &pa[0], dist);
- }
- if (di->item.type < type_area) {
- return within_dist_polyline(p, pa, count, dist, 0);
- }
- return within_dist_polygon(p, pa, count, dist);
-}
-
-
-static void
-graphics_process_selection_item(struct displaylist *dl, struct item *item)
-{
-#if 0 /* FIXME */
- struct displayitem di,*di_res;
- GHashTable *h;
- int count,max=dl->dc.maxlen;
- struct coord ca[max];
- struct attr attr;
- struct map_rect *mr;
-
- di.item=*item;
- di.label=NULL;
- di.count=0;
- h=g_hash_table_lookup(dl->dl, GINT_TO_POINTER(di.item.type));
- if (h) {
- di_res=g_hash_table_lookup(h, &di);
- if (di_res) {
- di.item.type=(enum item_type)item->priv_data;
- display_add(dl, &di.item, di_res->count, di_res->c, NULL, 0);
- return;
- }
- }
- mr=map_rect_new(item->map, NULL);
- item=map_rect_get_item_byid(mr, item->id_hi, item->id_lo);
- count=item_coord_get(item, ca, item->type < type_line ? 1: max);
- if (!item_attr_get(item, attr_label, &attr))
- attr.u.str=NULL;
- if (dl->conv && attr.u.str && attr.u.str[0]) {
- char *str=map_convert_string(item->map, attr.u.str);
- display_add(dl, item, count, ca, &str, 1);
- map_convert_free(str);
- } else
- display_add(dl, item, count, ca, &attr.u.str, 1);
- map_rect_destroy(mr);
-#endif
-}
-
-void
-graphics_add_selection(struct graphics *gra, struct item *item, enum item_type type, struct displaylist *dl)
-{
- struct item *item_dup=g_new(struct item, 1);
- *item_dup=*item;
- item_dup->priv_data=(void *)type;
- gra->selection=g_list_append(gra->selection, item_dup);
- if (dl)
- graphics_process_selection_item(dl, item_dup);
-}
-
-void
-graphics_remove_selection(struct graphics *gra, struct item *item, enum item_type type, struct displaylist *dl)
-{
- GList *curr;
- int found;
-
- for (;;) {
- curr=gra->selection;
- found=0;
- while (curr) {
- struct item *sitem=curr->data;
- if (item_is_equal(*item,*sitem)) {
-#if 0 /* FIXME */
- if (dl) {
- struct displayitem di;
- GHashTable *h;
- di.item=*sitem;
- di.label=NULL;
- di.count=0;
- di.item.type=type;
- h=g_hash_table_lookup(dl->dl, GINT_TO_POINTER(di.item.type));
- if (h)
- g_hash_table_remove(h, &di);
- }
-#endif
- g_free(sitem);
- gra->selection=g_list_remove(gra->selection, curr->data);
- found=1;
- break;
- }
- }
- if (!found)
- return;
- }
-}
-
-void
-graphics_clear_selection(struct graphics *gra, struct displaylist *dl)
-{
- while (gra->selection) {
- struct item *item=(struct item *)gra->selection->data;
- graphics_remove_selection(gra, item, (enum item_type)item->priv_data,dl);
- }
-}
-
-static void
-graphics_process_selection(struct graphics *gra, struct displaylist *dl)
-{
- GList *curr;
-
- curr=gra->selection;
- while (curr) {
- struct item *item=curr->data;
- graphics_process_selection_item(dl, item);
- curr=g_list_next(curr);
- }
-}
-
diff --git a/navit/graphics.h b/navit/graphics.h
deleted file mode 100644
index 2ffbd9ab0..000000000
--- a/navit/graphics.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/** @file
- *
- * @brief Exported functions / structures for the graphics subsystem.
- */
-
-#ifndef NAVIT_GRAPHICS_H
-#define NAVIT_GRAPHICS_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-struct attr;
-struct point;
-struct container;
-struct color;
-struct graphics;
-struct graphics_gc;
-struct graphics_font;
-struct graphics_image;
-struct transformation;
-struct display_list;
-struct mapset;
-
-/* This enum must be synchronized with the constants in NavitGraphics.java. */
-enum draw_mode_num {
- draw_mode_begin, draw_mode_end
-};
-
-struct graphics_priv;
-struct graphics_font_priv;
-struct graphics_image_priv;
-struct graphics_gc_priv;
-struct graphics_font_methods;
-struct graphics_gc_methods;
-struct graphics_image_methods;
-
-enum graphics_image_type {
- graphics_image_type_unknown=0,
-};
-
-struct graphics_image_buffer {
- char magic[8]; /* buffer:\0 */
- enum graphics_image_type type;
- void *start;
- int len;
-};
-
-struct graphics_keyboard_priv;
-
-/**
- * Describes an instance of the native on-screen keyboard or other input method.
- */
-struct graphics_keyboard {
- int w; /**< The width of the area obscured by the keyboard (-1 for full width) */
- int h; /**< The height of the area obscured by the keyboard (-1 for full height) */
- /* TODO mode is currently a copy of the respective value in the internal GUI and uses the same values.
- * This may need to be changed to something with globally available enum, possibly with revised values.
- * The Android implementation (the first to support a native on-screen keyboard) does not use this field
- * due to limitations of the platform. */
- int mode; /**< Mode flags for the keyboard */
- char *lang; /**< The preferred language for text input, may be {@code NULL}. */
- void *gui_priv; /**< Private data determined by the GUI. The GUI may store
- * a pointer to a data structure of its choice here. It is
- * the responsibility of the GUI to free the data structure
- * when it is no longer needed. The graphics plugin should
- * not access this member. */
- struct graphics_keyboard_priv *gra_priv; /**< Private data determined by the graphics plugin. The
- * graphics plugin is responsible for its management. If it
- * uses this member, it must free the associated data in
- * its {@code hide_native_keyboard} method. */
-};
-
-/** Magic value for unset/unspecified width/height. */
-#define IMAGE_W_H_UNSET (-1)
-
-/** @brief The functions to be implemented by graphics plugins.
- *
- * This struct lists the functions that Navit graphics plugins must implement.
- * The plugin must supply its list of function implementations from its plugin_init() function.
- * @see graphics_gtk_drawing_area#plugin_init()
- * @see graphics_android#plugin_init()
- */
-
-/**
- * Describes areas at each edge of the application window which may be obstructed by the system UI.
- *
- * This allows the map to use all available space, including areas which may be obscured by system UI
- * elements, while constraining other elements such as OSDs or UI controls to an area that is guaranteed
- * to be visible as long as Navit is in the foreground.
- */
-struct padding {
- int left;
- int top;
- int right;
- int bottom;
-};
-
-struct graphics_methods {
- void (*graphics_destroy)(struct graphics_priv *gr);
- void (*draw_mode)(struct graphics_priv *gr, enum draw_mode_num mode);
- void (*draw_lines)(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count);
- void (*draw_polygon)(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count);
- void (*draw_rectangle)(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h);
- void (*draw_circle)(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r);
- 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);
- void (*draw_image)(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img);
- void (*draw_image_warp)(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, int count, struct graphics_image_priv *img);
- void (*draw_drag)(struct graphics_priv *gr, struct point *p);
- struct graphics_font_priv *(*font_new)(struct graphics_priv *gr, struct graphics_font_methods *meth, char *font, int size, int flags);
- struct graphics_gc_priv *(*gc_new)(struct graphics_priv *gr, struct graphics_gc_methods *meth);
- void (*background_gc)(struct graphics_priv *gr, struct graphics_gc_priv *gc);
- struct graphics_priv *(*overlay_new)(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound);
- /** @brief Load an image from a file.
- *
- * @param gr graphics object
- * @param meth output parameter for graphics methods object
- * @param path file name/path of image to load
- * @param w In: width to scale image to, or IMAGE_W_H_UNSET for original width.
- * Out: Actual width of returned image.
- * @param h heigth; see w
- * @param hot output parameter for image hotspot
- * @param rotate angle to rotate the image, in 90 degree steps (not supported by all plugins).
- * @return pointer to allocated image, to be freed by image_free()
- * @see image_free()
- */
- 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);
- void *(*get_data)(struct graphics_priv *gr, const char *type);
- void (*image_free)(struct graphics_priv *gr, struct graphics_image_priv *priv);
- void (*get_text_bbox)(struct graphics_priv *gr, struct graphics_font_priv *font, char *text, int dx, int dy, struct point *ret, int estimate);
- void (*overlay_disable)(struct graphics_priv *gr, int disable);
- void (*overlay_resize)(struct graphics_priv *gr, struct point *p, int w, int h, int wraparound);
- int (*set_attr)(struct graphics_priv *gr, struct attr *attr);
- int (*show_native_keyboard)(struct graphics_keyboard *kbd);
- void (*hide_native_keyboard)(struct graphics_keyboard *kbd);
-};
-
-
-struct graphics_font_methods {
- void (*font_destroy)(struct graphics_font_priv *font);
-};
-
-struct graphics_font {
- struct graphics_font_priv *priv;
- struct graphics_font_methods meth;
-};
-
-struct graphics_gc_methods {
- void (*gc_destroy)(struct graphics_gc_priv *gc);
- void (*gc_set_linewidth)(struct graphics_gc_priv *gc, int width);
- void (*gc_set_dashes)(struct graphics_gc_priv *gc, int width, int offset, unsigned char dash_list[], int n);
- void (*gc_set_foreground)(struct graphics_gc_priv *gc, struct color *c);
- void (*gc_set_background)(struct graphics_gc_priv *gc, struct color *c);
-};
-
-/**
- * @brief graphics context
- * A graphics context encapsulates a set of drawing parameters, such as
- * linewidth and drawing color.
- */
-struct graphics_gc {
- struct graphics_gc_priv *priv;
- struct graphics_gc_methods meth;
- struct graphics *gra;
-};
-
-struct graphics_image_methods {
- void (*image_destroy)(struct graphics_image_priv *img);
-};
-
-struct graphics_image {
- struct graphics_image_priv *priv;
- struct graphics_image_methods meth;
- int width;
- int height;
- struct point hot;
-};
-
-struct graphics_data_image {
- void *data;
- int size;
-};
-
-/* prototypes */
-enum attr_type;
-enum draw_mode_num;
-enum item_type;
-struct attr;
-struct attr_iter;
-struct callback;
-struct color;
-struct displayitem;
-struct displaylist;
-struct displaylist_handle;
-struct graphics;
-struct graphics_font;
-struct graphics_gc;
-struct graphics_image;
-struct item;
-struct itemgra;
-struct layout;
-struct mapset;
-struct point;
-struct point_rect;
-struct transformation;
-int graphics_set_attr(struct graphics *gra, struct attr *attr);
-void graphics_set_rect(struct graphics *gra, struct point_rect *pr);
-struct graphics *graphics_new(struct attr *parent, struct attr **attrs);
-int graphics_get_attr(struct graphics *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-struct graphics *graphics_overlay_new(struct graphics *parent, struct point *p, int w, int h, int wraparound);
-void graphics_overlay_resize(struct graphics *this_, struct point *p, int w, int h, int wraparound);
-void graphics_init(struct graphics *this_);
-void *graphics_get_data(struct graphics *this_, const char *type);
-void graphics_add_callback(struct graphics *this_, struct callback *cb);
-void graphics_remove_callback(struct graphics *this_, struct callback *cb);
-struct graphics_font *graphics_font_new(struct graphics *gra, int size, int flags);
-struct graphics_font *graphics_named_font_new(struct graphics *gra, char *font, int size, int flags);
-void graphics_font_destroy(struct graphics_font *gra_font);
-void graphics_free(struct graphics *gra);
-void graphics_font_destroy_all(struct graphics *gra);
-struct graphics_gc *graphics_gc_new(struct graphics *gra);
-void graphics_gc_destroy(struct graphics_gc *gc);
-void graphics_gc_set_foreground(struct graphics_gc *gc, struct color *c);
-void graphics_gc_set_background(struct graphics_gc *gc, struct color *c);
-void graphics_gc_set_linewidth(struct graphics_gc *gc, int width);
-void graphics_gc_set_dashes(struct graphics_gc *gc, int width, int offset, unsigned char dash_list[], int n);
-struct graphics_image *graphics_image_new_scaled(struct graphics *gra, char *path, int w, int h);
-struct graphics_image *graphics_image_new_scaled_rotated(struct graphics *gra, char *path, int w, int h, int rotate);
-struct graphics_image *graphics_image_new(struct graphics *gra, char *path);
-void graphics_image_free(struct graphics *gra, struct graphics_image *img);
-void graphics_draw_mode(struct graphics *this_, enum draw_mode_num mode);
-void graphics_draw_lines(struct graphics *this_, struct graphics_gc *gc, struct point *p, int count);
-void graphics_draw_circle(struct graphics *this_, struct graphics_gc *gc, struct point *p, int r);
-void graphics_draw_rectangle(struct graphics *this_, struct graphics_gc *gc, struct point *p, int w, int h);
-void graphics_draw_rectangle_rounded(struct graphics *this_, struct graphics_gc *gc, struct point *plu, int w, int h, int r, int fill);
-void graphics_draw_text(struct graphics *this_, struct graphics_gc *gc1, struct graphics_gc *gc2, struct graphics_font *font, char *text, struct point *p, int dx, int dy);
-void graphics_get_text_bbox(struct graphics *this_, struct graphics_font *font, char *text, int dx, int dy, struct point *ret, int estimate);
-void graphics_overlay_disable(struct graphics *this_, int disable);
-int graphics_is_disabled(struct graphics *this_);
-void graphics_draw_image(struct graphics *this_, struct graphics_gc *gc, struct point *p, struct graphics_image *img);
-int graphics_draw_drag(struct graphics *this_, struct point *p);
-void graphics_background_gc(struct graphics *this_, struct graphics_gc *gc);
-void graphics_draw_text_std(struct graphics *this_, int text_size, char *text, struct point *p);
-char *graphics_icon_path(const char *icon);
-void graphics_draw_itemgra(struct graphics *gra, struct itemgra *itm, struct transformation *t, char *label);
-void graphics_displaylist_draw(struct graphics *gra, struct displaylist *displaylist, struct transformation *trans, struct layout *l, int flags);
-void graphics_draw(struct graphics *gra, struct displaylist *displaylist, struct mapset *mapset, struct transformation *trans, struct layout *l, int async, struct callback *cb, int flags);
-int graphics_draw_cancel(struct graphics *gra, struct displaylist *displaylist);
-struct displaylist_handle *graphics_displaylist_open(struct displaylist *displaylist);
-struct displayitem *graphics_displaylist_next(struct displaylist_handle *dlh);
-void graphics_displaylist_close(struct displaylist_handle *dlh);
-struct displaylist *graphics_displaylist_new(void);
-void graphics_displaylist_destroy(struct displaylist *displaylist);
-struct map_selection *displaylist_get_selection(struct displaylist *displaylist);
-GList *displaylist_get_clicked_list(struct displaylist *displaylist, struct point *p, int radius);
-struct item *graphics_displayitem_get_item(struct displayitem *di);
-int graphics_displayitem_get_coord_count(struct displayitem *di);
-char *graphics_displayitem_get_label(struct displayitem *di);
-int graphics_displayitem_get_displayed(struct displayitem *di);
-int graphics_displayitem_get_z_order(struct displayitem *di);
-int graphics_displayitem_within_dist(struct displaylist *displaylist, struct displayitem *di, struct point *p, int dist);
-void graphics_add_selection(struct graphics *gra, struct item *item, enum item_type type, struct displaylist *dl);
-void graphics_remove_selection(struct graphics *gra, struct item *item, enum item_type type, struct displaylist *dl);
-void graphics_clear_selection(struct graphics *gra, struct displaylist *dl);
-int graphics_show_native_keyboard (struct graphics *this_, struct graphics_keyboard *kbd);
-int graphics_hide_native_keyboard (struct graphics *this_, struct graphics_keyboard *kbd);
-
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/navit/graphics/CMakeLists.txt b/navit/graphics/CMakeLists.txt
deleted file mode 100644
index 004accfc8..000000000
--- a/navit/graphics/CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-# Create a library called "Hello" which includes the source file "hello.cxx".
-# The extension is already found. Any number of sources could be listed here.
-
-add_subdirectory (ezxml)
-
-if (HAVE_API_WIN32_BASE)
-add_subdirectory (glib)
-add_subdirectory (win32)
-endif (HAVE_API_WIN32_BASE)
-
-add_subdirectory (zlib)
diff --git a/navit/graphics/android/CMakeLists.txt b/navit/graphics/android/CMakeLists.txt
deleted file mode 100644
index 87aa37f20..000000000
--- a/navit/graphics/android/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(graphics_android graphics_android.c)
diff --git a/navit/graphics/android/graphics_android.c b/navit/graphics/android/graphics_android.c
deleted file mode 100644
index 0d6aa30d2..000000000
--- a/navit/graphics/android/graphics_android.c
+++ /dev/null
@@ -1,1203 +0,0 @@
-/**
- * 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 <unistd.h>
-#include <glib.h>
-#include <poll.h>
-#include "config.h"
-#include "window.h"
-#include "point.h"
-#include "graphics.h"
-#include "color.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "plugin.h"
-#include "event.h"
-#include "debug.h"
-#include "callback.h"
-#include "android.h"
-#include "command.h"
-
-struct graphics_priv {
- jclass NavitGraphicsClass;
- jmethodID NavitGraphics_draw_polyline, NavitGraphics_draw_polygon, NavitGraphics_draw_rectangle,
- NavitGraphics_draw_circle, NavitGraphics_draw_text, NavitGraphics_draw_image,
- NavitGraphics_draw_image_warp, NavitGraphics_draw_mode, NavitGraphics_draw_drag,
- NavitGraphics_overlay_disable, NavitGraphics_overlay_resize, NavitGraphics_SetCamera,
- NavitGraphics_setBackgroundColor;
-
- jclass PaintClass;
- jmethodID Paint_init,Paint_setStrokeWidth,Paint_setARGB;
-
- jobject NavitGraphics;
- jobject Paint;
-
- jclass BitmapFactoryClass;
- jmethodID BitmapFactory_decodeFile, BitmapFactory_decodeResource;
-
- jclass BitmapClass;
- jmethodID Bitmap_getHeight, Bitmap_getWidth, Bitmap_createScaledBitmap;
-
- jclass ContextClass;
- jmethodID Context_getResources;
-
- jclass ResourcesClass;
- jobject Resources;
- jmethodID Resources_getIdentifier;
-
- jobject packageName;
-
- struct callback_list *cbl;
- struct window win;
- struct padding *padding;
- jint bgcolor;
-};
-
-struct graphics_font_priv {
- int size;
-};
-
-struct graphics_gc_priv {
- struct graphics_priv *gra;
- int linewidth;
- enum draw_mode_num mode;
- int a,r,g,b;
- unsigned char *dashes;
- int ndashes;
-};
-
-struct graphics_image_priv {
- jobject Bitmap;
- int width;
- int height;
- struct point hot;
-};
-
-static GHashTable *image_cache_hash = NULL;
-
-static int
-find_class_global(char *name, jclass *ret)
-{
- *ret=(*jnienv)->FindClass(jnienv, name);
- if (! *ret) {
- dbg(lvl_error,"Failed to get Class %s\n",name);
- return 0;
- }
- *ret = (*jnienv)->NewGlobalRef(jnienv, *ret);
- return 1;
-}
-
-static int
-find_method(jclass class, char *name, char *args, jmethodID *ret)
-{
- *ret = (*jnienv)->GetMethodID(jnienv, class, name, args);
- if (*ret == NULL) {
- dbg(lvl_error,"Failed to get Method %s with signature %s\n",name,args);
- return 0;
- }
- return 1;
-}
-
-static int
-find_static_method(jclass class, char *name, char *args, jmethodID *ret)
-{
- *ret = (*jnienv)->GetStaticMethodID(jnienv, class, name, args);
- if (*ret == NULL) {
- dbg(lvl_error,"Failed to get static Method %s with signature %s\n",name,args);
- return 0;
- }
- return 1;
-}
-
-static void
-graphics_destroy(struct graphics_priv *gr)
-{
-}
-
-static void font_destroy(struct graphics_font_priv *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 *ret=g_new0(struct graphics_font_priv, 1);
- *meth=font_methods;
-
- ret->size=size;
- return ret;
-}
-
-static void
-gc_destroy(struct graphics_gc_priv *gc)
-{
- g_free(gc->dashes);
- g_free(gc);
-}
-
-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 w, int offset, unsigned char *dash_list, int n)
-{
- g_free(gc->dashes);
- gc->ndashes=n;
- if(n) {
- gc->dashes=g_malloc(n);
- memcpy(gc->dashes, dash_list, n);
- } else {
- gc->dashes=NULL;
- }
-}
-
-static void
-gc_set_foreground(struct graphics_gc_priv *gc, struct color *c)
-{
- gc->r = c->r >> 8;
- gc->g = c->g >> 8;
- gc->b = c->b >> 8;
- gc->a = c->a >> 8;
-}
-
-static void
-gc_set_background(struct graphics_gc_priv *gc, struct color *c)
-{
-}
-
-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 *ret=g_new0(struct graphics_gc_priv, 1);
- *meth=gc_methods;
-
- ret->gra = gr;
- ret->a = ret->r = ret->g = ret->b = 255;
- ret->linewidth=1;
- return ret;
-}
-
-static void image_destroy(struct graphics_image_priv *img)
-{
- // unused?
-}
-
-static struct graphics_image_methods image_methods = {
- image_destroy
-};
-
-
-static struct graphics_image_priv *
-image_new(struct graphics_priv *gra, struct graphics_image_methods *meth, char *path, int *w, int *h, struct point *hot, int rotation)
-{
- struct graphics_image_priv* ret = NULL;
-
- ret=g_new0(struct graphics_image_priv, 1);
- jstring string;
- jclass localBitmap = NULL;
- int id;
-
- dbg(lvl_debug,"enter %s\n",path);
- if (!strncmp(path,"res/drawable/",13)) {
- jstring a=(*jnienv)->NewStringUTF(jnienv, "drawable");
- char *path_noext=g_strdup(path+13);
- char *pos=strrchr(path_noext, '.');
- if (pos)
- *pos='\0';
- dbg(lvl_debug,"path_noext=%s\n",path_noext);
- string = (*jnienv)->NewStringUTF(jnienv, path_noext);
- g_free(path_noext);
- id=(*jnienv)->CallIntMethod(jnienv, gra->Resources, gra->Resources_getIdentifier, string, a, gra->packageName);
- dbg(lvl_debug,"id=%d\n",id);
- if (id)
- localBitmap=(*jnienv)->CallStaticObjectMethod(jnienv, gra->BitmapFactoryClass, gra->BitmapFactory_decodeResource, gra->Resources, id);
- (*jnienv)->DeleteLocalRef(jnienv, a);
- } else {
- string = (*jnienv)->NewStringUTF(jnienv, path);
- localBitmap=(*jnienv)->CallStaticObjectMethod(jnienv, gra->BitmapFactoryClass, gra->BitmapFactory_decodeFile, string);
- }
- if (localBitmap) {
- ret->width=(*jnienv)->CallIntMethod(jnienv, localBitmap, gra->Bitmap_getWidth);
- ret->height=(*jnienv)->CallIntMethod(jnienv, localBitmap, gra->Bitmap_getHeight);
- if((*w!=IMAGE_W_H_UNSET && *w!=ret->width) || (*h!=IMAGE_W_H_UNSET && *w!=ret->height)) {
- jclass scaledBitmap=(*jnienv)->CallStaticObjectMethod(jnienv, gra->BitmapClass,
- gra->Bitmap_createScaledBitmap, localBitmap, (*w==IMAGE_W_H_UNSET)?ret->width:*w, (*h==IMAGE_W_H_UNSET)?ret->height:*h, JNI_TRUE);
- if(!scaledBitmap) {
- dbg(lvl_error,"Bitmap scaling to %dx%d failed for %s",*w,*h,path);
- } else {
- (*jnienv)->DeleteLocalRef(jnienv, localBitmap);
- localBitmap=scaledBitmap;
- ret->width=(*jnienv)->CallIntMethod(jnienv, localBitmap, gra->Bitmap_getWidth);
- ret->height=(*jnienv)->CallIntMethod(jnienv, localBitmap, gra->Bitmap_getHeight);
- }
- }
- ret->Bitmap = (*jnienv)->NewGlobalRef(jnienv, localBitmap);
- (*jnienv)->DeleteLocalRef(jnienv, localBitmap);
-
- dbg(lvl_debug,"w=%d h=%d for %s\n",ret->width,ret->height,path);
- ret->hot.x=ret->width/2;
- ret->hot.y=ret->height/2;
- } else {
- g_free(ret);
- ret=NULL;
- dbg(lvl_warning,"Failed to open %s\n",path);
- }
- (*jnienv)->DeleteLocalRef(jnienv, string);
- if (ret) {
- *w=ret->width;
- *h=ret->height;
- if (hot)
- *hot=ret->hot;
- }
-
- return ret;
-}
-
-static void initPaint(struct graphics_priv *gra, struct graphics_gc_priv *gc)
-{
- float wf = gc->linewidth;
- (*jnienv)->CallVoidMethod(jnienv, gc->gra->Paint, gra->Paint_setStrokeWidth, wf);
- (*jnienv)->CallVoidMethod(jnienv, gc->gra->Paint, gra->Paint_setARGB, gc->a, gc->r, gc->g, gc->b);
-}
-
-static void
-draw_lines(struct graphics_priv *gra, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- int arrsize=1+4+1+gc->ndashes+count*2;
- jint pc[arrsize];
- int i;
- jintArray points;
- if (count <= 0)
- return;
- points = (*jnienv)->NewIntArray(jnienv,arrsize);
- pc[0]=gc->linewidth;
- pc[1]=gc->a;
- pc[2]=gc->r;
- pc[3]=gc->g;
- pc[4]=gc->b;
- pc[5]=gc->ndashes;
- for (i = 0 ; i < gc->ndashes ; i++) {
- pc[6+i] = gc->dashes[i];
- }
- for (i = 0 ; i < count ; i++) {
- pc[6+gc->ndashes+i*2]=p[i].x;
- pc[6+gc->ndashes+i*2+1]=p[i].y;
- }
- (*jnienv)->SetIntArrayRegion(jnienv, points, 0, arrsize, pc);
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_polyline, gc->gra->Paint, points);
- (*jnienv)->DeleteLocalRef(jnienv, points);
-}
-
-static void
-draw_polygon(struct graphics_priv *gra, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- int arrsize=1+4+count*2;
- jint pc[arrsize];
- int i;
- jintArray points;
- if (count <= 0)
- return;
- points = (*jnienv)->NewIntArray(jnienv,arrsize);
- for (i = 0 ; i < count ; i++) {
- pc[5+i*2]=p[i].x;
- pc[5+i*2+1]=p[i].y;
- }
- pc[0]=gc->linewidth;
- pc[1]=gc->a;
- pc[2]=gc->r;
- pc[3]=gc->g;
- pc[4]=gc->b;
- (*jnienv)->SetIntArrayRegion(jnienv, points, 0, arrsize, pc);
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_polygon, gc->gra->Paint, points);
- (*jnienv)->DeleteLocalRef(jnienv, points);
-}
-
-static void
-draw_rectangle(struct graphics_priv *gra, struct graphics_gc_priv *gc, struct point *p, int w, int h)
-{
- initPaint(gra, gc);
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_rectangle, gc->gra->Paint, p->x, p->y, w, h);
-}
-
-static void
-draw_circle(struct graphics_priv *gra, struct graphics_gc_priv *gc, struct point *p, int r)
-{
- initPaint(gra, gc);
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_circle, gc->gra->Paint, p->x, p->y, r);
-}
-
-
-static void
-draw_text(struct graphics_priv *gra, struct graphics_gc_priv *fg, struct graphics_gc_priv *bg, struct graphics_font_priv *font, char *text, struct point *p, int dx, int dy)
-{
- int bgcolor=0;
- dbg(lvl_debug,"enter %s\n", text);
- initPaint(gra, fg);
- if(bg)
- bgcolor=(bg->a<<24)| (bg->r<<16) | (bg->g<<8) | bg->b;
- jstring string = (*jnienv)->NewStringUTF(jnienv, text);
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_text, fg->gra->Paint, p->x, p->y, string, font->size, dx, dy, bgcolor);
- (*jnienv)->DeleteLocalRef(jnienv, string);
-}
-
-static void
-draw_image(struct graphics_priv *gra, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img)
-{
- dbg(lvl_debug,"enter %p\n",img);
- initPaint(gra, fg);
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_image, fg->gra->Paint, p->x, p->y, img->Bitmap);
-
-}
-
-static void
-draw_image_warp (struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, int count, struct graphics_image_priv *img)
-{
-
- /*
- *
- *
- * if coord count==3 then top.left top.right bottom.left
- *
- */
-
- if (count==3)
- {
- initPaint(gr, fg);
- (*jnienv)->CallVoidMethod(jnienv, gr->NavitGraphics, gr->NavitGraphics_draw_image_warp, fg->gra->Paint,
- count, p[0].x, p[0].y,p[1].x, p[1].y, p[2].x, p[2].y, img->Bitmap);
- } else
- dbg(lvl_debug,"draw_image_warp is called with unsupported count parameter value %d\n", count);
-}
-
-
-
-static void draw_drag(struct graphics_priv *gra, struct point *p)
-{
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_drag, p ? p->x : 0, p ? p->y : 0);
-}
-
-static void
-background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc)
-{
-}
-
-static void
-draw_mode(struct graphics_priv *gra, enum draw_mode_num mode)
-{
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_draw_mode, (int)mode);
-}
-
-static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound);
-
-static void *
-get_data(struct graphics_priv *this, const char *type)
-{
- if (!strcmp(type,"padding"))
- return this->padding;
- if (!strcmp(type,"window"))
- return &this->win;
- return NULL;
-}
-
-static void image_free(struct graphics_priv *gr, struct graphics_image_priv *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)
-{
- int len = g_utf8_strlen(text, -1);
- int xMin = 0;
- int yMin = 0;
- int yMax = 13*font->size/256;
- int xMax = 9*font->size*len/256;
-
- ret[0].x = xMin;
- ret[0].y = -yMin;
- ret[1].x = xMin;
- ret[1].y = -yMax;
- ret[2].x = xMax;
- ret[2].y = -yMax;
- ret[3].x = xMax;
- ret[3].y = -yMin;
-}
-
-static void overlay_disable(struct graphics_priv *gra, int disable)
-{
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_overlay_disable, disable);
-}
-
-static void overlay_resize(struct graphics_priv *gra, struct point *pnt, int w, int h, int wraparound)
-{
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_overlay_resize, pnt ? pnt->x:0 , pnt ? pnt->y:0, w, h, wraparound);
-}
-
-static int
-set_attr(struct graphics_priv *gra, struct attr *attr)
-{
- switch (attr->type) {
- case attr_use_camera:
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_SetCamera, attr->u.num);
- return 1;
- case attr_background_color:
- gra->bgcolor = (attr->u.color->a / 0x101) << 24
- | (attr->u.color->r / 0x101) << 16
- | (attr->u.color->g / 0x101) << 8
- | (attr->u.color->b / 0x101);
- dbg(lvl_debug, "set attr_background_color %04x %04x %04x %04x (%08x)\n",
- attr->u.color->r, attr->u.color->g, attr->u.color->b, attr->u.color->a, gra->bgcolor);
- if (gra->NavitGraphics_setBackgroundColor != NULL)
- (*jnienv)->CallVoidMethod(jnienv, gra->NavitGraphics, gra->NavitGraphics_setBackgroundColor, gra->bgcolor);
- else
- dbg(lvl_error, "NavitGraphics.setBackgroundColor not found, cannot set background color\n");
- return 1;
- default:
- return 0;
- }
-}
-
-
-int show_native_keyboard (struct graphics_keyboard *kbd);
-
-void hide_native_keyboard (struct graphics_keyboard *kbd);
-
-
-static struct graphics_methods graphics_methods = {
- graphics_destroy,
- draw_mode,
- draw_lines,
- draw_polygon,
- draw_rectangle,
- draw_circle,
- draw_text,
- draw_image,
- draw_image_warp,
- draw_drag,
- font_new,
- gc_new,
- background_gc,
- overlay_new,
- image_new,
- get_data,
- image_free,
- get_text_bbox,
- overlay_disable,
- overlay_resize,
- set_attr,
- show_native_keyboard,
- hide_native_keyboard,
-};
-
-static void
-resize_callback(struct graphics_priv *gra, int w, int h)
-{
- dbg(lvl_debug,"w=%d h=%d ok\n",w,h);
- dbg(lvl_debug,"gra=%p, %d callbacks in list\n", gra, g_list_length(gra->cbl));
- callback_list_call_attr_2(gra->cbl, attr_resize, (void *)w, (void *)h);
-}
-
-static void
-padding_callback(struct graphics_priv *gra, int left, int top, int right, int bottom)
-{
- dbg(lvl_debug, "win.padding left=%d top=%d right=%d bottom=%d ok\n", left, top, right, bottom);
- gra->padding->left = left;
- gra->padding->top = top;
- gra->padding->right = right;
- gra->padding->bottom = bottom;
-}
-
-static void
-motion_callback(struct graphics_priv *gra, int x, int y)
-{
- struct point p;
- p.x=x;
- p.y=y;
- callback_list_call_attr_1(gra->cbl, attr_motion, (void *)&p);
-}
-
-static void
-keypress_callback(struct graphics_priv *gra, char *s)
-{
- dbg(lvl_debug,"enter %s\n",s);
- callback_list_call_attr_1(gra->cbl, attr_keypress, s);
-}
-
-static void
-button_callback(struct graphics_priv *gra, int pressed, int button, int x, int y)
-{
- struct point p;
- p.x=x;
- p.y=y;
- callback_list_call_attr_3(gra->cbl, attr_button, (void *)pressed, (void *)button, (void *)&p);
-}
-
-
-static int
-set_activity(jobject graphics)
-{
- jclass ActivityClass;
- jmethodID cid;
-
- ActivityClass = (*jnienv)->GetObjectClass(jnienv, android_activity);
- dbg(lvl_debug,"at 5\n");
- if (ActivityClass == NULL) {
- dbg(lvl_debug,"no activity class found\n");
- return 0;
- }
- dbg(lvl_debug,"at 6\n");
- cid = (*jnienv)->GetMethodID(jnienv, ActivityClass, "setContentView", "(Landroid/view/View;)V");
- if (cid == NULL) {
- dbg(lvl_error,"no setContentView method found\n");
- return 0;
- }
- dbg(lvl_debug,"at 7\n");
- (*jnienv)->CallVoidMethod(jnienv, android_activity, cid, graphics);
- dbg(lvl_debug,"at 8\n");
- return 1;
-}
-
-/**
- * @brief Initializes a new Android graphics instance.
- *
- * This initializes a new Android graphics instance, which can either be the main view or an overlay.
- *
- * @param ret The new graphics instance
- * @param parent The graphics instance that contains the new instance ({@code NULL} for the main view)
- * @param p The position of the overlay in its parent ({@code NULL} for the main view)
- * @param w The width of the overlay (0 for the main view)
- * @param h The height of the overlay (0 for the main view)
- * @param wraparound (0 for the main view)
- * @param use_camera Whether to use the camera (0 for overlays)
- */
-static int
-graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, struct point *pnt, int w, int h, int wraparound, int use_camera)
-{
- struct callback *cb;
- jmethodID cid, Context_getPackageName;
-
- dbg(lvl_debug,"at 2 jnienv=%p\n",jnienv);
- if (parent)
- ret->padding = parent->padding;
- if (!find_class_global("android/graphics/Paint", &ret->PaintClass))
- return 0;
- if (!find_method(ret->PaintClass, "<init>", "(I)V", &ret->Paint_init))
- return 0;
- if (!find_method(ret->PaintClass, "setARGB", "(IIII)V", &ret->Paint_setARGB))
- return 0;
- if (!find_method(ret->PaintClass, "setStrokeWidth", "(F)V", &ret->Paint_setStrokeWidth))
- return 0;
-
- if (!find_class_global("android/graphics/BitmapFactory", &ret->BitmapFactoryClass))
- return 0;
- if (!find_static_method(ret->BitmapFactoryClass, "decodeFile", "(Ljava/lang/String;)Landroid/graphics/Bitmap;", &ret->BitmapFactory_decodeFile))
- return 0;
- if (!find_static_method(ret->BitmapFactoryClass, "decodeResource", "(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap;", &ret->BitmapFactory_decodeResource))
- return 0;
-
- if (!find_class_global("android/graphics/Bitmap", &ret->BitmapClass))
- return 0;
- if (!find_method(ret->BitmapClass, "getHeight", "()I", &ret->Bitmap_getHeight))
- return 0;
- if (!find_method(ret->BitmapClass, "getWidth", "()I", &ret->Bitmap_getWidth))
- return 0;
- if (!find_static_method(ret->BitmapClass, "createScaledBitmap", "(Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;", &ret->Bitmap_createScaledBitmap))
- return 0;
-
- if (!find_class_global("android/content/Context", &ret->ContextClass))
- return 0;
- if (!find_method(ret->ContextClass, "getResources", "()Landroid/content/res/Resources;", &ret->Context_getResources))
- return 0;
-
-
- ret->Resources=(*jnienv)->CallObjectMethod(jnienv, android_activity, ret->Context_getResources);
- if (ret->Resources)
- ret->Resources = (*jnienv)->NewGlobalRef(jnienv, ret->Resources);
- if (!find_class_global("android/content/res/Resources", &ret->ResourcesClass))
- return 0;
- if (!find_method(ret->ResourcesClass, "getIdentifier", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", &ret->Resources_getIdentifier))
- return 0;
-
- if (!find_method(ret->ContextClass, "getPackageName", "()Ljava/lang/String;", &Context_getPackageName))
- return 0;
- ret->packageName=(*jnienv)->CallObjectMethod(jnienv, android_activity, Context_getPackageName);
- ret->packageName=(*jnienv)->NewGlobalRef(jnienv, ret->packageName);
-
- if (!find_class_global("org/navitproject/navit/NavitGraphics", &ret->NavitGraphicsClass))
- return 0;
- dbg(lvl_debug,"at 3\n");
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "<init>", "(Landroid/app/Activity;Lorg/navitproject/navit/NavitGraphics;IIIIII)V");
- if (cid == NULL) {
- dbg(lvl_error,"no method found\n");
- return 0; /* exception thrown */
- }
- dbg(lvl_debug,"at 4 android_activity=%p\n",android_activity);
- ret->NavitGraphics=(*jnienv)->NewObject(jnienv, ret->NavitGraphicsClass, cid, android_activity, parent ? parent->NavitGraphics : NULL, pnt ? pnt->x:0 , pnt ? pnt->y:0, w, h, wraparound, use_camera);
- dbg(lvl_debug,"result=%p\n",ret->NavitGraphics);
- if (ret->NavitGraphics)
- ret->NavitGraphics = (*jnienv)->NewGlobalRef(jnienv, ret->NavitGraphics);
-
- /* Create a single global Paint, otherwise android will quickly run out
- * of global refs.*/
- /* 0x101 = text kerning (default), antialiasing */
- ret->Paint=(*jnienv)->NewObject(jnienv, ret->PaintClass, ret->Paint_init, 0x101);
-
- dbg(lvl_debug,"result=%p\n",ret->Paint);
- if (ret->Paint)
- ret->Paint = (*jnienv)->NewGlobalRef(jnienv, ret->Paint);
-
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setSizeChangedCallback", "(I)V");
- if (cid == NULL) {
- dbg(lvl_error,"no SetResizeCallback method found\n");
- return 0; /* exception thrown */
- }
- cb=callback_new_1(callback_cast(resize_callback), ret);
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
-
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setPaddingChangedCallback", "(I)V");
- if (cid == NULL) {
- dbg(lvl_error,"no SetPaddingCallback method found\n");
- return 0; /* exception thrown */
- }
- cb=callback_new_1(callback_cast(padding_callback), ret);
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
-
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setButtonCallback", "(I)V");
- if (cid == NULL) {
- dbg(lvl_error,"no SetButtonCallback method found\n");
- return 0; /* exception thrown */
- }
- cb=callback_new_1(callback_cast(button_callback), ret);
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
-
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setMotionCallback", "(I)V");
- if (cid == NULL) {
- dbg(lvl_error,"no SetMotionCallback method found\n");
- return 0; /* exception thrown */
- }
- cb=callback_new_1(callback_cast(motion_callback), ret);
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
-
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setKeypressCallback", "(I)V");
- if (cid == NULL) {
- dbg(lvl_error,"no SetKeypressCallback method found\n");
- return 0; /* exception thrown */
- }
- cb=callback_new_1(callback_cast(keypress_callback), ret);
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
-
- if (!find_method(ret->NavitGraphicsClass, "draw_polyline", "(Landroid/graphics/Paint;[I)V", &ret->NavitGraphics_draw_polyline))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "draw_polygon", "(Landroid/graphics/Paint;[I)V", &ret->NavitGraphics_draw_polygon))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "draw_rectangle", "(Landroid/graphics/Paint;IIII)V", &ret->NavitGraphics_draw_rectangle))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "draw_circle", "(Landroid/graphics/Paint;III)V", &ret->NavitGraphics_draw_circle))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "draw_text", "(Landroid/graphics/Paint;IILjava/lang/String;IIII)V", &ret->NavitGraphics_draw_text))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "draw_image", "(Landroid/graphics/Paint;IILandroid/graphics/Bitmap;)V", &ret->NavitGraphics_draw_image))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "draw_image_warp", "(Landroid/graphics/Paint;IIIIIIILandroid/graphics/Bitmap;)V", &ret->NavitGraphics_draw_image_warp))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "draw_mode", "(I)V", &ret->NavitGraphics_draw_mode))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "draw_drag", "(II)V", &ret->NavitGraphics_draw_drag))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "overlay_disable", "(I)V", &ret->NavitGraphics_overlay_disable))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "overlay_resize", "(IIIII)V", &ret->NavitGraphics_overlay_resize))
- return 0;
- if (!find_method(ret->NavitGraphicsClass, "SetCamera", "(I)V", &ret->NavitGraphics_SetCamera))
- return 0;
-#if 0
- set_activity(ret->NavitGraphics);
-#endif
- return 1;
-}
-
-static jclass NavitClass;
-static jmethodID Navit_disableSuspend, Navit_exit, Navit_fullscreen, Navit_runOptionsItem, Navit_showMenu, Navit_showNativeKeyboard, Navit_hideNativeKeyboard;
-
-static int
-graphics_android_fullscreen(struct window *win, int on)
-{
- (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_fullscreen, on);
- return 1;
-}
-
-static void
-graphics_android_disable_suspend(struct window *win)
-{
- dbg(lvl_debug,"enter\n");
- (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_disableSuspend);
-}
-
-/**
- * @brief Runs an item from the Android menu.
- *
- * This is a callback function which implements multiple API functions.
- *
- * @param this The {@code graohics_prov} structure
- * @param function The API function which was called
- * @param in Parameters to pass to the API function
- * @param out Points to a buffer which will receive a pointer to the output of the command
- * @param valid
- */
-static void
-graphics_android_cmd_runMenuItem(struct graphics_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- int ncmd=0;
- dbg(0,"Running %s\n",function);
- if(!strcmp(function,"map_download_dialog")) {
- ncmd=3;
- } else if(!strcmp(function,"backup_restore_dialog")) {
- ncmd=7;
- } else if(!strcmp(function,"set_map_location")) {
- ncmd=10;
- }
- (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_runOptionsItem, ncmd);
-}
-
-/**
- * @brief Shows the Android menu.
- *
- * This is the callback function associated with the {@code menu()} API function.
- *
- * @param this The {@code graohics_prov} structure
- * @param function The API function which was called
- * @param in Parameters to pass to the API function
- * @param out Points to a buffer which will receive a pointer to the output of the command
- * @param valid
- */
-static void
-graphics_android_cmd_menu(struct graphics_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- dbg(lvl_debug, "enter\n");
- (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_showMenu);
-}
-
-/**
- * The command table. Each entry consists of an API function name and the callback function which implements
- * this command.
- */
-static struct command_table commands[] = {
- {"map_download_dialog",command_cast(graphics_android_cmd_runMenuItem)},
- {"set_map_location",command_cast(graphics_android_cmd_runMenuItem)},
- {"backup_restore_dialog",command_cast(graphics_android_cmd_runMenuItem)},
- {"menu", command_cast(graphics_android_cmd_menu)},
-};
-
-/**
- * @brief Creates a new Android graphics instance.
- *
- * This method is called when the graphics plugin is initialized. It creates the main view, i.e. the map view.
- * Unless overlay mode is enabled, it also holds any OSD items.
- *
- * @param nav The navit instance.
- * @param meth The methods for the new graphics instance
- * @param attrs The attributes for the new graphics instance
- * @param cbl The callback list for the new graphics instance
- *
- * @return The new graphics instance
- */
-static struct graphics_priv *
-graphics_android_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct graphics_priv *ret;
- struct attr *attr;
- int use_camera=0;
- jmethodID cid;
- jint android_bgcolor;
-
- dbg(lvl_debug, "enter\n");
- if (!event_request_system("android","graphics_android"))
- return NULL;
- ret=g_new0(struct graphics_priv, 1);
-
- ret->cbl=cbl;
- *meth=graphics_methods;
- ret->win.priv=ret;
- ret->win.fullscreen=graphics_android_fullscreen;
- ret->win.disable_suspend=graphics_android_disable_suspend;
- ret->padding = g_new0(struct padding, 1);
- ret->padding->left = 0;
- ret->padding->top = 0;
- ret->padding->right = 0;
- ret->padding->bottom = 0;
- /* attr_background_color is the background color for system bars (API 17+ only) */
- if ((attr=attr_search(attrs, NULL, attr_background_color))) {
- ret->bgcolor = (attr->u.color->a / 0x101) << 24
- | (attr->u.color->r / 0x101) << 16
- | (attr->u.color->g / 0x101) << 8
- | (attr->u.color->b / 0x101);
- dbg(lvl_debug, "attr_background_color %04x %04x %04x %04x (%08x)\n",
- attr->u.color->r, attr->u.color->g, attr->u.color->b, attr->u.color->a, ret->bgcolor);
- } else {
- /* default is the same as for OSD */
- ret->bgcolor = 0x60000000;
- }
- if ((attr=attr_search(attrs, NULL, attr_use_camera))) {
- use_camera=attr->u.num;
- }
- if ((attr=attr_search(attrs, NULL, attr_callback_list))) {
- command_add_table(attr->u.callback_list, commands, sizeof(commands)/sizeof(struct command_table), ret);
- }
- image_cache_hash = g_hash_table_new(g_str_hash, g_str_equal);
- if (graphics_android_init(ret, NULL, NULL, 0, 0, 0, use_camera)) {
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "hasMenuButton", "()Z");
- if (cid != NULL) {
- attr = g_new0(struct attr, 1);
- attr->type = attr_has_menu_button;
- attr->u.num = (*jnienv)->CallBooleanMethod(jnienv, ret->NavitGraphics, cid);
-
- /*
- * Although the attribute refers to information obtained by the graphics plugin, we are storing it
- * with the navit object: the object is easier to access from anywhere in the program, and ultimately
- * it refers to a configuration value affecting all of Navit, thus users are likely to look for it in
- * the navit object (as the fact that graphics also handles input devices is not immedately obvious).
- */
- navit_object_set_attr((struct navit_object *) nav, attr);
- dbg(lvl_debug, "attr_has_menu_button=%d\n", attr->u.num);
- g_free(attr);
- }
- ret->NavitGraphics_setBackgroundColor = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setBackgroundColor", "(I)V");
- if (ret->NavitGraphics_setBackgroundColor != NULL) {
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, ret->NavitGraphics_setBackgroundColor, ret->bgcolor);
- }
- dbg(lvl_debug,"returning %p\n",ret);
- return ret;
- } else {
- g_free(ret);
- return NULL;
- }
-}
-
-/**
- * @brief Creates a new overlay
- *
- * This method creates a graphics instance for a new overlay. If overlay mode is enabled, a separate overlay is
- * created for each OSD item.
- *
- * @param gr The parent graphics instance, i.e. the one which will contain the overlay.
- * @param meth The methods for the new graphics instance
- * @param p The position of the overlay in its parent
- * @param w The width of the overlay
- * @param h The height of the overlay
- * @param wraparound
- *
- * @return The graphics instance for the new overlay
- */
-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 *ret=g_new0(struct graphics_priv, 1);
- *meth=graphics_methods;
- if (graphics_android_init(ret, gr, p, w, h, wraparound, 0)) {
- dbg(lvl_debug,"returning %p\n",ret);
- return ret;
- } else {
- g_free(ret);
- return NULL;
- }
-}
-
-
-static void
-event_android_main_loop_run(void)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-static void event_android_main_loop_quit(void)
-{
- dbg(lvl_debug,"enter\n");
- (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_exit);
-}
-
-
-static jclass NavitTimeoutClass;
-static jmethodID NavitTimeout_init;
-static jmethodID NavitTimeout_remove;
-
-static jclass NavitIdleClass;
-static jmethodID NavitIdle_init;
-static jmethodID NavitIdle_remove;
-
-static jclass NavitWatchClass;
-static jmethodID NavitWatch_init;
-static jmethodID NavitWatch_remove;
-
-
-static void do_poll(JNIEnv *env, int fd, int cond)
-{
- struct pollfd pfd;
- pfd.fd=fd;
- dbg(lvl_debug,"%p poll called for %d %d\n", fd, cond);
- switch ((enum event_watch_cond)cond) {
- case event_watch_cond_read:
- pfd.events=POLLIN;
- break;
- case event_watch_cond_write:
- pfd.events=POLLOUT;
- break;
- case event_watch_cond_except:
- pfd.events=POLLERR;
- break;
- default:
- pfd.events=0;
- }
- pfd.revents=0;
- poll(&pfd, 1, -1);
-}
-
-static struct event_watch *
-event_android_add_watch(int h, enum event_watch_cond cond, struct callback *cb)
-{
- jobject ret;
- ret=(*jnienv)->NewObject(jnienv, NavitWatchClass, NavitWatch_init, (int)do_poll, h, (int) cond, (int)cb);
- dbg(lvl_debug,"result for %d,%d,%p=%p\n",h,cond,cb,ret);
- if (ret)
- ret = (*jnienv)->NewGlobalRef(jnienv, ret);
- return (struct event_watch *)ret;
-}
-
-static void
-event_android_remove_watch(struct event_watch *ev)
-{
- dbg(lvl_debug,"enter %p\n",ev);
- if (ev) {
- jobject obj=(jobject )ev;
- (*jnienv)->CallVoidMethod(jnienv, obj, NavitWatch_remove);
- (*jnienv)->DeleteGlobalRef(jnienv, obj);
- }
-}
-
-struct event_timeout
-{
- void (*handle_timeout)(struct event_timeout *priv);
- jobject jni_timeout;
- int multi;
- struct callback *cb;
-};
-
-static void
-event_android_remove_timeout(struct event_timeout *priv)
-{
- if (priv && priv->jni_timeout) {
- (*jnienv)->CallVoidMethod(jnienv, priv->jni_timeout, NavitTimeout_remove);
- (*jnienv)->DeleteGlobalRef(jnienv, priv->jni_timeout);
- priv->jni_timeout = NULL;
- }
-}
-
-static void event_android_handle_timeout(struct event_timeout *priv)
-{
- callback_call_0(priv->cb);
- if (!priv->multi)
- event_android_remove_timeout(priv);
-}
-
-static struct event_timeout *
-event_android_add_timeout(int timeout, int multi, struct callback *cb)
-{
- struct event_timeout *ret = g_new0(struct event_timeout, 1);
- ret->cb = cb;
- ret->multi = multi;
- ret->handle_timeout = event_android_handle_timeout;
- ret->jni_timeout = (*jnienv)->NewObject(jnienv, NavitTimeoutClass, NavitTimeout_init, timeout, multi, (int)ret);
- if (ret->jni_timeout)
- ret->jni_timeout = (*jnienv)->NewGlobalRef(jnienv, ret->jni_timeout);
- return ret;
-}
-
-
-static struct event_idle *
-event_android_add_idle(int priority, struct callback *cb)
-{
-#if 0
- jobject ret;
- dbg(lvl_debug,"enter\n");
- ret=(*jnienv)->NewObject(jnienv, NavitIdleClass, NavitIdle_init, (int)cb);
- dbg(lvl_debug,"result for %p=%p\n",cb,ret);
- if (ret)
- ret = (*jnienv)->NewGlobalRef(jnienv, ret);
- return (struct event_idle *)ret;
-#endif
- return (struct event_idle *)event_android_add_timeout(1, 1, cb);
-}
-
-static void
-event_android_remove_idle(struct event_idle *ev)
-{
-#if 0
- dbg(lvl_debug,"enter %p\n",ev);
- if (ev) {
- jobject obj=(jobject )ev;
- (*jnienv)->CallVoidMethod(jnienv, obj, NavitIdle_remove);
- (*jnienv)->DeleteGlobalRef(jnienv, obj);
- }
-#endif
- event_android_remove_timeout((struct event_timeout *)ev);
-}
-
-static void
-event_android_call_callback(struct callback_list *cb)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-static struct event_methods event_android_methods = {
- event_android_main_loop_run,
- event_android_main_loop_quit,
- event_android_add_watch,
- event_android_remove_watch,
- event_android_add_timeout,
- event_android_remove_timeout,
- event_android_add_idle,
- event_android_remove_idle,
- event_android_call_callback,
-};
-
-static struct event_priv *
-event_android_new(struct event_methods *meth)
-{
- dbg(lvl_debug,"enter\n");
- if (!find_class_global("org/navitproject/navit/NavitTimeout", &NavitTimeoutClass))
- return NULL;
- NavitTimeout_init = (*jnienv)->GetMethodID(jnienv, NavitTimeoutClass, "<init>", "(IZI)V");
- if (NavitTimeout_init == NULL)
- return NULL;
- NavitTimeout_remove = (*jnienv)->GetMethodID(jnienv, NavitTimeoutClass, "remove", "()V");
- if (NavitTimeout_remove == NULL)
- return NULL;
-#if 0
- if (!find_class_global("org/navitproject/navit/NavitIdle", &NavitIdleClass))
- return NULL;
- NavitIdle_init = (*jnienv)->GetMethodID(jnienv, NavitIdleClass, "<init>", "(I)V");
- if (NavitIdle_init == NULL)
- return NULL;
- NavitIdle_remove = (*jnienv)->GetMethodID(jnienv, NavitIdleClass, "remove", "()V");
- if (NavitIdle_remove == NULL)
- return NULL;
-#endif
-
- if (!find_class_global("org/navitproject/navit/NavitWatch", &NavitWatchClass))
- return NULL;
- NavitWatch_init = (*jnienv)->GetMethodID(jnienv, NavitWatchClass, "<init>", "(IIII)V");
- if (NavitWatch_init == NULL)
- return NULL;
- NavitWatch_remove = (*jnienv)->GetMethodID(jnienv, NavitWatchClass, "remove", "()V");
- if (NavitWatch_remove == NULL)
- return NULL;
-
- if (!find_class_global("org/navitproject/navit/Navit", &NavitClass))
- return NULL;
- Navit_disableSuspend = (*jnienv)->GetMethodID(jnienv, NavitClass, "disableSuspend", "()V");
- if (Navit_disableSuspend == NULL)
- return NULL;
- Navit_exit = (*jnienv)->GetMethodID(jnienv, NavitClass, "exit", "()V");
- if (Navit_exit == NULL)
- return NULL;
- Navit_fullscreen = (*jnienv)->GetMethodID(jnienv, NavitClass, "fullscreen", "(I)V");
- if (Navit_fullscreen == NULL)
- return NULL;
- Navit_runOptionsItem = (*jnienv)->GetMethodID(jnienv, NavitClass, "runOptionsItem", "(I)V");
- if (Navit_runOptionsItem == NULL)
- return NULL;
- Navit_showMenu = (*jnienv)->GetMethodID(jnienv, NavitClass, "showMenu", "()V");
- if (Navit_showMenu == NULL)
- return NULL;
- Navit_showNativeKeyboard = (*jnienv)->GetMethodID(jnienv, NavitClass, "showNativeKeyboard", "()I");
- Navit_hideNativeKeyboard = (*jnienv)->GetMethodID(jnienv, NavitClass, "hideNativeKeyboard", "()V");
-
- dbg(lvl_debug,"ok\n");
- *meth=event_android_methods;
- return NULL;
-}
-
-
-/**
- * @brief Displays the native input method.
- *
- * This method decides whether a native on-screen input method, such as a virtual keyboard, needs to be
- * displayed. A typical case in which there is no need for an on-screen input method is if a hardware
- * keyboard is present.
- *
- * Note that the Android platform lacks reliable means of determining whether an on-screen input method
- * is going to be displayed or how much screen space it is going to occupy. Therefore this method tries
- * to guess these values. They have been tested and found to work correctly with the AOSP keyboard, and
- * are thus expected to be compatible with most on-screen keyboards found on the market, but results may
- * be unexpected with other input methods.
- *
- * @param kbd A {@code struct graphics_keyboard} which describes the requirements for the input method
- * and will be populated with the data of the input method before the function returns.
- *
- * @return True if the input method is going to be displayed, false if not.
- */
-int show_native_keyboard (struct graphics_keyboard *kbd) {
- kbd->w = -1;
- if (Navit_showNativeKeyboard == NULL) {
- dbg(lvl_error, "method Navit.showNativeKeyboard() not found, cannot display keyboard\n");
- return 0;
- }
- kbd->h = (*jnienv)->CallIntMethod(jnienv, android_activity, Navit_showNativeKeyboard);
- dbg(lvl_error, "keyboard size is %d x %d px\n", kbd->w, kbd->h);
- dbg(lvl_error, "return\n");
- /* zero height means we're not showing a keyboard, therefore normalize height to boolean */
- return !!(kbd->h);
-}
-
-
-/**
- * @brief Hides the native input method and frees associated private data.
- *
- * @param kbd The {@code struct graphics_keyboard} which was passed to the earlier call to
- * {@link show_native_keyboard(struct graphics_keyboard *)}. The {@code gra_priv} member of the struct
- * will be freed by this function.
- */
-void hide_native_keyboard (struct graphics_keyboard *kbd) {
- if (Navit_hideNativeKeyboard == NULL) {
- dbg(lvl_error, "method Navit.hideNativeKeyboard() not found, cannot dismiss keyboard\n");
- return;
- }
- (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_hideNativeKeyboard);
- g_free(kbd->gra_priv);
-}
-
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug,"enter\n");
- plugin_register_category_graphics("android", graphics_android_new);
- plugin_register_category_event("android", event_android_new);
-}
diff --git a/navit/graphics/cocoa/CMakeLists.txt b/navit/graphics/cocoa/CMakeLists.txt
deleted file mode 100644
index a4cd31d84..000000000
--- a/navit/graphics/cocoa/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-if (USE_UIKIT)
-set(graphics_cocoa_LIBS "-framework Foundation" "-framework UIKit" "-framework CoreGraphics" "-liconv")
-else()
-set(graphics_cocoa_LIBS "-framework Cocoa" "-liconv")
-endif()
-module_add_library(graphics_cocoa graphics_cocoa.m)
diff --git a/navit/graphics/cocoa/graphics_cocoa.m b/navit/graphics/cocoa/graphics_cocoa.m
deleted file mode 100644
index 16c879bd7..000000000
--- a/navit/graphics/cocoa/graphics_cocoa.m
+++ /dev/null
@@ -1,805 +0,0 @@
-#include <glib.h>
-#include "config.h"
-#include "config_.h"
-#include "debug.h"
-#include "plugin.h"
-#include "point.h"
-#include "window.h"
-#include "graphics.h"
-#include "event.h"
-#include "item.h"
-#include "callback.h"
-#include "color.h"
-#include <iconv.h>
-
-#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
-#define USE_UIKIT 1
-#else
-#define USE_UIKIT 0
-#endif
-
-#if USE_UIKIT
-#import <UIKit/UIKit.h>
-#define NSRect CGRect
-#define NSMakeRect CGRectMake
-#define REVERSE_Y 0
-
-CGContextRef
-current_context(void)
-{
- return UIGraphicsGetCurrentContext();
-}
-
-#else
-#import <Cocoa/Cocoa.h>
-#define UIView NSView
-#define UIViewController NSViewController
-#define UIApplicationDelegate NSApplicationDelegate
-#define UIWindow NSWindow
-#define UIApplication NSApplication
-#define UIApplicationMain(a,b,c,d) NSApplicationMain(a,b)
-#define UIScreen NSScreen
-#define UIEvent NSEvent
-#define applicationFrame frame
-#define REVERSE_Y 1
-
-CGContextRef
-current_context(void)
-{
- return [[NSGraphicsContext currentContext] graphicsPort];
-}
-
-#endif
-
-
-@interface NavitView : UIView {
-@public
- struct graphics_priv *graphics;
-}
-
-@end
-
-static struct graphics_priv {
- struct window win;
- NavitView *view;
- CGLayerRef layer;
- CGContextRef layer_context;
- struct callback_list *cbl;
- struct point p, pclean;
- int w, h, wraparound, overlay_disabled, cleanup;
- struct graphics_priv *parent, *next, *overlays;
-} *global_graphics_cocoa;
-
-iconv_t utf8_macosroman;
-
-struct graphics_gc_priv {
- CGFloat rgba[4];
- int w;
-};
-
-struct graphics_font_priv {
- int size;
- char *name;
-};
-
-
-
-@implementation NavitView
-
-- (void)drawRect:(NSRect)rect
-{
- struct graphics_priv *gr=NULL;
-#if 0
- NSLog(@"NavitView:drawRect...");
-#endif
-
- CGContextRef X = current_context();
-
- CGContextDrawLayerAtPoint(X, CGPointZero, graphics->layer);
- if (!graphics->overlay_disabled)
- gr=graphics->overlays;
- while (gr) {
- if (!gr->overlay_disabled) {
- struct CGPoint pc;
- pc.x=gr->p.x;
- pc.y=gr->p.y;
- if (gr->wraparound) {
- if (pc.x < 0)
- pc.x+=graphics->w;
- if (pc.y < 0)
- pc.y+=graphics->h;
- }
- #if REVERSE_Y
- pc.y=graphics->h-pc.y-gr->h;
- #endif
- dbg(1,"draw %dx%d at %f,%f\n",gr->w,gr->h,pc.x,pc.y);
- CGContextDrawLayerAtPoint(X, pc, gr->layer);
- }
- gr=gr->next;
- }
-}
-
-#if USE_UIKIT
-- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
-{
- NSArray *arr=touches.allObjects;
- UITouch *touch=[arr objectAtIndex: 0];
- struct CGPoint pc=[touch locationInView: self];
- struct point p;
- p.x=pc.x;
- p.y=pc.y;
- dbg(1,"Enter count=%d %d %d\n",touches.count,p.x,p.y);
- callback_list_call_attr_3(graphics->cbl, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER(1), (void *)&p);
-}
-
-
-- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
-{
- NSArray *arr=touches.allObjects;
- UITouch *touch=[arr objectAtIndex: 0];
- struct CGPoint pc=[touch locationInView: self];
- struct point p;
- p.x=pc.x;
- p.y=pc.y;
- dbg(1,"Enter count=%d %d %d\n",touches.count,p.x,p.y);
- callback_list_call_attr_3(graphics->cbl, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(1), (void *)&p);
-}
-
-- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
-{
- NSArray *arr=touches.allObjects;
- UITouch *touch=[arr objectAtIndex: 0];
- struct CGPoint pc=[touch locationInView: self];
- struct point p;
- p.x=pc.x;
- p.y=pc.y;
- dbg(1,"Enter count=%d %d %d\n",touches.count,p.x,p.y);
- callback_list_call_attr_3(graphics->cbl, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(1), (void *)&p);
-}
-
-- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
-{
- NSArray *arr=touches.allObjects;
- UITouch *touch=[arr objectAtIndex: 0];
- struct CGPoint pc=[touch locationInView: self];
- struct point p;
- p.x=pc.x;
- p.y=pc.y;
- dbg(1,"Enter count=%d %d %d\n",touches.count,p.x,p.y);
- callback_list_call_attr_1(graphics->cbl, attr_motion, (void *)&p);
-}
-
-#else
-- (void)mouseDown:(UIEvent *)theEvent
-{
- struct point p;
- p.x=theEvent.locationInWindow.x;
- p.y=graphics->h-theEvent.locationInWindow.y;
-
- dbg(1,"Enter %d %d\n",p.x,p.y);
- callback_list_call_attr_3(graphics->cbl, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER(1), (void *)&p);
-}
-
-- (void)mouseUp:(UIEvent *)theEvent
-{
- struct point p;
- p.x=theEvent.locationInWindow.x;
- p.y=graphics->h-theEvent.locationInWindow.y;
-
- dbg(1,"Enter %d %d\n",p.x,p.y);
- callback_list_call_attr_3(graphics->cbl, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(1), (void *)&p);
-}
-
-- (void)mouseDragged:(UIEvent *)theEvent
-{
- struct point p;
- p.x=theEvent.locationInWindow.x;
- p.y=graphics->h-theEvent.locationInWindow.y;
-
- dbg(1,"Enter %d %d\n",p.x,p.y);
- callback_list_call_attr_1(graphics->cbl, attr_motion, (void *)&p);
-}
-#endif
-
-- (void)dealloc {
- [super dealloc];
-}
-
-
-@end
-
-@interface NavitViewController : UIViewController
-{
- NSRect frame;
- CGLayerRef layer;
-}
-
-@property (nonatomic) NSRect frame;
-
-- (id) init_withFrame : (NSRect) _frame;
-
-@end
-
-
-
-@implementation NavitViewController
-
-@synthesize frame;
-
-- (id) init_withFrame : (NSRect) _frame
-{
- NSLog(@"init with frame\n");
- frame = _frame;
- return [self init];
-}
-
-static
-void free_graphics(struct graphics_priv *gr)
-{
- if (gr->layer) {
- CGLayerRelease(gr->layer);
- gr->layer=NULL;
- }
-}
-
-static void
-setup_graphics(struct graphics_priv *gr)
-{
- CGRect lr=CGRectMake(0, 0, gr->w, gr->h);
- gr->layer=CGLayerCreateWithContext(current_context(), lr.size, NULL);
- gr->layer_context=CGLayerGetContext(gr->layer);
-#if REVERSE_Y
- CGContextScaleCTM(gr->layer_context, 1, -1);
- CGContextTranslateCTM(gr->layer_context, 0, -gr->h);
-#endif
- CGContextSetRGBFillColor(gr->layer_context, 0, 0, 0, 0);
- CGContextSetRGBStrokeColor(gr->layer_context, 0, 0, 0, 0);
- CGContextClearRect(gr->layer_context, lr);
-}
-
-
-
-- (void)loadView
-{
- NSLog(@"loadView");
- NavitView* myV = [NavitView alloc];
-
- if (global_graphics_cocoa) {
- global_graphics_cocoa->view=myV;
- myV->graphics=global_graphics_cocoa;
- global_graphics_cocoa->w=frame.size.width;
- global_graphics_cocoa->h=frame.size.height;
- setup_graphics(global_graphics_cocoa);
- }
-
- [myV initWithFrame: frame];
-
- [self setView: myV];
-
- [myV release];
-}
-
-- (void)didReceiveMemoryWarning {
- dbg(0,"enter\n");
-}
-
-- (void)viewDidUnload {
- // Release any retained subviews of the main view.
- // e.g. self.myOutlet = nil;
-}
-
-
-- (void)dealloc {
- [super dealloc];
-}
-
-@end
-
-@class NavitViewController;
-
-@interface NavitAppDelegate : NSObject <UIApplicationDelegate> {
- UIWindow *window;
- NavitViewController *viewController;
-}
-
-@property (nonatomic, retain) /*IBOutlet*/ UIWindow *window;
-@property (nonatomic, retain) /*IBOutlet*/ NavitViewController *viewController;
-
-@end
-
-
-@implementation NavitAppDelegate
-
-@synthesize window;
-@synthesize viewController;
-
-
-#if USE_UIKIT
-- (BOOL)application:(UIApplication *)application
-didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
-#else
-- (void)
-applicationDidFinishLaunching:(NSNotification *)aNotification
-#endif
-{
- NSLog(@"DidFinishLaunching\n");
-#if USE_UIKIT
- [[UIApplication sharedApplication] setStatusBarHidden:NO];
-#endif
-
- NSRect appFrame = [UIScreen mainScreen].applicationFrame;
-
- self.viewController = [[[NavitViewController alloc] init_withFrame : appFrame] autorelease];
-
- NSRect windowRect = NSMakeRect(0, 0, appFrame.size.width, appFrame.size.height);
-
-#if USE_UIKIT
- self.window = [[[UIWindow alloc] initWithFrame:windowRect] autorelease];
-#else
- self.window = [[[UIWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO] autorelease];
-#endif
- utf8_macosroman=iconv_open("MACROMAN","UTF-8");
-
-#if USE_UIKIT
- [window addSubview:viewController.view];
- [window makeKeyAndVisible];
-#else
- NSWindowController * controller = [[NSWindowController alloc] initWithWindow : window];
- NSLog(@"Setting view\n");
- [viewController loadView];
- [window setContentView : viewController.view];
- [controller setWindow : window];
- [controller showWindow : nil];
-
-#endif
-
- if (global_graphics_cocoa) {
- callback_list_call_attr_2(global_graphics_cocoa->cbl, attr_resize, (int)appFrame.size.width, (int)appFrame.size.height);
-
- }
-
-#if USE_UIKIT
- return YES;
-#endif
-}
-
-
-- (void)dealloc {
- [viewController release];
- [window release];
- [super dealloc];
-}
-
-
-@end
-
-
-static void
-draw_mode(struct graphics_priv *gr, enum draw_mode_num mode)
-{
- if (mode == draw_mode_end) {
- dbg(1,"end %p\n",gr);
- if (!gr->parent) {
-#if USE_UIKIT
- [gr->view setNeedsDisplay];
-#else
- [gr->view display];
-#endif
- }
- }
-}
-
-static void
-draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- CGPoint points[count];
- int i;
- for (i = 0 ; i < count ; i++) {
- points[i].x=p[i].x;
- points[i].y=p[i].y;
- }
- CGContextSetStrokeColor(gr->layer_context, gc->rgba);
- CGContextSetLineWidth(gr->layer_context, gc->w);
- CGContextSetLineCap(gr->layer_context, kCGLineCapRound);
- CGContextBeginPath(gr->layer_context);
- CGContextAddLines(gr->layer_context, points, count);
- CGContextStrokePath(gr->layer_context);
-
-}
-
-static void
-draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- CGPoint points[count];
- int i;
- for (i = 0 ; i < count ; i++) {
- points[i].x=p[i].x;
- points[i].y=p[i].y;
- }
- CGContextSetFillColor(gr->layer_context, gc->rgba);
- CGContextBeginPath(gr->layer_context);
- CGContextAddLines(gr->layer_context, points, count);
- CGContextFillPath(gr->layer_context);
-}
-
-static void
-draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h)
-{
- CGRect lr=CGRectMake(p->x, p->y, w, h);
- if (p->x <= 0 && p->y <= 0 && p->x+w+1 >= gr->w && p->y+h+1 >= gr->h) {
- dbg(1,"clear %p %dx%d\n",gr,w,h);
- free_graphics(gr);
- setup_graphics(gr);
- }
- CGContextSetFillColor(gr->layer_context, gc->rgba);
- CGContextFillRect(gr->layer_context, lr);
-}
-
-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)
-{
- size_t len,inlen=strlen(text)+1,outlen=strlen(text)+1;
- char outb[outlen];
- char *inp=text,*outp=outb;
-
- len=iconv (utf8_macosroman, &inp, &inlen, &outp, &outlen);
-
- CGContextSetFillColor(gr->layer_context, fg->rgba);
-
- CGContextSelectFont(gr->layer_context, font->name, font->size/16.0, kCGEncodingMacRoman);
- CGContextSetTextDrawingMode(gr->layer_context, kCGTextFill);
- CGAffineTransform xform = CGAffineTransformMake(dx/65536.0, dy/65536.0, dy/65536.0, -dx/65536.0, 0.0f, 0.0f);
- CGContextSetTextMatrix(gr->layer_context, xform);
- CGContextShowTextAtPoint(gr->layer_context, p->x, p->y, outb, strlen(outb));
-}
-
-static void
-draw_image(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img)
-{
- CGImageRef imgc=(CGImageRef) img;
- int w=CGImageGetWidth(imgc);
- int h=CGImageGetHeight(imgc);
- CGRect rect=CGRectMake(0, 0, w, h);
- CGContextSaveGState(gr->layer_context);
- CGContextTranslateCTM(gr->layer_context, p->x, p->y+h);
- CGContextScaleCTM(gr->layer_context, 1.0, -1.0);
- CGContextDrawImage(gr->layer_context, rect, imgc);
- CGContextRestoreGState(gr->layer_context);
-}
-
-static void font_destroy(struct graphics_font_priv *font)
-{
- g_free(font);
-}
-
-static struct graphics_font_methods font_methods = {
- font_destroy
-};
-
-static void
-draw_drag(struct graphics_priv *gr, struct point *p)
-{
- if (!gr->cleanup) {
- gr->pclean=gr->p;
- gr->cleanup=1;
- }
- if (p)
- gr->p=*p;
- else {
- gr->p.x=0;
- gr->p.y=0;
- }
-}
-
-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 *ret=g_new0(struct graphics_font_priv, 1);
- *meth=font_methods;
-
- ret->size=size;
- ret->name="Helvetica";
- return ret;
-}
-
-static void
-gc_destroy(struct graphics_gc_priv *gc)
-{
- g_free(gc);
-}
-
-static void
-gc_set_linewidth(struct graphics_gc_priv *gc, int w)
-{
- gc->w=w;
-}
-
-static void
-gc_set_dashes(struct graphics_gc_priv *gc, int w, int offset, unsigned char *dash_list, int n)
-{
-}
-
-static void
-gc_set_foreground(struct graphics_gc_priv *gc, struct color *c)
-{
- gc->rgba[0]=c->r/65535.0;
- gc->rgba[1]=c->g/65535.0;
- gc->rgba[2]=c->b/65535.0;
- gc->rgba[3]=c->a/65535.0;
-}
-
-static void
-gc_set_background(struct graphics_gc_priv *gc, struct color *c)
-{
-}
-
-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_new(struct graphics_gc_priv, 1);
- gc->w=1;
-
- *meth=gc_methods;
- return gc;
-}
-
-
-static void
-background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc)
-{
-}
-
-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_image_priv *
-image_new(struct graphics_priv *gra, struct graphics_image_methods *meth, char *path, int *w, int *h, struct point *hot, int rotation)
-{
- NSString *s=[[NSString alloc]initWithCString:path encoding:NSMacOSRomanStringEncoding];
- CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((CFDataRef)[NSData dataWithContentsOfFile:s]);
- [s release];
-
- if (!imgDataProvider)
- return NULL;
-
- CGImageRef image = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault);
- CGDataProviderRelease(imgDataProvider);
- dbg(1,"size %dx%d\n",CGImageGetWidth(image),CGImageGetHeight(image));
- if (w)
- *w=CGImageGetWidth(image);
- if (h)
- *h=CGImageGetHeight(image);
- if (hot) {
- hot->x=CGImageGetWidth(image)/2;
- hot->y=CGImageGetHeight(image)/2;
- }
- return (struct graphics_image_priv *)image;
-}
-
-static void *
-get_data(struct graphics_priv *this, const char *type)
-{
- dbg(0,"enter\n");
- if (strcmp(type,"window"))
- return NULL;
- return &this->win;
-}
-
-static void
-image_free(struct graphics_priv *gr, struct graphics_image_priv *priv)
-{
- CGImageRelease((CGImageRef)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)
-{
- int len = g_utf8_strlen(text, -1);
- int xMin = 0;
- int yMin = 0;
- int yMax = 13*font->size/256;
- int xMax = 9*font->size*len/256;
-
- ret[0].x = xMin;
- ret[0].y = -yMin;
- ret[1].x = xMin;
- ret[1].y = -yMax;
- ret[2].x = xMax;
- ret[2].y = -yMax;
- ret[3].x = xMax;
- ret[3].y = -yMin;
-}
-
-static void
-overlay_disable(struct graphics_priv *gr, int disabled)
-{
- gr->overlay_disabled=disabled;
-}
-
-static struct graphics_methods graphics_methods = {
- NULL, /* graphics_destroy, */
- draw_mode,
- draw_lines,
- draw_polygon,
- draw_rectangle,
- NULL, /* draw_circle, */
- draw_text,
- draw_image,
- NULL, /* draw_image_warp, */
- draw_drag,
- font_new,
- gc_new,
- background_gc,
- overlay_new,
- image_new,
- get_data,
- image_free,
- get_text_bbox,
- overlay_disable,
- NULL, /* overlay_resize, */
- NULL, /* set_attr, */
-};
-
-
-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 *ret=g_new0(struct graphics_priv, 1);
- *meth=graphics_methods;
- ret->p=*p;
- ret->w=w;
- ret->h=h;
- ret->parent=gr;
- ret->next=gr->overlays;
- ret->wraparound=wraparound;
- gr->overlays=ret;
- setup_graphics(gr);
- return ret;
-}
-
-
-struct graphics_priv *
-graphics_cocoa_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct graphics_priv *ret;
- *meth=graphics_methods;
- dbg(0,"enter\n");
- if(!event_request_system("cocoa","graphics_cocoa"))
- return NULL;
- ret=g_new0(struct graphics_priv, 1);
- ret->cbl=cbl;
- global_graphics_cocoa=ret;
- return ret;
-}
-
-static void
-event_cocoa_main_loop_run(void)
-{
-
- dbg(0,"enter\n");
-#if 0
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"];
- freopen("/tmp/log.txt","a+",stderr);
- NSLog(@"Test\n");
-#endif
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-#if USE_UIKIT
- dbg(0,"calling main\n");
- int retval = UIApplicationMain(main_argc, main_argv, nil, @"NavitAppDelegate");
- dbg(0,"retval=%d\n",retval);
-#else
- NavitAppDelegate * delegate = [[NavitAppDelegate alloc] init];
- NSApplication * application = [NSApplication sharedApplication];
- [application setDelegate:delegate];
- NSLog(@"Test\n");
-
- [NSApp run];
-
- [delegate release];
-#endif
- [pool release];
-}
-
-@interface NavitTimer : NSObject{
-@public
- struct callback *cb;
- NSTimer *timer;
-}
-- (void)onTimer:(NSTimer*)theTimer;
-
-@end
-
-@implementation NavitTimer
-
-- (void)onTimer:(NSTimer*)theTimer
-{
- callback_call_0(cb);
-}
-
-
-@end
-
-struct event_idle {
- struct callback *cb;
- NSTimer *timer;
-};
-
-static struct event_timeout *
-event_cocoa_add_timeout(int timeout, int multi, struct callback *cb)
-{
- NavitTimer *ret=[[NavitTimer alloc]init];
- ret->cb=cb;
- ret->timer=[NSTimer scheduledTimerWithTimeInterval:(timeout/1000.0) target:ret selector:@selector(onTimer:) userInfo:nil repeats:multi?YES:NO];
- dbg(1,"timer=%p\n",ret->timer);
- return (struct event_timeout *)ret;
-}
-
-
-static void
-event_cocoa_remove_timeout(struct event_timeout *ev)
-{
- NavitTimer *t=(NavitTimer *)ev;
-
- [t->timer invalidate];
- [t release];
-}
-
-
-static struct event_idle *
-event_cocoa_add_idle(int priority, struct callback *cb)
-{
- NavitTimer *ret=[[NavitTimer alloc]init];
- ret->cb=cb;
- ret->timer=[NSTimer scheduledTimerWithTimeInterval:(0.0) target:ret selector:@selector(onTimer:) userInfo:nil repeats:YES];
-
- dbg(1,"timer=%p\n",ret->timer);
- return (struct event_idle *)ret;
-}
-
-static void
-event_cocoa_remove_idle(struct event_idle *ev)
-{
- NavitTimer *t=(NavitTimer *)ev;
-
- [t->timer invalidate];
- [t release];
-}
-
-static struct event_methods event_cocoa_methods = {
- event_cocoa_main_loop_run,
- NULL, /* event_cocoa_main_loop_quit, */
- NULL, /* event_cocoa_add_watch, */
- NULL, /* event_cocoa_remove_watch, */
- event_cocoa_add_timeout,
- event_cocoa_remove_timeout,
- event_cocoa_add_idle,
- event_cocoa_remove_idle,
- NULL, /* event_cocoa_call_callback, */
-};
-
-
-static struct event_priv *
-event_cocoa_new(struct event_methods *meth)
-{
- dbg(0,"enter\n");
- *meth=event_cocoa_methods;
- return NULL;
-}
-
-
-void
-plugin_init(void)
-{
- dbg(0,"enter\n");
- plugin_register_category_graphics("cocoa", graphics_cocoa_new);
- plugin_register_category_event("cocoa", event_cocoa_new);
-}
diff --git a/navit/graphics/egl/CMakeLists.txt b/navit/graphics/egl/CMakeLists.txt
deleted file mode 100644
index 1943f2bc0..000000000
--- a/navit/graphics/egl/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-module_add_library(graphics_egl graphics_egl.c)
-
diff --git a/navit/graphics/egl/graphics_egl.c b/navit/graphics/egl/graphics_egl.c
deleted file mode 100644
index 4d7780ff4..000000000
--- a/navit/graphics/egl/graphics_egl.c
+++ /dev/null
@@ -1,1458 +0,0 @@
-/**
- * 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/CMakeLists.txt b/navit/graphics/gd/CMakeLists.txt
deleted file mode 100644
index 5f8f6ec7a..000000000
--- a/navit/graphics/gd/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-include_directories(${GD_INCLUDE_DIR})
-module_add_library(graphics_gd graphics_gd.c)
-target_link_libraries(graphics_gd ${GD_LIBS})
diff --git a/navit/graphics/gd/graphics_gd.c b/navit/graphics/gd/graphics_gd.c
deleted file mode 100644
index 3ef6c520b..000000000
--- a/navit/graphics/gd/graphics_gd.c
+++ /dev/null
@@ -1,885 +0,0 @@
-/**
- * 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 <gd.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include "config.h"
-#include "point.h"
-#include "graphics.h"
-#include "color.h"
-#include "plugin.h"
-#include "callback.h"
-#include "window.h"
-#include "navit.h"
-#include "debug.h"
-#include "navit/font/freetype/font_freetype.h"
-
-
-#ifdef HAVE_SHMEM
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#endif
-
-#ifdef HAVE_SOCKET
-#include <stdlib.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#endif
-
-struct shmem_header {
- int flag;
- int w,h,bpp;
-};
-
-#ifdef HAVE_XPM
-#define NAVIT_GD_XPM_TRANSPARENCY_HACK
-#endif
-
-static void emit_callback(struct graphics_priv *priv);
-static void image_setup(struct graphics_priv *gr);
-static struct shmem_header *shm_next(struct graphics_priv *gr);
-static void add_overlays(struct graphics_priv *overlay, gdImagePtr im);
-
-#ifdef NAVIT_GD_XPM_TRANSPARENCY_HACK
-#include <X11/xpm.h>
-
-
-BGD_DECLARE(gdImagePtr) gdImageCreateFromXpm (char *filename)
-{
- XpmInfo info;
- XpmImage image;
- int i, j, k, number;
- char buf[5];
- gdImagePtr im = 0;
- int *pointer;
- int red = 0, green = 0, blue = 0, alpha = 0;
- int *colors;
- int ret;
- ret = XpmReadFileToXpmImage (filename, &image, &info);
- if (ret != XpmSuccess)
- return 0;
-
- if (!(im = gdImageCreate (image.width, image.height)))
- return 0;
-
- number = image.ncolors;
- if (overflow2(sizeof (int), number)) {
- return 0;
- }
- colors = (int *) gdMalloc (sizeof (int) * number);
- if (colors == NULL)
- return (0);
- for (i = 0; i < number; i++)
- {
- alpha = 0;
- switch (strlen (image.colorTable[i].c_color))
- {
- case 4:
- if (!strcasecmp(image.colorTable[i].c_color,"none")) {
- red = 0;
- green = 0;
- blue = 0;
- alpha = 127;
- } else {
- buf[1] = '\0';
- buf[0] = image.colorTable[i].c_color[1];
- red = strtol (buf, NULL, 16);
-
- buf[0] = image.colorTable[i].c_color[3];
- green = strtol (buf, NULL, 16);
-
- buf[0] = image.colorTable[i].c_color[5];
- blue = strtol (buf, NULL, 16);
- }
- break;
- case 7:
- buf[2] = '\0';
- buf[0] = image.colorTable[i].c_color[1];
- buf[1] = image.colorTable[i].c_color[2];
- red = strtol (buf, NULL, 16);
-
- buf[0] = image.colorTable[i].c_color[3];
- buf[1] = image.colorTable[i].c_color[4];
- green = strtol (buf, NULL, 16);
-
- buf[0] = image.colorTable[i].c_color[5];
- buf[1] = image.colorTable[i].c_color[6];
- blue = strtol (buf, NULL, 16);
- break;
- case 10:
- buf[3] = '\0';
- buf[0] = image.colorTable[i].c_color[1];
- buf[1] = image.colorTable[i].c_color[2];
- buf[2] = image.colorTable[i].c_color[3];
- red = strtol (buf, NULL, 16);
- red /= 64;
-
- buf[0] = image.colorTable[i].c_color[4];
- buf[1] = image.colorTable[i].c_color[5];
- buf[2] = image.colorTable[i].c_color[6];
- green = strtol (buf, NULL, 16);
- green /= 64;
-
- buf[0] = image.colorTable[i].c_color[7];
- buf[1] = image.colorTable[i].c_color[8];
- buf[2] = image.colorTable[i].c_color[9];
- blue = strtol (buf, NULL, 16);
- blue /= 64;
- break;
- case 13:
- buf[4] = '\0';
- buf[0] = image.colorTable[i].c_color[1];
- buf[1] = image.colorTable[i].c_color[2];
- buf[2] = image.colorTable[i].c_color[3];
- buf[3] = image.colorTable[i].c_color[4];
- red = strtol (buf, NULL, 16);
- red /= 256;
-
- buf[0] = image.colorTable[i].c_color[5];
- buf[1] = image.colorTable[i].c_color[6];
- buf[2] = image.colorTable[i].c_color[7];
- buf[3] = image.colorTable[i].c_color[8];
- green = strtol (buf, NULL, 16);
- green /= 256;
-
- buf[0] = image.colorTable[i].c_color[9];
- buf[1] = image.colorTable[i].c_color[10];
- buf[2] = image.colorTable[i].c_color[11];
- buf[3] = image.colorTable[i].c_color[12];
- blue = strtol (buf, NULL, 16);
- blue /= 256;
- break;
- }
-
-
- colors[i] = gdImageColorResolveAlpha(im, red, green, blue, alpha);
- if (colors[i] == -1)
- fprintf (stderr, "ARRRGH\n");
- }
-
- pointer = (int *) image.data;
- for (i = 0; i < image.height; i++)
- {
- for (j = 0; j < image.width; j++)
- {
- k = *pointer++;
- gdImageSetPixel (im, j, i, colors[k]);
- }
- }
- gdFree (colors);
- return (im);
-}
-#endif
-
-
-struct graphics_priv {
- gdImagePtr im;
- int w,h,flags,overlay,shmkey,shmsize,shmoffset;
- void *shm;
- struct shmem_header *shm_header;
- struct point p;
- struct callback *cb;
- struct callback_list *cbl;
- struct navit *nav;
- struct graphics_gc_priv *background;
- struct font_freetype_methods freetype_methods;
- struct window window;
- struct graphics_data_image image;
- struct graphics_priv *next,*overlays;
- GList *sockets;
-};
-
-struct graphics_gc_priv {
- struct graphics_priv *gr;
- int color;
- int bgcolor;
- int width;
- struct color color2;
- unsigned char *dash_list;
- int dash_count;
- int dash_list_len;
-};
-
-struct graphics_image_priv {
- gdImagePtr im;
-};
-
-
-static void
-graphics_destroy(struct graphics_priv *gr)
-{
- gr->freetype_methods.destroy();
- g_free(gr);
-}
-
-static void
-gc_destroy(struct graphics_gc_priv *gc)
-{
- if (gc->color != -1)
- gdImageColorDeallocate(gc->gr->im, gc->color);
- if (gc->bgcolor != -1)
- gdImageColorDeallocate(gc->gr->im, gc->bgcolor);
- g_free(gc->dash_list);
- g_free(gc);
-}
-
-static void
-gc_set_linewidth(struct graphics_gc_priv *gc, int w)
-{
- gc->width=w;
-}
-
-static void
-gc_set_dashes(struct graphics_gc_priv *gc, int w, int offset, unsigned char *dash_list, int n)
-{
- int i,count=0;
- g_free(gc->dash_list);
- gc->dash_list=g_new(unsigned char, n);
- for (i = 0 ; i < n ; i++) {
- gc->dash_list[i]=dash_list[i];
- count+=dash_list[i];
- }
- gc->dash_list_len=n;
- gc->dash_count=count;
-}
-
-static void
-gc_set_foreground(struct graphics_gc_priv *gc, struct color *c)
-{
- gc->color2=*c;
- gc->color=gdImageColorAllocate(gc->gr->im, c->r>>8, c->g>>8, c->b>>8);
-}
-
-static void
-gc_set_background(struct graphics_gc_priv *gc, struct color *c)
-{
- gc->bgcolor=gdImageColorAllocate(gc->gr->im, c->r>>8, c->g>>8, c->b>>8);
-}
-
-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 *ret=g_new0(struct graphics_gc_priv, 1);
- ret->gr=gr;
- ret->width=1;
- ret->color=-1;
- ret->bgcolor=-1;
- *meth=gc_methods;
- return ret;
-}
-
-
-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)
-{
- FILE *file;
- struct graphics_image_priv *ret=NULL;
- gdImagePtr im=NULL;
- int len;
-
- if (! name)
- return NULL;
- len=strlen(name);
- if (len < 4)
- return NULL;
- file=fopen(name,"r");
- if (file) {
- if (!strcmp(name+len-4,".png"))
-#ifdef HAVE_GRAPHICS_GD_PNG
- im=gdImageCreateFromPng(file);
-#else
- im=NULL;
-#endif
- else if (!strcmp(name+len-4,".xpm"))
- im=gdImageCreateFromXpm(name);
- else if (!strcmp(name+len-4,".gif")) {
- im=gdImageCreateFromGif(file);
- }
- fclose(file);
- }
- if (im) {
- ret=g_new0(struct graphics_image_priv, 1);
- ret->im=im;
- *w=im->sx;
- *h=im->sy;
- hot->x=im->sx/2;
- hot->y=im->sy/2;
- }
- return ret;
-}
-
-static void
-draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- int color[gc->dash_count],cc;
- int i,j,k=0;
-
- if (gc->dash_count) {
- cc=gc->color;
- for (i = 0 ; i < gc->dash_list_len ; i++) {
- for (j = 0 ; j < gc->dash_list[i] ; j++) {
- color[k++]=cc;
- }
- if (cc == gdTransparent)
- cc=gc->color;
- else
- cc=gdTransparent;
- }
- gdImageSetStyle(gr->im, color, gc->dash_count);
- }
- gdImageSetThickness(gr->im, gc->width);
- cc=gc->color;
- if (gr->flags & 8) {
- gdImageSetAntiAliased(gr->im, cc);
- cc=gdAntiAliased;
- }
-#ifdef GD_NO_IMAGE_OPEN_POLYGON
- for (i = 0 ; i < count-1 ; i++)
- gdImageLine(gr->im, p[i].x, p[i].y, p[i+1].x, p[i+1].y, gc->dash_count ? gdStyled : cc);
-#else
- gdImageOpenPolygon(gr->im, (gdPointPtr) p, count, gc->dash_count ? gdStyled : cc);
-#endif
-}
-
-static void
-draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- int cc=gc->color;
- if (gr->flags & 8) {
- gdImageSetAntiAliased(gr->im, cc);
- cc=gdAntiAliased;
- }
- gdImageFilledPolygon(gr->im, (gdPointPtr) p, count, cc);
-}
-
-static void
-draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h)
-{
- int cc=gc->color;
- if (gr->flags & 8) {
- gdImageSetAntiAliased(gr->im, cc);
- cc=gdAntiAliased;
- }
- gdImageFilledRectangle(gr->im, p->x, p->y, p->x+w, p->y+h, cc);
-}
-
-static void
-draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r)
-{
- int cc=gc->color;
- if (gr->flags & 8) {
- gdImageSetAntiAliased(gr->im, cc);
- cc=gdAntiAliased;
- }
- gdImageSetThickness(gr->im, gc->width);
- gdImageArc(gr->im, p->x, p->y, r, r, 0, 360, cc);
-}
-
-
-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)
-{
- struct font_freetype_text *t;
- struct font_freetype_glyph *g, **gp;
- gdImagePtr im;
- int i,x,y,w,h;
- t=gr->freetype_methods.text_new(text, (struct font_freetype_font *)font, dx, dy);
- struct color fgc,bgc,transparent = {0x0, 0x0, 0x0, 0x7f7f};
- fgc=fg->color2;
- fgc.a=0;
-
- if (bg) {
- bgc=bg->color2;
- bgc.a=0;
- x=p->x << 6;
- y=p->y << 6;
- gp=t->glyph;
- i=t->glyph_count;
- while (i-- > 0)
- {
- g=*gp++;
- w=g->w;
- h=g->h;
- if (w && h) {
- im=gdImageCreateTrueColor(w+2, h+2);
- gr->freetype_methods.get_shadow(g,(unsigned char *)(im->tpixels),0,&bgc,&transparent);
- gdImageCopy(gr->im, im, ((x+g->x)>>6)-1, ((y+g->y)>>6)-1, 0, 0, w+2, h+2);
- gdImageDestroy(im);
- }
- x+=g->dx;
- y+=g->dy;
- }
- } else
- bgc=transparent;
- x=p->x << 6;
- y=p->y << 6;
- gp=t->glyph;
- i=t->glyph_count;
- while (i-- > 0)
- {
- g=*gp++;
- w=g->w;
- h=g->h;
- if (w && h) {
- im=gdImageCreateTrueColor(w, h);
- gr->freetype_methods.get_glyph(g,(unsigned char *)(im->tpixels),0,&fgc,&bgc,&transparent);
- gdImageCopy(gr->im, im, (x+g->x)>>6, (y+g->y)>>6, 0, 0, w, h);
- gdImageDestroy(im);
- }
- x+=g->dx;
- y+=g->dy;
- }
- 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)
-{
- gdImageCopy(gr->im, img->im, p->x, p->y, 0, 0, img->im->sx, img->im->sy);
-}
-
-static void
-draw_drag(struct graphics_priv *gr, struct point *p)
-{
- if (p)
- gr->p=*p;
- else {
- gr->p.x=0;
- gr->p.y=0;
- }
-}
-
-
-static void
-background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc)
-{
- gr->background=gc;
-}
-
-static void
-draw_mode(struct graphics_priv *gr, enum draw_mode_num mode)
-{
- FILE *pngout;
-#if 0
- if (mode == draw_mode_begin && gr->background) {
- gdImageFilledRectangle(gr->im, 0, 0, gr->w, gr->h, gr->background->color);
- }
-#endif
- if (mode == draw_mode_end && !gr->overlay) {
- add_overlays(gr->overlays, gr->im);
- if (!(gr->flags & 1)) {
-#ifdef HAVE_GRAPHICS_GD_PNG
- rename("test.png","test.png.old");
- pngout=fopen("test.png", "wb");
- gdImagePng(gr->im, pngout);
- fclose(pngout);
-#else
- rename("test.gd","test.gd.old");
- pngout=fopen("test.gd", "wb");
- gdImageGd(gr->im, pngout);
- fclose(pngout);
-#endif
- }
- if (gr->flags & 2) {
- struct shmem_header *next=shm_next(gr);
- gr->shm_header->flag=1;
- dbg(lvl_debug,"next flag is %d\n",next->flag);
- if (!next->flag) {
- gr->shm_header=next;
- image_setup(gr);
- }
- }
-#ifdef HAVE_GRAPHICS_GD_PNG
-#ifdef HAVE_SOCKET
- if (gr->flags & 4) {
- int size, size_written;
- void *data=gdImagePngPtr(gr->im, &size);
- GList *sockets=gr->sockets;
- while (sockets) {
- int fd=socket(PF_INET, SOCK_STREAM, 0);
- if (fd < 0) {
- dbg(lvl_error,"socket failed\n");
- } else {
- if (connect(fd, (struct sockaddr *)sockets->data, sizeof(struct sockaddr_in)) < 0) {
- dbg(lvl_error,"connect failed\n");
- } else {
- size_written=write(fd, data, size);
- dbg(lvl_debug,"size %d vs %d\n",size, size_written);
- if (shutdown(fd, SHUT_RDWR) < 0)
- dbg(lvl_error,"shutdown failed\n");
- }
- close(fd);
- }
- sockets=g_list_next(sockets);
- }
- gdFree(data);
- }
-#endif
-#endif
- }
-}
-
-static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound);
-
-static void
-add_overlays(struct graphics_priv *overlay, gdImagePtr im)
-{
- while (overlay) {
- if (overlay->background) {
- gdImagePtr res,src;
- int y,x;
- int bgcol=overlay->background->color;
- res=gdImageCreateTrueColor(overlay->w,overlay->h);
- src=gdImageCreateTrueColor(overlay->w,overlay->h);
- gdImageCopy(src, im, 0, 0, overlay->p.x, overlay->p.y, overlay->w, overlay->h);
- for (y = 0 ; y < overlay->h ; y++) {
- unsigned int *res_line=res->tpixels[y];
- unsigned int *src_line=src->tpixels[y];
- unsigned int *overlay_line=overlay->im->tpixels[y];
- for (x = 0 ; x < overlay->w ; x++) {
- if (overlay_line[x] != bgcol)
- res_line[x]=overlay_line[x];
- else
- res_line[x]=src_line[x];
- }
- }
- gdImageCopy(im, res, overlay->p.x, overlay->p.y, 0, 0, overlay->w, overlay->h);
- gdImageDestroy(res);
- gdImageDestroy(src);
- } else
- gdImageCopy(im, overlay->im, overlay->p.x, overlay->p.y, 0, 0, overlay->w, overlay->h);
- overlay=overlay->next;
- }
-}
-
-static void *
-get_data(struct graphics_priv *this, char *type)
-{
- int b;
- struct point p;
- gdImagePtr im = this->im;
- dbg(lvl_debug,"type=%s\n",type);
- if (!strcmp(type,"window"))
- return &this->window;
- if (!strcmp(type,"image_png")) {
- if (this->overlays) {
- struct graphics_priv *overlay=this->overlays;
- im=gdImageCreateTrueColor(this->w,this->h);
- gdImageCopy(im, this->im, 0, 0, 0, 0, this->w, this->h);
- add_overlays(overlay, im);
- }
- if (this->image.data)
- gdFree(this->image.data);
-#ifdef HAVE_GRAPHICS_GD_PNG
- this->image.data=gdImagePngPtr(im, &this->image.size);
-#else
- this->image.data=NULL;
-#endif
- if (this->overlays)
- gdImageDestroy(im);
- return &this->image;
- }
- if (sscanf(type,"click_%d_%d_%d",&p.x,&p.y,&b) == 3) {
- dbg(lvl_debug,"click %d %d %d\n",p.x,p.y,b);
- callback_list_call_attr_3(this->cbl, attr_button, (void *)b, (void *)1, (void *)&p);
- }
- if (sscanf(type,"move_%d_%d",&p.x,&p.y) == 2) {
- dbg(lvl_debug,"move %d %d\n",p.x,p.y);
- callback_list_call_attr_1(this->cbl, attr_motion, (void *)&p);
- }
- return NULL;
-}
-
-
-static void
-image_free(struct graphics_priv *gr, struct graphics_image_priv *priv)
-{
- gdImageDestroy(priv->im);
- g_free(priv);
-}
-
-static void
-overlay_disable(struct graphics_priv *gr, int disable)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-static void
-overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h, int wraparound)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-struct shmem_header *
-shm_next(struct graphics_priv *gr)
-{
- char *next=(char *)gr->shm_header+gr->shmoffset;
- if (next+gr->shmoffset > (char *)gr->shm+gr->shmsize) {
- dbg(lvl_debug,"wraparound\n");
- return gr->shm;
- }
- dbg(lvl_debug,"next 0x%x (offset 0x%x)\n",next-(char *)gr->shm,gr->shmoffset);
- return (struct shmem_header *)next;
-
-}
-static void
-image_setup(struct graphics_priv *gr)
-{
- int i,*shm=(int *)(gr->shm_header+1);
- if (!gr->shmkey)
- return;
- for (i = 0 ; i < gr->h ; i++)
- gr->im->tpixels[i]=shm+gr->w*i;
- gr->shm_header->w=gr->w;
- gr->shm_header->h=gr->h;
- gr->shm_header->bpp=32;
- gr->shm_header->flag=0;
-}
-
-static void
-image_create(struct graphics_priv *gr)
-{
- dbg(lvl_debug,"shmkey %d\n",gr->shmkey);
-#ifdef HAVE_SHMEM
- if (gr->shmkey) {
- int size=gr->h*gr->w*sizeof(int);
- int shmid=shmget(gr->shmkey, size, 0666);
- dbg(lvl_debug,"shmid for key 0x%x is 0x%x\n",gr->shmkey, shmid);
- if (shmid < 0)
- dbg(lvl_debug,"shmget\n");
- gr->shm=shmat(shmid, NULL, 0);
- if (!gr->shm)
- dbg(lvl_debug,"shmat\n");
- gr->shm_header=gr->shm;
- gr->im=g_new0(gdImage,1);
- gr->im->tpixels=g_new(int *,gr->h);
- gr->im->sx=gr->w;
- gr->im->sy=gr->h;
- gr->im->transparent=-1;
- gr->im->trueColor=1;
- gr->im->alphaBlendingFlag=1;
- gr->im->thick=1;
- gr->im->cx2=gr->im->sx-1;
- gr->im->cy2=gr->im->sy-1;
- image_setup(gr);
- } else
-#endif
- gr->im=gdImageCreateTrueColor(gr->w,gr->h);
-}
-
-static void
-image_destroy(struct graphics_priv *gr)
-{
-#ifdef HAVE_SHMEM
- if (gr->shmkey) {
- shmdt(gr->shm);
- g_free(gr->im->tpixels);
- g_free(gr->im);
- } else
-#endif
- gdImageDestroy(gr->im);
- gr->im=NULL;
-}
-
-static int
-set_attr_do(struct graphics_priv *gr, struct attr *attr, int init)
-{
- char *s,*c,*n,*p;
- switch (attr->type) {
- case attr_w:
- if (gr->w != attr->u.num) {
- gr->w=attr->u.num;
- if (!init) {
- if (gr->im)
- image_destroy(gr);
- image_create(gr);
- emit_callback(gr);
- }
- }
- break;
- case attr_h:
- if (gr->h != attr->u.num) {
- gr->h=attr->u.num;
- if (!init) {
- if (gr->im)
- image_destroy(gr);
- image_create(gr);
- emit_callback(gr);
- }
- }
- break;
- case attr_flags:
- gr->flags=attr->u.num;
- break;
- case attr_shmkey:
- gr->shmkey=attr->u.num;
- break;
- case attr_shmsize:
- gr->shmsize=attr->u.num;
- break;
- case attr_shmoffset:
- gr->shmoffset=attr->u.num;
- break;
-#ifdef HAVE_SOCKET
- case attr_socket:
- g_list_foreach(gr->sockets, (GFunc)g_free, NULL);
- g_list_free(gr->sockets);
- gr->sockets=NULL;
- c=s=g_strdup(attr->u.str);
- dbg(lvl_debug,"s=%s\n",s);
- while (c) {
- n=strchr(c,',');
- if (n)
- *n++='\0';
- p=strchr(c,':');
- if (p) {
- *p++='\0';
- struct sockaddr_in *sin=g_new(struct sockaddr_in, 1);
- sin->sin_family=AF_INET;
- sin->sin_port=ntohs(atoi(p));
- if (inet_aton(c, &sin->sin_addr)) {
- gr->sockets=g_list_append(gr->sockets, sin);
- } else {
- dbg(lvl_error,"error in %s\n",c);
- g_free(sin);
- }
- dbg(lvl_debug,"host=%s port=%s\n",c,p);
- } else
- dbg(lvl_error,"error in format: %s\n",p);
- c=n;
- }
- g_free(s);
-#endif
- default:
- return 0;
- }
- return 1;
-}
-
-
-static int
-set_attr(struct graphics_priv *gr, struct attr *attr)
-{
- return set_attr_do(gr, attr, 0);
-}
-
-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,
- NULL,
- gc_new,
- background_gc,
- overlay_new,
- image_new,
- get_data,
- image_free,
- NULL,
- overlay_disable,
- overlay_resize,
- set_attr,
- NULL, /* show_native_keyboard */
- NULL, /* hide_native_keyboard */
-};
-
-static struct graphics_priv *
-overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound)
-{
- struct font_priv * (*font_freetype_new)(void *meth);
- struct graphics_priv *ret;
-
- dbg(lvl_debug,"enter\n");
- ret=g_new0(struct graphics_priv, 1);
- *meth=graphics_methods;
- font_freetype_new=plugin_get_category_font("freetype");
- if (!font_freetype_new)
- return NULL;
- font_freetype_new(&ret->freetype_methods);
- ret->p=*p;
- ret->w=w;
- ret->h=h;
- ret->overlay=1;
- ret->flags=1;
- ret->im=gdImageCreateTrueColor(ret->w,ret->h);
- ret->next=gr->overlays;
- gr->overlays=ret;
-
- return ret;
-}
-
-static void
-emit_callback(struct graphics_priv *priv)
-{
- callback_list_call_attr_2(priv->cbl, attr_resize, (void *)priv->w, (void *)priv->h);
-}
-
-
-static struct graphics_priv *
-graphics_gd_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct font_priv * (*font_freetype_new)(void *meth);
- struct graphics_priv *ret;
- event_request_system("glib","graphics_gd_new");
- font_freetype_new=plugin_get_category_font("freetype");
- if (!font_freetype_new)
- return NULL;
- *meth=graphics_methods;
- ret=g_new0(struct graphics_priv, 1);
- font_freetype_new(&ret->freetype_methods);
- meth->font_new=(struct graphics_font_priv *(*)(struct graphics_priv *, struct graphics_font_methods *, char *, int, int))ret->freetype_methods.font_new;
- meth->get_text_bbox=ret->freetype_methods.get_text_bbox;
- ret->cb=callback_new_attr_1(callback_cast(emit_callback), attr_navit, ret);
- navit_add_callback(nav, ret->cb);
- ret->cbl=cbl;
- ret->nav=nav;
- ret->w=800;
- ret->h=600;
- while (*attrs) {
- set_attr_do(ret, *attrs, 1);
- attrs++;
- }
- if (!ret->im)
- image_create(ret);
- return ret;
-}
-
-void
-plugin_init(void)
-{
- plugin_register_category_graphics("gd", graphics_gd_new);
-}
diff --git a/navit/graphics/gtk_drawing_area/CMakeLists.txt b/navit/graphics/gtk_drawing_area/CMakeLists.txt
deleted file mode 100644
index 19e442616..000000000
--- a/navit/graphics/gtk_drawing_area/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-set(graphics_gtk_drawing_area_LIBS ${IMLIB2_LDFLAGS} ${GTK2_LIBRARIES})
-module_add_library(graphics_gtk_drawing_area graphics_gtk_drawing_area.c)
-
diff --git a/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c b/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c
deleted file mode 100644
index 387003c40..000000000
--- a/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c
+++ /dev/null
@@ -1,1154 +0,0 @@
-/**
- * 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.
- */
-
-#define GDK_ENABLE_BROKEN
-#include "config.h"
-#include <stdlib.h>
-#include <signal.h>
-#include <sys/time.h>
-#include <math.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-#include <cairo.h>
-#include <locale.h> /* For WIN32 */
-#if !defined(GDK_Book) || !defined(GDK_Calendar)
-#include <X11/XF86keysym.h>
-#endif
-#ifdef HAVE_IMLIB2
-#include <Imlib2.h>
-#endif
-
-#ifndef _WIN32
-#include <gdk/gdkx.h>
-#endif
-#include "event.h"
-#include "debug.h"
-#include "point.h"
-#include "graphics.h"
-#include "color.h"
-#include "item.h"
-#include "window.h"
-#include "callback.h"
-#include "keys.h"
-#include "plugin.h"
-#include "navit/font/freetype/font_freetype.h"
-#include "navit.h"
-
-#ifndef GDK_Book
-#define GDK_Book XF86XK_Book
-#endif
-#ifndef GDK_Calendar
-#define GDK_Calendar XF86XK_Calendar
-#endif
-
-
-struct graphics_priv {
- GdkEventButton button_event;
- int button_timeout;
- GtkWidget *widget;
- GtkWidget *win;
- struct window window;
- cairo_t *cairo;
- struct point p;
- int width;
- int height;
- int win_w;
- int win_h;
- int visible;
- int overlay_disabled;
- int overlay_autodisabled;
- int wraparound;
- struct graphics_priv *parent;
- struct graphics_priv *overlays;
- struct graphics_priv *next;
- struct graphics_gc_priv *background_gc;
- struct callback_list *cbl;
- struct font_freetype_methods freetype_methods;
- struct navit *nav;
- int pid;
- struct timeval button_press[8];
- struct timeval button_release[8];
- int timeout;
- int delay;
- char *window_title;
-};
-
-
-struct graphics_gc_priv {
- struct graphics_priv *gr;
- struct color c;
- double linewidth;
- double *dashes;
- int ndashes;
- double offset;
-};
-
-struct graphics_image_priv {
- GdkPixbuf *pixbuf;
- int w;
- int h;
-#ifdef HAVE_IMLIB2
- void *image;
-#endif
-};
-
-static void
-graphics_destroy(struct graphics_priv *gr)
-{
- dbg(lvl_debug,"enter parent %p\n",gr->parent);
- gr->freetype_methods.destroy();
- if (!gr->parent) {
- dbg(lvl_debug,"enter win %p\n",gr->win);
- if (gr->win)
- gtk_widget_destroy(gr->win);
- dbg(lvl_debug,"widget %p\n",gr->widget);
- if (gr->widget)
- gtk_widget_destroy(gr->widget);
- g_free(gr->window_title);
- }
- g_free(gr);
-}
-
-static void
-gc_destroy(struct graphics_gc_priv *gc)
-{
- g_free(gc);
-}
-
-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 w, int offset, unsigned char *dash_list, int n)
-{
- int i;
- g_free(gc->dashes);
- gc->ndashes=n;
- gc->offset=offset;
- if(n) {
- gc->dashes=g_malloc_n(n, sizeof(double));
- for (i=0; i<n; i++) {
- gc->dashes[i]=dash_list[i];
- }
- } else {
- gc->dashes=NULL;
- }
-}
-
-static void
-gc_set_foreground(struct graphics_gc_priv *gc, struct color *c)
-{
- gc->c=*c;
-}
-
-static void
-gc_set_background(struct graphics_gc_priv *gc, struct color *c)
-{
-}
-
-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_new(struct graphics_gc_priv, 1);
-
- *meth=gc_methods;
- gc->gr=gr;
-
- gc->linewidth=1;
- gc->c.r=0;
- gc->c.g=0;
- gc->c.b=0;
- gc->c.a=0;
- gc->dashes=NULL;
- gc->ndashes=0;
- gc->offset=0;
-
- return gc;
-}
-
-
-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)
-{
- GdkPixbuf *pixbuf;
- struct graphics_image_priv *ret;
- const char *option;
-
- if (!strcmp(name,"buffer:")) {
- struct graphics_image_buffer *buffer=(struct graphics_image_buffer *)name;
- GdkPixbufLoader *loader=gdk_pixbuf_loader_new();
- if (!loader)
- return NULL;
- if (*w != IMAGE_W_H_UNSET || *h != IMAGE_W_H_UNSET)
- gdk_pixbuf_loader_set_size(loader, *w, *h);
- gdk_pixbuf_loader_write(loader, buffer->start, buffer->len, NULL);
- gdk_pixbuf_loader_close(loader, NULL);
- pixbuf=gdk_pixbuf_loader_get_pixbuf(loader);
- g_object_ref(pixbuf);
- g_object_unref(loader);
- } else {
- if (*w == IMAGE_W_H_UNSET && *h == IMAGE_W_H_UNSET)
- pixbuf=gdk_pixbuf_new_from_file(name, NULL);
- else
- pixbuf=gdk_pixbuf_new_from_file_at_size(name, *w, *h, NULL);
- }
-
- if (!pixbuf)
- return NULL;
-
- if (rotation) {
- GdkPixbuf *tmp;
- switch (rotation) {
- case 90:
- rotation=270;
- break;
- case 180:
- break;
- case 270:
- rotation=90;
- break;
- default:
- return NULL;
- }
-
- tmp=gdk_pixbuf_rotate_simple(pixbuf, rotation);
-
- if (!tmp) {
- g_object_unref(pixbuf);
- return NULL;
- }
-
- g_object_unref(pixbuf);
- pixbuf=tmp;
- }
-
- ret=g_new0(struct graphics_image_priv, 1);
- ret->pixbuf=pixbuf;
- ret->w=gdk_pixbuf_get_width(pixbuf);
- ret->h=gdk_pixbuf_get_height(pixbuf);
- *w=ret->w;
- *h=ret->h;
- if (hot) {
- option=gdk_pixbuf_get_option(pixbuf, "x_hot");
- if (option)
- hot->x=atoi(option);
- else
- hot->x=ret->w/2-1;
- option=gdk_pixbuf_get_option(pixbuf, "y_hot");
- if (option)
- hot->y=atoi(option);
- else
- hot->y=ret->h/2-1;
- }
- return ret;
-}
-
-static void
-image_free(struct graphics_priv *gr, struct graphics_image_priv *priv)
-{
- g_object_unref(priv->pixbuf);
- g_free(priv);
-}
-
-static void
-set_drawing_color(cairo_t *cairo, struct color c)
-{
- double col_max = 1<<COLOR_BITDEPTH;
- cairo_set_source_rgba(cairo, c.r/col_max, c.g/col_max, c.b/col_max, c.a/col_max);
-}
-
-static void
-set_stroke_params_from_gc(cairo_t *cairo, struct graphics_gc_priv *gc)
-{
- set_drawing_color(cairo, gc->c);
- cairo_set_dash(cairo, gc->dashes, gc->ndashes, gc->offset);
- cairo_set_line_width(cairo, gc->linewidth);
-}
-
-static void
-draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- int i;
- if (!count)
- return;
- cairo_move_to(gr->cairo, p[0].x, p[0].y);
- for (i=1; i<count; i++) {
- cairo_line_to(gr->cairo, p[i].x, p[i].y);
- }
- set_stroke_params_from_gc(gr->cairo, gc);
- cairo_stroke(gr->cairo);
-}
-
-static void
-draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- int i;
- set_drawing_color(gr->cairo, gc->c);
- cairo_move_to(gr->cairo, p[0].x, p[0].y);
- for (i=1; i<count; i++) {
- cairo_line_to(gr->cairo, p[i].x, p[i].y);
- }
- cairo_fill(gr->cairo);
-}
-
-static void
-draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h)
-{
- cairo_save(gr->cairo);
- // Use OPERATOR_SOURCE to overwrite old contents even when drawing with transparency.
- // Necessary for OSD drawing.
- cairo_set_operator(gr->cairo, CAIRO_OPERATOR_SOURCE);
- cairo_rectangle(gr->cairo, p->x, p->y, w, h);
- set_drawing_color(gr->cairo, gc->c);
- cairo_fill(gr->cairo);
- cairo_restore(gr->cairo);
-}
-
-static void
-draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r)
-{
- cairo_arc (gr->cairo, p->x, p->y, r/2, 0.0, 2*M_PI);
- set_stroke_params_from_gc(gr->cairo, gc);
- cairo_stroke(gr->cairo);
-}
-
-static void
-draw_rgb_image_buffer(cairo_t *cairo, int buffer_width, int buffer_height, int draw_pos_x, int draw_pos_y, int stride, unsigned char *buffer)
-{
- cairo_surface_t *buffer_surface = cairo_image_surface_create_for_data(
- buffer, CAIRO_FORMAT_ARGB32, buffer_width, buffer_height, stride);
- cairo_set_source_surface(cairo, buffer_surface, draw_pos_x, draw_pos_y);
- cairo_paint(cairo);
- cairo_surface_destroy(buffer_surface);
-}
-
-static void
-display_text_draw(struct font_freetype_text *text, struct graphics_priv *gr, struct graphics_gc_priv *fg, struct graphics_gc_priv *bg, struct point *p)
-{
- int i,x,y,stride;
- struct font_freetype_glyph *g, **gp;
- struct color transparent={0x0,0x0,0x0,0x0};
-
- 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 ) {
- unsigned char *shadow;
- stride=cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, g->w+2);
- shadow=g_malloc(stride*(g->h+2));
- gr->freetype_methods.get_shadow(g, shadow, stride, &bg->c, &transparent);
- draw_rgb_image_buffer(gr->cairo, g->w+2, g->h+2, ((x+g->x)>>6)-1, ((y+g->y)>>6)-1, stride, 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) {
- unsigned char *glyph;
- stride=cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, g->w);
- glyph=g_malloc(stride*g->h);
- gr->freetype_methods.get_glyph(g, glyph, stride, &fg->c, bg?&bg->c:&transparent, &transparent);
- draw_rgb_image_buffer(gr->cairo, g->w, g->h, (x+g->x)>>6, (y+g->y)>>6, stride, 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)
-{
- struct font_freetype_text *t;
-
- if (! font)
- {
- dbg(lvl_error,"no font, returning\n");
- return;
- }
-#if 0 /* Temporarily disabled because it destroys text rendering of overlays and in gui internal in some places */
- /*
- This needs an improvement, no one checks if the strings are visible
- */
- if (p->x > gr->width-50 || p->y > gr->height-50) {
- return;
- }
- if (p->x < -50 || p->y < -50) {
- return;
- }
-#endif
- if (bg && !bg->c.a)
- bg=NULL;
- t=gr->freetype_methods.text_new(text, (struct font_freetype_font *)font, dx, dy);
- display_text_draw(t, gr, fg, bg, p);
- 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)
-{
- gdk_cairo_set_source_pixbuf(gr->cairo, img->pixbuf, p->x, p->y);
- cairo_paint(gr->cairo);
-}
-
-static unsigned char*
-create_buffer_with_stride_if_required(unsigned char *input_buffer, int w, int h, size_t bytes_per_pixel, size_t output_stride)
-{
- int line;
- size_t input_offset, output_offset;
- unsigned char *out_buf;
- size_t input_stride = w*bytes_per_pixel;
- if (input_stride == output_stride) {
- return NULL;
- }
-
- out_buf = g_malloc(h*output_stride);
- for (line = 0; line < h; line++) {
- input_offset = line*input_stride;
- output_offset = line*output_stride;
- memcpy(out_buf+output_offset, input_buffer+input_offset, input_stride);
- }
- return out_buf;
-}
-
-#ifdef HAVE_IMLIB2
-static void
-draw_image_warp(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, int count, struct graphics_image_priv *img)
-{
- int w,h;
- DATA32 *intermediate_buffer;
- unsigned char* intermediate_buffer_aligned;
- Imlib_Image intermediate_image;
- size_t stride;
- dbg(lvl_debug,"draw_image_warp data=%p\n", img);
- w = img->w;
- h = img->h;
- if (!img->image) {
- int x,y;
- img->image=imlib_create_image(w, h);
- imlib_context_set_image(img->image);
- if (gdk_pixbuf_get_colorspace(img->pixbuf) != GDK_COLORSPACE_RGB || gdk_pixbuf_get_bits_per_sample(img->pixbuf) != 8) {
- dbg(lvl_error,"implement me\n");
- } else if (gdk_pixbuf_get_has_alpha(img->pixbuf) && gdk_pixbuf_get_n_channels(img->pixbuf) == 4) {
- for (y=0 ; y < h ; y++) {
- unsigned int *dst=imlib_image_get_data()+y*w;
- unsigned char *src=gdk_pixbuf_get_pixels(img->pixbuf)+y*gdk_pixbuf_get_rowstride(img->pixbuf);
- for (x=0 ; x < w ; x++) {
- *dst++=0xff000000|(src[0] << 16)|(src[1] << 8)|src[2];
- src+=4;
- }
- }
- } else if (!gdk_pixbuf_get_has_alpha(img->pixbuf) && gdk_pixbuf_get_n_channels(img->pixbuf) == 3) {
- for (y=0 ; y < h ; y++) {
- unsigned int *dst=imlib_image_get_data()+y*w;
- unsigned char *src=gdk_pixbuf_get_pixels(img->pixbuf)+y*gdk_pixbuf_get_rowstride(img->pixbuf);
- for (x=0 ; x < w ; x++) {
- *dst++=0xff000000|(src[0] << 16)|(src[1] << 8)|src[2];
- src+=3;
- }
- }
- } else {
- dbg(lvl_error,"implement me\n");
- }
-
- }
-
- intermediate_buffer = g_malloc0(gr->width*gr->height*4);
- intermediate_image = imlib_create_image_using_data(gr->width, gr->height, intermediate_buffer);
- imlib_context_set_image(intermediate_image);
- imlib_image_set_has_alpha(1);
-
- if (count == 3) {
- /* 0 1
- 2 */
- imlib_blend_image_onto_image_skewed(img->image, 1, 0, 0, w, h, p[0].x, p[0].y, p[1].x-p[0].x, p[1].y-p[0].y, p[2].x-p[0].x, p[2].y-p[0].y);
- }
- if (count == 2) {
- /* 0
- 1 */
- imlib_blend_image_onto_image_skewed(img->image, 1, 0, 0, w, h, p[0].x, p[0].y, p[1].x-p[0].x, 0, 0, p[1].y-p[0].y);
- }
- if (count == 1) {
- /*
- 0
- */
- imlib_blend_image_onto_image_skewed(img->image, 1, 0, 0, w, h, p[0].x-w/2, p[0].y-h/2, w, 0, 0, h);
- }
-
- stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, gr->width);
- intermediate_buffer_aligned = create_buffer_with_stride_if_required(
- (unsigned char* )intermediate_buffer, gr->width, gr->height, sizeof(DATA32), stride);
- cairo_surface_t *buffer_surface = cairo_image_surface_create_for_data(
- intermediate_buffer_aligned ? intermediate_buffer_aligned : (unsigned char*)intermediate_buffer,
- CAIRO_FORMAT_ARGB32, gr->width, gr->height, stride);
- cairo_set_source_surface(gr->cairo, buffer_surface, 0, 0);
- cairo_paint(gr->cairo);
-
- cairo_surface_destroy(buffer_surface);
- imlib_free_image();
- g_free(intermediate_buffer);
- g_free(intermediate_buffer_aligned);
-}
-#endif
-
-static void
-overlay_rect(struct graphics_priv *parent, struct graphics_priv *overlay, GdkRectangle *r)
-{
- r->x=overlay->p.x;
- r->y=overlay->p.y;
- r->width=overlay->width;
- r->height=overlay->height;
- if (!overlay->wraparound)
- return;
- if (r->x < 0)
- r->x += parent->width;
- if (r->y < 0)
- r->y += parent->height;
- if (r->width < 0)
- r->width += parent->width;
- if (r->height < 0)
- r->height += parent->height;
-}
-
-static void
-overlay_draw(struct graphics_priv *parent, struct graphics_priv *overlay, GdkRectangle *re, cairo_t *cairo)
-{
- GdkRectangle or, ir;
- if (parent->overlay_disabled || overlay->overlay_disabled || overlay->overlay_autodisabled)
- return;
- overlay_rect(parent, overlay, &or);
- if (! gdk_rectangle_intersect(re, &or, &ir))
- return;
- or.x-=re->x;
- or.y-=re->y;
- cairo_surface_t *overlay_surface = cairo_get_target(overlay->cairo);
- cairo_set_source_surface(cairo, overlay_surface, or.x, or.y);
- cairo_paint(cairo);
-}
-
-static void
-draw_drag(struct graphics_priv *gr, struct point *p)
-{
- if (p)
- gr->p=*p;
- else {
- gr->p.x=0;
- gr->p.y=0;
- }
-}
-
-
-static void
-background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc)
-{
- gr->background_gc=gc;
-}
-
-static void
-draw_mode(struct graphics_priv *gr, enum draw_mode_num mode)
-{
- if (mode == draw_mode_end) {
- // Just invalidate the whole window. We could only the invalidate the area of
- // graphics_priv, but that is probably not significantly faster.
- gdk_window_invalidate_rect(gr->widget->window, NULL, TRUE);
- }
-}
-
-/* Events */
-
-static gint
-configure(GtkWidget * widget, GdkEventConfigure * event, gpointer user_data)
-{
- struct graphics_priv *gra=user_data;
- if (! gra->visible)
- return TRUE;
-#ifndef _WIN32
- dbg(lvl_debug,"window=%lu\n", GDK_WINDOW_XID(widget->window));
-#endif
- gra->width=widget->allocation.width;
- gra->height=widget->allocation.height;
- cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, gra->width, gra->height);
- if (gra->cairo)
- cairo_destroy(gra->cairo);
- gra->cairo = cairo_create(surface);
- cairo_surface_destroy(surface);
- cairo_set_antialias (gra->cairo, CAIRO_ANTIALIAS_GOOD);
- callback_list_call_attr_2(gra->cbl, attr_resize, GINT_TO_POINTER(gra->width), GINT_TO_POINTER(gra->height));
- return TRUE;
-}
-
-static gint
-expose(GtkWidget * widget, GdkEventExpose * event, gpointer user_data)
-{
- struct graphics_priv *gra=user_data;
- struct graphics_gc_priv *background_gc=gra->background_gc;
- struct graphics_priv *overlay;
-
- gra->visible=1;
- if (! gra->cairo)
- configure(widget, NULL, user_data);
-
- cairo_t *cairo=gdk_cairo_create(widget->window);
- if (gra->p.x || gra->p.y) {
- set_drawing_color(cairo, background_gc->c);
- cairo_paint(cairo);
- }
- cairo_set_source_surface(cairo, cairo_get_target(gra->cairo), gra->p.x, gra->p.y);
- cairo_paint(cairo);
-
- overlay = gra->overlays;
- while (overlay) {
- overlay_draw(gra,overlay,&event->area,cairo);
- overlay=overlay->next;
- }
-
- cairo_destroy(cairo);
- return FALSE;
-}
-
-static int
-tv_delta(struct timeval *old, struct timeval *new)
-{
- if (new->tv_sec-old->tv_sec >= INT_MAX/1000)
- return INT_MAX;
- return (new->tv_sec-old->tv_sec)*1000+(new->tv_usec-old->tv_usec)/1000;
-}
-
-static gint
-button_press(GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-{
- struct graphics_priv *this=user_data;
- struct point p;
- struct timeval tv;
- struct timezone tz;
-
- gettimeofday(&tv, &tz);
-
- if (event->button < 8) {
- if (tv_delta(&this->button_press[event->button], &tv) < this->timeout)
- return FALSE;
- this->button_press[event->button]= tv;
- this->button_release[event->button].tv_sec=0;
- this->button_release[event->button].tv_usec=0;
- }
- p.x=event->x;
- p.y=event->y;
- callback_list_call_attr_3(this->cbl, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER(event->button), (void *)&p);
- return FALSE;
-}
-
-static gint
-button_release(GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-{
- struct graphics_priv *this=user_data;
- struct point p;
- struct timeval tv;
- struct timezone tz;
-
- gettimeofday(&tv, &tz);
-
- if (event->button < 8) {
- if (tv_delta(&this->button_release[event->button], &tv) < this->timeout)
- return FALSE;
- this->button_release[event->button]= tv;
- this->button_press[event->button].tv_sec=0;
- this->button_press[event->button].tv_usec=0;
- }
- p.x=event->x;
- p.y=event->y;
- callback_list_call_attr_3(this->cbl, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(event->button), (void *)&p);
- return FALSE;
-}
-
-
-
-static gint
-scroll(GtkWidget * widget, GdkEventScroll * event, gpointer user_data)
-{
- struct graphics_priv *this=user_data;
- struct point p;
- int button;
-
- p.x=event->x;
- p.y=event->y;
- switch (event->direction) {
- case GDK_SCROLL_UP:
- button=4;
- break;
- case GDK_SCROLL_DOWN:
- button=5;
- break;
- default:
- button=-1;
- break;
- }
- if (button != -1) {
- callback_list_call_attr_3(this->cbl, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER(button), (void *)&p);
- callback_list_call_attr_3(this->cbl, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(button), (void *)&p);
- }
- return FALSE;
-}
-
-static gint
-motion_notify(GtkWidget * widget, GdkEventMotion * event, gpointer user_data)
-{
- struct graphics_priv *this=user_data;
- struct point p;
-
- p.x=event->x;
- p.y=event->y;
- callback_list_call_attr_1(this->cbl, attr_motion, (void *)&p);
- return FALSE;
-}
-
-/* *
- * * Exit navit (X pressed)
- * * @param widget active widget
- * * @param event the event (delete_event)
- * * @param user_data Pointer to private data structure
- * * @returns TRUE
- * */
-static gint
-delete(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
-{
- struct graphics_priv *this=user_data;
- dbg(lvl_debug,"enter this->win=%p\n",this->win);
- if (this->delay & 2) {
- if (this->win)
- this->win=NULL;
- } else {
- callback_list_call_attr_0(this->cbl, attr_window_closed);
- }
- return TRUE;
-}
-
-static gint
-keypress(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
-{
- struct graphics_priv *this=user_data;
- int len,ucode;
- char key[8];
- ucode=gdk_keyval_to_unicode(event->keyval);
- len=g_unichar_to_utf8(ucode, key);
- key[len]='\0';
-
- switch (event->keyval) {
- case GDK_Up:
- key[0]=NAVIT_KEY_UP;
- key[1]='\0';
- break;
- case GDK_Down:
- key[0]=NAVIT_KEY_DOWN;
- key[1]='\0';
- break;
- case GDK_Left:
- key[0]=NAVIT_KEY_LEFT;
- key[1]='\0';
- break;
- case GDK_Right:
- key[0]=NAVIT_KEY_RIGHT;
- key[1]='\0';
- break;
- case GDK_BackSpace:
- key[0]=NAVIT_KEY_BACKSPACE;
- key[1]='\0';
- break;
- case GDK_Tab:
- key[0]='\t';
- key[1]='\0';
- break;
- case GDK_Delete:
- key[0]=NAVIT_KEY_DELETE;
- key[1]='\0';
- break;
- case GDK_Escape:
- key[0]=NAVIT_KEY_BACK;
- key[1]='\0';
- break;
- case GDK_Return:
- case GDK_KP_Enter:
- key[0]=NAVIT_KEY_RETURN;
- key[1]='\0';
- break;
- case GDK_Book:
-#ifdef USE_HILDON
- case GDK_F7:
-#endif
- key[0]=NAVIT_KEY_ZOOM_IN;
- key[1]='\0';
- break;
- case GDK_Calendar:
-#ifdef USE_HILDON
- case GDK_F8:
-#endif
- key[0]=NAVIT_KEY_ZOOM_OUT;
- key[1]='\0';
- break;
- case GDK_Page_Up:
- key[0]=NAVIT_KEY_PAGE_UP;
- key[1]='\0';
- break;
- case GDK_Page_Down:
- key[0]=NAVIT_KEY_PAGE_DOWN;
- key[1]='\0';
- break;
- }
- if (key[0])
- callback_list_call_attr_1(this->cbl, attr_keypress, (void *)key);
- else
- dbg(lvl_debug,"keyval 0x%x\n", event->keyval);
-
- return FALSE;
-}
-
-static struct graphics_priv *graphics_gtk_drawing_area_new_helper(struct graphics_methods *meth);
-
-static void
-overlay_disable(struct graphics_priv *gr, int disabled)
-{
- if (!gr->overlay_disabled != !disabled) {
- gr->overlay_disabled=disabled;
- if (gr->parent) {
- GdkRectangle r;
- overlay_rect(gr->parent, gr, &r);
- gdk_window_invalidate_rect(gr->parent->widget->window, &r, TRUE);
- }
- }
-}
-
-static void
-overlay_resize(struct graphics_priv *this, struct point *p, int w, int h, int wraparound)
-{
- //do not dereference parent for non overlay osds
- if(!this->parent) {
- return;
- }
-
- int changed = 0;
- int w2,h2;
-
- if (w == 0) {
- w2 = 1;
- } else {
- w2 = w;
- }
-
- if (h == 0) {
- h2 = 1;
- } else {
- h2 = h;
- }
-
- this->p = *p;
- if (this->width != w2) {
- this->width = w2;
- changed = 1;
- }
-
- if (this->height != h2) {
- this->height = h2;
- changed = 1;
- }
-
- this->wraparound = wraparound;
-
- if (changed) {
- cairo_destroy(this->cairo);
- cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, w2, h2);
- this->cairo=cairo_create(surface);
- cairo_surface_destroy(surface);
-
- if ((w == 0) || (h == 0)) {
- this->overlay_autodisabled = 1;
- } else {
- this->overlay_autodisabled = 0;
- }
-
- callback_list_call_attr_2(this->cbl, attr_resize, GINT_TO_POINTER(this->width), GINT_TO_POINTER(this->height));
- }
-}
-
-static void
-get_data_window(struct graphics_priv *this, unsigned int xid)
-{
- if (!xid)
- this->win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- else
- this->win = gtk_plug_new(xid);
- if (!gtk_widget_get_parent(this->widget))
- gtk_widget_ref(this->widget);
- gtk_window_set_default_size(GTK_WINDOW(this->win), this->win_w, this->win_h);
- dbg(lvl_debug,"h= %i, w= %i\n",this->win_h, this->win_w);
- gtk_window_set_title(GTK_WINDOW(this->win), this->window_title);
- gtk_window_set_wmclass (GTK_WINDOW (this->win), "navit", this->window_title);
- gtk_widget_realize(this->win);
- if (gtk_widget_get_parent(this->widget))
- gtk_widget_reparent(this->widget, this->win);
- else
- gtk_container_add(GTK_CONTAINER(this->win), this->widget);
- gtk_widget_show_all(this->win);
- GTK_WIDGET_SET_FLAGS (this->widget, GTK_CAN_FOCUS);
- gtk_widget_set_sensitive(this->widget, TRUE);
- gtk_widget_grab_focus(this->widget);
- g_signal_connect(G_OBJECT(this->widget), "key-press-event", G_CALLBACK(keypress), this);
- g_signal_connect(G_OBJECT(this->win), "delete_event", G_CALLBACK(delete), this);
-}
-
-static int
-set_attr(struct graphics_priv *gr, struct attr *attr)
-{
- dbg(lvl_debug,"enter\n");
- switch (attr->type) {
- case attr_windowid:
- get_data_window(gr, attr->u.num);
- return 1;
- default:
- return 0;
- }
-}
-
-static struct graphics_priv *
-overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound)
-{
- int w2,h2;
- struct graphics_priv *this=graphics_gtk_drawing_area_new_helper(meth);
- this->widget=gr->widget;
- this->p=*p;
- this->width=w;
- this->height=h;
- this->parent=gr;
-
- /* If either height or width is 0, we set it to 1 to avoid warnings, and
- * disable the overlay. */
- if (h == 0) {
- h2 = 1;
- } else {
- h2 = h;
- }
-
- if (w == 0) {
- w2 = 1;
- } else {
- w2 = w;
- }
-
- cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, w2, h2);
- this->cairo=cairo_create(surface);
- cairo_surface_destroy(surface);
-
- if ((w == 0) || (h == 0)) {
- this->overlay_autodisabled = 1;
- } else {
- this->overlay_autodisabled = 0;
- }
-
- this->next=gr->overlays;
- this->wraparound=wraparound;
- gr->overlays=this;
- return this;
-}
-
-static int gtk_argc;
-static char **gtk_argv={NULL};
-
-
-static int
-graphics_gtk_drawing_area_fullscreen(struct window *w, int on)
-{
- struct graphics_priv *gr=w->priv;
- if (on)
- gtk_window_fullscreen(GTK_WINDOW(gr->win));
- else
- gtk_window_unfullscreen(GTK_WINDOW(gr->win));
- return 1;
-}
-
-static void
-graphics_gtk_drawing_area_disable_suspend(struct window *w)
-{
- struct graphics_priv *gr=w->priv;
-
-#ifndef _WIN32
- if (gr->pid)
- kill(gr->pid, SIGWINCH);
-#else
- dbg(lvl_warning, "failed to kill() under Windows\n");
-#endif
-}
-
-
-static void *
-get_data(struct graphics_priv *this, char const *type)
-{
- FILE *f;
- if (!strcmp(type,"gtk_widget"))
- return this->widget;
-#ifndef _WIN32
- if (!strcmp(type,"xwindow_id"))
- return (void *)GDK_WINDOW_XID(this->win ? this->win->window : this->widget->window);
-#endif
- if (!strcmp(type,"window")) {
- char *cp = getenv("NAVIT_XID");
- unsigned xid = 0;
- if (cp)
- xid = strtol(cp, NULL, 0);
- if (!(this->delay & 1))
- get_data_window(this, xid);
- this->window.fullscreen=graphics_gtk_drawing_area_fullscreen;
- this->window.disable_suspend=graphics_gtk_drawing_area_disable_suspend;
- this->window.priv=this;
-#if !defined(_WIN32) && !defined(__CEGCC__)
- f=popen("pidof /usr/bin/ipaq-sleep","r");
- if (f) {
- fscanf(f,"%d",&this->pid);
- dbg(lvl_debug,"ipaq_sleep pid=%d\n", this->pid);
- pclose(f);
- }
-#endif
- return &this->window;
- }
- return NULL;
-}
-
-static struct graphics_methods graphics_methods = {
- graphics_destroy,
- draw_mode,
- draw_lines,
- draw_polygon,
- draw_rectangle,
- draw_circle,
- draw_text,
- draw_image,
-#ifdef HAVE_IMLIB2
- draw_image_warp,
-#else
- NULL,
-#endif
- draw_drag,
- NULL, /* font_new */
- gc_new,
- background_gc,
- overlay_new,
- image_new,
- get_data,
- image_free,
- NULL, /* get_text_bbox */
- overlay_disable,
- overlay_resize,
- set_attr,
- NULL, /* show_native_keyboard */
- NULL, /* hide_native_keyboard */
-};
-
-static struct graphics_priv *
-graphics_gtk_drawing_area_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 struct graphics_priv *
-graphics_gtk_drawing_area_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- int i;
- GtkWidget *draw;
- struct attr *attr;
-
- if (! event_request_system("glib","graphics_gtk_drawing_area_new"))
- return NULL;
-
- draw=gtk_drawing_area_new();
- struct graphics_priv *this=graphics_gtk_drawing_area_new_helper(meth);
- this->nav = nav;
- this->widget=draw;
- this->win_w=792;
- if ((attr=attr_search(attrs, NULL, attr_w)))
- this->win_w=attr->u.num;
- this->win_h=547;
- if ((attr=attr_search(attrs, NULL, attr_h)))
- this->win_h=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;
- if ((attr=attr_search(attrs, NULL, attr_window_title)))
- this->window_title=g_strdup(attr->u.str);
- else
- this->window_title=g_strdup("Navit");
- this->cbl=cbl;
- gtk_widget_set_events(draw, GDK_BUTTON_PRESS_MASK|GDK_BUTTON_RELEASE_MASK|GDK_POINTER_MOTION_MASK|GDK_KEY_PRESS_MASK);
- g_signal_connect(G_OBJECT(draw), "expose_event", G_CALLBACK(expose), this);
- g_signal_connect(G_OBJECT(draw), "configure_event", G_CALLBACK(configure), this);
- g_signal_connect(G_OBJECT(draw), "button_press_event", G_CALLBACK(button_press), this);
- g_signal_connect(G_OBJECT(draw), "button_release_event", G_CALLBACK(button_release), this);
- g_signal_connect(G_OBJECT(draw), "scroll_event", G_CALLBACK(scroll), this);
- g_signal_connect(G_OBJECT(draw), "motion_notify_event", G_CALLBACK(motion_notify), this);
- g_signal_connect(G_OBJECT(draw), "delete_event", G_CALLBACK(delete), nav);
-
- for (i = 0; i < 8; i++) {
- this->button_press[i].tv_sec = 0;
- this->button_press[i].tv_usec = 0;
- this->button_release[i].tv_sec = 0;
- this->button_release[i].tv_usec = 0;
- }
-
- return this;
-}
-
-void
-plugin_init(void)
-{
- gtk_init(&gtk_argc, &gtk_argv);
- gtk_set_locale();
-#ifdef HAVE_API_WIN32
- setlocale(LC_NUMERIC, "C"); /* WIN32 gtk resets LC_NUMERIC */
-#endif
- plugin_register_category_graphics("gtk_drawing_area", graphics_gtk_drawing_area_new);
-}
diff --git a/navit/graphics/null/CMakeLists.txt b/navit/graphics/null/CMakeLists.txt
deleted file mode 100644
index f9cd65ecf..000000000
--- a/navit/graphics/null/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(graphics_null graphics_null.c)
diff --git a/navit/graphics/null/graphics_null.c b/navit/graphics/null/graphics_null.c
deleted file mode 100644
index ecac7d528..000000000
--- a/navit/graphics/null/graphics_null.c
+++ /dev/null
@@ -1,359 +0,0 @@
-/**
- * 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>
-# define sleep(i) Sleep(i * 1000)
-#endif
-
-static struct callback_list* callbacks;
-
-static struct graphics_priv {
- int dummy;
-} graphics_priv;
-
-static struct graphics_font_priv {
- int dummy;
-} graphics_font_priv;
-
-static struct graphics_gc_priv {
- int dummy;
-} graphics_gc_priv;
-
-static struct graphics_image_priv {
- int dummy;
-} graphics_image_priv;
-
-static void
-graphics_destroy(struct graphics_priv *gr)
-{
-}
-
-static void font_destroy(struct graphics_font_priv *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)
-{
- *meth=font_methods;
- return &graphics_font_priv;
-}
-
-static void
-gc_destroy(struct graphics_gc_priv *gc)
-{
-}
-
-static void
-gc_set_linewidth(struct graphics_gc_priv *gc, int w)
-{
-}
-
-static void
-gc_set_dashes(struct graphics_gc_priv *gc, int w, int offset, unsigned char *dash_list, int n)
-{
-}
-
-static void
-gc_set_foreground(struct graphics_gc_priv *gc, struct color *c)
-{
-}
-
-static void
-gc_set_background(struct graphics_gc_priv *gc, struct color *c)
-{
-}
-
-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)
-{
- *meth=gc_methods;
- return &graphics_gc_priv;
-}
-
-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)
-{
- return &graphics_image_priv;
-}
-
-static void
-draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
-}
-
-static void
-draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
-}
-
-static void
-draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h)
-{
-}
-
-static void
-draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r)
-{
-}
-
-
-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)
-{
-}
-
-static void
-draw_image(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img)
-{
-}
-
-static void draw_drag(struct graphics_priv *gr, struct point *p)
-{
-}
-
-static void
-background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc)
-{
-}
-
-static void
-draw_mode(struct graphics_priv *gr, enum draw_mode_num mode)
-{
-}
-
-static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound);
-
-static void
-resize_callback(int w, int h)
-{
- callback_list_call_attr_2(callbacks, attr_resize,
- GINT_TO_POINTER(1), GINT_TO_POINTER(1));
-}
-
-static int
-graphics_null_fullscreen(struct window *w, int on)
-{
- return 1;
-}
-
-static void
-graphics_null_disable_suspend(struct window *w)
-{
-}
-
-static void *
-get_data(struct graphics_priv *this, char const *type)
-{
- if (strcmp(type, "window") == 0) {
- struct window *win;
- win = g_new0(struct window, 1);
- win->priv = this;
- win->fullscreen = graphics_null_fullscreen;
- win->disable_suspend = graphics_null_disable_suspend;
- resize_callback(1,1);
- return win;
- }
- return NULL;
-}
-
-static void image_free(struct graphics_priv *gr, struct graphics_image_priv *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)
-{
-}
-
-static void overlay_disable(struct graphics_priv *gr, int disable)
-{
-}
-
-static void overlay_resize(struct graphics_priv *gr, 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,
- 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,
- NULL, /* show_native_keyboard */
- NULL, /* hide_native_keyboard */
-};
-
-static struct graphics_priv *
-overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound)
-{
- *meth=graphics_methods;
- return &graphics_priv;
-}
-
-
-static struct graphics_priv *
-graphics_null_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct attr *event_loop_system = NULL;
- *meth=graphics_methods;
-
- 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_null"))
- return NULL;
- } else {
- if (!event_request_system("null", "graphics_null"))
- return NULL;
- }
- callbacks = cbl;
- resize_callback(1,1);
- return &graphics_priv;
-}
-
-static void
-event_null_main_loop_run(void)
-{
-
- dbg(lvl_debug,"enter\n");
- for (;;)
- sleep(1);
-
-}
-
-static void event_null_main_loop_quit(void)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-static struct event_watch *
-event_null_add_watch(int h, enum event_watch_cond cond, struct callback *cb)
-{
- dbg(lvl_debug,"enter\n");
- return NULL;
-}
-
-static void
-event_null_remove_watch(struct event_watch *ev)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-
-static struct event_timeout *
-event_null_add_timeout(int timeout, int multi, struct callback *cb)
-{
- dbg(lvl_debug,"enter\n");
- return NULL;
-}
-
-static void
-event_null_remove_timeout(struct event_timeout *to)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-
-static struct event_idle *
-event_null_add_idle(int priority, struct callback *cb)
-{
- dbg(lvl_debug,"enter\n");
- return NULL;
-}
-
-static void
-event_null_remove_idle(struct event_idle *ev)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-static void
-event_null_call_callback(struct callback_list *cb)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-static struct event_methods event_null_methods = {
- event_null_main_loop_run,
- event_null_main_loop_quit,
- event_null_add_watch,
- event_null_remove_watch,
- event_null_add_timeout,
- event_null_remove_timeout,
- event_null_add_idle,
- event_null_remove_idle,
- event_null_call_callback,
-};
-
-static struct event_priv *
-event_null_new(struct event_methods *meth)
-{
- *meth=event_null_methods;
- return NULL;
-}
-
-
-void
-plugin_init(void)
-{
- plugin_register_category_graphics("null", graphics_null_new);
- plugin_register_category_event("null", event_null_new);
-}
diff --git a/navit/graphics/opengl/CMakeLists.txt b/navit/graphics/opengl/CMakeLists.txt
deleted file mode 100644
index 6596344d1..000000000
--- a/navit/graphics/opengl/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-set(graphics_opengl_SOURCES graphics_opengl.c)
-if (USE_OPENGLES)
- LIST(APPEND graphics_opengl_SOURCES graphics_opengl_x11.c graphics_opengl_egl.c)
-endif (USE_OPENGLES)
-module_add_library(graphics_opengl ${graphics_opengl_SOURCES})
-
diff --git a/navit/graphics/opengl/graphics_opengl.c b/navit/graphics/opengl/graphics_opengl.c
deleted file mode 100644
index 98230f0dc..000000000
--- a/navit/graphics/opengl/graphics_opengl.c
+++ /dev/null
@@ -1,1822 +0,0 @@
-/**
- * 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.
- */
-
-#define USE_FLOAT 0
-#define REQUIRES_POWER_OF_2 0
-
-#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 "graphics_opengl.h"
-
-#if defined(WINDOWS) || defined(WIN32)
-#define PIXEL_FORMAT GL_RGBA
-#include <windows.h>
-# define sleep(i) Sleep(i * 1000)
-#else
-#define PIXEL_FORMAT GL_BGRA
-#endif
-
-#if HAVE_FREEIMAGE
-#include <FreeImage.h>
-#endif
-
-#ifdef USE_OPENGLES
-#ifdef USE_OPENGLES2
-#include <GLES2/gl2.h>
-#include <EGL/egl.h>
-#undef USE_FLOAT
-#define USE_FLOAT 1
-#else
-#include <GLES/gl.h>
-#include <GLES/egl.h>
-#endif
-#ifdef USE_GLUT_FOR_OPENGLES
-#define APIENTRY
-#define GLU_TESS_BEGIN 100100
-#define GLU_TESS_VERTEX 100101
-#define GLU_TESS_END 100102
-#define GLU_TESS_COMBINE 100105
-typedef struct GLUtesselator GLUtesselator;
-typedef double GLdouble;
-#endif
-#else
-#define glOrthof glOrtho
-#undef USE_FLOAT
-#define USE_FLOAT 1
-#ifdef __APPLE__
-#include <GLUT/glut.h>
-#else
-#include <GL/glut.h> /* glut.h includes gl.h and glu.h */
-#endif
-#endif
-
-#if USE_FLOAT
-#define glF(x) x
-#define glD(x) x
-#define GL_F GL_FLOAT
-typedef GLfloat GLf;
-#else
-#define glF(x) ((GLfixed)((x)*(1<<16)))
-#define glD(x) glF(x)
-#define GL_F GL_FIXED
-typedef GLfixed GLf;
-
-#define glClearColor glClearColorx
-#define glTranslatef glTranslatex
-#define glRotatef glRotatex
-#define glMaterialfv glMaterialxv
-#define glMaterialf glMaterialx
-#define glOrthof glOrthox
-#define glScalef glScalex
-#define glColor4f glColor4x
-#endif
-#ifdef FREEGLUT
-#include <GL/freeglut_ext.h>
-#endif
-
-#define SCREEN_WIDTH 700
-#define SCREEN_HEIGHT 700
-
-//#define MIRRORED_VIEW 1
-
-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 button_timeout;
- struct point p;
- int width;
- int height;
- int library_init;
- int visible;
- int overlay_enabled;
- int overlay_autodisabled;
- int wraparound;
- struct graphics_priv *parent;
- struct graphics_priv *overlays;
- struct graphics_priv *next;
- struct graphics_gc_priv *background_gc;
- enum draw_mode_num mode;
- void (*resize_callback) (void *data, int w, int h);
- void *resize_callback_data;
- void (*motion_callback) (void *data, struct point * p);
- void *motion_callback_data;
- void (*button_callback) (void *data, int press, int button,
- struct point * p);
- void *button_callback_data;
-#ifdef USE_OPENGLES
- GLuint program;
- GLint mvp_location, position_location, color_location, texture_position_location, use_texture_location, texture_location;
-#else
- GLuint DLid;
-#endif
- 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_window_system *window_system;
- struct graphics_opengl_window_system_methods *window_system_methods;
- struct graphics_opengl_platform *platform;
- struct graphics_opengl_platform_methods *platform_methods;
-};
-
-static struct graphics_priv *graphics_priv_root;
-struct graphics_image_priv {
- int w;
- int h;
- int hot_x;
- int hot_y;
- unsigned char *data;
- char *path;
-} graphics_image_priv;
-
-struct mouse_event_queue_element {
- int button;
- int state;
- int x;
- int y;
-};
-
-static const int mouse_event_queue_size = 100;
-static int mouse_event_queue_begin_idx = 0;
-static int mouse_event_queue_end_idx = 0;
-static struct mouse_event_queue_element mouse_queue[100];
-
-//hastable for uncompressed image data
-static GHashTable *hImageData;
-
-#ifdef USE_OPENGLES
-#else
-/* prototypes */
-void APIENTRY tessBeginCB(GLenum which);
-void APIENTRY tessEndCB(void);
-void APIENTRY tessErrorCB(GLenum errorCode);
-void APIENTRY tessVertexCB(const GLvoid * data);
-void APIENTRY tessVertexCB2(const GLvoid * data);
-void APIENTRY tessCombineCB(GLdouble c[3], void *d[4], GLfloat w[4], void **out);
-const char *getPrimitiveType(GLenum type);
-#endif
-
-static struct graphics_priv *graphics_opengl_new_helper(struct
- graphics_methods
- *meth);
-static void display(void);
-static void resize_callback(int w, int h);
-#ifdef USE_OPENGLES
-static void click_notify_do(struct graphics_priv *priv, int button, int state, int x, int y);
-#endif
-static void motion_notify_do(struct graphics_priv *priv, int x, int y);
-static void resize_callback_do(struct graphics_priv *priv, int w, int h);
-static void glut_close(void);
-
-#ifdef USE_OPENGLES2
-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; \
- } \
- } \
-";
-#endif
-
-static void
-graphics_destroy(struct graphics_priv *gr)
-{
- /*FIXME graphics_destroy is never called */
- /*TODO add destroy code for image cache(delete entries in hImageData) */
- gr->freetype_methods.destroy();
- g_free(gr);
- gr = NULL;
-}
-
-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 *path, int *w, int *h, struct point *hot, int rotation)
-{
-#if HAVE_FREEIMAGE
- FIBITMAP *image;
- RGBQUAD aPixel;
- unsigned char *data;
- int width, height, i, j;
- struct graphics_image_priv *gi;
- //check if image already exists in hashmap
- struct graphics_image_priv *curr_elem =
- g_hash_table_lookup(hImageData, path);
- 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->w;
- *h = curr_elem->h;
- hot->x = curr_elem->w / 2 - 1;
- hot->y = curr_elem->h / 2 - 1;
- return curr_elem;
- } else {
- if (strlen(path) < 4) {
- g_hash_table_insert(hImageData, g_strdup(path),
- &image_error);
- return NULL;
- }
- char *ext_str = path + strlen(path) - 3;
- if (strstr(ext_str, "png") || strstr(path, "PNG")) {
- if ((image =
- FreeImage_Load(FIF_PNG, path, 0)) == NULL) {
- g_hash_table_insert(hImageData,
- g_strdup(path),
- &image_error);
- return NULL;
- }
- } else if (strstr(ext_str, "xpm") || strstr(path, "XPM")) {
- if ((image =
- FreeImage_Load(FIF_XPM, path, 0)) == NULL) {
- g_hash_table_insert(hImageData,
- g_strdup(path),
- &image_error);
- return NULL;
- }
- } else if (strstr(ext_str, "svg") || strstr(path, "SVG")) {
- char path_new[256];
- snprintf(path_new, strlen(path) - 3, "%s", path);
- strcat(path_new, "_48_48.png");
-
- if ((image =
- FreeImage_Load(FIF_PNG, path_new,
- 0)) == NULL) {
- g_hash_table_insert(hImageData,
- g_strdup(path),
- &image_error);
- return NULL;
- }
- } else {
- g_hash_table_insert(hImageData, g_strdup(path),
- &image_error);
- return NULL;
- }
-
- if (FreeImage_GetBPP(image) == 64) {
- FIBITMAP *image2;
- image2 = FreeImage_ConvertTo32Bits(image);
- FreeImage_Unload(image);
- image = image2;
- }
-#if FREEIMAGE_MAJOR_VERSION*100+FREEIMAGE_MINOR_VERSION >= 313
- if (rotation) {
- FIBITMAP *image2;
- image2 = FreeImage_Rotate(image, rotation, NULL);
- image = image2;
- }
-#endif
-
- gi = g_new0(struct graphics_image_priv, 1);
-
- width = FreeImage_GetWidth(image);
- height = FreeImage_GetHeight(image);
-
- if ((*w != width || *h != height) && *w != IMAGE_W_H_UNSET && *h != IMAGE_W_H_UNSET) {
- FIBITMAP *image2;
- image2 = FreeImage_Rescale(image, *w, *h, FILTER_BOX);
- FreeImage_Unload(image);
- image = image2;
- width = *w;
- height = *h;
- }
-
- data = (unsigned char *) malloc(width * height * 4);
-
- RGBQUAD *palette = NULL;
- if (FreeImage_GetBPP(image) == 8) {
- palette = FreeImage_GetPalette(image);
- }
-
- for (i = 0; i < height; i++) {
- for (j = 0; j < width; j++) {
- unsigned char idx;
- if (FreeImage_GetBPP(image) == 8) {
- FreeImage_GetPixelIndex(image, j,
- height -
- i - 1,
- &idx);
- data[4 * width * i + 4 * j + 0] =
- palette[idx].rgbRed;
- data[4 * width * i + 4 * j + 1] =
- palette[idx].rgbGreen;
- data[4 * width * i + 4 * j + 2] =
- palette[idx].rgbBlue;
- data[4 * width * i + 4 * j + 3] =
- 255;
- } else if (FreeImage_GetBPP(image) == 16
- || FreeImage_GetBPP(image) == 24
- || FreeImage_GetBPP(image) ==
- 32) {
- FreeImage_GetPixelColor(image, j,
- height -
- i - 1,
- &aPixel);
- int transparent =
- (aPixel.rgbRed == 0
- && aPixel.rgbBlue == 0
- && aPixel.rgbGreen == 0);
- data[4 * width * i + 4 * j + 0] =
- transparent ? 0 : (aPixel.
- rgbRed);
- data[4 * width * i + 4 * j + 1] =
- (aPixel.rgbGreen);
- data[4 * width * i + 4 * j + 2] =
- transparent ? 0 : (aPixel.
- rgbBlue);
- data[4 * width * i + 4 * j + 3] =
- transparent ? 0 : 255;
-
- }
- }
- }
-
- FreeImage_Unload(image);
-
- *w = width;
- *h = height;
- gi->w = width;
- gi->h = height;
- gi->hot_x = width / 2 - 1;
- gi->hot_y = height / 2 - 1;
- hot->x = width / 2 - 1;
- hot->y = height / 2 - 1;
- gi->data = data;
- gi->path = path;
- //add to hashtable
- g_hash_table_insert(hImageData, g_strdup(path), gi);
- return gi;
- }
-#else
- dbg(lvl_error,"FreeImage not available - cannot load any images.\n", path);
- return NULL;
-#endif
-}
-
-
-static void
-set_color(struct graphics_priv *gr, struct graphics_gc_priv *gc)
-{
-#ifdef USE_OPENGLES2
- GLfloat col[4];
- col[0]=gc->fr;
- col[1]=gc->fg;
- col[2]=gc->fb;
- col[3]=1.0;
- glUniform4fv(gr->color_location, 1, col);
-#else
- glColor4f(glF(gc->fr), glF(gc->fg), glF(gc->fb), glF(gc->fa));
-#endif
-}
-
-static void
-draw_array(struct graphics_priv *gr, struct point *p, int count, GLenum mode)
-{
- int i;
-#ifdef USE_OPENGLES
- GLf x[count*2];
-#else
- glBegin(mode);
-#endif
-
- for (i = 0 ; i < count ; i++) {
-#ifdef USE_OPENGLES
- x[i*2]=glF(p[i].x);
- x[i*2+1]=glF(p[i].y);
-#else
- glVertex2f(p[i].x, p[i].y);
-#endif
- }
-#ifdef USE_OPENGLES
-#ifdef USE_OPENGLES2
- glVertexAttribPointer (gr->position_location, 2, GL_FLOAT, 0, 0, x );
-#else
- glVertexPointer(2, GL_F, 0, x);
-#endif
- glDrawArrays(mode, 0, count);
-#else
- glEnd();
-#endif
-}
-
-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);
-}
-
-#ifdef USE_OPENGLES
-
-static int next_power2(int x)
-{
- int r=1;
- while (r < x)
- r*=2;
- return r;
-}
-
-static void
-draw_image_es(struct graphics_priv *gr, struct point *p, int w, int h, unsigned char *data)
-{
- GLf x[8];
-
- memset(x, 0, sizeof(x));
-#if REQUIRES_POWER_OF_2
- int w2=next_power2(w);
- int h2=next_power2(h);
- int y;
- if (w2 != w || h2 != h) {
- char *newpix=g_malloc0(w2*h2*4);
- for (y=0 ; y < h ; y++)
- memcpy(newpix+y*w2*4, data+y*w*4, w*4);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w2, h2, 0, GL_RGBA, GL_UNSIGNED_BYTE, newpix);
- g_free(newpix);
- w=w2;
- h=h2;
- } else
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
-#else
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
-#endif
- x[0]+=glF(1);
- x[2]+=glF(1);
- x[3]+=glF(1);
- x[7]+=glF(1);
-#ifdef USE_OPENGLES2
- glUniform1i(gr->use_texture_location, 1);
- glEnableVertexAttribArray(gr->texture_position_location);
- glVertexAttribPointer (gr->texture_position_location, 2, GL_FLOAT, 0, 0, x );
-#else
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glEnable(GL_TEXTURE_2D);
- glTexCoordPointer(2, GL_F, 0, x);
-#endif
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- draw_rectangle_do(gr, p, w, h);
-#ifdef USE_OPENGLES2
- glUniform1i(gr->use_texture_location, 0);
- glDisableVertexAttribArray(gr->texture_position_location);
-#else
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glDisable(GL_TEXTURE_2D);
-#endif
- glDisable(GL_BLEND);
-}
-
-
-#endif
-
-static 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;
- }
-}
-
-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;
- }
-#if !defined(USE_OPENGLES) || defined(USE_OPENGLES2)
- glLineWidth(gc->linewidth);
-#endif
- set_color(gr, gc);
- graphics_priv_root->dirty = 1;
-
-#ifndef USE_OPENGLES
- if (!gr->parent && 0 < gc->dash_count) {
- glLineStipple(1, gc->dash_mask);
- glEnable(GL_LINE_STIPPLE);
- }
-#endif
- draw_array(gr, p, count, GL_LINE_STRIP);
-#ifndef USE_OPENGLES
- if (!gr->parent && 0 < gc->dash_count) {
- glDisable(GL_LINE_STIPPLE);
- }
-#endif
-}
-
-#if !defined(USE_OPENGLES) || defined(USE_GLUT_FOR_OPENGLES)
-static int tess_count;
-static struct point tess_array[512];
-static GLenum tess_type;
-
-const char *
-getPrimitiveType(GLenum type)
-{
- char *ret = "";
-
- switch (type) {
- case 0x0000:
- ret = "GL_POINTS";
- break;
- case 0x0001:
- ret = "GL_LINES";
- break;
- case 0x0002:
- ret = "GL_LINE_LOOP";
- break;
- case 0x0003:
- ret = "GL_LINE_STRIP";
- break;
- case 0x0004:
- ret = "GL_TRIANGLES";
- break;
- case 0x0005:
- ret = "GL_TRIANGLE_STRIP";
- break;
- case 0x0006:
- ret = "GL_TRIANGLE_FAN";
- break;
- case 0x0007:
- ret = "GL_QUADS";
- break;
- case 0x0008:
- ret = "GL_QUAD_STRIP";
- break;
- case 0x0009:
- ret = "GL_POLYGON";
- break;
- }
- return ret;
-}
-
-void APIENTRY
-tessBeginCB(GLenum which)
-{
- dbg(lvl_debug, "glBegin( %s );\n", getPrimitiveType(which));
- tess_type=which;
- tess_count=0;
-}
-
-
-
-void APIENTRY
-tessEndCB(void)
-{
- dbg(lvl_debug, "glEnd();\n");
- draw_array(graphics_priv_root, tess_array, tess_count, tess_type);
-}
-
-
-
-void APIENTRY
-tessVertexCB(const GLvoid * data)
-{
- // cast back to double type
- const GLdouble *ptr = (const GLdouble *) data;
- dbg(lvl_debug, " glVertex3d();\n");
-
- tess_array[tess_count].x=ptr[0];
- tess_array[tess_count].y=ptr[1];
- if (tess_count < 511)
- tess_count++;
- else
- dbg(lvl_error,"overflow\n");
-}
-
-void APIENTRY
-tessCombineCB(GLdouble c[3], void *d[4], GLfloat w[4], void **out)
-{
- GLdouble *nv = (GLdouble *) malloc(sizeof(GLdouble) * 3);
- nv[0] = c[0];
- nv[1] = c[1];
- nv[2] = c[2];
- *out = nv;
-}
-
-#endif
-
-
-static void
-draw_polygon(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;
- }
- set_color(gr, gc);
- graphics_priv_root->dirty = 1;
-#if defined(USE_OPENGLES) && !defined(USE_GLUT_FOR_OPENGLES)
- draw_array(gr, p, count, GL_LINE_STRIP);
-#else
-
- GLUtesselator *tess = gluNewTess(); // create a tessellator
- if (!tess)
- return; // failed to create tessellation object, return 0
-
- GLdouble quad1[count][3];
- int i;
- for (i = 0; i < count; i++) {
- quad1[i][0] = (GLdouble) (p[i].x);
- quad1[i][1] = (GLdouble) (p[i].y);
- quad1[i][2] = 0;
- }
-
-
- // register callback functions
- gluTessCallback(tess, GLU_TESS_BEGIN, (void (APIENTRY *)(void)) tessBeginCB);
- gluTessCallback(tess, GLU_TESS_END, (void (APIENTRY *)(void)) tessEndCB);
- // gluTessCallback(tess, GLU_TESS_ERROR, (void (*)(void))tessErrorCB);
- gluTessCallback(tess, GLU_TESS_VERTEX, (void (APIENTRY *)(void)) tessVertexCB);
- gluTessCallback(tess, GLU_TESS_COMBINE, (void (APIENTRY *)(void)) tessCombineCB);
-
- // tessellate and compile a concave quad into display list
- // gluTessVertex() takes 3 params: tess object, pointer to vertex coords,
- // and pointer to vertex data to be passed to vertex callback.
- // The second param is used only to perform tessellation, and the third
- // param is the actual vertex data to draw. It is usually same as the second
- // param, but It can be more than vertex coord, for example, color, normal
- // and UV coords which are needed for actual drawing.
- // Here, we are looking at only vertex coods, so the 2nd and 3rd params are
- // pointing same address.
- gluTessBeginPolygon(tess, 0); // with NULL data
- gluTessBeginContour(tess);
- for (i = 0; i < count; i++) {
- gluTessVertex(tess, quad1[i], quad1[i]);
- }
- gluTessEndContour(tess);
- gluTessEndPolygon(tess);
-
- gluDeleteTess(tess); // delete after tessellation
-#endif
-}
-
-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);
-#ifdef USE_OPENGLES
- 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);
-#else
-#ifdef MIRRORED_VIEW
- glPixelZoom(-1.0, -1.0); //mirrored mode
-#else
- glPixelZoom(1.0, -1.0);
-#endif
- glRasterPos2d((x + g->x) >> 6,
- (y + g->y) >> 6);
- glDrawPixels(g->w + 2, g->h + 2, PIXEL_FORMAT,
- GL_UNSIGNED_BYTE, shadow);
-#endif
- 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);
-#ifdef USE_OPENGLES
- 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);
-#else
-#ifdef MIRRORED_VIEW
- glPixelZoom(-1.0, -1.0); //mirrored mode
-#else
- glPixelZoom(1.0, -1.0);
-#endif
- glRasterPos2d((x + g->x) >> 6,
- (y + g->y) >> 6);
- glDrawPixels(g->w, g->h, PIXEL_FORMAT,
- GL_UNSIGNED_BYTE,
- glyph);
-#endif
- g_free(glyph);
- }
- stride *= 4;
- glyph = g_malloc(stride * g->h);
- gr->freetype_methods.get_glyph(g, glyph,
- stride,
- &black,
- &white,
- &transparent);
-#ifdef USE_OPENGLES
- 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);
-#else
-#ifdef MIRRORED_VIEW
- glPixelZoom(-1.0, -1.0); //mirrored mode
-#else
- glPixelZoom(1.0, -1.0);
-#endif
- glRasterPos2d((x + g->x) >> 6,
- (y + g->y) >> 6);
- glDrawPixels(g->w, g->h, PIXEL_FORMAT,
- GL_UNSIGNED_BYTE, glyph);
-#endif
- 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)
-{
-#ifdef USE_OPENGLES
- draw_image_es(gr, p, img->w, img->h, img->data);
-#else
- if ((gr->parent && !gr->parent->overlay_enabled)
- || (gr->parent && gr->parent->overlay_enabled
- && !gr->overlay_enabled)) {
- return;
- }
-
- if (!img || !img->data) {
- return;
- }
-
- graphics_priv_root->dirty = 1;
-
- struct point p_eff;
- p_eff.x = p->x + img->hot_x;
- p_eff.y = p->y + img->hot_y;
-
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- glRasterPos2d(p_eff.x - img->hot_x, p_eff.y - img->hot_y);
- glDrawPixels(img->w, img->h, GL_RGBA, GL_UNSIGNED_BYTE, img->data);
-#endif
-
-}
-
-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;
-}
-
-static void
-handle_mouse_queue(void)
-{
-#ifdef USE_OPENGLES
-#else
- static int locked = 0;
- if (!locked) {
- locked = 1;
- } else {
- return;
- }
-
- if (mouse_event_queue_begin_idx < mouse_event_queue_end_idx) {
- if (mouse_queue[mouse_event_queue_begin_idx].button ==
- GLUT_LEFT_BUTTON
- && mouse_queue[mouse_event_queue_begin_idx].state ==
- GLUT_UP) {
- struct point p;
- p.x =
- mouse_queue[mouse_event_queue_begin_idx %
- mouse_event_queue_size].x;
- p.y =
- mouse_queue[mouse_event_queue_begin_idx %
- mouse_event_queue_size].y;
- graphics_priv_root->force_redraw = 1;
- callback_list_call_attr_3(graphics_priv_root->cbl,
- attr_button, (void *) 0,
- 1, (void *) &p);
- } else if (mouse_queue[mouse_event_queue_begin_idx].
- button == GLUT_LEFT_BUTTON
- && mouse_queue[mouse_event_queue_begin_idx].
- state == GLUT_DOWN) {
- struct point p;
- p.x =
- mouse_queue[mouse_event_queue_begin_idx %
- mouse_event_queue_size].x;
- p.y =
- mouse_queue[mouse_event_queue_begin_idx %
- mouse_event_queue_size].y;
- graphics_priv_root->force_redraw = 1;
- callback_list_call_attr_3(graphics_priv_root->cbl,
- attr_button, (void *) 1,
- 1, (void *) &p);
- }
- ++mouse_event_queue_begin_idx;
- }
- locked = 0;
-#endif
-}
-
-
-/*draws root graphics and its overlays*/
-static int
-redraw_screen(struct graphics_priv *gr)
-{
-#ifdef USE_OPENGLES
-#else
- graphics_priv_root->dirty = 0;
-
- glCallList(gr->DLid);
- //display overlays display list
- struct graphics_priv *overlay;
- overlay = gr->overlays;
- while (gr->overlay_enabled && overlay) {
- if (overlay->overlay_enabled) {
- glPushMatrix();
- struct point p_eff;
- get_overlay_pos(overlay, &p_eff);
- glTranslatef(p_eff.x, p_eff.y, 1);
- glCallList(overlay->DLid);
- glPopMatrix();
- }
- overlay = overlay->next;
- }
- glutSwapBuffers();
-#endif
-
- return TRUE;
-}
-
-
-#ifndef USE_OPENGLES
-/*filters call to redraw in overlay enabled(map) mode*/
-static gboolean
-redraw_filter(gpointer data)
-{
- struct graphics_priv *gr = (struct graphics_priv*) data;
- if (gr->overlay_enabled && gr->dirty) {
- redraw_screen(gr);
- }
- return 0;
-}
-#endif
-
-
-
-static void
-draw_mode(struct graphics_priv *gr, enum draw_mode_num mode)
-{
- if (gr->parent) { //overlay
-#ifdef USE_OPENGLES
-#else
- if (mode == draw_mode_begin) {
- glNewList(gr->DLid, GL_COMPILE);
- }
-
- if (mode == draw_mode_end) {
- glEndList();
- }
-#endif
- } else { //root graphics
- if (mode == draw_mode_begin) {
-#ifdef USE_OPENGLES
-#else
- glNewList(gr->DLid, GL_COMPILE);
-#endif
- }
-
- if (mode == draw_mode_end) {
-#ifdef USE_OPENGLES
- gr->platform_methods->swap_buffers(gr->platform);
-#else
- glEndList();
- gr->force_redraw = 1;
- if (!gr->overlay_enabled || gr->force_redraw) {
- redraw_screen(gr);
- }
-#endif
- }
- }
- gr->mode = mode;
-}
-
-static struct graphics_priv *overlay_new(struct graphics_priv *gr,
- struct graphics_methods *meth,
- struct point *p, int w, int h,
- int wraparound);
-
-static int
-graphics_opengl_fullscreen(struct window *w, int on)
-{
- return 1;
-}
-
-static void
-graphics_opengl_disable_suspend(struct window *w)
-{
-}
-
-#ifdef USE_OPENGLES2
-static GLuint
-load_shader(const char *shader_source, GLenum type)
-{
- GLuint shader = glCreateShader(type);
-
- glShaderSource(shader, 1, &shader_source, NULL);
- glCompileShader(shader);
-
- return shader;
-}
-#endif
-
-static void *
-get_data(struct graphics_priv *this, const char *type)
-{
- /*TODO initialize gtkglext context when type=="gtk_widget" */
- if (!strcmp(type, "gtk_widget")) {
- fprintf(stderr,
- "Currently GTK gui is not yet supported with opengl graphics driver\n");
- return NULL;
- }
- if (strcmp(type, "window") == 0) {
- struct window *win;
-#ifdef USE_OPENGLES
- GLuint vertexShader;
- GLuint fragmentShader;
- GLuint textures;
- GLfloat matrix[16];
- int i;
-
- this->window_system=graphics_opengl_x11_new(NULL, this->width, this->height, 32, &this->window_system_methods);
- this->platform=graphics_opengl_egl_new(this->window_system_methods->get_display(this->window_system),
- this->window_system_methods->get_window(this->window_system),
- &this->platform_methods);
- this->window_system_methods->set_callbacks(this->window_system, this, resize_callback_do, click_notify_do, motion_notify_do, NULL);
- resize_callback(this->width,this->height);
-#if 0
- glClearColor ( 0.4 , 0.4 , 0.4 , 1);
-#endif
- glClear ( GL_COLOR_BUFFER_BIT );
-#ifdef USE_OPENGLES2
- 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);
-
- for (i = 0 ; i < 16 ; i++)
- matrix[i]=0.0;
- matrix[0]=2.0/this->width;
- matrix[5]=-2.0/this->height;
- matrix[10]=1;
- matrix[12]=-1;
- matrix[13]=1;
- matrix[15]=1;
- glUniformMatrix4fv(this->mvp_location, 1, GL_FALSE, matrix);
-#else
- glEnableClientState(GL_VERTEX_ARRAY);
-#endif
- glGenTextures(1, &textures);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, textures);
- 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);
-#ifndef USE_OPENGLES2
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-#endif
-#endif
- win = g_new0(struct window, 1);
- win->priv = this;
- win->fullscreen = graphics_opengl_fullscreen;
- win->disable_suspend = graphics_opengl_disable_suspend;
- return win;
- } else {
-#ifdef USE_OPENGLES
- return NULL;
-#else
- return &this->DLid;
-#endif
- }
-
-
-}
-
-static void
-image_free(struct graphics_priv *gr, struct graphics_image_priv *priv)
-{
-//TODO free image data in hashtable when graphics is destroyed
-//currently graphics destroy is not called !!!
-/*
- g_free(priv->data);
- priv->data = NULL;
- g_free(priv);
- priv = 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);
-}
-
-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;
- }
-
- callback_list_call_attr_2(gr->cbl, attr_resize,
- GINT_TO_POINTER(gr->width),
- GINT_TO_POINTER(gr->height));
- }
-}
-
-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, /* 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 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 = *p;
- this->width = w;
- this->height = h;
- this->parent = gr;
-
- if ((w == 0) || (h == 0)) {
- this->overlay_autodisabled = 1;
- } else {
- this->overlay_autodisabled = 0;
- }
- this->overlay_enabled = 1;
- this->overlay_autodisabled = 0;
-
- this->next = gr->overlays;
- gr->overlays = this;
-#ifdef USE_OPENGLES
-#else
- this->DLid = glGenLists(1);
-#endif
- return this;
-}
-
-
-#ifdef USE_OPENGLES
-static void
-click_notify_do(struct graphics_priv *priv, int button, int state, int x, int y)
-{
- struct point p={x,y};
- dbg(lvl_debug,"enter state %d button %d\n",state,button);
- callback_list_call_attr_3(priv->cbl, attr_button, (void *) state, (void *)button, (void *) &p);
-}
-#endif
-
-static void
-click_notify(int button, int state, int x, int y)
-{
- mouse_queue[mouse_event_queue_end_idx %
- mouse_event_queue_size].button = button;
- mouse_queue[mouse_event_queue_end_idx %
- mouse_event_queue_size].state = state;
-#ifdef MIRRORED_VIEW
- mouse_queue[mouse_event_queue_end_idx % mouse_event_queue_size].x =
- graphics_priv_root->width - x;
-#else
- mouse_queue[mouse_event_queue_end_idx % mouse_event_queue_size].x =
- x;
-#endif
- mouse_queue[mouse_event_queue_end_idx % mouse_event_queue_size].y =
- y;
- ++mouse_event_queue_end_idx;
-}
-
-static void
-motion_notify_do(struct graphics_priv *priv, int x, int y)
-{
- struct point p;
-#ifdef MIRRORED_VIEW
- p.x = priv->width - x;
-#else
- p.x = x;
-#endif
- p.y = y;
- callback_list_call_attr_1(priv->cbl, attr_motion,
- (void *) &p);
- return;
-}
-
-static void
-motion_notify(int x, int y)
-{
- motion_notify_do(graphics_priv_root, x, y);
-}
-
-#ifndef USE_OPENGLES
-static gboolean
-graphics_opengl_idle(void *data)
-{
- static int opengl_init_ok = 0;
- if (!opengl_init_ok) {
- callback_list_call_attr_2(graphics_priv_root->cbl,
- attr_resize,
- GINT_TO_POINTER
- (graphics_priv_root->width),
- GINT_TO_POINTER
- (graphics_priv_root->height));
- opengl_init_ok = 1;
- } else {
-
-#ifdef FREEGLUT
- glutMainLoopEvent();
-#endif
- handle_mouse_queue();
- }
- return TRUE;
-}
-#endif
-
-static void
-ProcessNormalKeys(unsigned char key_in, int x, int y)
-{
- int key = 0;
- char keybuf[2];
-
- switch (key_in) {
- case 13:
- key = NAVIT_KEY_RETURN;
- break;
- default:
- key = key_in;
- break;
- }
- keybuf[0] = key;
- keybuf[1] = '\0';
- graphics_priv_root->force_redraw = 1;
- callback_list_call_attr_1(graphics_priv_root->cbl, attr_keypress,
- (void *) keybuf);
-}
-
-static void
-ProcessSpecialKeys(int key_in, int x, int y)
-{
- int key = 0;
- char keybuf[2];
-
- switch (key_in) {
- case 102:
- key = NAVIT_KEY_RIGHT;
- break;
- case 100:
- key = NAVIT_KEY_LEFT;
- break;
- case 103:
- key = NAVIT_KEY_DOWN;
- break;
- case 101:
- key = NAVIT_KEY_UP;
- break;
- case 104:
- key = NAVIT_KEY_ZOOM_OUT;
- break;
- case 105:
- key = NAVIT_KEY_ZOOM_IN;
- break;
- default:
- break;
- } //switch
-
- graphics_priv_root->force_redraw = 1;
- keybuf[0] = key;
- keybuf[1] = '\0';
- callback_list_call_attr_1(graphics_priv_root->cbl, attr_keypress,
- (void *) keybuf);
-}
-
-static void
-resize_callback_do(struct graphics_priv *priv, int w, int h)
-{
- glViewport(0, 0, w, h);
-#ifndef USE_OPENGLES2
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
-#ifdef MIRRORED_VIEW
- glOrthof(glF(w), glF(0), glF(h), glF(0), glF(1), glF(-1));
-#else
- glOrthof(glF(0), glF(w), glF(h), glF(0), glF(1), glF(-1));
-#endif
-#endif
- priv->width = w;
- priv->height = h;
-
- callback_list_call_attr_2(priv->cbl, attr_resize,
- GINT_TO_POINTER(w), GINT_TO_POINTER(h));
-}
-
-static void
-resize_callback(int w, int h)
-{
- resize_callback_do(graphics_priv_root, w, h);
-}
-
-static void
-display(void)
-{
- graphics_priv_root->force_redraw = 1;
- redraw_screen(graphics_priv_root);
- resize_callback(graphics_priv_root->width,
- graphics_priv_root->height);
-}
-
-static void
-glut_close(void)
-{
- callback_list_call_attr_0(graphics_priv_root->cbl,
- attr_window_closed);
-}
-
-
-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;
-
- struct graphics_priv *this = graphics_opengl_new_helper(meth);
- graphics_priv_root = this;
-
- this->nav = nav;
- this->parent = NULL;
- this->overlay_enabled = 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;
-
- char *cmdline = "";
- int argc = 0;
-#ifndef USE_OPENGLES
- glutInit(&argc, &cmdline);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
-
- glutInitWindowSize(this->width, this->height);
- glutInitWindowPosition(0, 0);
- glutCreateWindow("Navit opengl window");
-
- glutDisplayFunc(display);
- glutReshapeFunc(resize_callback);
- resize_callback(this->width, this->height);
-#endif
-
- graphics_priv_root->cbl = cbl;
- graphics_priv_root->width = this->width;
- graphics_priv_root->height = this->height;
-
-#ifndef USE_OPENGLES
- glutMotionFunc(motion_notify);
- glutPassiveMotionFunc(motion_notify);
- glutMouseFunc(click_notify);
- glutKeyboardFunc(ProcessNormalKeys);
- glutSpecialFunc(ProcessSpecialKeys);
-#ifdef FREEGLUT
- glutCloseFunc(glut_close);
-#endif
- this->DLid = glGenLists(1);
-
- g_timeout_add(G_PRIORITY_DEFAULT + 10, graphics_opengl_idle, NULL);
-
- /*this will only refresh screen in map(overlay enabled) mode */
- g_timeout_add(G_PRIORITY_DEFAULT + 1000, redraw_filter, this);
-#endif
-
- //create hash table for uncompressed image data
- hImageData = g_hash_table_new(g_str_hash, g_str_equal);
- return this;
-}
-
-
-static void
-event_opengl_main_loop_run(void)
-{
- dbg(lvl_info, "enter\n");
-}
-
-static void
-event_opengl_main_loop_quit(void)
-{
- dbg(lvl_debug, "enter\n");
-}
-
-static struct event_watch *
-event_opengl_add_watch(int fd, enum event_watch_cond cond,
- struct callback *cb)
-{
- dbg(lvl_debug, "enter\n");
- return NULL;
-}
-
-static void
-event_opengl_remove_watch(struct event_watch *ev)
-{
- dbg(lvl_debug, "enter\n");
-}
-
-
-static struct event_timeout *
-event_opengl_add_timeout(int timeout, int multi, struct callback *cb)
-{
- dbg(lvl_debug, "enter\n");
- return NULL;
-}
-
-static void
-event_opengl_remove_timeout(struct event_timeout *to)
-{
- dbg(lvl_debug, "enter\n");
-}
-
-
-static struct event_idle *
-event_opengl_add_idle(int priority, struct callback *cb)
-{
- dbg(lvl_debug, "enter\n");
- return NULL;
-}
-
-static void
-event_opengl_remove_idle(struct event_idle *ev)
-{
- dbg(lvl_debug, "enter\n");
-}
-
-static void
-event_opengl_call_callback(struct callback_list *cb)
-{
- dbg(lvl_debug, "enter\n");
-}
-
-static struct event_methods event_opengl_methods = {
- event_opengl_main_loop_run,
- event_opengl_main_loop_quit,
- event_opengl_add_watch,
- event_opengl_remove_watch,
- event_opengl_add_timeout,
- event_opengl_remove_timeout,
- event_opengl_add_idle,
- event_opengl_remove_idle,
- event_opengl_call_callback,
-};
-
-static struct event_priv *
-event_opengl_new(struct event_methods *meth)
-{
- *meth = event_opengl_methods;
- return NULL;
-}
-
-void
-plugin_init(void)
-{
- plugin_register_category_graphics("opengl", graphics_opengl_new);
- plugin_register_category_event("opengl", event_opengl_new);
-}
diff --git a/navit/graphics/opengl/graphics_opengl.h b/navit/graphics/opengl/graphics_opengl.h
deleted file mode 100644
index cce39dd30..000000000
--- a/navit/graphics/opengl/graphics_opengl.h
+++ /dev/null
@@ -1,18 +0,0 @@
-struct graphics_opengl_window_system;
-struct graphics_opengl_platform;
-
-
-struct graphics_opengl_window_system_methods {
- void (*destroy)(struct graphics_opengl_window_system *);
- void *(*get_display)(struct graphics_opengl_window_system *);
- void *(*get_window)(struct graphics_opengl_window_system *);
- void (*set_callbacks)(struct graphics_opengl_window_system *, void *data, void *resize, void *button, void *motion, void *keypress);
-};
-
-struct graphics_opengl_platform_methods {
- void (*destroy)(struct graphics_opengl_platform *);
- void (*swap_buffers)(struct graphics_opengl_platform *);
-};
-
-struct graphics_opengl_window_system *graphics_opengl_x11_new(void *displayname, int w, int h, int depth, struct graphics_opengl_window_system_methods **methods);
-struct graphics_opengl_platform *graphics_opengl_egl_new(void *display, void *window, struct graphics_opengl_platform_methods **methods);
diff --git a/navit/graphics/opengl/graphics_opengl_egl.c b/navit/graphics/opengl/graphics_opengl_egl.c
deleted file mode 100644
index cb91ac88e..000000000
--- a/navit/graphics/opengl/graphics_opengl_egl.c
+++ /dev/null
@@ -1,97 +0,0 @@
-#include "config.h"
-#ifdef USE_OPENGLES2
-#include <GLES2/gl2.h>
-#include <EGL/egl.h>
-#else
-#include <GLES/gl.h>
-#include <GLES/egl.h>
-#endif
-#include <glib.h>
-#include "graphics_opengl.h"
-#include "debug.h"
-
-struct graphics_opengl_platform {
- EGLSurface eglwindow;
- EGLDisplay egldisplay;
- EGLConfig config[1];
- EGLContext context;
-};
-
-static EGLint attributeList[] = {
- EGL_RED_SIZE, 8,
- EGL_ALPHA_SIZE, 8,
- EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
-#ifdef USE_OPENGLES2
- EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
-#endif
- EGL_NONE
-};
-
-EGLint aEGLContextAttributes[] = {
-#ifdef USE_OPENGLES2
- EGL_CONTEXT_CLIENT_VERSION, 2,
-#endif
- EGL_NONE
-};
-
-static void
-graphics_opengl_egl_destroy(struct graphics_opengl_platform *egl)
-{
- g_free(egl);
-}
-
-static void
-graphics_opengl_egl_swap_buffers(struct graphics_opengl_platform *egl)
-{
- eglSwapBuffers(egl->egldisplay, egl->eglwindow);
-}
-
-struct graphics_opengl_platform_methods graphics_opengl_egl_methods = {
- graphics_opengl_egl_destroy,
- graphics_opengl_egl_swap_buffers,
-};
-
-
-struct graphics_opengl_platform *
-graphics_opengl_egl_new(void *display, void *window, struct graphics_opengl_platform_methods **methods)
-{
- struct graphics_opengl_platform *ret=g_new0(struct graphics_opengl_platform,1);
- EGLint major,minor,nconfig;
-
- *methods=&graphics_opengl_egl_methods;
- ret->egldisplay = eglGetDisplay((EGLNativeDisplayType)display);
- if (!ret->egldisplay) {
- dbg(lvl_error, "can't get display\n");
- goto error;
- }
- if (!eglInitialize(ret->egldisplay, &major, &minor)) {
- dbg(lvl_error, "eglInitialize failed\n");
- goto error;
- }
- dbg(lvl_debug,"eglInitialize ok with version %d.%d\n",major,minor);
- eglBindAPI(EGL_OPENGL_ES_API);
- if (!eglChooseConfig(ret->egldisplay, attributeList, ret->config, sizeof(ret->config)/sizeof(EGLConfig), &nconfig)) {
- dbg(lvl_error, "eglChooseConfig failed\n");
- goto error;
- }
- if (nconfig != 1) {
- dbg(lvl_error, "unexpected number of configs %d\n",nconfig);
- goto error;
- }
- ret->eglwindow = eglCreateWindowSurface(ret->egldisplay, ret->config[0], (NativeWindowType) window, NULL);
- if (ret->eglwindow == EGL_NO_SURFACE) {
- dbg(lvl_error, "eglCreateWindowSurface failed");
- goto error;
- }
- ret->context = eglCreateContext(ret->egldisplay, ret->config[0], EGL_NO_CONTEXT, aEGLContextAttributes);
- if (ret->context == EGL_NO_CONTEXT) {
- dbg(lvl_error, "eglCreateContext failed");
- goto error;
- }
- eglMakeCurrent(ret->egldisplay, ret->eglwindow, ret->eglwindow, ret->context);
- return ret;
-error:
- graphics_opengl_egl_destroy(ret);
- return NULL;
-}
-
diff --git a/navit/graphics/opengl/graphics_opengl_x11.c b/navit/graphics/opengl/graphics_opengl_x11.c
deleted file mode 100644
index 8f4b02eaf..000000000
--- a/navit/graphics/opengl/graphics_opengl_x11.c
+++ /dev/null
@@ -1,153 +0,0 @@
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <glib.h>
-#include "debug.h"
-#include "event.h"
-#include "callback.h"
-#include "graphics_opengl.h"
-
-struct graphics_opengl_window_system {
- Display *display;
- int screen;
- Window window,root_window;
- XVisualInfo visual;
- Colormap colormap;
- struct callback *cb;
- struct event_watch *watch;
- void *data;
- void (*resize)(void *data, int w, int h);
- void (*button)(void *data, int button, int state, int x, int y);
- void (*motion)(void *data, int x, int y);
- void *keypress;
-
-};
-
-
-static void
-graphics_opengl_x11_destroy(struct graphics_opengl_window_system *x11)
-{
- if (x11->watch)
- event_remove_watch(x11->watch);
- if (x11->cb)
- callback_destroy(x11->cb);
- if (x11->display) {
- if (x11->window)
- XDestroyWindow(x11->display, x11->window);
- if (x11->colormap)
- XFreeColormap(x11->display, x11->colormap);
- XCloseDisplay(x11->display);
- }
- g_free(x11);
-}
-
-static void *
-graphics_opengl_get_display(struct graphics_opengl_window_system *x11)
-{
- return x11->display;
-}
-
-static void *
-graphics_opengl_get_window(struct graphics_opengl_window_system *x11)
-{
- return (void *)x11->window;
-}
-
-static void
-graphics_opengl_set_callbacks(struct graphics_opengl_window_system *x11, void *data, void *resize, void *button, void *motion, void *keypress)
-{
- x11->data=data;
- x11->resize=resize;
- x11->button=button;
- x11->motion=motion;
- x11->keypress=keypress;
-}
-
-
-struct graphics_opengl_window_system_methods graphics_opengl_x11_methods = {
- graphics_opengl_x11_destroy,
- graphics_opengl_get_display,
- graphics_opengl_get_window,
- graphics_opengl_set_callbacks,
-};
-
-static void
-graphics_opengl_x11_watch(struct graphics_opengl_window_system *x11)
-{
- XEvent event;
- while (XPending(x11->display)) {
- XNextEvent(x11->display, &event);
- switch(event.type) {
- case ButtonPress:
- if (x11->button)
- x11->button(x11->data,event.xbutton.button,1,event.xbutton.x,event.xbutton.y);
- break;
- case ButtonRelease:
- if (x11->button)
- x11->button(x11->data,event.xbutton.button,0,event.xbutton.x,event.xbutton.y);
- break;
- case ConfigureNotify:
- dbg(lvl_debug,"ConfigureNotify\n");
- break;
- case Expose:
- dbg(lvl_debug,"Expose\n");
- break;
- case KeyPress:
- dbg(lvl_debug,"KeyPress\n");
- break;
- case KeyRelease:
- dbg(lvl_debug,"KeyRelease\n");
- break;
- case MapNotify:
- dbg(lvl_debug,"MapNotify\n");
- break;
- case MotionNotify:
- if (x11->motion)
- x11->motion(x11->data,event.xmotion.x,event.xmotion.y);
- break;
- case ReparentNotify:
- dbg(lvl_debug,"ReparentNotify\n");
- break;
- default:
- dbg(lvl_debug,"type %d\n",event.type);
- }
- }
-}
-
-struct graphics_opengl_window_system *
-graphics_opengl_x11_new(void *displayname, int w, int h, int depth, struct graphics_opengl_window_system_methods **methods)
-{
- struct graphics_opengl_window_system *ret=g_new0(struct graphics_opengl_window_system, 1);
- XSetWindowAttributes attributes;
- unsigned long valuemask;
-
- ret->cb=callback_new_1(callback_cast(graphics_opengl_x11_watch), ret);
- if (!event_request_system("glib", "graphics_opengl_x11_new"))
- goto error;
- *methods=&graphics_opengl_x11_methods;
- ret->display=XOpenDisplay(displayname);
- if (!ret->display) {
- dbg(lvl_error,"failed to open display\n");
- goto error;
- }
- ret->watch=event_add_watch(ConnectionNumber(ret->display), event_watch_cond_read, ret->cb);
- ret->screen=XDefaultScreen(ret->display);
- ret->root_window=RootWindow(ret->display, ret->screen);
- if (!XMatchVisualInfo(ret->display, ret->screen, depth, TrueColor, &ret->visual)) {
- dbg(lvl_error,"failed to find visual\n");
- goto error;
- }
- ret->colormap=XCreateColormap(ret->display, ret->root_window, ret->visual.visual, AllocNone);
- valuemask = /* CWBackPixel | */ CWBorderPixel | CWEventMask | CWColormap ; // | CWBackingStore;
- attributes.colormap = ret->colormap;
- attributes.border_pixel = 0;
- attributes.event_mask = StructureNotifyMask | ExposureMask | ButtonPressMask | ButtonMotionMask | ButtonReleaseMask | KeyPressMask | KeyReleaseMask;
- attributes.backing_store = Always;
- ret->window=XCreateWindow(ret->display, RootWindow(ret->display, ret->screen), 0, 0, w, h, 0, ret->visual.depth, InputOutput, ret->visual.visual, valuemask, &attributes);
- XMapWindow(ret->display, ret->window);
- XFlush(ret->display);
- graphics_opengl_x11_watch(ret);
- return ret;
-error:
- graphics_opengl_x11_destroy(ret);
- return NULL;
-}
diff --git a/navit/graphics/qt5/CMakeLists.txt b/navit/graphics/qt5/CMakeLists.txt
deleted file mode 100644
index ff359e88f..000000000
--- a/navit/graphics/qt5/CMakeLists.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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)
-set(HAVE_FREETYPE 0)
-
-# check if we have FREETYPE
-if(font/freetype)
- set(HAVE_FREETYPE 1)
-endif()
-
-# 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} HAVE_FREETYPE=${HAVE_FREETYPE})
-
diff --git a/navit/graphics/qt5/QNavitQuick.cpp b/navit/graphics/qt5/QNavitQuick.cpp
deleted file mode 100644
index 7df3e0073..000000000
--- a/navit/graphics/qt5/QNavitQuick.cpp
+++ /dev/null
@@ -1,259 +0,0 @@
-/**
- * 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.
- */
-//Style with: clang-format -style=WebKit -i
-
-#include <glib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-extern "C" {
-#include "config.h"
-#include "item.h" /* needs to be first, as attr.h depends on it */
-
-#include "callback.h"
-#include "color.h"
-#include "debug.h"
-#include "event.h"
-
-#include "point.h" /* needs to be before graphics.h */
-
-#include "graphics.h"
-#include "keys.h"
-#include "plugin.h"
-#include "window.h"
-}
-#if defined(WINDOWS) || defined(WIN32) || defined(HAVE_API_WIN32_CE)
-#include <windows.h>
-#endif
-#include "QNavitQuick.h"
-#include "graphics_qt5.h"
-#include <QPainter>
-
-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->scroll_x, value->y + value->scroll_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(graphics_priv->scroll_x, graphics_priv->scroll_y, *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
deleted file mode 100644
index 3679e8127..000000000
--- a/navit/graphics/qt5/QNavitQuick.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2017 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.
- */
-// style with: clang-format -style=WebKit -i *
-
-#ifndef QNAVITQUICK_H
-#define QNAVITQUICK_H
-class QNavitQuick;
-#include <QColor>
-#include <QtQuick/QQuickPaintedItem>
-
-#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
deleted file mode 100644
index 5a5bd303b..000000000
--- a/navit/graphics/qt5/QNavitWidget.cpp
+++ /dev/null
@@ -1,247 +0,0 @@
-/**
- * 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.
- */
-// style with: clang-format -style=WebKit -i *
-
-#include <glib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-extern "C" {
-#include "config.h"
-#include "item.h" /* needs to be first, as attr.h depends on it */
-
-#include "callback.h"
-#include "color.h"
-#include "debug.h"
-#include "event.h"
-
-#include "point.h" /* needs to be before graphics.h */
-
-#include "graphics.h"
-#include "keys.h"
-#include "plugin.h"
-#include "window.h"
-}
-#if defined(WINDOWS) || defined(WIN32) || defined(HAVE_API_WIN32_CE)
-#include <windows.h>
-#endif
-#include "QNavitWidget.h"
-#include "QNavitWidget.moc"
-#include "graphics_qt5.h"
-
-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->scroll_x, value->y + value->scroll_y, value->pixmap->width(), value->pixmap->height());
- painter->drawPixmap(value->x + value->scroll_x, value->y + value->scroll_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(event->rect().x(), event->rect().y(), *graphics_priv->pixmap,
- event->rect().x() - graphics_priv->scroll_x, event->rect().y() - graphics_priv->scroll_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
deleted file mode 100644
index 674b69390..000000000
--- a/navit/graphics/qt5/QNavitWidget.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2017 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.
- */
-// style with: clang-format -style=WebKit -i *
-
-#ifndef __QNavitWidget_h
-#define __QNavitWidget_h
-class QNavitWidget;
-#include "graphics_qt5.h"
-#include <QEvent>
-#include <QMouseEvent>
-#include <QPixmap>
-#include <QWheelEvent>
-#include <QWidget>
-
-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
deleted file mode 100644
index 5eae821f6..000000000
--- a/navit/graphics/qt5/event_qt5.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2017 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.
- */
-// style with: clang-format -style=WebKit -i *
-
-#include <glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-extern "C" {
-#include "config.h"
-
-#include "navit/callback.h"
-#include "navit/color.h"
-#include "navit/debug.h"
-#include "navit/event.h"
-
-#include "navit/point.h" /* needs to be before graphics.h */
-
-#include "navit/graphics.h"
-#include "navit/item.h"
-#include "navit/keys.h"
-#include "navit/navit.h"
-#include "navit/plugin.h"
-#include "navit/window.h"
-}
-
-#if defined(WINDOWS) || defined(WIN32) || defined(HAVE_API_WIN32_CE)
-#include <windows.h>
-#endif
-#include "event_qt5.h"
-#include "event_qt5.moc"
-#include "graphics_qt5.h"
-#include <QSocketNotifier>
-
-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
deleted file mode 100644
index 59f168a9c..000000000
--- a/navit/graphics/qt5/event_qt5.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2017 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.
- */
-// style with: clang-format -style=WebKit -i *
-
-#include <QObject>
-#include <glib.h>
-
-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
deleted file mode 100644
index f7ac15f43..000000000
--- a/navit/graphics/qt5/graphics_qt5.cpp
+++ /dev/null
@@ -1,1107 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2017 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.
- */
-// style with: clang-format -style=WebKit -i *
-
-#include <glib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-extern "C" {
-#include "config.h"
-#include "item.h" /* needs to be first, as attr.h depends on it */
-
-#include "callback.h"
-#include "color.h"
-#include "debug.h"
-#include "event.h"
-
-#include "point.h" /* needs to be before graphics.h */
-
-#include "graphics.h"
-#include "plugin.h"
-#include "window.h"
-}
-
-#include "event_qt5.h"
-#include "graphics_qt5.h"
-#include <QDBusConnection>
-#include <QDBusInterface>
-#include <QFile>
-#include <QFont>
-#include <QGuiApplication>
-#include <QPainter>
-#include <QPixmap>
-#include <QScreen>
-#include <QSvgRenderer>
-#if USE_QML
-#include "QNavitQuick.h"
-#include <QQmlApplicationEngine>
-#include <QQmlContext>
-#include <QQuickWindow>
-#endif
-#if USE_QWIDGET
-#include "QNavitWidget.h"
-#include <QApplication>
-#endif
-#if defined(WINDOWS) || defined(WIN32) || defined(HAVE_API_WIN32_CE)
-#include <windows.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");
-#if HAVE_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);
-}
-
-/**
- * @brief font interface structure
- * This structure is preset with all function pointers provided by this implemention
- * to be returned as interface.
- */
-static struct graphics_font_methods font_methods = {
- font_destroy
-};
-
-/**
- * List of font families to use, in order of preference
- */
-static const char* fontfamilies[] = {
- "Liberation Sans",
- "Arial",
- "NcrBI4nh",
- "luximbi",
- "FreeSans",
- "DejaVu Sans",
- NULL,
-};
-
-/**
- * @brief Allocate a font context
- * @param gr own private context
- * @param meth fill this structure with correct functions to be called with handle as interface to font
- * @param font font family e.g. "Arial"
- * @param size Font size in ???
- * @param flags Font flags (currently 1 if bold and 0 if not)
- *
- * @return font handle
- *
- * Allocates a font handle and returnes filled interface stucture
- */
-static struct graphics_font_priv* font_new(struct graphics_priv* gr, struct graphics_font_methods* meth, char* font, int size, int flags)
-{
- int a = 0;
- struct graphics_font_priv* font_priv;
- dbg(lvl_debug, "enter (font %s, %d, 0x%x)\n", font, size, flags);
- font_priv = g_new0(struct graphics_font_priv, 1);
- font_priv->font = new QFont(fontfamilies[0]);
- if (font != NULL)
- font_priv->font->setFamily(font);
- /* search for exact font match */
- while ((!font_priv->font->exactMatch()) && (fontfamilies[a] != NULL)) {
- font_priv->font->setFamily(fontfamilies[a]);
- a++;
- }
- if (font_priv->font->exactMatch()) {
- dbg(lvl_debug, "Exactly matching font: %s\n", font_priv->font->family().toUtf8().data());
- } else {
- /* set any font*/
- if (font != NULL) {
- font_priv->font->setFamily(font);
- } else {
- font_priv->font->setFamily(fontfamilies[0]);
- }
- dbg(lvl_debug, "No matching font. Resort to: %s\n", font_priv->font->family().toUtf8().data());
- }
-
- /* No clue why factor 20. Found this by comparing to Freetype rendering. */
- font_priv->font->setPointSize(size / 20);
- //font_priv->font->setStyleStrategy(QFont::NoSubpixelAntialias);
- /* Check for bold font */
- if (flags) {
- font_priv->font->setBold(true);
- }
-
- *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);
-}
-
-/**
- * @brief Render given text
- * @param gr own private context
- * @param fg foreground drawing context (for color)
- * @param bg background drawing context (for color)
- * @param font font context to use (allocated by font_new)
- * @param text String to calculate bbox for
- * @param p offset on gr context to place this text.
- * @param dx transformation matrix (16.16 fixpoint)
- * @param dy transformation matrix (16.16 fixpoint)
- *
- * Renders given text on gr surface. Draws nice contrast outline around text.
- */
-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) d(%d, %d) %s\n", gr, fg, bg, p->x, p->y, dx, dy, text);
- QPainter* painter = gr->painter;
- if (painter == NULL)
- return;
-#if HAVE_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);
- qreal m_dx = ((qreal)dx) / 65536.0;
- qreal m_dy = ((qreal)dy) / 65536.0;
- QMatrix sav = painter->worldMatrix();
- QMatrix m(m_dx, m_dy, -m_dy, m_dx, p->x, p->y);
- painter->setWorldMatrix(m, TRUE);
- painter->setFont(*font->font);
- if (bg) {
- QPen shadow;
- QPainterPath path;
- shadow.setColor(bg->pen->color());
- shadow.setWidth(3);
- painter->setPen(shadow);
- path.addText(0, 0, *font->font, tmp);
- painter->drawPath(path);
- }
- painter->setPen(*fg->pen);
- 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");
-}
-
-/**
- * @brief Drag layer.
- * @param gr private handle
- * @param p vector the bitmap is moved from base, or NULL to indicate 0:0 vector
- *
- * Move layer to new position. If drag_bitmap is enabled this may also be
- * called for root layer. There the content of the root layer is to be moved
- * by given vector. On root layer, NULL indicates the end of a drag.
- */
-static void draw_drag(struct graphics_priv* gr, struct point* p)
-{
- struct point vector;
-
- if (p != NULL) {
- dbg(lvl_debug, "enter %p (%d,%d)\n", gr, p->x, p->y);
- vector = *p;
- } else {
- dbg(lvl_debug, "enter %p (NULL)\n", gr);
- vector.x = 0;
- vector.y = 0;
- }
- if (gr->root) {
- gr->scroll_x = vector.x;
- gr->scroll_y = vector.y;
- } else {
-#if USE_QWIDGET
- int damage_x = gr->x;
- int damage_y = gr->y;
- int damage_w = gr->pixmap->width();
- int damage_h = gr->pixmap->height();
-#endif
- gr->x = vector.x;
- gr->y = vector.y;
-#if USE_QWIDGET
- /* call repaint on widget for stale area. */
- if (gr->widget != NULL)
- gr->widget->repaint(damage_x, damage_y, damage_w, damage_h);
-#endif
-#if USE_QML
-// No need to emit update, as QNavitQuic always repaints everything.
-// if (gr->GPriv != NULL)
-// gr->GPriv->emit_update();
-#endif
- }
-}
-
-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)
- gr->use_count = 0;
- 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;
- } else {
- dbg(lvl_debug, "Context %p not active!\n", gr)
- }
-#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
-
- 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;
- }
- if (strcmp(type, "engine") == 0) {
- dbg(lvl_debug, "Hand over QQmlApplicationEngine\n");
- return (this_priv->engine);
- }
- 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);
-}
-
-/**
- * @brief Calculate pixel space required for font display.
- * @param gr own private context
- * @param font font context to use (allocated by font_new)
- * @param text String to calculate bbox for
- * @param dx transformation matrix (16.16 fixpoint)
- * @param dy transformation matrix (16.16 fixpoint)
- * @param ret point array to fill. (low left, top left, top right, low right)
- * @param estimate ???
- *
- * Calculates the bounding box around the given text.
- */
-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)
-{
- int i;
- struct point pt;
- QString tmp = QString::fromUtf8(text);
- QRect r;
- // dbg(lvl_debug,"enter %s %d %d\n", text, dx, dy);
-
- /* use QFontMetrix for bbox calculation as we do not always have a painter */
- QFontMetrics fm(*font->font);
- r = fm.boundingRect(tmp);
-
- /* 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();
- /* transform bbox if rotated */
- if (dy != 0 || dx != 0x10000) {
- for (i = 0; i < 4; i++) {
- pt = ret[i];
- ret[i].x = (pt.x * dx - pt.y * dy) / 0x10000;
- ret[i].y = (pt.y * dx + pt.x * dy) / 0x10000;
- }
- }
-}
-
-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;
-#if HAVE_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->scroll_x = 0;
- graphics_priv->scroll_y = 0;
- 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;
- }
-
-#if HAVE_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
-
-#if HAVE_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;
- graphics_priv->scroll_x = 0;
- graphics_priv->scroll_y = 0;
-#if USE_QML
- graphics_priv->engine = NULL;
- 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 */
- graphics_priv->engine = new QQmlApplicationEngine();
- if (graphics_priv->engine != NULL) {
- graphics_priv->GPriv = new GraphicsPriv(graphics_priv);
- QQmlContext* context = graphics_priv->engine->rootContext();
- context->setContextProperty("graphics_qt5_context", graphics_priv->GPriv);
- graphics_priv->engine->load(QUrl("qrc:///loader.qml"));
- /* Get the engine's root window (for resizing) */
- QObject* toplevel = graphics_priv->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
deleted file mode 100644
index f9d19616b..000000000
--- a/navit/graphics/qt5/graphics_qt5.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2017 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.
- */
-// style with: clang-format -style=WebKit -i *
-
-#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 <QBrush>
-#include <QGuiApplication>
-#include <QPainter>
-#include <QPen>
-#include <QPixmap>
-#include <glib.h>
-#if USE_QML
-#include <QObject>
-#include <QQmlApplicationEngine>
-#include <QQuickWindow>
-#endif
-#if USE_QWIDGET
-#include "QNavitWidget.h"
-#endif
-
-#ifndef HAVE_FREETYPE
-#define HAVE_FREETYPE 0
-#endif
-
-#ifndef SAILFISH_OS
-#define SAILFISH_OS 1
-#endif
-
-#if HAVE_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
- QQmlApplicationEngine* engine;
- GraphicsPriv* GPriv;
- QQuickWindow* window;
-#endif
-#if USE_QWIDGET
- QNavitWidget* widget;
-#endif
- QPixmap* pixmap;
- QPainter* painter;
- int use_count;
- int disable;
- int x;
- int y;
- int scroll_x;
- int scroll_y;
- struct graphics_gc_priv* background_graphics_gc_priv;
-#if HAVE_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
deleted file mode 100644
index 5f6056b26..000000000
--- a/navit/graphics/qt5/graphics_qt5.qml
+++ /dev/null
@@ -1,12 +0,0 @@
-import com.navit.graphics_qt5 1.0
-import QtQuick 2.2
-import QtQuick.Window 2.0
-
-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
deleted file mode 100644
index 6a161f621..000000000
--- a/navit/graphics/qt5/graphics_qt5.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>loader.qml</file>
- <file>graphics_qt5.qml</file>
- </qresource>
-</RCC>
diff --git a/navit/graphics/qt5/loader.qml b/navit/graphics/qt5/loader.qml
deleted file mode 100644
index 9882cb23a..000000000
--- a/navit/graphics/qt5/loader.qml
+++ /dev/null
@@ -1,44 +0,0 @@
-import com.navit.graphics_qt5 1.0
-import QtQuick 2.2
-import QtQuick.Window 2.0
-
-Window {
- width: 200; height: 200
-
- Item {
- id: root
- anchors.fill: parent
- Loader {
- width: root.width
- height: root.height
- anchors.centerIn: parent
- Screen.onOrientationChanged: {
- rotation = Screen.angleBetween(Screen.orientation , Screen.primaryOrientation)
- switch(Screen.angleBetween(Screen.orientation , Screen.primaryOrientation))
- {
- case 0:
- case 180:
- width = root.width
- height = root.height
- break
- case 90:
- case 270:
- width = root.height
- height = root.width
- break
- }
- }
- id: navit_loader
- focus: true
- source: "graphics_qt5.qml"
- objectName: "navit_loader"
- }
- Component.onCompleted: {
- // orientation update mask is defined since QML 5.4 So make this compatible to 5.2
- // by just calling this if available
- if(Screen.hasOwnProperty('orientationUpdateMask')) {
- Screen.orientationUpdateMask = Qt.PortraitOrientation + Qt.LandscapeOrientation + Qt.InvertedPortraitOrientation + Qt.InvertedLandscapeOrientation;
- }
- }
- }
-}
diff --git a/navit/graphics/qt_qpainter/CMakeLists.txt b/navit/graphics/qt_qpainter/CMakeLists.txt
deleted file mode 100644
index fa02132a0..000000000
--- a/navit/graphics/qt_qpainter/CMakeLists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-module_add_library(graphics_qt_qpainter ${CMAKE_CURRENT_BINARY_DIR}/RenderArea.moc RenderArea.cpp graphics_qt_qpainter.cpp)
-QT4_GENERATE_MOC(RenderArea.h ${CMAKE_CURRENT_BINARY_DIR}/RenderArea.moc)
-include_directories(${CMAKE_CURRENT_BINARY_DIR})
-
diff --git a/navit/graphics/qt_qpainter/RenderArea.cpp b/navit/graphics/qt_qpainter/RenderArea.cpp
deleted file mode 100644
index 1159082ed..000000000
--- a/navit/graphics/qt_qpainter/RenderArea.cpp
+++ /dev/null
@@ -1,307 +0,0 @@
-/**
- * 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 "graphics_qt_qpainter.h"
-#include "RenderArea.h"
-
-#include "RenderArea.moc"
-
-#ifdef QT_QPAINTER_USE_EMBEDDING
-EmbeddedWidget::EmbeddedWidget(struct graphics_priv *priv, QWidget* child, QWidget *parent)
-: QX11EmbedWidget(parent) {
- this->gra=priv;
- this->setWindowTitle(priv->window_title);
- QStackedLayout* _outerLayout = new QStackedLayout(this);
- this->setLayout(_outerLayout);
- _outerLayout->addWidget(child);
- _outerLayout->setCurrentWidget(child);
-}
-
-void EmbeddedWidget::closeEvent(QCloseEvent* event)
-{
- gra->widget->processClose();
-}
-#endif /* QT_QPAINTER_USE_EMBEDDING */
-
-//##############################################################################################################
-//# Description: Constructor
-//# Comment: Using a QPixmap for rendering the graphics
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-RenderArea::RenderArea(struct graphics_priv *priv, QT_QPAINTER_RENDERAREA_PARENT *parent, int w, int h, int overlay)
- : QT_QPAINTER_RENDERAREA_PARENT(parent)
-{
- pixmap = new QPixmap(w, h);
-#ifndef QT_QPAINTER_NO_WIDGET
- if (!overlay) {
-#if QT_VERSION >= 0x040700
- grabGesture(Qt::PinchGesture);
- grabGesture(Qt::SwipeGesture);
- grabGesture(Qt::PanGesture);
-#endif
- setWindowTitle(priv->window_title);
- }
-#endif
- is_overlay=overlay;
- gra=priv;
-#ifdef QT_QPAINTER_USE_EVENT_QT
- timer_type=g_hash_table_new(NULL, NULL);
- timer_callback=g_hash_table_new(NULL, NULL);
- watches=g_hash_table_new(NULL, NULL);
-#ifndef QT_QPAINTER_NO_WIDGET
- setAttribute(Qt::WA_OpaquePaintEvent, true);
-#endif
-#endif
-}
-
-//##############################################################################################################
-//# Description: QWidget:closeEvent
-//# Comment: Deletes navit object and stops event loop on graphics shutdown
-//##############################################################################################################
-void RenderArea::processClose()
-{
- callback_list_call_attr_0(this->cbl, attr_window_closed);
-}
-void RenderArea::closeEvent(QCloseEvent* event)
-{
- this->processClose();
-}
-
-bool RenderArea::event(QEvent *event)
-{
-#if QT_VERSION >= 0x040700
- if (event->type() == QEvent::Gesture) {
- dbg(lvl_debug,"gesture\n");
- return true;
- }
-#endif
- return QWidget::event(event);
-}
-//##############################################################################################################
-//# Description: QWidget:sizeHint
-//# Comment: This property holds the recommended size for the widget
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-QSize RenderArea::sizeHint() const
-{
- return QSize(gra->w, gra->h);
-}
-
-//##############################################################################################################
-//# Description: QWidget:paintEvent
-//# Comment: A paint event is a request to repaint all or part of the widget.
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-void RenderArea::paintEvent(QPaintEvent * event)
-{
- qt_qpainter_draw(gra, &event->rect(), 1);
-}
-
-void RenderArea::do_resize(QSize size)
-{
- if (pixmap->paintingActive()) {
- pixmap->paintEngine()->painter()->end();
- }
- delete pixmap;
- pixmap=new QPixmap(size);
- pixmap->fill();
- QPainter painter(pixmap);
- QBrush brush;
- painter.fillRect(0, 0, size.width(), size.height(), brush);
- dbg(lvl_debug,"size %dx%d\n", size.width(), size.height());
- dbg(lvl_debug,"pixmap %p %dx%d\n", pixmap, pixmap->width(), pixmap->height());
- callback_list_call_attr_2(this->cbl, attr_resize, GINT_TO_POINTER(size.width()), GINT_TO_POINTER(size.height()));
-}
-
-//##############################################################################################################
-//# Description: QWidget::resizeEvent()
-//# Comment: When resizeEvent() is called, the widget already has its new geometry.
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-void RenderArea::resizeEvent(QResizeEvent * event)
-{
- if (!this->is_overlay) {
- RenderArea::do_resize(event->size());
- }
-}
-
-//##############################################################################################################
-//# Description: Method to handle mouse clicks
-//# Comment: Delegate of QWidget::mousePressEvent and QWidget::mouseReleaseEvent (see below)
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-void RenderArea::mouseEvent(int pressed, QMouseEvent *event)
-{
- struct point p;
- p.x=event->x();
- p.y=event->y();
- switch (event->button()) {
- case Qt::LeftButton:
- callback_list_call_attr_3(this->cbl, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(1), GINT_TO_POINTER(&p));
- break;
- case Qt::MidButton:
- callback_list_call_attr_3(this->cbl, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(2), GINT_TO_POINTER(&p));
- break;
- case Qt::RightButton:
- callback_list_call_attr_3(this->cbl, attr_button, GINT_TO_POINTER(pressed), GINT_TO_POINTER(3), GINT_TO_POINTER(&p));
- break;
- default:
- break;
- }
-}
-
-void RenderArea::mousePressEvent(QMouseEvent *event)
-{
- mouseEvent(1, event);
-}
-
-void RenderArea::mouseReleaseEvent(QMouseEvent *event)
-{
- mouseEvent(0, event);
-}
-
-//##############################################################################################################
-//# Description: QWidget::mouseMoveEvent
-//# Comment: If mouse tracking is switched on, mouse move events occur even if no mouse button is pressed.
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-void RenderArea::mouseMoveEvent(QMouseEvent *event)
-{
- struct point p;
- p.x=event->x();
- p.y=event->y();
- callback_list_call_attr_1(this->cbl, attr_motion, (void *)&p);
-}
-
-
-//##############################################################################################################
-//# Description: Qt Event :: Zoom in/out with the mouse's scrollwheel
-//# Comment:
-//# Authors: Stefan Klumpp (04/2008)
-//##############################################################################################################
-void RenderArea::wheelEvent(QWheelEvent *event)
-{
- struct point p;
- int button;
-
- 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(this->cbl, attr_button, GINT_TO_POINTER(1), GINT_TO_POINTER(button), GINT_TO_POINTER(&p));
- callback_list_call_attr_3(this->cbl, attr_button, GINT_TO_POINTER(0), GINT_TO_POINTER(button), GINT_TO_POINTER(&p));
- }
-
- event->accept();
-}
-
-#define CASE(x) case x:
-
-void RenderArea::keyPressEvent(QKeyEvent *event)
-{
- QString str=event->text();
- const char *text=str.toUtf8().constData();
- dbg(lvl_debug,"enter text='%s' 0x%x (%zu) key=%d\n", text, text[0], strlen(text), event->key());
- if (!text || !text[0] || text[0] == 0x7f) {
- dbg(lvl_debug,"special key\n");
- switch (event->key()) {
- case 4099:
- {
- char text_backspace[] = {NAVIT_KEY_BACKSPACE,'\0'};
- text=text_backspace;
- }
- break;
- case 4101:
-#ifdef QT_QPAINTER_CUSTOM_RETURN
- QT_QPAINTER_CUSTOM_RETURN
-#endif
- {
- char text_return[] = {NAVIT_KEY_RETURN,'\0'};
- text=text_return;
- }
- break;
- case 4114:
-#ifdef QT_QPAINTER_CUSTOM_LEFT
- QT_QPAINTER_CUSTOM_LEFT
-#endif
- {
- char text_left[] = {NAVIT_KEY_LEFT,'\0'};
- text=text_left;
- }
- break;
- case 4115:
-#ifdef QT_QPAINTER_CUSTOM_UP
- QT_QPAINTER_CUSTOM_UP
-#endif
- {
- char text_up[] = {NAVIT_KEY_UP,'\0'};
- text=text_up;
- }
- break;
- case 4116:
-#ifdef QT_QPAINTER_CUSTOM_RIGHT
- QT_QPAINTER_CUSTOM_RIGHT
-#endif
- {
- char text_right[] = {NAVIT_KEY_RIGHT,'\0'};
- text=text_right;
- }
- break;
- case 4117:
-#ifdef QT_QPAINTER_CUSTOM_DOWN
- QT_QPAINTER_CUSTOM_DOWN
-#endif
- {
- char text_down[] = {NAVIT_KEY_DOWN,'\0'};
- text=text_down;
- }
- break;
- }
- }
- callback_list_call_attr_1(this->cbl, attr_keypress, (void *)text);
- event->accept();
-}
-
-void RenderArea::watchEvent(int fd)
-{
-#ifdef QT_QPAINTER_USE_EVENT_QT
- struct event_watch *ev=(struct event_watch *)g_hash_table_lookup(watches, (void *)fd);
- dbg(lvl_debug,"fd=%d ev=%p cb=%p\n", fd, ev, ev->cb);
- callback_call_0(ev->cb);
-#endif
-}
-
-#ifdef QT_QPAINTER_USE_EVENT_QT
-void RenderArea::timerEvent(QTimerEvent *event)
-{
- int id=event->timerId();
- struct callback *cb=(struct callback *)g_hash_table_lookup(timer_callback, (void *)id);
- if (cb)
- callback_call_0(cb);
- if (!g_hash_table_lookup(timer_type, (void *)id))
- event_qt_remove_timeout((struct event_timeout *)id);
-}
-#endif /* QT_QPAINTER_USE_EVENT_QT */
-
diff --git a/navit/graphics/qt_qpainter/RenderArea.h b/navit/graphics/qt_qpainter/RenderArea.h
deleted file mode 100644
index a78c23cab..000000000
--- a/navit/graphics/qt_qpainter/RenderArea.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * 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.
- */
-#ifndef __RENDERAREA_H
-#define __RENDERAREA_H
-
-#ifdef QT_QPAINTER_USE_EMBEDDING
-class EmbeddedWidget : public QX11EmbedWidget {
- struct graphics_priv *gra;
-public:
- EmbeddedWidget(struct graphics_priv *priv, QWidget* child, QWidget *parent = NULL);
-protected:
- void closeEvent(QCloseEvent *event);
-};
-#endif
-
-class RenderArea : public QT_QPAINTER_RENDERAREA_PARENT
-{
- Q_OBJECT
- public:
- RenderArea(struct graphics_priv *priv, QT_QPAINTER_RENDERAREA_PARENT *parent = 0, int w=800, int h=800, int overlay=0);
- void do_resize(QSize size);
- QPixmap *pixmap;
- struct callback_list *cbl;
- struct graphics_priv *gra;
-
-#ifdef QT_QPAINTER_USE_EVENT_QT
- GHashTable *timer_type;
- GHashTable *timer_callback;
- GHashTable *watches;
-#endif
-
- void processClose();
-protected:
- int is_overlay;
- QSize sizeHint() const;
- void paintEvent(QPaintEvent *event);
- void resizeEvent(QResizeEvent *event);
- void mouseEvent(int pressed, QMouseEvent *event);
- void mousePressEvent(QMouseEvent *event);
- void mouseReleaseEvent(QMouseEvent *event);
- void mouseMoveEvent(QMouseEvent *event);
- void wheelEvent(QWheelEvent *event);
- void keyPressEvent(QKeyEvent *event);
- void closeEvent(QCloseEvent *event);
- bool event(QEvent *event);
-#ifdef QT_QPAINTER_USE_EVENT_QT
- void timerEvent(QTimerEvent *event);
-#endif
- protected slots:
- void watchEvent(int fd);
- };
-
-#endif /* __RENDERAREA_H */
diff --git a/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp b/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp
deleted file mode 100644
index 65163ea9d..000000000
--- a/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp
+++ /dev/null
@@ -1,933 +0,0 @@
-/**
- * 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.
- */
-
-//##############################################################################################################
-//#
-//# File: graphics_qt_qpainter.cpp
-//# Description: Graphics interface for internal GUI using Qt (Trolltech.com)
-//# Comment:
-//# Authors: Martin Schaller (04/2008), Stefan Klumpp (04/2008)
-//#
-//##############################################################################################################
-
-
-#include "graphics_qt_qpainter.h"
-#include "RenderArea.h"
-
-//##############################################################################################################
-//# Description: RenderArea (QWidget) class for the main window (map, menu, ...)
-//# Comment:
-//# Authors: Martin Schaller (04/2008), Stefan Klumpp (04/2008)
-//##############################################################################################################
-static void
-overlay_rect(struct graphics_priv *parent, struct graphics_priv *overlay, int clean, QRect *r)
-{
- struct point p;
- int w,h;
- if (clean) {
- p=overlay->pclean;
- } else {
- p=overlay->p;;
- }
- w=overlay->widget->pixmap->width();
- h=overlay->widget->pixmap->height();
- if (overlay->wraparound) {
- if (p.x < 0)
- p.x+=parent->widget->pixmap->width();
- if (p.y < 0)
- p.y+=parent->widget->pixmap->height();
- if (w < 0)
- w += parent->widget->pixmap->width();
- if (h < 0)
- h += parent->widget->pixmap->height();
- }
- r->setRect(p.x, p.y, w, h);
-}
-
-void
-qt_qpainter_draw(struct graphics_priv *gr, const QRect *r, int paintev)
-{
- if (!paintev) {
-#ifndef QT_QPAINTER_NO_WIDGET
- dbg(lvl_debug,"update %d,%d %d x %d\n", r->x(), r->y(), r->width(), r->height());
- if (r->x() <= -r->width())
- return;
- if (r->y() <= -r->height())
- return;
- if (r->x() > gr->widget->pixmap->width())
- return;
- if (r->y() > gr->widget->pixmap->height())
- return;
- dbg(lvl_debug,"update valid %d,%d %dx%d\n", r->x(), r->y(), r->width(), r->height());
- gr->widget->update(*r);
-#endif
- return;
- }
- QPixmap pixmap(r->width(),r->height());
- QPainter painter(&pixmap);
- struct graphics_priv *overlay=NULL;
- if (! gr->overlay_disable)
- overlay=gr->overlays;
- if ((gr->p.x || gr->p.y) && gr->background_gc) {
- painter.setPen(*gr->background_gc->pen);
- painter.fillRect(0, 0, gr->widget->pixmap->width(), gr->widget->pixmap->height(), *gr->background_gc->brush);
- }
- painter.drawPixmap(QPoint(gr->p.x,gr->p.y), *gr->widget->pixmap, *r);
- while (overlay) {
- QRect ovr;
- overlay_rect(gr, overlay, 0, &ovr);
- if (!overlay->overlay_disable && r->intersects(ovr)) {
- unsigned char *data;
- int i,size=ovr.width()*ovr.height();
- QImage img=overlay->widget->pixmap->toImage().convertToFormat(QImage::Format_ARGB32_Premultiplied);
- data=img.bits();
- for (i = 0 ; i < size ; i++) {
- if (data[0] == overlay->rgba[0] && data[1] == overlay->rgba[1] && data[2] == overlay->rgba[2])
- data[3]=overlay->rgba[3];
- data+=4;
- }
- painter.drawImage(QPoint(ovr.x()-r->x(),ovr.y()-r->y()), img);
- }
- overlay=overlay->next;
- }
-#ifndef QT_QPAINTER_NO_WIDGET
- QPainter painterw(gr->widget);
- painterw.drawPixmap(r->x(), r->y(), pixmap);
-#endif
-}
-
-//##############################################################################################################
-// General comments:
-// -----------------
-// gr = graphics = draw area
-// gc = graphics context = pen to paint on the draw area
-//##############################################################################################################
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-struct graphics_font_priv {
- QFont *font;
-};
-
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-struct graphics_image_priv {
- QPixmap *pixmap;
-};
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void graphics_destroy(struct graphics_priv *gr)
-{
-#ifdef QT_QPAINTER_USE_FREETYPE
- gr->freetype_methods.destroy();
-#endif
- g_free(gr->window_title);
- g_free(gr);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void font_destroy(struct graphics_font_priv *font)
-{
-
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static struct graphics_font_methods font_methods = {
- font_destroy
-};
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static struct graphics_font_priv *font_new(struct graphics_priv *gr, struct graphics_font_methods *meth, char *fontfamily, int size, int flags)
-{
- struct graphics_font_priv *ret=g_new0(struct graphics_font_priv, 1);
- ret->font=new QFont("Arial",size/20);
- *meth=font_methods;
- return ret;
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void gc_destroy(struct graphics_gc_priv *gc)
-{
- delete gc->pen;
- delete gc->brush;
- g_free(gc);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void gc_set_linewidth(struct graphics_gc_priv *gc, int w)
-{
- gc->pen->setWidth(w);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void gc_set_dashes(struct graphics_gc_priv *gc, int w, int offset, unsigned char *dash_list, int n)
-{
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-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 */);
- gc->pen->setColor(col);
- gc->brush->setColor(col);
- gc->c=*c;
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void gc_set_background(struct graphics_gc_priv *gc, struct color *c)
-{
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static struct graphics_gc_methods gc_methods = {
- gc_destroy,
- gc_set_linewidth,
- gc_set_dashes,
- gc_set_foreground,
- gc_set_background
-};
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static struct graphics_gc_priv *gc_new(struct graphics_priv *gr, struct graphics_gc_methods *meth)
-{
- *meth=gc_methods;
- struct graphics_gc_priv *ret=g_new0(struct graphics_gc_priv, 1);
- ret->pen=new QPen();
- ret->brush=new QBrush(Qt::SolidPattern);
- return ret;
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-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 *ret;
- QPixmap *cachedPixmap;
- QString key(path);
-
- ret=g_new0(struct graphics_image_priv, 1);
-
- cachedPixmap=QPixmapCache::find(key);
- if (!cachedPixmap) {
-#ifdef HAVE_QT_SVG
- if(key.endsWith(".svg", Qt::CaseInsensitive)) {
- QSvgRenderer renderer(key);
- if (!renderer.isValid()) {
- g_free(ret);
- return NULL;
- }
- ret->pixmap=new QPixmap(renderer.defaultSize());
- ret->pixmap->fill(Qt::transparent);
- QPainter painter(ret->pixmap);
- renderer.render(&painter);
-
- } else {
-
- ret->pixmap=new QPixmap(path);
-
- }
-#else
- ret->pixmap=new QPixmap(path);
-#endif /* QT__VERSION */
- if (ret->pixmap->isNull()) {
- g_free(ret);
- return NULL;
- }
-
- QPixmapCache::insert(key,QPixmap(*ret->pixmap));
- } else {
- ret->pixmap=new QPixmap(*cachedPixmap);
- }
-
- *w=ret->pixmap->width();
- *h=ret->pixmap->height();
- if (hot) {
- hot->x=*w/2;
- hot->y=*h/2;
- }
-
- return ret;
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- int i;
- QPolygon polygon;
-
- 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);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- int i;
- QPolygon polygon;
-
- 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);
- gr->painter->drawPolygon(polygon);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-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);
- gr->painter->fillRect(p->x,p->y, w, h, *gc->brush);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r)
-{
- gr->painter->setPen(*gc->pen);
- gr->painter->drawArc(p->x-r/2, p->y-r/2, r, r, 0, 360*16);
-
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-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)
-{
- QPainter *painter=gr->painter;
-#ifndef QT_QPAINTER_USE_FREETYPE
- QString tmp=QString::fromUtf8(text);
-#ifndef QT_NO_TRANSFORMATIONS
- 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);
-#else
- painter->setPen(*fg->pen);
- painter->setFont(*font->font);
- painter->drawText(p->x, p->y, tmp);
-#endif
-#else
- struct font_freetype_text *t;
- struct font_freetype_glyph *g, **gp;
- struct color transparent = {0x0000, 0x0000, 0x0000, 0x0000};
- struct color *fgc=&fg->c, *bgc=&bg->c;
-
- int i,x,y;
-
- if (! font)
- return;
- 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;
- }
- } else
- bgc=&transparent;
- 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);
-#endif
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void draw_image(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img)
-{
- gr->painter->drawPixmap(p->x, p->y, *img->pixmap);
-}
-
-static void
-draw_drag(struct graphics_priv *gr, struct point *p)
-{
- if (!gr->cleanup) {
- gr->pclean=gr->p;
- gr->cleanup=1;
- }
- if (p)
- gr->p=*p;
- else {
- gr->p.x=0;
- gr->p.y=0;
- }
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc)
-{
- gr->background_gc=gc;
- gr->rgba[2]=gc->c.r >> 8;
- gr->rgba[1]=gc->c.g >> 8;
- gr->rgba[0]=gc->c.b >> 8;
- gr->rgba[3]=gc->c.a >> 8;
-}
-
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void draw_mode(struct graphics_priv *gr, enum draw_mode_num mode)
-{
- dbg(lvl_debug,"mode for %p %d\n", gr, mode);
- QRect r;
- if (mode == draw_mode_begin) {
- if (gr->widget->pixmap->paintingActive()) {
- gr->widget->pixmap->paintEngine()->painter()->end();
- }
- gr->painter->begin(gr->widget->pixmap);
- }
- if (mode == draw_mode_end) {
- gr->painter->end();
- if (gr->parent) {
- if (gr->cleanup) {
- overlay_rect(gr->parent, gr, 1, &r);
- qt_qpainter_draw(gr->parent, &r, 0);
- gr->cleanup=0;
- }
- overlay_rect(gr->parent, gr, 0, &r);
- qt_qpainter_draw(gr->parent, &r, 0);
- } else {
- r.setRect(0, 0, gr->widget->pixmap->width(), gr->widget->pixmap->height());
- qt_qpainter_draw(gr, &r, 0);
- }
- if (!gr->parent)
- QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents|QEventLoop::ExcludeSocketNotifiers|QEventLoop::DeferredDeletion|QEventLoop::X11ExcludeTimers);
- }
- gr->mode=mode;
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h,int wraparound);
-
-static int argc=1;
-static char *argv[]={NULL,NULL,NULL};
-
-static int
-fullscreen(struct window *win, int on)
-{
-#ifndef QT_QPAINTER_NO_WIDGET
- struct graphics_priv *this_=(struct graphics_priv *)win->priv;
- QWidget* _outerWidget;
-#ifdef QT_QPAINTER_USE_EMBEDDING
- _outerWidget=(QWidget*)this_->widget->parent();
-#else
- _outerWidget=this_->widget;
-#endif /* QT_QPAINTER_USE_EMBEDDING */
- if (on)
- _outerWidget->showFullScreen();
- else
- _outerWidget->showMaximized();
-#endif
- return 1;
-}
-
-static void
-disable_suspend(struct window *win)
-{
-#ifdef HAVE_QPE
- struct graphics_priv *this_=(struct graphics_priv *)win->priv;
- this_->app->setTempScreenSaverMode(QPEApplication::DisableLightOff);
-#endif
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void * get_data(struct graphics_priv *this_, const char *type)
-{
- struct window *win;
- QString xid;
- bool ok;
-
- if (!strcmp(type, "resize")) {
- dbg(lvl_debug,"resize %d %d\n",this_->w,this_->h);
- QSize size(this_->w,this_->h);
- this_->widget->do_resize(size);
- }
- if (!strcmp(type, "qt_widget"))
- return this_->widget;
- if (!strcmp(type, "qt_pixmap"))
- return this_->widget->pixmap;
- if (!strcmp(type, "window")) {
- win=g_new(struct window, 1);
-#ifndef QT_QPAINTER_NO_WIDGET
-#ifdef QT_QPAINTER_USE_EMBEDDING
- EmbeddedWidget* _outerWidget=new EmbeddedWidget(this_,this_->widget,NULL);
- xid=getenv("NAVIT_XID");
- if (xid.length()>0) {
- _outerWidget->embedInto(xid.toULong(&ok,0));
- }
- _outerWidget->show();
-#endif /* QT_QPAINTER_USE_EMBEDDING */
- if (this_->w && this_->h)
- this_->widget->show();
- else
- this_->widget->showMaximized();
-#endif /* QT_QPAINTER_NO_WIDGET */
- win->priv=this_;
- win->fullscreen=fullscreen;
- win->disable_suspend=disable_suspend;
- return win;
- }
- return NULL;
-}
-
-static void
-image_free(struct graphics_priv *gr, struct graphics_image_priv *priv)
-{
- 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)
-{
- QPainter *painter=gr->painter;
- QString tmp=QString::fromUtf8(text);
- painter->setFont(*font->font);
- QRect r=painter->boundingRect(0,0,gr->w,gr->h,0,tmp);
- ret[0].x=0;
- ret[0].y=-r.height();
- ret[1].x=0;
- ret[1].y=0;
- ret[2].x=r.width();
- ret[2].y=0;
- ret[3].x=r.width();
- ret[3].y=-r.height();
-}
-
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void overlay_disable(struct graphics_priv *gr, int disable)
-{
- gr->overlay_disable=disable;
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static int set_attr(struct graphics_priv *gr, struct attr *attr)
-{
- switch (attr->type) {
- case attr_w:
- gr->w=attr->u.num;
- if (gr->w != 0 && gr->h != 0) {
- QSize size(gr->w,gr->h);
- gr->widget->do_resize(size);
- }
- break;
- case attr_h:
- gr->h=attr->u.num;
- if (gr->w != 0 && gr->h != 0) {
- QSize size(gr->w,gr->h);
- gr->widget->do_resize(size);
- }
- break;
- default:
- return 0;
- }
- return 1;
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-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,
- NULL,
- set_attr,
- NULL, /* show_native_keyboard */
- NULL, /* hide_native_keyboard */
-};
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static struct graphics_priv * overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h,int wraparound)
-{
- *meth=graphics_methods;
- struct graphics_priv *ret=g_new0(struct graphics_priv, 1);
-#ifdef QT_QPAINTER_USE_FREETYPE
- if (gr->font_freetype_new) {
- ret->font_freetype_new=gr->font_freetype_new;
- gr->font_freetype_new(&ret->freetype_methods);
- meth->font_new=(struct graphics_font_priv *(*)(struct graphics_priv *, struct graphics_font_methods *, char *, int, int))ret->freetype_methods.font_new;
- meth->get_text_bbox=(void (*)(struct graphics_priv*, struct graphics_font_priv*, char*, int, int, struct point*, int))ret->freetype_methods.get_text_bbox;
- }
-#endif
- ret->widget= new RenderArea(ret,gr->widget,w,h,1);
- ret->wraparound=wraparound;
- ret->painter=new QPainter;
- ret->p=*p;
- ret->parent=gr;
- ret->next=gr->overlays;
- gr->overlays=ret;
-#ifndef QT_QPAINTER_NO_WIDGET
- ret->widget->hide();
-#endif
- return ret;
-}
-
-#ifdef QT_QPAINTER_USE_EVENT_QT
-
-
-static struct graphics_priv *event_gr;
-
-static void
-event_qt_main_loop_run(void)
-{
- event_gr->app->exec();
-}
-
-static void event_qt_main_loop_quit(void)
-{
- dbg(lvl_debug,"enter\n");
- exit(0);
-}
-
-static struct event_watch *
-event_qt_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(event_gr->widget->watches, GINT_TO_POINTER(fd), ret);
- ret->sn=new QSocketNotifier(fd, QSocketNotifier::Read, event_gr->widget);
- QObject::connect(ret->sn, SIGNAL(activated(int)), event_gr->widget, SLOT(watchEvent(int)));
- return ret;
-}
-
-static void
-event_qt_remove_watch(struct event_watch *ev)
-{
- g_hash_table_remove(event_gr->widget->watches, GINT_TO_POINTER(ev->fd));
- delete(ev->sn);
- g_free(ev);
-
-}
-
-static struct event_timeout *
-event_qt_add_timeout(int timeout, int multi, struct callback *cb)
-{
- int id;
- id=event_gr->widget->startTimer(timeout);
- g_hash_table_insert(event_gr->widget->timer_callback, (void *)id, cb);
- g_hash_table_insert(event_gr->widget->timer_type, (void *)id, (void *)!!multi);
- return (struct event_timeout *)id;
-}
-
-void
-event_qt_remove_timeout(struct event_timeout *ev)
-{
- event_gr->widget->killTimer((int)(long)ev);
- g_hash_table_remove(event_gr->widget->timer_callback, ev);
- g_hash_table_remove(event_gr->widget->timer_type, ev);
-}
-
-static struct event_idle *
-event_qt_add_idle(int priority, struct callback *cb)
-{
- dbg(lvl_debug,"enter\n");
- return (struct event_idle *)event_qt_add_timeout(0, 1, cb);
-}
-
-static void
-event_qt_remove_idle(struct event_idle *ev)
-{
- dbg(lvl_debug,"enter\n");
- event_qt_remove_timeout((struct event_timeout *) ev);
-}
-
-static void
-event_qt_call_callback(struct callback_list *cb)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-static struct event_methods event_qt_methods = {
- event_qt_main_loop_run,
- event_qt_main_loop_quit,
- event_qt_add_watch,
- event_qt_remove_watch,
- event_qt_add_timeout,
- event_qt_remove_timeout,
- event_qt_add_idle,
- event_qt_remove_idle,
- event_qt_call_callback,
-};
-
-struct event_priv {
-};
-
-struct event_priv *
-event_qt_new(struct event_methods *meth)
-{
- dbg(lvl_debug,"enter\n");
- *meth=event_qt_methods;
- return NULL;
-}
-#endif
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static struct graphics_priv * graphics_qt_qpainter_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct graphics_priv *ret;
- struct font_priv * (*font_freetype_new)(void *meth);
- struct attr *attr;
-
- dbg(lvl_debug,"enter\n");
-#ifdef QT_QPAINTER_USE_EVENT_QT
- if (event_gr)
- return NULL;
- if (! event_request_system("qt","graphics_qt_qpainter_new"))
- return NULL;
-#endif
-#ifdef QT_QPAINTER_USE_EVENT_GLIB
- if (! event_request_system("glib","graphics_qt_qpainter_new"))
- return NULL;
-#endif
-#ifdef QT_QPAINTER_USE_FREETYPE
- 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
- ret=g_new0(struct graphics_priv, 1);
- *meth=graphics_methods;
- ret->nav=nav;
-#ifdef QT_QPAINTER_USE_FREETYPE
- ret->font_freetype_new=font_freetype_new;
- font_freetype_new(&ret->freetype_methods);
- meth->font_new=(struct graphics_font_priv *(*)(struct graphics_priv *, struct graphics_font_methods *, char *, int, int))ret->freetype_methods.font_new;
- meth->get_text_bbox=(void (*)(struct graphics_priv*, struct graphics_font_priv*, char*, int, int, struct point*, int))ret->freetype_methods.get_text_bbox;
-#endif
-
-#if defined QT_QPAINTER_USE_EMBEDDING && QT_VERSION >= 0x040500
- if ((attr=attr_search(attrs, NULL, attr_gc_type)))
- QApplication::setGraphicsSystem(attr->u.str);
- else
- QApplication::setGraphicsSystem("raster");
-#endif
- argv[0]=(char*)malloc(255);
- strcpy(argv[0], "navit");
- if ((attr=attr_search(attrs, NULL, attr_flags)))
- ret->flags=attr->u.num;
- if (ret->flags & 1) {
- argv[1]=(char*)malloc(255);
- strcpy(argv[1], "-qws");
- argc++;
- }
-#ifndef QT_QPAINTER_NO_APP
-#ifdef HAVE_QPE
- ret->app = new QPEApplication(argc, argv);
-#else
- ret->app = new QApplication(argc, argv);
-#endif
-#endif
- ret->widget= new RenderArea(ret);
- ret->widget->cbl=cbl;
- ret->painter = new QPainter;
-#ifdef QT_QPAINTER_USE_EVENT_QT
- event_gr=ret;
-#endif
- ret->w=800;
- ret->h=600;
- if ((attr=attr_search(attrs, NULL, attr_w)))
- ret->w=attr->u.num;
- if ((attr=attr_search(attrs, NULL, attr_h)))
- ret->h=attr->u.num;
- if ((attr=attr_search(attrs, NULL, attr_window_title)))
- ret->window_title=g_strdup(attr->u.str);
- else
- ret->window_title=g_strdup("Navit");
-
- dbg(lvl_debug,"return\n");
- return ret;
-}
-
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-void plugin_init(void)
-{
- plugin_register_category_graphics("qt_qpainter", graphics_qt_qpainter_new);
-#ifdef QT_QPAINTER_USE_EVENT_QT
- plugin_register_category_event("qt", event_qt_new);
-#endif
-}
-
-
-
-
-// *** EOF ***
diff --git a/navit/graphics/qt_qpainter/graphics_qt_qpainter.h b/navit/graphics/qt_qpainter/graphics_qt_qpainter.h
deleted file mode 100644
index 9678b0dc0..000000000
--- a/navit/graphics/qt_qpainter/graphics_qt_qpainter.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * 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.
- */
-#ifndef __GRAPHICS_QT_QPAINTER_H
-#define __GRAPHICS_QT_QPAINTER_H
-
-#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"
-
-#include <qglobal.h>
-#if QT_VERSION < 0x040000
-#error "Support for Qt 3 was dropped in rev 5999."
-#endif
-
-#ifndef QT_QPAINTER_USE_FREETYPE
-#define QT_QPAINTER_USE_FREETYPE 1
-#endif
-
-#ifdef QT_QPAINTER_USE_FREETYPE
-#include "navit/font/freetype/font_freetype.h"
-#endif
-
-#include <QResizeEvent>
-#include <QApplication>
-#if QT_VERSION >= 0x040200
-#include <QGraphicsScene>
-#include <QGraphicsView>
-#endif
-#include <QPainter>
-#include <QPen>
-#include <QBrush>
-#include <QPixmap>
-#include <QWidget>
-#include <QPolygonF>
-#include <QPixmapCache>
-#include <QtGui>
-#ifdef HAVE_QT_SVG
-#include <QSvgRenderer>
-#endif
-
-#ifndef QT_QPAINTER_USE_EVENT_GLIB
-#define QT_QPAINTER_USE_EVENT_GLIB 1
-#endif
-
-#ifdef Q_WS_X11
-#ifndef QT_QPAINTER_USE_EMBEDDING
-#define QT_QPAINTER_USE_EMBEDDING 1
-#endif
-#endif
-
-#ifdef QT_QPAINTER_USE_EMBEDDING
-#include <QX11EmbedWidget>
-#endif
-
-#ifndef QT_QPAINTER_RENDERAREA_PARENT
-#define QT_QPAINTER_RENDERAREA_PARENT QWidget
-#endif
-
-class RenderArea;
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-struct graphics_gc_priv {
- QPen *pen;
- QBrush *brush;
- struct color c;
-};
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-struct graphics_priv {
-#ifdef HAVE_QPE
- QPEApplication *app;
-#else
- QApplication *app;
-#endif
- RenderArea *widget;
- QPainter *painter;
- struct graphics_gc_priv *background_gc;
- unsigned char rgba[4];
- enum draw_mode_num mode;
- struct graphics_priv *parent,*overlays,*next;
- struct point p,pclean;
- int cleanup;
- int overlay_disable;
- int wraparound;
-#ifdef QT_QPAINTER_USE_FREETYPE
- struct font_priv * (*font_freetype_new)(void *meth);
- struct font_freetype_methods freetype_methods;
-#endif
- int w,h,flags;
- struct navit* nav;
- char *window_title;
-};
-
-void qt_qpainter_draw(struct graphics_priv *gr, const QRect *r, int paintev);
-struct event_watch {
- QSocketNotifier *sn;
- struct callback *cb;
- int fd;
-};
-
-void event_qt_remove_timeout(struct event_timeout *ev);
-
-#endif /* __GRAPHICS_QT_QPAINTER_H */
diff --git a/navit/graphics/sdl/CMakeLists.txt b/navit/graphics/sdl/CMakeLists.txt
deleted file mode 100644
index b8cad6025..000000000
--- a/navit/graphics/sdl/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-module_add_library(graphics_sdl graphics_sdl.c raster.c)
-
diff --git a/navit/graphics/sdl/event.c b/navit/graphics/sdl/event.c
deleted file mode 100644
index f96b079b3..000000000
--- a/navit/graphics/sdl/event.c
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * event.c
- *
- * Created on: 01.05.2011
- * Author: norad
- */
-
-#include "webos/webos.h"
-
-struct event_timeout {
- SDL_TimerID id;
- int multi;
- struct callback *cb;
-};
-
-struct idle_task {
- int priority;
- struct callback *cb;
-};
-
-struct event_watch {
- struct pollfd *pfd;
- struct callback *cb;
-};
-
-static void event_sdl_watch_thread(GPtrArray *);
-static void event_sdl_watch_startthread(GPtrArray *watch_list);
-static void event_sdl_watch_stopthread(void);
-static struct event_watch *event_sdl_add_watch(int, enum event_watch_cond,
- struct callback *);
-static void event_sdl_remove_watch(struct event_watch *);
-static struct event_timeout *event_sdl_add_timeout(int, int, struct callback *);
-static void event_sdl_remove_timeout(struct event_timeout *);
-static struct event_idle *event_sdl_add_idle(int, struct callback *);
-static void event_sdl_remove_idle(struct event_idle *);
-static void event_sdl_call_callback(struct callback_list *);
-
-# ifdef USE_WEBOS_ACCELEROMETER
-static unsigned int sdl_orientation_count = 2 ^ 16;
-static char sdl_next_orientation = WEBOS_ORIENTATION_PORTRAIT;
-static SDL_Joystick *accelerometer = NULL;
-static unsigned int orientation = WEBOS_ORIENTATION_PORTRAIT;
-
-static void sdl_accelerometer_handler(void* param) {
- struct graphics_priv *gr = (struct graphics_priv *) param;
- int xAxis = SDL_JoystickGetAxis(accelerometer, 0);
- int yAxis = SDL_JoystickGetAxis(accelerometer, 1);
- int zAxis = SDL_JoystickGetAxis(accelerometer, 2);
- unsigned char new_orientation;
-
- dbg(lvl_info, "x(%d) y(%d) z(%d) c(%d)\n", xAxis, yAxis, zAxis,
- sdl_orientation_count);
-
- if (zAxis > -30000) {
- if (xAxis < -15000 && yAxis > -5000 && yAxis < 5000)
- new_orientation = WEBOS_ORIENTATION_LANDSCAPE;
- else if (yAxis > 15000 && xAxis > -5000 && xAxis < 5000)
- new_orientation = WEBOS_ORIENTATION_PORTRAIT;
- else
- return;
- } else
- return;
-
- if (new_orientation == sdl_next_orientation) {
- if (sdl_orientation_count < 3)
- sdl_orientation_count++;
- } else {
- sdl_orientation_count = 0;
- sdl_next_orientation = new_orientation;
- return;
- }
-
- if (sdl_orientation_count == 3) {
- sdl_orientation_count++;
-
- if (new_orientation != orientation) {
- dbg(lvl_debug, "x(%d) y(%d) z(%d) o(%d)\n", xAxis, yAxis, zAxis,
- new_orientation);
- orientation = new_orientation;
-
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_ROTATE;
- userevent.data1 = NULL;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent(&event);
- }
- }
-}
-#endif
-
-/* ---------- SDL Eventhandling ---------- */
-
-static Uint32 sdl_timer_callback(Uint32 interval, void* param) {
- struct event_timeout *timeout = (struct event_timeout*) param;
-
- dbg(lvl_debug, "timer(%p) multi(%d) interval(%d) fired\n", param, timeout->multi,
- interval);
-
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_TIMER;
- userevent.data1 = timeout->cb;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent(&event);
-
- if (timeout->multi == 0) {
- g_free(timeout);
- timeout = NULL;
- return 0; // cancel timer
- }
- return interval; // reactivate timer
-}
-
-/* SDL Mainloop */
-
-static void event_sdl_main_loop_run(void) {
-#ifdef USE_WEBOS_ACCELEROMETER
- struct callback* accel_cb = NULL;
- struct event_timeout* accel_to = NULL;
- if (PDL_GetPDKVersion() > 100) {
- accel_cb = callback_new_1(callback_cast(sdl_accelerometer_handler), gr);
- accel_to = event_add_timeout(200, 1, accel_cb);
- }
-#endif
- graphics_sdl_idle(NULL);
-
- event_sdl_watch_stopthread();
-
-#ifdef USE_WEBOS_ACCELEROMETER
- SDL_JoystickClose(accelerometer);
- if (PDL_GetPDKVersion() > 100) {
- event_remove_timeout(accel_to);
- callback_destroy(accel_cb);
- }
-#endif
-}
-
-static void event_sdl_main_loop_quit(void) {
- quit_event_loop = 1;
-}
-
-/* Watch */
-
-static void event_sdl_watch_thread(GPtrArray *watch_list) {
- struct pollfd *pfds = g_new0 (struct pollfd, watch_list->len);
- struct event_watch *ew;
- int ret;
- int idx;
-
- for (idx = 0; idx < watch_list->len; idx++) {
- ew = g_ptr_array_index(watch_list, idx);
- g_memmove(&pfds[idx], ew->pfd, sizeof(struct pollfd));
- }
-
- while ((ret = ppoll(pfds, watch_list->len, NULL, NULL)) > 0) {
- for (idx = 0; idx < watch_list->len; idx++) {
- if (pfds[idx].revents == pfds[idx].events) { /* The requested event happened, notify mainloop! */
- ew = g_ptr_array_index(watch_list, idx);
- dbg(lvl_debug, "watch(%p) event(%d) encountered\n", ew,
- pfds[idx].revents);
-
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_WATCH;
- userevent.data1 = ew->cb;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent(&event);
- }
- }
- }
-
- g_free(pfds);
-
- pthread_exit(0);
-}
-
-static void event_sdl_watch_startthread(GPtrArray *watch_list) {
- dbg(lvl_debug, "enter\n");
- if (sdl_watch_thread)
- event_sdl_watch_stopthread();
-
- int ret;
- ret = pthread_create(&sdl_watch_thread, NULL,
- (void *) event_sdl_watch_thread, (void *) watch_list);
-
- dbg_assert(ret == 0);
-}
-
-static void event_sdl_watch_stopthread() {
- dbg(lvl_debug, "enter\n");
- if (sdl_watch_thread) {
- /* Notify the watch thread that the list of FDs will change */
- pthread_kill(sdl_watch_thread, SIGUSR1);
- pthread_join(sdl_watch_thread, NULL);
- sdl_watch_thread = 0;
- }
-}
-
-static struct event_watch *
-event_sdl_add_watch(int fd, enum event_watch_cond cond, struct callback *cb) {
- dbg(lvl_debug, "fd(%d) cond(%x) cb(%x)\n", fd, cond, cb);
-
- event_sdl_watch_stopthread();
-
- if (!sdl_watch_list)
- sdl_watch_list = g_ptr_array_new();
-
- struct event_watch *new_ew = g_new0 (struct event_watch, 1);
- struct pollfd *pfd = g_new0 (struct pollfd, 1);
-
- pfd->fd = fd;
-
- /* Modify watchlist here */
- switch (cond) {
- case event_watch_cond_read:
- pfd->events = POLLIN;
- break;
- case event_watch_cond_write:
- pfd->events = POLLOUT;
- break;
- case event_watch_cond_except:
- pfd->events = POLLERR | POLLHUP;
- break;
- }
-
- new_ew->pfd = (struct pollfd*) pfd;
- new_ew->cb = cb;
-
- g_ptr_array_add(sdl_watch_list, (gpointer) new_ew);
-
- event_sdl_watch_startthread(sdl_watch_list);
-
- return new_ew;
-}
-
-static void event_sdl_remove_watch(struct event_watch *ew) {
- dbg(lvl_debug, "enter %p\n", ew);
-
- event_sdl_watch_stopthread();
-
- g_ptr_array_remove(sdl_watch_list, ew);
- g_free(ew->pfd);
- g_free(ew);
-
- if (sdl_watch_list->len > 0)
- event_sdl_watch_startthread(sdl_watch_list);
-}
-
-/* Timeout */
-
-static struct event_timeout *
-event_sdl_add_timeout(int timeout, int multi, struct callback *cb) {
- struct event_timeout * ret = g_new0(struct event_timeout, 1);
- if (!ret)
- return ret;
- dbg(lvl_debug, "timer(%p) multi(%d) interval(%d) cb(%p) added\n", ret, multi,
- timeout, cb);
- ret->multi = multi;
- ret->cb = cb;
- ret->id = SDL_AddTimer(timeout, sdl_timer_callback, ret);
-
- return ret;
-}
-
-static void event_sdl_remove_timeout(struct event_timeout *to) {
- dbg(lvl_info, "enter %p\n", to);
- if (to != NULL) {
- int ret = to->id ? SDL_RemoveTimer(to->id) : SDL_TRUE;
- if (ret == SDL_FALSE) {
- dbg(lvl_debug, "SDL_RemoveTimer (%p) failed\n", to->id);
- } else {
- g_free(to);
- dbg(lvl_debug, "timer(%p) removed\n", to);
- }
- }
-}
-
-/* Idle */
-
-/* sort ptr_array by priority, increasing order */
-static gint sdl_sort_idle_tasks(gconstpointer parama, gconstpointer paramb) {
- struct idle_task *a = (struct idle_task *) parama;
- struct idle_task *b = (struct idle_task *) paramb;
- if (a->priority < b->priority)
- return -1;
- if (a->priority > b->priority)
- return 1;
- return 0;
-}
-
-static struct event_idle *
-event_sdl_add_idle(int priority, struct callback *cb) {
- dbg(lvl_debug, "add idle priority(%d) cb(%p)\n", priority, cb);
-
- struct idle_task *task = g_new0(struct idle_task, 1);
- task->priority = priority;
- task->cb = cb;
-
- g_ptr_array_add(idle_tasks, (gpointer) task);
-
- if (idle_tasks->len < 2) {
- SDL_Event event;
- SDL_UserEvent userevent;
-
- dbg(lvl_debug, "poking eventloop because of new idle_events\n");
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_IDLE_EVENT;
- userevent.data1 = NULL;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent(&event);
- } else
- // more than one entry => sort the list
- g_ptr_array_sort(idle_tasks, sdl_sort_idle_tasks);
-
- return (struct event_idle *) task;
-}
-
-static void event_sdl_remove_idle(struct event_idle *task) {
- dbg(lvl_debug, "remove task(%p)\n", task);
- g_ptr_array_remove(idle_tasks, (gpointer) task);
-}
-
-/* callback */
-
-static void event_sdl_call_callback(struct callback_list *cbl) {
- dbg(lvl_debug, "call_callback cbl(%p)\n", cbl);
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_CALL_CALLBACK;
- userevent.data1 = cbl;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent(&event);
-}
-
-static struct event_methods event_sdl_methods = { event_sdl_main_loop_run,
- event_sdl_main_loop_quit, event_sdl_add_watch, event_sdl_remove_watch,
- event_sdl_add_timeout, event_sdl_remove_timeout, event_sdl_add_idle,
- event_sdl_remove_idle, event_sdl_call_callback, };
-
-static struct event_priv *
-event_sdl_new(struct event_methods* methods) {
- idle_tasks = g_ptr_array_new();
- *methods = event_sdl_methods;
- return NULL;
-}
-
-/* ---------- SDL Eventhandling ---------- */
-
-void sdl_event_init(void) {
- plugin_register_category_event("sdl", event_sdl_new);
-}
diff --git a/navit/graphics/sdl/event_sdl.c b/navit/graphics/sdl/event_sdl.c
deleted file mode 100644
index 28fe4fafb..000000000
--- a/navit/graphics/sdl/event_sdl.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/**
- * 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 <poll.h>
-#include <SDL/SDL.h>
-#include <pthread.h>
-#include <signal.h>
-#include "config.h"
-#include "event.h"
-#include "event_sdl.h"
-#include "graphics_sdl.h"
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-
-static pthread_t sdl_watch_thread = 0;
-static GPtrArray *sdl_watch_list = NULL;
-
-static void event_sdl_watch_startthread(GPtrArray *);
-static void event_sdl_watch_stopthread(void);
-static struct event_watch *event_sdl_add_watch(int, enum event_watch_cond, struct callback *);
-static void event_sdl_remove_watch(struct event_watch *);
-static struct event_timeout *event_sdl_add_timeout(int, int, struct callback *);
-static void event_sdl_remove_timeout(struct event_timeout *);
-static struct event_idle *event_sdl_add_idle(int, struct callback *);
-static void event_sdl_remove_idle(struct event_idle *);
-static void event_sdl_call_callback(struct callback_list *);
-
-static Uint32
-sdl_timer_callback(Uint32 interval, void* param)
-{
- struct event_timeout *timeout=(struct event_timeout*)param;
-
- dbg(lvl_debug,"timer(%p) multi(%d) interval(%d) fired\n", param, timeout->multi, interval);
-
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_TIMER;
- userevent.data1 = timeout->cb;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent (&event);
-
- if (timeout->multi == 0) {
- timeout->id = 0;
- return 0; // cancel timer
- }
- return interval; // reactivate timer
-}
-
-/* SDL Mainloop */
-
-static void
-event_sdl_main_loop_run(void)
-{
- graphics_sdl_idle(NULL);
- event_sdl_watch_stopthread();
-}
-
-static void
-event_sdl_main_loop_quit(void)
-{
- quit_event_loop = 1;
-}
-
-/* Watch */
-
-void
-event_sdl_watch_thread (GPtrArray *watch_list)
-{
- struct pollfd *pfds = g_new0 (struct pollfd, watch_list->len);
- struct event_watch *ew;
- int ret;
- int idx;
-
- for (idx = 0; idx < watch_list->len; idx++ ) {
- ew = g_ptr_array_index (watch_list, idx);
- g_memmove (&pfds[idx], ew->pfd, sizeof(struct pollfd));
- }
-
- while ((ret = ppoll(pfds, watch_list->len, NULL, NULL)) > 0) {
- for (idx = 0; idx < watch_list->len; idx++ ) {
- if (pfds[idx].revents == pfds[idx].events) { /* The requested event happened, notify mainloop! */
- ew = g_ptr_array_index (watch_list, idx);
- dbg(lvl_debug,"watch(%p) event(%d) encountered\n", ew, pfds[idx].revents);
-
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_WATCH;
- userevent.data1 = ew->cb;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent (&event);
- }
- }
- }
-
- g_free(pfds);
-
- pthread_exit(0);
-}
-
-static void
-event_sdl_watch_startthread(GPtrArray *watch_list)
-{
- dbg(lvl_debug,"enter\n");
- if (sdl_watch_thread)
- event_sdl_watch_stopthread();
-
- int ret;
- ret = pthread_create (&sdl_watch_thread, NULL, (void *)event_sdl_watch_thread, (void *)watch_list);
-
- dbg_assert (ret == 0);
-}
-
-static void
-event_sdl_watch_stopthread()
-{
- dbg(lvl_debug,"enter\n");
- if (sdl_watch_thread) {
- /* Notify the watch thread that the list of FDs will change */
- pthread_kill(sdl_watch_thread, SIGUSR1);
- pthread_join(sdl_watch_thread, NULL);
- sdl_watch_thread = 0;
- }
-}
-
-static struct event_watch *
-event_sdl_add_watch(int fd, enum event_watch_cond cond, struct callback *cb)
-{
- dbg(lvl_debug,"fd(%d) cond(%x) cb(%x)\n", fd, cond, cb);
-
- event_sdl_watch_stopthread();
-
- if (!sdl_watch_list)
- sdl_watch_list = g_ptr_array_new();
-
- struct event_watch *new_ew = g_new0 (struct event_watch, 1);
- struct pollfd *pfd = g_new0 (struct pollfd, 1);
-
- pfd->fd = fd;
-
- /* Modify watchlist here */
- switch (cond) {
- case event_watch_cond_read:
- pfd->events = POLLIN;
- break;
- case event_watch_cond_write:
- pfd->events = POLLOUT;
- break;
- case event_watch_cond_except:
- pfd->events = POLLERR|POLLHUP;
- break;
- }
-
- new_ew->pfd = (struct pollfd*) pfd;
- new_ew->cb = cb;
-
- g_ptr_array_add (sdl_watch_list, (gpointer)new_ew);
-
- event_sdl_watch_startthread(sdl_watch_list);
-
- return new_ew;
-}
-
-static void
-event_sdl_remove_watch(struct event_watch *ew)
-{
- dbg(lvl_debug,"enter %p\n",ew);
-
- event_sdl_watch_stopthread();
-
- g_ptr_array_remove (sdl_watch_list, ew);
- g_free (ew->pfd);
- g_free (ew);
-
- if (sdl_watch_list->len > 0)
- event_sdl_watch_startthread(sdl_watch_list);
-}
-
-/* Timeout */
-
-static struct event_timeout *
-event_sdl_add_timeout(int timeout, int multi, struct callback *cb)
-{
- struct event_timeout * ret = g_new0(struct event_timeout, 1);
- if(!ret) {
- dbg(lvl_error,"g_new0 failed\n");
- return ret;
- }
- dbg(lvl_debug,"timer(%p) multi(%d) interval(%d) cb(%p) added\n",ret, multi, timeout, cb);
- ret->multi = multi;
- ret->cb = cb;
- ret->id = SDL_AddTimer(timeout, sdl_timer_callback, ret);
-
- return ret;
-}
-
-static void
-event_sdl_remove_timeout(struct event_timeout *to)
-{
- dbg(lvl_info,"enter %p\n", to);
- if(to)
- {
- /* do not SDL_RemoveTimer if oneshot timer has already fired */
- int ret = to->id == 0 ? SDL_TRUE : SDL_RemoveTimer(to->id);
-
- if (ret == SDL_FALSE)
- dbg(lvl_error,"SDL_RemoveTimer (%p) failed\n", to->id);
-
- g_free(to);
- dbg(lvl_debug,"timer(%p) removed\n", to);
- }
-}
-
-/* Idle */
-
-/* sort ptr_array by priority, increasing order */
-static gint
-sdl_sort_idle_tasks(gconstpointer parama, gconstpointer paramb)
-{
- struct idle_task *a = (struct idle_task *)parama;
- struct idle_task *b = (struct idle_task *)paramb;
- if (a->priority < b->priority)
- return -1;
- if (a->priority > b->priority)
- return 1;
- return 0;
-}
-
-static struct event_idle *
-event_sdl_add_idle(int priority, struct callback *cb)
-{
- dbg(lvl_debug,"add idle priority(%d) cb(%p)\n", priority, cb);
-
- struct idle_task *task = g_new0(struct idle_task, 1);
- task->priority = priority;
- task->cb = cb;
-
- g_ptr_array_add(idle_tasks, (gpointer)task);
-
- if (idle_tasks->len < 2)
- {
- SDL_Event event;
- SDL_UserEvent userevent;
-
- dbg(lvl_debug,"poking eventloop because of new idle_events\n");
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_IDLE_EVENT;
- userevent.data1 = NULL;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent (&event);
- }
- else // more than one entry => sort the list
- g_ptr_array_sort(idle_tasks, sdl_sort_idle_tasks);
-
- return (struct event_idle *)task;
-}
-
-static void
-event_sdl_remove_idle(struct event_idle *task)
-{
- dbg(lvl_debug,"remove task(%p)\n", task);
- g_ptr_array_remove(idle_tasks, (gpointer)task);
-}
-
-/* callback */
-
-static void
-event_sdl_call_callback(struct callback_list *cbl)
-{
- dbg(lvl_debug,"call_callback cbl(%p)\n",cbl);
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_CALL_CALLBACK;
- userevent.data1 = cbl;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent (&event);
-}
-
-static struct event_methods event_sdl_methods = {
- event_sdl_main_loop_run,
- event_sdl_main_loop_quit,
- event_sdl_add_watch,
- event_sdl_remove_watch,
- event_sdl_add_timeout,
- event_sdl_remove_timeout,
- event_sdl_add_idle,
- event_sdl_remove_idle,
- event_sdl_call_callback,
-};
-
-static struct event_priv *
-event_sdl_new(struct event_methods* methods)
-{
- idle_tasks = g_ptr_array_new();
- *methods = event_sdl_methods;
- return NULL;
-}
-
-void
-event_sdl_register(void)
-{
- plugin_register_category_event("sdl", event_sdl_new);
-}
diff --git a/navit/graphics/sdl/event_sdl.h b/navit/graphics/sdl/event_sdl.h
deleted file mode 100644
index 7dceedec5..000000000
--- a/navit/graphics/sdl/event_sdl.h
+++ /dev/null
@@ -1,44 +0,0 @@
-
-#ifndef __EVENT_SDL_H
-#define __EVENT_SDL_H
-
-#include <SDL/SDL.h>
-#include "config.h"
-#include "callback.h"
-#include "event.h"
-#include "graphics_sdl.h"
-
-#ifdef USE_WEBOS
-# define SDL_USEREVENT_CODE_TIMER 0x1
-# define SDL_USEREVENT_CODE_CALL_CALLBACK 0x2
-# define SDL_USEREVENT_CODE_IDLE_EVENT 0x4
-# define SDL_USEREVENT_CODE_WATCH 0x8
-# ifdef USE_WEBOS_ACCELEROMETER
-# define SDL_USEREVENT_CODE_ROTATE 0xA
-# endif
-#endif
-
-struct event_timeout {
- SDL_TimerID id;
- int multi;
- struct callback *cb;
-};
-
-struct idle_task {
- int priority;
- struct callback *cb;
-};
-
-struct event_watch {
- struct pollfd *pfd;
- struct callback *cb;
-};
-
-int quit_event_loop = 0; // quit the main event loop
-static GPtrArray *idle_tasks = NULL;
-
-void event_sdl_watch_thread (GPtrArray *);
-
-void event_sdl_register(void);
-
-#endif
diff --git a/navit/graphics/sdl/graphics_sdl.c b/navit/graphics/sdl/graphics_sdl.c
deleted file mode 100644
index b1a9c17b9..000000000
--- a/navit/graphics/sdl/graphics_sdl.c
+++ /dev/null
@@ -1,1860 +0,0 @@
-/* graphics_sdl.c -- barebones sdl graphics layer
-
- copyright (c) 2008 bryan rittmeyer <bryanr@bryanr.org>
- license: GPLv2
-
- TODO:
- - dashed lines
- - proper image transparency (libsdl-image xpm does not work)
- - valgrind
-
- revision history:
- 2008-06-01 initial
- 2008-06-15 SDL_DOUBLEBUF+SDL_Flip for linux fb. fix FT leaks.
- 2008-06-18 defer initial resize_callback
- 2008-06-21 linux touchscreen
- 2008-07-04 custom rastering
-*/
-
-#include <glib.h>
-#include <pthread.h>
-#include <poll.h>
-#include <signal.h>
-#include "config.h"
-#include "debug.h"
-#include "point.h"
-#include "graphics.h"
-#include "color.h"
-#include "plugin.h"
-#include "window.h"
-#include "navit.h"
-#include "keys.h"
-#include "item.h"
-#include "attr.h"
-#include "callback.h"
-#include "font/freetype/font_freetype.h"
-
-#include <SDL/SDL.h>
-#include <math.h>
-
-#ifdef USE_WEBOS
-# include "vehicle.h"
-# include <PDL.h>
-# define USE_WEBOS_ACCELEROMETER
-#endif
-
-#ifdef USE_WEBOS
-#define DISPLAY_W 0
-#define DISPLAY_H 0
-#else
-#define DISPLAY_W 800
-#define DISPLAY_H 600
-#endif
-
-#define OVERLAY_MAX 32
-
-#include "raster.h"
-
-#include <event.h>
-#include <SDL/SDL_image.h>
-#include <alloca.h>
-
-/* TODO: union overlay + non-overlay to reduce size */
-struct graphics_priv;
-struct graphics_priv {
- SDL_Surface *screen;
- int aa;
- /* video modes */
- uint32_t video_flags;
- int video_bpp;
-
- /* <overlay> */
- int overlay_mode;
- int overlay_x;
- int overlay_y;
- struct graphics_priv *overlay_parent;
- int overlay_idx;
- /* </overlay> */
-
- /* <main> */
- struct graphics_priv *overlay_array[OVERLAY_MAX];
- int overlay_enable;
- enum draw_mode_num draw_mode;
-
- int resize_callback_initial;
-
- struct navit *nav;
- struct callback_list *cbl;
-
-#ifdef USE_WEBOS_ACCELEROMETER
- SDL_Joystick *accelerometer;
- char orientation;
- int real_w, real_h;
-#endif
-
- struct font_freetype_methods freetype_methods;
- /* </main> */
-};
-
-#ifdef USE_WEBOS
-# define WEBOS_KEY_SHIFT 0x130
-# define WEBOS_KEY_SYM 0x131
-# define WEBOS_KEY_ORANGE 0x133
-
-# define WEBOS_KEY_MOD_SHIFT 0x1
-# define WEBOS_KEY_MOD_ORANGE 0x2
-# define WEBOS_KEY_MOD_SYM 0x4
-
-# define WEBOS_KEY_MOD_SHIFT_STICKY 0x11
-# define WEBOS_KEY_MOD_ORANGE_STICKY 0x22
-# define WEBOS_KEY_MOD_SYM_STICKY 0x44
-
-# ifdef USE_WEBOS_ACCELEROMETER
-# define WEBOS_ORIENTATION_PORTRAIT 0x1
-# define WEBOS_ORIENTATION_LANDSCAPE 0x2
-# endif
-
-# define SDL_USEREVENT_CODE_TIMER 0x1
-# define SDL_USEREVENT_CODE_CALL_CALLBACK 0x2
-# define SDL_USEREVENT_CODE_IDLE_EVENT 0x4
-# define SDL_USEREVENT_CODE_WATCH 0x8
-# ifdef USE_WEBOS_ACCELEROMETER
-# define SDL_USEREVENT_CODE_ROTATE 0xA
-# endif
-
-struct event_timeout {
- SDL_TimerID id;
- int multi;
- struct callback *cb;
-};
-
-struct idle_task {
- int priority;
- struct callback *cb;
-};
-
-struct event_watch {
- struct pollfd *pfd;
- struct callback *cb;
-};
-
-static struct graphics_priv* the_graphics = NULL;
-static int quit_event_loop = 0; // quit the main event loop
-static int the_graphics_count = 0; // count how many graphics objects are created
-static GPtrArray *idle_tasks = NULL;
-static pthread_t sdl_watch_thread = 0;
-static GPtrArray *sdl_watch_list = NULL;
-
-static void event_sdl_watch_thread (GPtrArray *);
-static void event_sdl_watch_startthread(GPtrArray *watch_list);
-static void event_sdl_watch_stopthread(void);
-static struct event_watch *event_sdl_add_watch(int, enum event_watch_cond, struct callback *);
-static void event_sdl_remove_watch(struct event_watch *);
-static struct event_timeout *event_sdl_add_timeout(int, int, struct callback *);
-static void event_sdl_remove_timeout(struct event_timeout *);
-static struct event_idle *event_sdl_add_idle(int, struct callback *);
-static void event_sdl_remove_idle(struct event_idle *);
-static void event_sdl_call_callback(struct callback_list *);
-# ifdef USE_WEBOS_ACCELEROMETER
-static unsigned int sdl_orientation_count = 2^16;
-static char sdl_next_orientation = 0;
-# endif
-#endif
-
-unsigned char *ft_buffer = NULL;
-unsigned int ft_buffer_size = 0;
-
-struct graphics_gc_priv {
- struct graphics_priv *gr;
- Uint8 fore_r;
- Uint8 fore_g;
- Uint8 fore_b;
- Uint8 fore_a;
- Uint8 back_r;
- Uint8 back_g;
- Uint8 back_b;
- Uint8 back_a;
- int linewidth;
-};
-
-struct graphics_image_priv {
- SDL_Surface *img;
-};
-
-
-static void
-graphics_destroy(struct graphics_priv *gr)
-{
- dbg(lvl_debug, "graphics_destroy %p %u\n", gr, gr->overlay_mode);
-
- if(gr->overlay_mode)
- {
- SDL_FreeSurface(gr->screen);
- gr->overlay_parent->overlay_array[gr->overlay_idx] = NULL;
- }
- else
- {
- g_free (ft_buffer);
- gr->freetype_methods.destroy();
-
-#ifdef USE_WEBOS_ACCELEROMETER
- SDL_JoystickClose(gr->accelerometer);
-#endif
-#ifdef USE_WEBOS
- PDL_Quit();
-#endif
- SDL_Quit();
- }
-
- g_free(gr);
-}
-
-/* graphics_gc */
-
-static void
-gc_destroy(struct graphics_gc_priv *gc)
-{
- g_free(gc);
-}
-
-static void
-gc_set_linewidth(struct graphics_gc_priv *gc, int w)
-{
- dbg(lvl_debug, "gc_set_linewidth %p %d\n", gc, w);
- gc->linewidth = w;
-}
-
-static void
-gc_set_dashes(struct graphics_gc_priv *gc, int w, int offset, unsigned char *dash_list, int n)
-{
- /* TODO */
-}
-
-static void
-gc_set_foreground(struct graphics_gc_priv *gc, struct color *c)
-{
- dbg(lvl_debug, "gc_set_foreground: %p %d %d %d %d\n", gc, c->a, c->r, c->g, c->b);
- gc->fore_r = c->r/256;
- gc->fore_g = c->g/256;
- gc->fore_b = c->b/256;
- gc->fore_a = c->a/256;
-}
-
-static void
-gc_set_background(struct graphics_gc_priv *gc, struct color *c)
-{
- dbg(lvl_debug, "gc_set_background: %p %d %d %d %d\n", gc, c->a, c->r, c->g, c->b);
- gc->back_r = c->r/256;
- gc->back_g = c->g/256;
- gc->back_b = c->b/256;
- gc->back_a = c->a/256;
-}
-
-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; /* upper layer should override anyway? */
- return gc;
-}
-
-
-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 */
-
- gi = g_new0(struct graphics_image_priv, 1);
- gi->img = IMG_Load(name);
- if(gi->img)
- {
- /* TBD: improves blit performance? */
-#if !SDL_VERSION_ATLEAST(1,3,0)
- SDL_SetColorKey(gi->img, SDL_RLEACCEL, gi->img->format->colorkey);
-#endif
- *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;
- }
-
- return gi;
-}
-
-static void
-image_free(struct graphics_priv *gr, struct graphics_image_priv * gi)
-{
- SDL_FreeSurface(gi->img);
- g_free(gi);
-}
-
-static void
-draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- if ((gr->overlay_parent && !gr->overlay_parent->overlay_enable) || (gr->overlay_parent && gr->overlay_parent->overlay_enable && !gr->overlay_enable) )
- {
- return;
- }
-
- Sint16 *vx, *vy;
- Sint16 x, y;
- int i;
-
- vx = alloca(count * sizeof(Sint16));
- vy = alloca(count * sizeof(Sint16));
-
- for(i = 0; i < count; i++)
- {
- x = (Sint16)p[i].x;
- y = (Sint16)p[i].y;
- vx[i] = x;
- vy[i] = y;
-
- dbg(lvl_debug, "draw_polygon: %p %i %d,%d\n", gc, i, p[i].x, p[i].y);
- }
-
- if(gr->aa)
- {
- raster_aapolygon(gr->screen, count, vx, vy,
- SDL_MapRGBA(gr->screen->format,
- gc->fore_r,
- gc->fore_g,
- gc->fore_b,
- gc->fore_a));
- }
- else
- {
- raster_polygon(gr->screen, count, vx, vy,
- SDL_MapRGBA(gr->screen->format,
- gc->fore_r,
- gc->fore_g,
- gc->fore_b,
- gc->fore_a));
- }
-}
-
-static void
-draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h)
-{
- if ((gr->overlay_parent && !gr->overlay_parent->overlay_enable) || (gr->overlay_parent && gr->overlay_parent->overlay_enable && !gr->overlay_enable) )
- {
- return;
- }
-
- dbg(lvl_debug, "draw_rectangle: %d %d %d %d r=%d g=%d b=%d a=%d\n", p->x, p->y, w, h,
- gc->fore_r, gc->fore_g, gc->fore_b, gc->fore_a);
- if(w > gr->screen->w)
- {
- w = gr->screen->w;
- }
- if(h > gr->screen->h)
- {
- h = gr->screen->h;
- }
-
- raster_rect(gr->screen, p->x, p->y, w, h,
- SDL_MapRGBA(gr->screen->format,
- gc->fore_r,
- gc->fore_g,
- gc->fore_b,
- gc->fore_a));
-}
-
-static void
-draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r)
-{
- if ((gr->overlay_parent && !gr->overlay_parent->overlay_enable) || (gr->overlay_parent && gr->overlay_parent->overlay_enable && !gr->overlay_enable) )
- {
- return;
- }
-
- /* FIXME: does not quite match gtk */
-
- /* hack for osd compass.. why is this needed!? */
- if(gr->overlay_mode)
- {
- r = r / 2;
- }
-
- if(gr->aa)
- {
- raster_aacircle(gr->screen, p->x, p->y, r,
- SDL_MapRGBA(gr->screen->format,
- gc->fore_r,
- gc->fore_g,
- gc->fore_b,
- gc->fore_a));
- }
- else
- {
- raster_circle(gr->screen, p->x, p->y, r,
- SDL_MapRGBA(gr->screen->format,
- gc->fore_r,
- gc->fore_g,
- gc->fore_b,
- gc->fore_a));
- }
-}
-
-
-static void
-draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- if ((gr->overlay_parent && !gr->overlay_parent->overlay_enable) || (gr->overlay_parent && gr->overlay_parent->overlay_enable && !gr->overlay_enable) )
- {
- return;
- }
-
- /* you might expect lines to be simpler than the other shapes.
- but, that would be wrong. 1 line can generate 1 polygon + 2 circles
- and even worse, we have to calculate their parameters!
- go dust off your trigonometry hat.
- */
- /* sort of based on graphics_opengl.c::draw_lines */
- /* FIXME: should honor ./configure flag for no fp.
- this could be 100% integer code pretty easily,
- except that i am lazy
- */
- struct point vert[4];
- int lw = gc->linewidth;
- //int lw = 1;
- int i;
-
- for(i = 0; i < count-1; i++)
- {
- float dx=p[i+1].x-p[i].x;
- float dy=p[i+1].y-p[i].y;
- float angle;
-
- int x_lw_adj, y_lw_adj;
-
- if(lw == 1)
- {
- if(gr->aa)
- {
- raster_aaline(gr->screen, p[i].x, p[i].y, p[i+1].x, p[i+1].y,
- SDL_MapRGBA(gr->screen->format,
- gc->fore_r,
- gc->fore_g,
- gc->fore_b,
- gc->fore_a));
- }
- else
- {
- raster_line(gr->screen, p[i].x, p[i].y, p[i+1].x, p[i+1].y,
- SDL_MapRGBA(gr->screen->format,
- gc->fore_r,
- gc->fore_g,
- gc->fore_b,
- gc->fore_a));
- }
- }
- else
- {
- /* there is probably a much simpler way but this works ok */
-
- /* FIXME: float + double mixture */
- /* FIXME: lrint(round())? */
- if(dy == 0.0)
- {
- angle = 0.0;
- x_lw_adj = 0;
- y_lw_adj = round((float)lw/2.0);
- }
- else if(dx == 0.0)
- {
- angle = 0.0;
- x_lw_adj = round((float)lw/2.0);
- y_lw_adj = 0;
- }
- else
- {
- angle = (M_PI/2.0) - atan(abs(dx)/abs(dy));
- x_lw_adj = round(sin(angle)*(float)lw/2.0);
- y_lw_adj = round(cos(angle)*(float)lw/2.0);
- if((x_lw_adj < 0) || (y_lw_adj < 0))
- {
- dbg(lvl_debug, "i=%d\n", i);
- dbg(lvl_debug, " %d,%d->%d,%d\n", p[i].x, p[i].y, p[i+1].x, p[i+1].y);
- dbg(lvl_debug, " lw=%d angle=%f\n", lw, 180.0 * angle / M_PI);
- dbg(lvl_debug, " x_lw_adj=%d y_lw_adj=%d\n", x_lw_adj, y_lw_adj);
- }
- }
-
- if(p[i+1].x > p[i].x)
- {
- x_lw_adj = -x_lw_adj;
- }
- if(p[i+1].y > p[i].y)
- {
- y_lw_adj = -y_lw_adj;
- }
-
- /* FIXME: draw a circle/square if p[i]==p[i+1]? */
- /* FIXME: clipping, check for neg values. hoping sdl-gfx does this */
- vert[0].x = p[i].x + x_lw_adj;
- vert[0].y = p[i].y - y_lw_adj;
- vert[1].x = p[i].x - x_lw_adj;
- vert[1].y = p[i].y + y_lw_adj;
- vert[2].x = p[i+1].x - x_lw_adj;
- vert[2].y = p[i+1].y + y_lw_adj;
- vert[3].x = p[i+1].x + x_lw_adj;
- vert[3].y = p[i+1].y - y_lw_adj;
-
- draw_polygon(gr, gc, vert, 4);
-
- /* draw small circles at the ends. this looks better than nothing, and slightly
- * better than the triangle used by graphics_opengl, but is more expensive.
- * should have an ifdef/xml attr?
- */
-
- /* FIXME: should just draw a half circle */
-
- /* now some circular endcaps, if the width is over 2 */
- if(lw > 2)
- {
- if(i == 0)
- {
- draw_circle(gr, gc, &p[i], lw/2);
- }
- /* we truncate on the divide on purpose, so we don't go outside the line */
- draw_circle(gr, gc, &p[i+1], lw/2);
- }
- }
- }
-}
-
-
-static void
-set_pixel(SDL_Surface *surface, int x, int y, Uint8 r2, Uint8 g2, Uint8 b2, Uint8 a2)
-{
- if(x<0 || y<0 || x>=surface->w || y>=surface->h) {
- return;
- }
-
- void *target_pixel = ((Uint8*)surface->pixels + y * surface->pitch + x * surface->format->BytesPerPixel);
-
- Uint8 r1,g1,b1,a1;
-
- switch(surface->format->BytesPerPixel) {
- case 2:
- {
- SDL_GetRGBA(*(Uint16 *)target_pixel, surface->format, &r1, &g1, &b1, &a1);
- *(Uint16 *)target_pixel = SDL_MapRGBA(surface->format,
- (r1*(0xff-a2)/0xff) + (r2*a2/0xff),
- (g1*(0xff-a2)/0xff) + (g2*a2/0xff),
- (b1*(0xff-a2)/0xff) + (b2*a2/0xff),
- a2 + a1*(0xff-a2)/0xff );
- break;
- }
- case 4:
- {
- SDL_GetRGBA(*(Uint32 *)target_pixel, surface->format, &r1, &g1, &b1, &a1);
- *(Uint32 *)target_pixel = SDL_MapRGBA(surface->format,
- (r1*(0xff-a2)/0xff) + (r2*a2/0xff),
- (g1*(0xff-a2)/0xff) + (g2*a2/0xff),
- (b1*(0xff-a2)/0xff) + (b2*a2/0xff),
- a2 + a1*(0xff-a2)/0xff );
- break;
- }
- }
-}
-
-
-static void
-resize_ft_buffer (unsigned int new_size)
-{
- if (new_size > ft_buffer_size) {
- g_free (ft_buffer);
- ft_buffer = g_malloc (new_size);
- dbg(lvl_debug, "old_size(%u) new_size(%u) ft_buffer(%p)\n", ft_buffer_size, new_size, ft_buffer);
- ft_buffer_size = new_size;
- }
-}
-
-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;
- struct color transparent = { 0x0000, 0x0000, 0x0000, 0x0000 };
- struct color black = { fg->fore_r * 255, fg->fore_g * 255,
- fg->fore_b * 255, fg->fore_a * 255 };
- 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->fore_r * 255;
- white.g = bg->fore_g * 255;
- white.b = bg->fore_b * 255;
- white.a = bg->fore_a * 255;
- }
- } 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) {
- resize_ft_buffer(stride * (g->h + 2));
- gr->freetype_methods.get_shadow(g, ft_buffer, stride, &white, &transparent);
-
- SDL_Surface *glyph_surface =
- SDL_CreateRGBSurfaceFrom(ft_buffer, g->w + 2, g->h + 2,
- 32,
- stride,
- 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000);
- if (glyph_surface) {
- SDL_Rect r;
- r.x = (x + g->x) >> 6;
- r.y = (y + g->y) >> 6;
- r.w = g->w + 2;
- r.h = g->h + 2;
-
- SDL_BlitSurface(glyph_surface, NULL, gr->screen, &r);
- SDL_FreeSurface(glyph_surface);
- }
- }
- }
- x += g->dx;
- y += g->dy;
- }
-
- 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) {
- if (color) {
- stride = g->w;
- if (bg) {
- resize_ft_buffer(stride * g->h * 4);
- gr->freetype_methods.get_glyph(g, ft_buffer,
- stride * 4, &black,
- &white, &transparent);
- SDL_Surface *glyph_surface =
- SDL_CreateRGBSurfaceFrom(ft_buffer, g->w, g->h, 32,
- stride * 4,
- 0x000000ff,0x0000ff00, 0x00ff0000,0xff000000);
- if (glyph_surface) {
- SDL_Rect r;
- r.x = (x + g->x) >> 6;
- r.y = (y + g->y) >> 6;
- r.w = g->w;
- r.h = g->h;
-
- SDL_BlitSurface(glyph_surface, NULL, gr->screen,&r);
- SDL_FreeSurface(glyph_surface);
- }
- }
- stride *= 4;
- resize_ft_buffer(stride * g->h);
- gr->freetype_methods.get_glyph(g, ft_buffer, stride,
- &black, &white,
- &transparent);
- int ii, jj;
- unsigned char* pGlyph = ft_buffer;
- for (jj = 0; jj < g->h; ++jj) {
- for (ii = 0; ii < g->w; ++ii) {
- if(*(pGlyph+3) > 0) {
- set_pixel(gr->screen,
- ii+((x + g->x) >> 6),
- jj+((y + g->y) >> 6),
- *(pGlyph+2), // Pixels are in BGRA format
- *(pGlyph+1),
- *(pGlyph+0),
- *(pGlyph+3)
- );
- }
- pGlyph += 4;
- }
- }
- }
- }
- 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->overlay_parent && !gr->overlay_parent->overlay_enable)
- || (gr->overlay_parent && gr->overlay_parent->overlay_enable
- && !gr->overlay_enable)) {
- return;
- }
-
- struct font_freetype_text *t;
- int color = 1;
-
- if (!font) {
- dbg(lvl_error, "no font, returning\n");
- return;
- }
- 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)
-{
- if ((gr->overlay_parent && !gr->overlay_parent->overlay_enable) || (gr->overlay_parent && gr->overlay_parent->overlay_enable && !gr->overlay_enable) )
- {
- return;
- }
-
- SDL_Rect r;
-
- r.x = p->x;
- r.y = p->y;
- r.w = img->img->w;
- r.h = img->img->h;
-
- SDL_BlitSurface(img->img, NULL, gr->screen, &r);
-}
-
-static void
-background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc)
-{
- dbg(lvl_debug, "background_gc\n");
-}
-
-
-static void
-draw_mode(struct graphics_priv *gr, enum draw_mode_num mode)
-{
- struct graphics_priv *ov;
- SDL_Rect rect;
- int i;
-
- if(gr->overlay_mode)
- {
- /* will be drawn below */
- }
- else
- {
- dbg(lvl_debug, "draw_mode: %d\n", mode);
-
- if(mode == draw_mode_end)
- {
- if((gr->draw_mode == draw_mode_begin) && gr->overlay_enable)
- {
- for(i = 0; i < OVERLAY_MAX; i++)
- {
- ov = gr->overlay_array[i];
- if(ov && ov->overlay_enable)
- {
- rect.x = ov->overlay_x;
- if(rect.x<0) rect.x += gr->screen->w;
- rect.y = ov->overlay_y;
- if(rect.y<0) rect.y += gr->screen->h;
- rect.w = ov->screen->w;
- rect.h = ov->screen->h;
- SDL_BlitSurface(ov->screen, NULL,
- gr->screen, &rect);
- }
- }
- }
-
- SDL_Flip(gr->screen);
- }
-
- gr->draw_mode = mode;
- }
-}
-
-static void overlay_disable(struct graphics_priv *gr, int disable)
-{
- gr->overlay_enable = !disable;
- struct graphics_priv *curr_gr = gr;
- if(gr->overlay_parent) {
- curr_gr = gr->overlay_parent;
- }
- draw_mode(curr_gr,draw_mode_end);
-}
-
-static struct graphics_priv *
-overlay_new(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h, int wraparound);
-
-static int window_fullscreen(struct window *win, int on)
-{
- struct graphics_priv *gr=(struct graphics_priv *)win->priv;
-
- /* Update video flags */
- if(on) {
- gr->video_flags |= SDL_FULLSCREEN;
- } else {
- gr->video_flags &= ~SDL_FULLSCREEN;
- }
-
- /* Update video mode */
- gr->screen = SDL_SetVideoMode(gr->screen->w, gr->screen->h, gr->video_bpp, gr->video_flags);
- if(gr->screen == NULL) {
- navit_destroy(gr->nav);
- }
- else {
- callback_list_call_attr_2(gr->cbl, attr_resize, GINT_TO_POINTER(gr->screen->w), GINT_TO_POINTER(gr->screen->h));
- }
- return 1;
-}
-
-static void *
-get_data(struct graphics_priv *this, char const *type)
-{
- if(strcmp(type, "window") == 0) {
- struct window *win;
- win=g_new(struct window, 1);
- win->priv=this;
- win->fullscreen=window_fullscreen;
- win->disable_suspend=NULL;
- return win;
- } else {
- return NULL;
- }
-}
-
-static void draw_drag(struct graphics_priv *gr, struct point *p)
-{
- if(p) {
- gr->overlay_x = p->x;
- gr->overlay_y = p->y;
- }
-}
-
-static struct graphics_methods graphics_methods = {
- graphics_destroy,
- draw_mode,
- draw_lines,
- draw_polygon,
- draw_rectangle,
- NULL /* draw_circle */,
- draw_text,
- draw_image,
- NULL, /*draw_image_warp */
- draw_drag,
- NULL, /* font_new */
- gc_new,
- background_gc,
- overlay_new,
- image_new,
- get_data,
- image_free,
- NULL, /* get_text_bbox */
- overlay_disable,
- NULL, /* overlay_resize */
- NULL, /* set_attr */
- NULL, /* show_native_keyboard */
- NULL, /* hide_native_keyboard */
-};
-
-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 *ov;
- Uint32 rmask, gmask, bmask, amask;
- int i;
-
- for(i = 0; i < OVERLAY_MAX; i++)
- {
- if(gr->overlay_array[i] == NULL)
- {
- break;
- }
- }
- if(i == OVERLAY_MAX)
- {
- dbg(lvl_error, "too many overlays! increase OVERLAY_MAX\n");
- return NULL;
- }
-
- dbg(lvl_debug, "overlay_new %d %d %d %u %u (%x, %x, %x ,%x, %d)\n", i,
- p->x,
- p->y,
- w,
- h,
- gr->screen->format->Rmask,
- gr->screen->format->Gmask,
- gr->screen->format->Bmask,
- gr->screen->format->Amask,
- gr->screen->format->BitsPerPixel
- );
-
- ov = g_new0(struct graphics_priv, 1);
-
- switch(gr->screen->format->BitsPerPixel) {
- case 8:
- rmask = 0xc0;
- gmask = 0x30;
- bmask = 0x0c;
- amask = 0x03;
- break;
- case 16:
- rmask = 0xf000;
- gmask = 0x0f00;
- bmask = 0x00f0;
- amask = 0x000f;
- break;
- case 32:
- rmask = 0xff000000;
- gmask = 0x00ff0000;
- bmask = 0x0000ff00;
- amask = 0x000000ff;
- break;
- default:
- rmask = gr->screen->format->Rmask;
- gmask = gr->screen->format->Gmask;
- bmask = gr->screen->format->Bmask;
- amask = gr->screen->format->Amask;
- }
-
- ov->screen = SDL_CreateRGBSurface(SDL_SWSURFACE,
- w, h,
- gr->screen->format->BitsPerPixel,
- rmask, gmask, bmask, amask);
-
- ov->overlay_mode = 1;
- ov->overlay_enable = 1;
- ov->overlay_x = p->x;
- ov->overlay_y = p->y;
- ov->overlay_parent = gr;
- ov->overlay_idx = i;
- gr->overlay_array[i] = ov;
-
-
- struct font_priv *(*font_freetype_new) (void *meth);
- font_freetype_new = plugin_get_category_font ("freetype");
-
- if (!font_freetype_new)
- {
- return NULL;
- }
-
-
- font_freetype_new (&ov->freetype_methods);
-
- *meth=graphics_methods;
-
- meth->font_new =
- (struct graphics_font_priv *
- (*)(struct graphics_priv *, struct graphics_font_methods *, char *, int,
- int)) ov->freetype_methods.font_new;
- meth->get_text_bbox = (void *)ov->freetype_methods.get_text_bbox;
-
-
-
-
- return ov;
-}
-
-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];
-
-#ifdef USE_WEBOS
- if(data==NULL) {
- if(the_graphics!=NULL) {
- gr = the_graphics;
- }
- else {
- dbg(lvl_error,"graphics_idle: graphics not set!\n");
- return FALSE;
- }
- }
-#endif
-
- /* generate the initial resize callback, so the gui knows W/H
-
- its unsafe to do this directly inside register_resize_callback;
- graphics_gtk does it during Configure, but SDL does not have
- an equivalent event, so we use our own flag
- */
- if(gr->resize_callback_initial != 0)
- {
- callback_list_call_attr_2(gr->cbl, attr_resize, GINT_TO_POINTER(gr->screen->w), GINT_TO_POINTER(gr->screen->h));
- gr->resize_callback_initial = 0;
- }
-
-#ifdef USE_WEBOS_ACCELEROMETER
- struct callback* accel_cb = NULL;
- struct event_timeout* accel_to = NULL;
- if (PDL_GetPDKVersion() > 100) {
- accel_cb = callback_new_1(callback_cast(sdl_accelerometer_handler), gr);
- accel_to = event_add_timeout(200, 1, accel_cb);
- }
-#endif
-#ifdef USE_WEBOS
- unsigned int idle_tasks_idx=0;
- unsigned int idle_tasks_cur_priority=0;
- struct idle_task *task;
-
- while(!quit_event_loop)
-#else
- while(1)
-#endif
- {
-#ifdef USE_WEBOS
- ret = 0;
- if(idle_tasks->len > 0)
- {
- while (!(ret = SDL_PollEvent(&ev)) && idle_tasks->len > 0)
- {
- if (idle_tasks_idx >= idle_tasks->len)
- idle_tasks_idx = 0;
-
- dbg(lvl_debug,"idle_tasks_idx(%d)\n",idle_tasks_idx);
- task = (struct idle_task *)g_ptr_array_index(idle_tasks,idle_tasks_idx);
-
- if (idle_tasks_idx == 0) // only execute tasks with lowest priority value
- idle_tasks_cur_priority = task->priority;
- if (task->priority > idle_tasks_cur_priority)
- idle_tasks_idx = 0;
- else
- {
- callback_call_0(task->cb);
- idle_tasks_idx++;
- }
- }
- }
- if (!ret) // If we get here there are no idle_tasks and we have no events pending
- ret = SDL_WaitEvent(&ev);
-#else
- ret = SDL_PollEvent(&ev);
-#endif
- if(ret == 0)
- {
- break;
- }
-
-#ifdef USE_WEBOS
- dbg(lvl_debug,"SDL_Event %d\n", ev.type);
-#endif
- switch(ev.type)
- {
- case SDL_MOUSEMOTION:
- {
- p.x = ev.motion.x;
- p.y = ev.motion.y;
- 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_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;
- }
-#ifdef USE_WEBOS
- case WEBOS_KEY_SHIFT:
- {
- if ((key_mod & WEBOS_KEY_MOD_SHIFT_STICKY) == WEBOS_KEY_MOD_SHIFT_STICKY)
- key_mod &= ~(WEBOS_KEY_MOD_SHIFT_STICKY);
- else if ((key_mod & WEBOS_KEY_MOD_SHIFT) == WEBOS_KEY_MOD_SHIFT)
- key_mod |= WEBOS_KEY_MOD_SHIFT_STICKY;
- else
- key_mod |= WEBOS_KEY_MOD_SHIFT;
- break;
- }
- case WEBOS_KEY_ORANGE:
- {
- if ((key_mod & WEBOS_KEY_MOD_ORANGE_STICKY) == WEBOS_KEY_MOD_ORANGE_STICKY)
- key_mod &= ~(WEBOS_KEY_MOD_ORANGE_STICKY);
- else if ((key_mod & WEBOS_KEY_MOD_ORANGE) == WEBOS_KEY_MOD_ORANGE)
- key_mod |= WEBOS_KEY_MOD_ORANGE_STICKY;
- else
- key_mod |= WEBOS_KEY_MOD_ORANGE;
- break;
- }
- case WEBOS_KEY_SYM:
- {
- /* Toggle the on-screen keyboard */
- //callback_list_call_attr_1(gr->cbl, attr_keyboard_toggle); // Not implemented yet
- break;
- }
- case PDLK_GESTURE_BACK:
- {
- keybuf[0] = NAVIT_KEY_BACK;
- break;
- }
- case PDLK_GESTURE_FORWARD:
- case PDLK_GESTURE_AREA:
- {
- break;
- }
-#endif
- default:
- {
-#ifdef USE_WEBOS
- if (ev.key.keysym.unicode < 0x80 && ev.key.keysym.unicode > 0) {
- keybuf[0] = (char)ev.key.keysym.unicode;
- if ((key_mod & WEBOS_KEY_MOD_ORANGE) == WEBOS_KEY_MOD_ORANGE) {
- switch(keybuf[0]) {
- case 'e': keybuf[0] = '1'; break;
- case 'r': keybuf[0] = '2'; break;
- case 't': keybuf[0] = '3'; break;
- case 'd': keybuf[0] = '4'; break;
- case 'f': keybuf[0] = '5'; break;
- case 'g': keybuf[0] = '6'; break;
- case 'x': keybuf[0] = '7'; break;
- case 'c': keybuf[0] = '8'; break;
- case 'v': keybuf[0] = '9'; break;
- case '@': keybuf[0] = '0'; break;
- case ',': keybuf[0] = '-'; break;
- case 'u': strncpy(keybuf, "ü", sizeof(keybuf)); break;
- case 'a': strncpy(keybuf, "ä", sizeof(keybuf)); break;
- case 'o': strncpy(keybuf, "ö", sizeof(keybuf)); break;
- case 's': strncpy(keybuf, "ß", sizeof(keybuf)); break;
- }
-}
- if ((key_mod & WEBOS_KEY_MOD_SHIFT_STICKY) != WEBOS_KEY_MOD_SHIFT_STICKY)
- key_mod &= ~(WEBOS_KEY_MOD_SHIFT_STICKY);
- if ((key_mod & WEBOS_KEY_MOD_ORANGE_STICKY) != WEBOS_KEY_MOD_ORANGE_STICKY)
- key_mod &= ~(WEBOS_KEY_MOD_ORANGE_STICKY);
- }
- else {
- dbg(lvl_error,"Unknown key sym: %x\n", ev.key.keysym.sym);
- }
-#else
- /* return unicode chars when they can be converted to ascii */
- keybuf[0] = ev.key.keysym.unicode<=127 ? ev.key.keysym.unicode : 0;
-#endif
- break;
- }
- }
-
- dbg(lvl_info,"key mod: 0x%x\n", key_mod);
-
- if (keybuf[0]) {
- callback_list_call_attr_1(gr->cbl, attr_keypress, (void *)keybuf);
- }
- break;
- }
-
- case SDL_KEYUP:
- {
- break;
- }
-
- case SDL_MOUSEBUTTONDOWN:
- {
- dbg(lvl_debug, "SDL_MOUSEBUTTONDOWN %d %d %d %d %d\n",
- ev.button.which,
- ev.button.button,
- ev.button.state,
- ev.button.x,
- ev.button.y);
-
- p.x = ev.button.x;
- p.y = ev.button.y;
- 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:
- {
- dbg(lvl_debug, "SDL_MOUSEBUTTONUP %d %d %d %d %d\n",
- ev.button.which,
- ev.button.button,
- ev.button.state,
- ev.button.x,
- ev.button.y);
-
- 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:
- {
-#ifdef USE_WEBOS
- quit_event_loop = 1;
- navit_destroy(gr->nav);
-#endif
- break;
- }
-
- case SDL_VIDEORESIZE:
- {
-
- gr->screen = SDL_SetVideoMode(ev.resize.w, ev.resize.h, gr->video_bpp, gr->video_flags);
- if(gr->screen == NULL)
- {
- navit_destroy(gr->nav);
- }
- else
- {
- callback_list_call_attr_2(gr->cbl, attr_resize, GINT_TO_POINTER(gr->screen->w), GINT_TO_POINTER(gr->screen->h));
- }
-
- break;
- }
-
-#ifdef USE_WEBOS
- case SDL_USEREVENT:
- {
- SDL_UserEvent userevent = ev.user;
- dbg(lvl_info,"received SDL_USEREVENT type(%x) code(%x)\n",userevent.type,userevent.code);
- if (userevent.type != SDL_USEREVENT)
- break;
-
- if (userevent.code == PDL_GPS_UPDATE)
- {
- struct attr vehicle_attr;
- struct vehicle *v;
- navit_get_attr(gr->nav, attr_vehicle, &vehicle_attr, NULL);
- v = vehicle_attr.u.vehicle;
- if (v) {
- struct attr attr;
- attr.type = attr_pdl_gps_update;
- attr.u.data = userevent.data1;
- vehicle_set_attr(v, &attr);
- }
- }
- else if(userevent.code == SDL_USEREVENT_CODE_TIMER)
- {
- struct callback *cb = (struct callback *)userevent.data1;
- dbg(lvl_debug, "SDL_USEREVENT timer received cb(%p)\n", cb);
- callback_call_0(cb);
- }
- else if(userevent.code == SDL_USEREVENT_CODE_WATCH)
- {
- struct callback *cb = (struct callback *)userevent.data1;
- dbg(lvl_debug, "SDL_USEREVENT watch received cb(%p)\n", cb);
- callback_call_0(cb);
- }
- else if(userevent.code == SDL_USEREVENT_CODE_CALL_CALLBACK)
- {
- struct callback_list *cbl = (struct callback_list *)userevent.data1;
- dbg(lvl_debug, "SDL_USEREVENT call_callback received cbl(%p)\n", cbl);
- callback_list_call_0(cbl);
- }
- else if(userevent.code == SDL_USEREVENT_CODE_IDLE_EVENT) {
- dbg(lvl_debug, "SDL_USEREVENT idle_event received\n");
- }
-#ifdef USE_WEBOS_ACCELEROMETER
- else if(userevent.code == SDL_USEREVENT_CODE_ROTATE)
- {
- dbg(lvl_debug, "SDL_USEREVENT rotate received\n");
- switch(gr->orientation)
- {
- case WEBOS_ORIENTATION_PORTRAIT:
- gr->screen = SDL_SetVideoMode(gr->real_w, gr->real_h, gr->video_bpp, gr->video_flags);
- PDL_SetOrientation(PDL_ORIENTATION_0);
- break;
- case WEBOS_ORIENTATION_LANDSCAPE:
- gr->screen = SDL_SetVideoMode(gr->real_h, gr->real_w, gr->video_bpp, gr->video_flags);
- PDL_SetOrientation(PDL_ORIENTATION_270);
- break;
- }
- if(gr->screen == NULL)
- {
- navit_destroy(gr->nav);
- }
- else
- {
- callback_list_call_attr_2(gr->cbl, attr_resize, (void *)gr->screen->w, (void *)gr->screen->h);
- }
- }
-#endif
- else
- dbg(lvl_warning, "unknown SDL_USEREVENT\n");
-
- break;
- }
-#endif
- default:
- {
- dbg(lvl_debug, "SDL_Event %d\n", ev.type);
- break;
- }
- }
- }
-
-#ifdef USE_WEBOS
- event_sdl_watch_stopthread();
-#endif
-
-#ifdef USE_WEBOS_ACCELEROMETER
- if (PDL_GetPDKVersion() > 100) {
- event_remove_timeout(accel_to);
- callback_destroy(accel_cb);
- }
-#endif
-
- return TRUE;
-}
-
-
-static struct graphics_priv *
-graphics_sdl_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct graphics_priv *this=g_new0(struct graphics_priv, 1);
- struct font_priv *(*font_freetype_new) (void *meth);
- struct attr *attr;
- int ret;
- int w=DISPLAY_W,h=DISPLAY_H;
-
- this->nav = nav;
- this->cbl = cbl;
-
- /* initialize fonts */
- font_freetype_new = plugin_get_category_font("freetype");
-
- if (!font_freetype_new) {
- g_free(this);
- return NULL;
- }
-
- 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*) this->freetype_methods.get_text_bbox;
-
- dbg(lvl_debug,"Calling SDL_Init\n");
-#ifdef USE_WEBOS
-# ifdef USE_WEBOS_ACCELEROMETER
- ret = SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_JOYSTICK);
-# else
- ret = SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER);
-# endif
-#else
- ret = SDL_Init(SDL_INIT_VIDEO);
-#endif
- if(ret < 0)
- {
- dbg(lvl_error,"SDL_Init failed %d\n", ret);
- this->freetype_methods.destroy();
- g_free(this);
- return NULL;
- }
-
-#ifdef USE_WEBOS
- dbg(lvl_debug,"Calling PDL_Init(0)\n");
- ret = PDL_Init(0);
- if(ret < 0)
- {
- dbg(lvl_error,"PDL_Init failed %d\n", ret);
- this->freetype_methods.destroy();
- g_free(this);
- return NULL;
- }
-
- if (! event_request_system("sdl","graphics_sdl_new")) {
-#else
- if (! event_request_system("glib","graphics_sdl_new")) {
-#endif
- dbg(lvl_error,"event_request_system failed");
- this->freetype_methods.destroy();
- g_free(this);
- return NULL;
- }
-
-#ifdef USE_WEBOS
- this->video_bpp = 0;
- this->video_flags = SDL_SWSURFACE | SDL_ANYFORMAT | SDL_RESIZABLE;
-#else
- this->video_bpp = 16;
- this->video_flags = SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE;
-#endif
-
- if ((attr=attr_search(attrs, NULL, attr_w)))
- w=attr->u.num;
- if ((attr=attr_search(attrs, NULL, attr_h)))
- h=attr->u.num;
- if ((attr=attr_search(attrs, NULL, attr_bpp)))
- this->video_bpp=attr->u.num;
- if ((attr=attr_search(attrs, NULL, attr_flags))) {
- if (attr->u.num & 1)
- this->video_flags = SDL_SWSURFACE;
- }
- if ((attr=attr_search(attrs, NULL, attr_frame))) {
- if(!attr->u.num)
- this->video_flags |= SDL_NOFRAME;
- }
-
- this->screen = SDL_SetVideoMode(w, h, this->video_bpp, this->video_flags);
-
- if(this->screen == NULL)
- {
- dbg(lvl_error,"SDL_SetVideoMode failed\n");
- this->freetype_methods.destroy();
- g_free(this);
-#ifdef USE_WEBOS
- PDL_Quit();
-#endif
- SDL_Quit();
- return NULL;
- }
-
- /* Use screen size instead of requested */
- w = this->screen->w;
- h = this->screen->h;
-
- dbg(lvl_debug, "using screen %ix%i@%i\n",
- this->screen->w, this->screen->h,
- this->screen->format->BytesPerPixel * 8);
-#ifdef USE_WEBOS_ACCELEROMETER
- if ( w > h ) {
- this->orientation = WEBOS_ORIENTATION_LANDSCAPE;
- this->real_w = h;
- this->real_h = w;
- }
- else {
- this->orientation = WEBOS_ORIENTATION_PORTRAIT;
- this->real_w = w;
- this->real_h = h;
- }
- this->accelerometer = SDL_JoystickOpen(0);
-#endif
-
- SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
-#ifdef USE_WEBOS
- PDL_SetOrientation(PDL_ORIENTATION_0);
-#endif
-
- SDL_EnableUNICODE(1);
- SDL_WM_SetCaption("navit", NULL);
-
-#ifdef USE_WEBOS
- if(the_graphics!=NULL) {
- dbg(lvl_debug,"graphics_sdl_new: graphics struct already set: %d!\n", the_graphics_count);
- }
- the_graphics = this;
- the_graphics_count++;
-#else
- g_timeout_add(G_PRIORITY_DEFAULT+10, graphics_sdl_idle, this);
-#endif
-
- this->overlay_enable = 1;
-
- this->aa = 1;
- if((attr=attr_search(attrs, NULL, attr_antialias)))
- this->aa = attr->u.num;
-
- this->resize_callback_initial=1;
- return this;
-}
-
-#ifdef USE_WEBOS
-/* ---------- SDL Eventhandling ---------- */
-
-static Uint32
-sdl_timer_callback(Uint32 interval, void* param)
-{
- struct event_timeout *timeout=(struct event_timeout*)param;
-
- dbg(lvl_debug,"timer(%p) multi(%d) interval(%d) fired\n", param, timeout->multi, interval);
-
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_TIMER;
- userevent.data1 = timeout->cb;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent (&event);
-
- if (timeout->multi == 0) {
- timeout->id = 0;
- return 0; // cancel timer
- }
- return interval; // reactivate timer
-}
-
-/* SDL Mainloop */
-
-static void
-event_sdl_main_loop_run(void)
-{
- PDL_ScreenTimeoutEnable(PDL_FALSE);
- graphics_sdl_idle(NULL);
- PDL_ScreenTimeoutEnable(PDL_TRUE);
-}
-
-static void
-event_sdl_main_loop_quit(void)
-{
- quit_event_loop = 1;
-}
-
-/* Watch */
-
-static void
-event_sdl_watch_thread (GPtrArray *watch_list)
-{
- struct pollfd *pfds = g_new0 (struct pollfd, watch_list->len);
- struct event_watch *ew;
- int ret;
- int idx;
-
- for (idx = 0; idx < watch_list->len; idx++ ) {
- ew = g_ptr_array_index (watch_list, idx);
- g_memmove (&pfds[idx], ew->pfd, sizeof(struct pollfd));
- }
-
- while ((ret = ppoll(pfds, watch_list->len, NULL, NULL)) > 0) {
- for (idx = 0; idx < watch_list->len; idx++ ) {
- if (pfds[idx].revents == pfds[idx].events) { /* The requested event happened, notify mainloop! */
- ew = g_ptr_array_index (watch_list, idx);
- dbg(lvl_debug,"watch(%p) event(%d) encountered\n", ew, pfds[idx].revents);
-
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_WATCH;
- userevent.data1 = ew->cb;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent (&event);
- }
- }
- }
-
- g_free(pfds);
-
- pthread_exit(0);
-}
-
-static void
-event_sdl_watch_startthread(GPtrArray *watch_list)
-{
- dbg(lvl_debug,"enter\n");
- if (sdl_watch_thread)
- event_sdl_watch_stopthread();
-
- int ret;
- ret = pthread_create (&sdl_watch_thread, NULL, (void *)event_sdl_watch_thread, (void *)watch_list);
-
- dbg_assert (ret == 0);
-}
-
-static void
-event_sdl_watch_stopthread()
-{
- dbg(lvl_debug,"enter\n");
- if (sdl_watch_thread) {
- /* Notify the watch thread that the list of FDs will change */
- pthread_kill(sdl_watch_thread, SIGUSR1);
- pthread_join(sdl_watch_thread, NULL);
- sdl_watch_thread = 0;
- }
-}
-
-static struct event_watch *
-event_sdl_add_watch(int fd, enum event_watch_cond cond, struct callback *cb)
-{
- dbg(lvl_debug,"fd(%d) cond(%x) cb(%x)\n", fd, cond, cb);
-
- event_sdl_watch_stopthread();
-
- if (!sdl_watch_list)
- sdl_watch_list = g_ptr_array_new();
-
- struct event_watch *new_ew = g_new0 (struct event_watch, 1);
- struct pollfd *pfd = g_new0 (struct pollfd, 1);
-
- pfd->fd = fd;
-
- /* Modify watchlist here */
- switch (cond) {
- case event_watch_cond_read:
- pfd->events = POLLIN;
- break;
- case event_watch_cond_write:
- pfd->events = POLLOUT;
- break;
- case event_watch_cond_except:
- pfd->events = POLLERR|POLLHUP;
- break;
- }
-
- new_ew->pfd = (struct pollfd*) pfd;
- new_ew->cb = cb;
-
- g_ptr_array_add (sdl_watch_list, (gpointer)new_ew);
-
- event_sdl_watch_startthread(sdl_watch_list);
-
- return new_ew;
-}
-
-static void
-event_sdl_remove_watch(struct event_watch *ew)
-{
- dbg(lvl_debug,"enter %p\n",ew);
-
- event_sdl_watch_stopthread();
-
- g_ptr_array_remove (sdl_watch_list, ew);
- g_free (ew->pfd);
- g_free (ew);
-
- if (sdl_watch_list->len > 0)
- event_sdl_watch_startthread(sdl_watch_list);
-}
-
-/* Timeout */
-
-static struct event_timeout *
-event_sdl_add_timeout(int timeout, int multi, struct callback *cb)
-{
- struct event_timeout * ret = g_new0(struct event_timeout, 1);
- if(!ret) {
- dbg(lvl_error,"g_new0 failed\n");
- return ret;
- }
- dbg(lvl_debug,"timer(%p) multi(%d) interval(%d) cb(%p) added\n",ret, multi, timeout, cb);
- ret->multi = multi;
- ret->cb = cb;
- ret->id = SDL_AddTimer(timeout, sdl_timer_callback, ret);
-
- return ret;
-}
-
-static void
-event_sdl_remove_timeout(struct event_timeout *to)
-{
- dbg(lvl_info,"enter %p\n", to);
- if(to)
- {
- /* do not SDL_RemoveTimer if oneshot timer has already fired */
- int ret = to->id == 0 ? SDL_TRUE : SDL_RemoveTimer(to->id);
-
- if (ret == SDL_FALSE)
- dbg(lvl_error,"SDL_RemoveTimer (%p) failed\n", to->id);
-
- g_free(to);
- dbg(lvl_debug,"timer(%p) removed\n", to);
- }
-}
-
-/* Idle */
-
-/* sort ptr_array by priority, increasing order */
-static gint
-sdl_sort_idle_tasks(gconstpointer parama, gconstpointer paramb)
-{
- struct idle_task *a = (struct idle_task *)parama;
- struct idle_task *b = (struct idle_task *)paramb;
- if (a->priority < b->priority)
- return -1;
- if (a->priority > b->priority)
- return 1;
- return 0;
-}
-
-static struct event_idle *
-event_sdl_add_idle(int priority, struct callback *cb)
-{
- dbg(lvl_debug,"add idle priority(%d) cb(%p)\n", priority, cb);
-
- struct idle_task *task = g_new0(struct idle_task, 1);
- task->priority = priority;
- task->cb = cb;
-
- g_ptr_array_add(idle_tasks, (gpointer)task);
-
- if (idle_tasks->len < 2)
- {
- SDL_Event event;
- SDL_UserEvent userevent;
-
- dbg(lvl_debug,"poking eventloop because of new idle_events\n");
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_IDLE_EVENT;
- userevent.data1 = NULL;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent (&event);
- }
- else // more than one entry => sort the list
- g_ptr_array_sort(idle_tasks, sdl_sort_idle_tasks);
-
- return (struct event_idle *)task;
-}
-
-static void
-event_sdl_remove_idle(struct event_idle *task)
-{
- dbg(lvl_debug,"remove task(%p)\n", task);
- g_ptr_array_remove(idle_tasks, (gpointer)task);
-}
-
-/* callback */
-
-static void
-event_sdl_call_callback(struct callback_list *cbl)
-{
- dbg(lvl_debug,"call_callback cbl(%p)\n",cbl);
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = SDL_USEREVENT_CODE_CALL_CALLBACK;
- userevent.data1 = cbl;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent (&event);
-}
-
-static struct event_methods event_sdl_methods = {
- event_sdl_main_loop_run,
- event_sdl_main_loop_quit,
- event_sdl_add_watch,
- event_sdl_remove_watch,
- event_sdl_add_timeout,
- event_sdl_remove_timeout,
- event_sdl_add_idle,
- event_sdl_remove_idle,
- event_sdl_call_callback,
-};
-
-static struct event_priv *
-event_sdl_new(struct event_methods* methods)
-{
- idle_tasks = g_ptr_array_new();
- *methods = event_sdl_methods;
- return NULL;
-}
-
-/* ---------- SDL Eventhandling ---------- */
-#endif
-
-void
-plugin_init(void)
-{
-#ifdef USE_WEBOS
- plugin_register_category_event("sdl", event_sdl_new);
-#endif
- plugin_register_category_graphics("sdl", graphics_sdl_new);
-}
-
-// vim: sw=4 ts=8
diff --git a/navit/graphics/sdl/graphics_sdl.h b/navit/graphics/sdl/graphics_sdl.h
deleted file mode 100644
index 5934abee0..000000000
--- a/navit/graphics/sdl/graphics_sdl.h
+++ /dev/null
@@ -1,13 +0,0 @@
-
-#ifndef __GRAPHICS_SDL_H
-#define __GRAPHICS_SDL_H
-
-#include <glib.h>
-
-#ifdef USE_WEBOS
-# define USE_WEBOS_ACCELEROMETER
-#endif
-
-gboolean graphics_sdl_idle(void *);
-
-#endif
diff --git a/navit/graphics/sdl/raster.c b/navit/graphics/sdl/raster.c
deleted file mode 100644
index 82c79212c..000000000
--- a/navit/graphics/sdl/raster.c
+++ /dev/null
@@ -1,2007 +0,0 @@
-/* raster.c -- line/rect/circle/poly rasterization
-
- copyright (c) 2008 bryan rittmeyer <bryanr@bryanr.org>
- license: LGPLv2
-
- based on SDL_gfx (c) A. Schiffler
- and SGE (c)1999-2003 Anders Lindström
-
- + added filled anti-aliased polygons
- + fixed some bugs and improved performance
-
- revision history
- 2008-07-05 initial
- 2008-07-06 aacircle
-*/
-
-
-#include <math.h>
-
-#include "raster.h"
-
-#undef DEBUG
-#undef PARANOID
-
-
-/* raster_rect */
-
-static inline void raster_rect_inline(SDL_Surface *dst, int16_t x1, int16_t y1, int16_t w, int16_t h, uint32_t color)
-{
- /* sge */
- SDL_Rect rect;
-
-#if 1
- if((w <= 0) || (h <= 0))
- {
- return;
- }
-
-#if 0
- if(x1 < 0)
- {
- if((x1 + w) < 0)
- {
- return;
- }
- else
- {
- w = w + x1;
- x1 = 0;
- }
- }
- if(y1 < 0)
- {
- if((y1 + h) < 0)
- {
- return;
- }
- else
- {
- h = h + y1;
- y1 = 0;
- }
- }
-
- if(x1 + w >= dst->w)
- {
- w = dst->w - x1;
- }
- if(y1 + h >= dst->h)
- {
- h = dst->h - y1;
- }
-#endif
-
- rect.x = x1;
- rect.y = y1;
- rect.w = w;
- rect.h = h;
-
- /* will clip internally */
- SDL_FillRect(dst, &rect, color);
-
-#else
-
- x2 = x1 + w;
- y2 = y1 + h;
-
- /*
- * Order coordinates to ensure that
- * x1<=x2 and y1<=y2
- */
- if (x1 > x2) {
- tmp = x1;
- x1 = x2;
- x2 = tmp;
- }
- if (y1 > y2) {
- tmp = y1;
- y1 = y2;
- y2 = tmp;
- }
-
- /*
- * Get clipping boundary and
- * check visibility
- */
- left = dst->clip_rect.x;
- if (x2<left) {
- return(0);
- }
- right = dst->clip_rect.x + dst->clip_rect.w - 1;
- if (x1>right) {
- return(0);
- }
- top = dst->clip_rect.y;
- if (y2<top) {
- return(0);
- }
- bottom = dst->clip_rect.y + dst->clip_rect.h - 1;
- if (y1>bottom) {
- return(0);
- }
-
- /* Clip all points */
- if (x1<left) {
- x1=left;
- } else if (x1>right) {
- x1=right;
- }
- if (x2<left) {
- x2=left;
- } else if (x2>right) {
- x2=right;
- }
- if (y1<top) {
- y1=top;
- } else if (y1>bottom) {
- y1=bottom;
- }
- if (y2<top) {
- y2=top;
- } else if (y2>bottom) {
- y2=bottom;
- }
-
-#if 0
- /*
- * Test for special cases of straight line or single point
- */
- if (x1 == x2) {
- if (y1 == y2) {
- return (pixelColor(dst, x1, y1, color));
- } else {
- return (vlineColor(dst, x1, y1, y2, color));
- }
- }
- if (y1 == y2) {
- return (hlineColor(dst, x1, x2, y1, color));
- }
-#endif
-
- /*
- * Calculate width&height
- */
- w = x2 - x1;
- h = y2 - y1;
-
- /*
- * No alpha-blending required
- */
-
-#if 0
- /*
- * Setup color
- */
- colorptr = (Uint8 *) & color;
- if (SDL_BYTEORDER == SDL_BIG_ENDIAN) {
- color = SDL_MapRGBA(dst->format, colorptr[0], colorptr[1], colorptr[2], colorptr[3]);
- } else {
- color = SDL_MapRGBA(dst->format, colorptr[3], colorptr[2], colorptr[1], colorptr[0]);
- }
-#endif
-
- /*
- * Lock surface
- */
- SDL_LockSurface(dst);
-
- /*
- * More variable setup
- */
- dx = w;
- dy = h;
- pixx = dst->format->BytesPerPixel;
- pixy = dst->pitch;
- pixel = ((Uint8 *) dst->pixels) + pixx * (int) x1 + pixy * (int) y1;
- pixellast = pixel + pixx * dx + pixy * dy;
- dx++;
-
- /*
- * Draw
- */
- switch (dst->format->BytesPerPixel) {
- case 1:
- for (; pixel <= pixellast; pixel += pixy) {
- memset(pixel, (Uint8) color, dx);
- }
- break;
- case 2:
- pixy -= (pixx * dx);
- for (; pixel <= pixellast; pixel += pixy) {
- for (x = 0; x < dx; x++) {
- *(Uint16*) pixel = color;
- pixel += pixx;
- }
- }
- break;
- case 3:
- pixy -= (pixx * dx);
- for (; pixel <= pixellast; pixel += pixy) {
- for (x = 0; x < dx; x++) {
- if (SDL_BYTEORDER == SDL_BIG_ENDIAN) {
- pixel[0] = (color >> 16) & 0xff;
- pixel[1] = (color >> 8) & 0xff;
- pixel[2] = color & 0xff;
- } else {
- pixel[0] = color & 0xff;
- pixel[1] = (color >> 8) & 0xff;
- pixel[2] = (color >> 16) & 0xff;
- }
- pixel += pixx;
- }
- }
- break;
- default: /* case 4 */
- pixy -= (pixx * dx);
- for (; pixel <= pixellast; pixel += pixy) {
- for (x = 0; x < dx; x++) {
- *(Uint32 *) pixel = color;
- pixel += pixx;
- }
- }
- break;
- }
-
- /*
- * Unlock surface
- */
- SDL_UnlockSurface(dst);
-
-#endif
-}
-
-void raster_rect(SDL_Surface *s, int16_t x, int16_t y, int16_t w, int16_t h, uint32_t col)
-{
- raster_rect_inline(s, x, y, w, h, col);
-}
-
-#define raster_rect_inline raster_rect
-
-
-/* raster :: pixel */
-
-#define MODIFIED_ALPHA_PIXEL_ROUTINE
-
-
-#define clip_xmin(surface) surface->clip_rect.x
-#define clip_xmax(surface) surface->clip_rect.x+surface->clip_rect.w-1
-#define clip_ymin(surface) surface->clip_rect.y
-#define clip_ymax(surface) surface->clip_rect.y+surface->clip_rect.h-1
-
-
-static void raster_PutPixel(SDL_Surface *surface, Sint16 x, Sint16 y, Uint32 color)
-{
- if(x>=clip_xmin(surface) && x<=clip_xmax(surface) && y>=clip_ymin(surface) && y<=clip_ymax(surface)){
- switch (surface->format->BytesPerPixel) {
- case 1: { /* Assuming 8-bpp */
- *((Uint8 *)surface->pixels + y*surface->pitch + x) = color;
- }
- break;
-
- case 2: { /* Probably 15-bpp or 16-bpp */
- *((Uint16 *)surface->pixels + y*surface->pitch/2 + x) = color;
- }
- break;
-
- case 3: { /* Slow 24-bpp mode, usually not used */
- Uint8 *pix = (Uint8 *)surface->pixels + y * surface->pitch + x*3;
-
- /* Gack - slow, but endian correct */
- *(pix+surface->format->Rshift/8) = color>>surface->format->Rshift;
- *(pix+surface->format->Gshift/8) = color>>surface->format->Gshift;
- *(pix+surface->format->Bshift/8) = color>>surface->format->Bshift;
- *(pix+surface->format->Ashift/8) = color>>surface->format->Ashift;
- }
- break;
-
- case 4: { /* Probably 32-bpp */
- *((Uint32 *)surface->pixels + y*surface->pitch/4 + x) = color;
- }
- break;
- }
- }
-}
-
-/* PutPixel routine with alpha blending, input color in destination format */
-
-/* New, faster routine - default blending pixel */
-
-static void raster_PutPixelAlpha(SDL_Surface * surface, Sint16 x, Sint16 y, Uint32 color, Uint8 alpha)
-{
- /* sdl-gfx */
- Uint32 Rmask = surface->format->Rmask, Gmask =
- surface->format->Gmask, Bmask = surface->format->Bmask, Amask = surface->format->Amask;
- Uint32 R = 0, G = 0, B = 0, A = 0;
-
- if (x >= clip_xmin(surface) && x <= clip_xmax(surface)
- && y >= clip_ymin(surface) && y <= clip_ymax(surface)) {
-
- switch (surface->format->BytesPerPixel) {
- case 1:{ /* Assuming 8-bpp */
- if (alpha == 255) {
- *((Uint8 *) surface->pixels + y * surface->pitch + x) = color;
- } else {
- Uint8 *pixel = (Uint8 *) surface->pixels + y * surface->pitch + x;
-
- Uint8 dR = surface->format->palette->colors[*pixel].r;
- Uint8 dG = surface->format->palette->colors[*pixel].g;
- Uint8 dB = surface->format->palette->colors[*pixel].b;
- Uint8 sR = surface->format->palette->colors[color].r;
- Uint8 sG = surface->format->palette->colors[color].g;
- Uint8 sB = surface->format->palette->colors[color].b;
-
- dR = dR + ((sR - dR) * alpha >> 8);
- dG = dG + ((sG - dG) * alpha >> 8);
- dB = dB + ((sB - dB) * alpha >> 8);
-
- *pixel = SDL_MapRGB(surface->format, dR, dG, dB);
- }
- }
- break;
-
- case 2:{ /* Probably 15-bpp or 16-bpp */
- if (alpha == 255) {
- *((Uint16 *) surface->pixels + y * surface->pitch / 2 + x) = color;
- } else {
- Uint16 *pixel = (Uint16 *) surface->pixels + y * surface->pitch / 2 + x;
- Uint32 dc = *pixel;
-
- R = ((dc & Rmask) + (((color & Rmask) - (dc & Rmask)) * alpha >> 8)) & Rmask;
- G = ((dc & Gmask) + (((color & Gmask) - (dc & Gmask)) * alpha >> 8)) & Gmask;
- B = ((dc & Bmask) + (((color & Bmask) - (dc & Bmask)) * alpha >> 8)) & Bmask;
- if (Amask)
- A = ((dc & Amask) + (((color & Amask) - (dc & Amask)) * alpha >> 8)) & Amask;
-
- *pixel = R | G | B | A;
- }
- }
- break;
-
- case 3:{ /* Slow 24-bpp mode, usually not used */
- Uint8 *pix = (Uint8 *) surface->pixels + y * surface->pitch + x * 3;
- Uint8 rshift8 = surface->format->Rshift / 8;
- Uint8 gshift8 = surface->format->Gshift / 8;
- Uint8 bshift8 = surface->format->Bshift / 8;
- Uint8 ashift8 = surface->format->Ashift / 8;
-
-
- if (alpha == 255) {
- *(pix + rshift8) = color >> surface->format->Rshift;
- *(pix + gshift8) = color >> surface->format->Gshift;
- *(pix + bshift8) = color >> surface->format->Bshift;
- *(pix + ashift8) = color >> surface->format->Ashift;
- } else {
- Uint8 dR, dG, dB, dA = 0;
- Uint8 sR, sG, sB, sA = 0;
-
- pix = (Uint8 *) surface->pixels + y * surface->pitch + x * 3;
-
- dR = *((pix) + rshift8);
- dG = *((pix) + gshift8);
- dB = *((pix) + bshift8);
- dA = *((pix) + ashift8);
-
- sR = (color >> surface->format->Rshift) & 0xff;
- sG = (color >> surface->format->Gshift) & 0xff;
- sB = (color >> surface->format->Bshift) & 0xff;
- sA = (color >> surface->format->Ashift) & 0xff;
-
- dR = dR + ((sR - dR) * alpha >> 8);
- dG = dG + ((sG - dG) * alpha >> 8);
- dB = dB + ((sB - dB) * alpha >> 8);
- dA = dA + ((sA - dA) * alpha >> 8);
-
- *((pix) + rshift8) = dR;
- *((pix) + gshift8) = dG;
- *((pix) + bshift8) = dB;
- *((pix) + ashift8) = dA;
- }
- }
- break;
-
-#ifdef ORIGINAL_ALPHA_PIXEL_ROUTINE
-
- case 4:{ /* Probably :-) 32-bpp */
- if (alpha == 255) {
- *((Uint32 *) surface->pixels + y * surface->pitch / 4 + x) = color;
- } else {
- Uint32 Rshift, Gshift, Bshift, Ashift;
- Uint32 *pixel = (Uint32 *) surface->pixels + y * surface->pitch / 4 + x;
- Uint32 dc = *pixel;
-
- Rshift = surface->format->Rshift;
- Gshift = surface->format->Gshift;
- Bshift = surface->format->Bshift;
- Ashift = surface->format->Ashift;
-
- R = ((dc & Rmask) + (((((color & Rmask) - (dc & Rmask)) >> Rshift) * alpha >> 8) << Rshift)) & Rmask;
- G = ((dc & Gmask) + (((((color & Gmask) - (dc & Gmask)) >> Gshift) * alpha >> 8) << Gshift)) & Gmask;
- B = ((dc & Bmask) + (((((color & Bmask) - (dc & Bmask)) >> Bshift) * alpha >> 8) << Bshift)) & Bmask;
- if (Amask)
- A = ((dc & Amask) + (((((color & Amask) - (dc & Amask)) >> Ashift) * alpha >> 8) << Ashift)) & Amask;
-
- *pixel = R | G | B | A;
- }
- }
- break;
-#endif
-
-#ifdef MODIFIED_ALPHA_PIXEL_ROUTINE
-
- case 4:{ /* Probably :-) 32-bpp */
- if (alpha == 255) {
- *((Uint32 *) surface->pixels + y * surface->pitch / 4 + x) = color;
- } else {
- Uint32 Rshift, Gshift, Bshift, Ashift;
- Uint32 *pixel = (Uint32 *) surface->pixels + y * surface->pitch / 4 + x;
- Uint32 dc = *pixel;
- Uint32 dR = (color & Rmask), dG = (color & Gmask), dB = (color & Bmask);
- Uint32 surfaceAlpha, preMultR, preMultG, preMultB;
- Uint32 aTmp;
-
- Rshift = surface->format->Rshift;
- Gshift = surface->format->Gshift;
- Bshift = surface->format->Bshift;
- Ashift = surface->format->Ashift;
-
- preMultR = (alpha * (dR>>Rshift));
- preMultG = (alpha * (dG>>Gshift));
- preMultB = (alpha * (dB>>Bshift));
-
- surfaceAlpha = ((dc & Amask) >> Ashift);
- aTmp = (255 - alpha);
- if ((A = 255 - ((aTmp * (255 - surfaceAlpha)) >> 8 ))) {
- aTmp *= surfaceAlpha;
- R = (preMultR + ((aTmp * ((dc & Rmask) >> Rshift)) >> 8)) / A << Rshift & Rmask;
- G = (preMultG + ((aTmp * ((dc & Gmask) >> Gshift)) >> 8)) / A << Gshift & Gmask;
- B = (preMultB + ((aTmp * ((dc & Bmask) >> Bshift)) >> 8)) / A << Bshift & Bmask;
- }
- *pixel = R | G | B | (A << Ashift & Amask);
-
- }
- }
- break;
-#endif
- }
- }
-}
-
-
-/* FIXME: eliminate these 2 functions */
-
-static int raster_pixelColorNolock(SDL_Surface * dst, Sint16 x, Sint16 y, Uint32 color)
-{
- int result = 0;
-
-#if 0
- /*
- * Setup color
- */
- alpha = color & 0x000000ff;
- mcolor =
- SDL_MapRGBA(dst->format, (color & 0xff000000) >> 24,
- (color & 0x00ff0000) >> 16, (color & 0x0000ff00) >> 8, alpha);
-#endif
-
- /*
- * Draw
- */
- raster_PutPixel(dst, x, y, color);
-
- return (result);
-}
-
-
-/* Pixel - using alpha weight on color for AA-drawing - no locking */
-
-static int raster_pixelColorWeightNolock(SDL_Surface * dst, Sint16 x, Sint16 y, Uint32 color, Uint32 weight)
-{
-#if 0
- Uint32 a;
-
- /*
- * Get alpha
- */
- a = (color & (Uint32) 0x000000ff);
-
- /*
- * Modify Alpha by weight
- */
- a = ((a * weight) >> 8);
-#endif
-
- raster_PutPixelAlpha(dst, x, y, color, weight);
-
- return 0;
-}
-
-
-/* raster :: line */
-
-
-
-static inline void raster_hline(SDL_Surface * dst, Sint16 x1, Sint16 x2, Sint16 y, Uint32 color)
-{
-#if 1
- SDL_Rect l;
-
- /* sge */
- if(x1>x2){Sint16 tmp=x1; x1=x2; x2=tmp;}
-
- l.x=x1; l.y=y; l.w=x2-x1+1; l.h=1;
-
- SDL_FillRect(dst, &l, color);
-
-#else
- /* sdl_gfx */
- Sint16 left, right, top, bottom;
- Uint8 *pixel, *pixellast;
- int dx;
- int pixx, pixy;
- Sint16 w;
- Sint16 xtmp;
- int result = -1;
-#if 0
- int i;
- union
- {
- double d;
- uint16_t col[4];
- } doub;
-
- for(i = 0; i < 4; i++)
- {
- doub.col[i] = color;
- }
-#endif
-
- /*
- * Check visibility of clipping rectangle
- */
- if ((dst->clip_rect.w==0) || (dst->clip_rect.h==0)) {
- return(0);
- }
-
- /*
- * Swap x1, x2 if required to ensure x1<=x2
- */
- if (x1 > x2) {
- xtmp = x1;
- x1 = x2;
- x2 = xtmp;
- }
-
- /*
- * Get clipping boundary and
- * check visibility of hline
- */
- left = dst->clip_rect.x;
- if (x2<left) {
- return(0);
- }
- right = dst->clip_rect.x + dst->clip_rect.w - 1;
- if (x1>right) {
- return(0);
- }
- top = dst->clip_rect.y;
- bottom = dst->clip_rect.y + dst->clip_rect.h - 1;
- if ((y<top) || (y>bottom)) {
- return (0);
- }
-
- /*
- * Clip x
- */
- if (x1 < left) {
- x1 = left;
- }
- if (x2 > right) {
- x2 = right;
- }
-
- /*
- * Calculate width
- */
- w = x2 - x1;
-
-#if 0
- printf("raster_hline %d %d %d %d\n", x1, x2, y, w);
-#endif
-
- /*
- * Lock surface
- */
- if (SDL_MUSTLOCK(dst)) {
- SDL_LockSurface(dst);
- }
-
- /*
- * More variable setup
- */
- dx = w;
- pixx = dst->format->BytesPerPixel;
- pixy = dst->pitch;
- pixel = ((Uint8 *) dst->pixels) + pixx * (int) x1 + pixy * (int) y;
-
- /*
- * Draw
- */
- switch (dst->format->BytesPerPixel) {
- case 1:
- memset(pixel, color, dx);
- break;
- case 2:
- pixellast = pixel + dx + dx;
-#if 0
- for (; (pixel+3) <= pixellast; pixel += 4*pixx)
- {
- *(double *)pixel = doub.d;
- }
-#endif
- for (; pixel <= pixellast; pixel += pixx) {
- *(Uint16 *) pixel = color;
- }
- break;
- case 3:
- pixellast = pixel + dx + dx + dx;
- for (; pixel <= pixellast; pixel += pixx) {
- if (SDL_BYTEORDER == SDL_BIG_ENDIAN) {
- pixel[0] = (color >> 16) & 0xff;
- pixel[1] = (color >> 8) & 0xff;
- pixel[2] = color & 0xff;
- } else {
- pixel[0] = color & 0xff;
- pixel[1] = (color >> 8) & 0xff;
- pixel[2] = (color >> 16) & 0xff;
- }
- }
- break;
- default: /* case 4 */
- dx = dx + dx;
- pixellast = pixel + dx + dx;
- for (; pixel <= pixellast; pixel += pixx) {
- *(Uint32 *) pixel = color;
- }
- break;
- }
-
- /*
- * Unlock surface
- */
- if (SDL_MUSTLOCK(dst)) {
- SDL_UnlockSurface(dst);
- }
-
- /*
- * Set result code
- */
- result = 0;
-
- return (result);
-#endif
-}
-
-static void raster_vline(SDL_Surface *dst, Sint16 x, Sint16 y1, Sint16 y2, Uint32 color)
-{
- SDL_Rect l;
-
- if(y1>y2){Sint16 tmp=y1; y1=y2; y2=tmp;}
-
- l.x=x; l.y=y1; l.w=1; l.h=y2-y1+1;
-
- SDL_FillRect(dst, &l, color);
-}
-
-
-
-/* raster_line */
-#define CLIP_LEFT_EDGE 0x1
-#define CLIP_RIGHT_EDGE 0x2
-#define CLIP_BOTTOM_EDGE 0x4
-#define CLIP_TOP_EDGE 0x8
-#define CLIP_INSIDE(a) (!a)
-#define CLIP_REJECT(a,b) (a&b)
-#define CLIP_ACCEPT(a,b) (!(a|b))
-
-static int clipEncode(Sint16 x, Sint16 y, Sint16 left, Sint16 top, Sint16 right, Sint16 bottom)
-{
- int code = 0;
-
- if (x < left) {
- code |= CLIP_LEFT_EDGE;
- } else if (x > right) {
- code |= CLIP_RIGHT_EDGE;
- }
- if (y < top) {
- code |= CLIP_TOP_EDGE;
- } else if (y > bottom) {
- code |= CLIP_BOTTOM_EDGE;
- }
- return code;
-}
-
-static int clipLine(SDL_Surface * dst, Sint16 * x1, Sint16 * y1, Sint16 * x2, Sint16 * y2)
-{
- Sint16 left, right, top, bottom;
- int code1, code2;
- int draw = 0;
- Sint16 swaptmp;
- float m;
-
- /*
- * Get clipping boundary
- */
- left = dst->clip_rect.x;
- right = dst->clip_rect.x + dst->clip_rect.w - 1;
- top = dst->clip_rect.y;
- bottom = dst->clip_rect.y + dst->clip_rect.h - 1;
-
- while (1) {
- code1 = clipEncode(*x1, *y1, left, top, right, bottom);
- code2 = clipEncode(*x2, *y2, left, top, right, bottom);
- if (CLIP_ACCEPT(code1, code2)) {
- draw = 1;
- break;
- } else if (CLIP_REJECT(code1, code2))
- break;
- else {
- if (CLIP_INSIDE(code1)) {
- swaptmp = *x2;
- *x2 = *x1;
- *x1 = swaptmp;
- swaptmp = *y2;
- *y2 = *y1;
- *y1 = swaptmp;
- swaptmp = code2;
- code2 = code1;
- code1 = swaptmp;
- }
- if (*x2 != *x1) {
- m = (*y2 - *y1) / (float) (*x2 - *x1);
- } else {
- m = 1.0f;
- }
- if (code1 & CLIP_LEFT_EDGE) {
- *y1 += (Sint16) ((left - *x1) * m);
- *x1 = left;
- } else if (code1 & CLIP_RIGHT_EDGE) {
- *y1 += (Sint16) ((right - *x1) * m);
- *x1 = right;
- } else if (code1 & CLIP_BOTTOM_EDGE) {
- if (*x2 != *x1) {
- *x1 += (Sint16) ((bottom - *y1) / m);
- }
- *y1 = bottom;
- } else if (code1 & CLIP_TOP_EDGE) {
- if (*x2 != *x1) {
- *x1 += (Sint16) ((top - *y1) / m);
- }
- *y1 = top;
- }
- }
- }
-
- return draw;
-}
-
-
-void raster_line(SDL_Surface *dst, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint32_t color)
-{
- /* sdl-gfx */
- int pixx, pixy;
- int x, y;
- int dx, dy;
- int sx, sy;
- int swaptmp;
- void *pixel;
-
- /*
- * Clip line and test if we have to draw
- */
- if (!(clipLine(dst, &x1, &y1, &x2, &y2))) {
- return;
- }
-
- /*
- * Test for special cases of straight lines or single point
- */
- if (x1 == x2) {
- if (y1 < y2) {
- raster_vline(dst, x1, y1, y2, color);
- return;
- } else if (y1 > y2) {
- raster_vline(dst, x1, y2, y1, color);
- return;
- } else {
- raster_PutPixel(dst, x1, y1, color);
- return;
- }
- }
- if (y1 == y2) {
- if (x1 < x2) {
- raster_hline(dst, x1, x2, y1, color);
- return;
- } else if (x1 > x2) {
- raster_hline(dst, x2, x1, y1, color);
- return;
- }
- }
-
-
- /*
- * Variable setup
- */
- dx = x2 - x1;
- dy = y2 - y1;
- sx = (dx >= 0) ? 1 : -1;
- sy = (dy >= 0) ? 1 : -1;
-
- /* Lock surface */
- if (SDL_MUSTLOCK(dst)) {
- if (SDL_LockSurface(dst) < 0) {
- return;
- }
- }
-
- /*
- * No alpha blending - use fast pixel routines
- */
-
-#if 0
- /*
- * Setup color
- */
- colorptr = (Uint8 *) & color;
- if (SDL_BYTEORDER == SDL_BIG_ENDIAN) {
- color = SDL_MapRGBA(dst->format, colorptr[0], colorptr[1], colorptr[2], colorptr[3]);
- } else {
- color = SDL_MapRGBA(dst->format, colorptr[3], colorptr[2], colorptr[1], colorptr[0]);
- }
-#endif
-
- /*
- * More variable setup
- */
- dx = sx * dx + 1;
- dy = sy * dy + 1;
- pixx = dst->format->BytesPerPixel;
- pixy = dst->pitch;
- pixel = ((Uint8 *) dst->pixels) + pixx * (int) x1 + pixy * (int) y1;
- pixx *= sx;
- pixy *= sy;
- if (dx < dy) {
- swaptmp = dx;
- dx = dy;
- dy = swaptmp;
- swaptmp = pixx;
- pixx = pixy;
- pixy = swaptmp;
- }
-
- /*
- * Draw
- */
- x = 0;
- y = 0;
- switch (dst->format->BytesPerPixel) {
- case 1:
- for (; x < dx; x++, pixel=(Uint8 *)pixel+pixx) {
- *(Uint8 *)pixel = color;
- y += dy;
- if (y >= dx) {
- y -= dx;
- pixel = (Uint8 *)pixel + pixy;
- }
- }
- break;
- case 2:
- for (; x < dx; x++, pixel=(Uint8 *)pixel+pixx) {
- *(Uint16 *) pixel = color;
- y += dy;
- if (y >= dx) {
- y -= dx;
- pixel = (Uint8 *)pixel + pixy;
- }
- }
- break;
- case 3:
- for (; x < dx; x++, pixel=(Uint8 *)pixel+pixx) {
- if (SDL_BYTEORDER == SDL_BIG_ENDIAN) {
- *(Uint8 *)pixel = (color >> 16) & 0xff;
- *((Uint8 *)pixel+1) = (color >> 8) & 0xff;
- *((Uint8 *)pixel+2) = color & 0xff;
- } else {
- *(Uint8 *)pixel = color & 0xff;
- *((Uint8 *)pixel+1) = (color >> 8) & 0xff;
- *((Uint8 *)pixel+2) = (color >> 16) & 0xff;
- }
- y += dy;
- if (y >= dx) {
- y -= dx;
- pixel = (Uint8 *)pixel + pixy;
- }
- }
- break;
- default: /* case 4 */
- for (; x < dx; x++, pixel=(Uint8 *)pixel+pixx) {
- *(Uint32 *) pixel = color;
- y += dy;
- if (y >= dx) {
- y -= dx;
- pixel = (Uint8 *)pixel + pixy;
- }
- }
- break;
- }
-
- /* Unlock surface */
- if (SDL_MUSTLOCK(dst)) {
- SDL_UnlockSurface(dst);
- }
-
- return;
-}
-
-
-#define AAlevels 256
-#define AAbits 8
-
-static void raster_aalineColorInt(SDL_Surface * dst, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 color, int draw_endpoint)
-{
- Sint32 xx0, yy0, xx1, yy1;
- Uint32 intshift, erracc, erradj;
- Uint32 erracctmp, wgt;
- int dx, dy, tmp, xdir, y0p1, x0pxdir;
-
- /*
- * Check visibility of clipping rectangle
- */
- if ((dst->clip_rect.w==0) || (dst->clip_rect.h==0)) {
- return;
- }
-
- /*
- * Clip line and test if we have to draw
- */
- if (!(clipLine(dst, &x1, &y1, &x2, &y2))) {
- return;
- }
-
- /*
- * Keep on working with 32bit numbers
- */
- xx0 = x1;
- yy0 = y1;
- xx1 = x2;
- yy1 = y2;
-
- /*
- * Reorder points if required
- */
- if (yy0 > yy1) {
- tmp = yy0;
- yy0 = yy1;
- yy1 = tmp;
- tmp = xx0;
- xx0 = xx1;
- xx1 = tmp;
- }
-
- /*
- * Calculate distance
- */
- dx = xx1 - xx0;
- dy = yy1 - yy0;
-
- /*
- * Adjust for negative dx and set xdir
- */
- if (dx >= 0) {
- xdir = 1;
- } else {
- xdir = -1;
- dx = (-dx);
- }
-
- /*
- * Check for special cases
- */
- if (dx == 0) {
- /*
- * Vertical line
- */
- raster_vline(dst, x1, y1, y2, color);
- return;
- } else if (dy == 0) {
- /*
- * Horizontal line
- */
- raster_hline(dst, x1, x2, y1, color);
- return;
- } else if (dx == dy) {
- /*
- * Diagonal line
- */
- raster_line(dst, x1, y1, x2, y2, color);
- return;
- }
-
- /*
- * Zero accumulator
- */
- erracc = 0;
-
- /*
- * # of bits by which to shift erracc to get intensity level
- */
- intshift = 32 - AAbits;
-
- /* Lock surface */
- if (SDL_MUSTLOCK(dst)) {
- if (SDL_LockSurface(dst) < 0) {
- return;
- }
- }
-
- /*
- * Draw the initial pixel in the foreground color
- */
- raster_pixelColorNolock(dst, x1, y1, color);
-
- /*
- * x-major or y-major?
- */
- if (dy > dx) {
-
- /*
- * y-major. Calculate 16-bit fixed point fractional part of a pixel that
- * X advances every time Y advances 1 pixel, truncating the result so that
- * we won't overrun the endpoint along the X axis
- */
- /*
- * Not-so-portable version: erradj = ((Uint64)dx << 32) / (Uint64)dy;
- */
- erradj = ((dx << 16) / dy) << 16;
-
- /*
- * draw all pixels other than the first and last
- */
- x0pxdir = xx0 + xdir;
- while (--dy) {
- erracctmp = erracc;
- erracc += erradj;
- if (erracc <= erracctmp) {
- /*
- * rollover in error accumulator, x coord advances
- */
- xx0 = x0pxdir;
- x0pxdir += xdir;
- }
- yy0++; /* y-major so always advance Y */
-
- /*
- * the AAbits most significant bits of erracc give us the intensity
- * weighting for this pixel, and the complement of the weighting for
- * the paired pixel.
- */
- wgt = (erracc >> intshift) & 255;
- raster_pixelColorWeightNolock (dst, xx0, yy0, color, 255 - wgt);
- raster_pixelColorWeightNolock (dst, x0pxdir, yy0, color, wgt);
- }
-
- } else {
-
- /*
- * x-major line. Calculate 16-bit fixed-point fractional part of a pixel
- * that Y advances each time X advances 1 pixel, truncating the result so
- * that we won't overrun the endpoint along the X axis.
- */
- /*
- * Not-so-portable version: erradj = ((Uint64)dy << 32) / (Uint64)dx;
- */
- erradj = ((dy << 16) / dx) << 16;
-
- /*
- * draw all pixels other than the first and last
- */
- y0p1 = yy0 + 1;
- while (--dx) {
-
- erracctmp = erracc;
- erracc += erradj;
- if (erracc <= erracctmp) {
- /*
- * Accumulator turned over, advance y
- */
- yy0 = y0p1;
- y0p1++;
- }
- xx0 += xdir; /* x-major so always advance X */
- /*
- * the AAbits most significant bits of erracc give us the intensity
- * weighting for this pixel, and the complement of the weighting for
- * the paired pixel.
- */
- wgt = (erracc >> intshift) & 255;
- raster_pixelColorWeightNolock (dst, xx0, yy0, color, 255 - wgt);
- raster_pixelColorWeightNolock (dst, xx0, y0p1, color, wgt);
- }
- }
-
- /*
- * Do we have to draw the endpoint
- */
- if (draw_endpoint) {
- /*
- * Draw final pixel, always exactly intersected by the line and doesn't
- * need to be weighted.
- */
- raster_pixelColorNolock (dst, x2, y2, color);
- }
-
- /* Unlock surface */
- if (SDL_MUSTLOCK(dst)) {
- SDL_UnlockSurface(dst);
- }
-}
-
-void raster_aaline(SDL_Surface *s, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint32_t col)
-{
- raster_aalineColorInt(s, x1, y1, x2, y2, col, 1);
-}
-
-
-
-/* raster :: circle */
-
-void raster_circle(SDL_Surface *dst, int16_t x, int16_t y, int16_t r, uint32_t color)
-{
- /* sdl-gfx */
- Sint16 left, right, top, bottom;
- Sint16 x1, y1, x2, y2;
- Sint16 cx = 0;
- Sint16 cy = r;
- Sint16 ocx = (Sint16) 0xffff;
- Sint16 ocy = (Sint16) 0xffff;
- Sint16 df = 1 - r;
- Sint16 d_e = 3;
- Sint16 d_se = -2 * r + 5;
- Sint16 xpcx, xmcx, xpcy, xmcy;
- Sint16 ypcy, ymcy, ypcx, ymcx;
-
- /*
- * Check visibility of clipping rectangle
- */
- if ((dst->clip_rect.w==0) || (dst->clip_rect.h==0)) {
- return;
- }
-
- /*
- * Sanity check radius
- */
- if (r < 0) {
- return;
- }
-
- /*
- * Special case for r=0 - draw a point
- */
- if (r == 0) {
- return (raster_PutPixel(dst, x, y, color));
- }
-
- /*
- * Get circle and clipping boundary and
- * test if bounding box of circle is visible
- */
- x2 = x + r;
- left = dst->clip_rect.x;
- if (x2<left) {
- return;
- }
- x1 = x - r;
- right = dst->clip_rect.x + dst->clip_rect.w - 1;
- if (x1>right) {
- return;
- }
- y2 = y + r;
- top = dst->clip_rect.y;
- if (y2<top) {
- return;
- }
- y1 = y - r;
- bottom = dst->clip_rect.y + dst->clip_rect.h - 1;
- if (y1>bottom) {
- return;
- }
-
- /*
- * Draw
- */
- do {
- xpcx = x + cx;
- xmcx = x - cx;
- xpcy = x + cy;
- xmcy = x - cy;
- if (ocy != cy) {
- if (cy > 0) {
- ypcy = y + cy;
- ymcy = y - cy;
- raster_hline(dst, xmcx, xpcx, ypcy, color);
- raster_hline(dst, xmcx, xpcx, ymcy, color);
-// raster_rect_inline(dst, xmcx, ypcy, 2*cx, 1, color);
-// raster_rect_inline(dst, xmcx, ymcy, 2*cx, 1, color);
-
- } else {
- raster_hline(dst, xmcx, xpcx, y, color);
-// raster_rect_inline(dst, xmcx, y, 2*cx, 1, color);
- }
- ocy = cy;
- }
- if (ocx != cx) {
- if (cx != cy) {
- if (cx > 0) {
- ypcx = y + cx;
- ymcx = y - cx;
- raster_hline(dst, xmcy, xpcy, ymcx, color);
- raster_hline(dst, xmcy, xpcy, ypcx, color);
- //raster_rect_inline(dst, xmcy, ymcx, 2*cy, 1, color);
- //raster_rect_inline(dst, xmcy, ypcx, 2*cy, 1, color);
- } else {
- raster_hline(dst, xmcy, xpcy, y, color);
- //raster_rect_inline(dst, xmcy, y, 2*cy, 1, color);
- }
- }
- ocx = cx;
- }
- /*
- * Update
- */
- if (df < 0) {
- df += d_e;
- d_e += 2;
- d_se += 2;
- } else {
- df += d_se;
- d_e += 2;
- d_se += 4;
- cy--;
- }
- cx++;
- } while (cx <= cy);
-}
-
-
-/* FIXME: convert to fixed pt */
-static void raster_AAFilledEllipse(SDL_Surface *surface, Sint16 xc, Sint16 yc, Sint16 rx, Sint16 ry, Uint32 color)
-{
- /* sge */
- /* Sanity check */
- if (rx < 1)
- rx = 1;
- if (ry < 1)
- ry = 1;
-
- int a2 = rx * rx;
- int b2 = ry * ry;
-
- int ds = 2 * a2;
- int dt = 2 * b2;
-
- int dxt = (int)(a2 / sqrt(a2 + b2));
-
- int t = 0;
- int s = -2 * a2 * ry;
- int d = 0;
-
- Sint16 x = xc;
- Sint16 y = yc - ry;
-
- Sint16 xs, ys, dyt;
- float cp, is, ip, imax = 1.0;
-
- /* Lock surface */
- if ( SDL_MUSTLOCK(surface) )
- if ( SDL_LockSurface(surface) < 0 )
- return;
-
- /* "End points" */
- raster_PutPixel(surface, x, y, color);
- raster_PutPixel(surface, 2*xc-x, y, color);
-
- raster_PutPixel(surface, x, 2*yc-y, color);
- raster_PutPixel(surface, 2*xc-x, 2*yc-y, color);
-
- /* unlock surface */
- if (SDL_MUSTLOCK(surface) )
- SDL_UnlockSurface(surface);
-
- raster_vline(surface, x, y+1, 2*yc-y-1, color);
-
- int i;
-
- for (i = 1; i <= dxt; i++)
- {
- x--;
- d += t - b2;
-
- if (d >= 0)
- ys = y - 1;
- else if ((d - s - a2) > 0)
- {
- if ((2 * d - s - a2) >= 0)
- ys = y + 1;
- else
- {
- ys = y;
- y++;
- d -= s + a2;
- s += ds;
- }
- }
- else
- {
- y++;
- ys = y + 1;
- d -= s + a2;
- s += ds;
- }
-
- t -= dt;
-
- /* Calculate alpha */
- cp = (float) abs(d) / abs(s);
- is = cp * imax;
- ip = imax - is;
-
-
- /* Lock surface */
- if ( SDL_MUSTLOCK(surface) )
- if ( SDL_LockSurface(surface) < 0 )
- return;
-
- /* Upper half */
- raster_PutPixelAlpha(surface, x, y, color, (Uint8)(ip*255));
- raster_PutPixelAlpha(surface, 2*xc-x, y, color, (Uint8)(ip*255));
-
- raster_PutPixelAlpha(surface, x, ys, color, (Uint8)(is*255));
- raster_PutPixelAlpha(surface, 2*xc-x, ys, color, (Uint8)(is*255));
-
-
- /* Lower half */
- raster_PutPixelAlpha(surface, x, 2*yc-y, color, (Uint8)(ip*255));
- raster_PutPixelAlpha(surface, 2*xc-x, 2*yc-y, color, (Uint8)(ip*255));
-
- raster_PutPixelAlpha(surface, x, 2*yc-ys, color, (Uint8)(is*255));
- raster_PutPixelAlpha(surface, 2*xc-x, 2*yc-ys, color, (Uint8)(is*255));
-
- /* unlock surface */
- if (SDL_MUSTLOCK(surface) )
- SDL_UnlockSurface(surface);
-
-
- /* Fill */
- raster_vline(surface, x, y+1, 2*yc-y-1, color);
- raster_vline(surface, 2*xc-x, y+1, 2*yc-y-1, color);
- raster_vline(surface, x, ys+1, 2*yc-ys-1, color);
- raster_vline(surface, 2*xc-x, ys+1, 2*yc-ys-1, color);
- }
-
- dyt = abs(y - yc);
-
- for (i = 1; i <= dyt; i++)
- {
- y++;
- d -= s + a2;
-
- if (d <= 0)
- xs = x + 1;
- else if ((d + t - b2) < 0)
- {
- if ((2 * d + t - b2) <= 0)
- xs = x - 1;
- else
- {
- xs = x;
- x--;
- d += t - b2;
- t -= dt;
- }
- }
- else
- {
- x--;
- xs = x - 1;
- d += t - b2;
- t -= dt;
- }
-
- s += ds;
-
- /* Calculate alpha */
- cp = (float) abs(d) / abs(t);
- is = cp * imax;
- ip = imax - is;
-
-
- /* Lock surface */
- if ( SDL_MUSTLOCK(surface) )
- if ( SDL_LockSurface(surface) < 0 )
- return;
-
- /* Upper half */
- raster_PutPixelAlpha(surface, x, y, color, (Uint8)(ip*255));
- raster_PutPixelAlpha(surface, 2*xc-x, y, color, (Uint8)(ip*255));
-
- raster_PutPixelAlpha(surface, xs, y, color, (Uint8)(is*255));
- raster_PutPixelAlpha(surface, 2*xc-xs, y, color, (Uint8)(is*255));
-
-
- /* Lower half*/
- raster_PutPixelAlpha(surface, x, 2*yc-y, color, (Uint8)(ip*255));
- raster_PutPixelAlpha(surface, 2*xc-x, 2*yc-y, color, (Uint8)(ip*255));
-
- raster_PutPixelAlpha(surface, xs, 2*yc-y, color, (Uint8)(is*255));
- raster_PutPixelAlpha(surface, 2*xc-xs, 2*yc-y, color, (Uint8)(is*255));
-
- /* unlock surface */
- if (SDL_MUSTLOCK(surface) )
- SDL_UnlockSurface(surface);
-
- /* Fill */
- raster_hline(surface, x+1, 2*xc-x-1, y, color);
- raster_hline(surface, xs+1, 2*xc-xs-1, y, color);
- raster_hline(surface, x+1, 2*xc-x-1, 2*yc-y, color);
- raster_hline(surface, xs+1, 2*xc-xs-1, 2*yc-y, color);
- }
-}
-
-void raster_aacircle(SDL_Surface *s, int16_t x, int16_t y, int16_t r, uint32_t col)
-{
- raster_AAFilledEllipse(s, x, y, r, r, col);
-}
-
-#if 0
-void raster_aacircle(SDL_Surface *s, int16_t x, int16_t y, int16_t r, uint32_t col)
-{
- /* sdl-gfx */
- Sint16 left, right, top, bottom;
- int result;
- Sint16 x1, y1, x2, y2;
- Sint16 cx = 0;
- Sint16 cy = r;
- Sint16 ocx = (Sint16) 0xffff;
- Sint16 ocy = (Sint16) 0xffff;
- Sint16 df = 1 - r;
- Sint16 d_e = 3;
- Sint16 d_se = -2 * r + 5;
- Sint16 xpcx, xmcx, xpcy, xmcy;
- Sint16 ypcy, ymcy, ypcx, ymcx;
-
- /*
- * Check visibility of clipping rectangle
- */
- if ((dst->clip_rect.w==0) || (dst->clip_rect.h==0)) {
- return;
- }
-
- /*
- * Sanity check radius
- */
- if (r < 0) {
- return;
- }
-
-#if 0
- /*
- * Special case for r=0 - draw a point
- */
- if (r == 0) {
- return (pixelColor(dst, x, y, color));
- }
-#endif
-
- /*
- * Get circle and clipping boundary and
- * test if bounding box of circle is visible
- */
- x2 = x + r;
- left = dst->clip_rect.x;
- if (x2<left) {
- return;
- }
- x1 = x - r;
- right = dst->clip_rect.x + dst->clip_rect.w - 1;
- if (x1>right) {
- return;
- }
- y2 = y + r;
- top = dst->clip_rect.y;
- if (y2<top) {
- return;
- }
- y1 = y - r;
- bottom = dst->clip_rect.y + dst->clip_rect.h - 1;
- if (y1>bottom) {
- return;
- }
-
- /*
- * Draw
- */
- result = 0;
- do {
- xpcx = x + cx;
- xmcx = x - cx;
- xpcy = x + cy;
- xmcy = x - cy;
- if (ocy != cy) {
- if (cy > 0) {
- ypcy = y + cy;
- ymcy = y - cy;
- raster_hlineColor(dst, xmcx, xpcx, ypcy, color);
- raster_hlineColor(dst, xmcx, xpcx, ymcy, color);
-// raster_rect_inline(dst, xmcx, ypcy, 2*cx, 1, color);
-// raster_rect_inline(dst, xmcx, ymcy, 2*cx, 1, color);
-
- } else {
- raster_hlineColor(dst, xmcx, xpcx, y, color);
-// raster_rect_inline(dst, xmcx, y, 2*cx, 1, color);
- }
- ocy = cy;
- }
- if (ocx != cx) {
- if (cx != cy) {
- if (cx > 0) {
- ypcx = y + cx;
- ymcx = y - cx;
- raster_hlineColor(dst, xmcy, xpcy, ymcx, color);
- raster_hlineColor(dst, xmcy, xpcy, ypcx, color);
- //raster_rect_inline(dst, xmcy, ymcx, 2*cy, 1, color);
- //raster_rect_inline(dst, xmcy, ypcx, 2*cy, 1, color);
- } else {
- raster_hlineColor(dst, xmcy, xpcy, y, color);
- //raster_rect_inline(dst, xmcy, y, 2*cy, 1, color);
- }
- }
- ocx = cx;
- }
- /*
- * Update
- */
- if (df < 0) {
- df += d_e;
- d_e += 2;
- d_se += 2;
- } else {
- df += d_se;
- d_e += 2;
- d_se += 4;
- cy--;
- }
- cx++;
- } while (cx <= cy);
-#if 0
- /* sge */
- Sint16 cx = 0;
- Sint16 cy = r;
- int draw=1;
- Sint16 df = 1 - r;
- Sint16 d_e = 3;
- Sint16 d_se = -2 * r + 5;
-
-#ifdef DEBUG
- printf("raster_circle %d %d %d\n", x, y, r);
-#endif
-
- if(r < 0)
- {
- return;
- }
-
- do {
- if(draw)
- {
- raster_rect_inline(s, x-cx, y+cy, 2*cx, 1, col);
- raster_rect_inline(s, x-cx, y-cy, 2*cx, 1, col);
- draw=0;
- }
- if(cx!=cy)
- {
- if(cx)
- {
- raster_rect_inline(s, x-cy, y-cx, 2*cy, 1, col);
- raster_rect_inline(s, x-cy, y+cx, 2*cy, 1, col);
- }
- else
- {
- raster_rect_inline(s, x-cy, y, 2*cy, 1, col);
- }
- }
-
- if (df < 0)
- {
- df += d_e;
- d_e += 2;
- d_se += 2;
- }
- else
- {
- df += d_se;
- d_e += 2;
- d_se += 4;
- cy--;
- draw=1;
- }
- cx++;
- } while(cx <= cy);
-#endif
-}
-#endif
-
-
-
-/* raster :: poly */
-
-
-/* ---- Filled Polygon */
-
-/* Helper qsort callback for polygon drawing */
-
-static int gfxPrimitivesCompareInt(const void *a, const void *b)
-{
- return (*(const int *) a) - (*(const int *) b);
-}
-
-
-/* Global vertex array to use if optional parameters are not given in polygon calls. */
-static int *gfxPrimitivesPolyIntsGlobal = NULL;
-static int gfxPrimitivesPolyAllocatedGlobal = 0;
-
-/* (Note: The last two parameters are optional; but required for multithreaded operation.) */
-
-static inline int raster_filledPolygonColorMT(SDL_Surface * dst, const Sint16 * vx, const Sint16 * vy, int n, Uint32 color, int **polyInts, int *polyAllocated)
-{
- /* sdl-gfx */
- int result;
- int i;
- int y, xa, xb;
- int miny, maxy;
- int x1, y1;
- int x2, y2;
- int ind1, ind2;
- int ints;
- int *gfxPrimitivesPolyInts = NULL;
- int gfxPrimitivesPolyAllocated = 0;
-
- /*
- * Check visibility of clipping rectangle
- */
- if ((dst->clip_rect.w==0) || (dst->clip_rect.h==0)) {
- return(0);
- }
-
- /*
- * Sanity check number of edges
- */
- if (n < 3) {
- return -1;
- }
-
- /*
- * Map polygon cache
- */
- if ((polyInts==NULL) || (polyAllocated==NULL)) {
- /* Use global cache */
- gfxPrimitivesPolyInts = gfxPrimitivesPolyIntsGlobal;
- gfxPrimitivesPolyAllocated = gfxPrimitivesPolyAllocatedGlobal;
- } else {
- /* Use local cache */
- gfxPrimitivesPolyInts = *polyInts;
- gfxPrimitivesPolyAllocated = *polyAllocated;
- }
-
- /*
- * Allocate temp array, only grow array
- */
- if (!gfxPrimitivesPolyAllocated) {
- gfxPrimitivesPolyInts = (int *) malloc(sizeof(int) * n);
- gfxPrimitivesPolyAllocated = n;
- } else {
- if (gfxPrimitivesPolyAllocated < n) {
- gfxPrimitivesPolyInts = (int *) realloc(gfxPrimitivesPolyInts, sizeof(int) * n);
- gfxPrimitivesPolyAllocated = n;
- }
- }
-
- /*
- * Check temp array
- */
- if (gfxPrimitivesPolyInts==NULL) {
- gfxPrimitivesPolyAllocated = 0;
- }
-
- /*
- * Update cache variables
- */
- if ((polyInts==NULL) || (polyAllocated==NULL)) {
- gfxPrimitivesPolyIntsGlobal = gfxPrimitivesPolyInts;
- gfxPrimitivesPolyAllocatedGlobal = gfxPrimitivesPolyAllocated;
- } else {
- *polyInts = gfxPrimitivesPolyInts;
- *polyAllocated = gfxPrimitivesPolyAllocated;
- }
-
- /*
- * Check temp array again
- */
- if (gfxPrimitivesPolyInts==NULL) {
- return(-1);
- }
-
- /*
- * Determine Y maxima
- */
- miny = vy[0];
- maxy = vy[0];
- for (i = 1; (i < n); i++) {
- if (vy[i] < miny) {
- miny = vy[i];
- } else if (vy[i] > maxy) {
- maxy = vy[i];
- }
- }
-
- /*
- * Draw, scanning y
- */
- result = 0;
- for (y = miny; (y <= maxy); y++) {
- ints = 0;
- for (i = 0; (i < n); i++) {
- if (!i) {
- ind1 = n - 1;
- ind2 = 0;
- } else {
- ind1 = i - 1;
- ind2 = i;
- }
- y1 = vy[ind1];
- y2 = vy[ind2];
- if (y1 < y2) {
- x1 = vx[ind1];
- x2 = vx[ind2];
- } else if (y1 > y2) {
- y2 = vy[ind1];
- y1 = vy[ind2];
- x2 = vx[ind1];
- x1 = vx[ind2];
- } else {
- continue;
- }
- if ( ((y >= y1) && (y < y2)) || ((y == maxy) && (y > y1) && (y <= y2)) ) {
- gfxPrimitivesPolyInts[ints++] = ((65536 * (y - y1)) / (y2 - y1)) * (x2 - x1) + (65536 * x1);
- }
- }
-
- qsort(gfxPrimitivesPolyInts, ints, sizeof(int), gfxPrimitivesCompareInt);
-
- for (i = 0; (i < ints); i += 2) {
- xa = gfxPrimitivesPolyInts[i] + 1;
- xa = (xa >> 16) + ((xa & 32768) >> 15);
- xb = gfxPrimitivesPolyInts[i+1] - 1;
- xb = (xb >> 16) + ((xb & 32768) >> 15);
- raster_hline(dst, xa, xb, y, color);
-// raster_rect_inline(dst, xa, y, xb - xa, 1, color);
- }
- }
-
- return (result);
-}
-
-void raster_polygon(SDL_Surface *s, int16_t n, int16_t *vx, int16_t *vy, uint32_t col)
-{
- raster_filledPolygonColorMT(s, vx, vy, n, col, NULL, NULL);
-}
-
-
-void raster_aapolygon(SDL_Surface *dst, int16_t n, int16_t *vx, int16_t *vy, uint32_t color)
-{
- /* sdl-gfx + sge w/ rphlx changes: basically, draw aaline border,
- then fill.
-
- the output is not perfect yet but usually looks better than aliasing
- */
- int i;
- int y, xa, xb;
- int miny, maxy;
- int x1, y1;
- int x2, y2;
- int ind1, ind2;
- int ints;
- int *gfxPrimitivesPolyInts = NULL;
- int gfxPrimitivesPolyAllocated = 0;
- const Sint16 *px1, *py1, *px2, *py2;
- int **polyInts;
- int *polyAllocated;
-
- polyInts = NULL;
- polyAllocated = NULL;
-
- /*
- * Check visibility of clipping rectangle
- */
- if ((dst->clip_rect.w==0) || (dst->clip_rect.h==0)) {
- return;
- }
-
- /*
- * Sanity check number of edges
- */
- if (n < 3) {
- return;
- }
-
-
- /*
- * Pointer setup
- */
- px1 = px2 = vx;
- py1 = py2 = vy;
- px2++;
- py2++;
-
- /*
- * Draw
- */
- for (i = 1; i < n; i++) {
- raster_aalineColorInt(dst, *px1, *py1, *px2, *py2, color, 0);
- px1 = px2;
- py1 = py2;
- px2++;
- py2++;
- }
- raster_aalineColorInt(dst, *px1, *py1, *vx, *vy, color, 0);
-
- /*
- * Map polygon cache
- */
- if ((polyInts==NULL) || (polyAllocated==NULL)) {
- /* Use global cache */
- gfxPrimitivesPolyInts = gfxPrimitivesPolyIntsGlobal;
- gfxPrimitivesPolyAllocated = gfxPrimitivesPolyAllocatedGlobal;
- } else {
- /* Use local cache */
- gfxPrimitivesPolyInts = *polyInts;
- gfxPrimitivesPolyAllocated = *polyAllocated;
- }
-
- /*
- * Allocate temp array, only grow array
- */
- if (!gfxPrimitivesPolyAllocated) {
- gfxPrimitivesPolyInts = (int *) malloc(sizeof(int) * n);
- gfxPrimitivesPolyAllocated = n;
- } else {
- if (gfxPrimitivesPolyAllocated < n) {
- gfxPrimitivesPolyInts = (int *) realloc(gfxPrimitivesPolyInts, sizeof(int) * n);
- gfxPrimitivesPolyAllocated = n;
- }
- }
-
- /*
- * Check temp array
- */
- if (gfxPrimitivesPolyInts==NULL) {
- gfxPrimitivesPolyAllocated = 0;
- }
-
- /*
- * Update cache variables
- */
- if ((polyInts==NULL) || (polyAllocated==NULL)) {
- gfxPrimitivesPolyIntsGlobal = gfxPrimitivesPolyInts;
- gfxPrimitivesPolyAllocatedGlobal = gfxPrimitivesPolyAllocated;
- } else {
- *polyInts = gfxPrimitivesPolyInts;
- *polyAllocated = gfxPrimitivesPolyAllocated;
- }
-
- /*
- * Check temp array again
- */
- if (gfxPrimitivesPolyInts==NULL) {
- return;
- }
-
- /*
- * Determine Y maxima
- */
- miny = vy[0];
- maxy = vy[0];
- for (i = 1; (i < n); i++) {
- if (vy[i] < miny) {
- miny = vy[i];
- } else if (vy[i] > maxy) {
- maxy = vy[i];
- }
- }
-
- /*
- * Draw, scanning y
- */
- for (y = miny; (y <= maxy); y++) {
- ints = 0;
- for (i = 0; (i < n); i++) {
- if (!i) {
- ind1 = n - 1;
- ind2 = 0;
- } else {
- ind1 = i - 1;
- ind2 = i;
- }
- y1 = vy[ind1];
- y2 = vy[ind2];
- if (y1 < y2) {
- x1 = vx[ind1];
- x2 = vx[ind2];
- } else if (y1 > y2) {
- y2 = vy[ind1];
- y1 = vy[ind2];
- x2 = vx[ind1];
- x1 = vx[ind2];
- } else {
- continue;
- }
- if ( ((y >= y1) && (y < y2)) || ((y == maxy) && (y > y1) && (y <= y2)) ) {
- gfxPrimitivesPolyInts[ints++] = ((65536 * (y - y1)) / (y2 - y1)) * (x2 - x1) + (65536 * x1);
- }
- }
-
- qsort(gfxPrimitivesPolyInts, ints, sizeof(int), gfxPrimitivesCompareInt);
-
-// o = p = -1;
- for (i = 0; (i < ints); i +=2) {
-#if 0
- xa = gfxPrimitivesPolyInts[i] + 1;
- xa = (xa >> 16) + ((xa & 32768) >> 15);
- xb = gfxPrimitivesPolyInts[i+1] - 1;
- xb = (xb >> 16) + ((xb & 32768) >> 15);
-#else
- xa = (gfxPrimitivesPolyInts[i] >> 16);
- xb = (gfxPrimitivesPolyInts[i+1] >> 16);
-#endif
-
-#if 0
- if(o < 0)
- {
- o = xa+1;
- }
- else if(p < 0)
- {
- p = xa;
- }
-
- if( (o >= 0) && (p >= 0))
- {
- if(p-o < 0)
- {
- o = p = -1;
- continue;
- }
-
- raster_hlineColor(dst, o, p, y, color);
-
- o = p = -1;
- }
-#else
-
- raster_hline(dst, xa+1, xb, y, color);
-#endif
-
-// raster_rect_inline(dst, xa, y, xb - xa, 1, color);
- }
- }
-}
-
diff --git a/navit/graphics/sdl/raster.h b/navit/graphics/sdl/raster.h
deleted file mode 100644
index 8f50b2715..000000000
--- a/navit/graphics/sdl/raster.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* raster.h -- line/rect/circle/poly rasterization
-
- copyright (c) 2008 bryan rittmeyer <bryanr@bryanr.org>
-
- license: LGPLv2
-*/
-
-#ifndef __RASTER_H
-#define __RASTER_H
-
-#include <stdint.h>
-#include <SDL/SDL.h>
-
-void raster_rect(SDL_Surface *s, int16_t x, int16_t y, int16_t w, int16_t h, uint32_t col);
-
-void raster_line(SDL_Surface *s, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint32_t col);
-void raster_circle(SDL_Surface *s, int16_t x, int16_t y, int16_t r, uint32_t col);
-void raster_polygon(SDL_Surface *s, int16_t n, int16_t *vx, int16_t *vy, uint32_t col);
-
-void raster_aaline(SDL_Surface *s, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint32_t col);
-void raster_aacircle(SDL_Surface *s, int16_t x, int16_t y, int16_t r, uint32_t col);
-void raster_aapolygon(SDL_Surface *s, int16_t n, int16_t *vx, int16_t *vy, uint32_t col);
-
-#endif /* __RASTER_H */
-
diff --git a/navit/graphics/win32/CMakeLists.txt b/navit/graphics/win32/CMakeLists.txt
deleted file mode 100644
index 68013dbd5..000000000
--- a/navit/graphics/win32/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(graphics_win32 graphics_win32.c xpm2bmp.c)
diff --git a/navit/graphics/win32/graphics_win32.c b/navit/graphics/win32/graphics_win32.c
deleted file mode 100644
index 3d8fa351d..000000000
--- a/navit/graphics/win32/graphics_win32.c
+++ /dev/null
@@ -1,1850 +0,0 @@
-#include <windows.h>
-#include <windowsx.h>
-#include <wingdi.h>
-#include <glib.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include "config.h"
-#include "debug.h"
-#include "point.h"
-#include "graphics.h"
-#include "color.h"
-#include "callback.h"
-#include "plugin.h"
-#include "item.h"
-#include "window.h"
-#include "graphics_win32.h"
-#include "xpm2bmp.h"
-#include "support/win32/ConvertUTF.h"
-#include "profile.h"
-#include "keys.h"
-
-#ifdef HAVE_API_WIN32_CE
-#include "libc.h"
-#endif
-
-//#define FAST_TRANSPARENCY 1
-
-#if defined(_WIN32_WCE) && _WIN32_WCE < 0x500 && !defined(__MINGW32CE__)
-
-typedef struct {
- int BlendOp;
- int BlendFlags;
- int SourceConstantAlpha;
- int AlphaFormat;
-} BLENDFUNCTION;
-
-#define AC_SRC_OVER 1
-#define AC_SRC_ALPHA 2
-#endif
-
-#ifndef STRETCH_HALFTONE
-#define STRETCH_HALFTONE 4
-#endif
-
-typedef BOOL (WINAPI *FP_AlphaBlend) ( HDC hdcDest,
- int nXOriginDest,
- int nYOriginDest,
- int nWidthDest,
- int nHeightDest,
- HDC hdcSrc,
- int nXOriginSrc,
- int nYOriginSrc,
- int nWidthSrc,
- int nHeightSrc,
- BLENDFUNCTION blendFunction
- );
-
-typedef int (WINAPI *FP_SetStretchBltMode) (HDC dc,int mode);
-
-struct graphics_priv
-{
- struct navit *nav;
- struct window window;
- struct point p;
- int x;
- int y;
- int width;
- int height;
- int frame;
- int disabled;
- HANDLE wnd_parent_handle;
- HANDLE wnd_handle;
- COLORREF bg_color;
- struct callback_list *cbl;
- enum draw_mode_num mode;
- struct graphics_priv* parent;
- struct graphics_priv *overlays;
- struct graphics_priv *next;
- struct color transparent_color;
- DWORD* pPixelData;
- HDC hMemDC;
- HDC hPrebuildDC;
- HBITMAP hBitmap;
- HBITMAP hPrebuildBitmap;
- HBITMAP hOldBitmap;
- HBITMAP hOldPrebuildBitmap;
- FP_AlphaBlend AlphaBlend;
- FP_SetStretchBltMode SetStretchBltMode;
- BOOL (WINAPI *ChangeWindowMessageFilter)(UINT message, DWORD dwFlag);
- BOOL (WINAPI *ChangeWindowMessageFilterEx)( HWND hWnd, UINT message, DWORD action, void *pChangeFilterStruct);
- HANDLE hCoreDll;
- HANDLE hUser32Dll;
- HANDLE hGdi32Dll;
- GHashTable *image_cache_hash;
-};
-
-struct window_priv
-{
- HANDLE hBackLight;
-};
-
-static HWND g_hwnd = NULL;
-
-#ifdef HAVE_API_WIN32_CE
-static int fullscr = 0;
-#endif
-
-
-#ifndef GET_WHEEL_DELTA_WPARAM
-#define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
-#endif
-
-
-HFONT EzCreateFont (HDC hdc, TCHAR * szFaceName, int iDeciPtHeight,
- int iDeciPtWidth, int iAttributes, BOOL fLogRes) ;
-
-#define EZ_ATTR_BOLD 1
-#define EZ_ATTR_ITALIC 2
-#define EZ_ATTR_UNDERLINE 4
-#define EZ_ATTR_STRIKEOUT 8
-
-HFONT EzCreateFont (HDC hdc, TCHAR * szFaceName, int iDeciPtHeight,
- int iDeciPtWidth, int iAttributes, BOOL fLogRes)
-{
- FLOAT cxDpi, cyDpi ;
- HFONT hFont ;
- LOGFONT lf ;
- POINT pt ;
- TEXTMETRIC tm ;
-
- SaveDC (hdc) ;
-
-#ifndef HAVE_API_WIN32_CE
- SetGraphicsMode (hdc, GM_ADVANCED) ;
- ModifyWorldTransform (hdc, NULL, MWT_IDENTITY) ;
-#endif
- SetViewportOrgEx (hdc, 0, 0, NULL) ;
-#ifndef HAVE_API_WIN32_CE
- SetWindowOrgEx (hdc, 0, 0, NULL) ;
-#endif
-
- if (fLogRes)
- {
- cxDpi = (FLOAT) GetDeviceCaps (hdc, LOGPIXELSX) ;
- cyDpi = (FLOAT) GetDeviceCaps (hdc, LOGPIXELSY) ;
- }
- else
- {
- cxDpi = (FLOAT) (25.4 * GetDeviceCaps (hdc, HORZRES) /
- GetDeviceCaps (hdc, HORZSIZE)) ;
-
- cyDpi = (FLOAT) (25.4 * GetDeviceCaps (hdc, VERTRES) /
- GetDeviceCaps (hdc, VERTSIZE)) ;
- }
-
- pt.x = (int) (iDeciPtWidth * cxDpi / 72) ;
- pt.y = (int) (iDeciPtHeight * cyDpi / 72) ;
-
-#ifndef HAVE_API_WIN32_CE
- DPtoLP (hdc, &pt, 1) ;
-#endif
- lf.lfHeight = - (int) (fabs (pt.y) / 10.0 + 0.5) ;
- lf.lfWidth = 0 ;
- lf.lfEscapement = 0 ;
- lf.lfOrientation = 0 ;
- lf.lfWeight = iAttributes & EZ_ATTR_BOLD ? 700 : 0 ;
- lf.lfItalic = iAttributes & EZ_ATTR_ITALIC ? 1 : 0 ;
- lf.lfUnderline = iAttributes & EZ_ATTR_UNDERLINE ? 1 : 0 ;
- lf.lfStrikeOut = iAttributes & EZ_ATTR_STRIKEOUT ? 1 : 0 ;
- lf.lfCharSet = DEFAULT_CHARSET ;
- lf.lfOutPrecision = 0 ;
- lf.lfClipPrecision = 0 ;
- lf.lfQuality = 0 ;
- lf.lfPitchAndFamily = 0 ;
-
- lstrcpy (lf.lfFaceName, szFaceName) ;
-
- hFont = CreateFontIndirect (&lf) ;
-
- if (iDeciPtWidth != 0)
- {
- hFont = (HFONT) SelectObject (hdc, hFont) ;
-
- GetTextMetrics (hdc, &tm) ;
-
- DeleteObject (SelectObject (hdc, hFont)) ;
-
- lf.lfWidth = (int) (tm.tmAveCharWidth *
- fabs (pt.x) / fabs (pt.y) + 0.5) ;
-
- hFont = CreateFontIndirect (&lf) ;
- }
-
- RestoreDC (hdc, -1) ;
- return hFont ;
-}
-
-struct graphics_image_priv
-{
- PXPM2BMP pxpm;
- int width,height,row_bytes,channels;
- unsigned char *png_pixels;
- HBITMAP hBitmap;
- struct point hot;
-};
-
-
-static void ErrorExit(LPTSTR lpszFunction)
-{
- // Retrieve the system error message for the last-error code
-
- LPVOID lpMsgBuf;
- LPVOID lpDisplayBuf;
- DWORD dw = GetLastError();
-
- FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- dw,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &lpMsgBuf,
- 0, NULL );
-
- lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
- (lstrlen((LPCTSTR)lpMsgBuf)+lstrlen((LPCTSTR)lpszFunction)+40)*sizeof(TCHAR));
- _tprintf((LPTSTR)lpDisplayBuf, TEXT("%s failed with error %d: %s"), lpszFunction, dw, lpMsgBuf);
-
- dbg(lvl_error, "%s failed with error %d: %s", lpszFunction, dw, lpMsgBuf);
- MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK);
-
- LocalFree(lpMsgBuf);
- LocalFree(lpDisplayBuf);
- ExitProcess(dw);
-}
-
-
-
-struct graphics_gc_priv
-{
- HWND hwnd;
- int line_width;
- COLORREF fg_color;
- int fg_alpha;
- int bg_alpha;
- COLORREF bg_color;
- int dashed;
- HPEN hpen;
- HBRUSH hbrush;
- struct graphics_priv *gr;
-};
-
-
-static void create_memory_dc(struct graphics_priv *gr)
-{
- HDC hdc;
- BITMAPINFO bOverlayInfo;
-
- if (gr->hMemDC)
- {
- (void)SelectBitmap(gr->hMemDC, gr->hOldBitmap);
- DeleteBitmap(gr->hBitmap);
- DeleteDC(gr->hMemDC);
-
- (void)SelectBitmap(gr->hPrebuildDC, gr->hOldPrebuildBitmap);
- DeleteBitmap(gr->hPrebuildBitmap);
- DeleteDC(gr->hPrebuildDC);
- gr->hPrebuildDC = 0;
- }
-
-
- hdc = GetDC( gr->wnd_handle );
- // Creates memory DC
- gr->hMemDC = CreateCompatibleDC(hdc);
- dbg(lvl_debug, "resize memDC to: %d %d \n", gr->width, gr->height );
-
-
-#ifndef FAST_TRANSPARENCY
-
- memset(&bOverlayInfo, 0, sizeof(BITMAPINFO));
- bOverlayInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- bOverlayInfo.bmiHeader.biWidth = gr->width;
- bOverlayInfo.bmiHeader.biHeight = -gr->height;
- bOverlayInfo.bmiHeader.biBitCount = 32;
- bOverlayInfo.bmiHeader.biCompression = BI_RGB;
- bOverlayInfo.bmiHeader.biPlanes = 1;
- gr->hPrebuildDC = CreateCompatibleDC(NULL);
- gr->hPrebuildBitmap = CreateDIBSection(gr->hMemDC, &bOverlayInfo, DIB_RGB_COLORS , (void **)&gr->pPixelData, NULL, 0);
- gr->hOldPrebuildBitmap = SelectBitmap(gr->hPrebuildDC, gr->hPrebuildBitmap);
-
-#endif
- gr->hBitmap = CreateCompatibleBitmap(hdc, gr->width, gr->height );
-
- if ( gr->hBitmap )
- {
- gr->hOldBitmap = SelectBitmap( gr->hMemDC, gr->hBitmap);
- }
- ReleaseDC( gr->wnd_handle, hdc );
-}
-
-static void HandleButtonClick( struct graphics_priv *gra_priv, int updown, int button, long lParam )
-{
- struct point pt = { LOWORD(lParam), HIWORD(lParam) };
- callback_list_call_attr_3(gra_priv->cbl, attr_button, (void *)updown, (void *)button, (void *)&pt);
-}
-
-static void HandleKeyChar(struct graphics_priv *gra_priv, WPARAM wParam)
-{
- TCHAR key = (TCHAR) wParam;
- char *s=NULL;
- char k[]={0,0};
- dbg(lvl_debug,"HandleKey %d\n",key);
- switch (key) {
- default:
- k[0]=key;
- s=k;
- break;
- }
- if (s)
- callback_list_call_attr_1(gra_priv->cbl, attr_keypress, (void *)s);
-}
-
-static void HandleKeyDown(struct graphics_priv *gra_priv, WPARAM wParam)
-{
- int key = (int) wParam;
- char up[]={NAVIT_KEY_UP,0};
- char down[]={NAVIT_KEY_DOWN,0};
- char left[]={NAVIT_KEY_LEFT,0};
- char right[]={NAVIT_KEY_RIGHT,0};
- char *s=NULL;
- dbg(lvl_debug,"HandleKey %d\n",key);
- switch (key) {
- case 37:
- s=left;
- break;
- case 38:
- s=up;
- break;
- case 39:
- s=right;
- break;
- case 40:
- s=down;
- break;
- }
- if (s)
- callback_list_call_attr_1(gra_priv->cbl, attr_keypress, (void *)s);
-}
-
-
-static LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
-{
-
- struct graphics_priv* gra_priv = (struct graphics_priv*)GetWindowLongPtr( hwnd , DWLP_USER );
-
- switch (Message)
- {
- case WM_CREATE:
- {
- if ( gra_priv )
- {
- RECT rc ;
-
- GetClientRect( hwnd, &rc );
- gra_priv->width = rc.right;
- gra_priv->height = rc.bottom;
- create_memory_dc(gra_priv);
- }
- }
- break;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case WM_USER + 1:
- break;
- }
- break;
- case WM_CLOSE:
- DestroyWindow(hwnd);
- break;
- case WM_USER+1:
- if ( gra_priv )
- {
- RECT rc ;
-
- GetClientRect( hwnd, &rc );
- gra_priv->width = rc.right;
- gra_priv->height = rc.bottom;
-
- create_memory_dc(gra_priv);
- callback_list_call_attr_2(gra_priv->cbl, attr_resize, (void *)gra_priv->width, (void *)gra_priv->height);
- }
- break;
- case WM_USER+2:
- {
- struct callback_list *cbl = (struct callback_list*)wParam;
-#ifdef HAVE_API_WIN32_CE
- /* FIXME: Reset the idle timer need a better place */
- SystemIdleTimerReset();
-#endif
- callback_list_call_0(cbl);
- }
- break;
-
- case WM_SIZE:
- if ( gra_priv )
- {
- gra_priv->width = LOWORD( lParam );
- gra_priv->height = HIWORD( lParam );
- create_memory_dc(gra_priv);
- dbg(lvl_debug, "resize gfx to: %d %d \n", gra_priv->width, gra_priv->height );
- callback_list_call_attr_2(gra_priv->cbl, attr_resize, (void *)gra_priv->width, (void *)gra_priv->height);
- }
- break;
- case WM_DESTROY:
-#ifdef HAVE_API_WIN32_CE
- if ( gra_priv && gra_priv->window.priv )
- {
- struct window_priv *win_priv = gra_priv->window.priv;
- if (win_priv->hBackLight)
- {
- ReleasePowerRequirement(win_priv->hBackLight);
- }
- }
-#endif
- PostQuitMessage(0);
- break;
- case WM_PAINT:
- if ( gra_priv && gra_priv->hMemDC)
- {
- struct graphics_priv* overlay;
- PAINTSTRUCT ps = { 0 };
- HDC hdc;
- profile(0, NULL);
- dbg(lvl_debug, "WM_PAINT\n");
- overlay = gra_priv->overlays;
-
-#ifndef FAST_TRANSPARENCY
- BitBlt( gra_priv->hPrebuildDC, 0, 0, gra_priv->width , gra_priv->height, gra_priv->hMemDC, 0, 0, SRCCOPY);
-#endif
- while ( !gra_priv->disabled && overlay)
- {
- if ( !overlay->disabled && overlay->p.x >= 0 &&
- overlay->p.y >= 0 &&
- overlay->p.x < gra_priv->width &&
- overlay->p.y < gra_priv->height )
- {
- int x,y;
- int destPixel, srcPixel;
- int h,w;
-#ifdef FAST_TRANSPARENCY
- if ( !overlay->hPrebuildDC )
- {
- overlay->hPrebuildBitmap = CreateBitmap(overlay->width,overlay->height,1,1,NULL);
- overlay->hPrebuildDC = CreateCompatibleDC(NULL);
- overlay->hOldPrebuildBitmap = SelectBitmap( overlay->hPrebuildDC, overlay->hPrebuildBitmap);
- SetBkColor(overlay->hMemDC,RGB(overlay->transparent_color.r >> 8,overlay->transparent_color.g >> 8,overlay->transparent_color.b >> 8));
- BitBlt(overlay->hPrebuildDC,0,0,overlay->width,overlay->height,overlay->hMemDC,0,0,SRCCOPY);
- BitBlt(overlay->hMemDC,0,0,overlay->width,overlay->height,overlay->hPrebuildDC,0,0,SRCINVERT);
- }
-
-#else
- const COLORREF transparent_color = RGB(overlay->transparent_color.r >> 8,overlay->transparent_color.g >> 8,overlay->transparent_color.b >> 8);
-
- BitBlt( overlay->hPrebuildDC, 0, 0, overlay->width , overlay->height, overlay->hMemDC, 0, 0, SRCCOPY);
-
- h=overlay->height;
- w=overlay->width;
- if (w > gra_priv->width-overlay->p.x)
- w=gra_priv->width-overlay->p.x;
- if (h > gra_priv->height-overlay->p.y)
- h=gra_priv->height-overlay->p.y;
- for ( y = 0; y < h ;y++ )
- {
- for ( x = 0; x < w; x++ )
- {
- srcPixel = y*overlay->width+x;
- destPixel = ((overlay->p.y + y) * gra_priv->width) + (overlay->p.x + x);
- if ( overlay->pPixelData[srcPixel] == transparent_color )
- {
- destPixel = ((overlay->p.y + y) * gra_priv->width) + (overlay->p.x + x);
-
- gra_priv->pPixelData[destPixel] = RGB ( ((65535 - overlay->transparent_color.a) * GetRValue(gra_priv->pPixelData[destPixel]) + overlay->transparent_color.a * GetRValue(overlay->pPixelData[srcPixel])) / 65535,
- ((65535 - overlay->transparent_color.a) * GetGValue(gra_priv->pPixelData[destPixel]) + overlay->transparent_color.a * GetGValue(overlay->pPixelData[srcPixel])) / 65535,
- ((65535 - overlay->transparent_color.a) * GetBValue(gra_priv->pPixelData[destPixel]) + overlay->transparent_color.a * GetBValue(overlay->pPixelData[srcPixel])) / 65535);
-
- }
- else
- {
- gra_priv->pPixelData[destPixel] = overlay->pPixelData[srcPixel];
- }
- }
-
- }
-#endif
- }
- overlay = overlay->next;
- }
-
-
-#ifndef FAST_TRANSPARENCY
- hdc = BeginPaint(hwnd, &ps);
- BitBlt( hdc, 0, 0, gra_priv->width , gra_priv->height, gra_priv->hPrebuildDC, 0, 0, SRCCOPY );
-#else
- HDC hdc = BeginPaint(hwnd, &ps);
-
- BitBlt( hdc, 0, 0, gra_priv->width , gra_priv->height, gra_priv->hMemDC, 0, 0, SRCCOPY );
-
- overlay = gra_priv->overlays;
- while ( !gra_priv->disabled && overlay && !overlay->disabled )
- {
- if ( overlay->p.x > 0 &&
- overlay->p.y > 0 &&
- overlay->p.x + overlay->width < gra_priv->width &&
- overlay->p.y + overlay->height < gra_priv->height )
- {
- BitBlt(hdc,overlay->p.x,overlay->p.y,overlay->width,overlay->height,overlay->hPrebuildDC,0,0,SRCAND);
- BitBlt(hdc,overlay->p.x,overlay->p.y,overlay->width,overlay->height,overlay->hMemDC,0,0,SRCPAINT);
- }
- overlay = overlay->next;
- }
-#endif
- EndPaint(hwnd, &ps);
- profile(0, "WM_PAINT\n");
- }
- break;
- case WM_MOUSEMOVE:
- {
- struct point pt = { LOWORD(lParam), HIWORD(lParam) };
- callback_list_call_attr_1(gra_priv->cbl, attr_motion, (void *)&pt);
- }
- break;
-
- case WM_LBUTTONDOWN:
- {
- dbg(lvl_debug, "LBUTTONDOWN\n");
- HandleButtonClick( gra_priv, 1, 1, lParam);
- }
- break;
- case WM_LBUTTONUP:
- {
- dbg(lvl_debug, "LBUTTONUP\n");
- HandleButtonClick( gra_priv, 0, 1, lParam);
- }
- break;
- case WM_RBUTTONDOWN:
- HandleButtonClick( gra_priv, 1, 3,lParam );
- break;
- case WM_RBUTTONUP:
- HandleButtonClick( gra_priv, 0, 3,lParam );
- break;
- case WM_LBUTTONDBLCLK:
- dbg(lvl_debug, "LBUTTONDBLCLK\n");
- HandleButtonClick( gra_priv, 1, 6,lParam );
- break;
- case WM_CHAR:
- HandleKeyChar( gra_priv, wParam);
- break;
- case WM_KEYDOWN:
- HandleKeyDown( gra_priv, wParam);
- break;
- case WM_COPYDATA:
- dbg(lvl_debug,"got WM_COPYDATA\n");
- callback_list_call_attr_2(gra_priv->cbl, attr_wm_copydata, (void *)wParam, (void*)lParam);
- break;
-#ifdef HAVE_API_WIN32_CE
- case WM_SETFOCUS:
- if (fullscr) {
- HWND hwndSip = FindWindow(L"MS_SIPBUTTON", NULL);
- // deactivate the SIP button
- ShowWindow(hwndSip, SW_HIDE);
- }
- break;
- case WM_KILLFOCUS:
- if (fullscr != 1) {
- HWND hwndSip = FindWindow(L"MS_SIPBUTTON", NULL);
- // active the SIP button
- ShowWindow(hwndSip, SW_SHOW);
- }
- break;
-#endif
- default:
- return DefWindowProc(hwnd, Message, wParam, lParam);
- }
- return 0;
-}
-
-static int fullscreen(struct window *win, int on)
-{
-
-#ifdef HAVE_API_WIN32_CE
- HWND hwndTaskbar = FindWindow(L"HHTaskBar", NULL);
- HWND hwndSip = FindWindow(L"MS_SIPBUTTON", NULL);
- RECT taskbar_rect;
- fullscr = on;
- if (on) {
- ShowWindow(hwndTaskbar, SW_HIDE);
- MoveWindow(g_hwnd, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), FALSE);
-
- // deactivate the SIP button
- ShowWindow(hwndSip, SW_HIDE);
-
- } else {
- ShowWindow(hwndTaskbar, SW_SHOW);
- GetWindowRect( hwndTaskbar, &taskbar_rect);
- MoveWindow(g_hwnd, 0, taskbar_rect.bottom, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN) - taskbar_rect.bottom, FALSE);
-
- // activate the SIP button
- ShowWindow(hwndSip, SW_SHOW);
- }
-
-#else
- if (on) {
- ShowWindow(g_hwnd, SW_MAXIMIZE);
- } else {
- ShowWindow(g_hwnd, SW_RESTORE);
- }
-
-#endif
-
- return 0;
-}
-
-extern void WINAPI SystemIdleTimerReset(void);
-static struct event_timeout *
- event_win32_add_timeout(int timeout, int multi, struct callback *cb);
-
-static void disable_suspend(struct window *win)
-{
-#ifdef HAVE_API_WIN32_CE
- struct window_priv *win_priv = win->priv;
- if ( win_priv && !win_priv->hBackLight )
- {
- win_priv->hBackLight = SetPowerRequirement(TEXT("BKL1:"), 0, 0x01, NULL, 0);
- event_win32_add_timeout(29000, 1, callback_new(SystemIdleTimerReset, 0, NULL));
- }
-
- SystemIdleTimerReset();
-#endif
-}
-
-static const TCHAR g_szClassName[] = {'N','A','V','G','R','A','\0'};
-
-static HANDLE CreateGraphicsWindows( struct graphics_priv* gr, HMENU hMenu )
-{
- int wStyle = WS_VISIBLE;
- HWND hwnd;
-#ifdef HAVE_API_WIN32_CE
- WNDCLASS wc;
-#else
- WNDCLASSEX wc;
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.hIconSm = NULL;
-#endif
-
- wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
- wc.lpfnWndProc = WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 64;
- wc.hInstance = GetModuleHandle(NULL);
- wc.hIcon = NULL;
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = g_szClassName;
-
-
-#ifdef HAVE_API_WIN32_CE
- gr->width = GetSystemMetrics(SM_CXSCREEN);
- gr->height = GetSystemMetrics(SM_CYSCREEN);
-
-#if 0
- HWND hwndTaskbar = FindWindow(L"HHTaskBar", NULL);
- RECT taskbar_rect;
- GetWindowRect( hwndTaskbar, &taskbar_rect);
-
- gr->height -= taskbar_rect.bottom;
-#endif
-
-
-
-#endif
-
-#ifdef HAVE_API_WIN32_CE
- if (!RegisterClass(&wc))
-#else
- if (!RegisterClassEx(&wc))
-#endif
- {
- dbg(lvl_error, "Window registration failed\n");
- return NULL;
- }
-
- if(gr->frame)
- {
- if ( hMenu )
- {
- wStyle = WS_CHILD;
- } else {
- wStyle = WS_OVERLAPPED|WS_VISIBLE;
- }
- } else {
- wStyle = WS_VISIBLE | WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
- }
-
-#ifdef HAVE_API_WIN32_CE
- g_hwnd = hwnd = CreateWindow(g_szClassName,
- TEXT("Navit"),
- wStyle,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- gr->wnd_parent_handle,
- hMenu,
- GetModuleHandle(NULL),
- NULL);
-#else
- g_hwnd = hwnd = CreateWindow(g_szClassName,
- TEXT("Navit"),
- wStyle,
- gr->x,
- gr->y,
- gr->width,
- gr->height,
- gr->wnd_parent_handle,
- hMenu,
- GetModuleHandle(NULL),
- NULL);
-#endif
- if (hwnd == NULL)
- {
- dbg(lvl_error, "Window creation failed: %d\n", GetLastError());
- return NULL;
- }
- /* For Vista, we need here ChangeWindowMessageFilter(WM_COPYDATA,MSGFLT_ADD); since Win7 we need above one or ChangeWindowMessageFilterEx (MSDN), both are
- not avail for earlier Win and not present in my mingw :(. ChangeWindowMessageFilter may not be present in later Win versions. Welcome late binding!
- */
- if(gr->ChangeWindowMessageFilter)
- gr->ChangeWindowMessageFilter(WM_COPYDATA,1 /*MSGFLT_ADD*/);
- else if(gr->ChangeWindowMessageFilterEx)
- gr->ChangeWindowMessageFilterEx(hwnd,WM_COPYDATA,1 /*MSGFLT_ALLOW*/,NULL);
-
- gr->wnd_handle = hwnd;
-
- callback_list_call_attr_2(gr->cbl, attr_resize, (void *)gr->width, (void *)gr->height);
- create_memory_dc(gr);
-
- SetWindowLongPtr( hwnd , DWLP_USER, (LONG_PTR)gr );
-
- ShowWindow( hwnd, SW_SHOW );
- UpdateWindow( hwnd );
-
- PostMessage( gr->wnd_parent_handle, WM_USER + 1, 0, 0 );
-
- return hwnd;
-}
-
-
-
-static void graphics_destroy(struct graphics_priv *gr)
-{
- g_free( gr );
-}
-
-
-static void gc_destroy(struct graphics_gc_priv *gc)
-{
- DeleteObject( gc->hpen );
- DeleteObject( gc->hbrush );
- g_free( gc );
-}
-
-static void gc_set_linewidth(struct graphics_gc_priv *gc, int w)
-{
- DeleteObject (gc->hpen);
- gc->line_width = w;
- gc->hpen = CreatePen(gc->dashed?PS_DASH:PS_SOLID, gc->line_width, gc->fg_color );
-}
-
-static void gc_set_dashes(struct graphics_gc_priv *gc, int width, int offset, unsigned char dash_list[], int n)
-{
- gc->dashed=n>0;
- DeleteObject (gc->hpen);
- gc->hpen = CreatePen(gc->dashed?PS_DASH:PS_SOLID, gc->line_width, gc->fg_color );
-// gdk_gc_set_dashes(gc->gc, 0, (gint8 *)dash_list, n);
-// gdk_gc_set_line_attributes(gc->gc, 1, GDK_LINE_ON_OFF_DASH, GDK_CAP_ROUND, GDK_JOIN_ROUND);
-}
-
-
-static void gc_set_foreground(struct graphics_gc_priv *gc, struct color *c)
-{
- gc->fg_color = RGB( c->r >> 8, c->g >> 8, c->b >> 8);
- gc->fg_alpha = c->a;
-
- DeleteObject (gc->hpen);
- DeleteObject (gc->hbrush);
- gc->hpen = CreatePen(gc->dashed?PS_DASH:PS_SOLID, gc->line_width, gc->fg_color );
- gc->hbrush = CreateSolidBrush( gc->fg_color );
- if ( gc->gr && c->a < 0xFFFF )
- {
- gc->gr->transparent_color = *c;
- }
-
-}
-
-static void gc_set_background(struct graphics_gc_priv *gc, struct color *c)
-{
- gc->bg_color = RGB( c->r >> 8, c->g >> 8, c->b >> 8);
- gc->bg_alpha = c->a;
- if ( gc->gr && gc->gr->hMemDC )
- SetBkColor( gc->gr->hMemDC, gc->bg_color );
-
-}
-
-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_new(struct graphics_gc_priv, 1);
- *meth=gc_methods;
- gc->hwnd = gr->wnd_handle;
- gc->line_width = 1;
- gc->fg_color = RGB( 0,0,0 );
- gc->bg_color = RGB( 255,255,255 );
- gc->fg_alpha = 65535;
- gc->bg_alpha = 0;
- gc->dashed=0;
- gc->hpen = CreatePen( PS_SOLID, gc->line_width, gc->fg_color );
- gc->hbrush = CreateSolidBrush( gc->fg_color );
- gc->gr = gr;
- return gc;
-}
-
-
-static void draw_lines(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- int i;
-
- HPEN hpenold = SelectObject( gr->hMemDC, gc->hpen );
- int oldbkmode=SetBkMode( gr->hMemDC, TRANSPARENT);
-
- int first = 1;
- for ( i = 0; i< count; i++ )
- {
- if ( first )
- {
- first = 0;
- MoveToEx( gr->hMemDC, p[0].x, p[0].y, NULL );
- }
- else
- {
- LineTo( gr->hMemDC, p[i].x, p[i].y );
- }
- }
- SetBkMode( gr->hMemDC, oldbkmode);
- SelectObject( gr->hMemDC, hpenold);
-}
-
-static void draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count)
-{
- HPEN holdpen = SelectObject( gr->hMemDC, gc->hpen );
- HBRUSH holdbrush = SelectObject( gr->hMemDC, gc->hbrush );
- if (sizeof(POINT) != sizeof(struct point)) {
- int i;
- POINT* points=g_alloca(sizeof(POINT)*count);
- for ( i=0;i< count; i++ )
- {
- points[i].x = p[i].x;
- points[i].y = p[i].y;
- }
- Polygon( gr->hMemDC, points,count );
- } else
- Polygon( gr->hMemDC, (POINT *)p, count);
- SelectObject( gr->hMemDC, holdbrush);
- SelectObject( gr->hMemDC, holdpen);
-}
-
-
-static void draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h)
-{
- HPEN holdpen = SelectObject( gr->hMemDC, gc->hpen );
- HBRUSH holdbrush = SelectObject( gr->hMemDC, gc->hbrush );
-
- Rectangle(gr->hMemDC, p->x, p->y, p->x+w, p->y+h);
-
- SelectObject( gr->hMemDC, holdbrush);
- SelectObject( gr->hMemDC, holdpen);
-}
-
-static void draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r)
-{
- HPEN holdpen = SelectObject( gr->hMemDC, gc->hpen );
- HBRUSH holdbrush = SelectObject( gr->hMemDC, GetStockObject(NULL_BRUSH));
-
- r=r/2;
-
- Ellipse( gr->hMemDC, p->x - r, p->y -r, p->x + r, p->y + r );
-
- SelectObject( gr->hMemDC, holdbrush);
- SelectObject( gr->hMemDC, holdpen);
-}
-
-
-static void draw_drag(struct graphics_priv *gr, struct point *p)
-{
- if ( p )
- {
- gr->p.x = p->x;
- gr->p.y = p->y;
-
- if ( p->x < 0 || p->y < 0 ||
- ( gr->parent && ((p->x + gr->width > gr->parent->width) || (p->y + gr->height > gr->parent->height) )))
- {
- gr->disabled = TRUE;
- }
- else
- {
- gr->disabled = FALSE;
- }
- }
-}
-
-static void draw_mode(struct graphics_priv *gr, enum draw_mode_num mode)
-{
- dbg(lvl_debug, "set draw_mode to %x, %d\n", gr, (int)mode );
-
- if ( mode == draw_mode_begin )
- {
- if ( gr->wnd_handle == NULL )
- {
- CreateGraphicsWindows( gr, (HMENU)ID_CHILD_GFX );
- }
- if ( gr->mode != draw_mode_begin )
- {
- if ( gr->hMemDC )
- {
- dbg(lvl_debug, "Erase dc: %x, w: %d, h: %d, bg_color: %x\n", gr, gr->width, gr->height, gr->bg_color);
-#ifdef FAST_TRANSPARENCY
- if ( gr->hPrebuildDC )
- {
- (void)SelectBitmap(gr->hPrebuildDC, gr->hOldPrebuildBitmap );
- DeleteBitmap(gr->hPrebuildBitmap);
- DeleteDC(gr->hPrebuildDC);
- gr->hPrebuildDC = 0;
- }
-#endif
- }
- }
-#ifdef FAST_TRANSPARENCY
- else if ( gr->hPrebuildDC )
- {
- (void)SelectBitmap(gr->hPrebuildDC, gr->hOldPrebuildBitmap );
- DeleteBitmap(gr->hPrebuildBitmap);
- DeleteDC(gr->hPrebuildDC);
- gr->hPrebuildDC = 0;
- }
-#endif
- }
-
- // force paint
- if (mode == draw_mode_end && gr->mode == draw_mode_begin)
- {
- InvalidateRect( gr->wnd_handle, NULL, FALSE );
- }
-
- gr->mode=mode;
-
-}
-
-static void * get_data(struct graphics_priv *this_, const char *type)
-{
- if ( strcmp( "wnd_parent_handle_ptr", type ) == 0 )
- {
- return &( this_->wnd_parent_handle );
- }
- if ( strcmp( "START_CLIENT", type ) == 0 )
- {
- CreateGraphicsWindows( this_, (HMENU)ID_CHILD_GFX );
- return NULL;
- }
- if (!strcmp(type, "window"))
- {
- CreateGraphicsWindows( this_ , NULL);
-
- this_->window.fullscreen = fullscreen;
- this_->window.disable_suspend = disable_suspend;
-
- this_->window.priv=g_new0(struct window_priv, 1);
-
- return &this_->window;
- }
- return NULL;
-}
-
-
-static void background_gc(struct graphics_priv *gr, struct graphics_gc_priv *gc)
-{
- RECT rcClient = { 0, 0, gr->width, gr->height };
- HBRUSH bgBrush;
-
- bgBrush = CreateSolidBrush( gc->bg_color );
- gr->bg_color = gc->bg_color;
-
- FillRect( gr->hMemDC, &rcClient, bgBrush );
- DeleteObject( bgBrush );
-}
-
-struct graphics_font_priv
-{
- LOGFONT lf;
- HFONT hfont;
- int size;
-};
-
-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)
-{
- RECT rcClient;
- int prevBkMode;
- HFONT hOldFont;
- double angle;
-
- GetClientRect( gr->wnd_handle, &rcClient );
-
- prevBkMode = SetBkMode( gr->hMemDC, TRANSPARENT );
-
- if ( NULL == font->hfont )
- {
-#ifdef WIN_USE_SYSFONT
- font->hfont = (HFONT) GetStockObject (SYSTEM_FONT);
- GetObject (font->hfont, sizeof (LOGFONT), &font->lf);
-#else
- font->hfont = EzCreateFont (gr->hMemDC, TEXT ("Arial"), font->size/2, 0, 0, TRUE);
- GetObject ( font->hfont, sizeof (LOGFONT), &font->lf) ;
-#endif
- }
-
-
- angle = -atan2( dy, dx ) * 180 / 3.14159 ;
- if (angle < 0)
- angle += 360;
-
- SetTextAlign (gr->hMemDC, TA_BASELINE) ;
- SetViewportOrgEx (gr->hMemDC, p->x, p->y, NULL) ;
- font->lf.lfEscapement = font->lf.lfOrientation = ( angle * 10 ) ;
- DeleteObject (font->hfont) ;
-
- font->hfont = CreateFontIndirect (&font->lf);
- hOldFont = SelectObject(gr->hMemDC, font->hfont );
-
- {
- wchar_t utf16[1024];
- const UTF8 *utf8 = (UTF8 *)text;
- UTF16 *utf16p = (UTF16 *) utf16;
- SetBkMode (gr->hMemDC, TRANSPARENT);
- if (ConvertUTF8toUTF16(&utf8, utf8+strlen(text),
- &utf16p, utf16p+sizeof(utf16),
- lenientConversion) == conversionOK)
- {
- if(bg && bg->fg_alpha) {
- SetTextColor(gr->hMemDC, bg->fg_color);
- ExtTextOutW(gr->hMemDC, -1, -1, 0, NULL,
- utf16, (wchar_t*) utf16p - utf16, NULL);
- ExtTextOutW(gr->hMemDC, 1, 1, 0, NULL,
- utf16, (wchar_t*) utf16p - utf16, NULL);
- ExtTextOutW(gr->hMemDC, -1, 1, 0, NULL,
- utf16, (wchar_t*) utf16p - utf16, NULL);
- ExtTextOutW(gr->hMemDC, 1, -1, 0, NULL,
- utf16, (wchar_t*) utf16p - utf16, NULL);
- }
- SetTextColor(gr->hMemDC, fg->fg_color);
- ExtTextOutW(gr->hMemDC, 0, 0, 0, NULL,
- utf16, (wchar_t*) utf16p - utf16, NULL);
- }
- }
-
-
- SelectObject(gr->hMemDC, hOldFont);
- DeleteObject (font->hfont) ;
-
- SetBkMode( gr->hMemDC, prevBkMode );
-
- SetViewportOrgEx (gr->hMemDC, 0, 0, NULL) ;
-}
-
-static void font_destroy(struct graphics_font_priv *font)
-{
- if ( font->hfont )
- {
- DeleteObject(font->hfont);
- }
- 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 *name, int size, int flags)
-{
- struct graphics_font_priv *font=g_new(struct graphics_font_priv, 1);
- *meth = font_methods;
-
- font->hfont = NULL;
- font->size = size;
-
- return font;
-}
-
-#include "png.h"
-
-static int
-pngdecode(struct graphics_priv *gr, char *name, struct graphics_image_priv *img)
-{
- png_struct *png_ptr = NULL;
- png_info *info_ptr = NULL;
- png_byte buf[8];
- png_byte **row_pointers = NULL;
-
- int bit_depth;
- int color_type;
- int alpha_present;
- int ret;
- int i;
- FILE *png_file;
- BITMAPINFO pnginfo;
- HDC dc;
-
- dbg(lvl_debug,"enter %s\n",name);
- png_file=fopen(name, "rb");
- if (!png_file)
- {
- dbg(lvl_warning,"failed to open %s\n",name);
- return FALSE;
- }
-
-
- /* read and check signature in PNG file */
- ret = fread (buf, 1, 8, png_file);
- if (ret != 8)
- {
- fclose(png_file);
- return FALSE;
- }
-
- ret = png_check_sig (buf, 8);
- if (!ret)
- {
- fclose(png_file);
- return FALSE;
- }
-
- /* create png and info structures */
-
- png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING,
- NULL, NULL, NULL);
- if (!png_ptr)
- {
- fclose(png_file);
- return FALSE; /* out of memory */
- }
-
- info_ptr = png_create_info_struct (png_ptr);
- if (!info_ptr)
- {
- fclose(png_file);
- png_destroy_read_struct (&png_ptr, NULL, NULL);
- return FALSE; /* out of memory */
- }
-
- if (setjmp (png_jmpbuf(png_ptr)))
- {
- fclose(png_file);
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- return FALSE;
- }
-
- /* set up the input control for C streams */
- png_init_io (png_ptr, png_file);
- png_set_sig_bytes (png_ptr, 8); /* we already read the 8 signature bytes */
-
- /* read the file information */
- png_read_info (png_ptr, info_ptr);
-
- /* get size and bit-depth of the PNG-image */
- png_get_IHDR (png_ptr, info_ptr,
- (png_uint_32*)&img->width, (png_uint_32*)&img->height, &bit_depth, &color_type,
- NULL, NULL, NULL);
-
- /* set-up the transformations */
-
- /* transform paletted images into full-color rgb */
- if (color_type == PNG_COLOR_TYPE_PALETTE)
- png_set_palette_to_rgb(png_ptr);
-
- /* expand images to bit-depth 8 (only applicable for grayscale images) */
- if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA && bit_depth < 8)
- png_set_gray_1_2_4_to_8(png_ptr);
-
- /* Expand grayscale to rgb */
- if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- png_set_gray_to_rgb(png_ptr);
-
- /* expand colored images to bit-depth 8 */
- if (color_type == PNG_COLOR_TYPE_RGB && bit_depth < 8)
- png_set_packing(png_ptr);
-
- /* transform transparency maps into full alpha-channel */
- if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
- png_set_tRNS_to_alpha(png_ptr);
-
- /* Add opaque alpha channel if no alpha channel exist */
- if (color_type == PNG_COLOR_TYPE_RGB || color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_PALETTE)
- png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER);
-
- /* Strip the pixels down to 8 bit */
- if (bit_depth == 16)
- png_set_strip_16(png_ptr);
-
- png_set_bgr(png_ptr);
-
- /* all transformations have been registered; now update info_ptr data,
- * get rowbytes, and allocate image memory */
-
- png_read_update_info (png_ptr, info_ptr);
-
- img->channels = 4;
- alpha_present = 1;
-
- /* row_bytes is the width x number of channels x (bit-depth / 8) */
- img->row_bytes = png_get_rowbytes (png_ptr, info_ptr);
-
- memset(&pnginfo, 0, sizeof(pnginfo));
- pnginfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- pnginfo.bmiHeader.biWidth = img->width;
- pnginfo.bmiHeader.biHeight = -img->height;
- pnginfo.bmiHeader.biBitCount = 32;
- pnginfo.bmiHeader.biCompression = BI_RGB;
- pnginfo.bmiHeader.biPlanes = 1;
- dc = CreateCompatibleDC(NULL);
- img->hBitmap = CreateDIBSection(dc, &pnginfo, DIB_RGB_COLORS , (void **)&img->png_pixels, NULL, 0);
- DeleteDC(dc);
-
- if ((row_pointers = (png_byte **) g_malloc (img->height * sizeof (png_bytep))) == NULL)
- {
- fclose(png_file);
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- g_free (img->png_pixels);
- img->png_pixels = NULL;
- img->hBitmap = NULL;
- return FALSE;
- }
-
- /* set the individual row_pointers to point at the correct offsets */
- for (i = 0; i < (img->height); i++)
- row_pointers[i] = img->png_pixels + i * img->row_bytes;
-
- /* now we can go ahead and just read the whole image */
- png_read_image (png_ptr, row_pointers);
-
- /* read rest of file, and get additional chunks in info_ptr - REQUIRED */
- png_read_end (png_ptr, info_ptr);
-
- /* clean up after the read, and free any memory allocated - REQUIRED */
- png_destroy_read_struct (&png_ptr, &info_ptr, (png_infopp) NULL);
-
- if (row_pointers != (unsigned char**) NULL)
- g_free (row_pointers);
- img->hot.x=img->width/2-1;
- img->hot.y=img->height/2-1;
- dbg(lvl_debug,"ok\n");
- fclose(png_file);
- return TRUE;
-
-} /* end of source */
-
-static void pngscale(struct graphics_image_priv *img, struct graphics_priv *gr, int width, int height)
-{
- HBITMAP origBmp;
- BITMAPINFO pnginfo;
- HDC dc1, dc2;
- png_byte *origPixels;
-
- origBmp=img->hBitmap;
- origPixels=img->png_pixels;
-
- memset(&pnginfo, 0, sizeof(pnginfo));
- pnginfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- pnginfo.bmiHeader.biWidth = width;
- pnginfo.bmiHeader.biHeight = -height;
- pnginfo.bmiHeader.biBitCount = 32;
- pnginfo.bmiHeader.biCompression = BI_RGB;
- pnginfo.bmiHeader.biPlanes = 1;
- dc1 = CreateCompatibleDC(NULL);
- dc2 = CreateCompatibleDC(NULL);
- img->hBitmap = CreateDIBSection(dc1, &pnginfo, DIB_RGB_COLORS , (void **)&(img->png_pixels), NULL, 0);
-
- if(gr->SetStretchBltMode) {
- gr->SetStretchBltMode(dc1,STRETCH_HALFTONE);
- SetBrushOrgEx(dc1,0,0,NULL);
- }
-
- SelectBitmap(dc1,img->hBitmap);
- SelectBitmap(dc2,origBmp);
-
- StretchBlt(dc1,0,0,width, height, dc2, 0,0, img->width, img->height,SRCCOPY);
- img->width=width;
- img->height=height;
- img->hot.x=width/2-1;
- img->hot.y=height/2-1;
-
- DeleteDC(dc1);
- DeleteDC(dc2);
- DeleteObject(origBmp);
-}
-
-
-static void
-pngrender(struct graphics_image_priv *img, struct graphics_priv *gr, int x0, int y0)
-{
- if (gr->AlphaBlend && img->hBitmap)
- {
- HDC hdc;
- HBITMAP oldBitmap;
- BLENDFUNCTION blendFunction ;
- blendFunction.BlendOp = AC_SRC_OVER;
- blendFunction.BlendFlags = 0;
- blendFunction.SourceConstantAlpha = 255;
- blendFunction.AlphaFormat = AC_SRC_ALPHA;
- hdc = CreateCompatibleDC(NULL);
- oldBitmap = SelectBitmap(hdc, img->hBitmap);
- gr->AlphaBlend(gr->hMemDC, x0, y0, img->width, img->height, hdc, 0, 0, img->width, img->height, blendFunction);
- (void)SelectBitmap(hdc, oldBitmap);
- DeleteDC(hdc);
- }
- else
- {
- int x, y;
- HDC hdc=gr->hMemDC;
- png_byte *pix_ptr = img->png_pixels;
- COLORREF *pixeldata;
- HDC dc;
- HBITMAP bitmap;
- HBITMAP oldBitmap;
-
- BITMAPINFO pnginfo;
-
- memset(&pnginfo, 0, sizeof(pnginfo));
- pnginfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- pnginfo.bmiHeader.biWidth = img->width;
- pnginfo.bmiHeader.biHeight = -img->height;
- pnginfo.bmiHeader.biBitCount = 32;
- pnginfo.bmiHeader.biCompression = BI_RGB;
- pnginfo.bmiHeader.biPlanes = 1;
- dc = CreateCompatibleDC(NULL);
- bitmap = CreateDIBSection(hdc, &pnginfo, DIB_RGB_COLORS, (void **)&pixeldata, NULL, 0);
- oldBitmap = SelectBitmap(dc, bitmap);
- BitBlt(dc, 0, 0, img->width, img->height, hdc, x0, y0, SRCCOPY);
- for (y=0 ; y < img->width ; y++)
- {
- for (x=0 ; x < img->height ; x++)
- {
- int b = pix_ptr[0];
- int g = pix_ptr[1];
- int r = pix_ptr[2];
- int a = pix_ptr[3];
- if (a != 0xff)
- {
- int p = *pixeldata;
- int ai = 0xff - a;
- r = (r * a + ((p >> 16) & 0xff) * ai) / 255;
- g = (g * a + ((p >> 8) & 0xff) * ai) / 255;
- b = (b * a + ((p >> 0) & 0xff) * ai) / 255;
- }
- *pixeldata++ = (r << 16) | (g << 8) | b;
- pix_ptr+=img->channels;
- }
- }
-
- BitBlt(hdc, x0, y0, img->width, img->height, dc, 0, 0, SRCCOPY);
- (void)SelectBitmap(dc, oldBitmap);
- DeleteBitmap(bitmap);
- DeleteDC(dc);
- }
-}
-
-static int
-xpmdecode(char *name, struct graphics_image_priv *img)
-{
- img->pxpm = Xpm2bmp_new();
- if (Xpm2bmp_load( img->pxpm, name ) != 0)
- {
- g_free(img->pxpm);
- return FALSE;
- }
- img->width=img->pxpm->size_x;
- img->height=img->pxpm->size_y;
- img->hot.x=img->pxpm->hotspot_x;
- img->hot.y=img->pxpm->hotspot_y;
- return TRUE;
-}
-
-
-
-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* ret;
-
- char* hash_key = g_strdup_printf("%s_%d_%d_%d",name,*w,*h,rotation);
-
- if ( !g_hash_table_lookup_extended( gr->image_cache_hash, hash_key, NULL, (gpointer)&ret) )
- {
- int len=strlen(name);
- int rc=0;
-
- if (len >= 4)
- {
- char *ext;
- dbg(lvl_info, "loading image '%s'\n", name );
- ret = g_new0( struct graphics_image_priv, 1 );
- ext = name+len-4;
- if (!strcmp(ext,".xpm")) {
- rc=xpmdecode(name, ret);
- } else if (!strcmp(ext,".png")) {
- rc=pngdecode(gr, name, ret);
- }
- }
- if (!rc) {
- dbg(lvl_warning, "failed loading '%s'\n", name );
- g_free(ret);
- ret=NULL;
- }
-
- g_hash_table_insert(gr->image_cache_hash, hash_key, (gpointer)ret );
- /* Hash_key will be freed ater the hash table, so set it to NULL here to disable freing it on this function return */
- hash_key=NULL;
- if(ret) {
- if (*w==IMAGE_W_H_UNSET)
- *w=ret->width;
- if (*h==IMAGE_W_H_UNSET)
- *h=ret->height;
- if (*w!=ret->width || *h!=ret->height) {
- if(ret->png_pixels && ret->hBitmap)
- pngscale(ret, gr, *w, *h);
- }
- }
- }
- if (ret) {
- *w=ret->width;
- *h=ret->height;
- if (hot)
- *hot=ret->hot;
- }
- g_free(hash_key);
- return ret;
-}
-
-
-static void draw_image(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img)
-{
- if (img->pxpm)
- Xpm2bmp_paint( img->pxpm , gr->hMemDC, p->x, p->y );
- if (img->png_pixels)
- pngrender(img, gr, p->x, p->y);
-}
-
-static struct graphics_priv *
- graphics_win32_new_helper(struct graphics_methods *meth);
-
-static void overlay_resize(struct graphics_priv *gr, struct point *p, int w, int h, int wraparound)
-{
- dbg(lvl_debug, "resize overlay: %x, x: %d, y: %d, w: %d, h: %d, wraparound: %d\n", gr, p->x, p->y, w, h, wraparound);
-
- if ( gr->width != w || gr->height != h )
- {
- gr->width = w;
- gr->height = h;
- create_memory_dc(gr);
- }
- gr->p.x = p->x;
- gr->p.y = p->y;
-
-}
-
-
-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_win32_new_helper(meth);
- dbg(lvl_debug, "overlay: %x, x: %d, y: %d, w: %d, h: %d, wraparound: %d\n", this, p->x, p->y, w, h, wraparound);
- this->width = w;
- this->height = h;
- this->parent = gr;
- this->p.x = p->x;
- this->p.y = p->y;
- this->disabled = 0;
- this->hPrebuildDC = 0;
- this->AlphaBlend = gr->AlphaBlend;
- this->image_cache_hash = gr->image_cache_hash;
-
- this->next = gr->overlays;
- gr->overlays = this;
- this->wnd_handle = gr->wnd_handle;
-
- if (wraparound)
- {
- if ( p->x < 0 )
- {
- this->p.x += gr->width;
- }
-
- if ( p->y < 0 )
- {
- this->p.y += gr->height;
- }
- }
-
- create_memory_dc(this);
- return this;
-}
-
-static void overlay_disable(struct graphics_priv *gr, int disable)
-{
- dbg(lvl_debug, "overlay: %x, disable: %d\n", gr, disable);
- gr->disabled = disable;
-}
-
-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)
-{
- int len = g_utf8_strlen(text, -1);
- int xMin = 0;
- int yMin = 0;
- int yMax = 13*font->size/256;
- int xMax = 9*font->size*len/256;
-
- dbg(lvl_info, "Get bbox for %s\n", text);
-
- ret[0].x = xMin;
- ret[0].y = -yMin;
- ret[1].x = xMin;
- ret[1].y = -yMax;
- ret[2].x = xMax;
- ret[2].y = -yMax;
- ret[3].x = xMax;
- ret[3].y = -yMin;
-}
-
-
-static struct graphics_methods graphics_methods =
-{
- graphics_destroy,
- draw_mode,
- draw_lines,
- draw_polygon,
- draw_rectangle,
- draw_circle,
- draw_text,
- draw_image,
-#ifdef HAVE_IMLIB2
- NULL, // draw_image_warp,
-#else
- NULL,
-#endif
- draw_drag,
- font_new,
- gc_new,
- background_gc,
- overlay_new,
- image_new,
- get_data,
- NULL, //image_free
- get_text_bbox,
- overlay_disable,
- overlay_resize,
- NULL, /* show_native_keyboard */
- NULL, /* hide_native_keyboard */
-};
-
-
-static struct graphics_priv *
- graphics_win32_new_helper(struct graphics_methods *meth)
-{
- struct graphics_priv *this_=g_new0(struct graphics_priv,1);
- *meth=graphics_methods;
- this_->mode = -1;
- return this_;
-}
-
-static void bind_late(struct graphics_priv* gra_priv)
-{
-#if HAVE_API_WIN32_CE
- gra_priv->hCoreDll = LoadLibrary(TEXT("coredll.dll"));
-#else
- gra_priv->hCoreDll = LoadLibrary(TEXT("msimg32.dll"));
- gra_priv->hGdi32Dll = LoadLibrary(TEXT("gdi32.dll"));
- gra_priv->hUser32Dll = GetModuleHandle("user32.dll");
-#endif
- if ( gra_priv->hCoreDll )
- {
- gra_priv->AlphaBlend = (FP_AlphaBlend)GetProcAddress(gra_priv->hCoreDll, TEXT("AlphaBlend") );
- if (!gra_priv->AlphaBlend)
- {
- dbg(lvl_warning, "AlphaBlend not supported\n");
- }
-#if HAVE_API_WIN32_CE
- gra_priv->SetStretchBltMode= (FP_SetStretchBltMode)GetProcAddress(gra_priv->hCoreDll, TEXT("SetStretchBltMode") );
-#else
- gra_priv->SetStretchBltMode= (FP_SetStretchBltMode)GetProcAddress(gra_priv->hGdi32Dll, TEXT("SetStretchBltMode") );
-#endif
- if (!gra_priv->SetStretchBltMode)
- {
- dbg(lvl_warning, "SetStretchBltMode not supported\n");
- }
- }
- else
- {
- dbg(lvl_error, "Error loading coredll\n");
- }
-
- if(gra_priv->hUser32Dll) {
- gra_priv->ChangeWindowMessageFilterEx=GetProcAddress(gra_priv->hUser32Dll,"ChangeWindowMessageFilterEx");
- gra_priv->ChangeWindowMessageFilter=GetProcAddress(gra_priv->hUser32Dll,"ChangeWindowMessageFilter");
- }
-}
-
-
-
-static struct graphics_priv*
- graphics_win32_new( struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct attr *attr;
-
- struct graphics_priv* this_;
- HMODULE user32;
- if (!event_request_system("win32","graphics_win32"))
- return NULL;
- this_=graphics_win32_new_helper(meth);
- this_->nav=nav;
- this_->frame=1;
- if ((attr=attr_search(attrs, NULL, attr_frame)))
- this_->frame=attr->u.num;
- this_->x=0;
- if ((attr=attr_search(attrs, NULL, attr_x)))
- this_->x=attr->u.num;
- this_->y=0;
- if ((attr=attr_search(attrs, NULL, attr_y)))
- this_->y=attr->u.num;
- this_->width=792;
- if ((attr=attr_search(attrs, NULL, attr_w)))
- this_->width=attr->u.num;
- this_->height=547;
- if ((attr=attr_search(attrs, NULL, attr_h)))
- this_->height=attr->u.num;
- this_->overlays = NULL;
- this_->cbl=cbl;
- this_->parent = NULL;
- this_->window.priv = NULL;
- this_->image_cache_hash = g_hash_table_new(g_str_hash, g_str_equal);
-
- bind_late(this_);
-
- return this_;
-}
-
-
-static void
-event_win32_main_loop_run(void)
-{
- MSG msg;
-
- dbg(lvl_debug,"enter\n");
- while (GetMessage(&msg, 0, 0, 0))
- {
- TranslateMessage(&msg); /* Keyboard input. */
- DispatchMessage(&msg);
- }
-
-}
-
-static void event_win32_main_loop_quit(void)
-{
-#ifdef HAVE_API_WIN32_CE
- HWND hwndTaskbar;
- HWND hwndSip;
-#endif
-
- dbg(lvl_debug,"enter\n");
-
-#ifdef HAVE_API_WIN32_CE
- hwndTaskbar = FindWindow(L"HHTaskBar", NULL);
- hwndSip = FindWindow(L"MS_SIPBUTTON", NULL);
- // activate the SIP button
- ShowWindow(hwndSip, SW_SHOW);
- ShowWindow(hwndTaskbar, SW_SHOW);
-#endif
-
- DestroyWindow(g_hwnd);
-}
-
-static struct event_watch *
- event_win32_add_watch(int h, enum event_watch_cond cond, struct callback *cb)
-{
- dbg(lvl_debug,"enter\n");
- return NULL;
-}
-
-static void
-event_win32_remove_watch(struct event_watch *ev)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-static GList *timers;
-struct event_timeout
-{
- UINT_PTR timer_id;
- int multi;
- struct callback *cb;
- struct event_timeout *next;
-};
-
-static void run_timer(UINT_PTR idEvent)
-{
- GList *l;
- struct event_timeout *t;
- l = timers;
- while (l)
- {
- t = l->data;
- if (t->timer_id == idEvent)
- {
- struct callback *cb = t->cb;
- dbg(lvl_info, "Timer %d (multi: %d)\n", t->timer_id, t->multi);
- if (!t->multi)
- {
- KillTimer(NULL, t->timer_id);
- timers = g_list_remove(timers, t);
- g_free(t);
- }
- callback_call_0(cb);
- return;
- }
- l = g_list_next(l);
- }
- dbg(lvl_error, "timer %d not found\n", idEvent);
-}
-
-static VOID CALLBACK win32_timer_cb(HWND hwnd, UINT uMsg,
- UINT_PTR idEvent,
- DWORD dwTime)
-{
- run_timer(idEvent);
-}
-
-static struct event_timeout *
- event_win32_add_timeout(int timeout, int multi, struct callback *cb)
-{
- struct event_timeout *t;
- t = g_new0(struct event_timeout, 1);
- if (!t)
- return t;
- t->multi = multi;
- timers = g_list_prepend(timers, t);
- t->cb = cb;
- t->timer_id = SetTimer(NULL, 0, timeout, win32_timer_cb);
- dbg(lvl_debug, "Started timer %d for %d (multi: %d)\n", t->timer_id, timeout, multi);
- return t;
-}
-
-static void
-event_win32_remove_timeout(struct event_timeout *to)
-{
- if (to)
- {
- GList *l;
- struct event_timeout *t=NULL;
- dbg(lvl_debug, "Try stopping timer %d\n", to->timer_id);
- l = timers;
- while (l)
- {
- t = l->data;
- /* Use the pointer not the ID, IDs are reused */
- if (t == to)
- {
- KillTimer(NULL, t->timer_id);
- timers = g_list_remove(timers, t);
- g_free(t);
- return;
- }
- l = g_list_next(l);
- }
- dbg(lvl_error, "Timer %d not found\n", to->timer_id);
- g_free(to);
- }
-}
-
-static struct event_idle *
- event_win32_add_idle(int priority, struct callback *cb)
-{
- return (struct event_idle *)event_win32_add_timeout(1, 1, cb);
-}
-
-static void
-event_win32_remove_idle(struct event_idle *ev)
-{
- event_win32_remove_timeout((struct event_timeout *)ev);
-}
-
-static void
-event_win32_call_callback(struct callback_list *cb)
-{
- PostMessage(g_hwnd, WM_USER+2, (WPARAM)cb , (LPARAM)0);
-}
-
-static struct event_methods event_win32_methods =
-{
- event_win32_main_loop_run,
- event_win32_main_loop_quit,
- event_win32_add_watch,
- event_win32_remove_watch,
- event_win32_add_timeout,
- event_win32_remove_timeout,
- event_win32_add_idle,
- event_win32_remove_idle,
- event_win32_call_callback,
-};
-
-static struct event_priv *
- event_win32_new(struct event_methods *meth)
-{
- *meth=event_win32_methods;
- return NULL;
-}
-
-void
-plugin_init(void)
-{
- plugin_register_category_graphics("win32", graphics_win32_new);
- plugin_register_category_event("win32", event_win32_new);
-}
diff --git a/navit/graphics/win32/graphics_win32.h b/navit/graphics/win32/graphics_win32.h
deleted file mode 100644
index c50dbf4f7..000000000
--- a/navit/graphics/win32/graphics_win32.h
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef WIN32_GUI_INCLUDED
-#define WIN32_GUI_INCLUDED
-
-#include "resources/resource.h"
-#include "coord.h"
-#include "point.h"
-#include "graphics.h"
-#include "event.h"
-
-#ifdef UNICODE
-#include <wchar.h>
-#define _tprintf wprintf
-#else
-#define _tprintf printf
-#endif
-
-
-#define ID_CHILD_GFX 100
-#define ID_CHILD_TOOLBAR (ID_CHILD_GFX + 1)
-#define ID_CHILD_1 (ID_CHILD_TOOLBAR + 1)
-#define ID_CHILD_2 (ID_CHILD_1 + 1)
-#define ID_CHILD_3 (ID_CHILD_2 + 1)
-#define ID_CHILD_4 (ID_CHILD_4 + 1)
-
-#define ID_DISPLAY_ZOOMIN 200
-#define ID_DISPLAY_ZOOMOUT 201
-#define ID_DISPLAY_REFRESH 202
-#define ID_DISPLAY_CURSOR 203
-#define ID_DISPLAY_ORIENT 204
-#define ID_DISPLAY_DESTINATION 205
-
-#define ID_FILE_EXIT 9001
-#define ID_STUFF_GO 9002
-
-//#define _(text) gettext(text)
-
-#define POPUP_MENU_OFFSET 4000
-
-struct statusbar_methods;
-struct menu_methods;
-struct datawindow_methods;
-struct navit;
-struct callback;
-
-
-struct menu_priv {
- HWND wnd_handle;
- HMENU hMenu;
- struct callback* cb;
-};
-
-struct gui_priv {
- struct navit *nav;
- HANDLE hwnd;
-};
-
-
-struct graphics_priv;
-
-struct menu_priv *gui_gtk_menubar_new(struct gui_priv *gui, struct menu_methods *meth);
-struct menu_priv *gui_gtk_toolbar_new(struct gui_priv *gui, struct menu_methods *meth);
-struct statusbar_priv *gui_gtk_statusbar_new(struct gui_priv *gui, struct statusbar_methods *meth);
-struct menu_priv *gui_gtk_popup_new(struct gui_priv *gui, struct menu_methods *meth);
-struct datawindow_priv *gui_gtk_datawindow_new(struct gui_priv *gui, char *name, struct callback *click, struct callback *close, struct datawindow_methods *meth);
-
-struct graphics_priv* win32_graphics_new( struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl);
-
-#endif
diff --git a/navit/graphics/win32/resources/resource.h b/navit/graphics/win32/resources/resource.h
deleted file mode 100644
index 55bcc2d73..000000000
--- a/navit/graphics/win32/resources/resource.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#include <windows.h>
-
-#define IDI_NAVIT 1100
-#define IDB_NAVITTOOLBAR 1101
diff --git a/navit/graphics/win32/xpm2bmp.c b/navit/graphics/win32/xpm2bmp.c
deleted file mode 100644
index 455d69941..000000000
--- a/navit/graphics/win32/xpm2bmp.c
+++ /dev/null
@@ -1,597 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <windows.h>
-#include <wingdi.h>
-#include <glib/glib.h>
-#include "xpm2bmp.h"
-
-/* #define _DBG */
-
-// function prototypes
-static int CreateBitmapFromXpm( const char* filename, PXPM2BMP pXpm2bmp );
-
-// typedefs
-static XPMCOLORENTRY theRGBRecords[] =
-{
- {"ALICEBLUE", 240, 248, 255},
- {"ANTIQUEWHITE", 250, 235, 215},
- {"AQUAMARINE", 50, 191, 193},
- {"AZURE", 240, 255, 255},
- {"BEIGE", 245, 245, 220},
- {"BISQUE", 255, 228, 196},
- {"BLACK", 0, 0, 0},
- {"BLANCHEDALMOND", 255, 235, 205},
- {"BLUE", 0, 0, 255},
- {"BLUEVIOLET", 138, 43, 226},
- {"BROWN", 165, 42, 42},
- {"BURLYWOOD", 222, 184, 135},
- {"CADETBLUE", 95, 146, 158},
- {"CHARTREUSE", 127, 255, 0},
- {"CHOCOLATE", 210, 105, 30},
- {"CORAL", 255, 114, 86},
- {"CORNFLOWERBLUE", 34, 34, 152},
- {"CORNSILK", 255, 248, 220},
- {"CYAN", 0, 255, 255},
- {"DARKGOLDENROD", 184, 134, 11},
- {"DARKGREEN", 0, 86, 45},
- {"DARKKHAKI", 189, 183, 107},
- {"DARKOLIVEGREEN", 85, 86, 47},
- {"DARKORANGE", 255, 140, 0},
- {"DARKORCHID", 139, 32, 139},
- {"DARKSALMON", 233, 150, 122},
- {"DARKSEAGREEN", 143, 188, 143},
- {"DARKSLATEBLUE", 56, 75, 102},
- {"DARKSLATEGRAY", 47, 79, 79},
- {"DARKTURQUOISE", 0, 166, 166},
- {"DARKVIOLET", 148, 0, 211},
- {"DEEPPINK", 255, 20, 147},
- {"DEEPSKYBLUE", 0, 191, 255},
- {"DIMGRAY", 84, 84, 84},
- {"DODGERBLUE", 30, 144, 255},
- {"FIREBRICK", 142, 35, 35},
- {"FLORALWHITE", 255, 250, 240},
- {"FORESTGREEN", 80, 159, 105},
- {"GAINSBORO", 220, 220, 220},
- {"GHOSTWHITE", 248, 248, 255},
- {"GOLD", 218, 170, 0},
- {"GOLDENROD", 239, 223, 132},
- {"GRAY", 126, 126, 126},
- {"GRAY0", 0, 0, 0},
- {"GRAY1", 3, 3, 3},
- {"GRAY10", 26, 26, 26},
- {"GRAY100", 255, 255, 255},
- {"GRAY11", 28, 28, 28},
- {"GRAY12", 31, 31, 31},
- {"GRAY13", 33, 33, 33},
- {"GRAY14", 36, 36, 36},
- {"GRAY15", 38, 38, 38},
- {"GRAY16", 41, 41, 41},
- {"GRAY17", 43, 43, 43},
- {"GRAY18", 46, 46, 46},
- {"GRAY19", 48, 48, 48},
- {"GRAY2", 5, 5, 5},
- {"GRAY20", 51, 51, 51},
- {"GRAY21", 54, 54, 54},
- {"GRAY22", 56, 56, 56},
- {"GRAY23", 59, 59, 59},
- {"GRAY24", 61, 61, 61},
- {"GRAY25", 64, 64, 64},
- {"GRAY26", 66, 66, 66},
- {"GRAY27", 69, 69, 69},
- {"GRAY28", 71, 71, 71},
- {"GRAY29", 74, 74, 74},
- {"GRAY3", 8, 8, 8},
- {"GRAY30", 77, 77, 77},
- {"GRAY31", 79, 79, 79},
- {"GRAY32", 82, 82, 82},
- {"GRAY33", 84, 84, 84},
- {"GRAY34", 87, 87, 87},
- {"GRAY35", 89, 89, 89},
- {"GRAY36", 92, 92, 92},
- {"GRAY37", 94, 94, 94},
- {"GRAY38", 97, 97, 97},
- {"GRAY39", 99, 99, 99},
- {"GRAY4", 10, 10, 10},
- {"GRAY40", 102, 102, 102},
- {"GRAY41", 105, 105, 105},
- {"GRAY42", 107, 107, 107},
- {"GRAY43", 110, 110, 110},
- {"GRAY44", 112, 112, 112},
- {"GRAY45", 115, 115, 115},
- {"GRAY46", 117, 117, 117},
- {"GRAY47", 120, 120, 120},
- {"GRAY48", 122, 122, 122},
- {"GRAY49", 125, 125, 125},
- {"GRAY5", 13, 13, 13},
- {"GRAY50", 127, 127, 127},
- {"GRAY51", 130, 130, 130},
- {"GRAY52", 133, 133, 133},
- {"GRAY53", 135, 135, 135},
- {"GRAY54", 138, 138, 138},
- {"GRAY55", 140, 140, 140},
- {"GRAY56", 143, 143, 143},
- {"GRAY57", 145, 145, 145},
- {"GRAY58", 148, 148, 148},
- {"GRAY59", 150, 150, 150},
- {"GRAY6", 15, 15, 15},
- {"GRAY60", 153, 153, 153},
- {"GRAY61", 156, 156, 156},
- {"GRAY62", 158, 158, 158},
- {"GRAY63", 161, 161, 161},
- {"GRAY64", 163, 163, 163},
- {"GRAY65", 166, 166, 166},
- {"GRAY66", 168, 168, 168},
- {"GRAY67", 171, 171, 171},
- {"GRAY68", 173, 173, 173},
- {"GRAY69", 176, 176, 176},
- {"GRAY7", 18, 18, 18},
- {"GRAY70", 179, 179, 179},
- {"GRAY71", 181, 181, 181},
- {"GRAY72", 184, 184, 184},
- {"GRAY73", 186, 186, 186},
- {"GRAY74", 189, 189, 189},
- {"GRAY75", 191, 191, 191},
- {"GRAY76", 194, 194, 194},
- {"GRAY77", 196, 196, 196},
- {"GRAY78", 199, 199, 199},
- {"GRAY79", 201, 201, 201},
- {"GRAY8", 20, 20, 20},
- {"GRAY80", 204, 204, 204},
- {"GRAY81", 207, 207, 207},
- {"GRAY82", 209, 209, 209},
- {"GRAY83", 212, 212, 212},
- {"GRAY84", 214, 214, 214},
- {"GRAY85", 217, 217, 217},
- {"GRAY86", 219, 219, 219},
- {"GRAY87", 222, 222, 222},
- {"GRAY88", 224, 224, 224},
- {"GRAY89", 227, 227, 227},
- {"GRAY9", 23, 23, 23},
- {"GRAY90", 229, 229, 229},
- {"GRAY91", 232, 232, 232},
- {"GRAY92", 235, 235, 235},
- {"GRAY93", 237, 237, 237},
- {"GRAY94", 240, 240, 240},
- {"GRAY95", 242, 242, 242},
- {"GRAY96", 245, 245, 245},
- {"GRAY97", 247, 247, 247},
- {"GRAY98", 250, 250, 250},
- {"GRAY99", 252, 252, 252},
- {"GREEN", 0, 255, 0},
- {"GREENYELLOW", 173, 255, 47},
- {"HONEYDEW", 240, 255, 240},
- {"HOTPINK", 255, 105, 180},
- {"INDIANRED", 107, 57, 57},
- {"IVORY", 255, 255, 240},
- {"KHAKI", 179, 179, 126},
- {"LAVENDER", 230, 230, 250},
- {"LAVENDERBLUSH", 255, 240, 245},
- {"LAWNGREEN", 124, 252, 0},
- {"LEMONCHIFFON", 255, 250, 205},
- {"LIGHTBLUE", 176, 226, 255},
- {"LIGHTCORAL", 240, 128, 128},
- {"LIGHTCYAN", 224, 255, 255},
- {"LIGHTGOLDENROD", 238, 221, 130},
- {"LIGHTGOLDENRODYELLOW", 250, 250, 210},
- {"LIGHTGRAY", 168, 168, 168},
- {"LIGHTPINK", 255, 182, 193},
- {"LIGHTSALMON", 255, 160, 122},
- {"LIGHTSEAGREEN", 32, 178, 170},
- {"LIGHTSKYBLUE", 135, 206, 250},
- {"LIGHTSLATEBLUE", 132, 112, 255},
- {"LIGHTSLATEGRAY", 119, 136, 153},
- {"LIGHTSTEELBLUE", 124, 152, 211},
- {"LIGHTYELLOW", 255, 255, 224},
- {"LIMEGREEN", 0, 175, 20},
- {"LINEN", 250, 240, 230},
- {"MAGENTA", 255, 0, 255},
- {"MAROON", 143, 0, 82},
- {"MEDIUMAQUAMARINE", 0, 147, 143},
- {"MEDIUMBLUE", 50, 50, 204},
- {"MEDIUMFORESTGREEN", 50, 129, 75},
- {"MEDIUMGOLDENROD", 209, 193, 102},
- {"MEDIUMORCHID", 189, 82, 189},
- {"MEDIUMPURPLE", 147, 112, 219},
- {"MEDIUMSEAGREEN", 52, 119, 102},
- {"MEDIUMSLATEBLUE", 106, 106, 141},
- {"MEDIUMSPRINGGREEN", 35, 142, 35},
- {"MEDIUMTURQUOISE", 0, 210, 210},
- {"MEDIUMVIOLETRED", 213, 32, 121},
- {"MIDNIGHTBLUE", 47, 47, 100},
- {"MINTCREAM", 245, 255, 250},
- {"MISTYROSE", 255, 228, 225},
- {"MOCCASIN", 255, 228, 181},
- {"NAVAJOWHITE", 255, 222, 173},
- {"NAVY", 35, 35, 117},
- {"NAVYBLUE", 35, 35, 117},
- {"OLDLACE", 253, 245, 230},
- {"OLIVEDRAB", 107, 142, 35},
- {"ORANGE", 255, 135, 0},
- {"ORANGERED", 255, 69, 0},
- {"ORCHID", 239, 132, 239},
- {"PALEGOLDENROD", 238, 232, 170},
- {"PALEGREEN", 115, 222, 120},
- {"PALETURQUOISE", 175, 238, 238},
- {"PALEVIOLETRED", 219, 112, 147},
- {"PAPAYAWHIP", 255, 239, 213},
- {"PEACHPUFF", 255, 218, 185},
- {"PERU", 205, 133, 63},
- {"PINK", 255, 181, 197},
- {"PLUM", 197, 72, 155},
- {"POWDERBLUE", 176, 224, 230},
- {"PURPLE", 160, 32, 240},
- {"RED", 255, 0, 0},
- {"ROSYBROWN", 188, 143, 143},
- {"ROYALBLUE", 65, 105, 225},
- {"SADDLEBROWN", 139, 69, 19},
- {"SALMON", 233, 150, 122},
- {"SANDYBROWN", 244, 164, 96},
- {"SEAGREEN", 82, 149, 132},
- {"SEASHELL", 255, 245, 238},
- {"SIENNA", 150, 82, 45},
- {"SKYBLUE", 114, 159, 255},
- {"SLATEBLUE", 126, 136, 171},
- {"SLATEGRAY", 112, 128, 144},
- {"SNOW", 255, 250, 250},
- {"SPRINGGREEN", 65, 172, 65},
- {"STEELBLUE", 84, 112, 170},
- {"TAN", 222, 184, 135},
- {"THISTLE", 216, 191, 216},
- {"TOMATO", 255, 99, 71},
- {"TRANSPARENT", 0, 0, 1},
- {"TURQUOISE", 25, 204, 223},
- {"VIOLET", 156, 62, 206},
- {"VIOLETRED", 243, 62, 150},
- {"WHEAT", 245, 222, 179},
- {"WHITE", 255, 255, 255},
- {"WHITESMOKE", 245, 245, 245},
- {"YELLOW", 255, 255, 0},
- {"YELLOWGREEN", 50, 216, 56}
-};
-
-
-PXPM2BMP Xpm2bmp_new(void)
-{
- PXPM2BMP preturn = g_malloc0( sizeof(XPM2BMP) );
- return preturn;
-}
-
-
-int Xpm2bmp_load( PXPM2BMP pXpm2bmp, const char* filename )
-{
- return CreateBitmapFromXpm( filename, pXpm2bmp );
-}
-
-int Xpm2bmp_paint( PXPM2BMP pXpm2bmp, HDC hdc, int x1,int y1 )
-{
- StretchDIBits(hdc,
- x1, y1, pXpm2bmp->size_x, pXpm2bmp->size_y,
- 0, 0, pXpm2bmp->size_x, pXpm2bmp->size_y,
- pXpm2bmp->wimage_data_trans,
- (BITMAPINFO *)pXpm2bmp->bmih_trans,
- DIB_RGB_COLORS,
- SRCAND );
-
- StretchDIBits(hdc,
- x1, y1, pXpm2bmp->size_x, pXpm2bmp->size_y,
- 0, 0, pXpm2bmp->size_x, pXpm2bmp->size_y,
- pXpm2bmp->wimage_data,
- (BITMAPINFO *)pXpm2bmp->bmih,
- DIB_RGB_COLORS,
- SRCPAINT );
-
- return 0;
-}
-
-static int parse_line_values( const char* line, PXPM2BMP pXpm2bmp )
-{
- int return_value = 0;
- char* parse_line = (char*)line;
- char* tok;
- int value_pos = 0;
-
- parse_line = strchr( parse_line, '"' );
- parse_line++;
-
- tok = strtok( parse_line, " \t\n" );
-
- while ( tok != 0 )
- {
- int val = atoi( tok );
- switch ( value_pos )
- {
- case 0: pXpm2bmp->size_x = val; break;
- case 1: pXpm2bmp->size_y = val; break;
- case 2: pXpm2bmp->colors = val; break;
- case 3: pXpm2bmp->chars_per_pixel = val; break;
- case 4: pXpm2bmp->hotspot_x = val; break;
- case 5: pXpm2bmp->hotspot_y = val; break;
- }
- tok = strtok( NULL, " \t" );
- value_pos ++;
-
- }
-
- return return_value;
-}
-
-static int hex2int( char c )
-{
- if ((c >= '0') && (c <='9' )) return c - '0';
- if ((c >= 'A') && (c <= 'F')) return c - 'A' + 10;
- if ((c >= 'a') && (c <= 'f')) return c - 'a' + 10;
- return -1;
-}
-
-static DWORD string2hex16( const char* str )
-{
- int i1 = hex2int( str[0] );
- int i2 = hex2int( str[1] );
- if ( ( i1 >= 0 ) && ( i2 >= 0 ) )
- return i1*16+i2;
- return -1;
-}
-
-static int parse_color_values( const char* line, PXPM2BMP pXpm2bmp )
-{
- int return_value = 0;
- char* cq = strchr( line, '"' );
- char* cchar = strchr( cq+pXpm2bmp->chars_per_pixel+1, 'c' );
- char* chash = strchr( cq+pXpm2bmp->chars_per_pixel+1, '#' );
- char* qe = strchr( cq+pXpm2bmp->chars_per_pixel+1, '"' );
-
- cq++;
-
- if ( cq )
- {
- memcpy( pXpm2bmp->color_entires[ pXpm2bmp-> color_entires_size].color_str, cq, pXpm2bmp->chars_per_pixel + 1 );
- pXpm2bmp->color_entires[ pXpm2bmp-> color_entires_size].color_str[ pXpm2bmp->chars_per_pixel ] = '\0';
-
-
- if ( cchar && chash && qe)
- {
- int len;
- chash++;
- *qe = 0;
- len = strlen( chash );
-
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].r = string2hex16( &chash[0] );
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].g = string2hex16( &chash[len / 3] );
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].b = string2hex16( &chash[len * 2 / 3] );
-#ifdef _DBG
-printf( "adding color %s => %d RGB %x %x %x to index %d\n",
- line,
- pXpm2bmp->color_entires_size,
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].r,
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].g,
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].b,
- pXpm2bmp->color_entires_size );
-#endif
- }
- else
- {
- int q;
- char *start = cchar + 1;
- char *end = start;
-
- while ( *start != 0 )
- {
- if ( ( *start != '\t' ) && ( *start != ' ' ) )
- {
- break;
- }
- start++;
- }
-
- end = start;
- while ( *end != 0 )
- {
- if ( ( *end == '\t' ) || ( *end == ' ' ) || ( *end == '"' ))
- {
- *end = 0;
- }
- end++;
- }
-
- start = _strupr( start );
-
- for ( q=0; q < sizeof( theRGBRecords ) / sizeof( theRGBRecords[0] ); q++ )
- {
-
- if ( 0 == strcmp( start, theRGBRecords[q].color_str ) )
- {
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].r = theRGBRecords[q].r;
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].g = theRGBRecords[q].g;
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].b = theRGBRecords[q].b;
- }
- }
- if ( 0 == strcmp( start, "NONE" ) )
- {
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].r = 255;
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].g = 0;
- pXpm2bmp->color_entires[ pXpm2bmp->color_entires_size].b = 255;
- }
- }
- }
- pXpm2bmp->color_entires_size++;
-
- return return_value;
-}
-
-static int vv = 0;
-
-static int parse_pixel_line_values( const char* line, PXPM2BMP pXpm2bmp, unsigned char* pixel_data, unsigned char* pixel_data_trans )
-{
- int return_value = 0;
- int i,j;
-
-
- char* cq = strchr( line, '"' );
- int pix_idx = 0;
- int size_x = pXpm2bmp->size_x;
- int len = strlen( cq );
-
- cq++;
-
- if ( len > pXpm2bmp->chars_per_pixel * size_x )
- {
- for ( i=0; i< size_x; i++ )
- {
- int found = 0;
- char* cmp = &cq[ i * pXpm2bmp->chars_per_pixel];
-
- for ( j=0; j< pXpm2bmp-> color_entires_size; j++ )
- {
- if ( strncmp( cmp, pXpm2bmp->color_entires[ j ].color_str, pXpm2bmp->chars_per_pixel ) == 0 )
- {
- int r = pXpm2bmp->color_entires[ j ].r;
- int g = pXpm2bmp->color_entires[ j ].g;
- int b = pXpm2bmp->color_entires[ j ].b;
-
- if ( ( r == 255 ) && ( g == 0 ) && ( r == 255 ) )
- {
- r=g=b=0;
- pixel_data_trans[ pix_idx ] = 255;
- pixel_data_trans[ pix_idx+1 ] = 255;
- pixel_data_trans[ pix_idx+2 ] = 255;
- }
- else
- {
- pixel_data_trans[ pix_idx ] = 0;
- pixel_data_trans[ pix_idx+1 ] = 0;
- pixel_data_trans[ pix_idx+2 ] = 0;
- }
-
- // pixel_data[ pix_idx++ ] = pXpm2bmp->color_entires[ j ].r;
- // pixel_data[ pix_idx++ ] = pXpm2bmp->color_entires[ j ].g;
- // pixel_data[ pix_idx++ ] = pXpm2bmp->color_entires[ j ].b;
- pixel_data[ pix_idx++ ] = b;
- pixel_data[ pix_idx++ ] = g;
- pixel_data[ pix_idx++ ] = r;
- found = 1;
- vv++;
- break;
- }
- }
- if ( !found )
- {
- fprintf( stderr, "XPMLIB: error color not found\n" );
- }
-
- }
- }
- else
- {
- return_value = -1;
- fprintf( stderr, "XPMLIB: invalid line length\n" );
- }
- return return_value;
-}
-
-
-static int CreateBitmapFromXpm( const char* filename, PXPM2BMP pXpm2bmp )
-{
- int return_val = 0;
- unsigned char i, row;
- char line[ 1024 ];
- int nbytes ;
- int padding, rowsize = 0;
- FILE* file_xpm = fopen( filename, "r" );
-
- int phase = 0;
- row = 0;
-
- if ( file_xpm )
- {
- while ( fgets(line, sizeof( line ), file_xpm ) )
- {
-#ifdef _DBG
- printf( "PARSING: %s\n", line );
-#endif
- if ( line[ 0 ] != '"' )
- continue;
-
- switch ( phase )
- {
- case 0:
- parse_line_values( line, pXpm2bmp );
-#ifdef _DBG
- printf( "size_x %d\n", pXpm2bmp->size_x );
- printf( "size_y %d\n", pXpm2bmp->size_y );
-#endif
- phase = 1;
-
- pXpm2bmp->color_entires_size = 0;
- nbytes = ( pXpm2bmp->chars_per_pixel + 1 ) * pXpm2bmp->colors;
-
- pXpm2bmp->color_entires = g_malloc0( sizeof(XPMCOLORENTRY) * (pXpm2bmp->colors + 100) );
- pXpm2bmp->color_entires[0].color_str = g_malloc0( nbytes * pXpm2bmp->colors );
- for ( i = 1; i< pXpm2bmp->colors; i++ )
- {
- pXpm2bmp->color_entires[i].color_str = pXpm2bmp->color_entires[0].color_str + ( pXpm2bmp->chars_per_pixel + 1 ) * i;
- }
-
- rowsize=pXpm2bmp->size_x * 3;
- padding=4-(rowsize%4);
- if(padding<4)
- rowsize+=padding;
-
-
- if (!(pXpm2bmp->dib = (unsigned char *)g_malloc(sizeof(BITMAPINFOHEADER) + rowsize * pXpm2bmp->size_y )))
- {
- return 4;
- }
- if (!(pXpm2bmp->dib_trans = (unsigned char *)g_malloc0(sizeof(BITMAPINFOHEADER) + rowsize * pXpm2bmp->size_y )))
- {
- return 4;
- }
-
- memset(pXpm2bmp->dib, 0, sizeof(BITMAPINFOHEADER));
- pXpm2bmp->bmih = (BITMAPINFOHEADER *)pXpm2bmp->dib;
- pXpm2bmp->bmih->biSize = sizeof(BITMAPINFOHEADER);
- pXpm2bmp->bmih->biWidth = pXpm2bmp->size_x;
- pXpm2bmp->bmih->biHeight = -((long)pXpm2bmp->size_y);
- pXpm2bmp->bmih->biPlanes = 1;
- pXpm2bmp->bmih->biBitCount = 24;
- pXpm2bmp->bmih->biCompression = 0;
- pXpm2bmp->wimage_data = pXpm2bmp->dib + sizeof(BITMAPINFOHEADER);
-
-
- pXpm2bmp->bmih_trans = (BITMAPINFOHEADER *)pXpm2bmp->dib_trans;
- pXpm2bmp->bmih_trans->biSize = sizeof(BITMAPINFOHEADER);
- pXpm2bmp->bmih_trans->biWidth = pXpm2bmp->size_x;
- pXpm2bmp->bmih_trans->biHeight = -((long)pXpm2bmp->size_y);
- pXpm2bmp->bmih_trans->biPlanes = 1;
- pXpm2bmp->bmih_trans->biBitCount = 24;
- pXpm2bmp->bmih_trans->biCompression = 0;
- pXpm2bmp->wimage_data_trans = pXpm2bmp->dib_trans + sizeof(BITMAPINFOHEADER);
-// memset( pXpm2bmp->wimage_data_trans, 255, 5* 22 * 3 );
-
- break;
- case 1:
- parse_color_values( line, pXpm2bmp );
- if ( pXpm2bmp->color_entires_size >= pXpm2bmp->colors )
- {
- phase = 2;
- }
-
- break;
- case 2:
- parse_pixel_line_values( line, pXpm2bmp,
- pXpm2bmp->wimage_data + row * rowsize,
- pXpm2bmp->wimage_data_trans + row * rowsize );
-
- row++;
- if ( row >= pXpm2bmp->size_y )
- {
- phase = 3;
- }
- break;
- }
-
- }
-
- fclose( file_xpm );
- }
- return return_val;
-}
diff --git a/navit/graphics/win32/xpm2bmp.h b/navit/graphics/win32/xpm2bmp.h
deleted file mode 100644
index a8c957ff0..000000000
--- a/navit/graphics/win32/xpm2bmp.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef Xpm2BMP_H_INCLUDED
-#define Xpm2BMP_H_INCLUDED
-
-#include <windows.h>
-#include "wingdi.h"
-
-typedef struct XPMCOLORENTRY_TAG
-{
- char* color_str;
- unsigned long r;
- unsigned long g;
- unsigned long b;
-} XPMCOLORENTRY, *PXPMCOLORENTRY;
-
-typedef struct XPM2BMP_TAG
-{
- unsigned short size_x;
- unsigned short size_y;
- unsigned short colors;
- unsigned short pixels;
- unsigned short chars_per_pixel;
- unsigned short hotspot_x;
- unsigned short hotspot_y;
-
- int color_entires_size;
- PXPMCOLORENTRY color_entires;
-
- unsigned char *dib;
- unsigned char *wimage_data;
- BITMAPINFOHEADER *bmih;
-
- unsigned char *dib_trans;
- unsigned char *wimage_data_trans;
- BITMAPINFOHEADER *bmih_trans;
-
-} XPM2BMP, *PXPM2BMP;
-
-
-PXPM2BMP Xpm2bmp_new(void);
-int Xpm2bmp_load( PXPM2BMP pXpm2bmp, const char* filename );
-int Xpm2bmp_paint( PXPM2BMP pXpm2bmp, HDC hdc, int x1,int y1 );
-
-
-#endif // Xpm2BMP_H_INCLUDED
diff --git a/navit/gtkext.h b/navit/gtkext.h
deleted file mode 100644
index c00f78f37..000000000
--- a/navit/gtkext.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_GTKEXT_H
-#define NAVIT_GTKEXT_H
-
-void gdk_gc_set_fill_rule(GdkGC *gc, GdkFillRule fill_rule);
-
-#endif
diff --git a/navit/gui.c b/navit/gui.c
deleted file mode 100644
index 9b2ba4971..000000000
--- a/navit/gui.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/**
- * 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 <string.h>
-#include "debug.h"
-#include "callback.h"
-#include "gui.h"
-#include "menu.h"
-#include "data_window.h"
-#include "item.h"
-#include "plugin.h"
-
-struct gui {
- struct gui_methods meth;
- struct gui_priv *priv;
- struct attr **attrs;
- struct attr parent;
-};
-
-struct gui *
-gui_new(struct attr *parent, struct attr **attrs)
-{
- struct gui *this_;
- struct attr *type_attr;
- struct gui_priv *(*guitype_new)(struct navit *nav, struct gui_methods *meth, struct attr **attrs, struct gui *gui);
- struct attr cbl;
- if (! (type_attr=attr_search(attrs, NULL, attr_type))) {
- return NULL;
- }
-
- guitype_new=plugin_get_category_gui(type_attr->u.str);
- if (! guitype_new)
- return NULL;
-
- this_=g_new0(struct gui, 1);
- this_->attrs=attr_list_dup(attrs);
- cbl.type=attr_callback_list;
- cbl.u.callback_list=callback_list_new();
- this_->attrs=attr_generic_add_attr(this_->attrs, &cbl);
- this_->priv=guitype_new(parent->u.navit, &this_->meth, this_->attrs, this_);
- this_->parent=*parent;
- return this_;
-}
-
-int
-gui_get_attr(struct gui *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- int ret;
- if (this_->meth.get_attr) {
- ret=this_->meth.get_attr(this_->priv, type, attr);
- if (ret)
- return ret;
- }
- if (type == this_->parent.type) {
- *attr=this_->parent;
- return 1;
- }
- return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
-}
-
-
-int
-gui_set_attr(struct gui *this_, struct attr *attr)
-{
- int ret=1;
- if (this_->meth.set_attr)
- ret=this_->meth.set_attr(this_->priv, attr);
- if (ret == 1)
- this_->attrs=attr_generic_set_attr(this_->attrs, attr);
- return ret != 0;
-}
-
-int
-gui_add_attr(struct gui *this_, struct attr *attr)
-{
- int ret=0;
- if (this_->meth.add_attr)
- ret=this_->meth.add_attr(this_->priv, attr);
- return ret;
-}
-
-struct menu *
-gui_menubar_new(struct gui *gui)
-{
- struct menu *this_;
- if (! gui->meth.menubar_new)
- return NULL;
- this_=g_new0(struct menu, 1);
- this_->priv=gui->meth.menubar_new(gui->priv, &this_->meth);
- if (! this_->priv) {
- g_free(this_);
- return NULL;
- }
- return this_;
-}
-
-struct menu *
-gui_popup_new(struct gui *gui)
-{
- struct menu *this_;
- if (!gui || ! gui->meth.popup_new)
- return NULL;
- this_=g_new0(struct menu, 1);
- this_->priv=gui->meth.popup_new(gui->priv, &this_->meth);
- if (! this_->priv) {
- g_free(this_);
- return NULL;
- }
- return this_;
-}
-
-struct datawindow *
-gui_datawindow_new(struct gui *gui, const char *name, struct callback *click, struct callback *close)
-{
- struct datawindow *this_;
- if (! gui->meth.datawindow_new)
- return NULL;
- this_=g_new0(struct datawindow, 1);
- this_->priv=gui->meth.datawindow_new(gui->priv, name, click, close, &this_->meth);
- if (! this_->priv) {
- g_free(this_);
- return NULL;
- }
- return this_;
-}
-
-int
-gui_add_bookmark(struct gui *gui, struct pcoord *c, char *description)
-{
- int ret;
- dbg(lvl_info,"enter\n");
- if (! gui->meth.add_bookmark)
- return 0;
- ret=gui->meth.add_bookmark(gui->priv, c, description);
-
- dbg(lvl_info,"ret=%d\n", ret);
- return ret;
-}
-
-int
-gui_set_graphics(struct gui *this_, struct graphics *gra)
-{
- if (! this_->meth.set_graphics) {
- dbg(lvl_error, "cannot set graphics, method 'set_graphics' not available\n");
- return 1;
- }
- return this_->meth.set_graphics(this_->priv, gra);
-}
-
-void
-gui_disable_suspend(struct gui *this_)
-{
- if (this_->meth.disable_suspend)
- this_->meth.disable_suspend(this_->priv);
-}
-
-int
-gui_has_main_loop(struct gui *this_)
-{
- if (! this_->meth.run_main_loop)
- return 0;
- return 1;
-}
-
-int
-gui_run_main_loop(struct gui *this_)
-{
- if (! gui_has_main_loop(this_))
- return 1;
- return this_->meth.run_main_loop(this_->priv);
-}
-
diff --git a/navit/gui.h b/navit/gui.h
deleted file mode 100644
index 5bb936938..000000000
--- a/navit/gui.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_GUI_H
-#define NAVIT_GUI_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-struct navit;
-struct gui_priv;
-struct menu_methods;
-struct datawindow_methods;
-struct callback;
-struct graphics;
-struct coord;
-struct pcoord;
-
-struct gui_methods {
- struct menu_priv *(*menubar_new)(struct gui_priv *priv, struct menu_methods *meth);
- struct menu_priv *(*popup_new)(struct gui_priv *priv, struct menu_methods *meth);
- int (*set_graphics)(struct gui_priv *priv, struct graphics *gra);
- int (*run_main_loop)(struct gui_priv *priv);
- struct datawindow_priv *(*datawindow_new)(struct gui_priv *priv, const char *name, struct callback *click, struct callback *close, struct datawindow_methods *meth);
- int (*add_bookmark)(struct gui_priv *priv, struct pcoord *c, char *description);
- void (*disable_suspend)(struct gui_priv *priv);
- int (*get_attr)(struct gui_priv *priv, enum attr_type type, struct attr *attr);
- int (*add_attr)(struct gui_priv *priv, struct attr *attr);
- int (*set_attr)(struct gui_priv *priv, struct attr *attr);
-};
-
-
-/* prototypes */
-enum attr_type;
-struct attr;
-struct attr_iter;
-struct callback;
-struct datawindow;
-struct graphics;
-struct gui;
-struct menu;
-struct pcoord;
-struct gui *gui_new(struct attr *parent, struct attr **attrs);
-int gui_get_attr(struct gui *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int gui_set_attr(struct gui *this_, struct attr *attr);
-int gui_add_attr(struct gui *this_, struct attr *attr);
-struct menu *gui_menubar_new(struct gui *gui);
-struct menu *gui_popup_new(struct gui *gui);
-struct datawindow *gui_datawindow_new(struct gui *gui, const char *name, struct callback *click, struct callback *close);
-int gui_add_bookmark(struct gui *gui, struct pcoord *c, char *description);
-int gui_set_graphics(struct gui *this_, struct graphics *gra);
-void gui_disable_suspend(struct gui *this_);
-int gui_has_main_loop(struct gui *this_);
-int gui_run_main_loop(struct gui *this_);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/navit/gui/gtk/CMakeLists.txt b/navit/gui/gtk/CMakeLists.txt
deleted file mode 100644
index a1dfa173c..000000000
--- a/navit/gui/gtk/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-module_add_library(gui_gtk datawindow.c destination.c gui_gtk_statusbar.c gui_gtk_action.c gui_gtk_window.c gui_gtk_poi.c)
-
diff --git a/navit/gui/gtk/datawindow.c b/navit/gui/gtk/datawindow.c
deleted file mode 100644
index dd71ce999..000000000
--- a/navit/gui/gtk/datawindow.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-#include "debug.h"
-#include "callback.h"
-#include "param.h"
-#include "data_window.h"
-#include "gui_gtk.h"
-
-struct datawindow_priv {
- GtkWidget *window;
- GtkWidget *scrolled_window;
- GtkWidget *treeview;
- GtkWidget *button;
- GtkListStore *liststore;
- GtkTreeModel *sortmodel;
- struct callback *click, *close;
- struct gui_priv *gui;
-};
-
-static GValue value;
-static void
-select_row(GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, struct datawindow_priv *win)
-{
- char *cols[20];
- GtkTreeIter iter;
- GtkTreeModel *model;
- int i;
-
- dbg(lvl_debug,"win=%p\n", win);
-
- model=gtk_tree_view_get_model(tree);
- gtk_tree_model_get_iter(model, &iter, path);
-
- for (i=0;i<gtk_tree_model_get_n_columns(model);i++) {
- gtk_tree_model_get_value(model, &iter, i, &value);
- cols[i]=g_strdup_value_contents(&value)+1;
- cols[i][strlen(cols[i])-1]='\0';
- g_value_unset(&value);
- }
- callback_call_1(win->click, cols);
-}
-
-static void
-gui_gtk_datawindow_add(struct datawindow_priv *win, struct param_list *param, int count)
-{
- int i;
- GtkCellRenderer *cell;
- GtkTreeIter iter;
- GType types[count];
-
- if (! win->treeview) {
- win->treeview=gtk_tree_view_new();
- gtk_tree_view_set_model (GTK_TREE_VIEW (win->treeview), NULL);
- gtk_container_add(GTK_CONTAINER(win->scrolled_window), win->treeview);
- gtk_widget_show_all(GTK_WIDGET(win->window));
- gtk_widget_grab_focus(GTK_WIDGET(win->treeview));
-
- /* add column names to treeview */
- for(i=0;i<count;i++) {
- if (param[i].name) {
- cell=gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (win->treeview),-1,param[i].name,
- cell,"text",i, NULL);
- }
- }
-#if 0
- g_signal_connect(G_OBJECT(win->treeview), "click-column", G_CALLBACK(click_column), NULL);
-#endif
- g_signal_connect(G_OBJECT(win->treeview), "row-activated", G_CALLBACK(select_row), win);
- }
-
- /* find data storage and create a new one if none is there */
- if (gtk_tree_view_get_model(GTK_TREE_VIEW (win->treeview)) == NULL) {
- for(i=0;i<count;i++) {
- if (param[i].name && !strcmp(param[i].name, "Distance"))
- types[i]=G_TYPE_INT;
- else
- types[i]=G_TYPE_STRING;
- }
- win->liststore=gtk_list_store_newv(count,types);
- if (! strcmp(param[0].name, "Distance")) {
- win->sortmodel=gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(win->liststore));
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (win->sortmodel), 0, GTK_SORT_ASCENDING);
- gtk_tree_view_set_model (GTK_TREE_VIEW (win->treeview), GTK_TREE_MODEL(win->sortmodel));
- } else
- gtk_tree_view_set_model (GTK_TREE_VIEW (win->treeview), GTK_TREE_MODEL(win->liststore));
- }
-
- gtk_list_store_append(win->liststore,&iter);
-
- /* add data to data storage */
- for(i=0;i<count;i++) {
- if (param[i].name && !strcmp(param[i].name, "Distance")) {
- gtk_list_store_set(win->liststore,&iter,i,atoi(param[i].value),-1);
- } else {
- gtk_list_store_set(win->liststore,&iter,i,param[i].value,-1);
- }
- }
-}
-
-static void
-gui_gtk_datawindow_mode(struct datawindow_priv *win, int start)
-{
- if (start) {
- if (win && win->treeview) {
- gtk_tree_view_set_model (GTK_TREE_VIEW (win->treeview), NULL);
- }
- }
-}
-
-static gboolean
-gui_gtk_datawindow_delete(GtkWidget *widget, GdkEvent *event, struct datawindow_priv *win)
-{
- callback_call_0(win->close);
-
- if (win->button) {
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION(win->button), FALSE);
- }
-
- return FALSE;
-}
-
-void
-gui_gtk_datawindow_destroy(struct datawindow_priv *win)
-{
- if ((!win->gui) || (!win->gui->datawindow)) {
- return;
- }
-
- gui_gtk_datawindow_delete(NULL, NULL, win);
- gtk_widget_destroy(win->window);
- win->gui->datawindow = NULL;
-
- return;
-}
-
-void
-gui_gtk_datawindow_set_button(struct datawindow_priv *this_, GtkWidget *btn)
-{
- this_->button = btn;
-}
-
-static gboolean
-keypress(GtkWidget *widget, GdkEventKey *event, struct datawindow_priv *win)
-{
- if (event->type != GDK_KEY_PRESS)
- return FALSE;
- if (event->keyval == GDK_Cancel) {
- gui_gtk_datawindow_delete(widget, (GdkEvent *)event, win);
- gtk_widget_destroy(win->window);
- }
- return FALSE;
-}
-
-
-static struct datawindow_methods gui_gtk_datawindow_meth = {
- gui_gtk_datawindow_destroy,
- gui_gtk_datawindow_add,
- gui_gtk_datawindow_mode,
-};
-
-struct datawindow_priv *
-gui_gtk_datawindow_new(struct gui_priv *gui, const char *name, struct callback *click, struct callback *close, struct datawindow_methods *meth)
-{
- struct datawindow_priv *win;
-
- if (!gui)
- return NULL;
- *meth=gui_gtk_datawindow_meth;
- win=g_new0(struct datawindow_priv, 1);
- win->window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_default_size(GTK_WINDOW(win->window), 320, 200);
- gtk_window_set_title(GTK_WINDOW(win->window), name);
- gtk_window_set_wmclass (GTK_WINDOW (win->window), "navit", "Navit");
-
- win->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (win->scrolled_window),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_container_add(GTK_CONTAINER(win->window), win->scrolled_window);
- g_signal_connect(G_OBJECT(win->window), "key-press-event", G_CALLBACK(keypress), win);
- win->treeview=NULL;
- win->click=click;
- win->close=close;
- gtk_window_set_transient_for(GTK_WINDOW((GtkWidget *)(win->window)), GTK_WINDOW(gui->win));
- g_signal_connect(G_OBJECT(win->window), "delete-event", G_CALLBACK(gui_gtk_datawindow_delete), win);
- gtk_widget_show_all(win->window);
-
- win->gui = gui;
- gui->datawindow = win;
- return win;
-}
-
diff --git a/navit/gui/gtk/destination.c b/navit/gui/gtk/destination.c
deleted file mode 100644
index 18fc58b75..000000000
--- a/navit/gui/gtk/destination.c
+++ /dev/null
@@ -1,582 +0,0 @@
-/**
- * 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 <fcntl.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <gtk/gtk.h>
-#include "debug.h"
-#include "destination.h"
-#include "navit.h"
-#include "item.h"
-#include "coord.h"
-#include "track.h"
-#include "country.h"
-#include "search.h"
-#include "projection.h"
-#include "navit_nls.h"
-#include "bookmarks.h"
-
-#define COL_COUNT 8
-
-static struct search_param {
- struct navit *nav;
- struct mapset *ms;
- struct search_list *sl;
- struct attr attr;
- int partial;
- GtkWidget *entry_country, *entry_postal, *entry_city, *entry_district;
- GtkWidget *entry_street, *entry_number;
- GtkWidget *listbox;
- GtkWidget *treeview;
- GtkListStore *liststore;
- GtkTreeModel *liststore2;
-} search_param;
-
-static void button_map(GtkWidget *widget, struct search_param *search)
-{
- GtkTreePath *path;
- GtkTreeViewColumn *focus_column;
- struct pcoord *c=NULL;
- GtkTreeIter iter;
-
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(search->treeview), &path, &focus_column);
- if(!path)
- return;
- if(!gtk_tree_model_get_iter(search->liststore2, &iter, path))
- return;
- gtk_tree_model_get (GTK_TREE_MODEL (search->liststore2), &iter, COL_COUNT, &c, -1);
- if (c) {
- navit_set_center(search->nav, c, 1);
- }
-}
-
-static char *description(struct search_param *search, GtkTreeIter *iter)
-{
- char *desc,*car,*postal,*town,*street;
- char empty='\0';
-
- gtk_tree_model_get (GTK_TREE_MODEL (search->liststore2), iter, 0, &car, -1);
- gtk_tree_model_get (GTK_TREE_MODEL (search->liststore2), iter, 1, &postal, -1);
- gtk_tree_model_get (GTK_TREE_MODEL (search->liststore2), iter, 2, &town, -1);
- gtk_tree_model_get (GTK_TREE_MODEL (search->liststore2), iter, 4, &street, -1);
-
- /* protect against nulls */
- if (car==0) car=&empty;
- if (postal==0) postal=&empty;
- if (town==0) town=&empty;
- if (street==0) street=&empty;
-
- if (search->attr.type == attr_town_name)
- desc=g_strdup_printf("%s-%s %s", car, postal, town);
- else
- desc=g_strdup_printf("%s-%s %s, %s", car, postal, town, street);
- return desc;
-}
-
-static void button_destination(GtkWidget *widget, struct search_param *search)
-{
- struct pcoord *c=NULL;
- GtkTreeIter iter;
- char *desc;
-
- if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (search->liststore2), &iter))
- return;
- gtk_tree_model_get (GTK_TREE_MODEL (search->liststore2), &iter, COL_COUNT, &c, -1);
- if (c) {
- desc=description(search, &iter);
- navit_set_destination(search->nav, c, desc, 1);
- g_free(desc);
- }
-}
-
-static void button_bookmark(GtkWidget *widget, struct search_param *search)
-{
- struct pcoord *c=NULL;
- GtkTreeIter iter;
- char *desc;
- struct attr attr;
-
- if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (search->liststore2), &iter))
- return;
- gtk_tree_model_get (GTK_TREE_MODEL (search->liststore2), &iter, COL_COUNT, &c, -1);
- if (c) {
- navit_get_attr(search->nav, attr_bookmarks, &attr, NULL);
- desc=description(search, &iter);
- bookmarks_add_bookmark(attr.u.bookmarks, c, desc);
- g_free(desc);
- }
-}
-
-
-char **columns_text[] = {
- (char *[]){_n("Car"),_n("Iso2"),_n("Iso3"),_n("Country"),NULL},
- (char *[]){_n("Car"),_n("Postal"),_n("Town"),_n("District"),NULL},
- (char *[]){_n("Car"),_n("Postal"),_n("Town"),_n("District"),_n("Street"),NULL},
- (char *[]){_n("Car"),_n("Postal"),_n("Town"),_n("District"),_n("Street"),_n("Number"),NULL},
-};
-
-static void set_columns(struct search_param *param, int mode)
-{
- GList *columns_list,*columns;
- char **column_text=columns_text[mode];
- int i=0;
-
- columns_list=gtk_tree_view_get_columns(GTK_TREE_VIEW(param->treeview));
- columns=columns_list;
- while (columns) {
- gtk_tree_view_remove_column(GTK_TREE_VIEW(param->treeview), columns->data);
- columns=g_list_next(columns);
- }
- g_list_free(columns_list);
- while (*column_text) {
- GtkCellRenderer *cell=gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (param->treeview),-1, navit_nls_gettext(*column_text), cell, "text", i, NULL);
- i++;
- column_text++;
- }
-
-}
-
-static void row_activated(GtkWidget *widget, GtkTreePath *p1, GtkTreeViewColumn *c, struct search_param *search)
-{
- GtkTreePath *path;
- GtkTreeViewColumn *focus_column;
- GtkTreeIter iter;
- GtkWidget *entry_widget;
- char *str;
- int column;
-
- dbg(lvl_debug,"enter\n");
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(search->treeview), &path, &focus_column);
- if(!path)
- return;
- if(!gtk_tree_model_get_iter(search->liststore2, &iter, path))
- return;
- switch(search->attr.type) {
- case attr_country_all:
- entry_widget=search->entry_country;
- column=3;
- break;
- case attr_town_name:
- entry_widget=search->entry_city;
- column=2;
- break;
- case attr_street_name:
- entry_widget=search->entry_street;
- column=4;
- break;
- default:
- dbg(lvl_debug,"Unknown mode\n");
- return;
- }
- gtk_tree_model_get(search->liststore2, &iter, column, &str, -1);
- dbg(lvl_debug,"str=%s\n", str);
- search->partial=0;
- gtk_entry_set_text(GTK_ENTRY(entry_widget), str);
-}
-
-static void tree_view_button_release(GtkWidget *widget, GdkEventButton *event, struct search_param *search)
-{
- GtkTreePath *path;
- GtkTreeViewColumn *column;
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(search->treeview), &path, &column);
- gtk_tree_view_row_activated(GTK_TREE_VIEW(search->treeview), path, column);
-
-}
-static void
-next_focus(struct search_param *search, GtkWidget *widget)
-{
- if (widget == search->entry_country)
- gtk_widget_grab_focus(search->entry_city);
- if (widget == search->entry_city)
- gtk_widget_grab_focus(search->entry_street);
- if (widget == search->entry_street)
- gtk_widget_grab_focus(search->entry_number);
-
-}
-
-static void changed(GtkWidget *widget, struct search_param *search)
-{
- struct search_list_result *res;
- GtkTreeIter iter;
-
- search->attr.u.str=(char *)gtk_entry_get_text(GTK_ENTRY(widget));
- printf("changed %s partial %d\n", search->attr.u.str, search->partial);
- if (widget == search->entry_country) {
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (search->liststore2), 3, GTK_SORT_ASCENDING);
- dbg(lvl_debug,"country\n");
- search->attr.type=attr_country_all;
- set_columns(search, 0);
- }
- if (widget == search->entry_postal) {
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (search->liststore2), 1, GTK_SORT_ASCENDING);
- dbg(lvl_debug,"postal\n");
- search->attr.type=attr_town_postal;
- if (strlen(search->attr.u.str) < 2)
- return;
- set_columns(search, 1);
- }
- if (widget == search->entry_city) {
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (search->liststore2), 2, GTK_SORT_ASCENDING);
- dbg(lvl_debug,"town\n");
- search->attr.type=attr_town_name;
- if (strlen(search->attr.u.str) < 3)
- return;
- set_columns(search, 1);
- }
- if (widget == search->entry_street) {
- dbg(lvl_debug,"street\n");
- search->attr.type=attr_street_name;
- // Searching for a street by just its first letter generates too many hits to be useful,
- // plus it causes the GUI to become unresponsive because the search is single-threaded.
- // So we only start searching once we have two letters.
- if (strlen(search->attr.u.str) < 2)
- return;
- set_columns(search, 2);
- }
-
- search_list_search(search->sl, &search->attr, search->partial);
- gtk_list_store_clear(search->liststore);
- while((res=search_list_get_result(search->sl))) {
- gtk_list_store_append(search->liststore,&iter);
- gtk_list_store_set(search->liststore,&iter,COL_COUNT,res->c,-1);
- if (widget == search->entry_country) {
- if (res->country) {
- gtk_list_store_set(search->liststore,&iter,0,res->country->car,-1);
- gtk_list_store_set(search->liststore,&iter,1,res->country->iso3,-1);
- gtk_list_store_set(search->liststore,&iter,2,res->country->iso2,-1);
- gtk_list_store_set(search->liststore,&iter,3,res->country->name,-1);
- }
- } else {
- if (res->country)
- gtk_list_store_set(search->liststore,&iter,0,res->country->car,-1);
- else
- gtk_list_store_set(search->liststore,&iter,0,"",-1);
- if (res->town) {
- gtk_list_store_set(search->liststore,&iter,1,res->town->common.postal,-1);
- gtk_list_store_set(search->liststore,&iter,2,res->town->common.town_name,-1);
- gtk_list_store_set(search->liststore,&iter,3,res->town->common.district_name,-1);
- } else {
- gtk_list_store_set(search->liststore,&iter,1,"",-1);
- gtk_list_store_set(search->liststore,&iter,2,"",-1);
- gtk_list_store_set(search->liststore,&iter,3,"",-1);
- }
- if (res->street)
- gtk_list_store_set(search->liststore,&iter,4,res->street->name,-1);
- else
- gtk_list_store_set(search->liststore,&iter,4,"",-1);
-
- }
- }
-
- if(! search->partial)
- {
- if( widget == search->entry_country )
- {
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_city), TRUE);
- }
- if( widget == search->entry_city )
- {
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_city), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_street), TRUE);
- }
- if( widget == search->entry_street )
- {
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_city), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_street), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_number), TRUE);
- }
- } else {
- if( widget == search->entry_country )
- {
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_city), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_street), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_number), FALSE);
- }
- if( widget == search->entry_city )
- {
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_street), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_number), FALSE);
- }
- if( widget == search->entry_street )
- {
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_number), FALSE);
- }
- }
- if (! search->partial)
- next_focus(search, widget);
- search->partial=1;
-}
-
-/* borrowed from gpe-login */
-
-
-#define MAX_ARGS 8
-
-static void
-parse_xkbd_args (const char *cmd, char **argv)
-{
- const char *p = cmd;
- char buf[strlen (cmd) + 1], *bufp = buf;
- int nargs = 0;
- int escape = 0, squote = 0, dquote = 0;
-
- while (*p)
- {
- if (escape)
- {
- *bufp++ = *p;
- escape = 0;
- }
- else
- {
- switch (*p)
- {
- case '\\':
- escape = 1;
- break;
- case '"':
- if (squote)
- *bufp++ = *p;
- else
- dquote = !dquote;
- break;
- case '\'':
- if (dquote)
- *bufp++ = *p;
- else
- squote = !squote;
- break;
- case ' ':
- if (!squote && !dquote)
- {
- *bufp = 0;
- if (nargs < MAX_ARGS)
- argv[nargs++] = strdup (buf);
- bufp = buf;
- break;
- }
- default:
- *bufp++ = *p;
- break;
- }
- }
- p++;
- }
-
- if (bufp != buf)
- {
- *bufp = 0;
- if (nargs < MAX_ARGS)
- argv[nargs++] = strdup (buf);
- }
- argv[nargs] = NULL;
-}
-
-int kbd_pid;
-
-static int
-spawn_xkbd (char *xkbd_path, char *xkbd_str)
-{
-#ifdef _WIN32 // AF FIXME for WIN32
- #ifndef F_SETFD
- #define F_SETFD 2
- #endif
-#else
- char *xkbd_args[MAX_ARGS + 1];
- int fd[2];
- char buf[256];
- char c;
- int a = 0;
- size_t n;
-
- pipe (fd);
- kbd_pid = fork ();
- if (kbd_pid == 0)
- {
- close (fd[0]);
- if (dup2 (fd[1], 1) < 0)
- perror ("dup2");
- close (fd[1]);
- if (fcntl (1, F_SETFD, 0))
- perror ("fcntl");
- xkbd_args[0] = (char *)xkbd_path;
- xkbd_args[1] = "-xid";
- if (xkbd_str)
- parse_xkbd_args (xkbd_str, xkbd_args + 2);
- else
- xkbd_args[2] = NULL;
- execvp (xkbd_path, xkbd_args);
- perror (xkbd_path);
- _exit (1);
- }
- close (fd[1]);
- do {
- n = read (fd[0], &c, 1);
- if (n)
- {
- buf[a++] = c;
- }
- } while (n && (c != 10) && (a < (sizeof (buf) - 1)));
-
- if (a)
- {
- buf[a] = 0;
- return atoi (buf);
- }
-#endif
- return 0;
-}
-
-int destination_address(struct navit *nav)
-{
-
- GtkWidget *window2, *keyboard, *vbox, *table;
- GtkWidget *label_country;
- GtkWidget *label_postal, *label_city, *label_district;
- GtkWidget *label_street, *label_number;
- GtkWidget *button1,*button2,*button3;
- int i;
- struct search_param *search=&search_param;
- struct attr search_attr, country_name, *country_attr;
- struct tracking *tracking;
- struct country_search *cs;
- struct item *item;
-
-
- search->nav=nav;
- search->ms=navit_get_mapset(nav);
- search->sl=search_list_new(search->ms);
-
- window2 = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title(GTK_WINDOW(window2),_("Enter Destination"));
- gtk_window_set_wmclass (GTK_WINDOW (window2), "navit", "Navit");
- gtk_window_set_default_size (GTK_WINDOW (window2),0,300);
- vbox = gtk_vbox_new(FALSE, 0);
- table = gtk_table_new(3, 8, FALSE);
-
- search->entry_country = gtk_entry_new();
- label_country = gtk_label_new(_("Country"));
- search->entry_postal = gtk_entry_new();
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_postal), FALSE);
- label_postal = gtk_label_new(_("Zip Code"));
- search->entry_city = gtk_entry_new();
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_city), FALSE);
- label_city = gtk_label_new(_("City"));
- search->entry_district = gtk_entry_new();
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_district), FALSE);
- label_district = gtk_label_new(_("District/Township"));
- search->entry_street = gtk_entry_new();
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_street), FALSE);
- label_street = gtk_label_new(_("Street"));
- search->entry_number = gtk_entry_new();
- gtk_widget_set_sensitive(GTK_WIDGET(search->entry_number), FALSE);
- label_number = gtk_label_new(_("Number"));
- search->treeview=gtk_tree_view_new();
- search->listbox = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (search->listbox),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
- gtk_tree_view_set_model (GTK_TREE_VIEW (search->treeview), NULL);
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(search->listbox),search->treeview);
- {
- GType types[COL_COUNT+1];
- for(i=0;i<COL_COUNT;i++)
- types[i]=G_TYPE_STRING;
- types[i]=G_TYPE_POINTER;
- search->liststore=gtk_list_store_newv(COL_COUNT+1,types);
- search->liststore2=gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(search->liststore));
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (search->liststore2), 3, GTK_SORT_ASCENDING);
- gtk_tree_view_set_model (GTK_TREE_VIEW (search->treeview), GTK_TREE_MODEL(search->liststore2));
- }
-
-
-
-
- button1 = gtk_button_new_with_label(_("Map"));
- button2 = gtk_button_new_with_label(_("Bookmark"));
- button3 = gtk_button_new_with_label(_("Destination"));
-
- gtk_table_attach(GTK_TABLE(table), label_country, 0, 1, 0, 1, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), label_postal, 1, 2, 0, 1, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), label_city, 2, 3, 0, 1, 0, GTK_FILL, 0, 0);
-
- gtk_table_attach(GTK_TABLE(table), search->entry_country, 0, 1, 1, 2, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), search->entry_postal, 1, 2, 1, 2, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), search->entry_city, 2, 3, 1, 2, 0, GTK_FILL, 0, 0);
-
- gtk_table_attach(GTK_TABLE(table), label_district, 0, 1, 2, 3, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), label_street, 1, 2, 2, 3, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), label_number, 2, 3, 2, 3, 0, GTK_FILL, 0, 0);
-
- gtk_table_attach(GTK_TABLE(table), search->entry_district, 0, 1, 3, 4, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), search->entry_street, 1, 2, 3, 4, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), search->entry_number, 2, 3, 3, 4, 0, GTK_FILL, 0, 0);
-
- gtk_table_attach(GTK_TABLE(table), search->listbox, 0, 3, 4, 5, GTK_FILL|GTK_EXPAND, GTK_FILL|GTK_EXPAND, 0, 0);
-
- gtk_table_attach(GTK_TABLE(table), button1, 0, 1, 5, 6, GTK_FILL, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), button2, 1, 2, 5, 6, GTK_FILL, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), button3, 2, 3, 5, 6, GTK_FILL, GTK_FILL, 0, 0);
-
- g_signal_connect(G_OBJECT(search->entry_country), "changed", G_CALLBACK(changed), search);
- g_signal_connect(G_OBJECT(search->entry_postal), "changed", G_CALLBACK(changed), search);
- g_signal_connect(G_OBJECT(search->entry_city), "changed", G_CALLBACK(changed), search);
- g_signal_connect(G_OBJECT(search->entry_district), "changed", G_CALLBACK(changed), search);
- g_signal_connect(G_OBJECT(search->entry_street), "changed", G_CALLBACK(changed), search);
- g_signal_connect(G_OBJECT(search->entry_number), "changed", G_CALLBACK(changed), search);
- g_signal_connect(G_OBJECT(button1), "clicked", G_CALLBACK(button_map), search);
- g_signal_connect(G_OBJECT(button2), "clicked", G_CALLBACK(button_bookmark), search);
- g_signal_connect(G_OBJECT(button3), "clicked", G_CALLBACK(button_destination), search);
- g_signal_connect(G_OBJECT(search->treeview), "button-release-event", G_CALLBACK(tree_view_button_release), search);
- g_signal_connect(G_OBJECT(search->treeview), "row_activated", G_CALLBACK(row_activated), search);
-
- gtk_widget_grab_focus(search->entry_city);
-
- gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0);
- keyboard=gtk_socket_new();
- gtk_box_pack_end(GTK_BOX(vbox), keyboard, FALSE, FALSE, 0);
- gtk_container_add(GTK_CONTAINER(window2), vbox);
-#if 0
- g_signal_connect(G_OBJECT(listbox), "select-row", G_CALLBACK(select_row), NULL);
-#endif
- gtk_widget_show_all(window2);
-
-#ifndef _WIN32
- gtk_socket_steal(GTK_SOCKET(keyboard), spawn_xkbd("xkbd","-geometry 200x100"));
-#endif
-
- country_attr=country_default();
- tracking=navit_get_tracking(nav);
- if (tracking && tracking_get_attr(tracking, attr_country_id, &search_attr, NULL))
- country_attr=&search_attr;
- if (country_attr) {
- cs=country_search_new(country_attr, 0);
- item=country_search_get_item(cs);
- if (item && item_attr_get(item, attr_country_name, &country_name))
- gtk_entry_set_text(GTK_ENTRY(search->entry_country), country_name.u.str);
- country_search_destroy(cs);
- } else {
- dbg(lvl_error,"warning: no default country found\n");
- }
- search->partial=1;
- return 0;
-}
diff --git a/navit/gui/gtk/gui_gtk.h b/navit/gui/gtk/gui_gtk.h
deleted file mode 100644
index 10051beaf..000000000
--- a/navit/gui/gtk/gui_gtk.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * 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 "coord.h"
-
-struct menu_methods;
-struct datawindow_methods;
-struct navit;
-struct callback;
-struct statusbar_priv;
-
-struct gui_priv {
- struct navit *nav;
- GtkWidget *win;
- GtkWidget *dialog_win;
- GtkWidget *dialog_entry;
- struct pcoord dialog_coord;
- GtkWidget *vbox;
- GtkWidget *menubar;
- GtkActionGroup *base_group;
- GtkActionGroup *debug_group;
- GtkActionGroup *dyn_group;
- GtkUIManager *ui_manager;
- GSList *layout_group;
- GSList *projection_group;
- GSList *vehicle_group;
- GList *dest_menuitems;
- GList *bookmarks_menuitems;
- GList *vehicle_menuitems;
- GtkUIManager *menu_manager; // old
- struct statusbar_priv *statusbar;
- int menubar_enable;
- int toolbar_enable;
- int statusbar_enable;
- int dyn_counter;
- struct datawindow_priv *datawindow;
-};
-
-void gui_gtk_ui_init(struct gui_priv *this);
-struct menu_priv *gui_gtk_menubar_new(struct gui_priv *gui, struct menu_methods *meth);
-struct statusbar_priv *gui_gtk_statusbar_new(struct gui_priv *gui);
-struct menu_priv *gui_gtk_popup_new(struct gui_priv *gui, struct menu_methods *meth);
-struct datawindow_priv *gui_gtk_datawindow_new(struct gui_priv *gui, const char *name, struct callback *click, struct callback *close, struct datawindow_methods *meth);
-void gui_gtk_datawindow_destroy(struct datawindow_priv *win);
-void gui_gtk_datawindow_set_button(struct datawindow_priv *this_, GtkWidget *btn);
-
diff --git a/navit/gui/gtk/gui_gtk_action.c b/navit/gui/gtk/gui_gtk_action.c
deleted file mode 100644
index 951f1138a..000000000
--- a/navit/gui/gtk/gui_gtk_action.c
+++ /dev/null
@@ -1,640 +0,0 @@
-/**
- * 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 <string.h>
-#include <gtk/gtk.h>
-#include "navit.h"
-#include "gui_gtk.h"
-#ifdef __APPLE__
-#include "navit/menu.h"
-#else
-#include "menu.h"
-#endif
-#include "coord.h"
-#include "item.h"
-#include "attr.h"
-#include "callback.h"
-#include "debug.h"
-#include "destination.h"
-#include "navit_nls.h"
-#include "gui_gtk_poi.h"
-
-struct menu_priv {
- char *path;
- GtkAction *action;
- struct gui_priv *gui;
- enum menu_type type;
- struct callback *cb;
- struct menu_priv *child;
- struct menu_priv *sibling;
- gulong handler_id;
- guint merge_id;
- GtkWidget *widget;
-};
-
-/* Create callbacks that implement our Actions */
-
-static void
-zoom_in_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- navit_zoom_in(gui->nav, 2, NULL);
-}
-
-static void
-zoom_out_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- navit_zoom_out(gui->nav, 2, NULL);
-}
-
-static void
-refresh_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- navit_draw(gui->nav);
-}
-
-// Forward declarations, these should not be visible outside the GUI, so
-// they are not in the header files, but here
-void gui_gtk_datawindow_set_button(struct datawindow_priv *this_, GtkWidget *btn);
-void gui_gtk_datawindow_destroy(struct datawindow_priv *win);
-
-static void
-roadbook_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
-
- if (! gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w))) {
- gui_gtk_datawindow_destroy(gui->datawindow);
- } else {
- navit_window_roadbook_new(gui->nav);
- if (gui->datawindow) {
- gui_gtk_datawindow_set_button(gui->datawindow, w);
- }
- }
-}
-
-static void
-autozoom_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- struct attr autozoom_attr;
-
- autozoom_attr.type = attr_autozoom_active;
- if (! gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w))) {
- autozoom_attr.u.num = 0;
- } else {
- autozoom_attr.u.num = 1;
- }
-
- navit_set_attr(gui->nav, &autozoom_attr);
-}
-
-static void
-cursor_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- struct attr attr;
-
- attr.type=attr_cursor;
- attr.u.num=gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w));
- if(!navit_set_attr(gui->nav, &attr)) {
- dbg(lvl_error, "Failed to set attr_cursor\n");
- }
-}
-
-static void
-tracking_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- struct attr attr;
-
- attr.type=attr_tracking;
- attr.u.num=gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w));
- if(!navit_set_attr(gui->nav, &attr)) {
- dbg(lvl_error, "Failed to set attr_tracking\n");
- }
-}
-
-static void
-orient_north_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- struct attr attr;
-
- attr.type=attr_orientation;
- attr.u.num=gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w)) ? 0:-1;
- if(!navit_set_attr(gui->nav, &attr)) {
- dbg(lvl_error, "Failed to set attr_orientation\n");
- }
-}
-
-static void
-window_fullscreen_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- if(gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w)))
- gtk_window_fullscreen(GTK_WINDOW(gui->win));
- else
- gtk_window_unfullscreen(GTK_WINDOW(gui->win));
-}
-
-#include <stdlib.h>
-#include "point.h"
-#include "transform.h"
-
-static void
-info_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- char buffer[512];
- int mw,mh;
- struct coord lt, rb;
- struct point p;
- struct transformation *t;
-
- t=navit_get_trans(gui->nav);
- transform_get_size(t, &mw, &mh);
- p.x=0;
- p.y=0;
- transform_reverse(t, &p, &lt);
- p.x=mw;
- p.y=mh;
- transform_reverse(t, &p, &rb);
-
- sprintf(buffer,"./info.sh %d,%d 0x%x,0x%x 0x%x,0x%x", mw, mh, lt.x, lt.y, rb.x, rb.y);
- system(buffer);
-
-}
-
-
-static void
-route_clear_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- navit_set_destination(gui->nav, NULL, NULL, 0);
-}
-
-static void
-poi_search_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- gtk_gui_poi(gui->nav);
-}
-
-static void
-destination_action(GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- destination_address(gui->nav);
-}
-
-static void
-quit_action (GtkWidget *w, struct gui_priv *gui, void *dummy)
-{
- navit_destroy(gui->nav);
- exit(0);
-}
-
-static GtkActionEntry entries[] =
-{
- /* TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired). */
- { "DisplayMenuAction", NULL, _n("_Display") },
- { "RouteMenuAction", NULL, _n("_Route") },
- { "FormerDestinationMenuAction", NULL, _n("_Former Destinations") },
- { "BookmarkMenuAction", NULL, _n("_Bookmarks") },
- { "MapMenuAction", NULL, _n("_Map") },
- { "LayoutMenuAction", NULL, _n("_Layout") },
- { "ProjectionMenuAction", NULL, _n("_Projection") },
- { "VehicleMenuAction", NULL, _n("_Vehicle") },
- { "ZoomOutAction", GTK_STOCK_ZOOM_OUT, _n("Zoom_Out"), "<control>minus", _n("Decrease zoom level"), G_CALLBACK(zoom_out_action) },
- { "ZoomInAction", GTK_STOCK_ZOOM_IN, _n("Zoom_In"), "<control>plus", _n("Increase zoom level"), G_CALLBACK(zoom_in_action) },
- { "RefreshAction", GTK_STOCK_REFRESH, _n("_Recalculate"), "<control>R", _n("Redraw map"), G_CALLBACK(refresh_action) },
-#ifdef GTK_STOCK_INFO
- { "InfoAction", GTK_STOCK_INFO, _n("_Info"), NULL, NULL, G_CALLBACK(info_action) },
-#else
- { "InfoAction", NULL, _n("_Info"), NULL, NULL, G_CALLBACK(info_action) },
-#endif /*GTK_STOCK_INFO*/
- { "DestinationAction", "flag_icon", _n("Set _destination"), "<control>D", _n("Opens address search dialog"), G_CALLBACK(destination_action) },
- { "POIAction", "flag_icon", _n("_POI search"), "<control>P", _n("Opens POI search dialog"), G_CALLBACK(poi_search_action) },
- { "RouteClearAction", NULL, _n("_Stop Navigation"), "<control>S", NULL, G_CALLBACK(route_clear_action) },
- { "Test", NULL, _n("Test"), NULL, NULL, G_CALLBACK(destination_action) },
- { "QuitAction", GTK_STOCK_QUIT, _n("_Quit"), "<control>Q",_n("Quit the application"), G_CALLBACK (quit_action) }
-};
-
-static guint n_entries = G_N_ELEMENTS (entries);
-
-static GtkToggleActionEntry toggleentries[] =
-{
- { "CursorAction", "cursor_icon",_n("Show position _cursor"), NULL, NULL, G_CALLBACK(cursor_action),TRUE },
- { "TrackingAction", NULL ,_n("_Lock on Road"), NULL, NULL, G_CALLBACK(tracking_action),TRUE },
- { "OrientationAction", "orientation_icon", _n("_Keep orientation to the North"), NULL, _n("Switches map orientation to the north or the vehicle"), G_CALLBACK(orient_north_action),FALSE },
- { "RoadbookAction", GTK_STOCK_JUSTIFY_FILL, _n("_Roadbook"), "<control>B", _n("Show/hide route description"), G_CALLBACK(roadbook_action), FALSE },
- { "AutozoomAction", GTK_STOCK_ZOOM_FIT, _n("_Autozoom"), "<control>A", _n("Enable/disable automatic zoom level changing"), G_CALLBACK(autozoom_action), FALSE },
-#ifdef GTK_STOCK_FULLSCREEN
- { "FullscreenAction",GTK_STOCK_FULLSCREEN, _n("_Fullscreen"), "<control>F", NULL, G_CALLBACK(window_fullscreen_action), FALSE }
-#else
- { "FullscreenAction", NULL, _n("_Fullscreen"), "<control>F", NULL, G_CALLBACK(window_fullscreen_action), FALSE }
-#endif /*GTK_STOCK_FULLSCREEN*/
-};
-
-static guint n_toggleentries = G_N_ELEMENTS (toggleentries);
-
-static GtkActionEntry debug_entries[] =
-{
- { "DataMenuAction", NULL, _n("Data") },
-};
-
-static guint n_debug_entries = G_N_ELEMENTS (debug_entries);
-
-
-static const char * cursor_xpm[] = {
-"22 22 2 1",
-" c None",
-". c #0000FF",
-" ",
-" ",
-" ",
-" .. ",
-" .. .. ",
-" .. .. ",
-" . . ",
-" . . ",
-" . ... . ",
-" . ... . . ",
-" . ... . . ",
-" . .. . . ",
-" . . . ",
-" . . . ",
-" . . . ",
-" . . . ",
-" .. .. ",
-" .. .. ",
-" .. ",
-" ",
-" ",
-" "};
-
-
-static const char * north_xpm[] = {
-"22 22 2 1",
-" c None",
-". c #000000",
-" ",
-" ",
-" . ",
-" ... ",
-" . . . ",
-" . . . ",
-" . ",
-" .... . .... ",
-" .... . .... ",
-" .... . .. ",
-" .. .. .. ",
-" .. .. .. ",
-" .. .. .. ",
-" .. .. .. ",
-" .. . .... ",
-" .... . .... ",
-" .... . .... ",
-" . ",
-" . ",
-" . ",
-" ",
-" "};
-
-
-static const char * flag_xpm[] = {
-"22 22 2 1",
-" c None",
-"+ c #000000",
-"+++++++ ",
-"+ +++++++++ ",
-"+ +++ +++++++++ ",
-"+ +++ +++ +++ ",
-"++++ +++ +++ ",
-"++++ +++ +++ ",
-"++++ +++ +++ + ",
-"+ ++++++ +++ + ",
-"+ +++ ++++++ + ",
-"+ +++ +++ +++ ",
-"++++ +++ +++ ",
-"++++ +++ +++ ",
-"++++++++++ +++ + ",
-"+ +++++++++ + ",
-"+ ++++++ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ "};
-
-
-
-static struct {
- gchar *stockid;
- const char **icon_xpm;
-} stock_icons[] = {
- {"cursor_icon", cursor_xpm },
- {"orientation_icon", north_xpm },
- {"flag_icon", flag_xpm }
-};
-
-
-static gint n_stock_icons = G_N_ELEMENTS (stock_icons);
-
-
-static void
-register_my_stock_icons (void)
-{
- GtkIconFactory *icon_factory;
- GtkIconSet *icon_set;
- GdkPixbuf *pixbuf;
- gint i;
-
- icon_factory = gtk_icon_factory_new ();
-
- for (i = 0; i < n_stock_icons; i++)
- {
- pixbuf = gdk_pixbuf_new_from_xpm_data(stock_icons[i].icon_xpm);
- icon_set = gtk_icon_set_new_from_pixbuf (pixbuf);
- g_object_unref(pixbuf);
- gtk_icon_factory_add (icon_factory, stock_icons[i].stockid, icon_set);
- gtk_icon_set_unref (icon_set);
- }
-
- gtk_icon_factory_add_default(icon_factory);
-
- g_object_unref(icon_factory);
-}
-
-
-static char layout[] =
- "<ui>\
- <menubar name=\"MenuBar\">\
- <menu name=\"Display\" action=\"DisplayMenuAction\">\
- <menuitem name=\"Zoom in\" action=\"ZoomInAction\" />\
- <menuitem name=\"Zoom out\" action=\"ZoomOutAction\" />\
- <menuitem name=\"Cursor\" action=\"CursorAction\"/>\
- <menuitem name=\"Tracking\" action=\"TrackingAction\"/>\
- <menuitem name=\"Orientation\" action=\"OrientationAction\"/>\
- <menuitem name=\"Roadbook\" action=\"RoadbookAction\"/>\
- <menuitem name=\"Autozoom\" action=\"AutozoomAction\"/>\
- <menuitem name=\"Fullscreen\" action=\"FullscreenAction\"/>\
- <menuitem name=\"Quit\" action=\"QuitAction\" />\
- <placeholder name=\"RouteMenuAdditions\" />\
- </menu>\
- <menu name=\"Data\" action=\"DataMenuAction\">\
- <placeholder name=\"DataMenuAdditions\" />\
- </menu>\
- <menu name=\"Route\" action=\"RouteMenuAction\">\
- <menuitem name=\"Refresh\" action=\"RefreshAction\" />\
- <menuitem name=\"Destination\" action=\"DestinationAction\" />\
- <menuitem name=\"POI\" action=\"POIAction\" />\
- <menuitem name=\"Clear\" action=\"RouteClearAction\" />\
- <menu name=\"FormerDestinations\" action=\"FormerDestinationMenuAction\">\
- <placeholder name=\"FormerDestinationMenuAdditions\" />\
- </menu>\
- <menu name=\"Bookmarks\" action=\"BookmarkMenuAction\">\
- <placeholder name=\"BookmarkMenuAdditions\" />\
- </menu>\
- <placeholder name=\"RouteMenuAdditions\" />\
- </menu>\
- <menu name=\"Map\" action=\"MapMenuAction\">\
- <menu name=\"Layout\" action=\"LayoutMenuAction\">\
- <placeholder name=\"LayoutMenuAdditions\" />\
- </menu>\
- <menu name=\"Projection\" action=\"ProjectionMenuAction\">\
- <placeholder name=\"ProjectionMenuAdditions\" />\
- </menu>\
- <menu name=\"Vehicle\" action=\"VehicleMenuAction\">\
- <placeholder name=\"VehicleMenuAdditions\" />\
- </menu>\
- <placeholder name=\"MapMenuAdditions\" />\
- </menu>\
- </menubar>\
- <toolbar name=\"ToolBar\" action=\"BaseToolbar\" action=\"BaseToolbarAction\">\
- <placeholder name=\"ToolItems\">\
- <separator/>\
- <toolitem name=\"Zoom in\" action=\"ZoomInAction\"/>\
- <toolitem name=\"Zoom out\" action=\"ZoomOutAction\"/>\
- <toolitem name=\"Refresh\" action=\"RefreshAction\"/>\
- <!-- <toolitem name=\"Cursor\" action=\"CursorAction\"/> -->\
- <toolitem name=\"Orientation\" action=\"OrientationAction\"/>\
- <toolitem name=\"Destination\" action=\"DestinationAction\"/>\
- <toolitem name=\"POI\" action=\"POIAction\"/>\
- <!-- <toolitem name=\"Info\" action=\"InfoAction\"/> -->\
- <toolitem name=\"Roadbook\" action=\"RoadbookAction\"/>\
- <toolitem name=\"Autozoom\" action=\"AutozoomAction\"/>\
- <toolitem name=\"Quit\" action=\"QuitAction\"/>\
- <separator/>\
- </placeholder>\
- </toolbar>\
- <popup name=\"PopUp\">\
- </popup>\
- </ui>";
-
-
-static void
-activate(void *dummy, struct menu_priv *menu)
-{
- if (menu->cb)
- callback_call_0(menu->cb);
-}
-
-static struct menu_methods menu_methods;
-
-static struct menu_priv *
-add_menu(struct menu_priv *menu, struct menu_methods *meth, char *name, enum menu_type type, struct callback *cb)
-{
- struct menu_priv *ret;
- char *dynname;
-
- ret=g_new0(struct menu_priv, 1);
- *meth=menu_methods;
- if (! strcmp(menu->path, "/ui/MenuBar") && !strcmp(name,"Route")) {
- dynname=g_strdup("Route");
- } else if (! strcmp(menu->path, "/ui/MenuBar") && !strcmp(name,"Data")) {
- dynname=g_strdup("Data");
- } else {
- dynname=g_strdup_printf("%d", menu->gui->dyn_counter++);
- if (type == menu_type_toggle)
- ret->action=GTK_ACTION(gtk_toggle_action_new(dynname, name, NULL, NULL));
- else
- ret->action=gtk_action_new(dynname, name, NULL, NULL);
- if (cb)
- ret->handler_id=g_signal_connect(ret->action, "activate", G_CALLBACK(activate), ret);
- gtk_action_group_add_action(menu->gui->dyn_group, ret->action);
- ret->merge_id=gtk_ui_manager_new_merge_id(menu->gui->ui_manager);
- gtk_ui_manager_add_ui( menu->gui->ui_manager, ret->merge_id, menu->path, dynname, dynname, type == menu_type_submenu ? GTK_UI_MANAGER_MENU : GTK_UI_MANAGER_MENUITEM, FALSE);
- }
- ret->gui=menu->gui;
- ret->path=g_strdup_printf("%s/%s", menu->path, dynname);
- ret->type=type;
- ret->cb=cb;
- ret->sibling=menu->child;
- menu->child=ret;
- g_free(dynname);
- return ret;
-
-}
-
-static void
-remove_menu(struct menu_priv *item, int recursive)
-{
-
- if (recursive) {
- struct menu_priv *next,*child=item->child;
- while (child) {
- next=child->sibling;
- remove_menu(child, recursive);
- child=next;
- }
- }
- if (item->action) {
- gtk_ui_manager_remove_ui(item->gui->ui_manager, item->merge_id);
- gtk_action_group_remove_action(item->gui->dyn_group, item->action);
-#if 0
- if (item->callback)
- g_signal_handler_disconnect(item->action, item->handler_id);
-#endif
- g_object_unref(item->action);
- }
- g_free(item->path);
- g_free(item);
-}
-
-static void
-set_toggle(struct menu_priv *menu, int active)
-{
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(menu->action), active);
-}
-
-static int
-get_toggle(struct menu_priv *menu)
-{
- return gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(menu->action));
-}
-
-static struct menu_methods menu_methods = {
-#if 1
- add_menu,
- set_toggle,
- get_toggle,
-#else
- NULL,
- NULL,
- NULL
-#endif
-};
-
-
-static void
-popup_deactivate(GtkWidget *widget, struct menu_priv *menu)
-{
- g_signal_handler_disconnect(widget, menu->handler_id);
- remove_menu(menu, 1);
-}
-
-static void
-popup_activate(struct menu_priv *menu)
-{
-#ifdef _WIN32
- menu->widget=gtk_ui_manager_get_widget(menu->gui->ui_manager, menu->path );
-#endif
- gtk_menu_popup(GTK_MENU(menu->widget), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time ());
- menu->handler_id=g_signal_connect(menu->widget, "selection-done", G_CALLBACK(popup_deactivate), menu);
-}
-
-void
-gui_gtk_ui_init(struct gui_priv *this)
-{
- GError *error = NULL;
- struct attr attr;
- GtkToggleAction *toggle_action;
-
- this->base_group = gtk_action_group_new ("BaseActions");
- this->debug_group = gtk_action_group_new ("DebugActions");
- this->dyn_group = gtk_action_group_new ("DynamicActions");
- register_my_stock_icons();
- this->ui_manager = gtk_ui_manager_new ();
- gtk_action_group_set_translation_domain(this->base_group,"navit");
- gtk_action_group_set_translation_domain(this->debug_group,"navit");
- gtk_action_group_set_translation_domain(this->dyn_group,"navit");
- gtk_action_group_add_actions (this->base_group, entries, n_entries, this);
- gtk_action_group_add_toggle_actions (this->base_group, toggleentries, n_toggleentries, this);
- gtk_ui_manager_insert_action_group (this->ui_manager, this->base_group, 0);
- gtk_action_group_add_actions (this->debug_group, debug_entries, n_debug_entries, this);
- gtk_ui_manager_insert_action_group (this->ui_manager, this->debug_group, 0);
- gtk_ui_manager_add_ui_from_string (this->ui_manager, layout, strlen(layout), &error);
- gtk_ui_manager_insert_action_group (this->ui_manager, this->dyn_group, 0);
- if (error) {
- g_message ("building menus failed: %s", error->message);
- g_error_free (error);
- }
- if (navit_get_attr(this->nav, attr_cursor, &attr, NULL)) {
- toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "CursorAction"));
- gtk_toggle_action_set_active(toggle_action, attr.u.num);
- }
- if (navit_get_attr(this->nav, attr_orientation, &attr, NULL)) {
- toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "OrientationAction"));
- gtk_toggle_action_set_active(toggle_action, attr.u.num != -1);
- }
- if (navit_get_attr(this->nav, attr_tracking, &attr, NULL)) {
- toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "TrackingAction"));
- gtk_toggle_action_set_active(toggle_action, attr.u.num);
- }
- toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "RoadbookAction"));
- gtk_toggle_action_set_active(toggle_action, 0);
-
- if (navit_get_attr(this->nav, attr_autozoom_active, &attr, NULL)) {
- toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "AutozoomAction"));
- gtk_toggle_action_set_active(toggle_action, attr.u.num);
- }
-
-}
-
-static struct menu_priv *
-gui_gtk_ui_new (struct gui_priv *this, struct menu_methods *meth, char *path, int popup, GtkWidget **widget_ret)
-{
- struct menu_priv *ret;
- GtkWidget *widget;
-
- *meth=menu_methods;
- ret=g_new0(struct menu_priv, 1);
- ret->path=g_strdup(path);
- ret->gui=this;
-
- widget=gtk_ui_manager_get_widget(this->ui_manager, path);
- GTK_WIDGET_UNSET_FLAGS (widget, GTK_CAN_FOCUS);
- if (widget_ret)
- *widget_ret=widget;
- if (! popup) {
- gtk_box_pack_start (GTK_BOX(this->vbox), widget, FALSE, FALSE, 0);
- gtk_widget_show (widget);
- } else {
- ret->widget=widget;
- meth->popup=popup_activate;
- }
- return ret;
-}
-
-#if 0
-struct menu_priv *
-gui_gtk_menubar_new(struct gui_priv *this, struct menu_methods *meth)
-{
- return gui_gtk_ui_new(this, meth, "/ui/MenuBar", 0, &this->menubar);
-}
-#endif
-
-struct menu_priv *
-gui_gtk_popup_new(struct gui_priv *this, struct menu_methods *meth)
-{
- return gui_gtk_ui_new(this, meth, "/ui/PopUp", 1, NULL);
-}
diff --git a/navit/gui/gtk/gui_gtk_poi.c b/navit/gui/gtk/gui_gtk_poi.c
deleted file mode 100644
index a3578243b..000000000
--- a/navit/gui/gtk/gui_gtk_poi.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2013 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 <stdlib.h>
-#include <gtk/gtk.h>
-#include "gui_gtk_poi.h"
-#include "popup.h"
-#include "debug.h"
-#include "navit_nls.h"
-#include "coord.h"
-#include "point.h"
-#include "callback.h"
-#include "graphics.h"
-#include "navit.h"
-#include "item.h"
-#include "map.h"
-#include "mapset.h"
-#include "transform.h"
-#include "attr.h"
-#include "util.h"
-
-static struct gtk_poi_search{
- GtkWidget *entry_distance;
- GtkWidget *label_distance;
- GtkWidget *treeview_cat;
- GtkWidget *treeview_poi;
- GtkWidget *button_visit, *button_destination, *button_map;
- GtkListStore *store_poi;
- GtkListStore *store_cat;
- GtkTreeModel *store_poi_sorted;
- GtkTreeModel *store_cat_sorted;
- char *selected_cat;
- struct navit *nav;
-} gtk_poi_search;
-
-static GdkPixbuf *
-geticon(const char *name){
- GdkPixbuf *icon=NULL;
- GError *error=NULL;
- icon=gdk_pixbuf_new_from_file(graphics_icon_path(name),&error);
- if (error) {
- dbg(lvl_error, "failed to load icon '%s': %s\n", name, error->message);
- }
- return icon;
-}
-
-/** Build the category list model with icons. */
-static GtkTreeModel *
-category_list_model(struct gtk_poi_search *search)
-{
- GtkTreeIter iter;
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter, 0,geticon("pharmacy.png"), 1, _("Pharmacy"), 2, "poi_pharmacy", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter, 0, geticon("restaurant.png"), 1, _("Restaurant"), 2, "poi_restaurant", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("restaurant.png"), 1, _("Restaurant. Fast food"), 2, "poi_fastfood", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("hotel.png"), 1, _("Hotel"), 2, "poi_hotel", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("parking.png"), 1, _("Car parking"), 2, "poi_car_parking", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("fuel.png"), 1, _("Fuel station"), 2, "poi_fuel", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("bank.png"), 1, _("Bank"), 2, "poi_bank", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("hospital.png"), 1, _("Hospital"), 2, "poi_hospital", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("cinema.png"), 1, _("Cinema"), 2, "poi_cinema", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("rail_station.png"), 1, _("Train station"), 2, "poi_rail_station", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("school.png"), 1, _("School"), 2, "poi_school", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("police.png"), 1, _("Police"), 2, "poi_police", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("justice.png"), 1, _("Justice"), 2, "poi_justice", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("taxi.png"), 1, _("Taxi"), 2, "poi_taxi", -1);
- gtk_list_store_append(search->store_cat, &iter);
- gtk_list_store_set(search->store_cat, &iter,0, geticon("shopping.png"), 1, _("Shopping"), 2, "poi_shopping", -1);
- return GTK_TREE_MODEL (search->store_cat_sorted);
-}
-
-
-/** Construct model of POIs from map information. */
-static GtkTreeModel *
-model_poi (struct gtk_poi_search *search)
-{
- GtkTreeIter iter;
- struct map_selection *sel,*selm;
- struct coord coord_item,center;
- struct pcoord pc;
- struct mapset_handle *h;
- int search_distance_meters,idist;
- struct map *m;
- struct map_rect *mr;
- struct item *item;
- struct point cursor_position;
- enum item_type selected;
-
- search_distance_meters=1000*atoi((char *) gtk_entry_get_text(GTK_ENTRY(search->entry_distance)));
-
- cursor_position.x=navit_get_width(search->nav)/2;
- cursor_position.y=navit_get_height(search->nav)/2;
- gtk_label_set_text(GTK_LABEL(search->label_distance),_("Distance from screen center (km)"));
-
- transform_reverse(navit_get_trans(search->nav), &cursor_position, &center);
- pc.pro = transform_get_projection(navit_get_trans(search->nav));
- pc.x = center.x;
- pc.y = center.y;
-
- //Search in the map, for pois
- sel=map_selection_rect_new(&pc ,search_distance_meters*transform_scale(abs(center.y)+search_distance_meters*1.5),18);
- gtk_list_store_clear(search->store_poi);
-
- h=mapset_open(navit_get_mapset(search->nav));
-
- selected=item_from_name(search->selected_cat);
- while ((m=mapset_next(h, 1))) {
- selm=map_selection_dup_pro(sel, projection_mg, map_projection(m));
- mr=map_rect_new(m, selm);
- if (mr) {
- while ((item=map_rect_get_item(mr))) {
- struct attr label_attr;
- item_attr_get(item,attr_label,&label_attr);
- item_coord_get(item,&coord_item,1);
- idist=transform_distance(1,&center,&coord_item);
- if (item->type==selected && idist<=search_distance_meters){
- char direction[5];
- gtk_list_store_append(search->store_poi, &iter);
- get_compass_direction(direction,transform_get_angle_delta(&center,&coord_item,0),1);
- gtk_list_store_set(search->store_poi, &iter, 0,direction, 1,idist,
- 2,g_strdup(label_attr.u.str), 3,coord_item.x, 4,coord_item.y ,-1);
- }
- }
- map_rect_destroy(mr);
- }
- map_selection_destroy(selm);
- }
- map_selection_destroy(sel);
- mapset_close(h);
-
- return GTK_TREE_MODEL (search->store_poi_sorted);
-}
-
-/** Enable button if there is a selected row. */
-static void
-treeview_poi_changed(GtkWidget *widget, struct gtk_poi_search *search)
-{
- GtkTreePath *path;
- GtkTreeViewColumn *focus_column;
- GtkTreeIter iter;
-
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(search->treeview_cat), &path, &focus_column);
- if(!path) return;
- if(!gtk_tree_model_get_iter(GTK_TREE_MODEL(search->store_cat_sorted), &iter, path)) return;
-
- gtk_widget_set_sensitive(search->button_visit,TRUE);
- gtk_widget_set_sensitive(search->button_map,TRUE);
- gtk_widget_set_sensitive(search->button_destination,TRUE);
-}
-
-/** Reload the POI list and disable buttons. */
-static void
-treeview_poi_reload(GtkWidget *widget, struct gtk_poi_search *search)
-{
- GtkTreePath *path;
- GtkTreeViewColumn *focus_column;
- GtkTreeIter iter;
-
- gtk_widget_set_sensitive(search->button_visit,FALSE);
- gtk_widget_set_sensitive(search->button_map,FALSE);
- gtk_widget_set_sensitive(search->button_destination,FALSE);
-
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(search->treeview_cat), &path, &focus_column);
- if(!path) return;
- if(!gtk_tree_model_get_iter(GTK_TREE_MODEL(search->store_cat_sorted), &iter, path)) return;
- gtk_tree_model_get(GTK_TREE_MODEL(search->store_cat_sorted), &iter, 2, &search->selected_cat, -1);
- gtk_tree_view_set_model(GTK_TREE_VIEW (search->treeview_poi), model_poi(search));
-}
-
-/** Set the selected POI as destination. */
-static void
-button_destination_clicked(GtkWidget *widget, struct gtk_poi_search *search)
-{
- GtkTreePath *path;
- GtkTreeViewColumn *focus_column;
- GtkTreeIter iter;
- long int lat, lon;
- char *label;
- char *category;
- char buffer[2000];
-
- //Get category
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(search->treeview_cat), &path, &focus_column);
- if(!path) return;
- if(!gtk_tree_model_get_iter(GTK_TREE_MODEL(search->store_cat_sorted), &iter, path)) return;
- gtk_tree_model_get(GTK_TREE_MODEL(search->store_cat_sorted), &iter, 1, &category, -1);
-
- //Get label, lat, lon
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(search->treeview_poi), &path, &focus_column);
- if(!path) return;
- if(!gtk_tree_model_get_iter(GTK_TREE_MODEL(search->store_poi_sorted), &iter, path)) return;
- gtk_tree_model_get(GTK_TREE_MODEL(search->store_poi_sorted), &iter, 2, &label, -1);
- gtk_tree_model_get(GTK_TREE_MODEL(search->store_poi_sorted), &iter, 3, &lat, -1);
- gtk_tree_model_get(GTK_TREE_MODEL(search->store_poi_sorted), &iter, 4, &lon, -1);
- sprintf(buffer, _("POI %s. %s"), category, label);
-
- struct pcoord dest;
- dest.x=lat;
- dest.y=lon;
- dest.pro=1;
- navit_set_destination(search->nav, &dest, buffer, 1);
- dbg(lvl_debug,_("Set destination to %ld, %ld \n"),lat,lon);
-}
-
-/* Show the POI's position in the map. */
-static void
-button_map_clicked(GtkWidget *widget, struct gtk_poi_search *search)
-{
- GtkTreePath *path;
- GtkTreeViewColumn *focus_column;
- GtkTreeIter iter;
- long int lat,lon;
-
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(search->treeview_poi), &path, &focus_column);
- if(!path) return;
- if(!gtk_tree_model_get_iter(GTK_TREE_MODEL(search->store_poi_sorted), &iter, path)) return;
- gtk_tree_model_get(GTK_TREE_MODEL(search->store_poi_sorted), &iter, 3, &lat, -1);
- gtk_tree_model_get(GTK_TREE_MODEL(search->store_poi_sorted), &iter, 4, &lon, -1);
-
- struct pcoord dest;
- dest.x=lat;
- dest.y=lon;
- dest.pro=1;
- navit_set_center(search->nav, &dest,1);
- dbg(lvl_debug,_("Set map to %ld, %ld \n"),lat,lon);
-}
-
-/** Set POI as the first "visit before". */
-static void
-button_visit_clicked(GtkWidget *widget, struct gtk_poi_search *search)
-{
- GtkTreePath *path;
- GtkTreeViewColumn *focus_column;
- GtkTreeIter iter;
- long int lat,lon;
-
- gtk_tree_view_get_cursor(GTK_TREE_VIEW(search->treeview_poi), &path, &focus_column);
- if(!path) return;
- if(!gtk_tree_model_get_iter(GTK_TREE_MODEL(search->store_poi_sorted), &iter, path)) return;
- gtk_tree_model_get(GTK_TREE_MODEL(search->store_poi_sorted), &iter, 3, &lat, -1);
- gtk_tree_model_get(GTK_TREE_MODEL(search->store_poi_sorted), &iter, 4, &lon, -1);
- dbg(lvl_debug,_("Set next visit to %ld, %ld \n"),lat,lon);
-
- struct pcoord dest;
- dest.x=lat;
- dest.y=lon;
- dest.pro=1;
- popup_set_visitbefore(search->nav,&dest,0);
-}
-
-/** Create UI and connect objects to functions. */
-void gtk_gui_poi(struct navit *nav)
-{
- GtkWidget *window2,*vbox, *keyboard, *table;
- GtkWidget *label_category, *label_poi;
- GtkWidget *listbox_cat, *listbox_poi;
- GtkCellRenderer *renderer;
-
- struct gtk_poi_search *search=&gtk_poi_search;
- search->nav=nav;
-
- window2 = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title(GTK_WINDOW(window2),_("POI search"));
- gtk_window_set_wmclass (GTK_WINDOW (window2), "navit", "Navit");
- gtk_window_set_default_size (GTK_WINDOW (window2),700,550);
- vbox = gtk_vbox_new(FALSE, 0);
- table = gtk_table_new(4, 4, FALSE);
-
- label_category = gtk_label_new(_("Select a category"));
- search->label_distance = gtk_label_new(_("Select a distance to look for (km)"));
- label_poi=gtk_label_new(_("Select a POI"));
-
- search->entry_distance=gtk_entry_new_with_max_length(2);
- gtk_entry_set_text(GTK_ENTRY(search->entry_distance),"10");
-
- search->treeview_cat=gtk_tree_view_new();
- listbox_cat = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (listbox_cat), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(listbox_cat),search->treeview_cat);
- search->store_cat = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
- renderer=gtk_cell_renderer_pixbuf_new();
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (search->treeview_cat),-1, _(" "), renderer, "pixbuf", 0, NULL);
- renderer=gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (search->treeview_cat),-1, _("Category"), renderer, "text", 1, NULL);
- search->store_cat_sorted=gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(search->store_cat));
- gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(search->store_cat_sorted),1,GTK_SORT_ASCENDING);
- gtk_tree_view_set_model (GTK_TREE_VIEW (search->treeview_cat), category_list_model(search));
-
- search->treeview_poi=gtk_tree_view_new();
- listbox_poi = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (listbox_poi), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(listbox_poi),search->treeview_poi);
- search->store_poi = gtk_list_store_new (5, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_LONG, G_TYPE_LONG);
- renderer=gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (search->treeview_poi),-1, _("Direction"), renderer, "text",0,NULL);
- renderer=gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (search->treeview_poi),-1, _("Distance(m)"), renderer, "text", 1, NULL);
- renderer=gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (search->treeview_poi),-1, _("Name"), renderer, "text", 2, NULL);
- search->store_poi_sorted=gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(search->store_poi));
- gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(search->store_poi_sorted),1,GTK_SORT_ASCENDING);
-
- search->button_visit = gtk_button_new_with_label(_("Visit Before"));
- search->button_destination = gtk_button_new_with_label(_("Destination"));
- search->button_map = gtk_button_new_with_label(_("Map"));
- gtk_widget_set_sensitive(search->button_visit,FALSE);
- gtk_widget_set_sensitive(search->button_map,FALSE);
- gtk_widget_set_sensitive(search->button_destination,FALSE);
-
- gtk_table_attach(GTK_TABLE(table), search->label_distance, 0, 1, 0, 1, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), search->entry_distance, 1, 2, 0, 1, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), label_category, 0, 1, 2, 3, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), listbox_cat, 0, 1, 3, 4, GTK_FILL|GTK_EXPAND, GTK_FILL|GTK_EXPAND, 0, 0);
- gtk_table_attach(GTK_TABLE(table), label_poi, 1, 4, 2, 3, 0, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), listbox_poi, 1, 4, 3, 4, GTK_FILL|GTK_EXPAND, GTK_FILL|GTK_EXPAND, 0, 0);
- gtk_table_attach(GTK_TABLE(table), search->button_map, 0, 1, 4, 5, GTK_FILL, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), search->button_visit, 1, 2, 4, 5, GTK_FILL, GTK_FILL, 0, 0);
- gtk_table_attach(GTK_TABLE(table), search->button_destination, 2, 3, 4, 5, GTK_FILL, GTK_FILL, 0, 0);
- gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, TRUE, 0);
-
- g_signal_connect(G_OBJECT(search->entry_distance), "changed", G_CALLBACK(treeview_poi_reload), search);
- g_signal_connect(G_OBJECT(search->button_visit), "clicked", G_CALLBACK(button_visit_clicked), search);
- g_signal_connect(G_OBJECT(search->button_map), "clicked", G_CALLBACK(button_map_clicked), search);
- g_signal_connect(G_OBJECT(search->button_destination), "clicked", G_CALLBACK(button_destination_clicked), search);
- g_signal_connect(G_OBJECT(search->treeview_cat), "cursor_changed", G_CALLBACK(treeview_poi_reload), search);
- g_signal_connect(G_OBJECT(search->treeview_poi), "cursor_changed", G_CALLBACK(treeview_poi_changed), search);
-
- keyboard=gtk_socket_new();
- gtk_box_pack_end(GTK_BOX(vbox), keyboard, FALSE, FALSE, 0);
- gtk_container_add(GTK_CONTAINER(window2), vbox);
- gtk_widget_show_all(window2);
-}
-
diff --git a/navit/gui/gtk/gui_gtk_poi.h b/navit/gui/gtk/gui_gtk_poi.h
deleted file mode 100644
index 0f0087d49..000000000
--- a/navit/gui/gtk/gui_gtk_poi.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2013 Navit Team
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_GTK_POI_H
-#define NAVIT_GTK_POI_H
-
-struct navit;
-struct pcoord;
-void gtk_gui_poi(struct navit *nav);
-
-#endif
-
diff --git a/navit/gui/gtk/gui_gtk_statusbar.c b/navit/gui/gtk/gui_gtk_statusbar.c
deleted file mode 100644
index 0f0dcc0e8..000000000
--- a/navit/gui/gtk/gui_gtk_statusbar.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <math.h>
-#include <gtk/gtk.h>
-#include "item.h"
-#include "coord.h"
-#include "debug.h"
-#include "vehicle.h"
-#include "callback.h"
-#include "route.h"
-#include "transform.h"
-#include "navit.h"
-#include "map.h"
-#include "navigation.h"
-#include "gui_gtk.h"
-#include "navit_nls.h"
-
-struct statusbar_priv {
- struct gui_priv *gui;
- GtkWidget *hbox;
- char gps_text[128];
- GtkWidget *gps;
- char route_text[128];
- GtkWidget *route;
- struct callback *vehicle_cb;
-};
-
-#if 0
-static void
-statusbar_destroy(struct statusbar_priv *this)
-{
- g_free(this);
-}
-
-static void
-statusbar_gps_update(struct statusbar_priv *this, int sats, int qual, double lng, double lat, double height, double direction, double speed)
-{
- char *dirs[]={_("N"),_("NE"),_("E"),_("SE"),_("S"),_("SW"),_("W"),_("NW"),_("N")};
- char *dir;
- int dir_idx;
- char pos_text[36];
-
- coord_format(lat,lng,DEGREES_MINUTES_SECONDS,pos_text,sizeof(pos_text));
- dir=dirs[dir_idx];
- sprintf(this->gps_text, "GPS %02d/%02d %s %4.0fm %3.0f°%-2s %3.0fkm/h", sats, qual, pos_text, height, direction, dir, speed);
- gtk_label_set_text(GTK_LABEL(this->gps), this->gps_text);
-
-}
-#endif
-
-static const char *status_fix2str(int type)
-{
- switch(type) {
- case 0: return _("No");
- case 1: return _("2D");
- case 3: return _("3D");
- default:
- return _("OT");
- }
-}
-
-static void
-statusbar_route_update(struct statusbar_priv *this, struct navit *navit, struct vehicle *v)
-{
- struct navigation *nav=NULL;
- struct map *map=NULL;
- struct map_rect *mr=NULL;
- struct item *item=NULL;
- struct attr attr;
- double route_len=0;
- time_t eta;
- struct tm *eta_tm=NULL;
- char buffer[128];
- double lng, lat, direction=0, height=0, speed=0, hdop=0;
- int sats=0, qual=0;
- int status=0;
- const char *dirs[]={_("N"),_("NE"),_("E"),_("SE"),_("S"),_("SW"),_("W"),_("NW"),_("N")};
- const char *dir;
- int dir_idx;
-
- if (navit)
- nav=navit_get_navigation(navit);
- if (nav)
- map=navigation_get_map(nav);
- if (map)
- mr=map_rect_new(map, NULL);
- if (mr)
- item=map_rect_get_item(mr);
- if (item) {
- if (item_attr_get(item, attr_destination_length, &attr))
- route_len=attr.u.num;
- if (item_attr_get(item, attr_destination_time, &attr)) {
- eta=time(NULL)+attr.u.num/10;
- eta_tm=localtime(&eta);
- }
- }
- if (mr)
- map_rect_destroy(mr);
- sprintf(buffer,_("Route %4.0fkm %02d:%02d ETA" ),route_len/1000, eta_tm ? eta_tm->tm_hour : 0 , eta_tm ? eta_tm->tm_min : 0);
- if (strcmp(buffer, this->route_text)) {
- strcpy(this->route_text, buffer);
- gtk_label_set_text(GTK_LABEL(this->route), this->route_text);
- }
- if (!vehicle_get_attr(v, attr_position_coord_geo, &attr, NULL))
- return;
- lng=attr.u.coord_geo->lng;
- lat=attr.u.coord_geo->lat;
- if (vehicle_get_attr(v, attr_position_fix_type, &attr, NULL))
- status=attr.u.num;
- if (vehicle_get_attr(v, attr_position_direction, &attr, NULL))
- direction=*(attr.u.numd);
- direction=fmod(direction,360);
- if (direction < 0)
- direction+=360;
- dir_idx=(direction+22.5)/45;
- dir=dirs[dir_idx];
- if (vehicle_get_attr(v, attr_position_height, &attr, NULL))
- height=*(attr.u.numd);
- if (vehicle_get_attr(v, attr_position_hdop, &attr, NULL))
- hdop=*(attr.u.numd);
- if (vehicle_get_attr(v, attr_position_speed, &attr, NULL))
- speed=*(attr.u.numd);
- if (vehicle_get_attr(v, attr_position_sats_used, &attr, NULL))
- sats=attr.u.num;
- if (vehicle_get_attr(v, attr_position_qual, &attr, NULL))
- qual=attr.u.num;
- coord_format(lat,lng,DEGREES_MINUTES_SECONDS,buffer,sizeof(buffer));
- sprintf(this->gps_text,"GPS:%s %02d/%02d HD:%02.2f %s %4.0fm %3.0f°%-2s %3.0fkm/h",
- status_fix2str(status),
- sats, qual, hdop, buffer, height,
- direction, dir, speed);
- gtk_label_set_text(GTK_LABEL(this->gps), this->gps_text);
-}
-
-struct statusbar_priv *
-gui_gtk_statusbar_new(struct gui_priv *gui)
-{
- struct statusbar_priv *this=g_new0(struct statusbar_priv, 1);
-
- this->gui=gui;
- this->hbox=gtk_hbox_new(FALSE, 1);
- this->gps=gtk_label_new( "GPS 00/0 0000.0000N 00000.0000E 0000m 000°NO 000km/h" );
- gtk_label_set_justify(GTK_LABEL(this->gps), GTK_JUSTIFY_LEFT);
- this->route=gtk_label_new( _( "Route 0000km 0+00:00 ETA" ) );
- gtk_label_set_justify(GTK_LABEL(this->route), GTK_JUSTIFY_LEFT);
- gtk_box_pack_start(GTK_BOX(this->hbox), this->gps, TRUE, TRUE, 2);
- gtk_box_pack_start(GTK_BOX(this->hbox), gtk_vseparator_new(), TRUE, TRUE, 2);
- gtk_box_pack_start(GTK_BOX(this->hbox), this->route, TRUE, TRUE, 2);
- GTK_WIDGET_UNSET_FLAGS (this->hbox, GTK_CAN_FOCUS);
-
- gtk_box_pack_end(GTK_BOX(gui->vbox), this->hbox, FALSE, FALSE, 0);
- gtk_widget_show_all(this->hbox);
- /* add a callback for position updates */
- this->vehicle_cb=callback_new_attr_1(callback_cast(statusbar_route_update), attr_position_coord_geo, this);
- navit_add_callback(gui->nav, this->vehicle_cb);
- return this;
-}
-
diff --git a/navit/gui/gtk/gui_gtk_window.c b/navit/gui/gtk/gui_gtk_window.c
deleted file mode 100644
index 1741a54a0..000000000
--- a/navit/gui/gtk/gui_gtk_window.c
+++ /dev/null
@@ -1,812 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <locale.h>
-#include <gdk/gdkkeysyms.h>
-#if !defined(GDK_Book) || !defined(GDK_Calendar)
-#include <X11/XF86keysym.h>
-#endif
-#include <gtk/gtk.h>
-#include "config.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "navit.h"
-#include "debug.h"
-#include "gui.h"
-#include "coord.h"
-#include "point.h"
-#include "plugin.h"
-#include "graphics.h"
-#include "gui_gtk.h"
-#include "transform.h"
-#include "config.h"
-#include "callback.h"
-#include "layout.h"
-#include "vehicle.h"
-#include "map.h"
-#include "coord.h"
-#include "event.h"
-#include "bookmarks.h"
-#include "route.h"
-#include "navit_nls.h"
-
-#ifdef USE_HILDON
-#include "hildon/hildon-defines.h"
-#define KEY_ZOOM_IN HILDON_HARDKEY_INCREASE
-#define KEY_ZOOM_OUT HILDON_HARDKEY_DECREASE
-#define KEY_UP HILDON_HARDKEY_UP
-#define KEY_DOWN HILDON_HARDKEY_DOWN
-#define KEY_LEFT HILDON_HARDKEY_LEFT
-#define KEY_RIGHT HILDON_HARDKEY_RIGHT
-#else
-#ifndef GDK_Book
-#define GDK_Book XF86XK_Book
-#endif
-#ifndef GDK_Calendar
-#define GDK_Calendar XF86XK_Calendar
-#endif
-#define KEY_ZOOM_IN GDK_Book
-#define KEY_ZOOM_OUT GDK_Calendar
-#define KEY_UP GDK_Up
-#define KEY_DOWN GDK_Down
-#define KEY_LEFT GDK_Left
-#define KEY_RIGHT GDK_Right
-#endif
-
-static gboolean
-keypress(GtkWidget *widget, GdkEventKey *event, struct gui_priv *this)
-{
- int w,h;
- struct transformation *t;
- #ifdef USE_HILDON
- GtkToggleAction *action;
- gboolean *fullscreen;
- #endif /*HILDON*/
- struct point p;
- if (event->type != GDK_KEY_PRESS)
- return FALSE;
- dbg(lvl_debug,"keypress 0x%x\n", event->keyval);
- transform_get_size(navit_get_trans(this->nav), &w, &h);
- switch (event->keyval) {
- case GDK_KP_Enter:
- gtk_menu_shell_select_first(GTK_MENU_SHELL(this->menubar), TRUE);
- break;
- case KEY_UP:
- p.x=w/2;
- p.y=0;
- navit_set_center_screen(this->nav, &p, 1);
- break;
- case KEY_DOWN:
- p.x=w/2;
- p.y=h;
- navit_set_center_screen(this->nav, &p, 1);
- break;
- case KEY_LEFT:
- p.x=0;
- p.y=h/2;
- navit_set_center_screen(this->nav, &p, 1);
- break;
- case KEY_RIGHT:
- p.x=w;
- p.y=h/2;
- navit_set_center_screen(this->nav, &p, 1);
- break;
- case KEY_ZOOM_IN:
- navit_zoom_in(this->nav, 2, NULL);
- break;
- case KEY_ZOOM_OUT:
- navit_zoom_out(this->nav, 2, NULL);
- break;
- case 'a':
- t=navit_get_trans(this->nav);
- transform_set_yaw(t, (transform_get_yaw(t)+15)%360);
- navit_draw(this->nav);
- break;
- case 'd':
- t=navit_get_trans(this->nav);
- transform_set_yaw(t, (transform_get_yaw(t)-15)%360);
- navit_draw(this->nav);
- break;
- case 'w':
- t=navit_get_trans(this->nav);
- transform_set_pitch(t, (transform_get_pitch(t)+5)%360);
- navit_draw(this->nav);
- break;
- case 'x':
- t=navit_get_trans(this->nav);
- transform_set_pitch(t, (transform_get_pitch(t)-5)%360);
- navit_draw(this->nav);
- break;
- case 'r':
- t=navit_get_trans(this->nav);
- transform_set_distance(t, (transform_get_distance(t)-5));
- navit_draw(this->nav);
- break;
- case 'f':
- t=navit_get_trans(this->nav);
- transform_set_distance(t, (transform_get_distance(t)+5));
- navit_draw(this->nav);
- break;
- case 'z':
- t=navit_get_trans(this->nav);
- transform_set_hog(t, (transform_get_hog(t)+1));
- navit_draw(this->nav);
- break;
- case 'h':
- t=navit_get_trans(this->nav);
- transform_set_hog(t, (transform_get_hog(t)-1));
- navit_draw(this->nav);
- break;
- case 't':
- {
- struct coord *p;
- struct pcoord pc;
- t=navit_get_trans(this->nav);
- p=transform_center(t);
- pc.pro=projection_mg;
- p->y+=50*cos(transform_get_yaw(t)*M_PI/180);
- p->x+=50*sin(transform_get_yaw(t)*M_PI/180);
- pc.x=p->x;
- pc.y=p->y;
- navit_set_center(this->nav, &pc, 1);
- }
- break;
- case 'g':
- {
- struct coord *p;
- struct pcoord pc;
- t=navit_get_trans(this->nav);
- p=transform_center(t);
- pc.pro=projection_mg;
- p->y-=50*cos(transform_get_yaw(t)*M_PI/180);
- p->x-=50*sin(transform_get_yaw(t)*M_PI/180);
- pc.x=p->x;
- pc.y=p->y;
- navit_set_center(this->nav, &pc, 1);
- }
- break;
- #ifdef USE_HILDON
- case HILDON_HARDKEY_FULLSCREEN:
- action = GTK_TOGGLE_ACTION (gtk_action_group_get_action (this->base_group, "FullscreenAction"));
-
- if ( gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action)))
- {
- fullscreen = 0;
- } else {
- fullscreen = 1;
- }
- gtk_toggle_action_set_active (action, fullscreen);
- break;
- #endif /*HILDON*/
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-static int
-gui_gtk_set_graphics(struct gui_priv *this, struct graphics *gra)
-{
- GtkWidget *graphics;
-
- graphics=graphics_get_data(gra, "gtk_widget");
- if (! graphics)
- return 1;
- GTK_WIDGET_SET_FLAGS (graphics, GTK_CAN_FOCUS);
- gtk_widget_set_sensitive(graphics, TRUE);
- g_signal_connect(G_OBJECT(graphics), "key-press-event", G_CALLBACK(keypress), this);
- gtk_box_pack_end(GTK_BOX(this->vbox), graphics, TRUE, TRUE, 0);
- gtk_widget_show_all(graphics);
- gtk_widget_grab_focus(graphics);
-
- return 0;
-}
-
-static void
-gui_gtk_route_callback(struct gui_priv *gui) {
- struct attr route_attr;
- GtkAction *roadbookAction=gtk_ui_manager_get_action (gui->ui_manager,"/ui/ToolBar/ToolItems/Roadbook");
- if (roadbookAction) {
- if (navit_get_attr(gui->nav,attr_route,&route_attr,NULL)) {
- struct attr route_status_attr;
- if (route_get_attr(route_attr.u.route, attr_route_status,&route_status_attr,NULL) ) {
- if (route_status_attr.u.num>2) {
- gtk_action_set_sensitive(roadbookAction,1);
- } else {
- gtk_action_set_sensitive(roadbookAction,0);
- }
- }
- }
- }
-}
-
-static void
-gui_gtk_add_bookmark_do(struct gui_priv *gui)
-{
- struct attr attr;
- navit_get_attr(gui->nav, attr_bookmarks, &attr, NULL);
- bookmarks_add_bookmark(attr.u.bookmarks, &gui->dialog_coord, gtk_entry_get_text(GTK_ENTRY(gui->dialog_entry)));
- gtk_widget_destroy(gui->dialog_win);
-}
-
-static int
-gui_gtk_add_bookmark(struct gui_priv *gui, struct pcoord *c, char *description)
-{
- GtkWidget *button_ok,*button_cancel,*label,*vbox,*hbox;
-
- gui->dialog_coord=*c;
- gui->dialog_win=gtk_window_new(GTK_WINDOW_TOPLEVEL);
- vbox=gtk_vbox_new(FALSE, 0);
- gtk_container_add (GTK_CONTAINER (gui->dialog_win), vbox);
- gtk_window_set_title(GTK_WINDOW(gui->dialog_win),_("Add Bookmark"));
- gtk_window_set_wmclass (GTK_WINDOW (gui->dialog_win), "navit", "Navit");
- gtk_window_set_transient_for(GTK_WINDOW(gui->dialog_win), GTK_WINDOW(gui->win));
- gtk_window_set_modal(GTK_WINDOW(gui->dialog_win), TRUE);
- label=gtk_label_new(_("Name"));
- gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
- gui->dialog_entry=gtk_entry_new();
- gtk_entry_set_text(GTK_ENTRY(gui->dialog_entry), description);
- gtk_box_pack_start(GTK_BOX(vbox), gui->dialog_entry, TRUE, TRUE, 0);
- hbox=gtk_hbox_new(FALSE, 0);
- button_ok = gtk_button_new_from_stock (GTK_STOCK_OK);
- gtk_box_pack_start(GTK_BOX(hbox), button_ok, TRUE, TRUE, 10);
- button_cancel = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
- gtk_box_pack_start(GTK_BOX(hbox), button_cancel, TRUE, TRUE, 10);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 10);
- gtk_widget_show_all(gui->dialog_win);
- GTK_WIDGET_SET_FLAGS (button_ok, GTK_CAN_DEFAULT);
- gtk_widget_grab_default(button_ok);
- g_signal_connect_swapped (G_OBJECT (button_cancel), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (gui->dialog_win));
- g_signal_connect_swapped (G_OBJECT (gui->dialog_entry), "activate", G_CALLBACK (gui_gtk_add_bookmark_do), gui);
-
- g_signal_connect_swapped(G_OBJECT (button_ok), "clicked", G_CALLBACK (gui_gtk_add_bookmark_do), gui);
-
- return 1;
-}
-
-struct gui_methods gui_gtk_methods = {
- NULL,
- gui_gtk_popup_new,
- gui_gtk_set_graphics,
- NULL,
- gui_gtk_datawindow_new,
- gui_gtk_add_bookmark,
-};
-
-static gboolean
-gui_gtk_delete(GtkWidget *widget, GdkEvent *event, struct navit *nav)
-{
- /* FIXME remove attr_navit callback */
- navit_destroy(nav);
- exit(0);
-
- return TRUE;
-}
-
-static void
-gui_gtk_toggle_init(struct gui_priv *this)
-{
- struct attr attr;
- GtkToggleAction *toggle_action;
-
- if (navit_get_attr(this->nav, attr_cursor, &attr, NULL)) {
- toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "CursorAction"));
- gtk_toggle_action_set_active(toggle_action, attr.u.num);
- } else {
- dbg(lvl_warning, "Unable to locate CursorAction\n");
- }
- if (navit_get_attr(this->nav, attr_orientation, &attr, NULL)) {
- toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "OrientationAction"));
- gtk_toggle_action_set_active(toggle_action, attr.u.num != -1);
- } else {
- dbg(lvl_error, "Unable to locate OrientationAction\n");
- }
- if (navit_get_attr(this->nav, attr_tracking, &attr, NULL)) {
- toggle_action = GTK_TOGGLE_ACTION(gtk_action_group_get_action(this->base_group, "TrackingAction"));
- gtk_toggle_action_set_active(toggle_action, attr.u.num);
- } else {
- dbg(lvl_error, "Unable to locate TrackingAction\n");
- }
-}
-
-struct action_cb_data {
- struct gui_priv *gui;
- struct attr attr;
-};
-
-static void
-gui_gtk_action_activate(GtkAction *action, struct action_cb_data *data)
-{
- if(data->attr.type == attr_destination) {
- char * label;
- g_object_get(G_OBJECT(action), "label", &label,NULL);
- navit_set_destination(data->gui->nav, data->attr.u.pcoord, label, 1);
- g_free(label);
- }
-}
-
-struct gui_menu_info {
- guint merge_id;
- GtkAction *action;
-};
-
-static void
-gui_gtk_del_menu(struct gui_priv *this, struct gui_menu_info *meninfo)
-{
- gtk_action_group_remove_action(this->dyn_group, meninfo->action);
- gtk_ui_manager_remove_ui(this->ui_manager, meninfo->merge_id);
-}
-
-static struct gui_menu_info
-gui_gtk_add_menu(struct gui_priv *this, char *name, char *label, char *path, int submenu, struct action_cb_data *data)
-{
- struct gui_menu_info meninfo;
- GtkAction *action;
- guint merge_id;
-
- action=gtk_action_new(name, label, NULL, NULL);
- meninfo.action = action;
- if (data)
- g_signal_connect(action, "activate", G_CALLBACK(gui_gtk_action_activate), data);
- gtk_action_group_add_action(this->dyn_group, action);
- merge_id =gtk_ui_manager_new_merge_id(this->ui_manager);
- meninfo.merge_id = merge_id;
- gtk_ui_manager_add_ui(this->ui_manager, merge_id, path, name, name, submenu ? GTK_UI_MANAGER_MENU : GTK_UI_MANAGER_MENUITEM, FALSE);
-
- return meninfo;
-}
-
-static void
-gui_gtk_action_toggled(GtkToggleAction *action, struct action_cb_data *data)
-{
- struct attr active;
- active.type=attr_active;
- active.u.num=gtk_toggle_action_get_active(action);
- map_set_attr(data->attr.u.map, &active);
- navit_draw(data->gui->nav);
-}
-
-static void
-gui_gtk_add_toggle_menu(struct gui_priv *this, char *name, char *label, char *path, struct action_cb_data *data, gboolean active)
-{
- GtkToggleAction *toggle_action;
- guint merge_id;
-
- toggle_action=gtk_toggle_action_new(name, label, NULL, NULL);
- gtk_toggle_action_set_active(toggle_action, active);
- g_signal_connect(GTK_ACTION(toggle_action), "toggled", G_CALLBACK(gui_gtk_action_toggled), data);
- gtk_action_group_add_action(this->dyn_group, GTK_ACTION(toggle_action));
- merge_id=gtk_ui_manager_new_merge_id(this->ui_manager);
- gtk_ui_manager_add_ui(this->ui_manager, merge_id, path, name, name, GTK_UI_MANAGER_MENUITEM, FALSE);
-}
-
-static void
-gui_gtk_action_changed(GtkRadioAction *action, GtkRadioAction *current, struct action_cb_data *data)
-{
- if (action == current) {
- navit_set_attr(data->gui->nav, &data->attr);
- }
-}
-
-static struct gui_menu_info
-gui_gtk_add_radio_menu(struct gui_priv *this, char *name, char *label, char *path, struct action_cb_data *data, GSList **g)
-{
- struct gui_menu_info meninfo;
- GtkRadioAction *radio_action;
- guint merge_id;
-
- radio_action=gtk_radio_action_new(name, label, NULL, NULL, 0);
- meninfo.action = (GtkAction *)radio_action;
- gtk_radio_action_set_group(radio_action, *g);
- *g=gtk_radio_action_get_group(radio_action);
- g_signal_connect(GTK_ACTION(radio_action), "changed", G_CALLBACK(gui_gtk_action_changed), data);
- gtk_action_group_add_action(this->dyn_group, GTK_ACTION(radio_action));
- merge_id=gtk_ui_manager_new_merge_id(this->ui_manager);
- meninfo.merge_id = merge_id;
- gtk_ui_manager_add_ui(this->ui_manager, merge_id, path, name, name, GTK_UI_MANAGER_MENUITEM, FALSE);
-
- return meninfo;
-}
-
-static void
-gui_gtk_layouts_init(struct gui_priv *this)
-{
- struct attr_iter *iter;
- struct attr attr;
- struct action_cb_data *data;
- int count=0;
- char *name;
-
- iter=navit_attr_iter_new();
- while(navit_get_attr(this->nav, attr_layout, &attr, iter)) {
- name=g_strdup_printf("Layout %d", count++);
- data=g_new(struct action_cb_data, 1);
- data->gui=this;
- data->attr.type=attr_layout;
- data->attr.u.layout=attr.u.layout;
- gui_gtk_add_radio_menu(this, name, attr.u.layout->name, "/ui/MenuBar/Map/Layout/LayoutMenuAdditions", data, &this->layout_group);
- g_free(name);
- }
- navit_attr_iter_destroy(iter);
-}
-
-static void
-gui_gtk_projections_init(struct gui_priv *this)
-{
- struct action_cb_data *data;
-
- data=g_new(struct action_cb_data, 1);
- data->gui=this;
- data->attr.type=attr_projection;
- data->attr.u.projection=projection_mg;
- gui_gtk_add_radio_menu(this, "Projection mg", "Map & Guide", "/ui/MenuBar/Map/Projection/ProjectionMenuAdditions", data, &this->projection_group);
-
- data=g_new(struct action_cb_data, 1);
- data->gui=this;
- data->attr.type=attr_projection;
- data->attr.u.projection=projection_garmin;
- gui_gtk_add_radio_menu(this, "Projection garmin", "Garmin", "/ui/MenuBar/Map/Projection/ProjectionMenuAdditions", data, &this->projection_group);
-}
-
-static void
-gui_gtk_vehicles_update(struct gui_priv *this)
-{
- struct attr_iter *iter;
- struct attr attr,vattr;
- struct action_cb_data *data;
- int count=0;
- char *name;
- GList *curr;
- struct gui_menu_info *meninfo;
- dbg(lvl_debug,"enter\n");
-
- curr = g_list_first(this->vehicle_menuitems);
-
- while (curr) {
- gui_gtk_del_menu(this, (struct gui_menu_info *)curr->data);
- g_free((struct gui_menu_info *)curr->data);
- curr = g_list_next(curr);
- };
-
- g_list_free(this->vehicle_menuitems);
- this->vehicle_menuitems = NULL;
-
- iter=navit_attr_iter_new();
- while(navit_get_attr(this->nav, attr_vehicle, &attr, iter)) {
- vehicle_get_attr(attr.u.vehicle, attr_name, &vattr, NULL);
- name=g_strdup_printf("Vehicle %d", count++);
- data=g_new(struct action_cb_data, 1);
- data->gui=this;
- data->attr.type=attr_vehicle;
- data->attr.u.vehicle=attr.u.vehicle;
- meninfo = g_new(struct gui_menu_info, 1);
- *meninfo = gui_gtk_add_radio_menu(this, name, vattr.u.str, "/ui/MenuBar/Map/Vehicle/VehicleMenuAdditions", data, &this->vehicle_group);
- this->vehicle_menuitems = g_list_prepend(this->vehicle_menuitems, meninfo);
- g_free(name);
- }
- navit_attr_iter_destroy(iter);
-}
-
-static void
-gui_gtk_vehicles_init(struct gui_priv *this)
-{
- navit_add_callback(this->nav, callback_new_attr_1(callback_cast(gui_gtk_vehicles_update), attr_vehicle, this));
- gui_gtk_vehicles_update(this);
-}
-
-static void
-gui_gtk_maps_init(struct gui_priv *this)
-{
- struct attr_iter *iter;
- struct attr attr,active,type,data;
- struct action_cb_data *cb_data;
- int count=0;
- char *name, *label;
-
- iter=navit_attr_iter_new();
- while(navit_get_attr(this->nav, attr_map, &attr, iter)) {
- name=g_strdup_printf("Map %d", count++);
- if (! map_get_attr(attr.u.map, attr_type, &type, NULL))
- type.u.str="";
- if (! map_get_attr(attr.u.map, attr_data, &data, NULL))
- data.u.str="";
- label=g_strdup_printf("%s:%s", type.u.str, data.u.str);
- cb_data=g_new(struct action_cb_data, 1);
- cb_data->gui=this;
- cb_data->attr.type=attr_map;
- cb_data->attr.u.map=attr.u.map;
- if (! map_get_attr(attr.u.map, attr_active, &active, NULL))
- active.u.num=1;
- gui_gtk_add_toggle_menu(this, name, label, "/ui/MenuBar/Map/MapMenuAdditions", cb_data, active.u.num);
- g_free(name);
- g_free(label);
- }
- navit_attr_iter_destroy(iter);
-
-}
-
-static void
-gui_gtk_destinations_update(struct gui_priv *this)
-{
- GList *curr;
- struct attr attr;
- struct action_cb_data *data;
- struct map_rect *mr=NULL;
- struct item *item;
- struct gui_menu_info *meninfo;
- struct coord c;
- int count=0;
- char *name, *label;
-
- curr = g_list_first(this->dest_menuitems);
-
- while (curr) {
- gui_gtk_del_menu(this, (struct gui_menu_info *)curr->data);
- g_free((struct gui_menu_info *)curr->data);
- curr = g_list_next(curr);
- };
-
- g_list_free(this->dest_menuitems);
- this->dest_menuitems = NULL;
-
- if(navit_get_attr(this->nav, attr_former_destination_map, &attr, NULL) && attr.u.map && (mr=map_rect_new(attr.u.map, NULL))) {
- while ((item=map_rect_get_item(mr))) {
- if (item->type != type_former_destination) continue;
- name=g_strdup_printf("Destination %d", count++);
- item_attr_get(item, attr_label, &attr);
- label=attr.u.str;
- item_coord_get(item, &c, 1);
- data=g_new(struct action_cb_data, 1);
- data->gui=this;
- data->attr.type=attr_destination;
- data->attr.u.pcoord=g_new(struct pcoord, 1);
- data->attr.u.pcoord->pro=projection_mg;
- data->attr.u.pcoord->x=c.x;
- data->attr.u.pcoord->y=c.y;
-
- meninfo = g_new(struct gui_menu_info, 1);
- *meninfo = gui_gtk_add_menu(this, name, label, "/ui/MenuBar/Route/FormerDestinations/FormerDestinationMenuAdditions",0,data);
- this->dest_menuitems = g_list_prepend(this->dest_menuitems, meninfo);
- g_free(name);
- }
- map_rect_destroy(mr);
- }
-}
-
-static void
-gui_gtk_destinations_init(struct gui_priv *this)
-{
- navit_add_callback(this->nav, callback_new_attr_1(callback_cast(gui_gtk_destinations_update), attr_destination, this));
- gui_gtk_destinations_update(this);
-}
-
-static void
-gui_gtk_bookmarks_update(struct gui_priv *this)
-{
- GList *curr;
- struct attr attr;
- struct action_cb_data *data;
- struct map_rect *mr=NULL;
- struct gui_menu_info *meninfo;
- struct item *item;
- struct coord c;
- int count=0;
- char *parent, *name, *label, *label_full, *menu_label, *tmp_parent, *s;
- GHashTable *hash;
-
- curr = g_list_first(this->bookmarks_menuitems);
-
- while (curr) {
- gui_gtk_del_menu(this, (struct gui_menu_info *)curr->data);
- g_free((struct gui_menu_info *)curr->data);
- curr = g_list_next(curr);
- };
-
- g_list_free(this->bookmarks_menuitems);
- this->bookmarks_menuitems = NULL;
-
- if(navit_get_attr(this->nav, attr_bookmark_map, &attr, NULL) && attr.u.map && (mr=map_rect_new(attr.u.map, NULL))) {
- hash=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
- while ((item=map_rect_get_item(mr))) {
- if (item->type != type_bookmark) continue;
- item_attr_get(item, attr_label, &attr);
- label_full=attr.u.str;
- item_coord_get(item, &c, 1);
- menu_label=g_malloc(strlen(label_full)+1);
- label=label_full;
- parent=g_strdup("/ui/MenuBar/Route/Bookmarks/BookmarkMenuAdditions");
- while ((s=strchr(label, '/'))) {
- strcpy(menu_label, label_full);
- menu_label[s-label_full]='\0';
- if ((tmp_parent=g_hash_table_lookup(hash, menu_label))) {
- tmp_parent=g_strdup(tmp_parent);
- } else {
- name=g_strdup_printf("Bookmark %d", count++);
- meninfo = g_new(struct gui_menu_info, 1);
- *meninfo = gui_gtk_add_menu(this, name, menu_label+(label-label_full),parent,1,NULL);
- this->bookmarks_menuitems = g_list_prepend(this->bookmarks_menuitems, meninfo);
- tmp_parent=g_strdup_printf("%s/%s", parent, name);
- g_hash_table_insert(hash, g_strdup(menu_label), g_strdup(tmp_parent));
- g_free(name);
- }
- g_free(parent);
- parent=tmp_parent;
- label=s+1;
- }
- g_free(menu_label);
- data=g_new(struct action_cb_data, 1);
- data->gui=this;
- data->attr.type=attr_destination;
- data->attr.u.pcoord=g_new(struct pcoord, 1);
- data->attr.u.pcoord->pro=projection_mg;
- data->attr.u.pcoord->x=c.x;
- data->attr.u.pcoord->y=c.y;
- name=g_strdup_printf("Bookmark %d", count++);
- meninfo = g_new(struct gui_menu_info, 1);
- *meninfo = gui_gtk_add_menu(this, name, label, parent,0,data);
- this->bookmarks_menuitems = g_list_prepend(this->bookmarks_menuitems, meninfo);
- g_free(name);
- g_free(parent);
- }
- g_hash_table_destroy(hash);
- }
-}
-
-static void
-gui_gtk_bookmarks_init(struct gui_priv *this)
-{
- struct attr attr;
- navit_get_attr(this->nav, attr_bookmarks, &attr, NULL);
- bookmarks_add_callback(attr.u.bookmarks, callback_new_attr_1(callback_cast(gui_gtk_bookmarks_update), attr_bookmark_map, this));
- gui_gtk_bookmarks_update(this);
-}
-
-static void
-gui_gtk_init(struct gui_priv *this, struct navit *nav)
-{
-
- struct attr route_attr;
-
- gui_gtk_toggle_init(this);
- gui_gtk_layouts_init(this);
- gui_gtk_projections_init(this);
- gui_gtk_vehicles_init(this);
- gui_gtk_maps_init(this);
- gui_gtk_destinations_init(this);
- gui_gtk_bookmarks_init(this);
-
- if (navit_get_attr(nav,attr_route,&route_attr,NULL)) {
- struct attr callback;
- callback.type=attr_callback;
- callback.u.callback=callback_new_attr_1(callback_cast(gui_gtk_route_callback), attr_route_status, this);
- route_add_attr(route_attr.u.route, &callback);
- }
- gui_gtk_route_callback(this); //Set initial state
-}
-
-static struct gui_priv *
-gui_gtk_new(struct navit *nav, struct gui_methods *meth, struct attr **attrs, struct gui *gui)
-{
- struct gui_priv *this;
- int w=792, h=547;
- char *cp = getenv("NAVIT_XID");
- unsigned xid = 0;
- struct attr *attr;
- GtkWidget *widget;
- int fullscreen = 0;
-
- if (! event_request_system("glib","gui_gtk_new"))
- return NULL;
-
- if (cp) {
- xid = strtol(cp, NULL, 0);
- }
-
- this=g_new0(struct gui_priv, 1);
- this->nav=nav;
-
- attr = attr_search(attrs, NULL, attr_menubar);
- if (attr) {
- this->menubar_enable=attr->u.num;
- } else {
- this->menubar_enable=1;
- }
- attr=attr_search(attrs, NULL, attr_toolbar);
- if (attr) {
- this->toolbar_enable=attr->u.num;
- } else {
- this->toolbar_enable=1;
- }
- attr=attr_search(attrs, NULL, attr_statusbar);
- if (attr) {
- this->statusbar_enable=attr->u.num;
- } else {
- this->statusbar_enable=1;
- }
-
- *meth=gui_gtk_methods;
-
- if (!xid)
- this->win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- else
- this->win = gtk_plug_new(xid);
-
-
- g_signal_connect(G_OBJECT(this->win), "delete-event", G_CALLBACK(gui_gtk_delete), nav);
- this->vbox = gtk_vbox_new(FALSE, 0);
- gtk_window_set_default_size(GTK_WINDOW(this->win), w, h);
- gtk_window_set_title(GTK_WINDOW(this->win), "Navit");
- gtk_window_set_wmclass (GTK_WINDOW (this->win), "navit", "Navit");
- gtk_widget_realize(this->win);
- gui_gtk_ui_init(this);
- if (this->menubar_enable) {
- widget=gtk_ui_manager_get_widget(this->ui_manager, "/ui/MenuBar");
- GTK_WIDGET_UNSET_FLAGS (widget, GTK_CAN_FOCUS);
- gtk_box_pack_start (GTK_BOX(this->vbox), widget, FALSE, FALSE, 0);
- gtk_widget_show (widget);
- this->menubar=widget;
- }
- if (this->toolbar_enable) {
- widget=gtk_ui_manager_get_widget(this->ui_manager, "/ui/ToolBar");
- GTK_WIDGET_UNSET_FLAGS (widget, GTK_CAN_FOCUS);
- gtk_box_pack_start (GTK_BOX(this->vbox), widget, FALSE, FALSE, 0);
- gtk_widget_show (widget);
- }
- if (this->statusbar_enable) {
- this->statusbar=gui_gtk_statusbar_new(this);
- }
- gtk_window_add_accel_group (GTK_WINDOW (this->win),
- gtk_ui_manager_get_accel_group(this->ui_manager));
- gtk_container_add(GTK_CONTAINER(this->win), this->vbox);
- gtk_widget_show_all(this->win);
-
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(gui_gtk_init), attr_navit, this));
-
- if ((attr=attr_search(attrs, NULL, attr_fullscreen)))
- fullscreen=attr->u.num;
-
- if (fullscreen) {
- GtkToggleAction *action;
- action = GTK_TOGGLE_ACTION (gtk_action_group_get_action (this->base_group, "FullscreenAction"));
- gtk_toggle_action_set_active (action, fullscreen);
- }
-
- return this;
-}
-
-static int gtk_argc;
-static char **gtk_argv={NULL};
-
-void
-plugin_init(void)
-{
- gtk_init(&gtk_argc, &gtk_argv);
- gtk_set_locale();
-#ifdef HAVE_API_WIN32
- setlocale(LC_NUMERIC,"C");
-#endif
-
-
- plugin_register_category_gui("gtk", gui_gtk_new);
-}
diff --git a/navit/gui/internal/CMakeLists.txt b/navit/gui/internal/CMakeLists.txt
deleted file mode 100644
index 230e315d6..000000000
--- a/navit/gui/internal/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(gui_internal gui_internal.c gui_internal_bookmark.c gui_internal_command.c gui_internal_gesture.c gui_internal_html.c gui_internal_menu.c gui_internal_poi.c gui_internal_search.c gui_internal_widget.c gui_internal_keyboard.c)
diff --git a/navit/gui/internal/gui_internal.c b/navit/gui/internal/gui_internal.c
deleted file mode 100644
index 0a62ae010..000000000
--- a/navit/gui/internal/gui_internal.c
+++ /dev/null
@@ -1,3471 +0,0 @@
-/**
- * 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.
- */
-
-//##############################################################################################################
-//#
-//# File: gui_internal.c
-//# Description: New "internal" GUI for use with any graphics library
-//# Comment: Trying to make a touchscreen friendly GUI
-//# Authors: Martin Schaller (04/2008), Stefan Klumpp (04/2008)
-//#
-//##############################################################################################################
-
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <glib.h>
-#include <time.h>
-#include "config.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_API_WIN32_BASE
-#include <windows.h>
-#endif
-#ifndef _MSC_VER
-#include <sys/time.h>
-#endif /* _MSC_VER */
-#include "item.h"
-#include "xmlconfig.h"
-#include "file.h"
-#include "navit.h"
-#include "navit_nls.h"
-#include "gui.h"
-#include "coord.h"
-#include "point.h"
-#include "plugin.h"
-#include "graphics.h"
-#include "transform.h"
-#include "color.h"
-#include "map.h"
-#include "callback.h"
-#include "vehicle.h"
-#include "vehicleprofile.h"
-#include "window.h"
-#include "config_.h"
-#include "keys.h"
-#include "mapset.h"
-#include "route.h"
-#include "navit/search.h"
-#include "track.h"
-#include "country.h"
-#include "config.h"
-#include "event.h"
-#include "navit_nls.h"
-#include "navigation.h"
-#include "gui_internal.h"
-#include "command.h"
-#include "util.h"
-#include "bookmarks.h"
-#include "linguistics.h"
-#include "debug.h"
-#include "fib.h"
-#include "types.h"
-#include "gui_internal_widget.h"
-#include "gui_internal_priv.h"
-#include "gui_internal_html.h"
-#include "gui_internal_bookmark.h"
-#include "gui_internal_menu.h"
-#include "gui_internal_search.h"
-#include "gui_internal_gesture.h"
-#include "gui_internal_poi.h"
-#include "gui_internal_command.h"
-#include "gui_internal_keyboard.h"
-
-
-/**
- * Indexes into the config_profiles array.
- */
-const int LARGE_PROFILE=0;
-const int MEDIUM_PROFILE=1;
-const int SMALL_PROFILE=2;
-
-/**
- * The default config profiles.
- *
- * [0] => LARGE_PROFILE (screens 640 in one dimension)
- * [1] => MEDIUM PROFILE (screens larger than 320 in one dimension
- * [2] => Small profile (default)
- */
-static struct gui_config_settings config_profiles[]={
- {545,32,48,96,10}
- , {300,32,48,64,3}
- ,{200,16,32,48,2}
-};
-
-static void gui_internal_cmd_view_in_browser(struct gui_priv *this, struct widget *wm, void *data);
-
-static int gui_internal_is_active_vehicle(struct gui_priv *this, struct vehicle *vehicle);
-
-/**
- * @brief Displays an image scaled to a specific size
- *
- * Searches for scaleable and pre-scaled image
- *
- * @param this Our gui context
- * @param name image name
- * @param w desired width of image
- * @param h desired height of image
- *
- * @return image_struct Ptr to scaled image struct or NULL if not scaled or found
- */
-static struct graphics_image *
-image_new_scaled(struct gui_priv *this, const char *name, int w, int h)
-{
- struct graphics_image *ret=NULL;
- char *full_path=NULL;
- full_path=graphics_icon_path(name);
- ret=graphics_image_new_scaled(this->gra, full_path, w, h);
- dbg(lvl_debug,"Trying to load image '%s' (w=%d, h=%d): %s\n", name, w, h, ret ? "OK" : "NOT FOUND");
- g_free(full_path);
- if (!ret) {
- dbg(lvl_error,"Failed to load image for '%s' (w=%d, h=%d)\n", name, w, h);
- full_path=graphics_icon_path("unknown");
- ret=graphics_image_new_scaled(this->gra, full_path, w, h);
- g_free(full_path);
- }
- return ret;
-}
-
-#if 0
-static struct graphics_image *
-image_new_o(struct gui_priv *this, char *name)
-{
- return image_new_scaled(this, name, -1, -1);
-}
-#endif
-
-/**
- * @brief Displays an image scaled to xs (extra small) size
- *
- * This image size can be too small to click it on some devices.
- *
- * @param this Our gui context
- * @param name image name
- *
- * @return image_struct Ptr to scaled image struct or NULL if not scaled or found
- */
-struct graphics_image *
-image_new_xs(struct gui_priv *this, const char *name)
-{
- return image_new_scaled(this, name, this->icon_xs, this->icon_xs);
-}
-
-/**
- * @brief Displays an image scaled to s (small) size
- *
- * @param this Our gui context
- * @param name image name
- *
- * @return image_struct Ptr to scaled image struct or NULL if not scaled or found
- */
-struct graphics_image *
-image_new_s(struct gui_priv *this, const char *name)
-{
- return image_new_scaled(this, name, this->icon_s, this->icon_s);
-}
-
-/**
- * @brief Displays an image scaled to l (large) size
- * @param this Our gui context
- * @param name image name
- *
- * @return image_struct Ptr to scaled image struct or NULL if not scaled or found
- */
-struct graphics_image *
-image_new_l(struct gui_priv *this, const char *name)
-{
- return image_new_scaled(this, name, this->icon_l, this->icon_l);
-}
-
-
-
-static int
-gui_internal_button_attr_update(struct gui_priv *this, struct widget *w)
-{
- struct widget *wi;
- int is_on=0;
- struct attr curr;
- GList *l;
-
- if (w->get_attr(w->instance, w->on.type, &curr, NULL))
- is_on=curr.u.data == w->on.u.data;
- else
- is_on=w->deflt;
- if (is_on != w->is_on) {
- if (w->redraw)
- this->redraw=1;
- w->is_on=is_on;
- l=g_list_first(w->children);
- if (l) {
- wi=l->data;
- if (wi->img)
- graphics_image_free(this->gra, wi->img);
- wi->img=image_new_xs(this, is_on ? "gui_active" : "gui_inactive");
- }
- if (w->is_on && w->off.type == attr_none)
- w->state &= ~STATE_SENSITIVE;
- else
- w->state |= STATE_SENSITIVE;
- return 1;
- }
- return 0;
-}
-
-static void
-gui_internal_button_attr_callback(struct gui_priv *this, struct widget *w)
-{
- if (gui_internal_button_attr_update(this, w))
- gui_internal_widget_render(this, w);
-}
-static void
-gui_internal_button_attr_pressed(struct gui_priv *this, struct widget *w, void *data)
-{
- if (w->is_on)
- w->set_attr(w->instance, &w->off);
- else
- w->set_attr(w->instance, &w->on);
- gui_internal_button_attr_update(this, w);
-
-}
-
-struct widget *
-gui_internal_button_navit_attr_new(struct gui_priv *this, const char *text, enum flags flags, struct attr *on, struct attr *off)
-{
- struct graphics_image *image=NULL;
- struct widget *ret;
- if (!on && !off)
- return NULL;
- image=image_new_xs(this, "gui_inactive");
- ret=gui_internal_button_new_with_callback(this, text, image, flags, gui_internal_button_attr_pressed, NULL);
- if (on)
- ret->on=*on;
- if (off)
- ret->off=*off;
- ret->get_attr=(int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))navit_get_attr;
- ret->set_attr=(int (*)(void *, struct attr *))navit_set_attr;
- ret->remove_cb=(void (*)(void *, struct callback *))navit_remove_callback;
- ret->instance=this->nav;
- ret->cb=callback_new_attr_2(callback_cast(gui_internal_button_attr_callback), on?on->type:off->type, this, ret);
- navit_add_callback(this->nav, ret->cb);
- gui_internal_button_attr_update(this, ret);
- return ret;
-}
-
-struct widget *
-gui_internal_button_map_attr_new(struct gui_priv *this, const char *text, enum flags flags, struct map *map, struct attr *on, struct attr *off, int deflt)
-{
- struct graphics_image *image=NULL;
- struct widget *ret;
- image=image_new_xs(this, "gui_inactive");
- if (!on && !off)
- return NULL;
- ret=gui_internal_button_new_with_callback(this, text, image, flags, gui_internal_button_attr_pressed, NULL);
- if (on)
- ret->on=*on;
- if (off)
- ret->off=*off;
- ret->deflt=deflt;
- ret->get_attr=(int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))map_get_attr;
- ret->set_attr=(int (*)(void *, struct attr *))map_set_attr;
- ret->remove_cb=(void (*)(void *, struct callback *))map_remove_callback;
- ret->instance=map;
- ret->redraw=1;
- ret->cb=callback_new_attr_2(callback_cast(gui_internal_button_attr_callback), on?on->type:off->type, this, ret);
- map_add_callback(map, ret->cb);
- gui_internal_button_attr_update(this, ret);
- return ret;
-}
-
-
-
-
-
-
-/*
- * @brief Calculate movement vector and timing of the gesture.
- * @param in this gui context
- * @param in msec time in milliseconds to find gesture within
- * @param out p0 pointer to the point object, where gesture starting point coordinates should be placed. Can be NULL.
- * @param out dx pointer to variable to store horizontal movement of the gesture.
- * @param out dy pointer to variable to store vertical movement of the gesture.
- * @return amount of time the actual movement took.
- */
-/* FIXME where is the implementation? */
-
-
-static void gui_internal_motion_cb(struct gui_priv *this)
-{
- this->motion_timeout_event=NULL;
- gui_internal_gesture_ring_add(this, &(this->current));
-
- /* Check for scrollable table below the highligted item if there's a movement with the button pressed */
- if (this->pressed && this->highlighted) {
- struct widget *wt=NULL;
- struct widget *wr=NULL;
- int dx,dy;
-
- /* Guard against accidental scrolling when user is likely going to swipe */
- gui_internal_gesture_get_vector(this, 1000, NULL, &dx, &dy);
- if(abs(dx)>abs(dy) || abs(dy)<this->icon_s)
- return;
-
- if(this->highlighted)
- for(wr=this->highlighted;wr && wr->type!=widget_table_row;wr=wr->parent);
- if(wr)
- wt=wr->parent;
-
- if(wt && wt->type==widget_table && (wt->state & STATE_SCROLLABLE)) {
- struct table_data *td=wt->data;
- GList *top=NULL;
- GList *btm=NULL;
- GList *ttop, *tbtm;
-
-
-
- if(!wr || !wr->h)
- return;
-
- if(this->current.y < wr->p.y && wr!=td->top_row->data ) {
- int n=(wr->p.y-this->current.y)/wr->h+1;
-
- btm=td->bottom_row;
- top=td->top_row;
-
- while(n-->0 && (tbtm=gui_internal_widget_table_next_row(btm))!=NULL && (ttop=gui_internal_widget_table_next_row(top))!=NULL) {
- top=ttop;
- btm=tbtm;
- if(top->data==wr)
- break;
- }
- this->pressed=2;
- } else if (this->current.y > wr->p.y + wr->h ) {
- int y=wt->p.y+wt->h-wr->h;
- int n;
-
- if(td->scroll_buttons.button_box && td->scroll_buttons.button_box->p.y!=0)
- y=td->scroll_buttons.button_box->p.y - td->scroll_buttons.button_box->h;
-
- if(y>this->current.y)
- y=this->current.y;
-
- n=(y - wr->p.y )/wr->h;
-
- btm=td->bottom_row;
- top=td->top_row;
-
- while(n-->0 && (ttop=gui_internal_widget_table_prev_row(top))!=NULL && (tbtm=gui_internal_widget_table_prev_row(btm))!=NULL) {
- btm=tbtm;
- top=ttop;
- if(btm->data==wr)
- break;
- }
- this->pressed=2;
- }
- if( top && btm && (td->top_row!=top || td->bottom_row!=btm) ) {
- gui_internal_table_hide_rows(wt->data);
- td->top_row=top;
- td->bottom_row=btm;
- graphics_draw_mode(this->gra, draw_mode_begin);
- gui_internal_widget_render(this,wt);
- graphics_draw_mode(this->gra, draw_mode_end);
- }
-
- return;
- }
- }
-
- /* Else, just move highlight after pointer if there's nothing to scroll */
- gui_internal_highlight(this);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void gui_internal_call_highlighted(struct gui_priv *this)
-{
- if (! this->highlighted || ! this->highlighted->func)
- return;
- this->highlighted->reason=gui_internal_reason_click;
- this->highlighted->func(this, this->highlighted, this->highlighted->data);
-}
-
-void
-gui_internal_say(struct gui_priv *this, struct widget *w, int questionmark)
-{
- char *text=w->speech;
- if (! this->speech)
- return;
- if (!text)
- text=w->text;
- if (!text)
- text=w->name;
- if (text) {
- text=g_strdup_printf("%s%c", text, questionmark ? '?':'\0');
- navit_say(this->nav, text);
- g_free(text);
- }
-}
-
-
-
-
-
-void
-gui_internal_back(struct gui_priv *this, struct widget *w, void *data)
-{
- gui_internal_prune_menu_count(this, 1, 1);
-}
-
-void
-gui_internal_cmd_return(struct gui_priv *this, struct widget *wm, void *data)
-{
- gui_internal_prune_menu(this, wm->data);
-}
-
-
-
-void
-gui_internal_cmd_main_menu(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w=this->root.children->data;
- if (w && w->menu_data && w->menu_data->href && !strcmp(w->menu_data->href,"#Main Menu"))
- gui_internal_prune_menu(this, w);
- else
- gui_internal_html_main_menu(this);
-}
-
-
-struct widget *
-gui_internal_time_help(struct gui_priv *this)
-{
- struct widget *w,*wc,*wcn;
- char timestr[64];
- struct tm *tm;
- time_t timep;
-
- w=gui_internal_box_new(this, gravity_right_center|orientation_horizontal|flags_fill);
- w->bl=this->spacing;
- w->spx=this->spacing;
- w->spx=10;
- w->bl=10;
- w->br=10;
- w->bt=6;
- w->bb=6;
- if (this->flags & 64) {
- wc=gui_internal_box_new(this, gravity_right_top|orientation_vertical|flags_fill);
- wc->bl=10;
- wc->br=20;
- wc->bt=6;
- wc->bb=6;
- timep=time(NULL);
- tm=localtime(&timep);
- strftime(timestr, 64, "%H:%M %d.%m.%Y", tm);
- wcn=gui_internal_label_new(this, timestr);
- gui_internal_widget_append(wc, wcn);
- gui_internal_widget_append(w, wc);
- }
- if (this->flags & 128) {
- wcn=gui_internal_button_new_with_callback(this, _("Help"), image_new_l(this, "gui_help"), gravity_center|orientation_vertical|flags_fill, NULL, NULL);
- gui_internal_widget_append(w, wcn);
- }
- return w;
-}
-
-
-/**
- * Applies the configuration values to this based on the settings
- * specified in the configuration file (this->config) and
- * the most approriate default profile based on screen resolution.
- *
- * This function should be run after this->root is setup and could
- * be rerun after the window is resized.
- *
- * @author Steve Singer <ssinger_pg@sympatico.ca> (09/2008)
- */
-void
-gui_internal_apply_config(struct gui_priv *this)
-{
- struct gui_config_settings * current_config=0;
-
- dbg(lvl_debug,"w=%d h=%d\n", this->root.w, this->root.h);
- /*
- * Select default values from profile based on the screen.
- */
- if((this->root.w > 320 || this->root.h > 320) && this->root.w > 240 && this->root.h > 240)
- {
- if((this->root.w > 640 || this->root.h > 640) && this->root.w > 480 && this->root.h > 480 )
- {
- current_config = &config_profiles[LARGE_PROFILE];
- }
- else
- {
- current_config = &config_profiles[MEDIUM_PROFILE];
- }
- }
- else
- {
- current_config = &config_profiles[SMALL_PROFILE];
- }
-
- /*
- * Apply override values from config file
- */
- if(this->config.font_size == -1 )
- {
- this->font_size = current_config->font_size;
- }
- else
- {
- this->font_size = this->config.font_size;
- }
-
- if(this->config.icon_xs == -1 )
- {
- this->icon_xs = current_config->icon_xs;
- }
- else
- {
- this->icon_xs = this->config.icon_xs;
- }
-
- if(this->config.icon_s == -1 )
- {
- this->icon_s = current_config->icon_s;
- }
- else
- {
- this->icon_s = this->config.icon_s;
- }
- if(this->config.icon_l == -1 )
- {
- this->icon_l = current_config->icon_l;
- }
- else
- {
- this->icon_l = this->config.icon_l;
- }
- if(this->config.spacing == -1 )
- {
- this->spacing = current_config->spacing;
- }
- else
- {
- this->spacing = current_config->spacing;
- }
- if (!this->fonts[0]) {
- int i,sizes[]={100,66,50};
- for (i = 0 ; i < 3 ; i++) {
- if (this->font_name)
- this->fonts[i]=graphics_named_font_new(this->gra,this->font_name,this->font_size*sizes[i]/100,1);
- else
- this->fonts[i]=graphics_font_new(this->gra,this->font_size*sizes[i]/100,1);
- }
- }
-
-}
-
-
-
-
-
-static void
-gui_internal_cmd_set_destination(struct gui_priv *this, struct widget *wm, void *data)
-{
- char *name=data;
- dbg(lvl_info,"c=%d:0x%x,0x%x\n", wm->c.pro, wm->c.x, wm->c.y);
- navit_set_destination(this->nav, &wm->c, name, 1);
- if (this->flags & 512) {
- struct attr follow;
- follow.type=attr_follow;
- follow.u.num=180;
- navit_set_attr(this->nav, &this->osd_configuration);
- navit_set_attr(this->nav, &follow);
- navit_zoom_to_route(this->nav, 0);
- }
- gui_internal_prune_menu(this, NULL);
-}
-
-static void
-gui_internal_cmd_insert_destination_do(struct gui_priv *this, struct widget *wm, void *data) {
- char *name=data;
- int dstcount=navit_get_destination_count(this->nav)+1;
- int pos,i;
- struct pcoord *dst=g_alloca(dstcount*sizeof(struct pcoord));
- dstcount=navit_get_destinations(this->nav,dst,dstcount);
-
- pos=dstcount-wm->datai;
- if(pos<0)
- pos=0;
-
- for(i=dstcount;i>pos;i--)
- dst[i]=dst[i-1];
-
- dst[pos]=wm->c;
- navit_add_destination_description(this->nav,&wm->c,(char*)data);
- navit_set_destinations(this->nav,dst,dstcount+1,name,1);
- gui_internal_prune_menu(this, NULL);
-}
-
-/*
- * @brief Displays a waypoint list to the user.
- *
- * This display a waypoint list to the user. When the user chooses an item from the list, the callback
- * function passed as {@code cmd} will be called.
- *
- * Widget passed as wm parameter of the called cmd function will have item set to user chosen waypoint item. Its data will be set
- * to zero-based choosen waypoint number, counting from the route end. Coordinates to wm->c will be copied from wm_->c if wm_ is not null. Otherwise,
- * waypoint coordinates will be copied to wm->c.
- *
- * @param this gui context
- * @param title Menu title
- * @param hint Text to display above the waypoint list describing the action to be performed, can be NULL
- * @param wm_ The called widget pointer. Can be NULL.
- * @param cmd Callback function which will be called on item selection
- * @param data data argument to be passed to the callback function
- */
-void
-gui_internal_select_waypoint(struct gui_priv *this, const char *title, const char *hint, struct widget *wm_, void(*cmd)(struct gui_priv *priv, struct widget *widget, void *data),void *data)
-{
- struct widget *wb,*w,*wtable,*row,*wc;
- struct map *map;
- struct map_rect *mr;
- struct item *item;
- char *text;
- int i;
- int dstcount=navit_get_destination_count(this->nav)+1;
-
- map=route_get_map(navit_get_route(this->nav));
- if(!map)
- return;
- mr = map_rect_new(map, NULL);
- if(!mr)
- return;
-
- wb=gui_internal_menu(this, title);
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- if(hint)
- gui_internal_widget_append(w, gui_internal_label_new(this, hint));
- wtable = gui_internal_widget_table_new(this,gravity_left_top | flags_fill | flags_expand |orientation_vertical,1);
- gui_internal_widget_append(w,wtable);
-
- i=0;
- while((item = map_rect_get_item(mr))!=NULL) {
- struct attr attr;
- if(item->type!=type_waypoint && item->type!=type_route_end)
- continue;
- if (item_attr_get(item, attr_label, &attr)) {
- text=g_strdup_printf(_("Waypoint %s"), map_convert_string_tmp(item->map, attr.u.str));
- } else
- continue;
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row, wc=gui_internal_button_new_with_callback(this, text,
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- cmd, data));
- wc->item=*item;
- if(wm_)
- wc->c=wm_->c;
- else {
- struct coord c;
- item_coord_get(item,&c,1);
- wc->c.x=c.x;
- wc->c.y=c.y;
- wc->c.pro=map_projection(item->map);
- }
- i++;
- wc->datai=dstcount-i;
- g_free(text);
- }
- map_rect_destroy(mr);
- gui_internal_menu_render(this);
-}
-
-static void
-gui_internal_cmd_insert_destination(struct gui_priv *this, struct widget *wm, void *data)
-{
- gui_internal_select_waypoint(this, data, _("Select waypoint to insert the new one before"), wm, gui_internal_cmd_insert_destination_do, data);
-}
-
-
-
-static void
-gui_internal_cmd_set_position(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr v;
- if(data) {
- v.type=attr_vehicle;
- v.u.vehicle=NULL;
- navit_set_attr(this->nav, &v);
- }
- navit_set_position(this->nav, &wm->c);
- gui_internal_prune_menu(this, NULL);
-}
-
-
-
-
-
-
-/**
- * @brief Generic notification function for Editable widgets to call Another widget notification function when Enter is pressed in editable field.
- * The Editable widget should have data member pointing to the Another widget.
- */
-void
-gui_internal_call_linked_on_finish(struct gui_priv *this, struct widget *wm, void *data)
-{
- if (wm->reason==gui_internal_reason_keypress_finish && data) {
- struct widget *w=data;
- if(w->func)
- w->func(this, w, w->data);
- }
-}
-
-struct widget * gui_internal_keyboard(struct gui_priv *this, int mode);
-
-
-struct widget * gui_internal_keyboard_show_native(struct gui_priv *this, struct widget *w, int mode, char *lang);
-
-
-static void
-gui_internal_cmd_delete_bookmark(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr mattr;
- GList *l;
- navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL);
- bookmarks_delete_bookmark(mattr.u.bookmarks,wm->text);
- l=g_list_previous(g_list_previous(g_list_last(this->root.children)));
- gui_internal_prune_menu(this, l->data);
-}
-
-
-
-
-/**
- * Get a utf-8 string, return the same prepared for case insensitive search. Result should be g_free()d after use.
- */
-char *
-removecase(char *s)
-{
- char *r;
- r=linguistics_casefold(s);
- return r;
-}
-
-static void
-gui_internal_cmd_view_on_map(struct gui_priv *this, struct widget *wm, void *data)
-{
- if (wm->item.type != type_none) {
- enum item_type type;
- if (wm->item.type < type_line)
- type=type_selected_point;
- else if (wm->item.type < type_area)
- type=type_selected_point;
- else
- type=type_selected_area;
- graphics_clear_selection(this->gra, NULL);
- graphics_add_selection(this->gra, &wm->item, type, NULL);
- }
- navit_set_center(this->nav, &wm->c, 1);
- gui_internal_prune_menu(this, NULL);
-}
-
-
-static void
-gui_internal_cmd_view_attribute_details(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w,*wb;
- struct map_rect *mr;
- struct item *item;
- struct attr attr;
- char *text,*url;
- int i;
-
- text=g_strdup_printf("Attribute %s",wm->name);
- wb=gui_internal_menu(this, text);
- g_free(text);
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- mr=map_rect_new(wm->item.map, NULL);
- item = map_rect_get_item_byid(mr, wm->item.id_hi, wm->item.id_lo);
- for (i = 0 ; i < wm->datai ; i++) {
- item_attr_get(item, attr_any, &attr);
- }
- if (item_attr_get(item, attr_any, &attr)) {
- url=NULL;
- switch (attr.type) {
- case attr_osm_nodeid:
- url=g_strdup_printf("http://www.openstreetmap.org/browse/node/"LONGLONG_FMT"\n",*attr.u.num64);
- break;
- case attr_osm_wayid:
- url=g_strdup_printf("http://www.openstreetmap.org/browse/way/"LONGLONG_FMT"\n",*attr.u.num64);
- break;
- case attr_osm_relationid:
- url=g_strdup_printf("http://www.openstreetmap.org/browse/relation/"LONGLONG_FMT"\n",*attr.u.num64);
- break;
- default:
- break;
- }
- if (url) {
- gui_internal_widget_append(w,
- wb=gui_internal_button_new_with_callback(this, _("View in Browser"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_view_in_browser, NULL));
- wb->name=url;
- }
- }
- map_rect_destroy(mr);
- gui_internal_menu_render(this);
-}
-
-static void
-gui_internal_cmd_view_attributes(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w,*wb;
- struct map_rect *mr;
- struct item *item;
- struct attr attr;
- char *text;
- int count=0;
-
- dbg(lvl_info,"item=%p 0x%x 0x%x\n", wm->item.map,wm->item.id_hi, wm->item.id_lo);
- wb=gui_internal_menu(this, "Attributes");
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- mr=map_rect_new(wm->item.map, NULL);
- item = map_rect_get_item_byid(mr, wm->item.id_hi, wm->item.id_lo);
- dbg(lvl_info,"item=%p\n", item);
- if (item) {
- text=g_strdup_printf("%s:%s", _("Item type"), item_to_name(item->type));
- gui_internal_widget_append(w,
- wb=gui_internal_button_new(this, text,
- NULL, gravity_left_center|orientation_horizontal|flags_fill));
- wb->name=g_strdup(text);
- wb->item=wm->item;
- g_free(text);
- while(item_attr_get(item, attr_any, &attr)) {
- char *attrtxt;
- text=g_strdup_printf("%s:%s", attr_to_name(attr.type), attrtxt=attr_to_text(&attr, wm->item.map, 1));
- g_free(attrtxt);
- gui_internal_widget_append(w,
- wb=gui_internal_button_new_with_callback(this, text,
- NULL, gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_view_attribute_details, NULL));
- wb->name=g_strdup(text);
- wb->item=wm->item;
- wb->datai=count++;
- g_free(text);
- }
- text=g_strdup_printf("%s:0x%x,0x%x", "ID", item->id_hi, item->id_lo);
- gui_internal_widget_append(w,
- wb=gui_internal_button_new(this, text,
- NULL, gravity_left_center|orientation_horizontal|flags_fill));
- wb->name=text;
- wb->item=wm->item;
- }
- map_rect_destroy(mr);
- gui_internal_menu_render(this);
-}
-
-static void
-gui_internal_cmd_view_in_browser(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct map_rect *mr;
- struct item *item;
- struct attr attr;
- char *cmd=NULL;
-
- if (!wm->name) {
- dbg(lvl_info,"item=%p 0x%x 0x%x\n", wm->item.map,wm->item.id_hi, wm->item.id_lo);
- mr=map_rect_new(wm->item.map, NULL);
- item = map_rect_get_item_byid(mr, wm->item.id_hi, wm->item.id_lo);
- dbg(lvl_info,"item=%p\n", item);
- if (item) {
- while(item_attr_get(item, attr_url_local, &attr)) {
- if (! cmd)
- cmd=g_strdup_printf("navit-browser.sh '%s' &",map_convert_string_tmp(item->map,attr.u.str));
- }
- }
- map_rect_destroy(mr);
- } else {
- cmd=g_strdup_printf("navit-browser.sh '%s' &",wm->name);
- }
- if (cmd) {
-#ifdef HAVE_SYSTEM
- system(cmd);
-#else
- dbg(lvl_error,"Error: External commands were disabled during compilation, cannot call '%s'.\n",cmd);
-#endif
- g_free(cmd);
- }
-}
-
-
-/*
- * @brief Transfers search results to a map.
- *
- * @param this The graphics context.
- * @param wm called widget.
- * @param data event data (pointer to the table widget containing results, or NULL to clean the result map without adding any new data).
- */
-static void
-gui_internal_cmd_results_to_map(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w;
- struct mapset *ms;
- struct map *map;
- struct map_rect *mr;
- struct item *item;
- GList *l;
- struct coord_rect r;
- struct attr a;
- int count;
-
- ms=navit_get_mapset(this->nav);
-
- if(!ms)
- return;
-
- map=mapset_get_map_by_name(ms, "search_results");
- if(!map) {
- struct attr *attrs[10], attrmap;
- enum attr_type types[]={attr_position_longitude,attr_position_latitude,attr_label,attr_none};
- int i;
-
- attrs[0]=g_new0(struct attr,1);
- attrs[0]->type=attr_type;
- attrs[0]->u.str="csv";
-
- attrs[1]=g_new0(struct attr,1);
- attrs[1]->type=attr_name;
- attrs[1]->u.str="search_results";
-
- attrs[2]=g_new0(struct attr,1);
- attrs[2]->type=attr_charset;
- attrs[2]->u.str="utf-8";
-
- attrs[3]=g_new0(struct attr,1);
- attrs[3]->type=attr_item_type;
- attrs[3]->u.num=type_found_item;
-
- attrs[4]=g_new0(struct attr,1);
- attrs[4]->type=attr_attr_types;
- attrs[4]->u.attr_types=types;
- attrs[5]=NULL;
-
- attrmap.type=attr_map;
- map=attrmap.u.map=map_new(NULL,attrs);
- if(map)
- mapset_add_attr(ms,&attrmap);
-
- for(i=0;attrs[i];i++)
- g_free(attrs[i]);
-
- }
-
- if(!map)
- return;
-
-
- mr = map_rect_new(map, NULL);
-
- if(!mr)
- return;
-
- /* Clean the map */
- while((item = map_rect_get_item(mr))!=NULL) {
- item_type_set(item,type_none);
- }
-
- this->results_map_population=0;
-
- /* Find the table to pupulate the map */
- for(w=data; w && w->type!=widget_table;w=w->parent);
-
- if(!w) {
- map_rect_destroy(mr);
- dbg(lvl_warning,"Can't find the results table - only map clean up is done.\n");
- return;
- }
-
- /* Populate the map with search results*/
- for(l=w->children, count=0;l;l=g_list_next(l)) {
- struct widget *wr=l->data;
- if(wr->type==widget_table_row) {
- struct widget *wi=wr->children->data;
- struct item* it;
- if(wi->name==NULL)
- continue;
- dbg(lvl_info,"%s\n",wi->name);
- it=map_rect_create_item(mr,type_found_item);
- if(it) {
- struct coord c;
- struct attr a;
- c.x=wi->c.x;
- c.y=wi->c.y;
- item_coord_set(it, &c, 1, change_mode_modify);
- a.type=attr_label;
- a.u.str=wi->name;
- item_attr_set(it, &a, change_mode_modify);
- if(!count++)
- r.lu=r.rl=c;
- else
- coord_rect_extend(&r,&c);
- }
- }
- }
- map_rect_destroy(mr);
- if(!count)
- return;
- a.type=attr_orientation;
- a.u.num=0;
- navit_set_attr(this->nav,&a);
- navit_zoom_to_rect(this->nav,&r);
- gui_internal_prune_menu(this, NULL);
- this->results_map_population=count;
-}
-
-/*
- * @brief Removes search results from a map.
- *
- * @param this The graphics context.
- * @param wm called widget.
- * @param data event data
- */
-static void
-gui_internal_cmd_results_map_clean(struct gui_priv *this, struct widget *wm, void *data)
-{
- gui_internal_cmd_results_to_map(this,wm,NULL);
- gui_internal_prune_menu(this, NULL);
- navit_draw(this->nav);
-}
-
-static void
-gui_internal_cmd_delete_waypoint(struct gui_priv *this, struct widget *wm, void *data)
-{
- int dstcount=navit_get_destination_count(this->nav);
- int i;
- struct map_rect *mr;
- struct item *item;
- struct pcoord *dst=g_alloca(dstcount*sizeof(struct pcoord));
- dstcount=navit_get_destinations(this->nav,dst,dstcount);
- mr=map_rect_new(wm->item.map, NULL);
- i=0;
- while((item=map_rect_get_item(mr))!=NULL) {
- struct coord c;
- if(item->type!=type_waypoint && item->type!=type_route_end)
- continue;
- if(item_is_equal_id(*item,wm->item))
- continue;
- item_coord_get_pro(item,&c,1,projection_mg);
- dst[i].x=c.x;
- dst[i].y=c.y;
- dst[i].pro=projection_mg;
- i++;
- }
- map_rect_destroy(mr);
- navit_set_destinations(this->nav,dst,i,NULL,1);
- gui_internal_prune_menu(this, NULL);
-}
-
-
-/**
- * @brief Displays the commands available for a location.
- *
- * This displays the available commands for the given location in a dialog from which the user can
- * choose an action. The location can be supplied either in projected coordinates via the {@code pc_in}
- * argument or in WGS84 coordinates (i.e. latitude and longitude in degrees) via the {@code g_in}
- * argument. One of these must be supplied, the other should be {@code NULL}.
- *
- * @param this The internal GUI instance
- * @param pc_in Projected coordinates of the position
- * @param g_in WGS84 coordinates of the position
- * @param wm
- * @param name The display name for the position
- * @param flags Flags specifying the operations available from the GUI
- */
-/* meaning of the bits in "flags":
- * 1: "Streets"
- * 2: "House numbers"
- * 4: "View in Browser", "View Attributes"
- * 8: "Set as dest."
- * 16: "Set as pos."
- * 32: "Add as bookm."
- * 64: "POIs"
- * 128: "View on Map"
- * 256: POIs around this point, "Drop search results from the map"
- * 512: "Cut/Copy... bookmark"
- * 1024: "Jump to attributes of top item within this->radius pixels of this point (implies flags|=256)"
- * 2048: "Show search results on the map"
- * TODO define constants for these values
- */
-void
-gui_internal_cmd_position_do(struct gui_priv *this, struct pcoord *pc_in, struct coord_geo *g_in, struct widget *wm, const char *name, int flags)
-{
- struct widget *wb,*w,*wtable,*row,*wc,*wbc,*wclosest=NULL;
- struct coord_geo g;
- struct pcoord pc;
- struct coord c;
- char *coord;
-
- if (pc_in) {
- pc=*pc_in;
- c.x=pc.x;
- c.y=pc.y;
- dbg(lvl_info,"x=0x%x y=0x%x\n", c.x, c.y);
- transform_to_geo(pc.pro, &c, &g);
- } else if (g_in) {
- struct attr attr;
- if (!navit_get_attr(this->nav, attr_projection, &attr, NULL))
- return;
- g=*g_in;
- pc.pro=attr.u.projection;
- transform_from_geo(pc.pro, &g, &c);
- pc.x=c.x;
- pc.y=c.y;
- } else
- return;
-
- wb=gui_internal_menu(this, name);
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- coord=gui_internal_coordinates(&pc, ' ');
- gui_internal_widget_append(w, gui_internal_label_new(this, coord));
- g_free(coord);
- wtable = gui_internal_widget_table_new(this,gravity_left_top | flags_fill | flags_expand |orientation_vertical,1);
- gui_internal_widget_append(w,wtable);
-
- if ((flags & 1) && wm) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wc=gui_internal_button_new_with_callback(this, _("Streets"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_search_street_in_town, wm));
- wc->item=wm->item;
- wc->selection_id=wm->selection_id;
- }
- if ((flags & 2) && wm) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wc=gui_internal_button_new_with_callback(this, _("House numbers"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_search_house_number_in_street, wm));
- wc->item=wm->item;
- wc->selection_id=wm->selection_id;
- }
- if ((flags & 4) && wm) {
- struct map_rect *mr;
- struct item *item;
- struct attr attr;
- mr=map_rect_new(wm->item.map, NULL);
- item = map_rect_get_item_byid(mr, wm->item.id_hi, wm->item.id_lo);
- if (item) {
- if (item_attr_get(item, attr_description, &attr))
- gui_internal_widget_append(w, gui_internal_label_new(this, map_convert_string_tmp(item->map,attr.u.str)));
- if (item_attr_get(item, attr_url_local, &attr)) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wb=gui_internal_button_new_with_callback(this, _("View in Browser"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_view_in_browser, NULL));
- wb->item=wm->item;
- }
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wb=gui_internal_button_new_with_callback(this, _("View Attributes"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_view_attributes, NULL));
- wb->item=wm->item;
- }
- map_rect_destroy(mr);
- }
- if (flags & 8) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Set as destination"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_set_destination, g_strdup(name)));
- wbc->data_free=g_free_func;
- wbc->c=pc;
- if(navit_get_destination_count(this->nav)>=1) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Visit before..."),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_insert_destination, g_strdup(name)));
- wbc->data_free=g_free_func;
- wbc->c=pc;
- }
- }
- if (flags & 16) {
- const char *text;
- struct attr vehicle, source;
- int deactivate=0;
- if (navit_get_attr(this->nav, attr_vehicle, &vehicle, NULL) && vehicle.u.vehicle &&
- !(vehicle_get_attr(vehicle.u.vehicle, attr_source, &source, NULL) && source.u.str && !strcmp("demo://",source.u.str)))
- deactivate=1;
-
- text=deactivate? _("Set as position (and deactivate vehicle)") : _("Set as position");
-
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, text,
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_set_position, (void*)(long)deactivate));
- wbc->c=pc;
- }
- if (flags & 32) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Add as bookmark"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_add_bookmark2, g_strdup(name)));
- wbc->data_free=g_free_func;
- wbc->c=pc;
- }
-#ifndef _MSC_VER
-//POIs are not operational under MSVC yet
- if (flags & 64) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("POIs"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_pois, NULL));
- wbc->c=pc;
- }
-#endif /* _MSC_VER */
-#if 0
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- gui_internal_button_new(this, "Add to tour",
- image_new_o(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill));
-#endif
- if (flags & 128) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("View on map"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_view_on_map, NULL));
- wbc->c=pc;
- if ((flags & 4) && wm)
- wbc->item=wm->item;
- else
- wbc->item.type=type_none;
- }
- if(flags & 256 && this->results_map_population) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Remove search results from the map"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_results_map_clean, NULL));
- wbc->data=wm;
- }
- if(flags & 2048) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Show results on the map"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_results_to_map, NULL));
- wbc->data=wm;
- }
- if ((flags & 256) || (flags & 1024)) {
- struct displaylist_handle *dlh;
- struct displaylist *display;
- struct attr attr;
- struct point p;
- struct transformation *trans;
-
- char *text;
- struct map_selection *sel;
- GList *l, *ll;
-
- c.x=pc.x;
- c.y=pc.y;
-
- trans=navit_get_trans(this->nav);
- transform(trans,pc.pro,&c,&p,1,0,0,0);
- display=navit_get_displaylist(this->nav);
- dlh=graphics_displaylist_open(display);
- sel=displaylist_get_selection(display);
- l=displaylist_get_clicked_list(display, &p, this->radius);
- for(ll=l;ll;ll=g_list_next(ll)) {
- struct displayitem *di;
- struct item *item;
- struct map_rect *mr;
- struct item *itemo;
-
- di=(struct displayitem*)ll->data;
- item=graphics_displayitem_get_item(di);
-
- mr=map_rect_new(item->map, sel);
- itemo=map_rect_get_item_byid(mr, item->id_hi, item->id_lo);
- if(!itemo) {
- map_rect_destroy(mr);
- continue;
- }
- if (item_attr_get(itemo, attr_label, &attr)) {
- text=g_strdup(map_convert_string_tmp(itemo->map, attr.u.str));
- } else
- text=g_strdup(item_to_name(item->type));
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row, wc=gui_internal_cmd_pois_item(this, NULL, itemo, NULL, NULL, -1, text));
- wc->c=pc;
- g_free(wc->name);
- wc->name=g_strdup(text);
- wc->item=*itemo;
- g_free(text);
- map_rect_destroy(mr);
- if(!wclosest)
- wclosest=wc;
-
- }
- g_list_free(l);
- map_selection_destroy(sel);
- graphics_displaylist_close(dlh);
- }
- if (flags & 512) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Cut Bookmark"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_cut_bookmark, NULL));
- wbc->text=g_strdup(wm->text);
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Copy Bookmark"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_copy_bookmark, NULL));
- wbc->text=g_strdup(wm->text);
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Rename Bookmark"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_rename_bookmark, NULL));
- wbc->text=g_strdup(wm->text);
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Paste Bookmark"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_paste_bookmark, NULL));
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Delete Bookmark"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_delete_bookmark, NULL));
- wbc->text=g_strdup(wm->text);
- }
-
- if (wm && (wm->item.type==type_waypoint || wm->item.type==type_route_end)) {
- gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- wbc=gui_internal_button_new_with_callback(this, _("Delete waypoint"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_delete_waypoint, NULL));
- wbc->item=wm->item;
- }
-
- gui_internal_menu_render(this);
-
- if((flags & 1024) && wclosest)
- gui_internal_cmd_view_attributes(this,wclosest,wclosest->data);
-}
-
-
-/* wm->data: 0 Nothing special
- 1 Map Point
- 2 Item
- 3 Town
- 4 County
- 5 Street
- 6 House number
- 7 Bookmark
- 8 Former destination
- 9 Item from the POI list
-*/
-
-void
-gui_internal_cmd_position(struct gui_priv *this, struct widget *wm, void *data)
-{
- int flags;
-
- if(!data)
- data=wm->data;
-
- switch ((long) data) {
- case 0:
- flags=8|16|32|64|128|256;
- break;
- case 1:
- flags=8|16|32|64|256;
- break;
- case 2:
- flags=4|8|16|32|64|128;
- break;
- case 3:
- flags=1|4|8|16|32|64|128|2048;
- flags &= this->flags_town;
- break;
- case 4:
- gui_internal_search_town_in_country(this, wm);
- return;
- case 5:
- flags=2|8|16|32|64|128|2048;
- flags &= this->flags_street;
- break;
- case 6:
- flags=8|16|32|64|128|2048;
- flags &= this->flags_house_number;
- break;
- case 7:
- flags=8|16|64|128|512;
- break;
- case 8:
- flags=8|16|32|64|128;
- break;
- case 9:
- flags=4|8|16|32|64|128|2048;
- break;
- default:
- return;
- }
- switch (flags) {
- case 2:
- gui_internal_search_house_number_in_street(this, wm, NULL);
- return;
- case 8:
- gui_internal_cmd_set_destination(this, wm, NULL);
- return;
- }
- gui_internal_cmd_position_do(this, &wm->c, NULL, wm, wm->name ? wm->name : wm->text, flags);
-}
-
-
-
-
-
-/**
- * The "Bookmarks" section of the OSD
- *
- */
-void
-gui_internal_cmd_bookmarks(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr attr,mattr;
- struct item *item;
- char *label_full,*prefix=0;
- int plen=0,hassub,found=0;
- struct widget *wb,*w,*wbm;
- struct coord c;
- struct widget *tbl, *row;
-
- if (data)
- prefix=g_strdup(data);
- else {
- if (wm && wm->prefix)
- prefix=g_strdup(wm->prefix);
- }
- if ( prefix )
- plen=strlen(prefix);
-
- gui_internal_prune_menu_count(this, 1, 0);
- wb=gui_internal_menu(this, _("Bookmarks"));
- wb->background=this->background;
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- //w->spy=this->spacing*3;
- gui_internal_widget_append(wb, w);
-
- if(navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL) ) {
- if (!plen) {
- bookmarks_move_root(mattr.u.bookmarks);
- } else {
- if (!strcmp(prefix,"..")) {
- bookmarks_move_up(mattr.u.bookmarks);
- g_free(prefix);
- prefix=g_strdup(bookmarks_item_cwd(mattr.u.bookmarks));
- if (prefix) {
- plen=strlen(prefix);
- } else {
- plen=0;
- }
- } else {
- bookmarks_move_down(mattr.u.bookmarks,prefix);
- }
-
- // "Back" button, when inside a bookmark folder
-
- if (plen) {
- wbm=gui_internal_button_new_with_callback(this, "..",
- image_new_xs(this, "gui_inactive"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_bookmarks, NULL);
- wbm->prefix=g_strdup("..");
- gui_internal_widget_append(w, wbm);
-
- // load bookmark folder as Waypoints, if any
- if (bookmarks_get_bookmark_count(mattr.u.bookmarks) > 0){
- wbm=gui_internal_button_new_with_callback(this, _("Bookmarks as waypoints"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_load_bookmarks_as_waypoints, NULL);
- wbm->prefix=g_strdup(prefix);
- gui_internal_widget_append(w, wbm);
- }
-
- // save Waypoints in bookmark folder, if route exists
- if (navit_get_destination_count(this->nav) > 0){
- if (bookmarks_get_bookmark_count(mattr.u.bookmarks)==0){
- wbm=gui_internal_button_new_with_callback(this, _("Save waypoints"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_replace_bookmarks_from_waypoints, NULL);
- }else{
- wbm=gui_internal_button_new_with_callback(this, _("Replace with waypoints"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_replace_bookmarks_from_waypoints, NULL);
- }
- wbm->prefix=g_strdup(prefix);
- gui_internal_widget_append(w, wbm);
- }
-
- // delete empty folder
- if (bookmarks_get_bookmark_count(mattr.u.bookmarks)==0){
- gui_internal_widget_append(w,
- wbm=gui_internal_button_new_with_callback(this, _("Delete Folder"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_delete_bookmark_folder, NULL));
- wbm->prefix=g_strdup(prefix);
- }
-
- }
- }
-
- // Adds the Bookmark folders
- wbm=gui_internal_button_new_with_callback(this, _("Add Bookmark folder"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_add_bookmark_folder2, NULL);
- gui_internal_widget_append(w, wbm);
-
- // Pastes the Bookmark
- wbm=gui_internal_button_new_with_callback(this, _("Paste bookmark"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_paste_bookmark, NULL);
- gui_internal_widget_append(w, wbm);
-
- bookmarks_item_rewind(mattr.u.bookmarks);
-
- tbl=gui_internal_widget_table_new(this,gravity_left_top | flags_fill | flags_expand |orientation_vertical,1);
- gui_internal_widget_append(w,tbl);
-
- while ((item=bookmarks_get_item(mattr.u.bookmarks))) {
- if (!item_attr_get(item, attr_label, &attr)) continue;
- label_full=map_convert_string_tmp(item->map,attr.u.str);
- dbg(lvl_info,"full_labled: %s\n",label_full);
-
- // hassub == 1 if the item type is a sub-folder
- if (item->type == type_bookmark_folder) {
- hassub=1;
- } else {
- hassub=0;
- }
-
- row=gui_internal_widget_table_row_new(this,gravity_left| flags_fill| orientation_horizontal);
- gui_internal_widget_append(tbl, row);
- wbm=gui_internal_button_new_with_callback(this, label_full,
- image_new_xs(this, hassub ? "gui_inactive" : "gui_active" ), gravity_left_center|orientation_horizontal|flags_fill,
- hassub ? gui_internal_cmd_bookmarks : gui_internal_cmd_position, NULL);
-
- gui_internal_widget_append(row,wbm);
- if (item_coord_get(item, &c, 1)) {
- wbm->c.x=c.x;
- wbm->c.y=c.y;
- wbm->c.pro=bookmarks_get_projection(mattr.u.bookmarks);
- wbm->name=g_strdup_printf(_("Bookmark %s"),label_full);
- wbm->text=g_strdup(label_full);
- if (!hassub) {
- wbm->data=(void*)7;//Mark us as a bookmark
- }
- wbm->prefix=g_strdup(label_full);
- } else {
- gui_internal_widget_destroy(this, row);
- }
- }
- }
-
- g_free(prefix);
-
- if (found)
- gui_internal_check_exit(this);
- else
- gui_internal_menu_render(this);
-}
-
-
-
-
-static void
-gui_internal_keynav_highlight_next(struct gui_priv *this, int dx, int dy, int rotary);
-
-static int
-gui_internal_keynav_find_next(struct widget *wi, struct widget *current_highlight, struct widget **result);
-
-static int
-gui_internal_keynav_find_prev(struct widget *wi, struct widget *current_highlight, struct widget **result);
-
-static struct widget*
-gui_internal_keynav_find_next_sensitive_child(struct widget *wi);
-
-void
-gui_internal_keypress_do(struct gui_priv *this, char *key)
-{
- struct widget *wi,*menu,*search_list;
- int len=0;
- char *text=NULL;
-
- menu=g_list_last(this->root.children)->data;
- wi=gui_internal_find_widget(menu, NULL, STATE_EDIT);
- if (wi) {
- /* select first item of the searchlist */
- if (*key == NAVIT_KEY_RETURN) {
- search_list=gui_internal_menu_data(this)->search_list;
- if(search_list) {
- GList *l=gui_internal_widget_table_top_row(this, search_list);
- if (l && l->data) {
- struct widget *w=l->data;
- this->current.x=w->p.x+w->w/2;
- this->current.y=w->p.y+w->h/2;
- gui_internal_highlight(this);
- }
- } else {
- wi->reason=gui_internal_reason_keypress_finish;
- wi->func(this, wi, wi->data);
- }
- return;
- } else if (*key == NAVIT_KEY_BACKSPACE) {
- dbg(lvl_debug,"backspace\n");
- if (wi->text && wi->text[0]) {
- len=g_utf8_prev_char(wi->text+strlen(wi->text))-wi->text;
- wi->text[len]='\0';
- text=g_strdup(wi->text);
- }
- } else {
- if (wi->state & STATE_CLEAR) {
- dbg(lvl_info,"wi->state=0x%x\n", wi->state);
- g_free(wi->text);
- wi->text=NULL;
- wi->state &= ~STATE_CLEAR;
- dbg(lvl_info,"wi->state=0x%x\n", wi->state);
- }
- text=g_strdup_printf("%s%s", wi->text ? wi->text : "", key);
-
- gui_internal_keyboard_to_lower_case(this);
- }
- g_free(wi->text);
- wi->text=text;
-
- if(!wi->text || !*wi->text)
- gui_internal_keyboard_to_upper_case(this);
-
- if (wi->func) {
- wi->reason=gui_internal_reason_keypress;
- wi->func(this, wi, wi->data);
- }
- gui_internal_widget_render(this, wi);
- }
-}
-
-
-
-
-char *
-gui_internal_cmd_match_expand(char *pattern, struct attr **in)
-{
- char p,*ret=g_strdup(pattern),*r=ret,*a;
- int len;
- while ((p=*pattern++)) {
- switch (p) {
- case '*':
- *r='\0';
- a=attr_to_text(*in++,NULL,0);
- len=strlen(ret)+strlen(a)+strlen(pattern)+1;
- r=g_malloc(len);
- strcpy(r, ret);
- strcat(r, a);
- g_free(ret);
- g_free(a);
- ret=r;
- r=ret+strlen(ret);
- break;
- case '\\':
- p=*pattern++;
- default:
- *r++=p;
- }
- }
- *r++='\0';
- return ret;
-}
-
-static int
-gui_internal_match(const char *pattern, const char *string)
-{
- char p,s;
- while ((p=*pattern++)) {
- switch (p) {
- case '*':
- while ((s=*string)) {
- if (gui_internal_match(pattern,string))
- return 1;
- string++;
- }
- break;
- case '\\':
- p=*pattern++;
- default:
- if (*string++ != p)
- return 0;
- }
- }
- return 1;
-}
-
-int
-gui_internal_set(char *remove, char *add)
-{
- char *gui_file=g_strjoin(NULL, navit_get_user_data_directory(TRUE), "/gui_internal.txt", NULL);
- char *gui_file_new=g_strjoin(NULL, navit_get_user_data_directory(TRUE), "/gui_internal_new.txt", NULL);
- FILE *fo=fopen(gui_file_new,"w");
- FILE *fi=fopen(gui_file,"r");
- char *line=NULL;
- int ret;
- size_t size=0;
- if (fi != NULL){
- while (getline(&line,&size,fi) > 0) {
- int len=strlen(line);
- if (len > 0 && line[len-1] == '\n')
- line[len-1]='\0';
- dbg(lvl_debug,"line=%s\n",line);
- if (!gui_internal_match(remove, line))
- fprintf(fo,"%s\n",line);
- }
- if (line)
- free(line);
- fclose(fi);
- }
- if (add)
- fprintf(fo,"%s;\n",add);
- fclose(fo);
- unlink(gui_file);
- ret=(rename(gui_file_new, gui_file)==0);
- g_free(gui_file_new);
- g_free(gui_file);
-
- return ret;
-}
-
-
-
-static void
-gui_internal_window_closed(struct gui_priv *this)
-{
- gui_internal_cmd2_quit(this, NULL, NULL, NULL, NULL);
-}
-
-
-static void
-gui_internal_cmd_map_download_do(struct gui_priv *this, struct widget *wm, void *data)
-{
- char *text=g_strdup_printf(_("Download %s"),wm->name);
- struct widget *w, *wb;
- struct map *map=data;
- double bllon,bllat,trlon,trlat;
-
- wb=gui_internal_menu(this, text);
- g_free(text);
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- w->spy=this->spacing*3;
- gui_internal_widget_append(wb, w);
- if (sscanf(wm->prefix,"%lf,%lf,%lf,%lf",&bllon,&bllat,&trlon,&trlat) == 4) {
- struct coord_geo g;
- struct map_selection sel;
- struct map_rect *mr;
- struct item *item;
-
- sel.next=NULL;
- sel.order=255;
- g.lng=bllon;
- g.lat=trlat;
- transform_from_geo(projection_mg, &g, &sel.u.c_rect.lu);
- g.lng=trlon;
- g.lat=bllat;
- transform_from_geo(projection_mg, &g, &sel.u.c_rect.rl);
- sel.range.min=type_none;
- sel.range.max=type_last;
- mr=map_rect_new(map, &sel);
- while ((item=map_rect_get_item(mr))) {
- dbg(lvl_info,"item\n");
- }
- map_rect_destroy(mr);
- }
-
- dbg(lvl_info,"bbox=%s\n",wm->prefix);
- gui_internal_menu_render(this);
-}
-
-void
-gui_internal_cmd_map_download(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr on, off, download_enabled, download_disabled;
- struct widget *w,*wb,*wma;
- struct map *map=data;
- FILE *f;
- char *search,buffer[256];
- int found,sp_match=0;
-
- dbg(lvl_debug,"wm=%p prefix=%s\n",wm,wm->prefix);
-
- search=wm->prefix;
- if (search) {
- found=0;
- while(search[sp_match] == ' ')
- sp_match++;
- sp_match++;
- } else {
- found=1;
- }
- on.type=off.type=attr_active;
- on.u.num=1;
- off.u.num=0;
- wb=gui_internal_menu(this, wm->name?wm->name:_("Map Download"));
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- w->spy=this->spacing*3;
- gui_internal_widget_append(wb, w);
- if (!search) {
- wma=gui_internal_button_map_attr_new(this, _("Active"), gravity_left_center|orientation_horizontal|flags_fill, map, &on, &off, 1);
- gui_internal_widget_append(w, wma);
- }
-
- download_enabled.type=download_disabled.type=attr_update;
- download_enabled.u.num=1;
- download_disabled.u.num=0;
- wma=gui_internal_button_map_attr_new(this
- , _("Download Enabled")
- , gravity_left_center|orientation_horizontal|flags_fill
- , map
- , &download_enabled
- , &download_disabled
- , 0);
- gui_internal_widget_append(w, wma);
-
-
- f=fopen("maps/areas.tsv","r");
- while (f && fgets(buffer, sizeof(buffer), f)) {
- char *nl,*description,*description_size,*bbox,*size=NULL;
- int sp=0;
- if ((nl=strchr(buffer,'\n')))
- *nl='\0';
- if ((nl=strchr(buffer,'\r')))
- *nl='\0';
- while(buffer[sp] == ' ')
- sp++;
- if ((bbox=strchr(buffer,'\t')))
- *bbox++='\0';
- if (bbox && (size=strchr(bbox,'\t')))
- *size++='\0';
- if (search && !strcmp(buffer, search)) {
- wma=gui_internal_button_new_with_callback(this, _("Download completely"), NULL,
- gravity_left_center|orientation_horizontal|flags_fill, gui_internal_cmd_map_download_do, map);
- wma->name=g_strdup(buffer+sp);
- wma->prefix=g_strdup(bbox);
- gui_internal_widget_append(w, wma);
- found=1;
- } else if (sp < sp_match)
- found=0;
- if (sp == sp_match && found && buffer[sp]) {
- description=g_strdup(buffer+sp);
- if (size)
- description_size=g_strdup_printf("%s (%s)",description,size);
- else
- description_size=g_strdup(description);
- wma=gui_internal_button_new_with_callback(this, description_size, NULL,
- gravity_left_center|orientation_horizontal|flags_fill, gui_internal_cmd_map_download, map);
- g_free(description_size);
- wma->prefix=g_strdup(buffer);
- wma->name=description;
- gui_internal_widget_append(w, wma);
- }
- }
-
- gui_internal_menu_render(this);
-}
-
-static void
-gui_internal_cmd_set_active_vehicle(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr vehicle = {attr_vehicle,{wm->data}};
- navit_set_attr(this->nav, &vehicle);
-}
-
-static void
-gui_internal_cmd_show_satellite_status(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w,*wb,*row;
- struct attr attr,sat_attr;
- struct vehicle *v=wm->data;
- char *str;
- int i;
- enum attr_type types[]={attr_sat_prn, attr_sat_elevation, attr_sat_azimuth, attr_sat_snr};
-
- wb=gui_internal_menu(this, _("Show Satellite Status"));
- gui_internal_menu_data(this)->redisplay=gui_internal_cmd_show_satellite_status;
- gui_internal_menu_data(this)->redisplay_widget=wm;
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- w = gui_internal_widget_table_new(this,gravity_center | orientation_vertical | flags_expand | flags_fill, 0);
- row = gui_internal_widget_table_row_new(this,gravity_left_top);
- gui_internal_widget_append(row, gui_internal_label_new(this, " PRN "));
- gui_internal_widget_append(row, gui_internal_label_new(this, _(" Elevation ")));
- gui_internal_widget_append(row, gui_internal_label_new(this, _(" Azimuth ")));
- gui_internal_widget_append(row, gui_internal_label_new(this, " SNR "));
- gui_internal_widget_append(w,row);
- while (vehicle_get_attr(v, attr_position_sat_item, &attr, NULL)) {
- row = gui_internal_widget_table_row_new(this,gravity_left_top);
- for (i = 0 ; i < sizeof(types)/sizeof(enum attr_type) ; i++) {
- if (item_attr_get(attr.u.item, types[i], &sat_attr))
- str=g_strdup_printf("%ld", sat_attr.u.num);
- else
- str=g_strdup("");
- gui_internal_widget_append(row, gui_internal_label_new(this, str));
- g_free(str);
- }
- gui_internal_widget_append(w,row);
- }
- gui_internal_widget_append(wb, w);
- gui_internal_menu_render(this);
-}
-
-static void
-gui_internal_cmd_show_nmea_data(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w,*wb;
- struct attr attr;
- struct vehicle *v=wm->data;
- wb=gui_internal_menu(this, _("Show NMEA Data"));
- gui_internal_menu_data(this)->redisplay=gui_internal_cmd_show_nmea_data;
- gui_internal_menu_data(this)->redisplay_widget=wm;
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- if (vehicle_get_attr(v, attr_position_nmea, &attr, NULL))
- gui_internal_widget_append(w, gui_internal_text_new(this, attr.u.str, gravity_left_center|orientation_vertical));
- gui_internal_menu_render(this);
-}
-
-/**
- * A container to hold the selected vehicle and the desired profile in
- * one data item.
- */
-struct vehicle_and_profilename {
- struct vehicle *vehicle;
- char *profilename;
-};
-
-/**
- * Figures out whether the given vehicle is the active vehicle.
- *
- * @return true if the vehicle is active, false otherwise.
- */
-static int
-gui_internal_is_active_vehicle(struct gui_priv *this, struct vehicle
- *vehicle)
-{
- struct attr active_vehicle;
-
- if (!navit_get_attr(this->nav, attr_vehicle, &active_vehicle, NULL))
- active_vehicle.u.vehicle=NULL;
-
- return active_vehicle.u.vehicle == vehicle;
-}
-
-static void
-save_vehicle_xml(struct vehicle *v)
-{
- struct attr attr;
- struct attr_iter *iter=vehicle_attr_iter_new();
- int childs=0;
- printf("<vehicle");
- while (vehicle_get_attr(v, attr_any_xml, &attr, iter)) {
- if (ATTR_IS_OBJECT(attr.type))
- childs=1;
- else {
- char *attrtxt;
- printf(" %s=\"%s\"",attr_to_name(attr.type),attrtxt=attr_to_text(&attr, NULL, 1));
- g_free(attrtxt);
- }
- }
- if (childs) {
- printf(">\n");
- printf("</vehicle>\n");
- } else
- printf(" />\n");
- vehicle_attr_iter_destroy(iter);
-}
-
-
-/**
- * Reacts to a button press that changes a vehicle's active profile.
- *
- * @see gui_internal_add_vehicle_profile
- */
-static void
-gui_internal_cmd_set_active_profile(struct gui_priv *this, struct
- widget *wm, void *data)
-{
- struct vehicle_and_profilename *vapn = data;
- struct vehicle *v = vapn->vehicle;
- char *profilename = vapn->profilename;
- 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);
- vehicle_name = vehicle_name_attr.u.str;
-
- dbg(lvl_debug, "Changing vehicle %s to profile %s\n", vehicle_name,
- profilename);
-
- // Change the profile name
- profilename_attr.type = attr_profilename;
- profilename_attr.u.str = profilename;
- if(!vehicle_set_attr(v, &profilename_attr)) {
- 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)) {
- vehicle.u.vehicle=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);
-}
-
-/**
- * Adds the vehicle profile to the GUI, allowing the user to pick a
- * profile for the currently selected vehicle.
- */
-static void
-gui_internal_add_vehicle_profile(struct gui_priv *this, struct widget
- *parent, struct vehicle *v, struct vehicleprofile *profile)
-{
- // Just here to show up in the translation file, nice and close to
- // where the translations are actually used.
- struct attr profile_attr;
- struct attr *attr = NULL;
- char *name = NULL;
- char *active_profile = NULL;
- char *label = NULL;
- int active;
- struct vehicle_and_profilename *context = NULL;
-
-#ifdef ONLY_FOR_TRANSLATION
- char *translations[] = {_n("car"), _n("bike"), _n("pedestrian")};
-#endif
-
- // Figure out the profile name
- attr = attr_search(profile->attrs, NULL, attr_name);
- if (!attr) {
- dbg(lvl_error, "Adding vehicle profile failed. attr==NULL");
- return;
- }
- name = attr->u.str;
-
- // Determine whether the profile is the active one
- if (vehicle_get_attr(v, attr_profilename, &profile_attr, NULL))
- active_profile = profile_attr.u.str;
- active = active_profile != NULL && !strcmp(name, active_profile);
-
- dbg(lvl_debug, "Adding vehicle profile %s, active=%s/%i\n", name,
- active_profile, active);
-
- // Build a translatable label.
- if(active) {
- label = g_strdup_printf(_("Current profile: %s"), _(name));
- } else {
- label = g_strdup_printf(_("Change profile to: %s"), _(name));
- }
-
- // Create the context object (the vehicle and the desired profile)
- context = g_new0(struct vehicle_and_profilename, 1);
- context->vehicle = v;
- context->profilename = name;
-
- // Add the button
- gui_internal_widget_append(parent,
- gui_internal_button_new_with_callback(
- this, label,
- image_new_xs(this, active ? "gui_active" : "gui_inactive"),
- gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_set_active_profile, context));
-
- free(label);
-}
-
-void
-gui_internal_menu_vehicle_settings(struct gui_priv *this, struct vehicle *v, char *name)
-{
- struct widget *w,*wb,*row;
- struct attr attr;
- struct vehicleprofile *profile = NULL;
- GList *profiles;
-
- wb=gui_internal_menu(this, name);
- w=gui_internal_widget_table_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill,1);
- gui_internal_widget_append(wb, w);
-
- // Add the "Set as active" button if this isn't the active
- // vehicle.
- if (!gui_internal_is_active_vehicle(this, v)) {
- gui_internal_widget_append(w, row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- gui_internal_button_new_with_callback(this, _("Set as active"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_set_active_vehicle, v));
- }
-
- if (vehicle_get_attr(v, attr_position_sat_item, &attr, NULL)) {
- gui_internal_widget_append(w, row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- gui_internal_button_new_with_callback(this, _("Show Satellite status"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_show_satellite_status, v));
- }
- if (vehicle_get_attr(v, attr_position_nmea, &attr, NULL)) {
- gui_internal_widget_append(w, row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row,
- gui_internal_button_new_with_callback(this, _("Show NMEA data"),
- image_new_xs(this, "gui_active"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_show_nmea_data, v));
- }
-
- // Add all the possible vehicle profiles to the menu
- profiles = navit_get_vehicleprofiles(this->nav);
- while(profiles) {
- profile = (struct vehicleprofile *)profiles->data;
- gui_internal_widget_append(w, row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_add_vehicle_profile(this, row, v, profile);
- profiles = g_list_next(profiles);
- }
-
- callback_list_call_attr_2(this->cbl, attr_vehicle, w, v);
- gui_internal_menu_render(this);
-}
-
-void
-gui_internal_cmd_vehicle_settings(struct gui_priv *this, struct widget *wm, void *data)
-{
- gui_internal_menu_vehicle_settings(this, wm->data, wm->text);
-}
-
-
-
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void gui_internal_motion(void *data, struct point *p)
-{
-
- struct gui_priv *this=data;
- if (!this->root.children) {
- navit_handle_motion(this->nav, p);
- return;
- }
- if (!this->pressed)
- return;
- this->current=*p;
- if(!this->motion_timeout_callback)
- this->motion_timeout_callback=callback_new_1(callback_cast(gui_internal_motion_cb), this);
- if(!this->motion_timeout_event)
- this->motion_timeout_event=event_add_timeout(30,0, this->motion_timeout_callback);
-}
-
-void
-gui_internal_evaluate(struct gui_priv *this, const char *command)
-{
- if (command)
- command_evaluate(&this->self, command);
-}
-
-
-void
-gui_internal_enter(struct gui_priv *this, int ignore)
-{
- struct graphics *gra=this->gra;
- if (ignore != -1)
- this->ignore_button=ignore;
-
- navit_block(this->nav, 1);
- graphics_overlay_disable(gra, 1);
- this->root.p.x=0;
- this->root.p.y=0;
- this->root.background=this->background;
-}
-
-void
-gui_internal_leave(struct gui_priv *this)
-{
- graphics_draw_mode(this->gra, draw_mode_end);
-}
-
-void
-gui_internal_set_click_coord(struct gui_priv *this, struct point *p)
-{
- struct coord c;
- struct coord_geo g;
- struct attr attr;
- struct transformation *trans;
- attr_free(this->click_coord_geo);
- this->click_coord_geo=NULL;
- if (p) {
- trans=navit_get_trans(this->nav);
- transform_reverse(trans, p, &c);
- dbg(lvl_debug,"x=0x%x y=0x%x\n", c.x, c.y);
- this->clickp.pro=transform_get_projection(trans);
- this->clickp.x=c.x;
- this->clickp.y=c.y;
- transform_to_geo(this->clickp.pro, &c, &g);
- attr.u.coord_geo=&g;
- attr.type=attr_click_coord_geo;
- this->click_coord_geo=attr_dup(&attr);
- }
-}
-
-static void
-gui_internal_set_position_coord(struct gui_priv *this)
-{
- struct transformation *trans;
- struct attr attr,attrp;
- struct coord c;
-
- attr_free(this->position_coord_geo);
- this->position_coord_geo=NULL;
- if (navit_get_attr(this->nav, attr_vehicle, &attr, NULL) && attr.u.vehicle
- && vehicle_get_attr(attr.u.vehicle, attr_position_coord_geo, &attrp, NULL)) {
- trans=navit_get_trans(this->nav);
- this->position_coord_geo=attr_dup(&attrp);
- this->vehiclep.pro=transform_get_projection(trans);
- transform_from_geo(this->vehiclep.pro, attrp.u.coord_geo, &c);
- this->vehiclep.x=c.x;
- this->vehiclep.y=c.y;
- }
-}
-
-void
-gui_internal_enter_setup(struct gui_priv *this)
-{
- if (!this->mouse_button_clicked_on_map)
- gui_internal_set_position_coord(this);
-}
-
-void
-gui_internal_cmd_menu(struct gui_priv *this, int ignore, char *href)
-{
- dbg(lvl_debug,"enter\n");
- gui_internal_enter(this, ignore);
- gui_internal_enter_setup(this);
- // draw menu
- if (href)
- gui_internal_html_load_href(this, href, 0);
- else
- gui_internal_html_main_menu(this);
-}
-
-
-
-static void
-gui_internal_cmd_log_do(struct gui_priv *this, struct widget *widget)
-{
- if (widget->text && strlen(widget->text)) {
- if (this->position_coord_geo)
- navit_textfile_debug_log_at(this->nav, &this->vehiclep, "type=log_entry label=\"%s\"",widget->text);
- else
- navit_textfile_debug_log(this->nav, "type=log_entry label=\"%s\"",widget->text);
- }
- g_free(widget->text);
- widget->text=NULL;
- gui_internal_prune_menu(this, NULL);
- gui_internal_check_exit(this);
-}
-
-void
-gui_internal_cmd_log_clicked(struct gui_priv *this, struct widget *widget, void *data)
-{
- gui_internal_cmd_log_do(this, widget->data);
-}
-
-
-void
-gui_internal_check_exit(struct gui_priv *this)
-{
- struct graphics *gra=this->gra;
- if (! this->root.children) {
- gui_internal_search_idle_end(this);
- gui_internal_search_list_destroy(this);
- graphics_overlay_disable(gra, 0);
- if (!navit_block(this->nav, 0)) {
- if (this->redraw)
- navit_draw(this->nav);
- else
- navit_draw_displaylist(this->nav);
- }
- }
-}
-
-static int
-gui_internal_get_attr(struct gui_priv *this, enum attr_type type, struct attr *attr)
-{
- switch (type) {
- case attr_active:
- attr->u.num=this->root.children != NULL;
- break;
- case attr_click_coord_geo:
- if (!this->click_coord_geo)
- return 0;
- *attr=*this->click_coord_geo;
- break;
- case attr_position_coord_geo:
- if (!this->position_coord_geo)
- return 0;
- *attr=*this->position_coord_geo;
- break;
- case attr_pitch:
- attr->u.num=this->pitch;
- break;
- case attr_button:
- attr->u.num=this->mouse_button_clicked_on_map;
- break;
- case attr_navit:
- attr->u.navit=this->nav;
- break;
- case attr_fullscreen:
- attr->u.num=(this->fullscreen > 0);
- break;
- default:
- return 0;
- }
- attr->type=type;
- return 1;
-}
-
-static int
-gui_internal_add_attr(struct gui_priv *this, struct attr *attr)
-{
- switch (attr->type) {
- case attr_xml_text:
- g_free(this->html_text);
- this->html_text=g_strdup(attr->u.str);
- return 1;
- default:
- return 0;
- }
-}
-
-static int
-gui_internal_set_attr(struct gui_priv *this, struct attr *attr)
-{
- switch (attr->type) {
- case attr_fullscreen:
- if ((this->fullscreen > 0) != (attr->u.num > 0)) {
- graphics_draw_mode(this->gra, draw_mode_end);
- this->win->fullscreen(this->win, attr->u.num > 0);
- graphics_draw_mode(this->gra, draw_mode_begin);
- }
- this->fullscreen=attr->u.num;
- return 1;
- case attr_menu_on_map_click:
- this->menu_on_map_click=attr->u.num;
- return 1;
- case attr_on_map_click:
- g_free(this->on_map_click);
- this->on_map_click=g_strdup(attr->u.str);
- return 1;
- default:
- dbg(lvl_error,"Unknown attribute: %s\n",attr_to_name(attr->type));
- return 1;
- }
-}
-
-static void gui_internal_dbus_signal(struct gui_priv *this, struct point *p)
-{
- struct displaylist_handle *dlh;
- struct displaylist *display;
- struct displayitem *di;
- struct attr cb,**attr_list=NULL;
- int valid=0;
-
- display=navit_get_displaylist(this->nav);
- dlh=graphics_displaylist_open(display);
- while ((di=graphics_displaylist_next(dlh))) {
- struct item *item=graphics_displayitem_get_item(di);
- if (item_is_point(*item) && graphics_displayitem_get_displayed(di) &&
- graphics_displayitem_within_dist(display, di, p, this->radius)) {
- struct map_rect *mr=map_rect_new(item->map, NULL);
- struct item *itemo=map_rect_get_item_byid(mr, item->id_hi, item->id_lo);
- struct attr attr;
- if (itemo && item_attr_get(itemo, attr_data, &attr))
- attr_list=attr_generic_add_attr(attr_list, &attr);
- map_rect_destroy(mr);
- }
- }
- graphics_displaylist_close(dlh);
- if (attr_list && navit_get_attr(this->nav, attr_callback_list, &cb, NULL))
- callback_list_call_attr_4(cb.u.callback_list, attr_command, "dbus_send_signal", attr_list, NULL, &valid);
- attr_list_free(attr_list);
-}
-
-/**
- * @brief Converts one geo coordinate in human readable form to double value.
- *
- * @author Martin Bruns (05/2012), mdankov
- */
-static int
-gui_internal_coordinate_parse(char *s, char plus, char minus, double *x)
-{
- int sign=0;
- char *degree, *minute, *second;
- double tmp;
-
- if(!s)
- return 0;
-
- if (strchr(s, minus)!=NULL)
- sign=-1;
- else if (strchr(s, plus)!=NULL)
- sign=1;
-
- if(!sign)
- return 0;
-
-
- /* Can't just use strtok here because ° is multibyte sequence in utf8 */
- degree=s;
- minute=strstr(s,"°");
- if(minute) {
- *minute=0;
- minute+=strlen("°");
- }
-
- sscanf(degree, "%lf", x);
-
- if(strchr(degree, plus) || strchr(degree, minus)) {
- dbg(lvl_debug,"degree %c/%c found\n",plus,minus);
- } else {/* DEGREES_MINUTES */
- if(!minute)
- return 0;
- minute = strtok(minute,"'");
- sscanf(minute, "%lf", &tmp);
- *x+=tmp/60;
- if(strchr(minute, plus) || strchr(minute, minus)) {
- dbg(lvl_debug,"minute %c/%c found\n",plus,minus);
- } else { /* DEGREES_MINUTES_SECONDS */
- second=strtok(NULL,"");
- if(!second)
- return 0;
- sscanf(second, "%lf", &tmp);
- *x+=tmp/3600;
- }
- }
- *x *= sign;
- return 1;
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Bruns (05/2012)
-//##############################################################################################################
-static void
-gui_internal_cmd_enter_coord_do(struct gui_priv *this, struct widget *widget)
-{
- char *lat, *lng;
- char *widgettext;
- double latitude, longitude;
- dbg(lvl_debug,"text entered:%s\n", widget->text);
-
- /* possible entry can be identical to coord_format output but only space between lat and lng is allowed */
- widgettext=g_ascii_strup(widget->text,-1);
-
- lat=strtok(widgettext," ");
- lng=strtok(NULL,"");
-
- if(!lat || !lng){
- g_free(widgettext);
- return;
- }
- if( gui_internal_coordinate_parse(lat, 'N', 'S', &latitude) && gui_internal_coordinate_parse(lng, 'E', 'W', &longitude) ) {
- g_free(widgettext);
- widgettext=g_strdup_printf("%lf %lf", longitude, latitude);
- pcoord_parse(widgettext, projection_mg, &widget->c );
- } else if(!pcoord_parse(widget->text, projection_mg, &widget->c )) {
- g_free(widgettext);
- return;
- }
- g_free(widgettext);
-
- gui_internal_cmd_position(this, widget, (void*)8);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Bruns (05/2012)
-//##############################################################################################################
-void
-gui_internal_cmd_enter_coord_clicked(struct gui_priv *this, struct widget *widget, void *data)
-{
- dbg(lvl_debug,"entered\n");
- gui_internal_cmd_enter_coord_do(this, widget->data);
-}
-
-/**
- * @brief Handles mouse clicks and scroll wheel movement
- *
- * @author Martin Schaller (04/2008), Stefan Klumpp (04/2008)
- */
-static void gui_internal_button(void *data, int pressed, int button, struct point *p)
-{
- struct gui_priv *this=data;
- struct graphics *gra=this->gra;
-
- dbg(lvl_debug,"enter %d %d\n", pressed, button);
- // if still on the map (not in the menu, yet):
- dbg(lvl_debug,"children=%p ignore_button=%d\n",this->root.children,this->ignore_button);
- if (!this->root.children || this->ignore_button) {
-
- this->ignore_button=0;
- // check whether the position of the mouse changed during press/release OR if it is the scrollwheel
- if (!navit_handle_button(this->nav, pressed, button, p, NULL)) {
- dbg(lvl_debug,"navit has handled button\n");
- return;
- }
- dbg(lvl_debug,"menu_on_map_click=%d\n",this->menu_on_map_click);
- if (button != 1)
- return;
- if (this->on_map_click || this->menu_on_map_click) {
- this->mouse_button_clicked_on_map=1;
- gui_internal_set_click_coord(this, p);
- gui_internal_set_position_coord(this);
- if (this->on_map_click)
- command_evaluate(&this->self, this->on_map_click);
- else
- gui_internal_cmd_menu(this, 0, NULL);
- this->mouse_button_clicked_on_map=0;
- } else if (this->signal_on_map_click) {
- gui_internal_dbus_signal(this, p);
- return;
- }
- return;
- }
-
-
- /*
- * If already in the menu:
- */
-
- if (pressed) {
- this->pressed=1;
- this->current=*p;
- gui_internal_gesture_ring_clear(this);
- gui_internal_gesture_ring_add(this, p);
- gui_internal_highlight(this);
- } else {
- int dx,dy;
- gui_internal_gesture_ring_add(this, p);
- gui_internal_gesture_get_vector(this, 300, NULL, &dx, &dy);
- this->current.x=-1;
- this->current.y=-1;
- graphics_draw_mode(gra, draw_mode_begin);
- if(!gui_internal_gesture_do(this) && this->pressed!=2 && abs(dx)<this->icon_s && abs(dy)<this->icon_s)
- gui_internal_call_highlighted(this);
- this->pressed=0;
- if (!event_main_loop_has_quit()) {
- gui_internal_highlight(this);
- graphics_draw_mode(gra, draw_mode_end);
- gui_internal_check_exit(this);
- }
- }
-}
-
-static void
-gui_internal_setup(struct gui_priv *this)
-{
- struct color cbh={0x9fff,0x9fff,0x9fff,0xffff};
- struct color cf={0xbfff,0xbfff,0xbfff,0xffff};
- struct graphics *gra=this->gra;
- unsigned char *buffer;
- char *gui_file;
- int size;
-
- if (this->background)
- return;
- this->background=graphics_gc_new(gra);
- this->background2=graphics_gc_new(gra);
- this->highlight_background=graphics_gc_new(gra);
- graphics_gc_set_foreground(this->highlight_background, &cbh);
- this->foreground=graphics_gc_new(gra);
- graphics_gc_set_foreground(this->foreground, &cf);
- this->text_background=graphics_gc_new(gra);
- this->text_foreground=graphics_gc_new(gra);
- graphics_gc_set_foreground(this->background, &this->background_color);
- graphics_gc_set_foreground(this->background2, &this->background2_color);
- graphics_gc_set_foreground(this->text_background, &this->text_background_color);
- graphics_gc_set_foreground(this->text_foreground, &this->text_foreground_color);
- gui_file=g_strjoin(NULL, navit_get_user_data_directory(TRUE), "/gui_internal.txt", NULL);
- if (file_get_contents(gui_file,&buffer,&size)) {
- char *command=g_malloc(size+1);
- strncpy(command,(const char *)buffer,size);
- command[size]=0;
- command_evaluate(&this->self, command);
- g_free(command);
- g_free(buffer);
- }
- g_free(gui_file);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void gui_internal_resize(void *data, int w, int h)
-{
- struct gui_priv *this=data;
- int changed=0;
-
- gui_internal_setup(this);
-
- if (this->root.w != w || this->root.h != h) {
- this->root.w=w;
- this->root.h=h;
- changed=1;
- }
- /*
- * If we're drawing behind system bars on Android, watching for actual size changes will not catch
- * fullscreen toggle events. As a workaround, always assume a size change if padding is supplied.
- */
- if (!changed && this->gra && graphics_get_data(this->gra, "padding"))
- changed = 1;
- dbg(lvl_debug,"w=%d h=%d children=%p\n", w, h, this->root.children);
- navit_handle_resize(this->nav, w, h);
- if (this->root.children) {
- if (changed) {
- gui_internal_html_main_menu(this);
- } else {
- gui_internal_menu_render(this);
- }
- }
-}
-
-static void
-gui_internal_keynav_point(struct widget *w, int dx, int dy, struct point *p)
-{
- p->x=w->p.x+w->w/2;
- p->y=w->p.y+w->h/2;
- if (dx < 0)
- p->x=w->p.x;
- if (dx > 0)
- p->x=w->p.x+w->w;
- if (dy < 0)
- p->y=w->p.y;
- if (dy > 0)
- p->y=w->p.y+w->h;
-}
-
-static struct widget*
-gui_internal_keynav_find_next_sensitive_child(struct widget *wi) {
- GList *l=wi->children;
- if (wi->state & STATE_OFFSCREEN)
- return NULL;
- if (wi->state & STATE_SENSITIVE)
- return wi;
- while (l) {
- struct widget* tmp = gui_internal_keynav_find_next_sensitive_child(l->data);
- if (tmp)
- return tmp;
- l=g_list_next(l);
- }
- return NULL;
-}
-
-static int
-gui_internal_keynav_find_next(struct widget *wi, struct widget *current_highlight, struct widget **result) {
- GList *l=wi->children;
- if (wi == current_highlight)
- return 1;
- while (l) {
- struct widget *child=l->data;
- l=g_list_next(l);
- if (gui_internal_keynav_find_next(child, current_highlight, result)) {
- while (l) {
- struct widget *new = gui_internal_keynav_find_next_sensitive_child(l->data);
- if (new) {
- *result = new;
- /* Found one! */
- return 0;
- }
- l=g_list_next(l);
- }
- /* Try parent */
- return 1;
- }
- }
- return 0;
-}
-
-#define RESULT_FOUND 1
-#define NO_RESULT_YET 0
-
-static int
-gui_internal_keynav_find_prev(struct widget *wi, struct widget *current_highlight, struct widget **result) {
- if (wi == current_highlight && *result) {
- // Reached current widget; last widget found is the result.
- return RESULT_FOUND;
- }
- // If widget is off-screen, do not recurse into it.
- if (wi->state & STATE_OFFSCREEN)
- return NO_RESULT_YET;
- if (wi->state & STATE_SENSITIVE)
- *result= wi;
- GList *l=wi->children;
- while (l) {
- struct widget *child=l->data;
- if (gui_internal_keynav_find_prev(child, current_highlight, result) == RESULT_FOUND) {
- return RESULT_FOUND;
- }
- l=g_list_next(l);
- }
- // If no sensitive widget is found before "current_highlight", return the last sensitive widget when
- // recursion terminates.
- return NO_RESULT_YET;
-}
-
-static void
-gui_internal_keynav_find_closest(struct widget *wi, struct point *p, int dx, int dy, int *distance, struct widget **result)
-{
- GList *l=wi->children;
- // Skip hidden elements
- if (wi->p.x==0 && wi->p.y==0 && wi->w==0 && wi->h==0)
- return;
- if ((wi->state & STATE_SENSITIVE) ) {
- int dist1,dist2;
- struct point wp;
- gui_internal_keynav_point(wi, -dx, -dy, &wp);
- if (dx) {
- dist1=(wp.x-p->x)*dx;
- dist2=wp.y-p->y;
- } else if (dy) {
- dist1=(wp.y-p->y)*dy;
- dist2=wp.x-p->x;
- } else {
- dist2=wp.x-p->x;
- dist1=wp.y-p->y;
- if (dist1 < 0)
- dist1=-dist1;
- }
- dbg(lvl_debug,"checking %d,%d %d %d against %d,%d-%d,%d result %d,%d\n", p->x, p->y, dx, dy, wi->p.x, wi->p.y, wi->p.x+wi->w, wi->p.y+wi->h, dist1, dist2);
- if (dist1 >= 0) {
- if (dist2 < 0)
- dist1-=dist2;
- else
- dist1+=dist2;
- if (dist1 < *distance) {
- *result=wi;
- *distance=dist1;
- }
- }
- }
- while (l) {
- struct widget *child=l->data;
- gui_internal_keynav_find_closest(child, p, dx, dy, distance, result);
- l=g_list_next(l);
- }
-}
-
-/**
- * @brief Move keyboard focus to the next widget.
- *
- * Move keyboard focus to the appropriate next widget, depending on the direction of focus
- * movement.
- *
- * @param this GUI context
- * @param this dx horizontal movement (-1=left, +1=right), unless rotary==1
- * @param this dy vertical movement (+1=up, -1=down)
- * @param rotary (0/1) input from rotary encoder - dx indicates forwards/backwards movement
- * through all widgets
- */
-static void
-gui_internal_keynav_highlight_next(struct gui_priv *this, int dx, int dy, int rotary)
-{
- struct widget *result,*menu=g_list_last(this->root.children)->data;
- struct widget *current_highlight = NULL;
- struct point p;
- int distance;
- if (this->highlighted && this->highlighted_menu == menu) {
- gui_internal_keynav_point(this->highlighted, dx, dy, &p);
- current_highlight = this->highlighted;
- }
- else {
- p.x=0;
- p.y=0;
- distance=INT_MAX;
- result=NULL;
- gui_internal_keynav_find_closest(menu, &p, 0, 0, &distance, &result);
- if (result) {
- gui_internal_keynav_point(result, dx, dy, &p);
- dbg(lvl_debug,"result origin=%p p=%d,%d\n", result, p.x, p.y);
- current_highlight = result;
- }
- }
- result=NULL;
- distance=INT_MAX;
- if (rotary && dx > 0)
- gui_internal_keynav_find_next(menu, current_highlight, &result);
- else if (rotary && dx < 0)
- gui_internal_keynav_find_prev(menu, current_highlight, &result);
- else
- gui_internal_keynav_find_closest(menu, &p, dx, dy, &distance, &result);
- dbg(lvl_debug,"result=%p\n", result);
- if (! result) {
- if (dx < 0) {
- p.x=this->root.w;
- if (rotary) p.y = this->root.h;
- }
- if (dx > 0) {
- p.x=0;
- if (rotary) p.y = 0;
- }
- if (dy < 0)
- p.y=this->root.h;
- if (dy > 0)
- p.y=0;
- result=NULL;
- distance=INT_MAX;
- gui_internal_keynav_find_closest(menu, &p, dx, dy, &distance, &result);
- dbg(lvl_debug,"wraparound result=%p\n", result);
- }
- gui_internal_highlight_do(this, result);
- if (result)
- gui_internal_say(this, result, 1);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static void gui_internal_keypress(void *data, char *key)
-{
- struct gui_priv *this=data;
- int w,h;
- struct point p;
- if (!this->root.children) {
- transform_get_size(navit_get_trans(this->nav), &w, &h);
- switch (*key) {
- case NAVIT_KEY_UP:
- p.x=w/2;
- p.y=0;
- navit_set_center_screen(this->nav, &p, 1);
- break;
- case NAVIT_KEY_DOWN:
- p.x=w/2;
- p.y=h;
- navit_set_center_screen(this->nav, &p, 1);
- break;
- case NAVIT_KEY_LEFT:
- p.x=0;
- p.y=h/2;
- navit_set_center_screen(this->nav, &p, 1);
- break;
- case NAVIT_KEY_RIGHT:
- p.x=w;
- p.y=h/2;
- navit_set_center_screen(this->nav, &p, 1);
- break;
- case NAVIT_KEY_ZOOM_IN:
- navit_zoom_in(this->nav, 2, NULL);
- break;
- case NAVIT_KEY_ZOOM_OUT:
- navit_zoom_out(this->nav, 2, NULL);
- break;
- case NAVIT_KEY_RETURN:
- case NAVIT_KEY_MENU:
- gui_internal_set_click_coord(this, NULL);
- gui_internal_cmd_menu(this, 0, NULL);
- break;
- }
- return;
- }
- graphics_draw_mode(this->gra, draw_mode_begin);
- switch (*key) {
- case NAVIT_KEY_PAGE_DOWN:
- gui_internal_keynav_highlight_next(this,1,0,1);
- break;
- case NAVIT_KEY_PAGE_UP:
- gui_internal_keynav_highlight_next(this,-1,0,1);
- break;
- case NAVIT_KEY_LEFT:
- gui_internal_keynav_highlight_next(this,-1,0,0);
- break;
- case NAVIT_KEY_RIGHT:
- gui_internal_keynav_highlight_next(this,1,0,0);
- break;
- case NAVIT_KEY_UP:
- gui_internal_keynav_highlight_next(this,0,-1,0);
- break;
- case NAVIT_KEY_DOWN:
- gui_internal_keynav_highlight_next(this,0,1,0);
- break;
- case NAVIT_KEY_BACK:
- if (g_list_length(this->root.children) > 1)
- gui_internal_back(this, NULL, NULL);
- else
- gui_internal_prune_menu(this, NULL);
- break;
- case NAVIT_KEY_RETURN:
- if (this->highlighted && this->highlighted_menu == g_list_last(this->root.children)->data)
- gui_internal_call_highlighted(this);
- else
- gui_internal_keypress_do(this, key);
- break;
- default:
- gui_internal_keypress_do(this, key);
- }
- if (!event_main_loop_has_quit()) {
- graphics_draw_mode(this->gra, draw_mode_end);
- gui_internal_check_exit(this);
- }
-}
-
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static int gui_internal_set_graphics(struct gui_priv *this, struct graphics *gra)
-{
- struct window *win;
- struct transformation *trans=navit_get_trans(this->nav);
-
- win=graphics_get_data(gra, "window");
- if (! win) {
- dbg(lvl_error, "failed to obtain window from graphics plugin, cannot set graphics\n");
- return 1;
- }
- navit_ignore_graphics_events(this->nav, 1);
- this->gra=gra;
- this->win=win;
- navit_ignore_graphics_events(this->nav, 1);
- transform_get_size(trans, &this->root.w, &this->root.h);
- this->resize_cb=callback_new_attr_1(callback_cast(gui_internal_resize), attr_resize, this);
- graphics_add_callback(gra, this->resize_cb);
- this->button_cb=callback_new_attr_1(callback_cast(gui_internal_button), attr_button, this);
- graphics_add_callback(gra, this->button_cb);
- this->motion_cb=callback_new_attr_1(callback_cast(gui_internal_motion), attr_motion, this);
- graphics_add_callback(gra, this->motion_cb);
- this->keypress_cb=callback_new_attr_1(callback_cast(gui_internal_keypress), attr_keypress, this);
- graphics_add_callback(gra, this->keypress_cb);
- this->window_closed_cb=callback_new_attr_1(callback_cast(gui_internal_window_closed), attr_window_closed, this);
- graphics_add_callback(gra, this->window_closed_cb);
-
- // set fullscreen if needed
- if (this->fullscreen)
- this->win->fullscreen(this->win, this->fullscreen != 0);
- /* Was resize callback already issued? */
- if (navit_get_ready(this->nav) & 2)
- gui_internal_setup(this);
- return 0;
-}
-
-static void gui_internal_disable_suspend(struct gui_priv *this)
-{
- if (this->win->disable_suspend)
- this->win->disable_suspend(this->win);
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-struct gui_methods gui_internal_methods = {
- NULL,
- NULL,
- gui_internal_set_graphics,
- NULL,
- NULL,
- NULL,
- gui_internal_disable_suspend,
- gui_internal_get_attr,
- gui_internal_add_attr,
- gui_internal_set_attr,
-};
-
-
-static void
-gui_internal_add_callback(struct gui_priv *priv, struct callback *cb)
-{
- callback_list_add(priv->cbl, cb);
-}
-
-static void
-gui_internal_remove_callback(struct gui_priv *priv, struct callback *cb)
-{
- callback_list_remove(priv->cbl, cb);
-}
-
-
-static struct gui_internal_methods gui_internal_methods_ext = {
- gui_internal_add_callback,
- gui_internal_remove_callback,
- gui_internal_menu_render,
- image_new_xs,
- image_new_l,
-};
-
-
-static enum flags
-gui_internal_get_flags(struct widget *widget)
-{
- return widget->flags;
-}
-
-static void
-gui_internal_set_flags(struct widget *widget, enum flags flags)
-{
- widget->flags=flags;
-}
-
-static int
-gui_internal_get_state(struct widget *widget)
-{
- return widget->state;
-}
-
-static void
-gui_internal_set_state(struct widget *widget, int state)
-{
- widget->state=state;
-}
-
-static void
-gui_internal_set_func(struct widget *widget, void (*func)(struct gui_priv *priv, struct widget *widget, void *data))
-{
- widget->func=func;
-}
-
-static void
-gui_internal_set_data(struct widget *widget, void *data)
-{
- widget->data=data;
-}
-
-static void
-gui_internal_set_default_background(struct gui_priv *this, struct widget *widget)
-{
- widget->background=this->background;
-}
-
-static struct gui_internal_widget_methods gui_internal_widget_methods = {
- gui_internal_widget_append,
- gui_internal_button_new,
- gui_internal_button_new_with_callback,
- gui_internal_box_new,
- gui_internal_label_new,
- gui_internal_image_new,
- gui_internal_keyboard,
- gui_internal_menu,
- gui_internal_get_flags,
- gui_internal_set_flags,
- gui_internal_get_state,
- gui_internal_set_state,
- gui_internal_set_func,
- gui_internal_set_data,
- gui_internal_set_default_background,
-};
-
-/**
- * @brief finds the intersection point of 2 lines
- *
- * @param coord a1, a2, b1, b2 : coords of the start and
- * end of the first and the second line
- * @param coord res, will become the coords of the intersection if found
- * @return : TRUE if intersection found, otherwise FALSE
- */
-int
-line_intersection(struct coord* a1, struct coord *a2, struct coord * b1, struct coord *b2, struct coord *res)
-{
- int n, a, b;
- int adx=a2->x-a1->x;
- int ady=a2->y-a1->y;
- int bdx=b2->x-b1->x;
- int bdy=b2->y-b1->y;
- n = bdy * adx - bdx * ady;
- a = bdx * (a1->y - b1->y) - bdy * (a1->x - b1->x);
- b = adx * (a1->y - b1->y) - ady * (a1->x - b1->x);
- if (n < 0) {
- n = -n;
- a = -a;
- b = -b;
- }
- if (a < 0 || b < 0)
- return FALSE;
- if (a > n || b > n)
- return FALSE;
- if (n == 0) {
- dbg(lvl_info,"a=%d b=%d n=%d\n", a, b, n);
- dbg(lvl_info,"a1=0x%x,0x%x ad %d,%d\n", a1->x, a1->y, adx, ady);
- dbg(lvl_info,"b1=0x%x,0x%x bd %d,%d\n", b1->x, b1->y, bdx, bdy);
- dbg(lvl_info,"No intersection found, lines assumed parallel ?\n");
- return FALSE;
- }
- res->x = a1->x + a * adx / n;
- res->y = a1->y + a * ady / n;
- return TRUE;
-}
-
-struct heightline *
-item_get_heightline(struct item *item)
-{
- struct heightline *ret=NULL;
- struct street_data *sd;
- struct attr attr;
- int i,height;
-
- if (item_attr_get(item, attr_label, &attr)) {
- height=atoi(attr.u.str);
- sd=street_get_data(item);
- if (sd && sd->count > 1) {
- ret=g_malloc(sizeof(struct heightline)+sd->count*sizeof(struct coord));
- ret->bbox.lu=sd->c[0];
- ret->bbox.rl=sd->c[0];
- ret->count=sd->count;
- ret->height=height;
- for (i = 0 ; i < sd->count ; i++) {
- ret->c[i]=sd->c[i];
- coord_rect_extend(&ret->bbox, sd->c+i);
- }
- }
- street_data_free(sd);
- }
- return ret;
-}
-
-/**
- * @brief Called when the route is updated.
- */
-void
-gui_internal_route_update(struct gui_priv * this, struct navit * navit, struct vehicle *v)
-{
-
- if(this->route_data.route_showing) {
- gui_internal_populate_route_table(this,navit);
- graphics_draw_mode(this->gra, draw_mode_begin);
- gui_internal_menu_render(this);
- graphics_draw_mode(this->gra, draw_mode_end);
- }
-
-
-}
-
-
-/**
- * @brief Called when the route screen is closed (deallocated).
- *
- * The main purpose of this function is to remove the widgets from
- * references route_data because those widgets are about to be freed.
- */
-void
-gui_internal_route_screen_free(struct gui_priv * this_,struct widget * w)
-{
- if(this_) {
- this_->route_data.route_showing=0;
- this_->route_data.route_table=NULL;
- g_free(w);
- }
-
-}
-
-/**
- * @brief Populates the route table with route information
- *
- * @param this The gui context
- * @param navit The navit object
- */
-void
-gui_internal_populate_route_table(struct gui_priv * this, struct navit * navit)
-{
- struct map * map=NULL;
- struct map_rect * mr=NULL;
- struct navigation * nav = NULL;
- struct item * item =NULL;
- struct attr attr,route;
- struct widget * label = NULL;
- struct widget * row = NULL;
- struct coord c;
- nav = navit_get_navigation(navit);
- if(!nav) {
- return;
- }
- map = navigation_get_map(nav);
- if(map)
- mr = map_rect_new(map,NULL);
- if(mr) {
- GList *toprow;
- struct item topitem={0};
- toprow=gui_internal_widget_table_top_row(this, this->route_data.route_table);
- if(toprow && toprow->data)
- topitem=((struct widget*)toprow->data)->item;
- gui_internal_widget_table_clear(this,this->route_data.route_table);
- if (navit_get_attr(navit, attr_route, &route, NULL)) {
- struct attr destination_length, destination_time;
- char *length=NULL,*time=NULL,*length_time;
- if (route_get_attr(route.u.route, attr_destination_length, &destination_length, NULL))
- length=attr_to_text_ext(&destination_length, NULL, attr_format_with_units, attr_format_default, NULL);
- if (route_get_attr(route.u.route, attr_destination_time, &destination_time, NULL))
- time=attr_to_text_ext(&destination_time, NULL, attr_format_with_units, attr_format_default, NULL);
- row = gui_internal_widget_table_row_new(this,
- gravity_left
- | flags_fill
- | orientation_horizontal);
- gui_internal_widget_append(this->route_data.route_table,row);
- length_time=g_strdup_printf("%s %s",length,time);
- label = gui_internal_label_new(this,length_time);
- g_free(length_time);
- g_free(length);
- g_free(time);
- gui_internal_widget_append(row,label);
- }
- while((item = map_rect_get_item(mr))) {
- if(item_attr_get(item,attr_navigation_long,&attr)) {
- row = gui_internal_widget_table_row_new(this,
- gravity_left
- | flags_fill
- | orientation_horizontal);
- gui_internal_widget_append(this->route_data.route_table,row);
-
- label = gui_internal_label_new(this,map_convert_string_tmp(item->map,attr.u.str));
- gui_internal_widget_append(row,label);
-
- label->item=*item;
- row->item=*item;
- item_coord_get(item, &c, 1);
- label->c.x=c.x;
- label->c.y=c.y;
- label->c.pro=map_projection(map);
- label->func=gui_internal_cmd_position;
- label->state|=STATE_SENSITIVE;
- label->data=(void*)2;
- if(toprow && item->id_hi==topitem.id_hi && item->id_lo==topitem.id_lo && item->map==topitem.map)
- gui_internal_widget_table_set_top_row(this, this->route_data.route_table, row);
- }
-
- }
- map_rect_destroy(mr);
- }
-}
-
-/*
- * Command interface wrapper for commands which can be used both from gui html and to enter internal gui (for example, from osd or dbus).
- * Set first command argument to integer 1, if this command was called by mouse click from oustside of gui (default). Set it to 0
- * if command is called by some other means (dbus signal, for example). If first argument is non integer, it's passed on
- * to actual handler.
- *
- */
-
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-static struct gui_priv * gui_internal_new(struct navit *nav, struct gui_methods *meth, struct attr **attrs, struct gui *gui)
-{
- struct color color_white={0xffff,0xffff,0xffff,0xffff};
- struct color color_black={0x0,0x0,0x0,0xffff};
- struct color back2_color={0x4141,0x4141,0x4141,0xffff};
-
- struct gui_priv *this;
- struct attr *attr;
- *meth=gui_internal_methods;
- this=g_new0(struct gui_priv, 1);
- this->nav=nav;
-
- this->self.type=attr_gui;
- this->self.u.gui=gui;
-
- if ((attr=attr_search(attrs, NULL, attr_menu_on_map_click)))
- this->menu_on_map_click=attr->u.num;
- else
- this->menu_on_map_click=1;
-
- if ((attr=attr_search(attrs, NULL, attr_on_map_click)))
- this->on_map_click=g_strdup(attr->u.str);
-
- if ((attr=attr_search(attrs, NULL, attr_signal_on_map_click)))
- this->signal_on_map_click=attr->u.num;
- gui_internal_command_init(this, attrs);
-
- if( (attr=attr_search(attrs,NULL,attr_font_size)))
- {
- this->config.font_size=attr->u.num;
- }
- else
- {
- this->config.font_size=-1;
- }
- if( (attr=attr_search(attrs,NULL,attr_icon_xs)))
- {
- this->config.icon_xs=attr->u.num;
- }
- else
- {
- this->config.icon_xs=-1;
- }
- if( (attr=attr_search(attrs,NULL,attr_icon_l)))
- {
- this->config.icon_l=attr->u.num;
- }
- else
- {
- this->config.icon_l=-1;
- }
- if( (attr=attr_search(attrs,NULL,attr_icon_s)))
- {
- this->config.icon_s=attr->u.num;
- }
- else
- {
- this->config.icon_s=-1;
- }
- if( (attr=attr_search(attrs,NULL,attr_spacing)))
- {
- this->config.spacing=attr->u.num;
- }
- else
- {
- this->config.spacing=-1;
- }
- if( (attr=attr_search(attrs,NULL,attr_gui_speech)))
- {
- this->speech=attr->u.num;
- }
- if( (attr=attr_search(attrs,NULL,attr_keyboard)))
- this->keyboard=attr->u.num;
- else
- this->keyboard=1;
-
- if( (attr=attr_search(attrs,NULL,attr_fullscreen)))
- this->fullscreen=attr->u.num;
-
- if( (attr=attr_search(attrs,NULL,attr_flags)))
- this->flags=attr->u.num;
- if( (attr=attr_search(attrs,NULL,attr_background_color)))
- this->background_color=*attr->u.color;
- else
- this->background_color=color_black;
- if( (attr=attr_search(attrs,NULL,attr_background_color2)))
- this->background2_color=*attr->u.color;
- else
- this->background2_color=back2_color;
- if( (attr=attr_search(attrs,NULL,attr_text_color)))
- this->text_foreground_color=*attr->u.color;
- else
- this->text_foreground_color=color_white;
- if( (attr=attr_search(attrs,NULL,attr_text_background)))
- this->text_background_color=*attr->u.color;
- else
- this->text_background_color=color_black;
- if( (attr=attr_search(attrs,NULL,attr_columns)))
- this->cols=attr->u.num;
- if( (attr=attr_search(attrs,NULL,attr_osd_configuration)))
- this->osd_configuration=*attr;
-
- if( (attr=attr_search(attrs,NULL,attr_pitch)))
- this->pitch=attr->u.num;
- else
- this->pitch=20;
- if( (attr=attr_search(attrs,NULL,attr_flags_town)))
- this->flags_town=attr->u.num;
- else
- this->flags_town=-1;
- if( (attr=attr_search(attrs,NULL,attr_flags_street)))
- this->flags_street=attr->u.num;
- else
- this->flags_street=-1;
- if( (attr=attr_search(attrs,NULL,attr_flags_house_number)))
- this->flags_house_number=attr->u.num;
- else
- this->flags_house_number=-1;
- if( (attr=attr_search(attrs,NULL,attr_radius)))
- this->radius=attr->u.num;
- else
- 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;
- this->cbl=callback_list_new();
-
- return this;
-}
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-void plugin_init(void)
-{
- plugin_register_category_gui("internal", gui_internal_new);
-}
diff --git a/navit/gui/internal/gui_internal.h b/navit/gui/internal/gui_internal.h
deleted file mode 100644
index 1a5cd13d3..000000000
--- a/navit/gui/internal/gui_internal.h
+++ /dev/null
@@ -1,85 +0,0 @@
-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
-#define STATE_CLEAR 32
-#define STATE_EDITABLE 64
-#define STATE_SCROLLABLE 128
-#define STATE_OFFSCREEN 256
-
-#define GESTURE_RINGSIZE 100
-
-enum widget_type {
- widget_box=1,
- widget_button,
- widget_label,
- widget_image,
- widget_table,
- widget_table_row
-};
-
-enum flags {
- gravity_none=0x00,
- gravity_left=1,
- gravity_xcenter=2,
- gravity_right=4,
- gravity_top=8,
- gravity_ycenter=16,
- gravity_bottom=32,
- gravity_left_top=gravity_left|gravity_top,
- gravity_top_center=gravity_xcenter|gravity_top,
- gravity_right_top=gravity_right|gravity_top,
- gravity_left_center=gravity_left|gravity_ycenter,
- gravity_center=gravity_xcenter|gravity_ycenter,
- gravity_right_center=gravity_right|gravity_ycenter,
- gravity_left_bottom=gravity_left|gravity_bottom,
- gravity_bottom_center=gravity_xcenter|gravity_bottom,
- gravity_right_bottom=gravity_right|gravity_bottom,
- flags_expand=0x100,
- flags_fill=0x200,
- flags_swap=0x400,
- flags_scrollx=0x800,
- flags_scrolly=0x1000,
- orientation_horizontal=0x10000,
- orientation_vertical=0x20000,
- orientation_horizontal_vertical=0x40000,
-};
-
-
-struct gui_internal_methods {
- void (*add_callback)(struct gui_priv *priv, struct callback *cb);
- void (*remove_callback)(struct gui_priv *priv, struct callback *cb);
- void (*menu_render)(struct gui_priv *this);
- struct graphics_image * (*image_new_xs)(struct gui_priv *this, const char *name);
- struct graphics_image * (*image_new_l)(struct gui_priv *this, const char *name);
-};
-
-struct gui_internal_widget_methods {
- void (*append)(struct widget *parent, struct widget *child);
- struct widget * (*button_new)(struct gui_priv *this, const char *text, struct graphics_image *image, enum flags flags);
- struct widget * (*button_new_with_callback)(struct gui_priv *this, const char *text, struct graphics_image *image, enum flags flags, void(*func)(struct gui_priv *priv, struct widget *widget, void *data), void *data);
- struct widget * (*box_new)(struct gui_priv *this, enum flags flags);
- struct widget * (*label_new)(struct gui_priv *this, const char *text);
- struct widget * (*image_new)(struct gui_priv *this, struct graphics_image *image);
- struct widget * (*keyboard)(struct gui_priv *this, int mode);
- struct widget * (*menu)(struct gui_priv *this, const char *label);
- enum flags (*get_flags)(struct widget *widget);
- void (*set_flags)(struct widget *widget, enum flags flags);
- int (*get_state)(struct widget *widget);
- void (*set_state)(struct widget *widget, int state);
- void (*set_func)(struct widget *widget, void (*func)(struct gui_priv *priv, struct widget *widget, void *data));
- void (*set_data)(struct widget *widget, void *data);
- void (*set_default_background)(struct gui_priv *this, struct widget *widget);
-
-};
-
-struct gui_internal_data {
- struct gui_priv *priv;
- struct gui_internal_methods *gui;
- struct gui_internal_widget_methods *widget;
-};
diff --git a/navit/gui/internal/gui_internal_bookmark.c b/navit/gui/internal/gui_internal_bookmark.c
deleted file mode 100644
index eed0de123..000000000
--- a/navit/gui/internal/gui_internal_bookmark.c
+++ /dev/null
@@ -1,313 +0,0 @@
-#include <glib.h>
-#include <stdlib.h>
-#include "color.h"
-#include "coord.h"
-#include "point.h"
-#include "callback.h"
-#include "graphics.h"
-#include "debug.h"
-#include "navit.h"
-#include "navit_nls.h"
-#include "bookmarks.h"
-#include "gui_internal.h"
-#include "gui_internal_widget.h"
-#include "gui_internal_priv.h"
-#include "gui_internal_menu.h"
-#include "gui_internal_keyboard.h"
-#include "gui_internal_bookmark.h"
-
-static void
-gui_internal_cmd_add_bookmark_do(struct gui_priv *this, struct widget *widget)
-{
- GList *l;
- struct attr attr;
- dbg(lvl_debug,"text='%s'\n", widget->text);
- if (widget->text && strlen(widget->text)){
- navit_get_attr(this->nav, attr_bookmarks, &attr, NULL);
- bookmarks_add_bookmark(attr.u.bookmarks, &widget->c, widget->text);
- }
- g_free(widget->text);
- widget->text=NULL;
- l=g_list_previous(g_list_last(this->root.children));
- gui_internal_prune_menu(this, l->data);
-}
-
-static void
-gui_internal_cmd_add_bookmark_folder_do(struct gui_priv *this, struct widget *widget)
-{
- GList *l;
- struct attr attr;
- dbg(lvl_debug,"text='%s'\n", widget->text);
- if (widget->text && strlen(widget->text)){
- navit_get_attr(this->nav, attr_bookmarks, &attr, NULL);
- bookmarks_add_bookmark(attr.u.bookmarks, NULL, widget->text);
- }
- g_free(widget->text);
- widget->text=NULL;
- l=g_list_previous(g_list_previous(g_list_last(this->root.children)));
- gui_internal_prune_menu(this, l->data);
-}
-
-static void
-gui_internal_cmd_add_bookmark_clicked(struct gui_priv *this, struct widget *widget, void *data)
-{
- gui_internal_cmd_add_bookmark_do(this, widget->data);
-}
-
-static void
-gui_internal_cmd_add_bookmark_folder_clicked(struct gui_priv *this, struct widget *widget, void *data)
-{
- gui_internal_cmd_add_bookmark_folder_do(this, widget->data);
-}
-
-static void
-gui_internal_cmd_rename_bookmark_clicked(struct gui_priv *this, struct widget *widget,void *data)
-{
- struct widget *w=(struct widget*)widget->data;
- GList *l;
- struct attr attr;
- dbg(lvl_debug,"text='%s'\n", w->text);
- if (w->text && strlen(w->text)){
- navit_get_attr(this->nav, attr_bookmarks, &attr, NULL);
- bookmarks_rename_bookmark(attr.u.bookmarks, w->name, w->text);
- }
- g_free(w->text);
- g_free(w->name);
- w->text=NULL;
- w->name=NULL;
- l=g_list_previous(g_list_previous(g_list_previous(g_list_last(this->root.children))));
- gui_internal_prune_menu(this, l->data);
-}
-
-void
-gui_internal_cmd_add_bookmark2(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w,*wb,*wk,*wl,*we,*wnext;
- char *name=data;
- wb=gui_internal_menu(this,_("Add Bookmark"));
- w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(w, we);
- gui_internal_widget_append(we, wk=gui_internal_label_new(this, name));
- wk->state |= STATE_EDIT|STATE_EDITABLE|STATE_CLEAR;
- wk->background=this->background;
- wk->flags |= flags_expand|flags_fill;
- wk->func = gui_internal_call_linked_on_finish;
- wk->c=wm->c;
- gui_internal_widget_append(we, wnext=gui_internal_image_new(this, image_new_xs(this, "gui_active")));
- wnext->state |= STATE_SENSITIVE;
- wnext->func = gui_internal_cmd_add_bookmark_clicked;
- wnext->data=wk;
- wk->data=wnext;
- wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(w, wl);
- if (this->keyboard)
- gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG"))));
- else
- gui_internal_keyboard_show_native(this, w, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG"));
- gui_internal_menu_render(this);
-}
-
-void
-gui_internal_cmd_add_bookmark_folder2(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w,*wb,*wk,*wl,*we,*wnext;
- char *name=data;
- wb=gui_internal_menu(this,_("Add Bookmark folder"));
- w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(w, we);
- gui_internal_widget_append(we, wk=gui_internal_label_new(this, name));
- wk->state |= STATE_EDIT|STATE_EDITABLE|STATE_CLEAR;
- wk->background=this->background;
- wk->flags |= flags_expand|flags_fill;
- wk->func = gui_internal_call_linked_on_finish;
- wk->c=wm->c;
- gui_internal_widget_append(we, wnext=gui_internal_image_new(this, image_new_xs(this, "gui_active")));
- wnext->state |= STATE_SENSITIVE;
- wnext->func = gui_internal_cmd_add_bookmark_folder_clicked;
- wnext->data=wk;
- wk->data=wnext;
- wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(w, wl);
- if (this->keyboard)
- gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG"))));
- else
- gui_internal_keyboard_show_native(this, w, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG"));
- gui_internal_menu_render(this);
-}
-
-void
-gui_internal_cmd_rename_bookmark(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w,*wb,*wk,*wl,*we,*wnext;
- char *name=wm->text;
- wb=gui_internal_menu(this,_("Rename"));
- w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(w, we);
- gui_internal_widget_append(we, wk=gui_internal_label_new(this, name));
- wk->state |= STATE_EDIT|STATE_EDITABLE|STATE_CLEAR;
- wk->background=this->background;
- wk->flags |= flags_expand|flags_fill;
- wk->func = gui_internal_call_linked_on_finish;
- wk->c=wm->c;
- wk->name=g_strdup(name);
- gui_internal_widget_append(we, wnext=gui_internal_image_new(this, image_new_xs(this, "gui_active")));
- wnext->state |= STATE_SENSITIVE;
- wnext->func = gui_internal_cmd_rename_bookmark_clicked;
- wnext->data=wk;
- wk->data=wnext;
- wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(w, wl);
- if (this->keyboard)
- gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG"))));
- else
- gui_internal_keyboard_show_native(this, w, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG"));
- gui_internal_menu_render(this);
-}
-
-void
-gui_internal_cmd_cut_bookmark(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr mattr;
- GList *l;
- navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL);
- bookmarks_cut_bookmark(mattr.u.bookmarks,wm->text);
- l=g_list_previous(g_list_previous(g_list_last(this->root.children)));
- gui_internal_prune_menu(this, l->data);
-}
-
-void
-gui_internal_cmd_copy_bookmark(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr mattr;
- GList *l;
- navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL);
- bookmarks_copy_bookmark(mattr.u.bookmarks,wm->text);
- l=g_list_previous(g_list_previous(g_list_last(this->root.children)));
- gui_internal_prune_menu(this, l->data);
-}
-
-void
-gui_internal_cmd_paste_bookmark(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr mattr;
- GList *l;
- navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL);
- bookmarks_paste_bookmark(mattr.u.bookmarks);
- l=g_list_previous(g_list_last(this->root.children));
- if(l)
- gui_internal_prune_menu(this, l->data);
-}
-
-void
-gui_internal_cmd_delete_bookmark_folder(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr mattr;
- GList *l;
- navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL);
- bookmarks_move_up(mattr.u.bookmarks);
- bookmarks_delete_bookmark(mattr.u.bookmarks,wm->prefix);
- l=g_list_first(this->root.children);
- gui_internal_prune_menu(this, l->data);
-}
-
-void
-gui_internal_cmd_load_bookmarks_as_waypoints(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr mattr;
-
- if(navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL) ) {
- struct attr attr;
- struct item *item;
- struct coord c;
- struct pcoord *pc;
- enum projection pro=bookmarks_get_projection(mattr.u.bookmarks);
- int i, bm_count;
-
- navit_set_destination(this->nav, NULL, NULL, 0);
-
- bm_count=bookmarks_get_bookmark_count(mattr.u.bookmarks);
- pc=g_alloca(bm_count*sizeof(struct pcoord));
- bookmarks_item_rewind(mattr.u.bookmarks);
- i=0;
- while ((item=bookmarks_get_item(mattr.u.bookmarks))) {
- if (!item_attr_get(item, attr_label, &attr))
- continue;
- if (item->type == type_bookmark) {
- if (item_coord_get(item, &c, 1)) {
- pc[i].x=c.x;
- pc[i].y=c.y;
- pc[i].pro=pro;
- navit_add_destination_description(this->nav,&pc[i],attr.u.str);
- i++;
- }
- }
- }
- bm_count=i;
-
- if (bm_count>0){
- navit_set_destinations(this->nav, pc, bm_count, wm->prefix, 1);
- if (this->flags & 512) {
- struct attr follow;
- follow.type=attr_follow;
- follow.u.num=180;
- navit_set_attr(this->nav, &this->osd_configuration);
- navit_set_attr(this->nav, &follow);
- navit_zoom_to_route(this->nav, 0);
- }
- }
- }
-
- gui_internal_prune_menu(this, NULL);
-}
-
-void
-gui_internal_cmd_replace_bookmarks_from_waypoints(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct attr mattr;
-
- if(navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL) ) {
- struct attr attr;
- char *desc=NULL;
- struct pcoord *pc;
- int i, bm_count;
-
- if (bookmarks_get_bookmark_count(mattr.u.bookmarks)>0){
- struct item *item;
- bookmarks_item_rewind(mattr.u.bookmarks);
-
- while ((item=bookmarks_get_item(mattr.u.bookmarks))) {
-
- if (!item_attr_get(item, attr_label, &attr))
- continue;
-
- if (item->type == type_bookmark)
- bookmarks_delete_bookmark(mattr.u.bookmarks, attr.u.str);
-
- bookmarks_move_down(mattr.u.bookmarks,wm->prefix);
- }
- }
- bookmarks_item_rewind(mattr.u.bookmarks);
-
- bm_count=navit_get_destination_count(this->nav);
- pc=g_alloca(bm_count*sizeof(struct pcoord));
- navit_get_destinations(this->nav, pc, bm_count);
-
- for (i=0; i<bm_count; i++){
- char *tmp=navit_get_destination_description(this->nav, i);
- desc=g_strdup_printf("%s WP%d", tmp, i+1);
- g_free(tmp);
- navit_get_attr(this->nav, attr_bookmarks, &attr, NULL);
- bookmarks_add_bookmark(attr.u.bookmarks, &pc[i], desc);
- bookmarks_move_down(mattr.u.bookmarks,wm->prefix);
- g_free(desc);
- }
- }
-
- gui_internal_prune_menu(this, NULL);
-}
diff --git a/navit/gui/internal/gui_internal_bookmark.h b/navit/gui/internal/gui_internal_bookmark.h
deleted file mode 100644
index c1d42e7d1..000000000
--- a/navit/gui/internal/gui_internal_bookmark.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* prototypes */
-struct gui_priv;
-struct widget;
-void gui_internal_cmd_add_bookmark2(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_add_bookmark_folder2(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_rename_bookmark(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_cut_bookmark(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_copy_bookmark(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_paste_bookmark(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_delete_bookmark_folder(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_load_bookmarks_as_waypoints(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_replace_bookmarks_from_waypoints(struct gui_priv *this, struct widget *wm, void *data);
-/* end of prototypes */
diff --git a/navit/gui/internal/gui_internal_command.c b/navit/gui/internal/gui_internal_command.c
deleted file mode 100644
index a91f69f5f..000000000
--- a/navit/gui/internal/gui_internal_command.c
+++ /dev/null
@@ -1,1352 +0,0 @@
-#include <glib.h>
-#include <stdlib.h>
-#include <math.h>
-#include "config.h"
-#ifdef HAVE_API_WIN32_BASE
-#include <windows.h>
-#endif
-#include "color.h"
-#include "coord.h"
-#include "point.h"
-#include "callback.h"
-#include "graphics.h"
-#include "debug.h"
-#include "navit.h"
-#include "navit_nls.h"
-#include "command.h"
-#include "attr.h"
-#include "xmlconfig.h"
-#include "event.h"
-#include "config_.h"
-#include "map.h"
-#include "mapset.h"
-#include "transform.h"
-#include "search.h"
-#include "route.h"
-#include "vehicle.h"
-#include "vehicleprofile.h"
-#include "layout.h"
-#include "util.h"
-#include "gui_internal.h"
-#include "gui_internal_widget.h"
-#include "gui_internal_priv.h"
-#include "gui_internal_html.h"
-#include "gui_internal_menu.h"
-#include "gui_internal_keyboard.h"
-#include "gui_internal_search.h"
-#include "gui_internal_poi.h"
-#include "gui_internal_command.h"
-#if HAS_IFADDRS
-#include <ifaddrs.h>
-#include <arpa/inet.h>
-#endif
-
-extern char *version;
-
-/**
- * @brief Converts a WGS84 coordinate pair to its string representation.
- *
- * This function takes a coordinate pair with latitude and longitude in degrees and converts them to a
- * string of the form {@code 45°28'0" N 9°11'26" E}.
- *
- * @param gc A WGS84 coordinate pair
- * @param sep The separator character to insert between latitude and longitude
- *
- * @return The coordinates as a formatted string
- */
-static char *
-coordinates_geo(const struct coord_geo *gc, char sep)
-{
- char latc='N',lngc='E';
- int lat_deg,lat_min,lat_sec;
- int lng_deg,lng_min,lng_sec;
- struct coord_geo g=*gc;
-
- if (g.lat < 0) {
- g.lat=-g.lat;
- latc='S';
- }
- if (g.lng < 0) {
- g.lng=-g.lng;
- lngc='W';
- }
- lat_sec=fmod(g.lat*3600+0.5,60);
- lat_min=fmod(g.lat*60-lat_sec/60.0+0.5,60);
- lat_deg=g.lat-lat_min/60.0-lat_sec/3600.0+0.5;
- lng_sec=fmod(g.lng*3600+0.5,60);
- lng_min=fmod(g.lng*60-lng_sec/60.0+0.5,60);
- lng_deg=g.lng-lng_min/60.0-lng_sec/3600.0+0.5;;
-
- return g_strdup_printf("%d°%d'%d\" %c%c%d°%d'%d\" %c",lat_deg,lat_min,lat_sec,latc,sep,lng_deg,lng_min,lng_sec,lngc);
-}
-
-/**
- * @brief Converts a coordinate pair to its WGS84 string representation.
- *
- * This function takes a coordinate pair, transforms it to WGS84 and converts it to a string of the form
- * {@code 45°28'0" N 9°11'26" E}.
- *
- * @param gc A coordinate pair
- * @param sep The separator character to insert between latitude and longitude
- *
- * @return The coordinates as a formatted string
- */
-char *
-gui_internal_coordinates(struct pcoord *pc, char sep)
-{
- struct coord_geo g;
- struct coord c;
- c.x=pc->x;
- c.y=pc->y;
- transform_to_geo(pc->pro, &c, &g);
- return coordinates_geo(&g, sep);
-
-}
-
-enum escape_mode {
- escape_mode_none=0,
- escape_mode_string=1,
- escape_mode_quote=2,
- escape_mode_html=4,
- escape_mode_html_quote=8,
- escape_mode_html_apos=16,
-};
-
-/* todo &=&amp;, < = &lt; */
-
-static char *
-gui_internal_escape(enum escape_mode mode, char *in)
-{
- int len=mode & escape_mode_string ? 3:1;
- char *dst,*out,*src=in;
- char *quot="&quot;";
- char *apos="&apos;";
- while (*src) {
- if ((*src == '"' || *src == '\\') && (mode & (escape_mode_string | escape_mode_quote)))
- len++;
- if (*src == '"' && mode == escape_mode_html_quote)
- len+=strlen(quot);
- else if (*src == '\'' && mode == escape_mode_html_apos)
- len+=strlen(apos);
- else
- len++;
- src++;
- }
- src=in;
- out=dst=g_malloc(len);
- if (mode & escape_mode_string)
- *dst++='"';
- while (*src) {
- if ((*src == '"' || *src == '\\') && (mode & (escape_mode_string | escape_mode_quote)))
- *dst++='\\';
- if (*src == '"' && mode == escape_mode_html_quote) {
- strcpy(dst,quot);
- src++;
- dst+=strlen(quot);
- } else if (*src == '\'' && mode == escape_mode_html_apos) {
- strcpy(dst,apos);
- src++;
- dst+=strlen(apos);
- } else
- *dst++=*src++;
- }
- if (mode & escape_mode_string)
- *dst++='"';
- *dst++='\0';
- return out;
-}
-
-static void
-gui_internal_cmd_escape(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr escaped;
- if (!in || !in[0]) {
- dbg(lvl_error,"first parameter missing or wrong type\n");
- return;
- }
- if (!out) {
- dbg(lvl_error,"output missing\n");
- return;
- }
- if (ATTR_IS_STRING(in[0]->type)) {
- escaped.type=in[0]->type;
- escaped.u.str=gui_internal_escape(escape_mode_string,in[0]->u.str);
- } else if (ATTR_IS_INT(in[0]->type)) {
- escaped.type=attr_type_string_begin;
- escaped.u.str=g_strdup_printf("%ld",in[0]->u.num);
- } else {
- dbg(lvl_error,"first parameter wrong type\n");
- return;
- }
- dbg(lvl_debug,"in %s result %s\n",in[0]->u.str,escaped.u.str);
- *out=attr_generic_add_attr(*out, attr_dup(&escaped));
- g_free(escaped.u.str);
-}
-
-static void
-gui_internal_cmd2_about(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct widget *menu,*wb,*w;
- char *text;
-
- graphics_draw_mode(this->gra, draw_mode_begin);
- menu=gui_internal_menu(this, _("About Navit"));
- menu->spx=this->spacing*10;
- wb=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand);
- gui_internal_widget_append(menu, wb);
-
- //Icon
- gui_internal_widget_append(wb, w=gui_internal_image_new(this, image_new_xs(this, "navit")));
- w->flags=gravity_top_center|orientation_horizontal|flags_fill;
-
- //app name
- text=g_strdup_printf("%s",PACKAGE_NAME);
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_top_center|orientation_horizontal|flags_expand;
- g_free(text);
-
- //Version
- text=g_strdup_printf("%s",version);
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_top_center|orientation_horizontal|flags_expand;
- g_free(text);
-
- //Site
- text=g_strdup_printf("http://www.navit-project.org/");
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_top_center|orientation_horizontal|flags_expand;
- g_free(text);
-
- //Authors
- text=g_strdup_printf("%s:",_("By"));
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_bottom_center|orientation_horizontal|flags_fill;
- g_free(text);
- text=g_strdup_printf("Martin Schaller");
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_bottom_center|orientation_horizontal|flags_fill;
- g_free(text);
- text=g_strdup_printf("Michael Farmbauer");
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_bottom_center|orientation_horizontal|flags_fill;
- g_free(text);
- text=g_strdup_printf("Alexander Atanasov");
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_bottom_center|orientation_horizontal|flags_fill;
- g_free(text);
- text=g_strdup_printf("Pierre Grandin");
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_bottom_center|orientation_horizontal|flags_fill;
- g_free(text);
-
- //Contributors
- text=g_strdup_printf("%s",_("And all the Navit Team"));
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_bottom_center|orientation_horizontal|flags_fill;
- g_free(text);
- text=g_strdup_printf("%s",_("members and contributors."));
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_bottom_center|orientation_horizontal|flags_fill;
- g_free(text);
-
- gui_internal_menu_render(this);
- graphics_draw_mode(this->gra, draw_mode_end);
-}
-
-static void
-gui_internal_cmd2_waypoints(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- gui_internal_select_waypoint(this, _("Waypoints"), NULL, NULL, gui_internal_cmd_position, (void*)2);
-}
-
-static void
-gui_internal_cmd_enter_coord(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct widget *w, *wb, *wk, *wr, *we, *wnext, *row;
- wb=gui_internal_menu(this, _("Enter Coordinates"));
- w=gui_internal_box_new(this, gravity_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- wr=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(w, wr);
- we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(wr, we);
-
-/*
- w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
-
- we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(w, we);*/
- gui_internal_widget_append(we, wk=gui_internal_label_new(this, _("Latitude Longitude")));
- wk->state |= STATE_EDIT|STATE_EDITABLE|STATE_CLEAR;
- wk->background=this->background;
- wk->flags |= flags_expand|flags_fill;
- wk->func = gui_internal_call_linked_on_finish;
- gui_internal_widget_append(we, wnext=gui_internal_image_new(this, image_new_xs(this, "gui_active")));
- wnext->state |= STATE_SENSITIVE;
- wnext->func = gui_internal_cmd_enter_coord_clicked;
- wnext->data=wk;
- wk->data=wnext;
- row=gui_internal_text_new(this, _("Enter coordinates, for example:"), gravity_top_center|flags_fill|orientation_vertical);
- gui_internal_widget_append(wr,row);
- row=gui_internal_text_new(this, "52.5219N 19.4127E", gravity_top_center|flags_fill|orientation_vertical);
- gui_internal_widget_append(wr,row);
- row=gui_internal_text_new(this, "52°31.3167N 19°24.7667E", gravity_top_center|flags_fill|orientation_vertical);
- gui_internal_widget_append(wr,row);
- row=gui_internal_text_new(this, "52°31'19N 19°24'46E", gravity_top_center|flags_fill|orientation_vertical);
- gui_internal_widget_append(wr,row);
-
- if (this->keyboard)
- gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_DEGREE));
- else
- gui_internal_keyboard_show_native(this, w, VKBD_DEGREE, NULL);
- gui_internal_menu_render(this);
-}
-
-static void
-gui_internal_cmd2_town(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- if (this->sl)
- search_list_select(this->sl, attr_country_all, 0, 0);
- gui_internal_search(this,_("Town"),"Town",1);
-}
-
-static void
-gui_internal_cmd2_setting_vehicle(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr attr,attr2,vattr;
- struct widget *w,*wb,*wl;
- struct attr_iter *iter;
- struct attr active_vehicle;
-
- iter=navit_attr_iter_new();
- if (navit_get_attr(this->nav, attr_vehicle, &attr, iter) && !navit_get_attr(this->nav, attr_vehicle, &attr2, iter)) {
- vehicle_get_attr(attr.u.vehicle, attr_name, &vattr, NULL);
- navit_attr_iter_destroy(iter);
- gui_internal_menu_vehicle_settings(this, attr.u.vehicle, vattr.u.str);
- return;
- }
- navit_attr_iter_destroy(iter);
-
- wb=gui_internal_menu(this, _("Vehicle"));
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- w->spy=this->spacing*3;
- gui_internal_widget_append(wb, w);
- if (!navit_get_attr(this->nav, attr_vehicle, &active_vehicle, NULL))
- active_vehicle.u.vehicle=NULL;
- iter=navit_attr_iter_new();
- while(navit_get_attr(this->nav, attr_vehicle, &attr, iter)) {
- vehicle_get_attr(attr.u.vehicle, attr_name, &vattr, NULL);
- wl=gui_internal_button_new_with_callback(this, vattr.u.str,
- image_new_xs(this, attr.u.vehicle == active_vehicle.u.vehicle ? "gui_active" : "gui_inactive"), gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_vehicle_settings, attr.u.vehicle);
- wl->text=g_strdup(vattr.u.str);
- gui_internal_widget_append(w, wl);
- }
- navit_attr_iter_destroy(iter);
- gui_internal_menu_render(this);
-}
-
-static void
-gui_internal_cmd2_setting_rules(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct widget *wb,*w;
- struct attr on,off;
- wb=gui_internal_menu(this, _("Rules"));
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- w->spy=this->spacing*3;
- gui_internal_widget_append(wb, w);
- on.u.num=1;
- off.u.num=0;
- on.type=off.type=attr_tracking;
- gui_internal_widget_append(w,
- gui_internal_button_navit_attr_new(this, _("Lock on road"), gravity_left_center|orientation_horizontal|flags_fill,
- &on, &off));
- on.u.num=0;
- off.u.num=-1;
- on.type=off.type=attr_orientation;
- gui_internal_widget_append(w,
- gui_internal_button_navit_attr_new(this, _("Northing"), gravity_left_center|orientation_horizontal|flags_fill,
- &on, &off));
- on.u.num=1;
- off.u.num=0;
- on.type=off.type=attr_follow_cursor;
- gui_internal_widget_append(w,
- gui_internal_button_navit_attr_new(this, _("Map follows Vehicle"), gravity_left_center|orientation_horizontal|flags_fill,
- &on, &off));
- on.u.num=1;
- off.u.num=0;
- on.type=off.type=attr_waypoints_flag;
- gui_internal_widget_append(w,
- gui_internal_button_navit_attr_new(this, _("Plan with Waypoints"), gravity_left_center|orientation_horizontal|flags_fill,
- &on, &off));
- gui_internal_menu_render(this);
-}
-
-static void
-gui_internal_cmd2_setting_maps(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr attr, on, off, description, type, data, url, active;
- struct widget *w,*wb,*row,*wma;
- char *label;
- struct attr_iter *iter;
-
- wb=gui_internal_menu(this, _("Maps"));
- //w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- //w->spy=this->spacing*3;
- w = gui_internal_widget_table_new(this,gravity_left_top | flags_fill | flags_expand |orientation_vertical,1);
- gui_internal_widget_append(wb, w);
- iter=navit_attr_iter_new();
- on.type=off.type=attr_active;
- on.u.num=1;
- off.u.num=0;
- while(navit_get_attr(this->nav, attr_map, &attr, iter)) {
- if (map_get_attr(attr.u.map, attr_description, &description, NULL)) {
- label=g_strdup(description.u.str);
- } else {
- if (!map_get_attr(attr.u.map, attr_type, &type, NULL))
- type.u.str="";
- if (!map_get_attr(attr.u.map, attr_data, &data, NULL))
- data.u.str="";
- label=g_strdup_printf("%s:%s", type.u.str, data.u.str);
- }
- if (map_get_attr(attr.u.map, attr_url, &url, NULL)) {
- if (!map_get_attr(attr.u.map, attr_active, &active, NULL))
- active.u.num=1;
- wma=gui_internal_button_new_with_callback(this, label, image_new_xs(this, active.u.num ? "gui_active" : "gui_inactive"),
- gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_map_download, attr.u.map);
- } else {
- wma=gui_internal_button_map_attr_new(this, label, gravity_left_center|orientation_horizontal|flags_fill,
- attr.u.map, &on, &off, 1);
- }
- gui_internal_widget_append(w, row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- gui_internal_widget_append(row, wma);
- g_free(label);
- }
- navit_attr_iter_destroy(iter);
- gui_internal_menu_render(this);
-
-}
-
-static void
-gui_internal_cmd2_setting_layout(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr attr;
- struct widget *w,*wb,*wl,*row;
- struct attr_iter *iter;
-
-
- wb=gui_internal_menu(this, _("Layout"));
- w=gui_internal_widget_table_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill,1);
- gui_internal_widget_append(wb, w);
- iter=navit_attr_iter_new();
- while(navit_get_attr(this->nav, attr_layout, &attr, iter)) {
- gui_internal_widget_append(w, row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill));
- wl=gui_internal_button_navit_attr_new(this, attr.u.layout->name, gravity_left_center|orientation_horizontal|flags_fill,
- &attr, NULL);
- gui_internal_widget_append(row, wl);
- }
- navit_attr_iter_destroy(iter);
- gui_internal_menu_render(this);
-}
-
-/*
- * @brief Displays Route Height Profile
- *
- * displays a heightprofile if a route is active and
- * some heightinfo is provided by means of a map
- *
- * the name of the file providing the heightlines must
- * comply with *.heightlines.bin
- *
- */
-static void
-gui_internal_cmd2_route_height_profile(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct widget * menu, *box;
- struct map * map=NULL;
- struct map_rect * mr=NULL;
- struct route * route;
- struct item * item =NULL;
- struct mapset *ms;
- struct mapset_handle *msh;
- int x,i,first=1,dist=0;
- int diagram_points_count = 0;
- struct coord c,last,res;
- struct coord_rect rbbox,dbbox;
- struct map_selection sel;
- struct heightline *heightline,*heightlines=NULL;
- struct diagram_point *min,*diagram_point,*diagram_points=NULL;
- struct point p[2];
- sel.next=NULL;
- sel.order=18;
- sel.range.min=type_height_line_1;
- sel.range.max=type_height_line_3;
-
- menu=gui_internal_menu(this,_("Height Profile"));
- box = gui_internal_box_new(this, gravity_left_top| orientation_vertical | flags_fill | flags_expand);
- gui_internal_widget_append(menu, box);
- route = navit_get_route(this->nav);
- if (route)
- map = route_get_map(route);
- if(map)
- mr = map_rect_new(map,NULL);
- if(mr) {
- while((item = map_rect_get_item(mr))) {
- while (item_coord_get(item, &c, 1)) {
- if (first) {
- first=0;
- sel.u.c_rect.lu=c;
- sel.u.c_rect.rl=c;
- } else
- coord_rect_extend(&sel.u.c_rect, &c);
- }
- }
- map_rect_destroy(mr);
- mr = NULL;
- ms=navit_get_mapset(this->nav);
- if (!first && ms) {
- int heightmap_installed = FALSE;
- msh=mapset_open(ms);
- while ((map=mapset_next(msh, 1))) {
- struct attr data_attr;
- if (map_get_attr(map, attr_data, &data_attr, NULL)){
- dbg(lvl_debug,"map name = %s\n",data_attr.u.str);
- if (strstr(data_attr.u.str,".heightlines.bin")){
- dbg(lvl_info,"reading heightlines from map %s\n",data_attr.u.str);
- mr=map_rect_new(map, &sel);
- heightmap_installed = TRUE;
- }
- else {
- dbg(lvl_debug,"ignoring map %s\n",data_attr.u.str);
- }
- }
- if (mr) {
- while((item = map_rect_get_item(mr))) {
- if (item->type >= sel.range.min && item->type <= sel.range.max) {
- heightline=item_get_heightline(item);
- if (heightline) {
- heightline->next=heightlines;
- heightlines=heightline;
- }
- }
- }
- map_rect_destroy(mr);
- mr = NULL;
- }
- }
- mapset_close(msh);
- if (!heightmap_installed){
- char *text;
- struct widget *w;
- text=g_strdup_printf("%s",_("please install a map *.heightlines.bin to provide elevationdata"));
- gui_internal_widget_append(box, w=gui_internal_label_new(this, text));
- w->flags=gravity_bottom_center|orientation_horizontal|flags_fill;
- g_free(text);
- gui_internal_menu_render(this);
- return;
- }
- }
- }
- map=NULL;
- mr=NULL;
- if (route)
- map = route_get_map(route);
- if(map)
- mr = map_rect_new(map,NULL);
- if(mr && heightlines) {
- while((item = map_rect_get_item(mr))) {
- first=1;
- while (item_coord_get(item, &c, 1)) {
- if (first)
- first=0;
- else {
- heightline=heightlines;
- rbbox.lu=last;
- rbbox.rl=last;
- coord_rect_extend(&rbbox, &c);
- while (heightline) {
- if (coord_rect_overlap(&rbbox, &heightline->bbox)) {
- for (i = 0 ; i < heightline->count - 1; i++) {
- if (heightline->c[i].x != heightline->c[i+1].x || heightline->c[i].y != heightline->c[i+1].y) {
- if (line_intersection(heightline->c+i, heightline->c+i+1, &last, &c, &res)) {
- diagram_point=g_new(struct diagram_point, 1);
- diagram_point->c.x=dist+transform_distance(projection_mg, &last, &res);
- diagram_point->c.y=heightline->height;
- diagram_point->next=diagram_points;
- diagram_points=diagram_point;
- diagram_points_count ++;
- dbg(lvl_debug,"%d %d\n", diagram_point->c.x, diagram_point->c.y);
- }
- }
- }
- }
- heightline=heightline->next;
- }
- dist+=transform_distance(projection_mg, &last, &c);
- }
- last=c;
- }
- }
- }
- while (heightlines){
- heightline=heightlines;
- heightlines=heightlines->next;
- g_free(heightline);
- }
- if(mr)
- map_rect_destroy(mr);
-
- if(diagram_points_count < 2){
- char *text;
- struct widget *w;
- text=g_strdup_printf("%s",_("The route must cross at least 2 heightlines"));
- gui_internal_widget_append(box, w=gui_internal_label_new(this, text));
- w->flags=gravity_bottom_center|orientation_horizontal|flags_fill;
- g_free(text);
- gui_internal_menu_render(this);
- if(diagram_points)
- g_free(diagram_points);
- return;
- }
-
- gui_internal_menu_render(this);
- first=1;
- diagram_point=diagram_points;
- while (diagram_point) {
- if (first) {
- dbbox.lu=diagram_point->c;
- dbbox.rl=diagram_point->c;
- first=0;
- } else
- coord_rect_extend(&dbbox, &diagram_point->c);
- diagram_point=diagram_point->next;
- }
- dbg(lvl_debug,"%d %d %d %d\n", dbbox.lu.x, dbbox.lu.y, dbbox.rl.x, dbbox.rl.y);
- if (dbbox.rl.x > dbbox.lu.x && dbbox.lu.x*100/(dbbox.rl.x-dbbox.lu.x) <= 25)
- dbbox.lu.x=0;
- if (dbbox.lu.y > dbbox.rl.y && dbbox.rl.y*100/(dbbox.lu.y-dbbox.rl.y) <= 25)
- dbbox.rl.y=0;
- dbg(lvl_debug,"%d,%d %dx%d\n", box->p.x, box->p.y, box->w, box->h);
- x=dbbox.lu.x;
- first=1;
- if (diagram_points_count > 1 && dbbox.rl.x != dbbox.lu.x && dbbox.lu.y != dbbox.rl.y){
- for (;;) {
- min=NULL;
- diagram_point=diagram_points;
- while (diagram_point) {
- if (diagram_point->c.x >= x && (!min || min->c.x > diagram_point->c.x))
- min=diagram_point;
- diagram_point=diagram_point->next;
- }
- if (! min)
- break;
- p[1].x=(min->c.x-dbbox.lu.x)*(box->w-10)/(dbbox.rl.x-dbbox.lu.x)+box->p.x+5;
- p[1].y=(box->h)-5-(min->c.y-dbbox.rl.y)*(box->h-10)/(dbbox.lu.y-dbbox.rl.y)+box->p.y;
- dbg(lvl_debug,"%d,%d=%d,%d\n",min->c.x, min->c.y, p[1].x,p[1].y);
- graphics_draw_circle(this->gra, this->foreground, &p[1], 2);
- if (first)
- first=0;
- else
- graphics_draw_lines(this->gra, this->foreground, p, 2);
- p[0]=p[1];
- x=min->c.x+1;
- }
- }
- while (diagram_points){
- diagram_point=diagram_points;
- diagram_points=diagram_points->next;
- g_free(diagram_point);
- }
-}
-
-static void
-gui_internal_cmd2_route_description(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
-
-
- struct widget * menu;
- struct widget * box;
-
-
- if(! this->vehicle_cb)
- {
- /**
- * Register the callback on vehicle updates.
- */
- this->vehicle_cb = callback_new_attr_1(callback_cast(gui_internal_route_update),
- attr_position_coord_geo,this);
- navit_add_callback(this->nav,this->vehicle_cb);
- }
-
- this->route_data.route_table = gui_internal_widget_table_new(this,gravity_left_top | flags_fill | flags_expand |orientation_vertical,1);
-
- menu=gui_internal_menu(this,_("Route Description"));
-
- menu->wfree=gui_internal_route_screen_free;
- this->route_data.route_showing=1;
- this->route_data.route_table->spx = this->spacing;
-
-
- box = gui_internal_box_new(this, gravity_left_top| orientation_vertical | flags_fill | flags_expand);
-
- gui_internal_widget_append(box,this->route_data.route_table);
- box->w=menu->w;
- box->spx = this->spacing;
- this->route_data.route_table->w=box->w;
- gui_internal_widget_append(menu,box);
- gui_internal_populate_route_table(this,this->nav);
- gui_internal_menu_render(this);
-
-}
-
-static void
-gui_internal_cmd2_pois(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct widget *w;
- struct poi_param *param;
- struct attr pro;
- struct coord c;
-
- dbg(lvl_debug,"enter\n");
- if (!in || !in[0])
- return;
- if (!ATTR_IS_COORD_GEO(in[0]->type))
- return;
- if (!navit_get_attr(this->nav, attr_projection, &pro, NULL))
- return;
- w=g_new0(struct widget,1);
- param=g_new0(struct poi_param,1);
- if (in[1] && ATTR_IS_STRING(in[1]->type)) {
- gui_internal_poi_param_set_filter(param, in[1]->u.str);
- if (in[2] && ATTR_IS_INT(in[2]->type))
- param->AddressFilterType=in[2]->u.num;
- }
-
- transform_from_geo(pro.u.projection,in[0]->u.coord_geo,&c);
- w->c.x=c.x;
- w->c.y=c.y;
- w->c.pro=pro.u.projection;
- gui_internal_cmd_pois(this, w, param);
- g_free(w);
- gui_internal_poi_param_free(param);
-}
-
-static void
-gui_internal_cmd2_locale(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct widget *menu,*wb,*w;
- char *text;
-
- graphics_draw_mode(this->gra, draw_mode_begin);
- menu=gui_internal_menu(this, _("Show Locale"));
- menu->spx=this->spacing*10;
- wb=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(menu, wb);
- text=g_strdup_printf("LANG=%1$s (1=%3$s 2=%2$s)",getenv("LANG"),"2","1");
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_left_center|orientation_horizontal|flags_fill;
- g_free(text);
-#ifdef HAVE_API_WIN32_BASE
- {
- char country[32],lang[32];
-#ifdef HAVE_API_WIN32_CE
- wchar_t wcountry[32],wlang[32];
-
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, wlang, sizeof(wlang));
- WideCharToMultiByte(CP_ACP,0,wlang,-1,lang,sizeof(lang),NULL,NULL);
-#else
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, lang, sizeof(lang));
-#endif
- text=g_strdup_printf("LOCALE_SABBREVLANGNAME=%s",lang);
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_left_center|orientation_horizontal|flags_fill;
- g_free(text);
-#ifdef HAVE_API_WIN32_CE
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, wcountry, sizeof(wcountry));
- WideCharToMultiByte(CP_ACP,0,wcountry,-1,country,sizeof(country),NULL,NULL);
-#else
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, country, sizeof(country));
-#endif
- text=g_strdup_printf("LOCALE_SABBREVCTRYNAME=%s",country);
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_left_center|orientation_horizontal|flags_fill;
- g_free(text);
- }
-#endif
-
- gui_internal_menu_render(this);
- graphics_draw_mode(this->gra, draw_mode_end);
-}
-
-/**
- * @brief display basic networking information
- *
- * @return nothing
- *
- * This function displays basic networking information, currently
- * only the interface name and the associated IP address(es).
- * Currently only works on non Windows systems.
- *
- */
-static void
-gui_internal_cmd2_network_info(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
-#if HAS_IFADDRS
- struct widget *menu,*wb,*w;
- char *text;
-
- graphics_draw_mode(this->gra, draw_mode_begin);
- menu=gui_internal_menu(this, _("Network info"));
- menu->spx=this->spacing*10;
- wb=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(menu, wb);
-
- struct ifaddrs *addrs, *tmp;
- getifaddrs(&addrs);
- tmp = addrs;
-
- while (tmp)
- {
- if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_INET)
- {
- struct sockaddr_in *pAddr = (struct sockaddr_in *)tmp->ifa_addr;
- if(g_ascii_strncasecmp(tmp->ifa_name,"lo",2 ) ) {
- text=g_strdup_printf("%s: %s", tmp->ifa_name, inet_ntoa(pAddr->sin_addr));
- gui_internal_widget_append(wb, w=gui_internal_label_new(this, text));
- w->flags=gravity_bottom_center|orientation_horizontal|flags_fill;
- g_free(text);
- }
- }
- tmp = tmp->ifa_next;
- }
- freeifaddrs(addrs);
-
- gui_internal_menu_render(this);
- graphics_draw_mode(this->gra, draw_mode_end);
-#else
- dbg(lvl_error, "Cannot show network info: ifaddr.h not found\n");
-#endif
-}
-
-static void
-gui_internal_cmd_formerdests(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct widget *wb,*w,*wbm,*tbl=NULL;
- struct map *formerdests;
- struct map_rect *mr_formerdests;
- struct item *item;
- struct attr attr;
- char *label_full;
- enum projection projection;
-
- if(!navit_get_attr(this->nav, attr_former_destination_map, &attr, NULL))
- return;
-
- formerdests=attr.u.map;
- if(!formerdests)
- return;
-
- mr_formerdests=map_rect_new(formerdests, NULL);
- if(!mr_formerdests)
- return;
-
- projection = map_projection(formerdests);
-
- gui_internal_prune_menu_count(this, 1, 0);
- wb=gui_internal_menu(this, _("Former Destinations"));
- wb->background=this->background;
-
- w=gui_internal_box_new(this,
- gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- w->spy=this->spacing*2;
- gui_internal_widget_append(wb, w);
- while ((item=map_rect_get_item(mr_formerdests))) {
- struct coord c;
- struct widget *row;
- if (item->type!=type_former_destination) continue;
- if (!item_attr_get(item, attr_label, &attr)) continue;
- if(!tbl) {
- tbl=gui_internal_widget_table_new(this,gravity_left_top | flags_fill | flags_expand | orientation_vertical,1);
- gui_internal_widget_append(w,tbl);
- }
- row=gui_internal_widget_table_row_new(this,gravity_left| flags_fill| orientation_vertical);
- gui_internal_widget_prepend(tbl, row);
- label_full=attr.u.str;
- wbm=gui_internal_button_new_with_callback(this, label_full,
- image_new_xs(this, "gui_active"),
- gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_position, NULL);
- gui_internal_widget_append(row,wbm);
- if (item_coord_get(item, &c, 1)) {
- wbm->c.x=c.x;
- wbm->c.y=c.y;
- wbm->c.pro=projection;
- wbm->name=g_strdup(label_full);
- wbm->text=g_strdup(label_full);
- wbm->data=(void*)8; //Mark us as a former destination
- wbm->prefix=g_strdup(label_full);
- }
- }
- if (!tbl){
- wbm=gui_internal_text_new(this, _("- No former destinations available -"),
- gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(w, wbm);
- }
- gui_internal_menu_render(this);
- map_rect_destroy(mr_formerdests);
-}
-
-static void
-gui_internal_cmd2_bookmarks(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- char *str=NULL;
- if (in && in[0] && ATTR_IS_STRING(in[0]->type)) {
- str=in[0]->u.str;
- }
-
- gui_internal_cmd_bookmarks(this, NULL, str);
-}
-
-static void
-gui_internal_cmd2_abort_navigation(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- navit_set_destination(this->nav, NULL, NULL, 0);
-}
-
-static void
-gui_internal_cmd2_back(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- graphics_draw_mode(this->gra, draw_mode_begin);
- gui_internal_back(this, NULL, NULL);
- graphics_draw_mode(this->gra, draw_mode_end);
- gui_internal_check_exit(this);
-}
-
-static void
-gui_internal_cmd2_back_to_map(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- gui_internal_prune_menu(this, NULL);
- gui_internal_check_exit(this);
-}
-
-
-static void
-gui_internal_get_data(struct gui_priv *priv, char *command, struct attr **in, struct attr ***out)
-{
- struct attr private_data = { attr_private_data, {(void *)&priv->data}};
- if (out)
- *out=attr_generic_add_attr(*out, &private_data);
-}
-
-static void
-gui_internal_cmd_log(struct gui_priv *this)
-{
- struct widget *w,*wb,*wk,*wl,*we,*wnext;
- gui_internal_enter(this, 1);
- gui_internal_set_click_coord(this, NULL);
- gui_internal_enter_setup(this);
- wb=gui_internal_menu(this, "Log Message");
- w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(w, we);
- gui_internal_widget_append(we, wk=gui_internal_label_new(this, _("Message")));
- wk->state |= STATE_EDIT|STATE_EDITABLE|STATE_CLEAR;
- wk->background=this->background;
- wk->flags |= flags_expand|flags_fill;
- wk->func = gui_internal_call_linked_on_finish;
- gui_internal_widget_append(we, wnext=gui_internal_image_new(this, image_new_xs(this, "gui_active")));
- wnext->state |= STATE_SENSITIVE;
- wnext->func = gui_internal_cmd_log_clicked;
- wnext->data=wk;
- wk->data=wnext;
- wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(w, wl);
- if (this->keyboard)
- gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG"))));
- else
- gui_internal_keyboard_show_native(this, w, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG"));
- gui_internal_menu_render(this);
- gui_internal_leave(this);
-}
-
-static void
-gui_internal_cmd_menu2(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- char *href=NULL;
- int i=0, ignore=0, replace=0;
-
- if (in && in[i] && ATTR_IS_INT(in[i]->type))
- ignore=in[i++]->u.num;
-
- if (in && in[i] && ATTR_IS_STRING(in[i]->type)) {
- href=in[i++]->u.str;
- if (in[i] && ATTR_IS_INT(in[i]->type))
- replace=in[i++]->u.num;
- }
-
- if (this->root.children) {
- if (!href)
- return;
- gui_internal_html_load_href(this, href, replace);
- return;
- }
- gui_internal_cmd_menu(this, ignore, href);
-}
-
-static void
-gui_internal_cmd2_position(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- const char *name=_("Position");
- int flags=-1;
-
- dbg(lvl_debug,"enter\n");
- if (!in || !in[0])
- return;
- if (!ATTR_IS_COORD_GEO(in[0]->type))
- return;
- if (in[1] && ATTR_IS_STRING(in[1]->type)) {
- name=in[1]->u.str;
- if (in[2] && ATTR_IS_INT(in[2]->type))
- flags=in[2]->u.num;
- }
- dbg(lvl_debug,"flags=0x%x\n",flags);
- gui_internal_cmd_position_do(this, NULL, in[0]->u.coord_geo, NULL, name, flags);
-}
-
-static void
-gui_internal_cmd_redraw_map(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- this->redraw=1;
-}
-
-static void
-gui_internal_cmd2_refresh(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- char *href=g_strdup(this->href);
- gui_internal_html_load_href(this, href, 1);
- g_free(href);
-}
-
-static void
-gui_internal_cmd2_set(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- char *pattern,*command=NULL;
- if (!in || !in[0] || !ATTR_IS_STRING(in[0]->type)) {
- dbg(lvl_error,"first parameter missing or wrong type\n");
- return;
- }
- pattern=in[0]->u.str;
- dbg(lvl_debug,"pattern %s\n",pattern);
- if (in[1]) {
- command=gui_internal_cmd_match_expand(pattern, in+1);
- dbg(lvl_debug,"expand %s\n",command);
- gui_internal_set(pattern, command);
- command_evaluate(&this->self, command);
- g_free(command);
- } else {
- gui_internal_set(pattern, NULL);
- }
-
-}
-
-void
-gui_internal_cmd2_quit(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr navit;
- gui_internal_prune_menu(this, NULL);
- navit.type=attr_navit;
- navit.u.navit=this->nav;
- config_remove_attr(config, &navit);
- event_main_loop_quit();
-}
-
-static char *
-gui_internal_append_attr(char *str, enum escape_mode mode, char *pre, struct attr *attr, char *post)
-{
- char *astr=NULL;
- if (ATTR_IS_STRING(attr->type))
- astr=gui_internal_escape(mode, attr->u.str);
- else if (ATTR_IS_COORD_GEO(attr->type)) {
- char *str2=coordinates_geo(attr->u.coord_geo, '\n');
- astr=gui_internal_escape(mode, str2);
- g_free(str2);
- } else if (ATTR_IS_INT(attr->type))
- astr=g_strdup_printf("%ld",attr->u.num);
- else
- astr=g_strdup_printf("Unsupported type %s",attr_to_name(attr->type));
- str=g_strconcat_printf(str,"%s%s%s",pre,astr,post);
- g_free(astr);
- return str;
-}
-
-static void
-gui_internal_cmd_write(struct gui_priv * this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- char *str=NULL;
- dbg(lvl_debug,"enter %s %p %p %p\n",function,in,out,valid);
- if (!in)
- return;
- while (*in) {
- str=gui_internal_append_attr(str, escape_mode_none, "", *in, "");
- in++;
- }
- if (str) {
- str=g_strdup_printf("<html>%s</html>\n",str);
-#if 0
- dbg(lvl_debug,"%s\n",str);
-#endif
- gui_internal_html_parse_text(this, str);
- }
- g_free(str);
-}
-
-static void
-gui_internal_onclick(struct attr ***in, char **onclick, char *set)
-{
- struct attr **i=*in;
- char *c,*str=NULL,*args=NULL,*sep="";
-
- if (!*i || !ATTR_IS_STRING((*i)->type) || !(*i)->u.str)
- goto error;
- str=g_strdup((*i)->u.str);
- i++;
- c=str;
- while (*c) {
- if (c[0] == '%' && c[1] == '{') {
- char format[4],*end=strchr(c+2,'}'),*replacement=NULL,*new_str;
- int is_arg;
- if (!end) {
- dbg(lvl_error,"Missing closing brace in format string %s\n",c);
- goto error;
- }
- if (end-c > sizeof(format)) {
- dbg(lvl_error,"Invalid format string %s\n",c);
- goto error;
- }
- strncpy(format, c+2, end-c-2);
- format[end-c-2]='\0';
- is_arg=end[1] == '*';
- c[0]='\0';
- if (!strcmp(format,"d")) {
- replacement=gui_internal_append_attr(NULL, escape_mode_string, "", *i++, "");
- if (is_arg) {
- args=g_strconcat_printf(args, "%s%s", args ? "," : "", replacement);
- g_free(replacement);
- replacement=g_strdup("");
- }
-
- }
- if (!strcmp(format,"se")) {
- replacement=gui_internal_append_attr(NULL, escape_mode_string, "", *i++, "");
- if (is_arg) {
- char *arg=gui_internal_escape(escape_mode_string, replacement);
- args=g_strconcat_printf(args, "%s%s", args ? "," : "", arg);
- g_free(replacement);
- g_free(arg);
- replacement=g_strdup("");
- }
- }
- if (!replacement) {
- dbg(lvl_error,"Unsupported format string %s\n",format);
- goto error;
- }
- new_str=g_strconcat(str, replacement, end+1, NULL);
- c=new_str+strlen(str)+strlen(replacement);
- g_free(str);
- g_free(replacement);
- str=new_str;
- }
- c++;
- }
- *in=i;
- if (*onclick && strlen(*onclick))
- sep=";";
- if (str && strlen(str)) {
- char *old=*onclick;
- if (set) {
- char *setstr=gui_internal_escape(escape_mode_string,str);
- char *argssep="";
- if (args && strlen(args))
- argssep=",";
- *onclick=g_strconcat(old,sep,set,"(",setstr,argssep,args,")",NULL);
- } else {
- *onclick=g_strconcat(old,sep,str,NULL);
- }
- g_free(old);
- }
-error:
- g_free(str);
- g_free(args);
- return;
-}
-
-static void
-gui_internal_cmd_img(struct gui_priv * this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- char *str=g_strdup("<img"),*suffix=NULL,*onclick=g_strdup(""),*html;
-
- if (ATTR_IS_STRING((*in)->type)) {
- if ((*in)->u.str && strlen((*in)->u.str))
- str=gui_internal_append_attr(str, escape_mode_string|escape_mode_html, " class=", *in, "");
- in++;
- } else {
- dbg(lvl_error,"argument error: class argument not string\n");
- goto error;
- }
- if (ATTR_IS_STRING((*in)->type) && (*in)->u.str) {
- if ((*in)->u.str && strlen((*in)->u.str)) {
- str=gui_internal_append_attr(str, escape_mode_string|escape_mode_html, " src=", *in, "");
- }
- in++;
- } else {
- dbg(lvl_error,"argument error: image argument not string\n");
- goto error;
- }
- if (ATTR_IS_STRING((*in)->type) && (*in)->u.str) {
- if ((*in)->u.str && strlen((*in)->u.str)) {
- suffix=gui_internal_append_attr(NULL, escape_mode_html, ">", *in, "</img>");
- } else {
- suffix=g_strdup("/>");
- }
- in++;
- } else {
- dbg(lvl_error,"argument error: text argument not string\n");
- goto error;
- }
- gui_internal_onclick(&in,&onclick,NULL);
- gui_internal_onclick(&in,&onclick,"set");
- gui_internal_onclick(&in,&onclick,NULL);
- if (strlen(onclick)) {
- char *tmp=gui_internal_escape(escape_mode_html_apos, onclick);
- str=g_strconcat_printf(str," onclick='%s'",tmp);
- g_free(tmp);
- }
- g_free(onclick);
- html=g_strdup_printf("<html>%s%s</html>\n",str,suffix);
- dbg(lvl_debug,"return %s",html);
- gui_internal_html_parse_text(this, html);
- g_free(html);
-error:
- g_free(suffix);
- g_free(str);
- return;
-}
-
-static void
-gui_internal_cmd_debug(struct gui_priv * this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- char *str;
- dbg(lvl_debug,"begin\n");
- if (in) {
- while (*in) {
- str=attr_to_text(*in, NULL, 0);
- dbg(lvl_debug,"%s:%s\n",attr_to_name((*in)->type),str);
- in++;
- g_free(str);
- }
- }
- dbg(lvl_debug,"done\n");
-}
-
-static void
-gui_internal_cmd2(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- int entering=0;
- int ignore=1;
- if (in && in[0] && ATTR_IS_INT(in[0]->type)) {
- ignore=in[0]->u.num;
- in++;
- }
-
- if(!this->root.children) {
- entering=1;
- gui_internal_apply_config(this);
- gui_internal_enter(this, ignore);
- gui_internal_enter_setup(this);
- }
-
- if(!strcmp(function, "bookmarks"))
- gui_internal_cmd2_bookmarks(this, function, in, out, valid);
- else if(!strcmp(function, "formerdests"))
- gui_internal_cmd_formerdests(this, function, in, out, valid);
- else if(!strcmp(function, "locale"))
- gui_internal_cmd2_locale(this, function, in, out, valid);
- else if(!strcmp(function, "network_info"))
- gui_internal_cmd2_network_info(this, function, in, out, valid);
- else if(!strcmp(function, "position"))
- gui_internal_cmd2_position(this, function, in, out, valid);
- else if(!strcmp(function, "pois"))
- gui_internal_cmd2_pois(this, function, in, out, valid);
- else if(!strcmp(function, "route_description"))
- gui_internal_cmd2_route_description(this, function, in, out, valid);
- else if(!strcmp(function, "route_height_profile"))
- gui_internal_cmd2_route_height_profile(this, function, in, out, valid);
- else if(!strcmp(function, "setting_layout"))
- gui_internal_cmd2_setting_layout(this, function, in, out, valid);
- else if(!strcmp(function, "setting_maps"))
- gui_internal_cmd2_setting_maps(this, function, in, out, valid);
- else if(!strcmp(function, "setting_rules"))
- gui_internal_cmd2_setting_rules(this, function, in, out, valid);
- else if(!strcmp(function, "setting_vehicle"))
- gui_internal_cmd2_setting_vehicle(this, function, in, out, valid);
- else if(!strcmp(function, "town"))
- gui_internal_cmd2_town(this, function, in, out, valid);
- else if(!strcmp(function, "enter_coord"))
- gui_internal_cmd_enter_coord(this, function, in, out, valid);
- else if(!strcmp(function, "waypoints"))
- gui_internal_cmd2_waypoints(this, function, in, out, valid);
- else if(!strcmp(function, "about"))
- gui_internal_cmd2_about(this, function, in, out, valid);
-
- if(entering)
- graphics_draw_mode(this->gra, draw_mode_end);
-}
-
-static struct command_table commands[] = {
- {"E",command_cast(gui_internal_cmd_escape)},
- {"abort_navigation",command_cast(gui_internal_cmd2_abort_navigation)},
- {"back",command_cast(gui_internal_cmd2_back)},
- {"back_to_map",command_cast(gui_internal_cmd2_back_to_map)},
- {"bookmarks",command_cast(gui_internal_cmd2)},
- {"debug",command_cast(gui_internal_cmd_debug)},
- {"formerdests",command_cast(gui_internal_cmd2)},
- {"get_data",command_cast(gui_internal_get_data)},
- {"img",command_cast(gui_internal_cmd_img)},
- {"locale",command_cast(gui_internal_cmd2)},
- {"log",command_cast(gui_internal_cmd_log)},
- {"menu",command_cast(gui_internal_cmd_menu2)},
- {"position",command_cast(gui_internal_cmd2_position)},
- {"pois",command_cast(gui_internal_cmd2)},
- {"redraw_map",command_cast(gui_internal_cmd_redraw_map)},
- {"refresh",command_cast(gui_internal_cmd2_refresh)},
- {"route_description",command_cast(gui_internal_cmd2)},
- {"route_height_profile",command_cast(gui_internal_cmd2)},
- {"set",command_cast(gui_internal_cmd2_set)},
- {"setting_layout",command_cast(gui_internal_cmd2)},
- {"setting_maps",command_cast(gui_internal_cmd2)},
- {"setting_rules",command_cast(gui_internal_cmd2)},
- {"setting_vehicle",command_cast(gui_internal_cmd2)},
- {"town",command_cast(gui_internal_cmd2)},
- {"enter_coord",command_cast(gui_internal_cmd2)},
- {"quit",command_cast(gui_internal_cmd2_quit)},
- {"waypoints",command_cast(gui_internal_cmd2)},
- {"write",command_cast(gui_internal_cmd_write)},
- {"about",command_cast(gui_internal_cmd2)},
-#if HAS_IFADDRS
- {"network_info",command_cast(gui_internal_cmd2)},
-#endif
-};
-
-void
-gui_internal_command_init(struct gui_priv *this, struct attr **attrs)
-{
- struct attr *attr;
- if ((attr=attr_search(attrs, NULL, attr_callback_list))) {
- command_add_table(attr->u.callback_list, commands, sizeof(commands)/sizeof(struct command_table), this);
- }
-}
-
-
diff --git a/navit/gui/internal/gui_internal_command.h b/navit/gui/internal/gui_internal_command.h
deleted file mode 100644
index ff8a70f9c..000000000
--- a/navit/gui/internal/gui_internal_command.h
+++ /dev/null
@@ -1,8 +0,0 @@
-/* prototypes */
-struct attr;
-struct gui_priv;
-struct pcoord;
-char *gui_internal_coordinates(struct pcoord *pc, char sep);
-void gui_internal_cmd2_quit(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid);
-void gui_internal_command_init(struct gui_priv *this, struct attr **attrs);
-/* end of prototypes */
diff --git a/navit/gui/internal/gui_internal_gesture.c b/navit/gui/internal/gui_internal_gesture.c
deleted file mode 100644
index d01a80f1d..000000000
--- a/navit/gui/internal/gui_internal_gesture.c
+++ /dev/null
@@ -1,145 +0,0 @@
-#include <glib.h>
-#include <stdlib.h>
-#include "config.h"
-#ifdef HAVE_API_WIN32_BASE
-#include <windows.h>
-#endif
-#ifndef _MSC_VER
-#include <sys/time.h>
-#endif /* _MSC_VER */
-#include "color.h"
-#include "coord.h"
-#include "point.h"
-#include "callback.h"
-#include "graphics.h"
-#include "debug.h"
-#include "navit.h"
-#include "types.h"
-#include "navit_nls.h"
-#include "event.h"
-#include "search.h"
-#include "country.h"
-#include "track.h"
-#include "gui_internal.h"
-#include "gui_internal_widget.h"
-#include "gui_internal_priv.h"
-#include "gui_internal_html.h"
-#include "gui_internal_menu.h"
-#include "gui_internal_gesture.h"
-
-void
-gui_internal_gesture_ring_clear(struct gui_priv *this)
-{
- this->gesture_ring_last=this->gesture_ring_first=0;
-};
-
-static struct gesture_elem *
-gui_internal_gesture_ring_get(struct gui_priv *this, int i)
-{
- int n=(this->gesture_ring_last-i+GESTURE_RINGSIZE)%GESTURE_RINGSIZE;
- if(n==this->gesture_ring_first)
- return NULL;
- return this->gesture_ring+n;
-};
-
-void
-gui_internal_gesture_ring_add(struct gui_priv *this, struct point *p)
-{
- long long msec;
-#ifndef HAVE_API_WIN32_CE
- struct timeval tv;
- gettimeofday(&tv,NULL);
- msec=((long long)tv.tv_sec)*1000+tv.tv_usec/1000;
-#else
- msec=GetTickCount();
-#endif
- this->gesture_ring_last++;
- this->gesture_ring_last%=GESTURE_RINGSIZE;
- if(this->gesture_ring_last==this->gesture_ring_first) {
- this->gesture_ring_first++;
- this->gesture_ring_first%=GESTURE_RINGSIZE;
- }
- this->gesture_ring[this->gesture_ring_last].p=*p;
- this->gesture_ring[this->gesture_ring_last].msec=msec;
- dbg(lvl_info,"msec="LONGLONG_FMT" x=%d y=%d\n",msec,p->x,p->y);
-};
-
-int
-gui_internal_gesture_get_vector(struct gui_priv *this, long long msec, struct point *p0, int *dx, int *dy)
-{
- struct gesture_elem *g;
- int x,y,dt;
- int i;
-
- dt=0;
-
- if(dx) *dx=0;
- if(dy) *dy=0;
- if(p0) {
- p0->x=-1;
- p0->y=-1;
- }
-
- g=gui_internal_gesture_ring_get(this,0);
- if(!g)
- return 0;
- x=g->p.x;
- y=g->p.y;
- if(p0) {
- *p0=g->p;
- }
- msec=g->msec;
- dbg(lvl_info,LONGLONG_FMT" %d %d\n",g->msec, g->p.x, g->p.y);
- for(i=1;(g=gui_internal_gesture_ring_get(this,i))!=NULL;i++) {
- if( msec-g->msec > 1000 )
- break;
- dt=msec-g->msec;
- if(dx) *dx=x-g->p.x;
- if(dy) *dy=y-g->p.y;
- if(p0) {
- *p0=g->p;
- }
- dbg(lvl_info,LONGLONG_FMT" %d %d\n",g->msec, g->p.x, g->p.y);
- }
- return dt;
-}
-
-int
-gui_internal_gesture_do(struct gui_priv *this)
-{
- int dt;
- int dx,dy;
-
- dt=gui_internal_gesture_get_vector(this, 1000, NULL, &dx, &dy);
-
- if( abs(dx) > this->icon_s*3 && abs(dy) < this->icon_s ) {
- struct widget *wt;
- dbg(lvl_debug,"horizontal dx=%d dy=%d\n",dx,dy);
-
- /* Prevent swiping if widget was scrolled beforehand */
- if(this->pressed==2)
- return 0;
-
- for(wt=this->highlighted;wt && wt->type!=widget_table;wt=wt->parent);
- if(!wt || wt->type!=widget_table || !wt->data)
- return 0;
- if(this->highlighted) {
- this->highlighted->state &= ~STATE_HIGHLIGHTED;
- this->highlighted=NULL;
- }
- if(dx<0)
- gui_internal_table_button_next(this,NULL,wt);
- else
- gui_internal_table_button_prev(this,NULL,wt);
- return 1;
- } else if( abs(dy) > this->icon_s*3 && abs(dx) < this->icon_s ) {
- dbg(lvl_debug,"vertical dx=%d dy=%d\n",dx,dy);
- } else if (dt>300 && abs(dx) <this->icon_s && abs(dy) <this->icon_s ) {
- dbg(lvl_debug,"longtap dx=%d dy=%d\n",dx,dy);
- } else {
- dbg(lvl_debug,"none dx=%d dy=%d\n",dx,dy);
- }
-
- return 0;
-
-};
diff --git a/navit/gui/internal/gui_internal_gesture.h b/navit/gui/internal/gui_internal_gesture.h
deleted file mode 100644
index f28c85d06..000000000
--- a/navit/gui/internal/gui_internal_gesture.h
+++ /dev/null
@@ -1,8 +0,0 @@
-/* prototypes */
-struct gui_priv;
-struct point;
-void gui_internal_gesture_ring_clear(struct gui_priv *this);
-void gui_internal_gesture_ring_add(struct gui_priv *this, struct point *p);
-int gui_internal_gesture_get_vector(struct gui_priv *this, long long msec, struct point *p0, int *dx, int *dy);
-int gui_internal_gesture_do(struct gui_priv *this);
-/* end of prototypes */
diff --git a/navit/gui/internal/gui_internal_html.c b/navit/gui/internal/gui_internal_html.c
deleted file mode 100644
index 9b42fbdec..000000000
--- a/navit/gui/internal/gui_internal_html.c
+++ /dev/null
@@ -1,504 +0,0 @@
-#include <glib.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include "callback.h"
-#include "debug.h"
-#include "coord.h"
-#include "point.h"
-#include "color.h"
-#include "graphics.h"
-#include "xmlconfig.h"
-#include "navit_nls.h"
-#include "gui.h"
-#include "command.h"
-struct gui_priv;
-#include "gui_internal.h"
-#include "gui_internal_widget.h"
-#include "gui_internal_priv.h"
-#include "gui_internal_html.h"
-#include "gui_internal_keyboard.h"
-#include "gui_internal_menu.h"
-
-
-
-struct form {
- char *onsubmit;
-};
-
-struct html_tag_map {
- char *tag_name;
- enum html_tag tag;
-} html_tag_map[] = {
- {"a",html_tag_a},
- {"h1",html_tag_h1},
- {"html",html_tag_html},
- {"img",html_tag_img},
- {"script",html_tag_script},
- {"form",html_tag_form},
- {"input",html_tag_input},
- {"div",html_tag_div},
-};
-
-
-static const char *
-find_attr(const char **names, const char **values, const char *name)
-{
- while (*names) {
- if (!g_ascii_strcasecmp(*names, name))
- return *values;
- names+=XML_ATTR_DISTANCE;
- values+=XML_ATTR_DISTANCE;
- }
- return NULL;
-}
-
-static char *
-find_attr_dup(const char **names, const char **values, const char *name)
-{
- return g_strdup(find_attr(names, values, name));
-}
-
-void
-gui_internal_html_main_menu(struct gui_priv *this)
-{
- gui_internal_prune_menu(this, NULL);
- gui_internal_html_load_href(this, "#Main Menu", 0);
-}
-
-static void
-gui_internal_html_command(struct gui_priv *this, struct widget *w, void *data)
-{
- gui_internal_evaluate(this,w->command);
-}
-
-static void
-gui_internal_html_submit_set(struct gui_priv *this, struct widget *w, struct form *form)
-{
- GList *l;
- if (w->form == form && w->name) {
- struct attr *attr=attr_new_from_text(w->name, w->text?w->text:"");
- if (attr)
- gui_set_attr(this->self.u.gui, attr);
- attr_free(attr);
- }
- l=w->children;
- while (l) {
- w=l->data;
- gui_internal_html_submit_set(this, w, form);
- l=g_list_next(l);
- }
-
-}
-
-static void
-gui_internal_html_submit(struct gui_priv *this, struct widget *w, void *data)
-{
- struct widget *menu;
- GList *l;
-
- dbg(lvl_debug,"enter form %p %s\n",w->form,w->form->onsubmit);
- l=g_list_last(this->root.children);
- menu=l->data;
- graphics_draw_mode(this->gra, draw_mode_begin);
- gui_internal_highlight_do(this, NULL);
- gui_internal_menu_render(this);
- graphics_draw_mode(this->gra, draw_mode_end);
- gui_internal_html_submit_set(this, menu, w->form);
- gui_internal_evaluate(this,w->form->onsubmit);
-}
-
-void
-gui_internal_html_load_href(struct gui_priv *this, char *href, int replace)
-{
- if (replace)
- gui_internal_prune_menu_count(this, 1, 0);
- if (href && href[0] == '#') {
- dbg(lvl_debug,"href=%s\n",href);
- g_free(this->href);
- this->href=g_strdup(href);
- gui_internal_html_menu(this, this->html_text, href+1);
- }
-}
-
-void
-gui_internal_html_href(struct gui_priv *this, struct widget *w, void *data)
-{
- gui_internal_html_load_href(this, w->command, 0);
-}
-
-struct div_flags_map {
- char *attr;
- char *val;
- enum flags flags;
-} div_flags_map[] = {
- {"gravity","none",gravity_none},
- {"gravity","left",gravity_left},
- {"gravity","xcenter",gravity_xcenter},
- {"gravity","right",gravity_right},
- {"gravity","top",gravity_top},
- {"gravity","ycenter",gravity_ycenter},
- {"gravity","bottom",gravity_bottom},
- {"gravity","left_top",gravity_left_top},
- {"gravity","top_center",gravity_top_center},
- {"gravity","right_top",gravity_right_top},
- {"gravity","left_center",gravity_left_center},
- {"gravity","center",gravity_center},
- {"gravity","right_center",gravity_right_center},
- {"gravity","left_bottom",gravity_left_bottom},
- {"gravity","bottom_center",gravity_bottom_center},
- {"gravity","right_bottom",gravity_right_bottom},
- {"expand","1",flags_expand},
- {"fill","1",flags_fill},
- {"orientation","horizontal",orientation_horizontal},
- {"orientation","vertical",orientation_vertical},
- {"orientation","horizontal_vertical",orientation_horizontal_vertical},
-};
-
-static enum flags
-div_flag(const char **names, const char **values, char *name)
-{
- int i;
- enum flags ret=0;
- const char *value=find_attr(names, values, name);
- if (!value)
- return ret;
- for (i = 0 ; i < sizeof(div_flags_map)/sizeof(struct div_flags_map); i++) {
- if (!strcmp(div_flags_map[i].attr,name) && !strcmp(div_flags_map[i].val,value))
- ret|=div_flags_map[i].flags;
- }
- return ret;
-}
-
-static enum flags
-div_flags(const char **names, const char **values)
-{
- enum flags flags;
- flags = div_flag(names, values, "gravity");
- flags |= div_flag(names, values, "orientation");
- flags |= div_flag(names, values, "expand");
- flags |= div_flag(names, values, "fill");
- return flags;
-}
-
-static struct widget *
-html_image(struct gui_priv *this, const char **names, const char **values)
-{
- const char *src, *size;
- struct graphics_image *img=NULL;
-
- src=find_attr(names, values, "src");
- if (!src)
- return NULL;
- size=find_attr(names, values, "size");
- if (!size) {
- const char *class=find_attr(names, values, "class");
- if (class && !strcasecmp(class,"centry"))
- size="xs";
- else
- size="l";
- }
- if (!strcmp(size,"l"))
- img=image_new_l(this, src);
- else if (!strcmp(size,"s"))
- img=image_new_s(this, src);
- else if (!strcmp(size,"xs"))
- img=image_new_xs(this, src);
- if (!img)
- return NULL;
- return gui_internal_image_new(this, img);
-}
-
-static void
-gui_internal_html_start(xml_context *dummy, const char *tag_name, const char **names, const char **values, void *data, GError **error)
-{
- struct gui_priv *this=data;
- int i;
- enum html_tag tag=html_tag_none;
- struct html *html=&this->html[this->html_depth];
- const char *cond, *type, *font_size;
-
- if (!g_ascii_strcasecmp(tag_name,"text") || !g_ascii_strcasecmp(tag_name,"p"))
- return;
- html->skip=0;
- html->command=NULL;
- html->name=NULL;
- html->href=NULL;
- html->refresh_cond=NULL;
- html->w=NULL;
- html->container=NULL;
- html->font_size=0;
- cond=find_attr(names, values, "cond");
-
- if (cond && !this->html_skip) {
- if (!command_evaluate_to_boolean(&this->self, cond, NULL))
- html->skip=1;
- }
-
- for (i=0 ; i < sizeof(html_tag_map)/sizeof(struct html_tag_map); i++) {
- if (!g_ascii_strcasecmp(html_tag_map[i].tag_name, tag_name)) {
- tag=html_tag_map[i].tag;
- break;
- }
- }
- html->tag=tag;
- html->class=find_attr_dup(names, values, "class");
- if (!this->html_skip && !html->skip) {
- switch (tag) {
- case html_tag_a:
- html->name=find_attr_dup(names, values, "name");
- if (html->name) {
- html->skip=this->html_anchor ? strcmp(html->name,this->html_anchor) : 0;
- if (!html->skip)
- this->html_anchor_found=1;
- }
- html->command=find_attr_dup(names, values, "onclick");
- html->href=find_attr_dup(names, values, "href");
- html->refresh_cond=find_attr_dup(names, values, "refresh_cond");
- break;
- case html_tag_img:
- html->command=find_attr_dup(names, values, "onclick");
- html->w=html_image(this, names, values);
- break;
- case html_tag_form:
- this->form=g_new0(struct form, 1);
- this->form->onsubmit=find_attr_dup(names, values, "onsubmit");
- break;
- case html_tag_input:
- type=find_attr_dup(names, values, "type");
- if (!type)
- break;
- if (!strcmp(type,"image")) {
- html->w=html_image(this, names, values);
- if (html->w) {
- html->w->state|=STATE_SENSITIVE;
- html->w->func=gui_internal_html_submit;
- }
- }
- if (!strcmp(type,"text") || !strcmp(type,"password")) {
- const char *value=find_attr(names, values, "value");
- html->w=gui_internal_label_new(this, value);
- html->w->background=this->background;
- html->w->flags |= div_flags(names, values);
- html->w->state|=STATE_EDITABLE;
- if (!this->editable) {
- this->editable=html->w;
- html->w->state|=STATE_EDIT;
- }
- this->keyboard_required=1;
- if (!strcmp(type,"password"))
- html->w->flags2 |= 1;
- }
- if (html->w) {
- html->w->form=this->form;
- html->w->name=find_attr_dup(names, values, "name");
- }
- break;
- case html_tag_div:
- html->w=gui_internal_box_new(this, div_flags(names, values));
- font_size=find_attr(names, values, "font");
- if (font_size)
- html->font_size=atoi(font_size);
- html->container=this->html_container;
- this->html_container=html->w;
- break;
- default:
- break;
- }
- }
- this->html_skip+=html->skip;
- this->html_depth++;
-}
-
-static void
-gui_internal_html_end(xml_context *dummy, const char *tag_name, void *data, GError **error)
-{
- struct gui_priv *this=data;
- struct html *html;
- struct html *parent=NULL;
-
- if (!g_ascii_strcasecmp(tag_name,"text") || !g_ascii_strcasecmp(tag_name,"p"))
- return;
- this->html_depth--;
- html=&this->html[this->html_depth];
- if (this->html_depth > 0)
- parent=&this->html[this->html_depth-1];
-
-
- if (!this->html_skip) {
- if (html->command && html->w) {
- html->w->state |= STATE_SENSITIVE;
- html->w->command=html->command;
- html->w->func=gui_internal_html_command;
- html->command=NULL;
- }
- if (parent && (parent->href || parent->command) && html->w) {
- html->w->state |= STATE_SENSITIVE;
- if (parent->command) {
- html->w->command=g_strdup(parent->command);
- html->w->func=gui_internal_html_command;
- } else {
- html->w->command=g_strdup(parent->href);
- html->w->func=gui_internal_html_href;
- }
- }
- switch (html->tag) {
- case html_tag_div:
- this->html_container=html->container;
- case html_tag_img:
- case html_tag_input:
- gui_internal_widget_append(this->html_container, html->w);
- break;
- case html_tag_form:
- this->form=NULL;
- break;
- default:
- break;
- }
- }
- this->html_skip-=html->skip;
- g_free(html->command);
- g_free(html->name);
- g_free(html->href);
- g_free(html->class);
- g_free(html->refresh_cond);
-}
-
-static void
-gui_internal_refresh_callback_called(struct gui_priv *this, struct menu_data *menu_data)
-{
- if (gui_internal_menu_data(this) == menu_data) {
- char *href=g_strdup(menu_data->href);
- gui_internal_html_load_href(this, href, 1);
- g_free(href);
- }
-}
-
-static void
-gui_internal_set_refresh_callback(struct gui_priv *this, char *cond)
-{
- dbg(lvl_info,"cond=%s\n",cond);
- if (cond) {
- enum attr_type type;
- struct object_func *func;
- struct menu_data *menu_data=gui_internal_menu_data(this);
- dbg(lvl_info,"navit=%p\n",this->nav);
- type=command_evaluate_to_attr(&this->self, cond, NULL, &menu_data->refresh_callback_obj);
- if (type == attr_none) {
- dbg(lvl_error,"can't get type of '%s'\n",cond);
- return;
- }
- func=object_func_lookup(menu_data->refresh_callback_obj.type);
- if (!func)
- dbg(lvl_error,"'%s' has no functions\n",cond);
- if (func && !func->add_attr)
- dbg(lvl_error,"'%s' has no add_attr function\n",cond);
- if (!func || !func->add_attr)
- return;
- menu_data->refresh_callback.type=attr_callback;
- menu_data->refresh_callback.u.callback=callback_new_attr_2(callback_cast(gui_internal_refresh_callback_called),type,this,menu_data);
- func->add_attr(menu_data->refresh_callback_obj.u.data, &menu_data->refresh_callback);
- }
-}
-
-static void
-gui_internal_html_text(xml_context *dummy, const char *text, gsize len, void *data, GError **error)
-{
- struct gui_priv *this=data;
- struct widget *w;
- int depth=this->html_depth-1;
- struct html *html=&this->html[depth];
- gchar *text_stripped;
-
- if (this->html_skip)
- return;
- while (isspace(text[0])) {
- text++;
- len--;
- }
- while (len > 0 && isspace(text[len-1]))
- len--;
-
- text_stripped = g_strndup(text, len);
- if (html->tag == html_tag_html && depth > 2) {
- if (this->html[depth-1].tag == html_tag_script) {
- html=&this->html[depth-2];
- }
- }
- switch (html->tag) {
- case html_tag_a:
- if (html->name && len) {
- if (html->class && !strcasecmp(html->class,"clist"))
- this->html_container=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill /* |flags_scrolly */);
- else
- this->html_container=gui_internal_box_new(this, gravity_center|orientation_horizontal_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(gui_internal_menu(this, _(text_stripped)), this->html_container);
- gui_internal_menu_data(this)->href=g_strdup(this->href);
- gui_internal_set_refresh_callback(this, html->refresh_cond);
- this->html_container->spx=this->spacing*10;
- }
- break;
- case html_tag_h1:
- if (!this->html_container) {
- this->html_container=gui_internal_box_new(this, gravity_center|orientation_horizontal_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(gui_internal_menu(this, _(text_stripped)), this->html_container);
- this->html_container->spx=this->spacing*10;
- }
- break;
- case html_tag_img:
- if (len) {
- if (html->class && !strcasecmp(html->class, "centry"))
- w=gui_internal_box_new(this, gravity_left_top|orientation_horizontal|flags_fill);
- else
- w=gui_internal_box_new(this, gravity_center|orientation_vertical);
- gui_internal_widget_append(w, html->w);
- gui_internal_widget_append(w, gui_internal_text_new(this, _(text_stripped), gravity_left_top|orientation_vertical|flags_fill));
- html->w=w;
- }
- break;
- case html_tag_div:
- if (len) {
- gui_internal_widget_append(html->w, gui_internal_text_font_new(this, _(text_stripped), html->font_size, gravity_center|orientation_vertical));
- }
- break;
- case html_tag_script:
- dbg(lvl_debug,"execute %s\n",text_stripped);
- gui_internal_evaluate(this,text_stripped);
- break;
- default:
- break;
- }
- g_free(text_stripped);
-}
-
-void
-gui_internal_html_parse_text(struct gui_priv *this, char *doc)
-{
- xml_parse_text(doc, this, gui_internal_html_start, gui_internal_html_end, gui_internal_html_text);
-}
-
-void
-gui_internal_html_menu(struct gui_priv *this, const char *document, char *anchor)
-{
- char *doc=g_strdup(document);
- graphics_draw_mode(this->gra, draw_mode_begin);
- this->html_container=NULL;
- this->html_depth=0;
- this->html_anchor=anchor;
- this->html_anchor_found=0;
- this->form=NULL;
- this->keyboard_required=0;
- this->editable=NULL;
- callback_list_call_attr_2(this->cbl,attr_gui,anchor,&doc);
- gui_internal_html_parse_text(this, doc);
- g_free(doc);
- if (this->keyboard_required) {
- this->html_container->flags=gravity_center|orientation_vertical|flags_expand|flags_fill;
- if (this->keyboard)
- gui_internal_widget_append(this->html_container, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG"))));
- else
- gui_internal_keyboard_show_native(this, this->html_container, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG"));
- }
- gui_internal_menu_render(this);
- graphics_draw_mode(this->gra, draw_mode_end);
-}
-
diff --git a/navit/gui/internal/gui_internal_html.h b/navit/gui/internal/gui_internal_html.h
deleted file mode 100644
index 2333162a9..000000000
--- a/navit/gui/internal/gui_internal_html.h
+++ /dev/null
@@ -1,5 +0,0 @@
-void gui_internal_html_main_menu(struct gui_priv *this);
-void gui_internal_html_load_href(struct gui_priv *this, char *href, int replace);
-void gui_internal_html_href(struct gui_priv *this, struct widget *w, void *data);
-void gui_internal_html_parse_text(struct gui_priv *this, char *doc);
-void gui_internal_html_menu(struct gui_priv *this, const char *document, char *anchor);
diff --git a/navit/gui/internal/gui_internal_keyboard.c b/navit/gui/internal/gui_internal_keyboard.c
deleted file mode 100644
index 7ef1c3d36..000000000
--- a/navit/gui/internal/gui_internal_keyboard.c
+++ /dev/null
@@ -1,560 +0,0 @@
-#include <glib.h>
-#include <stdlib.h>
-#include "color.h"
-#include "coord.h"
-#include "point.h"
-#include "callback.h"
-#include "graphics.h"
-#include "debug.h"
-#include "gui_internal.h"
-#include "gui_internal_widget.h"
-#include "gui_internal_priv.h"
-#include "gui_internal_menu.h"
-#include "gui_internal_keyboard.h"
-
-/**
- * @brief Switch keyboard mode to uppercase if it's in lowercase mode and {@code VKBD_MODE_2} is set.
- *
- * Called when there's no input left in the input field.
- *
- * @param this The internal GUI instance
- */
-void
-gui_internal_keyboard_to_upper_case(struct gui_priv *this)
-{
- struct menu_data *md;
-
- if (!this->keyboard)
- return;
-
- md=gui_internal_menu_data(this);
-
- if (md->keyboard_mode == (VKBD_LATIN_LOWER | VKBD_FLAG_2))
- gui_internal_keyboard_do(this, md->keyboard, VKBD_LATIN_UPPER | VKBD_FLAG_2);
- if (md->keyboard_mode == (VKBD_UMLAUT_LOWER | VKBD_FLAG_2))
- gui_internal_keyboard_do(this, md->keyboard, VKBD_UMLAUT_UPPER | VKBD_FLAG_2);
- if (md->keyboard_mode == (VKBD_CYRILLIC_LOWER | VKBD_FLAG_2))
- gui_internal_keyboard_do(this, md->keyboard, VKBD_CYRILLIC_UPPER | VKBD_FLAG_2);
-}
-
-/**
- * @brief Switch keyboard mode to lowercase if it's in uppercase mode and {@code VKBD_MODE_2} is set.
- *
- * Called on each alphanumeric input.
- *
- * @param this The internal GUI instance
- */
-void
-gui_internal_keyboard_to_lower_case(struct gui_priv *this)
-{
- struct menu_data *md;
-
- if (!this->keyboard)
- return;
-
- md=gui_internal_menu_data(this);
-
- if (md->keyboard_mode == (VKBD_LATIN_UPPER | VKBD_FLAG_2))
- gui_internal_keyboard_do(this, md->keyboard, VKBD_LATIN_LOWER | VKBD_FLAG_2);
- if (md->keyboard_mode == (VKBD_UMLAUT_UPPER | VKBD_FLAG_2))
- gui_internal_keyboard_do(this, md->keyboard, VKBD_UMLAUT_LOWER | VKBD_FLAG_2);
- if (md->keyboard_mode == (VKBD_CYRILLIC_UPPER | VKBD_FLAG_2))
- gui_internal_keyboard_do(this, md->keyboard, VKBD_CYRILLIC_LOWER | VKBD_FLAG_2);
-}
-
-/**
- * @brief Processes a key press on the internal GUI keyboard
- *
- * If the keyboard is currently in uppercase mode and {@code VKBD_MODE_2} is set, it is tswitched to
- * the corresponding lowercase mode in {@code gui_internal_keypress_do}.
- *
- * @param this The internal GUI instance
- * @param wm
- * @param data Not used
- */
-static void
-gui_internal_cmd_keypress(struct gui_priv *this, struct widget *wm, void *data)
-{
- gui_internal_keypress_do(this, (char *) wm->data);
-}
-
-static struct widget *
-gui_internal_keyboard_key_data(struct gui_priv *this, struct widget *wkbd, char *text, int font, void(*func)(struct gui_priv *priv, struct widget *widget, void *data), void *data, void (*data_free)(void *data), int w, int h)
-{
- struct widget *wk;
- gui_internal_widget_append(wkbd, wk=gui_internal_button_font_new_with_callback(this, text, font,
- NULL, gravity_center|orientation_vertical, func, data));
- wk->data_free=data_free;
- wk->background=this->background;
- wk->bl=0;
- wk->br=0;
- wk->bt=0;
- wk->bb=0;
- wk->w=w;
- wk->h=h;
- return wk;
-}
-
-static struct widget *
-gui_internal_keyboard_key(struct gui_priv *this, struct widget *wkbd, char *text, char *key, int w, int h)
-{
- return gui_internal_keyboard_key_data(this, wkbd, text, 0, gui_internal_cmd_keypress, g_strdup(key), g_free_func,w,h);
-}
-
-static void gui_internal_keyboard_change(struct gui_priv *this, struct widget *key, void *data);
-
-
-/**
- * @struct gui_internal_keyb_mode
- * @brief Describes a keyboard mode
- */
-/**
- * @var gui_internal_keyb_modes
- * @brief A list of all available keyboard modes
- */
-struct gui_internal_keyb_mode {
- char title[16]; /**< Label to be displayed on keys that switch to it */
- int font; /**< Font size of label */
- int case_mode; /**< Mode to switch to when case CHANGE() key is pressed. */
- int umlaut_mode; /**< Mode to switch to when UMLAUT() key is pressed. */
-} gui_internal_keyb_modes[]= {
- /* 0: VKBD_LATIN_UPPER */ {"ABC", 2, VKBD_LATIN_LOWER, VKBD_UMLAUT_UPPER},
- /* 8: VKBD_LATIN_LOWER */ {"abc", 2, VKBD_LATIN_UPPER, VKBD_UMLAUT_LOWER},
- /*16: VKBD_NUMERIC */ {"123", 2, VKBD_LATIN_UPPER, VKBD_UMLAUT_UPPER},
- /*24: VKBD_UMLAUT_UPPER */ {"ÄÖÜ", 2, VKBD_UMLAUT_LOWER, VKBD_LATIN_UPPER},
- /*32: VKBD_UMLAUT_LOWER */ {"äöü", 2, VKBD_UMLAUT_UPPER, VKBD_LATIN_LOWER},
- /*40: VKBD_CYRILLIC_UPPER*/ {"ÐБВ", 2, VKBD_CYRILLIC_LOWER, VKBD_LATIN_UPPER},
- /*48: VKBD_CYRILLIC_LOWER*/ {"абв", 2, VKBD_CYRILLIC_UPPER, VKBD_LATIN_LOWER},
- /*56: VKBD_DEGREE */ {"DEG", 2, VKBD_FLAG_2, VKBD_FLAG_2}
-};
-
-
-// Some macros that make the keyboard layout easier to visualise in
-// the source code. The macros are #undef'd after this function.
-#define KEY(x) gui_internal_keyboard_key(this, wkbd, (x), (x), max_w, max_h)
-#define SPACER() gui_internal_keyboard_key_data(this, wkbd, "", 0, NULL, NULL, NULL,max_w,max_h)
-#define MODE(x) gui_internal_keyboard_key_data(this, wkbd, \
- gui_internal_keyb_modes[(x)/8].title, \
- gui_internal_keyb_modes[(x)/8].font, \
- gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h) \
- -> datai = (mode & VKBD_MASK_7) | ((x) & VKBD_LAYOUT_MASK)
-#define SWCASE() MODE(gui_internal_keyb_modes[mode/8].case_mode)
-#define UMLAUT() MODE(gui_internal_keyb_modes[mode/8].umlaut_mode)
-/**
- * @brief Creates a new keyboard widget or switches the layout of an existing widget
- *
- * This is an internal helper function that is not normally called directly. To create a new keyboard
- * widget, GUI widgets should call {@link gui_internal_keyboard(struct gui_priv *, struct widget *, int)}.
- *
- * @param this The internal GUI instance
- * @param wkbdb The existing keyboard widget whose layout is to be switched, or {@code NULL} to create a
- * new keyboard widget
- * @param mode The new keyboard mode, see {@link gui_internal_keyboard(struct gui_priv *, struct widget *, int)}
- * for a description of possible values
- *
- * @return {@code wkbdb} if a non-NULL value was passed, else a new keyboard widget will be returned.
- */
-struct widget *
-gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode)
-{
- struct widget *wkbd,*wk;
- struct menu_data *md=gui_internal_menu_data(this);
- int i, max_w=this->root.w, max_h=this->root.h;
- int render=0;
- char *space="_";
- char *backspace="â†";
- char *hide="â–¼";
- char *unhide="â–²";
-
- if (wkbdb) {
- this->current.x=-1;
- this->current.y=-1;
- gui_internal_highlight(this);
- if (md->keyboard_mode & VKBD_FLAG_1024)
- render=2;
- else
- render=1;
- gui_internal_widget_children_destroy(this, wkbdb);
- } else
- wkbdb=gui_internal_box_new(this, gravity_center|orientation_horizontal_vertical|flags_fill);
- md->keyboard=wkbdb;
- md->keyboard_mode=mode;
- wkbd=gui_internal_box_new(this, gravity_center|orientation_horizontal_vertical|flags_fill);
- wkbd->background=this->background;
- wkbd->cols=8;
- wkbd->spx=0;
- wkbd->spy=0;
- max_w=max_w/8;
- max_h=max_h/8; // Allows 3 results in the list when searching for Towns
- wkbd->p.y=max_h*2;
- if (((mode & VKBD_LAYOUT_MASK) == VKBD_CYRILLIC_UPPER) || ((mode & VKBD_LAYOUT_MASK) == VKBD_CYRILLIC_LOWER)) { // Russian/Ukrainian/Belarussian layout needs more space...
- max_h=max_h*4/5;
- max_w=max_w*8/9;
- wkbd->cols=9;
- }
-
- if ((mode & VKBD_LAYOUT_MASK) == VKBD_LATIN_UPPER) {
- for (i = 0 ; i < 26 ; i++) {
- char text[]={'A'+i,'\0'};
- KEY(text);
- }
- gui_internal_keyboard_key(this, wkbd, space," ",max_w,max_h);
- if (!(mode & VKBD_MASK_7)) {
- KEY("-");
- KEY("'");
- wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h);
- wk->datai = mode | VKBD_FLAG_1024;
- } else {
- wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h);
- wk->datai = mode | VKBD_FLAG_1024;
- SWCASE();
- MODE(VKBD_NUMERIC);
-
- }
- UMLAUT();
- gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h);
- }
- if ((mode & VKBD_LAYOUT_MASK) == VKBD_LATIN_LOWER) {
- for (i = 0 ; i < 26 ; i++) {
- char text[]={'a'+i,'\0'};
- KEY(text);
- }
- gui_internal_keyboard_key(this, wkbd, space," ",max_w,max_h);
- if (!(mode & VKBD_MASK_7)) {
- KEY("-");
- KEY("'");
- wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h);
- wk->datai = mode | VKBD_FLAG_1024;
- } else {
- wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h);
- wk->datai = mode | VKBD_FLAG_1024;
- SWCASE();
-
- MODE(VKBD_NUMERIC);
- }
- UMLAUT();
- gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h);
- }
- if ((mode & VKBD_LAYOUT_MASK) == VKBD_NUMERIC) {
- for (i = 0 ; i < 10 ; i++) {
- char text[]={'0'+i,'\0'};
- KEY(text);
- }
- /* ("8") ("9")*/KEY("."); KEY("°"); KEY("'"); KEY("\"");KEY("-"); KEY("+");
- KEY("*"); KEY("/"); KEY("("); KEY(")"); KEY("="); KEY("?"); KEY(":"); SPACER();
-
-
-
- if (!(mode & VKBD_MASK_7)) {
- SPACER();
- KEY("-");
- KEY("'");
- wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h);
- wk->datai = mode | VKBD_FLAG_1024;
- SPACER();
- SPACER();
- } else {
- SPACER();
- MODE(VKBD_CYRILLIC_UPPER);
- MODE(VKBD_CYRILLIC_LOWER);
- wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h);
- wk->datai = mode | VKBD_FLAG_1024;
- MODE(VKBD_LATIN_UPPER);
- MODE(VKBD_LATIN_LOWER);
- }
- UMLAUT();
- gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h);
- }
- if ((mode & VKBD_LAYOUT_MASK) == VKBD_UMLAUT_UPPER) {
- KEY("Ä"); KEY("Ë"); KEY("Ã"); KEY("Ö"); KEY("Ãœ"); KEY("Æ"); KEY("Ø"); KEY("Ã…");
- KEY("Ã"); KEY("É"); KEY("Ã"); KEY("Ó"); KEY("Ú"); KEY("Å "); KEY("ÄŒ"); KEY("Ž");
- KEY("À"); KEY("È"); KEY("Ì"); KEY("Ò"); KEY("Ù"); KEY("Ś"); KEY("Ć"); KEY("Ź");
- KEY("Â"); KEY("Ê"); KEY("Î"); KEY("Ô"); KEY("Û"); SPACER();
-
- UMLAUT();
-
- gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h);
- }
- if ((mode & VKBD_LAYOUT_MASK) == VKBD_UMLAUT_LOWER) {
- KEY("ä"); KEY("ë"); KEY("ï"); KEY("ö"); KEY("ü"); KEY("æ"); KEY("ø"); KEY("å");
- KEY("á"); KEY("é"); KEY("í"); KEY("ó"); KEY("ú"); KEY("Å¡"); KEY("Ä"); KEY("ž");
- KEY("à"); KEY("è"); KEY("ì"); KEY("ò"); KEY("ù"); KEY("ś"); KEY("ć"); KEY("ź");
- KEY("â"); KEY("ê"); KEY("î"); KEY("ô"); KEY("û"); KEY("ß");
-
- UMLAUT();
-
- gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h);
- }
- if ((mode & VKBD_LAYOUT_MASK) == VKBD_CYRILLIC_UPPER) {
- KEY("Ð"); KEY("Б"); KEY("Ð’"); KEY("Г"); KEY("Д"); KEY("Е"); KEY("Ж"); KEY("З"); KEY("И");
- KEY("Й"); KEY("К"); KEY("Л"); KEY("Ðœ"); KEY("Ð"); KEY("О"); KEY("П"); KEY("Р"); KEY("С");
- KEY("Т"); KEY("У"); KEY("Ф"); KEY("Х"); KEY("Ц"); KEY("Ч"); KEY("Ш"); KEY("Щ"); KEY("Ъ");
- KEY("Ы"); KEY("Ь"); KEY("Э"); KEY("Ю"); KEY("Я"); KEY("Ð"); KEY("І"); KEY("Ї"); KEY("ÐŽ");
- SPACER(); SPACER(); SPACER();
- gui_internal_keyboard_key(this, wkbd, space," ",max_w,max_h);
-
- wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h);
- wk->datai = mode | VKBD_FLAG_1024;
-
- SWCASE();
-
- MODE(VKBD_NUMERIC);
-
- SPACER();
-
- gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h);
- }
- if ((mode & VKBD_LAYOUT_MASK) == VKBD_CYRILLIC_LOWER) {
- KEY("а"); KEY("б"); KEY("в"); KEY("г"); KEY("д"); KEY("е"); KEY("ж"); KEY("з"); KEY("и");
- KEY("й"); KEY("к"); KEY("л"); KEY("м"); KEY("н"); KEY("о"); KEY("п"); KEY("Ñ€"); KEY("Ñ");
- KEY("т"); KEY("у"); KEY("ф"); KEY("х"); KEY("ц"); KEY("ч"); KEY("ш"); KEY("щ"); KEY("ъ");
- KEY("Ñ‹"); KEY("ÑŒ"); KEY("Ñ"); KEY("ÑŽ"); KEY("Ñ"); KEY("Ñ‘"); KEY("Ñ–"); KEY("Ñ—"); KEY("Ñž");
- SPACER(); SPACER(); SPACER();
- gui_internal_keyboard_key(this, wkbd, space," ",max_w,max_h);
-
- wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h);
- wk->datai = mode | VKBD_FLAG_1024;
-
- SWCASE();
-
- MODE(VKBD_NUMERIC);
-
- SPACER();
-
- gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h);
- }
-
-
- if(md->search_list && md->search_list->type==widget_table) {
- struct table_data *td=(struct table_data*)(md->search_list->data);
- td->scroll_buttons.button_box_hide = !(mode & VKBD_FLAG_1024);
- }
-
- if ((mode & VKBD_LAYOUT_MASK) == VKBD_DEGREE) { /* special case for coordinates input screen (enter_coord) */
- KEY("0"); KEY("1"); KEY("2"); KEY("3"); KEY("4"); SPACER(); KEY("N"); KEY("S");
- KEY("5"); KEY("6"); KEY("7"); KEY("8"); KEY("9"); SPACER(); KEY("E"); KEY("W");
- KEY("°"); KEY("."); KEY("'");
- gui_internal_keyboard_key(this, wkbd, space," ",max_w,max_h);
- SPACER();
-
- wk=gui_internal_keyboard_key_data(this, wkbd, hide, 0, gui_internal_keyboard_change, wkbdb, NULL,max_w,max_h);
- wk->datai = mode | VKBD_FLAG_1024;
-
- SPACER();
- gui_internal_keyboard_key(this, wkbd, backspace,"\b",max_w,max_h);
- }
-
- if (mode & VKBD_FLAG_1024) {
- char *text=NULL;
- int font=0;
- struct widget *wkl;
- mode &= ~VKBD_FLAG_1024;
- text=gui_internal_keyb_modes[mode/8].title;
- font=gui_internal_keyb_modes[mode/8].font;
- wk=gui_internal_box_new(this, gravity_center|orientation_horizontal|flags_fill);
- wk->func=gui_internal_keyboard_change;
- wk->data=wkbdb;
- wk->background=this->background;
- wk->bl=0;
- wk->br=0;
- wk->bt=0;
- wk->bb=0;
- wk->w=max_w;
- wk->h=max_h;
- wk->datai=mode;
- wk->state |= STATE_SENSITIVE;
- gui_internal_widget_append(wk, wkl=gui_internal_label_new(this, unhide));
- wkl->background=NULL;
- gui_internal_widget_append(wk, wkl=gui_internal_label_font_new(this, text, font));
- wkl->background=NULL;
- gui_internal_widget_append(wkbd, wk);
- if (render)
- render=2;
- }
- gui_internal_widget_append(wkbdb, wkbd);
- if (render == 1) {
- gui_internal_widget_pack(this, wkbdb);
- gui_internal_widget_render(this, wkbdb);
- } else if (render == 2) {
- gui_internal_menu_reset_pack(this);
- gui_internal_menu_render(this);
- }
- return wkbdb;
-}
-#undef KEY
-#undef SPACER
-#undef SWCASE
-#undef UMLAUT
-#undef MODE
-
-/**
- * @brief Creates a keyboard widget.
- *
- * This function creates a widget to display the internal GUI keyboard.
- *
- * The {@code mode} argument specifies the type of keyboard which should initially be displayed. Refer
- * to {@link enum vkbd_mode} for a list of possible modes and their meaning.
- *
- * @param this The internal GUI instance
- * @param mode The mode for the keyboard
- *
- * @return A new keyboard widget
- */
-struct widget *
-gui_internal_keyboard(struct gui_priv *this, int mode)
-{
- if (! this->keyboard)
- return NULL;
- return gui_internal_keyboard_do(this, NULL, mode);
-}
-
-static void
-gui_internal_keyboard_change(struct gui_priv *this, struct widget *key, void *data)
-{
- gui_internal_keyboard_do(this, key->data, key->datai);
-}
-
-/**
- * @brief Returns the default keyboard mode for a country.
- *
- * The return value can be passed to {@link gui_internal_keyboard(struct gui_priv *, int)} and related
- * functions.
- *
- * @param lang The two-letter country code
- *
- * @return {@code VKBD_CYRILLIC_UPPER} for countries using the Cyrillic alphabet,
- * {@code VKBD_LATIN_UPPER} otherwise
- */
-int
-gui_internal_keyboard_init_mode(char *lang)
-{
- int ret=0;
- /* do not crash if lang is NULL, which may be returned by getenv*/
- if(lang == NULL)
- return VKBD_LATIN_UPPER;
-
- /* Converting to upper case here is required for Android */
- lang=g_ascii_strup(lang,-1);
- /*
- * Set cyrillic keyboard for countries using Cyrillic alphabet
- */
- if (strstr(lang,"RU"))
- ret = VKBD_CYRILLIC_UPPER;
- else if (strstr(lang,"UA"))
- ret = VKBD_CYRILLIC_UPPER;
- else if (strstr(lang,"BY"))
- ret = VKBD_CYRILLIC_UPPER;
- else if (strstr(lang,"RS"))
- ret = VKBD_CYRILLIC_UPPER;
- else if (strstr(lang,"BG"))
- ret = VKBD_CYRILLIC_UPPER;
- else if (strstr(lang,"MK"))
- ret = VKBD_CYRILLIC_UPPER;
- else if (strstr(lang,"KZ"))
- ret = VKBD_CYRILLIC_UPPER;
- else if (strstr(lang,"KG"))
- ret = VKBD_CYRILLIC_UPPER;
- else if (strstr(lang,"TJ"))
- ret = VKBD_CYRILLIC_UPPER;
- else if (strstr(lang,"MN"))
- ret = VKBD_CYRILLIC_UPPER;
- g_free(lang);
- return ret;
-}
-
-
-/**
- * @brief Hides the platform's native on-screen keyboard or other input method
- *
- * This function is called as the {@code wfree} method of the placeholder widget for the platform's
- * native on-screen keyboard. It is a wrapper around the corresponding method of the graphics plugin,
- * which takes care of all platform-specific actions to hide the on-screen input method it previously
- * displayed.
- *
- * A call to this function indicates that Navit no longer needs the input method and is about to destroy
- * its placeholder widget. Navit will subsequently reclaim any screen real estate it may have previously
- * reserved for the input method.
- *
- * This function will free the {@code struct graphics_keyboard} pointed to by {@code w->data}
- *
- * @param this The internal GUI instance
- * @param w The placeholder widget
- */
-static void gui_internal_keyboard_hide_native(struct gui_priv *this_, struct widget *w) {
- struct graphics_keyboard *kbd = (struct graphics_keyboard *) w->data;
-
- if (kbd) {
- graphics_hide_native_keyboard(this_->gra, kbd);
- g_free(kbd->lang);
- g_free(kbd->gui_priv);
- } else
- dbg(lvl_warning, "no graphics_keyboard found, cleanup failed\n");
- g_free(w);
-}
-
-
-/**
- * @brief Shows the platform's native on-screen keyboard or other input method
- *
- * This method is a wrapper around the corresponding method of the graphics plugin, which takes care of
- * all platform-specific details. In particular, it is up to the graphics plugin to determine how to
- * handle the request: it may show its on-screen keyboard or another input method (such as stroke
- * recognition). It may choose to simply ignore the request, which will typically occur when a hardware
- * keyboard (or other hardware input) is available.
- *
- * The platform's native input method may obstruct parts of Navit's UI. To prevent parts of the UI from
- * becoming unreachable, this method will insert an empty box widget in the appropriate size at the
- * appropriate position, provided the graphics plugin reports the correct values. Otherwise a zero-size
- * widget is inserted. If the graphics driver decides not to display an on-screen input method, no
- * widget will be created and the return value will be {@code NULL}.
- *
- * The widget's {@code wfree} function, to be called when the widget is destroyed, will be used to hide
- * the platform keyboard when it is no longer needed.
- *
- * @param this The internal GUI instance
- * @param w The parent of the widget requiring text input
- * @param mode The requested keyboard mode
- * @param lang The language for text input, used to select a keyboard layout
- *
- * @return The placeholder widget for the on-screen keyboard, may be {@code NULL}
- */
-struct widget * gui_internal_keyboard_show_native(struct gui_priv *this, struct widget *w, int mode, char *lang) {
- struct widget *ret = NULL;
- struct menu_data *md = gui_internal_menu_data(this);
- struct graphics_keyboard *kbd = g_new0(struct graphics_keyboard, 1);
- int res;
-
- kbd->mode = mode;
- if (lang)
- kbd->lang = g_strdup(lang);
- res = graphics_show_native_keyboard(this->gra, kbd);
-
- switch(res) {
- case -1:
- dbg(lvl_error, "graphics has no show_native_keyboard method, cannot display keyboard\n");
- /* no break */
- case 0:
- g_free(kbd);
- return NULL;
- }
-
- ret = gui_internal_box_new(this, gravity_center|orientation_horizontal_vertical|flags_fill);
- md->keyboard = ret;
- md->keyboard_mode=mode;
- ret->wfree = gui_internal_keyboard_hide_native;
- if (kbd->h < 0) {
- ret->h = w->h;
- ret->hmin = w->hmin;
- } else
- ret->h = kbd->h;
- if (kbd->w < 0) {
- ret->w = w->w;
- ret->wmin = w->wmin;
- } else
- ret->w = kbd->w;
- dbg(lvl_error, "ret->w=%d, ret->h=%d\n", ret->w, ret->h);
- ret->data = (void *) kbd;
- gui_internal_widget_append(w, ret);
- dbg(lvl_error, "return\n");
- return ret;
-}
diff --git a/navit/gui/internal/gui_internal_keyboard.h b/navit/gui/internal/gui_internal_keyboard.h
deleted file mode 100644
index 9b9039224..000000000
--- a/navit/gui/internal/gui_internal_keyboard.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Modes for the on-screen keyboard
- */
-enum vkbd_mode {
- /* layouts */
- VKBD_LATIN_UPPER = 0, /*!< Latin uppercase characters */
- VKBD_LATIN_LOWER = 8, /*!< Latin lowercase characters */
- VKBD_NUMERIC = 16, /*!< Numeric keyboard */
- VKBD_UMLAUT_UPPER = 24, /*!< Extended Latin uppercase characters */
- VKBD_UMLAUT_LOWER = 32, /*!< Extended Latin lowercase characters */
- VKBD_CYRILLIC_UPPER = 40, /*!< Cyrillic uppercase characters */
- VKBD_CYRILLIC_LOWER = 48, /*!< Cyrillic lowercase characters */
- VKBD_DEGREE = 56, /*!< Numeric keyboard with extra characters (NESW, degree, minute) for coordinate input */
-
- /* modifiers and masks */
- VKBD_FLAG_2 = 2, /* FIXME seems to show alpha/num switch (VKBD_NUMERIC and VKBD_LATIN_* only) and switches to lowercase after first character */
- VKBD_MASK_7 = 7, /* FIXME modifiers for layout? */
- VKBD_FLAG_1024 = 1024, /* FIXME what is this for? Seems to have to do something with scroll box visibility */
- VKBD_LAYOUT_MASK = ~7, /* when XORed with the mode, preserves only the layout FIXME document properly */
-};
-
-/* prototypes */
-struct gui_priv;
-struct widget;
-struct widget *gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode);
-struct widget *gui_internal_keyboard(struct gui_priv *this, int mode);
-struct widget *gui_internal_keyboard_show_native(struct gui_priv *this, struct widget *w, int mode, char *lang);
-int gui_internal_keyboard_init_mode(char *lang);
-void gui_internal_keyboard_to_upper_case(struct gui_priv *this);
-void gui_internal_keyboard_to_lower_case(struct gui_priv *this);
-/* end of prototypes */
diff --git a/navit/gui/internal/gui_internal_menu.c b/navit/gui/internal/gui_internal_menu.c
deleted file mode 100644
index 33def9983..000000000
--- a/navit/gui/internal/gui_internal_menu.c
+++ /dev/null
@@ -1,373 +0,0 @@
-#include <glib.h>
-#include "color.h"
-#include "coord.h"
-#include "point.h"
-#include "callback.h"
-#include "graphics.h"
-#include "debug.h"
-#include "navit.h"
-#include "navit_nls.h"
-#include "xmlconfig.h"
-#include "gui_internal.h"
-#include "gui_internal_widget.h"
-#include "gui_internal_priv.h"
-#include "gui_internal_html.h"
-#include "gui_internal_search.h"
-#include "gui_internal_menu.h"
-
-extern char *version;
-
-static void
-gui_internal_menu_destroy(struct gui_priv *this, struct widget *w)
-{
- struct menu_data *menu_data=w->menu_data;
- if (menu_data) {
- if (menu_data->refresh_callback_obj.type) {
- struct object_func *func;
- func=object_func_lookup(menu_data->refresh_callback_obj.type);
- if (func && func->remove_attr)
- func->remove_attr(menu_data->refresh_callback_obj.u.data, &menu_data->refresh_callback);
- }
- if (menu_data->refresh_callback.u.callback)
- callback_destroy(menu_data->refresh_callback.u.callback);
-
- g_free(menu_data->href);
- g_free(menu_data);
- }
- gui_internal_widget_destroy(this, w);
- this->root.children=g_list_remove(this->root.children, w);
-}
-
-static void
-gui_internal_prune_menu_do(struct gui_priv *this, struct widget *w, int render)
-{
- GList *l;
- struct widget *wr,*wd;
- gui_internal_search_idle_end(this);
- while ((l = g_list_last(this->root.children))) {
- wd=l->data;
- if (wd == w) {
- void (*redisplay)(struct gui_priv *priv, struct widget *widget, void *data);
- if (!render)
- return;
- gui_internal_say(this, w, 0);
- redisplay=w->menu_data->redisplay;
- wr=w->menu_data->redisplay_widget;
- if (!w->menu_data->redisplay && !w->menu_data->href) {
- gui_internal_widget_render(this, w);
- return;
- }
- if (redisplay) {
- gui_internal_menu_destroy(this, w);
- redisplay(this, wr, wr->data);
- } else {
- char *href=g_strdup(w->menu_data->href);
- gui_internal_menu_destroy(this, w);
- gui_internal_html_load_href(this, href, 0);
- g_free(href);
- }
- return;
- }
- gui_internal_menu_destroy(this, wd);
- }
-}
-
-void
-gui_internal_prune_menu(struct gui_priv *this, struct widget *w)
-{
- gui_internal_prune_menu_do(this, w, 1);
-}
-
-void
-gui_internal_prune_menu_count(struct gui_priv *this, int count, int render)
-{
- GList *l=g_list_last(this->root.children);
- struct widget *w=NULL;
- while (l && count-- > 0)
- l=g_list_previous(l);
- if (l) {
- w=l->data;
- gui_internal_prune_menu_do(this, w, render);
- }
-}
-
-
-/**
- * @brief Initializes a GUI screen
- *
- * This method initializes the internal GUI's screen on which all other elements (such as HTML menus,
- * dialogs or others) are displayed.
- *
- * It sets up a view hierarchy, which includes a title bar and a client area to hold widgets defined by
- * the caller.
- *
- * @param this The GUI instance
- * @param label The label to display in the top bar
- *
- * @return The container for caller-defined widgets
- */
-struct widget *
-gui_internal_menu(struct gui_priv *this, const char *label)
-{
- struct widget *menu,*w,*w1,*topbox;
- struct padding *padding = NULL;
-
- if (this->gra) {
- padding = graphics_get_data(this->gra, "padding");
- } else
- dbg(lvl_warning, "cannot get padding: this->gra is NULL\n");
-
- gui_internal_search_idle_end(this);
- topbox=gui_internal_box_new_with_label(this, 0, label);
- topbox->w=this->root.w;
- topbox->h=this->root.h;
- gui_internal_widget_append(&this->root, topbox);
- menu=gui_internal_box_new(this, gravity_left_center|orientation_vertical);
-
- if (padding) {
- menu->p.x = padding->left;
- menu->p.y = padding->top;
- menu->w = topbox->w - padding->left - padding->right;
- menu->h = topbox->h - padding->top - padding->bottom;
- } else {
- menu->p.x = 0;
- menu->p.y = 0;
- menu->w = topbox->w;
- menu->h = topbox->h;
- }
- menu->background=this->background;
- gui_internal_apply_config(this);
- topbox->menu_data=g_new0(struct menu_data, 1);
- gui_internal_widget_append(topbox, menu);
- w=gui_internal_top_bar(this);
- gui_internal_widget_append(menu, w);
- w=gui_internal_box_new(this, gravity_center|orientation_horizontal_vertical|flags_expand|flags_fill);
- w->spx=4*this->spacing;
- w->w=menu->w;
- gui_internal_widget_append(menu, w);
- if (this->flags & 16 && !(this->flags & 1024)) {
- struct widget *wlb,*wb,*wm=w;
- wm->flags=gravity_center|orientation_vertical|flags_expand|flags_fill;
- w=gui_internal_box_new(this, gravity_center|orientation_horizontal|flags_expand|flags_fill);
- dbg(lvl_info,"topbox->menu_data=%p\n", topbox->menu_data);
- gui_internal_widget_append(wm, w);
- wb=gui_internal_box_new(this, gravity_right_center|orientation_horizontal|flags_fill);
- wb->bl=6;
- wb->br=6;
- wb->bb=6;
- wb->bt=6;
- wb->spx=6;
- topbox->menu_data->button_bar=wb;
- gui_internal_widget_append(wm, wb);
- wlb=gui_internal_button_label(this,_("Back"),1);
- wlb->func=gui_internal_back;
- wlb->state |= STATE_SENSITIVE;
- }
- if (this->flags & 192) {
- menu=gui_internal_box_new(this, gravity_left_center|orientation_vertical);
- if (padding) {
- menu->p.x = padding->left;
- menu->p.y = padding->top;
- menu->w = topbox->w - padding->left - padding->right;
- menu->h = topbox->h - padding->top - padding->bottom;
- } else {
- menu->p.x = 0;
- menu->p.y = 0;
- menu->w = topbox->w;
- menu->h = topbox->h;
- }
- w1=gui_internal_time_help(this);
- gui_internal_widget_append(menu, w1);
- w1=gui_internal_box_new(this, gravity_center|orientation_horizontal_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(menu, w1);
- gui_internal_widget_append(topbox, menu);
- menu->background=NULL;
- }
- gui_internal_widget_pack(this, topbox);
- gui_internal_widget_reset_pack(this, topbox);
- topbox->w=this->root.w;
- topbox->h=this->root.h;
- if (padding) {
- menu->p.x = padding->left;
- menu->p.y = padding->top;
- menu->w = topbox->w - padding->left - padding->right;
- menu->h = topbox->h - padding->top - padding->bottom;
- } else {
- menu->p.x = 0;
- menu->p.y = 0;
- menu->w = topbox->w;
- menu->h = topbox->h;
- }
- return w;
-}
-
-struct menu_data *
-gui_internal_menu_data(struct gui_priv *this)
-{
- GList *l;
- struct widget *menu;
-
- l=g_list_last(this->root.children);
- menu=l->data;
- return menu->menu_data;
-}
-
-void
-gui_internal_menu_reset_pack(struct gui_priv *this)
-{
- GList *l;
- struct widget *top_box;
-
- l=g_list_last(this->root.children);
- top_box=l->data;
- gui_internal_widget_reset_pack(this, top_box);
-}
-
-void
-gui_internal_menu_render(struct gui_priv *this)
-{
- GList *l;
- struct widget *menu;
-
- l=g_list_last(this->root.children);
- menu=l->data;
- gui_internal_say(this, menu, 0);
- gui_internal_widget_pack(this, menu);
- gui_internal_widget_render(this, menu);
-}
-
-struct widget *
-gui_internal_top_bar(struct gui_priv *this)
-{
- struct widget *w,*wm,*wh,*wc,*wcn;
- int dots_len, sep_len;
- GList *res=NULL,*l;
- int width,width_used=0,use_sep=0,incomplete=0;
- struct graphics_gc *foreground=(this->flags & 256 ? this->background : this->text_foreground);
-/* flags
- 1:Don't expand bar to screen width
- 2:Don't show Map Icon
- 4:Don't show Home Icon
- 8:Show only current menu
- 16:Don't use menu titles as button
- 32:Show navit version
- 64:Show time
- 128:Show help
- 256:Use background for menu headline
- 512:Set osd_configuration and zoom to route when setting position
- 1024:Don't show back button
- 2048:No highlighting of keyboard
- 4096:Center menu title
-*/
-
- w=gui_internal_box_new(this, (this->flags & 4096 ? gravity_center : gravity_left_center)|orientation_horizontal|(this->flags & 1 ? 0:flags_fill));
- w->bl=this->spacing;
- w->spx=this->spacing;
- w->background=this->background2;
- if ((this->flags & 6) == 6) {
- w->bl=10;
- w->br=10;
- w->bt=6;
- w->bb=6;
- }
- width=this->root.w-w->bl;
- if (! (this->flags & 2)) {
- wm=gui_internal_button_new_with_callback(this, NULL,
- image_new_s(this, "gui_map"), gravity_center|orientation_vertical,
- gui_internal_cmd_return, NULL);
- wm->speech=g_strdup(_("Back to map"));
- gui_internal_widget_pack(this, wm);
- gui_internal_widget_append(w, wm);
- width-=wm->w;
- }
- if (! (this->flags & 4)) {
- wh=gui_internal_button_new_with_callback(this, NULL,
- image_new_s(this, "gui_home"), gravity_center|orientation_vertical,
- gui_internal_cmd_main_menu, NULL);
- wh->speech=g_strdup(_("Main Menu"));
- gui_internal_widget_pack(this, wh);
- gui_internal_widget_append(w, wh);
- width-=wh->w;
- }
- if (!(this->flags & 6))
- width-=w->spx;
- l=g_list_last(this->root.children);
- wcn=gui_internal_label_new(this,".. »");
- wcn->foreground=foreground;
- dots_len=wcn->w;
- gui_internal_widget_destroy(this, wcn);
- wcn=gui_internal_label_new(this,"»");
- wcn->foreground=foreground;
- sep_len=wcn->w;
- gui_internal_widget_destroy(this, wcn);
- while (l) {
- if (g_list_previous(l) || !g_list_next(l)) {
- wc=l->data;
- wcn=gui_internal_label_new(this, wc->text);
- wcn->foreground=foreground;
- if (g_list_next(l))
- use_sep=1;
- else
- use_sep=0;
- dbg(lvl_debug,"%d (%s) + %d + %d + %d > %d\n", wcn->w, wc->text, width_used, w->spx, use_sep ? sep_len : 0, width);
- if (wcn->w + width_used + w->spx + (use_sep ? sep_len : 0) + (g_list_previous(l) ? dots_len : 0) > width) {
- incomplete=1;
- gui_internal_widget_destroy(this, wcn);
- break;
- }
- if (use_sep) {
- struct widget *wct=gui_internal_label_new(this, "»");
- wct->foreground=foreground;
- res=g_list_prepend(res, wct);
- width_used+=sep_len+w->spx;
- }
- width_used+=wcn->w;
- if (!(this->flags & 16)) {
- wcn->func=gui_internal_cmd_return;
- wcn->data=wc;
- wcn->state |= STATE_SENSITIVE;
- }
- res=g_list_prepend(res, wcn);
- if (this->flags & 8)
- break;
- }
- l=g_list_previous(l);
- }
- if (incomplete) {
- if (! res) {
- wcn=gui_internal_label_new_abbrev(this, wc->text, width-width_used-w->spx-dots_len);
- wcn->foreground=foreground;
- wcn->func=gui_internal_cmd_return;
- wcn->data=wc;
- wcn->state |= STATE_SENSITIVE;
- res=g_list_prepend(res, wcn);
- l=g_list_previous(l);
- wc=l?l->data:NULL;
- }
- if(wc) {
- wcn=gui_internal_label_new(this, ".. »");
- wcn->foreground=foreground;
- wcn->func=gui_internal_cmd_return;
- wcn->data=wc;
- wcn->state |= STATE_SENSITIVE;
- res=g_list_prepend(res, wcn);
- }
- }
- l=res;
- while (l) {
- gui_internal_widget_append(w, l->data);
- l=g_list_next(l);
- }
- if (this->flags & 32) {
- char *version_text=g_strdup_printf("Navit %s",version);
- wcn=gui_internal_label_new(this, version_text);
- g_free(version_text);
- wcn->flags=gravity_right_center|flags_expand;
- gui_internal_widget_append(w, wcn);
- }
-#if 0
- if (dots)
- gui_internal_widget_destroy(this, dots);
-#endif
- return w;
-}
diff --git a/navit/gui/internal/gui_internal_menu.h b/navit/gui/internal/gui_internal_menu.h
deleted file mode 100644
index 57e37d91c..000000000
--- a/navit/gui/internal/gui_internal_menu.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* prototypes */
-struct gui_priv;
-struct menu_data;
-struct widget;
-void gui_internal_prune_menu(struct gui_priv *this, struct widget *w);
-void gui_internal_prune_menu_count(struct gui_priv *this, int count, int render);
-struct widget *gui_internal_menu(struct gui_priv *this, const char *label);
-struct menu_data *gui_internal_menu_data(struct gui_priv *this);
-void gui_internal_menu_reset_pack(struct gui_priv *this);
-void gui_internal_menu_render(struct gui_priv *this);
-struct widget *gui_internal_top_bar(struct gui_priv *this);
-/* end of prototypes */
diff --git a/navit/gui/internal/gui_internal_poi.c b/navit/gui/internal/gui_internal_poi.c
deleted file mode 100644
index cb31ecc95..000000000
--- a/navit/gui/internal/gui_internal_poi.c
+++ /dev/null
@@ -1,792 +0,0 @@
-#include <glib.h>
-#include <stdlib.h>
-#include "color.h"
-#include "coord.h"
-#include "point.h"
-#include "callback.h"
-#include "graphics.h"
-#include "debug.h"
-#include "navit.h"
-#include "navit_nls.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "map.h"
-#include "mapset.h"
-#include "layout.h"
-#include "route.h"
-#include "transform.h"
-#include "linguistics.h"
-#include "fib.h"
-#include "util.h"
-#include "gui_internal.h"
-#include "gui_internal_widget.h"
-#include "gui_internal_priv.h"
-#include "gui_internal_html.h"
-#include "gui_internal_menu.h"
-#include "gui_internal_keyboard.h"
-#include "gui_internal_poi.h"
-
-
-struct item_data {
- int dist;
- char *label;
- struct item item;
- struct coord c;
-};
-
-struct selector {
- char *icon;
- char *name;
- enum item_type *types;
-};
-static enum item_type selectors_BankTypes[]={type_poi_bank,type_poi_bank, type_poi_atm,type_poi_atm, type_none};
-static enum item_type selectors_FuelTypes[]={type_poi_fuel,type_poi_fuel,type_none};
-static enum item_type selectors_BusTrainTypes[]={type_poi_rail_station,type_poi_rail_station,
- type_poi_rail_halt,type_poi_rail_tram_stop,type_poi_bus_station,type_poi_bus_stop,type_none};
-static enum item_type selectors_HotelTypes[]={type_poi_hotel,type_poi_camp_rv,type_poi_camping,type_poi_camping,
- type_poi_resort,type_poi_resort,type_poi_motel,type_poi_hostel,type_none};
-static enum item_type selectors_RestaurantTypes[]={type_poi_bar,type_poi_picnic,type_poi_burgerking,type_poi_fastfood,
- type_poi_restaurant,type_poi_restaurant,type_poi_cafe,type_poi_cafe,type_poi_pub,type_poi_pub,type_none};
-static enum item_type selectors_ShoppingTypes[]={type_poi_mall,type_poi_mall,type_poi_shop_grocery,type_poi_shop_grocery,
- type_poi_shopping,type_poi_shopping,type_poi_shop_butcher,type_poi_shop_baker,type_poi_shop_fruit,
- type_poi_shop_fruit,type_poi_shop_beverages,type_poi_shop_beverages,type_none};
-static enum item_type selectors_ServiceTypes[]={type_poi_marina,type_poi_marina,type_poi_hospital,type_poi_hospital,
- type_poi_public_utilities,type_poi_public_utilities,type_poi_police,type_poi_autoservice,type_poi_information,
- type_poi_information,type_poi_pharmacy,type_poi_pharmacy,type_poi_personal_service,type_poi_repair_service,
- type_poi_restroom,type_poi_restroom,type_none};
-static enum item_type selectors_ParkingTypes[]={type_poi_car_parking,type_poi_car_parking,type_none};
-static enum item_type selectors_LandFeaturesTypes[]={type_poi_land_feature,type_poi_rock,type_poi_dam,type_poi_dam,
- type_poi_peak,type_poi_peak,type_none};
-static enum item_type selectors_OtherTypes[]={type_point_unspecified,type_poi_land_feature-1,type_poi_rock+1,type_poi_fuel-1,
- type_poi_marina+1,type_poi_shopping-1,type_poi_shopping+1,type_poi_car_parking-1,type_poi_car_parking+1,
- type_poi_bar-1,type_poi_bank+1,type_poi_dam-1,type_poi_dam+1,type_poi_information-1,type_poi_information+1,
- type_poi_mall-1,type_poi_mall+1,type_poi_personal_service-1,type_poi_pharmacy+1,type_poi_repair_service-1,
- type_poi_repair_service+1,type_poi_restaurant-1,type_poi_restaurant+1,type_poi_restroom-1,type_poi_restroom+1,
- type_poi_shop_grocery-1,type_poi_shop_grocery+1,type_poi_peak-1,type_poi_peak+1,type_poi_motel-1,type_poi_hostel+1,
- type_poi_shop_butcher-1,type_poi_shop_baker+1,type_poi_shop_fruit-1,type_poi_shop_fruit+1,type_poi_shop_beverages-1,
- type_poi_shop_beverages+1,type_poi_pub-1,type_poi_atm+1,type_line-1,type_none};
-/*static enum item_type selectors_UnknownTypes[]={type_point_unkn,type_point_unkn,type_none};*/
-struct selector selectors[]={
- {"bank","Bank",selectors_BankTypes},
- {"fuel","Fuel",selectors_FuelTypes},
- {"bus_stop","Bus&Train",selectors_BusTrainTypes},
- {"hotel","Hotel",selectors_HotelTypes},
- {"restaurant","Restaurant",selectors_RestaurantTypes},
- {"shopping","Shopping",selectors_ShoppingTypes},
- {"hospital","Service",selectors_ServiceTypes},
- {"parking","Parking",selectors_ParkingTypes},
- {"peak","Land Features",selectors_LandFeaturesTypes},
- {"unknown","Other",selectors_OtherTypes},
-/* {"unknown","Unknown",selectors_UnknownTypes},*/
-};
-/**
- * @brief Get icon for given POI type.
- *
- * @param this pointer to gui context
- * @param type POI type
- * @return Pointer to graphics_image object, or NULL if no picture available.
- */
-
-static struct graphics_image *
-gui_internal_poi_icon(struct gui_priv *this, struct item *item)
-{
- struct attr layout;
- struct attr icon_src;
- GList *layer;
- navit_get_attr(this->nav, attr_layout, &layout, NULL);
- layer=layout.u.layout->layers;
- while(layer) {
- GList *itemgra=((struct layer *)layer->data)->itemgras;
- while(itemgra) {
- GList *types=((struct itemgra *)itemgra->data)->type;
- while(types) {
- if((long)types->data==item->type) {
- GList *element=((struct itemgra *)itemgra->data)->elements;
- while(element) {
- struct element * el=element->data;
- if(el->type==element_icon) {
- char *src;
- char *icon;
- struct graphics_image *img;
- if(item_is_custom_poi(*item)) {
- struct map_rect *mr=map_rect_new(item->map, NULL);
- item=map_rect_get_item_byid(mr, item->id_hi, item->id_lo);
- if(item_attr_get(item, attr_icon_src, &icon_src)) {
- src=el->u.icon.src;
- if(!src || !src[0])
- src="%s";
- icon=g_strdup_printf(src,map_convert_string_tmp(item->map,icon_src.u.str));
- }
- else {
- icon=g_strdup(el->u.icon.src);
- }
- }
- else {
- icon=g_strdup(el->u.icon.src);
- }
- char *dot=g_strrstr(icon,".");
- dbg(lvl_debug,"%s %s\n", item_to_name(item->type),icon);
- if(dot)
- *dot=0;
- img=image_new_xs(this,icon);
- g_free(icon);
- if(img)
- return img;
- }
- element=g_list_next(element);
- }
- }
- types=g_list_next(types);
- }
- itemgra=g_list_next(itemgra);
- }
- layer=g_list_next(layer);
- }
- return NULL;
-}
-
-/**
- * @brief Free poi_param structure.
- *
- * @param p reference to the object to be freed.
- */
-
-void
-gui_internal_poi_param_free(void *p)
-{
- if(((struct poi_param *)p)->filterstr)
- g_free(((struct poi_param *)p)->filterstr);
- if(((struct poi_param *)p)->filter)
- g_list_free(((struct poi_param *)p)->filter);
- g_free(p);
-};
-
-/**
- * @brief Clone poi_param structure.
- *
- * @param p reference to the object to be cloned.
- * @return Cloned object reference.
- */
-
-static struct poi_param *
-gui_internal_poi_param_clone(struct poi_param *p)
-{
- struct poi_param *r=g_new(struct poi_param,1);
- GList *l=p->filter;
- memcpy(r,p,sizeof(struct poi_param));
- r->filter=NULL;
- r->filterstr=NULL;
- if(p->filterstr) {
- char *last=g_list_last(l)->data;
- int len=(last - p->filterstr) + strlen(last)+1;
- r->filterstr=g_memdup(p->filterstr,len);
- }
- while(l) {
- r->filter=g_list_append(r->filter, r->filterstr + ((char*)(l->data) - p->filterstr) );
- l=g_list_next(l);
- }
- return r;
-};
-
-/**
- * @brief Set POIs filter data in poi_param structure.
- * @param param poi_param structure with unset filter data.
- * @param text filter text.
- */
-
-void
-gui_internal_poi_param_set_filter(struct poi_param *param, char *text)
-{
- char *s1, *s2;
-
- param->filterstr=removecase(text);
- s1=param->filterstr;
- do {
- s2=g_utf8_strchr(s1,-1,' ');
- if(s2)
- *s2++=0;
- param->filter=g_list_append(param->filter,s1);
- if(s2) {
- while(*s2==' ')
- s2++;
- }
- s1=s2;
- } while(s2 && *s2);
-}
-
-static struct widget *
-gui_internal_cmd_pois_selector(struct gui_priv *this, struct pcoord *c, int pagenb)
-{
- struct widget *wl,*wb;
- int nitems,nrows;
- int i;
- //wl=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- wl=gui_internal_box_new(this, gravity_left_center|orientation_horizontal_vertical|flags_fill);
- wl->background=this->background;
- wl->w=this->root.w;
- wl->cols=this->root.w/this->icon_s;
- nitems=sizeof(selectors)/sizeof(struct selector);
- nrows=nitems/wl->cols + (nitems%wl->cols>0);
- wl->h=this->icon_l*nrows;
- for (i = 0 ; i < nitems ; i++) {
- struct poi_param *p=g_new0(struct poi_param,1);
- p->sel = 1;
- p->selnb = i;
- p->pagenb = pagenb;
- p->dist = 0;
- p->filter=NULL;
- p->filterstr=NULL;
- gui_internal_widget_append(wl, wb=gui_internal_button_new_with_callback(this, NULL,
- image_new_s(this, selectors[i].icon), gravity_left_center|orientation_vertical,
- gui_internal_cmd_pois, p));
- wb->c=*c;
- wb->data_free=gui_internal_poi_param_free;
- wb->bt=10;
- }
-
- gui_internal_widget_append(wl, wb=gui_internal_button_new_with_callback(this, NULL,
- image_new_s(this, "gui_search"), gravity_left_center|orientation_vertical,
- gui_internal_cmd_pois_filter, NULL));
- wb->c=*c;
- wb->bt=10;
-
- gui_internal_widget_pack(this,wl);
- return wl;
-}
-
-/**
- * @brief Widget to display POI item.
- *
- * @param this pointer to gui context
- * @param center reference to the standing point where angle to be counted from
- * @param item POI item reference
- * @param c POI coordinates
- * @param dist precomputed distance to POI (or -1 if it's not to be displayed)
- * @param name POI name
- * @return Pointer to new widget.
- */
-
-static void
-format_dist(int dist, char *distbuf)
-{
- if (dist > 10000)
- sprintf(distbuf,"%d ", dist/1000);
- else if (dist>0)
- sprintf(distbuf,"%d.%d ", dist/1000, (dist%1000)/100);
-}
-
-struct widget *
-gui_internal_cmd_pois_item(struct gui_priv *this, struct coord *center, struct item *item, struct coord *c, struct route *route, int dist, char* name)
-{
- char distbuf[32]="";
- char dirbuf[32]="";
- char routedistbuf[32]="";
- char *type;
- struct widget *wl;
- char *text;
- struct graphics_image *icon;
-
- format_dist(dist,distbuf);
- if(c) {
- int len;
- get_compass_direction(dirbuf, transform_get_angle_delta(center, c, 0), 1);
- len=strlen(dirbuf);
- dirbuf[len]=' ';
- dirbuf[len+1]=0;
- if (route) {
- route_get_distances(route, c, 1, &dist);
- if (dist != INT_MAX)
- format_dist(dist, routedistbuf);
- }
- }
-
-
- type=item_to_name(item->type);
-
- icon=gui_internal_poi_icon(this,item);
- if(!icon && item->type==type_house_number)
- icon=image_new_xs(this,"post");
- if(!icon) {
- icon=image_new_xs(this,"gui_inactive");
- text=g_strdup_printf("%s%s%s%s %s", distbuf, dirbuf, routedistbuf, type, name);
- } else if(strlen(name)>0)
- text=g_strdup_printf("%s%s%s%s", distbuf, dirbuf, routedistbuf, name);
- else
- text=g_strdup_printf("%s%s%s%s", distbuf, dirbuf, routedistbuf, type);
-
- wl=gui_internal_button_new_with_callback(this, text, icon, gravity_left_center|orientation_horizontal|flags_fill, NULL, NULL);
- wl->datai=dist;
- g_free(text);
- if (name[0]) {
- wl->name=g_strdup_printf("%s %s",type,name);
- } else {
- wl->name=g_strdup(type);
- }
- wl->func=gui_internal_cmd_position;
- wl->data=(void *)9;
- wl->item=*item;
- wl->state|= STATE_SENSITIVE;
- return wl;
-}
-
-/**
- * @brief Get string representation of item address suitable for doing search and for display in POI list.
- *
- * @param item reference to item.
- * @return Pointer to string representation of address. To be g_free()d after use.
- */
-
-char *
-gui_internal_compose_item_address_string(struct item *item, int prependPostal)
-{
- char *s=g_strdup("");
- struct attr attr;
- if(prependPostal && item_attr_get(item, attr_postal, &attr))
- s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL);
- if(item_attr_get(item, attr_house_number, &attr))
- s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL);
- if(item_attr_get(item, attr_street_name, &attr))
- s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL);
- if(item_attr_get(item, attr_street_name_systematic, &attr))
- s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL);
- if(item_attr_get(item, attr_district_name, &attr))
- s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL);
- if(item_attr_get(item, attr_town_name, &attr))
- s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL);
- if(item_attr_get(item, attr_county_name, &attr))
- s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL);
- if(item_attr_get(item, attr_country_name, &attr))
- s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL);
-
- if(item_attr_get(item, attr_address, &attr))
- s=g_strjoin(" ",s,"|",map_convert_string_tmp(item->map,attr.u.str),NULL);
- return s;
-}
-
-static int
-gui_internal_cmd_pois_item_selected(struct poi_param *param, struct item *item)
-{
- enum item_type *types;
- struct selector *sel = param->sel? &selectors[param->selnb]: NULL;
- enum item_type type=item->type;
- struct attr attr;
- int match=0;
- if (type >= type_line && param->filter==NULL)
- return 0;
- if (! sel || !sel->types) {
- match=1;
- } else {
- types=sel->types;
- while (*types != type_none) {
- if (item->type >= types[0] && item->type <= types[1]) {
- return 1;
- }
- types+=2;
- }
- }
- if(type == type_house_number && !param->filter)
- return 0;
- if (param->filter) {
- char *long_name, *s;
- GList *f;
- int i;
- if (param->AddressFilterType>0) {
- s=gui_internal_compose_item_address_string(item,param->AddressFilterType==2?1:0);
- } else if (item_attr_get(item, attr_label, &attr)) {
- s=g_strdup_printf("%s %s", item_to_name(item->type), map_convert_string_tmp(item->map,attr.u.str));
- } else {
- s=g_strdup(item_to_name(item->type));
- }
- long_name=removecase(s);
- g_free(s);
-
- match=0;
- for(i=0;i<3 && !match;i++) {
- char *long_name_exp=linguistics_expand_special(long_name, i);
- for(s=long_name_exp,f=param->filter;f && s;f=g_list_next(f)) {
- s=strstr(s,f->data);
- if(!s) {
- break;
- }
- s=g_utf8_strchr(s,-1,' ');
- }
- g_free(long_name_exp);
- if(!f)
- match=1;
- }
- g_free(long_name);
- }
- return match;
-}
-
-/**
- * @brief Event handler for POIs list "more" element.
- *
- * @param this The graphics context.
- * @param wm called widget.
- * @param data event data.
- */
-static void
-gui_internal_cmd_pois_more(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w=g_new0(struct widget,1);
- w->data=wm->data;
- w->c=wm->c;
- w->w=wm->w;
- wm->data_free=NULL;
- gui_internal_back(this, NULL, NULL);
- gui_internal_cmd_pois(this, w, w->data);
- free(w);
-}
-
-
-/**
- * @brief Event to apply POIs text filter.
- *
- * @param this The graphics context.
- * @param wm called widget.
- * @param data event data (pointer to editor widget containg filter text).
- */
-static void
-gui_internal_cmd_pois_filter_do(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *w=data;
- struct poi_param *param;
-
- if(!w->text)
- return;
-
- if(w->data) {
- param=gui_internal_poi_param_clone(w->data);
- param->pagenb=0;
- } else {
- param=g_new0(struct poi_param,1);
- }
- if(!strcmp(wm->name,"AddressFilter"))
- param->AddressFilterType=1;
- else if(!strcmp(wm->name,"AddressFilterZip"))
- param->AddressFilterType=2;
- else
- param->AddressFilterType=0;
-
- gui_internal_poi_param_set_filter(param, w->text);
-
- gui_internal_cmd_pois(this,w,param);
- gui_internal_poi_param_free(param);
-}
-
-/**
- * @brief POIs filter dialog.
- * Event to handle '\r' '\n' keys pressed.
- *
- */
-
-static void
-gui_internal_cmd_pois_filter_changed(struct gui_priv *this, struct widget *wm, void *data)
-{
- if (wm->text && wm->reason==gui_internal_reason_keypress_finish) {
- gui_internal_cmd_pois_filter_do(this, wm, wm);
- }
-}
-
-
-/**
- * @brief POIs filter dialog.
- *
- * @param this The graphics context.
- * @param wm called widget.
- * @param data event data.
- */
-void
-gui_internal_cmd_pois_filter(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct widget *wb, *w, *wr, *wk, *we;
- int keyboard_mode;
- keyboard_mode = VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG"));
- wb=gui_internal_menu(this,"Filter");
- w=gui_internal_box_new(this, gravity_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- wr=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(w, wr);
- we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(wr, we);
-
- gui_internal_widget_append(we, wk=gui_internal_label_new(this, NULL));
- wk->state |= STATE_EDIT|STATE_EDITABLE;
- wk->func=gui_internal_cmd_pois_filter_changed;
- wk->background=this->background;
- wk->flags |= flags_expand|flags_fill;
- wk->name=g_strdup("POIsFilter");
- wk->c=wm->c;
- gui_internal_widget_append(we, wb=gui_internal_image_new(this, image_new_xs(this, "gui_active")));
- wb->state |= STATE_SENSITIVE;
- wb->func = gui_internal_cmd_pois_filter_do;
- wb->name=g_strdup("NameFilter");
- wb->data=wk;
- gui_internal_widget_append(we, wb=gui_internal_image_new(this, image_new_xs(this, "post")));
- wb->state |= STATE_SENSITIVE;
- wb->name=g_strdup("AddressFilter");
- wb->func = gui_internal_cmd_pois_filter_do;
- wb->data=wk;
- gui_internal_widget_append(we, wb=gui_internal_image_new(this, image_new_xs(this, "zipcode")));
- wb->state |= STATE_SENSITIVE;
- wb->name=g_strdup("AddressFilterZip");
- wb->func = gui_internal_cmd_pois_filter_do;
- wb->data=wk;
-
- if (this->keyboard)
- gui_internal_widget_append(w, gui_internal_keyboard(this, keyboard_mode));
- else
- gui_internal_keyboard_show_native(this, w, keyboard_mode, getenv("LANG"));
- gui_internal_menu_render(this);
-
-
-}
-
-/**
- * @brief Do POI search specified by poi_param and display POIs found
- *
- * @param this The graphics context.
- * @param wm called widget.
- * @param data event data, reference to poi_param or NULL.
- */
-void
-gui_internal_cmd_pois(struct gui_priv *this, struct widget *wm, void *data)
-{
- struct map_selection *sel,*selm;
- struct coord c,center;
- struct mapset_handle *h;
- struct map *m;
- struct map_rect *mr;
- struct item *item;
- struct widget *wi,*w,*w2,*wb, *wtable, *row;
- enum projection pro=wm->c.pro;
- struct poi_param *param;
- int param_free=0;
- int idist,dist;
- struct selector *isel;
- int pagenb;
- int prevdist;
- // Starting value and increment of count of items to be extracted
- const int pagesize = 50;
- int maxitem, it = 0, i;
- struct item_data *items;
- struct fibheap* fh = fh_makekeyheap();
- int cnt = 0;
- struct table_data *td;
- struct widget *wl,*wt;
- char buffer[32];
- struct poi_param *paramnew;
- struct attr route;
-dbg(lvl_debug,"POIs...");
- if(data) {
- param = data;
- } else {
- param = g_new0(struct poi_param,1);
- param_free=1;
- }
- if (navit_get_attr(this->nav, attr_route, &route, NULL)) {
- struct attr route_status;
- if (!route_get_attr(route.u.route, attr_route_status, &route_status, NULL) ||
- (route_status.u.num != route_status_path_done_new &&
- route_status.u.num != route_status_path_done_incremental))
- route.u.route=NULL;
- } else
- route.u.route=NULL;
- dist=10000*(param->dist+1);
- isel = param->sel? &selectors[param->selnb]: NULL;
- pagenb = param->pagenb;
- prevdist=param->dist*10000;
- maxitem = pagesize*(pagenb+1);
- items= g_new0( struct item_data, maxitem);
-
-
- dbg(lvl_debug, "Params: sel = %i, selnb = %i, pagenb = %i, dist = %i, filterstr = %s, AddressFilterType= %d\n",
- param->sel, param->selnb, param->pagenb, param->dist, param->filterstr, param->AddressFilterType);
-
- wb=gui_internal_menu(this, isel ? isel->name : _("POIs"));
- w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- if (!isel && !param->filter)
- gui_internal_widget_append(w, gui_internal_cmd_pois_selector(this,&wm->c,pagenb));
- w2=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(w, w2);
-
- sel=map_selection_rect_new(&wm->c,dist*transform_scale(abs(wm->c.y)+dist*1.5),18);
- center.x=wm->c.x;
- center.y=wm->c.y;
- h=mapset_open(navit_get_mapset(this->nav));
- while ((m=mapset_next(h, 1))) {
- selm=map_selection_dup_pro(sel, pro, map_projection(m));
- mr=map_rect_new(m, selm);
- dbg(lvl_debug,"mr=%p\n", mr);
- if (mr) {
- while ((item=map_rect_get_item(mr))) {
- if (gui_internal_cmd_pois_item_selected(param, item) &&
- item_coord_get_pro(item, &c, 1, pro) &&
- coord_rect_contains(&sel->u.c_rect, &c) &&
- (idist=transform_distance(pro, &center, &c)) < dist) {
- struct item_data *data;
- struct attr attr;
- char *label;
- item_attr_rewind(item);
- if (item->type==type_house_number) {
- label=gui_internal_compose_item_address_string(item,1);
- } else if (item_attr_get(item, attr_label, &attr)) {
- label=map_convert_string(item->map,attr.u.str);
- // Buildings which label is equal to addr:housenumber value
- // are duplicated by item_house_number. Don't include such
- // buildings into the list. This is true for OSM maps created with
- // maptool patched with #859 latest patch.
- // FIXME: For non-OSM maps, we probably would better don't skip these items.
- if(item->type==type_poly_building && item_attr_get(item, attr_house_number, &attr) ) {
- if(strcmp(label,map_convert_string_tmp(item->map,attr.u.str))==0) {
- g_free(label);
- continue;
- }
- }
-
- } else {
- label=g_strdup("");
- }
-
- if(it>=maxitem) {
- data = fh_extractmin(fh);
- g_free(data->label);
- data->label=NULL;
- } else {
- data = &items[it++];
- }
- data->label=label;
- data->item = *item;
- data->c = c;
- data->dist = idist;
- // Key expression is a workaround to fight
- // probable heap collisions when two objects
- // are at the same distance. But it destroys
- // right order of POIs 2048 km away from cener
- // and if table grows more than 1024 rows.
- fh_insertkey(fh, -((idist<<10) + cnt++), data);
- if (it == maxitem)
- dist = (-fh_minkey(fh))>>10;
- }
- }
- map_rect_destroy(mr);
- }
- map_selection_destroy(selm);
- }
- map_selection_destroy(sel);
- mapset_close(h);
-
- wtable = gui_internal_widget_table_new(this,gravity_left_top | flags_fill | flags_expand |orientation_vertical,1);
- td=wtable->data;
-
- gui_internal_widget_append(w2,wtable);
-
- // Move items from heap to the table
- for(i=0;;i++)
- {
- int key = fh_minkey(fh);
- struct item_data *data = fh_extractmin(fh);
- if (data == NULL)
- {
- dbg(lvl_debug, "Empty heap: maxitem = %i, it = %i, dist = %i\n", maxitem, it, dist);
- break;
- }
- dbg(lvl_debug, "dist1: %i, dist2: %i\n", data->dist, (-key)>>10);
- if(i==(it-pagesize*pagenb) && data->dist>prevdist)
- prevdist=data->dist;
- wi=gui_internal_cmd_pois_item(this, &center, &data->item, &data->c, route.u.route, data->dist, data->label);
- wi->c.x=data->c.x;
- wi->c.y=data->c.y;
- wi->c.pro=pro;
- wi->background=this->background;
- row = gui_internal_widget_table_row_new(this,
- gravity_left
- | flags_fill
- | orientation_horizontal);
- gui_internal_widget_append(row,wi);
- row->datai=data->dist;
- gui_internal_widget_prepend(wtable,row);
- g_free(data->label);
- }
-
- fh_deleteheap(fh);
- free(items);
-
- // Add an entry for more POI
- row = gui_internal_widget_table_row_new(this,
- gravity_left
- | flags_fill
- | orientation_horizontal);
- row->datai=100000000; // Really far away for Earth, but won't work for bigger planets.
- gui_internal_widget_append(wtable,row);
- wl=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(row,wl);
- if (it == maxitem) {
- paramnew=gui_internal_poi_param_clone(param);
- paramnew->pagenb++;
- paramnew->count=it;
- snprintf(buffer, sizeof(buffer), "Get more (up to %d items)...", (paramnew->pagenb+1)*pagesize);
- wt=gui_internal_label_new(this, buffer);
- gui_internal_widget_append(wl, wt);
- wt->func=gui_internal_cmd_pois_more;
- wt->data=paramnew;
- wt->data_free=gui_internal_poi_param_free;
- wt->state |= STATE_SENSITIVE;
- wt->c = wm->c;
- } else {
- static int dist[]={1,5,10,0};
- wt=gui_internal_label_new(this, "Set distance to");
- gui_internal_widget_append(wl, wt);
- for(i=0;dist[i];i++) {
- paramnew=gui_internal_poi_param_clone(param);
- paramnew->dist+=dist[i];
- paramnew->count=it;
- snprintf(buffer, sizeof(buffer), " %i ", 10*(paramnew->dist+1));
- wt=gui_internal_label_new(this, buffer);
- gui_internal_widget_append(wl, wt);
- wt->func=gui_internal_cmd_pois_more;
- wt->data=paramnew;
- wt->data_free=gui_internal_poi_param_free;
- wt->state |= STATE_SENSITIVE;
- wt->c = wm->c;
- }
- wt=gui_internal_label_new(this, "km.");
- gui_internal_widget_append(wl, wt);
-
- }
- // Rendering now is needed to have table_data->bottomrow filled in.
- gui_internal_menu_render(this);
- td=wtable->data;
- if(td->bottom_row!=NULL)
- {
-#if 0
- while(((struct widget*)td->bottom_row->data)->datai<=prevdist
- && (td->next_button->state & STATE_SENSITIVE))
- {
- gui_internal_table_button_next(this, td->next_button, NULL);
- }
-#else
- int firstrow=g_list_index(wtable->children, td->top_row->data);
- while(firstrow>=0) {
- int currow=g_list_index(wtable->children, td->bottom_row->data) - firstrow;
- if(currow<0) {
- dbg(lvl_debug,"Can't find bottom row in children list. Stop paging.\n");
- break;
- }
- if(currow>=param->count)
- break;
- if(!(td->scroll_buttons.next_button->state & STATE_SENSITIVE)) {
- dbg(lvl_debug,"Reached last page but item %i not found. Stop paging.\n",param->count);
- break;
- }
- gui_internal_table_button_next(this, td->scroll_buttons.next_button, NULL);
- }
-#endif
- }
- gui_internal_menu_render(this);
- if(param_free)
- g_free(param);
-}
-
diff --git a/navit/gui/internal/gui_internal_poi.h b/navit/gui/internal/gui_internal_poi.h
deleted file mode 100644
index 665f44a70..000000000
--- a/navit/gui/internal/gui_internal_poi.h
+++ /dev/null
@@ -1,57 +0,0 @@
-
-/**
- * POI search/filtering parameters.
- *
- */
-
-struct poi_param {
-
- /**
- * =1 if selnb is defined, 0 otherwize.
- */
- unsigned char sel;
-
- /**
- * Index to struct selector selectors[], shows what type of POIs is defined.
- */
- unsigned char selnb;
- /**
- * Page number to display.
- */
- unsigned char pagenb;
- /**
- * Radius (number of 10-kilometer intervals) to search for POIs.
- */
- unsigned char dist;
- /**
- * Should filter phrase be compared to postal address of the POI.
- * =0 - name filter, =1 - address filter, =2 - address filter, including postal code
- */
- unsigned char AddressFilterType;
- /**
- * Filter string, casefold()ed and divided into substrings at the spaces, which are replaced by ASCII 0*.
- */
- char *filterstr;
- /**
- * list of pointers to individual substrings of filterstr.
- */
- GList *filter;
- /**
- * Number of POIs in this list
- */
- int count;
-};
-
-/* prototypes */
-struct coord;
-struct gui_priv;
-struct item;
-struct poi_param;
-struct widget;
-void gui_internal_poi_param_free(void *p);
-void gui_internal_poi_param_set_filter(struct poi_param *param, char *text);
-struct widget *gui_internal_cmd_pois_item(struct gui_priv *this, struct coord *center, struct item *item, struct coord *c, struct route *route, int dist, char *name);
-char *gui_internal_compose_item_address_string(struct item *item, int prependPostal);
-void gui_internal_cmd_pois_filter(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_pois(struct gui_priv *this, struct widget *wm, void *data);
-/* end of prototypes */
diff --git a/navit/gui/internal/gui_internal_priv.h b/navit/gui/internal/gui_internal_priv.h
deleted file mode 100644
index 37b09d62a..000000000
--- a/navit/gui/internal/gui_internal_priv.h
+++ /dev/null
@@ -1,228 +0,0 @@
-/**
- * @brief A structure to store configuration values.
- *
- * This structure stores configuration values for how gui elements in the internal GUI
- * should be drawn.
- */
-struct gui_config_settings {
-
- /**
- * The base size (in fractions of a point) to use for text.
- */
- int font_size;
- /**
- * The size (in pixels) that xs style icons should be scaled to.
- * This icon size is typically used in various lists and should be set to value which allows a list row to be easily cliked or dragged.
- */
- int icon_xs;
- /**
- * The size (in pixels) that s style icons (small) should be scaled to, used for the menu top row icons
- */
- int icon_s;
- /**
- * The size (in pixels) that l style icons should be scaled to, used for icons defined in the menu html
- */
- int icon_l;
- /**
- * The default amount of spacing (in pixels) to place between GUI elements.
- */
- int spacing;
-
-};
-
-struct route_data {
- struct widget * route_table;
- int route_showing;
-};
-
-/**
- * Private data for the internal GUI.
- *
- * @author Martin Schaller (04/2008)
- */
-struct gui_priv {
- struct navit *nav;
- struct attr self;
- struct window *win;
- struct graphics *gra;
- struct graphics_gc *background;
- struct graphics_gc *background2;
- struct graphics_gc *highlight_background;
- struct graphics_gc *foreground;
- struct graphics_gc *text_foreground;
- struct graphics_gc *text_background;
- struct color background_color, background2_color, text_foreground_color, text_background_color;
- int spacing;
- int font_size;
- char *font_name;
- int fullscreen;
- struct graphics_font *fonts[3];
- int icon_xs; /**< The size (in pixels) that xs style icons should be scaled to.
- * This icon size can be too small to click it on some devices.
- */
- int icon_s; /**< The size (in pixels) that s style icons (small) should be scaled to */
- int icon_l; /**< The size (in pixels) that l style icons should be scaled to */
- int pressed;
- struct widget *widgets;
- int widgets_count;
- int redraw;
- struct widget root;
- struct widget *highlighted,*editable;
- struct widget *highlighted_menu;
- struct pcoord clickp, vehiclep;
- struct attr *click_coord_geo, *position_coord_geo;
- struct search_list *sl;
- int ignore_button;
- int menu_on_map_click;
- char *on_map_click;
- int signal_on_map_click;
- char *country_iso2;
- int speech;
- int keyboard; /**< Whether the internal GUI keyboard is enabled */
- int keyboard_required; /**< Whether keyboard input is needed. This is only used by the
- * HTML menu, text entry dialogs do not use this member.
- */
- struct gui_config_settings config; /**< The setting information read from the configuration file.
- * values of -1 indicate no value was specified in the config file.
- */
- struct event_idle *idle;
- struct callback *motion_cb,*button_cb,*resize_cb,*keypress_cb,*window_closed_cb,*idle_cb, *motion_timeout_callback;
- struct event_timeout *motion_timeout_event;
- struct point current;
-
- struct callback * vehicle_cb;
- struct route_data route_data; /**< Stores information about the route. */
-
- struct gui_internal_data data;
- struct callback_list *cbl;
- int flags;
- int cols;
- struct attr osd_configuration; /**< The OSD configuration, a set of flags controlling which OSD
- * items will be visible.
- */
- int pitch; /**< The pitch for the 3D map view. */
- int flags_town,flags_street,flags_house_number;
- int radius;
- int mouse_button_clicked_on_map;
-/* html */
- char *html_text;
- int html_depth;
- struct widget *html_container;
- int html_skip;
- char *html_anchor;
- char *href;
- int html_anchor_found;
- struct form *form;
- struct html {
- int skip;
- enum html_tag {
- html_tag_none,
- html_tag_a,
- html_tag_h1,
- html_tag_html,
- html_tag_img,
- html_tag_script,
- html_tag_form,
- html_tag_input,
- html_tag_div,
- } tag;
- char *command;
- char *name;
- char *href;
- char *refresh_cond;
- char *class;
- int font_size;
- struct widget *w;
- struct widget *container;
- } html[10];
-
-/* gestures */
-
- struct gesture_elem {
- long long msec;
- struct point p;
- } 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;
-};
-
-struct menu_data {
- struct widget *search_list;
- struct widget *keyboard;
- struct widget *button_bar;
- struct widget *menu;
- int keyboard_mode;
- void (*redisplay)(struct gui_priv *priv, struct widget *widget, void *data);
- struct widget *redisplay_widget;
- char *href;
- struct attr refresh_callback_obj,refresh_callback;
-};
-
-struct heightline {
- struct heightline *next;
- int height;
- struct coord_rect bbox;
- int count;
- struct coord c[0];
-};
-
-struct diagram_point {
- struct diagram_point *next;
- struct coord c;
-};
-/* prototypes */
-enum flags;
-struct attr;
-struct coord;
-struct coord_geo;
-struct graphics_image;
-struct gui_priv;
-struct heightline;
-struct item;
-struct map;
-struct navit;
-struct pcoord;
-struct point;
-struct vehicle;
-struct widget;
-struct graphics_image *image_new_xs(struct gui_priv *this, const char *name);
-struct graphics_image *image_new_s(struct gui_priv *this, const char *name);
-struct graphics_image *image_new_l(struct gui_priv *this, const char *name);
-struct widget *gui_internal_button_navit_attr_new(struct gui_priv *this, const char *text, enum flags flags, struct attr *on, struct attr *off);
-struct widget *gui_internal_button_map_attr_new(struct gui_priv *this, const char *text, enum flags flags, struct map *map, struct attr *on, struct attr *off, int deflt);
-void gui_internal_say(struct gui_priv *this, struct widget *w, int questionmark);
-void gui_internal_back(struct gui_priv *this, struct widget *w, void *data);
-void gui_internal_cmd_return(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_main_menu(struct gui_priv *this, struct widget *wm, void *data);
-struct widget *gui_internal_time_help(struct gui_priv *this);
-void gui_internal_apply_config(struct gui_priv *this);
-void gui_internal_select_waypoint(struct gui_priv *this, const char *title, const char *hint, struct widget *wm_, void (*cmd)(struct gui_priv *priv, struct widget *widget, void *data), void *data);
-void gui_internal_call_linked_on_finish(struct gui_priv *this, struct widget *wm, void *data);
-char *removecase(char *s);
-void gui_internal_cmd_position_do(struct gui_priv *this, struct pcoord *pc_in, struct coord_geo *g_in, struct widget *wm, const char *name, int flags);
-void gui_internal_cmd_position(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_cmd_bookmarks(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_keypress_do(struct gui_priv *this, char *key);
-char *gui_internal_cmd_match_expand(char *pattern, struct attr **in);
-int gui_internal_set(char *remove, char *add);
-void gui_internal_cmd_map_download(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_menu_vehicle_settings(struct gui_priv *this, struct vehicle *v, char *name);
-void gui_internal_cmd_vehicle_settings(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_evaluate(struct gui_priv *this, const char *command);
-void gui_internal_enter(struct gui_priv *this, int ignore);
-void gui_internal_leave(struct gui_priv *this);
-void gui_internal_set_click_coord(struct gui_priv *this, struct point *p);
-void gui_internal_enter_setup(struct gui_priv *this);
-void gui_internal_cmd_menu(struct gui_priv *this, int ignore, char *href);
-void gui_internal_cmd_log_clicked(struct gui_priv *this, struct widget *widget, void *data);
-void gui_internal_check_exit(struct gui_priv *this);
-void gui_internal_cmd_enter_coord_clicked(struct gui_priv *this, struct widget *widget, void *data);
-int line_intersection(struct coord *a1, struct coord *a2, struct coord *b1, struct coord *b2, struct coord *res);
-struct heightline *item_get_heightline(struct item *item);
-void gui_internal_route_update(struct gui_priv *this, struct navit *navit, struct vehicle *v);
-void gui_internal_route_screen_free(struct gui_priv *this_, struct widget *w);
-void gui_internal_populate_route_table(struct gui_priv *this, struct navit *navit);
-void plugin_init(void);
-/* end of prototypes */
diff --git a/navit/gui/internal/gui_internal_search.c b/navit/gui/internal/gui_internal_search.c
deleted file mode 100644
index ceeeb7438..000000000
--- a/navit/gui/internal/gui_internal_search.c
+++ /dev/null
@@ -1,635 +0,0 @@
-#include <glib.h>
-#include <stdlib.h>
-#include "config.h"
-#include "color.h"
-#include "coord.h"
-#include "point.h"
-#include "callback.h"
-#include "graphics.h"
-#include "debug.h"
-#include "navit.h"
-#include "navit_nls.h"
-#include "event.h"
-#include "search.h"
-#include "country.h"
-#include "track.h"
-#include "linguistics.h"
-#include "gui_internal.h"
-#include "gui_internal_widget.h"
-#include "gui_internal_priv.h"
-#include "gui_internal_html.h"
-#include "gui_internal_menu.h"
-#include "gui_internal_keyboard.h"
-#include "gui_internal_search.h"
-
-static void
-gui_internal_search_country(struct gui_priv *this, struct widget *widget, void *data)
-{
- gui_internal_prune_menu_count(this, 1, 0);
- gui_internal_search(this,_("Country"),"Country",0);
-}
-
-static void
-gui_internal_search_town(struct gui_priv *this, struct widget *wm, void *data)
-{
- if (this->sl)
- search_list_select(this->sl, attr_country_all, 0, 0);
- g_free(this->country_iso2);
- this->country_iso2=NULL;
- gui_internal_search(this,_("Town"),"Town",0);
-}
-
-static void
-gui_internal_search_street(struct gui_priv *this, struct widget *widget, void *data)
-{
- search_list_select(this->sl, attr_town_or_district_name, 0, 0);
- gui_internal_search(this,_("Street"),"Street",0);
-}
-
-static void
-gui_internal_search_house_number(struct gui_priv *this, struct widget *widget, void *data)
-{
- search_list_select(this->sl, attr_street_name, 0, 0);
- gui_internal_search(this,_("House number"),"House number",0);
-}
-
-void
-gui_internal_search_idle_end(struct gui_priv *this)
-{
- if (this->idle) {
- event_remove_idle(this->idle);
- this->idle=NULL;
- }
- if (this->idle_cb) {
- callback_destroy(this->idle_cb);
- this->idle_cb=NULL;
- }
-}
-
-static int
-gui_internal_search_cmp(gconstpointer _a, gconstpointer _b)
-{
- struct widget *a=(struct widget *)_a, *b=(struct widget *)_b;
- char *sa,*sb;
- int r;
- if(!b)
- if((!a || a->type!=widget_table_row || !a->text) && (!b || b->type!=widget_table_row || !b->text))
- return 0;
- if(!a || a->type!=widget_table_row || !a->text)
- return -1;
- if(!b || b->type!=widget_table_row || !b->text)
- return 1;
- r=a->datai-b->datai;
- if(r<0)
- return -1;
- if(r>0)
- return 1;
- sa=removecase(a->text);
- sb=removecase(b->text);
- r=strcmp(sa,sb);
- dbg(lvl_debug,"%s %s %d\n",sa,sb,r);
- g_free(sa);
- g_free(sb);
- return r;
-}
-
-static char *
-postal_str(struct search_list_result *res, int level)
-{
- char *ret=NULL;
- if (res->town->common.postal)
- ret=res->town->common.postal;
- if (res->town->common.postal_mask)
- ret=res->town->common.postal_mask;
- if (level == 1)
- return ret;
- if (res->street->common.postal)
- ret=res->street->common.postal;
- if (res->street->common.postal_mask)
- ret=res->street->common.postal_mask;
- if (level == 2)
- return ret;
- if (res->house_number->common.postal)
- ret=res->house_number->common.postal;
- if (res->house_number->common.postal_mask)
- ret=res->house_number->common.postal_mask;
- return ret;
-}
-
-static char *
-get_string_from_attr_list(struct attr **attrs, enum attr_type type, char *dflt)
-{
- struct attr attr;
- if(attr_generic_get_attr(attrs,NULL,type,&attr,NULL))
- return attr.u.str;
- else
- return dflt;
-}
-
-static char *
-district_str(struct search_list_result *res, int level, enum attr_type district, char *dflt)
-{
- char *ret=dflt;
-
- ret=get_string_from_attr_list(res->town->common.attrs, district, ret);
- if (level == 1)
- return ret;
-
- ret=get_string_from_attr_list(res->street->common.attrs, district, ret);
-
- if (level == 2)
- return ret;
-
- ret=get_string_from_attr_list(res->house_number->common.attrs, district, ret);
-
- return ret;
-}
-
-static char *
-town_display_label(struct search_list_result *res, int level, int flags)
-{
- char *town=district_str(res, level,attr_town_name,"");
- char *district=district_str(res, level,attr_district_name,NULL);
- char *postal=postal_str(res, level);
- char *postal_sep=" ";
- char *district_begin=" (";
- char *district_end=")";
- char *county_sep = ", ";
- char *county = res->town->common.county_name;
-
- if (!postal)
- postal_sep=postal="";
- if (!district || (flags & 1))
- district_begin=district_end=district="";
- if (!county || !strcmp(county, town))
- county_sep=county="";
-
- if(level==1 ) {
- if(flags & 2) {
- int n=0;
- char *s[10]={NULL};
-
- s[n]=district_str(res, level, attr_state_name, NULL);
- if(s[n])
- n++;
- s[n]=district_str(res, level, attr_county_name, NULL);
- if(s[n])
- n++;
- s[n]=district_str(res, level, attr_municipality_name, NULL);
- if(s[n])
- n++;
-
- return g_strjoinv(", ",s);
- }
- county=county_sep="";
- }
-
- return g_strdup_printf("%s%s%s%s%s%s%s%s", postal, postal_sep, town, district_begin, district, district_end, county_sep, county);
-}
-
-static void
-gui_internal_find_next_possible_key(char *search_text, char *wm_name, char *possible_keys, char *item_name)
-{
- gchar* trunk_name;
- if (item_name) {
-
- trunk_name = linguistics_expand_special(item_name,1);
- if(!trunk_name){
- trunk_name = g_strrstr(item_name, search_text);
- }
-
- if (trunk_name) {
- 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) && !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);
- }
- }
-}
-
-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;
-
- md=gui_internal_menu_data(this);
- if (md && md->keyboard && !(this->flags & 2048)) {
- GList *lk=md->keyboard->children;
- graphics_draw_mode(this->gra, draw_mode_begin);
- while (lk) {
- struct widget *child=lk->data;
- GList *lk2=child->children;
- while (lk2) {
- struct widget *child_=lk2->data;
- lk2=g_list_next(lk2);
- // 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 ) ) {
- 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 {
- 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_);
- }
- }
- lk=g_list_next(lk);
- }
- gui_internal_widget_render(this,md->keyboard);
- graphics_draw_mode(this->gra, draw_mode_end);
- }
-
-}
-
-static int
-gui_internal_get_match_quality(char *item_name, char* search_text, int is_house_number_without_street)
-{
- enum match_quality {
- full_string_match, word_match, substring_match, housenum_but_no_street_match }
- match_quality;
- if (is_house_number_without_street) {
- match_quality=housenum_but_no_street_match;
- } else if(item_name) {
- int i;
- char *folded_name=linguistics_casefold(item_name);
- char *folded_query=linguistics_casefold(search_text);
- match_quality=substring_match;
-
- for(i=0; i<3 ;i++) {
- char *exp=linguistics_expand_special(folded_name,i);
- char *p;
- if(!exp)
- continue;
- if(!strcmp(exp,folded_query)) {
- dbg(lvl_debug,"exact match for the whole string %s\n", exp);
- match_quality=full_string_match;
- g_free(exp);
- break;
- }
- if((p=strstr(exp,folded_query))!=NULL) {
- p+=strlen(folded_query);
- if(!*p||strchr(LINGUISTICS_WORD_SEPARATORS_ASCII,*p)) {
- dbg(lvl_debug,"exact matching word found inside string %s\n",exp);
- match_quality=word_match;
- }
- }
- g_free(exp);
- }
- g_free(folded_name);
- g_free(folded_query);
- }
- return match_quality;
-}
-
-static struct widget*
-gui_internal_create_resultlist_entry(struct gui_priv *this, struct search_list_result *res, char *result_main_label, char *result_sublabel, void *param, char *widget_name, struct item *item)
-{
- struct widget *resultlist_entry;
- if(result_sublabel) {
- struct widget *entry_sublabel;
- resultlist_entry=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(resultlist_entry,
- gui_internal_image_new(this, image_new_xs(this, res->country->flag)));
- entry_sublabel=gui_internal_box_new(this, gravity_left_center|orientation_vertical|flags_fill);
- gui_internal_widget_append(resultlist_entry, entry_sublabel);
- gui_internal_widget_append(entry_sublabel, gui_internal_label_new(this, result_main_label));
- gui_internal_widget_append(entry_sublabel, gui_internal_label_font_new(this, result_sublabel, 1));
- resultlist_entry->func=gui_internal_cmd_position;
- resultlist_entry->data=param;
- resultlist_entry->state |= STATE_SENSITIVE;
- resultlist_entry->speech=g_strdup(result_main_label);
- } else {
- resultlist_entry=gui_internal_button_new_with_callback(this, result_main_label,
- image_new_xs(this, res->country->flag),
- gravity_left_center|orientation_horizontal|flags_fill,
- gui_internal_cmd_position, param);
- }
- resultlist_entry->name=widget_name;
- if (res->c)
- resultlist_entry->c=*res->c;
- resultlist_entry->selection_id=res->id;
- if (item)
- resultlist_entry->item=*item;
-
- return resultlist_entry;
-}
-
-/**
- * @brief List of possible next keys/characters given the current result list of the incremental search.
- */
-char possible_keys_incremental_search[256]="";
-
-static void
-gui_internal_search_idle(struct gui_priv *this, char *wm_name, struct widget *search_list, void *param)
-{
- char *result_main_label=NULL,*result_sublabel=NULL,*item_name=NULL, *widget_name=NULL, *search_text;
- struct search_list_result *res;
- struct item *item=NULL;
- struct widget *search_input=NULL;
- struct widget *menu, *resultlist_row, *resultlist_entry;
-
- res=search_list_get_result(this->sl);
- if (!res) {
- gui_internal_search_idle_end(this);
- gui_internal_highlight_possible_keys(this, possible_keys_incremental_search);
- return;
- }
-
- if (! strcmp(wm_name,"Country")) {
- item_name=res->country->name;
- item=&res->country->common.item;
- result_main_label=g_strdup_printf("%s", res->country->name);
- } else if (! strcmp(wm_name,"Town")) {
- item=&res->town->common.item;
- item_name=res->town->common.town_name;
- result_main_label=town_display_label(res, 1, 0);
- result_sublabel=town_display_label(res, 1, 2);
- } else if (! strcmp(wm_name,"Street")) {
- item_name=res->street->name;
- item=&res->street->common.item;
- result_main_label=g_strdup(res->street->name);
- result_sublabel=town_display_label(res, 2, 1);
- } else if (! strcmp(wm_name,"House number")) {
- item_name=res->house_number->house_number;
- result_main_label=g_strdup_printf("%s, %s", item_name, res->street->name);
- result_sublabel=town_display_label(res, 3, 0);
- widget_name=g_strdup(result_main_label);
- }
- if(!item_name) {
- dbg(lvl_error, "Skipping nameless item in search (search type: %s). Please report this as a bug.\n", wm_name);
- return;
- }
-
- if(!widget_name)
- widget_name=g_strdup(item_name);
-
- menu=g_list_last(this->root.children)->data;
- search_input=gui_internal_find_widget(menu, NULL, STATE_EDIT);
- dbg_assert(search_input);
- search_text=search_input->text;
-
- gui_internal_find_next_possible_key(search_text, wm_name, possible_keys_incremental_search, item_name);
-
- resultlist_row=gui_internal_widget_table_row_new(this, gravity_left|orientation_horizontal|flags_fill);
- if (!result_sublabel)
- resultlist_row->text=g_strdup(result_main_label);
- else
- resultlist_row->text=g_strdup_printf("%s %s",item_name,result_sublabel);
- int is_house_number_without_street=!strcmp(wm_name,"House number") && !res->street->name;
- resultlist_row->datai=gui_internal_get_match_quality(item_name, search_text, is_house_number_without_street);
- gui_internal_widget_insert_sorted(search_list, resultlist_row, gui_internal_search_cmp);
-
- resultlist_entry=gui_internal_create_resultlist_entry(
- this, res, result_main_label, result_sublabel, param, widget_name, item);
- gui_internal_widget_append(resultlist_row, resultlist_entry);
- gui_internal_widget_pack(this, search_list);
- graphics_draw_mode(this->gra, draw_mode_begin);
- gui_internal_widget_render(this, menu);
- graphics_draw_mode(this->gra, draw_mode_end);
-
- g_free(result_main_label);
- g_free(result_sublabel);
-}
-
-static void
-gui_internal_search_idle_start(struct gui_priv *this, char *wm_name, struct widget *search_list, void *param)
-{
- this->idle_cb=callback_new_4(callback_cast(gui_internal_search_idle), this, wm_name, search_list, param);
- this->idle=event_add_idle(50,this->idle_cb);
- callback_call_0(this->idle_cb);
-}
-
-static void
-gui_internal_search_changed(struct gui_priv *this, struct widget *wm, void *data)
-{
- GList *l;
- struct widget *search_list=gui_internal_menu_data(this)->search_list;
- void *param=(void *)3;
-
- gui_internal_widget_table_clear(this, search_list);
- possible_keys_incremental_search[0]='\0';
-
- if (! strcmp(wm->name,"Country"))
- param=(void *)4;
- if (! strcmp(wm->name,"Street"))
- param=(void *)5;
- if (! strcmp(wm->name,"House number"))
- param=(void *)6;
- dbg(lvl_debug,"%s now '%s'\n", wm->name, wm->text);
-
- gui_internal_search_idle_end(this);
- if (wm->text && g_utf8_strlen(wm->text, -1) > 0) {
- struct attr search_attr;
-
- dbg(lvl_debug,"process\n");
- if (! strcmp(wm->name,"Country"))
- search_attr.type=attr_country_all;
- if (! strcmp(wm->name,"Town"))
- search_attr.type=attr_town_or_district_name;
- if (! strcmp(wm->name,"Street"))
- search_attr.type=attr_street_name;
- if (! strcmp(wm->name,"House number"))
- search_attr.type=attr_house_number;
- search_attr.u.str=wm->text;
- search_list_search(this->sl, &search_attr, 1);
- gui_internal_search_idle_start(this, wm->name, search_list, param);
- } else {
- // If not enough content is entered, we highlight all keys.
- gui_internal_highlight_possible_keys(this, "");
- }
- l=g_list_last(this->root.children);
- gui_internal_widget_render(this, l->data);
-}
-
-static void
-gui_internal_search_list_set_default_country(struct gui_priv *this)
-{
- struct attr search_attr, country_name, country_iso2, *country_attr;
- struct item *item;
- struct country_search *cs;
- struct tracking *tracking;
- struct search_list_result *res;
-
- country_attr=country_default();
- tracking=navit_get_tracking(this->nav);
- if (tracking && tracking_get_attr(tracking, attr_country_id, &search_attr, NULL))
- country_attr=&search_attr;
- if (country_attr) {
- cs=country_search_new(country_attr, 0);
- item=country_search_get_item(cs);
- if (item && item_attr_get(item, attr_country_name, &country_name)) {
- search_attr.type=attr_country_all;
- dbg(lvl_debug,"country %s\n", country_name.u.str);
- search_attr.u.str=country_name.u.str;
- search_list_search(this->sl, &search_attr, 0);
- while((res=search_list_get_result(this->sl)));
- if(this->country_iso2) {
- g_free(this->country_iso2);
- this->country_iso2=NULL;
- }
- if (item_attr_get(item, attr_country_iso2, &country_iso2))
- this->country_iso2=g_strdup(country_iso2.u.str);
- }
- country_search_destroy(cs);
- } else {
- dbg(lvl_error,"warning: no default country found\n");
- if (this->country_iso2) {
- dbg(lvl_debug,"attempting to use country '%s'\n",this->country_iso2);
- search_attr.type=attr_country_iso2;
- search_attr.u.str=this->country_iso2;
- search_list_search(this->sl, &search_attr, 0);
- while((res=search_list_get_result(this->sl)));
- }
- }
-}
-
-static void
-gui_internal_search_list_new(struct gui_priv *this)
-{
- struct mapset *ms=navit_get_mapset(this->nav);
- if (! this->sl) {
- this->sl=search_list_new(ms);
- gui_internal_search_list_set_default_country(this);
- }
-}
-
-void
-gui_internal_search_list_destroy(struct gui_priv *this)
-{
- if (this->sl) {
- search_list_destroy(this->sl);
- this->sl=NULL;
- }
-}
-
-void
-gui_internal_search(struct gui_priv *this, const char *what, const char *type, int flags)
-{
- struct widget *wb,*wk,*w,*wr,*we,*wl,*wnext=NULL;
- char *country;
- int keyboard_mode;
- gui_internal_search_list_new(this);
- keyboard_mode = VKBD_FLAG_2 | gui_internal_keyboard_init_mode(this->country_iso2 ? this->country_iso2 : getenv("LANG"));
- wb=gui_internal_menu(this, what);
- w=gui_internal_box_new(this, gravity_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wb, w);
- wr=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(w, wr);
- we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
- gui_internal_widget_append(wr, we);
- if (!strcmp(type,"Country")) {
- wnext=gui_internal_image_new(this, image_new_xs(this, "gui_select_town"));
- wnext->func=gui_internal_search_town;
- } else if (!strcmp(type,"Town")) {
- if (this->country_iso2) {
-#ifdef HAVE_API_ANDROID
- char country_iso2[strlen(this->country_iso2)+1];
- strtolower(country_iso2, this->country_iso2);
- country=g_strdup_printf("country_%s", country_iso2);
-#else
- country=g_strdup_printf("country_%s", this->country_iso2);
-#endif
- } else
- country=g_strdup("gui_select_country");
- gui_internal_widget_append(we, wb=gui_internal_image_new(this, image_new_xs(this, country)));
- wb->state |= STATE_SENSITIVE;
- if (flags)
- wb->func = gui_internal_search_country;
- else
- wb->func = gui_internal_back;
- wnext=gui_internal_image_new(this, image_new_xs(this, "gui_select_street"));
- wnext->func=gui_internal_search_street;
- g_free(country);
- } else if (!strcmp(type,"Street")) {
- gui_internal_widget_append(we, wb=gui_internal_image_new(this, image_new_xs(this, "gui_select_town")));
- wb->state |= STATE_SENSITIVE;
- wb->func = gui_internal_back;
- wnext=gui_internal_image_new(this, image_new_xs(this, "gui_select_house_number"));
- wnext->func=gui_internal_search_house_number;
- } else if (!strcmp(type,"House number")) {
- gui_internal_widget_append(we, wb=gui_internal_image_new(this, image_new_xs(this, "gui_select_street")));
- wb->state |= STATE_SENSITIVE;
- wb->func = gui_internal_back;
- keyboard_mode = VKBD_NUMERIC | VKBD_FLAG_2;
- }
- gui_internal_widget_append(we, wk=gui_internal_label_new(this, NULL));
- if (wnext) {
- gui_internal_widget_append(we, wnext);
- wnext->state |= STATE_SENSITIVE;
- }
- wl=gui_internal_widget_table_new(this,gravity_left_top | flags_fill | flags_expand |orientation_vertical,1);//gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
- gui_internal_widget_append(wr, wl);
- gui_internal_menu_data(this)->search_list=wl;
- wk->state |= STATE_EDIT|STATE_EDITABLE;
- wk->background=this->background;
- wk->flags |= flags_expand|flags_fill;
- wk->func = gui_internal_search_changed;
- wk->name=g_strdup(type);
- if (this->keyboard)
- gui_internal_widget_append(w, gui_internal_keyboard(this, keyboard_mode));
- else
- gui_internal_keyboard_show_native(this, w, keyboard_mode, getenv("LANG"));
- gui_internal_menu_render(this);
-}
-
-void
-gui_internal_search_house_number_in_street(struct gui_priv *this, struct widget *widget, void *data)
-{
- dbg(lvl_info,"id %d\n", widget->selection_id);
- search_list_select(this->sl, attr_street_name, 0, 0);
- search_list_select(this->sl, attr_street_name, widget->selection_id, 1);
- gui_internal_search(this,_("House number"),"House number",0);
-}
-
-void
-gui_internal_search_street_in_town(struct gui_priv *this, struct widget *widget, void *data)
-{
- dbg(lvl_info,"id %d\n", widget->selection_id);
- search_list_select(this->sl, attr_town_or_district_name, 0, 0);
- search_list_select(this->sl, attr_town_or_district_name, widget->selection_id, 1);
- gui_internal_search(this,_("Street"),"Street",0);
-}
-
-void
-gui_internal_search_town_in_country(struct gui_priv *this, struct widget *widget)
-{
- struct search_list_common *slc;
- dbg(lvl_info,"id %d\n", widget->selection_id);
- search_list_select(this->sl, attr_country_all, 0, 0);
- slc=search_list_select(this->sl, attr_country_all, widget->selection_id, 1);
- if (slc) {
- g_free(this->country_iso2);
- this->country_iso2=g_strdup(((struct search_list_country *)slc)->iso2);
- }
- gui_internal_search(this,widget->name,"Town",0);
-}
-
diff --git a/navit/gui/internal/gui_internal_search.h b/navit/gui/internal/gui_internal_search.h
deleted file mode 100644
index 6add28327..000000000
--- a/navit/gui/internal/gui_internal_search.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* prototypes */
-struct gui_priv;
-struct widget;
-void gui_internal_search_idle_end(struct gui_priv *this);
-void gui_internal_search_list_destroy(struct gui_priv *this);
-void gui_internal_search(struct gui_priv *this, const char *what, const char *type, int flags);
-void gui_internal_search_house_number_in_street(struct gui_priv *this, struct widget *widget, void *data);
-void gui_internal_search_street_in_town(struct gui_priv *this, struct widget *widget, void *data);
-void gui_internal_search_town_in_country(struct gui_priv *this, struct widget *widget);
-/* end of prototypes */
diff --git a/navit/gui/internal/gui_internal_widget.c b/navit/gui/internal/gui_internal_widget.c
deleted file mode 100644
index 3e1993025..000000000
--- a/navit/gui/internal/gui_internal_widget.c
+++ /dev/null
@@ -1,1497 +0,0 @@
-#include <glib.h>
-#include "color.h"
-#include "coord.h"
-#include "point.h"
-#include "callback.h"
-#include "graphics.h"
-#include "debug.h"
-#include "navit_nls.h"
-#include "gui_internal.h"
-#include "gui_internal_widget.h"
-#include "gui_internal_priv.h"
-#include "gui_internal_menu.h"
-
-static void gui_internal_scroll_buttons_init(struct gui_priv *this, struct widget *widget, struct scroll_buttons *sb);
-
-static void
-gui_internal_background_render(struct gui_priv *this, struct widget *w)
-{
- struct point pnt=w->p;
- if (w->state & STATE_HIGHLIGHTED)
- graphics_draw_rectangle(this->gra, this->highlight_background, &pnt, w->w, w->h);
- else {
- if (w->background)
- graphics_draw_rectangle(this->gra, w->background, &pnt, w->w, w->h);
- }
-}
-
-struct widget *
-gui_internal_label_font_new(struct gui_priv *this, const char *text, int font)
-{
- struct point p[4];
- int w=0;
- int h=0;
-
- struct widget *widget=g_new0(struct widget, 1);
- widget->type=widget_label;
- widget->font_idx=font;
- if (text) {
- widget->text=g_strdup(text);
- graphics_get_text_bbox(this->gra, this->fonts[font], widget->text, 0x10000, 0x0, p, 0);
- w=p[2].x-p[0].x;
- h=p[0].y-p[2].y;
- }
- widget->h=h+this->spacing;
- widget->texth=h;
- widget->w=w+this->spacing;
- widget->textw=w;
- widget->flags=gravity_center;
- widget->foreground=this->text_foreground;
- widget->text_background=this->text_background;
-
- return widget;
-}
-
-struct widget *
-gui_internal_label_new(struct gui_priv *this, const char *text)
-{
- return gui_internal_label_font_new(this, text, 0);
-}
-
-struct widget *
-gui_internal_label_new_abbrev(struct gui_priv *this, const char *text, int maxwidth)
-{
- struct widget *ret=NULL;
- char *tmp=g_malloc(strlen(text)+3);
- const char *p;
- p=text+strlen(text);
- while ((p=g_utf8_find_prev_char(text, p)) >= text) {
- int i=p-text;
- strcpy(tmp, text);
- strcpy(tmp+i,"..");
- ret=gui_internal_label_new(this, tmp);
- if (ret->w < maxwidth)
- break;
- gui_internal_widget_destroy(this, ret);
- ret=NULL;
- }
- if(!ret)
- ret=gui_internal_label_new(this, "");
- g_free(tmp);
- return ret;
-}
-
-struct widget *
-gui_internal_image_new(struct gui_priv *this, struct graphics_image *image)
-{
- struct widget *widget=g_new0(struct widget, 1);
- widget->type=widget_image;
- widget->img=image;
- if (image) {
- widget->w=image->width;
- widget->h=image->height;
- }
- return widget;
-}
-
-static void
-gui_internal_image_render(struct gui_priv *this, struct widget *w)
-{
- struct point pnt;
-
- gui_internal_background_render(this, w);
- if (w->img) {
- pnt=w->p;
- pnt.x+=w->w/2-w->img->hot.x;
- pnt.y+=w->h/2-w->img->hot.y;
- graphics_draw_image(this->gra, this->foreground, &pnt, w->img);
- }
-}
-
-/**
- * @brief Renders a label.
- *
- * @param this The internal GUI instance
- * @param w The widget to render
- */
-static void
-gui_internal_label_render(struct gui_priv *this, struct widget *w)
-{
- struct point pnt=w->p;
- gui_internal_background_render(this, w);
- if (w->state & STATE_EDIT)
- graphics_draw_rectangle(this->gra, this->highlight_background, &pnt, w->w, w->h);
- if (w->text) {
- char *text;
- char *startext=(char*)g_alloca(strlen(w->text)+1);
- text=w->text;
- if (w->flags2 & 1) {
- int i;
- for (i = 0 ; i < strlen(text); i++)
- startext[i]='*';
- startext[i]='\0';
- text=startext;
- }
- if (w->flags & gravity_right) {
- pnt.y+=w->h-this->spacing;
- pnt.x+=w->w-w->textw-this->spacing;
- graphics_draw_text(this->gra, w->foreground, w->text_background, this->fonts[w->font_idx], text, &pnt, 0x10000, 0x0);
- } else {
- pnt.y+=w->h-this->spacing;
- graphics_draw_text(this->gra, w->foreground, w->text_background, this->fonts[w->font_idx], text, &pnt, 0x10000, 0x0);
- }
- }
-}
-
-/**
- * @brief Creates a text box.
- *
- * A text box is a widget that renders a text string containing newlines.
- * The string will be broken up into label widgets at each newline with a vertical layout.
- *
- * @param this The internal GUI instance
- * @param text The text to be displayed in the text box
- * @param font The font to use for the text
- * @param flags
- */
-struct widget *
-gui_internal_text_font_new(struct gui_priv *this, const char *text, int font, enum flags flags)
-{
- char *s=g_strdup(text),*s2,*tok;
- struct widget *ret=gui_internal_box_new(this, flags);
- s2=s;
- while ((tok=strtok(s2,"\n"))) {
- gui_internal_widget_append(ret, gui_internal_label_font_new(this, tok, font));
- s2=NULL;
- }
- gui_internal_widget_pack(this,ret);
- g_free(s);
- return ret;
-}
-
-struct widget *
-gui_internal_text_new(struct gui_priv *this, const char *text, enum flags flags)
-{
- return gui_internal_text_font_new(this, text, 0, flags);
-}
-
-
-struct widget *
-gui_internal_button_font_new_with_callback(struct gui_priv *this, const char *text, int font, struct graphics_image *image, enum flags flags, void(*func)(struct gui_priv *priv, struct widget *widget, void *data), void *data)
-{
- struct widget *ret=NULL;
- ret=gui_internal_box_new(this, flags);
- if (ret) {
- if (image && !(flags & flags_swap))
- gui_internal_widget_append(ret, gui_internal_image_new(this, image));
- if (text)
- gui_internal_widget_append(ret, gui_internal_text_font_new(this, text, font, gravity_center|orientation_vertical));
- if (image && (flags & flags_swap))
- gui_internal_widget_append(ret, gui_internal_image_new(this, image));
- ret->func=func;
- ret->data=data;
- if (func) {
- ret->state |= STATE_SENSITIVE;
- ret->speech=g_strdup(text);
- }
- }
- return ret;
-
-}
-
-struct widget *
-gui_internal_button_new_with_callback(struct gui_priv *this, const char *text, struct graphics_image *image, enum flags flags, void(*func)(struct gui_priv *priv, struct widget *widget, void *data), void *data)
-{
- return gui_internal_button_font_new_with_callback(this, text, 0, image, flags, func, data);
-}
-
-struct widget *
-gui_internal_button_new(struct gui_priv *this, const char *text, struct graphics_image *image, enum flags flags)
-{
- return gui_internal_button_new_with_callback(this, text, image, flags, NULL, NULL);
-}
-
-struct widget *
-gui_internal_find_widget(struct widget *wi, struct point *p, int flags)
-{
- struct widget *ret,*child;
- GList *l=wi->children;
-
- if (p) {
- if (wi->p.x > p->x )
- return NULL;
- if (wi->p.y > p->y )
- return NULL;
- if ( wi->p.x + wi->w < p->x)
- return NULL;
- if ( wi->p.y + wi->h < p->y)
- return NULL;
- }
- if (wi->state & flags)
- return wi;
- while (l) {
- child=l->data;
- ret=gui_internal_find_widget(child, p, flags);
- if (ret) {
- return ret;
- }
- l=g_list_next(l);
- }
- return NULL;
-
-}
-
-void
-gui_internal_highlight_do(struct gui_priv *this, struct widget *found)
-{
- if (found == this->highlighted)
- return;
-
- graphics_draw_mode(this->gra, draw_mode_begin);
- if (this->highlighted) {
- this->highlighted->state &= ~STATE_HIGHLIGHTED;
- if (this->root.children && this->highlighted_menu == g_list_last(this->root.children)->data)
- gui_internal_widget_render(this, this->highlighted);
- this->highlighted=NULL;
- this->highlighted_menu=NULL;
- }
- if (found) {
- this->highlighted=found;
- this->highlighted_menu=g_list_last(this->root.children)->data;
- this->highlighted->state |= STATE_HIGHLIGHTED;
- gui_internal_widget_render(this, this->highlighted);
- dbg(lvl_debug,"%d,%d %dx%d\n", found->p.x, found->p.y, found->w, found->h);
- }
- graphics_draw_mode(this->gra, draw_mode_end);
-}
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-void
-gui_internal_highlight(struct gui_priv *this)
-{
- struct widget *menu,*found=NULL;
- if (this->current.x > -1 && this->current.y > -1) {
- menu=g_list_last(this->root.children)->data;
- found=gui_internal_find_widget(menu, &this->current, STATE_SENSITIVE);
- if (!found) {
- found=gui_internal_find_widget(menu, &this->current, STATE_EDITABLE);
- if (found) {
- if (this->editable && this->editable != found) {
- this->editable->state &= ~ STATE_EDIT;
- gui_internal_widget_render(this, this->editable);
- }
- found->state |= STATE_EDIT;
- gui_internal_widget_render(this, found);
- this->editable=found;
- found=NULL;
- }
- }
- }
- gui_internal_highlight_do(this, found);
- this->motion_timeout_event=NULL;
-}
-
-
-struct widget *
-gui_internal_box_new_with_label(struct gui_priv *this, enum flags flags, const char *label)
-{
- struct widget *widget=g_new0(struct widget, 1);
-
- if (label)
- widget->text=g_strdup(label);
- widget->type=widget_box;
- widget->flags=flags;
- return widget;
-}
-
-struct widget *
-gui_internal_box_new(struct gui_priv *this, enum flags flags)
-{
- return gui_internal_box_new_with_label(this, flags, NULL);
-}
-
-
-static void gui_internal_box_render(struct gui_priv *this, struct widget *w)
-{
- struct widget *wc;
- GList *l;
-
- gui_internal_background_render(this, w);
- if (w->foreground && w->border) {
- struct point pnt[5];
- pnt[0]=w->p;
- pnt[1].x=pnt[0].x+w->w;
- pnt[1].y=pnt[0].y;
- pnt[2].x=pnt[0].x+w->w;
- pnt[2].y=pnt[0].y+w->h;
- pnt[3].x=pnt[0].x;
- pnt[3].y=pnt[0].y+w->h;
- pnt[4]=pnt[0];
- graphics_gc_set_linewidth(w->foreground, w->border ? w->border : 1);
- graphics_draw_lines(this->gra, w->foreground, pnt, 5);
- graphics_gc_set_linewidth(w->foreground, 1);
- }
-
- l=w->children;
- while (l) {
- wc=l->data;
- gui_internal_widget_render(this, wc);
- l=g_list_next(l);
- }
- if (w->scroll_buttons)
- gui_internal_widget_render(this, w->scroll_buttons->button_box);
-}
-
-
-/**
- * @brief Computes the size and location for the widget.
- *
- * @param this The internal GUI instance
- * @param w The widget to render
- */
-static void gui_internal_box_pack(struct gui_priv *this, struct widget *w)
-{
- struct widget *wc;
- int x0,x=0,y=0,width=0,height=0,owidth=0,oheight=0,expand=0,expandd=1,count=0,rows=0,cols=w->cols ? w->cols : 0;
- int hb=w->scroll_buttons?w->scroll_buttons->button_box->h:0;
- GList *l;
- int orientation=w->flags & 0xffff0000;
-
- if (!cols)
- cols=this->cols;
- if (!cols) {
- if ( this->root.w > this->root.h )
- cols=3;
- else
- cols=2;
- width=0;
- height=0;
- }
-
-
- /*
- * count the number of children
- */
- l=w->children;
- while (l) {
- count++;
- l=g_list_next(l);
- }
- if (orientation == orientation_horizontal_vertical && count <= cols)
- orientation=orientation_horizontal;
- switch (orientation) {
- case orientation_horizontal:
- /*
- * For horizontal orientation:
- * pack each child and find the largest height and
- * compute the total width. x spacing (spx) is considered
- *
- * If any children want to be expanded
- * we keep track of this
- */
- l=w->children;
- while (l) {
- wc=l->data;
- gui_internal_widget_pack(this, wc);
- if (height < wc->h)
- height=wc->h;
- width+=wc->w;
- if (wc->flags & flags_expand)
- expand+=wc->w ? wc->w : 1;
- l=g_list_next(l);
- if (l)
- width+=w->spx;
- }
- owidth=width;
- if (expand && w->w) {
- expandd=w->w-width+expand;
- owidth=w->w;
- } else
- expandd=expand=1;
- break;
- case orientation_vertical:
- /*
- * For vertical layouts:
- * We pack each child and compute the largest width and
- * the total height. y spacing (spy) is considered
- *
- * If the expand flag is set then teh expansion amount
- * is computed.
- */
- l=w->children;
- while (l) {
- wc=l->data;
- gui_internal_widget_pack(this, wc);
- if (width < wc->w)
- width=wc->w;
- height+=wc->h;
- if (wc->flags & flags_expand)
- expand+=wc->h ? wc->h : 1;
- l=g_list_next(l);
- if (l)
- height+=w->spy;
- }
- oheight=height;
- if (expand && w->h) {
- expandd=w->h-hb-height+expand;
- oheight=w->h-hb;
- } else
- expandd=expand=1;
- break;
- case orientation_horizontal_vertical:
- /*
- * For horizontal_vertical orientation
- * pack the children.
- * Compute the largest height and largest width.
- * Layout the widgets based on having the
- * number of columns specified by (cols)
- */
- count=0;
- l=w->children;
- while (l) {
- wc=l->data;
- gui_internal_widget_pack(this, wc);
- if (height < wc->h)
- height=wc->h;
- if (width < wc->w)
- width=wc->w;
- l=g_list_next(l);
- count++;
- }
- if (count < cols)
- cols=count;
- rows=(count+cols-1)/cols;
- width*=cols;
- height*=rows;
- width+=w->spx*(cols-1);
- height+=w->spy*(rows-1);
- owidth=width;
- oheight=height;
- expandd=expand=1;
- break;
- default:
- /*
- * No orientation was specified.
- * width and height are both 0.
- * The width & height of this widget
- * will be used.
- */
- if(!w->w && !w->h)
- dbg(lvl_error,"Warning width and height of a widget are 0");
- break;
- }
- if (! w->w && ! w->h) {
- w->w=w->bl+w->br+width;
- w->h=w->bt+w->bb+height+hb;
- w->packed=1;
- }
-#if 0
- if (expand < 100)
- expand=100;
-#endif
-
- /*
- * At this stage the width and height of this
- * widget has been computed.
- * We now make a second pass assigning heights,
- * widths and coordinates to each child widget.
- */
-
- if (w->flags & gravity_left)
- x=w->p.x+w->bl;
- if (w->flags & gravity_xcenter)
- x=w->p.x+w->w/2-owidth/2;
- if (w->flags & gravity_right)
- x=w->p.x+w->w-w->br-owidth;
- if (w->flags & gravity_top)
- y=w->p.y+w->bt;
- if (w->flags & gravity_ycenter)
- y=w->p.y+(w->h-hb)/2-oheight/2;
- if (w->flags & gravity_bottom)
- y=w->p.y+(w->h-hb)-w->bb-oheight;
- l=w->children;
- switch (orientation) {
- case orientation_horizontal:
- l=w->children;
- while (l) {
- wc=l->data;
- wc->p.x=x;
- if (wc->flags & flags_fill)
- wc->h=w->h-hb;
- if (wc->flags & flags_expand) {
- if (! wc->w)
- wc->w=1;
- wc->w=wc->w*expandd/expand;
- }
- if (w->flags & gravity_top)
- wc->p.y=y;
- if (w->flags & gravity_ycenter)
- wc->p.y=y-wc->h/2;
- if (w->flags & gravity_bottom)
- wc->p.y=y-wc->h;
- x+=wc->w+w->spx;
- l=g_list_next(l);
- }
- break;
- case orientation_vertical:
- l=w->children;
- while (l) {
- wc=l->data;
- wc->p.y=y;
- if (wc->flags & flags_fill)
- wc->w=w->w;
- if (wc->flags & flags_expand) {
- if (! wc->h)
- wc->h=1;
- wc->h=wc->h*expandd/expand;
- }
- if (w->flags & gravity_left)
- wc->p.x=x;
- if (w->flags & gravity_xcenter)
- wc->p.x=x-wc->w/2;
- if (w->flags & gravity_right)
- wc->p.x=x-wc->w;
- y+=wc->h+w->spy;
- l=g_list_next(l);
- }
- break;
- case orientation_horizontal_vertical:
- l=w->children;
- x0=x;
- count=0;
- width/=cols;
- height/=rows;
- while (l) {
- wc=l->data;
- wc->p.x=x;
- wc->p.y=y;
- if (wc->flags & flags_fill) {
- wc->w=width;
- wc->h=height;
- }
- if (w->flags & gravity_left)
- wc->p.x=x;
- if (w->flags & gravity_xcenter)
- wc->p.x=x+(width-wc->w)/2;
- if (w->flags & gravity_right)
- wc->p.x=x+width-wc->w;
- if (w->flags & gravity_top)
- wc->p.y=y;
- if (w->flags & gravity_ycenter)
- wc->p.y=y+(height-wc->h)/2;
- if (w->flags & gravity_bottom)
- wc->p.y=y-height-wc->h;
- x+=width;
- if (++count == cols) {
- count=0;
- x=x0;
- y+=height;
- }
- l=g_list_next(l);
- }
- break;
- default:
- break;
- }
- if ((w->flags & flags_scrolly) && y > w->h+w->p.y && !w->scroll_buttons) {
- w->scroll_buttons=g_new0(struct scroll_buttons, 1);
- gui_internal_scroll_buttons_init(this, w, w->scroll_buttons);
- w->scroll_buttons->button_box->w=w->w;
- w->scroll_buttons->button_box->p.x=w->p.x;
- w->scroll_buttons->button_box->p.y=w->p.y+w->h-w->scroll_buttons->button_box->h;
- gui_internal_widget_pack(this, w->scroll_buttons->button_box);
- dbg(lvl_debug,"needs buttons %d vs %d\n",y,w->h);
- gui_internal_box_pack(this, w);
- return;
- }
- /*
- * Call pack again on each child,
- * the child has now had its size and coordinates
- * set so they can repack their children.
- */
- l=w->children;
- while (l) {
- wc=l->data;
- gui_internal_widget_pack(this, wc);
- l=g_list_next(l);
- }
-}
-
-void
-gui_internal_widget_reset_pack(struct gui_priv *this, struct widget *w)
-{
- struct widget *wc;
- GList *l;
-
- l=w->children;
- while (l) {
- wc=l->data;
- gui_internal_widget_reset_pack(this, wc);
- l=g_list_next(l);
- }
- if (w->packed) {
- w->w=0;
- w->h=0;
- }
-}
-
-/**
- * @brief Adds a child widget to a parent widget, making it the last child.
- *
- * @param parent The parent widget
- * @param child The child widget
- */
-void
-gui_internal_widget_append(struct widget *parent, struct widget *child)
-{
- if (! child)
- return;
- if (! child->background)
- child->background=parent->background;
- parent->children=g_list_append(parent->children, child);
- child->parent=parent;
-}
-
-/**
- * @brief Adds a child widget to a parent widget, making it the first child.
- *
- * @param parent The parent widget
- * @param child The child widget
- */
-void
-gui_internal_widget_prepend(struct widget *parent, struct widget *child)
-{
- if (! child->background)
- child->background=parent->background;
- parent->children=g_list_prepend(parent->children, child);
- child->parent=parent;
-}
-
-/**
- * @brief Adds a child widget to a parent widget.
- *
- * Placement of the child widget among its siblings depends on the comparison function {@code func}.
- *
- * @param parent The parent widget
- * @param child The child widget
- * @param func The comparison function
- */
-void
-gui_internal_widget_insert_sorted(struct widget *parent, struct widget *child, GCompareFunc func)
-{
- if (! child->background)
- child->background=parent->background;
-
- parent->children=g_list_insert_sorted(parent->children, child, func);
- child->parent=parent;
-}
-
-
-/**
- * @brief Destroys all child widgets.
- *
- * This function is recursive, destroying all widgets in the child hierarchy of {@code w}.
- *
- * @param this The internal GUI instance
- * @param w The widget whose children are to be destroyed
- */
-void
-gui_internal_widget_children_destroy(struct gui_priv *this, struct widget *w)
-{
- GList *l;
- struct widget *wc;
-
- l=w->children;
- while (l) {
- wc=l->data;
- gui_internal_widget_destroy(this, wc);
- l=g_list_next(l);
- }
- g_list_free(w->children);
- w->children=NULL;
-}
-
-
-/**
- * @brief Destroys a widget.
- *
- * This function also takes care of recursively destroying the entire child widget hierarchy of
- * {@code w} prior to destroying {@code w} itself.
- *
- * @param this The internal GUI instance
- * @param w The widget to destroy
- */
-void
-gui_internal_widget_destroy(struct gui_priv *this, struct widget *w)
-{
- gui_internal_widget_children_destroy(this, w);
- g_free(w->command);
- g_free(w->speech);
- g_free(w->text);
- if (w->img)
- graphics_image_free(this->gra, w->img);
- if (w->prefix)
- g_free(w->prefix);
- if (w->name)
- g_free(w->name);
- if (w->data_free)
- w->data_free(w->data);
- if (w->cb && w->remove_cb)
- w->remove_cb(w->instance, w->cb);
- if (w==this->highlighted)
- this->highlighted=NULL;
- if(w->wfree)
- w->wfree(this,w);
- else
- g_free(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 || w->state & STATE_INVISIBLE)
- return;
-
- switch (w->type) {
- case widget_box:
- gui_internal_box_render(this, w);
- break;
- case widget_label:
- gui_internal_label_render(this, w);
- break;
- case widget_image:
- gui_internal_image_render(this, w);
- break;
- case widget_table:
- gui_internal_table_render(this,w);
- break;
- default:
- break;
- }
-}
-
-void
-gui_internal_widget_pack(struct gui_priv *this, struct widget *w)
-{
- switch (w->type) {
- case widget_box:
- gui_internal_box_pack(this, w);
- break;
- case widget_table:
- gui_internal_table_pack(this,w);
- default:
- break;
- }
-}
-
-struct widget *
-gui_internal_button_label(struct gui_priv *this, const char *label, int mode)
-{
- struct widget *wl,*wlb;
- struct widget *wb=gui_internal_menu_data(this)->button_bar;
- wlb=gui_internal_box_new(this, gravity_right_center|orientation_vertical);
- wl=gui_internal_label_new(this, label);
- wlb->border=1;
- wlb->foreground=this->text_foreground;
- wlb->bl=20;
- wlb->br=20;
- wlb->bb=6;
- wlb->bt=6;
- gui_internal_widget_append(wlb, wl);
- if (mode == 1)
- gui_internal_widget_prepend(wb, wlb);
- if (mode == -1)
- gui_internal_widget_append(wb, wlb);
-
- return wlb;
-}
-
-static void
-gui_internal_scroll_buttons_init(struct gui_priv *this, struct widget *widget, struct scroll_buttons *sb)
-{
- sb->next_button = gui_internal_button_new_with_callback(this, _("Next"), image_new_xs(this, "gui_arrow_right"),
- gravity_center|orientation_horizontal|flags_swap, gui_internal_table_button_next, widget);
- sb->prev_button = gui_internal_button_new_with_callback(this, _("Prev"), image_new_xs(this, "gui_arrow_left"),
- gravity_center|orientation_horizontal, gui_internal_table_button_prev, widget);
-
- 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);
- gui_internal_widget_append(sb->button_box, sb->next_button);
-
- sb->button_box->bl=this->spacing;
- gui_internal_widget_pack(this,sb->button_box);
-}
-
-/**
- * @brief Creates a new table widget.
- *
- * Creates and returns a new table widget. This function will
- * setup next/previous buttons as children.
- *
- * @param this The graphics context.
- * @param flags widget sizing flags.
- * @return The newly created widget
- */
-struct widget * gui_internal_widget_table_new(struct gui_priv * this, enum flags flags, int buttons)
-{
- struct widget * widget = g_new0(struct widget,1);
- struct table_data * data = NULL;
- widget->type=widget_table;
- widget->flags=flags;
- widget->state=STATE_SCROLLABLE;
- widget->data=g_new0(struct table_data,1);
- widget->data_free=gui_internal_table_data_free;
-
- // We have to set background here explicitly
- // because it will be used by inner elements created later in this
- // function (navigation buttons). Else that elements won't have
- // any background.
- widget->background=this->background;
- data = (struct table_data*)widget->data;
-
- if (buttons) {
- gui_internal_scroll_buttons_init(this, widget, &data->scroll_buttons);
- gui_internal_widget_append(widget, data->scroll_buttons.button_box);
- }
-
- return widget;
-
-}
-
-/**
- * @brief Clears all the rows from the table.
- *
- * This function removes all rows from a table.
- * New rows can later be added to the table.
- *
- * @param this The internal GUI instance
- * @param table The table widget
- */
-void gui_internal_widget_table_clear(struct gui_priv * this,struct widget * table)
-{
- GList * iter;
- struct table_data * table_data = (struct table_data* ) table->data;
-
- iter = table->children;
- while(iter ) {
- if(iter->data != table_data->scroll_buttons.button_box) {
- struct widget * child = (struct widget*)iter->data;
- gui_internal_widget_destroy(this,child);
- if(table->children == iter) {
- table->children = g_list_remove(iter,iter->data);
- iter=table->children;
- }
- else
- iter = g_list_remove(iter,iter->data);
- }
- else {
- iter = g_list_next(iter);
- }
-
- }
- table_data->top_row=NULL;
- table_data->bottom_row=NULL;
-}
-
-/**
- * @brief Moves GList pointer to the next table row, skipping other table children (button box, for example).
- *
- * @param row GList pointer into the children list
- *
- * @return GList pointer to the next row in the children list, or NULL if there are no any rows left.
- */
-GList *
-gui_internal_widget_table_next_row(GList * row)
-{
- while((row=g_list_next(row))!=NULL) {
- if(row->data && ((struct widget *)(row->data))->type == widget_table_row)
- break;
- }
- return row;
-}
-
-/**
- * @brief Moves GList pointer to the previous table row, skipping other table children (button box, for example).
- *
- * @param row GList pointer into the children list
- *
- * @return GList pointer to the previous row in the children list, or NULL if there are no any rows left.
- */
-GList *
-gui_internal_widget_table_prev_row(GList * row)
-{
- while((row=g_list_previous(row))!=NULL) {
- if(row->data && ((struct widget *)(row->data))->type == widget_table_row)
- break;
- }
- return row;
-}
-
-/**
- * @brief Moves GList pointer to the first table row, skipping other table children (button box, for example).
- *
- * @param row GList pointer into the children list
- *
- * @return GList pointer to the first row in the children list, or NULL if table is empty.
- */
-GList *
-gui_internal_widget_table_first_row(GList * row)
-{
- if(!row)
- return NULL;
-
- if(row->data && ((struct widget *)(row->data))->type == widget_table_row)
- return row;
-
- return gui_internal_widget_table_next_row(row);
-}
-
-/**
- * @brief Gets GList pointer to the table row drawn on the top of the screen.
- *
- * @return GList pointer to the top row in the children list, or NULL.
- */
-GList *
-gui_internal_widget_table_top_row(struct gui_priv *this, struct widget * table)
-{
- if(table && table->type==widget_table) {
- struct table_data *d=table->data;
- return gui_internal_widget_table_first_row(d->top_row);
- }
- return NULL;
-}
-
-/**
- * @brief Sets internal top row pointer of the table to point to a given row widget.
- *
- * @return GList pointer to the top row in the children list of the table.
- */
-GList *
-gui_internal_widget_table_set_top_row(struct gui_priv *this, struct widget * table, struct widget *row)
-{
- if(table && table->type==widget_table) {
- struct table_data *d=table->data;
- d->top_row=table->children;
- while(d->top_row && d->top_row->data!=row)
- d->top_row=g_list_next(d->top_row);
- if(!d->top_row)
- d->top_row=gui_internal_widget_table_first_row(table->children);
- return d->top_row;
- }
- return NULL;
-}
-
-
-/**
- * @brief Creates a new table_row widget.
- *
- * @param this The graphics context
- * @param flags Sizing flags for the row
- *
- * @return The new table_row widget.
- */
-struct widget *
-gui_internal_widget_table_row_new(struct gui_priv * this, enum flags flags)
-{
- struct widget * widget = g_new0(struct widget,1);
- widget->type=widget_table_row;
- widget->flags=flags;
- return widget;
-}
-
-
-
-/**
- * @brief Computes the column dimensions for the table.
- *
- * @param this The internal GUI instance
- * @param w The table widget to compute dimensions for.
- *
- * This function examines all of the rows and columns for the table w
- * and returns a list (GList) of table_column_desc elements that
- * describe each column of the table.
- *
- * The caller is responsible for freeing the returned list.
- */
-static GList *
-gui_internal_compute_table_dimensions(struct gui_priv * this,struct widget * w)
-{
-
- GList * column_desc = NULL;
- GList * current_desc=NULL;
- GList * cur_row = w->children;
- struct widget * cur_row_widget=NULL;
- GList * cur_column=NULL;
- struct widget * cell_w=NULL;
- struct table_column_desc * current_cell=NULL;
- struct table_data * table_data=NULL;
- int height=0;
- int width=0;
- int total_width=0;
- int column_count=0;
-
- /*
- * Scroll through the the table and
- * 1. Compute the maximum width + height of each column across all rows.
- */
- table_data = (struct table_data*) w->data;
- for(cur_row=w->children; cur_row ; cur_row = g_list_next(cur_row) )
- {
- cur_row_widget = (struct widget*) cur_row->data;
- current_desc = column_desc;
- if(cur_row_widget == table_data->scroll_buttons.button_box)
- {
- continue;
- }
- column_count=0;
- for(cur_column = cur_row_widget->children; cur_column;
- cur_column=g_list_next(cur_column))
- {
- cell_w = (struct widget*) cur_column->data;
- gui_internal_widget_pack(this,cell_w);
- if(current_desc == 0)
- {
- current_cell = g_new0(struct table_column_desc,1);
- column_desc = g_list_append(column_desc,current_cell);
- current_desc = g_list_last(column_desc);
- current_cell->height=cell_w->h;
- current_cell->width=cell_w->w;
- total_width+=cell_w->w;
-
- }
- else
- {
- current_cell = current_desc->data;
- height = cell_w->h;
- width = cell_w->w;
- if(current_cell->height < height )
- {
- current_cell->height = height;
- }
- if(current_cell->width < width)
- {
- total_width += (width-current_cell->width);
- current_cell->width = width;
-
-
-
- }
- current_desc = g_list_next(current_desc);
- }
- column_count++;
-
- }/* column loop */
-
- } /*row loop */
-
-
- /*
- * If the width of all columns is less than the width off
- * the table expand each cell proportionally.
- *
- */
- if(total_width+(this->spacing*column_count) < w->w ) {
- for(current_desc=column_desc; current_desc; current_desc=g_list_next(current_desc)) {
- current_cell = (struct table_column_desc*) current_desc->data;
- current_cell->width= ( (current_cell->width+this->spacing)/(float)total_width) * w->w ;
- }
- }
-
- return column_desc;
-}
-
-
-/**
- * @brief Computes the height and width for the table.
- *
- * The height and width are computed to display all cells in the table
- * at the requested height/width.
- *
- * @param this The graphics context
- * @param w The widget to pack.
- */
-void
-gui_internal_table_pack(struct gui_priv * this, struct widget * w)
-{
-
- int height=0;
- int width=0;
- int count=0;
- GList * column_data = gui_internal_compute_table_dimensions(this,w);
- GList * current=0;
- struct table_column_desc * cell_desc=0;
- struct table_data * table_data = (struct table_data*)w->data;
-
- for(current = column_data; current; current=g_list_next(current))
- {
- if(table_data->scroll_buttons.button_box == current->data )
- {
- continue;
- }
- cell_desc = (struct table_column_desc *) current->data;
- width = width + cell_desc->width + this->spacing;
- if(height < cell_desc->height)
- {
- height = cell_desc->height ;
- }
- }
-
-
-
- for(current=w->children; current; current=g_list_next(current))
- {
- if(current->data!= table_data->scroll_buttons.button_box)
- {
- count++;
- }
- }
-
- w->w = width;
- if(w->w + w->c.x > this->root.w)
- {
- w->w = this->root.w - w->c.x;
- }
-
-
- if(w->h + w->c.y > this->root.h )
- {
- /*
- * Do not allow the widget to exceed the screen.
- *
- */
- w->h = this->root.h- w->c.y - height;
- }
-
- if (table_data->scroll_buttons.button_box)
- {
- gui_internal_widget_pack(this,table_data->scroll_buttons.button_box);
- }
-
-
- /*
- * Deallocate column descriptions.
- */
- g_list_foreach(column_data,(GFunc)g_free,NULL);
- g_list_free(column_data);
-}
-
-
-
-
-/**
- * @brief Invalidates coordinates for previously rendered table widget rows.
- *
- * @param table_data Data from the table object.
- */
-void
-gui_internal_table_hide_rows(struct table_data * table_data)
-{
- GList*cur_row;
- for(cur_row=table_data->top_row; cur_row ; cur_row = g_list_next(cur_row))
- {
- struct widget * cur_row_widget = (struct widget*)cur_row->data;
- if (cur_row_widget->type!=widget_table_row)
- continue;
- cur_row_widget->p.x=0;
- cur_row_widget->p.y=0;
- cur_row_widget->w=0;
- cur_row_widget->h=0;
- if(cur_row==table_data->bottom_row)
- break;
- }
-}
-
-
-/**
- * @brief Renders a table widget.
- *
- * @param this The graphics context
- * @param w The table widget to render.
- */
-void
-gui_internal_table_render(struct gui_priv * this, struct widget * w)
-{
-
- int x;
- int y;
- GList * column_desc=NULL;
- GList * cur_row = NULL;
- GList * current_desc=NULL;
- struct table_data * table_data = (struct table_data*)w->data;
- int drawing_space_left=1;
- int is_first_page;
- struct table_column_desc * dim=NULL;
-
- dbg_assert(table_data);
- column_desc = gui_internal_compute_table_dimensions(this,w);
- if(!column_desc)
- return;
- y=w->p.y;
- gui_internal_table_hide_rows(table_data);
- /*
- * Skip rows that are on previous pages.
- */
- if(table_data->top_row && table_data->top_row != w->children && !table_data->scroll_buttons.button_box_hide)
- {
- cur_row = table_data->top_row;
- is_first_page=0;
- } else {
- cur_row = w->children;
- table_data->top_row=NULL;
- is_first_page=1;
- }
-
- /* First, let's mark all columns as off-screen that are in rows which are *before*
- * our current page.
- * */
- GList *row = w->children;
- while (row != cur_row) {
- struct widget * cur_row_widget = (struct widget*)row->data;
- GList * cur_column=NULL;
- if(cur_row_widget == table_data->scroll_buttons.button_box)
- {
- row = g_list_next(row);
- continue;
- }
- for(cur_column = cur_row_widget->children; cur_column;
- cur_column=g_list_next(cur_column))
- {
- struct widget * cur_widget = (struct widget*) cur_column->data;
- 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);
- }
-
- /*
- * Loop through each row. Drawing each cell with the proper sizes,
- * at the proper positions.
- */
- for(table_data->top_row=cur_row; cur_row; cur_row = g_list_next(cur_row))
- {
- int max_height=0, bbox_height=0;
- struct widget * cur_row_widget;
- GList * cur_column=NULL;
- current_desc = column_desc;
- cur_row_widget = (struct widget*)cur_row->data;
- x =w->p.x+this->spacing;
- if(cur_row_widget == table_data->scroll_buttons.button_box)
- {
- continue;
- }
- dim = (struct table_column_desc*)current_desc->data;
-
- if (table_data->scroll_buttons.button_box && !table_data->scroll_buttons.button_box_hide)
- bbox_height=table_data->scroll_buttons.button_box->h;
-
- if( y + dim->height + bbox_height + this->spacing >= w->p.y + w->h )
- {
- drawing_space_left=0;
- }
- for(cur_column = cur_row_widget->children; cur_column;
- cur_column=g_list_next(cur_column))
- {
- struct widget * cur_widget = (struct widget*) cur_column->data;
- if (drawing_space_left) {
- cur_widget->p.x=x;
- cur_widget->w=dim->width;
- cur_widget->p.y=y;
- cur_widget->h=dim->height;
- x=x+cur_widget->w;
- max_height = dim->height;
- /* We pack the widget before rendering to ensure that the x and y
- * coordinates get pushed down.
- */
- 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);
-
- if(dim->height > max_height)
- {
- max_height = dim->height;
- }
- } else {
- /* 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;
- }
- }
- }
-
- if (drawing_space_left) {
- /* Row object should have its coordinates in actual
- * state to be able to pass mouse clicks to Column objects
- */
- cur_row_widget->p.x=w->p.x;
- cur_row_widget->w=w->w;
- cur_row_widget->p.y=y;
- cur_row_widget->h=max_height;
- y = y + max_height;
- table_data->bottom_row=cur_row;
- current_desc = g_list_next(current_desc);
- }
- }
-
- /* 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;
-
- if(table_data->scroll_buttons.button_box && (!drawing_space_left || !is_first_page) && !table_data->scroll_buttons.button_box_hide )
- {
- table_data->scroll_buttons.button_box->p.y =w->p.y+w->h-table_data->scroll_buttons.button_box->h -
- this->spacing;
- if(table_data->scroll_buttons.button_box->p.y < y )
- {
- table_data->scroll_buttons.button_box->p.y=y;
- }
- table_data->scroll_buttons.button_box->p.x = w->p.x;
- table_data->scroll_buttons.button_box->w = w->w;
- gui_internal_widget_pack(this,table_data->scroll_buttons.button_box);
- if(table_data->scroll_buttons.next_button->p.y > w->p.y + w->h + table_data->scroll_buttons.next_button->h)
- {
- table_data->scroll_buttons.button_box->p.y = w->p.y + w->h -
- table_data->scroll_buttons.button_box->h;
- }
- 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);
- }
-
- /*
- * Deallocate column descriptions.
- */
- g_list_foreach(column_desc,(GFunc)g_free,NULL);
- g_list_free(column_desc);
-}
-
-/**
- * @brief Handles the 'next page' table event.
- *
- * A callback function that is invoked when the 'next page' button is pressed
- * to advance the contents of a table widget.
- *
- * @param this The graphics context.
- * @param wm The button widget that was pressed.
- * @param data
- */
-void
-gui_internal_table_button_next(struct gui_priv * this, struct widget * wm, void *data)
-{
- struct widget * table_widget=NULL;
- struct table_data * table_data = NULL;
-
- if(wm)
- table_widget = (struct widget * ) wm->data;
- else
- table_widget = data;
-
- if(table_widget && table_widget->type==widget_table)
- table_data = (struct table_data*) table_widget->data;
-
- if(table_data)
- {
- GList *l=g_list_next(table_data->bottom_row);
- if(l) {
- gui_internal_table_hide_rows(table_data);
- table_data->top_row=l;
- }
- }
-
- if(wm)
- wm->state&= ~STATE_HIGHLIGHTED;
-
- gui_internal_menu_render(this);
-}
-
-
-
-/**
- * @brief Handles the 'previous page' table event.
- *
- * A callback function that is invoked when the 'previous page' button is pressed
- * to go back in the contents of a table widget.
- *
- * @param this The graphics context.
- * @param wm The button widget that was pressed.
- */
-void
-gui_internal_table_button_prev(struct gui_priv * this, struct widget * wm, void *data)
-{
- struct widget * table_widget = NULL;
- struct table_data * table_data = NULL;
-
- if(wm)
- table_widget=(struct widget * ) wm->data;
- else
- table_widget=(struct widget * ) data;
-
- if(table_widget && table_widget->type==widget_table)
- table_data = (struct table_data*) table_widget->data;
-
- if(table_data) {
- int bottomy=table_widget->p.y+table_widget->h;
- int n;
- GList *top=table_data->top_row;
- struct widget *w=(struct widget*)top->data;
- if(table_data->scroll_buttons.button_box->p.y!=0) {
- bottomy=table_data->scroll_buttons.button_box->p.y;
- }
- n=(bottomy-w->p.y)/w->h;
- while(n-- > 0 && (top=g_list_previous(top))!=NULL);
- gui_internal_table_hide_rows(table_data);
- table_data->top_row=top;
- }
- if(wm)
- wm->state&= ~STATE_HIGHLIGHTED;
- gui_internal_menu_render(this);
-}
-
-
-/**
- * @brief Deallocates a table_data structure.
- *
- * @note button_box and its children (next_button,prev_button)
- * have their memory managed by the table itself.
- *
- * @param p The table_data structure
- */
-void gui_internal_table_data_free(void * p)
-{
- g_free(p);
-}
diff --git a/navit/gui/internal/gui_internal_widget.h b/navit/gui/internal/gui_internal_widget.h
deleted file mode 100644
index 33f03e478..000000000
--- a/navit/gui/internal/gui_internal_widget.h
+++ /dev/null
@@ -1,193 +0,0 @@
-enum gui_internal_reason {
- gui_internal_reason_click=1,
- gui_internal_reason_keypress,
- gui_internal_reason_keypress_finish
-};
-
-//##############################################################################################################
-//# Description:
-//# Comment:
-//# Authors: Martin Schaller (04/2008)
-//##############################################################################################################
-struct widget {
- enum widget_type type;
- struct graphics_gc *background,*text_background;
- struct graphics_gc *foreground_frame;
- struct graphics_gc *foreground;
- char *text;
- struct graphics_image *img;
- /**
- * A function to be invoked on actions.
- * @li widget The widget that is receiving the button press.
- *
- */
- void (*func)(struct gui_priv *priv, struct widget *widget, void *data);
- enum gui_internal_reason reason;
- int datai;
- void *data;
- /**
- * @brief A function to deallocate data
- */
- void (*data_free)(void *data);
-
- /**
- * @brief a function that will be called as the widget is being destroyed.
- * This function can act as a destructor for the widget. It allows for
- * on deallocation actions to be specified on a per widget basis.
- * This function will call g_free on the widget (if required).
- */
- void (*wfree) (struct gui_priv *this_, struct widget * w);
- char *prefix;
- char *name;
- char *speech;
- char *command;
- struct pcoord c;
- struct item item;
- int selection_id;
- int state;
- struct point p;
- int wmin,hmin;
- int w,h;
- int textw,texth;
- int font_idx;
- int bl,br,bt,bb,spx,spy;
- int border;
- int packed;
- /**
- * The number of widgets to layout horizontally when doing
- * a orientation_horizontal_vertical layout
- */
- int cols;
- enum flags flags;
- int flags2;
- void *instance;
- int (*set_attr)(void *, struct attr *);
- int (*get_attr)(void *, enum attr_type, struct attr *, struct attr_iter *);
- void (*remove_cb)(void *, struct callback *cb);
- struct callback *cb;
- struct attr on;
- struct attr off;
- int deflt;
- int is_on;
- int redraw;
- struct menu_data *menu_data;
- struct form *form;
- GList *children;
- struct widget *parent;
- struct scroll_buttons *scroll_buttons;
-};
-
-struct scroll_buttons {
- /**
- * Button box should not be displayed if button_box_hide is not zero.
- */
- int button_box_hide;
- /**
- * A container box that is the child of the table widget that contains+groups
- * the next and previous button.
- */
- struct widget * button_box;
- /**
- * A button widget to handle 'next page' requests
- */
- struct widget * next_button;
- /**
- * A button widget to handle 'previous page' requests.
- */
- struct widget * prev_button;
- /**
- * a pointer to the gui context.
- * This is needed by the free function to destroy the buttons.
- */
- struct gui_priv * this;
-};
-
-/**
- * @brief A structure to store information about a table.
- *
- * The table_data widget stores pointers to extra information needed by the
- * table widget.
- *
- * The table_data structure needs to be freed with data_free along with the widget.
- *
- */
-struct table_data
-{
- /**
- * A GList pointer into a widget->children list that indicates the row
- * currently being rendered at the top of the table.
- */
- GList * top_row;
- /**
- * A Glist pointer into a widget->children list that indicates the row
- * currently being rendered at the bottom of the table.
- */
- GList * bottom_row;
-
- struct scroll_buttons scroll_buttons;
-
-};
-
-/**
- * A data structure that holds information about a column that makes up a table.
- *
- *
- */
-struct table_column_desc
-{
-
- /**
- * The computed height of a cell in the table.
- */
- int height;
-
- /**
- * The computed width of a cell in the table.
- */
- int width;
-};
-/* prototypes */
-enum flags;
-struct graphics_image;
-struct gui_priv;
-struct point;
-struct table_data;
-struct widget;
-struct widget *gui_internal_label_font_new(struct gui_priv *this, const char *text, int font);
-struct widget *gui_internal_label_new(struct gui_priv *this, const char *text);
-struct widget *gui_internal_label_new_abbrev(struct gui_priv *this, const char *text, int maxwidth);
-struct widget *gui_internal_image_new(struct gui_priv *this, struct graphics_image *image);
-struct widget *gui_internal_text_font_new(struct gui_priv *this, const char *text, int font, enum flags flags);
-struct widget *gui_internal_text_new(struct gui_priv *this, const char *text, enum flags flags);
-struct widget *gui_internal_button_font_new_with_callback(struct gui_priv *this, const char *text, int font, struct graphics_image *image, enum flags flags, void (*func)(struct gui_priv *priv, struct widget *widget, void *data), void *data);
-struct widget *gui_internal_button_new_with_callback(struct gui_priv *this, const char *text, struct graphics_image *image, enum flags flags, void (*func)(struct gui_priv *priv, struct widget *widget, void *data), void *data);
-struct widget *gui_internal_button_new(struct gui_priv *this, const char *text, struct graphics_image *image, enum flags flags);
-struct widget *gui_internal_find_widget(struct widget *wi, struct point *p, int flags);
-void gui_internal_highlight_do(struct gui_priv *this, struct widget *found);
-void gui_internal_highlight(struct gui_priv *this);
-struct widget *gui_internal_box_new_with_label(struct gui_priv *this, enum flags flags, const char *label);
-struct widget *gui_internal_box_new(struct gui_priv *this, enum flags flags);
-void gui_internal_widget_reset_pack(struct gui_priv *this, struct widget *w);
-void gui_internal_widget_append(struct widget *parent, struct widget *child);
-void gui_internal_widget_prepend(struct widget *parent, struct widget *child);
-void gui_internal_widget_insert_sorted(struct widget *parent, struct widget *child, GCompareFunc func);
-void gui_internal_widget_children_destroy(struct gui_priv *this, struct widget *w);
-void gui_internal_widget_destroy(struct gui_priv *this, struct widget *w);
-void gui_internal_widget_render(struct gui_priv *this, struct widget *w);
-void gui_internal_widget_pack(struct gui_priv *this, struct widget *w);
-struct widget *gui_internal_button_label(struct gui_priv *this, const char *label, int mode);
-struct widget *gui_internal_widget_table_new(struct gui_priv *this, enum flags flags, int buttons);
-void gui_internal_widget_table_clear(struct gui_priv *this, struct widget *table);
-GList *gui_internal_widget_table_next_row(GList *row);
-GList *gui_internal_widget_table_prev_row(GList *row);
-GList *gui_internal_widget_table_first_row(GList *row);
-GList *gui_internal_widget_table_top_row(struct gui_priv *this, struct widget *table);
-GList *gui_internal_widget_table_set_top_row(struct gui_priv *this, struct widget * table, struct widget *row);
-struct widget *gui_internal_widget_table_row_new(struct gui_priv *this, enum flags flags);
-void gui_internal_table_pack(struct gui_priv *this, struct widget *w);
-void gui_internal_table_hide_rows(struct table_data *table_data);
-void gui_internal_table_render(struct gui_priv *this, struct widget *w);
-void gui_internal_table_button_next(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_table_button_prev(struct gui_priv *this, struct widget *wm, void *data);
-void gui_internal_table_data_free(void *p);
-/* end of prototypes */
diff --git a/navit/gui/qml/CMakeLists.txt b/navit/gui/qml/CMakeLists.txt
deleted file mode 100644
index 05456d9bd..000000000
--- a/navit/gui/qml/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-file(COPY "skins" DESTINATION ".")
-add_definitions( -DMODULE=gui_qml )
-include_directories(${CMAKE_CURRENT_BINARY_DIR})
-QT4_GENERATE_MOC(proxy.h ${CMAKE_CURRENT_BINARY_DIR}/proxy.moc)
-QT4_GENERATE_MOC(ngqpoint.h ${CMAKE_CURRENT_BINARY_DIR}/ngqpoint.moc)
-QT4_GENERATE_MOC(searchProxy.h ${CMAKE_CURRENT_BINARY_DIR}/searchProxy.moc)
-QT4_GENERATE_MOC(bookmarksProxy.h ${CMAKE_CURRENT_BINARY_DIR}/bookmarksProxy.moc)
-QT4_GENERATE_MOC(vehicleProxy.h ${CMAKE_CURRENT_BINARY_DIR}/vehicleProxy.moc)
-QT4_GENERATE_MOC(navitProxy.h ${CMAKE_CURRENT_BINARY_DIR}/navitProxy.moc)
-QT4_GENERATE_MOC(guiProxy.h ${CMAKE_CURRENT_BINARY_DIR}/guiProxy.moc)
-QT4_GENERATE_MOC(routeProxy.h ${CMAKE_CURRENT_BINARY_DIR}/routeProxy.moc)
-QT4_GENERATE_MOC(gui_qml.cpp ${CMAKE_CURRENT_BINARY_DIR}/gui_qml.moc)
-module_add_library(gui_qml gui_qml.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/proxy.moc
- ${CMAKE_CURRENT_BINARY_DIR}/ngqpoint.moc
- ${CMAKE_CURRENT_BINARY_DIR}/searchProxy.moc
- ${CMAKE_CURRENT_BINARY_DIR}/bookmarksProxy.moc
- ${CMAKE_CURRENT_BINARY_DIR}/vehicleProxy.moc
- ${CMAKE_CURRENT_BINARY_DIR}/navitProxy.moc
- ${CMAKE_CURRENT_BINARY_DIR}/guiProxy.moc
- ${CMAKE_CURRENT_BINARY_DIR}/routeProxy.moc
- ${CMAKE_CURRENT_BINARY_DIR}/gui_qml.moc
-)
diff --git a/navit/gui/qml/bookmarksProxy.h b/navit/gui/qml/bookmarksProxy.h
deleted file mode 100644
index 03cbcbc88..000000000
--- a/navit/gui/qml/bookmarksProxy.h
+++ /dev/null
@@ -1,171 +0,0 @@
-#ifndef NAVIT_GUI_QML_BOOKMARKSPROXY_H
-#define NAVIT_GUI_QML_BOOKMARKSPROXY_H
-
-class NGQProxyBookmarks : public NGQProxy {
- Q_OBJECT;
-
-public:
- NGQProxyBookmarks(struct gui_priv* object, QObject* parent) : NGQProxy(object,parent) { };
-
-public slots:
- void moveRoot() {
- struct attr mattr;
- navit_get_attr(this->object->nav, attr_bookmarks, &mattr, NULL);
- bookmarks_move_root(mattr.u.bookmarks);
- }
- void moveUp() {
- struct attr mattr;
- navit_get_attr(this->object->nav, attr_bookmarks, &mattr, NULL);
- bookmarks_move_up(mattr.u.bookmarks);
- }
- void moveDown(QString path) {
- struct attr mattr;
- navit_get_attr(this->object->nav, attr_bookmarks, &mattr, NULL);
- bookmarks_move_down(mattr.u.bookmarks,path.toLocal8Bit().constData());
- }
-
- QString getBookmarks() {
- struct attr attr,mattr;
- struct item* item;
- struct coord c;
- QDomDocument retDoc("bookmarks");
- QDomElement entries;
-
- entries=retDoc.createElement("bookmarks");
- retDoc.appendChild(entries);
-
- navit_get_attr(this->object->nav, attr_bookmarks, &mattr, NULL);
-
- if (bookmarks_item_cwd(mattr.u.bookmarks)) {
- QDomElement entry=retDoc.createElement("bookmark");
- entry.appendChild(this->_fieldValueHelper(retDoc,"label",".."));
- entry.appendChild(this->_fieldValueHelper(retDoc,"path",".."));
- entry.appendChild(this->_fieldValueHelper(retDoc,"type",QString(item_to_name(type_bookmark_folder))));
- entry.appendChild(this->_fieldValueHelper(retDoc,"distance",""));
- entry.appendChild(this->_fieldValueHelper(retDoc,"direction",""));
- entry.appendChild(this->_fieldValueHelper(retDoc,"coords",QString("%1 %2").arg(0).arg(0)));
- entries.appendChild(entry);
- }
-
- bookmarks_item_rewind(mattr.u.bookmarks);
- while ((item=bookmarks_get_item(mattr.u.bookmarks))) {
- QString label;
- QString path;
-
- if (item->type != type_bookmark && item->type != type_bookmark_folder) continue;
- if (!item_attr_get(item, attr_label, &attr)) continue;
- label=QString::fromLocal8Bit(attr.u.str);
- if (!item_attr_get(item, attr_path, &attr)) {
- path="";
- }
- path=QString::fromLocal8Bit(attr.u.str);
- item_coord_get(item, &c, 1);
- QDomElement entry=retDoc.createElement("bookmark");
- entry.appendChild(this->_fieldValueHelper(retDoc,"label",label));
- entry.appendChild(this->_fieldValueHelper(retDoc,"path",path));
- entry.appendChild(this->_fieldValueHelper(retDoc,"type",QString(item_to_name(item->type))));
- //entry.appendChild(this->_fieldValueHelper(retDoc,"distance",QString::number(idist/1000)));
- entry.appendChild(this->_fieldValueHelper(retDoc,"distance","100500"));
- //entry.appendChild(this->_fieldValueHelper(retDoc,"direction",dirbuf));
- entry.appendChild(this->_fieldValueHelper(retDoc,"direction","nahut"));
- entry.appendChild(this->_fieldValueHelper(retDoc,"coords",QString("%1 %2").arg(c.x).arg(c.y)));
- entries.appendChild(entry);
- }
-
- dbg(lvl_info,"%s\n",retDoc.toString().toLocal8Bit().constData());
- return retDoc.toString();
- }
- QString AddFolder(QString description) {
- struct attr attr;
- navit_get_attr(this->object->nav, attr_bookmarks, &attr, NULL);
- if (!bookmarks_add_bookmark(attr.u.bookmarks, NULL, description.toLocal8Bit().constData()) ) {
- return "Failed!";
- } else {
- return "Success";
- }
- }
- QString AddBookmark(QString description) {
- struct attr attr;
- navit_get_attr(this->object->nav, attr_bookmarks, &attr, NULL);
- if (!bookmarks_add_bookmark(attr.u.bookmarks, this->object->currentPoint->pc(), description.toLocal8Bit().constData()) ) {
- return "Failed!";
- } else {
- return "Success";
- }
- }
- QString Cut(QString description) {
- struct attr attr;
- navit_get_attr(this->object->nav, attr_bookmarks, &attr, NULL);
- if (!bookmarks_cut_bookmark(attr.u.bookmarks, description.toLocal8Bit().constData()) ) {
- return "Failed!";
- } else {
- return "Success";
- }
- }
- QString Copy(QString description) {
- struct attr attr;
- navit_get_attr(this->object->nav, attr_bookmarks, &attr, NULL);
- if (!bookmarks_copy_bookmark(attr.u.bookmarks, description.toLocal8Bit().constData()) ) {
- return "Failed!";
- } else {
- return "Success";
- }
- }
- QString Paste() {
- struct attr attr;
- navit_get_attr(this->object->nav, attr_bookmarks, &attr, NULL);
- if (!bookmarks_paste_bookmark(attr.u.bookmarks) ) {
- return "Failed!";
- } else {
- return "Success";
- }
- }
- QString Delete(QString bookmark) {
- struct attr attr;
- navit_get_attr(this->object->nav, attr_bookmarks, &attr, NULL);
- if (!bookmarks_delete_bookmark(attr.u.bookmarks, bookmark.toLocal8Bit().constData()) ) {
- return "Failed!";
- } else {
- return "Success";
- }
- }
- void setPoint(QString bookmark) {
- struct attr attr, mattr;
- struct item* item;
- struct coord c;
-
- navit_get_attr(this->object->nav, attr_bookmarks, &mattr, NULL);
-
- bookmarks_item_rewind(mattr.u.bookmarks);
- while ((item=bookmarks_get_item(mattr.u.bookmarks))) {
- QString label;
-
- if (item->type != type_bookmark) continue;
- if (!item_attr_get(item, attr_label, &attr)) continue;
-
- label=QString::fromLocal8Bit(attr.u.str);
- dbg(lvl_debug,"Bookmark is %s\n",bookmark.toStdString().c_str());
- if (label.compare(bookmark)) continue;
- item_coord_get(item, &c, 1);
- if (this->object->currentPoint!=NULL) {
- delete this->object->currentPoint;
- }
- this->object->currentPoint=new NGQPoint(this->object,&c,bookmark,Bookmark,NULL);
- this->object->guiWidget->rootContext()->setContextProperty("point",this->object->currentPoint);
- }
-
- return;
- }
-
-protected:
- int getAttrFunc(enum attr_type type, struct attr* attr, struct attr_iter* iter) { return 0; }
- int setAttrFunc(struct attr* attr) {return 0; }
- struct attr_iter* getIterFunc() { return NULL; };
- void dropIterFunc(struct attr_iter* iter) { return; };
-
-private:
-};
-
-#include "bookmarksProxy.moc"
-
-#endif /* NAVIT_GUI_QML_BOOKMARKSPROXY_H */
diff --git a/navit/gui/qml/guiProxy.h b/navit/gui/qml/guiProxy.h
deleted file mode 100644
index 7648eb5b3..000000000
--- a/navit/gui/qml/guiProxy.h
+++ /dev/null
@@ -1,152 +0,0 @@
-#ifndef NAVIT_GUI_QML_GUIPROXY_H
-#define NAVIT_GUI_QML_GUIPROXY_H
-
-class NGQProxyGui : public NGQProxy {
- Q_OBJECT;
-
- Q_PROPERTY(QString iconPath READ iconPath CONSTANT);
-
- Q_PROPERTY(QString commandFunction READ commandFunction CONSTANT);
-
- Q_PROPERTY(QString localeName READ localeName CONSTANT);
- Q_PROPERTY(QString langName READ langName CONSTANT);
- Q_PROPERTY(QString ctryName READ ctryName CONSTANT);
-
- Q_PROPERTY(int width READ width WRITE setWidth NOTIFY widthSignal STORED false);
- Q_PROPERTY(int height READ height WRITE setHeight NOTIFY heightSignal STORED false);
-
-private:
- QStringList returnPath;
-
-public:
- NGQProxyGui(struct gui_priv* this_,QObject *parent) : NGQProxy(this_, parent) {
- this->source=QString("");
- }
-
- void setNewPoint(struct point* p,NGQPointTypes type) {
- if (this->object->currentPoint!=NULL) {
- delete this->object->currentPoint;
- }
- this->object->currentPoint = new NGQPoint(this->object,p,type,NULL);
- this->object->guiWidget->rootContext()->setContextProperty("point",this->object->currentPoint);
- }
- void setNewPoint(struct coord* c,NGQPointTypes type) {
- if (this->object->currentPoint!=NULL) {
- delete this->object->currentPoint;
- }
- this->object->currentPoint = new NGQPoint(this->object,c,type,NULL);
- this->object->guiWidget->rootContext()->setContextProperty("point",this->object->currentPoint);
- }
- void setNewPoint(struct pcoord* pc,NGQPointTypes type) {
- if (this->object->currentPoint!=NULL) {
- delete this->object->currentPoint;
- }
- this->object->currentPoint = new NGQPoint(this->object,pc,type,NULL);
- this->object->guiWidget->rootContext()->setContextProperty("point",this->object->currentPoint);
- }
- void processCommand(QString function) {
- //QDeclarativeExpression commandJS(this->object->guiWidget->rootContext(),QString(),qobject_cast<QObject*>(this->object->guiWidget->rootObject()));
- //commandJS.setSourceLocation("command.js",0);
- //this->function=function;
- //commandJS.eval(qobject_cast<QObject*>(this->object->guiWidget->rootObject()));
- }
-signals:
- void widthSignal(int);
- void heightSignal(int);
-public slots:
- void pushPage(QString page) {
- returnPath.push_front(page);
- }
- QString popPage() {
- if (!returnPath.empty()) {
- if (returnPath.length()>1) {
- returnPath.pop_front();
- }
- return returnPath.first();
- }
- return QString();
- }
- int lengthPage() {
- return returnPath.length();
- }
- void backToMap() {
- if (this->object->graphicsWidget) {
- this->object->graphicsWidget->setFocus(Qt::ActiveWindowFocusReason);
- this->object->switcherWidget->setCurrentWidget(this->object->graphicsWidget);
- this->object->graphicsWidget->show();
- }
- }
- void switchToMenu(struct point* p) {
- if (!this->object->lazy) {
- this->returnPath.clear();
- this->object->guiWidget->setSource(QUrl::fromLocalFile(QString(this->object->source)+"/"+this->object->skin+"/main.qml"));
- }
- this->setNewPoint(p,MapPoint);
- this->object->guiWidget->setFocus(Qt::ActiveWindowFocusReason);
- this->object->switcherWidget->setCurrentWidget(this->object->guiWidget);
-
- }
- //Properties
- QString iconPath() {
- return QString(this->object->icon_src);
- }
- int width() {
- return this->object->w;
- }
- void setWidth(int w) {
- this->object->w=w;
- this->widthSignal(w);
- }
- int height() {
- return this->object->h;
- }
- void setHeight(int h) {
- this->object->h=h;
- this->heightSignal(h);
- }
- QString commandFunction() {
- return this->function;
- }
-
- //Locale properties
- QString localeName() {
- return QString()+"LANG="+getenv("LANG");
- }
- QString langName() {
-#ifdef HAVE_API_WIN32_BASE
- char str[32];
-
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, str, sizeof(str));
- return QString()+"LOCALE_SABBREVLANGNAME="+str;
-#else
- return QString();
-#endif
- }
- QString ctryName() {
-#ifdef HAVE_API_WIN32_BASE
- char str[32];
-
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, str, sizeof(str));
- return QString()+"LOCALE_SABBREVCTRYNAME="+str;
-#else
- return QString();
-#endif
- }
-protected:
- int getAttrFunc(enum attr_type type, struct attr* attr, struct attr_iter* iter) { return gui_get_attr(this->object->gui, type, attr, iter); }
- int setAttrFunc(struct attr* attr) {return gui_set_attr(this->object->gui,attr); }
-private:
- QString source;
- QString function;
-};
-
-void __setNewPoint(struct gui_priv* this_,struct coord* c, NGQPointTypes type) {
- this_->guiProxy->setNewPoint(c,type);
-}
-void __setNewPoint(struct gui_priv* this_,struct pcoord* pc, NGQPointTypes type) {
- this_->guiProxy->setNewPoint(pc,type);
-}
-
-#include "guiProxy.moc"
-
-#endif /* NAVIT_GUI_QML_GUIPROXY_H */
diff --git a/navit/gui/qml/gui_qml.cpp b/navit/gui/qml/gui_qml.cpp
deleted file mode 100644
index 3efc719dd..000000000
--- a/navit/gui/qml/gui_qml.cpp
+++ /dev/null
@@ -1,477 +0,0 @@
-#include <glib.h>
-#include <QtCore>
-#include <QtGui>
-#include <QtDeclarative>
-#include <QtXml>
-#include "config.h"
-#ifdef HAVE_API_WIN32_BASE
-#include <windows.h>
-#endif
-#include "plugin.h"
-#include "item.h"
-#include "attr.h"
-#include "xmlconfig.h"
-#include "color.h"
-#include "gui.h"
-#include "callback.h"
-#include "debug.h"
-#include "navit.h"
-#include "point.h"
-#include "graphics.h"
-#include "event.h"
-#include "map.h"
-#include "coord.h"
-#include "vehicle.h"
-#include "coord.h"
-#include "transform.h"
-#include "mapset.h"
-#include "route.h"
-#include "country.h"
-#include "track.h"
-#include "search.h"
-#include "bookmarks.h"
-#include "command.h"
-#include "keys.h"
-
-#include "layout.h"
-
-struct gui_priv {
- struct navit *nav;
- struct gui *gui;
- struct attr self;
- struct vehicle* currVehicle;
-
- //configuration items
- int fullscreen;
- int menu_on_map_click;
- int signal_on_map_click;
- int w;
- int h;
- char *source;
- char *skin;
- char* icon_src;
- int radius;
- int pitch;
- int lazy; //When TRUE - menu state will not be changed during map/menu switches, FALSE - menu will be always reset to main.qml
-
- //Interface stuff
- struct callback_list *cbl;
- QCoreApplication *app;
- struct window *win;
- struct graphics *gra;
- QWidget *mainWindow;
- QWidget *graphicsWidget;
- QDeclarativeView *guiWidget;
- QDeclarativeView *prevGuiWidget;
- QStackedLayout *switcherWidget;
- struct callback *button_cb;
- struct callback *motion_cb;
- struct callback *resize_cb;
- struct callback *keypress_cb;
- struct callback *window_closed_cb;
-
- //Proxy objects
- class NGQProxyGui* guiProxy;
- class NGQProxyNavit* navitProxy;
- class NGQProxyVehicle* vehicleProxy;
- class NGQProxySearch* searchProxy;
- class NGQProxyBookmarks* bookmarksProxy;
- class NGQProxyRoute* routeProxy;
- class NGQPoint* currentPoint;
-};
-
-#include "proxy.h"
-#include "ngqpoint.h"
-#include "searchProxy.h"
-#include "routeProxy.h"
-#include "bookmarksProxy.h"
-#include "vehicleProxy.h"
-#include "navitProxy.h"
-#include "guiProxy.h"
-
-//Main window class for resizeEvent handling
-#ifdef Q_WS_X11
-#include <QX11EmbedWidget>
-class NGQMainWindow : public QX11EmbedWidget
-{
-#else
-class NGQMainWindow : public QWidget
-{
-#endif /* Q_WS_X11 */
-public:
-
-#ifdef Q_WS_X11
- NGQMainWindow(struct gui_priv* this_,QWidget *parent) : QX11EmbedWidget(parent) {
-#else
- NGQMainWindow(struct gui_priv* this_,QWidget *parent) : QWidget(parent) {
-#endif /* Q_WS_X11 */
- this->object=this_;
- }
-protected:
- void resizeEvent(QResizeEvent *) {
- this->object->w=this->width();
- this->object->h=this->height();
- //YES, i KNOW about signal/slot thing
- this->object->guiProxy->setWidth(this->width());
- this->object->guiProxy->setHeight(this->height());
- }
- void closeEvent(QCloseEvent* event) {
- this->object->graphicsWidget->close();
- }
-private:
- struct gui_priv* object;
-};
-
-//Meta object
-#include "gui_qml.moc"
-
-static void gui_qml_dbus_signal(struct gui_priv *this_, struct point *p)
-{
- struct displaylist_handle *dlh;
- struct displaylist *display;
- struct displayitem *di;
-
- display=navit_get_displaylist(this_->nav);
- dlh=graphics_displaylist_open(display);
- while ((di=graphics_displaylist_next(dlh))) {
- struct item *item=graphics_displayitem_get_item(di);
- if (item_is_point(*item) && graphics_displayitem_get_displayed(di) &&
- graphics_displayitem_within_dist(display, di, p, 10)) {
- struct map_rect *mr=map_rect_new(item->map, NULL);
- struct item *itemo=map_rect_get_item_byid(mr, item->id_hi, item->id_lo);
- struct attr attr;
- if (item_attr_get(itemo, attr_data, &attr)) {
- struct attr cb,*attr_list[2];
- int valid=0;
- attr.type=attr_data;
- attr_list[0]=&attr;
- attr_list[1]=NULL;
- if (navit_get_attr(this_->nav, attr_callback_list, &cb, NULL))
- callback_list_call_attr_4(cb.u.callback_list, attr_command, "dbus_send_signal", attr_list, NULL, &valid);
- }
- map_rect_destroy(mr);
- }
- }
- graphics_displaylist_close(dlh);
-}
-
-static void gui_qml_button(void *data, int pressed, int button, struct point *p)
-{
- struct gui_priv *this_=(struct gui_priv*)data;
-
- // check whether the position of the mouse changed during press/release OR if it is the scrollwheel
- if (!navit_handle_button(this_->nav, pressed, button, p, NULL)) {
- dbg(lvl_debug,"navit has handled button\n");
- return;
- }
-
- dbg(lvl_debug,"enter %d %d\n", pressed, button);
- if (this_->signal_on_map_click) {
- gui_qml_dbus_signal(this_, p);
- return;
- }
-
- if ( button == 1 && this_->menu_on_map_click ) {
- this_->guiProxy->switchToMenu(p);
- }
-}
-
-static void gui_qml_motion(void *data, struct point *p)
-{
- struct gui_priv *this_=(struct gui_priv*)data;
- navit_handle_motion(this_->nav, p);
- return;
-}
-static void gui_qml_resize(void *data, int w, int h)
-{
- struct gui_priv *this_=(struct gui_priv*)data;
- navit_handle_resize(this_->nav, w, h);
-}
-
-static void gui_qml_keypress(void *data, char *key)
-{
- struct gui_priv *this_=(struct gui_priv*) data;
- int w,h;
- struct point p;
- transform_get_size(navit_get_trans(this_->nav), &w, &h);
- switch (*key) {
- case NAVIT_KEY_UP:
- p.x=w/2;
- p.y=0;
- navit_set_center_screen(this_->nav, &p, 1);
- break;
- case NAVIT_KEY_DOWN:
- p.x=w/2;
- p.y=h;
- navit_set_center_screen(this_->nav, &p, 1);
- break;
- case NAVIT_KEY_LEFT:
- p.x=0;
- p.y=h/2;
- navit_set_center_screen(this_->nav, &p, 1);
- break;
- case NAVIT_KEY_RIGHT:
- p.x=w;
- p.y=h/2;
- navit_set_center_screen(this_->nav, &p, 1);
- break;
- case NAVIT_KEY_ZOOM_IN:
- navit_zoom_in(this_->nav, 2, NULL);
- break;
- case NAVIT_KEY_ZOOM_OUT:
- navit_zoom_out(this_->nav, 2, NULL);
- break;
- case NAVIT_KEY_RETURN:
- case NAVIT_KEY_MENU:
- p.x=w/2;
- p.y=h/2;
- this_->guiProxy->switchToMenu(&p);
- break;
- }
- return;
-}
-
-static void
-gui_qml_window_closed(struct gui_priv *data)
-{
- struct gui_priv *this_=(struct gui_priv*) data;
- this_->navitProxy->quit();
-}
-//GUI interface calls
-static int argc=1;
-static char *argv[]={(char *)"navit",NULL};
-
-static int gui_qml_set_graphics(struct gui_priv *this_, struct graphics *gra)
-{
- QString xid;
- NGQMainWindow* _mainWindow;
- bool ok;
-
- this_->gra=gra;
-
- //Check if we are already in Qt environment
- if (QApplication::instance()==NULL) {
- //Not yet
- this_->app=new QApplication(argc,argv);
- } else {
- this_->app=QApplication::instance();
- }
-
- //Link graphics events
- this_->button_cb=callback_new_attr_1(callback_cast(gui_qml_button), attr_button, this_);
- graphics_add_callback(gra, this_->button_cb);
- this_->motion_cb=callback_new_attr_1(callback_cast(gui_qml_motion), attr_motion, this_);
- graphics_add_callback(gra, this_->motion_cb);
- this_->resize_cb=callback_new_attr_1(callback_cast(gui_qml_resize), attr_resize, this_);
- graphics_add_callback(gra, this_->resize_cb);
- this_->keypress_cb=callback_new_attr_1(callback_cast(gui_qml_keypress), attr_keypress, this_);
- graphics_add_callback(gra, this_->keypress_cb);
- this_->window_closed_cb=callback_new_attr_1(callback_cast(gui_qml_window_closed), attr_window_closed, this_);
- graphics_add_callback(gra, this_->window_closed_cb);
-
-
- //Create main window
- this_->switcherWidget = new QStackedLayout();
- _mainWindow = new NGQMainWindow(this_, NULL);
-#ifdef Q_WS_X11
- xid=getenv("NAVIT_XID");
- if (xid.length()>0) {
- _mainWindow->embedInto(xid.toULong(&ok,0));
- }else{
- dbg(lvl_error, "\nFATAL: Environment variable NAVIT_XID not set.\n"
- " Please set NAVIT_XID to the window ID of the window to embed into.\n");
- exit(1);
- }
-#endif /* Q_WS_X11 */
- this_->mainWindow=_mainWindow;
- if ( this_->w && this_->h ) {
- this_->mainWindow->resize(this_->w,this_->h);
- }
- if ( this_->fullscreen ) {
- this_->mainWindow->showFullScreen();
- }
-
- this_->mainWindow->setLayout(this_->switcherWidget);
-
- //Create proxy object and bind them to gui widget
- this_->guiProxy = new NGQProxyGui(this_,this_->mainWindow);
- this_->navitProxy = new NGQProxyNavit(this_,this_->mainWindow);
- this_->vehicleProxy = new NGQProxyVehicle(this_,this_->mainWindow);
- this_->searchProxy = new NGQProxySearch(this_,this_->mainWindow);
- this_->bookmarksProxy = new NGQProxyBookmarks(this_,this_->mainWindow);
- this_->routeProxy = new NGQProxyRoute(this_,this_->mainWindow);
-
- //Check, if we have compatible graphics
- this_->graphicsWidget = (QWidget*)graphics_get_data(gra,"qt_widget");
- if (this_->graphicsWidget == NULL ) {
- this_->graphicsWidget = new QLabel(QString("Sorry, current graphics type is incompatible with this gui."));
- }
- this_->switcherWidget->addWidget(this_->graphicsWidget);
-
- //Instantiate qml components
- this_->guiWidget = new QDeclarativeView(NULL);
- this_->guiWidget->setResizeMode(QDeclarativeView::SizeRootObjectToView);
-
- this_->guiWidget->rootContext()->setContextProperty("gui",this_->guiProxy);
- this_->guiWidget->rootContext()->setContextProperty("navit",this_->navitProxy);
- this_->guiWidget->rootContext()->setContextProperty("vehicle",this_->vehicleProxy);
- this_->guiWidget->rootContext()->setContextProperty("search",this_->searchProxy);
- this_->guiWidget->rootContext()->setContextProperty("bookmarks",this_->bookmarksProxy);
- this_->guiWidget->rootContext()->setContextProperty("route",this_->routeProxy);
- this_->guiWidget->rootContext()->setContextProperty("point",this_->currentPoint);
-
- QString mainQml = QString(this_->source)+"/"+this_->skin+"/main.qml";
- if (!QFile(mainQml).exists()){
- dbg(lvl_error, "FATAL: QML file %s not found. Navit is not installed correctly.\n", mainQml.toAscii().constData());
- exit(1);
- }
- this_->guiWidget->setSource(QUrl::fromLocalFile(mainQml));
- this_->switcherWidget->addWidget(this_->guiWidget);
-
- //Switch to graphics
- navit_draw(this_->nav);
- this_->switcherWidget->setCurrentWidget(this_->graphicsWidget);
-
- this_->mainWindow->show();
-
- return 0;
-}
-
-static int
-gui_qml_get_attr(struct gui_priv *this_, enum attr_type type, struct attr *attr)
-{
- switch (type) {
- case attr_fullscreen:
- attr->u.num=this_->fullscreen;
- break;
- case attr_skin:
- attr->u.str=this_->skin;
- break;
- case attr_pitch:
- attr->u.num=this_->pitch;
- break;
- case attr_radius:
- attr->u.num=this_->radius;
- break;
- default:
- return 0;
- }
- attr->type=type;
- return 1;
-}
-
-static int
-gui_qml_set_attr(struct gui_priv *this_, struct attr *attr)
-{
- switch (attr->type) {
- case attr_fullscreen:
- if (!(this_->fullscreen) && (attr->u.num)) {
- this_->mainWindow->showFullScreen();
- }
- if ((this_->fullscreen) && !(attr->u.num)) {
- this_->mainWindow->showNormal();
- }
- this_->fullscreen=attr->u.num;
- return 1;
- case attr_pitch:
- this_->pitch=attr->u.num;
- return 1;
- case attr_radius:
- this_->radius=attr->u.num;
- return 1;
- default:
- dbg(lvl_error,"unknown attr: %s\n",attr_to_name(attr->type));
- return 1;
- }
-}
-
-struct gui_methods gui_qml_methods = {
- NULL,
- NULL,
- gui_qml_set_graphics,
- NULL,
- NULL,
- NULL,
- NULL,
- gui_qml_get_attr,
- NULL,
- gui_qml_set_attr,
-};
-
-static void
-gui_qml_command(struct gui_priv *this_, char *function, struct attr **in, struct attr ***out, int *valid) {
- this_->guiProxy->processCommand(function);
-}
-
-static struct command_table commands[] = {
- {"*",command_cast(gui_qml_command)},
-};
-
-static struct gui_priv * gui_qml_new(struct navit *nav, struct gui_methods *meth, struct attr **attrs, struct gui *gui)
-{
- struct gui_priv *this_;
- struct attr *attr;
- *meth=gui_qml_methods;
- this_=g_new0(struct gui_priv, 1);
-
- this_->nav=nav;
- this_->gui=gui;
-
- this_->self.type=attr_gui;
- this_->self.u.gui=gui;
-
- navit_ignore_graphics_events(this_->nav, 1);
-
- this_->fullscreen = 0; //NO by default
- if( (attr=attr_search(attrs,NULL,attr_fullscreen)))
- this_->fullscreen=attr->u.num;
- this_->menu_on_map_click = 1; //YES by default;
- if( (attr=attr_search(attrs,NULL,attr_menu_on_map_click)))
- this_->menu_on_map_click=attr->u.num;
- this_->signal_on_map_click = 0; //YES by default;
- if( (attr=attr_search(attrs,NULL,attr_signal_on_map_click)))
- this_->signal_on_map_click=attr->u.num;
- this_->radius = 10; //Default value
- if( (attr=attr_search(attrs,NULL,attr_radius)))
- this_->radius=attr->u.num;
- this_->pitch = 20; //Default value
- if( (attr=attr_search(attrs,NULL,attr_pitch)))
- this_->pitch=attr->u.num;
- this_->lazy = 1; //YES by default
- if( (attr=attr_search(attrs,NULL,attr_lazy)))
- this_->lazy=attr->u.num;
- this_->w=800; //Default value
- if( (attr=attr_search(attrs,NULL,attr_width)))
- this_->w=attr->u.num;
- this_->h=600; //Default value
- if( (attr=attr_search(attrs,NULL,attr_height)))
- this_->h=attr->u.num;
- if( (attr=attr_search(attrs,NULL,attr_source)))
- this_->source=attr->u.str;
- if( (attr=attr_search(attrs,NULL,attr_skin)))
- this_->skin=attr->u.str;
- if( (attr=attr_search(attrs,NULL,attr_icon_src)))
- this_->icon_src=attr->u.str;
-
- if ( this_->source==NULL ) {
- this_->source=g_strjoin(NULL,getenv("NAVIT_SHAREDIR"),"/gui/qml/skins",NULL);
- }
- if ( this_->skin==NULL ) {
- this_->skin=g_strdup("navit");
- }
- if ( this_->icon_src==NULL ) {
- this_->icon_src=g_strjoin(NULL,getenv("NAVIT_SHAREDIR"),"/icons/",NULL);
- }
-
- if ((attr=attr_search(attrs, NULL, attr_callback_list))) {
- command_add_table(attr->u.callback_list, commands, sizeof(commands)/sizeof(struct command_table), this_);
- }
-
- this_->cbl=callback_list_new();
-
- return this_;
-}
-
-void plugin_init(void) {
- plugin_register_category_gui("qml",gui_qml_new);
-}
diff --git a/navit/gui/qml/navitProxy.h b/navit/gui/qml/navitProxy.h
deleted file mode 100644
index 423863b0e..000000000
--- a/navit/gui/qml/navitProxy.h
+++ /dev/null
@@ -1,150 +0,0 @@
-#ifndef NAVIT_GUI_QML_NAVIT_H
-#define NAVIT_GUI_QML_NAVIT_H
-
-void __setNewPoint(struct gui_priv* this_,struct coord* c, NGQPointTypes type);
-
-class NGQProxyNavit : public NGQProxy {
- Q_OBJECT;
-
-public:
- NGQProxyNavit(struct gui_priv* object, QObject* parent) : NGQProxy(object,parent) { };
-
-public slots:
- void quit() {
- struct attr navit;
- navit.type=attr_navit;
- navit.u.navit=this->object->nav;
- navit_destroy(navit.u.navit);
- event_main_loop_quit();
- }
- void setObjectByName(const QString& attr_name,const QString& attr_value) {
- if (attr_name=="layout") {
- navit_set_layout_by_name(this->object->nav,attr_value.toStdString().c_str());
- }
- if (attr_name=="vehicle") {
- navit_set_vehicle_by_name(this->object->nav,attr_value.toStdString().c_str());
- }
- return;
- }
- QString getAttrList(const QString &attr_name) {
- struct attr attr;
- struct attr_iter *iter;
- int counter=0;
- QString currentValue;
- QDomDocument retDoc;
- QDomElement entries;
-
- entries=retDoc.createElement("attributes");
- retDoc.appendChild(entries);
-
- //Find current value
- getAttrFunc(attr_from_name(attr_name.toStdString().c_str()), &attr, NULL) ;
- if (attr.type==attr_layout) {
- currentValue=attr.u.layout->name;
- }
-
- //Fill da list
- iter=getIterFunc();
- if (iter == NULL) {
- return QString();
- }
-
- while (getAttrFunc(attr_from_name(attr_name.toStdString().c_str()), &attr, iter) ) {
- QStandardItem* curItem=new QStandardItem();
- //Listed attributes are usualy have very complex structure
- if (attr.type==attr_layout) {
- curItem->setData(QVariant(counter),NGQStandardItemModel::ItemId);
- curItem->setData(QVariant(attr.u.layout->name),NGQStandardItemModel::ItemName);
- curItem->setData(QVariant(attr.u.layout->name),NGQStandardItemModel::ItemValue);
- if (currentValue==attr.u.layout->name) {
- this->_itemId=counter;
- }
- }
- if (attr.type==attr_vehicle) {
- QStandardItem* curItem=new QStandardItem();
- QDomElement entry=retDoc.createElement("vehicle");
- entries.appendChild(entry);
-
- this->object->currVehicle=attr.u.vehicle;
- curItem->setData(QVariant(this->object->vehicleProxy->getAttr("name")),NGQStandardItemModel::ItemName);
- entry.appendChild(this->_fieldValueHelper(retDoc,QString("id"), QString::number(counter)));
- entry.appendChild(this->_fieldValueHelper(retDoc,QString("name"), QString(this->object->vehicleProxy->getAttr("name"))));
-
- //Detecting current vehicle
- struct attr vehicle_attr;
- navit_get_attr(this->object->nav, attr_vehicle, &vehicle_attr, NULL);
- if (vehicle_attr.u.vehicle==attr.u.vehicle) {
- this->_itemId=counter;
- }
- }
- counter++;
- }
-
- dropIterFunc(iter);
-
- dbg(lvl_debug,QString::number(_itemId).toStdString().c_str());
-
- return retDoc.toString();
- }
- QString getDestination() {
- struct attr attr;
- struct coord c;
-
- if (getAttrFunc(attr_destination, &attr, NULL) ) {
- c.x=attr.u.pcoord->x;
- c.y=attr.u.pcoord->y;
- __setNewPoint(this->object,&c,Destination);
- return this->object->currentPoint->pointName();
- }
- return QString();
- }
- void setDestination() {
- navit_set_destination(this->object->nav,this->object->currentPoint->pc(),this->object->currentPoint->coordString().toStdString().c_str(),1);
- }
- void stopNavigation() {
- navit_set_destination(this->object->nav,NULL,NULL,0);
- }
- QString getPosition() {
- struct attr attr;
- struct pcoord pc;
- struct coord c;
- struct transformation *trans;
-
- trans=navit_get_trans(this->object->nav);
-
- getAttrFunc(attr_vehicle, &attr, NULL);
- this->object->currVehicle=attr.u.vehicle;
-
- if (vehicle_get_attr(this->object->currVehicle, attr_position_coord_geo, &attr, NULL)) {
- pc.pro=transform_get_projection(trans);
- transform_from_geo(pc.pro, attr.u.coord_geo, &c);
- __setNewPoint(this->object,&c,Position);
- return this->object->currentPoint->pointName();
- }
- return QString();
- }
- void setPosition() {
- navit_set_position(this->object->nav,this->object->currentPoint->pc());
- }
- void setCenter() {
- navit_set_center(this->object->nav,this->object->currentPoint->pc(),1);
- }
- void command(QString command) {
- struct attr navit;
- navit.type=attr_navit;
- navit.u.navit=this->object->nav;
- command_evaluate(&navit,command.toLocal8Bit().constData());
- }
-protected:
- int getAttrFunc(enum attr_type type, struct attr* attr, struct attr_iter* iter) { return navit_get_attr(this->object->nav, type, attr, iter); }
- int setAttrFunc(struct attr* attr) {return navit_set_attr(this->object->nav,attr); }
- struct attr_iter* getIterFunc() { return navit_attr_iter_new(); };
- void dropIterFunc(struct attr_iter* iter) { navit_attr_iter_destroy(iter); };
-
-private:
-
-};
-
-#include "navitProxy.moc"
-
-#endif /* NAVIT_GUI_QML_NAVITPROXY_H */
diff --git a/navit/gui/qml/ngqpoint.h b/navit/gui/qml/ngqpoint.h
deleted file mode 100644
index 05142e5bf..000000000
--- a/navit/gui/qml/ngqpoint.h
+++ /dev/null
@@ -1,382 +0,0 @@
-#ifndef NAVIT_GUI_QML_POINT_H
-#define NAVIT_GUI_QML_POINT_H
-
-static void
-get_direction(char *buffer, int angle, int mode)
-{
- angle=angle%360;
- switch (mode) {
- case 0:
- sprintf(buffer,"%d",angle);
- break;
- case 1:
- if (angle < 69 || angle > 291)
- *buffer++='N';
- if (angle > 111 && angle < 249)
- *buffer++='S';
- if (angle > 22 && angle < 158)
- *buffer++='E';
- if (angle > 202 && angle < 338)
- *buffer++='W';
- *buffer++='\0';
- break;
- case 2:
- angle=(angle+15)/30;
- if (! angle)
- angle=12;
- sprintf(buffer,"%d H", angle);
- break;
- }
-}
-
-enum NGQPointTypes {MapPoint,Bookmark,Position,Destination,PointOfInterest};
-
-class NGQPoint : public QObject {
- Q_OBJECT;
-
- Q_PROPERTY(QString coordString READ coordString CONSTANT);
- Q_PROPERTY(QString pointName READ pointName CONSTANT);
- Q_PROPERTY(QString pointType READ pointType CONSTANT);
- Q_PROPERTY(QUrl pointUrl READ pointUrl CONSTANT);
-public:
- NGQPoint(struct gui_priv* this_,struct point* p,NGQPointTypes type=MapPoint,QObject *parent=NULL) : QObject(parent) {
- this->object=this_;
- this->item.map=0;
- transform_reverse(navit_get_trans(this->object->nav), p, &co);
- transform_to_geo(transform_get_projection(navit_get_trans(this->object->nav)), &co, &g);
- c.pro = transform_get_projection(navit_get_trans(this->object->nav));
- c.x = co.x;
- c.y = co.y;
- this->p.x=p->x;
- this->p.y=p->y;
- this->type=type;
-
- this->name=this->_coordName();
- this->coord=this->_coordString();
- }
- NGQPoint(struct gui_priv* this_,struct coord* c,NGQPointTypes type=Bookmark,QObject *parent=NULL) : QObject(parent) {
- this->object=this_;
- this->item.map=0;
- this->co.x=c->x;
- this->co.y=c->y;
- transform_to_geo(transform_get_projection(navit_get_trans(this->object->nav)), &co, &g);
- this->c.pro = transform_get_projection(navit_get_trans(this->object->nav));
- this->c.x = c->x;
- this->c.y = c->y;
- this->type=type;
-
- this->name=this->_coordName();
- this->coord=this->_coordString();
- }
-
- NGQPoint(struct gui_priv* this_,struct pcoord* pc,NGQPointTypes type=Bookmark,QObject *parent=NULL) : QObject(parent) {
- this->object=this_;
- this->item.map=0;
- this->c.pro = pc->pro;
- this->c.x = pc->x;
- this->c.y = pc->y;
- this->co.x=pc->x;
- this->co.y=pc->y;
- transform_to_geo(this->c.pro, &co, &g);
- this->type=type;
-
- this->name=this->_coordName();
- this->coord=this->_coordString();
- }
-
- NGQPoint(struct gui_priv* this_,struct coord* c,QString name,NGQPointTypes type=Bookmark,QObject *parent=NULL) : QObject(parent) {
- this->object=this_;
- this->item.map=0;
- this->co.x=c->x;
- this->co.y=c->y;
- transform_to_geo(transform_get_projection(navit_get_trans(this->object->nav)), &co, &g);
- this->c.pro = transform_get_projection(navit_get_trans(this->object->nav));
- this->c.x = c->x;
- this->c.y = c->y;
- this->type=type;
-
- this->name=name;
- this->coord=this->_coordString();
- }
-
- struct pcoord* pc() { return &c; }
-public slots:
- void setNewPoint(QString coord,NGQPointTypes type=PointOfInterest) {
- this->item.map=0;
- QStringList coordSplit=coord.split(" ",QString::SkipEmptyParts);
- this->co.x=coordSplit[0].toInt();
- this->co.y=coordSplit[1].toInt();
- transform_to_geo(transform_get_projection(navit_get_trans(this->object->nav)), &co, &g);
- this->c.pro = transform_get_projection(navit_get_trans(this->object->nav));
- this->c.x = coordSplit[0].toInt();
- this->c.y = coordSplit[1].toInt();
- this->type=type;
-
- this->name=this->_coordName();
- this->coord=this->_coordString();
- }
- QString pointName() {
- return this->name;
- }
- QString coordString() {
- return this->coord;
- }
- QString pointType() {
- switch(this->type) {
- case MapPoint:
- return QString("MapPoint");
- case Bookmark:
- return QString("Bookmark");
- case Position:
- return QString("Position");
- case Destination:
- return QString("Destination");
- case PointOfInterest:
- return QString("PointOfInterest");
- }
- return QString("");
- }
- QUrl pointUrl() {
- return this->url;
- }
- QString getInformation() {
- struct map_rect *mr;
- struct item* item;
- struct attr attr;
-
- QDomDocument retDoc;
- QDomElement entries;
- entries=retDoc.createElement("point");
- retDoc.appendChild(entries);
-
- if (this->type!=Bookmark and this->item.map) {
- mr=map_rect_new(this->item.map, NULL);
- item = map_rect_get_item_byid(mr, this->item.id_hi, this->item.id_lo);
- if (item) {
- while(item_attr_get(item, attr_any, &attr)) {
- entries.appendChild(this->_fieldValueHelper(retDoc,QString::fromLocal8Bit(attr_to_name(attr.type)), QString::fromLocal8Bit(attr_to_text(&attr,this->item.map, 1))));
- }
- }
- map_rect_destroy(mr);
- }
- return retDoc.toString();
- }
- QString getPOI(const QString &attr_name) {
- struct attr attr;
- struct item* item;
- struct mapset_handle *h;
- struct map_selection *sel,*selm;
- struct map_rect *mr;
- struct map *m;
- int idist,dist;
- struct coord center;
- QDomDocument retDoc(attr_name);
- QDomElement entries;
- char dirbuf[32];
-
- if (!gui_get_attr(this->object->gui,attr_radius,&attr,NULL)) {
- return QString();
- }
-
- dist=attr.u.num*1000;
-
- sel=map_selection_rect_new(&this->c, dist, 18);
- center.x=this->c.x;
- center.y=this->c.y;
- h=mapset_open(navit_get_mapset(this->object->nav));
-
- entries=retDoc.createElement(attr_name);
- retDoc.appendChild(entries);
-
- while ((m=mapset_next(h, 1))) {
- selm=map_selection_dup_pro(sel, this->c.pro, map_projection(m));
- mr=map_rect_new(m, selm);
- if (mr) {
- while ((item=map_rect_get_item(mr))) {
- struct coord c;
- if ( item_coord_get_pro(item, &c, 1, this->c.pro) && coord_rect_contains(&sel->u.c_rect, &c) && (idist=transform_distance(this->c.pro, &center, &c)) < dist && item->type<type_line) {
- char* label;
- QString rs;
- if (item_attr_get(item, attr_label, &attr)) {
- label=map_convert_string(m, attr.u.str);
- if (QString(item_to_name(item->type)).startsWith(QString("poi_"))) {
- rs=QString::fromLocal8Bit(item_to_name(item->type));
- rs=rs.remove(QString("poi_"));
- rs+=QString(" ")+QString::fromLocal8Bit(label);
-
- } else if (QString(item_to_name(item->type)).startsWith(QString("poly_"))) {
- rs=QString::fromLocal8Bit(item_to_name(item->type));
- rs=rs.remove(QString("poly_"));
- rs+=QString(" ")+QString::fromLocal8Bit(label);
-
- } else if (QString(item_to_name(item->type)).startsWith(QString("street_"))) {
- rs="Street ";
- rs+=QString::fromLocal8Bit(label);
- }
- map_convert_free(label);
- } else
- rs=item_to_name(item->type);
- get_direction(dirbuf, transform_get_angle_delta(&center, &c, 0), 1);
- if (rs.length()>0) {
- QDomElement entry=retDoc.createElement("point");
- QDomElement nameTag=retDoc.createElement("name");
- QDomElement typeTag=retDoc.createElement("type");
- QDomElement distTag=retDoc.createElement("distance");
- QDomElement directTag=retDoc.createElement("direction");
- QDomElement coordsTag=retDoc.createElement("coords");
- QDomText nameT=retDoc.createTextNode(rs);
- QDomText typeT=retDoc.createTextNode(QString(item_to_name(item->type)));
- QDomText distT=retDoc.createTextNode(QString::number(idist/1000));
- QDomText directT=retDoc.createTextNode(dirbuf);
- QDomText coordsT=retDoc.createTextNode(QString("%1 %2").arg(c.x).arg(c.y));
- nameTag.appendChild(nameT);
- typeTag.appendChild(typeT);
- distTag.appendChild(distT);
- directTag.appendChild(directT);
- coordsTag.appendChild(coordsT);
- entry.appendChild(nameTag);
- entry.appendChild(typeTag);
- entry.appendChild(distTag);
- entry.appendChild(directTag);
- entry.appendChild(coordsTag);
- entries.appendChild(entry);
- }
- }
- }
- }
- map_selection_destroy(selm);
- }
- map_selection_destroy(sel);
- mapset_close(h);
- dbg(lvl_info,"%s\n",retDoc.toString().toLocal8Bit().constData());
- return retDoc.toString();
- }
-protected:
- QDomElement _fieldValueHelper(QDomDocument doc, QString field,QString value) {
- QDomElement fieldTag=doc.createElement(field);
- QDomText valueText=doc.createTextNode(value);
- fieldTag.appendChild(valueText);
- return fieldTag;
- }
- QString _coordString() {
- char latc='N',lngc='E';
- int lat_deg,lat_min,lat_sec;
- int lng_deg,lng_min,lng_sec;
- struct coord_geo g=this->g;
-
- if (g.lat < 0) {
- g.lat=-g.lat;
- latc='S';
- }
- if (g.lng < 0) {
- g.lng=-g.lng;
- lngc='W';
- }
- lat_deg=g.lat;
- lat_min=fmod(g.lat*60,60);
- lat_sec=fmod(g.lat*3600,60);
- lng_deg=g.lng;
- lng_min=fmod(g.lng*60,60);
- lng_sec=fmod(g.lng*3600,60);
- return QString(QString::fromLocal8Bit("%1°%2'%3\" %4%5%6°%7'%8\" %9")).arg(lat_deg).arg(lat_min).arg(lat_sec).arg(latc).arg(' ').arg(lng_deg).arg(lng_min).arg(lng_sec).arg(lngc);
- }
- QString _coordName() {
- int dist=10;
- struct mapset *ms;
- struct mapset_handle *h;
- struct map_rect *mr;
- struct map *m;
- struct item *item;
- struct street_data *data;
- struct map_selection sel;
- struct transformation *trans;
- enum projection pro;
- struct attr attr;
- char *label;
- QString ret;
-
- trans=navit_get_trans(this->object->nav);
- pro=transform_get_projection(trans);
- transform_from_geo(pro, &g, &co);
- ms=navit_get_mapset(this->object->nav);
- sel.next=NULL;
- sel.u.c_rect.lu.x=c.x-dist;
- sel.u.c_rect.lu.y=c.y+dist;
- sel.u.c_rect.rl.x=c.x+dist;
- sel.u.c_rect.rl.y=c.y-dist;
- sel.order=18;
- sel.range=item_range_all;
- h=mapset_open(ms);
- while ((m=mapset_next(h,1))) {
- mr=map_rect_new(m, &sel);
- if (! mr)
- continue;
- while ((item=map_rect_get_item(mr))) {
- data=street_get_data(item);
- if (transform_within_dist_item(&co, item->type, data->c, data->count, dist)) {
- if (item_attr_get(item, attr_label, &attr)) {
- label=map_convert_string(m, attr.u.str);
- this->item=*item;
- this->_setUrl(item);
- if (QString(item_to_name(item->type)).startsWith(QString("poi_"))) {
- ret=QString::fromLocal8Bit(item_to_name(item->type));
- ret=ret.remove(QString("poi_"));
- ret+=QString(" ")+QString::fromLocal8Bit(label);
- }
- if (QString(item_to_name(item->type)).startsWith(QString("poly_"))) {
- ret=QString::fromLocal8Bit(item_to_name(item->type));
- ret=ret.remove(QString("poly_"));
- ret+=QString(" ")+QString::fromLocal8Bit(label);
- }
- if (QString(item_to_name(item->type)).startsWith(QString("street_"))) {
- ret="Street ";
- ret+=QString::fromLocal8Bit(label);
- }
- map_convert_free(label);
- street_data_free(data);
- map_rect_destroy(mr);
- mapset_close(h);
- return ret;
- } else
- this->item=*item;
- this->_setUrl(item);
- ret=item_to_name(item->type);
- }
- street_data_free(data);
- }
- map_rect_destroy(mr);
- }
- mapset_close(h);
- return ret;
- }
- void _setUrl(struct item *item) {
- struct attr attr;
- if (item_attr_get(item,attr_osm_nodeid,&attr)) {
- url.setUrl(QString("http://www.openstreetmap.org/browse/node/%1").arg(*attr.u.num64));
- } else if (item_attr_get(item,attr_osm_wayid,&attr)) {
- url.setUrl(QString("http://www.openstreetmap.org/browse/way/%1").arg(*attr.u.num64));
- } else if (item_attr_get(item,attr_osm_relationid,&attr)) {
- url.setUrl(QString("http://www.openstreetmap.org/browse/relation/%1").arg(*attr.u.num64));
- } else {
- url.clear();
- }
- }
-private:
- struct gui_priv* object;
-
- NGQPointTypes type;
- struct coord_geo g;
- struct coord co;
- struct pcoord c;
- struct point p;
-
- struct item item;
-
- QString name;
- QString coord;
- QUrl url;
-};
-
-#include "ngqpoint.moc"
-
-#endif /* NAVIT_GUI_QML_POINT_H */
diff --git a/navit/gui/qml/proxy.h b/navit/gui/qml/proxy.h
deleted file mode 100644
index 3243dc8cb..000000000
--- a/navit/gui/qml/proxy.h
+++ /dev/null
@@ -1,109 +0,0 @@
-#ifndef NAVIT_GUI_QML_PROXY_H
-#define NAVIT_GUI_QML_PROXY_H
-
-class NGQStandardItemModel : public QStandardItemModel {
-public:
- NGQStandardItemModel(QObject* parent) : QStandardItemModel(parent) {
- //Populate role list
- roleNames.insert(NGQStandardItemModel::ItemId, "itemId");
- roleNames.insert(NGQStandardItemModel::ItemName, "itemName");
- roleNames.insert(NGQStandardItemModel::ItemIcon, "itemIcon");
- roleNames.insert(NGQStandardItemModel::ItemPath, "itemPath");
- roleNames.insert(NGQStandardItemModel::ItemValue, "itemValue");
- this->setRoleNames(roleNames);
- }
-
- enum listRoles {ItemId=Qt::UserRole+1,ItemName=Qt::UserRole+2,ItemIcon=Qt::UserRole+3,ItemPath=Qt::UserRole+4,ItemValue=Qt::UserRole+5};
-private:
- QHash<int, QByteArray> roleNames;
-};
-
-class NGQProxy : public QObject {
- Q_OBJECT;
-
- Q_PROPERTY(int itemId READ itemId NOTIFY itemIdSignal);
-public:
- NGQProxy(struct gui_priv* this_,QObject *parent) : QObject(parent) {
- this->object=this_;
- }
-
-signals:
- void itemIdSignal(int itemId);
-
-public slots:
- //Attribute read/write
- QString getAttr(const QString &attr_name) {
- QString ret;
- struct attr attr;
-
- getAttrFunc(attr_from_name(attr_name.toStdString().c_str()), &attr, NULL);
- if (ATTR_IS_INT(attr.type)) {
- ret.setNum(attr.u.num);
- }
- if (ATTR_IS_DOUBLE(attr.type)) {
- ret.setNum(*attr.u.numd);
- }
- if (ATTR_IS_STRING(attr.type)) {
- ret=attr.u.str;
- }
- if (attr.type==attr_layout) {
- ret=attr.u.layout->name;
- }
- return ret;
- }
- void setAttr(const QString &attr_name, const QString &attr_string) {
- struct attr attr_value;
- double *helper;
-
- dbg(lvl_debug,"Setting %s to %s\n",attr_name.toStdString().c_str(),attr_string.toStdString().c_str());
- getAttrFunc(attr_from_name(attr_name.toStdString().c_str()), &attr_value, NULL);
-
- if (ATTR_IS_INT(attr_value.type)) {
- //Special handling for "true"/"false"
- if (attr_string=="true") {
- attr_value.u.num=1;
- } else if (attr_string=="false") {
- attr_value.u.num=0;
- } else {
- attr_value.u.num=attr_string.toInt();
- }
- }
- if (ATTR_IS_DOUBLE(attr_value.type)) {
- helper = g_new0(double,1);
- *helper=attr_string.toDouble();
- attr_value.u.numd=helper;
- }
- if (ATTR_IS_STRING(attr_value.type)) {
- attr_value.u.str=(char*)attr_string.toStdString().c_str();
- }
-
- setAttrFunc(&attr_value);
-
- return;
- }
-
- int itemId() {
- return _itemId;
- }
-protected:
- struct gui_priv* object;
-
- int _itemId;
-
- virtual int setAttrFunc(struct attr *attr)=0;
- virtual int getAttrFunc(enum attr_type type, struct attr *attr, struct attr_iter *iter)=0;
- virtual struct attr_iter* getIterFunc() { return NULL; };
- virtual void dropIterFunc(struct attr_iter*) { return; };
-
- QDomElement _fieldValueHelper(QDomDocument doc, QString field,QString value) {
- QDomElement fieldTag=doc.createElement(field);
- QDomText valueText=doc.createTextNode(value);
- fieldTag.appendChild(valueText);
- return fieldTag;
- }
-
-};
-
-#include "proxy.moc"
-
-#endif /* NAVIT_GUI_QML_PROXY_H */
diff --git a/navit/gui/qml/routeProxy.h b/navit/gui/qml/routeProxy.h
deleted file mode 100644
index a2fb4c793..000000000
--- a/navit/gui/qml/routeProxy.h
+++ /dev/null
@@ -1,72 +0,0 @@
-#ifndef NAVIT_GUI_QML_ROUTEPROXY_H
-#define NAVIT_GUI_QML_ROUTEPROXY_H
-
-
-class NGQProxyRoute : public NGQProxy {
- Q_OBJECT;
-
-public:
- NGQProxyRoute(struct gui_priv* this_,QObject* parent) : NGQProxy(this_,parent) { };
-
-public slots:
- void addDestination() {
- int counter=0;
- QList<struct attr> destinations=this->_routeDestinations();
- struct pcoord *coords=(struct pcoord*)malloc(sizeof(struct pcoord)*(destinations.size()+1)); //Additional destination included
-
- for (QList<struct attr>::const_iterator iter=destinations.begin();iter!=destinations.end();iter++) {
- coords[counter]=*(iter->u.pcoord);
- counter++;
- }
-
- //Add new one
- coords[counter]=*(this->object->currentPoint->pc());
-
- //Propagate to route engine
- route_set_destinations(navit_get_route(this->object->nav),coords,counter+1,1);
- }
- QString getDestinations() {
-
- QList<struct attr> destinations=this->_routeDestinations();
- for (QList<struct attr>::const_iterator iter=destinations.begin();iter!=destinations.end();iter++) {
- NGQPoint helperPoint(this->object,iter->u.pcoord,MapPoint);
- dbg(lvl_debug,"Added destination %s\n",helperPoint.coordString().toLocal8Bit().constData());
- }
-
- //dbg(lvl_debug,QString::number(_itemId).toStdString().c_str());
-
- //return retDoc.toString();
- return QString();
- }
-
-protected:
- int getAttrFunc(enum attr_type type, struct attr* attr, struct attr_iter* iter) {return route_get_attr(navit_get_route(this->object->nav), type, attr, iter); }
- int setAttrFunc(struct attr* attr) {return route_set_attr(navit_get_route(this->object->nav),attr); }
- struct attr_iter* getIterFunc() { return route_attr_iter_new(); };
- void dropIterFunc(struct attr_iter* iter) { route_attr_iter_destroy(iter); };
-
- QList<struct attr> _routeDestinations() {
- QList<struct attr> ret;
- struct attr attr;
- struct attr_iter *iter;
-
- //Fill da list
- iter=getIterFunc();
- if (iter == NULL) {
- return ret;
- }
-
- while (getAttrFunc(attr_destination, &attr, iter) ) {
- struct attr c_attr=attr;
- ret.push_front(c_attr); //List is reversed in route engine
- }
-
- dropIterFunc(iter);
-
- return ret;
- }
-};
-
-#include "routeProxy.moc"
-
-#endif /* NAVIT_GUI_QML_ROUTEPROXY_H */
diff --git a/navit/gui/qml/searchProxy.h b/navit/gui/qml/searchProxy.h
deleted file mode 100644
index 579ac3dac..000000000
--- a/navit/gui/qml/searchProxy.h
+++ /dev/null
@@ -1,229 +0,0 @@
-#ifndef NAVIT_GUI_QML_SEARCHPROXY_H
-#define NAVIT_GUI_QML_SEARCHPROXY_H
-
-void __setNewPoint(struct gui_priv* this_,struct pcoord* pc, NGQPointTypes type);
-
-class NGQProxySearch : public NGQProxy {
- Q_OBJECT;
-
- Q_PROPERTY(QString countryName READ countryName WRITE setCountryName NOTIFY countryNameSignal);
- Q_PROPERTY(QString countryISO2 READ countryISO2 WRITE setCountryISO2 NOTIFY countryISO2Signal);
- Q_PROPERTY(QString townName READ townName WRITE setTownName NOTIFY townNameSignal);
- Q_PROPERTY(QString streetName READ streetName WRITE setStreetName NOTIFY streetNameSignal);
-
- Q_PROPERTY(QString searchContext READ searchContext WRITE setSearchContext);
-
-public:
- NGQProxySearch(struct gui_priv* this_,QObject* parent) : NGQProxy(this_,parent) {
- struct attr search_attr, country_name, country_iso2, *country_attr;
- struct item *item;
- struct country_search *cs;
- struct tracking *tracking;
- struct search_list_result *res;
-
- this->sl=search_list_new(navit_get_mapset(this->object->nav));
- this->search_context="country";
-
- country_attr=country_default();
- tracking=navit_get_tracking(this->object->nav);
- if (tracking && tracking_get_attr(tracking, attr_country_id, &search_attr, NULL))
- country_attr=&search_attr;
- if (country_attr) {
- cs=country_search_new(country_attr, 0);
- item=country_search_get_item(cs);
- if (item && item_attr_get(item, attr_country_name, &country_name)) {
- search_attr.type=attr_country_all;
- dbg(lvl_debug,"country %s\n", country_name.u.str);
- this->country_name=QString::fromLocal8Bit(country_name.u.str);
- search_attr.u.str=country_name.u.str;
- search_list_search(this->sl, &search_attr, 0);
- while((res=search_list_get_result(this->sl)));
- if (item_attr_get(item, attr_country_iso2, &country_iso2)) {
- this->country_iso2=QString::fromLocal8Bit(country_iso2.u.str);
- }
- }
- country_search_destroy(cs);
- } else {
- dbg(lvl_error,"warning: no default country found\n");
- if (!this->country_iso2.isEmpty()) {
- dbg(lvl_debug,"attempting to use country '%s'\n",this->country_iso2.toStdString().c_str());
- search_attr.type=attr_country_iso2;
- search_attr.u.str=(char*)this->country_iso2.toStdString().c_str();
- search_list_search(this->sl, &search_attr, 0);
- while((res=search_list_get_result(this->sl)));
- }
- }
- }
- ~NGQProxySearch() {
- search_list_destroy(this->sl);
- }
-
-signals:
- void countryNameSignal(QString);
- void countryISO2Signal(QString);
- void townNameSignal(QString);
- void streetNameSignal(QString);
-
-public slots:
- void setPointToResult() {
- struct attr attr;
- struct search_list_result *res;
-
- if (this->street_name.length()>0) {
- attr.type=attr_street_name;
- attr.u.str=this->street_name.toLocal8Bit().data();
- } else if (this->town_name.length()>0) {
- attr.type=attr_town_or_district_name;
- attr.u.str=this->town_name.toLocal8Bit().data();
- } else if (this->country_name.length()>0) {
- attr.type=attr_country_name;
- attr.u.str=this->country_name.toLocal8Bit().data();
- }
- search_list_search(this->sl,&attr,0);
- if ((res=search_list_get_result(this->sl))) {
- __setNewPoint(this->object,res->c,PointOfInterest);
- }
- return;
- }
- QString searchXml() {
- NGQStandardItemModel* ret=new NGQStandardItemModel(this);
- struct attr attr;
- struct search_list_result *res;
- int counter=0;
- QDomDocument retDoc;
- QDomElement entries;
-
- entries=retDoc.createElement("search");
- retDoc.appendChild(entries);
-
- if (this->search_context=="country") {
- attr.type=attr_country_name;
- attr.u.str=this->country_name.toLocal8Bit().data();
- }
- if (this->search_context=="town") {
- if (this->town_name.length()<3) {
- return retDoc.toString();
- }
- attr.type=attr_town_or_district_name;
- attr.u.str=this->town_name.toLocal8Bit().data();
- }
- if (this->search_context=="street") {
- attr.type=attr_street_name;
- attr.u.str=this->street_name.toLocal8Bit().data();
- }
-
- search_list_search(this->sl,&attr,1);
-
- while ((res=search_list_get_result(this->sl))) {
- QStandardItem* curItem=new QStandardItem();
- QDomElement entry=retDoc.createElement("item");
- entries.appendChild(entry);
- //Result processing depends on search type
- if (this->search_context=="country") {
- entry.appendChild(this->_fieldValueHelper(retDoc,QString("id"), QString::number(counter)));
- entry.appendChild(this->_fieldValueHelper(retDoc,QString("name"), QString::fromLocal8Bit(res->country->name)));
- entry.appendChild(this->_fieldValueHelper(retDoc,QString("icon"), QString("country_%1%2").arg(res->country->iso2).arg(".svgz")));
- }
- if (this->search_context=="town") {
- entry.appendChild(this->_fieldValueHelper(retDoc,QString("id"), QString::number(counter)));
- if (res->town->common.town_name) {
- entry.appendChild(this->_fieldValueHelper(retDoc,QString("name"),QString::fromLocal8Bit(res->town->common.town_name)));
- }
- if (res->town->common.district_name) {
- entry.appendChild(this->_fieldValueHelper(retDoc,QString("name"), QString::fromLocal8Bit(res->town->common.district_name)));
- }
- }
- if (this->search_context=="street") {
- entry.appendChild(this->_fieldValueHelper(retDoc,QString("id"), QString::number(counter)));
- entry.appendChild(this->_fieldValueHelper(retDoc,QString("name"),QString::fromLocal8Bit(res->street->name)));
- }
- counter++;
- ret->appendRow(curItem);
- }
-
- return retDoc.toString();
- }
- QString countryName() {
- return this->country_name;
- }
- void setCountryName(QString countryName) {
- this->country_name=countryName;
- struct attr attr;
- struct search_list_result *res;
-
- //We need to update ISO2
- attr.type=attr_country_name;
- attr.u.str=countryName.toLocal8Bit().data();
- search_list_search(this->sl,&attr,0);
- while ((res=search_list_get_result(this->sl))) {
- this->setCountryISO2(QString::fromLocal8Bit(res->country->iso2));
- }
- //...and current town
- this->town_name="";
- this->street_name="";
-
- countryNameSignal(countryName);
- }
- QString countryISO2() {
- return this->country_iso2;
- }
- void setCountryISO2(QString countryISO2) {
- this->country_iso2=countryISO2;
- countryISO2Signal(countryISO2);
- }
- QString townName() {
- return this->town_name;
- }
- void setTownName(QString townName) {
- struct attr attr;
-
- this->town_name=townName;
-
- //Specialize search
- attr.type=attr_town_or_district_name;
- attr.u.str=townName.toLocal8Bit().data();
- search_list_search(this->sl,&attr,0);
-
- //...and street
- this->street_name="";
-
- townNameSignal(townName);
- }
- QString streetName() {
- return this->street_name;
- }
- void setStreetName(QString streetName) {
- struct attr attr;
-
- this->street_name=streetName;
-
- //Specialize search
- attr.type=attr_street_name;
- attr.u.str=streetName.toLocal8Bit().data();
- search_list_search(this->sl,&attr,0);
-
- streetNameSignal(streetName);
- }
- QString searchContext() {
- return this->search_context;
- }
- void setSearchContext(QString searchContext) {
- this->search_context=searchContext;
- }
-
-protected:
- virtual int getAttrFunc(enum attr_type type, struct attr *attr, struct attr_iter *iter) {
- return 0;
- }
- virtual int setAttrFunc(struct attr *attr) {
- return 0;
- }
-private:
- struct search_list *sl;
- QString search_context;
- QString country_iso2,country_name,town_name,street_name;
-};
-
-#include "searchProxy.moc"
-
-#endif /* NAVIT_GUI_QML_SEARCHPROXY_H */
diff --git a/navit/gui/qml/skins/navit/ButtonIcon.qml b/navit/gui/qml/skins/navit/ButtonIcon.qml
deleted file mode 100644
index f969ebb5a..000000000
--- a/navit/gui/qml/skins/navit/ButtonIcon.qml
+++ /dev/null
@@ -1,40 +0,0 @@
-import Qt 4.7
-
-Rectangle {
- id: container
-
- signal clicked
- property string text: "Button"
- property string icon: "Icon.png"
-
- color: "black"; smooth: true; opacity: 0.75
- width: imgItem.width+20; height: txtItem.height + 6 + imgItem.height;
- transformOrigin: Rectangle.Center;
-
- MouseArea { id: mr; anchors.fill: parent; onClicked: container.clicked() }
-
- Image {
- id: imgItem; source: gui.iconPath+container.icon; anchors.top: container.top; anchors.horizontalCenter: container.horizontalCenter;
- width: gui.height/4; height: gui.height/4
- }
-
- Text {
- id: txtItem; text: container.text; anchors.top: imgItem.bottom; anchors.horizontalCenter: container.horizontalCenter;
- color: "White"; font.pointSize: gui.height/32; horizontalAlignment: Qt.AlignHCenter
- }
-
- states: [
- State {
- name: "Pressed"; when: mr.pressed == true
- PropertyChanges { target: container; scale: 2.0 }
- PropertyChanges { target: container; opacity: 1 }
-
- }
- ]
-
- transitions: Transition {
- NumberAnimation { properties: "scale"; easing.type: "OutExpo"; duration: 200 }
- NumberAnimation { properties: "opacity"; easing.type: "InQuad"; duration: 200 }
- }
-
-}
diff --git a/navit/gui/qml/skins/navit/Cellar.qml b/navit/gui/qml/skins/navit/Cellar.qml
deleted file mode 100644
index de4d3c146..000000000
--- a/navit/gui/qml/skins/navit/Cellar.qml
+++ /dev/null
@@ -1,38 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
-
- function onStartup(currentPage) {
- btnBack.opacity=0;
- btnQuit.opacity=0;
- if ( gui.lengthPage() > 1 ) {
- btnBack.opacity=1;
- }
- if ( gui.lengthPage() == 1 && currentPage == "PageMain.qml" ) {
- btnQuit.opacity=1;
- }
- }
-
-
- ButtonIcon {
- id: btnMap; icon: "gui_map.svg"; text:"Map"; onClicked: gui.backToMap();
- anchors.left: parent.left; anchors.leftMargin: 3
- anchors.bottom: parent.bottom; anchors.bottomMargin: 3
- }
-
- ButtonIcon {
- id: btnBack; icon: "gui_arrow_left.svg"; text: "Back"; onClicked: Navit.back();
- anchors.right: parent.right; anchors.leftMargin: 3
- anchors.bottom: parent.bottom; anchors.bottomMargin: 3
- opacity: 0;
- }
-
- ButtonIcon {
- id: btnQuit; icon: "gui_quit.svg"; text: "Quit"; onClicked: navit.quit()
- anchors.right: parent.right; anchors.leftMargin: 3
- anchors.bottom: parent.bottom; anchors.bottomMargin: 3
- opacity: 0;
- }
-
-}
diff --git a/navit/gui/qml/skins/navit/CommonHighlight.qml b/navit/gui/qml/skins/navit/CommonHighlight.qml
deleted file mode 100644
index 3f4d035e0..000000000
--- a/navit/gui/qml/skins/navit/CommonHighlight.qml
+++ /dev/null
@@ -1,9 +0,0 @@
-import Qt 4.7
-
-Component {
- Rectangle {
- color: "lightsteelblue"
- radius: 5
- }
-}
-
diff --git a/navit/gui/qml/skins/navit/ListSelector.qml b/navit/gui/qml/skins/navit/ListSelector.qml
deleted file mode 100644
index 09c927cf1..000000000
--- a/navit/gui/qml/skins/navit/ListSelector.qml
+++ /dev/null
@@ -1,49 +0,0 @@
-import Qt 4.7
-
-Rectangle {
- id: listselector
- width: parent.width; height: parent.height
- color: "Black"
-
-
- property string text: "ListSelector"
- property string value: ""
- property int itemId: 0
- property bool showScroller: false
- signal changed
-
- function startup() {
- if (listselector.showScroller == true) {
- listScroller.opacity=0.5;
- }
- }
-
- Component.onCompleted: startup();
-
- Text {
- id: labelTxt; text: listselector.text; color: "White"; font.pointSize: 22;
- anchors.horizontalCenter: list.horizontalCenter
- anchors.verticalCenter: listselector.top
- }
-
- ListView {
- id: list;
- width: listselector.width*0.8; height: listselector.height
- anchors.top: labelTxt.bottom;
- anchors.left: listselector.left
- model: listModel
- delegate: listDelegate
- highlight: listHighlight
- clip: true
- highlightFollowsCurrentItem: true
- keyNavigationWraps: true
-
- Component.onCompleted: { list.currentIndex=listselector.itemId; }
- }
- Rectangle {
- id: listScroller
- opacity: 0; anchors.left: list.right; anchors.leftMargin: 4; width: 6
- y: (list.visibleArea.yPosition * list.height)+(list.visibleArea.heightRatio * list.height/4)
- height: list.visibleArea.heightRatio * list.height
- }
-}
diff --git a/navit/gui/qml/skins/navit/PageAbout.qml b/navit/gui/qml/skins/navit/PageAbout.qml
deleted file mode 100644
index a96baabca..000000000
--- a/navit/gui/qml/skins/navit/PageAbout.qml
+++ /dev/null
@@ -1,28 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- border.width: 1
- color: "Black"
- opacity: 0
-
- function pageOpen() {
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Text { id: navitText; anchors.horizontalCenter: parent.horizontalCenter; anchors.bottom: urlText.top; text: "Navit"; color: "White"; font.pointSize: gui.height/32 }
- Text { id: urlText; anchors.horizontalCenter: parent.horizontalCenter; anchors.verticalCenter: parent.verticalCenter; text: "http://www.navit-project.org/"; color: "White"; font.pointSize: gui.height/32 }
- Text { id: authorsText; anchors.horizontalCenter: parent.horizontalCenter; anchors.top: urlText.bottom; text: "By: Martin Schaller, Michael Farmbauer, Alexander Atanasov, Pierre Grandin"; color: "White"; font.pointSize: gui.height/32 }
- Text { id: contributorsText; anchors.horizontalCenter: parent.horizontalCenter; anchors.top: authorsText.bottom; text: "and all the Navit Team members and contributors"; color: "White"; font.pointSize: gui.height/32 }
-
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageBookmarks.qml b/navit/gui/qml/skins/navit/PageBookmarks.qml
deleted file mode 100644
index 15a5982b6..000000000
--- a/navit/gui/qml/skins/navit/PageBookmarks.qml
+++ /dev/null
@@ -1,144 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- color: "Black"
- opacity: 0
-
- function bookmarkReload() {
- listModel.xml=bookmarks.getBookmarks();
- listModel.query="/bookmarks/bookmark";
- listModel.reload();
- }
-
- function bookmarkClick(itemName,itemType,itemCoord) {
- if (itemType=="bookmark_folder") {
- if ( itemName==".." ) {
- bookmarks.moveUp();
- } else {
- bookmarks.moveDown(itemName);
- }
- bookmarkReload();
- } else {
- bookmarks.setPoint(itemName);
- pageLoader.source="PageNavigate.qml";
- }
- }
-
- function pageOpen() {
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- ButtonIcon { id: folderBtn; text: "New folder"; icon: "gui_active.svg"; onClicked: folderDialog.opacity=1
- anchors.top: parent.top; anchors.topMargin: page.height/16; anchors.left: parent.left; anchors.leftMargin: page.width/16
- }
- ButtonIcon { id: pasteBtn; text: "Paste"; icon: "gui_active.svg"; onClicked: { bookmarks.Paste(); bookmarkReload(); }
- anchors.top: parent.top; anchors.topMargin: page.height/16; anchors.left: folderBtn.right; anchors.leftMargin: page.width/16
- }
-
- XmlListModel {
- id: listModel
- xml: bookmarks.getBookmarks("bookmarks")
- query: "/bookmarks/bookmark"
- XmlRole { name: "itemName"; query: "label/string()" }
- XmlRole { name: "itemType"; query: "type/string()" }
- XmlRole { name: "itemDistance"; query: "distance/string()" }
- XmlRole { name: "itemDirection"; query: "direction/string()" }
- XmlRole { name: "itemValue"; query: "coords/string()" }
- }
- Component {
- id: listDelegate
- Item {
- id: wrapper
- width: list.width; height: 20
- Text { id: txtItem; text: itemName; color: {itemType== "bookmark" ? "White" : "Yellow"}
- font.bold: {itemType!= "bookmark" }
- width: list.width-imgDelete.width
- MouseArea {
- id:delegateMouse
- anchors.fill: parent
- onClicked: bookmarkClick(itemName,itemType,itemValue);
- }
- }
- Image {
- id: imgCut; source: gui.iconPath+"zoom_out.svg"; anchors.right: imgCopy.left;anchors.rightMargin: 5;
- width: 20; height: 20;
-
- MouseArea {
- id:delegateMouseCut
- anchors.fill: parent
- onClicked: { bookmarks.Cut(itemName); bookmarkReload(); }
- }
- }
- Image {
- id: imgCopy; source: gui.iconPath+"zoom_in.svg"; anchors.right: imgDelete.left;anchors.rightMargin: 5;
- width: 20; height: 20;
-
- MouseArea {
- id:delegateMouseCopy
- anchors.fill: parent
- onClicked: { bookmarks.Copy(itemName); bookmarkReload(); }
- }
- }
- Image {
- id: imgDelete; source: gui.iconPath+"gui_inactive.svg"; anchors.right: wrapper.right;anchors.rightMargin: 5;
- width: 20; height: 20;
-
- MouseArea {
- id:delegateMouseDelete
- anchors.fill: parent
- onClicked: { bookmarks.Delete(itemName); bookmarkReload(); }
- }
- }
- }
- }
-
- Component {
- id: listHighlight
- Rectangle {
- opacity: 0
- }
- }
-
- ListSelector {
- id:layoutList; text: ""
- anchors.top: pasteBtn.bottom;
- anchors.left: parent.left;
- anchors.topMargin: gui.height/16; anchors.leftMargin: gui.width/32
- width: page.width; height: page.height*0.25
- }
-
- Cellar {id: cellar; anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-
- Rectangle {
- id: folderDialog
- opacity:0
- anchors.horizontalCenter: page.horizontalCenter; anchors.verticalCenter: page.verticalCenter;
- width: page.width; height:page.height/3
- color: "Grey";
-
- TextInput{
- id: folderTxt; text: "Enter folder name here..."
- anchors.top: parent.top;anchors.topMargin: 5;anchors.horizontalCenter:parent.horizontalCenter
- width: page.width; font.pointSize: 14; color: "White";focus: true; readOnly: false
- }
-
- ButtonIcon {
- id: btnOk; text: "Add"; icon: "gui_active.svg"; onClicked: { bookmarks.AddFolder(folderTxt.text); bookmarkReload(); folderDialog.opacity=0 }
- anchors.top: folderTxt.bottom;anchors.topMargin: 5;anchors.right:parent.horizontalCenter;anchors.rightMargin:10
- }
- ButtonIcon {
- id: btnCancel; text: "Cancel"; icon: "gui_inactive.svg"; onClicked: folderDialog.opacity=0;
- anchors.top: folderTxt.bottom;anchors.topMargin: 5;anchors.left:parent.horizontalCenter;anchors.leftMargin:10
- }
- }
-}
diff --git a/navit/gui/qml/skins/navit/PageBookmarksAdd.qml b/navit/gui/qml/skins/navit/PageBookmarksAdd.qml
deleted file mode 100644
index 39694d2af..000000000
--- a/navit/gui/qml/skins/navit/PageBookmarksAdd.qml
+++ /dev/null
@@ -1,70 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- color: "Black"
- opacity: 0
-
- Timer {
- id: backTimer
- interval: 2000;
- onTriggered: Navit.back();
- }
-
- function add(description) {
- resultTxt.text=bookmarks.AddBookmark(description);
- btnOk.opacity=0;
- btnCancel.opacity=0;
- resultTxt.opacity=1;
- backTimer.start()
- }
-
- function pageOpen() {
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Text {
- id: infoTxt;
- text: point.coordString; color: "White"; font.pointSize: gui.height/20;
- anchors.top:parent.top;anchors.horizontalCenter:parent.horizontalCenter
- }
- Text {
- id: nameTxt;
- text: point.pointName; color: "White"; font.pointSize: gui.height/20;
- anchors.top:infoTxt.bottom;anchors.topMargin: 5;anchors.horizontalCenter:parent.horizontalCenter
- }
-
- TextInput{
- id: searchTxt; text: "Enter bookmark name..."
- anchors.top: nameTxt.bottom;anchors.topMargin: 5;anchors.horizontalCenter:parent.horizontalCenter
- width: page.width; font.pointSize: 14; color: "White";focus: true; readOnly: false
- }
-
-
- ButtonIcon {
- id: btnOk; text: "Add"; icon: "gui_active.svg"; onClicked: add(searchTxt.text)
- anchors.top: searchTxt.bottom;anchors.topMargin: 5;anchors.right:parent.horizontalCenter;anchors.rightMargin:10
- }
- ButtonIcon {
- id: btnCancel; text: "Cancel"; icon: "gui_inactive.svg"; onClicked: gui.backToPrevPage();
- anchors.top: searchTxt.bottom;anchors.topMargin: 5;anchors.left:parent.horizontalCenter;anchors.leftMargin:10
- }
-
- Text {
- id: resultTxt;
- text: point.pointName; color: "White"; font.pointSize: gui.height/20;
- anchors.top:btnCancel.bottom;anchors.topMargin: 5;anchors.horizontalCenter:parent.horizontalCenter
- opacity: 0
- }
-
- Cellar {id: cellar; anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageMain.qml b/navit/gui/qml/skins/navit/PageMain.qml
deleted file mode 100644
index f07ae8b06..000000000
--- a/navit/gui/qml/skins/navit/PageMain.qml
+++ /dev/null
@@ -1,29 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: main.width; height: main.height
- color: "Black"
-
- Grid {
- columns: 2; rows: 2
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.top: page.top;anchors.topMargin:page.height/10
- spacing: parent.height/6
-
- ButtonIcon {
- id: btnDestination; text: "Drive to\npoint on map"; icon: "gui_active.svg"; onClicked: { route.addDestination(); gui.backToMap() }
- }
- ButtonIcon {
- id: btnNavigate; text: "Navigate\nto . . ."; icon: "cursor.svg"; onClicked: Navit.load("PageNavigate.qml");
- }
- ButtonIcon {
- id: btnRoute; text: "Route\ninformation"; icon: "nav_destination_wh.svg"; onClicked: Navit.load("PageRoute.qml");
- }
- ButtonIcon {
- id: btnSettings; text: "Settings"; icon: "gui_settings.svg"; onClicked: Navit.load("PageSettings.qml");
- }
- }
-}
diff --git a/navit/gui/qml/skins/navit/PageNavigate.qml b/navit/gui/qml/skins/navit/PageNavigate.qml
deleted file mode 100644
index 3d4e04bc2..000000000
--- a/navit/gui/qml/skins/navit/PageNavigate.qml
+++ /dev/null
@@ -1,88 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- color: "Black"
- opacity: 0
-
- function pageOpen() {
- if (point.pointType!="Bookmark") {
- btnAddBookmark.opacity=1;
- }
- if (point.pointType!="MapPoint") {
- btnView.opacity=1;
- }
- if (point.pointType!="Position") {
- btnPosition.opacity=1;
- }
- if (point.pointType!="Destination") {
- btnDestination.opacity=1;
- }
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Text {
- id: infoTxt;
- text: point.coordString; color: "White"; font.pointSize: gui.height/20;
- anchors.top:parent.top;anchors.horizontalCenter:parent.horizontalCenter
- }
- Text {
- id: nameTxt;
- text: point.pointName; color: "White"; font.pointSize: gui.height/20;
- anchors.top:infoTxt.bottom;anchors.topMargin: 5;anchors.horizontalCenter:parent.horizontalCenter
- }
-
- ButtonIcon {
- id: btnView; text: "View on map"; icon: "gui_maps.svg"; onClicked: { navit.setCenter(); gui.backToMap(); }
- opacity: 0
- anchors.top: nameTxt.bottom;anchors.topMargin:gui.height/32
- anchors.left:page.left;anchors.leftMargin: gui.height/6
- }
- ButtonIcon {
- id: btnPosition; text: "Set as\nposition"; icon: "gui_active.svg"; onClicked: { navit.setPosition(); gui.backToMap() }
- opacity: 0
- anchors.top: nameTxt.bottom;anchors.topMargin:gui.height/32
- anchors.left:btnView.right;anchors.leftMargin: gui.height/6
- }
- ButtonIcon {
- id: btnDestination; text: "Set as\ndestination"; icon: "gui_active.svg"; onClicked: { route.addDestination(); gui.backToMap() }
- opacity: 0
- anchors.top: nameTxt.bottom;anchors.topMargin:gui.height/32
- anchors.left:btnPosition.right;anchors.leftMargin: gui.height/6
- }
- ButtonIcon {
- id: btnAddBookmark; text: "Add as\na bookmark"; icon: "gui_active.svg"; onClicked: Navit.load("PageBookmarksAdd.qml");
- opacity: 0
- anchors.top: nameTxt.bottom;anchors.topMargin:gui.height/32
- anchors.left:btnDestination.right;anchors.leftMargin: gui.height/6
- }
- Grid {
- columns: 4;rows: 1
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.top: btnDestination.bottom;anchors.topMargin:gui.height/32
- spacing: gui.height/6
- ButtonIcon {
- id: btnBookmarks; text: "Bookmarks"; icon: "gui_bookmark.svg"; onClicked: {bookmarks.moveRoot(); Navit.load("PageBookmarks.qml"); }
- }
- ButtonIcon {
- id: btnPOI; text: "Nearest\nPOIs"; icon: "attraction.svg"; onClicked: Navit.load("PagePoi.qml");
- }
- ButtonIcon {
- id: btnSearch; text: "Address\nSearch"; icon: "gui_town.svg"; onClicked: Navit.load("PageSearch.qml");
- }
- ButtonIcon {
- id: btnInfo; text: "Point\ninformation"; icon: "gui_menu.svg"; onClicked: Navit.load("PagePointInfo.qml");
- }
- }
-
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PagePoi.qml b/navit/gui/qml/skins/navit/PagePoi.qml
deleted file mode 100644
index 4ab9f5c0f..000000000
--- a/navit/gui/qml/skins/navit/PagePoi.qml
+++ /dev/null
@@ -1,150 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- property string poiFilter: ""
-
- width: gui.width; height: gui.height
- color: "Black"
- opacity: 0
-
- function calculateFilter() {
- page.poiFilter='/points/point[type="point_begin" or ';
- if (bankBtn.state=="on") {
- page.poiFilter+='type="poi_bank" or ';
- }
- if (fuelBtn.state=="on") {
- page.poiFilter+='type="poi_fuel" or ';
- page.poiFilter+='type="poi_autoservice" or ';
- page.poiFilter+='type="poi_repair_service" or ';
- }
- if (hotelBtn.state=="on") {
- page.poiFilter+='type="poi_hotel" or ';
- page.poiFilter+='type="poi_camp_rv" or ';
- page.poiFilter+='type="poi_camping" or ';
- page.poiFilter+='type="poi_resort" or ';
- page.poiFilter+='type="poi_motel" or ';
- page.poiFilter+='type="poi_hostel" or ';
- }
- if (foodBtn.state=="on") {
- page.poiFilter+='type="poi_bar" or ';
- page.poiFilter+='type="poi_picnic" or ';
- page.poiFilter+='type="poi_burgerking" or ';
- page.poiFilter+='type="poi_fastfood" or ';
- page.poiFilter+='type="poi_restaurant" or ';
- }
- if (shopBtn.state=="on") {
- page.poiFilter+='type="poi_shop_grocery" or ';
- page.poiFilter+='type="poi_mall" or ';
- }
- if (serviceBtn.state=="on") {
- page.poiFilter+='type="poi_marina" or ';
- page.poiFilter+='type="poi_hospital" or ';
- page.poiFilter+='type="poi_public_utilities" or ';
- page.poiFilter+='type="poi_police" or ';
- page.poiFilter+='type="poi_information" or ';
- page.poiFilter+='type="poi_personal_service" or ';
- page.poiFilter+='type="poi_restroom" or ';
- }
- if (parkingBtn.state=="on") {
- page.poiFilter+='type="poi_car_parking" or ';
- }
- if (landBtn.state=="on") {
- page.poiFilter+='type="poi_land_feature" or ';
- page.poiFilter+='type="poi_rock" or ';
- page.poiFilter+='type="poi_dam" or ';
- }
- page.poiFilter+='type="point_end"]';
- listModel.query=page.poiFilter;
- listModel.reload();
- }
-
- function pageOpen() {
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Text {
- id: labelTxt; text: "Points of interest"; color: "White"; font.pointSize: 14;
- anchors.horizontalCenter: page.horizontalCenter
- anchors.top: page.top
- }
-
- VisualItemModel {
- id: selectorsModel
-
- ToggleButton { id: bankBtn; text: "Bank"; icon: "bank.svg";stOn: "true"; onChanged: calculateFilter(); }
- ToggleButton { id: fuelBtn; text: "Fuel"; icon: "fuel.svg";stOn: "true"; onChanged: calculateFilter(); }
- ToggleButton { id: hotelBtn; text: "Hotel"; icon: "bar.svg";stOn: "true"; onChanged: calculateFilter(); }
- ToggleButton { id: foodBtn; text: "Food"; icon: "fastfood.svg";stOn: "true"; onChanged: calculateFilter(); }
- ToggleButton { id: shopBtn; text: "Shop"; icon: "shopping.svg";stOn: "true"; onChanged: calculateFilter(); }
- ToggleButton { id: serviceBtn; text: "Service"; icon: "hospital.svg";stOn: "true"; onChanged: calculateFilter(); }
- ToggleButton { id: parkingBtn; text: "Parking"; icon: "police.svg";stOn: "true"; onChanged: calculateFilter(); }
- ToggleButton { id: landBtn; text: "Land features"; icon: "peak.svg";stOn: "true"; onChanged: calculateFilter(); }
- }
-
- ListView {
- id: selectorsList; model: selectorsModel
- focus: true; clip: true; orientation: Qt.Horizontal
- anchors.horizontalCenter: page.horizontalCenter; anchors.top: labelTxt.bottom
- width: page.width; height: bankBtn.height*2
- }
-
- Slider {
- id: distanceSlider; minValue: 1; maxValue: 250; value: gui.getAttr("radius"); text: "Distance"; onChanged: { gui.setAttr("radius",distanceSlider.value); listModel.xml=point.getPOI("points"); listModel.reload(); }
- anchors.top: selectorsList.bottom; anchors.horizontalCenter: page.horizontalCenter;
- }
-
- XmlListModel {
- id: listModel
- xml: point.getPOI("points")
- query: "/points/point"
- XmlRole { name: "itemName"; query: "name/string()" }
- XmlRole { name: "itemType"; query: "type/string()" }
- XmlRole { name: "itemDistance"; query: "distance/string()" }
- XmlRole { name: "itemDirection"; query: "direction/string()" }
- XmlRole { name: "itemValue"; query: "coords/string()" }
- }
- Component {
- id: listDelegate
- Item {
- id: wrapper
- width: list.width; height: 20
- Column {
- x: 5; y: 5
- Text { id: txtItemName; text: itemName; color: "White" }
- Text { id: txtItemDist; text: itemDistance; color: "White"; anchors.leftMargin: 5; anchors.left: txtItemName.right;anchors.top: txtItemName.top }
- Text { id: txtItemDirect; text: itemDirection; color: "White"; anchors.leftMargin: 5; anchors.left: txtItemDist.right;anchors.top: txtItemDist.top }
- }
- MouseArea {
- id:delegateMouse
- anchors.fill: parent
- onClicked: { point.setNewPoint(itemValue); gui.returnSource="/main.qml"; Navit.load("PageNavigate.qml"); }
- }
- }
- }
-
- Component {
- id: listHighlight
- Rectangle {
- opacity: 0
- }
- }
-
- ListSelector {
- id:layoutList; text: ""
- anchors.top: distanceSlider.bottom;
- anchors.left: parent.left;
- anchors.topMargin: gui.height/16; anchors.leftMargin: gui.width/32
- width: page.width; height: page.height*0.25
- }
-
- Cellar {id: cellar; anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PagePointInfo.qml b/navit/gui/qml/skins/navit/PagePointInfo.qml
deleted file mode 100644
index 1014c63df..000000000
--- a/navit/gui/qml/skins/navit/PagePointInfo.qml
+++ /dev/null
@@ -1,79 +0,0 @@
-import Qt 4.7
-import org.webkit 1.0
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- color: "Black"
- opacity: 0
-
- function pageOpen() {
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Text {
- id: infoTxt;
- text: point.coordString; color: "White"; font.pointSize: gui.height/20;
- anchors.top:parent.top;anchors.horizontalCenter:parent.horizontalCenter
- }
- Text {
- id: nameTxt;
- text: point.pointName; color: "White"; font.pointSize: gui.height/20;
- anchors.top:infoTxt.bottom;anchors.topMargin: 5;anchors.horizontalCenter:parent.horizontalCenter
- }
- Text {
- id: typeTxt;
- text: point.pointType; color: "White"; font.pointSize: gui.height/20;
- anchors.top:nameTxt.bottom;anchors.topMargin: 5;anchors.horizontalCenter:parent.horizontalCenter
- }
- Text {
- id: urlTxt;
- text: point.pointUrl; color: "Blue"; font.pointSize: gui.height/20;font.underline: true;
- anchors.top:typeTxt.bottom;anchors.topMargin: 5;anchors.horizontalCenter:parent.horizontalCenter
- }
-
- XmlListModel {
- id: listModel
- xml: point.getInformation();
- query: "/point/element()"
- XmlRole { name: "itemType"; query: "name()" }
- XmlRole { name: "itemAttribute"; query: "string()" }
- }
-
- Component {
- id: listDelegate
- Item {
- id: wrapper
- width: list.width; height: 20
- Column {
- x: 5; y: 5
- Text { id: txtItemType; text: itemType; color: "White"; font.bold: true; }
- Text { id: txtItemAttribute; text: itemAttribute; color: "White"; anchors.leftMargin: 5; anchors.left: txtItemType.right;anchors.top: txtItemType.top }
- }
- }
- }
-
- Component {
- id: listHighlight
- Rectangle {
- opacity: 0
- }
- }
-
- ListSelector {
- id:layoutList; text: "Attributes";
- anchors.top: urlTxt.bottom;
- anchors.left: parent.left;
- anchors.topMargin: gui.height/16; anchors.leftMargin: gui.width/32
- width: page.width; height: page.height*0.25
- }
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageRoute.qml b/navit/gui/qml/skins/navit/PageRoute.qml
deleted file mode 100644
index a340eaa1b..000000000
--- a/navit/gui/qml/skins/navit/PageRoute.qml
+++ /dev/null
@@ -1,94 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- color: "Black"
- opacity: 0
-
- function pageOpen() {
- page.opacity = 1;
- if (navit.getPosition().length>0) {
- btnPoi.opacity=0.8;
- }
- if (navit.getDestination().length>0 && navit.getPosition().length>0) {
- btnRouteView.opacity=0.8;
- btnRouteBook.opacity=0.8;
- btnRouteHeight.opacity=0.8;
- }
- route.getDestinations();
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Text {
- id: statusTxt;
- text: route.getAttr("route_status"); color: "White"; font.pointSize: gui.height/20;
- anchors.top:parent.top;anchors.left:parent.left;anchors.topMargin: gui.height/20;anchors.leftMargin: gui.height/20;
- }
- Text {
- id: timeLabel;
- text: "Time to drive route: "; color: "White"; font.pointSize: gui.height/20;
- anchors.top:statusTxt.top;anchors.left:statusTxt.right;anchors.leftMargin: gui.height/20;
- }
- Text {
- id: timeTxt;
- text: route.getAttr("destination_time"); color: "White"; font.pointSize: gui.height/20;
- anchors.top:timeLabel.top;anchors.left:timeLabel.right;anchors.leftMargin: gui.height/20;
- }
- Text {
- id: lengthLabel;
- text: "Route length: "; color: "White"; font.pointSize: gui.height/20;
- anchors.top:timeTxt.top;anchors.left:timeTxt.right;anchors.leftMargin: gui.height/20;
- }
- Text {
- id: lengthTxt;
- text: route.getAttr("destination_length"); color: "White"; font.pointSize: gui.height/20;
- anchors.top:lengthLabel.top;anchors.left:lengthLabel.right;anchors.leftMargin: gui.height/20;
- }
-
- Grid {
- columns: 3;rows: 1
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.bottom: parent.verticalCenter; anchors.bottomMargin: gui.height/16;
- spacing: gui.width/12
- ButtonIcon {
- id: btnRouteView; text: "View route"; icon: "gui_town.svg"; onClicked: { navit.command("zoom_to_route()"), gui.backToMap(); }
- opacity: 0;
- }
- ButtonIcon {
- id: btnRouteBook; text: "Roadbook"; icon: "gui_log.svg"; onClicked: console.log("Implement me!");
- opacity: 0;
- }
- ButtonIcon {
- id: btnRouteHeight; text: "Height profile"; icon: "peak.svg"; onClicked: console.log("Implement me!");
- opacity: 0;
- }
- }
-
- Grid {
- columns: 3;rows: 1
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.top: parent.verticalCenter; anchors.topMargin: gui.height/16;
- spacing: gui.width/12
- ButtonIcon {
- id: btnView; text: "View position\non map"; icon: "gui_maps.svg"; onClicked: { navit.getPosition();navit.setCenter();gui.backToMap(); }
- }
- ButtonIcon {
- id: btnPoi; text: "POIs near\nPosition"; icon: "attraction.svg"; onClicked: Navit.load("PagePoi.qml");
- opacity: 0;
- }
- ButtonIcon {
- id: btnStop; text: "Stop"; icon: "gui_stop.svg"; onClicked: { navit.stopNavigation(); Navit.back(); }
- opacity: 0;
- }
- }
-
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageSearch.qml b/navit/gui/qml/skins/navit/PageSearch.qml
deleted file mode 100644
index 3d9419920..000000000
--- a/navit/gui/qml/skins/navit/PageSearch.qml
+++ /dev/null
@@ -1,92 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- color: "Black"
- opacity: 0
-
- function pageOpen() {
- if ( search.countryName.length>0 ) {
- gridCity.opacity = 1;
- }
- if ( search.townName.length>0 ) {
- gridStreet.opacity = 1;
- }
- if ( search.streetName.length>0 ) {
- gridAddress.opacity = 0; //Disabled ,because housenamuber search is broken
- }
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Grid {
- columns: 2;rows: 1
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.bottom: parent.verticalCenter; anchors.bottomMargin: gui.height/16;
- spacing: gui.width/12
- Grid {
- columns: 1;rows: 2;
- id: gridCountry;
- Text {
- id: txtItemCountry; text: "Country";
- color: "White"; font.pointSize: gui.height/32; horizontalAlignment: Qt.AlignHCenter
- }
- ButtonIcon {
- id: btnCountry; text: search.countryName; icon: "country_"+search.countryISO2+".svgz"; onClicked: { search.searchContext="country"; Navit.load("PageSearchSelector.qml"); }
- }
- }
- Grid {
- columns: 1; rows: 2;
- id: gridCity
- opacity: 0;
- Text {
- id: txtItemCity; text: "Town";
- color: "White"; font.pointSize: gui.height/32; horizontalAlignment: Qt.AlignHCenter
- }
- ButtonIcon {
- id: btnCity; text: search.townName; icon: "gui_bookmark.svg"; onClicked: { search.searchContext="town"; Navit.load("PageSearchSelector.qml"); }
- }
- }
- }
-
- Grid {
- columns: 2;rows: 1
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.top: parent.verticalCenter; anchors.topMargin: gui.height/16;
- spacing: gui.width/12
- Grid {
- columns: 1; rows: 2;
- id: gridStreet
- opacity: 0;
- Text {
- id: txtItemStreet; text: "Street";
- color: "White"; font.pointSize: gui.height/32; horizontalAlignment: Qt.AlignHCenter
- }
- ButtonIcon {
- id: btnStreet; text: search.streetName; icon: "gui_town.svg"; onClicked: { search.searchContext="street"; Navit.load("PageSearchSelector.qml"); }
- }
- }
- Grid {
- columns: 1; rows: 2;
- id: gridAddress;
- opacity: 0;
- Text {
- id: txtItemAddress; text: "Address";
- color: "White"; font.pointSize: gui.height/32; horizontalAlignment: Qt.AlignHCenter
- }
- ButtonIcon {
- id: btnAddress; text: "Address"; icon: "attraction.svg"; onClicked: console.log("Implement me!");
- }
- }
- }
-
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageSearchSelector.qml b/navit/gui/qml/skins/navit/PageSearchSelector.qml
deleted file mode 100644
index ec1ca73dd..000000000
--- a/navit/gui/qml/skins/navit/PageSearchSelector.qml
+++ /dev/null
@@ -1,108 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- color: "Black"
- opacity: 0
-
- function setSearchResult(listValue) {
- if (search.searchContext=="country") {
- search.countryName=listValue;
- Navit.back;
- }
- if (search.searchContext=="town") {
- search.townName=listValue;
- Navit.back();
- }
- if (search.searchContext=="street") {
- search.streetName=listValue;
- search.setPointToResult();
- Navit.returnSource="main.qml";
- Navit.load("PageNavigate.qml");
- }
- }
-
- function pageOpen() {
- if (search.searchContext=="country") {
- searchTxt.text=search.countryName;
- countryBinding.when=true;
- }
- if (search.searchContext=="town") {
- searchTxt.text=search.townName;
- townBinding.when=true;
- }
- if (search.searchContext=="street") {
- searchTxt.text=search.streetName;
- streetBinding.when=true;
- }
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- TextInput{
- id: searchTxt;
- anchors.top: parent.top; anchors.left: parent.left; anchors.topMargin: gui.height/16; anchors.leftMargin: gui.width/32
- width: page.width; font.pointSize: 14; color: "White";focus: true; readOnly: false; cursorVisible: true;
- }
- Binding {id: countryBinding; target: search; property: "countryName"; value: searchTxt.text; when: false}
- Binding {id: townBinding; target: search; property: "townName"; value: searchTxt.text; when: false}
- Binding {id: streetBinding; target: search; property: "streetName"; value: searchTxt.text; when: false}
-
- Connections { target: search; onCountryNameSignal: {listModel.xml=search.searchXml(); listModel.query="/search/item"; listModel.reload(); } }
- Connections { target: search; onTownNameSignal: {listModel.xml=search.searchXml(); listModel.query="/search/item"; listModel.reload(); } }
- Connections { target: search; onStreetNameSignal: {listModel.xml=search.searchXml(); listModel.query="/search/item"; listModel.reload(); } }
-
- XmlListModel {
- id: listModel
- xml: search.searchXml();
- query: "/search/item"
- XmlRole { name: "itemId"; query: "id/string()" }
- XmlRole { name: "itemName"; query: "name/string()" }
- XmlRole { name: "itemIcon"; query: "icon/string()" }
- }
-
- Component {
- id: listDelegate
- Item {
- id: wrapper
- width: list.width; height: 20
- Image {
- id: imgIcon; source: gui.iconPath+itemIcon
- width: 20; height: 20;
- }
- Text {
- id: txtItemName; text: itemName; color: "White";
- anchors.left: imgIcon.right;anchors.leftMargin: 5
- width: list.width-imgIcon.width
- }
- MouseArea {
- id:delegateMouse
- anchors.fill: parent
- onClicked: { setSearchResult(itemName); }
- }
- }
- }
-
- Component {
- id: listHighlight
- Rectangle {
- opacity: 0
- }
- }
-
- ListSelector {
- id:layoutList; text: search.searchContext; onChanged: setSearchResult()
- anchors.top: searchTxt.bottom; anchors.left: parent.left; anchors.topMargin: gui.height/16; anchors.leftMargin: gui.width/32
- width: page.width; height: page.height/2-cellar.height
- }
-
- Cellar {id: cellar; anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageSettings.qml b/navit/gui/qml/skins/navit/PageSettings.qml
deleted file mode 100644
index f7efcacd5..000000000
--- a/navit/gui/qml/skins/navit/PageSettings.qml
+++ /dev/null
@@ -1,54 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- border.width: 1
- color: "Black"
- opacity: 0
-
- function pageOpen() {
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Grid {
- columns: 3;rows: 1
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.bottom: parent.verticalCenter; anchors.bottomMargin: gui.height/16;
- spacing: gui.width/12
- ButtonIcon {
- id: btnDisplay; text: "Display"; icon: "gui_display.svg"; onClicked: Navit.load("PageSettingsDisplay.qml");
- }
- ButtonIcon {
- id: btnMap; text: "Map"; icon: "gui_maps.svg"; onClicked: console.log("Implement me!");
- }
- ButtonIcon {
- id: btnVehicle; text: "Vehicle"; icon: "gui_vehicle.svg"; onClicked: Navit.load("PageSettingsVehicle.qml");
- }
- }
- Grid {
- columns: 3;rows: 1
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.top: parent.verticalCenter; anchors.topMargin: gui.height/16;
- spacing: gui.width/12
- ButtonIcon {
- id: btnRules; text: "Rules"; icon: "gui_rules.svg"; onClicked: Navit.load("PageSettingsRules.qml");
- }
- ButtonIcon {
- id: btnTools; text: "Tools"; icon: "gui_tools.svg"; onClicked: Navit.load("PageSettingsTools.qml");
- }
- ButtonIcon {
- id: btnAbout; text: "About"; icon: "gui_about.svg"; onClicked: Navit.load("PageAbout.qml");
- }
- }
-
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageSettingsDisplay.qml b/navit/gui/qml/skins/navit/PageSettingsDisplay.qml
deleted file mode 100644
index 61db6a385..000000000
--- a/navit/gui/qml/skins/navit/PageSettingsDisplay.qml
+++ /dev/null
@@ -1,91 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- border.width: 1
- color: "Black"
- opacity: 0
-
- function setTripleD(flag) {
- if ( flag=="true" ) {
- navit.setAttr("pitch",gui.getAttr("pitch"));
- pitchSlider.value = navit.getAttr("pitch");
- pitchSlider.startup();
- pitchSlider.opacity = 1
- } else {
- navit.setAttr("pitch","0");
- pitchSlider.opacity = 0
- }
- }
-
- function isTripleD() {
- if ( navit.getAttr("pitch") == "0" )
- return "0";
- else
- return "1";
- }
-
- function pageOpen() {
- if ( isTripleD() == "1" ) {
- pitchSlider.opacity = 1
- }
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Component {
- id: listDelegate
- Item {
- id: wrapper
- width: list.width; height: 20
- Column {
- x: 5; y: 5
- Text { id: txtItemName; text: itemName; color: "White" }
- Text { id: txtItemDist; text: itemDistance; color: "White"; anchors.leftMargin: 5; anchors.left: txtItemName.right;anchors.top: txtItemName.top }
- Text { id: txtItemDirect; text: itemDirection; color: "White"; anchors.leftMargin: 5; anchors.left: txtItemDist.right;anchors.top: txtItemDist.top }
- }
- MouseArea {
- id:delegateMouse
- anchors.fill: parent
- onClicked: { list.currentIndex=itemId; listselector.value=itemValue; listselector.changed() }
- }
- }
- }
-
- CommonHighlight { id: listHighlight}
-
- ListSelector {
- id:layoutList; text: "Current layout"; itemId: navit.getAttrList("layout"); onChanged: navit.setObjectByName("layout",layoutList.value)
- anchors.top: parent.top;
- anchors.left: parent.left;
- anchors.topMargin: gui.height/16; anchors.leftMargin: gui.width/32
- width: page.width/2; height: page.height*0.25
- }
- Grid {
- columns: 1; rows: 3
- anchors.right: parent.right
- anchors.top: parent.top;
- anchors.topMargin: gui.height/16; anchors.leftMargin: gui.width/32
- spacing: gui.width/12
- ToggleSwitch {
- id: fullscreenSw; stOn: gui.getAttr("fullscreen"); text: "Fullscreen"; onChanged: gui.setAttr("fullscreen",fullscreenSw.stOn)
- }
- ToggleSwitch {
- id: tripledSw; stOn: page.isTripleD(); text: "2D/3D"; onChanged: setTripleD(tripledSw.stOn)
- }
- Slider {
- id: pitchSlider; minValue: 5; maxValue: 90; value: navit.getAttr("pitch"); text: "Pitch"; onChanged: { navit.setAttr("pitch",pitchSlider.value); gui.setAttr("pitch",pitchSlider.value) }
- opacity: 0
- }
- }
-
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageSettingsLocale.qml b/navit/gui/qml/skins/navit/PageSettingsLocale.qml
deleted file mode 100644
index 441248484..000000000
--- a/navit/gui/qml/skins/navit/PageSettingsLocale.qml
+++ /dev/null
@@ -1,33 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- border.width: 1
- color: "Black"
- opacity: 0
-
- function pageOpen() {
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Grid {
- columns: 1;rows: 3
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.verticalCenter: parent.verticalCenter;
-
- Text { id: lang; text: gui.localeName; color: "White";font.pointSize: gui.height/24 }
- Text { id: langname; text: gui.langName; color: "White";font.pointSize: gui.height/24 }
- Text { id: ctryname; text: gui.ctryName; color: "White";font.pointSize: gui.height/24 }
- }
-
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageSettingsRules.qml b/navit/gui/qml/skins/navit/PageSettingsRules.qml
deleted file mode 100644
index e5238f584..000000000
--- a/navit/gui/qml/skins/navit/PageSettingsRules.qml
+++ /dev/null
@@ -1,38 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- border.width: 1
- color: "Black"
- opacity: 0
-
- function pageOpen() {
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- VisualItemModel {
- id: selectorsModel
-
- ToggleSwitch { id: trackingSw; stOn: navit.getAttr("tracking"); text: "Lock on road"; onChanged: navit.setAttr("tracking",trackingSw.stOn) }
- ToggleSwitch { id: orientationSw; stOn: navit.getAttr("orientation"); text: "Northing"; onChanged: navit.setAttr("orientation",orientationSw.stOn) }
- ToggleSwitch { id: followcursorSw; stOn: navit.getAttr("follow_cursor"); text: "Map follows Vehicle"; onChanged: navit.setAttr("follow_cursor",followcursorSw.stOn) }
- ToggleSwitch { id: autozoomSw; stOn: navit.getAttr("autozoom_active"); text: "Auto zoom"; onChanged: navit.setAttr("autozoom_active",autozoomSw.stOn) }
- }
-
- ListView {
- id: selectorsList; model: selectorsModel
- focus: true; clip: true; orientation: Qt.Vertical
- anchors.verticalCenter: parent.verticalCenter; anchors.horizontalCenter: parent.horizontalCenter;
- width: trackingSw.width*1.5; height: trackingSw.height*4
- }
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageSettingsTools.qml b/navit/gui/qml/skins/navit/PageSettingsTools.qml
deleted file mode 100644
index a4af1222e..000000000
--- a/navit/gui/qml/skins/navit/PageSettingsTools.qml
+++ /dev/null
@@ -1,32 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- border.width: 1
- color: "Black"
- opacity: 0
-
- function pageOpen() {
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- Grid {
- columns: 1;rows: 1
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.verticalCenter: parent.verticalCenter;
- ButtonIcon {
- id: btnDisplay; text: "Locale"; icon: "gui_actions.svg"; onClicked: Navit.load("PageSettingsLocale.qml");
- }
- }
-
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/PageSettingsVehicle.qml b/navit/gui/qml/skins/navit/PageSettingsVehicle.qml
deleted file mode 100644
index 157afcb00..000000000
--- a/navit/gui/qml/skins/navit/PageSettingsVehicle.qml
+++ /dev/null
@@ -1,61 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: page
-
- width: gui.width; height: gui.height
- border.width: 1
- color: "Black"
- opacity: 0
-
- function pageOpen() {
- page.opacity = 1;
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
- XmlListModel {
- id: listModel
- xml: navit.getAttrList("vehicle");
- query: "/attributes/vehicle"
- XmlRole { name: "itemId"; query: "id/string()" }
- XmlRole { name: "itemName"; query: "name/string()" }
- }
-
- Component {
- id: listDelegate
- Item {
- id: wrapper
- width: list.width; height: txtItemName.height
- Column {
- x: 5; y: 5
- Text { id: txtItemName; text: itemName; color: "White"; font.pointSize: 42 }
- }
- MouseArea {
- id:delegateMouse
- anchors.fill: parent
- onClicked: { list.currentIndex=itemId; listselector.value=itemName; listselector.changed() }
- }
- }
- }
- CommonHighlight { id: listHighlight}
-
- ListSelector {
- id:vehicleList; text: "Current vehicle profile"; itemId: navit.itemId; onChanged: {navit.setObjectByName("vehicle",vehicleList.value) }
- anchors.top: parent.top; anchors.topMargin: gui.height/16; anchors.leftMargin: gui.width/32
- anchors.left: parent.left; width: page.width/2;height: page.height/2
- }
-
- ButtonIcon {
- id: btnVehicle; text: navit.getAttr("vehicle"); icon: "gui_vehicle.svg"; onClicked: Navit.load("PageSettingsVehicleOptions.qml");
- anchors.verticalCenter: vehicleList.verticalCenter; anchors.leftMargin: gui.width/32
- anchors.left: vehicleList.right;
- }
-
- Cellar {anchors.bottom: page.bottom; anchors.horizontalCenter: page.horizontalCenter; width: page.width }
-}
diff --git a/navit/gui/qml/skins/navit/Slider.qml b/navit/gui/qml/skins/navit/Slider.qml
deleted file mode 100644
index e4d56e031..000000000
--- a/navit/gui/qml/skins/navit/Slider.qml
+++ /dev/null
@@ -1,74 +0,0 @@
-import Qt 4.7
-
-Rectangle {
- id: slider
- width: background.width + label.width + gui.width/24; height: label.height
- color: "Black"
-
- property int minValue: 0
- property int value: 50
- property int maxValue: 100
- property string text: "Slider"
- signal changed
-
- function toSlider(inputVal) {
- return 2+(((inputVal-minValue)/(maxValue-minValue))*(background.width-knob.width-2));
- }
- function fromSlider(inputVal) {
- return minValue+(((inputVal-2)/(background.width-knob.width-2))*(maxValue-minValue));
- }
-
- function startup () {
- if ( slider.value < slider.minValue ) {
- slider.value = slider.minValue;
- }
- if ( slider.value > slider.maxValue ) {
- slider.value = slider.maxValue;
- }
- knob.x = toSlider(slider.value);
- }
-
- Component.onCompleted: startup();
-
- Rectangle {
- id: background
- x: 20; width: gui.width/5; height: gui.height/24
- gradient: Gradient {
- GradientStop { position: 0.0; color: "steelblue" }
- GradientStop { position: 1.0; color: "lightsteelblue" }
- }
- MouseArea {
- anchors.fill: parent
- onReleased: { knob.x=mouse.x-15; slider.value=Math.round(fromSlider(knob.x)); slider.changed(); }
- }
-
- radius: 8; opacity: 0.7
- Rectangle {
- id: knob
- x: 2; y: 2; width: gui.width/26; height: gui.height/35
- radius: 6
- gradient: Gradient {
- GradientStop { position: 0.0; color: "lightgray" }
- GradientStop { position: 1.0; color: "gray" }
- }
- MouseArea {
- anchors.fill: parent
- drag.target: parent; drag.axis: "XAxis"; drag.minimumX: 2; drag.maximumX: background.width-knob.width
- onPositionChanged: slider.value=Math.round(fromSlider(knob.x))
- onReleased: slider.changed()
- }
- }
- Text {
- id: valueTxt; text: slider.value; color: "White"; font.pointSize: gui.height/32;
- anchors.horizontalCenter: knob.horizontalCenter;
- anchors.verticalCenter: knob.verticalCenter
- }
- }
-
-
- Text {
- id: label; text: slider.text; color: "White"; font.pointSize: gui.height/24;
- anchors.left: background.right; anchors.leftMargin: gui.width/24;
- anchors.verticalCenter: background.verticalCenter
- }
-}
diff --git a/navit/gui/qml/skins/navit/ToggleButton.qml b/navit/gui/qml/skins/navit/ToggleButton.qml
deleted file mode 100644
index 29d986601..000000000
--- a/navit/gui/qml/skins/navit/ToggleButton.qml
+++ /dev/null
@@ -1,66 +0,0 @@
-import Qt 4.7
-
- Item {
- id: togglebutton
- width: imgItem.width + txtItem.width + gui.width/24; height: imgItem.height
-
- property string stOn: "false"
- property string text: "Toggle button"
- property string icon: "Icon.png"
-
- signal changed
-
- function toggle() {
- if (togglebutton.state == "on")
- togglebutton.state = "off";
- else
- togglebutton.state = "on";
- }
-
- function startup () {
- if (togglebutton.stOn == "1" )
- togglebutton.stOn = "true";
- else if (togglebutton.stOn == "0" )
- togglebutton.stOn = "false";
- if (togglebutton.stOn == "true")
- togglebutton.state = "on";
- else
- togglebutton.state = "off";
- }
-
- Component.onCompleted: startup();
-
- MouseArea { id: mr; anchors.fill: parent; onReleased: toggle() }
-
- Image {
- id: imgItem; source: gui.iconPath+togglebutton.icon; anchors.top: togglebutton.top; anchors.horizontalCenter: togglebutton.horizontalCenter;
- width: gui.height/32; height: gui.height/32
- }
-
- Text {
- id: txtItem; text: togglebutton.text; anchors.top: imgItem.bottom; anchors.horizontalCenter: togglebutton.horizontalCenter;
- color: "White"; font.pointSize: gui.height/64; horizontalAlignment: Qt.AlignHCenter
- }
-
- states: [
- State {
- name: "on"
- PropertyChanges { target: imgItem; opacity: 1 }
- PropertyChanges { target: txtItem; opacity: 1 }
- PropertyChanges { target: togglebutton; stOn: "true" }
- StateChangeScript { script: togglebutton.changed(); }
- },
- State {
- name: "off"
- PropertyChanges { target: imgItem; opacity: 0.3 }
- PropertyChanges { target: txtItem; opacity: 0.3 }
- PropertyChanges { target: togglebutton; stOn: "false" }
- StateChangeScript { script: togglebutton.changed(); }
- }
- ]
-
- transitions: Transition {
- NumberAnimation { properties: "scale"; easing.type: "OutExpo"; duration: 200 }
- NumberAnimation { properties: "opacity"; easing.type: "InQuad"; duration: 200 }
- }
- }
diff --git a/navit/gui/qml/skins/navit/ToggleSwitch.qml b/navit/gui/qml/skins/navit/ToggleSwitch.qml
deleted file mode 100644
index b1b262461..000000000
--- a/navit/gui/qml/skins/navit/ToggleSwitch.qml
+++ /dev/null
@@ -1,72 +0,0 @@
-import Qt 4.7
-
- Item {
- id: toggleswitch
- width: background.width + label.width + gui.width/24; height: background.height
-
- property string stOn: "false"
- property string text: "Toggle switch"
- signal changed
-
- function toggle() {
- if (toggleswitch.state == "on")
- toggleswitch.state = "off";
- else toggleswitch.state = "on";
- }
-
- function startup () {
- if (toggleswitch.stOn == "1" )
- toggleswitch.stOn = "true";
- else if (toggleswitch.stOn == "0" )
- toggleswitch.stOn = "false";
- if (toggleswitch.stOn == "true")
- toggleswitch.state = "on";
- else
- toggleswitch.state = "off";
- }
-
- Component.onCompleted: startup();
-
- Text {
- id: label; text: toggleswitch.text; color: "White"; font.pointSize: gui.height/20;
- anchors.left: background.right; anchors.leftMargin: gui.width/24;
- anchors.verticalCenter: background.verticalCenter
- }
-
-
- Image {
- id: background; source: "background.svg"
- MouseArea { anchors.fill: parent; onClicked: toggle() }
- height: gui.height/6; width: height*2.4;
- }
-
- Image {
- id: knob; source: "knob.svg"; x: 1; y: 2
- height: gui.height/6; width: gui.height/6;
-
- MouseArea {
- anchors.fill: parent
- drag.target: knob; drag.axis: "XAxis"; drag.minimumX: 1; drag.maximumX: background.width-knob.width
- hoverEnabled: false; onReleased: toggle()
- }
- }
-
- states: [
- State {
- name: "on"
- PropertyChanges { target: knob; x: background.width-knob.width }
- PropertyChanges { target: toggleswitch; stOn: "true" }
- StateChangeScript { script: toggleswitch.changed(); }
- },
- State {
- name: "off"
- PropertyChanges { target: knob; x: 1 }
- PropertyChanges { target: toggleswitch; stOn: "false" }
- StateChangeScript { script: toggleswitch.changed(); }
- }
- ]
-
- transitions: Transition {
- NumberAnimation { properties: "x"; easing.type: "InOutQuad"; duration: 200 }
- }
- }
diff --git a/navit/gui/qml/skins/navit/background.svg b/navit/gui/qml/skins/navit/background.svg
deleted file mode 100644
index f920d3e47..000000000
--- a/navit/gui/qml/skins/navit/background.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-]>
-<svg version="1.1"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- x="0px" y="0px" width="130px" height="56px" viewBox="0 0 130 56" enable-background="new 0 0 130 56" xml:space="preserve">
-<defs>
-</defs>
-<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-37.5005" y1="-66" x2="-37.5005" y2="-121.9985" gradientTransform="matrix(1 0 0 -1 102.5 -66)">
- <stop offset="0.0056" style="stop-color:#000000"/>
- <stop offset="1" style="stop-color:#EAECEF"/>
-</linearGradient>
-<path fill="url(#SVGID_1_)" d="M101.998,55.998H28c-15.439,0-28-12.562-28-28C0,12.56,12.561,0,28,0h73.998
- c15.439,0,28,12.559,28,27.998C129.998,43.438,117.438,55.998,101.998,55.998L101.998,55.998z"/>
-<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-5.5" y1="-132.1338" x2="-69.5002" y2="-55.8613" gradientTransform="matrix(1 0 0 -1 102.5 -66)">
- <stop offset="0.0056" style="stop-color:#000000"/>
- <stop offset="1" style="stop-color:#828385"/>
-</linearGradient>
-<path fill="url(#SVGID_2_)" d="M127.999,27.998c0,14.359-11.642,26-26,26h-74c-14.359,0-26-11.641-26-26l0,0
- c0-14.359,11.641-26,26-26h74C116.357,1.998,127.999,13.639,127.999,27.998L127.999,27.998z"/>
-</svg>
diff --git a/navit/gui/qml/skins/navit/command.js b/navit/gui/qml/skins/navit/command.js
deleted file mode 100644
index 071653acf..000000000
--- a/navit/gui/qml/skins/navit/command.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import Qt 4.7
-
-Rectangle {
- id: page
-
- function pageOpen(command) {
- if ( command=="menu") {
- gui.returnSource="";
- Loader {source: "main.qml"};
- }
- if (command=="quit") {
- navit.quit();
- }
-
- }
-
- Component.onCompleted: pageOpen(gui.commandFunction);
-
- Text { id: myText; anchors.centerIn: parent; text: "Hi, i'm Navit!"; color: "Black"; font.pointSize: gui.height/32 }
-}
diff --git a/navit/gui/qml/skins/navit/knob.svg b/navit/gui/qml/skins/navit/knob.svg
deleted file mode 100644
index fb6933718..000000000
--- a/navit/gui/qml/skins/navit/knob.svg
+++ /dev/null
@@ -1,867 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- x="0px"
- y="0px"
- width="52px"
- height="52px"
- viewBox="0 0 52 52"
- enable-background="new 0 0 52 52"
- xml:space="preserve"
- id="svg3883"
- sodipodi:version="0.32"
- inkscape:version="0.44.1"
- sodipodi:docname="knob_on.svg"
- sodipodi:docbase="/local/axel/embeddedwidgets/embeddedstories/skins/svgslideswitch/MetallicBrush"><metadata
- id="metadata4200"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
- inkscape:window-height="640"
- inkscape:window-width="937"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- inkscape:zoom="8.3653846"
- inkscape:cx="26.000002"
- inkscape:cy="26"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:current-layer="svg3883" />
-<defs
- id="defs3885">
-</defs>
-<linearGradient
- id="SVGID_1_"
- gradientUnits="userSpaceOnUse"
- x1="-59.7866"
- y1="-115.917"
- x2="-93.2123"
- y2="-76.0818"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#000000"
- id="stop3888" />
- <stop
- offset="1"
- style="stop-color:#EAECEF"
- id="stop3890" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="26"
- id="circle3892"
- style="fill:url(#SVGID_1_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="26"
- sodipodi:ry="26"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_2_"
- gradientUnits="userSpaceOnUse"
- x1="-100.5"
- y1="-96"
- x2="-52.5"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop3895" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop3897" />
- <stop
- offset="0.6043"
- style="stop-color:#E7EAED"
- id="stop3899" />
- <stop
- offset="0.6751"
- style="stop-color:#DEE4E7"
- id="stop3901" />
- <stop
- offset="0.7358"
- style="stop-color:#CFD9DD"
- id="stop3903" />
- <stop
- offset="0.791"
- style="stop-color:#B9CACF"
- id="stop3905" />
- <stop
- offset="0.8425"
- style="stop-color:#9EB6BD"
- id="stop3907" />
- <stop
- offset="0.891"
- style="stop-color:#7B9EA7"
- id="stop3909" />
- <stop
- offset="0.9374"
- style="stop-color:#53828C"
- id="stop3911" />
- <stop
- offset="0.9809"
- style="stop-color:#25626E"
- id="stop3913" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop3915" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="24"
- id="circle3917"
- style="fill:url(#SVGID_2_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="24"
- sodipodi:ry="24"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_3_"
- gradientUnits="userSpaceOnUse"
- x1="-98.6328"
- y1="-96"
- x2="-54.3672"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop3920" />
- <stop
- offset="0.073"
- style="stop-color:#8FAECB"
- id="stop3922" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop3924" />
- <stop
- offset="0.5902"
- style="stop-color:#E7E9ED"
- id="stop3926" />
- <stop
- offset="0.618"
- style="stop-color:#E4E7EB"
- id="stop3928" />
- <stop
- offset="0.6697"
- style="stop-color:#E0E4E9"
- id="stop3930" />
- <stop
- offset="0.7211"
- style="stop-color:#D4DCE1"
- id="stop3932" />
- <stop
- offset="0.7722"
- style="stop-color:#C0CFD5"
- id="stop3934" />
- <stop
- offset="0.809"
- style="stop-color:#ADC2C9"
- id="stop3936" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop3938" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="22.132999"
- id="circle3940"
- style="fill:url(#SVGID_3_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="22.132999"
- sodipodi:ry="22.132999"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_4_"
- gradientUnits="userSpaceOnUse"
- x1="-96.7671"
- y1="-96"
- x2="-56.2324"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop3943" />
- <stop
- offset="0.073"
- style="stop-color:#86A7C4"
- id="stop3945" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop3947" />
- <stop
- offset="0.577"
- style="stop-color:#E7EAED"
- id="stop3949" />
- <stop
- offset="0.618"
- style="stop-color:#E1E6EA"
- id="stop3951" />
- <stop
- offset="0.6697"
- style="stop-color:#DDE3E8"
- id="stop3953" />
- <stop
- offset="0.7211"
- style="stop-color:#D1DBE1"
- id="stop3955" />
- <stop
- offset="0.7722"
- style="stop-color:#BDCDD5"
- id="stop3957" />
- <stop
- offset="0.809"
- style="stop-color:#AAC0CA"
- id="stop3959" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop3961" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="20.267"
- id="circle3963"
- style="fill:url(#SVGID_4_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="20.267"
- sodipodi:ry="20.267"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_5_"
- gradientUnits="userSpaceOnUse"
- x1="-94.8999"
- y1="-96"
- x2="-58.0996"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop3966" />
- <stop
- offset="0.073"
- style="stop-color:#7E9FBC"
- id="stop3968" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop3970" />
- <stop
- offset="0.5709"
- style="stop-color:#E6E9ED"
- id="stop3972" />
- <stop
- offset="0.618"
- style="stop-color:#DFE4E9"
- id="stop3974" />
- <stop
- offset="0.6687"
- style="stop-color:#DBE1E7"
- id="stop3976" />
- <stop
- offset="0.7193"
- style="stop-color:#CFD9E0"
- id="stop3978" />
- <stop
- offset="0.7695"
- style="stop-color:#BBCCD6"
- id="stop3980" />
- <stop
- offset="0.809"
- style="stop-color:#A6BECA"
- id="stop3982" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop3984" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="18.4"
- id="circle3986"
- style="fill:url(#SVGID_5_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="18.4"
- sodipodi:ry="18.4"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_6_"
- gradientUnits="userSpaceOnUse"
- x1="-93.0332"
- y1="-96"
- x2="-59.9668"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop3989" />
- <stop
- offset="0.073"
- style="stop-color:#7697B4"
- id="stop3991" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop3993" />
- <stop
- offset="0.5636"
- style="stop-color:#E6E9ED"
- id="stop3995" />
- <stop
- offset="0.618"
- style="stop-color:#DCE2E8"
- id="stop3997" />
- <stop
- offset="0.6687"
- style="stop-color:#D8DFE6"
- id="stop3999" />
- <stop
- offset="0.7193"
- style="stop-color:#CCD7E0"
- id="stop4001" />
- <stop
- offset="0.7695"
- style="stop-color:#B8CAD5"
- id="stop4003" />
- <stop
- offset="0.809"
- style="stop-color:#A3BCCA"
- id="stop4005" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop4007" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="16.533001"
- id="circle4009"
- style="fill:url(#SVGID_6_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="16.533001"
- sodipodi:ry="16.533001"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_7_"
- gradientUnits="userSpaceOnUse"
- x1="-91.167"
- y1="-96"
- x2="-61.833"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop4012" />
- <stop
- offset="0.073"
- style="stop-color:#6D8FAD"
- id="stop4014" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop4016" />
- <stop
- offset="0.5605"
- style="stop-color:#E5E8EC"
- id="stop4018" />
- <stop
- offset="0.618"
- style="stop-color:#DAE1E7"
- id="stop4020" />
- <stop
- offset="0.6679"
- style="stop-color:#D6DEE5"
- id="stop4022" />
- <stop
- offset="0.7175"
- style="stop-color:#CAD6DF"
- id="stop4024" />
- <stop
- offset="0.7669"
- style="stop-color:#B6C9D6"
- id="stop4026" />
- <stop
- offset="0.809"
- style="stop-color:#9FBACB"
- id="stop4028" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop4030" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="14.667"
- id="circle4032"
- style="fill:url(#SVGID_7_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="14.667"
- sodipodi:ry="14.667"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_8_"
- gradientUnits="userSpaceOnUse"
- x1="-89.2998"
- y1="-96"
- x2="-63.7002"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop4035" />
- <stop
- offset="0.073"
- style="stop-color:#6587A5"
- id="stop4037" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop4039" />
- <stop
- offset="0.5588"
- style="stop-color:#E4E8EC"
- id="stop4041" />
- <stop
- offset="0.618"
- style="stop-color:#D8DFE7"
- id="stop4043" />
- <stop
- offset="0.6675"
- style="stop-color:#D4DCE5"
- id="stop4045" />
- <stop
- offset="0.7167"
- style="stop-color:#C8D5E0"
- id="stop4047" />
- <stop
- offset="0.7657"
- style="stop-color:#B4C8D6"
- id="stop4049" />
- <stop
- offset="0.809"
- style="stop-color:#9CB8CB"
- id="stop4051" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop4053" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="12.8"
- id="circle4055"
- style="fill:url(#SVGID_8_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="12.8"
- sodipodi:ry="12.8"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_9_"
- gradientUnits="userSpaceOnUse"
- x1="-87.4331"
- y1="-96"
- x2="-65.5664"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop4058" />
- <stop
- offset="0.073"
- style="stop-color:#5D809D"
- id="stop4060" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop4062" />
- <stop
- offset="0.5567"
- style="stop-color:#E3E7EC"
- id="stop4064" />
- <stop
- offset="0.618"
- style="stop-color:#D5DDE6"
- id="stop4066" />
- <stop
- offset="0.6671"
- style="stop-color:#D1DAE4"
- id="stop4068" />
- <stop
- offset="0.7159"
- style="stop-color:#C5D3DF"
- id="stop4070" />
- <stop
- offset="0.7645"
- style="stop-color:#B1C6D6"
- id="stop4072" />
- <stop
- offset="0.809"
- style="stop-color:#98B5CB"
- id="stop4074" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop4076" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="10.933"
- id="circle4078"
- style="fill:url(#SVGID_9_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="10.933"
- sodipodi:ry="10.933"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_10_"
- gradientUnits="userSpaceOnUse"
- x1="-85.5659"
- y1="-96"
- x2="-67.4336"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop4081" />
- <stop
- offset="0.073"
- style="stop-color:#547896"
- id="stop4083" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop4085" />
- <stop
- offset="0.5588"
- style="stop-color:#E1E6EB"
- id="stop4087" />
- <stop
- offset="0.618"
- style="stop-color:#D3DCE5"
- id="stop4089" />
- <stop
- offset="0.6663"
- style="stop-color:#CFD9E3"
- id="stop4091" />
- <stop
- offset="0.7143"
- style="stop-color:#C3D2DF"
- id="stop4093" />
- <stop
- offset="0.7621"
- style="stop-color:#AFC5D7"
- id="stop4095" />
- <stop
- offset="0.809"
- style="stop-color:#94B3CC"
- id="stop4097" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop4099" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="9.066"
- id="circle4101"
- style="fill:url(#SVGID_10_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="9.066"
- sodipodi:ry="9.066"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_11_"
- gradientUnits="userSpaceOnUse"
- x1="-83.7002"
- y1="-96"
- x2="-69.2998"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop4104" />
- <stop
- offset="0.073"
- style="stop-color:#4C708E"
- id="stop4106" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop4108" />
- <stop
- offset="0.5625"
- style="stop-color:#DEE4EA"
- id="stop4110" />
- <stop
- offset="0.618"
- style="stop-color:#D0DAE4"
- id="stop4112" />
- <stop
- offset="0.6663"
- style="stop-color:#CCD7E2"
- id="stop4114" />
- <stop
- offset="0.7143"
- style="stop-color:#C0D0DE"
- id="stop4116" />
- <stop
- offset="0.7621"
- style="stop-color:#ACC3D6"
- id="stop4118" />
- <stop
- offset="0.809"
- style="stop-color:#91B1CC"
- id="stop4120" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop4122" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="7.1999998"
- id="circle4124"
- style="fill:url(#SVGID_11_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="7.1999998"
- sodipodi:ry="7.1999998"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_12_"
- gradientUnits="userSpaceOnUse"
- x1="-81.833"
- y1="-96"
- x2="-71.167"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop4127" />
- <stop
- offset="0.073"
- style="stop-color:#446986"
- id="stop4129" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop4131" />
- <stop
- offset="0.5757"
- style="stop-color:#D9E0E8"
- id="stop4133" />
- <stop
- offset="0.618"
- style="stop-color:#CED8E3"
- id="stop4135" />
- <stop
- offset="0.6655"
- style="stop-color:#CAD5E2"
- id="stop4137" />
- <stop
- offset="0.7129"
- style="stop-color:#BECEDD"
- id="stop4139" />
- <stop
- offset="0.7601"
- style="stop-color:#AAC1D6"
- id="stop4141" />
- <stop
- offset="0.807"
- style="stop-color:#8EB0CC"
- id="stop4143" />
- <stop
- offset="0.809"
- style="stop-color:#8DAFCC"
- id="stop4145" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop4147" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="5.3330002"
- id="circle4149"
- style="fill:url(#SVGID_12_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="5.3330002"
- sodipodi:ry="5.3330002"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_13_"
- gradientUnits="userSpaceOnUse"
- x1="-79.9658"
- y1="-96"
- x2="-73.0342"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop4152" />
- <stop
- offset="0.073"
- style="stop-color:#3B617F"
- id="stop4154" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop4156" />
- <stop
- offset="0.6087"
- style="stop-color:#CED9E3"
- id="stop4158" />
- <stop
- offset="0.618"
- style="stop-color:#CBD7E2"
- id="stop4160" />
- <stop
- offset="0.6655"
- style="stop-color:#C7D4E1"
- id="stop4162" />
- <stop
- offset="0.7129"
- style="stop-color:#BBCDDD"
- id="stop4164" />
- <stop
- offset="0.7601"
- style="stop-color:#A7C0D6"
- id="stop4166" />
- <stop
- offset="0.807"
- style="stop-color:#8BAECD"
- id="stop4168" />
- <stop
- offset="0.809"
- style="stop-color:#8AADCD"
- id="stop4170" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop4172" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="3.4660001"
- id="circle4174"
- style="fill:url(#SVGID_13_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="3.4660001"
- sodipodi:ry="3.4660001"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-<linearGradient
- id="SVGID_14_"
- gradientUnits="userSpaceOnUse"
- x1="-78.1001"
- y1="-96"
- x2="-74.9004"
- y2="-96"
- gradientTransform="matrix(1,0,0,-1,102.5,-70)">
- <stop
- offset="0.0056"
- style="stop-color:#8AADCE"
- id="stop4177" />
- <stop
- offset="0.073"
- style="stop-color:#335977"
- id="stop4179" />
- <stop
- offset="0.5"
- style="stop-color:#EAECEF"
- id="stop4181" />
- <stop
- offset="0.618"
- style="stop-color:#C9D5E1"
- id="stop4183" />
- <stop
- offset="0.6648"
- style="stop-color:#C5D3E0"
- id="stop4185" />
- <stop
- offset="0.7114"
- style="stop-color:#B9CBDC"
- id="stop4187" />
- <stop
- offset="0.758"
- style="stop-color:#A5BFD6"
- id="stop4189" />
- <stop
- offset="0.8042"
- style="stop-color:#89ADCE"
- id="stop4191" />
- <stop
- offset="0.809"
- style="stop-color:#86ABCD"
- id="stop4193" />
- <stop
- offset="1"
- style="stop-color:#0E525F"
- id="stop4195" />
-</linearGradient>
-<circle
- cx="26"
- cy="26"
- r="1.6"
- id="circle4197"
- style="fill:url(#SVGID_14_)"
- sodipodi:cx="26"
- sodipodi:cy="26"
- sodipodi:rx="1.6"
- sodipodi:ry="1.6"
- transform="matrix(0.923077,0,0,0.923077,2,1.999996)" />
-</svg> \ No newline at end of file
diff --git a/navit/gui/qml/skins/navit/main.qml b/navit/gui/qml/skins/navit/main.qml
deleted file mode 100644
index 20b93d113..000000000
--- a/navit/gui/qml/skins/navit/main.qml
+++ /dev/null
@@ -1,31 +0,0 @@
-import Qt 4.7
-import "pagenavigation.js" as Navit
-
-Rectangle {
- id: main
- property variant returnPath:[ "test" ]
-
- width: gui.width; height: gui.height
- color: "Black"
-
- function pageOpen() {
- Navit.load("PageMain.qml");
- }
-
- Component.onCompleted: pageOpen();
-
- Behavior on opacity {
- NumberAnimation { id: opacityAnimation; duration: 300; alwaysRunToEnd: true }
- }
-
-
- Loader {
- id: pageLoader;
- width: gui.width;
- height: gui.height-cellar.height;
- anchors.horizontalCenter: parent.horizontalCenter;
- anchors.verticalCenter: parent.verticalCenter;
- }
-
- Cellar {id: cellar;anchors.bottom: main.bottom; anchors.horizontalCenter: main.horizontalCenter; width: main.width }
-}
diff --git a/navit/gui/qml/skins/navit/pagenavigation.js b/navit/gui/qml/skins/navit/pagenavigation.js
deleted file mode 100644
index f5b8dc43e..000000000
--- a/navit/gui/qml/skins/navit/pagenavigation.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var returnPath=new Array();
-
-function load(page) {
- gui.pushPage(page);
- pageLoader.source=page;
- cellar.onStartup(page);
-}
-
-function back() {
- var page=gui.popPage();
- console.log(page);
- pageLoader.source=page;
- cellar.onStartup(page);
-}
-
diff --git a/navit/gui/qml/vehicleProxy.h b/navit/gui/qml/vehicleProxy.h
deleted file mode 100644
index 483a1837b..000000000
--- a/navit/gui/qml/vehicleProxy.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef NAVIT_GUI_QML_VEHICLEPROXY_H
-#define NAVIT_GUI_QML_VEHICLEPROXY_H
-
-class NGQProxyVehicle : public NGQProxy {
- Q_OBJECT;
-
-public:
- NGQProxyVehicle(struct gui_priv* object, QObject* parent) : NGQProxy(object,parent) { };
-
-public slots:
-
-protected:
- int getAttrFunc(enum attr_type type, struct attr* attr, struct attr_iter* iter) { return vehicle_get_attr(this->object->currVehicle, type, attr, iter); }
- int setAttrFunc(struct attr* attr) {return vehicle_set_attr(this->object->currVehicle,attr); }
- struct attr_iter* getIterFunc() { return vehicle_attr_iter_new(); };
- void dropIterFunc(struct attr_iter* iter) { vehicle_attr_iter_destroy(iter); };
-
-private:
-
-};
-
-#include "vehicleProxy.moc"
-
-#endif /* NAVIT_GUI_QML_VEHICLEPROXY_H */
diff --git a/navit/gui/qt5_qml/CMakeLists.txt b/navit/gui/qt5_qml/CMakeLists.txt
deleted file mode 100644
index 770c9a2f0..000000000
--- a/navit/gui/qt5_qml/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# Find includes in corresponding build directories
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-# Instruct CMake to run moc automatically when needed.
-set(CMAKE_AUTOMOC ON)
-
-qt5_add_resources(GUI_QT5_QML_QRC "gui_qt5_qml.qrc")
-
-module_add_library(gui_qt5_qml gui_qt5_qml.cpp ${GUI_QT5_QML_QRC} backend.cpp
- qml_map.cpp qml_poi.cpp qml_vehicle.cpp qml_bookmark.cpp qml_search.cpp proxy.c)
diff --git a/navit/gui/qt5_qml/backend.cpp b/navit/gui/qt5_qml/backend.cpp
deleted file mode 100644
index 395fff425..000000000
--- a/navit/gui/qt5_qml/backend.cpp
+++ /dev/null
@@ -1,603 +0,0 @@
-#include <glib.h>
-
-#include "item.h"
-#include "attr.h"
-#include "navit.h"
-#include "xmlconfig.h" // for NAVIT_OBJECT
-#include "layout.h"
-#include "map.h"
-#include "transform.h"
-#include "vehicle.h"
-#include "bookmarks.h"
-#include "backend.h"
-
-#include "qml_map.h"
-#include "qml_poi.h"
-#include "qml_search.h"
-
-#include "mapset.h"
-
-#include <QQmlContext>
-
-#include "search.h"
-
-extern "C" {
-#include "proxy.h"
-}
-
-Backend::Backend(QObject * parent):QObject(parent)
-{
- set_default_country();
- this->search = NULL;
- _current_town = NULL;
- _current_street = NULL;
-}
-
-/**
- * @brief Set some variables and display the main menu
- * @param struct point *p the point coordinate where we clicked on the screen
- * @returns nothing
- */
-void Backend::showMenu(struct point *p)
-{
- struct coord co;
-
- transform_reverse(navit_get_trans(nav), p, &co);
- dbg(lvl_debug, "Point 0x%x 0x%x\n", co.x, co.y);
- dbg(lvl_debug, "Screen coord : %d %d\n", p->x, p->y);
- transform_to_geo(transform_get_projection(navit_get_trans(nav)), &co, &(this->g));
- dbg(lvl_debug, "%f %f\n", this->g.lat, this->g.lng);
- dbg(lvl_debug, "%p %p\n", nav, &c);
- this->c.pro = transform_get_projection(navit_get_trans(nav));
- this->c.x = co.x;
- this->c.y = co.y;
- dbg(lvl_debug, "c : %x %x\n", this->c.x, this->c.y);
-
- // As a test, set the Demo vehicle position to wherever we just clicked
- navit_set_position(this->nav, &c);
- navit_block(this->nav, 1);
- emit displayMenu("MainMenu.qml");
-}
-
-/**
- * @brief update the private m_maps list. Expected to be called from QML
- * @param none
- * @returns nothing
- */
-void Backend::get_maps()
-{
- struct attr attr, on, off, description, type, data, active;
- char * label;
- bool is_active;
- struct attr_iter * iter;
- _maps.clear();
-
- iter = navit_attr_iter_new();
- on.type = off.type = attr_active;
- on.u.num = 1;
- off.u.num = 0;
- while (navit_get_attr(this->nav, attr_map, &attr, iter)) {
- if (map_get_attr(attr.u.map, attr_description, &description, NULL)) {
- label = g_strdup(description.u.str);
- } else {
- if (!map_get_attr(attr.u.map, attr_type, &type, NULL))
- type.u.str = "";
- if (!map_get_attr(attr.u.map, attr_data, &data, NULL))
- data.u.str = "";
- label = g_strdup_printf("%s:%s", type.u.str, data.u.str);
- }
- is_active = false;
- if (map_get_attr(attr.u.map, attr_active, &active, NULL)) {
- if (active.u.num == 1) {
- is_active = true;
- }
- }
- _maps.append(new MapObject(label, is_active));
- }
- emit mapsChanged();
-}
-
-
-/**
- * @brief update the private m_vehicles list. Expected to be called from QML
- * @param none
- * @returns nothing
- */
-void Backend::get_vehicles()
-{
- struct attr attr,attr2,vattr;
- struct attr_iter *iter;
- struct attr active_vehicle;
- _vehicles.clear();
-
- iter=navit_attr_iter_new();
- if (navit_get_attr(this->nav, attr_vehicle, &attr, iter) && !navit_get_attr(this->nav, attr_vehicle, &attr2, iter)) {
- vehicle_get_attr(attr.u.vehicle, attr_name, &vattr, NULL);
- navit_attr_iter_destroy(iter);
- _vehicles.append(new VehicleObject(g_strdup(vattr.u.str), active_vehicle.u.vehicle, attr.u.vehicle));
- dbg(lvl_debug, "done\n");
- emit vehiclesChanged();
- return;
- }
- navit_attr_iter_destroy(iter);
-
- if (!navit_get_attr(this->nav, attr_vehicle, &active_vehicle, NULL))
- active_vehicle.u.vehicle=NULL;
- iter=navit_attr_iter_new();
- while(navit_get_attr(this->nav, attr_vehicle, &attr, iter)) {
- vehicle_get_attr(attr.u.vehicle, attr_name, &vattr, NULL);
- dbg(lvl_debug, "adding vehicle %s\n", vattr.u.str);
- _vehicles.append(
- new VehicleObject(
- g_strdup(vattr.u.str),
- attr.u.vehicle == active_vehicle.u.vehicle,
- attr.u.vehicle
- )
- );
- }
- navit_attr_iter_destroy(iter);
- emit vehiclesChanged();
-}
-
-/**
- * @brief set a pointer to the struct navit * for local use
- * @param none
- * @returns nothing
- */
-void Backend::set_navit(struct navit *nav)
-{
- this->nav = nav;
-}
-
-/**
- * @brief set a pointer to the QQmlApplicationEngine * for local use
- * @param none
- * @returns nothing
- */
-void Backend::set_engine(QQmlApplicationEngine * engine)
-{
- this->engine = engine;
-}
-
-/**
- * @brief apply search filters on one specific item
- * @param struct item * the item to filter
- * @returns 0 if the item should be discarded, 1 otherwise
- */
-int Backend::filter_pois(struct item *item)
-{
- enum item_type *types;
- enum item_type type=item->type;
- if (type >= type_line)
- return 0;
- return 1;
-}
-
-/**
- * @brief update the private m_bookmarks list. Expected to be called from QML
- * @param none
- * @returns nothing
- */
-void Backend::get_bookmarks()
-{
- struct attr attr,mattr;
- struct navigation * nav = NULL;
- struct item *item;
- struct coord c;
- struct pcoord pc;
-
- _bookmarks.clear();
-
- pc.pro = transform_get_projection(navit_get_trans(this->nav));
-
- if(navit_get_attr(this->nav, attr_bookmarks, &mattr, NULL) ) {
- bookmarks_item_rewind(mattr.u.bookmarks);
- while ((item=bookmarks_get_item(mattr.u.bookmarks))) {
- if (!item_attr_get(item, attr_label, &attr)) continue;
- dbg(lvl_debug,"full_label: %s\n", attr.u.str);
- if (item_coord_get(item, &c, 1)) {
- pc.x = c.x;
- pc.y = c.y;
- dbg(lvl_debug, "coords : %i x %i\n", pc.x, pc.y);
- _bookmarks.append(new BookmarkObject(attr.u.str, pc));
- }
- }
- }
- emit bookmarksChanged();
-}
-
-/**
- * @brief update the private m_pois list. Expected to be called from QML
- * @param none
- * @returns nothing
- */
-void Backend::get_pois()
-{
- struct map_selection * sel, * selm;
- struct coord c, center;
- struct mapset_handle * h;
- struct map * m;
- struct map_rect * mr;
- struct item * item;
- enum projection pro = this->c.pro;
- int idist, dist;
- _pois.clear();
- dist = 10000;
- sel = map_selection_rect_new(&(this->c), dist * transform_scale(abs(this->c.y) + dist * 1.5), 18);
- center.x = this->c.x;
- center.y = this->c.y;
-
- dbg(lvl_debug, "center is at %x, %x\n", center.x, center.y);
-
- h = mapset_open(navit_get_mapset(this->nav));
- while ((m = mapset_next(h, 1))) {
- selm = map_selection_dup_pro(sel, pro, map_projection(m));
- mr = map_rect_new(m, selm);
- dbg(lvl_debug, "mr=%p\n", mr);
- if (mr) {
- while ((item = map_rect_get_item(mr))) {
- if ( filter_pois(item) &&
- item_coord_get_pro(item, &c, 1, pro) &&
- coord_rect_contains(&sel->u.c_rect, &c) &&
- (idist=transform_distance(pro, &center, &c)) < dist) {
-
- struct attr attr;
- char * label;
- char * icon = get_icon(this->nav, item);
- struct pcoord item_coord;
- item_coord.pro = transform_get_projection(navit_get_trans(nav));
- item_coord.x = c.x;
- item_coord.y = c.y;
-
- idist = transform_distance(pro, &center, &c);
- if (item_attr_get(item, attr_label, &attr)) {
- label = map_convert_string(item->map, attr.u.str);
- if (icon) {
- _pois.append(new PoiObject(label, item_to_name(item->type), idist, icon, item_coord));
- }
- }
- }
- }
- map_rect_destroy(mr);
- }
- map_selection_destroy(selm);
- }
- map_selection_destroy(sel);
- mapset_close(h);
- emit poisChanged();
-}
-
-/**
- * @brief get the POIs as a QList
- * @param none
- * @returns the pois QList
- */
-QQmlListProperty<QObject> Backend::getPois(){
- return QQmlListProperty<QObject>(this, _pois);
-}
-
-/**
- * @brief get the Bookmarks as a QList
- * @param none
- * @returns the bookmarks QList
- */
-QQmlListProperty<QObject> Backend::getBookmarks(){
- return QQmlListProperty<QObject>(this, _bookmarks);
-}
-
-/**
- * @brief get the maps as a QList
- * @param none
- * @returns the maps QList
- */
-QQmlListProperty<QObject> Backend::getMaps(){
- return QQmlListProperty<QObject>(this, _maps);
-}
-
-
-/**
- * @brief get the vehicles as a QList
- * @param none
- * @returns the vehicles QList
- */
-QQmlListProperty<QObject> Backend::getVehicles(){
- return QQmlListProperty<QObject>(this, _vehicles);
-}
-
-/**
- * @brief get the search results as a QList
- * @param none
- * @returns the search results QList
- */
-QQmlListProperty<QObject> Backend::getSearchResults(){
- return QQmlListProperty<QObject>(this, _search_results);
-}
-
-/**
- * @brief get the active POI. Used when displaying the relevant menu
- * @param none
- * @returns the active POI
- */
-PoiObject * Backend::activePoi() {
- dbg(lvl_debug, "name : %s\n", m_activePoi->name().toUtf8().data());
- dbg(lvl_debug, "type : %s\n", m_activePoi->type().toLatin1().data());
- return m_activePoi;
-}
-
-/**
- * @brief get the current bookmark. Used when displaying the relevant menu
- * @param none
- * @returns the current bookmark
- */
-BookmarkObject * Backend::currentBookmark() {
- return m_currentBookmark;
-}
-
-/**
- * @brief get the currently selected vehicle. Used when displaying the relevant menu
- * @param none
- * @returns the active POI
- */
-VehicleObject * Backend::currentVehicle() {
- struct attr attr;
- dbg(lvl_debug, "name : %s\n", m_currentVehicle->name().toUtf8().data());
- if (m_currentVehicle->vehicle()) {
- if (vehicle_get_attr(m_currentVehicle->vehicle(), attr_position_nmea, &attr, NULL))
- dbg(lvl_debug, "NMEA : %s\n", attr.u.str);
- } else {
- dbg(lvl_debug, "m_currentVehicle->v is null\n");
- }
-
- return m_currentVehicle;
-}
-
-
-void Backend::block_draw(){
- navit_block(this->nav, 1);
- dbg(lvl_debug, "Draw operations blocked per UI request\n");
-}
-
-/**
- * @brief set the canvas size to use when drawing the map
- * @param int width
- * @param int height
- * @returns nothing
- */
-void Backend::resize(int width, int height){
- // If we need to resize the canvas, it means that something (the main map,
- // or a menu item) wants to display a map. Ensure that draw operations
- // are not blocked then.
- navit_block(this->nav, -1);
- navit_handle_resize(nav, width, height);
-}
-
-/**
- * @brief set the active POI. Used when clicking on a POI list to display one single POI
- * @param int index the index of the POI in the m_pois list
- * @returns nothing
- */
-void Backend::setActivePoi(int index) {
- struct pcoord c;
- m_activePoi = (PoiObject *)_pois.at(index);
- c = m_activePoi->coords();
- resize(320, 240);
- navit_set_center(this->nav, &c, 1);
- emit activePoiChanged();
-}
-/**
- * @brief set the current bookmark. Used when clicking on a bookmark list to display one single bookmark
- * @param int index the index of the bookmark in the m_bookmarks list
- * @returns nothing
- */
-void Backend::setCurrentBookmark(int index) {
- struct pcoord c;
- m_currentBookmark = (BookmarkObject *)_bookmarks.at(index);
- c = m_currentBookmark->coords();
- resize(320, 240);
- navit_set_center(this->nav, &c, 1);
- emit currentBookmarkChanged();
-}
-
-/**
- * @brief set the current vehicle. Used when clicking on a vehicle list to display one single vehicle
- * @param int index the index of the vehicle in the m_vehicles list
- * @returns nothing
- */
-void Backend::setCurrentVehicle(int index) {
- m_currentVehicle = (VehicleObject *)_vehicles.at(index);
- emit currentVehicleChanged();
-}
-
-/**
- * @brief returns the icon absolute path
- * @param none
- * @returns the icon absolute path as a QString
- */
-QString Backend::get_icon_path(){
- return QString(g_strjoin(NULL,"file://",getenv("NAVIT_SHAREDIR"),"/icons/",NULL));
-}
-
-/**
- * @brief set the destination using the currently active POI's coordinates
- * @param none
- * @returns nothing
- */
-void Backend::setActivePoiAsDestination(){
- struct pcoord c;
- c = m_activePoi->coords();
- dbg(lvl_debug, "Destination : %s c=%d:0x%x,0x%x\n",
- m_activePoi->name().toUtf8().data(),
- c.pro, c.x, c.y);
- navit_set_destination(this->nav, &c, m_activePoi->name().toUtf8().data(), 1);
- emit hideMenu();
-}
-
-/**
- * @brief save the search result for the next search step
- * @param int index the index of the result in the m_search_results list
- * @returns nothing
- */
-void Backend::searchValidateResult(int index){
- SearchObject * r = (SearchObject *)_search_results.at(index);
- dbg(lvl_debug, "Saving %s [%i] as search result\n", r->name().toUtf8().data(), index);
- if (r->getCoords()){
- dbg(lvl_debug, "Item is at %x x %x\n", r->getCoords()->x, r->getCoords()->y);
- }
- if (_search_context == attr_country_all) {
- _current_country = g_strdup(r->name().toUtf8().data());
- _current_town = NULL;
- _current_street = NULL;
- } else if (_search_context == attr_town_name) {
- _current_town = g_strdup(r->name().toUtf8().data());
- _current_street = NULL;
- } else if (_search_context == attr_street_name) {
- _current_street = g_strdup(r->name().toUtf8().data());
- } else {
- dbg(lvl_error, "Unknown search context for '%s'\n", r->name().toUtf8().data());
- }
- // navit_set_center(this->nav, r->getCoords(), 1);
- emit displayMenu("destination_address.qml");
-}
-
-/**
- * @brief get the icon that matches the country currently used for searches
- * @param none
- * @returns an absolute path for the country icon
- */
-QString Backend::get_country_icon(char * country_iso_code){
-// if ( country_iso_code == "" ) {
-// country_iso_code = _country_iso2;
-// }
- return QString(g_strjoin(NULL,"file://",getenv("NAVIT_SHAREDIR"),"/icons/",country_iso_code,".svg",NULL));
-}
-
-
-static struct search_param {
- struct navit *nav;
- struct mapset *ms;
- struct search_list *sl;
- struct attr attr;
- int partial;
- void *entry_country, *entry_postal, *entry_city, *entry_district;
- void *entry_street, *entry_number;
-} search_param;
-
-/**
- * @brief set the default country
- * @param none
- * returns nothing
- */
-void Backend::set_default_country(){
- _current_country = "Germany";
- _country_iso2 = "DE";
-}
-
-
-/**
- * @brief update the current search results according to new inputs. Currently only works to search for towns
- * @param QString text the text to search for
- * @returns nothing
- */
-void Backend::updateSearch(QString text){
- struct search_list_result *res;
- struct attr search_attr;
-
- if (search == NULL){
- search=&search_param;
- dbg(lvl_debug, "search = %p\n", search);
- search->nav=this->nav;
- search->ms=navit_get_mapset(this->nav);
- search->sl=search_list_new(search->ms);
- search->partial = 1;
- dbg(lvl_debug,"attempting to use country '%s'\n", _country_iso2);
- search_attr.type=attr_country_iso2;
- search_attr.u.str=_country_iso2;
- search_list_search(search->sl, &search_attr, 0);
-
- while((res=search_list_get_result(search->sl)));
- }
-
- _search_results.clear();
- // search->attr.type=attr_country_all;
- // search->attr.type=attr_town_postal;
- // search->attr.type=attr_town_name;
- // search->attr.type=attr_street_name;
-
-// search->attr.type=attr_town_name;
-// search->attr.u.str="Oberhaching";
-// search_list_search(search->sl, &search->attr, search->partial);
-// while((res=search_list_get_result(search->sl)));
-
- search->attr.u.str = text.toUtf8().data();
- dbg(lvl_error, "searching for %s partial %d\n", search->attr.u.str, search->partial);
-
- search->attr.type = _search_context;
- search_list_search(search->sl, &search->attr, search->partial);
- int count = 0;
- while((res=search_list_get_result(search->sl))) {
- if ( _search_context == attr_country_all && res->country) {
- char * label;
- label = g_strdup(res->country->name);
- _search_results.append(
- new SearchObject(label, get_country_icon(res->country->flag) , res->c)
- );
- }
- if ( _search_context == attr_town_name && res->town) {
- char * label;
- label = g_strdup(res->town->common.town_name);
- _search_results.append(
- new SearchObject(label, "icons/bigcity.png", res->c)
- );
- }
- if (res->street) {
- char * label;
- label = g_strdup(res->street->name);
- _search_results.append(
- new SearchObject(label, "icons/smallcity.png", res->c)
- );
- }
- if (count ++ > 50) {
- break;
- }
- }
- emit searchResultsChanged();
-}
-
-void Backend::setSearchContext(QString text){
- if (text == "country") {
- _search_context = attr_country_all;
- } else if (text == "town") {
- _search_context = attr_town_name;
- } else if (text == "street") {
- _search_context = attr_street_name;
- } else {
- dbg(lvl_error, "Unhandled search context '%s'\n", text.toUtf8().data());
- }
-
-}
-
-QString Backend::currentCountry() {
- dbg(lvl_debug, "Current country : %s/%s\n", _country_iso2, _current_country);
- return QString(_current_country);
-}
-
-QString Backend::currentCountryIso2() {
- dbg(lvl_debug, "Current country : %s/%s\n", _country_iso2, _current_country);
- return QString(_country_iso2);
-}
-
-QString Backend::currentTown() {
- if (_current_town == NULL) {
- _current_town = "Enter City";
- }
- dbg(lvl_debug, "Current town : %s\n", _current_town);
- return QString(_current_town);
-}
-
-QString Backend::currentStreet() {
- if (_current_street == NULL) {
- _current_street = "Enter Street";
- }
- dbg(lvl_debug, "Current street : %s\n", _current_street);
- return QString(_current_street);
-}
diff --git a/navit/gui/qt5_qml/backend.h b/navit/gui/qt5_qml/backend.h
deleted file mode 100644
index 259be516c..000000000
--- a/navit/gui/qt5_qml/backend.h
+++ /dev/null
@@ -1,115 +0,0 @@
-#ifndef BACKEND_H
-#define BACKEND_H
-
-#include <QObject>
-#include <QQmlApplicationEngine>
-#include <QQmlListProperty>
-
-#include "qml_map.h"
-#include "qml_poi.h"
-#include "qml_bookmark.h"
-#include "qml_vehicle.h"
-
-#include "coord.h"
-#include "item.h"
-#include "attr.h"
-
-class Backend : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(QQmlListProperty<QObject> pois READ getPois NOTIFY poisChanged)
- Q_PROPERTY(QQmlListProperty<QObject> bookmarks READ getBookmarks NOTIFY bookmarksChanged)
- Q_PROPERTY(QQmlListProperty<QObject> maps READ getMaps NOTIFY mapsChanged)
- Q_PROPERTY(QQmlListProperty<QObject> vehicles READ getVehicles NOTIFY vehiclesChanged)
- Q_PROPERTY(PoiObject * activePoi READ activePoi NOTIFY activePoiChanged)
- Q_PROPERTY(BookmarkObject * currentBookmark READ currentBookmark NOTIFY currentBookmarkChanged)
- Q_PROPERTY(VehicleObject * currentVehicle READ currentVehicle NOTIFY currentVehicleChanged)
- Q_PROPERTY(QQmlListProperty<QObject> searchresults READ getSearchResults NOTIFY searchResultsChanged)
- // Search properties
- Q_PROPERTY(QString currentCountry READ currentCountry NOTIFY currentCountryChanged)
- Q_PROPERTY(QString currentCountryIso2 READ currentCountryIso2 NOTIFY currentCountryIso2Changed)
- Q_PROPERTY(QString currentTown READ currentTown NOTIFY currentTownChanged)
- Q_PROPERTY(QString currentStreet READ currentStreet NOTIFY currentStreetChanged)
-
-public:
- explicit Backend(QObject *parent = 0);
-
- void showMenu(struct point* p);
- void set_navit(struct navit* nav);
- void set_engine(QQmlApplicationEngine* engine);
-
- QList < PoiObject * > pois;
- QQmlListProperty<QObject> getPois();
- QList < BookmarkObject * > bookmarks;
- QQmlListProperty<QObject> getBookmarks();
- QList < MapObject * > maps;
- QQmlListProperty<QObject> getMaps();
- QList < MapObject * > vehicles;
- QQmlListProperty<QObject> getVehicles();
- PoiObject * activePoi();
- BookmarkObject * currentBookmark();
- VehicleObject * currentVehicle();
- QQmlListProperty<QObject> getSearchResults();
- QString currentCountry();
- QString currentCountryIso2();
- QString currentTown();
- QString currentStreet();
-
-signals:
- void displayMenu(QString source);
- void hideMenu();
- void poisChanged();
- void bookmarksChanged();
- void activePoiChanged();
- void currentBookmarkChanged();
- void currentVehicleChanged();
- void mapsChanged();
- void vehiclesChanged();
- void searchResultsChanged();
- void currentCountryChanged();
- void currentCountryIso2Changed();
- void currentTownChanged();
- void currentStreetChanged();
-
-public slots:
- void get_maps();
- void get_pois();
- void get_bookmarks();
- void get_vehicles();
- QString get_icon_path();
- QString get_country_icon(char * country_iso_code);
- void setActivePoi(int index);
- void setCurrentBookmark(int index);
- void setCurrentVehicle(int index);
- void setActivePoiAsDestination();
- void updateSearch(QString text);
- void searchValidateResult(int index);
- void resize(int width, int height);
- void setSearchContext(QString text);
- void block_draw();
-
-private:
- struct navit *nav;
- struct point *p;
- struct coord_geo g;
- struct pcoord c;
- int filter_pois(struct item *item);
- QQmlApplicationEngine* engine;
- QList<QObject *> _pois;
- QList<QObject *> _bookmarks;
- QList<QObject *> _maps;
- QList<QObject *> _vehicles;
- PoiObject * m_activePoi;
- BookmarkObject * m_currentBookmark;
- VehicleObject * m_currentVehicle;
- QList<QObject *> _search_results;
- void set_default_country();
- char * _country_iso2;
- char * _current_country;
- char * _current_town;
- char * _current_street;
- struct search_param *search;
- enum attr_type _search_context;
-};
-
-#endif // BACKEND_H
diff --git a/navit/gui/qt5_qml/editor/.gitignore b/navit/gui/qt5_qml/editor/.gitignore
deleted file mode 100644
index fab7372d7..000000000
--- a/navit/gui/qt5_qml/editor/.gitignore
+++ /dev/null
@@ -1,73 +0,0 @@
-# This file is used to ignore files which are generated
-# ----------------------------------------------------------------------------
-
-*~
-*.autosave
-*.a
-*.core
-*.moc
-*.o
-*.obj
-*.orig
-*.rej
-*.so
-*.so.*
-*_pch.h.cpp
-*_resource.rc
-*.qm
-.#*
-*.*#
-core
-!core/
-tags
-.DS_Store
-.directory
-*.debug
-Makefile*
-*.prl
-*.app
-moc_*.cpp
-ui_*.h
-qrc_*.cpp
-Thumbs.db
-*.res
-*.rc
-/.qmake.cache
-/.qmake.stash
-
-# qtcreator generated files
-*.pro.user*
-
-# xemacs temporary files
-*.flc
-
-# Vim temporary files
-.*.swp
-
-# Visual Studio generated files
-*.ib_pdb_index
-*.idb
-*.ilk
-*.pdb
-*.sln
-*.suo
-*.vcproj
-*vcproj.*.*.user
-*.ncb
-*.sdf
-*.opensdf
-*.vcxproj
-*vcxproj.*
-
-# MinGW generated files
-*.Debug
-*.Release
-
-# Python byte code
-*.pyc
-
-# Binaries
-# --------
-*.dll
-*.exe
-
diff --git a/navit/gui/qt5_qml/editor/editor.pro b/navit/gui/qt5_qml/editor/editor.pro
deleted file mode 100644
index d0d4cd297..000000000
--- a/navit/gui/qt5_qml/editor/editor.pro
+++ /dev/null
@@ -1,29 +0,0 @@
-QT += qml quick
-
-CONFIG += c++11
-
-SOURCES += main.cpp
-
-RESOURCES += qml.qrc
-
-# Additional import path used to resolve QML modules in Qt Creator's code model
-QML_IMPORT_PATH =
-
-# Additional import path used to resolve QML modules just for Qt Quick Designer
-QML_DESIGNER_IMPORT_PATH =
-
-# The following define makes your compiler emit warnings if you use
-# any feature of Qt which as been marked deprecated (the exact warnings
-# depend on your compiler). Please consult the documentation of the
-# deprecated API in order to know how to port your code away from it.
-DEFINES += QT_DEPRECATED_WARNINGS
-
-# You can also make your code fail to compile if you use deprecated APIs.
-# In order to do so, uncomment the following line.
-# You can also select to disable deprecated APIs only up to a certain version of Qt.
-#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
-
-# Default rules for deployment.
-qnx: target.path = /tmp/$${TARGET}/bin
-else: unix:!android: target.path = /opt/$${TARGET}/bin
-!isEmpty(target.path): INSTALLS += target
diff --git a/navit/gui/qt5_qml/editor/gui_qt5_qml.qml b/navit/gui/qt5_qml/editor/gui_qt5_qml.qml
deleted file mode 100644
index f8c2daa4a..000000000
--- a/navit/gui/qt5_qml/editor/gui_qt5_qml.qml
+++ /dev/null
@@ -1,59 +0,0 @@
-import QtQuick 2.7
-import QtQuick.Controls 2.0
-import QtQuick.Layouts 1.0
-
-ApplicationWindow {
- id: applicationWindow
- visible: true
- width: 800
- height: 480
- title: qsTr("Navit Stub")
-
- MouseArea {
- id: mouseArea
- z: -1
- anchors.fill: parent
- onClicked: {
- mainMenu.source = "skins/modern/menu.qml"
- mainMenu.state = 'visible'
- console.log("showing menu")
- }
-
- Image {
- id: image
- anchors.left: parent.left
- anchors.rightMargin: 0
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 0
- source: "map.png"
- }
-
- }
-
- Loader {
- id: mainMenu
- width: parent.width
- height: parent.height
- x: parent.width
- opacity: 0
-
- states: [
- State {
- name: "visible"
- PropertyChanges {
- target: mainMenu
- x: 0
- opacity: 1
- }
- }
- ]
- transitions: [
- Transition {
- NumberAnimation {
- properties: "x,y,opacity";duration: 300
- }
- }
- ]
- }
-
-}
diff --git a/navit/gui/qt5_qml/editor/main.cpp b/navit/gui/qt5_qml/editor/main.cpp
deleted file mode 100644
index 9089c5a29..000000000
--- a/navit/gui/qt5_qml/editor/main.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <QGuiApplication>
-#include <QQmlApplicationEngine>
-
-int main(int argc, char *argv[])
-{
- QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
- QGuiApplication app(argc, argv);
-
- QQmlApplicationEngine engine;
- engine.load(QUrl(QLatin1String("qrc:/gui_qt5_qml.qml")));
-
- return app.exec();
-}
diff --git a/navit/gui/qt5_qml/editor/main.qml b/navit/gui/qt5_qml/editor/main.qml
deleted file mode 100644
index be7157513..000000000
--- a/navit/gui/qt5_qml/editor/main.qml
+++ /dev/null
@@ -1,59 +0,0 @@
-import QtQuick 2.7
-import QtQuick.Controls 2.0
-import QtQuick.Layouts 1.0
-
-ApplicationWindow {
- id: applicationWindow
- visible: true
- width: 800
- height: 480
- title: qsTr("Hello World 2")
-
- MouseArea {
- id: mouseArea
- z: -1
- anchors.fill: parent
- onClicked: {
- mainMenu.source = "skins/menu.qml"
- mainMenu.state = 'visible'
- console.log("showing menu")
- }
-
- Image {
- id: image
- anchors.left: parent.left
- anchors.rightMargin: 0
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 0
- source: "map.png"
- }
-
- }
-
- Loader {
- id: mainMenu
- width: parent.width
- height: parent.height
- x: parent.width
- opacity: 0
-
- states: [
- State {
- name: "visible"
- PropertyChanges {
- target: mainMenu
- x: 0
- opacity: 1
- }
- }
- ]
- transitions: [
- Transition {
- NumberAnimation {
- properties: "x,y,opacity";duration: 300
- }
- }
- ]
- }
-
-}
diff --git a/navit/gui/qt5_qml/editor/map.png b/navit/gui/qt5_qml/editor/map.png
deleted file mode 100644
index 998b85eb3..000000000
--- a/navit/gui/qt5_qml/editor/map.png
+++ /dev/null
Binary files differ
diff --git a/navit/gui/qt5_qml/editor/qml.qrc b/navit/gui/qt5_qml/editor/qml.qrc
deleted file mode 100644
index a1db879a2..000000000
--- a/navit/gui/qt5_qml/editor/qml.qrc
+++ /dev/null
@@ -1,42 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>map.png</file>
- <file>skins/modern/main.qml</file>
- <file>skins/modern/menu.qml</file>
- <file>skins/modern/MainMenu.qml</file>
- <file>skins/modern/navit.svg</file>
- <file>skins/modern/MainButton.qml</file>
- <file>skins/modern/settings.qml</file>
- <file>skins/modern/maps.qml</file>
- <file>skins/modern/poi.qml</file>
- <file>skins/modern/pois.qml</file>
- <file>skins/modern/bookmark.qml</file>
- <file>skins/modern/bookmarks.qml</file>
- <file>skins/modern/icons/appbar.home.variant.svg</file>
- <file>skins/modern/icons/appbar.rocket.svg</file>
- <file>skins/modern/icons/appbar.power.svg</file>
- <file>skins/modern/icons/appbar.cog.svg</file>
- <file>skins/modern/icons/appbar.layer.svg</file>
- <file>skins/modern/icons/appbar.layer.delete.svg</file>
- <file>skins/modern/icons/appbar.map.svg</file>
- <file>skins/modern/icons/appbar.information.circle.svg</file>
- <file>skins/modern/icons/appbar.chevron.up.svg</file>
- <file>skins/modern/icons/appbar.chevron.down.svg</file>
- <file>skins/modern/icons/appbar.fullscreen.box.svg</file>
- <file>skins/modern/icons/appbar.transit.car.svg</file>
- <file>skins/modern/icons/appbar.location.checkin.svg</file>
- <file>skins/modern/icons/appbar.cogs.svg</file>
- <file>skins/modern/icons/bigcity.png</file>
- <file>skins/modern/search.qml</file>
- <file>skins/modern/destination.qml</file>
- <file>skins/modern/icons/appbar.city.svg</file>
- <file>skins/modern/icons/appbar.location.svg</file>
- <file>skins/modern/icons/appbar.timer.rewind.svg</file>
- <file>skins/modern/icons/appbar.book.list.svg</file>
- <file>skins/modern/icons/smallcity.png</file>
- <file>skins/modern/destination_address.qml</file>
- <file>skins/modern/search_result_item.qml</file>
- <file>skins/modern/vehicles.qml</file>
- <file>skins/modern/vehicle.qml</file>
- </qresource>
-</RCC>
diff --git a/navit/gui/qt5_qml/editor/skins b/navit/gui/qt5_qml/editor/skins
deleted file mode 120000
index cdb8b4e07..000000000
--- a/navit/gui/qt5_qml/editor/skins
+++ /dev/null
@@ -1 +0,0 @@
-../skins/ \ No newline at end of file
diff --git a/navit/gui/qt5_qml/gui_qt5_qml.cpp b/navit/gui/qt5_qml/gui_qt5_qml.cpp
deleted file mode 100644
index 1b4062d33..000000000
--- a/navit/gui/qt5_qml/gui_qt5_qml.cpp
+++ /dev/null
@@ -1,322 +0,0 @@
-/**
- * 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.
- */
-// style with: clang-format -style=WebKit -i *
-
-#include <QQmlApplicationEngine>
-#include <QQmlContext>
-
-#include <glib.h>
-
-extern "C" {
-#include "item.h" /* needs to be first, as attr.h depends on it */
-
-#include "attr.h"
-#include "bookmarks.h"
-#include "callback.h"
-#include "color.h"
-#include "command.h"
-#include "config.h"
-#include "coord.h"
-#include "coord.h"
-#include "country.h"
-#include "debug.h"
-#include "event.h"
-
-#include "point.h" /* needs to be before graphics.h */
-
-#include "graphics.h"
-#include "gui.h"
-#include "keys.h"
-#include "map.h"
-#include "mapset.h"
-#include "navit.h"
-#include "plugin.h"
-#include "route.h"
-#include "search.h"
-#include "track.h"
-#include "transform.h"
-#include "vehicle.h"
-#include "xmlconfig.h"
-
-#include "layout.h"
-}
-struct gui_priv {
- /* navit internal handle */
- struct navit* nav;
- /* gui handle */
- struct gui* gui;
-
- /* attributes given to us */
- struct attr attributes;
-
- /* list of callbacks to navit */
- struct callback_list* callbacks;
- /* own callbacks *
- * TODO: Why do we need them as members? */
- struct callback* button_cb;
- struct callback* motion_cb;
- struct callback* resize_cb;
- struct callback* keypress_cb;
- struct callback* window_closed_cb;
-
- /* current graphics */
- struct graphics* gra;
- /* root window */
- struct window* win;
- /* navit root widget dimesnions */
- int w;
- int h;
-
- /* Qt application instance */
- QQmlApplicationEngine* engine;
- QObject* loader; /* Loader QML component to load our QML parts to the QML engine */
-
- class Backend* backend;
-
- /* configuration */
- int menu_on_map_click;
-};
-
-#include "backend.h"
-
-static void
-gui_qt5_qml_button(void* data, int pressed, int button, struct point* p)
-{
- struct gui_priv* gui_priv = (struct gui_priv*)data;
-
- /* check if navit wants to handle this */
- if (!navit_handle_button(gui_priv->nav, pressed, button, p, NULL)) {
- dbg(lvl_debug, "navit has handled button\n");
- return;
- }
- dbg(lvl_debug, "enter %d %d\n", pressed, button);
-
- /* check if user requested menu */
- if (button == 1 && gui_priv->menu_on_map_click) {
- dbg(lvl_debug, "navit wants us to enter menu\n");
- /*TODO: want to emit a signal somewhere? */
- gui_priv->backend->showMenu(p);
- }
-}
-
-static void
-gui_qt5_qml_motion(void* data, struct point* p)
-{
- struct gui_priv* gui_priv = (struct gui_priv*)data;
- dbg(lvl_debug, "enter (%d, %d)\n", p->x, p->y);
- /* forward this to navit */
- navit_handle_motion(gui_priv->nav, p);
-}
-
-static void
-gui_qt5_qml_resize(void* data, int w, int h)
-{
- struct gui_priv* gui_priv = (struct gui_priv*)data;
- dbg(lvl_debug, "enter\n");
- /* forward this to navit */
- navit_handle_resize(gui_priv->nav, w, h);
-}
-
-static void
-gui_qml_keypress(void* data, char* key)
-{
- struct gui_priv* this_ = (struct gui_priv*)data;
- int w, h;
- struct point p;
- transform_get_size(navit_get_trans(this_->nav), &w, &h);
- switch (*key) {
- case NAVIT_KEY_UP:
- dbg(lvl_debug, "got KEY_UP\n");
- p.x = w / 2;
- p.y = 0;
- navit_set_center_screen(this_->nav, &p, 1);
- break;
- case NAVIT_KEY_DOWN:
- p.x = w / 2;
- p.y = h;
- navit_set_center_screen(this_->nav, &p, 1);
- break;
- case NAVIT_KEY_LEFT:
- p.x = 0;
- p.y = h / 2;
- navit_set_center_screen(this_->nav, &p, 1);
- break;
- case NAVIT_KEY_RIGHT:
- p.x = w;
- p.y = h / 2;
- navit_set_center_screen(this_->nav, &p, 1);
- break;
- case NAVIT_KEY_ZOOM_IN:
- dbg(lvl_debug, "got ZOOM_IN\n");
- navit_zoom_in(this_->nav, 2, NULL);
- break;
- case NAVIT_KEY_ZOOM_OUT:
- navit_zoom_out(this_->nav, 2, NULL);
- break;
- case NAVIT_KEY_RETURN:
- case NAVIT_KEY_MENU:
- p.x = w / 2;
- p.y = h / 2;
- break;
- }
-
- return;
-}
-
-static int
-gui_qt5_qml_set_graphics(struct gui_priv* gui_priv, struct graphics* gra)
-{
- struct transformation* trans;
- dbg(lvl_debug, "enter\n");
-
- /* get navit transition */
- trans = navit_get_trans(gui_priv->nav);
-
- /* Tell navit to ignore events from graphics. We will hook the ones being supported. */
- navit_ignore_graphics_events(gui_priv->nav, 1);
-
- /* remeber graphics */
- gui_priv->gra = gra;
-
- /* hook button callback */
- gui_priv->button_cb = callback_new_attr_1(callback_cast(gui_qt5_qml_button), attr_button, gui_priv);
- graphics_add_callback(gra, gui_priv->button_cb);
-
- /* hook motion callback */
- gui_priv->motion_cb = callback_new_attr_1(callback_cast(gui_qt5_qml_motion), attr_motion, gui_priv);
- graphics_add_callback(gra, gui_priv->motion_cb);
-
- gui_priv->keypress_cb = callback_new_attr_1(callback_cast(gui_qml_keypress), attr_keypress, gui_priv);
- graphics_add_callback(gra, gui_priv->keypress_cb);
-
- /* hook resize callback. Will be called imediately! */
- gui_priv->resize_cb = callback_new_attr_1(callback_cast(gui_qt5_qml_resize), attr_resize, gui_priv);
- graphics_add_callback(gra, gui_priv->resize_cb);
-
- /* get main navit window */
- gui_priv->win = (struct window*)graphics_get_data(gra, "window");
- if (!gui_priv->win) {
- dbg(lvl_error, "failed to obtain window from graphics plugin, cannot set graphics\n");
- return 1;
- }
-
- /* expect to have qt5 graphics. So get the qml engine prepared by graphics */
- gui_priv->engine = (QQmlApplicationEngine*)graphics_get_data(gra, "engine");
- if (gui_priv->engine == NULL) {
- dbg(lvl_error, "Graphics doesn't seem to be qt5, or doesn't have QML. Cannot set graphics\n");
- return 1;
- }
-
- gui_priv->backend = new Backend();
- gui_priv->backend->set_navit(gui_priv->nav);
- gui_priv->backend->set_engine(gui_priv->engine);
-
- gui_priv->engine->rootContext()->setContextProperty("backend", gui_priv->backend);
- // gui_priv->engine->rootContext()->setContextProperty("myModel", QVariant::fromValue(dataList));
-
- /* find the loader component */
- gui_priv->loader = gui_priv->engine->rootObjects().value(0)->findChild<QObject*>("navit_loader");
- if (gui_priv->loader != NULL) {
- dbg(lvl_debug, "navit_loader found\n");
- /* load our root window into the loader component */
- gui_priv->loader->setProperty("source", "qrc:///skins/modern/main.qml");
- }
-
- transform_get_size(trans, &gui_priv->w, &gui_priv->h);
- dbg(lvl_debug, "navit provided geometry: (%d, %d)\n", gui_priv->w, gui_priv->h);
-
- /* Was resize callback already issued? */
- // if (navit_get_ready(gui_priv->nav) & 2)
- // gui_internal_setup(this);
-
- /* allow navit to draw */
- navit_draw(gui_priv->nav);
-
- return 0;
-}
-
-static int
-gui_qt5_qml_get_attr(struct gui_priv* gui_priv, enum attr_type type, struct attr* attr)
-{
- dbg(lvl_debug, "enter\n");
- return 1;
-}
-
-static int
-gui_qt5_qml_set_attr(struct gui_priv* gui_priv, struct attr* attr)
-{
- dbg(lvl_debug, "enter\n");
- return 1;
-}
-
-struct gui_methods gui_qt5_qml_methods = {
- NULL,
- NULL,
- gui_qt5_qml_set_graphics,
- NULL,
- NULL,
- NULL,
- NULL,
- gui_qt5_qml_get_attr,
- NULL,
- gui_qt5_qml_set_attr,
-};
-
-static struct gui_priv*
-gui_qt5_qml_new(struct navit* nav, struct gui_methods* meth, struct attr** attrs, struct gui* gui)
-{
- struct gui_priv* gui_priv;
- struct attr* attr;
-
- dbg(lvl_debug, "enter\n");
-
- /* tell navit our methods */
- *meth = gui_qt5_qml_methods;
-
- /* allocate gui private structure */
- gui_priv = g_new0(struct gui_priv, 1);
-
- /* default config */
- gui_priv->menu_on_map_click = 1;
-
- /* read config */
- if ((attr = attr_search(attrs, NULL, attr_menu_on_map_click)))
- gui_priv->menu_on_map_click = attr->u.num;
-
- /* remember navit internal handle */
- gui_priv->nav = nav;
- /* remember our gui handle */
- gui_priv->gui = gui;
-
- /* remember the attributes given to us */
- gui_priv->attributes.type = attr_gui;
- gui_priv->attributes.u.gui = gui;
-
- /* create new callbacks */
- gui_priv->callbacks = callback_list_new();
-
- /* return self */
- return gui_priv;
-}
-
-void plugin_init(void)
-{
- Q_INIT_RESOURCE(gui_qt5_qml);
- plugin_register_category_gui("qt5_qml", gui_qt5_qml_new);
-}
diff --git a/navit/gui/qt5_qml/gui_qt5_qml.qrc b/navit/gui/qt5_qml/gui_qt5_qml.qrc
deleted file mode 100644
index a1db879a2..000000000
--- a/navit/gui/qt5_qml/gui_qt5_qml.qrc
+++ /dev/null
@@ -1,42 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>map.png</file>
- <file>skins/modern/main.qml</file>
- <file>skins/modern/menu.qml</file>
- <file>skins/modern/MainMenu.qml</file>
- <file>skins/modern/navit.svg</file>
- <file>skins/modern/MainButton.qml</file>
- <file>skins/modern/settings.qml</file>
- <file>skins/modern/maps.qml</file>
- <file>skins/modern/poi.qml</file>
- <file>skins/modern/pois.qml</file>
- <file>skins/modern/bookmark.qml</file>
- <file>skins/modern/bookmarks.qml</file>
- <file>skins/modern/icons/appbar.home.variant.svg</file>
- <file>skins/modern/icons/appbar.rocket.svg</file>
- <file>skins/modern/icons/appbar.power.svg</file>
- <file>skins/modern/icons/appbar.cog.svg</file>
- <file>skins/modern/icons/appbar.layer.svg</file>
- <file>skins/modern/icons/appbar.layer.delete.svg</file>
- <file>skins/modern/icons/appbar.map.svg</file>
- <file>skins/modern/icons/appbar.information.circle.svg</file>
- <file>skins/modern/icons/appbar.chevron.up.svg</file>
- <file>skins/modern/icons/appbar.chevron.down.svg</file>
- <file>skins/modern/icons/appbar.fullscreen.box.svg</file>
- <file>skins/modern/icons/appbar.transit.car.svg</file>
- <file>skins/modern/icons/appbar.location.checkin.svg</file>
- <file>skins/modern/icons/appbar.cogs.svg</file>
- <file>skins/modern/icons/bigcity.png</file>
- <file>skins/modern/search.qml</file>
- <file>skins/modern/destination.qml</file>
- <file>skins/modern/icons/appbar.city.svg</file>
- <file>skins/modern/icons/appbar.location.svg</file>
- <file>skins/modern/icons/appbar.timer.rewind.svg</file>
- <file>skins/modern/icons/appbar.book.list.svg</file>
- <file>skins/modern/icons/smallcity.png</file>
- <file>skins/modern/destination_address.qml</file>
- <file>skins/modern/search_result_item.qml</file>
- <file>skins/modern/vehicles.qml</file>
- <file>skins/modern/vehicle.qml</file>
- </qresource>
-</RCC>
diff --git a/navit/gui/qt5_qml/map.png b/navit/gui/qt5_qml/map.png
deleted file mode 100644
index 998b85eb3..000000000
--- a/navit/gui/qt5_qml/map.png
+++ /dev/null
Binary files differ
diff --git a/navit/gui/qt5_qml/proxy.c b/navit/gui/qt5_qml/proxy.c
deleted file mode 100644
index 6a3546716..000000000
--- a/navit/gui/qt5_qml/proxy.c
+++ /dev/null
@@ -1,70 +0,0 @@
-#include <glib.h>
-
-#include "item.h"
-#include "attr.h"
-#include "navit.h"
-#include "xmlconfig.h" // for NAVIT_OBJECT
-#include "layout.h"
-#include "map.h"
-#include "transform.h"
-#include "debug.h"
-#include "search.h"
-
-
-char * get_icon(struct navit *nav, struct item *item)
-{
-
- struct attr layout;
- struct attr icon_src;
- GList *layer;
- navit_get_attr(nav, attr_layout, &layout, NULL);
- layer=layout.u.layout->layers;
-
- while(layer) {
- GList *itemgra=((struct layer *)layer->data)->itemgras;
- while(itemgra) {
- GList *types=((struct itemgra *)itemgra->data)->type;
- while(types) {
- if((long)types->data==item->type) {
- GList *element=((struct itemgra *)itemgra->data)->elements;
- while(element) {
- struct element * el=element->data;
- if(el->type==element_icon) {
- char *src;
- char *icon;
- struct graphics_image *img;
- if(item_is_custom_poi(*item)) {
- struct map_rect *mr=map_rect_new(item->map, NULL);
- item=map_rect_get_item_byid(mr, item->id_hi, item->id_lo);
- if(item_attr_get(item, attr_icon_src, &icon_src)) {
- src=el->u.icon.src;
- if(!src || !src[0])
- src="%s";
- icon=g_strdup_printf(src,map_convert_string_tmp(item->map,icon_src.u.str));
- }
- else {
- icon=g_strdup(el->u.icon.src);
- }
- }
- else {
- icon=g_strdup(el->u.icon.src);
- }
- icon[strlen(icon)-3]='s';
- icon[strlen(icon)-2]='v';
- icon[strlen(icon)-1]='g';
- return icon;
- // FIXME
- g_free(icon);
- }
- element=g_list_next(element);
- }
- }
- types=g_list_next(types);
- }
- itemgra=g_list_next(itemgra);
- }
- layer=g_list_next(layer);
- }
- return "unknown.svg";
-}
-
diff --git a/navit/gui/qt5_qml/proxy.h b/navit/gui/qt5_qml/proxy.h
deleted file mode 100644
index 16e74f55c..000000000
--- a/navit/gui/qt5_qml/proxy.h
+++ /dev/null
@@ -1 +0,0 @@
-char * get_icon(struct navit *nav, struct item *item);
diff --git a/navit/gui/qt5_qml/qml_bookmark.cpp b/navit/gui/qt5_qml/qml_bookmark.cpp
deleted file mode 100644
index e215bcd11..000000000
--- a/navit/gui/qt5_qml/qml_bookmark.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "qml_bookmark.h"
-
-BookmarkObject::BookmarkObject(QObject *parent)
- : QObject(parent)
-{
-}
-
-BookmarkObject::BookmarkObject(
- const QString &name,
- struct pcoord &coords,
- QObject *parent)
- : QObject(parent), m_name(name), m_coords(coords)
-{
-}
-
-QString BookmarkObject::name() const
-{
- return m_name;
-}
-
-void BookmarkObject::setName(const QString &name)
-{
- if (name != m_name) {
- m_name = name;
- emit nameChanged();
- }
-}
-
-struct pcoord BookmarkObject::coords() const
-{
- return m_coords;
-}
diff --git a/navit/gui/qt5_qml/qml_bookmark.h b/navit/gui/qt5_qml/qml_bookmark.h
deleted file mode 100644
index fa676582e..000000000
--- a/navit/gui/qt5_qml/qml_bookmark.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef BOOKMARKOBJECT_H
-#define BOOKMARKOBJECT_H
-
-#include <QObject>
-#include "coord.h"
-
-class BookmarkObject : public QObject
-{
- Q_OBJECT
-
- Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
- Q_PROPERTY(struct pcoord coords NOTIFY coordsChanged)
-
-public:
- BookmarkObject(QObject *parent=0);
- BookmarkObject(const QString &name, struct pcoord &coords, QObject *parent=0);
- QString name() const;
- void setName(const QString &name);
-
- struct pcoord coords() const;
-
-signals:
- void nameChanged();
-
-private:
- struct pcoord m_coords;
- QString m_name;
-};
-
-#endif // BOOKMARKOBJECT_H
-
diff --git a/navit/gui/qt5_qml/qml_map.cpp b/navit/gui/qt5_qml/qml_map.cpp
deleted file mode 100644
index 0f38a4768..000000000
--- a/navit/gui/qt5_qml/qml_map.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "qml_map.h"
-
-MapObject::MapObject(QObject *parent)
- : QObject(parent)
-{
-}
-
-MapObject::MapObject(const QString &name, const bool &active, QObject *parent)
- : QObject(parent), m_name(name), m_active(active)
-{
-}
-
-QString MapObject::name() const
-{
- return m_name;
-}
-
-void MapObject::setName(const QString &name)
-{
- if (name != m_name) {
- m_name = name;
- emit nameChanged();
- }
-}
-
-bool MapObject::active() const
-{
- return m_active;
-}
-
-void MapObject::setActive(const bool &active)
-{
- if (active != m_active) {
- m_active = active;
- emit activeChanged();
- }
-}
-
diff --git a/navit/gui/qt5_qml/qml_map.h b/navit/gui/qt5_qml/qml_map.h
deleted file mode 100644
index 55046c712..000000000
--- a/navit/gui/qt5_qml/qml_map.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef MAPOBJECT_H
-#define MAPOBJECT_H
-
-#include <QObject>
-
-class MapObject : public QObject
-{
- Q_OBJECT
-
- Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
- Q_PROPERTY(bool active READ active WRITE setActive NOTIFY activeChanged)
-
-public:
- MapObject(QObject *parent=0);
- MapObject(const QString &name, const bool &active, QObject *parent=0);
-
- QString name() const;
- void setName(const QString &name);
-
- bool active() const;
- void setActive(const bool &active);
-
-signals:
- void nameChanged();
- void activeChanged();
-
-private:
- QString m_name;
- bool m_active;
-};
-
-#endif // MAPOBJECT_H
diff --git a/navit/gui/qt5_qml/qml_poi.cpp b/navit/gui/qt5_qml/qml_poi.cpp
deleted file mode 100644
index 93adf2925..000000000
--- a/navit/gui/qt5_qml/qml_poi.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-#include "qml_poi.h"
-
-PoiObject::PoiObject(QObject *parent)
- : QObject(parent)
-{
-}
-
-PoiObject::PoiObject(
- const QString &name,
- const QString &type,
- const int distance,
- const QString &icon,
- struct pcoord &coords,
- QObject *parent)
- : QObject(parent), m_name(name), m_type(type), m_icon(icon), m_coords(coords)
-{
-}
-
-QString PoiObject::name() const
-{
- return m_name;
-}
-
-void PoiObject::setName(const QString &name)
-{
- if (name != m_name) {
- m_name = name;
- emit nameChanged();
- }
-}
-
-QString PoiObject::type() const
-{
- return m_type;
-}
-
-void PoiObject::setType(const QString &type)
-{
- if (type != m_type) {
- m_type = type;
- emit typeChanged();
- }
-}
-
-float PoiObject::distance() const
-{
- return m_distance/1000;
-}
-
-void PoiObject::setDistance(const int distance)
-{
- if (distance != m_distance) {
- m_distance = distance;
- emit distanceChanged();
- }
-}
-
-void PoiObject::setIcon(const QString &icon)
-{
- if (icon != m_icon) {
- m_icon = icon;
- emit iconChanged();
- }
-}
-
-QString PoiObject::icon() const
-{
- return m_icon;
-}
-
-struct pcoord PoiObject::coords() const
-{
- return m_coords;
-}
diff --git a/navit/gui/qt5_qml/qml_poi.h b/navit/gui/qt5_qml/qml_poi.h
deleted file mode 100644
index 328244372..000000000
--- a/navit/gui/qt5_qml/qml_poi.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef POIOBJECT_H
-#define POIOBJECT_H
-
-#include <QObject>
-#include "coord.h"
-
-class PoiObject : public QObject
-{
- Q_OBJECT
-
- Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
- Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged)
- Q_PROPERTY(int distance READ distance WRITE setDistance NOTIFY distanceChanged)
- Q_PROPERTY(QString icon READ icon WRITE setIcon NOTIFY iconChanged)
- Q_PROPERTY(struct pcoord coords NOTIFY coordsChanged)
-
-public:
- PoiObject(QObject *parent=0);
- PoiObject(const QString &name, const QString &type, const int distance, const QString &icon, struct pcoord &coords, QObject *parent=0);
- QString name() const;
- void setName(const QString &name);
-
- QString type() const;
- void setType(const QString &type);
-
- float distance() const;
- void setDistance(const int distance);
-
- QString icon() const;
- void setIcon(const QString &icon);
-
- struct pcoord coords() const;
-// void setcoords(const struct pcoord &c);
-
-signals:
- void nameChanged();
- void typeChanged();
- void distanceChanged();
- void iconChanged();
-// void coordsChanged();
-
-private:
- struct pcoord m_coords;
- QString m_name;
- QString m_type;
- int m_distance;
- QString m_icon;
-};
-
-#endif // POIOBJECT_H
-
diff --git a/navit/gui/qt5_qml/qml_search.cpp b/navit/gui/qt5_qml/qml_search.cpp
deleted file mode 100644
index 0a82e37d3..000000000
--- a/navit/gui/qt5_qml/qml_search.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "qml_search.h"
-
-SearchObject::SearchObject(QObject *parent)
- : QObject(parent)
-{
-}
-
-SearchObject::SearchObject(const QString &name, const QString &icon, struct pcoord *c, QObject *parent)
- : QObject(parent), m_name(name), m_icon(icon), m_c(c)
-{
-}
-
-QString SearchObject::name() const
-{
- return m_name;
-}
-
-void SearchObject::setName(const QString &name)
-{
- if (name != m_name) {
- m_name = name;
- emit nameChanged();
- }
-}
-
-QString SearchObject::icon() const
-{
- return m_icon;
-}
-
-void SearchObject::setIcon(const QString &icon)
-{
- if (icon != m_icon) {
- m_icon = icon;
- emit iconChanged();
- }
-}
-
-struct pcoord * SearchObject::getCoords() const
-{
- return m_c;
-}
diff --git a/navit/gui/qt5_qml/qml_search.h b/navit/gui/qt5_qml/qml_search.h
deleted file mode 100644
index 656d85f3c..000000000
--- a/navit/gui/qt5_qml/qml_search.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef SEARCHOBJECT_H
-#define SEARCHOBJECT_H
-
-#include <QObject>
-
-class SearchObject : public QObject
-{
- Q_OBJECT
-
- Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
- Q_PROPERTY(QString icon READ icon WRITE setIcon NOTIFY iconChanged)
-
-public:
- SearchObject(QObject *parent=0);
- SearchObject(const QString &name, const QString &icon, struct pcoord *c, QObject *parent=0);
-
- QString name() const;
- void setName(const QString &name);
-
- QString icon() const;
- void setIcon(const QString &icon);
- struct pcoord * getCoords() const;
-
-signals:
- void nameChanged();
- void iconChanged();
-
-private:
- QString m_name;
- QString m_icon;
- struct pcoord *m_c;
-};
-
-#endif // SEARCHOBJECT_H
diff --git a/navit/gui/qt5_qml/qml_vehicle.cpp b/navit/gui/qt5_qml/qml_vehicle.cpp
deleted file mode 100644
index bf79ad4c4..000000000
--- a/navit/gui/qt5_qml/qml_vehicle.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "qml_vehicle.h"
-
-VehicleObject::VehicleObject(QObject *parent)
- : QObject(parent)
-{
-}
-
-VehicleObject::VehicleObject(const QString &name, const bool &active, struct vehicle *v, QObject *parent)
- : QObject(parent), m_name(name), m_active(active), m_vehicle(v)
-{
-}
-
-QString VehicleObject::name() const
-{
- return m_name;
-}
-
-void VehicleObject::setName(const QString &name)
-{
- if (name != m_name) {
- m_name = name;
- emit nameChanged();
- }
-}
-
-bool VehicleObject::active() const
-{
- return m_active;
-}
-
-void VehicleObject::setActive(const bool &active)
-{
- if (active != m_active) {
- m_active = active;
- emit activeChanged();
- }
-}
-
-struct vehicle * VehicleObject::vehicle() const
-{
- return m_vehicle;
-}
-
-void VehicleObject::setVehicle(struct vehicle * vehicle)
-{
- if (vehicle != m_vehicle) {
- m_vehicle = vehicle;
- emit vehicleChanged();
- }
-}
-
-
diff --git a/navit/gui/qt5_qml/qml_vehicle.h b/navit/gui/qt5_qml/qml_vehicle.h
deleted file mode 100644
index 84bb42160..000000000
--- a/navit/gui/qt5_qml/qml_vehicle.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef VEHICLEOBJECT_H
-#define VEHICLEOBJECT_H
-
-#include <QObject>
-#include "item.h"
-#include "vehicle.h"
-
-class VehicleObject : public QObject
-{
- Q_OBJECT
-
- Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
- Q_PROPERTY(bool active READ active WRITE setActive NOTIFY activeChanged)
- //Q_PROPERTY(struct vehicle * vehicle READ vehicle WRITE setVehicle NOTIFY vehicleChanged)
-
-public:
- VehicleObject(QObject *parent=0);
- VehicleObject(const QString &name, const bool &active, struct vehicle *v, QObject *parent=0);
-
- QString name() const;
- void setName(const QString &name);
-
- bool active() const;
- void setActive(const bool &active);
-
- struct vehicle * vehicle() const;
- void setVehicle(struct vehicle * vehicle);
-
-signals:
- void nameChanged();
- void activeChanged();
- void vehicleChanged();
-
-private:
- QString m_name;
- bool m_active;
- struct vehicle *m_vehicle;
-};
-
-#endif // MAPOBJECT_H
diff --git a/navit/gui/qt5_qml/skins/MainButton.qml b/navit/gui/qt5_qml/skins/MainButton.qml
deleted file mode 100644
index e189ad9a2..000000000
--- a/navit/gui/qt5_qml/skins/MainButton.qml
+++ /dev/null
@@ -1,71 +0,0 @@
-import QtQuick 2.2
-import QtQuick.Layouts 1.0
-
-Rectangle {
- id: container
-
- signal clicked
- property string text: "Button"
- property string icon: "icons/appbar.home.variant.svg"
-
- smooth: true;
- width: 200;
- height: 80
- color: "#35322f"
- radius: 2
- border.width: 1
-
- MouseArea { id: mr; anchors.fill: parent; onClicked: container.clicked() }
-
- Text {
- id: txtItem;
- color: "#ffffff"
- text: container.text
- font.pointSize: 18
- anchors.left: rectangle.right
- anchors.leftMargin: 8
- anchors.verticalCenter: parent.verticalCenter
- z: 1
- }
-
- Rectangle {
- id: rectangle
- width: container.height
- height: container.height
- color: "#35322f"
- radius: 2
- border.width: 1
- anchors.verticalCenter: parent.verticalCenter
-
- Image {
- id: imgItem;
- width: parent.width;
- height: parent.height;
- source: container.icon
- smooth: true
- scale: 1
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
-// anchors.leftMargin: 8
- sourceSize.width: parent.width
- sourceSize.height: parent.height
- }
- }
-
- states: [
- State {
- name: "Pressed"; when: mr.pressed == true
- PropertyChanges {
- target: txtItem;
- opacity: 0.6;
- color: "#84ca43";
- }
- }
- ]
-
- transitions: Transition {
- NumberAnimation { properties: "scale"; easing.type: "OutExpo"; duration: 200 }
- }
-
-}
-
diff --git a/navit/gui/qt5_qml/skins/MainMenu.qml b/navit/gui/qt5_qml/skins/MainMenu.qml
deleted file mode 100644
index 5d2a2b34c..000000000
--- a/navit/gui/qt5_qml/skins/MainMenu.qml
+++ /dev/null
@@ -1,55 +0,0 @@
-import QtQuick 2.2
-import QtQuick.Layouts 1.0
-
-GridLayout {
- id: gridLayout
- anchors.fill: parent
- columnSpacing: 4
- rowSpacing: 4
- rows: 3
- columns: 2
-
- MainButton {
- text: "Where To?"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.location.checkin.svg"
- }
-
- MainButton {
- text: "Around Me"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.information.circle.svg"
- onClicked: {
- menucontent.source = "pois.qml"
- }
- }
-
- MainButton {
- text: "Go Home"
- Layout.fillHeight: true
- Layout.fillWidth: true
- }
-
-
- MainButton {
- text: "Settings"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.cog.svg"
- onClicked: {
- menucontent.source = "settings.qml"
- console.log("showing settings")
- }
- }
-
- MainButton {
- text: "Quit"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.power.svg"
- onClicked: Qt.quit()
- }
-
-}
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.chevron.down.svg b/navit/gui/qt5_qml/skins/icons/appbar.chevron.down.svg
deleted file mode 100644
index 3917fc7cd..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.chevron.down.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 37.8516,39.5833L 52.1016,24.9375L 52.1016,35.2292L 37.8516,50.2708L 23.6016,35.2292L 23.6016,24.9375L 37.8516,39.5833 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.chevron.up.svg b/navit/gui/qt5_qml/skins/icons/appbar.chevron.up.svg
deleted file mode 100644
index b737d9773..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.chevron.up.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 37.8516,35.625L 34.6849,38.7917L 23.6016,50.2708L 23.6016,39.9792L 37.8516,24.9375L 52.1016,39.9792L 52.1016,50.2708L 41.0182,38.7917L 37.8516,35.625 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.cog.svg b/navit/gui/qt5_qml/skins/icons/appbar.cog.svg
deleted file mode 100644
index 4ef1ef8c2..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.cog.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 27.5314,21.8628L 33.0126,19.4224L 34.7616,23.3507C 36.6693,22.9269 38.6044,22.8903 40.4668,23.2026L 42.0083,19.1868L 47.6098,21.337L 46.0683,25.3528C 47.6612,26.3669 49.0747,27.6889 50.2088,29.2803L 54.1371,27.5313L 56.5776,33.0126L 52.6493,34.7616C 53.0731,36.6693 53.1097,38.6043 52.7974,40.4668L 56.8131,42.0083L 54.6629,47.6097L 50.6472,46.0683C 49.6331,47.6613 48.3111,49.0748 46.7197,50.2089L 48.4686,54.1372L 42.9874,56.5776L 41.2384,52.6493C 39.3307,53.0731 37.3957,53.1097 35.5333,52.7974L 33.9918,56.8131L 28.3903,54.6629L 29.9318,50.6472C 28.3388,49.6331 26.9252,48.3111 25.7911,46.7196L 21.8628,48.4686L 19.4224,42.9873L 23.3507,41.2383C 22.9269,39.3307 22.8903,37.3957 23.2026,35.5332L 19.1869,33.9918L 21.3371,28.3903L 25.3528,29.9318C 26.3669,28.3388 27.6889,26.9252 29.2804,25.7911L 27.5314,21.8628 Z M 34.3394,29.7781C 29.7985,31.7998 27.7564,37.1198 29.7781,41.6606C 31.7998,46.2015 37.1198,48.2436 41.6606,46.2219C 46.2015,44.2002 48.2436,38.8802 46.2219,34.3394C 44.2002,29.7985 38.8802,27.7564 34.3394,29.7781 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.cogs.svg b/navit/gui/qt5_qml/skins/icons/appbar.cogs.svg
deleted file mode 100644
index e3fdaa4ce..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.cogs.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 32.6227,68.9728C 33.1208,70.2446 33.7077,71.4719 34.3757,72.6471C 35.567,72.7702 36.7761,72.8333 38,72.8333C 40.6447,72.8333 43.2205,72.5386 45.6965,71.9802C 42.2807,68.5449 40.1698,63.8107 40.1698,58.5835C 40.1698,48.0901 48.6764,39.5835 59.1698,39.5835C 64.2047,39.5835 68.7822,41.5419 72.182,44.7385C 72.6094,42.5584 72.8333,40.3053 72.8333,38C 72.8333,36.442 72.731,34.908 72.5328,33.4041C 70.4772,32.3109 68.2718,31.4621 65.9554,30.8963L 65.6219,22.7367C 63.5664,22.3692 61.4511,22.1741 59.2916,22.1671L 57.491,30.1322C 54.2845,30.3184 51.2204,31.0348 48.3848,32.1949L 43.318,25.7887C 41.3995,26.7177 39.5749,27.8102 37.8622,29.0479L 41.0883,36.5527C 38.6742,38.5364 36.5919,40.9091 34.9373,43.575L 27.0703,41.3697C 26.073,43.2256 25.2319,45.178 24.5646,47.2093L 31.5867,51.385C 30.9883,53.6844 30.6698,56.0968 30.6698,58.5835L 30.746,60.6839L 23.0854,63.5239C 23.3743,65.6539 23.8474,67.7255 24.4881,69.7219L 32.6227,68.9728 Z M 27.0669,37.1755L 34.9338,39.3807C 35.9312,37.5248 36.7723,35.5724 37.4395,33.5412L 30.4175,29.3654C 31.0159,27.066 31.3344,24.6537 31.3344,22.1669L 31.2581,20.0665L 38.9187,17.2265C 38.6299,15.0965 38.1568,13.0249 37.5161,11.0285L 29.3815,11.7776C 28.4787,9.47258 27.2844,7.31377 25.8439,5.34655C 22.7943,6.48232 19.9467,8.03307 17.3698,9.93015C 20.1557,13.2359 21.8344,17.5054 21.8344,22.1669C 21.8344,32.5019 13.5826,40.9096 3.30816,41.1611C 3.60321,44.4411 4.35293,47.59 5.49381,50.5444C 8.34489,50.2806 11.0742,49.5968 13.6194,48.5555L 18.6861,54.9617C 20.6046,54.0327 22.4293,52.9403 24.142,51.7025L 20.9158,44.1977C 23.3299,42.2141 25.4123,39.8414 27.0669,37.1755 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.fullscreen.box.svg b/navit/gui/qt5_qml/skins/icons/appbar.fullscreen.box.svg
deleted file mode 100644
index 13e6840e5..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.fullscreen.box.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 19,57L 19,19L 57,19L 57,57L 19,57 Z M 24,29L 47,29L 47,52L 52,52L 52,24L 24,24L 24,29 Z M 24,34L 24,52L 42,52L 42,34L 24,34 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.home.variant.svg b/navit/gui/qt5_qml/skins/icons/appbar.home.variant.svg
deleted file mode 100644
index ea951fd19..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.home.variant.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76.0106" height="76.0106" viewBox="0 0 76.01 76.01" enable-background="new 0 0 76.01 76.01" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 24.0033,56.0078L 24.0033,38.0053L 22.0031,40.0056L 19.0027,35.0049L 38.0053,20.0028L 45.0063,25.5299L 45.0063,21.753L 49.0068,21.0029L 49.0068,28.6882L 57.008,35.0049L 54.0075,40.0056L 52.0073,38.0053L 52.0073,56.0078L 24.0033,56.0078 Z M 38.0053,26.9204L 27.0038,36.005L 27.0038,53.0074L 38.0045,53.0075L 38.0045,41.0061L 46.0058,41.0061L 46.0059,53.0075L 49.0068,53.0074L 49.0068,36.005L 38.0053,26.9204 Z M 30.004,41.0057L 35.0049,41.0057L 35.0049,47.0066L 30.004,47.0066L 30.004,41.0057 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.information.circle.svg b/navit/gui/qt5_qml/skins/icons/appbar.information.circle.svg
deleted file mode 100644
index 031bd37f5..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.information.circle.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 38,19C 48.4934,19 57,27.5066 57,38C 57,48.4934 48.4934,57 38,57C 27.5066,57 19,48.4934 19,38C 19,27.5066 27.5066,19 38,19 Z M 33.25,33.25L 33.25,36.4167L 36.4166,36.4167L 36.4166,47.5L 33.25,47.5L 33.25,50.6667L 44.3333,50.6667L 44.3333,47.5L 41.1666,47.5L 41.1666,36.4167L 41.1666,33.25L 33.25,33.25 Z M 38.7917,25.3333C 37.48,25.3333 36.4167,26.3967 36.4167,27.7083C 36.4167,29.02 37.48,30.0833 38.7917,30.0833C 40.1033,30.0833 41.1667,29.02 41.1667,27.7083C 41.1667,26.3967 40.1033,25.3333 38.7917,25.3333 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.layer.delete.svg b/navit/gui/qt5_qml/skins/icons/appbar.layer.delete.svg
deleted file mode 100644
index ddbeb21ca..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.layer.delete.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76.0106" height="76.0106" viewBox="0 0 76.01 76.01" enable-background="new 0 0 76.01 76.01" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 18.5088,44.0374L 21.8676,40.6786L 27.4655,46.2765L 33.0634,40.6786L 36.4222,44.0374L 30.8243,49.6353L 36.4222,55.2332L 33.0634,58.592L 27.4655,52.994L 21.8676,58.592L 18.5088,55.2332L 24.1068,49.6353L 18.5088,44.0374 Z M 57.0079,38.0053L 38.0053,47.5066L 36.7482,46.8781L 39.5889,44.0374L 35.2559,39.7977L 38.0053,41.1724L 50.6737,34.8382L 57.0079,38.0053 Z M 19.0026,38.0053L 25.3369,34.8382L 32.3326,38.3361L 29.8968,40.7719L 28.1098,42.5589L 25.7193,41.3636L 21.8676,37.6052L 20.6459,38.8269L 19.0026,38.0053 Z M 38.0053,19.0027L 57.0079,28.504L 38.0053,38.0053L 19.0026,28.504L 38.0053,19.0027 Z M 57.0079,47.5066L 38.0053,57.008L 37.8778,56.9442L 39.5889,55.2332L 33.9909,49.6353L 34.6367,48.9895L 38.0053,50.6738L 50.6737,44.3395L 57.0079,47.5066 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.layer.svg b/navit/gui/qt5_qml/skins/icons/appbar.layer.svg
deleted file mode 100644
index 9eb28235c..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.layer.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76.0106" height="76.0106" viewBox="0 0 76.01 76.01" enable-background="new 0 0 76.01 76.01" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 57.0079,38.0053L 38.0053,47.5066L 19.0027,38.0053L 25.3369,34.8382L 38.0053,41.1724L 50.6737,34.8382L 57.0079,38.0053 Z M 38.0053,19.0027L 57.0079,28.504L 38.0053,38.0053L 19.0026,28.504L 38.0053,19.0027 Z M 57.0079,47.5066L 38.0053,57.008L 19.0026,47.5066L 25.3369,44.3395L 38.0053,50.6737L 50.6737,44.3395L 57.0079,47.5066 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.location.checkin.svg b/navit/gui/qt5_qml/skins/icons/appbar.location.checkin.svg
deleted file mode 100644
index 3b21754c6..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.location.checkin.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-linejoin="round" d="M 38,19C 42.9706,19 47,23.0294 47,28C 47,30.5642 45.9276,32.878 38,49C 30.0724,32.878 29,30.5642 29,28C 29,23.0294 33.0294,19 38,19 Z M 38,24C 35.7909,24 34,25.7909 34,28C 34,30.2092 35.7909,32 38,32C 40.2091,32 42,30.2092 42,28C 42,25.7909 40.2091,24 38,24 Z M 19,57L 24,42L 31.5,42L 33.5,46L 27.6641,46L 25.3324,53L 50.6676,53L 48.3359,46L 42.5,46L 44.5,42L 52,42L 57,57L 19,57 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.map.svg b/navit/gui/qt5_qml/skins/icons/appbar.map.svg
deleted file mode 100644
index 241f71e59..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.map.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 27.7083,23.75L 38.7917,26.9167L 48.2917,20.5833L 62,24L 62,51L 48.2917,47.5L 38.7917,53.8333L 27.7083,50.6667L 16,55.5L 16,28.5L 27.7083,23.75 Z M 27,46.25L 27,29L 20,31.75L 20,49L 27,46.25 Z M 49,25.5L 49,42.75L 58,45.25L 58,28L 49,25.5 Z M 39,31.5L 39,49L 48,43L 48,25.5L 39,31.5 Z M 28,28.75L 28,46L 38,48.5L 38,31.75L 28,28.75 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.power.svg b/navit/gui/qt5_qml/skins/icons/appbar.power.svg
deleted file mode 100644
index d3f865c0d..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.power.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 36.4167,36.4167L 36.4167,17.4167L 41.1667,17.4167L 41.1667,36.4167L 36.4167,36.4167 Z M 57,39.5833C 57,50.0767 48.4934,58.5833 38,58.5833C 27.5066,58.5833 19,50.0767 19,39.5833C 19,30.7301 25.0552,23.2911 33.25,21.1819L 33.25,27.8374C 28.6079,29.7165 25.3333,34.2675 25.3333,39.5833C 25.3333,46.5789 31.0044,52.25 38,52.25C 44.9956,52.25 50.6667,46.5789 50.6667,39.5833C 50.6667,34.8949 48.1194,30.8014 44.3333,28.6113L 44.3333,21.6645C 51.7129,24.2728 57,31.3106 57,39.5833 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.rocket.svg b/navit/gui/qt5_qml/skins/icons/appbar.rocket.svg
deleted file mode 100644
index a8c5c273a..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.rocket.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 38,19C 39.4823,20.6344 43,26.1259 43,41L 47,46L 47,55L 43,50L 33,50L 29,55L 29,46L 33,41C 33,26.1259 36.0177,20.6344 38,19 Z M 38,57.5L 35,51L 41,51L 38,57.5 Z M 38,27L 36.1552,27.4612L 35.6203,30.5949L 38,30L 40.2918,30.573L 39.6953,27.4238L 38,27 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/icons/appbar.transit.car.svg b/navit/gui/qt5_qml/skins/icons/appbar.transit.car.svg
deleted file mode 100644
index 8ea1a7c5d..000000000
--- a/navit/gui/qt5_qml/skins/icons/appbar.transit.car.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 17.4167,50.6667C 16.5422,50.6667 15.8333,49.9578 15.8333,49.0833L 15.8333,39.5834C 15.8333,37.0877 17.2768,34.9292 19.3745,33.8972L 25.3333,19L 26.9167,19L 30.0833,19L 45.9167,19L 49.0833,19L 50.6667,19L 56.6255,33.8972C 58.7231,34.9292 60.1666,37.0877 60.1666,39.5834L 60.1667,49.0833C 60.1667,49.9578 59.4578,50.6667 58.5833,50.6667L 57,50.6667L 57,53.8333C 57,55.5822 55.5822,57 53.8333,57C 52.0844,57 50.6667,55.5822 50.6667,53.8333L 50.6667,50.6667L 25.3333,50.6667L 25.3333,53.8333C 25.3333,55.5822 23.9156,57 22.1667,57C 20.4178,57 19,55.5822 19,53.8333L 19,50.6667L 17.4167,50.6667 Z M 24.3833,33.25L 51.6166,33.25L 47.8166,23.75L 28.1833,23.75L 24.3833,33.25 Z M 24.1458,36.0209C 22.3969,36.0209 20.5833,37.8344 20.5833,39.5833C 20.5833,41.3322 22.3969,43.1458 24.1458,43.1458C 25.8947,43.1458 27.7083,41.3323 27.7083,39.5834C 27.7083,37.8345 25.8947,36.0209 24.1458,36.0209 Z M 51.8542,36.0208C 50.1053,36.0208 48.2917,37.8344 48.2917,39.5833C 48.2917,41.3322 50.1053,43.1458 51.8542,43.1458C 53.6031,43.1458 55.4167,41.3322 55.4167,39.5833C 55.4167,37.8344 53.6031,36.0208 51.8542,36.0208 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/maps.qml b/navit/gui/qt5_qml/skins/maps.qml
deleted file mode 100644
index 6e41891d6..000000000
--- a/navit/gui/qt5_qml/skins/maps.qml
+++ /dev/null
@@ -1,36 +0,0 @@
-import QtQuick 2.0
-
-ListView {
- model: maps
- delegate: Rectangle {
- height: 64
- color: "#ff0000"
- radius: 2
- border.width: 1
-
- Image {
- id: image1
- height: parent.height - 4;
- source : active ? "icons/appbar.layer.svg" : "icons/appbar.layer.delete.svg"
- opacity: active ? 1 : 0.4
- }
-
- Text {
- text: name
- color: "#ffffff"
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: image1.right
- anchors.leftMargin: 8
- }
-
- MouseArea{
- anchors.fill: parent
- hoverEnabled: true
- onEntered: {
- // backend.list_maps(1)
- }
- }
- }
-
- Component.onCompleted: backend.list_maps(0)
-}
diff --git a/navit/gui/qt5_qml/skins/menu.qml b/navit/gui/qt5_qml/skins/menu.qml
deleted file mode 100644
index 540a16032..000000000
--- a/navit/gui/qt5_qml/skins/menu.qml
+++ /dev/null
@@ -1,51 +0,0 @@
-import QtQuick.Layouts 1.0
-import QtQuick 2.2
-
-Rectangle {
- id: rectangle
- visible: true
- height: 300
- color: "#000000"
-
- Rectangle {
- id: rectangle1
- x: 0
- y: 200
- height: 300
- color: "#1e1b18"
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- anchors.leftMargin: 0
- anchors.right: parent.right
- anchors.rightMargin: 0
-
- Loader {
- id: menucontent
- width: parent.width
- height: parent.height
- Component.onCompleted: menucontent.source = "MainMenu.qml"
- }
-
- }
-
- MainButton {
- id: mainButton3
- width: 260
- height: 80
- radius: 1
- text: "Map"
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 0
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.map.svg"
- onClicked: {
- mainMenu.state = ''
- mainMenu.source = ""
- }
-
- }
-
-}
diff --git a/navit/gui/qt5_qml/skins/modern/MainButton.qml b/navit/gui/qt5_qml/skins/modern/MainButton.qml
deleted file mode 100644
index 18a41dd8d..000000000
--- a/navit/gui/qt5_qml/skins/modern/MainButton.qml
+++ /dev/null
@@ -1,72 +0,0 @@
-import QtQuick 2.2
-import QtQuick.Layouts 1.0
-
-Rectangle {
- id: container
-
- signal clicked
- property string text: "Button"
- property string icon: "icons/appbar.home.variant.svg"
-
- smooth: true;
- width: 200;
- height: 80
- color: "#35322f"
- radius: 2
- border.width: 1
-
- MouseArea { id: mr; anchors.fill: parent; onClicked: container.clicked() }
-
- Text {
- id: txtItem;
- color: "#ffffff"
- text: container.text
- font.pointSize: 18
- anchors.left: rectangle.right
- anchors.leftMargin: 8
- anchors.verticalCenter: parent.verticalCenter
- z: 1
- }
-
- Rectangle {
- id: rectangle
- width: container.height
- height: container.height
- color: "#35322f"
- radius: 2
- border.width: 1
- anchors.verticalCenter: parent.verticalCenter
-
- Image {
- id: imgItem;
- width: parent.width;
- height: parent.height;
- source: container.icon
- smooth: true
- scale: 1
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- // anchors.leftMargin: 8
- // sourceSize.width: parent.width
- // sourceSize.height: parent.height
- fillMode: Image.PreserveAspectFit
- }
- }
-
- states: [
- State {
- name: "Pressed"; when: mr.pressed == true
- PropertyChanges {
- target: txtItem;
- opacity: 0.6;
- color: "#84ca43";
- }
- }
- ]
-
- transitions: Transition {
- NumberAnimation { properties: "scale"; easing.type: "OutExpo"; duration: 200 }
- }
-
-}
-
diff --git a/navit/gui/qt5_qml/skins/modern/MainMenu.qml b/navit/gui/qt5_qml/skins/modern/MainMenu.qml
deleted file mode 100644
index 748a5ab0f..000000000
--- a/navit/gui/qt5_qml/skins/modern/MainMenu.qml
+++ /dev/null
@@ -1,64 +0,0 @@
-import QtQuick 2.2
-import QtQuick.Layouts 1.0
-
-GridLayout {
- id: gridLayout
- anchors.fill: parent
- columnSpacing: 4
- rowSpacing: 4
- rows: 3
- columns: 2
-
- MainButton {
- text: "Where To?"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.rocket.svg"
- onClicked: {
- menucontent.source = "destination.qml"
- }
- }
-
- MainButton {
- text: "My position"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.location.checkin.svg"
- }
-
- MainButton {
- text: "Around Me"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.information.circle.svg"
- onClicked: {
- menucontent.source = "pois.qml"
- }
- }
-
- MainButton {
- text: "Settings"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.cog.svg"
- onClicked: {
- menucontent.source = "settings.qml"
- }
- }
-
- MainButton {
- text: "My route"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.book.list.svg"
- }
-
- MainButton {
- text: "Quit"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.power.svg"
- onClicked: Qt.quit()
- }
-
-}
diff --git a/navit/gui/qt5_qml/skins/modern/bookmark.qml b/navit/gui/qt5_qml/skins/modern/bookmark.qml
deleted file mode 100644
index 66261576c..000000000
--- a/navit/gui/qt5_qml/skins/modern/bookmark.qml
+++ /dev/null
@@ -1,104 +0,0 @@
-import QtQuick 2.0
-import QtQuick.Layouts 1.0
-import com.navit.graphics_qt5 1.0
-
-
-Item {
- id: bookmarkItem
- visible: true
- property var small_font_size : 16
-
-
- Text {
- x: 8
- y: 8
- color: "#ffffff"
- text: backend.currentBookmark.name
- font.pixelSize: 32
- }
-
- Text {
- x: 80
- y: 64
- color: "#ffffff"
- text: qsTr("Type")
- font.pixelSize: small_font_size
- }
-
- Text {
- x: 80
- y: 96
- color: "#ffffff"
- text: qsTr("Distance")
- font.pixelSize: small_font_size
- }
-
- Text {
- x: 160
- y: 64
- color: "#ffffff"
- text: backend.currentBookmark.type
- font.pixelSize: small_font_size
- }
-
- Text {
- x: 160
- y: 96
- color: "#ffffff"
- text: backend.currentBookmark.distance
- font.pixelSize: small_font_size
- }
-
- Rectangle {
- id: rectangle
- x: 8
- y: 64
- height: 64
- width: height
- color: "#ffffff"
- radius: 8
- border.width: 1
- Image {
- height: parent.width
- width: parent.height
- source : backend.get_icon_path() + backend.currentBookmark.icon
- sourceSize.width: parent.width
- sourceSize.height: parent.height
- }
- }
-
- ColumnLayout {
- id: columnLayout
- width: parent.width/2
- height: parent.height
- anchors.right: parent.right
- anchors.rightMargin: 0
- QNavitQuick {
- id: navit1
- width: 300
- height: 240
- Component.onCompleted: {
- navit1.setGraphicContext(graphics_qt5_context)
- }
- Component.onDestruction: {
- console.log("Destroying a navit widget. Blocking draw operations")
- backend.block_draw()
- }
- }
- }
-
- MainButton {
- id: mainButton3
- x: 8
- y: parent.height-78
- width: parent.width/2 - 16
- height: 64
- radius: 1
- text: "Set as destination"
- icon: "icons/appbar.location.checkin.svg"
- onClicked: {
- backend.setCurrentBookmarkAsDestination()
- }
- }
-
-}
diff --git a/navit/gui/qt5_qml/skins/modern/bookmarks.qml b/navit/gui/qt5_qml/skins/modern/bookmarks.qml
deleted file mode 100644
index b8e644081..000000000
--- a/navit/gui/qt5_qml/skins/modern/bookmarks.qml
+++ /dev/null
@@ -1,108 +0,0 @@
-import QtQuick 2.0
-
-Item {
- id: bookmarklist
- ListView {
- anchors.fill: parent
- id: listView
- model: backend.bookmarks
- delegate: Item {
- height: 64
- width: parent.width;
- Rectangle {
- color: "#1e1b18"
- height: parent.height;
- width: parent.width;
- border.width: 1
-
- Text {
- text: name
- color: "#ffffff"
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: distanceText.right
- anchors.leftMargin: 8
- }
-
- MouseArea {
- id: mouse_area1
- z: 1
- hoverEnabled: false
- anchors.fill: parent
-
- onClicked:{
- listView.currentIndex = index
- backend.setCurrentBookmark(index);
- menucontent.source = "bookmark.qml"
- }
- }
- }
-
- }
-
- Component.onCompleted: backend.get_bookmarks()
- }
-
- Rectangle {
- height: 64
- width: height
-
- x: parent.width - width
- y: parent.height - height * 2
-
- color: "#35322f"
-
- Image {
- anchors.centerIn: parent
- source: "icons/appbar.chevron.up.svg"
- }
-
- MouseArea {
- anchors.fill: parent
- id: listUp
-
- SmoothedAnimation {
- target: listView
- property: "contentY"
- running: listUp.pressed
- velocity: 1000
- to: 0
- }
- onReleased: {
- if (!listView.atYBeginning)
- listView.flick(0, 1000)
- }
- }
- }
-
- Rectangle {
- height: 64
- width: height
-
- x: parent.width - width
- y: parent.height - height
-
- color: "#35322f"
-
- Image {
- anchors.centerIn: parent
- source: "icons/appbar.chevron.down.svg"
- }
-
- MouseArea {
- anchors.fill: parent
- id: listDown
-
- SmoothedAnimation {
- target: listView
- property: "contentY"
- running: listDown.pressed
- to: listView.contentHeight - listView.height
- velocity: 1000
- }
- onReleased: {
- if (!listView.atYEnd)
- listView.flick(0, -1000)
- }
- }
- }
-}
diff --git a/navit/gui/qt5_qml/skins/modern/destination.qml b/navit/gui/qt5_qml/skins/modern/destination.qml
deleted file mode 100644
index 00e1f5579..000000000
--- a/navit/gui/qt5_qml/skins/modern/destination.qml
+++ /dev/null
@@ -1,45 +0,0 @@
-import QtQuick 2.0
-import QtQuick.Layouts 1.0
-
-GridLayout {
- id: gridLayout
- anchors.fill: parent
- columnSpacing: 4
- rowSpacing: 4
- rows: 4
- columns: 1
-
- MainButton {
- text: "Address lookup"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.city.svg"
- onClicked: {
- menucontent.source = "destination_address.qml"
- }
- }
-
- MainButton {
- text: "Go Home"
- Layout.fillHeight: true
- Layout.fillWidth: true
- }
-
- MainButton {
- text: "Bookmarks"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.location.svg"
- onClicked: {
- menucontent.source = "bookmarks.qml"
- }
- }
-
- MainButton {
- text: "Previous destinations"
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.timer.rewind.svg"
- }
-
-}
diff --git a/navit/gui/qt5_qml/skins/modern/destination_address.qml b/navit/gui/qt5_qml/skins/modern/destination_address.qml
deleted file mode 100644
index 35d11a68c..000000000
--- a/navit/gui/qt5_qml/skins/modern/destination_address.qml
+++ /dev/null
@@ -1,45 +0,0 @@
-import QtQuick 2.0
-import QtQuick.Layouts 1.0
-
-GridLayout {
- id: gridLayout
- anchors.fill: parent
- columnSpacing: 4
- rowSpacing: 4
- rows: 3
- columns: 1
-
- MainButton {
- id: townSearchButton
- height: 100
- text: backend.currentTown
- Layout.fillWidth: true
- onClicked: {
- backend.setSearchContext('town')
- menucontent.source = "search.qml"
- }
- }
-
- MainButton {
- id: streetSearchButton
- height: 100
- text: backend.currentStreet
- Layout.fillWidth: true
- onClicked: {
- backend.setSearchContext('street')
- menucontent.source = "search.qml"
- }
- }
-
- MainButton {
- id: countrySearchButton
- height: 100
- text: backend.currentCountry
- icon: backend.get_icon_path() + 'country_' + backend.currentCountryIso2 + ".svg"
- Layout.fillWidth: true
- onClicked: {
- backend.setSearchContext('country')
- menucontent.source = "search.qml"
- }
- }
-}
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.book.list.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.book.list.svg
deleted file mode 100644
index 9dda725d2..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.book.list.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 22,19L 24,19L 24,57L 22,57L 22,19 Z M 26,57L 26,19.0001L 53.9999,19.0001L 53.9999,57L 26,57 Z M 30,24L 30,27L 50,27L 50,24L 30,24 Z M 30,32L 30,35L 33,35L 33,32L 30,32 Z M 36,32L 36,35L 49,35L 49,32L 36,32 Z M 30,40L 30,43L 33,43L 33,40L 30,40 Z M 36,40L 36,43L 48,43L 48,40L 36,40 Z M 30,48L 30,51L 33,51L 33,48L 30,48 Z M 36,48L 36,51L 50,51L 50,48L 36,48 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.chevron.down.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.chevron.down.svg
deleted file mode 100644
index 3917fc7cd..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.chevron.down.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 37.8516,39.5833L 52.1016,24.9375L 52.1016,35.2292L 37.8516,50.2708L 23.6016,35.2292L 23.6016,24.9375L 37.8516,39.5833 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.chevron.up.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.chevron.up.svg
deleted file mode 100644
index b737d9773..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.chevron.up.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 37.8516,35.625L 34.6849,38.7917L 23.6016,50.2708L 23.6016,39.9792L 37.8516,24.9375L 52.1016,39.9792L 52.1016,50.2708L 41.0182,38.7917L 37.8516,35.625 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.city.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.city.svg
deleted file mode 100644
index f66893f7e..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.city.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 44.3333,30.0833L 57,30.0833L 57,57L 44.3333,57L 44.3333,30.0833 Z M 46.3125,35.2292L 46.3125,38L 49.0833,38L 49.0833,35.2292L 46.3125,35.2292 Z M 52.25,35.2292L 52.25,38L 55.0208,38L 55.0208,35.2292L 52.25,35.2292 Z M 46.3125,39.9792L 46.3125,42.75L 49.0833,42.75L 49.0833,39.9792L 46.3125,39.9792 Z M 52.25,39.9792L 52.25,42.75L 55.0208,42.75L 55.0208,39.9792L 52.25,39.9792 Z M 46.3125,44.7292L 46.3125,47.5L 49.0833,47.5L 49.0833,44.7292L 46.3125,44.7292 Z M 52.25,44.7292L 52.25,47.5L 55.0208,47.5L 55.0208,44.7292L 52.25,44.7292 Z M 46.3125,49.4792L 46.3125,52.25L 49.0833,52.25L 49.0833,49.4792L 46.3125,49.4792 Z M 52.25,49.4792L 52.25,52.25L 55.0208,52.25L 55.0208,49.4792L 52.25,49.4792 Z M 23.75,25.3333L 25.3333,22.1667L 26.9167,22.1667L 26.9167,18.2084L 28.5,18.2084L 28.5,22.1667L 31.6667,22.1667L 31.6667,18.2084L 33.25,18.2084L 33.25,22.1667L 34.8333,22.1667L 36.4167,25.3333L 36.4167,34.8334L 38.7917,34.8333L 41.1667,37.2083L 41.1667,57L 19,57L 19,37.2083L 21.375,34.8333L 23.75,34.8334L 23.75,25.3333 Z M 25.7291,27.3125L 25.7291,30.0834L 28.1041,30.0834L 28.1041,27.3125L 25.7291,27.3125 Z M 32.0625,27.3125L 32.0625,30.0834L 34.4375,30.0834L 34.4375,27.3125L 32.0625,27.3125 Z M 25.7291,32.0625L 25.7291,34.8334L 28.1041,34.8334L 28.1041,32.0625L 25.7291,32.0625 Z M 32.0625,32.0625L 32.0625,34.8334L 34.4375,34.8334L 34.4375,32.0625L 32.0625,32.0625 Z M 30.875,39.9792L 28.8958,39.9792L 28.8958,42.75L 30.875,42.75L 30.875,39.9792 Z M 24.5416,39.9792L 24.5416,42.75L 26.9166,42.75L 26.9166,39.9792L 24.5416,39.9792 Z M 36.0208,39.9792L 33.25,39.9792L 33.25,42.75L 36.0208,42.75L 36.0208,39.9792 Z M 30.875,44.7292L 28.8958,44.7292L 28.8958,47.5L 30.875,47.5L 30.875,44.7292 Z M 26.9166,44.7292L 24.5416,44.7292L 24.5416,47.5L 26.9166,47.5L 26.9166,44.7292 Z M 36.0208,44.7292L 33.25,44.7292L 33.25,47.5L 36.0208,47.5L 36.0208,44.7292 Z M 30.875,49.4792L 28.8958,49.4792L 28.8958,52.25L 30.875,52.25L 30.875,49.4792 Z M 26.9166,49.4792L 24.5416,49.4792L 24.5417,52.25L 26.9167,52.25L 26.9166,49.4792 Z M 36.0208,49.4792L 33.25,49.4792L 33.25,52.25L 36.0208,52.25L 36.0208,49.4792 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.cog.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.cog.svg
deleted file mode 100644
index 4ef1ef8c2..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.cog.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 27.5314,21.8628L 33.0126,19.4224L 34.7616,23.3507C 36.6693,22.9269 38.6044,22.8903 40.4668,23.2026L 42.0083,19.1868L 47.6098,21.337L 46.0683,25.3528C 47.6612,26.3669 49.0747,27.6889 50.2088,29.2803L 54.1371,27.5313L 56.5776,33.0126L 52.6493,34.7616C 53.0731,36.6693 53.1097,38.6043 52.7974,40.4668L 56.8131,42.0083L 54.6629,47.6097L 50.6472,46.0683C 49.6331,47.6613 48.3111,49.0748 46.7197,50.2089L 48.4686,54.1372L 42.9874,56.5776L 41.2384,52.6493C 39.3307,53.0731 37.3957,53.1097 35.5333,52.7974L 33.9918,56.8131L 28.3903,54.6629L 29.9318,50.6472C 28.3388,49.6331 26.9252,48.3111 25.7911,46.7196L 21.8628,48.4686L 19.4224,42.9873L 23.3507,41.2383C 22.9269,39.3307 22.8903,37.3957 23.2026,35.5332L 19.1869,33.9918L 21.3371,28.3903L 25.3528,29.9318C 26.3669,28.3388 27.6889,26.9252 29.2804,25.7911L 27.5314,21.8628 Z M 34.3394,29.7781C 29.7985,31.7998 27.7564,37.1198 29.7781,41.6606C 31.7998,46.2015 37.1198,48.2436 41.6606,46.2219C 46.2015,44.2002 48.2436,38.8802 46.2219,34.3394C 44.2002,29.7985 38.8802,27.7564 34.3394,29.7781 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.cogs.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.cogs.svg
deleted file mode 100644
index e3fdaa4ce..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.cogs.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 32.6227,68.9728C 33.1208,70.2446 33.7077,71.4719 34.3757,72.6471C 35.567,72.7702 36.7761,72.8333 38,72.8333C 40.6447,72.8333 43.2205,72.5386 45.6965,71.9802C 42.2807,68.5449 40.1698,63.8107 40.1698,58.5835C 40.1698,48.0901 48.6764,39.5835 59.1698,39.5835C 64.2047,39.5835 68.7822,41.5419 72.182,44.7385C 72.6094,42.5584 72.8333,40.3053 72.8333,38C 72.8333,36.442 72.731,34.908 72.5328,33.4041C 70.4772,32.3109 68.2718,31.4621 65.9554,30.8963L 65.6219,22.7367C 63.5664,22.3692 61.4511,22.1741 59.2916,22.1671L 57.491,30.1322C 54.2845,30.3184 51.2204,31.0348 48.3848,32.1949L 43.318,25.7887C 41.3995,26.7177 39.5749,27.8102 37.8622,29.0479L 41.0883,36.5527C 38.6742,38.5364 36.5919,40.9091 34.9373,43.575L 27.0703,41.3697C 26.073,43.2256 25.2319,45.178 24.5646,47.2093L 31.5867,51.385C 30.9883,53.6844 30.6698,56.0968 30.6698,58.5835L 30.746,60.6839L 23.0854,63.5239C 23.3743,65.6539 23.8474,67.7255 24.4881,69.7219L 32.6227,68.9728 Z M 27.0669,37.1755L 34.9338,39.3807C 35.9312,37.5248 36.7723,35.5724 37.4395,33.5412L 30.4175,29.3654C 31.0159,27.066 31.3344,24.6537 31.3344,22.1669L 31.2581,20.0665L 38.9187,17.2265C 38.6299,15.0965 38.1568,13.0249 37.5161,11.0285L 29.3815,11.7776C 28.4787,9.47258 27.2844,7.31377 25.8439,5.34655C 22.7943,6.48232 19.9467,8.03307 17.3698,9.93015C 20.1557,13.2359 21.8344,17.5054 21.8344,22.1669C 21.8344,32.5019 13.5826,40.9096 3.30816,41.1611C 3.60321,44.4411 4.35293,47.59 5.49381,50.5444C 8.34489,50.2806 11.0742,49.5968 13.6194,48.5555L 18.6861,54.9617C 20.6046,54.0327 22.4293,52.9403 24.142,51.7025L 20.9158,44.1977C 23.3299,42.2141 25.4123,39.8414 27.0669,37.1755 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.fullscreen.box.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.fullscreen.box.svg
deleted file mode 100644
index 13e6840e5..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.fullscreen.box.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 19,57L 19,19L 57,19L 57,57L 19,57 Z M 24,29L 47,29L 47,52L 52,52L 52,24L 24,24L 24,29 Z M 24,34L 24,52L 42,52L 42,34L 24,34 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.home.variant.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.home.variant.svg
deleted file mode 100644
index ea951fd19..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.home.variant.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76.0106" height="76.0106" viewBox="0 0 76.01 76.01" enable-background="new 0 0 76.01 76.01" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 24.0033,56.0078L 24.0033,38.0053L 22.0031,40.0056L 19.0027,35.0049L 38.0053,20.0028L 45.0063,25.5299L 45.0063,21.753L 49.0068,21.0029L 49.0068,28.6882L 57.008,35.0049L 54.0075,40.0056L 52.0073,38.0053L 52.0073,56.0078L 24.0033,56.0078 Z M 38.0053,26.9204L 27.0038,36.005L 27.0038,53.0074L 38.0045,53.0075L 38.0045,41.0061L 46.0058,41.0061L 46.0059,53.0075L 49.0068,53.0074L 49.0068,36.005L 38.0053,26.9204 Z M 30.004,41.0057L 35.0049,41.0057L 35.0049,47.0066L 30.004,47.0066L 30.004,41.0057 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.information.circle.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.information.circle.svg
deleted file mode 100644
index 031bd37f5..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.information.circle.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 38,19C 48.4934,19 57,27.5066 57,38C 57,48.4934 48.4934,57 38,57C 27.5066,57 19,48.4934 19,38C 19,27.5066 27.5066,19 38,19 Z M 33.25,33.25L 33.25,36.4167L 36.4166,36.4167L 36.4166,47.5L 33.25,47.5L 33.25,50.6667L 44.3333,50.6667L 44.3333,47.5L 41.1666,47.5L 41.1666,36.4167L 41.1666,33.25L 33.25,33.25 Z M 38.7917,25.3333C 37.48,25.3333 36.4167,26.3967 36.4167,27.7083C 36.4167,29.02 37.48,30.0833 38.7917,30.0833C 40.1033,30.0833 41.1667,29.02 41.1667,27.7083C 41.1667,26.3967 40.1033,25.3333 38.7917,25.3333 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.layer.delete.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.layer.delete.svg
deleted file mode 100644
index ddbeb21ca..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.layer.delete.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76.0106" height="76.0106" viewBox="0 0 76.01 76.01" enable-background="new 0 0 76.01 76.01" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 18.5088,44.0374L 21.8676,40.6786L 27.4655,46.2765L 33.0634,40.6786L 36.4222,44.0374L 30.8243,49.6353L 36.4222,55.2332L 33.0634,58.592L 27.4655,52.994L 21.8676,58.592L 18.5088,55.2332L 24.1068,49.6353L 18.5088,44.0374 Z M 57.0079,38.0053L 38.0053,47.5066L 36.7482,46.8781L 39.5889,44.0374L 35.2559,39.7977L 38.0053,41.1724L 50.6737,34.8382L 57.0079,38.0053 Z M 19.0026,38.0053L 25.3369,34.8382L 32.3326,38.3361L 29.8968,40.7719L 28.1098,42.5589L 25.7193,41.3636L 21.8676,37.6052L 20.6459,38.8269L 19.0026,38.0053 Z M 38.0053,19.0027L 57.0079,28.504L 38.0053,38.0053L 19.0026,28.504L 38.0053,19.0027 Z M 57.0079,47.5066L 38.0053,57.008L 37.8778,56.9442L 39.5889,55.2332L 33.9909,49.6353L 34.6367,48.9895L 38.0053,50.6738L 50.6737,44.3395L 57.0079,47.5066 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.layer.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.layer.svg
deleted file mode 100644
index 9eb28235c..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.layer.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76.0106" height="76.0106" viewBox="0 0 76.01 76.01" enable-background="new 0 0 76.01 76.01" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 57.0079,38.0053L 38.0053,47.5066L 19.0027,38.0053L 25.3369,34.8382L 38.0053,41.1724L 50.6737,34.8382L 57.0079,38.0053 Z M 38.0053,19.0027L 57.0079,28.504L 38.0053,38.0053L 19.0026,28.504L 38.0053,19.0027 Z M 57.0079,47.5066L 38.0053,57.008L 19.0026,47.5066L 25.3369,44.3395L 38.0053,50.6737L 50.6737,44.3395L 57.0079,47.5066 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.location.checkin.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.location.checkin.svg
deleted file mode 100644
index 3b21754c6..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.location.checkin.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-linejoin="round" d="M 38,19C 42.9706,19 47,23.0294 47,28C 47,30.5642 45.9276,32.878 38,49C 30.0724,32.878 29,30.5642 29,28C 29,23.0294 33.0294,19 38,19 Z M 38,24C 35.7909,24 34,25.7909 34,28C 34,30.2092 35.7909,32 38,32C 40.2091,32 42,30.2092 42,28C 42,25.7909 40.2091,24 38,24 Z M 19,57L 24,42L 31.5,42L 33.5,46L 27.6641,46L 25.3324,53L 50.6676,53L 48.3359,46L 42.5,46L 44.5,42L 52,42L 57,57L 19,57 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.location.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.location.svg
deleted file mode 100644
index fff6bf3e1..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.location.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 26.9167,13.8542L 50.6666,13.8542L 50.6667,39.5833L 26.9167,63.3333L 26.9167,13.8542 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.map.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.map.svg
deleted file mode 100644
index 241f71e59..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.map.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 27.7083,23.75L 38.7917,26.9167L 48.2917,20.5833L 62,24L 62,51L 48.2917,47.5L 38.7917,53.8333L 27.7083,50.6667L 16,55.5L 16,28.5L 27.7083,23.75 Z M 27,46.25L 27,29L 20,31.75L 20,49L 27,46.25 Z M 49,25.5L 49,42.75L 58,45.25L 58,28L 49,25.5 Z M 39,31.5L 39,49L 48,43L 48,25.5L 39,31.5 Z M 28,28.75L 28,46L 38,48.5L 38,31.75L 28,28.75 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.power.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.power.svg
deleted file mode 100644
index d3f865c0d..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.power.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 36.4167,36.4167L 36.4167,17.4167L 41.1667,17.4167L 41.1667,36.4167L 36.4167,36.4167 Z M 57,39.5833C 57,50.0767 48.4934,58.5833 38,58.5833C 27.5066,58.5833 19,50.0767 19,39.5833C 19,30.7301 25.0552,23.2911 33.25,21.1819L 33.25,27.8374C 28.6079,29.7165 25.3333,34.2675 25.3333,39.5833C 25.3333,46.5789 31.0044,52.25 38,52.25C 44.9956,52.25 50.6667,46.5789 50.6667,39.5833C 50.6667,34.8949 48.1194,30.8014 44.3333,28.6113L 44.3333,21.6645C 51.7129,24.2728 57,31.3106 57,39.5833 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.rocket.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.rocket.svg
deleted file mode 100644
index a8c5c273a..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.rocket.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 38,19C 39.4823,20.6344 43,26.1259 43,41L 47,46L 47,55L 43,50L 33,50L 29,55L 29,46L 33,41C 33,26.1259 36.0177,20.6344 38,19 Z M 38,57.5L 35,51L 41,51L 38,57.5 Z M 38,27L 36.1552,27.4612L 35.6203,30.5949L 38,30L 40.2918,30.573L 39.6953,27.4238L 38,27 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.timer.rewind.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.timer.rewind.svg
deleted file mode 100644
index a02cff6b7..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.timer.rewind.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 53.8333,41.1667C 53.8333,49.9112 46.7445,57 38,57C 29.2555,57 22.1667,49.9112 22.1667,41.1667C 22.1667,32.9565 28.4156,26.2059 36.4167,25.4115L 36.4167,23.75L 31.6667,23.75L 31.6667,19L 44.3333,19L 44.3333,23.75L 39.5833,23.75L 39.5833,25.4115C 42.7678,25.7277 45.6747,26.9874 48.0205,28.907L 49.1629,27.7646L 46.9237,25.5254L 50.2825,22.1667L 57,28.8842L 53.6412,32.2429L 51.4021,30.0038L 50.2597,31.1462C 52.4932,33.8756 53.8333,37.3647 53.8333,41.1667 Z M 26.2296,39.5834L 30.0833,39.5834L 30.0833,42.75L 26.2296,42.75C 26.9347,48.0419 31.1248,52.232 36.4166,52.9371L 36.4166,49.0833L 39.5833,49.0833L 39.5833,52.9371C 44.8752,52.232 49.0653,48.0419 49.7703,42.75L 45.9166,42.75L 45.9166,39.5834L 49.7703,39.5834C 49.0652,34.2915 44.8751,30.1014 39.5833,29.3964L 39.5833,33.25L 36.4166,33.25L 36.4166,29.3964C 31.1248,30.1014 26.9347,34.2915 26.2296,39.5834 Z M 38,38C 39.7488,38 41.1666,39.4178 41.1666,41.1667C 41.1666,42.9156 39.7488,44.3334 38,44.3334L 31.6666,49.0834L 34.8333,41.1667C 34.8333,39.4178 36.2511,38 38,38 Z M 19.7917,33.25L 19.7917,26.938C 17.2963,30.5244 15.8333,34.883 15.8333,39.5833C 15.8333,51.8257 25.7577,61.75 38,61.75L 42.3542,61.75C 54.3778,61.75 64.1249,51.8257 64.125,39.5835C 64.125,54.0119 52.4284,65.7083 38,65.7083C 23.5716,65.7083 11.875,54.0118 11.875,39.5833C 11.875,33.9832 13.6371,28.7946 16.637,24.5417L 11.0833,24.5417L 15.0417,20.5834L 23.75,20.5833L 23.75,29.2917L 19.7917,33.25 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/appbar.transit.car.svg b/navit/gui/qt5_qml/skins/modern/icons/appbar.transit.car.svg
deleted file mode 100644
index 8ea1a7c5d..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/appbar.transit.car.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="76" height="76" viewBox="0 0 76.00 76.00" enable-background="new 0 0 76.00 76.00" xml:space="preserve">
- <path fill="#ffffff" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 17.4167,50.6667C 16.5422,50.6667 15.8333,49.9578 15.8333,49.0833L 15.8333,39.5834C 15.8333,37.0877 17.2768,34.9292 19.3745,33.8972L 25.3333,19L 26.9167,19L 30.0833,19L 45.9167,19L 49.0833,19L 50.6667,19L 56.6255,33.8972C 58.7231,34.9292 60.1666,37.0877 60.1666,39.5834L 60.1667,49.0833C 60.1667,49.9578 59.4578,50.6667 58.5833,50.6667L 57,50.6667L 57,53.8333C 57,55.5822 55.5822,57 53.8333,57C 52.0844,57 50.6667,55.5822 50.6667,53.8333L 50.6667,50.6667L 25.3333,50.6667L 25.3333,53.8333C 25.3333,55.5822 23.9156,57 22.1667,57C 20.4178,57 19,55.5822 19,53.8333L 19,50.6667L 17.4167,50.6667 Z M 24.3833,33.25L 51.6166,33.25L 47.8166,23.75L 28.1833,23.75L 24.3833,33.25 Z M 24.1458,36.0209C 22.3969,36.0209 20.5833,37.8344 20.5833,39.5833C 20.5833,41.3322 22.3969,43.1458 24.1458,43.1458C 25.8947,43.1458 27.7083,41.3323 27.7083,39.5834C 27.7083,37.8345 25.8947,36.0209 24.1458,36.0209 Z M 51.8542,36.0208C 50.1053,36.0208 48.2917,37.8344 48.2917,39.5833C 48.2917,41.3322 50.1053,43.1458 51.8542,43.1458C 53.6031,43.1458 55.4167,41.3322 55.4167,39.5833C 55.4167,37.8344 53.6031,36.0208 51.8542,36.0208 Z "/>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/icons/bigcity.png b/navit/gui/qt5_qml/skins/modern/icons/bigcity.png
deleted file mode 100644
index cdc265d02..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/bigcity.png
+++ /dev/null
Binary files differ
diff --git a/navit/gui/qt5_qml/skins/modern/icons/smallcity.png b/navit/gui/qt5_qml/skins/modern/icons/smallcity.png
deleted file mode 100644
index 4b8d354ee..000000000
--- a/navit/gui/qt5_qml/skins/modern/icons/smallcity.png
+++ /dev/null
Binary files differ
diff --git a/navit/gui/qt5_qml/skins/modern/main.qml b/navit/gui/qt5_qml/skins/modern/main.qml
deleted file mode 100644
index 3c35a4dd0..000000000
--- a/navit/gui/qt5_qml/skins/modern/main.qml
+++ /dev/null
@@ -1,80 +0,0 @@
-import com.navit.graphics_qt5 1.0
-import QtQuick 2.2
-
-Rectangle {
- width: 800
- height: 480
-
- Connections {
- target: backend
- onHideMenu: {
- hideMainMenu()
- }
- onDisplayMenu: {
- mainMenu.submenu = source
- mainMenu.state = 'visible'
- console.log("showing menu with submenu " + mainMenu.submenu)
- mainMenu.source = '' // Needed when switching submenus from the code to refresh the menu
- mainMenu.source = "menu.qml"
- }
- }
-
- function hideMainMenu(){
- mainMenu.source = ''
- mainMenu.state = 'default'
- }
-
- color: "black"
- id: container
-
- QNavitQuick {
- id: navit1
- width: parent.width
- height: parent.height
- // focus: true
- opacity: 0;
- Component.onCompleted: {
- console.log(width + "x" + height)
- navit1.setGraphicContext(graphics_qt5_context);
- navit1.opacity = 1;
- }
- Behavior on opacity {
- NumberAnimation {
- id: opacityAnimation;duration: 1000;alwaysRunToEnd: true
- }
- }
- }
-
- Loader {
- id: mainMenu
- width: parent.width
- height: parent.height
- x: parent.width
- opacity: 0
- property string submenu
-
- states: [
- State {
- name: "visible"
- PropertyChanges {
- target: mainMenu
- x: 0
- opacity: 1
- }
- }
- ]
- transitions: [
- Transition {
- NumberAnimation {
- properties: "x,y,opacity";duration: 200
- }
- onRunningChanged: {
- if ((mainMenu.opacity == 0) && (!running)){
- backend.resize(navit1.width, navit1.height);
- console.log("transition done, hiding menu window size " + navit1.width + " x " + navit1.height)
- }
- }
- }
- ]
- }
-}
diff --git a/navit/gui/qt5_qml/skins/modern/maps.qml b/navit/gui/qt5_qml/skins/modern/maps.qml
deleted file mode 100644
index 2eab6798d..000000000
--- a/navit/gui/qt5_qml/skins/modern/maps.qml
+++ /dev/null
@@ -1,45 +0,0 @@
-import QtQuick 2.0
-
-ListView {
- id: list
- model: backend.maps
- delegate: Item {
- height: 64
- width: parent.width;
- Rectangle {
- color: "#1e1b18"
- height: parent.height;
- width: parent.width;
- border.width: 1
-
- Image {
- id: image1
- height: parent.height - 4;
- source : active ? "icons/appbar.layer.svg" : "icons/appbar.layer.delete.svg"
- opacity: active ? 1 : 0.1
- }
-
- Text {
- text: name
- color: "#ffffff"
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: image1.right
- anchors.leftMargin: 8
- }
-
- MouseArea {
- id: mouse_area1
- z: 1
- hoverEnabled: false
- anchors.fill: parent
-
- onClicked:{
- list.currentIndex = index
- console.log("test " + index);
- }
- }
- }
- }
-
- Component.onCompleted: backend.get_maps()
-}
diff --git a/navit/gui/qt5_qml/skins/modern/menu.qml b/navit/gui/qt5_qml/skins/modern/menu.qml
deleted file mode 100644
index ee51f68a2..000000000
--- a/navit/gui/qt5_qml/skins/modern/menu.qml
+++ /dev/null
@@ -1,61 +0,0 @@
-import QtQuick.Layouts 1.0
-import QtQuick 2.2
-
-Item {
- Rectangle {
- id: menuArea
- color: "#1e1b18"
- width: parent.width
- y: topBar.height
- height: parent.height - ( topBar.height + bottomBar.height )
-
- Loader {
- id: menucontent
- width: parent.width
- height: parent.height
- Component.onCompleted: {
- console.log("submenu : " + mainMenu.submenu)
- menucontent.source = mainMenu.submenu
- }
- }
- }
-
- Rectangle {
- id: bottomBar
- width: parent.width
- height: 64
- color: "#1e1b18"
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 0
-
- MainButton {
- id: mainButton3
- x: 380
- y: 220
- width: 260
- height: 56
- radius: 1
- text: "Map"
- anchors.right: parent.right
- anchors.rightMargin: 4
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 4
- Layout.fillHeight: true
- Layout.fillWidth: true
- icon: "icons/appbar.map.svg"
- onClicked: {
- container.hideMainMenu()
- }
-
- }
- }
-
- Rectangle {
- id: topBar
- width: parent.width
- height: 80
- color: "#1e1b18"
- anchors.top: parent.top
- }
-
-}
diff --git a/navit/gui/qt5_qml/skins/modern/navit.svg b/navit/gui/qt5_qml/skins/modern/navit.svg
deleted file mode 100644
index 591d9ee57..000000000
--- a/navit/gui/qt5_qml/skins/modern/navit.svg
+++ /dev/null
@@ -1,393 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.48.4 r9939"
- version="1.0"
- sodipodi:docname="navit.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/navit.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3376">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop3378" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop3380" />
- </linearGradient>
- <linearGradient
- id="linearGradient3365">
- <stop
- style="stop-color:#ffffff;stop-opacity:0.61904764;"
- offset="0"
- id="stop3367" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3369" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3328">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3330" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3332" />
- </linearGradient>
- <linearGradient
- id="linearGradient3320">
- <stop
- style="stop-color:#116cbf;stop-opacity:1;"
- offset="0"
- id="stop3322" />
- <stop
- id="stop3354"
- offset="0.08"
- style="stop-color:#116cbf;stop-opacity:1;" />
- <stop
- id="stop3352"
- offset="0.4893617"
- style="stop-color:#1a6cb6;stop-opacity:1;" />
- <stop
- style="stop-color:#329eff;stop-opacity:1;"
- offset="1"
- id="stop3324" />
- </linearGradient>
- <linearGradient
- id="linearGradient3308">
- <stop
- style="stop-color:#062643;stop-opacity:1;"
- offset="0"
- id="stop3310" />
- <stop
- style="stop-color:#0d5799;stop-opacity:1;"
- offset="1"
- id="stop3312" />
- </linearGradient>
- <linearGradient
- id="linearGradient3235">
- <stop
- style="stop-color:#c17d11;stop-opacity:1;"
- offset="0"
- id="stop3237" />
- <stop
- style="stop-color:#e9cb14;stop-opacity:1;"
- offset="1"
- id="stop3239" />
- </linearGradient>
- <linearGradient
- id="linearGradient3227">
- <stop
- style="stop-color:#76650c;stop-opacity:1;"
- offset="0"
- id="stop3229" />
- <stop
- style="stop-color:#76650c;stop-opacity:0;"
- offset="1"
- id="stop3231" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="15.556349 : 133.02972 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3235"
- id="linearGradient3241"
- x1="64"
- y1="115.11359"
- x2="64"
- y2="17.40102"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.15819674,0,0,0.15819674,1.9928719,0.69315656)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3308"
- id="linearGradient3314"
- x1="-7.7781754"
- y1="4.2563133"
- x2="43.133514"
- y2="4.2563133"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3320"
- id="linearGradient3326"
- x1="7.6363606"
- y1="87.731171"
- x2="58.391151"
- y2="38.450466"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.15669503,0.02174581,-0.02174581,0.15669503,4.357122,0.76802046)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3227"
- id="linearGradient3340"
- gradientUnits="userSpaceOnUse"
- x1="63"
- y1="106.75"
- x2="92"
- y2="29.25" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3328"
- id="linearGradient3342"
- gradientUnits="userSpaceOnUse"
- x1="71"
- y1="69.5"
- x2="87.25"
- y2="33.5" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3365"
- id="linearGradient3371"
- x1="-1.5"
- y1="86.5"
- x2="73.5"
- y2="40"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.15819674,0,0,0.15819674,1.9928719,0.69315656)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3376"
- id="linearGradient3382"
- x1="62.147858"
- y1="67.453751"
- x2="11.016594"
- y2="24.242672"
- gradientUnits="userSpaceOnUse" />
- <filter
- inkscape:collect="always"
- id="filter3424">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="0.90523025"
- id="feGaussianBlur3426" />
- </filter>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313708"
- inkscape:cx="16.894586"
- inkscape:cy="27.303943"
- inkscape:document-units="px"
- inkscape:current-layer="layer2"
- showgrid="false"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- inkscape:window-x="0"
- inkscape:window-y="24"
- showborder="true"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="display:inline">
- <rect
- style="fill:url(#linearGradient3241);fill-opacity:1;stroke:#43350f;stroke-width:0.79098374;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="rect2403"
- width="18.792814"
- height="15.381022"
- x="2.7210562"
- y="3.1272359"
- rx="1.5819675"
- ry="1.5819675" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="lignes"
- style="display:inline">
- <g
- id="g3336"
- transform="matrix(0.15819674,0,0,0.15819674,5.1568068,0.69315656)">
- <path
- sodipodi:nodetypes="cczzczc"
- id="path3223"
- d="m 92,27 8,-4 c 0,0 -32.803776,29.787015 -21.5,41.25 11.303776,11.462985 5.61873,46.35859 -6,46.25 L 19,110 C 39.916667,101.41667 73.874441,83.136394 61,66.25 48.125559,49.363606 92,27 92,27 z"
- style="fill:url(#linearGradient3340);fill-opacity:1;stroke:none"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="czc"
- id="path3244"
- d="M 49.5,110 C 60.666667,104.16667 83.256846,86.358298 72,70.5 60.743153,54.641702 77.5,38.5 92.5,29"
- style="fill:none;stroke:url(#linearGradient3342);stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:9, 9;stroke-dashoffset:0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer4"
- inkscape:label="bulle"
- style="display:none">
- <path
- sodipodi:type="arc"
- style="fill:url(#linearGradient3314);fill-opacity:1;stroke:#1f3157;stroke-width:5.30526352;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- id="path3305"
- sodipodi:cx="17.67767"
- sodipodi:cy="4.2563133"
- sodipodi:rx="25.455845"
- sodipodi:ry="25.455845"
- d="m 43.133514,4.2563133 a 25.455845,25.455845 0 1 1 -50.9116894,0 25.455845,25.455845 0 1 1 50.9116894,0 z"
- transform="matrix(1.3194444,0,0,1.3194444,18.394598,29.399489)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="rose des vents"
- style="display:none">
- <g
- id="g3256"
- transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,36.903806,-19.093669)"
- style="opacity:0.5">
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 -5.673657,-27.511429 -27.511429,-5.673655 27.511429,-5.673657 5.673655,-27.5114293 5.673657,27.5114293 27.5114293,5.673655 -27.5114293,5.673657 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="2.3561945"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="8.0237608"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3258"
- style="fill:#167bd9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 6.826343,-33.011429 -40.011429,-0.173655 33.011429,6.826343 0.173655,-40.0114293 -6.826343,33.0114293 40.0114293,0.173655 -33.0114293,-6.826343 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="0.025433549"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="6.8285527"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3260"
- style="fill:#c3dff9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- </g>
- <g
- id="g3252">
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 -5.673657,-27.511429 -27.511429,-5.673655 27.511429,-5.673657 5.673655,-27.5114293 5.673657,27.5114293 27.5114293,5.673655 -27.5114293,5.673657 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="2.3561945"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="8.0237608"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3248"
- style="fill:#167bd9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 6.826343,-33.011429 -40.011429,-0.173655 33.011429,6.826343 0.173655,-40.0114293 -6.826343,33.0114293 40.0114293,0.173655 -33.0114293,-6.826343 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="0.025433549"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="6.8285527"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3250"
- style="fill:#c3dff9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer6"
- inkscape:label="ondes"
- style="display:inline">
- <path
- sodipodi:type="spiral"
- style="fill:none;stroke:url(#linearGradient3382);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3424)"
- id="path3374"
- sodipodi:cx="14.142136"
- sodipodi:cy="19.812662"
- sodipodi:expansion="1"
- sodipodi:revolution="7"
- sodipodi:radius="54.341515"
- sodipodi:argument="-17.841497"
- sodipodi:t0="0"
- d="m 14.142136,19.812662 c 0.622964,0.987625 -1.02395,1.327003 -1.641498,1.035408 -1.673515,-0.790205 -1.44576,-3.111369 -0.429317,-4.318403 1.818177,-2.1591 5.16668,-1.702115 6.995307,0.176773 2.683583,2.757343 1.972982,7.252372 -0.782863,9.672211 C 14.610657,29.603916 8.9345884,28.6291 5.934649,24.989699 2.1595315,20.409885 3.4032379,13.538342 7.9296913,9.9636782 13.411833,5.6342815 21.486273,7.1492634 25.632617,12.56481 30.51894,18.946845 28.731319,28.228517 22.425395,32.944641 15.144955,38.389593 4.6532955,36.328487 -0.63134024,29.131329 -6.6360792,20.95346 -4.300928,9.2499464 3.7880618,3.3976889 12.862686,-3.1676594 25.779376,-0.55807441 32.198606,8.4231809 39.325168,18.394077 36.440869,32.524914 26.567024,39.51063 15.700216,47.198863 0.35449515,44.039641 -7.1973295,33.272958 -15.447588,21.510513 -12.013284,4.9493376 -0.35356778,-3.1683003 12.304301,-11.980865 30.081381,-8.2713528 38.764595,4.2815513 48.13969,17.834674 44.154872,36.828022 30.708654,46.076619 16.260416,56.014427 -3.9494981,51.754222 -13.763319,37.414588 -24.263992,22.071347 -19.728335,0.64462208 -4.4951973,-9.7342896 11.742953,-20.797954 34.386694,-15.98679 45.330585,0.1399218 56.957348,17.272902 51.870631,41.133834 34.850283,52.642608 16.822539,64.832562 -8.2557318,59.470254 -20.329308,41.556217 -33.082529,22.633765 -27.444596,-3.6619713 -8.6368269,-16.300279 11.180283,-29.616836 38.693597,-23.70325 51.896574,-4.0017077 65.776525,16.710018 59.587261,45.441005 38.991913,59.208598 17.385609,73.651995 -12.563136,67.187032 -26.895297,45.697847 -41.902187,23.196997 -35.161504,-7.9695799 -12.778456,-22.866268 10.616911,-38.436689 43.001386,-31.420272 58.462563,-8.1433373 74.596552,16.146521 67.304385,49.748954 43.133542,65.774587"
- transform="matrix(-0.15819674,0,0,0.15819674,22.262049,1.7055356)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="flèche"
- style="display:inline">
- <path
- style="fill:url(#linearGradient3326);fill-opacity:1;stroke:#1f3157;stroke-width:0.47459021;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- d="M 5.6166617,6.6702162 C 8.5498903,6.3591404 11.366732,6.8627725 14.089084,8.0278339 L 12.323485,12.25995 11.465549,10.2747 C 9.1936105,11.38659 7.6712925,13.621104 6.8096897,16.845097 L 0.57820215,12.334567 C 2.318135,10.026025 5.9650066,8.1110997 8.889601,7.8565979 L 5.6166617,6.6702162 z"
- id="rect3317"
- sodipodi:nodetypes="cccccccc"
- inkscape:connector-curvature="0" />
- <path
- style="fill:url(#linearGradient3371);fill-opacity:1;stroke:none"
- d="M 8.2416433,7.021026 C 9.8257327,6.8500961 11.315051,7.2477939 12.75025,7.9702064 8.920071,9.4835882 6.1923078,11.598289 4.6822166,14.377175 L 1.7555768,12.162421 C 3.6037773,9.8056523 6.570797,8.7541746 9.6654142,7.8515586 L 8.2416433,7.021026 z"
- id="rect3362"
- sodipodi:nodetypes="cccccc"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/modern/poi.qml b/navit/gui/qt5_qml/skins/modern/poi.qml
deleted file mode 100644
index 36168ecfe..000000000
--- a/navit/gui/qt5_qml/skins/modern/poi.qml
+++ /dev/null
@@ -1,104 +0,0 @@
-import QtQuick 2.0
-import QtQuick.Layouts 1.0
-import com.navit.graphics_qt5 1.0
-
-
-Item {
- id: poiItem
- visible: true
- property var small_font_size : 16
-
-
- Text {
- x: 8
- y: 8
- color: "#ffffff"
- text: backend.activePoi.name
- font.pixelSize: 32
- }
-
- Text {
- x: 80
- y: 64
- color: "#ffffff"
- text: qsTr("Type")
- font.pixelSize: small_font_size
- }
-
- Text {
- x: 80
- y: 96
- color: "#ffffff"
- text: qsTr("Distance")
- font.pixelSize: small_font_size
- }
-
- Text {
- x: 160
- y: 64
- color: "#ffffff"
- text: backend.activePoi.type
- font.pixelSize: small_font_size
- }
-
- Text {
- x: 160
- y: 96
- color: "#ffffff"
- text: backend.activePoi.distance
- font.pixelSize: small_font_size
- }
-
- Rectangle {
- id: rectangle
- x: 8
- y: 64
- height: 64
- width: height
- color: "#ffffff"
- radius: 8
- border.width: 1
- Image {
- height: parent.width
- width: parent.height
- source : backend.get_icon_path() + backend.activePoi.icon
- sourceSize.width: parent.width
- sourceSize.height: parent.height
- }
- }
-
- ColumnLayout {
- id: columnLayout
- width: parent.width/2
- height: parent.height
- anchors.right: parent.right
- anchors.rightMargin: 0
- QNavitQuick {
- id: navit1
- width: 300
- height: 240
- Component.onCompleted: {
- navit1.setGraphicContext(graphics_qt5_context)
- }
- Component.onDestruction: {
- console.log("Destroying a navit widget. Blocking draw operations")
- backend.block_draw()
- }
- }
- }
-
- MainButton {
- id: mainButton3
- x: 8
- y: parent.height-78
- width: parent.width/2 - 16
- height: 64
- radius: 1
- text: "Set as destination"
- icon: "icons/appbar.location.checkin.svg"
- onClicked: {
- backend.setActivePoiAsDestination()
- }
- }
-
-}
diff --git a/navit/gui/qt5_qml/skins/modern/pois.qml b/navit/gui/qt5_qml/skins/modern/pois.qml
deleted file mode 100644
index d70ea8b10..000000000
--- a/navit/gui/qt5_qml/skins/modern/pois.qml
+++ /dev/null
@@ -1,128 +0,0 @@
-import QtQuick 2.0
-
-Item {
- id: poiList
- ListView {
- anchors.fill: parent
- id: listView
- model: backend.pois
- delegate: Item {
- height: 64
- width: parent.width;
- Rectangle {
- color: "#1e1b18"
- height: parent.height;
- width: parent.width;
- border.width: 1
-
- Image {
- id: image1
- height: parent.height - 4;
- width: height
-// smooth: true
- source : backend.get_icon_path() + icon
- sourceSize.width: parent.width
- sourceSize.height: parent.height
- }
-
- Text {
- width: 128
- id: distanceText
- text: distance
- color: "#ffffff"
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: image1.right
- anchors.leftMargin: 8
- }
-
- Text {
- text: name
- color: "#ffffff"
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: distanceText.right
- anchors.leftMargin: 8
- }
-
- MouseArea {
- id: mouse_area1
- z: 1
- hoverEnabled: false
- anchors.fill: parent
-
- onClicked:{
- listView.currentIndex = index
- backend.setActivePoi(index);
- menucontent.source = "poi.qml"
- }
- }
- }
-
- }
-
- Component.onCompleted: backend.get_pois()
- }
-
- Rectangle {
- height: 64
- width: height
-
- x: parent.width - width
- y: parent.height - height * 2
-
- color: "#35322f"
-
- Image {
- anchors.centerIn: parent
- source: "icons/appbar.chevron.up.svg"
- }
-
- MouseArea {
- anchors.fill: parent
- id: listUp
-
- SmoothedAnimation {
- target: listView
- property: "contentY"
- running: listUp.pressed
- velocity: 1000
- to: 0
- }
- onReleased: {
- if (!listView.atYBeginning)
- listView.flick(0, 1000)
- }
- }
- }
-
- Rectangle {
- height: 64
- width: height
-
- x: parent.width - width
- y: parent.height - height
-
- color: "#35322f"
-
- Image {
- anchors.centerIn: parent
- source: "icons/appbar.chevron.down.svg"
- }
-
- MouseArea {
- anchors.fill: parent
- id: listDown
-
- SmoothedAnimation {
- target: listView
- property: "contentY"
- running: listDown.pressed
- to: listView.contentHeight - listView.height
- velocity: 1000
- }
- onReleased: {
- if (!listView.atYEnd)
- listView.flick(0, -1000)
- }
- }
- }
-}
diff --git a/navit/gui/qt5_qml/skins/modern/search.qml b/navit/gui/qt5_qml/skins/modern/search.qml
deleted file mode 100644
index cc420b87e..000000000
--- a/navit/gui/qt5_qml/skins/modern/search.qml
+++ /dev/null
@@ -1,132 +0,0 @@
-import QtQuick 2.0
-
-Item {
- Rectangle {
- x : 16
- y : 64
- width: parent.width-32
- height: parent.height-64
- id: searchResults
- color: "#35322f"
-
- ListView {
- anchors.fill: parent
- id: listView
- model: backend.searchresults
- delegate: Loader { source: "search_result_item.qml"}
-
- Component.onCompleted: {
- backend.updateSearch("")
- }
-
- }
-
- Rectangle {
- height: 64
- width: height
-
- x: parent.width - width
- y: parent.height - height * 2
-
- color: "#35322f"
-
- Image {
- anchors.centerIn: parent
- source: "icons/appbar.chevron.up.svg"
- }
-
- MouseArea {
- anchors.fill: parent
- id: listUp
-
- SmoothedAnimation {
- target: listView
- property: "contentY"
- running: listUp.pressed
- velocity: 1000
- to: 0
- }
- onReleased: {
- if (!listView.atYBeginning)
- listView.flick(0, 1000)
- }
- }
- }
-
- Rectangle {
- height: 64
- width: height
-
- x: parent.width - width
- y: parent.height - height
-
- color: "#35322f"
-
- Image {
- anchors.centerIn: parent
- source: "icons/appbar.chevron.down.svg"
- }
-
- MouseArea {
- anchors.fill: parent
- id: listDown
-
- SmoothedAnimation {
- target: listView
- property: "contentY"
- running: listDown.pressed
- to: listView.contentHeight - listView.height
- velocity: 1000
- }
- onReleased: {
- if (!listView.atYEnd)
- listView.flick(0, -1000)
- }
- }
- }
- }
-
- Rectangle {
- id: rectangle
- x: 16
- y: 16
- width: parent.width-32
- height: 50
- color: "#35322f"
- radius: 3
- border.width: 1
-
- Image {
- id: image
- x: 16
- y: 2
- width: 64
- height: 48
- fillMode: Image.PreserveAspectFit
- source: backend.get_country_icon("")
- }
-
-
- TextEdit {
- id: textEdit
- y: 8
- height: 20
- color: "#ffffff"
- text: qsTr("")
- focus: true
- anchors.rightMargin: 8
- anchors.verticalCenterOffset: 0
- anchors.leftMargin: 8
- horizontalAlignment: Text.AlignLeft
- anchors.verticalCenter: parent.verticalCenter
- anchors.top: parent.top
- anchors.right: parent.right
- anchors.left: image.right
- font.pixelSize: 24
- onTextChanged: {
- backend.updateSearch(textEdit.text)
- }
- }
- }
-
-}
diff --git a/navit/gui/qt5_qml/skins/modern/search_result_item.qml b/navit/gui/qt5_qml/skins/modern/search_result_item.qml
deleted file mode 100644
index 6ba4bb283..000000000
--- a/navit/gui/qt5_qml/skins/modern/search_result_item.qml
+++ /dev/null
@@ -1,43 +0,0 @@
-import QtQuick 2.0
-
-
-Item {
- height: 64
- width: searchResults.width;
- Rectangle {
- color: "#1e1b18"
- height: parent.height;
- width: parent.width;
-
- Image {
- id: image1
- height: 36;
- width: 64
- source : icon
- fillMode: Image.PreserveAspectFit
- }
-
- Text {
- text: name
- color: "#ffffff"
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: image1.right
- anchors.leftMargin: 8
- }
-
- MouseArea {
- id: mouse_area1
- z: 1
- hoverEnabled: false
- anchors.fill: parent
-
- onClicked:{
- listView.currentIndex = index
- backend.searchValidateResult(index)
- // backend.setActivePoi(index);
- // menucontent.source = "poi.qml"
- }
- }
- }
-}
-
diff --git a/navit/gui/qt5_qml/skins/modern/settings.qml b/navit/gui/qt5_qml/skins/modern/settings.qml
deleted file mode 100644
index de7dc36f5..000000000
--- a/navit/gui/qt5_qml/skins/modern/settings.qml
+++ /dev/null
@@ -1,44 +0,0 @@
-import QtQuick 2.0
-import QtQuick.Layouts 1.0
-
-
-GridLayout {
- id: gridLayout
- height: 200
- columnSpacing: 4
- rowSpacing: 4
- rows: 3
- columns: 2
-
- MainButton {
- text: "Maps"
- icon: "icons/appbar.layer.svg"
- Layout.fillHeight: true
- Layout.fillWidth: true
- onClicked: {
- menucontent.source = "maps.qml"
- }
- }
- MainButton {
- text: "Vehicles"
- icon: "icons/appbar.transit.car.svg"
- Layout.fillHeight: true
- Layout.fillWidth: true
- onClicked: {
- menucontent.source = "vehicles.qml"
- }
- }
- MainButton {
- text: "Display"
- icon: "icons/appbar.fullscreen.box.svg"
- Layout.fillHeight: true
- Layout.fillWidth: true
- }
-
- MainButton {
- text: "Rules"
- icon: "icons/appbar.cogs.svg"
- Layout.fillHeight: true
- Layout.fillWidth: true
- }
-}
diff --git a/navit/gui/qt5_qml/skins/modern/vehicle.qml b/navit/gui/qt5_qml/skins/modern/vehicle.qml
deleted file mode 100644
index de425cec8..000000000
--- a/navit/gui/qt5_qml/skins/modern/vehicle.qml
+++ /dev/null
@@ -1,11 +0,0 @@
-import QtQuick 2.0
-
-Item {
- Text {
- x: 8
- y: 8
- color: "#ffffff"
- text: backend.currentVehicle.name
- font.pixelSize: 32
- }
-}
diff --git a/navit/gui/qt5_qml/skins/modern/vehicles.qml b/navit/gui/qt5_qml/skins/modern/vehicles.qml
deleted file mode 100644
index b96458b57..000000000
--- a/navit/gui/qt5_qml/skins/modern/vehicles.qml
+++ /dev/null
@@ -1,46 +0,0 @@
-import QtQuick 2.0
-
-ListView {
- id: list
- model: backend.vehicles
- delegate: Item {
- height: 64
- width: parent.width;
- Rectangle {
- color: "#1e1b18"
- height: parent.height;
- width: parent.width;
- border.width: 1
-
- Image {
- id: image1
- height: parent.height - 4;
- source : "icons/appbar.transit.car.svg"
- opacity: active ? 1 : 0.1
- }
-
- Text {
- text: name
- color: "#ffffff"
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: image1.right
- anchors.leftMargin: 8
- }
-
- MouseArea {
- id: mouse_area1
- z: 1
- hoverEnabled: false
- anchors.fill: parent
-
- onClicked:{
- list.currentIndex = index
- backend.setCurrentVehicle(index);
- menucontent.source = "vehicle.qml"
- }
- }
- }
- }
-
- Component.onCompleted: backend.get_vehicles()
-}
diff --git a/navit/gui/qt5_qml/skins/navit.svg b/navit/gui/qt5_qml/skins/navit.svg
deleted file mode 100644
index 591d9ee57..000000000
--- a/navit/gui/qt5_qml/skins/navit.svg
+++ /dev/null
@@ -1,393 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.48.4 r9939"
- version="1.0"
- sodipodi:docname="navit.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/navit.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3376">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop3378" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop3380" />
- </linearGradient>
- <linearGradient
- id="linearGradient3365">
- <stop
- style="stop-color:#ffffff;stop-opacity:0.61904764;"
- offset="0"
- id="stop3367" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3369" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3328">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3330" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3332" />
- </linearGradient>
- <linearGradient
- id="linearGradient3320">
- <stop
- style="stop-color:#116cbf;stop-opacity:1;"
- offset="0"
- id="stop3322" />
- <stop
- id="stop3354"
- offset="0.08"
- style="stop-color:#116cbf;stop-opacity:1;" />
- <stop
- id="stop3352"
- offset="0.4893617"
- style="stop-color:#1a6cb6;stop-opacity:1;" />
- <stop
- style="stop-color:#329eff;stop-opacity:1;"
- offset="1"
- id="stop3324" />
- </linearGradient>
- <linearGradient
- id="linearGradient3308">
- <stop
- style="stop-color:#062643;stop-opacity:1;"
- offset="0"
- id="stop3310" />
- <stop
- style="stop-color:#0d5799;stop-opacity:1;"
- offset="1"
- id="stop3312" />
- </linearGradient>
- <linearGradient
- id="linearGradient3235">
- <stop
- style="stop-color:#c17d11;stop-opacity:1;"
- offset="0"
- id="stop3237" />
- <stop
- style="stop-color:#e9cb14;stop-opacity:1;"
- offset="1"
- id="stop3239" />
- </linearGradient>
- <linearGradient
- id="linearGradient3227">
- <stop
- style="stop-color:#76650c;stop-opacity:1;"
- offset="0"
- id="stop3229" />
- <stop
- style="stop-color:#76650c;stop-opacity:0;"
- offset="1"
- id="stop3231" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="15.556349 : 133.02972 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3235"
- id="linearGradient3241"
- x1="64"
- y1="115.11359"
- x2="64"
- y2="17.40102"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.15819674,0,0,0.15819674,1.9928719,0.69315656)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3308"
- id="linearGradient3314"
- x1="-7.7781754"
- y1="4.2563133"
- x2="43.133514"
- y2="4.2563133"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3320"
- id="linearGradient3326"
- x1="7.6363606"
- y1="87.731171"
- x2="58.391151"
- y2="38.450466"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.15669503,0.02174581,-0.02174581,0.15669503,4.357122,0.76802046)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3227"
- id="linearGradient3340"
- gradientUnits="userSpaceOnUse"
- x1="63"
- y1="106.75"
- x2="92"
- y2="29.25" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3328"
- id="linearGradient3342"
- gradientUnits="userSpaceOnUse"
- x1="71"
- y1="69.5"
- x2="87.25"
- y2="33.5" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3365"
- id="linearGradient3371"
- x1="-1.5"
- y1="86.5"
- x2="73.5"
- y2="40"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.15819674,0,0,0.15819674,1.9928719,0.69315656)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3376"
- id="linearGradient3382"
- x1="62.147858"
- y1="67.453751"
- x2="11.016594"
- y2="24.242672"
- gradientUnits="userSpaceOnUse" />
- <filter
- inkscape:collect="always"
- id="filter3424">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="0.90523025"
- id="feGaussianBlur3426" />
- </filter>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313708"
- inkscape:cx="16.894586"
- inkscape:cy="27.303943"
- inkscape:document-units="px"
- inkscape:current-layer="layer2"
- showgrid="false"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- inkscape:window-x="0"
- inkscape:window-y="24"
- showborder="true"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="display:inline">
- <rect
- style="fill:url(#linearGradient3241);fill-opacity:1;stroke:#43350f;stroke-width:0.79098374;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="rect2403"
- width="18.792814"
- height="15.381022"
- x="2.7210562"
- y="3.1272359"
- rx="1.5819675"
- ry="1.5819675" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="lignes"
- style="display:inline">
- <g
- id="g3336"
- transform="matrix(0.15819674,0,0,0.15819674,5.1568068,0.69315656)">
- <path
- sodipodi:nodetypes="cczzczc"
- id="path3223"
- d="m 92,27 8,-4 c 0,0 -32.803776,29.787015 -21.5,41.25 11.303776,11.462985 5.61873,46.35859 -6,46.25 L 19,110 C 39.916667,101.41667 73.874441,83.136394 61,66.25 48.125559,49.363606 92,27 92,27 z"
- style="fill:url(#linearGradient3340);fill-opacity:1;stroke:none"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="czc"
- id="path3244"
- d="M 49.5,110 C 60.666667,104.16667 83.256846,86.358298 72,70.5 60.743153,54.641702 77.5,38.5 92.5,29"
- style="fill:none;stroke:url(#linearGradient3342);stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:9, 9;stroke-dashoffset:0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer4"
- inkscape:label="bulle"
- style="display:none">
- <path
- sodipodi:type="arc"
- style="fill:url(#linearGradient3314);fill-opacity:1;stroke:#1f3157;stroke-width:5.30526352;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- id="path3305"
- sodipodi:cx="17.67767"
- sodipodi:cy="4.2563133"
- sodipodi:rx="25.455845"
- sodipodi:ry="25.455845"
- d="m 43.133514,4.2563133 a 25.455845,25.455845 0 1 1 -50.9116894,0 25.455845,25.455845 0 1 1 50.9116894,0 z"
- transform="matrix(1.3194444,0,0,1.3194444,18.394598,29.399489)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="rose des vents"
- style="display:none">
- <g
- id="g3256"
- transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,36.903806,-19.093669)"
- style="opacity:0.5">
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 -5.673657,-27.511429 -27.511429,-5.673655 27.511429,-5.673657 5.673655,-27.5114293 5.673657,27.5114293 27.5114293,5.673655 -27.5114293,5.673657 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="2.3561945"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="8.0237608"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3258"
- style="fill:#167bd9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 6.826343,-33.011429 -40.011429,-0.173655 33.011429,6.826343 0.173655,-40.0114293 -6.826343,33.0114293 40.0114293,0.173655 -33.0114293,-6.826343 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="0.025433549"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="6.8285527"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3260"
- style="fill:#c3dff9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- </g>
- <g
- id="g3252">
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 -5.673657,-27.511429 -27.511429,-5.673655 27.511429,-5.673657 5.673655,-27.5114293 5.673657,27.5114293 27.5114293,5.673655 -27.5114293,5.673657 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="2.3561945"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="8.0237608"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3248"
- style="fill:#167bd9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 6.826343,-33.011429 -40.011429,-0.173655 33.011429,6.826343 0.173655,-40.0114293 -6.826343,33.0114293 40.0114293,0.173655 -33.0114293,-6.826343 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="0.025433549"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="6.8285527"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3250"
- style="fill:#c3dff9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer6"
- inkscape:label="ondes"
- style="display:inline">
- <path
- sodipodi:type="spiral"
- style="fill:none;stroke:url(#linearGradient3382);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3424)"
- id="path3374"
- sodipodi:cx="14.142136"
- sodipodi:cy="19.812662"
- sodipodi:expansion="1"
- sodipodi:revolution="7"
- sodipodi:radius="54.341515"
- sodipodi:argument="-17.841497"
- sodipodi:t0="0"
- d="m 14.142136,19.812662 c 0.622964,0.987625 -1.02395,1.327003 -1.641498,1.035408 -1.673515,-0.790205 -1.44576,-3.111369 -0.429317,-4.318403 1.818177,-2.1591 5.16668,-1.702115 6.995307,0.176773 2.683583,2.757343 1.972982,7.252372 -0.782863,9.672211 C 14.610657,29.603916 8.9345884,28.6291 5.934649,24.989699 2.1595315,20.409885 3.4032379,13.538342 7.9296913,9.9636782 13.411833,5.6342815 21.486273,7.1492634 25.632617,12.56481 30.51894,18.946845 28.731319,28.228517 22.425395,32.944641 15.144955,38.389593 4.6532955,36.328487 -0.63134024,29.131329 -6.6360792,20.95346 -4.300928,9.2499464 3.7880618,3.3976889 12.862686,-3.1676594 25.779376,-0.55807441 32.198606,8.4231809 39.325168,18.394077 36.440869,32.524914 26.567024,39.51063 15.700216,47.198863 0.35449515,44.039641 -7.1973295,33.272958 -15.447588,21.510513 -12.013284,4.9493376 -0.35356778,-3.1683003 12.304301,-11.980865 30.081381,-8.2713528 38.764595,4.2815513 48.13969,17.834674 44.154872,36.828022 30.708654,46.076619 16.260416,56.014427 -3.9494981,51.754222 -13.763319,37.414588 -24.263992,22.071347 -19.728335,0.64462208 -4.4951973,-9.7342896 11.742953,-20.797954 34.386694,-15.98679 45.330585,0.1399218 56.957348,17.272902 51.870631,41.133834 34.850283,52.642608 16.822539,64.832562 -8.2557318,59.470254 -20.329308,41.556217 -33.082529,22.633765 -27.444596,-3.6619713 -8.6368269,-16.300279 11.180283,-29.616836 38.693597,-23.70325 51.896574,-4.0017077 65.776525,16.710018 59.587261,45.441005 38.991913,59.208598 17.385609,73.651995 -12.563136,67.187032 -26.895297,45.697847 -41.902187,23.196997 -35.161504,-7.9695799 -12.778456,-22.866268 10.616911,-38.436689 43.001386,-31.420272 58.462563,-8.1433373 74.596552,16.146521 67.304385,49.748954 43.133542,65.774587"
- transform="matrix(-0.15819674,0,0,0.15819674,22.262049,1.7055356)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="flèche"
- style="display:inline">
- <path
- style="fill:url(#linearGradient3326);fill-opacity:1;stroke:#1f3157;stroke-width:0.47459021;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- d="M 5.6166617,6.6702162 C 8.5498903,6.3591404 11.366732,6.8627725 14.089084,8.0278339 L 12.323485,12.25995 11.465549,10.2747 C 9.1936105,11.38659 7.6712925,13.621104 6.8096897,16.845097 L 0.57820215,12.334567 C 2.318135,10.026025 5.9650066,8.1110997 8.889601,7.8565979 L 5.6166617,6.6702162 z"
- id="rect3317"
- sodipodi:nodetypes="cccccccc"
- inkscape:connector-curvature="0" />
- <path
- style="fill:url(#linearGradient3371);fill-opacity:1;stroke:none"
- d="M 8.2416433,7.021026 C 9.8257327,6.8500961 11.315051,7.2477939 12.75025,7.9702064 8.920071,9.4835882 6.1923078,11.598289 4.6822166,14.377175 L 1.7555768,12.162421 C 3.6037773,9.8056523 6.570797,8.7541746 9.6654142,7.8515586 L 8.2416433,7.021026 z"
- id="rect3362"
- sodipodi:nodetypes="cccccc"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/gui/qt5_qml/skins/pois.qml b/navit/gui/qt5_qml/skins/pois.qml
deleted file mode 100644
index bc083e1ed..000000000
--- a/navit/gui/qt5_qml/skins/pois.qml
+++ /dev/null
@@ -1,119 +0,0 @@
-import QtQuick 2.0
-
-Item {
- ListView {
- model: pois
- anchors.fill: parent
- id: listView
- delegate: Rectangle {
- height: 64
- color: "#ff0000"
- radius: 2
- border.width: 1
-
- Image {
- id: image1
- height: parent.height - 4;
- source : model.modelData.active ? "icons/appbar.layer.svg" : "icons/appbar.layer.delete.svg"
- opacity: model.modelData.active ? 1 : 0.4
- }
-
- Text {
- width: 128
- id: distanceText
- text: distance
- color: "#ffffff"
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: image1.right
- anchors.leftMargin: 8
- }
-
- Text {
- text: name
- color: "#ffffff"
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: distanceText.right
- anchors.leftMargin: 8
- }
-
- MouseArea{
- anchors.fill: parent
- hoverEnabled: true
- onEntered: {
- // backend.list_maps(1)
- }
- }
- }
-
- Component.onCompleted: backend.get_pois()
- }
-
- Rectangle {
- height: 64
- width: height
-
- x: parent.width - width
- y: parent.height - height * 2
-
- color: "#35322f"
-
- Image {
- anchors.centerIn: parent
- source: "icons/appbar.chevron.up.svg"
- }
-
- MouseArea {
- anchors.fill: parent
- id: listUp
-
- SmoothedAnimation {
- target: listView
- property: "contentY"
- running: listUp.pressed
- velocity: 1000
- to: 0
- }
- onReleased: {
- if (!listView.atYBeginning)
- listView.flick(0, 1000)
- }
- }
- }
-
-
-
- Rectangle {
- height: 64
- width: height
-
- x: parent.width - width
- y: parent.height - height
-
- color: "#35322f"
-
- Image {
- anchors.centerIn: parent
- source: "icons/appbar.chevron.down.svg"
- }
-
- MouseArea {
- anchors.fill: parent
- id: listDown
-
- SmoothedAnimation {
- target: listView
- property: "contentY"
- running: listDown.pressed
- to: listView.contentHeight - listView.height
- velocity: 1000
- }
- onReleased: {
- if (!listView.atYEnd)
- listView.flick(0, -1000)
- }
- }
- }
-
-
-
-}
diff --git a/navit/gui/qt5_qml/skins/settings.qml b/navit/gui/qt5_qml/skins/settings.qml
deleted file mode 100644
index d2a50d764..000000000
--- a/navit/gui/qt5_qml/skins/settings.qml
+++ /dev/null
@@ -1,41 +0,0 @@
-import QtQuick 2.0
-import QtQuick.Layouts 1.0
-
-
-GridLayout {
- id: gridLayout
- height: 200
- columnSpacing: 4
- rowSpacing: 4
- rows: 3
- columns: 2
-
- MainButton {
- text: "Maps"
- icon: "icons/appbar.layer.svg"
- Layout.fillHeight: true
- Layout.fillWidth: true
- onClicked: {
- menucontent.source = "maps.qml"
- }
- }
- MainButton {
- text: "Vehicles"
- icon: "icons/appbar.transit.car.svg"
- Layout.fillHeight: true
- Layout.fillWidth: true
- }
- MainButton {
- text: "Display"
- icon: "icons/appbar.fullscreen.box.svg"
- Layout.fillHeight: true
- Layout.fillWidth: true
- }
-
- MainButton {
- text: "Rules"
- icon: "icons/appbar.cogs.svg"
- Layout.fillHeight: true
- Layout.fillWidth: true
- }
-}
diff --git a/navit/gui/win32/CMakeLists.txt b/navit/gui/win32/CMakeLists.txt
deleted file mode 100644
index 16b653c9f..000000000
--- a/navit/gui/win32/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-module_add_library(gui_win32 gui_win32.c win32_gui_destination.c win32_gui_notify.c ceglue.c)
-
diff --git a/navit/gui/win32/ceglue.c b/navit/gui/win32/ceglue.c
deleted file mode 100644
index a0817f935..000000000
--- a/navit/gui/win32/ceglue.c
+++ /dev/null
@@ -1,77 +0,0 @@
-#include <windows.h>
-#include "ceglue.h"
-
-BOOL FAR (*SHFullScreenPtr)(HWND hwnd, DWORD state) = NULL;
-
-void InitCeGlue (void)
-{
- HINSTANCE ayg = LoadLibraryW (TEXT ("aygshell.dll"));
- if (ayg != NULL) {
- SHFullScreenPtr = (BOOL (*)(HWND, DWORD))
- GetProcAddressW (ayg, TEXT ("SHFullScreen"));
- }
-}
-
-// code to turn of screen adopted from
-// http://msdn.microsoft.com/en-us/library/ms838354.aspx
-
-// GDI Escapes for ExtEscape()
-#define QUERYESCSUPPORT 8
-
-// The following are unique to CE
-#define GETVFRAMEPHYSICAL 6144
-#define GETVFRAMELEN 6145
-#define DBGDRIVERSTAT 6146
-#define SETPOWERMANAGEMENT 6147
-#define GETPOWERMANAGEMENT 6148
-
-
-typedef enum _VIDEO_POWER_STATE {
- VideoPowerOn = 1,
- VideoPowerStandBy,
- VideoPowerSuspend,
- VideoPowerOff
-} VIDEO_POWER_STATE, *PVIDEO_POWER_STATE;
-
-
-typedef struct _VIDEO_POWER_MANAGEMENT {
- ULONG Length;
- ULONG DPMSVersion;
- ULONG PowerState;
-} VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;
-
-
-int CeEnableBacklight(int enable)
-{
- HDC gdc;
- int iESC=SETPOWERMANAGEMENT;
-
- gdc = GetDC(NULL);
- if (ExtEscape(gdc, QUERYESCSUPPORT, sizeof(int), (LPCSTR)&iESC,
- 0, NULL)==0)
- {
- MessageBox(NULL,
- L"Sorry, your Pocket PC does not support DisplayOff",
- L"Pocket PC Display Off Feature",
- MB_OK);
- ReleaseDC(NULL, gdc);
- return FALSE;
- }
- else
- {
- VIDEO_POWER_MANAGEMENT vpm;
- vpm.Length = sizeof(VIDEO_POWER_MANAGEMENT);
- vpm.DPMSVersion = 0x0001;
- if (enable) {
- vpm.PowerState = VideoPowerOn;
- } else {
- vpm.PowerState = VideoPowerOff;
- }
- // Power off the display
- ExtEscape(gdc, SETPOWERMANAGEMENT, vpm.Length, (LPCSTR) &vpm,
- 0, NULL);
- ReleaseDC(NULL, gdc);
- return TRUE;
- }
-}
-
diff --git a/navit/gui/win32/ceglue.h b/navit/gui/win32/ceglue.h
deleted file mode 100644
index b0dc79d42..000000000
--- a/navit/gui/win32/ceglue.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef CEGLUE_H
-#define CEGLUE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern BOOL (*SHFullScreenPtr)(HWND hwnd, DWORD state);
-void InitCeGlue (void);
-
-int CeEnableBacklight(int enable);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/gui/win32/gui_win32.c b/navit/gui/win32/gui_win32.c
deleted file mode 100644
index 8a8cb37b9..000000000
--- a/navit/gui/win32/gui_win32.c
+++ /dev/null
@@ -1,643 +0,0 @@
-#include <stdlib.h>
-#include <process.h>
-#include <windows.h>
-#include <glib.h>
-#include "config.h"
-#include "plugin.h"
-#include "gui.h"
-#include "graphics_win32.h"
-#include "point.h"
-#include "menu.h"
-#include "item.h"
-#include "attr.h"
-#include "callback.h"
-#include <commctrl.h>
-#include "debug.h"
-#include "util.h"
-#include "navit.h"
-#include "navit_nls.h"
-#ifdef __CEGCC__
-#include <sipapi.h>
-#include <aygshell.h>
-#include "ceglue.h"
-
-static int ce_backlight = 1;
-static int ce_fullscreen;
-#endif
-
-#ifdef HAVE_GLIB
-//static GHashTable *popup_callback_hash = NULL;
-static GArray *popup_menu_array;
-#endif
-
-const TCHAR g_szClassName[] = TEXT("navit_gui_class");
-
-
-static UINT_PTR menu_id = 0;
-
-#if 0
-static gboolean message_pump( gpointer data )
-{
- MSG messages;
-
- Sleep( 1 );
-
- if (GetMessage (&messages, NULL, 0, 0))
- {
- TranslateMessage(&messages);
- DispatchMessage(&messages);
- }
- else{
- exit( 0 );
- }
- return TRUE;
-}
-
-static BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam)
-{
- LPRECT rcParent;
- int idChild;
-
- idChild = GetWindowLong(hwndChild, GWL_ID);
-
- if ( idChild == ID_CHILD_GFX )
- {
- rcParent = (LPRECT) lParam;
-
- MoveWindow( hwndChild, 0, 0, rcParent->right, rcParent->bottom, TRUE );
- PostMessage( hwndChild, WM_USER+1, 0, 0 );
- }
-
- return TRUE;
-}
-#endif
-
-#ifndef GET_WHEEL_DELTA_WPARAM
- #define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
-#endif
-
-static void CreateToolBar(HWND hwnd)
-{
- // Create Toolbar
- HWND hTool;
- TBBUTTON tbb[8];
- TBADDBITMAP tbab;
-#if 0 /* def _WIN32_WCE */
- /* Have to initialize common controls under CE */
- INITCOMMONCONTROLSEX iccex;
- iccex.dwSize = sizeof (INITCOMMONCONTROLSEX);
- iccex.dwICC = ICC_BAR_CLASSES;
- InitCommonControlsEx (&iccex);
-#else
- InitCommonControls();
-#endif
-
- hTool = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
- hwnd, (HMENU)ID_CHILD_TOOLBAR, GetModuleHandle(NULL), NULL);
-
- if(hTool == NULL)
- MessageBox(hwnd, TEXT("Could not create tool bar."), TEXT("Error"), MB_OK | MB_ICONERROR);
-
- SendMessage(hTool, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
-
- tbab.hInst = GetModuleHandle(NULL);
- tbab.nID = IDB_NAVITTOOLBAR;
- int iImageOffset = SendMessage(hTool, TB_ADDBITMAP, 10, (LPARAM) &tbab);
-
- int iStr;
-
- ZeroMemory(tbb, sizeof(tbb));
-
- tbb[0].iBitmap = iImageOffset;
- tbb[0].fsState = TBSTATE_ENABLED;
- tbb[0].fsStyle = TBSTYLE_BUTTON;
- tbb[0].idCommand = ID_DISPLAY_ZOOMIN;
- iStr = SendMessage(hTool, TB_ADDSTRINGW, 0, (LPARAM) L"ZoomIn" );
- tbb[0].iString = iStr;
-
- tbb[1].iBitmap = iImageOffset+1;
- tbb[1].fsState = TBSTATE_ENABLED;
- tbb[1].fsStyle = TBSTYLE_BUTTON;
- tbb[1].idCommand = ID_DISPLAY_ZOOMOUT;
- iStr = SendMessage(hTool, TB_ADDSTRINGW, 0, (LPARAM) L"ZoomOut" );
- tbb[1].iString = iStr;
-
- tbb[2].iBitmap = iImageOffset+4;
- tbb[2].fsState = TBSTATE_ENABLED;
- tbb[2].fsStyle = TBSTYLE_BUTTON;
- tbb[2].idCommand = ID_DISPLAY_REFRESH;
- iStr = SendMessage(hTool, TB_ADDSTRINGW, 0, (LPARAM) L"Refresh" );
- tbb[2].iString = iStr;
-
- tbb[3].iBitmap = iImageOffset+2;
- tbb[3].fsState = TBSTATE_ENABLED;
- tbb[3].fsStyle = TBSTYLE_BUTTON;
- tbb[3].idCommand = ID_DISPLAY_ZOOMIN;
- iStr = SendMessage(hTool, TB_ADDSTRINGW, 0, (LPARAM) L"Cursor" );
- tbb[3].iString = iStr;
-
- tbb[4].iBitmap = iImageOffset+5;
- tbb[4].fsState = TBSTATE_ENABLED;
- tbb[4].fsStyle = TBSTYLE_BUTTON;
- tbb[4].idCommand = ID_DISPLAY_ORIENT;
- iStr = SendMessage(hTool, TB_ADDSTRINGW, 0, (LPARAM) L"Orientation" );
- tbb[4].iString = iStr;
-
- tbb[5].iBitmap = iImageOffset+8;
- tbb[5].fsState = TBSTATE_ENABLED;
- tbb[5].fsStyle = TBSTYLE_BUTTON;
- tbb[5].idCommand = ID_DISPLAY_ZOOMIN;
- iStr= SendMessage(hTool, TB_ADDSTRINGW, 0, (LPARAM) L"Destination" );
- tbb[5].iString = iStr;
-
- tbb[6].iBitmap = iImageOffset+3;
- tbb[6].fsState = TBSTATE_ENABLED;
- tbb[6].fsStyle = TBSTYLE_BUTTON;
- tbb[6].idCommand = ID_DISPLAY_ZOOMIN;
- iStr= SendMessage(hTool, TB_ADDSTRINGW, 0, (LPARAM) L"Roadbook" );
- tbb[6].iString = iStr;
-
- tbb[7].iBitmap = iImageOffset+9;
- tbb[7].fsState = TBSTATE_ENABLED;
- tbb[7].fsStyle = TBSTYLE_BUTTON;
- tbb[7].idCommand = ID_FILE_EXIT;
- iStr= SendMessage(hTool, TB_ADDSTRINGW, 0, (LPARAM) L"_Quit" );
- tbb[7].iString = iStr;
-
- SendMessage(hTool, TB_ADDBUTTONS, sizeof(tbb)/sizeof(TBBUTTON), (LPARAM)&tbb);
-}
-
-static void window_layout( HWND hwnd )
-{
-#ifndef HAVE_API_WIN32_CE
- RECT rcClient;
- RECT rcTool;
- int iToolHeight;
-
- HWND hChild = GetDlgItem(hwnd, ID_CHILD_TOOLBAR);
- SendMessage(hChild, TB_AUTOSIZE, 0, 0);
-
- GetWindowRect(hChild, &rcTool);
- iToolHeight = rcTool.bottom - rcTool.top;
-
- GetClientRect(hwnd, &rcClient);
- //printf( "BEFORE resize gui to: %d %d %d %d \n", rcClient.left, rcClient.right, rcClient.top, rcClient.bottom );
-
- rcClient.top += iToolHeight;
-
- dbg(lvl_debug, "resize gui to: %d %d %d %d \n", rcClient.left, rcClient.right, rcClient.top, rcClient.bottom );
-
-
- hChild = GetDlgItem(hwnd, ID_CHILD_GFX);
- if ( hChild )
- {
- MoveWindow( hChild, rcClient.left, rcClient.top, rcClient.right- rcClient.left, rcClient.bottom - rcClient.top, TRUE );
- PostMessage( hChild, WM_USER+1, 0, 0 );
- }
-#endif
-}
-#ifdef __CEGCC__
-static void toggle_fullscreen(HWND mWnd)
-{
- if (SHFullScreenPtr) {
- if (!ce_fullscreen) {
- (*SHFullScreenPtr)(mWnd, SHFS_HIDETASKBAR |
- SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON);
- } else {
- (*SHFullScreenPtr)(mWnd, SHFS_HIDESIPBUTTON);
- }
- ce_fullscreen = !ce_fullscreen;
- }
-}
-
-static void toggle_backlight(void)
-{
- if (ce_backlight)
- if (CeEnableBacklight(FALSE))
- ce_backlight = 0;
- else
- if (CeEnableBacklight(TRUE))
- ce_backlight = 1;
-}
-#endif
-
-static LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
-{
- RECT rcClient;
-
-// printf( "PARENT %d %d %d \n", Message, wParam, lParam );
-
- switch(Message)
- {
- case WM_CREATE:
- {
- HMENU hMenu, hSubMenu;
-
- CreateToolBar( hwnd );
-
- hMenu = CreateMenu();
- // g_this_->hwnd = hwnd;
-
- hSubMenu = CreatePopupMenu();
-
- AppendMenuW(hSubMenu, MF_STRING, ID_DISPLAY_ZOOMIN, L"ZoomIn" );
- AppendMenuW(hSubMenu, MF_STRING, ID_DISPLAY_ZOOMOUT, L"ZoomOut" );
- AppendMenuW(hSubMenu, MF_STRING, ID_DISPLAY_REFRESH, L"Refresh" );
- AppendMenuW(hSubMenu, MF_SEPARATOR, 0, NULL );
- AppendMenuW(hSubMenu, MF_STRING, ID_FILE_EXIT, L"_Quit" );
-
- AppendMenuW(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, L"Display" );
- hSubMenu = CreatePopupMenu();
- AppendMenu(hSubMenu, MF_STRING, ID_STUFF_GO, TEXT("&Go"));
- AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, TEXT("&Stuff"));
-
-#ifndef HAVE_API_WIN32_CE
- SetMenu(hwnd, hMenu);
-#endif
-
- window_layout( hwnd );
-
- }
- break;
- case WM_COMMAND:
- {
- printf( "WM_COMMAND %d\n", LOWORD(wParam) );
- struct gui_priv* gui = (struct gui_priv*)GetWindowLongPtr( hwnd , DWLP_USER );
-
-
- switch(LOWORD(wParam))
- {
- case ID_DISPLAY_ZOOMIN:
- navit_zoom_in(gui->nav, 2, NULL);
- return 0;
- break;
- case ID_DISPLAY_ZOOMOUT:
- navit_zoom_out(gui->nav, 2, NULL);
- return 0;
- break;
- case ID_DISPLAY_REFRESH:
- navit_draw(gui->nav);
- return 0;
- break;
- case ID_DISPLAY_CURSOR:
- {
- struct attr attr;
- attr.type=attr_cursor;
- // TODO attr.u.num=gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w));
- if(!navit_set_attr(gui->nav, &attr)) {
- dbg(lvl_error, "Failed to set attr_cursor\n");
- }
- return 0;
- }
- break;
- case ID_DISPLAY_ORIENT:
- {
- struct attr attr;
-
- attr.type=attr_orientation;
- // attr.u.num=gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(w));
- attr.u.num = 0; // TODO
- if(!navit_set_attr(gui->nav, &attr)) {
- dbg(lvl_error, "Failed to set attr_orientation\n");
- }
- return 0;
- }
-
- case ID_FILE_EXIT:
- PostMessage(hwnd, WM_CLOSE, 0, 0);
- return 0;
- break;
- }
-#if HAVE_GLIB
- if ( popup_menu_array )
- {
- struct menu_priv* priv = (struct menu_priv*)g_array_index( popup_menu_array, gint, LOWORD(wParam) - POPUP_MENU_OFFSET );
-
- if ( priv )
- {
- struct callback* cb = priv->cb;
- if ( priv->cb )
- {
- callback_call_0( priv->cb );
- return 0;
- }
- }
- }
-#endif
- }
- break;
- case WM_USER+ 1:
- GetClientRect(hwnd, &rcClient);
- printf( "resize gui to: %d %d \n", rcClient.right, rcClient.bottom );
-
- window_layout( hwnd );
- //EnumChildWindows(hwnd, EnumChildProc, (LPARAM) &rcClient);
- return 0;
- break;
- case WM_CLOSE:
- DestroyWindow(hwnd);
- break;
- case WM_SIZE:
- window_layout( hwnd );
- return 0;
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
-
-
- case WM_MOUSEWHEEL:
- {
- struct gui_priv* gui = (struct gui_priv*)GetWindowLongPtr( hwnd , DWLP_USER );
-
- short delta = GET_WHEEL_DELTA_WPARAM( wParam );
- if ( delta > 0 )
- {
- navit_zoom_in(gui->nav, 2, NULL);
- }
- else{
- navit_zoom_out(gui->nav, 2, NULL);
- }
- }
- break;
-#ifdef HAVE_API_WIN32_CE
- case WM_KEYDOWN:
- {
- struct point p;
- int w,h;
- struct gui_priv* gui = (struct gui_priv*)GetWindowLongPtr( hwnd , DWLP_USER );
- transform_get_size(navit_get_trans(gui->nav), &w, &h);
-
- if (wParam == VK_LEFT || wParam == '4') {
- p.x=0;
- p.y=h/2;
- navit_set_center_screen(gui->nav, &p, 1);
- } else if (wParam == VK_RIGHT || wParam == '6') {
- p.x=w;
- p.y=h/2;
- navit_set_center_screen(gui->nav, &p, 1);
- } else if (wParam == VK_UP || wParam == '2') {
- p.x=w/2;
- p.y=0;
- navit_set_center_screen(gui->nav, &p, 1);
- } else if (wParam == VK_DOWN || wParam == '8') {
- p.x=w/2;
- p.y=h;
- navit_set_center_screen(gui->nav, &p, 1);
- } else if (wParam == '1') {
- navit_zoom_in(gui->nav, 2, NULL);
- } else if (wParam == '3') {
- navit_zoom_out(gui->nav, 2, NULL);
- } else if (wParam == '7') {
-#if 0
- toggle_backlight();
-#endif
- } else if (wParam == '9') {
-#if 0
- toggle_fullscreen(hwnd);
-#endif
- }
- }
- break;
-#endif
- default:
- return DefWindowProc(hwnd, Message, wParam, lParam);
- }
- return 0;
-}
-
-static HANDLE CreateWin32Window( void )
-{
-#ifdef HAVE_API_WIN32_CE
- WNDCLASS wc;
-#else
- WNDCLASSEX wc;
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.hIconSm = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_NAVIT));
-#endif
- HWND hwnd;
-// MSG Msg;
-
- wc.style = 0;
- wc.lpfnWndProc = WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 32;
- wc.hInstance = NULL;
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = g_szClassName;
- wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_NAVIT));
-
-#ifdef HAVE_API_WIN32_CE
- if(!RegisterClass(&wc))
-#else
- if(!RegisterClassEx(&wc))
-#endif
-
- {
- MessageBox(NULL, TEXT("Window Registration Failed!"), TEXT("Error!"), MB_ICONEXCLAMATION | MB_OK);
- return 0;
- }
-
- hwnd = CreateWindowEx(
- WS_EX_CLIENTEDGE,
- g_szClassName,
- TEXT( "Navit" ),
-#ifdef HAVE_API_WIN32_CE
- WS_SYSMENU | WS_CLIPCHILDREN,
- CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
-#else
-
- WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
- CW_USEDEFAULT, CW_USEDEFAULT, 800, 600,
-#endif
- NULL, NULL, NULL, NULL);
-
- if(hwnd == NULL)
- {
- MessageBox(NULL, TEXT("Window Creation Failed!"), TEXT("Error!"), MB_ICONEXCLAMATION | MB_OK);
- return 0;
- }
-
- ShowWindow(hwnd, TRUE);
- UpdateWindow(hwnd);
-
-#if 0
- g_idle_add (message_pump, NULL);
-#endif
-
- return hwnd;
-}
-
-
-static int win32_gui_set_graphics(struct gui_priv *this_, struct graphics *gra)
-{
- HANDLE* wndHandle_ptr = graphics_get_data(gra, "wnd_parent_handle_ptr");
- *wndHandle_ptr = this_->hwnd;
- graphics_get_data(gra, "START_CLIENT");
- return 0;
-}
-
-
-static void win32_gui_add_bookmark_do(struct gui_priv *gui)
-{
-// navit_add_bookmark(gui->nav, &gui->dialog_coord, gtk_entry_get_text(GTK_ENTRY(gui->dialog_entry)));
-// gtk_widget_destroy(gui->dialog_win);
-}
-
-static int win32_gui_add_bookmark(struct gui_priv *gui, struct pcoord *c, char *description)
-{
- return 1;
-}
-
-
-static struct menu_methods menu_methods;
-
-
-static struct menu_priv *add_menu( struct menu_priv *menu,
- struct menu_methods *meth,
- char *name,
- enum menu_type type,
- struct callback *cb)
-{
- struct menu_priv* ret = NULL;
-
- ret = g_new0(struct menu_priv, 1);
-
- *ret = *menu;
- *meth = menu_methods;
-
- TCHAR *menuname = newSysString(name);
-
- if ( type == menu_type_submenu )
- {
- HMENU hSubMenu = NULL;
- hSubMenu = CreatePopupMenu();
- AppendMenu(menu->hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, menuname );
- ret->hMenu = hSubMenu;
- }
- else
- {
- AppendMenu( menu->hMenu, MF_STRING, menu_id, name );
- }
-
- // g_hash_table_insert( popup_callback_hash, GINT_TO_POINTER( menu_id ), (gpointer)cb );
-#if HAVE_GLIB
- g_array_append_val( popup_menu_array, ret );
-#endif
-
- ret->cb = cb;
-
- menu_id++;
-
- return ret;
-
-}
-
-static void set_toggle(struct menu_priv *menu, int active)
-{
- // gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(menu->action), active);
-}
-
-static int get_toggle(struct menu_priv *menu)
-{
- // return gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(menu->action));
- return 0;
-}
-
-static struct menu_methods menu_methods = {
- add_menu,
- set_toggle,
- get_toggle,
-};
-
-static void popup_activate(struct menu_priv *menu)
-{
- POINT pnt;
- GetCursorPos( &pnt );
-
- if (menu->hMenu)
- {
- TrackPopupMenu( menu->hMenu, 0, pnt.x, pnt.y, 0, menu->wnd_handle, NULL );
- DestroyMenu( menu->hMenu );
- }
-}
-
-
-static void popup_deactivate( struct menu_priv *menu )
-{
- DestroyMenu( menu->hMenu );
-}
-
-static struct menu_priv* win32_gui_popup_new(struct gui_priv *this_, struct menu_methods *meth)
-{
- struct menu_priv* ret = NULL;
-
- ret = g_new0(struct menu_priv, 1);
- *meth = menu_methods;
-
- menu_id = POPUP_MENU_OFFSET;
-
-#if HAVE_GLIB
- if ( popup_menu_array )
- {
- g_array_free (popup_menu_array, TRUE);
- popup_menu_array = NULL;
- }
-
- popup_menu_array = g_array_new (FALSE, FALSE, sizeof (gint));
-#endif
-
- ret->cb = NULL;
- ret->hMenu = CreatePopupMenu();
- ret->wnd_handle = this_->hwnd;
- meth->popup=popup_activate;
-
-printf( "create popup menu %d \n", ret->hMenu );
-
- return ret;
-}
-
-struct gui_methods win32_gui_methods = {
- NULL, // win32_gui_menubar_new,
- win32_gui_popup_new,
- win32_gui_set_graphics,
- NULL,
- NULL, // win32_gui_datawindow_new,
- win32_gui_add_bookmark,
-};
-
-
-
-static struct gui_priv *win32_gui_new( struct navit *nav, struct gui_methods *meth, struct attr **attrs)
-{
- struct gui_priv *this_;
-#ifdef HAVE_API_WIN32_CE
- /* Do not run multiple instances under CE */
- HWND prev;
- prev = FindWindow(g_szClassName, NULL);
- if (prev) {
- ShowWindow(prev, SW_RESTORE);
- SetForegroundWindow(prev);
- InvalidateRect (prev, NULL, FALSE);
- exit(0);
- }
- InitCeGlue();
-#endif
-
- *meth=win32_gui_methods;
-
- this_=g_new0(struct gui_priv, 1);
- this_->nav=nav;
-
- this_->hwnd = CreateWin32Window();
- SetWindowLongPtr( this_->hwnd , DWLP_USER, (LONG_PTR)this_ );
-
- return this_;
-}
-
-void plugin_init(void)
-{
- plugin_register_category_gui("win32", win32_gui_new);
-}
diff --git a/navit/gui/win32/resources/navit.ico b/navit/gui/win32/resources/navit.ico
deleted file mode 100644
index 6fd707da0..000000000
--- a/navit/gui/win32/resources/navit.ico
+++ /dev/null
Binary files differ
diff --git a/navit/gui/win32/resources/resource.h b/navit/gui/win32/resources/resource.h
deleted file mode 100644
index 55bcc2d73..000000000
--- a/navit/gui/win32/resources/resource.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#include <windows.h>
-
-#define IDI_NAVIT 1100
-#define IDB_NAVITTOOLBAR 1101
diff --git a/navit/gui/win32/resources/resource.rc b/navit/gui/win32/resources/resource.rc
deleted file mode 100644
index 30374c244..000000000
--- a/navit/gui/win32/resources/resource.rc
+++ /dev/null
@@ -1,16 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-//
-// Bitmap
-//
-
-#include "resource.h"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Bitmap
-//
-
-IDB_NAVITTOOLBAR BITMAP DISCARDABLE "toolbar.bmp"
-IDI_NAVIT ICON DISCARDABLE "navit.ico"
-
-HI_RES_AWARE CEUX {1}
diff --git a/navit/gui/win32/resources/toolbar.bmp b/navit/gui/win32/resources/toolbar.bmp
deleted file mode 100644
index 17381d83e..000000000
--- a/navit/gui/win32/resources/toolbar.bmp
+++ /dev/null
Binary files differ
diff --git a/navit/gui/win32/win32_gui_destination.c b/navit/gui/win32/win32_gui_destination.c
deleted file mode 100644
index 115b9058b..000000000
--- a/navit/gui/win32/win32_gui_destination.c
+++ /dev/null
@@ -1,412 +0,0 @@
-#include <windows.h>
-#include <windowsx.h>
-#include <commctrl.h>
-#include <glib.h>
-#include "item.h"
-#include "attr.h"
-#include "navit.h"
-#include "search.h"
-#include "debug.h"
-#include "util.h"
-#include "win32_gui_notify.h"
-#include "resources/resource.h"
-
-static const TCHAR g_szDestinationClassName[] = TEXT("navit_gui_destinationwindow_class");
-
-struct datawindow_priv
-{
- HWND hwnd;
- HWND hwndLabel;
- HWND hwndEdit;
- HWND hwndList;
- HWND hwndButtonPrev;
- HWND hwndButtonNext;
- enum attr_type currentSearchState;
- struct search_list *sl;
- struct navit *nav;
- struct notify_priv *notifications;
-};
-
-static void setlayout(struct datawindow_priv *datawindow)
-{
- LVCOLUMN lvc;
- lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
-
- RECT winrect;
- GetWindowRect (datawindow->hwndList, &winrect);
-
- lvc.iSubItem = 1;
- lvc.cx = (winrect.right - winrect.left) - 52 ;
- lvc.fmt = LVCFMT_LEFT; // left-aligned column
-
- switch (datawindow->currentSearchState)
- {
- case attr_country_name:
- {
- Edit_SetText(datawindow->hwndLabel, TEXT("Country"));
- lvc.pszText = TEXT("Country");
- }
- break;
- case attr_town_name:
- {
- Edit_SetText(datawindow->hwndLabel, TEXT("Postal or Town"));
- lvc.pszText = TEXT("Town");
- }
- break;
- case attr_street_name:
- {
- Edit_SetText(datawindow->hwndLabel, TEXT("Street"));
- lvc.pszText = TEXT("Street");
- }
- break;
- default:
- break;
-
- }
-
- (void)ListView_SetColumn(datawindow->hwndList, 1, &lvc);
-
- Edit_SetText(datawindow->hwndEdit, TEXT(""));
- SetFocus(datawindow->hwndEdit);
-}
-
-static void notify_apply(struct datawindow_priv *datawindow, int index, int param2)
-{
- TCHAR txtBuffer[1024];
- char search_string[1024];
- struct attr search_attr;
- struct search_list_result *res;
-
-
- if ( index >= 0 )
- {
- ListView_GetItemText(datawindow->hwndList, index, 1, txtBuffer, 1024);
-
- TCHAR_TO_UTF8(txtBuffer, search_string);
-
- search_attr.type = datawindow->currentSearchState;
- search_attr.u.str = search_string;
-
- search_list_search(datawindow->sl, &search_attr, 0);
- res=search_list_get_result(datawindow->sl);
- }
-
- switch (datawindow->currentSearchState)
- {
- case attr_country_name:
- {
- datawindow->currentSearchState = attr_town_name;
- }
- break;
- case attr_town_name:
- {
- datawindow->currentSearchState = attr_street_name;
- }
- break;
- case attr_street_name:
- {
- navit_set_destination(datawindow->nav, res->c, "Mein Test", 1);
- DestroyWindow(datawindow->hwnd);
- }
- break;
- default:
- break;
-
- }
-
- setlayout(datawindow);
-
-}
-
-static void notify_back(struct datawindow_priv *datawindow, int param1, int param2)
-{
- switch (datawindow->currentSearchState)
- {
- case attr_country_name:
- break;
- case attr_town_name:
- {
- datawindow->currentSearchState = attr_country_name;
- }
- break;
- case attr_street_name:
- {
- datawindow->currentSearchState = attr_town_name;
- }
- break;
- default:
- break;
-
- }
-
- setlayout(datawindow);
-}
-
-static void notify_textchange(struct datawindow_priv *datawindow, int param1, int param2)
-{
-
- struct attr search_attr;
- struct search_list_result *res;
- char search_string[1024];
- TCHAR converted_iso2[32];
-
-
- int lineLength = Edit_LineLength(datawindow->hwndEdit, 0);
- TCHAR line[lineLength + 1];
- (void)Edit_GetLine(datawindow->hwndEdit, 0, line, lineLength + 1);
- line[lineLength] = 0;
-
-
- (void)ListView_DeleteAllItems( datawindow->hwndList);
-
- TCHAR_TO_UTF8(line, search_string);
-
- search_attr.type = datawindow->currentSearchState;
- search_attr.u.str = search_string;
-
- if (lineLength<1)
- return;
-
- search_list_search(datawindow->sl, &search_attr, 1);
-
-
- TCHAR *tcharBuffer = NULL;
- int listIndex = 0;
- LVITEM lvI;
-
- lvI.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
- lvI.state = 0;
- lvI.stateMask = 0;
-
- while ((res=search_list_get_result(datawindow->sl)) && listIndex < 50)
- {
-
- switch (search_attr.type)
- {
- case attr_country_name:
- tcharBuffer = newSysString(res->country->name);
- break;
- case attr_town_name:
- tcharBuffer = newSysString(res->town->common.town_name);
- break;
- case attr_street_name:
- if (res->street->name)
- {
- tcharBuffer = newSysString(res->street->name);
- }
- else
- {
- continue;
- }
- break;
- default:
- dbg(lvl_error, "Unhandled search type");
- }
-
- lvI.iItem = listIndex;
- lvI.iImage = listIndex;
- lvI.iSubItem = 0;
- lvI.lParam = (LPARAM) res->country->iso2;
- UTF8_TO_TCHAR(res->country->iso2, converted_iso2);
- lvI.pszText = converted_iso2;//LPSTR_TEXTCALLBACK; // sends an LVN_GETDISP message.
- (void)ListView_InsertItem(datawindow->hwndList, &lvI);
- ListView_SetItemText(datawindow->hwndList, listIndex, 1, tcharBuffer);
- g_free(tcharBuffer);
- dbg(lvl_debug,"%s\n", res->country->name);
- listIndex++;
- }
-}
-
-static void notify_destroy(struct datawindow_priv *datawindow, int param1, int param2)
-{
- if ( datawindow )
- {
- search_list_destroy(datawindow->sl);
- g_free(datawindow);
- }
-}
-
-static void notify_size(struct datawindow_priv *datawindow, int width, int height)
-{
- if (datawindow)
- {
- MoveWindow(datawindow->hwndLabel,
- 0, 0, // starting x- and y-coordinates
- width, // width of client area
- 20, // height of client area
- TRUE); // repaint window
- MoveWindow(datawindow->hwndEdit,
- 0, 20, // starting x- and y-coordinates
- width, // width of client area
- 20, // height of client area
- TRUE); // repaint window
- MoveWindow(datawindow->hwndList,
- 0, 40, // starting x- and y-coordinates
- width, // width of client area
- height - 60, // height of client area
- TRUE); // repaint window
- MoveWindow(datawindow->hwndButtonPrev,
- 0, height - 20, // starting x- and y-coordinates
- width/2, // width of client area
- 20, // height of client area
- TRUE); // repaint window
- MoveWindow(datawindow->hwndButtonNext,
- width/2, height - 20, // starting x- and y-coordinates
- width/2, // width of client area
- 20, // height of client area
- TRUE); // repaint window
-
- setlayout(datawindow);
-
- }
-}
-
-static BOOL init_lv_columns(HWND hWndListView)
-{
-
-// struct LVCOLUMN lvc = {LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM,
-// LVCFMT_LEFT, 100, szText[iCol], 0, iCol, 0, 0 };
-
- TCHAR szText[][8] = {TEXT("Iso"),TEXT("Country")}; // temporary buffer
- LVCOLUMN lvc;
- int iCol;
-
- lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
-
- for (iCol = 0; iCol < 2; iCol++)
- {
- lvc.iSubItem = iCol;
- lvc.pszText = szText[iCol];
- lvc.cx = 50; // width of column in pixels
-
- if ( iCol < 2 )
- lvc.fmt = LVCFMT_LEFT; // left-aligned column
- else
- lvc.fmt = LVCFMT_RIGHT; // right-aligned column
-
- if (ListView_InsertColumn(hWndListView, iCol, &lvc) == -1)
- return FALSE;
- }
- return TRUE;
-}
-
-BOOL register_destination_window()
-{
- WNDCLASS wc;
-
- wc.style = 0;
- wc.lpfnWndProc = message_handler;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 32;
- wc.hInstance = NULL;
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = g_szDestinationClassName;
- wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_NAVIT));
-
- if (!RegisterClass(&wc))
- {
- dbg(lvl_error, "Window Registration Failed!\n");
- return FALSE;
- }
- return TRUE;
-}
-
-HANDLE create_destination_window( struct navit *nav )
-{
-
-
- struct datawindow_priv *this_;
-
- this_=g_new0(struct datawindow_priv, 1);
- this_->nav = nav;
- this_->currentSearchState = attr_country_name;
- this_->sl=search_list_new(navit_get_mapset(this_->nav));
-
- this_->hwnd = CreateWindowEx(
- WS_EX_CLIENTEDGE,
- g_szDestinationClassName,
- TEXT("Destination Input"),
-#if defined(__CEGCC__)
- WS_SYSMENU | WS_CLIPCHILDREN,
- CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
-#else
- WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
- CW_USEDEFAULT, CW_USEDEFAULT, 640, 480,
-#endif
- NULL, NULL, NULL, NULL);
-
- if (this_->hwnd == NULL)
- {
- dbg(lvl_error, "Window Creation Failed!\n");
- return 0;
- }
-
- this_->notifications = win32_gui_notify_new(this_);
- SetWindowLongPtr( this_->hwnd , DWLP_USER, (LONG_PTR) this_->notifications );
-
- this_->hwndLabel = CreateWindow(WC_STATIC, // predefined class
- TEXT("Country"), // no window title
- WS_CHILD | WS_VISIBLE | ES_LEFT , //| WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL
- 0, 0, 0, 0, // set size in WM_SIZE message
- this_->hwnd, // parent window
- NULL,//(HMENU) ID_EDITCHILD, // edit control ID
- (HINSTANCE) GetWindowLong(this_->hwnd, GWL_HINSTANCE),
- NULL); // pointer not needed
-
- this_->hwndEdit = CreateWindow(WC_EDIT, // predefined class
- NULL, // no window title
- WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER , //| WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL
- 0, 0, 0, 0, // set size in WM_SIZE message
- this_->hwnd, // parent window
- NULL,//(HMENU) ID_EDITCHILD, // edit control ID
- (HINSTANCE) GetWindowLong(this_->hwnd, GWL_HINSTANCE),
- NULL); // pointer not needed
-
- this_->hwndList = CreateWindow(WC_LISTVIEW, // predefined class
- NULL, // no window title
- WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER | LVS_REPORT , //| WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL
- 0, 0, 0, 0, // set size in WM_SIZE message
- this_->hwnd, // parent window
- NULL,//(HMENU) ID_EDITCHILD, // edit control ID
- (HINSTANCE) GetWindowLong(this_->hwnd, GWL_HINSTANCE),
- NULL); // pointer not needed
-
- this_->hwndButtonPrev = CreateWindow(WC_BUTTON, // predefined class
- TEXT("<<"), // no window title
- WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER | LVS_REPORT , //| WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL
- 0, 0, 0, 0, // set size in WM_SIZE message
- this_->hwnd, // parent window
- NULL,//(HMENU) ID_EDITCHILD, // edit control ID
- (HINSTANCE) GetWindowLong(this_->hwnd, GWL_HINSTANCE),
- NULL); // pointer not needed
- this_->hwndButtonNext = CreateWindow(WC_BUTTON, // predefined class
- TEXT(">>"), // no window title
- WS_CHILD | WS_VISIBLE | ES_LEFT | WS_BORDER | LVS_REPORT , //| WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL
- 0, 0, 0, 0, // set size in WM_SIZE message
- this_->hwnd, // parent window
- NULL,//(HMENU) ID_EDITCHILD, // edit control ID
- (HINSTANCE) GetWindowLong(this_->hwnd, GWL_HINSTANCE),
- NULL); // pointer not needed
-#ifdef LVS_EX_FULLROWSELECT
- (void)ListView_SetExtendedListViewStyle(this_->hwndList,LVS_EX_FULLROWSELECT);
-#endif
-
-
- win32_gui_notify( this_->notifications, this_->hwndEdit, CHANGE, notify_textchange);
- win32_gui_notify( this_->notifications, NULL, WINDOW_SIZE, notify_size);
- win32_gui_notify( this_->notifications, this_->hwndList, DBLCLICK, notify_apply);
- win32_gui_notify( this_->notifications, this_->hwnd, WINDOW_DESTROY, notify_destroy);
-
- win32_gui_notify( this_->notifications, this_->hwndButtonNext, BUTTON_CLICK, notify_apply);
- win32_gui_notify( this_->notifications, this_->hwndButtonPrev, BUTTON_CLICK, notify_back);
-
- init_lv_columns(this_->hwndList);
- SetFocus(this_->hwndEdit);
- ShowWindow(this_->hwnd, TRUE);
- UpdateWindow(this_->hwnd);
-
- return this_->hwnd;
-}
-
diff --git a/navit/gui/win32/win32_gui_notify.c b/navit/gui/win32/win32_gui_notify.c
deleted file mode 100644
index c801e9da8..000000000
--- a/navit/gui/win32/win32_gui_notify.c
+++ /dev/null
@@ -1,132 +0,0 @@
-#include <windows.h>
-#include <windowsx.h>
-#include <commctrl.h>
-#include <glib.h>
-#include "win32_gui_notify.h"
-
-struct window_data
-{
- HWND hwnd;
- UINT message;
- void(*func)(struct datawindow_priv *parent, int param1, int param2);
-};
-
-struct notify_priv
-{
- GList *window_list;
- struct datawindow_priv *parent;
-
-};
-
-
-void win32_gui_notify(struct notify_priv* notify, HWND hwnd, int message_id, void(*func)(struct datawindow_priv *parent, int param1, int param2))
-{
- struct window_data *wnd_data = g_new( struct window_data,1);
-
- wnd_data->hwnd = hwnd;
- wnd_data->message = message_id;
- wnd_data->func = func;
-
- notify->window_list = g_list_append( notify->window_list, (gpointer) wnd_data );
-
-}
-
-struct notify_priv* win32_gui_notify_new(struct datawindow_priv *parent)
-{
- struct notify_priv* notify = g_new0(struct notify_priv,1);
- notify->parent = parent;
- return notify;
-}
-
-LRESULT CALLBACK message_handler(HWND hwnd, UINT win_message, WPARAM wParam, LPARAM lParam)
-{
- enum message_id message = INVALID;
- int param1 = -1;
- int param2 = -1;
- HWND hwndDlg = hwnd;
-
- switch (win_message)
- {
- case WM_CREATE:
- {
- message = WINDOW_CREATE;
- }
- break;
- case WM_SIZE:
- {
- message = WINDOW_SIZE;
- param1 = LOWORD(lParam);
- param2 = HIWORD(lParam);
- }
- break;
- case WM_DESTROY:
- {
- message = WINDOW_DESTROY;
- }
- break;
- case WM_NOTIFY:
- {
- hwndDlg = (((LPNMHDR)lParam)->hwndFrom);
- switch (((LPNMHDR)lParam)->code)
- {
- case NM_DBLCLK:
- {
- message = DBLCLICK;
-#ifdef LPNMITEMACTIVATE
- param1 = ((LPNMITEMACTIVATE)lParam)->iItem;
-#endif
- }
- break;
- case NM_CLICK:
- message = CLICK;
- break;
- }
- }
- break;
- case WM_COMMAND:
- {
- hwndDlg = (HWND)lParam;
-
- switch (HIWORD(wParam))
- {
- case EN_CHANGE:
- {
- message = CHANGE;
- }
- break;
- case BN_CLICKED:
- {
- message = BUTTON_CLICK;
- }
- break;
- }
- }
- break;
-
- default:
- return DefWindowProc(hwnd, win_message, wParam, lParam);
- }
-
- struct notify_priv* notify_data = (struct notify_priv*)GetWindowLongPtr( hwnd , DWLP_USER );
-
- if ( message != INVALID && notify_data && notify_data->window_list )
- {
-
- GList* current_element = g_list_first(notify_data->window_list);
-
-
- struct window_data* wnd_data = NULL;
- while (current_element != NULL)
- {
- wnd_data = current_element->data;
-
- if ( (wnd_data->hwnd == hwndDlg || wnd_data->hwnd == NULL) && message == wnd_data->message)
- {
- wnd_data->func(notify_data->parent, param1, param2);
- }
-
- current_element = g_list_next(current_element);
- }
- }
- return FALSE;
-}
diff --git a/navit/gui/win32/win32_gui_notify.h b/navit/gui/win32/win32_gui_notify.h
deleted file mode 100644
index 7c791e15b..000000000
--- a/navit/gui/win32/win32_gui_notify.h
+++ /dev/null
@@ -1,18 +0,0 @@
-
-enum message_id
-{
- WINDOW_CREATE,
- WINDOW_SIZE,
- WINDOW_DESTROY,
- DBLCLICK,
- CLICK,
- CHANGE,
- BUTTON_CLICK,
- INVALID
-
-};
-
-struct datawindow_priv;
-struct notify_priv* win32_gui_notify_new();
-void win32_gui_notify(struct notify_priv* notify, HWND hwnd, int message_id, void(*func)(struct datawindow_priv *parent, int param1, int param2));
-LRESULT CALLBACK message_handler(HWND hwnd, UINT win_message, WPARAM wParam, LPARAM lParam);
diff --git a/navit/icons/CMakeLists.txt b/navit/icons/CMakeLists.txt
deleted file mode 100644
index 6d40f2a92..000000000
--- a/navit/icons/CMakeLists.txt
+++ /dev/null
@@ -1,146 +0,0 @@
-macro(convert_to_png IMAGE_INPUT IMAGE_OUTPUT SCALE)
- get_filename_component(FILE_EXT ${IMAGE_INPUT} EXT)
- string(TOUPPER ${FILE_EXT} FILE_TYPE)
- string(REGEX REPLACE "^\\." "" FILE_TYPE ${FILE_TYPE})
- if(${IMAGE_CONVERTER_${FILE_TYPE}} MATCHES "rsvg-convert")
- if (${SCALE} GREATER 0)
- set(SCALE_ARGS --width=${SCALE} --height=${SCALE})
- else()
- set(SCALE_ARGS)
- endif()
- set(COMMAND_ARGS ${SCALE_ARGS} --output ${IMAGE_OUTPUT} ${IMAGE_INPUT})
- elseif(${IMAGE_CONVERTER_${FILE_TYPE}} MATCHES "convert")
- if (${SCALE} GREATER 0)
- set(SCALE_ARGS -resize ${SCALE}x${SCALE})
- else()
- set(SCALE_ARGS)
- endif()
- set(COMMAND_ARGS -background none ${IMAGE_INPUT} ${SCALE_ARGS} ${IMAGE_OUTPUT})
- elseif(${IMAGE_CONVERTER_${FILE_TYPE}} MATCHES "ksvgtopng")
- set (NEW_SCALE ${SCALE})
- if (${SCALE} EQUAL 0)
- file(STRINGS ${IMAGE_INPUT} NEW_SCALE_LINE REGEX "[^-]width=\"[0-9pxt.]*\"")
- string(REGEX REPLACE ".*width=\"([0-9]*).*" "\\1" NEW_SCALE ${NEW_SCALE_LINE})
- endif()
- set(COMMAND_ARGS ${NEW_SCALE} ${NEW_SCALE} ${IMAGE_INPUT} ${IMAGE_OUTPUT})
- elseif(${IMAGE_CONVERTER_${FILE_TYPE}} MATCHES "inkscape")
- if (${SCALE} GREATER 0)
- set(SCALE_ARGS --export-width=${SCALE} --export-height=${SCALE})
- else()
- set(SCALE_ARGS)
- endif()
- set(COMMAND_ARGS --without-gui --export-background-opacity=0 --export-png ${IMAGE_OUTPUT} ${SCALE_ARGS} ${IMAGE_INPUT})
- else()
- message(FATAL_ERROR "no svg2png converter defined here.")
- endif()
-
- add_custom_command (
- OUTPUT ${IMAGE_OUTPUT}
- DEPENDS ${IMAGE_INPUT}
- COMMAND ${IMAGE_CONVERTER_${FILE_TYPE}} ${COMMAND_ARGS}
- )
-endmacro()
-
-macro(add_scale_targets IMAGE_SRC IMAGE_NAME)
- string(REPLACE "," ";" SCALES "${ARGN}")
- set(add_scale_targets_is_first_scale 1)
- foreach (CURRENT_SCALE ${SCALES})
- if(add_scale_targets_is_first_scale EQUAL 1)
- set (IMAGE_DST ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_NAME}.png)
- set(add_scale_targets_is_first_scale 0)
- elseif (${CURRENT_SCALE} EQUAL 0)
- set (IMAGE_DST ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_NAME}.png)
- message_error( "Image size value of 0 to leave image unscaled can only be given as the first value in row, e.g. -D svg2png_scaling=0,16,32 " )
- else()
- set (IMAGE_DST ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_NAME}_${CURRENT_SCALE}_${CURRENT_SCALE}.png)
- endif()
-
- if(NOT CURRENT_SCALE EQUAL -1)
- convert_to_png(
- ${CMAKE_CURRENT_SOURCE_DIR}/${IMAGE_SRC}
- ${IMAGE_DST}
- ${CURRENT_SCALE}
- )
- list(APPEND IMAGE_TARGETS ${IMAGE_DST})
- endif()
- endforeach()
-endmacro()
-
-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/86x86/navit.png DESTINATION share/icons/hicolor/86x86/apps RENAME ${PACKAGE}.png)
-install(FILES desktop_icons/108x108/navit.png DESTINATION share/icons/hicolor/108x108/apps RENAME ${PACKAGE}.png)
-install(FILES desktop_icons/128x128/navit.png DESTINATION share/icons/hicolor/128x128/apps RENAME ${PACKAGE}.png)
-install(FILES desktop_icons/256x256/navit.png DESTINATION share/icons/hicolor/256x256/apps RENAME ${PACKAGE}.png)
-#install(FILES bench.xpm DESTINATION )
-
-if (USE_SVG OR SVG2PNG)
- FILE(GLOB SVG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.svg" "*.svgz")
-
- if(USE_SVG)
- list(APPEND IMAGES_TO_COPY ${SVG_FILES})
- endif(USE_SVG)
- if(SVG2PNG)
- list(APPEND FILES_TO_PNG ${SVG_FILES})
- endif(SVG2PNG)
-endif()
-
-FILE(GLOB XPM_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.xpm")
-if(XPM2PNG)
- foreach (IMAGE_SRC ${SVG_FILES})
- string(REGEX REPLACE ".[a-z]*\$" "" IMAGE ${IMAGE_SRC})
- list(APPEND SVG_FILES_BASENAMES ${IMAGE})
- endforeach()
- foreach (IMAGE_SRC ${XPM_FILES})
- string(REGEX REPLACE ".[a-z]*\$" "" IMAGE ${IMAGE_SRC})
- list(FIND SVG_FILES_BASENAMES ${IMAGE} DUP_IMG)
- if ( ${DUP_IMG} LESS 0 )
- list(APPEND FILES_TO_PNG ${IMAGE_SRC})
- else()
- message(STATUS "image '${IMAGE}': XPM version skipped in favor of SVG")
- endif()
- endforeach()
-else()
- list(APPEND IMAGES_TO_COPY ${XPM_FILES})
-endif(XPM2PNG)
-
-foreach (IMAGE_SRC ${FILES_TO_PNG})
- string(REGEX REPLACE ".[a-z]*\$" "" IMAGE ${IMAGE_SRC})
-
- if ( IMAGE_SRC MATCHES ".*svgz*" )
- if ( DEFINED svg2png_scaling_nav AND ${IMAGE} MATCHES "^nav_")
- add_scale_targets(${IMAGE_SRC} ${IMAGE} ${svg2png_scaling_nav})
- elseif( DEFINED svg2png_scaling_flag AND ${IMAGE} MATCHES "^country_")
- add_scale_targets(${IMAGE_SRC} ${IMAGE} ${svg2png_scaling_flag})
- elseif( DEFINED svg2png_scaling)
- add_scale_targets(${IMAGE_SRC} ${IMAGE} ${svg2png_scaling})
- endif()
- else()
- add_scale_targets(${IMAGE_SRC} ${IMAGE} 0)
- endif()
-
-endforeach()
-
-foreach (IMAGE_FILE ${IMAGES_TO_COPY})
- add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_FILE}"
- DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${IMAGE_FILE}"
- COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/${IMAGE_FILE}"
- "${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_FILE}"
- )
- list(APPEND IMAGE_TARGETS "${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_FILE}")
-endforeach()
-
-add_custom_target(images ALL DEPENDS ${IMAGE_TARGETS})
-add_custom_target(images_resource COMMAND mkdir -p ../resources/share/navit/xpm COMMAND cp ${IMAGE_TARGETS} ../resources/share/navit/xpm)
-add_dependencies(images_resource images)
-
-install(
- FILES ${IMAGE_TARGETS}
- DESTINATION ${IMAGE_DIR}
- PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
-)
diff --git a/navit/icons/airport.svg b/navit/icons/airport.svg
deleted file mode 100644
index c21edce78..000000000
--- a/navit/icons/airport.svg
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="airport.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/airport.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3181">
- <stop
- id="stop3183"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:0;" />
- <stop
- id="stop3185"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3169">
- <stop
- style="stop-color:#d2d2d2;stop-opacity:1;"
- offset="0"
- id="stop3171" />
- <stop
- style="stop-color:#656565;stop-opacity:1;"
- offset="1"
- id="stop3173" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#0083f4"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="15.839192"
- inkscape:cx="5.4622369"
- inkscape:cy="14.72009"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1024"
- inkscape:window-height="699"
- inkscape:window-x="0"
- inkscape:window-y="25">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="fill:#0083f4;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-dasharray:none"
- d="M 10.90625 1.0625 C 10.2601 1.0859246 9.6526591 1.7005043 9.0625 2.84375 L 9.0625 6.9375 L 1 11.78125 L 1 14.4375 L 9.0625 12.8125 L 9.0625 17.75 L 5.78125 19.71875 L 5.78125 21.09375 L 10.96875 20.0625 L 16.125 21.09375 L 16.125 19.71875 L 12.9375 17.8125 L 12.9375 12.8125 L 21 14.4375 L 21 11.78125 L 12.9375 6.9375 L 12.9375 2.84375 C 12.228331 1.6068057 11.5524 1.0390754 10.90625 1.0625 z "
- id="rect3173" />
- <path
- style="fill:#215430;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M -25.973036,9.4879786 L -15.973037,3.4879785 L -5.973038,9.4879786 L -5.973038,12.16655 L -15.973037,10.16655 L -25.973036,12.16655 L -25.973036,9.4879786 z"
- id="path2390"
- sodipodi:nodetypes="ccccccc" />
- <path
- style="fill:#215430;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M -21.182288,17.443887 L -16.01768,14.345121 L -10.853072,17.443887 L -10.853072,18.827264 L -16.01768,17.794342 L -21.182288,18.827264 L -21.182288,17.443887 z"
- id="path2392"
- sodipodi:nodetypes="ccccccc" />
- <path
- style="fill:#215430;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M -17.915001,0.56833497 C -16.734683,-1.7181565 -15.44941,-1.9055536 -14.031073,0.56833497 L -14.031073,17.755835 L -17.915001,17.755835 L -17.915001,0.56833497 z"
- id="path2394"
- sodipodi:nodetypes="ccccc" />
- </g>
-</svg>
diff --git a/navit/icons/atm.svg b/navit/icons/atm.svg
deleted file mode 100644
index 965aeb72a..000000000
--- a/navit/icons/atm.svg
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="atm.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/bank.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3173">
- <stop
- style="stop-color:#33b400;stop-opacity:1;"
- offset="0"
- id="stop3175" />
- <stop
- style="stop-color:#93cb00;stop-opacity:1;"
- offset="1"
- id="stop3177" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3173"
- id="linearGradient3179"
- x1="1.0178572"
- y1="6.2410717"
- x2="8.7142859"
- y2="6.2410717"
- gradientUnits="userSpaceOnUse"
- spreadMethod="reflect" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3173"
- id="linearGradient3182"
- gradientUnits="userSpaceOnUse"
- spreadMethod="reflect"
- x1="1.0178572"
- y1="6.2410717"
- x2="8.7142859"
- y2="6.2410717"
- gradientTransform="matrix(4.9163101,0,0,4.923007,-0.9404501,-77.772264)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#22a638"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="26.166924"
- inkscape:cy="-1.0638383"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1432"
- inkscape:window-height="871"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <dc:description>edited by jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g3706"
- transform="matrix(0.23156491,0,0,0.23156879,-1.3196731,16.811686)">
- <path
- inkscape:connector-curvature="0"
- id="rect3171-3"
- d="m 93.115454,-68.506529 c -6.41813,4.083022 -12.883096,8.999986 -20.642582,10.628906 -14.394864,4.310286 -29.499685,-1.66533 -43.945312,2.636719 -7.749823,2.120316 -16.947506,6.103907 -19.980525,13.962922 -0.718593,11.850608 -0.716693,23.986857 0.06646,35.7070003 3.041161,5.14324299 8.388048,0.160839 11.230469,-2.375 3.69021,-2.015642 8.758555,-5.8092673 12.332031,-5.3105473 1.116874,2.368895 1.315032,3.3709883 -1.839844,3.019532 -7.503661,0.2477903 -17.253367,6.6571163 -14.267578,15.1132811 5.414768,10.6794269 20.884613,11.2351629 30.291016,5.9550779 2.245514,-2.5802681 4.517464,2.361533 7.376955,2.06836 6.644303,2.545535 13.797187,-1.008637 20.185547,2.089843 9.209478,2.466214 23.172003,-0.916742 24.464843,-11.8769528 -0.0316,-5.0224589 -5.08259,-8.0588329 -8.56836,-10.2656249 2.96603,-4.4153123 0.88832,-10.5798253 -3.17578,-13.5410163 5.17133,-3.23017 12.83119,-7.059092 11.04883,-14.43164 -0.37435,-10.60121 1.43374,-21.716769 -1.13683,-32.015601 -0.71307,-0.907799 -2.23846,-1.357718 -3.43934,-1.365259 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.63547659;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc"
- id="rect3171"
- d="m 11.789282,-40.234335 c 11.265416,-13.337664 26.152404,-12.169306 40.822934,-11.867963 13.097456,1.663744 26.558815,-0.680943 40.822933,-11.867964 l 0,33.845673 c -12.629658,10.321566 -25.864913,16.701363 -40.822933,11.867965 -13.607645,-2.2322 -27.215289,0.07541 -40.822934,11.867966 l 0,-33.845677 z"
- style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3182);fill-opacity:1;fill-rule:evenodd;stroke:#0d4300;stroke-width:4.63547659;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="-11.732427"
- cx="72.478546"
- id="path3186"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="2.3395565"
- cx="33.490875"
- id="path2395"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="3.9950845"
- cx="79.431755"
- id="path3184"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="2.3395565"
- cx="61.303734"
- id="path3169"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="-2.9179978"
- cx="52.03278"
- id="path3167"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <text
- id="text2394"
- y="-24.30253"
- x="41.702309"
- style="font-style:normal;font-weight:normal;font-size:33.71606064px;font-family:'Bitstream Vera Sans';fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- xml:space="preserve"><tspan
- y="-24.30253"
- x="41.702309"
- id="tspan2396"
- sodipodi:role="line">$</tspan></text>
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="-13.698995"
- cx="50.377254"
- id="path3188"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/attraction.svg b/navit/icons/attraction.svg
deleted file mode 100644
index aa76cf906..000000000
--- a/navit/icons/attraction.svg
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="attraction.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/attraction.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3151">
- <stop
- style="stop-color:#6cff81;stop-opacity:1;"
- offset="0"
- id="stop3153" />
- <stop
- style="stop-color:#109026;stop-opacity:1;"
- offset="1"
- id="stop3155" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3151"
- id="linearGradient3157"
- x1="5.8379931"
- y1="5.0950255"
- x2="11.171147"
- y2="8.0432262"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313708"
- inkscape:cx="23.691613"
- inkscape:cy="7.1163305"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1136"
- inkscape:window-height="751"
- inkscape:window-x="138"
- inkscape:window-y="27"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g3366"
- transform="matrix(0.2184765,0,0,0.2184765,-0.17834745,16.924444)">
- <path
- transform="matrix(6.9468004,0,0,7.3031548,-7.1464034,-81.930952)"
- d="M 12.410715,13.767857 8.3912092,11.652205 4.3696665,13.763982 5.1396758,9.2874321 1.8885314,6.1152927 6.383929,5.4642852 l 2.012225,-4.072267 2.008299,4.0742047 4.494768,0.65534 -3.2542,3.1690046 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="1.5712783"
- sodipodi:arg1="0.94295973"
- sodipodi:r2="3.4200625"
- sodipodi:r1="6.8401251"
- sodipodi:cy="8.2321424"
- sodipodi:cx="8.3928576"
- sodipodi:sides="5"
- id="path2383-7"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.69094229;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- sodipodi:type="star" />
- <path
- transform="matrix(5.6541004,0,0,5.9441423,3.5277342,-70.899029)"
- d="M 12.410715,13.767857 8.3912092,11.652205 4.3696665,13.763982 5.1396758,9.2874321 1.8885314,6.1152927 6.383929,5.4642852 l 2.012225,-4.072267 2.008299,4.0742047 4.494768,0.65534 -3.2542,3.1690046 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="1.5712783"
- sodipodi:arg1="0.94295973"
- sodipodi:r2="3.4200625"
- sodipodi:r1="6.8401251"
- sodipodi:cy="8.2321424"
- sodipodi:cx="8.3928576"
- sodipodi:sides="5"
- id="path2383"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient3157);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.69094229;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- sodipodi:type="star" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/autoservice.svg b/navit/icons/autoservice.svg
deleted file mode 100644
index 630d74d2c..000000000
--- a/navit/icons/autoservice.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
- sodipodi:docname="autoservice.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="12.823529"
- inkscape:cy="18.294118"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="21.018182"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0"
- inkscape:measure-start="0,0"
- inkscape:measure-end="0,0" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <path
- d="m 8.6250917,8.7062005 c -0.9707376,0 -1.4856922,0.5299594 -1.7234264,1.150296 L 5.6397034,13.114997 C 5.1394385,13.179143 4.252621,13.766362 4.252621,14.878783 l 0,4.143757 1.228328,0 0,1.325194 c 0,1.630379 2.307318,1.611179 2.3073187,0 l 0,-1.325194 4.1504833,0 0.0013,0 4.150481,0 0,1.325194 c 0,1.611179 2.307307,1.630379 2.307321,0 l 0,-1.325194 1.228326,0 0,-4.143757 c 0,-1.11242 -0.886811,-1.699639 -1.387085,-1.763786 L 16.975831,9.8564965 C 16.738097,9.2361599 16.223146,8.7062005 15.252402,8.7062005 l -1.783964,0 -3.037862,0 -1.8054905,0 z m -0.0148,1.1866209 3.3257684,0 0.0027,0 0.0013,0 3.327111,0 c 0.41601,0.00392 0.594182,0.2640376 0.713049,0.6242546 l 0.951179,2.564285 -4.991339,0 -0.0013,0 -0.0027,0 -4.9899972,0 0.9511803,-2.564285 C 8.0161106,10.156859 8.1942372,9.8966951 8.6102916,9.8928214 z M 6.6716065,14.328524 c 0.5886503,0 1.0655371,0.491138 1.0655371,1.097826 -4e-7,0.606733 -0.4768868,1.099172 -1.0655371,1.099172 -0.5886073,0 -1.0655378,-0.492439 -1.0655378,-1.099172 0,-0.606687 0.4769305,-1.097826 1.0655378,-1.097826 z m 10.5356355,0 c 0.58865,0 1.06554,0.491139 1.065537,1.097826 0,0.606733 -0.476887,1.099172 -1.065537,1.099172 -0.588608,0 -1.066886,-0.492439 -1.066886,-1.099172 0,-0.606688 0.478278,-1.097826 1.066886,-1.097826 z"
- id="path2301"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- <g
- id="g5312"
- transform="matrix(0.27456542,-0.26935418,0.26567294,0.27081299,-1.0556809,5.1081411)">
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccc"
- id="path5302"
- d="M 8.1359163,8.5385328 C 6.1926724,10.556239 6.212511,13.730389 8.2022073,15.720086 l 2.6516507,2.651651 c 1.808973,1.808973 4.41263,2.181887 6.419529,0.739927 l 19.025379,19.049275 c 0.886329,0.886329 2.295655,0.886329 3.181981,0 l 1.767766,-1.767766 c 0.886329,-0.886329 0.88633,-2.295652 0,-3.181981 L 22.200387,14.184664 c 1.44196,-2.006898 1.069046,-4.6105562 -0.739927,-6.4195292 l -2.651651,-2.651651 c -1.989696,-1.989696 -5.163846,-2.009536 -7.181553,-0.066291 l 5.325398,5.2812042 v 2.12132 L 15.53844,13.863931 H 13.41712 C 11.666497,12.081602 9.8444463,10.356837 8.1359163,8.5385328 Z"
- style="opacity:1;fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:0.99482751;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccc"
- id="path5306"
- d="m 8.2877553,10.137849 4.7598297,4.75983 2.842267,-0.05734 2.101713,-2.101714 -0.06766,-2.8422672 -4.699747,-4.699747 c 1.019168,-0.979955 3.507085,-0.803658 4.088753,-0.221113 l 4.193597,4.193596 c 1.098455,1.0984552 0.384409,3.8219112 -0.642136,5.0453652 l 19.888085,20.013636 c 0.390744,0.398067 0.250239,1.139884 -0.04652,1.47545 l -2.058821,1.933821 c -0.308637,0.373993 -1.179774,0.435486 -1.394661,0.09073 L 17.426869,17.776964 c -1.0455,1.0455 -4.031653,1.614582 -5.063104,0.593749 L 8.1407313,14.147679 c -0.9509923,-0.711609 -0.651984,-3.29822 0.147024,-4.00983 z"
- style="opacity:0.7;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99482703px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/navit/icons/bahai.svg b/navit/icons/bahai.svg
deleted file mode 100644
index 57abf2d5c..000000000
--- a/navit/icons/bahai.svg
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="bahai.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="32.208528"
- inkscape:cy="19.1875"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="-3"
- inkscape:window-y="-3"
- inkscape:zoom="8"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2466"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3333"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3401"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3464"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3581"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4312"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 L 1.704,516.927 C 1.704,557.771 22.599,579.156 63.896,579.156 L 515.92,579.156 C 557.227,579.156 578.149,558.841 578.149,516.927 L 578.149,66.804 C 578.149,24.203 557.227,1.768 514.628,1.768 C 514.624,1.768 66.133,1.625 66.275,1.768 z "
- id="path1329"
- style="fill:#111;fill-opacity:0;stroke:#eee;stroke-opacity:0;stroke-width:3.40799999" />
- </g>
- <path
- d="M 211.93658,502.90415 C 211.62064,467.41944 210.72008,437.74441 209.93535,436.95967 C 208.44146,435.46579 144.37645,444.49134 106.13848,451.58271 C 84.17773,455.65541 76.216627,454.51689 76.216627,447.30367 C 76.216627,445.27966 94.355879,421.12254 116.52608,393.62116 L 156.83549,343.6186 L 143.36752,335.6723 C 135.96011,331.30184 129.10233,327.72599 128.12801,327.72599 C 127.15365,327.72599 117.24965,321.8749 106.11914,314.72355 C 94.988602,307.57217 77.514623,296.99986 67.288108,291.22949 C 52.866925,283.09223 48.962908,278.86966 49.890838,272.41255 C 50.86408,265.64018 54.692944,263.545 70.417537,261.18033 C 110.93294,255.08765 172.86817,241.35355 172.86817,238.46195 C 172.86817,236.80159 164.00939,210.0363 153.18198,178.98348 C 133.88137,123.62964 132.11121,111.22655 143.51188,111.22655 C 146.6364,111.22655 171.68631,124.2745 199.17838,140.22202 C 226.67049,156.16951 250.83333,169.21746 252.8736,169.21746 C 254.91392,169.21746 261.5262,155.01809 267.56758,137.66334 C 291.78321,68.100199 299.49089,51.353397 307.88446,50.064915 C 312.31887,49.384208 316.70051,51.123944 317.62144,53.93098 C 319.32297,59.117252 342.18875,122.83827 353.09507,152.78671 C 356.38602,161.82364 360.50716,169.21746 362.25312,169.21746 C 363.99906,169.21746 386.90657,156.47858 413.15867,140.90877 C 467.8955,108.44507 471.29659,106.90623 478.48757,111.35049 C 482.7678,113.99581 479.86579,126.00059 463.38728,173.8163 C 452.16794,206.37145 442.66697,234.59806 442.27398,236.54207 C 441.6009,239.87157 508.60064,254.63111 548.84267,260.01835 C 564.46924,262.11026 567.18597,263.73796 567.06894,270.93845 C 566.95988,277.64765 556.1501,285.7836 514.87711,310.22028 C 486.24724,327.1713 462.82279,342.51553 462.82279,344.3186 C 462.82279,346.12165 480.22008,369.0158 501.48342,395.19457 C 522.74675,421.3733 540.14402,444.73799 540.14402,447.11613 C 540.14402,453.23409 525.13482,452.53767 466.68886,443.70784 C 438.53975,439.45517 413.10639,435.97573 410.17029,435.97573 C 405.83914,435.97573 404.83187,448.3764 404.83187,501.69878 C 404.83187,585.22233 404.77291,585.2434 350.707,521.02908 C 329.22354,495.51307 310.07427,474.63634 308.15303,474.63634 C 306.23179,474.63634 287.69024,495.51307 266.94955,521.02908 C 239.83003,554.39257 226.89015,567.42181 220.87507,567.42181 C 212.6574,567.42181 212.5009,566.29242 211.93658,502.90415 z M 277.49207,443.70784 C 291.13478,426.69718 304.92554,412.79323 308.13822,412.81017 C 311.35088,412.82714 325.28765,426.70696 339.10882,443.65423 L 364.23823,474.46743 L 365.20396,440.72383 C 366.53698,394.14787 367.92598,389.57838 380.74263,389.60456 C 386.54954,389.61637 397.3897,391.18979 404.83187,393.10098 C 425.44692,398.39506 451.22462,400.80922 451.22462,397.44582 C 451.22462,395.79606 440.60987,381.14847 427.63629,364.8957 C 414.66273,348.6429 404.95329,332.98586 406.05989,330.10222 C 407.16643,327.21862 422.21024,316.51048 439.49057,306.30635 C 456.77093,296.10226 471.66637,286.52866 472.59155,285.03165 C 473.51675,283.53467 465.17328,280.94259 454.05055,279.27152 C 442.92776,277.60041 432.95746,275.99074 431.89429,275.69449 C 430.83113,275.3982 421.69756,273.82954 411.59748,272.20855 C 388.9489,268.57362 388.46579,264.79834 404.84498,219.44001 C 411.23117,201.7549 415.69933,186.52838 414.77421,185.60328 C 413.84911,184.67815 398.02215,192.79098 379.60319,203.63178 C 361.18419,214.47258 344.59912,223.34233 342.74748,223.34233 C 337.93121,223.34233 333.47016,213.8733 321.2983,177.81432 C 315.39571,160.32805 309.4772,146.02111 308.146,146.02111 C 306.81483,146.02111 299.75397,162.72237 292.45528,183.13506 C 285.15653,203.54771 277.14846,221.07807 274.65948,222.09139 C 270.4338,223.81178 256.43727,216.95846 216.36136,193.54594 C 207.32445,188.26652 199.93059,185.71341 199.93059,187.87238 C 199.93059,190.03134 205.14979,206.5848 211.52879,224.65788 C 217.9078,242.73094 223.12697,260.18802 223.12697,263.45137 C 223.12697,269.6775 213.90869,272.20012 164.08277,279.60891 C 153.93493,281.11784 144.80346,283.69333 143.79055,285.33227 C 142.77763,286.97116 147.67397,291.52613 154.67127,295.45435 C 193.97119,317.51704 207.658,326.26531 209.27517,330.35586 C 210.26737,332.86542 206.05885,341.56406 199.9229,349.68614 C 193.787,357.80825 182.47416,372.83977 174.7833,383.08951 L 160.79987,401.72544 L 179.39872,399.17937 C 189.62807,397.77899 204.08663,395.05667 211.52879,393.1297 C 218.97096,391.20271 229.84426,389.61637 235.69167,389.60456 L 246.32334,389.58298 L 246.37612,423.41103 C 246.42091,452.11232 248.84502,474.63634 251.88915,474.63634 C 252.32803,474.63634 263.84935,460.71852 277.49207,443.70784 z"
- id="path1873"
- sodipodi:nodetypes="cssscccssssssssssssssssssssssssssssssssccscccssssssssssssssssssssssssssscccscccsc"
- style="opacity:0.25;fill:#ffffff;fill-opacity:0" />
- <path
- d="m 6.9497884,18.870696 c -0.01301,-1.461279 -0.050094,-2.683312 -0.082408,-2.715628 -0.061517,-0.06152 -2.6997502,0.310158 -4.27441,0.602185 -0.904355,0.167715 -1.2321974,0.12083 -1.2321974,-0.176214 0,-0.08335 0.7469838,-1.078152 1.659964,-2.210674 L 4.6807002,12.311234 4.1260819,11.984001 C 3.8210416,11.804023 3.5386342,11.656768 3.4985113,11.656768 c -0.040129,0 -0.4479764,-0.240951 -0.906337,-0.535447 C 2.1338134,10.826823 1.4142254,10.39145 0.99309292,10.153822 0.39922051,9.8187265 0.23845138,9.6448385 0.27666383,9.3789306 0.31674245,9.1000412 0.47441695,9.0137606 1.1219644,8.9163822 2.7904094,8.6654826 5.3409351,8.099906 5.3409351,7.9808283 c 0,-0.068372 -0.3648092,-1.1705836 -0.8106876,-2.4493549 -0.79481,-2.2794997 -0.8677054,-2.790266 -0.3982201,-2.790266 0.1286695,0 1.1602376,0.5373217 2.2923757,1.1940492 1.1321396,0.6567257 2.1271774,1.1940474 2.2111978,1.1940474 0.084022,0 0.3563182,-0.584738 0.6051053,-1.2994154 0.9972128,-2.8646465 1.3146178,-3.55428863 1.6602698,-3.60734904 0.182612,-0.0280316 0.36305,0.0436109 0.400974,0.15920687 0.07007,0.21357281 1.011696,2.83763767 1.460823,4.07093037 0.135523,0.372145 0.305233,0.6766272 0.377132,0.6766272 0.0719,0 1.015243,-0.5245939 2.096319,-1.1657673 2.254091,-1.3368718 2.394149,-1.4002418 2.690277,-1.2172247 0.176263,0.108936 0.05677,0.6032984 -0.621836,2.5723748 -0.462019,1.3406379 -0.853274,2.5030243 -0.869458,2.5830797 -0.02772,0.1371104 2.731367,0.7449158 4.388554,0.9667652 0.643511,0.086144 0.755387,0.1531749 0.750567,0.4496946 -0.0045,0.2762891 -0.449642,0.6113317 -2.149285,1.6176467 -1.178994,0.698053 -2.143625,1.329936 -2.143625,1.404187 0,0.07425 0.716429,1.017043 1.592066,2.0951 0.875635,1.078053 1.592063,2.040223 1.592063,2.138156 0,0.25194 -0.618088,0.223261 -3.024923,-0.140356 -1.159194,-0.175126 -2.206554,-0.318412 -2.327464,-0.318412 -0.178359,0 -0.219839,0.510666 -0.219839,2.706511 0,3.439543 -0.0025,3.440411 -2.228889,0.79603 -0.884701,-1.050762 -1.673279,-1.910477 -1.752396,-1.910477 -0.07911,0 -0.842668,0.859715 -1.696781,1.910477 -1.1167955,1.373928 -1.6496673,1.910479 -1.8973708,1.910479 -0.3384079,0 -0.3448525,-0.04651 -0.3680924,-2.656872 z M 9.6493983,16.43296 c 0.5618137,-0.700507 1.1297247,-1.273079 1.2620237,-1.27238 0.1323,7.03e-4 0.706224,0.572275 1.275386,1.270173 l 1.034842,1.268905 0.03977,-1.38958 c 0.05489,-1.918023 0.112093,-2.106197 0.639892,-2.105119 0.23913,4.78e-4 0.685534,0.06528 0.992007,0.143986 0.848939,0.218013 1.910477,0.317429 1.910477,0.178921 0,-0.06793 -0.437121,-0.671132 -0.971379,-1.340431 -0.534259,-0.669298 -0.934099,-1.314063 -0.888529,-1.432813 0.04556,-0.118748 0.665079,-0.559715 1.376694,-0.979926 0.711614,-0.420211 1.325016,-0.814456 1.363115,-0.876104 0.0381,-0.061647 -0.305489,-0.1683899 -0.76353,-0.2372051 C 16.462123,9.5925706 16.051541,9.5262829 16.007761,9.5140828 15.963977,9.501879 15.587854,9.4372877 15.171925,9.3705304 14.239246,9.2208416 14.219352,9.0653738 14.893855,7.197495 c 0.262986,-0.7282831 0.446988,-1.3553189 0.408891,-1.3934145 -0.0381,-0.038099 -0.68986,0.2959929 -1.448361,0.7424225 -0.758505,0.4464306 -1.441486,0.8116912 -1.517737,0.8116912 -0.198337,0 -0.382045,-0.3899393 -0.883289,-1.8748678 -0.243072,-0.7200939 -0.4868,-1.3092606 -0.541618,-1.3092606 -0.05482,0 -0.345589,0.6877663 -0.646152,1.5283723 C 9.9650228,6.5430413 9.6352452,7.2649503 9.5327477,7.3066799 9.3587321,7.3775272 8.7823474,7.0953031 7.1320002,6.1311632 6.7598561,5.9137542 6.4553732,5.8086158 6.4553732,5.897523 c 0,0.088908 0.2149291,0.7705873 0.4776199,1.5148459 0.2626907,0.7442585 0.4776191,1.4631497 0.4776191,1.5975356 0,0.2563959 -0.3796134,0.3602786 -2.4314716,0.6653762 -0.4178931,0.062142 -0.7939314,0.1681981 -0.8356438,0.2356913 -0.041716,0.06749 0.1599215,0.255066 0.4480734,0.416832 1.6183915,0.908554 2.1820211,1.268812 2.2486177,1.437262 0.040864,0.103355 -0.1324501,0.46156 -0.3851312,0.796033 -0.2526803,0.334472 -0.718549,0.953477 -1.035262,1.375566 l -0.5758452,0.767439 0.7659108,-0.104849 c 0.4212494,-0.05767 1.0166606,-0.169774 1.3231328,-0.249128 0.3064723,-0.07935 0.754241,-0.144681 0.9950402,-0.145168 l 0.4378173,-8.8e-4 0.00217,1.393058 c 0.00181,1.181934 0.1016702,2.109484 0.2270295,2.109484 0.018069,0 0.4925276,-0.573142 1.054342,-1.273651 z"
- id="path4757"
- sodipodi:nodetypes="cssscccssssssssssssssssssssssssssssssssccscccssssssssssssssssssssssssssscccscccsc"
- style="fill:#5e8019"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/bank.svg b/navit/icons/bank.svg
deleted file mode 100644
index 965aeb72a..000000000
--- a/navit/icons/bank.svg
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="atm.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/bank.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3173">
- <stop
- style="stop-color:#33b400;stop-opacity:1;"
- offset="0"
- id="stop3175" />
- <stop
- style="stop-color:#93cb00;stop-opacity:1;"
- offset="1"
- id="stop3177" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3173"
- id="linearGradient3179"
- x1="1.0178572"
- y1="6.2410717"
- x2="8.7142859"
- y2="6.2410717"
- gradientUnits="userSpaceOnUse"
- spreadMethod="reflect" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3173"
- id="linearGradient3182"
- gradientUnits="userSpaceOnUse"
- spreadMethod="reflect"
- x1="1.0178572"
- y1="6.2410717"
- x2="8.7142859"
- y2="6.2410717"
- gradientTransform="matrix(4.9163101,0,0,4.923007,-0.9404501,-77.772264)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#22a638"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="26.166924"
- inkscape:cy="-1.0638383"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1432"
- inkscape:window-height="871"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <dc:description>edited by jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g3706"
- transform="matrix(0.23156491,0,0,0.23156879,-1.3196731,16.811686)">
- <path
- inkscape:connector-curvature="0"
- id="rect3171-3"
- d="m 93.115454,-68.506529 c -6.41813,4.083022 -12.883096,8.999986 -20.642582,10.628906 -14.394864,4.310286 -29.499685,-1.66533 -43.945312,2.636719 -7.749823,2.120316 -16.947506,6.103907 -19.980525,13.962922 -0.718593,11.850608 -0.716693,23.986857 0.06646,35.7070003 3.041161,5.14324299 8.388048,0.160839 11.230469,-2.375 3.69021,-2.015642 8.758555,-5.8092673 12.332031,-5.3105473 1.116874,2.368895 1.315032,3.3709883 -1.839844,3.019532 -7.503661,0.2477903 -17.253367,6.6571163 -14.267578,15.1132811 5.414768,10.6794269 20.884613,11.2351629 30.291016,5.9550779 2.245514,-2.5802681 4.517464,2.361533 7.376955,2.06836 6.644303,2.545535 13.797187,-1.008637 20.185547,2.089843 9.209478,2.466214 23.172003,-0.916742 24.464843,-11.8769528 -0.0316,-5.0224589 -5.08259,-8.0588329 -8.56836,-10.2656249 2.96603,-4.4153123 0.88832,-10.5798253 -3.17578,-13.5410163 5.17133,-3.23017 12.83119,-7.059092 11.04883,-14.43164 -0.37435,-10.60121 1.43374,-21.716769 -1.13683,-32.015601 -0.71307,-0.907799 -2.23846,-1.357718 -3.43934,-1.365259 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.63547659;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc"
- id="rect3171"
- d="m 11.789282,-40.234335 c 11.265416,-13.337664 26.152404,-12.169306 40.822934,-11.867963 13.097456,1.663744 26.558815,-0.680943 40.822933,-11.867964 l 0,33.845673 c -12.629658,10.321566 -25.864913,16.701363 -40.822933,11.867965 -13.607645,-2.2322 -27.215289,0.07541 -40.822934,11.867966 l 0,-33.845677 z"
- style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3182);fill-opacity:1;fill-rule:evenodd;stroke:#0d4300;stroke-width:4.63547659;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="-11.732427"
- cx="72.478546"
- id="path3186"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="2.3395565"
- cx="33.490875"
- id="path2395"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="3.9950845"
- cx="79.431755"
- id="path3184"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="2.3395565"
- cx="61.303734"
- id="path3169"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="-2.9179978"
- cx="52.03278"
- id="path3167"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <text
- id="text2394"
- y="-24.30253"
- x="41.702309"
- style="font-style:normal;font-weight:normal;font-size:33.71606064px;font-family:'Bitstream Vera Sans';fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- xml:space="preserve"><tspan
- y="-24.30253"
- x="41.702309"
- id="tspan2396"
- sodipodi:role="line">$</tspan></text>
- <ellipse
- ry="8.2149277"
- rx="14.485865"
- cy="-13.698995"
- cx="50.377254"
- id="path3188"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b4a300;fill-opacity:1;fill-rule:evenodd;stroke:#433800;stroke-width:4.63547707;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/bar.svg b/navit/icons/bar.svg
deleted file mode 100644
index e81ba6ca1..000000000
--- a/navit/icons/bar.svg
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="bar.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/navit/icons/png/bar.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313708"
- inkscape:cx="16.673422"
- inkscape:cy="15.75252"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="892"
- inkscape:window-height="653"
- inkscape:window-x="540"
- inkscape:window-y="218"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:snap-global="false"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g3410"
- transform="matrix(0.21732933,0,0,0.21732688,2.4063677,16.673011)">
- <path
- inkscape:connector-curvature="0"
- id="path3157-3"
- d="m 38.646473,-74.476271 c -6.541856,-0.0089 -11.084439,6.296264 -17.660156,5.511719 -7.076765,0.91672 -13.038266,6.182308 -16.326176,11.996094 -5.49374001,0.469881 -4.40281001,7.553537 -3.78320001,11.328125 -0.38583,22.57608 -0.0377,45.29565185 -0.12109,67.927734 C 23.641272,22.191631 46.526673,22.090108 69.412098,21.994432 69.367108,14.168104 69.064322,6.1423728 69.177723,-1.5583022 81.943167,-4.9179532 85.560414,-21.616351 80.57616,-32.505568 c -1.378405,-3.631454 -4.279697,-6.702001 -7.054687,-9.03125 2.87129,-11.567792 -6.019201,-23.753224 -17.359375,-25.814453 -4.338541,-4.962636 -10.991271,-7.444471 -17.515625,-7.125 z"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.42937899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="17.288969"
- rx="17.333633"
- cy="-52.591404"
- cx="39.913322"
- id="path3157"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e5ff39;fill-opacity:1;fill-rule:evenodd;stroke:#aaaf00;stroke-width:4.42937899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="17.288969"
- rx="17.333633"
- cy="-47.352322"
- cx="23.892843"
- id="path3155"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e5ff39;fill-opacity:1;fill-rule:evenodd;stroke:#aaaf00;stroke-width:4.42937899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="17.288969"
- rx="17.333633"
- cy="-45.518642"
- cx="52.256969"
- id="path3159"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e5ff39;fill-opacity:1;fill-rule:evenodd;stroke:#aaaf00;stroke-width:4.42937899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="rect2381"
- d="M 4.2965851,-52.283183 63.98446,-51.759275 64.968052,18.57793 4.3635121,18.839883 4.2965851,-52.283183 Z"
- style="display:inline;overflow:visible;visibility:visible;fill:#b9d500;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3158"
- d="m 63.999909,-39.488949 c 18.362354,0.200048 19.413503,34.7110821 0.787894,34.9993372"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.85875797;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3161"
- d="m 17.610842,-40.946368 0,47.6756423"
- style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3163"
- d="m 26.727794,-40.946368 0,47.6756423"
- style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3165"
- d="m 35.014235,-40.946368 0,47.6756423"
- style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3160"
- d="m 43.872993,-40.946368 0,47.6756423"
- style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3162"
- d="m 52.731751,-40.946368 0,47.6756423"
- style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/beer.svg b/navit/icons/beer.svg
deleted file mode 100644
index e81ba6ca1..000000000
--- a/navit/icons/beer.svg
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="bar.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/navit/icons/png/bar.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313708"
- inkscape:cx="16.673422"
- inkscape:cy="15.75252"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="892"
- inkscape:window-height="653"
- inkscape:window-x="540"
- inkscape:window-y="218"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:snap-global="false"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g3410"
- transform="matrix(0.21732933,0,0,0.21732688,2.4063677,16.673011)">
- <path
- inkscape:connector-curvature="0"
- id="path3157-3"
- d="m 38.646473,-74.476271 c -6.541856,-0.0089 -11.084439,6.296264 -17.660156,5.511719 -7.076765,0.91672 -13.038266,6.182308 -16.326176,11.996094 -5.49374001,0.469881 -4.40281001,7.553537 -3.78320001,11.328125 -0.38583,22.57608 -0.0377,45.29565185 -0.12109,67.927734 C 23.641272,22.191631 46.526673,22.090108 69.412098,21.994432 69.367108,14.168104 69.064322,6.1423728 69.177723,-1.5583022 81.943167,-4.9179532 85.560414,-21.616351 80.57616,-32.505568 c -1.378405,-3.631454 -4.279697,-6.702001 -7.054687,-9.03125 2.87129,-11.567792 -6.019201,-23.753224 -17.359375,-25.814453 -4.338541,-4.962636 -10.991271,-7.444471 -17.515625,-7.125 z"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.42937899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="17.288969"
- rx="17.333633"
- cy="-52.591404"
- cx="39.913322"
- id="path3157"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e5ff39;fill-opacity:1;fill-rule:evenodd;stroke:#aaaf00;stroke-width:4.42937899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="17.288969"
- rx="17.333633"
- cy="-47.352322"
- cx="23.892843"
- id="path3155"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e5ff39;fill-opacity:1;fill-rule:evenodd;stroke:#aaaf00;stroke-width:4.42937899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <ellipse
- ry="17.288969"
- rx="17.333633"
- cy="-45.518642"
- cx="52.256969"
- id="path3159"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e5ff39;fill-opacity:1;fill-rule:evenodd;stroke:#aaaf00;stroke-width:4.42937899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="rect2381"
- d="M 4.2965851,-52.283183 63.98446,-51.759275 64.968052,18.57793 4.3635121,18.839883 4.2965851,-52.283183 Z"
- style="display:inline;overflow:visible;visibility:visible;fill:#b9d500;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3158"
- d="m 63.999909,-39.488949 c 18.362354,0.200048 19.413503,34.7110821 0.787894,34.9993372"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.85875797;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3161"
- d="m 17.610842,-40.946368 0,47.6756423"
- style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3163"
- d="m 26.727794,-40.946368 0,47.6756423"
- style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3165"
- d="m 35.014235,-40.946368 0,47.6756423"
- style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3160"
- d="m 43.872993,-40.946368 0,47.6756423"
- style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3162"
- d="m 52.731751,-40.946368 0,47.6756423"
- style="opacity:0.3;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.42937899px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/bench.svg b/navit/icons/bench.svg
deleted file mode 100644
index 6f2b40ff3..000000000
--- a/navit/icons/bench.svg
+++ /dev/null
@@ -1,410 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="bench.svg"
- inkscape:version="0.91 r13725"
- xml:space="preserve"
- id="Layer_1"
- viewBox="12.5 44.907 57.374999 31.795826"
- width="22"
- height="22"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- version="1.0"><sodipodi:namedview
- pagecolor="#ff00ff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="938"
- inkscape:window-height="689"
- id="namedview77"
- showgrid="false"
- inkscape:zoom="2.8284271"
- inkscape:cx="95.371787"
- inkscape:cy="16.007613"
- inkscape:window-x="248"
- inkscape:window-y="170"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer_1" /><metadata
- id="metadata79"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>bench g.aoi</dc:title><dc:description>jfitie@gmail.com</dc:description><cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /></cc:Work><cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata><defs
- id="defs150"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 103.9075 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="374.99999 : 103.9075 : 1"
- inkscape:persp3d-origin="187.5 : 69.271667 : 1"
- id="perspective81" /></defs><title
- id="title3">bench g.aoi</title><g
- id="g3659"
- transform="matrix(0.21216376,0,0,0.21216184,-26.456315,34.735924)"><path
- inkscape:connector-curvature="0"
- id="path3654"
- d="m 240.24267,39.985999 c -11.05725,0.762915 -11.30458,14.201647 -13.83947,22.310233 -1.36739,6.333271 -0.78909,13.750431 -3.45351,19.544377 -11.0028,-0.204534 -22.45764,2.742097 -30.71986,10.105823 -11.33227,4.172969 -11.24288,23.854488 2.48061,24.347698 8.00464,2.68885 17.46386,2.39977 24.59729,6.95285 -0.99336,12.03044 -9.56182,32.72196 6.86116,37.68799 8.60725,4.86759 17.2427,0.17654 19.687,-9.05143 0.88605,-7.61094 1.08052,-16.19851 3.13769,-22.86544 12.37247,0.14477 16.32769,15.65607 29.05426,16.24877 6.79609,3.40105 12.4831,-3.18229 16.58494,-5.52153 14.85027,4.14914 30.70549,5.51915 44.44729,11.6543 -0.35189,12.75302 -9.36036,28.86531 -0.29543,40.06164 8.60617,6.43644 26.1297,8.02853 27.44974,-6.41292 2.76787,-8.53552 0.39226,-21.48664 5.26176,-27.42936 6.51631,2.36221 8.038,12.29836 15.89222,14.02285 9.47188,5.98764 27.4832,2.4933 24.84178,-11.54733 0.25649,-4.74938 -6.98243,-8.36937 0.21902,-10.99721 6.78107,-10.47754 23.5365,1.34397 27.67386,-12.36741 4.79126,-15.67838 5.65473,-32.48111 10.7731,-47.860038 0.2852,-6.277729 7.49596,-15.630516 -2.84226,-19.070666 -17.97749,-2.979525 -35.42123,-6.387396 -53.25933,-9.45893 -32.90657,-1.404879 -65.70582,-9.188785 -98.48063,-12.970561 -14.54316,-5.197085 -30.09567,-2.743057 -44.9212,-6.482128 -3.68929,-0.55218 -7.41424,-0.968954 -11.15003,-0.901578 z"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0.87021828" /><g
- transform="matrix(0.87812658,0,0,0.87813208,142.568,-13.01737)"
- id="g2884"><g
- id="g5"
- transform="matrix(0.765,0,0,0.765,47,34.971508)"><line
- x1="138.5"
- y1="174.907"
- x2="138.5"
- y2="174.907"
- id="line7"
- style="fill:#a05a2c" /><line
- x1="95.5"
- y1="130.907"
- x2="95.5"
- y2="130.907"
- id="line9"
- style="fill:#a05a2c" /><line
- x1="95.5"
- y1="130.907"
- x2="95.5"
- y2="130.907"
- id="line11"
- style="fill:#a05a2c" /><line
- x1="95.5"
- y1="130.907"
- x2="95.5"
- y2="130.907"
- id="line13"
- style="fill:#a05a2c" /><line
- x1="95.5"
- y1="130.907"
- x2="95.5"
- y2="130.907"
- id="line15"
- style="fill:#a05a2c" /><path
- inkscape:connector-curvature="0"
- d="m 127.5,168.907 c -6.442,-6.442 -11.455,-13.773 -16.889,-21.019 -1.376,-1.834 -2.935,-3.627 -3.963,-5.686 -0.853,-1.705 -2.595,-3.791 -3.898,-5.546 -1.303,-1.755 -1.645,-2.785 -2.75,-3.75 -0.795,-0.694 -1.57,-1.023 -3,-1.5 3.313,0.663 6.627,1.325 9.94,1.987 1.968,0.395 4.569,1.885 5.477,3.013 3.679,4.567 6.857,9.262 9.917,14.361 1.54,2.567 3.916,4.638 5.583,7.139 1.613,2.419 3.571,5.571 5.607,7.607 3.75,3.75 6.258,9.552 11.476,11.393 -6.521,-1.715 -12.845,-2.764 -17.5,-7.999"
- id="path17"
- style="fill:#a05a2c" /><line
- x1="106"
- y1="133.407"
- x2="106"
- y2="133.407"
- id="line19"
- style="fill:#a05a2c" /><line
- x1="106"
- y1="133.407"
- x2="106"
- y2="133.407"
- id="line21"
- style="fill:#a05a2c" /><line
- x1="106"
- y1="133.407"
- x2="106"
- y2="133.407"
- id="line23"
- style="fill:#a05a2c" /><path
- inkscape:connector-curvature="0"
- d="m 60.5,193.907 c 1.128,-10.202 2.024,-21.12 4.068,-31.34 0.529,-2.646 0.792,-5.319 1.235,-7.979 0.456,-2.734 1.474,-5.291 2.145,-7.973 0.28,-1.121 0.323,-2.295 0.604,-3.416 0.396,-1.585 0.089,-1.877 1.625,-1.512 3.108,0.74 6.215,1.48 9.323,2.22 -1.24,4.961 -1.211,9.771 -2.055,14.834 -0.842,5.056 -2.685,10.246 -3.797,15.25 -1.163,5.233 0.336,10.517 -0.534,15.735 -0.511,3.066 1.09,7.727 0.386,12.181 -4.45,-1.271 -13.527,-1.663 -13,-8"
- id="path25"
- style="fill:#a05a2c" /><line
- x1="79"
- y1="144.407"
- x2="79"
- y2="144.407"
- id="line27"
- style="fill:#a05a2c" /><line
- x1="79"
- y1="144.407"
- x2="79"
- y2="144.407"
- id="line29"
- style="fill:#a05a2c" /><line
- x1="77"
- y1="146.907"
- x2="77"
- y2="146.907"
- id="line31"
- style="fill:#a05a2c" /><path
- inkscape:connector-curvature="0"
- d="m 60.5,146.407 c -2.115,-1.918 -1.717,-6.561 0.156,-8.656 1.979,-2.214 4.022,-4.269 6.344,-6.344 2.43,-2.173 5.67,-3.585 8.5,-5 3.396,-1.698 6.771,-3.091 10.405,-4.302 3.328,-1.109 7.438,-1.054 10.927,-1.49 3.847,-0.48 7.011,0.412 10.775,0.95 1.152,0.165 3.285,1.136 4.393,0.842 1.054,-0.279 1.609,-1.609 2.25,-2.25 1.617,-1.617 2.58,-6.981 3.25,-9.25 1.719,-5.817 1.784,-11.923 2.963,-17.815 1.206,-6.028 1.823,-12.187 2.695,-18.292 0.91,-6.373 3.054,-12.529 5.092,-18.643 0.461,-1.384 1.436,-2.778 2.25,-4 0.243,-0.365 2.609,-1.787 3.058,-1.744 3.481,0.331 6.981,0.907 10.462,1.239 -2.425,1.788 -4.787,4.559 -5.77,7.505 -0.623,1.867 -1.381,3.035 -1.723,5.084 -0.315,1.891 0.324,3.624 0.048,5.559 -1.014,7.096 -3.658,14.288 -3.658,21.513 0,1.635 -1.967,3.342 -2.287,4.946 -0.315,1.575 -0.306,3.353 -0.682,4.856 -0.429,1.713 -0.317,3.398 -0.87,5.058 -0.521,1.565 -0.884,3.265 -1.208,4.883 -0.791,3.956 -2.032,15.089 -8.036,13.296 -10.734,-3.205 -23.224,-1.46 -32.912,4.354 -5.507,3.304 -24.716,14.34 -14.422,21.202 -3.91,-0.931 -8.787,-1.359 -12,-3.501"
- id="path33"
- style="fill:#a05a2c" /><line
- x1="310"
- y1="216.907"
- x2="310"
- y2="216.907"
- id="line35"
- style="fill:#a05a2c" /><line
- x1="310"
- y1="216.907"
- x2="310"
- y2="216.907"
- id="line37"
- style="fill:#a05a2c" /><line
- x1="309.5"
- y1="216.907"
- x2="309.5"
- y2="216.907"
- id="line39"
- style="fill:#a05a2c" /><line
- x1="309.5"
- y1="216.907"
- x2="309.5"
- y2="216.907"
- id="line41"
- style="fill:#a05a2c" /><line
- x1="247"
- y1="183.407"
- x2="247"
- y2="183.407"
- id="line43"
- style="fill:#a05a2c" /><line
- x1="247"
- y1="183.407"
- x2="247"
- y2="183.407"
- id="line45"
- style="fill:#a05a2c" /><path
- inkscape:connector-curvature="0"
- d="m 322.5,220.407 c -4.032,-1.046 -8.064,-2.091 -12.096,-3.136 -2.597,-0.674 -5.271,-1.232 -7.248,-3.208 -4.501,-4.501 -8.535,-10.195 -11.725,-15.776 -3.527,-6.173 -7.109,-12.235 -10.283,-18.584 -0.71,-1.419 -1.463,-2.967 -2.148,-4.296 -0.502,-0.975 -2,-2.241 -2,-3.25 0,-0.515 -1.5,-0.985 -1.5,-1.5 0,-0.837 -2.469,-0.575 -3,-1.25 3.895,0.835 7.789,1.669 11.684,2.504 2.046,0.438 4.99,1.077 6.316,2.496 0.068,0.073 1.418,0.642 1.418,0.75 0,0.649 0.322,-0.072 0.5,0.25 0.288,0.525 0.375,1.375 0.75,1.75 1.033,1.034 1.711,2.635 2.172,4.016 1.001,3.005 2.934,6.708 4.828,9.234 1.004,1.339 1.538,2.841 2.198,4.38 0.608,1.422 1.794,2.67 2.569,4.027 1.783,3.119 2.299,6.15 4.147,9.231 3.121,5.202 7.264,10.824 13.418,12.362"
- id="path47"
- style="fill:#a05a2c" /><line
- x1="278"
- y1="174.907"
- x2="278"
- y2="174.907"
- id="line49"
- style="fill:#a05a2c" /><path
- inkscape:connector-curvature="0"
- d="m 253.418,240.407 c 1.932,-11.594 1.344,-23.31 3.65,-34.84 1.113,-5.569 3.353,-11.171 5.15,-16.565 0.154,-0.462 -0.605,-3.066 -0.762,-3.105 -1.331,-0.333 -2.662,-0.666 -3.994,-0.998 -3.321,-0.83 -6.643,-1.661 -9.963,-2.491 -0.004,3.052 -1.598,6.083 -2.1,9.095 -0.6,3.604 -1.62,7.005 -2.332,10.565 -1.48,7.399 -1.824,14.991 -3.465,22.372 -1.324,5.961 -2.104,13.127 -2.104,19.202 0,1.795 0.064,2.894 0.87,4.507 0.438,0.877 2.484,1.146 3.317,1.384 3.938,1.125 8.021,2.015 11.959,3.14 -3.9,-2.234 -0.683,-9.53 -0.226,-12.266 z"
- id="path51"
- style="fill:#a05a2c" /><path
- inkscape:connector-curvature="0"
- d="m 254.418,183.907 c 0.866,-2.599 1.995,-5.913 3.926,-7.844 2.174,-2.173 4.536,-4.19 7.008,-6.045 6.09,-4.567 12.298,-5.95 19.602,-8.038 1.459,-0.416 3.049,-1.448 4.552,-1.637 2.612,-0.326 3.927,-0.312 6.448,0.407 1.586,0.453 8.465,2.329 8.465,-0.594 0,-0.835 -0.276,-2.33 0.082,-3.25 0.701,-1.8 1.49,-3.454 1.87,-5.353 0.696,-3.48 2.634,-6.993 3.495,-10.439 1.31,-5.237 1.963,-10.676 2.855,-16.027 0.945,-5.674 0.549,-11.336 1.262,-17.043 0.695,-5.562 3.052,-11.488 4.828,-16.818 1.562,-4.686 1.664,-11.073 6.362,-13.422 -4.21,-0.601 -8.593,-1.601 -12.803,-2.202 -3.57,-0.51 -4.546,3.007 -5.87,5.554 -1.477,2.843 -2.3,6.8 -3.156,9.797 -1.038,3.634 -1.561,7.322 -2.47,10.958 -1.819,7.278 -2.611,14.918 -3.847,22.329 -0.285,1.712 -0.685,4.593 -0.771,5.642 -0.087,1.05 -0.396,2.186 -0.756,4.209 -0.359,2.024 -1.215,7.101 -1.803,10.635 -0.292,1.749 -0.656,3.395 -1.148,5.166 -0.491,1.771 -0.909,3.235 -1.679,4.773 -1.062,2.126 -1.603,4.241 -4.13,4.241 -1.643,0 -3.137,-0.925 -4.777,-1.13 -2.146,-0.268 -4.147,-0.37 -6.312,-0.37 -3.608,0 -7.438,0.909 -10.709,2.311 -6.271,2.688 -12.705,5.452 -17.598,10.346 -4.357,4.357 -9.344,8.944 -9.344,15.578 0,2.972 2.251,4.212 4.816,4.762 3.895,0.835 7.789,1.669 11.684,2.504 -3.857,-1.343 -1.021,-6.184 -0.082,-9 z"
- id="path53"
- style="fill:#a05a2c" /></g><g
- id="g55"
- transform="matrix(0.765,0,0,0.765,47,34.971508)"><line
- x1="110.5"
- y1="122.407"
- x2="110.5"
- y2="122.407"
- id="line57"
- style="fill:#784421" /><path
- inkscape:connector-curvature="0"
- d="m 147,166.407 c -1.478,-0.961 -4.314,-3.204 -6.75,-6 -2.436,-2.796 -4.633,-5.96 -6.75,-8.5 -2.438,-2.927 -4.527,-6.038 -6.74,-9.136 -0.943,-1.32 -1.702,-2.777 -2.604,-4.13 -0.734,-1.101 -1.688,-2.87 -2.656,-3.734 0.451,0.056 2.644,-0.61 3.12,-0.878 0.802,-0.45 3.097,-2.64 3.576,-3.107 0.802,-0.781 1.531,-1.698 1.882,-2.749 0.568,-1.704 1.278,-3.335 1.844,-5.031 1.122,-3.366 2.52,-6.384 3.105,-9.9 0.616,-3.695 1.161,-7.43 1.973,-11.084 1.634,-7.352 1.596,-15.134 3.417,-22.418 0.862,-3.449 1.09,-6.924 2.083,-10.332 0.275,-0.944 0.932,-3.501 1.25,-4.25 0.466,-1.097 0.211,-2.127 1,-3.5 1.392,-2.422 2.89,-5.737 1.25,-8.25 -2.705,-4.145 -4.736,0.104 -6.5,2.75 -2.008,3.012 -2.484,6.701 -3.606,10.069 -1.151,3.455 -1.799,7.518 -2.315,11.134 -0.493,3.451 -1.145,6.879 -1.828,10.297 -0.699,3.493 -0.691,7.015 -1.574,10.546 -0.815,3.262 -0.794,6.678 -1.624,9.996 -0.823,3.295 -1.227,6.733 -2.302,9.958 -0.766,2.297 -1.917,5.884 -4.25,6.25 -1.557,0.245 -2.959,-0.319 -4.405,-0.802 -1.647,-0.549 -3.513,-0.5 -5.232,-0.715 -6.816,-0.853 -15.613,0.392 -21.812,3.491 -5.975,2.987 -11.813,5.788 -16.551,10.525 -1.896,1.896 -4.5,4.833 -4.5,7.734 0,2.376 1.517,5.921 4.5,5.266 1.082,-0.237 2.354,-1.708 2.87,-2.741 0.638,-1.273 1.536,-2.164 2.63,-3.259 -0.857,3.431 -1.699,6.796 -2.552,10.208 -0.898,3.592 -1.001,7.278 -1.8,10.876 -1.625,7.313 -3.26,17.835 -3.776,25.28 -0.217,3.127 -0.439,3.74 -0.372,6.87 0.076,3.509 2.599,6.667 5.656,3.609 1.021,-1.021 2.344,-1.983 2.344,-3.578 0,-1.938 0.152,-3.681 0.473,-5.6 0.571,-3.431 0.654,-6.927 1.226,-10.355 1.254,-7.524 2.018,-15.108 3.274,-22.645 0.53,-3.181 1.657,-6.624 2.527,-9.666 0.437,-1.524 0.656,-2.812 1.37,-4.241 0.292,-0.584 0.35,-1.173 0.63,-1.759 0.308,-0.644 0.795,-1.091 1.13,-1.759 2.521,-5.045 8.594,-7.741 14.12,-7.741 2.669,0 4.874,0.101 6.75,2 0.463,0.47 1.256,1.597 2,2.5 0.83,1.007 2.031,2.562 2.604,3.708 1.281,2.562 3.193,4.787 4.693,7.287 1.645,2.742 3.81,4.949 5.703,7.505 3.522,4.759 6.815,9.815 11,14 2.482,2.482 8.861,8.763 12.5,6.5 2.066,-1.285 2.5,-4.063 2.5,-6.25 0,-1.063 -0.625,-2.573 -1.5,-3.25 -0.766,-0.592 -1.523,-0.038 -3.001,-0.999 z"
- id="path59"
- style="fill:#784421" /><path
- inkscape:connector-curvature="0"
- d="m 290.5,174.407 c 0.248,0.413 2.725,5.181 3.5,7 1.437,3.372 4.75,9.184 5.438,10.354 0.688,1.17 1.039,2.361 1.875,3.615 1.223,1.835 2.341,3.675 3.436,5.589 1.793,3.139 3.805,6.197 5.669,9.304 1.982,3.305 9.233,12.048 13.083,9.639 2.642,-1.653 3.19,-5.136 3,-8 -0.229,-3.439 -3.128,-2.628 -5.156,-4.656 -9.326,-9.327 -15.088,-22.332 -20.844,-33.844 1.017,0.228 2.337,-0.919 3.24,-1.37 1.279,-0.64 1.998,-1.536 3.008,-2.546 0.326,-0.326 1.179,-2.198 1.404,-2.661 0.396,-0.811 0.969,-1.721 1.258,-2.588 0.59,-1.771 0.725,-2.865 1.434,-4.601 0.636,-1.556 0.815,-3.225 1.156,-4.734 0.451,-2.001 1.062,-3.874 1.4,-5.905 0.589,-3.529 1.498,-7.04 2.1,-10.595 2.479,-14.647 4.342,-29.37 7.948,-43.792 0.714,-2.859 2.065,-5.248 2.974,-7.974 0.82,-2.46 2.439,-7.054 -0.662,-8.604 -1.565,-0.783 -2.223,0.016 -3.26,1.37 -1.131,1.476 -1.994,2.983 -2.578,4.734 -1.182,3.546 -2.588,6.931 -3.505,10.598 -3.503,14.012 -4.342,28.793 -7.167,42.918 -0.709,3.544 -1.627,7.012 -2.223,10.584 -0.586,3.521 -1.768,6.382 -3.027,9.666 -0.4,1.044 -0.767,2.094 -1.5,3 -1.047,1.294 -1.451,0.849 -3,0.5 -1.824,-0.41 -3.588,-0.668 -5.393,-1.184 -1.803,-0.515 -3.415,0.184 -5.258,0.184 -7.541,0 -14.375,3.615 -20.711,7.417 -2.703,1.621 -5.238,4.117 -7.639,6.083 -2.402,1.968 -4.49,4.481 -5.871,7.241 -0.906,1.812 -2.629,3.707 -2.629,5.993 0,2.057 0.061,5.039 2,5.766 1.888,0.707 3.586,-0.673 4.371,-2.241 0.859,-1.719 2.049,-3.138 3.129,-4.759 -0.727,3.632 -1.632,7.396 -2.802,10.905 -1.171,3.513 -1.384,7.525 -2.111,11.159 -1.45,7.253 -2.3,14.642 -3.216,21.973 -0.462,3.688 -0.859,7.392 -1.471,11.058 -0.491,2.951 -1.674,6.859 -0.271,9.664 2.033,4.065 4.919,1.365 6.371,-1.759 0.688,-1.481 0.553,-3.211 0.948,-4.792 0.437,-1.746 0.589,-3.582 0.768,-5.368 1.478,-14.769 3.511,-29.743 7.108,-44.136 1.492,-5.967 2.527,-11.512 6.676,-16.204 1.311,-1.483 2.652,-3.128 5.26,-4 2.606,-0.872 3.732,-1.257 4.506,-1.422 0.774,-0.165 1.291,-0.204 1.994,-0.208 0.702,-0.003 1.109,0.035 1.99,0.13 0.881,0.095 3.002,1.086 3.25,1.499 z"
- id="path61"
- style="fill:#784421" /></g><g
- id="g63"
- transform="matrix(0.765,0,0,0.765,47,34.971508)"><line
- x1="86"
- y1="45.907001"
- x2="86"
- y2="45.907001"
- id="line65"
- style="fill:#a05a2c" /><line
- x1="86"
- y1="45.907001"
- x2="86"
- y2="45.907001"
- id="line67"
- style="fill:#a05a2c" /><line
- x1="86"
- y1="45.907001"
- x2="86"
- y2="45.907001"
- id="line69"
- style="fill:#a05a2c" /><line
- x1="86"
- y1="45.907001"
- x2="86"
- y2="45.907001"
- id="line71"
- style="fill:#a05a2c" /><line
- x1="86"
- y1="45.907001"
- x2="86"
- y2="45.907001"
- id="line73"
- style="fill:#a05a2c" /><polygon
- points="383.815,99.188 383.5,99.907 383.295,100.559 383.267,100.97 383.13,101.463 382.938,102.012 382.5,102.407 81,55.407 80.392,54.979 80,54.407 79.834,53.694 79.742,53.131 79.75,52.288 79.868,51.595 80.307,50.451 80.5,49.907 81,48.907 81.294,48.326 81.794,47.326 82.132,46.634 82.621,45.803 83.263,45.248 84,44.907 84.5,44.907 84.5,44.907 387,88.407 387.5,88.907 387.5,89.407 387,90.407 386,92.407 385.5,93.907 384.803,95.65 384.303,97.65 "
- id="polygon75"
- style="fill:#a05a2c" /><polygon
- points="70.5,99.907 70.5,100.407 70.5,101.407 70.5,102.407 70.667,103.105 71,103.907 71.5,104.407 371,163.907 371.53,163.795 371.753,162.947 372,161.407 372.342,159.94 372.729,158.457 373,156.791 373.257,155.389 373.5,154.407 373.684,153.397 373.866,152.382 374,151.407 374.09,150.086 374,149.407 74.5,92.907 74,92.907 73.33,93.159 72.498,93.741 72,94.407 71.707,95.219 71.5,95.907 71.354,96.363 71.249,96.779 71.249,96.779 71.083,97.175 70.937,97.674 70.792,98.236 70.688,98.694 70.625,99.214 "
- id="polygon77"
- style="fill:#a05a2c" /><line
- x1="75.5"
- y1="87.406998"
- x2="75.5"
- y2="87.406998"
- id="line79"
- style="fill:#a05a2c" /><line
- x1="75.5"
- y1="87.906998"
- x2="75.5"
- y2="87.906998"
- id="line81"
- style="fill:#a05a2c" /><line
- x1="75.5"
- y1="87.906998"
- x2="75.5"
- y2="87.906998"
- id="line83"
- style="fill:#a05a2c" /><polygon
- points="73.5,82.907 73.5,83.907 73.5,84.407 73.5,85.407 73.5,86.407 73.697,86.963 74,87.407 74.827,88.094 75.5,88.407 375,143.407 375.5,143.407 375.672,142.819 375.727,142.113 375.821,141.025 376,139.907 376.412,137.445 376.741,135.389 377,133.407 377.5,130.907 377.619,129.302 377.5,128.407 77,76.407 77,76.407 76.443,76.557 75.797,76.896 75,77.407 74.555,77.853 74.278,78.593 73.987,79.579 73.809,80.37 73.68,81.243 73.5,81.907 "
- id="polygon85"
- style="fill:#a05a2c" /><polygon
- points="76,66.907 76,66.407 76.188,65.268 76.347,64.391 76.5,63.907 76.746,62.876 77,61.907 77.444,61.242 77.882,60.764 78.5,60.407 79.277,60.325 80,60.407 80,60.407 381.5,107.907 381,109.907 380.5,112.907 380,115.407 379.5,117.907 379,120.407 378.5,122.907 78,71.907 77.264,71.684 76.487,71.066 76.125,70.532 76,69.907 76,68.907 76,67.907 "
- id="polygon87"
- style="fill:#a05a2c" /><line
- x1="366.5"
- y1="170.407"
- x2="366.5"
- y2="170.407"
- id="line89"
- style="fill:#a05a2c" /><polygon
- points="66.869,109.841 66.5,109.741 66.226,109.588 65.349,109.643 64.777,109.797 64.377,110.006 63.73,110.523 63.014,111.24 62.855,112.093 63.19,112.496 63.682,112.67 64.107,112.758 64.446,112.903 64.967,113.002 65.394,113.102 65.724,113.223 66.5,113.407 366,175.407 366.23,175.334 366.746,175.099 367,174.907 367.311,174.629 367.5,174.407 367.817,174.135 368,173.907 368.251,173.441 368.5,172.907 368.768,172.443 369,171.907 369.367,171.15 369.5,170.407 369.438,169.939 368.994,169.297 368.5,168.907 69.5,108.407 69,108.407 68.291,108.684 67.784,109.125 67.5,109.407 67.123,109.709 67.123,109.709 "
- id="polygon91"
- style="fill:#a05a2c" /><line
- x1="352"
- y1="173.907"
- x2="352"
- y2="173.907"
- id="line93"
- style="fill:#a05a2c" /><line
- x1="352"
- y1="173.907"
- x2="352"
- y2="173.907"
- id="line95"
- style="fill:#a05a2c" /><polygon
- points="56.928,107.764 55.893,107.68 55.379,107.651 54.893,107.68 53.928,107.764 53.472,107.833 53,107.907 52,108.407 51.5,108.907 51,109.407 50.5,110.407 50.5,111.407 50.5,111.407 352,174.407 353.151,174.441 354.807,174.394 356.276,174.3 357.688,174.14 358.803,174.041 359.895,173.83 360,172.907 360,171.407 359.725,170.414 359.5,169.907 359,169.407 58,107.907 57.472,107.833 "
- id="polygon97"
- style="fill:#a05a2c" /><line
- x1="343.40799"
- y1="172.715"
- x2="343.40799"
- y2="172.715"
- id="line99"
- style="fill:#a05a2c" /><line
- x1="344"
- y1="172.407"
- x2="344"
- y2="172.407"
- id="line101"
- style="fill:#a05a2c" /><line
- x1="345"
- y1="171.907"
- x2="345"
- y2="171.907"
- id="line103"
- style="fill:#a05a2c" /><line
- x1="345.26001"
- y1="171.69901"
- x2="345.26001"
- y2="171.69901"
- id="line105"
- style="fill:#a05a2c" /><polygon
- points="344.699,176.686 345.5,176.407 346.11,176.133 346.651,175.957 347.59,175.639 348.484,175.193 348.86,174.828 348.723,173.832 348.5,172.907 348,171.907 347.5,171.407 45.5,108.907 44.494,108.826 43.931,108.77 43.431,108.77 42.931,108.77 42.431,108.77 41.846,108.797 41.273,108.983 40.658,109.152 40.17,109.276 39.761,109.43 39,109.907 38.5,110.407 37.884,111.258 37.5,111.907 37.276,113.049 37.5,113.907 37.5,113.907 340.5,178.407 341,178.407 342.059,178.013 342.691,177.625 343.332,177.355 344.053,176.99 "
- id="polygon107"
- style="fill:#a05a2c" /><polygon
- points="336.5,178.907 336,177.907 32.5,113.407 31.626,112.97 31,112.907 30.046,113.194 29.5,113.407 28.824,113.729 28.038,114.079 27.5,114.407 26.845,114.823 26,115.407 25.5,115.907 25,116.407 24.289,117.238 24,117.907 24,118.907 24.5,119.907 24.5,119.907 328.5,187.407 329.281,187.105 329.781,186.605 330.281,186.105 331.281,185.105 332.701,183.96 333.5,183.407 334.629,182.479 336,181.407 337,180.407 337,179.907 "
- id="polygon109"
- style="fill:#a05a2c" /><line
- x1="14"
- y1="132.407"
- x2="14"
- y2="132.407"
- id="line111"
- style="fill:#a05a2c" /><line
- x1="13.5"
- y1="131.907"
- x2="13.5"
- y2="131.907"
- id="line113"
- style="fill:#a05a2c" /><line
- x1="13.5"
- y1="131.907"
- x2="13.5"
- y2="131.907"
- id="line115"
- style="fill:#a05a2c" /><line
- x1="20.5"
- y1="122.407"
- x2="20.5"
- y2="122.407"
- id="line117"
- style="fill:#a05a2c" /><line
- x1="20.5"
- y1="122.407"
- x2="20.5"
- y2="122.407"
- id="line119"
- style="fill:#a05a2c" /><line
- x1="20.5"
- y1="122.407"
- x2="20.5"
- y2="122.407"
- id="line121"
- style="fill:#a05a2c" /><line
- x1="20.5"
- y1="122.407"
- x2="20.5"
- y2="122.407"
- id="line123"
- style="fill:#a05a2c" /><polygon
- points="319.727,199.978 320,199.407 320.5,197.907 321.5,196.407 322,195.407 322.747,194.243 323.57,192.998 324.57,191.998 325,191.407 325.085,190.895 325,190.407 324,189.407 19.5,121.407 19,121.407 18,121.407 17.5,121.907 16.5,122.407 16,122.907 15.5,123.407 14.5,124.407 14,124.907 13.5,125.907 13,126.907 12.5,127.907 12.5,128.407 12.5,129.407 12.5,130.407 13,131.407 13.5,131.907 14,132.407 14,132.407 319,203.907 319.257,203.586 319.316,202.588 319.316,201.588 319.557,200.56 "
- id="polygon125"
- style="fill:#a05a2c" /></g><g
- id="g127"
- transform="matrix(0.765,0,0,0.765,47,34.971508)"><polygon
- points="384.803,95.65 385.5,93.907 386,92.407 387,90.407 387.5,89.407 387.5,88.907 387,88.407 386.5,88.407 386,88.407 385,88.907 384.5,89.407 384,90.407 383.612,91.568 383.27,92.356 383,93.407 382.5,94.407 382.207,95.44 382,96.407 381.693,97.737 381.5,98.907 381.5,99.907 381.624,100.753 381.761,101.404 382.172,101.987 382.172,101.987 382.5,102.407 382.938,102.012 383.13,101.463 383.267,100.97 383.295,100.559 383.5,99.907 383.815,99.188 384.303,97.65 "
- id="polygon129"
- style="fill:#784421" /><polygon
- points="370,158.907 370,160.407 370,161.407 370,162.407 370.27,163.473 371,163.907 371.53,163.795 371.753,162.947 372,161.407 372.342,159.94 372.729,158.457 373,156.791 373.257,155.389 373.5,154.407 373.684,153.397 373.866,152.382 374,151.407 374.09,150.086 374,149.407 373.452,149.455 373,149.907 372.5,150.407 372,151.407 371.5,152.407 371.225,153.018 371.071,153.479 370.855,153.957 370.67,154.496 370.67,154.496 370.547,155.05 370.393,155.589 370.254,156.112 370.177,156.574 370.039,157.684 370.039,158.184 "
- id="polygon131"
- style="fill:#784421" /><polygon
- points="376.346,129.238 376,129.907 375.5,130.907 375,131.907 374.5,132.907 374.221,133.928 374.016,134.961 373.844,135.887 373.639,136.841 373.467,137.807 373.467,138.801 373.5,139.907 373.5,140.907 373.844,142.021 374.344,143.021 375,143.407 375,143.407 375.5,143.407 375.672,142.819 375.727,142.113 375.821,141.025 376,139.907 376.412,137.445 376.741,135.389 377,133.407 377.5,130.907 377.619,129.302 377.5,128.407 376.895,128.689 "
- id="polygon133"
- style="fill:#784421" /><polygon
- points="377.305,114.979 377.076,115.975 377.066,116.897 377,117.907 377,118.907 377,120.407 377.168,121.25 377.5,121.907 378,122.407 378.5,122.907 378.5,122.907 379,120.407 379.5,117.907 380,115.407 380.5,112.907 381,109.907 381.5,107.907 381,107.907 380.5,107.907 380,108.407 379.5,108.907 379,109.907 378.5,110.907 378.197,111.825 377.785,112.956 377.536,113.964 "
- id="polygon135"
- style="fill:#784421" /><line
- x1="366.5"
- y1="170.407"
- x2="366.5"
- y2="170.407"
- id="line137"
- style="fill:#784421" /><polygon
- points="367,170.407 366.733,171.09 366.004,171.175 365.471,171.074 364.5,170.907 364,171.407 363.5,172.407 363,173.407 363.076,174.256 363.33,174.594 363.686,174.729 364,174.907 364.428,175.082 364.85,175.169 365.37,175.277 366,175.407 366.23,175.334 366.746,175.099 367,174.907 367.311,174.629 367.5,174.407 367.817,174.135 368,173.907 368.251,173.441 368.5,172.907 368.768,172.443 369,171.907 369.367,171.15 369.5,170.407 369.438,169.939 369.438,169.939 368.994,169.297 368.5,168.907 367.883,169.025 367.5,169.407 367,169.907 "
- id="polygon139"
- style="fill:#784421" /><polygon
- points="352.5,171.907 352.16,172.885 352,173.907 352,174.407 353.151,174.441 354.807,174.394 356.276,174.3 357.688,174.14 358.803,174.041 359.895,173.83 359.895,173.83 360,172.907 360,171.407 359.725,170.414 359.5,169.907 359,169.407 358.5,169.407 357.5,169.407 357,169.407 356.5,169.407 356,169.407 355.5,169.407 355,169.407 354.141,169.703 353.411,170.041 352.871,170.854 "
- id="polygon141"
- style="fill:#784421" /><polygon
- points="346.651,175.957 347.59,175.639 348.484,175.193 348.86,174.828 348.723,173.832 348.5,172.907 348,171.907 347.5,171.407 347,171.365 346.5,171.351 346,171.407 345.676,171.547 345.26,171.699 345,171.907 344.44,172.174 344,172.407 343.408,172.715 343,172.907 342.393,173.273 341.5,173.907 341,174.907 340.683,175.932 340.5,177.407 340.5,178.407 340.5,178.407 341,178.407 342.059,178.013 342.691,177.625 343.332,177.355 344.053,176.99 344.699,176.686 345.5,176.407 346.11,176.133 "
- id="polygon143"
- style="fill:#784421" /><polygon
- points="328.817,183.903 328.174,185.748 328.174,186.51 328.5,187.407 329.281,187.105 330.281,186.105 331.281,185.105 332.701,183.96 333.5,183.407 334.629,182.479 336,181.407 337,180.407 337,180.407 337,179.907 336.5,178.907 336,177.907 335.465,177.864 335,177.907 334,178.407 333.59,178.59 333,178.907 332.253,179.385 331.5,179.907 331,180.407 330.5,180.907 329.909,181.77 329.409,182.77 "
- id="polygon145"
- style="fill:#784421" /><polygon
- points="321,191.907 320.243,192.84 319.743,193.84 319,194.907 318.5,195.907 318,196.907 317.576,198.021 317.5,199.407 317.5,200.407 317.5,201.407 317.561,202.387 318,203.407 318.389,203.674 319,203.907 319.257,203.586 319.316,202.588 319.316,201.588 319.557,200.56 319.727,199.978 320,199.407 320.5,197.907 321.5,196.407 322,195.407 322.747,194.243 323.57,192.998 324.57,191.998 325,191.407 325.085,190.895 325.085,190.895 325,190.407 324,189.407 323.5,189.407 323.01,189.559 322.5,189.907 321.606,190.963 "
- id="polygon147"
- style="fill:#784421" /></g></g></g></svg> \ No newline at end of file
diff --git a/navit/icons/bicycle_parking.svg b/navit/icons/bicycle_parking.svg
deleted file mode 100644
index da4246e2e..000000000
--- a/navit/icons/bicycle_parking.svg
+++ /dev/null
@@ -1,179 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.48.3.1 r9886"
- version="1.0"
- sodipodi:docname="parking.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/police.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient5226"
- osb:paint="gradient">
- <stop
- style="stop-color:#0089cd;stop-opacity:1;"
- offset="0"
- id="stop5228" />
- <stop
- style="stop-color:#0089cd;stop-opacity:0;"
- offset="1"
- id="stop5230" />
- </linearGradient>
- <linearGradient
- id="linearGradient3808"
- osb:paint="solid">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3810" />
- </linearGradient>
- <linearGradient
- id="linearGradient3802"
- osb:paint="solid">
- <stop
- style="stop-color:#fdeff6;stop-opacity:0.95219123;"
- offset="0"
- id="stop3804" />
- </linearGradient>
- <linearGradient
- id="linearGradient3796"
- osb:paint="solid">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3798" />
- </linearGradient>
- <linearGradient
- id="linearGradient3790"
- osb:paint="solid">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3792" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="15.839192"
- inkscape:cx="12.991839"
- inkscape:cy="10.261137"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1360"
- inkscape:window-height="692"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <rect
- style="opacity:1;fill:#0089cd;fill-opacity:1;stroke:#ffffff;stroke-width:1.68599999000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2402"
- width="20.263691"
- height="20.315996"
- x="0.84497529"
- y="0.94812441"
- ry="0" />
- <text
- xml:space="preserve"
- style="font-size:15.10944653px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="0.98667461"
- y="11.14856"
- id="text3174"
- transform="scale(1.0135054,0.98667459)"><tspan
- sodipodi:role="line"
- id="tspan3176"
- x="0.98667461"
- y="11.14856"
- style="font-size:12.36227417px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Bitstream Vera Sans Bold">P</tspan></text>
- <g
- id="g3784"
- transform="matrix(-1,0,0,1,-215.49226,-291.90575)"
- style="fill:#ffffff;fill-opacity:1">
- <g
- inkscape:export-ydpi="4.2362185"
- inkscape:export-xdpi="4.2362185"
- transform="matrix(0.02948161,0,0,0.03308605,-240.7541,294.89843)"
- id="g3138"
- style="fill:#ffffff;fill-opacity:1">
- <circle
- sodipodi:ry="161"
- sodipodi:rx="161"
- sodipodi:cy="409"
- sodipodi:cx="215"
- id="FrontWheel"
- style="fill:#ffffff;fill-opacity:0;stroke:#ffffff;stroke-width:40px;stroke-opacity:1"
- cx="215"
- cy="409"
- r="161"
- transform="matrix(0.612193,0,0,0.612193,156.40859,178.29391)"
- d="m 376,409 c 0,88.91784 -72.08216,161 -161,161 -88.91784,0 -161,-72.08216 -161,-161 0,-88.91784 72.08216,-161 161,-161 88.91784,0 161,72.08216 161,161 z" />
- <circle
- sodipodi:ry="161"
- sodipodi:rx="161"
- sodipodi:cy="406"
- sodipodi:cx="790"
- id="RearWheel"
- style="fill:#ffffff;fill-opacity:0;stroke:#ffffff;stroke-width:40px;stroke-opacity:1"
- cx="790"
- cy="406"
- r="161"
- transform="matrix(0.612193,0,0,0.612193,156.40859,178.29391)"
- d="m 951,406 c 0,88.91784 -72.08216,161 -161,161 -88.91784,0 -161,-72.08216 -161,-161 0,-88.91784 72.08216,-161 161,-161 88.91784,0 161,72.08216 161,161 z" />
- <path
- d="m 419.33591,187.76277 c -81.15626,0.791 -67.39292,-8.38456 -111.05594,131.93826 -35.56995,112.11783 -31.69552,99.89097 -31.88155,107.75543 -0.13037,6.10982 4.80163,10.95404 10.99923,11.36869 12.88887,-1.30322 7.46752,1.39395 52.15306,-137.36977 163.27931,172.24394 102.021,144.31296 189.89195,147.81092 115.48553,-1.10739 124.87203,6.01158 126.24309,-10.91575 -0.1582,-5.74792 -2.84759,-9.17557 -82.10546,-185.56784 l 7.59356,-20.88232 26.1029,-0.4746 -0.9492,-21.83151 -97.2926,0 c -8.5955,11.75949 3.48039,11.70675 46.98521,21.35692 l -7.59357,21.3569 -194.11061,0.47461 c 13.07781,-45.66688 5.69518,-42.8193 64.54534,-42.71383 l 0.47459,-22.30611 z m -70.62884,88.427 189.94107,-0.33678 -54.89431,147.50742 -135.04676,-147.17064 z m 212.84176,8.75614 -53.88399,141.44548 117.87123,0.33677 -63.98724,-141.78225 z"
- id="Frame"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.61219299;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/bicycle_rental.svg b/navit/icons/bicycle_rental.svg
deleted file mode 100644
index 9392ad4a8..000000000
--- a/navit/icons/bicycle_rental.svg
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="bike_rent.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="8.3810848"
- inkscape:cy="9.9572105"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="691"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:zoom="16"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2303"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- transform="matrix(0.0472644,0,0,0.0472644,3.2416943,0.52412815)">
- <g
- id="g2305"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
- <path
- d="M 100.25,5.75 C 60.335317,5.4974281 26.826507,47.079175 35.324049,86.079571 c 5.57579,32.628219 37.203485,59.513449 70.832201,56.201679 22.48284,-1.38839 43.50902,-14.78319 54.8125,-34.09375 10.25433,-8.04484 25.57155,2.6096 35.65625,-6.0625 6.89511,-7.134767 12.65993,-16.629284 22.375,-19.84375 7.79207,2.201331 11.2873,10.646529 17.71875,14.5625 6.4579,-4.13743 10.19115,-13.979468 19.03125,-13.9375 6.25373,3.764238 10.21886,10.40689 16.125,14.34375 6.70904,-4.292637 10.68564,-14.550643 19.8125,-14.5625 6.3804,3.59771 9.90619,11.109119 16.5625,13.96875 9.26043,-8.352172 18.73735,-16.999679 26.46875,-26.9375 -0.0281,-5.622835 -7.6363,-8.738413 -10.65641,-13.336982 C 317.78098,50.838171 312.47635,40.600972 302.59375,42.71875 289.22865,43.785674 275.56059,42.397209 262.0625,42.9375 229.36594,42.923262 196.41274,43.721279 163.875,42.125 154.95723,34.457888 150.20766,22.500694 139.25,17.0625 127.86772,9.4689786 114.03062,5.323508 100.25,5.75 z M 73.09375,50.53125 c 19.527198,-0.486224 31.18454,27.24599 17,40.71875 -11.479386,12.63316 -36.049436,8.571659 -40.875,-8.375 -5.349057,-15.155352 7.109688,-34.021744 23.875,-32.34375 z"
- id="path2307"
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:10.00000095;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
- <path
- d=""
- id="path2309"
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- id="g3789"
- transform="matrix(-1.03734,0,0,1.03734,-283.14386,-312.70613)">
- <g
- inkscape:export-ydpi="4.2362185"
- inkscape:export-xdpi="4.2362185"
- transform="matrix(0.03411226,0,0,0.0333232,-299.54358,303.73058)"
- id="g3138"
- style="fill:#0089cd;fill-opacity:1">
- <circle
- sodipodi:ry="161"
- sodipodi:rx="161"
- sodipodi:cy="409"
- sodipodi:cx="215"
- id="FrontWheel"
- style="fill:#ffffff;fill-opacity:0;stroke:#0089cd;stroke-width:40px;stroke-opacity:1"
- cx="215"
- cy="409"
- r="161"
- transform="matrix(0.612193,0,0,0.612193,156.40859,178.29391)"
- d="m 376,409 c 0,88.91784 -72.08216,161 -161,161 -88.91784,0 -161,-72.08216 -161,-161 0,-88.91784 72.08216,-161 161,-161 88.91784,0 161,72.08216 161,161 z" />
- <circle
- sodipodi:ry="161"
- sodipodi:rx="161"
- sodipodi:cy="406"
- sodipodi:cx="790"
- id="RearWheel"
- style="fill:#ffffff;fill-opacity:0;stroke:#0089cd;stroke-width:40px;stroke-opacity:1"
- cx="790"
- cy="406"
- r="161"
- transform="matrix(0.612193,0,0,0.612193,156.40859,178.29391)"
- d="m 951,406 c 0,88.91784 -72.08216,161 -161,161 -88.91784,0 -161,-72.08216 -161,-161 0,-88.91784 72.08216,-161 161,-161 88.91784,0 161,72.08216 161,161 z" />
- <path
- d="m 419.33591,187.76277 c -81.15626,0.791 -67.39292,-8.38456 -111.05594,131.93826 -35.56995,112.11783 -31.69552,99.89097 -31.88155,107.75543 -0.13037,6.10982 4.80163,10.95404 10.99923,11.36869 12.88887,-1.30322 7.46752,1.39395 52.15306,-137.36977 163.27931,172.24394 102.021,144.31296 189.89195,147.81092 115.48553,-1.10739 124.87203,6.01158 126.24309,-10.91575 -0.1582,-5.74792 -2.84759,-9.17557 -82.10546,-185.56784 l 7.59356,-20.88232 26.1029,-0.4746 -0.9492,-21.83151 -97.2926,0 c -8.5955,11.75949 3.48039,11.70675 46.98521,21.35692 l -7.59357,21.3569 -194.11061,0.47461 c 13.07781,-45.66688 5.69518,-42.8193 64.54534,-42.71383 l 0.47459,-22.30611 z m -70.62884,88.427 189.94107,-0.33678 -54.89431,147.50742 -135.04676,-147.17064 z m 212.84176,8.75614 -53.88399,141.44548 117.87123,0.33677 -63.98724,-141.78225 z"
- id="Frame"
- style="fill:#0089cd;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.61219299;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/bicycle_shop.svg b/navit/icons/bicycle_shop.svg
deleted file mode 100644
index 7d97366e4..000000000
--- a/navit/icons/bicycle_shop.svg
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="bicycle_shop.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="23.451328"
- inkscape:cy="49.511077"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="874"
- inkscape:window-width="1440"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="2.8284271"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false"
- inkscape:window-maximized="1" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective12"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <style
- id="style6"
- type="text/css">
- .fil0 {fill:#EF7900}
- </style>
- <inkscape:perspective
- id="perspective6807"
- inkscape:persp3d-origin="29.116032 : 19.410688 : 1"
- inkscape:vp_x="0 : 29.116032 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="58.232063 : 29.116032 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective6954"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- id="ArrowStart"
- markerHeight="3"
- markerUnits="strokeWidth"
- markerWidth="4"
- orient="auto"
- refX="10"
- refY="5"
- viewBox="0 0 10 10">
- <path
- d="M 10,0 0,5 10,10 Z"
- id="path2295"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="ArrowEnd"
- markerHeight="3"
- markerUnits="strokeWidth"
- markerWidth="4"
- orient="auto"
- refX="0"
- refY="5"
- viewBox="0 0 10 10">
- <path
- d="M 0,0 10,5 0,10 Z"
- id="path2292"
- inkscape:connector-curvature="0" />
- </marker>
- <inkscape:perspective
- id="perspective7597"
- inkscape:persp3d-origin="178.5405 : 158.483 : 1"
- inkscape:vp_x="0 : 237.7245 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="357.08099 : 237.7245 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <ellipse
- id="FrontWheel-1"
- style="fill:none;stroke:#ffffff;stroke-width:2.24440885;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- cx="-17.331921"
- cy="13.770599"
- rx="3.5458753"
- ry="4.1071954"
- transform="scale(-1,1)" />
- <ellipse
- id="RearWheel-8"
- style="fill:none;stroke:#ffffff;stroke-width:2.24440885;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- cx="-4.6680803"
- cy="13.694069"
- rx="3.5458753"
- ry="4.1071954"
- transform="scale(-1,1)" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.02370328;stroke-opacity:1"
- d="m 13.072607,3.271816 c -0.652861,-0.09 -1.234442,-0.0093 -1.005618,0.837694 -0.07488,0.913962 0.870876,1.183873 1.50229,1.54695 C 12.28851,6.009809 10.769782,6.28904 9.5104239,5.68232 10.443169,5.014051 9.5623239,3.917071 8.6604279,4.13274 7.646764,4.363589 6.4666557,3.959426 5.5523953,4.34841 4.9295532,5.076721 5.4837843,6.490658 6.5571358,6.187742 6.163037,8.022295 5.1897706,9.658856 4.6546167,11.44711 c -0.3695135,1.01996 -1.4763532,2.483412 -0.5593584,3.46431 1.4205186,0.531248 2.994827,-0.13263 4.478811,0.174464 1.3974103,0.218366 2.8823307,-0.208709 3.5547297,-1.543004 1.069524,-1.360403 2.020921,-2.810541 3.133897,-4.137621 0.766248,1.67573 0.489177,3.864291 1.852984,5.212463 1.176439,0.176677 1.340299,-1.401218 0.805282,-2.141795 C 17.014507,9.593585 16.734744,6.410493 15.241655,3.769345 14.645097,3.262795 13.810672,3.269182 13.072607,3.271814 Z m -2.860355,4.581673 c 1.337462,0.0029 2.674926,0.0055 4.012387,0.0088 -1.32826,1.676523 -2.656478,3.353081 -3.985208,5.029233 C 10.611938,11.263134 9.0788661,9.991377 9.2899245,8.426889 9.4135347,8.035328 9.8230064,7.840916 10.212252,7.853522 Z m -2.3847243,2.380699 c -0.00533,0.91971 1.7116012,3.060017 0.266528,2.959326 -0.7817065,0.0894 -1.6323426,0.175278 -2.4289997,-0.07189 0.9768681,-1.207357 1.1989847,-2.770182 1.7368159,-4.180579 0.1418852,0.431048 0.2837705,0.862095 0.4256558,1.293144 z"
- id="Frame-7"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2323"
- d="" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2329"
- d="" />
- <g
- id="g4349"
- transform="matrix(0.22407301,0,0,0.22406536,-0.20000752,-0.177659)">
- <ellipse
- ry="18.330345"
- rx="15.824643"
- transform="scale(-1,1)"
- cy="62.095139"
- cx="-78.181404"
- style="fill:none;stroke:#ad30c0;stroke-width:4.2314229px;stroke-opacity:1"
- id="FrontWheel" />
- <ellipse
- ry="18.330345"
- rx="15.824643"
- transform="scale(-1,1)"
- cy="61.753578"
- cx="-21.664818"
- style="fill:none;stroke:#ad30c0;stroke-width:4.2314229px;stroke-opacity:1"
- id="RearWheel" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.10578556;stroke-opacity:1"
- id="Frame"
- d="m 57.099795,17.290206 c 13.029919,0.147107 10.820167,-1.559325 17.830416,24.537324 5.710879,20.851203 5.088826,18.577303 5.118694,20.039902 0.02093,1.136279 -0.770919,2.037186 -1.765965,2.114301 C 76.213587,63.739366 77.084004,64.240974 69.909585,38.43428 43.694525,70.467485 53.52976,65.272999 39.421774,65.923535 20.880171,65.717587 19.373136,67.041543 19.153008,63.893469 c 0.0254,-1.068974 0.45719,-1.706434 13.182316,-34.511127 l -1.219172,-3.883606 -4.190911,-0.08826 0.152397,-4.060132 15.620664,0 c 1.380038,2.18698 -0.558788,2.177172 -7.543638,3.97187 l 1.219174,3.971867 31.165132,0.08827 C 65.439282,20.889407 66.624589,21.418988 57.175992,21.438603 l -0.0762,-4.148397 z M 68.4395,33.735488 37.943802,33.672855 46.757274,61.105666 68.4395,33.735488 Z m -34.172483,1.628431 8.651261,26.305436 -18.924635,0.06263 10.273374,-26.368067 z" />
- </g>
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2323-6"
- d="" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2329-5"
- d="" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2323-9"
- d="" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2329-2"
- d="" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2323-6-6"
- d="" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2329-5-6"
- d="" />
-</svg>
diff --git a/navit/icons/biergarten.svg b/navit/icons/biergarten.svg
deleted file mode 100644
index 1bfabe4ba..000000000
--- a/navit/icons/biergarten.svg
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="biergarten.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="101.97187"
- inkscape:cy="-18.299786"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-maximized="1"
- inkscape:window-width="1024"
- inkscape:window-x="-3"
- inkscape:window-y="-3"
- inkscape:zoom="3.1862067"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective12"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3036"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3052"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3945"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327"
- transform="matrix(0.04240815,0,0,0.04240815,-0.31385283,-1.2549857)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <path
- d="M 4.6284384,2.2838463 9.7052002,1.3790544 15.31525,1.9641546 15.656376,17.37507 l 0.7883,1.232593 c 0,0 -2.557901,2.418836 -6.4837588,2.467088 -3.9258585,0.04825 -6.1832934,-2.408369 -6.1832934,-2.408369 L 4.7734314,17.141754 4.6284384,2.2838463 z"
- id="path2381"
- sodipodi:nodetypes="ccccczccc"
- style="opacity:0.1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
- inkscape:connector-curvature="0" />
- <path
- d="M 9.6967822,1.298997 C 7.9805787,1.3367897 6.2918464,1.4559349 4.6392821,2.0209847 l 0.1915504,15.0213053 -0.013183,1.03e-4 c -0.6099492,0.392859 -0.9589311,1.066499 -0.9542799,1.558143 0.013102,1.384886 2.8426458,2.481355 6.3185034,2.44847 3.475861,-0.03289 6.280855,-1.182657 6.267753,-2.567543 -0.0041,-0.434521 -0.286499,-1.051626 -0.777946,-1.403324 l -0.122784,-0.08783 0.09141,-15.073423 C 13.623539,1.3653687 11.641812,1.2561656 9.6967822,1.298997 z"
- id="path3839"
- sodipodi:nodetypes="ccccssscccc"
- style="fill:none;stroke:#c02727;stroke-width:1.48428524;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- inkscape:connector-curvature="0" />
- <path
- d="m 15.830763,4.0692349 3.971641,-0.1687484 c 0.644252,0.1227873 0.976361,0.5001699 1.001208,1.1281663 l -0.988357,8.2399992 c -0.02751,0.6006 -0.413719,0.849235 -0.943074,0.957403 l -2.942219,0.328601"
- id="path3841"
- sodipodi:nodetypes="cccccc"
- style="fill:none;stroke:#c02727;stroke-width:1.05466926;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
- <path
- d="m 4.798182,16.855887 c 1.2002809,1.59622 3.4183264,2.031312 5.42049,1.966571 1.947429,-0.06297 4.281393,-0.471658 5.368447,-1.871057"
- id="path3931"
- sodipodi:nodetypes="csc"
- style="fill:none;stroke:#c02727;stroke-width:0.93545049;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- inkscape:connector-curvature="0" />
- <path
- d="m 4.6198206,16.890802 c 1.2002808,1.596221 3.5966878,2.031312 5.5988514,1.966571 1.947429,-0.06297 4.36621,-0.556474 5.453265,-1.955873"
- id="path3933"
- sodipodi:nodetypes="csc"
- style="fill:none;stroke:#c02727;stroke-width:1.27224457;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- inkscape:connector-curvature="0" />
- <path
- d="m 15.830763,4.4434148 3.691004,-0.1687479 c 0.644254,0.1227873 0.976363,0.5001697 1.001209,1.1281661 l -0.894811,7.576456 c -0.02751,0.600599 -0.41372,0.849234 -0.943074,0.957401 l -2.755129,0.337331"
- id="path3935"
- sodipodi:nodetypes="cccccc"
- style="fill:none;stroke:#c02727;stroke-width:1.27224457;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
- <path
- d="m 10.107638,1.4896108 c -3.6234199,0 -5.624889,0.9239367 -5.624889,1.1390546 0,0.00914 0.00453,0.017615 0.014962,0.026601 l -0.014962,0 -0.235526,4.5933464 0.7880892,0 L 4.9205474,4.0050179 C 8.3655344,6.3929988 10.630503,3.6802297 15.143439,3.9135788 l 0.0028,3.3350338 0.813455,0 -0.327409,-4.8739815 -0.01001,0 c 0.01043,-0.00899 0.01663,-0.017469 0.01663,-0.026601 0,-0.2151178 -1.907887,-0.8584194 -5.531344,-0.8584194 l 2e-6,0 z"
- id="path2209"
- sodipodi:nodetypes="csccccccccccscc"
- style="opacity:0.75;fill:#c02727"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/boat_ramp.svg b/navit/icons/boat_ramp.svg
deleted file mode 100644
index 2915d58bd..000000000
--- a/navit/icons/boat_ramp.svg
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="boat_ramp.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/navit/icons/png/boat_ramp.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568543"
- inkscape:cx="28.065039"
- inkscape:cy="46.174477"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:snap-global="false"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g3391"
- transform="matrix(0.21999998,0,0,0.21999998,26.056881,25.365974)" />
- <g
- id="g3408"
- transform="matrix(0.20644918,0,0,0.20644876,0.93453755,16.796369)">
- <g
- id="g3397"
- transform="translate(118.44039,37.29988)">
- <path
- inkscape:connector-curvature="0"
- id="rect2381-3"
- d="m -24.189453,-49.107422 c -32.111976,0.07378 -63.074914,1.026643 -95.186887,1.10068 5.3956,11.45783 9.64265,22.031544 15.03454,33.491117 25.68685,0.07091 51.373697,0.14209 77.06055,0.210937 1.813652,-11.602582 3.623461,-23.205766 5.435547,-34.808593 -0.78125,0.002 -1.5625,0.0039 -2.34375,0.0059 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.41036224;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- sodipodi:nodetypes="ccccccc" />
- <path
- inkscape:connector-curvature="0"
- id="path3154-6"
- d="m -92,-114.0957 c -9.65306,21.370408 -17.89279,40.79588 -27.54477,62.166781 18.15494,-0.07914 34.895674,1.783866 53.050629,1.706263 0.06733,-21.682946 0.137852,-43.365882 0.205079,-65.048824 l -25.179688,0 -0.411749,0.91129 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.41036224;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- sodipodi:nodetypes="ccccccc" />
- <path
- inkscape:connector-curvature="0"
- id="path3156-7"
- d="m -66.152344,-100.51562 c 0.03693,16.71875 0.08011,33.437491 0.117188,50.156245 15.351562,0 30.703125,0 46.054687,0 -8.699351,-17.300719 -17.401625,-34.599967 -26.101562,-51.900395 -6.691403,-0.0966 -13.382814,-0.19259 -20.074219,-0.28906 0.0013,0.67774 0.0026,1.35547 0.0039,2.03321 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.41036224;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path3158-5"
- d="m -65.517578,-115.5918 c -5.745429,0.11003 -5.452576,7.40481 -4.640625,11.42188 -0.01453,19.51398 -0.107833,39.175322 -0.05859,58.749998 3.976838,1.680534 8.943175,-1.045553 8.318359,-5.695312 -1.044411,-18.603485 0.09213,-37.34228 -0.318359,-56.025386 -0.646687,-3.48319 2.084709,-9.24994 -3.300781,-8.45118 z"
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.41036224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="rect2381"
- d="M 3.7107426,-6.7124887 91.418937,-6.9074002 87.236577,19.880514 16.140737,19.685602 3.7107426,-6.7124887 Z"
- style="display:inline;overflow:visible;visibility:visible;fill:#3d6b98;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.41036224;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="path3154"
- d="m 29.053699,-73.076985 18.585768,0 -0.181336,57.0637 -44.2710634,0.194911 25.8666314,-57.258611 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#9fbcd9;fill-opacity:1;fill-rule:evenodd;stroke:#4d618c;stroke-width:4.41036224;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="path3156"
- d="m 69.373459,-60.101441 -13.582196,-0.194911 0.106113,44.13064 35.572778,0 -22.096673,-43.935728 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#9fbcd9;fill-opacity:1;fill-rule:evenodd;stroke:#4d618c;stroke-width:4.41036224;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3158"
- d="m 51.724001,-75.297778 0,66.3505985"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.41036224px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/boundary_stone.svg b/navit/icons/boundary_stone.svg
deleted file mode 100644
index 15a3def54..000000000
--- a/navit/icons/boundary_stone.svg
+++ /dev/null
@@ -1,320 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
- version="1.0"
- sodipodi:docname="boundary_stone.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 11 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="22 : 11 : 1"
- inkscape:persp3d-origin="11 : 7.3333333 : 1"
- id="perspective3149" />
- <linearGradient
- id="linearGradient2338">
- <stop
- style="stop-color:#b1b1b1;stop-opacity:1;"
- offset="0"
- id="stop2340" />
- <stop
- style="stop-color:#e4e4e4;stop-opacity:1;"
- offset="1"
- id="stop2342" />
- </linearGradient>
- <linearGradient
- id="linearGradient2888">
- <stop
- style="stop-color:#c7a94c;stop-opacity:1;"
- offset="0"
- id="stop2890" />
- <stop
- style="stop-color:#e2ca80;stop-opacity:1;"
- offset="1"
- id="stop2892" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient2488"
- x1="52.899231"
- y1="41.985237"
- x2="68.677269"
- y2="54.216274"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient2492"
- x1="68.432648"
- y1="79.626251"
- x2="81.458694"
- y2="50.271763"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient2496"
- x1="62.836948"
- y1="24.922943"
- x2="64.518715"
- y2="21.742872"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient2500"
- x1="61.950199"
- y1="19.357821"
- x2="69.960953"
- y2="16.116596"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient2504"
- x1="67.882256"
- y1="27.858391"
- x2="73.386223"
- y2="18.073563"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient2508"
- x1="68.371498"
- y1="59.781395"
- x2="79.318268"
- y2="42.841408"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient2512"
- x1="47.639889"
- y1="77.210625"
- x2="60.543633"
- y2="100.63306"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient2516"
- x1="67.331856"
- y1="100.8471"
- x2="88.063461"
- y2="80.237801"
- gradientUnits="userSpaceOnUse" />
- <filter
- inkscape:collect="always"
- id="filter3212"
- x="-0.10113489"
- width="1.2022698"
- y="-0.091361336"
- height="1.1827227">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="2.2098651"
- id="feGaussianBlur3214" />
- </filter>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient3180"
- gradientUnits="userSpaceOnUse"
- x1="52.899231"
- y1="41.985237"
- x2="68.677269"
- y2="54.216274" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient3182"
- gradientUnits="userSpaceOnUse"
- x1="68.432648"
- y1="79.626251"
- x2="81.458694"
- y2="50.271763" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient3184"
- gradientUnits="userSpaceOnUse"
- x1="62.836948"
- y1="24.922943"
- x2="64.518715"
- y2="21.742872" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient3186"
- gradientUnits="userSpaceOnUse"
- x1="61.950199"
- y1="19.357821"
- x2="69.960953"
- y2="16.116596" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient3188"
- gradientUnits="userSpaceOnUse"
- x1="67.882256"
- y1="27.858391"
- x2="73.386223"
- y2="18.073563" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3190"
- gradientUnits="userSpaceOnUse"
- x1="68.371498"
- y1="59.781395"
- x2="79.318268"
- y2="42.841408" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3192"
- gradientUnits="userSpaceOnUse"
- x1="47.639889"
- y1="77.210625"
- x2="60.543633"
- y2="100.63306" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3194"
- gradientUnits="userSpaceOnUse"
- x1="67.331856"
- y1="100.8471"
- x2="88.063461"
- y2="80.237801" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="25.349779"
- inkscape:cx="11.075277"
- inkscape:cy="9.1884538"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- width="744.09px"
- inkscape:window-width="1248"
- inkscape:window-height="975"
- inkscape:window-x="217"
- inkscape:window-y="46"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="colors" />
- <g
- inkscape:label="outline"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g3164"
- transform="matrix(0.21505067,0,0,0.21505067,-2.7995717,-2.4880162)">
- <path
- sodipodi:nodetypes="cccccccccc"
- id="path3109"
- d="m 54.317339,45.520703 c -2.507163,0.577656 -21.483223,4.676458 -17.001867,4.060079 1.06315,13.716526 5.07969,24.500379 1.395655,38.067458 6.659698,3.370704 17.423387,12.52189 23.806722,15.73692 14.21287,-3.889204 16.091141,-8.82222 26.557236,-11.77872 -7.055022,-6.778594 -10.7034,-17.080106 -15.060519,-24.318237 -3.955424,-6.606692 -10.2482,-13.7551 -16.357412,-19.766779 -2.956017,-1.832871 1.076228,-2.509945 -3.339815,-2.000721 z m 26.516421,38.458307 0,0 z"
- style="fill:#000000;fill-opacity:0.62745098;fill-rule:evenodd;stroke:none;filter:url(#filter3212)" />
- <path
- sodipodi:nodetypes="ccccccc"
- id="path2486"
- d="M 58.219732,20.244571 67.39301,28.561676 64.885647,85.49715 C 58.704758,80.809281 52.448687,76.497319 46.416783,71.064527 l 5.565121,-26.724815 5.137035,-20.181209 1.100793,-3.913932 z"
- style="fill:url(#linearGradient3180);fill-rule:evenodd;stroke:none" />
- <path
- id="path2490"
- d="m 81.214081,23.975037 -13.759916,4.219707 -1.590035,32.412246 -1.100793,24.829004 0.917328,0.06115 23.85052,-7.094001 -3.730466,-30.57759 -3.30238,-18.101934 -1.284258,-5.748587 z"
- style="fill:url(#linearGradient3182);fill-rule:evenodd;stroke:none" />
- <path
- sodipodi:nodetypes="cccccc"
- id="path2494"
- d="m 58.525508,20.366881 8.745191,8.194794 0.183466,0.06116 0,-0.428087 -2.385052,-9.173277 -6.543605,1.345414 z"
- style="fill:url(#linearGradient3184);fill-rule:evenodd;stroke:none" />
- <path
- id="path2498"
- d="m 58.280888,20.183416 12.903743,-4.403173 c 0,0 4.219707,0 3.608156,0.183465 -0.611552,0.183466 -9.90714,3.118914 -9.90714,3.118914 l -6.115518,1.161949 -0.489241,-0.06115 z"
- style="fill:url(#linearGradient3186);fill-rule:evenodd;stroke:none" />
- <path
- id="path2502"
- d="m 64.885647,19.082622 9.723674,-3.118914 6.665915,8.133639 -13.821071,4.158553 -2.568518,-9.173278 z"
- style="fill:url(#linearGradient3188);fill-rule:evenodd;stroke:none" />
- <path
- sodipodi:nodetypes="cccccc"
- id="path2506"
- d="M 68.554958,41.771195 81.764477,38.101884 84.577615,55.28649 69.11802,59.920317 67.943407,59.750818 68.554958,41.771195 z"
- style="fill:url(#linearGradient3190);fill-rule:evenodd;stroke:none" />
- <path
- id="path2510"
- d="m 46.906024,71.186837 -2.018121,3.30238 -2.201587,6.237828 -1.467724,5.993208 6.482449,6.421294 10.274071,7.644393 5.19819,3.85278 0.672707,-9.723673 0.978483,-9.356743 -5.993208,-4.892414 -7.338621,-5.565122 -4.586639,-3.913931 z"
- style="fill:url(#linearGradient3192);fill-rule:evenodd;stroke:none" />
- <path
- id="path2514"
- d="m 64.824492,85.558304 -0.550397,5.870898 -1.039638,13.209518 11.80295,-3.42469 15.594571,-5.932052 3.057759,-1.7735 c 0,0 -1.284258,-6.84938 -1.284258,-7.094001 0,-0.244621 -2.996604,-8.072484 -2.996604,-8.072484 l -3.057759,1.161948 -14.188002,3.852777 -7.338622,2.201586 z"
- style="fill:url(#linearGradient3194);fill-rule:evenodd;stroke:none" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none"
- d="M 58.219732,20.244571 67.39301,28.561676 64.885647,85.49715 C 58.704758,80.809281 52.448687,76.497319 46.416783,71.064527 l 5.565121,-26.724815 5.137035,-20.181209 1.100793,-3.913932 z"
- id="path3101"
- sodipodi:nodetypes="ccccccc" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none"
- d="m 58.525508,20.366881 8.745191,8.194794 0.183466,0.06116 0,-0.428087 -2.385052,-9.173277 -6.543605,1.345414 z"
- id="path3103"
- sodipodi:nodetypes="cccccc" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none"
- d="m 46.906024,71.186837 -2.018121,3.30238 -2.201587,6.237828 -1.467724,5.993208 6.482449,6.421294 10.274071,7.644393 5.19819,3.85278 0.672707,-9.723673 0.978483,-9.356743 -5.993208,-4.892414 -7.338621,-5.565122 -4.586639,-3.913931 z"
- id="path3105" />
- <path
- style="fill:#ffffff;fill-opacity:0.1254902;fill-rule:evenodd;stroke:none"
- d="m 58.280888,20.183416 12.903743,-4.403173 c 0,0 4.219707,0 3.608156,0.183465 -0.611552,0.183466 -9.90714,3.118914 -9.90714,3.118914 l -6.115518,1.161949 -0.489241,-0.06115 z"
- id="path3107" />
- <path
- sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
- id="path2319"
- d="m 71.1875,15.6875 -13.25,4.40625 C 53.334936,36.194071 49.351101,54.386887 46.375,70.8125 43.448109,75.529282 42.116812,81.20342 40.78125,86.875 47.323489,94.11951 55.029454,98.657153 62.875,105.25 75.502794,101.19385 81.590689,99.9608 93.90625,94.03125 l 0.4375,-0.15625 -0.125,-0.4375 C 93.482587,88.325715 92.35657,83.369872 90,78.90625 87.602332,59.833332 86.140024,43.197917 81.46875,24.125 l -6.53125,-8.28125 -3.75,-0.15625 z m 3.1875,0.5625 6.53125,7.71875 -13.3125,4.1875 13.1875,-3.84375 c 4.87566,18.761157 6.145112,35.332593 8.09375,54.09375 -10.150861,3.39152 -13.144326,3.53981 -23.59375,6.90625 1.000467,-21.292681 0.987149,-36.188454 2.3125,-57.15625 L 67.4375,28.1875 65.3125,19.03125 74.375,16.25 z m -3.419194,-0.215609 2.861517,0.0054 -9.050318,2.845051 -6.126682,1.303998 12.315483,-4.15441 z M 64.625,19.34375 67.375,28.3125 67.3125,28.28125 64.34375,85 C 59.25359,80.044453 53.31591,77.105918 47.3125,71.125 49.856154,54.448769 53.517852,36.135627 58.34375,20.4375 L 67.047335,28.325444 58.961167,20.567862 64.625,19.34375 z M 81.8125,37.78125 68.34375,41.46875 67.875,59.875 67.9375,59.5625 68.84375,41.84375 81.625,38.40625 84.21875,55.125 69.1875,59.75 68.8125,59.96875 84.71875,55.375 81.8125,37.78125 z m -3.9375,4.375 c -0.69677,0.990319 -1.367162,2.077349 -2.40625,1.8125 l -1.375,-0.84375 c -0.441312,0.869283 -1.310941,1.096088 -1.3125,2.625 l -2.375,-1.21875 -0.4375,0.28125 3.15625,2.46875 c 0.294394,-1.693154 0.51372,-3.746642 1.375,-2.71875 l 1.03125,0.625 c 1.497377,-0.206755 1.493419,-1.403548 2.03125,-2.25 l 1.53125,1.3125 1.6875,-0.0625 0.09375,-0.375 -1.21875,-0.40625 -1.78125,-1.25 z m -0.84375,6 L 75,49.75 73.25,48.65625 c -1.200935,-0.763579 -1.895833,0.75 -2.84375,1.125 l 0.34375,0.1875 c 0.843749,-0.112318 1.6875,-0.767404 2.53125,-0.25 0.57379,0.238708 0.820712,0.804288 1.8125,0.625 1.412946,0.515519 1.607876,-1.052737 2.28125,-1.59375 l 1.65625,0.5 0.28125,-0.46875 -2.28125,-0.625 z m 4.375,2.90625 c -0.815154,0.06082 -1.362815,0.793306 -2,1.28125 l -1.9375,-1.1875 -2.6875,1.875 0.15625,0.21875 2.4375,-0.96875 1.9375,1.1875 c 1.142586,-0.268799 2.090001,-0.700407 3.125,-1.9375 L 82.3125,51.25 C 81.962471,51.082327 81.677968,51.042227 81.40625,51.0625 z M 46.9375,71.53125 C 53.182065,77.557367 58.838405,80.436022 64.59375,85.6875 63.961819,91.012162 62.79715,98.164203 62.75,103.78125 55.018356,98.002481 47.663563,93.784353 41.5625,86.375 42.73214,81.11607 43.86175,75.837125 46.9375,71.53125 z M 89.125,78.75 c 2.658726,4.833332 3.610665,9.666667 4,14.5 -11.345598,5.642126 -16.905102,7.16896 -29.21875,10.875 C 64.270832,98.481421 64.635417,91.29058 65,85.9375 75.398051,82.435811 78.774238,82.121191 89.125,78.75 z"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/bowling.svg b/navit/icons/bowling.svg
deleted file mode 100644
index 5399c594b..000000000
--- a/navit/icons/bowling.svg
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
- sodipodi:docname="bowling.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="12.823529"
- inkscape:cy="9.1530784"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="21.018182"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0"
- inkscape:measure-start="0,0"
- inkscape:measure-end="0,0" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <circle
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:1.07299995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4536"
- cx="10.847751"
- cy="10.771626"
- r="8.3433704" />
- <ellipse
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.27539206;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4538"
- cx="13.571632"
- cy="5.7164307"
- rx="0.86230391"
- ry="0.86230397" />
- <ellipse
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.27539206;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4538-4"
- cx="16.271626"
- cy="8.6306229"
- rx="0.86230391"
- ry="0.86230397" />
- <ellipse
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.27539206;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4538-4-4"
- cx="12.655709"
- cy="9.0588236"
- rx="0.86230391"
- ry="0.86230397" />
-</svg>
diff --git a/navit/icons/bridge.svg b/navit/icons/bridge.svg
deleted file mode 100644
index 992f03e7d..000000000
--- a/navit/icons/bridge.svg
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
- sodipodi:docname="bridge.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="11.711456"
- inkscape:cy="11.667262"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="705"
- inkscape:window-width="1366"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:zoom="31.82205"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="1"
- inkscape:measure-start="0,0"
- inkscape:measure-end="0,0" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <ellipse
- style="fill:#ffffff;fill-opacity:0;stroke:none;stroke-width:1.07299995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path5130"
- cx="11.490052"
- cy="16.147924"
- rx="8.3499136"
- ry="3.948962" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 0.47725717,11.030944 20.93572883,0.0059 v 6.476088 c 0,0 -1.702822,-0.0306 -2.144525,-0.03142 -0.01596,-4.621507 -5.724722,-5.218489 -8.030421,-5.205035 -2.1116789,0.01232 -7.9665318,0.09086 -8.0304209,5.236456 -0.4724108,-0.0081 -2.73036193,0 -2.73036193,0 z"
- id="path5142"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccsccc" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:1.07299995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5144"
- width="0.251398"
- height="2.671104"
- x="1.9797593"
- y="7.7534037" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:1.07299995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5144-7"
- width="0.251398"
- height="2.671104"
- x="5.4804759"
- y="7.7534037" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:1.07299995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5144-1"
- width="0.251398"
- height="2.671104"
- x="8.9811935"
- y="7.7534037" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:1.07299995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5144-8"
- width="0.251398"
- height="2.671104"
- x="12.481911"
- y="7.7534037" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:1.07299995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5144-11"
- width="0.251398"
- height="2.671104"
- x="15.982629"
- y="7.7534037" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:1.07299995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5144-74"
- width="0.251398"
- height="2.671104"
- x="19.483345"
- y="7.7534037"
- inkscape:transform-center-x="0.062849458" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:1.05754387;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5185"
- width="20.91246"
- height="0.063668601"
- x="0.55105257"
- y="7.1559234" />
-</svg>
diff --git a/navit/icons/buddhist.svg b/navit/icons/buddhist.svg
deleted file mode 100644
index eaae0d3c4..000000000
--- a/navit/icons/buddhist.svg
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="buddhist.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="26.515814"
- inkscape:cy="2.1294787"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="7.3734169"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2466"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3333"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3401"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3464"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3581"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4312"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 L 1.704,516.927 C 1.704,557.771 22.599,579.156 63.896,579.156 L 515.92,579.156 C 557.227,579.156 578.149,558.841 578.149,516.927 L 578.149,66.804 C 578.149,24.203 557.227,1.768 514.628,1.768 C 514.624,1.768 66.133,1.625 66.275,1.768 z "
- id="path1329"
- style="fill:#111;fill-opacity:0;stroke:#eee;stroke-opacity:0;stroke-width:3.40799999" />
- </g>
- <path
- d="M 280.20349,557.10339 C 275.4337,552.33363 272.92649,544.97509 272.92649,535.74583 L 272.92649,521.66522 L 251.81633,517.51206 C 169.90036,501.39607 97.450677,416.48466 79.870405,328.50075 C 74.50844,328.08683 71.543681,327.87821 65.877415,327.87821 C 48.155947,327.87821 36.424315,316.05296 36.424315,298.19005 C 36.424315,281.9532 46.404667,272.45513 64.618644,271.35819 L 78.267012,270.53622 L 84.708567,245.53938 C 95.45536,203.83597 111.41279,176.40024 143.7188,144.08261 C 176.82962,110.9599 204.54359,94.326009 244.55244,84.413765 C 256.70863,81.402045 257.64208,83.725098 271.32566,80.67256 C 273.13348,61.664076 271.48655,40.464466 300.54856,41.460973 C 323.51919,42.262319 325.71207,56.2882 325.80681,79.561024 C 333.68452,80.332975 336.24173,80.565766 349.87852,83.369852 C 431.8724,100.22995 505.50299,174.202 519.87045,256.92755 C 522.14441,270.02049 523.36498,271.36746 532.02907,270.34525 C 543.46567,268.99596 562.20002,277.9001 565.38442,286.19851 C 573.27185,306.75288 561.70867,324.41429 538.3069,327.55624 C 522.98627,329.61323 522.25963,330.27907 519.83815,344.48051 C 516.04575,366.72197 501.16452,400.78164 484.54908,425.24892 C 455.26472,468.37208 409.61307,500.46055 356.61187,515.17582 L 329.32317,522.75229 L 328.14487,537.19896 C 327.49678,545.14465 324.37773,554.51096 321.21357,558.01301 C 313.11632,566.97501 289.55242,566.45232 280.20349,557.10339 z M 272.92649,417.02134 C 272.92649,392.00669 271.66237,371.54015 270.11728,371.54015 C 268.57222,371.54015 253.47426,385.4462 236.56628,402.44247 C 219.54969,419.54791 209.94072,430.05151 206.36897,435.20723 C 210.77167,438.43078 218.50021,447.11973 237.841,455.07072 C 254.04663,461.73283 267.40333,463.64123 273.51621,464.56308 C 272.5054,456.96179 272.92649,445.56067 272.92649,417.02134 z M 382.19507,446.52535 L 398.03258,436.76152 L 365.57298,404.15084 C 347.7202,386.21497 331.85127,371.54015 330.30865,371.54015 C 328.76604,371.54015 327.50391,392.21135 327.50391,417.47614 L 327.50391,463.41215 L 346.93075,459.85065 C 353.43456,458.55199 369.30349,452.55561 382.19507,446.52535 z M 200.12988,359.71504 L 233.84414,327.87821 L 185.66824,327.87821 L 137.49232,327.87821 L 139.95901,341.02682 C 142.78058,356.06709 160.50561,393.93661 164.05366,392.50494 C 165.35272,391.98073 181.58701,377.22529 200.12988,359.71504 z M 454.23342,368.22999 C 459.92766,355.72266 462.40275,345.38773 463.64563,339.88451 L 465.90535,327.87821 L 417.70184,327.87821 L 369.49834,327.87821 L 402.09307,360.62465 C 420.02017,378.6352 436.03596,393.37113 437.68369,393.37113 C 439.33142,393.37113 448.53921,380.73732 454.23342,368.22999 z M 313.85504,332.2564 C 320.11269,329.02047 330.38397,318.23547 333.41415,310.98326 C 338.24385,299.42416 335.28797,287.19044 326.21651,277.24406 C 311.75004,261.38234 292.95735,261.28732 276.90551,276.41206 C 261.24167,291.17118 265.07665,311.66649 273.97037,322.07426 C 284.17075,334.01111 300.67643,339.07134 313.85504,332.2564 z M 229.26455,269.58642 C 229.26455,268.5441 214.75489,253.2489 197.02085,235.59703 L 164.77718,203.50274 L 157.01607,216.06041 C 148.29704,230.1681 142.70319,245.40888 137.90208,271.57301 C 140.30263,271.91091 144.23475,271.48154 183.78336,271.48154 C 208.79801,271.48154 229.26455,270.62875 229.26455,269.58642 z M 462.92924,261.68287 C 462.34101,256.89671 459.52475,242.24164 453.64119,229.122 C 447.69654,215.86612 438.679,204.16937 437.10172,204.16937 C 434.47098,204.16937 371.16608,266.97558 371.16527,269.58642 C 371.16494,270.62875 392.04081,271.1409 417.55609,270.72455 C 463.51111,269.97469 463.9379,269.88965 462.92924,261.68287 z M 272.92649,182.26908 L 272.92649,134.89934 L 262.92062,137.15907 C 244.68613,137.95699 206.54775,159.03901 207.43358,162.97316 C 207.98968,165.44286 269.49142,229.63884 271.941,229.63884 C 272.48303,229.63884 272.92649,208.32246 272.92649,182.26908 z M 372.62201,147.12845 C 359.03355,140.74987 343.42234,138.62007 338.41939,137.99454 L 329.32317,136.85722 L 328.31247,184.15765 L 327.30173,231.45809 L 362.11499,196.89238 L 396.92823,162.32668 L 372.62201,147.12845 z"
- id="path1873"
- sodipodi:nodetypes="cccccsscccsscscssssssscccsccsscscccccscccccccccscccccccsccssssccccccsccssssccccssccccccccc"
- style="opacity:0.25;fill:#ffffff;fill-opacity:0" />
- <path
- d="M 10.163994,21.300665 C 9.97074,21.107413 9.8691572,20.809272 9.8691572,20.435337 l 0,-0.570493 -0.8553044,-0.168271 c -3.3189284,-0.65296 -6.2543185,-4.093252 -6.9666052,-7.65803 -0.2172468,-0.01677 -0.3373675,-0.02522 -0.5669432,-0.02522 -0.71800753,0 -1.19332933,-0.479114 -1.19332933,-1.202853 0,-0.657856 0.40436646,-1.0426827 1.14232863,-1.0871262 L 1.9822848,9.6900418 2.243272,8.6772631 C 2.6786919,6.9875976 3.3252271,5.8760046 4.6341458,4.5666154 5.9756721,3.2246072 7.0985379,2.550664 8.7195473,2.1490574 9.2120705,2.0270333 9.24989,2.1211582 9.8042976,1.9974772 9.8775453,1.2273253 9.8108,0.36839642 10.9883,0.40877097 c 0.930684,0.0324661 1.019531,0.60074373 1.02337,1.54367143 0.319175,0.031273 0.422784,0.040705 0.975295,0.1543195 3.322085,0.6831078 6.305321,3.6801782 6.887437,7.0319077 0.09213,0.5304766 0.141584,0.5850508 0.492621,0.5436344 0.463368,-0.054666 1.222414,0.3060947 1.351434,0.642315 0.319569,0.832786 -0.148928,1.548361 -1.09708,1.67566 -0.620734,0.08334 -0.650175,0.110319 -0.748284,0.685709 -0.153654,0.90114 -0.756586,2.28111 -1.429781,3.272433 -1.186493,1.747189 -3.036127,3.047293 -5.183537,3.643501 l -1.105635,0.30697 -0.04774,0.585325 c -0.02625,0.321929 -0.152631,0.701417 -0.28083,0.843307 -0.328071,0.363107 -1.282792,0.341929 -1.661576,-0.03686 z m -0.2948368,-5.6756 c 0,-1.013499 -0.051216,-1.842727 -0.1138188,-1.842727 -0.062599,0 -0.6743127,0.563421 -1.3593605,1.252046 -0.6894487,0.693049 -1.078768,1.118615 -1.2234816,1.327506 0.1783807,0.130606 0.4915118,0.48265 1.2751283,0.804794 0.6565917,0.269924 1.1977551,0.347245 1.4454254,0.384595 -0.040957,-0.307976 -0.023891,-0.769907 -0.023891,-1.926214 z m 4.4271528,1.195392 0.641677,-0.395594 -1.315141,-1.321262 c -0.723328,-0.726695 -1.366277,-1.321263 -1.428778,-1.321263 -0.0625,0 -0.113638,0.837519 -0.113638,1.861154 l 0,1.861155 0.787103,-0.144299 c 0.26351,-0.05261 0.906459,-0.295567 1.428777,-0.539891 z m -7.3765988,-3.517229 1.3659753,-1.289908 -1.9519066,0 -1.9519082,0 0.099941,0.532732 c 0.1143198,0.609375 0.8324717,2.143706 0.9762252,2.085701 0.052631,-0.02124 0.7103858,-0.619074 1.4616731,-1.328525 z m 10.2953238,0.344995 c 0.230709,-0.506751 0.330991,-0.925483 0.381347,-1.148453 l 0.09156,-0.48645 -1.953026,0 -1.953025,0 1.320616,1.326762 c 0.726339,0.729721 1.375239,1.326766 1.441999,1.326766 0.06676,0 0.439825,-0.511876 0.670533,-1.018625 z M 11.527428,12.190707 C 11.780965,12.0596 12.197119,11.622632 12.31989,11.3288 12.515572,10.860468 12.395808,10.364804 12.028269,9.9618139 11.442142,9.3191564 10.680732,9.3153062 10.030372,9.9281008 9.3957319,10.526085 9.551111,11.356479 9.9114511,11.778162 10.324732,12.261799 10.993481,12.46682 11.527428,12.190704 z M 8.1001386,9.6515545 c 0,-0.042227 -0.5878766,-0.6619352 -1.3063934,-1.3771227 L 5.4873525,6.9740917 5.172901,7.4828816 C 4.8196386,8.0544724 4.592997,8.6719717 4.3984743,9.7320443 c 0.097261,0.013693 0.2565755,-0.00367 1.8589376,-0.00367 1.0134993,0 1.8427267,-0.034555 1.8427267,-0.076783 z M 17.567357,9.3313327 C 17.543527,9.1374151 17.429419,8.5436464 17.19104,8.0120882 16.950185,7.4750091 16.584828,7.0011012 16.520922,7.0011012 c -0.106587,0 -2.671465,2.5446723 -2.671497,2.6504533 -1.4e-5,0.042235 0.845799,0.062982 1.879582,0.046114 1.861925,-0.030385 1.879217,-0.033828 1.83835,-0.3663345 z m -7.6981998,-3.2175491 0,-1.9192447 -0.4054002,0.091556 c -0.7387936,0.032328 -2.2840178,0.8864929 -2.2481269,1.0458897 0.022529,0.1000635 2.5143512,2.7010435 2.6135985,2.7010435 0.021963,0 0.039925,-0.8636594 0.039925,-1.9192446 z M 13.908446,4.6900165 C 13.357892,4.4315805 12.725385,4.345289 12.522684,4.319945 L 12.15414,4.2738621 12.11319,6.1902977 12.07224,8.1067349 13.482742,6.7062617 14.893245,5.3057892 13.908448,4.6900134 z"
- id="path5316"
- sodipodi:nodetypes="cccccsscccsscscssssssscccsccsscscccccscccccccccscccccccsccssssccccccsccssssccccssccccccccc"
- style="fill:#5e8019"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/bus.svg b/navit/icons/bus.svg
deleted file mode 100644
index 0730db313..000000000
--- a/navit/icons/bus.svg
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="bus.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/navit/icons/png/bus.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3181">
- <stop
- id="stop3183"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:0;" />
- <stop
- id="stop3185"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3169">
- <stop
- style="stop-color:#d2d2d2;stop-opacity:1;"
- offset="0"
- id="stop3171" />
- <stop
- style="stop-color:#656565;stop-opacity:1;"
- offset="1"
- id="stop3173" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3169"
- id="linearGradient3175"
- x1="13.119969"
- y1="12.919525"
- x2="13.280306"
- y2="4.8899608"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.7280586,0,0,4.7280586,-4.1607651,-78.721961)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3181"
- id="linearGradient3179"
- gradientUnits="userSpaceOnUse"
- x1="13.069741"
- y1="8.9047422"
- x2="13.129622"
- y2="-6.9136248"
- gradientTransform="matrix(4.2023165,0,0,4.2023165,1.675985,-74.040363)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#0083f4"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="3.959798"
- inkscape:cx="22.306858"
- inkscape:cy="76.440013"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g4235"
- transform="matrix(0.20443644,0,0,0.20443644,0.69711429,16.566472)">
- <path
- inkscape:connector-curvature="0"
- id="rect3159-6"
- d="m 44.909514,-80.500443 c -15.86237,0.23187 -31.71187,1.520829 -47.3867205,3.974609 -0.28658,30.788752 -0.51179,61.578861 -0.40625,92.369141 2.90480003,1.051928 7.0449,-0.951187 9.36719,0.59375 -0.85233,7.790006 9.0546105,10.764473 15.1816405,8.585938 4.24426,-0.698021 7.05574,-4.816893 6.95313,-8.982422 13.01726,0.04326 26.19722,-0.08633 39.11328,0.06445 -0.18119,6.160195 5.91821,10.86098 11.806639,9.830078 5.419494,0.773496 11.06969,-3.735344 10.984375,-9.320312 4.828147,0.192527 11.098512,-2.915111 9.484372,-8.6816415 -1.238765,-18.5942465 -0.194585,-37.4784905 -0.622325,-56.1854705 -0.0292,-9.3171 -0.0692,-18.634162 -0.10228,-27.951248 -17.893022,-3.484834 -36.171391,-4.544919 -54.373051,-4.296875 z"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <rect
- ry="4.7280588"
- rx="4.7280588"
- y="-4.634974"
- x="10.192269"
- height="25.328899"
- width="14.353036"
- id="rect3159"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <rect
- ry="4.7280588"
- rx="4.7280588"
- y="-4.2128253"
- x="71.994743"
- height="25.328899"
- width="14.353036"
- id="rect3163"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc"
- id="rect2386"
- d="m 1.4960195,-73.698399 c 27.7581905,-4.180266 64.9219065,-5.139026 93.8013145,0.211074 l 0.168838,47.175047 0,37.718928 -94.3501045,0 0,-37.718928 0.379952,-47.386121 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#516280;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <rect
- ry="4.516984"
- rx="4.7280588"
- y="-69.265846"
- x="6.7306547"
- height="15.366194"
- width="83.796448"
- id="rect3165"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#babd00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="path3167"
- d="m 6.0309104,-64.537786 84.3694966,0.211074 -0.820503,46.689022 -84.0550481,0 0.5060545,-46.900096 z"
- style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3175);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <rect
- y="-7.6322241"
- x="5.5486412"
- height="8.8651075"
- width="13.719812"
- id="rect3187"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <rect
- y="-7.8010826"
- x="67.35112"
- height="8.8651075"
- width="13.719812"
- id="rect3415"
- style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <rect
- y="-7.8010826"
- x="76.807243"
- height="8.8651075"
- width="13.719812"
- id="rect3413"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <rect
- y="-7.8010826"
- x="14.582609"
- height="8.8651075"
- width="13.719812"
- id="rect3417"
- style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccc"
- id="rect3419"
- d="m 63.797887,-38.40498 6.158688,0 c 3.29428,0 5.946357,2.533678 5.946357,5.680891 l 0,10.193752 0.0929,5.282697 -18.03813,0.06638 -0.106189,-5.349061 0,-10.193751 c 0,-3.147214 2.652078,-5.680891 5.946357,-5.680891 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <circle
- r="6.5834627"
- cy="-45.625553"
- cx="66.930336"
- id="path3421"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="path3177"
- d="m 15.189926,-61.769965 66.330066,-0.375269 c 3.183643,11.53701 3.771375,31.35721 3.473053,42.396801 l -73.39522,0 c 0.01334,-10.246596 0.118187,-29.303083 3.592101,-42.021532 z"
- style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3179);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/bus_halt.xpm b/navit/icons/bus_halt.xpm
deleted file mode 100644
index ed7c75e50..000000000
--- a/navit/icons/bus_halt.xpm
+++ /dev/null
@@ -1,51 +0,0 @@
-/* XPM */
-static char *dummy[]={
-"16 16 32 1",
-". c None",
-"f c #009933",
-"e c #019933",
-"h c #149d33",
-"i c #1a9e33",
-"k c #1b9e33",
-"r c #1c9e33",
-"A c #2ca133",
-"v c #2fa233",
-"y c #40a533",
-"D c #49a733",
-"j c #4ea833",
-"d c #53a933",
-"z c #57aa33",
-"B c #68ad33",
-"b c #7cb133",
-"u c #83b333",
-"C c #8fb533",
-"m c #9bb833",
-"a c #9cb833",
-"q c #a0b933",
-"g c #b4bd33",
-"x c #b7bd33",
-"t c #bbbe33",
-"# c #c7c033",
-"l c #d3c333",
-"c c #d4c333",
-"s c #e4c633",
-"w c #ecc833",
-"p c #f1c933",
-"n c #f7ca33",
-"o c #ffcc33",
-".....#abba#.....",
-"...cdeffffedc...",
-"..ghffijjkffhg..",
-".lhfkmnoopqkfhl.",
-".dfrsftoouvwrfd.",
-"#efxnftoouvoxfe#",
-"afionftoouvooifa",
-"bfjonfyzzAvoojfb",
-"bfjonfBCCDvoojfb",
-"afionftoouvooifa",
-"#efxnftoouvoxfe#",
-".dfrsftoouvwrfd.",
-".lhfkmnoopqkfhl.",
-"..ghffijjkffhg..",
-"...cdeffffedc...",
-".....#abba#....."};
diff --git a/navit/icons/bus_stop.svg b/navit/icons/bus_stop.svg
deleted file mode 100644
index 1782c143f..000000000
--- a/navit/icons/bus_stop.svg
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="bus_stop.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata1976">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="-5.8182546"
- inkscape:cy="48.694774"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="123"
- inkscape:window-y="146"
- inkscape:zoom="1.8433542"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective3653"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- id="ArrowStart"
- markerHeight="3"
- markerUnits="strokeWidth"
- markerWidth="4"
- orient="auto"
- refX="10"
- refY="5"
- viewBox="0 0 10 10">
- <path
- d="M 10,0 0,5 10,10 Z"
- id="path2111"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="ArrowEnd"
- markerHeight="3"
- markerUnits="strokeWidth"
- markerWidth="4"
- orient="auto"
- refX="0"
- refY="5"
- viewBox="0 0 10 10">
- <path
- d="M 0,0 10,5 0,10 Z"
- id="path2108"
- inkscape:connector-curvature="0" />
- </marker>
- <inkscape:perspective
- id="perspective2512"
- inkscape:persp3d-origin="177.51199 : 145.02 : 1"
- inkscape:vp_x="0 : 217.53 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="355.02399 : 217.53 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <rect
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0.20552891"
- id="rect3473"
- width="10.815232"
- height="11.762958"
- x="4.6271358"
- y="1.4031579"
- ry="0.68246084" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 9.9565355,2.253461 C 9.2085894,2.2726065 8.3955453,2.4780109 7.8819782,2.6143418 6.3266335,2.8673699 5.9797745,4.6663299 6.0023091,5.9721148 5.7744537,7.790684 5.9707631,9.6258328 5.8877064,11.451282 c 0.8945741,-0.693653 0.7500388,1.065524 1.7401701,0.893167 0.6616797,0.103019 1.3268331,-0.390668 1.4688103,-1.035271 0.6715306,0.121301 1.7383612,-0.36263 2.1845462,0.153344 0.382352,1.244789 2.329111,1.061193 2.632939,-0.118821 1.042,-0.9399 0.318551,-2.5625402 0.518757,-3.7680469 -0.102023,-1.4798739 0.07528,-3.2564776 -0.943865,-4.443878 -0.82501,-0.6170834 -1.737803,-0.6964806 -2.654613,-0.8441933 -0.291373,-0.0308 -0.584957,-0.048018 -0.8779155,-0.034118 z m 0.7101185,3.1266895 c 0.653808,-0.088645 1.592217,-0.086045 1.264083,0.8249251 C 11.105341,6.7360817 10.00443,6.1549574 9.0685868,6.3889283 8.5765015,6.4980173 7.9560464,6.2355183 8.3982089,5.654724 8.6805642,5.0310252 9.7900655,5.587215 10.371607,5.3810951 c 0.09835,4.082e-4 0.196697,-9.091e-4 0.295047,-9.091e-4 z m 1.912784,3.1913177 c 0.885536,0.4797996 -0.806171,0.7701076 -0.165387,0.048573 0.04701,-0.034446 0.106661,-0.055864 0.165387,-0.048573 z m -4.7363979,0.002 C 8.7038551,9.1036038 6.9908868,9.3051028 7.682872,8.6103952 7.730154,8.5811132 7.7873628,8.5644222 7.8430401,8.5734682 Z"
- id="path2115-9"
- inkscape:connector-curvature="0" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 13.394779,1.0116534 C 10.692246,1.2164052 7.9418246,0.83444351 5.2567733,1.1594643 3.6079522,1.9634894 4.2196973,4.1112557 4.1177747,5.5199405 c 0.061015,2.3895789 -0.1545098,4.8755605 0.303583,7.2163245 0.9803862,1.495403 2.9598944,0.654623 4.4131892,0.853459 2.0750541,-0.130409 4.2806911,0.362941 6.2709901,-0.280647 1.216832,-1.108895 0.584978,-3.045999 0.737051,-4.5978371 C 15.743536,6.4431446 16.032351,4.1200447 15.611931,1.8712567 15.154361,1.1115961 14.209956,0.95095621 13.394779,1.0116534 Z m 0.383156,2.09545 c 0.03612,2.8115623 0.03615,5.6235992 0,8.4351616 -2.505587,-0.01187 -5.0114472,0.0305 -7.5168215,-0.01727 0.012664,-2.8059412 -0.030327,-5.6121335 0.018045,-8.4178859 z"
- id="rect3653-1"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccccc" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 10.594523,11.97877 c -0.50506,-0.02336 -1.6011898,-0.32961 -1.5148517,0.792441 0,2.636269 0,5.272538 0,7.908805 0.7098997,0.401155 1.8468527,0.226589 1.9295487,-1.009772 -0.01685,-2.602526 -0.05516,-5.22545 -0.03366,-7.838011 -0.127012,0.04885 -0.254023,0.09769 -0.381035,0.146537 z"
- id="path4184-2"
- inkscape:connector-curvature="0" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 12.724035,18.930485 c -2.026284,0.113843 -4.1091844,-0.128853 -6.1118107,0.104761 -1.200424,0.443592 -0.6069279,2.19187 0.7401805,1.929014 2.0512182,-0.112794 4.2115012,0.262502 6.1904012,-0.209887 0.915015,-0.557944 0.29982,-1.883042 -0.818771,-1.823888 z"
- id="path4186-7"
- inkscape:connector-curvature="0" />
- <g
- id="g1327"
- transform="matrix(0.03397385,0,0,0.03397385,0,1.2562488)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.896,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.314 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2117"
- style="fill:#000000"
- transform="matrix(0.04068381,0,0,0.04068381,2.7222638,2.4309237)">
- <g
- id="g2119"
- style="fill:#000000">
- <g
- id="g2121"
- style="fill:#000000">
- <path
- d=""
- id="path2125"
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2127"
- style="fill:#000000">
- <path
- d=""
- id="path2131"
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- </g>
- <path
- d="m 10.043805,3.0568725 c 0.01098,0 0.02238,4.082e-4 0.03348,5.155e-4 0.01118,-9.19e-5 0.02243,-5.155e-4 0.03348,-5.155e-4 l -0.06697,0 z m 0.03348,5.155e-4 C 9.2975394,3.0635698 8.2410908,3.2831197 7.800141,3.4668478 7.3528766,3.6532104 7.0546086,3.8396621 6.9614359,4.3055565 l -0.3353816,2.5830997 0,3.5588018 0.5779124,0 0,0.558124 c 0,0.680509 0.9954905,0.680509 0.9954905,0 l 0,-0.558124 1.8387658,0 0.0055,0 1.911321,0 0,0.558124 c 0,0.680509 0.995997,0.680509 0.995997,0 l 0,-0.558124 0.577912,0 0,-3.5588018 L 13.19366,4.3055565 C 13.100469,3.8396558 12.802201,3.653204 12.354933,3.4668423 11.913939,3.283096 10.857048,3.0635189 10.077278,3.0573816 Z m -1.4196646,0.6519906 1.3861776,0 1.453659,0 c 0.279553,0 0.279553,0.4191007 0,0.4191007 l -1.456704,0 -1.3831326,0 c -0.2795517,0 -0.2795517,-0.4191007 0,-0.4191007 z m -0.6180788,0.8427678 2.0012114,0 2.006329,0 c 0.2953,0 0.372592,0.1498944 0.408445,0.3774943 l 0.261302,1.8732674 c 0.02435,0.1795572 -0.02795,0.3577071 -0.276017,0.3577071 l -2.397014,0 -2.397988,0 c -0.2480736,0 -0.2998526,-0.1781499 -0.2755099,-0.3577071 L 7.6316092,4.9296389 C 7.6674638,4.702039 7.7442456,4.5521445 8.0395472,4.5521445 Z m -0.337326,3.7562164 c 0.2638035,-9e-7 0.5453979,0.2821017 0.5453979,0.5459052 0,0.2638038 -0.2815944,0.5453968 -0.5453979,0.5453968 -0.2638035,0 -0.5459052,-0.281593 -0.5459052,-0.5453968 0,-0.2638035 0.2821017,-0.5459052 0.5459052,-0.5459052 z m 4.7506514,0 c 0.263802,0 0.545397,0.2821017 0.545397,0.5459052 0,0.2638038 -0.281595,0.5453968 -0.545397,0.5453968 -0.263804,0 -0.545906,-0.281593 -0.545906,-0.5453968 0,-0.2638035 0.282102,-0.5459061 0.545906,-0.5459052 z"
- id="path2115"
- sodipodi:nodetypes="cscccsccccccccccccccccsccccccccccccccccccccsssccsssc"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- <rect
- height="10.974864"
- id="rect3653"
- ry="0.68246007"
- style="fill:none;stroke:#0089cd;stroke-width:0.50960779;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- width="10.035949"
- x="4.9805841"
- y="1.7845235" />
- <path
- d="m 10.008805,12.780169 0,7.635762"
- id="path4184"
- style="fill:none;stroke:#0089cd;stroke-width:0.97842932;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- d="m 13.03185,19.985729 -6.1503495,0"
- id="path4186"
- style="fill:none;stroke:#0089cd;stroke-width:1.01921558;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <g
- id="g2117-7"
- style="fill:#000000"
- transform="matrix(0.04068381,0,0,0.04068381,22.831718,4.3387728)">
- <g
- id="g2119-5"
- style="fill:#000000">
- <g
- id="g2121-3"
- style="fill:#000000">
- <path
- d=""
- id="path2125-5"
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2127-6"
- style="fill:#000000">
- <path
- d=""
- id="path2131-2"
- style="fill:#000000;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/cafe.svg b/navit/icons/cafe.svg
deleted file mode 100644
index bd8c0c797..000000000
--- a/navit/icons/cafe.svg
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="cafe.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/cinema.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3156">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3158" />
- <stop
- id="stop3166"
- offset="0.41698599"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop3164"
- offset="0.41698599"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- style="stop-color:#3d3d3d;stop-opacity:1;"
- offset="1"
- id="stop3160" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2399"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#22a638"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.5133384"
- inkscape:cy="6.0024934"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1366"
- inkscape:window-height="722"
- inkscape:window-x="-4"
- inkscape:window-y="-4"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- inkscape:connector-curvature="0"
- style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 18.875,6.0625001 -14.4999998,0.125 c 0,0 0.06232,2.313135 1.15625,4.0937499 1.244841,2.02626 2.34375,2.59375 2.34375,2.59375 l 6.4374998,0 c 0,0 0.3125,-0.279029 0.75,-0.8125 0.340935,-0.415724 0.911612,-0.992417 0.911612,-0.992417 l 3.641735,-2.1066949 c 1e-6,0 0.906551,-0.743331 0.477903,-1.900888 -0.342938,-0.9260987 -1.21875,-1 -1.21875,-1 z m -0.09375,0.90625 c 0,0 0.6875,0.025238 0.652459,0.75 -0.02118,0.438103 -0.527459,0.78125 -0.527459,0.78125 l -2.125,1.125 c 0,0 0.256319,-0.662741 0.40625,-1.1875 0.25,-0.875 0.321653,-1.4283471 0.321653,-1.4283471 L 18.78125,6.96875 Z"
- id="path2405-8"
- sodipodi:nodetypes="ccsccsccsccsccscc" />
- <path
- inkscape:connector-curvature="0"
- style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 2.9038712,13.647301 19.141439,13.540607 c 0,0 0.08839,0.53033 -0.309359,1.016466 -0.397748,0.486136 -0.972272,0.53033 -0.972272,0.53033 l -13.7443878,0.08839 c 0,0 -0.588991,-0.02273 -0.938801,-0.506663 -0.360778,-0.499104 -0.228553,-1.110217 -0.272748,-1.021829 z"
- id="path3177-1"
- sodipodi:nodetypes="ccsccsc" />
- <path
- style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1;opacity:1"
- d="M 18.875,6.125 L 4.375,6.25 C 4.375,6.25 4.437322,8.5631351 5.53125,10.34375 C 6.7760908,12.37001 7.875,12.9375 7.875,12.9375 L 14.3125,12.9375 C 14.3125,12.9375 14.625,12.658471 15.0625,12.125 C 15.403435,11.709276 15.974112,11.132583 15.974112,11.132583 L 19.615847,9.0258883 C 19.615848,9.0258881 20.522398,8.2825569 20.09375,7.125 C 19.750812,6.1989013 18.875,6.125 18.875,6.125 z M 18.78125,7.03125 C 18.78125,7.03125 19.46875,7.0564879 19.433709,7.78125 C 19.412527,8.2193529 18.90625,8.5625 18.90625,8.5625 L 16.78125,9.6875 C 16.78125,9.6875 17.037569,9.0247592 17.1875,8.5 C 17.4375,7.625 17.509153,7.0716529 17.509153,7.0716529 L 18.78125,7.03125 z"
- id="path2405"
- sodipodi:nodetypes="ccsccsccsccsccscc" />
- <path
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 2.9038713,13.709801 L 19.141439,13.603107 C 19.141439,13.603107 19.229827,14.133437 18.83208,14.619573 C 18.434332,15.105709 17.859808,15.149903 17.859808,15.149903 L 4.1154198,15.238291 C 4.1154198,15.238291 3.5264293,15.215557 3.1766189,14.731628 C 2.8158407,14.232526 2.9480655,13.621413 2.9038713,13.709801 z"
- id="path3177"
- sodipodi:nodetypes="ccsccsc" />
- </g>
-</svg>
diff --git a/navit/icons/camping.svg b/navit/icons/camping.svg
deleted file mode 100644
index 4058fb77d..000000000
--- a/navit/icons/camping.svg
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="camping.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/cinema.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3156">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3158" />
- <stop
- id="stop3166"
- offset="0.41698599"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop3164"
- offset="0.41698599"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- style="stop-color:#3d3d3d;stop-opacity:1;"
- offset="1"
- id="stop3160" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2399"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2435"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3240"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#22a638"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="16.000001"
- inkscape:cx="10.464673"
- inkscape:cy="12.714329"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1366"
- inkscape:window-height="722"
- inkscape:window-x="-4"
- inkscape:window-y="-4"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10.5625,4.1250002 -0.46875,0.375 L 11,5.7187502 3.3125001,17 l -1.3125,0 0,0.59375 18.5937499,-0.03125 0,-0.59375 L 19.3125,17 11.65625,5.7500002 l 0.875,-1.21875 -0.4375,-0.375 -0.78125,1.0625 -0.75,-1.09375 z M 11.34375,11.75 14.8125,16.90625 7.7187501,16.9375 11.34375,11.75 Z"
- id="path3246-5" />
- <path
- style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.10000000000000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
- d="M 10.5625 4.0625 L 10.09375 4.4375 L 11 5.65625 L 3.3125 16.9375 L 2 16.9375 L 2 17.53125 L 20.59375 17.5 L 20.59375 16.90625 L 19.3125 16.9375 L 11.65625 5.6875 L 12.53125 4.46875 L 12.09375 4.09375 L 11.3125 5.15625 L 10.5625 4.0625 z M 11.34375 11.6875 L 14.8125 16.84375 L 7.71875 16.875 L 11.34375 11.6875 z "
- id="path3246" />
- </g>
-</svg>
diff --git a/navit/icons/car_dealer.svg b/navit/icons/car_dealer.svg
deleted file mode 100644
index 599f1ee7c..000000000
--- a/navit/icons/car_dealer.svg
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="car_dealer.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="144.13586"
- inkscape:cy="59.366766"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="874"
- inkscape:window-width="1440"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="2.8284271"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false"
- inkscape:window-maximized="1" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective12"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <style
- id="style6"
- type="text/css">
- .fil0 {fill:#EF7900}
- </style>
- <inkscape:perspective
- id="perspective6807"
- inkscape:persp3d-origin="29.116032 : 19.410688 : 1"
- inkscape:vp_x="0 : 29.116032 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="58.232063 : 29.116032 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective6954"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- id="ArrowStart"
- markerHeight="3"
- markerUnits="strokeWidth"
- markerWidth="4"
- orient="auto"
- refX="10"
- refY="5"
- viewBox="0 0 10 10">
- <path
- d="M 10,0 0,5 10,10 Z"
- id="path2295"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="ArrowEnd"
- markerHeight="3"
- markerUnits="strokeWidth"
- markerWidth="4"
- orient="auto"
- refX="0"
- refY="5"
- viewBox="0 0 10 10">
- <path
- d="M 0,0 10,5 0,10 Z"
- id="path2292"
- inkscape:connector-curvature="0" />
- </marker>
- <inkscape:perspective
- id="perspective7597"
- inkscape:persp3d-origin="178.5405 : 158.483 : 1"
- inkscape:vp_x="0 : 237.7245 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="357.08099 : 237.7245 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g4447"
- transform="matrix(0.20586556,0,0,0.20586832,0.78123304,-1.0035774)">
- <path
- inkscape:connector-curvature="0"
- id="path4440"
- d="M 66.756048,12.064733 C 52.565924,13.1721 38.230672,11.294742 24.088079,12.738561 14.655005,15.245513 12.332176,25.739312 9.5192579,33.700687 c -1.0359747,3.782761 -2.5023651,7.688615 -6.4604753,9.073031 -8.2886595,6.256446 -6.0859259,17.719537 -6.0898438,26.61914 0.7219292,4.940718 -1.4087758,13.256741 0.9860122,16.218093 2.64431784,-0.848869 8.5986502,-1.451804 7.049144,3.211597 -2.4840628,9.90964 12.047745,16.981402 18.777344,9.58203 3.644069,-3.22295 3.753281,-8.5071 3.535156,-12.994142 14.655244,0.121195 29.827212,-0.241456 44.16211,0.179688 -0.977264,7.180494 3.09417,16.111796 11.359374,15.925786 7.925473,0.31954 13.613455,-8.604262 10.910157,-15.701177 3.666787,-0.01936 9.921254,-1.090158 8.660154,-6.234375 C 100.07766,68.495745 105.59407,55.461761 98.617376,45.449499 96.101437,41.675054 90.406885,41.472555 90.258315,36.064842 87.06607,27.32724 84.805853,14.695111 73.892767,12.646764 71.555265,12.120898 69.144339,12.01565 66.756048,12.064733 Z"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2301"
- d="m 27.916882,16.760143 c -6.128552,0 -9.379612,3.34581 -10.880499,7.262158 L 9.0692437,44.594174 c -3.1583189,0.404837 -8.75705874,4.112277 -8.75705874,11.1353 l 0,26.160763 7.75479644,0 0,8.366384 c 0,10.293039 14.5667836,10.171819 14.5667856,0 l 0,-8.366384 26.203235,0 0.0086,0 26.203216,0 0,8.366384 c 0,10.171819 14.566716,10.293039 14.566798,0 l 0,-8.366384 7.754785,0 0,-26.160763 c 0,-7.023023 -5.598703,-10.730327 -8.757076,-11.1353 L 80.637609,24.022301 c -1.50088,-3.916348 -4.751911,-7.262158 -10.880507,-7.262158 l -11.262692,0 -19.178927,0 -11.398601,0 z m -0.09343,7.491491 20.996563,0 0.01725,0 0.0086,0 21.005039,0 c 2.626397,0.02269 3.751251,1.666959 4.501684,3.941084 l 6.00507,16.189097 -31.511793,0 -0.0086,0 -0.01725,0 -31.503334,0 6.00508,-16.189097 c 0.750444,-2.274125 1.875011,-3.916622 4.501689,-3.941084 z M 15.583954,52.255542 c 3.716324,0 6.727051,3.100683 6.727051,6.93089 -1e-6,3.83048 -3.010727,6.939423 -6.727051,6.939423 -3.716051,0 -6.7270534,-3.108943 -6.7270534,-6.939423 0,-3.830207 3.0110024,-6.93089 6.7270534,-6.93089 z m 66.514583,0 c 3.716322,0 6.727074,3.100683 6.727052,6.93089 0,3.83048 -3.01073,6.939423 -6.727052,6.939423 -3.71605,0 -6.735565,-3.108943 -6.735565,-6.939423 0,-3.830207 3.019515,-6.93089 6.735565,-6.93089 z" />
- <g
- transform="matrix(0.04255774,0,0,0.04255774,36.006437,77.799)"
- id="g2319">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2323"
- d="" />
- </g>
- <g
- transform="matrix(0.04255774,0,0,0.04255774,36.006437,77.799)"
- id="g2325">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;stroke:none"
- id="path2329"
- d="" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/car_rent.svg b/navit/icons/car_rent.svg
deleted file mode 100644
index eeb05a95b..000000000
--- a/navit/icons/car_rent.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="car_rent.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="47.826795"
- inkscape:cy="-13.795581"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="5.6568542"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2303"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- transform="matrix(0.0472644,0,0,0.0472644,3.2416943,0.52412815)">
- <g
- id="g2305"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
- <path
- d="M 100.25,5.75 C 60.335317,5.4974281 26.826507,47.079175 35.324049,86.079571 c 5.57579,32.628219 37.203485,59.513449 70.832201,56.201679 22.48284,-1.38839 43.50902,-14.78319 54.8125,-34.09375 10.25433,-8.04484 25.57155,2.6096 35.65625,-6.0625 6.89511,-7.134767 12.65993,-16.629284 22.375,-19.84375 7.79207,2.201331 11.2873,10.646529 17.71875,14.5625 6.4579,-4.13743 10.19115,-13.979468 19.03125,-13.9375 6.25373,3.764238 10.21886,10.40689 16.125,14.34375 6.70904,-4.292637 10.68564,-14.550643 19.8125,-14.5625 6.3804,3.59771 9.90619,11.109119 16.5625,13.96875 9.26043,-8.352172 18.73735,-16.999679 26.46875,-26.9375 -0.0281,-5.622835 -7.6363,-8.738413 -10.65641,-13.336982 C 317.78098,50.838171 312.47635,40.600972 302.59375,42.71875 289.22865,43.785674 275.56059,42.397209 262.0625,42.9375 229.36594,42.923262 196.41274,43.721279 163.875,42.125 154.95723,34.457888 150.20766,22.500694 139.25,17.0625 127.86772,9.4689786 114.03062,5.323508 100.25,5.75 z M 73.09375,50.53125 c 19.527198,-0.486224 31.18454,27.24599 17,40.71875 -11.479386,12.63316 -36.049436,8.571659 -40.875,-8.375 -5.349057,-15.155352 7.109688,-34.021744 23.875,-32.34375 z"
- id="path2307"
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:10.00000095;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
- <path
- d=""
- id="path2309"
- style="fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- d="m 8.6250917,8.7062005 c -0.9707376,0 -1.4856922,0.5299594 -1.7234264,1.150296 L 5.6397034,13.114997 C 5.1394385,13.179143 4.252621,13.766362 4.252621,14.878783 l 0,4.143757 1.228328,0 0,1.325194 c 0,1.630379 2.307318,1.611179 2.3073187,0 l 0,-1.325194 4.1504833,0 0.0013,0 4.150481,0 0,1.325194 c 0,1.611179 2.307307,1.630379 2.307321,0 l 0,-1.325194 1.228326,0 0,-4.143757 c 0,-1.11242 -0.886811,-1.699639 -1.387085,-1.763786 L 16.975831,9.8564965 C 16.738097,9.2361599 16.223146,8.7062005 15.252402,8.7062005 l -1.783964,0 -3.037862,0 -1.8054905,0 z m -0.0148,1.1866209 3.3257684,0 0.0027,0 0.0013,0 3.327111,0 c 0.41601,0.00392 0.594182,0.2640376 0.713049,0.6242546 l 0.951179,2.564285 -4.991339,0 -0.0013,0 -0.0027,0 -4.9899972,0 0.9511803,-2.564285 C 8.0161106,10.156859 8.1942372,9.8966951 8.6102916,9.8928214 z M 6.6716065,14.328524 c 0.5886503,0 1.0655371,0.491138 1.0655371,1.097826 -4e-7,0.606733 -0.4768868,1.099172 -1.0655371,1.099172 -0.5886073,0 -1.0655378,-0.492439 -1.0655378,-1.099172 0,-0.606687 0.4769305,-1.097826 1.0655378,-1.097826 z m 10.5356355,0 c 0.58865,0 1.06554,0.491139 1.065537,1.097826 0,0.606733 -0.476887,1.099172 -1.065537,1.099172 -0.588608,0 -1.066886,-0.492439 -1.066886,-1.099172 0,-0.606688 0.478278,-1.097826 1.066886,-1.097826 z"
- id="path2301"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/car_sharing.svg b/navit/icons/car_sharing.svg
deleted file mode 100644
index d8f8d1e75..000000000
--- a/navit/icons/car_sharing.svg
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="car_rent.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="7.222334"
- inkscape:cy="9.314837"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="691"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:zoom="5.6568542"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <path
- d="m 8.6250917,8.7062005 c -0.9707376,0 -1.4856922,0.5299594 -1.7234264,1.150296 L 5.6397034,13.114997 C 5.1394385,13.179143 4.252621,13.766362 4.252621,14.878783 l 0,4.143757 1.228328,0 0,1.325194 c 0,1.630379 2.307318,1.611179 2.3073187,0 l 0,-1.325194 4.1504833,0 0.0013,0 4.150481,0 0,1.325194 c 0,1.611179 2.307307,1.630379 2.307321,0 l 0,-1.325194 1.228326,0 0,-4.143757 c 0,-1.11242 -0.886811,-1.699639 -1.387085,-1.763786 L 16.975831,9.8564965 C 16.738097,9.2361599 16.223146,8.7062005 15.252402,8.7062005 l -1.783964,0 -3.037862,0 -1.8054905,0 z m -0.0148,1.1866209 3.3257684,0 0.0027,0 0.0013,0 3.327111,0 c 0.41601,0.00392 0.594182,0.2640376 0.713049,0.6242546 l 0.951179,2.564285 -4.991339,0 -0.0013,0 -0.0027,0 -4.9899972,0 0.9511803,-2.564285 C 8.0161106,10.156859 8.1942372,9.8966951 8.6102916,9.8928214 z M 6.6716065,14.328524 c 0.5886503,0 1.0655371,0.491138 1.0655371,1.097826 -4e-7,0.606733 -0.4768868,1.099172 -1.0655371,1.099172 -0.5886073,0 -1.0655378,-0.492439 -1.0655378,-1.099172 0,-0.606687 0.4769305,-1.097826 1.0655378,-1.097826 z m 10.5356355,0 c 0.58865,0 1.06554,0.491139 1.065537,1.097826 0,0.606733 -0.476887,1.099172 -1.065537,1.099172 -0.588608,0 -1.066886,-0.492439 -1.066886,-1.099172 0,-0.606688 0.478278,-1.097826 1.066886,-1.097826 z"
- id="path2301"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- <g
- style="fill:#0089cd;fill-opacity:1"
- id="g3780"
- transform="matrix(0.02443884,0,0,0.02330052,1.3462656,1.136404)">
- <g
- style="fill:#0089cd;fill-opacity:1"
- id="g3782">
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none"
- id="path3784"
- d="m 300.803,131.26 c 22.551,0 40.835,-18.284 40.835,-40.8361 0,-22.551 -18.284,-40.834 -40.835,-40.834 -22.552,0 -40.834,18.283 -40.834,40.834 0,22.5521 18.282,40.8361 40.834,40.8361 z"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none"
- id="path3786"
- d=""
- inkscape:connector-curvature="0" />
- </g>
- <path
- sodipodi:nodetypes="csssccccccscscc"
- style="fill:#0089cd;fill-opacity:1;stroke:none"
- id="path3788"
- d="m 257.105,140.273 c -28.918,0 -52.173,23.584 -52.173,53 l 0,125.375 c 0,24.375 35.673,24.375 35.673,0 l 0,-114.642 8.444,0 0.94051,138.62872 c 33.80071,18.86054 99.27458,9.97064 100.62847,0 L 352.499,204.006 l 8.247,0 0,114.642 c 0,24.562 35.487,24.562 35.422,0 l 0,-124.625 c 0,-27.125 -21.064,-53.694 -52.814,-53.694 z"
- inkscape:connector-curvature="0" />
- </g>
- <g
- transform="matrix(0.02443884,0,0,0.02330052,7.8222172,1.1547099)"
- id="g3810"
- style="fill:#0089cd;fill-opacity:1">
- <g
- id="g3812"
- style="fill:#0089cd;fill-opacity:1">
- <path
- inkscape:connector-curvature="0"
- d="m 300.803,131.26 c 22.551,0 40.835,-18.284 40.835,-40.8361 0,-22.551 -18.284,-40.834 -40.835,-40.834 -22.552,0 -40.834,18.283 -40.834,40.834 0,22.5521 18.282,40.8361 40.834,40.8361 z"
- id="path3814"
- style="fill:#0089cd;fill-opacity:1;stroke:none" />
- <path
- inkscape:connector-curvature="0"
- d=""
- id="path3816"
- style="fill:#0089cd;fill-opacity:1;stroke:none" />
- </g>
- <path
- inkscape:connector-curvature="0"
- d="m 257.105,140.273 c -28.918,0 -52.173,23.584 -52.173,53 l 0,125.375 c 0,24.375 35.673,24.375 35.673,0 l 0,-114.642 8.444,0 0.94051,138.62872 c 33.80071,18.86054 99.27458,9.97064 100.62847,0 L 352.499,204.006 l 8.247,0 0,114.642 c 0,24.562 35.487,24.562 35.422,0 l 0,-124.625 c 0,-27.125 -21.064,-53.694 -52.814,-53.694 z"
- id="path3818"
- style="fill:#0089cd;fill-opacity:1;stroke:none"
- sodipodi:nodetypes="csssccccccscscc" />
- </g>
-</svg>
diff --git a/navit/icons/car_wash.svg b/navit/icons/car_wash.svg
deleted file mode 100644
index 2c17087f6..000000000
--- a/navit/icons/car_wash.svg
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
- sodipodi:docname="car_wash.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="19.318319"
- inkscape:cy="15.792438"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="705"
- inkscape:window-width="1366"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:zoom="16.78664"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="1"
- inkscape:measure-start="0,0"
- inkscape:measure-end="0,0" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <path
- d="m 8.6250917,8.7062005 c -0.9707376,0 -1.4856922,0.5299594 -1.7234264,1.150296 L 5.6397034,13.114997 C 5.1394385,13.179143 4.252621,13.766362 4.252621,14.878783 l 0,4.143757 1.228328,0 0,1.325194 c 0,1.630379 2.307318,1.611179 2.3073187,0 l 0,-1.325194 4.1504833,0 0.0013,0 4.150481,0 0,1.325194 c 0,1.611179 2.307307,1.630379 2.307321,0 l 0,-1.325194 1.228326,0 0,-4.143757 c 0,-1.11242 -0.886811,-1.699639 -1.387085,-1.763786 L 16.975831,9.8564965 C 16.738097,9.2361599 16.223146,8.7062005 15.252402,8.7062005 l -1.783964,0 -3.037862,0 -1.8054905,0 z m -0.0148,1.1866209 3.3257684,0 0.0027,0 0.0013,0 3.327111,0 c 0.41601,0.00392 0.594182,0.2640376 0.713049,0.6242546 l 0.951179,2.564285 -4.991339,0 -0.0013,0 -0.0027,0 -4.9899972,0 0.9511803,-2.564285 C 8.0161106,10.156859 8.1942372,9.8966951 8.6102916,9.8928214 z M 6.6716065,14.328524 c 0.5886503,0 1.0655371,0.491138 1.0655371,1.097826 -4e-7,0.606733 -0.4768868,1.099172 -1.0655371,1.099172 -0.5886073,0 -1.0655378,-0.492439 -1.0655378,-1.099172 0,-0.606687 0.4769305,-1.097826 1.0655378,-1.097826 z m 10.5356355,0 c 0.58865,0 1.06554,0.491139 1.065537,1.097826 0,0.606733 -0.476887,1.099172 -1.065537,1.099172 -0.588608,0 -1.066886,-0.492439 -1.066886,-1.099172 0,-0.606688 0.478278,-1.097826 1.066886,-1.097826 z"
- id="path2301"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.64602429px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 11.932901,3.8702621 c 0.468232,0.00558 0.754143,-0.4345529 0.754143,-0.7483631 0,-0.6031582 -0.536638,-1.4794288 -0.754143,-1.9211706 -0.149172,0.3574271 -0.745857,1.3180124 -0.745857,1.9211706 0,0.2683029 0.277625,0.7427784 0.745857,0.7483631 z"
- id="path833"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="zscsz" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.64602429px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 11.9329,7.3962952 c 0.468232,0.00558 0.754143,-0.4345529 0.754143,-0.7483631 0,-0.6031582 -0.536638,-1.4794288 -0.754143,-1.9211706 -0.149172,0.3574271 -0.745857,1.3180124 -0.745857,1.9211706 0,0.2683029 0.277625,0.7427784 0.745857,0.7483631 z"
- id="path833-3"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="zscsz" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.64602429px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 14.340396,3.8007984 C 14.790477,3.6715713 14.937829,3.1678357 14.847638,2.8672653 14.674288,2.2895546 13.908447,1.6044866 13.57316,1.2438939 c -0.04016,0.385219 -0.335589,1.4767665 -0.162235,2.054478 0.07711,0.2569829 0.479389,0.6316494 0.929471,0.5024265 z"
- id="path833-3-0"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="zscsz" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.64602429px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 15.315677,7.2964848 C 15.757504,7.1413637 15.875383,6.6299279 15.767906,6.3350962 15.561332,5.7684156 14.757036,5.128932 14.401394,4.7883985 c -0.01774,0.3868997 -0.249348,1.4937484 -0.04277,2.0604297 0.09189,0.2520764 0.515228,0.6027736 0.957053,0.4476566 z"
- id="path833-3-0-1"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="zscsz" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.64602429px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 9.5336905,3.8007984 C 9.0836095,3.6715713 8.9362575,3.1678357 9.0264485,2.8672653 c 0.17335,-0.5777107 0.939191,-1.2627787 1.2744785,-1.6233714 0.04016,0.385219 0.335589,1.4767665 0.162235,2.054478 -0.07711,0.2569829 -0.4793895,0.6316494 -0.9294715,0.5024265 z"
- id="path833-3-0-0"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="zscsz" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.64602429px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8.5584095,7.2964849 c -0.441827,-0.155121 -0.559706,-0.666557 -0.452229,-0.961389 0.206574,-0.5666804 1.01087,-1.206164 1.366512,-1.5466975 0.01774,0.3868997 0.249348,1.4937485 0.04277,2.0604295 -0.09189,0.252077 -0.515228,0.602774 -0.957053,0.447657 z"
- id="path833-3-0-1-1"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="zscsz" />
-</svg>
diff --git a/navit/icons/casino.svg b/navit/icons/casino.svg
deleted file mode 100644
index df5dcf89f..000000000
--- a/navit/icons/casino.svg
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="casino.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="24.283974"
- inkscape:cy="8.5334674"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="9.0119539"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective12"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2539"
- inkscape:persp3d-origin="16 : 10.666667 : 1"
- inkscape:vp_x="0 : 16 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="32 : 16 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2550"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2563"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327"
- transform="matrix(0.04060732,0,0,0.04060732,-0.66578232,-0.77631969)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <path
- d="M 2.8888497,5.4601513 C 5.369957,7.3690953 7.8510643,9.2780401 10.332172,11.186984 13.40672,9.5603388 16.481268,7.933693 19.555819,6.3070472 17.08086,4.4397148 14.605898,2.5723826 12.130938,0.70505015 9.0502432,2.2900838 5.9695463,3.8751173 2.8888497,5.4601513 z M 11.356391,4.1933539 c 0.75861,-0.037034 1.610745,0.3361831 1.866859,1.1008227 0.27777,0.7382389 -0.327738,1.4929716 -1.011453,1.7193265 C 11.355102,7.3205268 10.214443,7.1923178 9.683878,6.3751396 9.2998806,5.8563028 9.455165,5.1016018 9.9335488,4.7012076 10.320086,4.3591007 10.845333,4.1994568 11.356391,4.1933539 z"
- id="path2569"
- style="fill:#b26609;fill-opacity:1;fill-rule:evenodd;stroke:#b26609;stroke-width:0.72631621;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
- <path
- d="m 2.4192978,6.7042513 c 0.1234988,2.8223754 0.142499,5.6482447 0.2723685,8.4703777 2.3192644,2.044432 4.7091828,4.00536 7.0319318,6.048853 C 9.6976063,18.214661 9.6716043,15.20584 9.645575,12.197017 7.2358727,10.342925 4.8261671,8.488833 2.4164622,6.6347408 l 0.00186,0.045357 9.899e-4,0.024153 z M 4.1286943,9.1044996 C 4.9806706,9.1166319 5.5758616,9.9109476 5.7586499,10.677711 6.0194331,11.381454 5.6219335,12.368061 4.8138712,12.4552 3.9198419,12.493303 3.2556966,11.653951 3.1044748,10.842268 2.8436983,10.125833 3.3055868,9.1343769 4.1286943,9.1044996 z M 7.087865,15.403023 c 0.8612465,9.11e-4 1.4461206,0.811606 1.6356307,1.576049 0.2543519,0.690566 -0.1167998,1.637773 -0.8922918,1.764721 -0.8443612,0.09351 -1.5028838,-0.667286 -1.7220835,-1.412084 -0.2622975,-0.649555 -0.065631,-1.520282 0.599982,-1.837897 0.117637,-0.0584 0.2485033,-0.08342 0.3787626,-0.09079 z"
- id="path3341"
- style="fill:#b26609;fill-opacity:1;fill-rule:evenodd;stroke:#b26609;stroke-width:0.72631621;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
- <path
- d="m 10.916628,12.286388 c 0.02601,2.98707 0.05201,5.97414 0.07802,8.96121 3.001729,-1.74959 6.003457,-3.499179 9.005185,-5.24877 0.03546,-2.858923 0.07093,-5.717848 0.106394,-8.5767719 -3.063199,1.621444 -6.1264,3.2428879 -9.189601,4.8643319 z m 7.924223,-3.2145161 c 0.638841,-0.022321 1.135992,0.6080003 1.073871,1.2228211 -0.03106,0.873412 -0.701231,1.646485 -1.500864,1.930697 -0.626101,0.182238 -1.430753,-0.236038 -1.445541,-0.936268 -0.106304,-1.077028 0.796981,-2.1362322 1.872534,-2.2172501 z m -2.5875,3.7606721 c 0.621279,-0.02207 1.112412,0.584449 1.066777,1.185938 -0.009,0.871072 -0.665531,1.661992 -1.462563,1.959068 -0.63405,0.201047 -1.469485,-0.214289 -1.482423,-0.934849 -0.104192,-1.075178 0.802888,-2.131226 1.878209,-2.210157 z m -2.624386,3.647186 c 0.615596,8.7e-5 1.086615,0.598307 1.042662,1.19303 -0.01347,0.879874 -0.685066,1.669434 -1.489516,1.95765 -0.628587,0.18782 -1.436401,-0.223281 -1.455469,-0.929175 -0.113348,-1.085829 0.814916,-2.163552 1.902323,-2.221505 z"
- id="path3343"
- style="fill:#b26609;fill-opacity:1;fill-rule:evenodd;stroke:#b26609;stroke-width:0.72631621;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/castle.svg b/navit/icons/castle.svg
deleted file mode 100644
index 843c1aa1d..000000000
--- a/navit/icons/castle.svg
+++ /dev/null
@@ -1,453 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="castle.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="55.005049"
- inkscape:cy="43.549644"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="874"
- inkscape:window-maximized="1"
- inkscape:window-width="1440"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="5.2137932"
- objecttolerance="10.0"
- pagecolor="#ffff00"
- showgrid="false" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path4460"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path4462"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path4464"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path4466"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4904"
- inkscape:persp3d-origin="16 : 10.666667 : 1"
- inkscape:vp_x="0 : 16 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="32 : 16 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- id="Arrow2Lend"
- inkscape:stockid="Arrow2Lend"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- id="path4137"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow1Mend"
- inkscape:stockid="Arrow1Mend"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4125"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.4,0,0,-0.4,-4,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="TriangleOutL"
- inkscape:stockid="TriangleOutL"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
- id="path4214"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.8,0.8)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow1Lend"
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4119"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Tail"
- inkscape:stockid="Tail"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <g
- id="g4152"
- transform="scale(-1.2,-1.2)">
- <path
- d="M -3.8048674,-3.9585227 0.54352094,0"
- id="path4154"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M -1.2866832,-3.9585227 3.0617053,0"
- id="path4156"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M 1.3053582,-3.9585227 5.6537466,0"
- id="path4158"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M -3.8048674,4.1775838 0.54352094,0.21974226"
- id="path4160"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M -1.2866832,4.1775838 3.0617053,0.21974226"
- id="path4162"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M 1.3053582,4.1775838 5.6537466,0.21974226"
- id="path4164"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- </g>
- </marker>
- <marker
- id="Arrow1Sstart"
- inkscape:stockid="Arrow1Sstart"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4128"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(0.2,0,0,0.2,1.2,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow1Send"
- inkscape:stockid="Arrow1Send"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4131"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="SemiCircleOut"
- inkscape:stockid="SemiCircleOut"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m -2.5,-0.80913858 c 0,2.75999998 -2.24,4.99999998 -5,4.99999998 l 0,-10 c 2.76,0 5,2.24 5,5.00000002 z"
- id="path4235"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- transform="matrix(0.6,0,0,0.6,4.2752958,0.4580676)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow2Send"
- inkscape:stockid="Arrow2Send"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- id="path4149"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- transform="matrix(-0.3,0,0,-0.3,0.69,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="TriangleOutS"
- inkscape:stockid="TriangleOutS"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
- id="path4220"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="CurveIn"
- inkscape:stockid="CurveIn"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m 4.625493,-5.0456926 c -2.76,0 -5.00000002,2.24 -5.00000002,5.00000002 0,2.75999998 2.24000002,4.99999998 5.00000002,4.99999998"
- id="path4238"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- transform="scale(0.6,0.6)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="InfiniteLineStart"
- inkscape:stockid="InfiniteLineStart"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <g
- id="g4298"
- transform="translate(-13,0)">
- <circle
- cx="3"
- cy="0"
- id="circle4300"
- r="0.80000001" />
- <circle
- cx="6.5"
- cy="0"
- id="circle4302"
- r="0.80000001" />
- <circle
- cx="10"
- cy="0"
- id="circle4304"
- r="0.80000001" />
- </g>
- </marker>
- <marker
- id="StopS"
- inkscape:stockid="StopS"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,5.65 0,-5.65"
- id="path4229"
- style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow2Sstart"
- inkscape:stockid="Arrow2Sstart"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- id="path4146"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- transform="matrix(0.3,0,0,0.3,-0.69,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="DiamondS"
- inkscape:stockid="DiamondS"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 Z"
- id="path4202"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="RazorWire"
- inkscape:stockid="RazorWire"
- orient="auto"
- refX="0"
- refY="0">
- style=&quot;overflow:visible&quot;&gt;
- <path
- d="m 0.02272727,-0.74009011 0,1.4375 -7.78124997,2.31250001 18.4374997,0 -7.1874997,-2.31250001 0,-1.4375 7.2499997,-2.15624999 -18.4687497,0 7.74999997,2.15624999 z"
- id="path4286"
- style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.1pt"
- transform="scale(0.8,0.8)"
- inkscape:connector-curvature="0" />
-</marker>
- <inkscape:perspective
- id="perspective5233"
- inkscape:persp3d-origin="16 : 10.666667 : 1"
- inkscape:vp_x="0 : 16 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="32 : 16 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5412"
- inkscape:persp3d-origin="250 : 166.66667 : 1"
- inkscape:vp_x="0 : 250 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="500 : 250 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective8631"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-536.27327,44.693248)">
- <rect
- height="10"
- id="rect4134"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="8"
- x="2"
- y="2" />
- </g>
- <g
- id="g4738"
- transform="matrix(0.20554798,0,0,0.20554796,0.7776223,-1.6818662)">
- <path
- inkscape:connector-curvature="0"
- id="path2958-8"
- d="m 69.910849,26.034711 c -4.360829,0.455733 -9.176699,3.214028 -8.296875,8.392578 0.852858,4.688734 0.271393,9.216875 -0.476562,13.785157 -0.515409,2.119883 4.29039,4.651269 0.412109,3.751953 -2.382569,-0.265039 -4.169265,2.740933 -5.09375,3.509766 -3.000396,-3.967297 -10.650513,-3.905745 -13.498047,-0.13086 -0.269809,0.213306 -3.434006,-4.245145 -6.322266,-3.238281 -1.297527,0.05335 2.114169,-4.236895 0.757813,-6.416016 -0.560731,-5.916042 2.193136,-13.921397 -2.492187,-18.367187 -3.9181,-2.103176 -9.069191,0.0092 -11.429688,2.517578 C 20.667389,24.987155 11.60383,25.42548 10.641318,30.472211 9.4298696,25.456347 2.5414206,26.545004 -1.2805574,27.835493 c -3.009286,7.214436 -1.594921,15.919406 -1.285156,23.728515 1.284726,2.770134 7.102947,1.040261 6.335937,5.675781 0.146028,13.378048 -1.141075,26.943402 0.498047,40.316409 3.754315,3.601022 10.4841274,1.66197 15.5605454,2.30088 7.223651,-0.57573 15.007992,0.809252 21.867189,-0.94151 4.402108,-4.170421 1.578013,-11.074916 2.257813,-15.837888 3.631314,0.541563 8.290994,-1.922716 11.4375,0.148438 0.191749,5.757113 -2.334197,18.074902 7.230469,16.54297 10.694188,-0.8954 22.181652,1.927212 32.371089,-1.60547 1.75282,-14.332727 0.39606,-28.972713 0.78321,-43.375 6.801584,0.663059 7.399524,-7.571944 6.576174,-12.410157 -0.34459,-5.148353 2.07004,-14.697268 -5.326174,-15.730468 -3.10176,-0.380886 -7.05163,0.579013 -8.527346,2.632812 -3.246303,-4.497769 -10.854024,-2.653339 -13.451172,0.002 -0.952947,-1.929959 -2.905594,-3.43413 -5.136719,-3.248047 z m -2.078125,28.669922 c 0.951997,1.02756 0.192289,0.197326 0,0 z"
- style="font-style:normal;font-weight:normal;font-size:20.57779694px;font-family:'Bitstream Vera Sans';fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.20922267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- style="font-style:normal;font-weight:normal;font-size:20.57779694px;font-family:'Bitstream Vera Sans';fill:#b26609;fill-opacity:1;stroke:#b26609;stroke-width:1.20922267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccccccccccccccccccccccccccccccc"
- id="path2958"
- d="m 0.70479201,50.591063 0.0712967,-19.488227 6.48157579,0 0,6.481643 6.4815745,0 0,-6.481643 6.481576,0 0,6.481643 6.481577,0 0,-6.481643 6.481577,0 0,19.444992 -6.481577,0 0,12.962694 6.481577,0 0,-6.481055 6.481579,0 0,6.481055 6.48157,0 0,-6.481055 6.48158,0 0,6.481055 0,6.481639 0,6.481643 0.773759,0 0,2.4509 -13.736909,0 0,16.994024 -32.4078835,0 0,-45.3709 -6.55319738,0.05834 3.2252e-4,-0.0149 1.58e-6,-4e-6 z" />
- <path
- inkscape:connector-curvature="0"
- style="font-style:normal;font-weight:normal;font-size:20.57779694px;font-family:'Bitstream Vera Sans';fill:#b26609;fill-opacity:1;stroke:#b26609;stroke-width:1.20922267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccccccccccccccccccccccccccccccc"
- id="path2958-0"
- d="m 98.035182,50.591063 -0.07063,-19.488227 -6.472693,0 0,6.481643 -6.472634,0 0,-6.481643 -6.472629,0 0,6.481643 -6.472634,0 0,-6.481643 -6.472634,0 0,19.444992 6.472634,0 0,12.963277 -6.472634,0 0,-6.481638 -6.472629,0 0,6.481638 -6.472629,0 0,-6.481638 -6.472634,0 0,6.481638 0,6.481056 0,6.481643 3.248038,0 0,2.4509 9.697225,0 0,16.994024 32.36316,0 0,-45.3709 6.544187,0.05834 -8.03e-4,-0.0149 -4.1e-5,-4e-6 z" />
- </g>
-</svg>
diff --git a/navit/icons/cemetery.svg b/navit/icons/cemetery.svg
deleted file mode 100644
index 7070fcb04..000000000
--- a/navit/icons/cemetery.svg
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="cemetery.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/navit/icons/png/bus.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3181">
- <stop
- id="stop3183"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:0;" />
- <stop
- id="stop3185"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3169">
- <stop
- style="stop-color:#d2d2d2;stop-opacity:1;"
- offset="0"
- id="stop3171" />
- <stop
- style="stop-color:#656565;stop-opacity:1;"
- offset="1"
- id="stop3173" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#0083f4"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.8"
- inkscape:cx="8.8591678"
- inkscape:cy="38.829475"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0.18828967"
- d="m 10.311729,-76.902465 c -3.3755856,-0.118158 -6.0886976,2.883529 -6.6515556,6.041081 -0.586939,2.483642 -0.991995,5.311074 0.22764,7.668021 1.604822,2.569803 4.677305,3.582054 7.2359156,4.903253 1.918497,0.874329 4.351189,1.828128 6.337493,0.639155 2.017944,-1.493992 2.000665,-4.319483 2.109801,-6.579472 0.02608,-2.915029 0.293553,-6.07503 -1.078621,-8.754364 -1.519474,-2.335238 -4.395469,-3.305838 -6.992152,-3.840174 -0.393416,-0.05477 -0.79125,-0.08187 -1.188521,-0.0775 z"
- id="path3372-3"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path3372"
- d="m 8.0536284,-60.482272 c -3.949167,-2.140927 -4.748474,-3.614563 -4.314447,-7.954309 0.694667,-6.945855 4.836642,-9.608447 10.7533706,-6.912608 3.826014,1.743249 4.44847,3.118699 4.44847,9.829858 0,8.762472 -2.166533,9.76482 -10.8873936,5.037059 z"
- style="fill:#8c8c8c" />
- <path
- inkscape:connector-curvature="0"
- id="path3370"
- d="m 8.5863474,-64.619442 c -2.301038,-1.487045 -2.301038,-1.678798 0,-1.725778 2.3010386,-0.04698 2.3010386,-0.238734 0,-1.725779 -1.423768,-0.920109 -1.812068,-1.672924 -0.86289,-1.672924 0.949179,0 2.8906806,0.752815 4.3144486,1.672924 2.301038,1.487045 2.301038,1.678798 0,1.725779 -2.3010386,0.04698 -2.3010386,0.238733 0,1.725778 1.423767,0.920109 1.812067,1.672924 0.862889,1.672924 -0.949178,0 -2.89068,-0.752815 -4.3144476,-1.672924 z"
- style="fill:#3f3f3f" />
- </g>
-</svg>
diff --git a/navit/icons/church.svg b/navit/icons/church.svg
deleted file mode 100644
index 12441b19a..000000000
--- a/navit/icons/church.svg
+++ /dev/null
@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="worship.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/worship.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3164">
- <stop
- style="stop-color:#58f071;stop-opacity:1;"
- offset="0"
- id="stop3166" />
- <stop
- style="stop-color:#22a638;stop-opacity:1;"
- offset="1"
- id="stop3168" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3170"
- x1="5.4863591"
- y1="10.53991"
- x2="7.5346413"
- y2="16.638706"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3177"
- x1="9.8994942"
- y1="4.6095934"
- x2="12.065009"
- y2="4.6095934"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3179"
- x1="7.1152611"
- y1="3.0407002"
- x2="15.070212"
- y2="3.0407002"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3182"
- gradientUnits="userSpaceOnUse"
- x1="7.1152611"
- y1="3.0407002"
- x2="15.070212"
- y2="3.0407002"
- gradientTransform="translate(-0.2209709,0.5745242)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3184"
- gradientUnits="userSpaceOnUse"
- x1="5.4863591"
- y1="10.53991"
- x2="7.5346413"
- y2="16.638706" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568545"
- inkscape:cx="9.3432727"
- inkscape:cy="-0.19430913"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="943"
- inkscape:window-height="682"
- inkscape:window-x="69"
- inkscape:window-y="34">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="fill:url(#linearGradient3184);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-dasharray:none"
- d="M 9.5053617,0.55713834 L 9.5053617,2.5495558 L 6.90625,2.5495558 L 6.90625,5.5 L 9.5053617,5.5 L 9.5053617,7.75 L 1.59375,11.59375 L 1.5625,20.5625 L 8.625,20.5625 C 8.6691942,15.149816 9.1446642,15 11.0625,15 C 12.981054,15 13.481692,14.914551 13.46875,20.46875 L 20.5625,20.5 L 20.5625,11.46875 L 12.59375,7.78125 L 12.59375,5.5 L 15.46875,5.5 L 15.46875,2.5495558 L 12.59375,2.5495558 L 12.59375,0.55713834 L 9.5053617,0.55713834 z"
- id="rect2381"
- sodipodi:nodetypes="cccccccccscccccccccc" />
- <path
- style="fill:#56769c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M -25.921034,11.106694 L -16.96875,7.0625 L -7.928078,11.106694 L -7.928078,21.044194 L -14.959597,21 C -14.946655,15.4458 -15.018946,15 -16.9375,15 C -18.855336,15 -18.971431,15.587316 -19.015625,21 L -25.858534,21.044194 L -25.921034,11.106694 z"
- id="path2383"
- sodipodi:nodetypes="ccccczccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#56769c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -17,-0.0625 L -17,8.8998106"
- id="path2385"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#56769c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -12.916593,2.9722718 L -21.039214,3"
- id="path2387"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/navit/icons/cinema.svg b/navit/icons/cinema.svg
deleted file mode 100644
index fc1611908..000000000
--- a/navit/icons/cinema.svg
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="cinema.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/cinema.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3156">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3158" />
- <stop
- id="stop3166"
- offset="0.41698599"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop3164"
- offset="0.41698599"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- style="stop-color:#3d3d3d;stop-opacity:1;"
- offset="1"
- id="stop3160" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3156"
- id="linearGradient3162"
- x1="0.875"
- y1="3.59375"
- x2="2.0625"
- y2="4.65625"
- gradientUnits="userSpaceOnUse"
- spreadMethod="reflect"
- gradientTransform="matrix(4.9592696,0,0,4.9592696,-3.33272,-83.487192)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#22a638"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.8284271"
- inkscape:cx="82.273623"
- inkscape:cy="48.388215"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="943"
- inkscape:window-height="682"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g3407"
- transform="matrix(0.20329529,0,0,0.20329529,0.66974093,-60.935637)">
- <path
- inkscape:connector-curvature="0"
- id="rect2381-5"
- d="m 95.99219,-80.94922 c -32.05588,3.52573 -64.11198,7.04949 -96.16796964,10.57422 1.49032004,6.3509 -1.99300996,12.90195 0.008,18.96484 C 3.0962104,-27.04692 6.3576804,-2.6833402 9.6232404,21.679688 39.07975,20.102686 68.53598,18.520546 97.99238,16.941406 c 0,-22.3554662 0,-44.710936 0,-67.066406 -22.32107,-1.37852 -44.64191,-2.76069 -66.96289,-4.14062 22.68555,-1.38331 45.37103,-2.76785 68.05664,-4.1504 -0.3233,-7.58914 -0.64629,-15.17831 -0.9668,-22.76757 -0.70898,0.0781 -1.41797,0.15625 -2.12695,0.23437 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.95926952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="rect2381"
- d="m 3.79623,-50.941986 90.196716,5.579178 0,59.511236 -80.898086,4.33936 -9.29863,-69.429774 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#5a5a5a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.95926952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="path3154"
- d="M 4.1061843,-65.819795 94.3029,-75.738334 94.922809,-61.170479 3.4862756,-55.591301 4.1061843,-65.819795 Z"
- style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3162);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.95926952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path3168"
- d="m 18.14602,-37.504459 62.828843,3.068392"
- style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.95926952px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3170"
- d="m 22.091096,-16.352355 58.664597,0.21915"
- style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.95926952px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3172"
- d="M 24.940316,5.8956029 81.112374,3.7038934"
- style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.95926952px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3174"
- d="m 58.765617,-14.891156 5e-6,17.8988225"
- style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.95926952px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.45597486" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/communication.svg b/navit/icons/communication.svg
deleted file mode 100644
index bad45d89a..000000000
--- a/navit/icons/communication.svg
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
- sodipodi:docname="communication.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="14.450743"
- inkscape:cy="12.141264"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="705"
- inkscape:window-width="1366"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:zoom="17.57188"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="1"
- inkscape:measure-start="0,0"
- inkscape:measure-end="0,0" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <circle
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:2.10489988;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path898"
- cx="7.4564438"
- cy="6.1999226"
- r="2.5702684" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:1.2851342px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 1.7888865,21.595802 C 1.7472225,18.024565 2.7605344,9.5386167 5.2788818,9.3760639 c 1.9139241,-0.076555 2.6380187,-0.132203 4.1544689,0 2.1751583,0.1782276 3.9757453,7.8313611 3.9921953,12.2197371 h -1.607697 c -0.229376,-3.388486 -0.611612,-5.480113 -1.301468,-7.693975 -0.153114,1.071798 -0.229671,7.693976 -0.229671,7.693976 H 4.9277222 L 4.6214943,13.901826 c -1.1217852,2.785041 -1.3214048,5.746992 -1.3014684,7.770533 z"
- id="path900"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccc" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:1.2851342px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 10.036017,7.7333484 c 0.706308,0.4985691 2.617492,-1.4126154 3.406895,-1.3710679 0.789403,0.041547 4.071655,0.9971401 5.027247,-0.1661899 C 19.425753,5.0327605 19.010277,1.2103904 17.680758,0.91955782 16.351238,0.62872539 10.243755,-0.32686724 9.4959004,1.7920554 8.7480459,3.910978 11.240895,5.3651405 11.656369,5.5313305 11.781013,6.320733 10.036017,7.7333484 10.036017,7.7333484 Z"
- id="path902"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="csssscc" />
- <circle
- style="fill:#0089cd;fill-opacity:1;stroke:#ffffff;stroke-width:0.50433594;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path904"
- cx="12.427114"
- cy="3.3160748"
- r="0.24783203" />
- <circle
- style="fill:#0089cd;fill-opacity:1;stroke:#ffffff;stroke-width:0.50433594;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path904-5"
- cx="14.454914"
- cy="3.3160748"
- r="0.24783203" />
- <circle
- style="fill:#0089cd;fill-opacity:1;stroke:#ffffff;stroke-width:0.50433594;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path904-5-5"
- cx="16.446732"
- cy="3.3160748"
- r="0.24783203" />
-</svg>
diff --git a/navit/icons/concert.svg b/navit/icons/concert.svg
deleted file mode 100644
index d226e4c2d..000000000
--- a/navit/icons/concert.svg
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
- sodipodi:docname="concert.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="20.75586"
- inkscape:cy="4.6274553"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="705"
- inkscape:window-width="1366"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:zoom="12.680782"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="1"
- inkscape:measure-start="0,0"
- inkscape:measure-end="0,0"
- inkscape:lockguides="true" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:1.16406763px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 11.89298,0.29824419 C 6.7920335,0.36448969 3.0245422,3.9744881 3.0160085,9.208339 c -0.00777,4.764226 8.8769715,12.089905 8.8769715,12.089905 0,0 8.399996,-7.12183 8.41325,-12.089905 C 20.3186,4.5706582 16.993926,0.29824419 11.89298,0.29824419 Z"
- id="path1492"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscsc" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:#ffffff;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 11.875679,1.0590326 C 7.1553836,1.1203346 3.669036,4.4609421 3.6611391,9.3042242 3.6539491,13.712926 11.875679,20.491937 11.875679,20.491937 c 0,0 7.773159,-6.590374 7.785423,-11.1877128 0.01145,-4.2916004 -3.065128,-8.2451916 -7.785423,-8.2451916 z"
- id="path1492-2"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscsc"
- inkscape:transform-center-x="-1.3165584"
- inkscape:transform-center-y="3.1070785" />
- <circle
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.25710332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path1494"
- cx="11.661134"
- cy="8.7982445"
- r="7" />
- <circle
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.50632137;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path1511"
- cx="8.9422398"
- cy="12.313624"
- r="1.313432" />
- <circle
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.50632137;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path1511-2"
- cx="13.315376"
- cy="10.128977"
- r="1.313432" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.47141925;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530"
- width="1.1041681"
- height="5.7941589"
- x="9.1515036"
- y="6.3877821" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.47141925;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530-1"
- width="1.1041681"
- height="5.7941589"
- x="13.52464"
- y="4.2824731" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:1.75124252px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 9.1557652,6.3877811 14.628808,3.7072399 V 5.1514704 L 9.1557652,7.8504332 Z"
- id="path1547"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
-</svg>
diff --git a/navit/icons/country_.svgz b/navit/icons/country_.svgz
deleted file mode 100644
index b58b69495..000000000
--- a/navit/icons/country_.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AD.svgz b/navit/icons/country_AD.svgz
deleted file mode 100644
index 38eaf0b96..000000000
--- a/navit/icons/country_AD.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AE.svgz b/navit/icons/country_AE.svgz
deleted file mode 100644
index 67dcd1e9d..000000000
--- a/navit/icons/country_AE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AF.svgz b/navit/icons/country_AF.svgz
deleted file mode 100644
index 7dab2fc22..000000000
--- a/navit/icons/country_AF.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AG.svgz b/navit/icons/country_AG.svgz
deleted file mode 100644
index f0d9e58e2..000000000
--- a/navit/icons/country_AG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AI.svgz b/navit/icons/country_AI.svgz
deleted file mode 100644
index 595d72df7..000000000
--- a/navit/icons/country_AI.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AL.svgz b/navit/icons/country_AL.svgz
deleted file mode 100644
index 5d2ab91ec..000000000
--- a/navit/icons/country_AL.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AM.svgz b/navit/icons/country_AM.svgz
deleted file mode 100644
index 72d031eaa..000000000
--- a/navit/icons/country_AM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AN.svgz b/navit/icons/country_AN.svgz
deleted file mode 100644
index e40e324ef..000000000
--- a/navit/icons/country_AN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AO.svgz b/navit/icons/country_AO.svgz
deleted file mode 100644
index 5e8d94ed5..000000000
--- a/navit/icons/country_AO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AQ.svgz b/navit/icons/country_AQ.svgz
deleted file mode 100644
index cf1308c54..000000000
--- a/navit/icons/country_AQ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AR.svgz b/navit/icons/country_AR.svgz
deleted file mode 100644
index 59f4b1077..000000000
--- a/navit/icons/country_AR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AS.svgz b/navit/icons/country_AS.svgz
deleted file mode 100644
index 3c4d0eff2..000000000
--- a/navit/icons/country_AS.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AT.svgz b/navit/icons/country_AT.svgz
deleted file mode 100644
index 76d3c70b4..000000000
--- a/navit/icons/country_AT.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AU.svgz b/navit/icons/country_AU.svgz
deleted file mode 100644
index 84a3882d9..000000000
--- a/navit/icons/country_AU.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AW.svgz b/navit/icons/country_AW.svgz
deleted file mode 100644
index 3a095057c..000000000
--- a/navit/icons/country_AW.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AX.svgz b/navit/icons/country_AX.svgz
deleted file mode 100644
index c56d47c9a..000000000
--- a/navit/icons/country_AX.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_AZ.svgz b/navit/icons/country_AZ.svgz
deleted file mode 100644
index a1a6bb26e..000000000
--- a/navit/icons/country_AZ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BA.svgz b/navit/icons/country_BA.svgz
deleted file mode 100644
index dd5c66b3b..000000000
--- a/navit/icons/country_BA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BB.svgz b/navit/icons/country_BB.svgz
deleted file mode 100644
index 82cf29ca9..000000000
--- a/navit/icons/country_BB.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BD.svgz b/navit/icons/country_BD.svgz
deleted file mode 100644
index 9bf453dc2..000000000
--- a/navit/icons/country_BD.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BE.svgz b/navit/icons/country_BE.svgz
deleted file mode 100644
index be47fcbc2..000000000
--- a/navit/icons/country_BE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BF.svgz b/navit/icons/country_BF.svgz
deleted file mode 100644
index 35a225633..000000000
--- a/navit/icons/country_BF.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BG.svgz b/navit/icons/country_BG.svgz
deleted file mode 100644
index 3d4d0f838..000000000
--- a/navit/icons/country_BG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BH.svgz b/navit/icons/country_BH.svgz
deleted file mode 100644
index 5b0cce662..000000000
--- a/navit/icons/country_BH.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BI.svgz b/navit/icons/country_BI.svgz
deleted file mode 100644
index 7750db3cc..000000000
--- a/navit/icons/country_BI.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BJ.svgz b/navit/icons/country_BJ.svgz
deleted file mode 100644
index 86bcd5d3a..000000000
--- a/navit/icons/country_BJ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BL.svgz b/navit/icons/country_BL.svgz
deleted file mode 100644
index 46b7fff94..000000000
--- a/navit/icons/country_BL.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BM.svgz b/navit/icons/country_BM.svgz
deleted file mode 100644
index 13451a770..000000000
--- a/navit/icons/country_BM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BN.svgz b/navit/icons/country_BN.svgz
deleted file mode 100644
index f5de30fc5..000000000
--- a/navit/icons/country_BN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BO.svgz b/navit/icons/country_BO.svgz
deleted file mode 100644
index 2a814f56e..000000000
--- a/navit/icons/country_BO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BR.svgz b/navit/icons/country_BR.svgz
deleted file mode 100644
index 5bc65e3bf..000000000
--- a/navit/icons/country_BR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BS.svgz b/navit/icons/country_BS.svgz
deleted file mode 100644
index dbb64ce7a..000000000
--- a/navit/icons/country_BS.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BT.svgz b/navit/icons/country_BT.svgz
deleted file mode 100644
index 9e6ad96ec..000000000
--- a/navit/icons/country_BT.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BV.svgz b/navit/icons/country_BV.svgz
deleted file mode 100644
index f990449ff..000000000
--- a/navit/icons/country_BV.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BW.svgz b/navit/icons/country_BW.svgz
deleted file mode 100644
index 5c6865055..000000000
--- a/navit/icons/country_BW.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BY.svgz b/navit/icons/country_BY.svgz
deleted file mode 100644
index bf279e708..000000000
--- a/navit/icons/country_BY.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_BZ.svgz b/navit/icons/country_BZ.svgz
deleted file mode 100644
index 34fe28f1a..000000000
--- a/navit/icons/country_BZ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CA.svgz b/navit/icons/country_CA.svgz
deleted file mode 100644
index 92587f9fa..000000000
--- a/navit/icons/country_CA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CC.svgz b/navit/icons/country_CC.svgz
deleted file mode 100644
index ec8e914a0..000000000
--- a/navit/icons/country_CC.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CD.svgz b/navit/icons/country_CD.svgz
deleted file mode 100644
index 70ffe5e5d..000000000
--- a/navit/icons/country_CD.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CF.svgz b/navit/icons/country_CF.svgz
deleted file mode 100644
index eb794a0a4..000000000
--- a/navit/icons/country_CF.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CG.svgz b/navit/icons/country_CG.svgz
deleted file mode 100644
index da2ba7737..000000000
--- a/navit/icons/country_CG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CH.svgz b/navit/icons/country_CH.svgz
deleted file mode 100644
index c27e64412..000000000
--- a/navit/icons/country_CH.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CI.svgz b/navit/icons/country_CI.svgz
deleted file mode 100644
index d58271fdf..000000000
--- a/navit/icons/country_CI.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CK.svgz b/navit/icons/country_CK.svgz
deleted file mode 100644
index 254e25a16..000000000
--- a/navit/icons/country_CK.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CL.svgz b/navit/icons/country_CL.svgz
deleted file mode 100644
index e0436f103..000000000
--- a/navit/icons/country_CL.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CM.svgz b/navit/icons/country_CM.svgz
deleted file mode 100644
index 76a7798cf..000000000
--- a/navit/icons/country_CM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CN.svgz b/navit/icons/country_CN.svgz
deleted file mode 100644
index 10319b605..000000000
--- a/navit/icons/country_CN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CO.svgz b/navit/icons/country_CO.svgz
deleted file mode 100644
index 4294d1df7..000000000
--- a/navit/icons/country_CO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CR.svgz b/navit/icons/country_CR.svgz
deleted file mode 100644
index 877f779c1..000000000
--- a/navit/icons/country_CR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CU.svgz b/navit/icons/country_CU.svgz
deleted file mode 100644
index fde7996ae..000000000
--- a/navit/icons/country_CU.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CV.svgz b/navit/icons/country_CV.svgz
deleted file mode 100644
index 2080d1f68..000000000
--- a/navit/icons/country_CV.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CX.svgz b/navit/icons/country_CX.svgz
deleted file mode 100644
index 1ad1ea803..000000000
--- a/navit/icons/country_CX.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CY.svgz b/navit/icons/country_CY.svgz
deleted file mode 100644
index 59073bbed..000000000
--- a/navit/icons/country_CY.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_CZ.svgz b/navit/icons/country_CZ.svgz
deleted file mode 100644
index 893984037..000000000
--- a/navit/icons/country_CZ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_DE.svgz b/navit/icons/country_DE.svgz
deleted file mode 100644
index 107982c31..000000000
--- a/navit/icons/country_DE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_DJ.svgz b/navit/icons/country_DJ.svgz
deleted file mode 100644
index 6d2e49071..000000000
--- a/navit/icons/country_DJ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_DK.svgz b/navit/icons/country_DK.svgz
deleted file mode 100644
index f9d51c74f..000000000
--- a/navit/icons/country_DK.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_DM.svgz b/navit/icons/country_DM.svgz
deleted file mode 100644
index ff8215f42..000000000
--- a/navit/icons/country_DM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_DO.svgz b/navit/icons/country_DO.svgz
deleted file mode 100644
index a16fba7df..000000000
--- a/navit/icons/country_DO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_DZ.svgz b/navit/icons/country_DZ.svgz
deleted file mode 100644
index e17f46fd3..000000000
--- a/navit/icons/country_DZ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_EC.svgz b/navit/icons/country_EC.svgz
deleted file mode 100644
index fb2f4f0e9..000000000
--- a/navit/icons/country_EC.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_EE.svgz b/navit/icons/country_EE.svgz
deleted file mode 100644
index dcf6b912f..000000000
--- a/navit/icons/country_EE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_EG.svgz b/navit/icons/country_EG.svgz
deleted file mode 100644
index 317ce47b8..000000000
--- a/navit/icons/country_EG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_EH.svgz b/navit/icons/country_EH.svgz
deleted file mode 100644
index b08f92298..000000000
--- a/navit/icons/country_EH.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_ER.svgz b/navit/icons/country_ER.svgz
deleted file mode 100644
index d00a4c6a8..000000000
--- a/navit/icons/country_ER.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_ES.svgz b/navit/icons/country_ES.svgz
deleted file mode 100644
index f0abc567d..000000000
--- a/navit/icons/country_ES.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_ET.svgz b/navit/icons/country_ET.svgz
deleted file mode 100644
index 2e6604508..000000000
--- a/navit/icons/country_ET.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_FI.svgz b/navit/icons/country_FI.svgz
deleted file mode 100644
index 85927b63b..000000000
--- a/navit/icons/country_FI.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_FJ.svgz b/navit/icons/country_FJ.svgz
deleted file mode 100644
index 4085c59db..000000000
--- a/navit/icons/country_FJ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_FK.svgz b/navit/icons/country_FK.svgz
deleted file mode 100644
index b2ff812e8..000000000
--- a/navit/icons/country_FK.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_FM.svgz b/navit/icons/country_FM.svgz
deleted file mode 100644
index 32361a5b4..000000000
--- a/navit/icons/country_FM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_FO.svgz b/navit/icons/country_FO.svgz
deleted file mode 100644
index 92bed0f6a..000000000
--- a/navit/icons/country_FO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_FR.svgz b/navit/icons/country_FR.svgz
deleted file mode 100644
index 58c9e0fc3..000000000
--- a/navit/icons/country_FR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GA.svgz b/navit/icons/country_GA.svgz
deleted file mode 100644
index 0bf22f648..000000000
--- a/navit/icons/country_GA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GB.svgz b/navit/icons/country_GB.svgz
deleted file mode 100644
index 07500c719..000000000
--- a/navit/icons/country_GB.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GD.svgz b/navit/icons/country_GD.svgz
deleted file mode 100644
index 5ee64135a..000000000
--- a/navit/icons/country_GD.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GE.svgz b/navit/icons/country_GE.svgz
deleted file mode 100644
index 54a8e8bf1..000000000
--- a/navit/icons/country_GE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GF.svgz b/navit/icons/country_GF.svgz
deleted file mode 100644
index 4ac873b47..000000000
--- a/navit/icons/country_GF.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GG.svgz b/navit/icons/country_GG.svgz
deleted file mode 100644
index e565c1682..000000000
--- a/navit/icons/country_GG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GH.svgz b/navit/icons/country_GH.svgz
deleted file mode 100644
index ae8a23741..000000000
--- a/navit/icons/country_GH.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GI.svgz b/navit/icons/country_GI.svgz
deleted file mode 100644
index 0446a7e14..000000000
--- a/navit/icons/country_GI.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GL.svgz b/navit/icons/country_GL.svgz
deleted file mode 100644
index efc40350b..000000000
--- a/navit/icons/country_GL.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GM.svgz b/navit/icons/country_GM.svgz
deleted file mode 100644
index a9334e79c..000000000
--- a/navit/icons/country_GM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GN.svgz b/navit/icons/country_GN.svgz
deleted file mode 100644
index 1b63e41ca..000000000
--- a/navit/icons/country_GN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GP.svgz b/navit/icons/country_GP.svgz
deleted file mode 100644
index 904de5ae6..000000000
--- a/navit/icons/country_GP.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GQ.svgz b/navit/icons/country_GQ.svgz
deleted file mode 100644
index afc2be67c..000000000
--- a/navit/icons/country_GQ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GR.svgz b/navit/icons/country_GR.svgz
deleted file mode 100644
index 40cde738c..000000000
--- a/navit/icons/country_GR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GS.svgz b/navit/icons/country_GS.svgz
deleted file mode 100644
index 2f824fde3..000000000
--- a/navit/icons/country_GS.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GT.svgz b/navit/icons/country_GT.svgz
deleted file mode 100644
index 2a060b6b2..000000000
--- a/navit/icons/country_GT.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GU.svgz b/navit/icons/country_GU.svgz
deleted file mode 100644
index 510129294..000000000
--- a/navit/icons/country_GU.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GW.svgz b/navit/icons/country_GW.svgz
deleted file mode 100644
index dc6aea01c..000000000
--- a/navit/icons/country_GW.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_GY.svgz b/navit/icons/country_GY.svgz
deleted file mode 100644
index 5925c884e..000000000
--- a/navit/icons/country_GY.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_HK.svgz b/navit/icons/country_HK.svgz
deleted file mode 100644
index 4e73944b1..000000000
--- a/navit/icons/country_HK.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_HM.svgz b/navit/icons/country_HM.svgz
deleted file mode 100644
index 36a363f8c..000000000
--- a/navit/icons/country_HM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_HN.svgz b/navit/icons/country_HN.svgz
deleted file mode 100644
index 19baf8a2f..000000000
--- a/navit/icons/country_HN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_HR.svgz b/navit/icons/country_HR.svgz
deleted file mode 100644
index b16673a1a..000000000
--- a/navit/icons/country_HR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_HT.svgz b/navit/icons/country_HT.svgz
deleted file mode 100644
index 78569d866..000000000
--- a/navit/icons/country_HT.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_HU.svgz b/navit/icons/country_HU.svgz
deleted file mode 100644
index 138e5e6ee..000000000
--- a/navit/icons/country_HU.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_ID.svgz b/navit/icons/country_ID.svgz
deleted file mode 100644
index bebdbe9cb..000000000
--- a/navit/icons/country_ID.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_IE.svgz b/navit/icons/country_IE.svgz
deleted file mode 100644
index 5a0782e62..000000000
--- a/navit/icons/country_IE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_IL.svgz b/navit/icons/country_IL.svgz
deleted file mode 100644
index 0de8f5412..000000000
--- a/navit/icons/country_IL.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_IM.svgz b/navit/icons/country_IM.svgz
deleted file mode 100644
index 63cfd31a2..000000000
--- a/navit/icons/country_IM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_IN.svgz b/navit/icons/country_IN.svgz
deleted file mode 100644
index d207dcdee..000000000
--- a/navit/icons/country_IN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_IO.svgz b/navit/icons/country_IO.svgz
deleted file mode 100644
index c2e20767f..000000000
--- a/navit/icons/country_IO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_IQ.svgz b/navit/icons/country_IQ.svgz
deleted file mode 100644
index 2045a8775..000000000
--- a/navit/icons/country_IQ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_IR.svgz b/navit/icons/country_IR.svgz
deleted file mode 100644
index fbf6ef0af..000000000
--- a/navit/icons/country_IR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_IS.svgz b/navit/icons/country_IS.svgz
deleted file mode 100644
index 649434345..000000000
--- a/navit/icons/country_IS.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_IT.svgz b/navit/icons/country_IT.svgz
deleted file mode 100644
index 7b2490ea1..000000000
--- a/navit/icons/country_IT.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_JE.svgz b/navit/icons/country_JE.svgz
deleted file mode 100644
index a61eb2e4e..000000000
--- a/navit/icons/country_JE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_JM.svgz b/navit/icons/country_JM.svgz
deleted file mode 100644
index 97d89506e..000000000
--- a/navit/icons/country_JM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_JO.svgz b/navit/icons/country_JO.svgz
deleted file mode 100644
index 515bf8a74..000000000
--- a/navit/icons/country_JO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_JP.svgz b/navit/icons/country_JP.svgz
deleted file mode 100644
index 896888544..000000000
--- a/navit/icons/country_JP.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KE.svgz b/navit/icons/country_KE.svgz
deleted file mode 100644
index 94894b8a1..000000000
--- a/navit/icons/country_KE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KG.svgz b/navit/icons/country_KG.svgz
deleted file mode 100644
index adb3a3708..000000000
--- a/navit/icons/country_KG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KH.svgz b/navit/icons/country_KH.svgz
deleted file mode 100644
index 1da2ccb0b..000000000
--- a/navit/icons/country_KH.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KI.svgz b/navit/icons/country_KI.svgz
deleted file mode 100644
index 2c6775e53..000000000
--- a/navit/icons/country_KI.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KM.svgz b/navit/icons/country_KM.svgz
deleted file mode 100644
index 5cb2b84a4..000000000
--- a/navit/icons/country_KM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KN.svgz b/navit/icons/country_KN.svgz
deleted file mode 100644
index 9c5150bfc..000000000
--- a/navit/icons/country_KN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KP.svgz b/navit/icons/country_KP.svgz
deleted file mode 100644
index f45c8e803..000000000
--- a/navit/icons/country_KP.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KR.svgz b/navit/icons/country_KR.svgz
deleted file mode 100644
index 61b6112c6..000000000
--- a/navit/icons/country_KR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KW.svgz b/navit/icons/country_KW.svgz
deleted file mode 100644
index 439d148ac..000000000
--- a/navit/icons/country_KW.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KY.svgz b/navit/icons/country_KY.svgz
deleted file mode 100644
index f209210bc..000000000
--- a/navit/icons/country_KY.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_KZ.svgz b/navit/icons/country_KZ.svgz
deleted file mode 100644
index 78a1f4420..000000000
--- a/navit/icons/country_KZ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LA.svgz b/navit/icons/country_LA.svgz
deleted file mode 100644
index 9ce9d6c15..000000000
--- a/navit/icons/country_LA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LB.svgz b/navit/icons/country_LB.svgz
deleted file mode 100644
index 387f5e686..000000000
--- a/navit/icons/country_LB.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LC.svgz b/navit/icons/country_LC.svgz
deleted file mode 100644
index 7bcacff51..000000000
--- a/navit/icons/country_LC.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LI.svgz b/navit/icons/country_LI.svgz
deleted file mode 100644
index 6019f9a0d..000000000
--- a/navit/icons/country_LI.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LK.svgz b/navit/icons/country_LK.svgz
deleted file mode 100644
index 02a31a6ac..000000000
--- a/navit/icons/country_LK.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LR.svgz b/navit/icons/country_LR.svgz
deleted file mode 100644
index 57a3391aa..000000000
--- a/navit/icons/country_LR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LS.svgz b/navit/icons/country_LS.svgz
deleted file mode 100644
index d6e19de42..000000000
--- a/navit/icons/country_LS.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LT.svgz b/navit/icons/country_LT.svgz
deleted file mode 100644
index 07b5472bf..000000000
--- a/navit/icons/country_LT.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LU.svgz b/navit/icons/country_LU.svgz
deleted file mode 100644
index c60b13487..000000000
--- a/navit/icons/country_LU.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LV.svgz b/navit/icons/country_LV.svgz
deleted file mode 100644
index aa4fdc39a..000000000
--- a/navit/icons/country_LV.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_LY.svgz b/navit/icons/country_LY.svgz
deleted file mode 100644
index d453d8bdf..000000000
--- a/navit/icons/country_LY.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MA.svgz b/navit/icons/country_MA.svgz
deleted file mode 100644
index 794f083bd..000000000
--- a/navit/icons/country_MA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MC.svgz b/navit/icons/country_MC.svgz
deleted file mode 100644
index 1ed62dd56..000000000
--- a/navit/icons/country_MC.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MD.svgz b/navit/icons/country_MD.svgz
deleted file mode 100644
index 17675e93e..000000000
--- a/navit/icons/country_MD.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_ME.svgz b/navit/icons/country_ME.svgz
deleted file mode 100644
index ddb9acb43..000000000
--- a/navit/icons/country_ME.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MF.svgz b/navit/icons/country_MF.svgz
deleted file mode 100644
index 657a49fe7..000000000
--- a/navit/icons/country_MF.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MG.svgz b/navit/icons/country_MG.svgz
deleted file mode 100644
index 5d4dbcb46..000000000
--- a/navit/icons/country_MG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MH.svgz b/navit/icons/country_MH.svgz
deleted file mode 100644
index b9bc96f7a..000000000
--- a/navit/icons/country_MH.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MK.svgz b/navit/icons/country_MK.svgz
deleted file mode 100644
index 3e77a4f8c..000000000
--- a/navit/icons/country_MK.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_ML.svgz b/navit/icons/country_ML.svgz
deleted file mode 100644
index 86f210717..000000000
--- a/navit/icons/country_ML.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MM.svgz b/navit/icons/country_MM.svgz
deleted file mode 100644
index 71fc23901..000000000
--- a/navit/icons/country_MM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MN.svgz b/navit/icons/country_MN.svgz
deleted file mode 100644
index b292c536a..000000000
--- a/navit/icons/country_MN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MO.svgz b/navit/icons/country_MO.svgz
deleted file mode 100644
index ffa696461..000000000
--- a/navit/icons/country_MO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MP.svgz b/navit/icons/country_MP.svgz
deleted file mode 100644
index 67574ca9b..000000000
--- a/navit/icons/country_MP.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MQ.svgz b/navit/icons/country_MQ.svgz
deleted file mode 100644
index d4f6fd925..000000000
--- a/navit/icons/country_MQ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MR.svgz b/navit/icons/country_MR.svgz
deleted file mode 100644
index d88359139..000000000
--- a/navit/icons/country_MR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MS.svgz b/navit/icons/country_MS.svgz
deleted file mode 100644
index 840355651..000000000
--- a/navit/icons/country_MS.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MT.svgz b/navit/icons/country_MT.svgz
deleted file mode 100644
index 7737ee80d..000000000
--- a/navit/icons/country_MT.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MU.svgz b/navit/icons/country_MU.svgz
deleted file mode 100644
index 346c67ce2..000000000
--- a/navit/icons/country_MU.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MV.svgz b/navit/icons/country_MV.svgz
deleted file mode 100644
index 3f1cb872a..000000000
--- a/navit/icons/country_MV.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MW.svgz b/navit/icons/country_MW.svgz
deleted file mode 100644
index 7f63bff7c..000000000
--- a/navit/icons/country_MW.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MX.svgz b/navit/icons/country_MX.svgz
deleted file mode 100644
index 63dff365c..000000000
--- a/navit/icons/country_MX.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MY.svgz b/navit/icons/country_MY.svgz
deleted file mode 100644
index 188aa84fd..000000000
--- a/navit/icons/country_MY.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_MZ.svgz b/navit/icons/country_MZ.svgz
deleted file mode 100644
index 1cc6a5dc0..000000000
--- a/navit/icons/country_MZ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NA.svgz b/navit/icons/country_NA.svgz
deleted file mode 100644
index 45a2ce378..000000000
--- a/navit/icons/country_NA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NC.svgz b/navit/icons/country_NC.svgz
deleted file mode 100644
index 5de7938e0..000000000
--- a/navit/icons/country_NC.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NE.svgz b/navit/icons/country_NE.svgz
deleted file mode 100644
index e4aa72cfc..000000000
--- a/navit/icons/country_NE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NF.svgz b/navit/icons/country_NF.svgz
deleted file mode 100644
index bffd6b7fc..000000000
--- a/navit/icons/country_NF.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NG.svgz b/navit/icons/country_NG.svgz
deleted file mode 100644
index b476d20ce..000000000
--- a/navit/icons/country_NG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NI.svgz b/navit/icons/country_NI.svgz
deleted file mode 100644
index 9b7758eaa..000000000
--- a/navit/icons/country_NI.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NL.svgz b/navit/icons/country_NL.svgz
deleted file mode 100644
index cefb48d9e..000000000
--- a/navit/icons/country_NL.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NO.svgz b/navit/icons/country_NO.svgz
deleted file mode 100644
index 878b214cc..000000000
--- a/navit/icons/country_NO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NP.svgz b/navit/icons/country_NP.svgz
deleted file mode 100644
index a511b5bf5..000000000
--- a/navit/icons/country_NP.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NR.svgz b/navit/icons/country_NR.svgz
deleted file mode 100644
index 2d5fe618a..000000000
--- a/navit/icons/country_NR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NU.svgz b/navit/icons/country_NU.svgz
deleted file mode 100644
index 92aad1652..000000000
--- a/navit/icons/country_NU.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_NZ.svgz b/navit/icons/country_NZ.svgz
deleted file mode 100644
index e00fdc9b2..000000000
--- a/navit/icons/country_NZ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_OM.svgz b/navit/icons/country_OM.svgz
deleted file mode 100644
index e58349783..000000000
--- a/navit/icons/country_OM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PA.svgz b/navit/icons/country_PA.svgz
deleted file mode 100644
index 7e5434540..000000000
--- a/navit/icons/country_PA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PE.svgz b/navit/icons/country_PE.svgz
deleted file mode 100644
index 0420e0873..000000000
--- a/navit/icons/country_PE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PF.svgz b/navit/icons/country_PF.svgz
deleted file mode 100644
index 1172c8e31..000000000
--- a/navit/icons/country_PF.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PG.svgz b/navit/icons/country_PG.svgz
deleted file mode 100644
index fc65f1d10..000000000
--- a/navit/icons/country_PG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PH.svgz b/navit/icons/country_PH.svgz
deleted file mode 100644
index e84a2479a..000000000
--- a/navit/icons/country_PH.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PK.svgz b/navit/icons/country_PK.svgz
deleted file mode 100644
index 824b5624d..000000000
--- a/navit/icons/country_PK.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PL.svgz b/navit/icons/country_PL.svgz
deleted file mode 100644
index 73310535a..000000000
--- a/navit/icons/country_PL.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PM.svgz b/navit/icons/country_PM.svgz
deleted file mode 100644
index 56acb3dd7..000000000
--- a/navit/icons/country_PM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PN.svgz b/navit/icons/country_PN.svgz
deleted file mode 100644
index 9a0404c74..000000000
--- a/navit/icons/country_PN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PR.svgz b/navit/icons/country_PR.svgz
deleted file mode 100644
index 75217bbea..000000000
--- a/navit/icons/country_PR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PS.svgz b/navit/icons/country_PS.svgz
deleted file mode 100644
index 2c5c54c81..000000000
--- a/navit/icons/country_PS.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PT.svgz b/navit/icons/country_PT.svgz
deleted file mode 100644
index f0de8001e..000000000
--- a/navit/icons/country_PT.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PW.svgz b/navit/icons/country_PW.svgz
deleted file mode 100644
index 54d644d45..000000000
--- a/navit/icons/country_PW.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_PY.svgz b/navit/icons/country_PY.svgz
deleted file mode 100644
index 67ff330d0..000000000
--- a/navit/icons/country_PY.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_QA.svgz b/navit/icons/country_QA.svgz
deleted file mode 100644
index 1f221bf1c..000000000
--- a/navit/icons/country_QA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_RE.svgz b/navit/icons/country_RE.svgz
deleted file mode 100644
index 81d06626f..000000000
--- a/navit/icons/country_RE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_RO.svgz b/navit/icons/country_RO.svgz
deleted file mode 100644
index cc69d366d..000000000
--- a/navit/icons/country_RO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_RS.svgz b/navit/icons/country_RS.svgz
deleted file mode 100644
index 447cb2c68..000000000
--- a/navit/icons/country_RS.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_RU.svgz b/navit/icons/country_RU.svgz
deleted file mode 100644
index 56dce1764..000000000
--- a/navit/icons/country_RU.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_RW.svgz b/navit/icons/country_RW.svgz
deleted file mode 100644
index f92e743e8..000000000
--- a/navit/icons/country_RW.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SA.svgz b/navit/icons/country_SA.svgz
deleted file mode 100644
index 48f288422..000000000
--- a/navit/icons/country_SA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SB.svgz b/navit/icons/country_SB.svgz
deleted file mode 100644
index 6343e43ca..000000000
--- a/navit/icons/country_SB.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SC.svgz b/navit/icons/country_SC.svgz
deleted file mode 100644
index db51e3811..000000000
--- a/navit/icons/country_SC.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SD.svgz b/navit/icons/country_SD.svgz
deleted file mode 100644
index e1f091253..000000000
--- a/navit/icons/country_SD.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SE.svgz b/navit/icons/country_SE.svgz
deleted file mode 100644
index 17db1c0b9..000000000
--- a/navit/icons/country_SE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SG.svgz b/navit/icons/country_SG.svgz
deleted file mode 100644
index 75fd3840a..000000000
--- a/navit/icons/country_SG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SH.svgz b/navit/icons/country_SH.svgz
deleted file mode 100644
index b3a7f5b83..000000000
--- a/navit/icons/country_SH.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SI.svgz b/navit/icons/country_SI.svgz
deleted file mode 100644
index 21837fd5a..000000000
--- a/navit/icons/country_SI.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SJ.svgz b/navit/icons/country_SJ.svgz
deleted file mode 100644
index 8971ba307..000000000
--- a/navit/icons/country_SJ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SK.svgz b/navit/icons/country_SK.svgz
deleted file mode 100644
index e3d5fc0e6..000000000
--- a/navit/icons/country_SK.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SL.svgz b/navit/icons/country_SL.svgz
deleted file mode 100644
index 2c53b5e2e..000000000
--- a/navit/icons/country_SL.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SM.svgz b/navit/icons/country_SM.svgz
deleted file mode 100644
index b1f0ec028..000000000
--- a/navit/icons/country_SM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SN.svgz b/navit/icons/country_SN.svgz
deleted file mode 100644
index dfcbd74bb..000000000
--- a/navit/icons/country_SN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SO.svgz b/navit/icons/country_SO.svgz
deleted file mode 100644
index 006f0cfa9..000000000
--- a/navit/icons/country_SO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SR.svgz b/navit/icons/country_SR.svgz
deleted file mode 100644
index 87bf42090..000000000
--- a/navit/icons/country_SR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_ST.svgz b/navit/icons/country_ST.svgz
deleted file mode 100644
index ba51d11d8..000000000
--- a/navit/icons/country_ST.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SV.svgz b/navit/icons/country_SV.svgz
deleted file mode 100644
index bc69d5a73..000000000
--- a/navit/icons/country_SV.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SY.svgz b/navit/icons/country_SY.svgz
deleted file mode 100644
index 27d46fab8..000000000
--- a/navit/icons/country_SY.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_SZ.svgz b/navit/icons/country_SZ.svgz
deleted file mode 100644
index 13c333538..000000000
--- a/navit/icons/country_SZ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TC.svgz b/navit/icons/country_TC.svgz
deleted file mode 100644
index 3f5daad2a..000000000
--- a/navit/icons/country_TC.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TD.svgz b/navit/icons/country_TD.svgz
deleted file mode 100644
index 823cc66e7..000000000
--- a/navit/icons/country_TD.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TF.svgz b/navit/icons/country_TF.svgz
deleted file mode 100644
index 8da92cfb9..000000000
--- a/navit/icons/country_TF.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TG.svgz b/navit/icons/country_TG.svgz
deleted file mode 100644
index 5a5c0166f..000000000
--- a/navit/icons/country_TG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TH.svgz b/navit/icons/country_TH.svgz
deleted file mode 100644
index a180af881..000000000
--- a/navit/icons/country_TH.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TJ.svgz b/navit/icons/country_TJ.svgz
deleted file mode 100644
index 17a5a8f17..000000000
--- a/navit/icons/country_TJ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TK.svgz b/navit/icons/country_TK.svgz
deleted file mode 100644
index 8db772e7a..000000000
--- a/navit/icons/country_TK.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TL.svgz b/navit/icons/country_TL.svgz
deleted file mode 100644
index 69d367768..000000000
--- a/navit/icons/country_TL.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TM.svgz b/navit/icons/country_TM.svgz
deleted file mode 100644
index 29dfc16c7..000000000
--- a/navit/icons/country_TM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TN.svgz b/navit/icons/country_TN.svgz
deleted file mode 100644
index d5c9bf69b..000000000
--- a/navit/icons/country_TN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TO.svgz b/navit/icons/country_TO.svgz
deleted file mode 100644
index 283affa50..000000000
--- a/navit/icons/country_TO.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TR.svgz b/navit/icons/country_TR.svgz
deleted file mode 100644
index d1ec1cbca..000000000
--- a/navit/icons/country_TR.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TT.svgz b/navit/icons/country_TT.svgz
deleted file mode 100644
index 960a8ebb1..000000000
--- a/navit/icons/country_TT.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TV.svgz b/navit/icons/country_TV.svgz
deleted file mode 100644
index 6b8ed6ab0..000000000
--- a/navit/icons/country_TV.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TW.svgz b/navit/icons/country_TW.svgz
deleted file mode 100644
index e1fce9428..000000000
--- a/navit/icons/country_TW.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_TZ.svgz b/navit/icons/country_TZ.svgz
deleted file mode 100644
index 9615d4f09..000000000
--- a/navit/icons/country_TZ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_UA.svgz b/navit/icons/country_UA.svgz
deleted file mode 100644
index 8f527bb30..000000000
--- a/navit/icons/country_UA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_UG.svgz b/navit/icons/country_UG.svgz
deleted file mode 100644
index 0f376c952..000000000
--- a/navit/icons/country_UG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_UM.svgz b/navit/icons/country_UM.svgz
deleted file mode 100644
index 28ec4a716..000000000
--- a/navit/icons/country_UM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_US.svgz b/navit/icons/country_US.svgz
deleted file mode 100644
index 11f823275..000000000
--- a/navit/icons/country_US.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_UY.svgz b/navit/icons/country_UY.svgz
deleted file mode 100644
index ee677f676..000000000
--- a/navit/icons/country_UY.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_UZ.svgz b/navit/icons/country_UZ.svgz
deleted file mode 100644
index 69e781b43..000000000
--- a/navit/icons/country_UZ.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_VA.svgz b/navit/icons/country_VA.svgz
deleted file mode 100644
index dc9ba9269..000000000
--- a/navit/icons/country_VA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_VC.svgz b/navit/icons/country_VC.svgz
deleted file mode 100644
index b5c94b0d6..000000000
--- a/navit/icons/country_VC.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_VE.svgz b/navit/icons/country_VE.svgz
deleted file mode 100644
index 19b772013..000000000
--- a/navit/icons/country_VE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_VG.svgz b/navit/icons/country_VG.svgz
deleted file mode 100644
index cb9b78cff..000000000
--- a/navit/icons/country_VG.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_VI.svgz b/navit/icons/country_VI.svgz
deleted file mode 100644
index 0ae17cf3c..000000000
--- a/navit/icons/country_VI.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_VN.svgz b/navit/icons/country_VN.svgz
deleted file mode 100644
index 9b6490d5f..000000000
--- a/navit/icons/country_VN.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_VU.svgz b/navit/icons/country_VU.svgz
deleted file mode 100644
index a5c02df50..000000000
--- a/navit/icons/country_VU.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_WF.svgz b/navit/icons/country_WF.svgz
deleted file mode 100644
index 5a0558f3f..000000000
--- a/navit/icons/country_WF.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_WS.svgz b/navit/icons/country_WS.svgz
deleted file mode 100644
index 6f8c24f70..000000000
--- a/navit/icons/country_WS.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_YE.svgz b/navit/icons/country_YE.svgz
deleted file mode 100644
index 97be6f64a..000000000
--- a/navit/icons/country_YE.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_YT.svgz b/navit/icons/country_YT.svgz
deleted file mode 100644
index dcfe4c3f8..000000000
--- a/navit/icons/country_YT.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_ZA.svgz b/navit/icons/country_ZA.svgz
deleted file mode 100644
index dd0ddbde0..000000000
--- a/navit/icons/country_ZA.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_ZM.svgz b/navit/icons/country_ZM.svgz
deleted file mode 100644
index cdebdcdf3..000000000
--- a/navit/icons/country_ZM.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/country_ZW.svgz b/navit/icons/country_ZW.svgz
deleted file mode 100644
index 9ff43bb18..000000000
--- a/navit/icons/country_ZW.svgz
+++ /dev/null
Binary files differ
diff --git a/navit/icons/crossing.svg b/navit/icons/crossing.svg
deleted file mode 100644
index 51a5aeab6..000000000
--- a/navit/icons/crossing.svg
+++ /dev/null
@@ -1,191 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
- sodipodi:docname="crossing.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="12.599127"
- inkscape:cy="7.2481934"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="705"
- inkscape:window-width="1366"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:zoom="17.933333"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="1"
- inkscape:measure-start="0,0"
- inkscape:measure-end="0,0"
- inkscape:lockguides="true" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:1.16406763px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 11.89298,0.29824419 C 6.7920335,0.36448969 3.0245422,3.9744881 3.0160085,9.208339 c -0.00777,4.764226 8.8769715,12.089905 8.8769715,12.089905 0,0 8.399996,-7.12183 8.41325,-12.089905 C 20.3186,4.5706582 16.993926,0.29824419 11.89298,0.29824419 Z"
- id="path1492"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscsc" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:#ffffff;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 11.875679,1.0590326 C 7.1553836,1.1203346 3.669036,4.4609421 3.6611391,9.3042242 3.6539491,13.712926 11.875679,20.491937 11.875679,20.491937 c 0,0 7.773159,-6.590374 7.785423,-11.1877128 0.01145,-4.2916004 -3.065128,-8.2451916 -7.785423,-8.2451916 z"
- id="path1492-2"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscsc"
- inkscape:transform-center-x="-1.3165584"
- inkscape:transform-center-y="3.1070785" />
- <circle
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.25710332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path1494"
- cx="11.661134"
- cy="8.7982445"
- r="7" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.47141925;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530-1"
- width="1.1041681"
- height="5.7941589"
- x="15.890425"
- y="5.9333854" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.47141925;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530-1-1"
- width="1.1041681"
- height="5.7941589"
- x="13.416132"
- y="5.9333854" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.47141925;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530-1-1-7"
- width="1.1041681"
- height="5.7941589"
- x="10.965008"
- y="-11.597079"
- transform="scale(1,-1)" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.47141925;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530-1-1-7-2"
- width="1.1041681"
- height="5.7941589"
- x="8.4675465"
- y="5.9333854" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.47141925;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530-1-1-7-2-7"
- width="1.1041681"
- height="5.7941589"
- x="5.9932542"
- y="5.9333854" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.18637794;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530-1-1-7-6"
- width="1"
- height="1"
- x="11.017092"
- y="-4.9517441"
- transform="scale(1,-1)"
- inkscape:transform-center-x="-0.071419827"
- inkscape:transform-center-y="0.50357632" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.18637794;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530-1-1-7-6-5"
- width="1"
- height="1"
- x="11.017092"
- y="-3.1005669"
- transform="scale(1,-1)"
- inkscape:transform-center-x="-0.071419827"
- inkscape:transform-center-y="0.50357632" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.18637794;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530-1-1-7-6-5-6"
- width="1"
- height="1"
- x="11.017092"
- y="-13.448256"
- transform="scale(1,-1)"
- inkscape:transform-center-x="-0.071419827"
- inkscape:transform-center-y="0.50357632" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:0.18637794;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1530-1-1-7-6-5-6-0"
- width="1"
- height="1"
- x="11.017092"
- y="-15.299434"
- transform="scale(1,-1)"
- inkscape:transform-center-x="-0.071419827"
- inkscape:transform-center-y="0.50357632" />
-</svg>
diff --git a/navit/icons/cursor.svg b/navit/icons/cursor.svg
deleted file mode 100644
index 3f905c1b0..000000000
--- a/navit/icons/cursor.svg
+++ /dev/null
@@ -1,187 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="cursor.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3164">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3166" />
- <stop
- id="stop3172"
- offset="0.34999999"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3168" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5113">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop5115" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop5117" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient5315"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004639,0,0,1,-25.573398,-16.186506)" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5105">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5107" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5109" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5105"
- id="radialGradient4354"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.282946,0,13.64644)"
- cx="11.25"
- cy="19.03125"
- fx="11.25"
- fy="19.03125"
- r="8.0625" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient3227"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004639,0,0,1,-25.573398,-16.186506)"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient3230"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2681342,-0.1548073,0.1540925,0.2668961,0.3757766,7.7972572)"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3170"
- x1="10.895593"
- y1="3.1353614"
- x2="10.895593"
- y2="20.189789"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.919596"
- inkscape:cx="-15.465375"
- inkscape:cy="15.361975"
- inkscape:document-units="px"
- inkscape:current-layer="layer3"
- showgrid="false"
- inkscape:window-width="1500"
- inkscape:window-height="1027"
- inkscape:window-x="299"
- inkscape:window-y="94" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="opacity:0.29878049" />
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="vrai"
- style="display:inline" />
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="arrow">
- <g
- id="g3175">
- <path
- transform="matrix(1.2159091,0,0,1.2159091,6.4403409,7.2111404)"
- d="M 11.607143,3.1160715 A 7.8571429,7.8571429 0 1 1 -4.1071429,3.1160715 A 7.8571429,7.8571429 0 1 1 11.607143,3.1160715 z"
- sodipodi:ry="7.8571429"
- sodipodi:rx="7.8571429"
- sodipodi:cy="3.1160715"
- sodipodi:cx="3.75"
- id="path2397"
- style="display:inline;opacity:1;fill:#005698;fill-opacity:1;stroke:#000000;stroke-width:1.64485980000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc" />
- <path
- sodipodi:nodetypes="cccccccc"
- id="path4348"
- d="M 4.6287275,10.38658 L 11.016008,3.0326109 L 17.371272,10.386581 L 13.195833,10.386581 L 13.195833,20.18947 L 8.8562186,20.18947 L 8.8562192,10.386581 L 4.6287275,10.38658 z"
- style="fill:url(#linearGradient3170);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/cursor.xml b/navit/icons/cursor.xml
deleted file mode 100644
index 3afede129..000000000
--- a/navit/icons/cursor.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<cursor w="48" h="48">
- <itemgra speed_range="-2"><icon src="cursor_still.svg" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="0-11"><icon src="cursor.svg" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="12-34"><icon src="cursor225.svg" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="35-56"><icon src="cursor450.svg" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="57-75"><icon src="cursor675.svg" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="76-98"><icon src="cursor.svg" rotation="90" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="99-120"><icon src="cursor225.svg" rotation="90" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="121-143"><icon src="cursor450.svg" rotation="90" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="144-165"><icon src="cursor675.svg" rotation="90" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="166-188"><icon src="cursor.svg" rotation="180" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="189-210"><icon src="cursor225.svg" rotation="180" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="211-233"><icon src="cursor450.svg" rotation="180" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="234-255"><icon src="cursor675.svg" rotation="180" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="256-278"><icon src="cursor.svg" rotation="270" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="279-300"><icon src="cursor225.svg" rotation="270" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="301-323"><icon src="cursor450.svg" rotation="270" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="324-345"><icon src="cursor675.svg" rotation="270" w="48" h="48"/></itemgra>
- <itemgra speed_range="3-" angle_range="346-360"><icon src="cursor.svg" w="48" h="48"/></itemgra>
-</cursor>
diff --git a/navit/icons/cursor2.png b/navit/icons/cursor2.png
deleted file mode 100644
index c68890366..000000000
--- a/navit/icons/cursor2.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/cursor225.png b/navit/icons/cursor225.png
deleted file mode 100644
index 6e49c46de..000000000
--- a/navit/icons/cursor225.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/cursor225.svg b/navit/icons/cursor225.svg
deleted file mode 100644
index 5033ff2c8..000000000
--- a/navit/icons/cursor225.svg
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="cursor225.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/Bureau/cursor_675.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3164">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3166" />
- <stop
- id="stop3172"
- offset="0.34999999"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3168" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5113">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop5115" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop5117" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient5315"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004639,0,0,1,-25.573398,-16.186506)" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5105">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5107" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5109" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5105"
- id="radialGradient4354"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.282946,0,13.64644)"
- cx="11.25"
- cy="19.03125"
- fx="11.25"
- fy="19.03125"
- r="8.0625" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient3227"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004639,0,0,1,-25.573398,-16.186506)"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient3230"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2681342,-0.1548073,0.1540925,0.2668961,0.3757766,7.7972572)"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3170"
- x1="10.895593"
- y1="3.1353614"
- x2="10.895593"
- y2="20.189789"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3211"
- gradientUnits="userSpaceOnUse"
- x1="10.895593"
- y1="3.1353614"
- x2="10.895593"
- y2="20.189789" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.919596"
- inkscape:cx="-3.663056"
- inkscape:cy="14.298316"
- inkscape:document-units="px"
- inkscape:current-layer="layer3"
- showgrid="false"
- inkscape:window-width="1500"
- inkscape:window-height="1027"
- inkscape:window-x="211"
- inkscape:window-y="85" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="opacity:0.29878049" />
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="vrai"
- style="display:inline" />
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="arrow">
- <g
- id="g3175"
- transform="matrix(0.9238769,0.3826898,-0.3826898,0.9238769,5.0469413,-3.3722334)">
- <path
- transform="matrix(1.2159091,0,0,1.2159091,6.4403409,7.2111404)"
- d="M 11.607143,3.1160715 A 7.8571429,7.8571429 0 1 1 -4.1071429,3.1160715 A 7.8571429,7.8571429 0 1 1 11.607143,3.1160715 z"
- sodipodi:ry="7.8571429"
- sodipodi:rx="7.8571429"
- sodipodi:cy="3.1160715"
- sodipodi:cx="3.75"
- id="path2397"
- style="opacity:1;fill:#005698;fill-opacity:1;stroke:#000000;stroke-width:1.64485979;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- sodipodi:type="arc" />
- <path
- sodipodi:nodetypes="cccccccc"
- id="path4348"
- d="M 4.6287275,10.38658 L 11.016008,3.0326109 L 17.371272,10.386581 L 13.195833,10.386581 L 13.195833,20.18947 L 8.8562186,20.18947 L 8.8562192,10.386581 L 4.6287275,10.38658 z"
- style="fill:url(#linearGradient3211);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/cursor450.png b/navit/icons/cursor450.png
deleted file mode 100644
index 353c4ddfe..000000000
--- a/navit/icons/cursor450.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/cursor450.svg b/navit/icons/cursor450.svg
deleted file mode 100644
index d3a7a469d..000000000
--- a/navit/icons/cursor450.svg
+++ /dev/null
@@ -1,191 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="cursor450.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/Bureau/cursor_225.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3164">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3166" />
- <stop
- id="stop3172"
- offset="0.34999999"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3168" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5113">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop5115" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop5117" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient5315"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004639,0,0,1,-25.573398,-16.186506)" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5105">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5107" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5109" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5105"
- id="radialGradient4354"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.282946,0,13.64644)"
- cx="11.25"
- cy="19.03125"
- fx="11.25"
- fy="19.03125"
- r="8.0625" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient3227"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004639,0,0,1,-25.573398,-16.186506)"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient3230"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2681342,-0.1548073,0.1540925,0.2668961,0.3757766,7.7972572)"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3170"
- x1="10.895593"
- y1="3.1353614"
- x2="10.895593"
- y2="20.189789"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.919596"
- inkscape:cx="-3.663056"
- inkscape:cy="14.298316"
- inkscape:document-units="px"
- inkscape:current-layer="layer3"
- showgrid="false"
- inkscape:window-width="1500"
- inkscape:window-height="1027"
- inkscape:window-x="211"
- inkscape:window-y="85" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="opacity:0.29878049" />
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="vrai"
- style="display:inline" />
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="arrow">
- <g
- id="g3175"
- transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,11,-4.5563492)">
- <path
- transform="matrix(1.2159091,0,0,1.2159091,6.4403409,7.2111404)"
- d="M 11.607143,3.1160715 A 7.8571429,7.8571429 0 1 1 -4.1071429,3.1160715 A 7.8571429,7.8571429 0 1 1 11.607143,3.1160715 z"
- sodipodi:ry="7.8571429"
- sodipodi:rx="7.8571429"
- sodipodi:cy="3.1160715"
- sodipodi:cx="3.75"
- id="path2397"
- style="opacity:1;fill:#005698;fill-opacity:1;stroke:#000000;stroke-width:1.64485979;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- sodipodi:type="arc" />
- <path
- sodipodi:nodetypes="cccccccc"
- id="path4348"
- d="M 4.6287275,10.38658 L 11.016008,3.0326109 L 17.371272,10.386581 L 13.195833,10.386581 L 13.195833,20.18947 L 8.8562186,20.18947 L 8.8562192,10.386581 L 4.6287275,10.38658 z"
- style="fill:url(#linearGradient3170);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/cursor675.png b/navit/icons/cursor675.png
deleted file mode 100644
index 53a33582b..000000000
--- a/navit/icons/cursor675.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/cursor675.svg b/navit/icons/cursor675.svg
deleted file mode 100644
index 36957816a..000000000
--- a/navit/icons/cursor675.svg
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="cursor675.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/Bureau/cursor_675.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3164">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3166" />
- <stop
- id="stop3172"
- offset="0.34999999"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3168" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5113">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop5115" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop5117" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient5315"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004639,0,0,1,-25.573398,-16.186506)" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5105">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5107" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5109" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5105"
- id="radialGradient4354"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.282946,0,13.64644)"
- cx="11.25"
- cy="19.03125"
- fx="11.25"
- fy="19.03125"
- r="8.0625" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient3227"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004639,0,0,1,-25.573398,-16.186506)"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient3230"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2681342,-0.1548073,0.1540925,0.2668961,0.3757766,7.7972572)"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3170"
- x1="10.895593"
- y1="3.1353614"
- x2="10.895593"
- y2="20.189789"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient3187"
- gradientUnits="userSpaceOnUse"
- x1="10.895593"
- y1="3.1353614"
- x2="10.895593"
- y2="20.189789" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.919596"
- inkscape:cx="-15.465375"
- inkscape:cy="15.361975"
- inkscape:document-units="px"
- inkscape:current-layer="layer3"
- showgrid="false"
- inkscape:window-width="1500"
- inkscape:window-height="1027"
- inkscape:window-x="211"
- inkscape:window-y="85" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="opacity:0.29878049" />
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="vrai"
- style="display:inline" />
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="arrow">
- <g
- id="g3175"
- transform="matrix(0.3826805,0.9238807,-0.9238807,0.3826805,16.953203,-3.3721738)">
- <path
- transform="matrix(1.2159091,0,0,1.2159091,6.4403409,7.2111404)"
- d="M 11.607143,3.1160715 A 7.8571429,7.8571429 0 1 1 -4.1071429,3.1160715 A 7.8571429,7.8571429 0 1 1 11.607143,3.1160715 z"
- sodipodi:ry="7.8571429"
- sodipodi:rx="7.8571429"
- sodipodi:cy="3.1160715"
- sodipodi:cx="3.75"
- id="path2397"
- style="opacity:1;fill:#005698;fill-opacity:1;stroke:#000000;stroke-width:1.64485979;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- sodipodi:type="arc" />
- <path
- sodipodi:nodetypes="cccccccc"
- id="path4348"
- d="M 4.6287275,10.38658 L 11.016008,3.0326109 L 17.371272,10.386581 L 13.195833,10.386581 L 13.195833,20.18947 L 8.8562186,20.18947 L 8.8562192,10.386581 L 4.6287275,10.38658 z"
- style="fill:url(#linearGradient3187);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/cursor_still.png b/navit/icons/cursor_still.png
deleted file mode 100644
index f9ea8dff7..000000000
--- a/navit/icons/cursor_still.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/cursor_still.svg b/navit/icons/cursor_still.svg
deleted file mode 100644
index 80ec5d22f..000000000
--- a/navit/icons/cursor_still.svg
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="cursor_still.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/cursor/cursor_still.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3164">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3166" />
- <stop
- id="stop3172"
- offset="0.34999999"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3168" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5113">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop5115" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop5117" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient5315"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004639,0,0,1,-25.573398,-16.186506)" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5105">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5107" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5109" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5105"
- id="radialGradient4354"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.282946,0,13.64644)"
- cx="11.25"
- cy="19.03125"
- fx="11.25"
- fy="19.03125"
- r="8.0625" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient3227"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004639,0,0,1,-25.573398,-16.186506)"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5113"
- id="linearGradient3230"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2681342,-0.1548073,0.1540925,0.2668961,0.3757766,7.7972572)"
- x1="17.498823"
- y1="10.445395"
- x2="34.744495"
- y2="40.231434" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3164"
- id="linearGradient2401"
- gradientUnits="userSpaceOnUse"
- x1="10.895593"
- y1="3.1353614"
- x2="10.895593"
- y2="20.189789" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.919596"
- inkscape:cx="-26.127951"
- inkscape:cy="9.4283537"
- inkscape:document-units="px"
- inkscape:current-layer="layer5"
- showgrid="false"
- inkscape:window-width="1500"
- inkscape:window-height="1027"
- inkscape:window-x="299"
- inkscape:window-y="94" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="opacity:0.29878049" />
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="vrai"
- style="display:inline" />
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="arrow"
- style="display:inline"
- sodipodi:insensitive="true">
- <path
- sodipodi:type="arc"
- style="fill:#005698;fill-opacity:1;stroke:#000000;stroke-width:1.64485979;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- id="path2397"
- sodipodi:cx="3.75"
- sodipodi:cy="3.1160715"
- sodipodi:rx="7.8571429"
- sodipodi:ry="7.8571429"
- d="M 11.607143,3.1160715 A 7.8571429,7.8571429 0 1 1 -4.1071429,3.1160715 A 7.8571429,7.8571429 0 1 1 11.607143,3.1160715 z"
- transform="matrix(1.2159091,0,0,1.2159091,6.4403409,7.2111404)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="point">
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path2404"
- sodipodi:cx="8.4600277"
- sodipodi:cy="7.8578644"
- sodipodi:rx="3.5355339"
- sodipodi:ry="3.5355339"
- d="M 11.995562,7.8578644 A 3.5355339,3.5355339 0 1 1 4.9244938,7.8578644 A 3.5355339,3.5355339 0 1 1 11.995562,7.8578644 z"
- transform="matrix(1.0714286,0,0,1.0714286,1.9356846,2.5808596)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer4"
- inkscape:label="?"
- sodipodi:insensitive="true"
- style="display:none">
- <text
- xml:space="preserve"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans Bold"
- x="5.0087891"
- y="17.982422"
- id="text3176"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- id="tspan3178"
- x="5.0087891"
- y="17.982422">?</tspan></text>
- </g>
-</svg>
diff --git a/navit/icons/dam.svg b/navit/icons/dam.svg
deleted file mode 100644
index 8b0448a42..000000000
--- a/navit/icons/dam.svg
+++ /dev/null
@@ -1,409 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
- sodipodi:docname="dam.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="19.113183"
- inkscape:cy="10.931933"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="705"
- inkscape:window-width="1366"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:zoom="22.919321"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="1"
- inkscape:measure-start="0,0"
- inkscape:measure-end="0,0"
- inkscape:lockguides="true" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,-1.0602338)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.894,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.316 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,0.442546)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:1.16406763px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 11.107616,0.42913812 C 6.0066699,0.49538362 2.2391786,4.105382 2.2306449,9.3392329 2.2228749,14.103459 11.107616,21.429138 11.107616,21.429138 c 0,0 8.399996,-7.12183 8.41325,-12.0899051 0.01237,-4.6376808 -3.312304,-8.91009478 -8.41325,-8.91009478 z"
- id="path1492"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscsc" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:#ffffff;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 11.090315,1.1899265 C 6.37002,1.2512285 2.8836724,4.591836 2.8757755,9.4351181 2.8685855,13.84382 11.090315,20.622831 11.090315,20.622831 c 0,0 7.773159,-6.590374 7.785423,-11.1877129 0.01145,-4.2916004 -3.065128,-8.2451916 -7.785423,-8.2451916 z"
- id="path1492-2"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscsc"
- inkscape:transform-center-x="-1.3165584"
- inkscape:transform-center-y="3.1070785" />
- <circle
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.25710332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path1494"
- cx="10.875771"
- cy="8.9291391"
- r="7" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830"
- sodipodi:type="arc"
- sodipodi:cx="5.9102416"
- sodipodi:cy="5.5574636"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 6.7193797,5.5574636 a 0.80913812,0.82178432 0 0 1 -0.404569,0.7116861 0.80913812,0.82178432 0 0 1 -0.8091382,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.7116861" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0"
- sodipodi:type="arc"
- sodipodi:cx="7.5475278"
- sodipodi:cy="5.5574636"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 8.3566659,5.5574636 a 0.80913812,0.82178432 0 0 1 -0.4045691,0.7116861 0.80913812,0.82178432 0 0 1 -0.8091381,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.7116861" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3"
- sodipodi:type="arc"
- sodipodi:cx="9.1765404"
- sodipodi:cy="5.5574636"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="M 9.9855281,5.5416211 A 0.80913812,0.82178432 0 0 1 9.5900823,6.2638099 0.80913812,0.82178432 0 0 1 8.7764829,6.2717756 0.80913812,0.82178432 0 0 1 8.3674023,5.5574636" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-6"
- sodipodi:type="arc"
- sodipodi:cx="5.9505248"
- sodipodi:cy="6.964376"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 6.7596629,6.964376 a 0.80913812,0.82178432 0 0 1 -0.404569,0.7116861 0.80913812,0.82178432 0 0 1 -0.8091382,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.7116862" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-8"
- sodipodi:type="arc"
- sodipodi:cx="7.587811"
- sodipodi:cy="6.964376"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="M 8.3969491,6.964376 A 0.80913812,0.82178432 0 0 1 7.99238,7.6760621 a 0.80913812,0.82178432 0 0 1 -0.8091381,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.7116862" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3-4"
- sodipodi:type="arc"
- sodipodi:cx="9.2168236"
- sodipodi:cy="6.964376"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="M 10.025811,6.9485334 A 0.80913812,0.82178432 0 0 1 9.6303655,7.6707223 0.80913812,0.82178432 0 0 1 8.8167661,7.6786879 0.80913812,0.82178432 0 0 1 8.4076855,6.9643759" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-6-0"
- sodipodi:type="arc"
- sodipodi:cx="5.9267492"
- sodipodi:cy="8.2720375"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 6.7358873,8.2720375 a 0.80913812,0.82178432 0 0 1 -0.404569,0.7116861 0.80913812,0.82178432 0 0 1 -0.8091382,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.7116861" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-8-2"
- sodipodi:type="arc"
- sodipodi:cx="7.5640359"
- sodipodi:cy="8.2720375"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 8.373174,8.2720375 a 0.80913812,0.82178432 0 0 1 -0.4045691,0.7116861 0.80913812,0.82178432 0 0 1 -0.8091381,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.7116861" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3-4-9"
- sodipodi:type="arc"
- sodipodi:cx="9.1930475"
- sodipodi:cy="8.2720375"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="M 10.002035,8.256195 A 0.80913812,0.82178432 0 0 1 9.6065894,8.9783838 0.80913812,0.82178432 0 0 1 8.79299,8.9863495 0.80913812,0.82178432 0 0 1 8.3839094,8.2720375" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-6-0-0"
- sodipodi:type="arc"
- sodipodi:cx="5.9267492"
- sodipodi:cy="9.6034737"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 6.7358873,9.6034737 a 0.80913812,0.82178432 0 0 1 -0.404569,0.7116863 0.80913812,0.82178432 0 0 1 -0.8091382,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.7116864" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-8-2-8"
- sodipodi:type="arc"
- sodipodi:cx="7.5640359"
- sodipodi:cy="9.6034737"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 8.373174,9.6034737 a 0.80913812,0.82178432 0 0 1 -0.4045691,0.7116863 0.80913812,0.82178432 0 0 1 -0.8091381,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.7116864" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3-4-9-1"
- sodipodi:type="arc"
- sodipodi:cx="9.1930475"
- sodipodi:cy="9.6034737"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="M 10.002035,9.5876311 A 0.80913812,0.82178432 0 0 1 9.6065894,10.30982 0.80913812,0.82178432 0 0 1 8.79299,10.317786 0.80913812,0.82178432 0 0 1 8.3839094,9.6034736" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-6-0-3"
- sodipodi:type="arc"
- sodipodi:cx="5.9267492"
- sodipodi:cy="10.831888"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 6.7358873,10.831888 a 0.80913812,0.82178432 0 0 1 -0.404569,0.711686 0.80913812,0.82178432 0 0 1 -0.8091382,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.711686" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-8-2-6"
- sodipodi:type="arc"
- sodipodi:cx="7.5640359"
- sodipodi:cy="10.831888"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 8.373174,10.831888 a 0.80913812,0.82178432 0 0 1 -0.4045691,0.711686 0.80913812,0.82178432 0 0 1 -0.8091381,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.711686" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3-4-9-7"
- sodipodi:type="arc"
- sodipodi:cx="9.1930475"
- sodipodi:cy="10.839812"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="M 10.002035,10.82397 A 0.80913812,0.82178432 0 0 1 9.6065894,11.546159 0.80913812,0.82178432 0 0 1 8.79299,11.554124 0.80913812,0.82178432 0 0 1 8.3839094,10.839812" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29349035;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-6-0-0-5"
- sodipodi:type="arc"
- sodipodi:cx="5.9029737"
- sodipodi:cy="12.034188"
- sodipodi:rx="0.83113402"
- sodipodi:ry="0.8185544"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 6.7341077,12.034188 a 0.83113402,0.8185544 0 0 1 -0.415567,0.708889 0.83113402,0.8185544 0 0 1 -0.8311341,0 0.83113402,0.8185544 0 0 1 -0.415567,-0.708889" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-8-2-8-6"
- sodipodi:type="arc"
- sodipodi:cx="7.5640359"
- sodipodi:cy="12.032672"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 8.373174,12.032672 a 0.80913812,0.82178432 0 0 1 -0.4045691,0.711686 0.80913812,0.82178432 0 0 1 -0.8091381,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.711686" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3-4-9-1-6"
- sodipodi:type="arc"
- sodipodi:cx="9.1930475"
- sodipodi:cy="12.040596"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="M 10.002035,12.024753 A 0.80913812,0.82178432 0 0 1 9.6065894,12.746942 0.80913812,0.82178432 0 0 1 8.79299,12.754908 0.80913812,0.82178432 0 0 1 8.3839094,12.040596" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 10.008784,5.2858401 v 7.6795369 h 2.258687 L 10.650727,5.2858401 Z"
- id="path966"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-6-0-0-4"
- sodipodi:type="arc"
- sodipodi:cx="12.488831"
- sodipodi:cy="10.831888"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 13.297969,10.831888 a 0.80913812,0.82178432 0 0 1 -0.404569,0.711686 0.80913812,0.82178432 0 0 1 -0.809139,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.711686" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-8-2-8-2"
- sodipodi:type="arc"
- sodipodi:cx="14.126117"
- sodipodi:cy="10.831888"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 14.935255,10.831888 a 0.80913812,0.82178432 0 0 1 -0.404569,0.711686 0.80913812,0.82178432 0 0 1 -0.809138,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.711686" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3-4-9-1-1"
- sodipodi:type="arc"
- sodipodi:cx="15.755129"
- sodipodi:cy="10.839812"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 16.564117,10.82397 a 0.80913812,0.82178432 0 0 1 -0.395446,0.722189 0.80913812,0.82178432 0 0 1 -0.8136,0.008 0.80913812,0.82178432 0 0 1 -0.40908,-0.714312" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-6-0-0-4-3"
- sodipodi:type="arc"
- sodipodi:cx="12.631482"
- sodipodi:cy="12.032672"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 13.44062,12.032672 a 0.80913812,0.82178432 0 0 1 -0.404569,0.711686 0.80913812,0.82178432 0 0 1 -0.809138,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.711686" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-8-2-8-2-2"
- sodipodi:type="arc"
- sodipodi:cx="14.26877"
- sodipodi:cy="12.032672"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 15.077908,12.032672 a 0.80913812,0.82178432 0 0 1 -0.404569,0.711686 0.80913812,0.82178432 0 0 1 -0.809138,0 0.80913812,0.82178432 0 0 1 -0.404569,-0.711686" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:0.29015145;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3-4-9-1-1-5"
- sodipodi:type="arc"
- sodipodi:cx="15.897783"
- sodipodi:cy="12.040596"
- sodipodi:rx="0.80913812"
- sodipodi:ry="0.82178432"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 16.706771,12.024753 a 0.80913812,0.82178432 0 0 1 -0.395446,0.722189 0.80913812,0.82178432 0 0 1 -0.813599,0.008 0.80913812,0.82178432 0 0 1 -0.409081,-0.714312" />
-</svg>
diff --git a/navit/icons/danger.svg b/navit/icons/danger.svg
deleted file mode 100644
index 215c0f427..000000000
--- a/navit/icons/danger.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- width="64"
- height="64"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="danger.svg"
- sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG sonstiges (fertig)"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- inkscape:window-height="726"
- inkscape:window-width="1024"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- inkscape:zoom="0.45689977"
- inkscape:cx="337.5"
- inkscape:cy="516.84554"
- inkscape:window-x="246"
- inkscape:window-y="25"
- inkscape:current-layer="svg2"
- showgrid="false" />
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 292.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="675 : 292.5 : 1"
- inkscape:persp3d-origin="337.5 : 195 : 1"
- id="perspective11" />
- </defs>
- <g
- id="g2384"
- transform="matrix(9.3986055e-2,0,0,9.3986055e-2,0.2797068,4.5090786)">
- <g
- transform="matrix(0.977077,0,0,0.977077,-30.42813,-35.56338)"
- id="g1909">
- <path
- style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:2"
- d="M 71.985614,631.52918 C 60.553114,631.52918 49.989054,625.43 44.272794,615.52918 C 38.556554,605.62833 38.556554,593.43 44.272794,583.52918 L 348.84719,55.99085 C 354.56345,46.09002 365.12751,39.99084 376.56,39.99084 C 387.99251,39.99084 398.55659,46.09002 404.27283,55.99085 L 708.84723,583.52918 C 714.56347,593.43 714.56347,605.62833 708.84723,615.52918 C 703.13097,625.42999 692.56691,631.52918 681.13441,631.52918 L 71.985614,631.52918 z"
- id="path1902" />
- <path
- style="fill:#cc0000;fill-rule:evenodd;stroke:none"
- d="M 71.985614,619.52918 C 64.840294,619.52918 58.237754,615.7172 54.665094,609.52918 C 51.092454,603.34114 51.092454,595.7172 54.665094,589.52918 L 359.23951,61.99086 C 362.81215,55.80282 369.41471,51.99084 376.56,51.99084 C 383.70533,51.99084 390.30787,55.80282 393.88053,61.99086 L 698.45493,589.52918 C 702.02757,595.7172 702.02757,603.34114 698.45493,609.52918 C 694.88227,615.7172 688.27973,619.52918 681.13441,619.52918 L 71.985614,619.52918 z M 141.2677,559.52918 L 376.56,151.99085 L 611.85233,559.52918 L 141.2677,559.52918 z"
- id="path1904" />
- </g>
- <path
- d="M 305.54965,214.69023 C 305.54965,178.32435 369.45035,178.50719 369.45035,214.69023 L 352.68951,405.86854 C 352.68951,420.93416 322.83426,420.97671 322.83426,405.86854 L 305.54965,214.69023 z"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path37169" />
- <path
- d="M 369.18845,460.60298 C 369.18845,478.10403 355.00104,492.29143 337.5,492.29143 C 319.99896,492.29143 305.81155,478.10403 305.81155,460.60298 C 305.81155,443.10194 319.99896,428.91453 337.5,428.91453 C 355.00104,428.91453 369.18845,443.10194 369.18845,460.60298 z"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path37167" />
- </g>
-</svg>
diff --git a/navit/icons/daymark.svg b/navit/icons/daymark.svg
deleted file mode 100644
index 38ec717d5..000000000
--- a/navit/icons/daymark.svg
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="daymark.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="56.474126"
- inkscape:cy="0.87833568"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-maximized="0"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="46"
- inkscape:zoom="5.2137931"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="M79,43l57,119c0,0,21-96,104-96s124,106,124,106l43-133l82-17L0,17L79,43z"
- id="path4460" />
- <path
- d="M94,176l-21,39"
- fill="none"
- id="path4462"
- stroke="#000000"
- stroke-width="20" />
- <path
- d="M300,19c0,10.5-22.6,19-50.5,19S199,29.5,199,19s22.6-19,50.5-19S300,8.5,300,19z"
- id="path4464" />
- <path
- d="M112,216l-16-38L64,88c0,0-9-8-4-35s16-24,16-24"
- id="path4466"
- ill="none"
- stroke="#000000"
- stroke-width="20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327"
- transform="matrix(0.04071613,0,0,0.04071613,-0.57539682,-0.76676941)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-536.27327,-33.306752)">
- <rect
- height="10"
- id="rect4134"
- style="fill:none;stroke:#757575;stroke-width:0.10000000000000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="fill:none;stroke:#757575;stroke-width:0.10000000000000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- width="8"
- x="2"
- y="2" />
- </g>
- <path
- d="m 14.296012,3.0968096 c 0.175167,1.15e-5 0.262757,-0.087579 0.262772,-0.2627706 -1.5e-5,-0.1756557 -0.0876,-0.2634897 -0.262772,-0.2635014 L 11.426745,0.582612 8.292422,2.5705376 c -0.1751902,1.17e-5 -0.2627802,0.087846 -0.2627713,0.2635014 -8.9e-6,0.1751919 0.087582,0.2627821 0.2627713,0.2627706 l 0.5021849,0 -1.9612952,18.2727144 8.8977233,0 -1.937207,-18.2727144 0.502184,0 z"
- id="flowRoot3192"
- sodipodi:nodetypes="cscccscccccc"
- style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#0089cd;fill-opacity:1;stroke:#0089cd;stroke-width:0.40716118;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:NPSPICT3;-inkscape-font-specification:NPSPICT3"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/desktop_icons/108x108/navit.png b/navit/icons/desktop_icons/108x108/navit.png
deleted file mode 100644
index ccc080c19..000000000
--- a/navit/icons/desktop_icons/108x108/navit.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/desktop_icons/128x128/navit.png b/navit/icons/desktop_icons/128x128/navit.png
deleted file mode 100644
index abdec4b8d..000000000
--- a/navit/icons/desktop_icons/128x128/navit.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/desktop_icons/22x22/navit.png b/navit/icons/desktop_icons/22x22/navit.png
deleted file mode 100644
index 3ae880a40..000000000
--- a/navit/icons/desktop_icons/22x22/navit.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/desktop_icons/256x256/navit.png b/navit/icons/desktop_icons/256x256/navit.png
deleted file mode 100644
index ef84304d3..000000000
--- a/navit/icons/desktop_icons/256x256/navit.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/desktop_icons/86x86/navit.png b/navit/icons/desktop_icons/86x86/navit.png
deleted file mode 100644
index 103855850..000000000
--- a/navit/icons/desktop_icons/86x86/navit.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/desktop_icons/navit.desktop.in b/navit/icons/desktop_icons/navit.desktop.in
deleted file mode 100644
index 81486b7c6..000000000
--- a/navit/icons/desktop_icons/navit.desktop.in
+++ /dev/null
@@ -1,17 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Name=Navit
-Name[de]=Navit
-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_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/navit/icons/diving.svg b/navit/icons/diving.svg
deleted file mode 100644
index 6d152305d..000000000
--- a/navit/icons/diving.svg
+++ /dev/null
@@ -1,256 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="200"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
- sodipodi:docname="diving.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="200"
- inkscape:export-filename="C:\Users\jeremy\Pictures\svg\diving.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="8.2895468"
- inkscape:cy="15.403137"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="705"
- inkscape:window-width="1366"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:zoom="1"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="1"
- inkscape:measure-start="0,0"
- inkscape:measure-end="0,0"
- inkscape:lockguides="true" />
- <g
- id="g1327"
- transform="matrix(0.32710145,0,0,0.32710145,-0.1767767,10.656562)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 v 450.123 c 0,40.844 20.894,62.229 62.192,62.229 H 515.92 c 41.307,0 62.229,-20.316 62.229,-62.229 V 66.804 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,178.44255)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,178.44255)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:10.5320406px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 105.71659,7.77381 C 59.565172,8.3727616 25.478346,41.035119 25.401136,88.388999 c -0.0703,43.104841 80.315454,109.384811 80.315454,109.384811 0,0 75.99996,-64.43561 76.11988,-109.384811 C 181.94839,46.429038 151.868,7.77381 105.71659,7.77381 Z"
- id="path1492"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscsc" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:#ffffff;stroke-width:2.71428585;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 105.56006,14.657148 C 62.852625,15.211767 31.309481,45.436333 31.238033,89.256485 31.172981,129.14482 105.56006,190.47871 105.56006,190.47871 c 0,0 70.32858,-59.62725 70.43954,-101.222225 0.10359,-38.828761 -27.73211,-74.599337 -70.43954,-74.599337 z"
- id="path1492-2"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscsc"
- inkscape:transform-center-x="-11.911719"
- inkscape:transform-center-y="28.111661" />
- <circle
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:11.37379265;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path1494"
- cx="103.61893"
- cy="84.678642"
- r="63.333332" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.62517977;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830"
- sodipodi:type="arc"
- sodipodi:cx="51.743343"
- sodipodi:cy="106.26794"
- sodipodi:rx="7.3207736"
- sodipodi:ry="7.4351912"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 59.064117,106.26794 a 7.3207736,7.4351912 0 0 1 -3.660387,6.43906 7.3207736,7.4351912 0 0 1 -7.320774,0 7.3207736,7.4351912 0 0 1 -3.660386,-6.43906" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.62517977;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0"
- sodipodi:type="arc"
- sodipodi:cx="66.556892"
- sodipodi:cy="106.26794"
- sodipodi:rx="7.3207736"
- sodipodi:ry="7.4351912"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 73.877666,106.26794 a 7.3207736,7.4351912 0 0 1 -3.660387,6.43906 7.3207736,7.4351912 0 0 1 -7.320774,0 7.3207736,7.4351912 0 0 1 -3.660386,-6.43906" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.62517977;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3"
- sodipodi:type="arc"
- sodipodi:cx="81.295563"
- sodipodi:cy="106.26794"
- sodipodi:rx="7.3207736"
- sodipodi:ry="7.4351912"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 88.614976,106.1246 a 7.3207736,7.4351912 0 0 1 -3.577844,6.53409 7.3207736,7.4351912 0 0 1 -7.361137,0.0721 7.3207736,7.4351912 0 0 1 -3.701206,-6.46282" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.62517977;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-8"
- sodipodi:type="arc"
- sodipodi:cx="96.486855"
- sodipodi:cy="106.26794"
- sodipodi:rx="7.3207736"
- sodipodi:ry="7.4351912"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 103.80763,106.26794 a 7.3207736,7.4351912 0 0 1 -3.66039,6.43906 7.3207736,7.4351912 0 0 1 -7.320772,0 7.3207736,7.4351912 0 0 1 -3.660387,-6.43906" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.62517977;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-7"
- sodipodi:type="arc"
- sodipodi:cx="111.30039"
- sodipodi:cy="106.26794"
- sodipodi:rx="7.3207736"
- sodipodi:ry="7.4351912"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 118.62117,106.26794 a 7.3207736,7.4351912 0 0 1 -3.66039,6.43906 7.3207736,7.4351912 0 0 1 -7.32077,0 7.3207736,7.4351912 0 0 1 -3.66039,-6.43906" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.62517977;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3-0"
- sodipodi:type="arc"
- sodipodi:cx="126.03909"
- sodipodi:cy="106.26794"
- sodipodi:rx="7.3207736"
- sodipodi:ry="7.4351912"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 133.35851,106.1246 a 7.3207736,7.4351912 0 0 1 -3.57785,6.53409 7.3207736,7.4351912 0 0 1 -7.36114,0.0721 7.3207736,7.4351912 0 0 1 -3.7012,-6.46282" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.62517977;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-9"
- sodipodi:type="arc"
- sodipodi:cx="140.80014"
- sodipodi:cy="106.69812"
- sodipodi:rx="7.3207736"
- sodipodi:ry="7.4351912"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 148.12091,106.69812 a 7.3207736,7.4351912 0 0 1 -3.66038,6.43906 7.3207736,7.4351912 0 0 1 -7.32078,0 7.3207736,7.4351912 0 0 1 -3.66038,-6.43906" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.62517977;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-31"
- sodipodi:type="arc"
- sodipodi:cx="155.61369"
- sodipodi:cy="106.69812"
- sodipodi:rx="7.3207736"
- sodipodi:ry="7.4351912"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 162.93447,106.69812 a 7.3207736,7.4351912 0 0 1 -3.66039,6.43906 7.3207736,7.4351912 0 0 1 -7.32077,0 7.3207736,7.4351912 0 0 1 -3.66039,-6.43906" />
- <circle
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:2.54270792;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path1643"
- cx="129.37593"
- cy="70.390434"
- r="6.7857141" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:1.05734622;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1645"
- width="32.729244"
- height="6.0114937"
- x="120.18913"
- y="-64.555145"
- ry="2.748287"
- rx="2.6472816"
- transform="rotate(57.709826)"
- inkscape:transform-center-y="0.64987615"
- inkscape:transform-center-x="0.15432644" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:1.05734622;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1645-8"
- width="32.729244"
- height="6.0114937"
- x="77.826042"
- y="-36.33596"
- ry="2.748287"
- rx="2.6472816"
- transform="rotate(53.038857)"
- inkscape:transform-center-y="0.66027451"
- inkscape:transform-center-x="0.10088982" />
- <rect
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:1.19884491;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect1645-8-8"
- width="33.038124"
- height="7.6558709"
- x="97.159592"
- y="40.117359"
- ry="3.5000503"
- rx="2.6722651"
- transform="matrix(0.9758835,0.21829199,-0.135073,0.99083565,0,0)"
- inkscape:transform-center-y="0.70558839"
- inkscape:transform-center-x="-0.37780337" />
-</svg>
diff --git a/navit/icons/drinking_water.svg b/navit/icons/drinking_water.svg
deleted file mode 100644
index b7c676fa0..000000000
--- a/navit/icons/drinking_water.svg
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="200"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
- sodipodi:docname="drinking_water.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="200"
- inkscape:export-filename="C:\Users\jeremy\Pictures\svg\drinking_water.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96">
- <defs
- id="defs22">
- <inkscape:perspective
- id="perspective24"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="11.370929"
- inkscape:cy="13.89007"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="705"
- inkscape:window-width="1366"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:zoom="1"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="1"
- inkscape:measure-start="0,0"
- inkscape:measure-end="0,0"
- inkscape:lockguides="true" />
- <g
- id="g1327"
- transform="matrix(0.04083073,0,0,0.04083073,-0.1767767,176.93977)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 v 450.123 c 0,40.844 20.894,62.229 62.192,62.229 H 515.92 c 41.307,0 62.229,-20.316 62.229,-62.229 V 66.804 c 0,-42.601 -20.922,-65.036 -63.522,-65.036 -0.003,0 -448.494,-0.143 -448.352,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2319"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,178.44255)">
- <path
- d=""
- id="path2323"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.04083073,0,0,0.04083073,35.725326,178.44255)">
- <path
- d=""
- id="path2329"
- style="fill:#0089cd;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:10.5320406px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 103.33151,6.29824 C 57.180085,6.8971924 23.093259,39.55955 23.016049,86.91343 c -0.0703,43.10485 80.315461,109.38481 80.315461,109.38481 0,0 75.99996,-64.4356 76.11988,-109.38481 C 179.56331,44.953469 149.48292,6.29824 103.33151,6.29824 Z"
- id="path1492"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscsc" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:#ffffff;stroke-width:2.71428585;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 103.17497,13.181578 C 60.467538,13.736197 28.924393,43.960764 28.852945,87.780916 28.787893,127.66924 103.17497,189.00314 103.17497,189.00314 c 0,0 70.32858,-59.62724 70.43954,-101.222224 0.1036,-38.828762 -27.73211,-74.599338 -70.43954,-74.599338 z"
- id="path1492-2"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cscsc"
- inkscape:transform-center-x="-11.911717"
- inkscape:transform-center-y="28.11166" />
- <circle
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:11.37379169;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path1494"
- cx="101.23385"
- cy="83.203079"
- r="63.333332" />
- <path
- style="fill:#0089cd;fill-opacity:1;stroke:none;stroke-width:4.48494482;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 75.78481,42.116135 v 6.044172 h 6.613544 v 5.037714 H 56.097479 l -6.394551,-5.190076 v 24.527009 l 6.15366,-4.993019 h 22.096237 c 0,0 1.032332,5.948357 7.292416,5.628072 5.132345,-0.262381 5.649978,-5.628072 5.649978,-5.628072 0,0 4.88195,-0.08143 8.650166,0 1.512935,0.03619 1.881805,1.131857 1.861425,2.167991 -0.11572,5.880771 0,8.4531 0,8.4531 0,0 7.17054,-0.08143 11.56274,0 0.0416,-6.641405 0.12667,-11.843515 0,-17.672624 -0.10875,-5.017629 -7.93841,-7.188333 -12.89858,-7.292381 -4.960176,-0.104048 -12.964297,0 -12.964297,0 l 3.6e-5,-5.037714 h 7.445666 v -6.044172 z"
- id="path1679"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccscccccccccccc" />
- <path
- style="fill:none;stroke:#0089cd;stroke-width:1.80952382;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 84.295582,83.191692 94.891661,127.47526 H 120.88204 L 131.07827,83.191692"
- id="path1681"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.09227252;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-6-0-0-4"
- sodipodi:type="arc"
- sodipodi:cx="94.43795"
- sodipodi:cy="94.236076"
- sodipodi:rx="6.6486578"
- sodipodi:ry="5.2003613"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 101.08661,94.236076 a 6.6486578,5.2003613 0 0 1 -3.324331,4.503645 6.6486578,5.2003613 0 0 1 -6.648658,0 6.6486578,5.2003613 0 0 1 -3.324329,-4.503645" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.09227252;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-8-2-8-2"
- sodipodi:type="arc"
- sodipodi:cx="107.89147"
- sodipodi:cy="94.236076"
- sodipodi:rx="6.6486578"
- sodipodi:ry="5.2003613"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 114.54013,94.236076 a 6.6486578,5.2003613 0 0 1 -3.32433,4.503645 6.6486578,5.2003613 0 0 1 -6.64866,0 6.6486578,5.2003613 0 0 1 -3.32433,-4.503645" />
- <path
- style="fill:none;fill-opacity:1;stroke:#0089cd;stroke-width:2.09227252;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path830-0-3-4-9-1-1"
- sodipodi:type="arc"
- sodipodi:cx="121.27702"
- sodipodi:cy="94.286331"
- sodipodi:rx="6.6486578"
- sodipodi:ry="5.2003613"
- sodipodi:start="6.2639059"
- sodipodi:end="3.1415927"
- sodipodi:open="true"
- d="m 127.92445,94.186078 a 6.6486578,5.2003613 0 0 1 -3.24937,4.570107 6.6486578,5.2003613 0 0 1 -6.68531,0.05041 6.6486578,5.2003613 0 0 1 -3.3614,-4.520262" />
-</svg>
diff --git a/navit/icons/dumping_station.xpm b/navit/icons/dumping_station.xpm
deleted file mode 100644
index c58d14247..000000000
--- a/navit/icons/dumping_station.xpm
+++ /dev/null
@@ -1,112 +0,0 @@
-/* XPM */
-static char * dumping_station_xpm[] = {
-"16 16 93 2",
-" c #899EBF",
-". c #5170A1",
-"+ c #516FA2",
-"@ c #526FA1",
-"# c #748CB4",
-"$ c #516FA1",
-"% c #5270A1",
-"& c #AEBBD1",
-"* c #5C78A6",
-"= c #325692",
-"- c #5572A3",
-"; c #FBFCFD",
-"> c #FFFFFF",
-", c #FEFEFE",
-"' c #F8F9FB",
-") c #EEF1F6",
-"! c #DFE4EE",
-"~ c #E3E7EF",
-"{ c #F1F3F7",
-"] c #506EA0",
-"^ c #899BBD",
-"/ c #8399BD",
-"( c #A9B9D1",
-"_ c #C1CCDC",
-": c #BDC9D9",
-"< c #8DA0C1",
-"[ c #8196BA",
-"} c #8498BC",
-"| c #6D86B0",
-"1 c #315693",
-"2 c #889CBE",
-"3 c #325593",
-"4 c #F8F9FA",
-"5 c #46679B",
-"6 c #879CBC",
-"7 c #9EAEC8",
-"8 c #47669B",
-"9 c #DCE2E9",
-"0 c #FFFFFE",
-"a c #FFFEFE",
-"b c #FDFEFE",
-"c c #FEFFFD",
-"d c #748DB6",
-"e c #DDE2EC",
-"f c #CFD6E3",
-"g c #B8C4D6",
-"h c #F9FAFC",
-"i c #325691",
-"j c #DAE0EB",
-"k c #FBFBFC",
-"l c #D2DBE5",
-"m c #C9D3E0",
-"n c #C3CDDC",
-"o c #F3F5F8",
-"p c #E1E6EE",
-"q c #9FAEC7",
-"r c #CCD5E1",
-"s c #CBD4E1",
-"t c #CAD3E0",
-"u c #5876A5",
-"v c #6D86AD",
-"w c #48679C",
-"x c #6F88B0",
-"y c #6983AC",
-"z c #49679C",
-"A c #E8ECF2",
-"B c #D6DEE8",
-"C c #4D6B9E",
-"D c #647DA9",
-"E c #5572A2",
-"F c #49679B",
-"G c #94A6C4",
-"H c #9CACC8",
-"I c #A0B0CA",
-"J c #D5DCE7",
-"K c #CAD3E1",
-"L c #BDC7DA",
-"M c #BDC8DA",
-"N c #DCE2EA",
-"O c #FFFEFF",
-"P c #5F7AA7",
-"Q c #AAB9D0",
-"R c #A1B2CD",
-"S c #7A91B5",
-"T c #375994",
-"U c #335792",
-"V c #FEFFFE",
-"W c #7990B5",
-"X c #AEBCD1",
-"Y c #98AAC5",
-"Z c #BCC7D8",
-"` c #FAFAFA",
-" . c #F3F3F3",
-" . + @ # @ @ + @ $ @ @ % % % & ",
-"* = = - ; > , ' > ) ! ~ { ] = ^ ",
-"* = = / ; ( _ > : < [ } > | 1 2 ",
-"* = 3 } 4 5 6 > 7 8 5 5 9 | 1 2 ",
-"* = 3 } 0 a b > , a a , c | 1 2 ",
-"* = d e > > > f g h > > c | 1 2 ",
-"* i j k l m n o p q r s t u 1 2 ",
-"v w x y z w z A B C D E z z F G ",
-"> > > > > > > > > > H I > > > > ",
-"> > > > > > > J K K L M K K N O ",
-"> > > > > > > P i i Q R = i S 0 ",
-"> > > > > > > P = = T U = = S V ",
-"> > > > > > > P = = = = = = W V ",
-"> > > > > > > X Y Y Y Y Y Y Z 0 ",
-"> > > > > > > V V V V V V V > > ",
-"` > > > > > > > > > > > > > > ."};
diff --git a/navit/icons/emergency.svg b/navit/icons/emergency.svg
deleted file mode 100644
index c88c6aaa0..000000000
--- a/navit/icons/emergency.svg
+++ /dev/null
@@ -1,504 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="emergency.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="78.817949"
- inkscape:cy="44.555593"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="874"
- inkscape:window-width="1440"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="3.6867085"
- objecttolerance="10.0"
- pagecolor="#ff1dff"
- showgrid="false"
- inkscape:snap-global="true"
- inkscape:snap-nodes="false"
- inkscape:snap-grids="false"
- inkscape:snap-to-guides="false"
- inkscape:window-maximized="1" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path4460"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path4462"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path4464"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path4466"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4904"
- inkscape:persp3d-origin="16 : 10.666667 : 1"
- inkscape:vp_x="0 : 16 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="32 : 16 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- id="Arrow2Lend"
- inkscape:stockid="Arrow2Lend"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- id="path4137"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow1Mend"
- inkscape:stockid="Arrow1Mend"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4125"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.4,0,0,-0.4,-4,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="TriangleOutL"
- inkscape:stockid="TriangleOutL"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
- id="path4214"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.8,0.8)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow1Lend"
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4119"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Tail"
- inkscape:stockid="Tail"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <g
- id="g4152"
- transform="scale(-1.2,-1.2)">
- <path
- d="M -3.8048674,-3.9585227 0.54352094,0"
- id="path4154"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M -1.2866832,-3.9585227 3.0617053,0"
- id="path4156"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M 1.3053582,-3.9585227 5.6537466,0"
- id="path4158"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M -3.8048674,4.1775838 0.54352094,0.21974226"
- id="path4160"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M -1.2866832,4.1775838 3.0617053,0.21974226"
- id="path4162"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M 1.3053582,4.1775838 5.6537466,0.21974226"
- id="path4164"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- </g>
- </marker>
- <marker
- id="Arrow1Sstart"
- inkscape:stockid="Arrow1Sstart"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4128"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(0.2,0,0,0.2,1.2,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow1Send"
- inkscape:stockid="Arrow1Send"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4131"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="SemiCircleOut"
- inkscape:stockid="SemiCircleOut"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m -2.5,-0.80913858 c 0,2.75999998 -2.24,4.99999998 -5,4.99999998 l 0,-10 c 2.76,0 5,2.24 5,5.00000002 z"
- id="path4235"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- transform="matrix(0.6,0,0,0.6,4.2752958,0.4580676)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow2Send"
- inkscape:stockid="Arrow2Send"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- id="path4149"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- transform="matrix(-0.3,0,0,-0.3,0.69,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="TriangleOutS"
- inkscape:stockid="TriangleOutS"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
- id="path4220"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="CurveIn"
- inkscape:stockid="CurveIn"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m 4.625493,-5.0456926 c -2.76,0 -5.00000002,2.24 -5.00000002,5.00000002 0,2.75999998 2.24000002,4.99999998 5.00000002,4.99999998"
- id="path4238"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- transform="scale(0.6,0.6)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="InfiniteLineStart"
- inkscape:stockid="InfiniteLineStart"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <g
- id="g4298"
- transform="translate(-13,0)">
- <circle
- cx="3"
- cy="0"
- id="circle4300"
- r="0.80000001" />
- <circle
- cx="6.5"
- cy="0"
- id="circle4302"
- r="0.80000001" />
- <circle
- cx="10"
- cy="0"
- id="circle4304"
- r="0.80000001" />
- </g>
- </marker>
- <marker
- id="StopS"
- inkscape:stockid="StopS"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,5.65 0,-5.65"
- id="path4229"
- style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow2Sstart"
- inkscape:stockid="Arrow2Sstart"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- id="path4146"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- transform="matrix(0.3,0,0,0.3,-0.69,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="DiamondS"
- inkscape:stockid="DiamondS"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 Z"
- id="path4202"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="RazorWire"
- inkscape:stockid="RazorWire"
- orient="auto"
- refX="0"
- refY="0">
- style=&quot;overflow:visible&quot;&gt;
- <path
- d="m 0.02272727,-0.74009011 0,1.4375 -7.78124997,2.31250001 18.4374997,0 -7.1874997,-2.31250001 0,-1.4375 7.2499997,-2.15624999 -18.4687497,0 7.74999997,2.15624999 z"
- id="path4286"
- style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.1pt"
- transform="scale(0.8,0.8)"
- inkscape:connector-curvature="0" />
-</marker>
- <inkscape:perspective
- id="perspective5233"
- inkscape:persp3d-origin="16 : 10.666667 : 1"
- inkscape:vp_x="0 : 16 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="32 : 16 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5412"
- inkscape:persp3d-origin="250 : 166.66667 : 1"
- inkscape:vp_x="0 : 250 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="500 : 250 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-536.27327,44.693248)">
- <rect
- height="10"
- id="rect4134"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="8"
- x="2"
- y="2" />
- </g>
- <g
- id="g3448"
- transform="matrix(0.21007753,0,0,0.21007654,0.15074743,0.8225434)">
- <g
- transform="translate(-119.6189,31.193137)"
- id="g3440">
- <g
- id="g1327-3"
- transform="matrix(0.18023212,0,0,0.18023212,118.90132,-35.074477)"
- style="fill:#ffffff;stroke:#ffffff">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329-6"
- style="fill:#ffffff;fill-opacity:0;stroke:#ffffff;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:3.47710228;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 168.77539,-26.714844 c -24.90882,0.65124 -45.67473,25.94229543 -41.17383,50.535156 3.15319,24.278992 29.43702,42.421637 53.26172,36.228516 C 205.34548,55.121653 221.58756,26.483972 212.6543,3.0039062 206.68201,-15.179354 187.88727,-27.91809 168.77539,-26.714844 Z"
- id="path2207-7"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.74868536;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 135.40625,8.0332031 c 0,6.7701819 0,13.5403649 0,20.3105469 23.78385,0 47.56771,0 71.35156,0 -1.21558,-6.573853 1.68803,-13.539405 -0.66992,-19.890625 -3.17978,-5.0668552 -10.53922,-1.2344481 -15.33008,-2.4199219 -18.45052,0 -36.90104,0 -55.35156,0 l 0,1 0,1 z"
- id="rect3180-5"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.74868536;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 159.92773,-16.488281 c 0,23.1171873 0,46.234375 0,69.351562 6.6053,-1.239496 13.63591,1.748711 19.99805,-0.724609 5.07576,-3.54689 1.01531,-11.203263 2.31055,-16.275391 0,-18.117187 0,-36.23437475 0,-54.351562 -7.4362,0 -14.8724,0 -22.3086,0 l 0,1 0,1 z"
- id="rect3182-3"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:3.47710252;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 168.58789,-33.037109 c -26.875,0.732101 -50.02432,26.3501216 -47.70508,53.222656 1.03022,26.672013 26.49775,49.507971 53.19727,47.201172 27.06213,-1.027335 50.08523,-27.229656 47.11701,-54.273425 -1.67559,-26.180886 -26.35425,-48.021089 -52.6092,-46.150403 z"
- id="path2438-5"
- inkscape:connector-curvature="0" />
- </g>
- <g
- transform="matrix(0.18023212,0,0,0.18023212,-0.6781117,-3.9155248)"
- id="g1327">
- <path
- inkscape:connector-curvature="0"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- id="path1329"
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z" />
- </g>
- <circle
- r="39.915974"
- cy="48.346523"
- cx="51.502563"
- style="fill:none;stroke:#da0092;stroke-width:3.47710228;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path2207" />
- <rect
- y="-55.501747"
- x="-83.177666"
- width="63.350189"
- transform="scale(-1,-1)"
- style="fill:#da0092;fill-opacity:1;stroke:#da0092;stroke-width:1.74868536;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3180"
- height="14.310408" />
- <rect
- y="44.34737"
- x="-80.021637"
- width="63.350189"
- transform="matrix(0,-1,1,0,0,0)"
- style="fill:#da0092;fill-opacity:1;stroke:#da0092;stroke-width:1.74868536;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3182"
- height="14.310408" />
- <circle
- r="46.242443"
- cy="48.346523"
- cx="51.502567"
- style="fill:none;stroke:#da0092;stroke-width:3.47710252;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path2438" />
- </g>
-</svg>
diff --git a/navit/icons/exit.svg b/navit/icons/exit.svg
deleted file mode 100644
index 30c7e1356..000000000
--- a/navit/icons/exit.svg
+++ /dev/null
@@ -1,212 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="exit.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/exit.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="TriangleOutS"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutS"
- style="overflow:visible">
- <path
- id="path3310"
- d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- inkscape:stockid="Tail"
- orient="auto"
- refY="0"
- refX="0"
- id="Tail"
- style="overflow:visible">
- <g
- id="g3197"
- transform="scale(-1.2,-1.2)">
- <path
- id="path3199"
- d="M -3.8048674,-3.9585227 0.54352094,0"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- id="path3201"
- d="M -1.2866832,-3.9585227 3.0617053,0"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- id="path3203"
- d="M 1.3053582,-3.9585227 5.6537466,0"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- id="path3205"
- d="M -3.8048674,4.1775838 0.54352094,0.21974226"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- id="path3207"
- d="M -1.2866832,4.1775838 3.0617053,0.21974226"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- id="path3209"
- d="M 1.3053582,4.1775838 5.6537466,0.21974226"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- </g>
- </marker>
- <marker
- inkscape:stockid="Arrow1Send"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Send"
- style="overflow:visible">
- <path
- id="path3176"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3164"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <marker
- inkscape:stockid="TriangleOutS"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutS-3"
- style="overflow:visible">
- <path
- id="path3310-6"
- d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#0083f4"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6"
- inkscape:cx="12.825295"
- inkscape:cy="36.321475"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g4262"
- transform="matrix(0.20795333,0,0,0.20795333,2.1530059,-61.356423)">
- <path
- sodipodi:nodetypes="ccccccccccccc"
- inkscape:connector-curvature="0"
- id="path3156-7"
- d="m -0.73577033,-78.009766 0,103.263672 C 12.33259,25.421855 25.400947,25.590032 38.469308,25.757812 38.801632,9.8012481 36.32019,-7.3551637 46.068917,-21.240234 48.929147,-25.469328 53.375,-29.267857 56.71317,-32.148438 59.375,-29.267857 61,-22 65.434153,-31.855469 71.154162,-41.366718 77.411712,-50.56707 83.453684,-59.890625 69.865665,-60.653961 56.099291,-61.599726 42.51144,-62.366071 43.090489,-58.914689 45,-58 46.88337,-52.082031 c -3.19386,1.565136 -5.737053,4.210982 -8.371094,6.574219 l 0,-34.025391 c -13.08268,-0.167361 -26.16535,-0.335677 -39.24804633,-0.501953 z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:13.55577374;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3156"
- d="m 27.888067,19.085089 c 0,0 -9.355739,-46.088677 34.291408,-68.138317"
- style="opacity:0.8;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:13.55577374;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutS)" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="rect2383"
- d="m 3.0843991,-75.807192 31.2487739,0.400903 0,97.290379 -31.2487739,-0.400889 0,-97.290379 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#3f3f3f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- id="path5565"
- d="m 18.331247,-68.08042 0,86.99585"
- style="fill:none;fill-rule:evenodd;stroke:#fdff03;stroke-width:4.5185914;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9.03718265, 9.03718265;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/fastfood.svg b/navit/icons/fastfood.svg
deleted file mode 100644
index d0792d476..000000000
--- a/navit/icons/fastfood.svg
+++ /dev/null
@@ -1,296 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="fastfood.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/fastfood.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3179">
- <stop
- style="stop-color:#b45d00;stop-opacity:1;"
- offset="0"
- id="stop3181" />
- <stop
- style="stop-color:#502900;stop-opacity:1;"
- offset="1"
- id="stop3183" />
- </linearGradient>
- <linearGradient
- id="linearGradient3163">
- <stop
- style="stop-color:#ffe639;stop-opacity:1;"
- offset="0"
- id="stop3165" />
- <stop
- style="stop-color:#cd7f00;stop-opacity:1;"
- offset="1"
- id="stop3167" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3163"
- id="linearGradient3169"
- x1="1.2863814"
- y1="7.4118395"
- x2="20.524136"
- y2="7.4118395"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.9860563,0,0,4.9860563,-5.1427003,-79.771449)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3163"
- id="linearGradient3177"
- x1="1.8652222"
- y1="17.49683"
- x2="19.974939"
- y2="17.49683"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.9860563,0,0,4.9860563,-5.1427003,-79.771449)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3179"
- id="linearGradient3185"
- x1="2.9744897"
- y1="13.444727"
- x2="19.051228"
- y2="13.444727"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.9860563,0,0,4.9860563,-5.1427003,-79.771449)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.8284271"
- inkscape:cx="15.788735"
- inkscape:cy="55.111737"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="943"
- inkscape:window-height="682"
- inkscape:window-x="0"
- inkscape:window-y="24"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:snap-global="false"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g8334"
- transform="matrix(0.21183869,0,0,0.21183752,0.53532012,-62.052696)">
- <g
- transform="translate(108.18734,25.455844)"
- id="g7700">
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.98605633;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -20.46875,-32.408203 c -27.480255,0.784951 -55.080615,-0.774801 -82.53906,0.736328 -3.77951,4.537054 -1.87122,11.816311 -2.29688,17.580078 0.0145,4.063098 -0.16833,9.8778217 5.27149,9.7910158 19.092926,0.2954012 38.286392,-0.055767 57.425764,0.2036486 9.655941,-0.4065305 19.752323,0.739525 29.113295,-1.2231799 3.400077,-7.0924445 0.633645,-15.2541995 1.582032,-22.7519535 -0.705314,-3.937458 -5.237889,-4.618667 -8.556641,-4.335937 z"
- id="rect2388-6"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -102.23242,-48.275391 c 0.98756,7.159132 -2.08599,15.12397 1.80859,21.712891 28.783856,0 57.56771,0 86.351564,0 0,-7.904297 0,-15.808594 0,-23.712891 -29.386718,0 -58.773437,0 -88.160154,0 l 0,1 0,1 z"
- id="rect3160-2"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.98605633;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -60.158203,-92.587891 c -15.612648,0.570476 -31.977983,4.066243 -44.763677,13.316407 -4.72542,10.713621 -4.51374,24.330899 1.8163,34.208227 18.738553,1.390231 38.161582,0.369807 57.158291,0.65769 10.45892,-0.322799 21.128473,0.570634 31.449242,-0.473339 6.1820025,-6.107071 5.1000765,-16.022303 4.9179557,-23.978017 -0.5073517,-6.111472 -2.4736867,-13.360125 -9.4071147,-14.736611 -12.91082,-5.754696 -26.984232,-9.214169 -41.170997,-8.994357 z"
- id="rect3162-6"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.98605633px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -24.419922,-42.621094 c -9.968746,0.113656 -19.937525,0.224418 -29.90625,0.339844 -1.788781,3.796163 0.570631,8.966986 5.25,8.285156 7.531582,-1.101822 14.884041,-0.460498 22.441406,-0.36914 4.547854,0.117921 6.213232,-7.713236 2.214844,-8.25586 z"
- id="path3167-1"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.98605633px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m -45.939453,-40.078125 c -5.482721,1.045126 -3.311548,8.255713 -3.265625,12.119141 -0.952799,2.908218 0.382393,4.633351 3.410156,4.529296 6.115122,-1.108562 5.64165,-9.741871 3.697266,-14.167968 -0.678942,-1.500547 -2.128262,-2.661599 -3.841797,-2.480469 z"
- id="path3169-8"
- inkscape:connector-curvature="0" />
- <g
- id="g2388-7"
- transform="matrix(4.9860563,0,0,4.9860563,-117.26999,-109.19464)"
- style="fill:#ffffff;stroke:#ffffff">
- <path
- sodipodi:nodetypes="cc"
- id="path3165-9"
- d="m 5.2691033,13.237358 5.6706947,-0.06449"
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="cc"
- id="path3171-2"
- d="m 8.4382877,13.240339 -0.03125,2.503069"
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- </g>
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -88.583984,-69.720703 c -8.861833,0.120323 -10.744513,14.545001 -2.160157,16.859375 8.060144,3.631262 15.837692,-8.718025 9.003907,-14.367188 -1.776469,-1.79604 -4.343356,-2.648723 -6.84375,-2.492187 z"
- id="path2420-0"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -68.328125,-79.537109 c -8.861383,0.1205 -10.74455,14.545251 -2.160156,16.859375 8.047639,3.625603 15.82701,-8.687201 9.023437,-14.34961 -1.781429,-1.806664 -4.351093,-2.667147 -6.863281,-2.509765 z"
- id="path3192-2"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -48.541016,-69.720703 c -8.859703,0.123461 -10.743655,14.547414 -2.158203,16.859375 8.059933,3.630218 15.836794,-8.71783 9.003907,-14.367188 -1.776078,-1.798314 -4.344747,-2.648052 -6.845704,-2.492187 z"
- id="path3194-3"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -33.582031,-73.771484 c -8.862355,0.119738 -10.743446,14.54868 -2.158203,16.859375 8.059834,3.628745 15.834322,-8.716999 9.003906,-14.367188 -1.778404,-1.794514 -4.344334,-2.649227 -6.845703,-2.492187 z"
- id="path3196-7"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -48.228516,-84.054688 c -8.862119,0.118681 -10.744273,14.546998 -2.158203,16.857422 8.060441,3.631691 15.833367,-8.71663 9.003907,-14.367187 -1.780603,-1.791604 -4.343551,-2.64982 -6.845704,-2.490235 z"
- id="path3198-5"
- inkscape:connector-curvature="0" />
- </g>
- <rect
- y="-2.5821357"
- x="6.6504307"
- height="20.101732"
- width="85.310013"
- id="rect2388"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient3177);fill-opacity:1;fill-rule:evenodd;stroke:#947c38;stroke-width:4.98605633;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <rect
- y="-20.591503"
- x="9.6882725"
- height="15.712438"
- width="80.159523"
- id="rect3160"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient3185);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="rect3162"
- d="m 6.6601027,-51.978763 c 26.4573093,-13.822951 54.7268393,-15.313797 85.4658213,0 3.995811,11.25278 2.814624,20.562756 0,29.25975 l -85.4658213,0 c -2.913434,-9.429296 -4.7060279,-18.983225 0,-29.25975 z"
- style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3169);fill-opacity:1;fill-rule:evenodd;stroke:#947c38;stroke-width:4.98605633;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3167"
- d="m 55.272466,-12.616396 28.2744,-0.32155"
- style="fill:none;fill-rule:evenodd;stroke:#4bb216;stroke-width:4.98605633px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3169"
- d="m 62.513272,-12.383592 0,12.32463401"
- style="fill:none;fill-rule:evenodd;stroke:#4bb216;stroke-width:4.98605633px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <g
- transform="matrix(4.9860563,0,0,4.9860563,-9.3496853,-83.510991)"
- id="g2388">
- <path
- inkscape:connector-curvature="0"
- style="fill:none;fill-rule:evenodd;stroke:#4bb216;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 5.2691033,13.237358 5.6706947,-0.06449"
- id="path3165"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;fill-rule:evenodd;stroke:#4bb216;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8.4382877,13.240339 -0.03125,2.503069"
- id="path3171"
- sodipodi:nodetypes="cc" />
- </g>
- <circle
- r="4.674428"
- cy="-35.364384"
- cx="20.099209"
- id="path2420"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#68480a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <circle
- r="4.674428"
- cy="-45.180683"
- cx="40.355064"
- id="path3192"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#68480a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <circle
- r="4.674428"
- cy="-35.364384"
- cx="60.143475"
- id="path3194"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#68480a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <circle
- r="4.674428"
- cy="-39.415554"
- cx="75.101646"
- id="path3196"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#68480a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <circle
- r="4.674428"
- cy="-49.699295"
- cx="60.455101"
- id="path3198"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#68480a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/firebrigade.svg b/navit/icons/firebrigade.svg
deleted file mode 100644
index aed6368bc..000000000
--- a/navit/icons/firebrigade.svg
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="firebrigade.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/firebrigade.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3153">
- <stop
- style="stop-color:#e20000;stop-opacity:1;"
- offset="0"
- id="stop3155" />
- <stop
- style="stop-color:#e20000;stop-opacity:0;"
- offset="1"
- id="stop3157" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3153"
- id="linearGradient3159"
- x1="11.552056"
- y1="20.566092"
- x2="11.552056"
- y2="-2.348809"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.9548169,0,0,4.9548169,-8.3577179,-83.350264)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="3.959798"
- inkscape:cx="13.816972"
- inkscape:cy="56.484364"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1116"
- inkscape:window-height="771"
- inkscape:window-x="81"
- inkscape:window-y="76"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>edited by jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g3701"
- transform="matrix(0.22000009,0,0,0.21794472,0.31573591,-60.942756)">
- <path
- inkscape:connector-curvature="0"
- id="path3157-1"
- d="m 49.931056,-78.252538 c -5.535916,1.309034 -4.620842,9.018999 -7.333985,12.962891 -1.25668,1.824662 -3.350591,10.820356 -4.52539,6.02539 -1.250324,-5.176571 -8.831539,-3.418724 -8.544957,1.74408 C 24.340453,-40.60583 10.077113,-27.353133 7.6771494,-9.5279287 7.0460854,5.2783522 20.464366,18.67347 35.136134,18.481837 53.148584,29.283905 79.270437,18.126709 84.048243,-2.32871 88.333889,-18.003302 77.643255,-32.079156 69.639813,-44.424084 62.7512,-54.503864 56.914551,-65.222805 53.294337,-76.7916 52.491967,-77.78 51.20426,-78.354024 49.931056,-78.252538 Z"
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:24.80315018;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- d="m 80.954199,-11.117452 c 0,16.3733905 -13.288546,29.661932 -29.661937,29.661932 -16.373386,0 -29.661932,-13.2885415 -29.661932,-29.661932 0,-16.373396 19.178322,-33.84173 28.475462,-63.357896 5.734576,23.813665 30.848407,46.9845 30.848407,63.357896 z m -22.703882,1.990553 c 0,12.8740759 -10.448525,23.322596 -23.322598,23.322596 -12.874075,0 -23.322599,-10.4485201 -23.322599,-23.322596 0,-12.874081 15.079539,-26.609094 22.389698,-49.817079 4.508987,18.72422 24.255499,36.942998 24.255499,49.817079 z"
- style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3159);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:24.80315018;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- id="path3157" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="csscc"
- id="path2385"
- d="m 68.416258,-7.4855317 c 0,10.6870049 -8.673506,19.3605107 -19.360511,19.3605107 -10.687004,0 -19.360515,-8.6735058 -19.360515,-19.3605107 0,-10.6870093 12.517804,-22.0886973 18.586097,-41.3540653 3.742993,15.543319 20.134929,30.667056 20.134929,41.3540653 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#e1e23e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24.80315018;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/flag_bk_tr.xpm b/navit/icons/flag_bk_tr.xpm
deleted file mode 100644
index a115ecd3e..000000000
--- a/navit/icons/flag_bk_tr.xpm
+++ /dev/null
@@ -1,27 +0,0 @@
-/* XPM */
-static char *flag_bk_tr[] = {
-"22 22 2 1 0 21",
-" c None",
-"+ c #000000",
-"+++++++ ",
-"+ +++++++++ ",
-"+ +++ +++++++++ ",
-"+ +++ +++ +++ ",
-"++++ +++ +++ ",
-"++++ +++ +++ ",
-"++++ +++ +++ + ",
-"+ ++++++ +++ + ",
-"+ +++ ++++++ + ",
-"+ +++ +++ +++ ",
-"++++ +++ +++ ",
-"++++ +++ +++ ",
-"++++++++++ +++ + ",
-"+ +++++++++ + ",
-"+ ++++++ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ "};
diff --git a/navit/icons/flag_bk_wh.xpm b/navit/icons/flag_bk_wh.xpm
deleted file mode 100644
index 6b87fa8d0..000000000
--- a/navit/icons/flag_bk_wh.xpm
+++ /dev/null
@@ -1,28 +0,0 @@
-/* XPM */
-static char *flag_bk_wh[]={
-"22 22 3 1 0 21",
-" c None",
-"+ c #000000",
-"* c #ffffff",
-"+++++++ ",
-"+***+++++++++ ",
-"+***+++***+++++++++ ",
-"+***+++***+++***+++ ",
-"++++******+++***+++ ",
-"++++***+++******+++ ",
-"++++***+++***+++**+ ",
-"+***++++++***+++**+ ",
-"+***+++***++++++**+ ",
-"+***+++***+++***+++ ",
-"++++******+++***+++ ",
-"++++***+++******+++ ",
-"++++++++++***+++**+ ",
-"+ +++++++++**+ ",
-"+ ++++++ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ "};
diff --git a/navit/icons/flag_bl_wh.xpm b/navit/icons/flag_bl_wh.xpm
deleted file mode 100644
index 7fa9856f7..000000000
--- a/navit/icons/flag_bl_wh.xpm
+++ /dev/null
@@ -1,28 +0,0 @@
-/* XPM */
-static char *flag_bl_wh[]={
-"22 22 3 1 0 21",
-" c None",
-"+ c #0000ff",
-"* c #ffffff",
-"+++++++ ",
-"+***+++++++++ ",
-"+***+++***+++++++++ ",
-"+***+++***+++***+++ ",
-"++++******+++***+++ ",
-"++++***+++******+++ ",
-"++++***+++***+++**+ ",
-"+***++++++***+++**+ ",
-"+***+++***++++++**+ ",
-"+***+++***+++***+++ ",
-"++++******+++***+++ ",
-"++++***+++******+++ ",
-"++++++++++***+++**+ ",
-"+ +++++++++**+ ",
-"+ ++++++ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ "};
diff --git a/navit/icons/flag_wh_bk.xpm b/navit/icons/flag_wh_bk.xpm
deleted file mode 100644
index 4564f8ffb..000000000
--- a/navit/icons/flag_wh_bk.xpm
+++ /dev/null
@@ -1,28 +0,0 @@
-/* XPM */
-static char *flag_bk_wh[]={
-"22 22 3 1 0 21",
-" c None",
-"+ c #ffffff",
-"* c #000000",
-"+++++++ ",
-"+***+++++++++ ",
-"+***+++***+++++++++ ",
-"+***+++***+++***+++ ",
-"++++******+++***+++ ",
-"++++***+++******+++ ",
-"++++***+++***+++**+ ",
-"+***++++++***+++**+ ",
-"+***+++***++++++**+ ",
-"+***+++***+++***+++ ",
-"++++******+++***+++ ",
-"++++***+++******+++ ",
-"++++++++++***+++**+ ",
-"+ +++++++++**+ ",
-"+ ++++++ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ ",
-"+ "};
diff --git a/navit/icons/fountain.svg b/navit/icons/fountain.svg
deleted file mode 100644
index a23776812..000000000
--- a/navit/icons/fountain.svg
+++ /dev/null
@@ -1,302 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="fountain.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- style="display:inline">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 64 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="128 : 64 : 1"
- inkscape:persp3d-origin="64 : 42.666667 : 1"
- id="perspective79" />
- <linearGradient
- id="linearGradient2338">
- <stop
- style="stop-color:#b1b1b1;stop-opacity:1;"
- offset="0"
- id="stop2340" />
- <stop
- style="stop-color:#e4e4e4;stop-opacity:1;"
- offset="1"
- id="stop2342" />
- </linearGradient>
- <linearGradient
- id="linearGradient2888">
- <stop
- id="stop2890"
- offset="0"
- style="stop-color:#007dff;stop-opacity:1;" />
- <stop
- id="stop2892"
- offset="1"
- style="stop-color:#58abff;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3115"
- gradientUnits="userSpaceOnUse"
- x1="95.135132"
- y1="57.574238"
- x2="101.53513"
- y2="69.595856"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3118"
- gradientUnits="userSpaceOnUse"
- x1="40.302704"
- y1="59.286484"
- x2="44.194595"
- y2="65.599998"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3127"
- gradientUnits="userSpaceOnUse"
- x1="63.74054"
- y1="90.37838"
- x2="96.086487"
- y2="113.03784"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3134"
- gradientUnits="userSpaceOnUse"
- x1="56.653049"
- y1="98.429657"
- x2="58.692608"
- y2="123.99252"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient4444"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="67.286484"
- y1="70.443245"
- x2="94.875679"
- y2="75.027023" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient4446"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="62.616215"
- y1="73.081078"
- x2="66.162163"
- y2="37.535133" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient4448"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="53.571938"
- y1="51.219669"
- x2="55.039661"
- y2="53.665878" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient4450"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="81.886787"
- y1="50.118877"
- x2="85.066856"
- y2="54.399742" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient4454"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="65.741821"
- y1="58.435982"
- x2="74.181236"
- y2="62.105293" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient4456"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="65.619507"
- y1="54.522049"
- x2="77.605927"
- y2="56.417858" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient4458"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="67.087234"
- y1="55.317066"
- x2="65.252579"
- y2="39.294411" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient4460"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="61.460957"
- y1="46.602451"
- x2="71.612717"
- y2="52.595661" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient4462"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="68.126869"
- y1="43.911625"
- x2="70.94001"
- y2="48.131332" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient4464"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="67.087227"
- y1="45.440506"
- x2="71.184631"
- y2="49.109818" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient4466"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="68.310341"
- y1="45.318195"
- x2="66.90377"
- y2="41.893505" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient4468"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="67.087234"
- y1="42.74968"
- x2="68.738426"
- y2="44.462025" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient4470"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="62.439438"
- y1="36.573006"
- x2="67.759941"
- y2="41.343109" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2888"
- id="linearGradient4472"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.81375293,0,20.05073)"
- x1="69.013618"
- y1="37.03167"
- x2="74.0895"
- y2="49.170971" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ff00ff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.9416149"
- inkscape:cx="-71.081713"
- inkscape:cy="23.69938"
- inkscape:document-units="px"
- inkscape:current-layer="g3176"
- showgrid="false"
- width="744.09px"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- showguides="false"
- inkscape:guide-bbox="true"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="color"
- inkscape:groupmode="layer"
- id="layer1"
- style="display:inline"
- transform="translate(0,78)" />
- <g
- id="g3176"
- inkscape:groupmode="layer"
- inkscape:label="outline"
- style="display:inline"
- transform="translate(0,78)">
- <path
- style="fill:#000000;stroke:#ffffff;stroke-width:0.54675251;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 1.4720653,-57.593227 -0.58957452,-1.31985 -0.30455628,-0.02601 -0.30455825,-0.026 0,-0.874108 0,-0.874107 4.46244335,-0.02169 4.4624434,-0.02169 0.024957,-0.52401 0.024957,-0.524012 0.4778544,0.06311 c 0.26282,0.03471 0.8361076,0.06311 1.2739706,0.06311 0.437865,0 1.011153,-0.0284 1.273972,-0.06311 l 0.477855,-0.06311 0.02495,0.524012 0.02496,0.52401 4.462443,0.02169 4.462444,0.02169 0,0.874107 0,0.874108 -0.304558,0.026 -0.304558,0.02601 -0.589573,1.31985 -0.589574,1.319851 -8.938363,0 -8.938361,0 -0.5895742,-1.319851 z M 9.435769,-62.677038 C 8.1802779,-62.91618 6.8373214,-63.481301 5.8554144,-64.183665 5.2840205,-64.592388 4.495214,-65.390189 4.2517362,-65.805629 4.0965337,-66.07045 4.0764013,-66.077979 3.5235761,-66.077979 l -0.5685438,0 0,-0.921802 0,-0.921798 8.0449677,0 8.044969,0 0,0.921798 0,0.921802 -0.565662,1.67e-4 -0.565661,1.68e-4 -0.236462,0.374281 c -0.130054,0.205856 -0.511219,0.630026 -0.847034,0.9426 -0.973648,0.90627 -2.227398,1.56821 -3.719455,1.963756 -0.837121,0.221922 -2.80286,0.286113 -3.674926,0.120004 z m 0.701028,-6.135662 c -0.03224,-0.03224 -0.05861,-0.524915 -0.05861,-1.094838 0,-0.746332 -0.03636,-1.123389 -0.1299502,-1.347785 -0.4929455,-1.18184 -1.9638487,-1.430669 -2.9464614,-0.498444 l -0.2690472,0.25525 -0.6318213,-0.565465 C 5.7534052,-72.374988 5.469085,-72.64644 5.469085,-72.667208 c 0,-0.128404 0.4215924,-0.565412 0.7907316,-0.819641 0.8686245,-0.598232 2.1267803,-0.809137 3.0927312,-0.518434 0.2147347,0.06462 0.390286,0.09291 0.3901133,0.06285 -7.437e-4,-0.133039 -0.3413446,-0.592568 -0.7193015,-0.970516 -1.3325633,-1.332537 -3.5454353,-1.356483 -4.9234126,-0.05327 -0.6552517,0.619694 -1.1407328,1.627958 -1.1439198,2.375723 l -9.842e-4,0.233381 -0.8589678,-0.02388 -0.8589692,-0.02388 -0.027039,-0.282795 c -0.01488,-0.155537 0.033105,-0.553122 0.1066145,-0.883526 0.3984161,-1.790769 1.7477743,-3.278389 3.4985306,-3.85701 2.1002544,-0.694126 4.5139287,-0.0218 5.8083516,1.617919 0.184001,0.233084 0.353401,0.423788 0.376447,0.423788 0.02305,0 0.192446,-0.190704 0.376447,-0.423788 0.983566,-1.245935 2.776984,-2.008027 4.44796,-1.890107 2.368131,0.167118 4.352637,1.853586 4.858923,4.129198 0.07351,0.330404 0.121485,0.727989 0.106614,0.883526 l -0.02704,0.282795 -0.858967,0.02388 -0.85897,0.02388 -9.83e-4,-0.233381 c -0.0032,-0.747764 -0.488672,-1.756027 -1.143923,-2.375722 -1.377977,-1.303209 -3.590849,-1.279263 -4.923413,0.05327 -0.377957,0.377949 -0.718539,0.837478 -0.719301,0.970517 -1.67e-4,0.03006 0.175379,0.0017 0.390113,-0.06285 0.965951,-0.290704 2.224107,-0.0798 3.092732,0.518433 0.369138,0.25423 0.790732,0.691237 0.790732,0.819642 0,0.02076 -0.284321,0.29222 -0.631823,0.603225 l -0.631818,0.565466 -0.269047,-0.25525 c -0.946299,-0.897777 -2.312096,-0.712353 -2.919694,0.396386 -0.07466,0.136238 -0.12946,0.619763 -0.156708,1.382699 l -0.0419,1.173201 -0.842254,0.0237 c -0.463241,0.01303 -0.868631,-0.0027 -0.900869,-0.03492 z"
- id="path4216"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/fuel.svg b/navit/icons/fuel.svg
deleted file mode 100644
index d1b86d21e..000000000
--- a/navit/icons/fuel.svg
+++ /dev/null
@@ -1,191 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="fuel.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/fuel.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3172">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3174" />
- <stop
- id="stop3184"
- offset="0.98979592"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3176" />
- </linearGradient>
- <linearGradient
- id="linearGradient3179">
- <stop
- style="stop-color:#e5a80d;stop-opacity:1;"
- offset="0"
- id="stop3181" />
- <stop
- style="stop-color:#a11708;stop-opacity:1;"
- offset="1"
- id="stop3183" />
- </linearGradient>
- <linearGradient
- id="linearGradient3171">
- <stop
- style="stop-color:#7f7f7f;stop-opacity:1;"
- offset="0"
- id="stop3173" />
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="1"
- id="stop3175" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2394"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3171"
- id="linearGradient3177"
- x1="8.4442434"
- y1="3.2490435"
- x2="9.3754778"
- y2="7"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1035822,0,0,1.1035873,-1.476588,-79.129247)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3179"
- id="linearGradient3185"
- x1="6.9290147"
- y1="9.9886541"
- x2="9.8439093"
- y2="17.43853"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1035822,0,0,1.1035873,-1.5114248,-78.982551)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3172"
- id="radialGradient3180"
- cx="11.616755"
- cy="10.509515"
- fx="11.616755"
- fy="10.509515"
- r="10.038391"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#4eadff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6"
- inkscape:cx="69.173607"
- inkscape:cy="49.363892"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.80707788px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 14.99519,-77.554749 c -0.529626,0.77429 -1.118486,1.991006 -0.163661,2.715896 2.4199,1.660421 3.753448,4.909978 2.940525,7.784044 -0.253184,1.646554 0.504129,3.188575 1.019634,4.673117 0.134654,0.95387 -0.551151,2.762228 -1.73795,2.244639 -1.88392,-1.971745 -0.79107,-4.925747 -1.355476,-7.341484 -0.169725,-1.763177 -1.476733,-3.879991 -3.492491,-3.533758 -0.664165,0.04556 -0.776659,0.838814 -0.814721,1.243384 -0.905044,0.650552 0.403234,1.33902 0.964929,1.573848 1.237868,2.91267 -0.105895,6.415112 1.72764,9.166429 1.211666,2.260876 4.697088,2.658925 6.2846,0.590081 1.740886,-1.911405 1.669754,-4.917015 0.405789,-7.049582 -0.158668,-2.013327 0.457721,-4.181513 -0.10537,-6.103928 1.100575,-0.407287 0.825889,-1.835939 0.03004,-2.411888 -1.457621,-1.778554 -3.479192,-2.969477 -5.503956,-3.996049 -0.06651,0.148417 -0.133022,0.296834 -0.199532,0.445251 z"
- id="path3174-3"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.10358727;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m 2.5517936,-76.636959 c 0,6.695055 0,13.39011 0,20.085165 3.5733497,0 7.1467001,0 10.7200504,0 0,-6.848105 0,-13.696211 0,-20.544316 -3.5733503,0 -7.1467007,0 -10.7200504,0 l 0,0.229575 0,0.229576 z"
- id="rect2400-3"
- inkscape:connector-curvature="0" />
- <rect
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient3185);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.10358727;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- id="rect2400"
- width="8.8834524"
- height="18.707596"
- x="3.4702764"
- y="-76.198204" />
- <rect
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient3177);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- id="rect3172"
- width="5.5739312"
- height="5.5391197"
- x="5.0727816"
- y="-74.568199" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.80707788px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 15.551702,-76.815931 -0.450629,1.005738 c 0,0 0.326615,0.203887 0.401755,0.243924 0.130479,0.08909 0.264501,0.178004 0.471255,0.363644 0.540546,0.485343 1.281972,1.334003 2.019986,2.774635 0.733569,1.431954 0.869271,2.349302 0.84521,3.223922 -0.02406,0.87462 -0.243922,1.747495 -0.243922,2.934261 0,1.201011 0.329944,1.8521 0.585594,2.319969 0.255651,0.467868 0.440709,0.752855 0.424623,1.782348 -0.03126,2.000461 -1.226009,3.037203 -2.361657,3.010488 -0.520436,-0.01224 -1.087158,-0.325022 -1.563079,-1.13308 -0.475921,-0.808058 -0.820822,-2.104143 -0.789611,-3.914442 0.05328,-3.072616 -0.386599,-4.542152 -1.002146,-5.325075 -0.307773,-0.391461 -0.678157,-0.589186 -0.979278,-0.652407 -0.301121,-0.06322 -0.57842,0.01211 -0.57842,0.01211 l 0.323736,1.055061 c 0,0 -0.0336,1.12e-4 0.0278,0.013 0.0614,0.01289 0.172099,0.04243 0.338981,0.254685 0.333763,0.424519 0.817075,1.669119 0.765845,4.623345 -0.03375,1.957365 0.326617,3.448044 0.942511,4.493761 0.615895,1.045718 1.527441,1.653495 2.487654,1.676081 1.82647,0.04296 3.452729,-1.637335 3.491146,-4.09604 0.01877,-1.200905 -0.301388,-1.856402 -0.559588,-2.328935 -0.2582,-0.472534 -0.450629,-0.762296 -0.450629,-1.790869 0,-1.043088 0.215279,-1.878866 0.243474,-2.90377 0.0276,-1.003205 -0.167107,-2.153045 -0.924575,-3.664241 0.173574,0.211606 0.329903,0.42517 0.449284,0.637611 l 0.96224,-0.540759 c -0.671671,-1.195236 -1.875699,-2.172141 -2.910035,-2.889423 -0.765815,-0.53107 -1.319705,-0.839 -1.623612,-1.002151 -0.03851,-0.0232 -0.03217,-0.01741 -0.06502,-0.03587 -0.06671,-0.0353 -0.232265,-0.126894 -0.232265,-0.126894 l -0.0014,0.0031 c -0.0045,-0.002 -0.04529,-0.02376 -0.04529,-0.02376 z"
- id="path3174"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/gc_event.xpm b/navit/icons/gc_event.xpm
deleted file mode 100644
index ab6b96edf..000000000
--- a/navit/icons/gc_event.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *gc_event[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 19 1",
-" c #393000",
-". c #393041",
-"X c #396541",
-"o c #7B3041",
-"O c #7B6541",
-"+ c #7B008B",
-"@ c #7B308B",
-"# c #7B658B",
-"$ c #399541",
-"% c #7B9541",
-"& c #7B958B",
-"* c none",
-"= c #BD9541",
-"- c #838383",
-"; c #BD95B4",
-": c #BDCAB4",
-"> c #FFCA8B",
-", c #C5C5C5",
-"< c #FFFFFF",
-/* pixels */
-"****************",
-"****************",
-"*****+$&&%o*****",
-"***$O>>>>>>=.***",
-"** >><<<<<<<>X**",
-"*X><<,,,,,,,<<.*",
-"*%><<--;;;;;<<:-",
-"*%><<<<,,,,,<<<+",
-"*%><<<<----;<<:-",
-"*o:<<<<<<<<<<< *",
-"** ,<<<<<<<<< **",
-"***#X;<<<<<<X***",
-"*****-+%&o&%****",
-"**********X@****",
-"**********+*****",
-"****************"
-};
diff --git a/navit/icons/gc_multi.xpm b/navit/icons/gc_multi.xpm
deleted file mode 100644
index 99f5ada8c..000000000
--- a/navit/icons/gc_multi.xpm
+++ /dev/null
@@ -1,50 +0,0 @@
-/* XPM */
-static char *gc_multi[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 28 1",
-" c black",
-". c #003000",
-"X c #393000",
-"o c #390041",
-"O c #393041",
-"+ c #396500",
-"@ c #396541",
-"# c #7B3000",
-"$ c #7B0041",
-"% c #7B6500",
-"& c #414141",
-"* c #7B008B",
-"= c #7B308B",
-"- c #7B658B",
-"; c #7B9500",
-": c #7B9541",
-"> c #7B958B",
-", c #7B95B4",
-"< c #FF3000",
-"1 c none",
-"2 c #BD9500",
-"3 c #BDCA00",
-"4 c #FF9500",
-"5 c #FFCA00",
-"6 c #FFFF00",
-"7 c #838383",
-"8 c #BDCAB4",
-"9 c #FFFFFF",
-/* pixels */
-"1111111111111111",
-"1111111111111111",
-"1111=;######%..1",
-"11- %2222222;3+1",
-"117;%%%%%%%;X:*1",
-"111@99&2456X 9*1",
-"111O-%4<4;;& 9$1",
-"11-;4<4;;;,9 @11",
-"1.#222X;-999o111",
-"1+;%%; 9999@1111",
-"1OX%X9&99>@11111",
-"1.9899&9X>111111",
-"1=:>:>X=11111111",
-"1111111111111111",
-"1111111111111111",
-"1111111111111111"
-};
diff --git a/navit/icons/gc_mystery.xpm b/navit/icons/gc_mystery.xpm
deleted file mode 100644
index 7857292ae..000000000
--- a/navit/icons/gc_mystery.xpm
+++ /dev/null
@@ -1,40 +0,0 @@
-/* XPM */
-static char *gc_mystery[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 18 1",
-" c black",
-". c #000041",
-"X c #003041",
-"o c #396500",
-"O c #7B0041",
-"+ c #414141",
-"@ c #00308B",
-"# c #0030B4",
-"$ c #7B008B",
-"% c #7B658B",
-"& c #399500",
-"* c #009541",
-"= c #0095B4",
-"- c #7B95B4",
-"; c none",
-": c #838383",
-"> c #BD95B4",
-", c #C5C5C5",
-/* pixels */
-";;;;;;;;;;;;;;;;",
-";;;;;:$$O:;;;;;;",
-";;;;+X###%o;;;;;",
-";;;:@#XX@#-o;;;;",
-";;;*#X,;:@#-;;;;",
-";;;*#%O;;X#%;;;;",
-";;;>X#%,;X#&;;;;",
-";;;;>*$;*#o;;;;;",
-";;;;;;;+X+;;;;;;",
-";;;;;;,X$;;;;;;;",
-";;;;;;$ :;;;;;;;",
-";;;;;;,+,;;;;;;;",
-";;;;;:.#+:;;;;;;",
-";;;;;:X=+:;;;;;;",
-";;;;;;:$:;;;;;;;",
-";;;;;;;;;;;;;;;;"
-};
diff --git a/navit/icons/gc_question.xpm b/navit/icons/gc_question.xpm
deleted file mode 100644
index 9de025068..000000000
--- a/navit/icons/gc_question.xpm
+++ /dev/null
@@ -1,25 +0,0 @@
-/* XPM */
-static char *gc_question[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 3 1",
-" c black",
-". c none",
-"X c #FFFFFF",
-/* pixels */
-".....XXXX.......",
-"....XX XX......",
-"....X X......",
-"....X X......",
-".XXXXX XXXX....",
-"X X....",
-"X XXX..",
-"X XX X X.",
-".X..X X",
-".X..X X",
-"X XX X X.",
-"X XXX..",
-"X XX X....",
-"X X..X X....",
-"X XX X....",
-".XXXXX..XXX....."
-};
diff --git a/navit/icons/gc_reference.xpm b/navit/icons/gc_reference.xpm
deleted file mode 100644
index bd19a525b..000000000
--- a/navit/icons/gc_reference.xpm
+++ /dev/null
@@ -1,40 +0,0 @@
-/* XPM */
-static char *gc_reference[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 18 1",
-" c #00656A",
-". c #00658B",
-"X c #39658B",
-"o c #39958B",
-"O c #3995B4",
-"+ c #7B958B",
-"@ c #7B95B4",
-"# c #7BCAB4",
-"$ c #7BCAD5",
-"% c none",
-"& c #B4B4B4",
-"* c #BDCAD5",
-"= c #BDCAFF",
-"- c #C5C5C5",
-"; c #D5D5D5",
-": c #FFFFD5",
-"> c #E6E6E6",
-", c #FFFFFF",
-/* pixels */
-"%%%%%%%%%%%%%%%%",
-"%%%%%**&$*;%%%%%",
-"%%%%@#*=;-#@%%%%",
-"%%%@*,>,>,>*@%%%",
-"%%@*,,,,,,>>*%%%",
-"%*#,,,>$*>,,>@;%",
-"%&*,,*o. O>,>**%",
-"%$>,>@.X..*,,;$%",
-"%&>,>@ .X $,,;*%",
-"%$*,:*X..o>,,*$%",
-"%*#,,;*@@;,,>#*%",
-"%%@*,,>>,,,,*@%%",
-"%%%@*,,,,,,*+%%%",
-"%%%%@#*>>*#@%%%%",
-"%%%%%*&&$&*%%%%%",
-"%%%%%%%%%%%%%%%%"
-};
diff --git a/navit/icons/gc_stages.xpm b/navit/icons/gc_stages.xpm
deleted file mode 100644
index ede38d156..000000000
--- a/navit/icons/gc_stages.xpm
+++ /dev/null
@@ -1,45 +0,0 @@
-/* XPM */
-static char *gc_stages[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 23 1",
-" c black",
-". c #802000",
-"X c #804000",
-"o c #A04000",
-"O c #A06000",
-"+ c #804040",
-"@ c #806040",
-"# c #A06040",
-"$ c #C06040",
-"% c #A08040",
-"& c #C08040",
-"* c #808080",
-"= c #A08080",
-"- c #A0A0A4",
-"; c #C08080",
-": c #C0A080",
-"> c #E0A080",
-", c #C0A0C0",
-"< c #C0C080",
-"1 c #C0C0C0",
-"2 c #C0DCC0",
-"3 c #FFFBF0",
-"4 c #FFFFFF",
-/* pixels */
-" ",
-" 41-:3444434434 ",
-" 3#..#244444444 ",
-" 1X.X.;43444344 ",
-" 1X.X.%4442:=14 ",
-" 3@.oX%433#..@3 ",
-" 4:Xo##34-.X..1 ",
-" 43&#&:33:..XX1 ",
-" 442<33,31XXoX1 ",
-" 3441+X#42#OX$3 ",
-" 4443=&:33&&&>3 ",
-" 44433334333434 ",
-" 44434444,++*34 ",
-" 444444431%#:44 ",
-" 44444443332334 ",
-" "
-};
diff --git a/navit/icons/gc_tradi.xpm b/navit/icons/gc_tradi.xpm
deleted file mode 100644
index c183b690c..000000000
--- a/navit/icons/gc_tradi.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *gc_tradi[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 19 1",
-" c black",
-". c #003000",
-"X c #393000",
-"o c #393041",
-"O c #396500",
-"+ c #396541",
-"@ c #414141",
-"# c #7B6541",
-"$ c #7B308B",
-"% c #7B658B",
-"& c #399541",
-"* c #7B9541",
-"= c #7B958B",
-"- c none",
-"; c #838383",
-": c #BD95B4",
-"> c #BDCAB4",
-", c #C5C5C5",
-"< c #FFFFFF",
-/* pixels */
-"----------------",
-"----------------",
-"----------------",
-"-------%X+@++ -",
-"------oOOXO+oo+-",
-"----+@OXO*oo@>$-",
-"--&@*+#*@oo;<<=-",
-"-.@@@@@o ;<<<<*-",
-"-X@@@oo@<<<<<+--",
-"-+ oo@<%<<<:+---",
-"-X<,<<<#<<+-----",
-"-.<<<<<%=+------",
-"--&====+--------",
-"----------------",
-"----------------",
-"----------------"
-};
diff --git a/navit/icons/gc_webcam.xpm b/navit/icons/gc_webcam.xpm
deleted file mode 100644
index 602d694c0..000000000
--- a/navit/icons/gc_webcam.xpm
+++ /dev/null
@@ -1,44 +0,0 @@
-/* XPM */
-static char *gc_webcam[] = {
-/* columns rows colors chars-per-pixel */
-"16 16 22 1",
-" c black",
-". c #393000",
-"X c #393041",
-"o c #006500",
-"O c #396541",
-"+ c #7B3041",
-"@ c #414141",
-"# c #7B6541",
-"$ c #7B008B",
-"% c #7B308B",
-"& c #7B658B",
-"* c #7B9541",
-"= c #7B958B",
-"- c #7BCA8B",
-"; c #BD308B",
-": c #BD30B4",
-"> c none",
-", c #838383",
-"< c #BD95B4",
-"1 c #BDCAB4",
-"2 c #C5C5C5",
-"3 c #FFFFFF",
-/* pixels */
-">>>>>>:$$;>>>>>>",
-">>>>>.1333=2>>>>",
-">>>>.3322331,>>>",
-">>>O33 @@ 13->>>",
-">>>X3@2,&,X312>>",
-">>>*3&2<<,X31,>>",
-">>>O3#3,<< 3<,>>",
-">>>O3<,3<@&3O,>>",
-">>>,O32##<3<&>>>",
-">>>>&X1333O+>>>>",
-">>>>>>OXXO>>>>>>",
-">>>>>>: @:>>>>>>",
-">>>>>>:.=:>>>>>>",
-">>>>>&*<=@%>>>>>",
-">>>>oO<<<O@ >>>>",
-">>>>>>>>>>>>>>>>"
-};
diff --git a/navit/icons/golf.svg b/navit/icons/golf.svg
deleted file mode 100644
index c52eebeb2..000000000
--- a/navit/icons/golf.svg
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- x="0px"
- y="0px"
- width="22"
- height="22"
- viewBox="0 0 100 100"
- enable-background="new 0 0 500 500"
- xml:space="preserve"
- id="svg3541"
- inkscape:version="0.91 r13725"
- sodipodi:docname="golf.svg"><metadata
- id="metadata3581"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title><dc:description>jfitie@gmail.com</dc:description><cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /></cc:Work><cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata><defs
- id="defs3579"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 250 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="500 : 250 : 1"
- inkscape:persp3d-origin="250 : 166.66667 : 1"
- id="perspective3583" /><linearGradient
- inkscape:collect="always"
- xlink:href="#SVGID_1_"
- id="linearGradient3616"
- gradientUnits="userSpaceOnUse"
- x1="272.74319"
- y1="121.6006"
- x2="316.9014"
- y2="121.6006" /><linearGradient
- inkscape:collect="always"
- xlink:href="#SVGID_2_"
- id="linearGradient3618"
- gradientUnits="userSpaceOnUse"
- x1="181.84621"
- y1="343.44531"
- x2="311.8457"
- y2="343.44531" /><linearGradient
- y2="121.6006"
- x2="316.9014"
- y1="121.6006"
- x1="272.74319"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3470"><stop
- id="stop3551-6"
- style="stop-color:#2B2B2B"
- offset="0.2184" /><stop
- id="stop3553-7"
- style="stop-color:#222222"
- offset="0.5415" /><stop
- id="stop3555-5"
- style="stop-color:#0D0D0D"
- offset="1" /></linearGradient><linearGradient
- y2="343.44531"
- x2="311.8457"
- y1="343.44531"
- x1="181.84621"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3476"><stop
- id="stop3560-5"
- style="stop-color:#7D7D7D"
- offset="0" /><stop
- id="stop3562-6"
- style="stop-color:#A6A6A6"
- offset="0.977" /></linearGradient></defs><sodipodi:namedview
- pagecolor="#ff37ff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1148"
- inkscape:window-height="830"
- id="namedview3577"
- showgrid="false"
- inkscape:zoom="5.0558131"
- inkscape:cx="57.104884"
- inkscape:cy="55.046611"
- inkscape:window-x="97"
- inkscape:window-y="41"
- inkscape:window-maximized="0"
- inkscape:current-layer="svg3541" /><g
- id="g3503"
- transform="matrix(0.94577661,0,0,0.94577518,28.132858,2.4686065)"><path
- inkscape:connector-curvature="0"
- id="path3547-9"
- d="m 32.680842,-2.4772927 c -6.310243,-0.6299494 -13.82898,5.6859412 -9.939453,12.1953125 3.23894,6.6447622 1.857374,14.3744192 2.548828,21.4570312 0.56232,5.059742 -3.853892,10.302011 0.162109,14.710938 3.532988,4.572236 0.625166,10.752651 1.682936,16.0796 -0.656347,3.689224 1.562932,11.249733 -0.838865,12.659296 C 18.855076,71.897094 8.0965745,72.237741 4.7492015,80.803957 1.2081295,88.293071 2.9081885,100.0164 12.04217,102.36451 22.593707,105.31281 34.259141,99.297496 40.346857,90.735598 42.803429,85.178875 39.443,79.036834 40.252357,73.234973 39.991657,64.351896 38.966871,55.144057 39.575373,46.505129 44.682048,41.778232 38.76315,35.092724 40.282404,29.487551 39.723456,21.533678 39.642856,13.401586 42.678889,5.9348166 43.373247,0.29052505 37.884714,-3.3661264 32.680842,-2.4772927 Z"
- style="fill:#ffffff" /><g
- transform="matrix(0.20727942,0,0,0.20727942,-28.695502,-1.8812881)"
- id="Outlines"><path
- inkscape:connector-curvature="0"
- style="fill:#050606"
- d="m 268,24.461 c 0,0 27.691,-18.461 56.923,-4.615 5.385,14.615 -1.066,29.23 -5.148,36.154 -4.082,13.846 -4.852,14.615 -4.852,32.308 0,17.693 -0.297,98.462 4.852,106.923 5.149,8.461 3.312,20.769 0,22.308 -3.312,1.539 -8.697,3.846 -8.697,3.846 0,0 -1.836,37.692 8.697,215.384 -17.159,18.462 -70.236,66.154 -123.313,43.077 -23.846,-10.77 -20.452,-33.847 -20.452,-55.385 0,-21.538 18.145,-37.693 23.529,-40.77 5.384,-3.077 32.861,-6.153 48.354,-1.538 15.493,4.615 43.954,13.077 43.954,13.077 0,0 -0.769,-139.231 -3.076,-165.385 -6.924,-6.923 -16.154,-20 -15.385,-27.692 4.615,-13.846 6.922,-11.539 8.461,-31.539 1.539,-20 -3.847,-97.692 -6.155,-110.769 C 271.077,53.691 260.308,42.923 268,24.461 Z"
- id="path3547" /></g><g
- transform="matrix(0.20727942,0,0,0.20727942,-28.695502,-1.8812881)"
- id="Color"><linearGradient
- id="SVGID_1_"
- gradientUnits="userSpaceOnUse"
- x1="272.74319"
- y1="121.6006"
- x2="316.9014"
- y2="121.6006"><stop
- offset="0.2184"
- style="stop-color:#2B2B2B"
- id="stop3551" /><stop
- offset="0.5415"
- style="stop-color:#222222"
- id="stop3553" /><stop
- offset="1"
- style="stop-color:#0D0D0D"
- id="stop3555" /></linearGradient><path
- inkscape:connector-curvature="0"
- style="fill:url(#linearGradient3616)"
- d="m 314.154,25.999 c 0,0 -24.616,-6.154 -39.231,3.846 -3.846,7.692 -3.076,19.23 6.154,25.384 0.769,10.77 14.615,123.077 -0.77,149.231 1.538,6.154 2.308,11.538 7.692,14.615 0,-7.692 0,-7.692 0,-7.692 l 21.538,-7.692 0,10.769 c 0,0 12.309,4.616 4.616,-18.461 -2.309,-12.308 -6.924,-115.384 -4.616,-138.461 3.077,-6.923 7.146,-11.539 7.146,-11.539 0,0 1.318,-14.615 -2.529,-20 z"
- id="path3557" /><linearGradient
- id="SVGID_2_"
- gradientUnits="userSpaceOnUse"
- x1="181.84621"
- y1="343.44531"
- x2="311.8457"
- y2="343.44531"><stop
- offset="0"
- style="stop-color:#7D7D7D"
- id="stop3560" /><stop
- offset="0.977"
- style="stop-color:#A6A6A6"
- id="stop3562" /></linearGradient><path
- inkscape:connector-curvature="0"
- style="fill:url(#linearGradient3618)"
- d="m 311.846,431.383 c 0,0 -33.076,47.693 -87.692,45.385 -27.692,1.538 -42.308,-20 -42.308,-36.154 0,-16.154 7.693,-48.461 29.231,-52.308 21.538,-3.847 66.688,6.923 87.692,19.23 0,-22.308 -7.103,-194.87 -7.103,-194.87 0,0 8.129,-3.667 13,-2.333 0.668,8.334 7.18,221.05 7.18,221.05 z"
- id="path3564" /></g><g
- transform="matrix(0.20727942,0,0,0.20727942,-28.695502,-1.8812881)"
- id="Iron_x5F_Lines"><line
- style="fill:#726658;stroke:#414042;stroke-width:8;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="212.312"
- y1="396.87399"
- x2="217.688"
- y2="466.62601"
- id="line3567" /><line
- style="fill:none;stroke:#414042;stroke-width:4;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="215.15601"
- y1="407.29901"
- x2="286"
- y2="412.228"
- id="line3569" /><line
- style="fill:none;stroke:#414042;stroke-width:4;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="215.57201"
- y1="425.80301"
- x2="286.21301"
- y2="421.13699"
- id="line3571" /><line
- style="fill:none;stroke:#414042;stroke-width:4;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="217.688"
- y1="443"
- x2="286.21301"
- y2="428.5"
- id="line3573" /><line
- style="fill:none;stroke:#414042;stroke-width:4;stroke-miterlimit:10"
- stroke-miterlimit="10"
- x1="217.688"
- y1="458"
- x2="289.5"
- y2="435.75"
- id="line3575" /></g></g></svg> \ No newline at end of file
diff --git a/navit/icons/gui_about.svg b/navit/icons/gui_about.svg
deleted file mode 100644
index 2cd20dcd9..000000000
--- a/navit/icons/gui_about.svg
+++ /dev/null
@@ -1,361 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="90.000000"
- inkscape:export-xdpi="90.000000"
- inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
- width="48px"
- height="48px"
- id="svg11300"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/status"
- sodipodi:docname="dialog-information.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3">
- <linearGradient
- id="linearGradient2990">
- <stop
- style="stop-color:#3465a4;stop-opacity:1;"
- offset="0"
- id="stop2992" />
- <stop
- style="stop-color:#3465a4;stop-opacity:0;"
- offset="1"
- id="stop2994" />
- </linearGradient>
- <linearGradient
- id="linearGradient4712">
- <stop
- style="stop-color:#5b8ccb;stop-opacity:1;"
- offset="0"
- id="stop4714" />
- <stop
- style="stop-color:#3465a4;stop-opacity:1;"
- offset="1"
- id="stop4716" />
- </linearGradient>
- <linearGradient
- id="linearGradient4694">
- <stop
- style="stop-color:#e9f1f8;stop-opacity:1;"
- offset="0"
- id="stop4696" />
- <stop
- style="stop-color:#376ba3;stop-opacity:0.8392157;"
- offset="1"
- id="stop4698" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4666">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4668" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop4670" />
- </linearGradient>
- <linearGradient
- id="linearGradient20210">
- <stop
- style="stop-color:#000000;stop-opacity:0.51546389;"
- offset="0.0000000"
- id="stop20212" />
- <stop
- id="stop20218"
- offset="0.55172414"
- style="stop-color:#000000;stop-opacity:0.14432989;" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop20214" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient20210"
- id="radialGradient4646"
- gradientUnits="userSpaceOnUse"
- gradientTransform="scale(1.764278,0.566804)"
- cx="14.772334"
- cy="74.209934"
- fx="14.772334"
- fy="74.209934"
- r="7.8289826" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4666"
- id="radialGradient4672"
- cx="25.755905"
- cy="9.9372978"
- fx="25.755905"
- fy="9.9372978"
- r="12.139711"
- gradientTransform="matrix(2.138401,-5.903375e-16,6.984997e-16,2.530201,-29.32054,-16.45375)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4694"
- id="radialGradient4700"
- cx="26.435322"
- cy="17.031229"
- fx="26.435322"
- fy="17.031229"
- r="13.244088"
- gradientTransform="matrix(1.821341,-5.36498e-16,6.351477e-16,2.156244,-21.15439,-13.79104)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4712"
- id="linearGradient4718"
- x1="20.643551"
- y1="9.0398531"
- x2="25.755913"
- y2="26.8943"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2990"
- id="linearGradient2996"
- x1="26"
- y1="22.116529"
- x2="27.550253"
- y2="28.126938"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- stroke="#3465a4"
- fill="#fce94f"
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="0.25490196"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="45.038263"
- inkscape:cy="20.92372"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:showpageshadow="false"
- inkscape:window-width="856"
- inkscape:window-height="630"
- inkscape:window-x="817"
- inkscape:window-y="340" />
- <metadata
- id="metadata4">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source>http://jimmac.musichall.cz</dc:source>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:title>Dialog Information</dc:title>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>dialog</rdf:li>
- <rdf:li>info</rdf:li>
- <rdf:li>information</rdf:li>
- </rdf:Bag>
- </dc:subject>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- id="g4634"
- transform="translate(-60.46391,17)">
- <path
- inkscape:r_cy="true"
- inkscape:r_cx="true"
- sodipodi:type="arc"
- style="opacity:0.8;color:#000000;fill:url(#radialGradient4646);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path20208"
- sodipodi:cx="26.0625"
- sodipodi:cy="42.0625"
- sodipodi:rx="13.8125"
- sodipodi:ry="4.4375"
- d="M 39.875 42.0625 A 13.8125 4.4375 0 1 1 12.25,42.0625 A 13.8125 4.4375 0 1 1 39.875 42.0625 z"
- transform="matrix(1.197183,0,0,1.098591,55.79842,-20.08448)" />
- <path
- inkscape:r_cy="true"
- inkscape:r_cx="true"
- id="path19509"
- d="M 83.002195,22.877541 L 83.002195,24.260545 C 83.002195,25.643549 84.412925,26.872887 85.999995,26.872887 C 87.587066,26.872887 88.997794,25.643549 88.997794,24.260545 L 88.997794,22.877541 L 83.002195,22.877541 z "
- style="fill:#555753;fill-rule:nonzero;stroke:#2e3436;stroke-miterlimit:4;stroke-opacity:1" />
- <path
- style="color:#000000;fill:#aeae57;fill-opacity:1;fill-rule:nonzero;stroke:#c4a000;stroke-width:2.00000095;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 85.835145,11.623519 C 82.568355,11.6156 78.863714,12.580499 80.871174,14.404546 C 80.37345,14.606241 79.661991,15.056698 79.74586,16.11077 C 79.792165,16.661264 80.373008,16.99918 81.167349,17.247287 C 80.266845,17.881784 79.693849,18.55227 79.74586,19.170624 C 79.791625,19.714699 80.36024,20.087289 81.138339,20.336283 C 80.260526,20.963478 79.694561,21.649745 79.74586,22.259619 C 79.824263,23.191711 81.825461,24.235779 86.158773,24.115531 C 89.278706,24.030099 92.031874,23.468343 92.249159,22.259619 C 92.33448,21.784995 91.947797,21.34215 91.34985,20.948254 C 91.797476,20.495031 92.111066,20.035337 92.075099,19.607746 C 92.029119,19.061107 91.467192,18.690738 90.682621,18.442088 C 91.560434,17.814893 92.126398,17.128626 92.075099,16.518751 C 92.029119,15.972112 91.467192,15.630886 90.682621,15.382234 C 91.570901,14.751651 92.126729,14.072695 92.075099,13.458897 C 92.01771,12.776619 88.90549,11.630962 85.835145,11.623519 z "
- id="path3209"
- sodipodi:nodetypes="cccccccscccccccs"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <path
- inkscape:r_cy="true"
- inkscape:r_cx="true"
- transform="matrix(0.596154,-0.127796,6.358129e-2,0.755885,92.37142,-7.700825)"
- d="M -3.5355339 27.228739 A 10.341436 3.2703688 0 1 1 -24.218407,27.228739 A 10.341436 3.2703688 0 1 1 -3.5355339 27.228739 z"
- sodipodi:ry="3.2703688"
- sodipodi:rx="10.341436"
- sodipodi:cy="27.228739"
- sodipodi:cx="-13.87697"
- id="path4702"
- style="color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.13035245;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- style="color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.08828904;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 92.173603,22.21572 C 91.956317,23.424444 88.881191,24.10655 83.959276,23.858968 C 80.842089,23.702168 80.663716,22.82605 80.881,21.617325 C 81.098286,20.4086 83.804176,19.561647 86.920934,19.726804 C 90.037692,19.89196 92.390887,21.006996 92.173603,22.21572 z "
- id="path3183"
- sodipodi:nodetypes="csccc"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <path
- transform="matrix(0.596154,-0.127796,6.358129e-2,0.755885,92.37142,-1.469023)"
- d="M -3.5355339 27.228739 A 10.341436 3.2703688 0 1 1 -24.218407,27.228739 A 10.341436 3.2703688 0 1 1 -3.5355339 27.228739 z"
- sodipodi:ry="3.2703688"
- sodipodi:rx="10.341436"
- sodipodi:cy="27.228739"
- sodipodi:cx="-13.87697"
- id="path1603"
- style="color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.13035245;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.13035245;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path2364"
- sodipodi:cx="-13.87697"
- sodipodi:cy="27.228739"
- sodipodi:rx="10.341436"
- sodipodi:ry="3.2703688"
- d="M -3.5355339 27.228739 A 10.341436 3.2703688 0 1 1 -24.218407,27.228739 A 10.341436 3.2703688 0 1 1 -3.5355339 27.228739 z"
- transform="matrix(0.596154,-0.127796,6.358129e-2,0.755885,92.37142,-4.544575)"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path20372"
- sodipodi:cx="27.75"
- sodipodi:cy="22.375"
- sodipodi:rx="3.25"
- sodipodi:ry="3.25"
- d="M 31 22.375 A 3.25 3.25 0 1 1 24.5,22.375 A 3.25 3.25 0 1 1 31 22.375 z"
- transform="matrix(0.331798,0,0,0.333302,73.20968,11.18361)"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <path
- transform="matrix(0.331798,0,0,0.333302,73.20968,14.17188)"
- d="M 31 22.375 A 3.25 3.25 0 1 1 24.5,22.375 A 3.25 3.25 0 1 1 31 22.375 z"
- sodipodi:ry="3.25"
- sodipodi:rx="3.25"
- sodipodi:cy="22.375"
- sodipodi:cx="27.75"
- id="path2435"
- style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <path
- inkscape:r_cy="true"
- inkscape:r_cx="true"
- transform="matrix(0.331798,0,0,0.333302,73.20968,7.77736)"
- d="M 31 22.375 A 3.25 3.25 0 1 1 24.5,22.375 A 3.25 3.25 0 1 1 31 22.375 z"
- sodipodi:ry="3.25"
- sodipodi:rx="3.25"
- sodipodi:cy="22.375"
- sodipodi:cx="27.75"
- id="path4708"
- style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.13035245;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path4710"
- sodipodi:cx="-13.87697"
- sodipodi:cy="27.228739"
- sodipodi:rx="10.341436"
- sodipodi:ry="3.2703688"
- d="M -3.5355339 27.228739 A 10.341436 3.2703688 0 1 1 -24.218407,27.228739 A 10.341436 3.2703688 0 1 1 -3.5355339 27.228739 z"
- transform="matrix(0.609516,1.48834e-2,-0.114607,0.749847,97.72817,-6.66803)"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- </g>
- <path
- style="opacity:1;color:#000000;fill:url(#radialGradient4700);fill-opacity:1.0;fill-rule:evenodd;stroke:url(#linearGradient4718);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 25.016299,3.1474516 C 18.321938,3.5296683 13.011824,9.1020052 13.011824,15.891539 C 13.011824,19.71505 16.031329,21.976654 17.309622,26.548802 C 18.3704,30.34295 22.089448,31.201903 25.402359,31.201903 C 29.402442,31.201903 33.695544,29.876694 34.659499,25.279481 C 35.454896,21.48614 38.5,19.028746 38.5,15.891539 C 38.499998,8.8546137 32.792838,3.1474516 25.755912,3.1474516 C 25.50852,3.1474516 25.260223,3.1335247 25.016299,3.1474516 z "
- id="path3885"
- sodipodi:nodetypes="csszsssc" />
- <path
- sodipodi:nodetypes="csszsssc"
- id="path4664"
- d="M 25.074585,4.3431622 C 18.907767,4.6952587 14.016112,9.8284722 14.016112,16.082962 C 14.016112,19.254718 17.329047,22.043543 18.204035,25.485407 C 19.21077,29.445511 22.366767,29.828929 25.755913,29.828929 C 29.350248,29.828929 32.872411,29.272027 33.552794,25.114528 C 34.110199,21.708487 37.495714,19.061139 37.495714,16.082962 C 37.495712,9.6005762 32.2383,4.3431622 25.755913,4.3431622 C 25.528017,4.3431622 25.299287,4.3303328 25.074585,4.3431622 z "
- style="opacity:0.59340671;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient4672);stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2996);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 28.12132,29.055456 L 32,16.533748 C 28,14.768315 24,14.530464 20,17 L 21,20"
- id="path4674"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.7525773;color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.05887306;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path2998"
- sodipodi:cx="25.5"
- sodipodi:cy="10.125"
- sodipodi:rx="9.25"
- sodipodi:ry="6.125"
- d="M 34.75 10.125 A 9.25 6.125 0 1 1 16.25,10.125 A 9.25 6.125 0 1 1 34.75 10.125 z"
- transform="matrix(0.703611,0,0,0.788898,7.799507,3.597214)" />
- <path
- transform="matrix(0.131662,-0.2583,0.172707,0.24754,12.0763,19.25056)"
- d="M 34.75 10.125 A 9.25 6.125 0 1 1 16.25,10.125 A 9.25 6.125 0 1 1 34.75 10.125 z"
- sodipodi:ry="6.125"
- sodipodi:rx="9.25"
- sodipodi:cy="10.125"
- sodipodi:cx="25.5"
- id="path3000"
- style="opacity:0.68556704;color:black;fill:white;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.05887306;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc"
- inkscape:transform-center-y="2.8297225" />
- </g>
-</svg>
diff --git a/navit/icons/gui_actions.svg b/navit/icons/gui_actions.svg
deleted file mode 100644
index 9fc4b4d18..000000000
--- a/navit/icons/gui_actions.svg
+++ /dev/null
@@ -1,591 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg4289"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/categories"
- sodipodi:docname="applications-games.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4291">
- <linearGradient
- id="linearGradient3035">
- <stop
- style="stop-color:#babdb6;stop-opacity:1"
- offset="0"
- id="stop3037" />
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="1"
- id="stop3039" />
- </linearGradient>
- <linearGradient
- id="linearGradient3023">
- <stop
- style="stop-color:#f9afaf;stop-opacity:1"
- offset="0"
- id="stop3025" />
- <stop
- style="stop-color:#ef2929;stop-opacity:1;"
- offset="1"
- id="stop3027" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3009">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop3011" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop3013" />
- </linearGradient>
- <linearGradient
- id="linearGradient2953">
- <stop
- id="stop2955"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1" />
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0.41379312"
- id="stop2957" />
- <stop
- id="stop2959"
- offset="1"
- style="stop-color:#babdb6;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient2947"
- inkscape:collect="always">
- <stop
- id="stop2949"
- offset="0"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- id="stop2951"
- offset="1"
- style="stop-color:white;stop-opacity:0.47104248" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2941">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="stop2943" />
- <stop
- style="stop-color:#eeeeec;stop-opacity:1"
- offset="1"
- id="stop2945" />
- </linearGradient>
- <linearGradient
- id="linearGradient2933">
- <stop
- style="stop-color:#babdb6;stop-opacity:1"
- offset="0"
- id="stop2935" />
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="1"
- id="stop2937" />
- </linearGradient>
- <linearGradient
- id="linearGradient2918">
- <stop
- id="stop2920"
- offset="0"
- style="stop-color:black" />
- <stop
- id="stop2922"
- offset="1"
- style="stop-color:black;stop-opacity:0" />
- </linearGradient>
- <linearGradient
- id="linearGradient2861">
- <stop
- style="stop-color:#c00;stop-opacity:1;"
- offset="0"
- id="stop2863" />
- <stop
- id="stop2869"
- offset="0.22988506"
- style="stop-color:#ef2929;stop-opacity:1;" />
- <stop
- style="stop-color:#c00;stop-opacity:1"
- offset="1"
- id="stop2865" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2848">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop2850" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop2852" />
- </linearGradient>
- <linearGradient
- id="linearGradient5024">
- <stop
- style="stop-color:#555753"
- offset="0"
- id="stop5026" />
- <stop
- style="stop-color:#555753;stop-opacity:0;"
- offset="1"
- id="stop5028" />
- </linearGradient>
- <linearGradient
- id="linearGradient5565">
- <stop
- style="stop-color:#f24e4e;stop-opacity:1"
- offset="0"
- id="stop5567" />
- <stop
- style="stop-color:#c10000;stop-opacity:1"
- offset="1"
- id="stop5569" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5540">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5542" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5544" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient6719"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5060">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5062" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5064" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient6717"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- id="linearGradient5048">
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="0"
- id="stop5050" />
- <stop
- id="stop5056"
- offset="0.5"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5052" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5048"
- id="linearGradient6715"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
- x1="302.85715"
- y1="366.64789"
- x2="302.85715"
- y2="609.50507" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5024"
- id="linearGradient8128"
- gradientUnits="userSpaceOnUse"
- x1="10.788347"
- y1="13.257416"
- x2="9.6597872"
- y2="7.0036697"
- gradientTransform="translate(0.357548,3.418157)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2941"
- id="linearGradient8145"
- x1="-0.30985892"
- y1="26.600447"
- x2="19.211418"
- y2="38.36433"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.997033,8.000011,-2.918415)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5540"
- id="radialGradient2881"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.952381,0,0,0.490991,1.435937,14.25112)"
- cx="30.154839"
- cy="27.98991"
- fx="30.154839"
- fy="27.98991"
- r="3.7123106" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2918"
- id="linearGradient2916"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0.357548,4.418157)"
- x1="11.163347"
- y1="17.507416"
- x2="10.534787"
- y2="9.6911697" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2933"
- id="linearGradient2939"
- x1="41.409943"
- y1="45.25996"
- x2="12.285978"
- y2="37.5"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2848"
- id="linearGradient2979"
- gradientUnits="userSpaceOnUse"
- x1="29.74268"
- y1="7.5623312"
- x2="29.74268"
- y2="5.6997418" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5565"
- id="linearGradient2982"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.333335,0,0,1.218181,-10.50002,-1.20001)"
- x1="29.999987"
- y1="7.9000344"
- x2="29.999987"
- y2="10.433436" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2947"
- id="linearGradient2985"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.199995,0,0,1.090909,-6.49985,0.499987)"
- x1="27.970291"
- y1="7.8657598"
- x2="30.000015"
- y2="32.19165" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2953"
- id="linearGradient2988"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.142855,0,0,1.083333,-5.928468,0.624995)"
- x1="27.857143"
- y1="17.714287"
- x2="34.071434"
- y2="17.714285" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3009"
- id="linearGradient3015"
- x1="11.75"
- y1="33.0625"
- x2="12.5"
- y2="43.125"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2861"
- id="linearGradient3020"
- gradientUnits="userSpaceOnUse"
- x1="14.218551"
- y1="27.734375"
- x2="19.72377"
- y2="27.734375" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3023"
- id="radialGradient3029"
- cx="17.96875"
- cy="28.031252"
- fx="17.96875"
- fy="28.031252"
- r="3"
- gradientTransform="matrix(1.54223,0,0,0.514076,-9.743189,12.93355)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3035"
- id="radialGradient3041"
- cx="17.236843"
- cy="27.869041"
- fx="17.236843"
- fy="27.869041"
- r="3"
- gradientTransform="matrix(1.125173,0,0,0.375057,-2.15759,16.83718)"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666"
- borderopacity="1"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="38.624382"
- inkscape:cy="17.830833"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="1036"
- inkscape:window-height="624"
- inkscape:window-x="26"
- inkscape:window-y="225"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:showpageshadow="false"
- gridspacingx="0.5px"
- gridspacingy="0.5px"
- gridempspacing="2"
- inkscape:grid-points="true" />
- <metadata
- id="metadata4294">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:title>Games category</dc:title>
- <dc:date>August 2006</dc:date>
- <dc:creator>
- <cc:Agent>
- <dc:title>Andreas Nilsson</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source>http://www.gnome.org</dc:source>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>games</rdf:li>
- <rdf:li>entertainment</rdf:li>
- <rdf:li>fun</rdf:li>
- <rdf:li>joystick</rdf:li>
- <rdf:li>controller</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:contributor>
- <cc:Agent>
- <dc:title>Jakub Steiner
-Lapo Calamandrei</dc:title>
- </cc:Agent>
- </dc:contributor>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- id="g3952"
- transform="matrix(1.842671e-2,0,0,3.233675e-2,40.38938,32.87305)"
- style="opacity:0.5;display:inline">
- <rect
- y="-150.69685"
- x="-1559.2523"
- height="478.35718"
- width="1339.6335"
- id="rect3954"
- style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- sodipodi:nodetypes="cccc"
- id="path3956"
- d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
- style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
- id="path3958"
- sodipodi:nodetypes="cccc" />
- </g>
- <path
- style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient2916);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;opacity:0.1"
- d="M 21.357548,25.851145 C 25.413543,16.46711 7.283475,23.287862 5.5,19.250898 C 3.9996713,15.854847 21.276649,16.264088 12.369033,9.5"
- id="path2912"
- sodipodi:nodetypes="csc" />
- <path
- style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#linearGradient8128);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- d="M 21.357548,24.851145 C 25.413543,15.46711 7.2834752,22.287862 5.5,18.250898 C 3.9996713,14.854847 21.276649,15.264088 12.369033,8.5"
- id="path8126"
- sodipodi:nodetypes="csc" />
- <path
- style="fill:url(#linearGradient8145);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
- d="M 13.34375,23.5 C 12.336524,23.502808 11.903738,23.952055 11.625,24.65625 L 7.53125,35 L 7.5,38.96875 C 7.5,39.810299 8.1897011,40.5 9.03125,40.5 L 38.96875,40.5 C 39.810299,40.5 40.5,39.810297 40.5,38.96875 L 40.5,35 L 36.375,24.625 C 36.103729,23.944107 35.338391,23.499996 34.5,23.5 L 13.34375,23.5 z "
- id="path8137"
- sodipodi:nodetypes="ccccccccccc" />
- <rect
- style="opacity:1;fill:url(#linearGradient2939);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5213"
- width="31.979832"
- height="5"
- x="8"
- y="35"
- rx="0.98345506"
- ry="0.98345506" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:url(#radialGradient3041);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path3031"
- sodipodi:cx="17"
- sodipodi:cy="27"
- sodipodi:rx="3"
- sodipodi:ry="1"
- d="M 20 27 A 3 1 0 1 1 14,27 A 3 1 0 1 1 20 27 z"
- transform="matrix(1.666667,0,0,2.48437,-11.33333,-38.59362)" />
- <path
- sodipodi:type="inkscape:offset"
- inkscape:radius="-1"
- inkscape:original="M 13.34375 23.5 C 12.336524 23.502808 11.903738 23.952055 11.625 24.65625 L 7.53125 35 L 7.5 38.96875 C 7.5 39.810299 8.1897011 40.5 9.03125 40.5 L 38.96875 40.5 C 39.810299 40.5 40.5 39.810297 40.5 38.96875 L 40.5 35 L 36.375 24.625 C 36.103729 23.944107 35.338391 23.499996 34.5 23.5 L 13.34375 23.5 z "
- style="fill:none;fill-opacity:1.0;fill-rule:evenodd;stroke:url(#linearGradient3015);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
- id="path3007"
- d="M 13.34375,24.5 C 12.988411,24.500991 12.882848,24.572505 12.8125,24.625 C 12.742152,24.677495 12.663468,24.776169 12.5625,25.03125 L 8.53125,35.21875 L 8.5,38.96875 C 8.5,39.263925 8.7360754,39.5 9.03125,39.5 L 38.96875,39.5 C 39.263923,39.5 39.5,39.263921 39.5,38.96875 L 39.5,35.21875 L 35.4375,25 C 35.350246,24.780991 34.985243,24.499998 34.5,24.5 L 13.34375,24.5 z " />
- <path
- style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:white;stroke-width:0.99999964px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
- d="M 8.6236514,35.5 L 39.46527,35.5"
- id="path5223"
- sodipodi:nodetypes="cc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.4;fill:url(#radialGradient2881);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path5538"
- sodipodi:cx="30.279322"
- sodipodi:cy="27.99898"
- sodipodi:rx="3.7123106"
- sodipodi:ry="2.0708127"
- d="M 33.991632 27.99898 A 3.7123106 2.0708127 0 1 1 26.567011,27.99898 A 3.7123106 2.0708127 0 1 1 33.991632 27.99898 z"
- transform="matrix(1.809853,0,0,2.278696,-24.95737,-34.76991)" />
- <rect
- style="fill:url(#linearGradient2988);fill-opacity:1;stroke:#888a85;stroke-width:0.99999952;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4311"
- width="7.9999919"
- height="25.999989"
- x="25.500023"
- y="5.4999924"
- rx="3.4541733"
- ry="3.0224063" />
- <path
- style="fill:white;fill-opacity:1;stroke:none;stroke-width:0.99999952;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;opacity:0.8"
- d="M 28.96875,6 C 27.284933,6 26,7.1578409 26,8.53125 L 26,11.5 C 26,12.873409 27.284932,14.03125 28.96875,14.03125 L 30.03125,14.03125 C 31.715067,14.03125 33,12.873407 33,11.5 L 33,8.53125 C 33,7.1578412 31.715067,6 30.03125,6 L 28.96875,6 z "
- id="path2965"
- sodipodi:nodetypes="ccccccccc" />
- <rect
- style="fill:none;fill-opacity:1;stroke:url(#linearGradient2985);stroke-width:0.99999923;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5211"
- width="5.9999743"
- height="23.999992"
- x="26.500031"
- y="6.4999852"
- rx="2.4831805"
- ry="2.0693247" />
- <rect
- style="fill:url(#linearGradient2982);fill-opacity:1;stroke:#a40000;stroke-width:0.99999815;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4315"
- width="3.9999886"
- height="7.0000048"
- x="27.500011"
- y="5.4999952"
- rx="1.5023848"
- ry="1.5023848" />
- <rect
- ry="0.94451648"
- rx="0.94451648"
- y="6"
- x="28"
- height="2"
- width="3"
- id="rect1925"
- style="opacity:0.61800764;fill:url(#linearGradient2979);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- sodipodi:type="arc"
- style="opacity:0.7;fill:white;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4316"
- sodipodi:cx="30.178572"
- sodipodi:cy="7.125"
- sodipodi:rx="0.8214286"
- sodipodi:ry="0.6964286"
- d="M 31 7.125 A 0.8214286 0.6964286 0 1 1 29.357143,7.125 A 0.8214286 0.6964286 0 1 1 31 7.125 z"
- transform="matrix(0.608687,0,0,0.717948,10.1307,2.368148)" />
- <path
- style="fill:url(#linearGradient3020);fill-opacity:1;stroke:#a40000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 17,25.5 C 15.062439,25.5 13.5,26.171996 13.5,27 L 13.5,28 C 13.5,28.828004 15.062439,29.5 17,29.5 C 18.937561,29.5 20.53125,28.828003 20.53125,28 L 20.53125,27 C 20.53125,26.171996 18.93756,25.5 17,25.5 z "
- id="path4313"
- sodipodi:nodetypes="csssssc" />
- <path
- sodipodi:type="arc"
- style="fill:url(#radialGradient3029);fill-opacity:1.0;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path2871"
- sodipodi:cx="17"
- sodipodi:cy="27"
- sodipodi:rx="3"
- sodipodi:ry="1"
- d="M 20 27 A 3 1 0 1 1 14,27 A 3 1 0 1 1 20 27 z" />
- </g>
-</svg>
diff --git a/navit/icons/gui_active.svg b/navit/icons/gui_active.svg
deleted file mode 100644
index 390c2e11c..000000000
--- a/navit/icons/gui_active.svg
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg3165"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/tmp"
- sodipodi:docname="gui_active.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3167">
- <linearGradient
- id="linearGradient5237">
- <stop
- id="stop5239"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0.5"
- id="stop5247" />
- <stop
- id="stop5241"
- offset="1"
- style="stop-color:#9c9c9c;stop-opacity:1" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5237"
- id="radialGradient5990"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.5301205,0,0,1.6745294,-12.159639,-11.709817)"
- cx="22.9375"
- cy="16.305218"
- fx="22.9375"
- fy="16.305218"
- r="15.5625" />
- <linearGradient
- id="linearGradient5300"
- inkscape:collect="always">
- <stop
- id="stop5302"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop5304"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5300"
- id="radialGradient5988"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.2469896,0,0,2.2469896,-37.128341,-8.8439229)"
- cx="29.77438"
- cy="7.0922189"
- fx="29.77438"
- fy="7.0922189"
- r="25.380436" />
- <linearGradient
- id="linearGradient5226">
- <stop
- id="stop5811"
- offset="0"
- style="stop-color:#63b512;stop-opacity:1;" />
- <stop
- style="stop-color:#58a30e;stop-opacity:1;"
- offset="0.16030352"
- id="stop5245" />
- <stop
- style="stop-color:#366b04;stop-opacity:1"
- offset="0.66008514"
- id="stop5814" />
- <stop
- id="stop5231"
- offset="1"
- style="stop-color:#87ea25;stop-opacity:1" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5226"
- id="radialGradient5986"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.5354369,0,0,1.5485894,-15.737913,-10.36738)"
- cx="29.392656"
- cy="18.898249"
- fx="29.392656"
- fy="18.898249"
- r="29.699959" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5224"
- id="radialGradient5984"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
- cx="14.5"
- cy="26.6875"
- fx="14.5"
- fy="26.6875"
- r="10" />
- <filter
- height="1.6682318"
- y="-0.33411592"
- width="1.1962931"
- x="-0.09814655"
- id="filter5296"
- inkscape:collect="always">
- <feGaussianBlur
- id="feGaussianBlur5298"
- stdDeviation="0.81788793"
- inkscape:collect="always" />
- </filter>
- <linearGradient
- id="linearGradient5224"
- inkscape:collect="always">
- <stop
- id="stop5226"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop5228"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5224"
- id="radialGradient5982"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
- cx="14.5"
- cy="26.6875"
- fx="14.5"
- fy="26.6875"
- r="10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="800"
- inkscape:window-height="649"
- inkscape:window-x="472"
- inkscape:window-y="0" />
- <metadata
- id="metadata3170">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- style="display:inline"
- id="g5964"
- transform="translate(0.8558594,-0.614906)">
- <path
- transform="matrix(2.1570145,0,0,2.155398,-7.8468552,-16.33814)"
- d="M 24.5 26.6875 A 10 2.9375 0 1 1 4.5,26.6875 A 10 2.9375 0 1 1 24.5 26.6875 z"
- sodipodi:ry="2.9375"
- sodipodi:rx="10"
- sodipodi:cy="26.6875"
- sodipodi:cx="14.5"
- id="path5966"
- style="opacity:0.53012049;fill:url(#radialGradient5982);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter5296);enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.80120479;fill:url(#radialGradient5984);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter5296);enable-background:accumulate"
- id="path5968"
- sodipodi:cx="14.5"
- sodipodi:cy="26.6875"
- sodipodi:rx="10"
- sodipodi:ry="2.9375"
- d="M 24.5 26.6875 A 10 2.9375 0 1 1 4.5,26.6875 A 10 2.9375 0 1 1 24.5 26.6875 z"
- transform="matrix(1.3478975,0,0,1.3468874,3.8853414,6.4889877)" />
- <path
- transform="matrix(0.7238447,0,0,0.7274883,2.1828126,2.3568607)"
- d="M 58.403591 29.207693 A 29.010935 29.010935 0 1 1 0.3817215,29.207693 A 29.010935 29.010935 0 1 1 58.403591 29.207693 z"
- sodipodi:ry="29.010935"
- sodipodi:rx="29.010935"
- sodipodi:cy="29.207693"
- sodipodi:cx="29.392656"
- id="path5970"
- style="fill:url(#radialGradient5986);fill-opacity:1;fill-rule:evenodd;stroke:#316203;stroke-width:1.37804782;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.8254302,0,0,0.8252681,-1.1457884,-1.4441229)"
- d="M 53.950159 30.352861 A 24.175779 24.175779 0 1 1 5.5986004,30.352861 A 24.175779 24.175779 0 1 1 53.950159 30.352861 z"
- sodipodi:ry="24.175779"
- sodipodi:rx="24.175779"
- sodipodi:cy="30.352861"
- sodipodi:cx="29.77438"
- id="path5972"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient5988);stroke-width:1.21160841;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- sodipodi:type="arc" />
- <path
- sodipodi:nodetypes="ccccccc"
- id="path5974"
- d="M 12.875,24.625 L 25.375,36.625 L 44,20.625 C 43.253602,16.729371 41.57038,13.679873 39.8125,11.0625 L 25.125,23.75 L 20.375,18.5 L 12.875,24.625 z "
- style="opacity:1;fill:url(#radialGradient5990);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="cc"
- id="path5976"
- d="M 40.21875,10.8125 C 41.930961,13.346411 43.59334,15.979986 44.40625,20.3125"
- style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#549910;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_android_menu.svg b/navit/icons/gui_android_menu.svg
deleted file mode 100644
index b47eae076..000000000
--- a/navit/icons/gui_android_menu.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- viewBox="0 0 48 48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="gui_android_menu.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:zoom="9.8333333"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- fit-margin-top="16"
- fit-margin-bottom="16"
- fit-margin-left="22"
- fit-margin-right="22"
- showguides="true"
- inkscape:guide-bbox="true">
- <sodipodi:guide
- position="0,12"
- orientation="0,1"
- id="guide4284"
- inkscape:label=""
- inkscape:color="rgb(0,0,255)" />
- <sodipodi:guide
- position="0,36"
- orientation="0,1"
- id="guide4286"
- inkscape:label=""
- inkscape:color="rgb(0,0,255)" />
- <sodipodi:guide
- position="0,16"
- orientation="0,1"
- id="guide4288"
- inkscape:label=""
- inkscape:color="rgb(0,0,255)" />
- <sodipodi:guide
- position="0,32"
- orientation="0,1"
- id="guide4290"
- inkscape:label=""
- inkscape:color="rgb(0,0,255)" />
- <sodipodi:guide
- position="12,0"
- orientation="1,0"
- id="guide4292"
- inkscape:label=""
- inkscape:color="rgb(0,0,255)" />
- <sodipodi:guide
- position="16,0"
- orientation="1,0"
- id="guide4294"
- inkscape:label=""
- inkscape:color="rgb(0,0,255)" />
- <sodipodi:guide
- position="32,0"
- orientation="1,0"
- id="guide4296"
- inkscape:label=""
- inkscape:color="rgb(0,0,255)" />
- <sodipodi:guide
- position="36,0"
- orientation="1,0"
- id="guide4298"
- inkscape:label=""
- inkscape:color="rgb(0,0,255)" />
- <inkscape:grid
- type="xygrid"
- id="grid4300" />
- </sodipodi:namedview>
- <circle
- style="fill:#1a6cb6;stroke:none;stroke-width:0.79100001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;fill-opacity:1"
- id="path4302"
- cx="24"
- cy="24"
- r="24" />
- <path
- d="m 24,20 c 1.1,0 2,-0.9 2,-2 0,-1.1 -0.9,-2 -2,-2 -1.1,0 -2,0.9 -2,2 0,1.1 0.9,2 2,2 z m 0,2 c -1.1,0 -2,0.9 -2,2 0,1.1 0.9,2 2,2 1.1,0 2,-0.9 2,-2 0,-1.1 -0.9,-2 -2,-2 z m 0,6 c -1.1,0 -2,0.9 -2,2 0,1.1 0.9,2 2,2 1.1,0 2,-0.9 2,-2 0,-1.1 -0.9,-2 -2,-2 z"
- id="path6"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
-</svg>
diff --git a/navit/icons/gui_arrow_down.svg b/navit/icons/gui_arrow_down.svg
deleted file mode 100644
index cd44ad4fd..000000000
--- a/navit/icons/gui_arrow_down.svg
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/martin/map/sf/navit-test/navit/xpm"
- sodipodi:docname="gui_arrow_down.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="4.7880281"
- inkscape:cx="32"
- inkscape:cy="65.416679"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0"
- width="48px"
- height="48px" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <path
- style="fill:#c0c0c0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 45.406458,1.1253713 L 24.047839,24.374997 L 2.593542,1.125 L 45.406458,1.1253713 z "
- id="path2185"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/navit/icons/gui_arrow_left.svg b/navit/icons/gui_arrow_left.svg
deleted file mode 100644
index 783758a48..000000000
--- a/navit/icons/gui_arrow_left.svg
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/martin/map/sf/navit-test/navit/xpm"
- sodipodi:docname="gui_arrow_left.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0"
- width="48px"
- height="48px" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <path
- style="fill:#c0c0c0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 46.874629,2.5935415 L 23.625003,23.95216 L 46.875,45.406458 L 46.874629,2.5935415 z "
- id="path2185"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/navit/icons/gui_arrow_right.svg b/navit/icons/gui_arrow_right.svg
deleted file mode 100644
index 94f11d9a4..000000000
--- a/navit/icons/gui_arrow_right.svg
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/martin/map/sf/navit-test/navit/xpm"
- sodipodi:docname="gui_arrow_right.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0"
- width="48px"
- height="48px" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <path
- style="fill:#c0c0c0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 1.12537,2.5935415 L 24.374996,23.95216 L 1.125,45.406458 L 1.12537,2.5935415 z "
- id="path2185"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/navit/icons/gui_arrow_up.svg b/navit/icons/gui_arrow_up.svg
deleted file mode 100644
index f64166e75..000000000
--- a/navit/icons/gui_arrow_up.svg
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/martin/map/sf/navit-test/navit/xpm"
- sodipodi:docname="gui_arrow_up.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0"
- width="48px"
- height="48px" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <path
- style="fill:#c0c0c0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 45.406458,46.874629 L 24.047839,23.625003 L 2.593542,46.875 L 45.406458,46.874629 z "
- id="path2185"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/navit/icons/gui_bookmark.svg b/navit/icons/gui_bookmark.svg
deleted file mode 100644
index 4d32f31f3..000000000
--- a/navit/icons/gui_bookmark.svg
+++ /dev/null
@@ -1,470 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/andreas/project/gnome-icon-theme/scalable/actions/bookmark-new.png"
- sodipodi:docname="gui_bookmark.svg"
- sodipodi:docbase="/home/martin/map/sf/navit-guiint2/navit/xpm"
- inkscape:version="0.45.1"
- sodipodi:version="0.32"
- id="svg249"
- height="48"
- width="48"
- version="1.0"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2833">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop2835" />
- <stop
- style="stop-color:white;stop-opacity:0.56273764"
- offset="1"
- id="stop2837" />
- </linearGradient>
- <linearGradient
- id="linearGradient3702">
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="0"
- id="stop3704" />
- <stop
- id="stop3710"
- offset="0.5"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop3706" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3702"
- id="linearGradient2098"
- gradientUnits="userSpaceOnUse"
- x1="25.058096"
- y1="47.027729"
- x2="25.058096"
- y2="39.999443" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3688"
- id="radialGradient2096"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.003784,0,0,1.4,-20.01187,-104.4)"
- cx="4.9929786"
- cy="43.5"
- fx="4.9929786"
- fy="43.5"
- r="2.5" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3688">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop3690" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop3692" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3688"
- id="radialGradient2094"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.003784,0,0,1.4,27.98813,-17.4)"
- cx="4.9929786"
- cy="43.5"
- fx="4.9929786"
- fy="43.5"
- r="2.5" />
- <linearGradient
- id="linearGradient5345">
- <stop
- style="stop-color:#e5c184;stop-opacity:1;"
- offset="0"
- id="stop5347" />
- <stop
- id="stop1936"
- offset="0.42469135"
- style="stop-color:#d9a752;stop-opacity:1;" />
- <stop
- id="stop7129"
- offset="0.9041152"
- style="stop-color:#d9a752;stop-opacity:1;" />
- <stop
- style="stop-color:#e5c184;stop-opacity:1"
- offset="1"
- id="stop5349" />
- </linearGradient>
- <linearGradient
- id="linearGradient2378">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop2380" />
- <stop
- id="stop4146"
- offset="0.25"
- style="stop-color:#fefede;stop-opacity:0.91836733;" />
- <stop
- id="stop2386"
- offset="0.5"
- style="stop-color:#f5f328;stop-opacity:1;" />
- <stop
- style="stop-color:#f5f32d;stop-opacity:0.12234043;"
- offset="1"
- id="stop2382" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4790">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop4792" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop4794" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2251">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop2253" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop2255" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2251"
- id="linearGradient8166"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-3.277938e-2,-0.999463,0.999463,-3.277938e-2,-0.709646,45.06274)"
- x1="33.396004"
- y1="36.921333"
- x2="34.170048"
- y2="38.070381" />
- <linearGradient
- id="linearGradient15662">
- <stop
- id="stop15664"
- offset="0.0000000"
- style="stop-color:#ffffff;stop-opacity:1.0000000;" />
- <stop
- id="stop15666"
- offset="1.0000000"
- style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
- </linearGradient>
- <linearGradient
- id="linearGradient269">
- <stop
- id="stop270"
- offset="0.0000000"
- style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
- <stop
- id="stop271"
- offset="1"
- style="stop-color:#8a8a8a;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient259">
- <stop
- id="stop260"
- offset="0.0000000"
- style="stop-color:#fafafa;stop-opacity:1.0000000;" />
- <stop
- id="stop261"
- offset="1.0000000"
- style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient269"
- id="radialGradient15656"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9717435,0,0,1.0360674,3.2383519,0.5060885)"
- cx="8.824419"
- cy="3.7561285"
- fx="8.824419"
- fy="3.7561285"
- r="37.751713" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient259"
- id="radialGradient15658"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9639356,0,0,1.0444591,-0.127221,-0.1424244)"
- cx="33.966679"
- cy="35.736916"
- fx="33.966679"
- fy="35.736916"
- r="86.70845" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient15662"
- id="radialGradient15668"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9731786,0,0,1.034993,3.1656505,0.5540137)"
- cx="8.1435566"
- cy="7.2678967"
- fx="8.1435566"
- fy="7.2678967"
- r="38.158695" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient269"
- id="radialGradient5350"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.331735,0,0,0.3585438,20.10526,9.5269319)"
- cx="31.863327"
- cy="2.3667307"
- fx="31.863327"
- fy="2.3667307"
- r="37.751713" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient259"
- id="radialGradient5352"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.148355,1.022578e-2,-1.104438e-2,0.1645276,25.06011,12.804777)"
- cx="30.653816"
- cy="14.9373"
- fx="30.653816"
- fy="14.9373"
- r="86.70845" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4790"
- id="radialGradient4796"
- cx="37.030354"
- cy="12.98915"
- fx="37.030354"
- fy="12.98915"
- r="4.2929163"
- gradientTransform="matrix(1.744653,2.313551e-22,-1.663e-22,1.283833,-26.58256,-3.478359)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2378"
- id="radialGradient3271"
- cx="38.658855"
- cy="9.3411446"
- fx="38.658855"
- fy="9.3411446"
- r="8.341651"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5345"
- id="linearGradient5351"
- x1="17.948223"
- y1="17.797228"
- x2="17.948223"
- y2="4.361907"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9309477,0,0,1,0.6917802,-4.41941e-2)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2833"
- id="linearGradient2839"
- x1="13.46875"
- y1="3.0304594"
- x2="13.46875"
- y2="5.5014644"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- inkscape:window-y="0"
- inkscape:window-x="0"
- inkscape:window-height="954"
- inkscape:window-width="1280"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showgrid="false"
- inkscape:current-layer="layer5"
- inkscape:cy="24"
- inkscape:cx="24"
- inkscape:zoom="15.416667"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="0.3254902"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- inkscape:showpageshadow="false"
- showborder="true" />
- <metadata
- id="metadata4">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>New Bookmark</dc:title>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>text</rdf:li>
- <rdf:li>plaintext</rdf:li>
- <rdf:li>regular</rdf:li>
- <rdf:li>document</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Andreas Nilsson</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source>http://www.gnome.org</dc:source>
- <dc:contributor>
- <cc:Agent>
- <dc:title>Luca Ferretti
-Jakub Steiner
-Lapo Calamandrei</dc:title>
- </cc:Agent>
- </dc:contributor>
- <dc:date>December 2006</dc:date>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer6"
- inkscape:label="Shadow">
- <g
- id="g2043"
- inkscape:label="Shadow"
- transform="matrix(1,0,0,0.555556,-1.8e-5,19.888883)">
- <g
- style="display:inline"
- id="g2036"
- inkscape:label="Shadow">
- <g
- id="g3712"
- style="opacity:0.4"
- transform="matrix(1.052632,0,0,1.285713,-1.263158,-13.42854)">
- <rect
- y="40"
- x="38"
- height="7"
- width="5"
- id="rect2801"
- style="opacity:1;fill:url(#radialGradient2094);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(-1,-1)"
- y="-47"
- x="-10"
- height="7"
- width="5"
- id="rect3696"
- style="opacity:1;fill:url(#radialGradient2096);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="40"
- x="10"
- height="7.0000005"
- width="28"
- id="rect3700"
- style="opacity:1;fill:url(#linearGradient2098);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
- </g>
- </g>
- <g
- style="display:inline"
- inkscape:groupmode="layer"
- inkscape:label="Base"
- id="layer1">
- <path
- style="color:#000000;fill:url(#radialGradient15658);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient15656);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
- d="M 7.6531674,3.5156747 L 31.184222,3.4999998 C 31.184222,3.4999998 41.5,13.07421 41.5,13.712818 L 41.5,43.414218 C 41.5,44.052825 40.985687,44.566938 40.346833,44.566938 L 7.6531674,44.566938 C 7.0143129,44.566938 6.5000004,44.052825 6.5000004,43.414218 L 6.5000004,4.6683954 C 6.5000004,4.0297882 7.0143129,3.5156747 7.6531674,3.5156747 z "
- id="rect15391"
- sodipodi:nodetypes="ccccccccc" />
- <path
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient15668);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
- d="M 7.6498034,4.4999998 L 32.652226,4.4999998 C 32.652226,4.4999998 40.441938,12.538716 40.441938,12.621467 L 40.441938,43.380959 C 40.441938,43.46371 40.375127,43.53033 40.292135,43.53033 L 7.6498034,43.53033 C 7.5668121,43.53033 7.4999997,43.46371 7.4999997,43.380959 L 7.4999997,4.6493697 C 7.4999997,4.5666188 7.5668121,4.4999998 7.6498034,4.4999998 z "
- id="rect15660"
- sodipodi:nodetypes="ccccccccc" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="Text"
- style="display:inline">
- <path
- inkscape:r_cy="true"
- inkscape:r_cx="true"
- style="opacity:0.35714285;color:#000000;fill:url(#radialGradient4796);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 40.985189,13.861445 C 40.256827,12.514817 34.882221,10.130934 32.084635,9.3314083 C 32.254143,10.904354 31.961856,15.649439 31.961856,15.649439 C 34.024356,14.274439 40.204485,13.699331 40.985189,13.861445 z "
- id="path5348"
- sodipodi:nodetypes="cccc" />
- <path
- style="opacity:1;color:#000000;fill:url(#radialGradient5352);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient5350);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
- d="M 41.410559,13.739267 C 41.423724,12.305276 35.058025,3.3960606 31.175441,3.500918 C 32.148479,3.7370164 32.925796,9.7511015 31.536076,12.601062 C 34.286076,12.601062 40.446694,11.856343 41.410559,13.739267 z "
- id="path2210"
- sodipodi:nodetypes="cccc"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <path
- sodipodi:nodetypes="cccc"
- id="path2247"
- d="M 39.121563,11.586207 C 38.393201,10.239579 34.963027,6.5166576 33.040441,5.2796316 C 33.279381,6.7054805 33.577496,8.9620596 32.961856,11.524439 C 32.961856,11.524439 38.340859,11.424093 39.121563,11.586207 z "
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8166);stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <path
- style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;display:inline;opacity:0.15"
- d="M 8.518214,2.986098 L 22,2.986098 L 22,23.928002 L 16.515644,17.234797 L 10.96121,24 L 10.96121,3.9419039 C 10.96121,3.404299 9.435316,2.986098 8.518214,2.986098 z "
- id="path7273"
- sodipodi:nodetypes="ccccccc" />
- <path
- style="fill:url(#linearGradient5351);fill-opacity:1;fill-rule:evenodd;stroke:#8f5902;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
- d="M 10.018213,2.5 L 21.422873,2.5 C 22.994417,2.5 23.499999,3.0073903 23.499999,4.470952 L 23.499999,23.441904 L 18.015643,16.748699 L 12.461209,23.513902 L 12.508084,4.4558059 C 12.508084,2.8706328 10.935315,2.5 10.018213,2.5 z "
- id="path4386"
- sodipodi:nodetypes="cccccccc" />
- <path
- sodipodi:type="inkscape:offset"
- inkscape:radius="-1.03125"
- inkscape:original="M 10.03125 2.5 C 10.948352 2.5 12.5 2.883577 12.5 4.46875 L 12.46875 23.5 L 18.03125 16.75 L 23.5 23.4375 L 23.5 4.46875 C 23.5 3.0051883 23.009044 2.5 21.4375 2.5 L 10.03125 2.5 z "
- style="fill:none;fill-opacity:1.0;fill-rule:evenodd;stroke:url(#linearGradient2839);stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;opacity:0.6"
- id="path1934"
- d="M 13.25,3.53125 C 13.362221,3.8338001 13.53125,4.1151264 13.53125,4.46875 L 13.5,20.625 L 17.25,16.09375 C 17.445904,15.855316 17.738283,15.717133 18.046875,15.717133 C 18.355467,15.717133 18.647846,15.855316 18.84375,16.09375 L 22.46875,20.53125 L 22.46875,4.46875 C 22.46875,3.8522811 22.365083,3.7081684 22.34375,3.6875 C 22.322417,3.6668316 22.11277,3.53125 21.4375,3.53125 L 13.25,3.53125 z " />
- </g>
-</svg>
diff --git a/navit/icons/gui_display.svg b/navit/icons/gui_display.svg
deleted file mode 100644
index 0e89c8680..000000000
--- a/navit/icons/gui_display.svg
+++ /dev/null
@@ -1,1752 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg3304"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/devices"
- sodipodi:docname="computer.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3306">
- <linearGradient
- id="linearGradient4196">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop4198" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop4200" />
- </linearGradient>
- <linearGradient
- id="linearGradient3907">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3909" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3911" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3899">
- <stop
- style="stop-color:#eeeeec"
- offset="0"
- id="stop3901" />
- <stop
- style="stop-color:#d3d7cf"
- offset="1"
- id="stop3903" />
- </linearGradient>
- <linearGradient
- id="linearGradient5233">
- <stop
- style="stop-color:#729fcf;stop-opacity:1;"
- offset="0"
- id="stop5235" />
- <stop
- style="stop-color:#326194;stop-opacity:1;"
- offset="1"
- id="stop5237" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5225">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5227" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5229" />
- </linearGradient>
- <linearGradient
- id="linearGradient5137">
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0"
- id="stop5139" />
- <stop
- style="stop-color:#e6e6e3;stop-opacity:1;"
- offset="1"
- id="stop5141" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6240">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop6242" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop6244" />
- </linearGradient>
- <linearGradient
- id="linearGradient11400">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop11402" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop11404" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6240"
- id="linearGradient6246"
- x1="20.156862"
- y1="5.0996137"
- x2="20.156862"
- y2="26.039215"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-2.35294e-2,-3.039216)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5137"
- id="linearGradient5147"
- gradientUnits="userSpaceOnUse"
- x1="17.247635"
- y1="6.3760414"
- x2="39.904388"
- y2="38.876041"
- gradientTransform="matrix(0.999303,0,0,0.998527,3.061255e-3,-2.971316)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5233"
- id="radialGradient5239"
- cx="24.006104"
- cy="32.997028"
- fx="24.006104"
- fy="32.997028"
- r="19.00016"
- gradientTransform="matrix(1.232634,1.948681e-23,-1.1422e-23,0.778392,-5.590582,-0.847446)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5137"
- id="linearGradient2308"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.992781,-6.075869e-16,-2.718035)"
- x1="31.743324"
- y1="37.842293"
- x2="31.86105"
- y2="43.82579" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11400"
- id="linearGradient2310"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.004187,0,0,1,-0.12454,-3.011765)"
- x1="23.154902"
- y1="34.572548"
- x2="23.529411"
- y2="40.219608" />
- <linearGradient
- id="linearGradient1558"
- inkscape:collect="always">
- <stop
- id="stop1560"
- offset="0"
- style="stop-color:#babdb6" />
- <stop
- id="stop1562"
- offset="1"
- style="stop-color:#eeeeec" />
- </linearGradient>
- <linearGradient
- id="linearGradient3028"
- inkscape:collect="always">
- <stop
- id="stop3030"
- offset="0"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- id="stop3032"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3042">
- <stop
- id="stop3044"
- offset="0"
- style="stop-color:black;stop-opacity:0;" />
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0.5"
- id="stop3050" />
- <stop
- id="stop3046"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient2433"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3028"
- id="radialGradient2517"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,-0.750002,1.333334,0,-40.28573,35.00001)"
- cx="2.9999995"
- cy="33.214287"
- fx="2.9999995"
- fy="33.214287"
- r="3" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3028"
- id="radialGradient2519"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,-0.750002,1.333334,0,-88.28573,-30.49999)"
- cx="2.9999995"
- cy="33.214287"
- fx="2.9999995"
- fy="33.214287"
- r="3" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3042"
- id="linearGradient2521"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.888889,0,3.833333)"
- x1="37.03125"
- y1="35.062885"
- x2="37.03125"
- y2="29.995127" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient1558"
- id="linearGradient3320"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.833169,-48,19.08245)"
- x1="16.396038"
- y1="19.659277"
- x2="16.396038"
- y2="32.448051" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3322"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3324"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3326"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3328"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3330"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3332"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3334"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3336"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3338"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3340"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3342"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3344"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3346"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3348"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3350"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3352"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3354"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3356"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3358"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3360"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3362"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3364"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3366"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3368"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3370"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3372"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3374"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3376"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3378"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3380"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3382"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3384"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3386"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3388"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3390"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3392"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3394"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3396"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3398"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3400"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3402"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3404"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3406"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3408"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3410"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3412"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3414"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3416"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3418"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3420"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3422"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3424"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3426"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3428"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3430"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3432"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3434"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3436"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3438"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3907"
- id="radialGradient3440"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.382603,3.581398e-5,0,0.171503,-6.729684,34.0972)"
- cx="20.913568"
- cy="47.045319"
- fx="20.913568"
- fy="47.045319"
- r="19.5" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3899"
- id="linearGradient3442"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.753044,-48,12.25251)"
- x1="26.5"
- y1="43.249905"
- x2="26.5"
- y2="35.75" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5225"
- id="radialGradient4337"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.24763,0,32.1168)"
- cx="23.9375"
- cy="42.6875"
- fx="23.9375"
- fy="42.6875"
- r="23.75956" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4196"
- id="linearGradient4343"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(24,0)"
- x1="37.484837"
- y1="38.267769"
- x2="37.295498"
- y2="33.637787" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#849193"
- borderopacity="1"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="27.438293"
- inkscape:cy="9.3263876"
- inkscape:current-layer="layer2"
- showgrid="false"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:showpageshadow="false"
- showborder="false"
- inkscape:window-width="1247"
- inkscape:window-height="718"
- inkscape:window-x="23"
- inkscape:window-y="256"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:grid-points="false"
- stroke="#babdb6"
- fill="#888a85"
- gridspacingx="0.5px"
- gridspacingy="0.5px"
- gridempspacing="2"
- borderlayer="top" />
- <metadata
- id="metadata3309">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Computer</dc:title>
- <dc:creator>
- <cc:Agent>
- <dc:title>Lapo Calamandrei</dc:title>
- </cc:Agent>
- </dc:creator>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:subject>
- <rdf:Bag />
- </dc:subject>
- <dc:contributor>
- <cc:Agent>
- <dc:title>Jakub Steiner
-Luca Ferretti &lt;elle.uca@libero.it&gt;</dc:title>
- </cc:Agent>
- </dc:contributor>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- style="display:inline">
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient4337);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path1379"
- sodipodi:cx="23.9375"
- sodipodi:cy="42.6875"
- sodipodi:rx="23.75956"
- sodipodi:ry="5.8835783"
- d="M 47.69706 42.6875 A 23.75956 5.8835783 0 1 1 0.17794037,42.6875 A 23.75956 5.8835783 0 1 1 47.69706 42.6875 z"
- transform="matrix(0.968245,0,0,0.863797,1.447631,-0.747418)" />
- <g
- id="g4339"
- transform="translate(-25,0)">
- <path
- style="opacity:0.20786516;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4343);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- d="M 66.13085,41.787912 C 57.847275,31.229854 73.566661,39.498791 71.897463,35.839689 C 70.26171,32.253903 51.343195,36.513864 53.3325,30.513864"
- id="use4184"
- sodipodi:nodetypes="czz" />
- <path
- sodipodi:nodetypes="czz"
- id="path4172"
- d="M 65.675044,41.213388 C 57.656634,30.125 72.913568,39.404152 71.161327,35 C 69.172021,30 52.551603,36.027728 53.480248,30.116116"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#729fcf;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
- </g>
- <g
- id="g2302"
- transform="matrix(0.811017,0,0,0.811017,4.536063,4.144784)">
- <path
- style="opacity:1;color:#000000;fill:url(#linearGradient2308);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.23301888;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 14.375479,32.558794 C 14.375479,32.558794 15.592355,37.45777 10.51915,37.50376 C 8.0888743,37.525507 8.5866723,41.509781 8.5866723,41.509781 L 39.433139,41.478634 C 39.433139,41.478634 39.851577,37.611393 37.410922,37.566053 C 32.423455,37.474579 33.600393,32.496503 33.600393,32.496503 L 14.375479,32.558794 z "
- id="path1359"
- sodipodi:nodetypes="csccscc" />
- <path
- style="opacity:0.5;fill:url(#linearGradient2310);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 13.926195,33.027451 C 14.010206,35.2 13.641655,35.938894 12.285731,36.702682 L 36,38 C 35.047008,36.831372 33.660837,35.066666 34.038883,33.011765 L 13.926195,33.027451 z "
- id="path1367"
- sodipodi:nodetypes="ccccc" />
- <path
- sodipodi:nodetypes="cc"
- id="path1393"
- d="M 10.436202,38.661601 C 17.000465,38.66357 37.562637,38.661601 37.562637,38.661601"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#8d8d8f;stroke-width:1.23301923px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.43902438" />
- <path
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.23301911px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
- d="M 9.647928,39.660187 C 16.354621,39.662156 38.367789,39.660187 38.367789,39.660187"
- id="path1395"
- sodipodi:nodetypes="cc" />
- </g>
- <rect
- style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="rect4784"
- width="48"
- height="48"
- x="0"
- y="-2.84375" />
- <path
- style="fill:url(#linearGradient5147);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00000036;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
- d="M 4.8882799,0.5019965 L 42.990539,0.5019965 C 45.014246,0.5019965 46.489076,1.9275484 46.489076,4.122797 L 46.500019,29.288034 C 46.500019,30.977609 45.97204,31.5 44.466781,31.5 L 3.5326624,31.481093 C 2.3542134,31.452343 1.5154744,30.987161 1.4996519,29.464764 L 1.5148181,3.935329 C 1.5148181,2.1641154 3.0531529,0.5019965 4.8882799,0.5019965 z "
- id="rect5040"
- sodipodi:nodetypes="ccccccccc" />
- <rect
- style="fill:url(#radialGradient5239);fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="rect9208"
- width="37"
- height="23"
- x="5.5"
- y="4.5" />
- <path
- style="opacity:0.75;fill:url(#linearGradient6246);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 6,4.9921565 L 6,23 C 22.444445,21.645751 28.598693,12.887581 41.968627,11.972548 L 41.968628,4.960784 L 6,4.9921565 z "
- id="path4073"
- sodipodi:nodetypes="ccccc" />
- <rect
- y="-2.84375"
- x="0"
- height="48"
- width="48"
- id="rect1355"
- style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <rect
- style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="rect1377"
- width="48"
- height="48"
- x="0"
- y="-2.84375" />
- <path
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
- d="M 4.9838392,1.4949272 C 3.6843517,1.4949272 2.5000007,2.776446 2.5000007,4.0314374 L 2.5,29.355478 C 2.5062246,29.952637 2.6447546,30.13805 2.7794318,30.252536 C 2.9141091,30.367022 3.1986228,30.457361 3.6798233,30.469067 L 44.352677,30.5 C 44.999641,30.5 45.204119,30.400004 45.284116,30.314402 C 45.364115,30.228799 45.501452,29.917765 45.501452,29.169879 L 45.501453,4.2170357 C 45.501453,2.4282144 44.497201,1.4949272 42.893423,1.4949272 L 4.9838392,1.4949272 z "
- id="path1387"
- sodipodi:nodetypes="cccsccscccc" />
- <g
- style="opacity:0.4"
- id="g3052"
- transform="translate(0,13)">
- <rect
- style="opacity:1;fill:url(#radialGradient2517);fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3026"
- width="4"
- height="4.5"
- x="0"
- y="30.5" />
- <rect
- style="opacity:1;fill:url(#radialGradient2519);fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- id="rect3036"
- width="4"
- height="4.5"
- x="-48"
- y="-35"
- transform="scale(-1,-1)" />
- <rect
- style="opacity:1;fill:url(#linearGradient2521);fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3040"
- width="40"
- height="4.5"
- x="4"
- y="30.5" />
- </g>
- <g
- id="g3316"
- transform="translate(48,0)">
- <path
- style="fill:url(#linearGradient3442);fill-opacity:1;stroke:#888a85;stroke-width:1.00000417;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
- d="M -42.6875,40.49166 C -43.655386,40.49166 -44.535263,40.777008 -45.125,41.738889 L -46.9375,44.656935 C -47.746153,45.711656 -47.093885,46.516012 -44.34375,46.516012 L -3.90625,46.516012 C -1.156115,46.516012 -0.503847,45.711656 -1.3125,44.656935 L -3.125,41.738889 C -3.714737,40.777008 -4.594614,40.49166 -5.5625,40.49166 L -42.6875,40.49166 z "
- id="rect2024"
- sodipodi:nodetypes="ccccccccc" />
- <path
- transform="matrix(1,0,0,0.666668,-48,15.83327)"
- sodipodi:type="inkscape:offset"
- inkscape:radius="-1"
- inkscape:original="M 5.3125 37.5 C 4.344614 37.5 3.4647369 37.878926 2.875 39.15625 L 1.0625 43.03125 C 0.253847 44.43186 0.90611493 45.5 3.65625 45.5 L 44.09375 45.5 C 46.843885 45.5 47.496153 44.43186 46.6875 43.03125 L 44.875 39.15625 C 44.285263 37.878926 43.405386 37.5 42.4375 37.5 L 5.3125 37.5 z "
- style="fill:none;fill-opacity:0.46875;stroke:white;stroke-width:1.22474873;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;display:inline"
- id="path2920"
- d="M 5.3125,38.5 C 4.6056131,38.5 4.2438621,38.560518 3.78125,39.5625 C 3.7814128,39.572916 3.7814128,39.583334 3.78125,39.59375 L 1.96875,43.46875 C 1.9590645,43.489941 1.9486415,43.510787 1.9375,43.53125 C 1.7919626,43.783325 1.7523439,43.95868 1.75,44.03125 C 1.7476561,44.10382 1.7146856,44.086521 1.75,44.125 C 1.8206288,44.201958 2.4106476,44.5 3.65625,44.5 L 44.09375,44.5 C 45.339352,44.5 45.929371,44.201958 46,44.125 C 46.035314,44.086521 46.002344,44.10382 46,44.03125 C 45.997656,43.95868 45.958037,43.783325 45.8125,43.53125 C 45.801358,43.510787 45.790935,43.489941 45.78125,43.46875 L 43.96875,39.59375 C 43.968587,39.583334 43.968587,39.572916 43.96875,39.5625 C 43.506138,38.560518 43.144387,38.5 42.4375,38.5 L 5.3125,38.5 z " />
- </g>
- <g
- transform="translate(-102,13.18088)"
- inkscape:label="Shadow"
- id="g2299" />
- <g
- id="g2301"
- inkscape:label="Shadow"
- transform="translate(-102,28.24691)" />
- <g
- id="g2303"
- inkscape:label="Lavoro"
- style="display:inline"
- transform="translate(-102,28.24691)" />
- <g
- id="g3252"
- transform="translate(48,0)">
- <path
- style="color:black;fill:url(#linearGradient3320);fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:0.99999923;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M -41.565234,39.500963 C -41.56828,39.504039 -41.562458,39.524556 -41.565234,39.526968 C -41.579903,39.531053 -41.615454,39.547177 -41.630468,39.552976 C -41.635478,39.555099 -41.658085,39.550659 -41.663085,39.552976 C -41.668058,39.555484 -41.690771,39.576279 -41.695701,39.578981 C -41.705443,39.584774 -41.718912,39.598413 -41.728318,39.604986 C -41.732914,39.608469 -41.756464,39.627314 -41.760935,39.630993 C -41.765266,39.634868 -41.789378,39.652925 -41.793552,39.656999 C -41.858423,39.732002 -41.926738,39.862395 -42.021871,40.02108 L -44.249421,43.973975 C -44.249421,43.978919 -44.249649,43.995024 -44.249421,43.999979 C -44.248968,44.004941 -44.250095,44.021024 -44.249421,44.025984 C -44.24853,44.030944 -44.250526,44.047041 -44.249421,44.051992 C -44.246792,44.061863 -44.220251,44.094213 -44.216804,44.104002 C -44.214881,44.10887 -44.218922,44.125172 -44.216804,44.13001 C -44.209875,44.144401 -44.192776,44.16805 -44.184187,44.182019 C -44.175067,44.195821 -44.162219,44.220827 -44.15157,44.234032 C -44.147858,44.238357 -44.122824,44.255791 -44.118953,44.260037 C -44.114927,44.264198 -44.090514,44.281974 -44.086336,44.286045 C -44.060382,44.309896 -44.019306,44.344229 -43.988486,44.36406 C -43.983227,44.367239 -43.961247,44.387022 -43.955869,44.390067 C -43.939371,44.397973 -43.908512,44.408905 -43.890635,44.416072 C -43.770407,44.46009 -43.611352,44.49409 -43.466615,44.49409 L -20.351972,44.49409 L -20.449823,39.500969 L -41.239065,39.500963 C -41.307579,39.500963 -41.382827,39.499026 -41.434766,39.500963 C -41.446919,39.50102 -41.486797,39.501474 -41.5,39.500963 C -41.504027,39.500988 -41.528959,39.500749 -41.532617,39.500963 C -41.535441,39.50334 -41.562188,39.497888 -41.565234,39.500963 z M -18.525425,39.500969 L -18.427575,41.165344 L -12.784849,41.165344 L -13.045784,39.500969 L -18.525425,39.500969 z M -11.08877,39.500969 L -9.91456,44.49409 L -4.695855,44.49409 C -4.551119,44.49409 -4.392063,44.46009 -4.271835,44.416072 C -4.253958,44.408905 -4.2231,44.397973 -4.206602,44.390067 C -4.201225,44.387022 -4.179245,44.367239 -4.173985,44.36406 C -4.143164,44.344229 -4.102088,44.309896 -4.076134,44.286045 C -4.071956,44.281974 -4.047542,44.264198 -4.043518,44.260037 C -4.039646,44.255791 -4.014612,44.238357 -4.0109,44.234032 C -4.000252,44.220827 -3.987404,44.195821 -3.978283,44.182019 C -3.969694,44.16805 -3.952595,44.144401 -3.945666,44.13001 C -3.943549,44.125172 -3.947589,44.10887 -3.945666,44.104002 C -3.942219,44.094213 -3.915679,44.061863 -3.913049,44.051992 C -3.911945,44.047041 -3.913941,44.030944 -3.913049,44.025984 C -3.912376,44.021024 -3.913503,44.004941 -3.913049,43.999979 C -3.91282,43.995024 -3.913049,43.978919 -3.913049,43.973975 L -5.739064,40.02108 C -5.834197,39.862396 -5.902512,39.732002 -5.967383,39.656999 C -5.971557,39.652925 -5.99567,39.634868 -6,39.630993 C -6.004471,39.627314 -6.028021,39.608469 -6.032617,39.604986 C -6.042024,39.598413 -6.055493,39.584774 -6.065234,39.578981 C -6.070163,39.576279 -6.092877,39.555484 -6.09785,39.552976 C -6.102851,39.550659 -6.125458,39.555099 -6.130467,39.552976 C -6.145481,39.547177 -6.181031,39.531053 -6.195701,39.526968 C -6.211818,39.523869 -6.237268,39.506412 -6.260936,39.500963 C -6.272811,39.498467 -6.315289,39.502376 -6.326169,39.500963 C -6.378109,39.499026 -6.453356,39.500963 -6.52187,39.500963 L -11.08877,39.500969 z M -17.220748,42.829716 L -18.264489,44.49409 L -12.262978,44.49409 L -13.567655,42.829716 L -17.220748,42.829716 z "
- id="path2308"
- sodipodi:nodetypes="csssssssccssssssssssssccccssscccccccccssssssssssssccsssssssssccccccc" />
- <g
- id="g2310"
- style="fill:url(#radialGradient2433);fill-opacity:1"
- transform="translate(-48,-5.89e-3)">
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="7"
- height="1"
- width="1"
- id="rect2312"
- style="opacity:1;color:black;fill:url(#radialGradient3322);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="9"
- height="1"
- width="1"
- id="rect2314"
- style="opacity:1;color:black;fill:url(#radialGradient3324);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="11"
- height="1"
- width="1"
- id="rect2316"
- style="opacity:1;color:black;fill:url(#radialGradient3326);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="13"
- height="1"
- width="1"
- id="rect2318"
- style="opacity:1;color:black;fill:url(#radialGradient3328);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="15"
- height="1"
- width="1"
- id="rect2320"
- style="opacity:1;color:black;fill:url(#radialGradient3330);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="17"
- height="1"
- width="1"
- id="rect2322"
- style="opacity:1;color:black;fill:url(#radialGradient3332);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="19"
- height="1"
- width="1"
- id="rect2324"
- style="opacity:1;color:black;fill:url(#radialGradient3334);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="21"
- height="1"
- width="1"
- id="rect2326"
- style="opacity:1;color:black;fill:url(#radialGradient3336);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="6"
- height="1"
- width="1"
- id="rect2328"
- style="opacity:1;color:black;fill:url(#radialGradient3338);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="8"
- height="1"
- width="1"
- id="rect2330"
- style="opacity:1;color:black;fill:url(#radialGradient3340);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="10"
- height="1"
- width="1"
- id="rect2332"
- style="opacity:1;color:black;fill:url(#radialGradient3342);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="12"
- height="1"
- width="1"
- id="rect2334"
- style="opacity:1;color:black;fill:url(#radialGradient3344);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="14"
- height="1"
- width="1"
- id="rect2336"
- style="opacity:1;color:black;fill:url(#radialGradient3346);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="16"
- height="1"
- width="1"
- id="rect2338"
- style="opacity:1;color:black;fill:url(#radialGradient3348);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="18"
- height="1"
- width="1"
- id="rect2341"
- style="opacity:1;color:black;fill:url(#radialGradient3350);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="20"
- height="1"
- width="1"
- id="rect2343"
- style="opacity:1;color:black;fill:url(#radialGradient3352);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="7"
- height="1"
- width="1"
- id="rect2345"
- style="opacity:1;color:black;fill:url(#radialGradient3354);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="9"
- height="1"
- width="1"
- id="rect2347"
- style="opacity:1;color:black;fill:url(#radialGradient3356);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="11"
- height="1"
- width="1"
- id="rect2349"
- style="opacity:1;color:black;fill:url(#radialGradient3358);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="13"
- height="1"
- width="1"
- id="rect2351"
- style="opacity:1;color:black;fill:url(#radialGradient3360);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="15"
- height="1"
- width="1"
- id="rect2353"
- style="opacity:1;color:black;fill:url(#radialGradient3362);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="17"
- height="1"
- width="1"
- id="rect2355"
- style="opacity:1;color:black;fill:url(#radialGradient3364);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="19"
- height="1"
- width="1"
- id="rect2357"
- style="opacity:1;color:black;fill:url(#radialGradient3366);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="21"
- height="1"
- width="1"
- id="rect2359"
- style="opacity:1;color:black;fill:url(#radialGradient3368);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="6"
- height="1"
- width="1"
- id="rect2361"
- style="opacity:1;color:black;fill:url(#radialGradient3370);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="8"
- height="1"
- width="1"
- id="rect2363"
- style="opacity:1;color:black;fill:url(#radialGradient3372);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="10"
- height="1"
- width="1"
- id="rect2365"
- style="opacity:1;color:black;fill:url(#radialGradient3374);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="12"
- height="1"
- width="1"
- id="rect2367"
- style="opacity:1;color:black;fill:url(#radialGradient3376);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="14"
- height="1"
- width="1"
- id="rect2369"
- style="opacity:1;color:black;fill:url(#radialGradient3378);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="16"
- height="1"
- width="1"
- id="rect2371"
- style="opacity:1;color:black;fill:url(#radialGradient3380);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="18"
- height="1"
- width="1"
- id="rect2373"
- style="opacity:1;color:black;fill:url(#radialGradient3382);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="20"
- height="1"
- width="1"
- id="rect2375"
- style="opacity:1;color:black;fill:url(#radialGradient3384);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="43"
- x="5"
- height="1"
- width="1"
- id="rect2377"
- style="opacity:1;color:black;fill:url(#radialGradient3386);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="43"
- x="7"
- height="1"
- width="1"
- id="rect2379"
- style="opacity:1;color:black;fill:url(#radialGradient3388);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="22"
- height="1"
- width="1"
- id="rect2381"
- style="opacity:1;color:black;fill:url(#radialGradient3390);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="23"
- height="1"
- width="1"
- id="rect2383"
- style="opacity:1;color:black;fill:url(#radialGradient3392);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="22"
- height="1"
- width="1"
- id="rect2385"
- style="opacity:1;color:black;fill:url(#radialGradient3394);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="23"
- height="1"
- width="1"
- id="rect2387"
- style="opacity:1;color:black;fill:url(#radialGradient3396);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="24"
- height="1"
- width="1"
- id="rect2389"
- style="opacity:1;color:black;fill:url(#radialGradient3398);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="25"
- height="1"
- width="1"
- id="rect2391"
- style="opacity:1;color:black;fill:url(#radialGradient3400);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="26"
- height="1"
- width="1"
- id="rect2393"
- style="opacity:1;color:black;fill:url(#radialGradient3402);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="25"
- height="1"
- width="1"
- id="rect2395"
- style="opacity:1;color:black;fill:url(#radialGradient3404);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="24"
- height="1"
- width="1"
- id="rect2397"
- style="opacity:1;color:black;fill:url(#radialGradient3406);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="26"
- height="1"
- width="1"
- id="rect2399"
- style="opacity:1;color:black;fill:url(#radialGradient3408);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="43"
- x="25"
- height="1"
- width="1"
- id="rect2401"
- style="opacity:1;color:black;fill:url(#radialGradient3410);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="43"
- x="23"
- height="1"
- width="1"
- id="rect2403"
- style="opacity:1;color:black;fill:url(#radialGradient3412);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="43"
- x="31"
- height="1"
- width="1"
- id="rect2405"
- style="opacity:1;color:black;fill:url(#radialGradient3414);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="43"
- x="33"
- height="1"
- width="1"
- id="rect2407"
- style="opacity:1;color:black;fill:url(#radialGradient3416);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="31"
- height="1"
- width="1"
- id="rect2409"
- style="opacity:1;color:black;fill:url(#radialGradient3418);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="33"
- height="1"
- width="1"
- id="rect2411"
- style="opacity:1;color:black;fill:url(#radialGradient3420);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="37"
- height="1"
- width="1"
- id="rect2413"
- style="opacity:1;color:black;fill:url(#radialGradient3422);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="38"
- height="1"
- width="1"
- id="rect2415"
- style="opacity:1;color:black;fill:url(#radialGradient3424);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="39"
- x="39"
- height="1"
- width="1"
- id="rect2417"
- style="opacity:1;color:black;fill:url(#radialGradient3426);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="41"
- height="1"
- width="1"
- id="rect2419"
- style="opacity:1;color:black;fill:url(#radialGradient3428);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="41"
- x="39"
- height="1"
- width="1"
- id="rect2421"
- style="opacity:1;color:black;fill:url(#radialGradient3430);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="38"
- height="1"
- width="1"
- id="rect2423"
- style="opacity:1;color:black;fill:url(#radialGradient3432);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="42"
- x="40"
- height="1"
- width="1"
- id="rect2425"
- style="opacity:1;color:black;fill:url(#radialGradient3434);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="43"
- x="41"
- height="1"
- width="1"
- id="rect2427"
- style="opacity:1;color:black;fill:url(#radialGradient3436);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="40"
- x="40"
- height="1"
- width="1"
- id="rect2429"
- style="opacity:1;color:black;fill:url(#radialGradient3438);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- ry="0.26516503"
- rx="0.26516503"
- y="43"
- x="43"
- height="1"
- width="1"
- id="rect2431"
- style="opacity:1;color:black;fill:url(#radialGradient3440);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- </g>
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="tastiera"
- style="display:inline">
- <g
- id="g3270"
- inkscape:label="Shadow"
- transform="translate(-54,0.18088)" />
- <g
- transform="translate(-54,15.24691)"
- inkscape:label="Shadow"
- id="g2611" />
- <g
- transform="translate(-54,15.24691)"
- style="display:inline"
- inkscape:label="Lavoro"
- id="g2613" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="tasti"
- style="display:inline" />
-</svg>
diff --git a/navit/icons/gui_formerdests.svg b/navit/icons/gui_formerdests.svg
deleted file mode 100644
index 8f453761b..000000000
--- a/navit/icons/gui_formerdests.svg
+++ /dev/null
@@ -1,252 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="gui_formerdests.svg">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 120.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="241 : 120.5 : 1"
- inkscape:persp3d-origin="120.5 : 80.333333 : 1"
- id="perspective41" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#000000"
- pageopacity="0"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.90980392"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="22.319591"
- inkscape:cy="20.608921"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="10"
- fit-margin-left="10"
- fit-margin-right="10"
- fit-margin-bottom="0"
- inkscape:window-width="1280"
- inkscape:window-height="949"
- inkscape:window-x="0"
- inkscape:window-y="25"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-390.90711,-270.03609)">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.21482432px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 397.29009,271.43345 0.36721,45.65233 2.63518,0.0731 -0.3507,-22.68549 30.33305,8.40318 -0.39894,-22.69947 z"
- id="path3990"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 424.93565,285.65819 -2.74412,-0.76275 -0.10862,-1.41229 c -0.0598,-0.77677 -0.10863,-1.86669 -0.10863,-2.42205 0,-1.19371 -0.3617,-1.17622 3.28619,-0.1589 l 2.45811,0.68551 0.10832,0.82446 c 0.15013,1.1426 0.13615,4.03934 -0.0194,4.02255 -0.0703,-0.008 -1.36259,-0.35702 -2.87185,-0.77653 z"
- id="path3929-6"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 412.50282,282.54205 -2.74412,-0.76275 -0.10862,-1.4123 c -0.0598,-0.77677 -0.10863,-1.86669 -0.10863,-2.42204 0,-1.19371 -0.3617,-1.17622 3.28619,-0.15891 l 2.45811,0.68552 0.10832,0.82445 c 0.15013,1.14261 0.13615,4.03934 -0.0194,4.02256 -0.0703,-0.008 -1.36259,-0.35702 -2.87185,-0.77653 z"
- id="path3929-5"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1.50377023;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 399.03374,316.75387 -0.46829,-43.71146 29.89801,8.05177 0.5387,20.26826 -30.43671,-8.60705"
- id="path2996"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.21482432px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 409.58985,275.54621 0.51094,20.59365"
- id="path3766"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.21482432px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 421.76721,279.54301 0.51094,20.59364"
- id="path3766-0"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.21482432px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 415.46564,277.03654 0.51094,20.59365"
- id="path3766-6"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.21482432px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 403.88437,274.32685 0.51094,20.59365"
- id="path3766-1"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.21482432px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 398.51952,283.26883 29.63442,8.12907"
- id="path3807"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.21482432px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 399.20077,288.41724 29.63442,8.12907"
- id="path3807-5"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.21482432px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 399.20077,278.93332 29.63442,8.12907"
- id="path3807-54"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 401.62043,284.03259 c -1.25849,-0.35057 -2.30876,-0.64449 -2.33394,-0.65316 -0.0252,-0.009 -0.0387,-0.98802 -0.0301,-2.17632 l 0.0157,-2.16056 2.31827,0.63483 2.31826,0.63482 0.0402,1.16664 c 0.0784,2.27679 0.0845,3.20264 0.021,3.19679 -0.0337,-0.003 -1.09087,-0.29248 -2.34935,-0.64304 z"
- id="path3840"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 406.92379,280.96649 c -1.45473,-0.39994 -2.67827,-0.74622 -2.71897,-0.76951 -0.0555,-0.0318 -0.09,-0.6815 -0.13788,-2.60272 -0.0351,-1.4082 -0.0566,-2.56618 -0.0476,-2.57328 0.0293,-0.0233 5.36728,1.42672 5.42902,1.47478 0.064,0.0498 0.21537,5.12216 0.15433,5.17085 -0.0186,0.0149 -1.22413,-0.30018 -2.67887,-0.70012 l 0,0 z"
- id="path3842"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 412.74502,287.08807 c -1.49863,-0.414 -2.73647,-0.76202 -2.75076,-0.77339 -0.0298,-0.0237 -0.15389,-4.32241 -0.12546,-4.34524 0.0103,-0.008 1.27471,0.32902 2.80984,0.74949 l 2.79116,0.7645 0.0383,0.25643 c 0.0211,0.14104 0.0565,1.12404 0.0786,2.18444 0.0329,1.57249 0.0258,1.92696 -0.0383,1.92226 -0.0433,-0.003 -1.3048,-0.34449 -2.80343,-0.75849 l 0,0 z"
- id="path3844"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 407.13321,290.50516 c -1.47203,-0.40513 -2.69548,-0.75281 -2.71878,-0.77262 -0.0349,-0.0297 -0.18683,-4.75975 -0.15376,-4.78668 0.006,-0.005 1.24301,0.32946 2.74955,0.74247 l 2.73919,0.75091 0.0376,1.34123 c 0.0534,1.90662 0.0738,3.42448 0.0462,3.44431 -0.013,0.009 -1.22797,-0.31449 -2.69999,-0.71962 l 0,0 z"
- id="path3846"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 401.77096,293.16804 c -1.27504,-0.36487 -2.33959,-0.67038 -2.36566,-0.67893 -0.0261,-0.009 -0.0643,-0.89365 -0.085,-1.9669 -0.0303,-1.57281 -0.0226,-1.95137 0.0398,-1.95137 0.0715,0 4.7572,1.27521 4.79249,1.30428 0.009,0.007 0.0357,0.90215 0.06,1.98891 0.0374,1.6736 0.0314,1.97526 -0.0396,1.97165 -0.0461,-0.002 -1.12699,-0.30278 -2.40204,-0.66764 z"
- id="path3848"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 413.03111,296.35266 c -1.50688,-0.4308 -2.76055,-0.78991 -2.78594,-0.79801 -0.0389,-0.0124 -0.18423,-4.01429 -0.1469,-4.04398 0.007,-0.006 1.27691,0.33612 2.82204,0.75929 l 2.80932,0.7694 0.0339,0.57992 c 0.0642,1.09828 0.10193,3.52583 0.0547,3.52125 -0.026,-0.003 -1.28023,-0.35706 -2.7871,-0.78787 z"
- id="path3850"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 425.345,299.83999 c -1.62278,-0.46152 -2.95915,-0.845 -2.96971,-0.85219 -0.0297,-0.0202 -0.13907,-4.10385 -0.11052,-4.12656 0.0189,-0.015 4.21054,1.1167 5.79988,1.56594 0.18863,0.0533 0.191,0.058 0.22448,0.44579 0.0626,0.72502 0.10934,3.81687 0.0576,3.81147 -0.0282,-0.003 -1.37895,-0.38294 -3.00174,-0.84445 z"
- id="path3852"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 418.93214,293.74469 -2.92041,-0.80517 -0.0369,-0.32818 c -0.0636,-0.56469 -0.12685,-4.47161 -0.0724,-4.47161 0.15992,0 5.9432,1.62584 5.98113,1.68146 0.0251,0.0368 0.0653,1.11775 0.0894,2.4021 0.0367,1.95759 0.0305,2.33448 -0.0383,2.33087 -0.0451,-0.002 -1.39626,-0.36663 -3.00249,-0.80947 z"
- id="path3854"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 425.09551,290.47528 -2.95915,-0.81649 -0.0352,-1.05891 c -0.10825,-3.25302 -0.10852,-3.28636 -0.0266,-3.28518 0.0435,6e-4 1.39327,0.36217 2.9995,0.80343 l 2.92041,0.80229 0.0377,0.57373 c 0.0681,1.03609 0.11941,3.80715 0.0704,3.80233 -0.0263,-0.003 -1.37954,-0.37214 -3.00707,-0.8212 l 0,0 z"
- id="path3856"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 418.7137,284.20203 -2.95821,-0.81543 -0.0367,-0.65317 c -0.0202,-0.35925 -0.0543,-1.54278 -0.0758,-2.63006 l -0.0391,-1.97688 2.97383,0.79741 c 1.63561,0.43857 3.00013,0.81667 3.03227,0.84021 0.0816,0.0598 0.20257,5.26362 0.1222,5.25775 -0.0331,-0.002 -1.39141,-0.37134 -3.01842,-0.81983 z"
- id="path3858"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 401.56161,279.5226 -2.04375,-0.58487 -0.0464,-2.45474 c -0.0255,-1.35011 0.0127,-2.45474 0.0849,-2.45474 0.0722,0 1.07029,0.24892 2.21791,0.55316 l 2.08658,0.55316 0.0294,2.39363 c 0.0207,1.68324 0.0625,2.13227 0.14092,1.51298 l 0.11152,-0.88065 0.0294,0.98226 c 0.0257,0.85702 -0.009,0.98114 -0.26865,0.97347 -0.16392,-0.005 -1.21773,-0.27198 -2.3418,-0.59366 z"
- id="path3913"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 406.84131,285.49171 -2.55469,-0.71585 -0.0852,-2.19015 c -0.0468,-1.20459 -0.0468,-2.19108 0,-2.19222 0.16597,-0.004 5.19622,1.40012 5.30102,1.47972 0.0586,0.0445 0.15745,1.04113 0.21976,2.21476 0.0903,1.70064 0.0687,2.13243 -0.10648,2.12674 -0.12087,-0.004 -1.36937,-0.32929 -2.77445,-0.723 z"
- id="path3915"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 401.81708,289.06756 -2.29922,-0.64361 -0.0465,-2.38815 c -0.0256,-1.31348 0.0154,-2.38815 0.0911,-2.38815 0.0757,0 1.09295,0.26765 2.26057,0.59478 l 2.12295,0.59479 0.13083,1.40361 c 0.072,0.77199 0.11027,1.86862 0.0852,2.43697 l -0.0457,1.03336 -2.29922,-0.6436 z"
- id="path3917"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 407.09678,294.5038 -2.63985,-0.76498 -0.0472,-1.92501 -0.0472,-1.92502 2.66518,0.74291 c 1.46584,0.40861 2.73251,0.77602 2.8148,0.81648 0.18145,0.0892 0.20295,3.85752 0.0219,3.83587 -0.0703,-0.008 -1.31567,-0.35952 -2.76758,-0.78025 z"
- id="path3919"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 412.95586,292.12914 c -1.41427,-0.39459 -2.65968,-0.76085 -2.76758,-0.8139 -0.13598,-0.0668 -0.19619,-0.82608 -0.19619,-2.47393 0,-2.2096 0.0211,-2.37087 0.29805,-2.28388 0.16393,0.0515 1.4285,0.40022 2.81016,0.77497 l 2.51211,0.68137 0.0315,0.76373 0.0315,0.76373 0.0625,-0.7113 c 0.0344,-0.39121 0.11807,-0.71129 0.18593,-0.71129 0.0678,0 0.0693,0.4725 0.003,1.05 -0.0661,0.57751 -0.12561,1.64445 -0.13228,2.37098 -0.007,0.72654 -0.0696,1.31782 -0.13985,1.31397 -0.0702,-0.004 -1.28486,-0.32986 -2.69913,-0.72445 l 0,0 z"
- id="path3921"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 419.95539,298.13973 c -1.03039,-0.29316 -2.3716,-0.68567 -2.98047,-0.87226 l -1.10704,-0.33926 0.0566,-1.86429 c 0.0311,-1.02535 0.078,-1.88136 0.10427,-1.90223 0.0417,-0.0332 4.96128,1.2733 5.75753,1.52898 0.26448,0.0849 0.29805,0.31534 0.29805,2.04573 0,1.07252 -0.0575,1.94695 -0.12773,1.94318 -0.0703,-0.004 -0.97079,-0.2467 -2.00118,-0.53985 z"
- id="path3927"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 425.04567,295.4574 -2.74412,-0.76275 -0.10862,-1.4123 c -0.0597,-0.77676 -0.10863,-1.86668 -0.10863,-2.42204 0,-1.19371 -0.36171,-1.17622 3.28619,-0.1589 l 2.45811,0.68551 0.10832,0.82445 c 0.15013,1.14261 0.13615,4.03934 -0.0194,4.02256 -0.0702,-0.008 -1.36258,-0.35702 -2.87184,-0.77653 z"
- id="path3929"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 418.80439,289.0453 -2.74411,-0.76274 -0.10863,-1.4123 c -0.0597,-0.77676 -0.10862,-1.86669 -0.10862,-2.42204 0,-1.19371 -0.36171,-1.17622 3.28618,-0.15891 l 2.45811,0.68552 0.10833,0.82445 c 0.15012,1.14261 0.13614,4.03934 -0.0194,4.02256 -0.0703,-0.008 -1.36259,-0.35702 -2.87185,-0.77654 z"
- id="path3929-7"
- inkscape:connector-curvature="0" />
- <g
- id="g3980"
- transform="matrix(0.20532931,0,0,0.20468508,319.18466,229.75822)">
- <path
- transform="translate(223.6217,162.34266)"
- d="m 338.70415,94.651726 c 0,29.289324 -23.74369,53.033004 -53.03301,53.033004 -29.28932,0 -53.03301,-23.74368 -53.03301,-53.033004 0,-29.289322 23.74369,-53.033009 53.03301,-53.033009 29.28932,0 53.03301,23.743687 53.03301,53.033009 z"
- sodipodi:ry="53.033009"
- sodipodi:rx="53.033009"
- sodipodi:cy="94.651726"
- sodipodi:cx="285.67114"
- id="path3931"
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:type="arc" />
- <path
- transform="translate(13.435028,131.52186)"
- d="m 544.47222,125.34519 c 0,26.94618 -21.84419,48.79037 -48.79037,48.79037 -26.94617,0 -48.79036,-21.84419 -48.79036,-48.79037 0,-26.946174 21.84419,-48.790365 48.79036,-48.790365 26.94618,0 48.79037,21.844191 48.79037,48.790365 z"
- sodipodi:ry="48.790367"
- sodipodi:rx="48.790367"
- sodipodi:cy="125.34519"
- sodipodi:cx="495.68185"
- id="path3860"
- style="fill:#9e9e9e;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- sodipodi:type="arc" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3862"
- d="m 501.69225,263.23101 31.81981,-37.1231"
- style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3866"
- d="m 504.16712,259.34193 20.85965,10.25304"
- style="fill:none;stroke:#000000;stroke-width:9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_fullscreen.svg b/navit/icons/gui_fullscreen.svg
deleted file mode 100644
index 1c025cc5a..000000000
--- a/navit/icons/gui_fullscreen.svg
+++ /dev/null
@@ -1,261 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- x="0.0000000"
- y="0.0000000"
- width="48"
- height="48"
- id="svg11300"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- sodipodi:docname="view-fullscreen.svg"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/actions"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <metadata
- id="metadata66">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>View Fullscreen</dc:title>
- <dc:contributor>
- <cc:Agent>
- <dc:title />
- </cc:Agent>
- </dc:contributor>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:source>http://jimmac.musichall.cz</dc:source>
- <dc:creator>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>window</rdf:li>
- <rdf:li>maximize</rdf:li>
- <rdf:li>fullscreen</rdf:li>
- <rdf:li>view</rdf:li>
- </rdf:Bag>
- </dc:subject>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- inkscape:window-height="889"
- inkscape:window-width="924"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="0.31764706"
- bordercolor="#666"
- pagecolor="#ffffff"
- id="base"
- inkscape:zoom="8"
- inkscape:cx="28.306834"
- inkscape:cy="19.389137"
- inkscape:window-x="2702"
- inkscape:window-y="227"
- inkscape:current-layer="svg11300"
- showgrid="false"
- inkscape:showpageshadow="false" />
- <defs
- id="defs3">
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient5031"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5060">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5062" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5064" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient5029"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- id="linearGradient5048">
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="0"
- id="stop5050" />
- <stop
- id="stop5056"
- offset="0.5"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5052" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5048"
- id="linearGradient5027"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
- x1="302.85715"
- y1="366.64789"
- x2="302.85715"
- y2="609.50507" />
- <linearGradient
- id="linearGradient4816">
- <stop
- style="stop-color:#204a87;stop-opacity:1.0000000"
- offset="0.0000000"
- id="stop4818" />
- <stop
- style="stop-color:#204a87;stop-opacity:0.0000000"
- offset="1.0000000"
- id="stop4820" />
- </linearGradient>
- <linearGradient
- id="linearGradient3832">
- <stop
- style="stop-color:#ffffff;stop-opacity:1.0000000"
- offset="0.0000000"
- id="stop3834" />
- <stop
- style="stop-color:#e0e0e0;stop-opacity:1.0000000"
- offset="1.0000000"
- id="stop3836" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4816"
- id="linearGradient2264"
- gradientUnits="userSpaceOnUse"
- x1="13.050564"
- y1="11.353518"
- x2="13.050564"
- y2="5.6173568"
- gradientTransform="matrix(1.325819,0,0,1.19936,6.909366,6.044522)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3832"
- id="linearGradient2267"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.367592,0,0,1.259127,5.978246,4.437132)"
- x1="17.880680"
- y1="11.072588"
- x2="17.880680"
- y2="21.767578" />
- </defs>
- <g
- style="display:inline;opacity:0.58730159"
- id="g5022"
- transform="matrix(1.50523e-2,0,0,1.307315e-2,37.96,33.20429)">
- <rect
- y="-150.69685"
- x="-1559.2523"
- height="478.35718"
- width="1339.6335"
- id="rect4173"
- style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- sodipodi:nodetypes="cccc"
- id="path5058"
- d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
- style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
- id="path5018"
- sodipodi:nodetypes="cccc" />
- </g>
- <rect
- width="22.000008"
- height="19.999989"
- rx="0.54073501"
- ry="0.53949153"
- x="13.5"
- y="14.5"
- style="color:black;fill:url(#linearGradient2267);fill-opacity:1;fill-rule:evenodd;stroke:#8d8d8d;stroke-width:1.00000095;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect3818" />
- <rect
- width="19"
- height="3"
- rx="0.10055112"
- ry="0.095258936"
- x="15"
- y="16"
- style="color:black;fill:url(#linearGradient2264);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect3820" />
- <rect
- width="20.000011"
- height="18.000002"
- rx="0.188051"
- ry="0.16447251"
- x="14.499997"
- y="15.499995"
- style="color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.00000143;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.47878789;visibility:visible;display:inline;overflow:visible"
- id="rect4962" />
- <path
- style="opacity:1;color:black;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 39.499995,21.222229 L 39.499995,28.77779 L 45.062494,25.00001 L 39.499995,21.222229 z "
- id="path2886"
- sodipodi:nodetypes="cccc" />
- <path
- id="path2888"
- d="M 9.4999999,21.222229 L 9.4999999,28.77779 L 3.9375009,25.00001 L 9.4999999,21.222229 z "
- style="opacity:1;color:black;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:nodetypes="cccc" />
- <path
- id="path2890"
- d="M 28.277779,38.5 L 20.722218,38.5 L 24.499998,44.062499 L 28.277779,38.5 z "
- style="opacity:1;color:black;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:nodetypes="cccc" />
- <path
- style="opacity:1;color:black;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 28.277779,10.5 L 20.722218,10.5 L 24.499998,4.9375014 L 28.277779,10.5 z "
- id="path2892"
- sodipodi:nodetypes="cccc" />
-</svg>
diff --git a/navit/icons/gui_heightprofile.svg b/navit/icons/gui_heightprofile.svg
deleted file mode 100644
index 0d80b5c12..000000000
--- a/navit/icons/gui_heightprofile.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
- <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ for Navit -->
- <defs>
- <linearGradient y2="0%" x2="100%" y1="0%" x1="0%" id="grad1">
- <stop stop-color="rgb(90,90,90)" offset="0%"/>
- <stop stop-color="rgb(175,175,175)" offset="100%"/>
- </linearGradient>
- </defs>
- <g>
- <title>Layer 1</title>
- <polygon transform="translate(0, -3)" id="svg_2" fill="url(#grad1)" points="10,165 30,165 60,80 75,120 85,120 115,20 160,180 190,180 190,190 10,190"/>
- <line id="svg_3" fill="none" stroke="gainsboro" stroke-width="6" y2="165" x2="30" y1="165" x1="10"/>
- <line id="svg_4" fill="none" stroke="gainsboro" stroke-width="6" y2="80" x2="60" y1="165" x1="30" stroke-linecap="round"/>
- <line id="svg_5" fill="none" stroke="gainsboro" stroke-width="6" y2="120" x2="75" y1="80" x1="60" stroke-linecap="round"/>
- <line id="svg_6" fill="none" stroke="gainsboro" stroke-width="6" y2="120" x2="85" y1="120" x1="75" stroke-linecap="round"/>
- <line id="svg_7" fill="none" stroke="gainsboro" stroke-width="6" y2="20" x2="115" y1="120" x1="85" stroke-linecap="round"/>
- <line id="svg_8" fill="none" stroke="gainsboro" stroke-width="6" y2="180" x2="160" y1="20" x1="115" stroke-linecap="round"/>
- <line id="svg_9" fill="none" stroke="gainsboro" stroke-width="6" y2="180" x2="190" y1="180" x1="160"/>
- </g>
-</svg>
diff --git a/navit/icons/gui_help.svg b/navit/icons/gui_help.svg
deleted file mode 100644
index 06dfed2e5..000000000
--- a/navit/icons/gui_help.svg
+++ /dev/null
@@ -1,398 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- version="1.0"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/apps"
- sodipodi:docname="help-browser.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3839">
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0"
- id="stop3841" />
- <stop
- id="stop2893"
- offset="0.5"
- style="stop-color:#eeeeec;stop-opacity:1;" />
- <stop
- id="stop2891"
- offset="0.78313255"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="1"
- id="stop3843" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3831">
- <stop
- style="stop-color:#ef2929;stop-opacity:1;"
- offset="0"
- id="stop3833" />
- <stop
- style="stop-color:#ef2929;stop-opacity:0;"
- offset="1"
- id="stop3835" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3823">
- <stop
- style="stop-color:#ef2929;stop-opacity:1;"
- offset="0"
- id="stop3825" />
- <stop
- style="stop-color:#ef2929;stop-opacity:0;"
- offset="1"
- id="stop3827" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3815">
- <stop
- style="stop-color:#ef2929;stop-opacity:1;"
- offset="0"
- id="stop3817" />
- <stop
- style="stop-color:#ef2929;stop-opacity:0;"
- offset="1"
- id="stop3819" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3807">
- <stop
- style="stop-color:#ef2929;stop-opacity:1;"
- offset="0"
- id="stop3809" />
- <stop
- style="stop-color:#ef2929;stop-opacity:0;"
- offset="1"
- id="stop3811" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3783">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop3785" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop3787" />
- </linearGradient>
- <linearGradient
- id="linearGradient3743">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop3745" />
- <stop
- style="stop-color:white;stop-opacity:0.3392857;"
- offset="1"
- id="stop3747" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3735">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop3737" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop3739" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3783"
- id="radialGradient1950"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.625,0,6.375)"
- cx="8"
- cy="17"
- fx="8"
- fy="17"
- r="8" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3823"
- id="linearGradient1973"
- gradientUnits="userSpaceOnUse"
- x1="15.821683"
- y1="15.989761"
- x2="14.372151"
- y2="14.54023"
- gradientTransform="matrix(2,0,0,2.073159,2,0.390502)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3815"
- id="linearGradient1976"
- gradientUnits="userSpaceOnUse"
- x1="15.291184"
- y1="6.4436507"
- x2="17.416643"
- y2="4.3181915"
- gradientTransform="matrix(2,0,0,2.073159,2,0.390502)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3831"
- id="linearGradient1979"
- gradientUnits="userSpaceOnUse"
- x1="6.4302521"
- y1="15.967495"
- x2="8.122447"
- y2="14.2753"
- gradientTransform="matrix(2,0,0,2.073159,2,0.390502)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3807"
- id="linearGradient1982"
- gradientUnits="userSpaceOnUse"
- x1="6.055223"
- y1="6.3116894"
- x2="4.4831853"
- y2="4.7396517"
- gradientTransform="matrix(2,0,0,2.073159,2,0.390502)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3743"
- id="radialGradient1997"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.723968,0,0,2.633434,-13.5604,-4.83122)"
- cx="7.5927024"
- cy="3.1548533"
- fx="7.5927024"
- fy="3.1548533"
- r="8.4622421" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3735"
- id="radialGradient1999"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.21022,0,0,2.138888,-12.1022,-18.82138)"
- cx="10.863756"
- cy="16.148972"
- fx="10.863756"
- fy="16.148972"
- r="8.7143736" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3839"
- id="radialGradient2889"
- cx="24"
- cy="22.136841"
- fx="24"
- fy="22.136841"
- r="19.5"
- gradientTransform="matrix(1,0,0,1.035642,0,-0.826715)"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#afafaf"
- borderopacity="1"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="37.814217"
- inkscape:cy="7.9212512"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="48px"
- height="48px"
- gridspacingx="0.5px"
- gridspacingy="0.5px"
- inkscape:showpageshadow="false"
- borderlayer="true"
- gridempspacing="2"
- inkscape:window-width="1051"
- inkscape:window-height="797"
- inkscape:window-x="210"
- inkscape:window-y="25"
- showgrid="false"
- showborder="false"
- inkscape:grid-points="true"
- showguides="true"
- inkscape:guide-bbox="true" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Lapo Calamandrei</dc:title>
- </cc:Agent>
- </dc:creator>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Livello 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- transform="matrix(3,0,0,2.764211,2,0.736029)"
- style="fill:none;fill-opacity:1;stroke:#edd400;stroke-width:1.04177764;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:1.20000057;stroke-opacity:1;stroke-dasharray:none"
- d="M 5,3.25 C 5,4.492 3.4313649,6.6029241 3,5.5 C 2.1703291,3.3786773 0.93342283,5.2887429 0.3484685,4.0315399 C -0.22935565,2.7896614 2.4934373,2.7209744 2.7599621,1.5582428 C 3.1438483,-0.11648562 5,2.008 5,3.25 z "
- id="path4685"
- sodipodi:nodetypes="cszsc" />
- <path
- transform="matrix(3,0,0,2.764211,28,0.736029)"
- style="fill:none;fill-opacity:1;stroke:#edd400;stroke-width:1.04177764;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:1.20000057;stroke-opacity:1;stroke-dasharray:none"
- d="M 5.1324347,3.7530602 C 6.5408877,4.6221586 4.104,5.5 3,5.5 C 1.896,5.5 1,4.492 1,3.25 C 1,2.008 2.5979486,0.9217573 3.6290649,1.6827245 C 4.6449011,2.432415 3.7071849,2.8735972 5.1324347,3.7530602 z "
- id="path4687"
- sodipodi:nodetypes="csszz" />
- <path
- sodipodi:type="arc"
- style="opacity:0.5;fill:url(#radialGradient1950);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path3773"
- sodipodi:cx="8"
- sodipodi:cy="17"
- sodipodi:rx="8"
- sodipodi:ry="5"
- d="M 16 17 A 8 5 0 1 1 0,17 A 8 5 0 1 1 16 17 z"
- transform="matrix(3.002717,0,0,1.306102,-2.173913e-2,16.33263)" />
- <path
- transform="matrix(3,0,0,2.764211,2,27.6871)"
- style="fill:none;fill-opacity:1;stroke:#edd400;stroke-width:1.04177764;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:1.20000057;stroke-opacity:1;stroke-dasharray:none"
- d="M 5,3.25 C 3.8003631,3.6635328 3.655238,6.4417811 2.708796,5.6734303 C 1.7079235,4.8608912 2.890837,3.4082738 1.3249579,3.638696 C -0.23373408,3.8680605 0.81467683,1.5284674 3,1 C 4.0775742,0.73941485 5,2.008 5,3.25 z "
- id="path4689"
- sodipodi:nodetypes="czzsc" />
- <path
- transform="matrix(3,0,0,2.764211,28,27.6871)"
- style="fill:none;fill-opacity:1;stroke:#edd400;stroke-width:1.04177764;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:1.20000057;stroke-opacity:1;stroke-dasharray:none"
- d="M 4.9106118,3.4503621 C 3.213324,3.9676214 4.4687559,5.5062573 3.2630712,5.6808834 C 2.1050538,5.8486056 1.6264165,4.3705129 1.4714045,3.25 C 1.3172976,2.1360296 2.1622013,0.2197078 3,1 C 3.7209838,1.6714955 6.6199357,2.9294347 4.9106118,3.4503621 z "
- id="path4691"
- sodipodi:nodetypes="czzsz" />
- <path
- transform="matrix(3,0,0,2.764211,2,0.736029)"
- style="fill:none;fill-opacity:1;stroke:white;stroke-width:0.34725916;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:1.20000057;stroke-opacity:1"
- d="M 5,3.25 C 5,4.492 3.4313649,6.6029241 3,5.5 C 2.1703291,3.3786773 0.93342283,5.2887429 0.3484685,4.0315399 C -0.22935565,2.7896614 2.4934373,2.7209744 2.7599621,1.5582428 C 3.1438483,-0.11648562 5,2.008 5,3.25 z "
- id="path3751"
- sodipodi:nodetypes="cszsc" />
- <path
- transform="matrix(3,0,0,2.764211,28,0.736029)"
- style="fill:none;fill-opacity:1;stroke:white;stroke-width:0.34725916;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:1.20000057;stroke-opacity:1"
- d="M 5.1324347,3.7530602 C 6.5408877,4.6221586 4.104,5.5 3,5.5 C 1.896,5.5 1,4.492 1,3.25 C 1,2.008 2.5979486,0.9217573 3.6290649,1.6827245 C 4.6449011,2.432415 3.7071849,2.8735972 5.1324347,3.7530602 z "
- id="path3753"
- sodipodi:nodetypes="csszz" />
- <path
- transform="matrix(3,0,0,2.764211,2,27.6871)"
- style="fill:none;fill-opacity:1;stroke:white;stroke-width:0.34725916;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:1.20000057;stroke-opacity:1"
- d="M 5,3.25 C 3.8003631,3.6635328 3.655238,6.4417811 2.708796,5.6734303 C 1.7079235,4.8608912 2.890837,3.4082738 1.3249579,3.638696 C -0.23373408,3.8680605 0.81467683,1.5284674 3,1 C 4.0775742,0.73941485 5,2.008 5,3.25 z "
- id="path3755"
- sodipodi:nodetypes="czzsc" />
- <path
- transform="matrix(3,0,0,2.764211,28,27.6871)"
- style="fill:none;fill-opacity:1;stroke:white;stroke-width:0.34725916;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:1.20000057;stroke-opacity:1"
- d="M 4.9106118,3.4503621 C 3.213324,3.9676214 4.4687559,5.5062573 3.2630712,5.6808834 C 2.1050538,5.8486056 1.6264165,4.3705129 1.4714045,3.25 C 1.3172976,2.1360296 2.1622013,0.2197078 3,1 C 3.7209838,1.6714955 6.6199357,2.9294347 4.9106118,3.4503621 z "
- id="path3757"
- sodipodi:nodetypes="czzsz" />
- <path
- style="fill:url(#radialGradient2889);fill-opacity:1.0;stroke:#888a85;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- d="M 24,3.5002405 C 13.512009,3.5002405 5,12.323604 5,23.195251 C 5,34.066899 13.512009,42.890262 24,42.890262 C 34.48799,42.890262 43,34.066899 43,23.195251 C 43,12.323604 34.48799,3.5002405 24,3.5002405 z M 24,13.866036 C 28.967992,13.866035 33,18.045532 33,23.195251 C 33,28.34497 28.967992,32.524467 24,32.524467 C 19.032008,32.524467 15,28.34497 15,23.195251 C 15,18.045532 19.032008,13.866036 24,13.866036 z "
- id="path1871" />
- <path
- style="fill:url(#linearGradient1982);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 16.375,5.1846822 C 12.031516,7.1681393 8.5384652,10.788965 6.625,15.291332 C 10.619567,15.244087 13.21478,17.295875 15.75,19.43765 C 16.655903,17.312499 18.324842,15.582511 20.375,14.64347 C 19.653901,11.053231 18.398365,7.8447314 16.375,5.1846822 z "
- id="path2764"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:url(#linearGradient1979);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- d="M 15.75,26.952852 C 12.708333,27.729884 9.6666667,27.935454 6.625,31.09917 C 8.5384652,35.601536 12.031516,39.222362 16.375,41.20582 C 16.917398,37.525601 17.956195,34.176314 20.375,31.747032 C 18.324842,30.80799 16.655903,29.078003 15.75,26.952852 z "
- id="path2772"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:url(#linearGradient1976);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 31.625,5.1846822 C 29.676221,7.7221655 28.016661,10.548869 27.625,14.64347 C 29.675158,15.582511 31.344096,17.312499 32.25,19.43765 C 35.429475,16.815267 38.508941,15.092969 41.375,15.291332 C 39.461534,10.788965 35.968484,7.1681393 31.625,5.1846822 z "
- id="path2795"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:url(#linearGradient1973);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 32.25,26.952852 C 31.344096,29.078003 29.675158,30.80799 27.625,31.747032 C 29.646436,34.211859 30.85863,37.485927 31.625,41.20582 C 35.968484,39.222362 39.461534,35.601536 41.375,31.09917 C 39.211413,28.663368 35.980663,27.508162 32.25,26.952852 z "
- id="path2797"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#a40000;stroke-width:1.00000012px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
- d="M 15.75,19.43765 C 16.655904,17.312499 18.324842,15.582511 20.375,14.64347 M 16.375,5.1846822 C 12.031516,7.1681393 8.538466,10.788965 6.625,15.291332"
- id="path3706"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#a40000;stroke-width:1.00000012px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
- d="M 41.375,15.291332 C 39.461534,10.788965 35.968484,7.1681393 31.625,5.1846822 M 27.625,14.64347 C 29.675158,15.582511 31.344096,17.312499 32.25,19.43765"
- id="path3708"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#a40000;stroke-width:1.00000012px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
- d="M 32.25,26.952852 C 31.344096,29.078003 29.675158,30.80799 27.625,31.747032 M 31.625,41.20582 C 35.968484,39.222362 39.461534,35.601536 41.375,31.09917"
- id="path3710"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:none;fill-opacity:1;stroke:#a40000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- d="M 20.375,31.747032 C 18.324842,30.80799 16.655903,29.078003 15.75,26.952852 M 6.625,31.09917 C 8.5384652,35.601536 12.031516,39.222362 16.375,41.20582"
- id="path3712"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.4;fill:none;fill-opacity:1;stroke:url(#radialGradient1997);stroke-width:0.42869788;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path3722"
- sodipodi:cx="10"
- sodipodi:cy="10.28125"
- sodipodi:rx="8"
- sodipodi:ry="7.71875"
- d="M 18 10.28125 A 8 7.71875 0 1 1 2,10.28125 A 8 7.71875 0 1 1 18 10.28125 z"
- transform="matrix(2.246534,0,0,2.422058,1.53466,-1.706524)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.8;fill:none;fill-opacity:1;stroke:url(#radialGradient1999);stroke-width:0.77645928;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path3724"
- sodipodi:cx="10"
- sodipodi:cy="10.28125"
- sodipodi:rx="8"
- sodipodi:ry="7.71875"
- d="M 18 10.28125 A 8 7.71875 0 1 1 2,10.28125 A 8 7.71875 0 1 1 18 10.28125 z"
- transform="matrix(1.242433,0,0,1.335027,11.57567,9.469519)" />
- </g>
-</svg>
diff --git a/navit/icons/gui_home.svg b/navit/icons/gui_home.svg
deleted file mode 100644
index 79db440d3..000000000
--- a/navit/icons/gui_home.svg
+++ /dev/null
@@ -1,248 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg1328"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/actions"
- sodipodi:docname="go-home.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <sodipodi:namedview
- inkscape:cy="21.40117"
- inkscape:cx="103.96977"
- inkscape:zoom="1"
- inkscape:window-height="912"
- inkscape:window-width="1011"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="0.31764706"
- bordercolor="#666"
- pagecolor="#ffffff"
- id="base"
- inkscape:showpageshadow="false"
- showgrid="false"
- inkscape:window-x="592"
- inkscape:window-y="70"
- inkscape:current-layer="layer1" />
- <defs
- id="defs1330">
- <linearGradient
- id="linearGradient2804">
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="0"
- id="stop2806" />
- <stop
- id="stop2812"
- offset="0.5"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop2808" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2781">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop2783" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop2785" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2782">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop2784" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop2786" />
- </linearGradient>
- <linearGradient
- id="linearGradient5106">
- <stop
- style="stop-color:#729fcf;stop-opacity:1;"
- offset="0"
- id="stop5108" />
- <stop
- style="stop-color:#386ea6;stop-opacity:1;"
- offset="1"
- id="stop5110" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5106"
- id="linearGradient2780"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.137165,0,0,3.184122,-1.606682,-4.861064)"
- x1="8.1771841"
- y1="5.8576875"
- x2="8.1771841"
- y2="15.676654" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2782"
- id="linearGradient2788"
- x1="26.0625"
- y1="23.265625"
- x2="29.03125"
- y2="55.265625"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2781"
- id="radialGradient2827"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2,0,0,0.8,-13,-79.2)"
- cx="1"
- cy="44"
- fx="1"
- fy="44"
- r="5" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2781"
- id="radialGradient2829"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2,0,0,0.8,36,8.8)"
- cx="1"
- cy="44"
- fx="1"
- fy="44"
- r="5" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2804"
- id="linearGradient2831"
- gradientUnits="userSpaceOnUse"
- x1="21.875"
- y1="48.000977"
- x2="21.875"
- y2="40" />
- </defs>
- <sodipodi:namedview
- id="namedview21"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="9.8994949"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="736"
- inkscape:window-height="851"
- inkscape:window-x="214"
- inkscape:window-y="28" />
- <metadata
- id="metadata1333">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Go Home</dc:title>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>go</rdf:li>
- <rdf:li>seek</rdf:li>
- <rdf:li>home</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:creator>
- <cc:Agent>
- <dc:title>Rodney Dawes</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:contributor>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:contributor>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- id="g2822"
- style="opacity:0.3"
- transform="matrix(1,0,0,1.037397,0,-1.648602)">
- <rect
- transform="scale(-1,-1)"
- y="-48"
- x="-11"
- height="8"
- width="10"
- id="rect1892"
- style="opacity:1;color:black;fill:url(#radialGradient2827);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- y="40"
- x="38"
- height="8"
- width="10"
- id="rect2789"
- style="opacity:1;color:black;fill:url(#radialGradient2829);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- y="40"
- x="11"
- height="8"
- width="27"
- id="rect2793"
- style="opacity:1;color:black;fill:url(#linearGradient2831);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- </g>
- <path
- style="opacity:1;color:black;fill:url(#linearGradient2780);fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 24.046494,1.5071795 L 1.2179878,25.575587 L 6.4862366,25.575587 L 6.5487366,44.555315 L 42.546511,44.492815 L 42.399171,25.469161 L 46.875,25.513087 L 37.54055,15.684423 L 37.549608,3.5326741 L 30.505837,3.5235471 L 30.537459,8.1869639 L 24.046494,1.5071795 z "
- id="rect5117"
- sodipodi:nodetypes="cccccccccccc" />
- <path
- style="opacity:0.41237111;color:black;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2788);stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
- d="M 24.03125,3.03125 L 3.6875,24.5 L 6.5,24.5 C 6.7820332,24.499212 7.0527421,24.610901 7.2521704,24.81033 C 7.4515988,25.009758 7.5632875,25.280467 7.5625,25.5625 L 7.625,43.5 L 41.46875,43.4375 L 41.34375,25.46875 C 41.342962,25.186717 41.454651,24.916008 41.65408,24.71658 C 41.853508,24.517151 42.124217,24.405462 42.40625,24.40625 L 44.375,24.40625 L 36.75,16.40625 C 36.569219,16.210548 36.468801,15.953923 36.46875,15.6875 L 36.5,4.59375 L 31.5625,4.59375 L 31.59375,8.1875 C 31.595602,8.617841 31.336979,9.0065543 30.939333,9.1710975 C 30.541687,9.3356406 30.084018,9.2433239 29.78125,8.9375 L 24.03125,3.03125 z "
- id="path2778" />
- </g>
-</svg>
diff --git a/navit/icons/gui_inactive.svg b/navit/icons/gui_inactive.svg
deleted file mode 100644
index 61e2dcb8d..000000000
--- a/navit/icons/gui_inactive.svg
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg3220"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/tmp"
- sodipodi:docname="gui_inactive.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3222">
- <linearGradient
- y2="40.064526"
- x2="27.044603"
- y1="19.939341"
- x1="17.838388"
- gradientUnits="userSpaceOnUse"
- id="linearGradient7010"
- xlink:href="#linearGradient7000"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient7000"
- inkscape:collect="always">
- <stop
- id="stop7002"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop7004"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="61.80806"
- x2="39.418972"
- y1="19.939341"
- x1="17.838388"
- id="linearGradient7006"
- xlink:href="#linearGradient7000"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient2790">
- <stop
- id="stop2792"
- offset="0"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1;"
- offset="0.8108108"
- id="stop2798" />
- <stop
- id="stop2794"
- offset="1"
- style="stop-color:#959e8b;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- gradientTransform="matrix(1.7588235,0,0,1.7588235,6.032353,6.0323539)"
- gradientUnits="userSpaceOnUse"
- y2="30.038462"
- x2="19.255854"
- y1="0.068979882"
- x1="4.3764215"
- id="linearGradient6945"
- xlink:href="#linearGradient2790"
- inkscape:collect="always" />
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.5,0,9.75)"
- r="3"
- fy="19.5"
- fx="-2"
- cy="19.5"
- cx="-2"
- id="radialGradient6972"
- xlink:href="#linearGradient6964"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient6964"
- inkscape:collect="always">
- <stop
- id="stop5939"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop6968"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.5,0,9.75)"
- r="3"
- fy="19.5"
- fx="-2"
- cy="19.5"
- cx="-2"
- id="radialGradient6970"
- xlink:href="#linearGradient6964"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient6958">
- <stop
- id="stop6960"
- offset="0"
- style="stop-color:#729fcf;stop-opacity:1;" />
- <stop
- style="stop-color:#729fcf;stop-opacity:1;"
- offset="0.60000002"
- id="stop6966" />
- <stop
- id="stop6962"
- offset="1"
- style="stop-color:#729fcf;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6958"
- id="radialGradient5962"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)"
- cx="70.53125"
- cy="22.734375"
- fx="70.53125"
- fy="22.734375"
- r="3.5975378" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="800"
- inkscape:window-height="649"
- inkscape:window-x="472"
- inkscape:window-y="296" />
- <metadata
- id="metadata3225">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- style="display:inline"
- inkscape:label="Layer 1"
- id="g5953"
- transform="translate(-0.6553298,-1.376604)">
- <g
- transform="matrix(1.8719362,0,0,1.5205944,5.0000002,10.484903)"
- style="opacity:0.7238806"
- id="g6978">
- <path
- sodipodi:type="arc"
- style="opacity:0.14179107;fill:url(#radialGradient5962);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6974"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(2.0312501,0,0,1.2946278,14.455805,-7.7591062)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient6970);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6960"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(1.6666667,0,0,1.2946278,8.3333333,-6.6568542)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient6972);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6962"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(1.6666667,0,0,1.2946278,19.333333,-6.6568542)" />
- </g>
- <path
- id="path6930"
- d="M 14.82647,9.5500008 L 9.55,14.826471 L 19.22353,24.5 L 9.55,34.17353 L 14.82647,39.45 L 24.500002,29.776471 L 34.17352,39.45 L 39.45,34.17353 L 29.77647,24.5 L 39.45,14.826471 L 34.17352,9.5500008 L 24.500002,19.22353 L 14.82647,9.5500008 z "
- style="fill:url(#linearGradient6945);fill-opacity:1;fill-rule:evenodd;stroke:#6f716b;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- transform="translate(0,1)"
- d="M 14.8125,10.0625 L 11.0625,13.8125 L 19.96875,22.75 C 20.169915,22.947709 20.283223,23.217943 20.283223,23.5 C 20.283223,23.782057 20.169915,24.052291 19.96875,24.25 L 11.0625,33.1875 L 14.8125,36.9375 L 23.75,28.03125 C 23.947709,27.830085 24.217943,27.716777 24.5,27.716777 C 24.782057,27.716777 25.052291,27.830085 25.25,28.03125 L 34.1875,36.9375 L 37.9375,33.1875 L 29.03125,24.25 C 28.830085,24.052291 28.716777,23.782057 28.716777,23.5 C 28.716777,23.217943 28.830085,22.947709 29.03125,22.75 L 37.9375,13.8125 L 34.1875,10.0625 L 25.25,18.96875 C 25.052291,19.169915 24.782057,19.283223 24.5,19.283223 C 24.217943,19.283223 23.947709,19.169915 23.75,18.96875 L 14.8125,10.0625 z "
- id="path6996"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7006);stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:original="M 14.8125 8.5625 L 9.5625 13.8125 L 19.21875 23.5 L 9.5625 33.1875 L 14.8125 38.4375 L 24.5 28.78125 L 34.1875 38.4375 L 39.4375 33.1875 L 29.78125 23.5 L 39.4375 13.8125 L 34.1875 8.5625 L 24.5 18.21875 L 14.8125 8.5625 z "
- inkscape:radius="-1.0514843"
- sodipodi:type="inkscape:offset" />
- <path
- transform="translate(0,1)"
- d="M 14.8125,10.0625 L 11.0625,13.8125 L 19.96875,22.75 C 20.169915,22.947709 20.283223,23.217943 20.283223,23.5 C 20.283223,23.782057 20.169915,24.052291 19.96875,24.25 L 11.0625,33.1875 L 14.8125,36.9375 L 23.75,28.03125 C 23.947709,27.830085 24.217943,27.716777 24.5,27.716777 C 24.782057,27.716777 25.052291,27.830085 25.25,28.03125 L 34.1875,36.9375 L 37.9375,33.1875 L 29.03125,24.25 C 28.830085,24.052291 28.716777,23.782057 28.716777,23.5 C 28.716777,23.217943 28.830085,22.947709 29.03125,22.75 L 37.9375,13.8125 L 34.1875,10.0625 L 25.25,18.96875 C 25.052291,19.169915 24.782057,19.283223 24.5,19.283223 C 24.217943,19.283223 23.947709,19.169915 23.75,18.96875 L 14.8125,10.0625 z "
- id="path7008"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7010);stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:original="M 14.8125 8.5625 L 9.5625 13.8125 L 19.21875 23.5 L 9.5625 33.1875 L 14.8125 38.4375 L 24.5 28.78125 L 34.1875 38.4375 L 39.4375 33.1875 L 29.78125 23.5 L 39.4375 13.8125 L 34.1875 8.5625 L 24.5 18.21875 L 14.8125 8.5625 z "
- inkscape:radius="-1.0514843"
- sodipodi:type="inkscape:offset" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_layers.svg b/navit/icons/gui_layers.svg
deleted file mode 100644
index 810b5a1d6..000000000
--- a/navit/icons/gui_layers.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="18.02128" height="18" id="svg5952">
- <defs id="defs5954">
- <linearGradient id="linearGradient2485-94">
- <stop id="stop2486-7" style="stop-color:#ffffff;stop-opacity:1" offset="0"/>
- <stop id="stop2487-83" style="stop-color:#aaaaaa;stop-opacity:1" offset="1"/>
- </linearGradient>
- <linearGradient id="linearGradient5704-5">
- <stop id="stop5706-120" style="stop-color:#5a5a5a;stop-opacity:1" offset="0"/>
- <stop id="stop5708-16" style="stop-color:#000000;stop-opacity:1" offset="1"/>
- </linearGradient>
- <linearGradient x1="974.19751" y1="182.46863" x2="979.80444" y2="184.8026" id="linearGradient4351" xlink:href="#linearGradient2485-94" gradientUnits="userSpaceOnUse" gradientTransform="translate(-963.97872,-173.95451)"/>
- <linearGradient x1="968.88806" y1="178.31856" x2="977.93347" y2="181.70978" id="linearGradient4353" xlink:href="#linearGradient5704-5" gradientUnits="userSpaceOnUse" gradientTransform="translate(-963.97872,-173.95451)"/>
- <linearGradient x1="974.19751" y1="182.46863" x2="979.80444" y2="184.8026" id="linearGradient4356" xlink:href="#linearGradient2485-94" gradientUnits="userSpaceOnUse" gradientTransform="translate(-963.97872,-170.95451)"/>
- <linearGradient x1="968.88806" y1="178.31856" x2="977.93347" y2="181.70978" id="linearGradient4358" xlink:href="#linearGradient5704-5" gradientUnits="userSpaceOnUse" gradientTransform="translate(-963.97872,-170.95451)"/>
- <linearGradient x1="974.19751" y1="182.46863" x2="979.80444" y2="184.8026" id="linearGradient4362" xlink:href="#linearGradient2485-94" gradientUnits="userSpaceOnUse" gradientTransform="translate(-963.97872,-167.95454)"/>
- <linearGradient x1="968.88806" y1="178.31856" x2="977.93347" y2="181.70978" id="linearGradient4364" xlink:href="#linearGradient5704-5" gradientUnits="userSpaceOnUse" gradientTransform="translate(-963.97872,-167.95454)"/>
- </defs>
- <metadata id="metadata5957">
- <rdf:RDF>
- <cc:Work rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
- <dc:title/>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <use transform="translate(-961.86731,-168.04527)" id="use13602" x="0" y="0" width="1250" height="1250" xlink:href="#rect12856"/>
- <path d="m 5.5212776,14.545453 11.0000004,0 -4,-4.9999999 -11.0000004,0 4,4.9999999 z" id="use8977" style="color:#000000;fill:url(#linearGradient4362);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4364);stroke-width:0.99994743;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;display:inline"/>
- <path d="m 5.5212776,11.545483 11.0000004,0 -4,-4.9999999 -11.0000004,0 4,4.9999999 z" id="use8059" style="color:#000000;fill:url(#linearGradient4356);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4358);stroke-width:0.99994743;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;display:inline"/>
- <path d="m 5.5212776,8.5454831 11.0000004,0 -4,-5 -11.0000004,0 4,5 z" id="use8061" style="color:#000000;fill:url(#linearGradient4351);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4353);stroke-width:0.99994743;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;display:inline"/>
-</svg> \ No newline at end of file
diff --git a/navit/icons/gui_leave_fullscreen.svg b/navit/icons/gui_leave_fullscreen.svg
deleted file mode 100644
index d1d351b9b..000000000
--- a/navit/icons/gui_leave_fullscreen.svg
+++ /dev/null
@@ -1,422 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- x="0.0000000"
- y="0.0000000"
- width="48"
- height="48"
- id="svg11300"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- sodipodi:docname="view-restore.svg"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/actions"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <metadata
- id="metadata66">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Restore View</dc:title>
- <dc:contributor>
- <cc:Agent>
- <dc:title />
- </cc:Agent>
- </dc:contributor>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:source>http://jimmac.musichall.cz</dc:source>
- <dc:creator>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>window</rdf:li>
- <rdf:li>fullscreen</rdf:li>
- <rdf:li>view. restore</rdf:li>
- </rdf:Bag>
- </dc:subject>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- inkscape:window-height="889"
- inkscape:window-width="924"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="0.31764706"
- bordercolor="#666"
- pagecolor="#ffffff"
- id="base"
- inkscape:zoom="8"
- inkscape:cx="21.684252"
- inkscape:cy="19.196453"
- inkscape:window-x="2237"
- inkscape:window-y="144"
- inkscape:current-layer="svg11300"
- showgrid="true"
- inkscape:showpageshadow="false" />
- <defs
- id="defs3">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2905">
- <stop
- style="stop-color:#729fcf;stop-opacity:1;"
- offset="0"
- id="stop2907" />
- <stop
- style="stop-color:#729fcf;stop-opacity:0;"
- offset="1"
- id="stop2909" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2897">
- <stop
- style="stop-color:#204a87;stop-opacity:1;"
- offset="0"
- id="stop2899" />
- <stop
- style="stop-color:#204a87;stop-opacity:0;"
- offset="1"
- id="stop2901" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2889">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop2891" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop2893" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient5031"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5060">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5062" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5064" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient5029"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- id="linearGradient5048">
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="0"
- id="stop5050" />
- <stop
- id="stop5056"
- offset="0.5"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5052" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5048"
- id="linearGradient5027"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
- x1="302.85715"
- y1="366.64789"
- x2="302.85715"
- y2="609.50507" />
- <linearGradient
- id="linearGradient4816">
- <stop
- style="stop-color:#204a87;stop-opacity:1.0000000"
- offset="0.0000000"
- id="stop4818" />
- <stop
- style="stop-color:#204a87;stop-opacity:0.0000000"
- offset="1.0000000"
- id="stop4820" />
- </linearGradient>
- <linearGradient
- id="linearGradient3832">
- <stop
- style="stop-color:#ffffff;stop-opacity:1.0000000"
- offset="0.0000000"
- id="stop3834" />
- <stop
- style="stop-color:#e0e0e0;stop-opacity:1.0000000"
- offset="1.0000000"
- id="stop3836" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4816"
- id="linearGradient2264"
- gradientUnits="userSpaceOnUse"
- x1="13.050564"
- y1="11.353518"
- x2="13.050564"
- y2="5.6173568"
- gradientTransform="matrix(1.116479,0,0,1.28466,-1.813167,16.33649)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3832"
- id="linearGradient2267"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.181102,0,0,1.133215,-2.996059,16.44342)"
- x1="17.880680"
- y1="11.072588"
- x2="17.880680"
- y2="21.767578" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5048"
- id="linearGradient1983"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
- x1="302.85715"
- y1="366.64789"
- x2="302.85715"
- y2="609.50507" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient1985"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient1987"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3832"
- id="linearGradient1989"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.181102,0,0,1.133215,7.003941,8.44342)"
- x1="17.880680"
- y1="11.072588"
- x2="17.880680"
- y2="21.767578" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4816"
- id="linearGradient1991"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.116479,0,0,1.28466,8.186833,8.33649)"
- x1="13.050564"
- y1="11.353518"
- x2="13.050564"
- y2="5.6173568" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2889"
- id="linearGradient2895"
- x1="24.75"
- y1="13.984375"
- x2="41.96875"
- y2="13.984375"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2897"
- id="linearGradient2903"
- x1="35.100983"
- y1="12.375624"
- x2="43.349266"
- y2="4.4381237"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2905"
- id="linearGradient2911"
- x1="35.100983"
- y1="12.375624"
- x2="43.349266"
- y2="4.4381237"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <g
- id="g1993"
- style="opacity:0.6">
- <g
- style="opacity:0.58730164;display:inline"
- id="g1969"
- transform="matrix(1.32174e-2,0,0,1.145603e-2,35.17455,34.53806)">
- <rect
- y="-150.69685"
- x="-1559.2523"
- height="478.35718"
- width="1339.6335"
- id="rect1971"
- style="opacity:0.40206185;color:black;fill:url(#linearGradient1983);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- sodipodi:nodetypes="cccc"
- id="path1973"
- d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
- style="opacity:0.40206185;color:black;fill:url(#radialGradient1985);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:0.40206185;color:black;fill:url(#radialGradient1987);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
- id="path1975"
- sodipodi:nodetypes="cccc" />
- </g>
- <rect
- width="18.999998"
- height="18.000006"
- rx="0.46699828"
- ry="0.48554277"
- x="13.500001"
- y="17.5"
- style="color:black;fill:url(#linearGradient1989);fill-opacity:1;fill-rule:evenodd;stroke:#8d8d8d;stroke-width:1.00000119;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect1977" />
- <rect
- width="16"
- height="3.2133625"
- rx="0.084674627"
- ry="0.10203383"
- x="15"
- y="19"
- style="color:black;fill:url(#linearGradient1991);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect1979" />
- <rect
- width="16.999989"
- height="15.99999"
- rx="0.15984313"
- ry="0.14619765"
- x="14.500002"
- y="18.499994"
- style="color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.00000167;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.47878789;visibility:visible;display:inline;overflow:visible"
- id="rect1981" />
- </g>
- <g
- style="opacity:0.58730164;display:inline"
- id="g5022"
- transform="matrix(1.32174e-2,0,0,1.145603e-2,25.17455,42.53806)">
- <rect
- y="-150.69685"
- x="-1559.2523"
- height="478.35718"
- width="1339.6335"
- id="rect4173"
- style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- sodipodi:nodetypes="cccc"
- id="path5058"
- d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
- style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
- id="path5018"
- sodipodi:nodetypes="cccc" />
- </g>
- <rect
- width="18.999998"
- height="18.000006"
- rx="0.46699828"
- ry="0.48554277"
- x="3.5000007"
- y="25.5"
- style="color:black;fill:url(#linearGradient2267);fill-opacity:1;fill-rule:evenodd;stroke:#8d8d8d;stroke-width:1.00000119;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect3818" />
- <rect
- width="16"
- height="3.2133625"
- rx="0.084674627"
- ry="0.10203383"
- x="5"
- y="27"
- style="color:black;fill:url(#linearGradient2264);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect3820" />
- <rect
- width="16.999989"
- height="15.99999"
- rx="0.15984313"
- ry="0.14619765"
- x="4.5000014"
- y="26.499994"
- style="color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.00000167;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.47878789;visibility:visible;display:inline;overflow:visible"
- id="rect4962" />
- <path
- id="path2890"
- d="M 35.983085,20.557267 L 32.986379,17.741128 L 47.536767,1.0012484 L 29.463656,14.208861 L 26.28779,11.024392 L 24.100981,22.5 L 35.983085,20.557267 z "
- style="opacity:1;color:black;fill:url(#linearGradient2911);fill-opacity:1.0;fill-rule:evenodd;stroke:url(#linearGradient2903);stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:nodetypes="ccccccc" />
- <path
- sodipodi:type="inkscape:offset"
- inkscape:radius="-0.92676479"
- inkscape:original="M 47.53125 1 L 29.46875 14.21875 L 26.28125 11.03125 L 24.09375 22.5 L 35.96875 20.5625 L 33 17.75 L 47.53125 1 z "
- xlink:href="#path2890"
- style="opacity:0.40703518;color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2895);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path2887"
- inkscape:href="#path2890"
- d="M 41.46875,6.59375 L 30.03125,14.96875 C 29.659036,15.247768 29.137662,15.207663 28.8125,14.875 L 26.875,12.9375 L 25.25,21.375 L 33.96875,19.96875 L 32.375,18.4375 C 32.014256,18.09614 31.986693,17.5311 32.3125,17.15625 L 41.46875,6.59375 z " />
-</svg>
diff --git a/navit/icons/gui_log.svg b/navit/icons/gui_log.svg
deleted file mode 100644
index 33a1ac9ed..000000000
--- a/navit/icons/gui_log.svg
+++ /dev/null
@@ -1,352 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg5490"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- sodipodi:docbase="/home/andreas/project/gnome-icon-theme/scalable/actions"
- sodipodi:docname="format-justify-left.svg"
- inkscape:export-filename="/home/andreas/project/gnome-icon-theme/scalable/actions/format-justify-fill.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs5492">
- <linearGradient
- y2="10.982666"
- x2="5.4959755"
- y1="37.668934"
- x1="37.926636"
- gradientTransform="matrix(0.982804,0,0,1.3,-40.71647,-6.281051)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient2457"
- xlink:href="#linearGradient6732"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient2378">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop2380" />
- <stop
- id="stop4146"
- offset="0.25"
- style="stop-color:#fefede;stop-opacity:0.91836733;" />
- <stop
- id="stop2386"
- offset="0.5"
- style="stop-color:#f5f328;stop-opacity:1;" />
- <stop
- style="stop-color:#f5f32d;stop-opacity:0.12234043;"
- offset="1"
- id="stop2382" />
- </linearGradient>
- <linearGradient
- y2="39.999443"
- x2="25.058096"
- y1="47.027729"
- x1="25.058096"
- gradientUnits="userSpaceOnUse"
- id="linearGradient2098"
- xlink:href="#linearGradient3702"
- inkscape:collect="always" />
- <radialGradient
- r="2.5"
- fy="43.5"
- fx="4.9929786"
- cy="43.5"
- cx="4.9929786"
- gradientTransform="matrix(2.003784,0,0,1.4,-20.01187,-104.4)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient2096"
- xlink:href="#linearGradient3688"
- inkscape:collect="always" />
- <radialGradient
- r="2.5"
- fy="43.5"
- fx="4.9929786"
- cy="43.5"
- cx="4.9929786"
- gradientTransform="matrix(2.003784,0,0,1.4,27.98813,-17.4)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient2094"
- xlink:href="#linearGradient3688"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient3688"
- inkscape:collect="always">
- <stop
- id="stop3690"
- offset="0"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- id="stop3692"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3702">
- <stop
- id="stop3704"
- offset="0"
- style="stop-color:black;stop-opacity:0;" />
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0.5"
- id="stop3710" />
- <stop
- id="stop3706"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient6732">
- <stop
- id="stop6734"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop6736"
- offset="1"
- style="stop-color:#dddddd;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient4585">
- <stop
- id="stop4587"
- offset="0"
- style="stop-color:#9e9e9e;stop-opacity:1;" />
- <stop
- id="stop4589"
- offset="1"
- style="stop-color:#dddddd;stop-opacity:0;" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="14"
- inkscape:cx="27.606432"
- inkscape:cy="27.154804"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="1674"
- inkscape:window-height="970"
- inkscape:window-x="0"
- inkscape:window-y="25" />
- <metadata
- id="metadata5495">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Justify fill</dc:title>
- <dc:date>October 2006</dc:date>
- <dc:creator>
- <cc:Agent>
- <dc:title>Andreas Nilsson</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source>http://www.gnome.org</dc:source>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>justify</rdf:li>
- <rdf:li>format</rdf:li>
- <rdf:li>align</rdf:li>
- <rdf:li>left</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- id="g5646"
- transform="translate(41.34165,-0.918943)">
- <g
- inkscape:label="Shadow"
- id="layer6"
- transform="matrix(1.1,0,0,1,-43.74165,5.918957)">
- <g
- transform="matrix(1,0,0,0.555556,-4.549998e-7,13.88887)"
- inkscape:label="Shadow"
- id="g2043">
- <g
- inkscape:label="Shadow"
- id="g2036"
- style="display:inline">
- <g
- transform="matrix(1.052632,0,0,1.285713,-1.263158,-13.42854)"
- style="opacity:0.4"
- id="g3712">
- <rect
- style="opacity:1;fill:url(#radialGradient2094);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect2801"
- width="5"
- height="7"
- x="38"
- y="40" />
- <rect
- style="opacity:1;fill:url(#radialGradient2096);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3696"
- width="5"
- height="7"
- x="-10"
- y="-47"
- transform="scale(-1,-1)" />
- <rect
- style="opacity:1;fill:url(#linearGradient2098);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3700"
- width="28"
- height="7.0000005"
- x="10"
- y="40" />
- </g>
- </g>
- </g>
- <g
- transform="translate(50.6887,6.21499)"
- style="display:inline"
- inkscape:label="pixmap"
- id="g2285" />
- <g
- id="g891"
- transform="matrix(0.186703,0,0,0.186703,29.5814,63.83798)" />
- </g>
- <g
- id="g5657"
- inkscape:label="Base"
- style="display:inline" />
- <g
- style="display:inline"
- inkscape:label="Text"
- id="layer5">
- <rect
- inkscape:r_cy="true"
- inkscape:r_cx="true"
- ry="1.4314268"
- rx="1.4314268"
- y="5.4189425"
- x="-36.785221"
- height="39"
- width="38.943569"
- id="rect2373"
- style="color:black;fill:url(#linearGradient2457);fill-opacity:1;fill-rule:evenodd;stroke:#939393;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <rect
- style="color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:0.99999958;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect2423"
- width="36.999981"
- height="37.000008"
- x="-35.841633"
- y="6.4189281"
- rx="0.5728178"
- ry="0.5728178"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- </g>
- </g>
- <rect
- style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect6916"
- width="16"
- height="0.99999905"
- x="10"
- y="11.000001"
- rx="0"
- ry="0"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <rect
- style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect6919"
- width="28"
- height="0.99999809"
- x="10"
- y="16.000002"
- rx="0"
- ry="0"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <rect
- style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect6921"
- width="24"
- height="0.99999809"
- x="10"
- y="21.000002"
- rx="0"
- ry="0"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <rect
- style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect6925"
- width="13"
- height="0.99999809"
- x="10"
- y="26.000002"
- rx="0"
- ry="0"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <rect
- style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect6927"
- width="21"
- height="0.99999809"
- x="10"
- y="31.000002"
- rx="0"
- ry="0"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- <rect
- style="opacity:0.4;color:black;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="rect6933"
- width="12"
- height="1.0187454"
- x="10"
- y="35.981255"
- rx="0"
- ry="0"
- inkscape:r_cx="true"
- inkscape:r_cy="true" />
- </g>
-</svg>
diff --git a/navit/icons/gui_map.svg b/navit/icons/gui_map.svg
deleted file mode 100644
index efdc2662b..000000000
--- a/navit/icons/gui_map.svg
+++ /dev/null
@@ -1,1015 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="90.000000"
- inkscape:export-xdpi="90.000000"
- inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
- width="48px"
- height="48px"
- id="svg11300"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/categories"
- sodipodi:docname="applications-internet.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4873">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4875" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop4877" />
- </linearGradient>
- <radialGradient
- r="10.625"
- fy="4.625"
- fx="62.625"
- cy="4.625"
- cx="62.625"
- gradientTransform="matrix(1,0,0,0.341176,1.298961e-14,3.047059)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9169"
- xlink:href="#linearGradient8838"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient8838"
- inkscape:collect="always">
- <stop
- id="stop8840"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop8842"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="9.7552835"
- fy="-8.7256308"
- fx="62.200352"
- cy="-8.7256308"
- cx="62.200352"
- gradientTransform="matrix(1.122354,-2.185101e-15,2.185149e-15,1.122379,-7.610472,1.067717)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9171"
- xlink:href="#linearGradient8647"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient8647">
- <stop
- id="stop8649"
- offset="0"
- style="stop-color:#8fb1dc;stop-opacity:1;" />
- <stop
- id="stop8651"
- offset="1"
- style="stop-color:#3465a4;stop-opacity:1;" />
- </linearGradient>
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8748"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient8740"
- inkscape:collect="always">
- <stop
- id="stop8742"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop8744"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8750"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-1.618775e-13,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8752"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-6.799488e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9173"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8756"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8758"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-1.906811e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8760"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-1.960516e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9175"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8764"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-1.965096e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8766"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-2.68581e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9177"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8770"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8772"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-1.618775e-13,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8774"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-6.799488e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9179"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8778"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8780"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-2.257223e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8782"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-2.79498e-14,0.79739)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9181"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8786"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-8.035238e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8788"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-4.638683e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9183"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8792"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8794"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8796"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8798"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8800"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8802"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8804"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8806"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8808"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,1.662905e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8810"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="8.61745"
- fy="18.944481"
- fx="24.652485"
- cy="18.94449"
- cx="24.652573"
- gradientTransform="matrix(7.657394e-2,2.760516,-1.969551,5.463895e-2,60.09901,-55.47179)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9185"
- xlink:href="#linearGradient8924"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient8924">
- <stop
- style="stop-color:#cee14b"
- offset="0"
- id="stop8926" />
- <stop
- style="stop-color:#9db029"
- offset="1"
- id="stop8928" />
- </linearGradient>
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-4.23828e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8812"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="8.61745"
- fy="18.944481"
- fx="24.652485"
- cy="18.94449"
- cx="24.652573"
- gradientTransform="matrix(6.822876e-2,2.459669,-1.754905,4.868429e-2,55.12882,-46.82188)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9187"
- xlink:href="#linearGradient8924"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(0.891018,0,0,0.828854,1.579517,2.39052)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9189"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="4.13475"
- fy="14.542329"
- fx="25.135332"
- cy="14.542349"
- cx="25.135374"
- gradientTransform="matrix(0.159592,5.753335,-0.8072,2.23703e-2,32.87305,-131.6974)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9191"
- xlink:href="#linearGradient8930"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient8930">
- <stop
- style="stop-color:#cee14b"
- offset="0"
- id="stop8932" />
- <stop
- style="stop-color:#9db029"
- offset="1"
- id="stop8934" />
- </linearGradient>
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-5.087595e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8816"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="4.13475"
- fy="14.542329"
- fx="25.135332"
- cy="14.542349"
- cx="25.135374"
- gradientTransform="matrix(0.159592,5.753335,-0.8072,2.23703e-2,32.87305,-130.867)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9193"
- xlink:href="#linearGradient8930"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-3.093343e-14,0.589884)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9195"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="2.97195"
- fy="17.573889"
- fx="24.478539"
- cy="17.573915"
- cx="24.478569"
- gradientTransform="matrix(0.222034,8.004376,-0.597156,1.656095e-2,29.5454,-182.3268)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9197"
- xlink:href="#linearGradient8912"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient8912">
- <stop
- id="stop8914"
- offset="0"
- style="stop-color:#cee14b" />
- <stop
- id="stop8916"
- offset="1"
- style="stop-color:#9db029" />
- </linearGradient>
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-1.223188e-13,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8820"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="2.97195"
- fy="17.573889"
- fx="24.478539"
- cy="17.573915"
- cx="24.478569"
- gradientTransform="matrix(0.222034,8.004376,-0.597156,1.656095e-2,29.85665,-181.6002)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9199"
- xlink:href="#linearGradient8912"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,0.311259,0.486131)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9201"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="9.82225"
- fy="17.257843"
- fx="25.968998"
- cy="17.257854"
- cx="25.969097"
- gradientTransform="matrix(6.718136e-2,2.42191,-1.629357,4.51789e-2,52.36869,-50.34012)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9203"
- xlink:href="#linearGradient8918"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient8918">
- <stop
- style="stop-color:#cee14b"
- offset="0"
- id="stop8920" />
- <stop
- style="stop-color:#9db029"
- offset="1"
- id="stop8922" />
- </linearGradient>
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(1,0,0,0.930233,-3.15581e-14,-0.240141)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient8824"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <radialGradient
- r="9.82225"
- fy="17.257843"
- fx="25.968998"
- cy="17.257854"
- cx="25.969097"
- gradientTransform="matrix(6.168149e-2,2.223638,-1.495968,4.148028e-2,50.51125,-44.50839)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9205"
- xlink:href="#linearGradient8918"
- inkscape:collect="always" />
- <radialGradient
- r="10.081216"
- fy="-3.4420195"
- fx="62.225393"
- cy="-3.4420195"
- cx="62.225393"
- gradientTransform="matrix(0.918134,0,0,0.854079,2.429764,1.490099)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient9207"
- xlink:href="#linearGradient8740"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4873"
- id="linearGradient4879"
- x1="63.397362"
- y1="-9.3832779"
- x2="68.910904"
- y2="16.839214"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- stroke="#555753"
- fill="#eeeeec"
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="0.25490196"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="2"
- inkscape:cx="16.217641"
- inkscape:cy="22.472776"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:showpageshadow="false"
- inkscape:window-width="822"
- inkscape:window-height="549"
- inkscape:window-x="234"
- inkscape:window-y="201" />
- <metadata
- id="metadata4">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source>http://jimmac.musichall.cz</dc:source>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:title>Web Browser</dc:title>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- inkscape:label="Layer 1"
- id="g3020"
- transform="matrix(1.673435,0,0,1.673435,-3.189256,-2.668541)">
- <g
- transform="matrix(1.284706,0,0,1.284706,-63.89629,19.96894)"
- id="g8936"
- style="display:inline">
- <path
- sodipodi:type="arc"
- style="opacity:0.56043958;color:#000000;fill:url(#radialGradient9169);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path8836"
- sodipodi:cx="62.625"
- sodipodi:cy="4.625"
- sodipodi:rx="10.625"
- sodipodi:ry="3.625"
- d="M 73.25 4.625 A 10.625 3.625 0 1 1 52,4.625 A 10.625 3.625 0 1 1 73.25 4.625 z"
- transform="matrix(1,0,0,1.192473,-0.590821,-2.378705)" />
- <path
- style="fill:url(#radialGradient9171);fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.46514398;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 71.455637,-3.5111605 C 71.455637,1.6006722 67.3116,5.7446615 62.20047,5.7446615 C 57.088872,5.7446615 52.94507,1.6006253 52.94507,-3.5111605 C 52.94507,-8.6227588 57.088872,-12.766327 62.20047,-12.766327 C 67.3116,-12.766327 71.455637,-8.6227588 71.455637,-3.5111605 L 71.455637,-3.5111605 z "
- id="path6495" />
- <path
- id="path8655"
- d="M 70.945908,-3.5111451 C 70.945908,1.3191267 67.030126,5.234864 62.200518,5.234864 C 57.370468,5.234864 53.454907,1.3190823 53.454907,-3.5111451 C 53.454907,-8.3411954 57.370468,-12.256535 62.200518,-12.256535 C 67.030126,-12.256535 70.945908,-8.3411954 70.945908,-3.5111451 L 70.945908,-3.5111451 z "
- style="opacity:0.52747253;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4879);stroke-width:0.46514425;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <image
- style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8748);stroke-miterlimit:4"
- width="10.784556"
- height="16.411282"
- href="62169F0D.png"
- id="image6522"
- x="61.522053"
- y="-11.413214" />
- <image
- style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8750);stroke-miterlimit:4"
- width="2.3444688"
- height="2.3444688"
- href="62169F0E.png"
- id="image6530"
- x="61.990948"
- y="-10.94432" />
- <g
- transform="matrix(0.468894,0,0,0.468894,50.39042,-14.57365)"
- style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8752);stroke-miterlimit:4"
- id="g6532">
- <path
- d="M 26.0703,9.2363 L 25.9971,9.7295 L 26.5069,10.0586 L 27.378,9.4829 L 26.9425,8.9892 L 26.3605,9.3188 L 26.0705,9.2363"
- id="path6534"
- style="fill:#9db029;stroke:url(#radialGradient9173)" />
- </g>
- <image
- style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8756);stroke-miterlimit:4"
- width="5.6267252"
- height="4.6889377"
- href="62169F0F.png"
- id="image6538"
- x="58.708691"
- y="-12.819895" />
- <image
- style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8758);stroke-miterlimit:4"
- width="2.3444688"
- height="2.3444688"
- href="62169F10.png"
- id="image6546"
- x="62.928734"
- y="-9.5376387" />
- <g
- transform="matrix(0.468894,0,0,0.468894,49.7717,-14.57365)"
- style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8760);stroke-miterlimit:4"
- id="g6548">
- <path
- d="M 28.833,12.7749 L 28.542,12.0337 L 28.0322,12.1987 L 28.1787,13.103 L 28.833,12.7749"
- id="path6550"
- style="fill:#9db029;stroke:url(#radialGradient9175)" />
- </g>
- <image
- style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8764);stroke-miterlimit:4"
- width="2.3444688"
- height="3.2822564"
- href="62169F11.png"
- id="image6554"
- x="63.397629"
- y="-10.006532" />
- <g
- transform="matrix(0.468894,0,0,0.468894,49.94848,-14.57365)"
- style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8766);stroke-miterlimit:4"
- id="g6556">
- <path
- d="M 29.123,12.6089 L 28.9775,13.5972 L 29.7773,13.4322 L 30.3584,12.857 L 29.8496,12.3629 C 29.6787,11.9078 29.4824,11.483 29.2685,11.0465 L 28.833,11.0465 L 28.833,11.5397 L 29.123,11.8688 L 29.123,12.609"
- id="path6558"
- style="fill:#9db029;stroke:url(#radialGradient9177)" />
- </g>
- <image
- style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8770);stroke-miterlimit:4"
- width="9.8467684"
- height="17.34907"
- href="62169F12.png"
- id="image6562"
- x="52.144176"
- y="-11.413214" />
- <image
- style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8772);stroke-miterlimit:4"
- width="2.3444688"
- height="2.3444688"
- href="62169F13.png"
- id="image6570"
- x="57.770901"
- y="-10.94432" />
- <g
- transform="matrix(0.468894,0,0,0.468894,50.39042,-14.57365)"
- style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8774);stroke-miterlimit:4"
- id="g6572">
- <path
- d="M 16.7656,9.5649 L 17.4922,10.0586 L 18.0742,10.0586 L 18.0742,9.4829 L 17.3476,9.1538 L 16.7656,9.5649"
- id="path6574"
- style="fill:#9db029;stroke:url(#radialGradient9179)" />
- </g>
- <image
- style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8778);stroke-miterlimit:4"
- width="4.2200437"
- height="3.2822564"
- href="62169F14.png"
- id="image6578"
- x="56.36422"
- y="-11.882107" />
- <image
- style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8780);stroke-miterlimit:4"
- width="3.7511499"
- height="2.8133626"
- href="2D44FCEC.png"
- id="image6606"
- x="57.30201"
- y="-12.819895" />
- <g
- transform="matrix(0.468894,0,0,0.468894,50.96494,-14.52946)"
- style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8782);stroke-miterlimit:4"
- id="g6608">
- <path
- d="M 17.4922,7.887132 L 17.856,7.558532 L 18.5831,7.393932 C 19.0811,7.151732 19.5811,6.988632 20.1095,6.817732 L 19.8195,6.324032 L 18.881,6.458832 L 18.4376,6.900732 L 17.7066,7.006732 L 17.0567,7.311932 L 16.7408,7.464732 L 16.5479,7.723032 L 17.4922,7.887132"
- id="path6610"
- style="fill:#9db029;stroke:url(#radialGradient9181)" />
- </g>
- <image
- style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8786);stroke-miterlimit:4"
- width="2.3444688"
- height="2.3444688"
- href="2D44FCED.png"
- id="image6614"
- x="58.239796"
- y="-8.5998507" />
- <g
- transform="matrix(0.468894,0,0,0.468894,50.56718,-14.30851)"
- style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8788);stroke-miterlimit:4"
- id="g6616">
- <path
- d="M 18.7285,14.6665 L 19.165,14.0083 L 18.5102,13.5151 L 18.7285,14.6665"
- id="path6618"
- style="fill:#9db029;stroke:url(#radialGradient9183)" />
- </g>
- <image
- style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8792);stroke-miterlimit:4"
- width="10.784556"
- height="16.411282"
- href="2D44FCEE.png"
- id="image6624"
- x="61.522053"
- y="-11.413214" />
- <image
- style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8794);stroke-miterlimit:4"
- width="2.3444688"
- height="2.3444688"
- href="2D44FCEF.png"
- id="image6632"
- x="61.990948"
- y="-10.94432" />
- <image
- style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8796);stroke-miterlimit:4"
- width="5.6267252"
- height="4.6889377"
- href="2D44FCF0.png"
- id="image6640"
- x="58.708691"
- y="-12.819895" />
- <image
- style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8798);stroke-miterlimit:4"
- width="2.3444688"
- height="2.3444688"
- href="2D44FCF1.png"
- id="image6648"
- x="62.928734"
- y="-9.5376387" />
- <image
- style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8800);stroke-miterlimit:4"
- width="2.3444688"
- height="3.2822564"
- href="2D44FCF2.png"
- id="image6656"
- x="63.397629"
- y="-10.006532" />
- <image
- style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8802);stroke-miterlimit:4"
- width="9.8467684"
- height="17.34907"
- href="2D44FCF3.png"
- id="image6664"
- x="52.144176"
- y="-11.413214" />
- <image
- style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8804);stroke-miterlimit:4"
- width="2.3444688"
- height="2.3444688"
- href="2D44FCF4.png"
- id="image6672"
- x="57.770901"
- y="-10.94432" />
- <image
- style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8806);stroke-miterlimit:4"
- width="4.2200437"
- height="3.2822564"
- href="2D44FCF5.png"
- id="image6680"
- x="56.36422"
- y="-11.882107" />
- <image
- style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8808);stroke-miterlimit:4"
- width="3.7511499"
- height="2.8133626"
- href="2D44FD11.png"
- id="image6708"
- x="57.30201"
- y="-12.819895" />
- <image
- style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8810);stroke-miterlimit:4"
- width="2.3444688"
- height="2.3444688"
- href="2D44FD12.png"
- id="image6716"
- x="58.239796"
- y="-8.5998507" />
- <g
- transform="matrix(0.468894,0,0,0.468894,50.74397,-14.61784)"
- style="fill:url(#radialGradient9185);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient8812);stroke-miterlimit:4"
- id="g6564">
- <path
- d="M 17.943241,27.768799 L 17.424668,26.742079 L 16.453191,26.522353 L 15.935064,25.130138 L 14.639881,25.276354 L 13.539117,24.470606 L 12.372685,25.496524 L 12.372685,25.658333 C 12.019842,25.55649 11.586095,25.54259 11.271922,25.349417 L 11.012635,24.616733 L 11.012635,23.810095 L 10.235579,23.883158 C 10.300445,23.369754 10.364776,22.85724 10.430088,22.343925 L 9.9762924,22.343925 L 9.523388,22.930393 L 9.0695925,23.149672 L 8.4217333,22.784177 L 8.3568672,21.977538 L 8.4865103,21.097836 L 9.4584328,20.365152 L 10.23549,20.365152 L 10.364687,19.9249 L 11.336164,20.144179 L 12.0488,21.024772 L 12.178443,19.557711 L 13.409207,18.531793 L 13.862557,17.431921 L 14.769256,17.065623 L 15.287383,16.332939 L 16.452924,16.111966 L 17.036363,15.233155 C 16.45337,15.233155 15.870376,15.233155 15.287383,15.233155 L 16.388503,14.719751 L 17.165115,14.719751 L 18.26668,14.352562 L 18.396323,13.914003 L 18.007394,13.546815 L 17.554044,13.399797 L 17.683687,12.960347 L 17.35998,12.300815 L 16.582478,12.593158 L 16.712121,12.007136 L 15.805421,11.493731 L 15.093231,12.739285 L 15.157651,13.179537 L 14.445461,13.473662 L 13.991665,14.426428 L 13.797601,13.546726 L 12.566838,13.033321 L 12.372329,12.37379 L 13.991665,11.420133 L 14.704301,10.760601 L 14.769167,9.9544084 L 14.380684,9.7342382 L 13.862557,9.6607292 L 13.53885,10.467367 C 13.53885,10.467367 12.9972,10.573488 12.857934,10.607881 C 11.079373,12.246819 7.4857189,15.784785 6.650835,22.463945 C 6.6838918,22.618804 7.2560145,23.516772 7.2560145,23.516772 L 8.6160643,24.322519 L 9.9761142,24.689708 L 10.559553,25.423194 L 11.465807,26.082725 L 11.983934,26.009662 L 12.372418,26.184569 L 12.372418,26.302896 L 11.854647,27.695557 L 11.465718,28.282025 L 11.595361,28.57615 L 11.271654,29.674241 L 12.437641,31.800833 L 13.603181,32.827553 L 14.121754,33.560237 L 14.056531,35.100362 L 14.445461,35.979173 L 14.056531,37.665514 C 14.056531,37.665514 14.026058,37.655089 14.075688,37.823848 C 14.125763,37.992695 16.150958,39.116893 16.27971,39.021198 C 16.408017,38.92372 16.517701,38.83845 16.517701,38.83845 L 16.388503,38.472954 L 16.906274,37.95955 L 17.100783,37.446145 L 17.943063,37.15202 L 18.590476,35.538832 L 18.396413,35.100273 L 18.848871,34.440741 L 19.820794,34.219769 L 20.339366,33.046833 L 20.209723,31.581554 L 20.98678,30.481681 L 21.116423,29.381808 C 20.053082,28.854504 18.998473,28.311518 17.943063,27.76862"
- id="path6566"
- style="fill:url(#radialGradient9187);fill-opacity:1;stroke:url(#radialGradient9189)" />
- </g>
- <g
- transform="matrix(0.468894,0,0,0.468894,50.523,-14.44107)"
- style="fill:url(#radialGradient9191);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient8816);stroke-miterlimit:4"
- id="g6540">
- <path
- d="M 26.8701,6.6933256 L 24.9795,5.9526256 L 22.7998,6.1992256 L 20.1094,6.9394256 L 19.6006,7.4335256 L 21.2725,8.5849256 L 21.2725,9.2431256 L 20.6182,9.9013256 L 21.4912,11.630324 L 22.0713,11.300224 L 22.7998,10.148825 C 23.9228,9.8016256 24.9297,9.4081256 25.9971,8.9144256 L 26.8701,6.6932256"
- id="path6542"
- style="fill:url(#radialGradient9193);fill-opacity:1;stroke:url(#radialGradient9195)" />
- </g>
- <g
- transform="matrix(0.468894,0,0,0.468894,50.83236,-14.75043)"
- style="fill:url(#radialGradient9197);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient8820);stroke-miterlimit:4"
- id="g6580">
- <path
- d="M 15.187259,9.6334723 L 14.823459,10.538271 L 15.550559,10.538271 L 15.914359,9.7154723 C 16.227859,9.4937723 16.539859,9.2706723 16.859159,9.0572723 L 17.586259,9.3043723 C 18.070659,9.6334723 18.555059,9.9625723 19.039859,10.291172 L 19.767359,9.6334723 L 18.967059,9.3043723 L 18.603259,8.5636723 L 17.222359,8.3990723 L 17.149559,7.9874723 L 16.495259,8.1524723 L 16.204859,8.7282723 L 15.841059,7.9875723 L 15.696059,8.3166723 L 15.768859,9.1394723 L 15.187259,9.6334723"
- id="path6582"
- style="fill:url(#radialGradient9199);fill-opacity:1;stroke:url(#radialGradient9201)" />
- </g>
- <g
- transform="matrix(0.468894,0,0,0.468894,50.12526,-14.48526)"
- style="fill:url(#radialGradient9203);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient8824);stroke-miterlimit:4"
- id="g6626">
- <path
- d="M 42.893123,20.729176 C 42.893123,20.97037 42.893123,20.729176 42.893123,20.729176 L 42.392832,21.295848 C 42.086175,20.934471 41.741875,20.630568 41.392249,20.313169 L 40.624781,20.4261 L 39.923602,19.633475 L 39.923602,20.614409 L 40.524337,21.068977 L 40.924185,21.521801 L 41.458539,20.917485 C 41.593045,21.169421 41.725716,21.421357 41.859304,21.673293 L 41.859304,22.428275 L 41.257651,23.107877 L 40.156625,23.863685 L 39.322775,24.69579 L 38.788421,24.089638 L 39.055598,23.410035 L 38.522071,22.80572 L 37.621014,20.87975 L 36.853546,20.011838 L 36.652658,20.237791 L 36.953898,21.333492 L 37.52057,21.975451 C 37.844212,22.909744 38.164366,23.802721 38.58937,24.69579 C 39.248406,24.69579 39.869708,24.625828 40.524245,24.54338 L 40.524245,25.072409 L 39.723541,27.036481 L 38.989217,27.86675 L 38.388482,29.152504 C 38.388482,29.857264 38.388482,30.562024 38.388482,31.266692 L 38.58937,32.098797 L 38.255812,32.475415 L 37.52057,32.929065 L 36.753102,33.571024 L 37.3879,34.288362 L 36.519988,35.045089 L 36.686721,35.534638 L 35.384807,37.008702 L 34.517813,37.008702 L 33.783489,37.462352 L 33.315425,37.462352 L 33.315425,36.858036 L 33.116373,35.647568 C 32.858102,34.889006 32.589181,34.13586 32.315668,33.382715 C 32.315668,32.826785 32.348813,32.276272 32.382049,31.720433 L 32.716526,30.965452 L 32.248461,30.05806 L 32.282524,28.811785 L 31.647726,28.094447 L 31.965125,27.056129 L 31.448674,26.470176 L 30.5467,26.470176 L 30.246378,26.130375 L 29.345321,26.697506 L 28.978619,26.28104 L 28.143851,26.998746 C 27.577179,26.356327 27.009588,25.714368 26.44209,25.072409 L 25.774974,23.485414 L 26.375709,22.579859 L 26.042151,22.202414 L 26.775556,20.463835 C 27.378127,19.714271 28.007508,18.995188 28.644142,18.273443 L 29.779231,17.971285 L 31.047083,17.820619 L 31.914995,18.04749 L 33.14961,19.292847 L 33.583611,18.80238 L 34.183428,18.727093 L 35.318517,19.104538 L 36.18643,19.104538 L 36.787165,18.575509 L 37.054342,18.198064 L 36.452688,17.820619 L 35.451188,17.745332 C 35.173269,17.359808 34.914998,16.954543 34.58502,16.611988 L 34.250544,16.762653 L 34.116955,17.745332 L 33.51622,17.065729 L 33.38355,16.309003 L 32.716434,15.781811 L 32.448339,15.781811 L 33.116281,16.536792 L 32.849104,17.216395 L 32.315577,17.367061 L 32.649135,16.687458 L 32.047481,16.386218 L 31.514872,15.781903 L 30.512453,16.007855 L 30.379783,16.309095 L 29.779048,16.687458 L 29.44549,17.518645 L 28.61164,17.933733 L 28.24402,17.518645 L 27.844172,17.518645 L 27.844172,16.158521 L 28.712084,15.704871 L 29.3792,15.704871 L 29.244694,15.176761 L 28.712084,14.647732 L 29.612315,14.458504 L 30.112606,13.89275 L 30.512453,13.212229 L 31.247695,13.212229 L 31.046807,12.684119 L 31.514872,12.381961 L 31.514872,12.986276 L 32.515454,13.212229 L 33.516037,12.381961 L 33.583244,12.003598 L 34.450238,11.399741 C 34.13642,11.438762 33.822602,11.467407 33.515945,11.550866 L 33.515945,10.870437 L 33.849503,10.114996 L 33.515945,10.114996 L 32.782907,10.794599 L 32.582019,11.172503 L 32.782907,11.701991 L 32.448431,12.607546 L 31.914903,12.305388 L 31.448674,11.777278 L 30.713433,12.305388 L 30.446256,11.097216 L 31.714107,10.266488 L 31.714107,9.8128376 L 32.515638,9.284268 L 33.783489,8.981651 L 34.651401,9.284268 L 36.252719,9.5864259 L 35.852871,10.03925 L 34.984959,10.03925 L 35.852871,10.945724 L 36.519988,10.190742 L 36.72262,9.8585606 C 36.72262,9.8585606 39.281551,12.15206 40.743955,14.660861 C 42.206359,17.170489 42.893123,20.128441 42.893123,20.729176 z "
- id="path6628"
- style="fill:url(#radialGradient9205);fill-opacity:1;stroke:url(#radialGradient9207)" />
- </g>
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_maps.svg b/navit/icons/gui_maps.svg
deleted file mode 100644
index 3a9ff3e7b..000000000
--- a/navit/icons/gui_maps.svg
+++ /dev/null
@@ -1,577 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:ns="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- id="svg2488"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- width="48"
- height="48"
- version="1.0"
- sodipodi:docname="gui_maps.svg"
- inkscape:export-xdpi="180"
- inkscape:export-ydpi="180"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="D:\tmp\Map_icon.png"
- sodipodi:docbase="/home/martin/map/sf/navit-test/navit/xpm">
- <metadata
- id="metadata2493">
- <rdf:RDF>
- <ns:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Map</dc:title>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>Map</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <ns:license
- rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
- </ns:Work>
- <ns:License
- rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
- <ns:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <ns:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <ns:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <ns:requires
- rdf:resource="http://web.resource.org/cc/Attribution" />
- <ns:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <ns:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- </ns:License>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs2491">
- <linearGradient
- id="linearGradient3801">
- <stop
- style="stop-color: rgb(0, 130, 0); stop-opacity: 1;"
- offset="0"
- id="stop3803" />
- <stop
- style="stop-color: rgb(0, 130, 0); stop-opacity: 0;"
- offset="1"
- id="stop3805" />
- </linearGradient>
- <linearGradient
- id="linearGradient3793">
- <stop
- style="stop-color: rgb(0, 130, 0); stop-opacity: 1;"
- offset="0"
- id="stop3795" />
- <stop
- style="stop-color: rgb(0, 130, 0); stop-opacity: 0;"
- offset="1"
- id="stop3797" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:persp3d-origin="24 : 16 : 1"
- id="perspective45" />
- <linearGradient
- id="linearGradient4198">
- <stop
- style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
- offset="0"
- id="stop4200" />
- <stop
- style="stop-color: rgb(255, 255, 255); stop-opacity: 0.57265;"
- offset="1"
- id="stop4202" />
- </linearGradient>
- <linearGradient
- id="linearGradient4181">
- <stop
- style="stop-color: rgb(204, 0, 0); stop-opacity: 1;"
- offset="0"
- id="stop4183" />
- <stop
- style="stop-color: rgb(247, 15, 15); stop-opacity: 1;"
- offset="1"
- id="stop4185" />
- </linearGradient>
- <linearGradient
- id="linearGradient5048">
- <stop
- style="stop-color: black; stop-opacity: 0;"
- offset="0"
- id="stop5050" />
- <stop
- id="stop5056"
- offset="0.5"
- style="stop-color: black; stop-opacity: 1;" />
- <stop
- style="stop-color: black; stop-opacity: 0;"
- offset="1"
- id="stop5052" />
- </linearGradient>
- <linearGradient
- id="linearGradient3289">
- <stop
- style="stop-color: rgb(255, 255, 142); stop-opacity: 1;"
- offset="0"
- id="stop3291" />
- <stop
- style="stop-color: rgb(255, 255, 255); stop-opacity: 0.533898;"
- offset="1"
- id="stop3293" />
- </linearGradient>
- <linearGradient
- id="linearGradient7336">
- <stop
- id="stop7338"
- offset="0"
- style="stop-color: rgb(236, 192, 92); stop-opacity: 1;" />
- <stop
- style="stop-color: rgb(215, 183, 86); stop-opacity: 1;"
- offset="0.19283746"
- id="stop7340" />
- <stop
- id="stop4206"
- offset="0.63636363"
- style="stop-color: rgb(226, 203, 144); stop-opacity: 1;" />
- <stop
- id="stop7342"
- offset="1"
- style="stop-color: rgb(242, 235, 160); stop-opacity: 1;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4181"
- id="linearGradient4187"
- x1="30.229904"
- y1="33.538868"
- x2="16.130783"
- y2="13.761145"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- id="aigrd1"
- gradientUnits="userSpaceOnUse"
- x1="12.4873"
- y1="3.7319"
- x2="31.081301"
- y2="36.032799">
- <stop
- offset="0"
- style="stop-color: rgb(210, 210, 210); stroke-dasharray: none; stroke-miterlimit: 4; stroke-width: 1.21667;"
- id="stop16177" />
- <stop
- offset="1"
- style="stop-color: rgb(237, 237, 237); stroke-dasharray: none; stroke-miterlimit: 4; stroke-width: 1.21667;"
- id="stop16179" />
- </linearGradient>
- <linearGradient
- id="linearGradient3300">
- <stop
- id="stop3557"
- offset="0"
- style="stop-color: rgb(242, 242, 242); stop-opacity: 1;" />
- <stop
- id="stop3559"
- offset="1"
- style="stop-color: rgb(208, 208, 208); stop-opacity: 1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3563">
- <stop
- id="stop3565"
- offset="0"
- style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" />
- <stop
- id="stop3567"
- offset="1"
- style="stop-color: rgb(147, 147, 147); stop-opacity: 1;" />
- </linearGradient>
- <inkscape:perspective
- id="perspective3294"
- inkscape:persp3d-origin="24 : 16 : 1"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 24 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- gradientTransform="matrix(0.354101,0,0,0.354101,1.63868,-8.36492e-2)"
- y2="35.569"
- x2="64.387703"
- y1="65.124001"
- x1="64.387703"
- gradientUnits="userSpaceOnUse"
- id="XMLID_39_">
- <stop
- id="stop336"
- style="stop-color: rgb(255, 255, 255);"
- offset="0" />
- <stop
- id="stop338"
- style="stop-color: rgb(255, 98, 0);"
- offset="0.8539" />
- <stop
- id="stop340"
- style="stop-color: rgb(242, 93, 0);"
- offset="1" />
- <midPointStop
- id="midPointStop335"
- style="stop-color:#FFFFFF"
- offset="0" />
- <midPointStop
- id="midPointStop337"
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <midPointStop
- id="midPointStop339"
- style="stop-color:#FF6200"
- offset="0.8539" />
- <midPointStop
- id="midPointStop341"
- style="stop-color:#FF6200"
- offset="0.5" />
- <midPointStop
- id="midPointStop343"
- style="stop-color:#F25D00"
- offset="1" />
- </linearGradient>
- <linearGradient
- gradientTransform="matrix(0.314683,0,0,0.314683,4.12826,3.74287)"
- y2="59.7995"
- x2="48.046001"
- y1="117.5205"
- x1="80.223602"
- gradientUnits="userSpaceOnUse"
- id="XMLID_2_">
- <stop
- id="stop17"
- style="stop-color: rgb(204, 204, 204);"
- offset="0" />
- <stop
- id="stop19"
- style="stop-color: rgb(255, 255, 255);"
- offset="0.9831" />
- <midPointStop
- id="midPointStop48"
- style="stop-color:#CCCCCC"
- offset="0" />
- <midPointStop
- id="midPointStop50"
- style="stop-color:#CCCCCC"
- offset="0.5" />
- <midPointStop
- id="midPointStop52"
- style="stop-color:#FFFFFF"
- offset="0.9831" />
- </linearGradient>
- <linearGradient
- id="linearGradient2299"
- inkscape:collect="always">
- <stop
- id="stop2301"
- offset="0"
- style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" />
- <stop
- id="stop2303"
- offset="1"
- style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2307">
- <stop
- id="stop2309"
- offset="0"
- style="stop-color: rgb(237, 212, 0); stop-opacity: 1;" />
- <stop
- id="stop2311"
- offset="1"
- style="stop-color: rgb(153, 136, 0); stop-opacity: 1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2329">
- <stop
- id="stop2331"
- offset="0"
- style="stop-color: rgb(0, 0, 0); stop-opacity: 0.185567;" />
- <stop
- id="stop2333"
- offset="1"
- style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2341">
- <stop
- style="stop-color: rgb(0, 0, 0); stop-opacity: 1;"
- offset="0"
- id="stop2343" />
- <stop
- style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
- offset="1"
- id="stop2345" />
- </linearGradient>
- <linearGradient
- id="linearGradient2378"
- inkscape:collect="always">
- <stop
- id="stop2380"
- offset="0"
- style="stop-color: rgb(87, 87, 87); stop-opacity: 1;" />
- <stop
- id="stop2382"
- offset="1"
- style="stop-color: rgb(87, 87, 87); stop-opacity: 0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2406">
- <stop
- id="stop2408"
- offset="0"
- style="stop-color: rgb(124, 126, 121); stop-opacity: 1;" />
- <stop
- style="stop-color: rgb(132, 134, 129); stop-opacity: 1;"
- offset="0.1724138"
- id="stop2414" />
- <stop
- id="stop2410"
- offset="1"
- style="stop-color: rgb(137, 140, 134); stop-opacity: 1;" />
- </linearGradient>
- <inkscape:perspective
- id="perspective3625"
- inkscape:persp3d-origin="24 : 16 : 1"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 24 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3289"
- id="linearGradient4034"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-6.03462e-3,-0.958809,1.29051,-4.48353e-3,-19.5963,45.1767)"
- x1="36.880539"
- y1="20.811714"
- x2="23.073864"
- y2="43.531128" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7336"
- id="linearGradient4037"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.68541e-3,-0.958817,1.29052,-1.99517e-3,-19.6938,45.1029)"
- x1="11.002116"
- y1="29.756582"
- x2="46.998974"
- y2="29.756582" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_2_"
- id="linearGradient4111"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.93106e-2,0,0,1.94718e-2,25.0392,27.618)"
- x1="52.006104"
- y1="166.1331"
- x2="14.049017"
- y2="-42.218513" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2378"
- id="radialGradient4113"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.131291,0,0,0.156352,22.5903,25.9721)"
- cx="24.195112"
- cy="10.577631"
- fx="24.195112"
- fy="10.577631"
- r="15.242914" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_39_"
- id="linearGradient4115"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.1315e-2,0,0,4.1315e-2,23.1323,25.8042)"
- x1="64.387703"
- y1="65.124001"
- x2="64.387703"
- y2="35.569" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2299"
- id="radialGradient4117"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.47838,0,0,0.490192,19.9757,16.6503)"
- cx="7.5326638"
- cy="24.202574"
- fx="7.5326638"
- fy="24.202574"
- r="8.2452126" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2341"
- id="radialGradient4119"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.47838,0,0,-0.490192,22.3346,38.1062)"
- cx="11.68129"
- cy="19.554111"
- fx="11.68129"
- fy="19.554111"
- r="8.2452126" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7336"
- id="linearGradient4160"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.68541e-3,-0.958817,1.29052,-1.99517e-3,-19.6938,45.1029)"
- x1="11.002116"
- y1="29.756582"
- x2="46.998974"
- y2="29.756582" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3289"
- id="linearGradient4162"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-6.03462e-3,-0.958809,1.29051,-4.48353e-3,-19.5963,45.1767)"
- x1="36.880539"
- y1="20.811714"
- x2="23.073864"
- y2="43.531128" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3289"
- id="linearGradient4174"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-6.03462e-3,-0.958809,1.29051,-4.48353e-3,-19.5963,45.1767)"
- x1="36.880539"
- y1="20.811714"
- x2="23.073864"
- y2="43.531128" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7336"
- id="linearGradient4177"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.68541e-3,-0.958817,1.29052,-1.99517e-3,-19.6938,45.1029)"
- x1="11.002116"
- y1="29.756582"
- x2="46.998974"
- y2="29.756582" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3289"
- id="linearGradient2483"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-7.5311625e-3,-1.2954,1.61055,-6.0574875e-3,16.302686,101.75013)"
- x1="36.880539"
- y1="20.811714"
- x2="23.073864"
- y2="43.531128" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7336"
- id="linearGradient2486"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-3.3513675e-3,-1.2954112,1.6105612,-2.695575e-3,16.181036,101.65038)"
- x1="11.002116"
- y1="29.756582"
- x2="46.998974"
- y2="29.756582" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7336"
- id="linearGradient2256"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-3.3513675e-3,-1.2954112,1.6105612,-2.695575e-3,16.181036,101.65038)"
- x1="11.002116"
- y1="29.756582"
- x2="46.998974"
- y2="29.756582" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3289"
- id="linearGradient2258"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-7.5311625e-3,-1.2954,1.61055,-6.0574875e-3,16.302686,101.75013)"
- x1="36.880539"
- y1="20.811714"
- x2="23.073864"
- y2="43.531128" />
- </defs>
- <sodipodi:namedview
- inkscape:window-height="954"
- inkscape:window-width="1280"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#000000"
- id="base"
- showgrid="true"
- showborder="true"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:zoom="3.9609375"
- inkscape:cx="64"
- inkscape:cy="1.0936137"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:current-layer="svg2488"
- fill="#ef2929"
- width="48px"
- height="48px" />
- <g
- id="g2247"
- transform="translate(-40.000157,-40.000001)">
- <path
- sodipodi:nodetypes="ccccc"
- id="path6459"
- d="M 45.389306,86.701477 C 34.824265,74.824205 48.435181,53.480282 45.272019,41.36619 L 85.700834,41.298525 C 90.571094,52.960898 75.533723,73.185042 85.818119,86.633812 L 45.389306,86.701477 z "
- style="fill:url(#linearGradient2256);fill-opacity:1;fill-rule:evenodd;stroke:#c58839;stroke-width:2.59699869;stroke-linecap:butt;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path16506"
- d="M 46.174303,85.812209 C 36.888621,75.513321 49.122807,54.275725 46.726999,42.364253 L 84.723089,42.22744 C 88.619756,51.166851 75.489748,72.145953 83.882958,85.589418 L 46.174303,85.812209 z "
- style="opacity:0.62921298;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2258);stroke-width:1.1234138;stroke-linecap:butt;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" />
- <path
- sodipodi:nodetypes="cszz"
- id="path3216"
- d="M 49.79095,82.968742 C 52.146551,74.413593 52.277797,72.629228 56.166438,68.317035 C 59.618143,64.48937 70.598915,63.961135 73.982248,59.943293 C 77.365582,55.92545 77.621778,52.27975 78.272834,44.553783"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0070c6;stroke-width:3.53917122;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <g
- transform="matrix(0.5944238,-0.1564125,0.1444815,0.6435113,43.323809,43.074772)"
- id="g3551">
- <path
- style="opacity:1;fill:#cc0000;fill-opacity:1;fill-rule:nonzero;stroke:#cc0000;stroke-width:2.58923006;stroke-linecap:round;stroke-linejoin:round;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path2565"
- d="M 11.318692,9.2240568 C 16.641997,14.693047 22.769247,19.123651 29.210664,22.931105 L 27.441568,24.159843 C 21.101863,20.04489 15.052508,15.498993 9.1840818,10.652117 L 11.318692,9.2240568 z " />
- <path
- style="opacity:1;fill:#cc0000;fill-opacity:1;fill-rule:nonzero;stroke:#cc0000;stroke-width:2.58923006;stroke-linecap:round;stroke-linejoin:round;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path2575"
- d="M 26.73892,8.9210568 C 21.867631,15.95255 15.247359,21.081199 7.9065151,25.28163 L 10.087564,23.520856 C 8.7241111,24.379297 25.574485,11.804168 23.852075,10.207903 L 26.73892,8.9210568 z " />
- </g>
- <path
- id="path2473"
- d="M 74.627177,81.489386 L 68.198166,78.085424 L 64.936126,73.597777 L 60.766297,68.897166 L 58.793357,63.58633 L 58.273225,57.80667 L 58.273225,57.80667"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:3, 9;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/navit/icons/gui_menu.svg b/navit/icons/gui_menu.svg
deleted file mode 100644
index e81d59f1e..000000000
--- a/navit/icons/gui_menu.svg
+++ /dev/null
@@ -1,658 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="72"
- height="48"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- version="1.0"
- sodipodi:docbase="/tmp"
- sodipodi:docname="gui_menu.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5753">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop5755" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop5757" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5745">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop5747" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop5749" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6010">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop6012" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop6014" />
- </linearGradient>
- <linearGradient
- id="linearGradient5978">
- <stop
- id="stop5980"
- offset="0"
- style="stop-color:#f5f5f5;stop-opacity:1;" />
- <stop
- id="stop5982"
- offset="1"
- style="stop-color:#c7c7c7;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient5966">
- <stop
- style="stop-color:#e3e3e3;stop-opacity:1;"
- offset="0"
- id="stop5968" />
- <stop
- id="stop5970"
- offset="0.5"
- style="stop-color:#b2b2b2;stop-opacity:1;" />
- <stop
- style="stop-color:#d6d6d6;stop-opacity:1;"
- offset="1"
- id="stop5972" />
- </linearGradient>
- <linearGradient
- id="linearGradient5897">
- <stop
- style="stop-color:#cecece;stop-opacity:1;"
- offset="0"
- id="stop5899" />
- <stop
- style="stop-color:#a0a0a0;stop-opacity:1;"
- offset="1"
- id="stop5901" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5887">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop5889" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop5891" />
- </linearGradient>
- <linearGradient
- id="linearGradient5707">
- <stop
- id="stop5709"
- offset="0"
- style="stop-color:#e8e8e8;stop-opacity:1;" />
- <stop
- id="stop5711"
- offset="1"
- style="stop-color:#717171;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient5693">
- <stop
- style="stop-color:#c9c9c9;stop-opacity:1;"
- offset="0"
- id="stop5695" />
- <stop
- id="stop5701"
- offset="0.32142857"
- style="stop-color:#939393;stop-opacity:1;" />
- <stop
- style="stop-color:#d1d1d1;stop-opacity:1;"
- offset="0.75"
- id="stop5703" />
- <stop
- style="stop-color:#b2b2b2;stop-opacity:1;"
- offset="1"
- id="stop5697" />
- </linearGradient>
- <linearGradient
- id="linearGradient5641">
- <stop
- id="stop5643"
- offset="0"
- style="stop-color:#b5b5b5;stop-opacity:1;" />
- <stop
- style="stop-color:#868686;stop-opacity:1;"
- offset="0.5"
- id="stop5647" />
- <stop
- id="stop5645"
- offset="1"
- style="stop-color:#c7c7c7;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient5615">
- <stop
- style="stop-color:#717171;stop-opacity:1;"
- offset="0"
- id="stop5617" />
- <stop
- style="stop-color:#cccccc;stop-opacity:1;"
- offset="1"
- id="stop5619" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5597">
- <stop
- style="stop-color:#717171;stop-opacity:1;"
- offset="0"
- id="stop5599" />
- <stop
- style="stop-color:#717171;stop-opacity:0;"
- offset="1"
- id="stop5601" />
- </linearGradient>
- <linearGradient
- id="linearGradient5589">
- <stop
- id="stop5591"
- offset="0"
- style="stop-color:#eddee1;stop-opacity:1;" />
- <stop
- id="stop5593"
- offset="1"
- style="stop-color:#cb9ea7;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient5579">
- <stop
- style="stop-color:#eddee1;stop-opacity:1;"
- offset="0"
- id="stop5581" />
- <stop
- style="stop-color:#cb9ea7;stop-opacity:1;"
- offset="1"
- id="stop5583" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6010"
- id="linearGradient6016"
- x1="155.34375"
- y1="125.76562"
- x2="239.15625"
- y2="168.76562"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)" />
- <filter
- inkscape:collect="always"
- x="-0.12703244"
- width="1.2540649"
- y="-0.16318549"
- height="1.326371"
- id="filter5735">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="12.915397"
- id="feGaussianBlur5737" />
- </filter>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5641"
- id="linearGradient2288"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="57.21373"
- y1="179.57538"
- x2="93.290894"
- y2="177.23959" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5966"
- id="linearGradient2290"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="38.890877"
- y1="145.8279"
- x2="59.220192"
- y2="145.88857" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5641"
- id="linearGradient2292"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="80.96373"
- y1="195.32538"
- x2="108.54089"
- y2="195.73959" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5641"
- id="linearGradient2294"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="199.5"
- y1="114.25"
- x2="228.25"
- y2="113" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5641"
- id="linearGradient2296"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="192"
- y1="146.25"
- x2="225.75"
- y2="145.25" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5615"
- id="linearGradient2298"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="184"
- y1="166"
- x2="215.5"
- y2="170.25" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5641"
- id="linearGradient2300"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="192"
- y1="146.25"
- x2="225.75"
- y2="145.25" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5641"
- id="linearGradient2302"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="116.834"
- y1="194.83527"
- x2="145.664"
- y2="194.83527" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5579"
- id="linearGradient2304"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-6.708875)"
- x1="134.34375"
- y1="71.5"
- x2="171.65625"
- y2="212.5" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5641"
- id="linearGradient2306"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="153.25"
- y1="202.75"
- x2="184.25"
- y2="201.75" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5597"
- id="radialGradient2308"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.1380877,4.5466235e-2,-2.3832001e-2,7.2342035e-2,20.583764,16.399916)"
- cx="-88.308083"
- cy="73.568199"
- fx="-88.308083"
- fy="73.568199"
- r="101.65625" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5597"
- id="radialGradient2310"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.1440197,5.9303781e-2,-2.901487e-2,7.0424578e-2,22.769405,4.308221)"
- cx="147.50781"
- cy="165.91266"
- fx="147.50781"
- fy="165.91266"
- r="101.65625" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5615"
- id="linearGradient2312"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="172.42566"
- y1="202.57323"
- x2="152.25"
- y2="202.57323" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5615"
- id="linearGradient2314"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="201"
- y1="189"
- x2="145"
- y2="212.5" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5615"
- id="linearGradient2316"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="228.5"
- y1="149.5"
- x2="141"
- y2="202.5" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5693"
- id="linearGradient2318"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.1989978,0,0,0.2009534,-0.6201615,-1.4840892)"
- x1="65"
- y1="95"
- x2="190"
- y2="95" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5707"
- id="radialGradient2320"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.2830276,-0.2829508,0.1470958,0.1470559,4.4824059,24.347715)"
- cx="69.515442"
- cy="48.968105"
- fx="69.515442"
- fy="48.968105"
- r="101.65625" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5887"
- id="linearGradient2322"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.6850421)"
- x1="147.25"
- y1="195.625"
- x2="148.75"
- y2="218.875" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5897"
- id="linearGradient2324"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="115"
- y1="205.75"
- x2="124.5"
- y2="206" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5978"
- id="linearGradient2326"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="63.213203"
- y1="180.75673"
- x2="83.841362"
- y2="193.125" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5978"
- id="linearGradient2328"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- x1="42"
- y1="172.625"
- x2="55.910641"
- y2="172.625" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5753"
- id="linearGradient2330"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0122267,0,0,1.0123098,-0.3023276,-0.2600212)"
- x1="31.071491"
- y1="36.879368"
- x2="30.94672"
- y2="11.32831" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5745"
- id="linearGradient2332"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0437257,0,0,1.0442057,-1.0812013,-0.9337631)"
- x1="26.934336"
- y1="5.5277748"
- x2="26.934338"
- y2="28.598352" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#000000"
- bordercolor="#d6d6d6"
- borderopacity="1"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.49803922"
- inkscape:pageshadow="2"
- inkscape:zoom="5"
- inkscape:cx="48.839764"
- inkscape:cy="52.011071"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="72px"
- height="48px"
- inkscape:showpageshadow="false"
- borderlayer="true"
- inkscape:window-width="938"
- inkscape:window-height="894"
- inkscape:window-x="333"
- inkscape:window-y="50"
- showgrid="false" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>System Applications</dc:title>
- <dc:creator>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source>http://jimmac.musichall.cz</dc:source>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>system</rdf:li>
- <rdf:li>applications</rdf:li>
- <rdf:li>category</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g2258"
- transform="translate(11.28125,0)">
- <path
- transform="matrix(0.201008,0,0,0.2009534,-1.0020767,-1.4840892)"
- style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;filter:url(#filter5735);enable-background:accumulate"
- d="M 136.21875,61.34375 C 133.04768,66.942039 132.03863,75.798453 124.09375,76.089734 C 116.13482,76.381531 114.09566,67.607316 110.25,62.268416 C 105.60995,62.902732 101.08947,63.790852 96.6875,64.896413 C 96.492107,71.016647 99.963446,79.506145 92.75,82.148728 C 85.535056,84.791861 79.337504,77.294317 73.15625,73.510404 C 69.220627,75.469125 65.480634,77.65891 61.9375,80.007397 C 64.779063,85.711954 72.103334,92.508989 66.75,97.089379 C 61.389764,101.67567 52.003171,96.63263 44.4375,94.972381 C 41.768272,97.936096 39.325534,101.02655 37.1875,104.2677 C 42.602989,108.70808 52.797413,112.8025 50.09375,118.64869 C 47.395676,124.48279 36.211903,122.62479 28.40625,123.34502 C 27.414668,126.84828 26.719006,130.44088 26.34375,134.10034 C 33.533341,136.56954 44.907172,137.35526 45.28125,143.54166 C 45.655989,149.73901 34.387722,151.32683 27.53125,154.32132 C 28.34587,157.93437 29.486436,161.45431 30.90625,164.88197 C 38.766148,165.03412 49.668768,162.3311 53.0625,167.94797 C 56.456938,173.566 46.828232,178.39183 41.96875,183.20496 C 44.484233,186.26949 47.296461,189.1817 50.3125,191.94061 C 57.638565,189.72799 66.367644,184.02483 72.25,188.19328 C 78.13994,192.36712 71.663421,199.67614 69.53125,205.56726 C 73.337395,207.6457 77.306309,209.54778 81.46875,211.21259 C 87.17129,206.99574 92.429542,199.05768 99.9375,201.16294 C 107.42994,203.26383 105.0438,211.97226 105.96875,218.05025 C 110.4678,218.82236 115.08159,219.36405 119.78125,219.65625 C 122.95232,214.05796 123.96137,205.20154 131.90625,204.91027 C 139.86518,204.61847 141.90434,213.39269 145.75,218.73158 C 150.39005,218.09727 154.91053,217.20914 159.3125,216.10359 C 159.50789,209.98335 156.03655,201.49385 163.25,198.85127 C 170.46494,196.20814 176.6625,203.70569 182.84375,207.4896 C 186.77937,205.53088 190.51937,203.34109 194.0625,200.9926 C 191.22094,195.28805 183.89667,188.49101 189.25,183.91062 C 194.61024,179.32433 203.99683,184.36737 211.5625,186.02762 C 214.23173,183.0639 216.67447,179.97345 218.8125,176.7323 C 213.39701,172.29192 203.20258,168.1975 205.90625,162.35131 C 208.60432,156.5172 219.7881,158.37521 227.59375,157.65498 C 228.58533,154.15173 229.28099,150.55912 229.65625,146.89966 C 222.46666,144.43046 211.09282,143.64474 210.71875,137.45834 C 210.34401,131.26099 221.61228,129.67317 228.46875,126.67868 C 227.65413,123.06564 226.51356,119.54569 225.09375,116.11803 C 217.23385,115.96588 206.33123,118.66889 202.9375,113.05203 C 199.54306,107.434 209.17177,102.60818 214.03125,97.795045 C 211.51577,94.73051 208.70354,91.818305 205.6875,89.059387 C 198.36144,91.272016 189.63236,96.975174 183.75,92.806717 C 177.86006,88.632884 184.33658,81.323865 186.46875,75.432735 C 182.6626,73.354298 178.69369,71.452222 174.53125,69.787408 C 168.82871,74.004264 163.57046,81.942314 156.0625,79.837064 C 148.57006,77.736166 150.9562,69.027744 150.03125,62.949748 C 145.5322,62.177637 140.91841,61.635949 136.21875,61.34375 z M 128,92.222717 C 162.224,92.222717 190,113.85094 190,140.5 C 190,167.14906 162.224,188.77728 128,188.77728 C 93.775999,188.77728 66,167.14906 66,140.5 C 65.999999,113.85094 93.776,92.222717 128,92.222717 z "
- id="path5735" />
- <path
- sodipodi:nodetypes="csccsccscccccccccccsccsccsccsccsccccccccccsssssccsccsccccsccccsccsccccscccccsccscccccscc"
- id="path5670"
- d="M 26.375,5.21875 C 25.73759,6.343745 25.534485,8.128966 23.9375,8.1875 C 22.337692,8.246138 21.929258,6.47912 21.15625,5.40625 C 20.223563,5.533718 19.322331,5.715333 18.4375,5.9375 C 18.398224,7.167381 19.10621,8.875215 17.65625,9.40625 C 16.205988,9.937397 14.929981,8.41664 13.6875,7.65625 C 12.896407,8.049861 11.614277,8.96875 11.614277,8.96875 C 11.614277,8.96875 11.787532,12.93658 11.787532,12.93658 C 11.787532,12.93658 9.4582597,12.302384 7.9375,11.96875 C 7.4009639,12.564318 6.8985115,13.192432 6.46875,13.84375 C 6.46875,13.84375 6.8607549,17.53125 6.8607549,17.53125 C 6.8607549,17.53125 5.6272844,17.603692 4.71875,17.6875 C 4.5194336,18.391491 4.3566791,19.108369 4.28125,19.84375 C 4.28125,19.84375 4.4580267,24.443782 4.4580267,24.443782 C 4.4580267,24.443782 4.53125,29.125 4.53125,29.125 C 4.6949949,29.851056 4.933356,30.561201 5.21875,31.25 C 7.971227,30.561737 7.2697646,31.34467 7.2697646,31.34467 C 7.2697646,31.34467 7.4375,34.9375 7.4375,34.9375 C 7.9431319,35.553327 8.5187523,36.133088 9.125,36.6875 C 10.597596,36.242868 12.348849,35.099836 13.53125,35.9375 C 14.715175,36.776247 13.397333,38.253661 12.96875,39.4375 C 13.733816,39.85517 14.538316,40.22795 15.375,40.5625 C 16.521255,39.715109 17.584591,38.108191 19.09375,38.53125 C 20.599792,38.953431 20.126577,40.716106 20.3125,41.9375 C 21.216843,42.092656 22.117831,42.19128 23.0625,42.25 C 23.699911,41.125003 23.903016,39.339783 25.5,39.28125 C 27.099808,39.222613 27.508242,40.989631 28.28125,42.0625 C 29.213938,41.935034 30.146419,41.753413 31.03125,41.53125 C 31.070525,40.301368 30.362539,38.593536 31.8125,38.0625 C 33.262759,37.531355 34.507519,39.052111 35.75,39.8125 C 36.541092,39.418889 37.287803,38.971937 38,38.5 C 38,38.5 37.826745,35.239277 37.826745,35.239277 C 38.904196,34.317647 40.01049,35.166367 41.53125,35.5 C 42.067785,34.90443 42.538989,34.276321 42.96875,33.625 C 42.96875,33.625 42.857075,30.104473 42.857075,30.104473 C 42.857075,30.104473 44.75,29.78125 44.75,29.78125 C 44.949314,29.077261 45.080819,28.36038 45.15625,27.625 C 45.15625,27.625 45.15625,22.40625 45.15625,22.40625 C 44.966713,22.341173 44.742837,22.306651 44.53125,22.25 C 44.439225,21.981788 44.800831,21.523527 44.691942,21.260723 C 44.691942,21.260723 44.9375,18.34375 44.9375,18.34375 C 44.773755,17.617698 44.535394,16.90755 44.25,16.21875 C 43.065073,16.195819 41.54071,16.512346 40.5625,16.1875 C 40.539209,16.179766 40.522654,16.164705 40.5,16.15625 C 40.446537,16.106258 40.397879,16.049501 40.34375,16 C 40.314345,16.008878 40.279623,16.021834 40.25,16.03125 C 40.0712,15.926893 39.890884,15.775152 39.78125,15.59375 C 39.098942,14.464787 41.054456,13.498466 42.03125,12.53125 C 41.525617,11.915421 40.949998,11.335664 40.34375,10.78125 C 38.871155,11.225885 37.119901,12.368915 35.9375,11.53125 C 34.753576,10.692504 36.040167,9.246342 36.46875,8.0625 C 35.703681,7.644832 34.930434,7.2408 34.09375,6.90625 C 32.947495,7.753642 31.88416,9.360558 30.375,8.9375 C 28.86896,8.515317 29.342172,6.752644 29.15625,5.53125 C 28.251905,5.376092 27.319669,5.277468 26.375,5.21875 z M 24.71875,11.40625 C 25.127782,11.40625 25.538533,11.438721 25.9375,11.46875 C 25.54784,12.41684 25.097354,13.363738 23.9375,13.40625 C 22.815918,13.447359 22.268278,12.602879 21.78125,11.71875 C 22.729581,11.538815 23.699585,11.40625 24.71875,11.40625 z M 29.25,12.09375 C 30.416416,12.449187 31.503984,12.933901 32.46875,13.53125 C 31.843022,14.028025 31.173814,14.380178 30.375,14.15625 C 29.375125,13.87596 29.275244,13.001323 29.25,12.09375 z M 18.53125,12.71875 C 18.590003,13.541446 18.539908,14.301368 17.65625,14.625 C 16.9991,14.865676 16.373142,14.680866 15.78125,14.34375 C 16.588185,13.697804 17.520929,13.170542 18.53125,12.71875 z M 24.71875,16.65625 C 30.437165,16.656251 35.253882,19.660533 36.71875,23.75 C 35.242085,27.825344 30.424266,30.8125 24.71875,30.8125 C 19.012302,30.812501 14.194565,27.826366 12.71875,23.75 C 14.182531,19.659237 18.999153,16.65625 24.71875,16.65625 z M 32.34375,32.75 C 32.795108,32.729015 33.235344,32.888689 33.65625,33.125 C 32.850047,33.770373 31.915498,34.298414 30.90625,34.75 C 30.849544,33.932852 30.934006,33.16549 31.8125,32.84375 C 31.993782,32.777357 32.168465,32.75815 32.34375,32.75 z M 18.53125,33.25 C 18.706821,33.245215 18.905105,33.259618 19.09375,33.3125 C 20.093627,33.592791 20.193507,34.467427 20.21875,35.375 C 19.035882,35.016424 17.944541,34.544398 16.96875,33.9375 C 17.451437,33.551783 17.95703,33.265651 18.53125,33.25 z M 25.5,34.0625 C 26.630484,34.021064 27.166117,34.889682 27.65625,35.78125 C 26.718915,35.956772 25.724956,36.0625 24.71875,36.0625 C 24.310238,36.0625 23.929723,36.029954 23.53125,36 C 23.92091,35.051909 24.340147,34.10501 25.5,34.0625 z "
- style="opacity:1;color:#000000;fill:#717171;fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;enable-background:accumulate" />
- <path
- style="opacity:1;color:#000000;fill:#717171;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;enable-background:accumulate"
- d="M 26.378971,10.441236 C 25.741561,11.566231 25.538734,13.345956 23.941749,13.40449 C 22.341942,13.463128 21.932055,11.69992 21.159047,10.62705 C 20.226359,10.754518 19.317708,10.932989 18.432877,11.155155 C 18.393601,12.385036 19.091368,14.09103 17.641408,14.622065 C 16.191147,15.153211 14.945391,13.646556 13.70291,12.886165 C 12.911817,13.279777 12.16005,13.719822 11.447851,14.191757 C 12.019028,15.338108 13.491265,16.703993 12.415202,17.62444 C 11.337753,18.546069 9.4509726,17.532654 7.9302129,17.199021 C 7.3936769,17.794589 6.9026671,18.415626 6.4729056,19.066946 C 7.5614617,19.959255 9.6106216,20.782042 9.0671638,21.956854 C 8.5248301,23.129236 6.2768026,22.755864 4.7078051,22.900598 C 4.5084888,23.60459 4.3686553,24.326534 4.2932262,25.061915 C 5.7383909,25.558109 8.0246208,25.716001 8.0998131,26.959179 C 8.1751387,28.204558 5.9101281,28.523636 4.5319226,29.125388 C 4.6956677,29.851443 4.9249309,30.558787 5.2103249,31.247586 C 6.7902265,31.278162 8.9817395,30.73498 9.6639061,31.863709 C 10.346215,32.992671 8.410769,33.962437 7.4339747,34.929652 C 7.9396066,35.54548 8.5048865,36.130698 9.1111342,36.68511 C 10.583731,36.240476 12.338345,35.094408 13.520746,35.932072 C 14.704671,36.770819 13.402838,38.239591 12.974255,39.42343 C 13.739321,39.841101 14.537104,40.223329 15.373788,40.557879 C 16.520043,39.710489 17.576993,38.115309 19.086152,38.538368 C 20.592193,38.960549 20.112559,40.710536 20.298482,41.93193 C 21.202826,42.087087 22.130234,42.195941 23.074903,42.254661 C 23.712314,41.129665 23.915141,39.349939 25.512125,39.291406 C 27.111933,39.232768 27.521819,40.995976 28.294827,42.068845 C 29.227515,41.941378 30.136167,41.762905 31.020998,41.540742 C 31.060273,40.310859 30.362506,38.604866 31.812467,38.07383 C 33.262727,37.542685 34.508484,39.049342 35.750965,39.809731 C 36.542057,39.41612 37.293826,38.976075 38.006023,38.504138 C 37.434847,37.357789 35.962611,35.991901 37.038672,35.071457 C 38.116124,34.149827 40.002902,35.163242 41.523662,35.496875 C 42.060198,34.901306 42.551208,34.28027 42.980969,33.628949 C 41.892413,32.73664 39.843252,31.913853 40.38671,30.739041 C 40.929044,29.566658 43.177072,29.940031 44.74607,29.795298 C 44.945385,29.091309 45.085218,28.369361 45.160649,27.633981 C 43.715484,27.137787 41.429252,26.979894 41.354061,25.736716 C 41.278735,24.491338 43.543747,24.172261 44.921952,23.570507 C 44.758206,22.844455 44.528944,22.13711 44.24355,21.44831 C 42.663647,21.417735 40.472135,21.960913 39.789968,20.832186 C 39.107659,19.703225 41.043106,18.73346 42.0199,17.766244 C 41.514268,17.150417 40.948988,16.5652 40.34274,16.010786 C 38.870144,16.45542 37.11553,17.601489 35.933129,16.763824 C 34.749204,15.925078 36.051037,14.456306 36.47962,13.272464 C 35.714553,12.854796 34.916771,12.472567 34.080087,12.138017 C 32.933831,12.985408 31.876882,14.580585 30.367722,14.157528 C 28.861682,13.735347 29.341315,11.98536 29.155393,10.763966 C 28.251049,10.608808 27.32364,10.499954 26.378971,10.441236 z M 24.726937,16.646468 C 31.606233,16.646468 37.189428,20.992731 37.189428,26.347948 C 37.189428,31.703166 31.606233,36.049428 24.726937,36.049428 C 17.847642,36.049428 12.264446,31.703166 12.264446,26.347948 C 12.264446,20.992731 17.847642,16.646468 24.726937,16.646468 z "
- id="path5609" />
- <path
- sodipodi:nodetypes="cccsccc"
- id="path5986"
- d="M 9.0985718,31.321543 L 9.1488238,36.697044 L 11.309658,35.842993 C 11.309658,35.842993 13.068478,35.34061 13.922762,35.94347 C 14.493105,36.345956 14.676541,29.864631 14.676541,29.864631 L 11.058399,29.914869 L 9.0985718,31.321543 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2288);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path5964"
- d="M 5.1096883,25.874784 L 5.2518226,31.274412 L 10.190981,30.99022 L 10.901651,25.555068 L 5.1096883,25.874784 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2290);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccccsc"
- id="path5731"
- d="M 20.272091,41.885642 L 20.569294,36.582182 L 20.815502,32.55327 L 17.546419,31.913841 L 15.272274,35.395179 L 15.343341,40.581663 C 15.870987,40.280234 17.627676,38.192712 19.323095,38.646874 C 20.399307,38.935166 20.272091,41.885642 20.272091,41.885642 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2292);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- id="path5721"
- d="M 44.877981,18.360053 L 44.777477,23.132695 L 39.099004,22.630312 L 39.501019,20.218871 L 44.877981,18.360053 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2294);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path5715"
- d="M 44.727225,24.539368 L 44.727225,29.764155 L 39.551272,30.115823 L 39.048752,24.790559 L 44.727225,24.539368 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2296);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="csccc"
- id="path5633"
- d="M 41.511099,35.541563 C 41.511099,35.541563 38.294972,34.335843 37.390437,34.73775 C 36.4859,35.139656 36.586404,30.065585 36.586404,30.065585 C 38.441521,28.818115 39.89552,29.976693 41.511099,30.166062 L 41.511099,35.541563 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2298);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="cccccccccccccsccccccccccccccc"
- id="path5725"
- d="M 41.712106,17.807431 L 41.913115,12.532406 L 36.385397,12.884074 L 36.435649,8.111433 L 34.124058,6.9559512 L 31.611458,11.075495 L 29.802387,9.9200127 L 29.199364,5.6497548 L 26.435505,5.298086 L 25.581221,9.3673909 L 20.204259,9.8697742 L 18.495692,5.9511845 L 18.495692,10.472634 C 18.495692,10.472634 16.234353,10.673588 16.033345,10.62335 C 15.832337,10.573111 11.611171,8.9654844 11.611171,8.9654844 L 11.761926,13.587411 L 7.6412638,13.085028 L 6.5357209,13.838603 L 6.9879886,18.008385 L 9.0483198,18.812198 L 4.3246335,19.816964 L 4.2743814,25.09199 L 10.254657,23.827243 L 11.209155,16.651949 L 14.827297,14.039556 L 20.656527,10.673588 L 31.510954,11.778831 L 38.847744,17.907908 L 41.712106,17.807431 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2300);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccccsc"
- id="path5727"
- d="M 28.227289,42.032046 L 28.277541,36.602991 L 26.429798,33.050603 L 23.871385,33.263747 L 23.089647,37.100326 L 23.048017,42.387285 C 23.048017,42.387285 24.072393,39.252566 25.576994,39.302805 C 27.281652,39.359722 27.754205,41.529663 28.227289,42.032046 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2302);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- id="path4582"
- d="M 26.378971,5.2164488 C 25.741561,6.3414435 25.538734,8.1211695 23.941749,8.1797037 C 22.341942,8.2383413 21.932055,6.4751334 21.159047,5.4022634 C 20.226359,5.5297314 19.317708,5.7082019 18.432877,5.9303684 C 18.393601,7.1602497 19.091368,8.8662429 17.641408,9.3972782 C 16.191147,9.9284253 14.945391,8.4217687 13.70291,7.6613784 C 12.911817,8.0549898 12.16005,8.4950349 11.447851,8.9669712 C 12.019028,10.113321 13.491265,11.479208 12.415202,12.399652 C 11.337753,13.321283 9.4509726,12.307868 7.9302129,11.974234 C 7.3936769,12.569802 6.9026671,13.190841 6.4729056,13.842159 C 7.5614617,14.734469 9.6106216,15.557256 9.0671638,16.732067 C 8.5248301,17.90445 6.2768026,17.531078 4.7078051,17.675811 C 4.5084888,18.379803 4.3686553,19.101747 4.2932262,19.837128 C 5.7383909,20.333322 8.0246208,20.491216 8.0998131,21.734393 C 8.1751387,22.979771 5.9101281,23.298849 4.5319226,23.900602 C 4.6956677,24.626656 4.9249309,25.334 5.2103249,26.0228 C 6.7902265,26.053375 8.9817395,25.510194 9.6639061,26.638923 C 10.346215,27.767884 8.410769,28.737651 7.4339747,29.704865 C 7.9396066,30.320693 8.5048865,30.905911 9.1111342,31.460323 C 10.583731,31.01569 12.338345,29.869622 13.520746,30.707285 C 14.704671,31.546032 13.402838,33.014804 12.974255,34.198644 C 13.739321,34.616314 14.537104,34.998543 15.373788,35.333093 C 16.520043,34.485702 17.576993,32.890523 19.086152,33.313581 C 20.592193,33.735762 20.112559,35.485751 20.298482,36.707143 C 21.202826,36.8623 22.130234,36.971155 23.074903,37.029874 C 23.712314,35.904878 23.915141,34.125151 25.512125,34.066619 C 27.111933,34.007982 27.521819,35.771191 28.294827,36.844058 C 29.227515,36.716591 30.136167,36.538119 31.020998,36.315955 C 31.060273,35.086072 30.362506,33.380079 31.812467,32.849044 C 33.262727,32.317898 34.508484,33.824555 35.750965,34.584945 C 36.542057,34.191333 37.293826,33.751288 38.006023,33.279352 C 37.434847,32.133003 35.962611,30.767114 37.038672,29.84667 C 38.116124,28.92504 40.002902,29.938455 41.523662,30.272088 C 42.060198,29.676519 42.551208,29.055483 42.980969,28.404163 C 41.892413,27.511854 39.843252,26.689066 40.38671,25.514255 C 40.929044,24.341871 43.177072,24.715244 44.74607,24.570511 C 44.945385,23.866522 45.085218,23.144575 45.160649,22.409194 C 43.715484,21.913 41.429252,21.755107 41.354061,20.51193 C 41.278735,19.266551 43.543747,18.947473 44.921952,18.34572 C 44.758206,17.619668 44.528944,16.912323 44.24355,16.223523 C 42.663647,16.192948 40.472135,16.736127 39.789968,15.607401 C 39.107659,14.478438 41.043106,13.508674 42.0199,12.541458 C 41.514268,11.925629 40.948988,11.340413 40.34274,10.785999 C 38.870144,11.230634 37.11553,12.376702 35.933129,11.539037 C 34.749204,10.700291 36.051037,9.2315192 36.47962,8.0476771 C 35.714553,7.6300087 34.916771,7.2477797 34.080087,6.9132301 C 32.933831,7.7606214 31.876882,9.3557993 30.367722,8.9327418 C 28.861682,8.5105593 29.341315,6.7605726 29.155393,5.5391791 C 28.251049,5.3840213 27.32364,5.2751668 26.378971,5.2164488 z M 24.726937,11.42168 C 31.606233,11.42168 37.189428,15.767944 37.189428,21.123161 C 37.189428,26.478379 31.606233,30.824641 24.726937,30.824641 C 17.847642,30.824641 12.264446,26.478379 12.264446,21.123161 C 12.264446,15.767944 17.847642,11.42168 24.726937,11.42168 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2304);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;enable-background:accumulate" />
- <path
- id="path5637"
- d="M 35.681869,39.912298 L 35.681869,34.386082 C 35.681869,34.386082 32.968262,32.075117 31.862718,32.627739 C 30.757175,33.180361 30.556167,34.73775 30.556167,34.73775 L 30.958183,41.570163 C 30.958183,41.570163 30.405411,38.35491 31.963222,38.05348 C 33.521034,37.75205 35.681869,39.912298 35.681869,39.912298 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2306);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- style="opacity:1;color:#000000;fill:url(#radialGradient2308);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;enable-background:accumulate"
- d="M 26.378971,5.2164488 C 25.741561,6.3414435 25.538734,8.1211695 23.941749,8.1797037 C 22.341942,8.2383413 21.932055,6.4751334 21.159047,5.4022634 C 20.226359,5.5297314 19.317708,5.7082019 18.432877,5.9303684 C 18.393601,7.1602497 19.091368,8.8662429 17.641408,9.3972782 C 16.191147,9.9284253 14.945391,8.4217687 13.70291,7.6613784 C 12.911817,8.0549898 12.16005,8.4950349 11.447851,8.9669712 C 12.019028,10.113321 13.491265,11.479208 12.415202,12.399652 C 11.337753,13.321283 9.4509726,12.307868 7.9302129,11.974234 C 7.3936769,12.569802 6.9026671,13.190841 6.4729056,13.842159 C 7.5614617,14.734469 9.6106216,15.557256 9.0671638,16.732067 C 8.5248301,17.90445 6.2768026,17.531078 4.7078051,17.675811 C 4.5084888,18.379803 4.3686553,19.101747 4.2932262,19.837128 C 5.7383909,20.333322 8.0246208,20.491216 8.0998131,21.734393 C 8.1751387,22.979771 5.9101281,23.298849 4.5319226,23.900602 C 4.6956677,24.626656 4.9249309,25.334 5.2103249,26.0228 C 6.7902265,26.053375 8.9817395,25.510194 9.6639061,26.638923 C 10.346215,27.767884 8.410769,28.737651 7.4339747,29.704865 C 7.9396066,30.320693 8.5048865,30.905911 9.1111342,31.460323 C 10.583731,31.01569 12.338345,29.869622 13.520746,30.707285 C 14.704671,31.546032 13.402838,33.014804 12.974255,34.198644 C 13.739321,34.616314 14.537104,34.998543 15.373788,35.333093 C 16.520043,34.485702 17.576993,32.890523 19.086152,33.313581 C 20.592193,33.735762 20.112559,35.485751 20.298482,36.707143 C 21.202826,36.8623 22.130234,36.971155 23.074903,37.029874 C 23.712314,35.904878 23.915141,34.125151 25.512125,34.066619 C 27.111933,34.007982 27.521819,35.771191 28.294827,36.844058 C 29.227515,36.716591 30.136167,36.538119 31.020998,36.315955 C 31.060273,35.086072 30.362506,33.380079 31.812467,32.849044 C 33.262727,32.317898 34.508484,33.824555 35.750965,34.584945 C 36.542057,34.191333 37.293826,33.751288 38.006023,33.279352 C 37.434847,32.133003 35.962611,30.767114 37.038672,29.84667 C 38.116124,28.92504 40.002902,29.938455 41.523662,30.272088 C 42.060198,29.676519 42.551208,29.055483 42.980969,28.404163 C 41.892413,27.511854 39.843252,26.689066 40.38671,25.514255 C 40.929044,24.341871 43.177072,24.715244 44.74607,24.570511 C 44.945385,23.866522 45.085218,23.144575 45.160649,22.409194 C 43.715484,21.913 41.429252,21.755107 41.354061,20.51193 C 41.278735,19.266551 43.543747,18.947473 44.921952,18.34572 C 44.758206,17.619668 44.528944,16.912323 44.24355,16.223523 C 42.663647,16.192948 40.472135,16.736127 39.789968,15.607401 C 39.107659,14.478438 41.043106,13.508674 42.0199,12.541458 C 41.514268,11.925629 40.948988,11.340413 40.34274,10.785999 C 38.870144,11.230634 37.11553,12.376702 35.933129,11.539037 C 34.749204,10.700291 36.051037,9.2315192 36.47962,8.0476771 C 35.714553,7.6300087 34.916771,7.2477797 34.080087,6.9132301 C 32.933831,7.7606214 31.876882,9.3557993 30.367722,8.9327418 C 28.861682,8.5105593 29.341315,6.7605726 29.155393,5.5391791 C 28.251049,5.3840213 27.32364,5.2751668 26.378971,5.2164488 z M 24.726937,11.42168 C 31.606233,11.42168 37.189428,15.767944 37.189428,21.123161 C 37.189428,26.478379 31.606233,30.824641 24.726937,30.824641 C 17.847642,30.824641 12.264446,26.478379 12.264446,21.123161 C 12.264446,15.767944 17.847642,11.42168 24.726937,11.42168 z "
- id="path5587" />
- <path
- id="path5605"
- d="M 26.378971,5.2164488 C 25.741561,6.3414435 25.538734,8.1211695 23.941749,8.1797037 C 22.341942,8.2383413 21.932055,6.4751334 21.159047,5.4022634 C 20.226359,5.5297314 19.317708,5.7082019 18.432877,5.9303684 C 18.393601,7.1602497 19.091368,8.8662429 17.641408,9.3972782 C 16.191147,9.9284253 14.945391,8.4217687 13.70291,7.6613784 C 12.911817,8.0549898 12.16005,8.4950349 11.447851,8.9669712 C 12.019028,10.113321 13.491265,11.479208 12.415202,12.399652 C 11.337753,13.321283 9.4509726,12.307868 7.9302129,11.974234 C 7.3936769,12.569802 6.9026671,13.190841 6.4729056,13.842159 C 7.5614617,14.734469 9.6106216,15.557256 9.0671638,16.732067 C 8.5248301,17.90445 6.2768026,17.531078 4.7078051,17.675811 C 4.5084888,18.379803 4.3686553,19.101747 4.2932262,19.837128 C 5.7383909,20.333322 8.0246208,20.491216 8.0998131,21.734393 C 8.1751387,22.979771 5.9101281,23.298849 4.5319226,23.900602 C 4.6956677,24.626656 4.9249309,25.334 5.2103249,26.0228 C 6.7902265,26.053375 8.9817395,25.510194 9.6639061,26.638923 C 10.346215,27.767884 8.410769,28.737651 7.4339747,29.704865 C 7.9396066,30.320693 8.5048865,30.905911 9.1111342,31.460323 C 10.583731,31.01569 12.338345,29.869622 13.520746,30.707285 C 14.704671,31.546032 13.402838,33.014804 12.974255,34.198644 C 13.739321,34.616314 14.537104,34.998543 15.373788,35.333093 C 16.520043,34.485702 17.576993,32.890523 19.086152,33.313581 C 20.592193,33.735762 20.112559,35.485751 20.298482,36.707143 C 21.202826,36.8623 22.130234,36.971155 23.074903,37.029874 C 23.712314,35.904878 23.915141,34.125151 25.512125,34.066619 C 27.111933,34.007982 27.521819,35.771191 28.294827,36.844058 C 29.227515,36.716591 30.136167,36.538119 31.020998,36.315955 C 31.060273,35.086072 30.362506,33.380079 31.812467,32.849044 C 33.262727,32.317898 34.508484,33.824555 35.750965,34.584945 C 36.542057,34.191333 37.293826,33.751288 38.006023,33.279352 C 37.434847,32.133003 35.962611,30.767114 37.038672,29.84667 C 38.116124,28.92504 40.002902,29.938455 41.523662,30.272088 C 42.060198,29.676519 42.551208,29.055483 42.980969,28.404163 C 41.892413,27.511854 39.843252,26.689066 40.38671,25.514255 C 40.929044,24.341871 43.177072,24.715244 44.74607,24.570511 C 44.945385,23.866522 45.085218,23.144575 45.160649,22.409194 C 43.715484,21.913 41.429252,21.755107 41.354061,20.51193 C 41.278735,19.266551 43.543747,18.947473 44.921952,18.34572 C 44.758206,17.619668 44.528944,16.912323 44.24355,16.223523 C 42.663647,16.192948 40.472135,16.736127 39.789968,15.607401 C 39.107659,14.478438 41.043106,13.508674 42.0199,12.541458 C 41.514268,11.925629 40.948988,11.340413 40.34274,10.785999 C 38.870144,11.230634 37.11553,12.376702 35.933129,11.539037 C 34.749204,10.700291 36.051037,9.2315192 36.47962,8.0476771 C 35.714553,7.6300087 34.916771,7.2477797 34.080087,6.9132301 C 32.933831,7.7606214 31.876882,9.3557993 30.367722,8.9327418 C 28.861682,8.5105593 29.341315,6.7605726 29.155393,5.5391791 C 28.251049,5.3840213 27.32364,5.2751668 26.378971,5.2164488 z M 24.726937,11.42168 C 31.606233,11.42168 37.189428,15.767944 37.189428,21.123161 C 37.189428,26.478379 31.606233,30.824641 24.726937,30.824641 C 17.847642,30.824641 12.264446,26.478379 12.264446,21.123161 C 12.264446,15.767944 17.847642,11.42168 24.726937,11.42168 z "
- style="opacity:1;color:#000000;fill:url(#radialGradient2310);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path5613"
- d="M 28.244575,36.84776 L 28.194324,42.173024 L 31.008435,41.570163 L 30.982569,36.27433 L 28.244575,36.84776 z "
- style="fill:url(#linearGradient2312);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path5623"
- d="M 35.681869,34.386082 L 35.732121,39.962536 L 38.093964,38.405148 L 37.892957,33.381315 L 35.681869,34.386082 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2314);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path5629"
- d="M 41.511099,30.266538 L 41.511099,35.692278 L 42.968407,33.582268 L 43.018659,28.558434 L 41.511099,30.266538 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2316);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="cscscsc"
- id="path5688"
- d="M 24.752063,11.376925 C 17.886638,11.376925 12.264447,15.687775 12.264446,21.123161 C 12.264446,22.027708 12.473533,23.003819 12.762444,23.836031 C 14.209585,19.667513 19.02917,16.601711 24.752063,16.601711 C 30.474956,16.601711 35.294541,19.667513 36.741683,23.836031 C 37.030594,23.003819 37.189428,22.027708 37.189428,21.123161 C 37.189428,15.687775 31.617488,11.376925 24.752063,11.376925 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2318);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- style="opacity:1;color:#000000;fill:url(#radialGradient2320);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;enable-background:accumulate"
- d="M 26.378971,5.2164488 C 25.741561,6.3414435 25.538734,8.1211695 23.941749,8.1797037 C 22.341942,8.2383413 21.932055,6.4751334 21.159047,5.4022634 C 20.226359,5.5297314 19.317708,5.7082019 18.432877,5.9303684 C 18.393601,7.1602497 19.091368,8.8662429 17.641408,9.3972782 C 16.191147,9.9284253 14.945391,8.4217687 13.70291,7.6613784 C 12.911817,8.0549898 12.16005,8.4950349 11.447851,8.9669712 C 12.019028,10.113321 13.491265,11.479208 12.415202,12.399652 C 11.337753,13.321283 9.4509726,12.307868 7.9302129,11.974234 C 7.3936769,12.569802 6.9026671,13.190841 6.4729056,13.842159 C 7.5614617,14.734469 9.6106216,15.557256 9.0671638,16.732067 C 8.5248301,17.90445 6.2768026,17.531078 4.7078051,17.675811 C 4.5084888,18.379803 4.3686553,19.101747 4.2932262,19.837128 C 5.7383909,20.333322 8.0246208,20.491216 8.0998131,21.734393 C 8.1751387,22.979771 5.9101281,23.298849 4.5319226,23.900602 C 4.6956677,24.626656 4.9249309,25.334 5.2103249,26.0228 C 6.7902265,26.053375 8.9817395,25.510194 9.6639061,26.638923 C 10.346215,27.767884 8.410769,28.737651 7.4339747,29.704865 C 7.9396066,30.320693 8.5048865,30.905911 9.1111342,31.460323 C 10.583731,31.01569 12.338345,29.869622 13.520746,30.707285 C 14.704671,31.546032 13.402838,33.014804 12.974255,34.198644 C 13.739321,34.616314 14.537104,34.998543 15.373788,35.333093 C 16.520043,34.485702 17.576993,32.890523 19.086152,33.313581 C 20.592193,33.735762 20.112559,35.485751 20.298482,36.707143 C 21.202826,36.8623 22.130234,36.971155 23.074903,37.029874 C 23.712314,35.904878 23.915141,34.125151 25.512125,34.066619 C 27.111933,34.007982 27.521819,35.771191 28.294827,36.844058 C 29.227515,36.716591 30.136167,36.538119 31.020998,36.315955 C 31.060273,35.086072 30.362506,33.380079 31.812467,32.849044 C 33.262727,32.317898 34.508484,33.824555 35.750965,34.584945 C 36.542057,34.191333 37.293826,33.751288 38.006023,33.279352 C 37.434847,32.133003 35.962611,30.767114 37.038672,29.84667 C 38.116124,28.92504 40.002902,29.938455 41.523662,30.272088 C 42.060198,29.676519 42.551208,29.055483 42.980969,28.404163 C 41.892413,27.511854 39.843252,26.689066 40.38671,25.514255 C 40.929044,24.341871 43.177072,24.715244 44.74607,24.570511 C 44.945385,23.866522 45.085218,23.144575 45.160649,22.409194 C 43.715484,21.913 41.429252,21.755107 41.354061,20.51193 C 41.278735,19.266551 43.543747,18.947473 44.921952,18.34572 C 44.758206,17.619668 44.528944,16.912323 44.24355,16.223523 C 42.663647,16.192948 40.472135,16.736127 39.789968,15.607401 C 39.107659,14.478438 41.043106,13.508674 42.0199,12.541458 C 41.514268,11.925629 40.948988,11.340413 40.34274,10.785999 C 38.870144,11.230634 37.11553,12.376702 35.933129,11.539037 C 34.749204,10.700291 36.051037,9.2315192 36.47962,8.0476771 C 35.714553,7.6300087 34.916771,7.2477797 34.080087,6.9132301 C 32.933831,7.7606214 31.876882,9.3557993 30.367722,8.9327418 C 28.861682,8.5105593 29.341315,6.7605726 29.155393,5.5391791 C 28.251049,5.3840213 27.32364,5.2751668 26.378971,5.2164488 z M 24.726937,11.42168 C 31.606233,11.42168 37.189428,15.767944 37.189428,21.123161 C 37.189428,26.478379 31.606233,30.824641 24.726937,30.824641 C 17.847642,30.824641 12.264446,26.478379 12.264446,21.123161 C 12.264446,15.767944 17.847642,11.42168 24.726937,11.42168 z "
- id="path5705" />
- <path
- id="path5719"
- d="M 45.179494,22.479597 L 45.179494,27.654144 L 44.727225,29.814393 L 44.727225,24.589606 L 45.179494,22.479597 z "
- style="opacity:1;color:#000000;fill:#6f6f6f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="cccccc"
- id="path5857"
- d="M 28.118946,36.496091 L 28.269702,36.671926 L 28.420459,36.596567 L 28.330971,41.846938 L 28.194324,41.97207 L 28.118946,36.496091 z "
- style="opacity:0.36571428;color:#000000;fill:url(#linearGradient2322);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path5895"
- d="M 20.279637,36.722164 C 21.192143,36.848572 22.117288,36.999944 23.093748,36.998475 L 23.068622,42.2735 C 22.186014,42.194945 21.229124,42.092366 20.279637,41.946951 L 20.279637,36.722164 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2324);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- id="path5958"
- d="M 15.329817,35.240133 L 15.329817,40.515158 L 12.86747,39.359677 L 13.018226,34.13489 L 15.329817,35.240133 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2326);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path5960"
- d="M 9.0985718,31.42202 L 9.1488238,36.646806 C 8.596052,36.346852 7.9930282,35.772471 7.4402563,34.938704 L 7.4402563,29.713917 C 7.9930282,30.397269 8.5458,31.005405 9.0985718,31.42202 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient2328);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path5962"
- d="M 5.229169,31.271305 L 5.1537912,25.870684 C 4.9527831,25.388138 4.7266492,24.710761 4.5256418,23.961627 L 4.5256418,29.161295 C 4.6620922,30.091743 4.9601976,30.738313 5.229169,31.271305 z "
- style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- id="path5743"
- d="M 26.399171,5.020641 C 25.753968,6.1594842 25.548661,7.9611182 23.93215,8.0203729 C 22.312783,8.0797324 21.897884,6.2948197 21.115425,5.2087429 C 20.171333,5.33778 19.251572,5.5184475 18.355923,5.7433488 C 18.316167,6.9883697 19.022465,8.7153633 17.554776,9.2529355 C 16.086783,9.7906211 14.825797,8.2654177 13.568124,7.4956672 C 12.767358,7.8941238 12.0064,8.3395858 11.285493,8.8173315 C 11.863653,9.9777929 13.353892,11.360493 12.264672,12.292268 C 11.174049,13.225244 9.2641992,12.199355 7.7248457,11.861613 C 7.1817496,12.464513 6.6847364,13.093197 6.2497202,13.752532 C 7.3515859,14.655827 9.4258007,15.488742 8.8756977,16.678014 C 8.3267331,17.864829 6.0512196,17.48686 4.4630385,17.633376 C 4.2612851,18.346034 4.1197419,19.076864 4.0433906,19.821297 C 5.5062249,20.3236 7.8204079,20.483438 7.8965195,21.741917 C 7.9727661,23.002626 5.6800619,23.325632 4.2850055,23.934793 C 4.4507526,24.669784 4.682819,25.385835 4.9717024,26.083114 C 6.570921,26.114066 8.789229,25.564198 9.4797361,26.706821 C 10.170388,27.84968 8.2112774,28.831384 7.22254,29.810504 C 7.7343542,30.433913 8.3065457,31.026335 8.9202057,31.587572 C 10.410808,31.137465 12.186874,29.977289 13.383732,30.825264 C 14.582133,31.674336 13.264383,33.161188 12.83056,34.359601 C 13.60498,34.782412 14.412517,35.169346 15.259431,35.508014 C 16.419701,34.650193 17.489574,33.035378 19.017185,33.463643 C 20.54164,33.891022 20.056141,35.662552 20.244338,36.898979 C 21.159739,37.056046 22.098486,37.166241 23.054706,37.225683 C 23.69991,36.086838 23.905216,34.285203 25.521727,34.22595 C 27.141095,34.166592 27.555993,35.951506 28.338452,37.037579 C 29.282543,36.908543 30.202305,36.727874 31.097955,36.502975 C 31.13771,35.257953 30.431412,33.53096 31.899101,32.993388 C 33.367093,32.455703 34.628082,33.980907 35.885754,34.750657 C 36.686518,34.3522 37.447479,33.906739 38.168384,33.428993 C 37.590224,32.268533 36.099988,30.88583 37.189205,29.954055 C 38.279831,29.02108 40.189678,30.04697 41.729032,30.38471 C 42.272129,29.78181 42.769141,29.153129 43.204157,28.493791 C 42.102292,27.590498 40.028076,26.757582 40.578178,25.568309 C 41.127144,24.381494 43.402657,24.759462 44.990839,24.612948 C 45.192591,23.900293 45.334134,23.169459 45.410488,22.425025 C 43.947653,21.922724 41.633467,21.762887 41.557357,20.504406 C 41.48111,19.243697 43.773815,18.920691 45.168872,18.311531 C 45.003124,17.576541 44.771059,16.860489 44.482175,16.16321 C 42.882955,16.132259 40.664648,16.682125 39.974141,15.539503 C 39.283489,14.396644 41.2426,13.414941 42.231337,12.435819 C 41.719523,11.81241 41.147332,11.21999 40.533671,10.658752 C 39.04307,11.108859 37.267003,12.269035 36.070145,11.421059 C 34.871745,10.571988 36.189495,9.085136 36.623318,7.8867211 C 35.848897,7.4639113 35.04136,7.0769771 34.194446,6.7383093 C 33.034176,7.5961319 31.964303,9.210946 30.436692,8.7826808 C 28.912238,8.3553013 29.397735,6.5837727 29.20954,5.347344 C 28.294139,5.1902763 27.355391,5.0800818 26.399171,5.020641 z "
- style="opacity:0.83428572;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2330);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;enable-background:accumulate" />
- <path
- id="path5739"
- d="M 24.726937,10.99282 C 31.907035,10.99282 37.734358,15.531213 37.734358,21.123161 C 37.734358,26.71511 31.907035,31.253501 24.726937,31.253501 C 17.54684,31.253501 11.719516,26.71511 11.719516,21.123161 C 11.719516,15.531213 17.54684,10.99282 24.726937,10.99282 z "
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2332);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_minus.svg b/navit/icons/gui_minus.svg
deleted file mode 100644
index 3dd1c9680..000000000
--- a/navit/icons/gui_minus.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="96"
- height="64"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/tmp"
- sodipodi:docname="gui_minus.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#000000"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.49803922"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0"
- width="96px"
- height="64px" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- id="g2159"
- transform="translate(16,0)">
- <path
- sodipodi:nodetypes="cc"
- inkscape:transform-center-y="6"
- inkscape:transform-center-x="-6"
- id="path3128"
- d="M 5.9999997,32 L 58,32"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path2176"
- d="M 8,32 L 56,32"
- style="fill:none;fill-rule:evenodd;stroke:#c0c0c0;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_plus.svg b/navit/icons/gui_plus.svg
deleted file mode 100644
index 59747fa69..000000000
--- a/navit/icons/gui_plus.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="96"
- height="64"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/tmp"
- sodipodi:docname="gui_plus.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#000000"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.49803922"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="46.311646"
- inkscape:cy="30.677839"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0"
- width="96px"
- height="64px" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- id="g2161"
- transform="translate(16,0)">
- <path
- sodipodi:nodetypes="cc"
- inkscape:transform-center-y="-6"
- inkscape:transform-center-x="-6"
- id="path4099"
- d="M 32,58 L 32,6"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:transform-center-y="6"
- inkscape:transform-center-x="-6"
- id="path3128"
- d="M 5.9999997,32 L 58,32"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:12;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path2176"
- d="M 8,32 L 56,32"
- style="fill:none;fill-rule:evenodd;stroke:#c0c0c0;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path4101"
- d="M 32,56 L 32,8"
- style="fill:none;fill-rule:evenodd;stroke:#c0c0c0;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_quit.svg b/navit/icons/gui_quit.svg
deleted file mode 100644
index c15b62b40..000000000
--- a/navit/icons/gui_quit.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
-<svg
- width="48px"
- height="48px"
- viewBox="0 0 256 256"
- overflow="visible"
- enable-background="new 0 0 256 256"
- xml:space="preserve"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xml="http://www.w3.org/XML/1998/namespace"
- xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- id="svg548" sodipodi:version="0.32"
- sodipodi:docname="/home/cschalle/gnome-themes-extras/Nuvola/icons/scalable/stock/stock_quit.svg" sodipodi:docbase="/home/cschalle/gnome-themes-extras/Nuvola/icons/scalable/stock">
- <defs id="defs600"/>
- <sodipodi:namedview id="base"/>
- <g id="Layer_1" stroke="#000000">
- <path fill="none" stroke="none" d="M256,256H0V0h256V256z" id="path550"/>
- </g>
- <g id="Layer_2" stroke="#000000">
- <path opacity="0.2" stroke="none" d="M11.285,130.645C11.285,198.111,66.174,253,133.643,253C201.11,253,256,198.111,256,130.645 C256,63.175,201.11,8.286,133.643,8.286C66.174,8.286,11.285,63.175,11.285,130.645z" id="path552"/>
- <g display="none" id="g553">
- <path display="inline" opacity="0.2" stroke="none" d="M133.429,53.076l8.095,6.894l83.157,70.817l-96.107,81.847 c0,0,0-30.299,0-34.207c-4.186-1.066-77.223-19.684-77.223-19.684v-56.355c0,0,73.011-18.221,77.223-19.272 c0-3.926,0-34.175,0-34.175L133.429,53.076z" id="path554"/>
- <path display="inline" fill="#0066CC" stroke="none" d="M222.918,123.788L121.725,37.611v4.33c0,0,0,29.768,0,32.613 c-2.913,0.727-77.221,19.272-77.221,19.272v59.473c0,0,74.325,18.943,77.221,19.682c0,2.832,0,36.984,0,36.984L222.918,123.788z" id="path555"/>
- <linearGradient id="XMLID_1_" gradientUnits="userSpaceOnUse" x1="54.3604" y1="123.7881" x2="207.7148" y2="123.7881">
- <stop offset="0" style="stop-color: rgb(51, 153, 255);" id="stop557"/>
- <stop offset="1" style="stop-color: rgb(153, 204, 255);" id="stop558"/>
- <a:midPointStop offset="0" style="stop-color:#3399FF" id="midPointStop559"/>
- <a:midPointStop offset="0.5" style="stop-color:#3399FF" id="midPointStop560"/>
- <a:midPointStop offset="1" style="stop-color:#99CCFF" id="midPointStop561"/>
- </linearGradient>
- <path display="inline" fill="url(#XMLID_1_)" stroke="none" d="M54.36,101.525l77.223-19.273v-23.3l38.065,32.418l38.066,32.417 l-38.066,32.417l-38.065,32.418V165.32L54.36,145.639V101.525z" id="path562"/>
- <linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="173.751" y1="88.6768" x2="158.657" y2="103.7712">
- <stop offset="0" style="stop-color: rgb(255, 255, 255);" id="stop564"/>
- <stop offset="0.2111" style="stop-color: rgb(251, 253, 255);" id="stop565"/>
- <stop offset="0.4061" style="stop-color: rgb(240, 248, 255);" id="stop566"/>
- <stop offset="0.5949" style="stop-color: rgb(221, 238, 255);" id="stop567"/>
- <stop offset="0.7797" style="stop-color: rgb(195, 225, 255);" id="stop568"/>
- <stop offset="0.9601" style="stop-color: rgb(162, 208, 255);" id="stop569"/>
- <stop offset="1" style="stop-color: rgb(153, 204, 255);" id="stop570"/>
- <a:midPointStop offset="0" style="stop-color:#FFFFFF" id="midPointStop571"/>
- <a:midPointStop offset="0.7232" style="stop-color:#FFFFFF" id="midPointStop572"/>
- <a:midPointStop offset="1" style="stop-color:#99CCFF" id="midPointStop573"/>
- </linearGradient>
- <path display="inline" opacity="0.7" fill="url(#XMLID_2_)" stroke="none" d="M133.546,69.178c0-1.388,0-2.702,0-3.847 c7.393,6.296,33.21,28.283,33.21,28.283s30.868,26.287,35.433,30.174c-1.435,1.222-8.027,6.836-16.618,14.152 C175.345,107.764,156.768,83.264,133.546,69.178z" id="path574"/>
- </g>
- <path fill="#660000" stroke="none" d="M6.449,125.798c0,67.467,54.889,122.356,122.357,122.356 c67.468,0,122.357-54.889,122.357-122.356c0-67.469-54.89-122.358-122.357-122.358C61.338,3.44,6.449,58.33,6.449,125.798z" id="path575"/>
- <path fill="#660000" stroke="none" d="M128.807,5.44C62.441,5.44,8.449,59.433,8.449,125.798 c0,66.364,53.992,120.356,120.357,120.356s120.357-53.992,120.357-120.356C249.164,59.433,195.172,5.44,128.807,5.44z" id="path576"/>
- <radialGradient id="XMLID_3_" cx="50.5859" cy="55.0098" r="259.5079" fx="50.5859" fy="55.0098" gradientUnits="userSpaceOnUse">
- <stop offset="0.0056" style="stop-color: rgb(255, 153, 153);" id="stop578"/>
- <stop offset="0.5843" style="stop-color: rgb(255, 0, 0);" id="stop579"/>
- <stop offset="1" style="stop-color: rgb(153, 0, 0);" id="stop580"/>
- <a:midPointStop offset="0.0056" style="stop-color:#FF9999" id="midPointStop581"/>
- <a:midPointStop offset="0.5" style="stop-color:#FF9999" id="midPointStop582"/>
- <a:midPointStop offset="0.5843" style="stop-color:#FF0000" id="midPointStop583"/>
- <a:midPointStop offset="0.5" style="stop-color:#FF0000" id="midPointStop584"/>
- <a:midPointStop offset="1" style="stop-color:#990000" id="midPointStop585"/>
- </radialGradient>
- <path fill="url(#XMLID_3_)" stroke="none" d="M14.449,125.798c0,63.157,51.199,114.356,114.357,114.356 s114.357-51.199,114.357-114.356c0-63.158-51.199-114.358-114.357-114.358S14.449,62.64,14.449,125.798z" id="path586"/>
- <path opacity="0.5" fill="#FFFFFF" stroke="none" d="M17.449,129.813c0-63.158,51.199-114.358,114.357-114.358 c36.628,0,69.23,17.222,90.16,44.007c-20.735-29.068-54.733-48.022-93.16-48.022c-63.158,0-114.357,51.2-114.357,114.358 c0,26.53,9.037,50.946,24.196,70.348C25.301,177.439,17.449,154.543,17.449,129.813z" id="path587"/>
- <linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="127.5151" y1="12.998" x2="127.5151" y2="101.9984">
- <stop offset="0.0056" style="stop-color: rgb(255, 255, 255);" id="stop589"/>
- <stop offset="1" style="stop-color: rgb(255, 86, 86);" id="stop590"/>
- <a:midPointStop offset="0.0056" style="stop-color:#FFFFFF" id="midPointStop591"/>
- <a:midPointStop offset="0.5" style="stop-color:#FFFFFF" id="midPointStop592"/>
- <a:midPointStop offset="1" style="stop-color:#FF5656" id="midPointStop593"/>
- </linearGradient>
- <path fill="url(#XMLID_4_)" stroke="none" d="M35.672,71.752C57.685,81.768,88.603,88,122.847,88 c39.413,0,74.42-8.256,96.512-21.033c-18.02-31.361-51.86-52.527-90.552-52.527C88.179,14.44,52.903,37.779,35.672,71.752z" id="path594"/>
- <path fill="#660000" stroke="none" d="M161.307,41.489v33.488c16.736,10.741,27.857,29.5,27.857,50.821 c0,33.281-27.076,60.356-60.357,60.356s-60.357-27.075-60.357-60.356c0-21.32,11.122-40.08,27.857-50.821V41.489 c-33.812,13.079-57.857,45.937-57.857,84.309c0,49.823,40.534,90.356,90.357,90.356s90.357-40.533,90.357-90.356 C219.164,87.426,195.119,54.568,161.307,41.489z" id="path595"/>
- <path fill="#FFFFFF" stroke="none" d="M164.307,45.986v27.361c16.799,11.406,27.857,30.661,27.857,52.451 c0,34.935-28.422,63.356-63.357,63.356s-63.357-28.421-63.357-63.356c0-21.791,11.059-41.045,27.857-52.451V45.986 c-30.527,13.632-51.857,44.277-51.857,79.813c0,48.168,39.188,87.356,87.357,87.356s87.357-39.188,87.357-87.356 C216.164,90.263,194.834,59.618,164.307,45.986z" id="path596"/>
- <path fill="#660000" stroke="none" d="M112.307,33c-1.657,0-3,1.246-3,2.783v122.435c0,1.537,1.343,2.782,3,2.782h33 c1.657,0,3-1.245,3-2.782V35.783c0-1.537-1.343-2.783-3-2.783H112.307z" id="path597"/>
- <path fill="#FFFFFF" stroke="none" d="M145.307,158.218h-33V35.783h33V158.218z" id="path598"/>
- </g>
-</svg>
diff --git a/navit/icons/gui_rules.svg b/navit/icons/gui_rules.svg
deleted file mode 100644
index 133dc77f2..000000000
--- a/navit/icons/gui_rules.svg
+++ /dev/null
@@ -1,562 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- version="1.0"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/actions"
- sodipodi:docname="system-run.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3198">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop3200" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop3202" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3071">
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0"
- id="stop3073" />
- <stop
- style="stop-color:#eeeeec;stop-opacity:0;"
- offset="1"
- id="stop3075" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3065">
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0"
- id="stop3067" />
- <stop
- style="stop-color:#eeeeec;stop-opacity:0;"
- offset="1"
- id="stop3069" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3025">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop3027" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop3029" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2892">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop2894" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop2896" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2881">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop2883" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop2885" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2859">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop2861" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop2863" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2911">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop2913" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop2915" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2903">
- <stop
- style="stop-color:#888a85;stop-opacity:1"
- offset="0"
- id="stop2905" />
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1"
- offset="1"
- id="stop2907" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2895">
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1;"
- offset="0"
- id="stop2897" />
- <stop
- style="stop-color:#888a85;stop-opacity:1"
- offset="1"
- id="stop2899" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2903"
- id="linearGradient3112"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.965926,-0.258819,0.258819,0.965926,7.28156,0.755642)"
- x1="22.96538"
- y1="35.310566"
- x2="12.641191"
- y2="11.423575" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2911"
- id="linearGradient3114"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.965926,-0.258819,0.258819,0.965926,7.28156,0.755642)"
- x1="17.413136"
- y1="7.8708334"
- x2="17.027729"
- y2="52.50489" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2881"
- id="radialGradient3116"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.977466,-0.261911,0.261911,0.977466,-2.444375,8.389657)"
- cx="31"
- cy="12"
- fx="31"
- fy="12"
- r="11.125" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2895"
- id="linearGradient3118"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.909106,-0.243594,0.243594,0.909106,8.676761,1.417073)"
- x1="21.788134"
- y1="21.876961"
- x2="10.211396"
- y2="3.4232786" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2859"
- id="linearGradient3120"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.965926,-0.258819,0.258819,0.965926,-4.11682,6.729656)"
- x1="16.487501"
- y1="13.970829"
- x2="32.566654"
- y2="30.758347" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2892"
- id="linearGradient3122"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.965926,-0.258819,0.258819,0.965926,-4.116824,6.729647)"
- x1="28.357094"
- y1="22.794661"
- x2="17.732124"
- y2="5.1875181" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2903"
- id="linearGradient3124"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.965926,-0.258819,0.258819,0.965926,7.28156,0.755642)"
- x1="22.96538"
- y1="35.310566"
- x2="12.641191"
- y2="11.423575" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2911"
- id="linearGradient3126"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.965926,-0.258819,0.258819,0.965926,7.28156,0.755642)"
- x1="17.413136"
- y1="7.8708334"
- x2="17.027729"
- y2="52.50489" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2881"
- id="radialGradient3128"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.977466,-0.261911,0.261911,0.977466,-2.444375,8.389657)"
- cx="31"
- cy="12"
- fx="31"
- fy="12"
- r="11.125" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2895"
- id="linearGradient3130"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.909106,-0.243594,0.243594,0.909106,8.676761,1.417073)"
- x1="21.788134"
- y1="21.876961"
- x2="10.211396"
- y2="3.4232786" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2859"
- id="linearGradient3132"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.965926,-0.258819,0.258819,0.965926,-4.11682,6.729656)"
- x1="16.487501"
- y1="13.970829"
- x2="32.566654"
- y2="30.758347" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2892"
- id="linearGradient3134"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.965926,-0.258819,0.258819,0.965926,-4.116824,6.729647)"
- x1="28.357094"
- y1="22.794661"
- x2="17.732124"
- y2="5.1875181" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2892"
- id="linearGradient3171"
- gradientUnits="userSpaceOnUse"
- x1="14.375"
- y1="31.0625"
- x2="30.4375"
- y2="44.0625" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3071"
- id="linearGradient3177"
- gradientUnits="userSpaceOnUse"
- x1="20.806717"
- y1="36.825302"
- x2="17.449335"
- y2="30.900536" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3065"
- id="linearGradient3179"
- gradientUnits="userSpaceOnUse"
- x1="17.659994"
- y1="36.680489"
- x2="23.031794"
- y2="31.111195" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2903"
- id="linearGradient3184"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-3,1)"
- x1="16.793787"
- y1="30.675884"
- x2="22.052893"
- y2="37.128235" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3025"
- id="radialGradient3187"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.996403,-26,1.1241)"
- cx="42.5"
- cy="34.5"
- fx="42.5"
- fy="34.5"
- r="8.6875" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2895"
- id="linearGradient3191"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-3,1)"
- x1="14.495688"
- y1="29.88039"
- x2="26.737476"
- y2="42.564117" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3198"
- id="radialGradient3204"
- cx="15.3125"
- cy="34.65625"
- fx="15.3125"
- fy="34.65625"
- r="9.5"
- gradientTransform="matrix(1,0,0,1.003289,0,-0.114001)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3198"
- id="radialGradient3208"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.003289,0,-0.114001)"
- cx="15.3125"
- cy="34.65625"
- fx="15.3125"
- fy="34.65625"
- r="9.5" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="31.777116"
- inkscape:cy="6.2374543"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- gridempspacing="2"
- gridspacingx="0.5px"
- gridspacingy="0.5px"
- inkscape:window-width="1051"
- inkscape:window-height="738"
- inkscape:window-x="263"
- inkscape:window-y="212"
- inkscape:showpageshadow="false"
- width="48px"
- height="48px"
- gridtolerance="10000"
- inkscape:grid-points="false"
- inkscape:grid-bbox="true"
- showborder="false"
- borderlayer="true"
- inkscape:guide-bbox="false"
- inkscape:object-paths="false" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Lapo Calamandrei</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:title>System Run</dc:title>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:subject>
- <rdf:Bag>
- <rdf:li>run</rdf:li>
- <rdf:li>launch</rdf:li>
- <rdf:li>exec</rdf:li>
- </rdf:Bag>
- </dc:subject>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Livello 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- sodipodi:type="arc"
- style="opacity:0.49019608;fill:url(#radialGradient3204);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3110"
- sodipodi:cx="15.3125"
- sodipodi:cy="34.65625"
- sodipodi:rx="9.5"
- sodipodi:ry="9.53125"
- d="M 24.8125 34.65625 A 9.5 9.53125 0 1 1 5.8125,34.65625 A 9.5 9.53125 0 1 1 24.8125 34.65625 z"
- transform="matrix(1.388157,0,0,0.498361,-4.756162,25.47868)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.24705882;fill:url(#radialGradient3208);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3206"
- sodipodi:cx="15.3125"
- sodipodi:cy="34.65625"
- sodipodi:rx="9.5"
- sodipodi:ry="9.53125"
- d="M 24.8125 34.65625 A 9.5 9.53125 0 1 1 5.8125,34.65625 A 9.5 9.53125 0 1 1 24.8125 34.65625 z"
- transform="matrix(1.473683,0,0,0.655738,10.43425,15.52458)" />
- <g
- id="g2904"
- transform="matrix(0.965926,0.258819,-0.258819,0.965926,6.16213,8.3855)">
- <path
- id="path2779"
- d="M 31,0.5 C 30.438064,0.50000002 29.8842,0.547001 29.34375,0.625 L 29.125,3.71875 C 28.16536,3.9344947 27.275486,4.3022815 26.46875,4.8125 L 24.125,2.78125 C 22.999999,3.5000009 22.5,4 21.78125,5.125 L 23.8125,7.46875 C 23.302281,8.2754859 22.934495,9.1653595 22.71875,10.125 L 19.625,10.34375 C 19.547,10.8842 19.5,11.438062 19.5,12 C 19.499999,12.561939 19.547001,13.115801 19.625,13.65625 L 22.71875,13.875 C 22.934495,14.834641 23.302281,15.724514 23.8125,16.53125 L 21.78125,18.875 C 22.5,19.999999 23,20.5 24.125,21.21875 L 26.46875,19.1875 C 27.275486,19.697719 28.165359,20.065505 29.125,20.28125 L 29.34375,23.375 C 29.8842,23.452999 30.438063,23.5 31,23.5 C 31.561936,23.5 32.115801,23.452999 32.65625,23.375 L 32.875,20.28125 C 33.834641,20.065505 34.724514,19.697719 35.53125,19.1875 L 37.875,21.21875 C 39.000002,20.499999 39.5,20 40.21875,18.875 L 38.1875,16.53125 C 38.697719,15.724514 39.065505,14.834641 39.28125,13.875 L 42.375,13.65625 C 42.452999,13.115801 42.499999,12.561939 42.5,12 C 42.5,11.438063 42.452999,10.884199 42.375,10.34375 L 39.28125,10.125 C 39.065505,9.1653595 38.697719,8.2754859 38.1875,7.46875 L 40.21875,5.125 C 39.569261,4.0173152 39,3.5 37.875,2.78125 L 35.53125,4.8125 C 34.724514,4.3022815 33.834641,3.9344947 32.875,3.71875 L 32.65625,0.625 C 32.1158,0.54700102 31.561938,0.5 31,0.5 z M 31,9.5 C 32.380001,9.5000003 33.499999,10.619998 33.5,12 C 33.500001,13.380003 32.380003,14.5 31,14.5 C 29.619998,14.5 28.5,13.380003 28.5,12 C 28.5,10.619998 29.619998,9.5 31,9.5 z "
- style="fill:url(#linearGradient3112);fill-opacity:1;stroke:#2e3436;stroke-width:1.00543582;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path2819"
- d="M 31.000007,1.437503 C 30.739934,1.437503 30.477873,1.47946 30.218757,1.500003 L 30.000007,4.562504 C 28.682977,4.737208 27.478296,5.264549 26.468755,6.031255 L 24.156255,4.062504 C 23.765212,4.40014 23.400139,4.765213 23.062504,5.156255 L 25.031255,7.468756 C 24.264549,8.478295 23.737207,9.682977 23.562504,11.000006 L 20.500004,11.218757 C 20.47946,11.477873 20.437504,11.739933 20.437504,12.000007 C 20.437504,12.26008 20.47946,12.52214 20.500003,12.781257 L 23.562504,13.000007 C 23.737208,14.317036 24.264549,15.521718 25.031255,16.531258 L 23.062504,18.843759 C 23.400139,19.234801 23.765212,19.599874 24.156255,19.937509 L 26.468756,17.968758 C 27.478295,18.735464 28.682977,19.262806 30.000006,19.437509 L 30.218757,22.50001 C 30.477873,22.520554 30.739934,22.56251 31.000007,22.56251 C 31.260079,22.56251 31.522141,22.520554 31.781257,22.50001 L 32.000007,19.437509 C 33.317036,19.262805 34.521718,18.735464 35.531258,17.968758 L 37.843759,19.937509 C 38.234802,19.599874 38.599874,19.234801 38.937509,18.843758 L 36.968758,16.531258 C 37.735464,15.521718 38.262806,14.317036 38.437509,13.000007 L 41.50001,12.781257 C 41.520554,12.522141 41.56251,12.26008 41.56251,12.000006 C 41.562511,11.739934 41.520554,11.477873 41.50001,11.218757 L 38.437509,11.000007 C 38.262806,9.682977 37.735464,8.478296 36.968758,7.468755 L 38.937509,5.156254 C 38.599875,4.765213 38.234802,4.400139 37.843759,4.062504 L 35.531258,6.031255 C 34.521719,5.264549 33.317037,4.737207 32.000008,4.562504 L 31.781257,1.500003 C 31.522141,1.47946 31.26008,1.437504 31.000007,1.437503 z "
- style="fill:none;fill-opacity:1;stroke:url(#linearGradient3114);stroke-width:1.13333356;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path2875"
- d="M 31,0.875 C 30.67898,0.87500002 30.416025,0.91938231 30.1875,0.9375 L 29.6875,0.96875 L 29.65625,1.46875 L 29.46875,4.125 C 28.408658,4.3340559 27.427074,4.7655265 26.5625,5.34375 L 24.15625,3.3125 L 22.3125,5.15625 L 24.34375,7.5625 C 23.765526,8.427073 23.334055,9.408658 23.125,10.46875 L 20.46875,10.65625 L 19.96875,10.6875 L 19.9375,11.1875 C 19.919381,11.416028 19.875,11.678982 19.875,12 C 19.875,12.321017 19.919382,12.583973 19.9375,12.8125 L 19.96875,13.3125 L 20.46875,13.34375 L 23.125,13.53125 C 23.334056,14.591342 23.765526,15.572926 24.34375,16.4375 L 22.625,18.46875 L 22.3125,18.84375 L 22.625,19.21875 C 22.98067,19.630679 23.369319,20.01933 23.78125,20.375 L 24.15625,20.6875 L 24.53125,20.375 L 26.5625,18.65625 C 27.427073,19.234474 28.408658,19.665945 29.46875,19.875 L 29.65625,22.53125 L 29.6875,23.03125 L 30.1875,23.0625 C 30.416028,23.080619 30.678982,23.125 31,23.125 C 31.321018,23.125001 31.583973,23.080619 31.8125,23.0625 L 32.3125,23.03125 L 32.34375,22.53125 L 32.53125,19.875 C 33.591341,19.665944 34.572926,19.234474 35.4375,18.65625 L 37.46875,20.375 L 37.84375,20.6875 L 38.21875,20.375 C 38.630683,20.019329 39.01933,19.63068 39.375,19.21875 L 39.6875,18.84375 L 39.375,18.46875 L 37.65625,16.4375 C 38.234474,15.572927 38.665945,14.591342 38.875,13.53125 L 41.53125,13.34375 L 42.03125,13.3125 L 42.0625,12.8125 C 42.080617,12.583975 42.125,12.321018 42.125,12 C 42.124999,11.678985 42.080619,11.416028 42.0625,11.1875 L 42.03125,10.6875 L 41.53125,10.65625 L 38.875,10.46875 C 38.665945,9.4086575 38.234474,8.4270738 37.65625,7.5625 L 39.375,5.53125 L 39.6875,5.15625 L 39.375,4.78125 C 39.019332,4.3693213 38.630681,3.9806704 38.21875,3.625 L 37.84375,3.3125 L 37.46875,3.625 L 35.4375,5.34375 C 34.572927,4.7655263 33.591342,4.3340554 32.53125,4.125 L 32.34375,1.46875 L 32.3125,0.96875 L 31.8125,0.9375 C 31.583973,0.91938221 31.321016,0.87500123 31,0.875 z M 31,8.5 C 32.932001,8.4999976 34.499998,10.067999 34.5,12 C 34.500002,13.932002 32.932001,15.499998 31,15.5 C 29.067998,15.500002 27.500002,13.932001 27.5,12 C 27.499999,10.067998 29.067999,8.5000022 31,8.5 z "
- style="opacity:0.8;fill:url(#radialGradient3116);fill-opacity:1;stroke:none;stroke-width:1.13333356;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path2867"
- d="M 31,4 C 26.584003,4 23,7.584 23,12 C 23,16.416001 26.584001,20.000001 31,20 C 35.415999,20 39,16.416001 39,12 C 38.999999,7.584 35.416,4 31,4 z M 31,9 C 32.655999,8.9999982 33.999998,10.344006 34,12 C 34.000002,13.655994 32.655999,14.999998 31,15 C 29.344,15.000002 28.000002,13.655994 28,12 C 27.999999,10.344006 29.344001,9.0000019 31,9 z "
- style="fill:url(#linearGradient3118);fill-opacity:1;stroke:none;stroke-width:1.00000024;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- transform="matrix(0.882353,-1.02643e-6,1.02643e-6,0.882353,10.26469,-4.764686)"
- d="M 32 19 A 8.5 8.5 0 1 1 15,19 A 8.5 8.5 0 1 1 32 19 z"
- sodipodi:ry="8.5"
- sodipodi:rx="8.5"
- sodipodi:cy="19"
- sodipodi:cx="23.5"
- id="path2849"
- style="fill:none;fill-opacity:1;stroke:url(#linearGradient3120);stroke-width:1.13333321;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.411765,-4.790003e-7,4.790003e-7,0.411765,21.32353,4.17647)"
- d="M 32 19 A 8.5 8.5 0 1 1 15,19 A 8.5 8.5 0 1 1 32 19 z"
- sodipodi:ry="8.5"
- sodipodi:rx="8.5"
- sodipodi:cy="19"
- sodipodi:cx="23.5"
- id="path2835"
- style="fill:none;fill-opacity:1;stroke:url(#linearGradient3122);stroke-width:2.42857122;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc" />
- </g>
- <g
- id="g2924"
- transform="matrix(0.965926,0.258819,-0.258819,0.965926,-6.83787,-6.6145)">
- <path
- id="path2926"
- d="M 31,0.5 C 30.438064,0.50000002 29.8842,0.547001 29.34375,0.625 L 29.125,3.71875 C 28.16536,3.9344947 27.275486,4.3022815 26.46875,4.8125 L 24.125,2.78125 C 22.999999,3.5000009 22.5,4 21.78125,5.125 L 23.8125,7.46875 C 23.302281,8.2754859 22.934495,9.1653595 22.71875,10.125 L 19.625,10.34375 C 19.547,10.8842 19.5,11.438062 19.5,12 C 19.499999,12.561939 19.547001,13.115801 19.625,13.65625 L 22.71875,13.875 C 22.934495,14.834641 23.302281,15.724514 23.8125,16.53125 L 21.78125,18.875 C 22.5,19.999999 23,20.5 24.125,21.21875 L 26.46875,19.1875 C 27.275486,19.697719 28.165359,20.065505 29.125,20.28125 L 29.34375,23.375 C 29.8842,23.452999 30.438063,23.5 31,23.5 C 31.561936,23.5 32.115801,23.452999 32.65625,23.375 L 32.875,20.28125 C 33.834641,20.065505 34.724514,19.697719 35.53125,19.1875 L 37.875,21.21875 C 39.000002,20.499999 39.5,20 40.21875,18.875 L 38.1875,16.53125 C 38.697719,15.724514 39.065505,14.834641 39.28125,13.875 L 42.375,13.65625 C 42.452999,13.115801 42.499999,12.561939 42.5,12 C 42.5,11.438063 42.452999,10.884199 42.375,10.34375 L 39.28125,10.125 C 39.065505,9.1653595 38.697719,8.2754859 38.1875,7.46875 L 40.21875,5.125 C 39.569261,4.0173152 39,3.5 37.875,2.78125 L 35.53125,4.8125 C 34.724514,4.3022815 33.834641,3.9344947 32.875,3.71875 L 32.65625,0.625 C 32.1158,0.54700102 31.561938,0.5 31,0.5 z M 31,9.5 C 32.380001,9.5000003 33.499999,10.619998 33.5,12 C 33.500001,13.380003 32.380003,14.5 31,14.5 C 29.619998,14.5 28.5,13.380003 28.5,12 C 28.5,10.619998 29.619998,9.5 31,9.5 z "
- style="fill:url(#linearGradient3124);fill-opacity:1;stroke:#2e3436;stroke-width:1.00543582;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path2928"
- d="M 31.000007,1.437503 C 30.739934,1.437503 30.477873,1.47946 30.218757,1.500003 L 30.000007,4.562504 C 28.682977,4.737208 27.478296,5.264549 26.468755,6.031255 L 24.156255,4.062504 C 23.765212,4.40014 23.400139,4.765213 23.062504,5.156255 L 25.031255,7.468756 C 24.264549,8.478295 23.737207,9.682977 23.562504,11.000006 L 20.500004,11.218757 C 20.47946,11.477873 20.437504,11.739933 20.437504,12.000007 C 20.437504,12.26008 20.47946,12.52214 20.500003,12.781257 L 23.562504,13.000007 C 23.737208,14.317036 24.264549,15.521718 25.031255,16.531258 L 23.062504,18.843759 C 23.400139,19.234801 23.765212,19.599874 24.156255,19.937509 L 26.468756,17.968758 C 27.478295,18.735464 28.682977,19.262806 30.000006,19.437509 L 30.218757,22.50001 C 30.477873,22.520554 30.739934,22.56251 31.000007,22.56251 C 31.260079,22.56251 31.522141,22.520554 31.781257,22.50001 L 32.000007,19.437509 C 33.317036,19.262805 34.521718,18.735464 35.531258,17.968758 L 37.843759,19.937509 C 38.234802,19.599874 38.599874,19.234801 38.937509,18.843758 L 36.968758,16.531258 C 37.735464,15.521718 38.262806,14.317036 38.437509,13.000007 L 41.50001,12.781257 C 41.520554,12.522141 41.56251,12.26008 41.56251,12.000006 C 41.562511,11.739934 41.520554,11.477873 41.50001,11.218757 L 38.437509,11.000007 C 38.262806,9.682977 37.735464,8.478296 36.968758,7.468755 L 38.937509,5.156254 C 38.599875,4.765213 38.234802,4.400139 37.843759,4.062504 L 35.531258,6.031255 C 34.521719,5.264549 33.317037,4.737207 32.000008,4.562504 L 31.781257,1.500003 C 31.522141,1.47946 31.26008,1.437504 31.000007,1.437503 z "
- style="fill:none;fill-opacity:1;stroke:url(#linearGradient3126);stroke-width:1.13333356;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path2930"
- d="M 31,0.875 C 30.67898,0.87500002 30.416025,0.91938231 30.1875,0.9375 L 29.6875,0.96875 L 29.65625,1.46875 L 29.46875,4.125 C 28.408658,4.3340559 27.427074,4.7655265 26.5625,5.34375 L 24.15625,3.3125 L 22.3125,5.15625 L 24.34375,7.5625 C 23.765526,8.427073 23.334055,9.408658 23.125,10.46875 L 20.46875,10.65625 L 19.96875,10.6875 L 19.9375,11.1875 C 19.919381,11.416028 19.875,11.678982 19.875,12 C 19.875,12.321017 19.919382,12.583973 19.9375,12.8125 L 19.96875,13.3125 L 20.46875,13.34375 L 23.125,13.53125 C 23.334056,14.591342 23.765526,15.572926 24.34375,16.4375 L 22.625,18.46875 L 22.3125,18.84375 L 22.625,19.21875 C 22.98067,19.630679 23.369319,20.01933 23.78125,20.375 L 24.15625,20.6875 L 24.53125,20.375 L 26.5625,18.65625 C 27.427073,19.234474 28.408658,19.665945 29.46875,19.875 L 29.65625,22.53125 L 29.6875,23.03125 L 30.1875,23.0625 C 30.416028,23.080619 30.678982,23.125 31,23.125 C 31.321018,23.125001 31.583973,23.080619 31.8125,23.0625 L 32.3125,23.03125 L 32.34375,22.53125 L 32.53125,19.875 C 33.591341,19.665944 34.572926,19.234474 35.4375,18.65625 L 37.46875,20.375 L 37.84375,20.6875 L 38.21875,20.375 C 38.630683,20.019329 39.01933,19.63068 39.375,19.21875 L 39.6875,18.84375 L 39.375,18.46875 L 37.65625,16.4375 C 38.234474,15.572927 38.665945,14.591342 38.875,13.53125 L 41.53125,13.34375 L 42.03125,13.3125 L 42.0625,12.8125 C 42.080617,12.583975 42.125,12.321018 42.125,12 C 42.124999,11.678985 42.080619,11.416028 42.0625,11.1875 L 42.03125,10.6875 L 41.53125,10.65625 L 38.875,10.46875 C 38.665945,9.4086575 38.234474,8.4270738 37.65625,7.5625 L 39.375,5.53125 L 39.6875,5.15625 L 39.375,4.78125 C 39.019332,4.3693213 38.630681,3.9806704 38.21875,3.625 L 37.84375,3.3125 L 37.46875,3.625 L 35.4375,5.34375 C 34.572927,4.7655263 33.591342,4.3340554 32.53125,4.125 L 32.34375,1.46875 L 32.3125,0.96875 L 31.8125,0.9375 C 31.583973,0.91938221 31.321016,0.87500123 31,0.875 z M 31,8.5 C 32.932001,8.4999976 34.499998,10.067999 34.5,12 C 34.500002,13.932002 32.932001,15.499998 31,15.5 C 29.067998,15.500002 27.500002,13.932001 27.5,12 C 27.499999,10.067998 29.067999,8.5000022 31,8.5 z "
- style="opacity:0.8;fill:url(#radialGradient3128);fill-opacity:1;stroke:none;stroke-width:1.13333356;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path2932"
- d="M 31,4 C 26.584003,4 23,7.584 23,12 C 23,16.416001 26.584001,20.000001 31,20 C 35.415999,20 39,16.416001 39,12 C 38.999999,7.584 35.416,4 31,4 z M 31,9 C 32.655999,8.9999982 33.999998,10.344006 34,12 C 34.000002,13.655994 32.655999,14.999998 31,15 C 29.344,15.000002 28.000002,13.655994 28,12 C 27.999999,10.344006 29.344001,9.0000019 31,9 z "
- style="fill:url(#linearGradient3130);fill-opacity:1;stroke:none;stroke-width:1.00000024;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- transform="matrix(0.882353,-1.02643e-6,1.02643e-6,0.882353,10.26469,-4.764686)"
- d="M 32 19 A 8.5 8.5 0 1 1 15,19 A 8.5 8.5 0 1 1 32 19 z"
- sodipodi:ry="8.5"
- sodipodi:rx="8.5"
- sodipodi:cy="19"
- sodipodi:cx="23.5"
- id="path2934"
- style="fill:none;fill-opacity:1;stroke:url(#linearGradient3132);stroke-width:1.13333321;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.411765,-4.790003e-7,4.790003e-7,0.411765,21.32353,4.17647)"
- d="M 32 19 A 8.5 8.5 0 1 1 15,19 A 8.5 8.5 0 1 1 32 19 z"
- sodipodi:ry="8.5"
- sodipodi:rx="8.5"
- sodipodi:cy="19"
- sodipodi:cx="23.5"
- id="path2936"
- style="fill:none;fill-opacity:1;stroke:url(#linearGradient3134);stroke-width:2.42857122;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc" />
- </g>
- <path
- style="fill:url(#linearGradient3191);fill-opacity:1;stroke:#2e3436;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 16.15625,26.5 C 15.667854,26.518775 15.184245,26.593793 14.71875,26.6875 L 14.6875,26.6875 C 14.33804,26.75907 13.989707,26.857915 13.65625,26.96875 C 13.173912,27.12907 12.723532,27.3266 12.28125,27.5625 L 12.9375,30.6875 C 12.461256,31.040214 12.013429,31.452683 11.65625,31.9375 L 8.5625,31.3125 C 8.3061026,31.796885 8.0717231,32.280857 7.90625,32.8125 C 7.676383,33.551032 7.5309966,34.349931 7.5,35.15625 L 10.5625,36.1875 C 10.632137,36.779968 10.764473,37.368191 11,37.90625 L 8.875,40.28125 C 9.1526891,40.722567 9.4647247,41.145896 9.8125,41.53125 L 10.4375,42.125 C 10.825721,42.480401 11.241422,42.810104 11.6875,43.09375 L 14.0625,40.96875 C 14.347986,41.096023 14.626055,41.197799 14.9375,41.28125 C 15.232216,41.360219 15.549433,41.435451 15.84375,41.46875 L 16.84375,44.5 C 17.332146,44.481225 17.815755,44.406207 18.28125,44.3125 L 18.3125,44.3125 C 18.66196,44.24093 19.010293,44.142085 19.34375,44.03125 C 19.826088,43.87093 20.276468,43.6734 20.71875,43.4375 L 20.0625,40.3125 C 20.538744,39.959787 20.986571,39.547317 21.34375,39.0625 L 24.4375,39.6875 C 24.693897,39.203115 24.928277,38.719143 25.09375,38.1875 C 25.323617,37.448968 25.469003,36.650069 25.5,35.84375 L 22.4375,34.8125 C 22.367863,34.220032 22.235527,33.631809 22,33.09375 L 24.125,30.71875 C 23.847311,30.277433 23.535275,29.854104 23.1875,29.46875 L 22.5625,28.875 C 22.174279,28.519599 21.758578,28.189896 21.3125,27.90625 L 18.9375,30.03125 C 18.652013,29.903977 18.373945,29.802201 18.0625,29.71875 C 17.767784,29.639781 17.450567,29.564549 17.15625,29.53125 L 16.15625,26.5 z M 16.28125,33.5 C 16.394759,33.487329 16.508957,33.493053 16.625,33.5 C 16.75762,33.507939 16.897952,33.526783 17.03125,33.5625 C 18.097631,33.848233 18.723237,34.964866 18.4375,36.03125 C 18.151764,37.097638 17.035131,37.723235 15.96875,37.4375 C 14.902369,37.151767 14.276764,36.035135 14.5625,34.96875 C 14.781268,34.1523 15.486686,33.588694 16.28125,33.5 z "
- id="path2978" />
- <path
- sodipodi:type="inkscape:offset"
- inkscape:radius="-0.96878749"
- inkscape:original="M 19.09375 25.3125 L 15.25 26.34375 L 16.28125 31.28125 L 11.3125 30.25 L 10.28125 34.09375 L 15.09375 35.6875 L 11.75 39.4375 L 14.53125 42.25 L 18.3125 38.875 L 19.90625 43.6875 L 23.75 42.65625 L 22.71875 37.71875 L 27.6875 38.75 L 28.71875 34.90625 L 23.90625 33.3125 L 27.25 29.5625 L 24.46875 26.75 L 20.6875 30.125 L 19.09375 25.3125 z "
- style="fill:none;fill-opacity:1;stroke:url(#linearGradient3171);stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path2995"
- d="M 18.46875,26.46875 L 16.375,27.0625 L 17.21875,31.09375 C 17.274871,31.40599 17.174576,31.725926 16.950251,31.950251 C 16.725926,32.174576 16.40599,32.274871 16.09375,32.21875 L 12.03125,31.375 L 11.4375,33.46875 L 15.40625,34.78125 C 15.71319,34.886951 15.946796,35.139347 16.028484,35.453532 C 16.110172,35.767716 16.029085,36.101932 15.8125,36.34375 L 13.09375,39.40625 L 14.5625,40.90625 L 17.65625,38.15625 C 17.898068,37.939665 18.232284,37.858578 18.546468,37.940266 C 18.860653,38.021954 19.113049,38.25556 19.21875,38.5625 L 20.53125,42.53125 L 22.625,41.9375 L 21.78125,37.90625 C 21.725129,37.59401 21.825424,37.274074 22.049749,37.049749 C 22.274074,36.825424 22.59401,36.725129 22.90625,36.78125 L 26.96875,37.625 L 27.5625,35.53125 L 23.59375,34.21875 C 23.28681,34.113049 23.053204,33.860653 22.971516,33.546468 C 22.889828,33.232284 22.970915,32.898068 23.1875,32.65625 L 25.90625,29.59375 L 24.4375,28.09375 L 21.34375,30.84375 C 21.101932,31.060335 20.767716,31.141422 20.453532,31.059734 C 20.139347,30.978046 19.886951,30.74444 19.78125,30.4375 L 18.46875,26.46875 z "
- transform="translate(-3,1)" />
- <path
- style="opacity:0.9372549;fill:url(#radialGradient3187);fill-opacity:1;stroke:none;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 15.78125,26.84375 L 12.78125,27.71875 L 13.71875,32.1875 C 13.746003,32.339128 13.702685,32.484815 13.59375,32.59375 C 13.484816,32.702685 13.339128,32.746003 13.1875,32.71875 L 8.6875,31.78125 L 7.8125,34.78125 L 12.25,36.25 C 12.3991,36.301346 12.491569,36.441131 12.53125,36.59375 C 12.57093,36.746367 12.542708,36.882535 12.4375,37 L 9.40625,40.4375 L 11.53125,42.59375 L 15,39.53125 C 15.117466,39.426041 15.253631,39.397819 15.40625,39.4375 C 15.558869,39.477181 15.698654,39.56965 15.75,39.71875 L 17.21875,44.15625 L 20.21875,43.28125 L 19.28125,38.8125 C 19.253997,38.660872 19.297315,38.515185 19.40625,38.40625 C 19.515185,38.297315 19.660874,38.253997 19.8125,38.28125 L 24.3125,39.21875 L 25.1875,36.21875 L 20.75,34.75 C 20.6009,34.698654 20.508431,34.558869 20.46875,34.40625 C 20.42907,34.253633 20.457292,34.117465 20.5625,34 L 23.59375,30.5625 L 21.46875,28.40625 L 18,31.46875 C 17.882534,31.573959 17.746369,31.602181 17.59375,31.5625 C 17.441131,31.522819 17.301346,31.43035 17.25,31.28125 L 15.78125,26.84375 z M 16.5,32.5 C 18.155998,32.499999 19.5,33.844 19.5,35.5 C 19.500001,37.156001 18.155998,38.5 16.5,38.5 C 14.844002,38.500001 13.5,37.156 13.5,35.5 C 13.5,33.844001 14.844002,32.5 16.5,32.5 z "
- id="path2999" />
- <path
- style="fill:url(#linearGradient3184);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 16.5,30 C 13.464,30 11,32.464002 11,35.5 C 11,38.536 13.464,40.999998 16.5,41 C 19.536,41 22,38.536002 22,35.5 C 22,32.464 19.536,30 16.5,30 z M 16.5,33 C 17.879997,33 18.999999,34.120001 19,35.5 C 19,36.879998 17.879998,38.000001 16.5,38 C 15.120003,38 14.000001,36.879998 14,35.5 C 14,34.120002 15.120003,33.000001 16.5,33 z "
- id="path3002" />
- <path
- sodipodi:type="arc"
- style="fill:none;fill-opacity:1;stroke:url(#linearGradient3177);stroke-width:1.05329549;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3033"
- sodipodi:cx="19.555922"
- sodipodi:cy="34.587067"
- sodipodi:rx="3.1598835"
- sodipodi:ry="3.1598835"
- d="M 22.715805 34.587067 A 3.1598835 3.1598835 0 1 1 16.396038,34.587067 A 3.1598835 3.1598835 0 1 1 22.715805 34.587067 z"
- transform="matrix(0.949401,0,0,0.949402,-2.066417,2.662986)" />
- <path
- sodipodi:type="arc"
- style="fill:none;fill-opacity:1;stroke:url(#linearGradient3179);stroke-width:0.63197702;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3037"
- sodipodi:cx="19.555922"
- sodipodi:cy="34.587067"
- sodipodi:rx="3.1598835"
- sodipodi:ry="3.1598835"
- d="M 22.715805 34.587067 A 3.1598835 3.1598835 0 1 1 16.396038,34.587067 A 3.1598835 3.1598835 0 1 1 22.715805 34.587067 z"
- transform="matrix(1.582334,0,0,-1.582339,-14.44401,90.22847)" />
- </g>
-</svg>
diff --git a/navit/icons/gui_search.svg b/navit/icons/gui_search.svg
deleted file mode 100644
index e363e15c0..000000000
--- a/navit/icons/gui_search.svg
+++ /dev/null
@@ -1,812 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg3023"
- version="1.1"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="New document 5">
- <defs
- id="defs3025" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.9445436"
- inkscape:cx="-138.15123"
- inkscape:cy="63.272453"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- inkscape:window-width="1366"
- inkscape:window-height="714"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata3028">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <image
- y="-0.018797088"
- x="-0.041135419"
- id="image3039"
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABHNCSVQICAgIfAhkiAAAIABJREFU
-eJzsvXmUJkd1J/q7N/L7vvpq667qfVO3UHerWzsSSAgwCARoMS2jlkqYx2a/M9jmHJvxHHj2jD3Y
-2AO8sYfD+PjN4mX8zrwxczDWY5GEDRhj+4FtjRASSGot3ep9qaqufa9vyYz7/oglI7/Mqm5J3ZK6
-9d1WqqoiIzMjIuPe+7tLRAJtalOb2tSmNrWpTW1qU5va1KY2talNbWpTm9rUpja1qU1talOb2tSm
-NrWpTW1qU5va1KY2tenCJXqlG9Cm5emOO+6odHd3rwawhkivDs+J0gQAlLCE5UR6VOtoDMDo/fff
-33j5WtumC43aAuAVpoGBgTWi5EoILoHoS8F0KQkuBbARwBoAK17iI6YBjILkFISOiMhREB8hTcfi
-ON739a9/ffwld6JNFyy1BcDLSHs/uHezSvAWCF0NoetAch2ATa9ws04AeIKIfgItT4nwP91///2n
-XuE2tellorYAOI80MDBwNZF+i2a8hQRvBbDtlW7TWdIRAP8ooH8Sln/86pe/+vQr3aA2nR9qC4Bz
-SAMDAyugkncK6A4S3A5gyyvdpnNExwF8mwTfEuG/v//++6df6Qa16dxQWwC8RLr77rtXlUq8Vwj3
-AXgHAPVKt+k8UwKhvxPCX5Kmr91///0Tr3SD2vTiqS0AXgQNDAyUifT7BPTzILkVQOml3lMphZUr
-V6K/vw/9/avQ39+Prq4u9Pb0YOWKPqxY0Yue3l6UojKiKEK5XM5c32jUEccx6o0mZmenMD0zjemp
-aczMzmJhYR4TE5MYHx/HxOQEpqemkSTJC2qfiBQVNyH0t0L4MxZ+qB1xuPCoLQBeAN3zgXt2KU3/
-QiAfgfHQvyjq7e3B5i1bsHnTJmzZfAm2XrINmzdvhlIGPCzBbJYExafFXnvmc0mS4OTgSZw4fhwn
-Tp7A4NAgThw/idnZmTM8e1kaEZL/h3X0Z/fff//+F3uTNr281BYAZyYa+MDdt0HzpwDc+oIvJsLG
-jRuwfft27LhsB3bt3o21a9ZZZlyK2ZZi8hd7Li3Mns9WPj0yiv0HnsGhQ4dx+NAhDA4NvSCBIOmP
-7wH0ha/+5Vf/JveQNr2qqC0AlqAPf/jDXbXGwr8A8AkAr3sh1/b29uCKK67E6697Pa695vXo7KwW
-1luOuc43Cmgtz58TzM7O4sl9T+LpZ57Gs888g5mZ2YKrWv/IFBwG5A8bteRPH3rooYWiVrXplaW2
-AGihgYGBMin9MRH6DUA2nu11Pd09uPa6a/GWm9+MK664CswMAMtq+nOPAs6lAMieS5IEz+5/Do88
-8gieePIJzM3OLdP2HJ0koc/296/+v//kT/6kebYXten8U1sAWLrllluiNev7PwqhTwPYejbXVCoV
-XH/963HzzW/FtVdf45k+pOWZvFjTiwjiJEaz2YTWCRIdQ2uNRCcQLRARiOgMw7JiEIzJwazAzFCs
-wKwQRSUoZhBR0KbME1vamy8PzyVJjKeffRqPPPIIHn/8cTQaZ+f7E9ARQP/uxOjUl/7hH/4hPquL
-2nReqS0AANz7/nv3EuTfA9hxNvU3rF+Pt7/9Frzjlneiq6srYJoXpum11qg36mg0a6jX62g0G4jj
-JuLkXPOGec0lpaCiEkqlEkpRBeVSCeVSBRTMgrMRAGH54uI8vv+PP8D/9/0f4PTwcPGVrV0XHCDI
-r3/1q9/4xovsUJvOEb2mBcDAwMANYP1FAG87U11iwtVXXY0773gvrrryytz55YSAEwD1RgO12gJq
-9UXU6otoxucbDVP6gpd500qV0FGuoFKuoFzqQKkURjXPHh08t/9ZfPtvvoN9T+07C+ehAER/Tzr5
-5Fe/+uCPz9yXNp0Pek0KgLs/fPfaUoP+g4A+BCCP2wMql8u46aab8N733oVNG1za/lJMnj0XJzEW
-FuYwvziHhcUFaK3PTQeWJUr/v+zbDepli0DE6Ch3oKNSRUelw4cngaUFXVg+dHoI3/72t/HII4+i
-2Wzk6rbcQQP473Ep+fWHvvzQ2HItbtO5p9eaAKCBn73nYxD8Ps6wyq6j2oF3v/vd2HPnHnR1dQNY
-XgO68824ibn5GczNz6JWXzyHTT8TnY22X5rpl6oLAOVSGZ0dnah2dILZCYMzC8GFhXl852//Bn/7
-3e9isVZfuumm+pQAv/6Nr37jTwtv3qbzQq8ZAbD3g3s3q5j+K4D3LlcviiK8+S1vxsDe+9Df3587
-X6QBkyTB7PwMZmanzynTN5tNNBpNNBsN83uzidpieP/866t2dqBcKhs7v1xGuVxCqVR+wUxfWI2M
-MKhWulCtVsGUBU9LoYPJqUl848EH8PDDDyNunsG/QfRg0kg+/uCDDw4uX7FN54JeEwLg3vff+0GC
-/GecQetfc801+MiHP4oN68Po31JQF1hYnMP07DTm5mch8uLgvdYa83PzmJ2dxczMDBYXFrGwsID5
-+UULn186lUpldHVV0dXVhWpXJ3p7etDT24Oenh5QCxMXMX1xAaGzo4pqRycq5QqAM/tBTp8expe/
-8mU89dS+MzV5CkQf//r/+/W/OFPFNr00uqgFwN13370qKqk/Bcndy9Xbeskl+PBHPoIrdhnn3vJh
-MsHM7DQmpydQb9RecJsW5hcwOTWF6clpTE5NYnpq+qWk374kIiL09a1EX18fVvb1oa9vJTq7Oltr
-5a9r+bsUldDZ2Y2OctWGGpd2hALA/oMH8Bd/8WUcP3YiPV+I+ulrpOkX2puWnD+6aAXAwMDAW8H6
-S1gmpl8ul7Fnzx6872f2QvFScBYABEkSY2pmClMzE4jjsw/Taa0xMT6BkdOjGBkZwfz8/AvsyctL
-3d3dWLd+HdauW4tVq1aBmc/GlwgAYFboqnaj2rGUeRA4SOMY3/rOt/BXf/1XaDSWiIaY6kdI+INf
-//rXH35RHWrTsnTRCYDPfOYzvO+Zpz5PhF/DMv274Q1vwM99+OexatWqoDQf8orjJiamxjE9O3nW
-Xvw4bmJ4aARDg0MYGx+DTl4O7/+5JxUprFm9Bps2bsS6DetRKkVn9CC6ZKRqRyc6q91esC6VCzE5
-NYk//9KX8JOf/GS5piQi+M0Hvv7A7xfepE0vmi4qAbBnz57OamfpTwT0waXqVKtVfPCDH8Kt77h1
-Waivtcb45BimZibOaumsiGB0dAzHjx3H6Mjo+Qn5kUoSqIYU42UQgRSSMiQ553sSMDPWrV+Hrdu2
-Ye3aNSCiM04eZkZntQtd1S4AtKyp84N//AG+8pdfwcKCcXIuUfN/lFX5l+6///6XM7xyUdNFIwAG
-BgYuBeuvAbiu9ZybeNu3b8cnfuVXsXbNmuBcS11oTE1PYGxiDMlZZOTV6w0cP3YcJ44fx+LiC/cJ
-hKRRqtepYzaW6nxM1cUmKotNVBcbqNZiVBoJorNaxK8Qq0hqlTLVKiUsVkuoVxVq1bLUukqY71GI
-Ky+lndXOTmzbthXbtm1FpbLErYL0QiZGV2c3qpVOLKfAx8bG8Ef/7Y9x6ODhJWoICHicEe/92tf+
-+tiL70GbHF0UAmBgYOBGsDwootcVnVdK4a49d+G+gZ/1+fBFcL9er2F4dBCLtTMvXJudncWRw0dx
-6uSpF6XtY5QX6uiZXKQVkw3pmltA72xCHS/LQplIaqUOnunp0HPdFZrp65DZ/giN4iWLlojyU4WZ
-sWXLZly2fTt6envO+NxyqYzuzh5EKlqyjojggYcewEPf/GY6rnmZMSyMPQ9+9cEfnfGhbVqWLngB
-MDCw924hfAlAq/saANDT04t/+Yl/iauuvLrgrJlZWgvGJkYwMTV2Ro/81OQUDhx4HqMjoy+soaSS
-Reken6dVI7OydrRBXWcFY5lf2ivS+uxM5jLNV3tkZE23jK+tYHYVk5y1GUFEWLtuLS7ftQt9fSuX
-nVREhM6OLlQ7OguFiqPnnnsW//WP/ggzs7OF54UwTwl94IEHHnjobNvZpjxd0ALgnvvu/lcE+gKW
-SOfdtm0b/o9P/hpWr1695BLZxdoChkZOoV5fJlMNwMz0LPbv34+R0yNn3T6NqLFI/cPTtG54XlZP
-aHAGKrxU5j4XVCQgFCWqS0b6ezC2vhMT6xSSzP5jyzHu+g3rsXvXLvSu6A2vyFYiIFIRerp6EKml
-d1ObmJjA//Vf/hOOHDm6VJUEgl998BsP/qclb9KmZemVn4Evku69b+9nAPz2Uuff9ra34Rc+9kso
-RSncDIWAiNH64xOjS8SgDc3PzeHZZ5/D6eGzZXzSC7RyZBqbTszS2jEREuDsmH0ZvjqndKa0g1Ao
-EIR6aWR1H4Yu6cDUWoIsHxUkAhFh3fp1uPLKK9HV3bV0XQAdlU50VbuX7Huz2cSf/88v4fs/+MEy
-96F/+8DXH/jc8r1qUxFdkALg3vv2/h6AX2stFxi79EMf/BDee+eeljPpxK/Vaxg8fQL1+tJOuzhu
-4vn9B3HkyNGzStRJUF6coo1HprBpMEZHYymGfyFMzkQESZP1GFR4vWuehsAnJJLptJCcdZLict3U
-WhBRrdwvg5tW0NA25zNYDg0wM1532aXYuXNnywrDLClW6OlagSha2jfw3e99F1/+i6+0hFQzfpzP
-PfTAQ/926R60qYguNAFA9953zx8A8omidTmVShm//Mu/gpve+KaCS02lyelJnB4ZhF6GK4YGh7Bv
-3zNonMEsAIA6dU1NYfORGbV5GFbbZxq8zAg7diYCFBGBiZRJpKMl1+hTOuvD8rA3ZCVW9rwVDk4w
-2HPL7TuUe7Yr05pW0uD6VXTq0jIWVi7ZP9uJjo4Krr7mamzYsMF3oqA2uju70VHpWLItj//kx/jj
-P/5j1Ov14rxB0Bcf/MaDn0I7V+Cs6YISAPfet/cPRfAraUn6nrt7uvGb//o3sX37juJJKxrDI4OY
-nF56G/t6vYF9T+3D8NDwknV8XfSOj/FlBxZo1WRYvhTDh7qbAIoUgZmI2Sh4dzZsum7pSEZmFQiC
-rFDMCwFn6vi0hhZhENQr9pgUlHbJSP8aHN3ZQfP9y6EBANi4aSOuvvrqNHRYUL2j0oGuju4lkcXh
-o4fxxf/4B5hdwjkI4A8e+sZD/2rZhrTJ0wXzEYt7Bu7+fQCFL3Zl30r89qd/B5deWrx3ZzNu4vip
-o5idn1ny/kODQ3j0h49ienrpOgDQRPfkCO96cpR3Pt+kzhqRYV53OCJvDZsjYqJSxFwtM5dKipVi
-ZiZDCK9za/lTgoi5PflEO/c33AMgaTOCq0FE5BjXpe4wm4cQgZiAVmulte2+vKCvTepanKJNJxvo
-mqxgviuiZqEKJwLmZmdx4sRJdHV3oaenJ9NfdyRJjGbcRLlcLhQCfSv7cO011+CxHz+OWq3QhHvT
-zl07KweeO/C9opNtytIFgQDuve99/1GEfrXo3Lr16/GZT/8OVq8Ov5wtgb2/iBOnji65+06j0cS+
-J5/C0Bm0fizVuRG1/Zl5WjdWpJyKrPOIiSJFXIqKHQIEUKshQi2KPGPxBvkGXhuHSCCoLC2/Zs0B
-7esLIO6ZrQGBpYyDVoQQ/rWChteupSNXlFDv9D0qoI0bN+Laa69Bqex8A9l6zIzerl6oJXIGJqcm
-8Htf+AKGBoeCXvr2AYQvfvMb3/xkcQ/a5OhVjwDuvXfvLwrw2aJza9euxe/81u+2MH9K8wtzOH7q
-6JIZfVOTU3jkkR9icnJqyecLcTLDmw8O8TVPNrlnfikt78oUA+WIuaOiVMVoejIbdWbVqklqC7Qf
-+5MWFATq3R7MbDYedaob5NvAZCINzOl1cPeztXyLQRALGWw7iAwS8AAEKNb4Rf0O69Ske35KNpxQ
-lEgH5vuoaEExAXNzsxgcGkJ/fz86OvI5SCKCerOOSJUyOxI5qnZUccP11+Oxxx9baoHVzTsu33Hi
-+f3Pt7cbW4Ze1QjgnvvuuQ2ivwnAqwEn6Pv6+/H53/0c1qxZW3ClYHJ6EkOnTy7pwT908BD2P3dg
-WQ//IvUNj6grnmmi6rFmkaYnAhSDShFzKfLLCgvHlinvKMw1IXQAZhYohOVBsYP4JDk0oN39JY8E
-3D285he9FBI4Y5uLUEEFC9VN/NxVVZpdk+sYXJsJu3bvwvYd2/PnkCYOVcrFzsGxsTF89vOfx8Rk
-3rdDoKaQ3PHNb3yzbQ4sQa9aBHDPPT9zkxC+BcDuNpGe6+vrw2d/57NYu7Yw8xdjE2MYHin+xL3W
-GvueenqZfHNAg+MJ3rFvtLR7fyKlGEi1nqvjNB4zqKPMqrOsooiJQ4UpANgE7/w/d5qYfOXQDqcW
-lRn+GajdULETW0QhgXhyDXAww9v7HJxvcTymjgZzY2l9LhWjg3B8QlSQUCme5g2DWnOtE7OriCST
-sOWuHRsbQ6PRxJo1q8HUAkMANOMGiAhRlA8ldnZ24obrb8CPfvQjLNZyyZUKwN3bd2//1vPPPX9m
-z+5rkF6VCGBgYGBTouOHQfnPa3d1d+G3f+szeN22Yoff6PhpjIwVv+tGvY4f/fAxTE4tDfkXaeXI
-ab7qqZg66q3aPgODCdRRYlWOshsJUMG3AcJrCwFH61toNeDd7yFcKdLk2j/Ln3Xa3Ct5EaHAneCu
-TX0KJm+gtZ2tEQl7zZK+AHtvXxKhXtnCz17TSTNrlpp2fX19uPGmG3MfPnVU7ehEtVK8ZOHY8WP4
-9//h9zE/N18wfnI0juI3f+dr3xkqvPg1TK86BDAwMFDVEn8PhMvTUvMaKx0VfPo3fwvbLyvevn9k
-bBij46cLzy0uLuKHD/8Q0zNLePmJZJIuOTCsrnoGVE6K7FvAQP2OEkedFRVFkSJnm5M7rB5UTGBK
-DzcnQ19AaJOnCCF4JpDRhi5g4HGEP2+9+wSQWIVvz3MroiBjgxQhCcOuRMQAhUgBSBtNKTpoRQZL
-oQIA0IiSaawbUqKlSnP9yDbL+A9qNYyOjGLt+nUoFWj7OG4CoMJzK1esxK7Ld+Ph//Uw4tzybVrJ
-Cf/U9su2//nBgwdf2GeRL3J61QmAXbt3/iEIe1rLiQi/+Iu/iDdc/8bC68YnRpfU/DMzM3jknx/B
-wmLx+huNqHE6uuqxGd462MqE6fNB5Yi5WlGlUqSIA04GLKO1OswCzg6jeuZUi4/PsrEzGMRVssQA
-ATplOOL0puIYTcxNxD897QvSBROuFUSmatBnG0500cfg+tx4FJsJwXjlBIEAMoe+iQaqU908tYZJ
-q3QMzVFvNDA0NIQ1a1ajo6OSc0TGSRNMXLiisL+/D6tXr8Jjjz8GtLotCJuYuffAgQPfLpoDr1V6
-VQmAe+65+6MgfA7Ip3Ldc++92PPTd6EIPk5MjS9p809NTeORhx9d8vNVTeqcHoquf7SG/lmgZeKm
-NjZ3VqKoWokUB5/Y4gLGyKlzGMZL+dKp5/RCSvnJ6uWsZraMGdxWYHLyPYfBnQfE3ydNBYDPE4CE
-LWtBGOHAk0McgdRClhldX4pQQWt9OzREIKqhc2FO+oe7eaq/aG+COIkxODiEVatWoVqtBq00RzNu
-gokKhcCWLVsAAp597rncORBu2rFrx/PP73/+qfzJ1ya9agTA3e+/e7eIPAggxXd2Mr7hxjfilz72
-cQAtzAZgamYKg8MnUEQTE5P44SM/RNwszgGoof/0YHTDYzE6GkWMDwAlxdzTVY6iiNkLBM4idyLx
-5xx/cAbJB4yOlBEpReK+TRxwrTMfQAjDhCBip+zJN5aDc5b5AbZ/276J/2lBhxU9Qu50Wg+BYoYT
-A8XCIP37zOaBGQeiBOV4Wtad6sRMb4nrXdnBIWitMTg4iP6+fnR25ld6N+MmFKvCEOGuyy/H8ZPH
-MTiYN/lJ6LbtV2z/y4PPHZzMnXwN0qtCAAwMDJR1kvw1gEtaz23avBGf/o3fKlwosrA4j5ODxwrv
-OTExiUcfeXTJDTxnaeORIXXNPmKlixifCeiqlqJqJVIOpWYnsVhGN5eolMk9O7NnytRaIDLOMqU4
-jdvb5P+QtwDP38YznmEQu7rQSZDwvL/cQnqHGgIhwuzMDZA3NQIzgpw/IBBNGZDTIgyWQgWheZBe
-m9YTsEzLuuEy16MqLazMjp6JSg6dHsLqVastEshSnDQQRVHwsZL0+a+/7vV47PHHilKGyyR006aN
-m/770aNHL8zNGs8hvSoEwM4rdn6BgNzW3b29vfjs73wOvb29uWtq9UUcO3m4MI4/NTVtNH8B84sA
-U9Glz46rXQe9PZ5hfIJSTN3VUilSzG7COhifznXzz5UDFoITB8zhIDSnWNwxYCp0vCAgkiyjU8qC
-OdwOhEyWMQfI9sMLCDgk4ZN/jLCRLIQ3dr8fT4cP4ARCCMTTSkujgjOZBq7BM3rVGJNOqphZTWma
-shFHGhgeHrY+gY5cG5pxE6VSKbcLcRRFuO6aa/FPD/9zkfm3OapElYMHDv5t64nXGr3iAmDv3rve
-AdB/RnZegYjwiV/+ZezceXnumiRJcPzkkcKv6M7OzuKRh5eC/SRT0Y59k/y64+YZWcYnIlRKzJ0d
-paikbJwenqfMwS22PyHDRa5cKXMy5A1nOjih4e6fRgiIRDJgOLwziIiExJseIshIGvd/5y5I+2fa
-IN47mLbdSgc/QkzZTEOIdyymAAPIMeKLEQRhnTlZOQWieq+aXZMdcpO7MTw8jLXr15uFRC2QI45j
-+5XjzBRCV1cX1q1dhx8++kO0epUIdPNll1/2dwcPHDxeMFFeM/SKCoA7PnhHb5SUvgtgJZDNbrvl
-Hbdg7/vuCWrbSSyC46eOFH6Cq1av45F/fsTv7pPRbswyTruemFKXDJpz6WRmO3EqZaW6OqKI03Nk
-3fIAtYbUWoFvCPnJ/p09giudsx9ZRg2YRcw1knKa1+QmWUbgeJTSHF4yvgMXk08Rjn2QFQxeWpFY
-iQM2ksmhB5M2aNrj0ozF+QacwAnezEsVBACwICtmEkTzPTy1DkDQKUDrBKMjo9i0aWNufYBAkCQJ
-yqV8/sCmjRsxPjGBo8eOhReY1w66dfO1m/7b0WeOnptPMF2AtOyXcc83lWvlzwtki0AyzL9+/Tp8
-7H//WMHHOAWj46exsJjP/Y7jGI/98Eeo1WoZJjREMko7npxWm4datb6zr7urUdRV8R4lw6JsBogB
-KFvAYDKHqaKY/UEgKEoPV8cxDKe+Ot8wouxEzyKI9PkAICQBY7E/b36xp8TUUd4Laf0ILMQEKM+N
-9rLUyskwNROgFEAMuxgx7YBvwwsUBOm9M2I0gwbGkg1DQ8m2p5hTqOPuvLCwgEcf/VHhNu1x0kRt
-iS81ffRDH8b6devcFAppa3Wxs3CdyWuFXjEEsHfvXW8B0X9BqFTF2G7/5l//Btauyab5EgGz8zMY
-Hsl/M1JE8OPHfoKJiXw+uAgwqbbvm1FbB1vhPgCwAno6oqgUcZi1axkvTONNJztlknmyQAMpwg5/
-N5qV4dNzM5rR/Zl3ARj2FSIOjA6f7AMi8c4742tgsA8wEMQvJbYtzz7QN05MZJHcf4Z/Hb8Y6WUR
-SYvfAJK5nbt9oSA4WzSwoHtmATS6aGatHzx71Gs1zM3NYuOGjV56un9JEiNSkVkwFZBSCjt2bMf3
-v/+DIp/RGy/befm3Dx04UBxHvsjpFREAAwMD5UTrvwKQW8lz990/g7e/7R25a+K4iROnjhXu5LP/
-uf04eTL7/twEm+Ztz02q1/k4odM+RiuSc/YZBY9Wxnea24b5rC8vfUZWs4WZgCBKVb518PlrjBUQ
-yg0iF7+3zw7PhpA/uLU3SVrXFNhdhRzXOwZxl4KtDLHuA4MmTInpT5oLkFtn4IRGmNPwUgVBa7SA
-CJiXFdOKYulSc6so7QMAMum+EKxavTojHEAGCZSivD+gb2UfEtF4LsgPEDclIDet6On9s6Ghoddc
-VOAVMQGaSf2TIFzRWr5161a8f+ADhdcMnT5V6PQbGhrG4UNHsmrYvvw5WntiXG0/CqRwH/DQmHo6
-o1IUETuorzxod0wvRCQUzljHZAHzBTyuiZEepoUEEiKG8odhwYBpGTadGGCliZUmj/3tQSqI5yPl
-b1b2vK0n1uZQCiAFqIjBCsHhEghs+wVkDiYlxAxrzhCDKdUPDnGwHcRwHICseVAkCPzvBWZBy7vx
-54eSSw/NJKtOZu5gG37w4EGMnM6nfYsIao3i7y++b89duGTrJUhNTjGQRuSaNRvW/UrhRRc5vewI
-4K677lpHRF8RQiYDjJnxqU99CmtWrwlKzYufmBrD5HT+A7Hzc/N47EePF4YCa7RidFhd9yRTmrmX
-YmvD/MoaxMp7+gCn7cMLQi3rW+ZlDQfOP+PfJxBYiBxzEUDEIOdvCBN8QkPBAH13EFFoaxAFewF4
-yWCebz0S7JL4zZM8imBim1rs1LtDFa460s45UKDtsFHq3LRbB1jhk2VkhwqWQgQvBA2EJsGsrBrt
-VlMry9TodLaMQwIjI6PYsHFDbsNRrTWYOJckxMy4ZMsWfP8HhabAjbt37f6zAwcOnPmrMBcRvewI
-gCL6P4WQC+zfeus7cfmOXS2lgnqjhpGxvKTXWuMnP3miMNafcMfCMF/zBBFngtqAgf2O+Z3WB+C1
-vqvsZmDI+MxM7iBSYFYpl1iTgZmImAiKQP6As7WN8mcFYgXFERRHdqOPLJY16EP79AMRIXFbgzlr
-gwlCMN4yTvnZmBNZDOwtZVLG8ccqlIiGyRWBnaNRwZoA7O/FZICId3B6tW8dkmeBCM4GDQRllAjJ
-8eblP4mlspC92qQMP/HETyA66J/9V6svFn6xaeeOHXjnO9+RKwfQFyfxvys6cTHTyyoA7rrnrjcA
-+Kj5S/zR29ODD3/wI6ZU0mWlAsHg8EkU7Wv9/IHnMWP378tAf1LJMF31uHDFrOPPahjq7IhMjB/I
-wf1Q44ec5pjeTTPj5Xc6OOvdV+6wkB0EMCkDp8ngdYGQQAyjQryDz+8RaO4EJwhcH8P+OPNBZfnc
-k1ghwA6nMPthcnWYFdJYBcPFA1jZI0iEcJeb64I2+DFgcnZLuAFaa9R1FQKQAAAgAElEQVTA/lwS
-DQB5k6Chy82jjct+DOYEQf8JZlengwefb0FT5lisFyvz9w8MZD5l5maiJnzstvfedm3hRRcpvawC
-gDS+CBE2XA5/vP/970dnNZvvLWI+HV0U7x8fG8fRI8cy9r67Zpx37Gvwyjkgy/iO+SuRiZ855m9l
-fO9oYwaz8jzjmd7PXI9FrW3NYJUG/QlkctVZeSYIBAWR09wAwMZmZ/vT2e+kjGhgFmIFqMhxnDvM
-HZSL4UfmOraoA0oICmgBF8aKIDFdDQQCWfcnC/yD0gUQtojIeSnhxjiwHkz/YLwdLjvvhaCBUJ6F
-QmBeVswMNTc/7e8SHIcOHcLERN5ETHSCZpwP8Xd1duG+gYF8VFCgkPDv5S64iOllEwB37b3rbQB+
-qrV8y+bNeM+73pOrH8cxRsfzy3vjOMa+J/cV2v0LvOHYDG8eatX6ANARseoomRnpdZ1jfoSMr8Cs
-vOcgy/Til/2zMlpeKe84zEBQR+ltiZxGVWzj9MYG8RdQqh/d84mYiVl5uG2EUrDTgPUuMCnKqHzP
-Z6YDDIIiZRvjTBLHnKnrwTkHCLYeGOzRiF1cBICNZ5Mc7m8VBA4uONcncHZowI1Dq0lABBppbjw1
-Fa86juBCc1rw5BNPIol1ZuwBoNaoFW5m8o63vR1bNm22SsjBTgFIbrv9vbffnLvgIqWXTQCQ4LOB
-0vfHRz7yc5bVsvJ4dOJ0oQ136OAhLNrtoEPon1DH/IjaeSDUIG5ClSLmzqrxCDmASvYzO07rAwwT
-DUyVUIbxIxBb3E9smF7ggmfusLA+0PIgq80twyvltCE5F57Tu0TGrHcOfSsbALtAx5sXkSIvRIxN
-jnCtgukTyAYHUk1PFqoH2p0MnHdIirxoJOcXte3mYGDYCEn7FCKCpIJAOda2oMp2Rplgi0UrKRrw
-76rlndnr7XtIhcDJ5qXPxVSZTwWH+W1xsYZDhw7akkAQC9AoSBBiZnzof/sAWjCAGW3Ba8YX8LII
-gD3v2/MeKdD+u3Zdjtdfd11LqaBWX8D0TH615sz0DI4ezUN/gPQo734SFCVA1q5UDOqpqMho1YD5
-gUxOn2Lyc8o7sxgp4yM945je2r8hx9nUvxQpUIC/UyvboggYTcqmvnHEsYP/Ds7bUB8tfRALEQOK
-TQ/dNU7o+OsBh97TdoBIuTAoWQcfkV2gGKKJjBCwmtq9BycIrAYPBAEBRGKlkWKQCgSB+ZczCZby
-CwBAQpE+XnvdEwIWL0LscfToYczMTmfHB2bBUFKgTK655hrs2rUrp5REcOvt7739ltwFFyG9LAKA
-iH4jVyjAB+77QMbp5+j0aB76iwiefvqZIoGNGdp4eJH7p+2zMtCyqyOKwFahWbgLGI1kwDaysW2j
-Tg3jW4Mh9G8bRklVvHX6E0NBUXqkckHYHaZdxlfgobjNATD3YUTWb6DY3CeiyIS0mEgF5yIVtQow
-uw2ZcTiSbYez6ZUiX0cxIQr8CZTmRNuxSf0dDr2wLzEXtSCt1EnZKgg4FQReZ1sHKSv3nowgQAuA
-X0oIzErvzHiy+nBg5IBg9kR8+ulns5PDnqw3i3eDGrh3b2G51vg3hScuMjrvAuCue+56AwRvbxWx
-V1y5G1deeZWv5wTBzNwMFmt57+3gqUHv9QdS3B1TdW5M7ThsylLmB4BqWalIGTa2KW3kmMZifXL6
-h+38ZhbiIM7ubufy++30dmxvJApzBiKba9jd0Cf6GN+Bme4ORrNzEhreyrTfa22fkyRsNgPSBNEm
-ddge0OZd+l1/7SBlcgsUZzYtNeY+pf57gnfBOxPACzJrBkSRtYBAUC5S4N9JekEGyrNjc5uWDDJO
-FARoBf6VZMTAUkJgsL71UF065rNQCJiamsTg4FDGDCAQkiQp/DjMFbuuwBVX7E4L0nn67ttvv/2a
-3AUXGZ1/BBDrT7oRTf8B77/vvsLq4xP5z3DHcYLnDxy0TJ/aqyKEUb58H8C6lfkj83GOCCCU2MBO
-h3Vt5ivZ1TF+Ehsk4Ickw/gADKuwY3rLFG7OW15jBVLK2OmRMpo0zeQ3PEWB0gVMW1xkzRkR/h9n
-+ME+zDnVYPqTQnzTlMAH0Zq+bPpphE5q9ZBBJWyQhLuRgphihzQoYER2YUtkBEHIwB7Kk2uyEwRW
-PrHyEivIaPRGBYL7mJ/22UTQxPpk45J9kt7Wt3v/c88hjrMLhghUGBEAgIG997S4oASAUAL5VOEF
-FxGdVwHwvve97zIhGmgNt+zcuQNX7r4KrY6/2blp1Bv5L/IeOXzYbuqQmcdY5NWnFql/qpX5mUGd
-ZRUpJpQch1ou9iFsp6ABAGmKK4LppPzKfQIrdrtteSBshYBbAgCnQCm4lfOCp8AYSJsrxFmFZ+9h
-zQz3j2ESiog8Ynf2g9fu1uHAnJaF5J2B1lEJ1/4Uq/gWGJPE5i6AQayJoH2L7I7HlilTi10phwoc
-mPcAP3WGKt9POwjkBQErL9gIbozdPQqEwEyycnJerxjyT7F16/U6jhw5lJtHWuvCr0Tt3rULuy7f
-kVFQVrB84J133rk1d8FFROdVAMSIfwEF6cZ33nFnS4kZ8rGJ0dw9GvUGjh/L7vlnFBfHY7zzQCvz
-E4iq5ZIql9jPQVfD26mKW5g/q7lMIp/LzSfiVHiYWL0LnXmkTQHTGW1okmls74L4nBEWhgGZlW8X
-UaqR3fJbZz6nIUEfWTDa1wkzuPg77H1h+8HpReTsca+pvTEj1soPb5jG+QlkBYFKE5gBOCHlBV8q
-QojsOJnDApv0vNP2wb382KdrHlK4BCdGOCcETjQu2a9FJaElAAKOHTuKRrOJ1vL6Eijg9ttuLyqO
-lCS/UHjBRULnTQAMDAyUCfRzreVr1q7BW25+a67+3PwsGs289j965Ci0TnLwf5o2H46powGk6JdB
-VGKmjgorOC1KDCHLLZKapjZ0Ram2MtlzDs66rDzA2r7s99IjWG3q2UtAJNabT2YJrmm9taf9X6l2
-9o5Hdnn/hgxjC0HEurmRm8Tktv/mlsPyECjke03O8QnAC4HQcWdOaGvbOycfG6kiDi2QTwaiQNgo
-Tu/jHKLmTaTlLimSrYPBOxE51fammxZtMXvJZ0fRD4MLY7qyhlRrY8nqwy1DhDhOcOTwkdzgaZ0U
-fDcAuOnGG7Eu/NJU6gv4+RtuuCH/IYKLhM6bAKg1a+9DuNzXDuht734PiCjn/Z+czq/lr9fqOHni
-JAJUDgBIENUnaNtxINXcNmcFnZ1miQ97NSPkhIbTbGaBPfurAcDY7h50GwjKZBgfBDGw2SXyOTXs
-Q1vGs61SJneiymn30FnmnHdu7Z5jbJcqaO+nFENFZnVexCqz45AiQsSOpezh/BJsoLjX5paZmITJ
-OfhcfD7yGQi2niZmTbCrGVt3MHGrBS1HBzuepMKZSChNLzYevtA5aWMAFjGx1/YpJCC/0adLNsrI
-KtiXbWm4sfloIlEjlZDmOH7iGBr1eosIIMRJHgUQEW6/7T1Fm4Zs6F+z5r25Cy4SOn8mgODj6YpL
-Y1lVOsq5rD8RYLG2WLjLz7GjxzLxWzehZ3jLIaFS4pSHm9CVErOKmNmG4eAMaADMYqWEENnl/3bb
-PrCt7hNfLfO7wXEr5QlIvwLk1JqfVnC2tQsQpN51qzXZMZ912hGbhJ5IBavzgPB3Cj16ZoWbS0WE
-teFTAaBaNsIwpozy4UJ2oU+kvlC2z4CF+t53wIBJVhbylTNM6GAHsgzsIL+TlDDGA5H1Dyh/e5MI
-aWs4eO/417wzl2xkEo3I5mP4+9r+aKhkJF5zKBQiBEAnCY4ePZqbV0mSFCaZvePtb0dHh/sUZeAR
-IP3xXOWLhM6LAPjpe376dQJ5e+tWX9dff73d4z0rZou0fxzHGBwczEH/GJXaNG095ZzKPq4fMToq
-kfJs6ydJ6uBy8FN5JRHAVxfnt5l6DJsYGirS4MuaKfIQYpuIk27zbUhIWFy6AaW+BSbjIwAAu7En
-AtPD4wxPGYhs7y1hhaBqIDAcogjbxERQSiFYUgwiIoYwk5Cx1m0OgYrsUyUNC4amgMDm97GXeoDl
-7FQZWzHJvg/KpS46M8K/D6ZAqJj2uowsW+ITjNx97QQYaWw4mYiqeylij5MnT5p9JLIgsjAiUK1W
-ccMN12fmrH1Ht77rXe/KbVl/MdD5QQAxfhaZ4TZ027tvaykRJEkTc/P57/UNnhqyoZzsbWZp82Eh
-1n4SkHEclSPFipWZgvbrNz40RWnQS3ketlnuJA7QeqYjgtuQDnY9P8ipcaedzYJ/Mkt9HYT2iooU
-uVT/UMumz3ZmAWX52AgLm4XHTKYvAnIrCGFDhmwaGab+k4hHHW7xvid2KCMQehRqdvI+d99SM14m
-RZosVGdrbzlHpwur+A7YzB8f9XBC2tlodsqp1GQx42zGHVk/hG17GmK0AoYywt/4eVQy1lx/2Lfe
-HnHcxODJUwFEMUciunA9ybve+c5cGQQM5uK49QVO50UAkFBusNavX4ergsQfRzNz0/kXIcDx48ez
-9yRAk2pM0Wazq6+bODYGVy3Z3R/sBPVTmNJoN7OF3Zb5QdpONgNRrbma4gXLRKQUfP4sC7GS1C1v
-jWCGEPvPdVktrtLhNYlA7O9uxglELqFYMnzkEYpDBuGa49bDJ/JxeAfbCScMxAIgWxSaDq6i9Wx6
-51zoPHSaGAiEokUELhfBdSBwe6bCxvK/MREcg9tkIGt3ueanX1/LT8+MEHDzwEql0Xj9SS2qGfA/
-AMLRY8dgdz9Oy0UKd5javWs31q9dn80NNk15f67yRUDnXADs2bPnShDSNdV2EG9+082Fn8aenpnO
-lY2Nj6Feq+Xg/zxvOC6kEp/Lb8NolUjZXFoJJodLaDO9ZKup3Rd8vJlKSMNSbmNMENh5vyPrxLLb
-gxkEYNNvrcZyOf/Kqn3rTzPtd4t/RBvtHehsACDR1h+Zcl3rppamC6bdLtJg7k+ZSc2288Spze93
-RPLa2G5zxvCFbuGCM4RCtBxYO5bJLfNa8WHseHs7Jp+U5KIaALJCIO2qvX+67wEhTLqyZpNLFAqF
-G4W/OKlBiIWSyXjV8VDTg4yPaXy8YLlwgQAgIrzlzTcXrQ94w6133rozd8EFTudcAAjJQLrVmkuo
-INzytlvM+cD7v1hbLAz9DZ4cQnYaAiDSk7z1RJb5zTsul0iZ2LrViLDOfsA7yvwsNoUe6wIeTZrr
-AavRGBSxER5OLFB6D07z9TJ+BraT1uzPq+C+3MtkUoLhkINL3jGYFyY1wXjgzWF3BGIveCz8Ng13
-txAHQmx7PFiwfgliu2zZsitbUWIEo5BJRrJhxUAaWpY2NxXxZ722dyjLmh0mMmGuVIEUsQCsRQhk
-363fSs0OrrLv0P1tUJ4TAsb0cQIpvSdArDDc3HhMKP3imTtOnjqZm2dadOEms29965tzZYCAtLro
-zIBzLwCAPS0uFGzatAGbNm1C6PgTMZl/rVSr1zA61pIQRMAC+k8nKDcBzjJ/xMxsPEORnTieMTmd
-RI533KaZ7EqDPajIcgZb1WpAhYO7AfP7dbqGN8UeGRXoZqpjBtsUZbWcERStS4czjjk4zz+7tQaB
-ze6OMJMvm/xneMQtWc5woEUFjtGcN94hC++MtOPhBSdatLiTJOR0bYrWVJqHBe+YcLUoRGpu7Nkp
-bi8wbLvInScym6WYobVvsEUINFFuzCU9w76z9qajI6Oo1xvZwSMq3FJu08ZN2LxpA1rtABHJfbb+
-QqdzKgDuvPPO9YC8vnXgbnzjjUGttHxuPvfhRowMW+bPoDjCHG84ZZjfcxMAoFJSyuXk2x4RExB5
-bnD41TI/4DPu0slmJ5Ky2gYIPvZJ6cRlkAsZkv8KN2Xse7Ja1bXbuR8ts1gbxH3vx1m0pineJvec
-5SGDZQgFhlk9E2YehhrVeggDAYJ0HFJcnpY6r76v47MKzdOIM/cMXw3gjID0laWhvXRcbNfJ2Euu
-w3Z34la/hes6UtRgLCuC34zEOA/TiqlvEQAw1lx9yrXQSQYRjZHTwy2jBSQFCAAA3nTTm7IFZtq+
-4ZZbblldeMEFSudUAHCJ70CI7SzdfHN+g5VafaHQCTMychopXDdHTJWFBbXWxwqdgyhixVHkMCa8
-oRwyBqVKwE1LexOkGoRtjJ3cZA3UGmevZ7DVPlkvPpH4zTwiH9Kzj3IpvPbBxj7J9tHcIzRhKG+6
-BOSyBDPZhe4aSvPqgQAhONmSKXWZdWlf7Bj7BzMZ0ZOaU66S+PMuROra5fYFMYiC7ciLMYxcCrT7
-xrmL7zv0k/6aGR+f4mi7ZtABe8HgHMNTcf94LKXFkNEBwtBwdpk5AcASZsCNb7wRraasAKxKpcKc
-4QuVzqkA0Fr7OJ8buL6VfXjdttfl6s4WhP4WFhYxMx2gAvsGF7B6SOvQEWTgYKXCPpqcOqx9CCBl
-QOfND5jfJ5fAJgS5G4njQLcZZ8q8ymfLwScKmeXDQikDeS6iAPRaxqbMgPsNQBw89hSiiHQnYDci
-AS+nEsJ/VDQYPqtxW7P5iK3PIahqvZspIiB/Im2vE15e2BizIXwe4IRAujkoAXaVoRfV/lNq7knk
-Qor+SQHEzwhgAiErBIy/IIABTDIdrxxMsYp5ytT0FBYX87sDFTkDt229BCv7+nLlQmiNZV/QdC4F
-AAF0a2uK75VX7i70/s/Pz+XKRkdHW98ZDPxffzqF/tYWZFDEZhGftXbtpAuZn1Lmb9ESjquZAlXj
-YufpxM1oWXiOM1e4T2z4mDcsw0iq8LNaCNZuT5NznNYWCngV2X9Oe6uWg91P2x67vaAfvlC2GKan
-IHffwYK0ow5LEII2MuxKRMvUfspYSE4E991BE8wwkkVY2/cRIBH2h2Fmbx6k45iGCgG/bsChMHed
-EwLB4PpWWZtiIu4/jbR7/hgZOR1AIXMU7RZERLj66nzYGqB3tbzSC5rOmQC4bc+eKwDk7KPrX389
-AMl4/5txo3BzhvGxcVDLK4upY67OK+aA1BtMBCop5sgtH7X/pTFtd71LY/Wa29i2bhq5mShuQgae
-ZveSCQC05RUnXPxynJSZ3AR2FOhjx5L+76w2h2uTm5fMMCmz6U7iKbAJr3T3ZTJrLpUg3O4/YG6z
-aYgznsgiAIdkvNb34+fxjN8IBYDbx5g5FQSUPoSc/8WZUsLa1KewrhsT3xo4o4u99G+dGaF2TwfY
-JSq41+jNDmKa1StmYl3O5pcTYXR0NDeEAilMCrr+OhfNDn1aev2tt966O1f5AqVzJgCUSG7PP2Lg
-hutvsH/ZTUEEmJsv/rpvuOOPe0sLtOo04OxIO98BlEtuoSlMZhr8eUMu999qbufY8kt2SYRhUnFN
-W0NdLSREYlf/wX0rMGgZmEmIzeRJffdhDcNgbn28MpuSuBQBUy3DrIwWnU3mI0Xe4eb50jkbAplh
-6rc4BcOchWDWuwx/cuOVCiqk8N8+0fXMpUczJGhuixDwf5h0YvMA7YWGkxOmbZZp/Z4gphVuk+TA
-JCA3l0L/gEd45CJCFDTB0JSsHM4ISgDT05MFm4Wg0A9w9ZVXm9kg2UMryi9nvUDp3JkApN/SkjqB
-9evWo6uru6WiYLGWh//j4xMQBJ/Htf8WaM2om6DOhmaz24614+2MQDCRrf0OOwmdV9rswRtyoK3m
-pYbd1dcyLCiEvHbmGoPT/CFBYhEDGsbrrRT7RS+GXwLtpaxnXFnG8luLgcRt9WUeJO6BBM78IzCg
-nc5M4/oEZ1IE+QCW10x+PyNEKRaUGJ7KODRDNONWBjpHn3HemQ+apNrehVUDLke6IlPbv1OpZQWU
-F0IWjZB7z64vVmpmhEAeIjB8IpE3rUDT8YrRVBza3mjB+MR47h6Jzi8RXrGiF+vXr8+VA3hLUeGF
-SNE5vNdbW0HU9u3bCysu1vIbNE5OTGYgImBSfxdo5axJYCG4ZB8VbHeTMr/TGGKVhEszTSc1A9AE
-YTCxD9f5CeNsFPcY9wDbLgGDIAISEbsjAOD1RgKANLRbvmAHQ6CNN88Pjvb3BQAtgLmtuaaRiLVI
-EyzUdBNsQ5JknYFEEGjqLCmlTTNIkCa+pL8IEgFYAxqaTOecxmaIbYdhNEHifSWA1gaqWelKWkSI
-jGASNptvEkhY3GIEM9qJJFBgo01JCTSQQIOghFgUEvPMWGvEmmOzzJIo0eleXMxEIiIsBG2Gxpxw
-nTPyhAQQZsPQRAQRs1ZBRITte5lJeqcTUU3FOrOef3x8zK79T+db0denAGDX5TsxNDSULRS0EUBI
-77n7PWtFsK01f/LyHfnMyUajUbgUc3oqSAqyIrtGK8eZlYTMTwoolZVZGBNiPoLlLbJhJnvG2/WO
-2GYEOSh/lnY/Urs/e7+gzYEEdC4PAaDFr4sUDYG2NqdY10icQJJEpJFIkmgtc7W4MV/TDQIhbkpy
-dHxx7tHnZ8a+//T00Pefnh5u1pOk3kg0IKRFoEVIIOYDGCIQLenn1dg3BYDOOQdh2kci6UYmQZaj
-cQgWOAe5pKhUVlwqKS6XFJMidFYqqlRW3FEpc7USRdVqFJXLikqKWYFRrXZwZ2dVlcyHTtI34iF9
-MJwWN/nYv22NbVAmgStL7IU9wJjXXePhFCGYz4kFloHxAwhyqwAB4PKdhdm/r7tY8gHOCQKgRuka
-q4QytGt33ldSK/heW73RwGJtMbXfLdM1qH88De+Rz/pSzvCzVZ2GDUNSAIK96QJJx0bba7A22k6Y
-WQARq1XCVpC7D4m0ML+kPyQNHwhgGV4LCKS1HxjD9Pb7A/ZrNUYPJ4nWIBadaCw0dUwELNTi+Imj
-c1MHhmqzDp6yMgbH6y/pWMUKlBBJibRNSjA+gIaWhIREKeJGrHWJwSKkY8PcQkb8mAFMFS+gSTS0
-JFrpiIU1kbjFTS37JUJs9oxZLmWQSVmZjdMUMWkx7EREqERKqQ5Gs+GGQtDZ1aHqM/WYCUgC55vR
-5GYppNgvobIAmtgv5jGYQHxrmClAARbkaIYxyATzSe/4imh2ffAQzC/Mo9FoolwuhcXQWofKAwCw
-ywqA3Ho1pa4G8Pe4wOmcCABmXNcqPCvlCrZuucR6V1MPeK1g08+Z6Zkc/AeARe6fAuDiYvZZTM5m
-TInA5OxUACQuSBQ2UiCaFDlJT367K6e9HQJw+kPsumIzwVxFZJgfNhqoIYC2Wl4gWsguShaI1kLE
-SOIEiYIYTWvulWgRgEQjQS1BkwDad3R+8tFDM1OJiHj/uBKCaEAxYsQgVBARSVNzUmKtBEpDNDmW
-TLQWAqGpzSokEWgmEIlxcGrTcIQD0NTQTECiSaxvRUx4VULmBIHQbOrkxExtcXSyUa81JCYiKpeZ
-166MOlrLVnZyqVxmFZZvXxv1MsHvt+glDFkGF8PEAJzpBgAkYtKwtBMUEOOFtSLJVhDSDBGN6aRn
-cmMBWJiemsKatWszZcYMyAqATZs2oVQq2U1pgxlHci3aAsCSyNVABgFj3cZ1oXPNS9B6PZ+IMTtj
-vf/BexJEzSZ3L3imtA6giJm9NLZBfSYhgRIXj3b7AfhYfJoRRCI2wwZCmggl0UgSM3UASJTx+oUT
-h2AUEyBuV92g0aKNCIlFrHMB0NoYt0miodgKhwSUgDRsExINiIg0E9FELN9/enJk/5DZHonZzGtm
-AEICFhJRwqwQlSIbD4mpKaQ5TrwSBBIwkxjbHSSahEhMB4U1SEwZg7QWiTU0gUgpRaKNQCticKOV
-iUQ0FSETAOCTMttsaMmUKaFmw4yFK9+2oryCSpEgYSlHrGBTKY3xBBALiWYx8FyDQdA2qcOINusb
-AINJQ7OANNLtGK1QWEi6FrSopqIk4weYms4LAN2ixMw7YGzetAmHjxzJlAvo6nztC4/OiQAQSPCF
-D/Nj88ZN+XoiaDTzO7HMz83n4H8d3VPi/0rj/eyWkZNb12bOcyprvF4TCJgURKysEONBFi1ETMKi
-KbEPcWElLdCkEwYAsStRxO4UrfwKGIh1IIpV+qkXz/yfJNGidbojUpIIEmt2OOeAMROM4w8A/uGp
-yZHnTxvmJ4C0ZkSRuyNBkxIqV/WKro6SCAAF6BiahKCN6jT2NDG0jsm4HvzaOTjgY1U/iQCJdn5D
-w/RDM/XFE6dri0UMnr4PIE60tCITAGjUoUlRpgzCIgIJ6y40kqRTRUysEQt0BGYmgQEoBBFthABI
-EDrojdwSjdQsMHAlMdMkgfGKEsz31qBlMalOdUdza0JQODc/h3TKuPlZ7AjcsmVzTgCAUJQldMHR
-uRAABMHlrYWXbM3voNSM48JBNnkBWZjW5O4ZM2vTtE/AfpkGKfO79SXe0U5sIHbg5UpRBAuJ2KCU
-ndBMAgElOt1ChxVpiBASCVfTIBENRQwtZpGdtkxPyOaRiGgb2iI0DTLwN/dfqhUgAek4SQQAHj80
-P35gaGGeAmcFW497sI8e0Fjk7z+thx203rmha0UWpgNQQCOmxEUP3BQPYbz7qaFlsaYz/oYi0yNx
-z1eMOCHRrIShSUSJVoDE2tQvERLj+ickRoM2RIRKTKwhbiWgiEgzTqRcLlFEzOWIVEKcpMa2EzkA
-KYZoDbYeDMD5cWxFgSgoJJS0TiMAwCI6Z7ppfo37mwDMzc5aYW5fjXstdlxC2rp1S9bCNQJ8V/5J
-Fx69ZAFw6113rUXS7Got37xpc65us5mH/41GE81GM+PQB4AGuudC5nduaGblXxZ7CGAmnxcKGVNC
-g6xnGGRgnrUhnQvALLg3eUEAjLZ2JoENDxpnMRO0wIan4MGmgaVJGuhznkHne9digIcW42QUIBbR
-zsR4/ND8+GOHZ6aJAdEO5liFa+C/HRgTR98/tGAyI5VQq23tBMPW1dXuVggPGMZrhfPPnpqfDZne
-BO9S0yNhJdAJJWCQdXU4LzvItNn9niTmnJiF0qRJA0IQItEmfitkLfpmMxYioCOKiFQE0gCYSLSI
-F2aBILBmk0UxECbr0nTzAQStLBMbl6MAjEVdnWuVC/VGHY1mAxj/FkkAACAASURBVOVSOTPxigTA
-pg2bsvatod5bb7111fe+9738TiMXEL1kAVCJ4226ZXQFwPp1+QSKRjOf/rswP9/qrgNAqKkVc8Gf
-AICSXfdPPtaYmgBeyxsDXNKMO/ZanOx57S8PQhfEOrHeQSLD6AyhJDYGp2KTpwMSJIkWpch+Q9Dy
-Nyk0E60jEhYtiLWPzYuB5BqRYopjLYn1ESzU4nh6IW48dnR2CsYTCGIlJkypSQiinM0hDA1tIu5O
-VAnL3zw+PgK02OFK6AfPzIyHEN71Xwp+ipAw2GpXgTM9tMBv++kYPNZKKySk3asOGUMAiIa218Ra
-aZNN6X0mImBEHd1aZBaVSkRuPwcGm5ApAC+KE3Ot2M8tS0H4GDCKQGvD7AyNBGTDB8Z3tJB0png/
-gAgLc/Mo95Uz9ypwA2Bdi6/A1UpYXwrgtS0ANOlLW/afBBFhw7p1VpoCbtCLNl+o1etAy/VCrJvU
-tWhT4vzuPsw22ZXSBJ9MKoPlcOcBMMyfIgLSQiJpBEGsPS6JWOevvdK6oTVI29gzNcWGiy2CbiYQ
-ThK/b16iSTOEYkAnQhKG0UAgVgbSx0QJiWQ8/ZYbhUjZyS/QxGLmsIDNpgIixNAQIpR1hKapKSyt
-djiExZgWgY0OeBif/VkSzSQMTQxCU5MGA4mGj7Wb3IXIfH1HAzFHAq2DsdcgnRBUuoov1qSJiJIE
-AiaJLGgiAhZRjomARiOWiMtGBmkNMx1dBEeMaaG9bQewYXCbbGXDBdYLYJuSaIYiDS1GdECARd09
-b8MZGV2zuLiAPrviL2X8sF+G1q1b519+Zp4mfCmAH+ECppcsAAS01f7iqbunC5VKhykOnGNFC4Dq
-tVoO/idUqsHuxeOYmSjdzhsGnqfvkkyyqXIeNsNIQiI+7MeSBgWsT8058BhMog1nwUQJAONTNvJE
-+zIYDG3QJScgDW1vrE3kqRlTQha658NoADRynn7FTIlIYITYMSNlfIVs7V6tQRyZCIPj4lJZCyUE
-HTPskulmokUphaaJY0rillIzoEGkdEKxttv/QKNETE2thYnJmEwwz7aOO61Ze55I0Yf9RVuYo4S0
-kCbWrqLYvGqBNq57BiAJ/dSqsS2JBvp6SiUhSsK0btZkbXvxQspk+HnDD8bdD2hARmYa9aHxWm16
-odlcqMU61tCliLmzQqqvs1Ra0R2VVnWVKomUaiVqVkMksFirwWUBueKiRUGVSgU93T2YmZ1xb8bR
-1lzlC4xeuhNQsKEVOPUVrKMGzBbNrVSr1TOcDAAJdSy6BbXOg81hBQFBWUe2tEgDm0LmFq2IwMeW
-7aeunEIE21msEdyAfIzZPEo7L5+z+R0k96E8JCbcJ0kCcSl0S8XJJ2cazdDTn2ilWYEQB6OgASgy
-kJ8ZIkpskIK8hgqFhSgRZp2IQR2kFBpNbZCB1ZAaAoaCCOmYGKCYHeTWIE1cRixamww98cEU0cq8
-XAunxf30HANvT7iUZJCVWEKIIYhMFp9oGKAvSKS7Wi4t1JK4uzPKJHUZIQDABPfSxzjjTwQTs3H9
-yaOz0/tPzM43XB6xdo0xlIb0NBQzXXYHT6/upGowamlK+lJJhQGtWt2P6dlgsZoAIrLhjBe+yukl
-CwAiWd0qNHt6WhcAGSraeKHeagIQEKNSS6128TvFKmVnHhkEqlSK+Nl7zWASfAgmyR0m+cWcYCAx
-SFbETHzA5bpbDe1ABIwgsPvv27YJaS0uM84ENMRsJdwUs4pnuQw+AGjEsR8tgdIwjkVRkZBAaUkS
-v0MJUUksbrUpRSxAQiIaElWTRCCIG0RQcDrRRCgM/IEoo4UVAGNjE5CAoBBTlJhn2HOJBjEjSbQw
-KWM2CKd5MQLjPiXjRtWkrVBiQGvyiTvC0AQkCQk7BwYYiUBKdnljV0WVao0k6awo5dK6neA0H2Cz
-9ruPhJjeHRutzT9yYGpqaKJedzEASh9rs4WCKIHYZ2sto7MyvaYTGcdUvZZ3SheGEQD09qzIOQiI
-+YJPB37pPgDBqtay7u68ABCRwiWXzbgJ78GzlFCpDqM0skvsBW6RXPDFGKOutZgPeKaV/ZONeWCj
-B+SsEgh0AmJlVsYaJa6tRUBIYBba2Ht5IyWKCHFiUlHYfiy3luiYcOYMPgBIoDQrBZ0kZpmiiHHS
-aYjWBI4iC3ZDLc9ioxeUqLL2xRpAVBaT/GbynqXZoLoqxW4zDbOmwexamoA0if1ooNXkSLGVOJ+J
-to5LY0AY7jSGungriD2ysIPpgbs2qbjMPlqQMKCQMKzHPtbQ3R2lqFphBbNuQaBMBr9AWxTnbqlx
-dKQ29/D+icmRKZtEQkCaKWggA2WEgGlJKARma7zQ6ghsxDFSkeGuKnIDAr3FSi039y80Ogc+AKxq
-lZk93T25erpguSUAJM2m57L0npVmZnk+YPa4C3L0YBJByBr5/pTb2sr734hMri3MqrrEZvMldtVe
-4hgfDCElDKHE4OWMDW/vDRGgXI6o2UzE2fZFdr0Lo4mQaAKQmGeDNDRsQFxABuoDETujBXCJTkYr
-2/6DDLR2/AWAWYlGEg6cNKNqwqKBKLK2jnL2i2itwYpFx3VKONIMkFkyCJh4AwmYwTp2EEQM05rU
-YcNydlVlGIVhNhqfEgIYsZBANKLU2ypCSksUURQp6umslQSkg92dKdbQKoKL3UFryKHTi7P/68Dk
-1NiUy8M17JryubVJrLAkrYMMYlvXNnGuobyzyQ1Y3Gggle7i/2/Mxuw87entdUPsywjSFgAE9Ps/
-7NgYASCZWkUrAEUETff5r2DANZWafsPJ9BwZrg4+nOEAps1tsxl/vmHu3UZOCJCNCBDcylSQGK1s
-TUwPMYpseAAoynefr8VJcQaf7ScZO1onJl+fuCTCxr4VbRLWEiKhMONJAFLKTnbrwnS7jwCkhU10
-RJSwYiRC6QwOkicgRthoaEARmloAKpn2OG4y3kMzlklCCSsjtkgJCGaRlZA0NCRCwokdYAIQgzQl
-IDDb1GcT81cipM1GjlAANEjIRnHqMeKIQX193aXBsflFCESLoKcMVY9FP310fupHB2em5xpNa0Ol
-TdQ6EAK+j2kfvBAwE8nPw/km1TM8TUi/Geinl502LT5mAOju7sqhA5Fg7l+gdC6cgNXWgo5qJbN6
-ikgKN1zwqKDFBNBcaYQnbGIMAJ/sDiEhBbLJIwCxEhOoDxC7uwcAtvIBsIk8BIk1affo0HG3VCqs
-o9Z8dwnzCazdmmjWPoymlfGik7HrtQ1gGaitUo1DxpFGgRzTxM4BKCYvSrn8VxPDICXGg0+kyXn2
-U0enEwI2gGYYJ8XGvs3p2CsxZoPpWyIQEYKGycuPPepPBbqY3B1A2O/jLxZNKLtUWXEJogEdafzd
-yfLJHd1x79HJ6ZlymXnzSu4amWnU9w3WF584MjOzUNdutaE1Mizk0TpN2daCLJ+nUoKgkUIWM1hz
-da65N+37qgVJEkOpKJwqyLO/+XCoP5lSJy5wOgcIQMrOEeyoVMqsuzAOtwIEkKbfUkt9Ni6gVpFt
-NwUwE5l8ebpdmMnuI0L2s76upkDqTWPGxjCZeGebCiuA/9Zfa757s6lFRSXEiVm1koiAFUM0RKDE
-OdKcq0wRk1mnb1vlZrX4yKfYjhlLJN0VI2V+Apm0Z4CJSatACGm7TsgJAue+B7yXPS8EQmLrVLS3
-C34nYuv9tAyXmuHQAJqC/5+99w6z47juRH+nuvumyYNJSINBYgKYwASCpERJVDAtrWX72VpnaWV7
-/Xb9vfcsv5Vsr2wFr/192nXa9ZOew8qSHOSnpSzLliiKosScABLMCKIoEnkGk/ONXef9UVXd1eHe
-uQMMQAzIg68x93ZVV1f3rfM7oU6dYsEGJSQkwA4E4NdISiFrEpTNuPT9keKC+WnueXJ6vOJLzhQK
-Nq6on1yLcw60FAkz3Sm15z/k89AvQCIKAkWfqnHRAAAsJciJ8XUKAniul3ACAsjWeYGrhs4aAHwg
-G3+pruMl6qU5V1inw0n8KsINh4GZ/9JZf2FNSZtyE95rbHjoS0LJqiQIq5lALsuoxz4eCus4HM47
-61V4xjsmhN7eGoJBVapJIR2XdcCLXuurFRNl5wLQ2W2CKXQi1unKIk5svYAAkJJMIBAE4JPDjhKI
-ysuvAIN9cjgMXLE4xxKNJOxpT6UFBFNtQs+51wWCRhQCCqQOh4yXainNQkJCsBAq50ipWEbWcoxW
-WeUXMz5JCQuc9NhQiBlFm4RJ0AAEqjXHjykAAAi+ZHiWH4ATdRR5rpM4x0AmWXN10Ur4ABIvwfWS
-zabEVyhJksL/0mTYEADBhLEKrQQIBms+d4wwNLNxUcedvTjG/LAlRh2PPQeOO98HC8fqFzus5xNJ
-GqEnAJ8VUNVqJLUZwNpYYQaR4xCpuXnt2BIOGx8GyarhThJCUBBfz9CMQRFhyCoTmIpbUXECenMs
-FxaEBJIXQCD9lAIQNQUMSCytDSRJaQHWfQB73i3SbwBqQRNUYjJixYcVZHxZqmK+Kmr5QkH1yTQV
-9Mm8EATawJmAACRQlZBxz572wRh/IQINIUUDcDMZS4QFn97UAMBIiHvXcRB/i5SiAUhOMQGUxJZC
-z12H57Riqgx+DnbvDVb81Q++6SwIr78rV+htz2Tre+xNn1lNMaYMAmaHyZGkZ9wBctkk5tK5tyCh
-IupIx9EDajUrCWGFRgMslCPOdxx2fD9IWQAoic9QjkMKIvgAQUJvZSX0JJ9hehH0VZi5eF0SagOI
-+APUqVAbWC4IRMgyAezbKYmuOlaTDI+UOlWr1lAV8Gs1swE7IAyQAZBCag0lZG4AMZMAEb9AAgQi
-MwQS0uf4khUoRUMGn+3zcVIp6K33oz4mVd1VRiuxHDhYKRqcMC52GzM5+VaDPPAWKa7W6r4+YTvF
-Atvfit1fKvhGOEyE2clCxhXT82W/EqS0iq65D5be6ogglWgylE1qWk8wQ0ij+7LJUEWAlMTC0ZP7
-uvcOEVXg+oLUGjghAB8MkySc4BO7DmszgZWnz5j94bsRUN5uQa7+HjKZ/fINGAgOXH6qI4K0tNO1
-Y9rAmYFA3PQIrw9KrO9VE7VHEqz9v5JrIM9RSowv9BMISFvCx00CthyEwlyjCo1zMJwh0IDpUtIB
-AASbkyzlA/BrEgkZxpw+t72KaAXiALiMGBLWatWABQx/p0Vbkkj7TQgiMIlD/UD/jGruXxCY1Nr+
-ZoJvwMosWKxICUHICZeqDJY1P7rmXtvrOtQfgASzgI6kIUkSkh2pBp8f9FeS4BpcSULpAgBAjhp+
-VXKlsW3dANRCpxzDYZ+1wi+cwCkghGOpxUbCiwizB/kJLaa1B79Q+giMJkDQIGD1IQIC5nlMmw0A
-IeEMbAQibJ5EhrMTkoMgHeVEMKp4DASQYhLEQSBiEqSDgCdgG3WhcNDTL8YHECm0qJYWx0KUzG+3
-ymglNIBEih972W+a7W8o3FUHsZfuBzqtOe1oh1WwJE/SkumzzIAAFKMRMXmOg6pOHgPX0cPNN2tR
-dKdNaK06o5okBnuspL5Ujj0WDEFcM6tjhRNaxir2IFilFmVdKOkvzBNqR0Wg5hgV3mQ6ElFZGwb5
-AUEbiEhb1Q+VLgscMrmZZLBnB+qZBAIWQzejHdQDAUsSBzMH4SVKfgsLBBDrlzYJZGjkL+EcTIKA
-53FiUgkARMS5Z+yzpGOqqmORYm9g1QOAWLrKkhQCgJ4PrFWTaBlPsgAg2C3GxgACoONFQpQO9f+A
-HnxxavTwcHGe9W8ipTDOcc1Tmhmt8cZMbFaxuoKF0KAihMvhDVSfJIRkUud9FszssK9lsmSHpXAY
-rsO+cKXjOCAn6SVGnPlNQu7wrehbKttA6FxHgpS9H3w3m124hMjcaKgYWO2EdYRVSYSdAUBhN6w+
-2XWE9Ve4FLHng95T7IeR1rXhWYui7kEb3PTbsBoPjRuhGxUwYyHqMyL7juYRIu8AyDrkBgOMEHww
-2dIiTaZkuK5Uq0kvFnMyv90qo7MHAOayYXxD5ZTMv4KSt3K0nR6+f/XJQdULJb92zFII+yZ9lv0Y
-RpW3f0hmJ4gWkSxDZiGhIu8Ek3AdqPXugqUA++TIGrs+oJazsuMaBV0/h2nbEkMBw+ic+a49JC3m
-h/lIiL+OkFnN/j+IMp1LQf/N/mJmiAefhX0kQcBCJCgQsEd9FASEsOtGn9GmSPSiraak7Z0QedgQ
-9WXQ95hJaPVZBB04MxBozcksrNGmBY2a37fvV6fblYrRatk63tQAwKBp+5UwgLm5WcSVJSGSEpKI
-4Lgugogd/QN4XPGAOGgQmJnGZqpFnUEnSEVFZopB6eoAwkHFLJhZsMk4w6zm14k8ZnalilPPSClc
-yeQyE3Gwo5WxHoRa3qo0W8FKc/GCdtXzaQ0kGHzWtmIR5jcvhPRYFcqxRxbT63JySTO8iDA7ojWD
-75HxmwICIgECaAwC1j9zTX0QiAEG0r5a+R3N34ihpZ87Piu0AiDQkUUuYH/9wfVcmDTn5p910wjN
-zc4qe9Ya6AxMJSquMloJABiPn5mbnws+B1NrTvqtXM+LaAEEQKDqRSQLhFqdKonvf2lqTK/XZbv7
-TGDDHspxp2xawxqsNgvQAzgMoAn2CHAcAELF4wvHGtQCamg5DHYY5LAkYiklWNv8oWdeMbNhaFu9
-tjczs7jcViL0B6PGAwHD24wbZ/zImBXhR/O1KRCwmoz1u7550BgEEr+2PY9jKw22GWC98ggMnCUI
-AIS2jMzF1X/XS8bxpE4VAJidVxnqIvIfGE+tvIrorAEAkBPx1zI3l9z9N9hvPkaZYNWM/nWIQKhl
-hDWKjf/gh6cX5qYXqlVpdH0RhqMQSO/LoZiCg4k6GFQJVrWZzMRMEsLNsBDQE3sUOIWEZkSTSUcd
-agEOk2DXOI+0M48cB+ToKTyt4qsj5FByo88fkXzqJZkmrcHvImB0m9ltLo+BZagpmK8xEEh0ImmS
-BB2x/kb9CPUo+Tx1q5vyAASs9k2/gr7EnkDXWRIEoOq0ZDhnq/8EION5DdV+m+ZmZ1MiWVZ3PkBg
-RQCAoi+Bgfn5eeht6oIDQKoZkMlmIuo/AchQKafbtpvFvlfmJoNuG1sceptvPcct1UcmaJ8AoGx8
-qS4xC3ckOwzylG/aEYArIFyhvcgCQu/iG3wXasdf9QjEEmDD7MaJhwhY6Acy/GnZ1IGyH1f7dXmI
-HuEpWNfE30H4PQoE0eIokyRmJZbigoR5EGsTSX9Aok6aFhAkbDSti/DiNBCIgxGWAAH93rvyfnuw
-NkQfuVw+VP2XAIK5+eSO1sz8JgCQ5DHYzI7YRp+amNPXCGSz2Yj6DxBcruZjui2OjZcWpuar1cDb
-r1GFoPP0Cwoku4BmdAFIlfRHnZOqrmSHhefAUX5hqKW1DkCOYnIS4TlXBLwMCJDjccYlIVxH5yjQ
-aj8QeO0DCga5A1ujAZm65hQpJ5/QPQ3mx8M6UaAQsb+2tivivIBkl0S0ICro69NSDI76pkCkf4mP
-ZHgdEYixwDRyFxsEInwe64tV2JHnNnPWHPlczqqr/9UBgYmJyfCLVnYF0Vh67dVDZw0ALPhIXDWa
-nJqC7yenAl0nGXaQzWZhq/8gwEE5DyDMCSqAl08tzPs+Ur39Kq2WWQ8fhs8oaS8APVNsDE1yHYVX
-rDLfuK79sztQQ4e0fe+oc8JR0p50ObkQwoFrpLgZ+IF0jTOnAgrX8vIbxk8K49gJyy9gtyysww7D
-TTB4UHlpU6AZWpY/wCqPPlUSKOuCgG5jWSAQ/FF7G7dkudVW/4mAXD62kh0InMg2VatVjI9PWOps
-sNvza8kGVhedNQAISr4E3/cxOn4a8ZkAJwUAlAmAQP1X5rp0XBTVQgsCKjXIl0+VFiSBmfVmkPqH
-YoFwpSETm4GhFvAKqEWBDusU/mDhWInJlM3OejWaWlkk1GcLfECCHUfAOA+FI0DkU8BUiSk3M5cf
-OgQjLBGT+Oq5QwAxbZmty0NGt4BAl9nfbX6xYSLNH2DebdwUaFYLaM4fYPVpKVMg0cWVA4H17eVW
-z4Frq/8AkM/lm8K8sfEJ+NKPOwBBwJGlr76w6awBoAb3SPgtfEXDwyOJc56bBIBCPp80v4iQw2yr
-OTkyXSnWmJmZDPNraW93X/kAgjogmNz1ajMQk1sbcAg6pSXBQgOQF3jhmByhwAAAOZIkq0UnjqN4
-1TEJLy01FRFm1UzvUsCo5FpTezbD27MGEZa0fQoIGd+8Meu7SL7FpClgUQhW4be4FpAWr5BGS2oB
-Ng+Hjccaifa/aRCw9ZnITUIQ2N5dszL3hCigcleGmmc9Ghk9nXq+RvSmBoBS6QTANWaOOP1GAgAI
-KZ4oBAAy2Swc10EYC6B+CY8XgiyMJydKJaXmmnhQQJrkGBI6ty8FoazMDhMLNsqx8Q1InV5bRfqH
-4V5s1nlICccFMSQEgRwXpKYvPVaHStEdPA/8iGkPASXZrcOUqWQiWo6Tazm0ojLbMJOR/IiUhh8j
-26Pb0j+uBTQwBcyJyH1EyPhqn/MUraCeFpAa/GPfO53LorEBywQB6/nsiEH7thu6ZHdo5ash5nku
-cllrZhDh2IvT6OnRtNOVwd7e4dQLVhGdNQA8+OCDNQaOxs8fOXYssQ7AczOpIcH5XN7CZXVk5Hyr
-6eGpyUpR/bACPuvMXwRI5iD7h9b4LVuYYMd0si4nMrEfeh2fUfv1vaTaANQaXwSHJAWqZTBIVR88
-vSw/tC1dwFL9iVx1TpsGNvPEeVgxNoUBRXaFFMBIUIyBrJOImAKxkjqewqC7qZvmJiIHU6qkOQ0R
-fwJhN9c8CKAZEFA1Btpq3XH1v6UlmuU3RX8K6Njx4+qDZQNIptfuuuuuVb8a8Ow1AABgPB8/dfSY
-woToVCDBdeNaACGft1KraS0gg4UO1QDx6dlyEHNd8wUrKa86r/f41NqAtWhGa/zG6w9CsBVQEMar
-cnvr+woGCzZrCKC3Agp27iIQBRmCOfLiMkQiQyQ8R20X6AYxBI5W0aMvOhicdlkEYOq+5ySzNkNL
-2rnJSUFYsFbXFGh6arCOFhDh+niU4BIgoOukgYBdDSCsa6v2hZWUHtDW0lpX4sfph6++Fg8CBDEn
-xvxqpBUBACK8GD934sTJ1LpeylRga1tLwPhm2LlcLngoZ+aKftWXHITcqvRSWmPncDCw5vhwUZBx
-DgqtLRCHg9h6bJYEksQIpxYkHJYsmIQkEpIcMquIJEglGiIm1htaqCuMgHeFL4SoCU/fzjjujEof
-gkNYZgaziIxfFgIs3ODwRcZhkREm4DFdG0iaAY0pTRpHvgr9JtO0ACBqH8Qkb6IxqzwU5CICBGcC
-AmFfzKVhn9Z31ArtObSbKT6jCXR0dGiNzVL96yxdPXL0GKLsz4BIjvnVSCsCACzDl2Gk/dzcAiYn
-k3ESmUw0ixIBaG1rTahgRECepzumF2tVO6be940TVmWTCZbNAiAd7iulCQIiMOmlPkL5BtSKU5lQ
-/xX2sBbCPgnyyY71dx1BQm1DYCIGyIMgR5BwBAkPLDzJQkCVM4GEYCGEZlpAr+az1GX92SGQi5oQ
-0hcCvlDMjyiTQKjnYrBLTC584cIXTlqmFdO2/SVWlmBSisjxGC3tDGzkD6gXIJR8RlVhuSAQXTsQ
-NQWuHKgMpOn3HR2d1tMBakFJ8lVOTk3qtS1RIuaXEidXIa0IAAjmF5UTMIqSh75/GHHkzGaSadRy
-uZyKEbAdgUTIyOnOuQWzoWDYVbXbJcCOBgOpU0IRQKwIIL10V/3AChTU2gAGGOSroF4hBREILJgg
-BaQfjKdwYIkwkYZW/10h9VSchBASJkkQqZPwBJMHX3haXrvClubqcJjJYa0pCAfG+LeZQlCo0RD5
-apSy4ki15amAA7XzD7HeYDMUhbbJDKsknRpaIA2ubNofEIKErSksBwQQAQFYIGBT2J9tPdWB8EKl
-/mcz2ajZGZQmNYDvv/xK8mEAkO+/qQEYuu22214BMB0/f/DQwUTdjJdBuLV3+LO1WFsvGcAu8NSa
-YpV9+xcmADUSwVbxZBx9mrOhv7D+NQVZFrtOtEF6qJsYALVxjhQgtfyYSBKRJKE3Jwnj+0n3XUBK
-1ZbRNqSenRBSkpCSSEqlbUpfSWti4ZAfHC75whW+45E6HAFywOSoGUgSjoCj+2EyXxGpeAaTx05t
-2SVJDXUBnTpZP2pc7DX+qQOpSlEV2r40oq3Habn+gDMEARsPolGX6f6ALd3VjUn1vzOajEZTmgVw
-8PChSLk+Jh9//PFXU97CqqMVAYBPfvKTEsCj8fOHDr+cqEtE8OxVWPo36OhoDzU1/Wu5VGnJ03w+
-+jtRMNcvdZpHVpuAhrEBlrJg5v9ZqOXADjOpdNWSSPrkEJOj7XVXM5LDRA6rTcaIQIL84CAwEXy9
-DUd4OFTTn30i+ITIwUTskyC21wrBAYI4Iod9ZV4wiBgkpC/APoF9IlQFs0/mcAQTuErgKgn4xKgR
-U40INUGoCSFqgmRNOKgJR/jCgU8OfBLMJFhtpGhLO4F4qg5zNv7VOAUTlYOpgiAOM8UUUD9tEgTi
-yTuaAwHbjgoutG4EbO6udnTkZEdceVnT3a37Ej5TPGjN0EsvHYysZ1HPikfqXrDKaEUAQBE9BkQV
-/iNHjqFcriReYC6bDMFs62gP1X+L1uen+4I7aB1VQqq96KAkr7lCAmFsgPV4Uu1cw7oIEHr4kzIL
-4nuWqJkF0j4Cs7hIhduojsQUTmOxJ4SKDtERCgLYeA6tTRIkRHAYdVY5JHUCE1IBSQHb6BRHqi8O
-Aw4nJLZ5fu3nUFqQakAKVusmjAMy6KmtBehIxqiVblWKJRNR/dRVwglOMwPSTP6A5kHA/tjYH7Br
-fWlD+KOEa/67u8Mt/cyQS3NyViplvPLDpKBngceStVcnrRgAENETMRcAarVaqgqVzSgAsIdFLptL
-LAwiABtaZzYGdSPjUZpAvxBghFDuPZMrgMO7CEDFERuTnesbJgAAIABJREFUgcIJPTP4JEt1qOat
-MSqUqQBShzEbCEwk1HeyNUTBUE5KNoxvui7ZYvrIHGFgSyh5RMpDYN5EkNpMX6M2F1FgGK5+CN8c
-M4XXcpD0MoydNPc1acYsBmwKCAAkpgdjcQ6mbrMg0Jw50Lw/YGdfdYiAiPpfaGlBLpfc0StN/T9w
-6GXUajXE/VgCeDxZe3XSigFAaX5+HxIJQhn7n3kacW0pm8nCEcmw4I72dmsMq1+tJ19e252r5eL2
-LLPQWR+l3nZMBDkAgCizCyVQobfaCqb3mQWT0M5CcxhHmNBSQWrvO0gxr5mDMJUivKElPilVhMOw
-gYDxQdY1oQMB5iSTw+zoVGYi7JeZl2d2WEUjCiurbvRgEqz8HSLIh6DMJKGzBIsIyIaXLgMIItpA
-7Ic8QxCw6yRBwP6Y9AdEhzKhr9XPr+uoroubj2u6e6w2DCwCaRr9s88+Ezmvf8rieGvr04nKq5RW
-DACeeOKJIiAfjqIl8OyzL+gasdmAbDbh3O1e0wX7hyGoKbJbNs5sCQecCCRpsH0XBMLE04HybEg7
-CUUsIW3UCWhuKKCy0Jr2VO55S1XWHFPPCWgYP2INkE5HprMPpjM9acYXun1ETBNiwcR6PlGlR0qw
-vjEvDLaY52RSYdEBAEW5ftlAkNQGUoKFVhIE4t8szq9nCrx1y+JW7fqz/gEDff2x0P/69v/e/fvV
-72Y0TAaI8eAr99yz6nMBGloxAAAAYrrXfDasfvzkSYxNJDMn5bNJNazQ0oKslSLMfLi8d35rtMNq
-IKooP2GF5YV552WQWhtqe21G4PlKWwjEJJig3GT2/L/SLFhPA7KW5Pqf8R9om0GaeUddP4Q7ZZQH
-7iat3seZHlA+CciQuYkFE6lnDGApSBgSHmZKUJkF0LMGykwRgI18MMwcB4NmgaBpbWAFQMBuR4F2
-+AjB08RNAQBXDVS2xBOAZPM5tLW36zYRAAGn6P9j42M4euRYEhsI9yYqr2JaUQDwib4Tyn5FLBn7
-n96fqJvP5a11AVriE6GzqzNqtIEwUKisHeoodQTdpbBtbeMqbIaRwgCHc/6KzJMy1V0IZNol3aY0
-+f+IGA4pmzzm5FODVSAyADXjSCFYCuXEAwkO7HoRXiONCWMYXygwMnVJUGAHmMSj9gHt87CjHIMp
-QdMPrdqkhSWHYGBe0tJAEGgDkRdrPq4gCNitpy4hjvsDVPn23mrnQKuZ/w+pv2cAtoYZXJcCAM88
-mx7pSzXxndSCVUorCgCPfO97L4JxKmYF4LEnn0zUJSLkU2YDutZ0JxyBRITbBqcviw0lAASfQktA
-aQQUuP6kDN1jCdOgzkIgO/7fUGDvk2FOxaCkJbhyyOkJQeGwYfxwSOsnEbDMBkvSW0wPdpgCJtJp
-J5Jcq58XESADAEnMUqhNF01hZMmwqAcGTQIBokxZ3ySwOtokCFgN6I9ppkC8atIUePuWhcusm6v+
-EKG/vz+m+itBkeYAfPSxVD/f0SeffPhQWsFqpRUFACgsvTt+8sCBQ5idm0vkCcznWhINFAoFlakl
-5gy8vGfxkozD0VA2oX5AQuicgxCQOhV46PSTCCOHhOVYMxpFykIgACb+XzkBZTBLAA5BIW7rmz5B
-mwfqWg4YX3db9SuF6Q0ucWIXnhASlXZCwXQem/NBBiSRHNT6pqlggKWBIGyjkUlg1WsCBNRfiyWX
-WlewhCkAAnIOO1f0Vi4Jgji0MtnW1oa2traIKQZQYgoYAGZnZ/Hs88p3xfY/lomxvdpppQEAgugf
-geiLq9aqePjRRxJ1s5kckhuGEHp6ehAgt/6Ud2T+LYNT22zpD0AzjU70iTDcFwDAxDJQ99VZaRn+
-Kn+AYU/S59RCIMlabbc2F1GtKOaQmqNZyqitL42eISyGIbB24hFbGkRdpjcag31AT3HqfQmkOtS2
-6YLhqPOB4mX7COIqRAwMmgGCqDaQZhIsHwSaDhm2+7XErMA7t89vK3gyTPanae3a9UG96J+k+H/0
-8cdRrVWVb8DSZqUQ/5js8eqmFQcA8v1HGJzIoPDEk3sRnwkgUlpAXBHs6u4Kdm21bYHd62auTOu5
-ZIAhmMkEB8mIz0vqfP7hd2uuH4BOGapHhJL69vp/ZhPE4+g4AIehQSLiJ9DpxxiOnv93mG3vvWEe
-CaAh00PzlIDSTNQhkJwdYCukT+oAofgRvsN0MFgaCILONzAJzhAEELYTVKmzhDg6WOP3AUgQbtlU
-DMeIfnDXdTDQNxA5B1LjIM0B+MhjT6Thwqn9jz560cz/G1pxAHjwwQdrAH8txut46aWDGBtPJlFt
-KWgzwBoDruOgZ013xBEIELpztTU3rZ3ZYEv/UFpoPCdllyuW5sgPbHYJYgoZUkrjCCQrfbm+QESC
-PwC9B2ioEpMtrGCNRD0ZoBoPvPea8aNvPWQ8tQOQCBjfdkWEgUDqYAfMDvTsQLQsThFAMFI9wWTp
-QBAU2uq3dfpsQCC4r3mXadSsKQDCrYNzg105vzuu/q9buwGuSQFtvRXpJ/X/0bExPPf8C4nzAH0V
-aRHTq5xWHAAAgJBUlaSU+PZ3kg5Uz/XUBg0x6unrg7DyAxht4NbBqasTvSYBaUXpEAApjPpPwf2l
-JTqZtK+PKYL1zEjM8QeGYzD4dcSRBRDaW6BXIIbTeIYhRII5LcbXzGliEpgDs14FIJm6ILDy7rOw
-wFEIs+lKuukQf19RzaAREMQuj5kEpn4aCCQldJLBGyUWXX5OQeCOrQvXxHN8EBHWrx+Ma/9qmjZF
-+t/33fsj4yRonviiU/+BcwQAD99//8MADgBRpf+++x9MfbkthdbEuWw2o9cHAPa04NrWyvpd/TPr
-ItLfIgmEDj8ISG0a2OWQ0MuENTsTmal+phSfBKBjB4wDE9rWtsMHEfbHHqSRZJWmPcOYWrWPMj3p
-qEPN3ASQAJtDxT9YTk+L4lOEQeZgxAAh6MkSQBAAT7pJ0AgEErMDQHT9QBOmgP1O0aCcBHDr4OKG
-/tZaZOkvQOjt7dP5//UY0lieNg6llPjWvUpIRRVYfnbvY48lp7IuAjonAAAAkuiLHHuNU5OTeOqZ
-ZExALluAk7JrUF9fHwJ13zreOTR5fVCJokxncIE5TAYKGNOAmIgDp17AzMY7b3icjCQmJoIODLLu
-ZzR9878FRoGwo1DqG3BRvgIENn3wrgCL6UNeZRVUaNkwAmCz3Kb+vzhF4gbQDBCEL1MY5k6YBOpv
-0yAQWkfWjRubAkvmFDS/PQm8e9v89XHVnwgYXL8pofozACmT6fyefe55jI2PITJuldfnS4nKFwmd
-MwAQ1eqXAK7EfQHfvPsexDMIA5SqBbS0tKC9rS3hDOxrqQzctHZ2Y/Km9k8tggEkJSsTQbej7k5B
-DJChQPWPzBuoQa4YWLDUqwOhAYI1QLAOw1VhBCJYRShN/sGAOYQ1PWhiE0JJb5ieSa1ANEwPFlEU
-NMxKyfONAGEpIFAfotqA7RBdNghEbq7aSWrvTZoCANK0gNs2zW/qa632xc+v6e5Bu478s69K27QG
-AL7+r9+Ii34AKJPv/33qBRcBnTMAeOSRR8YA8S/x8y88/wKOHDuG+Jsu5AqpewcOrO2HjQDm37s3
-j+/2LOd68LfeE2nvu4roNQNOrR6UZtUe2R5DCvwACin0DsVmSojrSH7dNpvrpIk/FjALi0JGoUC9
-N5LeZvr603kxpoifj4QJRwEhuKIOEES0gXj9ZkDAvGtDlIABRNixaVMAqVpAVrD40e2zu6NtK01g
-8+YtlvkYYmSa9D92/Dj2pUSsgvHP+/btW/V7ANajcwYAAADmz0W+AvCZ8bWvfz1RlUigJZ+cEiwU
-WtDR3hE6AqE+dGRrXe/dNn5FULGO9I+QdYo5ZNLA66+1AwYxCzCTSGTOCIYSaY1B+wGUg19Exrbt
-5Asku6PAxjB+2KEUpk/7edJwIA0TIp1OgkFQGgGC8Kq6JsFSIBCtHim3TqYnFYldH/SlgRbwEztm
-rmzPyo64+t+zphftre12IwDUEvWUKT589Wtfj84Y6UM69Llk7YuHzikAPPrggw8ysN+KClbnH38C
-k9OJDGJoybemagFr169TDqQABdSHGwemr+/JVXLA0tI/lBzJEShlmD9QBp21Eo04pMJrDTgAOphH
-LbYxTC0FsyR9ONre1/VMP4y6H97LVu9TuDgh0Jf4F1cYUhtLBwLbVFHfUri1njkA6501aQqENzoz
-LaCvtZa/ZXDh2qTnX2DL5q0wdzHF9Wz/qelpfO+BB2OaPwDw3mceeywZwXYR0bnVAAAQ8x+H39Tr
-rVYquOurdyXrEqm4gNgPms1ksCYlOjDryMwHLh+5OS79U8k+nRpNZqoJLd2t+ADo6UFz2E3qwRwZ
-hELEcgloJ5+J1+fovdI88DbDp07r1T3CujYgJDjQAgKr2/pD1CSIv6hUn0CcXy0QQFA9+rIbOQTT
-KaoF/NJVE3s8wZl4rQ3rN+qNP2wwA/xaLTXu/yt3/RMq1Wp4IkSBP07WvrjonAOAS3QXmI/Fd1b4
-zn33Y2JqKlG/kG9JhgcTMDDQDy/jxmODsLVzcftt6yaHItUpOlAS0j/eeHA6VFfjNSlWHi7gUyWh
-U1Mxf7g1tbo6VLUt6ZuiMyeZPqXLzZIFCMECowQQRLWBNJPAfoPBlXEpHjcFYt1INwWSUr6eFhA3
-6d6xeW7ztu7yVlVGwZHN5jC0aYvpeHAPZk6d+pucmsI37r4HAcqHC/9f3bJhw9cSF1xkdM4B4MEH
-H6yB6E+BqNuvXKngK3elaAEgtLW2Iz44hHAw0N+PCPdrbeBdm8f3dORrCUkQXpx+OiWWJFo5sOHt
-8/YAjTcttHsgyfxhjRSpn2D8eg+h04Q3OEJVIO3yNCBopA3EQCDuGEy8g/qmgPX0EVqOL8BQV0Fm
-79w+s8cwvU1bhrbAc52IvwhEqNVqqYE///iVr6JSKSPhGJD0xxfD1l9L0TkHAACQ5fJfMnAqfv67
-37sfE3WShXiJLcSArq5utLa0mN80zPPm+a0/e+mpWwFRV/oHFNU7U6R/g5dilws9zGPXN8X8calf
-l/Ft5ja81NgGCC0AGxAiTQZAUE8bCM4sBQLWO6hrCli3DcvraAExNEjXAgT+3dXjt7V4MrGUtKuz
-G2sHwkU/gQ9HytSpv/HxcXzrnnuC75aAOjbT3fH59Ce5uOi8AIBKF4ZPxc9XKlX81d98IfWa9pb2
-xFgiImwY3KCz8AK2JrClc3HbuzaNXVqvDw3tTzQh/eOMG2cgm/n1iaWYP5T6Kb0lkWB4o6gvAQHR
-bxoM0oAgzDsQOZkOAuFTJTT/hqbAGWgB6aaaon+zffqyrd2lLUBU9XddD5dddoXVlRAEarZ9b9Ff
-/c0XUa5WY44/AOBPXExpvxrReQEAAJgZH/8igKPR6X/GE0/sxaHDyRwLnpdBIZ9MG5bxMujrVxGC
-AftrbeD2jeM3b2pb7IhcEOHJBtI/pXqULIgQ8XqpaGJ9TWf+BIikMH5EqV+a+4O+hSzfAAh0H5YC
-gbRnSrwzkTiToNR31kgLiDWzrbvcecfW2d1pqv/Q4BDyervvYGBAqf5ptv/Bw9/HAw89HD2pxuUr
-VK3+Q+oDXIR03gDgwIEDFQCfQrj6XcUFSIm/+J+fT7XPWgptlrQPqae3Fy2tBeuHVpRxOPMLVxx/
-Zz4j3aWdfzGKCKk06R+rbINHA9W/LvMnVP50xo8yNzV5hNekAUECBERjEGjGFEi8pEZaQIqZUE8L
-UO+A0JqR3oevOf2uNK9/Z0cXNm7YFDRsmmewTusdJSklPvcXf6mWYsfn/og/uX///nSV4SKk8wYA
-APD4Qw99iYFn4udfeeVVfOf+7yXqCxJob+1InCcibBwchOO4CJ2B6l9nrtb9KzuOvD0t2URwfapw
-awQTDaT/Eqq/fX1475iD05L6Sca3GBtxF2jy0A0mwMAGglAbiD5IAgTsb0uYAsvTApqC5PAaZvqP
-14+8oyPrBzt6Bl7/TBY7d1yVzC8JoFqppK/4+94DOPz9HyTOM/jJZ5588svL6Nqqp/MKAACkFOL/
-REos1pf+9h8wNzeXuCCbyQUbidjkuR7Wr1sbzx8KABhsLw79m6HhK5tW/1Okf31KNx3Sv0bbTlP7
-Q0YU0WbrMH3AyhQ79Pn6YGB3UcTubU7F1+0vwxRI0wLi1RJaQHNmwAd2TF411FkZtG1+Q5dsv0wt
-J488tFL90xx/s7Nz+OvPfyGihwapWaT4P5AaJ3jxUjLs7hzTySNHjm3ctGkLgKvtV10qlTE6NoZb
-9+xJXJPxMihVSgiiOPQAyOVyqPk1FItFxDWBwfbShsWamDw+X5gmEOxIHYokhjdBPHpxsLVkNAQH
-siScdS1RVPpTA9VfpDn8hL63CKU+IcH46mIK+qYYJCb7iaDSH4SIGNnw2jy/rqZKGESEIO8IAWB9
-Dw4rq5ZUBqdgsxPzxqxtGYn15Wwu56AfAMIFdvoLBycRVcODcsY7hma2vGfrzG3Bq7Bow/pBbNww
-aHoSPAMzo1IpxasDAP7kf/w5Dh4+nDjPoL9+bt8Tf5l60UVM51sDAADUgI8zYyFufj3y6GPY/2zC
-QoAQAp1tHUiTMGsH1qGlEE4NhvzA9L4tp9++s2s+skrsTNV/fXXT0j9+Mm562/a4sMss5g8lvakg
-4o2k3M9oCAg0g4g2oKvZmkDcJxAzUBo9VvREQgtYnhkQ/212DRT7379t+naFOlY9InR1dmHblu32
-2eDOlUopNeLv2eefx3fvfzCtS7OerH0itbMXOZ13DQAATh09Ortx0+AigPfEyw4cPIR33fEOeLEs
-QY5wYBKMRlZ3EaG1rQ0zszOWt1ehgEMQV/TMbz4xVzg+Uc4WAQTS3owWox1EJGVQTJF7geyQX1OP
-guuS0j9kOLI1h6aZ3xSGyr/ha3vNe3CwJbwDJIxJYdIS3NIE1D6o4ZVRLQANtYDwg5bnESlvziel
-fKgFRE4Ef7d3L3Z9+MrTd7qOzNiqv4r2y+LqnbvgeW4MrQi1ajXV8be4uIjf+b1PYX5+Pjxpbs38
-kWee2vdA4qI3AL0uGgAAbBgY+HMA++LnR0fH8D8+m74Aq7XQhoyXDPjzPBdDg5vgCEcZAKEWjIzj
-Z3/himN3DrYvaG9iTIpHBBZZp4TNv42df8uU/mnZcuozv5bptlMQYRqwSDowk7gj7ozTbSU0AatO
-fDlFs1rAks5A+95N+gE2dxY7fvXa0z+a9TgXn+5zXRdX77xWbS0XmG2qzPdrqFRi21Nq+vPP/SWG
-h0cSXn8mPPbcU3v/IvWiNwC9LhoAABw8eJA3bdz4CBP9MoBgp1Bm4Oix4+jr7cHWLVsS12W8LMqV
-slqXB8BIYs9zkcvnMTMzE7uC4Ar2ruyeHfr+TNtr81Wv0pz9bz6EgywixcnsNoewXkyrAJAq/c09
-A+m/BPMb5hDCArf4UwaagN6UNJDwpvMpmgDsOktoAZa05pi0jot2tv/GRfsSfoDNHcWOX7t25EcL
-KZF+QghcecU1aG+3Z4ZId5NRKhWTLwbAfd+7H1/6+y+nefeKIH7PyMmTF+16/6XodQMAADh+/PjE
-hsEhYuDt8bIXXjqAt77lNrS2RMcBESHjeShVzI8dMm02k4HneZibm0fgDtSM4TmcubpnZvNrs21H
-Z6peGTAOPcsWTQCAMJ8Uw8c0h2bUfyJEpJ5K5mm3C8sEacT8Tb3S4J5NgUCEGY0pEDoELf9eE2aA
-RgurLDRFkmaAOmtaVGXbu0pd//s1p95rmD+u+l96yeXo7Ukk/gEzUCqWUqf8Rk6P4nc/9fuoVOyp
-/QCUPv7cvn3faPa9Xoz0ugIAAJw4dvTRjYObbgUQEffVahXPPvss3nXH2+G60a3EhXDgOi7KlTJs
-AACAfL4AxxFYWFiI67HwHGSu6pnZcmK+cGKynCmupP0flf4xz7+t9WrbJFX6W+BQl/nrOgBMfzl4
-lPog0EgLsJgoPiMQ1wJW0A+wo3ux51euGn5vzuN86iKfzduwYV2YBc4uL5dLqVN+xVIJH/nYxzA2
-llxvAuDu5/bt+/W0gjcSve4AAIA3bNnyMKT8EIDIji4zs7MYmxjHnt27Exe5jgIF5RS0eYxQaFEh
-xIuLanrQ1gY8wd5Va2a2TpQzo6cX8/PpALCM6T/NpKnqf9xssNT/+tJfM2U95te9SksGokRrOghw
-hFkbTc3ZZgCif+MAEAj9KLDUmw4MbhQDgOv7Z9f90s7R92Tc5I4+ALBpcDOGBodgvciAKpUyqnVi
-/f/szz+Lp/c/Gz2pbjopBd57+uTJ2dQL30B0IQAAThw5Mr1x48aXQfSBiBLHwKuvHUGhtYDLL02u
-88l4Gfh+Db70IwAAQrBqcLG4qBktvM4R7O7snt0OYP61ubYJpXWT5fyigBkp+BoHgJDJmwUAo/43
-Jf0J2rln7hkyf1CJrMMwYioINKsFxMyApQAgVraUH4CM7o/QRLhz8/ilP3HJ2B2u4OTyTxjm3xzV
-uDTValWUy+lrdv75G9/EP3z5K5FzpneS6X978am9yfnmNyBdEAAAACeOHz+0fsPgVgBXx8teePEl
-XHP1Vejt6Ulcl/Gy8KVvqYChGt/S0goibQ4EpFVwQbS1Y2GoN18RByfbhs18+5kAgGHUpex/o/7b
-0j+oHQQxhNI/jG5NYf44NQCBdC3AVvUR0wKa9QNgWQBglzuQ9ItXDt9424bp3RTnbE1bhrZi08ah
-yDOaN1ar1VAqpQf7HH75Zfz+H34GfsoiIAJ//oWn9/5J6oVvQLpgAAAABvp67xWu914Akb3dpZTY
-+9RTuGXPHrS1RtOHK6dgDrVaVed7o8hAKRRUtuHFxQXYSSPVtcDaluLaHd2z/S9Ptx8vSae2fACI
-S399AQxPLw8A0qV/3OQAIAhC28psze1HQKCuFtAkACSqhjWANEdgcwDQna/lfv3ao+++pHPxEtSh
-bVu3Y/36jbDeEMxHv+bX9fiPnB7Fb37sd2KgH1y6f7ql8FPTR44kAwXeoHRBAcDw8HB13eahu4n5
-5wFE3P+lUhlP7d+Pt731LXoOOCQiIJvNhks/yR4yyieQzWSiQSCW/tyerbXv6pvcOl7KnR4r5RYa
-A0ByBuBsAMDoDon72U6wuMkh4suPEIJAHSnPMSYHGvkBmgWAeBkFDdUDgKt65/r//Y7j7+3O1dYg
-hYQQuHT7FRjoXwvY71WT7/sol9Ml//TMDP6v//u3MDqW3IMSwHAN8q0/ePzxZDbaNzBdUAAAqCjB
-tYMbXyLQBxjhhjxgYG5uDodf/j5uf8tb4DjRrhPUyrBqrQrJEjYAgNS6gdbWVszNLQBahbW1AU9w
-5qo1M5f25cvu92fahyULTgcACr8DKwQAKYDTCABSdGbDcM0DgPV3xQAAqAcAnsPig5efuPndg+Nv
-8Zzkkl4A8DwPV+64Bt1dXYD9vPqP70uUy+nTfeVyBZ/4/T/Ayz94Jf5WAKBKTD/14tP70nb9fEPT
-BQcAAHDq+PFX1m3ccAKgH4uXjY6O4aWDB3H7W25LggApEKj51WhYsOYvz8ugra0VCwsLsWkjrX4T
-aKBQGtjRNdv/w7m2Uws1r5oEAD4HJsDyAcDIW8DasnaZAMArDgAy+GgDwEBrqeU/7Dzyri0di1vT
-gpgAoJAvYOcVV6G1tTVd7fdrqJTLqcxfLJXwq//h1/H9l39gd9PqCv3880/v/df0O7+x6YIEAAA4
-dfz4c+s2bmon4OZ42ejoGI4dP47bbrklMV9MRMhlcsHsgA0AAMF1XXR2daJaqaJSqST8AgDQ6tXa
-b+obv6Ldq/IrM22n2TAgBTdZYQBgU1kxNin7mqz7ARy2bxiWzK5DHA56BjiABHUyno48wqzm64oA
-QNQH4JIUH9h+ctdPbh15R1umlkzsoGmgbwBXXL4TmUw2JvjV/7Waj0odb3+1WsUHf/nf49TwCJLQ
-AGQzmYd7ulrv2TK0ZfLVV199Q6T5Wg7VweMLhsQNt9zyVTB+PF7AAN7+trfgo7/xG6lZgwBgoTiP
-krYXyWJM8318YhJjY6cRHTkW8wIYLWVHvn5006NHZtomA8Ob9PZZQCJYR5gVfECY+cc8jF6dlz4N
-aIL9ESTfiMcARCz/+CNH+FlvamCKpD4rrcosw8fWmx1IXSata9WmiKZhswF62GYo9K17SmB751z3
-j285eVtvvtKPOkREGNq0BevXbYhKfetPrVY/vr9Wq+FDv/prOH4ikW8WAJDNeOhoy4OIIEhICPzQ
-AT3HoP2O5zztl/2n7rnnnjd0LMCFDgC4+eab81USdwN4W3g25Njb9tyM3/nYRxPmgKFiuYjF4kIq
-AACEUqmIkydPoVpNH2SAknSvzrX+4OtHh/ZOlLOLzQJAEAlohRAnVgGKZBhwwyhAdTa9nwE3Jpnf
-ZnCtNoTaQ4T5dZ2gasjkzQDAukKx9f2bT+0ealvYUk/dB9T+D5ddejkK+ZZUqQ8CqtUKatV0h325
-XMaHfvXXcGr4dGp5xnXQ1laAQwQS0ZBiEf6VJOiHBHpGOLSfGE8Xi9X9byRQuOABAAB23H57a6FS
-uY8ZyZBAALtvugEf/63fQiaTGkuCSrWM+cU5pAEAoLaLGhk5jdnZ+EIiU1fVq0hR3j/W88y9pzYe
-rPiOciKsAAAEPbG1AP2fiK/cq5tIX5MtvaF2Rg4ZHFha+us6pmqTAJB1Ku6PbBy54vreyV0ZR9bf
-owFAT08ftm3eDtfVoG2bSQCYGdVqte4uvuVyGT//oV/G2Hj6Gh7XddDRkgMJYZl4BEFCg4H6BShY
-XCUi71kQjQB4BkT7BWg/UXnvXXd9a6TRM61WWhUAAABX3nprV6YmHyBKBgoBwHW7rsXv/effRj6X
-Gk2Kmu9jYXEGvjaEExoBVOjx6OnT2ndQnxZ9Z+Gp0b5n7x9ed7gqHQlRPxPQssyA+GIg02baPnlx
-IIgxPoBgS/So6q/+Llv919dGAEAyPCHFOweHL7soeBmtAAAgAElEQVSpZ2xX3pXJNM4WeV4GW4a2
-oqen13pm/Ul/YZaoVirhdu4xKpZK+Ohv/y5ePHAgtdwRAu0tOQjHWnVJQi+hiIIAxcrsNQi2b4mI
-JAE/IEH3+w4+87Uvf+1oo+dcTbRqAAAArtqzpy/D+C6AK9OGx5bNQ/gvn/wEentSp5jBLDG/OI9q
-rZoKACCC70uMjp7GzEz6dLE9MBZr7vwLk90vfXdk/eGi71WAJACcmRYQXh+aAM2vCAykM2LMD5y5
-9I8BQItTy9yx7tTlV/dM7Sg4tWh0Vgr19w1g86bNOpErLAdo+HxS+nXtfQAYn5jAb3/8k/jBD3+Y
-Wl7I5/D2t96CSqWMiYkpnD49qmIGbNVfJE2B4LuIgoDqZgIQJhzid3zlK//8/FLPvBpoVQEAANx4
-441rfMf9DoBdiUIG1qzpxh986vdScwkYKpWLKFUWI5mmDAAYKi4WcXp0GOVy/QFpqCZF5eXZju8/
-Ojpw6OhC23RjMyCmBeg6oS8ASRAIP6IRENiMn1D7gUBLsG3/sDQu/dPV/82tc5239o9ecWnH7KWu
-kOk2l0WtLS3YvGkr2vQa/vAZraHHDN+voVarr3m9euQ1fOx3PoGx8dSVfRBCYMvQetz+1lvhOA4c
-4cBxHRARyqUy5uYXMDE5gVOnhjExPmExvm0OhCCgupiqDQDADKR411133ZVIaLPaaNUBAABcc/vt
-nU6pcg9gfAJRfSCfz+M//9Z/wk033FC3Dd+vYaG4CF8qJ1McAMxs28zMDMbGxuD7SWdUfAoSAEbL
-ueHnx3sOPzmx7tWy9hMkswEvoQWEF8FGjigQ1KEI4+sTQJT5gSWlPxCq/zmn4u7pHd181Zrxy/ty
-5UiYdj3yvAwGNwyit7dfLYKyp0eDZySt8ldT5/cNPfXMM/jkp/8AC4vp4b9CCBRyHrLZDH7sfT8C
-1/UUCLgCjuPCdVw4rtB/HTCA4sIipmdnMTo6hlMnTmJiYsoKDqNgZilNG9APMSFYrnpNYFUCAADc
-csstbSVf/iuA29PKSQj80i/8LH72p386lVEB5d0vlRdVxmHEfmx1AoBaizA5OYGpqanUXWbSqMpu
-6ch8+2svTnW9+vx0zynJgpO+AKAhCITLExHn/AazgNEzFmPXY351Kmr7OyTF1V0T63Z2TmwZap0f
-yjp+unMlRo7jYO3AOqxbuz5Q90OGD78RVFhvWv4+Q8yMr3z1a/irz3+h7nt3hEDOEyDhgAThfXe+
-C4XWlkADcF0XjuPAdR0I4cLVoOC4DlzHgeu5cIULEKG4WMTU9BRGhk/jxPHjGBsfD/qXOoYuAhBY
-tQAAADt27Mhk29o+D9DP16tz657d+NhvfgT5fHJvAUO+rGFhcRGSQxU0qREQ/JqPiakJTE9NRRkG
-dQaIpop0S8PF/MkfzHYef2Gm9/hkRSUobQQCQR90eT0gSFIDxgdizK/qmGdZkynlr+mc2Li1fWpw
-bX5xfUbI6KKLBiQcgYHeAaxbt0Ft7Brl+ojUl5Lh1xpL/WKxhP/6J3+W3L7LIkcQMp4DIhFI7rfc
-uhtr1w5AOC5c12Z8JwEEruvCsQDCdVytOTjwPA9CCMzNL+Cpvfuwb+9T6Z1Y5SCwqgFAE117082f
-JMLvwjxPbFwNDm7Ex3/7o9gyNFS3EWZGuVpGqazUzGDYRrQ+9d33a5iamsbMzFRDuzW4LhrWy7OV
-zNTpUn702HzbyCsLHadPLHbOADEVf0kgqPcgQF3G10WG+QcLsx1b26b6N7bMDfRlFvs7stXOeAru
-pcjzPPT3DaC/b0BncrYdmrEnYK67U69NR44exaf+4DN47ciRelWYhPivGVd8VJnyOkUKATt2XI4r
-Lr9UMbrjwtWmgOu4EI6jvztwXA+uIwINwXFDkPBcT9VxQg3i8ceewHfvS+5epWnV+gQuBgAAAFx3
-4+5fYtBfgpAqtbyMhw9/8Bfwk+9/f0NpzSxRLBdRqVas0F5F9neCsl9nZmcwNTUVJKZo1HY9qkin
-NF3OTk5U8pMTlcLk6VJhZrySnx8tFRZq5ATCutmWbcZ32Re92YXWXq/U2ltY6OjNFrvWZEvdnV6p
-OyOaU+vTKF8oYG3fANas6YMQIsHwcbVf+j6klA2lPjPj6//6TfzFX38e5fqzASUi/pXnn3rq72/Y
-s+cYARvNXD4RYf3aAezZc6NiaidU9wkCmayrfAKuCydg/uhn1wuZ3nFCUBBC4IEHHsQjDz1ar1+r
-EgQuGgAAgOtvvvlGlvgnCd5Qt8511+KjH/kI1nR3NWyrWquhXFmMJJVoBAilYgnTM1OYm5utO4e9
-bCLiUs1ZXPTdxbJ0iyXplHxf+ABQYq8Ca6ukHFUzAOA40skJP5cTfj7vVAs51y8sV6rXI0c46F7T
-jd6efrS1ttkd1b2IdD4I6vF9vyHjA8DU9DQ+80d/iif31VG1FR1jST/x4jN79wPADbt3/ysRvQ8i
-NAGymSze96PvClR55QQUGB2dgOMIeJ6LbDaHfCGPlkIBhZZ8YAq4rtYYnKj/QAgR/H34oUfw4AMP
-1evfqgOBiwoAAGDHzTd3ZyX+kcHvqlenUCjg53/mA/ipn/jxuusIDNX8GsqVImq+nw4A6kPwmZkx
-vzCP2dlZzM/PLTnwL3QiEujq7MSa7h50dHSmesd1zYgWwBJg9pcEQyklvv6Nu/E/v/AlLC4uNqr6
-L3mHfnHv3r1BmO6Nu3d/QhJ9MpjP11N4d777HSi0FLRNr7SAyakpsE9awjt6pkD5AjKZDHI5BQqF
-ljxyuWxgMoSahPpMRHjgew/gkUceq9fPVQUCF+xqwDOlsRMniusG+r/C5LSAsBs2y+qxWK1Wsf+Z
-5/D8iy9gxxVXoKO9vW57QghkvKzamUhqSWaZAfpD8N3sXNPe3oE13WuQz+UhHAe1mt/0DMLrTZlM
-Bt1da7Bu7XoMDQ5hzZoe5PIFndPQECFp7RDADJZSq/uN73Pi5Cl88g/+EP/yjbvrJvYEIAn4b92t
-hV977LHHIvOAazdtKpCUPwcYQFId6u9do9LJG1AAKR9PpaKnJMPwYDUlK8BSolbzUSqWUVwooVQp
-I5fL6GeOTgUObR6C7/s4fux4Wn9zIP7pHVfsvP/gwYMnG7+B158uOg3Apl033vxuBr4A8Fr7vD0u
-M5kMfuon349f+Jl/i0ymYQg7AL06rVZGza+lAkD4PWkHV8olLC4uYrG4iOLiIir1B/15pWw2g5aW
-drS1tqK1pRX5fCGi1QRE8TMhCDCzkvZNaDzlcglf/spX8f/9r682svUBxkkW/MEXn3rqu2nFN954
-4xpJYoyUCgBHM/fOHZfikku2wdHp4x3PATNjbHQcruvB0yq/57mBJuBpJ6DrGb+Ai5pfw4aNa5HJ
-eGpa0XEgtDZARHjowUfw0IOr2xy4qAEAAG666ab2MuizYMSmCqMDtaurC7/4c/8W77vzziXNAkCp
-rpWqAgKzPr4uIABJ5iFCrVZFcXERpVIJ5UoZpXK57p72K0FCCHheBvl8DvlcAfl8Aa0tLfC8THMM
-nwAAxfhgbobvtbr/TXzp776MmdklF9z9Xd6hX7dV/jS6fvfuowQaVMLcOAL7ceMNu5QDz3Xh6Gm/
-kydG4HoeXNdRDK8/2yDgOA5cT/kOSqUSHMfB0JZBZDIZZQpYQEBEeOiBh/FQ/anKCx4ELnoAMHT1
-TTd9iBh/BKC7biUGdlxxGX7l330QV115ZdNtV2tV1PzY6rUULSAOCEE1/UklAmFUazVUKxVUqpVg
-n3vp+2H2YwZ8KSM/nnAcgABXB8CYuW/P8ZDJZZHNZJHxPJCJPWhgxtR9Bt1v0lGCywGqF186gL/6
-/BfrLuKxaBzAb77w9L6/babd62666etE9GMmFgBEyOdyePc7b1dOPdeFcNQ04PDwMIjUOc9zdSBQ
-FASME9D1HMzPL0JKH61tLdi8eRMymUygAZhAIwB46IGH8NBDj9Tr4gUNAm8YAACAa665phNe9jMg
-/Ao4fPa0YXz55Zfiwx/8RVx3zTVNt89g1GpV1Go+fK4hzQyoL1EpFnZg29i2DRp+p+hJ6zaRViJN
-LMXwSS0g8OfrLMDL006eee55/M0X/xYvHTy0VFUJov/Hk7Xf279/f/q67BS67qabfhdEnyZStr7Q
-msCPvPttyOdyahcpLdnHxydQq9VCiR8DAUcHArmOCxKEmZnpYNqwta0Fm7duQsbNREwBk4ditYLA
-RecEbEQjIyOlkVMnv9m7duM+IuwBUHcucHx8Avd97wEcOnwYPT1rMNBfN7FNQASCI1Qgied6erWZ
-lYprKZU6DghAAgSSDJ7y3UKSut8jfxqAAFvHMuj5F17Ef//s/4vPf+FvMZq+NZd9y1ck6GdefHrv
-Z4eHh5eVtmv9xo0tzPg5LfyhkrUAfb1rUMgXQMI4/UhlFC5VgtkCwDgJdS8Qzm7Mzc2hWg1XjdZq
-PhYXimjvbNVxD2FaOCEEhjYPgZlx9OixtG5esI7BNxQAGBo9deKVDWsHPueTmCCVc7BOQAzj5KlT
-uPe+7+LhRxS6b94yBLdO9iGbiEg7oRQYOI6rAEF7pHUl9Se8KjmXngoAse9WW/oqRHk6ZPhGanvQ
-4hkyfaVSwb/c/S384Wf+CP/rn76GEyeWHOvjTPQb3a2FX973+GOvLFU5jTZt3DjpS/5osLRPA1hH
-ezs6uzqspb4CrudgblZvHGuBQPC69GtaXFzEwsI8QlBQhbVaDcWFEjo62jWwhIBhQECyxLFVBAJv
-KBMgja6++eb1qPmfAfCzsN9HLC+mod7eHrznnXfgvXe+B/19yZ1qmyEGa6+5VJ+lD2kcaSlmAAcb
-8ZmzOEstwLRLweA+m4EwOjaKb337Ptxz7331cvLHiQH8HVWd33n++SfSE/qF9Zaka2/cfZQIg2qN
-P0BCYOOGdbj26p0qiMeK8z958hQIpIN/nMDj7+rFQZVqBXNz89ovoGYJAp+B/t7e1obNWzep9QKW
-KWCcxw/c/xAeeXh1mANveAAwdPX1198IEp9mxrubqS+EwHW7rsH77nwPbrn55ro5CRtRXBobYDAH
-wJAMEOnvQUAfR0SWAYAgRIEYpDcPpBjTr9RPLqXEY0/uxd333Iun9z+zjBgHvkf69HsvPbtv/4p0
-BMA1N970NQG8XwUDKWdga0sB73jbbUoTs6L7Rk+PQfqqr3EQWFxcwOLiQsDoNtMbh6KZOmxva8Pm
-bRoERBgsJIQAM+N7992Pxx9/ol6XLxgQeBMAYnT1dTfdysT/BcBbm72mq7MTt926B2+//S24aufO
-YBCcDb3eEYTx+xMRpJR46eBBPPDQo3j4kUcwNd20rw5g3O/D/8SB/fsfP5tupZ289oYbPg4Sn45n
-97nz3XfA8xQwG0fg9PQUKuVwCbLrumBmzMzOBA5Cm/EbgUBHRzuGtgzC87xEyDAz495vf6f+KsIL
-BATeBIA6dNWuG98Ogf8E4N1Yxnta092NG67fhRuvvw43XLcLrbG9DFeCsc8nOMzPz2P/s89h39PP
-YN/TT2NiYnI5lzMRvu2z/G8H9u+vv67Xqn8mfbzqhhveJUjcY7QcoTWBt73lZmWvazXIcR1Uy1WM
-nB5ViUiqNRSLi/B9P2DuNMYPP8dNAg8dnR0Y2jwIz3MjpoABgW/f8x08VX99w+sOAm8CwBJ01fXX
-7yTQRxj0s0D6SsN65DgCl192Ga65aid27tiJnTsuR6FBXoKVZuwzaW9xcREHDh3CgUOH8cLzL+Kl
-Q4eXXL6bQmUwfxnEf/ri/v2HcIaM3YAi7V1y3XXdeeGMEhEJy8F33TU7sWnTRgChs85xHCwWSzh8
-+BB8aym353lLgkAwdRgHgY52bNk6pHMLRNcNKBD4Np6qb/G8riDwJgCkU+K9XHvttWtrwv0wEX0I
-wOYzapQIWzYPYeeOy3H5ZZdh86YhDA6uR8ZrHIJ8riR+tVrB0ROncOS1Izj88st48cBBvPrqa2ez
-ZuE1AF8oVstfeOWFF1YijXbTD37VdTe8SoRBEiq2nwjYPLQRu665MrFwSYFAEYcOKRAw5YqpvTog
-kGT8qCagQEAtIkqCwLe+eQ/273+m3mOOC/Adr0dSkTcBoPl3YOqJq3fd+A5J+DARfgRARMdfLrM6
-roMN69Zh0+Ag1q0bwEB/HwYGBjDQ14vWlla0t7c37WCM39v3fbUqcXEBo6NjGDl9GsPDpzE8chqv
-HTmCU8MjDVNyNUlzzPIeBn/hwDPPPIC07GQpXT3bm8bbufK6G/+JiH8szPircv3fcvMN6O/rCS6w
-NYHi4iIOxjQcAwIhEKSAQJA3wNN1lXbQ1dWJzVs3KX+DiK4bYGbc/c178MwFBgJvRABo5pmbei87
-duwoiFzLjwD4KYB/FEDDvPhnSu3t7ehsb0NbRzsyrgfXc5HT+x+YjpZKJVRrPqrVCmZnZzE9M4vZ
-2blz0R0AWGDGt4jkXSdnZu6dfOWV9GydK0NNgcWV193w2wA+TaRmaILIQEG4+cZrsXZtNJepiQ0o
-lUo4dOhwBAjTNAHXdZHJeKkgYJsOnV0d2LJlM7yMG4QMm3UDYODb934H+56sp+2ffxB4owDAUs95
-1qCwbdu2lnxH93uJ5fuY6J0A0jcnWKXEwDiYv0uQ35ybnLz7yJEjDRfvL7/5s7t2586da5HJHRJC
-tJilvhEQuGkX1g5EoznNFGGxWGwCBFL8Aq6XCgIdne3YumUzvKwXTkEaLY6Be79zH/Y+sbfe85xX
-n8DFDABny/RnDArbtm1zsq2d1wuH3gPGHhBuAtDSRHsXEPE8mPZJlo9D4t4Dz+/fj+bU+9TGVqJD
-S1W4atf1/5GJ/tTeDiwCArt3YW1/OgiUSkUcPLh8EIgHCYUg0IGtW4eCYCEzDWme5Nv33It9dWcH
-zp8mcLEBQKPnOedaQL16GzZscDt7eq6F4+0B826AriLCViyd4vd8kQTwipT8AjPvlfAfnxoefv70
-6dNn7SA4AzoTsAiu2XnddR8miM8REaWBwJ6bdmGgjiZQKpVw8ODBSKLXZkEg7hyMgIDOJ2D7BMDA
-vffei71Pvr5ThBcDAJxLpj+HoLCjta03s9MBrmYSlxHREJiGiDCEM/UlLO2AXGTQERAfYeYj7MvD
-LPH87OTogZMnTy6c0T3PjM5a5W9EGgQ+WxcEdu8KwrjtWH7hCBQX0h2DjWcI6oNAZ2cHtmzbHMQJ
-mGAhAHqK8F48/dTrN0W4WgHgbBj3ggUFQ1t37uxzXHcgA6eP4Pf6cHoI3AtBXcS21hDm4zFnmCDB
-mGTGuIQ/7rIYr8Af9ef94R/+8KXGy/JWjs6Lyt+obioIIIwS3HPTdejv741cY9YNLC7oKcJlgYAL
-11EO2gQIdHVi69YhuJ4XCRkGFAh86+5vN5gdOLcgsNoA4EwZ+1wz/TkHhRWsf6HRcsGi2fp8xiDg
-OFhYWMTh7x+OBAtFzQADBjE/gOPpjUVceF4mqNvVpTQBOw25DQJ3330Pnt3/bL1nOWcgsFqWA+t1
-m+ek7HyUN1tnOfUa1W/22vNxnE3/mq2fWm90ePjZvoH+YZC4M9CWrNonTg2jq7Mdra2hf9Ykfc1m
-s+jo6MDExASklMFaiCSZddN6sRUBKmeSKVPAU6lUUSqW0NkVhiYD4ZTltm1bMb+wgJHh1Pipc7aU
-+EIHgHPJ+GdzzwsBFOrVXS4DLqetc9Xucq5tpl5AoyMjFgiA1EpKU4Vx8tRIKgio7M4ZdHR0YmJy
-ImD++oFeajk3WTkJGOZW6ppKpYpisYzOzo7ILAWggGDbtq1YWJjH8HkEgQsZAM4n4zcaYGfD9Gc1
-eBvUWQlgOFOGPhf3WE79ZddJBQEg+HPy1Ai6OzuSIABCLptFZ0cHJiYnwDq1kwGDtF2g7FwvoSYQ
-Yk6lXEZJg4Dpvb0N+bbt2zA/v4iR4eG051pxELgQAWCpH/ZMrrlQAeNs6qTVa4aZz4RxVwpIzhYY
-zrjO6MjIc2v6+4YFOQoETE0GwIwTJ4fR3dWZNAegzIHOdmUOmHNRcyCZyck0TpbP1uRjKJfLKBaL
-6OrsjDC/ObZv33reQOBCA4AzZcYzueZCAYx4ebN1llOvWQZdCTqT+59pvaXqRGh8ZOTZNf19wwLi
-Tu0RtC5R5sCa7i60tCRnYbO5LDo7OhuAAGIaAUXUf9MdAwKVcgXFYkmlLUPonDTHtm1bMD9/7n0C
-FxIALJfBz8U157Os2WvPByicq2Ml+9yoTj1KlEdAAFEQYK0JrFnThUI+H2HowCfQ2UgTqAcCdnfi
-IFBM5C407WzbthVzc/MYGTl3IHChAMByGXmpQbFS9zmbPixbQi1RFi8/WwZb6pozZfAz6cty6yyn
-DPGyAAT07EDorAtBoKenOwICxjGYy2XR3tGB8fHxJkFAtZtI7hoDga6uzqCHERDYfm5B4EIAgDNh
-/uW2dab3WelrVhow4uXLAYXlMHI9WgkNYKk6jcrPuMwGAaoDAr093chbCVxMctZcLof2jjZMjDer
-Cah200EAqJSrWCyW0NnVGey/GNcEpmdmMHp6NO2ZzgoEXm8AuBCk+Ot9/9cLFNLqrbQm8Hoze6N+
-NQUCPb3dqVmc8rn8ioAA9D1tn4AQMRAQhEu2b8fU9DRGR1cWBFYbAFxszF/v/PkAhTMBhmbr0VmW
-pz3rmTD72YPAiTogQM2BABAHgsYgUCqW0NGpQMCOEyBBuPSySzA9vbKawOsJAOeDaS+We5zNfZYL
-Cstl9LO5dz1KY/ylwKOZtlLLmgGB3p41KBTyQXYfQDF2Lp9De1t7Q8egqWvf1sQJmChC6HuWyxWU
-S2V0dHYmgoWICJdeurIgcCECwMXOzOdTW2h0TSNGF7F6SzGbiJWdjcRv9ny9vte7puEagjgIhHex
-fAK9yicQAQEQ8vk82tobaQLq9gkQEGZ7sSQIVCsVdHZ16HPRiMFLLt2OqamVMQcuBgBYjUx7Id67
-GWkar5vW5lL3PltGX05bjfqeqDM+MvJsb//AHBG9EyCr1NIEepUmAITrBgAgn8+jvb0d4zEQYIa2
-6ZMgwFrVaKQJmClCdT40Cy699BJMTkxhLH0nphxI/viOK3Z+++DBg6koYehNAHhj3aNeWTMMF6+T
-JlGbkfTLpeVqDVzn2nrPETk/NjK8r7evf46I7tB6elAlNAe6IyBg4v+VJtAe0QSYJQB7V6YoCJjz
-aSBQKpVRLlXQ0dkeYX5VrnwCE+OTdUCACiB+z44rdn7x4MGDdTdcXU0AcCbXXIjMdr7u0Wx7Z9q2
-Ka/HfHFqljHPRjPgBvXrMX38M8ZOj+zt7eufIyHuiF6pYvtPnBpBf+8a5PMqMatZN6DMgRza2jsw
-YcUJMJuFQqYxAwJRhyAFZWH4cLlcQqUcgoBZPQg0AwLoYrB78MCh++q9sDdnAV6fe6z0/c/2XvW0
-gkbtLcXw9a5ZSotYqsyOrV0uWCwFDKEm0AgEWOLEyWH09/cE2Zltn0Ahn0NroQXjExNWIJFMAQF9
-RRwEKHJDlEol1Ko1FSwEJHwCl152CU6cOIHpqenEyyLC9ltvue3P9u/fn5rP8WIBgPN1zeshoZdT
-ttzyc3H/pageA8cZdrkaQSPtoN69GoJJEgRC5pQsceLkCNYO9CKbjW8YRSi0tKC1pSWylZoNAo2m
-BtPCh4vFIiqVqlpKjDBkGFB7HGzbthUHDxxCuZzQ9ltKxfI36zkEX28AAC4eCX2+21uJ8pW8rtE1
-9v7maYy6lCaxHE1hKSCxr2kECoACgX29ff3zCgQovAoqQcjxE8NYu7Yf2Wy4u5PJStzS0opCoQUT
-ExNhZyOaQLTbS4FAqVhEpVpLNQcymQwc18UrP3gl8YII/N0DBw4dSBTgwgaARmUXMnOudB9Wqjyt
-7nIZfalnrucYTLuunk8grf7Zagr1+tSMNkBjp0ee7O/rn0M9EDh5CusG+gJNQDkG1fZkLa0tKBQK
-qZoAEAeC+uHCNghUqzV0dSpzwNYEhBDY//T+RAQiAfcfOHDo6ZT3cEEAAPD/t3dtv3FUd/g74wte
-e9fk4nhtb2SDQEorEgcC/AeNVNSnIvHevrRS+8BDpaqPlXhAIN547lMRFYImUEUCrFCnGKg3Ik1i
-HCNbSEnw7s56szYEO9nYczl9mJ2ZM+M5M2f25tn1+ZSN1ue+s/v7zvf7nTNneo8EovLaWTdOuXY/
-ZliEGNgxho0nihTC2hBRBDwioQBIZaN8NYwEvi+qmJqwlIAnyg+CkfQIUsPD2PKRgOcoMbYGYf9S
-mNFbb2q1GlLDKQwPW7ct2ySgaXvI1x9H7h0D/s5TAEk5l76ZYFBQeqN5rW4v6nNF1RXJF+mD9wqr
-Fwe8tnn9EE49Nl+UHMLq8gzf36aQm/DNzetvQ9f/Ykf1KaWg9aPAtD0NVxYWsbO9A8DaA2CaJgzT
-gGmYODE2hp+dOuUxTMMwoOsaNE2Hrtsv92/DMKAbGnTNcPJ0XYduGEilhqy2TdM5vfjBgxpAaf2M
-E/eSUKqsc65dYhQAi6TL8YOW8a2S7TZaoQJ4Mjuo/WavXxz3gFeHV5cdb2CblY3y1ezE5A4ICVAC
-BtaLbkzAMcJ6CyMjljtQrbqns1tl9isBeymQOA4KAYg1s888MY0jR4+A1Bu2g4o3rt/E7du368Ox
-XQjy8FFt909ra2ta0AVIIgEA3WHs7azbznJBCCIB0bS4ZeMSAw3JE+mPNwb2Jao+CABSKav5MBIo
-FEqYmrRiAuzyICHEiQlUq2xg0CUB+yYgdjgOCYBgfPwEnnhyBvZyob2UaBomLl74CLu7e8xwCABc
-+vDiR+/wLkRSCcBGJ439oNqNU6aRsnHqhc3kcdIacS/8hhjWl90OT+KLKgXh1QB/e3US2A4iAcM0
-USioyE1NYHBw0LNlWCEKMpk0hlIpbPpIYP++ALd7QoCxsWM49XPXjWAVwP+u3cDy8i2nvDsc5bVv
-b327HHgFkXwCAJI3s3ciP265ZuvYCPLZeeTgsm8AAAXiSURBVGlBdUXGE6YieMQiSgy8JcEw1SHi
-AgT1TSplNX9ickIlIC+5mtv6zzAN3C0UkWOWCO0twwBBJpNBOp1GtVp1NvawSsAq73Z4/PhxPHPm
-GSj1+5Tc48eBH7bu4/33P4BpejmLAqt96P/jysoKl5C7gQBsSGNvrGyjbYrM8qJk0agBN4Iwow9T
-CTw1EKYEyD1Vvc53B0yUSmXkprKOErBdARArJpBKpXz7BNjLZc3ux44exdlnz1jPFCSO7gcBgaEb
-ePcf72Fn54HTrzM4gj//84ML3GeOAd1FADbaJeNbkd/KMnHKtbou0LwxR838YSsRIqohDoGEuQZB
-ZaJiAp7+/DEB9mGkhmGgUCxjatIlAatRy7jTmTRSQ0PY2mKXCN3us9ksnnv+LJS+fth3KdsKwKQU
-Fy7+C6Uic3y4SwK3ftz66Q937twJfaR7NxIAi8Nu7O1QAn6IuABxyAIQI4eoeqLtRy15RqmAsDE5
-5SpldTE7MbkdtGPQMAwUSmXkclkMDgx6qhMQjI5mMPjYfhJ4+umnMDt72tpUhPoRBXUFQCnF3Nxn
-WFv7jhmK81ajCn419/Fcos8DaCW6TcbHNdxWGHqryELUVQjbCxDHeOPUi9p/4C8XlBdl9Gw5j1Ko
-lNWr49mJ4MCgoaNYVJHLTWBgYAAAu4vPSwKjoxnMnp3F9My0NesTt1sCAlCKL79axM2lZW+gwO6T
-4q+XPrz0HmfsHvQKAbDoxMzeLn/9ICW/KPzGFbSRh51J/WB980bJIU6fvHL+NuP0HVQXgOUO8EhA
-NwwUi2WczE1icHDAOUvAtuHR0QxmZmYwPTONkZEREEfyE4cIKKX48otF3LjxDTMKDwl8Xi6Vf6+q
-qlA8pRcJgEUnjb0Tht4pIxeBiPHyDJVnrKLkEKY6/K+oa8bri80Pes8rE0ECOgpFFSenLCVgHzVu
-BwYVVu4DjuQnAAzDxJX/LGBlZbXeJCv7CQiwbGrGLxcWFh4y1yQUvU4Afhwmv77TZBEVCIxDGGHt
-+Q2crRvVd9SsGEQgQWWiQCtlNT9u7RM4H0gCJa87YOW4RGAfFWb7GrXaI3zy6WdYXy/63H1iD+ou
-1c1fzM3N+U8GCQt8HjoC8OMgjb1ZA02SGgDCZ/uwWdtfNqq9oLoi9XnlRUghKi+wTEUtLXJJQNdR
-KJZxMjeB/v5+zwgd068TQbGo4tPL87h//777UbwkUDX39POXL1++zfmsvLRDTwB+JEXud8q4W9UP
-b2YXdQdECMLfTzNSX4QUotwCEWJARS3xlYCu4/v1Eh4/krEeQ+ZRAMC9e5vI57/GzaVb0HXdN1xi
-//tO3907Pz8/v+obgxAJJG0WSSLaaezdKvcbRTMEy6vLi+q3SmEJBdOiyp0598KrRFHesIN+9j4B
-+/3jmTTGs2Po6+uHpmmobm7h4cMas6cAzMGgsM8U/G9te/vX+XzevrtI1GVx0rrlh5M0dNLQe/U7
-imPkovX96aER+w6CAsDsuRdehaK8ySMBZ3uvk+7N85AA6Ls/VDd/t7S09CioL9E06QK0HkmS/Ekh
-D94PUMRN8CMquBdX5jcDnvoIxIZasm8g2ucOuA2y6d68+nJf2aD0t1/MX3l9Y2NDb3zoVsOSADqL
-wyb54yLMxw9KB4KvRVQ77VzFCUUsEvAOQ6fAOzua9vLXCwuh+/sDwP0cvfpD6nbI78VFXEkfdu1a
-uerTFM6ce/E3UMhbCiGjoe4AyA6h+Ju+a7597dpXdyEYfBTMo/KH1jvotu+yUfndDsNv96pOIJ48
-ffpYemjoFYK+lxQFMyBkWAHZJYSqAFkllHyy/ePmv1dXV2tozXLlvvRu+9FISPjRqOEfmBsQA61Y
-gQjNkwQg0Ys4SDcgTt1mgpBCOxKj8iQBSBwWJNINiIE4ZCHsLkgCkDjsSExgsEk0pAi64YNJSBwE
-krSfg0UjbgO3jiQACYnGkFTbiUUQSf0QEhK9hlbaWrM7GCUkJCQkJCQkJCQkJCQkJCQkJCQOC/4P
-0rqqRgScGl8AAAAASUVORK5CYII=
-"
- height="64"
- width="64" />
- </g>
-</svg>
diff --git a/navit/icons/gui_select_country.svg b/navit/icons/gui_select_country.svg
deleted file mode 100644
index 61e2dcb8d..000000000
--- a/navit/icons/gui_select_country.svg
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg3220"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/tmp"
- sodipodi:docname="gui_inactive.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3222">
- <linearGradient
- y2="40.064526"
- x2="27.044603"
- y1="19.939341"
- x1="17.838388"
- gradientUnits="userSpaceOnUse"
- id="linearGradient7010"
- xlink:href="#linearGradient7000"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient7000"
- inkscape:collect="always">
- <stop
- id="stop7002"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop7004"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="61.80806"
- x2="39.418972"
- y1="19.939341"
- x1="17.838388"
- id="linearGradient7006"
- xlink:href="#linearGradient7000"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient2790">
- <stop
- id="stop2792"
- offset="0"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1;"
- offset="0.8108108"
- id="stop2798" />
- <stop
- id="stop2794"
- offset="1"
- style="stop-color:#959e8b;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- gradientTransform="matrix(1.7588235,0,0,1.7588235,6.032353,6.0323539)"
- gradientUnits="userSpaceOnUse"
- y2="30.038462"
- x2="19.255854"
- y1="0.068979882"
- x1="4.3764215"
- id="linearGradient6945"
- xlink:href="#linearGradient2790"
- inkscape:collect="always" />
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.5,0,9.75)"
- r="3"
- fy="19.5"
- fx="-2"
- cy="19.5"
- cx="-2"
- id="radialGradient6972"
- xlink:href="#linearGradient6964"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient6964"
- inkscape:collect="always">
- <stop
- id="stop5939"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop6968"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.5,0,9.75)"
- r="3"
- fy="19.5"
- fx="-2"
- cy="19.5"
- cx="-2"
- id="radialGradient6970"
- xlink:href="#linearGradient6964"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient6958">
- <stop
- id="stop6960"
- offset="0"
- style="stop-color:#729fcf;stop-opacity:1;" />
- <stop
- style="stop-color:#729fcf;stop-opacity:1;"
- offset="0.60000002"
- id="stop6966" />
- <stop
- id="stop6962"
- offset="1"
- style="stop-color:#729fcf;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6958"
- id="radialGradient5962"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)"
- cx="70.53125"
- cy="22.734375"
- fx="70.53125"
- fy="22.734375"
- r="3.5975378" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="800"
- inkscape:window-height="649"
- inkscape:window-x="472"
- inkscape:window-y="296" />
- <metadata
- id="metadata3225">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- style="display:inline"
- inkscape:label="Layer 1"
- id="g5953"
- transform="translate(-0.6553298,-1.376604)">
- <g
- transform="matrix(1.8719362,0,0,1.5205944,5.0000002,10.484903)"
- style="opacity:0.7238806"
- id="g6978">
- <path
- sodipodi:type="arc"
- style="opacity:0.14179107;fill:url(#radialGradient5962);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6974"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(2.0312501,0,0,1.2946278,14.455805,-7.7591062)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient6970);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6960"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(1.6666667,0,0,1.2946278,8.3333333,-6.6568542)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient6972);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6962"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(1.6666667,0,0,1.2946278,19.333333,-6.6568542)" />
- </g>
- <path
- id="path6930"
- d="M 14.82647,9.5500008 L 9.55,14.826471 L 19.22353,24.5 L 9.55,34.17353 L 14.82647,39.45 L 24.500002,29.776471 L 34.17352,39.45 L 39.45,34.17353 L 29.77647,24.5 L 39.45,14.826471 L 34.17352,9.5500008 L 24.500002,19.22353 L 14.82647,9.5500008 z "
- style="fill:url(#linearGradient6945);fill-opacity:1;fill-rule:evenodd;stroke:#6f716b;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- transform="translate(0,1)"
- d="M 14.8125,10.0625 L 11.0625,13.8125 L 19.96875,22.75 C 20.169915,22.947709 20.283223,23.217943 20.283223,23.5 C 20.283223,23.782057 20.169915,24.052291 19.96875,24.25 L 11.0625,33.1875 L 14.8125,36.9375 L 23.75,28.03125 C 23.947709,27.830085 24.217943,27.716777 24.5,27.716777 C 24.782057,27.716777 25.052291,27.830085 25.25,28.03125 L 34.1875,36.9375 L 37.9375,33.1875 L 29.03125,24.25 C 28.830085,24.052291 28.716777,23.782057 28.716777,23.5 C 28.716777,23.217943 28.830085,22.947709 29.03125,22.75 L 37.9375,13.8125 L 34.1875,10.0625 L 25.25,18.96875 C 25.052291,19.169915 24.782057,19.283223 24.5,19.283223 C 24.217943,19.283223 23.947709,19.169915 23.75,18.96875 L 14.8125,10.0625 z "
- id="path6996"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7006);stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:original="M 14.8125 8.5625 L 9.5625 13.8125 L 19.21875 23.5 L 9.5625 33.1875 L 14.8125 38.4375 L 24.5 28.78125 L 34.1875 38.4375 L 39.4375 33.1875 L 29.78125 23.5 L 39.4375 13.8125 L 34.1875 8.5625 L 24.5 18.21875 L 14.8125 8.5625 z "
- inkscape:radius="-1.0514843"
- sodipodi:type="inkscape:offset" />
- <path
- transform="translate(0,1)"
- d="M 14.8125,10.0625 L 11.0625,13.8125 L 19.96875,22.75 C 20.169915,22.947709 20.283223,23.217943 20.283223,23.5 C 20.283223,23.782057 20.169915,24.052291 19.96875,24.25 L 11.0625,33.1875 L 14.8125,36.9375 L 23.75,28.03125 C 23.947709,27.830085 24.217943,27.716777 24.5,27.716777 C 24.782057,27.716777 25.052291,27.830085 25.25,28.03125 L 34.1875,36.9375 L 37.9375,33.1875 L 29.03125,24.25 C 28.830085,24.052291 28.716777,23.782057 28.716777,23.5 C 28.716777,23.217943 28.830085,22.947709 29.03125,22.75 L 37.9375,13.8125 L 34.1875,10.0625 L 25.25,18.96875 C 25.052291,19.169915 24.782057,19.283223 24.5,19.283223 C 24.217943,19.283223 23.947709,19.169915 23.75,18.96875 L 14.8125,10.0625 z "
- id="path7008"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7010);stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:original="M 14.8125 8.5625 L 9.5625 13.8125 L 19.21875 23.5 L 9.5625 33.1875 L 14.8125 38.4375 L 24.5 28.78125 L 34.1875 38.4375 L 39.4375 33.1875 L 29.78125 23.5 L 39.4375 13.8125 L 34.1875 8.5625 L 24.5 18.21875 L 14.8125 8.5625 z "
- inkscape:radius="-1.0514843"
- sodipodi:type="inkscape:offset" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_select_house_number.svg b/navit/icons/gui_select_house_number.svg
deleted file mode 100644
index 61e2dcb8d..000000000
--- a/navit/icons/gui_select_house_number.svg
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg3220"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/tmp"
- sodipodi:docname="gui_inactive.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3222">
- <linearGradient
- y2="40.064526"
- x2="27.044603"
- y1="19.939341"
- x1="17.838388"
- gradientUnits="userSpaceOnUse"
- id="linearGradient7010"
- xlink:href="#linearGradient7000"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient7000"
- inkscape:collect="always">
- <stop
- id="stop7002"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop7004"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="61.80806"
- x2="39.418972"
- y1="19.939341"
- x1="17.838388"
- id="linearGradient7006"
- xlink:href="#linearGradient7000"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient2790">
- <stop
- id="stop2792"
- offset="0"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1;"
- offset="0.8108108"
- id="stop2798" />
- <stop
- id="stop2794"
- offset="1"
- style="stop-color:#959e8b;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- gradientTransform="matrix(1.7588235,0,0,1.7588235,6.032353,6.0323539)"
- gradientUnits="userSpaceOnUse"
- y2="30.038462"
- x2="19.255854"
- y1="0.068979882"
- x1="4.3764215"
- id="linearGradient6945"
- xlink:href="#linearGradient2790"
- inkscape:collect="always" />
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.5,0,9.75)"
- r="3"
- fy="19.5"
- fx="-2"
- cy="19.5"
- cx="-2"
- id="radialGradient6972"
- xlink:href="#linearGradient6964"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient6964"
- inkscape:collect="always">
- <stop
- id="stop5939"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop6968"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.5,0,9.75)"
- r="3"
- fy="19.5"
- fx="-2"
- cy="19.5"
- cx="-2"
- id="radialGradient6970"
- xlink:href="#linearGradient6964"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient6958">
- <stop
- id="stop6960"
- offset="0"
- style="stop-color:#729fcf;stop-opacity:1;" />
- <stop
- style="stop-color:#729fcf;stop-opacity:1;"
- offset="0.60000002"
- id="stop6966" />
- <stop
- id="stop6962"
- offset="1"
- style="stop-color:#729fcf;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6958"
- id="radialGradient5962"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)"
- cx="70.53125"
- cy="22.734375"
- fx="70.53125"
- fy="22.734375"
- r="3.5975378" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="800"
- inkscape:window-height="649"
- inkscape:window-x="472"
- inkscape:window-y="296" />
- <metadata
- id="metadata3225">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- style="display:inline"
- inkscape:label="Layer 1"
- id="g5953"
- transform="translate(-0.6553298,-1.376604)">
- <g
- transform="matrix(1.8719362,0,0,1.5205944,5.0000002,10.484903)"
- style="opacity:0.7238806"
- id="g6978">
- <path
- sodipodi:type="arc"
- style="opacity:0.14179107;fill:url(#radialGradient5962);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6974"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(2.0312501,0,0,1.2946278,14.455805,-7.7591062)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient6970);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6960"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(1.6666667,0,0,1.2946278,8.3333333,-6.6568542)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient6972);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6962"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(1.6666667,0,0,1.2946278,19.333333,-6.6568542)" />
- </g>
- <path
- id="path6930"
- d="M 14.82647,9.5500008 L 9.55,14.826471 L 19.22353,24.5 L 9.55,34.17353 L 14.82647,39.45 L 24.500002,29.776471 L 34.17352,39.45 L 39.45,34.17353 L 29.77647,24.5 L 39.45,14.826471 L 34.17352,9.5500008 L 24.500002,19.22353 L 14.82647,9.5500008 z "
- style="fill:url(#linearGradient6945);fill-opacity:1;fill-rule:evenodd;stroke:#6f716b;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- transform="translate(0,1)"
- d="M 14.8125,10.0625 L 11.0625,13.8125 L 19.96875,22.75 C 20.169915,22.947709 20.283223,23.217943 20.283223,23.5 C 20.283223,23.782057 20.169915,24.052291 19.96875,24.25 L 11.0625,33.1875 L 14.8125,36.9375 L 23.75,28.03125 C 23.947709,27.830085 24.217943,27.716777 24.5,27.716777 C 24.782057,27.716777 25.052291,27.830085 25.25,28.03125 L 34.1875,36.9375 L 37.9375,33.1875 L 29.03125,24.25 C 28.830085,24.052291 28.716777,23.782057 28.716777,23.5 C 28.716777,23.217943 28.830085,22.947709 29.03125,22.75 L 37.9375,13.8125 L 34.1875,10.0625 L 25.25,18.96875 C 25.052291,19.169915 24.782057,19.283223 24.5,19.283223 C 24.217943,19.283223 23.947709,19.169915 23.75,18.96875 L 14.8125,10.0625 z "
- id="path6996"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7006);stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:original="M 14.8125 8.5625 L 9.5625 13.8125 L 19.21875 23.5 L 9.5625 33.1875 L 14.8125 38.4375 L 24.5 28.78125 L 34.1875 38.4375 L 39.4375 33.1875 L 29.78125 23.5 L 39.4375 13.8125 L 34.1875 8.5625 L 24.5 18.21875 L 14.8125 8.5625 z "
- inkscape:radius="-1.0514843"
- sodipodi:type="inkscape:offset" />
- <path
- transform="translate(0,1)"
- d="M 14.8125,10.0625 L 11.0625,13.8125 L 19.96875,22.75 C 20.169915,22.947709 20.283223,23.217943 20.283223,23.5 C 20.283223,23.782057 20.169915,24.052291 19.96875,24.25 L 11.0625,33.1875 L 14.8125,36.9375 L 23.75,28.03125 C 23.947709,27.830085 24.217943,27.716777 24.5,27.716777 C 24.782057,27.716777 25.052291,27.830085 25.25,28.03125 L 34.1875,36.9375 L 37.9375,33.1875 L 29.03125,24.25 C 28.830085,24.052291 28.716777,23.782057 28.716777,23.5 C 28.716777,23.217943 28.830085,22.947709 29.03125,22.75 L 37.9375,13.8125 L 34.1875,10.0625 L 25.25,18.96875 C 25.052291,19.169915 24.782057,19.283223 24.5,19.283223 C 24.217943,19.283223 23.947709,19.169915 23.75,18.96875 L 14.8125,10.0625 z "
- id="path7008"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7010);stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:original="M 14.8125 8.5625 L 9.5625 13.8125 L 19.21875 23.5 L 9.5625 33.1875 L 14.8125 38.4375 L 24.5 28.78125 L 34.1875 38.4375 L 39.4375 33.1875 L 29.78125 23.5 L 39.4375 13.8125 L 34.1875 8.5625 L 24.5 18.21875 L 14.8125 8.5625 z "
- inkscape:radius="-1.0514843"
- sodipodi:type="inkscape:offset" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_select_street.svg b/navit/icons/gui_select_street.svg
deleted file mode 100644
index 390c2e11c..000000000
--- a/navit/icons/gui_select_street.svg
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg3165"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/tmp"
- sodipodi:docname="gui_active.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3167">
- <linearGradient
- id="linearGradient5237">
- <stop
- id="stop5239"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0.5"
- id="stop5247" />
- <stop
- id="stop5241"
- offset="1"
- style="stop-color:#9c9c9c;stop-opacity:1" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5237"
- id="radialGradient5990"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.5301205,0,0,1.6745294,-12.159639,-11.709817)"
- cx="22.9375"
- cy="16.305218"
- fx="22.9375"
- fy="16.305218"
- r="15.5625" />
- <linearGradient
- id="linearGradient5300"
- inkscape:collect="always">
- <stop
- id="stop5302"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop5304"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5300"
- id="radialGradient5988"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.2469896,0,0,2.2469896,-37.128341,-8.8439229)"
- cx="29.77438"
- cy="7.0922189"
- fx="29.77438"
- fy="7.0922189"
- r="25.380436" />
- <linearGradient
- id="linearGradient5226">
- <stop
- id="stop5811"
- offset="0"
- style="stop-color:#63b512;stop-opacity:1;" />
- <stop
- style="stop-color:#58a30e;stop-opacity:1;"
- offset="0.16030352"
- id="stop5245" />
- <stop
- style="stop-color:#366b04;stop-opacity:1"
- offset="0.66008514"
- id="stop5814" />
- <stop
- id="stop5231"
- offset="1"
- style="stop-color:#87ea25;stop-opacity:1" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5226"
- id="radialGradient5986"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.5354369,0,0,1.5485894,-15.737913,-10.36738)"
- cx="29.392656"
- cy="18.898249"
- fx="29.392656"
- fy="18.898249"
- r="29.699959" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5224"
- id="radialGradient5984"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
- cx="14.5"
- cy="26.6875"
- fx="14.5"
- fy="26.6875"
- r="10" />
- <filter
- height="1.6682318"
- y="-0.33411592"
- width="1.1962931"
- x="-0.09814655"
- id="filter5296"
- inkscape:collect="always">
- <feGaussianBlur
- id="feGaussianBlur5298"
- stdDeviation="0.81788793"
- inkscape:collect="always" />
- </filter>
- <linearGradient
- id="linearGradient5224"
- inkscape:collect="always">
- <stop
- id="stop5226"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop5228"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5224"
- id="radialGradient5982"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
- cx="14.5"
- cy="26.6875"
- fx="14.5"
- fy="26.6875"
- r="10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="800"
- inkscape:window-height="649"
- inkscape:window-x="472"
- inkscape:window-y="0" />
- <metadata
- id="metadata3170">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- style="display:inline"
- id="g5964"
- transform="translate(0.8558594,-0.614906)">
- <path
- transform="matrix(2.1570145,0,0,2.155398,-7.8468552,-16.33814)"
- d="M 24.5 26.6875 A 10 2.9375 0 1 1 4.5,26.6875 A 10 2.9375 0 1 1 24.5 26.6875 z"
- sodipodi:ry="2.9375"
- sodipodi:rx="10"
- sodipodi:cy="26.6875"
- sodipodi:cx="14.5"
- id="path5966"
- style="opacity:0.53012049;fill:url(#radialGradient5982);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter5296);enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.80120479;fill:url(#radialGradient5984);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter5296);enable-background:accumulate"
- id="path5968"
- sodipodi:cx="14.5"
- sodipodi:cy="26.6875"
- sodipodi:rx="10"
- sodipodi:ry="2.9375"
- d="M 24.5 26.6875 A 10 2.9375 0 1 1 4.5,26.6875 A 10 2.9375 0 1 1 24.5 26.6875 z"
- transform="matrix(1.3478975,0,0,1.3468874,3.8853414,6.4889877)" />
- <path
- transform="matrix(0.7238447,0,0,0.7274883,2.1828126,2.3568607)"
- d="M 58.403591 29.207693 A 29.010935 29.010935 0 1 1 0.3817215,29.207693 A 29.010935 29.010935 0 1 1 58.403591 29.207693 z"
- sodipodi:ry="29.010935"
- sodipodi:rx="29.010935"
- sodipodi:cy="29.207693"
- sodipodi:cx="29.392656"
- id="path5970"
- style="fill:url(#radialGradient5986);fill-opacity:1;fill-rule:evenodd;stroke:#316203;stroke-width:1.37804782;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.8254302,0,0,0.8252681,-1.1457884,-1.4441229)"
- d="M 53.950159 30.352861 A 24.175779 24.175779 0 1 1 5.5986004,30.352861 A 24.175779 24.175779 0 1 1 53.950159 30.352861 z"
- sodipodi:ry="24.175779"
- sodipodi:rx="24.175779"
- sodipodi:cy="30.352861"
- sodipodi:cx="29.77438"
- id="path5972"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient5988);stroke-width:1.21160841;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- sodipodi:type="arc" />
- <path
- sodipodi:nodetypes="ccccccc"
- id="path5974"
- d="M 12.875,24.625 L 25.375,36.625 L 44,20.625 C 43.253602,16.729371 41.57038,13.679873 39.8125,11.0625 L 25.125,23.75 L 20.375,18.5 L 12.875,24.625 z "
- style="opacity:1;fill:url(#radialGradient5990);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="cc"
- id="path5976"
- d="M 40.21875,10.8125 C 41.930961,13.346411 43.59334,15.979986 44.40625,20.3125"
- style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#549910;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_select_town.svg b/navit/icons/gui_select_town.svg
deleted file mode 100644
index 61e2dcb8d..000000000
--- a/navit/icons/gui_select_town.svg
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg3220"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/tmp"
- sodipodi:docname="gui_inactive.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3222">
- <linearGradient
- y2="40.064526"
- x2="27.044603"
- y1="19.939341"
- x1="17.838388"
- gradientUnits="userSpaceOnUse"
- id="linearGradient7010"
- xlink:href="#linearGradient7000"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient7000"
- inkscape:collect="always">
- <stop
- id="stop7002"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop7004"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="61.80806"
- x2="39.418972"
- y1="19.939341"
- x1="17.838388"
- id="linearGradient7006"
- xlink:href="#linearGradient7000"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient2790">
- <stop
- id="stop2792"
- offset="0"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1;"
- offset="0.8108108"
- id="stop2798" />
- <stop
- id="stop2794"
- offset="1"
- style="stop-color:#959e8b;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- gradientTransform="matrix(1.7588235,0,0,1.7588235,6.032353,6.0323539)"
- gradientUnits="userSpaceOnUse"
- y2="30.038462"
- x2="19.255854"
- y1="0.068979882"
- x1="4.3764215"
- id="linearGradient6945"
- xlink:href="#linearGradient2790"
- inkscape:collect="always" />
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.5,0,9.75)"
- r="3"
- fy="19.5"
- fx="-2"
- cy="19.5"
- cx="-2"
- id="radialGradient6972"
- xlink:href="#linearGradient6964"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient6964"
- inkscape:collect="always">
- <stop
- id="stop5939"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop6968"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.5,0,9.75)"
- r="3"
- fy="19.5"
- fx="-2"
- cy="19.5"
- cx="-2"
- id="radialGradient6970"
- xlink:href="#linearGradient6964"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient6958">
- <stop
- id="stop6960"
- offset="0"
- style="stop-color:#729fcf;stop-opacity:1;" />
- <stop
- style="stop-color:#729fcf;stop-opacity:1;"
- offset="0.60000002"
- id="stop6966" />
- <stop
- id="stop6962"
- offset="1"
- style="stop-color:#729fcf;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6958"
- id="radialGradient5962"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)"
- cx="70.53125"
- cy="22.734375"
- fx="70.53125"
- fy="22.734375"
- r="3.5975378" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="800"
- inkscape:window-height="649"
- inkscape:window-x="472"
- inkscape:window-y="296" />
- <metadata
- id="metadata3225">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- style="display:inline"
- inkscape:label="Layer 1"
- id="g5953"
- transform="translate(-0.6553298,-1.376604)">
- <g
- transform="matrix(1.8719362,0,0,1.5205944,5.0000002,10.484903)"
- style="opacity:0.7238806"
- id="g6978">
- <path
- sodipodi:type="arc"
- style="opacity:0.14179107;fill:url(#radialGradient5962);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6974"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(2.0312501,0,0,1.2946278,14.455805,-7.7591062)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient6970);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6960"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(1.6666667,0,0,1.2946278,8.3333333,-6.6568542)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient6972);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6962"
- sodipodi:cx="-2"
- sodipodi:cy="19.5"
- sodipodi:rx="3"
- sodipodi:ry="1.5"
- d="M 1 19.5 A 3 1.5 0 1 1 -5,19.5 A 3 1.5 0 1 1 1 19.5 z"
- transform="matrix(1.6666667,0,0,1.2946278,19.333333,-6.6568542)" />
- </g>
- <path
- id="path6930"
- d="M 14.82647,9.5500008 L 9.55,14.826471 L 19.22353,24.5 L 9.55,34.17353 L 14.82647,39.45 L 24.500002,29.776471 L 34.17352,39.45 L 39.45,34.17353 L 29.77647,24.5 L 39.45,14.826471 L 34.17352,9.5500008 L 24.500002,19.22353 L 14.82647,9.5500008 z "
- style="fill:url(#linearGradient6945);fill-opacity:1;fill-rule:evenodd;stroke:#6f716b;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- transform="translate(0,1)"
- d="M 14.8125,10.0625 L 11.0625,13.8125 L 19.96875,22.75 C 20.169915,22.947709 20.283223,23.217943 20.283223,23.5 C 20.283223,23.782057 20.169915,24.052291 19.96875,24.25 L 11.0625,33.1875 L 14.8125,36.9375 L 23.75,28.03125 C 23.947709,27.830085 24.217943,27.716777 24.5,27.716777 C 24.782057,27.716777 25.052291,27.830085 25.25,28.03125 L 34.1875,36.9375 L 37.9375,33.1875 L 29.03125,24.25 C 28.830085,24.052291 28.716777,23.782057 28.716777,23.5 C 28.716777,23.217943 28.830085,22.947709 29.03125,22.75 L 37.9375,13.8125 L 34.1875,10.0625 L 25.25,18.96875 C 25.052291,19.169915 24.782057,19.283223 24.5,19.283223 C 24.217943,19.283223 23.947709,19.169915 23.75,18.96875 L 14.8125,10.0625 z "
- id="path6996"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7006);stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:original="M 14.8125 8.5625 L 9.5625 13.8125 L 19.21875 23.5 L 9.5625 33.1875 L 14.8125 38.4375 L 24.5 28.78125 L 34.1875 38.4375 L 39.4375 33.1875 L 29.78125 23.5 L 39.4375 13.8125 L 34.1875 8.5625 L 24.5 18.21875 L 14.8125 8.5625 z "
- inkscape:radius="-1.0514843"
- sodipodi:type="inkscape:offset" />
- <path
- transform="translate(0,1)"
- d="M 14.8125,10.0625 L 11.0625,13.8125 L 19.96875,22.75 C 20.169915,22.947709 20.283223,23.217943 20.283223,23.5 C 20.283223,23.782057 20.169915,24.052291 19.96875,24.25 L 11.0625,33.1875 L 14.8125,36.9375 L 23.75,28.03125 C 23.947709,27.830085 24.217943,27.716777 24.5,27.716777 C 24.782057,27.716777 25.052291,27.830085 25.25,28.03125 L 34.1875,36.9375 L 37.9375,33.1875 L 29.03125,24.25 C 28.830085,24.052291 28.716777,23.782057 28.716777,23.5 C 28.716777,23.217943 28.830085,22.947709 29.03125,22.75 L 37.9375,13.8125 L 34.1875,10.0625 L 25.25,18.96875 C 25.052291,19.169915 24.782057,19.283223 24.5,19.283223 C 24.217943,19.283223 23.947709,19.169915 23.75,18.96875 L 14.8125,10.0625 z "
- id="path7008"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7010);stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:original="M 14.8125 8.5625 L 9.5625 13.8125 L 19.21875 23.5 L 9.5625 33.1875 L 14.8125 38.4375 L 24.5 28.78125 L 34.1875 38.4375 L 39.4375 33.1875 L 29.78125 23.5 L 39.4375 13.8125 L 34.1875 8.5625 L 24.5 18.21875 L 14.8125 8.5625 z "
- inkscape:radius="-1.0514843"
- sodipodi:type="inkscape:offset" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_settings.svg b/navit/icons/gui_settings.svg
deleted file mode 100644
index 86bec7718..000000000
--- a/navit/icons/gui_settings.svg
+++ /dev/null
@@ -1,408 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg7854"
- sodipodi:version="0.32"
- inkscape:version="0.45+devel"
- version="1.0"
- sodipodi:docbase="/home/jimmac/src/cvs/gnome/gnome-icon-theme/scalable/categories"
- sodipodi:docname="preferences-desktop.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs7856">
- <linearGradient
- id="linearGradient24230">
- <stop
- id="stop24232"
- offset="0"
- style="stop-color:#677579;stop-opacity:1;" />
- <stop
- id="stop24234"
- offset="1"
- style="stop-color:#333333;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient5048">
- <stop
- id="stop5050"
- offset="0"
- style="stop-color:black;stop-opacity:0;" />
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0.5"
- id="stop5056" />
- <stop
- id="stop5052"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient4228">
- <stop
- style="stop-color:#d9d9d9;stop-opacity:1;"
- offset="0"
- id="stop4230" />
- <stop
- style="stop-color:#c7c7c7;stop-opacity:1;"
- offset="1"
- id="stop4232" />
- </linearGradient>
- <linearGradient
- id="linearGradient4244">
- <stop
- style="stop-color:#f0f0f0;stop-opacity:1;"
- offset="0"
- id="stop4246" />
- <stop
- style="stop-color:#e0e0e0;stop-opacity:1;"
- offset="1"
- id="stop4248" />
- </linearGradient>
- <linearGradient
- id="linearGradient5060"
- inkscape:collect="always">
- <stop
- id="stop5062"
- offset="0"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- id="stop5064"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4228"
- id="linearGradient6613"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0039034,0,0,1,-0.2863699,4.084439)"
- x1="7.6046205"
- y1="28.481176"
- x2="36.183067"
- y2="40.943935" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4244"
- id="radialGradient6615"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2901853,0.7884154,-0.7129611,1.1796023,-2.6322372,-1.0775827)"
- cx="15.571491"
- cy="2.9585190"
- fx="15.571491"
- fy="2.9585190"
- r="20.935817" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24230"
- id="linearGradient6626"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,0.587604,48.51835,9.808271)"
- x1="12.51301"
- y1="30.585787"
- x2="12.51301"
- y2="16.885592" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24230"
- id="linearGradient6628"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.587604,-1.140279,9.808271)"
- x1="12.51301"
- y1="30.585787"
- x2="12.51301"
- y2="16.885592" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient24230"
- id="linearGradient6635"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(10.999998,-3.9739816)"
- x1="12.51301"
- y1="30.585787"
- x2="12.51301"
- y2="23.635592" />
- <filter
- inkscape:collect="always"
- x="-0.071073672"
- width="1.1421473"
- y="-0.26144958"
- height="1.5228992"
- id="filter7681">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="0.45753676"
- id="feGaussianBlur7683" />
- </filter>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5048"
- id="linearGradient7734"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.702375e-2,0,0,4.7279468e-2,0.3013351,14.32798)"
- x1="302.85715"
- y1="366.64789"
- x2="302.85715"
- y2="609.50507" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient7736"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.702375e-2,0,0,4.7279468e-2,0.3145254,14.32798)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient7738"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-6.702375e-2,0,0,4.7279468e-2,48.736751,14.32798)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#e0e0e0"
- borderopacity="1"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="73.809708"
- inkscape:cy="24.712172"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="48px"
- height="48px"
- inkscape:showpageshadow="false"
- inkscape:window-width="872"
- inkscape:window-height="627"
- inkscape:window-x="651"
- inkscape:window-y="308"
- showgrid="false" />
- <metadata
- id="metadata7859">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source>http://jimmac.musichall.cz</dc:source>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:title>Desktop Preferences</dc:title>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>preferences</rdf:li>
- <rdf:li>desktop</rdf:li>
- <rdf:li>user</rdf:li>
- <rdf:li>settings</rdf:li>
- </rdf:Bag>
- </dc:subject>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g7729"
- transform="translate(-0.75,0)">
- <rect
- y="31.662897"
- x="8.3441849"
- height="11.482157"
- width="32.362896"
- id="rect6591"
- style="opacity:0.85294118;color:#000000;fill:url(#linearGradient7734);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- sodipodi:nodetypes="cccc"
- id="path6593"
- d="M 40.707082,31.663293 C 40.707082,31.663293 40.707082,43.144816 40.707082,43.144816 C 44.158639,43.16643 49.051268,40.572389 49.051266,37.403316 C 49.051266,34.234241 45.199588,31.663293 40.707082,31.663293 z"
- style="opacity:0.85294118;color:#000000;fill:url(#radialGradient7736);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:0.85294118;color:#000000;fill:url(#radialGradient7738);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 8.3441856,31.663293 C 8.3441856,31.663293 8.3441856,43.144816 8.3441856,43.144816 C 4.8926276,43.16643 2.6449977e-09,40.572389 2.6449977e-09,37.403316 C 2.6449977e-09,34.234241 3.8516777,31.663293 8.3441856,31.663293 z"
- id="path6595"
- sodipodi:nodetypes="cccc" />
- </g>
- <path
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 9.022859,9 C 8.3954775,9 7.9876803,9.293946 7.7367287,9.854703 C 7.7367277,9.854703 3.2509523,29.876846 3.2509523,29.876846 C 3.2509523,29.876846 2.9999999,30.55712 2.9999999,31.681213 C 2.9999999,31.681213 2.9999999,37.404507 2.9999999,37.404507 C 2.9999999,38.50117 3.6602911,39.050598 4.6625603,39.050596 L 43.371985,39.050596 C 44.360589,39.050596 44.971807,38.323095 44.971807,37.182918 L 44.971807,31.459624 C 44.971807,31.459624 45.078174,30.679202 44.877699,30.13009 L 40.140971,10.012982 C 39.955742,9.494432 39.501639,9.012061 39.011684,9 L 9.022859,9 z"
- id="path6597"
- sodipodi:nodetypes="cccsccccccccc" />
- <path
- style="fill:url(#linearGradient6613);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.02044296px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 3,31.081252 L 3.7675865,30.389037 L 41.524078,30.451537 L 45,30.768835 L 45,37.207367 C 45,38.332936 44.390613,39.050698 43.401915,39.050698 L 4.6683257,39.050698 C 3.6659643,39.050698 3,38.508647 3,37.426034 L 3,31.081252 z"
- id="path6599"
- sodipodi:nodetypes="ccccccccc" />
- <path
- style="fill:url(#radialGradient6615);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 3.2892931,29.978281 C 2.5728183,31.455151 3.2886763,32.391701 4.3281833,32.391701 C 4.3281833,32.391701 43.447745,32.391701 43.447745,32.391701 C 44.570223,32.367686 45.29864,31.3711 44.880695,30.230429 L 40.151956,10.008597 C 39.966867,9.492291 39.495187,9.012007 39.005596,9 L 9.056921,9 C 8.4300044,9 8.0180309,9.306182 7.7672655,9.864512 C 7.7672655,9.864512 3.2892931,29.978281 3.2892931,29.978281 z"
- id="path6601"
- sodipodi:nodetypes="csccccccs" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 44.85227,29.713128 C 44.916294,30.963102 44.435003,32.028968 43.519731,32.056878 C 43.519731,32.056878 5.1004819,32.056877 5.1004819,32.056878 C 3.8010855,32.056878 3.2180205,31.731931 3,31.188822 C 3.0924845,32.133154 3.8323278,32.838128 5.1004819,32.838128 C 5.1004819,32.838127 43.519731,32.838128 43.519731,32.838128 C 44.604221,32.805057 45.286355,31.414104 44.882555,29.843337 L 44.85227,29.713128 z"
- id="path6603"
- sodipodi:nodetypes="cccccccc" />
- <path
- style="color:#000000;fill:url(#linearGradient6628);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 10.981036,11.962093 L 16.007055,11.962093 L 14.592842,29.183918 L 8.1526087,29.183918 L 10.981036,11.962093 z"
- id="rect6619"
- sodipodi:nodetypes="ccccc" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path6624"
- d="M 36.397035,11.962093 L 31.371016,11.962093 L 32.785229,29.183918 L 39.225462,29.183918 L 36.397035,11.962093 z"
- style="color:#000000;fill:url(#linearGradient6626);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="color:#000000;fill:url(#linearGradient6635);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 21,12.02602 L 26.026019,12.02602 L 26.963519,29 L 20.0625,29 L 21,12.02602 z"
- id="rect6630"
- sodipodi:nodetypes="ccccc" />
- <g
- id="g7685"
- transform="translate(-1,-2)">
- <rect
- transform="matrix(1.0873786,0,0,1.0873786,-2.1462379,-2.6541262)"
- ry="1.75"
- rx="1.75"
- y="28.625"
- x="18.125"
- height="3.5"
- width="12.875"
- id="rect7619"
- style="opacity:0.36470588;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter7681);enable-background:accumulate" />
- <path
- sodipodi:nodetypes="cccccccc"
- id="path7612"
- d="M 28.0625,23 L 20.5,23.09375 L 20.125,23.71875 L 18.875,30.9375 L 18.90625,31 L 30.0625,31 L 28.65625,24.75 L 28.0625,23 z"
- style="opacity:1;color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path6637"
- d="M 18.915106,30.985244 L 30.052038,30.985244 L 28.637825,24.930641 L 20.152543,25.01903 L 18.915106,30.985244 z"
- style="opacity:1;color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path7608"
- d="M 20.513864,23.088388 L 20.071737,25.024391 L 28.624881,25.042697 L 28.0633,22.986098 L 20.513864,23.088388 z"
- style="opacity:1;color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="cccccccc"
- id="path7610"
- d="M 20.461903,23.11868 L 20.135768,23.716759 L 18.870912,30.941049 L 19.939155,26.005165 L 28.895407,26.010527 L 28.687381,24.99092 L 20.178432,24.967253 L 20.461903,23.11868 z"
- style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- </g>
- <g
- id="g7692"
- transform="matrix(0.9642857,0,0,0.9642857,-10.391072,-11.813167)">
- <rect
- style="opacity:0.36470588;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter7681);enable-background:accumulate"
- id="rect7694"
- width="12.875"
- height="3.5"
- x="18.125"
- y="28.625"
- rx="1.75"
- ry="1.75"
- transform="matrix(1.0873786,0,0,1.0873786,-2.1462379,-2.6541262)" />
- <path
- style="opacity:1;color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:1.03703701px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 28.0625,23.1875 L 20.5,23.09375 L 20.125,23.71875 L 18.875,30.9375 L 18.90625,31 L 30.0625,31 L 28.65625,24.75 L 28.0625,23.1875 z"
- id="path7696"
- sodipodi:nodetypes="cccccccc" />
- <path
- style="opacity:1;color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 18.915106,30.985244 L 30.052038,30.985244 L 28.637825,24.930641 L 20.152543,25.01903 L 18.915106,30.985244 z"
- id="path7698"
- sodipodi:nodetypes="ccccc" />
- <path
- style="opacity:1;color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 20.513864,23.088388 L 20.071737,25.024391 L 28.624881,25.042697 L 28.0633,23.173598 L 20.513864,23.088388 z"
- id="path7700"
- sodipodi:nodetypes="ccccc" />
- <path
- style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 20.461903,23.11868 L 20.135768,23.716759 L 18.870912,30.941049 L 19.939155,26.005165 L 28.895407,26.010527 L 28.687381,24.99092 L 20.178432,24.967253 L 20.461903,23.11868 z"
- id="path7702"
- sodipodi:nodetypes="cccccccc" />
- </g>
- <g
- transform="translate(11.25,-4.9375)"
- id="g7704">
- <rect
- transform="matrix(1.0873786,0,0,1.0873786,-2.1462379,-2.6541262)"
- ry="1.75"
- rx="1.75"
- y="28.625"
- x="18.125"
- height="3.5"
- width="12.875"
- id="rect7706"
- style="opacity:0.36470588;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter7681);enable-background:accumulate" />
- <path
- sodipodi:nodetypes="cccccccc"
- id="path7708"
- d="M 28.0625,23 L 20.5,23.09375 L 20.125,23.71875 L 18.875,30.9375 L 18.90625,31 L 30.0625,31 L 28.65625,24.75 L 28.0625,23 z"
- style="opacity:1;color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path7710"
- d="M 18.915106,30.985244 L 30.052038,30.985244 L 28.637825,24.930641 L 20.152543,25.01903 L 18.915106,30.985244 z"
- style="opacity:1;color:#000000;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path7712"
- d="M 20.513864,23.088388 L 20.071737,25.024391 L 28.624881,25.042697 L 28.0633,22.986098 L 20.513864,23.088388 z"
- style="opacity:1;color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="cccccccc"
- id="path7714"
- d="M 20.461903,23.11868 L 20.135768,23.716759 L 18.870912,30.941049 L 19.939155,26.005165 L 28.895407,26.010527 L 28.687381,24.99092 L 20.178432,24.967253 L 20.461903,23.11868 z"
- style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_sound.svg b/navit/icons/gui_sound.svg
deleted file mode 100644
index 16fb4a871..000000000
--- a/navit/icons/gui_sound.svg
+++ /dev/null
@@ -1,798 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- version="1.0"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/status"
- sodipodi:docname="audio-volume-high.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient21662">
- <stop
- id="stop21664"
- offset="0"
- style="stop-color:#3465a4;stop-opacity:0;" />
- <stop
- style="stop-color:#3465a4;stop-opacity:0;"
- offset="0.81927711"
- id="stop21666" />
- <stop
- id="stop21668"
- offset="1"
- style="stop-color:#3465a4;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21644">
- <stop
- id="stop21646"
- offset="0"
- style="stop-color:#3465a4;stop-opacity:0;" />
- <stop
- style="stop-color:#3465a4;stop-opacity:0;"
- offset="0.73493975"
- id="stop21648" />
- <stop
- id="stop21650"
- offset="1"
- style="stop-color:#3465a4;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21622">
- <stop
- style="stop-color:#3465a4;stop-opacity:0;"
- offset="0"
- id="stop21624" />
- <stop
- id="stop21630"
- offset="0.85542166"
- style="stop-color:#3465a4;stop-opacity:0;" />
- <stop
- style="stop-color:#3465a4;stop-opacity:1"
- offset="1"
- id="stop21626" />
- </linearGradient>
- <linearGradient
- id="linearGradient21608">
- <stop
- style="stop-color:#888a85;stop-opacity:1"
- offset="0"
- id="stop21610" />
- <stop
- style="stop-color:#2e3436;stop-opacity:1"
- offset="1"
- id="stop21612" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient21598">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop21600" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop21602" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient21582">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop21584" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop21586" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient21572">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop21574" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop21576" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient17123">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop17125" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop17127" />
- </linearGradient>
- <linearGradient
- id="linearGradient15341">
- <stop
- style="stop-color:#888a85;stop-opacity:1"
- offset="0"
- id="stop15343" />
- <stop
- style="stop-color:#555753;stop-opacity:1"
- offset="1"
- id="stop15345" />
- </linearGradient>
- <linearGradient
- id="linearGradient13551">
- <stop
- id="stop13553"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1" />
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0.25301206"
- id="stop13555" />
- <stop
- id="stop13557"
- offset="1"
- style="stop-color:#888a85;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient13535">
- <stop
- style="stop-color:#babdb6;stop-opacity:1"
- offset="0"
- id="stop13537" />
- <stop
- style="stop-color:#2e3436;stop-opacity:1"
- offset="1"
- id="stop13539" />
- </linearGradient>
- <linearGradient
- id="linearGradient10872">
- <stop
- id="stop10874"
- offset="0"
- style="stop-color:#888a85;stop-opacity:1" />
- <stop
- style="stop-color:#9e9e92;stop-opacity:1;"
- offset="0.25301206"
- id="stop10876" />
- <stop
- id="stop10878"
- offset="1"
- style="stop-color:#555753;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient9086">
- <stop
- id="stop9088"
- offset="0"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- id="stop9090"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient7280">
- <stop
- style="stop-color:#babdb6;stop-opacity:1"
- offset="0"
- id="stop7282" />
- <stop
- style="stop-color:#2e3436;stop-opacity:1"
- offset="1"
- id="stop7284" />
- </linearGradient>
- <linearGradient
- id="linearGradient6387">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop6389" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop6391" />
- </linearGradient>
- <linearGradient
- id="linearGradient6379">
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="0"
- id="stop6381" />
- <stop
- id="stop21606"
- offset="0.5"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop6383" />
- </linearGradient>
- <linearGradient
- id="linearGradient6371">
- <stop
- style="stop-color:#888a85;stop-opacity:1"
- offset="0"
- id="stop6373" />
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1;"
- offset="1"
- id="stop6375" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3698">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop3700" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop3702" />
- </linearGradient>
- <linearGradient
- id="linearGradient3688">
- <stop
- style="stop-color:#babdb6;stop-opacity:1"
- offset="0"
- id="stop3690" />
- <stop
- style="stop-color:#2e3436;stop-opacity:1"
- offset="1"
- id="stop3692" />
- </linearGradient>
- <linearGradient
- id="linearGradient2793">
- <stop
- style="stop-color:#babdb6;stop-opacity:1;"
- offset="0"
- id="stop2795" />
- <stop
- id="stop2801"
- offset="0.25301206"
- style="stop-color:#eeeeec;stop-opacity:1;" />
- <stop
- style="stop-color:#555753;stop-opacity:1"
- offset="1"
- id="stop2797" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2793"
- id="linearGradient2799"
- x1="7.5625"
- y1="16.499838"
- x2="7.5625"
- y2="29.625288"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3688"
- id="linearGradient3694"
- x1="4.5961943"
- y1="14.456622"
- x2="4.5961943"
- y2="30.313524"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6371"
- id="linearGradient6377"
- x1="14.241117"
- y1="26.996773"
- x2="15.125"
- y2="20.976084"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6379"
- id="linearGradient6385"
- x1="20.226221"
- y1="20.33363"
- x2="11.4375"
- y2="21.75"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6387"
- id="linearGradient6393"
- x1="17.25"
- y1="18.81151"
- x2="16.1875"
- y2="32.629498"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-28,0)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7280"
- id="linearGradient7286"
- x1="11.875"
- y1="20.375"
- x2="13.125"
- y2="34.13559"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient9086"
- id="radialGradient8199"
- cx="7.1396246"
- cy="22.5"
- fx="7.1396246"
- fy="22.5"
- r="6"
- gradientTransform="matrix(1.914836,-0.506192,0.654838,2.477012,-48.62381,-29.61876)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10872"
- id="linearGradient10870"
- x1="3.8890872"
- y1="18.937069"
- x2="3.8890872"
- y2="25.947107"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient13535"
- id="linearGradient13541"
- x1="21.875"
- y1="9.6335878"
- x2="20.5"
- y2="41.744865"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient13551"
- id="linearGradient13549"
- x1="20.125"
- y1="8.875"
- x2="20.125"
- y2="33.8829"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient15341"
- id="radialGradient15347"
- cx="22.624176"
- cy="20.880224"
- fx="22.624176"
- fy="20.880224"
- r="3.3177083"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient17123"
- id="radialGradient17129"
- cx="11.402097"
- cy="36.863068"
- fx="11.402097"
- fy="36.863068"
- r="10.69499"
- gradientTransform="matrix(1,0,0,0.330579,0,24.67693)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21572"
- id="radialGradient21578"
- cx="7.001297"
- cy="22.470087"
- fx="7.001297"
- fy="22.470087"
- r="6.4940691"
- gradientTransform="matrix(1.433087,-0.596698,0.798238,1.917124,-20.96864,-16.43019)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21598"
- id="linearGradient21604"
- x1="12.25"
- y1="19.75"
- x2="10.875"
- y2="33.125"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21608"
- id="linearGradient21614"
- x1="23.272787"
- y1="18.525478"
- x2="23.272787"
- y2="22.811184"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21622"
- id="radialGradient21684"
- gradientUnits="userSpaceOnUse"
- cx="20.84375"
- cy="21.84375"
- fx="20.84375"
- fy="21.84375"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21662"
- id="radialGradient21686"
- gradientUnits="userSpaceOnUse"
- cx="20.84375"
- cy="21.84375"
- fx="20.84375"
- fy="21.84375"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21644"
- id="radialGradient21688"
- gradientUnits="userSpaceOnUse"
- cx="20.84375"
- cy="21.84375"
- fx="20.84375"
- fy="21.84375"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21622"
- id="radialGradient26140"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(8.054163,0,0,8.054163,-110.8381,-158.8113)"
- cx="20.532286"
- cy="22.513134"
- fx="20.532286"
- fy="22.513134"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21644"
- id="radialGradient28811"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.494347,0,0,3.494347,-19.16478,-56.13942)"
- cx="20.512293"
- cy="22.506662"
- fx="20.512293"
- fy="22.506662"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21662"
- id="radialGradient28813"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.531533,0,0,5.531533,-56.05226,-101.9897)"
- cx="20.534391"
- cy="22.506662"
- fx="20.534391"
- fy="22.506662"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3698"
- id="radialGradient2001"
- cx="6.1016178"
- cy="20.352701"
- fx="6.1016178"
- fy="20.352701"
- r="2.5000024"
- gradientTransform="matrix(0.774994,6.9459,-1.923675,0.21464,39.98579,-31.37473)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21582"
- id="linearGradient2009"
- x1="21.875"
- y1="26.625"
- x2="18.187626"
- y2="26"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="18.527167"
- inkscape:cy="21.280884"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="48px"
- height="48px"
- inkscape:showpageshadow="false"
- borderlayer="true"
- showgrid="false"
- gridspacingx="0.5px"
- gridspacingy="0.5px"
- gridempspacing="2"
- inkscape:window-width="1051"
- inkscape:window-height="727"
- inkscape:window-x="153"
- inkscape:window-y="198"
- inkscape:guide-points="false"
- inkscape:grid-points="true"
- showguides="false"
- inkscape:guide-bbox="true"
- showborder="false"
- inkscape:grid-bbox="false">
- <sodipodi:guide
- orientation="vertical"
- position="20.5"
- id="guide21670" />
- <sodipodi:guide
- orientation="horizontal"
- position="25.5"
- id="guide21672" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Lapo Calamandrei</dc:title>
- </cc:Agent>
- </dc:creator>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:title>Audio Volume High</dc:title>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="constr"
- style="display:none">
- <path
- style="opacity:0.83011588;fill:url(#radialGradient8199);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M -8.21875,10.5 L -20.21875,22.5 L -8.21875,34.5 L -8.21875,10.5 z "
- id="path7288"
- sodipodi:nodetypes="cccc" />
- <path
- style="opacity:0.76833975;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6393);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M -7,10.5 L -19,22.5 L -7,34.5 L -7,10.5 z "
- id="path2791"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:type="inkscape:offset"
- inkscape:radius="0.50000006"
- inkscape:original="M 19.5 9.5 C 18 15 12 14 7.5 22.5 C 12 31 18 30 19.5 35.5 L 19.5 9.5 z "
- style="opacity:0.63320462;fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- id="path21580"
- d="M 19.375,9 C 19.200644,9.0530225 19.06894,9.1967002 19.03125,9.375 C 18.327802,11.954311 16.604417,12.961638 14.34375,14.46875 C 12.083083,15.975862 9.3592888,17.942871 7.0625,22.28125 C 6.9953198,22.419346 6.9953198,22.580654 7.0625,22.71875 C 9.3592888,27.057129 12.083083,29.024138 14.34375,30.53125 C 16.604417,32.038362 18.327802,33.045689 19.03125,35.625 C 19.110592,35.845992 19.333006,35.982016 19.565879,35.951968 C 19.798752,35.92192 19.979353,35.733894 20,35.5 L 20,9.5 C 20.005,9.3425939 19.935556,9.1920293 19.812581,9.0936489 C 19.689605,8.9952685 19.527469,8.9605689 19.375,9 z "
- transform="translate(-42,0)" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M -47.5,22.5 L -20,-8 L -20,56 L -47.5,22.5 z "
- id="path21676" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:url(#radialGradient21684);fill-opacity:1;stroke:#204a87;stroke-width:0.12515022;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="path21678"
- sodipodi:cx="20.84375"
- sodipodi:cy="21.84375"
- sodipodi:rx="2.84375"
- sodipodi:ry="2.84375"
- d="M 23.6875 21.84375 A 2.84375 2.84375 0 1 1 18,21.84375 A 2.84375 2.84375 0 1 1 23.6875 21.84375 z"
- transform="matrix(7.990397,0,0,7.990397,-220.7725,-152.0403)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:url(#radialGradient21686);fill-opacity:1;stroke:#204a87;stroke-width:0.18086948;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="path21680"
- sodipodi:cx="20.84375"
- sodipodi:cy="21.84375"
- sodipodi:rx="2.84375"
- sodipodi:ry="2.84375"
- d="M 23.6875 21.84375 A 2.84375 2.84375 0 1 1 18,21.84375 A 2.84375 2.84375 0 1 1 23.6875 21.84375 z"
- transform="matrix(5.528848,0,0,5.528848,-169.4646,-98.27085)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:url(#radialGradient21688);fill-opacity:1;stroke:#204a87;stroke-width:0.29248634;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="path21682"
- sodipodi:cx="20.84375"
- sodipodi:cy="21.84375"
- sodipodi:rx="2.84375"
- sodipodi:ry="2.84375"
- d="M 23.6875 21.84375 A 2.84375 2.84375 0 1 1 18,21.84375 A 2.84375 2.84375 0 1 1 23.6875 21.84375 z"
- transform="matrix(3.418962,0,0,3.418962,-125.4867,-52.18304)" />
- </g>
- <g
- inkscape:label="Livello 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="display:inline">
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:url(#radialGradient15347);fill-opacity:1;stroke:url(#linearGradient21614);stroke-width:0.94791663;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path13559"
- sodipodi:cx="20.84375"
- sodipodi:cy="21.84375"
- sodipodi:rx="2.84375"
- sodipodi:ry="2.84375"
- d="M 23.6875 21.84375 A 2.84375 2.84375 0 1 1 18,21.84375 A 2.84375 2.84375 0 1 1 23.6875 21.84375 z"
- transform="matrix(1.054945,0,0,1.054945,-1.48901,-0.543956)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient17129);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path16236"
- sodipodi:cx="11.402097"
- sodipodi:cy="36.863068"
- sodipodi:rx="10.69499"
- sodipodi:ry="3.5355339"
- d="M 22.097087 36.863068 A 10.69499 3.5355339 0 1 1 0.70710659,36.863068 A 10.69499 3.5355339 0 1 1 22.097087 36.863068 z"
- transform="matrix(1.45582,0,0,2.078338,-1.697314,-43.43834)" />
- <path
- style="fill:url(#linearGradient6377);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7286);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 19.5,9.5 C 18,15 12,14 7.5,22.5 C 12,31 18,30 19.5,35.5 L 19.5,9.5 z "
- id="path1887"
- sodipodi:nodetypes="cccc" />
- <rect
- style="opacity:1;fill:url(#linearGradient10870);fill-opacity:1;stroke:#555753;stroke-width:0.99999893;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="rect1898"
- width="6.3333392"
- height="8.0000706"
- x="2.4999988"
- y="18.499939"
- rx="2.375"
- ry="2.375" />
- <path
- sodipodi:type="inkscape:offset"
- inkscape:radius="0.50000006"
- inkscape:original="M 19.5 9.5 C 18 15 12 14 7.5 22.5 C 12 31 18 30 19.5 35.5 L 19.5 9.5 z "
- style="opacity:0.50193045;fill:url(#radialGradient21578);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- id="path20685"
- d="M 19.375,9 C 19.200644,9.0530225 19.06894,9.1967002 19.03125,9.375 C 18.327802,11.954311 16.604417,12.961638 14.34375,14.46875 C 12.083083,15.975862 9.3592888,17.942871 7.0625,22.28125 C 6.9953198,22.419346 6.9953198,22.580654 7.0625,22.71875 C 9.3592888,27.057129 12.083083,29.024138 14.34375,30.53125 C 16.604417,32.038362 18.327802,33.045689 19.03125,35.625 C 19.110592,35.845992 19.333006,35.982016 19.565879,35.951968 C 19.798752,35.92192 19.979353,35.733894 20,35.5 L 20,9.5 C 20.005,9.3425939 19.935556,9.1920293 19.812581,9.0936489 C 19.689605,8.9952685 19.527469,8.9605689 19.375,9 z " />
- <path
- style="opacity:0.63320462;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient21604);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M 18.5625,12.96875 C 17.576953,14.016322 16.385251,14.836916 15.15625,15.65625 C 13.018871,17.081169 10.717564,18.770623 8.625,22.5 C 10.717564,26.229377 13.018871,27.918831 15.15625,29.34375 C 16.385251,30.163084 17.576953,30.983678 18.5625,32.03125 L 20.5,34 L 20.5,11 L 18.5625,12.96875 z "
- id="path21595"
- sodipodi:nodetypes="cscscccc" />
- <path
- style="opacity:0.7335907;fill:url(#linearGradient6385);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M 21,14.375 C 17.125,15.769678 12.8125,18.570921 9,22.5 C 13.049341,21.373913 17.236937,20.539527 21,20.75 L 21,14.375 z "
- id="path5476"
- sodipodi:nodetypes="cccc" />
- <path
- style="opacity:0.36679538;fill:url(#linearGradient2009);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M 19.375,9 C 19.200644,9.0530225 19.06894,9.1967002 19.03125,9.375 C 18.455919,11.48455 17.175782,12.547561 15.5,13.6875 L 15.5,31.3125 C 17.175782,32.452439 18.455919,33.51545 19.03125,35.625 C 19.110592,35.845992 19.329627,35.967548 19.5625,35.9375 C 19.795372,35.907451 19.979353,35.733894 20,35.5 L 20,9.5 C 20.005,9.3425939 19.935475,9.1921304 19.8125,9.09375 C 19.689525,8.9953696 19.527469,8.9605689 19.375,9 z "
- id="path19794" />
- <rect
- style="opacity:1;fill:url(#linearGradient2799);fill-opacity:1;stroke:url(#linearGradient3694);stroke-width:0.99999881;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="rect1881"
- width="6"
- height="15.999965"
- x="4.4999995"
- y="14.499997"
- rx="1"
- ry="1" />
- <rect
- style="opacity:1;fill:url(#linearGradient13549);fill-opacity:1;stroke:url(#linearGradient13541);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="rect1889"
- width="2"
- height="29.999969"
- x="19.5"
- y="7.500001"
- rx="1"
- ry="1" />
- <rect
- style="opacity:0.60617761;fill:none;fill-opacity:1.0;stroke:url(#radialGradient2001);stroke-width:0.99999917;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="rect1902"
- width="4.0000057"
- height="14.000035"
- x="5.4999981"
- y="15.499966"
- rx="0"
- ry="0" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:white;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path15349"
- sodipodi:cx="20.5"
- sodipodi:cy="13.5"
- sodipodi:rx="1"
- sodipodi:ry="1"
- d="M 21.5 13.5 A 1 1 0 1 1 19.5,13.5 A 1 1 0 1 1 21.5 13.5 z" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path18901"
- sodipodi:cx="3.75"
- sodipodi:cy="20.75"
- sodipodi:rx="0.75"
- sodipodi:ry="0.75"
- d="M 4.5 20.75 A 0.75 0.75 0 1 1 3,20.75 A 0.75 0.75 0 1 1 4.5 20.75 z"
- transform="translate(-0.46875,-0.34375)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:white;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="path2001"
- sodipodi:cx="20.5"
- sodipodi:cy="13.5"
- sodipodi:rx="1"
- sodipodi:ry="1"
- d="M 21.5 13.5 A 1 1 0 1 1 19.5,13.5 A 1 1 0 1 1 21.5 13.5 z"
- transform="translate(-15,6.3125)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="waves">
- <g
- style="display:inline"
- id="g26136"
- transform="translate(-34,0)">
- <path
- id="path21616"
- d="M 69.84375,5.5 L 54.5,22.5 L 69.03125,40.1875 C 74.190803,36.02097 77.499999,29.643289 77.5,22.5 C 77.5,15.734684 74.540259,9.6637676 69.84375,5.5 z "
- style="opacity:1;fill:url(#radialGradient26140);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" />
- <path
- sodipodi:nodetypes="csc"
- id="path25249"
- d="M 69.03125,40.1875 C 74.190803,36.02097 77.499999,29.643289 77.5,22.5 C 77.5,15.734684 74.540259,9.6637676 69.84375,5.5"
- style="opacity:1;fill:none;fill-opacity:1;stroke:#204a87;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" />
- </g>
- <g
- style="display:inline"
- id="g27916"
- transform="translate(-37,0)">
- <path
- id="path26142"
- d="M 68.15625,10.6875 L 57.5,22.5 L 67.5625,34.78125 C 71.176369,31.899733 73.499999,27.47788 73.5,22.5 C 73.5,17.793936 71.43603,13.569699 68.15625,10.6875 z "
- style="opacity:1;fill:url(#radialGradient28813);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" />
- <path
- sodipodi:nodetypes="csc"
- id="path21632"
- d="M 67.5625,34.78125 C 71.176369,31.899733 73.499999,27.47788 73.5,22.5 C 73.5,17.793936 71.43603,13.569699 68.15625,10.6875"
- style="opacity:1;fill:none;fill-opacity:1;stroke:#204a87;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" />
- </g>
- <g
- style="display:inline"
- id="g28807"
- transform="translate(-32,0)">
- <path
- id="path21640"
- d="M 59.125,15.15625 L 52.5,22.5 L 58.78125,30.15625 C 61.050824,28.375887 62.5,25.606103 62.5,22.5 C 62.5,19.560794 61.188424,16.939552 59.125,15.15625 z "
- style="opacity:1;fill:url(#radialGradient28811);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" />
- <path
- sodipodi:nodetypes="csc"
- id="path27920"
- d="M 58.78125,30.15625 C 61.050824,28.375887 62.5,25.606103 62.5,22.5 C 62.5,19.560794 61.188424,16.939552 59.125,15.15625"
- style="opacity:1;fill:none;fill-opacity:1;stroke:#204a87;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_sound_32.xpm b/navit/icons/gui_sound_32.xpm
deleted file mode 100644
index 2f8de7248..000000000
--- a/navit/icons/gui_sound_32.xpm
+++ /dev/null
@@ -1,204 +0,0 @@
-/* XPM */
-static char *gui_sound______[] = {
-/* columns rows colors chars-per-pixel */
-"32 32 166 2",
-" c black",
-". c #030303",
-"X c #070707",
-"o c #03070C",
-"O c #050C15",
-"+ c #050C16",
-"@ c #141413",
-"# c #141514",
-"$ c #161615",
-"% c #141616",
-"& c #161716",
-"* c #171716",
-"= c #161818",
-"- c #171919",
-"; c #181818",
-": c #191919",
-"> c #191A19",
-", c #191B1B",
-"< c #1C1C1B",
-"1 c #1C1D1C",
-"2 c #1F201F",
-"3 c #222321",
-"4 c #232424",
-"5 c #232525",
-"6 c #242626",
-"7 c #252727",
-"8 c #272726",
-"9 c #282827",
-"0 c #272B2C",
-"q c #292A29",
-"w c #2D2E2D",
-"e c #2A2F30",
-"r c #2B2F30",
-"t c #303231",
-"y c #333533",
-"u c #343635",
-"i c #343636",
-"p c #373737",
-"a c #383A38",
-"s c #383A39",
-"d c #3B3C3A",
-"f c #393D3C",
-"g c #3C3E3D",
-"h c #3F3F3F",
-"j c #193A69",
-"k c #1B3F73",
-"l c #404040",
-"z c #404241",
-"x c #454544",
-"c c #444744",
-"v c #464645",
-"b c #454948",
-"n c #4A4B4A",
-"m c #4A4E4D",
-"M c #4E504F",
-"N c #50514E",
-"B c #4C5050",
-"V c #505452",
-"C c #555957",
-"Z c #575A56",
-"A c #595B56",
-"S c #585B5A",
-"D c #5C5D59",
-"F c #5D5E5B",
-"G c #5B5F5D",
-"H c #5C5C5C",
-"J c #5F605B",
-"K c #636561",
-"L c #606462",
-"P c #656564",
-"I c #656764",
-"U c #656866",
-"Y c #686A67",
-"T c #676A69",
-"R c #6B6D68",
-"E c #6E6F6D",
-"W c #6E6E6E",
-"Q c #737571",
-"! c #747874",
-"~ c #767A78",
-"^ c #7A7B7A",
-"/ c #787C7A",
-"( c #7B7E7A",
-") c #7D7E7D",
-"_ c #7E7F7C",
-"` c #7D807B",
-"' c #7F817A",
-"] c #7F807E",
-"[ c #204A87",
-"{ c #838683",
-"} c #868686",
-"| c #898D89",
-" . c #8C8E8B",
-".. c #8F938F",
-"X. c #91938A",
-"o. c #90918F",
-"O. c #949793",
-"+. c #959793",
-"@. c #959695",
-"#. c #969795",
-"$. c #959894",
-"%. c #9C9C9C",
-"&. c #9D9F9C",
-"*. c #9DA099",
-"=. c #A1A1A0",
-"-. c #A2A5A1",
-";. c #A5A8A5",
-":. c #A9ACA8",
-">. c #ADAEAB",
-",. c #AEB0AD",
-"<. c #B0B2AE",
-"1. c #B0B0B0",
-"2. c #B1B3B0",
-"3. c #B4B5B5",
-"4. c #B7B8B5",
-"5. c #BABDB6",
-"6. c #BBBEB7",
-"7. c #B9B9B8",
-"8. c #B9BAB9",
-"9. c #B9BABA",
-"0. c #BABABA",
-"q. c #BCBCBC",
-"w. c #BDC0B9",
-"e. c #BEC1BC",
-"r. c #BFC0BE",
-"t. c #BFC1BE",
-"y. c #C1C5BE",
-"u. c #C2C4BF",
-"i. c #C4C5C2",
-"p. c #C5C5C4",
-"a. c #C6C6C6",
-"s. c #C6C7C6",
-"d. c #C8C9C7",
-"f. c #CBCFC7",
-"g. c #CACBCA",
-"h. c #CDCFCD",
-"j. c #D0D1CF",
-"k. c #D1D3CE",
-"l. c #D1D4CD",
-"z. c #D1D2D1",
-"x. c #D2D2D1",
-"c. c #D3D5D1",
-"v. c #D5D6D5",
-"b. c #D9DAD8",
-"n. c #D9DAD9",
-"m. c #DCDCDA",
-"M. c #DDDEDD",
-"N. c #DFE0DD",
-"B. c #DFE1DE",
-"V. c #E0E1DF",
-"C. c #E1E2E0",
-"Z. c #E1E3E0",
-"A. c #E4E5E3",
-"S. c #E5E6E3",
-"D. c #E5E6E4",
-"F. c #E5E6E5",
-"G. c #E6E7E5",
-"H. c #E7E8E7",
-"J. c #E9E9E7",
-"K. c #EAEBEA",
-"L. c #ECEDEA",
-"P. c #EDEDEB",
-"I. c #EEEFED",
-"U. c #F0F0EF",
-"Y. c #FAFBFA",
-"T. c None",
-/* pixels */
-"T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.[ T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.T.y.w.T.T.T.T.T.T.T.T.T.T.[ T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.' f.w.T.T.T.T.T.T.T.T.T.T.T.[ T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.I l.6.T.T.T.T.T.T.[ T.T.T.T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.n y.K.i.T.T.T.T.T.T.T.T.T.T.T.T.[ T.T.T.T.",
-"T.T.T.5.5.5.5.T.T.T.I 0.D I.q.T.T.T.T.T.T.T.[ T.T.T.T.T.T.T.T.T.",
-"T.T.T.C.A.S.V.T.N %.=.d ) M.<.T.T.T.[ T.T.T.T.[ T.T.T.T.[ T.T.T.",
-"T.T.T.A.5.5.V.Y 0.E } 7.O.n.:.T.T.T.T.[ T.T.T.[ T.T.T.T.[ T.T.T.",
-"T.T.Q U.c.k.F.2.v ^ q.a.#.x.-.T.T.T.T.[ T.T.T.T.T.T.T.T.[ T.T.T.",
-"T.K *.Y.P.J.K.E v ) <.x.#.d.$.T.T.T.T.T.T.T.T.T.[ T.T.T.T.T.T.T.",
-"T.J X.H.m.m.F.a 8 w q 4 x y...U T.T.T.T.[ T.T.T.[ T.T.T.T.T.T.T.",
-"T.D ' V.i.i.M.y $ : < 1 z 3.| m T.T.T.T.[ T.T.T.[ T.T.T.T.T.T.T.",
-"T.A R n.>.>.v.B $ $ : 1 g ,.~ T.T.T.T.T.T.T.T.T.T.T.T.T.[ T.T.T.",
-"T.T.Z x.+.+.h.T 8 # - : a ;./ T.T.T.T.[ T.T.T.T.T.T.T.T.[ T.T.T.",
-"T.T.T.g.) ' a.i H i @ $ i *.L T.T.T.[ T.T.T.[ T.T.T.T.[ T.T.T.",
-"T. $ 0.a.a.3.- 8 l v = t #.J + k T.T.T.T.[ T.T.T.T.[ T.T.T.",
-" 0 r r 0 . : 4 g t .S + o T.T.[ T.T.T.T.T.T.T.T.T.",
-" X , a { B T.T.T.T.T.T.T.[ T.T.T.T.",
-" . 5 ( m j [ T.T.T.T.T.T.T.T.T.T.",
-" 7 ! b T.T.T.T.T.T.[ T.T.T.T.T.",
-"T. $ S f T.T.T.T.T.T.[ T.T.T.T.T.T.",
-"T.T. - . T.T.T.T.T.T.T.[ T.T.T.T.T.T.T.",
-"T.T.T.T.T. T.T.T.T.T.T.T.T.T.[ T.T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.",
-"T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T.T."
-};
diff --git a/navit/icons/gui_sound_off.svg b/navit/icons/gui_sound_off.svg
deleted file mode 100644
index d85e1f8b9..000000000
--- a/navit/icons/gui_sound_off.svg
+++ /dev/null
@@ -1,771 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/status"
- sodipodi:docname="gui_sound_off.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:persp3d-origin="24 : 16 : 1"
- id="perspective131" />
- <linearGradient
- id="linearGradient21662">
- <stop
- id="stop21664"
- offset="0"
- style="stop-color:#3465a4;stop-opacity:0;" />
- <stop
- style="stop-color:#3465a4;stop-opacity:0;"
- offset="0.81927711"
- id="stop21666" />
- <stop
- id="stop21668"
- offset="1"
- style="stop-color:#3465a4;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21644">
- <stop
- id="stop21646"
- offset="0"
- style="stop-color:#3465a4;stop-opacity:0;" />
- <stop
- style="stop-color:#3465a4;stop-opacity:0;"
- offset="0.73493975"
- id="stop21648" />
- <stop
- id="stop21650"
- offset="1"
- style="stop-color:#3465a4;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient21622">
- <stop
- style="stop-color:#3465a4;stop-opacity:0;"
- offset="0"
- id="stop21624" />
- <stop
- id="stop21630"
- offset="0.85542166"
- style="stop-color:#3465a4;stop-opacity:0;" />
- <stop
- style="stop-color:#3465a4;stop-opacity:1"
- offset="1"
- id="stop21626" />
- </linearGradient>
- <linearGradient
- id="linearGradient21608">
- <stop
- style="stop-color:#888a85;stop-opacity:1"
- offset="0"
- id="stop21610" />
- <stop
- style="stop-color:#2e3436;stop-opacity:1"
- offset="1"
- id="stop21612" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient21598">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop21600" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop21602" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient21582">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop21584" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop21586" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient21572">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop21574" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop21576" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient17123">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop17125" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop17127" />
- </linearGradient>
- <linearGradient
- id="linearGradient15341">
- <stop
- style="stop-color:#888a85;stop-opacity:1"
- offset="0"
- id="stop15343" />
- <stop
- style="stop-color:#555753;stop-opacity:1"
- offset="1"
- id="stop15345" />
- </linearGradient>
- <linearGradient
- id="linearGradient13551">
- <stop
- id="stop13553"
- offset="0"
- style="stop-color:#d3d7cf;stop-opacity:1" />
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0.25301206"
- id="stop13555" />
- <stop
- id="stop13557"
- offset="1"
- style="stop-color:#888a85;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient13535">
- <stop
- style="stop-color:#babdb6;stop-opacity:1"
- offset="0"
- id="stop13537" />
- <stop
- style="stop-color:#2e3436;stop-opacity:1"
- offset="1"
- id="stop13539" />
- </linearGradient>
- <linearGradient
- id="linearGradient10872">
- <stop
- id="stop10874"
- offset="0"
- style="stop-color:#888a85;stop-opacity:1" />
- <stop
- style="stop-color:#9e9e92;stop-opacity:1;"
- offset="0.25301206"
- id="stop10876" />
- <stop
- id="stop10878"
- offset="1"
- style="stop-color:#555753;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient9086">
- <stop
- id="stop9088"
- offset="0"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- id="stop9090"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient7280">
- <stop
- style="stop-color:#babdb6;stop-opacity:1"
- offset="0"
- id="stop7282" />
- <stop
- style="stop-color:#2e3436;stop-opacity:1"
- offset="1"
- id="stop7284" />
- </linearGradient>
- <linearGradient
- id="linearGradient6387">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop6389" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop6391" />
- </linearGradient>
- <linearGradient
- id="linearGradient6379">
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="0"
- id="stop6381" />
- <stop
- id="stop21606"
- offset="0.5"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop6383" />
- </linearGradient>
- <linearGradient
- id="linearGradient6371">
- <stop
- style="stop-color:#888a85;stop-opacity:1"
- offset="0"
- id="stop6373" />
- <stop
- style="stop-color:#d3d7cf;stop-opacity:1;"
- offset="1"
- id="stop6375" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3698">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop3700" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop3702" />
- </linearGradient>
- <linearGradient
- id="linearGradient3688">
- <stop
- style="stop-color:#babdb6;stop-opacity:1"
- offset="0"
- id="stop3690" />
- <stop
- style="stop-color:#2e3436;stop-opacity:1"
- offset="1"
- id="stop3692" />
- </linearGradient>
- <linearGradient
- id="linearGradient2793">
- <stop
- style="stop-color:#babdb6;stop-opacity:1;"
- offset="0"
- id="stop2795" />
- <stop
- id="stop2801"
- offset="0.25301206"
- style="stop-color:#eeeeec;stop-opacity:1;" />
- <stop
- style="stop-color:#555753;stop-opacity:1"
- offset="1"
- id="stop2797" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2793"
- id="linearGradient2799"
- x1="7.5625"
- y1="16.499838"
- x2="7.5625"
- y2="29.625288"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3688"
- id="linearGradient3694"
- x1="4.5961943"
- y1="14.456622"
- x2="4.5961943"
- y2="30.313524"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6371"
- id="linearGradient6377"
- x1="14.241117"
- y1="26.996773"
- x2="15.125"
- y2="20.976084"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6379"
- id="linearGradient6385"
- x1="20.226221"
- y1="20.33363"
- x2="11.4375"
- y2="21.75"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6387"
- id="linearGradient6393"
- x1="17.25"
- y1="18.81151"
- x2="16.1875"
- y2="32.629498"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-28,0)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7280"
- id="linearGradient7286"
- x1="11.875"
- y1="20.375"
- x2="13.125"
- y2="34.13559"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient9086"
- id="radialGradient8199"
- cx="7.1396246"
- cy="22.5"
- fx="7.1396246"
- fy="22.5"
- r="6"
- gradientTransform="matrix(1.914836,-0.506192,0.654838,2.477012,-48.62381,-29.61876)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient10872"
- id="linearGradient10870"
- x1="3.8890872"
- y1="18.937069"
- x2="3.8890872"
- y2="25.947107"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient13535"
- id="linearGradient13541"
- x1="21.875"
- y1="9.6335878"
- x2="20.5"
- y2="41.744865"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient13551"
- id="linearGradient13549"
- x1="20.125"
- y1="8.875"
- x2="20.125"
- y2="33.8829"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient15341"
- id="radialGradient15347"
- cx="22.624176"
- cy="20.880224"
- fx="22.624176"
- fy="20.880224"
- r="3.3177083"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient17123"
- id="radialGradient17129"
- cx="11.402097"
- cy="36.863068"
- fx="11.402097"
- fy="36.863068"
- r="10.69499"
- gradientTransform="matrix(1,0,0,0.330579,0,24.67693)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21572"
- id="radialGradient21578"
- cx="7.001297"
- cy="22.470087"
- fx="7.001297"
- fy="22.470087"
- r="6.4940691"
- gradientTransform="matrix(1.433087,-0.596698,0.798238,1.917124,-20.96864,-16.43019)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21598"
- id="linearGradient21604"
- x1="12.25"
- y1="19.75"
- x2="10.875"
- y2="33.125"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21608"
- id="linearGradient21614"
- x1="23.272787"
- y1="18.525478"
- x2="23.272787"
- y2="22.811184"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21622"
- id="radialGradient21684"
- gradientUnits="userSpaceOnUse"
- cx="20.84375"
- cy="21.84375"
- fx="20.84375"
- fy="21.84375"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21662"
- id="radialGradient21686"
- gradientUnits="userSpaceOnUse"
- cx="20.84375"
- cy="21.84375"
- fx="20.84375"
- fy="21.84375"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21644"
- id="radialGradient21688"
- gradientUnits="userSpaceOnUse"
- cx="20.84375"
- cy="21.84375"
- fx="20.84375"
- fy="21.84375"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21622"
- id="radialGradient26140"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(8.054163,0,0,8.054163,-110.8381,-158.8113)"
- cx="20.532286"
- cy="22.513134"
- fx="20.532286"
- fy="22.513134"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21644"
- id="radialGradient28811"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(3.494347,0,0,3.494347,-19.16478,-56.13942)"
- cx="20.512293"
- cy="22.506662"
- fx="20.512293"
- fy="22.506662"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21662"
- id="radialGradient28813"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(5.531533,0,0,5.531533,-56.05226,-101.9897)"
- cx="20.534391"
- cy="22.506662"
- fx="20.534391"
- fy="22.506662"
- r="2.9063251" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3698"
- id="radialGradient2001"
- cx="6.1016178"
- cy="20.352701"
- fx="6.1016178"
- fy="20.352701"
- r="2.5000024"
- gradientTransform="matrix(0.774994,6.9459,-1.923675,0.21464,39.98579,-31.37473)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient21582"
- id="linearGradient2009"
- x1="21.875"
- y1="26.625"
- x2="18.187626"
- y2="26"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="10.055556"
- inkscape:cx="28.5"
- inkscape:cy="25"
- inkscape:document-units="px"
- inkscape:current-layer="layer2"
- width="48px"
- height="48px"
- inkscape:showpageshadow="false"
- borderlayer="true"
- showgrid="false"
- inkscape:window-width="1018"
- inkscape:window-height="727"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:guide-points="false"
- inkscape:grid-points="true"
- showguides="false"
- inkscape:guide-bbox="true"
- showborder="false"
- inkscape:grid-bbox="false">
- <sodipodi:guide
- orientation="vertical"
- position="20.5"
- id="guide21670" />
- <sodipodi:guide
- orientation="horizontal"
- position="25.5"
- id="guide21672" />
- <inkscape:grid
- id="GridFromPre046Settings"
- type="xygrid"
- originx="0px"
- originy="0px"
- spacingx="0.5px"
- spacingy="0.5px"
- color="#0000ff"
- empcolor="#0000ff"
- opacity="0.2"
- empopacity="0.4"
- empspacing="2" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Lapo Calamandrei</dc:title>
- </cc:Agent>
- </dc:creator>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:title>Audio Volume High</dc:title>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="constr"
- style="display:none">
- <path
- style="opacity:0.83011588;fill:url(#radialGradient8199);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M -8.21875,10.5 L -20.21875,22.5 L -8.21875,34.5 L -8.21875,10.5 z "
- id="path7288"
- sodipodi:nodetypes="cccc" />
- <path
- style="opacity:0.76833975;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6393);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M -7,10.5 L -19,22.5 L -7,34.5 L -7,10.5 z "
- id="path2791"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:type="inkscape:offset"
- inkscape:radius="0.50000006"
- inkscape:original="M 19.5 9.5 C 18 15 12 14 7.5 22.5 C 12 31 18 30 19.5 35.5 L 19.5 9.5 z "
- style="opacity:0.63320462;fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- id="path21580"
- d="M 19.375,9 C 19.200644,9.0530225 19.06894,9.1967002 19.03125,9.375 C 18.327802,11.954311 16.604417,12.961638 14.34375,14.46875 C 12.083083,15.975862 9.3592888,17.942871 7.0625,22.28125 C 6.9953198,22.419346 6.9953198,22.580654 7.0625,22.71875 C 9.3592888,27.057129 12.083083,29.024138 14.34375,30.53125 C 16.604417,32.038362 18.327802,33.045689 19.03125,35.625 C 19.110592,35.845992 19.333006,35.982016 19.565879,35.951968 C 19.798752,35.92192 19.979353,35.733894 20,35.5 L 20,9.5 C 20.005,9.3425939 19.935556,9.1920293 19.812581,9.0936489 C 19.689605,8.9952685 19.527469,8.9605689 19.375,9 z "
- transform="translate(-42,0)" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M -47.5,22.5 L -20,-8 L -20,56 L -47.5,22.5 z "
- id="path21676" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:url(#radialGradient21684);fill-opacity:1;stroke:#204a87;stroke-width:0.12515022;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="path21678"
- sodipodi:cx="20.84375"
- sodipodi:cy="21.84375"
- sodipodi:rx="2.84375"
- sodipodi:ry="2.84375"
- d="M 23.6875 21.84375 A 2.84375 2.84375 0 1 1 18,21.84375 A 2.84375 2.84375 0 1 1 23.6875 21.84375 z"
- transform="matrix(7.990397,0,0,7.990397,-220.7725,-152.0403)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:url(#radialGradient21686);fill-opacity:1;stroke:#204a87;stroke-width:0.18086948;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="path21680"
- sodipodi:cx="20.84375"
- sodipodi:cy="21.84375"
- sodipodi:rx="2.84375"
- sodipodi:ry="2.84375"
- d="M 23.6875 21.84375 A 2.84375 2.84375 0 1 1 18,21.84375 A 2.84375 2.84375 0 1 1 23.6875 21.84375 z"
- transform="matrix(5.528848,0,0,5.528848,-169.4646,-98.27085)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:url(#radialGradient21688);fill-opacity:1;stroke:#204a87;stroke-width:0.29248634;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="path21682"
- sodipodi:cx="20.84375"
- sodipodi:cy="21.84375"
- sodipodi:rx="2.84375"
- sodipodi:ry="2.84375"
- d="M 23.6875 21.84375 A 2.84375 2.84375 0 1 1 18,21.84375 A 2.84375 2.84375 0 1 1 23.6875 21.84375 z"
- transform="matrix(3.418962,0,0,3.418962,-125.4867,-52.18304)" />
- </g>
- <g
- inkscape:label="Livello 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="display:inline">
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:url(#radialGradient15347);fill-opacity:1;stroke:url(#linearGradient21614);stroke-width:0.94791663;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path13559"
- sodipodi:cx="20.84375"
- sodipodi:cy="21.84375"
- sodipodi:rx="2.84375"
- sodipodi:ry="2.84375"
- d="M 23.6875 21.84375 A 2.84375 2.84375 0 1 1 18,21.84375 A 2.84375 2.84375 0 1 1 23.6875 21.84375 z"
- transform="matrix(1.054945,0,0,1.054945,-1.48901,-0.543956)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.2;fill:url(#radialGradient17129);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path16236"
- sodipodi:cx="11.402097"
- sodipodi:cy="36.863068"
- sodipodi:rx="10.69499"
- sodipodi:ry="3.5355339"
- d="M 22.097087 36.863068 A 10.69499 3.5355339 0 1 1 0.70710659,36.863068 A 10.69499 3.5355339 0 1 1 22.097087 36.863068 z"
- transform="matrix(1.45582,0,0,2.078338,-1.697314,-43.43834)" />
- <path
- style="fill:url(#linearGradient6377);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7286);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 19.5,9.5 C 18,15 12,14 7.5,22.5 C 12,31 18,30 19.5,35.5 L 19.5,9.5 z "
- id="path1887"
- sodipodi:nodetypes="cccc" />
- <rect
- style="opacity:1;fill:url(#linearGradient10870);fill-opacity:1;stroke:#555753;stroke-width:0.99999893;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="rect1898"
- width="6.3333392"
- height="8.0000706"
- x="2.4999988"
- y="18.499939"
- rx="2.375"
- ry="2.375" />
- <path
- sodipodi:type="inkscape:offset"
- inkscape:radius="0.50000006"
- inkscape:original="M 19.5 9.5 C 18 15 12 14 7.5 22.5 C 12 31 18 30 19.5 35.5 L 19.5 9.5 z "
- style="opacity:0.50193045;fill:url(#radialGradient21578);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- id="path20685"
- d="M 19.375,9 C 19.200644,9.0530225 19.06894,9.1967002 19.03125,9.375 C 18.327802,11.954311 16.604417,12.961638 14.34375,14.46875 C 12.083083,15.975862 9.3592888,17.942871 7.0625,22.28125 C 6.9953198,22.419346 6.9953198,22.580654 7.0625,22.71875 C 9.3592888,27.057129 12.083083,29.024138 14.34375,30.53125 C 16.604417,32.038362 18.327802,33.045689 19.03125,35.625 C 19.110592,35.845992 19.333006,35.982016 19.565879,35.951968 C 19.798752,35.92192 19.979353,35.733894 20,35.5 L 20,9.5 C 20.005,9.3425939 19.935556,9.1920293 19.812581,9.0936489 C 19.689605,8.9952685 19.527469,8.9605689 19.375,9 z " />
- <path
- style="opacity:0.63320462;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient21604);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M 18.5625,12.96875 C 17.576953,14.016322 16.385251,14.836916 15.15625,15.65625 C 13.018871,17.081169 10.717564,18.770623 8.625,22.5 C 10.717564,26.229377 13.018871,27.918831 15.15625,29.34375 C 16.385251,30.163084 17.576953,30.983678 18.5625,32.03125 L 20.5,34 L 20.5,11 L 18.5625,12.96875 z "
- id="path21595"
- sodipodi:nodetypes="cscscccc" />
- <path
- style="opacity:0.7335907;fill:url(#linearGradient6385);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M 21,14.375 C 17.125,15.769678 12.8125,18.570921 9,22.5 C 13.049341,21.373913 17.236937,20.539527 21,20.75 L 21,14.375 z "
- id="path5476"
- sodipodi:nodetypes="cccc" />
- <path
- style="opacity:0.36679538;fill:url(#linearGradient2009);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
- d="M 19.375,9 C 19.200644,9.0530225 19.06894,9.1967002 19.03125,9.375 C 18.455919,11.48455 17.175782,12.547561 15.5,13.6875 L 15.5,31.3125 C 17.175782,32.452439 18.455919,33.51545 19.03125,35.625 C 19.110592,35.845992 19.329627,35.967548 19.5625,35.9375 C 19.795372,35.907451 19.979353,35.733894 20,35.5 L 20,9.5 C 20.005,9.3425939 19.935475,9.1921304 19.8125,9.09375 C 19.689525,8.9953696 19.527469,8.9605689 19.375,9 z "
- id="path19794" />
- <rect
- style="opacity:1;fill:url(#linearGradient2799);fill-opacity:1;stroke:url(#linearGradient3694);stroke-width:0.99999881;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="rect1881"
- width="6"
- height="15.999965"
- x="4.4999995"
- y="14.499997"
- rx="1"
- ry="1" />
- <rect
- style="opacity:1;fill:url(#linearGradient13549);fill-opacity:1;stroke:url(#linearGradient13541);stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="rect1889"
- width="2"
- height="29.999969"
- x="19.5"
- y="7.500001"
- rx="1"
- ry="1" />
- <rect
- style="opacity:0.60617761;fill:none;fill-opacity:1.0;stroke:url(#radialGradient2001);stroke-width:0.99999917;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="rect1902"
- width="4.0000057"
- height="14.000035"
- x="5.4999981"
- y="15.499966"
- rx="0"
- ry="0" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:white;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path15349"
- sodipodi:cx="20.5"
- sodipodi:cy="13.5"
- sodipodi:rx="1"
- sodipodi:ry="1"
- d="M 21.5 13.5 A 1 1 0 1 1 19.5,13.5 A 1 1 0 1 1 21.5 13.5 z" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1"
- id="path18901"
- sodipodi:cx="3.75"
- sodipodi:cy="20.75"
- sodipodi:rx="0.75"
- sodipodi:ry="0.75"
- d="M 4.5 20.75 A 0.75 0.75 0 1 1 3,20.75 A 0.75 0.75 0 1 1 4.5 20.75 z"
- transform="translate(-0.46875,-0.34375)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:white;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline"
- id="path2001"
- sodipodi:cx="20.5"
- sodipodi:cy="13.5"
- sodipodi:rx="1"
- sodipodi:ry="1"
- d="M 21.5 13.5 A 1 1 0 1 1 19.5,13.5 A 1 1 0 1 1 21.5 13.5 z"
- transform="translate(-15,6.3125)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="waves" />
-</svg>
diff --git a/navit/icons/gui_sound_off_32.xpm b/navit/icons/gui_sound_off_32.xpm
deleted file mode 100644
index e352bac59..000000000
--- a/navit/icons/gui_sound_off_32.xpm
+++ /dev/null
@@ -1,198 +0,0 @@
-/* XPM */
-static char *gui_sound_off______[] = {
-/* columns rows colors chars-per-pixel */
-"32 32 160 2",
-" c black",
-". c #030303",
-"X c #070707",
-"o c #141413",
-"O c #141514",
-"+ c #161615",
-"@ c #141616",
-"# c #161716",
-"$ c #171716",
-"% c #161818",
-"& c #171919",
-"* c #181818",
-"= c #191919",
-"- c #191A19",
-"; c #191B1B",
-": c #1C1C1B",
-"> c #1C1D1C",
-", c #1F201F",
-"< c #222321",
-"1 c #232424",
-"2 c #232525",
-"3 c #242626",
-"4 c #252727",
-"5 c #272726",
-"6 c #282827",
-"7 c #272B2C",
-"8 c #292A29",
-"9 c #2D2E2D",
-"0 c #2A2F30",
-"q c #2B2F30",
-"w c #303231",
-"e c #333533",
-"r c #343635",
-"t c #343636",
-"y c #373737",
-"u c #383A38",
-"i c #383A39",
-"p c #3B3C3A",
-"a c #393D3C",
-"s c #3C3E3D",
-"d c #3F3F3F",
-"f c #404040",
-"g c #404241",
-"h c #454544",
-"j c #444744",
-"k c #464645",
-"l c #454948",
-"z c #4A4B4A",
-"x c #4A4E4D",
-"c c #4E504F",
-"v c #50514E",
-"b c #4C5050",
-"n c #505452",
-"m c #555957",
-"M c #575A56",
-"N c #595B56",
-"B c #585B5A",
-"V c #5C5D59",
-"C c #5D5E5B",
-"Z c #5B5F5D",
-"A c #5C5C5C",
-"S c #5F605B",
-"D c #636561",
-"F c #606462",
-"G c #656564",
-"H c #656764",
-"J c #656866",
-"K c #686A67",
-"L c #676A69",
-"P c #6B6D68",
-"I c #6E6F6D",
-"U c #6E6E6E",
-"Y c #737571",
-"T c #747874",
-"R c #767A78",
-"E c #7A7B7A",
-"W c #787C7A",
-"Q c #7B7E7A",
-"! c #7D7E7D",
-"~ c #7E7F7C",
-"^ c #7D807B",
-"/ c #7F817A",
-"( c #7F807E",
-") c #838683",
-"_ c #868686",
-"` c #898D89",
-"' c #8C8E8B",
-"] c #8F938F",
-"[ c #91938A",
-"{ c #90918F",
-"} c #949793",
-"| c #959793",
-" . c #959695",
-".. c #969795",
-"X. c #959894",
-"o. c #9C9C9C",
-"O. c #9D9F9C",
-"+. c #9DA099",
-"@. c #A1A1A0",
-"#. c #A2A5A1",
-"$. c #A5A8A5",
-"%. c #A9ACA8",
-"&. c #ADAEAB",
-"*. c #AEB0AD",
-"=. c #B0B2AE",
-"-. c #B0B0B0",
-";. c #B1B3B0",
-":. c #B4B5B5",
-">. c #B7B8B5",
-",. c #BABDB6",
-"<. c #BBBEB7",
-"1. c #B9B9B8",
-"2. c #B9BAB9",
-"3. c #B9BABA",
-"4. c #BABABA",
-"5. c #BCBCBC",
-"6. c #BDC0B9",
-"7. c #BEC1BC",
-"8. c #BFC0BE",
-"9. c #BFC1BE",
-"0. c #C1C5BE",
-"q. c #C2C4BF",
-"w. c #C4C5C2",
-"e. c #C5C5C4",
-"r. c #C6C6C6",
-"t. c #C6C7C6",
-"y. c #C8C9C7",
-"u. c #CBCFC7",
-"i. c #CACBCA",
-"p. c #CDCFCD",
-"a. c #D0D1CF",
-"s. c #D1D3CE",
-"d. c #D1D4CD",
-"f. c #D1D2D1",
-"g. c #D2D2D1",
-"h. c #D3D5D1",
-"j. c #D5D6D5",
-"k. c #D9DAD8",
-"l. c #D9DAD9",
-"z. c #DCDCDA",
-"x. c #DDDEDD",
-"c. c #DFE0DD",
-"v. c #DFE1DE",
-"b. c #E0E1DF",
-"n. c #E1E2E0",
-"m. c #E1E3E0",
-"M. c #E4E5E3",
-"N. c #E5E6E3",
-"B. c #E5E6E4",
-"V. c #E5E6E5",
-"C. c #E6E7E5",
-"Z. c #E7E8E7",
-"A. c #E9E9E7",
-"S. c #EAEBEA",
-"D. c #ECEDEA",
-"F. c #EDEDEB",
-"G. c #EEEFED",
-"H. c #F0F0EF",
-"J. c #FAFBFA",
-"K. c None",
-/* pixels */
-"K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.K.0.6.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K./ u.6.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.H d.<.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.z 0.S.w.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.,.,.,.,.K.K.K.H 4.V G.5.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.n.M.N.b.K.v o.@.p ! x.=.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.M.,.,.b.K 4.I _ 1.} l.%.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.Y H.h.s.V.;.k E 5.r...g.#.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.D +.J.F.A.S.I k ! =.g...y.X.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.S [ Z.z.z.V.u 5 9 8 1 h 0.] J K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.V / b.w.w.x.e + = : > g :.` x K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.N P l.&.&.j.x + + = > s *.R K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.M g.| X.p.L 5 O & = u $.W K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.i.! / r.y A y O + t +.F K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K. O 4.r.r.:.& 5 s k % w ..S K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-" . 7 0 0 7 . = 1 f w ' B K.K.K.K.K.K.K.K.K.K.K.K.",
-" X ; u ) b K.K.K.K.K.K.K.K.K.K.K.K.",
-" . 2 Q x K.K.K.K.K.K.K.K.K.K.K.K.",
-" 4 T l K.K.K.K.K.K.K.K.K.K.K.K.",
-"K. + B a K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K. & . K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K. K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.",
-"K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K.K."
-};
diff --git a/navit/icons/gui_stop.svg b/navit/icons/gui_stop.svg
deleted file mode 100644
index 51aa9c6a1..000000000
--- a/navit/icons/gui_stop.svg
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg4908"
- sodipodi:version="0.32"
- inkscape:version="0.44+devel"
- sodipodi:docbase="/home/andreas/project/gnome-icon-theme/scalable/actions"
- sodipodi:docname="process-stop.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/andreas/project/gnome-icon-theme/scalable/actions/process-stop.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- version="1.0"
- sodipodi:modified="true">
- <defs
- id="defs4910">
- <radialGradient
- gradientTransform="matrix(1.349881,0,0,1.349881,-3.498814,-1.810859)"
- gradientUnits="userSpaceOnUse"
- r="9.7183542"
- fy="4.9892726"
- fx="9.6893959"
- cy="4.9892726"
- cx="9.6893959"
- id="radialGradient5177"
- xlink:href="#linearGradient5171"
- inkscape:collect="always" />
- <radialGradient
- gradientTransform="matrix(2.417917,0,0,2.417917,-14.17917,-4.903184)"
- gradientUnits="userSpaceOnUse"
- r="9.7785711"
- fy="3.458019"
- fx="10"
- cy="3.458019"
- cx="10"
- id="radialGradient5157"
- xlink:href="#linearGradient5151"
- inkscape:collect="always" />
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.928125,0,0,0.3143011,0.7718789,12.358015)"
- r="9.0598059"
- fy="18.022524"
- fx="10.739184"
- cy="18.022524"
- cx="10.739184"
- id="radialGradient5145"
- xlink:href="#linearGradient5139"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient5139"
- inkscape:collect="always">
- <stop
- id="stop5141"
- offset="0"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- id="stop5143"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient5151"
- inkscape:collect="always">
- <stop
- id="stop5153"
- offset="0"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- id="stop5155"
- offset="1"
- style="stop-color:white;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient5171">
- <stop
- id="stop5173"
- offset="0"
- style="stop-color:#fe3a00;stop-opacity:1" />
- <stop
- id="stop5175"
- offset="1"
- style="stop-color:#c00;stop-opacity:1;" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568542"
- inkscape:cx="35.649059"
- inkscape:cy="26.052211"
- inkscape:current-layer="g7001"
- showgrid="false"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-width="1674"
- inkscape:window-height="970"
- inkscape:window-x="0"
- inkscape:window-y="25"
- width="48px"
- height="48px" />
- <metadata
- id="metadata4913">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Stop Process</dc:title>
- <dc:date>December 2006</dc:date>
- <dc:creator>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:contributor>
- <cc:Agent>
- <dc:title>Andreas Nilsson</dc:title>
- </cc:Agent>
- </dc:contributor>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:subject>
- <rdf:Bag>
- <rdf:li>stop</rdf:li>
- <rdf:li>halt</rdf:li>
- </rdf:Bag>
- </dc:subject>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <g
- inkscape:label="Layer 1"
- id="g7001"
- transform="matrix(1.4566048,0,0,1.4455352,0.4112881,1.2324709)">
- <path
- transform="matrix(1.5155468,0,0,1.2299034,-8.1425489e-2,4.9987359)"
- d="M 19.79899 18.022524 A 9.0598059 3.0935922 0 1 1 1.6793785,18.022524 A 9.0598059 3.0935922 0 1 1 19.79899 18.022524 z"
- sodipodi:ry="3.0935922"
- sodipodi:rx="9.0598059"
- sodipodi:cy="18.022524"
- sodipodi:cx="10.739184"
- id="path5137"
- style="opacity:1;color:#000000;fill:url(#radialGradient5145);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- transform="matrix(1.4472753,0,0,1.4583582,1.7215589,1.7135444)"
- d="M 19.25 9.625 A 9.25 9.25 0 1 1 0.75,9.625 A 9.25 9.25 0 1 1 19.25 9.625 z"
- sodipodi:ry="9.25"
- sodipodi:rx="9.25"
- sodipodi:cy="9.625"
- sodipodi:cx="10"
- id="path4262"
- style="opacity:1;color:#000000;fill:url(#radialGradient5177);fill-opacity:1;fill-rule:nonzero;stroke:#a40000;stroke-width:0.47435912;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.35393258;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient5157);stroke-width:0.49999994;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path5149"
- sodipodi:cx="10"
- sodipodi:cy="9.625"
- sodipodi:rx="9.25"
- sodipodi:ry="9.25"
- d="M 19.25 9.625 A 9.25 9.25 0 1 1 0.75,9.625 A 9.25 9.25 0 1 1 19.25 9.625 z"
- transform="matrix(1.373056,0,0,1.3835706,2.4637512,2.4333749)" />
- <path
- sodipodi:nodetypes="cc"
- id="path5159"
- d="M 11.045351,10.561853 L 21.343271,20.938632"
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.06745481;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.06745505;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 21.343273,10.526816 L 11.015248,20.938631"
- id="path5161"
- sodipodi:nodetypes="cc" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_strength_0.svg b/navit/icons/gui_strength_0.svg
deleted file mode 100644
index 09e8fee08..000000000
--- a/navit/icons/gui_strength_0.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/martin/map/geom"
- sodipodi:docname="roadgps0.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#000000"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3153"
- width="8"
- height="8"
- x="5"
- y="49" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5103"
- width="8"
- height="18"
- x="17"
- y="39" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5105"
- width="8"
- height="28"
- x="29"
- y="29" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5107"
- width="8"
- height="38"
- x="41"
- y="19" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5109"
- width="8"
- height="48"
- x="53"
- y="9" />
- </g>
-</svg>
diff --git a/navit/icons/gui_strength_1.svg b/navit/icons/gui_strength_1.svg
deleted file mode 100644
index 3646ebe96..000000000
--- a/navit/icons/gui_strength_1.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/martin/map/geom"
- sodipodi:docname="roadgps1.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#000000"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <rect
- style="fill:#ff0000;stroke:#ff0000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect3153"
- width="8"
- height="8"
- x="5"
- y="49" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5103"
- width="8"
- height="18"
- x="17"
- y="39" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5105"
- width="8"
- height="28"
- x="29"
- y="29" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5107"
- width="8"
- height="38"
- x="41"
- y="19" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5109"
- width="8"
- height="48"
- x="53"
- y="9" />
- </g>
-</svg>
diff --git a/navit/icons/gui_strength_2.svg b/navit/icons/gui_strength_2.svg
deleted file mode 100644
index 196f046aa..000000000
--- a/navit/icons/gui_strength_2.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/martin/map/geom"
- sodipodi:docname="roadgps2.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#000000"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <rect
- style="fill:#ffff00;stroke:#ffff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect3153"
- width="8"
- height="8"
- x="5"
- y="49" />
- <rect
- style="fill:#ffff00;stroke:#ffff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect5103"
- width="8"
- height="18"
- x="17"
- y="39" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5105"
- width="8"
- height="28"
- x="29"
- y="29" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5107"
- width="8"
- height="38"
- x="41"
- y="19" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5109"
- width="8"
- height="48"
- x="53"
- y="9" />
- </g>
-</svg>
diff --git a/navit/icons/gui_strength_3.svg b/navit/icons/gui_strength_3.svg
deleted file mode 100644
index 7a6b45222..000000000
--- a/navit/icons/gui_strength_3.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/martin/map/geom"
- sodipodi:docname="roadgps3.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#000000"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <rect
- style="fill:#ffff00;stroke:#ffff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect3153"
- width="8"
- height="8"
- x="5"
- y="49" />
- <rect
- style="fill:#ffff00;stroke:#ffff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect5103"
- width="8"
- height="18"
- x="17"
- y="39" />
- <rect
- style="fill:#ffff00;stroke:#ffff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect5105"
- width="8"
- height="28"
- x="29"
- y="29" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5107"
- width="8"
- height="38"
- x="41"
- y="19" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5109"
- width="8"
- height="48"
- x="53"
- y="9" />
- </g>
-</svg>
diff --git a/navit/icons/gui_strength_4.svg b/navit/icons/gui_strength_4.svg
deleted file mode 100644
index 482d4f234..000000000
--- a/navit/icons/gui_strength_4.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/martin/map/geom"
- sodipodi:docname="roadgps4.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#000000"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <rect
- style="fill:#00ff00;stroke:#00ff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect3153"
- width="8"
- height="8"
- x="5"
- y="49" />
- <rect
- style="fill:#00ff00;stroke:#00ff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect5103"
- width="8"
- height="18"
- x="17"
- y="39" />
- <rect
- style="fill:#00ff00;stroke:#00ff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect5105"
- width="8"
- height="28"
- x="29"
- y="29" />
- <rect
- style="fill:#00ff00;stroke:#00ff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect5107"
- width="8"
- height="38"
- x="41"
- y="19" />
- <rect
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5109"
- width="8"
- height="48"
- x="53"
- y="9" />
- </g>
- </svg>
diff --git a/navit/icons/gui_strength_5.svg b/navit/icons/gui_strength_5.svg
deleted file mode 100644
index 0e779b27a..000000000
--- a/navit/icons/gui_strength_5.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2175"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docbase="/home/martin/map/geom"
- sodipodi:docname="roadgps5.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2177" />
- <sodipodi:namedview
- id="base"
- pagecolor="#000000"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="9.5760562"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:document-units="px"
- inkscape:grid-bbox="true"
- showguides="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- objecttolerance="10000"
- inkscape:grid-points="true"
- gridtolerance="10000"
- inkscape:guide-points="true"
- guidetolerance="10000"
- gridempspacing="8"
- inkscape:window-width="1280"
- inkscape:window-height="954"
- inkscape:window-x="0"
- inkscape:window-y="0" />
- <metadata
- id="metadata2180">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <rect
- style="fill:#00ff00;stroke:#00ff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect3153"
- width="8"
- height="8"
- x="5"
- y="49" />
- <rect
- style="fill:#00ff00;stroke:#00ff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect5103"
- width="8"
- height="18"
- x="17"
- y="39" />
- <rect
- style="fill:#00ff00;stroke:#00ff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect5105"
- width="8"
- height="28"
- x="29"
- y="29" />
- <rect
- style="fill:#00ff00;stroke:#00ff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect5107"
- width="8"
- height="38"
- x="41"
- y="19" />
- <rect
- style="fill:#00ff00;stroke:#00ff00;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- id="rect5109"
- width="8"
- height="48"
- x="53"
- y="9" />
- </g>
-</svg>
diff --git a/navit/icons/gui_tools.svg b/navit/icons/gui_tools.svg
deleted file mode 100644
index 067fbc1f9..000000000
--- a/navit/icons/gui_tools.svg
+++ /dev/null
@@ -1,364 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48px"
- height="48px"
- id="svg4289"
- sodipodi:version="0.32"
- inkscape:version="0.44"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/categories"
- sodipodi:docname="preferences-system.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4291">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2834">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop2836" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop2838" />
- </linearGradient>
- <linearGradient
- id="linearGradient2808">
- <stop
- id="stop2810"
- offset="0"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- id="stop2812"
- offset="1"
- style="stop-color:white;stop-opacity:0.2937853" />
- </linearGradient>
- <linearGradient
- id="linearGradient2796">
- <stop
- style="stop-color:#d6d6d1;stop-opacity:1;"
- offset="0"
- id="stop2798" />
- <stop
- style="stop-color:#a2a298;stop-opacity:1;"
- offset="1"
- id="stop2800" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6221">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop6223" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop6225" />
- </linearGradient>
- <linearGradient
- id="linearGradient5280"
- inkscape:collect="always">
- <stop
- id="stop5282"
- offset="0"
- style="stop-color:#0c1d35;stop-opacity:1" />
- <stop
- id="stop5284"
- offset="1"
- style="stop-color:#898989;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5220">
- <stop
- style="stop-color:#0c1d35;stop-opacity:1"
- offset="0"
- id="stop5222" />
- <stop
- style="stop-color:white;stop-opacity:0.2937853"
- offset="1"
- id="stop5224" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5210">
- <stop
- style="stop-color:#729fcf;stop-opacity:1"
- offset="0"
- id="stop5212" />
- <stop
- style="stop-color:#295ead;stop-opacity:1"
- offset="1"
- id="stop5214" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5280"
- id="linearGradient5310"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.125,10.18406,-6.709383)"
- x1="-7.1332517"
- y1="37.776779"
- x2="-7.93502"
- y2="45.846867" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5210"
- id="linearGradient5325"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(41.96397,-27.37022)"
- x1="-10.69499"
- y1="41.105709"
- x2="-5.479228"
- y2="41.017323" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5220"
- id="linearGradient5327"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.579842,0,0,0.676482,38.80719,-11.92056)"
- x1="-8.9375"
- y1="40.375"
- x2="-7"
- y2="40.375" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6221"
- id="radialGradient6227"
- cx="21.96048"
- cy="34.498356"
- fx="21.96048"
- fy="34.498356"
- r="12.727922"
- gradientTransform="matrix(0.982963,0,0,0.508943,0.37414,16.84139)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6221"
- id="radialGradient4326"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.982963,0,0,0.508943,0.37414,16.84139)"
- cx="21.96048"
- cy="34.498356"
- fx="21.96048"
- fy="34.498356"
- r="12.727922" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2796"
- id="linearGradient2802"
- x1="29.432758"
- y1="18.474344"
- x2="27.225063"
- y2="20.911844"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2808"
- id="linearGradient2806"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.579842,0,0,0.676482,34.96935,-13.25847)"
- x1="-6.9787297"
- y1="37.126617"
- x2="-9.9043236"
- y2="36.848248" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2834"
- id="linearGradient2840"
- x1="37.624947"
- y1="13.160365"
- x2="39.844299"
- y2="9.9728651"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666"
- borderopacity="0.31372549"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="34.554937"
- inkscape:cy="36.942262"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="897"
- inkscape:window-height="968"
- inkscape:window-x="88"
- inkscape:window-y="104"
- inkscape:showpageshadow="false" />
- <metadata
- id="metadata4294">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>System Preferences</dc:title>
- <dc:creator>
- <cc:Agent>
- <dc:title>Andreas Nilsson</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>category</rdf:li>
- <rdf:li>system</rdf:li>
- <rdf:li>preferences</rdf:li>
- <rdf:li>settings</rdf:li>
- <rdf:li>control center</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:contributor>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:contributor>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <path
- sodipodi:type="arc"
- style="opacity:0.2160804;fill:url(#radialGradient4326);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4324"
- sodipodi:cx="21.743534"
- sodipodi:cy="34.299805"
- sodipodi:rx="12.727922"
- sodipodi:ry="6.3639612"
- d="M 34.471457 34.299805 A 12.727922 6.3639612 0 1 1 9.0156116,34.299805 A 12.727922 6.3639612 0 1 1 34.471457 34.299805 z"
- transform="matrix(0.824957,0,0,0.549971,18.3303,22.17163)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.55778894;fill:url(#radialGradient6227);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path5331"
- sodipodi:cx="21.743534"
- sodipodi:cy="34.299805"
- sodipodi:rx="12.727922"
- sodipodi:ry="6.3639612"
- d="M 34.471457 34.299805 A 12.727922 6.3639612 0 1 1 9.0156116,34.299805 A 12.727922 6.3639612 0 1 1 34.471457 34.299805 z"
- transform="matrix(0.824957,0,0,0.549971,-5.437469,22.6361)" />
- <g
- id="g5318"
- transform="matrix(1.006671,0,0,1,0.966642,0.716205)">
- <rect
- transform="matrix(0.707107,0.707107,-0.707107,0.707107,0,0)"
- ry="3.6244409"
- rx="4.9605856"
- y="5.3018064"
- x="28.463966"
- height="17.827978"
- width="10.95432"
- id="rect5288"
- style="opacity:1;fill:url(#linearGradient5325);fill-opacity:1;stroke:#204a87;stroke-width:0.99668151;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="matrix(0.707461,0.706752,-0.707461,0.706752,0,0)"
- ry="2.5654778"
- rx="4.0144925"
- y="6.3485308"
- x="29.362755"
- height="15.767583"
- width="9.1483574"
- id="rect5292"
- style="opacity:0.4;fill:none;fill-opacity:1;stroke:white;stroke-width:0.99668235;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccccccc"
- id="path5286"
- d="M 37.273948,6.6954072 L 34.044844,10.451912 L 33.539768,12.358575 L 18.755652,27.293572 C 17.762279,28.418572 19.635256,30.414892 20.876973,29.414892 L 35.657931,14.508306 L 37.277332,14.303118 L 41.276759,10.745488 C 41.276759,10.745488 37.273948,6.6954072 37.273948,6.6954072 z "
- style="opacity:1;fill:url(#linearGradient2802);fill-opacity:1;stroke:#888a85;stroke-width:0.99668127;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:0.28804345;fill:url(#linearGradient2806);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect2804"
- width="1.4153432"
- height="10.57757"
- x="29.170921"
- y="8.3889437"
- rx="0.66390902"
- ry="1.5982778"
- transform="matrix(0.707796,0.706417,-0.707796,0.706417,0,0)" />
- <rect
- transform="matrix(0.707796,0.706417,-0.707796,0.706417,0,0)"
- ry="1.5982751"
- rx="1.5982752"
- y="9.7268591"
- x="33.00877"
- height="10.823715"
- width="2.3193674"
- id="rect5290"
- style="opacity:0.28804345;fill:url(#linearGradient5327);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <g
- id="g5312"
- transform="matrix(1.005587,0,0,1.004813,-0.22864,1.985055)">
- <path
- sodipodi:nodetypes="ccccccccccccccccc"
- id="path5302"
- d="M 8.1359163,8.5385328 C 6.1926724,10.556239 6.212511,13.730389 8.2022073,15.720086 L 10.853858,18.371737 C 12.662831,20.18071 15.266488,20.553624 17.273387,19.111664 L 36.298766,38.160939 C 37.185095,39.047268 38.594421,39.047268 39.480747,38.160939 L 41.248513,36.393173 C 42.134842,35.506844 42.134843,34.097521 41.248513,33.211192 L 22.200387,14.184664 C 23.642347,12.177766 23.269433,9.5741078 21.46046,7.7651348 L 18.808809,5.1134838 C 16.819113,3.1237878 13.644963,3.1039478 11.627256,5.0471928 L 16.952654,10.328397 L 16.952654,12.449717 L 15.53844,13.863931 L 13.41712,13.863931 C 11.666497,12.081602 9.8444463,10.356837 8.1359163,8.5385328 z "
- style="opacity:1;fill:#e9e7e5;fill-opacity:1;stroke:#7f7f7f;stroke-width:0.99482751;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- transform="matrix(0.516124,-0.516124,0.516132,0.516132,32.85599,-14.52061)"
- d="M -41.454134 52.817165 A 1.3700194 1.3700194 0 1 1 -44.194173,52.817165 A 1.3700194 1.3700194 0 1 1 -41.454134 52.817165 z"
- sodipodi:ry="1.3700194"
- sodipodi:rx="1.3700194"
- sodipodi:cy="52.817165"
- sodipodi:cx="-42.824154"
- id="path5304"
- style="opacity:1;fill:#7f7f7f;fill-opacity:1;stroke:none;stroke-width:0.9133417;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc" />
- <path
- sodipodi:nodetypes="ccccccccccccccccc"
- id="path5306"
- d="M 8.2877553,10.137849 L 13.047585,14.897679 L 15.889852,14.840343 L 17.991565,12.738629 L 17.923902,9.8963618 L 13.224155,5.1966148 C 14.243323,4.2166598 16.73124,4.3929568 17.312908,4.9755018 L 21.506505,9.1690978 C 22.60496,10.267553 21.890914,12.991009 20.864369,14.214463 L 40.752454,34.228099 C 41.143198,34.626166 41.002693,35.367983 40.705936,35.703549 L 38.647115,37.63737 C 38.338478,38.011363 37.467341,38.072856 37.252454,37.728099 L 17.426869,17.776964 C 16.381369,18.822464 13.395216,19.391546 12.363765,18.370713 L 8.1407313,14.147679 C 7.189739,13.43607 7.4887473,10.849459 8.2877553,10.137849 z "
- style="opacity:0.7;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:white;stroke-width:0.99482703px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <rect
- transform="matrix(0.707107,-0.707107,0.707107,0.707107,0,0)"
- ry="1.74103"
- rx="1.74103"
- y="27.180147"
- x="0.18405671"
- height="21.956871"
- width="4.0000019"
- id="rect5308"
- style="opacity:0.18478262;fill:url(#linearGradient5310);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <path
- style="opacity:1;color:black;fill:url(#linearGradient2840);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 38.935067,8.2252435 L 41.7193,11.053671 L 37.69763,13.970486 L 36.062446,12.556273 L 38.935067,8.2252435 z "
- id="path2832" />
- </g>
-</svg>
diff --git a/navit/icons/gui_town.svg b/navit/icons/gui_town.svg
deleted file mode 100644
index 2d1f3835c..000000000
--- a/navit/icons/gui_town.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- width="48"
- height="48"
- id="svg2006"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- sodipodi:docname="gui_town.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- sodipodi:docbase="/home/martin/map/sf/navit-test/navit/xpm">
- <metadata
- id="metadata11">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- inkscape:window-height="954"
- inkscape:window-width="1280"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- width="48px"
- height="48px"
- inkscape:zoom="10"
- inkscape:cx="24.803347"
- inkscape:cy="32.662819"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:current-layer="svg2006" />
- <defs
- id="defs2008" />
- <g
- transform="matrix(0.240149,0,0,0.240149,-60.65005,-85.021524)"
- id="layer1">
- <g
- transform="matrix(9,0,0,9,-2287.46,-1926.28)"
- style="opacity:1"
- id="g1978">
- <g
- transform="translate(6.68287e-2,4.57222e-4)"
- id="g2084">
- <rect
- width="17.999981"
- height="17.999981"
- x="284.26093"
- y="255.07872"
- style="opacity:1;fill:#c3d7eb;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5453" />
- <path
- d="M 290.63841,259.35139 L 295.05402,256.20842 L 298.46279,257.68362 L 300.17752,260.56527 L 300.67227,268.08928 L 297.80771,270.24944 L 290.67064,268.80589 L 285.84987,264.26648 L 286.41339,260.48177 L 290.63841,259.35139 z "
- style="opacity:1;fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="path5463" />
- <path
- d="M 289.53125,253.4375 C 289.53515,257.64346 291.65509,260.23937 292.59375,263.16328 C 293.1102,264.772 293.41458,265.85533 293.25,267.22578 C 293.08542,268.59623 292.41574,270.43919 290.5,273.25703 L 293.8125,275.50703 C 295.93452,272.38578 296.95037,269.96061 297.21875,267.72578 C 297.48713,265.49095 296.94611,263.62619 296.40625,261.94453 C 295.23231,258.2877 293.53379,256.1759 293.53125,253.4375 L 289.53125,253.4375 z "
- style="opacity:1;fill:#204a87;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
- id="path5455" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_vehicle.svg b/navit/icons/gui_vehicle.svg
deleted file mode 100644
index 5fb4b1af1..000000000
--- a/navit/icons/gui_vehicle.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:ns="http://creativecommons.org/ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64"
- height="64"
- id="svg2307"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- version="1.0"
- sodipodi:docbase="/home/martin/map/sf/navit-test/navit/xpm"
- sodipodi:docname="gui_vehicle.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2309">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 130 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="310 : 130 : 1"
- inkscape:persp3d-origin="155 : 86.666667 : 1"
- id="perspective8" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="2"
- inkscape:cx="141.5"
- inkscape:cy="95.089384"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:window-width="1022"
- inkscape:window-height="748"
- inkscape:window-x="0"
- inkscape:window-y="197"
- width="64px"
- height="64px"
- showgrid="false" />
- <metadata
- id="metadata2312">
- <rdf:RDF>
- <ns:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </ns:Work>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(2.44179,-204.566)"
- style="fill:#000000;fill-opacity:1;stroke:none">
- <path
- id="path9347"
- style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.22297001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
- d="M 17.053296,212.37271 C 14.449642,212.27985 12.205975,213.1292 10.82234,216.17967 L 5.8266373,228.79068 C 2.1867153,229.80242 0.6021477,232.46788 0.5181979,234.65481 L 0.5181979,251.16736 L 5.3184615,251.16736 L 5.3184615,256.72409 C 5.085839,262.01991 13.694493,262.22459 13.887004,256.66892 L 13.988644,251.21465 L 45.127788,251.21465 L 45.229416,256.66892 C 45.421927,262.22459 54.038398,262.01991 53.805775,256.72409 L 53.805775,251.16736 L 58.598222,251.16736 L 58.598222,234.65481 C 58.514272,232.46788 56.929717,229.8024 53.289795,228.79068 L 48.29408,216.17967 C 46.910445,213.12922 44.666778,212.27985 42.063124,212.37271 L 17.053296,212.37271 z M 17.624016,216.74716 C 17.841792,216.74596 18.071365,216.75339 18.304181,216.76292 L 40.890417,216.83386 C 42.957617,216.78524 43.834347,216.83393 44.713436,218.80433 L 48.309713,228.57787 L 10.845802,228.53059 L 14.402996,219.01714 C 14.957697,217.11276 16.099586,216.75556 17.624016,216.74716 z M 9.7590889,233.47253 C 11.998097,233.47253 13.816642,235.29805 13.816642,237.55534 C 13.816642,239.81264 11.998097,241.64604 9.7590889,241.64604 C 7.5200928,241.64604 5.7015475,239.81264 5.7015475,237.55534 C 5.7015475,235.29804 7.5200928,233.47253 9.7590889,233.47253 z M 49.584049,233.47253 C 51.823057,233.47253 53.633786,235.29805 53.633786,237.55534 C 53.633786,239.81264 51.823057,241.64604 49.584049,241.64604 C 47.345053,241.64604 45.526507,239.81264 45.526507,237.55534 C 45.526507,235.29805 47.345053,233.47253 49.584049,233.47253 z M 46.797141,228.0952 L 46.797141,228.0952 z M 46.797141,228.0952 C 46.777067,227.94358 46.749346,227.825 46.717498,227.69948 C 46.507878,226.87315 46.227376,226.37069 45.625316,225.75534 C 45.039991,225.15709 44.381763,224.79015 43.611598,224.62557 C 42.855493,224.46398 35.842926,224.46356 35.084595,224.62557 C 33.644997,224.9331 32.411039,226.14389 32.029889,227.61919 C 32.01382,227.68137 31.99757,227.8543 31.984381,228.07799 L 46.797141,228.0952 z M 39.390755,217.41101 C 38.236511,217.41302 37.083672,218.01823 36.489647,219.23472 C 36.251785,219.72182 36.233659,219.79953 36.233659,220.61684 C 36.233659,221.42457 36.250127,221.51927 36.47826,222.0047 C 36.890435,222.88173 37.475857,223.40311 38.418036,223.74239 C 38.712126,223.84827 38.985671,223.88147 39.521592,223.86282 C 40.160266,223.84057 40.291672,223.80419 40.818567,223.54166 C 41.497183,223.20352 41.995316,222.70101 42.331696,222.01043 C 42.531939,221.59932 42.54785,221.48904 42.54785,220.65698 C 42.54785,219.7918 42.537444,219.73189 42.291875,219.22899 C 41.698854,218.01454 40.544998,217.40901 39.390755,217.41101 z " />
- </g>
-</svg>
diff --git a/navit/icons/gui_vehicle_pedestrian.svg b/navit/icons/gui_vehicle_pedestrian.svg
deleted file mode 100644
index f5521cd62..000000000
--- a/navit/icons/gui_vehicle_pedestrian.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- height="64"
- width="64"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="gui_vehicle_pedestrian.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <metadata
- id="metadata16">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs14">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 335.76001 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="753.12 : 335.76001 : 1"
- inkscape:persp3d-origin="376.56 : 223.84001 : 1"
- id="perspective18" />
- </defs>
- <sodipodi:namedview
- inkscape:window-height="726"
- inkscape:window-width="1280"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- showgrid="false"
- inkscape:zoom="8.2333334"
- inkscape:cx="31.163054"
- inkscape:cy="30.91053"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:current-layer="svg2" />
- <g
- transform="matrix(8.5470085e-2,0,0,8.5470085e-2,14.979693,-2.188034)"
- id="PedestrianSymbol"
- style="fill:#808080;fill-opacity:1">
- <circle
- r="56"
- cx="188"
- cy="105"
- style="fill:#808080;stroke:none;fill-opacity:1"
- id="circle9"
- sodipodi:cx="188"
- sodipodi:cy="105"
- sodipodi:rx="56"
- sodipodi:ry="56" />
- <path
- style="fill:#808080;stroke:none;fill-opacity:1"
- d="M 22,427 C 173.66667,190.33333 159.33333,183.66667 216,182 C 249,183 250,192 306,236 C 375,286.66667 370,287.33333 369,343 C 368.66667,410 373.33333,405 320,430 L 320,317 L 273,275 L 273,434 L 161,433 L 160,307 C 68,449 74,441 22,427 z M 163,450 L 272,450 C 272,475 280,473 338,582 C 399,694.33333 400,686.66667 365,751 L 214,480 C 71,756.66667 89,748.33333 10,743 L 89,595 C 156.66667,472.66667 160.33333,472.33333 163,450 z"
- id="path11" />
- </g>
-</svg>
diff --git a/navit/icons/gui_zoom_auto.svg b/navit/icons/gui_zoom_auto.svg
deleted file mode 100644
index bc84ca214..000000000
--- a/navit/icons/gui_zoom_auto.svg
+++ /dev/null
@@ -1,557 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="240.00000"
- inkscape:export-xdpi="240.00000"
- inkscape:export-filename="/home/jimmac/gfx/novell/pdes/trunk/docs/BIGmime-text.png"
- sodipodi:docname="gui_zoom_auto.svg"
- inkscape:version="0.91 r13725"
- sodipodi:version="0.32"
- id="svg249"
- height="48px"
- width="48px"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.1">
- <title
- id="title3500">gui_zoom_auto</title>
- <defs
- id="defs3">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient23434">
- <stop
- style="stop-color:#2e3436"
- offset="0"
- id="stop23436" />
- <stop
- style="stop-color:#555753"
- offset="1"
- id="stop23438" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient19914">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop19916" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop19918" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient19900">
- <stop
- style="stop-color:#888a85"
- offset="0"
- id="stop19902" />
- <stop
- style="stop-color:#d3d7cf"
- offset="1"
- id="stop19904" />
- </linearGradient>
- <linearGradient
- id="linearGradient15493">
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0"
- id="stop15495" />
- <stop
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1"
- id="stop15497" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient11102">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop11104" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop11106" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4952">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4954" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop4956" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4931">
- <stop
- style="stop-color:#babdb6;stop-opacity:1;"
- offset="0"
- id="stop4933" />
- <stop
- style="stop-color:#888a85"
- offset="1"
- id="stop4935" />
- </linearGradient>
- <linearGradient
- id="linearGradient4919">
- <stop
- style="stop-color:#429eff;stop-opacity:1;"
- offset="0"
- id="stop4921" />
- <stop
- style="stop-color:#0044a7;stop-opacity:1;"
- offset="1"
- id="stop4923" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2980">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop2982" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop2984" />
- </linearGradient>
- <linearGradient
- id="linearGradient2609"
- inkscape:collect="always">
- <stop
- id="stop2611"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1" />
- <stop
- id="stop2613"
- offset="1"
- style="stop-color:#eeeeec" />
- </linearGradient>
- <linearGradient
- id="linearGradient2617">
- <stop
- id="stop2619"
- offset="0"
- style="stop-color:#fbfbfa;stop-opacity:1;" />
- <stop
- id="stop2621"
- offset="1"
- style="stop-color:#d3d7cf" />
- </linearGradient>
- <linearGradient
- id="linearGradient2690"
- inkscape:collect="always">
- <stop
- id="stop2692"
- offset="0"
- style="stop-color:#2e3436" />
- <stop
- id="stop2694"
- offset="1"
- style="stop-color:#555753" />
- </linearGradient>
- <linearGradient
- id="linearGradient2698">
- <stop
- id="stop2700"
- offset="0"
- style="stop-color:#555753" />
- <stop
- style="stop-color:#a3a5a2;stop-opacity:1;"
- offset="0.70238096"
- id="stop2706" />
- <stop
- id="stop2702"
- offset="1"
- style="stop-color:#888a85" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2609"
- id="radialGradient1409"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-3.294293e-16,1.143443,-1.247217,-1.248581e-6,41.735,-54.25682)"
- cx="45.094624"
- cy="-2.6936908"
- fx="45.094624"
- fy="-2.6936908"
- r="10.498367" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2617"
- id="radialGradient1411"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.928248e-11,-1.686609,1.66336,-1.770202e-15,41.65431,111.7396)"
- cx="59.787472"
- cy="10.901535"
- fx="59.787472"
- fy="10.901535"
- r="10.55559" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2698"
- id="linearGradient1421"
- gradientUnits="userSpaceOnUse"
- x1="81.332451"
- y1="55.106758"
- x2="82.919647"
- y2="53.511261" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2690"
- id="linearGradient1423"
- gradientUnits="userSpaceOnUse"
- x1="81.096306"
- y1="57.148193"
- x2="83.629295"
- y2="54.615208" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4919"
- id="radialGradient4925"
- cx="17.062258"
- cy="28.851427"
- fx="17.062258"
- fy="28.851427"
- r="13.5"
- gradientTransform="matrix(1.459545,-9.027299e-15,-5.118666e-17,1.345339,-7.403138,-10.82184)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4931"
- id="linearGradient4937"
- x1="54.1129"
- y1="12.846775"
- x2="50.079948"
- y2="-3.8813655"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4952"
- id="radialGradient4960"
- cx="16.829521"
- cy="24.743624"
- fx="16.829521"
- fy="24.743624"
- r="16.924615"
- gradientTransform="matrix(2.231289,-0.597872,0.530253,1.979013,-30.74857,-16.49764)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11102"
- id="radialGradient11108"
- cx="8.0402098"
- cy="9.5280285"
- fx="8.0402098"
- fy="9.5280285"
- r="9.8125"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.946826,-1.897043e-16,1.897043e-16,0.946826,0.469351,0.499261)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient19900"
- id="linearGradient19906"
- x1="40.25"
- y1="41"
- x2="43.0625"
- y2="38.434578"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1,0)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient19914"
- id="linearGradient19920"
- x1="33.985317"
- y1="32.045906"
- x2="37.211494"
- y2="35.272079"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1,0)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2980"
- id="radialGradient23426"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.34,1.362626e-15,19.89607)"
- cx="28.284271"
- cy="30.145554"
- fx="28.284271"
- fy="30.145554"
- r="13.258252" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2980"
- id="radialGradient23432"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,-4.196543e-16,-3.619011e-17,0.34,1.860387e-15,19.89607)"
- cx="28.284271"
- cy="30.145554"
- fx="28.284271"
- fy="30.145554"
- r="13.258252" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient23434"
- id="linearGradient23440"
- x1="55.878288"
- y1="12.472493"
- x2="52.5"
- y2="-4.6213989"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2690"
- id="radialGradient4832"
- cx="21"
- cy="20"
- fx="21"
- fy="20"
- r="7.4600196"
- gradientTransform="matrix(1,0,0,1.1159174,0,-2.3183481)"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- inkscape:window-y="0"
- inkscape:window-x="0"
- inkscape:window-height="850"
- inkscape:window-width="1440"
- inkscape:document-units="px"
- inkscape:grid-bbox="false"
- showgrid="false"
- inkscape:current-layer="layer5"
- inkscape:cy="26.715856"
- inkscape:cx="31.008503"
- inkscape:zoom="22.627416"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0"
- borderopacity="1"
- bordercolor="#666666"
- pagecolor="#b6b6b6"
- id="base"
- inkscape:showpageshadow="false"
- showborder="false"
- showguides="false"
- inkscape:guide-bbox="true"
- inkscape:grid-points="true"
- fill="#729fcf"
- stroke="#2e3436"
- inkscape:window-maximized="1">
- <sodipodi:guide
- orientation="horizontal"
- position="28"
- id="guide1415" />
- <sodipodi:guide
- orientation="vertical"
- position="19"
- id="guide1417" />
- <inkscape:grid
- id="GridFromPre046Settings"
- type="xygrid"
- originx="0px"
- originy="0px"
- spacingx="0.5px"
- spacingy="0.5px"
- color="#3f3fff"
- empcolor="#3f3fff"
- opacity="0.15"
- empopacity="0.38"
- empspacing="2" />
- </sodipodi:namedview>
- <metadata
- id="metadata4">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>gui_zoom_auto</dc:title>
- <dc:subject>
- <rdf:Bag />
- </dc:subject>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:creator>
- <cc:Agent>
- <dc:title>jfitie@gmail.com</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source />
- <dc:contributor>
- <cc:Agent>
- <dc:title></dc:title>
- </cc:Agent>
- </dc:contributor>
- <dc:date>2017</dc:date>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer6"
- inkscape:label="Shadow" />
- <g
- style="display:inline"
- inkscape:groupmode="layer"
- inkscape:label="Base"
- id="layer1" />
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="Text"
- style="display:inline">
- <g
- transform="translate(-12.26513,47.49999)"
- style="display:inline"
- inkscape:label="base"
- id="g2637" />
- <path
- sodipodi:type="arc"
- style="opacity:0.6;color:#000000;fill:url(#radialGradient4925);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path1425"
- sodipodi:cx="17.5"
- sodipodi:cy="18.25"
- sodipodi:rx="13.5"
- sodipodi:ry="13.75"
- d="M 31 18.25 A 13.5 13.75 0 1 1 4,18.25 A 13.5 13.75 0 1 1 31 18.25 z"
- transform="matrix(1.185185,0,0,1.163637,0.259261,-1.236368)" />
- <path
- style="opacity:0.5;color:#000000;fill:url(#radialGradient4960);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 20.430801,3.5 C 11.914639,3.824042 5.1019281,10.849356 5.1019281,19.444373 C 5.1019281,21.861291 6.5050447,24.166163 7.5932363,26.15625 C 7.1211653,20.728065 9.4598537,19.543069 11.012791,20.025177 C 15.724296,21.487861 23.900134,22.817382 32.299922,18.431707 C 35.244588,16.894246 36.961785,20.661175 36.844126,17.275469 C 35.904686,9.4808807 29.114153,3.5000001 21.046301,3.5 C 20.840021,3.5 20.635189,3.492223 20.430801,3.5 z "
- id="path4939"
- sodipodi:nodetypes="cscsscsc" />
- <path
- transform="matrix(1.6,0,0,1.6,-63,12.8)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2607"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient1411);stroke-width:1.87499988;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.04705882;color:#000000;fill:url(#radialGradient23432);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path23418"
- sodipodi:cx="28.284271"
- sodipodi:cy="30.145554"
- sodipodi:rx="13.258252"
- sodipodi:ry="4.5078058"
- d="M 41.542523 30.145554 A 13.258252 4.5078058 0 1 1 15.026019,30.145554 A 13.258252 4.5078058 0 1 1 41.542523 30.145554 z"
- transform="matrix(0.98756,0.175983,-0.12162,0.682489,11.58742,17.92885)" />
- <g
- transform="matrix(1.544052,0,0,1.536016,-85.57756,-44.44515)"
- id="g2708">
- <path
- style="color:#000000;fill:url(#linearGradient1421);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1423);stroke-width:0.67653471;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 76.796351,49.768459 L 77.443998,53.023634 L 82.625171,58.237128 C 82.817674,58.430832 83.596641,58.55743 84.56811,57.580878 C 85.53958,56.604326 85.463684,55.876998 85.215757,55.627773 L 80.034584,50.419494 L 76.796351,49.768459 z "
- id="path2682"
- sodipodi:nodetypes="cczzzcc" />
- <path
- style="opacity:0.19215686;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 79.567301,51.320041 C 79.564315,51.331245 79.861402,51.644359 79.32201,52.185023 C 78.782611,52.725686 78.314866,52.559011 78.328524,52.545282 L 78.059375,51.023705 L 79.567301,51.320041 z "
- id="path2687"
- sodipodi:nodetypes="csccc" />
- </g>
- <path
- sodipodi:nodetypes="cczzzcc"
- id="path17267"
- d="M 34.284644,33.278595 L 34.90721,36.479814 L 42.406806,44.02859 C 42.77564,44.399843 43.340655,44.246496 44.274502,43.312648 C 45.208352,42.3788 45.449128,41.911353 44.985457,41.44495 L 37.485862,33.90116 L 34.284644,33.278595 z "
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient19906);stroke-width:0.99999934;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:0.15294118;color:#000000;fill:url(#linearGradient19920);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.67653471;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 32.831928,31.491641 C 32.5721,31.57915 32.424582,31.851686 32.494166,32.115648 L 33.50745,37.1077 C 33.532728,37.199365 33.582796,37.282377 33.652205,37.347702 L 41.613723,45.363786 C 41.970537,45.720948 42.509181,45.825341 43.157775,45.699789 C 43.80637,45.574237 44.570165,45.162961 45.37735,44.355775 C 46.177873,43.555254 46.590458,42.839054 46.728396,42.195753 C 46.866334,41.552451 46.742411,40.963513 46.390634,40.611736 L 38.380865,32.643653 C 38.302123,32.566369 38.200751,32.515947 38.091355,32.499652 L 33.121437,31.491641 C 33.026862,31.464506 32.926503,31.464506 32.831928,31.491641 z "
- id="path19908"
- sodipodi:nodetypes="cccccsssccccc" />
- <path
- transform="matrix(1.65,0,0,1.65,-65.625,12.575)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2605"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient1409);stroke-width:0.60606074;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- transform="matrix(1.75,0,0,1.75,-70.875,12.125)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2599"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient23440);stroke-width:0.57142824;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- transform="matrix(1.453172,0,0,1.453175,-55.29154,13.46071)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path4927"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4937);stroke-width:0.68814939;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.16078431;color:#000000;fill:url(#radialGradient11108);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path11092"
- sodipodi:cx="12.375"
- sodipodi:cy="12.9375"
- sodipodi:rx="9.8125"
- sodipodi:ry="9.8125"
- d="M 22.1875 12.9375 A 9.8125 9.8125 0 1 1 2.5625,12.9375 A 9.8125 9.8125 0 1 1 22.1875 12.9375 z"
- transform="matrix(1.324842,0,0,1.324842,4.605084,2.859861)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.072;color:#000000;fill:url(#radialGradient23426);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path2970"
- sodipodi:cx="28.284271"
- sodipodi:cy="30.145554"
- sodipodi:rx="13.258252"
- sodipodi:ry="4.5078058"
- d="M 41.542523 30.145554 A 13.258252 4.5078058 0 1 1 15.026019,30.145554 A 13.258252 4.5078058 0 1 1 41.542523 30.145554 z"
- transform="matrix(1.585832,0,0,1.204644,-19.35411,4.31756)" />
- <g
- style="font-style:normal;font-weight:normal;font-size:32px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;opacity:1;fill:url(#radialGradient4832);fill-opacity:1;stroke:#000040;stroke-width:3.0999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2;stroke-dasharray:none;stroke-opacity:0.25098039"
- id="text3490">
- <path
- d="m 25.968262,27.884766 -1.890625,-4.866211 -6.230469,0 -1.869141,4.866211 -1.998047,0 6.13379,-15.769532 1.783203,0 6.123047,15.769532 -2.051758,0 z M 23.486816,21.267578 21.725098,16.508789 20.973145,14.15625 q -0.322266,1.289063 -0.676758,2.352539 l -1.783203,4.758789 4.973632,0 z"
- style="font-size:22px;fill:url(#radialGradient4832);fill-opacity:1;stroke:#000040;stroke-width:3.0999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2;stroke-dasharray:none;stroke-opacity:0.25098039"
- id="path3491" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_zoom_in.svg b/navit/icons/gui_zoom_in.svg
deleted file mode 100644
index bb7f76ad0..000000000
--- a/navit/icons/gui_zoom_in.svg
+++ /dev/null
@@ -1,554 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="240.00000"
- inkscape:export-xdpi="240.00000"
- inkscape:export-filename="/home/jimmac/gfx/novell/pdes/trunk/docs/BIGmime-text.png"
- sodipodi:docname="zoom-in.svg"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/actions"
- inkscape:version="0.44"
- sodipodi:version="0.32"
- id="svg249"
- height="48px"
- width="48px"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient23434">
- <stop
- style="stop-color:#2e3436"
- offset="0"
- id="stop23436" />
- <stop
- style="stop-color:#555753"
- offset="1"
- id="stop23438" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient19914">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop19916" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop19918" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient19900">
- <stop
- style="stop-color:#888a85"
- offset="0"
- id="stop19902" />
- <stop
- style="stop-color:#d3d7cf"
- offset="1"
- id="stop19904" />
- </linearGradient>
- <linearGradient
- id="linearGradient15493">
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0"
- id="stop15495" />
- <stop
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1"
- id="stop15497" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient11102">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop11104" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop11106" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4952">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4954" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop4956" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4931">
- <stop
- style="stop-color:#babdb6;stop-opacity:1;"
- offset="0"
- id="stop4933" />
- <stop
- style="stop-color:#888a85"
- offset="1"
- id="stop4935" />
- </linearGradient>
- <linearGradient
- id="linearGradient4919">
- <stop
- style="stop-color:#429eff;stop-opacity:1;"
- offset="0"
- id="stop4921" />
- <stop
- style="stop-color:#0044a7;stop-opacity:1;"
- offset="1"
- id="stop4923" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2980">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop2982" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop2984" />
- </linearGradient>
- <linearGradient
- id="linearGradient2609"
- inkscape:collect="always">
- <stop
- id="stop2611"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1" />
- <stop
- id="stop2613"
- offset="1"
- style="stop-color:#eeeeec" />
- </linearGradient>
- <linearGradient
- id="linearGradient2617">
- <stop
- id="stop2619"
- offset="0"
- style="stop-color:#fbfbfa;stop-opacity:1;" />
- <stop
- id="stop2621"
- offset="1"
- style="stop-color:#d3d7cf" />
- </linearGradient>
- <linearGradient
- id="linearGradient2690"
- inkscape:collect="always">
- <stop
- id="stop2692"
- offset="0"
- style="stop-color:#2e3436" />
- <stop
- id="stop2694"
- offset="1"
- style="stop-color:#555753" />
- </linearGradient>
- <linearGradient
- id="linearGradient2698">
- <stop
- id="stop2700"
- offset="0"
- style="stop-color:#555753" />
- <stop
- style="stop-color:#a3a5a2;stop-opacity:1;"
- offset="0.70238096"
- id="stop2706" />
- <stop
- id="stop2702"
- offset="1"
- style="stop-color:#888a85" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2609"
- id="radialGradient1409"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-3.294293e-16,1.143443,-1.247217,-1.248581e-6,41.735,-54.25682)"
- cx="45.094624"
- cy="-2.6936908"
- fx="45.094624"
- fy="-2.6936908"
- r="10.498367" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2617"
- id="radialGradient1411"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.928248e-11,-1.686609,1.66336,-1.770202e-15,41.65431,111.7396)"
- cx="59.787472"
- cy="10.901535"
- fx="59.787472"
- fy="10.901535"
- r="10.55559" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2698"
- id="linearGradient1421"
- gradientUnits="userSpaceOnUse"
- x1="81.332451"
- y1="55.106758"
- x2="82.919647"
- y2="53.511261" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2690"
- id="linearGradient1423"
- gradientUnits="userSpaceOnUse"
- x1="81.096306"
- y1="57.148193"
- x2="83.629295"
- y2="54.615208" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4919"
- id="radialGradient4925"
- cx="17.062258"
- cy="28.851427"
- fx="17.062258"
- fy="28.851427"
- r="13.5"
- gradientTransform="matrix(1.459545,-9.027299e-15,-5.118666e-17,1.345339,-7.403138,-10.82184)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4931"
- id="linearGradient4937"
- x1="54.1129"
- y1="12.846775"
- x2="50.079948"
- y2="-3.8813655"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4952"
- id="radialGradient4960"
- cx="16.829521"
- cy="24.743624"
- fx="16.829521"
- fy="24.743624"
- r="16.924615"
- gradientTransform="matrix(2.231289,-0.597872,0.530253,1.979013,-30.74857,-16.49764)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11102"
- id="radialGradient11108"
- cx="8.0402098"
- cy="9.5280285"
- fx="8.0402098"
- fy="9.5280285"
- r="9.8125"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.946826,-1.897043e-16,1.897043e-16,0.946826,0.469351,0.499261)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient15493"
- id="linearGradient17263"
- gradientUnits="userSpaceOnUse"
- x1="19"
- y1="14.875"
- x2="19.65625"
- y2="29"
- gradientTransform="translate(2,-1)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient19900"
- id="linearGradient19906"
- x1="40.25"
- y1="41"
- x2="43.0625"
- y2="38.434578"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1,0)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient19914"
- id="linearGradient19920"
- x1="33.985317"
- y1="32.045906"
- x2="37.211494"
- y2="35.272079"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1,0)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2980"
- id="radialGradient23426"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.34,1.362626e-15,19.89607)"
- cx="28.284271"
- cy="30.145554"
- fx="28.284271"
- fy="30.145554"
- r="13.258252" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2980"
- id="radialGradient23432"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,-4.196543e-16,-3.619011e-17,0.34,1.860387e-15,19.89607)"
- cx="28.284271"
- cy="30.145554"
- fx="28.284271"
- fy="30.145554"
- r="13.258252" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient23434"
- id="linearGradient23440"
- x1="55.878288"
- y1="12.472493"
- x2="52.5"
- y2="-4.6213989"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- inkscape:window-y="98"
- inkscape:window-x="341"
- inkscape:window-height="872"
- inkscape:window-width="929"
- inkscape:document-units="px"
- inkscape:grid-bbox="false"
- showgrid="false"
- inkscape:current-layer="layer5"
- inkscape:cy="24.835182"
- inkscape:cx="30.254653"
- inkscape:zoom="1"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0"
- borderopacity="1"
- bordercolor="#666666"
- pagecolor="#b6b6b6"
- id="base"
- inkscape:showpageshadow="false"
- showborder="false"
- showguides="false"
- inkscape:guide-bbox="true"
- inkscape:grid-points="true"
- gridspacingx="0.5px"
- gridspacingy="0.5px"
- gridempspacing="2"
- fill="#729fcf"
- stroke="#2e3436">
- <sodipodi:guide
- orientation="horizontal"
- position="28"
- id="guide1415" />
- <sodipodi:guide
- orientation="vertical"
- position="19"
- id="guide1417" />
- </sodipodi:namedview>
- <metadata
- id="metadata4">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Find</dc:title>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>document</rdf:li>
- <rdf:li>search</rdf:li>
- <rdf:li>find</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Lapo Calamandrei</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source />
- <dc:contributor>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:contributor>
- <dc:date>2006-04-21</dc:date>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer6"
- inkscape:label="Shadow" />
- <g
- style="display:inline"
- inkscape:groupmode="layer"
- inkscape:label="Base"
- id="layer1" />
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="Text"
- style="display:inline">
- <g
- transform="translate(-12.26513,47.49999)"
- style="display:inline"
- inkscape:label="base"
- id="g2637" />
- <path
- sodipodi:type="arc"
- style="opacity:0.6;color:#000000;fill:url(#radialGradient4925);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path1425"
- sodipodi:cx="17.5"
- sodipodi:cy="18.25"
- sodipodi:rx="13.5"
- sodipodi:ry="13.75"
- d="M 31 18.25 A 13.5 13.75 0 1 1 4,18.25 A 13.5 13.75 0 1 1 31 18.25 z"
- transform="matrix(1.185185,0,0,1.163637,0.259261,-1.236368)" />
- <path
- style="opacity:0.5;color:#000000;fill:url(#radialGradient4960);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 20.430801,3.5 C 11.914639,3.824042 5.1019281,10.849356 5.1019281,19.444373 C 5.1019281,21.861291 6.5050447,24.166163 7.5932363,26.15625 C 7.1211653,20.728065 9.4598537,19.543069 11.012791,20.025177 C 15.724296,21.487861 23.900134,22.817382 32.299922,18.431707 C 35.244588,16.894246 36.961785,20.661175 36.844126,17.275469 C 35.904686,9.4808807 29.114153,3.5000001 21.046301,3.5 C 20.840021,3.5 20.635189,3.492223 20.430801,3.5 z "
- id="path4939"
- sodipodi:nodetypes="cscsscsc" />
- <path
- transform="matrix(1.6,0,0,1.6,-63,12.8)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2607"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient1411);stroke-width:1.87499988;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.04705882;color:#000000;fill:url(#radialGradient23432);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path23418"
- sodipodi:cx="28.284271"
- sodipodi:cy="30.145554"
- sodipodi:rx="13.258252"
- sodipodi:ry="4.5078058"
- d="M 41.542523 30.145554 A 13.258252 4.5078058 0 1 1 15.026019,30.145554 A 13.258252 4.5078058 0 1 1 41.542523 30.145554 z"
- transform="matrix(0.98756,0.175983,-0.12162,0.682489,11.58742,17.92885)" />
- <g
- transform="matrix(1.544052,0,0,1.536016,-85.57756,-44.44515)"
- id="g2708">
- <path
- style="color:#000000;fill:url(#linearGradient1421);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1423);stroke-width:0.67653471;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 76.796351,49.768459 L 77.443998,53.023634 L 82.625171,58.237128 C 82.817674,58.430832 83.596641,58.55743 84.56811,57.580878 C 85.53958,56.604326 85.463684,55.876998 85.215757,55.627773 L 80.034584,50.419494 L 76.796351,49.768459 z "
- id="path2682"
- sodipodi:nodetypes="cczzzcc" />
- <path
- style="opacity:0.19215686;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 79.567301,51.320041 C 79.564315,51.331245 79.861402,51.644359 79.32201,52.185023 C 78.782611,52.725686 78.314866,52.559011 78.328524,52.545282 L 78.059375,51.023705 L 79.567301,51.320041 z "
- id="path2687"
- sodipodi:nodetypes="csccc" />
- </g>
- <path
- sodipodi:nodetypes="cczzzcc"
- id="path17267"
- d="M 34.284644,33.278595 L 34.90721,36.479814 L 42.406806,44.02859 C 42.77564,44.399843 43.340655,44.246496 44.274502,43.312648 C 45.208352,42.3788 45.449128,41.911353 44.985457,41.44495 L 37.485862,33.90116 L 34.284644,33.278595 z "
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient19906);stroke-width:0.99999934;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:0.15294118;color:#000000;fill:url(#linearGradient19920);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.67653471;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 32.831928,31.491641 C 32.5721,31.57915 32.424582,31.851686 32.494166,32.115648 L 33.50745,37.1077 C 33.532728,37.199365 33.582796,37.282377 33.652205,37.347702 L 41.613723,45.363786 C 41.970537,45.720948 42.509181,45.825341 43.157775,45.699789 C 43.80637,45.574237 44.570165,45.162961 45.37735,44.355775 C 46.177873,43.555254 46.590458,42.839054 46.728396,42.195753 C 46.866334,41.552451 46.742411,40.963513 46.390634,40.611736 L 38.380865,32.643653 C 38.302123,32.566369 38.200751,32.515947 38.091355,32.499652 L 33.121437,31.491641 C 33.026862,31.464506 32.926503,31.464506 32.831928,31.491641 z "
- id="path19908"
- sodipodi:nodetypes="cccccsssccccc" />
- <path
- transform="matrix(1.65,0,0,1.65,-65.625,12.575)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2605"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient1409);stroke-width:0.60606074;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- transform="matrix(1.75,0,0,1.75,-70.875,12.125)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2599"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient23440);stroke-width:0.57142824;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- transform="matrix(1.453172,0,0,1.453175,-55.29154,13.46071)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path4927"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4937);stroke-width:0.68814939;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.16078431;color:#000000;fill:url(#radialGradient11108);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path11092"
- sodipodi:cx="12.375"
- sodipodi:cy="12.9375"
- sodipodi:rx="9.8125"
- sodipodi:ry="9.8125"
- d="M 22.1875 12.9375 A 9.8125 9.8125 0 1 1 2.5625,12.9375 A 9.8125 9.8125 0 1 1 22.1875 12.9375 z"
- transform="matrix(1.324842,0,0,1.324842,4.605084,2.859861)" />
- <g
- id="g1399"
- style="opacity:0.76078431"
- transform="translate(-2.905726e-7,1)">
- <path
- sodipodi:nodetypes="ccccccccccccc"
- id="rect8466"
- d="M 18.5,10.5 L 18.5,16.5 L 12.5,16.5 L 12.5,21.5 L 18.5,21.5 L 18.5,27.5 L 23.5,27.5 L 23.5,21.5 L 29.5,21.5 L 29.5,16.5 L 23.5,16.5 L 23.5,10.5 L 18.5,10.5 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient17263);fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- sodipodi:nodetypes="ccccccccccccc"
- id="rect12861"
- d="M 19.5,11.5 L 19.5,17.5 L 13.5,17.5 L 13.5,20.5 L 19.5,20.5 L 19.5,26.5 L 22.5,26.5 L 22.5,20.5 L 28.5,20.5 L 28.5,17.5 L 22.5,17.5 L 22.5,11.5 L 19.5,11.5 z "
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- </g>
- <path
- sodipodi:type="arc"
- style="opacity:0.072;color:#000000;fill:url(#radialGradient23426);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path2970"
- sodipodi:cx="28.284271"
- sodipodi:cy="30.145554"
- sodipodi:rx="13.258252"
- sodipodi:ry="4.5078058"
- d="M 41.542523 30.145554 A 13.258252 4.5078058 0 1 1 15.026019,30.145554 A 13.258252 4.5078058 0 1 1 41.542523 30.145554 z"
- transform="matrix(1.585832,0,0,1.204644,-19.35411,4.31756)" />
- </g>
-</svg>
diff --git a/navit/icons/gui_zoom_manual.svg b/navit/icons/gui_zoom_manual.svg
deleted file mode 100644
index 4f72c9afe..000000000
--- a/navit/icons/gui_zoom_manual.svg
+++ /dev/null
@@ -1,557 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="240.00000"
- inkscape:export-xdpi="240.00000"
- inkscape:export-filename="/home/jimmac/gfx/novell/pdes/trunk/docs/BIGmime-text.png"
- sodipodi:docname="gui_zoom_manual.svg"
- inkscape:version="0.91 r13725"
- sodipodi:version="0.32"
- id="svg249"
- height="48px"
- width="48px"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.1">
- <title
- id="title3502">gui_zoom_manual</title>
- <defs
- id="defs3">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient23434">
- <stop
- style="stop-color:#2e3436"
- offset="0"
- id="stop23436" />
- <stop
- style="stop-color:#555753"
- offset="1"
- id="stop23438" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient19914">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop19916" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop19918" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient19900">
- <stop
- style="stop-color:#888a85"
- offset="0"
- id="stop19902" />
- <stop
- style="stop-color:#d3d7cf"
- offset="1"
- id="stop19904" />
- </linearGradient>
- <linearGradient
- id="linearGradient15493">
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0"
- id="stop15495" />
- <stop
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1"
- id="stop15497" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient11102">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop11104" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop11106" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4952">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4954" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop4956" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4931">
- <stop
- style="stop-color:#babdb6;stop-opacity:1;"
- offset="0"
- id="stop4933" />
- <stop
- style="stop-color:#888a85"
- offset="1"
- id="stop4935" />
- </linearGradient>
- <linearGradient
- id="linearGradient4919">
- <stop
- style="stop-color:#429eff;stop-opacity:1;"
- offset="0"
- id="stop4921" />
- <stop
- style="stop-color:#0044a7;stop-opacity:1;"
- offset="1"
- id="stop4923" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2980">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop2982" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop2984" />
- </linearGradient>
- <linearGradient
- id="linearGradient2609"
- inkscape:collect="always">
- <stop
- id="stop2611"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1" />
- <stop
- id="stop2613"
- offset="1"
- style="stop-color:#eeeeec" />
- </linearGradient>
- <linearGradient
- id="linearGradient2617">
- <stop
- id="stop2619"
- offset="0"
- style="stop-color:#fbfbfa;stop-opacity:1;" />
- <stop
- id="stop2621"
- offset="1"
- style="stop-color:#d3d7cf" />
- </linearGradient>
- <linearGradient
- id="linearGradient2690"
- inkscape:collect="always">
- <stop
- id="stop2692"
- offset="0"
- style="stop-color:#2e3436" />
- <stop
- id="stop2694"
- offset="1"
- style="stop-color:#555753" />
- </linearGradient>
- <linearGradient
- id="linearGradient2698">
- <stop
- id="stop2700"
- offset="0"
- style="stop-color:#555753" />
- <stop
- style="stop-color:#a3a5a2;stop-opacity:1;"
- offset="0.70238096"
- id="stop2706" />
- <stop
- id="stop2702"
- offset="1"
- style="stop-color:#888a85" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2609"
- id="radialGradient1409"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-3.294293e-16,1.143443,-1.247217,-1.248581e-6,41.735,-54.25682)"
- cx="45.094624"
- cy="-2.6936908"
- fx="45.094624"
- fy="-2.6936908"
- r="10.498367" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2617"
- id="radialGradient1411"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.928248e-11,-1.686609,1.66336,-1.770202e-15,41.65431,111.7396)"
- cx="59.787472"
- cy="10.901535"
- fx="59.787472"
- fy="10.901535"
- r="10.55559" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2698"
- id="linearGradient1421"
- gradientUnits="userSpaceOnUse"
- x1="81.332451"
- y1="55.106758"
- x2="82.919647"
- y2="53.511261" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2690"
- id="linearGradient1423"
- gradientUnits="userSpaceOnUse"
- x1="81.096306"
- y1="57.148193"
- x2="83.629295"
- y2="54.615208" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4919"
- id="radialGradient4925"
- cx="17.062258"
- cy="28.851427"
- fx="17.062258"
- fy="28.851427"
- r="13.5"
- gradientTransform="matrix(1.459545,-9.027299e-15,-5.118666e-17,1.345339,-7.403138,-10.82184)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4931"
- id="linearGradient4937"
- x1="54.1129"
- y1="12.846775"
- x2="50.079948"
- y2="-3.8813655"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4952"
- id="radialGradient4960"
- cx="16.829521"
- cy="24.743624"
- fx="16.829521"
- fy="24.743624"
- r="16.924615"
- gradientTransform="matrix(2.231289,-0.597872,0.530253,1.979013,-30.74857,-16.49764)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11102"
- id="radialGradient11108"
- cx="8.0402098"
- cy="9.5280285"
- fx="8.0402098"
- fy="9.5280285"
- r="9.8125"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.946826,-1.897043e-16,1.897043e-16,0.946826,0.469351,0.499261)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient19900"
- id="linearGradient19906"
- x1="40.25"
- y1="41"
- x2="43.0625"
- y2="38.434578"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1,0)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient19914"
- id="linearGradient19920"
- x1="33.985317"
- y1="32.045906"
- x2="37.211494"
- y2="35.272079"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1,0)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2980"
- id="radialGradient23426"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.34,1.362626e-15,19.89607)"
- cx="28.284271"
- cy="30.145554"
- fx="28.284271"
- fy="30.145554"
- r="13.258252" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2980"
- id="radialGradient23432"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,-4.196543e-16,-3.619011e-17,0.34,1.860387e-15,19.89607)"
- cx="28.284271"
- cy="30.145554"
- fx="28.284271"
- fy="30.145554"
- r="13.258252" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient23434"
- id="linearGradient23440"
- x1="55.878288"
- y1="12.472493"
- x2="52.5"
- y2="-4.6213989"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2690"
- id="radialGradient4830"
- cx="21"
- cy="20"
- fx="21"
- fy="20"
- r="8.2817965"
- gradientTransform="matrix(1,0,0,1.0012971,0,-0.02594168)"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- inkscape:window-y="0"
- inkscape:window-x="0"
- inkscape:window-height="850"
- inkscape:window-width="1440"
- inkscape:document-units="px"
- inkscape:grid-bbox="false"
- showgrid="false"
- inkscape:current-layer="layer5"
- inkscape:cy="31.444942"
- inkscape:cx="28.77559"
- inkscape:zoom="22.627417"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0"
- borderopacity="1"
- bordercolor="#666666"
- pagecolor="#b6b6b6"
- id="base"
- inkscape:showpageshadow="false"
- showborder="false"
- showguides="false"
- inkscape:guide-bbox="true"
- inkscape:grid-points="true"
- fill="#729fcf"
- stroke="#2e3436"
- inkscape:window-maximized="1">
- <sodipodi:guide
- orientation="horizontal"
- position="28"
- id="guide1415" />
- <sodipodi:guide
- orientation="vertical"
- position="19"
- id="guide1417" />
- <inkscape:grid
- id="GridFromPre046Settings"
- type="xygrid"
- originx="0px"
- originy="0px"
- spacingx="0.5px"
- spacingy="0.5px"
- color="#3f3fff"
- empcolor="#3f3fff"
- opacity="0.15"
- empopacity="0.38"
- empspacing="2" />
- </sodipodi:namedview>
- <metadata
- id="metadata4">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>gui_zoom_manual</dc:title>
- <dc:subject>
- <rdf:Bag />
- </dc:subject>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:creator>
- <cc:Agent>
- <dc:title>jfitie@gmail.com</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source />
- <dc:contributor>
- <cc:Agent>
- <dc:title></dc:title>
- </cc:Agent>
- </dc:contributor>
- <dc:date>2017</dc:date>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer6"
- inkscape:label="Shadow" />
- <g
- style="display:inline"
- inkscape:groupmode="layer"
- inkscape:label="Base"
- id="layer1" />
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="Text"
- style="display:inline">
- <g
- transform="translate(-12.26513,47.49999)"
- style="display:inline"
- inkscape:label="base"
- id="g2637" />
- <path
- sodipodi:type="arc"
- style="opacity:0.6;color:#000000;fill:url(#radialGradient4925);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path1425"
- sodipodi:cx="17.5"
- sodipodi:cy="18.25"
- sodipodi:rx="13.5"
- sodipodi:ry="13.75"
- d="M 31 18.25 A 13.5 13.75 0 1 1 4,18.25 A 13.5 13.75 0 1 1 31 18.25 z"
- transform="matrix(1.185185,0,0,1.163637,0.259261,-1.236368)" />
- <path
- style="opacity:0.5;color:#000000;fill:url(#radialGradient4960);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 20.430801,3.5 C 11.914639,3.824042 5.1019281,10.849356 5.1019281,19.444373 C 5.1019281,21.861291 6.5050447,24.166163 7.5932363,26.15625 C 7.1211653,20.728065 9.4598537,19.543069 11.012791,20.025177 C 15.724296,21.487861 23.900134,22.817382 32.299922,18.431707 C 35.244588,16.894246 36.961785,20.661175 36.844126,17.275469 C 35.904686,9.4808807 29.114153,3.5000001 21.046301,3.5 C 20.840021,3.5 20.635189,3.492223 20.430801,3.5 z "
- id="path4939"
- sodipodi:nodetypes="cscsscsc" />
- <path
- transform="matrix(1.6,0,0,1.6,-63,12.8)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2607"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient1411);stroke-width:1.87499988;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.04705882;color:#000000;fill:url(#radialGradient23432);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path23418"
- sodipodi:cx="28.284271"
- sodipodi:cy="30.145554"
- sodipodi:rx="13.258252"
- sodipodi:ry="4.5078058"
- d="M 41.542523 30.145554 A 13.258252 4.5078058 0 1 1 15.026019,30.145554 A 13.258252 4.5078058 0 1 1 41.542523 30.145554 z"
- transform="matrix(0.98756,0.175983,-0.12162,0.682489,11.58742,17.92885)" />
- <g
- transform="matrix(1.544052,0,0,1.536016,-85.57756,-44.44515)"
- id="g2708">
- <path
- style="color:#000000;fill:url(#linearGradient1421);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1423);stroke-width:0.67653471;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 76.796351,49.768459 L 77.443998,53.023634 L 82.625171,58.237128 C 82.817674,58.430832 83.596641,58.55743 84.56811,57.580878 C 85.53958,56.604326 85.463684,55.876998 85.215757,55.627773 L 80.034584,50.419494 L 76.796351,49.768459 z "
- id="path2682"
- sodipodi:nodetypes="cczzzcc" />
- <path
- style="opacity:0.19215686;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 79.567301,51.320041 C 79.564315,51.331245 79.861402,51.644359 79.32201,52.185023 C 78.782611,52.725686 78.314866,52.559011 78.328524,52.545282 L 78.059375,51.023705 L 79.567301,51.320041 z "
- id="path2687"
- sodipodi:nodetypes="csccc" />
- </g>
- <path
- sodipodi:nodetypes="cczzzcc"
- id="path17267"
- d="M 34.284644,33.278595 L 34.90721,36.479814 L 42.406806,44.02859 C 42.77564,44.399843 43.340655,44.246496 44.274502,43.312648 C 45.208352,42.3788 45.449128,41.911353 44.985457,41.44495 L 37.485862,33.90116 L 34.284644,33.278595 z "
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient19906);stroke-width:0.99999934;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:0.15294118;color:#000000;fill:url(#linearGradient19920);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.67653471;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 32.831928,31.491641 C 32.5721,31.57915 32.424582,31.851686 32.494166,32.115648 L 33.50745,37.1077 C 33.532728,37.199365 33.582796,37.282377 33.652205,37.347702 L 41.613723,45.363786 C 41.970537,45.720948 42.509181,45.825341 43.157775,45.699789 C 43.80637,45.574237 44.570165,45.162961 45.37735,44.355775 C 46.177873,43.555254 46.590458,42.839054 46.728396,42.195753 C 46.866334,41.552451 46.742411,40.963513 46.390634,40.611736 L 38.380865,32.643653 C 38.302123,32.566369 38.200751,32.515947 38.091355,32.499652 L 33.121437,31.491641 C 33.026862,31.464506 32.926503,31.464506 32.831928,31.491641 z "
- id="path19908"
- sodipodi:nodetypes="cccccsssccccc" />
- <path
- transform="matrix(1.65,0,0,1.65,-65.625,12.575)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2605"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient1409);stroke-width:0.60606074;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- transform="matrix(1.75,0,0,1.75,-70.875,12.125)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2599"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient23440);stroke-width:0.57142824;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- transform="matrix(1.453172,0,0,1.453175,-55.29154,13.46071)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path4927"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4937);stroke-width:0.68814939;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.16078431;color:#000000;fill:url(#radialGradient11108);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path11092"
- sodipodi:cx="12.375"
- sodipodi:cy="12.9375"
- sodipodi:rx="9.8125"
- sodipodi:ry="9.8125"
- d="M 22.1875 12.9375 A 9.8125 9.8125 0 1 1 2.5625,12.9375 A 9.8125 9.8125 0 1 1 22.1875 12.9375 z"
- transform="matrix(1.324842,0,0,1.324842,4.605084,2.859861)" />
- <path
- sodipodi:type="arc"
- style="opacity:0.072;color:#000000;fill:url(#radialGradient23426);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path2970"
- sodipodi:cx="28.284271"
- sodipodi:cy="30.145554"
- sodipodi:rx="13.258252"
- sodipodi:ry="4.5078058"
- d="M 41.542523 30.145554 A 13.258252 4.5078058 0 1 1 15.026019,30.145554 A 13.258252 4.5078058 0 1 1 41.542523 30.145554 z"
- transform="matrix(1.585832,0,0,1.204644,-19.35411,4.31756)" />
- <g
- style="font-style:normal;font-weight:normal;font-size:32px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:url(#radialGradient4830);fill-opacity:1;stroke:#000040;stroke-width:3.0999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2;stroke-dasharray:none;stroke-opacity:0.25098039"
- id="text3490">
- <path
- d="m 20.086914,27.852539 -5.177734,-13.771484 -0.08594,0 q 0.161133,1.71875 0.161133,4.243164 l 0,9.52832 -1.826172,0 0,-15.705078 2.921875,0 4.844727,12.869141 0.08594,0 4.930664,-12.869141 2.900391,0 0,15.705078 -1.955078,0 0,-9.657227 q 0,-1.611328 0.15039,-4.092773 l -0.08594,0 -5.242188,13.75 -1.62207,0 z"
- style="font-size:22px;fill:url(#radialGradient4830);fill-opacity:1;stroke:#000040;stroke-width:3.0999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2;stroke-dasharray:none;stroke-opacity:0.25098039"
- id="path3494" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/gui_zoom_out.svg b/navit/icons/gui_zoom_out.svg
deleted file mode 100644
index ff8c9f986..000000000
--- a/navit/icons/gui_zoom_out.svg
+++ /dev/null
@@ -1,554 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="240.00000"
- inkscape:export-xdpi="240.00000"
- inkscape:export-filename="/home/jimmac/gfx/novell/pdes/trunk/docs/BIGmime-text.png"
- sodipodi:docname="zoom-out.svg"
- sodipodi:docbase="/home/lapo/Icone/cvs/gnome-icon-theme/scalable/actions"
- inkscape:version="0.44"
- sodipodi:version="0.32"
- id="svg249"
- height="48px"
- width="48px"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient23434">
- <stop
- style="stop-color:#2e3436"
- offset="0"
- id="stop23436" />
- <stop
- style="stop-color:#555753"
- offset="1"
- id="stop23438" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient19914">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop19916" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop19918" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient19900">
- <stop
- style="stop-color:#888a85"
- offset="0"
- id="stop19902" />
- <stop
- style="stop-color:#d3d7cf"
- offset="1"
- id="stop19904" />
- </linearGradient>
- <linearGradient
- id="linearGradient15493">
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0"
- id="stop15495" />
- <stop
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1"
- id="stop15497" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient11102">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop11104" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop11106" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4952">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4954" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop4956" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4931">
- <stop
- style="stop-color:#babdb6;stop-opacity:1;"
- offset="0"
- id="stop4933" />
- <stop
- style="stop-color:#888a85"
- offset="1"
- id="stop4935" />
- </linearGradient>
- <linearGradient
- id="linearGradient4919">
- <stop
- style="stop-color:#429eff;stop-opacity:1;"
- offset="0"
- id="stop4921" />
- <stop
- style="stop-color:#0044a7;stop-opacity:1;"
- offset="1"
- id="stop4923" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2980">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop2982" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop2984" />
- </linearGradient>
- <linearGradient
- id="linearGradient2609"
- inkscape:collect="always">
- <stop
- id="stop2611"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1" />
- <stop
- id="stop2613"
- offset="1"
- style="stop-color:#eeeeec" />
- </linearGradient>
- <linearGradient
- id="linearGradient2617">
- <stop
- id="stop2619"
- offset="0"
- style="stop-color:#fbfbfa;stop-opacity:1;" />
- <stop
- id="stop2621"
- offset="1"
- style="stop-color:#d3d7cf" />
- </linearGradient>
- <linearGradient
- id="linearGradient2690"
- inkscape:collect="always">
- <stop
- id="stop2692"
- offset="0"
- style="stop-color:#2e3436" />
- <stop
- id="stop2694"
- offset="1"
- style="stop-color:#555753" />
- </linearGradient>
- <linearGradient
- id="linearGradient2698">
- <stop
- id="stop2700"
- offset="0"
- style="stop-color:#555753" />
- <stop
- style="stop-color:#a3a5a2;stop-opacity:1;"
- offset="0.70238096"
- id="stop2706" />
- <stop
- id="stop2702"
- offset="1"
- style="stop-color:#888a85" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2609"
- id="radialGradient1409"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-3.294293e-16,1.143443,-1.247217,-1.248581e-6,41.735,-54.25682)"
- cx="45.094624"
- cy="-2.6936908"
- fx="45.094624"
- fy="-2.6936908"
- r="10.498367" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2617"
- id="radialGradient1411"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.928248e-11,-1.686609,1.66336,-1.770202e-15,41.65431,111.7396)"
- cx="59.787472"
- cy="10.901535"
- fx="59.787472"
- fy="10.901535"
- r="10.55559" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2698"
- id="linearGradient1421"
- gradientUnits="userSpaceOnUse"
- x1="81.332451"
- y1="55.106758"
- x2="82.919647"
- y2="53.511261" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2690"
- id="linearGradient1423"
- gradientUnits="userSpaceOnUse"
- x1="81.096306"
- y1="57.148193"
- x2="83.629295"
- y2="54.615208" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4919"
- id="radialGradient4925"
- cx="17.062258"
- cy="28.851427"
- fx="17.062258"
- fy="28.851427"
- r="13.5"
- gradientTransform="matrix(1.459545,-9.027299e-15,-5.118666e-17,1.345339,-7.403138,-10.82184)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4931"
- id="linearGradient4937"
- x1="54.1129"
- y1="12.846775"
- x2="50.079948"
- y2="-3.8813655"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4952"
- id="radialGradient4960"
- cx="16.829521"
- cy="24.743624"
- fx="16.829521"
- fy="24.743624"
- r="16.924615"
- gradientTransform="matrix(2.231289,-0.597872,0.530253,1.979013,-30.74857,-16.49764)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11102"
- id="radialGradient11108"
- cx="8.0402098"
- cy="9.5280285"
- fx="8.0402098"
- fy="9.5280285"
- r="9.8125"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.946826,-1.897043e-16,1.897043e-16,0.946826,0.469351,0.499261)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient15493"
- id="linearGradient17263"
- gradientUnits="userSpaceOnUse"
- x1="19"
- y1="14.875"
- x2="19.65625"
- y2="29"
- gradientTransform="translate(2,-1)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient19900"
- id="linearGradient19906"
- x1="40.25"
- y1="41"
- x2="43.0625"
- y2="38.434578"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1,0)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient19914"
- id="linearGradient19920"
- x1="33.985317"
- y1="32.045906"
- x2="37.211494"
- y2="35.272079"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1,0)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2980"
- id="radialGradient23426"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.34,1.362626e-15,19.89607)"
- cx="28.284271"
- cy="30.145554"
- fx="28.284271"
- fy="30.145554"
- r="13.258252" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2980"
- id="radialGradient23432"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,-4.196543e-16,-3.619011e-17,0.34,1.860387e-15,19.89607)"
- cx="28.284271"
- cy="30.145554"
- fx="28.284271"
- fy="30.145554"
- r="13.258252" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient23434"
- id="linearGradient23440"
- x1="55.878288"
- y1="12.472493"
- x2="52.5"
- y2="-4.6213989"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- inkscape:window-y="98"
- inkscape:window-x="341"
- inkscape:window-height="872"
- inkscape:window-width="929"
- inkscape:document-units="px"
- inkscape:grid-bbox="false"
- showgrid="false"
- inkscape:current-layer="layer5"
- inkscape:cy="25.783692"
- inkscape:cx="32.387389"
- inkscape:zoom="1"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0"
- borderopacity="1"
- bordercolor="#666666"
- pagecolor="#b6b6b6"
- id="base"
- inkscape:showpageshadow="false"
- showborder="false"
- showguides="false"
- inkscape:guide-bbox="true"
- inkscape:grid-points="true"
- gridspacingx="0.5px"
- gridspacingy="0.5px"
- gridempspacing="2"
- fill="#729fcf"
- stroke="#2e3436">
- <sodipodi:guide
- orientation="horizontal"
- position="28"
- id="guide1415" />
- <sodipodi:guide
- orientation="vertical"
- position="19"
- id="guide1417" />
- </sodipodi:namedview>
- <metadata
- id="metadata4">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Find</dc:title>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>document</rdf:li>
- <rdf:li>search</rdf:li>
- <rdf:li>find</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Lapo Calamandrei</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source />
- <dc:contributor>
- <cc:Agent>
- <dc:title>Jakub Steiner</dc:title>
- </cc:Agent>
- </dc:contributor>
- <dc:date>2006-04-21</dc:date>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer6"
- inkscape:label="Shadow" />
- <g
- style="display:inline"
- inkscape:groupmode="layer"
- inkscape:label="Base"
- id="layer1" />
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="Text"
- style="display:inline">
- <g
- transform="translate(-12.26513,47.49999)"
- style="display:inline"
- inkscape:label="base"
- id="g2637" />
- <path
- sodipodi:type="arc"
- style="opacity:0.6;color:#000000;fill:url(#radialGradient4925);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path1425"
- sodipodi:cx="17.5"
- sodipodi:cy="18.25"
- sodipodi:rx="13.5"
- sodipodi:ry="13.75"
- d="M 31 18.25 A 13.5 13.75 0 1 1 4,18.25 A 13.5 13.75 0 1 1 31 18.25 z"
- transform="matrix(1.185185,0,0,1.163637,0.259261,-1.236368)" />
- <path
- style="opacity:0.5;color:#000000;fill:url(#radialGradient4960);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 20.430801,3.5 C 11.914639,3.824042 5.1019281,10.849356 5.1019281,19.444373 C 5.1019281,21.861291 6.5050447,24.166163 7.5932363,26.15625 C 7.1211653,20.728065 9.4598537,19.543069 11.012791,20.025177 C 15.724296,21.487861 23.900134,22.817382 32.299922,18.431707 C 35.244588,16.894246 36.961785,20.661175 36.844126,17.275469 C 35.904686,9.4808807 29.114153,3.5000001 21.046301,3.5 C 20.840021,3.5 20.635189,3.492223 20.430801,3.5 z "
- id="path4939"
- sodipodi:nodetypes="cscsscsc" />
- <path
- transform="matrix(1.6,0,0,1.6,-63,12.8)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2607"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient1411);stroke-width:1.87499988;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.04705882;color:#000000;fill:url(#radialGradient23432);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path23418"
- sodipodi:cx="28.284271"
- sodipodi:cy="30.145554"
- sodipodi:rx="13.258252"
- sodipodi:ry="4.5078058"
- d="M 41.542523 30.145554 A 13.258252 4.5078058 0 1 1 15.026019,30.145554 A 13.258252 4.5078058 0 1 1 41.542523 30.145554 z"
- transform="matrix(0.98756,0.175983,-0.12162,0.682489,11.58742,17.92885)" />
- <g
- transform="matrix(1.544052,0,0,1.536016,-85.57756,-44.44515)"
- id="g2708">
- <path
- style="color:#000000;fill:url(#linearGradient1421);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1423);stroke-width:0.67653471;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 76.796351,49.768459 L 77.443998,53.023634 L 82.625171,58.237128 C 82.817674,58.430832 83.596641,58.55743 84.56811,57.580878 C 85.53958,56.604326 85.463684,55.876998 85.215757,55.627773 L 80.034584,50.419494 L 76.796351,49.768459 z "
- id="path2682"
- sodipodi:nodetypes="cczzzcc" />
- <path
- style="opacity:0.19215686;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 79.567301,51.320041 C 79.564315,51.331245 79.861402,51.644359 79.32201,52.185023 C 78.782611,52.725686 78.314866,52.559011 78.328524,52.545282 L 78.059375,51.023705 L 79.567301,51.320041 z "
- id="path2687"
- sodipodi:nodetypes="csccc" />
- </g>
- <path
- sodipodi:nodetypes="cczzzcc"
- id="path17267"
- d="M 34.284644,33.278595 L 34.90721,36.479814 L 42.406806,44.02859 C 42.77564,44.399843 43.340655,44.246496 44.274502,43.312648 C 45.208352,42.3788 45.449128,41.911353 44.985457,41.44495 L 37.485862,33.90116 L 34.284644,33.278595 z "
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient19906);stroke-width:0.99999934;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- style="opacity:0.15294118;color:#000000;fill:url(#linearGradient19920);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.67653471;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- d="M 32.831928,31.491641 C 32.5721,31.57915 32.424582,31.851686 32.494166,32.115648 L 33.50745,37.1077 C 33.532728,37.199365 33.582796,37.282377 33.652205,37.347702 L 41.613723,45.363786 C 41.970537,45.720948 42.509181,45.825341 43.157775,45.699789 C 43.80637,45.574237 44.570165,45.162961 45.37735,44.355775 C 46.177873,43.555254 46.590458,42.839054 46.728396,42.195753 C 46.866334,41.552451 46.742411,40.963513 46.390634,40.611736 L 38.380865,32.643653 C 38.302123,32.566369 38.200751,32.515947 38.091355,32.499652 L 33.121437,31.491641 C 33.026862,31.464506 32.926503,31.464506 32.831928,31.491641 z "
- id="path19908"
- sodipodi:nodetypes="cccccsssccccc" />
- <path
- transform="matrix(1.65,0,0,1.65,-65.625,12.575)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2605"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient1409);stroke-width:0.60606074;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- transform="matrix(1.75,0,0,1.75,-70.875,12.125)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path2599"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient23440);stroke-width:0.57142824;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- transform="matrix(1.453172,0,0,1.453175,-55.29154,13.46071)"
- d="M 62.5 4.5 A 10 10 0 1 1 42.5,4.5 A 10 10 0 1 1 62.5 4.5 z"
- sodipodi:ry="10"
- sodipodi:rx="10"
- sodipodi:cy="4.5"
- sodipodi:cx="52.5"
- id="path4927"
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4937);stroke-width:0.68814939;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:0.16078431;color:#000000;fill:url(#radialGradient11108);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path11092"
- sodipodi:cx="12.375"
- sodipodi:cy="12.9375"
- sodipodi:rx="9.8125"
- sodipodi:ry="9.8125"
- d="M 22.1875 12.9375 A 9.8125 9.8125 0 1 1 2.5625,12.9375 A 9.8125 9.8125 0 1 1 22.1875 12.9375 z"
- transform="matrix(1.324842,0,0,1.324842,4.605084,2.859861)" />
- <g
- id="g1399"
- style="opacity:0.76078431"
- transform="translate(-2.905726e-7,1)">
- <path
- sodipodi:nodetypes="ccccc"
- id="rect8466"
- d="M 12.5,16.5 L 12.5,21.5 L 29.5,21.5 L 29.5,16.5 L 12.5,16.5 z "
- style="opacity:1;color:#000000;fill:url(#linearGradient17263);fill-opacity:1;fill-rule:nonzero;stroke:#3465a4;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- <path
- sodipodi:nodetypes="ccccc"
- id="rect12861"
- d="M 13.5,17.5 L 13.5,20.5 L 28.5,20.5 L 28.5,17.5 L 13.5,17.5 z "
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
- </g>
- <path
- sodipodi:type="arc"
- style="opacity:0.072;color:#000000;fill:url(#radialGradient23426);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
- id="path2970"
- sodipodi:cx="28.284271"
- sodipodi:cy="30.145554"
- sodipodi:rx="13.258252"
- sodipodi:ry="4.5078058"
- d="M 41.542523 30.145554 A 13.258252 4.5078058 0 1 1 15.026019,30.145554 A 13.258252 4.5078058 0 1 1 41.542523 30.145554 z"
- transform="matrix(1.585832,0,0,1.204644,-19.35411,4.31756)" />
- </g>
-</svg>
diff --git a/navit/icons/gui_zoom_route.svg b/navit/icons/gui_zoom_route.svg
deleted file mode 100644
index c7958a2f5..000000000
--- a/navit/icons/gui_zoom_route.svg
+++ /dev/null
@@ -1,614 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- inkscape:export-ydpi="240.00000"
- inkscape:export-xdpi="240.00000"
- inkscape:export-filename="/home/jimmac/gfx/novell/pdes/trunk/docs/BIGmime-text.png"
- sodipodi:docname="gui_zoom_route.svg"
- inkscape:version="0.91 r13725"
- sodipodi:version="0.32"
- id="svg249"
- height="48px"
- width="48px"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.1">
- <title
- id="title3502">gui_zoom_route</title>
- <defs
- id="defs3">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient23434">
- <stop
- style="stop-color:#2e3436"
- offset="0"
- id="stop23436" />
- <stop
- style="stop-color:#555753"
- offset="1"
- id="stop23438" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient19914">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop19916" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop19918" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient19900">
- <stop
- style="stop-color:#888a85"
- offset="0"
- id="stop19902" />
- <stop
- style="stop-color:#d3d7cf"
- offset="1"
- id="stop19904" />
- </linearGradient>
- <linearGradient
- id="linearGradient15493">
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0"
- id="stop15495" />
- <stop
- style="stop-color:#ffffff;stop-opacity:1"
- offset="1"
- id="stop15497" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient11102">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop11104" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop11106" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4952">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4954" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop4956" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4931">
- <stop
- style="stop-color:#babdb6;stop-opacity:1;"
- offset="0"
- id="stop4933" />
- <stop
- style="stop-color:#888a85"
- offset="1"
- id="stop4935" />
- </linearGradient>
- <linearGradient
- id="linearGradient4919">
- <stop
- style="stop-color:#429eff;stop-opacity:1;"
- offset="0"
- id="stop4921" />
- <stop
- style="stop-color:#0044a7;stop-opacity:1;"
- offset="1"
- id="stop4923" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2980">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop2982" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop2984" />
- </linearGradient>
- <linearGradient
- id="linearGradient2609"
- inkscape:collect="always">
- <stop
- id="stop2611"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1" />
- <stop
- id="stop2613"
- offset="1"
- style="stop-color:#eeeeec" />
- </linearGradient>
- <linearGradient
- id="linearGradient2617">
- <stop
- id="stop2619"
- offset="0"
- style="stop-color:#fbfbfa;stop-opacity:1;" />
- <stop
- id="stop2621"
- offset="1"
- style="stop-color:#d3d7cf" />
- </linearGradient>
- <linearGradient
- id="linearGradient2690"
- inkscape:collect="always">
- <stop
- id="stop2692"
- offset="0"
- style="stop-color:#2e3436" />
- <stop
- id="stop2694"
- offset="1"
- style="stop-color:#555753" />
- </linearGradient>
- <linearGradient
- id="linearGradient2698">
- <stop
- id="stop2700"
- offset="0"
- style="stop-color:#555753" />
- <stop
- style="stop-color:#a3a5a2;stop-opacity:1;"
- offset="0.70238096"
- id="stop2706" />
- <stop
- id="stop2702"
- offset="1"
- style="stop-color:#888a85" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2609"
- id="radialGradient1409"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-3.294293e-16,1.143443,-1.247217,-1.248581e-6,41.735,-54.25682)"
- cx="45.094624"
- cy="-2.6936908"
- fx="45.094624"
- fy="-2.6936908"
- r="10.498367" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2617"
- id="radialGradient1411"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.928248e-11,-1.686609,1.66336,-1.770202e-15,41.65431,111.7396)"
- cx="59.787472"
- cy="10.901535"
- fx="59.787472"
- fy="10.901535"
- r="10.55559" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2698"
- id="linearGradient1421"
- gradientUnits="userSpaceOnUse"
- x1="81.332451"
- y1="55.106758"
- x2="82.919647"
- y2="53.511261" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2690"
- id="linearGradient1423"
- gradientUnits="userSpaceOnUse"
- x1="81.096306"
- y1="57.148193"
- x2="83.629295"
- y2="54.615208" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4919"
- id="radialGradient4925"
- cx="17.062258"
- cy="28.851427"
- fx="17.062258"
- fy="28.851427"
- r="13.5"
- gradientTransform="matrix(1.459545,-9.027299e-15,-5.118666e-17,1.345339,-7.403138,-10.82184)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4931"
- id="linearGradient4937"
- x1="54.1129"
- y1="12.846775"
- x2="50.079948"
- y2="-3.8813655"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4952"
- id="radialGradient4960"
- cx="16.829521"
- cy="24.743624"
- fx="16.829521"
- fy="24.743624"
- r="16.924615"
- gradientTransform="matrix(2.231289,-0.597872,0.530253,1.979013,-30.74857,-16.49764)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient11102"
- id="radialGradient11108"
- cx="8.0402098"
- cy="9.5280285"
- fx="8.0402098"
- fy="9.5280285"
- r="9.8125"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.946826,-1.897043e-16,1.897043e-16,0.946826,0.469351,0.499261)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient19900"
- id="linearGradient19906"
- x1="40.25"
- y1="41"
- x2="43.0625"
- y2="38.434578"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1,0)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient19914"
- id="linearGradient19920"
- x1="33.985317"
- y1="32.045906"
- x2="37.211494"
- y2="35.272079"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-1,0)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2980"
- id="radialGradient23426"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.34,1.362626e-15,19.89607)"
- cx="28.284271"
- cy="30.145554"
- fx="28.284271"
- fy="30.145554"
- r="13.258252" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2980"
- id="radialGradient23432"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,-4.196543e-16,-3.619011e-17,0.34,1.860387e-15,19.89607)"
- cx="28.284271"
- cy="30.145554"
- fx="28.284271"
- fy="30.145554"
- r="13.258252" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient23434"
- id="linearGradient23440"
- x1="55.878288"
- y1="12.472493"
- x2="52.5"
- y2="-4.6213989"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7336"
- id="linearGradient2256"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.00335137,-1.2954112,1.6105612,-0.00269557,16.181036,101.65038)"
- x1="11.002116"
- y1="29.756582"
- x2="46.998974"
- y2="29.756582" />
- <linearGradient
- id="linearGradient7336">
- <stop
- id="stop7338"
- offset="0"
- style="stop-color: rgb(236, 192, 92); stop-opacity: 1;" />
- <stop
- style="stop-color: rgb(215, 183, 86); stop-opacity: 1;"
- offset="0.19283746"
- id="stop7340" />
- <stop
- id="stop4206"
- offset="0.63636363"
- style="stop-color: rgb(226, 203, 144); stop-opacity: 1;" />
- <stop
- id="stop7342"
- offset="1"
- style="stop-color: rgb(242, 235, 160); stop-opacity: 1;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3289"
- id="linearGradient2258"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.00753116,-1.2954,1.61055,-0.00605749,16.302686,101.75013)"
- x1="36.880539"
- y1="20.811714"
- x2="23.073864"
- y2="43.531128" />
- <linearGradient
- id="linearGradient3289">
- <stop
- style="stop-color: rgb(255, 255, 142); stop-opacity: 1;"
- offset="0"
- id="stop3291" />
- <stop
- style="stop-color: rgb(255, 255, 255); stop-opacity: 0.533898;"
- offset="1"
- id="stop3293" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- inkscape:window-y="0"
- inkscape:window-x="0"
- inkscape:window-height="874"
- inkscape:window-width="1440"
- inkscape:document-units="px"
- inkscape:grid-bbox="false"
- showgrid="false"
- inkscape:current-layer="layer5"
- inkscape:cy="25.827191"
- inkscape:cx="19.323682"
- inkscape:zoom="11.313709"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0"
- borderopacity="1"
- bordercolor="#666666"
- pagecolor="#b6b6b6"
- id="base"
- inkscape:showpageshadow="false"
- showborder="false"
- showguides="false"
- inkscape:guide-bbox="true"
- inkscape:grid-points="true"
- fill="#729fcf"
- stroke="#2e3436"
- inkscape:window-maximized="1">
- <sodipodi:guide
- orientation="horizontal"
- position="28"
- id="guide1415" />
- <sodipodi:guide
- orientation="vertical"
- position="19"
- id="guide1417" />
- <inkscape:grid
- id="GridFromPre046Settings"
- type="xygrid"
- originx="0px"
- originy="0px"
- spacingx="0.5px"
- spacingy="0.5px"
- color="#3f3fff"
- empcolor="#3f3fff"
- opacity="0.15"
- empopacity="0.38"
- empspacing="2" />
- </sodipodi:namedview>
- <metadata
- id="metadata4">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>gui_zoom_route</dc:title>
- <dc:subject>
- <rdf:Bag />
- </dc:subject>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- <dc:creator>
- <cc:Agent>
- <dc:title>jfitie@gmail.com</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:source />
- <dc:contributor>
- <cc:Agent>
- <dc:title />
- </cc:Agent>
- </dc:contributor>
- <dc:date>2017</dc:date>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer6"
- inkscape:label="Shadow"
- style="display:inline" />
- <g
- style="display:inline"
- inkscape:groupmode="layer"
- inkscape:label="Base"
- id="layer1" />
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="Text"
- style="display:inline">
- <g
- transform="translate(-12.26513,47.49999)"
- style="display:inline"
- inkscape:label="base"
- id="g2637" />
- <ellipse
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:url(#radialGradient4925);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- id="path1425"
- cx="17.5"
- cy="18.25"
- rx="13.5"
- ry="13.75"
- transform="matrix(1.185185,0,0,1.163637,0.259261,-1.236368)" />
- <circle
- id="path2607"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient1411);stroke-width:1.87499988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- cx="52.5"
- cy="4.5"
- r="10"
- transform="matrix(1.6,0,0,1.6,-63,12.8)" />
- <ellipse
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.04705882;fill:url(#radialGradient23432);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- id="path23418"
- transform="matrix(0.98756,0.175983,-0.12162,0.682489,11.58742,17.92885)"
- cx="28.284271"
- cy="30.145554"
- rx="13.258252"
- ry="4.5078058" />
- <g
- transform="matrix(1.544052,0,0,1.536016,-85.57756,-44.44515)"
- id="g2708">
- <path
- style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient1421);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1423);stroke-width:0.67653471;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- d="m 76.796351,49.768459 0.647647,3.255175 5.181173,5.213494 c 0.192503,0.193704 0.97147,0.320302 1.942939,-0.65625 0.97147,-0.976552 0.895574,-1.70388 0.647647,-1.953105 l -5.181173,-5.208279 -3.238233,-0.651035 z"
- id="path2682"
- sodipodi:nodetypes="cczzzcc"
- inkscape:connector-curvature="0" />
- <path
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.19215686;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- d="m 79.567301,51.320041 c -0.003,0.0112 0.294101,0.324318 -0.245291,0.864982 -0.539399,0.540663 -1.007144,0.373988 -0.993486,0.360259 l -0.269149,-1.521577 1.507926,0.296336 z"
- id="path2687"
- sodipodi:nodetypes="csccc"
- inkscape:connector-curvature="0" />
- </g>
- <path
- sodipodi:nodetypes="cczzzcc"
- id="path17267"
- d="m 34.284644,33.278595 0.622566,3.201219 7.499596,7.548776 c 0.368834,0.371253 0.933849,0.217906 1.867696,-0.715942 0.93385,-0.933848 1.174626,-1.401295 0.710955,-1.867698 l -7.499595,-7.54379 -3.201218,-0.622565 z"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient19906);stroke-width:0.99999934;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.15294118;fill:url(#linearGradient19920);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.67653471;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- d="m 32.831928,31.491641 c -0.259828,0.08751 -0.407346,0.360045 -0.337762,0.624007 L 33.50745,37.1077 c 0.02528,0.09166 0.07535,0.174677 0.144755,0.240002 l 7.961518,8.016084 c 0.356814,0.357162 0.895458,0.461555 1.544052,0.336003 0.648595,-0.125552 1.41239,-0.536828 2.219575,-1.344014 0.800523,-0.800521 1.213108,-1.516721 1.351046,-2.160022 0.137938,-0.643302 0.01402,-1.23224 -0.337762,-1.584017 l -8.009769,-7.968083 c -0.07874,-0.07728 -0.180114,-0.127706 -0.28951,-0.144001 l -4.969918,-1.008011 c -0.09457,-0.02714 -0.194934,-0.02714 -0.289509,0 z"
- id="path19908"
- sodipodi:nodetypes="cccccsssccccc"
- inkscape:connector-curvature="0" />
- <circle
- id="path2605"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient1409);stroke-width:0.60606074;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- cx="52.5"
- cy="4.5"
- r="10"
- transform="matrix(1.65,0,0,1.65,-65.625,12.575)" />
- <circle
- id="path2599"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient23440);stroke-width:0.57142824;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- cx="52.5"
- cy="4.5"
- r="10"
- transform="matrix(1.75,0,0,1.75,-70.875,12.125)" />
- <ellipse
- id="path4927"
- style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient4937);stroke-width:0.68814939;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- cx="52.5"
- cy="4.5"
- transform="matrix(1.453172,0,0,1.453175,-55.29154,13.46071)"
- r="10" />
- <circle
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.16078431;fill:url(#radialGradient11108);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- id="path11092"
- cx="12.375"
- cy="12.9375"
- r="9.8125"
- transform="matrix(1.324842,0,0,1.324842,4.605084,2.859861)" />
- <ellipse
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.072;fill:url(#radialGradient23426);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- id="path2970"
- cx="28.284271"
- cy="30.145554"
- rx="13.258252"
- ry="4.5078058"
- transform="matrix(1.585832,0,0,1.204644,-19.35411,4.31756)" />
- <g
- id="g2247"
- transform="matrix(0.4192022,0,0,0.4192022,-6.197357,-7.3085586)">
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="path6459"
- d="M 45.389306,86.701477 C 34.824265,74.824205 48.435181,53.480282 45.272019,41.36619 l 40.428815,-0.06767 c 4.87026,11.662373 -10.167111,31.886517 0.117285,45.335287 l -40.428813,0.06766 z"
- style="display:block;overflow:visible;visibility:visible;fill:url(#linearGradient2256);fill-opacity:1;fill-rule:evenodd;stroke:#c58839;stroke-width:2.59699869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="path16506"
- d="M 46.174303,85.812209 C 36.888621,75.513321 49.122807,54.275725 46.726999,42.364253 l 37.99609,-0.136813 c 3.896667,8.939411 -9.233341,29.918513 -0.840131,43.361978 l -37.708655,0.222791 z"
- style="display:block;overflow:visible;visibility:visible;opacity:0.62921298;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2258);stroke-width:1.1234138;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cszz"
- id="path3216"
- d="m 49.79095,82.968742 c 2.355601,-8.555149 2.486847,-10.339514 6.375488,-14.651707 3.451705,-3.827665 14.432477,-4.3559 17.81581,-8.373742 3.383334,-4.017843 3.63953,-7.663543 4.290586,-15.38951"
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0070c6;stroke-width:3.53917122;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <g
- transform="matrix(0.5944238,-0.1564125,0.1444815,0.6435113,43.323809,43.074772)"
- id="g3551">
- <path
- inkscape:connector-curvature="0"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc0000;fill-opacity:1;fill-rule:nonzero;stroke:#cc0000;stroke-width:2.58923006;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
- id="path2565"
- d="m 11.318692,9.2240568 c 5.323305,5.4689902 11.450555,9.8995942 17.891972,13.7070482 l -1.769096,1.228738 C 21.101863,20.04489 15.052508,15.498993 9.1840818,10.652117 L 11.318692,9.2240568 Z" />
- <path
- inkscape:connector-curvature="0"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#cc0000;fill-opacity:1;fill-rule:nonzero;stroke:#cc0000;stroke-width:2.58923006;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
- id="path2575"
- d="M 26.73892,8.9210568 C 21.867631,15.95255 15.247359,21.081199 7.9065151,25.28163 L 10.087564,23.520856 C 8.7241111,24.379297 25.574485,11.804168 23.852075,10.207903 L 26.73892,8.9210568 Z" />
- </g>
- <path
- inkscape:connector-curvature="0"
- id="path2473"
- d="m 74.627177,81.489386 -6.429011,-3.403962 -3.26204,-4.487647 -4.169829,-4.700611 -1.97294,-5.310836 -0.520132,-5.77966 0,0"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:3, 9;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
- <path
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:url(#radialGradient4960);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
- d="M 20.430801,3.5 C 11.914639,3.824042 5.1019281,10.849356 5.1019281,19.444373 c 0,2.416918 1.4031166,4.72179 2.4913082,6.711877 -0.472071,-5.428185 1.8666174,-6.613181 3.4195547,-6.131073 4.711505,1.462684 12.887343,2.792205 21.287131,-1.59347 2.944666,-1.537461 4.661863,2.229468 4.544204,-1.156238 C 35.904686,9.4808807 29.114153,3.5000001 21.046301,3.5 c -0.20628,0 -0.411112,-0.00778 -0.6155,0 z"
- id="path4939"
- sodipodi:nodetypes="cscsscsc"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/heliport.svg b/navit/icons/heliport.svg
deleted file mode 100644
index b80e2692f..000000000
--- a/navit/icons/heliport.svg
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- width="22"
- height="22"
- id="svg2"
- inkscape:version="0.91 r13725"
- sodipodi:docname="heliport.svg">
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- pagecolor="#ffff8a"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1291"
- inkscape:window-height="871"
- id="namedview5"
- showgrid="false"
- inkscape:zoom="5.2149125"
- inkscape:cx="65.025422"
- inkscape:cy="43.302771"
- inkscape:window-x="141"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="svg2" />
- <defs
- id="defs6" />
- <g
- id="g3517"
- transform="matrix(0.20416148,0,0,0.20416238,0.7253889,1.4235293)">
- <g
- transform="translate(115.82169,-51.391083)"
- id="g3502">
- <path
- d="m -104.58203,72.339844 c -12.26981,0.204726 -19.17915,17.435869 -10.19531,25.960937 7.87762,9.458789 25.762517,3.919209 26.585934,-8.49414 1.479958,-9.369267 -6.93606,-18.324647 -16.390624,-17.466797 z"
- id="circle3336-6"
- inkscape:connector-curvature="0"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- style="fill:#ffffff;stroke:#ffffff"
- d="m -104.06641,76.660156 c -10.04753,0.117184 -13.87032,15.745452 -4.87109,20.369141 8.14724,5.915033 20.509528,-4.536148 15.9375,-13.541016 -1.708904,-4.382542 -6.406237,-7.187374 -11.06641,-6.828125 z"
- id="circle3338-7"
- inkscape:connector-curvature="0" />
- <path
- d="m -104.02148,80.158203 c -8.13471,0.02954 -9.54123,13.52155 -1.49024,15.095703 7.920684,3.050845 13.830836,-9.89553 6.312501,-13.865234 -1.416461,-0.937974 -3.137221,-1.320513 -4.822261,-1.230469 z"
- id="circle3340-5"
- inkscape:connector-curvature="0"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0.20561387"
- d="m -36.146484,80.085938 c -15.18587,1.163541 -30.598889,-0.556602 -45.794922,0.591796 -5.554134,2.227064 -3.480238,9.487647 -0.554688,13.0625 4.460769,8.073136 5.915501,18.481506 12.808594,24.863286 6.951217,3.31061 14.79146,0.0206 22.103436,1.14754 11.087124,-0.36385 22.572212,1.1515 33.418048,-0.78231 5.671764,-4.26007 -0.06204,-11.02798 -1.794922,-15.63867 -4.444886,-7.027209 -4.884592,-17.259907 -12.208984,-22.091799 -2.504656,-1.078915 -5.283331,-1.265962 -7.976562,-1.152343 z"
- id="path3342-3"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0.20561387"
- d="m -36.185547,84.699219 c -9.692025,1.091642 -19.701293,-1.002276 -29.259765,0.757812 -4.700298,2.736109 -1.395217,8.597689 0.599609,11.935547 1.351757,5.071922 6.405423,8.755702 11.650391,7.146482 9.711046,-0.48709 19.978838,1.37835 29.339843,-0.97461 4.622942,-4.211212 -1.020041,-9.416596 -2.472656,-13.509762 -1.14077,-4.372707 -5.830927,-5.777287 -9.857422,-5.355469 z"
- id="path3344-5"
- inkscape:connector-curvature="0" />
- <path
- d="m -68.099609,67.603516 c -9.798221,0.803351 -19.943673,-0.929454 -29.613282,0.652343 -6.150159,2.658763 -3.450489,13.538013 3.505134,12.13573 10.02674,-0.764705 20.71005,1.817263 30.350335,-1.264636 4.847928,-3.453472 1.621929,-11.948246 -4.242187,-11.523437 z"
- id="path3346-6"
- inkscape:connector-curvature="0"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- d="m -20.0625,67.703125 c -9.807281,0.809179 -19.964809,-0.931482 -29.642578,0.65625 -6.127329,2.659116 -3.470551,13.487431 3.470303,12.143595 9.997788,-0.675519 20.563348,1.591918 30.223056,-1.149454 5.019582,-3.36761 1.92097,-12.041213 -4.050781,-11.650391 z"
- id="path3348-2"
- inkscape:connector-curvature="0"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- d="m -71.392578,71.052734 c -0.929526,3.718373 0.908228,8.454183 5.414062,8.144532 4.730009,0.01087 9.480562,-1.252385 14.015625,0.474609 4.862602,1.14452 11.421345,-5.545086 6.671875,-9.476563 -6.300142,-2.920039 -13.869305,-0.199133 -20.568359,-1.142578 -1.851958,0.645413 -6.759309,-1.627682 -5.533203,2 z"
- id="rect3350-9"
- inkscape:connector-curvature="0"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- d="m -54.246094,70.371094 c -3.191536,-0.309008 -10.162755,-1.373939 -9.363281,4.007812 0.06811,9.911518 0.01008,19.836983 0.0293,29.753904 4.553033,2.33355 11.786436,1.01982 12.015625,-5.062498 0.192677,-9.798116 -0.344459,-19.643168 -0.109375,-29.466796 -0.857422,0.255859 -1.714844,0.511718 -2.572266,0.767578 z"
- id="rect3352-1"
- inkscape:connector-curvature="0"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- d="m -45.896484,83.277344 c -3.896546,-0.397378 -7.115721,3.249552 -5.460938,7.015625 0.05752,4.708855 -2.989848,13.415231 3.5625,15.230471 3.911193,1.55682 8.693817,-1.09075 8.101563,-5.669924 -0.343603,-4.304045 -0.6346,-8.357677 0.203125,-12.552735 -0.429083,-2.966176 -3.775921,-4.133289 -6.40625,-4.023437 z"
- id="rect3354-2"
- inkscape:connector-curvature="0"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- d="m -34.300781,82.746094 c -4.676,-0.01654 -6.511432,4.859779 -5.517578,8.828125 0.236759,4.708835 -2.13808,12.507851 3.214843,14.845701 4.646576,2.00115 9.238046,-2.22766 8.53711,-6.984373 -1.185198,-4.736808 2.018908,-9.944615 -0.921875,-14.208985 -1.238046,-1.62054 -3.280498,-2.553483 -5.3125,-2.480468 z"
- id="rect3356-7"
- inkscape:connector-curvature="0"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0.20561387"
- d="m -102.10547,80.228516 c -7.2033,0.586202 -9.04622,12.909643 -2.53125,15.564453 9.539611,4.511931 19.888308,7.089741 29.406251,11.763671 5.091679,1.45424 10.748325,6.08389 15.919922,3.66211 5.607501,-4.4815 3.052277,-12.741308 5.839844,-18.65625 1.680666,-4.445361 1.269823,-11.879406 -4.898438,-12.125 -14.579131,0.134463 -29.158509,-0.08746 -43.736329,-0.208984 z"
- id="path3358-0"
- inkscape:connector-curvature="0" />
- <path
- d="m -23.318359,119.93555 c -16.675873,1.0093 -33.567057,-0.37599 -50.242188,0.59961 -7.872507,1.88124 -7.518196,15.59888 0.946351,15.96044 17.04978,1.0318 34.162794,0.0318 51.217712,0.44971 7.194474,0.35891 11.7036092,-9.48357 6.039062,-14.25586 -2.12887,-1.95334 -5.097084,-2.88727 -7.960937,-2.7539 z"
- id="path3360-9"
- inkscape:connector-curvature="0"
- style="fill:#ffffff;stroke:#ffffff" />
- </g>
- <g
- transform="matrix(0.20561387,0,0,0.20561387,0.23544471,19.985833)"
- id="g3368">
- <circle
- cx="55.5"
- cy="78"
- r="55.5"
- id="circle3336" />
- <circle
- style="fill:#ffffff"
- cx="57"
- cy="77.5"
- r="34"
- id="circle3338" />
- <circle
- cx="56"
- cy="78.5"
- r="18"
- id="circle3340" />
- <path
- style="stroke:#ffffff"
- inkscape:connector-curvature="0"
- d="m 423.916,73.5 c -2.97,-6.627 -10.783,-12 -17.452,-12 l -236.476,0 c -6.668,0 -9.667,5.373 -6.698,12 l 57.795,129 c 2.969,6.627 10.782,12 17.452,12 l 236.475,0 c 6.668,0 9.668,-5.373 6.699,-12 l -57.795,-129 z"
- id="path3342" />
- <path
- style="fill:#ffffff;stroke:#000000"
- inkscape:connector-curvature="0"
- d="m 408.512,87.97 c -1.215,-2.468 -5.534,-4.47 -9.645,-4.47 l -145.781,0 c -4.11,0 -6.459,2.002 -5.244,4.47 l 23.647,48.06 c 1.215,2.468 5.533,4.47 9.645,4.47 l 145.78,0 c 4.111,0 6.458,-2.002 5.245,-4.47 L 408.512,87.97 Z"
- id="path3344" />
- <path
- inkscape:connector-curvature="0"
- d="M 240.5,11.5 C 240.5,17.851 235.351,23 229,23 L 97,23 C 90.649,23 85.5,17.851 85.5,11.5 l 0,0 C 85.5,5.149 90.649,0 97,0 l 132,0 c 6.351,0 11.5,5.149 11.5,11.5 l 0,0 z"
- id="path3346" />
- <path
- inkscape:connector-curvature="0"
- d="m 319,12 c 0,6.351 5.148,11.5 11.5,11.5 l 132,0 c 6.352,0 11.5,-5.149 11.5,-11.5 l 0,0 C 474,5.649 468.852,0.5 462.5,0.5 l -132,0 C 324.148,0.5 319,5.649 319,12 l 0,0 z"
- id="path3348" />
- <rect
- x="231"
- y="6.5"
- width="95"
- height="9"
- id="rect3350" />
- <rect
- x="269"
- y="12.5"
- width="19"
- height="128"
- id="rect3352" />
- <rect
- x="327"
- y="77.5"
- width="18"
- height="68"
- id="rect3354" />
- <rect
- x="384"
- y="75.5"
- width="18"
- height="73"
- id="rect3356" />
- <path
- style="stroke:#000000"
- inkscape:connector-curvature="0"
- d="m 265.596,166.786 c -1.57,8.089 -7.385,12.763 -12.986,10.446 -64.097,-26.422 -128.608,-51.793 -193.289,-76.75 -5.631,-2.169 -9.813,-5.898 -9.34,-8.332 2.11,-10.872 3.167,-16.307 5.277,-27.179 0.473,-2.434 5.745,-4.326 11.778,-4.231 69.32,1.053 138.638,1.655 207.965,1.129 6.063,-0.053 9.707,6.453 8.136,14.547 -5.848,30.124 -11.695,60.247 -17.541,90.37 z"
- id="path3358" />
- <path
- inkscape:connector-curvature="0"
- d="m 477,276.5 c 0,11.598 -9.402,21 -21,21 l -243,0 c -11.598,0 -21,-9.402 -21,-21 l 0,0 c 0,-11.598 9.402,-21 21,-21 l 243,0 c 11.598,0 21,9.402 21,21 l 0,0 z"
- id="path3360" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/highway_exit.xpm b/navit/icons/highway_exit.xpm
deleted file mode 100644
index 7d433052f..000000000
--- a/navit/icons/highway_exit.xpm
+++ /dev/null
@@ -1,65 +0,0 @@
-/* XPM */
-static char * highway_exit_xpm[] = {
-"16 16 46 1",
-" c None",
-". c #035E9F",
-"+ c #77A8CB",
-"@ c #D4E3EE",
-"# c #337CB1",
-"$ c #CFE0EC",
-"% c #4688B8",
-"& c #8DB6D3",
-"* c #A5C5DC",
-"= c #488AB9",
-"- c #4588B8",
-"; c #B0CDE1",
-"> c #8EB7D4",
-", c #DEEAF2",
-"' c #5C97C1",
-") c #5592BE",
-"! c #7EACCE",
-"~ c #E6EFF5",
-"{ c #F5F8FB",
-"] c #2E79AF",
-"^ c #FFFFFF",
-"/ c #166AA6",
-"( c #EAF1F7",
-"_ c #8CB5D3",
-": c #2674AC",
-"< c #83B0CF",
-"[ c #76A7CB",
-"} c #5894BF",
-"| c #FEFEFE",
-"1 c #1469A5",
-"2 c #0A63A2",
-"3 c #74A6CA",
-"4 c #EFF4F8",
-"5 c #3880B3",
-"6 c #EEF4F8",
-"7 c #72A5C9",
-"8 c #CADDEB",
-"9 c #ACCADF",
-"0 c #2272AB",
-"a c #3C82B4",
-"b c #3B81B4",
-"c c #045F9F",
-"d c #196CA7",
-"e c #1B6DA8",
-"f c #367EB2",
-"g c #1C6EA8",
-"................",
-"................",
-"................",
-"................",
-"................",
-"................",
-"+@@@#$%&*=@-@@@;",
-">,').!~{])^/](_:",
-">~<[.}|~1)^2.~3.",
-">4;;56789)^2.~3.",
-"0aaa:bcdaeac.fg.",
-"................",
-"................",
-"................",
-"................",
-"................"};
diff --git a/navit/icons/hindu.svg b/navit/icons/hindu.svg
deleted file mode 100644
index b35787c36..000000000
--- a/navit/icons/hindu.svg
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="hindu.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="12.265183"
- inkscape:cy="9.2991142"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="14.746834"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2466"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3333"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3401"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3464"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3581"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4312"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327"
- transform="matrix(0.04126806,0,0,0.04126806,0,4.2610674e-4)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <path
- d="M 9.1238337,23.441351 C 7.8477971,23.108366 6.7447067,22.44177 5.7074331,21.376823 4.055224,19.680536 3.1528084,17.865159 2.6184316,15.162715 2.3136445,13.62135 2.3131265,13.583834 2.593806,13.378595 c 0.5749754,-0.420433 0.8022344,-0.268921 0.9951127,0.663434 1.0051932,4.85899 4.1541207,8.017727 7.2174343,7.239921 0.91361,-0.231975 1.785205,-1.10905 2.047398,-2.060273 0.338075,-1.226516 -0.257504,-3.345992 -1.292776,-4.600585 l -0.367916,-0.445856 -0.621927,0.640851 c -0.6576981,0.677714 -1.4682345,1.23631 -1.7952884,1.237255 -0.1966514,5.7e-4 -1.0944909,-1.815434 -1.0944909,-2.213756 0,-0.116651 0.4270502,-0.407333 0.9490008,-0.645956 1.4647525,-0.669654 2.0878005,-1.42392 2.0878005,-2.527507 0,-0.7182032 -0.126612,-0.9686502 -0.61822,-1.2228705 C 9.4669298,9.1159133 8.4129364,9.1718963 7.1355273,9.6007087 6.5135832,9.80949 5.9691362,9.9803094 5.9256458,9.9803094 c -0.1119413,0 -0.977413,-1.9586073 -0.977413,-2.2119349 0,-0.4345862 0.938654,-0.7316052 2.5053606,-0.7927736 1.4369272,-0.056101 1.5630601,-0.0358 2.3507441,0.3783613 0.9899405,0.5205083 1.7259115,1.4217443 2.0487225,2.5087676 0.263286,0.8865792 0.301178,2.0407052 0.08562,2.6076782 -0.229582,0.603842 0.0624,0.608534 0.841902,0.01353 0.851707,-0.650121 1.427829,-0.904898 2.363539,-1.045216 0.674691,-0.101176 0.707982,-0.130614 0.892326,-0.789023 0.439997,-1.5715153 1.605418,-2.4991565 3.167583,-2.5213068 1.166152,-0.016536 1.821767,0.2232322 2.494652,0.9123291 0.888294,0.909695 1.206425,2.0078487 1.283915,4.4319097 0.09619,3.008898 -0.307912,4.635221 -1.484775,5.975596 -1.014424,1.155364 -2.610173,1.582386 -3.8552,1.031653 -1.050712,-0.464781 -1.327873,-1.185969 -1.448472,-3.768971 -0.07747,-1.659297 -0.14203,-2.05395 -0.378783,-2.315559 -0.366339,-0.404801 -0.591328,-0.395462 -1.581879,0.06566 l -0.812107,0.378057 0.32589,0.493541 c 2.117165,3.206296 1.678756,6.697651 -0.989215,7.877822 -0.840215,0.371666 -2.653365,0.486874 -3.6342183,0.230918 z M 20.097414,18.027585 c 1.094646,-0.667407 1.819494,-2.543381 1.660447,-4.297385 -0.103959,-1.146483 -0.771382,-2.497882 -1.45828,-2.95273 -0.929948,-0.615791 -2.207337,-0.413084 -3.044665,0.48315 l -0.371956,0.398125 0.291844,0.489382 c 0.242841,0.40721 0.299938,0.846321 0.340047,2.615143 0.05632,2.483582 0.07945,2.63016 0.499345,3.16397 0.400247,0.508832 1.339072,0.554053 2.083218,0.100345 z M 12.541052,7.7531193 C 12.165698,7.6217964 11.573924,7.3184939 11.225999,7.0791149 10.531288,6.6011419 9.1997533,5.1532325 9.1997533,4.8757795 c 0,-0.09622 0.1749106,-0.28955 0.3886895,-0.4296237 0.3804842,-0.2493032 0.4016736,-0.24295 1.0037292,0.3009713 0.797823,0.7207843 1.533102,1.0211386 2.505068,1.0233003 0.87086,0.00193 1.919632,-0.5027978 2.452581,-1.1803319 0.164273,-0.208839 0.349806,-0.3797062 0.412297,-0.3797062 0.120868,0 1.736317,1.3291795 1.933574,1.5909321 0.190164,0.2523369 -1.384944,1.567404 -2.277178,1.9012334 -0.964932,0.3610266 -2.13514,0.3802538 -3.077462,0.050565 z m 0.05339,-3.3958434 C 12.188825,3.9301607 11.837907,3.5285866 11.814628,3.464888 11.791348,3.4011899 12.12215,3.0218281 12.549747,2.6218632 l 0.777445,-0.7272089 0.808665,0.7986209 c 0.444766,0.4392411 0.772051,0.874872 0.727299,0.9680667 -0.04475,0.093196 -0.407581,0.462635 -0.806288,0.8209775 L 13.331944,5.1338477 12.594448,4.3572759 z"
- id="path1873"
- sodipodi:nodetypes="csssssscccsssssssssssssssssssssscccsccsscccssccsssssssssccscccsccc"
- style="opacity:0.25;fill:#ffffff;fill-opacity:0"
- inkscape:connector-curvature="0" />
- <path
- d="M 7.4731111,21.790628 C 6.1970745,21.457643 5.0939842,20.791047 4.0567105,19.726101 2.4045013,18.029813 1.5020859,16.214437 0.96770904,13.511993 0.66292197,11.970627 0.66240398,11.933112 0.94308343,11.727873 1.5180589,11.30744 1.7453179,11.458952 1.9381961,12.391307 c 1.0051931,4.858989 4.1541207,8.017727 7.2174342,7.239921 0.9136107,-0.231976 1.7852047,-1.109051 2.0473987,-2.060273 0.338074,-1.226517 -0.257504,-3.345992 -1.2927771,-4.600586 L 9.5423369,12.524513 8.9204098,13.165365 C 8.2627116,13.843078 7.452175,14.401675 7.125121,14.40262 6.9284697,14.403189 6.0306301,12.587185 6.0306301,12.188864 c 0,-0.116651 0.4270501,-0.407333 0.9490009,-0.645956 1.4647533,-0.669655 2.0878,-1.42392 2.0878,-2.527508 0,-0.718203 -0.1266121,-0.9686498 -0.61822,-1.2228702 -0.6330038,-0.327339 -1.6869972,-0.271356 -2.9644064,0.1574563 -0.6219439,0.2087813 -1.166391,0.379601 -1.2098813,0.379601 -0.1119413,0 -0.977413,-1.9586075 -0.977413,-2.2119352 0,-0.4345862 0.938654,-0.7316052 2.5053605,-0.7927736 1.4369272,-0.056101 1.5630602,-0.0358 2.3507441,0.3783613 0.9899408,0.5205083 1.7259115,1.4217442 2.0487231,2.5087678 0.263286,0.8865783 0.301178,2.0407046 0.08562,2.6076786 -0.229581,0.603842 0.0624,0.608534 0.841903,0.01353 0.851706,-0.650121 1.427828,-0.9048971 2.363538,-1.0452157 0.674692,-0.1011756 0.707983,-0.1306134 0.892326,-0.789023 0.439998,-1.5715151 1.605419,-2.4991565 3.167583,-2.5213066 1.166153,-0.016536 1.821767,0.2232321 2.494653,0.9123291 0.888294,0.9096946 1.206425,2.0078489 1.283914,4.4319102 0.09619,3.008898 -0.307912,4.635221 -1.484774,5.975595 -1.014424,1.155364 -2.610174,1.582387 -3.8552,1.031652 -1.050713,-0.46478 -1.327874,-1.185967 -1.448473,-3.76897 -0.07748,-1.659297 -0.142029,-2.05395 -0.378783,-2.315559 -0.366338,-0.4048 -0.591328,-0.395462 -1.581878,0.06566 l -0.812108,0.378058 0.325891,0.49354 C 14.21371,16.888184 13.7753,20.37954 11.10733,21.55971 10.267114,21.931376 8.4539643,22.046584 7.4731111,21.790628 z M 18.446691,16.376863 c 1.094646,-0.667407 1.819495,-2.543382 1.660447,-4.297385 C 20.003179,10.932995 19.335757,9.5815958 18.648858,9.126747 17.718911,8.5109565 16.441521,8.7136636 15.604193,9.6098974 l -0.371956,0.3981246 0.291845,0.489382 c 0.24284,0.40721 0.299938,0.846321 0.340047,2.615144 0.05631,2.483582 0.07945,2.63016 0.499344,3.163969 0.400247,0.508832 1.339072,0.554053 2.083218,0.100346 z M 10.890329,6.1023967 C 10.514976,5.9710739 9.9232005,5.6677714 9.575277,5.4283922 8.8805654,4.9504194 7.5490308,3.5025099 7.5490308,3.2250571 c 0,-0.09622 0.1749106,-0.2895503 0.3886894,-0.429624 0.3804845,-0.249303 0.401674,-0.24295 1.0037293,0.3009715 0.7978222,0.7207843 1.5331015,1.0211386 2.5050675,1.0233002 0.87086,0.00193 1.919633,-0.5027977 2.452581,-1.1803317 0.164274,-0.2088394 0.349807,-0.3797064 0.412297,-0.3797064 0.120869,0 1.736317,1.3291796 1.933575,1.5909322 0.190163,0.2523369 -1.384944,1.567404 -2.277178,1.9012333 -0.964933,0.3610266 -2.13514,0.3802539 -3.077463,0.050565 z m 0.05339,-3.3958434 C 10.538099,2.2794381 10.18718,1.877864 10.163901,1.8141655 10.140622,1.7504669 10.471424,1.3711055 10.89902,0.9711406 L 11.676465,0.24393174 12.48513,1.0425525 c 0.444766,0.4392413 0.772052,0.8748722 0.7273,0.9680669 -0.04475,0.093196 -0.407581,0.4626349 -0.806288,0.8209777 l -0.724924,0.651528 -0.737496,-0.7765718 z"
- id="path3603"
- sodipodi:nodetypes="csssssscccsssssssssssssssssssssscccsccsscccssccsssssssssccscccsccc"
- style="fill:#5e8019"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/hospital.svg b/navit/icons/hospital.svg
deleted file mode 100644
index a9addccee..000000000
--- a/navit/icons/hospital.svg
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="hospital.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/navit/icons/png/hospital.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="3.959798"
- inkscape:cx="65.278252"
- inkscape:cy="46.424636"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g4581"
- transform="matrix(0.20657328,0,0,0.20657328,0.81448847,-61.417818)">
- <path
- inkscape:connector-curvature="0"
- id="rect2382-6"
- d="m -1.7496288,-76.07941 c 0,33.371098 0,66.7421909 0,100.113285 34.0377648,0 68.0755248,0 102.1132888,0 0,-34.03776 0,-68.075521 0,-102.113285 -34.037764,0 -68.075524,0 -102.1132888,0 l 0,1 0,1 z"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.3864522;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <rect
- y="-74.235344"
- x="2.1932259"
- height="94.113548"
- width="94.113548"
- id="rect2382"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:4.3864522;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <g
- transform="matrix(4.462783,0,0,4.462783,-2.5930544,-76.408646)"
- id="g2457">
- <rect
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- id="rect3195"
- width="3.9196427"
- height="16.0625"
- x="9.6569328"
- y="3" />
- <rect
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- id="rect2455"
- width="3.9196427"
- height="16.0625"
- x="9.0714283"
- y="-19.648005"
- transform="matrix(0,1,-1,0,0,0)" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/hotel.svg b/navit/icons/hotel.svg
deleted file mode 100644
index 50f213a3b..000000000
--- a/navit/icons/hotel.svg
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="hotel.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/shopping.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3160">
- <stop
- style="stop-color:#208420;stop-opacity:1;"
- offset="0"
- id="stop3162" />
- <stop
- style="stop-color:#15d715;stop-opacity:1;"
- offset="1"
- id="stop3164" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2421"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <pattern
- patternUnits="userSpaceOnUse"
- width="93.610447"
- height="68.066813"
- patternTransform="translate(22.133615,-61.586979)"
- id="pattern3532">
- <path
- inkscape:connector-curvature="0"
- d="m 22.384416,27.235557 2.776195,0 0,6.983784 -2.776195,0 z m -6.631484,-12.098892 0.531181,0 0,23.853249 -0.531181,0 z m 0.951638,22.590661 59.337406,0 0,0.310945 -59.337406,0 z m -7.7812825,11.453406 76.1021475,0 0,0.245319 -76.1021475,0 z m 78.0608875,-21.859388 0.80136,0 0,34.462077 -0.80136,0 z M 5.8249125,5.8249125 l 0.516157,0 0,56.4169875 -0.516157,0 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:11.6498251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3209-6" />
- </pattern>
- <pattern
- patternUnits="userSpaceOnUse"
- width="93.610447"
- height="68.066813"
- patternTransform="translate(22.133615,-61.586979)"
- id="pattern3532-6">
- <path
- inkscape:connector-curvature="0"
- d="m 22.384416,27.235557 2.776195,0 0,6.983784 -2.776195,0 z m -6.631484,-12.098892 0.531181,0 0,23.853249 -0.531181,0 z m 0.951638,22.590661 59.337406,0 0,0.310945 -59.337406,0 z m -7.7812825,11.453406 76.1021475,0 0,0.245319 -76.1021475,0 z m 78.0608875,-21.859388 0.80136,0 0,34.462077 -0.80136,0 z M 5.8249125,5.8249125 l 0.516157,0 0,56.4169875 -0.516157,0 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:11.6498251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3209-6-0" />
- </pattern>
- <pattern
- patternUnits="userSpaceOnUse"
- width="93.610447"
- height="68.066813"
- patternTransform="translate(22.133615,-61.586979)"
- id="pattern3532-6-8">
- <path
- inkscape:connector-curvature="0"
- d="m 22.384416,27.235557 2.776195,0 0,6.983784 -2.776195,0 z m -6.631484,-12.098892 0.531181,0 0,23.853249 -0.531181,0 z m 0.951638,22.590661 59.337406,0 0,0.310945 -59.337406,0 z m -7.7812825,11.453406 76.1021475,0 0,0.245319 -76.1021475,0 z m 78.0608875,-21.859388 0.80136,0 0,34.462077 -0.80136,0 z M 5.8249125,5.8249125 l 0.516157,0 0,56.4169875 -0.516157,0 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:11.6498251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3209-6-0-7" />
- </pattern>
- <pattern
- patternUnits="userSpaceOnUse"
- width="93.610447"
- height="68.066813"
- patternTransform="translate(22.133615,-61.586979)"
- id="pattern3532-3">
- <path
- inkscape:connector-curvature="0"
- d="m 22.384416,27.235557 2.776195,0 0,6.983784 -2.776195,0 z m -6.631484,-12.098892 0.531181,0 0,23.853249 -0.531181,0 z m 0.951638,22.590661 59.337406,0 0,0.310945 -59.337406,0 z m -7.7812825,11.453406 76.1021475,0 0,0.245319 -76.1021475,0 z m 78.0608875,-21.859388 0.80136,0 0,34.462077 -0.80136,0 z M 5.8249125,5.8249125 l 0.516157,0 0,56.4169875 -0.516157,0 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:11.6498251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3209-6-7" />
- </pattern>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#22a638"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6"
- inkscape:cx="68.181417"
- inkscape:cy="42.960012"
- inkscape:document-units="px"
- inkscape:current-layer="g3421"
- showgrid="true"
- inkscape:window-width="1432"
- inkscape:window-height="855"
- inkscape:window-x="0"
- inkscape:window-y="16"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/by/3.0/" />
- <dc:creator>
- <cc:Agent>
- <dc:title>Source http://picol.org/</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:contributor>
- <cc:Agent>
- <dc:title>Description
-English: PICOL SVG icon.
-Date 21 March 2015
-Source http://picol.org/
-Author Picol.org</dc:title>
- </cc:Agent>
- </dc:contributor>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/by/3.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:requires
- rdf:resource="http://creativecommons.org/ns#Notice" />
- <cc:requires
- rdf:resource="http://creativecommons.org/ns#Attribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g3421"
- transform="matrix(0.9283947,0,0,0.92839336,4.2315074,0.70276789)">
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0.21999738"
- inkscape:connector-curvature="0"
- id="path3379-7"
- d="m -3.8731017,-78.190535 c 0.9638788,0.01046 2.88526699,-0.44745 2.8145568,1.123976 0.055207,0.432021 -0.3363603,1.341035 0.38843641,0.761818 1.73969189,-0.695479 3.92110869,-0.262137 5.17945369,1.151105 3.3407333,-1.914833 7.5759008,-1.87109 11.0739068,-0.405615 0.236833,-1.498437 2.147905,-1.046624 3.195139,-1.066209 0.497508,0.89845 0.07364,2.706475 0.214434,3.957077 l 0,7.055731 c -1.109298,-0.0068 -3.408405,0.583345 -3.248045,-1.045731 -0.228066,-0.719396 0.313576,-1.925368 -0.54567,-2.069859 -5.4477078,0.103087 -10.9186263,0.0053 -16.3569123,0.04984 -0.019052,0.959315 0.59708882,2.730349 -0.7416421,3.089809 -0.8720053,0.101717 -2.1733822,0.346621 -2.448358,-0.81209 -0.2487408,-2.351514 0.061565,-4.753989 -0.05801,-7.12276 l -0.031737,-4.625347 z"
- sodipodi:nodetypes="cccccccccccccccc" />
- <g
- transform="matrix(-0.77280617,0,0,0.77278772,19.619075,-85.139467)"
- id="bed">
- <path
- id="path3379"
- d="m 28,10 0,5 c 0,-1.657 -1.791,-3 -4,-3 -2.209,0 -4,1.343 -4,3 0,-1.657 -4.687,-3 -8,-3 -3.313,0 -8,1.343 -8,3 l 0,-3 -2,0 0,12 2,0 0,-4 24,0 0,4 2,0 0,-14 -2,0 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/hunting_stand.svg b/navit/icons/hunting_stand.svg
deleted file mode 100644
index 6a4edcd49..000000000
--- a/navit/icons/hunting_stand.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- viewBox="0 0 20.625 20.625"
- id="svg3372"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="hunting_stand.svg">
- <defs
- id="defs3374">
- <linearGradient
- id="linearGradient4198"
- osb:paint="gradient">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop4200" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop4202" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="11.140116"
- inkscape:cy="9.353515"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="px"
- inkscape:snap-to-guides="false"
- inkscape:snap-grids="false"
- inkscape:snap-nodes="true"
- inkscape:snap-bbox="true"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:snap-global="true"
- inkscape:pagecheckerboard="true" />
- <metadata
- id="metadata3377">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1031.7372)">
- <g
- id="g5722-9"
- transform="matrix(0.41368072,0,0,0.34577538,-0.92701582,689.57202)"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:7.08278704;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
- <path
- transform="translate(0,988.36219)"
- id="path3384-5"
- d="m 26.634766,5.75 0,49.330078 2.77539,0 0,-18.042969 16.654297,0 0,17.660157 1.982422,0 0,-43.509766 z m 3.111328,9.730469 15.583984,0 0,6.835937 -15.583984,0 z"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.08278704;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path5650-2"
- d="m 25.865234,1016.2812 -0.878906,1.4024 -14.720703,23.4805 -0.8789062,1.4043 2.8046872,1.7578 0.878906,-1.4024 14.720704,-23.4804 0.878906,-1.4024 z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.08278704;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- </g>
- <g
- id="g5722"
- transform="matrix(0.41368072,0,0,0.34577538,-0.83897034,689.77764)">
- <path
- transform="translate(0,988.36219)"
- id="path3384"
- d="m 26.634766,5.75 0,49.330078 2.77539,0 0,-18.042969 16.654297,0 0,17.660157 1.982422,0 0,-43.509766 z m 3.111328,9.730469 15.583984,0 0,6.835937 -15.583984,0 z"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path5650"
- d="m 25.865234,1016.2812 -0.878906,1.4024 -14.720703,23.4805 -0.8789062,1.4043 2.8046872,1.7578 0.878906,-1.4024 14.720704,-23.4804 0.878906,-1.4024 z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/ic_notify.svg b/navit/icons/ic_notify.svg
deleted file mode 100644
index 8bf846dae..000000000
--- a/navit/icons/ic_notify.svg
+++ /dev/null
@@ -1,261 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="ic_notify.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/michael/src/navit/navit/android/res/drawable-hdpi/ic_notify.png"
- inkscape:export-xdpi="147.27"
- inkscape:export-ydpi="147.27">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3365">
- <stop
- style="stop-color:#ffffff;stop-opacity:0.61904764;"
- offset="0"
- id="stop3367" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3369" />
- </linearGradient>
- <linearGradient
- id="linearGradient3320">
- <stop
- style="stop-color:#116cbf;stop-opacity:1;"
- offset="0"
- id="stop3322" />
- <stop
- id="stop3354"
- offset="0.08"
- style="stop-color:#116cbf;stop-opacity:1;" />
- <stop
- id="stop3352"
- offset="0.4893617"
- style="stop-color:#1a6cb6;stop-opacity:1;" />
- <stop
- style="stop-color:#329eff;stop-opacity:1;"
- offset="1"
- id="stop3324" />
- </linearGradient>
- <linearGradient
- id="linearGradient3308">
- <stop
- style="stop-color:#062643;stop-opacity:1;"
- offset="0"
- id="stop3310" />
- <stop
- style="stop-color:#0d5799;stop-opacity:1;"
- offset="1"
- id="stop3312" />
- </linearGradient>
- <linearGradient
- id="linearGradient3235">
- <stop
- style="stop-color:#c17d11;stop-opacity:1;"
- offset="0"
- id="stop3237" />
- <stop
- style="stop-color:#e9cb14;stop-opacity:1;"
- offset="1"
- id="stop3239" />
- </linearGradient>
- <linearGradient
- id="linearGradient3227">
- <stop
- style="stop-color:#76650c;stop-opacity:1;"
- offset="0"
- id="stop3229" />
- <stop
- style="stop-color:#76650c;stop-opacity:0;"
- offset="1"
- id="stop3231" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="15.556349 : 133.02972 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3308"
- id="linearGradient3314"
- x1="-7.7781754"
- y1="4.2563133"
- x2="43.133514"
- y2="4.2563133"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="33.636364"
- inkscape:cx="10.429299"
- inkscape:cy="11"
- inkscape:document-units="px"
- inkscape:current-layer="layer2"
- showgrid="false"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- inkscape:window-x="0"
- inkscape:window-y="24"
- showborder="true"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-bbox="false"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:object-nodes="true"
- showguides="false" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="display:inline" />
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="lignes"
- style="display:inline">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.79098374;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 3.1845705,2.9140622 c -1.0886716,0 -1.9765625,0.8878909 -1.9765625,1.9765625 l 0,5.6269533 C 2.9051239,9.2613772 5.0602154,8.3513287 7.0419924,8.0273435 l -2.625,-0.9511719 0.056641,-0.4589844 c 2.9757823,-0.3155887 5.8357996,0.1963758 8.5898436,1.375 l 0.216797,0.091797 -2.070313,4.9648438 -0.955078,-2.207031 c -2.0698525,1.111236 -3.5135663,3.176209 -4.333984,6.246094 l -0.089844,0.333984 -4.6230469,-3.347656 0,3.035156 c 0,1.088672 0.8878909,1.976563 1.9765625,1.976563 l 15.6289064,0 c 1.088671,0 1.978515,-0.887891 1.978515,-1.976563 l 0,-12.2187502 c 0,-1.0886716 -0.889844,-1.9765625 -1.978515,-1.9765625 l -15.6289064,0 z"
- id="path4971"
- inkscape:connector-curvature="0" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer4"
- inkscape:label="bulle"
- style="display:none">
- <path
- sodipodi:type="arc"
- style="fill:url(#linearGradient3314);fill-opacity:1;stroke:#1f3157;stroke-width:5.30526352;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- id="path3305"
- sodipodi:cx="17.67767"
- sodipodi:cy="4.2563133"
- sodipodi:rx="25.455845"
- sodipodi:ry="25.455845"
- d="m 43.133514,4.2563133 a 25.455845,25.455845 0 1 1 -50.9116894,0 25.455845,25.455845 0 1 1 50.9116894,0 z"
- transform="matrix(1.3194444,0,0,1.3194444,18.394598,29.399489)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="rose des vents"
- style="display:none">
- <g
- id="g3256"
- transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,36.903806,-19.093669)"
- style="opacity:0.5">
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 -5.673657,-27.511429 -27.511429,-5.673655 27.511429,-5.673657 5.673655,-27.5114293 5.673657,27.5114293 27.5114293,5.673655 -27.5114293,5.673657 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="2.3561945"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="8.0237608"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3258"
- style="fill:#167bd9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 6.826343,-33.011429 -40.011429,-0.173655 33.011429,6.826343 0.173655,-40.0114293 -6.826343,33.0114293 40.0114293,0.173655 -33.0114293,-6.826343 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="0.025433549"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="6.8285527"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3260"
- style="fill:#c3dff9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- </g>
- <g
- id="g3252">
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 -5.673657,-27.511429 -27.511429,-5.673655 27.511429,-5.673657 5.673655,-27.5114293 5.673657,27.5114293 27.5114293,5.673655 -27.5114293,5.673657 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="2.3561945"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="8.0237608"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3248"
- style="fill:#167bd9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 6.826343,-33.011429 -40.011429,-0.173655 33.011429,6.826343 0.173655,-40.0114293 -6.826343,33.0114293 40.0114293,0.173655 -33.0114293,-6.826343 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="0.025433549"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="6.8285527"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3250"
- style="fill:#c3dff9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer6"
- inkscape:label="ondes"
- style="display:inline" />
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="flèche"
- style="display:inline" />
-</svg>
diff --git a/navit/icons/information.svg b/navit/icons/information.svg
deleted file mode 100644
index ffc57b159..000000000
--- a/navit/icons/information.svg
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="information.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/shopping.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3160">
- <stop
- style="stop-color:#208420;stop-opacity:1;"
- offset="0"
- id="stop3162" />
- <stop
- style="stop-color:#15d715;stop-opacity:1;"
- offset="1"
- id="stop3164" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2421"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#22a638"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.8"
- inkscape:cx="-14.650811"
- inkscape:cy="32.01958"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="943"
- inkscape:window-height="682"
- inkscape:window-x="167"
- inkscape:window-y="48"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g8363"
- transform="matrix(0.20008227,0,0,0.20008288,1.0464242,-61.464653)">
- <path
- inkscape:connector-curvature="0"
- id="path2387-9"
- d="M 49.483815,-73.147601 C 22.558885,-73.967925 -2.2368547,-47.507854 2.2533453,-20.426898 5.3817053,6.5575876 35.208045,25.979316 61.243585,18.842633 85.729193,13.38345 103.54469,-14.057191 95.972097,-38.53432 90.610192,-58.806186 70.292577,-73.472042 49.483815,-73.147601 Z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:13.86307716;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <ellipse
- ry="40.573875"
- rx="41.824272"
- cy="-26.501913"
- cx="49.55127"
- id="path2387"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:13.86307716;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <text
- transform="scale(1.1164505,0.89569579)"
- id="text2412"
- y="-0.52475673"
- x="30.952036"
- style="font-style:normal;font-weight:normal;font-size:77.7706604px;font-family:'Bitstream Vera Sans';fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- xml:space="preserve"><tspan
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:84.84072113px;font-family:'Bitstream Charter';-inkscape-font-specification:'Bitstream Charter Bold';fill:#ff0000"
- y="-0.52475673"
- x="30.952036"
- id="tspan2414"
- sodipodi:role="line">i</tspan></text>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/islamic.svg b/navit/icons/islamic.svg
deleted file mode 100644
index 7780aac51..000000000
--- a/navit/icons/islamic.svg
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="islamic.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="6.119709"
- inkscape:cy="0.36360327"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="10.427586"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2466"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3333"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3401"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3464"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3581"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4312"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327"
- transform="matrix(0.0435895,0,0,0.0435895,-0.86309524,-0.76677069)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g6027"
- style="opacity:0.25"
- transform="matrix(0.06939977,0,0,0.06939977,-15.155628,-13.023739)">
- <path
- d="m 374.94899,524.51727 c -5.6741,-1.12821 -16.70034,-4.29499 -24.50274,-7.03733 -39.98769,-14.05453 -78.60206,-53.63421 -93.01112,-95.33628 -5.02689,-14.5485 -8.26957,-30.39029 -8.07876,-51.72233 0.18629,-21.34713 3.05187,-35.04228 8.07876,-49.59078 13.73716,-39.75746 48.48413,-77.13033 86.79931,-93.35893 13.91946,-5.89565 44.84034,-11.62967 62.7134,-11.62967 26.63921,0 77.07899,16.84186 87.29092,29.14647 5.22069,6.29056 0.36439,6.50378 -25.36216,1.11354 -20.58854,-4.31371 -27.41825,-4.71154 -43.33738,-2.52436 -45.83657,6.29761 -87.07178,40.84116 -103.55151,86.74715 -7.77411,21.65556 -7.80387,60.59983 -0.0627,82.11702 16.02656,44.54744 56.62329,79.38394 101.46024,87.06419 13.9149,2.38351 20.29595,2.00054 43.13125,-2.5886 14.74016,-2.96227 27.75776,-4.46426 28.92797,-3.33775 2.72492,2.62316 -9.53268,11.34615 -27.50679,19.575 -26.53978,12.15029 -65.24223,16.87951 -92.98864,11.36266 z M 460.09505,422.0141 c -0.78052,-1.26291 1.45486,-10.7461 4.96752,-21.07373 3.51267,-10.32766 6.38668,-19.09515 6.38668,-19.48331 0,-0.38813 -7.525,-6.07543 -16.72221,-12.63843 -9.19722,-6.56301 -16.72221,-12.94199 -16.72221,-14.17552 0,-1.23351 9.55095,-2.579 21.22433,-2.98999 l 21.22435,-0.74719 6.68775,-19.16584 c 3.6783,-10.54124 7.90512,-19.57165 9.39302,-20.0676 1.48786,-0.49595 5.80904,8.41809 9.60255,19.809 l 6.8973,20.71076 21.87064,0 c 12.06356,0 21.48608,1.05059 21.01305,2.34293 -0.47165,1.28862 -8.09311,7.65353 -16.93659,14.14424 -8.84347,6.49074 -16.07904,12.78016 -16.07904,13.97652 0,1.19639 2.31538,8.90499 5.14529,17.13029 4.95515,14.40242 6.54304,24.44014 3.8662,24.44014 -0.70352,0 -8.35585,-5.20961 -17.00523,-11.57691 -8.64936,-6.36731 -16.80589,-11.57691 -18.1256,-11.57691 -1.31972,0 -8.42792,4.41656 -15.79603,9.8146 -17.81352,13.05055 -19.23502,13.80763 -20.89177,11.12695 z"
- id="path1873"
- sodipodi:nodetypes="csssssssssssssssccsssscccscccssssssssc"
- style="fill:#ffffff;fill-opacity:0"
- inkscape:connector-curvature="0" />
- <path
- d="m 496.11458,309.70606 c -5.4844,3.94887 -6.54022,11.68793 -9.4375,17.46875 -2.63624,7.22265 -5.08211,14.52938 -7.65625,21.78125 -13.8735,1.18214 -28.57294,-0.64006 -41.90625,3.6875 -3.36635,3.97288 3.49423,7.07989 5.75,9.65625 8.49761,6.97024 17.75342,12.89692 26.34375,19.78125 -3.65416,13.32797 -10.39352,26.22977 -11.15625,40.125 2.29297,6.16621 9.30037,1.11392 12.50869,-1.32066 8.76383,-5.78573 16.95888,-13.37013 26.39756,-17.67934 12.06843,6.45295 22.32418,16.2866 34.375,22.9375 5.3842,0.1545 3.82457,-7.43909 3.1875,-10.875 -1.98837,-11.0572 -7.51602,-21.82388 -9.3125,-32.59375 9.90221,-10.18885 23.05458,-16.58428 32.5,-27.21875 0.60599,-5.33705 -7.23109,-4.04746 -10.625,-4.875 -10.85994,-0.69671 -21.7511,-0.24672 -32.625,-0.375 -5.15103,-13.28221 -7.50252,-28.2007 -15.9375,-39.8125 -0.65906,-0.52935 -1.52611,-0.93797 -2.40625,-0.6875 z"
- id="path4510"
- style="fill:#ffffff;fill-opacity:0;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g6577"
- transform="matrix(0.06939977,0,0,0.06939977,-16.899208,-14.767319)">
- <path
- d="m 374.94899,524.51727 c -5.6741,-1.12821 -16.70034,-4.29499 -24.50274,-7.03733 -39.98769,-14.05453 -78.60206,-53.63421 -93.01112,-95.33628 -5.02689,-14.5485 -8.26957,-30.39029 -8.07876,-51.72233 0.18629,-21.34713 3.05187,-35.04228 8.07876,-49.59078 13.73716,-39.75746 48.48413,-77.13033 86.79931,-93.35893 13.91946,-5.89565 44.84034,-11.62967 62.7134,-11.62967 26.63921,0 77.07899,16.84186 87.29092,29.14647 5.22069,6.29056 0.36439,6.50378 -25.36216,1.11354 -20.58854,-4.31371 -27.41825,-4.71154 -43.33738,-2.52436 -45.83657,6.29761 -87.07178,40.84116 -103.55151,86.74715 -7.77411,21.65556 -7.80387,60.59983 -0.0627,82.11702 16.02656,44.54744 56.62329,79.38394 101.46024,87.06419 13.9149,2.38351 20.29595,2.00054 43.13125,-2.5886 14.74016,-2.96227 27.75776,-4.46426 28.92797,-3.33775 2.72492,2.62316 -9.53268,11.34615 -27.50679,19.575 -26.53978,12.15029 -65.24223,16.87951 -92.98864,11.36266 z M 460.09505,422.0141 c -0.78052,-1.26291 1.45486,-10.7461 4.96752,-21.07373 3.51267,-10.32766 6.38668,-19.09515 6.38668,-19.48331 0,-0.38813 -7.525,-6.07543 -16.72221,-12.63843 -9.19722,-6.56301 -16.72221,-12.94199 -16.72221,-14.17552 0,-1.23351 9.55095,-2.579 21.22433,-2.98999 l 21.22435,-0.74719 6.68775,-19.16584 c 3.6783,-10.54124 7.90512,-19.57165 9.39302,-20.0676 1.48786,-0.49595 5.80904,8.41809 9.60255,19.809 l 6.8973,20.71076 21.87064,0 c 12.06356,0 21.48608,1.05059 21.01305,2.34293 -0.47165,1.28862 -8.09311,7.65353 -16.93659,14.14424 -8.84347,6.49074 -16.07904,12.78016 -16.07904,13.97652 0,1.19639 2.31538,8.90499 5.14529,17.13029 4.95515,14.40242 6.54304,24.44014 3.8662,24.44014 -0.70352,0 -8.35585,-5.20961 -17.00523,-11.57691 -8.64936,-6.36731 -16.80589,-11.57691 -18.1256,-11.57691 -1.31972,0 -8.42792,4.41656 -15.79603,9.8146 -17.81352,13.05055 -19.23502,13.80763 -20.89177,11.12695 z"
- id="path6579"
- sodipodi:nodetypes="csssssssssssssssccsssscccscccssssssssc"
- style="fill:#5e8019"
- inkscape:connector-curvature="0" />
- <path
- d="m 496.11458,309.70606 c -5.4844,3.94887 -6.54022,11.68793 -9.4375,17.46875 -2.63624,7.22265 -5.08211,14.52938 -7.65625,21.78125 -13.8735,1.18214 -28.57294,-0.64006 -41.90625,3.6875 -3.36635,3.97288 3.49423,7.07989 5.75,9.65625 8.49761,6.97024 17.75342,12.89692 26.34375,19.78125 -3.65416,13.32797 -10.39352,26.22977 -11.15625,40.125 2.29297,6.16621 9.30037,1.11392 12.50869,-1.32066 8.76383,-5.78573 16.95888,-13.37013 26.39756,-17.67934 12.06843,6.45295 22.32418,16.2866 34.375,22.9375 5.3842,0.1545 3.82457,-7.43909 3.1875,-10.875 -1.98837,-11.0572 -7.51602,-21.82388 -9.3125,-32.59375 9.90221,-10.18885 23.05458,-16.58428 32.5,-27.21875 0.60599,-5.33705 -7.23109,-4.04746 -10.625,-4.875 -10.85994,-0.69671 -21.7511,-0.24672 -32.625,-0.375 -5.15103,-13.28221 -7.50252,-28.2007 -15.9375,-39.8125 -0.65906,-0.52935 -1.52611,-0.93797 -2.40625,-0.6875 z"
- id="path6581"
- style="fill:#5e8019;stroke:none"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/jain.svg b/navit/icons/jain.svg
deleted file mode 100644
index 7da1f7aae..000000000
--- a/navit/icons/jain.svg
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="jain.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="6.119709"
- inkscape:cy="3.6879751"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="10.427586"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2466"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3333"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3401"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3464"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3581"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4312"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327"
- transform="matrix(0.04191988,0,0,0.04191988,0.19179894,-0.38317207)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g6659"
- style="opacity:0.25"
- transform="matrix(0.06535803,0,0,0.06535803,1.9620635,-10.263627)">
- <path
- d="m 142.0916,514.24122 c -5.82038,-1.69854 -13.98039,-4.85253 -18.13336,-7.00884 -12.98305,-6.74111 -33.325809,-28.60928 -40.137069,-43.1468 0,0 -5.57613,-13.38813 -5.88328,-20.38415 -1.08045,-24.60852 -0.72801,-34.0588 -0.51718,-77.93671 0.22374,-46.56194 0.78221,-87.44425 1.73826,-90.84714 2.12106,-7.54951 15.87115,-14.68523 25.557959,-13.2635 l 6.80298,0.99845 0,-21.4103 c 0,-15.24491 1.01789,-22.86354 3.53479,-26.45694 4.06869,-5.80885 18.16088,-11.13466 24.84059,-9.38786 3.35037,0.87614 4.54798,-0.0208 4.54798,-3.40616 0,-2.5275 2.80016,-7.19055 6.22257,-10.36234 4.94621,-4.58399 8.7304,-5.76688 18.44889,-5.76688 15.88886,0 20.72878,4.99132 22.35315,23.05235 l 1.18461,13.17125 9.99332,0.24145 c 6.0943,0.14723 12.51704,2.12367 16.46168,5.06568 6.39459,4.76923 6.11608,5.17604 7.12822,34.7833 0.59241,17.07062 0.26945,27.53806 1.23533,31.29274 11.56812,-12.0194 46.90091,-4.46986 48.2034,4.48945 0.39245,2.69948 -1.97352,8.8677 -5.25767,13.70718 -10.14209,14.9452 -11.47008,23.30384 -12.90147,81.20461 0,0 0.41314,24.85246 -1.88493,42.65438 -2.2981,17.80192 -7.30741,28.55328 -7.30741,28.55328 -9.50914,19.30161 -26.28463,36.61749 -43.75588,45.16538 -15.63453,7.64925 -45.26737,10.01992 -62.47548,4.99812 z m 52.25759,-21.24063 c 18.60358,-8.4427 32.43239,-23.32387 40.65754,-43.75162 3.52689,-8.75931 4.5232,-20.50884 5.78294,-68.1984 1.25523,-47.51851 2.21917,-58.93487 5.50032,-65.14203 2.18811,-4.13939 3.97839,-8.49018 3.97839,-9.66849 0,-3.96164 -11.33547,-0.0203 -16.86267,5.86311 -4.73118,5.0361 -5.63585,8.92101 -6.65282,28.5693 l -1.17704,22.74059 -6.8435,0 -6.84349,0 0.54558,-59.52274 c 0.56751,-61.91062 -0.0484,-66.29155 -9.31943,-66.29155 -2.33607,0 -5.91037,1.66296 -7.94288,3.69549 -3.13482,3.13482 -3.69548,11.51911 -3.69548,55.26422 l 0,51.56873 -7.05501,0 -7.055,0 0,-70.26213 c 0,-75.19369 -0.43299,-77.96003 -11.64549,-74.40132 -4.71251,1.49568 -4.81619,3.04416 -4.81619,71.92019 l 0,70.39159 -8.23085,0 -8.23084,0 0,-59.8507 c 0,-53.05636 -0.43837,-60.09603 -3.86151,-62.01172 -2.12384,-1.18856 -5.69024,-1.68279 -7.92536,-1.0983 -3.5679,0.93305 -4.26908,6.02114 -5.7459,41.69601 -0.92512,22.3483 -1.49235,50.56904 -1.26045,62.71275 0.57092,29.89907 0.92886,28.38025 -6.48722,27.52692 l -6.46709,-0.74411 -0.6536,-35.17683 c -0.68626,-36.9359 -1.25069,-38.79438 -11.80345,-38.86474 l -5.402039,-0.036 0.6987,84.07217 c 0.6889,82.89123 0.7757,84.21649 6.180589,94.34675 18.31506,34.32745 59.44591,49.71397 92.63325,34.65287 z"
- id="path1873"
- sodipodi:nodetypes="cscssscccssssscccsscsscscsccssssscccccsscccccscccccssssccccccsc"
- style="fill:#ffffff;fill-opacity:0"
- inkscape:connector-curvature="0" />
- <path
- d="m 168.57903,363.87475 c -17.55614,-1.15609 -34.95277,6.26848 -46.1875,19.84375 -15.88788,17.59337 -19.02858,44.49441 -10.65625,66.21875 6.07801,13.65035 18.08449,24.23615 30.92982,31.40759 14.51904,7.11612 32.18989,5.36845 46.78893,-0.0326 15.68133,-7.03907 27.45236,-21.63346 33.68549,-37.28354 5.33529,-17.17517 6.70135,-37.70053 -3.43549,-53.49771 -11.54666,-16.33753 -30.94934,-27.17829 -51.125,-26.65625 z"
- id="path5122"
- style="fill:#ffffff;fill-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g6700"
- transform="matrix(0.06535803,0,0,0.06535803,0.28526849,-11.940422)">
- <path
- d="m 142.0916,514.24122 c -5.82038,-1.69854 -13.98039,-4.85253 -18.13336,-7.00884 -12.98305,-6.74111 -33.325809,-28.60928 -40.137069,-43.1468 0,0 -5.57613,-13.38813 -5.88328,-20.38415 -1.08045,-24.60852 -0.72801,-34.0588 -0.51718,-77.93671 0.22374,-46.56194 0.78221,-87.44425 1.73826,-90.84714 2.12106,-7.54951 15.87115,-14.68523 25.557959,-13.2635 l 6.80298,0.99845 0,-21.4103 c 0,-15.24491 1.01789,-22.86354 3.53479,-26.45694 4.06869,-5.80885 18.16088,-11.13466 24.84059,-9.38786 3.35037,0.87614 4.54798,-0.0208 4.54798,-3.40616 0,-2.5275 2.80016,-7.19055 6.22257,-10.36234 4.94621,-4.58399 8.7304,-5.76688 18.44889,-5.76688 15.88886,0 20.72878,4.99132 22.35315,23.05235 l 1.18461,13.17125 9.99332,0.24145 c 6.0943,0.14723 12.51704,2.12367 16.46168,5.06568 6.39459,4.76923 6.11608,5.17604 7.12822,34.7833 0.59241,17.07062 0.26945,27.53806 1.23533,31.29274 11.56812,-12.0194 46.90091,-4.46986 48.2034,4.48945 0.39245,2.69948 -1.97352,8.8677 -5.25767,13.70718 -10.14209,14.9452 -11.47008,23.30384 -12.90147,81.20461 0,0 0.41314,24.85246 -1.88493,42.65438 -2.2981,17.80192 -7.30741,28.55328 -7.30741,28.55328 -9.50914,19.30161 -26.28463,36.61749 -43.75588,45.16538 -15.63453,7.64925 -45.26737,10.01992 -62.47548,4.99812 z m 52.25759,-21.24063 c 18.60358,-8.4427 32.43239,-23.32387 40.65754,-43.75162 3.52689,-8.75931 4.5232,-20.50884 5.78294,-68.1984 1.25523,-47.51851 2.21917,-58.93487 5.50032,-65.14203 2.18811,-4.13939 3.97839,-8.49018 3.97839,-9.66849 0,-3.96164 -11.33547,-0.0203 -16.86267,5.86311 -4.73118,5.0361 -5.63585,8.92101 -6.65282,28.5693 l -1.17704,22.74059 -6.8435,0 -6.84349,0 0.54558,-59.52274 c 0.56751,-61.91062 -0.0484,-66.29155 -9.31943,-66.29155 -2.33607,0 -5.91037,1.66296 -7.94288,3.69549 -3.13482,3.13482 -3.69548,11.51911 -3.69548,55.26422 l 0,51.56873 -7.05501,0 -7.055,0 0,-70.26213 c 0,-75.19369 -0.43299,-77.96003 -11.64549,-74.40132 -4.71251,1.49568 -4.81619,3.04416 -4.81619,71.92019 l 0,70.39159 -8.23085,0 -8.23084,0 0,-59.8507 c 0,-53.05636 -0.43837,-60.09603 -3.86151,-62.01172 -2.12384,-1.18856 -5.69024,-1.68279 -7.92536,-1.0983 -3.5679,0.93305 -4.26908,6.02114 -5.7459,41.69601 -0.92512,22.3483 -1.49235,50.56904 -1.26045,62.71275 0.57092,29.89907 0.92886,28.38025 -6.48722,27.52692 l -6.46709,-0.74411 -0.6536,-35.17683 c -0.68626,-36.9359 -1.25069,-38.79438 -11.80345,-38.86474 l -5.402039,-0.036 0.6987,84.07217 c 0.6889,82.89123 0.7757,84.21649 6.180589,94.34675 18.31506,34.32745 59.44591,49.71397 92.63325,34.65287 z"
- id="path6702"
- sodipodi:nodetypes="cscssscccssssscccsscsscscsccssssscccccsscccccscccccssssccccccsc"
- style="fill:#5e8019"
- inkscape:connector-curvature="0" />
- <path
- d="m 168.57903,363.87475 c -17.55614,-1.15609 -34.95277,6.26848 -46.1875,19.84375 -15.88788,17.59337 -19.02858,44.49441 -10.65625,66.21875 6.07801,13.65035 18.08449,24.23615 30.92982,31.40759 14.51904,7.11612 32.18989,5.36845 46.78893,-0.0326 15.68133,-7.03907 27.45236,-21.63346 33.68549,-37.28354 5.33529,-17.17517 6.70135,-37.70053 -3.43549,-53.49771 -11.54666,-16.33753 -30.94934,-27.17829 -51.125,-26.65625 z"
- id="path6704"
- style="fill:#5e8019"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/jewish.svg b/navit/icons/jewish.svg
deleted file mode 100644
index 795cb68c1..000000000
--- a/navit/icons/jewish.svg
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="jewish.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="6.119709"
- inkscape:cy="2.8630422"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="10.427586"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2466"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3333"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3401"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3464"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3581"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4312"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327"
- transform="matrix(0.04192159,0,0,0.04192159,-0.47949735,-0.38317207)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <path
- d="m 10.804825,20.824735 -1.5297931,-2.65425 -3.0098203,-0.0014 C 4.389481,18.168248 3.2170422,18.105682 3.1536169,18.003057 3.0976411,17.912485 3.7173467,16.681351 4.5307409,15.267199 5.5393502,13.513649 5.9753453,12.605874 5.9018014,12.412548 5.8424894,12.256641 5.1822768,11.071856 4.434657,9.7796957 3.6870401,8.4875325 3.0753528,7.3462275 3.0753528,7.2434638 c 0,-0.1352957 0.8552281,-0.1869069 3.0998398,-0.1870652 L 9.2750319,7.0561818 10.800575,4.3993939 c 0.83905,-1.4612334 1.576868,-2.6567881 1.639599,-2.6567881 0.172045,0 0.60162,0.6662268 1.99874,3.0998398 l 1.271142,2.2141704 3.102939,0 c 2.378755,0 3.101295,0.046975 3.095896,0.201289 -0.0038,0.110708 -0.680222,1.3584668 -1.502995,2.772798 l -1.49595,2.571508 1.502993,2.603818 c 0.826647,1.432098 1.502995,2.68434 1.502995,2.782757 0,0.125046 -0.934608,0.178944 -3.102939,0.178944 l -3.102939,0 -1.271142,2.214171 c -1.390263,2.421669 -1.827268,3.10056 -1.994492,3.098464 -0.06039,-7.29e-4 -0.798213,-1.195794 -1.639597,-2.65563 z m 2.242607,-1.589651 c 0.272201,-0.475757 0.494912,-0.91054 0.494912,-0.966185 0,-0.05565 -0.471014,-0.101169 -1.046699,-0.101169 -0.575685,0 -1.0467,0.04552 -1.0467,0.101169 0,0.130951 0.971849,1.831199 1.0467,1.831199 0.03128,0 0.279588,-0.389257 0.551787,-0.865014 z M 7.7112957,15.43212 c -0.2913142,-0.530351 -0.565894,-0.964274 -0.6101779,-0.964274 -0.044285,0 -0.3188624,0.433923 -0.6101772,0.964274 l -0.5296617,0.964272 1.1398389,0 1.139839,0 -0.5296611,-0.964272 z m 7.5758293,-0.122684 c 0.347475,-0.597827 0.836385,-1.455835 1.086467,-1.906685 l 0.454692,-0.819728 -1.043162,-1.837277 -1.043161,-1.8372774 -2.239148,0 -2.239147,0 -1.0176662,1.7524504 c -0.5597172,0.963847 -1.0176676,1.828801 -1.0176676,1.922114 0,0.166858 1.6695815,3.218813 1.9759958,3.612071 0.111519,0.143124 0.777257,0.201288 2.30393,0.201288 l 2.147095,0 0.631772,-1.086956 z m 3.213222,0.122684 c -0.291316,-0.530351 -0.565893,-0.964274 -0.610178,-0.964274 -0.04428,0 -0.318863,0.433923 -0.610178,0.964274 l -0.529659,0.964272 1.139837,0 1.139839,0 -0.529661,-0.964272 z M 7.7006898,9.7914578 8.2197464,8.8279533 l -1.1292331,0 -1.1292344,0 0.5296617,0.9642733 c 0.2913148,0.5303514 0.5658934,0.9639264 0.6101772,0.9635024 0.044285,-4.23e-4 0.3140906,-0.434345 0.599572,-0.9642712 z m 10.7890502,0 0.519057,-0.9635045 -1.129232,0 -1.129233,0 0.529659,0.9642733 c 0.291315,0.5303514 0.565894,0.9639264 0.610178,0.9635024 0.04428,-4.23e-4 0.31409,-0.434345 0.599571,-0.9642712 z M 13.542344,6.9554455 c 0,-0.1309494 -0.971849,-1.8311963 -1.046699,-1.8311963 -0.07485,0 -1.0467,1.7002469 -1.0467,1.8311963 0,0.055644 0.471015,0.1011705 1.0467,0.1011705 0.575685,0 1.046699,-0.045524 1.046699,-0.1011705 z"
- id="path3648"
- sodipodi:nodetypes="cccssssscccscccscccscccsccssssccscccccccccccccssccccsccccccccccsccccccsccsssc"
- style="opacity:0.25;fill:#ffffff;fill-opacity:0"
- inkscape:connector-curvature="0" />
- <path
- d="m 9.1690679,19.188979 -1.5297912,-2.65425 -3.0098209,-0.0014 c -1.87573,-8.45e-4 -3.048169,-0.06341 -3.1115943,-0.166036 -0.055976,-0.09057 0.5637297,-1.321706 1.3771239,-2.735859 C 3.9035947,11.877894 4.3395897,10.970118 4.2660459,10.776793 4.2067344,10.620886 3.5465212,9.4361009 2.7989018,8.1439398 2.0512846,6.8517772 1.4395972,5.7104721 1.4395972,5.6077079 c 0,-0.1352956 0.8552282,-0.1869065 3.0998399,-0.1870646 L 7.6392767,5.4204262 9.164819,2.763638 c 0.839049,-1.4612331 1.576869,-2.65678768 1.639599,-2.65678768 0.172046,0 0.60162,0.6662268 1.998741,3.09983958 l 1.271142,2.2141705 3.102939,0 c 2.378754,0 3.101295,0.046977 3.095896,0.2012891 -0.0038,0.1107078 -0.680222,1.358467 -1.502996,2.7727971 l -1.495951,2.5715084 1.502994,2.603817 c 0.826649,1.432099 1.502995,2.684342 1.502995,2.782759 0,0.125045 -0.934607,0.178943 -3.102938,0.178943 l -3.102939,0 -1.271142,2.214171 c -1.390264,2.42167 -1.827269,3.100561 -1.994492,3.098465 -0.06039,-7.3e-4 -0.798215,-1.195794 -1.6395991,-2.655631 z m 2.2426091,-1.58965 c 0.272201,-0.475758 0.494911,-0.91054 0.494911,-0.966184 0,-0.05564 -0.471015,-0.101171 -1.046699,-0.101171 -0.575685,0 -1.0466983,0.04552 -1.0466983,0.101171 0,0.130949 0.9718473,1.831196 1.0466983,1.831196 0.03128,0 0.279588,-0.389256 0.551788,-0.865012 z M 6.0755408,13.796364 C 5.784226,13.266013 5.5096462,12.832091 5.465362,12.832091 c -0.044284,0 -0.3188624,0.433922 -0.6101768,0.964273 l -0.5296619,0.964273 1.1398387,0 1.1398396,0 -0.5296608,-0.964273 z M 13.651369,13.67368 c 0.347476,-0.597828 0.836385,-1.455834 1.086468,-1.906685 l 0.454691,-0.819728 -1.043162,-1.8372767 -1.043161,-1.837277 -2.239148,0 -2.2391462,0 -1.0176669,1.7524505 C 7.0505267,9.9890107 6.592577,10.853963 6.592577,10.947278 c 0,0.166857 1.669581,3.218812 1.9759958,3.612071 0.1115177,0.143124 0.7772561,0.201288 2.3039292,0.201288 l 2.147094,0 0.631773,-1.086957 z m 3.213222,0.122684 c -0.291314,-0.530351 -0.565894,-0.964273 -0.610177,-0.964273 -0.04428,0 -0.318864,0.433922 -0.610178,0.964273 l -0.52966,0.964273 1.139838,0 1.139838,0 -0.529661,-0.964273 z M 6.0649343,8.1557022 6.5839905,7.1921973 l -1.1292331,0 -1.1292341,0 0.5296619,0.9642744 C 5.1464996,8.6868214 5.4210785,9.1203974 5.465362,9.1199739 5.5096465,9.1195504 5.7794529,8.6856278 6.0649343,8.1557022 z m 10.7890507,0 0.519057,-0.9635049 -1.129234,0 -1.129232,0 0.52966,0.9642744 c 0.291314,0.5303497 0.565894,0.9639257 0.610178,0.9635022 0.04428,-4.235e-4 0.31409,-0.4343461 0.599571,-0.9642717 z m -4.947397,-2.836012 c 0,-0.1309497 -0.971849,-1.8311964 -1.046699,-1.8311964 -0.07485,0 -1.0466983,1.7002467 -1.0466983,1.8311964 0,0.055644 0.4710133,0.1011702 1.0466983,0.1011702 0.575684,0 1.046699,-0.045526 1.046699,-0.1011702 z"
- id="path6812"
- sodipodi:nodetypes="cccssssscccscccscccscccsccssssccscccccccccccccssccccsccccccccccsccccccsccsssc"
- style="fill:#5e8019;fill-opacity:1"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/justice.svg b/navit/icons/justice.svg
deleted file mode 100644
index 72fe1b24b..000000000
--- a/navit/icons/justice.svg
+++ /dev/null
@@ -1,224 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="justice.svg"
- viewBox="0 0 20.625 20.625">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2824"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3622"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3648"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3697"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="19.909091"
- inkscape:cx="17.083589"
- inkscape:cy="11"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1338"
- inkscape:window-height="732"
- inkscape:window-x="24"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:pagecheckerboard="true" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Camada 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-190.23529,-233.41575)">
- <g
- id="g174-1"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:1.93781245;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="matrix(0.85822343,0,0,0.87387944,27.567778,31.851521)">
- <g
- transform="matrix(0.05907173,0,0,0.05907173,180.01429,219.79643)"
- id="g3744-0"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
- <path
- inkscape:connector-curvature="0"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 190.73529,444.1479 c 40.95238,0 81.90476,0 122.85714,0 -11.07798,11.0074 -22.99269,22.21828 -38.40401,26.79113 -18.96039,5.62593 -40.14795,4.71786 -57.74013,-4.73259 -10.22602,-5.49338 -20.47812,-12.01113 -26.713,-22.05854 z"
- id="path2830-0"
- sodipodi:nodetypes="ccssc" />
- <g
- id="g3636-2"
- transform="translate(-1.229,0)"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
- <path
- inkscape:connector-curvature="0"
- id="path3612-5"
- d="m 199.28571,445.21932 57.14286,-155"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path3612-1-3"
- d="m 307.50001,446.46933 -57.14286,-155"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <path
- inkscape:connector-curvature="0"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 405.44957,444.1479 c 40.95238,0 81.90476,0 122.85714,0 -11.07798,11.0074 -22.99269,22.21828 -38.40401,26.79113 -18.96039,5.62593 -40.14795,4.71786 -57.74013,-4.73259 -10.22602,-5.49338 -20.47812,-12.01113 -26.713,-22.05854 z"
- id="path2830-7-4"
- sodipodi:nodetypes="ccssc" />
- <g
- id="g3636-4-7"
- transform="translate(213.48528,0)"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
- <path
- inkscape:connector-curvature="0"
- id="path3612-0-3"
- d="m 199.28571,445.21932 57.14286,-155"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path3612-1-9-2"
- d="m 307.50001,446.46933 -57.14286,-155"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <path
- inkscape:connector-curvature="0"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 271.12815,548.79075 176.78572,0 c 0,0 -60.52732,-10.81192 -77.5,-33.21428 -5.51081,-7.27376 0.7383,-18.09941 0.42857,-27.14286 l -6.5,-189.78571 -8.92856,0 -6.5,189.78571 c -0.30969,9.04235 5.64503,19.89653 0.0714,27.14286 -17.2022,22.36486 -77.85714,33.21428 -77.85714,33.21428 l 2e-5,0 z"
- id="path3683-3"
- sodipodi:nodetypes="ccssccsscc" />
- <path
- inkscape:connector-curvature="0"
- id="path3687-4-7"
- style="fill:#fbfbfb;fill-opacity:1;stroke:#ffffff;stroke-width:32.80439758;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 480,300.57647 -240.958,0 -1.42857,-13.92857 c -0.0836,-0.81459 0.11215,-1.88272 0.80357,-2.32143 0.70767,-0.44902 1.66315,0.31365 2.5,0.26785 29.97319,-1.00057 57.9679,-20.9112 88.30357,-15.80357 7.23496,1.21815 13.47071,3.86491 18.75,8.92857 0.65231,0.6571 1.96429,1.96429 1.96429,1.96429 2.73979,2.73979 3.81189,-1.11614 5,-4.64286 2.32362,-7.64974 4.08614,-42.5 4.58614,-42.5 0.5,0 2.26252,34.85026 4.58614,42.5 1.18811,3.52672 2.26021,7.38265 5,4.64286 0,0 1.31198,-1.30719 1.96429,-1.96429 4.9372,-5.5055 11.66787,-7.99802 18.75,-8.92857 29.93468,-3.93323 58.80806,11.72052 88.30357,15.80357 0.83685,0.0458 1.79233,-0.71687 2.5,-0.26785 0.69142,0.43871 0.88717,1.50684 0.80357,2.32143 z"
- sodipodi:nodetypes="cccscsccczcccscscc" />
- </g>
- </g>
- <g
- id="g174"
- transform="matrix(0.85822343,0,0,0.87387944,27.567778,31.851521)"
- style="stroke-width:0.76813078;stroke-miterlimit:4;stroke-dasharray:none">
- <g
- transform="matrix(0.05907173,0,0,0.05907173,180.01429,219.79643)"
- id="g3744"
- style="stroke-width:13.00335693;stroke-miterlimit:4;stroke-dasharray:none">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:13.00335693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 190.73529,444.1479 c 40.95238,0 81.90476,0 122.85714,0 -11.07798,11.0074 -22.99269,22.21828 -38.40401,26.79113 -18.96039,5.62593 -40.14795,4.71786 -57.74013,-4.73259 -10.22602,-5.49338 -20.47812,-12.01113 -26.713,-22.05854 z"
- id="path2830"
- sodipodi:nodetypes="ccssc" />
- <g
- id="g3636"
- transform="translate(-1.229,0)"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:13.00335693;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
- <path
- inkscape:connector-curvature="0"
- id="path3612"
- d="m 199.28571,445.21932 57.14286,-155"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:13.00335693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path3612-1"
- d="m 307.50001,446.46933 -57.14286,-155"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:13.00335693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:13.00335693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 405.44957,444.1479 c 40.95238,0 81.90476,0 122.85714,0 -11.07798,11.0074 -22.99269,22.21828 -38.40401,26.79113 -18.96039,5.62593 -40.14795,4.71786 -57.74013,-4.73259 -10.22602,-5.49338 -20.47812,-12.01113 -26.713,-22.05854 z"
- id="path2830-7"
- sodipodi:nodetypes="ccssc" />
- <g
- id="g3636-4"
- transform="translate(213.48528,0)"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:13.00335693;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
- <path
- inkscape:connector-curvature="0"
- id="path3612-0"
- d="m 199.28571,445.21932 57.14286,-155"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:13.00335693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path3612-1-9"
- d="m 307.50001,446.46933 -57.14286,-155"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:13.00335693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:13.00335693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 271.12815,548.79075 176.78572,0 c 0,0 -60.52732,-10.81192 -77.5,-33.21428 -5.51081,-7.27376 0.7383,-18.09941 0.42857,-27.14286 l -6.5,-189.78571 -8.92856,0 -6.5,189.78571 c -0.30969,9.04235 5.64503,19.89653 0.0714,27.14286 -17.2022,22.36486 -77.85714,33.21428 -77.85714,33.21428 l 2e-5,0 z"
- id="path3683"
- sodipodi:nodetypes="ccssccsscc" />
- <path
- inkscape:connector-curvature="0"
- id="path3687-4"
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:13.00335693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 480,300.57647 -240.958,0 -1.42857,-13.92857 c -0.0836,-0.81459 0.11215,-1.88272 0.80357,-2.32143 0.70767,-0.44902 1.66315,0.31365 2.5,0.26785 29.97319,-1.00057 57.9679,-20.9112 88.30357,-15.80357 7.23496,1.21815 13.47071,3.86491 18.75,8.92857 0.65231,0.6571 1.96429,1.96429 1.96429,1.96429 2.73979,2.73979 3.81189,-1.11614 5,-4.64286 2.32362,-7.64974 4.08614,-42.5 4.58614,-42.5 0.5,0 2.26252,34.85026 4.58614,42.5 1.18811,3.52672 2.26021,7.38265 5,4.64286 0,0 1.31198,-1.30719 1.96429,-1.96429 4.9372,-5.5055 11.66787,-7.99802 18.75,-8.92857 29.93468,-3.93323 58.80806,11.72052 88.30357,15.80357 0.83685,0.0458 1.79233,-0.71687 2.5,-0.26785 0.69142,0.43871 0.88717,1.50684 0.80357,2.32143 z"
- sodipodi:nodetypes="cccscsccczcccscscc" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/level_crossing.svg b/navit/icons/level_crossing.svg
deleted file mode 100644
index dbb3e4f27..000000000
--- a/navit/icons/level_crossing.svg
+++ /dev/null
@@ -1,165 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="level_crossing.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata1976">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="-25.634689"
- inkscape:cy="42.095768"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="733"
- inkscape:window-width="1432"
- inkscape:window-x="0"
- inkscape:window-y="138"
- inkscape:zoom="3.6867084"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective3653"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- id="ArrowStart"
- markerHeight="3"
- markerUnits="strokeWidth"
- markerWidth="4"
- orient="auto"
- refX="10"
- refY="5"
- viewBox="0 0 10 10">
- <path
- d="M 10,0 0,5 10,10 Z"
- id="path2111"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="ArrowEnd"
- markerHeight="3"
- markerUnits="strokeWidth"
- markerWidth="4"
- orient="auto"
- refX="0"
- refY="5"
- viewBox="0 0 10 10">
- <path
- d="M 0,0 10,5 0,10 Z"
- id="path2108"
- inkscape:connector-curvature="0" />
- </marker>
- <inkscape:perspective
- id="perspective2512"
- inkscape:persp3d-origin="177.51199 : 145.02 : 1"
- inkscape:vp_x="0 : 217.53 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="355.02399 : 217.53 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g6874"
- transform="matrix(0,0.20481407,-0.20481468,0,21.367342,36.269364)">
- <g
- transform="translate(-60.48756,20.88584)"
- id="g4249">
- <path
- style="opacity:1;fill:#ffffff;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
- d="m -83.453125,-22.974609 c -5.376817,0.429956 -9.660664,4.547442 -13.361328,8.044921 -3.564947,5.0825059 0.136635,10.961467 3.381057,15.01946358 16.665322,26.91325142 32.457445,54.48025942 49.759568,80.92780242 6.279312,4.465923 12.311608,-2.702738 16.945312,-6.144531 5.028057,-6.148294 -1.463295,-12.928432 -4.628906,-18.078125 -15.908918,-26.030099 -31.395554,-52.4339243 -47.816406,-78.105469 -1.146167,-1.077688 -2.708013,-1.675408 -4.279297,-1.664062 z"
- id="rect4196-6"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#ffffff;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
- d="m -39.880859,-22.970703 c -7.060932,0.77532 -8.150575,9.91459 -12.194295,14.3861732 -15.11969,24.8264198 -30.268154,49.7730288 -45.370158,74.5200768 -2.665608,5.068696 1.107342,10.059 5.464843,12.496094 3.576379,3.841758 11.342953,6.431301 14.136284,0.319983 17.901549,-28.237129 34.81794,-57.202406 52.420357,-85.5504521 1.909666,-4.7750959 -1.047968,-9.7745749 -5.326172,-11.9453129 -2.598674,-2.1041 -5.634935,-4.26473 -9.130859,-4.226562 z"
- id="rect4196-3-7"
- inkscape:connector-curvature="0" />
- </g>
- <rect
- transform="matrix(0.8572455,-0.51490791,0.53158291,0.84700626,0,0)"
- y="-72.229652"
- x="-137.01799"
- height="25.279322"
- width="14.010298"
- id="rect6839"
- style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="matrix(-0.8572455,-0.51490791,-0.53158291,0.84700626,0,0)"
- y="53.786011"
- x="70.273521"
- height="25.279322"
- width="14.010298"
- id="rect6839-6"
- style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="matrix(-0.8572455,0.51490791,-0.53158291,-0.84700626,0,0)"
- y="-33.168327"
- x="124.19476"
- height="25.279322"
- width="14.010298"
- id="rect6839-6-9"
- style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="matrix(0.8572455,0.51490791,0.53158291,-0.84700626,0,0)"
- y="-159.18408"
- x="-83.096924"
- height="25.279322"
- width="14.010298"
- id="rect6839-2"
- style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="rect4196"
- d="m -144.61261,1.9724874 c -0.64453,0.00231 -1.30203,0.204994 -1.88867,0.6230469 l -7.125,5.078125 c -1.56437,1.1148079 -2.02017,3.3336667 -1.02148,4.9746087 l 23.16015,38.052735 -23.16015,38.054687 c -0.99869,1.640942 -0.54289,3.857849 1.02148,4.972657 l 7.125,5.078124 c 1.56438,1.114804 3.62826,0.691724 4.62696,-0.949218 l 19.54296,-32.111328 19.54297,32.111328 c 0.99869,1.640942 3.062578,2.064022 4.626956,0.949218 l 7.125,-5.078124 c 1.564378,-1.114808 2.020176,-3.331715 1.021485,-4.972657 L -113.17511,50.701003 -90.014949,12.648268 c 0.998691,-1.640942 0.542893,-3.8598008 -1.021485,-4.9746087 l -7.125,-5.078125 C -99.725812,1.4807264 -101.7897,1.9038109 -102.78839,3.5447531 L -122.33136,35.656081 -141.87432,3.5447531 c -0.62419,-1.0255889 -1.66407,-1.5761204 -2.73829,-1.5722657 z"
- style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
- </g>
-</svg>
diff --git a/navit/icons/library.svg b/navit/icons/library.svg
deleted file mode 100644
index b3eabb3d3..000000000
--- a/navit/icons/library.svg
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="library.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="-0.18196318"
- inkscape:cy="52.134449"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="241"
- inkscape:window-y="146"
- inkscape:zoom="3.6867085"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false"
- fit-margin-top="1"
- units="cm"
- fit-margin-left="1"
- fit-margin-right="1"
- fit-margin-bottom="1"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2466"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3333"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3401"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3464"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g3426"
- transform="matrix(0.22109862,0,0,0.22109862,0.32984503,-0.39371079)">
- <path
- inkscape:connector-curvature="0"
- id="path3470-1"
- d="M 48.317007,3.8909439 C 35.009448,11.670562 20.47631,17.945425 8.1012018,27.005544 c -0.313453,1.941972 0.01053,3.498768 -1.745198,4.136804 -2.001536,6.637013 -1.809974,14.654813 -0.41096,21.572413 13.6633812,14.82479 26.0847112,31.205862 40.7823652,44.879851 2.734144,0.784245 3.737744,-2.958498 6.486083,-1.670465 8.512264,-3.257939 15.609769,-9.577354 23.949047,-13.376506 4.902434,-3.350092 12.043198,-5.625712 14.435718,-11.246541 0.04356,-2.731297 -3.741051,-3.57982 -0.260089,-5.588799 1.957113,-2.576537 -3.568957,-4.678406 -0.486005,-5.97956 2.661639,-2.626109 -2.420404,-5.161967 0.754324,-7.064834 C 90.161799,45.994288 83.470262,40.941722 79.216051,35.567519 69.613061,25.375089 61.567851,13.515556 51.07482,4.0686779 50.155568,4.0115179 49.229988,3.2588139 48.317007,3.8909439 Z"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.71303189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <g
- transform="matrix(0.17130321,0,0,0.17130321,-1.4918457,1.7806282)"
- id="g1327">
- <path
- inkscape:connector-curvature="0"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- id="path1329"
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z" />
- </g>
- <path
- inkscape:connector-curvature="0"
- style="fill:#734a08;fill-opacity:1;fill-rule:evenodd;stroke:#734a08;stroke-width:1.71303189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3470"
- d="M 11.172832,29.170012 50.315875,73.620575 87.800311,52.058731 49.652449,7.939891 11.172832,29.170012 Z" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#734a08;fill-opacity:1;fill-rule:evenodd;stroke:#734a08;stroke-width:1.71303189;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3474"
- d="M 9.0695788,34.088521 47.549164,77.87565 47.715069,94.461677 8.9037308,50.591624 9.0695943,34.088521 Z" />
- <path
- inkscape:connector-curvature="0"
- style="opacity:0.75;fill:#734a08;fill-opacity:1;fill-rule:evenodd;stroke:#734a08;stroke-width:2.82262015;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccc"
- id="path3476"
- d="m 87.501761,57.820256 -35.331184,20.702519 -0.0245,0.545655 35.301532,-20.687696 0.05435,-0.560478 z" />
- <path
- inkscape:connector-curvature="0"
- style="opacity:0.75;fill:#734a08;fill-opacity:1;fill-rule:evenodd;stroke:#734a08;stroke-width:2.82262015;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccc"
- id="path3505"
- d="m 87.501761,64.672381 -35.331184,20.702518 -0.0245,0.545659 35.301532,-20.6877 0.05435,-0.560477 z" />
- <path
- inkscape:connector-curvature="0"
- style="opacity:0.75;fill:#734a08;fill-opacity:1;fill-rule:evenodd;stroke:#734a08;stroke-width:2.82262015;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccc"
- id="path3507"
- d="m 87.501761,71.524509 -35.331184,20.702519 -0.0245,0.545655 35.301532,-20.687696 0.05435,-0.560478 z" />
- </g>
-</svg>
diff --git a/navit/icons/mark.svg b/navit/icons/mark.svg
deleted file mode 100644
index 175cb2179..000000000
--- a/navit/icons/mark.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
- sodipodi:docname="zoom_in.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/ce/Desktop/NavitIcons/bench.png"
- inkscape:export-xdpi="40.180466"
- inkscape:export-ydpi="40.180466"
- version="1.0">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:persp3d-origin="24 : 16 : 1"
- id="perspective2872" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.919596"
- inkscape:cx="31.003895"
- inkscape:cy="14.64192"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1280"
- inkscape:window-height="783"
- inkscape:window-x="-2"
- inkscape:window-y="0"
- width="48px"
- height="48px"
- showguides="true"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- id="path2178"
- style="fill:none;stroke:#808080;stroke-width:8.18078709;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.50196078;stroke-dashoffset:0;marker-start:none"
- d="M 7.8860267,40.190361 C 40.680922,7.3954664 40.680922,7.3954664 40.680922,7.3954664 M 40.477718,40.393566 7.6828235,7.5986708" />
- </g>
-</svg>
diff --git a/navit/icons/memorial.svg b/navit/icons/memorial.svg
deleted file mode 100644
index 2a1ab9f91..000000000
--- a/navit/icons/memorial.svg
+++ /dev/null
@@ -1,451 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="memorial.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="52.0852"
- inkscape:cy="72.678004"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-maximized="0"
- inkscape:window-width="1024"
- inkscape:window-x="119"
- inkscape:window-y="146"
- inkscape:zoom="3.6867085"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path4460"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path4462"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path4464"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path4466"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4904"
- inkscape:persp3d-origin="16 : 10.666667 : 1"
- inkscape:vp_x="0 : 16 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="32 : 16 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- id="Arrow2Lend"
- inkscape:stockid="Arrow2Lend"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- id="path4137"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow1Mend"
- inkscape:stockid="Arrow1Mend"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4125"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.4,0,0,-0.4,-4,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="TriangleOutL"
- inkscape:stockid="TriangleOutL"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
- id="path4214"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.8,0.8)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow1Lend"
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4119"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Tail"
- inkscape:stockid="Tail"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <g
- id="g4152"
- transform="scale(-1.2,-1.2)">
- <path
- d="M -3.8048674,-3.9585227 0.54352094,0"
- id="path4154"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M -1.2866832,-3.9585227 3.0617053,0"
- id="path4156"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M 1.3053582,-3.9585227 5.6537466,0"
- id="path4158"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M -3.8048674,4.1775838 0.54352094,0.21974226"
- id="path4160"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M -1.2866832,4.1775838 3.0617053,0.21974226"
- id="path4162"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- <path
- d="M 1.3053582,4.1775838 5.6537466,0.21974226"
- id="path4164"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
- inkscape:connector-curvature="0" />
- </g>
- </marker>
- <marker
- id="Arrow1Sstart"
- inkscape:stockid="Arrow1Sstart"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4128"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(0.2,0,0,0.2,1.2,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow1Send"
- inkscape:stockid="Arrow1Send"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- id="path4131"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="SemiCircleOut"
- inkscape:stockid="SemiCircleOut"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m -2.5,-0.80913858 c 0,2.75999998 -2.24,4.99999998 -5,4.99999998 l 0,-10 c 2.76,0 5,2.24 5,5.00000002 z"
- id="path4235"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- transform="matrix(0.6,0,0,0.6,4.2752958,0.4580676)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow2Send"
- inkscape:stockid="Arrow2Send"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- id="path4149"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- transform="matrix(-0.3,0,0,-0.3,0.69,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="TriangleOutS"
- inkscape:stockid="TriangleOutS"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
- id="path4220"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="CurveIn"
- inkscape:stockid="CurveIn"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="m 4.625493,-5.0456926 c -2.76,0 -5.00000002,2.24 -5.00000002,5.00000002 0,2.75999998 2.24000002,4.99999998 5.00000002,4.99999998"
- id="path4238"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- transform="scale(0.6,0.6)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="InfiniteLineStart"
- inkscape:stockid="InfiniteLineStart"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <g
- id="g4298"
- transform="translate(-13,0)">
- <circle
- cx="3"
- cy="0"
- id="circle4300"
- r="0.80000001" />
- <circle
- cx="6.5"
- cy="0"
- id="circle4302"
- r="0.80000001" />
- <circle
- cx="10"
- cy="0"
- id="circle4304"
- r="0.80000001" />
- </g>
- </marker>
- <marker
- id="StopS"
- inkscape:stockid="StopS"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,5.65 0,-5.65"
- id="path4229"
- style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="Arrow2Sstart"
- inkscape:stockid="Arrow2Sstart"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- id="path4146"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- transform="matrix(0.3,0,0,0.3,-0.69,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="DiamondS"
- inkscape:stockid="DiamondS"
- orient="auto"
- refX="0"
- refY="0"
- style="overflow:visible">
- <path
- d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 Z"
- id="path4202"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- id="RazorWire"
- inkscape:stockid="RazorWire"
- orient="auto"
- refX="0"
- refY="0">
- style=&quot;overflow:visible&quot;&gt;
- <path
- d="m 0.02272727,-0.74009011 0,1.4375 -7.78124997,2.31250001 18.4374997,0 -7.1874997,-2.31250001 0,-1.4375 7.2499997,-2.15624999 -18.4687497,0 7.74999997,2.15624999 z"
- id="path4286"
- style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.1pt"
- transform="scale(0.8,0.8)"
- inkscape:connector-curvature="0" />
-</marker>
- <inkscape:perspective
- id="perspective5233"
- inkscape:persp3d-origin="16 : 10.666667 : 1"
- inkscape:vp_x="0 : 16 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="32 : 16 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5412"
- inkscape:persp3d-origin="250 : 166.66667 : 1"
- inkscape:vp_x="0 : 250 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="500 : 250 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5571"
- inkscape:persp3d-origin="202.85715 : 136.19048 : 1"
- inkscape:vp_x="0 : 204.28572 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="405.71429 : 204.28572 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective6552"
- inkscape:persp3d-origin="64 : 42.666667 : 1"
- inkscape:vp_x="0 : 64 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="128 : 64 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g4445"
- style="stroke:none"
- transform="matrix(0.22,0,0,0.22,0.58000002,-1.0305571e-7)">
- <g
- id="g4442"
- style="stroke:none">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:25;stroke-miterlimit:4;stroke-dasharray:none;marker:none;enable-background:accumulate"
- d="M 68.956109,0.02849391 C 53.245645,1.207999 37.211889,-1.2571768 21.675974,1.1770927 13.091179,5.4156279 15.269088,16.442169 15.378102,24.162597 c -0.250529,16.952922 0.370917,34.350049 -0.284336,51.031438 -4.905411,5.619262 -4.751633,14.237066 -2.906304,20.984165 3.946361,6.55084 11.984632,2.523485 18.516812,3.283368 l 56.014517,0 C 88.871357,96.003023 88.923864,92.035 88.831953,88.300199 88.893949,80.664267 88.622519,79.53015 86.135059,78.07262 80.901849,71.043543 84.612399,64.166304 83.106484,56.023813 82.693034,39.38013 84.568244,22.406674 81.903955,5.9667882 79.554761,1.2564334 73.821241,-0.23187199 68.956109,0.02849391 Z"
- id="path3585"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccc" />
- </g>
- </g>
- <path
- d="m 6.2531038,0.8643129 c -0.601011,0 -1.111362,0.511576 -1.111362,1.112587 l 0,14.5861621 c 0.0023,0.05665 12.8471352,0.03081 12.8449942,0 l 0,-14.5861621 c 0,-0.601011 -0.511578,-1.112587 -1.112588,-1.112587 l -10.6210442,0 z m 2.190866,1.04397 c 0.04507,1e-6 0.08383,0.0167 0.115179,0.05024 0.03135,0.03354 0.04656,0.07826 0.04656,0.134784 0,0.05653 -0.01521,0.100701 -0.04656,0.13356 -0.03135,0.03286 -0.07011,0.05024 -0.115179,0.05024 -0.0451,2e-6 -0.08263,-0.01738 -0.113955,-0.05024 -0.03132,-0.03286 -0.04779,-0.07702 -0.04779,-0.13356 0,-0.05653 0.01646,-0.101241 0.04779,-0.134784 0.03133,-0.03354 0.06885,-0.05024 0.113955,-0.05024 z m 2.5682632,0.0025 c 0.04507,10e-7 0.08261,0.0167 0.113955,0.05024 0.03135,0.03354 0.04779,0.07825 0.04779,0.134784 0,0.05653 -0.01644,0.101927 -0.04779,0.134785 -0.03135,0.03286 -0.06888,0.04902 -0.113955,0.04902 -0.0451,2e-6 -0.08385,-0.01615 -0.115179,-0.04902 -0.02185,-0.02292 -0.03505,-0.05256 -0.04166,-0.087 -0.0031,0.01155 -0.0069,0.02314 -0.01226,0.03676 -0.0132,0.03352 -0.03058,0.06742 -0.05146,0.102927 -0.01758,-0.01184 -0.03989,-0.02428 -0.06739,-0.03676 -0.0275,-0.01248 -0.05768,-0.01838 -0.09068,-0.01838 -0.02859,1e-6 -0.05251,0.0093 -0.07229,0.02696 -0.01979,0.01774 -0.03063,0.04517 -0.03063,0.08332 l 0,0.04779 0.245062,0 0,0.294076 -0.245062,0 0,0.657994 -0.32716,0 0,-0.942268 c 0,-0.01709 -5.51e-4,-0.04084 0,-0.07107 5.51e-4,-0.03023 0.0027,-0.05511 0.0049,-0.07352 0.0143,-0.10648 0.05171,-0.186722 0.112729,-0.242612 0.06103,-0.05589 0.145997,-0.08455 0.254866,-0.08455 0.02201,10e-7 0.0451,0.0016 0.06985,0.0049 0.02473,0.0032 0.04921,0.0081 0.07229,0.0147 0.0396,0.01184 0.07311,0.03024 0.101701,0.05391 0.01655,0.0137 0.02734,0.03096 0.03431,0.05146 0.0065,-0.03525 0.02071,-0.06448 0.04289,-0.08822 0.03133,-0.03354 0.07007,-0.05024 0.115179,-0.05024 z m -0.158066,0.13846 c -0.0027,0.01456 -0.0036,0.03004 -0.0036,0.04656 0,0.0171 0.0021,0.03286 0.0049,0.04779 0.0046,-0.01686 0.0074,-0.03242 0.0074,-0.04411 0,-0.01882 -0.0035,-0.03532 -0.0086,-0.05024 z M 9.1338228,1.9193289 c 0.02202,10e-7 0.04633,0.0016 0.07107,0.0049 0.02473,0.0033 0.04798,0.0081 0.07107,0.0147 0.0396,0.01184 0.07433,0.02902 0.102927,0.05269 0.02859,0.02367 0.04288,0.05823 0.04288,0.102926 -10e-7,0.0197 -0.0064,0.04613 -0.01961,0.07965 -0.0132,0.03352 -0.03059,0.06864 -0.05146,0.104153 -0.01758,-0.01184 -0.03989,-0.02428 -0.06739,-0.03676 -0.0275,-0.01248 -0.05769,-0.01837 -0.09067,-0.01838 -0.02859,1e-6 -0.05374,0.008 -0.07352,0.02573 -0.01979,0.01774 -0.0294,0.04639 -0.0294,0.08455 l 0,0.04656 0.243837,0 0,0.294076 -0.243837,0 0,0.65922 -0.328386,0 0,-0.943493 c 0,-0.01709 6.89e-4,-0.03962 0.0012,-0.06985 5.51e-4,-0.03023 0.0014,-0.05511 0.0036,-0.07352 0.0143,-0.10648 0.0517,-0.187947 0.11273,-0.243838 0.06103,-0.05589 0.145996,-0.08331 0.254865,-0.08332 z m 0.417833,0.01348 c 0.02641,1e-6 0.05246,0.0027 0.0772,0.0086 0.02473,0.0059 0.04625,0.01674 0.06494,0.03185 0.01869,0.01513 0.03379,0.03553 0.04533,0.06249 0.01155,0.02697 0.01715,0.06211 0.01715,0.104152 l 0,1.182429 c -0.04508,0.01709 -0.08488,0.02574 -0.120081,0.02574 -0.05057,0 -0.08959,-0.0076 -0.11763,-0.02206 -0.02804,-0.01446 -0.04875,-0.03269 -0.06249,-0.05637 -0.01374,-0.02367 -0.02176,-0.0512 -0.02451,-0.08209 -0.0027,-0.03089 -0.0049,-0.06384 -0.0049,-0.09803 l 0,-1.14322 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0027 0.02558,-0.0048 0.04043,-0.0061 0.01485,-0.0013 0.02859,-0.0012 0.04288,-0.0012 z m -2.151656,0.02574 c 0.02641,10e-7 0.05124,0.0027 0.07597,0.0086 0.02474,0.0059 0.04625,0.01674 0.06494,0.03185 0.01869,0.01513 0.03502,0.03553 0.04656,0.0625 0.01155,0.02696 0.01716,0.0621 0.01716,0.104152 l 0,0.634713 c 0.0055,-0.02889 0.01363,-0.0575 0.02574,-0.08577 0.0121,-0.02826 0.02787,-0.05568 0.04656,-0.08332 l 0.08945,-0.136009 c 0.02088,-0.03154 0.04331,-0.05909 0.06862,-0.08209 0.0253,-0.02301 0.06019,-0.03431 0.104153,-0.03431 0.0253,0 0.05055,0.0037 0.07474,0.01226 0.02419,0.0085 0.04503,0.01767 0.06372,0.02818 0.02087,0.01184 0.04012,0.02595 0.05882,0.04044 l -0.225459,0.378598 0.267119,0.486451 c -0.07259,0.03546 -0.139253,0.05392 -0.199726,0.05392 -0.05168,0 -0.09161,-0.01196 -0.121307,-0.03431 -0.0297,-0.02235 -0.05644,-0.05031 -0.07842,-0.08577 l -0.105384,-0.176452 c -0.01869,-0.03021 -0.0331,-0.05825 -0.04411,-0.08455 -0.01101,-0.0263 -0.019,-0.05536 -0.02451,-0.08822 l 0,0.44724 -0.330835,0 0,-1.384607 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0027 0.02558,-0.0035 0.04043,-0.0049 0.01485,-0.0013 0.02982,-0.0025 0.04411,-0.0025 z m -0.491352,0.01715 c 0.02641,10e-7 0.05124,0.0039 0.07597,0.0098 0.02474,0.0059 0.04748,0.01551 0.06617,0.03063 0.01869,0.01513 0.03379,0.03676 0.04534,0.06372 0.01154,0.02696 0.01716,0.06088 0.01716,0.102926 l 0,1.183655 c -0.04507,0.01709 -0.0861,0.02573 -0.121307,0.02573 -0.05057,0 -0.08959,-0.0075 -0.11763,-0.02206 -0.02804,-0.01446 -0.04875,-0.03269 -0.06249,-0.05637 -0.01374,-0.02367 -0.02176,-0.0512 -0.02451,-0.08209 -0.0028,-0.03089 -0.0037,-0.06384 -0.0037,-0.09802 l 0,-1.14322 c 0.01319,-0.0013 0.02614,-0.0035 0.04044,-0.0061 0.01208,-0.0027 0.02558,-0.0048 0.04044,-0.0061 0.01485,-0.0013 0.02981,-0.0025 0.04411,-0.0025 z m 6.3655192,0.0025 c 0.02202,10e-7 0.04511,0.0016 0.06985,0.0049 0.02473,0.0033 0.04921,0.0081 0.07229,0.0147 0.0396,0.01184 0.07311,0.03024 0.101702,0.05391 0.02145,0.01775 0.03507,0.04026 0.04044,0.06985 l 0,-0.111504 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0027 0.02558,-0.0048 0.04044,-0.0061 0.01485,-0.0013 0.02982,-0.0025 0.04411,-0.0025 0.02641,2e-6 0.05123,0.0027 0.07597,0.0086 0.02473,0.0059 0.04625,0.01673 0.06494,0.03185 0.01869,0.01513 0.03379,0.03676 0.04533,0.06372 0.01155,0.02696 0.01715,0.06088 0.01715,0.102927 l 0,1.183655 c -0.04508,0.01709 -0.08488,0.02573 -0.120082,0.02573 -0.05057,0 -0.08959,-0.0075 -0.117631,-0.02206 -0.02803,-0.01446 -0.04875,-0.03392 -0.06249,-0.05759 -0.01375,-0.02367 -0.02175,-0.04998 -0.02451,-0.08087 -0.0028,-0.03089 -0.0049,-0.06384 -0.0049,-0.09802 l 0,-0.977802 c -0.0029,0.01628 -0.0083,0.03507 -0.01715,0.05759 -0.0132,0.03352 -0.03058,0.06864 -0.05146,0.104151 -0.01758,-0.01184 -0.03989,-0.02428 -0.06739,-0.03676 -0.0275,-0.01248 -0.05768,-0.01838 -0.09068,-0.01838 -0.02859,1e-6 -0.05251,0.0093 -0.07229,0.02696 -0.01979,0.01774 -0.02941,0.04517 -0.02941,0.08333 l 0,0.04779 0.243838,0 0,0.292851 -0.243838,0 0,0.65922 -0.328386,0 0,-0.942268 c 0,-0.01709 -5.51e-4,-0.04084 0,-0.07107 5.51e-4,-0.03023 0.0027,-0.0551 0.0049,-0.07352 0.0143,-0.106481 0.0517,-0.187948 0.112729,-0.243838 0.06103,-0.05589 0.145997,-0.08331 0.254866,-0.08332 z m 0.284274,0.197276 c 0.0014,-0.0079 0.0025,-0.01559 0.0025,-0.02206 0,-0.01118 -6.66e-4,-0.02201 -0.0025,-0.03185 l 0,0.05391 z m 1.819595,-0.196051 c 0.02201,2e-6 0.0451,0.0016 0.06985,0.0049 0.02473,0.0033 0.04921,0.0081 0.07229,0.0147 0.03961,0.01183 0.07311,0.03024 0.101701,0.05391 0.02859,0.02367 0.04288,0.05823 0.04288,0.102926 -10e-7,0.0197 -0.0064,0.04613 -0.0196,0.07965 -0.0132,0.03352 -0.03059,0.06742 -0.05146,0.102927 -0.01758,-0.01184 -0.03989,-0.02305 -0.06739,-0.03554 -0.0275,-0.01248 -0.05768,-0.0196 -0.09067,-0.0196 -0.02859,0 -0.05251,0.0093 -0.07229,0.02696 -0.01979,0.01774 -0.02941,0.04517 -0.02941,0.08332 l 0,0.04779 0.243837,0 0,0.294076 -0.243837,0 0,0.657994 -0.328385,0 0,-0.942267 c 0,-0.01709 -5.51e-4,-0.04084 0,-0.07107 5.51e-4,-0.03023 0.0027,-0.05388 0.0049,-0.07229 0.0143,-0.106481 0.0517,-0.187948 0.112728,-0.243838 0.06103,-0.05589 0.145997,-0.08455 0.254866,-0.08455 z m -2.791271,0.0025 c 0.02638,2e-6 0.05244,0.0027 0.0772,0.0086 0.02475,0.0059 0.04625,0.01673 0.06494,0.03185 0.01869,0.01513 0.03379,0.03553 0.04533,0.0625 0.01155,0.02696 0.01715,0.0621 0.01715,0.104153 l 0,1.191006 -0.247514,0 c -0.01652,0 -0.03093,-0.0055 -0.04411,-0.0147 -0.01319,-0.0093 -0.01961,-0.02861 -0.01961,-0.05881 -0.01541,0.02363 -0.03998,0.04587 -0.07352,0.06494 -0.03354,0.01908 -0.07563,0.02818 -0.126207,0.02818 -0.03738,0 -0.07399,-0.0075 -0.110279,-0.02206 -0.03629,-0.01446 -0.06889,-0.03982 -0.09802,-0.07596 -0.02912,-0.03615 -0.05291,-0.08582 -0.07107,-0.148264 -0.01815,-0.06245 -0.02696,-0.140574 -0.02696,-0.23526 0,-0.09465 0.0074,-0.174423 0.02451,-0.240162 0.01705,-0.06574 0.04003,-0.119773 0.06862,-0.160517 0.02859,-0.04074 0.06187,-0.06981 0.09925,-0.08822 0.03738,-0.01841 0.07692,-0.02818 0.11763,-0.02818 0.02637,10e-7 0.05017,0.0045 0.07107,0.01103 0.02089,0.0066 0.03784,0.01351 0.05268,0.02206 0.01485,0.0085 0.02742,0.01718 0.03676,0.02574 0.0094,0.0085 0.01509,0.01445 0.01839,0.01838 l 0,-0.482774 c 0.01323,-0.0013 0.0274,-0.0035 0.04166,-0.0061 0.01211,-0.0027 0.02491,-0.0048 0.0392,-0.0061 0.0143,-0.0013 0.02859,-0.0012 0.04288,-0.0012 z m 1.557378,0.01348 c 0.02641,2e-6 0.05246,0.0027 0.0772,0.0086 0.02473,0.0059 0.04625,0.01673 0.06494,0.03185 0.01869,0.01513 0.03379,0.03676 0.04533,0.06372 0.01154,0.02697 0.01715,0.06088 0.01715,0.102926 l 0,0.634714 c 0.0055,-0.02889 0.01486,-0.0575 0.02696,-0.08577 0.0121,-0.02826 0.02787,-0.05568 0.04656,-0.08332 l 0.08822,-0.13601 c 0.02088,-0.03153 0.04454,-0.05909 0.06985,-0.08209 0.0253,-0.023 0.06019,-0.03431 0.104153,-0.03431 0.02531,0 0.04932,0.005 0.07352,0.01348 0.02419,0.0085 0.04625,0.01767 0.06494,0.02818 0.02088,0.01184 0.04012,0.02472 0.05881,0.03921 l -0.225458,0.378623 0.267118,0.487676 c -0.07259,0.03547 -0.139252,0.05269 -0.199726,0.05269 -0.05168,0 -0.09283,-0.01074 -0.122532,-0.03308 -0.0297,-0.02235 -0.05521,-0.05153 -0.0772,-0.087 l -0.105377,-0.175289 c -0.01869,-0.03021 -0.0331,-0.05947 -0.04411,-0.08577 -0.01101,-0.0263 -0.02023,-0.05536 -0.02574,-0.08822 l 0,0.44724 -0.32961,0 0,-1.383382 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0027 0.02558,-0.0048 0.04043,-0.0061 0.01485,-0.0013 0.02859,-0.0025 0.04288,-0.0025 z m 2.109994,0 c 0.02637,2e-6 0.05244,0.0027 0.0772,0.0086 0.02475,0.0059 0.04625,0.01673 0.06494,0.03185 0.01869,0.01513 0.03379,0.03676 0.04533,0.06372 0.01154,0.02697 0.01715,0.06088 0.01715,0.102926 l 0,1.191008 -0.247514,0 c -0.01652,0 -0.03093,-0.0043 -0.04411,-0.01348 -0.01319,-0.0092 -0.01961,-0.0286 -0.01961,-0.05881 -0.01541,0.02363 -0.03998,0.04464 -0.07352,0.06372 -0.03354,0.01907 -0.07563,0.02818 -0.126208,0.02818 -0.03738,0 -0.07398,-0.0064 -0.110278,-0.02083 -0.03629,-0.01446 -0.06889,-0.03983 -0.09803,-0.07596 -0.02913,-0.03615 -0.05291,-0.08582 -0.07107,-0.148264 -0.01816,-0.06245 -0.02696,-0.140575 -0.02696,-0.235261 0,-0.09465 0.0074,-0.175648 0.02451,-0.241387 0.01705,-0.06574 0.04003,-0.118547 0.06862,-0.159291 0.02859,-0.04074 0.06187,-0.06981 0.09925,-0.08822 0.03738,-0.01841 0.07692,-0.02818 0.11763,-0.02818 0.02637,0 0.05017,0.0032 0.07107,0.0098 0.02088,0.0066 0.03784,0.01474 0.05269,0.02328 0.01485,0.0085 0.02741,0.01718 0.03676,0.02573 0.0094,0.0085 0.01509,0.01445 0.01838,0.01838 l 0,-0.482775 c 0.01322,-0.0013 0.0274,-0.0035 0.04166,-0.0061 0.01211,-0.0027 0.02491,-0.0048 0.0392,-0.0061 0.01429,-0.0013 0.02859,-0.0025 0.04288,-0.0025 z m -4.658653,0.384747 c 0.09018,1e-6 0.1694,0.01615 0.236486,0.04901 0.02967,0.01448 0.05427,0.03231 0.07352,0.05269 0.01925,0.02038 0.02818,0.04469 0.02819,0.07229 0,0.02363 -0.0057,0.05167 -0.01838,0.08455 -0.01263,0.03288 -0.0291,0.0641 -0.04779,0.09435 -0.03303,-0.03025 -0.06665,-0.05446 -0.102926,-0.07352 -0.03627,-0.01905 -0.07412,-0.02818 -0.111503,-0.02818 -0.04728,2e-6 -0.07107,0.01615 -0.07107,0.04901 0,0.02102 0.0094,0.03662 0.02696,0.04779 0.01758,0.01118 0.03978,0.0203 0.06617,0.02818 0.02639,0.0079 0.05498,0.01709 0.08577,0.02696 0.03078,0.0099 0.05937,0.02439 0.08577,0.04411 0.02639,0.01972 0.04856,0.04669 0.06617,0.08087 0.0176,0.03418 0.02574,0.07958 0.02574,0.134786 -1e-6,0.105197 -0.03099,0.188741 -0.09313,0.251189 -0.06213,0.06245 -0.152027,0.09435 -0.270795,0.09435 -0.0682,0 -0.121352,-0.0072 -0.159291,-0.01961 -0.03795,-0.0125 -0.06869,-0.02483 -0.09068,-0.03798 -0.02859,-0.01709 -0.04782,-0.03599 -0.05881,-0.05637 -0.01099,-0.02038 -0.01593,-0.04137 -0.01593,-0.06372 0,-0.03418 0.0058,-0.06761 0.01961,-0.100476 0.01374,-0.03286 0.0302,-0.06526 0.04778,-0.0968 0.01319,0.01444 0.02829,0.02794 0.04533,0.04044 0.01705,0.01249 0.03534,0.0238 0.05514,0.03431 0.0198,0.01051 0.04037,0.01859 0.06127,0.0245 0.02088,0.0059 0.04023,0.0086 0.06004,0.0086 0.02859,10e-7 0.04917,-0.0048 0.06126,-0.01593 0.0121,-0.01118 0.01838,-0.02579 0.01838,-0.04289 0,-0.01974 -0.0088,-0.03595 -0.02696,-0.04779 -0.01816,-0.01184 -0.041,-0.02144 -0.06739,-0.03063 -0.02639,-0.0092 -0.05512,-0.02002 -0.087,-0.03185 -0.03188,-0.01184 -0.06061,-0.02863 -0.087,-0.04901 -0.02639,-0.02038 -0.04926,-0.04735 -0.06739,-0.08087 -0.01814,-0.03352 -0.02696,-0.07719 -0.02696,-0.131108 0,-0.05256 0.0095,-0.0978 0.02819,-0.137235 0.01869,-0.03944 0.04341,-0.07239 0.07474,-0.09803 0.03133,-0.02564 0.06714,-0.04509 0.107828,-0.05759 0.04069,-0.01249 0.08355,-0.01838 0.128658,-0.01838 z m -3.1809212,0.0012 c 0.02641,10e-7 0.05246,0.0027 0.07719,0.0086 0.02474,0.0059 0.04625,0.01675 0.06494,0.03185 0.01869,0.01511 0.03379,0.03553 0.04534,0.0625 0.01154,0.02696 0.01716,0.06211 0.01716,0.104152 l 0,0.69843 c 0,0.02892 -0.0014,0.06387 -0.0036,0.106603 -0.0022,0.04273 -0.007,0.081 -0.01471,0.115179 -0.01212,0.0526 -0.03108,0.09685 -0.05636,0.132334 -0.02529,0.03549 -0.0532,0.06407 -0.08455,0.08577 -0.03134,0.02171 -0.06246,0.03737 -0.09435,0.04656 -0.03188,0.0092 -0.06023,0.01348 -0.08332,0.01348 -0.04728,-1e-6 -0.08093,-0.01018 -0.102926,-0.03185 -0.022,-0.02169 -0.03765,-0.05348 -0.04534,-0.09557 -0.0033,-0.01709 -0.0057,-0.03486 -0.0074,-0.05392 -0.0017,-0.01905 -0.0039,-0.04556 -0.0061,-0.07842 0.03521,-0.0039 0.06377,-0.01144 0.08577,-0.02328 0.022,-0.01184 0.03937,-0.02692 0.05146,-0.04533 0.0121,-0.01841 0.02011,-0.04063 0.02451,-0.06494 0.0044,-0.02431 0.0074,-0.05072 0.0074,-0.07965 l 0,-0.918988 c 0.01319,-0.0013 0.02614,-0.0035 0.04043,-0.0061 0.01208,-0.0027 0.02558,-0.0048 0.04043,-0.0061 0.01485,-0.0013 0.02982,-0.0012 0.04411,-0.0012 z m 2.5682632,0.0025 c 0.02641,10e-7 0.05123,0.0027 0.07597,0.0086 0.02473,0.0059 0.04625,0.01675 0.06494,0.03186 0.01869,0.0151 0.03379,0.03676 0.04533,0.06372 0.01155,0.02696 0.01838,0.06088 0.01838,0.102926 l 0,0.69843 c -10e-7,0.02892 -0.0014,0.0651 -0.0036,0.107828 -0.0022,0.04273 -0.007,0.081 -0.01471,0.11518 -0.01211,0.0526 -0.03108,0.09685 -0.05637,0.132334 -0.02529,0.03549 -0.05321,0.06407 -0.08455,0.08577 -0.03135,0.02171 -0.0637,0.03615 -0.09558,0.04533 -0.03188,0.0092 -0.05901,0.0147 -0.08209,0.0147 -0.04728,0 -0.08215,-0.0114 -0.104152,-0.03308 -0.02199,-0.02169 -0.03643,-0.05349 -0.04411,-0.09558 -0.0033,-0.01709 -0.0057,-0.03486 -0.0074,-0.05391 -0.0016,-0.01905 -0.0039,-0.04556 -0.0061,-0.07842 0.0352,-0.0039 0.06377,-0.01145 0.08577,-0.02328 0.02199,-0.01184 0.03937,-0.02692 0.05146,-0.04533 0.0121,-0.01841 0.02011,-0.0394 0.02451,-0.06372 0.0044,-0.02431 0.0061,-0.05195 0.0061,-0.08087 l 0,-0.918988 c 0.01319,-0.0013 0.02737,-0.0023 0.04166,-0.0049 0.01208,-0.0027 0.02558,-0.0048 0.04044,-0.0061 0.01485,-0.0013 0.02982,-0.0025 0.04411,-0.0025 z m 1.425043,0.307555 c -0.03738,1e-6 -0.06346,0.01938 -0.0772,0.05881 -0.01375,0.03944 -0.02084,0.09338 -0.02084,0.161742 0,0.03154 0.0016,0.06126 0.0049,0.08822 0.0033,0.02697 0.0089,0.05069 0.01715,0.07107 0.0082,0.02038 0.01989,0.03595 0.03308,0.04779 0.01319,0.01184 0.02921,0.01838 0.04901,0.01838 0.01319,0 0.02416,-0.0017 0.03185,-0.0036 0.0077,-0.002 0.01261,-0.0035 0.01593,-0.0049 l 0,-0.42396 c -0.0066,-0.0053 -0.01527,-0.0091 -0.02573,-0.01103 -0.01046,-0.002 -0.0194,-0.0025 -0.02819,-0.0025 z m 3.653894,0.0147 c -0.03013,0.0043 -0.05169,0.0243 -0.06372,0.05881 -0.01375,0.03944 -0.02083,0.09338 -0.02083,0.161742 0,0.03154 0.0016,0.06003 0.0049,0.087 0.0033,0.02696 0.0089,0.05069 0.01715,0.07107 0.0082,0.02038 0.01989,0.03718 0.03309,0.04901 0.01319,0.01184 0.02921,0.01715 0.04901,0.01715 0.01319,0 0.02416,-4.6e-4 0.03185,-0.0025 0.0077,-0.002 0.01261,-0.0035 0.01593,-0.0049 l 0,-0.423959 c -0.0066,-0.0053 -0.01527,-0.0091 -0.02574,-0.01103 -0.01046,-0.002 -0.01939,-0.0025 -0.02818,-0.0025 -0.0047,0 -0.0092,-6.2e-4 -0.01348,0 z m -6.8924052,1.192237 c 0.02641,2e-6 0.05124,0.0039 0.07597,0.0098 0.02474,0.0059 0.04748,0.01551 0.06617,0.03063 0.01869,0.01513 0.03379,0.03676 0.04534,0.06372 0.01154,0.02696 0.01716,0.06088 0.01716,0.102927 l 0,1.183655 c -0.04507,0.01709 -0.0861,0.02573 -0.121307,0.02573 -0.05057,0 -0.08959,-0.0076 -0.11763,-0.02206 -0.02804,-0.01446 -0.04875,-0.03269 -0.06249,-0.05637 -0.01374,-0.02367 -0.02176,-0.0512 -0.02451,-0.08209 -0.0027,-0.03089 -0.0049,-0.06384 -0.0049,-0.09803 l 0,-1.14322 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0027 0.02558,-0.0048 0.04043,-0.0061 0.01485,-0.0013 0.02982,-0.0025 0.04411,-0.0025 z m 0.460718,0 c 0.02641,2e-6 0.05246,0.0039 0.0772,0.0098 0.02473,0.0059 0.04625,0.01551 0.06494,0.03063 0.01869,0.01513 0.03379,0.03676 0.04533,0.06372 0.01155,0.02696 0.01715,0.06088 0.01715,0.102927 l 0,0.634714 c 0.0055,-0.02889 0.01485,-0.05628 0.02696,-0.08455 0.01209,-0.02826 0.02786,-0.0569 0.04656,-0.08455 l 0.08822,-0.136011 c 0.02088,-0.03153 0.04454,-0.05909 0.06985,-0.08209 0.02531,-0.023 0.06019,-0.03431 0.104152,-0.03431 0.02531,1e-6 0.04932,0.005 0.07352,0.01348 0.02419,0.0085 0.04625,0.01767 0.06494,0.02818 0.02088,0.01184 0.04012,0.02472 0.05882,0.03921 l -0.225458,0.378623 0.267119,0.487675 c -0.07259,0.03547 -0.139252,0.05269 -0.199727,0.05269 -0.05168,0 -0.09283,-0.01074 -0.122531,-0.03309 -0.0297,-0.02235 -0.05521,-0.05153 -0.0772,-0.087 L 9.9045458,5.0231569 c -0.01869,-0.03021 -0.0331,-0.05947 -0.04411,-0.08577 -0.01101,-0.0263 -0.02023,-0.05536 -0.02574,-0.08822 l 0,0.447242 -0.329609,0 0,-1.383383 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0027 0.02558,-0.0048 0.04043,-0.0061 0.01485,-0.0013 0.02859,-0.0025 0.04288,-0.0025 z m -0.938592,0.0098 c 0.02638,2e-6 0.05121,0.0027 0.07597,0.0086 0.02475,0.0059 0.04625,0.01674 0.06494,0.03186 0.01869,0.01513 0.03379,0.03676 0.04534,0.06372 0.01154,0.02696 0.01838,0.06088 0.01838,0.102927 l 0,1.191007 -0.247513,0 c -0.01651,0 -0.03215,-0.0043 -0.04534,-0.01348 -0.01319,-0.0092 -0.01961,-0.0286 -0.01961,-0.05881 -0.01541,0.02363 -0.03998,0.04464 -0.07352,0.06372 -0.03354,0.01907 -0.07563,0.02818 -0.126207,0.02818 -0.03738,0 -0.07398,-0.0064 -0.110279,-0.02083 -0.03629,-0.01447 -0.06889,-0.03982 -0.09802,-0.07597 -0.02913,-0.03615 -0.05292,-0.08582 -0.07107,-0.148263 -0.01815,-0.06245 -0.02696,-0.140575 -0.02696,-0.235261 0,-0.09465 0.0087,-0.175648 0.02574,-0.241387 0.01704,-0.06574 0.04003,-0.118548 0.06862,-0.159291 0.02859,-0.04074 0.06064,-0.06981 0.09803,-0.08822 0.03738,-0.01841 0.07692,-0.02818 0.11763,-0.02818 0.02637,1e-6 0.05017,0.0032 0.07107,0.0098 0.02089,0.0066 0.03906,0.01474 0.05391,0.02328 0.01485,0.0085 0.02619,0.01596 0.03553,0.0245 0.0093,0.0085 0.01631,0.01567 0.01961,0.01961 l 0,-0.484 c 0.01322,-0.0013 0.02617,-0.0023 0.04043,-0.0049 0.01212,-0.0027 0.02614,-0.0048 0.04043,-0.0061 0.0143,-0.0013 0.02859,-0.0025 0.04289,-0.0025 z m -0.90551,0.0012 c 0.02202,2e-6 0.04511,0.0016 0.06984,0.0049 0.02474,0.0033 0.0492,0.0081 0.07229,0.0147 0.0396,0.01184 0.07311,0.03024 0.101702,0.05391 0.02859,0.02367 0.04288,0.05701 0.04288,0.101702 0,0.0197 -0.0064,0.04613 -0.01961,0.07965 -0.0132,0.03352 -0.03059,0.06864 -0.05146,0.104152 -0.01758,-0.01184 -0.03989,-0.02428 -0.06739,-0.03676 -0.0275,-0.01248 -0.05769,-0.01837 -0.09067,-0.01838 -0.02859,1e-6 -0.05251,0.0093 -0.07229,0.02696 -0.01979,0.01774 -0.0294,0.04517 -0.0294,0.08333 l 0,0.04779 0.243838,0 0,0.29285 -0.243838,0 0,0.65922 -0.328385,0 0,-0.942267 c 0,-0.01709 6.89e-4,-0.04084 0.0012,-0.07107 5.51e-4,-0.03023 0.0014,-0.0551 0.0036,-0.07352 0.0143,-0.106479 0.0517,-0.187947 0.112729,-0.243838 0.06103,-0.05589 0.145998,-0.08331 0.254866,-0.08332 z m 7.9069682,0.0245 c 0.04508,10e-7 0.08383,0.0167 0.11518,0.05024 0.03135,0.03354 0.04656,0.07948 0.04656,0.13601 0,0.05653 -0.01522,0.100701 -0.04656,0.13356 -0.03135,0.03286 -0.07011,0.04902 -0.11518,0.04901 -0.0451,1e-6 -0.08263,-0.01615 -0.113955,-0.04901 -0.03133,-0.03286 -0.04656,-0.07702 -0.04656,-0.13356 0,-0.05653 0.01523,-0.102467 0.04656,-0.13601 0.03133,-0.03354 0.06885,-0.05024 0.113955,-0.05024 z m -4.273904,0.0012 c 0.02641,2e-6 0.05246,0.0027 0.0772,0.0086 0.02473,0.0059 0.04625,0.01673 0.06494,0.03185 0.01869,0.01513 0.03379,0.03553 0.04533,0.0625 0.01155,0.02696 0.01715,0.06211 0.01715,0.104153 l 0,0.634713 c 0.0055,-0.02889 0.01363,-0.0575 0.02574,-0.08577 0.01209,-0.02827 0.02786,-0.05568 0.04656,-0.08333 l 0.08944,-0.136014 c 0.02088,-0.03153 0.04331,-0.05909 0.06861,-0.08209 0.02531,-0.02301 0.06019,-0.03431 0.104152,-0.03431 0.02531,10e-7 0.05054,0.0037 0.07474,0.01226 0.02419,0.0085 0.04503,0.0189 0.06372,0.02941 0.02088,0.01184 0.04135,0.02472 0.06004,0.03921 l -0.226684,0.378623 0.267119,0.486451 c -0.07259,0.03546 -0.138026,0.05391 -0.198501,0.05391 -0.05168,0 -0.09283,-0.01196 -0.122531,-0.03431 -0.0297,-0.02235 -0.05521,-0.05031 -0.0772,-0.08577 l -0.106596,-0.176615 c -0.01869,-0.03021 -0.0331,-0.05825 -0.04411,-0.08455 -0.01101,-0.0263 -0.01901,-0.05537 -0.02451,-0.08822 l 0,0.447241 -0.329612,0 0,-1.384608 c 0.01319,-0.0013 0.02615,-0.0035 0.04044,-0.0061 0.01208,-0.0027 0.02558,-0.0035 0.04044,-0.0049 0.01485,-0.0013 0.02982,-0.0025 0.04411,-0.0025 z m 1.19836,0.0049 c 0.02201,10e-7 0.0451,0.0016 0.06985,0.0049 0.02473,0.0033 0.04921,0.0081 0.07229,0.0147 0.0396,0.01184 0.07311,0.02902 0.101701,0.05269 0.02859,0.02367 0.04289,0.05823 0.04289,0.102927 -10e-7,0.0197 -0.0064,0.04612 -0.01961,0.07965 -0.0132,0.03352 -0.02936,0.06864 -0.05024,0.104152 -0.01758,-0.01183 -0.04111,-0.02428 -0.06862,-0.03676 -0.0275,-0.01248 -0.05768,-0.01838 -0.09067,-0.01838 -0.02859,10e-7 -0.05251,0.008 -0.07229,0.02574 -0.01979,0.01774 -0.02941,0.04639 -0.02941,0.08455 l 0,0.04656 0.243836,0 0,0.294077 -0.243836,0 0,0.659219 -0.328386,0 0,-0.943493 c 0,-0.01709 6.89e-4,-0.04084 0.0012,-0.07107 5.51e-4,-0.03023 0.0014,-0.05388 0.0036,-0.07229 0.0143,-0.10648 0.0517,-0.187948 0.112728,-0.243838 0.06103,-0.05589 0.145998,-0.08332 0.254866,-0.08332 z m 1.599037,0.02818 c 0.02639,2e-6 0.05244,0.0027 0.0772,0.0086 0.02475,0.0059 0.04625,0.01673 0.06494,0.03185 0.01869,0.01513 0.03379,0.03553 0.04533,0.0625 0.01155,0.02696 0.01715,0.0621 0.01715,0.104152 l 0,1.191007 -0.247514,0 c -0.01651,0 -0.03093,-0.0055 -0.04411,-0.0147 -0.01319,-0.0093 -0.01961,-0.02861 -0.01961,-0.05881 -0.01541,0.02363 -0.03997,0.04464 -0.07352,0.06372 -0.03354,0.01908 -0.07563,0.02941 -0.126208,0.02941 -0.03738,0 -0.07398,-0.0075 -0.110278,-0.02206 -0.03629,-0.01446 -0.0689,-0.03982 -0.09803,-0.07596 -0.02913,-0.03615 -0.05291,-0.08582 -0.07107,-0.148264 -0.01816,-0.06245 -0.02696,-0.140574 -0.02696,-0.23526 0,-0.09465 0.0074,-0.174422 0.02451,-0.240162 0.01705,-0.06574 0.04002,-0.119773 0.06862,-0.160517 0.02859,-0.04074 0.06187,-0.06981 0.09925,-0.08822 0.03738,-0.01841 0.07692,-0.02818 0.11763,-0.02818 0.02637,1e-6 0.05017,0.0045 0.07107,0.01103 0.02089,0.0066 0.03784,0.01351 0.05269,0.02205 0.01485,0.0086 0.02742,0.01719 0.03676,0.02573 0.0094,0.0085 0.01509,0.01445 0.01838,0.01838 l 0,-0.482774 c 0.01322,-0.0013 0.0274,-0.0035 0.04166,-0.0061 0.01211,-0.0027 0.02492,-0.0048 0.0392,-0.0061 0.0143,-0.0013 0.02859,-0.0012 0.04288,-0.0012 z m 0.461946,0 c 0.02641,2e-6 0.05123,0.0027 0.07596,0.0086 0.02473,0.0059 0.04625,0.01673 0.06494,0.03185 0.01869,0.01513 0.03379,0.03553 0.04533,0.0625 0.01155,0.02696 0.01839,0.0621 0.01839,0.104152 l 0,0.634713 c 0.0055,-0.02889 0.01363,-0.0575 0.02574,-0.08577 0.01209,-0.02826 0.02787,-0.0569 0.04656,-0.08455 l 0.08944,-0.136005 c 0.02088,-0.03153 0.04331,-0.05786 0.06861,-0.08087 0.02531,-0.02301 0.06019,-0.03553 0.104152,-0.03553 0.0253,0 0.04932,0.005 0.07352,0.01348 0.02419,0.0085 0.04625,0.01767 0.06494,0.02818 0.02088,0.01184 0.04012,0.02472 0.05882,0.03921 l -0.225458,0.378622 0.267119,0.487676 c -0.0726,0.03546 -0.139252,0.05269 -0.199726,0.05269 -0.05168,0 -0.09161,-0.01074 -0.121307,-0.03309 -0.0297,-0.02235 -0.05644,-0.05153 -0.07842,-0.087 l -0.105377,-0.175225 c -0.01869,-0.03021 -0.03311,-0.05825 -0.04411,-0.08455 -0.01101,-0.0263 -0.01901,-0.05659 -0.02451,-0.08944 l 0,0.448466 -0.330835,0 0,-1.384608 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0027 0.02558,-0.0048 0.04043,-0.0061 0.01485,-0.0013 0.02982,-0.0012 0.04411,-0.0012 z m -3.841368,0.36639 c 0.128668,1e-6 0.220153,0.03019 0.275696,0.09068 0.05554,0.06048 0.08333,0.156473 0.08333,0.287949 l 0,0.384749 c 0,0.03286 0.003,0.06903 0.0074,0.107828 0.0044,0.03879 0.01069,0.07278 0.01838,0.101702 -0.0154,0.0053 -0.02957,0.009 -0.04166,0.01226 -0.01208,0.0033 -0.02397,0.0066 -0.03553,0.0086 -0.01156,0.002 -0.02412,0.0031 -0.03676,0.0036 -0.01263,6.66e-4 -0.02626,0.0012 -0.04166,0.0012 -0.08907,0 -0.141318,-0.03017 -0.155615,-0.09068 -0.01869,0.02235 -0.0458,0.04285 -0.08209,0.06126 -0.03629,0.01841 -0.08226,0.02696 -0.137236,0.02696 -0.0341,0 -0.06668,-0.0054 -0.09802,-0.01593 -0.03135,-0.01051 -0.05913,-0.02722 -0.08333,-0.05024 -0.0242,-0.023 -0.04329,-0.0532 -0.05759,-0.09068 -0.0143,-0.03748 -0.02083,-0.08331 -0.02083,-0.137236 0,-0.07623 0.0167,-0.137215 0.05024,-0.182571 0.03354,-0.04535 0.07346,-0.07926 0.121306,-0.102927 0.04784,-0.02367 0.09836,-0.03878 0.149489,-0.04533 0.05113,-0.0066 0.0948,-0.0098 0.131109,-0.0098 l 0,-0.02818 c -10e-7,-0.01841 -0.0031,-0.03293 -0.0086,-0.04411 -0.0055,-0.01118 -0.0127,-0.01982 -0.02206,-0.02574 -0.0094,-0.0059 -0.02044,-0.0091 -0.03308,-0.01103 -0.01266,-0.002 -0.02615,-0.0036 -0.04043,-0.0036 -0.03846,2e-6 -0.07655,0.0059 -0.113954,0.01839 -0.0374,0.01248 -0.0788,0.03249 -0.124982,0.05881 -0.0209,-0.03025 -0.03735,-0.06052 -0.04779,-0.08944 -0.01043,-0.02892 -0.01593,-0.0505 -0.01593,-0.06494 0,-0.01974 0.0062,-0.03863 0.01715,-0.05637 0.01099,-0.01773 0.0333,-0.03539 0.06739,-0.05514 0.0297,-0.01841 0.0695,-0.0336 0.120082,-0.04411 0.05057,-0.01051 0.102824,-0.01593 0.155615,-0.01593 z m 2.356284,0.05147 c 0.09018,1e-6 0.168173,0.01615 0.235261,0.04901 0.02967,0.01448 0.05427,0.0323 0.07352,0.05269 0.01924,0.02038 0.0294,0.04347 0.0294,0.07107 0,0.02363 -0.007,0.05167 -0.01961,0.08455 -0.01263,0.03288 -0.02787,0.06532 -0.04656,0.09557 -0.03303,-0.03025 -0.06788,-0.05569 -0.104153,-0.07474 -0.03627,-0.01905 -0.07289,-0.02818 -0.110279,-0.02818 -0.04728,10e-7 -0.07107,0.01615 -0.07107,0.04902 0,0.02102 0.0081,0.03784 0.02574,0.04901 0.01758,0.01118 0.03978,0.02029 0.06617,0.02818 0.02639,0.0079 0.05498,0.01709 0.08577,0.02696 0.03078,0.0099 0.05938,0.02439 0.08577,0.04411 0.02639,0.01972 0.04856,0.04669 0.06617,0.08087 0.0176,0.03418 0.02696,0.07835 0.02696,0.13356 0,0.105198 -0.03099,0.189967 -0.09312,0.252414 -0.06213,0.06245 -0.153253,0.09313 -0.272021,0.09313 -0.06819,0 -0.121352,-0.0059 -0.159291,-0.01838 -0.03795,-0.0125 -0.06747,-0.02605 -0.08944,-0.03921 -0.02859,-0.01709 -0.04905,-0.03599 -0.06004,-0.05637 -0.01099,-0.02038 -0.01593,-0.04137 -0.01593,-0.06372 0,-0.03418 0.0071,-0.06761 0.02084,-0.100475 0.01374,-0.03286 0.02898,-0.06526 0.04656,-0.0968 0.01319,0.01444 0.02829,0.02794 0.04533,0.04044 0.01705,0.01249 0.03534,0.0238 0.05514,0.03431 0.0198,0.01051 0.04037,0.01859 0.06126,0.0245 0.02088,0.0059 0.04147,0.0098 0.06126,0.0098 0.02859,1e-6 0.04917,-0.006 0.06126,-0.01715 0.0121,-0.01118 0.01838,-0.02579 0.01838,-0.04289 0,-0.01974 -0.01002,-0.03473 -0.02819,-0.04656 -0.01815,-0.01184 -0.03978,-0.02267 -0.06617,-0.03185 -0.02639,-0.0092 -0.05635,-0.02002 -0.08822,-0.03185 -0.03188,-0.01184 -0.06061,-0.02741 -0.087,-0.04779 -0.02639,-0.02038 -0.04803,-0.04735 -0.06617,-0.08087 -0.01814,-0.03352 -0.02819,-0.07719 -0.02819,-0.131109 -10e-7,-0.05256 0.0095,-0.09902 0.02819,-0.138461 0.01869,-0.03943 0.04341,-0.07116 0.07474,-0.0968 0.03133,-0.02564 0.06837,-0.04509 0.109053,-0.05759 0.04068,-0.0125 0.08355,-0.01838 0.128658,-0.01838 z m 2.470238,0.02206 c 0.02641,1e-6 0.05246,0.0027 0.0772,0.0086 0.02473,0.0059 0.04625,0.01675 0.06494,0.03185 0.01869,0.01511 0.03379,0.03553 0.04533,0.06249 0.01154,0.02696 0.01715,0.06211 0.01715,0.104153 l 0,0.697204 c 0,0.02892 -0.0014,0.0651 -0.0036,0.107828 -0.0022,0.04273 -0.007,0.081 -0.01471,0.11518 -0.01211,0.0526 -0.02985,0.09685 -0.05514,0.132333 -0.02529,0.03549 -0.05443,0.06407 -0.08577,0.08577 -0.03135,0.02171 -0.06247,0.03737 -0.09435,0.04656 -0.03188,0.0092 -0.05901,0.01348 -0.08209,0.01348 -0.04728,0 -0.08215,-0.0114 -0.104151,-0.03309 -0.02199,-0.02169 -0.03765,-0.05348 -0.04533,-0.09557 -0.0033,-0.01709 -0.0057,-0.03486 -0.0074,-0.05391 -0.0016,-0.01905 -0.0027,-0.04434 -0.0049,-0.0772 0.0352,-0.0039 0.06377,-0.01267 0.08577,-0.0245 0.02199,-0.01184 0.03815,-0.02692 0.05024,-0.04533 0.01209,-0.01841 0.02134,-0.03941 0.02573,-0.06372 0.0044,-0.02431 0.0061,-0.05072 0.0061,-0.07965 l 0,-0.918987 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0027 0.02558,-0.0049 0.04043,-0.0061 0.01485,-0.0013 0.02859,-0.0012 0.04289,-0.0012 z m -7.1656512,0.21075 c -0.03013,0.0043 -0.05169,0.0243 -0.06372,0.05881 -0.01374,0.03944 -0.01961,0.09338 -0.01961,0.161742 -1e-6,0.03154 0.0016,0.06003 0.0049,0.087 0.0033,0.02696 0.0089,0.05069 0.01716,0.07107 0.0083,0.02038 0.01867,0.03718 0.03186,0.04901 0.01319,0.01184 0.02921,0.01715 0.04901,0.01715 0.01319,0 0.02416,-4.59e-4 0.03186,-0.0025 0.0077,-0.002 0.01261,-0.0035 0.01593,-0.0049 l 0,-0.42396 c -0.0066,-0.0053 -0.01405,-0.0091 -0.02451,-0.01103 -0.01045,-0.002 -0.02061,-0.0025 -0.0294,-0.0025 -0.0047,0 -0.0092,-6.2e-4 -0.01348,0 z m 5.5396562,0.05881 c -0.03738,1e-6 -0.06346,0.01938 -0.0772,0.05881 -0.01375,0.03944 -0.02083,0.09338 -0.02083,0.161742 -1e-6,0.03154 0.0016,0.06126 0.0049,0.08822 0.0033,0.02696 0.0089,0.05069 0.01715,0.07107 0.0082,0.02038 0.0199,0.03595 0.03308,0.04779 0.01319,0.01184 0.02921,0.01838 0.04901,0.01838 0.01319,0 0.02416,-0.0017 0.03185,-0.0036 0.0077,-0.002 0.0126,-0.0035 0.01593,-0.0049 l 0,-0.423959 c -0.0066,-0.0053 -0.01527,-0.0091 -0.02574,-0.01103 -0.01046,-0.002 -0.01939,-0.0025 -0.02818,-0.0025 z m -3.149064,0.193599 c -0.02088,0.0027 -0.04133,0.007 -0.06004,0.01226 -0.01871,0.0053 -0.03527,0.01221 -0.04901,0.02206 -0.01375,0.0099 -0.02363,0.02343 -0.03185,0.03921 -0.0082,0.01579 -0.01348,0.03631 -0.01348,0.06127 0,0.03025 0.0071,0.05342 0.02083,0.06985 0.01375,0.01643 0.03339,0.0245 0.05759,0.0245 0.0198,0 0.0373,-0.0054 0.05269,-0.01593 0.01539,-0.01051 0.02328,-0.02673 0.02328,-0.04779 l 0,-0.165418 z m 2.233753,3.006927 c 0.04507,1e-6 0.08383,0.0167 0.115179,0.05024 0.03135,0.03354 0.04656,0.07826 0.04656,0.134785 0,0.05653 -0.01521,0.101926 -0.04656,0.134784 -0.03135,0.03286 -0.07011,0.04901 -0.115179,0.04901 -0.0451,10e-7 -0.08263,-0.01615 -0.113955,-0.04901 -0.03133,-0.03286 -0.04779,-0.07825 -0.04779,-0.134784 0,-0.05653 0.01647,-0.101243 0.04779,-0.134785 0.03133,-0.03354 0.06885,-0.05024 0.113955,-0.05024 z m -3.4970542,0.01838 c 0.02202,0 0.04634,0.0016 0.07107,0.0049 0.02473,0.0033 0.04798,0.0081 0.07107,0.01471 0.0396,0.01184 0.07433,0.02902 0.102928,0.05268 0.02859,0.02367 0.04288,0.05823 0.04288,0.102926 -10e-7,0.01969 -0.0076,0.04613 -0.02083,0.07965 -0.0132,0.03352 -0.02936,0.06742 -0.05024,0.102926 -0.01758,-0.01184 -0.03989,-0.02305 -0.06739,-0.03553 -0.0275,-0.01248 -0.05891,-0.0196 -0.0919,-0.01961 -0.02859,2e-6 -0.05251,0.0093 -0.07229,0.02696 -0.01979,0.01774 -0.02941,0.04639 -0.02941,0.08455 l 0,0.04656 0.243838,0 0,0.294076 -0.243838,0 0,0.659221 -0.328385,0 0,-0.943494 c 0,-0.01709 6.89e-4,-0.04084 0.0012,-0.07107 5.51e-4,-0.03023 0.0014,-0.05388 0.0036,-0.07229 0.01429,-0.106481 0.0517,-0.187949 0.112729,-0.243839 0.06103,-0.05589 0.145997,-0.08332 0.254865,-0.08332 z m 4.1758792,0 c 0.02201,0 0.0451,0.0016 0.06985,0.0049 0.02473,0.0033 0.04921,0.0081 0.07229,0.01471 0.03959,0.01184 0.07311,0.02902 0.101701,0.05268 0.02859,0.02367 0.04289,0.05823 0.04289,0.102926 -2e-6,0.01969 -0.0064,0.04613 -0.01961,0.07965 -0.0132,0.03352 -0.03059,0.06742 -0.05146,0.102926 -0.01758,-0.01184 -0.03989,-0.02305 -0.06739,-0.03553 -0.0275,-0.01248 -0.05769,-0.0196 -0.09068,-0.01961 -0.02859,2e-6 -0.05251,0.0093 -0.07229,0.02696 -0.01979,0.01774 -0.02941,0.04639 -0.0294,0.08455 l 0,0.04656 0.243838,0 0,0.294076 -0.243838,0 0,0.659221 -0.328385,0 0,-0.943494 c 0,-0.01709 -5.51e-4,-0.04084 0,-0.07107 5.51e-4,-0.03023 0.0027,-0.05388 0.0049,-0.07229 0.0143,-0.106481 0.0517,-0.187949 0.112729,-0.243839 0.06103,-0.05589 0.145997,-0.08332 0.254865,-0.08332 z m -3.017955,0.0147 c 0.02641,2e-6 0.05123,0.0038 0.07597,0.0098 0.02473,0.0059 0.04748,0.01551 0.06617,0.03063 0.01869,0.01512 0.03379,0.03676 0.04533,0.06372 0.01155,0.02696 0.01715,0.06088 0.01715,0.102926 l 0,1.183655 c -0.04508,0.0171 -0.0861,0.02573 -0.121308,0.02573 -0.05057,0 -0.08959,-0.0076 -0.11763,-0.02206 -0.02804,-0.01446 -0.04875,-0.0327 -0.0625,-0.05637 -0.01374,-0.02367 -0.02175,-0.0512 -0.0245,-0.08209 -0.0028,-0.03089 -0.0036,-0.06384 -0.0036,-0.09803 l 0,-1.14322 c 0.01319,-0.0013 0.02614,-0.0035 0.04044,-0.0061 0.01208,-0.0026 0.02558,-0.0049 0.04043,-0.0061 0.01485,-0.0013 0.02982,-0.0025 0.04411,-0.0025 z m 0.460719,0 c 0.02641,2e-6 0.05123,0.0038 0.07597,0.0098 0.02473,0.0059 0.04748,0.01551 0.06617,0.03063 0.01869,0.01512 0.03379,0.03676 0.04533,0.06372 0.01155,0.02696 0.01715,0.06088 0.01715,0.102926 l 0,0.63594 c 0.0055,-0.02889 0.01363,-0.0575 0.02574,-0.08577 0.0121,-0.02827 0.02786,-0.0569 0.04656,-0.08455 l 0.08944,-0.136011 c 0.02088,-0.03153 0.04331,-0.05909 0.06861,-0.08209 0.0253,-0.02301 0.06019,-0.03431 0.104152,-0.03431 0.02531,10e-7 0.05055,0.005 0.07474,0.01348 0.02419,0.0086 0.04503,0.01767 0.06372,0.02818 0.02088,0.01184 0.04135,0.02473 0.06004,0.0392 l -0.226684,0.378622 0.267119,0.487676 c -0.07259,0.03547 -0.139253,0.05268 -0.199727,0.05268 -0.05168,0 -0.09161,-0.01073 -0.121306,-0.03308 -0.0297,-0.02235 -0.05644,-0.05153 -0.07842,-0.087 l -0.105368,-0.175214 c -0.01869,-0.03021 -0.0331,-0.05825 -0.04411,-0.08455 -0.01101,-0.0263 -0.01901,-0.05659 -0.02451,-0.08944 l 0,0.448467 -0.330835,0 0,-1.384608 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0026 0.02558,-0.0048 0.04044,-0.0061 0.01485,-0.0013 0.02982,-0.0025 0.04411,-0.0025 z m -1.02559,0.420283 c 0.09018,1e-6 0.169399,0.01615 0.236487,0.04901 0.02967,0.01448 0.05427,0.03231 0.07352,0.05268 0.01925,0.02039 0.02819,0.04469 0.02819,0.07229 0,0.02363 -0.0057,0.05167 -0.01839,0.08455 -0.01263,0.03289 -0.0291,0.0641 -0.04779,0.09435 -0.03303,-0.03025 -0.06788,-0.05446 -0.104151,-0.07352 -0.03627,-0.01905 -0.07289,-0.02818 -0.110279,-0.02818 -0.04728,1e-6 -0.07107,0.01615 -0.07107,0.04901 -1e-6,0.02103 0.0094,0.03662 0.02696,0.04779 0.01758,0.01118 0.03978,0.02153 0.06617,0.0294 0.02639,0.0079 0.05498,0.01586 0.08577,0.02573 0.03078,0.0099 0.05938,0.02562 0.08577,0.04533 0.02639,0.01972 0.04856,0.04669 0.06617,0.08087 0.0176,0.03418 0.02573,0.07835 0.02573,0.133559 0,0.105198 -0.03099,0.188742 -0.09312,0.25119 -0.06213,0.06245 -0.152027,0.09435 -0.270795,0.09435 -0.06819,0 -0.121352,-0.0071 -0.159292,-0.01961 -0.03794,-0.0125 -0.06869,-0.02483 -0.09067,-0.03798 -0.02859,-0.0171 -0.04782,-0.03599 -0.05881,-0.05637 -0.01099,-0.02038 -0.01715,-0.04137 -0.01715,-0.06372 0,-0.03418 0.0071,-0.06761 0.02083,-0.100476 0.01375,-0.03286 0.0302,-0.06526 0.04779,-0.0968 0.01319,0.01444 0.02829,0.02794 0.04533,0.04044 0.01705,0.0125 0.03534,0.0238 0.05514,0.03431 0.0198,0.01051 0.04038,0.01858 0.06126,0.02451 0.02089,0.0059 0.04024,0.0086 0.06004,0.0086 0.02859,0 0.04917,-0.0048 0.06127,-0.01593 0.01209,-0.01118 0.01838,-0.02579 0.01838,-0.04289 0,-0.01974 -0.0088,-0.03595 -0.02696,-0.04779 -0.01816,-0.01184 -0.041,-0.02145 -0.06739,-0.03063 -0.02639,-0.0092 -0.05512,-0.02002 -0.087,-0.03185 -0.03188,-0.01184 -0.06061,-0.02741 -0.087,-0.04779 -0.02639,-0.02038 -0.04926,-0.04735 -0.06739,-0.08087 -0.01814,-0.03352 -0.02696,-0.07719 -0.02696,-0.131109 0,-0.05256 0.0095,-0.09902 0.02818,-0.13846 0.01869,-0.03943 0.04341,-0.07239 0.07474,-0.09803 0.03133,-0.02564 0.06713,-0.04387 0.107829,-0.05637 0.04068,-0.0125 0.08355,-0.01961 0.128657,-0.01961 z m 2.258259,0 c 0.128667,1e-6 0.221379,0.03019 0.27692,0.09068 0.05554,0.06048 0.08333,0.156473 0.08333,0.287949 l 0,0.38475 c 0,0.03286 0.0017,0.06903 0.0061,0.107827 0.0044,0.03879 0.01069,0.07278 0.01838,0.101702 -0.01541,0.0053 -0.02957,0.009 -0.04166,0.01226 -0.01208,0.0033 -0.02397,0.0066 -0.03553,0.0086 -0.01156,0.002 -0.0229,0.0031 -0.03553,0.0036 -0.01263,6.66e-4 -0.02748,0.0012 -0.04289,0.0012 -0.08907,0 -0.140095,-0.03016 -0.154391,-0.09068 -0.01869,0.02235 -0.0458,0.04163 -0.08209,0.06004 -0.03629,0.01841 -0.08226,0.02818 -0.137235,0.02818 -0.0341,0 -0.06668,-0.0054 -0.09803,-0.01593 -0.03135,-0.01051 -0.05913,-0.02723 -0.08332,-0.05024 -0.0242,-0.023 -0.0433,-0.0532 -0.05759,-0.09068 -0.0143,-0.03748 -0.02206,-0.08331 -0.02206,-0.137236 0,-0.07623 0.0167,-0.137214 0.05024,-0.182571 0.03354,-0.04535 0.07469,-0.07926 0.122531,-0.102927 0.04784,-0.02367 0.09714,-0.03878 0.148263,-0.04533 0.05113,-0.0066 0.0948,-0.0098 0.13111,-0.0098 l 0,-0.02819 c 0,-0.01841 -0.0031,-0.03293 -0.0086,-0.04411 -0.0055,-0.01117 -0.0127,-0.01982 -0.02206,-0.02573 -0.0094,-0.0059 -0.02044,-0.01029 -0.03309,-0.01226 -0.01266,-0.002 -0.02614,-0.0025 -0.04044,-0.0025 -0.03846,10e-7 -0.07656,0.0059 -0.113955,0.01838 -0.0374,0.01249 -0.0788,0.03249 -0.124983,0.05881 -0.02091,-0.03025 -0.03612,-0.06052 -0.04656,-0.08944 -0.01043,-0.02892 -0.01593,-0.0505 -0.01593,-0.06494 0,-0.01974 0.005,-0.03863 0.01593,-0.05637 0.01099,-0.01774 0.03329,-0.0354 0.06739,-0.05514 0.0297,-0.01841 0.07073,-0.0336 0.121306,-0.04411 0.05057,-0.01051 0.1016,-0.01593 0.15439,-0.01593 z m 0.616334,0.01961 c 0.02641,2e-6 0.05246,0.0039 0.0772,0.0098 0.02473,0.0059 0.04625,0.01553 0.06494,0.03063 0.01869,0.0151 0.03379,0.03676 0.04533,0.06372 0.01155,0.02696 0.01715,0.06088 0.01715,0.102927 l 0,0.698431 c 0,0.02893 -0.0014,0.0651 -0.0036,0.107827 -0.0022,0.04273 -0.0071,0.081 -0.0147,0.11518 -0.01211,0.0526 -0.03108,0.09685 -0.05637,0.132334 -0.02529,0.03548 -0.05321,0.06407 -0.08455,0.08577 -0.03135,0.02171 -0.06247,0.03738 -0.09435,0.04656 -0.03188,0.0092 -0.06023,0.01348 -0.08332,0.01348 -0.04728,0 -0.08093,-0.0114 -0.102927,-0.03308 -0.02199,-0.02169 -0.03765,-0.05348 -0.04533,-0.09557 -0.0033,-0.0171 -0.0057,-0.03486 -0.0074,-0.05392 -0.0016,-0.01905 -0.0039,-0.04556 -0.0061,-0.07842 0.0352,-0.0039 0.06377,-0.01145 0.08577,-0.02328 0.02199,-0.01184 0.03937,-0.02692 0.05146,-0.04533 0.0121,-0.01841 0.02011,-0.0394 0.02451,-0.06372 0.0044,-0.02431 0.0074,-0.05072 0.0074,-0.07965 l 0,-0.918986 c 0.01319,-0.0013 0.02615,-0.0035 0.04044,-0.0061 0.01208,-0.0026 0.02558,-0.0049 0.04044,-0.0061 0.01485,-0.0013 0.02982,-0.0025 0.04411,-0.0025 z m -0.564871,0.517084 c -0.02088,0.0026 -0.0401,0.007 -0.05881,0.01226 -0.01871,0.0053 -0.03527,0.01221 -0.04901,0.02206 -0.01375,0.0099 -0.02485,0.02343 -0.03309,0.0392 -0.0082,0.01579 -0.01226,0.03508 -0.01226,0.06004 0,0.03025 0.0071,0.05464 0.02083,0.07107 0.01375,0.01643 0.03217,0.02451 0.05637,0.02451 0.0198,0 0.0373,-0.0054 0.05268,-0.01593 0.01539,-0.01051 0.02328,-0.02673 0.02328,-0.04778 l 0,-0.165418 z m -2.6013472,0.98148 c 0.04508,2e-6 0.08383,0.01792 0.1151802,0.05146 0.03135,0.03354 0.04656,0.07826 0.04656,0.1347851 0,0.05653 -0.01522,0.100701 -0.04656,0.133559 -0.03135,0.03286 -0.07011,0.04901 -0.1151802,0.04901 -0.0451,1e-6 -0.08385,-0.01615 -0.115181,-0.04901 -0.03133,-0.03286 -0.04656,-0.07703 -0.04656,-0.133559 0,-0.05653 0.01523,-0.1012421 0.04656,-0.1347851 0.03133,-0.03354 0.07008,-0.05146 0.115181,-0.05146 z m 3.6024302,0 c 0.04507,2e-6 0.08261,0.01792 0.113955,0.05146 0.03135,0.03354 0.04656,0.07826 0.04656,0.1347851 0,0.05653 -0.01521,0.100701 -0.04656,0.133559 -0.03135,0.03286 -0.06888,0.04901 -0.113955,0.04901 -0.0451,1e-6 -0.08385,-0.01615 -0.11518,-0.04901 -0.02515,-0.02639 -0.03916,-0.06006 -0.04411,-0.101701 -0.0031,0.01582 -0.0087,0.03364 -0.01715,0.05514 -0.0132,0.03352 -0.02936,0.06864 -0.05024,0.104152 -0.01758,-0.01184 -0.04111,-0.02428 -0.06862,-0.03676 -0.0275,-0.01248 -0.05768,-0.01838 -0.09067,-0.01838 -0.02859,2e-6 -0.05251,0.0093 -0.07229,0.02696 -0.01979,0.01773 -0.02941,0.04517 -0.02941,0.08332 l 0,0.04779 0.243838,0 0,0.292851 -0.243838,0 0,0.65922 -0.328385,0 0,-0.942267 c 0,-0.01709 6.89e-4,-0.04084 0.0012,-0.07107 5.51e-4,-0.03023 0.0014,-0.05511 0.0036,-0.07352 0.0143,-0.106479 0.0517,-0.187946 0.112729,-0.2438361 0.06103,-0.05589 0.145997,-0.08331 0.254866,-0.08333 0.02202,2e-6 0.0451,0.0016 0.06985,0.0049 0.02473,0.0033 0.04921,0.0081 0.07229,0.0147 0.0396,0.01184 0.07311,0.03024 0.101701,0.05391 0.02076,0.01718 0.03352,0.03913 0.0392,0.06739 0.0043,-0.04392 0.01923,-0.07987 0.04533,-0.1078271 0.03133,-0.03354 0.07008,-0.05146 0.11518,-0.05146 z m -0.160516,0.1592921 c -8.96e-4,0.0088 -0.0012,0.01755 -0.0012,0.02696 0,0.01115 0.0012,0.02163 0.0025,0.03185 0.0017,-0.0089 0.0025,-0.01745 0.0025,-0.0245 -1e-6,-0.01225 -0.0015,-0.02365 -0.0036,-0.03431 z m 1.583109,-0.1409121 c 0.02202,10e-7 0.0451,0.0016 0.06985,0.0049 0.02473,0.0033 0.04798,0.0081 0.07107,0.01471 0.0396,0.01184 0.07433,0.03024 0.102927,0.05391 0.02859,0.02367 0.04288,0.05701 0.04288,0.1017021 -10e-7,0.01969 -0.0064,0.04612 -0.01961,0.07965 -0.0132,0.03353 -0.03058,0.06864 -0.05146,0.104151 -0.01758,-0.01184 -0.03989,-0.02428 -0.06739,-0.03676 -0.0275,-0.01248 -0.05768,-0.01839 -0.09068,-0.01839 -0.02859,2e-6 -0.05251,0.0093 -0.07229,0.02696 -0.01979,0.01774 -0.03063,0.04517 -0.03063,0.08333 l 0,0.04779 0.245064,0 0,0.29285 -0.245064,0 0,0.659221 -0.328386,0 0,-0.942268 c 0,-0.01709 6.89e-4,-0.04084 0.0012,-0.07107 5.51e-4,-0.03023 0.0014,-0.05511 0.0036,-0.07352 0.0143,-0.106477 0.05293,-0.187946 0.113954,-0.2438351 0.06103,-0.05589 0.145997,-0.08332 0.254866,-0.08332 z m -6.2601422,0.01593 c 0.02638,2e-6 0.05245,0.0027 0.07719,0.0086 0.02475,0.0059 0.04625,0.01673 0.06494,0.03185 0.01869,0.01513 0.03379,0.03553 0.04534,0.06249 0.01154,0.02696 0.01716,0.06211 0.01716,0.1041531 l 0,1.191007 -0.247514,0 c -0.01651,0 -0.03093,-0.0043 -0.04411,-0.01348 -0.01319,-0.0092 -0.01961,-0.02983 -0.01961,-0.06004 -0.01541,0.02363 -0.03998,0.04587 -0.07352,0.06494 -0.03354,0.01908 -0.07563,0.02818 -0.126208,0.02818 -0.03738,0 -0.07521,-0.0076 -0.111504,-0.02206 -0.0363,-0.01446 -0.0689,-0.03982 -0.09802,-0.07596 -0.02913,-0.03615 -0.05291,-0.0846 -0.07107,-0.147039 -0.01816,-0.06245 -0.02696,-0.1418 -0.02696,-0.236486 0,-0.09465 0.0087,-0.174423 0.02574,-0.240162 0.01704,-0.06574 0.04003,-0.118548 0.06862,-0.159291 0.02859,-0.04074 0.06187,-0.07103 0.09925,-0.08944 0.03738,-0.01841 0.0757,-0.02696 0.116405,-0.02696 0.02638,10e-7 0.05018,0.0032 0.07107,0.0098 0.02089,0.0066 0.03906,0.01351 0.05391,0.02206 0.01485,0.0086 0.02741,0.01718 0.03676,0.02574 0.0093,0.0086 0.01509,0.01445 0.01838,0.01838 l 0,-0.4827751 c 0.01322,-0.0013 0.02739,-0.0035 0.04166,-0.0061 0.01212,-0.0026 0.02492,-0.0048 0.03921,-0.0061 0.01429,-0.0013 0.02859,-0.0012 0.04289,-0.0012 z m 0.64084,0.4202841 c 0.09018,1e-6 0.169399,0.01616 0.236486,0.04901 0.02967,0.01449 0.05428,0.03231 0.07352,0.05268 0.01925,0.02039 0.02818,0.04347 0.02818,0.07107 0,0.02363 -0.0057,0.05167 -0.01838,0.08455 -0.01263,0.03289 -0.02909,0.06532 -0.04779,0.09557 -0.03303,-0.03025 -0.06788,-0.05568 -0.104152,-0.07474 -0.03628,-0.01905 -0.07289,-0.02818 -0.110279,-0.02818 -0.04728,10e-7 -0.07107,0.01615 -0.07107,0.04901 -10e-7,0.02103 0.0094,0.03784 0.02695,0.04901 0.01758,0.01118 0.03977,0.02029 0.06617,0.02818 0.0264,0.0079 0.05498,0.01709 0.08577,0.02696 0.03079,0.0099 0.05938,0.02439 0.08577,0.04411 0.02639,0.01972 0.04857,0.04669 0.06617,0.08087 0.0176,0.03418 0.02573,0.07835 0.02573,0.133559 0,0.105198 -0.03099,0.189967 -0.09313,0.252415 -0.06213,0.06245 -0.152027,0.09313 -0.270795,0.09313 -0.06819,0 -0.121351,-0.0058 -0.159291,-0.01838 -0.03794,-0.0125 -0.0687,-0.02605 -0.09067,-0.0392 -0.02859,-0.01709 -0.04783,-0.03476 -0.05881,-0.05514 -0.01099,-0.02039 -0.01716,-0.04259 -0.01716,-0.06494 0,-0.03418 0.0071,-0.06761 0.02083,-0.100477 0.01374,-0.03286 0.0302,-0.06526 0.04779,-0.0968 0.01319,0.01444 0.02829,0.02794 0.04534,0.04044 0.01705,0.0125 0.03534,0.0238 0.05514,0.03431 0.0198,0.01051 0.04038,0.01982 0.06127,0.02574 0.02089,0.0059 0.04024,0.0086 0.06004,0.0086 0.02859,0 0.04917,-0.006 0.06127,-0.01715 0.0121,-0.01117 0.01838,-0.02457 0.01838,-0.04166 0,-0.01974 -0.0088,-0.03595 -0.02696,-0.04779 -0.01816,-0.01184 -0.041,-0.02267 -0.06739,-0.03185 -0.0264,-0.0092 -0.05512,-0.02002 -0.087,-0.03186 -0.03188,-0.01184 -0.0606,-0.02741 -0.087,-0.04779 -0.0264,-0.02038 -0.04925,-0.04735 -0.06739,-0.08087 -0.01814,-0.03352 -0.02696,-0.07719 -0.02696,-0.131108 0,-0.05256 0.0095,-0.09902 0.02819,-0.138462 0.01869,-0.03943 0.04341,-0.07116 0.07474,-0.0968 0.03133,-0.02564 0.06714,-0.04509 0.107829,-0.05759 0.04069,-0.0125 0.08355,-0.01838 0.128658,-0.01838 z m 1.2804562,0 c 0.06709,1e-6 0.124258,0.01187 0.171543,0.03553 0.04728,0.02367 0.08604,0.05492 0.115181,0.09435 0.02915,0.03944 0.05053,0.08588 0.06372,0.138462 0.01319,0.05258 0.01961,0.107563 0.01961,0.165417 l 0,0.02574 c -1e-6,0.01118 -6.66e-4,0.02369 -0.0012,0.03553 -5.51e-4,0.01184 -6.89e-4,0.02258 -0.0012,0.03309 -5.51e-4,0.01051 -0.0013,0.01802 -0.0025,0.02328 l -0.441114,0 c 0.0055,0.04994 0.02128,0.09258 0.04656,0.127432 0.02529,0.03484 0.06645,0.05269 0.122531,0.05269 0.044,0 0.08059,-0.0088 0.110278,-0.02451 0.02969,-0.01577 0.05975,-0.03617 0.08944,-0.0625 0.01429,0.02632 0.02859,0.05649 0.04289,0.09067 0.01429,0.03418 0.02083,0.0644 0.02083,0.09068 -10e-7,0.02235 -0.0048,0.044 -0.0147,0.06372 -0.0099,0.01972 -0.02743,0.03794 -0.05269,0.05637 -0.0242,0.01709 -0.05678,0.03227 -0.09802,0.04411 -0.04125,0.01184 -0.0928,0.01715 -0.15439,0.01715 -0.04508,0 -0.09289,-0.0065 -0.144586,-0.01961 -0.0517,-0.01315 -0.100608,-0.03908 -0.144588,-0.0772 -0.04398,-0.03812 -0.07991,-0.09149 -0.109053,-0.160516 -0.02915,-0.06903 -0.04411,-0.159058 -0.04411,-0.270795 0,-0.08285 0.01189,-0.155192 0.03553,-0.215656 0.02364,-0.06046 0.05518,-0.110049 0.09312,-0.149488 0.03794,-0.03943 0.08094,-0.06859 0.129885,-0.087 0.04895,-0.01841 0.09757,-0.02696 0.147038,-0.02696 z m 0.871199,0 c 0.07588,1e-6 0.139586,0.01291 0.192375,0.0392 0.05279,0.0263 0.09567,0.0619 0.128659,0.106602 0.03299,0.04469 0.05745,0.09702 0.07229,0.156841 0.01485,0.05982 0.02206,0.122882 0.02206,0.189924 -10e-7,0.06704 -0.0079,0.132378 -0.02328,0.194825 -0.01541,0.06245 -0.04,0.11687 -0.07352,0.164192 -0.03352,0.04733 -0.07654,0.08444 -0.129884,0.112729 -0.05334,0.02828 -0.119064,0.04289 -0.19605,0.04289 -0.07588,0 -0.139602,-0.01404 -0.192375,-0.04166 -0.05277,-0.02763 -0.09634,-0.06484 -0.129883,-0.111504 -0.03354,-0.04667 -0.05811,-0.100597 -0.07352,-0.161741 -0.01541,-0.06114 -0.02328,-0.125234 -0.02328,-0.1936 0,-0.06837 0.0094,-0.133701 0.02696,-0.194825 0.0176,-0.06112 0.0439,-0.113371 0.07964,-0.158067 0.03574,-0.04469 0.08078,-0.0803 0.13356,-0.106602 0.05277,-0.0263 0.114764,-0.0392 0.186247,-0.0392 z m 1.018239,0 c 0.01651,1e-6 0.03308,9.64e-4 0.04901,0.0049 0.01594,0.0039 0.0297,0.01105 0.04288,0.01961 0.01319,0.0086 0.02483,0.01985 0.03309,0.03431 0.0082,0.01446 0.01226,0.03166 0.01226,0.05268 0,0.02103 -0.003,0.04487 -0.0074,0.06985 -0.0044,0.02498 -0.01,0.04968 -0.01715,0.07596 -0.0072,0.0263 -0.01447,0.05223 -0.02328,0.0772 -0.0088,0.02498 -0.01816,0.04765 -0.02696,0.06739 -0.02309,-0.02235 -0.04472,-0.03906 -0.06617,-0.05024 -0.02145,-0.01118 -0.0458,-0.01715 -0.07107,-0.01715 -0.02859,1e-6 -0.04953,0.0087 -0.06494,0.02574 -0.01541,0.0171 -0.02328,0.03979 -0.02328,0.06739 l 0,0.550167 -0.33206,0 0,-0.942268 c 0.0099,-0.0026 0.02113,-0.006 0.03431,-0.0086 0.01208,-0.0026 0.02626,-0.0048 0.04166,-0.0061 0.0154,-0.0013 0.03289,-0.0012 0.05269,-0.0012 0.09897,10e-7 0.160826,0.03231 0.185023,0.09802 0.0054,-0.01184 0.01417,-0.02419 0.02573,-0.03798 0.01156,-0.0138 0.02505,-0.02738 0.04044,-0.0392 0.01539,-0.01184 0.03289,-0.02153 0.05269,-0.02941 0.0198,-0.0079 0.04051,-0.01103 0.0625,-0.01103 z m 1.637023,0 c 0.09018,1e-6 0.169399,0.01616 0.236487,0.04901 0.02967,0.01449 0.05305,0.03231 0.07229,0.05268 0.01925,0.02039 0.0294,0.04347 0.0294,0.07107 -10e-7,0.02363 -0.0057,0.05167 -0.01838,0.08455 -0.01263,0.03289 -0.02909,0.06532 -0.04779,0.09557 -0.03303,-0.03025 -0.06788,-0.05568 -0.104151,-0.07474 -0.03628,-0.01905 -0.07289,-0.02818 -0.110279,-0.02818 -0.04728,10e-7 -0.07107,0.01615 -0.07107,0.04901 0,0.02103 0.0094,0.03784 0.02696,0.04901 0.01758,0.01118 0.03978,0.02029 0.06617,0.02818 0.02639,0.0079 0.05498,0.01709 0.08577,0.02696 0.03078,0.0099 0.05938,0.02439 0.08577,0.04411 0.02639,0.01972 0.04856,0.04669 0.06617,0.08087 0.0176,0.03418 0.02572,0.07835 0.02572,0.133559 -10e-7,0.105198 -0.03098,0.189967 -0.09313,0.252415 -0.06213,0.06245 -0.152027,0.09313 -0.270794,0.09313 -0.06819,0 -0.121352,-0.0058 -0.159291,-0.01838 -0.03795,-0.0125 -0.06869,-0.02605 -0.09068,-0.0392 -0.02859,-0.01709 -0.04782,-0.03476 -0.05881,-0.05514 -0.01099,-0.02039 -0.01715,-0.04259 -0.01715,-0.06494 0,-0.03418 0.0071,-0.06761 0.02083,-0.100477 0.01375,-0.03286 0.0302,-0.06526 0.04779,-0.0968 0.01319,0.01444 0.02829,0.02794 0.04533,0.04044 0.01705,0.0125 0.03534,0.0238 0.05514,0.03431 0.0198,0.01051 0.03915,0.01982 0.06004,0.02574 0.02089,0.0059 0.04147,0.0086 0.06126,0.0086 0.02859,0 0.04916,-0.006 0.06127,-0.01715 0.01209,-0.01117 0.01838,-0.02457 0.01838,-0.04166 -10e-7,-0.01974 -0.0088,-0.03595 -0.02696,-0.04779 -0.01816,-0.01184 -0.041,-0.02267 -0.06739,-0.03185 -0.02639,-0.0092 -0.05512,-0.02002 -0.087,-0.03186 -0.03188,-0.01184 -0.06183,-0.02741 -0.08822,-0.04779 -0.02639,-0.02038 -0.04802,-0.04735 -0.06617,-0.08087 -0.01814,-0.03352 -0.02696,-0.07719 -0.02696,-0.131108 0,-0.05256 0.0095,-0.09902 0.02819,-0.138462 0.01869,-0.03943 0.04341,-0.07116 0.07474,-0.0968 0.03133,-0.02564 0.06713,-0.04509 0.107828,-0.05759 0.04068,-0.0125 0.08355,-0.01838 0.128659,-0.01838 z m -4.2420472,0.01961 c 0.02641,1e-6 0.05123,0.0027 0.07597,0.0086 0.02473,0.0059 0.04748,0.01675 0.06617,0.03185 0.01869,0.0151 0.03379,0.03553 0.04533,0.0625 0.01155,0.02696 0.01715,0.0621 0.01715,0.104151 l 0,0.697206 c 0,0.02893 -0.0014,0.0651 -0.0036,0.107828 -0.0022,0.04273 -0.007,0.081 -0.01471,0.115179 -0.01211,0.0526 -0.03108,0.09685 -0.05637,0.132334 -0.02529,0.03549 -0.05321,0.06407 -0.08455,0.08577 -0.03135,0.02171 -0.06369,0.03737 -0.09558,0.04656 -0.03188,0.0092 -0.05901,0.01348 -0.08209,0.01348 -0.04728,-1e-6 -0.08215,-0.01018 -0.104151,-0.03186 -0.02199,-0.02169 -0.03643,-0.05348 -0.04411,-0.09557 -0.0033,-0.0171 -0.0057,-0.03608 -0.0074,-0.05514 -0.0016,-0.01905 -0.0039,-0.04434 -0.0061,-0.0772 0.0352,-0.0039 0.06377,-0.01144 0.08577,-0.02328 0.022,-0.01184 0.03937,-0.02814 0.05146,-0.04656 0.0121,-0.01841 0.02011,-0.03941 0.0245,-0.06372 0.0044,-0.02431 0.0061,-0.05072 0.0061,-0.07965 l 0,-0.918987 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0026 0.02558,-0.0048 0.04044,-0.0061 0.01485,-0.0013 0.02982,-0.0012 0.04411,-0.0012 z m 3.6012062,0 c 0.02641,1e-6 0.05246,0.0027 0.0772,0.0086 0.02473,0.0059 0.04625,0.01675 0.06494,0.03185 0.01869,0.0151 0.03379,0.03553 0.04533,0.0625 0.01155,0.02696 0.01715,0.0621 0.01715,0.104151 l 0,0.697206 c 0,0.02893 -2.28e-4,0.0651 -0.0025,0.107828 -0.0022,0.04273 -0.0082,0.081 -0.01593,0.115179 -0.01211,0.0526 -0.02985,0.09685 -0.05514,0.132334 -0.02529,0.03549 -0.05443,0.06407 -0.08577,0.08577 -0.03135,0.02171 -0.06247,0.03737 -0.09435,0.04656 -0.03188,0.0092 -0.05901,0.01348 -0.08209,0.01348 -0.04728,-1e-6 -0.08215,-0.01018 -0.104153,-0.03186 -0.02199,-0.02169 -0.03765,-0.05348 -0.04533,-0.09557 -0.0033,-0.0171 -0.0057,-0.03608 -0.0074,-0.05514 -0.0016,-0.01905 -0.0027,-0.04434 -0.0049,-0.0772 0.0352,-0.0039 0.06378,-0.01144 0.08577,-0.02328 0.02199,-0.01184 0.03815,-0.02814 0.05024,-0.04656 0.0121,-0.01841 0.02134,-0.03941 0.02574,-0.06372 0.0044,-0.02431 0.0061,-0.05072 0.0061,-0.07965 l 0,-0.918987 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0026 0.02558,-0.0048 0.04044,-0.0061 0.01485,-0.0013 0.02859,-0.0012 0.04289,-0.0012 z m -2.88807,0.226584 c -0.05172,10e-7 -0.07842,0.04749 -0.07842,0.142136 l 0.159291,0 c -10e-7,-0.05388 -0.007,-0.09112 -0.01961,-0.111503 -0.01263,-0.02038 -0.03268,-0.03063 -0.06126,-0.03063 z m -2.0989682,0.04288 c -0.03738,2e-6 -0.06223,0.02061 -0.07597,0.06004 -0.01374,0.03944 -0.02083,0.09216 -0.02083,0.160518 l 0,0.0012 c -10e-7,0.03154 0.0016,0.06003 0.0049,0.087 0.0033,0.02696 0.0089,0.05069 0.01716,0.07107 0.0083,0.02038 0.01867,0.03718 0.03186,0.04901 0.01319,0.01184 0.03044,0.01715 0.05024,0.01715 0.01319,0 0.02293,-4.82e-4 0.03064,-0.0025 0.0077,-0.002 0.01383,-0.0036 0.01716,-0.0049 l 0,-0.425185 c -0.0066,-0.0053 -0.01528,-0.0078 -0.02574,-0.0098 -0.01046,-0.002 -0.02061,-0.0036 -0.0294,-0.0036 z m 2.9689422,0.0025 c -0.01869,0 -0.03447,0.0053 -0.04656,0.01715 -0.01209,0.01184 -0.02171,0.02806 -0.02941,0.04779 -0.0077,0.01972 -0.01317,0.04241 -0.01593,0.06739 -0.0028,0.02498 -0.0036,0.04969 -0.0036,0.07597 0,0.02893 8.96e-4,0.05703 0.0036,0.08333 0.0028,0.0263 0.0082,0.04946 0.01593,0.06985 0.0077,0.02039 0.01787,0.0372 0.02941,0.04901 0.01154,0.01182 0.02664,0.01715 0.04533,0.01715 0.01869,10e-7 0.03324,-0.0059 0.04533,-0.01838 0.0121,-0.01248 0.02159,-0.02864 0.02819,-0.04901 0.0066,-0.02038 0.01195,-0.04477 0.01471,-0.07107 0.0028,-0.0263 0.0036,-0.05317 0.0036,-0.08209 -1e-6,-0.05781 -0.0064,-0.106937 -0.01961,-0.147039 -0.01319,-0.0401 -0.03697,-0.06004 -0.07107,-0.06004 z m -2.7410332,1.226541 c 0.04507,1e-6 0.08384,0.0167 0.11518,0.05024 0.03134,0.03354 0.04656,0.07825 0.04656,0.134784 0,0.05653 -0.01522,0.101927 -0.04656,0.134785 -0.03135,0.03286 -0.07011,0.04901 -0.11518,0.04901 -0.04511,1e-6 -0.08263,-0.01615 -0.113954,-0.04901 -0.03133,-0.03286 -0.04779,-0.07826 -0.04779,-0.134785 0,-0.05653 0.01646,-0.101243 0.04779,-0.134784 0.03133,-0.03354 0.06885,-0.05024 0.113954,-0.05024 z m -1.428719,0.01715 c 0.02202,10e-7 0.04511,0.0016 0.06984,0.0049 0.02474,0.0033 0.0492,0.0081 0.07229,0.0147 0.0396,0.01183 0.07311,0.03024 0.101701,0.05391 0.02859,0.02367 0.04288,0.05823 0.04288,0.102927 0,0.01969 -0.0064,0.04612 -0.01961,0.07965 -0.0132,0.03353 -0.02936,0.06742 -0.05024,0.102927 -0.01758,-0.01184 -0.04112,-0.02305 -0.06862,-0.03553 -0.0275,-0.01248 -0.05769,-0.01961 -0.09067,-0.01961 -0.02859,10e-7 -0.05251,0.0093 -0.07229,0.02696 -0.01979,0.01774 -0.02941,0.04517 -0.02941,0.08333 l 0,0.04779 0.243838,0 0,0.294075 -0.243838,0 0,0.657994 -0.328385,0 0,-0.942268 c 0,-0.01709 6.89e-4,-0.04084 0.0012,-0.07107 5.51e-4,-0.03023 0.0014,-0.05388 0.0036,-0.07229 0.0143,-0.106481 0.0517,-0.187949 0.112729,-0.243838 0.06103,-0.05589 0.145998,-0.08455 0.254866,-0.08455 z m 3.4921522,0 c 0.02201,10e-7 0.04634,0.0016 0.07107,0.0049 0.02473,0.0033 0.04798,0.0081 0.07107,0.0147 0.0396,0.01183 0.07433,0.03024 0.102926,0.05391 0.02859,0.02367 0.04288,0.05823 0.04288,0.102927 -10e-7,0.01969 -0.0076,0.04612 -0.02083,0.07965 -0.0132,0.03353 -0.02936,0.06742 -0.05024,0.102927 -0.01758,-0.01184 -0.03989,-0.02305 -0.06739,-0.03553 -0.0275,-0.01248 -0.05892,-0.01961 -0.0919,-0.01961 -0.02859,10e-7 -0.05251,0.0093 -0.07229,0.02696 -0.01979,0.01774 -0.02941,0.04517 -0.02941,0.08333 l 0,0.04779 0.243838,0 0,0.294075 -0.243838,0 0,0.657994 -0.328385,0 0,-0.942268 c 0,-0.01709 6.88e-4,-0.04084 0.0012,-0.07107 5.51e-4,-0.03023 0.0014,-0.05388 0.0036,-0.07229 0.0143,-0.106481 0.0517,-0.187949 0.112729,-0.243838 0.06103,-0.05589 0.145997,-0.08455 0.254865,-0.08455 z m -3.0792212,0.01593 c 0.02641,2e-6 0.05246,0.0027 0.0772,0.0086 0.02474,0.0059 0.04625,0.01673 0.06494,0.03186 0.01869,0.01512 0.03379,0.03676 0.04534,0.06372 0.01154,0.02696 0.01716,0.06088 0.01716,0.102927 l 0,0.634714 c 0.0055,-0.02889 0.01486,-0.0575 0.02696,-0.08577 0.01209,-0.02827 0.02664,-0.05568 0.04533,-0.08333 l 0.08945,-0.136008 c 0.02088,-0.03153 0.04454,-0.05909 0.06984,-0.08209 0.0253,-0.023 0.05896,-0.03431 0.102927,-0.03431 0.0253,1e-6 0.05055,0.005 0.07474,0.01348 0.02419,0.0086 0.04625,0.01767 0.06494,0.02819 0.02088,0.01184 0.04012,0.02473 0.05881,0.0392 l -0.225458,0.378624 0.267119,0.487676 c -0.07259,0.03547 -0.139252,0.05269 -0.199726,0.05269 -0.05168,0 -0.09283,-0.01074 -0.122532,-0.03309 -0.0297,-0.02235 -0.05522,-0.05153 -0.07719,-0.087 l -0.105373,-0.175221 c -0.01869,-0.03021 -0.03433,-0.05947 -0.04533,-0.08577 -0.01101,-0.0263 -0.019,-0.05536 -0.02451,-0.08822 l 0,0.44724 -0.329611,0 0,-1.383381 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0026 0.02558,-0.0048 0.04043,-0.0061 0.01485,-0.0013 0.02859,-0.0025 0.04288,-0.0025 z m 1.447099,0 c 0.02641,2e-6 0.05124,0.0027 0.07597,0.0086 0.02474,0.0059 0.04748,0.01673 0.06617,0.03186 0.01869,0.01512 0.03379,0.03676 0.04534,0.06372 0.01154,0.02696 0.01716,0.06088 0.01716,0.102927 l 0,1.183655 c -0.04507,0.0171 -0.0861,0.02573 -0.121306,0.02573 -0.05057,0 -0.08959,-0.0076 -0.117631,-0.02206 -0.02804,-0.01446 -0.04875,-0.03392 -0.06249,-0.05759 -0.01374,-0.02367 -0.02176,-0.04997 -0.0245,-0.08087 -0.0027,-0.03089 -0.0036,-0.06384 -0.0036,-0.09802 l 0,-1.14322 c 0.01319,-0.0013 0.02614,-0.0035 0.04043,-0.0061 0.01208,-0.0026 0.02558,-0.0048 0.04043,-0.0061 0.01485,-0.0013 0.02982,-0.0025 0.04411,-0.0025 z m 0.9238892,0 c 0.02638,2e-6 0.05245,0.0027 0.0772,0.0086 0.02475,0.0059 0.04625,0.01673 0.06494,0.03186 0.01869,0.01512 0.03379,0.03676 0.04533,0.06372 0.01155,0.02696 0.01715,0.06088 0.01715,0.102927 l 0,1.191006 -0.247514,0 c -0.01651,0 -0.03093,-0.0043 -0.04411,-0.01348 -0.01319,-0.0092 -0.01961,-0.02861 -0.01961,-0.05882 -0.01541,0.02363 -0.03998,0.04465 -0.07352,0.06372 -0.03354,0.01908 -0.07563,0.02819 -0.126208,0.02819 -0.03738,0 -0.07398,-0.0063 -0.110278,-0.02083 -0.03629,-0.01446 -0.07012,-0.03983 -0.09925,-0.07597 -0.02912,-0.03615 -0.05169,-0.08582 -0.06984,-0.148263 -0.01816,-0.06245 -0.02818,-0.140576 -0.02818,-0.23526 0,-0.09465 0.0087,-0.175649 0.02573,-0.241388 0.01704,-0.06573 0.04003,-0.118548 0.06862,-0.159291 0.02859,-0.04074 0.06187,-0.06981 0.09925,-0.08822 0.03738,-0.01841 0.0757,-0.02818 0.116406,-0.02819 0.02637,0 0.05017,0.0032 0.07107,0.0098 0.02089,0.0066 0.03906,0.01473 0.05391,0.02328 0.01485,0.0086 0.02741,0.01718 0.03676,0.02573 0.0094,0.0086 0.01509,0.01445 0.01838,0.01839 l 0,-0.482775 c 0.01322,-0.0013 0.0274,-0.0035 0.04166,-0.0061 0.01211,-0.0026 0.02491,-0.0048 0.0392,-0.0061 0.0143,-0.0013 0.02859,-0.0025 0.04288,-0.0025 z m 4.294734,0.07474 c 0.07695,2e-6 0.142288,0.0151 0.197277,0.04533 0.05498,0.03023 0.0996,0.07507 0.134784,0.133559 0.03519,0.0585 0.06124,0.129715 0.0772,0.213206 0.01596,0.0835 0.0245,0.177793 0.02451,0.284272 -1e-6,0.216935 -0.03567,0.384142 -0.106601,0.501155 -0.07093,0.117013 -0.182604,0.17522 -0.333286,0.17522 -0.151759,0 -0.262493,-0.05601 -0.334513,-0.169093 -0.07202,-0.113081 -0.109053,-0.282483 -0.109053,-0.507282 0,-0.103871 0.0094,-0.197125 0.02696,-0.280596 0.01758,-0.08347 0.04458,-0.154708 0.08087,-0.213205 0.03629,-0.0585 0.08306,-0.103229 0.139686,-0.134785 0.05663,-0.03155 0.124083,-0.04779 0.202177,-0.04779 z m 0.956973,0 c 0.07148,2e-6 0.135489,0.01406 0.189925,0.04166 0.05444,0.02761 0.09973,0.06758 0.136009,0.118856 0.03627,0.05128 0.06272,0.113853 0.08087,0.187473 0.01816,0.07363 0.02818,0.155477 0.02819,0.247514 -2e-6,0.135409 -0.01656,0.252021 -0.04901,0.34799 -0.03246,0.09597 -0.0752,0.173573 -0.127434,0.234035 -0.05223,0.06046 -0.111692,0.105275 -0.17767,0.133559 -0.06598,0.02828 -0.131416,0.04166 -0.198502,0.04166 -0.03846,0 -0.06948,-0.0032 -0.09313,-0.0098 -0.02364,-0.0066 -0.04329,-0.01625 -0.05759,-0.02941 -0.0143,-0.01315 -0.02446,-0.02873 -0.02941,-0.04779 -0.005,-0.01905 -0.0074,-0.04234 -0.0074,-0.06861 0,-0.01974 0.0022,-0.04291 0.0049,-0.06985 0.0028,-0.02694 0.0052,-0.05011 0.0074,-0.06985 0.02198,0.0053 0.03962,0.0085 0.05391,0.0098 0.0143,0.0013 0.03155,0.0025 0.05024,0.0025 0.0253,0 0.05013,-0.0038 0.07597,-0.0098 0.02584,-0.0059 0.05043,-0.01495 0.07352,-0.0294 0.02309,-0.01446 0.04514,-0.0345 0.06494,-0.05881 0.0198,-0.02431 0.03582,-0.05507 0.04901,-0.0919 -0.0242,0.01841 -0.052,0.03199 -0.08332,0.0392 -0.03133,0.0073 -0.05924,0.0098 -0.08455,0.0098 -0.05279,0 -0.09888,-0.01188 -0.138461,-0.03553 -0.03959,-0.02365 -0.07285,-0.05432 -0.09925,-0.09313 -0.02639,-0.03879 -0.04684,-0.08353 -0.06004,-0.134786 -0.0132,-0.05126 -0.01961,-0.105269 -0.01961,-0.160516 0,-0.08545 0.01095,-0.158691 0.03185,-0.221782 0.02091,-0.06309 0.04961,-0.115978 0.087,-0.158066 0.03738,-0.04209 0.08162,-0.07399 0.131108,-0.09435 0.04949,-0.02036 0.102224,-0.03063 0.160518,-0.03063 z m -0.960649,0.302653 c -0.0198,10e-7 -0.03706,0.0058 -0.05024,0.01838 -0.01319,0.0125 -0.0236,0.03292 -0.03186,0.0625 -0.0082,0.02957 -0.01387,0.06842 -0.01715,0.116405 -0.0033,0.04799 -0.0049,0.106756 -0.0049,0.176446 0,0.138057 0.0079,0.235756 0.02328,0.291625 0.01539,0.05587 0.04237,0.08333 0.08087,0.08333 0.01869,0 0.03391,-0.0058 0.04656,-0.01839 0.01266,-0.0125 0.02362,-0.03414 0.03185,-0.06372 0.0082,-0.02957 0.01452,-0.06841 0.01838,-0.116404 0.0038,-0.04799 0.0049,-0.106756 0.0049,-0.176446 0,-0.06969 -0.0011,-0.12846 -0.0049,-0.176446 -0.0038,-0.04799 -0.01014,-0.08684 -0.01838,-0.116405 -0.0082,-0.02957 -0.01921,-0.04999 -0.03185,-0.0625 -0.01266,-0.01249 -0.02787,-0.01838 -0.04656,-0.01838 z m 0.9631,0.0012 c -0.02198,1e-6 -0.04029,0.01624 -0.05514,0.04779 -0.01485,0.03156 -0.02206,0.07903 -0.02206,0.142138 0,0.06439 0.0081,0.111322 0.02574,0.140911 0.0176,0.02959 0.04286,0.04411 0.07474,0.04411 0.02531,0 0.04759,-0.0032 0.06739,-0.0098 0.0022,-0.01969 0.0038,-0.03965 0.0049,-0.06004 0.0011,-0.02038 0.0012,-0.04137 0.0012,-0.06372 -10e-7,-0.03158 -8.95e-4,-0.06175 -0.0036,-0.09067 -0.0028,-0.02893 -0.0082,-0.05485 -0.01593,-0.0772 -0.0077,-0.02235 -0.01731,-0.04077 -0.0294,-0.05391 -0.0121,-0.01313 -0.02799,-0.01961 -0.04779,-0.01961 z m -3.624487,0.04166 c 0.09018,2e-6 0.1694,0.01615 0.236486,0.04901 0.02967,0.01448 0.05427,0.03231 0.07352,0.05269 0.01925,0.02038 0.02818,0.04468 0.02819,0.07229 -2e-6,0.02363 -0.0057,0.05167 -0.01838,0.08455 -0.01263,0.03288 -0.02786,0.0641 -0.04656,0.09435 -0.03303,-0.03025 -0.06788,-0.05446 -0.104151,-0.07352 -0.03628,-0.01905 -0.07289,-0.0294 -0.110278,-0.0294 -0.04728,1e-6 -0.07107,0.01737 -0.07107,0.05024 0,0.02103 0.0081,0.03661 0.02574,0.04779 0.01758,0.01117 0.03978,0.02029 0.06617,0.02819 0.02639,0.0079 0.05498,0.01709 0.08577,0.02696 0.03079,0.0099 0.05937,0.02439 0.08577,0.04411 0.02639,0.01972 0.04857,0.04669 0.06617,0.08087 0.0176,0.03418 0.02574,0.07958 0.02574,0.134785 0,0.105197 -0.03099,0.188742 -0.09313,0.25119 -0.06213,0.06245 -0.152028,0.09312 -0.270795,0.09312 -0.06819,0 -0.121351,-0.0058 -0.159291,-0.01838 -0.03794,-0.0125 -0.06747,-0.02483 -0.08944,-0.03798 -0.02859,-0.01709 -0.04906,-0.03599 -0.06004,-0.05637 -0.01099,-0.02038 -0.01593,-0.04137 -0.01593,-0.06372 0,-0.03418 0.0071,-0.06761 0.02083,-0.100475 0.01375,-0.03287 0.02898,-0.06526 0.04656,-0.0968 0.01319,0.01444 0.02829,0.02794 0.04533,0.04044 0.01705,0.01249 0.03534,0.0238 0.05514,0.03431 0.0198,0.01051 0.04038,0.01859 0.06126,0.02451 0.02089,0.0059 0.04147,0.0086 0.06126,0.0086 0.02859,0 0.04795,-0.0048 0.06004,-0.01593 0.0121,-0.01117 0.01839,-0.02579 0.01839,-0.04288 -1e-6,-0.01974 -0.0088,-0.03595 -0.02696,-0.04779 -0.01816,-0.01184 -0.041,-0.02145 -0.06739,-0.03063 -0.02639,-0.0092 -0.05512,-0.02002 -0.087,-0.03185 -0.03188,-0.01184 -0.06061,-0.02864 -0.087,-0.04901 -0.02639,-0.02038 -0.04926,-0.04735 -0.06739,-0.08087 -0.01814,-0.03352 -0.02696,-0.07719 -0.02696,-0.131109 0,-0.05256 0.0095,-0.0978 0.02818,-0.137235 0.01869,-0.03943 0.04341,-0.07238 0.07474,-0.09803 0.03133,-0.02564 0.06714,-0.04509 0.107829,-0.05759 0.04069,-0.0125 0.08355,-0.01839 0.128658,-0.01839 z m 0.812385,0 c 0.128668,2e-6 0.220155,0.03019 0.275696,0.09068 0.05554,0.06048 0.08332,0.156473 0.08333,0.287949 l 0,0.384749 c -10e-7,0.03286 0.003,0.06903 0.0074,0.107828 0.0044,0.03879 0.01069,0.07278 0.01838,0.101701 -0.01541,0.0053 -0.02958,0.009 -0.04166,0.01226 -0.01208,0.0033 -0.02397,0.0053 -0.03553,0.0074 -0.01156,0.002 -0.02412,0.0043 -0.03676,0.0049 -0.01263,6.66e-4 -0.02626,0 -0.04166,0 -0.08907,0 -0.140094,-0.03016 -0.15439,-0.09068 -0.01869,0.02235 -0.04703,0.04285 -0.08332,0.06127 -0.03629,0.01841 -0.08227,0.02819 -0.137235,0.02819 -0.0341,0 -0.06669,-0.0054 -0.09803,-0.01593 -0.03135,-0.01051 -0.05913,-0.02723 -0.08332,-0.05024 -0.0242,-0.023 -0.04329,-0.05321 -0.05759,-0.09067 -0.0143,-0.03748 -0.02083,-0.08331 -0.02083,-0.137235 -10e-7,-0.07623 0.0167,-0.137215 0.05024,-0.182571 0.03354,-0.04536 0.07346,-0.07926 0.121307,-0.102927 0.04784,-0.02367 0.09836,-0.03878 0.149489,-0.04533 0.05113,-0.0066 0.0948,-0.0098 0.131109,-0.0098 l 0,-0.02819 c -10e-7,-0.01841 -0.0031,-0.03293 -0.0086,-0.04411 -0.0055,-0.01118 -0.0127,-0.01982 -0.02206,-0.02573 -0.0094,-0.0059 -0.02044,-0.01028 -0.03309,-0.01226 -0.01266,-0.002 -0.02615,-0.0025 -0.04043,-0.0025 -0.03846,2e-6 -0.07656,0.0059 -0.113956,0.01839 -0.0374,0.01249 -0.0788,0.03249 -0.124982,0.05881 -0.0209,-0.03025 -0.03735,-0.06052 -0.04779,-0.08944 -0.01043,-0.02893 -0.01593,-0.0505 -0.01593,-0.06494 0,-0.01974 0.0062,-0.03863 0.01715,-0.05637 0.011,-0.01774 0.0333,-0.03663 0.06739,-0.05637 0.0297,-0.01841 0.0695,-0.03237 0.12008,-0.04288 0.05057,-0.01051 0.102825,-0.01593 0.155616,-0.01593 z m 1.017013,0 c 0.0341,2e-6 0.06842,0.0081 0.104151,0.02328 0.03573,0.01513 0.06888,0.03982 0.09802,0.07596 0.02914,0.03615 0.05293,0.08469 0.07107,0.145813 0.01814,0.06112 0.02696,0.137195 0.02696,0.227908 -10e-7,0.106522 -0.0095,0.193872 -0.02819,0.262218 -0.01869,0.06835 -0.04395,0.122866 -0.07474,0.162967 -0.03079,0.0401 -0.06499,0.0682 -0.102927,0.08333 -0.03794,0.01513 -0.07546,0.02206 -0.113954,0.02206 -0.02967,0 -0.05576,-0.0038 -0.0772,-0.01103 -0.02145,-0.0073 -0.03906,-0.01586 -0.05391,-0.02573 -0.01485,-0.0099 -0.0273,-0.0184 -0.03553,-0.02696 -0.0082,-0.0086 -0.01237,-0.01445 -0.01348,-0.01838 l 0,0.48645 -0.32716,0 0,-1.372355 c 0.0099,-0.0026 0.02235,-0.0048 0.03553,-0.0073 0.01208,-0.0026 0.02503,-0.0048 0.04044,-0.0061 0.01541,-0.0013 0.03289,-0.0025 0.05268,-0.0025 0.100075,2e-6 0.161933,0.03124 0.185023,0.09435 0.01869,-0.03025 0.04487,-0.05663 0.07842,-0.07965 0.03354,-0.02301 0.0787,-0.03431 0.134785,-0.03431 z m -4.8436772,0.01961 c 0.02641,2e-6 0.05124,0.0027 0.07597,0.0086 0.02474,0.0059 0.04748,0.01675 0.06617,0.03185 0.01869,0.0151 0.03379,0.03676 0.04534,0.06372 0.01154,0.02696 0.01716,0.06088 0.01716,0.102927 l 0,0.69843 c 0,0.02893 -0.0014,0.0651 -0.0036,0.107828 -0.0022,0.04273 -0.007,0.081 -0.01471,0.115179 -0.01212,0.0526 -0.03108,0.09685 -0.05636,0.132335 -0.02529,0.03548 -0.0532,0.06407 -0.08455,0.08577 -0.03134,0.02171 -0.06369,0.03615 -0.09557,0.04533 -0.03188,0.0092 -0.05901,0.0147 -0.0821,0.0147 -0.04728,0 -0.08215,-0.0114 -0.104152,-0.03308 -0.022,-0.02169 -0.03643,-0.05349 -0.04411,-0.09557 -0.0033,-0.01709 -0.0057,-0.03486 -0.0074,-0.05391 -0.0017,-0.01905 -0.0039,-0.04556 -0.0061,-0.07842 0.0352,-0.0039 0.06377,-0.01145 0.08577,-0.02328 0.022,-0.01184 0.03937,-0.02692 0.05146,-0.04533 0.0121,-0.01841 0.02011,-0.0394 0.02451,-0.06372 0.0044,-0.02431 0.0073,-0.05195 0.0073,-0.08087 l 0,-0.918987 c 0.01319,-0.0013 0.02614,-0.0023 0.04043,-0.0049 0.01208,-0.0026 0.02558,-0.0048 0.04043,-0.0061 0.01485,-0.0013 0.02982,-0.0025 0.04411,-0.0025 z m 4.6954142,0.262218 c -0.01322,10e-7 -0.02417,0.0017 -0.03186,0.0036 -0.0076,0.002 -0.0126,0.0036 -0.01593,0.0049 l 0,0.398228 c 0.0066,0.0053 0.01405,0.0091 0.02451,0.01103 0.01045,0.002 0.02061,0.0025 0.02941,0.0025 0.03738,0 0.06345,-0.02101 0.0772,-0.06372 0.01374,-0.04271 0.01961,-0.09828 0.01961,-0.166642 0,-0.05918 -0.0073,-0.106164 -0.02206,-0.139687 -0.01485,-0.03352 -0.04131,-0.05024 -0.08087,-0.05024 z m -3.5044052,0.0086 c -0.03013,0.0043 -0.05047,0.02431 -0.0625,0.05881 -0.01375,0.03944 -0.02083,0.09338 -0.02083,0.161742 0,0.03154 0.0016,0.06126 0.0049,0.08822 0.0033,0.02696 0.0089,0.04946 0.01715,0.06985 0.0082,0.02038 0.01867,0.03718 0.03186,0.04901 0.01319,0.01184 0.03044,0.01715 0.05024,0.01715 0.01319,0 0.02293,-4.59e-4 0.03063,-0.0025 0.0077,-0.002 0.01383,-0.0036 0.01715,-0.0049 l 0,-0.42396 c -0.0066,-0.0053 -0.01527,-0.0091 -0.02574,-0.01103 -0.01045,-0.002 -0.02061,-0.0025 -0.0294,-0.0025 -0.0047,0 -0.0092,-6.2e-4 -0.01348,0 z m 2.6871182,0.24629 c -0.02088,0.0026 -0.04133,0.007 -0.06004,0.01226 -0.01871,0.0053 -0.03527,0.01221 -0.04901,0.02206 -0.01374,0.0099 -0.02362,0.02219 -0.03185,0.03798 -0.0082,0.01579 -0.01348,0.03631 -0.01348,0.06126 0,0.03025 0.0071,0.05341 0.02083,0.06985 0.01375,0.01643 0.03339,0.02574 0.05759,0.02574 0.0198,0 0.0373,-0.0054 0.05269,-0.01593 0.01539,-0.01051 0.02328,-0.02673 0.02328,-0.04779 l 0,-0.165418 z m 3.50073,0.104151 c 0.04617,0 0.08358,0.01671 0.112729,0.05024 0.02914,0.03353 0.04411,0.07723 0.04411,0.131109 -1e-6,0.05392 -0.01418,0.09871 -0.04166,0.133559 -0.02748,0.03484 -0.06568,0.05146 -0.11518,0.05146 -0.0484,0 -0.08714,-0.01662 -0.11518,-0.05146 -0.02804,-0.03484 -0.04166,-0.07964 -0.04166,-0.133559 0,-0.05389 0.01564,-0.09759 0.04533,-0.131109 0.0297,-0.03352 0.06643,-0.05024 0.111503,-0.05024 z m -5.594795,0.877327 c 0.04507,1e-6 0.08261,0.0167 0.113954,0.05024 0.03135,0.03354 0.04779,0.07948 0.04779,0.13601 0,0.05653 -0.01644,0.100701 -0.04779,0.133559 -0.03135,0.03286 -0.06888,0.04901 -0.113954,0.04901 -0.0451,1e-6 -0.08385,-0.01615 -0.115181,-0.04901 -0.03132,-0.03286 -0.04656,-0.07703 -0.04656,-0.133559 0,-0.05653 0.01523,-0.102467 0.04656,-0.13601 0.03133,-0.03354 0.07007,-0.05024 0.115181,-0.05024 z m -1.2939352,0.01839 c 0.02202,1e-6 0.04633,0.0016 0.07107,0.0049 0.02474,0.0033 0.04798,0.0081 0.07107,0.01471 0.0396,0.01184 0.07433,0.02902 0.102927,0.05268 0.02859,0.02367 0.04288,0.05823 0.04288,0.102926 0,0.0197 -0.0076,0.04612 -0.02083,0.07965 -0.0132,0.03352 -0.02936,0.06864 -0.05024,0.104152 -0.01758,-0.01184 -0.04112,-0.02429 -0.06862,-0.03676 -0.0275,-0.01248 -0.05769,-0.01838 -0.09067,-0.01838 -0.02859,10e-7 -0.05251,0.008 -0.07229,0.02573 -0.01978,0.01773 -0.02941,0.04639 -0.02941,0.08455 l 0,0.04656 0.243838,0 0,0.294076 -0.243838,0 0,0.65922 -0.328385,0 0,-0.943494 c 0,-0.01709 6.89e-4,-0.03961 0.0012,-0.06985 5.51e-4,-0.03023 0.0014,-0.05511 0.0036,-0.07352 0.0143,-0.10648 0.0517,-0.187949 0.112729,-0.243839 0.06103,-0.05589 0.145997,-0.08332 0.254866,-0.08332 z m 1.9715342,0 c 0.02202,1e-6 0.04633,0.0016 0.07107,0.0049 0.02473,0.0033 0.04798,0.0081 0.07107,0.01471 0.0396,0.01184 0.07433,0.02902 0.102927,0.05268 0.02859,0.02367 0.04288,0.05823 0.04288,0.102926 0,0.0197 -0.0064,0.04612 -0.01961,0.07965 -0.0132,0.03352 -0.03058,0.06864 -0.05146,0.104152 -0.01758,-0.01184 -0.03989,-0.02429 -0.06739,-0.03676 -0.0275,-0.01248 -0.05768,-0.01838 -0.09068,-0.01838 -0.02859,10e-7 -0.05373,0.008 -0.07352,0.02573 -0.01979,0.01773 -0.02941,0.04639 -0.02941,0.08455 l 0,0.04656 0.243838,0 0,0.294076 -0.243838,0 0,0.65922 -0.328384,0 0,-0.943494 c 0,-0.01709 6.89e-4,-0.03961 0.0012,-0.06985 5.51e-4,-0.03023 0.0014,-0.05511 0.0036,-0.07352 0.0143,-0.10648 0.0517,-0.187949 0.112731,-0.243839 0.06103,-0.05589 0.145996,-0.08332 0.254865,-0.08332 z m 2.021773,0.01593 c 0.02641,2e-6 0.05123,0.0027 0.07597,0.0086 0.02473,0.0059 0.04625,0.01673 0.06494,0.03185 0.01869,0.01513 0.03379,0.03553 0.04533,0.06249 0.01155,0.02696 0.01715,0.06211 0.01715,0.104153 l 0,0.634713 c 0.0055,-0.02889 0.01485,-0.0575 0.02696,-0.08577 0.0121,-0.02827 0.02786,-0.0569 0.04656,-0.08455 l 0.08822,-0.13601 c 0.02088,-0.03153 0.04454,-0.05786 0.06985,-0.08087 0.02531,-0.023 0.06019,-0.03553 0.104152,-0.03553 0.02531,0 0.04932,0.005 0.07352,0.01348 0.02419,0.0086 0.04625,0.01767 0.06494,0.02819 0.02087,0.01184 0.04012,0.02473 0.05881,0.0392 l -0.225459,0.378622 0.267119,0.487676 c -0.07259,0.03547 -0.139252,0.05269 -0.199726,0.05269 -0.05168,0 -0.09283,-0.01073 -0.122532,-0.03308 -0.0297,-0.02235 -0.05521,-0.05153 -0.0772,-0.087 l -0.105376,-0.17522 c -0.01869,-0.03021 -0.0331,-0.05825 -0.04411,-0.08455 -0.01101,-0.0263 -0.02023,-0.0566 -0.02574,-0.08944 l 0,0.448467 -0.32961,0 0,-1.384607 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0026 0.02558,-0.0048 0.04043,-0.0061 0.01485,-0.0013 0.02982,-0.0012 0.04411,-0.0012 z m 0.985154,0 c 0.02641,2e-6 0.05246,0.0027 0.0772,0.0086 0.02473,0.0059 0.04625,0.01673 0.06494,0.03185 0.01869,0.01513 0.03379,0.03553 0.04533,0.06249 0.01155,0.02696 0.01715,0.06211 0.01715,0.104153 l 0,1.182429 c -0.04508,0.0171 -0.08488,0.02574 -0.120082,0.02574 -0.05057,0 -0.08959,-0.0063 -0.11763,-0.02083 -0.02804,-0.01446 -0.04997,-0.03393 -0.06372,-0.05759 -0.01375,-0.02367 -0.02175,-0.0512 -0.02451,-0.08209 -0.0028,-0.03089 -0.0036,-0.06384 -0.0036,-0.09803 l 0,-1.143221 c 0.01319,-0.0013 0.02614,-0.0035 0.04044,-0.0061 0.01208,-0.0026 0.02558,-0.0048 0.04044,-0.0061 0.01485,-0.0013 0.02982,-0.0012 0.04411,-0.0012 z m -4.3094382,0.419058 c 0.06709,10e-7 0.124258,0.01187 0.1715442,0.03553 0.04728,0.02366 0.08604,0.05614 0.11518,0.09557 0.02915,0.03944 0.0493,0.08466 0.0625,0.137236 0.01319,0.05258 0.02083,0.108789 0.02083,0.166643 -1e-6,0.0066 -1e-6,0.01456 0,0.02574 -1e-6,0.01117 -6.66e-4,0.02247 -0.0012,0.03431 -5.74e-4,0.01184 -6.89e-4,0.0238 -0.0012,0.03431 -5.51e-4,0.01051 -0.0013,0.01802 -0.0025,0.02328 l -0.4411142,0 c 0.0055,0.04994 0.02128,0.09258 0.04657,0.127434 0.02529,0.03484 0.06523,0.05268 0.121305,0.05268 0.044,0 0.08182,-0.0088 0.1115042,-0.02451 0.02969,-0.01577 0.05852,-0.03617 0.08822,-0.06249 0.0143,0.02632 0.02859,0.05649 0.04289,0.09067 0.01429,0.03418 0.02205,0.0644 0.02206,0.09068 -2e-6,0.02235 -0.0048,0.04277 -0.01471,0.0625 -0.0099,0.01972 -0.02742,0.03918 -0.05268,0.05759 -0.0242,0.01709 -0.05678,0.03105 -0.09802,0.04289 -0.04125,0.01184 -0.0928,0.01838 -0.1543902,0.01838 -0.04508,0 -0.09411,-0.0065 -0.145813,-0.01961 -0.0517,-0.01316 -0.09938,-0.03908 -0.143363,-0.0772 -0.04398,-0.03812 -0.07991,-0.09149 -0.109053,-0.160516 -0.02915,-0.06902 -0.04411,-0.159057 -0.04411,-0.270795 0,-0.08285 0.01189,-0.155193 0.03553,-0.215656 0.02364,-0.06046 0.05396,-0.110049 0.0919,-0.149488 0.03794,-0.03943 0.08216,-0.06859 0.131109,-0.087 0.04894,-0.01841 0.09757,-0.02818 0.147037,-0.02818 z m 1.9629572,0 c 0.128668,10e-7 0.22138,0.03141 0.276921,0.0919 0.05554,0.06048 0.08333,0.155247 0.08333,0.286724 l 0,0.384748 c 0,0.03286 0.0017,0.06903 0.0061,0.107828 0.0044,0.03879 0.01069,0.07278 0.01838,0.101702 -0.01541,0.0053 -0.02958,0.009 -0.04166,0.01226 -0.01208,0.0033 -0.02275,0.0066 -0.03431,0.0086 -0.01156,0.002 -0.02412,0.0031 -0.03676,0.0036 -0.01263,6.66e-4 -0.02626,0.0012 -0.04166,0.0012 -0.08907,0 -0.141318,-0.03016 -0.155615,-0.09067 -0.01869,0.02235 -0.0458,0.04285 -0.08209,0.06126 -0.03629,0.01841 -0.08226,0.02696 -0.137236,0.02696 -0.0341,0 -0.06669,-0.0054 -0.09802,-0.01593 -0.03135,-0.01051 -0.05913,-0.02723 -0.08332,-0.05024 -0.0242,-0.023 -0.04329,-0.0532 -0.05759,-0.09068 -0.0143,-0.03748 -0.02206,-0.08331 -0.02206,-0.137234 0,-0.07623 0.0167,-0.13599 0.05024,-0.181347 0.03354,-0.04535 0.0747,-0.08048 0.122532,-0.104153 0.04784,-0.02367 0.09713,-0.03877 0.148263,-0.04533 0.05113,-0.0066 0.0948,-0.0098 0.131109,-0.0098 l 0,-0.02819 c 0,-0.01841 -0.0031,-0.03293 -0.0086,-0.04411 -0.0055,-0.01118 -0.0127,-0.01982 -0.02206,-0.02572 -0.0094,-0.0059 -0.02044,-0.0091 -0.03308,-0.01103 -0.01265,-0.002 -0.02615,-0.0036 -0.04044,-0.0036 -0.03846,1e-6 -0.07655,0.0072 -0.113954,0.01961 -0.0374,0.01249 -0.07881,0.03127 -0.124982,0.05759 -0.02091,-0.03025 -0.03612,-0.0593 -0.04656,-0.08822 -0.01043,-0.02893 -0.01593,-0.05173 -0.01593,-0.06617 0,-0.01974 0.005,-0.0374 0.01593,-0.05514 0.011,-0.01773 0.03452,-0.03663 0.06861,-0.05637 0.0297,-0.01841 0.0695,-0.0336 0.120081,-0.04411 0.05057,-0.01051 0.101599,-0.01592 0.15439,-0.01593 z m 0.796455,0 c 0.09018,10e-7 0.168174,0.01737 0.235261,0.05024 0.02967,0.01449 0.05427,0.03108 0.07352,0.05146 0.01924,0.02038 0.0294,0.04468 0.02941,0.07229 0,0.02363 -0.007,0.05167 -0.01961,0.08455 -0.01263,0.03289 -0.02786,0.06532 -0.04656,0.09558 -0.03303,-0.03025 -0.06787,-0.05568 -0.10415,-0.07474 -0.03628,-0.01905 -0.07289,-0.02818 -0.11028,-0.02818 -0.04728,1e-6 -0.07107,0.01615 -0.07107,0.04901 0,0.02103 0.0094,0.03784 0.02696,0.04901 0.01758,0.01118 0.03978,0.02029 0.06617,0.02819 0.02639,0.0079 0.05498,0.01709 0.08577,0.02696 0.03078,0.0099 0.05938,0.02439 0.08577,0.04411 0.02639,0.01972 0.04734,0.04669 0.06494,0.08087 0.0176,0.03418 0.02696,0.07835 0.02696,0.133559 0,0.105199 -0.03098,0.188743 -0.09313,0.25119 -0.06213,0.06245 -0.153252,0.09435 -0.27202,0.09435 -0.06819,0 -0.121352,-0.0058 -0.159291,-0.01838 -0.03794,-0.0125 -0.06747,-0.02605 -0.08944,-0.0392 -0.02859,-0.0171 -0.04782,-0.03599 -0.05881,-0.05637 -0.01099,-0.02038 -0.01715,-0.04137 -0.01715,-0.06372 0,-0.03418 0.0071,-0.06761 0.02083,-0.100477 0.01375,-0.03286 0.02898,-0.06526 0.04656,-0.0968 0.01319,0.01444 0.02828,0.02794 0.04533,0.04044 0.01705,0.01249 0.03656,0.0238 0.05637,0.03431 0.0198,0.01051 0.03916,0.01858 0.06004,0.02451 0.02088,0.0059 0.04147,0.0098 0.06126,0.0098 0.02859,0 0.04917,-0.006 0.06126,-0.01715 0.0121,-0.01118 0.01838,-0.02579 0.01838,-0.04289 -10e-7,-0.01974 -0.0088,-0.03473 -0.02696,-0.04656 -0.01815,-0.01184 -0.041,-0.02267 -0.06739,-0.03186 -0.02639,-0.0092 -0.05512,-0.02002 -0.087,-0.03185 -0.03188,-0.01184 -0.06183,-0.02741 -0.08822,-0.04779 -0.02639,-0.02038 -0.04802,-0.04735 -0.06617,-0.08087 -0.01814,-0.03353 -0.02696,-0.07719 -0.02696,-0.131109 0,-0.05256 0.0083,-0.09902 0.02696,-0.13846 0.01869,-0.03943 0.04464,-0.07239 0.07597,-0.09803 0.03133,-0.02564 0.06714,-0.04387 0.107829,-0.05637 0.04068,-0.0125 0.08355,-0.01961 0.128658,-0.01961 z m -2.163909,0.02083 c 0.02641,2e-6 0.05123,0.0027 0.07597,0.0086 0.02473,0.0059 0.04625,0.01675 0.06494,0.03185 0.01869,0.0151 0.03379,0.03553 0.04533,0.06249 0.01154,0.02696 0.01715,0.06211 0.01715,0.104152 l 0,0.697205 c -1e-6,0.02893 -2.27e-4,0.0651 -0.0025,0.107828 -0.0022,0.04273 -0.007,0.081 -0.01471,0.115179 -0.01211,0.0526 -0.03108,0.09685 -0.05637,0.132335 -0.02529,0.03548 -0.05321,0.06407 -0.08455,0.08577 -0.03135,0.02171 -0.06369,0.03738 -0.09557,0.04656 -0.03188,0.0092 -0.05901,0.01348 -0.08209,0.01348 -0.04728,-10e-7 -0.08215,-0.01017 -0.104151,-0.03185 -0.02199,-0.02169 -0.03643,-0.05472 -0.04411,-0.0968 -0.0033,-0.0171 -0.0057,-0.03486 -0.0074,-0.05391 -0.0016,-0.01905 -0.0039,-0.04434 -0.0061,-0.0772 0.03521,-0.0039 0.06377,-0.01268 0.08577,-0.02451 0.02199,-0.01184 0.03937,-0.02692 0.05146,-0.04533 0.0121,-0.01841 0.02011,-0.03941 0.0245,-0.06372 0.0044,-0.02431 0.0061,-0.05072 0.0061,-0.07965 l 0,-0.918986 c 0.01319,-0.0013 0.02737,-0.0035 0.04166,-0.0061 0.01208,-0.0026 0.02558,-0.0048 0.04044,-0.0061 0.01485,-0.0013 0.02982,-0.0012 0.04411,-0.0012 z m -0.5991792,0.226675 c -0.05172,2e-6 -0.0772,0.04749 -0.0772,0.142138 l 0.158066,0 c -10e-7,-0.05389 -0.0057,-0.09112 -0.01838,-0.111505 -0.01263,-0.02038 -0.0339,-0.03063 -0.0625,-0.03063 z m 2.0180962,0.289175 c -0.02088,0.0026 -0.0401,0.007 -0.05881,0.01226 -0.01871,0.0053 -0.03527,0.01221 -0.04901,0.02206 -0.01375,0.0099 -0.02485,0.02343 -0.03309,0.0392 -0.0082,0.01579 -0.01226,0.03631 -0.01226,0.06127 -1e-6,0.03025 0.0071,0.05341 0.02083,0.06985 0.01375,0.01643 0.03217,0.0245 0.05637,0.0245 0.0198,0 0.0373,-0.0054 0.05269,-0.01593 0.01539,-0.01051 0.02328,-0.02673 0.02328,-0.04779 l 0,-0.165418 z"
- id="rect3812"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:0.75;fill:#b26609;fill-opacity:1;stroke:none;stroke-width:35;marker:none;enable-background:accumulate"
- inkscape:connector-curvature="0" />
- <path
- d="m 5.0936108,17.253631 12.8311602,0 0.715901,0.991248 -14.2543372,0 0.707276,-0.991248 z"
- id="path4453"
- sodipodi:nodetypes="ccccc"
- style="opacity:0.75;fill:#b26609;fill-opacity:1;stroke:#b26609;stroke-width:0.50756156;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- d="m 4.2208678,20.920967 14.5766442,0 10e-7,-1.707149 -14.5680182,0 -0.0086,1.707149 z"
- id="path4457"
- sodipodi:nodetypes="ccccc"
- style="opacity:0.75;fill:#b26609;fill-opacity:1;stroke:#b26609;stroke-width:0.50756156;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/menu.svg b/navit/icons/menu.svg
deleted file mode 100644
index ae79e781a..000000000
--- a/navit/icons/menu.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- id="svg2933"
- version="1.1"
- inkscape:version="0.47 r22583"
- width="96"
- height="96"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="osd_menu.svg"
- style="display:inline">
- <metadata
- id="metadata2939">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs2937">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- id="perspective2941" />
- <inkscape:perspective
- id="perspective4247"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4331"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4353"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1365"
- inkscape:window-height="918"
- id="namedview2935"
- showgrid="false"
- inkscape:zoom="10.665578"
- inkscape:cx="46.462249"
- inkscape:cy="46.58232"
- inkscape:window-x="310"
- inkscape:window-y="46"
- inkscape:window-maximized="0"
- inkscape:current-layer="layer1" />
- <g
- inkscape:groupmode="layer"
- id="layer1"
- inkscape:label="svg"
- style="display:inline">
- <g
- id="g4367">
- <path
- sodipodi:nodetypes="ccc"
- id="path3465-0"
- d="m 68.424793,50.800443 -17.366603,-0.0542 -0.0396,17.427024"
- style="fill:none;stroke:#808080;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
- <path
- sodipodi:nodetypes="ccc"
- id="path3465-8-0"
- d="m 27.576326,44.752825 17.497596,-0.0132 0.03734,-17.394221"
- style="fill:none;stroke:#808080;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/military.svg b/navit/icons/military.svg
deleted file mode 100644
index bce2b7b95..000000000
--- a/navit/icons/military.svg
+++ /dev/null
@@ -1,358 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="military.svg"
- viewBox="0 0 20.625 20.625">
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16.931818"
- inkscape:cx="15.706554"
- inkscape:cy="10.339309"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:pagecheckerboard="true" />
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2824"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Capa 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-104.18734,-217.35788)">
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:44.70473862;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g2847-1"
- transform="matrix(0.05774239,0,0,0.05774389,81.668765,209.12131)">
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:76.43066406;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="matrix(0.58490579,0,0,0.58490579,-81.984403,63.627373)"
- id="g3721-9">
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:76.43066406;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="translate(121.62237,-3.0129153)"
- id="g3725-6" />
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:76.43066406;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g3731-9"
- transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,-158.83336,317.30223)" />
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:76.43066406;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="matrix(0,-1,1,0,-130.64851,742.11139)"
- id="g3737-6" />
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:76.43066406;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g3743-9"
- transform="matrix(-0.70710678,-0.70710678,0.70710678,-0.70710678,189.66664,1022.5671)" />
- </g>
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:99.01612854;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g4287-6"
- transform="matrix(0.45148946,0,0,0.45148946,188.61936,126.2598)">
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:99.01612854;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g4291-6"
- transform="translate(121.62237,-3.0129153)" />
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:99.01612854;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,-158.83336,317.30223)"
- id="g4297-3" />
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:99.01612854;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g4303-4"
- transform="matrix(0,-1,1,0,-130.64851,742.11139)" />
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:99.01612854;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="matrix(-0.70710678,-0.70710678,0.70710678,-0.70710678,189.66664,1022.5671)"
- id="g4309-5">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 67.636516,475.49769 c -4.263,-0.14424 -8.45541,-0.0554 -12.53125,0.25586 -32.60676,2.49023 -61.2085795,15.2664 -84.53907,34.46094 l -1.74218,1.43359 -1.60547,1.5879 c -86.623666,85.61974 -172.220266,171.92435 -258.058606,257.64061 -49.33781,43.9796 -91.78438,115.86673 -69.24218,194.51563 5.88029,25.51024 19.71576,46.80858 39.38086,61.84958 l 38.31445,18.0294 c 23.68323,4.9863 51.4268,1.3002 73.5918,-13.3243 l 13.35546,-2.418 c 13.86274,-2.5097 31.53064,-3.1569 51.19727,-5.3183 -21.15909,19.977 -42.31747,39.9546 -63.47656,59.9316 -8.31168,1.2148 -16.13161,3.6123 -22.65235,6.961 -16.07067,8.253 -26.4711,19.8341 -34.09961,32.0508 -7.6285,12.2167 -12.72082,25.4061 -14.07421,41.2519 -1.35339,15.8458 1.66432,37.3111 18.09375,54.5508 l 0.31054,0.3262 0.31836,0.3222 c 6.91251,6.9935 16.50817,22.2579 39.36524,36.5723 11.42853,7.1572 28.73208,13.7571 47.68164,12.1328 16.4035,-1.4061 31.06453,-8.6547 43.03515,-17.8379 14.03853,-8.7567 23.68229,-22.4957 28.08203,-32.5625 4.523042,-10.3489 5.852612,-17.4531 6.919932,-22.2441 l 0.0156,-0.01 6.91797,-7.3242 c 48.478854,-51.332 96.9567145,-102.6642 145.435554,-153.9962 50.398434,1.2352 102.838894,-15.5318 140.244134,-56.69135 51.29157,-47.4547 74.24879,-125.5989 39.58398,-193.88868 l 0.0977,0.19336 c -3.33329,-6.63827 -9.32873,-22.1619 -16.99414,-38.23633 -1.32466,-2.77781 -2.61131,-5.80453 -3.91406,-8.79296 l 1.32031,-1.27735 1.83789,-17.97656 c 2.02315,-19.79986 0.97791,-41.16356 -4.26953,-63.70508 -3.78553,-16.26153 -8.43551,-35.70854 -23.99414,-51.77733 0.8844,-9.1687 0.49634,-18.15048 -1.46875,-26.35156 -4.72042,-19.70016 -14.03017,-35.48326 -25.58789,-48.51368 l 0,-0.0156 -0.0273,-0.0117 c -5.00675,-5.641 -10.442,-10.73799 -16.11726,-15.41974 -21.70228,-24.39796 -52.734944,-35.42857 -80.705064,-36.375 z"
- id="rect4313-1"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sscccccccccccssscccsscscccccccccccscsccccs" />
- </g>
- </g>
- </g>
- <g
- id="g4732"
- transform="matrix(0.91064582,0,0,0.91066967,9.5005028,21.265575)">
- <g
- transform="matrix(0.06340817,0,0,0.06340817,98.757867,207.60389)"
- id="g2847">
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;stroke:none"
- d="m 218.71062,215.98288 c -10.86291,0 -13.25923,0.2994 -19.26724,2.42651 -9.37456,3.31904 -18.02598,7.1226 -24.15647,14.1607 -12.18657,13.99078 -21.29537,51.42758 -21.29537,51.42758 l 9.45254,0.32595 c 5.19644,0.17257 34.3183,0.39716 64.71907,0.50703 l 55.26654,0.2173 -0.57946,-8.83685 c -0.29241,-4.45147 -0.90216,-8.48097 -1.88327,-12.34986 l 110.85898,3.1856 8.08919,7.7655 19.689,-6.96728 0,-29.11815 -18.49282,-7.5839 -10.45497,8.41139 -119.28678,3.40985 c -7.66985,-10.98332 -19.29435,-19.56372 -33.39171,-24.55486 -6.00799,-2.12711 -8.40435,-2.42651 -19.26723,-2.42651 z"
- id="path3686"
- sodipodi:nodetypes="csacccccccccccccsc" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-opacity:1;stroke:none"
- d="m 142.70685,286.96743 c -6.4047,5.33714 -10.79456,7.68399 -22.16456,34.04361 l 227.44029,0 c -16.60433,-10.84152 -21.47892,-21.269 -49.97892,-32.269 l -64.75529,-0.6519 c -35.60517,-0.36038 -70.51337,-0.78168 -77.61219,-0.90541 z"
- id="path2827"
- sodipodi:nodetypes="ccccccc" />
- <circle
- r="18.928572"
- cy="462.00504"
- cx="168.92857"
- transform="matrix(1.4609518,0,0,1.4609518,-64.856319,-314.86824)"
- id="path2832"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-miterlimit:4;stroke-opacity:1"
- d="m 131.17872,327.57773 217.3833,0 c 0,0 26.2498,-0.35818 28.18377,11.33452 7.89518,47.73383 -52.18377,54.42641 -52.18377,54.42641 l -177.3833,0 c -16.06123,0 -38.99138,-12.93015 -38.99138,-28.99138 l 0,-13.77817 c 0,-16.06123 6.93015,-22.99138 22.99138,-22.99138 z"
- id="rect3619"
- sodipodi:nodetypes="ccsccccc" />
- <g
- id="g3721"
- transform="matrix(0.58490579,0,0,0.58490579,-81.984403,63.627373)">
- <circle
- r="18.928572"
- cy="462.00504"
- cx="168.92857"
- transform="matrix(1.5358008,0,0,1.5358008,108.60844,-213.86303)"
- id="path3723"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- <g
- id="g3725"
- transform="translate(121.62237,-3.0129153)">
- <rect
- ry="6.0104074"
- y="461.22092"
- x="240.41631"
- height="24.04163"
- width="12.020815"
- id="rect3727"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="rect3729"
- width="12.020815"
- height="24.04163"
- x="240.41631"
- y="512.13263"
- ry="6.0104074" />
- </g>
- <g
- transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,-158.83336,317.30223)"
- id="g3731">
- <rect
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="rect3733"
- width="12.020815"
- height="24.04163"
- x="240.41631"
- y="461.22092"
- ry="6.0104074" />
- <rect
- ry="6.0104074"
- y="512.13263"
- x="240.41631"
- height="24.04163"
- width="12.020815"
- id="rect3735"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- </g>
- <g
- id="g3737"
- transform="matrix(0,-1,1,0,-130.64851,742.11139)">
- <rect
- ry="6.0104074"
- y="461.22092"
- x="240.41631"
- height="24.04163"
- width="12.020815"
- id="rect3739"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="rect3741"
- width="12.020815"
- height="24.04163"
- x="240.41631"
- y="512.13263"
- ry="6.0104074" />
- </g>
- <g
- transform="matrix(-0.70710678,-0.70710678,0.70710678,-0.70710678,189.66664,1022.5671)"
- id="g3743">
- <rect
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="rect3745"
- width="12.020815"
- height="24.04163"
- x="240.41631"
- y="461.22092"
- ry="6.0104074" />
- <rect
- ry="6.0104074"
- y="512.13263"
- x="240.41631"
- height="24.04163"
- width="12.020815"
- id="rect3747"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- </g>
- </g>
- <circle
- r="18.928572"
- cy="462.00504"
- cx="168.92857"
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="path3777"
- transform="matrix(1.4609518,0,0,1.4609518,-6.6387649,-314.19559)" />
- <circle
- r="18.928572"
- cy="462.00504"
- cx="168.92857"
- transform="matrix(1.4609518,0,0,1.4609518,51.578801,-314.19559)"
- id="path3779"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- <g
- transform="matrix(0.45148946,0,0,0.45148946,188.61936,126.2598)"
- id="g4287">
- <circle
- r="18.928572"
- cy="462.00504"
- cx="168.92857"
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="path4289"
- transform="matrix(1.5358008,0,0,1.5358008,108.60844,-213.86303)" />
- <g
- transform="translate(121.62237,-3.0129153)"
- id="g4291">
- <rect
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="rect4293"
- width="12.020815"
- height="24.04163"
- x="240.41631"
- y="461.22092"
- ry="6.0104074" />
- <rect
- ry="6.0104074"
- y="512.13263"
- x="240.41631"
- height="24.04163"
- width="12.020815"
- id="rect4295"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- </g>
- <g
- id="g4297"
- transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,-158.83336,317.30223)">
- <rect
- ry="6.0104074"
- y="461.22092"
- x="240.41631"
- height="24.04163"
- width="12.020815"
- id="rect4299"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="rect4301"
- width="12.020815"
- height="24.04163"
- x="240.41631"
- y="512.13263"
- ry="6.0104074" />
- </g>
- <g
- transform="matrix(0,-1,1,0,-130.64851,742.11139)"
- id="g4303">
- <rect
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="rect4305"
- width="12.020815"
- height="24.04163"
- x="240.41631"
- y="461.22092"
- ry="6.0104074" />
- <rect
- ry="6.0104074"
- y="512.13263"
- x="240.41631"
- height="24.04163"
- width="12.020815"
- id="rect4307"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- </g>
- <g
- id="g4309"
- transform="matrix(-0.70710678,-0.70710678,0.70710678,-0.70710678,189.66664,1022.5671)">
- <rect
- ry="6.0104074"
- y="461.22092"
- x="240.41631"
- height="24.04163"
- width="12.020815"
- id="rect4311"
- style="fill:#000000;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="rect4313"
- width="12.020815"
- height="24.04163"
- x="240.41631"
- y="512.13263"
- ry="6.0104074" />
- </g>
- </g>
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/mini_roundabout.svg b/navit/icons/mini_roundabout.svg
deleted file mode 100644
index 31611fd9d..000000000
--- a/navit/icons/mini_roundabout.svg
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="mini_roundabout.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/shopping.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="TriangleInS"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="TriangleInS"
- style="overflow:visible">
- <path
- id="path3332"
- d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(-0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleInL"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="TriangleInL"
- style="overflow:visible">
- <path
- id="path3326"
- d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(-0.8)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Sstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Sstart"
- style="overflow:visible">
- <path
- id="path3222"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.3) translate(-2.3,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mstart"
- style="overflow:visible">
- <path
- id="path3216"
- style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
- transform="scale(0.6) translate(0,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3192"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
- transform="scale(0.8) translate(12.5,0)" />
- </marker>
- <linearGradient
- id="linearGradient3160">
- <stop
- style="stop-color:#208420;stop-opacity:1;"
- offset="0"
- id="stop3162" />
- <stop
- style="stop-color:#15d715;stop-opacity:1;"
- offset="1"
- id="stop3164" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2421"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2419"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#22a638"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.9195959"
- inkscape:cx="14.32623"
- inkscape:cy="7.7312208"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="943"
- inkscape:window-height="682"
- inkscape:window-x="223"
- inkscape:window-y="74"
- showguides="true"
- inkscape:guide-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path6201"
- sodipodi:cx="11.075034"
- sodipodi:cy="11.866907"
- sodipodi:rx="10.075034"
- sodipodi:ry="9.6280165"
- d="M 21.150068,11.866907 A 10.075034,9.6280165 0 1 1 1,11.866907 A 10.075034,9.6280165 0 1 1 21.150068,11.866907 z"
- transform="matrix(0.4398737,0,0,0.4398737,6.4602889,5.4887287)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path6203"
- sodipodi:cx="9.975256"
- sodipodi:cy="10.446381"
- sodipodi:rx="0.82074893"
- sodipodi:ry="0.75761437"
- d="M 10.796005,10.446381 A 0.82074893,0.75761437 0 1 1 9.154507,10.446381 A 0.82074893,0.75761437 0 1 1 10.796005,10.446381 z"
- transform="matrix(0.4514548,0,0,0.4514548,6.8076889,6.0159267)" />
- </g>
-</svg>
diff --git a/navit/icons/museum.svg b/navit/icons/museum.svg
deleted file mode 100644
index eab1adf4c..000000000
--- a/navit/icons/museum.svg
+++ /dev/null
@@ -1,242 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="museum.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/shopping.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- viewBox="0 0 93.749998 93.749998">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3160">
- <stop
- style="stop-color:#208420;stop-opacity:1;"
- offset="0"
- id="stop3162" />
- <stop
- style="stop-color:#15d715;stop-opacity:1;"
- offset="1"
- id="stop3164" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18108 : 1"
- inkscape:vp_y="0 : 999.99998 : 0"
- inkscape:vp_z="744.09446 : 526.18108 : 1"
- inkscape:persp3d-origin="372.04723 : 350.78738 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04723 : 350.78738 : 1"
- inkscape:vp_z="744.09446 : 526.18108 : 1"
- inkscape:vp_y="0 : 999.99998 : 0"
- inkscape:vp_x="0 : 526.18108 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2421"
- inkscape:persp3d-origin="372.04723 : 350.78738 : 1"
- inkscape:vp_z="744.09446 : 526.18108 : 1"
- inkscape:vp_y="0 : 999.99998 : 0"
- inkscape:vp_x="0 : 526.18108 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2419"
- inkscape:persp3d-origin="372.04723 : 350.78738 : 1"
- inkscape:vp_z="744.09446 : 526.18108 : 1"
- inkscape:vp_y="0 : 999.99998 : 0"
- inkscape:vp_x="0 : 526.18108 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ff16ff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.9195959"
- inkscape:cx="29.162857"
- inkscape:cy="26.66537"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1239"
- inkscape:window-height="661"
- inkscape:window-x="50"
- inkscape:window-y="50"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:pagecheckerboard="true"
- inkscape:window-maximized="0"
- inkscape:snap-to-guides="false"
- inkscape:snap-grids="false"
- inkscape:snap-global="false">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true"
- originx="0"
- originy="0"
- spacingx="1"
- spacingy="1" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,71.749998)">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:11.87630177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 18.219554,-29.884101 0.171533,0 0,19.254052 -0.171533,0 z"
- id="rect2425-6"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:11.87630177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 37.92744,-29.571275 0.171534,0 0,19.254052 -0.171534,0 z"
- id="rect2427-7"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:11.87630177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 77.343202,-29.884101 0.171534,0 0,19.254052 -0.171534,0 z"
- id="rect2429-5"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:11.87630177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 13.178091,-2.5590449 69.766818,0 0,0.7781325 -69.766818,0 z"
- id="rect2431-3"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:11.87630177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 5.9381747,4.7235961 81.8736503,0 0,0.6848459 -81.8736503,0 z"
- id="rect2433-5"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:11.87630177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 12.968911,-38.880377 70.033392,0 0,0.823501 -70.033392,0 z"
- id="rect2435-6"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:11.87630177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 26.813123,-46.779427 40.208871,0 0,1.239346 -40.208871,0 z"
- id="rect2437-2"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:11.87630177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 40.084159,-54.838788 15.991545,0 0,2.159063 -15.991545,0 z"
- id="rect2439-9"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:11.87630177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 58.260972,-29.884101 0.171534,0 0,19.254052 -0.171534,0 z"
- id="rect3213-1"
- inkscape:connector-curvature="0" />
- <g
- id="g5700"
- transform="matrix(4.0383178,0,0,4.0383775,2.638691,-67.956295)">
- <rect
- y="9.4651861"
- x="3.8719943"
- height="4.7677689"
- width="0.042476557"
- id="rect2425"
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.07458138;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.07458138;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2427"
- width="0.042476557"
- height="4.7677689"
- x="8.7522154"
- y="9.5426493" />
- <rect
- y="9.4651861"
- x="18.512657"
- height="4.7677689"
- width="0.042476557"
- id="rect2429"
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.07458138;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="16.231531"
- x="2.6235893"
- height="0.19268438"
- width="17.276209"
- id="rect2431"
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.41810608;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.4412061;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2433"
- width="20.274197"
- height="0.16958442"
- x="0.83078289"
- y="18.034889" />
- <rect
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.46164668;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2435"
- width="17.342218"
- height="0.20391898"
- x="2.5717878"
- y="7.2374897" />
- <rect
- y="5.2814941"
- x="6"
- height="0.30689234"
- width="9.9568377"
- id="rect2437"
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.35867333;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.13092911;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2439"
- width="3.9599519"
- height="0.53463638"
- x="9.2862797"
- y="3.2858021" />
- <rect
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.07458138;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect3213"
- width="0.042476557"
- height="4.7677689"
- x="13.787365"
- y="9.4651861" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/nav_destination_bk.svg b/navit/icons/nav_destination_bk.svg
deleted file mode 100644
index 76e029f21..000000000
--- a/navit/icons/nav_destination_bk.svg
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.0"
- width="64"
- height="64"
- id="svg2">
- <defs
- id="defs11">
- <marker
- refX="0"
- refY="0"
- orient="auto"
- style="overflow:visible"
- id="DistanceIn">
- <g
- id="g2300">
- <path
- d="M 0,0 L 2,0"
- style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square"
- id="path2306" />
- <path
- d="M 0,0 L 13,4 L 9,0 L 13,-4 L 0,0 z "
- style="fill:#000000;fill-rule:evenodd;stroke:none"
- id="path2302" />
- <path
- d="M 0,-4 L 0,40"
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square"
- id="path2304" />
- </g>
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- style="overflow:visible"
- id="SemiCircleOut">
- <path
- d="M -2.5,-0.80913858 C -2.5,1.9508614 -4.74,4.1908614 -7.5,4.1908614 L -7.5,-5.8091386 C -4.74,-5.8091386 -2.5,-3.5691386 -2.5,-0.80913858 z "
- transform="matrix(0.6,0,0,0.6,4.2752958,0.4580676)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- id="path8204" />
- </marker>
- </defs>
- <g
- transform="matrix(1,0.1763263,0,1,6,1.0386167)"
- id="g6126">
- <g
- transform="translate(3,0)"
- id="g4172">
- <rect
- width="7"
- height="7"
- x="2"
- y="3"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4126" />
- <rect
- width="7"
- height="7"
- x="9"
- y="10"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4150" />
- <rect
- width="7"
- height="7"
- x="16"
- y="17"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4152" />
- <rect
- width="7"
- height="7"
- x="23"
- y="24"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4154" />
- <rect
- width="7"
- height="7"
- x="30"
- y="17"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4156" />
- <rect
- width="7"
- height="7"
- x="37"
- y="10"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4158" />
- <rect
- width="7"
- height="7"
- x="30"
- y="3"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4160" />
- <rect
- width="7"
- height="7"
- x="23"
- y="10"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4162" />
- <rect
- width="7"
- height="7"
- x="16"
- y="3"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4164" />
- <rect
- width="7"
- height="7"
- x="37"
- y="24"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4166" />
- <rect
- width="7"
- height="7"
- x="9"
- y="24"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4168" />
- <rect
- width="7"
- height="7"
- x="2"
- y="17"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- id="rect4170" />
- </g>
- <path
- d="M 4,2.2560781 L 48,2.0081033 L 48,32 L 4,32 L 4,2.2560781 z "
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4186" />
- </g>
- <path
- d="M 10,33.743922 L 10,62"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6142" />
-</svg>
diff --git a/navit/icons/nav_destination_wh.svg b/navit/icons/nav_destination_wh.svg
deleted file mode 100644
index ca2e2d66c..000000000
--- a/navit/icons/nav_destination_wh.svg
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.0"
- width="64"
- height="64"
- id="svg2">
- <defs
- id="defs11">
- <marker
- refX="0"
- refY="0"
- orient="auto"
- style="overflow:visible"
- id="DistanceIn">
- <g
- id="g2300">
- <path
- d="M 0,0 L 2,0"
- style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square"
- id="path2306" />
- <path
- d="M 0,0 L 13,4 L 9,0 L 13,-4 L 0,0 z "
- style="fill:#ffffff;fill-rule:evenodd;stroke:none"
- id="path2302" />
- <path
- d="M 0,-4 L 0,40"
- style="fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:square"
- id="path2304" />
- </g>
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- style="overflow:visible"
- id="SemiCircleOut">
- <path
- d="M -2.5,-0.80913858 C -2.5,1.9508614 -4.74,4.1908614 -7.5,4.1908614 L -7.5,-5.8091386 C -4.74,-5.8091386 -2.5,-3.5691386 -2.5,-0.80913858 z "
- transform="matrix(0.6,0,0,0.6,4.2752958,0.4580676)"
- style="fill-rule:evenodd;stroke:#ffffff;stroke-width:1pt;marker-start:none;marker-end:none"
- id="path8204" />
- </marker>
- </defs>
- <g
- transform="matrix(1,0.1763263,0,1,6,1.0386167)"
- id="g6126">
- <g
- transform="translate(3,0)"
- id="g4172">
- <rect
- width="7"
- height="7"
- x="2"
- y="3"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4126" />
- <rect
- width="7"
- height="7"
- x="9"
- y="10"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4150" />
- <rect
- width="7"
- height="7"
- x="16"
- y="17"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4152" />
- <rect
- width="7"
- height="7"
- x="23"
- y="24"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4154" />
- <rect
- width="7"
- height="7"
- x="30"
- y="17"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4156" />
- <rect
- width="7"
- height="7"
- x="37"
- y="10"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4158" />
- <rect
- width="7"
- height="7"
- x="30"
- y="3"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4160" />
- <rect
- width="7"
- height="7"
- x="23"
- y="10"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4162" />
- <rect
- width="7"
- height="7"
- x="16"
- y="3"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4164" />
- <rect
- width="7"
- height="7"
- x="37"
- y="24"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4166" />
- <rect
- width="7"
- height="7"
- x="9"
- y="24"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4168" />
- <rect
- width="7"
- height="7"
- x="2"
- y="17"
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- id="rect4170" />
- </g>
- <path
- d="M 4,2.2560781 L 48,2.0081033 L 48,32 L 4,32 L 4,2.2560781 z "
- style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4186" />
- </g>
- <path
- d="M 10,33.743922 L 10,62"
- style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6142" />
-</svg>
diff --git a/navit/icons/nav_exit_left_bk.svg b/navit/icons/nav_exit_left_bk.svg
deleted file mode 100644
index 057e5011d..000000000
--- a/navit/icons/nav_exit_left_bk.svg
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.5 r10040"
- sodipodi:docname="nav_exit_right_bk.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:snap-global="true"
- inkscape:snap-bbox="true"
- inkscape:object-paths="true"
- inkscape:snap-nodes="true">
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2987" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2989" />
- <sodipodi:guide
- orientation="1,0"
- position="1,0"
- id="guide2991" />
- <sodipodi:guide
- orientation="1,0"
- position="63,0"
- id="guide2993" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3038" />
- <sodipodi:guide
- orientation="0,1"
- position="0,60.5"
- id="guide3040" />
- </sodipodi:namedview>
- <g
- transform="matrix(-0.00399274,0,0,0.00286166,72.012396,-4.1975012)"
- id="g3848"
- style="fill:#000000">
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3076"
- d="m 304.15565,64.35416 17.04892,767.6852 75.15314,0 75.15315,0 -139.64771,-767.6852 z"
- style="fill:#000000;stroke:none"
- sodipodi:nodetypes="cccccc" />
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3078"
- d="m 256.04066,64.354161 -134.7887,767.685199 150.30709,0 12.18912,-767.685199 z"
- style="fill:#000000;stroke:none" />
- </g>
- <g
- id="g4"
- transform="matrix(-1,0,0,1,59.349255,0)">
- <path
- inkscape:connector-curvature="0"
- d="M 32,63 32,42 C 32,31 32,31 42,20"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path6" />
- <path
- inkscape:connector-curvature="0"
- transform="matrix(2.1213203,2.1213203,-2.1213203,2.1213203,42,20)"
- d="M -4,1 0,-7 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- id="path8" />
- </g>
-</svg>
diff --git a/navit/icons/nav_exit_left_wh.svg b/navit/icons/nav_exit_left_wh.svg
deleted file mode 100644
index 8ba55649e..000000000
--- a/navit/icons/nav_exit_left_wh.svg
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.5 r10040"
- sodipodi:docname="nav_exit_right_wh.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="33.349144"
- inkscape:cy="29.976285"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:snap-global="true"
- inkscape:snap-bbox="true"
- inkscape:object-paths="true"
- inkscape:snap-nodes="true">
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2987" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2989" />
- <sodipodi:guide
- orientation="1,0"
- position="1,0"
- id="guide2991" />
- <sodipodi:guide
- orientation="1,0"
- position="63,0"
- id="guide2993" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3038" />
- <sodipodi:guide
- orientation="0,1"
- position="0,60.5"
- id="guide3040" />
- </sodipodi:namedview>
- <g
- transform="matrix(-0.00399274,0,0,0.00286166,72.012396,-4.1975012)"
- id="g3848"
- style="fill:#ffffff">
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3076"
- d="m 304.15565,64.35416 17.04892,767.6852 75.15314,0 75.15315,0 -139.64771,-767.6852 z"
- style="fill:#ffffff;stroke:none"
- sodipodi:nodetypes="cccccc" />
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3078"
- d="m 256.04066,64.354161 -134.7887,767.685199 150.30709,0 12.18912,-767.685199 z"
- style="fill:#ffffff;stroke:none" />
- </g>
- <g
- id="g4"
- transform="matrix(-1,0,0,1,59.349255,0)">
- <path
- inkscape:connector-curvature="0"
- d="M 32,63 32,42 C 32,31 32,31 42,20"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path6" />
- <path
- inkscape:connector-curvature="0"
- transform="matrix(2.1213203,2.1213203,-2.1213203,2.1213203,42,20)"
- d="M -4,1 0,-7 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- id="path8" />
- </g>
-</svg>
diff --git a/navit/icons/nav_exit_right_bk.svg b/navit/icons/nav_exit_right_bk.svg
deleted file mode 100644
index e5c768501..000000000
--- a/navit/icons/nav_exit_right_bk.svg
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="nav_exit_right_bk_var1a.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="955"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:snap-global="true"
- inkscape:snap-bbox="true"
- inkscape:object-paths="true"
- inkscape:snap-nodes="true">
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2987" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2989" />
- <sodipodi:guide
- orientation="1,0"
- position="1,0"
- id="guide2991" />
- <sodipodi:guide
- orientation="1,0"
- position="63,0"
- id="guide2993" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3038" />
- <sodipodi:guide
- orientation="0,1"
- position="0,60.5"
- id="guide3040" />
- </sodipodi:namedview>
- <g
- transform="matrix(0.00399274,0,0,0.00286166,-12.663141,-4.1975012)"
- id="g3848"
- style="fill:#000000">
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3076"
- d="m 304.15565,64.35416 17.04892,767.6852 75.15314,0 75.15315,0 -139.64771,-767.6852 z"
- style="fill:#000000;stroke:none"
- sodipodi:nodetypes="cccccc" />
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3078"
- d="m 256.04066,64.354161 -134.7887,767.685199 150.30709,0 12.18912,-767.685199 z"
- style="fill:#000000;stroke:none" />
- </g>
- <g
- id="g4">
- <path
- inkscape:connector-curvature="0"
- d="M 32,63 32,42 C 32,31 32,31 42,20"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path6" />
- <path
- inkscape:connector-curvature="0"
- transform="matrix(2.1213203,2.1213203,-2.1213203,2.1213203,42,20)"
- d="M -4,1 0,-7 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- id="path8" />
- </g>
-</svg>
diff --git a/navit/icons/nav_exit_right_wh.svg b/navit/icons/nav_exit_right_wh.svg
deleted file mode 100644
index 8bf09c0d3..000000000
--- a/navit/icons/nav_exit_right_wh.svg
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.5 r10040"
- sodipodi:docname="nav_exit_right_wh.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:snap-global="true"
- inkscape:snap-bbox="true"
- inkscape:object-paths="true"
- inkscape:snap-nodes="true">
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2987" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2989" />
- <sodipodi:guide
- orientation="1,0"
- position="1,0"
- id="guide2991" />
- <sodipodi:guide
- orientation="1,0"
- position="63,0"
- id="guide2993" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3038" />
- <sodipodi:guide
- orientation="0,1"
- position="0,60.5"
- id="guide3040" />
- </sodipodi:namedview>
- <g
- transform="matrix(0.00399274,0,0,0.00286166,-12.663141,-4.1975012)"
- id="g3848"
- style="fill:#ffffff">
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3076"
- d="m 304.15565,64.35416 17.04892,767.6852 75.15314,0 75.15315,0 -139.64771,-767.6852 z"
- style="fill:#ffffff;stroke:none"
- sodipodi:nodetypes="cccccc" />
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3078"
- d="m 256.04066,64.354161 -134.7887,767.685199 150.30709,0 12.18912,-767.685199 z"
- style="fill:#ffffff;stroke:none" />
- </g>
- <g
- id="g4">
- <path
- inkscape:connector-curvature="0"
- d="M 32,63 32,42 C 32,31 32,31 42,20"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path6" />
- <path
- inkscape:connector-curvature="0"
- transform="matrix(2.1213203,2.1213203,-2.1213203,2.1213203,42,20)"
- d="M -4,1 0,-7 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- id="path8" />
- </g>
-</svg>
diff --git a/navit/icons/nav_keep_left_bk.svg b/navit/icons/nav_keep_left_bk.svg
deleted file mode 100644
index ed9d0d125..000000000
--- a/navit/icons/nav_keep_left_bk.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="nav_keep_left_bk.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="955"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="32.168643"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:object-nodes="true">
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2995" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2997" />
- <sodipodi:guide
- orientation="0,1"
- position="0,60.5"
- id="guide2999" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3001" />
- </sodipodi:namedview>
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path6"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 32,63 0,-9.25 c 0,-4.348178 0.003,-4.247019 -5,-9.25 -4.993779,-4.993779 -5,-4.972218 -5,-9.25 L 22,26" />
- <path
- inkscape:connector-curvature="0"
- id="path8"
- style="fill:#000000;stroke:#000000;stroke-width:3;stroke-linejoin:round"
- d="M 10,29 22,5 34,29 C 28,23 16,23 10,29" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:nonzero;stroke:none"
- d="m 35.662367,1 c 0,7.784324 1.2632,15.273502 3.59567,22.274023 0.449985,1.350601 1.732995,2.318352 3.235514,2.318352 1.502519,0 2.785529,-0.967751 3.235514,-2.318352 C 48.061535,16.273502 49.324734,8.784324 49.324734,1 L 35.662367,1 z"
- id="path15" />
-</svg>
diff --git a/navit/icons/nav_keep_left_wh.svg b/navit/icons/nav_keep_left_wh.svg
deleted file mode 100644
index f9a8efdad..000000000
--- a/navit/icons/nav_keep_left_wh.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="nav_keep_left_wh.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="955"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="32.168643"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:object-nodes="true">
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2995" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2997" />
- <sodipodi:guide
- orientation="0,1"
- position="0,60.5"
- id="guide2999" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3001" />
- </sodipodi:namedview>
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path6"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 32,63 0,-9.25 c 0,-4.348178 0.003,-4.247019 -5,-9.25 -4.993779,-4.993779 -5,-4.972218 -5,-9.25 L 22,26" />
- <path
- inkscape:connector-curvature="0"
- id="path8"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:3;stroke-linejoin:round"
- d="M 10,29 22,5 34,29 C 28,23 16,23 10,29" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ffffff;fill-rule:nonzero;stroke:none"
- d="m 35.662367,1 c 0,7.784324 1.2632,15.273502 3.59567,22.274023 0.449985,1.350601 1.732995,2.318352 3.235514,2.318352 1.502519,0 2.785529,-0.967751 3.235514,-2.318352 C 48.061535,16.273502 49.324734,8.784324 49.324734,1 L 35.662367,1 z"
- id="path15" />
-</svg>
diff --git a/navit/icons/nav_keep_right_bk.svg b/navit/icons/nav_keep_right_bk.svg
deleted file mode 100644
index ee0d422a6..000000000
--- a/navit/icons/nav_keep_right_bk.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="nav_keep_left_bk.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="955"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="32.168643"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:object-nodes="true">
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2995" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2997" />
- <sodipodi:guide
- orientation="0,1"
- position="0,60.5"
- id="guide2999" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3001" />
- </sodipodi:namedview>
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path6"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 32,63 0,-9.25 c 0,-4.348178 -0.003,-4.247019 5,-9.25 4.993779,-4.993779 5,-4.972218 5,-9.25 L 42,26" />
- <path
- inkscape:connector-curvature="0"
- id="path8"
- style="fill:#000000;stroke:#000000;stroke-width:3;stroke-linejoin:round"
- d="M 54,29 42,5 30,29 c 6,-6 18,-6 24,0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:nonzero;stroke:none"
- d="m 28.337633,1 c 0,7.784324 -1.2632,15.273502 -3.59567,22.274023 -0.449985,1.350601 -1.732995,2.318352 -3.235514,2.318352 -1.502519,0 -2.785529,-0.967751 -3.235514,-2.318352 C 15.938465,16.273502 14.675266,8.784324 14.675266,1 l 13.662367,0 z"
- id="path15" />
-</svg>
diff --git a/navit/icons/nav_keep_right_wh.svg b/navit/icons/nav_keep_right_wh.svg
deleted file mode 100644
index bad0e4343..000000000
--- a/navit/icons/nav_keep_right_wh.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="nav_keep_right_bk.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="955"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="32.168643"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:object-nodes="true">
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2995" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2997" />
- <sodipodi:guide
- orientation="0,1"
- position="0,60.5"
- id="guide2999" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3001" />
- </sodipodi:namedview>
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path6"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 32,63 0,-9.25 c 0,-4.348178 -0.003,-4.247019 5,-9.25 4.993779,-4.993779 5,-4.972218 5,-9.25 L 42,26" />
- <path
- inkscape:connector-curvature="0"
- id="path8"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:3;stroke-linejoin:round"
- d="M 54,29 42,5 30,29 c 6,-6 18,-6 24,0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ffffff;fill-rule:nonzero;stroke:none"
- d="m 28.337633,1 c 0,7.784324 -1.2632,15.273502 -3.59567,22.274023 -0.449985,1.350601 -1.732995,2.318352 -3.235514,2.318352 -1.502519,0 -2.785529,-0.967751 -3.235514,-2.318352 C 15.938465,16.273502 14.675266,8.784324 14.675266,1 l 13.662367,0 z"
- id="path15" />
-</svg>
diff --git a/navit/icons/nav_left_1.xpm b/navit/icons/nav_left_1.xpm
deleted file mode 100644
index 18b9a7716..000000000
--- a/navit/icons/nav_left_1.xpm
+++ /dev/null
@@ -1,69 +0,0 @@
-/* XPM */
-static char * turn_left_90_v2_sv_xpm[] = {
-"64 64 2 1",
-" c None",
-". c #000000",
-" . ",
-" ............. . ",
-" ........................ ",
-" ................................. ",
-" ............................... ",
-" ............................ ",
-" .......................... ",
-" ........................ ",
-" ...................... ",
-" ...................... ",
-" ....................... ",
-" ........................ ",
-" ......................... ",
-" ......................... ",
-" .......................... ",
-" .......................... ",
-" .......................... ",
-" .......................... ",
-" ........................... ",
-" ....... ................. ",
-" ...... ................ ",
-" .... ................ ",
-" ... .............. ",
-" .. ............. ",
-" .. ............. ",
-" . ............ ",
-" ........... ",
-" ............ ",
-" ........... ",
-" ........... ",
-" .......... ",
-" .......... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... "};
diff --git a/navit/icons/nav_left_1_32.xpm b/navit/icons/nav_left_1_32.xpm
deleted file mode 100644
index 2c23d7e8c..000000000
--- a/navit/icons/nav_left_1_32.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"32 32 2 1",
-/* colors */
-" c #ffffff",
-". c None",
-/* pixels */
-" .........................",
-". ..............",
-".. ...............",
-"... ................",
-".... .................",
-"..... ...............",
-"...... .............",
-"....... ............",
-"........ ...........",
-"......... .........",
-".......... .. .........",
-"........... .... ........",
-"............ ..... .......",
-"................... .......",
-"................... .......",
-".................... .......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......",
-".................... ......"
-};
diff --git a/navit/icons/nav_left_1_bk.svg b/navit/icons/nav_left_1_bk.svg
deleted file mode 100644
index dd4461aa8..000000000
--- a/navit/icons/nav_left_1_bk.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,42 C 32,31 32,31 22,20"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(22,20) scale(3) rotate(315)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_left_1_wh.svg b/navit/icons/nav_left_1_wh.svg
deleted file mode 100644
index 7604bbd09..000000000
--- a/navit/icons/nav_left_1_wh.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,42 C 32,31 32,31 22,20"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(22,20) scale(3) rotate(315)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_left_2.xpm b/navit/icons/nav_left_2.xpm
deleted file mode 100644
index b5012f47c..000000000
--- a/navit/icons/nav_left_2.xpm
+++ /dev/null
@@ -1,69 +0,0 @@
-/* XPM */
-static char * turn_left_v2_sv_xpm[] = {
-"64 64 2 1",
-" c None",
-". c #000000",
-" ",
-" .. ",
-" ..... ",
-" ...... ",
-" ......... ",
-" ........... ",
-" ............. ",
-" ................ ",
-" ........................ ",
-" ................................. ",
-" ....................................... ",
-" ............................................. ",
-" ................................................. ",
-" ................................................... ",
-" .................................................. ",
-" ................................................ ",
-" .............................................. ",
-" ............................................ ",
-" ................ ....................... ",
-" ............. .................. ",
-" .......... ............... ",
-" ........ ............. ",
-" ..... ............. ",
-" ... ............ ",
-" ........... ",
-" .......... ",
-" ........... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" ........... ",
-" ........... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" .......... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" .......... "};
diff --git a/navit/icons/nav_left_2_32.xpm b/navit/icons/nav_left_2_32.xpm
deleted file mode 100644
index 3de381a19..000000000
--- a/navit/icons/nav_left_2_32.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"32 32 2 1",
-/* colors */
-" c #ffffff",
-". c None",
-/* pixels */
-"............... ................",
-"............. ................",
-".......... ................",
-"....... .................",
-"..... ...........",
-".. ........",
-". ......",
-".. .....",
-"..... ....",
-"........ . ...",
-"........... ...... ..",
-".............. ........ ..",
-"......................... ..",
-"......................... .",
-"......................... .",
-"......................... .",
-".......................... .",
-".......................... .",
-".......................... .",
-".......................... .",
-".......................... .",
-".......................... .",
-".......................... .",
-".......................... .",
-".......................... .",
-".......................... .",
-".......................... .",
-"......................... .",
-"......................... .",
-"......................... .",
-"......................... .",
-".......................... ."
-};
diff --git a/navit/icons/nav_left_2_bk.svg b/navit/icons/nav_left_2_bk.svg
deleted file mode 100644
index 4203de1c5..000000000
--- a/navit/icons/nav_left_2_bk.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,25 C 32,22 28,20 22,20"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(22,20) scale(3) rotate(270)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_left_2_wh.svg b/navit/icons/nav_left_2_wh.svg
deleted file mode 100644
index 82fe99317..000000000
--- a/navit/icons/nav_left_2_wh.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,25 C 32,22 28,20 22,20"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(22,20) scale(3) rotate(270)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_left_3_bk.svg b/navit/icons/nav_left_3_bk.svg
deleted file mode 100644
index 4aa70dd95..000000000
--- a/navit/icons/nav_left_3_bk.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,32 C 33.5,10 26,16 16,26"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(16,26) scale(3) rotate(225)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_left_3_wh.svg b/navit/icons/nav_left_3_wh.svg
deleted file mode 100644
index 529682731..000000000
--- a/navit/icons/nav_left_3_wh.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,32 C 33.5,10 26,16 16,26"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(16,26) scale(3) rotate(225)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_merge_left_bk.svg b/navit/icons/nav_merge_left_bk.svg
deleted file mode 100644
index 340726cc0..000000000
--- a/navit/icons/nav_merge_left_bk.svg
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.3.1 r9886"
- sodipodi:docname="nav_merge_left_bk_var2a.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="955"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true">
- <sodipodi:guide
- orientation="1,0"
- position="1,0"
- id="guide2987" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2989" />
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2991" />
- <sodipodi:guide
- orientation="1,0"
- position="63,0"
- id="guide2993" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3025" />
- <sodipodi:guide
- orientation="1,0"
- position="54.531,0"
- id="guide3027" />
- </sodipodi:namedview>
- <g
- transform="matrix(0.66666152,0,0,0.66666152,33.197831,21.000324)"
- id="g4-5"
- style="stroke:#000000">
- <path
- inkscape:connector-curvature="0"
- d="M 32,63 32,42 C 32,31 32,31 22,20"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path6-8" />
- <path
- inkscape:connector-curvature="0"
- transform="matrix(2.1213203,-2.1213203,2.1213203,2.1213203,22,20)"
- d="M -4,1 0,-7 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- id="path8-8" />
- </g>
- <g
- transform="matrix(0.00399274,0,0,0.00286166,-12.663154,-4.1975012)"
- id="g3848"
- style="fill:#000000">
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3076"
- d="m 304.15565,64.35416 17.04892,767.6852 75.15314,0 75.15315,0 -139.64771,-767.6852 z"
- style="fill:#000000;stroke:none"
- sodipodi:nodetypes="cccccc" />
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3078"
- d="m 256.04066,64.354161 -134.7887,767.685199 75.15354,0 75.15355,0 12.18912,-767.685199 z"
- style="fill:#000000;stroke:none"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/navit/icons/nav_merge_left_wh.svg b/navit/icons/nav_merge_left_wh.svg
deleted file mode 100644
index 9ed953cad..000000000
--- a/navit/icons/nav_merge_left_wh.svg
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.5 r10040"
- sodipodi:docname="nav_merge_left_bk.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true">
- <sodipodi:guide
- orientation="1,0"
- position="1,0"
- id="guide2987" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2989" />
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2991" />
- <sodipodi:guide
- orientation="1,0"
- position="63,0"
- id="guide2993" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3025" />
- <sodipodi:guide
- orientation="1,0"
- position="54.531,0"
- id="guide3027" />
- </sodipodi:namedview>
- <g
- transform="matrix(0.66666152,0,0,0.66666152,33.197831,21.000324)"
- id="g4-5"
- style="stroke:#000000">
- <path
- inkscape:connector-curvature="0"
- d="M 32,63 32,42 C 32,31 32,31 22,20"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path6-8" />
- <path
- inkscape:connector-curvature="0"
- transform="matrix(2.1213203,-2.1213203,2.1213203,2.1213203,22,20)"
- d="M -4,1 0,-7 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- id="path8-8" />
- </g>
- <g
- transform="matrix(0.00399274,0,0,0.00286166,-12.663154,-4.1975012)"
- id="g3848"
- style="fill:#ffffff">
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3076"
- d="m 304.15565,64.35416 17.04892,767.6852 75.15314,0 75.15315,0 -139.64771,-767.6852 z"
- style="fill:#ffffff;stroke:none"
- sodipodi:nodetypes="cccccc" />
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3078"
- d="m 256.04066,64.354161 -134.7887,767.685199 75.15354,0 75.15355,0 12.18912,-767.685199 z"
- style="fill:#ffffff;stroke:none"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/navit/icons/nav_merge_right_bk.svg b/navit/icons/nav_merge_right_bk.svg
deleted file mode 100644
index 50da749bd..000000000
--- a/navit/icons/nav_merge_right_bk.svg
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.5 r10040"
- sodipodi:docname="nav_merge_left_bk.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="33.349144"
- inkscape:cy="33.349144"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true">
- <sodipodi:guide
- orientation="1,0"
- position="1,0"
- id="guide2987" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2989" />
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2991" />
- <sodipodi:guide
- orientation="1,0"
- position="63,0"
- id="guide2993" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3025" />
- <sodipodi:guide
- orientation="1,0"
- position="54.531,0"
- id="guide3027" />
- </sodipodi:namedview>
- <g
- transform="matrix(-0.66666152,0,0,0.66666152,25.666477,21.000324)"
- id="g4-5"
- style="stroke:#000000">
- <path
- inkscape:connector-curvature="0"
- d="M 32,63 32,42 C 32,31 32,31 22,20"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path6-8" />
- <path
- inkscape:connector-curvature="0"
- transform="matrix(2.1213203,-2.1213203,2.1213203,2.1213203,22,20)"
- d="M -4,1 0,-7 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- id="path8-8" />
- </g>
- <g
- transform="matrix(-0.00399274,0,0,0.00286166,71.527462,-4.1975012)"
- id="g3848"
- style="fill:#000000">
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3076"
- d="m 304.15565,64.35416 17.04892,767.6852 75.15314,0 75.15315,0 -139.64771,-767.6852 z"
- style="fill:#000000;stroke:none"
- sodipodi:nodetypes="cccccc" />
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3078"
- d="m 256.04066,64.354161 -134.7887,767.685199 75.15354,0 75.15355,0 12.18912,-767.685199 z"
- style="fill:#000000;stroke:none"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/navit/icons/nav_merge_right_wh.svg b/navit/icons/nav_merge_right_wh.svg
deleted file mode 100644
index c7cb52872..000000000
--- a/navit/icons/nav_merge_right_wh.svg
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64px"
- height="64px"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.5 r10040"
- sodipodi:docname="nav_merge_right_bk.svg">
- <metadata
- id="metadata14">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs12" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="11.859375"
- inkscape:cx="33.349144"
- inkscape:cy="33.349144"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- showguides="true"
- inkscape:guide-bbox="true">
- <sodipodi:guide
- orientation="1,0"
- position="1,0"
- id="guide2987" />
- <sodipodi:guide
- orientation="0,1"
- position="0,1"
- id="guide2989" />
- <sodipodi:guide
- orientation="0,1"
- position="0,63"
- id="guide2991" />
- <sodipodi:guide
- orientation="1,0"
- position="63,0"
- id="guide2993" />
- <sodipodi:guide
- orientation="1,0"
- position="32,0"
- id="guide3025" />
- <sodipodi:guide
- orientation="1,0"
- position="54.531,0"
- id="guide3027" />
- </sodipodi:namedview>
- <g
- transform="matrix(-0.66666152,0,0,0.66666152,25.666477,21.000324)"
- id="g4-5"
- style="stroke:#000000">
- <path
- inkscape:connector-curvature="0"
- d="M 32,63 32,42 C 32,31 32,31 22,20"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path6-8" />
- <path
- inkscape:connector-curvature="0"
- transform="matrix(2.1213203,-2.1213203,2.1213203,2.1213203,22,20)"
- d="M -4,1 0,-7 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- id="path8-8" />
- </g>
- <g
- transform="matrix(-0.00399274,0,0,0.00286166,71.527462,-4.1975012)"
- id="g3848"
- style="fill:#ffffff">
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3076"
- d="m 304.15565,64.35416 17.04892,767.6852 75.15314,0 75.15315,0 -139.64771,-767.6852 z"
- style="fill:#ffffff;stroke:none"
- sodipodi:nodetypes="cccccc" />
- <path
- transform="matrix(28.222223,0,0,28.222223,-3.2693192e-4,0)"
- inkscape:connector-curvature="0"
- id="path3078"
- d="m 256.04066,64.354161 -134.7887,767.685199 75.15354,0 75.15355,0 12.18912,-767.685199 z"
- style="fill:#ffffff;stroke:none"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/navit/icons/nav_right_1.xpm b/navit/icons/nav_right_1.xpm
deleted file mode 100644
index bcf16278a..000000000
--- a/navit/icons/nav_right_1.xpm
+++ /dev/null
@@ -1,69 +0,0 @@
-/* XPM */
-static char * turn_right_90_v2_sv_xpm[] = {
-"64 64 2 1",
-" c None",
-". c #000000",
-" .. ",
-" ............... ",
-" ......................... ",
-" ................................. ",
-" ............................... ",
-" ............................ ",
-" .......................... ",
-" ........................ ",
-" ...................... ",
-" ....................... ",
-" ....................... ",
-" ........................ ",
-" ......................... ",
-" ......................... ",
-" .......................... ",
-" .......................... ",
-" .......................... ",
-" ........................... ",
-" ........................... ",
-" ................. ....... ",
-" ................ ...... ",
-" ............... ..... ",
-" ............... ... ",
-" ............. ... ",
-" ............. .. ",
-" ............ . ",
-" ........... ",
-" ............ ",
-" ........... ",
-" ........... ",
-" .......... ",
-" .......... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-".......... ",
-".......... ",
-".......... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... ",
-"........... "};
diff --git a/navit/icons/nav_right_1_32.xpm b/navit/icons/nav_right_1_32.xpm
deleted file mode 100644
index 2277040e5..000000000
--- a/navit/icons/nav_right_1_32.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"32 32 2 1",
-/* colors */
-" c #ffffff",
-". c None",
-/* pixels */
-".................. .......",
-"........ ........",
-"........ .........",
-".......... ..........",
-".......... ...........",
-"........ ............",
-"....... .............",
-"..... ..............",
-".... ...............",
-"... ................",
-".. .. .................",
-". .... ..................",
-". ..... ...................",
-". .........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ...........................",
-" ...........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" .........................."
-};
diff --git a/navit/icons/nav_right_1_bk.svg b/navit/icons/nav_right_1_bk.svg
deleted file mode 100644
index aa069a6d5..000000000
--- a/navit/icons/nav_right_1_bk.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,42 C 32,31 32,31 42,20"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(42,20) scale(3) rotate(45)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_right_1_wh.svg b/navit/icons/nav_right_1_wh.svg
deleted file mode 100644
index 8edb0e212..000000000
--- a/navit/icons/nav_right_1_wh.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,42 C 32,31 32,31 42,20"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(42,20) scale(3) rotate(45)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_right_2.xpm b/navit/icons/nav_right_2.xpm
deleted file mode 100644
index 5d3088a79..000000000
--- a/navit/icons/nav_right_2.xpm
+++ /dev/null
@@ -1,69 +0,0 @@
-/* XPM */
-static char * turn_rightv2_sv_xpm[] = {
-"64 64 2 1",
-" c None",
-". c #000000",
-" . ",
-" .. ",
-" ..... ",
-" ...... ",
-" ......... ",
-" ............ ",
-" ............. ",
-" ................ ",
-" ........................ ",
-" ................................. ",
-" ....................................... ",
-" ............................................. ",
-" .................................................. ",
-" ................................................... ",
-" .................................................. ",
-" ................................................ ",
-" .............................................. ",
-" ............................................ ",
-" ....................... ............... ",
-" .................. ............ ",
-" ............... ......... ",
-" ............. ........ ",
-" ............. ..... ",
-" ........... ... ",
-" ........... ",
-" ........... ",
-" ........... ",
-" .......... ",
-" .......... ",
-" .......... ",
-"........... ",
-"........... ",
-"........... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... ",
-".......... "};
diff --git a/navit/icons/nav_right_2_32.xpm b/navit/icons/nav_right_2_32.xpm
deleted file mode 100644
index 42db0e3da..000000000
--- a/navit/icons/nav_right_2_32.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"32 32 2 1",
-/* colors */
-" c #ffffff",
-". c None",
-/* pixels */
-"............... ................",
-"............... ..............",
-"............... ...........",
-"................ ........",
-".......... ......",
-"....... ...",
-"..... .",
-".... ...",
-"... ......",
-".. . .........",
-". ...... ............",
-". ........ ...............",
-". ..........................",
-" ..........................",
-" ..........................",
-" ..........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ...........................",
-" ..........................."
-};
diff --git a/navit/icons/nav_right_2_bk.svg b/navit/icons/nav_right_2_bk.svg
deleted file mode 100644
index 25edacf31..000000000
--- a/navit/icons/nav_right_2_bk.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,25 C 32,22 36,20 42,20"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(42,20) scale(3) rotate(90)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_right_2_wh.svg b/navit/icons/nav_right_2_wh.svg
deleted file mode 100644
index 7cf15a1a4..000000000
--- a/navit/icons/nav_right_2_wh.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,25 C 32,22 36,20 42,20"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(42,20) scale(3) rotate(90)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_right_3_bk.svg b/navit/icons/nav_right_3_bk.svg
deleted file mode 100644
index 4c742387f..000000000
--- a/navit/icons/nav_right_3_bk.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,32 C 30.5,10 38,16 48,26"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(48,26) scale(3) rotate(135)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_right_3_wh.svg b/navit/icons/nav_right_3_wh.svg
deleted file mode 100644
index 8c3f08bfe..000000000
--- a/navit/icons/nav_right_3_wh.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,32 C 30.5,10 38,16 48,26"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(48,26) scale(3) rotate(135)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l1_bk.svg b/navit/icons/nav_roundabout_l1_bk.svg
deleted file mode 100644
index ff52db494..000000000
--- a/navit/icons/nav_roundabout_l1_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 23.54 40.46 A 12 12 0 1 1 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 1 23.54 40.46 L 19.3 44.7"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(19.3,44.7) scale(2) rotate(225)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l1_wh.svg b/navit/icons/nav_roundabout_l1_wh.svg
deleted file mode 100644
index f2a3b5800..000000000
--- a/navit/icons/nav_roundabout_l1_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 23.54 40.46 A 12 12 0 1 1 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 1 23.54 40.46 L 19.3 44.7"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(19.3,44.7) scale(2) rotate(225)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l2_bk.svg b/navit/icons/nav_roundabout_l2_bk.svg
deleted file mode 100644
index a1c94a003..000000000
--- a/navit/icons/nav_roundabout_l2_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 20 32 A 12 12 0 1 1 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 1 20 32 L 14 32"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(14,32) scale(2) rotate(270)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l2_wh.svg b/navit/icons/nav_roundabout_l2_wh.svg
deleted file mode 100644
index d0c30de54..000000000
--- a/navit/icons/nav_roundabout_l2_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 20 32 A 12 12 0 1 1 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 1 20 32 L 14 32"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(14,32) scale(2) rotate(270)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l3_bk.svg b/navit/icons/nav_roundabout_l3_bk.svg
deleted file mode 100644
index 3c609b2e8..000000000
--- a/navit/icons/nav_roundabout_l3_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 23.54 23.54 A 12 12 0 1 1 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 1 23.54 23.54 L 19.3 19.3"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(19.3,19.3) scale(2) rotate(315)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l3_wh.svg b/navit/icons/nav_roundabout_l3_wh.svg
deleted file mode 100644
index a13af057c..000000000
--- a/navit/icons/nav_roundabout_l3_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 23.54 23.54 A 12 12 0 1 1 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 1 23.54 23.54 L 19.3 19.3"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(19.3,19.3) scale(2) rotate(315)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l4_bk.svg b/navit/icons/nav_roundabout_l4_bk.svg
deleted file mode 100644
index 0dd38594e..000000000
--- a/navit/icons/nav_roundabout_l4_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32 20 A 12 12 0 0 1 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 1 32 20 L 32 14"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(32,14) scale(2) rotate(0)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l4_wh.svg b/navit/icons/nav_roundabout_l4_wh.svg
deleted file mode 100644
index 0faf9bc0a..000000000
--- a/navit/icons/nav_roundabout_l4_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32 20 A 12 12 0 0 1 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 1 32 20 L 32 14"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(32,14) scale(2) rotate(0)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l5_bk.svg b/navit/icons/nav_roundabout_l5_bk.svg
deleted file mode 100644
index f7122efca..000000000
--- a/navit/icons/nav_roundabout_l5_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 40.46 23.54 A 12 12 0 0 1 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 1 40.46 23.54 L 44.7 19.3"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(44.7,19.3) scale(2) rotate(45)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l5_wh.svg b/navit/icons/nav_roundabout_l5_wh.svg
deleted file mode 100644
index 5bbbb38e7..000000000
--- a/navit/icons/nav_roundabout_l5_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 40.46 23.54 A 12 12 0 0 1 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 1 40.46 23.54 L 44.7 19.3"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(44.7,19.3) scale(2) rotate(45)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l6_bk.svg b/navit/icons/nav_roundabout_l6_bk.svg
deleted file mode 100644
index fbf660b33..000000000
--- a/navit/icons/nav_roundabout_l6_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 44 32 A 12 12 0 0 1 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 1 44 32 L 50 32"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(50,32) scale(2) rotate(90)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l6_wh.svg b/navit/icons/nav_roundabout_l6_wh.svg
deleted file mode 100644
index 91098222e..000000000
--- a/navit/icons/nav_roundabout_l6_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 44 32 A 12 12 0 0 1 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 1 44 32 L 50 32"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(50,32) scale(2) rotate(90)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l7_bk.svg b/navit/icons/nav_roundabout_l7_bk.svg
deleted file mode 100644
index fc122cf9b..000000000
--- a/navit/icons/nav_roundabout_l7_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 40.46 40.46 A 12 12 0 0 1 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 1 40.46 40.46 L 44.7 44.7"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(44.7,44.7) scale(2) rotate(135)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l7_wh.svg b/navit/icons/nav_roundabout_l7_wh.svg
deleted file mode 100644
index 3adc2d7c8..000000000
--- a/navit/icons/nav_roundabout_l7_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 40.46 40.46 A 12 12 0 0 1 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 1 40.46 40.46 L 44.7 44.7"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(44.7,44.7) scale(2) rotate(135)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l8_bk.svg b/navit/icons/nav_roundabout_l8_bk.svg
deleted file mode 100644
index de184a8cb..000000000
--- a/navit/icons/nav_roundabout_l8_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 38 44 A 12 12 0 0 1 26 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 26,63 L 26,44 A 12 12 0 1 1 38 44 L 38 50"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(38,50) scale(2) rotate(180)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_l8_wh.svg b/navit/icons/nav_roundabout_l8_wh.svg
deleted file mode 100644
index cc16f9c15..000000000
--- a/navit/icons/nav_roundabout_l8_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 38 44 A 12 12 0 0 1 26 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 26,63 L 26,44 A 12 12 0 1 1 38 44 L 38 50"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(38,50) scale(2) rotate(180)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r1_bk.svg b/navit/icons/nav_roundabout_r1_bk.svg
deleted file mode 100644
index 7d89c9ecb..000000000
--- a/navit/icons/nav_roundabout_r1_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 40.46 40.46 A 12 12 0 1 0 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 0 40.46 40.46 L 44.7 44.7"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(44.7,44.7) scale(2) rotate(135)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r1_wh.svg b/navit/icons/nav_roundabout_r1_wh.svg
deleted file mode 100644
index c9fe0b17b..000000000
--- a/navit/icons/nav_roundabout_r1_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 40.46 40.46 A 12 12 0 1 0 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 0 40.46 40.46 L 44.7 44.7"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(44.7,44.7) scale(2) rotate(135)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r2_bk.svg b/navit/icons/nav_roundabout_r2_bk.svg
deleted file mode 100644
index a2285491d..000000000
--- a/navit/icons/nav_roundabout_r2_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 44 32 A 12 12 0 1 0 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 0 44 32 L 50 32"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(50,32) scale(2) rotate(90)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r2_wh.svg b/navit/icons/nav_roundabout_r2_wh.svg
deleted file mode 100644
index 94cb7cc8b..000000000
--- a/navit/icons/nav_roundabout_r2_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 44 32 A 12 12 0 1 0 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 0 44 32 L 50 32"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(50,32) scale(2) rotate(90)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r3_bk.svg b/navit/icons/nav_roundabout_r3_bk.svg
deleted file mode 100644
index bbb2966c7..000000000
--- a/navit/icons/nav_roundabout_r3_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 40.46 23.54 A 12 12 0 1 0 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 0 40.46 23.54 L 44.7 19.3"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(44.7,19.3) scale(2) rotate(45)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r3_wh.svg b/navit/icons/nav_roundabout_r3_wh.svg
deleted file mode 100644
index 80f959268..000000000
--- a/navit/icons/nav_roundabout_r3_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 40.46 23.54 A 12 12 0 1 0 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 0 40.46 23.54 L 44.7 19.3"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(44.7,19.3) scale(2) rotate(45)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r4_bk.svg b/navit/icons/nav_roundabout_r4_bk.svg
deleted file mode 100644
index 07e082595..000000000
--- a/navit/icons/nav_roundabout_r4_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32 20 A 12 12 0 1 0 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 0 32 20 L 32 14"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(32,14) scale(2) rotate(0)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r4_wh.svg b/navit/icons/nav_roundabout_r4_wh.svg
deleted file mode 100644
index f2443388a..000000000
--- a/navit/icons/nav_roundabout_r4_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32 20 A 12 12 0 1 0 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 0 0 32 20 L 32 14"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(32,14) scale(2) rotate(0)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r5_bk.svg b/navit/icons/nav_roundabout_r5_bk.svg
deleted file mode 100644
index 8afd28712..000000000
--- a/navit/icons/nav_roundabout_r5_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 23.54 23.54 A 12 12 0 0 0 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 0 23.54 23.54 L 19.3 19.3"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(19.3,19.3) scale(2) rotate(315)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r5_wh.svg b/navit/icons/nav_roundabout_r5_wh.svg
deleted file mode 100644
index 98e8d3756..000000000
--- a/navit/icons/nav_roundabout_r5_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 23.54 23.54 A 12 12 0 0 0 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 0 23.54 23.54 L 19.3 19.3"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(19.3,19.3) scale(2) rotate(315)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r6_bk.svg b/navit/icons/nav_roundabout_r6_bk.svg
deleted file mode 100644
index 1b3d20504..000000000
--- a/navit/icons/nav_roundabout_r6_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 20 32 A 12 12 0 0 0 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 0 20 32 L 14 32"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(14,32) scale(2) rotate(270)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r6_wh.svg b/navit/icons/nav_roundabout_r6_wh.svg
deleted file mode 100644
index c2a516e74..000000000
--- a/navit/icons/nav_roundabout_r6_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 20 32 A 12 12 0 0 0 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 0 20 32 L 14 32"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(14,32) scale(2) rotate(270)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r7_bk.svg b/navit/icons/nav_roundabout_r7_bk.svg
deleted file mode 100644
index a7d42a642..000000000
--- a/navit/icons/nav_roundabout_r7_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 23.54 40.46 A 12 12 0 0 0 32 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 0 23.54 40.46 L 19.3 44.7"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(19.3,44.7) scale(2) rotate(225)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r7_wh.svg b/navit/icons/nav_roundabout_r7_wh.svg
deleted file mode 100644
index b27ab38e8..000000000
--- a/navit/icons/nav_roundabout_r7_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 23.54 40.46 A 12 12 0 0 0 32 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 32,63 L 32,44 A 12 12 0 1 0 23.54 40.46 L 19.3 44.7"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(19.3,44.7) scale(2) rotate(225)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r8_bk.svg b/navit/icons/nav_roundabout_r8_bk.svg
deleted file mode 100644
index 743cb2f0d..000000000
--- a/navit/icons/nav_roundabout_r8_bk.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 26 44 A 12 12 0 0 0 38 44"
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 38,63 L 38,44 A 12 12 0 1 0 26 44 L 26 50"
- style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(26,50) scale(2) rotate(180)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_roundabout_r8_wh.svg b/navit/icons/nav_roundabout_r8_wh.svg
deleted file mode 100644
index d50e0c58c..000000000
--- a/navit/icons/nav_roundabout_r8_wh.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 26 44 A 12 12 0 0 0 38 44"
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M 38,63 L 38,44 A 12 12 0 1 0 26 44 L 26 50"
- style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(26,50) scale(2) rotate(180)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
- </g>
-</svg>
diff --git a/navit/icons/nav_straight.xpm b/navit/icons/nav_straight.xpm
deleted file mode 100644
index dbbfc0c2a..000000000
--- a/navit/icons/nav_straight.xpm
+++ /dev/null
@@ -1,69 +0,0 @@
-/* XPM */
-static char * turn_straight_sv_xpm[] = {
-"64 64 2 1",
-" c None",
-". c #000000",
-" ",
-" . ",
-" . ",
-" .. ",
-" ... ",
-" .... ",
-" ..... ",
-" ..... ",
-" ...... ",
-" ....... ",
-" ....... ",
-" ........ ",
-" ......... ",
-" ......... ",
-" ........... ",
-" ........... ",
-" ............ ",
-" ............. ",
-" ............. ",
-" .............. ",
-" ............... ",
-" ............... ",
-" ................ ",
-" ................. ",
-" .................. ",
-" ................... ",
-" ................... ",
-" .................... ",
-" ..................... ",
-" ..................... ",
-" ...................... ",
-" ....................... ",
-" ....................... ",
-" ......................... ",
-" ......................... ",
-" .......................... ",
-" ........................... ",
-" .... ............ .... ",
-" .. ............ ... ",
-" . ............ . ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ............ ",
-" ........... "};
diff --git a/navit/icons/nav_straight_32.xpm b/navit/icons/nav_straight_32.xpm
deleted file mode 100644
index db07b5719..000000000
--- a/navit/icons/nav_straight_32.xpm
+++ /dev/null
@@ -1,41 +0,0 @@
-/* XPM */
-static char *noname[] = {
-/* width height ncolors chars_per_pixel */
-"32 32 2 1",
-/* colors */
-" c #ffffff",
-". c None",
-/* pixels */
-"................................",
-"............... ................",
-".............. ................",
-".............. ...............",
-".............. ...............",
-"............. ...............",
-"............. ..............",
-"............ ..............",
-"............ .............",
-"............ .............",
-"........... .............",
-"........... ............",
-"........... ............",
-".......... ............",
-".......... ...........",
-".......... ...........",
-"......... ...........",
-"......... ..........",
-"........ ..........",
-"........ ... .. .........",
-"............ .............",
-"............ .............",
-"............ .............",
-"............ .............",
-"............ .............",
-"............ .............",
-"............ .............",
-"............ .............",
-"............ .............",
-"............ .............",
-"............ .............",
-"............ .............."
-};
diff --git a/navit/icons/nav_straight_bk.svg b/navit/icons/nav_straight_bk.svg
deleted file mode 100644
index 92fa2eaea..000000000
--- a/navit/icons/nav_straight_bk.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,32 C 32,10 32,16 32,26"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(32,26) scale(3) rotate(0)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_straight_wh.svg b/navit/icons/nav_straight_wh.svg
deleted file mode 100644
index 76ce34c29..000000000
--- a/navit/icons/nav_straight_wh.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 32,63 L 32,32 C 32,10 32,16 32,26"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(32,26) scale(3) rotate(0)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_svg.html b/navit/icons/nav_svg.html
deleted file mode 100644
index 3bb5ca51e..000000000
--- a/navit/icons/nav_svg.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<html>
-<head>
-<title>Overview of Navit navigation icons</title>
-</head>
-<body bgcolor="#7f7f7f">
-<h1>Overview of Navit navigation icons</h1>
-<embed src="nav_left_1_bk.svg" />
-<embed src="nav_left_1_wh.svg" />
-<embed src="nav_left_2_bk.svg" />
-<embed src="nav_left_2_wh.svg" />
-<embed src="nav_left_3_bk.svg" />
-<embed src="nav_left_3_wh.svg" />
-<embed src="nav_right_1_bk.svg" />
-<embed src="nav_right_1_wh.svg" />
-<embed src="nav_right_2_bk.svg" />
-<embed src="nav_right_2_wh.svg" />
-<embed src="nav_right_3_bk.svg" />
-<embed src="nav_right_3_wh.svg" />
-<embed src="nav_roundabout_l1_bk.svg" />
-<embed src="nav_roundabout_l1_wh.svg" />
-<embed src="nav_roundabout_l2_bk.svg" />
-<embed src="nav_roundabout_l2_wh.svg" />
-<embed src="nav_roundabout_l3_bk.svg" />
-<embed src="nav_roundabout_l3_wh.svg" />
-<embed src="nav_roundabout_l4_bk.svg" />
-<embed src="nav_roundabout_l4_wh.svg" />
-<embed src="nav_roundabout_l5_bk.svg" />
-<embed src="nav_roundabout_l5_wh.svg" />
-<embed src="nav_roundabout_l6_bk.svg" />
-<embed src="nav_roundabout_l6_wh.svg" />
-<embed src="nav_roundabout_l7_bk.svg" />
-<embed src="nav_roundabout_l7_wh.svg" />
-<embed src="nav_roundabout_l8_bk.svg" />
-<embed src="nav_roundabout_l8_wh.svg" />
-<embed src="nav_roundabout_r1_bk.svg" />
-<embed src="nav_roundabout_r1_wh.svg" />
-<embed src="nav_roundabout_r2_bk.svg" />
-<embed src="nav_roundabout_r2_wh.svg" />
-<embed src="nav_roundabout_r3_bk.svg" />
-<embed src="nav_roundabout_r3_wh.svg" />
-<embed src="nav_roundabout_r4_bk.svg" />
-<embed src="nav_roundabout_r4_wh.svg" />
-<embed src="nav_roundabout_r5_bk.svg" />
-<embed src="nav_roundabout_r5_wh.svg" />
-<embed src="nav_roundabout_r6_bk.svg" />
-<embed src="nav_roundabout_r6_wh.svg" />
-<embed src="nav_roundabout_r7_bk.svg" />
-<embed src="nav_roundabout_r7_wh.svg" />
-<embed src="nav_roundabout_r8_bk.svg" />
-<embed src="nav_roundabout_r8_wh.svg" />
-<embed src="nav_straight_bk.svg" />
-<embed src="nav_straight_wh.svg" />
-<embed src="nav_turnaround_left_bk.svg" />
-<embed src="nav_turnaround_left_wh.svg" />
-<embed src="nav_turnaround_right_bk.svg" />
-<embed src="nav_turnaround_right_wh.svg" />
-<embed src="nav_destination_bk.svg" />
-<embed src="nav_destination_wh.svg" />
-</body>
diff --git a/navit/icons/nav_turnaround_left_bk.svg b/navit/icons/nav_turnaround_left_bk.svg
deleted file mode 100644
index dcaef8e2b..000000000
--- a/navit/icons/nav_turnaround_left_bk.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 48,63 L 48,20 C 48,0 22,0 22,20 L 22 35"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(22,35) scale(3) rotate(180)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_turnaround_left_wh.svg b/navit/icons/nav_turnaround_left_wh.svg
deleted file mode 100644
index d7761f1cf..000000000
--- a/navit/icons/nav_turnaround_left_wh.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 48,63 L 48,20 C 48,0 22,0 22,20 L 22 35"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(22,35) scale(3) rotate(180)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_turnaround_right_bk.svg b/navit/icons/nav_turnaround_right_bk.svg
deleted file mode 100644
index 0b6759fe9..000000000
--- a/navit/icons/nav_turnaround_right_bk.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 16,63 L 16,20 C 16,0 42,0 42,20 L 42 35"
- style="fill:none;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(42,35) scale(3) rotate(180)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#000000;stroke:#000000;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/nav_turnaround_right_wh.svg b/navit/icons/nav_turnaround_right_wh.svg
deleted file mode 100644
index 991009b80..000000000
--- a/navit/icons/nav_turnaround_right_wh.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M 16,63 L 16,20 C 16,0 42,0 42,20 L 42 35"
- style="fill:none;stroke:#ffffff;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate(42,35) scale(3) rotate(180)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:round"
- />
-
- </g>
-</svg>
diff --git a/navit/icons/navit.svg b/navit/icons/navit.svg
deleted file mode 100644
index 591d9ee57..000000000
--- a/navit/icons/navit.svg
+++ /dev/null
@@ -1,393 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.48.4 r9939"
- version="1.0"
- sodipodi:docname="navit.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/navit.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3376">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop3378" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop3380" />
- </linearGradient>
- <linearGradient
- id="linearGradient3365">
- <stop
- style="stop-color:#ffffff;stop-opacity:0.61904764;"
- offset="0"
- id="stop3367" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3369" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3328">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3330" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3332" />
- </linearGradient>
- <linearGradient
- id="linearGradient3320">
- <stop
- style="stop-color:#116cbf;stop-opacity:1;"
- offset="0"
- id="stop3322" />
- <stop
- id="stop3354"
- offset="0.08"
- style="stop-color:#116cbf;stop-opacity:1;" />
- <stop
- id="stop3352"
- offset="0.4893617"
- style="stop-color:#1a6cb6;stop-opacity:1;" />
- <stop
- style="stop-color:#329eff;stop-opacity:1;"
- offset="1"
- id="stop3324" />
- </linearGradient>
- <linearGradient
- id="linearGradient3308">
- <stop
- style="stop-color:#062643;stop-opacity:1;"
- offset="0"
- id="stop3310" />
- <stop
- style="stop-color:#0d5799;stop-opacity:1;"
- offset="1"
- id="stop3312" />
- </linearGradient>
- <linearGradient
- id="linearGradient3235">
- <stop
- style="stop-color:#c17d11;stop-opacity:1;"
- offset="0"
- id="stop3237" />
- <stop
- style="stop-color:#e9cb14;stop-opacity:1;"
- offset="1"
- id="stop3239" />
- </linearGradient>
- <linearGradient
- id="linearGradient3227">
- <stop
- style="stop-color:#76650c;stop-opacity:1;"
- offset="0"
- id="stop3229" />
- <stop
- style="stop-color:#76650c;stop-opacity:0;"
- offset="1"
- id="stop3231" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="15.556349 : 133.02972 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3235"
- id="linearGradient3241"
- x1="64"
- y1="115.11359"
- x2="64"
- y2="17.40102"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.15819674,0,0,0.15819674,1.9928719,0.69315656)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3308"
- id="linearGradient3314"
- x1="-7.7781754"
- y1="4.2563133"
- x2="43.133514"
- y2="4.2563133"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3320"
- id="linearGradient3326"
- x1="7.6363606"
- y1="87.731171"
- x2="58.391151"
- y2="38.450466"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.15669503,0.02174581,-0.02174581,0.15669503,4.357122,0.76802046)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3227"
- id="linearGradient3340"
- gradientUnits="userSpaceOnUse"
- x1="63"
- y1="106.75"
- x2="92"
- y2="29.25" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3328"
- id="linearGradient3342"
- gradientUnits="userSpaceOnUse"
- x1="71"
- y1="69.5"
- x2="87.25"
- y2="33.5" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3365"
- id="linearGradient3371"
- x1="-1.5"
- y1="86.5"
- x2="73.5"
- y2="40"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.15819674,0,0,0.15819674,1.9928719,0.69315656)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3376"
- id="linearGradient3382"
- x1="62.147858"
- y1="67.453751"
- x2="11.016594"
- y2="24.242672"
- gradientUnits="userSpaceOnUse" />
- <filter
- inkscape:collect="always"
- id="filter3424">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="0.90523025"
- id="feGaussianBlur3426" />
- </filter>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313708"
- inkscape:cx="16.894586"
- inkscape:cy="27.303943"
- inkscape:document-units="px"
- inkscape:current-layer="layer2"
- showgrid="false"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- inkscape:window-x="0"
- inkscape:window-y="24"
- showborder="true"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="display:inline">
- <rect
- style="fill:url(#linearGradient3241);fill-opacity:1;stroke:#43350f;stroke-width:0.79098374;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="rect2403"
- width="18.792814"
- height="15.381022"
- x="2.7210562"
- y="3.1272359"
- rx="1.5819675"
- ry="1.5819675" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="lignes"
- style="display:inline">
- <g
- id="g3336"
- transform="matrix(0.15819674,0,0,0.15819674,5.1568068,0.69315656)">
- <path
- sodipodi:nodetypes="cczzczc"
- id="path3223"
- d="m 92,27 8,-4 c 0,0 -32.803776,29.787015 -21.5,41.25 11.303776,11.462985 5.61873,46.35859 -6,46.25 L 19,110 C 39.916667,101.41667 73.874441,83.136394 61,66.25 48.125559,49.363606 92,27 92,27 z"
- style="fill:url(#linearGradient3340);fill-opacity:1;stroke:none"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="czc"
- id="path3244"
- d="M 49.5,110 C 60.666667,104.16667 83.256846,86.358298 72,70.5 60.743153,54.641702 77.5,38.5 92.5,29"
- style="fill:none;stroke:url(#linearGradient3342);stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:9, 9;stroke-dashoffset:0"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer4"
- inkscape:label="bulle"
- style="display:none">
- <path
- sodipodi:type="arc"
- style="fill:url(#linearGradient3314);fill-opacity:1;stroke:#1f3157;stroke-width:5.30526352;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- id="path3305"
- sodipodi:cx="17.67767"
- sodipodi:cy="4.2563133"
- sodipodi:rx="25.455845"
- sodipodi:ry="25.455845"
- d="m 43.133514,4.2563133 a 25.455845,25.455845 0 1 1 -50.9116894,0 25.455845,25.455845 0 1 1 50.9116894,0 z"
- transform="matrix(1.3194444,0,0,1.3194444,18.394598,29.399489)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer3"
- inkscape:label="rose des vents"
- style="display:none">
- <g
- id="g3256"
- transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,36.903806,-19.093669)"
- style="opacity:0.5">
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 -5.673657,-27.511429 -27.511429,-5.673655 27.511429,-5.673657 5.673655,-27.5114293 5.673657,27.5114293 27.5114293,5.673655 -27.5114293,5.673657 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="2.3561945"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="8.0237608"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3258"
- style="fill:#167bd9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 6.826343,-33.011429 -40.011429,-0.173655 33.011429,6.826343 0.173655,-40.0114293 -6.826343,33.0114293 40.0114293,0.173655 -33.0114293,-6.826343 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="0.025433549"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="6.8285527"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3260"
- style="fill:#c3dff9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- </g>
- <g
- id="g3252">
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 -5.673657,-27.511429 -27.511429,-5.673655 27.511429,-5.673657 5.673655,-27.5114293 5.673657,27.5114293 27.5114293,5.673655 -27.5114293,5.673657 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="2.3561945"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="8.0237608"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3248"
- style="fill:#167bd9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- <path
- transform="translate(67.5,7)"
- d="m -25.999999,61.185085 6.826343,-33.011429 -40.011429,-0.173655 33.011429,6.826343 0.173655,-40.0114293 -6.826343,33.0114293 40.0114293,0.173655 -33.0114293,-6.826343 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="0.025433549"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="6.8285527"
- sodipodi:r1="33.185085"
- sodipodi:cy="28"
- sodipodi:cx="-26"
- sodipodi:sides="4"
- id="path3250"
- style="fill:#c3dff9;fill-opacity:1;stroke:none"
- sodipodi:type="star" />
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer6"
- inkscape:label="ondes"
- style="display:inline">
- <path
- sodipodi:type="spiral"
- style="fill:none;stroke:url(#linearGradient3382);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3424)"
- id="path3374"
- sodipodi:cx="14.142136"
- sodipodi:cy="19.812662"
- sodipodi:expansion="1"
- sodipodi:revolution="7"
- sodipodi:radius="54.341515"
- sodipodi:argument="-17.841497"
- sodipodi:t0="0"
- d="m 14.142136,19.812662 c 0.622964,0.987625 -1.02395,1.327003 -1.641498,1.035408 -1.673515,-0.790205 -1.44576,-3.111369 -0.429317,-4.318403 1.818177,-2.1591 5.16668,-1.702115 6.995307,0.176773 2.683583,2.757343 1.972982,7.252372 -0.782863,9.672211 C 14.610657,29.603916 8.9345884,28.6291 5.934649,24.989699 2.1595315,20.409885 3.4032379,13.538342 7.9296913,9.9636782 13.411833,5.6342815 21.486273,7.1492634 25.632617,12.56481 30.51894,18.946845 28.731319,28.228517 22.425395,32.944641 15.144955,38.389593 4.6532955,36.328487 -0.63134024,29.131329 -6.6360792,20.95346 -4.300928,9.2499464 3.7880618,3.3976889 12.862686,-3.1676594 25.779376,-0.55807441 32.198606,8.4231809 39.325168,18.394077 36.440869,32.524914 26.567024,39.51063 15.700216,47.198863 0.35449515,44.039641 -7.1973295,33.272958 -15.447588,21.510513 -12.013284,4.9493376 -0.35356778,-3.1683003 12.304301,-11.980865 30.081381,-8.2713528 38.764595,4.2815513 48.13969,17.834674 44.154872,36.828022 30.708654,46.076619 16.260416,56.014427 -3.9494981,51.754222 -13.763319,37.414588 -24.263992,22.071347 -19.728335,0.64462208 -4.4951973,-9.7342896 11.742953,-20.797954 34.386694,-15.98679 45.330585,0.1399218 56.957348,17.272902 51.870631,41.133834 34.850283,52.642608 16.822539,64.832562 -8.2557318,59.470254 -20.329308,41.556217 -33.082529,22.633765 -27.444596,-3.6619713 -8.6368269,-16.300279 11.180283,-29.616836 38.693597,-23.70325 51.896574,-4.0017077 65.776525,16.710018 59.587261,45.441005 38.991913,59.208598 17.385609,73.651995 -12.563136,67.187032 -26.895297,45.697847 -41.902187,23.196997 -35.161504,-7.9695799 -12.778456,-22.866268 10.616911,-38.436689 43.001386,-31.420272 58.462563,-8.1433373 74.596552,16.146521 67.304385,49.748954 43.133542,65.774587"
- transform="matrix(-0.15819674,0,0,0.15819674,22.262049,1.7055356)" />
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer5"
- inkscape:label="flèche"
- style="display:inline">
- <path
- style="fill:url(#linearGradient3326);fill-opacity:1;stroke:#1f3157;stroke-width:0.47459021;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- d="M 5.6166617,6.6702162 C 8.5498903,6.3591404 11.366732,6.8627725 14.089084,8.0278339 L 12.323485,12.25995 11.465549,10.2747 C 9.1936105,11.38659 7.6712925,13.621104 6.8096897,16.845097 L 0.57820215,12.334567 C 2.318135,10.026025 5.9650066,8.1110997 8.889601,7.8565979 L 5.6166617,6.6702162 z"
- id="rect3317"
- sodipodi:nodetypes="cccccccc"
- inkscape:connector-curvature="0" />
- <path
- style="fill:url(#linearGradient3371);fill-opacity:1;stroke:none"
- d="M 8.2416433,7.021026 C 9.8257327,6.8500961 11.315051,7.2477939 12.75025,7.9702064 8.920071,9.4835882 6.1923078,11.598289 4.6822166,14.377175 L 1.7555768,12.162421 C 3.6037773,9.8056523 6.570797,8.7541746 9.6654142,7.8515586 L 8.2416433,7.021026 z"
- id="rect3362"
- sodipodi:nodetypes="cccccc"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/navit_svg2png b/navit/icons/navit_svg2png
deleted file mode 100755
index 675207561..000000000
--- a/navit/icons/navit_svg2png
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/sh
-
-svgtopng()
-{
- case $svgtopng in
- *ksvgtopng|*ksvgtopng4)
- $svgtopng $*
- ;;
- *rsvg-convert)
- $svgtopng --width=$1 --height=$2 --output $4 $3
- ;;
- *inkscape)
- $svgtopng --without-gui --export-width=$1 --export-height=$2 --export-png=$BUILDDIR/$4 $3
- ;;
- *convert)
- $svgtopng -alpha on -background none $3 -resize $1x$2 $4
- ;;
- esac
-}
-
-if [ "$OSTYPE" != "cygwin" -a "$OSTYPE" != "msys" ]; then
- ulimit -t 10
-fi
-
-svgtopng=$1
-png=$2
-w=$3
-h=$4
-case "$png" in
- *_[1-9]*_[1-9]*.png)
- svg=${png%_*_*.png};
- h=${png##*_}
- w=${png%_$h}
- h=${h%.png}
- w=${w##*_}
- ;;
- *)
- svg=${png%.png}
- ;;
-esac
-if [ ! -f $svg.svg -a ! -f $svg.svgz ]
-then
- svg="$SRCDIR/$svg"
-fi
-if [ -f $png -a ! -f $svg.svg ]; then
- # width and height seems to be defined as part of the file name
- touch $png
-else
- # use width and height from the svg image
- if [ -f $svg.svg ]
- then
- if [ -z "$w" ]
- then
- w=$(grep 'width="[0-9pxt.]*"' $svg.svg | head -n 1 | sed -e 's/.*width="//' -e 's/[pxt]*".*//')
- fi
- if [ -z "$h" ]
- then
- h=$(grep 'height="[0-9pxt.]*"' $svg.svg | head -n 1 | sed -e 's/.*height="//' -e 's/[pxt]*".*//')
- fi
- svgtopng $w $h $svg.svg $png
- elif [ -f $svg.svgz ]
- then
- gzip -dc <$svg.svgz >$svg.svg
- if [ -z "$w" ]
- then
- w=$(grep 'width="[0-9pxt.]*"' $svg.svg | head -n 1 | sed -e 's/.*width="//' -e 's/[pxt]*".*//')
- fi
- if [ -z "$h" ]
- then
- h=$(grep 'height="[0-9pxt.]*"' $svg.svg | head -n 1 | sed -e 's/.*height="//' -e 's/[pxt]*".*//')
- fi
- svgtopng $w $h $svg.svg $png
- rm -f $svg.svg
- fi
-fi
-exit 0
diff --git a/navit/icons/osd_minus.png b/navit/icons/osd_minus.png
deleted file mode 100644
index 4cde8ede4..000000000
--- a/navit/icons/osd_minus.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/osd_plus.png b/navit/icons/osd_plus.png
deleted file mode 100644
index de138e8cc..000000000
--- a/navit/icons/osd_plus.png
+++ /dev/null
Binary files differ
diff --git a/navit/icons/pagan.svg b/navit/icons/pagan.svg
deleted file mode 100644
index 1c6ee58fc..000000000
--- a/navit/icons/pagan.svg
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="pagan.svg"
- version="1.0"
- width="22">
- <metadata
- id="metadata5184">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs5182">
- <inkscape:perspective
- id="perspective5186"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective7095"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective7148"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4916"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1"
- gridtolerance="10"
- guidetolerance="10"
- id="namedview5180"
- inkscape:current-layer="svg2"
- inkscape:cx="39.878496"
- inkscape:cy="11.457263"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-maximized="1"
- inkscape:window-width="1024"
- inkscape:window-x="-3"
- inkscape:window-y="-3"
- inkscape:zoom="7.1783529"
- objecttolerance="10"
- pagecolor="#ffffff"
- showgrid="false" />
- <g
- id="g1327"
- transform="matrix(0.04166941,0,0,0.04166941,-0.5572309,-0.41749724)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g7136-6"
- style="stroke:#ffffff;stroke-opacity:1"
- transform="matrix(0.04062767,0,0,0.04062767,-0.76122002,-0.76598313)">
- <path
- d="m 540.30727,280.27933 c 0,134.66183 -110.43434,243.82681 -246.66201,243.82681 -136.22766,0 -246.661999,-109.16498 -246.661999,-243.82681 0,-134.66183 110.434339,-243.826815 246.661999,-243.826815 135.88357,0 246.17485,108.634665 246.66043,242.955495"
- id="path7055-4"
- sodipodi:cx="293.64526"
- sodipodi:cy="280.27933"
- sodipodi:end="6.2796118"
- sodipodi:open="true"
- sodipodi:rx="246.662"
- sodipodi:ry="243.82681"
- sodipodi:start="0"
- sodipodi:type="arc"
- style="fill:none;stroke:#5e8019;stroke-width:39.90797424;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- transform="matrix(0.99652895,0,0,1.0081164,-2.6260059,8.2338569)" />
- <path
- d="M 94.584251,233.83538 482.98557,232.7405 168.98224,452.81463 288.23788,88.214254 408.58758,456.09931 94.584251,233.83538 z"
- id="path5966-6-9"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#5e8019;stroke-width:38.03951645;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
- </g>
- <g
- id="g7136-6-9"
- style="opacity:0.25;stroke:#ffffff;stroke-opacity:1"
- transform="matrix(0.04062767,0,0,0.04062767,0.17175723,0.44366117)">
- <path
- d="M 94.584251,233.83538 482.98557,232.7405 168.98224,452.81463 288.23788,88.214254 408.58758,456.09931 94.584251,233.83538 z m 441.221579,56.95267 c 0,135.7548 -110.05102,245.8058 -245.80583,245.8058 -135.75481,0 -245.805826,-110.051 -245.805826,-245.8058 0,-135.7548 110.051016,-245.805815 245.805826,-245.805815 135.41191,0 245.32036,109.516385 245.80426,244.927415"
- id="path5966-6-9-6"
- style="fill:none;stroke:#ffffff;stroke-width:38.03951645;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/parking.svg b/navit/icons/parking.svg
deleted file mode 100644
index 7a7b60e40..000000000
--- a/navit/icons/parking.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="parking.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/police.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6"
- inkscape:cx="24.474716"
- inkscape:cy="24.902671"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <rect
- style="opacity:1;fill:#0000ff;fill-opacity:1;stroke:#ffffff;stroke-width:0.84443629;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect2402"
- width="17.111395"
- height="17.155563"
- x="2.4222181"
- y="-75.577782"
- ry="1.8277817" />
- <path
- inkscape:connector-curvature="0"
- id="path3343"
- style="font-style:normal;font-weight:bold;font-size:67.55490112px;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans Bold';fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 6.7825928,-72.613482 4.7425322,0 q 2.115214,0 3.243328,0.942569 1.135536,0.935147 1.135536,2.671849 0,1.744124 -1.135536,2.686693 -1.128114,0.935147 -3.243328,0.935147 l -1.8851382,0 0,3.844494 -2.857394,0 0,-11.080752 z m 2.857394,2.070683 0,3.094892 1.5808442,0 q 0.831242,0 1.283972,-0.400777 0.45273,-0.4082 0.45273,-1.15038 0,-0.74218 -0.45273,-1.142958 -0.45273,-0.400777 -1.283972,-0.400777 l -1.5808442,0 z" />
- </g>
-</svg>
diff --git a/navit/icons/pastafarian.svg b/navit/icons/pastafarian.svg
deleted file mode 100644
index eff678c09..000000000
--- a/navit/icons/pastafarian.svg
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="pastafarian.svg"
- version="1.0"
- width="22">
- <metadata
- id="metadata3409">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs3407">
- <inkscape:perspective
- id="perspective3411"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3698"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5037"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1"
- gridtolerance="10"
- guidetolerance="10"
- id="namedview3405"
- inkscape:current-layer="svg2"
- inkscape:cx="12.614075"
- inkscape:cy="13.701268"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-maximized="1"
- inkscape:window-width="1024"
- inkscape:window-x="-3"
- inkscape:window-y="-3"
- inkscape:zoom="14.783444"
- objecttolerance="10"
- pagecolor="#ffffff"
- showgrid="false" />
- <g
- id="g1327"
- transform="matrix(0.04090707,0,0,0.04090707,-0.54114589,-1.0142223)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2953-9"
- transform="matrix(1.2021162,0,0,1.2021162,0.94984421,4.303766)">
- <path
- clip-rule="evenodd"
- d="M 6.285,0.015 C 7.148,-0.095 7.654,0.432 7.842,0.773 8.203,1.436 7.951,2.17 7.621,2.529 6.762,3.466 4.999,2.956 4.988,1.511 4.982,0.84 5.316,0.451 5.686,0.214 5.836,0.119 6.031,0.046 6.285,0.015 z M 6.305,1.97 C 7.102,2.285 7.263,0.873 6.425,1.012 5.912,1.097 5.855,1.792 6.305,1.97 z"
- id="path2955-2"
- style="fill:#ffffff;fill-opacity:0.25;fill-rule:evenodd"
- inkscape:connector-curvature="0" />
- <path
- clip-rule="evenodd"
- d="m 11.313,0.015 c 0.741,-0.094 1.314,0.305 1.556,0.758 0.338,0.634 0.144,1.34 -0.199,1.736 C 11.822,3.491 10.035,2.92 10.016,1.512 10.011,1.127 10.179,0.776 10.276,0.634 10.461,0.36 10.832,0.076 11.313,0.015 z m 0.02,1.955 C 11.666,2.1 12.095,1.879 12.031,1.411 11.996,1.142 11.754,0.962 11.453,1.011 10.968,1.092 10.867,1.788 11.333,1.97 z"
- id="path2957-0"
- style="fill:#ffffff;fill-opacity:0.25;fill-rule:evenodd"
- inkscape:connector-curvature="0" />
- <path
- clip-rule="evenodd"
- d="m 16.063,5.063 c -0.424,0.229 -0.725,0.664 -1.078,1.018 -0.355,0.356 -0.75,0.667 -1.137,0.979 0.572,0.261 1.033,0.5 1.176,1.137 0.038,0.167 -0.008,0.402 0.061,0.599 0.109,0.31 0.627,0.329 1.059,0.299 0.182,-0.012 0.365,-0.085 0.518,-0.06 0.422,0.068 0.552,0.744 0.141,0.958 -0.219,0.113 -0.611,0.119 -0.898,0.12 C 14.911,10.116 14.192,9.699 14.069,8.836 14.052,8.716 14.082,8.577 14.049,8.437 13.975,8.119 13.482,7.964 13.091,7.938 12.369,7.89 12.012,8.271 11.515,8.457 c 0.193,0.262 0.424,0.536 0.499,0.978 0.033,0.195 -0.014,0.436 0.06,0.638 0.085,0.232 0.454,0.288 0.818,0.419 0.286,0.104 0.603,0.254 0.798,0.419 0.141,0.119 0.348,0.322 0.359,0.579 0.017,0.367 -0.291,0.595 -0.658,0.499 C 13.189,11.937 13.086,11.701 12.912,11.59 12.718,11.467 12.395,11.407 12.094,11.291 11.601,11.1 11.267,10.847 11.116,10.353 11.033,10.079 11.083,9.677 10.957,9.415 10.604,8.688 9.855,9.034 9.02,9.034 8.811,9.034 8.615,9.019 8.42,8.994 8.227,8.968 8.033,8.912 7.881,8.914 7.51,8.917 7.061,9.24 7.003,9.612 6.957,9.916 6.996,10.14 6.924,10.37 6.776,10.838 6.445,11.085 5.926,11.287 5.684,11.382 5.369,11.436 5.128,11.586 4.914,11.719 4.815,12.105 4.35,12.005 4.204,11.973 4.012,11.825 3.991,11.565 3.953,11.095 4.477,10.801 4.789,10.648 5.094,10.499 5.87,10.341 5.966,10.069 6.048,9.842 5.987,9.594 6.027,9.391 6.107,8.986 6.295,8.741 6.546,8.453 6.032,8.283 5.686,7.897 4.968,7.936 4.58,7.958 4.107,8.094 4.01,8.396 3.93,8.646 3.967,8.888 3.891,9.114 3.673,9.758 3.065,10.107 2.155,10.112 1.721,10.114 1.11,10.07 0.997,9.732 0.879,9.375 1.115,9.076 1.377,9.034 1.529,9.009 1.695,9.081 1.875,9.094 2.305,9.125 2.842,9.097 2.953,8.815 3.056,8.552 2.965,8.269 3.053,8.037 3.248,7.52 3.631,7.286 4.19,7.079 3.809,6.74 3.41,6.438 3.053,6.08 2.701,5.729 2.398,5.319 1.976,5.043 2.141,5.778 2.932,6.283 3.033,7.078 3.144,7.957 2.059,8.334 1.437,7.856 1.153,7.639 0.979,7.185 0.658,7.078 0.57,7.048 0.425,7.075 0.318,7.038 -0.127,6.883 -0.086,6.211 0.318,6.08 0.918,5.886 1.364,6.346 1.695,6.619 1.398,6.14 0.547,5.067 1.177,4.384 1.329,4.219 1.586,4.074 1.835,4.045 2.789,3.932 3.232,4.948 3.73,5.342 4.427,4.791 5.183,4.271 6.025,3.826 6.844,3.392 7.826,3.008 8.998,3.008 c 1.197,0 2.146,0.392 2.994,0.818 0.846,0.425 1.604,0.942 2.274,1.516 0.6,-0.407 0.941,-1.391 1.915,-1.296 0.377,0.036 0.844,0.376 0.898,0.817 0.083,0.671 -0.479,1.283 -0.719,1.716 -0.004,0.016 -0.02,0.02 -0.02,0.04 0.262,-0.231 0.779,-0.732 1.377,-0.539 0.38,0.124 0.451,0.761 0.039,0.938 -0.1,0.043 -0.257,0.027 -0.358,0.06 -0.511,0.161 -0.633,0.974 -1.397,0.997 -0.684,0.021 -1.107,-0.412 -0.979,-1.077 0.153,-0.767 0.83,-1.204 1.041,-1.935 z"
- id="path2959-6"
- sodipodi:nodetypes="cscssssssssscsssssssssssssssssssssscssssssssscscssssscsscssscsssssssssc"
- style="fill:#ffffff;fill-opacity:0.25;fill-rule:evenodd"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2953"
- style="fill:#ffffff"
- transform="matrix(1.2021162,0,0,1.2021162,0.0390609,3.2600709)">
- <path
- clip-rule="evenodd"
- d="M 6.285,0.015 C 7.148,-0.095 7.654,0.432 7.842,0.773 8.203,1.436 7.951,2.17 7.621,2.529 6.762,3.466 4.999,2.956 4.988,1.511 4.982,0.84 5.316,0.451 5.686,0.214 5.836,0.119 6.031,0.046 6.285,0.015 z M 6.305,1.97 C 7.102,2.285 7.263,0.873 6.425,1.012 5.912,1.097 5.855,1.792 6.305,1.97 z"
- id="path2955"
- style="fill:#5e8019;fill-rule:evenodd"
- inkscape:connector-curvature="0" />
- <path
- clip-rule="evenodd"
- d="m 11.313,0.015 c 0.741,-0.094 1.314,0.305 1.556,0.758 0.338,0.634 0.144,1.34 -0.199,1.736 C 11.822,3.491 10.035,2.92 10.016,1.512 10.011,1.127 10.179,0.776 10.276,0.634 10.461,0.36 10.832,0.076 11.313,0.015 z m 0.02,1.955 C 11.666,2.1 12.095,1.879 12.031,1.411 11.996,1.142 11.754,0.962 11.453,1.011 10.968,1.092 10.867,1.788 11.333,1.97 z"
- id="path2957"
- style="fill:#5e8019;fill-rule:evenodd"
- inkscape:connector-curvature="0" />
- <path
- clip-rule="evenodd"
- d="m 16.063,5.063 c -0.424,0.229 -0.725,0.664 -1.078,1.018 -0.355,0.356 -0.75,0.667 -1.137,0.979 0.572,0.261 1.033,0.5 1.176,1.137 0.038,0.167 -0.008,0.402 0.061,0.599 0.109,0.31 0.627,0.329 1.059,0.299 0.182,-0.012 0.365,-0.085 0.518,-0.06 0.422,0.068 0.552,0.744 0.141,0.958 -0.219,0.113 -0.611,0.119 -0.898,0.12 C 14.911,10.116 14.192,9.699 14.069,8.836 14.052,8.716 14.082,8.577 14.049,8.437 13.975,8.119 13.482,7.964 13.091,7.938 12.369,7.89 12.012,8.271 11.515,8.457 c 0.193,0.262 0.424,0.536 0.499,0.978 0.033,0.195 -0.014,0.436 0.06,0.638 0.085,0.232 0.454,0.288 0.818,0.419 0.286,0.104 0.603,0.254 0.798,0.419 0.141,0.119 0.348,0.322 0.359,0.579 0.017,0.367 -0.291,0.595 -0.658,0.499 C 13.189,11.937 13.086,11.701 12.912,11.59 12.718,11.467 12.395,11.407 12.094,11.291 11.601,11.1 11.267,10.847 11.116,10.353 11.033,10.079 11.083,9.677 10.957,9.415 10.604,8.688 9.855,9.034 9.02,9.034 8.811,9.034 8.615,9.019 8.42,8.994 8.227,8.968 8.033,8.912 7.881,8.914 7.51,8.917 7.061,9.24 7.003,9.612 6.957,9.916 6.996,10.14 6.924,10.37 6.776,10.838 6.445,11.085 5.926,11.287 5.684,11.382 5.369,11.436 5.128,11.586 4.914,11.719 4.815,12.105 4.35,12.005 4.204,11.973 4.012,11.825 3.991,11.565 3.953,11.095 4.477,10.801 4.789,10.648 5.094,10.499 5.87,10.341 5.966,10.069 6.048,9.842 5.987,9.594 6.027,9.391 6.107,8.986 6.295,8.741 6.546,8.453 6.032,8.283 5.686,7.897 4.968,7.936 4.58,7.958 4.107,8.094 4.01,8.396 3.93,8.646 3.967,8.888 3.891,9.114 3.673,9.758 3.065,10.107 2.155,10.112 1.721,10.114 1.11,10.07 0.997,9.732 0.879,9.375 1.115,9.076 1.377,9.034 1.529,9.009 1.695,9.081 1.875,9.094 2.305,9.125 2.842,9.097 2.953,8.815 3.056,8.552 2.965,8.269 3.053,8.037 3.248,7.52 3.631,7.286 4.19,7.079 3.809,6.74 3.41,6.438 3.053,6.08 2.701,5.729 2.398,5.319 1.976,5.043 2.141,5.778 2.932,6.283 3.033,7.078 3.144,7.957 2.059,8.334 1.437,7.856 1.153,7.639 0.979,7.185 0.658,7.078 0.57,7.048 0.425,7.075 0.318,7.038 -0.127,6.883 -0.086,6.211 0.318,6.08 0.918,5.886 1.364,6.346 1.695,6.619 1.398,6.14 0.547,5.067 1.177,4.384 1.329,4.219 1.586,4.074 1.835,4.045 2.789,3.932 3.232,4.948 3.73,5.342 4.427,4.791 5.183,4.271 6.025,3.826 6.844,3.392 7.826,3.008 8.998,3.008 c 1.197,0 2.146,0.392 2.994,0.818 0.846,0.425 1.604,0.942 2.274,1.516 0.6,-0.407 0.941,-1.391 1.915,-1.296 0.377,0.036 0.844,0.376 0.898,0.817 0.083,0.671 -0.479,1.283 -0.719,1.716 -0.004,0.016 -0.02,0.02 -0.02,0.04 0.262,-0.231 0.779,-0.732 1.377,-0.539 0.38,0.124 0.451,0.761 0.039,0.938 -0.1,0.043 -0.257,0.027 -0.358,0.06 -0.511,0.161 -0.633,0.974 -1.397,0.997 -0.684,0.021 -1.107,-0.412 -0.979,-1.077 0.153,-0.767 0.83,-1.204 1.041,-1.935 z"
- id="path2959"
- sodipodi:nodetypes="cscssssssssscsssssssssssssssssssssscssssssssscscssssscsscssscsssssssssc"
- style="fill:#5e8019;fill-rule:evenodd"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/peak.svg b/navit/icons/peak.svg
deleted file mode 100644
index 72855f9db..000000000
--- a/navit/icons/peak.svg
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="peak.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/peak.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3156">
- <stop
- style="stop-color:#22a638;stop-opacity:1;"
- offset="0"
- id="stop3159" />
- <stop
- style="stop-color:#11571d;stop-opacity:1;"
- offset="1"
- id="stop3161" />
- </linearGradient>
- <linearGradient
- id="linearGradient3154">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3156" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3158" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3154"
- id="linearGradient3160"
- x1="12"
- y1="7.5346489"
- x2="12.048141"
- y2="16.097149"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(4.493119,0,0,4.493119,-3.6288038,-75.719256)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3156"
- id="linearGradient3163"
- x1="6.6808548"
- y1="7.8981066"
- x2="12.644531"
- y2="8.9276867"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(6.342249,0,0,6.6675913,-7.4405484,-76.273232)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="4"
- inkscape:cx="41.847465"
- inkscape:cy="47.300055"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g4548"
- transform="matrix(0.21332896,0,0,0.21332896,1.6963542,-61.367873)">
- <path
- inkscape:connector-curvature="0"
- id="path2383-6"
- d="M 41.02148,-71.43164 C 31.65247,-56.289288 18.18501,-43.153283 13.90319,-25.352645 9.1685401,-11.642644 4.4337901,2.06732 -0.30077993,15.777344 29.77333,21.785437 62.58138,28.305986 91.88672,15.595703 96.56443,9.365259 89.94237,2.205907 89.66474,-4.390721 84.79995,-22.823637 79.93498,-41.256506 75.07031,-59.689453 c -4.90237,4.48239 -9.80468,8.964847 -14.70703,13.447265 -5.87654,-9.221199 -11.75091,-18.443787 -17.6289,-27.664062 -0.57097,0.82487 -1.14193,1.64974 -1.7129,2.47461 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.49311876;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc"
- id="path2383"
- d="m 3.9854083,12.971997 17.2680737,-50.00341 20.34417,-29.398771 16.949432,26.603492 13.342658,-12.198837 16.99093,64.3759 C 60.737627,23.994199 32.87256,18.442649 3.9854083,12.97199 Z"
- style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3163);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.49311876;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccsssc"
- id="path3152"
- d="m 21.851634,-31.482451 1.946737,-5.151125 17.504015,-25.606323 17.239118,25.620081 12.123801,-11.045988 8.492915,33.721742 c -4.912241,2.032759 -8.566212,-11.84924 -13.284085,-12.813868 -4.717879,-0.964627 -8.814736,5.652546 -13.489467,3.19082 -4.674735,-2.461721 -13.578,9.867352 -18.360815,7.408821 -4.782816,-2.458536 -7.130098,-14.369102 -12.172219,-15.32416 z"
- style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3160);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/pharmacy.svg b/navit/icons/pharmacy.svg
deleted file mode 100644
index 14d4e5854..000000000
--- a/navit/icons/pharmacy.svg
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- sodipodi:docname="pharmacy.svg">
- <metadata
- id="metadata9">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- inkscape:window-height="871"
- inkscape:window-width="1432"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ff23ff"
- id="base"
- inkscape:zoom="2.8157956"
- inkscape:cx="132.57816"
- inkscape:cy="68.514694"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:current-layer="svg2"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4" />
- <g
- id="g3387"
- transform="matrix(0.20583838,0,0,0.20583838,6.0902428,0.30331343)">
- <g
- transform="translate(-53.981191,44.747566)"
- id="g3383">
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.25483263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 77.880859,-46.085938 c -7.229936,0.02323 -11.786691,8.234864 -9.246926,14.657051 0.363352,13.633556 -0.42643,27.390256 1.947139,40.8728573 0.905212,15.7932507 0.01974,31.9620127 1.737287,47.6556387 2.72289,6.199203 12.977707,3.338138 12.556641,-3.318359 0.835719,-9.358556 -0.857381,-18.758694 0.398579,-28.120113 0.941812,-18.7192776 -0.701899,-37.553976 0.748407,-56.206421 0.966672,-5.129576 2.369303,-13.779325 -4.51808,-15.230107 -1.18235,-0.303958 -2.40882,-0.33823 -3.623047,-0.310547 z"
- id="path1360-7"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.25483263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 94.34375,-35.625 c -14.228332,2.50379 -31.746926,0.790326 -42.138672,12.917969 -7.670289,8.243981 -1.423616,23.10015844 9.689453,23.9550779 8.498945,1.9763923 17.502731,-3.26177 25.595703,-0.1796875 0.425361,4.3707297 -5.365654,1.9759588 -7.912109,2.4707031 -10.756855,0.038835 -23.893583,6.2118103 -24.847656,18.1699215 -0.0054,9.8036 11.248816,14.912765 19.824219,13.044922 3.39961,-0.334762 7.793431,-2.163732 10.623046,-0.607422 -4.399906,3.800118 -11.465797,2.674861 -15.427734,7.451172 -4.218645,2.600826 -9.951707,7.40369 -6.919922,12.951172 5.57538,4.350422 10.85041,-1.932554 15.738281,-3.984375 C 87.894618,48.65452 99.561353,42.40397 98.851562,31.419922 96.727382,21.96283 85.132403,20.408866 77.041016,21.503906 c -2.375177,0.04894 -6.029006,1.101381 -7.642578,-0.857422 7.697112,-5.335869 18.388067,-0.459741 26.162109,-6.148437 8.422993,-4.27757 9.907233,-17.6955189 1.457031,-22.7929689 -8.947102,-6.9603501 -20.960901,-4.5753941 -31.173828,-3.2968751 -4.331071,-2.496265 2.737418,-5.3726 4.861328,-5.900391 6.295653,-1.395177 13.050406,-0.968154 19.335938,-0.710937 5.41156,2.871427 11.663634,0.332596 15.771484,-3.486328 3.57272,-3.525259 0.61219,-8.67653 -3.19336,-10.556641 -2.35754,-1.832856 -5.184196,-3.544027 -8.27539,-3.378906 z"
- id="path1364-5"
- inkscape:connector-curvature="0" />
- </g>
- <g
- transform="matrix(0.12741631,0,0,0.12741631,-0.62387565,2.0848855)"
- id="layer1">
- <g
- id="g4895"
- transform="matrix(2,0,0,2,-483.316,-485.5179)">
- <path
- inkscape:connector-curvature="0"
- id="path1360"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 331.42857,623.07647 c 5.84728,12.68982 12.96741,10.10541 20.71429,0 0,0 1.60714,-19.82143 1.42857,-33.57143 -0.17857,-13.75 -2.32143,-1.25 -2.14286,-21.42857 0.17857,-20.17857 2.85714,-59.28572 2.85714,-59.28572 l 0,-66.42857 c 0,0 0.89286,-35.71428 0.71429,-65.71428 -0.17857,-30 -1.78571,-32.67857 -1.42857,-54.28572 0.35714,-21.60714 1.25,-14.46429 2.85714,-32.14286 C 358.03571,272.54075 360,251.6479 360,251.6479 c -3.62641,-11.91857 -38.2823,-11.4817 -42.14286,11.42857 0,0 2.14286,13.57143 2.85715,43.57143 0.71429,30 -1.78571,41.25 0,76.42857 1.78571,35.17857 5.17857,31.42857 7.14285,64.28571 1.96429,32.85714 0.71429,67.14286 0.71429,67.14286 l 2.85714,66.42857 0,42.14286 z" />
- <path
- inkscape:connector-curvature="0"
- id="path1364"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 379.28571,288.79075 c -24.64286,1.96429 -60.71428,7.14286 -60.71428,7.14286 -116.47508,21.61333 -87.82638,123.939 2.14286,100.71429 l 35,-2.14286 c 47.75794,-11.63754 55.83811,52.44721 0,44.28571 L 325,440.93361 c -84.08686,20.79606 -75.33628,99.20758 2.14286,88.57143 l 27.14285,-4.28572 c 59.56652,-1.30424 26.5713,40.447 -2.14285,43.57143 0,0 -8.21428,-0.53571 -21.42857,7.14286 -13.21429,7.67857 -31.42858,23.57143 -31.42858,23.57143 -13.72384,18.19281 -2.40579,14.91799 10,10.71429 0,0 9.64286,-8.92858 20.71429,-14.28572 11.07143,-5.35714 23.57143,-7.14286 23.57143,-7.14286 67.64618,-23.43602 75.57082,-78.75298 2.14286,-80.71428 l -29.28572,1.42857 c -22.81243,8.45052 -69.46577,-27.10559 0,-45 l 30.71429,-0.71429 C 443.82508,460.82712 445.62298,377.62637 355,373.07647 l -36.42857,2.85714 c -40.4999,18.54392 -83.06085,-31.86959 0.71428,-54.28571 0,0 20.89286,0.35714 37.14286,0 16.25,-0.35715 13.21428,-2.50001 27.85714,-1.42858 14.64286,1.07143 20.69724,10.89905 30.71429,5.71429 23.62552,-12.2284 43.00437,-12.96553 2.14286,-37.85714 -10.90464,-6.64278 -13.21429,-1.25001 -37.85715,0.71428 z" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/picnic.svg b/navit/icons/picnic.svg
deleted file mode 100644
index b9af047f3..000000000
--- a/navit/icons/picnic.svg
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="picnic.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="27.84447"
- inkscape:cy="54.066506"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="874"
- inkscape:window-width="1440"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="5.2137932"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false"
- inkscape:window-maximized="1" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path4460"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path4462"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path4464"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path4466"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-536.27327,44.693248)">
- <rect
- height="10"
- id="rect4134"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="8"
- x="2"
- y="2" />
- </g>
- <g
- id="g3366"
- transform="matrix(0.20536404,0,0,0.20535957,1.0039722,-1.9465945)">
- <path
- inkscape:connector-curvature="0"
- id="flowRoot3192-3"
- d="m 75.629978,23.490569 c -20.741,0.912667 -41.584931,0.113552 -62.365238,0.382813 0.392658,5.454312 -2.628917,14.670294 4.496094,17.064453 3.082761,1.134707 6.792794,-1.40298 9.371093,-0.541016 -1.770374,4.663194 -3.426705,9.427895 -5.359375,13.984376 -3.59674,3.924483 -9.365775,1.213934 -13.9628903,1.787109 -4.098936,-0.831093 -11.660783,-1.195222 -11.648438,4.734375 -1.661327,5.141116 0.41725,12.806681 6.976563,12.416016 3.553198,0.281696 7.9757773,-2.294732 11.0019533,-0.07031 -3.742035,9.121989 -7.8060183,18.388744 -11.3535163,27.708985 6.503679,-3.349395 15.5550043,2.9631 20.6621103,-3.515626 3.535525,-8.125745 6.687942,-16.439584 10.082031,-24.634765 10.15625,0 20.312503,0 30.468753,0 3.74529,9.244854 7.49176,18.489229 11.23633,27.734371 5.36648,-2.390354 12.86841,2.70433 17.16406,-2.242184 1.38247,-5.476343 -3.97201,-10.437228 -4.93633,-15.669726 -3.40853,-6.473778 -5.72847,-12.214063 4.02031,-9.822461 3.72357,-0.878389 12.047612,2.604554 9.908202,-3.681641 0.21152,-4.479386 1.7461,-12.837381 -4.716792,-13.5 -6.60206,0.737222 -13.30589,0.383662 -19.97656,0.455078 -1.88421,-5.1396 -4.91038,-11.075563 -6.11915,-15.74414 4.43546,0.319995 12.97615,2.506541 13.87891,-4.029297 0.52274,-4.296391 1.38148,-10.50877 -3.95117,-12.212891 -1.55443,-0.566711 -3.23705,-0.670774 -4.87695,-0.603516 z m -25.66016,17.113282 c 0.68167,4.653881 8.14896,13.872697 4.29687,15.476562 -3.81653,-1.471089 -16.75095,3.19176 -13.879162,-2.778803 3.058252,-4.1991 2.459917,-14.818456 9.582292,-12.697759 z"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:NPSPICT3;-inkscape-font-specification:NPSPICT3;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:NPSPICT3;-inkscape-font-specification:NPSPICT3;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#b26609;fill-opacity:1;stroke:none"
- id="flowRoot3192"
- d="m 33.443282,59.937898 9.554748,-23.476467 9.792363,0 9.554747,23.476467 -28.901858,0 z m 31.144749,-23.476467 15.923384,0 0,-8.730319 -63.113925,0 0,8.730319 15.808181,0 -9.554751,23.476467 -23.3576593,0 0,8.726718 19.8187303,0 -10.969603,27.371809 10.735593,0 11.088408,-27.371809 35.860918,0 11.088412,27.371809 10.854393,0 -11.088403,-27.371809 19.937535,0 0,-8.726718 -23.476462,0 -9.554751,-23.476467 z" />
- </g>
-</svg>
diff --git a/navit/icons/playground.svg b/navit/icons/playground.svg
deleted file mode 100644
index 4373af6d8..000000000
--- a/navit/icons/playground.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- width="22"
- height="22"
- viewBox="0 0 22 22"
- id="svg2"
- sodipodi:docname="playground.svg"
- inkscape:version="0.91 r13725">
- <metadata
- id="metadata4511">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:source>openstreetmap-carto, https://github.com/gravitystorm/openstreetmap-carto/blob/master/symbols/playground.svg</dc:source>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs4509" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- id="namedview4507"
- showgrid="false"
- inkscape:pagecheckerboard="true"
- inkscape:zoom="19.428571"
- inkscape:cx="16.275656"
- inkscape:cy="9.3437438"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
- <path
- inkscape:connector-curvature="0"
- d="M 6.0243165,1.6925617 C 4.980887,1.757904 4.0752658,2.7239092 4.0773095,3.7693945 c 3.973e-4,1.087174 0.9896456,2.0760726 2.0768076,2.0760726 1.0871613,0 2.0764098,-0.9888986 2.076807,-2.0760726 C 8.2331387,2.6373183 7.1541661,1.6218048 6.0243165,1.6925617 Z M 17.100622,5.846226 c -1.043432,0.065338 -1.949051,1.0313486 -1.947006,2.076833 3.97e-4,1.0871735 0.989646,2.0760719 2.076807,2.0760719 1.08716,0 2.07641,-0.9888984 2.076807,-2.0760719 0.0022,-1.1320766 -1.076758,-2.1475899 -2.206608,-2.076833 z M 5.4618477,6.538504 c -2.0366417,0 -2.5833198,2.5938334 -2.7258093,3.980593 l -1.4278053,-0.5192069 0,1.3845559 8.2639629,2.942177 -1.3412719,5.365151 5.5381519,0 -1.298003,-4.326733 8.220694,2.94218 0,-1.384558 -1.298002,-0.47594 c 0.227147,-1.192556 0.951867,-5.754555 -1.471072,-5.754555 -2.268516,0 -2.651682,3.107633 -2.725811,4.283465 L 6.9761866,12.033456 C 7.2409959,10.46722 7.6964926,6.538504 5.4618477,6.538504 Z"
- id="playground-1"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.61645246;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- width="19.383537"
- height="19.383768"
- x="1.3082331"
- y="0.308007"
- id="canvas"
- style="visibility:hidden;fill:none;stroke:none;stroke-width:1.15447605" />
- <path
- d="M 6.0243165,1.6925617 C 4.980887,1.757904 4.0752658,2.7239092 4.0773095,3.7693945 c 3.973e-4,1.087174 0.9896456,2.0760726 2.0768076,2.0760726 1.0871613,0 2.0764098,-0.9888986 2.076807,-2.0760726 C 8.2331387,2.6373183 7.1541661,1.6218048 6.0243165,1.6925617 Z M 17.100622,5.846226 c -1.043432,0.065338 -1.949051,1.0313486 -1.947006,2.076833 3.97e-4,1.0871735 0.989646,2.0760719 2.076807,2.0760719 1.08716,0 2.07641,-0.9888984 2.076807,-2.0760719 0.0022,-1.1320766 -1.076758,-2.1475899 -2.206608,-2.076833 z M 5.4618477,6.538504 c -2.0366417,0 -2.5833198,2.5938334 -2.7258093,3.980593 l -1.4278053,-0.5192069 0,1.3845559 8.2639629,2.942177 -1.3412719,5.365151 5.5381519,0 -1.298003,-4.326733 8.220694,2.94218 0,-1.384558 -1.298002,-0.47594 c 0.227147,-1.192556 0.951867,-5.754555 -1.471072,-5.754555 -2.268516,0 -2.651682,3.107633 -2.725811,4.283465 L 6.9761866,12.033456 C 7.2409959,10.46722 7.6964926,6.538504 5.4618477,6.538504 Z"
- id="playground"
- inkscape:connector-curvature="0"
- style="stroke-width:1.15447605" />
-</svg>
diff --git a/navit/icons/police.svg b/navit/icons/police.svg
deleted file mode 100644
index c73412391..000000000
--- a/navit/icons/police.svg
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="police.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/police.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="1.4"
- inkscape:cx="108.43166"
- inkscape:cy="14.769275"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="918"
- inkscape:window-height="483"
- inkscape:window-x="200"
- inkscape:window-y="221"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g3361"
- transform="matrix(0.21216975,0,0,0.2121694,1.4016894,-62.319121)">
- <path
- inkscape:connector-curvature="0"
- id="rect2383-3"
- d="m 74.144589,-67.020119 c -3.380662,5.577799 -9.122992,14.445774 -16.957032,11.230468 -5.14318,-2.561363 -8.50676,-7.42216 -12.12695,-11.685546 -3.3388,6.166479 -10.012362,15.350854 -17.974611,10.597656 -4.909176,-2.726934 -8.356217,-7.296319 -11.888672,-11.523438 -6.8747432,4.035329 -13.7480862,8.073045 -20.6210942,12.111328 11.745254,4.120397 12.776901,17.769153 12.179688,28.308594 -0.244761,16.910473 7.0703452,34.3318344 21.6388142,43.633094 5.311373,3.457785 11.117131,7.716969 17.107275,8.90011 17.5686,-6.57098 33.655692,-21.3799835 35.618962,-40.875154 2.00158,-11.440876 -1.54086,-24.753814 6.63495,-34.368987 2.51547,-2.229444 5.58671,-3.691051 8.38281,-5.519532 -6.9815,-4.138921 -13.96484,-8.27474 -20.94726,-12.412109 l -0.54667,0.837347 -0.50021,0.766169 z"
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc"
- id="rect2383"
- d="m 1.9642857,-56.521127 12.0650713,-7.085828 c 13.116408,16.199912 22.908177,14.330738 31.130843,2.447057 12.870788,15.636394 22.46549,10.960863 31.024434,-2.447044 L 88.143301,-56.5211 C 64.352249,-42.181339 97.534834,-2.67566 44.521811,20.125006 -9.2649229,-4.968524 23.014674,-41.348284 1.9642857,-56.521127 Z"
- style="display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- d="M 62.657142,2.8813915 44.120106,-7.134913 25.359985,2.4570567 29.157797,-18.267921 14.238095,-33.145775 l 20.884214,-2.792436 9.539238,-18.786989 9.109342,18.999157 20.815275,3.266856 -15.254331,14.534561 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="1.582173"
- sodipodi:arg1="0.95385444"
- sodipodi:r2="15.864456"
- sodipodi:r1="31.72891"
- sodipodi:cy="-22.998343"
- sodipodi:cx="44.300587"
- sodipodi:sides="5"
- id="path3162"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f4f400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0.40000001;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- sodipodi:type="star" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/post.svg b/navit/icons/post.svg
deleted file mode 100644
index 7cb29ea06..000000000
--- a/navit/icons/post.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="post.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/navit/icons/png/post.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="4"
- inkscape:cx="62.020326"
- inkscape:cy="46.268947"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="943"
- inkscape:window-height="682"
- inkscape:window-x="114"
- inkscape:window-y="134"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g3364"
- transform="matrix(0.2125571,0,0,0.21256165,0.58470202,-63.610093)">
- <path
- inkscape:connector-curvature="0"
- id="rect2381-3"
- d="m -0.36328105,-49.07422 c 0,22.79167 0,45.583335 0,68.375001 32.90885105,0 65.81771105,0 98.72656105,0 0,-23.458333 0,-46.916671 0,-70.375001 -32.90885,0 -65.81771,0 -98.72656105,0 l 0,1 0,1 z"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.7750001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <rect
- y="-46.823437"
- x="3.3875"
- height="62.373436"
- width="90.724998"
- id="rect2381"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.7750001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc"
- id="path3158"
- d="M 8.1625,10.775 49.048438,-21.754688 89.039063,10.775"
- style="fill:none;fill-rule:evenodd;stroke:#787878;stroke-width:4.7750001px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc"
- id="rect3153"
- d="m 3.3875,-46.823438 90.725,0 L 48.75,-7.4296875 3.3875,-46.823438 Z"
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.7750001;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/public_office.svg b/navit/icons/public_office.svg
deleted file mode 100644
index cc58bdb0f..000000000
--- a/navit/icons/public_office.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="public_office.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/navit/icons/png/post.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568542"
- inkscape:cx="39.367456"
- inkscape:cy="32.327118"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="943"
- inkscape:window-height="682"
- inkscape:window-x="114"
- inkscape:window-y="134"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0.21014558"
- d="M 7.34798,0.10997493 C 5.897925,0.25780607 6.111269,2.0399561 6.145798,3.0659688 6.105259,3.4532062 6.443387,4.3820832 5.701702,4.0945326 4.39782,4.3091313 4.398726,5.9220174 4.309077,6.8305294 2.79033,7.3821048 2.448873,9.1906832 2.66364,10.608624 2.64235,14.37069 2.66074,18.132829 2.65454,21.894929 l 17.442083,0 0,-12.3690385 c 0.0034,-0.28596 -0.656571,-1.3859661 -1.754633,-1.698811 -0.221945,-0.021225 -1.981955,-0.3471553 -2.671558,0.5073024 -0.381692,0.3615956 -0.283692,1.1038632 -0.969048,0.88573 -1.299236,0.112119 -1.289504,1.7280501 -1.029798,2.6354401 -0.462762,0.259609 -1.729742,0.339101 -1.476355,-0.517975 0.123476,-1.5257265 0.226716,-3.8543796 -1.5843,-4.4216761 C 10.098121,6.4593872 10.774641,5.529537 10.287956,4.9654873 9.984372,4.3720048 9.292135,4.0566099 8.684777,3.9956172 8.619981,2.8128233 9.195513,1.0373558 7.972251,0.21669115 7.777578,0.13081103 7.560036,0.0903517 7.347972,0.10997493 Z M 7.036866,6.4566173 C 7.290892,6.680227 8.351606,6.3802543 7.643907,6.7915369 7.436315,6.7994169 6.511557,6.6969339 7.036866,6.4566173 Z M 5.23339,11.447163 c 0.497986,0.0896 -0.136096,0.643037 -0.02504,0.225743 0.156746,0.343113 -0.0677,-0.388397 0.02504,-0.225743 z m 4.42455,0.4285 c -0.589332,-0.223793 0.302635,-0.769318 0,0 z M 7.446074,11.47138 c 0.482833,0.199609 -0.167963,0.509856 -0.215891,0.163765 0.07819,-0.03853 0.152521,-0.143557 0.215891,-0.163765 z M 5.23339,14.073983 c 0.540682,0.161747 -0.284823,0.719747 -0.03612,0.08086 l 0,-0.123955 z M 9.663276,14.50864 C 9.376309,14.322892 9.381885,14.239145 9.66244,14.046483 c 2.1e-4,0.154052 6.38e-4,0.308105 8.36e-4,0.462157 z M 7.446074,14.0982 c 0.482805,0.199536 -0.167995,0.509893 -0.215891,0.163765 0.07819,-0.03853 0.152521,-0.143557 0.215891,-0.163765 z m 2.222125,3.043417 C 9.37599,16.949968 9.382765,16.865586 9.667363,16.667146 c 2.11e-4,0.158158 6.38e-4,0.316313 8.36e-4,0.474471 z M 5.23339,16.700803 c 0.560442,0.195502 -0.362547,0.752037 -0.0238,-0.02832 z m 2.212684,0.02422 c 0.482805,0.199535 -0.167995,0.509893 -0.215891,0.163764 0.07819,-0.03853 0.152521,-0.143556 0.215891,-0.163764 z m 2.226642,2.62682 c -0.145306,0.06956 0.07209,-0.171101 0,0 z M 5.23339,19.327623 c 0.05495,0.104692 -0.112558,-0.09669 0,0 z m 2.211864,0.02299 c -0.03746,0.02593 -0.0115,-0.02985 0,0 z"
- id="path3347-3"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
- <path
- style="fill:#000000"
- d="m 3.499966,15.145553 c 0,-6.5627895 -0.01072,-6.2578451 0.234825,-6.6769237 C 3.992415,8.0289417 4.519279,7.6749883 5.006575,7.6142325 L 5.24434,7.5845885 5.26487,6.5549612 5.2854,5.5253345 5.397603,5.364801 C 5.459313,5.276508 5.577933,5.1580933 5.661195,5.1016577 5.802301,5.0060157 5.852522,4.9981449 6.400655,4.9857586 l 0.588071,-0.01329 0,-1.7631847 c 0,-1.8922177 0.007,-1.961823 0.210018,-2.1040587 0.122577,-0.085857 0.360357,-0.085857 0.482935,0 0.20307,0.1422357 0.210018,0.211841 0.210018,2.1040587 l 0,1.7631847 0.588071,0.01329 c 0.548135,0.012386 0.598354,0.020258 0.73946,0.1158991 0.08326,0.056436 0.201879,0.1748502 0.263592,0.2631433 l 0.112205,0.1605335 0.02053,1.0296267 0.02053,1.0296273 0.237763,0.029644 c 0.684648,0.085362 1.303063,0.6560446 1.46308,1.3501533 0.02465,0.1069199 0.04193,0.9350322 0.04253,2.0378532 l 0.0011,1.857744 1.528891,-0.01076 1.528893,-0.01076 0.01084,-1.303148 0.01084,-1.303149 0.861349,0 0.861349,0 0,-0.6567047 0,-0.656705 1.312367,0 1.312368,0 0.01131,0.6464437 0.01131,0.646443 0.215481,0.0124 0.215481,0.0124 0,5.456716 0,5.456713 -7.880459,0 -7.88046,0 0,-6.00433 z m 7.008988,-0.453078 -0.01097,-5.5954852 -0.123765,-0.2001741 c -0.0901,-0.1457277 -0.183478,-0.2313683 -0.3433,-0.3148592 l -0.219535,-0.1146868 -2.371182,0 -2.371181,0 -0.219533,0.1146868 C 4.689664,8.6654495 4.59629,8.751088 4.506188,8.8968177 L 4.38242,9.0969939 4.37158,14.692477 l -0.01084,5.595481 3.079595,0 3.079593,0 -0.01097,-5.595483 z M 5.896147,18.896171 C 5.740076,18.801001 5.675303,18.629195 5.675303,18.3104 c 0,-0.497072 0.159187,-0.649261 0.679117,-0.649261 0.528518,0 0.634293,0.113941 0.634293,0.683263 0,0.344504 -0.0026,0.353648 -0.139552,0.490597 -0.136454,0.136454 -0.14715,0.139545 -0.482267,0.139396 -0.264407,-1.24e-4 -0.371972,-0.01799 -0.470747,-0.07822 z m 2.193613,0.0081 c -0.157147,-0.09749 -0.198079,-0.218673 -0.198079,-0.586432 0,-0.540465 0.112274,-0.656705 0.634293,-0.656705 0.52222,0 0.679117,0.151719 0.679117,0.656705 0,0.311843 -0.08034,0.509336 -0.240993,0.592413 -0.173803,0.08988 -0.725912,0.0861 -0.874338,-0.006 z M 5.896147,16.269346 c -0.156071,-0.09517 -0.220844,-0.266975 -0.220844,-0.58577 0,-0.497072 0.159187,-0.649262 0.679117,-0.649262 0.528518,0 0.634293,0.113941 0.634293,0.683263 0,0.344505 -0.0026,0.353648 -0.139552,0.490598 -0.136454,0.136454 -0.14715,0.139545 -0.482267,0.139396 -0.264407,-1.24e-4 -0.371972,-0.01799 -0.470747,-0.07822 z m 2.193613,0.0081 c -0.157147,-0.09749 -0.198079,-0.218673 -0.198079,-0.586432 0,-0.540465 0.112274,-0.656705 0.634293,-0.656705 0.52222,0 0.679117,0.151718 0.679117,0.656705 0,0.311843 -0.08034,0.509336 -0.240993,0.592413 -0.173803,0.08988 -0.725912,0.0861 -0.874338,-0.006 z M 5.896147,13.642521 c -0.156071,-0.09517 -0.220844,-0.266975 -0.220844,-0.58577 0,-0.497073 0.159187,-0.649262 0.679117,-0.649262 0.528518,0 0.634293,0.113941 0.634293,0.683263 0,0.344504 -0.0026,0.353648 -0.139552,0.490597 -0.136454,0.136454 -0.14715,0.139546 -0.482267,0.139396 -0.264407,-1.24e-4 -0.371972,-0.01799 -0.470747,-0.07822 z m 2.193613,0.0081 c -0.157147,-0.09749 -0.198079,-0.218673 -0.198079,-0.586432 0,-0.540465 0.112274,-0.656705 0.634293,-0.656705 0.52222,0 0.679117,0.151719 0.679117,0.656705 0,0.311843 -0.08034,0.509336 -0.240993,0.592413 -0.173803,0.08988 -0.725912,0.0861 -0.874338,-0.006 z M 5.896147,11.01573 C 5.740076,10.92056 5.675303,10.748755 5.675303,10.42996 c 0,-0.4970723 0.159187,-0.6492619 0.679117,-0.6492619 0.528518,0 0.634293,0.1139411 0.634293,0.6832629 0,0.344505 -0.0026,0.353648 -0.139552,0.490598 -0.136454,0.136454 -0.14715,0.139545 -0.482267,0.139396 -0.264407,-1.24e-4 -0.371972,-0.01799 -0.470747,-0.07822 z m 2.193613,0.0081 C 7.932613,10.92634 7.891681,10.805157 7.891681,10.437398 c 0,-0.5404649 0.112274,-0.6567047 0.634293,-0.6567047 0.52222,0 0.679117,0.1517188 0.679117,0.6567047 0,0.311844 -0.08034,0.509336 -0.240993,0.592413 -0.173803,0.08988 -0.725912,0.0861 -0.874338,-0.006 z m 6.36897,5.980618 0,-3.283525 -1.539152,0 -1.539153,0 0,3.283525 0,3.283524 1.539153,0 1.539152,0 0,-3.283524 z m -1.995534,1.891737 c -0.156071,-0.09517 -0.220844,-0.266975 -0.220844,-0.58577 0,-0.497073 0.159188,-0.649262 0.679117,-0.649262 0.528518,0 0.634293,0.113941 0.634293,0.683263 0,0.344504 -0.0026,0.353648 -0.139551,0.490598 -0.136454,0.136453 -0.147151,0.139545 -0.482268,0.139395 -0.264407,-1.24e-4 -0.371972,-0.01799 -0.470747,-0.07822 z m 0,-2.62682 c -0.156071,-0.09517 -0.220844,-0.266975 -0.220844,-0.58577 0,-0.497072 0.159188,-0.649262 0.679117,-0.649262 0.528518,0 0.634293,0.113941 0.634293,0.683263 0,0.344505 -0.0026,0.353648 -0.139551,0.490598 -0.136454,0.136454 -0.147151,0.139545 -0.482268,0.139396 -0.264407,-1.24e-4 -0.371972,-0.01799 -0.470747,-0.07822 z m 5.935764,-0.578327 0,-4.596934 -1.539153,0 -1.539152,0 0,4.596934 0,4.596935 1.539152,0 1.539153,0 0,-4.596935 z m -1.995534,3.205147 c -0.156071,-0.09517 -0.220844,-0.266975 -0.220844,-0.58577 0,-0.497073 0.159187,-0.649262 0.679117,-0.649262 0.528518,0 0.634293,0.113941 0.634293,0.683263 0,0.344504 -0.0026,0.353648 -0.139552,0.490598 -0.136454,0.136453 -0.14715,0.139545 -0.482267,0.139395 -0.264407,-1.24e-4 -0.371973,-0.01799 -0.470747,-0.07822 z m 0,-2.62682 c -0.156071,-0.09517 -0.220844,-0.266975 -0.220844,-0.58577 0,-0.497072 0.159187,-0.649262 0.679117,-0.649262 0.528518,0 0.634293,0.113941 0.634293,0.683263 0,0.344505 -0.0026,0.353648 -0.139552,0.490598 -0.136454,0.136454 -0.14715,0.139545 -0.482267,0.139396 -0.264407,-1.24e-4 -0.371973,-0.01799 -0.470747,-0.07822 z m 0,-2.62682 c -0.156071,-0.09517 -0.220844,-0.266975 -0.220844,-0.58577 0,-0.497072 0.159187,-0.649262 0.679117,-0.649262 0.528518,0 0.634293,0.113941 0.634293,0.683264 0,0.344504 -0.0026,0.353647 -0.139552,0.490597 -0.136454,0.136454 -0.14715,0.139545 -0.482267,0.139396 -0.264407,-1.24e-4 -0.371973,-0.01799 -0.470747,-0.07822 z m -7.64982,-6.7801086 0,-0.7428972 -0.13955,-0.1395499 -0.139549,-0.1395499 -1.034311,0 -1.03431,0 -0.139549,0.1395499 -0.139551,0.1395499 0,0.7428972 0,0.7428975 1.31341,0 1.31341,0 0,-0.7428975 z"
- id="path3347"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/rail_station.svg b/navit/icons/rail_station.svg
deleted file mode 100644
index 1c19c28d4..000000000
--- a/navit/icons/rail_station.svg
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- width="22"
- height="22"
- id="svg2"
- sodipodi:docname="rail_station.svg"
- inkscape:version="0.92.1 r15371">
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1366"
- inkscape:window-height="722"
- id="namedview4500"
- showgrid="false"
- inkscape:pagecheckerboard="true"
- inkscape:zoom="1.5454545"
- inkscape:cx="11"
- inkscape:cy="11"
- inkscape:window-x="-4"
- inkscape:window-y="-4"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
- <defs
- id="defs22">
- <marker
- markerUnits="strokeWidth"
- refX="10"
- refY="5"
- markerWidth="4"
- markerHeight="3"
- orient="auto"
- viewBox="0 0 10 10"
- id="ArrowStart">
- <path
- d="M 10,0 0,5 10,10 z"
- id="path3568" />
- </marker>
- <marker
- markerUnits="strokeWidth"
- refX="0"
- refY="5"
- markerWidth="4"
- markerHeight="3"
- orient="auto"
- viewBox="0 0 10 10"
- id="ArrowEnd">
- <path
- d="M 0,0 10,5 0,10 z"
- id="path3565" />
- </marker>
- </defs>
- <metadata
- id="metadata10">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="g4510-1"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.77952766;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="matrix(0.8450293,0,0,0.8450293,1.6734134,1.7805223)">
- <g
- id="g2319-2"
- transform="matrix(0.03543117,0,0,0.03543117,32.15603,1.9567887)"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:106.67238617;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:106.67238617;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path2323-3"
- d="" />
- </g>
- <g
- id="g2325-4"
- transform="matrix(0.03543117,0,0,0.03543117,32.15603,1.9567887)"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:106.67238617;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:106.67238617;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path2329-0"
- d="" />
- </g>
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:76.4710083;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g3574-1"
- transform="matrix(0.04942432,0,0,0.04942432,-3.9923488,-5.4054936)">
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:76.4710083;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g3576-5">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:85.1838913;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3578-6"
- transform="matrix(0.8977168,0,0,0.8977168,40.710583,46.777129)"
- d="M 295.5625,77.1875 213.03125,77.25 c -38.43866,-1.1e-5 -66.71875,30.86801 -66.71875,64.5 v 238.21875 c 3e-5,32.58264 25.49108,59.30702 51.125,63.4375 l -76.875,115.3125 h 44.375 L 219.90625,478.125 h 75.28125 0.0625 0.0625 75.28125 l 54.96875,80.59375 h 44.375 l -76.875,-115.3125 c 25.63388,-4.1305 51.15625,-30.85484 51.15625,-63.4375 V 141.75 c -4e-5,-33.63196 -28.31137,-64.5 -66.75,-64.5 z M 262.875,91 h 32.3125 0.0625 0.0625 32.3125 c 5.84817,0 10.9375,4.90183 10.9375,10.75 v 18.9375 c 0,5.84817 -4.81084,10.875 -10.9375,10.875 H 295.3125 295.25 295.1875 262.875 c -6.12665,0 -10.9375,-5.02683 -10.9375,-10.875 V 101.75 c 0,-5.84817 5.08932,-10.749997 10.9375,-10.75 z m -47.625,53.40625 h 79.9375 0.125 79.9375 c 21.72176,1e-5 33.25001,15.552 33.25,33.375 v 42.875 c 0.16931,20.60784 -14.87004,33.25 -33.25,33.25 H 295.3125 295.25 295.1875 215.25 c -18.37997,0 -33.41932,-12.64216 -33.25,-33.25 v -42.875 c -1e-5,-17.823 11.52822,-33.375 33.25,-33.375 z m -3.625,205.75 c 16.15766,-3e-5 29.28125,13.09234 29.28125,29.25 0,16.1565 -13.12359,29.25 -29.28125,29.25 -16.15769,-2e-5 -29.25,-13.09346 -29.25,-29.25 -4e-5,-16.1577 13.09234,-29.25 29.25,-29.25 z m 166.5625,0 c 16.15764,-2e-5 29.25,13.09233 29.25,29.25 -2e-5,16.15652 -13.09233,29.25001 -29.25,29.25 -16.15768,-2e-5 -29.25001,-13.09347 -29.25,-29.25 -2e-5,-16.15768 13.09235,-29.25 29.25,-29.25 z" />
- </g>
- <g
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:76.4710083;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g3584-2" />
- </g>
- </g>
- <g
- id="g4510"
- transform="matrix(0.8450293,0,0,0.8450293,1.6734134,1.7805223)">
- <g
- id="g2319"
- transform="matrix(0.03543117,0,0,0.03543117,32.15603,1.9567887)">
- <path
- style="fill:#ffffff;stroke:none"
- id="path2323"
- d=""
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g2325"
- transform="matrix(0.03543117,0,0,0.03543117,32.15603,1.9567887)">
- <path
- style="fill:#ffffff;stroke:none"
- id="path2329"
- d=""
- inkscape:connector-curvature="0" />
- </g>
- <g
- style="fill:#000000"
- id="g3574"
- transform="matrix(0.04942432,0,0,0.04942432,-3.9923488,-5.4054936)">
- <g
- style="fill:#000000"
- id="g3576">
- <path
- style="fill:#000000;stroke:none"
- id="path3578"
- transform="matrix(0.8977168,0,0,0.8977168,40.710583,46.777129)"
- d="M 295.5625,77.1875 213.03125,77.25 c -38.43866,-1.1e-5 -66.71875,30.86801 -66.71875,64.5 v 238.21875 c 3e-5,32.58264 25.49108,59.30702 51.125,63.4375 l -76.875,115.3125 h 44.375 L 219.90625,478.125 h 75.28125 0.0625 0.0625 75.28125 l 54.96875,80.59375 h 44.375 l -76.875,-115.3125 c 25.63388,-4.1305 51.15625,-30.85484 51.15625,-63.4375 V 141.75 c -4e-5,-33.63196 -28.31137,-64.5 -66.75,-64.5 z M 262.875,91 h 32.3125 0.0625 0.0625 32.3125 c 5.84817,0 10.9375,4.90183 10.9375,10.75 v 18.9375 c 0,5.84817 -4.81084,10.875 -10.9375,10.875 H 295.3125 295.25 295.1875 262.875 c -6.12665,0 -10.9375,-5.02683 -10.9375,-10.875 V 101.75 c 0,-5.84817 5.08932,-10.749997 10.9375,-10.75 z m -47.625,53.40625 h 79.9375 0.125 79.9375 c 21.72176,1e-5 33.25001,15.552 33.25,33.375 v 42.875 c 0.16931,20.60784 -14.87004,33.25 -33.25,33.25 H 295.3125 295.25 295.1875 215.25 c -18.37997,0 -33.41932,-12.64216 -33.25,-33.25 v -42.875 c -1e-5,-17.823 11.52822,-33.375 33.25,-33.375 z m -3.625,205.75 c 16.15766,-3e-5 29.28125,13.09234 29.28125,29.25 0,16.1565 -13.12359,29.25 -29.28125,29.25 -16.15769,-2e-5 -29.25,-13.09346 -29.25,-29.25 -4e-5,-16.1577 13.09234,-29.25 29.25,-29.25 z m 166.5625,0 c 16.15764,-2e-5 29.25,13.09233 29.25,29.25 -2e-5,16.15652 -13.09233,29.25001 -29.25,29.25 -16.15768,-2e-5 -29.25001,-13.09347 -29.25,-29.25 -2e-5,-16.15768 13.09235,-29.25 29.25,-29.25 z"
- inkscape:connector-curvature="0" />
- </g>
- <g
- style="fill:#000000"
- id="g3584" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/repair_service.svg b/navit/icons/repair_service.svg
deleted file mode 100644
index 1bf094979..000000000
--- a/navit/icons/repair_service.svg
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg1875"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="repair_service.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- viewBox="0 0 20.625 20.625">
- <defs
- id="defs1877">
- <linearGradient
- id="linearGradient3165">
- <stop
- style="stop-color:#222222;stop-opacity:1;"
- offset="0"
- id="stop3167" />
- <stop
- id="stop3219"
- offset="1"
- style="stop-color:#ffff00;stop-opacity:1;" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 73.285255 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="146.84755 : 73.285255 : 1"
- inkscape:persp3d-origin="73.423782 : 48.856837 : 1"
- id="perspective12" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3165"
- id="linearGradient3171"
- x1="3.831939"
- y1="83.871284"
- x2="114.85167"
- y2="83.871284"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3165"
- id="linearGradient3193"
- gradientUnits="userSpaceOnUse"
- x1="3.831939"
- y1="83.871284"
- x2="114.85167"
- y2="83.871284"
- gradientTransform="matrix(0.603089,0,0,0.603089,-766.57606,-38.358163)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3165"
- id="linearGradient3197"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.6025928,-0.02445923,0.02445923,-0.6025928,-815.42786,181.77587)"
- x1="3.831939"
- y1="83.871284"
- x2="114.85167"
- y2="83.871284" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3165"
- id="linearGradient3200"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.603089,0,0,0.603089,69.70494,-8.863663)"
- x1="3.831939"
- y1="83.871284"
- x2="114.85167"
- y2="83.871284" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ff00ff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="25.94305"
- inkscape:cy="11.179566"
- inkscape:document-units="px"
- inkscape:current-layer="g3363"
- showgrid="true"
- inkscape:window-width="1223"
- inkscape:window-height="717"
- inkscape:window-x="42"
- inkscape:window-y="76"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata1880">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Symbol Shop</dc:title>
- <dc:date>07. Oct. 2006</dc:date>
- <dc:creator>
- <cc:Agent>
- <dc:title>Stefan Fussan</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>Map; Symbol; Wikivoyage; Shop</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:description>Symbol for Wikivoyage maps:Shop
-jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Hintergrund"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(836.281,-95.880502)">
- <g
- id="g3363"
- transform="matrix(0.98318957,0,0,0.98318957,-8.9103368,-1.3208333)">
- <path
- inkscape:connector-curvature="0"
- id="path16-3"
- d="m -826.84699,99.087201 c -2.71434,0.01564 -4.86215,3.110579 -3.72195,5.624609 0.23125,0.63187 -0.11751,0.37765 -0.97969,1.27188 -1.47733,1.51572 -2.85044,3.1842 -4.44382,4.55726 -2.88004,-0.8269 -6.10731,2.19677 -5.12274,5.13262 0.18796,0.82529 0.59536,1.57606 0.94488,2.33965 1.09471,-1.16029 1.91926,-3.25579 3.74988,-3.18356 0.71589,0.86098 -0.7342,1.66051 -1.23878,2.18024 -0.69164,0.56324 -1.38665,1.1223 -2.06036,1.70715 2.22307,1.14893 5.60357,1.51363 7.22434,-0.79149 0.7982,-1.11684 0.85897,-2.62048 0.41637,-3.88781 1.88159,-1.88094 3.67679,-4.07083 5.61129,-5.76254 2.7535,0.73841 5.76327,-2.07989 4.91304,-4.89113 -0.18496,-1.14368 -0.69215,-2.19845 -1.16101,-3.24629 -1.07855,1.30242 -1.71873,3.39421 -3.52344,3.7864 -0.79874,-0.92109 0.64149,-1.85634 1.16459,-2.50624 0.38719,-0.56099 1.72489,-1.424538 1.4994,-1.822386 -1.07657,-0.238094 -2.15765,-0.554799 -3.272,-0.508363 z"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.43858317;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cccccccccccccccccc" />
- <path
- inkscape:connector-curvature="0"
- id="path16"
- sodipodi:nodetypes="csccccsccscccscc"
- d="m -826.69254,107.27284 c 0,0 2.01333,1.0504 3.85885,-0.99085 1.37289,-1.51849 0.0803,-4.34356 0.0803,-4.34356 0,0 -2.41738,3.95673 -3.93923,2.6482 -1.50065,-1.40843 0.33374,-2.89421 1.7922,-4.42398 0,0 -0.89073,-0.21725 -1.59221,-0.202998 -0.70148,0.01426 -1.60144,0.208668 -2.39076,0.940848 -1.89349,1.75646 -0.49997,4.20884 -0.49997,4.20884 l -6.17235,6.48596 c 0,0 -1.81653,-1.07731 -3.82666,0.80204 -1.67325,1.56438 -0.48635,3.99067 -0.48635,3.99067 0,0 2.54861,-3.62882 4.20393,-2.10651 1.44231,1.46814 -0.85519,2.97828 -2.27168,4.17347 0,0 2.67575,0.99362 4.31246,-0.40553 1.96319,-1.67821 0.66815,-4.18156 0.66815,-4.18156 l 6.26324,-6.59504 z"
- style="fill:#b4b4b4;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.43858317;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="Symbol"
- transform="translate(0,-125.375)" />
-</svg>
diff --git a/navit/icons/resort.svg b/navit/icons/resort.svg
deleted file mode 100644
index cf34919f7..000000000
--- a/navit/icons/resort.svg
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="22" height="22" id="svg1875" sodipodi:version="0.32" inkscape:version="0.47 r22583" version="1.0" sodipodi:docname="resort.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs id="defs1877">
- <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 73.285255 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="146.84756 : 73.285255 : 1" inkscape:persp3d-origin="73.423782 : 48.856837 : 1" id="perspective10" />
- </defs>
- <sodipodi:namedview id="base" pagecolor="#ff00ff" bordercolor="#366666" borderopacity="1" inkscape:pageopacity="1" inkscape:pageshadow="2" inkscape:zoom="24.227273" inkscape:cx="11" inkscape:cy="11" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:window-width="1094" inkscape:window-height="778" inkscape:window-x="110" inkscape:window-y="4" inkscape:object-nodes="true" inkscape:object-points="true" inkscape:window-maximized="0" />
- <metadata id="metadata1880">
- <rdf:RDF>
- <cc:Work rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Symbol Resort</dc:title>
- <dc:date>02. Feb. 2006</dc:date>
- <dc:creator>
- <cc:Agent>
- <dc:title>Stefan Fussan</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>Map; Symbol; Wikivoyage; Resort</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:description>Symbol for Wikivoyage maps: Resort</dc:description>
- <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" />
- </cc:Work>
- <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.5/">
- <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:requires rdf:resource="http://web.resource.org/cc/Attribution" />
- <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g inkscape:label="Ebene 1" inkscape:groupmode="layer" id="layer1" transform="translate(836.281,-94.5055)">
- <g id="g2834" transform="matrix(0.14900171,0,0,0.14900171,-711.62752,99.891712)">
- <path sodipodi:nodetypes="cccccccccc" d="m -764.17284,-20.048921 70.87916,52.815309 0,5.114306 -20.32499,0 0.61734,64.532946 -98.02168,0 0,-64.841613 -21.44172,-0.01644 0,-5.114306 68.29189,-52.490198 z" style="font-size:12px;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.13600016;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" id="path6273" />
- <text id="text3153" y="81.305115" x="-793.22296" style="font-size:37.74900818px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" xml:space="preserve"><tspan style="font-size:82.36148834px;font-weight:bold;fill:#ffffff;fill-opacity:1;-inkscape-font-specification:Bitstream Vera Sans Bold" y="81.305115" x="-793.22296" id="tspan3155" sodipodi:role="line">R</tspan></text>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/restaurant.svg b/navit/icons/restaurant.svg
deleted file mode 100644
index d347eac46..000000000
--- a/navit/icons/restaurant.svg
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="restaurant.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/police.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2411"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2424"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="2.8"
- inkscape:cx="2.4242305"
- inkscape:cy="25.514558"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1278"
- inkscape:window-height="682"
- inkscape:window-x="154"
- inkscape:window-y="162"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>edited by jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g3694"
- transform="matrix(0.20319096,0,0,0.20319627,0.87153405,-60.71706)">
- <path
- inkscape:connector-curvature="0"
- id="path2430-9"
- d="m 11.299665,-79.016462 c -7.5844542,1.143669 -7.0573421,10.505274 -7.1406248,16.248047 -0.4917389,7.544178 5.2169892,13.141766 10.4705248,17.599612 6.205138,6.414712 12.410275,12.829425 18.615412,19.244138 C 21.681151,-15.683862 8.5828309,-6.7404178 -1.9581474,4.5675224 -6.6394353,13.18729 2.9514791,24.779611 12.233259,20.922991 20.765751,17.765319 24.717852,8.5950701 31.717215,3.3264089 c 5.013461,-4.8275317 10.026849,-10.6685182 15.0512,-14.8897459 2.515458,2.948171 6.995015,2.2229375 9.872474,3.4316925 9.493685,9.76751 18.516547,20.3504745 28.299401,29.6171355 7.883972,2.537593 18.22396,-2.903844 17.29883,-12.0371093 -0.8895,-9.43208414 -10.952816,-13.5109448 -16.212893,-20.3085937 -6.733106,-6.714099 -14.545165,-13.2218 -20.511718,-20.193359 4.54255,-0.583519 9.856143,1.641769 13.71289,-2.064453 8.880247,-6.102084 15.71149,-14.752427 23.011721,-22.46875 2.30237,-4.39472 -1.8979,-9.538321 -6.097658,-9.830078 0.208743,-3.819798 -3.952164,-5.945573 -6.814453,-6.365235 -0.901686,-5.592654 -8.806029,-7.380983 -12.101563,-2.716796 -7.959214,7.092846 -18.905162,12.75255 -22.703125,23.30664 -1.147264,2.987002 1.652146,7.659879 -1.396484,9.228516 C 40.412936,-54.276165 27.8239,-67.103004 14.254743,-78.518415 c -0.932678,-0.359139 -1.954984,-0.597121 -2.955078,-0.498047 z"
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.19859481;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccsccsccsc"
- id="path2430"
- d="M 13.552478,-74.322278 70.23211,-20.418789 97.299521,5.7232427 c 0,0 2.540188,5.2500023 -0.46266,9.2538123 -3.470184,4.626913 -9.716509,2.776143 -9.716509,2.776143 l -27.76145,-29.149519 c 0,0 -1.242133,-1.605384 -2.776144,-1.388075 -3.693456,0.523192 -5.552287,-0.462658 -5.552287,-0.462658 L 9.8509518,-55.814643 c 0,0 -1.6828097,-2.195604 -1.5037457,-9.138145 0.111762,-4.333068 0.301098,-12.031372 5.2052719,-9.36949 z"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.19859481;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccscc"
- id="path2432"
- d="M 39.000475,-25.277046 2.4478972,5.2605484 c 0,0 -3.4701813,5.4616246 0.6940378,10.0885306 4.1642171,4.626913 10.410545,1.016051 10.410545,1.016051 0,0 32.274386,-32.761041 33.313742,-33.776432"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.19859481;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="csscsccccsccccscssc"
- id="path2434"
- d="m 53.69091,-36.645502 c 0,0 6.246325,-4.825725 5.320943,-7.601871 -0.925381,-2.776145 -1.080426,-5.111273 0.694023,-8.791125 2.069098,-4.290875 21.630802,-19.433017 21.630802,-19.433017 0,0 2.03197,-1.219713 3.354513,0 1.515264,1.397454 0.347011,3.817201 0.347011,3.817201 l -18.276288,16.541805 c 0,0 1.16516,0.901009 2.660469,2.544192 4.01256,-4.119638 18.623306,-17.003889 18.623306,-17.003889 0,0 2.375326,-1.564802 3.593376,-0.115675 0.727149,0.865135 0.717329,2.313454 -0.04983,3.296672 -3.848384,3.497549 -18.581373,17.640089 -18.580867,17.640089 0,0 1.021474,1.030147 2.891819,2.776145 3.895888,-3.878318 18.970318,-17.582252 18.970318,-17.582252 0,0 1.884456,-1.061749 3.238836,0.231343 1.542694,1.472882 0.40212,3.375759 0.25613,3.762321 -4.888523,4.897798 -18.075218,19.183377 -21.886951,20.875973 -3.971849,1.763691 -5.668571,0.814858 -10.410544,0.462657 -2.630494,-0.195381 -6.014981,4.39557 -6.014981,4.39557"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.19859481;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="csccccccc"
- id="path3208"
- d="m 56.663322,-13.901436 c 0,0 3.984762,-1.578218 6.628426,-3.74121 2.5448,-2.082113 4.626906,-4.808246 4.626906,-4.808246 l 29.612217,28.6368216 0.92538,4.6269064 -2.31345,5.320951 -4.395565,1.850762 -5.320951,-0.231351 -29.762963,-31.654634 z"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/restroom.xpm b/navit/icons/restroom.xpm
deleted file mode 100644
index 597c0d615..000000000
--- a/navit/icons/restroom.xpm
+++ /dev/null
@@ -1,134 +0,0 @@
-/* XPM */
-static char * restroom_xpm[] = {
-"16 16 115 2",
-" c None",
-". c #262CA6",
-"+ c #2C32A8",
-"@ c #6D71C2",
-"# c #3A3FAE",
-"$ c #2A30A8",
-"% c #8689CB",
-"& c #484DB4",
-"* c #3C42AF",
-"= c #9699D4",
-"- c #FEFEFE",
-"; c #CACBE8",
-"> c #2E34A9",
-", c #E0E0F1",
-"' c #4E53B6",
-") c #FCFCFD",
-"! c #EDEEF6",
-"~ c #2D33A9",
-"{ c #8286CB",
-"] c #FCFCFC",
-"^ c #ACAFDC",
-"/ c #484DB3",
-"( c #F6F7FA",
-"_ c #E4E5F3",
-": c #2C31A8",
-"< c #484EB4",
-"[ c #A0A2D7",
-"} c #B4B6E0",
-"| c #A3A6D8",
-"1 c #4F54B6",
-"2 c #6065BD",
-"3 c #A8ABDB",
-"4 c #BBBDE2",
-"5 c #B2B4DF",
-"6 c #A1A4D8",
-"7 c #272DA6",
-"8 c #D0D1EA",
-"9 c #FFFEFE",
-"0 c #FFFFFF",
-"a c #FFFFFE",
-"b c #DADBEE",
-"c c #E1E1F1",
-"d c #BEBFE3",
-"e c #3D42AF",
-"f c #DFE0F0",
-"g c #E8E8F4",
-"h c #EEEFF7",
-"i c #CED0E9",
-"j c #474CB3",
-"k c #262CA5",
-"l c #E9EAF6",
-"m c #E7E8F4",
-"n c #E7E7F4",
-"o c #C6C6E6",
-"p c #7D80C9",
-"q c #B8B9E0",
-"r c #FEFEFD",
-"s c #AEB0DD",
-"t c #898CCE",
-"u c #AAADDC",
-"v c #A9ACDB",
-"w c #C8C9E8",
-"x c #BDBFE2",
-"y c #B6B9E0",
-"z c #B0B2DE",
-"A c #CBCDE8",
-"B c #AAACDB",
-"C c #CBCCE9",
-"D c #8184CA",
-"E c #C8C9E7",
-"F c #CED0EA",
-"G c #7A7EC8",
-"H c #E3E4F2",
-"I c #A8AADA",
-"J c #A7AADA",
-"K c #C5C7E6",
-"L c #343AAC",
-"M c #F9F9FB",
-"N c #3B41AE",
-"O c #3439AB",
-"P c #9B9ED5",
-"Q c #DDDEF0",
-"R c #777BC6",
-"S c #3036AA",
-"T c #4A50B4",
-"U c #A7AADB",
-"V c #DADBEF",
-"W c #E6E7F4",
-"X c #A9ACDC",
-"Y c #5156B7",
-"Z c #2F34AA",
-"` c #CCCEEA",
-" . c #F6F6FA",
-".. c #767AC6",
-"+. c #AAADDB",
-"@. c #A5A8DA",
-"#. c #C0C2E4",
-"$. c #E0E1F0",
-"%. c #AAAEDC",
-"&. c #A6A9DA",
-"*. c #C0C3E5",
-"=. c #AAAEDB",
-"-. c #A7A9DA",
-";. c #A0A3D6",
-">. c #9598D3",
-",. c #B8BAE0",
-"'. c #9498D2",
-"). c #C9CAE8",
-"!. c #F2F3F8",
-"~. c #7276C4",
-"{. c #282EA6",
-"]. c #2A2FA7",
-"^. c #292FA7",
-"/. c #7074C3",
-"(. c #4248B1",
-". . + @ # . . $ % . . . & * . . ",
-". . = - ; . . > , . . ' ) ! ~ . ",
-". . { ] ^ . . > , . . / ( _ : . ",
-". < [ } | 1 . > , . 2 3 4 5 6 ' ",
-"7 8 9 0 a b . > , . c 0 0 0 0 d ",
-"e f g 0 h i j > , k l m 0 a n o ",
-"p q - 0 r s t > , . g u 0 a v w ",
-"x y 0 0 0 z A > , . g u 0 a B C ",
-"D E 0 0 0 F G > , k H I 0 a J K ",
-"L M 0 0 0 ] N > , . O P Q M R S ",
-"T U Q V W X Y Z , . . P ` .... ",
-". . +.@.#.. . > $.. . P ` .... ",
-". . %.&.*.. . > , . . P ` .... ",
-". . =.-.*.. . > , . . P ` .... ",
-". . ;.>.,.. . > , . . '.).!.~.. ",
-". . {.. ].. . ^./.. . S * (.+ . "};
diff --git a/navit/icons/ruins.svg b/navit/icons/ruins.svg
deleted file mode 100644
index 4a158d290..000000000
--- a/navit/icons/ruins.svg
+++ /dev/null
@@ -1,801 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
- version="1.0"
- sodipodi:docname="ruins.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- style="display:inline">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 64 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="128 : 64 : 1"
- inkscape:persp3d-origin="64 : 42.666667 : 1"
- id="perspective173" />
- <linearGradient
- id="linearGradient2338">
- <stop
- style="stop-color:#b1b1b1;stop-opacity:1;"
- offset="0"
- id="stop2340" />
- <stop
- style="stop-color:#e4e4e4;stop-opacity:1;"
- offset="1"
- id="stop2342" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient2785"
- x1="17.490381"
- y1="42.19928"
- x2="21.159693"
- y2="47.580936"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient2789"
- x1="28.192539"
- y1="47.458626"
- x2="32.534557"
- y2="42.749676"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient2793"
- x1="23.667055"
- y1="43.055454"
- x2="22.657995"
- y2="36.083763"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3450"
- gradientUnits="userSpaceOnUse"
- x1="17.490381"
- y1="42.19928"
- x2="21.159693"
- y2="47.580936" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3452"
- gradientUnits="userSpaceOnUse"
- x1="28.192539"
- y1="47.458626"
- x2="32.534557"
- y2="42.749676" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3454"
- gradientUnits="userSpaceOnUse"
- x1="23.667055"
- y1="43.055454"
- x2="22.657995"
- y2="36.083763" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3458"
- gradientUnits="userSpaceOnUse"
- x1="23.667055"
- y1="43.055454"
- x2="22.657995"
- y2="36.083763"
- gradientTransform="matrix(0.99390634,0,0,0.98951188,41.796832,-0.8222553)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3461"
- gradientUnits="userSpaceOnUse"
- x1="28.192539"
- y1="47.458626"
- x2="32.534557"
- y2="42.749676"
- gradientTransform="matrix(0.99390634,0,0,0.98951188,41.796832,-0.8222553)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3470"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99390634,0,0,0.98951188,41.796832,-0.8222553)"
- x1="28.192539"
- y1="47.458626"
- x2="32.534557"
- y2="42.749676" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3472"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99390634,0,0,0.98951188,41.796832,-0.8222553)"
- x1="23.667055"
- y1="43.055454"
- x2="22.657995"
- y2="36.083763" />
- <inkscape:perspective
- id="perspective3488"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3029"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-3.8871819,-69.969272)"
- x1="89.531189"
- y1="114.97395"
- x2="95.21862"
- y2="122.31257" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3031"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-3.8871819,-69.969272)"
- x1="96.564034"
- y1="113.87315"
- x2="98.398689"
- y2="103.47678" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3033"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-3.8871819,-69.969272)"
- x1="99.010239"
- y1="118.88788"
- x2="104.20843"
- y2="108.98074" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3035"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.74956443,0,0,0.98344191,14.465903,-5.5979423)"
- x1="62.011353"
- y1="98.706665"
- x2="106.47117"
- y2="71.309151" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3037"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.74956443,0,0,0.98344191,14.465903,-5.5979423)"
- x1="51.370354"
- y1="84.640976"
- x2="54.733887"
- y2="96.015839" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3039"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.74956443,0,0,0.98344191,14.465903,-5.5979423)"
- x1="63.173302"
- y1="81.522064"
- x2="62.989838"
- y2="80.727043" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3041"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.74956443,0,0,0.98344191,14.465903,-5.5979423)"
- x1="76.015892"
- y1="80.7882"
- x2="76.138199"
- y2="80.390694" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3043"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.74956443,0,0,0.98344191,14.465903,-5.5979423)"
- x1="84.761078"
- y1="77.36351"
- x2="85.708984"
- y2="78.586617" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3045"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.74956443,0,0,0.98344191,14.465903,-5.5979423)"
- x1="97.725983"
- y1="75.590004"
- x2="97.909447"
- y2="74.856148" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3047"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.74956443,0,0,0.98344191,14.465903,-5.5979423)"
- x1="113.01478"
- y1="79.503944"
- x2="113.07593"
- y2="78.586617" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3049"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.93353767,0,0,0.92114954,4.3633782,0.60293883)"
- x1="34.613834"
- y1="95.771217"
- x2="36.815418"
- y2="105.06681" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3051"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.93353767,0,0,0.92114954,4.3633782,0.60293883)"
- x1="33.390728"
- y1="102.13136"
- x2="34.185745"
- y2="102.31483" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3053"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="38.160831"
- y1="96.780281"
- x2="38.588921"
- y2="102.71233" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3055"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.93353767,0,0,0.92114954,4.3633782,0.60293883)"
- x1="19.997744"
- y1="83.601341"
- x2="33.451885"
- y2="109.65344" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3057"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.93353767,0,0,0.92114954,4.3633782,0.60293883)"
- x1="12.903743"
- y1="77.241203"
- x2="11.925261"
- y2="78.586617" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3059"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.93353767,0,0,0.92114954,4.3633782,0.60293883)"
- x1="26.480194"
- y1="80.543579"
- x2="26.052107"
- y2="81.39975" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3061"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="40.545883"
- y1="100.11324"
- x2="41.646679"
- y2="100.05209" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3063"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="43.90942"
- y1="104.33295"
- x2="43.236713"
- y2="104.82219" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3065"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="39.017006"
- y1="84.946754"
- x2="53.633095"
- y2="98.828979" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3067"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="37.18235"
- y1="64.337456"
- x2="41.952454"
- y2="69.413338" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3069"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="49.413383"
- y1="60.698723"
- x2="50.086094"
- y2="56.876526" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3071"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="43.359024"
- y1="58.894646"
- x2="45.92754"
- y2="56.998837" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3073"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="41.432636"
- y1="59.781395"
- x2="41.952454"
- y2="61.616051" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3075"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="38.833542"
- y1="61.830093"
- x2="39.506248"
- y2="59.934284" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3077"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="35.653469"
- y1="60.912766"
- x2="37.243504"
- y2="58.650024" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3079"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="33.635349"
- y1="58.160782"
- x2="34.246902"
- y2="57.182301" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3081"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="29.537952"
- y1="56.570747"
- x2="32.412247"
- y2="56.081505" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3083"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="30.944521"
- y1="53.512989"
- x2="31.739538"
- y2="55.103024" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3085"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="31.984159"
- y1="52.35104"
- x2="34.246902"
- y2="49.293282" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3087"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="37.610435"
- y1="52.35104"
- x2="38.344299"
- y2="51.433712" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3089"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="38.772385"
- y1="49.843678"
- x2="38.894695"
- y2="51.61718" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3091"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="41.8913"
- y1="49.782524"
- x2="41.830143"
- y2="49.109818" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3093"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="45.621765"
- y1="54.308006"
- x2="48.067974"
- y2="53.146057" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3095"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="39.383938"
- y1="59.445042"
- x2="43.359024"
- y2="54.552628" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3097"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1.6009414,-7.3376482)"
- x1="34.736141"
- y1="54.552628"
- x2="42.319386"
- y2="50.516384" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3099"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.99390634,0,0,0.98951188,41.796832,-0.8222553)"
- x1="17.490381"
- y1="42.19928"
- x2="21.159693"
- y2="47.580936" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3101"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.97376438,0,0,0.98951188,42.043189,-0.8222553)"
- x1="28.192539"
- y1="47.458626"
- x2="32.534557"
- y2="42.749676" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2338"
- id="linearGradient3103"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.97376438,0,0,0.98951188,42.043189,-0.8222553)"
- x1="23.667055"
- y1="43.055454"
- x2="22.657995"
- y2="36.083763" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.590909"
- inkscape:cx="11"
- inkscape:cy="11"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- width="744.09px"
- inkscape:window-width="1316"
- inkscape:window-height="975"
- inkscape:window-x="227"
- inkscape:window-y="46"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="colors"
- style="display:inline" />
- <g
- inkscape:label="outline"
- inkscape:groupmode="layer"
- id="layer1"
- style="display:inline">
- <g
- id="g2973"
- transform="matrix(0.20513353,0,0,0.20513353,-0.24208969,-3.1009625)">
- <g
- transform="matrix(0.69548375,0,0,0.68988863,25.949127,23.696719)"
- id="g3438"
- style="display:inline">
- <path
- style="fill:url(#linearGradient3029);fill-opacity:1;fill-rule:evenodd;stroke:none"
- d="m 81.301988,42.313848 12.35334,4.15855 0.48925,8.13364 -2.93545,-1.10079 -0.73387,-1.83466 -0.97848,0.61155 -0.48924,-1.28426 -1.2231,0.91733 -6.4213,-2.93545 -0.0612,-6.66591 z"
- id="path2703" />
- <path
- style="fill:url(#linearGradient3031);fill-opacity:1;fill-rule:evenodd;stroke:none"
- d="m 81.485448,42.313848 10.45754,-10.51869 1.34541,-0.0612 1.59004,-1.03964 0.55039,-1.46772 1.34542,1.16195 0.91733,-0.733864 7.032842,2.751984 -11.130242,14.06569 -12.10873,-4.15855 z"
- id="path2707" />
- <path
- style="fill:url(#linearGradient3033);fill-opacity:1;fill-rule:evenodd;stroke:none"
- d="m 93.471868,46.533558 11.191402,-14.12685 0.55039,6.66591 -11.007932,15.41111 -0.73386,-7.95017 z"
- id="path2711" />
- <path
- id="path2985"
- d="m 81.301988,42.313848 12.35334,4.15855 0.48925,8.13364 -2.93545,-1.10079 -0.73387,-1.83466 -0.97848,0.61155 -0.48924,-1.28426 -1.2231,0.91733 -6.4213,-2.93545 -0.0612,-6.66591 z"
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none" />
- </g>
- <path
- id="path2715"
- d="m 53.658888,97.729162 -0.595916,-18.463772 1.74191,-1.984704 13.751925,-4.20998 5.40909,2.345561 10.772341,-7.998962 9.718025,4.931691 4.400618,0.541282 0.504239,0.601426 0.595911,-0.420998 0.779279,1.022424 0.13752,-1.082566 3.20878,0.48114 -9.626347,4.811406 -40.797375,19.426052 z"
- style="fill:url(#linearGradient3035);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2719"
- d="m 53.017131,79.084963 -0.04584,-2.405702 0.320878,-0.481141 1.421033,1.142709 -1.696071,1.744134 z"
- style="fill:url(#linearGradient3037);fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2723"
- d="m 53.429689,76.19812 1.466872,1.262994 13.751925,-4.390408 -0.870955,-1.443422 -14.531201,4.270123 0.183359,0.300713 z"
- style="fill:url(#linearGradient3039);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path2727"
- d="m 67.86921,71.687428 4.904853,2.044847 1.191834,1.503563 -5.134052,-2.044847 -0.962635,-1.503563 z"
- style="fill:url(#linearGradient3041);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2731"
- d="m 72.774063,73.732275 10.726502,-7.698249 1.145993,1.443421 -10.634822,7.998962 -1.237673,-1.744134 z"
- style="fill:url(#linearGradient3043);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- sodipodi:nodetypes="ccccc"
- id="path2735"
- d="m 83.408885,66.094169 10.497302,4.811404 0.50424,1.262995 -9.763869,-4.811405 -1.237673,-1.262994 z"
- style="fill:url(#linearGradient3045);fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2739"
- d="m 93.860344,70.905573 8.801236,1.323137 1.42103,1.202852 -3.07126,-0.420998 -0.27504,1.082566 -0.779279,-1.082566 -0.504232,0.541283 -0.687598,-0.721711 -4.217259,-0.420998 -0.687598,-1.503565 z"
- style="fill:url(#linearGradient3047);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- sodipodi:nodetypes="cccccc"
- id="path2743"
- d="m 32.705082,85.280048 4.142885,2.810178 2.511988,3.154651 -2.283625,0.901329 -4.676545,-6.066986 0.305297,-0.799172 z"
- style="fill:url(#linearGradient3049);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2747"
- d="m 34.849793,94.005202 1.998174,-1.802663 2.56908,-0.788663 -2.397808,2.196988 -0.513817,2.140661 -2.683261,0.675995 1.027632,-2.422318 z"
- style="fill:url(#linearGradient3051);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2751"
- d="m 37.865963,92.592124 1.40657,-1.590035 -3.118915,-3.363535 4.586639,0.611552 0.550397,2.996604 -3.424691,1.345414 z"
- style="fill:url(#linearGradient3053);fill-rule:evenodd;stroke:none;display:inline" />
- <path
- sodipodi:nodetypes="cccccccccccc"
- id="path2755"
- d="m 33.365437,78.344604 c -0.570907,-0.169 -11.874858,-5.914971 -11.874858,-5.914971 l -2.39781,1.070328 -1.027632,1.182992 -6.679605,-4.393977 -3.767986,-0.901329 26.204615,27.096201 0.513816,-0.957656 0.685088,-1.689994 2.055265,-1.689992 -3.996347,-5.633308 c 0.234525,-2.695259 0.75628,-5.333837 0.285454,-8.168294 z"
- style="fill:url(#linearGradient3055);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2759"
- d="m 11.44262,70.063644 -3.8821646,-0.788662 2.3978071,-0.844998 3.5967135,0.675998 5.937428,4.393979 -1.370174,1.182992 -6.67961,-4.619309 z"
- style="fill:url(#linearGradient3057);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2763"
- d="m 23.945478,71.528303 -2.169448,0.788663 11.646496,5.914972 0.114183,-2.084324 -9.591231,-4.619311 z"
- style="fill:url(#linearGradient3059);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2767"
- d="m 40.801412,88.311261 1.039638,6.115521 2.446207,0.6727 -2.385052,-6.910531 -1.100793,0.12231 z"
- style="fill:url(#linearGradient3061);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2771"
- d="m 41.902205,94.426782 c 0.611552,0.55039 2.446208,0.73386 2.446208,0.73386 l 5.07588,4.34202 -0.795018,3.118908 -1.956966,-1.34541 -4.770104,-6.849378 z"
- style="fill:url(#linearGradient3063);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2775"
- d="m 33.46279,58.589843 -1.039638,26.602504 3.730466,2.323897 5.626277,0.856172 2.323897,6.543606 5.19819,4.70895 -0.550396,2.813138 5.503966,-3.118918 -1.284259,-22.505105 -1.284259,-18.591175 -2.446207,1.65119 -3.42469,0.917328 -4.036242,0.12231 -3.730466,-0.489241 -3.547001,-1.467725 -1.039638,-0.366931 z"
- style="fill:url(#linearGradient3065);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2779"
- d="m 31.261204,49.722342 -0.183466,1.284259 0.305776,5.3205 1.467725,1.65119 2.507362,1.590035 1.956966,0.733862 c 0,0 5.870897,0.550397 6.665915,0.795018 0.795017,0.24462 7.277466,-2.140432 7.277466,-2.140432 l 2.323897,-2.690828 -0.611552,-4.158552 -2.262742,2.079276 -0.366931,-2.813138 -2.935448,0.795017 -3.913932,0.489242 -0.244621,2.690828 -2.629672,0 -3.730466,-0.550397 0,-2.813138 -2.813139,-0.672707 -1.956966,-1.773501 -0.305776,1.223104 -0.550396,-1.039638 z"
- style="fill:url(#linearGradient3067);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2795"
- d="m 50.830862,49.538876 -0.917328,1.039638 0.366931,0.795018 0.428086,2.629673 2.140432,-1.895811 -2.018121,-2.568518 z"
- style="fill:url(#linearGradient3069);fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2799"
- d="m 49.240827,48.805014 c 0.183466,0.611552 0.978483,2.568518 0.978483,2.568518 l -4.342018,1.100793 -2.385052,0 -0.672707,-1.956966 0.978483,0.122311 3.180069,-0.856173 2.262742,-0.978483 z"
- style="fill:url(#linearGradient3071);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2803"
- d="m 42.941843,55.226308 -0.428086,-1.956966 0.122311,-2.507362 0.917327,1.895811 -0.611552,2.568517 z"
- style="fill:url(#linearGradient3073);fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2807"
- d="m 42.574912,53.575118 0.305776,1.773501 -2.507362,0 -2.996604,-0.489242 -0.305776,-0.305776 2.018121,-1.406569 1.467724,0.428086 2.018121,0 z"
- style="fill:url(#linearGradient3075);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2811"
- d="m 36.826325,51.985084 0,2.690828 2.446208,-1.65119 -0.366932,-2.140432 -2.079276,1.100794 z"
- style="fill:url(#linearGradient3077);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2815"
- d="m 32.056221,49.538876 2.201587,-0.795017 1.223103,0.978483 3.30238,1.100793 -1.956966,1.039638 -2.629672,-0.550396 -1.345414,-0.733863 -0.795018,-1.039638 z"
- style="fill:url(#linearGradient3079);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2819"
- d="m 31.68929,50.823135 -0.550397,-1.284259 0.489242,-1.89581 2.201586,0.550396 0.183466,0.733863 -1.834655,0.672707 -0.489242,1.223103 z"
- style="fill:url(#linearGradient3081);fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2823"
- d="m 31.628135,44.952238 2.262742,0.978483 0,2.262741 -2.323897,-0.550396 0.06116,-2.690828 z"
- style="fill:url(#linearGradient3083);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2827"
- d="m 31.68929,44.891083 2.018121,0.978482 1.65119,-1.467724 2.323897,-0.795017 -1.590035,-1.65119 -2.568517,1.223104 -1.834656,1.712345 z"
- style="fill:url(#linearGradient3085);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2831"
- d="m 37.927119,44.279531 1.100793,-0.122311 1.039638,-0.366931 0.978483,1.406569 -1.100793,0.366932 -1.223104,0.12231 -0.550397,-0.06115 -0.24462,-1.345414 z"
- style="fill:url(#linearGradient3087);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2835"
- d="m 39.822929,41.221772 1.223104,1.7735 0.12231,2.140431 -1.284259,-1.406569 -0.06115,-2.507362 z"
- style="fill:url(#linearGradient3089);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2839"
- d="m 40.006395,41.282927 2.568517,-0.12231 2.568518,1.406569 0.672707,1.89581 -2.385052,-1.712345 -2.323897,0 -1.100793,-1.467724 z"
- style="fill:url(#linearGradient3091);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2843"
- d="m 46.366534,45.80841 2.140431,0.244621 0.733862,2.201587 -3.180069,-0.856173 0.672707,-0.550397 -0.366931,-1.039638 z"
- style="fill:url(#linearGradient3093);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2847"
- d="m 46.549999,46.786893 c -0.244621,0 -2.935449,-0.366931 -2.935449,-0.366931 l -2.507362,0.244621 -2.751983,0.795017 -1.65119,0.795018 -1.52888,1.345414 0.917328,0.428086 2.751983,0.856172 0.305776,2.323897 1.712345,0.428086 1.65119,-0.12231 0.305776,-2.751983 2.018121,-0.244621 2.446207,-0.856172 2.018121,-0.795018 0.550397,1.773501 0.672707,-0.183466 0.366931,-0.733862 -1.52888,-1.590035 -3.363535,-0.672707 0.550397,-0.672707 z"
- style="fill:url(#linearGradient3095);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2851"
- d="m 33.768566,48.682704 0.06115,-2.690828 1.834656,-1.65119 2.201586,-0.672707 0.366931,2.079276 0.917328,-0.06115 2.018121,-0.489242 -0.06115,-2.201586 2.018121,-0.244621 2.874293,1.773501 0.611552,2.323896 -2.385052,-0.489241 -3.363535,0.305776 -3.241224,0.795017 -1.345414,1.223104 -0.978483,0.795017 -1.52888,-0.795017 z"
- style="fill:url(#linearGradient3097);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 53.017131,79.084963 -0.04584,-2.405702 0.320878,-0.481141 1.421033,1.142709 -1.696071,1.744134 z"
- id="path2987" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 72.774063,73.732275 10.726502,-7.698249 1.145993,1.443421 -10.634822,7.998962 -1.237673,-1.744134 z"
- id="path2989" />
- <path
- sodipodi:nodetypes="ccccccc"
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 34.236607,94.429716 2.61136,-2.227177 2.56908,-0.788663 -2.775154,2.196988 -0.702489,2.329334 -2.400252,0.581659 0.697455,-2.092141 z"
- id="path2991" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 37.865963,92.592124 1.40657,-1.590035 -3.118915,-3.363535 4.586639,0.611552 0.550397,2.996604 -3.424691,1.345414 z"
- id="path2993" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 32.846587,78.014427 c -0.570907,-0.169 -11.356008,-5.584794 -11.356008,-5.584794 l -2.39781,1.070328 -1.027632,1.182992 -6.679605,-4.393977 -3.767986,-0.901329 25.827269,27.237706 0.560985,-1.099161 0.449247,-1.454153 2.621283,-1.925833 -4.562365,-6.246494 c 0.04585,-2.695259 0.803448,-5.050828 0.332622,-7.885285 z"
- id="path2995"
- sodipodi:nodetypes="cccccccccccc" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 40.801412,88.311261 1.039638,6.115521 2.446207,0.6727 -2.385052,-6.910531 -1.100793,0.12231 z"
- id="path2997" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 41.902205,94.426782 c 0.611552,0.55039 2.446208,0.73386 2.446208,0.73386 l 5.07588,4.34202 -0.795018,3.118908 -1.956966,-1.34541 -4.770104,-6.849378 z"
- id="path2999" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 42.941843,55.226308 -0.428086,-1.956966 0.122311,-2.507362 0.917327,1.895811 -0.611552,2.568517 z"
- id="path3578" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 31.628135,44.952238 2.262742,0.978483 0,2.262741 -2.323897,-0.550396 0.06116,-2.690828 z"
- id="path3580" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 39.822929,41.221772 1.223104,1.7735 0.12231,2.140431 -1.284259,-1.406569 -0.06115,-2.507362 z"
- id="path3582" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 33.768566,48.682704 0.06115,-2.690828 1.834656,-1.65119 2.201586,-0.672707 0.366931,2.079276 0.917328,-0.06115 2.018121,-0.489242 -0.06115,-2.201586 2.018121,-0.244621 2.874293,1.773501 0.611552,2.323896 -2.385052,-0.489241 -3.363535,0.305776 -3.241224,0.795017 -1.345414,1.223104 -0.978483,0.795017 -1.52888,-0.795017 z"
- id="path3584" />
- <path
- id="path2783"
- d="m 53.953336,37.48515 14.587806,6.596001 0.243129,3.388771 -15.19563,-6.656515 0.06078,-3.20723 0.303912,-0.121027 z"
- style="fill:url(#linearGradient3099);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2787"
- d="m 68.245513,44.020637 6.193278,-3.509799 0.476404,3.570313 -6.371928,3.388771 -0.297754,-3.449285 z"
- style="fill:url(#linearGradient3101);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- id="path2791"
- d="m 58.240989,34.883057 -4.287653,2.541578 14.232627,6.596002 6.074175,-3.509799 -16.019149,-5.627781 z"
- style="fill:url(#linearGradient3103);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
- <path
- style="fill:#000000;fill-opacity:0.15686275;fill-rule:evenodd;stroke:none;display:inline"
- d="m 53.953336,37.48515 14.587806,6.596001 0.243129,3.388771 -15.19563,-6.656515 0.06078,-3.20723 0.303912,-0.121027 z"
- id="path3586" />
- <g
- transform="translate(1.6367081,-7.3651866)"
- id="g3331">
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
- d="M 56.71875,42.0625 51.877534,44.672973 51.742736,48.24527 67.202027,55.072297 73.136204,51.43277 72.711221,47.918868 56.71875,42.0625 z m 0.15625,0.34375 15.044456,5.543868 -3.481956,2.237382 -1.46875,-0.84375 0.5625,-2.75 L 64.625,45.9375 64.144257,46.19223 C 63.746286,45.84601 61.880282,45.185369 61,44.875 l -0.25,-0.0625 c 1.251175,0.856715 1.633993,0.76632 2.9375,1.40625 l -2.90625,0.84375 -0.0625,0.0625 3.71875,-0.875 2.607939,0.625 -0.764189,2.78125 1.53125,0.875 -0.96875,0.5625 -12.375,-5.53125 1.1875,-0.21875 0,-0.09375 L 57.5625,45.0625 57.5,44.875 55.71875,44.6875 55.84375,43.5 55.59375,43.375 55.5,44.75 l -2.03125,0.375 -0.875,-0.40625 4.28125,-2.3125 z M 52.125,45 l 1.09375,0.46875 0.625,1.65625 0,-0.0625 0.0625,-1.28125 12.75,5.6875 0.15625,3.0625 L 52.096284,48.06723 52.125,45 z m 20.263206,3.037559 0.441706,3.285456 -5.486162,3.301985 -0.1875,-3.375 0.90625,-0.5 0.59375,1.125 -0.65625,1 -0.0625,0.125 1.15625,-0.8125 0.75,0.125 -0.0625,-0.125 L 69.125,51.75 68.65625,50.4375 72.388206,48.037559 z M 40.84375,48.3125 C 39.891443,48.3189 38.950271,48.36736 38,48.40625 l 0.125,2.625 C 37.65064,51.31449 37.026501,51.27773 36.5,51.4375 L 36.46875,50.90625 34.5625,49.125 c -1.455527,0.754636 -3.010514,1.051482 -4.90625,3.15625 l 0.1875,2.46875 c -0.804825,2.871177 -0.558897,6.080897 -0.375,9.03125 0.43126,0.915445 1.230173,1.536661 2.03125,2.125 L 31,82.709282 25.4876,80.482323 22.246982,78.806636 c -0.686532,0.486722 -3.79988,1.420689 -4.420909,1.832523 L 11.84375,76.1875 7.75,75.53125 l -2.5,1.0625 26.705764,27.57725 2.481736,-0.8585 0.8125,-2.46875 0.78125,-0.6875 c 0.464299,-0.417925 2.390364,-1.07542 3.5,-1.25 l 0.5625,2.71875 4.875,7 1.6875,1.15625 c 0.124627,0.13598 0.243389,0.27506 0.375,0.40625 2.246523,-0.74627 4.239943,-1.90661 5.65625,-3.4375 L 52.625,105.34375 102.74747,80.804175 100.93559,79.257653 91.954557,77.98343 81.818704,73.36548 70.865955,81.03437 65.992347,78.709184 51.921243,82.831285 51.5,83.125 50.59375,65.71875 C 51.275589,65.170235 51.655082,64.621957 52,63.875 l 0.03125,-1.03125 -0.5,-3.5 -2.3125,-2.8125 L 49,56.3125 47.8125,55.15625 46.875,53.25 l -2,-0.28125 -0.40625,-1.125 0.03125,0 -1.03125,-2.21875 c -0.547705,-0.351157 -1.846952,-0.99928 -2.625,-1.3125 z m 0.1875,0.40625 L 43,49.75 l 0.59375,1.46875 -1.8125,-1.28125 -0.75,-1.21875 z m -1,0.03125 c 0.229416,-0.0068 0.477208,-0.0024 0.71875,0 l 0.53125,1.03125 C 40.754775,49.781088 40.197117,49.835895 39.5625,50 l -0.65625,-1.125 c 0.397305,-0.07937 0.765913,-0.114328 1.125,-0.125 z m -1.71875,0.1875 0.84375,1.25 0.28125,1.875 -0.96875,-1.21875 -0.15625,-1.90625 z m -3.875,0.6875 1.1875,1.125 c -1.428276,0.396516 -2.42027,0.77562 -3.40625,2.1875 L 30.5625,52.03125 c 1.032722,-1.290012 2.213785,-1.746215 3.875,-2.40625 z m 7,0.6875 c 0.128317,0.0024 0.249872,0.02249 0.375,0.03125 l 2.0625,1.46875 0.03125,0.03125 -1.34375,0.625 -1.34375,-1.1875 0.0625,0.125 1.0625,1.625 1.875,-0.65625 0.46875,1.46875 c -1.422049,-0.387427 -2.961267,-0.462099 -4.5,-0.28125 -2.369074,0.39254 -4.886138,1.153648 -6.59375,2.9375 L 32.5,55.8125 l -0.0625,-0.25 -0.09375,-2 c 0.877299,-1.44314 2.238116,-1.963122 3.78125,-2.40625 l 0.21875,2.03125 c 0.716433,0.02319 1.516876,0.04347 3.40625,-0.5625 l -0.21875,-2.09375 c 0.62088,-0.203079 1.266035,-0.188892 1.90625,-0.21875 z M 38.25,51.34375 39.0625,52.5 c -0.734084,0.292766 -1.355657,0.564834 -2.28125,0.46875 L 36.75,51.75 c 0.634604,0.02258 0.959336,-0.07731 1.5,-0.40625 z m -8.15625,1.125 1.875,0.90625 0.0625,1.9375 c -0.56638,-0.115872 -1.096457,-0.166216 -1.8125,-0.65625 l -0.125,-2.1875 z m 14.9375,0.96875 1.59375,0.125 0.6875,1.53125 -2.53125,-0.34375 0.53125,-0.5 -0.28125,-0.8125 z m -3.5625,0.53125 c 1.138119,-0.01917 2.234385,0.08187 3.25,0.34375 l -0.5,0.6875 3.15625,0.5625 c 0.482449,0.368141 0.927504,0.809441 1.34375,1.34375 0.01822,0.298357 -0.104133,0.401444 -0.28125,0.59375 l -0.78125,-1.53125 c -2.032315,0.98389 -4.118435,1.86571 -6.59375,1.875 l -0.28125,2.875 c -1.10739,-0.0067 -1.85118,0.09288 -3.0625,-0.375 L 37.46875,58 c -1.535962,-0.280044 -2.760131,-0.682952 -3.5,-1.15625 1.66599,-1.681028 4.007663,-2.426544 6.28125,-2.8125 0.418945,-0.03048 0.811187,-0.05564 1.21875,-0.0625 z M 30.25,55.3125 l 1.78125,0.40625 0.125,0.25 -1.84375,0.46875 -0.28125,1.28125 C 29.93159,57.047288 30.02405,55.986285 30.25,55.3125 z m 2.34375,1.03125 c 0.707231,0.859155 1.887383,1.399354 4,1.84375 l -1.5,0.75 c -1.52269,-0.504017 -3.044103,0.01961 -4.21875,-2 l 1.71875,-0.59375 z M 47.5,56.4375 l 0.6875,1.90625 c -2.191099,0.622135 -3.837267,1.382859 -6.15625,1.3125 l -0.4375,-1.4375 C 43.487895,58.043736 45.380846,57.552217 47.5,56.4375 z m 1.75,1.03125 1.71875,1.875 c -0.485536,0.621422 -1.141704,1.134106 -1.78125,1.59375 L 48.90625,58.5625 48.65625,58 c 0.337987,-0.146662 0.471634,-0.215784 0.59375,-0.53125 z m -18.78125,0.1875 c 1.065357,1.440277 2.899664,1.352531 4.5,1.9375 l -0.0625,2.15625 -0.9375,1.25 -1.375,0.21875 0.125,0.21875 1.375,0.125 1,2 0.1875,-0.09375 -0.84375,-2.25 0.90625,-0.84375 c 1.137333,0.339665 2.466156,0.575227 5.90625,0.6875 l 1.0625,1.71875 1.65625,-0.375 3.78125,1.5 -0.03125,-0.125 -3.0625,-1.6875 2,-1.4375 1.53125,1.03125 0.03125,-0.09375 -1.1875,-1.21875 -0.625,-1.25 -0.25,-0.03125 0.5625,1.25 c -0.80383,0.434916 -1.728566,0.971057 -2.53125,1.5 l -0.125,-0.0625 -1.40625,0.4375 -0.75,-1.5 0,-0.03125 L 42,60.375 c 2.460452,0.05808 4.333599,-0.893537 6.53125,-1.5 l 0.40625,2.84375 c 0.926132,-0.600712 1.666367,-1.058956 2.25,-1.8125 l 0.46875,3.21875 c -0.0036,0.08847 -0.02254,0.170571 -0.03125,0.28125 -2.271461,3.674273 -6.810918,4.604746 -10.75,4.65625 -3.850146,-0.198467 -8.329086,-0.911907 -10.71875,-4.34375 -0.170619,-2.140581 -0.809802,-4.330282 -0.375,-5.90625 l 0.4375,1.0625 0.25,-1.21875 z m 10.71875,0.75 0.46875,1.59375 -0.1875,2.34375 -0.34375,-1.6875 0.0625,-2.25 z m -3.96875,0.0625 0.0625,1.84375 -1.875,1.125 L 35.5,59.625 37.21875,58.46875 z M 37.625,60.6875 c 1.279983,0.48679 2.100044,0.426973 3.21875,0.4375 l 0.25,1.40625 c -1.919515,0.0833 -3.653274,-0.04031 -5.40625,-0.75 L 37.625,60.6875 z m -5.5,5.5 c 2.706589,1.559282 5.55608,2.17425 8.625,2.3125 3.259077,0.02006 6.421264,-0.353891 9.1875,-2.1875 0.857755,6.902345 1.862061,33.221995 2.28125,40.1875 -1.703839,1.28309 -3.335954,2.19375 -4.90625,2.84375 l 0.53125,-2.71875 -0.125,-0.0937 0.5625,-3.09375 2.53125,-3.09375 -0.1875,-0.125 -2.1875,2.3125 -1.46875,-4.7813 -0.03125,0.125 1.0625,5.03125 0.09375,-0.0312 -0.25,0.28125 -0.5625,2.96875 -4.53125,-3.9375 -2.21875,-6.375 0.09375,0.0625 6,-4.59375 c 0.242548,-0.995056 -0.56993,-2.753212 -0.5,-4 1.366896,-1.781756 2.413157,-3.73925 3.46875,-5.71875 L 47.875,76 l -0.09375,-0.0625 1.5625,5.6875 c -0.892695,1.654584 -2.294738,3.032838 -3.25,4.65625 l 0.03125,-2.75 -2.5625,-1.28125 0.625,-3.5625 -0.03125,-0.03125 -0.96875,3.375 -2.71875,-0.46875 0.09375,0.15625 2.5,0.78125 L 43,82.65625 45.90625,83.6875 c -0.08197,1.018562 -0.228149,2.270224 -0.21875,3.375 -0.481148,1.264505 0.195676,2.605564 0.5625,3.84375 l -6.1875,4.4375 -4.5625,-0.3125 0.34375,-3.875 2.125,-2.28125 L 41.125,87.75 41,87.53125 37.75,88.6875 36.15625,90.25 l 0.25,-2.875 1.6875,-0.3125 0,-0.03125 -1.9375,0.0625 L 35.5,91 l -0.90625,3.625 -3.125,-2 2.125,-2.3125 -1.1875,-2.21875 -0.1875,0.03125 1.03125,2.0625 -2.21875,1.90625 C 31.277887,81.948985 31.692547,70.489425 32.125,66.1875 z m 49.59135,7.642242 0.671313,0.947078 -10.366048,7.670827 -0.841258,-1.294307 10.535993,-7.323598 z m 0.308998,-0.06759 9.731841,4.400499 0.698331,1.230183 L 82.981702,74.7548 82.025348,73.762152 z M 8.03125,75.875 l 3.375,0.46875 -2.0625,1 -3.4375,-0.75 2.125,-0.71875 z m 74.645328,-0.873388 9.316615,4.475429 -3.480438,1.563138 -0.274235,0.493622 -3.48278,-0.575893 0.02742,0.08227 3.098852,1.069515 -1.371173,2.440689 -3.757015,2.248724 0.137117,0.109694 3.811862,-2.05676 2.111607,-3.482781 3.400105,-1.727678 0.539192,0.06219 3.574734,0.376588 c 0.247513,-0.07638 0.575199,0.50332 0.822704,0.521046 l 0.996116,-0.06412 0.859404,0.897634 0.314401,-0.830044 2.678634,0.07687 -49.405953,24.193265 -0.9375,-18.593752 0.0625,0.03125 1.427388,-1.511201 13.787883,-4.386457 4.868206,2.329059 -0.131309,2.053293 -1.617984,2.742347 0.08227,0.02742 2.05676,-2.550382 1.97449,0.521046 0.05485,-0.02742 -2.084184,-0.767857 -0.05872,-1.898028 10.59818,-7.842707 z M 11.84375,76.5625 l 5.716991,4.373827 c -0.443965,0.326967 -0.841558,0.594469 -1.15625,1.093164 L 9.75,77.5625 l 2.09375,-1 z M 6,76.8125 9.2665046,77.593164 16.46875,82.75 l 1.682809,3.895109 2.815432,1.314259 0.01533,-0.140918 -2.519437,-1.486428 -1.808395,-4.067863 c 0.811942,-1.08357 2.494665,-1.352446 3.563673,-2.044236 4.182421,2.418787 6.390512,3.090742 10.735254,5.176273 L 30.625,93.375 34.6875,99.34375 32.78125,101 l -2.1875,-2.1875 -0.4375,0 0.1875,-0.15625 L 29.28125,95.8125 29.3125,96 29.84375,98.78125 27.75,98.75 27.59375,98.78125 30.3125,99.25 32.375,101.59375 31.8125,103.4375 6,76.8125 z m 16.171077,2.346768 3.636189,1.796539 5.098398,2.126716 0.079,1.923927 c -4.275131,-1.772391 -6.436943,-2.774423 -10.4251,-4.974614 l 1.611513,-0.872568 z m 69.975442,-0.786506 8.679371,1.104279 1.20123,0.990712 -3.075299,-0.199304 -0.177244,0.640016 -0.532258,-0.722287 -1.00886,0.195837 -0.767857,-0.658163 -3.686364,-0.376589 -0.632719,-0.974501 z m -26.209019,0.610656 0.904974,0.987245 -13.693808,4.408129 -1.27493,-1.126264 14.063764,-4.26911 z m 0.466199,0.08227 4.637604,2.365353 0.60719,0.80996 -4.475001,-2.093054 -0.769793,-1.082259 z m -14.686213,4.453096 1.039923,1.080021 -1.132409,1.151194 -0.09375,-1.96875 0.186236,-0.262465 z M 31.0625,92.71875 34.375,95.062499 37.1875,98.343749 35,99.15625 c -1.278637,-1.930267 -3.19263,-4.5079 -4.25,-6.125 l 0.3125,-0.3125 z m 3.8125,2.468749 3.96875,0.5 0.5625,2.65625 c -0.890864,-0.04382 -1.439699,0.39062 -2.21875,0.84375 l 0.84375,-0.75 -3.15625,-3.25 z m 4.6875,0.5625 0.34375,0.03125 2.21875,6.375001 -1.5625,-0.625 -1,-5.781251 z M 90.66883,50.9375 c -0.287563,0.175149 -0.249277,1.02536 -0.582948,1.187487 -0.329177,0.159951 -0.64471,0.121288 -0.928399,0.431813 -0.227302,0.248808 -0.830644,-0.007 -1.057943,0.215907 l -7.367065,7.426266 0.198961,4.988371 4.382907,1.878389 0.712492,-0.669311 0.453404,0.690901 0.712493,-0.237497 0.431813,1.209078 2.246359,0.760316 c 2.326649,-3.685517 5.139033,-7.250507 7.577397,-10.994295 L 97.210804,53.269293 92.158586,51.347723 91.662001,51.736355 90.66883,50.9375 z M 36.84375,99.03125 35,100.6875 l -2.03125,0.6875 2.25,-1.875 1.625,-0.46875 z m 53.976215,-47.683527 0.64772,0.539767 -0.30227,0.906808 0.04318,0.02156 -0.863627,0.734083 0.107953,0.02156 1.144306,-0.518176 1.27385,0.820445 0.04318,-0.04318 -1.424984,-1.101124 0.496585,-1.014762 -0.08636,0.02156 c 0.04512,-0.09464 0.09283,-0.161324 0.172726,-0.129544 l 4.685176,1.662482 -7.578326,9.586259 -2.677244,-0.928399 1.748845,-0.64772 0.582948,-2.267021 2.482927,-0.820446 1.29544,-1.381803 -0.08636,-0.129544 -1.317031,1.230669 -2.072705,0.561357 0.755674,-0.993171 -1.360213,1.165897 0.06477,0.02156 -0.582948,2.288611 -2.051114,0.604539 -1.252259,-1.943161 0.669311,-1.727254 -0.129544,-0.08636 -0.626129,1.252259 -1.165897,-0.280679 -0.690901,0.842036 0.129544,0.151135 0.518176,-0.561357 0.993171,0.302269 -0.08636,0.151135 1.122715,1.899979 -4.167,-1.468166 6.887425,-6.887425 0.777264,-0.215906 -0.345451,1.252259 0.129544,-0.04318 0.62613,-1.338621 0.97158,-0.690902 0.496586,-0.820445 0,1.38e-4 -3e-6,-2.1e-5 z m -55.976215,49.808527 -0.625,1.875 -2.15625,0.75 0.686914,-2.0165 2.094336,-0.6085 z m 6,0.875 1.65625,0.71875 4.84375,4.25 -0.40625,2.75 -1.59375,-1.125 -4.5,-6.59375 z m 56.107967,-48.416511 0.323859,4.231776 c -2.23059,3.680675 -5.012574,6.778877 -7.427192,10.320342 l -0.32386,-4.944264 -0.04318,-0.02156 7.470373,-9.586259 0,-3.5e-5 z m -15.890736,6.736292 4.641994,1.619303 0.02159,0.04318 -0.431814,1.144306 -0.97158,0.04318 -1.209078,-1.662482 -0.08636,0.151135 0.820445,1.554529 -0.885217,1.036352 0.04318,0.04318 1.079534,-0.777264 1.230668,-0.04318 1.424984,1.014761 -0.820445,1.59771 -0.453404,0.539767 -4.037456,-1.727254 -0.367041,-4.577223 z m 4.965853,1.748853 3.17383,1.101118 0.32386,5.246534 c -0.561176,-0.239446 -1.48809,-0.645772 -1.94316,-0.885218 l -0.259088,-1.252259 -0.755674,0.453404 -0.151135,-0.345451 0.04318,0.02156 0.690901,-1.748845 1.165897,-0.518176 -0.02159,-0.08636 -1.360212,0.172726 -1.446576,-0.885218 0.539767,-1.27385 0,3.5e-5 z"
- id="path2312"
- sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/school.svg b/navit/icons/school.svg
deleted file mode 100644
index 3c99eb64f..000000000
--- a/navit/icons/school.svg
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="school.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/police.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3155">
- <stop
- id="stop3163"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- style="stop-color:#0000ff;stop-opacity:0.74901962;"
- offset="1"
- id="stop3171" />
- <stop
- style="stop-color:#0000ff;stop-opacity:0.49803922;"
- offset="1"
- id="stop3165" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective3181"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3155"
- id="linearGradient3173"
- x1="1.6414979"
- y1="10.983024"
- x2="19.824244"
- y2="10.983024"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.91137644,0,0,0.91138156,0.68665551,-78.37958)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="1"
- inkscape:pageshadow="2"
- inkscape:zoom="2.8284271"
- inkscape:cx="31.918419"
- inkscape:cy="53.448586"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1130"
- inkscape:window-height="766"
- inkscape:window-x="284"
- inkscape:window-y="45"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.18553674px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 10.858358,-75.480718 c -3.3606194,1.447724 -6.7482731,2.837903 -10.20237828,4.048189 -0.96144525,1.184222 -0.96144525,1.184222 2.08415808,2.627733 0.4843866,0.255395 1.3838932,0.37048 1.592277,0.724005 -0.5537056,1.27361 -0.7243248,2.672779 -0.7751304,4.049276 2.5209069,2.290072 6.0803651,3.362016 9.4343936,2.706376 0.447428,-0.02346 0.923778,-0.102236 1.339553,-0.191031 -0.284709,0.741346 -0.446896,1.521442 -0.634594,2.290928 0.971202,0.04041 1.93492,0.578231 2.883196,0.499226 0.52157,0.954674 2.166046,0.82441 2.292429,-0.353482 0.402802,-1.265009 -0.01517,-2.599617 -0.582435,-3.717185 -0.184428,-0.611635 -0.06418,-1.18444 0.477755,-1.524143 0.824541,-1.320356 -0.204826,-2.779217 -0.328885,-4.142814 -0.217544,-0.568577 -0.646312,-1.235203 0.09786,-1.631566 1.093753,-1.182429 2.205599,-2.347935 3.275399,-3.552479 -3.656575,-0.415067 -7.250614,-1.733976 -10.953603,-1.833033 z"
- id="path3197-3"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccccccc" />
- <path
- style="fill:url(#linearGradient3173);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 2.1826781,-70.75775 9.2638309,-3.452379 7.307496,1.380951 -2.416653,3.107142 0.978169,1.898808 0.575394,2.761904 -3.740057,2.416665 -5.5237753,0.115079 -3.9126742,-2.071427 0.3452358,-2.186508 1.208326,-2.359125 -4.0852922,-1.61111 z"
- id="path3197"
- inkscape:connector-curvature="0" />
- <path
- id="path3187"
- style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.18660998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none"
- d="m 6.301679,-69.021992 c 0,0 -0.5870606,0.366914 -1.3208862,2.49502 -0.4094794,1.187497 0,2.128107 0,2.128107 0,0 2.2737833,1.939495 5.0633962,1.98134 5.797223,0.08806 7.558405,-2.641787 7.558405,-2.641787 0,0 0.230448,-0.781932 -0.293531,-2.71517 -0.539632,-1.990993 -0.880591,-1.907958 -0.880591,-1.907958 m -14.3095993,-0.865919 11.2275323,3.948004 5.870605,-6.310935 -7.837258,-1.541043 -9.2608793,3.903974 z m 12.6951833,2.773877 c 0,0 1.347676,0.880979 1.907947,2.935319 0.660443,2.421638 0.05189,3.053085 0.05189,3.053085 0,0 1.174121,0.821891 1.027356,1.775869 m -1.320886,0.205472 c 0,0 0.880591,-1.027361 0.29353,-2.274872 0,0 -0.733825,0.660447 -1.100739,2.0694"
- sodipodi:nodetypes="cscscscccccccsccccc"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/shelter.svg b/navit/icons/shelter.svg
deleted file mode 100644
index b0cbc7e31..000000000
--- a/navit/icons/shelter.svg
+++ /dev/null
@@ -1,222 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="shelter.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="31.570821"
- inkscape:cy="5.9279102"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="-3"
- inkscape:window-y="-3"
- inkscape:zoom="7.3734169"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="1" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="M79,43l57,119c0,0,21-96,104-96s124,106,124,106l43-133l82-17L0,17L79,43z"
- id="path4460" />
- <path
- d="M94,176l-21,39"
- fill="none"
- id="path4462"
- stroke="#000000"
- stroke-width="20" />
- <path
- d="M300,19c0,10.5-22.6,19-50.5,19S199,29.5,199,19s22.6-19,50.5-19S300,8.5,300,19z"
- id="path4464" />
- <path
- d="M112,216l-16-38L64,88c0,0-9-8-4-35s16-24,16-24"
- id="path4466"
- ill="none"
- stroke="#000000"
- stroke-width="20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327"
- transform="matrix(0.04177193,0,0,0.04177193,-1.4918456,-0.54206344)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-536.27327,-33.306752)">
- <rect
- height="10"
- id="rect4134"
- style="fill:none;stroke:#757575;stroke-width:0.10000000000000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="fill:none;stroke:#757575;stroke-width:0.10000000000000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- width="8"
- x="2"
- y="2" />
- </g>
- <path
- d="M 4.134533,2.5487666 0.84069955,5.8425995"
- id="path15803"
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#00c08f;stroke-width:0.80205715;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- <path
- d="M 8.5929954,1.2962428 5.2991629,4.5900759"
- id="path15805"
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#00c08f;stroke-width:0.80205715;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- <path
- d="M 3.2963093,7.1482333 0.71140075,9.7331417"
- id="path15807"
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#00c08f;stroke-width:0.80205715;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- <path
- d="M 10.03139,3.8456992 6.7375585,7.1395323"
- id="path15809"
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#00c08f;stroke-width:0.80205715;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- <path
- d="M 17.587755,3.1315428 14.293922,6.425376"
- id="path15813"
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#00c08f;stroke-width:0.80205715;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- <path
- d="M 21.324199,2.8256192 18.886984,5.1742187"
- id="path15815"
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#00c08f;stroke-width:0.80205715;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- <path
- d="M 21.412815,6.0493695 18.886983,8.5161232"
- id="path15819"
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#00c08f;stroke-width:0.80205715;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- <path
- d="M 17.169693,7.2067332 16.032174,8.2556374"
- id="path15821"
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#00c08f;stroke-width:0.80205715;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- <path
- d="M 13.293951,4.4483272 11.654276,6.028925"
- id="path15823"
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#00c08f;stroke-width:0.80205715;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- <path
- d="M 13.986991,0.84295167 12.051931,2.8370888"
- id="path15825"
- sodipodi:nodetypes="cc"
- style="fill:none;stroke:#00c08f;stroke-width:0.80205715;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- inkscape:connector-curvature="0" />
- <g
- id="g5417"
- transform="matrix(0.03644518,0,0,0.03644518,0.31578565,2.7532808)">
- <path
- d="M 48.288912,272.40193 288.29972,144.39616 528.31052,272.40193 512.24025,288.7664 431.99984,256.40121 288.21392,239.09639 144.09958,256.1512 64.279091,288.40647 48.288912,272.40193 z"
- id="path7057"
- sodipodi:nodetypes="ccccccccc"
- style="fill:#00c08f;fill-opacity:1;fill-rule:evenodd;stroke:#00c08f;stroke-width:21.45868111;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;display:inline"
- inkscape:connector-curvature="0" />
- <rect
- height="258.64166"
- id="rect7061"
- ry="0"
- style="fill:#00c08f;fill-opacity:1;stroke:#00c08f;stroke-width:22.63140297;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- width="30.82872"
- x="414.99585"
- y="255.09157" />
- <rect
- height="258.64166"
- id="rect2747"
- ry="0"
- style="fill:#00c08f;fill-opacity:1;stroke:#00c08f;stroke-width:22.63140297;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- width="30.82872"
- x="128.99585"
- y="255.09157" />
- </g>
-</svg>
diff --git a/navit/icons/shinto.svg b/navit/icons/shinto.svg
deleted file mode 100644
index 2b1dc3b95..000000000
--- a/navit/icons/shinto.svg
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="shinto.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="-9.5708212"
- inkscape:cy="17.078967"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="7.3734169"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2466"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3333"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3401"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3464"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3581"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4312"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327"
- transform="matrix(0.04245132,0,0,0.0324535,-0.51966729,2.0219977)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <path
- d="M 7.5394045,19.570539 C 7.430461,19.414918 7.3823982,18.301678 7.3991799,16.322626 7.4209809,13.751517 7.3886371,13.258157 7.1778333,12.946516 6.8537478,12.467403 6.8558771,12.461078 7.3890319,12.318992 7.8192225,12.204343 7.8471101,12.159765 7.8471101,11.586695 l 0,-0.610218 -1.4887545,-0.02688 C 5.5395404,10.934812 4.821999,10.886244 4.7638185,10.841661 4.624263,10.734721 4.5610582,9.6109678 4.6859108,9.4565265 c 0.059714,-0.073862 0.5384533,-0.098857 1.236999,-0.064586 0.95672,0.046942 1.197117,0.020748 1.4981211,-0.1632033 C 8.0304813,8.8562862 7.8034682,8.6323284 6.7315879,8.5485725 4.6714377,8.3875922 4.6800392,8.3899736 4.5722449,7.9507098 4.5182264,7.7305826 4.4069595,7.5504785 4.3249837,7.5504785 4.2430065,7.5504785 3.900989,7.4113798 3.5649449,7.2413707 3.0889279,7.000548 2.9168113,6.8194925 2.7858129,6.4217732 2.6933344,6.1410032 2.4176723,5.7002157 2.1732309,5.4422454 1.9287894,5.1842753 1.7695892,4.9227436 1.8194527,4.8610637 c 0.1380206,-0.1707261 0.795889,-0.1340382 1.3213359,0.073688 0.584053,0.2308943 1.8013133,0.5112673 2.4565298,0.5658152 0.2716034,0.022612 1.2840098,0.1311083 2.2497917,0.2411036 1.4484267,0.1649651 2.4913889,0.1899947 5.9550189,0.1429068 2.309478,-0.031396 4.508254,-0.1135789 4.886168,-0.1826257 0.377914,-0.069048 1.124745,-0.1783782 1.659624,-0.2429574 0.534878,-0.06458 1.404052,-0.2718008 1.931494,-0.4604917 1.281236,-0.4583589 1.672035,-0.1984136 0.989093,0.6579085 -0.167647,0.2102091 -0.304813,0.5055627 -0.304813,0.6563403 0,0.2694709 -1.188411,1.2377294 -1.51915,1.2377294 -0.08346,0 -0.209035,0.1690367 -0.279063,0.3756379 -0.140253,0.413779 -0.452172,0.5271541 -1.503768,0.5465799 -0.934456,0.017263 -1.584188,0.1393642 -1.584188,0.29771 0,0.077085 0.157968,0.25361 0.35104,0.3922746 0.322761,0.2318055 0.436549,0.2440224 1.412409,0.1516459 0.652312,-0.061749 1.131625,-0.057682 1.243667,0.01056 0.183743,0.1119026 0.113415,1.2277203 -0.08833,1.4013633 -0.05264,0.0453 -0.768554,0.09107 -1.59093,0.101694 l -1.495227,0.01932 0.04551,0.598698 c 0.04265,0.560911 0.07684,0.606436 0.541876,0.721351 0.801751,0.198119 0.869565,0.322907 0.404894,0.745079 l -0.413833,0.375986 0.0881,2.998199 c 0.0546,1.857986 0.03162,3.075365 -0.06043,3.201105 -0.18311,0.25014 -1.531305,0.287273 -1.789657,0.04929 -0.105156,-0.09686 -0.204346,-1.293546 -0.2685,-3.239307 -0.05596,-1.697131 -0.167471,-3.183259 -0.247811,-3.302505 -0.09702,-0.144011 -0.09005,-0.259642 0.02077,-0.34436 0.09176,-0.07015 0.1669,-0.497877 0.166977,-0.950504 l 1.4e-4,-0.822959 -3.472804,0.03807 c -1.910041,0.02094 -3.4965515,0.05623 -3.5255747,0.07842 -0.029025,0.02219 -0.090118,1.922375 -0.1357627,4.222638 -0.045645,2.300261 -0.1450541,4.274218 -0.22091,4.386573 -0.2059437,0.305037 -1.2837427,0.281745 -1.503729,-0.03249 z m 4.4304105,-10.5025462 0,-0.4669264 -1.137609,0 c -0.8996473,0 -1.1671803,0.040396 -1.2789833,0.1931285 -0.1061445,0.1449994 -0.04144,0.2604411 0.259624,0.4632374 0.3178893,0.2141272 0.5829733,0.2708751 1.2789843,0.2737996 l 0.877984,0.00369 0,-0.4669273 z m 3.968267,0.1491555 c 0.168923,-0.1105706 0.30713,-0.294424 0.30713,-0.408561 0,-0.180428 -0.149516,-0.2075209 -1.145196,-0.2075209 l -1.145195,0 0,0.4085615 0,0.4085604 0.838065,0 c 0.572327,0 0.93545,-0.063746 1.145196,-0.20104 z"
- id="path1873"
- sodipodi:nodetypes="cssscccsssssssssssssssssssssssssssscccscccssssscccsssccccssccccscccccc"
- style="opacity:0.25;fill:#ffffff;fill-opacity:0"
- inkscape:connector-curvature="0" />
- <path
- d="M 5.8413521,18.272399 C 5.7324086,18.116778 5.6843456,17.003538 5.7011275,15.024486 5.7229285,12.453377 5.6905846,11.960016 5.4797807,11.648375 5.1556953,11.169263 5.1578246,11.162937 5.6909795,11.020852 6.12117,10.906203 6.1490576,10.861625 6.1490576,10.288554 l 0,-0.610217 -1.4887544,-0.02688 C 3.8414874,9.6366763 3.1239463,9.5881057 3.065766,9.5435234 2.9262107,9.4365828 2.8630059,8.3128293 2.9878584,8.1583887 3.0475721,8.0845271 3.5263118,8.0595315 4.2248568,8.0938025 5.1815772,8.1407448 5.4219743,8.1145506 5.7229784,7.9305998 6.3324288,7.5581483 6.1054158,7.3341905 5.0335354,7.2504342 2.973385,7.0894539 2.9819866,7.0918355 2.8741926,6.6525714 2.8201742,6.4324444 2.7089068,6.2523401 2.6269308,6.2523401 2.5449542,6.2523401 2.2029369,6.1132415 1.8668923,5.9432325 1.3908755,5.7024078 1.2187588,5.5213522 1.0877604,5.1236329 0.99528177,4.8428628 0.71961977,4.4020755 0.47517827,4.144105 0.23073693,3.8861349 0.07153669,3.6246033 0.1214002,3.5629234 0.2594208,3.3921973 0.91728917,3.4288851 1.4427361,3.6366115 2.026789,3.8675057 3.2440495,4.1478789 3.8992659,4.2024266 4.1708692,4.2250376 5.1832757,4.333535 6.1490576,4.4435302 7.5974843,4.6084955 8.6404469,4.6335251 12.104076,4.5864371 14.413554,4.5550411 16.612331,4.4728581 16.990244,4.4038114 17.368159,4.3347634 18.114991,4.2254333 18.649869,4.160854 19.184747,4.096274 20.05392,3.8890532 20.581363,3.7003623 21.8626,3.2420034 22.253398,3.5019486 21.570457,4.3582706 21.40281,4.56848 21.265642,4.8638333 21.265642,5.014611 c 0,0.269471 -1.188411,1.2377291 -1.519149,1.2377291 -0.08346,0 -0.209036,0.1690368 -0.279064,0.3756381 -0.140252,0.413779 -0.452171,0.527154 -1.503768,0.5465803 -0.934456,0.017263 -1.584187,0.1393639 -1.584187,0.29771 0,0.077085 0.157968,0.2536096 0.351041,0.3922739 0.322759,0.2318055 0.436548,0.2440224 1.412407,0.1516465 0.652313,-0.061749 1.131627,-0.057681 1.243668,0.01056 0.183743,0.1119013 0.113415,1.2277196 -0.08833,1.4013629 -0.05264,0.045303 -0.768554,0.091067 -1.590929,0.1016941 l -1.495229,0.019322 0.04551,0.5986971 c 0.04264,0.560911 0.07684,0.606436 0.541876,0.721351 0.801753,0.198119 0.869566,0.322907 0.404894,0.74508 l -0.413833,0.375985 0.0881,2.9982 c 0.0546,1.857986 0.03162,3.075364 -0.06043,3.201104 -0.183112,0.25014 -1.531306,0.287273 -1.789658,0.04929 -0.105156,-0.09686 -0.204347,-1.293545 -0.268501,-3.239307 -0.05596,-1.69713 -0.16747,-3.183258 -0.247811,-3.302506 -0.09702,-0.14401 -0.09005,-0.25964 0.02077,-0.344358 0.09176,-0.07015 0.1669,-0.497878 0.166976,-0.950505 l 1.42e-4,-0.8229587 -3.472805,0.03807 c -1.9100406,0.02094 -3.4965507,0.056226 -3.5255742,0.078416 -0.029025,0.022185 -0.090119,1.9223747 -0.1357627,4.2226377 -0.045645,2.300261 -0.1450542,4.274219 -0.2209101,4.386574 -0.2059437,0.305037 -1.2837426,0.281744 -1.503729,-0.03249 z m 4.4304109,-10.5025464 0,-0.4669268 -1.1376093,0 c -0.8996479,0 -1.1671806,0.040398 -1.2789839,0.1931284 -0.106145,0.1449999 -0.041444,0.2604417 0.2596249,0.463238 0.3178876,0.214127 0.5829723,0.2708746 1.2789834,0.2737994 l 0.8779849,0.00369 0,-0.4669275 z m 3.968266,0.1491555 c 0.168923,-0.1105705 0.307131,-0.2944244 0.307131,-0.4085608 0,-0.1804283 -0.149516,-0.2075215 -1.145195,-0.2075215 l -1.145195,0 0,0.408562 0,0.4085604 0.838064,0 c 0.572328,0 0.935451,-0.063747 1.145195,-0.2010401 z"
- id="path6923"
- sodipodi:nodetypes="cssscccsssssssssssssssssssssssssssscccscccssssscccsssccccssccccscccccc"
- style="fill:#5e8019"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/shop_apparel.svg b/navit/icons/shop_apparel.svg
deleted file mode 100644
index 6ca708280..000000000
--- a/navit/icons/shop_apparel.svg
+++ /dev/null
@@ -1,463 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="shop_apparel.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="31.159939"
- inkscape:cy="41.128102"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="2.5599999"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2466"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3333"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3401"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3464"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3581"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4312"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective8860"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective8887"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4904"
- inkscape:persp3d-origin="16 : 10.666667 : 1"
- inkscape:vp_x="0 : 16 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="32 : 16 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path4460"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path4462"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path4464"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path4466"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9479"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9690"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9819"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9817"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol9807"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path9809"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path9811"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path9813"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path9815"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective9805"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9803"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9801"
- inkscape:persp3d-origin="16 : 10.666667 : 1"
- inkscape:vp_x="0 : 16 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="32 : 16 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9799"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9797"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9795"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9793"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9791"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9789"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9787"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9785"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective9783"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <defs
- id="defs48974" />
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- id="namedview4258"
- inkscape:cx="475.26707"
- inkscape:cy="250.37448"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="739"
- inkscape:window-width="1012"
- inkscape:window-x="0"
- inkscape:window-y="26"
- inkscape:zoom="0.61399264"
- pagecolor="#ffffff" />
- <inkscape:perspective
- id="perspective11483"
- inkscape:persp3d-origin="100 : 66.666667 : 1"
- inkscape:vp_x="0 : 100 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="200 : 100 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective12684"
- inkscape:persp3d-origin="180 : 66.666667 : 1"
- inkscape:vp_x="0 : 100 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="360 : 100 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-1210.2219,26.129086)">
- <rect
- height="10"
- id="rect4134"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="8"
- x="2"
- y="2" />
- </g>
- <g
- id="g9828"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-1870.5198,180.97115)">
- <rect
- height="10"
- id="rect9830"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect9832"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="8"
- x="2"
- y="2" />
- </g>
- <g
- id="g3490"
- transform="matrix(0.25128277,0,0,0.25128277,0.58996561,-3.7730198)">
- <path
- inkscape:connector-curvature="0"
- id="path2427-5"
- d="m 47.031249,27.015621 c -5.760828,1.41384 -12.303397,-1.22066 -17.532807,2.56581 -8.862283,2.82108 -18.454926,4.23279 -26.4554744,9.37169 1.229579,7.25541 3.815943,14.44684 8.6660154,20.09375 2.660512,-1.04823 5.040657,-2.29086 7.734375,-3.11328 0.03712,10.972 0.07416,21.94401 0.111328,32.916013 14.967938,2.3713 30.451456,3.34292 45.345704,-0.0527 0.505137,-10.725383 -0.647709,-23.274753 0.796875,-32.818363 3.080274,1.58354 7.904584,3.60661 9.775394,-0.7793 3.43791,-4.76159 5.04999,-10.57167 5.72266,-16.33984 -10.73547,-5.50151 -22.898507,-8.4099 -34.16407,-11.84375 z"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.8700012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <g
- transform="matrix(0.15072623,0,0,0.15072623,-2.3478156,15.014968)"
- id="g1327">
- <path
- inkscape:connector-curvature="0"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- id="path1329"
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z" />
- </g>
- <g
- transform="matrix(0.4350006,0,0,0.4350006,-21.493727,-207.30308)"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
- id="g3219">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccccccccc"
- id="path2427"
- d="m 67.613793,570.41735 c 24.468075,-13.10042 45.356037,-11.77452 66.041377,-23.06206 11.09637,2.43104 19.357,1.4592 26.99311,-0.26207 23.42862,10.78637 44.02825,12.51579 66.04138,23.5862 -1.82964,11.55946 -5.85886,21.54778 -12.57932,29.6138 -8.15361,-4.36994 -15.86829,-6.10632 -23.32413,-6.28966 l -0.52414,78.62069 c -32.1215,5.98273 -59.34716,3.39775 -85.95862,-0.26207 l -0.26207,-78.09655 c -9.370679,-0.2722 -16.500436,3.19047 -23.848277,6.28966 -7.067215,-9.63539 -10.36885,-19.80873 -12.57931,-30.13794 z" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path3199"
- d="m 71.282759,569.10701 c 2.214678,10.74851 6.083496,20.78686 13.627586,29.35172" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path3203"
- d="m 105.35172,668.16908 c 28.12874,4.60443 56.25747,5.59295 84.38621,-0.26207" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="czc"
- id="path3205"
- d="m 133.3931,547.61736 c -0.22816,2.3247 1.69237,12.73282 13.88965,13.36551 11.93593,0.61914 14.27527,-11.53603 13.88966,-13.10345" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="czc"
- id="path3207"
- d="m 128.21194,550.41871 c -0.22816,2.3247 4.57424,15.11165 18.34482,15.46206 14.03248,0.35707 19.77872,-14.68086 19.39311,-16.24828" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path3209"
- d="m 134.52279,552.33459 c 8.53814,2.23324 16.08174,1.75419 25.31809,-0.20185" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path3213"
- d="m 104.16182,558.28077 c 2.57594,9.88539 6.83803,21.48891 -0.26207,35.37931" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path3215"
- d="m 190.37521,558.48262 c -2.57594,9.88539 -6.83803,21.48891 0.26207,35.37931" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path3217"
- d="m 223.28276,568.84494 c -2.21468,10.74851 -6.0835,20.78686 -13.62759,29.35172" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/shop_computer.svg b/navit/icons/shop_computer.svg
deleted file mode 100644
index 6fd453bcb..000000000
--- a/navit/icons/shop_computer.svg
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="shop_computer.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="69.670434"
- inkscape:cy="31.54282"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="874"
- inkscape:window-maximized="1"
- inkscape:window-width="1440"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="3.6867085"
- objecttolerance="10.0"
- pagecolor="#ff27ff"
- showgrid="false" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path4460"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path4462"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path4464"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path4466"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4725"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective6330"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective6376"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective6376-2"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective6407"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-536.27327,44.693248)">
- <rect
- height="10"
- id="rect4134"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="8"
- x="2"
- y="2" />
- </g>
- <g
- id="g3442"
- transform="matrix(0.19955892,0,0,0.19955923,0.66647975,0.51724451)">
- <path
- inkscape:connector-curvature="0"
- id="rect4428-6"
- d="m 81.661695,7.469878 c -19.57948,0.846044 -39.40475,-0.131605 -59.08398,0.234242 -5.31242,-1.404655 -10.9701,2.230538 -10.9043,7.877086 0.70691,16.299242 -0.8337,32.837103 0.81836,49.033203 2.75714,2.394813 -2.43825,3.540199 -2.8339897,6.34375 -2.37407,6.741996 -6.50407,12.488517 -9.43358996,18.933594 -2.14541004,6.465709 5.48608996,10.145197 10.91210966,9.386719 18.97039,-1.0358 38.04256,0.0935 57.0664,-0.23871 10.57581,-0.40966 21.47823,0.74098 31.859385,-0.98199 5.14869,-2.56375 4.2375,-9.758468 0.55664,-13.187504 -3.557765,-6.182426 -5.160045,-13.736499 -10.593755,-18.691406 4.11895,-5.861012 0.57998,-13.401333 1.69985,-19.947181 -0.52852,-11.643709 1.52305,-23.841236 -1.09047,-35.148522 -1.92263,-2.977354 -5.65056,-3.806277 -8.97266,-3.613281 z"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:6.50163364;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <g
- transform="matrix(6.2999783,0,0,6.2999783,1.1681316,17.51386)"
- id="g3626">
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#ad30c0;stroke-width:1.03200889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccssccssc"
- id="rect4428"
- d="m 2.4483515,8.2362225 11.1032965,0 c 0.30455,0 0.412539,0.2781433 0.549729,0.550351 l 1.4905,2.9574075 c 0.13719,0.272208 -0.245178,0.550352 -0.549728,0.550352 l -14.08429756,0 c -0.30454944,0 -0.68691783,-0.278144 -0.54972816,-0.550352 L 1.8986234,8.7865735 C 2.0358129,8.5143659 2.1438021,8.2362225 2.4483515,8.2362225 Z" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#ad30c0;stroke-width:0.25799972;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path4432"
- d="m 1.4764801,9.2012489 13.0299889,0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#ad30c0;stroke-width:0.25799972;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path4434"
- d="m 1.0932552,9.8745606 13.7430548,0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#ad30c0;stroke-width:0.25799972;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path4436"
- d="m 0.79760876,10.637491 14.41115024,0" />
- </g>
- <rect
- y="11.680762"
- x="15.575519"
- width="71.984909"
- style="fill:none;stroke:#ad30c0;stroke-width:6.50163364;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- ry="3.2218187"
- rx="3.2218187"
- id="rect4426"
- height="53.09943" />
- <g
- transform="matrix(7.1081714,0,0,7.1081714,-7.5276538,13.68804)"
- id="g3658">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;stroke:none"
- sodipodi:nodetypes="ccccc"
- id="path3619"
- d="m 6.445849,0.54307086 0,4.60246824 1.679497,-1.453411 2.034775,-0.7105565 -3.714272,-2.43850074 z" />
- <rect
- y="4.6760492"
- x="-9.5682249"
- width="3.1568718"
- transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,0,0)"
- style="fill:#ad30c0;fill-opacity:1;fill-rule:nonzero;stroke:none"
- ry="0"
- rx="0"
- id="rect3649"
- height="1.1156085" />
- </g>
- <rect
- y="11.680762"
- x="15.575519"
- width="71.984909"
- style="opacity:0.1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.50163364;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- ry="3.2218187"
- rx="3.2218187"
- id="rect4426-3"
- height="53.09943" />
- <g
- transform="matrix(6.2999783,0,0,6.2999783,1.1681316,17.51386)"
- style="opacity:0.1;fill:#ffffff;fill-opacity:1"
- id="g3626-4">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;stroke:#ad30c0;stroke-width:1.03200889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccssccssc"
- id="rect4428-2"
- d="m 2.4483515,8.2362225 11.1032965,0 c 0.30455,0 0.412539,0.2781433 0.549729,0.550351 l 1.4905,2.9574075 c 0.13719,0.272208 -0.245178,0.550352 -0.549728,0.550352 l -14.08429756,0 c -0.30454944,0 -0.68691783,-0.278144 -0.54972816,-0.550352 L 1.8986234,8.7865735 C 2.0358129,8.5143659 2.1438021,8.2362225 2.4483515,8.2362225 Z" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;stroke:#ad30c0;stroke-width:0.25799972;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path4432-0"
- d="m 1.4764801,9.2012489 13.0299889,0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;stroke:#ad30c0;stroke-width:0.25799972;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path4434-5"
- d="m 1.0932552,9.8745606 13.7430548,0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ad30c0;fill-opacity:1;stroke:#ad30c0;stroke-width:0.25799972;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path4436-9"
- d="m 0.79760876,10.637491 14.41115024,0" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/shop_department.svg b/navit/icons/shop_department.svg
deleted file mode 100644
index f34b015c5..000000000
--- a/navit/icons/shop_department.svg
+++ /dev/null
@@ -1,508 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="shop_department.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="61.070604"
- inkscape:cy="74.904247"
- inkscape:guide-bbox="true"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-maximized="0"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:zoom="3.6867084"
- objecttolerance="10.0"
- pagecolor="#ffff33"
- showgrid="false"
- showguides="true" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="6.1230318e-14 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path4460"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path4462"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path4464"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path4466"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3826"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3855"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3909"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3950"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3972"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3994"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4016"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4837"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4971"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective6216"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective6764"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective6817"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <radialGradient
- cx="180.2453"
- cy="198.41902"
- fx="180.2453"
- fy="198.41902"
- gradientTransform="scale(0.79354273,1.2601716)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient874"
- r="101.58017"
- xlink:href="#linearGradient829" />
- <linearGradient
- id="linearGradient829">
- <stop
- id="stop830"
- offset="0.0000000"
- style="stop-color: rgb(255, 255, 255); stop-opacity: 0.341667;" />
- <stop
- id="stop831"
- offset="1.0000000"
- style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" />
- </linearGradient>
- <radialGradient
- cx="360.85147"
- cy="167.47372"
- fx="360.85147"
- fy="167.47372"
- gradientTransform="scale(1.007004,0.99304475)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient832"
- r="46.394722"
- xlink:href="#linearGradient829" />
- <linearGradient
- id="linearGradient6826">
- <stop
- id="stop6828"
- offset="0.0000000"
- style="stop-color: rgb(255, 255, 255); stop-opacity: 0.341667;" />
- <stop
- id="stop6830"
- offset="1.0000000"
- style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" />
- </linearGradient>
- <linearGradient
- gradientTransform="scale(0.74491357,1.3424376)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient850"
- spreadMethod="pad"
- x1="465.29425"
- x2="463.27057"
- xlink:href="#linearGradient855"
- y1="248.24467"
- y2="405.76871" />
- <linearGradient
- id="linearGradient855">
- <stop
- id="stop856"
- offset="0.0000000"
- style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" />
- <stop
- id="stop857"
- offset="1.0000000"
- style="stop-color: rgb(255, 166, 23); stop-opacity: 0.733333;" />
- </linearGradient>
- <linearGradient
- gradientTransform="scale(1.4586159,0.68558144)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient854"
- x1="157.80582"
- x2="155.40575"
- xlink:href="#linearGradient855"
- y1="120.96176"
- y2="231.6349" />
- <linearGradient
- id="linearGradient6837">
- <stop
- id="stop6839"
- offset="0.0000000"
- style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" />
- <stop
- id="stop6841"
- offset="1.0000000"
- style="stop-color: rgb(255, 166, 23); stop-opacity: 0.733333;" />
- </linearGradient>
- <inkscape:perspective
- id="perspective6928"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective10781"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective10806"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective10878"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective10919"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipoutline2">
- <path
- d="m 55.8,12 0.76,0.16 c 8.84,-2.94 28.68,8.64 24.26,18.96 -1.12,1.62 -0.93,4.5 0.42,6.31 L 56.43,62.25 c -1.39,-1.39 -4.48,-1.36 -5.9,0 L 9.5,101.63 c -3.74,3.59 -0.8,6.64 0.78,8.25 l 7.36,7.36 c 1.61,1.6 5.86,3.76 8.88,0.56 L 65.24,76.99 c 1.35,-1.42 1.36,-4.47 0,-5.87 0,0 0.01,-0.02 0,-0.02 L 90.15,46.2 c 2.63,2.37 5.113827,2.574854 7.47,1.93 4.55057,-1.245432 7.08725,3.206643 9.81,6.46 l -1.23,1.21 c -1.82,1.84 -1.65,4.94 0.39,6.98 2.04,2.04 5.15,2.21 6.97,0.39 l 8.14,-8.13 c 1.82,-1.84 1.65,-4.94 -0.4,-6.97 -1.84,-1.85 -4.51,-2.09 -6.37,-0.77 -5.58,-6.26 -2.65,-7.2 -10.01,-15.35 L 91.13,17.86 C 81.2,8.12 68.3,8.13 55.8,12 Z"
- id="outline2"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-536.27327,44.693248)">
- <rect
- height="10"
- id="rect4134"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="8"
- x="2"
- y="2" />
- </g>
- <g
- id="g3580"
- transform="matrix(0.20696688,0,0,0.20696125,0.82613317,0.26991825)">
- <path
- sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccc"
- inkscape:connector-curvature="0"
- id="path6571-7"
- d="M 30.297326,-0.67870233 C 20.887916,-1.4709923 12.347136,2.8423937 3.4812955,5.2064847 c -3.01285997,1.474741 -8.71361,2.39573 -6.46326,6.7339533 1.07393,4.852506 3.20975003,9.495353 6.47656,13.267578 2.07021,0.168239 6.36828,-4.392087 5.09457,0.343739 l 0.0714,21.378917 c 4.1738105,0.568355 8.3493305,1.156085 12.5527305,1.460938 -6.82927,2.971618 -13.6782105,6.887186 -20.58594047,8.773438 -2.92626003,4.432141 -0.39336,10.358595 -2.19531003,15.189453 8.62399,13.646409 15.8589175,18.819142 25.0999175,31.996219 5.360182,-2.77792 3.416705,-1.76827 8.140313,-3.90247 5.7835,-1.751962 10.35651,-5.816133 16.19532,-7.468749 3.6663,-1.357825 5.76877,-5.401227 4.94922,-9.025391 0.78463,-1.51623 0.9105,-3.581477 0.91796,-5.029297 2.35778,7.836145 6.13544,17.667777 14.81641,20.048828 3.44209,0.891963 6.46283,-2.44828 9.54688,-0.154297 7.441329,1.714826 12.929939,-5.061229 15.568349,-11.109375 4.74983,-7.516422 5.66875,-19.360063 -2.87304,-24.583984 4.66327,-3.327508 6.93151,-8.925677 8.30273,-14.292969 -5.7186,-2.034634 -12.94804,-1.172658 -17.730469,1.039062 -0.005,-2.464489 -5.17696,-2.797073 -2.03013,-4.788359 C 86.762555,36.170464 94.192205,27.259373 101.61759,18.344735 96.716155,13.811402 93.075075,4.2593337 84.752355,6.2548907 c -8.263379,1.178486 -17.779739,-1.876678 -25.361329,1.72461 -0.93114,1.357444 -2.75902,3.4635273 -3.67187,4.0488283 -0.10967,-2.6865923 -0.65845,-6.1084113 -2.91016,-7.6210943 -2.09951,-0.536017 -4.13947,2.53341 -5.79492,0.146484 -5.63391,-1.531225 -11.1176,-3.67972403 -16.7168,-5.23242103 z M 52.475066,21.010751 c 6.88434,8.164693 14.37961,16.514665 20.90039,24.847656 -2.92449,2.744386 -5.20463,-1.449858 -8.5918,-1.554688 -3.36536,-0.825684 -10.19056,-1.569352 -9.27539,3.880859 1.08608,5.635457 4.78008,11.270186 10.69922,12.556641 -6.74574,0.838307 -12.53985,6.813106 -13.00195,13.623047 L 33.807096,48.397469 c 3.36433,-0.692588 8.75494,-0.168044 10.41908,-2.545107 -0.31757,-6.900583 0.71663,-14.002136 -0.53822,-20.75958 0.74543,-2.252287 4.82044,0.236099 6.5957,-1.703125 0.90724,-0.556427 1.66587,-1.735429 2.19141,-2.378906 z m 25.80273,40.832031 c 3.27787,5.433808 -4.10017,1.987473 0,0 z m -3.15429,10.205078 c 1.2391,1.745054 -2.63242,0.333205 0,0 z"
- style="fill:#ffffff;stroke:#ffffff" />
- <g
- transform="matrix(0.25518838,-0.04452145,0.04452145,0.25518838,-38.70778,-12.747456)"
- id="g3338" />
- <g
- transform="matrix(0.35704279,0,0,0.35704279,18.83897,-28.663938)"
- id="g4238">
- <path
- style="fill:#ad30c0"
- inkscape:connector-curvature="0"
- id="path6571"
- d="m 209.74503,225.79765 c 0,0 -10.56174,35.79543 -41.59499,25.12539 -0.005,0.0224 3.7446,-31.18541 41.59499,-25.12539 z" />
- <path
- style="fill:#ad30c0"
- inkscape:connector-curvature="0"
- id="path6573"
- d="m 157.72652,270.07711 c 5.36274,-5.30508 12.68607,-8.50543 20.81666,-8.50543 16.40541,0 29.75463,13.29154 29.75463,29.72577 0,0.60547 0,1.12444 -0.0288,1.75875 l -0.0576,0 c -0.51898,6.42953 -2.56606,14.41598 -7.40985,24.33419 0,0 -8.33244,15.94407 -15.02146,23.2674 l -0.60547,0.57664 c -3.22916,3.25801 -7.78462,5.30508 -12.71487,5.30508 -6.05474,0 -11.41748,-2.94086 -14.67549,-7.49631 l -0.0865,0 c -3.25802,4.55545 -8.62076,7.49631 -14.67547,7.49631 -4.98794,0 -9.48572,-2.01824 -12.74374,-5.30508 l -0.60546,-0.57664 c -6.63136,-7.32333 -15.02146,-23.2674 -15.02146,-23.2674 -4.84377,-9.91821 -6.89084,-17.96232 -7.35216,-24.33419 l -0.14415,0 c -0.0865,-0.60547 -0.0865,-1.12445 -0.0865,-1.75875 0,-16.43423 13.34921,-29.72577 29.81226,-29.72577 8.10178,0 15.42511,3.20035 20.84552,8.50543" />
- <path
- style="fill:#ad30c0"
- inkscape:connector-curvature="0"
- id="path10957"
- d="m 113.68291,214.69051 c 0,0 6.27532,31.27326 33.50285,24.54444 0.003,0.0195 -0.82177,-26.83164 -33.50285,-24.54444 z" />
- <path
- style="fill:#ad30c0;fill-opacity:1;stroke:#ad30c0;stroke-width:1.3514632;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0"
- id="path10959"
- d="m 156.85947,263.78173 c 0,0 -0.30241,-32.11059 -3.62889,-40.48726 -3.32648,-8.37667 11.18908,0 11.18908,0 l -7.56019,40.48726 z" />
- </g>
- <g
- transform="matrix(0.18262598,0,0,0.18262598,-4.543203,-3.2174298)"
- id="g4015">
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:5.49104214;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0"
- id="path3470"
- d="M 56.491347,345.3433 171.48706,496.40865 296.26258,436.03365 184.37297,286.25628 56.491347,345.3433 Z" />
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:5.49104214;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0"
- id="path3474"
- d="M 42.478704,360.31161 155.50474,509.10418 152.24539,562.17255 38.177673,413.03907 42.478704,360.31161 Z" />
- <path
- style="opacity:0.75;fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:9.04777431;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path3476"
- d="m 293.27333,464.43786 -117.69458,58.1195 -0.20367,1.73897 117.59638,-58.07887 0.30188,-1.7796 z" />
- <path
- style="opacity:0.75;fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:9.04777431;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path3505"
- d="m 290.98944,496.39729 -117.69457,58.1195 -0.20368,1.73898 117.59639,-58.07887 0.30187,-1.77961 z" />
- </g>
- <g
- transform="matrix(0.08450466,0,0,0.08450466,51.329827,1.0127534)"
- id="g3753">
- <g
- transform="matrix(31.921892,0,0,31.921892,35.399153,14.948442)"
- style="fill:none;stroke:#ffffff;stroke-width:1.00000334;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g3709">
- <path
- style="stroke:#ad30c0;stroke-width:1.00000334;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0"
- id="path3700"
- d="M 8,15 0.5,6 15.5,6 Z" />
- <path
- style="stroke:#ad30c0;stroke-width:1.00000334;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0"
- id="path3702"
- d="M 0.5,6 3,3 13,3 15.5,6 Z" />
- <path
- style="stroke:#ad30c0;stroke-width:1.00000334;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0"
- id="path3706"
- d="M 4.5,3 8,15 11.5,3" />
- </g>
- <path
- style="opacity:0.1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:31.92199898;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0"
- id="path3700-3"
- d="M 290.77429,493.77682 51.360099,206.4798 l 478.828381,0 z" />
- <path
- style="opacity:0.1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:31.92199898;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0"
- id="path3702-2"
- d="m 51.360099,206.4798 79.804731,-95.76568 319.21892,0 79.80473,95.76568 z" />
- </g>
- <g
- transform="matrix(0.32046669,0,0,0.32046669,-20.956869,-172.04202)"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
- id="g3219">
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccccccccc"
- inkscape:connector-curvature="0"
- id="path2427"
- d="m 67.613793,570.41735 c 24.468075,-13.10042 45.356037,-11.77452 66.041377,-23.06206 11.09637,2.43104 19.357,1.4592 26.99311,-0.26207 23.42862,10.78637 44.02825,12.51579 66.04138,23.5862 -1.82964,11.55946 -5.85886,21.54778 -12.57932,29.6138 -8.15361,-4.36994 -15.86829,-6.10632 -23.32413,-6.28966 l -0.52414,78.62069 c -32.1215,5.98273 -59.34716,3.39775 -85.95862,-0.26207 l -0.26207,-78.09655 c -9.370679,-0.2722 -16.500436,3.19047 -23.848277,6.28966 -7.067215,-9.63539 -10.36885,-19.80873 -12.57931,-30.13794 z" />
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3199"
- d="m 71.282759,569.10701 c 2.214678,10.74851 6.083496,20.78686 13.627586,29.35172" />
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3203"
- d="m 105.35172,668.16908 c 28.12874,4.60443 56.25747,5.59295 84.38621,-0.26207" />
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="czc"
- inkscape:connector-curvature="0"
- id="path3205"
- d="m 133.3931,547.61736 c -0.22816,2.3247 1.69237,12.73282 13.88965,13.36551 11.93593,0.61914 14.27527,-11.53603 13.88966,-13.10345" />
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="czc"
- inkscape:connector-curvature="0"
- id="path3207"
- d="m 128.21194,550.41871 c -0.22816,2.3247 4.57424,15.11165 18.34482,15.46206 14.03248,0.35707 19.77872,-14.68086 19.39311,-16.24828" />
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3209"
- d="m 134.52279,552.33459 c 8.53814,2.23324 16.08174,1.75419 25.31809,-0.20185" />
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3213"
- d="m 104.16182,558.28077 c 2.57594,9.88539 6.83803,21.48891 -0.26207,35.37931" />
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3215"
- d="m 190.37521,558.48262 c -2.57594,9.88539 -6.83803,21.48891 0.26207,35.37931" />
- <path
- style="fill:#ad30c0;fill-opacity:1;fill-rule:evenodd;stroke:#ad30c0;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path3217"
- d="m 223.28276,568.84494 c -2.21468,10.74851 -6.0835,20.78686 -13.62759,29.35172" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/shop_grocery.svg b/navit/icons/shop_grocery.svg
deleted file mode 100644
index 660a71b39..000000000
--- a/navit/icons/shop_grocery.svg
+++ /dev/null
@@ -1,236 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg1875"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="shop_grocery.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs1877">
- <linearGradient
- id="linearGradient3158">
- <stop
- style="stop-color:#060606;stop-opacity:1;"
- offset="0"
- id="stop3160" />
- <stop
- id="stop3166"
- offset="1"
- style="stop-color:#fcc82d;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient3165">
- <stop
- style="stop-color:#1f1f1f;stop-opacity:1;"
- offset="0"
- id="stop3167" />
- <stop
- style="stop-color:#ed4600;stop-opacity:1;"
- offset="1"
- id="stop3169" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 73.285255 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="146.84756 : 73.285255 : 1"
- inkscape:persp3d-origin="73.423782 : 48.856837 : 1"
- id="perspective12" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3158"
- id="linearGradient2921"
- gradientUnits="userSpaceOnUse"
- x1="-825.11871"
- y1="46.53587"
- x2="-694.49249"
- y2="46.53587" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ff00ff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.1414086"
- inkscape:cx="48.225758"
- inkscape:cy="64.228299"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1094"
- inkscape:window-height="778"
- inkscape:window-x="113"
- inkscape:window-y="0"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata1880">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Symbol Shop</dc:title>
- <dc:date>07. Oct. 2006</dc:date>
- <dc:creator>
- <cc:Agent>
- <dc:title>Stefan Fussan</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>Map; Symbol; Wikivoyage; Shop</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:description>Symbol for Wikivoyage maps:Shop
-jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Hintergrund"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(836.281,-16.5055)">
- <g
- id="g8382"
- transform="matrix(0.20882075,0,0,0.20882238,-660.94107,13.448177)">
- <g
- transform="translate(-112.27017,6.6041275)"
- id="g7940">
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.12622356;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -676.2832,14.099609 c -10.91379,-0.694096 -22.42599,6.011362 -24.32618,17.38086 -1.52315,3.127226 0.84999,9.409768 -4.42742,7.764103 -6.64864,0.20385 -14.10665,-1.662132 -20.22101,1.341366 -0.74473,11.167786 4.38857,21.846503 6.08398,32.796874 3.14883,12.204786 4.28876,25.470444 9.49926,36.978838 12.26766,1.70788 25.4842,0.53356 38.11791,0.88093 10.06429,-0.39181 20.38591,0.60854 30.29104,-0.54141 5.75503,-5.85225 4.21281,-15.053879 7.11326,-22.209274 3.22434,-15.444965 8.35556,-30.778139 10.04572,-46.37931 -4.57531,-5.751064 -13.12799,-1.505565 -19.40117,-2.678992 -2.07532,-0.123574 -7.54311,1.61922 -5.89844,-2.53711 -0.78584,-10.650254 -7.87341,-22.429793 -19.73242,-22.402343 -2.36552,-0.327027 -4.75775,-0.445925 -7.14453,-0.394532 z"
- id="path7896"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.12622356;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -677.22852,21.394531 c -11.19184,-0.388234 -19.30778,12.34929 -15.29882,22.429688 3.46566,4.680124 10.05944,0.882522 14.88622,2.091435 6.63052,-0.246153 14.02181,1.248236 20.12745,-1.626592 3.08303,-9.843817 -3.43285,-23.141451 -14.77539,-22.732421 -1.64302,-0.154991 -3.29297,-0.09939 -4.93946,-0.16211 z m -12.33789,20.611328 c -3.24235,0.413425 -3.75475,-4.668795 0,0 z"
- id="path2386-4"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:4.12622356;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -656.1875,52.283203 c -1.46981,4.129485 2.74405,7.6208 6.7168,6.583985 3.45364,-0.185245 7.00406,-1.430519 10.36718,-0.01953 2.02465,-3.453647 0.6724,-9.087822 -4.12304,-8.707031 -4.20805,-0.301285 -8.52717,1.831544 -12.57422,-0.07813 -0.12891,0.740234 -0.25781,1.480469 -0.38672,2.220703 z"
- id="path3190-5"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:4.12622356;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -659.02148,63.59375 c -1.47037,4.132175 2.74515,7.618901 6.71875,6.583984 3.4519,-0.182689 7.00142,-1.434182 10.36328,-0.02148 2.02486,-3.453764 0.67216,-9.08712 -4.12305,-8.707031 -4.20674,-0.306479 -8.52295,1.835552 -12.57227,-0.07617 -0.1289,0.740234 -0.25781,1.480469 -0.38671,2.220703 z"
- id="path3192-0"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:4.12622356;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -661.32617,74.476562 c -1.47048,4.132276 2.74708,7.620624 6.7207,6.583985 3.45187,-0.183165 7.00145,-1.433883 10.36328,-0.02148 2.02465,-3.453647 0.67239,-9.087822 -4.12304,-8.707031 -4.20738,-0.306539 -8.52429,1.835563 -12.57422,-0.07617 -0.12891,0.740235 -0.25782,1.480469 -0.38672,2.220703 z"
- id="path3194-3"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:4.12622356;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -663.09766,85.572266 c -1.46966,4.12877 2.7422,7.620252 6.71485,6.583984 3.45368,-0.184736 7.00403,-1.430827 10.36719,-0.01953 2.02454,-3.453471 0.67254,-9.087949 -4.12305,-8.707031 -4.20742,-0.299945 -8.5259,1.830659 -12.57227,-0.07813 -0.1289,0.740235 -0.25781,1.480469 -0.38672,2.220704 z"
- id="path3196-6"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:4.12622356;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -676.38672,51.855469 c -1.46981,4.129484 2.74405,7.6208 6.7168,6.583984 3.45364,-0.185244 7.00406,-1.430518 10.36719,-0.01953 2.02465,-3.453647 0.67239,-9.087822 -4.12305,-8.707031 -4.20805,-0.301286 -8.52716,1.831543 -12.57422,-0.07813 -0.12891,0.740234 -0.25781,1.480468 -0.38672,2.220703 z"
- id="path3198-1"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:4.12622356;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -679.2207,63.166016 c -1.46966,4.12877 2.74219,7.620252 6.71484,6.583984 3.45368,-0.184736 7.00403,-1.430827 10.36719,-0.01953 2.02454,-3.453471 0.67254,-9.087949 -4.12305,-8.707031 -4.20742,-0.299945 -8.5259,1.830659 -12.57226,-0.07813 -0.12891,0.740235 -0.25782,1.480469 -0.38672,2.220704 z"
- id="path3200-0"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:4.12622356;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -681.52539,74.048828 c -1.46982,4.129485 2.74405,7.6208 6.7168,6.583984 3.45364,-0.185244 7.00406,-1.430518 10.36718,-0.01953 2.02465,-3.453647 0.6724,-9.087822 -4.12304,-8.707031 -4.20805,-0.301285 -8.52717,1.831544 -12.57422,-0.07813 -0.12891,0.740234 -0.25781,1.480469 -0.38672,2.220703 z"
- id="path3202-6"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:4.12622356;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -683.29688,85.146484 c -1.47047,4.132276 2.74709,7.620624 6.72071,6.583985 3.45187,-0.183165 7.00145,-1.433884 10.36328,-0.02148 2.02465,-3.453647 0.67239,-9.087822 -4.12305,-8.707031 -4.20737,-0.306539 -8.52428,1.835563 -12.57422,-0.07617 -0.1289,0.740235 -0.25781,1.480469 -0.38672,2.220703 z"
- id="path3204-3"
- inkscape:connector-curvature="0" />
- </g>
- <g
- transform="matrix(0.75197468,0,0,0.90565399,-215.60791,26.715467)"
- id="g2910">
- <path
- inkscape:connector-curvature="0"
- id="path2386"
- style="fill:url(#linearGradient2921);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -803.29162,95.74954 86.30555,0 19.99357,-70.643923 -33.98906,0.333226 c 0,0 1.38124,-12.66178 -7.6642,-22.6593734 -6.3313,-6.997747 -35.98842,-7.6642 -43.98584,0.333226 -10.66324,10.6632344 -6.3313,21.9929214 -7.6642,21.9929214 -1.33291,0 -32.32293,-0.333226 -32.32293,-0.333226 l 19.32711,70.977149 z m 62.22067,-72.096063 c 0,0 0.8948,-8.202596 -4.96505,-14.6792694 -4.10156,-4.5333031 -23.31414,-4.9650469 -28.49505,0.2158716 -6.90789,6.9078908 -3.86593,14.4831518 -4.72942,14.4831518 l 38.18952,-0.01975 z"
- sodipodi:nodetypes="ccccssscccsscc" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#0093bd;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 122.05448,66.928784 103.91125,67.16441"
- id="path3190"
- transform="translate(-836.281,-29.4945)" />
- <path
- inkscape:connector-curvature="0"
- id="path3192"
- d="m -717.99654,49.922484 -18.14323,0.235626"
- style="fill:none;stroke:#0093bd;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#0093bd;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -721.05968,61.939431 -18.14323,0.235626"
- id="path3194" />
- <path
- inkscape:connector-curvature="0"
- id="path3196"
- d="m -723.41594,74.192004 -18.14323,0.235626"
- style="fill:none;stroke:#0093bd;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path3198"
- d="m -741.08793,36.963031 -18.14323,0.235626"
- style="fill:none;stroke:#0093bd;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#0093bd;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -744.85795,49.451231 -18.14323,0.235626"
- id="path3200" />
- <path
- inkscape:connector-curvature="0"
- id="path3202"
- d="m -747.92109,61.468178 -18.14323,0.235626"
- style="fill:none;stroke:#0093bd;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#0093bd;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -750.27735,73.720751 -18.14323,0.235626"
- id="path3204" />
- </g>
- </g>
- </g>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="Symbol"
- transform="translate(0,-46)" />
-</svg>
diff --git a/navit/icons/shopping.svg b/navit/icons/shopping.svg
deleted file mode 100644
index c0fda19b8..000000000
--- a/navit/icons/shopping.svg
+++ /dev/null
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="shopping.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/shopping.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3160">
- <stop
- style="stop-color:#208420;stop-opacity:1;"
- offset="0"
- id="stop3162" />
- <stop
- style="stop-color:#15d715;stop-opacity:1;"
- offset="1"
- id="stop3164" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3160"
- id="linearGradient3166"
- x1="13.520976"
- y1="11.795792"
- x2="5.2298675"
- y2="4.3404341"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0830036,0,0,1.0830036,-8.771668,-79.951561)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#22a638"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="3.959798"
- inkscape:cx="93.933983"
- inkscape:cy="51.401504"
- inkscape:document-units="px"
- inkscape:current-layer="g3414"
- showgrid="true"
- inkscape:window-width="1432"
- inkscape:window-height="789"
- inkscape:window-x="0"
- inkscape:window-y="82"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g3414"
- transform="matrix(0.93610894,0,0,0.93610894,7.8958841,-3.3657302)">
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc"
- id="path3169-9"
- d="m 10.638032,-59.889666 -12.5687752,0.04834 2.34574727,-4.873472"
- style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.43274236;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.08300364;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m 11.0578,-77.058146 c -5.3075387,0.212819 -10.72468093,-0.101168 -16.0219702,0.184905 -1.4016148,1.194857 -0.07161,3.062337 -0.1510017,4.555794 0.4938237,2.844513 0.7335472,5.787154 1.3825173,8.571754 1.4067138,1.170337 3.18998557,-0.191237 4.7510646,-0.239055 3.9253663,-0.897197 7.9495833,-1.567729 11.81401,-2.604663 1.120226,-1.503298 0.29309,-3.537512 0.534271,-5.267835 -0.104326,-1.575813 0.433655,-3.377955 -0.354939,-4.810821 -0.589305,-0.338461 -1.287255,-0.404958 -1.953952,-0.390079 z"
- id="rect3166-5"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.22773118;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -0.51468093,-60.791379 c -2.19311727,-0.149009 -2.86799867,3.390229 -0.82908267,4.120956 1.89810067,0.995751 3.959052,-1.724684 2.5744305,-3.313667 -0.43233173,-0.499638 -1.07641933,-0.828749 -1.74534783,-0.807289 z"
- id="path3171-5"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.22773118;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -6.4481463,-79.611671 c -2.2371842,-0.07424 -2.5970758,3.663282 -0.3856286,4.021324 2.0656403,0.695879 3.5378951,-2.665546 1.6034575,-3.693071 -0.3574628,-0.235044 -0.7909263,-0.350187 -1.2178289,-0.328253 z"
- id="path3179-6"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.22773118;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m 7.7210053,-60.6744 c -2.191842,-0.14919 -2.868212,3.387422 -0.83131,4.119622 1.897716,0.998912 3.9619827,-1.722646 2.576656,-3.312333 -0.432332,-0.499638 -1.076417,-0.828749 -1.745346,-0.807289 z"
- id="path2393-2"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path2391"
- d="m -6.3764561,-77.585409 c 0,0 2.4734049,1.12888 2.3585254,2.218223"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.08300364px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc"
- id="rect3166"
- d="m -4.8520716,-76.043954 17.2545266,-0.05268 -0.044,8.75885 -15.4144439,3.279264 -1.7960847,-11.985432 z"
- style="display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient3166);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.08300364;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc"
- id="path3169"
- d="m 10.797952,-59.877317 -12.5687753,0.04835 2.34574707,-4.873473"
- style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.08300364px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
- <ellipse
- ry="1.2353702"
- rx="1.2357539"
- cy="-58.633984"
- cx="-0.57045335"
- id="path3171"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262626;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3175"
- d="m 10.722396,-72.91376 -13.2523922,0"
- style="opacity:0.5;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.08300364px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path3177"
- d="m 8.6427143,-68.581327 -9.54844633,0"
- style="opacity:0.5;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.08300364px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <ellipse
- ry="1.1291027"
- rx="1.1294535"
- cy="-77.562889"
- cx="-6.442029"
- id="path3179"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262626;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc"
- id="path2389"
- d="m 10.435101,-70.823459 -12.1893862,0"
- style="opacity:0.5;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.08300364px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <ellipse
- ry="1.2353702"
- rx="1.2357539"
- cy="-58.51709"
- cx="7.6651673"
- id="path2393"
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262626;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/sikh.svg b/navit/icons/sikh.svg
deleted file mode 100644
index f80093f61..000000000
--- a/navit/icons/sikh.svg
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="sikh.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="6.7203054"
- inkscape:cy="6.7914959"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-width="1024"
- inkscape:window-x="0"
- inkscape:window-y="20"
- inkscape:zoom="14.746834"
- objecttolerance="10.0"
- pagecolor="#ffffff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2466"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3333"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3401"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3464"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3581"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4312"
- inkscape:persp3d-origin="225 : 150 : 1"
- inkscape:vp_x="0 : 225 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="450 : 225 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="g1327"
- transform="matrix(0.0428488,0,0,0.0428488,-0.6103005,-1.0167421)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <path
- d="M 10.890585,0.4682366 C 10.400154,1.2327904 9.5346054,1.6805884 9.058799,2.4593668 9.0616735,2.880966 9.0582308,3.348632 8.8298256,3.7100161 8.3965234,4.016248 7.9003262,4.2586967 7.5553236,4.6733638 6.7716988,5.4090957 6.0719126,6.3400702 5.9991271,7.4472347 5.876274,8.4532105 5.9766463,9.5143665 6.5144302,10.388814 c 0.5503405,0.888482 1.2318733,1.747555 2.1855103,2.221701 0.3592178,0.26314 0.461622,0.757459 0.3227043,1.171647 -0.05888,0.200783 0.02909,0.426781 0.2640082,0.445098 0.5236109,0.217953 0.994557,0.600246 1.293279,1.089424 0.162122,0.296735 0.260147,0.747621 -0.01607,1.005608 -0.242178,0.17611 -0.498293,-0.107149 -0.7172034,-0.189025 C 9.1694156,15.69353 8.5525117,15.179135 7.9214305,14.677028 6.6238193,13.604138 5.1774155,12.188139 4.6761702,10.544398 4.1726094,9.1140151 4.0316466,7.2706258 4.7484775,5.8685243 5.0718283,5.1945417 5.6141187,4.6798876 6.1142831,4.1344871 6.2038248,4.0016665 6.024793,3.9085273 5.9147681,3.9845163 5.2963274,4.1718383 4.7950987,4.6123476 4.3298615,5.040508 3.1818567,6.1831775 2.545413,8.0190793 2.6502253,9.631184 c 0.056054,2.263091 1.3025376,4.481015 2.660205,6.250847 0.531649,0.750363 1.1174248,1.513222 1.351514,2.412645 -0.051554,0.1721 0.1457667,0.246105 0.2517366,0.117835 0.749979,-0.388249 1.2137938,-1.176231 1.9817575,-1.529167 0.3385906,-0.09456 0.6369681,0.116917 0.9091973,0.279856 0.1318216,0.05139 0.4563233,0.173625 0.2865513,0.356181 -0.3382047,0.208614 -0.7376688,0.3111 -1.055884,0.558197 -0.6048992,0.402816 -1.1571163,1.046039 -1.1575242,1.806521 0.03057,0.402544 0.4831015,0.72135 0.8623324,0.534271 0.4447902,-0.157708 0.6863947,-0.697765 0.5222199,-1.136833 0.010636,-0.447803 0.4885088,-0.660061 0.8409069,-0.819483 0.17894,-0.122469 0.530815,-0.188127 0.591849,0.09507 0.132612,0.454337 -0.01266,0.931638 -0.05758,1.383212 -0.06456,0.330346 -0.284397,0.602114 -0.39769,0.902504 -0.003,0.390298 0.323295,0.689915 0.609255,0.90652 0.286878,0.232068 0.18271,-0.153641 0.198176,-0.341452 0,-7.05934 0,-14.1186789 0,-21.17801877 -0.05222,0.0794496 -0.104443,0.15889763 -0.156665,0.23834645 z M 9.3065186,4.9352241 C 9.6814107,4.9656485 9.7753716,5.4247562 9.8390154,5.725337 10.193967,7.1096187 10.570907,8.3809846 10.239582,9.8084683 10.09616,10.349701 9.9945486,10.737719 9.7591088,11.246049 9.6797828,11.45558 9.4707096,11.594677 9.2476014,11.507159 8.7108919,11.277854 8.4717323,10.917837 8.0805843,10.499493 7.3041011,9.6370135 6.8944515,8.4771165 7.2161581,7.3307249 7.427679,6.3640586 7.9522454,5.7675962 8.7596471,5.2439047 8.9423149,5.1517343 9.0963464,4.9531942 9.3065186,4.9352241 z"
- id="path7034"
- sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccc"
- style="fill:#5e8019"
- inkscape:connector-curvature="0" />
- <path
- d="M 12.675505,2.2290545 C 12.57154,2.385432 12.46903,2.5444694 12.326019,2.6655767 c -0.463806,0.5312684 -1.090315,0.9219695 -1.464893,1.5291665 0.02517,0.2730736 -0.0499,1.1598905 -0.289228,1.3162614 -0.373686,0.2788437 -0.822503,0.4650385 -1.1274601,0.8261787 -0.901004,0.8652296 -1.5811382,1.6768336 -1.6536957,2.9471934 -0.1236679,1.2609303 0.050381,2.1737813 0.8020761,3.2216943 0.4782729,0.677667 1.0389627,1.325707 1.7849207,1.695205 0.306961,0.160112 0.576514,0.644327 0.49276,1.016321 -0.0034,0.178067 -0.120974,0.410966 -0.02277,0.566407 0.28532,0.124045 0.585783,0.229098 0.818144,0.449912 0.475406,0.349346 0.963214,0.893564 0.850281,1.533185 -0.02205,0.285399 -0.336079,0.537699 -0.605239,0.35484 C 11.254896,17.843271 10.73242,17.331516 10.155457,16.922176 8.6987238,15.781752 7.2852414,14.43221 6.6632818,12.64399 6.1265825,11.204848 5.814228,9.5400174 6.4316304,8.0765766 6.7378262,7.3203624 7.2878034,6.7036267 7.8630478,6.1457024 7.9000303,6.1019827 8.0057332,5.9797327 7.8683866,6.0265295 7.3825985,6.1408952 6.9778653,6.4840207 6.5882789,6.7830787 5.3389212,7.8418625 4.6582197,9.4825968 4.7042705,11.113485 c -0.028073,2.245157 0.8825475,4.400876 2.2026963,6.171566 0.5950727,0.83909 1.2576005,1.670581 1.5519294,2.668677 0.015819,0.04894 -0.035584,0.224512 0.062939,0.132563 0.7141726,-0.359681 1.1825658,-1.053239 1.8491938,-1.470248 0.308589,-0.217271 0.706889,-0.124097 1.00159,0.07097 0.167623,0.15237 0.451369,0.168499 0.562391,0.372249 0.06155,0.29337 -0.327992,0.364031 -0.518202,0.460625 -0.79108,0.355616 -1.5823705,0.98613 -1.7326989,1.885346 -0.078866,0.380385 0.2652328,0.799366 0.6601389,0.670852 0.428938,-0.102956 0.718728,-0.606166 0.549001,-1.020337 -0.03868,-0.478407 0.424993,-0.770648 0.816804,-0.913215 0.212042,-0.146127 0.598867,-0.27649 0.748516,0.01875 0.188362,0.423809 0.03422,0.900771 0.008,1.343042 -0.05008,0.372785 -0.232901,0.70947 -0.424471,1.020337 -0.03669,0.342656 0.26887,0.601693 0.487406,0.819483 0.04678,0.03136 0.09615,0.05659 0.145954,0.07767 l 0,-21.1927491 z m -1.667087,4.1616897 c 0.414341,0.00804 0.552735,0.4816249 0.617291,0.8154662 0.460869,1.860143 0.816539,3.0873746 0.250398,4.9664436 -0.131054,0.435301 -0.198459,0.946498 -0.531592,1.272073 C 10.94822,13.63551 10.564133,13.280388 10.271956,13.051053 8.9345395,11.944295 8.1913948,10.44617 8.7548399,8.7527844 9.1124933,7.6433402 9.9014701,7.0340888 10.882551,6.4161856 c 0.04014,-0.015952 0.08285,-0.020937 0.125867,-0.02544 z"
- id="path2439"
- style="opacity:0.25;fill:#ffffff;fill-opacity:0"
- inkscape:connector-curvature="0" />
- <path
- d="m 12.671973,2.2290545 c 0.103965,0.1563775 0.206475,0.3154149 0.349486,0.4365222 0.463806,0.5312684 1.090315,0.9219695 1.464892,1.5291665 -0.02517,0.2730736 0.0499,1.1598905 0.289229,1.3162614 0.373686,0.2788437 0.822502,0.4650385 1.12746,0.8261787 0.901004,0.8652296 1.581139,1.6768336 1.653695,2.9471934 0.123669,1.2609303 -0.05038,2.1737813 -0.802075,3.2216943 -0.478273,0.677667 -1.038963,1.325707 -1.78492,1.695205 -0.306964,0.160112 -0.576514,0.644327 -0.492761,1.016321 0.0034,0.178067 0.120974,0.410966 0.02277,0.566407 -0.28532,0.124045 -0.585784,0.229098 -0.818145,0.449912 -0.475406,0.349346 -0.963214,0.893564 -0.85028,1.533185 0.02205,0.285399 0.336078,0.537699 0.605239,0.35484 0.656021,-0.27867 1.178497,-0.790425 1.755461,-1.199765 1.456735,-1.140424 2.870218,-2.489966 3.492177,-4.278186 0.5367,-1.439142 0.849055,-3.1039726 0.231653,-4.5674134 -0.306196,-0.7562142 -0.856174,-1.3729499 -1.431419,-1.9308742 -0.03698,-0.04372 -0.142685,-0.1659697 -0.0054,-0.1191729 0.485789,0.1143657 0.890522,0.4574912 1.280108,0.7565492 1.249358,1.0587838 1.93006,2.6995181 1.884008,4.3304063 0.02807,2.245157 -0.882547,4.400876 -2.202695,6.171566 -0.595073,0.83909 -1.2576,1.670581 -1.55193,2.668677 -0.01582,0.04894 0.03559,0.224512 -0.06294,0.132563 -0.714173,-0.359681 -1.182566,-1.053239 -1.849193,-1.470248 -0.308589,-0.217271 -0.70689,-0.124097 -1.001591,0.07097 -0.167623,0.15237 -0.451369,0.168499 -0.56239,0.372249 -0.06155,0.29337 0.32799,0.364031 0.518202,0.460625 0.791078,0.355616 1.58237,0.98613 1.732699,1.885346 0.07886,0.380385 -0.265234,0.799366 -0.660139,0.670852 -0.42894,-0.102956 -0.718729,-0.606166 -0.549001,-1.020337 0.03869,-0.478407 -0.424994,-0.770648 -0.816805,-0.913215 -0.212043,-0.146127 -0.598867,-0.27649 -0.748515,0.01875 -0.188364,0.423809 -0.03422,0.900771 -0.008,1.343042 0.05008,0.372785 0.232903,0.70947 0.424472,1.020337 0.03669,0.342656 -0.26887,0.601693 -0.487406,0.819483 -0.04678,0.03136 -0.09616,0.05659 -0.145954,0.07767 l 0,-21.1927491 z m 1.667085,4.1616897 c -0.414339,0.00804 -0.552734,0.4816249 -0.61729,0.8154662 -0.460868,1.860143 -0.816538,3.0873746 -0.250397,4.9664436 0.131054,0.435301 0.198458,0.946498 0.531593,1.272073 0.396294,0.190783 0.78038,-0.164339 1.072558,-0.393674 1.337416,-1.106758 2.080561,-2.604883 1.517116,-4.2982686 -0.357654,-1.1094442 -1.14663,-1.7186956 -2.127711,-2.3365988 -0.04014,-0.015952 -0.08285,-0.020937 -0.125869,-0.02544 z"
- id="path2441"
- style="opacity:0.25;fill:#ffffff;fill-opacity:0"
- inkscape:connector-curvature="0" />
- <path
- d="m 11.11456,0.4682366 c 0.490432,0.7645538 1.35598,1.2123518 1.831787,1.9911302 -0.0029,0.4215992 5.68e-4,0.8892652 0.228973,1.2506493 0.433302,0.3062319 0.9295,0.5486806 1.274502,0.9633477 0.783624,0.7357319 1.483411,1.6667064 1.556197,2.7738709 0.122853,1.0059758 0.02248,2.0671318 -0.515303,2.9415793 -0.55034,0.888482 -1.231875,1.747555 -2.18551,2.221701 -0.35922,0.26314 -0.461622,0.757459 -0.322706,1.171647 0.05888,0.200783 -0.02909,0.426781 -0.264007,0.445098 -0.523612,0.217953 -0.994557,0.600246 -1.293278,1.089424 -0.162124,0.296735 -0.26015,0.747621 0.01607,1.005608 0.242177,0.17611 0.498292,-0.107149 0.717204,-0.189025 0.677243,-0.439737 1.294148,-0.954132 1.925228,-1.456239 1.297612,-1.07289 2.744016,-2.488889 3.245261,-4.13263 0.503561,-1.4303829 0.644523,-3.2737722 -0.07231,-4.6758737 -0.32335,-0.6739826 -0.865641,-1.1886367 -1.365805,-1.7340372 -0.08954,-0.1328206 0.08949,-0.2259598 0.199515,-0.1499708 0.618442,0.187322 1.11967,0.6278313 1.584907,1.0559917 1.148005,1.1426695 1.784448,2.9785713 1.679636,4.590676 -0.05606,2.263091 -1.302537,4.481015 -2.660205,6.250847 -0.531648,0.750363 -1.117425,1.513222 -1.351513,2.412645 0.05155,0.1721 -0.145768,0.246105 -0.251738,0.117835 -0.749979,-0.388249 -1.213793,-1.176231 -1.981756,-1.529167 -0.338591,-0.09456 -0.63697,0.116917 -0.909199,0.279856 -0.131821,0.05139 -0.456323,0.173625 -0.286551,0.356181 0.338205,0.208614 0.73767,0.3111 1.055884,0.558197 0.604899,0.402816 1.157118,1.046039 1.157525,1.806521 -0.03057,0.402544 -0.483102,0.72135 -0.862333,0.534271 -0.444791,-0.157708 -0.686395,-0.697765 -0.522219,-1.136833 -0.01063,-0.447803 -0.488509,-0.660061 -0.840909,-0.819483 -0.17894,-0.122469 -0.530815,-0.188127 -0.591848,0.09507 -0.132611,0.454337 0.01266,0.931638 0.05758,1.383212 0.06456,0.330346 0.284398,0.602114 0.397691,0.902504 0.003,0.390298 -0.323297,0.689915 -0.609257,0.90652 -0.286876,0.232068 -0.18271,-0.153641 -0.198175,-0.341452 0,-7.05934 0,-14.1186789 0,-21.17801877 0.05222,0.0794496 0.104444,0.15889763 0.156665,0.23834645 z m 1.584067,4.4669875 c -0.374891,0.030424 -0.468853,0.4895321 -0.532497,0.7901129 -0.354952,1.3842817 -0.731891,2.6556476 -0.400567,4.0831313 0.143421,0.5412327 0.245034,0.9292507 0.480473,1.4375807 0.07934,0.209531 0.2884,0.348628 0.511509,0.26111 0.536708,-0.229305 0.775868,-0.589322 1.167016,-1.007666 C 14.701044,9.6370135 15.110695,8.4771165 14.788987,7.3307249 14.577467,6.3640586 14.0529,5.7675962 13.245499,5.2439047 13.062831,5.1517343 12.908799,4.9531942 12.698627,4.9352241 z"
- id="path3778"
- sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccc"
- style="fill:#5e8019"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/skiing.svg b/navit/icons/skiing.svg
deleted file mode 100644
index 86ef5577a..000000000
--- a/navit/icons/skiing.svg
+++ /dev/null
@@ -1,337 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- width="22"
- height="22"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- viewBox="0 0 499.99999 500.00001"
- id="svg2"
- style="overflow:visible"
- inkscape:version="0.92.1 r15371"
- sodipodi:docname="skiing.svg">
- <metadata
- id="metadata56">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Hotel is near a ski area</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1366"
- inkscape:window-height="722"
- id="namedview54"
- showgrid="false"
- inkscape:zoom="15.931818"
- inkscape:cx="11"
- inkscape:cy="11"
- inkscape:window-x="-4"
- inkscape:window-y="-4"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- inkscape:pagecheckerboard="true" />
- <title
- id="title3818">Hotel is near a ski area</title>
- <defs
- id="defs111">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 250 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="500 : 250 : 1"
- inkscape:persp3d-origin="250 : 166.66667 : 1"
- id="perspective58" />
- <foreignObject
- height="1"
- requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
- width="1"
- x="0"
- y="0"
- id="foreignObject8">
- <i:pgfRef
- xlink:href="#adobe_illustrator_pgf" />
- </foreignObject>
- <linearGradient
- x1="424.36719"
- y1="227.73579"
- x2="455.14841"
- y2="227.73579"
- id="linearGradient2972"
- xlink:href="#XMLID_1_"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="30.851601"
- y1="227.37601"
- x2="0.0713"
- y2="227.37601"
- id="linearGradient2974"
- xlink:href="#XMLID_2_"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="227.73579"
- y1="30.8521"
- x2="227.73579"
- y2="0.071800001"
- id="linearGradient2976"
- xlink:href="#XMLID_3_"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="227.37601"
- y1="423.89941"
- x2="227.37601"
- y2="454.67969"
- id="linearGradient2978"
- xlink:href="#XMLID_4_"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- gradientUnits="userSpaceOnUse"
- id="XMLID_1_"
- y2="227.73579"
- x2="455.14841"
- y1="227.73579"
- x1="424.36719">
- <stop
- offset="0"
- style="stop-color:#e5e5e5;stop-opacity:1"
- id="stop16" />
- <stop
- offset="0.1696"
- style="stop-color:#e2e2e2;stop-opacity:1"
- id="stop18" />
- <stop
- offset="0.30590001"
- style="stop-color:#d8d8d8;stop-opacity:1"
- id="stop20" />
- <stop
- offset="0.43059999"
- style="stop-color:#c7c7c7;stop-opacity:1"
- id="stop22" />
- <stop
- offset="0.54839998"
- style="stop-color:#b0b0b0;stop-opacity:1"
- id="stop24" />
- <stop
- offset="0.66140002"
- style="stop-color:#919191;stop-opacity:1"
- id="stop26" />
- <stop
- offset="0.77069998"
- style="stop-color:#6b6b6b;stop-opacity:1"
- id="stop28" />
- <stop
- offset="0.87720001"
- style="stop-color:#3e3e3e;stop-opacity:1"
- id="stop30" />
- <stop
- offset="0.9788"
- style="stop-color:#0c0c0c;stop-opacity:1"
- id="stop32" />
- <stop
- offset="1"
- style="stop-color:#000000;stop-opacity:1"
- id="stop34" />
- <a:midPointStop
- offset="0"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.75"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="1"
- style="stop-color:#000000" />
- </linearGradient>
- <linearGradient
- gradientUnits="userSpaceOnUse"
- id="XMLID_2_"
- y2="227.37601"
- x2="0.0713"
- y1="227.37601"
- x1="30.851601">
- <stop
- offset="0"
- style="stop-color:#e5e5e5;stop-opacity:1"
- id="stop39" />
- <stop
- offset="0.26750001"
- style="stop-color:#e2e2e2;stop-opacity:1"
- id="stop41" />
- <stop
- offset="0.4824"
- style="stop-color:#d8d8d8;stop-opacity:1"
- id="stop43" />
- <stop
- offset="0.67900002"
- style="stop-color:#c7c7c7;stop-opacity:1"
- id="stop45" />
- <stop
- offset="0.8635"
- style="stop-color:#b0b0b0;stop-opacity:1"
- id="stop47" />
- <stop
- offset="1"
- style="stop-color:#999999;stop-opacity:1"
- id="stop49" />
- <a:midPointStop
- offset="0"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.75"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="1"
- style="stop-color:#999999" />
- </linearGradient>
- <linearGradient
- gradientUnits="userSpaceOnUse"
- id="XMLID_3_"
- y2="0.071800001"
- x2="227.73579"
- y1="30.8521"
- x1="227.73579">
- <stop
- offset="0"
- style="stop-color:#e5e5e5;stop-opacity:1"
- id="stop54" />
- <stop
- offset="0.26750001"
- style="stop-color:#e2e2e2;stop-opacity:1"
- id="stop56" />
- <stop
- offset="0.4824"
- style="stop-color:#d8d8d8;stop-opacity:1"
- id="stop58" />
- <stop
- offset="0.67900002"
- style="stop-color:#c7c7c7;stop-opacity:1"
- id="stop60" />
- <stop
- offset="0.8635"
- style="stop-color:#b0b0b0;stop-opacity:1"
- id="stop62" />
- <stop
- offset="1"
- style="stop-color:#999999;stop-opacity:1"
- id="stop64" />
- <a:midPointStop
- offset="0"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.75"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="1"
- style="stop-color:#999999" />
- </linearGradient>
- <linearGradient
- gradientUnits="userSpaceOnUse"
- id="XMLID_4_"
- y2="454.67969"
- x2="227.37601"
- y1="423.89941"
- x1="227.37601">
- <stop
- offset="0"
- style="stop-color:#e5e5e5;stop-opacity:1"
- id="stop69" />
- <stop
- offset="0.1696"
- style="stop-color:#e2e2e2;stop-opacity:1"
- id="stop71" />
- <stop
- offset="0.30590001"
- style="stop-color:#d8d8d8;stop-opacity:1"
- id="stop73" />
- <stop
- offset="0.43059999"
- style="stop-color:#c7c7c7;stop-opacity:1"
- id="stop75" />
- <stop
- offset="0.54839998"
- style="stop-color:#b0b0b0;stop-opacity:1"
- id="stop77" />
- <stop
- offset="0.66140002"
- style="stop-color:#919191;stop-opacity:1"
- id="stop79" />
- <stop
- offset="0.77069998"
- style="stop-color:#6b6b6b;stop-opacity:1"
- id="stop81" />
- <stop
- offset="0.87720001"
- style="stop-color:#3e3e3e;stop-opacity:1"
- id="stop83" />
- <stop
- offset="0.9788"
- style="stop-color:#0c0c0c;stop-opacity:1"
- id="stop85" />
- <stop
- offset="1"
- style="stop-color:#000000;stop-opacity:1"
- id="stop87" />
- <a:midPointStop
- offset="0"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="0.75"
- style="stop-color:#E5E5E5" />
- <a:midPointStop
- offset="1"
- style="stop-color:#000000" />
- </linearGradient>
- </defs>
- <g
- style="overflow:visible;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:43.97995705;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g7431-4">
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccc"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:43.97995705;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path99-5"
- d="m 190.63186,120.0023 c -7.55158,3.56206 -13.96329,8.16898 -19.61509,14.01075 -5.6993,5.74678 -11.16113,10.4012 -14.00946,20.7549 -2.99345,10.30621 -3.99083,23.74703 -3.37341,40.89239 H 83.057577 c 2.422202,8.97637 6.649182,15.81552 12.870918,21.27733 6.128065,5.31934 13.725815,8.92889 24.079545,10.63867 10.25873,1.6623 26.50174,1.47232 36.99927,-1.13985 10.44871,-2.84965 18.66388,-8.07399 25.17058,-15.67304 l 33.05594,29.11254 c -13.677,13.77459 -23.50829,25.36314 -30.20629,35.85801 -6.79034,10.26004 -11.87354,15.43689 -9.545,25.79059 2.37339,10.16241 9.35635,18.99763 23.50829,35.28809 14.05827,16.38545 33.67336,36.42662 59.93895,61.59847 -33.3409,15.10443 -61.59993,31.74886 -86.25072,41.29516 -24.60066,9.35633 -43.7883,17.90262 -60.50624,19.61373 -16.907924,1.37865 -30.823714,-8.83258 -39.753936,-10.11623 -8.976397,-1.28366 -13.392034,-0.95121 -13.440848,2.80083 0.04749,3.75466 2.517191,15.96064 13.440848,19.04775 10.876163,2.89582 13.679638,10.02125 51.246206,-1.7111 37.85416,-12.01468 114.91302,-47.6956 172.59378,-73.92226 53.7634,-25.04577 116.61518,-58.70447 162.11459,-72.66772 l -11.20863,-5.03437 c -8.07268,2.28103 -32.43912,13.7446 -61.26892,27.47124 -30.24685,12.45076 -47.03477,22.01938 -82.13164,32.51688 -7.88535,-11.39989 -14.91449,-19.94882 -21.2787,-26.3592 -6.5067,-6.41038 -11.87354,-10.2574 -16.81294,-11.73235 -13.77199,-15.38808 -22.13096,-26.4067 -25.78933,-34.14691 -3.60823,-7.64786 2.32854,-8.16766 4.46445,-11.25741 1.94858,-3.0383 1.51982,-1.37601 7.88535,-7.26659 6.4104,-6.36421 23.08217,-20.70609 30.25247,-29.11122 6.93414,-8.40777 12.06483,-12.39595 11.73237,-20.1863 -0.42744,-7.88401 -5.03438,-16.48043 -14.01209,-26.3117 h 76.75056 l 5.03438,21.27733 5.60432,-19.61504 35.85809,-3.89451 -33.05462,-5.03438 -9.50015,-20.18497 -3.94202,18.47519 -87.95787,-0.56993 c -16.19419,-19.37758 -30.48993,-35.62054 -43.64713,-49.29883 -13.15589,-13.77328 -24.6033,-24.41195 -34.71955,-32.48594 z" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:43.97995705;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path101-2"
- d="m 138.30912,66.281244 c 19.6362,0 35.57313,15.936896 35.57313,35.573046 0,19.63616 -15.93693,35.57305 -35.57313,35.57305 -19.6362,0 -35.57313,-15.93689 -35.57313,-35.57305 0,-19.63615 15.93825,-35.573046 35.57313,-35.573046" />
- </g>
- <g
- id="g7431">
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccc"
- style="fill:#000000;fill-rule:evenodd;stroke-width:1.31928086"
- id="path99"
- d="m 190.63186,120.0023 c -7.55158,3.56206 -13.96329,8.16898 -19.61509,14.01075 -5.6993,5.74678 -11.16113,10.4012 -14.00946,20.7549 -2.99345,10.30621 -3.99083,23.74703 -3.37341,40.89239 H 83.057577 c 2.422202,8.97637 6.649182,15.81552 12.870918,21.27733 6.128065,5.31934 13.725815,8.92889 24.079545,10.63867 10.25873,1.6623 26.50174,1.47232 36.99927,-1.13985 10.44871,-2.84965 18.66388,-8.07399 25.17058,-15.67304 l 33.05594,29.11254 c -13.677,13.77459 -23.50829,25.36314 -30.20629,35.85801 -6.79034,10.26004 -11.87354,15.43689 -9.545,25.79059 2.37339,10.16241 9.35635,18.99763 23.50829,35.28809 14.05827,16.38545 33.67336,36.42662 59.93895,61.59847 -33.3409,15.10443 -61.59993,31.74886 -86.25072,41.29516 -24.60066,9.35633 -43.7883,17.90262 -60.50624,19.61373 -16.907924,1.37865 -30.823714,-8.83258 -39.753936,-10.11623 -8.976397,-1.28366 -13.392034,-0.95121 -13.440848,2.80083 0.04749,3.75466 2.517191,15.96064 13.440848,19.04775 10.876163,2.89582 13.679638,10.02125 51.246206,-1.7111 37.85416,-12.01468 114.91302,-47.6956 172.59378,-73.92226 53.7634,-25.04577 116.61518,-58.70447 162.11459,-72.66772 l -11.20863,-5.03437 c -8.07268,2.28103 -32.43912,13.7446 -61.26892,27.47124 -30.24685,12.45076 -47.03477,22.01938 -82.13164,32.51688 -7.88535,-11.39989 -14.91449,-19.94882 -21.2787,-26.3592 -6.5067,-6.41038 -11.87354,-10.2574 -16.81294,-11.73235 -13.77199,-15.38808 -22.13096,-26.4067 -25.78933,-34.14691 -3.60823,-7.64786 2.32854,-8.16766 4.46445,-11.25741 1.94858,-3.0383 1.51982,-1.37601 7.88535,-7.26659 6.4104,-6.36421 23.08217,-20.70609 30.25247,-29.11122 6.93414,-8.40777 12.06483,-12.39595 11.73237,-20.1863 -0.42744,-7.88401 -5.03438,-16.48043 -14.01209,-26.3117 h 76.75056 l 5.03438,21.27733 5.60432,-19.61504 35.85809,-3.89451 -33.05462,-5.03438 -9.50015,-20.18497 -3.94202,18.47519 -87.95787,-0.56993 c -16.19419,-19.37758 -30.48993,-35.62054 -43.64713,-49.29883 -13.15589,-13.77328 -24.6033,-24.41195 -34.71955,-32.48594 z" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#000000;fill-rule:evenodd;stroke-width:1.31928086"
- id="path101"
- d="m 138.30912,66.281244 c 19.6362,0 35.57313,15.936896 35.57313,35.573046 0,19.63616 -15.93693,35.57305 -35.57313,35.57305 -19.6362,0 -35.57313,-15.93689 -35.57313,-35.57305 0,-19.63615 15.93825,-35.573046 35.57313,-35.573046" />
- </g>
-</svg>
diff --git a/navit/icons/sport.svg b/navit/icons/sport.svg
deleted file mode 100644
index 6332de752..000000000
--- a/navit/icons/sport.svg
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg:svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:version="0.91 r13725"
- sodipodi:docname="sport.svg"
- version="1.0"
- width="22">
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1"
- gridtolerance="10"
- guidetolerance="10"
- id="namedview12"
- inkscape:current-layer="svg2"
- inkscape:cx="1.7318645"
- inkscape:cy="30.589243"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="874"
- inkscape:window-maximized="1"
- inkscape:window-width="1440"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="3.613793"
- objecttolerance="10"
- pagecolor="#54ffff"
- showgrid="false" />
- <svg:metadata
- id="metadata2975">
- <RDF>
- <Work
- about="">
- <format>image/svg+xml</format>
- <type
- resource="http://purl.org/dc/dcmitype/StillImage" />
- <license
- resource="http://web.resource.org/cc/PublicDomain" />
- <language>en</language>
- </Work>
- </RDF>
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </svg:metadata>
- <svg:defs
- id="defs4" />
- <svg:g
- id="g4180"
- transform="matrix(0.21479959,0,0,0.21479959,0.36045122,0.2190279)">
- <svg:circle
- style="fill:none;stroke:#ffffff;stroke-width:12;stroke-miterlimit:4;stroke-dasharray:none"
- r="45.210526"
- id="circle2046-6"
- cy="50.190842"
- cx="49.532444" />
- <svg:g
- transform="translate(182.35688,-75.543895)"
- style="fill:#ffffff;stroke:#ffffff"
- id="g3376">
- <svg:path
- style="fill:#ffffff;stroke:#ffffff"
- d="m -150.41992,88.931641 c -7.24101,-0.163712 -10.41337,10.184483 -4.8418,14.499999 4.03761,5.75094 10.38227,11.31439 8.49414,19.10547 1.34345,12.43423 -8.27336,22.80014 -8.51562,34.86719 1.56736,7.54467 14.14952,7.76115 15.41495,-0.14079 2.36049,-5.69666 4.1509,-13.36333 6.84872,-17.89437 6.16578,5.35842 9.50921,13.7559 16.73633,17.86914 6.50095,3.32357 13.74121,-5.11433 9.78125,-11.16016 -4.78506,-7.54734 -12.52809,-12.87528 -17.20899,-20.55468 -3.9374,-6.95799 4.96442,-12.56226 9.38867,-16.52344 4.30704,-3.30185 9.56638,-9.746174 4.83008,-14.863281 -3.64669,-4.502773 -10.63601,-3.429697 -13.70312,1.15625 -3.7076,2.758614 -6.30183,8.704531 -11.21094,9.017581 -5.87747,-3.7493 -6.87043,-13.153157 -14.21289,-15.230472 -0.58971,-0.12888 -1.19796,-0.17397 -1.80078,-0.148437 z"
- id="path2044-3"
- inkscape:connector-curvature="0" />
- <svg:path
- style="fill:#ffffff;stroke:#ffffff"
- d="m -133.73633,88.488281 c -9.57475,0.111068 -13.18964,14.974959 -4.6289,19.374999 7.76045,5.62194 19.50427,-4.32455 15.14453,-12.888671 -1.62381,-4.163624 -6.08918,-6.826084 -10.51563,-6.486328 z"
- id="circle2048-7"
- inkscape:connector-curvature="0" />
- </svg:g>
- <svg:path
- style="fill:#39ac39"
- inkscape:connector-curvature="0"
- id="path2044"
- d="M 71.543949,72.065737 55.14311,53.080262 c -0.188198,-0.29938 -2.21722,-3.582177 -2.21722,-6.068186 0,-2.581687 2.149194,-7.392579 2.190859,-7.485493 0.03638,-0.0315 0.07431,-0.06047 0.109671,-0.09384 l 13.816382,-13.20175 c 1.469481,-1.394083 1.530687,-3.715465 0.136601,-5.184946 l -0.28039,-0.295338 c -1.39407,-1.469461 -3.715451,-1.53085 -5.184933,-0.136776 L 50.742033,33.008764 c -0.250887,-0.0645 -0.506784,-0.09902 -0.765803,-0.09902 l -5.196559,0 -10.147933,-13.977695 c -1.171012,-1.65271 -3.460131,-2.043539 -5.112862,-0.872708 l -0.332205,0.235402 c -1.652915,1.170844 -2.043561,3.459964 -0.872731,5.11288 l 10.601807,14.602651 0,17.375328 -8.346609,23.324609 c -0.682477,1.906954 0.310453,4.00637 2.217406,4.68885 l 0.383455,0.137179 c 1.907139,0.682481 4.006373,-0.310604 4.688853,-2.217407 l 8.120778,-22.693561 3.722652,0 15.982722,18.501545 c 1.324025,1.532716 3.640247,1.70177 5.172963,0.377728 l 0.308252,-0.266194 c 1.53253,-1.323474 1.701581,-3.64006 0.37773,-5.172594 z" />
- <svg:circle
- style="fill:none;stroke:#39ac39;stroke-width:3.68707275"
- r="45.210526"
- id="circle2046"
- cy="49.639103"
- cx="49.837967" />
- <svg:circle
- style="fill:#39ac39"
- r="6.4523773"
- id="circle2048"
- cy="23.398026"
- cx="48.945694" />
- </svg:g>
-</svg:svg>
diff --git a/navit/icons/stadium.svg b/navit/icons/stadium.svg
deleted file mode 100644
index 101a3d5df..000000000
--- a/navit/icons/stadium.svg
+++ /dev/null
@@ -1,235 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="stadium.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/shopping.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="TriangleInS"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleInS"
- style="overflow:visible">
- <path
- id="path3332"
- d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(-0.2,-0.2)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- inkscape:stockid="TriangleInL"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleInL"
- style="overflow:visible">
- <path
- id="path3326"
- d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(-0.8,-0.8)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Sstart"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2Sstart"
- style="overflow:visible">
- <path
- id="path3222"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="matrix(0.3,0,0,0.3,-0.69,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mstart"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2Mstart"
- style="overflow:visible">
- <path
- id="path3216"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(0.6,0.6)"
- inkscape:connector-curvature="0" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3192"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(0.8,0,0,0.8,10,0)"
- inkscape:connector-curvature="0" />
- </marker>
- <linearGradient
- id="linearGradient3160">
- <stop
- style="stop-color:#208420;stop-opacity:1;"
- offset="0"
- id="stop3162" />
- <stop
- style="stop-color:#15d715;stop-opacity:1;"
- offset="1"
- id="stop3164" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2390"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2421"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2419"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2406"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#227500"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="3.959798"
- inkscape:cx="45.075654"
- inkscape:cy="56.516231"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="943"
- inkscape:window-height="682"
- inkscape:window-x="222"
- inkscape:window-y="61"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.01554966;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 10.491545,-76.438787 c -5.3565355,0.114312 -10.10953667,5.254177 -9.4139555,10.651565 0.439917,5.397187 6.0307014,9.554843 11.3289425,8.653021 5.333851,-0.589328 9.599085,-6.176382 8.366351,-11.486147 -0.903416,-4.685198 -5.552229,-8.125493 -10.281338,-7.818439 z"
- id="path2432-3"
- inkscape:connector-curvature="0" />
- <ellipse
- style="opacity:1;fill:#feffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.01554966;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path2432"
- cx="10.993381"
- cy="-66.75209"
- rx="9.1239681"
- ry="8.8629408" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 4.5906442,-71.475991 2.6993985,-1.529645 2.159519,2.609394 -1.7456109,3.581168 -3.4732266,-0.521879 -0.1799599,-3.689143 0.5398799,-0.449895 z"
- id="path2436"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 17.345965,-71.851346 -3.599198,-0.899791 -1.709619,2.699373 2.699398,3.149268 3.329259,-1.169728 -0.71984,-3.779122 z"
- id="path3238"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8.5279294,-64.367643 4.4989976,0 1.7996,3.509185 -3.419239,2.105512 -4.1390779,-2.375449 1.2597193,-3.239248 z"
- id="path3240"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 18.965604,-63.737789 -1.709619,-0.539875 0.98978,2.879332 0.719839,-2.339457 z"
- id="path3242"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 4.5688114,-63.55783 -0.35992,2.159498 -1.4396793,-2.249478 1.7995993,0.08999 z"
- id="path3244"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/status_calculating_bk.svg b/navit/icons/status_calculating_bk.svg
deleted file mode 100644
index 6617ce8d4..000000000
--- a/navit/icons/status_calculating_bk.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- fill="#000000"
- height="48"
- viewBox="0 0 24 24"
- width="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_calculating_bk.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10">
- <inkscape:path-effect
- effect="skeletal"
- id="path-effect4838"
- is_visible="true"
- pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z"
- copytype="single_stretched"
- prop_scale="1"
- scale_y_rel="false"
- spacing="0"
- normal_offset="0"
- tang_offset="0"
- prop_units="false"
- vertical_pattern="false"
- fuse_tolerance="0" />
- </defs>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:zoom="15.416667"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- inkscape:snap-grids="true"
- inkscape:snap-others="true"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4140" />
- </sodipodi:namedview>
- <path
- d="M0 0h24v24H0V0z"
- fill="none"
- id="path6" />
- <path
- style="fill:#000000;stroke:none;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 5.5 0 C 4.669 0 4 0.669 4 1.5 C 4 2.331 4.669 3 5.5 3 L 8 3 L 8 10 C 8 12.385139 9.3458567 14.173982 10.585938 15.414062 L 17.085938 21.914062 C 17.84156 22.669687 18 22.968366 18 24 C 18 24.940922 17.809128 25.362748 17.085938 26.085938 L 14.585938 28.585938 L 10.585938 32.585938 C 9.3458567 33.826017 8 35.61486 8 38 L 8 45 L 5.5 45 C 4.669 45 4 45.669 4 46.5 C 4 47.331 4.669 48 5.5 48 L 42.5 48 C 43.331 48 44 47.331 44 46.5 C 44 45.669 43.331 45 42.5 45 L 40 45 L 40 38 C 40 35.61486 38.654145 33.826017 37.414062 32.585938 L 33.414062 28.585938 L 30.914062 26.085938 C 30.190872 25.362748 30 24.940922 30 24 C 30 22.968366 30.15844 22.669687 30.914062 21.914062 L 37.414062 15.414062 C 38.654145 14.173982 40 12.385139 40 10 L 40 3 L 42.5 3 C 43.331 3 44 2.331 44 1.5 C 44 0.669 43.331 0 42.5 0 L 5.5 0 z M 12 3 L 36 3 L 36 10 C 36 10.460018 35.606946 11.292533 35.080078 12 L 12.919922 12 C 12.393054 11.292534 12 10.460018 12 10 L 12 3 z M 22 24 L 22 38 C 22 40 20 42 18 42 L 12 42 L 12 38 C 12 37.403716 12.654143 36.173983 13.414062 35.414062 L 17.414062 31.414062 L 19.914062 28.914062 C 21.190872 27.637252 22 25.884674 22 24 z M 26 24 C 26 25.884674 26.809128 27.637252 28.085938 28.914062 L 30.585938 31.414062 L 34.585938 35.414062 C 35.345855 36.173983 36 37.403716 36 38 L 36 42 L 30 42 C 28 42 26 40 26 38 L 26 24 z "
- transform="scale(0.5,0.5)"
- id="rect4780" />
-</svg>
diff --git a/navit/icons/status_calculating_wh.svg b/navit/icons/status_calculating_wh.svg
deleted file mode 100644
index fcdf60960..000000000
--- a/navit/icons/status_calculating_wh.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- fill="#000000"
- height="48"
- viewBox="0 0 24 24"
- width="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_calculating_bk.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10">
- <inkscape:path-effect
- effect="skeletal"
- id="path-effect4838"
- is_visible="true"
- pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z"
- copytype="single_stretched"
- prop_scale="1"
- scale_y_rel="false"
- spacing="0"
- normal_offset="0"
- tang_offset="0"
- prop_units="false"
- vertical_pattern="false"
- fuse_tolerance="0" />
- </defs>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:zoom="15.416667"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- inkscape:snap-grids="true"
- inkscape:snap-others="true"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4140" />
- </sodipodi:namedview>
- <path
- d="M0 0h24v24H0V0z"
- fill="none"
- id="path6" />
- <path
- style="fill:#ffffff;stroke:none;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 5.5 0 C 4.669 0 4 0.669 4 1.5 C 4 2.331 4.669 3 5.5 3 L 8 3 L 8 10 C 8 12.385139 9.3458567 14.173982 10.585938 15.414062 L 17.085938 21.914062 C 17.84156 22.669687 18 22.968366 18 24 C 18 24.940922 17.809128 25.362748 17.085938 26.085938 L 14.585938 28.585938 L 10.585938 32.585938 C 9.3458567 33.826017 8 35.61486 8 38 L 8 45 L 5.5 45 C 4.669 45 4 45.669 4 46.5 C 4 47.331 4.669 48 5.5 48 L 42.5 48 C 43.331 48 44 47.331 44 46.5 C 44 45.669 43.331 45 42.5 45 L 40 45 L 40 38 C 40 35.61486 38.654145 33.826017 37.414062 32.585938 L 33.414062 28.585938 L 30.914062 26.085938 C 30.190872 25.362748 30 24.940922 30 24 C 30 22.968366 30.15844 22.669687 30.914062 21.914062 L 37.414062 15.414062 C 38.654145 14.173982 40 12.385139 40 10 L 40 3 L 42.5 3 C 43.331 3 44 2.331 44 1.5 C 44 0.669 43.331 0 42.5 0 L 5.5 0 z M 12 3 L 36 3 L 36 10 C 36 10.460018 35.606946 11.292533 35.080078 12 L 12.919922 12 C 12.393054 11.292534 12 10.460018 12 10 L 12 3 z M 22 24 L 22 38 C 22 40 20 42 18 42 L 12 42 L 12 38 C 12 37.403716 12.654143 36.173983 13.414062 35.414062 L 17.414062 31.414062 L 19.914062 28.914062 C 21.190872 27.637252 22 25.884674 22 24 z M 26 24 C 26 25.884674 26.809128 27.637252 28.085938 28.914062 L 30.585938 31.414062 L 34.585938 35.414062 C 35.345855 36.173983 36 37.403716 36 38 L 36 42 L 30 42 C 28 42 26 40 26 38 L 26 24 z "
- transform="scale(0.5,0.5)"
- id="rect4780" />
-</svg>
diff --git a/navit/icons/status_no_destination_bk.svg b/navit/icons/status_no_destination_bk.svg
deleted file mode 100644
index 271af0075..000000000
--- a/navit/icons/status_no_destination_bk.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- width="64"
- height="64"
- id="svg2"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_no_destination_bk.svg">
- <metadata
- id="metadata29">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview27"
- showgrid="true"
- inkscape:zoom="11.5625"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid4178" />
- </sodipodi:namedview>
- <defs
- id="defs11">
- <marker
- refX="0"
- refY="0"
- orient="auto"
- style="overflow:visible"
- id="DistanceIn">
- <g
- id="g2300">
- <path
- d="M 0,0 L 2,0"
- style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square"
- id="path2306" />
- <path
- d="M 0,0 L 13,4 L 9,0 L 13,-4 L 0,0 z "
- style="fill:#000000;fill-rule:evenodd;stroke:none"
- id="path2302" />
- <path
- d="M 0,-4 L 0,40"
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square"
- id="path2304" />
- </g>
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- style="overflow:visible"
- id="SemiCircleOut">
- <path
- d="M -2.5,-0.80913858 C -2.5,1.9508614 -4.74,4.1908614 -7.5,4.1908614 L -7.5,-5.8091386 C -4.74,-5.8091386 -2.5,-3.5691386 -2.5,-0.80913858 z "
- transform="matrix(0.6,0,0,0.6,4.2752958,0.4580676)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- id="path8204" />
- </marker>
- </defs>
- <path
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 13.181641 3.0214844 L 18 7.8398438 L 18 6.8867188 L 25 8.0820312 L 25 14.388672 L 32 15.623047 L 32 9.2773438 L 39 10.470703 L 39 16.857422 L 46 18.091797 L 46 11.666016 L 52.5 12.775391 L 52.5 19.238281 L 46 18.091797 L 46 25.091797 L 52.5 26.238281 L 52.5 33.238281 L 46 32.091797 L 46 35.839844 L 53.009766 42.849609 L 55.5 43.289062 L 55.5 10.244141 L 13.181641 3.0214844 z M 46 32.091797 L 46 25.091797 L 39 23.857422 L 39 28.839844 L 41.449219 31.289062 L 46 32.091797 z M 39 23.857422 L 39 16.857422 L 32 15.623047 L 32 21.839844 L 32.951172 22.791016 L 39 23.857422 z M 25 14.388672 L 24.453125 14.292969 L 25 14.839844 L 25 14.388672 z M 7.3867188 4 L 4 7.3867188 L 8.5 11.886719 L 8.5 33.744141 L 8.5 35.001953 L 8.5 62 A 1.50015 1.50015 0 1 0 11.5 62 L 11.5 35.53125 L 36.564453 39.951172 L 56.613281 60 L 60 56.613281 L 44.787109 41.400391 L 41.089844 37.703125 L 39 35.613281 L 33.226562 29.839844 L 32 28.613281 L 25 21.613281 L 24.726562 21.339844 L 18 14.613281 L 16.228516 12.841797 L 8.5 5.1132812 L 7.3867188 4 z M 11.5 14.886719 L 16.503906 19.890625 L 11.5 19.007812 L 11.5 14.886719 z M 18 21.386719 L 25 28.386719 L 25 28.388672 L 25.001953 28.388672 L 32 35.386719 L 32 36.099609 L 25 34.865234 L 25 28.388672 L 18 27.154297 L 18 33.630859 L 11.5 32.484375 L 11.5 26.007812 L 18 27.154297 L 18 21.386719 z "
- id="rect4126" />
-</svg>
diff --git a/navit/icons/status_no_destination_wh.svg b/navit/icons/status_no_destination_wh.svg
deleted file mode 100644
index ecad90f6a..000000000
--- a/navit/icons/status_no_destination_wh.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- width="64"
- height="64"
- id="svg2"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_no_destination_wh.svg">
- <metadata
- id="metadata29">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview27"
- showgrid="true"
- inkscape:zoom="11.5625"
- inkscape:cx="32"
- inkscape:cy="32"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid4178" />
- </sodipodi:namedview>
- <defs
- id="defs11">
- <marker
- refX="0"
- refY="0"
- orient="auto"
- style="overflow:visible"
- id="DistanceIn">
- <g
- id="g2300">
- <path
- d="M 0,0 L 2,0"
- style="fill:none;stroke:#ffffff;stroke-width:1.14999998;stroke-linecap:square"
- id="path2306" />
- <path
- d="M 0,0 L 13,4 L 9,0 L 13,-4 L 0,0 z "
- style="fill:#000000;fill-rule:evenodd;stroke:none"
- id="path2302" />
- <path
- d="M 0,-4 L 0,40"
- style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:square"
- id="path2304" />
- </g>
- </marker>
- <marker
- refX="0"
- refY="0"
- orient="auto"
- style="overflow:visible"
- id="SemiCircleOut">
- <path
- d="M -2.5,-0.80913858 C -2.5,1.9508614 -4.74,4.1908614 -7.5,4.1908614 L -7.5,-5.8091386 C -4.74,-5.8091386 -2.5,-3.5691386 -2.5,-0.80913858 z "
- transform="matrix(0.6,0,0,0.6,4.2752958,0.4580676)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- id="path8204" />
- </marker>
- </defs>
- <path
- style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;fill:#ffffff"
- d="M 13.181641 3.0214844 L 18 7.8398438 L 18 6.8867188 L 25 8.0820312 L 25 14.388672 L 32 15.623047 L 32 9.2773438 L 39 10.470703 L 39 16.857422 L 46 18.091797 L 46 11.666016 L 52.5 12.775391 L 52.5 19.238281 L 46 18.091797 L 46 25.091797 L 52.5 26.238281 L 52.5 33.238281 L 46 32.091797 L 46 35.839844 L 53.009766 42.849609 L 55.5 43.289062 L 55.5 10.244141 L 13.181641 3.0214844 z M 46 32.091797 L 46 25.091797 L 39 23.857422 L 39 28.839844 L 41.449219 31.289062 L 46 32.091797 z M 39 23.857422 L 39 16.857422 L 32 15.623047 L 32 21.839844 L 32.951172 22.791016 L 39 23.857422 z M 25 14.388672 L 24.453125 14.292969 L 25 14.839844 L 25 14.388672 z M 7.3867188 4 L 4 7.3867188 L 8.5 11.886719 L 8.5 33.744141 L 8.5 35.001953 L 8.5 62 A 1.50015 1.50015 0 1 0 11.5 62 L 11.5 35.53125 L 36.564453 39.951172 L 56.613281 60 L 60 56.613281 L 44.787109 41.400391 L 41.089844 37.703125 L 39 35.613281 L 33.226562 29.839844 L 32 28.613281 L 25 21.613281 L 24.726562 21.339844 L 18 14.613281 L 16.228516 12.841797 L 8.5 5.1132812 L 7.3867188 4 z M 11.5 14.886719 L 16.503906 19.890625 L 11.5 19.007812 L 11.5 14.886719 z M 18 21.386719 L 25 28.386719 L 25 28.388672 L 25.001953 28.388672 L 32 35.386719 L 32 36.099609 L 25 34.865234 L 25 28.388672 L 18 27.154297 L 18 33.630859 L 11.5 32.484375 L 11.5 26.007812 L 18 27.154297 L 18 21.386719 z "
- id="rect4126" />
-</svg>
diff --git a/navit/icons/status_no_route_bk.svg b/navit/icons/status_no_route_bk.svg
deleted file mode 100644
index 6862cfdc2..000000000
--- a/navit/icons/status_no_route_bk.svg
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- fill="#000000"
- height="48"
- viewBox="0 0 24 24"
- width="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_no_route_bk.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-paths="true"
- inkscape:zoom="15.416667"
- inkscape:cx="21.248534"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2">
- <inkscape:grid
- type="xygrid"
- id="grid4140" />
- </sodipodi:namedview>
- <path
- d="M0 0h24v24H0z"
- fill="none"
- id="path4" />
- <path
- d="M 12,0 C 5.376,0 0,5.376 0,12 0,18.624 5.376,24 12,24 18.624,24 24,18.624 24,12 24,5.376 18.624,0 12,0 Z M 21,15 3,15 3,9 21,9 Z"
- id="path6"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssccccc" />
-</svg>
diff --git a/navit/icons/status_no_route_wh.svg b/navit/icons/status_no_route_wh.svg
deleted file mode 100644
index 7c7544916..000000000
--- a/navit/icons/status_no_route_wh.svg
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- fill="#000000"
- height="48"
- viewBox="0 0 24 24"
- width="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_no_route_wh.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-paths="true"
- inkscape:zoom="15.416667"
- inkscape:cx="21.248534"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2">
- <inkscape:grid
- type="xygrid"
- id="grid4140" />
- </sodipodi:namedview>
- <path
- d="M0 0h24v24H0z"
- fill="none"
- id="path4" />
- <path
- d="M 12,0 C 5.376,0 0,5.376 0,12 0,18.624 5.376,24 12,24 18.624,24 24,18.624 24,12 24,5.376 18.624,0 12,0 Z M 21,15 3,15 3,9 21,9 Z"
- id="path6"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssccccc"
- style="fill:#ffffff" />
-</svg>
diff --git a/navit/icons/status_position_wait_bk.svg b/navit/icons/status_position_wait_bk.svg
deleted file mode 100644
index 9d1b7ca33..000000000
--- a/navit/icons/status_position_wait_bk.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- fill="#000000"
- height="48"
- viewBox="0 0 24 24"
- width="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_position_wait_bk.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:zoom="12.765499"
- inkscape:cx="24"
- inkscape:cy="23.015625"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2">
- <inkscape:grid
- type="xygrid"
- id="grid4140" />
- </sodipodi:namedview>
- <path
- d="M 24 0 C 14.712 0 7.1992187 7.5127812 7.1992188 16.800781 C 7.1992188 29.400781 24 48 24 48 C 24 48 40.800781 29.400781 40.800781 16.800781 C 40.800781 7.5127812 33.288 2.3684758e-15 24 0 z M 24 4 C 31.131238 4 36.800781 9.6695427 36.800781 16.800781 C 36.800781 21.323004 33.110977 28.921035 29.085938 34.886719 C 26.543988 38.654253 25.528858 39.652618 24 41.476562 C 22.471142 39.652618 21.456012 38.654253 18.914062 34.886719 C 14.889022 28.921035 11.199219 21.323004 11.199219 16.800781 C 11.199219 9.6695427 16.868761 4 24 4 z "
- transform="scale(0.5,0.5)"
- id="path4" />
- <path
- d="M0 0h24v24H0z"
- fill="none"
- id="path6" />
-</svg>
diff --git a/navit/icons/status_position_wait_wh.svg b/navit/icons/status_position_wait_wh.svg
deleted file mode 100644
index 8bce336df..000000000
--- a/navit/icons/status_position_wait_wh.svg
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- fill="#000000"
- height="48"
- viewBox="0 0 24 24"
- width="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_position_wait_wh.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:zoom="12.765499"
- inkscape:cx="24"
- inkscape:cy="23.015625"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2">
- <inkscape:grid
- type="xygrid"
- id="grid4140" />
- </sodipodi:namedview>
- <path
- d="M 24 0 C 14.712 0 7.1992187 7.5127812 7.1992188 16.800781 C 7.1992188 29.400781 24 48 24 48 C 24 48 40.800781 29.400781 40.800781 16.800781 C 40.800781 7.5127812 33.288 2.3684758e-15 24 0 z M 24 4 C 31.131238 4 36.800781 9.6695427 36.800781 16.800781 C 36.800781 21.323004 33.110977 28.921035 29.085938 34.886719 C 26.543988 38.654253 25.528858 39.652618 24 41.476562 C 22.471142 39.652618 21.456012 38.654253 18.914062 34.886719 C 14.889022 28.921035 11.199219 21.323004 11.199219 16.800781 C 11.199219 9.6695427 16.868761 4 24 4 z "
- transform="scale(0.5,0.5)"
- id="path4"
- style="fill:#ffffff" />
- <path
- d="M0 0h24v24H0z"
- fill="none"
- id="path6" />
-</svg>
diff --git a/navit/icons/status_recalculating_bk.svg b/navit/icons/status_recalculating_bk.svg
deleted file mode 100644
index 937937e2b..000000000
--- a/navit/icons/status_recalculating_bk.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- fill="#000000"
- height="48"
- viewBox="0 0 24 24"
- width="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_calculating_bk.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10">
- <inkscape:path-effect
- effect="skeletal"
- id="path-effect4838"
- is_visible="true"
- pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z"
- copytype="single_stretched"
- prop_scale="1"
- scale_y_rel="false"
- spacing="0"
- normal_offset="0"
- tang_offset="0"
- prop_units="false"
- vertical_pattern="false"
- fuse_tolerance="0" />
- </defs>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:zoom="15.416667"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- inkscape:snap-grids="true"
- inkscape:snap-others="true"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4140" />
- </sodipodi:namedview>
- <path
- d="M0 0h24v24H0V0z"
- fill="none"
- id="path6" />
- <path
- style="fill:#000000;stroke:none;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 5.5 0 C 4.669 0 4 0.669 4 1.5 C 4 2.331 4.669 3 5.5 3 L 8 3 L 8 10 C 8 12.385139 9.3458567 14.173982 10.585938 15.414062 L 17.085938 21.914062 C 17.84156 22.669687 18 22.968366 18 24 C 18 24.940922 17.809128 25.362748 17.085938 26.085938 L 14.585938 28.585938 L 10.585938 32.585938 C 9.3458567 33.826017 8 35.61486 8 38 L 8 45 L 5.5 45 C 4.669 45 4 45.669 4 46.5 C 4 47.331 4.669 48 5.5 48 L 42.5 48 C 43.331 48 44 47.331 44 46.5 C 44 45.669 43.331 45 42.5 45 L 40 45 L 40 38 C 40 35.61486 38.654145 33.826017 37.414062 32.585938 L 33.414062 28.585938 L 30.914062 26.085938 C 30.190872 25.362748 30 24.940922 30 24 C 30 22.968366 30.15844 22.669687 30.914062 21.914062 L 37.414062 15.414062 C 38.654145 14.173982 40 12.385139 40 10 L 40 3 L 42.5 3 C 43.331 3 44 2.331 44 1.5 C 44 0.669 43.331 0 42.5 0 L 5.5 0 z M 12 3 L 36 3 L 36 10 C 36 10.460018 35.606946 11.292533 35.080078 12 L 12.919922 12 C 12.393054 11.292534 12 10.460018 12 10 L 12 3 z M 22 24 L 22 38 C 22 40 20 42 18 42 L 12 42 L 12 38 C 12 37.403716 12.654143 36.173983 13.414062 35.414062 L 17.414062 31.414062 L 19.914062 28.914062 C 21.190872 27.637252 22 25.884674 22 24 z M 26 24 C 26 25.884674 26.809128 27.637252 28.085938 28.914062 L 30.585938 31.414062 L 34.585938 35.414062 C 35.345855 36.173983 36 37.403716 36 38 L 36 42 L 30 42 C 28 42 26 40 26 38 L 26 24 z "
- transform="scale(0.5,0.5)"
- id="rect4780" />
-</svg>
diff --git a/navit/icons/status_recalculating_wh.svg b/navit/icons/status_recalculating_wh.svg
deleted file mode 100644
index 728055baa..000000000
--- a/navit/icons/status_recalculating_wh.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- fill="#000000"
- height="48"
- viewBox="0 0 24 24"
- width="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_recalculating_wh.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10">
- <inkscape:path-effect
- effect="skeletal"
- id="path-effect4838"
- is_visible="true"
- pattern="M 0,5 C 0,2.24 2.24,0 5,0 7.76,0 10,2.24 10,5 10,7.76 7.76,10 5,10 2.24,10 0,7.76 0,5 Z"
- copytype="single_stretched"
- prop_scale="1"
- scale_y_rel="false"
- spacing="0"
- normal_offset="0"
- tang_offset="0"
- prop_units="false"
- vertical_pattern="false"
- fuse_tolerance="0" />
- </defs>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:zoom="15.416667"
- inkscape:cx="14.27027"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2"
- inkscape:snap-grids="true"
- inkscape:snap-others="true"
- inkscape:snap-bbox="true">
- <inkscape:grid
- type="xygrid"
- id="grid4140" />
- </sodipodi:namedview>
- <path
- d="M0 0h24v24H0V0z"
- fill="none"
- id="path6" />
- <path
- style="fill:#ffffff;stroke:none;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 5.5 0 C 4.669 0 4 0.669 4 1.5 C 4 2.331 4.669 3 5.5 3 L 8 3 L 8 10 C 8 12.385139 9.3458567 14.173982 10.585938 15.414062 L 17.085938 21.914062 C 17.84156 22.669687 18 22.968366 18 24 C 18 24.940922 17.809128 25.362748 17.085938 26.085938 L 14.585938 28.585938 L 10.585938 32.585938 C 9.3458567 33.826017 8 35.61486 8 38 L 8 45 L 5.5 45 C 4.669 45 4 45.669 4 46.5 C 4 47.331 4.669 48 5.5 48 L 42.5 48 C 43.331 48 44 47.331 44 46.5 C 44 45.669 43.331 45 42.5 45 L 40 45 L 40 38 C 40 35.61486 38.654145 33.826017 37.414062 32.585938 L 33.414062 28.585938 L 30.914062 26.085938 C 30.190872 25.362748 30 24.940922 30 24 C 30 22.968366 30.15844 22.669687 30.914062 21.914062 L 37.414062 15.414062 C 38.654145 14.173982 40 12.385139 40 10 L 40 3 L 42.5 3 C 43.331 3 44 2.331 44 1.5 C 44 0.669 43.331 0 42.5 0 L 5.5 0 z M 12 3 L 36 3 L 36 10 C 36 10.460018 35.606946 11.292533 35.080078 12 L 12.919922 12 C 12.393054 11.292534 12 10.460018 12 10 L 12 3 z M 22 24 L 22 38 C 22 40 20 42 18 42 L 12 42 L 12 38 C 12 37.403716 12.654143 36.173983 13.414062 35.414062 L 17.414062 31.414062 L 19.914062 28.914062 C 21.190872 27.637252 22 25.884674 22 24 z M 26 24 C 26 25.884674 26.809128 27.637252 28.085938 28.914062 L 30.585938 31.414062 L 34.585938 35.414062 C 35.345855 36.173983 36 37.403716 36 38 L 36 42 L 30 42 C 28 42 26 40 26 38 L 26 24 z "
- transform="scale(0.5,0.5)"
- id="rect4780" />
-</svg>
diff --git a/navit/icons/status_routing_bk.svg b/navit/icons/status_routing_bk.svg
deleted file mode 100644
index 307b26434..000000000
--- a/navit/icons/status_routing_bk.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- fill="#000000"
- height="48"
- viewBox="0 0 24 24"
- width="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_routing_bk.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:zoom="15.416667"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2">
- <inkscape:grid
- type="xygrid"
- id="grid4140" />
- </sodipodi:namedview>
- <path
- d="M0 0h24v24H0z"
- fill="none"
- id="path4" />
- <path
- d="M 12,0 2.9210526,22.140526 3.7805263,23 12,19.368421 20.219474,23 21.078947,22.140526 Z"
- id="path6"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/status_routing_wh.svg b/navit/icons/status_routing_wh.svg
deleted file mode 100644
index 32cfecd7b..000000000
--- a/navit/icons/status_routing_wh.svg
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- fill="#000000"
- height="48"
- viewBox="0 0 24 24"
- width="48"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="status_routing_bk.svg">
- <metadata
- id="metadata12">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs10" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1280"
- inkscape:window-height="948"
- id="namedview8"
- showgrid="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:zoom="15.416667"
- inkscape:cx="24"
- inkscape:cy="24"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2">
- <inkscape:grid
- type="xygrid"
- id="grid4140" />
- </sodipodi:namedview>
- <path
- d="M0 0h24v24H0z"
- fill="none"
- id="path4" />
- <path
- d="M 12,0 2.9210526,22.140526 3.7805263,23 12,19.368421 20.219474,23 21.078947,22.140526 Z"
- id="path6"
- inkscape:connector-curvature="0"
- style="fill:#ffffff" />
-</svg>
diff --git a/navit/icons/swimming.svg b/navit/icons/swimming.svg
deleted file mode 100644
index b6733de34..000000000
--- a/navit/icons/swimming.svg
+++ /dev/null
@@ -1,567 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- width="22"
- height="22"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- viewBox="0 0 499.99999 500.00001"
- id="svg2"
- style="overflow:visible"
- inkscape:version="0.92.1 r15371"
- sodipodi:docname="swimming.svg">
- <metadata
- id="metadata56">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Hotel has pool</dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1233"
- inkscape:window-height="718"
- id="namedview54"
- showgrid="false"
- inkscape:zoom="11.840909"
- inkscape:cx="9.8227003"
- inkscape:cy="11"
- inkscape:window-x="67"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="svg2"
- inkscape:pagecheckerboard="true" />
- <title
- id="title3828">Hotel has pool</title>
- <defs
- id="defs115">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 250 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="500 : 250 : 1"
- inkscape:persp3d-origin="250 : 166.66667 : 1"
- id="perspective58" />
- <foreignObject
- height="1"
- requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
- width="1"
- x="0"
- y="0"
- id="foreignObject8">
- <i:pgfRef
- xlink:href="#adobe_illustrator_pgf" />
- </foreignObject>
- <linearGradient
- x1="424.36719"
- y1="227.73579"
- x2="455.14841"
- y2="227.73579"
- id="linearGradient2978"
- xlink:href="#XMLID_1_"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="30.851601"
- y1="227.37601"
- x2="0.0713"
- y2="227.37601"
- id="linearGradient2980"
- xlink:href="#XMLID_2_"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="227.73579"
- y1="30.8521"
- x2="227.73579"
- y2="0.071800001"
- id="linearGradient2982"
- xlink:href="#XMLID_3_"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="227.37601"
- y1="423.89941"
- x2="227.37601"
- y2="454.67969"
- id="linearGradient2984"
- xlink:href="#XMLID_4_"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <g
- style="overflow:visible;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:32.75300253;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="matrix(1.1449332,0,0,1.1449332,-10.350368,-10.350924)"
- id="Layer_1-0">
- <linearGradient
- x1="424.36719"
- y1="227.73579"
- x2="455.14841"
- y2="227.73579"
- id="linearGradient8283"
- gradientUnits="userSpaceOnUse">
- <stop
- id="stop16-5"
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0" />
- <stop
- id="stop18-1"
- style="stop-color:#e2e2e2;stop-opacity:1"
- offset="0.1696" />
- <stop
- id="stop20-3"
- style="stop-color:#d8d8d8;stop-opacity:1"
- offset="0.30590001" />
- <stop
- id="stop22-0"
- style="stop-color:#c7c7c7;stop-opacity:1"
- offset="0.43059999" />
- <stop
- id="stop24-5"
- style="stop-color:#b0b0b0;stop-opacity:1"
- offset="0.54839998" />
- <stop
- id="stop26-3"
- style="stop-color:#919191;stop-opacity:1"
- offset="0.66140002" />
- <stop
- id="stop28-7"
- style="stop-color:#6b6b6b;stop-opacity:1"
- offset="0.77069998" />
- <stop
- id="stop30-6"
- style="stop-color:#3e3e3e;stop-opacity:1"
- offset="0.87720001" />
- <stop
- id="stop32-3"
- style="stop-color:#0c0c0c;stop-opacity:1"
- offset="0.9788" />
- <stop
- id="stop34-7"
- style="stop-color:#000000;stop-opacity:1"
- offset="1" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0.75" />
- <a:midPointStop
- style="stop-color:#000000"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="30.851601"
- y1="227.37601"
- x2="0.0713"
- y2="227.37601"
- id="linearGradient8291"
- gradientUnits="userSpaceOnUse">
- <stop
- id="stop39-3"
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0" />
- <stop
- id="stop41-5"
- style="stop-color:#e2e2e2;stop-opacity:1"
- offset="0.26750001" />
- <stop
- id="stop43-6"
- style="stop-color:#d8d8d8;stop-opacity:1"
- offset="0.4824" />
- <stop
- id="stop45-6"
- style="stop-color:#c7c7c7;stop-opacity:1"
- offset="0.67900002" />
- <stop
- id="stop47-4"
- style="stop-color:#b0b0b0;stop-opacity:1"
- offset="0.8635" />
- <stop
- id="stop49-5"
- style="stop-color:#999999;stop-opacity:1"
- offset="1" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0.75" />
- <a:midPointStop
- style="stop-color:#999999"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="227.73579"
- y1="30.8521"
- x2="227.73579"
- y2="0.071800001"
- id="linearGradient8299"
- gradientUnits="userSpaceOnUse">
- <stop
- id="stop54-7"
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0" />
- <stop
- id="stop56-2"
- style="stop-color:#e2e2e2;stop-opacity:1"
- offset="0.26750001" />
- <stop
- id="stop58-3"
- style="stop-color:#d8d8d8;stop-opacity:1"
- offset="0.4824" />
- <stop
- id="stop60-0"
- style="stop-color:#c7c7c7;stop-opacity:1"
- offset="0.67900002" />
- <stop
- id="stop62-4"
- style="stop-color:#b0b0b0;stop-opacity:1"
- offset="0.8635" />
- <stop
- id="stop64-5"
- style="stop-color:#999999;stop-opacity:1"
- offset="1" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0.75" />
- <a:midPointStop
- style="stop-color:#999999"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="227.37601"
- y1="423.89941"
- x2="227.37601"
- y2="454.67969"
- id="linearGradient8311"
- gradientUnits="userSpaceOnUse">
- <stop
- id="stop69-8"
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0" />
- <stop
- id="stop71-5"
- style="stop-color:#e2e2e2;stop-opacity:1"
- offset="0.1696" />
- <stop
- id="stop73-5"
- style="stop-color:#d8d8d8;stop-opacity:1"
- offset="0.30590001" />
- <stop
- id="stop75-1"
- style="stop-color:#c7c7c7;stop-opacity:1"
- offset="0.43059999" />
- <stop
- id="stop77-1"
- style="stop-color:#b0b0b0;stop-opacity:1"
- offset="0.54839998" />
- <stop
- id="stop79-0"
- style="stop-color:#919191;stop-opacity:1"
- offset="0.66140002" />
- <stop
- id="stop81-8"
- style="stop-color:#6b6b6b;stop-opacity:1"
- offset="0.77069998" />
- <stop
- id="stop83-4"
- style="stop-color:#3e3e3e;stop-opacity:1"
- offset="0.87720001" />
- <stop
- id="stop85-0"
- style="stop-color:#0c0c0c;stop-opacity:1"
- offset="0.9788" />
- <stop
- id="stop87-6"
- style="stop-color:#000000;stop-opacity:1"
- offset="1" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0.75" />
- <a:midPointStop
- style="stop-color:#000000"
- offset="1" />
- </linearGradient>
- <g
- transform="matrix(1.0845117,0,0,1.0845093,-11.238652,-0.33034549)"
- id="g3049-7"
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:30.20072423;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
- <path
- inkscape:connector-curvature="0"
- d="m 402.602,255.279 c -3.177,0.97 -7.28,0.784 -12.662,-0.367 -5.47,-1.245 -10.456,-7.049 -19.544,-6.728 -9.309,0.323 -22.457,8.662 -35.161,8.662 -12.884,-0.274 -27.354,-9.031 -40.501,-9.031 -13.103,0.093 -25.015,9.168 -37.588,9.445 -12.794,0.045 -25.544,-8.476 -38.073,-8.66 -12.705,-0.322 -24.75,7.557 -36.617,7.463 -11.691,-0.229 -22.059,-8.616 -33.662,-8.248 -11.911,0.463 -24.971,9.676 -36.617,10.229 -11.734,0.185 -22.367,-8.568 -32.735,-8.662 -10.455,-0.184 -22.19,6.404 -29.249,7.879 -7.059,1.338 -11.516,1.476 -13.191,0.415 v 24.419 c 1.676,1.059 6.133,0.922 13.191,-0.415 7.059,-1.475 18.794,-8.063 29.249,-7.879 10.368,0.093 21.001,8.846 32.735,8.66 11.646,-0.459 24.706,-9.905 36.617,-10.228 11.604,-0.46 21.971,8.109 33.662,8.293 11.867,0.094 23.912,-7.738 36.617,-7.508 12.529,0.183 25.279,8.705 38.073,8.661 12.573,-0.277 24.485,-9.354 37.588,-9.446 13.147,-0.044 27.617,8.847 40.501,9.079 12.704,0 25.853,-8.342 35.161,-8.663 9.088,-0.416 14.074,5.482 19.544,6.68 5.382,1.152 9.485,1.336 12.662,0.368 z"
- id="path103-5"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:30.20072423;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- d="m 193.528,242.289 100.94,-53.858 c -7.939,-17.416 -13.543,-30.545 -16.808,-39.898 -3.354,-9.307 -4.765,-11.38 -2.868,-15.803 1.941,-4.561 -0.75,-5.252 14.03,-11.287 14.778,-6.266 58.984,-24.234 73.41,-25.109 14.118,-0.737 13.545,14.835 11.207,20.088 -2.56,5.113 -15.707,6.403 -25.677,10.458 -10.104,3.87 -21.221,8.2 -34.059,12.992 l 46.19,101.634 c -5.955,5.113 -13.853,7.096 -24.529,6.311 -10.853,-1.057 -25.324,-11.377 -38.823,-11.426 -13.456,0.049 -28.809,11.566 -41.117,11.795 -12.353,-0.047 -22.147,-9.997 -32.471,-11.009 -10.365,-1.017 -20.116,0.687 -29.425,5.112 z"
- id="path105-6"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:30.20072423;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- d="m 374.881,154.343 c 15.562,0 28.19,13.188 28.19,29.439 0,16.251 -12.629,29.439 -28.19,29.439 -15.561,0 -28.191,-13.188 -28.191,-29.439 0,-16.251 12.629,-29.439 28.191,-29.439"
- id="path107-2"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:30.20072423;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- d="M 125.411,244.269 C 113.455,242.057 101.279,238.651 88.044,234.04 74.72,229.159 52,222.615 46.617,216.211 c -5.382,-6.588 -1.455,-19.764 9.398,-20.363 10.896,-0.599 32.514,9.076 54.969,17.093 22.324,7.926 47.867,17.831 78,30.224 -3.705,2.027 -8.603,2.672 -14.867,1.75 -6.354,-1.061 -14.383,-6.912 -22.545,-7.095 -8.205,-0.139 -16.808,2.073 -26.161,6.449 z"
- id="path109-8"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:30.20072423;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- d="m 402.602,296.147 c -3.177,0.874 -7.28,0.737 -12.662,-0.415 -5.47,-1.197 -10.456,-7.097 -19.544,-6.682 -9.309,0.322 -22.457,8.661 -35.161,8.661 -12.884,-0.275 -27.354,-9.029 -40.501,-9.029 -13.103,0.093 -25.015,9.169 -37.588,9.444 -12.794,0.047 -25.544,-8.476 -38.073,-8.661 -12.705,-0.323 -24.75,7.556 -36.617,7.464 -11.691,-0.23 -22.059,-8.616 -33.662,-8.247 -11.911,0.46 -24.971,9.674 -36.617,10.229 -11.734,0.183 -22.367,-8.571 -32.735,-8.663 -10.455,-0.183 -22.19,6.404 -29.249,7.879 -7.059,1.43 -11.516,1.382 -13.191,0.369 v 24.418 c 1.676,1.013 6.133,1.061 13.191,-0.369 7.059,-1.476 18.794,-8.062 29.249,-7.879 10.368,0.092 21.001,8.846 32.735,8.663 11.646,-0.555 24.706,-9.769 36.617,-10.229 11.604,-0.369 21.971,8.017 33.662,8.247 11.867,0.092 23.912,-7.787 36.617,-7.464 12.529,0.185 25.279,8.708 38.073,8.661 12.573,-0.275 24.485,-9.354 37.588,-9.444 13.147,0 27.617,8.754 40.501,9.029 12.704,0 25.853,-8.339 35.161,-8.661 9.088,-0.323 14.074,5.481 19.544,6.727 5.382,1.152 9.485,1.337 12.662,0.37 z"
- id="path111-5"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:30.20072423;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
- <g
- transform="matrix(1.1449332,0,0,1.1449332,-10.350368,-10.350924)"
- id="Layer_1">
- <linearGradient
- x1="424.36719"
- y1="227.73579"
- x2="455.14841"
- y2="227.73579"
- id="XMLID_1_"
- gradientUnits="userSpaceOnUse">
- <stop
- id="stop16"
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0" />
- <stop
- id="stop18"
- style="stop-color:#e2e2e2;stop-opacity:1"
- offset="0.1696" />
- <stop
- id="stop20"
- style="stop-color:#d8d8d8;stop-opacity:1"
- offset="0.30590001" />
- <stop
- id="stop22"
- style="stop-color:#c7c7c7;stop-opacity:1"
- offset="0.43059999" />
- <stop
- id="stop24"
- style="stop-color:#b0b0b0;stop-opacity:1"
- offset="0.54839998" />
- <stop
- id="stop26"
- style="stop-color:#919191;stop-opacity:1"
- offset="0.66140002" />
- <stop
- id="stop28"
- style="stop-color:#6b6b6b;stop-opacity:1"
- offset="0.77069998" />
- <stop
- id="stop30"
- style="stop-color:#3e3e3e;stop-opacity:1"
- offset="0.87720001" />
- <stop
- id="stop32"
- style="stop-color:#0c0c0c;stop-opacity:1"
- offset="0.9788" />
- <stop
- id="stop34"
- style="stop-color:#000000;stop-opacity:1"
- offset="1" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0.75" />
- <a:midPointStop
- style="stop-color:#000000"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="30.851601"
- y1="227.37601"
- x2="0.0713"
- y2="227.37601"
- id="XMLID_2_"
- gradientUnits="userSpaceOnUse">
- <stop
- id="stop39"
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0" />
- <stop
- id="stop41"
- style="stop-color:#e2e2e2;stop-opacity:1"
- offset="0.26750001" />
- <stop
- id="stop43"
- style="stop-color:#d8d8d8;stop-opacity:1"
- offset="0.4824" />
- <stop
- id="stop45"
- style="stop-color:#c7c7c7;stop-opacity:1"
- offset="0.67900002" />
- <stop
- id="stop47"
- style="stop-color:#b0b0b0;stop-opacity:1"
- offset="0.8635" />
- <stop
- id="stop49"
- style="stop-color:#999999;stop-opacity:1"
- offset="1" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0.75" />
- <a:midPointStop
- style="stop-color:#999999"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="227.73579"
- y1="30.8521"
- x2="227.73579"
- y2="0.071800001"
- id="XMLID_3_"
- gradientUnits="userSpaceOnUse">
- <stop
- id="stop54"
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0" />
- <stop
- id="stop56"
- style="stop-color:#e2e2e2;stop-opacity:1"
- offset="0.26750001" />
- <stop
- id="stop58"
- style="stop-color:#d8d8d8;stop-opacity:1"
- offset="0.4824" />
- <stop
- id="stop60"
- style="stop-color:#c7c7c7;stop-opacity:1"
- offset="0.67900002" />
- <stop
- id="stop62"
- style="stop-color:#b0b0b0;stop-opacity:1"
- offset="0.8635" />
- <stop
- id="stop64"
- style="stop-color:#999999;stop-opacity:1"
- offset="1" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0.75" />
- <a:midPointStop
- style="stop-color:#999999"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="227.37601"
- y1="423.89941"
- x2="227.37601"
- y2="454.67969"
- id="XMLID_4_"
- gradientUnits="userSpaceOnUse">
- <stop
- id="stop69"
- style="stop-color:#e5e5e5;stop-opacity:1"
- offset="0" />
- <stop
- id="stop71"
- style="stop-color:#e2e2e2;stop-opacity:1"
- offset="0.1696" />
- <stop
- id="stop73"
- style="stop-color:#d8d8d8;stop-opacity:1"
- offset="0.30590001" />
- <stop
- id="stop75"
- style="stop-color:#c7c7c7;stop-opacity:1"
- offset="0.43059999" />
- <stop
- id="stop77"
- style="stop-color:#b0b0b0;stop-opacity:1"
- offset="0.54839998" />
- <stop
- id="stop79"
- style="stop-color:#919191;stop-opacity:1"
- offset="0.66140002" />
- <stop
- id="stop81"
- style="stop-color:#6b6b6b;stop-opacity:1"
- offset="0.77069998" />
- <stop
- id="stop83"
- style="stop-color:#3e3e3e;stop-opacity:1"
- offset="0.87720001" />
- <stop
- id="stop85"
- style="stop-color:#0c0c0c;stop-opacity:1"
- offset="0.9788" />
- <stop
- id="stop87"
- style="stop-color:#000000;stop-opacity:1"
- offset="1" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0" />
- <a:midPointStop
- style="stop-color:#E5E5E5"
- offset="0.75" />
- <a:midPointStop
- style="stop-color:#000000"
- offset="1" />
- </linearGradient>
- <g
- transform="matrix(1.0845117,0,0,1.0845093,-11.238652,-0.33034549)"
- id="g3049">
- <path
- d="m 402.602,255.279 c -3.177,0.97 -7.28,0.784 -12.662,-0.367 -5.47,-1.245 -10.456,-7.049 -19.544,-6.728 -9.309,0.323 -22.457,8.662 -35.161,8.662 -12.884,-0.274 -27.354,-9.031 -40.501,-9.031 -13.103,0.093 -25.015,9.168 -37.588,9.445 -12.794,0.045 -25.544,-8.476 -38.073,-8.66 -12.705,-0.322 -24.75,7.557 -36.617,7.463 -11.691,-0.229 -22.059,-8.616 -33.662,-8.248 -11.911,0.463 -24.971,9.676 -36.617,10.229 -11.734,0.185 -22.367,-8.568 -32.735,-8.662 -10.455,-0.184 -22.19,6.404 -29.249,7.879 -7.059,1.338 -11.516,1.476 -13.191,0.415 v 24.419 c 1.676,1.059 6.133,0.922 13.191,-0.415 7.059,-1.475 18.794,-8.063 29.249,-7.879 10.368,0.093 21.001,8.846 32.735,8.66 11.646,-0.459 24.706,-9.905 36.617,-10.228 11.604,-0.46 21.971,8.109 33.662,8.293 11.867,0.094 23.912,-7.738 36.617,-7.508 12.529,0.183 25.279,8.705 38.073,8.661 12.573,-0.277 24.485,-9.354 37.588,-9.446 13.147,-0.044 27.617,8.847 40.501,9.079 12.704,0 25.853,-8.342 35.161,-8.663 9.088,-0.416 14.074,5.482 19.544,6.68 5.382,1.152 9.485,1.336 12.662,0.368 v -24.418 z"
- id="path103"
- style="fill:#000000;fill-rule:evenodd" />
- <path
- d="m 193.528,242.289 100.94,-53.858 c -7.939,-17.416 -13.543,-30.545 -16.808,-39.898 -3.354,-9.307 -4.765,-11.38 -2.868,-15.803 1.941,-4.561 -0.75,-5.252 14.03,-11.287 14.778,-6.266 58.984,-24.234 73.41,-25.109 14.118,-0.737 13.545,14.835 11.207,20.088 -2.56,5.113 -15.707,6.403 -25.677,10.458 -10.104,3.87 -21.221,8.2 -34.059,12.992 l 46.19,101.634 c -5.955,5.113 -13.853,7.096 -24.529,6.311 -10.853,-1.057 -25.324,-11.377 -38.823,-11.426 -13.456,0.049 -28.809,11.566 -41.117,11.795 -12.353,-0.047 -22.147,-9.997 -32.471,-11.009 -10.365,-1.017 -20.116,0.687 -29.425,5.112 z"
- id="path105"
- style="fill:#000000;fill-rule:evenodd" />
- <path
- d="m 374.881,154.343 c 15.562,0 28.19,13.188 28.19,29.439 0,16.251 -12.629,29.439 -28.19,29.439 -15.561,0 -28.191,-13.188 -28.191,-29.439 0,-16.251 12.629,-29.439 28.191,-29.439"
- id="path107"
- style="fill:#000000;fill-rule:evenodd" />
- <path
- d="M 125.411,244.269 C 113.455,242.057 101.279,238.651 88.044,234.04 74.72,229.159 52,222.615 46.617,216.211 c -5.382,-6.588 -1.455,-19.764 9.398,-20.363 10.896,-0.599 32.514,9.076 54.969,17.093 22.324,7.926 47.867,17.831 78,30.224 -3.705,2.027 -8.603,2.672 -14.867,1.75 -6.354,-1.061 -14.383,-6.912 -22.545,-7.095 -8.205,-0.139 -16.808,2.073 -26.161,6.449 z"
- id="path109"
- style="fill:#000000;fill-rule:evenodd" />
- <path
- d="m 402.602,296.147 c -3.177,0.874 -7.28,0.737 -12.662,-0.415 -5.47,-1.197 -10.456,-7.097 -19.544,-6.682 -9.309,0.322 -22.457,8.661 -35.161,8.661 -12.884,-0.275 -27.354,-9.029 -40.501,-9.029 -13.103,0.093 -25.015,9.169 -37.588,9.444 -12.794,0.047 -25.544,-8.476 -38.073,-8.661 -12.705,-0.323 -24.75,7.556 -36.617,7.464 -11.691,-0.23 -22.059,-8.616 -33.662,-8.247 -11.911,0.46 -24.971,9.674 -36.617,10.229 -11.734,0.183 -22.367,-8.571 -32.735,-8.663 -10.455,-0.183 -22.19,6.404 -29.249,7.879 -7.059,1.43 -11.516,1.382 -13.191,0.369 v 24.418 c 1.676,1.013 6.133,1.061 13.191,-0.369 7.059,-1.476 18.794,-8.062 29.249,-7.879 10.368,0.092 21.001,8.846 32.735,8.663 11.646,-0.555 24.706,-9.769 36.617,-10.229 11.604,-0.369 21.971,8.017 33.662,8.247 11.867,0.092 23.912,-7.787 36.617,-7.464 12.529,0.185 25.279,8.708 38.073,8.661 12.573,-0.275 24.485,-9.354 37.588,-9.444 13.147,0 27.617,8.754 40.501,9.029 12.704,0 25.853,-8.339 35.161,-8.661 9.088,-0.323 14.074,5.481 19.544,6.727 5.382,1.152 9.485,1.337 12.662,0.37 v -24.418 z"
- id="path111"
- style="fill:#000000;fill-rule:evenodd" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/taoist.svg b/navit/icons/taoist.svg
deleted file mode 100644
index 170831fb3..000000000
--- a/navit/icons/taoist.svg
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:version="0.48.1 r9760"
- sodipodi:docname="taoist.svg"
- version="1.0"
- width="22">
- <metadata
- id="metadata5184">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs5182">
- <inkscape:perspective
- id="perspective5186"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5724"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5783"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1"
- gridtolerance="10"
- guidetolerance="10"
- id="namedview5180"
- inkscape:current-layer="svg2"
- inkscape:cx="5.5132755"
- inkscape:cy="5.6525832"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="725"
- inkscape:window-maximized="1"
- inkscape:window-width="1024"
- inkscape:window-x="-3"
- inkscape:window-y="-3"
- inkscape:zoom="14.356706"
- objecttolerance="10"
- pagecolor="#ffffff"
- showgrid="false" />
- <g
- id="g1327"
- transform="matrix(0.04108698,0,0,0.04108698,-0.41792318,-0.2085354)">
- <path
- d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 l 0,450.123 c 0,40.844 20.895,62.229 62.192,62.229 l 452.024,0 c 41.307,0 62.229,-20.315 62.229,-62.229 l 0,-450.123 c 0,-42.601 -20.922,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z"
- id="path1329"
- style="fill:#111111;fill-opacity:0;stroke:#eeeeee;stroke-width:3.40799999;stroke-opacity:0"
- inkscape:connector-curvature="0" />
- </g>
- <path
- d="M 16,11 A 7,7 0 1 1 2,11 7,7 0 1 1 16,11 z"
- id="path2934"
- sodipodi:cx="9"
- sodipodi:cy="11"
- sodipodi:rx="7"
- sodipodi:ry="7"
- sodipodi:type="arc"
- style="fill:#ffffff;fill-opacity:0.25;stroke:none"
- transform="matrix(1.5165499,0,0,1.5165499,-1.6097149,-4.3690752)" />
- <g
- id="g6335"
- transform="matrix(0.04005981,0,0,0.04005981,-0.37704553,-0.13892201)">
- <path
- d="m 22,11 c 0,3.313708 -2.686292,6 -6,6 -3.313708,0 -6,-2.686292 -6,-6 0,0 0,0 0,0 l 6,0 z"
- id="path4234"
- sodipodi:cx="16"
- sodipodi:cy="11"
- sodipodi:end="3.1415927"
- sodipodi:rx="6"
- sodipodi:ry="6"
- sodipodi:start="0"
- sodipodi:type="arc"
- style="fill:#ffffff;fill-opacity:0.25;stroke:none"
- transform="matrix(0,-37.857143,37.857143,0,-113.81988,895.71428)" />
- <path
- d="m 16,14 c 0,1.656854 -1.343146,3 -3,3 -1.656854,0 -3,-1.343146 -3,-3 0,-1.656854 1.343146,-3 3,-3 1.656854,0 3,1.343146 3,3 z"
- id="path4240"
- sodipodi:cx="13"
- sodipodi:cy="14"
- sodipodi:rx="3"
- sodipodi:ry="3"
- sodipodi:type="arc"
- style="fill:#ffffff;fill-opacity:0.25;stroke:none"
- transform="matrix(37.857143,0,0,37.857143,-189.53417,-126.42858)" />
- <!-- outer ring -->
- <path
- d="m 16,11 c 0,3.865993 -3.134007,7 -7,7 C 5.1340068,18 2,14.865993 2,11 2,7.1340068 5.1340068,4 9,4 c 3.865993,0 7,3.1340068 7,7 z"
- id="path2934-8"
- sodipodi:cx="9"
- sodipodi:cy="11"
- sodipodi:rx="7"
- sodipodi:ry="7"
- sodipodi:type="arc"
- style="fill:#5e8019;fill-opacity:1;stroke:none"
- transform="matrix(37.857143,0,0,37.857143,-57.018635,-136.67314)" />
- <!-- rigth tail (black) -->
- <path
- d="m 22,11 c 0,3.313708 -2.686292,6 -6,6 -3.313708,0 -6,-2.686292 -6,-6 0,0 0,0 0,0 l 6,0 z"
- id="path4234-9"
- sodipodi:cx="16"
- sodipodi:cy="11"
- sodipodi:end="3.1415927"
- sodipodi:rx="6"
- sodipodi:ry="6"
- sodipodi:start="0"
- sodipodi:type="arc"
- style="fill:#000000;fill-opacity:1;stroke:none"
- transform="matrix(0,-37.857143,37.857143,0,-132.73292,885.46972)" />
- <!-- left tail (white) -->
- <path
- d="m 22,11 c 0,3.313708 -2.686292,6 -6,6 -3.313708,0 -6,-2.686292 -6,-6 0,0 0,0 0,0 l 6,0 z"
- id="path4238"
- sodipodi:cx="16"
- sodipodi:cy="11"
- sodipodi:end="3.1415927"
- sodipodi:rx="6"
- sodipodi:ry="6"
- sodipodi:start="0"
- sodipodi:type="arc"
- style="fill:#fefefe;fill-opacity:1;stroke:none"
- transform="matrix(0,37.857143,-37.857143,0,700.12422,-325.95886)" />
- <!-- upper (left) ring -->
- <path
- d="m 16,14 c 0,1.656854 -1.343146,3 -3,3 -1.656854,0 -3,-1.343146 -3,-3 0,-1.656854 1.343146,-3 3,-3 1.656854,0 3,1.343146 3,3 z"
- id="path4232"
- sodipodi:cx="13"
- sodipodi:cy="14"
- sodipodi:rx="3"
- sodipodi:ry="3"
- sodipodi:type="arc"
- style="fill:#fefefe;fill-opacity:1;stroke:none"
- transform="matrix(37.857143,0,0,37.857143,-208.44721,-363.816)" />
- <!-- lower (right) ring (almost invisible) -->
- <path
- d="m 16,14 c 0,1.656854 -1.343146,3 -3,3 -1.656854,0 -3,-1.343146 -3,-3 0,-1.656854 1.343146,-3 3,-3 1.656854,0 3,1.343146 3,3 z"
- id="path4240-2"
- sodipodi:cx="13"
- sodipodi:cy="14"
- sodipodi:rx="3"
- sodipodi:ry="3"
- sodipodi:type="arc"
- style="fill:#000000;fill-opacity:1;stroke:none"
- transform="matrix(37.857143,0,0,37.857143,-208.44721,-136.67314)" />
- <!-- upper (left) dot -->
- <path
- d="M 11,7.5 C 11,8.3284271 10.328427,9 9.5,9 8.6715729,9 8,8.3284271 8,7.5 8,6.6715729 8.6715729,6 9.5,6 10.328427,6 11,6.6715729 11,7.5 z"
- id="path4236"
- sodipodi:cx="9.5"
- sodipodi:cy="7.5"
- sodipodi:rx="1.5"
- sodipodi:ry="1.5"
- sodipodi:type="arc"
- style="fill:#000000;fill-opacity:1;stroke:none"
- transform="matrix(25.238096,0,0,25.238096,43.933725,-23.101709)" />
- <!-- lower (right) dot -->
- <path
- d="M 11,7.5 C 11,8.3284271 10.328427,9 9.5,9 8.6715729,9 8,8.3284271 8,7.5 8,6.6715729 8.6715729,6 9.5,6 10.328427,6 11,6.6715729 11,7.5 z"
- id="path4242"
- sodipodi:cx="9.5"
- sodipodi:cy="7.5"
- sodipodi:rx="1.5"
- sodipodi:ry="1.5"
- sodipodi:type="arc"
- style="fill:#fefefe;fill-opacity:1;stroke:none"
- transform="matrix(25.238096,0,0,25.238096,43.933725,204.04114)" />
- </g>
-</svg>
diff --git a/navit/icons/taxi.svg b/navit/icons/taxi.svg
deleted file mode 100644
index ba982fbfb..000000000
--- a/navit/icons/taxi.svg
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="taxi.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ff00ff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568542"
- inkscape:cx="62.077596"
- inkscape:cy="-4.9533923"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="3"
- fit-margin-left="3"
- fit-margin-right="3"
- fit-margin-bottom="3"
- inkscape:window-width="1056"
- inkscape:window-height="697"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-23.765375,54.287223)">
- <g
- id="g8405"
- transform="matrix(0.20485588,0,0,0.20485588,19.908904,-42.569818)">
- <g
- transform="translate(189.22177,45.254834)"
- id="g8026">
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff"
- d="m -169.89648,-99.953125 c 0,34.797526 0,69.595052 0,104.3925781 35.20442,0 70.40885,0 105.613277,0 0,-35.4641931 0,-70.9283851 0,-106.3925731 -35.204427,0 -70.408857,-1e-5 -105.613277,0 l 0,1 0,0.999995 z"
- id="rect3005-2"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff"
- d="m -164.9043,-93.896484 c 0,30.620442 0,61.240885 0,91.8613278 31.87631,0 63.75261,-1e-7 95.628909,0 0,-31.2871098 0,-62.5742188 0,-93.8613278 -31.876299,0 -63.752599,0 -95.628909,0 l 0,1 0,1 z"
- id="rect3003-0"
- inkscape:connector-curvature="0" />
- <path
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:113.22457123px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:#ffffff"
- d="m -95.851562,-91.023438 c -4.590438,0.399807 -12.611478,-2.379191 -13.978938,4.345684 -4.78912,12.085213 -9.57648,24.171126 -14.36677,36.255879 5.89322,-1.657006 14.26497,2.633359 18.25977,-3.582031 0.0775,-6.01085 11.953594,-4.35369 10.081467,1.698667 0.659341,2.218938 5.624343,1.069591 8.175798,1.774353 3.548144,0.957918 9.720167,-1.172827 7.393126,-5.744505 -5.320124,-11.343647 -9.16396,-23.436644 -13.921875,-35.066406 l -0.981731,0.190276 -0.660847,0.128083 z m -28.591798,-0.302734 c -8.29645,1.043471 -16.52773,-0.07534 -24.81445,0.207031 -6.87863,1.180686 -6.08226,13.469253 1.20117,13.5 2.55671,0.806904 7.23408,-1.464487 5.69141,3.109375 0,7.91211 0,15.824219 0,23.736328 5.13132,-0.328397 13.64554,2.413739 16.09765,-3.990234 -0.17203,-7.480546 -0.66879,-15.119534 -0.40039,-22.716797 4.84001,0.993571 12.15082,-1.064583 11.1543,-7.298828 0.1701,-5.127266 -4.53658,-6.937193 -8.92969,-6.546875 z"
- id="text3057-6"
- inkscape:connector-curvature="0" />
- <path
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:47.17690277px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:#ffffff"
- d="m -113.24023,-51.708984 c -5.47536,0.792128 -13.92461,-2.890501 -16.8711,3.923828 -0.6265,4.652906 -2.99778,2.676262 -4.07812,-0.611328 -0.95335,-5.180827 -6.63859,-2.315935 -10.4668,-3.527344 -3.02742,-0.799301 -9.16706,0.446936 -7.04883,4.753906 3.51968,5.15361 7.05809,10.305598 10.57813,15.462891 -4.94925,7.080707 -9.89778,14.161921 -14.84766,21.242187 6.49118,-3.382244 14.81068,2.2215413 20.51953,-2.90625 1.66599,-1.120668 1.57274,-6.060947 3.63086,-5.318359 2.28224,3.042208 3.37743,7.503748 8.00195,7.25 3.90923,0.10997 10.6458,1.8813595 12.43555,-2.828125 -1.73029,-5.912496 -7.36535,-10.34139 -10.27216,-15.794409 -2.34868,-4.979749 5.99189,-9.953758 7.90991,-14.931215 1.49105,-3.576756 10.03963,-10.118329 0.50874,-6.715782 z"
- id="text3061-6"
- inkscape:connector-curvature="0" />
- <path
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:47.17690277px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:#ffffff"
- d="m -91.310547,-51.695312 c -4.045322,0.753173 -12.122193,-2.665989 -13.244143,3.515624 0.009,12.238234 10e-4,24.476571 0.004,36.714844 5.131502,-0.321951 13.629534,2.4146777 16.095702,-3.976562 -0.547388,-12.13627 -0.407715,-24.560809 -0.398438,-36.830078 -0.81901,0.192057 -1.63802,0.384114 -2.457031,0.576172 z"
- id="text3065-3"
- inkscape:connector-curvature="0" />
- </g>
- <rect
- y="-52.659229"
- x="23.842041"
- height="98.392708"
- width="97.612862"
- id="rect3005"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
- <rect
- y="-46.603138"
- x="28.833611"
- height="85.861809"
- width="87.629738"
- id="rect3003"
- style="fill:#ffff00;fill-opacity:1;fill-rule:nonzero;stroke:none" />
- <text
- sodipodi:linespacing="125%"
- id="text3045"
- y="-38.790665"
- x="33.774303"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:53.6074028px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
- xml:space="preserve"><tspan
- y="-38.790665"
- x="33.774303"
- id="tspan3047"
- sodipodi:role="line" /></text>
- <text
- sodipodi:linespacing="125%"
- id="text3049"
- y="-62.020538"
- x="32.43412"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:107.2148056px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
- xml:space="preserve"><tspan
- y="-62.020538"
- x="32.43412"
- id="tspan3051"
- sodipodi:role="line" /></text>
- <text
- sodipodi:linespacing="125%"
- id="text3053"
- y="-32.983196"
- x="35.561218"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:107.2148056px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
- xml:space="preserve"><tspan
- y="-32.983196"
- x="35.561218"
- id="tspan3055"
- sodipodi:role="line" /></text>
- <text
- transform="scale(1.0560535,0.94692174)"
- sodipodi:linespacing="125%"
- id="text3057"
- y="-9.8282604"
- x="36.911568"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:113.22457123px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
- xml:space="preserve"><tspan
- style="font-size:47.17690277px"
- y="-9.8282604"
- x="36.911568"
- id="tspan3059"
- sodipodi:role="line">TA</tspan></text>
- <text
- transform="scale(1.0560535,0.94692174)"
- sodipodi:linespacing="125%"
- id="text3061"
- y="31.687429"
- x="38.798649"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:47.17690277px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
- xml:space="preserve"><tspan
- y="31.687429"
- x="38.798649"
- id="tspan3063"
- sodipodi:role="line">X</tspan></text>
- <text
- transform="scale(1.0560535,0.94692174)"
- sodipodi:linespacing="125%"
- id="text3065"
- y="31.687429"
- x="80.786095"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:47.17690277px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
- xml:space="preserve"><tspan
- y="31.687429"
- x="80.786095"
- id="tspan3067"
- sodipodi:role="line">I</tspan></text>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/tec_common.svg b/navit/icons/tec_common.svg
deleted file mode 100644
index d8c5c0594..000000000
--- a/navit/icons/tec_common.svg
+++ /dev/null
@@ -1,3601 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- width="22"
- height="22"
- id="svg1961"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- sodipodi:docname="tec_common.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/nt/tec_common.png"
- inkscape:export-xdpi="9.0592957"
- inkscape:export-ydpi="9.0592957">
- <metadata
- id="metadata3253">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:contributor>
- <cc:Agent>
- <dc:title>traffic light by http://commons.wikimedia.org/wiki/User:Manuel_Strehl
-camera by KDE e.V.</dc:title>
- </cc:Agent>
- </dc:contributor>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- inkscape:window-height="742"
- inkscape:window-width="1018"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffff61"
- id="base"
- showgrid="false"
- inkscape:zoom="2.828427"
- inkscape:cx="44.187918"
- inkscape:cy="55.425562"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:current-layer="svg1961"
- inkscape:window-maximized="0" />
- <defs
- id="defs1963">
- <linearGradient
- id="linearGradient4522">
- <stop
- style="stop-color:#ffff00;stop-opacity:1;"
- offset="0"
- id="stop4524" />
- <stop
- style="stop-color:#ffff00;stop-opacity:0.67357516;"
- offset="1"
- id="stop4526" />
- </linearGradient>
- <linearGradient
- y2="60.029999"
- x2="77.031303"
- y1="120.132"
- x1="77.031303"
- gradientUnits="userSpaceOnUse"
- id="XMLID_37_">
- <stop
- id="stop2827"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop2829"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- <a:midPointStop
- style="stop-color:#9E9E9E"
- offset="0" />
- <a:midPointStop
- style="stop-color:#9E9E9E"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#616161"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="126.982"
- x2="76.830101"
- y1="57.847698"
- x1="76.830101"
- gradientUnits="userSpaceOnUse"
- id="XMLID_36_">
- <stop
- id="stop2820"
- style="stop-color:rgb(255,255,255)"
- offset="4.02299%" />
- <stop
- id="stop2822"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- offset="100%" />
- </linearGradient>
- <linearGradient
- y2="130.181"
- x2="120.423"
- y1="68.1436"
- x1="64.068398"
- gradientUnits="userSpaceOnUse"
- id="XMLID_35_">
- <stop
- id="stop2813"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop2815"
- style="stop-color:rgb(135,135,135)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="82.084198"
- x2="87.5625"
- y1="75.327103"
- x1="87.5625"
- gradientUnits="userSpaceOnUse"
- id="XMLID_34_">
- <stop
- id="stop2806"
- style="stop-color:rgb(255,255,255)"
- offset="7.47126%" />
- <stop
- id="stop2808"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- offset="100%" />
- </linearGradient>
- <radialGradient
- gradientUnits="userSpaceOnUse"
- fy="88.976601"
- fx="87.766602"
- r="11.4148"
- cy="88.976601"
- cx="87.766602"
- id="XMLID_33_">
- <stop
- id="stop2799"
- style="stop-color:rgb(187,235,255)"
- offset="0" />
- <stop
- id="stop2801"
- style="stop-color:rgb(0,61,215)"
- offset="1" />
- <a:midPointStop
- style="stop-color:#BBEBFF"
- offset="0" />
- <a:midPointStop
- style="stop-color:#BBEBFF"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#003DD7"
- offset="1" />
- </radialGradient>
- <linearGradient
- y2="84.349197"
- x2="87.561501"
- y1="97.340797"
- x1="87.561501"
- gradientUnits="userSpaceOnUse"
- id="XMLID_32_">
- <stop
- id="stop2790"
- style="stop-color:rgb(255,255,255)"
- offset="4.5977%" />
- <stop
- id="stop2792"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- offset="100%" />
- </linearGradient>
- <linearGradient
- y2="84.569901"
- x2="87.560501"
- y1="98.801804"
- x1="87.560501"
- gradientUnits="userSpaceOnUse"
- id="XMLID_31_">
- <stop
- id="stop2783"
- style="stop-color:rgb(255,255,255)"
- offset="0.1685" />
- <stop
- id="stop2785"
- style="stop-color:rgb(54,54,54)"
- offset="1" />
- <a:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.1685" />
- <a:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#363636"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="82.123001"
- x2="105.431"
- y1="81.969704"
- x1="75.442398"
- gradientUnits="userSpaceOnUse"
- id="XMLID_30_">
- <stop
- id="stop2776"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop2778"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="80.375298"
- x2="89.966499"
- y1="95.804703"
- x1="67.565399"
- gradientUnits="userSpaceOnUse"
- id="XMLID_29_">
- <stop
- id="stop2769"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop2771"
- style="stop-color:rgb(153,153,153)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="69.688904"
- x2="87.561501"
- y1="102.759"
- x1="87.561501"
- gradientUnits="userSpaceOnUse"
- id="XMLID_28_">
- <stop
- id="stop2762"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop2764"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="82.155403"
- x2="111.821"
- y1="81.947304"
- x1="71.107399"
- gradientUnits="userSpaceOnUse"
- id="XMLID_27_">
- <stop
- id="stop2755"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop2757"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- <a:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.0337" />
- <a:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#ABABAB"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="64.263496"
- x2="87.561501"
- y1="111.869"
- x1="87.561501"
- gradientUnits="userSpaceOnUse"
- id="XMLID_26_">
- <stop
- id="stop2748"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop2750"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="105.281"
- x2="108.682"
- y1="68.8125"
- x1="75.553703"
- gradientUnits="userSpaceOnUse"
- id="XMLID_25_">
- <stop
- id="stop2741"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop2743"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- </linearGradient>
- <linearGradient
- gradientTransform="matrix(0,1,-1,0,-256.622,-352.346)"
- y2="-326.67001"
- x2="465.18799"
- y1="-360.35999"
- x1="431.49799"
- gradientUnits="userSpaceOnUse"
- id="XMLID_24_">
- <stop
- id="stop2732"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop2734"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="90.118896"
- x2="55.990799"
- y1="77.249001"
- x1="43.121101"
- gradientUnits="userSpaceOnUse"
- id="XMLID_23_">
- <stop
- id="stop2723"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop2725"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="100.333"
- x2="83.369102"
- y1="54.6782"
- x1="37.715302"
- gradientUnits="userSpaceOnUse"
- id="XMLID_22_">
- <stop
- id="stop2714"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop2716"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="82.428001"
- x2="101.62"
- y1="82.064499"
- x1="30.5054"
- gradientUnits="userSpaceOnUse"
- id="XMLID_21_">
- <stop
- id="stop2707"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop2709"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- </linearGradient>
- <linearGradient
- gradientTransform="translate(-780.801,1657.79)"
- y2="-1597.9399"
- x2="885.13098"
- y1="-1599.67"
- x1="885.13098"
- gradientUnits="userSpaceOnUse"
- id="XMLID_20_">
- <stop
- id="stop2700"
- style="stop-color:rgb(255,255,255)"
- offset="0" />
- <stop
- id="stop2702"
- style="stop-color:rgb(207,207,207)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="57.958099"
- x2="104.381"
- y1="61.433601"
- x1="104.381"
- gradientUnits="userSpaceOnUse"
- id="XMLID_19_">
- <stop
- id="stop2693"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop2695"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <linearGradient
- gradientTransform="translate(-780.801,1657.79)"
- y2="-1598.62"
- x2="885.18103"
- y1="-1596.5601"
- x1="885.18103"
- gradientUnits="userSpaceOnUse"
- id="XMLID_18_">
- <stop
- id="stop2686"
- style="stop-color:rgb(255,255,255)"
- offset="0" />
- <stop
- id="stop2688"
- style="stop-color:rgb(189,189,189)"
- offset="1" />
- </linearGradient>
- <linearGradient
- gradientTransform="translate(1,15.5)"
- y2="42.4576"
- x2="103.381"
- y1="45.933601"
- x1="103.381"
- gradientUnits="userSpaceOnUse"
- id="XMLID_15_">
- <stop
- id="stop2673"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop2675"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="57.596199"
- x2="102.565"
- y1="60.411098"
- x1="105.643"
- gradientUnits="userSpaceOnUse"
- id="XMLID_14_">
- <stop
- id="stop2662"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop2664"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="62.2383"
- x2="114.477"
- y1="56.5625"
- x1="114.477"
- gradientUnits="userSpaceOnUse"
- id="XMLID_13_">
- <stop
- id="stop2653"
- style="stop-color:rgb(255,255,255)"
- offset="0%" />
- <stop
- id="stop2655"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- offset="100%" />
- </linearGradient>
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.0845,0,-75.5965)"
- fy="129.33299"
- fx="114.137"
- r="6.4330001"
- cy="129.33299"
- cx="114.137"
- id="XMLID_12_">
- <stop
- id="stop2646"
- style="stop-color:rgb(133,202,255)"
- offset="0" />
- <stop
- id="stop2648"
- style="stop-color:rgb(0,61,169)"
- offset="1" />
- </radialGradient>
- <linearGradient
- y2="53.6199"
- x2="108.185"
- y1="63.373001"
- x1="118.848"
- gradientUnits="userSpaceOnUse"
- id="XMLID_11_">
- <stop
- id="stop2639"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop2641"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="132.177"
- x2="122.192"
- y1="55.616199"
- x1="52.644501"
- gradientUnits="userSpaceOnUse"
- id="XMLID_10_">
- <stop
- id="stop2630"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop2632"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- </linearGradient>
- <linearGradient
- y2="52.224201"
- x2="45.014198"
- y1="57.756302"
- x1="45.014198"
- gradientUnits="userSpaceOnUse"
- id="XMLID_9_">
- <stop
- id="stop2623"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop2625"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <linearGradient
- x1="0"
- y1="0"
- x2="0"
- y2="1.05"
- id="rg">
- <stop
- stop-color="#fff"
- stop-opacity="0.9"
- offset="0"
- id="stop3387" />
- <stop
- stop-color="#fff"
- stop-opacity="0.2"
- offset="0.7"
- id="stop3389" />
- <stop
- stop-color="#fff"
- stop-opacity="0.3"
- offset="1"
- id="stop3391" />
- </linearGradient>
- <radialGradient
- cx="65"
- cy="265"
- r="44"
- fx="65"
- fy="265"
- id="g"
- gradientUnits="userSpaceOnUse">
- <stop
- stop-color="#74fc94"
- offset="0"
- id="stop3373" />
- <stop
- stop-color="#3ad55e"
- offset="0.7"
- id="stop3375" />
- <stop
- stop-color="#00af29"
- offset="1"
- id="stop3377" />
- </radialGradient>
- <radialGradient
- cx="65"
- cy="165"
- r="44"
- fx="65"
- fy="165"
- id="y"
- gradientUnits="userSpaceOnUse">
- <stop
- stop-color="#fcfc74"
- offset="0"
- id="stop3366" />
- <stop
- stop-color="#d4d53a"
- offset="0.7"
- id="stop3368" />
- <stop
- stop-color="#afa500"
- offset="1"
- id="stop3370" />
- </radialGradient>
- <radialGradient
- cx="65"
- cy="65"
- r="44"
- fx="65"
- fy="65"
- id="r"
- gradientUnits="userSpaceOnUse">
- <stop
- stop-color="#fc7474"
- offset="0"
- id="stop3359" />
- <stop
- stop-color="#d53a3a"
- offset="0.7"
- id="stop3361" />
- <stop
- stop-color="#af0000"
- offset="1"
- id="stop3363" />
- </radialGradient>
- <linearGradient
- id="back"
- x1="0"
- y1="0"
- x2="82.849258"
- y2="186.41083"
- gradientTransform="matrix(0.6276459,0,0,1.593255,737.14592,106.67382)"
- gradientUnits="userSpaceOnUse">
- <stop
- stop-color="#5c656c"
- offset="0"
- id="stop3354" />
- <stop
- stop-color="#aab2b7"
- offset="1"
- id="stop3356" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 300 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="600 : 300 : 1"
- inkscape:persp3d-origin="300 : 200 : 1"
- id="perspective3255" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#r"
- id="radialGradient3456"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="65"
- fx="65"
- fy="65"
- r="44" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#y"
- id="radialGradient3458"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="165"
- fx="65"
- fy="165"
- r="44" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#g"
- id="radialGradient3460"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="265"
- fx="65"
- fy="265"
- r="44" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#XMLID_12_"
- id="radialGradient3698"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.0845,0,-75.5965)"
- cx="114.137"
- cy="129.33299"
- fx="114.137"
- fy="129.33299"
- r="6.4330001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient3706"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient3708"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#XMLID_33_"
- id="radialGradient3740"
- gradientUnits="userSpaceOnUse"
- cx="87.766602"
- cy="88.976601"
- fx="87.766602"
- fy="88.976601"
- r="11.4148" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_9_"
- id="linearGradient2781"
- gradientUnits="userSpaceOnUse"
- x1="45.014198"
- y1="57.756302"
- x2="45.014198"
- y2="52.224201" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_10_"
- id="linearGradient2783"
- gradientUnits="userSpaceOnUse"
- x1="52.644501"
- y1="55.616199"
- x2="122.192"
- y2="132.177" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_11_"
- id="linearGradient2785"
- gradientUnits="userSpaceOnUse"
- x1="118.848"
- y1="63.373001"
- x2="108.185"
- y2="53.6199" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#XMLID_12_"
- id="radialGradient2787"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.0845,0,-75.5965)"
- cx="114.137"
- cy="129.33299"
- fx="114.137"
- fy="129.33299"
- r="6.4330001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_13_"
- id="linearGradient2789"
- gradientUnits="userSpaceOnUse"
- x1="114.477"
- y1="56.5625"
- x2="114.477"
- y2="62.2383" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_14_"
- id="linearGradient2791"
- gradientUnits="userSpaceOnUse"
- x1="105.643"
- y1="60.411098"
- x2="102.565"
- y2="57.596199" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient2793"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient2795"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient2797"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_18_"
- id="linearGradient2799"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-780.801,1657.79)"
- x1="885.18103"
- y1="-1596.5601"
- x2="885.18103"
- y2="-1598.62" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_19_"
- id="linearGradient2801"
- gradientUnits="userSpaceOnUse"
- x1="104.381"
- y1="61.433601"
- x2="104.381"
- y2="57.958099" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_20_"
- id="linearGradient2803"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-780.801,1657.79)"
- x1="885.13098"
- y1="-1599.67"
- x2="885.13098"
- y2="-1597.9399" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_21_"
- id="linearGradient2805"
- gradientUnits="userSpaceOnUse"
- x1="30.5054"
- y1="82.064499"
- x2="101.62"
- y2="82.428001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_22_"
- id="linearGradient2807"
- gradientUnits="userSpaceOnUse"
- x1="37.715302"
- y1="54.6782"
- x2="83.369102"
- y2="100.333" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_23_"
- id="linearGradient2809"
- gradientUnits="userSpaceOnUse"
- x1="43.121101"
- y1="77.249001"
- x2="55.990799"
- y2="90.118896" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_24_"
- id="linearGradient2811"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,1,-1,0,-256.622,-352.346)"
- x1="431.49799"
- y1="-360.35999"
- x2="465.18799"
- y2="-326.67001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_25_"
- id="linearGradient2813"
- gradientUnits="userSpaceOnUse"
- x1="75.553703"
- y1="68.8125"
- x2="108.682"
- y2="105.281" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_26_"
- id="linearGradient2815"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="111.869"
- x2="87.561501"
- y2="64.263496" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_27_"
- id="linearGradient2817"
- gradientUnits="userSpaceOnUse"
- x1="71.107399"
- y1="81.947304"
- x2="111.821"
- y2="82.155403" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_28_"
- id="linearGradient2819"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="102.759"
- x2="87.561501"
- y2="69.688904" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_29_"
- id="linearGradient2821"
- gradientUnits="userSpaceOnUse"
- x1="67.565399"
- y1="95.804703"
- x2="89.966499"
- y2="80.375298" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_30_"
- id="linearGradient2823"
- gradientUnits="userSpaceOnUse"
- x1="75.442398"
- y1="81.969704"
- x2="105.431"
- y2="82.123001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_31_"
- id="linearGradient2825"
- gradientUnits="userSpaceOnUse"
- x1="87.560501"
- y1="98.801804"
- x2="87.560501"
- y2="84.569901" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_32_"
- id="linearGradient2827"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="97.340797"
- x2="87.561501"
- y2="84.349197" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#XMLID_33_"
- id="radialGradient2829"
- gradientUnits="userSpaceOnUse"
- cx="87.766602"
- cy="88.976601"
- fx="87.766602"
- fy="88.976601"
- r="11.4148" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_34_"
- id="linearGradient2831"
- gradientUnits="userSpaceOnUse"
- x1="87.5625"
- y1="75.327103"
- x2="87.5625"
- y2="82.084198" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_35_"
- id="linearGradient2833"
- gradientUnits="userSpaceOnUse"
- x1="64.068398"
- y1="68.1436"
- x2="120.423"
- y2="130.181" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_36_"
- id="linearGradient2835"
- gradientUnits="userSpaceOnUse"
- x1="76.830101"
- y1="57.847698"
- x2="76.830101"
- y2="126.982" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_37_"
- id="linearGradient2837"
- gradientUnits="userSpaceOnUse"
- x1="77.031303"
- y1="120.132"
- x2="77.031303"
- y2="60.029999" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4522"
- id="radialGradient2839"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.7696866,0.07789056,-0.06803583,1.5457853,-418.97793,-202.43104)"
- cx="569.94421"
- cy="289.56024"
- fx="569.94421"
- fy="289.56024"
- r="130.18762" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#back"
- id="linearGradient2938"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6276459,0,0,1.593255,737.14592,106.67382)"
- x1="0"
- y1="0"
- x2="82.849258"
- y2="186.41083" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#r"
- id="radialGradient2940"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="65"
- fx="65"
- fy="65"
- r="44" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#y"
- id="radialGradient2942"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="165"
- fx="65"
- fy="165"
- r="44" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#g"
- id="radialGradient2944"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="265"
- fx="65"
- fy="265"
- r="44" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_9_"
- id="linearGradient2946"
- gradientUnits="userSpaceOnUse"
- x1="45.014198"
- y1="57.756302"
- x2="45.014198"
- y2="52.224201" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_10_"
- id="linearGradient2948"
- gradientUnits="userSpaceOnUse"
- x1="52.644501"
- y1="55.616199"
- x2="122.192"
- y2="132.177" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_11_"
- id="linearGradient2950"
- gradientUnits="userSpaceOnUse"
- x1="118.848"
- y1="63.373001"
- x2="108.185"
- y2="53.6199" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#XMLID_12_"
- id="radialGradient2952"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.0845,0,-75.5965)"
- cx="114.137"
- cy="129.33299"
- fx="114.137"
- fy="129.33299"
- r="6.4330001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_13_"
- id="linearGradient2954"
- gradientUnits="userSpaceOnUse"
- x1="114.477"
- y1="56.5625"
- x2="114.477"
- y2="62.2383" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_14_"
- id="linearGradient2956"
- gradientUnits="userSpaceOnUse"
- x1="105.643"
- y1="60.411098"
- x2="102.565"
- y2="57.596199" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient2958"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient2960"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient2962"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_18_"
- id="linearGradient2964"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-780.801,1657.79)"
- x1="885.18103"
- y1="-1596.5601"
- x2="885.18103"
- y2="-1598.62" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_19_"
- id="linearGradient2966"
- gradientUnits="userSpaceOnUse"
- x1="104.381"
- y1="61.433601"
- x2="104.381"
- y2="57.958099" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_20_"
- id="linearGradient2968"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-780.801,1657.79)"
- x1="885.13098"
- y1="-1599.67"
- x2="885.13098"
- y2="-1597.9399" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_21_"
- id="linearGradient2970"
- gradientUnits="userSpaceOnUse"
- x1="30.5054"
- y1="82.064499"
- x2="101.62"
- y2="82.428001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_22_"
- id="linearGradient2972"
- gradientUnits="userSpaceOnUse"
- x1="37.715302"
- y1="54.6782"
- x2="83.369102"
- y2="100.333" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_23_"
- id="linearGradient2974"
- gradientUnits="userSpaceOnUse"
- x1="43.121101"
- y1="77.249001"
- x2="55.990799"
- y2="90.118896" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_24_"
- id="linearGradient2976"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,1,-1,0,-256.622,-352.346)"
- x1="431.49799"
- y1="-360.35999"
- x2="465.18799"
- y2="-326.67001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_25_"
- id="linearGradient2978"
- gradientUnits="userSpaceOnUse"
- x1="75.553703"
- y1="68.8125"
- x2="108.682"
- y2="105.281" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_26_"
- id="linearGradient2980"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="111.869"
- x2="87.561501"
- y2="64.263496" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_27_"
- id="linearGradient2982"
- gradientUnits="userSpaceOnUse"
- x1="71.107399"
- y1="81.947304"
- x2="111.821"
- y2="82.155403" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_28_"
- id="linearGradient2984"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="102.759"
- x2="87.561501"
- y2="69.688904" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_29_"
- id="linearGradient2986"
- gradientUnits="userSpaceOnUse"
- x1="67.565399"
- y1="95.804703"
- x2="89.966499"
- y2="80.375298" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_30_"
- id="linearGradient2988"
- gradientUnits="userSpaceOnUse"
- x1="75.442398"
- y1="81.969704"
- x2="105.431"
- y2="82.123001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_31_"
- id="linearGradient2990"
- gradientUnits="userSpaceOnUse"
- x1="87.560501"
- y1="98.801804"
- x2="87.560501"
- y2="84.569901" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_32_"
- id="linearGradient2992"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="97.340797"
- x2="87.561501"
- y2="84.349197" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#XMLID_33_"
- id="radialGradient2994"
- gradientUnits="userSpaceOnUse"
- cx="87.766602"
- cy="88.976601"
- fx="87.766602"
- fy="88.976601"
- r="11.4148" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_34_"
- id="linearGradient2996"
- gradientUnits="userSpaceOnUse"
- x1="87.5625"
- y1="75.327103"
- x2="87.5625"
- y2="82.084198" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_35_"
- id="linearGradient2998"
- gradientUnits="userSpaceOnUse"
- x1="64.068398"
- y1="68.1436"
- x2="120.423"
- y2="130.181" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_36_"
- id="linearGradient3000"
- gradientUnits="userSpaceOnUse"
- x1="76.830101"
- y1="57.847698"
- x2="76.830101"
- y2="126.982" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_37_"
- id="linearGradient3002"
- gradientUnits="userSpaceOnUse"
- x1="77.031303"
- y1="120.132"
- x2="77.031303"
- y2="60.029999" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4522"
- id="radialGradient3004"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.7696866,0.07789056,-0.06803583,1.5457853,-418.97793,-202.43104)"
- cx="569.94421"
- cy="289.56024"
- fx="569.94421"
- fy="289.56024"
- r="130.18762" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#back"
- id="linearGradient3807"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6276459,0,0,1.593255,737.14592,106.67382)"
- x1="0"
- y1="0"
- x2="82.849258"
- y2="186.41083" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#r"
- id="radialGradient3809"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="65"
- fx="65"
- fy="65"
- r="44" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#y"
- id="radialGradient3811"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="165"
- fx="65"
- fy="165"
- r="44" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#g"
- id="radialGradient3813"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="265"
- fx="65"
- fy="265"
- r="44" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_9_"
- id="linearGradient3815"
- gradientUnits="userSpaceOnUse"
- x1="45.014198"
- y1="57.756302"
- x2="45.014198"
- y2="52.224201" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_10_"
- id="linearGradient3817"
- gradientUnits="userSpaceOnUse"
- x1="52.644501"
- y1="55.616199"
- x2="122.192"
- y2="132.177" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_11_"
- id="linearGradient3819"
- gradientUnits="userSpaceOnUse"
- x1="118.848"
- y1="63.373001"
- x2="108.185"
- y2="53.6199" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#XMLID_12_"
- id="radialGradient3821"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.0845,0,-75.5965)"
- cx="114.137"
- cy="129.33299"
- fx="114.137"
- fy="129.33299"
- r="6.4330001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_13_"
- id="linearGradient3823"
- gradientUnits="userSpaceOnUse"
- x1="114.477"
- y1="56.5625"
- x2="114.477"
- y2="62.2383" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_14_"
- id="linearGradient3825"
- gradientUnits="userSpaceOnUse"
- x1="105.643"
- y1="60.411098"
- x2="102.565"
- y2="57.596199" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient3827"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient3829"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient3831"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_18_"
- id="linearGradient3833"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-780.801,1657.79)"
- x1="885.18103"
- y1="-1596.5601"
- x2="885.18103"
- y2="-1598.62" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_19_"
- id="linearGradient3835"
- gradientUnits="userSpaceOnUse"
- x1="104.381"
- y1="61.433601"
- x2="104.381"
- y2="57.958099" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_20_"
- id="linearGradient3837"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-780.801,1657.79)"
- x1="885.13098"
- y1="-1599.67"
- x2="885.13098"
- y2="-1597.9399" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_21_"
- id="linearGradient3839"
- gradientUnits="userSpaceOnUse"
- x1="30.5054"
- y1="82.064499"
- x2="101.62"
- y2="82.428001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_22_"
- id="linearGradient3841"
- gradientUnits="userSpaceOnUse"
- x1="37.715302"
- y1="54.6782"
- x2="83.369102"
- y2="100.333" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_23_"
- id="linearGradient3843"
- gradientUnits="userSpaceOnUse"
- x1="43.121101"
- y1="77.249001"
- x2="55.990799"
- y2="90.118896" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_24_"
- id="linearGradient3845"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,1,-1,0,-256.622,-352.346)"
- x1="431.49799"
- y1="-360.35999"
- x2="465.18799"
- y2="-326.67001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_25_"
- id="linearGradient3847"
- gradientUnits="userSpaceOnUse"
- x1="75.553703"
- y1="68.8125"
- x2="108.682"
- y2="105.281" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_26_"
- id="linearGradient3849"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="111.869"
- x2="87.561501"
- y2="64.263496" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_27_"
- id="linearGradient3851"
- gradientUnits="userSpaceOnUse"
- x1="71.107399"
- y1="81.947304"
- x2="111.821"
- y2="82.155403" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_28_"
- id="linearGradient3853"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="102.759"
- x2="87.561501"
- y2="69.688904" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_29_"
- id="linearGradient3855"
- gradientUnits="userSpaceOnUse"
- x1="67.565399"
- y1="95.804703"
- x2="89.966499"
- y2="80.375298" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_30_"
- id="linearGradient3857"
- gradientUnits="userSpaceOnUse"
- x1="75.442398"
- y1="81.969704"
- x2="105.431"
- y2="82.123001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_31_"
- id="linearGradient3859"
- gradientUnits="userSpaceOnUse"
- x1="87.560501"
- y1="98.801804"
- x2="87.560501"
- y2="84.569901" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_32_"
- id="linearGradient3861"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="97.340797"
- x2="87.561501"
- y2="84.349197" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#XMLID_33_"
- id="radialGradient3863"
- gradientUnits="userSpaceOnUse"
- cx="87.766602"
- cy="88.976601"
- fx="87.766602"
- fy="88.976601"
- r="11.4148" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_34_"
- id="linearGradient3865"
- gradientUnits="userSpaceOnUse"
- x1="87.5625"
- y1="75.327103"
- x2="87.5625"
- y2="82.084198" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_35_"
- id="linearGradient3867"
- gradientUnits="userSpaceOnUse"
- x1="64.068398"
- y1="68.1436"
- x2="120.423"
- y2="130.181" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_36_"
- id="linearGradient3869"
- gradientUnits="userSpaceOnUse"
- x1="76.830101"
- y1="57.847698"
- x2="76.830101"
- y2="126.982" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_37_"
- id="linearGradient3871"
- gradientUnits="userSpaceOnUse"
- x1="77.031303"
- y1="120.132"
- x2="77.031303"
- y2="60.029999" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4522"
- id="radialGradient3873"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.7696866,0.07789056,-0.06803583,1.5457853,-418.97793,-202.43104)"
- cx="569.94421"
- cy="289.56024"
- fx="569.94421"
- fy="289.56024"
- r="130.18762" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#back"
- id="linearGradient4006"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.6276459,0,0,1.593255,737.14592,106.67382)"
- x1="0"
- y1="0"
- x2="82.849258"
- y2="186.41083" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#r"
- id="radialGradient4008"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="65"
- fx="65"
- fy="65"
- r="44" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#y"
- id="radialGradient4010"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="165"
- fx="65"
- fy="165"
- r="44" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#g"
- id="radialGradient4012"
- gradientUnits="userSpaceOnUse"
- cx="65"
- cy="265"
- fx="65"
- fy="265"
- r="44" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_9_"
- id="linearGradient4014"
- gradientUnits="userSpaceOnUse"
- x1="45.014198"
- y1="57.756302"
- x2="45.014198"
- y2="52.224201" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_10_"
- id="linearGradient4016"
- gradientUnits="userSpaceOnUse"
- x1="52.644501"
- y1="55.616199"
- x2="122.192"
- y2="132.177" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_11_"
- id="linearGradient4018"
- gradientUnits="userSpaceOnUse"
- x1="118.848"
- y1="63.373001"
- x2="108.185"
- y2="53.6199" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#XMLID_12_"
- id="radialGradient4020"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.0845,0,-75.5965)"
- cx="114.137"
- cy="129.33299"
- fx="114.137"
- fy="129.33299"
- r="6.4330001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_13_"
- id="linearGradient4022"
- gradientUnits="userSpaceOnUse"
- x1="114.477"
- y1="56.5625"
- x2="114.477"
- y2="62.2383" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_14_"
- id="linearGradient4024"
- gradientUnits="userSpaceOnUse"
- x1="105.643"
- y1="60.411098"
- x2="102.565"
- y2="57.596199" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient4026"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient4028"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_15_"
- id="linearGradient4030"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,15.5)"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_18_"
- id="linearGradient4032"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-780.801,1657.79)"
- x1="885.18103"
- y1="-1596.5601"
- x2="885.18103"
- y2="-1598.62" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_19_"
- id="linearGradient4034"
- gradientUnits="userSpaceOnUse"
- x1="104.381"
- y1="61.433601"
- x2="104.381"
- y2="57.958099" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_20_"
- id="linearGradient4036"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-780.801,1657.79)"
- x1="885.13098"
- y1="-1599.67"
- x2="885.13098"
- y2="-1597.9399" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_21_"
- id="linearGradient4038"
- gradientUnits="userSpaceOnUse"
- x1="30.5054"
- y1="82.064499"
- x2="101.62"
- y2="82.428001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_22_"
- id="linearGradient4040"
- gradientUnits="userSpaceOnUse"
- x1="37.715302"
- y1="54.6782"
- x2="83.369102"
- y2="100.333" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_23_"
- id="linearGradient4042"
- gradientUnits="userSpaceOnUse"
- x1="43.121101"
- y1="77.249001"
- x2="55.990799"
- y2="90.118896" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_24_"
- id="linearGradient4044"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0,1,-1,0,-256.622,-352.346)"
- x1="431.49799"
- y1="-360.35999"
- x2="465.18799"
- y2="-326.67001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_25_"
- id="linearGradient4046"
- gradientUnits="userSpaceOnUse"
- x1="75.553703"
- y1="68.8125"
- x2="108.682"
- y2="105.281" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_26_"
- id="linearGradient4048"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="111.869"
- x2="87.561501"
- y2="64.263496" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_27_"
- id="linearGradient4050"
- gradientUnits="userSpaceOnUse"
- x1="71.107399"
- y1="81.947304"
- x2="111.821"
- y2="82.155403" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_28_"
- id="linearGradient4052"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="102.759"
- x2="87.561501"
- y2="69.688904" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_29_"
- id="linearGradient4054"
- gradientUnits="userSpaceOnUse"
- x1="67.565399"
- y1="95.804703"
- x2="89.966499"
- y2="80.375298" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_30_"
- id="linearGradient4056"
- gradientUnits="userSpaceOnUse"
- x1="75.442398"
- y1="81.969704"
- x2="105.431"
- y2="82.123001" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_31_"
- id="linearGradient4058"
- gradientUnits="userSpaceOnUse"
- x1="87.560501"
- y1="98.801804"
- x2="87.560501"
- y2="84.569901" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_32_"
- id="linearGradient4060"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="97.340797"
- x2="87.561501"
- y2="84.349197" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#XMLID_33_"
- id="radialGradient4062"
- gradientUnits="userSpaceOnUse"
- cx="87.766602"
- cy="88.976601"
- fx="87.766602"
- fy="88.976601"
- r="11.4148" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_34_"
- id="linearGradient4064"
- gradientUnits="userSpaceOnUse"
- x1="87.5625"
- y1="75.327103"
- x2="87.5625"
- y2="82.084198" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_35_"
- id="linearGradient4066"
- gradientUnits="userSpaceOnUse"
- x1="64.068398"
- y1="68.1436"
- x2="120.423"
- y2="130.181" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_36_"
- id="linearGradient4068"
- gradientUnits="userSpaceOnUse"
- x1="76.830101"
- y1="57.847698"
- x2="76.830101"
- y2="126.982" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#XMLID_37_"
- id="linearGradient4070"
- gradientUnits="userSpaceOnUse"
- x1="77.031303"
- y1="120.132"
- x2="77.031303"
- y2="60.029999" />
- <radialGradient
- cx="65"
- cy="65"
- r="44"
- fx="65"
- fy="65"
- id="r-3"
- gradientUnits="userSpaceOnUse">
- <stop
- stop-color="#fc7474"
- offset="0"
- id="stop3359-5" />
- <stop
- stop-color="#d53a3a"
- offset="0.7"
- id="stop3361-6" />
- <stop
- stop-color="#af0000"
- offset="1"
- id="stop3363-2" />
- </radialGradient>
- <radialGradient
- cx="65"
- cy="165"
- r="44"
- fx="65"
- fy="165"
- id="y-1"
- gradientUnits="userSpaceOnUse">
- <stop
- stop-color="#fcfc74"
- offset="0"
- id="stop3366-2" />
- <stop
- stop-color="#d4d53a"
- offset="0.7"
- id="stop3368-7" />
- <stop
- stop-color="#afa500"
- offset="1"
- id="stop3370-0" />
- </radialGradient>
- <radialGradient
- cx="65"
- cy="265"
- r="44"
- fx="65"
- fy="265"
- id="g-3"
- gradientUnits="userSpaceOnUse">
- <stop
- stop-color="#74fc94"
- offset="0"
- id="stop3373-6" />
- <stop
- stop-color="#3ad55e"
- offset="0.7"
- id="stop3375-0" />
- <stop
- stop-color="#00af29"
- offset="1"
- id="stop3377-6" />
- </radialGradient>
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.0845,0,-75.5965)"
- fy="129.33299"
- fx="114.137"
- r="6.4330001"
- cy="129.33299"
- cx="114.137"
- id="XMLID_12_-7">
- <stop
- id="stop2646-5"
- style="stop-color:rgb(133,202,255)"
- offset="0" />
- <stop
- id="stop2648-9"
- style="stop-color:rgb(0,61,169)"
- offset="1" />
- </radialGradient>
- <radialGradient
- gradientUnits="userSpaceOnUse"
- fy="88.976601"
- fx="87.766602"
- r="11.4148"
- cy="88.976601"
- cx="87.766602"
- id="XMLID_33_-3">
- <stop
- id="stop2799-1"
- style="stop-color:rgb(187,235,255)"
- offset="0" />
- <stop
- id="stop2801-4"
- style="stop-color:rgb(0,61,215)"
- offset="1" />
- <a:midPointStop
- style="stop-color:#BBEBFF"
- offset="0" />
- <a:midPointStop
- style="stop-color:#BBEBFF"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#003DD7"
- offset="1" />
- </radialGradient>
- <linearGradient
- id="linearGradient4333"
- gradientUnits="userSpaceOnUse"
- x1="45.014198"
- y1="57.756302"
- x2="45.014198"
- y2="52.224201">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3494-5" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3496-9" />
- </linearGradient>
- <linearGradient
- id="linearGradient4338"
- gradientUnits="userSpaceOnUse"
- x1="52.644501"
- y1="55.616199"
- x2="122.192"
- y2="132.177">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3501-9" />
- <stop
- offset="1"
- style="stop-color:rgb(171,171,171)"
- id="stop3503-0" />
- </linearGradient>
- <linearGradient
- id="linearGradient4389"
- gradientUnits="userSpaceOnUse"
- x1="30.5054"
- y1="82.064499"
- x2="101.62"
- y2="82.428001">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3571-8" />
- <stop
- offset="1"
- style="stop-color:rgb(171,171,171)"
- id="stop3573-5" />
- </linearGradient>
- <linearGradient
- id="linearGradient4394"
- gradientUnits="userSpaceOnUse"
- x1="37.715302"
- y1="54.6782"
- x2="83.369102"
- y2="100.333">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3578-1" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3580-1" />
- </linearGradient>
- <linearGradient
- id="linearGradient4400"
- gradientUnits="userSpaceOnUse"
- x1="43.121101"
- y1="77.249001"
- x2="55.990799"
- y2="90.118896">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3586-8" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3588-4" />
- </linearGradient>
- <linearGradient
- id="linearGradient4406"
- gradientUnits="userSpaceOnUse"
- x1="431.49799"
- y1="-360.35999"
- x2="465.18799"
- y2="-326.67001"
- gradientTransform="matrix(0,1,-1,0,-256.622,-352.346)">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3594-0" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3596-3" />
- </linearGradient>
- <linearGradient
- id="linearGradient4462"
- gradientUnits="userSpaceOnUse"
- x1="64.068398"
- y1="68.1436"
- x2="120.423"
- y2="130.181">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3673-4" />
- <stop
- offset="1"
- style="stop-color:rgb(135,135,135)"
- id="stop3675-3" />
- </linearGradient>
- <linearGradient
- id="linearGradient4467"
- gradientUnits="userSpaceOnUse"
- x1="76.830101"
- y1="57.847698"
- x2="76.830101"
- y2="126.982">
- <stop
- offset="4.02299%"
- style="stop-color:rgb(255,255,255)"
- id="stop3680-3" />
- <stop
- offset="100%"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- id="stop3682-8" />
- </linearGradient>
- <linearGradient
- id="linearGradient4472"
- gradientUnits="userSpaceOnUse"
- x1="77.031303"
- y1="120.132"
- x2="77.031303"
- y2="60.029999">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3687-0" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3689-4" />
- <a:midPointStop
- offset="0"
- style="stop-color:#9E9E9E" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#9E9E9E" />
- <a:midPointStop
- offset="1"
- style="stop-color:#616161" />
- </linearGradient>
- </defs>
- <g
- id="g4989"
- transform="matrix(0.22,0,0,0.22,-29.483193,11.805007)" />
- <g
- id="g5306"
- transform="matrix(0.19014285,0,0,0.19014277,0.75950753,1.2640333)">
- <g
- id="g5095"
- transform="translate(-134.01451,53.204584)">
- <path
- inkscape:connector-curvature="0"
- id="path16-7"
- d="m 189.33008,-53.65625 c -23.87575,-0.287795 -44.74616,22.615413 -42.27344,46.3828125 1.29746,23.2196375 24.06068,42.5559575 47.24609,39.6640625 22.18894,-1.753781 40.6859,-23.1556466 38.90039,-45.25 -0.85406,-22.371879 -21.34137,-41.858239 -43.87304,-40.796875 z"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path18-2"
- d="m 189.5625,-43.369141 c -20.11368,-0.438427 -36.75304,21.027764 -31.42188,40.4257816 3.9827,18.6327954 26.13024,30.4369084 43.78516,23.0292974 17.6482,-6.42084 26.68208,-29.3939282 17.26758,-45.892579 -5.61857,-10.719107 -17.4657,-17.965159 -29.63086,-17.5625 z"
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path4893"
- d="m 182.96875,-31.714844 c -3.93271,-0.03361 -8.53898,1.147967 -9.00586,5.861328 -4.52322,8.680626 -12.55507,18.8629386 -7.79492,29.0996098 4.5305,9.1947872 19.52694,9.7631362 24.04101,0.2753906 4.01193,-7.0131405 1.66079,-18.3242284 -6.79492,-20.6601564 1.72781,-3.912244 4.87636,-7.287765 6.01563,-11.314453 -0.23257,-3.096788 -4.09464,-3.362125 -6.46094,-3.261719 z"
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path4891"
- d="m 177.70117,-13.382812 c -10.00215,0.129546 -11.12021,16.9801004 -1.5,18.867187 7.28428,2.0945609 13.19729,-6.44001677 10.36914,-12.9648438 -1.19297,-3.7880422 -4.91587,-6.2322902 -8.86914,-5.9023432 z"
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path4889"
- d="m 201.50391,-31.683594 c -9.70273,-0.203292 -15.5541,10.660031 -13.35157,19.337891 -0.50134,7.6215276 -0.73701,17.7481989 7.49024,21.5214842 9.06442,4.7904018 21.17356,-3.5422505 19.73047,-13.7519531 -0.54003,-7.9990621 2.21125,-18.4561591 -5.16016,-24.1054691 -2.4449,-1.955656 -5.56912,-3.080255 -8.70898,-3.001953 z"
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path20-7"
- d="m 201.38477,-26.878906 c -7.87914,0.07587 -9.76802,9.64411 -8.52539,15.714844 -0.77313,6.2277595 -0.35293,15.722291 7.60742,16.7968745 7.61465,1.2900925 12.04787,-7.759782 9.92578,-14.1699219 0.47781,-6.0625916 1.4755,-15.7899766 -6.24219,-18.0117186 -0.89607,-0.257972 -1.83411,-0.36839 -2.76562,-0.330078 z"
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="rect3394-2"
- d="m 131.42383,-50.908203 c 0,31.809245 0,63.618489 0,95.427734 13.94857,0 27.89713,0 41.8457,0 0,-32.475911 0,-64.951823 0,-97.427734 -13.94857,0 -27.89713,0 -41.8457,0 l 0,1 0,1 z"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:2.80745268" />
- <path
- inkscape:connector-curvature="0"
- id="redlight-6"
- d="m 152.36133,-47.316406 c -11.27309,-0.571827 -19.30401,13.304535 -13.33399,22.830078 5.39711,9.571643 21.23236,10.079357 26.54297,0.105469 6.03423,-9.404541 -1.90331,-23.620375 -13.20898,-22.935547 z"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:2.24596214" />
- <path
- inkscape:connector-curvature="0"
- id="yellight-1"
- d="m 152.36719,-19.371094 c -11.27539,-0.577134 -19.31087,13.3034797 -13.33985,22.8300784 5.39859,9.5738906 21.2392,10.0787526 26.54688,0.099609 6.02548,-9.4030295 -1.90641,-23.6099884 -13.20703,-22.9296874 z"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:2.24596214" />
- <path
- inkscape:connector-curvature="0"
- id="grelight-0"
- d="m 152.36719,8.5742188 c -11.27338,-0.5770233 -19.30957,13.2996662 -13.3418,22.8261722 5.39499,9.578871 21.24056,10.083885 26.54883,0.103515 6.02587,-9.403009 -1.90693,-23.6093881 -13.20703,-22.9296872 z"
- style="fill:#ffffff;stroke:#ffffff;stroke-width:2.24596214" />
- <path
- inkscape:connector-curvature="0"
- id="path2627-4"
- d="m 158.73242,-12.521484 c -4.72119,-0.188085 -11.40827,4.2519179 -8.03906,9.4394528 5.20381,5.1716201 16.12627,5.3004129 20.33594,-1.1171876 2.2597,-7.1805562 -7.46106,-8.6642972 -12.29688,-8.3222652 z"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path2634-9"
- d="m 222.00586,-12.65625 c -11.04275,1.024556 -22.35272,-0.896115 -33.29883,0.644531 -2.45382,1.302606 -4.45985,3.8074753 -7.47204,2.4412998 -11.35806,0.7374853 -23.25221,-1.6641958 -34.29554,1.160263 -6.89111,4.8131147 -2.8911,14.1242334 -3.83789,20.9863282 0.60322,10.908775 -1.62332,22.357285 1.12305,32.951172 4.78678,6.90168 14.05609,2.837774 20.89251,3.893628 21.17081,-0.379099 42.528,0.846348 63.58796,-0.612378 7.62485,-3.467658 4.426,-13.088583 5.00586,-19.5 -0.76138,-12.532903 1.51965,-25.5244781 -1.12891,-37.7695315 -2.12436,-3.6962505 -6.67285,-4.4839795 -10.57617,-4.1953125 z"
- style="fill:#ffffff;stroke:#ffffff" />
- <g
- style="fill:#ffffff;stroke:#ffffff"
- transform="matrix(0.86829826,0,0,0.86829826,121.48311,-53.122765)"
- id="g2636-1">
- <linearGradient
- y2="53.6199"
- x2="108.185"
- y1="63.373001"
- x1="118.848"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4344">
- <stop
- id="stop3509-7"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop3511-7"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- </linearGradient>
- <path
- id="path2643-1"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 119.698,62.499 c 0,0.391 -0.292,0.707 -0.652,0.707 l -9.141,0 c -0.361,0 -0.652,-0.316 -0.652,-0.707 l 0,-6.249 c 0,-0.391 0.291,-0.708 0.652,-0.708 l 9.141,0 c 0.36,0 0.652,0.316 0.652,0.708 l 0,6.249 z"
- inkscape:connector-curvature="0" />
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.0845,0,-75.5965)"
- fy="129.33299"
- fx="114.137"
- r="6.4330001"
- cy="129.33299"
- cx="114.137"
- id="radialGradient3514-1">
- <stop
- id="stop3516-5"
- style="stop-color:rgb(133,202,255)"
- offset="0" />
- <stop
- id="stop3518-9"
- style="stop-color:rgb(0,61,169)"
- offset="1" />
- </radialGradient>
- <path
- id="path2650-7"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 119.306,62.263 c 0,0.363 -0.27,0.655 -0.603,0.655 l -8.454,0 c -0.333,0 -0.604,-0.292 -0.604,-0.655 l 0,-5.776 c 0,-0.362 0.271,-0.655 0.604,-0.655 l 8.454,0 c 0.333,0 0.603,0.292 0.603,0.655 l 0,5.776 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- y2="62.2383"
- x2="114.477"
- y1="56.5625"
- x1="114.477"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4353">
- <stop
- id="stop3523-7"
- style="stop-color:rgb(255,255,255)"
- offset="0%" />
- <stop
- id="stop3525-6"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- offset="100%" />
- </linearGradient>
- <path
- id="path2657-7"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 118.389,56.034 -7.825,0 c -0.311,0 -0.56,0.272 -0.56,0.605 l 0,4.459 c 0.97,0.107 2.675,0.021 4.403,-1.391 1.897,-1.547 3.683,-2.111 4.541,-2.305 l 0,-0.762 c 0,-0.334 -0.25,-0.606 -0.559,-0.606 z"
- a:adobe-blending-mode="screen"
- inkscape:connector-curvature="0" />
- </g>
- <g
- style="fill:#ffffff;stroke:#ffffff"
- transform="matrix(0.86829826,0,0,0.86829826,121.48311,-53.122765)"
- id="g2659-3">
- <linearGradient
- y2="57.596199"
- x2="102.565"
- y1="60.411098"
- x1="105.643"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4359">
- <stop
- id="stop3531-6"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop3533-5"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- </linearGradient>
- <path
- id="path2666-6"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 104.38,57.077 c -1.286,0 -2.331,0.978 -2.331,2.18 0,1.202 1.045,2.178 2.331,2.178 1.287,0 2.334,-0.977 2.334,-2.178 0,-1.201 -1.047,-2.18 -2.334,-2.18 z"
- inkscape:connector-curvature="0" />
- <g
- style="fill:#ffffff;stroke:#ffffff"
- id="g2668-3">
- <g
- style="fill:#ffffff;stroke:#ffffff"
- id="g2670-9">
- <linearGradient
- gradientTransform="translate(1,15.5)"
- y2="42.4576"
- x2="103.381"
- y1="45.933601"
- x1="103.381"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4366">
- <stop
- id="stop3540-4"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop3542-8"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <path
- id="path2677-1"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 106.24,59.256 c 0,0.959 -0.834,1.737 -1.86,1.737 -1.025,0 -1.858,-0.777 -1.858,-1.737 0,-0.96 0.833,-1.737 1.858,-1.736 1.027,0 1.86,0.776 1.86,1.736 z"
- inkscape:connector-curvature="0" />
- <path
- id="path2679-2"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 102.435,59.256 c 0,1.003 0.873,1.819 1.945,1.819 1.075,0 1.949,-0.815 1.948,-1.819 10e-4,-1.003 -0.873,-1.821 -1.948,-1.821 -1.072,0 -1.946,0.818 -1.945,1.821 z m 0.175,0 c 0,-0.912 0.794,-1.655 1.77,-1.655 0.978,0 1.771,0.743 1.771,1.654 0,0.912 -0.793,1.654 -1.771,1.654 -0.976,0 -1.77,-0.742 -1.77,-1.653 z"
- inkscape:connector-curvature="0" />
- <path
- id="path2681-9"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 104.389,59.305 c 0.647,-0.447 1.254,-0.598 1.522,-0.647 -0.257,-0.541 -0.836,-0.917 -1.51,-0.917 -0.913,0 -1.652,0.691 -1.652,1.542 0,0.134 0.018,0.263 0.051,0.388 0.268,0.047 0.924,0.094 1.589,-0.366 z"
- inkscape:connector-curvature="0" />
- </g>
- <g
- style="fill:#ffffff;stroke:#ffffff"
- id="g2683-3">
- <linearGradient
- gradientTransform="translate(-780.801,1657.79)"
- y2="-1598.62"
- x2="885.18103"
- y1="-1596.5601"
- x1="885.18103"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4374">
- <stop
- id="stop3550-9"
- style="stop-color:rgb(255,255,255)"
- offset="0" />
- <stop
- id="stop3552-0"
- style="stop-color:rgb(189,189,189)"
- offset="1" />
- </linearGradient>
- <path
- id="path2690-8"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 106.24,59.256 c 0,0.959 -0.834,1.737 -1.86,1.737 -1.025,0 -1.858,-0.777 -1.858,-1.737 0,-0.96 0.833,-1.737 1.858,-1.736 1.027,0 1.86,0.776 1.86,1.736 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- y2="57.958099"
- x2="104.381"
- y1="61.433601"
- x1="104.381"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4379">
- <stop
- id="stop3557-8"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop3559-5"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <path
- id="path2697-0"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 102.435,59.256 c 0,1.003 0.873,1.819 1.945,1.819 1.075,0 1.949,-0.815 1.948,-1.819 10e-4,-1.003 -0.873,-1.821 -1.948,-1.821 -1.072,0 -1.946,0.818 -1.945,1.821 z m 0.175,0 c 0,-0.912 0.794,-1.655 1.77,-1.655 0.978,0 1.771,0.743 1.771,1.654 0,0.912 -0.793,1.654 -1.771,1.654 -0.976,0 -1.77,-0.742 -1.77,-1.653 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- gradientTransform="translate(-780.801,1657.79)"
- y2="-1597.9399"
- x2="885.13098"
- y1="-1599.67"
- x1="885.13098"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4384">
- <stop
- id="stop3564-9"
- style="stop-color:rgb(255,255,255)"
- offset="0" />
- <stop
- id="stop3566-6"
- style="stop-color:rgb(207,207,207)"
- offset="1" />
- </linearGradient>
- <path
- id="path2704-3"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 104.389,59.305 c 0.647,-0.447 1.254,-0.598 1.522,-0.647 -0.257,-0.541 -0.836,-0.917 -1.51,-0.917 -0.913,0 -1.652,0.691 -1.652,1.542 0,0.134 0.018,0.263 0.051,0.388 0.268,0.047 0.924,0.094 1.589,-0.366 z"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- </g>
- <path
- inkscape:connector-curvature="0"
- id="path2711-6"
- d="m 143.06055,-5.2363281 c 0,16.3320311 0,32.6640621 0,48.9960941 19.9095,0 39.81901,0 59.72851,0 0,-16.998698 0,-33.9973962 0,-50.9960941 -19.9095,0 -39.81901,0 -59.72851,0 l 0,1 0,1 z"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path2718-5"
- d="M 195.69922,2.6914062 C 178.36857,4.0070532 160.78876,2.8697101 143.36133,3.25 c 0,13.061849 0,26.123698 0,39.185547 29.972,0 59.94401,0 89.91601,0 0,-9.328125 0,-18.65625 0,-27.984375 -10.33476,-0.188323 -21.45786,0.373524 -31.30859,-0.275391 0.47766,-4.6408996 0.27822,-11.879335 -6.26953,-11.4843748 z"
- style="opacity:0.7;fill:#ffffff;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path2720-9"
- d="m 170.30469,3.2109375 c -2.87017,-0.9311669 -7.51102,0.356897 -6.14844,4.2167969 0,11.5332036 0,23.0664066 0,34.5996096 3.98271,1.976397 9.51749,-0.395163 8.90039,-5.365235 -0.87404,-11.332804 0.0492,-22.699139 -0.26172,-34.0800778 -0.83008,0.2096355 -1.66015,0.4192709 -2.49023,0.6289063 z"
- style="opacity:0.5;fill:#ffffff;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path2727-8"
- d="m 169.57422,3.2109375 c -2.8702,-0.9311814 -7.51316,0.356389 -6.15039,4.2167969 0,11.5332036 0,23.0664066 0,34.5996096 3.97836,1.972757 9.5137,-0.387095 8.90039,-5.355469 -0.86814,-11.335868 0.0487,-22.705692 -0.25977,-34.0898438 -0.83007,0.2096355 -1.66015,0.4192709 -2.49023,0.6289063 z"
- style="opacity:0.7;fill:#ffffff;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path2729-1"
- d="m 226.81836,34.851562 c -18.25052,0.915071 -36.62822,-0.136741 -54.93945,0.253907 -9.60677,0 -19.21355,0 -28.82032,0 -1.4769,4.503654 1.61299,9.656604 6.60743,8.964843 17.73549,-1.094351 35.58478,0.110562 53.39257,-0.324218 10.1517,0 20.30339,0 30.45508,0 1.97276,-3.978362 -0.38709,-9.513706 -5.35547,-8.900391 -0.44557,-0.02431 -0.89421,-0.0052 -1.33984,0.0059 z"
- style="opacity:0.5;fill:#ffffff;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path2736-0"
- d="m 226.81836,34.121094 c -18.25049,0.915066 -36.62821,-0.136738 -54.93945,0.253906 -9.60677,0 -19.21355,0 -28.82032,0 -1.47822,4.505129 1.6152,9.655233 6.60938,8.962891 17.73481,-1.09442 35.5835,0.110619 53.39062,-0.324219 10.1517,0 20.30339,0 30.45508,0 1.9764,-3.982711 -0.39516,-9.517489 -5.36523,-8.900391 -0.44311,-0.01257 -0.88713,-0.01147 -1.33008,0.0078 z"
- style="opacity:0.7;fill:#ffffff;stroke:#ffffff" />
- <g
- style="fill:#ffffff;stroke:#ffffff"
- transform="matrix(0.86829826,0,0,0.86829826,121.48311,-53.122765)"
- id="g2738-4">
- <linearGradient
- y2="105.281"
- x2="108.682"
- y1="68.8125"
- x1="75.553703"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4412">
- <stop
- id="stop3602-4"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop3604-4"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- </linearGradient>
- <path
- id="path2745-4"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 112.278,82.032 c 0,13.65 -11.064,24.717 -24.717,24.717 -13.65,0 -24.716,-11.066 -24.716,-24.717 0,-13.651 11.066,-24.718 24.716,-24.718 13.653,0 24.717,11.067 24.717,24.718 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- y2="64.263496"
- x2="87.561501"
- y1="111.869"
- x1="87.561501"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4417">
- <stop
- id="stop3609-7"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop3611-6"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <path
- id="path2752-3"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 62.635,82.032 c 0,13.744 11.182,24.927 24.927,24.927 13.744,0 24.927,-11.183 24.927,-24.927 0,-13.745 -11.183,-24.928 -24.927,-24.928 -13.746,0 -24.927,11.183 -24.927,24.928 z m 0.421,0 c 0,-13.514 10.993,-24.507 24.506,-24.507 13.513,0 24.506,10.994 24.506,24.507 0,13.513 -10.993,24.506 -24.506,24.506 -13.513,0 -24.506,-10.993 -24.506,-24.506 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- y2="82.155403"
- x2="111.821"
- y1="81.947304"
- x1="71.107399"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4422">
- <stop
- id="stop3616-1"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop3618-7"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- <a:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.0337" />
- <a:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#ABABAB"
- offset="1" />
- </linearGradient>
- <path
- id="path2759-5"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 104.687,82.032 c 0,9.458 -7.667,17.124 -17.125,17.124 -9.458,0 -17.126,-7.666 -17.126,-17.124 0,-9.459 7.668,-17.125 17.126,-17.125 9.458,0 17.125,7.666 17.125,17.125 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- y2="69.688904"
- x2="87.561501"
- y1="102.759"
- x1="87.561501"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4427">
- <stop
- id="stop3623-9"
- style="stop-color:rgb(158,158,158)"
- offset="0" />
- <stop
- id="stop3625-6"
- style="stop-color:rgb(97,97,97)"
- offset="1" />
- </linearGradient>
- <path
- id="path2766-2"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 70.246,82.032 c 0,9.548 7.768,17.315 17.315,17.315 9.549,0 17.315,-7.768 17.315,-17.315 0,-9.549 -7.767,-17.316 -17.315,-17.316 -9.547,0 -17.315,7.767 -17.315,17.316 z m 0.382,0 c 0,-9.338 7.597,-16.936 16.934,-16.936 9.338,0 16.934,7.598 16.934,16.936 0,9.338 -7.596,16.934 -16.934,16.934 -9.337,0 -16.934,-7.596 -16.934,-16.934 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- y2="80.375298"
- x2="89.966499"
- y1="95.804703"
- x1="67.565399"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4432">
- <stop
- id="stop3630-1"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop3632-7"
- style="stop-color:rgb(153,153,153)"
- offset="1" />
- </linearGradient>
- <path
- id="path2773-8"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 102.649,82.032 c 0,8.333 -6.755,15.087 -15.088,15.087 -8.333,0 -15.087,-6.754 -15.087,-15.087 0,-8.334 6.754,-15.088 15.087,-15.088 8.333,0 15.088,6.754 15.088,15.088 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- y2="82.123001"
- x2="105.431"
- y1="81.969704"
- x1="75.442398"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4437">
- <stop
- id="stop3637-5"
- style="stop-color:rgb(255,255,255)"
- offset="0.0337" />
- <stop
- id="stop3639-7"
- style="stop-color:rgb(171,171,171)"
- offset="1" />
- </linearGradient>
- <path
- id="path2780-4"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 100.176,82.032 c 0,6.967 -5.647,12.614 -12.614,12.614 -6.966,0 -12.614,-5.647 -12.614,-12.614 0,-6.967 5.648,-12.615 12.614,-12.615 6.966,0 12.614,5.648 12.614,12.615 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- y2="84.569901"
- x2="87.560501"
- y1="98.801804"
- x1="87.560501"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4442">
- <stop
- id="stop3644-1"
- style="stop-color:rgb(255,255,255)"
- offset="0.1685" />
- <stop
- id="stop3646-8"
- style="stop-color:rgb(54,54,54)"
- offset="1" />
- <a:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.1685" />
- <a:midPointStop
- style="stop-color:#FFFFFF"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#363636"
- offset="1" />
- </linearGradient>
- <path
- id="path2787-5"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 97.999,82.032 c 0,5.766 -4.671,10.438 -10.438,10.438 -5.766,0 -10.438,-4.672 -10.438,-10.438 0,-5.766 4.673,-10.439 10.438,-10.439 5.767,0 10.438,4.674 10.438,10.439 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- y2="84.349197"
- x2="87.561501"
- y1="97.340797"
- x1="87.561501"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4447">
- <stop
- id="stop3651-9"
- style="stop-color:rgb(255,255,255)"
- offset="4.5977%" />
- <stop
- id="stop3653-7"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- offset="100%" />
- </linearGradient>
- <path
- id="path2794-5"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 97.09,82.032 c 0,5.263 -4.264,9.528 -9.528,9.528 -5.264,0 -9.528,-4.266 -9.528,-9.528 0,-5.264 4.265,-9.529 9.528,-9.529 5.264,0 9.528,4.266 9.528,9.529 z"
- inkscape:connector-curvature="0" />
- <g
- style="fill:#ffffff;stroke:#ffffff"
- id="g2796-3">
- <radialGradient
- gradientUnits="userSpaceOnUse"
- fy="88.976601"
- fx="87.766602"
- r="11.4148"
- cy="88.976601"
- cx="87.766602"
- id="radialGradient3657-8">
- <stop
- id="stop3659-8"
- style="stop-color:rgb(187,235,255)"
- offset="0" />
- <stop
- id="stop3661-3"
- style="stop-color:rgb(0,61,215)"
- offset="1" />
- <a:midPointStop
- style="stop-color:#BBEBFF"
- offset="0" />
- <a:midPointStop
- style="stop-color:#BBEBFF"
- offset="0.5" />
- <a:midPointStop
- style="stop-color:#003DD7"
- offset="1" />
- </radialGradient>
- <path
- id="path2803-1"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 93.685,82.032 c 0,3.382 -2.741,6.123 -6.124,6.123 -3.38,0 -6.124,-2.741 -6.124,-6.123 0,-3.383 2.744,-6.124 6.124,-6.124 3.382,0 6.124,2.741 6.124,6.124 z"
- inkscape:connector-curvature="0" />
- <linearGradient
- y2="82.084198"
- x2="87.5625"
- y1="75.327103"
- x1="87.5625"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4457">
- <stop
- id="stop3666-8"
- style="stop-color:rgb(255,255,255)"
- offset="7.47126%" />
- <stop
- id="stop3668-9"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- offset="100%" />
- </linearGradient>
- <path
- id="path2810-6"
- style="fill:#ffffff;stroke:#ffffff"
- d="m 92.081,79.905 c 0,2.006 -2.024,3.632 -4.521,3.632 -2.495,0 -4.518,-1.626 -4.518,-3.632 0,-2.007 2.022,-3.634 4.518,-3.634 2.497,0 4.521,1.627 4.521,3.634 z"
- a:adobe-blending-mode="screen"
- inkscape:connector-curvature="0" />
- </g>
- </g>
- <path
- inkscape:connector-curvature="0"
- id="path2817-3"
- d="m 221.99219,-10.927734 c 2.00417,12.7373145 0.71811,25.962835 1.04883,38.902343 -0.86903,3.272795 1.37576,9.021069 -1.41016,10.837891 -24.86691,-0.63265 -50.06423,0.842197 -74.82813,-0.626953 -3.74488,-1.915273 -5.67619,3.198333 -3.47656,5.792969 3.37785,7.818116 13.47567,5.452994 20.12305,5.248046 21.71058,0.05714 43.64917,0.943566 65.26562,-0.419921 7.61316,-3.478731 4.41247,-13.089118 4.99414,-19.5 -0.77663,-12.559234 1.52957,-25.5285778 -1.10351,-37.837891 -2.41349,-3.993592 -7.61001,-4.418734 -11.5625,-5.914062 0.3164,1.172526 0.63281,2.345052 0.94922,3.517578 z"
- style="opacity:0.5;fill:#ffffff;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path2824-6"
- d="m 224.94336,-12.648438 c -11.99118,0.860995 -24.27607,-0.77212 -36.17578,0.613282 -2.49108,1.26983 -4.4923,3.8519622 -7.53259,2.4647368 -11.35806,0.7374853 -23.25221,-1.6641958 -34.29554,1.160263 -6.8918,4.8098184 -2.88586,14.1158218 -3.84375,20.9746092 0.59597,10.93307 -1.57358,22.3422 1.0918,32.990235 3.06773,4.440356 5.90296,1.481769 9.99023,4.640624 -7.02635,-10.435662 -0.3248,-19.47123 -0.99609,-31.08789 0.33984,-6.12565 -0.94141,-12.3949874 0.32617,-18.32226575 9.20737,-0.93904122 18.4415,0.0808367 27.67188,-0.4140625 4.53405,0.72369475 9.74927,0.80666445 13.02148,-2.87499995 9.469,0.4168704 19.03757,0.2483747 28.58594,-0.1230469 4.85844,-0.051073 9.46258,1.66927493 13.74023,3.8320312 -1.32791,-5.8857087 -4.24859,-13.9242491 -11.58398,-13.8535161 z"
- style="fill:#ffffff;stroke:#ffffff"
- sodipodi:nodetypes="cccccccccccccc" />
- <path
- inkscape:connector-curvature="0"
- id="path4861"
- d="m 221.62891,-13.035156 c -10.79735,1.083912 -22.11621,-0.890704 -32.97461,0.648437 -2.49489,1.319291 -4.53185,3.8481795 -7.58145,2.4502164 -11.32225,0.7209184 -23.15471,-1.6266324 -34.18027,1.129862 -7.24455,4.7303902 -3.25456,14.4012188 -4.19111,21.3508626 0.7739,10.95265 -1.72341,22.49638 1.19111,33.131559 5.06656,7.342366 14.99422,2.959606 22.22648,4.111164 20.9673,-0.473779 42.19906,1.044191 63.00789,-0.767414 7.47337,-3.644571 4.41918,-13.252434 4.94727,-19.714843 -0.79123,-12.549721 1.55396,-25.5639764 -1.11524,-37.8417974 -2.2503,-3.9835116 -7.14068,-4.8336246 -11.33007,-4.4980466 z"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path2831-8"
- d="m 223.08984,-12.335938 c -11.38558,1.091333 -23.03688,-0.832356 -34.32812,0.689454 -2.4331,1.329482 -4.29526,3.9447663 -7.31586,2.4393128 -11.36058,0.7030039 -23.23084,-1.5816938 -34.29352,1.0977962 -6.76693,4.7624611 -2.67848,13.9575255 -3.68945,20.677734 0.61157,10.861635 -1.61095,22.283265 1.11523,32.820313 4.78401,6.684628 13.843,2.552952 20.53901,3.669968 21.03448,-0.278628 42.18142,0.643172 63.14849,-0.459031 7.46028,-3.089643 4.76022,-12.263084 4.97657,-18.435547 -0.47288,-12.711604 1.44234,-25.867161 -0.91797,-38.3378901 -1.83467,-3.2504879 -5.73232,-4.3187569 -9.23438,-4.1621099 z"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- inkscape:connector-curvature="0"
- id="path3750-8"
- d="m 214.83984,-29.207031 c -3.77815,1.055544 -2.84238,6.499095 -4.07422,9.53125 -0.27146,4.182464 -1.34243,9.29785 -6.2539,9.988281 -3.3071,2.1873796 -10.61294,2.5072889 -10.31836,7.7480469 2.51758,4.4200829 8.92718,4.5113586 12.38867,8.1523437 5.21853,4.2875324 -0.36151,13.4540554 5.55664,17.4628904 6.51194,1.187638 7.95202,-8.409253 14.09571,-9.253906 5.55133,-2.156866 12.20011,5.768872 16.75195,0.351563 2.45462,-6.9392483 -8.11569,-12.1166853 -3.52735,-19.0253911 1.03124,-4.2846567 7.71263,-7.7735709 5.21094,-12.5039059 -4.88514,-3.610444 -11.50397,0.763794 -16.83984,-0.347657 -5.20982,-2.772531 -7.55166,-9.9236 -12.99024,-12.103515 z"
- style="fill:#ffffff;fill-opacity:0.87121217;stroke:#ffffff" />
- </g>
- <g
- transform="matrix(2.2180201,0,0,2.2180201,0.10052038,-2.561435)"
- id="g4074">
- <use
- xlink:href="#reflex"
- id="use3399"
- transform="matrix(0.8331005,0,0,0.8331005,614.11663,-360.69592)"
- x="0"
- y="0"
- width="600"
- height="600" />
- <use
- xlink:href="#reflex"
- transform="matrix(0.8331005,0,0,0.8331005,614.11663,-277.38587)"
- id="use3401"
- x="0"
- y="0"
- width="600"
- height="600" />
- <use
- xlink:href="#reflex"
- transform="matrix(0.8331005,0,0,0.8331005,614.11663,-194.07582)"
- id="use3403"
- x="0"
- y="0"
- width="600"
- height="600" />
- <g
- id="g4538"
- transform="matrix(0.07034453,0,0,0.07034453,-0.2582579,2.8565392)">
- <path
- inkscape:connector-curvature="0"
- d="M 112.60846,250.59757 C 112.19594,124.33283 206.65435,17.92223 331.72332,2.0110029 474.76675,-16.138613 604.57352,90.733 613.07847,234.94719 622.43271,379.23416 507.44593,501.2648 363.02544,501.00397 225.13231,501.4104 112.04429,388.588 112.60846,250.59757"
- style="fill:#cc0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
- id="path16" />
- <path
- inkscape:connector-curvature="0"
- d="M 178.5674,250.52998 C 178.28835,157.95605 248.14182,78.466576 340.17371,67.456704 445.3998,53.91728 541.01081,133.02461 547.2773,238.88318 553.98057,345.65772 469.7014,434.54957 363.10433,435.05912 260.7112,434.24626 179.0345,353.31308 178.5674,250.52998"
- style="fill:#fffefe;fill-rule:evenodd;stroke:none"
- id="path18" />
- <path
- inkscape:connector-curvature="0"
- d="m 291.59905,142.76359 34.57794,0 -46.22523,92.08258 c 24.38047,-9.02021 48.97932,-0.78253 62.60425,21.47378 12.43591,22.89934 9.46343,69.26213 -12.73924,86.98712 -27.01324,24.57356 -65.88612,21.80137 -89.90261,-5.45943 -11.7565,-15.27431 -14.80784,-29.96627 -13.83118,-48.77102 l 0,-2.9117 0.36399,-5.82341 1.09193,-5.45944 1.45591,-5.45946 2.18387,-5.45943 1.09193,-2.54774 59.32844,-118.65185 z m -34.9419,146.31303 c -5.50819,50.11162 59.20712,53.30234 61.51231,9.46303 6.12697,-50.88806 -59.29204,-53.33267 -61.51231,-9.46303 z m 119.38484,9.46303 c 6.43028,-58.07633 -25.86671,-141.44807 53.86879,-157.23193 36.49486,-4.34935 69.39243,24.07009 69.15585,61.14576 -6.41209,58.84671 25.86672,140.81113 -53.86877,157.23192 -37.04692,4.16737 -69.11946,-23.62727 -69.15587,-61.14575 z m 30.57417,0 0,-96.08617 0.36399,-2.18378 0.36396,-3.63963 0.72798,-3.63963 1.45589,-3.63962 1.81989,-3.63964 c 6.27864,-8.09817 11.9021,-12.16848 22.20268,-13.83058 18.73275,-2.37183 34.61432,11.79846 34.57792,30.57288 l 0,97.90599 -0.36397,4.00359 -1.09194,3.63962 -1.45591,3.63963 -1.81988,3.27566 c -4.59827,7.898 -13.27915,12.95102 -22.20267,14.19455 -8.95387,0.92204 -18.33237,-1.929 -24.75053,-8.37115 -7.78913,-7.44302 -8.7112,-12.11388 -9.82741,-22.20172"
- style="fill:#000000;fill-rule:evenodd;stroke:none"
- id="path20" />
- </g>
- <g
- id="g3448"
- transform="matrix(-0.1271574,0,0,0.1259947,110.2611,-10.872392)">
- <rect
- id="rect3394"
- y="111.67382"
- x="742.14594"
- height="320"
- width="120"
- style="fill:url(#linearGradient4006);stroke:#000000;stroke-width:10" />
- <circle
- transform="translate(737.14592,106.67382)"
- id="redlight"
- r="40"
- cy="65"
- cx="65"
- style="fill:url(#radialGradient4008);stroke:#000000;stroke-width:8" />
- <circle
- transform="translate(737.14592,106.67382)"
- id="yellight"
- r="40"
- cy="165"
- cx="65"
- style="fill:url(#radialGradient4010);stroke:#000000;stroke-width:8" />
- <circle
- transform="translate(737.14592,106.67382)"
- id="grelight"
- r="40"
- cy="265"
- cx="65"
- style="fill:url(#radialGradient4012);stroke:#000000;stroke-width:8" />
- </g>
- <g
- id="g2682"
- transform="matrix(0.07247238,0,0,0.07247238,-3.1185958,3.3125023)">
- <g
- id="g2620"
- transform="matrix(5.4017057,0,0,5.4017057,-34.965592,-27.802653)">
- <linearGradient
- id="linearGradient3492"
- gradientUnits="userSpaceOnUse"
- x1="45.014198"
- y1="57.756302"
- x2="45.014198"
- y2="52.224201">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3494" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3496" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 45.014,57.186 c -4.356,0 -7.888,-1.297 -7.888,-2.896 0,-1.6 3.532,-2.897 7.888,-2.897 4.357,0 7.889,1.297 7.889,2.897 -10e-4,1.598 -3.532,2.896 -7.889,2.896 z"
- style="fill:url(#linearGradient4014)"
- id="path2627" />
- <linearGradient
- id="linearGradient3499"
- gradientUnits="userSpaceOnUse"
- x1="52.644501"
- y1="55.616199"
- x2="122.192"
- y2="132.177">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3501" />
- <stop
- offset="1"
- style="stop-color:rgb(171,171,171)"
- id="stop3503" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 119.951,51.413 -39.378,0 c -2.108,0 -3.867,1.397 -4.46,3.31 l -42.002,0 c -2.591,0 -4.691,2.101 -4.691,4.692 l 0,49.404 c 0,2.592 2.1,4.691 4.691,4.691 l 85.84,0 c 2.593,0 4.692,-2.1 4.692,-4.691 l 0,-52.715 c 0.001,-2.59 -2.099,-4.691 -4.692,-4.691 z"
- style="fill:url(#linearGradient4016)"
- id="path2634" />
- <g
- id="g2636">
- <linearGradient
- id="linearGradient3507"
- gradientUnits="userSpaceOnUse"
- x1="118.848"
- y1="63.373001"
- x2="108.185"
- y2="53.6199">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3509" />
- <stop
- offset="1"
- style="stop-color:rgb(171,171,171)"
- id="stop3511" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 119.698,62.499 c 0,0.391 -0.292,0.707 -0.652,0.707 l -9.141,0 c -0.361,0 -0.652,-0.316 -0.652,-0.707 l 0,-6.249 c 0,-0.391 0.291,-0.708 0.652,-0.708 l 9.141,0 c 0.36,0 0.652,0.316 0.652,0.708 l 0,6.249 z"
- style="fill:url(#linearGradient4018)"
- id="path2643" />
- <radialGradient
- id="radialGradient3514"
- cx="114.137"
- cy="129.33299"
- r="6.4330001"
- fx="114.137"
- fy="129.33299"
- gradientTransform="matrix(1,0,0,1.0845,0,-75.5965)"
- gradientUnits="userSpaceOnUse">
- <stop
- offset="0"
- style="stop-color:rgb(133,202,255)"
- id="stop3516" />
- <stop
- offset="1"
- style="stop-color:rgb(0,61,169)"
- id="stop3518" />
- </radialGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 119.306,62.263 c 0,0.363 -0.27,0.655 -0.603,0.655 l -8.454,0 c -0.333,0 -0.604,-0.292 -0.604,-0.655 l 0,-5.776 c 0,-0.362 0.271,-0.655 0.604,-0.655 l 8.454,0 c 0.333,0 0.603,0.292 0.603,0.655 l 0,5.776 z"
- style="fill:url(#radialGradient4020)"
- id="path2650" />
- <linearGradient
- id="linearGradient3521"
- gradientUnits="userSpaceOnUse"
- x1="114.477"
- y1="56.5625"
- x2="114.477"
- y2="62.2383">
- <stop
- offset="0%"
- style="stop-color:rgb(255,255,255)"
- id="stop3523" />
- <stop
- offset="100%"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- id="stop3525" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- a:adobe-blending-mode="screen"
- d="m 118.389,56.034 -7.825,0 c -0.311,0 -0.56,0.272 -0.56,0.605 l 0,4.459 c 0.97,0.107 2.675,0.021 4.403,-1.391 1.897,-1.547 3.683,-2.111 4.541,-2.305 l 0,-0.762 c 0,-0.334 -0.25,-0.606 -0.559,-0.606 z"
- style="fill:url(#linearGradient4022)"
- id="path2657" />
- </g>
- <g
- id="g2659">
- <linearGradient
- id="linearGradient3529"
- gradientUnits="userSpaceOnUse"
- x1="105.643"
- y1="60.411098"
- x2="102.565"
- y2="57.596199">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3531" />
- <stop
- offset="1"
- style="stop-color:rgb(171,171,171)"
- id="stop3533" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 104.38,57.077 c -1.286,0 -2.331,0.978 -2.331,2.18 0,1.202 1.045,2.178 2.331,2.178 1.287,0 2.334,-0.977 2.334,-2.178 0,-1.201 -1.047,-2.18 -2.334,-2.18 z"
- style="fill:url(#linearGradient4024)"
- id="path2666" />
- <g
- id="g2668">
- <g
- id="g2670">
- <linearGradient
- id="linearGradient3538"
- gradientUnits="userSpaceOnUse"
- x1="103.381"
- y1="45.933601"
- x2="103.381"
- y2="42.4576"
- gradientTransform="translate(1,15.5)">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3540" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3542" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 106.24,59.256 c 0,0.959 -0.834,1.737 -1.86,1.737 -1.025,0 -1.858,-0.777 -1.858,-1.737 0,-0.96 0.833,-1.737 1.858,-1.736 1.027,0 1.86,0.776 1.86,1.736 z"
- style="fill:url(#linearGradient4026)"
- id="path2677" />
- <path
- inkscape:connector-curvature="0"
- d="m 102.435,59.256 c 0,1.003 0.873,1.819 1.945,1.819 1.075,0 1.949,-0.815 1.948,-1.819 10e-4,-1.003 -0.873,-1.821 -1.948,-1.821 -1.072,0 -1.946,0.818 -1.945,1.821 z m 0.175,0 c 0,-0.912 0.794,-1.655 1.77,-1.655 0.978,0 1.771,0.743 1.771,1.654 0,0.912 -0.793,1.654 -1.771,1.654 -0.976,0 -1.77,-0.742 -1.77,-1.653 z"
- style="fill:url(#linearGradient4028)"
- id="path2679" />
- <path
- inkscape:connector-curvature="0"
- d="m 104.389,59.305 c 0.647,-0.447 1.254,-0.598 1.522,-0.647 -0.257,-0.541 -0.836,-0.917 -1.51,-0.917 -0.913,0 -1.652,0.691 -1.652,1.542 0,0.134 0.018,0.263 0.051,0.388 0.268,0.047 0.924,0.094 1.589,-0.366 z"
- style="fill:url(#linearGradient4030)"
- id="path2681" />
- </g>
- <g
- id="g2683">
- <linearGradient
- id="linearGradient3548"
- gradientUnits="userSpaceOnUse"
- x1="885.18103"
- y1="-1596.5601"
- x2="885.18103"
- y2="-1598.62"
- gradientTransform="translate(-780.801,1657.79)">
- <stop
- offset="0"
- style="stop-color:rgb(255,255,255)"
- id="stop3550" />
- <stop
- offset="1"
- style="stop-color:rgb(189,189,189)"
- id="stop3552" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 106.24,59.256 c 0,0.959 -0.834,1.737 -1.86,1.737 -1.025,0 -1.858,-0.777 -1.858,-1.737 0,-0.96 0.833,-1.737 1.858,-1.736 1.027,0 1.86,0.776 1.86,1.736 z"
- style="fill:url(#linearGradient4032)"
- id="path2690" />
- <linearGradient
- id="linearGradient3555"
- gradientUnits="userSpaceOnUse"
- x1="104.381"
- y1="61.433601"
- x2="104.381"
- y2="57.958099">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3557" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3559" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 102.435,59.256 c 0,1.003 0.873,1.819 1.945,1.819 1.075,0 1.949,-0.815 1.948,-1.819 10e-4,-1.003 -0.873,-1.821 -1.948,-1.821 -1.072,0 -1.946,0.818 -1.945,1.821 z m 0.175,0 c 0,-0.912 0.794,-1.655 1.77,-1.655 0.978,0 1.771,0.743 1.771,1.654 0,0.912 -0.793,1.654 -1.771,1.654 -0.976,0 -1.77,-0.742 -1.77,-1.653 z"
- style="fill:url(#linearGradient4034)"
- id="path2697" />
- <linearGradient
- id="linearGradient3562"
- gradientUnits="userSpaceOnUse"
- x1="885.13098"
- y1="-1599.67"
- x2="885.13098"
- y2="-1597.9399"
- gradientTransform="translate(-780.801,1657.79)">
- <stop
- offset="0"
- style="stop-color:rgb(255,255,255)"
- id="stop3564" />
- <stop
- offset="1"
- style="stop-color:rgb(207,207,207)"
- id="stop3566" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 104.389,59.305 c 0.647,-0.447 1.254,-0.598 1.522,-0.647 -0.257,-0.541 -0.836,-0.917 -1.51,-0.917 -0.913,0 -1.652,0.691 -1.652,1.542 0,0.134 0.018,0.263 0.051,0.388 0.268,0.047 0.924,0.094 1.589,-0.366 z"
- style="fill:url(#linearGradient4036)"
- id="path2704" />
- </g>
- </g>
- </g>
- <linearGradient
- id="linearGradient3569"
- gradientUnits="userSpaceOnUse"
- x1="30.5054"
- y1="82.064499"
- x2="101.62"
- y2="82.428001">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3571" />
- <stop
- offset="1"
- style="stop-color:rgb(171,171,171)"
- id="stop3573" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 29.458,106.97 59.574,0 0,-49.517 -59.574,0 0,49.517 z"
- style="fill:url(#linearGradient4038)"
- id="path2711" />
- <linearGradient
- id="linearGradient3576"
- gradientUnits="userSpaceOnUse"
- x1="37.715302"
- y1="54.6782"
- x2="83.369102"
- y2="100.333">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3578" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3580" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 87.977,82.43 0,-12.899 -58.173,0 0,35.914 94.34,0 0,-23.015 -36.167,0 z"
- style="opacity:0.7;fill:url(#linearGradient4040)"
- id="path2718" />
- <path
- inkscape:connector-curvature="0"
- d="m 54.489,69.416 -0.737,0 0,35.981 0.737,0 0,-35.981 z"
- style="opacity:0.5;fill:#ffffff"
- id="path2720" />
- <linearGradient
- id="linearGradient3584"
- gradientUnits="userSpaceOnUse"
- x1="43.121101"
- y1="77.249001"
- x2="55.990799"
- y2="90.118896">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3586" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3588" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 53.647,69.416 -0.737,0 0,35.981 0.737,0 0,-35.981 z"
- style="opacity:0.7;fill:url(#linearGradient4042)"
- id="path2727" />
- <path
- inkscape:connector-curvature="0"
- d="m 124.837,106.955 0,-0.737 -95.382,0 0,0.737 95.382,0 z"
- style="opacity:0.5;fill:#ffffff"
- id="path2729" />
- <linearGradient
- id="linearGradient3592"
- gradientUnits="userSpaceOnUse"
- x1="431.49799"
- y1="-360.35999"
- x2="465.18799"
- y2="-326.67001"
- gradientTransform="matrix(0,1,-1,0,-256.622,-352.346)">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3594" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3596" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 124.837,106.112 0,-0.737 -95.382,0 0,0.737 95.382,0 z"
- style="opacity:0.7;fill:url(#linearGradient4044)"
- id="path2736" />
- <g
- id="g2738">
- <linearGradient
- id="linearGradient3600"
- gradientUnits="userSpaceOnUse"
- x1="75.553703"
- y1="68.8125"
- x2="108.682"
- y2="105.281">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3602" />
- <stop
- offset="1"
- style="stop-color:rgb(171,171,171)"
- id="stop3604" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 112.278,82.032 c 0,13.65 -11.064,24.717 -24.717,24.717 -13.65,0 -24.716,-11.066 -24.716,-24.717 0,-13.651 11.066,-24.718 24.716,-24.718 13.653,0 24.717,11.067 24.717,24.718 z"
- style="fill:url(#linearGradient4046)"
- id="path2745" />
- <linearGradient
- id="linearGradient3607"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="111.869"
- x2="87.561501"
- y2="64.263496">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3609" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3611" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 62.635,82.032 c 0,13.744 11.182,24.927 24.927,24.927 13.744,0 24.927,-11.183 24.927,-24.927 0,-13.745 -11.183,-24.928 -24.927,-24.928 -13.746,0 -24.927,11.183 -24.927,24.928 z m 0.421,0 c 0,-13.514 10.993,-24.507 24.506,-24.507 13.513,0 24.506,10.994 24.506,24.507 0,13.513 -10.993,24.506 -24.506,24.506 -13.513,0 -24.506,-10.993 -24.506,-24.506 z"
- style="fill:url(#linearGradient4048)"
- id="path2752" />
- <linearGradient
- id="linearGradient3614"
- gradientUnits="userSpaceOnUse"
- x1="71.107399"
- y1="81.947304"
- x2="111.821"
- y2="82.155403">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3616" />
- <stop
- offset="1"
- style="stop-color:rgb(171,171,171)"
- id="stop3618" />
- <a:midPointStop
- offset="0.0337"
- style="stop-color:#FFFFFF" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#FFFFFF" />
- <a:midPointStop
- offset="1"
- style="stop-color:#ABABAB" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 104.687,82.032 c 0,9.458 -7.667,17.124 -17.125,17.124 -9.458,0 -17.126,-7.666 -17.126,-17.124 0,-9.459 7.668,-17.125 17.126,-17.125 9.458,0 17.125,7.666 17.125,17.125 z"
- style="fill:url(#linearGradient4050)"
- id="path2759" />
- <linearGradient
- id="linearGradient3621"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="102.759"
- x2="87.561501"
- y2="69.688904">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3623" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3625" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 70.246,82.032 c 0,9.548 7.768,17.315 17.315,17.315 9.549,0 17.315,-7.768 17.315,-17.315 0,-9.549 -7.767,-17.316 -17.315,-17.316 -9.547,0 -17.315,7.767 -17.315,17.316 z m 0.382,0 c 0,-9.338 7.597,-16.936 16.934,-16.936 9.338,0 16.934,7.598 16.934,16.936 0,9.338 -7.596,16.934 -16.934,16.934 -9.337,0 -16.934,-7.596 -16.934,-16.934 z"
- style="fill:url(#linearGradient4052)"
- id="path2766" />
- <linearGradient
- id="linearGradient3628"
- gradientUnits="userSpaceOnUse"
- x1="67.565399"
- y1="95.804703"
- x2="89.966499"
- y2="80.375298">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3630" />
- <stop
- offset="1"
- style="stop-color:rgb(153,153,153)"
- id="stop3632" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 102.649,82.032 c 0,8.333 -6.755,15.087 -15.088,15.087 -8.333,0 -15.087,-6.754 -15.087,-15.087 0,-8.334 6.754,-15.088 15.087,-15.088 8.333,0 15.088,6.754 15.088,15.088 z"
- style="fill:url(#linearGradient4054)"
- id="path2773" />
- <linearGradient
- id="linearGradient3635"
- gradientUnits="userSpaceOnUse"
- x1="75.442398"
- y1="81.969704"
- x2="105.431"
- y2="82.123001">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3637" />
- <stop
- offset="1"
- style="stop-color:rgb(171,171,171)"
- id="stop3639" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 100.176,82.032 c 0,6.967 -5.647,12.614 -12.614,12.614 -6.966,0 -12.614,-5.647 -12.614,-12.614 0,-6.967 5.648,-12.615 12.614,-12.615 6.966,0 12.614,5.648 12.614,12.615 z"
- style="fill:url(#linearGradient4056)"
- id="path2780" />
- <linearGradient
- id="linearGradient3642"
- gradientUnits="userSpaceOnUse"
- x1="87.560501"
- y1="98.801804"
- x2="87.560501"
- y2="84.569901">
- <stop
- offset="0.1685"
- style="stop-color:rgb(255,255,255)"
- id="stop3644" />
- <stop
- offset="1"
- style="stop-color:rgb(54,54,54)"
- id="stop3646" />
- <a:midPointStop
- offset="0.1685"
- style="stop-color:#FFFFFF" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#FFFFFF" />
- <a:midPointStop
- offset="1"
- style="stop-color:#363636" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 97.999,82.032 c 0,5.766 -4.671,10.438 -10.438,10.438 -5.766,0 -10.438,-4.672 -10.438,-10.438 0,-5.766 4.673,-10.439 10.438,-10.439 5.767,0 10.438,4.674 10.438,10.439 z"
- style="fill:url(#linearGradient4058)"
- id="path2787" />
- <linearGradient
- id="linearGradient3649"
- gradientUnits="userSpaceOnUse"
- x1="87.561501"
- y1="97.340797"
- x2="87.561501"
- y2="84.349197">
- <stop
- offset="4.5977%"
- style="stop-color:rgb(255,255,255)"
- id="stop3651" />
- <stop
- offset="100%"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- id="stop3653" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 97.09,82.032 c 0,5.263 -4.264,9.528 -9.528,9.528 -5.264,0 -9.528,-4.266 -9.528,-9.528 0,-5.264 4.265,-9.529 9.528,-9.529 5.264,0 9.528,4.266 9.528,9.529 z"
- style="fill:url(#linearGradient4060)"
- id="path2794" />
- <g
- id="g2796">
- <radialGradient
- id="radialGradient3657"
- cx="87.766602"
- cy="88.976601"
- r="11.4148"
- fx="87.766602"
- fy="88.976601"
- gradientUnits="userSpaceOnUse">
- <stop
- offset="0"
- style="stop-color:rgb(187,235,255)"
- id="stop3659" />
- <stop
- offset="1"
- style="stop-color:rgb(0,61,215)"
- id="stop3661" />
- <a:midPointStop
- offset="0"
- style="stop-color:#BBEBFF" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#BBEBFF" />
- <a:midPointStop
- offset="1"
- style="stop-color:#003DD7" />
- </radialGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 93.685,82.032 c 0,3.382 -2.741,6.123 -6.124,6.123 -3.38,0 -6.124,-2.741 -6.124,-6.123 0,-3.383 2.744,-6.124 6.124,-6.124 3.382,0 6.124,2.741 6.124,6.124 z"
- style="fill:url(#radialGradient4062)"
- id="path2803" />
- <linearGradient
- id="linearGradient3664"
- gradientUnits="userSpaceOnUse"
- x1="87.5625"
- y1="75.327103"
- x2="87.5625"
- y2="82.084198">
- <stop
- offset="7.47126%"
- style="stop-color:rgb(255,255,255)"
- id="stop3666" />
- <stop
- offset="100%"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- id="stop3668" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- a:adobe-blending-mode="screen"
- d="m 92.081,79.905 c 0,2.006 -2.024,3.632 -4.521,3.632 -2.495,0 -4.518,-1.626 -4.518,-3.632 0,-2.007 2.022,-3.634 4.518,-3.634 2.497,0 4.521,1.627 4.521,3.634 z"
- style="fill:url(#linearGradient4064)"
- id="path2810" />
- </g>
- </g>
- <linearGradient
- id="linearGradient3671"
- gradientUnits="userSpaceOnUse"
- x1="64.068398"
- y1="68.1436"
- x2="120.423"
- y2="130.181">
- <stop
- offset="0.0337"
- style="stop-color:rgb(255,255,255)"
- id="stop3673" />
- <stop
- offset="1"
- style="stop-color:rgb(135,135,135)"
- id="stop3675" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- a:adobe-blending-mode="multiply"
- d="m 121.345,51.624 c 0.137,0.44 0.211,0.907 0.211,1.394 l 0,52.715 c 0,2.591 -2.1,4.691 -4.691,4.691 l -85.843,0 c -0.485,0 -0.952,-0.074 -1.393,-0.21 0.594,1.91 2.375,3.297 4.481,3.297 l 85.84,0 c 2.593,0 4.692,-2.1 4.692,-4.691 l 0,-52.716 c 0.002,-2.105 -1.385,-3.888 -3.297,-4.48 z"
- style="opacity:0.5;fill:url(#linearGradient4066)"
- id="path2817" />
- <linearGradient
- id="linearGradient3678"
- gradientUnits="userSpaceOnUse"
- x1="76.830101"
- y1="57.847698"
- x2="76.830101"
- y2="126.982">
- <stop
- offset="4.02299%"
- style="stop-color:rgb(255,255,255)"
- id="stop3680" />
- <stop
- offset="100%"
- style="stop-opacity:0;stop-color:rgb(255,255,255)"
- id="stop3682" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- a:adobe-blending-mode="screen"
- d="m 31.807,61.8 c 0,-2.59 2.1,-4.691 4.691,-4.691 l 42.002,0 C 79.092,55.197 80.853,53.8 82.96,53.8 l 39.379,0 c 0.677,0 1.318,0.145 1.9,0.403 -0.729,-1.642 -2.373,-2.79 -4.288,-2.79 l -39.378,0 c -2.108,0 -3.867,1.397 -4.46,3.31 l -42.002,0 c -2.591,0 -4.691,2.101 -4.691,4.692 l 0,49.404 c 0,1.915 1.148,3.559 2.792,4.287 -0.259,-0.581 -0.405,-1.224 -0.405,-1.899 l 0,-49.407 z"
- style="fill:url(#linearGradient4068)"
- id="path2824" />
- <linearGradient
- id="linearGradient3685"
- gradientUnits="userSpaceOnUse"
- x1="77.031303"
- y1="120.132"
- x2="77.031303"
- y2="60.029999">
- <stop
- offset="0"
- style="stop-color:rgb(158,158,158)"
- id="stop3687" />
- <stop
- offset="1"
- style="stop-color:rgb(97,97,97)"
- id="stop3689" />
- <a:midPointStop
- offset="0"
- style="stop-color:#9E9E9E" />
- <a:midPointStop
- offset="0.5"
- style="stop-color:#9E9E9E" />
- <a:midPointStop
- offset="1"
- style="stop-color:#616161" />
- </linearGradient>
- <path
- inkscape:connector-curvature="0"
- d="m 80.573,50.992 c -2.128,0 -3.961,1.331 -4.716,3.31 -0.506,0 -41.747,0 -41.747,0 -2.818,0 -5.112,2.293 -5.112,5.114 l 0,49.404 c 0,2.82 2.293,5.113 5.112,5.113 l 85.84,0 c 2.82,0 5.113,-2.293 5.113,-5.113 l 0,-52.716 c 0,-2.819 -2.293,-5.112 -5.113,-5.112 l -39.377,0 z m -50.732,57.827 0,-49.404 c 0,-2.355 1.916,-4.271 4.27,-4.271 l 42.314,0 0.092,-0.296 c 0.558,-1.802 2.188,-3.014 4.057,-3.014 l 39.378,0 c 2.356,0 4.271,1.917 4.271,4.271 l 0,52.715 c 0,2.355 -1.914,4.271 -4.271,4.271 l -85.84,0 c -2.355,0 -4.271,-1.916 -4.271,-4.272 z"
- style="fill:url(#linearGradient4070)"
- id="path2831" />
- </g>
- <path
- transform="translate(7.0710115,-4.2372125e-6)"
- d="m 690.1362,379.38269 -89.82448,-17.29388 -68.80954,60.2724 -11.30983,-90.77226 -78.58578,-46.81657 82.83461,-38.80646 20.24087,-89.20663 62.50444,66.78854 91.09532,-8.31616 -44.20475,80.08405 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="1.306219"
- sodipodi:arg1="0.67790049"
- sodipodi:r2="72.924919"
- sodipodi:r1="139.80701"
- sodipodi:cy="291.70145"
- sodipodi:cx="581.24176"
- sodipodi:sides="5"
- id="path3750"
- style="fill:#ffff00;fill-opacity:0.87121217;stroke:none"
- sodipodi:type="star" />
- </g>
- </g>
- </g>
- <use
- xlink:href="#reflex"
- id="use3399-4"
- transform="matrix(0.40652342,0,0,0.40652342,329.15164,-188.22696)"
- x="0"
- y="0"
- width="600"
- height="600" />
- <use
- xlink:href="#reflex"
- transform="matrix(0.40652342,0,0,0.40652342,329.15164,-147.57462)"
- id="use3401-8"
- x="0"
- y="0"
- width="600"
- height="600" />
- <use
- xlink:href="#reflex"
- transform="matrix(0.40652342,0,0,0.40652342,329.15164,-106.92228)"
- id="use3403-7"
- x="0"
- y="0"
- width="600"
- height="600" />
-</svg>
diff --git a/navit/icons/telephone.svg b/navit/icons/telephone.svg
deleted file mode 100644
index e4e63ee7f..000000000
--- a/navit/icons/telephone.svg
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.92.1 r15371"
- version="1.0"
- sodipodi:docname="telephone.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/projets/navit/icons/png/cinema.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient3156">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3158" />
- <stop
- id="stop3166"
- offset="0.41698599"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop3164"
- offset="0.41698599"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- style="stop-color:#3d3d3d;stop-opacity:1;"
- offset="1"
- id="stop3160" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2399"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2435"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#22a638"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="-0.32675438"
- inkscape:cy="7.3836008"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="943"
- inkscape:window-height="682"
- inkscape:window-x="162"
- inkscape:window-y="13"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- inkscape:connector-curvature="0"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#f7f7f7;stroke-width:3.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4.190641,5.6647526 c -0.2178301,2.1401644 1.4084714,5.3870244 3.1250002,7.9388004 1.7107562,2.543195 4.3255618,5.23545 6.2954938,5.529029 2.898519,0.431968 3.458947,-1.695083 3.458947,-1.695083 l -3.1875,-3.257582 c 0,0 -0.534189,0.787247 -1.736136,0.672335 C 11.566706,14.796826 9.1411734,12.501366 7.8276651,8.871859 7.4270935,7.764994 9,7 9,7 L 7.0883884,2.867417 c 0,0 -2.6325826,0.6786173 -2.8977474,2.7973356 z"
- id="path2441-8"
- sodipodi:nodetypes="cssccssccc" />
- <path
- style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:0.29999999999999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1;opacity:1"
- d="M 4.4330581,5.6647531 C 4.215228,7.804918 5.8415295,11.051777 7.5580583,13.603554 C 9.2688145,16.146749 11.88362,18.839003 13.853552,19.132583 C 16.752071,19.564551 17.312499,17.4375 17.312499,17.4375 L 14.124999,14.179918 C 14.124999,14.179918 13.59081,14.967165 12.388863,14.852253 C 11.809123,14.796827 9.3835905,12.501366 8.0700822,8.8718598 C 7.6695106,7.7649945 9.2424171,7 9.2424171,7 L 7.3308055,2.8674175 C 7.3308055,2.8674175 4.6982229,3.5460348 4.4330581,5.6647531 z"
- id="path2441"
- sodipodi:nodetypes="cssccssccc" />
- </g>
-</svg>
diff --git a/navit/icons/theater.svg b/navit/icons/theater.svg
deleted file mode 100644
index 0d403914b..000000000
--- a/navit/icons/theater.svg
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="theater.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="25.45582"
- inkscape:cy="47.86992"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="685"
- inkscape:window-width="968"
- inkscape:window-x="25"
- inkscape:window-y="25"
- inkscape:zoom="3.6867085"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false"
- inkscape:window-maximized="0" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path4460"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path4462"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path4464"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path4466"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2543"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-536.27327,44.693248)">
- <rect
- height="10"
- id="rect4134"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="8"
- x="2"
- y="2" />
- </g>
- <g
- id="g8445"
- transform="matrix(0.21449677,0,0,0.21449738,0.17393709,0.93116062)">
- <g
- transform="translate(153.52448,0)"
- id="g8129">
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:3.68696237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -107.99023,10.640625 c -8.37278,1.913595 -12.80283,10.983446 -21.48047,12.457031 -6.83807,1.980753 -14.57658,-2.311797 -20.89063,0.679688 -5.10797,5.256149 0.30653,12.657186 1.17335,18.484463 5.26806,16.018607 10.90437,35.539329 27.4536,43.333896 7.88526,3.689775 17.68846,0.08512 21.31836,-7.810547 3.270503,-5.021646 2.464536,-11.180011 0.21875,-16.36914 -3.38873,-14.125917 -2.11681,-28.948941 -0.0508,-43.109375 -0.49239,-3.93997 -3.25905,-8.26155 -7.74218,-7.666016 z"
- id="path3327-2"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.68696237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -99.056641,4.65625 c -6.502569,1.5036644 -5.357189,9.838507 -7.492189,14.646484 -3.52222,16.766236 -3.69175,34.923266 2.50586,51.058594 4.505067,8.351985 16.436547,10.056881 23.486329,3.916016 14.406765,-10.356297 18.341424,-28.91707 23.894532,-44.705078 1.10485,-4.140108 3.736954,-11.945037 -2.517579,-12.964844 -7.793573,0.469995 -16.251219,2.763693 -23.335937,-1.978516 -5.900549,-2.289469 -9.724731,-8.7628932 -15.939453,-9.9843748 -0.199205,0.024936 -0.403001,-0.027011 -0.601563,0.011719 z"
- id="path8079"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.68696237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -87.904297,22.185547 c -5.858901,1.086835 -15.158483,2.294621 -15.292973,10.066406 -0.42452,8.137959 10.279316,11.080131 16.017582,6.820313 6.245902,-2.466038 9.181028,-12.394139 2.482422,-16.083985 -0.977168,-0.532707 -2.089871,-0.842195 -3.207031,-0.802734 z"
- id="path8077"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.68696237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -76.71875,24.990234 c -8.314543,1.107961 -8.789652,12.606326 -4.117188,17.892578 3.433628,5.865964 14.801923,6.192383 15.664063,-1.710937 -0.363441,-6.589438 -3.20463,-16.572847 -11.546875,-16.181641 z"
- id="path8075"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.68696237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -88.712891,45.238281 c -7.487261,-0.005 -16.349239,8.243582 -11.738279,15.783203 2.878401,4.857095 8.841337,1.124414 12.820311,2.517578 3.923208,6.259198 14.17702,2.213766 13.625,-4.851562 0.503561,-7.656325 -7.61511,-13.582474 -14.707032,-13.449219 z"
- id="path3331-5"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:3.68696237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -98.943359,3.1132812 c -7.512651,0.8525345 -6.856401,9.9358688 -8.851561,15.2382808 -3.71987,17.113948 -3.85605,35.574972 2.17383,52.15625 4.32317,8.836122 16.638104,11.993356 24.509762,5.896485 15.348103,-9.72135 19.709157,-28.841239 25.330078,-44.853516 1.245499,-4.872412 4.615403,-12.551888 -0.882812,-15.90039 -6.871838,-2.248569 -14.308975,2.790636 -21.191407,-0.56836 -7.479173,-2.060192 -12.217609,-9.0638595 -19.173828,-11.8183591 -0.625411,-0.1285506 -1.276964,-0.2109292 -1.914062,-0.1503907 z"
- id="path3354-4"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff"
- d="m -110.47266,50.949219 c -6.45479,0.587059 -5.29965,11.601444 -12.35742,10.08789 -3.78136,-1.772326 -10.92342,0.04676 -9.06054,5.251953 3.95864,10.423128 20.07703,9.860621 24.86718,0.417969 2.61048,-4.572914 4.83229,-13.092764 -1.50976,-15.611328 -0.62203,-0.178828 -1.30115,-0.265745 -1.93946,-0.146484 z"
- id="path8069"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff"
- d="m -134.5957,34.808594 c -6.37442,-0.146102 -9.49706,9.795061 -3.32422,12.589844 3.77866,3.103966 11.00746,6.785298 14.36523,1.132812 4.11691,-7.117817 -4.69619,-13.434843 -11.04101,-13.722656 z"
- id="path8067"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff"
- d="m -113.46289,29.597656 c -9.10094,-0.923258 -13.08885,13.528795 -4.63477,17.15625 6.36107,1.902589 9.92919,-5.852325 10.64649,-10.980468 0.18671,-3.344105 -2.60938,-6.363493 -6.01172,-6.175782 z"
- id="path3360-7"
- inkscape:connector-curvature="0" />
- </g>
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#b26609;stroke-width:3.68696237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3327"
- d="m 46.262801,15.055173 c -1.711072,0.004 -3.615881,1.488872 -4.829063,2.729861 -5.186979,4.319695 -8.982548,7.414247 -17.651246,9.94749 -3.293497,1.07903 -10.000003,-0.234321 -16.5781207,-0.737962 -4.1999306,-0.710036 -0.6003568,7.425213 -0.038707,10.733449 3.7346097,12.685703 8.0318017,25.525526 15.6211597,36.160137 4.328187,5.224575 10.314256,9.778542 17.026178,9.695501 5.546431,-0.501616 10.124222,-5.33214 11.422696,-11.087429 0.112184,-0.388485 0.215786,-0.781841 0.309789,-1.175935 0.148811,-0.603395 0.292447,-1.205507 0.425953,-1.811914 -0.818575,-1.384293 -1.436718,-2.911505 -1.797763,-4.51177 -0.112184,-0.388485 -0.210256,-0.78184 -0.304259,-1.175935 C 46.852502,51.58937 47.038392,38.717267 48.34824,26.232601 c 0.381451,-2.003697 0.844563,-3.987315 1.344166,-5.957693 -0.347168,-1.251831 -0.691249,-2.506007 -1.023359,-3.761806 -0.665936,-1.060597 -1.50996,-1.460044 -2.406232,-1.457929 z" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#b26609;fill-opacity:1;fill-rule:evenodd;stroke:#b26609;stroke-width:3.68696237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3331"
- d="m 54.892053,9.1094812 c -1.373327,0.38269 -1.177501,2.3240758 -1.631814,3.4558218 -2.026037,7.024815 -4.061367,14.17293 -4.143147,21.598891 -0.623125,11.156084 -0.224147,22.680349 3.357665,33.232286 2.113948,4.759932 7.178515,8.197096 12.092014,6.851651 6.927977,-1.549529 12.450392,-7.202959 16.047094,-13.601301 6.743028,-11.427312 10.549221,-24.460099 14.000408,-37.402077 0.066,-0.688241 0.325094,-1.747201 -0.06087,-2.243884 -3.325846,0.250113 -6.674877,0.726625 -10.017675,1.043946 -3.642846,0.375834 -7.370032,0.0066 -10.781034,-1.439925 C 67.667857,18.417975 62.305534,14.48051 57.425513,10.039434 56.679522,9.4981475 55.805735,9.0731276 54.892053,9.1094812 Z M 65.778188,26.640577 c 2.886224,-0.100373 4.204791,4.374115 2.240287,6.419673 -2.646161,3.093746 -6.799815,5.171517 -10.709127,4.073788 C 54.908486,36.198011 53.550682,32.4443 55.378831,30.246392 58.258252,27.5338 62.393666,27.99256 65.778188,26.640577 Z m 11.677151,2.783861 c 3.029882,-0.09776 5.237735,3.008728 5.631134,6.017691 0.791299,2.071264 2.191167,4.399728 1.200354,6.68365 -0.727151,1.720273 -2.787962,2.036976 -4.275906,1.403929 -3.559512,-0.896904 -5.931766,-4.717757 -6.001752,-8.597555 -0.32359,-2.225552 0.640451,-5.079647 2.920666,-5.447722 0.173054,-0.03672 0.34854,-0.05622 0.525504,-0.05998 z M 65.700743,49.691389 c 3.739414,0.06622 7.157573,2.538999 9.348355,5.693707 1.392203,2.590645 0.728894,6.746152 -2.096465,7.805603 -1.940497,0.463882 -3.224408,-1.552551 -4.768213,-2.417875 -2.471954,-1.717142 -5.629786,-1.739454 -8.330549,-0.713964 -1.328816,0.451567 -3.129653,0.123553 -3.634241,-1.463923 -0.863554,-2.208441 0.366721,-4.764515 2.146249,-5.939698 2.097536,-1.754561 4.658184,-2.954529 7.334864,-2.96385 z" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#b26609;stroke-width:3.68696237;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccccccccc"
- id="path3354"
- d="M 49.866794,63.822542 C 46.849878,51.59125 47.0409,38.714542 48.350738,26.229876 c 1.11142,-5.837962 2.881385,-11.490897 4.39465,-17.2129465 1.937267,-3.085368 5.382941,-0.6218635 7.231594,1.2691635 5.186982,4.319695 8.985235,7.417051 17.653931,9.950294 3.293497,1.07903 9.997601,-0.236709 16.57572,-0.740355 4.199929,-0.710036 0.604249,7.425955 0.04291,10.734192 -3.73461,12.685707 -8.036725,25.521965 -15.626082,36.156576 -4.328188,5.224574 -10.311499,9.782275 -17.02342,9.699234 -5.546431,-0.501615 -10.125515,-5.334011 -11.423994,-11.0893 -0.112139,-0.388485 -0.214989,-0.780093 -0.308948,-1.174192 z" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#b26609;fill-opacity:1"
- id="path3360"
- d="m 32.284061,70.407487 c -2.759145,-0.415691 -5.394752,-2.190353 -6.721609,-4.886489 1.469318,-1.770641 3.567577,0.023 5.283053,0.192208 4.001109,0.54867 7.740407,-2.304824 9.68946,-5.928316 1.263499,-1.31343 1.428131,-4.895464 3.625581,-4.370226 1.584829,0.951337 1.286187,3.140301 0.899048,4.73059 -0.250587,2.12042 -1.200676,4.026832 -2.45655,5.643411 -0.989353,1.437235 -1.97178,3.081838 -3.68293,3.557827 -2.188225,0.441569 -4.365682,1.563305 -6.636053,1.060942 z m -9.77586,-23.200663 c -2.109166,-1.350351 -4.6515,-2.180683 -6.146615,-4.422249 -0.333469,-2.550243 2.632718,-4.213169 4.605772,-3.217166 2.323494,0.78848 4.520721,2.231599 5.991123,4.36908 0.975981,1.923249 -0.718064,4.960125 -2.825862,3.969515 -0.558972,-0.183232 -1.079856,-0.474654 -1.624418,-0.69918 z m 13.452304,-4.721438 c -1.475178,-2.101283 -1.489007,-5.758978 0.803485,-7.200686 1.505659,-1.07884 3.666375,-1.820328 5.266706,-0.546998 0.840034,1.87761 -0.639422,3.598494 -1.306994,5.222969 -0.403344,1.640803 -1.395215,3.483338 -3.123774,3.64677 -0.695976,0.01858 -1.313921,-0.482674 -1.639423,-1.122055 z" />
- </g>
-</svg>
diff --git a/navit/icons/toggle_fullscreen.svg b/navit/icons/toggle_fullscreen.svg
deleted file mode 100644
index 0d64d21d1..000000000
--- a/navit/icons/toggle_fullscreen.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- id="svg2933"
- version="1.1"
- inkscape:version="0.47 r22583"
- width="96"
- height="96"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="osd_fullscreen.svg"
- style="display:inline">
- <metadata
- id="metadata2939">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs2937">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- id="perspective2941" />
- <inkscape:perspective
- id="perspective4247"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1450"
- inkscape:window-height="991"
- id="namedview2935"
- showgrid="false"
- inkscape:zoom="7.6354167"
- inkscape:cx="48"
- inkscape:cy="48"
- inkscape:window-x="310"
- inkscape:window-y="46"
- inkscape:window-maximized="0"
- inkscape:current-layer="layer1" />
- <g
- inkscape:groupmode="layer"
- id="layer1"
- inkscape:label="svg"
- style="display:inline">
- <path
- style="fill:none;stroke:#808080;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 44.404449,27.021404 -17.366603,-0.0542 -0.0396,17.427024"
- id="path3465"
- sodipodi:nodetypes="ccc" />
- <path
- style="fill:none;stroke:#808080;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 51.494316,69.020405 17.497596,-0.0132 0.03734,-17.394221"
- id="path3465-8"
- sodipodi:nodetypes="ccc" />
- </g>
-</svg>
diff --git a/navit/icons/toilets.svg b/navit/icons/toilets.svg
deleted file mode 100644
index aa4406144..000000000
--- a/navit/icons/toilets.svg
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- sodipodi:docname="toilets.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective14" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ff00ff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.679774"
- inkscape:cx="25.206251"
- inkscape:cy="58.478581"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:window-width="1057"
- inkscape:window-height="639"
- inkscape:window-x="0"
- inkscape:window-y="67"
- inkscape:window-maximized="0"
- inkscape:snap-grids="false"
- inkscape:snap-to-guides="false">
- <inkscape:grid
- type="xygrid"
- id="grid2396"
- visible="true"
- enabled="true"
- empspacing="5"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:date>26.06.2008</dc:date>
- <dc:creator>
- <cc:Agent>
- <dc:title>Jakub Klawiter</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>toilet</rdf:li>
- <rdf:li>sign</rdf:li>
- <rdf:li>man</rdf:li>
- <rdf:li>woman</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-235,60.63782)">
- <g
- id="g8461"
- transform="matrix(0.21213643,0,0,0.21213478,185.86258,-49.386587)">
- <g
- transform="translate(112.69607,34.331253)"
- id="g8181">
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff"
- d="m 182.95898,-76.861328 c -3.99939,0.168844 -9.19155,0.236483 -12.1914,2.302734 -6.0632,-4.404736 -14.02273,-0.924724 -20.85742,-2.12171 -8.37155,0.715905 -17.16211,-1.220479 -25.35157,0.701788 -7.18877,3.543846 -4.63042,12.909284 -4.86718,19.144532 0.29787,19.307542 -1.03067,38.826722 0.73047,58.0078121 3.42535,7.3088359 12.69363,4.446354 19.00976,4.9003907 10.21135,-0.8230182 21.16016,2.054591 30.98242,-1.5195313 1.54083,-1.5492216 3.79454,2.1508166 6.14453,1.5664063 11.69673,-0.2945186 23.32962,0.2936528 35.03321,0.00781 5.26696,0.4632921 10.52797,-3.0222264 10.4707,-8.6523437 -0.7337,-22.9570381 1.05472,-46.1431451 -0.78516,-69.0253901 -3.29077,-7.489457 -12.73115,-4.630557 -19.06836,-5.06836 -6.4301,0.335039 -12.79789,-0.365469 -19.25,-0.24414 z"
- id="rect3188-4"
- inkscape:connector-curvature="0" />
- </g>
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccc"
- id="rect3188"
- d="m 241.70927,-38.562308 34.52946,0 c 4.31621,0 5.75495,1.438728 5.75495,5.754912 l 0,63.304031 c 0,4.316183 -1.43874,5.754911 -5.75495,5.754911 l -34.52946,0 c -4.31616,0 -5.7549,-1.438728 -5.7549,-5.754911 l 0,-63.304031 c 0,-4.316184 1.43874,-5.754912 5.7549,-5.754912 z"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
- <path
- inkscape:connector-curvature="0"
- id="path2400"
- d="m 258.68626,-34.242439 c -3.01787,0 -5.46719,2.449294 -5.46719,5.467169 0,3.017875 2.44932,5.467168 5.46719,5.467168 3.01786,0 5.46718,-2.449293 5.46718,-5.467168 0,-3.017875 -2.44932,-5.467169 -5.46718,-5.467169 z m -8.63238,11.509827 c -2.87743,0 -4.31616,1.438728 -4.31616,4.316184 l 0,20.142193 c 0,1.4387278 4.31616,1.4387278 4.31616,0 l 0,-14.387282 c 0,-0.575491 1.43874,-0.575491 1.43874,0 l 0,43.161842 c 0,2.877456 7.19364,2.877456 7.19364,0 l 0,-27.3358322 c 0,-0.5754949 1.43873,-0.5754949 1.43873,0 l 0,27.3358322 c 0,2.877456 7.19364,2.877456 7.19364,0 l 0,-43.161842 c 0,-0.575491 1.43874,-0.575491 1.43874,0 l 0,14.387282 c 0,1.4387278 4.31617,1.4387278 4.31617,0 l 0,-20.142193 c 0,-2.877456 -2.87743,-4.316184 -5.75491,-4.316184 l -17.26475,0 z"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- sodipodi:nodetypes="cssscccccccccccccccccccc" />
- <path
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccc"
- id="rect3190"
- d="m 290.62601,-38.562308 33.95402,0 c 4.31616,0 5.7549,1.438728 5.7549,5.754912 l 0,63.304031 c 0,4.316183 -1.43874,5.754911 -5.7549,5.754911 l -33.95402,0 c -4.31617,0 -5.75491,-1.438728 -5.75491,-5.754911 l 0,-63.304031 c 0,-4.316184 1.43874,-5.754912 5.75491,-5.754912 z"
- style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
- <path
- inkscape:connector-curvature="0"
- id="path2408"
- d="m 307.89024,-34.28642 c -3.01787,0 -5.46718,2.449293 -5.46718,5.467168 0,3.017875 2.44931,5.467169 5.46718,5.467169 3.01786,0 5.46718,-2.449294 5.46718,-5.467169 0,-3.017875 -2.44932,-5.467168 -5.46718,-5.467168 z m -7.19364,11.222079 c -2.01422,0 -4.31616,1.438728 -4.31616,2.877456 l -5.75495,18.7034657 c -1.15097,2.8774556 4.60393,4.3161833 5.75495,1.72647524 L 300.6966,-15.870702 c 1.15097,0 1.43874,0.575495 1.43874,1.438733 l -7.19364,24.458372 5.7549,0 0,20.142193 c 0,2.877456 6.33039,2.877456 6.33039,0 l 0,-20.142193 c 0,-0.863233 1.7265,-0.863233 1.7265,0 l 0,20.142193 c 0,2.877456 6.33039,2.877456 6.33039,0 l 0,-20.142193 5.7549,0 -7.19364,-24.458372 c 0,-0.863238 0.28786,-1.438733 1.43874,-1.438733 l 4.31621,15.82601049 c 1.15097,2.87745551 6.90587,1.43872781 5.7549,-1.43872779 l -5.7549,-18.7034657 c 0,-1.438728 -2.30199,-2.877456 -4.31621,-2.877456 l -14.38728,0 z"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- sodipodi:nodetypes="cssscccccccccccccccccccccccc" />
- </g>
- </g>
-</svg>
diff --git a/navit/icons/tomtom_minus.svg b/navit/icons/tomtom_minus.svg
deleted file mode 100644
index 9453d687d..000000000
--- a/navit/icons/tomtom_minus.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg width="64px" height="64px" viewBox="-100 -100 200 200" xmlns="http://www.w3.org/2000/svg" version="1.1">
-<rect x="-110" y="-110" width="220" height="220" fill="#000080" stroke="none" opacity="0.5"/>
-<path fill="none" stroke="#ffffff" stroke-width="20" stroke-linecap="round" d="M 60 0 L -60 0"/>
-</svg>
diff --git a/navit/icons/tomtom_plus.svg b/navit/icons/tomtom_plus.svg
deleted file mode 100644
index bdf74c4f4..000000000
--- a/navit/icons/tomtom_plus.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg width="64px" height="64px" viewBox="-100 -100 200 200" xmlns="http://www.w3.org/2000/svg" version="1.1">
-<rect x="-110" y="-110" width="220" height="220" fill="#000080" stroke="none" opacity="0.5"/>
-<path fill="none" stroke="#ffffff" stroke-width="20" stroke-linecap="round" d="M 0 60 L 0 -60 M 60 0 L -60 0"/>
-</svg>
diff --git a/navit/icons/tower.svg b/navit/icons/tower.svg
deleted file mode 100644
index 737da9c82..000000000
--- a/navit/icons/tower.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- viewBox="0 0 100 100"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="tower.svg">
- <title
- id="title3338">tower</title>
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ff00ff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="2"
- inkscape:cx="-38.147512"
- inkscape:cy="70.594566"
- inkscape:document-units="px"
- inkscape:current-layer="layer2"
- showgrid="false"
- inkscape:window-width="1109"
- inkscape:window-height="775"
- inkscape:window-x="218"
- inkscape:window-y="60"
- inkscape:window-maximized="0"
- units="px" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>tower</dc:title>
- <dc:creator>
- <cc:Agent>
- <dc:title>jfitie@gmail.com</dc:title>
- </cc:Agent>
- </dc:creator>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:groupmode="layer"
- id="layer2"
- inkscape:label="Layer 2"
- style="display:inline"
- transform="translate(0,80)">
- <rect
- style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="rect3335-6-1"
- width="17.971903"
- height="77.364769"
- x="39.82584"
- y="-58.843311" />
- <ellipse
- style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
- id="path4137-3-2"
- cx="48.81179"
- cy="-62.452667"
- rx="15.072455"
- ry="14.718902" />
- <rect
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="rect3335-7"
- width="9.9390745"
- height="74.543053"
- x="43.842255"
- y="-59.535473" />
- <circle
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="path4137-0"
- cx="48.81179"
- cy="-62.452667"
- r="9.9390745" />
- </g>
-</svg>
diff --git a/navit/icons/townhall.svg b/navit/icons/townhall.svg
deleted file mode 100644
index 2aaff669a..000000000
--- a/navit/icons/townhall.svg
+++ /dev/null
@@ -1,236 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="townhall.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="89.423501"
- inkscape:cy="30.315431"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="660"
- inkscape:window-maximized="0"
- inkscape:window-width="955"
- inkscape:window-x="25"
- inkscape:window-y="25"
- inkscape:zoom="2.8284271"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path4460"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path4462"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path4464"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path4466"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4904"
- inkscape:persp3d-origin="16 : 10.666667 : 1"
- inkscape:vp_x="0 : 16 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="32 : 16 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-536.27327,44.693248)">
- <rect
- height="10"
- id="rect4134"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="8"
- x="2"
- y="2" />
- </g>
- <g
- id="g8488"
- transform="matrix(0.22401036,0,0,0.22401084,0.9957527,-0.45221551)">
- <g
- transform="translate(-122.5,7)"
- id="g8306">
- <g
- id="g8479">
- <path
- inkscape:connector-curvature="0"
- id="path3198-0"
- d="m 166.63672,-3.3496094 c -7.55245,4.14373865 -13.55641,11.1766725 -20.63753,16.2413204 -7.26018,6.542102 -15.96694,12.112802 -21.85466,19.813367 0.31041,5.356943 7.87669,2.967154 7.92774,9.117188 -0.62271,15.413051 -0.69877,31.086845 0.0332,46.578125 3.7471,5.081298 11.62447,2.513602 17.13281,2.822265 16.94753,-0.206235 34.23107,1.187592 50.98172,-0.731232 3.0768,-6.393323 2.01434,-14.549549 2.0925,-22.118377 0.10516,-10.170468 -0.2088,-20.798845 0.1543,-30.6875 5.16487,1.346018 9.06531,-5.125877 5.09179,-8.855469 C 193.91046,18.72785 181.65342,6.4747999 167.63281,-3.234375 c -0.32025,-0.1043577 -0.66093,-0.1357916 -0.99609,-0.1152344 z"
- style="font-size:12px;fill:#ffffff;stroke:#ffffff;stroke-width:3.25114584;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cccccccccccc" />
- <path
- inkscape:connector-curvature="0"
- id="path7610-6"
- d="m 158.11914,50.888672 c -6.49706,0.220043 -14.17842,-0.826557 -18.29687,5.376953 -3.47267,2.307623 -4.70985,9.212683 0.8164,9.441406 18.50863,-0.508414 37.34755,1.147935 55.66189,-0.853504 4.0568,-4.637173 -2.26222,-10.500553 -6.5115,-12.539074 -7.28448,-3.020584 -15.63168,-0.321783 -23.2946,-1.409964 -2.7916,-0.03755 -5.5836,-0.045 -8.37532,-0.01582 z"
- style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.62557304;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path7612-8"
- d="m 190.59961,61.244141 c -17.37855,1.233119 -35.43916,-1.138453 -52.86133,1.09375 -2.73639,5.772815 -1.72595,13.185487 -1.28516,19.617187 0.0561,6.541773 8.43748,3.608924 12.70899,4.525391 15.49207,0.0375 31.23029,0.471117 46.56641,-0.462891 5.51695,-5.424367 1.47568,-13.727275 2.54882,-20.419922 -0.57728,-3.561917 -4.55162,-4.66061 -7.67773,-4.353515 z"
- style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.62557304;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path8263"
- d="m 154.83008,18.404297 c -10.42248,-0.415024 -12.73587,16.640647 -3.02149,19.59375 8.75131,3.720631 16.54586,-8.207645 11.33985,-15.425781 -1.81192,-2.671801 -5.09815,-4.301701 -8.31836,-4.167969 z"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:NPSPICT3;-inkscape-font-specification:NPSPICT3;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.22577433;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path8791-2-9"
- d="m 156.60156,31.798828 c -5.32831,-0.07564 -12.69007,-0.739213 -15.03711,5.59961 -2.14474,5.128569 -0.4389,10.78985 -0.66797,16.138671 1.30724,5.79634 7.83899,2.010498 11.67774,2.488282 5.07183,-0.561752 12.36,1.868363 15.80273,-2.566407 0.58902,-7.026486 2.72112,-17.667561 -5.64257,-20.99414 -1.96331,-0.683335 -4.07528,-0.74475 -6.13282,-0.666016 z"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:NPSPICT3;-inkscape-font-specification:NPSPICT3;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.22577433;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path8259"
- d="m 179.02344,18.404297 c -10.42262,-0.420646 -12.73502,16.646418 -3.01953,19.59375 8.75746,3.717744 16.55052,-8.222318 11.33203,-15.439453 -1.81982,-2.659897 -5.0955,-4.287747 -8.3125,-4.154297 z"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:NPSPICT3;-inkscape-font-specification:NPSPICT3;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.22577433;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path21180-2"
- d="m 180.6543,31.820312 c -5.30229,-0.227034 -12.39284,-0.323778 -14.26758,5.958985 -1.5812,4.563863 -1.04779,9.543186 -0.94727,14.195312 3.47108,7.047722 12.61485,2.985956 18.64453,4.22461 3.71921,0.642121 9.5832,1.405144 9.45899,-3.904297 0.002,-6.401068 2.14992,-15.229705 -4.32813,-19.150391 -2.61783,-1.376354 -5.6788,-1.400714 -8.56054,-1.324219 z"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:NPSPICT3;-inkscape-font-specification:NPSPICT3;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.22577433;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
- </g>
- </g>
- <g
- transform="matrix(0.15528597,0,0,0.17016909,-25.510075,11.012502)"
- id="g4372" />
- <path
- inkscape:connector-curvature="0"
- style="font-size:12px;opacity:0.2;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.20180178;stroke-opacity:1"
- sodipodi:nodetypes="cccccccccccc"
- id="path645"
- d="M 44.9022,9.6481365 5.7609108,42.304849 l 7.8282062,0 0,52.388431 23.484828,0 16.193344,0 22.947998,0 0,-52.388431 7.828261,0 L 44.9022,9.6481365 l 0,0 0,0 z" />
- <g
- transform="matrix(0.15528597,0,0,0.17016909,0.34381936,2.1604288)"
- id="g7376">
- <path
- inkscape:connector-curvature="0"
- style="font-size:12px;fill:none;stroke:#734a08;stroke-width:20;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cccccccccccc"
- id="path3198"
- d="M 286.94406,34.001595 34.884618,225.90902 l 50.411556,0 0,317.86099 151.236006,0 104.28079,0 147.77899,0 0,-317.86099 50.4119,0 -252.0598,-191.907425 0,0 0,0 z" />
- </g>
- <path
- style="opacity:0.5;fill:#734a08;fill-opacity:1;stroke:#734a08;stroke-width:1.62557304;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path7610"
- d="m 25.20436,62.279642 39.948749,0 7.152052,6.76824 -54.329403,0 z" />
- <path
- style="opacity:0.5;fill:#734a08;fill-opacity:1;stroke:#734a08;stroke-width:1.62557304;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path7612"
- d="m 18.061207,89.847032 54.235051,0 0.0091,-17.055431 -54.329411,0 z" />
- <path
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:NPSPICT3;-inkscape-font-specification:NPSPICT3;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#734a08;fill-opacity:1;stroke:#734a08;stroke-width:0.22577433;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- sodipodi:nodetypes="cccscccsccccccccsccccccsccc"
- inkscape:connector-curvature="0"
- id="path8791-2"
- d="m 32.847109,29.722502 c -1.484843,6.2e-5 -2.772566,0.585345 -3.872442,1.760186 -1.099776,1.174956 -1.654714,2.605465 -1.654766,4.291452 5.2e-5,1.68794 0.55499,3.121921 1.654766,4.296769 1.099876,1.174952 2.387599,1.760236 3.872442,1.76019 0.05475,0 0.110834,-0.0038 0.164992,-0.0054 0.05477,0.0017 0.109617,0.0054 0.164991,0.0054 1.484843,4.6e-5 2.777423,-0.585238 3.877295,-1.76019 1.099781,-1.174848 1.645011,-2.608829 1.645063,-4.296769 -4.9e-5,-1.685987 -0.545282,-3.116496 -1.64506,-4.291452 -1.099872,-1.174841 -2.392451,-1.760124 -3.877297,-1.760186 -0.05536,4e-6 -0.110239,-0.0015 -0.164992,0 -0.05414,-0.0014 -0.110259,0 -0.164991,0 z m -4.202425,13.464631 c -0.335854,8e-6 -0.63998,0.03682 -0.912305,0.117002 -0.17898,-0.01862 -0.358924,-0.02524 -0.538648,-0.02151 -1.232169,0.03269 -2.44454,0.620471 -3.295165,1.597896 -0.850624,0.977429 -1.329046,2.332375 -1.300329,3.682666 l 0.10191,12.039462 c -7e-6,0.0054 -7e-6,0.01117 0,0.01572 0.500205,-0.393499 1.02277,-0.752149 1.586829,-1.05291 6.156226,-0.198135 12.320847,-0.214478 18.488734,-0.19677 L 42.68353,48.467361 c 0.0039,-1.301935 -0.462265,-2.598743 -1.275281,-3.548294 -0.813017,-0.949556 -1.964352,-1.541761 -3.15038,-1.620449 -0.262136,-0.07273 -0.54894,-0.111666 -0.868631,-0.111666 z" />
- <path
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:NPSPICT3;-inkscape-font-specification:NPSPICT3;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#734a08;fill-opacity:1;stroke:#734a08;stroke-width:0.22577433;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
- sodipodi:nodetypes="cccscccsccccccccsccccccsccc"
- inkscape:connector-curvature="0"
- id="path21180"
- d="m 57.371363,29.722502 c 1.484848,6.2e-5 2.772571,0.585345 3.872447,1.760186 1.099773,1.174956 1.654714,2.605465 1.654767,4.291452 -5.3e-5,1.68794 -0.554994,3.121921 -1.654767,4.296769 -1.099876,1.174952 -2.387599,1.760236 -3.872447,1.76019 -0.0547,0 -0.11088,-0.0038 -0.164996,-0.0054 -0.05474,0.0017 -0.109597,0.0054 -0.164995,0.0054 -1.48484,4.6e-5 -2.777416,-0.585238 -3.877292,-1.76019 -1.099778,-1.174848 -1.645004,-2.608829 -1.645062,-4.296769 5e-5,-1.685987 0.545284,-3.116496 1.645062,-4.291452 1.099876,-1.174841 2.392452,-1.760124 3.877292,-1.760186 0.05536,4e-6 0.110259,-0.0015 0.164995,0 0.05416,-0.0014 0.110301,0 0.164996,0 z m 4.202422,13.464631 c 0.335866,8e-6 0.639982,0.03682 0.912312,0.117002 0.178897,-0.01862 0.358911,-0.02524 0.538643,-0.02151 1.232171,0.03269 2.444541,0.620471 3.29517,1.597896 0.850621,0.977434 1.329038,2.332379 1.300329,3.68267 l -0.101902,12.039462 c 4e-6,0.0054 4e-6,0.01117 0,0.01572 -0.500204,-0.393499 -1.02277,-0.752145 -1.586828,-1.05291 -6.156225,-0.198135 -12.320845,-0.214478 -18.488733,-0.196729 l 0.09222,-10.901456 c -0.0039,-1.302071 0.462249,-2.598879 1.275261,-3.548435 0.813025,-0.94956 1.964353,-1.541761 3.150389,-1.620452 0.262098,-0.07273 0.548937,-0.111666 0.868631,-0.111666 z" />
- </g>
-</svg>
diff --git a/navit/icons/traffic_signals.svg b/navit/icons/traffic_signals.svg
deleted file mode 100644
index 9d949a4e2..000000000
--- a/navit/icons/traffic_signals.svg
+++ /dev/null
@@ -1,192 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- viewBox="0 0 100 100"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- version="1.0"
- sodipodi:docname="traffic_signals.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/navit/icons/png/traffic_signals.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="4.0000002"
- inkscape:cx="64.367334"
- inkscape:cy="41.598374"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1024"
- inkscape:window-height="699"
- inkscape:window-x="0"
- inkscape:window-y="25"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g3491"
- transform="matrix(0.94965505,0,0,0.94965505,16.985221,-2.6781128)">
- <g
- transform="translate(104.9018,17.427669)"
- id="g3482">
- <path
- style="display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -47.103516,-86.582031 c -18.109432,0.957375 -36.781291,-0.35172 -54.937504,1.005859 -5.8096,5.202071 1.28098,12.075346 2.173832,17.802734 0.485227,6.920523 6.755308,14.240873 14.207032,11.251954 13.296223,-0.853455 27.094813,1.274402 40.079484,-1.601389 3.750763,-7.76608 7.487698,-16.243027 9.309188,-24.908377 -0.93202,-4.197457 -7.516907,-3.265482 -10.832032,-3.550781 z"
- id="rect3158-6"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -61.046875,-95.716797 c -9.410548,1.514022 -19.587262,-1.728964 -28.589844,1.849609 -7.923369,4.224624 -8.410298,14.148292 -7.378906,21.96875 0.433775,23.383188 -1.138298,46.959251 0.851563,70.2207036 3.286061,8.967064 14.22905,10.1919081 22.392578,8.6914063 9.226178,0.063023 22.468229,3.0794801 28.146484,-6.74609378 4.190237,-9.04301742 0.821039,-19.30601612 1.864832,-28.87302112 -0.397512,-19.32179 1.173234,-38.859655 -0.890223,-58.042995 -2.38559,-6.574326 -9.884384,-9.393549 -16.396484,-9.068359 z"
- id="rect2386-0"
- inkscape:connector-curvature="0" />
- <use
- x="0"
- y="0"
- xlink:href="#rect3158-6"
- id="use3161-6"
- transform="translate(0,24.906976)"
- width="22"
- height="22"
- style="fill:#ffffff;stroke:#ffffff" />
- <use
- x="0"
- y="0"
- xlink:href="#use3161-6"
- id="use3163-2"
- transform="translate(0,25.623524)"
- width="22"
- height="22"
- style="fill:#ffffff;stroke:#ffffff" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -70.507812,-87.517578 c -14.727009,-0.901596 -23.717815,19.788837 -13.050782,29.935547 8.989599,11.270127 29.912795,4.762082 30.900391,-9.650391 1.683712,-10.355793 -7.36127,-20.634626 -17.849609,-20.285156 z"
- id="path3169-6"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -70.507812,-59.830078 c -14.721537,-0.900802 -23.711355,19.771455 -13.0625,29.925781 8.988163,11.279853 29.921728,4.778935 30.912109,-9.640625 1.683239,-10.357013 -7.359399,-20.63489 -17.849609,-20.285156 z"
- id="path3175-1"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m -70.507812,-32.142578 c -14.72733,-0.903768 -23.717664,19.787487 -13.050782,29.9335936 8.988269,11.2717326 29.910497,4.7624341 30.900391,-9.6484376 1.683124,-10.355849 -7.359493,-20.636866 -17.849609,-20.285156 z"
- id="path3177-8"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="g3410">
- <path
- style="display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- d="m 4.901204,-64.146027 60.761027,-0.43178 -8.201603,21.574567 -44.79812,0.440297 -7.761304,-21.583084 z"
- id="rect3158"
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0" />
- <rect
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- id="rect2386"
- width="45.350616"
- height="94.663918"
- x="12.606408"
- y="-73.547798"
- rx="9.9627905"
- ry="9.9627905" />
- <use
- x="0"
- y="0"
- xlink:href="#rect3158"
- id="use3161"
- transform="translate(0,24.906976)"
- width="22"
- height="22" />
- <use
- x="0"
- y="0"
- xlink:href="#use3161"
- id="use3163"
- transform="translate(0,25.623524)"
- width="22"
- height="22" />
- <circle
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f30000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- id="path3169"
- cx="35.281719"
- cy="-51.753082"
- r="13.869364" />
- <circle
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f3ea00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- id="path3175"
- cx="35.281719"
- cy="-24.066198"
- r="13.869364" />
- <circle
- style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#47b400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
- id="path3177"
- cx="35.281719"
- cy="3.6206872"
- r="13.869364" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/trailerpark.xpm b/navit/icons/trailerpark.xpm
deleted file mode 100644
index 6864ea8f4..000000000
--- a/navit/icons/trailerpark.xpm
+++ /dev/null
@@ -1,110 +0,0 @@
-/* XPM */
-static char * trailerpark_xpm[] = {
-"16 16 91 1",
-" c #325692",
-". c #335692",
-"+ c #335592",
-"@ c #325592",
-"# c #325591",
-"$ c #335690",
-"% c #335593",
-"& c #8195B7",
-"* c #BCC7D9",
-"= c #C4CEDE",
-"- c #CCD5E3",
-"; c #D3DAE3",
-"> c #D8DEE8",
-", c #DDE3EB",
-"' c #DFE5EC",
-") c #D9E1E9",
-"! c #D5DCE6",
-"~ c #D2D8E2",
-"{ c #CAD3E0",
-"] c #C1CCDB",
-"^ c #8D9FBD",
-"/ c #345590",
-"( c #F3F5F8",
-"_ c #FEFEFD",
-": c #FDFEFD",
-"< c #FDFFFD",
-"[ c #FFFFFF",
-"} c #FEFFFE",
-"| c #FCFFFC",
-"1 c #FDFEFE",
-"2 c #DFE5EB",
-"3 c #F6F9FA",
-"4 c #C0C9DA",
-"5 c #3B5B94",
-"6 c #3A5B93",
-"7 c #B3C0D5",
-"8 c #FCFDFE",
-"9 c #3D5C92",
-"0 c #C9D1DE",
-"a c #335591",
-"b c #BCC8DA",
-"c c #B1BED4",
-"d c #FBFDFE",
-"e c #355791",
-"f c #C8D0DD",
-"g c #DFE4EB",
-"h c #CED6E1",
-"i c #6A83AC",
-"j c #6B83AC",
-"k c #C4CFDF",
-"l c #FFFFFE",
-"m c #FCFDFD",
-"n c #6C84AC",
-"o c #6A83AD",
-"p c #D6DCE4",
-"q c #FFFEFE",
-"r c #E0E6ED",
-"s c #99AAC5",
-"t c #D1DAE4",
-"u c #FEFEFE",
-"v c #355793",
-"w c #37588E",
-"x c #F6F8FA",
-"y c #F4F7F8",
-"z c #869AB9",
-"A c #E3EBF0",
-"B c #95A7C1",
-"C c #E0E5ED",
-"D c #DEE4EB",
-"E c #788FB7",
-"F c #A9BAD2",
-"G c #ADBBD1",
-"H c #91A4C2",
-"I c #C7D1DE",
-"J c #3D5F94",
-"K c #D0D7E2",
-"L c #7C92B6",
-"M c #8FA1C1",
-"N c #5C79A6",
-"O c #92A2C2",
-"P c #A6B5CB",
-"Q c #B7C2D4",
-"R c #C3CCDB",
-"S c #325693",
-"T c #3E5E98",
-"U c #546FA1",
-"V c #395994",
-"W c #7087B1",
-"X c #3F5F99",
-"Y c #345593",
-"Z c #345592",
-" . ++@#$%+++ ",
-" .&*=-;>,')!~{]^",
-" /(_:<:[}|<__:12",
-" $34567[89666502",
-" a3b+.c[de+.++fg",
-" a3hijklmniiiopg",
-" a3[[[}[[[[[[lqg",
-" a3[[[[l[l[[[[lg",
-" a3[[[[rstu[[[lg",
-"vwxuuuyzABCuuuuD",
-"EFGGGGHIJKLGGGGM",
-"NO PQR% S",
-"TU VWX S",
-" Y Z % S",
-" S",
-" ++++++++++++++."};
diff --git a/navit/icons/unknown.svg b/navit/icons/unknown.svg
deleted file mode 100644
index 0299629e9..000000000
--- a/navit/icons/unknown.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.2"
- width="22"
- height="22"
- id="svg3094"
- inkscape:version="0.91 r13725"
- sodipodi:docname="unknown.svg">
- <sodipodi:namedview
- pagecolor="#ff2aff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- id="namedview10"
- showgrid="false"
- inkscape:zoom="4.3385901"
- inkscape:cx="36.296208"
- inkscape:cy="56.425428"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg3094" />
- <defs
- id="defs3096" />
- <metadata
- id="metadata3099">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.16560781"
- d="M 12.305956,2.091083 C 9.975143,2.232789 7.37186,1.707702 5.323905,3.155242 3.084158,4.534757 1.816143,7.226655 2.13496,9.833894 c -0.07859,2.561541 -0.2989926,5.498092 1.534138,7.562241 1.614653,2.03148 4.357647,2.726984 6.849757,2.469879 2.420783,0.109541 5.16359,0.0769 7.030917,-1.712914 1.950905,-1.672056 2.526415,-4.390223 2.284878,-6.84908 C 19.948192,8.921877 19.87419,6.235782 18.120019,4.402153 16.68805,2.764682 14.446961,1.993193 12.305956,2.091083 Z"
- id="rect3874-3"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:0.72699998;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="rect3874"
- y="2.6689682"
- x="2.7735891"
- height="16.409807"
- width="16.382191"
- ry="6.1455121" />
- <path
- inkscape:connector-curvature="0"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:310px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'FreeSans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none"
- id="path3986"
- d="M 6.518286,8.665502 C 6.530626,7.878231 6.635548,7.187848 6.833046,6.59435 7.042883,6.000873 7.295925,5.540617 7.592173,5.213582 7.900758,4.874458 8.264892,4.601938 8.684574,4.396022 9.10425,4.19013 9.493071,4.056899 9.851038,3.996326 c 0.3703,-0.07266 0.759121,-0.108995 1.166463,-0.109008 1.357781,1.3e-5 2.462525,0.387597 3.314237,1.162752 0.864037,0.775179 1.29606,1.780474 1.296071,3.015887 -1.1e-5,0.763065 -0.154305,1.392888 -0.462883,1.889472 -0.308598,0.4966 -0.894915,1.041639 -1.758952,1.63512 -0.555466,0.38759 -0.901085,0.696446 -1.036856,0.926568 -0.135786,0.230133 -0.203676,0.64194 -0.203668,1.235425 l -2.295897,0 0,-0.254352 c -5e-6,-0.605596 0.104915,-1.132468 0.31476,-1.580616 0.222178,-0.46025 0.487564,-0.829666 0.796157,-1.108248 0.308582,-0.27857 0.61717,-0.538977 0.925765,-0.781224 C 12.214816,9.785869 12.474029,9.507294 12.683878,9.192374 12.906053,8.87747 13.017145,8.520167 13.017153,8.120461 13.017145,7.526984 12.831992,7.030392 12.461694,6.630686 12.091381,6.231001 11.628499,6.031152 11.073047,6.031142 10.492896,6.031152 10.005327,6.261281 9.610339,6.721526 9.227685,7.181792 9.036361,7.763167 9.036365,8.465653 l 0,0.163513 0,0.03633 -2.518079,0" />
- <path
- inkscape:connector-curvature="0"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:310px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'FreeSans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none"
- id="path3981"
- d="m 12.461694,14.751782 0,2.652528 -2.777294,0 0,-2.652528 2.777294,0" />
-</svg>
diff --git a/navit/icons/viewpoint.svg b/navit/icons/viewpoint.svg
deleted file mode 100644
index f110f94f6..000000000
--- a/navit/icons/viewpoint.svg
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- width="22"
- height="22"
- id="svg2"
- inkscape:version="0.91 r13725"
- sodipodi:docname="viewpoint.svg">
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- pagecolor="#ff00ff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="863"
- inkscape:window-height="754"
- id="namedview5"
- showgrid="false"
- inkscape:zoom="3.6875"
- inkscape:cx="23.319342"
- inkscape:cy="37.716858"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="svg2" />
- <defs
- id="defs6" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0.22201096"
- d="M 10.500616,0.14643299 C 9.1447596,0.05429299 7.4333155,1.166495 8.0038133,2.695183 8.3721231,3.978462 8.9079679,5.532207 8.9578135,6.711918 7.8223681,4.657272 6.8700076,2.124987 4.6450777,1.006307 2.9515933,0.68562699 1.2108155,2.112457 0.77983244,3.702574 0.87032344,5.79764 3.126023,6.700495 4.5190489,7.869942 5.6906812,8.694241 7.3103973,9.988296 8.7644212,9.149312 9.530196,8.756584 9.1636367,7.191581 9.1421,7.144239 c 0.6682241,1.324371 2.749182,1.147927 3.510114,0.346032 -0.219322,1.078089 0.832486,2.011117 1.764814,1.826853 -1.134738,1.040504 -0.41601,2.866981 0.811728,3.490666 -0.92893,-0.525391 -2.445383,-0.238102 -2.471607,1.02335 0.0044,1.84717 1.371835,3.349112 2.2045,4.906444 0.855644,1.266628 2.274245,2.950689 3.976683,2.119115 1.320857,-0.635901 2.924534,-2.207068 1.986825,-3.756909 -1.098879,-1.558451 -2.996367,-2.563047 -4.378645,-3.630725 1.343781,0.334311 2.834536,0.881887 4.204331,0.483055 1.476992,-0.895775 1.157835,-2.940369 0.981269,-4.392167 -0.16076,-1.315645 -1.634481,-2.037013 -2.80939,-1.447867 -1.105871,0.2866 -2.179713,0.7557 -3.334066,0.808707 C 17.307372,7.820732 19.328771,6.996677 20.619892,5.361616 21.81867,3.670304 20.233691,1.49756 18.581033,0.84846799 16.957783,0.52513699 15.799916,2.211115 14.977326,3.363605 c -0.636398,0.764052 -1.403934,2.157104 -1.844232,2.625897 0.0087,-1.66023 1.724508,-3.542498 0.471773,-5.10374201 -0.803525,-0.810246 -2.061184,-0.703069 -3.104251,-0.739327 z M 2.1431184,7.985902 c -1.79111992,-0.03765 -2.16636069,2.121693 -1.99376235,3.503673 -0.1933571,1.479407 1.22837385,3.075459 2.76126115,2.444334 1.8109505,-0.472775 3.918339,-0.84759 5.2289646,-2.267849 C 8.7832043,10.297816 7.1101751,9.274959 5.9914525,9.014889 4.7511467,8.542877 3.4838491,8.050675 2.1431184,7.985902 Z M 8.0415848,12.73841 C 5.5104534,13.1902 3.3387279,14.827029 1.457573,16.484913 0.50117408,17.64353 1.0077515,19.274323 2.0165028,20.2093 c 0.8369965,1.124113 2.6954608,1.461141 3.5500068,0.155671 1.6211763,-1.765602 3.3049372,-3.730474 3.9025363,-6.09804 0.066714,-0.811859 -0.5800284,-1.594397 -1.4274611,-1.528521 z m 2.8228342,0.991695 c -1.8507922,0.623047 -1.9243481,2.943697 -2.5956198,4.469784 -0.5575965,1.268504 -0.3881604,3.326161 1.3216585,3.507145 1.4259113,0.295491 3.5821283,0.418631 4.2832503,-1.156039 0.518855,-1.872214 -0.736761,-3.647017 -1.213255,-5.397305 -0.276156,-0.749087 -0.918303,-1.530511 -1.796034,-1.423585 z"
- id="path3335-6"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#0000ff"
- d="m 2.5366678,19.241383 c -1.2170452,-1.466475 -0.9166297,-2.19009 1.5915292,-3.833528 5.0647285,-3.318597 5.939102,-2.197851 2.1391128,2.741854 -1.9083258,2.480679 -2.4470585,2.638325 -3.730642,1.091674 z m 6.7100008,-1.188579 c 0.9762774,-3.176134 1.5878954,-4.072821 2.2655144,-3.321445 0.257418,0.285437 0.855671,1.780087 1.329452,3.321445 0.707003,2.300102 0.384788,2.80247 -1.797483,2.80247 -2.1822704,0 -2.5044861,-0.502368 -1.7974834,-2.80247 z M 15.560986,17.80702 c -3.318538,-5.06482 -2.197812,-5.93921 2.741802,-2.139152 2.480636,1.908361 2.638278,2.447105 1.091656,3.730711 -1.46645,1.217066 -2.19005,0.916644 -3.833458,-1.591559 z M 1.0799997,10.89094 c 0,-2.182311 0.5023588,-2.504531 2.8024177,-1.797515 3.1760761,0.976293 4.0727477,1.587924 3.3213844,2.265555 -0.285432,0.257422 -1.7800546,0.855686 -3.3213844,1.329476 -2.3000589,0.707015 -2.8024177,0.384795 -2.8024177,-1.797516 z m 15.8803663,1.6325 C 14.713701,11.936313 13.88904,9.645399 15.924361,9.645399 c 0.629007,0 2.030215,-0.340214 3.113797,-0.756031 1.412355,-0.541981 1.970145,-0.01303 1.970145,1.868313 0,2.671716 -0.21776,2.766707 -4.047937,1.765759 z M 3.785516,6.114011 C 1.3048806,4.205652 1.1472366,3.666909 2.6938585,2.383302 4.1603089,1.166234 4.8839094,1.466655 6.5273181,3.97486 9.8458551,9.039681 8.7251298,9.914069 3.785516,6.114011 Z m 9.777369,1.35169 c 0.01523,-0.513786 1.031381,-2.238874 2.258109,-3.83353 1.908325,-2.48068 2.447058,-2.63832501 3.730641,-1.091675 1.217045,1.466476 0.91663,2.19009 -1.591529,3.833529 -3.41599,2.238283 -4.438743,2.492196 -4.397221,1.091676 z M 9.7986325,6.010644 c 0,-0.62902 -0.3402071,-2.030254 -0.756016,-3.113854 -0.5490958,-1.430947 -0.00125,-1.97018201 2.0015355,-1.97018201 2.002814,0 2.550631,0.53923501 2.001535,1.97018201 -0.415809,1.0836 -0.756016,2.484834 -0.756016,3.113854 0,0.629019 -0.560484,1.143671 -1.245519,1.143671 -0.685036,0 -1.2455195,-0.514652 -1.2455195,-1.143671 z"
- id="path3335"
- inkscape:connector-curvature="0" />
-</svg>
diff --git a/navit/icons/wifi.svg b/navit/icons/wifi.svg
deleted file mode 100644
index 0712fe91f..000000000
--- a/navit/icons/wifi.svg
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.91 r13725"
- sodipodi:docname="wifi.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:persp3d-origin="24 : 16 : 1"
- id="perspective2451" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffff6a"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10000"
- objecttolerance="10000"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.2068773"
- inkscape:cx="88.953428"
- inkscape:cy="54.165141"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:object-bbox="true"
- inkscape:object-points="true"
- inkscape:object-nodes="true"
- inkscape:grid-points="true"
- inkscape:guide-points="true"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- inkscape:window-x="0"
- inkscape:window-y="0"
- width="48px"
- height="48px"
- inkscape:window-maximized="1"
- inkscape:snap-grids="false"
- inkscape:snap-to-guides="true"
- inkscape:pagecheckerboard="true" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,78)">
- <g
- id="g3519"
- transform="matrix(0.21376017,0,0,0.21376017,2.3242187,-60.916306)">
- <g
- transform="translate(95.641022,-33.507806)"
- id="g3509">
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:2.44137859;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5;stroke-opacity:1"
- d="m -65.666016,-31.679688 c -13.88467,5.039757 -18.611889,24.1731364 -11.521484,36.4941411 3.126495,4.6106101 7.986395,11.5612909 14.419922,9.8242189 4.404708,-3.469673 0.695444,-10.0555695 1.787109,-14.76562512 -0.467187,-10.02744888 0.722446,-20.51183888 -1.486328,-30.27148488 -0.765287,-0.937323 -2.022858,-1.32258 -3.199219,-1.28125 z"
- id="path5112-7"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:2.44137859;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5;stroke-opacity:1"
- d="m -42.853516,-31.447266 c -5.84596,2.014533 -2.3087,10.24703 -3.549022,15.155328 0.0068,9.7372969 -1.138014,19.8528514 0.430407,29.36323 4.303045,4.680376 10.271075,-1.651872 12.905181,-5.2227929 10.21135,-11.8646573 5.839874,-34.5938401 -9.786566,-39.2957651 z"
- id="path5107-5"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:3.22261977;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5;stroke-opacity:1"
- d="m -70.767578,-37.634766 c -19.655596,10.040308 -22.903765,40.7103509 -5.550781,54.515625 2.471947,3.305343 10.515095,7.328086 11.648437,1.083985 1.113725,-16.7601118 -0.735709,-33.479753 -0.205078,-50.197266 -0.398757,-2.766751 -2.555286,-6.645213 -5.892578,-5.402344 z"
- id="path3437"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:3.22261977;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5;stroke-opacity:1"
- d="m -38.539062,-37.603516 c -6.479843,1.044593 -2.874326,10.11526 -4.032371,14.601506 -0.06745,14.032212 -1.422931,28.4356331 0.153672,42.256039 4.131062,4.663813 10.010197,-1.381626 12.919714,-4.607545 15.146341,-14.367076 10.785131,-43.839257 -8.494141,-52.230468 -0.181478,-0.02043 -0.364448,-0.02477 -0.546874,-0.01953 z"
- id="path3439"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:4.02320433;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5;stroke-opacity:1"
- d="m -73.037109,-44.396484 c -12.829148,5.086347 -20.628072,19.192001 -21.900391,32.55664 -1.700952,15.8645625 7.270248,33.020232 22.056641,39.455078 5.97184,1.335986 5.465944,-7.297914 5.173749,-11.303876 -1.157345,-19.5927704 0.308233,-39.418099 -1.804609,-58.930499 -0.649763,-1.276567 -2.162546,-1.833098 -3.52539,-1.777343 z"
- id="path3443"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:4.02320433;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5;stroke-opacity:1"
- d="m -34.582031,-43.796875 c -6.460083,0.838958 -3.08908,9.554881 -4.083709,14.038052 -0.463163,18.155386 -0.994353,36.3195455 -0.592072,54.481479 3.063174,5.819905 10.000033,0.39339 12.845703,-2.867187 19.1721811,-15.8304052 17.3131078,-49.297414 -3.078125,-63.339844 -1.432519,-1.202018 -3.133666,-2.380267 -5.091797,-2.3125 z"
- id="path3445"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:3.81616664;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m -52.953125,-10.785156 c -5.745429,0.110028 -5.452576,7.4048038 -4.640625,11.42187475 0.0063,17.75125025 -0.122467,35.64552525 -0.05859,53.45703125 3.976838,1.680534 8.943176,-1.045553 8.31836,-5.695312 -1.044412,-18.603485 0.09213,-37.34228 -0.31836,-56.0253911 0.576166,-3.3372089 -0.698345,-3.0234959 -3.300781,-3.1582029 z"
- id="path5737-6"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff"
- d="m -54.484375,-18.408203 c -12.627496,0.477109 -10.520734,21.5972395 1.964844,19.4511718 7.841059,-0.83120696 11.802462,-11.9260898 5.365234,-16.9628908 -1.977358,-1.797308 -4.677124,-2.654187 -7.330078,-2.488281 z"
- id="path5739-2"
- inkscape:connector-curvature="0" />
- </g>
- <g
- transform="matrix(2.0344821,0,0,2.0344821,-6.3328481,-77.496071)"
- id="g3276">
- <g
- id="g5114"
- transform="matrix(0.3751487,0,0,0.3751487,-107.75554,-142.5569)"
- style="stroke:#000000;stroke-width:3.19873166;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
- <path
- inkscape:connector-curvature="0"
- id="path5112"
- d="m 335.96898,451.5699 c -9.21494,-4.99381 -15.47717,-14.75085 -15.47717,-25.96163 1e-5,-10.85329 5.86922,-20.34408 14.60475,-25.46948"
- style="fill:none;stroke:#000000;stroke-width:3.19873166;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path5107"
- d="m 365.4672,400.47806 c 8.42337,5.19804 14.04101,14.51208 14.04101,25.13021 l 10e-6,10e-6 c -10e-6,10.97562 -6.00228,20.55786 -14.90125,25.64113"
- style="fill:none;stroke:#000000;stroke-width:3.19873166;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5;stroke-opacity:1" />
- </g>
- <use
- x="0"
- y="0"
- xlink:href="#g5114"
- id="use5733"
- transform="matrix(1.32,0,0,1.32,-7.5348846,-5.5045785)"
- width="744.09448"
- height="1052.3622" />
- <use
- x="0"
- y="0"
- xlink:href="#g5114"
- id="use5735"
- transform="matrix(1.6479232,0,0,1.6479232,-15.256347,-11.145436)"
- width="744.09448"
- height="1052.3622" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:1.87574351;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 23.731006,16.933363 0,30.011896"
- id="path5737" />
- <circle
- r="7.5"
- cy="429.86218"
- cx="372.5"
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
- id="path5739"
- transform="matrix(0.3751487,0,0,0.3751487,-116.01189,-144.32888)" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/navit/icons/worship.svg b/navit/icons/worship.svg
deleted file mode 100644
index 11afc7d98..000000000
--- a/navit/icons/worship.svg
+++ /dev/null
@@ -1,244 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- height="22"
- id="svg2"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:version="0.91 r13725"
- sodipodi:docname="worship.svg"
- sodipodi:version="0.32"
- version="1.0"
- width="22">
- <metadata
- id="metadata2975">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- <dc:language>en</dc:language>
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10.0"
- guidetolerance="10.0"
- id="base"
- inkscape:current-layer="svg2"
- inkscape:cx="82.710284"
- inkscape:cy="31.193279"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-height="700"
- inkscape:window-maximized="0"
- inkscape:window-width="915"
- inkscape:window-x="50"
- inkscape:window-y="50"
- inkscape:zoom="3.6203868"
- objecttolerance="10.0"
- pagecolor="#ff00ff"
- showgrid="false" />
- <defs
- id="defs4">
- <inkscape:perspective
- id="perspective2441"
- inkscape:persp3d-origin="290 : 193.33333 : 1"
- inkscape:vp_x="0 : 290 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="580 : 290 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3452"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_x="0 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="60 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- <symbol
- id="symbol-university"
- viewBox="244.5 110 489 219.9">
- <path
- d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 Z"
- id="path4460"
- inkscape:connector-curvature="0" />
- <path
- d="M 94,176 73,215"
- id="path4462"
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#000000;stroke-width:20" />
- <path
- d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 Z"
- id="path4464"
- inkscape:connector-curvature="0" />
- <path
- d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
- id="path4466"
- ill="none"
- inkscape:connector-curvature="0"
- style="stroke:#000000;stroke-width:20" />
- </symbol>
- <inkscape:perspective
- id="perspective4471"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4668"
- inkscape:persp3d-origin="6 : 4 : 1"
- inkscape:vp_x="0 : 6 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="12 : 6 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2893"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3898"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4011"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <g
- id="layer3"
- inkscape:label="Layout"
- style="display:none;stroke:#757575;stroke-opacity:1"
- transform="matrix(48.14969,0,0,48.14969,-536.27327,44.693248)">
- <rect
- height="10"
- id="rect4134"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="10"
- x="1"
- y="1" />
- <rect
- height="8"
- id="rect4136"
- style="display:inline;fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- width="8"
- x="2"
- y="2" />
- </g>
- <g
- id="g3519"
- transform="matrix(0.26019156,0,0,0.26019255,-0.07368931,-3.8475348)">
- <g
- id="g3500"
- transform="translate(-69.605823,-5.8004852)">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:19.9469471;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 121.9043,50.982422 c -4.61886,-0.08318 -5.49473,4.64403 -3.33628,8.215919 2.29921,5.123997 1.28481,13.090517 5.82329,16.388981 5.3074,0.270773 6.55004,-6.159768 4.29424,-9.95451 -2.91464,-4.302675 -1.06872,-10.807486 -5.02149,-14.291015 -0.54189,-0.273254 -1.15595,-0.383086 -1.75976,-0.359375 z"
- id="path4817-7"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:8.76375294;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 86.841797,35.783203 c -3.975909,6.473842 4.289665,11.031173 7.580078,15.53125 3.400621,7.474876 12.881725,4.73149 19.013675,3.230469 3.85739,0.555106 11.29168,-0.631017 9.17773,-6.1875 -3.46644,-6.175946 -11.92234,-4.324289 -17.27791,-7.8452 -5.954858,-1.846195 -12.195118,-5.502641 -18.493573,-4.729019 z"
- id="path5329-5"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:11.10254669;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 107.22656,91.083984 c -4.95262,2.204229 -0.704,9.827636 4.17188,8.302735 7.66891,-1.862648 15.92784,1.348571 23.27929,-1.660157 4.07342,-3.255342 -1.38236,-9.079548 -5.65601,-6.878567 -7.26505,0.07866 -14.53011,0.157326 -21.79516,0.235989 z"
- id="path5331-3"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:12.12408829;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 128.08984,72.546875 c -7.77903,6.33219 -16.9604,11.435941 -23.85937,18.539063 0.40577,4.868767 6.78378,6.048421 9.63476,2.365234 5.15283,-5.688259 12.37982,-8.625659 17.92188,-13.751953 2.3993,-2.616928 0.0131,-8.442334 -3.69727,-7.152344 z"
- id="path5333-5"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:12.12408829;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 112.52734,26.666016 c -8.10023,0.191362 -7.79152,14.134623 0.41407,13.738281 8.28085,1.030917 9.655,-13.029691 1.35742,-13.664063 -0.58494,-0.102927 -1.18062,-0.08853 -1.77149,-0.07422 z"
- id="path5339-6"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:12.12408829;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 124.83008,71.753906 c -6.70927,6.698937 -15.00018,12.260264 -20.75391,19.646485 1.06987,4.910111 7.69398,4.936069 10.17774,1.078125 4.53017,-6.433312 12.68839,-9.554457 16.47851,-16.449219 0.97681,-3.225296 -3.2835,-5.623388 -5.90234,-4.275391 z"
- id="path4057-2"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:8.76375294;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 86.992188,35.683594 c -4.229798,6.216826 3.79253,11.044245 7.199218,15.283203 3.591945,8.127618 13.345304,5.110514 20.105474,4.583984 3.87788,1.359961 10.81862,-0.998065 8.11523,-6.091797 -3.78664,-5.766061 -11.90751,-4.532742 -17.20899,-8.261718 -5.831294,-2.10866 -11.925589,-6.000453 -18.210932,-5.513672 z"
- id="path4059-9"
- inkscape:connector-curvature="0" />
- </g>
- <path
- inkscape:connector-curvature="0"
- style="fill:#d53b3b;fill-opacity:1;stroke:#5e8019;stroke-width:19.9469471;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path4817"
- d="M 51.066955,47.20516 56.10861,66.965367" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#5e8019;stroke-width:8.76375294;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccc"
- id="path5329"
- d="M 49.692325,43.659168 30.31754,46.422817 18.964087,32.9044" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#5e8019;stroke-width:11.10254669;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path5331"
- d="M 63.924514,88.634343 37.129507,88.924181" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#5e8019;stroke-width:12.12408829;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path5333"
- d="M 60.332625,69.600951 37.274877,86.69232" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#5e8019;fill-opacity:1;stroke:#5e8019;stroke-width:12.12408829;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path5339"
- d="m 42.806257,24.508469 c -2.535483,0.115025 -3.53372,3.771841 -1.436545,5.166513 1.910137,1.5755 5.072084,-0.333963 4.553262,-2.772273 -0.228992,-1.461448 -1.640483,-2.559233 -3.116717,-2.39424 z" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#5e8019;stroke-width:12.12408829;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="cc"
- id="path4057"
- d="M 58.111543,67.892431 37.274877,86.69232" />
- <path
- inkscape:connector-curvature="0"
- style="fill:none;stroke:#5e8019;stroke-width:8.76375294;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:nodetypes="ccc"
- id="path4059"
- d="M 49.692325,45.205546 30.31754,46.422817 18.964087,32.9044" />
- </g>
-</svg>
diff --git a/navit/icons/zipcode.svg b/navit/icons/zipcode.svg
deleted file mode 100644
index 1b16ebf04..000000000
--- a/navit/icons/zipcode.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="22"
- height="22"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.48.4 r9939"
- version="1.0"
- sodipodi:docname="post.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/jeff/navit/icons/png/post.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#f4ca00"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568543"
- inkscape:cx="12.393787"
- inkscape:cy="25.782283"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="943"
- inkscape:window-height="682"
- inkscape:window-x="75"
- inkscape:window-y="34"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2380"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Calque 1"
- inkscape:groupmode="layer"
- id="layer1">
- <rect
- style="opacity:1;fill:#d8d8d8;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect2381"
- width="19"
- height="13.0625"
- x="1.5"
- y="4.375" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#787878;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
- d="M 2.5,16.4375 L 11.0625,9.625 L 19.4375,16.4375"
- id="path3158"
- sodipodi:nodetypes="ccc" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 1.5,4.375 L 20.5,4.375 L 11,12.625 L 1.5,4.375 z"
- id="rect3153"
- sodipodi:nodetypes="cccc" />
- <text
- xml:space="preserve"
- style="font-size:10.90231133px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
- x="3.2706933"
- y="13.758551"
- id="text2987"
- sodipodi:linespacing="125%"
- transform="scale(0.9172367,1.0902311)"><tspan
- sodipodi:role="line"
- id="tspan2989"
- x="3.2706933"
- y="13.758551"
- style="font-size:9.81208038px;fill:#0000ff">ZIP</tspan></text>
- </g>
-</svg>
diff --git a/navit/icons/zoo.svg b/navit/icons/zoo.svg
deleted file mode 100644
index 73b0cbfd3..000000000
--- a/navit/icons/zoo.svg
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.1"
- width="22"
- height="22"
- id="svg2"
- inkscape:version="0.91 r13725"
- sodipodi:docname="zoo.svg">
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- <dc:description>jfitie@gmail.com</dc:description>
- <cc:license
- rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Reproduction" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#Distribution" />
- <cc:permits
- rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- pagecolor="#ff3dff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1440"
- inkscape:window-height="874"
- id="namedview5"
- showgrid="false"
- inkscape:zoom="10.429825"
- inkscape:cx="35.146017"
- inkscape:cy="27.691799"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="svg2" />
- <defs
- id="defs6" />
- <path
- style="fill:#ffffff;stroke:#ffffff;stroke-width:0.07777303;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 9.3862449,2.9712792 C 7.6031713,3.114594 5.9487991,4.0126234 4.1665566,4.0721966 2.5037719,4.9223061 2.000941,6.9689898 1.6127257,8.6437203 1.3080715,10.335867 1.5628967,12.211022 1.9370338,13.773488 0.66748619,13.258437 -0.55293699,15.02055 0.35081056,16.049375 1.4306249,18.062501 4.8669449,17.280569 5.1497338,15.08707 5.3212764,13.884255 4.1561121,12.338849 5.3358124,11.442155 c 0.4048383,0.09045 1.0474319,-0.741101 0.9676076,-0.06722 0.028708,1.725505 -0.4552027,3.463657 -0.9611519,5.068625 -1.1175965,0.642583 -0.5375071,2.769823 0.8327957,2.44754 0.8461826,0.133004 2.1167568,-0.07892 2.161927,-1.153326 0.2813373,-0.902838 0.6322978,-2.111172 0.9919116,-2.784002 0.2302211,0.826067 0.5320327,1.678184 0.165192,2.489311 -0.1408565,0.94119 0.7940306,1.701048 1.6906546,1.450294 0.823908,0.163901 2.117978,-0.26663 1.838379,-1.326114 -0.230424,-1.459842 -0.238315,-2.976497 -0.02848,-4.461012 0.283291,0.198825 1.091365,-0.02609 0.803554,0.541912 -0.190606,1.222392 0.03507,2.513357 -0.584437,3.602383 -0.255469,0.938939 0.612347,1.890171 1.577488,1.650427 0.903915,0.178125 2.074825,-0.316359 1.95981,-1.392916 0.0831,-0.613262 0.195658,-1.84985 0.47288,-0.604989 -0.524028,0.971447 0.387506,2.333041 1.516729,2.009676 0.875214,0.154845 2.172369,-0.414378 1.793188,-1.489789 -0.181755,-1.118573 -0.556728,-2.4997 -0.486462,-3.469846 0.92395,0.781872 2.400336,-0.482185 1.756732,-1.531562 C 20.98629,10.345903 21.700646,7.8200123 20.299933,5.9147763 19.190443,3.7199798 16.54063,2.7945998 14.212059,3.2386184 12.73957,3.4575407 11.229367,3.3664209 9.7925803,2.9773504 9.6571261,2.9729503 9.521859,2.9649001 9.3862459,2.9712502 Z M 4.3864328,7.7672393 c -0.7735164,0.4573878 -0.8742661,0.3054369 0,0 z"
- id="path3793-6"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;stroke:none;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 9.3798352,3.8728347 c -0.075634,0.002 -0.1534341,0.009 -0.2362804,0.015 C 8.8638026,3.9082054 8.6699218,3.938196 7.7483739,4.19538 7.6049493,4.2354008 7.3932143,4.3122442 7.245809,4.3679043 6.1121174,4.7959876 5.2155439,4.8319903 4.7067303,4.8517247 4.4127175,4.8631249 4.0989251,5.0483575 3.9228789,5.2455314 3.7233704,5.4689827 3.5392732,5.7757436 3.3978112,6.0406468 3.2900741,6.2423967 3.1208611,6.4575199 3.0452656,6.6519856 2.7555522,7.3972591 2.6772918,7.5188774 2.478942,8.320978 2.428707,8.5241219 2.320984,9.5004009 2.2726654,9.6936766 c -0.062865,0.2514619 -0.00475,0.8818154 -0.0075,1.1476664 -0.00983,0.948606 0.1402839,1.666577 0.3187912,2.355345 0.071326,0.281236 0.1228654,0.55238 0.2137777,0.82512 0.038737,0.116213 0.1566598,0.304963 0.1950252,0.420061 0.063818,0.191451 0.100991,0.510339 -0.052507,0.66384 -0.057146,0.05715 -0.2132273,0.225032 -0.3112898,0.225032 -0.1086627,0 -0.2007404,-0.0089 -0.3000391,-0.03375 -0.081625,-0.02041 -0.3796952,-0.210122 -0.4950653,-0.468819 -0.078424,-0.17585 -0.2061411,-0.18791 -0.3750484,-0.213774 -0.1831734,-0.02805 -0.52260226,0.229569 -0.56632343,0.307545 -0.17923914,0.319664 -0.0527679,0.604153 0.16127103,0.88137 0.3570951,0.462499 0.5486543,0.648131 1.0501359,0.750109 0.085513,0.01738 0.6012493,0.04255 0.6863389,0 0.1607184,-0.08035 0.4911865,-0.152169 0.641333,-0.247535 0.3573682,-0.226979 0.6179355,-0.370518 0.8138552,-0.761354 0.079222,-0.158042 0.094015,-0.395579 0.1200157,-0.577586 0.038606,-0.270254 -0.088361,-0.538469 -0.1200157,-0.795114 -0.048839,-0.395973 -0.1522952,-0.65742 -0.1800234,-0.982644 -0.013653,-0.160139 -0.047602,-0.637868 -0.045006,-0.806372 0.00358,-0.232207 0.078391,-0.485091 0.1200155,-0.600084 0.2361289,-0.566306 0.5015109,-0.823432 0.9826271,-0.993894 0.1086504,-0.0385 0.2439281,-0.0038 0.3225418,-0.05626 0.056045,-0.03736 0.2957287,-0.123209 0.3337935,-0.161273 0.038045,-0.03805 0.06964,-0.06723 0.1050133,-0.09376 0.055075,-0.04131 0.2143136,-0.184425 0.3000388,-0.258787 0.039375,-0.03415 0.4030875,-0.2879008 0.4838127,-0.247536 0.3434372,0.072391 0.2583196,0.239586 0.2887872,0.461316 0.065546,0.420339 0.1088219,0.971365 0.1162652,1.200175 0.00605,0.18585 0.026172,0.401633 -0.018753,0.581335 -0.053982,1.168587 -0.3128731,2.2709 -0.6225808,3.352988 -0.1178496,0.411757 -0.2558253,0.97262 -0.3037892,1.263927 -0.07687,0.466867 -0.4313325,0.23629 -0.5438207,0.600088 -0.081462,0.263462 -0.1252911,0.690461 0.1312672,0.761363 0.2030748,0.05612 1.0235097,0.06717 1.3726776,0.01874 0.1124147,-0.01559 0.2490244,0.02567 0.3300429,-0.105014 0.050813,-0.08196 0.4563308,-1.385674 0.5025647,-1.541468 0.3241146,-1.092158 0.4416364,-1.239204 0.6863391,-1.909032 0.2807323,-0.680391 0.7602769,-1.573621 0.8138552,-2.816656 0.056379,0.310518 0.1603929,1.081276 0.2775359,1.432709 0.1566959,0.470098 0.1858602,0.794961 0.3000388,1.320192 0.2143177,0.985872 0.6991727,2.578118 0.5250687,2.636627 -0.362539,0.121843 -0.238142,0.608849 -0.213778,0.802616 0.02481,0.19737 0.289751,0.191284 0.720093,0.191284 0.118448,0 0.916992,0.01896 1.08014,-0.04126 0.235713,-0.08698 0.135386,-0.303404 0.131267,-0.386299 -0.02034,-0.409382 4.84e-4,-0.165889 -0.08626,-0.697604 -0.04858,-0.297762 -0.12128,-1.335697 -0.108764,-1.980285 0.01584,-0.816025 0.06376,-1.239036 0.213777,-2.134068 0,-0.128586 0.0434,-0.449523 -0.138768,-0.888875 1.007273,0.396481 1.478227,0.556692 2.614088,0.663843 -0.08482,0.694205 -0.218029,1.474788 -0.277536,2.134067 -0.02544,0.281849 -0.07416,0.818459 -0.07126,1.357696 0.0035,0.653075 -0.06646,0.941416 -0.138768,0.952639 -0.338802,0.05257 -0.316356,0.440141 -0.228779,0.870126 0.03823,0.187709 0.671969,0.155531 0.866362,0.161267 0.226084,0.0067 0.734788,0.03145 0.922619,-0.09376 0.08722,-0.05815 0.118965,-0.310223 0.127517,-0.397557 0.20759,-1.477344 0.49941,-2.966315 0.922619,-4.189366 0.02265,0.102411 0.235884,0.964846 0.300039,1.136422 0.20729,0.55436 0.247833,0.891621 0.491314,1.380199 0.123365,0.247549 0.103612,0.180953 0.195025,0.375056 0.131989,0.280252 0.134331,0.387462 0.191275,0.472569 0.171481,0.256249 -0.116507,0.363819 -0.15002,0.58883 -0.07501,0.503651 0.08573,0.644563 0.22503,0.708857 0.191526,0.08839 0.705659,0.01845 1.031383,0 0.325726,-0.01845 0.334612,0.02771 0.457559,-0.03376 0.06579,-0.0329 0.08715,-0.11643 0.161271,-0.150023 -0.0056,-0.627365 -0.02062,-0.729382 -0.09376,-0.97514 -0.322419,-1.083313 -0.701574,-3.24509 -0.225029,-5.464541 0.03356,-0.156301 0.252012,-1.012475 0.266284,-1.984036 0.294953,1.263381 0.05925,2.374151 0.750097,3.825551 0.112863,0.263953 0.71975,-0.04366 0.716342,-0.24378 -0.0021,-0.122442 -0.18367,-0.475761 -0.255032,-0.686355 C 20.56416,11.452507 20.562274,10.54786 20.522527,9.3186254 20.506434,8.8208267 20.39361,8.1538148 20.106222,7.4133494 19.758491,6.517399 19.18903,5.7906219 18.61728,5.1705239 18.305734,4.8326313 17.808716,4.5229853 16.922061,4.2403889 16.1153,4.0183085 15.413051,4.0633814 14.285469,4.1128704 c -0.420014,0.01843 -1.222875,0.1752324 -1.939,0.1687753 -0.215971,-0.0019 -0.474539,-0.02079 -0.697591,-0.026251 -0.772838,-0.01894 -1.13453,-0.413011 -2.2690428,-0.3825564 z"
- id="path3793"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccssssssssscsscscssssccsssssscsscssccccssssccsccssccscssscccssccccccssscscsscsscccsssscscsc" />
-</svg>
diff --git a/navit/icons/zoom_in.svg b/navit/icons/zoom_in.svg
deleted file mode 100644
index 18ff2dac8..000000000
--- a/navit/icons/zoom_in.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.48.0 r9654"
- sodipodi:docname="zoom_in.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/zeroedout/share/usr/share/navit/xpm/zoom_in.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- version="1.0">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.919596"
- inkscape:cx="13.199956"
- inkscape:cy="14.64192"
- inkscape:document-units="px"
- inkscape:current-layer="g3036"
- showgrid="true"
- inkscape:window-width="1394"
- inkscape:window-height="968"
- inkscape:window-x="0"
- inkscape:window-y="20"
- width="48px"
- height="48px"
- showguides="true"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="lower copy"
- id="g3036"
- inkscape:groupmode="layer"
- style="display:inline"
- sodipodi:insensitive="true">
- <path
- transform="matrix(0.84928644,0,0,0.84928644,3.5710462,3.6632047)"
- d="m 47.603437,23.945744 a 23.549181,23.549181 0 1 1 -47.09836155,0 23.549181,23.549181 0 1 1 47.09836155,0 z"
- sodipodi:ry="23.549181"
- sodipodi:rx="23.549181"
- sodipodi:cy="23.945744"
- sodipodi:cx="24.054256"
- id="path3038"
- style="fill:#999999;fill-opacity:0.38536586;stroke:none;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.77851257,0,0,0.77851257,5.273459,5.3579376)"
- d="m 47.603437,23.945744 a 23.549181,23.549181 0 1 1 -47.09836155,0 23.549181,23.549181 0 1 1 47.09836155,0 z"
- sodipodi:ry="23.549181"
- sodipodi:rx="23.549181"
- sodipodi:cy="23.945744"
- sodipodi:cx="24.054256"
- id="path6552"
- style="fill:none;stroke:#999999;stroke-width:4.28166914;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- sodipodi:type="arc" />
- </g>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- sodipodi:insensitive="true"
- style="display:inline">
- <path
- id="path2178"
- style="fill:none;stroke:#999999;stroke-width:4.0538249;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker-start:none"
- d="m 12.508912,24 c 22.982175,0 22.982175,0 22.982175,0 m -11.63349,11.491087 0,-22.982175"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/navit/icons/zoom_out.svg b/navit/icons/zoom_out.svg
deleted file mode 100644
index 1d794efd2..000000000
--- a/navit/icons/zoom_out.svg
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
- sodipodi:docname="zoom_in.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/zeroedout/share/usr/share/navit/xpm/zoom_in.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- version="1.0">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:persp3d-origin="24 : 16 : 1"
- id="perspective11" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="7.919596"
- inkscape:cx="13.199956"
- inkscape:cy="14.64192"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1280"
- inkscape:window-height="973"
- inkscape:window-x="-6"
- inkscape:window-y="0"
- width="48px"
- height="48px"
- showguides="true"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="lower copy"
- id="g3036"
- inkscape:groupmode="layer"
- style="display:inline"
- sodipodi:insensitive="true">
- <path
- transform="matrix(0.84928644,0,0,0.84928644,3.5710462,3.6632047)"
- d="m 47.603437,23.945744 a 23.549181,23.549181 0 1 1 -47.09836155,0 23.549181,23.549181 0 1 1 47.09836155,0 z"
- sodipodi:ry="23.549181"
- sodipodi:rx="23.549181"
- sodipodi:cy="23.945744"
- sodipodi:cx="24.054256"
- id="path3038"
- style="fill:#999999;fill-opacity:0.38536586;stroke:none;display:inline"
- sodipodi:type="arc" />
- <path
- transform="matrix(0.77851257,0,0,0.77851257,5.273459,5.3579376)"
- d="m 47.603437,23.945744 a 23.549181,23.549181 0 1 1 -47.09836155,0 23.549181,23.549181 0 1 1 47.09836155,0 z"
- sodipodi:ry="23.549181"
- sodipodi:rx="23.549181"
- sodipodi:cy="23.945744"
- sodipodi:cx="24.054256"
- id="path6552"
- style="fill:none;stroke:#999999;stroke-width:4.28166914;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- sodipodi:type="arc" />
- </g>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="display:inline">
- <path
- id="path2178"
- style="fill:none;stroke:#999999;stroke-width:4.0538249;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker-start:none"
- d="m 12.508912,24 c 22.982175,0 22.982175,0 22.982175,0"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/navit/iphone/downloader/Classes/DownloaderAppDelegate.h b/navit/iphone/downloader/Classes/DownloaderAppDelegate.h
deleted file mode 100644
index 3227e6b8f..000000000
--- a/navit/iphone/downloader/Classes/DownloaderAppDelegate.h
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// DownloaderAppDelegate.h
-// Downloader
-//
-// Created by Nick Geoghegan on 09/08/2011.
-// Copyright 2011 Navit Project. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-
-@interface DownloaderAppDelegate : NSObject <UIApplicationDelegate> {
-
- UIWindow *window;
- UINavigationController *navigationController;
-}
-
-@property (nonatomic, retain) IBOutlet UIWindow *window;
-@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
-
-@end
-
diff --git a/navit/iphone/downloader/Classes/DownloaderAppDelegate.m b/navit/iphone/downloader/Classes/DownloaderAppDelegate.m
deleted file mode 100644
index ff8a093a8..000000000
--- a/navit/iphone/downloader/Classes/DownloaderAppDelegate.m
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// DownloaderAppDelegate.m
-// Downloader
-//
-// Created by Nick Geoghegan on 09/08/2011.
-// Copyright 2011 Navit Project. All rights reserved.
-//
-
-#import "DownloaderAppDelegate.h"
-#import "RootViewController.h"
-
-
-@implementation DownloaderAppDelegate
-
-@synthesize window;
-@synthesize navigationController;
-
-
-#pragma mark -
-#pragma mark Application lifecycle
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-
- // Override point for customization after application launch.
-
- // Set the navigation controller as the window's root view controller and display.
- self.window.rootViewController = self.navigationController;
- [self.window makeKeyAndVisible];
-
- return YES;
-}
-
-
-- (void)applicationWillResignActive:(UIApplication *)application {
- /*
- Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
- Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
- */
-}
-
-
-- (void)applicationDidEnterBackground:(UIApplication *)application {
- /*
- Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
- If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
- */
-}
-
-
-- (void)applicationWillEnterForeground:(UIApplication *)application {
- /*
- Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background.
- */
-}
-
-
-- (void)applicationDidBecomeActive:(UIApplication *)application {
- /*
- Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
- */
-}
-
-
-- (void)applicationWillTerminate:(UIApplication *)application {
- /*
- Called when the application is about to terminate.
- See also applicationDidEnterBackground:.
- */
-}
-
-
-#pragma mark -
-#pragma mark Memory management
-
-- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
- /*
- Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later.
- */
-}
-
-
-- (void)dealloc {
- [navigationController release];
- [window release];
- [super dealloc];
-}
-
-
-@end
-
diff --git a/navit/iphone/downloader/Classes/DownloaderConstants.h b/navit/iphone/downloader/Classes/DownloaderConstants.h
deleted file mode 100644
index 3ea8d9fc4..000000000
--- a/navit/iphone/downloader/Classes/DownloaderConstants.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * DownloaderConstants.h
- * Downloader
- *
- * Created by Nick Geoghegan on 09/08/2011.
- * Copyright 2011 Navit Project. All rights reserved.
- *
- */
-
-#define NAME_KEY @"name"
-#define BOUNDING_BOX @"bbox"
diff --git a/navit/iphone/downloader/Classes/DownloaderDetailViewController.h b/navit/iphone/downloader/Classes/DownloaderDetailViewController.h
deleted file mode 100644
index a7238e8ed..000000000
--- a/navit/iphone/downloader/Classes/DownloaderDetailViewController.h
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-// DownloaderDetailViewController.h
-// Downloader
-//
-// Created by Nick Geoghegan on 09/08/2011.
-// Copyright 2011 Navit Project. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-
-
-@interface DownloaderDetailViewController : UIViewController {
-
-@private
- NSDictionary *locationName_;
-
-
-}
-
-@property(nonatomic, retain) NSDictionary *locationName;
-
-@end
diff --git a/navit/iphone/downloader/Classes/DownloaderDetailViewController.m b/navit/iphone/downloader/Classes/DownloaderDetailViewController.m
deleted file mode 100644
index 97e24b1c4..000000000
--- a/navit/iphone/downloader/Classes/DownloaderDetailViewController.m
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// DownloaderDetailViewController.m
-// Downloader
-//
-// Created by Nick Geoghegan on 09/08/2011.
-// Copyright 2011 Navit Project. All rights reserved.
-//
-
-#import "DownloaderDetailViewController.h"
-#import "DownloaderConstants.h"
-
-@implementation DownloaderDetailViewController
-
-@synthesize locationName=locationName_;
-
-
-// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
-/*
-- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
- self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
- if (self) {
- // Custom initialization.
- }
- return self;
-}
-*/
-
-
-// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
-- (void)viewDidLoad {
-
- // Sets the Navigation bar to have the location name
- self.title = [self.locationName objectForKey:NAME_KEY];
-
- [super viewDidLoad];
-}
-
-
-/*
-// Override to allow orientations other than the default portrait orientation.
-- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
- // Return YES for supported orientations.
- return (interfaceOrientation == UIInterfaceOrientationPortrait);
-}
-*/
-
-- (void)didReceiveMemoryWarning {
- // Releases the view if it doesn't have a superview.
- [super didReceiveMemoryWarning];
-
- // Release any cached data, images, etc. that aren't in use.
-}
-
-- (void)viewDidUnload {
- [super viewDidUnload];
- // Release any retained subviews of the main view.
- // e.g. self.myOutlet = nil;
-}
-
--(void) viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)dealloc {
- [locationName_ release];
- [super dealloc];
-}
-
-
-@end
diff --git a/navit/iphone/downloader/Classes/DownloaderDetailViewController.xib b/navit/iphone/downloader/Classes/DownloaderDetailViewController.xib
deleted file mode 100644
index da3a7c836..000000000
--- a/navit/iphone/downloader/Classes/DownloaderDetailViewController.xib
+++ /dev/null
@@ -1,397 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1056</int>
- <string key="IBDocument.SystemVersion">10K549</string>
- <string key="IBDocument.InterfaceBuilderVersion">851</string>
- <string key="IBDocument.AppKitVersion">1038.36</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">141</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="1"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBProxyObject" id="372490531">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBProxyObject" id="975951072">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBUIView" id="191373211">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBUIButton" id="433218619">
- <reference key="NSNextResponder" ref="191373211"/>
- <int key="NSvFlags">292</int>
- <string key="NSFrame">{{20, 20}, {280, 59}}</string>
- <reference key="NSSuperview" ref="191373211"/>
- <bool key="IBUIOpaque">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <int key="IBUIContentHorizontalAlignment">0</int>
- <int key="IBUIContentVerticalAlignment">0</int>
- <object class="NSFont" key="IBUIFont">
- <string key="NSName">Helvetica-Bold</string>
- <double key="NSSize">36</double>
- <int key="NSfFlags">16</int>
- </object>
- <int key="IBUIButtonType">1</int>
- <string key="IBUINormalTitle">Download</string>
- <object class="NSColor" key="IBUIHighlightedTitleColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <object class="NSColor" key="IBUINormalTitleColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA</bytes>
- </object>
- <object class="NSColor" key="IBUINormalTitleShadowColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC41AA</bytes>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{320, 416}</string>
- <reference key="NSSuperview"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- <object class="NSColorSpace" key="NSCustomColorSpace">
- <int key="NSID">2</int>
- </object>
- </object>
- <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
- <object class="IBUISimulatedNavigationBarMetrics" key="IBUISimulatedTopBarMetrics">
- <bool key="IBUIPrompted">NO</bool>
- </object>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="372490531"/>
- <reference key="destination" ref="191373211"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <reference key="object" ref="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="191373211"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="433218619"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="372490531"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="975951072"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7</int>
- <reference key="object" ref="433218619"/>
- <reference key="parent" ref="191373211"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.CustomClassName</string>
- <string>-2.CustomClassName</string>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>7.IBPluginDependency</string>
- <string>7.IBViewBoundsToFrameTransform</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>DownloaderDetailViewController</string>
- <string>UIResponder</string>
- <string>{{556, 276}, {320, 480}}</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSAffineTransform">
- <bytes key="NSTransformStruct">P4AAAL+AAABBoAAAw08AAA</bytes>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">13</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">DownloaderDetailViewController</string>
- <string key="superclassName">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Classes/DownloaderDetailViewController.h</string>
- </object>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="217278951">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIButton</string>
- <string key="superclassName">UIControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIControl</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIResponder</string>
- <string key="superclassName">NSObject</string>
- <reference key="sourceIdentifier" ref="217278951"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchBar</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchDisplayController</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
- <integer value="1056" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../Downloader.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <string key="IBCocoaTouchPluginVersion">141</string>
- </data>
-</archive>
diff --git a/navit/iphone/downloader/Classes/RootViewController.h b/navit/iphone/downloader/Classes/RootViewController.h
deleted file mode 100644
index 5cfe64cd4..000000000
--- a/navit/iphone/downloader/Classes/RootViewController.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// RootViewController.h
-// Downloader
-//
-// Created by Nick Geoghegan on 09/08/2011.
-// Copyright 2011 Navit Project. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-
-@interface RootViewController : UITableViewController
-{
- NSMutableArray* locations_;
-
-}
-
-@property (nonatomic, retain) NSMutableArray* locations;
-
-@end
diff --git a/navit/iphone/downloader/Classes/RootViewController.m b/navit/iphone/downloader/Classes/RootViewController.m
deleted file mode 100644
index d2820fe3c..000000000
--- a/navit/iphone/downloader/Classes/RootViewController.m
+++ /dev/null
@@ -1,185 +0,0 @@
-//
-// RootViewController.m
-// Downloader
-//
-// Created by Nick Geoghegan on 09/08/2011.
-// Copyright 2011 Navit Project. All rights reserved.
-//
-
-#import "RootViewController.h"
-#import "DownloaderDetailViewController.h"
-#import "DownloaderConstants.h"
-
-@implementation RootViewController
-
-@synthesize locations=locations_;
-
-#pragma mark -
-#pragma mark View lifecycle
-
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- // Sets the title of the Navigation bar.
- self.title= @"Navit Map Downloader";
-
- // Loads in the array for locations and their associated bounding boxes
- NSString *path = [[NSBundle mainBundle] pathForResource:@"LocationsArray" ofType:@"plist"];
- locations_ = [[NSMutableArray alloc] initWithContentsOfFile:path];
-
- // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
- // self.navigationItem.rightBarButtonItem = self.editButtonItem;
-}
-
-
-/*
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-*/
-/*
-- (void)viewDidAppear:(BOOL)animated {
- [super viewDidAppear:animated];
-}
-*/
-/*
-- (void)viewWillDisappear:(BOOL)animated {
- [super viewWillDisappear:animated];
-}
-*/
-/*
-- (void)viewDidDisappear:(BOOL)animated {
- [super viewDidDisappear:animated];
-}
-*/
-
-/*
- // Override to allow orientations other than the default portrait orientation.
-- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
- // Return YES for supported orientations.
- return (interfaceOrientation == UIInterfaceOrientationPortrait);
-}
- */
-
-
-#pragma mark -
-#pragma mark Table view data source
-
-// Customize the number of sections in the table view.
-- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
- return 1;
-}
-
-
-// Customize the number of rows in the table view.
-- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
- return [self.locations count] ;
-}
-
-
-// Customize the appearance of table view cells.
-- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
-
- static NSString *CellIdentifier = @"Cell";
-
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
- if (cell == nil) {
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
- }
-
- // Configure the cell.
-
- // Gets the location name from LocationsArray.plist
- cell.textLabel.text = [[self.locations objectAtIndex:indexPath.row] objectForKey:NAME_KEY];
-
- //Makes the fancy arrows to the left of the region being downloaded (e.g. "Ireland > " )
- cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
- return cell;
-}
-
-
-/*
-// Override to support conditional editing of the table view.
-- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
- // Return NO if you do not want the specified item to be editable.
- return YES;
-}
-*/
-
-
-/*
-// Override to support editing the table view.
-- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
-
- if (editingStyle == UITableViewCellEditingStyleDelete) {
- // Delete the row from the data source.
- [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
- }
- else if (editingStyle == UITableViewCellEditingStyleInsert) {
- // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
- }
-}
-*/
-
-
-/*
-// Override to support rearranging the table view.
-- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
-}
-*/
-
-
-/*
-// Override to support conditional rearranging of the table view.
-- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
- // Return NO if you do not want the item to be re-orderable.
- return YES;
-}
-*/
-
-
-#pragma mark -
-#pragma mark Table view delegate
-
-- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
-
- DownloaderDetailViewController *detailViewController = [[DownloaderDetailViewController alloc] initWithNibName:@"DownloaderDetailViewController" bundle:nil];
-
- // Sets the "Back" button in the next ViewController (DownloaderDetailViewController).
- // Which, be default, pulls the name from the previous ViewController
- // Here, we manually call it the text label "Back"
- self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
-
- // Pass the selected object to the new view controller.
- detailViewController.locationName = [self.locations objectAtIndex:indexPath.row];
- [self.navigationController pushViewController:detailViewController animated:YES];
-
- [DownloaderDetailViewController release];
-}
-
-
-#pragma mark -
-#pragma mark Memory management
-
-- (void)didReceiveMemoryWarning {
- // Releases the view if it doesn't have a superview.
- [super didReceiveMemoryWarning];
-
- // Relinquish ownership any cached data, images, etc that aren't in use.
-}
-
-- (void)viewDidUnload {
- // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
- // For example: self.myOutlet = nil;
-}
-
-
-- (void)dealloc {
- [locations_ release];
- [super dealloc];
-}
-
-
-@end
-
diff --git a/navit/iphone/downloader/Downloader-Info.plist b/navit/iphone/downloader/Downloader-Info.plist
deleted file mode 100644
index 32894445d..000000000
--- a/navit/iphone/downloader/Downloader-Info.plist
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleDisplayName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundleExecutable</key>
- <string>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string></string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>${PRODUCT_NAME}</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1.0</string>
- <key>LSRequiresIPhoneOS</key>
- <true/>
- <key>NSMainNibFile</key>
- <string>MainWindow</string>
-</dict>
-</plist>
diff --git a/navit/iphone/downloader/Downloader.xcodeproj/project.pbxproj b/navit/iphone/downloader/Downloader.xcodeproj/project.pbxproj
deleted file mode 100755
index a2d6f5645..000000000
--- a/navit/iphone/downloader/Downloader.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,278 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 016BF3D613F1D54C0042505F /* LocationsArray.plist in Resources */ = {isa = PBXBuildFile; fileRef = 016BF3D513F1D54C0042505F /* LocationsArray.plist */; };
- 01FC613413F1CB4100662D1B /* DownloaderDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 01FC613213F1CB4100662D1B /* DownloaderDetailViewController.m */; };
- 01FC613513F1CB4100662D1B /* DownloaderDetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 01FC613313F1CB4100662D1B /* DownloaderDetailViewController.xib */; };
- 1D3623260D0F684500981E51 /* DownloaderAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* DownloaderAppDelegate.m */; };
- 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
- 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
- 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
- 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; };
- 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; };
- 28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* RootViewController.m */; };
- 28F335F11007B36200424DE2 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28F335F01007B36200424DE2 /* RootViewController.xib */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
- 016BF3D513F1D54C0042505F /* LocationsArray.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = LocationsArray.plist; sourceTree = "<group>"; };
- 01FC613113F1CB4100662D1B /* DownloaderDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownloaderDetailViewController.h; sourceTree = "<group>"; };
- 01FC613213F1CB4100662D1B /* DownloaderDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DownloaderDetailViewController.m; sourceTree = "<group>"; };
- 01FC613313F1CB4100662D1B /* DownloaderDetailViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = DownloaderDetailViewController.xib; path = Classes/DownloaderDetailViewController.xib; sourceTree = "<group>"; };
- 01FC615513F1D27700662D1B /* DownloaderConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownloaderConstants.h; sourceTree = "<group>"; };
- 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
- 1D3623240D0F684500981E51 /* DownloaderAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownloaderAppDelegate.h; sourceTree = "<group>"; };
- 1D3623250D0F684500981E51 /* DownloaderAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DownloaderAppDelegate.m; sourceTree = "<group>"; };
- 1D6058910D05DD3D006BFB54 /* Downloader.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Downloader.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
- 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
- 28A0AAE50D9B0CCF005BE974 /* Downloader_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Downloader_Prefix.pch; sourceTree = "<group>"; };
- 28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = "<group>"; };
- 28C286DF0D94DF7D0034E888 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = "<group>"; };
- 28C286E00D94DF7D0034E888 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = "<group>"; };
- 28F335F01007B36200424DE2 /* RootViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RootViewController.xib; sourceTree = "<group>"; };
- 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- 8D1107310486CEB800E47090 /* Downloader-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Downloader-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
- 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
- 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 080E96DDFE201D6D7F000001 /* Classes */ = {
- isa = PBXGroup;
- children = (
- 28C286DF0D94DF7D0034E888 /* RootViewController.h */,
- 28C286E00D94DF7D0034E888 /* RootViewController.m */,
- 1D3623240D0F684500981E51 /* DownloaderAppDelegate.h */,
- 1D3623250D0F684500981E51 /* DownloaderAppDelegate.m */,
- 01FC613113F1CB4100662D1B /* DownloaderDetailViewController.h */,
- 01FC613213F1CB4100662D1B /* DownloaderDetailViewController.m */,
- 01FC615513F1D27700662D1B /* DownloaderConstants.h */,
- );
- path = Classes;
- sourceTree = "<group>";
- };
- 19C28FACFE9D520D11CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 1D6058910D05DD3D006BFB54 /* Downloader.app */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
- isa = PBXGroup;
- children = (
- 080E96DDFE201D6D7F000001 /* Classes */,
- 29B97315FDCFA39411CA2CEA /* Other Sources */,
- 29B97317FDCFA39411CA2CEA /* Resources */,
- 29B97323FDCFA39411CA2CEA /* Frameworks */,
- 19C28FACFE9D520D11CA2CBB /* Products */,
- );
- name = CustomTemplate;
- sourceTree = "<group>";
- };
- 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
- isa = PBXGroup;
- children = (
- 28A0AAE50D9B0CCF005BE974 /* Downloader_Prefix.pch */,
- 29B97316FDCFA39411CA2CEA /* main.m */,
- );
- name = "Other Sources";
- sourceTree = "<group>";
- };
- 29B97317FDCFA39411CA2CEA /* Resources */ = {
- isa = PBXGroup;
- children = (
- 016BF3D513F1D54C0042505F /* LocationsArray.plist */,
- 28F335F01007B36200424DE2 /* RootViewController.xib */,
- 28AD735F0D9D9599002E5188 /* MainWindow.xib */,
- 01FC613313F1CB4100662D1B /* DownloaderDetailViewController.xib */,
- 8D1107310486CEB800E47090 /* Downloader-Info.plist */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
- 1D30AB110D05D00D00671497 /* Foundation.framework */,
- 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 1D6058900D05DD3D006BFB54 /* Downloader */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Downloader" */;
- buildPhases = (
- 1D60588D0D05DD3D006BFB54 /* Resources */,
- 1D60588E0D05DD3D006BFB54 /* Sources */,
- 1D60588F0D05DD3D006BFB54 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = Downloader;
- productName = Downloader;
- productReference = 1D6058910D05DD3D006BFB54 /* Downloader.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 29B97313FDCFA39411CA2CEA /* Project object */ = {
- isa = PBXProject;
- attributes = {
- ORGANIZATIONNAME = "Navit Project";
- };
- buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Downloader" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
- hasScannedForEncodings = 1;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- en,
- );
- mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 1D6058900D05DD3D006BFB54 /* Downloader */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 1D60588D0D05DD3D006BFB54 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */,
- 28F335F11007B36200424DE2 /* RootViewController.xib in Resources */,
- 01FC613513F1CB4100662D1B /* DownloaderDetailViewController.xib in Resources */,
- 016BF3D613F1D54C0042505F /* LocationsArray.plist in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 1D60588E0D05DD3D006BFB54 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1D60589B0D05DD56006BFB54 /* main.m in Sources */,
- 1D3623260D0F684500981E51 /* DownloaderAppDelegate.m in Sources */,
- 28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */,
- 01FC613413F1CB4100662D1B /* DownloaderDetailViewController.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
- 1D6058940D05DD3E006BFB54 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- COPY_PHASE_STRIP = NO;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = Downloader_Prefix.pch;
- INFOPLIST_FILE = "Downloader-Info.plist";
- PRODUCT_NAME = Downloader;
- };
- name = Debug;
- };
- 1D6058950D05DD3E006BFB54 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- COPY_PHASE_STRIP = YES;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = Downloader_Prefix.pch;
- INFOPLIST_FILE = "Downloader-Info.plist";
- PRODUCT_NAME = Downloader;
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
- C01FCF4F08A954540054247B /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- GCC_C_LANGUAGE_STANDARD = c99;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- PREBINDING = NO;
- SDKROOT = iphoneos;
- };
- name = Debug;
- };
- C01FCF5008A954540054247B /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- GCC_C_LANGUAGE_STANDARD = c99;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
- PREBINDING = NO;
- SDKROOT = iphoneos;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "Downloader" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1D6058940D05DD3E006BFB54 /* Debug */,
- 1D6058950D05DD3E006BFB54 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Downloader" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- C01FCF4F08A954540054247B /* Debug */,
- C01FCF5008A954540054247B /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
-}
diff --git a/navit/iphone/downloader/Downloader_Prefix.pch b/navit/iphone/downloader/Downloader_Prefix.pch
deleted file mode 100644
index 76fcf954f..000000000
--- a/navit/iphone/downloader/Downloader_Prefix.pch
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// Prefix header for all source files of the 'Downloader' target in the 'Downloader' project
-//
-#import <Availability.h>
-
-#ifndef __IPHONE_3_0
-#warning "This project uses features only available in iPhone SDK 3.0 and later."
-#endif
-
-
-#ifdef __OBJC__
- #import <Foundation/Foundation.h>
- #import <UIKit/UIKit.h>
-#endif
diff --git a/navit/iphone/downloader/LocationsArray.plist b/navit/iphone/downloader/LocationsArray.plist
deleted file mode 100644
index 5cf7b69dd..000000000
--- a/navit/iphone/downloader/LocationsArray.plist
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<array>
- <dict>
- <key>bbox</key>
- <string>-180,-90,180,90</string>
- <key>name</key>
- <string>Whole Planet</string>
- </dict>
- <dict>
- <key>bbox</key>
- <string>-12.97,33.59,34.15,72.10</string>
- <key>name</key>
- <string>Europe</string>
- </dict>
- <dict>
- <key>bbox</key>
- <string>-17.6,34.5,42.9,70.9</string>
- <key>name</key>
- <string>Western Europe</string>
- </dict>
- <dict>
- <key>bbox</key>
- <string>-11.17,51.25,-5.23,55.9</string>
- <key>name</key>
- <string>Ireland</string>
- </dict>
- <dict>
- <key>bbox</key>
- <string>5.18,46.84,15.47,55.64</string>
- <key>name</key>
- <string>Germany</string>
- </dict>
-</array>
-</plist>
diff --git a/navit/iphone/downloader/MainWindow.xib b/navit/iphone/downloader/MainWindow.xib
deleted file mode 100644
index 8d98a36c1..000000000
--- a/navit/iphone/downloader/MainWindow.xib
+++ /dev/null
@@ -1,548 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1056</int>
- <string key="IBDocument.SystemVersion">10K549</string>
- <string key="IBDocument.InterfaceBuilderVersion">851</string>
- <string key="IBDocument.AppKitVersion">1038.36</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">141</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBProxyObject" id="841351856">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBProxyObject" id="302016328">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBUICustomObject" id="664661524">
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBUIWindow" id="380026005">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">1316</int>
- <object class="NSPSMatrix" key="NSFrameMatrix"/>
- <string key="NSFrameSize">{320, 480}</string>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MSAxIDEAA</bytes>
- </object>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBUIResizesToFullScreen">YES</bool>
- </object>
- <object class="IBUINavigationController" id="701001926">
- <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
- <int key="interfaceOrientation">1</int>
- </object>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBUIHorizontal">NO</bool>
- <object class="IBUINavigationBar" key="IBUINavigationBar" id="207850653">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrameSize">{0, 0}</string>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <bool key="IBUIMultipleTouchEnabled">YES</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="NSMutableArray" key="IBUIViewControllers">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBUIViewController" id="619226028">
- <object class="IBUINavigationItem" key="IBUINavigationItem" id="394667715">
- <string key="IBUITitle">Downloader</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <reference key="IBUIParentViewController" ref="701001926"/>
- <string key="IBUINibName">RootViewController</string>
- <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
- <object class="IBUISimulatedOrientationMetrics" key="IBUISimulatedOrientationMetrics">
- <int key="interfaceOrientation">1</int>
- </object>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBUIHorizontal">NO</bool>
- </object>
- </object>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="664661524"/>
- </object>
- <int key="connectionID">4</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="664661524"/>
- <reference key="destination" ref="380026005"/>
- </object>
- <int key="connectionID">5</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">navigationController</string>
- <reference key="source" ref="664661524"/>
- <reference key="destination" ref="701001926"/>
- </object>
- <int key="connectionID">15</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <reference key="object" ref="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="380026005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="841351856"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">3</int>
- <reference key="object" ref="664661524"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="302016328"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">9</int>
- <reference key="object" ref="701001926"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="207850653"/>
- <reference ref="619226028"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">11</int>
- <reference key="object" ref="207850653"/>
- <reference key="parent" ref="701001926"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">13</int>
- <reference key="object" ref="619226028"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="394667715"/>
- </object>
- <reference key="parent" ref="701001926"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">14</int>
- <reference key="object" ref="394667715"/>
- <reference key="parent" ref="619226028"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.CustomClassName</string>
- <string>-2.CustomClassName</string>
- <string>11.IBPluginDependency</string>
- <string>13.CustomClassName</string>
- <string>13.IBPluginDependency</string>
- <string>2.IBAttributePlaceholdersKey</string>
- <string>2.IBEditorWindowLastContentRect</string>
- <string>2.IBPluginDependency</string>
- <string>3.CustomClassName</string>
- <string>3.IBPluginDependency</string>
- <string>9.IBEditorWindowLastContentRect</string>
- <string>9.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>UIApplication</string>
- <string>UIResponder</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>RootViewController</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <object class="NSMutableDictionary">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <string>{{673, 376}, {320, 480}}</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>DownloaderAppDelegate</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string>{{186, 276}, {320, 480}}</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">16</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">DownloaderAppDelegate</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>navigationController</string>
- <string>window</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>UINavigationController</string>
- <string>UIWindow</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>navigationController</string>
- <string>window</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBToOneOutletInfo">
- <string key="name">navigationController</string>
- <string key="candidateClassName">UINavigationController</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">window</string>
- <string key="candidateClassName">UIWindow</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Classes/DownloaderAppDelegate.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">RootViewController</string>
- <string key="superclassName">UITableViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Classes/RootViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIWindow</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBUserSource</string>
- <string key="minorKey"/>
- </object>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="48103097">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIApplication</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIBarButtonItem</string>
- <string key="superclassName">UIBarItem</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIBarButtonItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIBarItem</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIBarItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UINavigationBar</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="193736137">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINavigationBar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UINavigationController</string>
- <string key="superclassName">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="720195805">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UINavigationItem</string>
- <string key="superclassName">NSObject</string>
- <reference key="sourceIdentifier" ref="193736137"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIResponder</string>
- <string key="superclassName">NSObject</string>
- <reference key="sourceIdentifier" ref="48103097"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchBar</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchDisplayController</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UITableViewController</string>
- <string key="superclassName">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITableViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIPrintFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <reference key="sourceIdentifier" ref="720195805"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIPopoverController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISplitViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIWindow</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
- <integer value="1056" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="3100" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">Downloader.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <string key="IBCocoaTouchPluginVersion">141</string>
- </data>
-</archive>
diff --git a/navit/iphone/downloader/RootViewController.xib b/navit/iphone/downloader/RootViewController.xib
deleted file mode 100644
index ccd429313..000000000
--- a/navit/iphone/downloader/RootViewController.xib
+++ /dev/null
@@ -1,384 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">784</int>
- <string key="IBDocument.SystemVersion">10D541</string>
- <string key="IBDocument.InterfaceBuilderVersion">760</string>
- <string key="IBDocument.AppKitVersion">1038.29</string>
- <string key="IBDocument.HIToolboxVersion">460.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- <string key="NS.object.0">81</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="2"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBProxyObject" id="841351856">
- <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBProxyObject" id="371349661">
- <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- </object>
- <object class="IBUITableView" id="709618507">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{320, 247}</string>
- <reference key="NSSuperview"/>
- <object class="NSColor" key="IBUIBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- <bool key="IBUIOpaque">NO</bool>
- <bool key="IBUIClipsSubviews">YES</bool>
- <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
- <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <bool key="IBUIBouncesZoom">NO</bool>
- <int key="IBUISeparatorStyle">1</int>
- <int key="IBUISectionIndexMinimumDisplayRowCount">0</int>
- <bool key="IBUIShowsSelectionImmediatelyOnTouchBegin">YES</bool>
- <float key="IBUIRowHeight">44</float>
- <float key="IBUISectionHeaderHeight">22</float>
- <float key="IBUISectionFooterHeight">22</float>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">view</string>
- <reference key="source" ref="841351856"/>
- <reference key="destination" ref="709618507"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">dataSource</string>
- <reference key="source" ref="709618507"/>
- <reference key="destination" ref="841351856"/>
- </object>
- <int key="connectionID">4</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBCocoaTouchOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="709618507"/>
- <reference key="destination" ref="841351856"/>
- </object>
- <int key="connectionID">5</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <reference key="object" ref="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="841351856"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="371349661"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="709618507"/>
- <reference key="parent" ref="0"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.CustomClassName</string>
- <string>-2.CustomClassName</string>
- <string>2.IBEditorWindowLastContentRect</string>
- <string>2.IBPluginDependency</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>RootViewController</string>
- <string>UIResponder</string>
- <string>{{144, 609}, {320, 247}}</string>
- <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">5</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">RootViewController</string>
- <string key="superclassName">UITableViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Classes/RootViewController.h</string>
- </object>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="654420027">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIResponder</string>
- <string key="superclassName">NSObject</string>
- <reference key="sourceIdentifier" ref="654420027"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIScrollView</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIScrollView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchBar</string>
- <string key="superclassName">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UISearchDisplayController</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UISearchDisplayController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UITableView</string>
- <string key="superclassName">UIScrollView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITableView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UITableViewController</string>
- <string key="superclassName">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITableViewController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIView</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">UIViewController</string>
- <string key="superclassName">UIResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
- <integer value="784" key="NS.object.0"/>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
- <integer value="3100" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">Downloader.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <string key="IBCocoaTouchPluginVersion">81</string>
- </data>
-</archive>
diff --git a/navit/iphone/downloader/main.m b/navit/iphone/downloader/main.m
deleted file mode 100644
index e18fb9c59..000000000
--- a/navit/iphone/downloader/main.m
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// main.m
-// Downloader
-//
-// Created by Nick Geoghegan on 09/08/2011.
-// Copyright 2011 Navit Project. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-
-int main(int argc, char *argv[]) {
-
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- int retVal = UIApplicationMain(argc, argv, nil, nil);
- [pool release];
- return retVal;
-}
diff --git a/navit/item.c b/navit/item.c
deleted file mode 100644
index 3f865c19d..000000000
--- a/navit/item.c
+++ /dev/null
@@ -1,467 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include "coord.h"
-#include "debug.h"
-#include "item.h"
-#include "map.h"
-#include "transform.h"
-
-struct item_name {
- enum item_type item;
- char *name;
-};
-
-struct item_range item_range_all = { type_none, type_last };
-
-struct default_flags {
- enum item_type type;
- int flags;
-};
-
-struct item busy_item;
-
-struct default_flags default_flags2[]={
- {type_street_nopass, AF_PBH},
- {type_street_0, AF_ALL},
- {type_street_1_city, AF_ALL},
- {type_street_2_city, AF_ALL},
- {type_street_3_city, AF_ALL},
- {type_street_4_city, AF_ALL},
- {type_highway_city, AF_MOTORIZED_FAST},
- {type_street_1_land, AF_ALL},
- {type_street_2_land, AF_ALL},
- {type_street_3_land, AF_ALL},
- {type_street_4_land, AF_ALL},
- {type_street_n_lanes, AF_MOTORIZED_FAST},
- {type_highway_land, AF_MOTORIZED_FAST},
- {type_ramp, AF_MOTORIZED_FAST},
- {type_roundabout, AF_ALL},
- {type_ferry, AF_ALL},
- {type_cycleway, AF_PBH},
- {type_track_paved, AF_ALL},
- {type_track_gravelled, AF_ALL},
- {type_track_unpaved, AF_ALL},
- {type_track_ground, AF_ALL},
- {type_track_grass, AF_ALL},
- {type_footway, AF_PBH},
- {type_living_street, AF_ALL},
- {type_street_service, AF_ALL},
- {type_street_parking_lane, AF_ALL},
- {type_bridleway, AF_PBH},
- {type_path, AF_PBH},
- {type_steps, AF_PBH},
- {type_street_pedestrian, AF_PBH},
- {type_hiking_mountain, AF_PEDESTRIAN},
- {type_hiking_mountain_demanding, AF_PEDESTRIAN},
- {type_hiking, AF_PEDESTRIAN},
- {type_hiking_alpine, AF_PEDESTRIAN},
- {type_hiking_alpine_demanding, AF_PEDESTRIAN},
- {type_hiking_alpine_difficult, AF_PEDESTRIAN},
-};
-
-
-
-struct item_name item_names[]={
-#define ITEM2(x,y) ITEM(y)
-#define ITEM(x) { type_##x, #x },
-#include "item_def.h"
-#undef ITEM2
-#undef ITEM
-};
-
-static GHashTable *default_flags_hash;
-
-static GHashTable *item_hash;
-
-void
-item_create_hash(void)
-{
- int i;
- item_hash=g_hash_table_new(g_str_hash, g_str_equal);
- for (i=0 ; i < sizeof(item_names)/sizeof(struct item_name) ; i++) {
- g_hash_table_insert(item_hash, item_names[i].name, GINT_TO_POINTER(item_names[i].item));
- }
-}
-
-void
-item_destroy_hash(void)
-{
- g_hash_table_destroy(item_hash);
- item_hash=NULL;
-}
-
-int *
-item_get_default_flags(enum item_type type)
-{
- if (!default_flags_hash) {
- int i;
- default_flags_hash=g_hash_table_new(NULL, NULL);
- for (i = 0 ; i < sizeof(default_flags2)/sizeof(struct default_flags); i++) {
- g_hash_table_insert(default_flags_hash, (void *)(long)default_flags2[i].type, &default_flags2[i].flags);
- }
- }
- return g_hash_table_lookup(default_flags_hash, (void *)(long)type);
-}
-
-void
-item_cleanup(void)
-{
- if (default_flags_hash)
- g_hash_table_destroy(default_flags_hash);
-}
-
-/**
- * @brief Resets the "coordinate pointer" of an item
- *
- * This function resets the "coordinate pointer" of an item to point to the first coordinate pair,
- * so that at the next call to {@code item_coord_get()} the first coordinates will be returned.
- *
- * @param it The map item whose pointer is to be reset. This must be the active item, i.e. the last one retrieved from the
- * {@code map_rect}. There can only be one active item per {@code map_rect}.
- */
-void
-item_coord_rewind(struct item *it)
-{
- it->meth->item_coord_rewind(it->priv_data);
-}
-
-/**
- * @brief Gets the next coordinates from an item
- *
- * This function returns a list of coordinates from an item and advances the "coordinate pointer"
- * by the number of coordinates returned, so that at the next call the next coordinates will be returned.
- *
- * Coordinates are stored in the projection of the item's map. If you need them in a different projection,
- * call {@code item_coord_get_pro()} instead.
- *
- * @param it The map item whose coordinates to retrieve. This must be the active item, i.e. the last one retrieved from the
- * {@code map_rect}. There can only be one active item per {@code map_rect}.
- * @param c Points to a buffer that will receive the coordinates.
- * The buffer must be at least {@code count * sizeof(struct coord)} bytes in size.
- * @param count The number of coordinates to retrieve. Attempts to read past the
- * end are handled gracefully and only the available number of coordinates is
- * returned.
- *
- * @return The number of coordinates actually retrieved and stored in {@code c}
- */
-int
-item_coord_get(struct item *it, struct coord *c, int count)
-{
- return it->meth->item_coord_get(it->priv_data, c, count);
-}
-
-int
-item_coord_set(struct item *it, struct coord *c, int count, enum change_mode mode)
-{
- if (!it->meth->item_coord_set)
- return 0;
- return it->meth->item_coord_set(it->priv_data, c, count, mode);
-}
-
-int
-item_coord_get_within_selection(struct item *it, struct coord *c, int count, struct map_selection *sel)
-{
- int i,ret=it->meth->item_coord_get(it->priv_data, c, count);
- struct coord_rect r;
- struct map_selection *curr;
- if (ret <= 0 || !sel)
- return ret;
- r.lu=c[0];
- r.rl=c[0];
- for (i = 1 ; i < ret ; i++) {
- if (r.lu.x > c[i].x)
- r.lu.x=c[i].x;
- if (r.rl.x < c[i].x)
- r.rl.x=c[i].x;
- if (r.rl.y > c[i].y)
- r.rl.y=c[i].y;
- if (r.lu.y < c[i].y)
- r.lu.y=c[i].y;
- }
- curr=sel;
- while (curr) {
- struct coord_rect *sr=&curr->u.c_rect;
- if (r.lu.x <= sr->rl.x && r.rl.x >= sr->lu.x &&
- r.lu.y >= sr->rl.y && r.rl.y <= sr->lu.y)
- return ret;
- curr=curr->next;
- }
- return 0;
-}
-
-/**
- * @brief Gets the next coordinates from an item and reprojects them
- *
- * This function returns a list of coordinates from an item and advances the "coordinate pointer"
- * by the number of coordinates returned, so that at the next call the next coordinates will be returned.
- *
- * @param it The map item whose coordinates to retrieve. This must be the active item, i.e. the last one retrieved from the
- * {@code map_rect}. There can only be one active item per {@code map_rect}.
- * @param c Points to a buffer that will receive the coordinates.
- * The buffer must be at least {@code count * sizeof(struct coord)} bytes in size.
- * @param count The number of coordinates to retrieve. Attempts to read past the
- * end are handled gracefully and only the available number of coordinates is
- * returned.
- * @param projection The projection into which the coordinates will be transformed
- *
- * @return The number of coordinates actually retrieved and stored in {@code c}
- */
-int
-item_coord_get_pro(struct item *it, struct coord *c, int count, enum projection to)
-{
- int ret=item_coord_get(it, c, count);
- int i;
- enum projection from=map_projection(it->map);
- if (from != to)
- for (i = 0 ; i < count ; i++)
- transform_from_to(c+i, from, c+i, to);
- return ret;
-}
-
-int
-item_coord_is_node(struct item *it)
-{
- if (it->meth->item_coord_is_node)
- return it->meth->item_coord_is_node(it->priv_data);
- return 0;
-}
-
-void
-item_attr_rewind(struct item *it)
-{
- it->meth->item_attr_rewind(it->priv_data);
-}
-
-int
-item_attr_get(struct item *it, enum attr_type attr_type, struct attr *attr)
-{
- return it->meth->item_attr_get(it->priv_data, attr_type, attr);
-}
-
-int
-item_attr_set(struct item *it, struct attr *attr, enum change_mode mode)
-{
- if (!it->meth->item_attr_set)
- return 0;
- return it->meth->item_attr_set(it->priv_data, attr, mode);
-}
-/**
- * @brief Set map item type.
- *
- * @param it reference to the item.
- * @param type New type for the item. Setting it to type_none is expected to delete item from the map.
- * @return Non-zero if this action is supported by the map and type is set successfully, 0 on error.
- */
-int
-item_type_set(struct item *it, enum item_type type)
-{
- if (!it->meth->item_type_set)
- return 0;
- return it->meth->item_type_set(it->priv_data, type);
-}
-
-struct item * item_new(char *type, int zoom)
-{
- struct item * it;
-
- it = g_new0(struct item, 1);
-
- /* FIXME evaluate arguments */
-
- return it;
-}
-
-enum item_type
-item_from_name(const char *name)
-{
- int i;
-
- if (item_hash)
- return GPOINTER_TO_INT(g_hash_table_lookup(item_hash, name));
-
- for (i=0 ; i < sizeof(item_names)/sizeof(struct item_name) ; i++) {
- if (! strcmp(item_names[i].name, name))
- return item_names[i].item;
- }
- return type_none;
-}
-
-char *
-item_to_name(enum item_type item)
-{
- int i;
-
- for (i=0 ; i < sizeof(item_names)/sizeof(struct item_name) ; i++) {
- if (item_names[i].item == item)
- return item_names[i].name;
- }
- return NULL;
-}
-
-struct item_hash {
- GHashTable *h;
-};
-
-static guint
-item_hash_hash(gconstpointer key)
-{
- const struct item *itm=key;
- gconstpointer hashkey=(gconstpointer)GINT_TO_POINTER(itm->id_hi^itm->id_lo^(GPOINTER_TO_INT(itm->map)));
- return g_direct_hash(hashkey);
-}
-
-static gboolean
-item_hash_equal(gconstpointer a, gconstpointer b)
-{
- const struct item *itm_a=a;
- const struct item *itm_b=b;
- if (item_is_equal(*itm_a, *itm_b))
- return TRUE;
- return FALSE;
-}
-
-unsigned int
-item_id_hash(const void *key)
-{
- const struct item_id *id=key;
- return id->id_hi^id->id_lo;
-}
-
-int
-item_id_equal(const void *a, const void *b)
-{
- const struct item_id *id_a=a;
- const struct item_id *id_b=b;
- return (id_a->id_hi == id_b->id_hi && id_a->id_lo == id_b->id_lo);
-}
-
-/**
- * @brief Derive item id_lo and id_hi from pointer, considering pointer could be 32 or 64 bit wide but both ids are 32 bit.
- *
- * @param it reference to the item.
- * @param id pointer to derive item id from.
- * @return Nothing.
- */
-void
-item_id_from_ptr(struct item *item, void *id)
-{
-#if !defined(__LP64__) && !defined(__LLP64__) && !defined(WIN64)
- item->id_lo=(int) id;
- item->id_hi=0;
-#else
-# ifndef _MSC_VER
- item->id_lo=((long long)id)&0xFFFFFFFFll;
-# else
- item->id_lo=((long long)id)&0xFFFFFFFFi64;
-# endif
- item->id_hi=((long long)id)>>32;
-#endif
-}
-
-
-struct item_hash *
-item_hash_new(void)
-{
- struct item_hash *ret=g_new(struct item_hash, 1);
-
- ret->h=g_hash_table_new_full(item_hash_hash, item_hash_equal, g_free, NULL);
- return ret;
-}
-
-void
-item_hash_insert(struct item_hash *h, struct item *item, void *val)
-{
- struct item *hitem=g_new(struct item, 1);
- *hitem=*item;
- dbg(lvl_info,"inserting (0x%x,0x%x) into %p\n", item->id_hi, item->id_lo, h->h);
- g_hash_table_insert(h->h, hitem, val);
-}
-
-int
-item_hash_remove(struct item_hash *h, struct item *item)
-{
- int ret;
-
- dbg(lvl_info,"removing (0x%x,0x%x) from %p\n", item->id_hi, item->id_lo, h->h);
- ret=g_hash_table_remove(h->h, item);
- dbg(lvl_info,"ret=%d\n", ret);
-
- return ret;
-}
-
-void *
-item_hash_lookup(struct item_hash *h, struct item *item)
-{
- return g_hash_table_lookup(h->h, item);
-}
-
-
-void
-item_hash_destroy(struct item_hash *h)
-{
- g_hash_table_destroy(h->h);
- g_free(h);
-}
-
-int
-item_range_intersects_range(struct item_range *range1, struct item_range *range2)
-{
- if (range1->max < range2->min)
- return 0;
- if (range1->min > range2->max)
- return 0;
- return 1;
-}
-int
-item_range_contains_item(struct item_range *range, enum item_type type)
-{
- if (type >= range->min && type <= range->max)
- return 1;
- return 0;
-}
-
-void
-item_dump_attr(struct item *item, struct map *map, FILE *out)
-{
- struct attr attr;
- fprintf(out,"type=%s", item_to_name(item->type));
- while (item_attr_get(item, attr_any, &attr))
- fprintf(out," %s='%s'", attr_to_name(attr.type), attr_to_text(&attr, map, 1));
-}
-
-void
-item_dump_filedesc(struct item *item, struct map *map, FILE *out)
-{
-
- int i,count,max=16384;
- struct coord *ca=g_alloca(sizeof(struct coord)*max);
-
- count=item_coord_get(item, ca, item->type < type_line ? 1: max);
- if (item->type < type_line)
- fprintf(out,"mg:0x%x 0x%x ", ca[0].x, ca[0].y);
- item_dump_attr(item, map, out);
- fprintf(out,"\n");
- if (item->type >= type_line)
- for (i = 0 ; i < count ; i++)
- fprintf(out,"mg:0x%x 0x%x\n", ca[i].x, ca[i].y);
-}
diff --git a/navit/item.h b/navit/item.h
deleted file mode 100644
index 341d4406d..000000000
--- a/navit/item.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_ITEM_H
-#define NAVIT_ITEM_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdio.h>
-
-enum item_type {
-#define ITEM2(x,y) type_##y=x,
-#define ITEM(x) type_##x,
-#include "item_def.h"
-#undef ITEM2
-#undef ITEM
-};
-
-#define route_item_first type_street_0
-#define route_item_last type_street_parking_lane
-extern int default_flags[];
-
-#include "attr.h"
-
-
-/* NOTE: we treat districts as towns for now, since
- a) navit does not implement district search yet
- b) OSM "place=suburb" maps to type_district in maptool. with the OSM USA maps,
- there are many "suburbs" that users will consider towns (not districts/counties);
- we want navit's town search to find them
-*/
-#define item_type_is_area(type) ((type) >= type_area)
-#define item_is_town(item) ((item).type >= type_town_label && (item).type <= type_district_label_1e7)
-#define item_is_district(item) ((item).type >= type_district_label && (item).type <= type_district_label_1e7)
-#define item_is_poly_place(item) ((item).type >= type_poly_place1 && (item).type <= type_poly_place6)
-#define item_is_point(item) ((item).type < type_line)
-#define item_is_custom_poi(item) ((item).type >= type_poi_customg && (item).type < type_line)
-#define item_is_street(item) (((item).type >= type_street_nopass && (item).type <= type_roundabout) \
- || (item).type == type_street_service \
- || ((item).type >= type_street_pedestrian && (item).type <= type_track_grass) \
- || (item).type == type_living_street \
- || (item).type == type_street_construction \
- || (item).type == type_path \
- || (item).type == type_street_parking_lane \
- || (item).type == type_footway )
-
-#define item_is_equal_id(a,b) ((a).id_hi == (b).id_hi && (a).id_lo == (b).id_lo)
-#define item_is_equal(a,b) (item_is_equal_id(a,b) && (a).map == (b).map)
-
-struct coord;
-
-enum change_mode {
- change_mode_delete,
- change_mode_modify,
- change_mode_append,
- change_mode_prepend,
-};
-
-struct item_methods {
- void (*item_coord_rewind)(void *priv_data);
- int (*item_coord_get)(void *priv_data, struct coord *c, int count);
- void (*item_attr_rewind)(void *priv_data);
- int (*item_attr_get)(void *priv_data, enum attr_type attr_type, struct attr *attr);
- int (*item_coord_is_node)(void *priv_data);
- int (*item_attr_set)(void *priv_data, struct attr *attr, enum change_mode mode);
- int (*item_coord_set)(void *priv_data, struct coord *c, int count, enum change_mode mode);
- int (*item_type_set)(void *priv_data, enum item_type type);
-};
-
-struct item_id {
- int id_hi;
- int id_lo;
-};
-
-#define ITEM_ID_FMT "(0x%x,0x%x)"
-#define ITEM_ID_ARGS(x) (x).id_hi,(x).id_lo
-
-/**
- * Represents an object on a map, such as a POI, a building, a way or a boundary.
- */
-struct item {
- enum item_type type; /**< Type of the item.*/
- int id_hi; /**< First part of the ID of the item (item IDs have two parts).*/
- int id_lo; /**< Second part of the ID of the item.*/
- struct map *map; /**< The map this items belongs to.*/
- struct item_methods *meth; /**< Methods to manipulate this item.*/
- void *priv_data; /**< Private item data, only used by the map plugin which supplied this item.*/
-};
-
-extern struct item_range {
- enum item_type min,max;
-} item_range_all;
-
-extern struct item busy_item;
-
-/* prototypes */
-enum attr_type;
-enum change_mode;
-enum item_type;
-enum projection;
-struct attr;
-struct coord;
-struct item;
-struct item_hash;
-struct item_range;
-struct map;
-struct map_selection;
-void item_create_hash(void);
-void item_destroy_hash(void);
-int *item_get_default_flags(enum item_type type);
-void item_coord_rewind(struct item *it);
-int item_coord_get(struct item *it, struct coord *c, int count);
-int item_coord_set(struct item *it, struct coord *c, int count, enum change_mode mode);
-int item_coord_get_within_selection(struct item *it, struct coord *c, int count, struct map_selection *sel);
-int item_coord_get_pro(struct item *it, struct coord *c, int count, enum projection to);
-int item_coord_is_node(struct item *it);
-void item_attr_rewind(struct item *it);
-int item_attr_get(struct item *it, enum attr_type attr_type, struct attr *attr);
-int item_attr_set(struct item *it, struct attr *attr, enum change_mode mode);
-int item_type_set(struct item *it, enum item_type type);
-struct item *item_new(char *type, int zoom);
-enum item_type item_from_name(const char *name);
-char *item_to_name(enum item_type item);
-unsigned int item_id_hash(const void *key);
-int item_id_equal(const void *a, const void *b);
-void item_id_from_ptr(struct item *item, void *id);
-struct item_hash *item_hash_new(void);
-void item_hash_insert(struct item_hash *h, struct item *item, void *val);
-int item_hash_remove(struct item_hash *h, struct item *item);
-void *item_hash_lookup(struct item_hash *h, struct item *item);
-void item_hash_destroy(struct item_hash *h);
-int item_range_intersects_range(struct item_range *range1, struct item_range *range2);
-int item_range_contains_item(struct item_range *range, enum item_type type);
-void item_dump_attr(struct item *item, struct map *map, FILE *out);
-void item_dump_filedesc(struct item *item, struct map *map, FILE *out);
-void item_cleanup(void);
-
-/* end of prototypes */
-
-
-#ifdef __cplusplus
-}
-/* __cplusplus */
-#endif
-
-/* NAVIT_ITEM_H */
-#endif
diff --git a/navit/item_def.h b/navit/item_def.h
deleted file mode 100644
index 231891d12..000000000
--- a/navit/item_def.h
+++ /dev/null
@@ -1,631 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/* This file is generated from http://wiki.navit-project.org/index.php/Item_def.h, do not edit it, edit the wiki page instead */
-ITEM2(0x00000000,none)
-ITEM2(0x00000001,point_unspecified)
-ITEM(town_streets)
-ITEM(street_name)
-ITEM(street_name_numbers)
-ITEM(street_number)
-ITEM(position_sat)
-/* Point */
-ITEM2(0x00010000,town_label)
-ITEM2(0x00010001,town_label_0e0)
-ITEM2(0x00010002,town_label_1e0)
-ITEM2(0x00010003,town_label_2e0)
-ITEM2(0x00010004,town_label_5e0)
-ITEM2(0x00010005,town_label_1e1)
-ITEM2(0x00010006,town_label_2e1)
-ITEM2(0x00010007,town_label_5e1)
-ITEM2(0x00010008,town_label_1e2)
-ITEM2(0x00010009,town_label_2e2)
-ITEM2(0x0001000a,town_label_5e2)
-ITEM2(0x0001000b,town_label_1e3)
-ITEM2(0x0001000c,town_label_2e3)
-ITEM2(0x0001000d,town_label_5e3)
-ITEM2(0x0001000e,town_label_1e4)
-ITEM2(0x0001000f,town_label_2e4)
-ITEM2(0x00010010,town_label_5e4)
-ITEM2(0x00010011,town_label_1e5)
-ITEM2(0x00010012,town_label_2e5)
-ITEM2(0x00010013,town_label_5e5)
-ITEM2(0x00010014,town_label_1e6)
-ITEM2(0x00010015,town_label_2e6)
-ITEM2(0x00010016,town_label_5e6)
-ITEM2(0x00010017,town_label_1e7)
-ITEM2(0x00010100,district_label)
-ITEM2(0x00010101,district_label_0e0)
-ITEM2(0x00010102,district_label_1e0)
-ITEM2(0x00010103,district_label_2e0)
-ITEM2(0x00010104,district_label_5e0)
-ITEM2(0x00010105,district_label_1e1)
-ITEM2(0x00010106,district_label_2e1)
-ITEM2(0x00010107,district_label_5e1)
-ITEM2(0x00010108,district_label_1e2)
-ITEM2(0x00010109,district_label_2e2)
-ITEM2(0x0001010a,district_label_5e2)
-ITEM2(0x0001010b,district_label_1e3)
-ITEM2(0x0001010c,district_label_2e3)
-ITEM2(0x0001010d,district_label_5e3)
-ITEM2(0x0001010e,district_label_1e4)
-ITEM2(0x0001010f,district_label_2e4)
-ITEM2(0x00010110,district_label_5e4)
-ITEM2(0x00010111,district_label_1e5)
-ITEM2(0x00010112,district_label_2e5)
-ITEM2(0x00010113,district_label_5e5)
-ITEM2(0x00010114,district_label_1e6)
-ITEM2(0x00010115,district_label_2e6)
-ITEM2(0x00010116,district_label_5e6)
-ITEM2(0x00010117,district_label_1e7)
-ITEM(country_label)
-ITEM(town_ghost)
-ITEM(highway_exit_label)
-ITEM(port_label)
-ITEM(label_unkn)
-ITEM(highway_exit)
-ITEM(poi_lake)
-ITEM(poi_island)
-ITEM(poi)
-ITEM(waypoint)
-ITEM(trackpoint)
-ITEM(bookmark)
-ITEM(former_destination)
-ITEM(poi_land_feature)
-ITEM(poi_cape)
-ITEM(poi_rock)
-ITEM(poi_airport)
-ITEM(poi_toll_booth)
-ITEM(poi_fuel)
-ITEM(poi_hotel)
-ITEM(poi_camp_rv)
-ITEM(poi_marina)
-ITEM(poi_attraction)
-ITEM(poi_museum_history)
-ITEM(poi_shopping)
-ITEM(poi_car_dealer_parts)
-ITEM(poi_car_parking)
-ITEM(poi_wreck)
-ITEM(poi_building)
-ITEM(poi_bridge)
-ITEM(poi_park)
-ITEM(poi_water_feature)
-ITEM(poi_bar)
-ITEM(poi_picnic)
-ITEM(poi_hospital)
-ITEM(poi_camping)
-ITEM(poi_public_utilities)
-ITEM(poi_burgerking)
-ITEM(poi_kfc)
-ITEM(poi_mcdonalds)
-ITEM(poi_wienerwald)
-ITEM(poi_dining)
-ITEM(poi_fastfood)
-ITEM(poi_police)
-ITEM(poi_auto_club)
-ITEM(poi_autoservice)
-ITEM(poi_bank)
-ITEM(poi_bay)
-ITEM(poi_bend)
-ITEM(poi_boat_ramp)
-ITEM(poi_border_station)
-ITEM(poi_bowling)
-ITEM(poi_bus_station)
-ITEM(poi_bus_stop)
-ITEM(poi_business_service)
-ITEM(poi_car_rent)
-ITEM(poi_car_wash)
-ITEM(poi_casino)
-ITEM(poi_cemetery)
-ITEM(poi_church)
-ITEM(poi_cinema)
-ITEM(poi_civil_removeme)
-ITEM(poi_communication)
-ITEM(poi_concert)
-ITEM(poi_cove)
-ITEM(poi_crossing)
-ITEM(poi_dam)
-ITEM(poi_danger_area)
-ITEM(poi_danger_sea_wreck)
-ITEM(poi_daymark)
-ITEM(poi_diving)
-ITEM(poi_drinking_water)
-ITEM(poi_emergency)
-ITEM(poi_fair)
-ITEM(poi_firebrigade)
-ITEM(poi_fish)
-ITEM(poi_forbidden_area)
-ITEM(poi_shop_gps)
-ITEM(poi_golf)
-ITEM(poi_government_building)
-ITEM(poi_height)
-ITEM(poi_heliport)
-ITEM(poi_hotspring)
-ITEM(poi_icesport)
-ITEM(poi_information)
-ITEM(poi_justice)
-ITEM(poi_landmark)
-ITEM(poi_levee)
-ITEM(poi_library)
-ITEM(poi_locale)
-ITEM(poi_loudspeaker)
-ITEM(poi_mall)
-ITEM(poi_manmade_feature)
-ITEM(poi_marine)
-ITEM(poi_marine_type)
-ITEM(poi_mark)
-ITEM(poi_military)
-ITEM(poi_mine)
-ITEM(poi_nondangerous)
-ITEM(poi_oil_field)
-ITEM(poi_personal_service)
-ITEM(poi_pharmacy)
-ITEM(poi_post_removeme)
-ITEM(poi_public_office)
-ITEM(poi_repair_service)
-ITEM(poi_resort)
-ITEM(poi_rest_room_removeme)
-ITEM(poi_restaurant)
-ITEM(poi_restricted_area)
-ITEM(poi_restroom)
-ITEM(poi_sailing)
-ITEM(poi_scenic_area)
-ITEM(poi_school)
-ITEM(poi_service)
-ITEM(poi_shop_apparel)
-ITEM(poi_shop_computer)
-ITEM(poi_shop_department)
-ITEM(poi_shop_furnish_removeme)
-ITEM(poi_shop_grocery)
-ITEM(poi_shop_handg)
-ITEM(poi_shop_merchandise)
-ITEM(poi_shop_retail)
-ITEM(poi_shower)
-ITEM(poi_skiing)
-ITEM(poi_social_service)
-ITEM(poi_sounding)
-ITEM(poi_sport)
-ITEM(poi_stadium)
-ITEM(poi_subdivision_removeme)
-ITEM(poi_swimming)
-ITEM(poi_telephone)
-ITEM(poi_theater)
-ITEM(poi_tide)
-ITEM(poi_tower)
-ITEM(poi_trail)
-ITEM(poi_truck_stop)
-ITEM(poi_tunnel)
-ITEM(poi_wine)
-ITEM(poi_worship)
-ITEM(poi_wrecker)
-ITEM(poi_zoo)
-ITEM(rg_point)
-ITEM(point_unkn)
-ITEM(traffic_signals)
-ITEM(poi_gc_multi)
-ITEM(poi_gc_tradi)
-ITEM(poi_gc_event)
-ITEM(poi_gc_mystery)
-ITEM(poi_gc_question)
-ITEM(poi_gc_stages)
-ITEM(poi_gc_reference)
-ITEM(poi_gc_webcam)
-ITEM(poi_cafe)
-ITEM(nav_straight)
-ITEM(nav_turnaround)
-ITEM(nav_right_1)
-ITEM(nav_right_2)
-ITEM(nav_right_3)
-ITEM(nav_left_1)
-ITEM(nav_left_2)
-ITEM(nav_left_3)
-ITEM(nav_roundabout_r1)
-ITEM(nav_roundabout_r2)
-ITEM(nav_roundabout_r3)
-ITEM(nav_roundabout_r4)
-ITEM(nav_roundabout_r5)
-ITEM(nav_roundabout_r6)
-ITEM(nav_roundabout_r7)
-ITEM(nav_roundabout_r8)
-ITEM(nav_roundabout_l1)
-ITEM(nav_roundabout_l2)
-ITEM(nav_roundabout_l3)
-ITEM(nav_roundabout_l4)
-ITEM(nav_roundabout_l5)
-ITEM(nav_roundabout_l6)
-ITEM(nav_roundabout_l7)
-ITEM(nav_roundabout_l8)
-ITEM(poi_peak)
-ITEM(poi_rail_station)
-ITEM(poi_image)
-ITEM(mini_roundabout)
-ITEM(turning_circle)
-ITEM(poi_townhall)
-ITEM(poi_level_crossing)
-ITEM(poi_rail_halt)
-ITEM(poi_rail_tram_stop)
-ITEM(poi_wifi)
-ITEM(poi_bench)
-ITEM(poi_biergarten)
-ITEM(poi_boundary_stone)
-ITEM(poi_castle)
-ITEM(poi_hunting_stand)
-ITEM(poi_memorial)
-ITEM(poi_monument)
-ITEM(poi_shelter)
-ITEM(poi_fountain)
-ITEM(poi_potable_water)
-ITEM(poi_toilets)
-ITEM(poi_viewpoint)
-ITEM(poi_ruins)
-ITEM(nav_none)
-ITEM(nav_position)
-ITEM(nav_destination)
-ITEM(tec_common)
-ITEM(trackpoint_tracked)
-ITEM(announcement)
-ITEM(poi_post_box)
-ITEM(poi_post_office)
-ITEM(poi_school_university)
-ITEM(poi_school_college)
-ITEM(poi_motel)
-ITEM(poi_guesthouse)
-ITEM(poi_hostel)
-ITEM(poi_taxi)
-ITEM(poi_prison)
-ITEM(poi_kindergarten)
-ITEM(poi_shop_butcher)
-ITEM(poi_shop_baker)
-ITEM(poi_shop_kiosk)
-ITEM(poi_soccer)
-ITEM(poi_basketball)
-ITEM(poi_baseball)
-ITEM(poi_climbing)
-ITEM(poi_motor_sport)
-ITEM(poi_tennis)
-ITEM(house_number)
-ITEM(route_start)
-ITEM(route_end)
-ITEM(selected_point)
-ITEM(power_tower)
-ITEM(route_start_reverse)
-ITEM(log_entry)
-ITEM(poi_playground)
-ITEM(barrier_cycle)
-ITEM(barrier_bollard)
-ITEM(poi_vending_machine)
-ITEM(poi_recycling)
-ITEM(poi_hairdresser)
-ITEM(poi_shop_fruit)
-ITEM(poi_shop_bicycle)
-ITEM(poi_shop_florist)
-ITEM(poi_shop_optician)
-ITEM(poi_shop_beverages)
-ITEM(poi_nightclub)
-ITEM(poi_shop_shoes)
-ITEM(power_substation)
-ITEM(barrier_lift_gate)
-ITEM(traffic_sign_stop)
-ITEM(traffic_sign_city_limit)
-ITEM(poi_tree)
-ITEM(poi_shop_furniture)
-ITEM(poi_shop_parfum)
-ITEM(poi_bicycle_rental)
-ITEM(poi_bicycle_parking)
-ITEM(poi_car_sharing)
-ITEM(poi_shop_drugstore)
-ITEM(poi_shop_photo)
-ITEM(ch_node)
-ITEM(place_label)
-ITEM(vehicle)
-ITEM(vehicle_pedestrian)
-ITEM(bookmark_folder)
-ITEM(poi_pub)
-ITEM(poi_atm)
-ITEM(poi_taoist)
-ITEM(poi_sikh)
-ITEM(poi_shinto)
-ITEM(poi_pastafarian)
-ITEM(poi_pagan)
-ITEM(poi_jewish)
-ITEM(poi_jain)
-ITEM(poi_islamic)
-ITEM(poi_hindu)
-ITEM(poi_buddhist)
-ITEM(poi_bahai)
-ITEM(found_item)
-ITEM(nav_merge_left)
-ITEM(nav_merge_right)
-ITEM(nav_turnaround_left)
-ITEM(nav_turnaround_right)
-ITEM(nav_exit_left)
-ITEM(nav_exit_right)
-ITEM(nav_keep_left)
-ITEM(nav_keep_right)
-ITEM2(0x7fffffe0,poi_customg)
-ITEM(poi_customh)
-ITEM(poi_customi)
-ITEM(poi_customj)
-ITEM(poi_customk)
-ITEM(poi_customl)
-ITEM(poi_customm)
-ITEM(poi_customn)
-ITEM(poi_customo)
-ITEM(poi_customp)
-ITEM(poi_customq)
-ITEM(poi_customr)
-ITEM(poi_customs)
-ITEM(poi_customt)
-ITEM(poi_customu)
-ITEM(poi_customv)
-ITEM(poi_custom0)
-ITEM(poi_custom1)
-ITEM(poi_custom2)
-ITEM(poi_custom3)
-ITEM(poi_custom4)
-ITEM(poi_custom5)
-ITEM(poi_custom6)
-ITEM(poi_custom7)
-ITEM(poi_custom8)
-ITEM(poi_custom9)
-ITEM(poi_customa)
-ITEM(poi_customb)
-ITEM(poi_customc)
-ITEM(poi_customd)
-ITEM(poi_custome)
-ITEM(poi_customf)
-/* Line */
-ITEM2(0x80000000,line)
-ITEM2(0x80000001,line_unspecified)
-ITEM(border_country)
-ITEM(border_state)
-ITEM(rail)
-ITEM(water_line)
-ITEM(street_nopass)
-ITEM(street_0)
-ITEM(street_1_city)
-ITEM(street_2_city)
-ITEM(street_3_city)
-ITEM(street_4_city)
-ITEM(highway_city)
-ITEM(street_1_land)
-ITEM(street_2_land)
-ITEM(street_3_land)
-ITEM(street_4_land)
-ITEM(street_n_lanes)
-ITEM(highway_land)
-ITEM(ramp)
-ITEM(roundabout)
-ITEM(ferry)
-ITEM(roadbook)
-ITEM(street_unkn)
-ITEM(street_route)
-ITEM(height_line_1)
-ITEM(height_line_2)
-ITEM(track)
-ITEM(height_line_3)
-ITEM(depth_line_1)
-ITEM(depth_line_2)
-ITEM(depth_line_3)
-ITEM(powerline)
-ITEM(pipeline)
-ITEM(time_zone)
-ITEM(marine_boundary)
-ITEM(marine_hazard)
-ITEM(rg_segment)
-ITEM(aeroway_runway)
-ITEM(aeroway_taxiway)
-ITEM(street_service)
-ITEM(coverage)
-ITEM(street_pedestrian)
-ITEM(bridge)
-ITEM(tunnel)
-ITEM(bridleway)
-ITEM(cycleway)
-ITEM(footway)
-ITEM(steps)
-ITEM(track_paved)
-ITEM(track_gravelled)
-ITEM(track_unpaved)
-ITEM(track_ground)
-ITEM(track_grass)
-ITEM(rail_narrow_gauge)
-ITEM(rail_light)
-ITEM(rail_subway)
-ITEM(rail_mono)
-ITEM(rail_tram)
-ITEM(rail_preserved)
-ITEM(rail_disused)
-ITEM(rail_abandoned)
-ITEM(lift_cable_car)
-ITEM(lift_chair)
-ITEM(lift_drag)
-ITEM(living_street)
-ITEM(bus_guideway)
-ITEM(street_construction)
-ITEM(border_civil)
-ITEM(border_political)
-ITEM(border_national_park)
-ITEM(water_river)
-ITEM(water_canal)
-ITEM(water_stream)
-ITEM(water_drain)
-ITEM(path)
-ITEM(hiking)
-ITEM(hiking_mountain)
-ITEM(hiking_mountain_demanding)
-ITEM(hiking_alpine)
-ITEM(hiking_alpine_demanding)
-ITEM(hiking_alpine_difficult)
-ITEM(street_parking_lane)
-ITEM(piste_nordic)
-ITEM(piste_downhill_novice)
-ITEM(piste_downhill_easy)
-ITEM(piste_downhill_intermediate)
-ITEM(piste_downhill_advanced)
-ITEM(piste_downhill_expert)
-ITEM(piste_downhill_freeride)
-ITEM(footway_and_piste_nordic)
-ITEM(tracking_0)
-ITEM(tracking_10)
-ITEM(tracking_20)
-ITEM(tracking_30)
-ITEM(tracking_40)
-ITEM(tracking_50)
-ITEM(tracking_60)
-ITEM(tracking_70)
-ITEM(tracking_80)
-ITEM(tracking_90)
-ITEM(tracking_100)
-ITEM(track_tracked)
-ITEM(house_number_interpolation_even)
-ITEM(house_number_interpolation_odd)
-ITEM(house_number_interpolation_all)
-ITEM(house_number_interpolation_alphabetic)
-ITEM(ditch)
-ITEM(hedge)
-ITEM(fence)
-ITEM(wall)
-ITEM(retaining_wall)
-ITEM(city_wall)
-ITEM(street_turn_restriction_no)
-ITEM(street_turn_restriction_only)
-ITEM(border_city)
-ITEM(border_county)
-ITEM(selected_line)
-ITEM(traffic_distortion)
-ITEM(street_route_occluded)
-ITEM(forest_way_1)
-ITEM(forest_way_2)
-ITEM(forest_way_3)
-ITEM(forest_way_4)
-ITEM(former_itinerary)
-ITEM(former_itinerary_part)
-/* Area */
-ITEM2(0xc0000000,area)
-ITEM2(0xc0000001,area_unspecified)
-ITEM(poly_wood)
-ITEM(poly_water)
-ITEM(poly_town)
-ITEM(poly_cemetery)
-ITEM(poly_car_parking)
-ITEM(poly_industry)
-ITEM(poly_airport)
-ITEM(poly_hospital)
-ITEM(poly_park)
-ITEM(poly_sport)
-ITEM(poly_museum)
-ITEM(image)
-ITEM(image_path)
-ITEM(poly_commercial_center)
-ITEM(poly_golf_course)
-ITEM(poly_university)
-ITEM(poly_national_park)
-ITEM(poly_nature_park)
-ITEM(poly_flats)
-ITEM(poly_scrub)
-ITEM(poly_military_zone)
-ITEM(poly_marine)
-ITEM(plantation)
-ITEM(tundra)
-ITEM(tile)
-ITEM(submap)
-ITEM(poly_building)
-ITEM(poly_place)
-ITEM(poly_station)
-ITEM(poly_farm)
-ITEM(poly_sport_tennis)
-ITEM(poly_apron)
-ITEM(poly_terminal)
-ITEM(countryindex)
-ITEM(poly_sports_centre)
-ITEM(poly_sports_stadium)
-ITEM(poly_sports_track)
-ITEM(poly_sports_pitch)
-ITEM(poly_water_park)
-ITEM(poly_marina)
-ITEM(poly_fishing)
-ITEM(poly_theme_park)
-ITEM(poly_attraction)
-ITEM(poly_ruins)
-ITEM(poly_archaeological_site)
-ITEM(poly_artwork)
-ITEM(poly_zoo)
-ITEM(poly_camp_site)
-ITEM(poly_caravan_site)
-ITEM(poly_picnic_site)
-ITEM(poly_playground)
-ITEM(poly_allotments)
-ITEM(poly_village_green)
-ITEM(poly_recreation_ground)
-ITEM(poly_common)
-ITEM(poly_garden)
-ITEM(poly_nature_reserve)
-ITEM(poly_glacier)
-ITEM(poly_scree)
-ITEM(poly_fell)
-ITEM(poly_heath)
-ITEM(poly_marsh)
-ITEM(poly_mud)
-ITEM(poly_land)
-ITEM(poly_beach)
-ITEM(poly_quarry)
-ITEM(poly_landfill)
-ITEM(poly_retail)
-ITEM(poly_commercial)
-ITEM(poly_brownfield)
-ITEM(poly_greenfield)
-ITEM(poly_construction)
-ITEM(poly_railway)
-ITEM(poly_military)
-ITEM(poly_airfield)
-ITEM(poly_barracks)
-ITEM(poly_danger_area)
-ITEM(poly_range)
-ITEM(poly_naval_base)
-ITEM(poly_basin)
-ITEM(poly_reservoir)
-ITEM(poly_college)
-ITEM(poly_battlefield)
-ITEM(poly_pedestrian)
-ITEM(poly_plaza)
-ITEM(poly_service)
-ITEM(poly_street_1)
-ITEM(poly_street_2)
-ITEM(poly_street_3)
-ITEM(poly_wetland)
-ITEM(poly_aeroway_runway)
-ITEM(map_information)
-ITEM(selected_area)
-ITEM(poly_place1)
-ITEM(poly_place2)
-ITEM(poly_place3)
-ITEM(poly_place4)
-ITEM(poly_place5)
-ITEM(poly_place6)
-ITEM(poly_water_tiled)
-ITEM(poly_meadow)
-ITEM(poly_depot)
-ITEM(poly_garages)
-ITEM(poly_greenhouse)
-ITEM(poly_orchard)
-ITEM(poly_plantnursery)
-ITEM(poly_port)
-ITEM(poly_saltpond)
-ITEM2(0xffffffff,last)
diff --git a/navit/keys.h b/navit/keys.h
deleted file mode 100644
index be7527ede..000000000
--- a/navit/keys.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#define NAVIT_KEY_MENU 1 /* ^A */
-#define NAVIT_KEY_LEFT 2 /* ^B */
-#define NAVIT_KEY_RIGHT 6 /* ^R */
-#define NAVIT_KEY_BACKSPACE 8 /* ^H */
-#define NAVIT_KEY_RETURN 13 /* ^M */
-#define NAVIT_KEY_DOWN 14 /* ^N */
-#define NAVIT_KEY_ZOOM_OUT 15 /* ^O */
-#define NAVIT_KEY_UP 16 /* ^P */
-#define NAVIT_KEY_ZOOM_IN 17 /* ^Q */
-#define NAVIT_KEY_SEARCH 19 /* ^S */
-#define NAVIT_KEY_BACK 27 /* Esc */
-#define NAVIT_KEY_DELETE 127
-#define NAVIT_KEY_TAB 9 /* TAB */
-#define NAVIT_KEY_PAGE_UP 33
-#define NAVIT_KEY_PAGE_DOWN 34
diff --git a/navit/layer.h b/navit/layer.h
deleted file mode 100644
index dc995a66b..000000000
--- a/navit/layer.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_LAYER_H
-#define NAVIT_LAYER_H
-
-enum layer_type {
- layer_town=0,
- layer_street,
- layer_poly,
- layer_end,
-};
-
-#endif
-
diff --git a/navit/layout.c b/navit/layout.c
deleted file mode 100644
index c78e7c79d..000000000
--- a/navit/layout.c
+++ /dev/null
@@ -1,660 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2009 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 <string.h>
-#include "item.h"
-#include "attr.h"
-#include "xmlconfig.h"
-#include "layout.h"
-#include "coord.h"
-#include "debug.h"
-
-
-struct layout * layout_new(struct attr *parent, struct attr **attrs)
-{
- struct layout *l;
- struct color def_color = {COLOR_BACKGROUND_};
- struct attr *name_attr,*color_attr,*order_delta_attr,*font_attr,*day_attr,*night_attr,*active_attr;
-
- if (! (name_attr=attr_search(attrs, NULL, attr_name)))
- return NULL;
- l = g_new0(struct layout, 1);
- l->func=&layout_func;
- navit_object_ref((struct navit_object *)l);
- l->name = g_strdup(name_attr->u.str);
- if ((font_attr=attr_search(attrs, NULL, attr_font))) {
- l->font = g_strdup(font_attr->u.str);
- }
- if ((day_attr=attr_search(attrs, NULL, attr_daylayout))) {
- l->dayname = g_strdup(day_attr->u.str);
- }
- if ((night_attr=attr_search(attrs, NULL, attr_nightlayout))) {
- l->nightname = g_strdup(night_attr->u.str);
- }
- if ((color_attr=attr_search(attrs, NULL, attr_color)))
- l->color = *color_attr->u.color;
- else
- l->color = def_color;
- if ((order_delta_attr=attr_search(attrs, NULL, attr_order_delta)))
- l->order_delta=order_delta_attr->u.num;
- if ((active_attr=attr_search(attrs, NULL, attr_active)))
- l->active = active_attr->u.num;
- l->navit=parent->u.navit;
- return l;
-}
-
-struct attr_iter {
- GList *last;
-};
-
-
-struct attr_iter *
-layout_attr_iter_new(void)
-{
- return g_new0(struct attr_iter, 1);
-}
-
-void
-layout_attr_iter_destroy(struct attr_iter *iter)
-{
- g_free(iter);
-}
-
-int
-layout_get_attr(struct layout *layout, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- GList *cursor,*layer;
- attr->type=type;
- switch (type) {
- case attr_name:
- attr->u.str=layout->name;
- return 1;
- case attr_cursor:
- cursor=layout->cursors;
- while (cursor) {
- if (!iter || iter->last == g_list_previous(cursor)) {
- attr->u.cursor=cursor->data;
- if (iter)
- iter->last=cursor;
- return 1;
- }
- cursor=g_list_next(cursor);
- }
- break;
- case attr_layer:
- layer=layout->layers;
- while (layer) {
- if (!iter || iter->last == g_list_previous(layer)) {
- attr->u.layer=layer->data;
- if (iter)
- iter->last=layer;
- return 1;
- }
- layer=g_list_next(layer);
- }
- break;
- case attr_active:
- attr->u.num=layout->active;
- return 1;
- case attr_nightlayout:
- attr->u.str=layout->nightname;
- return 1;
- case attr_daylayout:
- attr->u.str=layout->dayname;
- return 1;
- default:
- break;
- }
- return 0;
-}
-
-
-int
-layout_add_attr(struct layout *layout, struct attr *attr)
-{
- switch (attr->type) {
- case attr_cursor:
- layout->cursors = g_list_append(layout->cursors, attr->u.cursor);
- break;
- case attr_layer:
- layout->layers = g_list_append(layout->layers, attr->u.layer);
- break;
- default:
- return 0;
- }
- layout->attrs=attr_generic_add_attr(layout->attrs, attr);
- return 1;
-}
-
-/**
- * Searchs the layout for a cursor with the given name.
- *
- * @param layout The layout
- * @param name The name
- * @returns A pointer to cursor with the given name or the name default or NULL.
- * @author Ralph Sennhauser (10/2009)
-*/
-struct cursor *
-layout_get_cursor(struct layout *this_, char *name)
-{
- GList *c;
- struct cursor *d=NULL;
-
- c=g_list_first(this_->cursors);
- while (c) {
- if (! strcmp(((struct cursor *)c->data)->name, name))
- return c->data;
- if (! strcmp(((struct cursor *)c->data)->name, "default"))
- d=c->data;
- c=g_list_next(c);
- }
- return d;
-}
-
-
-
-struct cursor *
-cursor_new(struct attr *parent, struct attr **attrs)
-{
- struct attr *w, *h, *name, *interval, *sequence_range;
- struct cursor *this;
-
- w=attr_search(attrs, NULL, attr_w);
- h=attr_search(attrs, NULL, attr_h);
- if (! w || ! h)
- return NULL;
-
- this=g_new0(struct cursor,1);
- this->w=w->u.num;
- this->h=h->u.num;
- name=attr_search(attrs, NULL, attr_name);
- if (name)
- this->name=g_strdup(name->u.str);
- else
- this->name=g_strdup("default");
- interval=attr_search(attrs, NULL, attr_interval);
- if (interval)
- this->interval=interval->u.num;
- sequence_range=attr_search(attrs, NULL, attr_sequence_range);
- if (sequence_range) {
- struct range *r=g_new0(struct range,1);
- r->min=sequence_range->u.range.min;
- r->max=sequence_range->u.range.max;
- this->sequence_range=r;
- }
- else {
- this->sequence_range=NULL;
- }
- dbg(lvl_info,"ret=%p\n", this);
- return this;
-}
-
-void
-cursor_destroy(struct cursor *this_)
-{
- if (this_->sequence_range)
- g_free(this_->sequence_range);
- if (this_->name) {
- g_free(this_->name);
- }
- g_free(this_);
-}
-
-int
-cursor_add_attr(struct cursor *this_, struct attr *attr)
-{
- switch (attr->type) {
- case attr_itemgra:
- this_->attrs=attr_generic_add_attr(this_->attrs, attr);
- return 1;
- default:
- break;
- }
- return 0;
-}
-
-static int
-layer_set_attr_do(struct layer *l, struct attr *attr, int init)
-{
- struct attr_iter *iter;
- struct navit_object *obj;
- struct attr layer;
- switch (attr->type) {
- case attr_active:
- l->active = attr->u.num;
- return 1;
- case attr_details:
- l->details = attr->u.num;
- return 1;
- case attr_name:
- g_free(l->name);
- l->name = g_strdup(attr->u.str);
- return 1;
- case attr_ref:
- navit_object_unref((struct navit_object *)l->ref);
- l->ref=NULL;
- obj=(struct navit_object *)l->navit;
- if (obj==NULL){
- dbg(lvl_error, "Invalid layer reference '%s': Only layers inside a layout can use references.\n", attr->u.str);
- return 0;
- }
- iter=obj->func->iter_new(obj);
- while (obj->func->get_attr(obj, attr_layer, &layer, iter)) {
- if (!strcmp(layer.u.layer->name, attr->u.str)) {
- l->ref=(struct layer*)navit_object_ref(layer.u.navit_object);
- break;
- }
- }
- if (l->ref==NULL){
- dbg(lvl_error, "Ignoring reference to unknown layer '%s' in layer '%s'.\n", attr->u.str, l->name);
- }
- obj->func->iter_destroy(iter);
- default:
- return 0;
- }
-}
-
-
-
-struct layer * layer_new(struct attr *parent, struct attr **attrs)
-{
- struct layer *l;
-
- l = g_new0(struct layer, 1);
- if (parent->type == attr_layout)
- l->navit=parent->u.layout->navit;
- l->func=&layer_func;
- navit_object_ref((struct navit_object *)l);
- l->active=1;
- for (;*attrs; attrs++) {
- layer_set_attr_do(l, *attrs, 1);
- }
- if (l->name==NULL){
- dbg(lvl_error, "Ignoring layer without name.\n");
- g_free(l);
- return NULL;
- }
- return l;
-}
-
-int
-layer_get_attr(struct layer *layer, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- attr->type=type;
- switch(type) {
- case attr_active:
- attr->u.num=layer->active;
- return 1;
- case attr_details:
- attr->u.num=layer->details;
- return 1;
- case attr_name:
- if (layer->name) {
- attr->u.str=layer->name;
- return 1;
- }
- break;
- default:
- return 0;
- }
- return 0;
-}
-
-int
-layer_add_attr(struct layer *layer, struct attr *attr)
-{
- switch (attr->type) {
- case attr_itemgra:
- layer->itemgras = g_list_append(layer->itemgras, attr->u.itemgra);
- return 1;
- default:
- return 0;
- }
-}
-
-int
-layer_set_attr(struct layer *layer, struct attr *attr)
-{
- return layer_set_attr_do(layer, attr, 0);
-}
-
-static void
-layer_destroy(struct layer *layer)
-{
- attr_list_free(layer->attrs);
- g_free(layer->name);
- g_free(layer);
-}
-
-struct itemgra * itemgra_new(struct attr *parent, struct attr **attrs)
-{
- struct itemgra *itm;
- struct attr *order, *item_types, *speed_range, *angle_range, *sequence_range;
- enum item_type *type;
- struct range defrange;
-
- itm = g_new0(struct itemgra, 1);
- order=attr_search(attrs, NULL, attr_order);
- item_types=attr_search(attrs, NULL, attr_item_types);
- speed_range=attr_search(attrs, NULL, attr_speed_range);
- angle_range=attr_search(attrs, NULL, attr_angle_range);
- sequence_range=attr_search(attrs, NULL, attr_sequence_range);
- defrange.min=0;
- defrange.max=32767;
- if (order)
- itm->order=order->u.range;
- else
- itm->order=defrange;
- if (speed_range)
- itm->speed_range=speed_range->u.range;
- else
- itm->speed_range=defrange;
- if (angle_range)
- itm->angle_range=angle_range->u.range;
- else
- itm->angle_range=defrange;
- if (sequence_range)
- itm->sequence_range=sequence_range->u.range;
- else
- itm->sequence_range=defrange;
- if (item_types) {
- type=item_types->u.item_types;
- while (type && *type != type_none) {
- itm->type=g_list_append(itm->type, GINT_TO_POINTER(*type));
- type++;
- }
- }
- return itm;
-}
-int
-itemgra_add_attr(struct itemgra *itemgra, struct attr *attr)
-{
- switch (attr->type) {
- case attr_polygon:
- case attr_polyline:
- case attr_circle:
- case attr_text:
- case attr_icon:
- case attr_image:
- case attr_arrows:
- itemgra->elements = g_list_append(itemgra->elements, attr->u.element);
- return 1;
- default:
- dbg(lvl_error,"unknown: %s\n", attr_to_name(attr->type));
- return 0;
- }
-}
-
-static void
-element_set_color(struct element *e, struct attr **attrs)
-{
- struct attr *color;
- color=attr_search(attrs, NULL, attr_color);
- if (color)
- e->color=*color->u.color;
-}
-
-
-static void
-element_set_background_color(struct color *c, struct attr **attrs)
-{
- struct attr *color;
- color=attr_search(attrs, NULL, attr_background_color);
- if (color)
- *c=*color->u.color;
-}
-
-
-static void
-element_set_text_size(struct element *e, struct attr **attrs)
-{
- struct attr *text_size;
- text_size=attr_search(attrs, NULL, attr_text_size);
- if (text_size)
- e->text_size=text_size->u.num;
-}
-
-static void
-element_set_polyline_width(struct element *e, struct attr **attrs)
-{
- struct attr *width;
- width=attr_search(attrs, NULL, attr_width);
- if (width)
- e->u.polyline.width=width->u.num;
-}
-
-static void
-element_set_polyline_directed(struct element *e, struct attr **attrs)
-{
- struct attr *directed;
- directed=attr_search(attrs, NULL, attr_directed);
- if (directed)
- e->u.polyline.directed=directed->u.num;
-}
-
-static void
-element_set_polyline_dash(struct element *e, struct attr **attrs)
-{
- struct attr *dash;
- int i;
-
- dash=attr_search(attrs, NULL, attr_dash);
- if (dash) {
- for (i=0; i<4; i++) {
- if (!dash->u.dash[i])
- break;
- e->u.polyline.dash_table[i] = dash->u.dash[i];
- }
- e->u.polyline.dash_num=i;
- }
-}
-
-static void
-element_set_polyline_offset(struct element *e, struct attr **attrs)
-{
- struct attr *offset;
- offset=attr_search(attrs, NULL, attr_offset);
- if (offset)
- e->u.polyline.offset=offset->u.num;
-}
-
-static void
-element_set_circle_width(struct element *e, struct attr **attrs)
-{
- struct attr *width;
- width=attr_search(attrs, NULL, attr_width);
- if (width)
- e->u.circle.width=width->u.num;
-}
-
-static void
-element_set_circle_radius(struct element *e, struct attr **attrs)
-{
- struct attr *radius;
- radius=attr_search(attrs, NULL, attr_radius);
- if (radius)
- e->u.circle.radius=radius->u.num;
-}
-
-struct polygon *
-polygon_new(struct attr *parent, struct attr **attrs)
-{
- struct element *e;
- e = g_new0(struct element, 1);
- e->type=element_polygon;
- element_set_color(e, attrs);
-
- return (struct polygon *)e;
-}
-
-struct polyline *
-polyline_new(struct attr *parent, struct attr **attrs)
-{
- struct element *e;
-
- e = g_new0(struct element, 1);
- e->type=element_polyline;
- element_set_color(e, attrs);
- element_set_polyline_width(e, attrs);
- element_set_polyline_directed(e, attrs);
- element_set_polyline_dash(e, attrs);
- element_set_polyline_offset(e, attrs);
- return (struct polyline *)e;
-}
-
-struct circle *
-circle_new(struct attr *parent, struct attr **attrs)
-{
- struct element *e;
- struct color color_black = {COLOR_BLACK_};
- struct color color_white = {COLOR_WHITE_};
-
- e = g_new0(struct element, 1);
- e->type=element_circle;
- e->color = color_black;
- e->u.circle.background_color = color_white;
- element_set_color(e, attrs);
- element_set_background_color(&e->u.circle.background_color, attrs);
- element_set_text_size(e, attrs);
- element_set_circle_width(e, attrs);
- element_set_circle_radius(e, attrs);
-
- return (struct circle *)e;
-}
-
-struct text *
-text_new(struct attr *parent, struct attr **attrs)
-{
- struct element *e;
- struct color color_black = {COLOR_BLACK_};
- struct color color_white = {COLOR_WHITE_};
-
- e = g_new0(struct element, 1);
- e->type=element_text;
- element_set_text_size(e, attrs);
- e->color = color_black;
- e->u.text.background_color = color_white;
- element_set_color(e, attrs);
- element_set_background_color(&e->u.text.background_color, attrs);
-
- return (struct text *)e;
-}
-
-struct icon *
-icon_new(struct attr *parent, struct attr **attrs)
-{
- struct element *e;
- struct attr *src,*w,*h,*rotation,*x,*y;
- src=attr_search(attrs, NULL, attr_src);
- if (! src)
- return NULL;
-
- e = g_malloc0(sizeof(*e)+strlen(src->u.str)+1);
- e->type=element_icon;
- e->u.icon.src=(char *)(e+1);
- if ((w=attr_search(attrs, NULL, attr_w)))
- e->u.icon.width=w->u.num;
- else
- e->u.icon.width=-1;
- if ((h=attr_search(attrs, NULL, attr_h)))
- e->u.icon.height=h->u.num;
- else
- e->u.icon.height=-1;
- if ((x=attr_search(attrs, NULL, attr_x)))
- e->u.icon.x=x->u.num;
- else
- e->u.icon.x=-1;
- if ((y=attr_search(attrs, NULL, attr_y)))
- e->u.icon.y=y->u.num;
- else
- e->u.icon.y=-1;
- if ((rotation=attr_search(attrs, NULL, attr_rotation)))
- e->u.icon.rotation=rotation->u.num;
- strcpy(e->u.icon.src,src->u.str);
-
- return (struct icon *)e;
-}
-
-struct image *
-image_new(struct attr *parent, struct attr **attrs)
-{
- struct element *e;
-
- e = g_malloc0(sizeof(*e));
- e->type=element_image;
-
- return (struct image *)e;
-}
-
-struct arrows *
-arrows_new(struct attr *parent, struct attr **attrs)
-{
- struct element *e;
- e = g_malloc0(sizeof(*e));
- e->type=element_arrows;
- element_set_color(e, attrs);
- return (struct arrows *)e;
-}
-
-int
-element_add_attr(struct element *e, struct attr *attr)
-{
- switch (attr->type) {
- case attr_coord:
- e->coord=g_realloc(e->coord,(e->coord_count+1)*sizeof(struct coord));
- e->coord[e->coord_count++]=*attr->u.coord;
- return 1;
- default:
- return 0;
- }
-}
-
-struct object_func layout_func = {
- attr_layout,
- (object_func_new)layout_new,
- (object_func_get_attr)layout_get_attr,
- (object_func_iter_new)layout_attr_iter_new,
- (object_func_iter_destroy)layout_attr_iter_destroy,
- (object_func_set_attr)NULL,
- (object_func_add_attr)layout_add_attr,
- (object_func_remove_attr)NULL,
- (object_func_init)NULL,
- (object_func_destroy)NULL,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
-
-
-struct object_func layer_func = {
- attr_layer,
- (object_func_new)layer_new,
- (object_func_get_attr)layer_get_attr,
- (object_func_iter_new)NULL,
- (object_func_iter_destroy)NULL,
- (object_func_set_attr)layer_set_attr,
- (object_func_add_attr)layer_add_attr,
- (object_func_remove_attr)NULL,
- (object_func_init)NULL,
- (object_func_destroy)layer_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
diff --git a/navit/layout.h b/navit/layout.h
deleted file mode 100644
index a17d8e279..000000000
--- a/navit/layout.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2009 Navit Team
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_LAYOUT_H
-#define NAVIT_LAYOUT_H
-
-#include "item.h"
-#include "color.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-struct element {
- enum { element_point, element_polyline, element_polygon, element_circle, element_text, element_icon, element_image, element_arrows } type;
- struct color color;
- int text_size;
- union {
- struct element_point {
- char stub;
- } point;
- struct element_polyline {
- int width;
- int directed;
- int dash_num;
- int offset;
- unsigned char dash_table[4];
- } polyline;
- struct element_polygon {
- char stub;
- } polygon;
- struct element_circle {
- int width;
- int radius;
- struct color background_color;
- } circle;
- struct element_icon {
- char *src;
- int width;
- int height;
- int rotation;
- int x;
- int y;
- } icon;
- struct element_text {
- struct color background_color;
- } text;
- } u;
- int coord_count;
- struct coord *coord;
-};
-
-
-struct itemgra {
- struct range order,sequence_range,speed_range,angle_range;
- GList *type;
- GList *elements;
-};
-
-struct layer {
- NAVIT_OBJECT
- struct navit *navit;
- char *name;
- int details;
- GList *itemgras;
- int active;
- struct layer *ref;
-};
-
-struct cursor {
- struct attr **attrs;
- struct range *sequence_range;
- char *name;
- int w,h;
- int interval;
-};
-
-struct layout {
- NAVIT_OBJECT
- struct navit *navit;
- char *name;
- char* dayname;
- char* nightname;
- char *font;
- struct color color;
- GList *layers;
- GList *cursors;
- int order_delta;
- int active;
-};
-
-/* prototypes */
-enum attr_type;
-struct arrows;
-struct attr;
-struct attr_iter;
-struct circle;
-struct cursor;
-struct element;
-struct icon;
-struct image;
-struct itemgra;
-struct layer;
-struct layout;
-struct polygon;
-struct polyline;
-struct text;
-struct layout *layout_new(struct attr *parent, struct attr **attrs);
-struct attr_iter *layout_attr_iter_new(void);
-void layout_attr_iter_destroy(struct attr_iter *iter);
-int layout_get_attr(struct layout *layout, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int layout_add_attr(struct layout *layout, struct attr *attr);
-struct cursor *layout_get_cursor(struct layout *this_, char *name);
-struct cursor *cursor_new(struct attr *parent, struct attr **attrs);
-void cursor_destroy(struct cursor *this_);
-int cursor_add_attr(struct cursor *this_, struct attr *attr);
-struct layer *layer_new(struct attr *parent, struct attr **attrs);
-int layer_get_attr(struct layer *layer, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int layer_add_attr(struct layer *layer, struct attr *attr);
-int layer_set_attr(struct layer *layer, struct attr *attr);
-struct itemgra *itemgra_new(struct attr *parent, struct attr **attrs);
-int itemgra_add_attr(struct itemgra *itemgra, struct attr *attr);
-struct polygon *polygon_new(struct attr *parent, struct attr **attrs);
-struct polyline *polyline_new(struct attr *parent, struct attr **attrs);
-struct circle *circle_new(struct attr *parent, struct attr **attrs);
-struct text *text_new(struct attr *parent, struct attr **attrs);
-struct icon *icon_new(struct attr *parent, struct attr **attrs);
-struct image *image_new(struct attr *parent, struct attr **attrs);
-struct arrows *arrows_new(struct attr *parent, struct attr **attrs);
-int element_add_attr(struct element *e, struct attr *attr);
-/* end of prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/linguistics.c b/navit/linguistics.c
deleted file mode 100644
index 549f90e17..000000000
--- a/navit/linguistics.c
+++ /dev/null
@@ -1,520 +0,0 @@
-#include <string.h>
-#include <stdio.h>
-#include <glib.h>
-#include "debug.h"
-#include "linguistics.h"
-
-/* To have linguistics_casefold(linguistics_expand_special(s,i)) equal to linguistics_expand_special(linguistics_casefold(s),i),
- * please always specify here lower case expansions for special letters not having case variants (like german ß).*/
-static const char *special[][3]={
-/* Capital Diacritics */
-/* ¨ Diaresis */
-{"Ä","A","AE"},
-{"Ë","E"},
-{"Ã","I"},
-{"Ö","O","OE"},
-{"Ü","U","UE"},
-{"Ÿ","Y"},
-/* Ë Double Acute Accent */
-{"Å","O","Ö"},
-{"Ű","U","Ü"},
-/* ´ Acute Accent */
-{"Ã","A"},
-{"Ć","C"},
-{"É","E"},
-{"Ã","I"},
-{"Ĺ","L"},
-{"Ń","N"},
-{"Ó","O"},
-{"Å”","R"},
-{"Åš","S"},
-{"Ú","U"},
-{"Ã","Y"},
-{"Ź","Z"},
-/* Ë› Ogonek (nosinÄ—) */
-{"Ä„","A"},
-{"Ę","E"},
-{"Ä®","I"},
-{"Ų","U"},
-/* Ë™ Dot */
-{"ÄŠ","C"},
-{"Ä–","E"},
-{"Ä ","G"},
-{"Ä°","I"},
-{"Ä¿","L"},
-{"Å»","Z"},
-/* – Stroke */
-{"Ä","D","DJ"}, /* Croatian Dj, not to be confused with the similar-looking Icelandic Eth */
-{"Ħ","H"},
-{"Å","L"},
-{"Ŧ","T"},
-/* Ëš Ring */
-{"Ã…","A","AA"},
-{"Å®","U"},
-/* ˇ Caron (haÄek, paukÅ¡Äiukas) */
-{"Č","C"},
-{"ÄŽ","D"},
-{"Äš","E"},
-{"Ľ","L"},
-{"Ň","N"},
-{"Ř","R"},
-{"Å ","S"},
-{"Ť","T"},
-{"Ž","Z"},
-/* / Slash */
-{"Ø","O","OE"},
-/* ¯ Macron */
-{"Ä€","A","AA"},
-{"Ä’","E","EE"},
-{"Ī","I","II"},
-{"Ō","O","OO"},
-{"Ū","U","UU"},
-/* ˘ Brevis */
-{"Ä‚","A"},
-{"Ä”","E"},
-{"Äž","G"},
-{"Ĭ","I"},
-{"ÅŽ","O"},
-{"Ŭ","U"},
-/* ^ Circumflex */
-{"Â","A"},
-{"Ĉ","C"},
-{"Ê","E"},
-{"Ĝ","G"},
-{"Ĥ","H"},
-{"ÃŽ","I"},
-{"Ä´","J"},
-{"Ô","O"},
-{"Ŝ","S"},
-{"Û","U"},
-{"Å´","W"},
-{"Ŷ","Y"},
-/* ¸ Cedilla */
-{"Ç","C"},
-{"Ä¢","G","GJ"},
-{"Ķ","K","KJ"},
-{"Ä»","L","LJ"},
-{"Å…","N","NJ"},
-{"Å–","R"},
-{"Åž","S"},
-{"Å¢","T"},
-/* ~ Tilde */
-{"Ã","A"},
-{"Ĩ","I"},
-{"Ñ","N"},
-{"Õ","O"},
-{"Ũ","U"},
-/* ` Grave */
-{"À","A"},
-{"È","E"},
-{"Ì","I"},
-{"Ã’","O"},
-{"Ù","U"},
-/* ligatures */
-{"Æ","A","AE"},
-{"IJ","IJ"},
-{"Å’","O","OE"},
-/* special letters */
-{"Ã","D","DH"}, /* Icelandic Eth, not to be confused with the similar-looking Croatian Dj */
-{"ÅŠ","N","NG"},
-{"Þ","T","TH"},
-/* Small Diacritics */
-/* ¨ Diaresis */
-{"ä","a","ae"},
-{"ë","e"},
-{"ï","i"},
-{"ö","o","oe"},
-{"ü","u","ue"},
-{"ÿ","y"},
-/* Ë Double Acute Accent */
-{"ő","o","ö"},
-{"ű","u","ü"},
-/* ´ Acute Accent */
-{"á","a"},
-{"ć","c"},
-{"é","e"},
-{"í","i"},
-{"ĺ","l"},
-{"Å„","n"},
-{"ó","o"},
-{"Å•","r"},
-{"Å›","s"},
-{"ú","u"},
-{"ý","y"},
-{"ź","z"},
-/* Ë› Ogonek (nosinÄ—) */
-{"Ä…","a"},
-{"Ä™","e"},
-{"į","i"},
-{"ų","u"},
-/* Ë™ Dot (and dotless i) */
-{"Ä‹","c"},
-{"Ä—","e"},
-{"Ä¡","g"},
-{"ı","i"},
-{"Å€","l"},
-{"ż","z"},
-/* – Stroke */
-{"Ä‘","d","dj"},
-{"ħ","h"},
-{"Å‚","l"},
-{"ŧ","t"},
-/* Ëš Ring */
-{"Ã¥","a", "aa"},
-{"ů","u"},
-/* ˇ Caron (haÄek, paukÅ¡Äiukas) */
-{"Ä","c"},
-{"Ä","d"},
-{"Ä›","e"},
-{"ľ","l"},
-{"ň","n"},
-{"Å™","r"},
-{"Å¡","s"},
-{"Å¥","t"},
-{"ž","z"},
-/* / Slash */
-{"ø","o", "oe"},
-/* Macron */
-{"Ä","a","aa"},
-{"Ä“","e","ee"},
-{"Ä«","i","ii"},
-{"Å","o","oo"},
-{"Å«","u","uu"},
-/* ˘ Brevis */
-{"ă","a"},
-{"Ä•","e"},
-{"ÄŸ","g"},
-{"Ä­","i"},
-{"Å","o"},
-{"Å­","u"},
-/* ^ Circumflex */
-{"â","a"},
-{"ĉ","c"},
-{"ê","e"},
-{"Ä","g"},
-{"Ä¥","h"},
-{"î","i"},
-{"ĵ","j"},
-{"ô","o"},
-{"Å","s"},
-{"û","u"},
-{"ŵ","w"},
-{"Å·","y"},
-/* ¸ Cedilla */
-{"ç","c"},
-{"Ä£","g","gj"},
-{"Ä·","k","kj"},
-{"ļ","l","lj"},
-{"ņ","n","nj"},
-{"Å—","r"},
-{"ÅŸ","s"},
-{"Å£","t"},
-/* ~ Tilde */
-{"ã","a"},
-{"Ä©","i"},
-{"õ","o"},
-{"ñ","n"},
-{"Å©","u"},
-/* ` Grave */
-{"à","a"},
-{"è","e"},
-{"ì","i"},
-{"ò","o"},
-{"ù","u"},
-/* ligatures */
-{"æ","a","ae"},
-{"ij","ij"},
-{"Å“","o","oe"},
-{"ß","s","ss"},
-/* special letters */
-{"ð","d","dh"},
-{"Å‹","n","ng"},
-{"þ","t","th"},
-
-/* Cyrillic capital */
-{"Ð","Е"},
-{"І","I"},
-{"Ї","I"},
-{"Ў","У"},
-{"Є","Е","Э"},
-{"Ò","Г"},
-{"Ѓ","Г"},
-{"Ђ","Д"},
-{"Ќ","К"},
-{"Љ","Л","ЛЬ"},
-{"Њ","Ð","ÐЬ"},
-{"Ð","Ц"},
-
-/* Cyrillic small */
-{"ё","е"},
-{"Ñ–","i"},
-{"Ñ—","i"},
-{"ў","у"},
-{"Ñ”","е","Ñ"},
-{"ґ","г"},
-{"ѓ","г"},
-{"ђ","д"},
-{"ќ","к"},
-{"љ","л","ль"},
-{"њ","н","нь"},
-{"џ","ц"},
-
-};
-
-/* Array of strings for case conversion
- * Even elements of array are strings of upper-case letters
- * Odd elements of array are strings of lower-case letters, in the order corresponding to directly preceeding even element.
- * Last element of array should be NULL.
- */
-static const char *upperlower[]={
-/*Latin diacritics*/
-"ÄËÃÖÜŸÅÅ°ÃĆÉÃĹŃÓŔŚÚÃŹĄĘĮŲĊĖĠİĿŻÄĦÅŦÅŮČĎĚĽŇŘŠŤŽØĀĒĪŌŪĂĔĞĬŎŬÂĈÊĜĤÎĴÔŜÛŴŶÇĢĶĻŅŖŞŢÃĨÑÕŨÀÈÌÒÙÆIJŒÃŊÞ",
-"äëïöüÿőűáćéíĺńóŕśúýźąęįųċėġıŀżđħłŧåůÄÄěľňřšťžøÄÄ“Ä«ÅūăĕğĭÅŭâĉêÄĥîĵôÅûŵŷçģķļņŗşţãĩõñũàèìòùæijœðŋþ",
-/*Cyrillic*/
-"ÐБВГÒЃДЂЕЄÐЖЗИЙКЌЛЉМÐЊОПРСТУФХЦÐЧШЩЪЫЬЭЮЯІЇЎ",
-"абвгґѓдђеєёжзийкќлљмнњопрÑтуфхцџчшщъыьÑÑŽÑÑ–Ñ—Ñž",
-
-NULL
-};
-
-static GHashTable *casefold_hash, *special_hash;
-
-
-/*
- * @brief Prepare an utf-8 string for case insensitive comparison.
- * @param in String to prepeare.
- * @return String prepared for case insensitive search. Result shoud be g_free()d after use.
- */
-char*
-linguistics_casefold(const char *in)
-{
- int len=strlen(in);
- const char *src=in;
- char *ret=g_new(char,len+1);
- char *dest=ret;
- char buf[10];
- while(*src && dest-ret<len){
- if(*src>='A' && *src<='Z') {
- *dest++=*src++ - 'A' + 'a';
- } else if (!(*src&128)) {
- *dest++=*src++;
- } else {
- int charlen;
- char *tmp, *folded;
- tmp=g_utf8_find_next_char(src,NULL);
- charlen=tmp-src+1;
- g_strlcpy(buf,src,charlen>10?10:charlen);
- folded=g_hash_table_lookup(casefold_hash,buf);
- if(folded) {
- while(*folded && dest-ret<len)
- *dest++=*folded++;
- src=tmp;
- } else {
- while(src<tmp && dest-ret<len)
- *dest++=*src++;
- }
- }
- }
- *dest=0;
- if(*src)
- dbg(lvl_error,"Casefolded string for '%s' needs extra space, result is trucated to '%s'.\n",in,ret);
- return ret;
-}
-
-static char**
-linguistics_get_special(const char *str, const char *end)
-{
- char *buf;
- int len;
- if(!end)
- end=g_utf8_find_next_char(str,NULL);
- len=end-str+1;
- buf=g_alloca(len);
- g_strlcpy(buf,str,len);
- return g_hash_table_lookup(special_hash,buf);
-}
-
-/**
- * @brief Compare two strings, trying to replace special characters (e.g. umlauts) in first string with plain letters.
- *
- * @param s1 First string to process, for example, an item name from the map. Will be linguistics_casefold()ed before comparison.
- * @param s2 Second string to process, usually user supplied search string. Should be linguistics_casefold()ed before calling this function.
- * @param mode set to composition of linguistics_cmp_mode flags to have s1 linguistics_expand_special()ed, allow matches shorter than whole s1, or
- * @param let matches start from any word boundary within s1
- * @returns 0 when strings are equal
- */
-int linguistics_compare(const char *s1, const char *s2, enum linguistics_cmp_mode mode)
-{
- int ret=0;
- int i;
- int s2len=strlen(s2);
- char *s1f;
- /* Calling linguistics_casefold() before linguistics_expand_special() requires that result is independent of calling order. This seems
- to be true at the time of writing this comment. */
- s1f=linguistics_casefold(s1);
- for(i=0; i<3; i++) {
- char *s, *word;
- if(i>0)
- s=linguistics_expand_special(s1f,i);
- else
- s=s1f;
- word=s;
- while(word) {
- if(mode & linguistics_cmp_partial)
- ret=strncmp(word,s2,s2len);
- else
- ret=strcmp(word,s2);
- if(!ret || !(mode & linguistics_cmp_words))
- break;
- word=linguistics_next_word(word);
- }
- if(i>0)
- g_free(s);
- if(!ret || !(mode & linguistics_cmp_expand))
- break;
- }
- g_free(s1f);
- return ret;
-}
-
-/**
- * @brief Replace special characters in string (e.g. umlauts) with plain letters.
- * This is useful e.g. to canonicalize a string for comparison.
- *
- * @param str string to process
- * @param mode Replacement mode. 0=do nothing, 1=replace with single
- * UTF character, 2=replace with multiple letters if the commonly used
- * replacement has multitple letter (e.g. a-umlaut -> ae)
- * @returns copy of string, with characters replaced
- */
-char *
-linguistics_expand_special(const char *str, int mode)
-{
- const char *in=str;
- char *out,*ret;
- int found=0;
- int ret_len=strlen(str);
- int in_rest=ret_len;
- out=ret=g_strdup(str);
- if (!mode)
- return ret;
- while (*in) {
- char *next=g_utf8_find_next_char(in, NULL);
- int len;
- int match=0;
-
- if(next)
- len=next-in;
- else
- len=strlen(in);
-
- in_rest-=len;
-
- if (len > 1) {
- char **spc=linguistics_get_special(in, next);
- if (spc) {
- const char *replace=spc[mode];
- if (replace) {
- int replace_len=strlen(replace);
- if(out-ret+replace_len+in_rest>ret_len) {
- char *new_ret;
- ret_len+=(replace_len-len)*10;
- new_ret=g_realloc(ret,ret_len+1);
- out=new_ret+(out-ret);
- ret=new_ret;
- }
- dbg(lvl_debug,"found %s %s %d %s %d\n",in,spc[0],len,replace,replace_len);
- strcpy(out, replace);
- out+=replace_len;
- match=1;
- }
- }
- }
- if (match) {
- found=1;
- in+=len;
- } else {
- while (len-- > 0)
- *out++=*in++;
- }
- }
- *out++='\0';
- if (!found) {
- g_free(ret);
- ret=NULL;
- }
- return ret;
-}
-
-char *
-linguistics_next_word(char *str)
-{
- int len=strcspn(str, LINGUISTICS_WORD_SEPARATORS_ASCII);
- if (!str[len] || !str[len+1])
- return NULL;
- return str+len+1;
-}
-
-int
-linguistics_search(const char *str)
-{
- if (!g_ascii_strcasecmp(str,"str"))
- return 0;
- if (!g_ascii_strcasecmp(str,"str."))
- return 0;
- if (!g_ascii_strcasecmp(str,"strasse"))
- return 0;
- if (!g_ascii_strcasecmp(str,"weg"))
- return 0;
- return 1;
-}
-
-/**
- * @brief Copy one utf8 encoded char to newly allocated buffer.
- *
- * @param s pointer to the beginning of the char.
- * @return newly allocated nul-terminated string containing one utf8 encoded character.
- */
-static char
-*linguistics_dup_utf8_char(const char *s)
-{
- char *ret, *next;
- next=g_utf8_find_next_char(s,NULL);
- ret=g_new(char, next-s+1);
- g_strlcpy(ret,s,next-s+1);
- return ret;
-}
-
-void
-linguistics_init(void)
-{
- int i;
-
- casefold_hash=g_hash_table_new_full(g_str_hash, g_str_equal,g_free,g_free);
-
- for (i = 0 ; upperlower[i]; i+=2) {
- int j,k;
- for(j=0,k=0;upperlower[i][j] && upperlower[i+1][k];) {
- char *s1=linguistics_dup_utf8_char(upperlower[i]+j);
- char *s2=linguistics_dup_utf8_char(upperlower[i+1]+k);
- g_hash_table_insert(casefold_hash,s1,s2);
- j+=strlen(s1);
- k+=strlen(s2);
- }
- }
-
- special_hash=g_hash_table_new(g_str_hash, g_str_equal);
- for (i = 0 ; i < sizeof(special)/sizeof(special[0]); i++)
- g_hash_table_insert(special_hash,(gpointer)special[i][0],special[i]);
-
-}
-
-void
-linguistics_free(void)
-{
- g_hash_table_destroy(casefold_hash);
- g_hash_table_destroy(special_hash);
- casefold_hash=NULL;
- special_hash=NULL;
-}
-
diff --git a/navit/linguistics.h b/navit/linguistics.h
deleted file mode 100644
index 414cf30fa..000000000
--- a/navit/linguistics.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-#define LINGUISTICS_WORD_SEPARATORS_ASCII " -/()'`"
-char *linguistics_expand_special(const char *str, int mode);
-char *linguistics_next_word(char *str);
-void linguistics_init(void);
-void linguistics_free(void);
-char *linguistics_casefold(const char *in);
-int linguistics_search(const char *str);
-enum linguistics_cmp_mode {
- linguistics_cmp_expand=1,
- linguistics_cmp_partial=2,
- linguistics_cmp_words=4
-};
-int linguistics_compare(const char *s1, const char *s2, enum linguistics_cmp_mode mode);
-#ifdef __cplusplus
-}
-#endif
-
-
diff --git a/navit/log.c b/navit/log.c
deleted file mode 100644
index 2bca13425..000000000
--- a/navit/log.c
+++ /dev/null
@@ -1,588 +0,0 @@
-/*
- * 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.
- */
-
-/** @file log.c
- * @brief The log object.
- *
- * This file implements everything needed for logging: the log object and its functions.
- *
- * @author Navit Team
- * @date 2005-2014
- */
-
-#include "config.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <fcntl.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-#include <glib.h>
-#include "file.h"
-#include "item.h"
-#include "event.h"
-#include "callback.h"
-#include "debug.h"
-#include "xmlconfig.h"
-#include "log.h"
-
-struct log_data {
- int len;
- int max_len;
- char *data;
-};
-
-struct log {
- NAVIT_OBJECT
- FILE *f;
- int overwrite;
- int empty;
- int lazy;
- int mkdir;
- int flush_size;
- int flush_time;
- struct event_timeout *timer;
- struct callback *timer_callback;
-#ifdef HAVE_SYS_TIME_H
- struct timeval last_flush;
-#endif
- char *filename;
- char *filename_ex1;
- char *filename_ex2;
- struct log_data header;
- struct log_data data;
- struct log_data trailer;
-};
-
-/**
- * @brief Stores formatted time to a string.
- *
- * This function obtains local system time, formats it as specified in {@code fmt} and stores it in buffer.
- * Format strings follow the same syntax as those for {@code strftime()}.
- *
- * @param buffer A preallocated buffer that will receive the formatted time
- * @param size Size of the buffer, in bytes
- * @param fmt The format string
- * @return Nothing
- */
-static void
-strftime_localtime(char *buffer, int size, char *fmt)
-{
- time_t t;
- struct tm *tm;
-
- t=time(NULL);
- tm=localtime(&t);
- strftime(buffer, size - 1, fmt, tm);
-}
-
-/**
- * @brief Expands placeholders in a filename
- *
- * This function examines the {@code log->filename} and replaces any placeholders
- * found in it with date, time or an incremental number. If an incremental number is specified, the function
- * will ensure the filename is unique. The expanded filename will be stored {@code log->filename_ex2}.
- * The function uses {@code log->filename_ex1} to store the partly-expanded filename.
- *
- * @param this_ The log object.
- */
-static void
-expand_filenames(struct log *this_)
-{
- char *pos,buffer[4096];
- int i;
-
- strftime_localtime(buffer, 4096, this_->filename);
- this_->filename_ex1=g_strdup(buffer);
- if ((pos=strstr(this_->filename_ex1,"%i"))) {
-#ifdef HAVE_API_ANDROID
- pos[1]='d';
-#endif
- i=0;
- do {
- g_free(this_->filename_ex2);
- this_->filename_ex2=g_strdup_printf(this_->filename_ex1,i++);
- } while (file_exists(this_->filename_ex2));
-#ifdef HAVE_API_ANDROID
- pos[1]='i';
-#endif
- } else
- this_->filename_ex2=g_strdup(this_->filename_ex1);
-}
-
-/**
- * @brief Sets the time at which the log buffer was last flushed.
- *
- * This function sets {@code log->last_flush} to current time.
- *
- * @param this_ The log object.
- */
-static void
-log_set_last_flush(struct log *this_)
-{
-#ifdef HAVE_SYS_TIME_H
- gettimeofday(&this_->last_flush, NULL);
-#endif
-}
-
-/**
- * @brief Opens a log file.
- *
- * This function opens the log file for {@code log}.
- * The file name must be specified by {@code log->filename_ex2} before this function is called.
- * <p>
- * {@code log->overwrite} specifies the behavior if the file exists: if true,
- * an existing file will be overwritten, else it will be appended to.
- * <p>
- * If the directory specified in the filename does not exist and the {@code log->mkdir}
- * is true, it will be created.
- * <p>
- * After the function returns, {@code log->f} will contain the file handle (or NULL, if
- * the operation failed) and {@code log->empty} will indicate if the file is empty.
- * {@code log->last_flush} will be updated with the current time.
- *
- * @param this_ The log object.
- */
-static void
-log_open(struct log *this_)
-{
- char *mode;
- if (this_->overwrite)
- mode="w";
- else
- mode="r+";
- if (this_->mkdir)
- file_mkdir(this_->filename_ex2, 2);
- this_->f=fopen(this_->filename_ex2, mode);
- if (! this_->f)
- this_->f=fopen(this_->filename_ex2, "w");
- if (! this_->f)
- return;
- if (!this_->overwrite)
- fseek(this_->f, 0, SEEK_END);
- this_->empty = !ftell(this_->f);
- log_set_last_flush(this_);
-}
-
-/**
- * @brief Closes a log file.
- *
- * This function writes the trailer to a log file, flushes it and closes the log file for {@code log}.
- *
- * @param this_ The log object.
- */
-static void
-log_close(struct log *this_)
-{
- if (! this_->f)
- return;
- if (this_->trailer.len)
- fwrite(this_->trailer.data, 1, this_->trailer.len, this_->f);
- fflush(this_->f);
- fclose(this_->f);
- this_->f=NULL;
-}
-
-/**
- * @brief Flushes the buffer of a log.
- *
- * This function writes buffered log data to the log file associated with {@code log}
- * and updates {@code log->last_flush} with the current time.
- * <p>
- * If {@code log->lazy} is true, this function will open the file if needed, else
- * the file must be opened with {@code log_open()} prior to calling this function.
- * <p>
- * If the file is empty, the header will be written first, followed by the buffer data.
- * {@code log->empty} will be set to zero if header or data are written to the file.
- *
- * @param this_ The log object.
- * @param flags Flags to control behavior of the function:
- * <br>
- * {@code log_flag_replace_buffer}: ignored
- * <br>
- * {@code log_flag_force_flush}: ignored
- * <br>
- * {@code log_flag_keep_pointer}: keeps the file pointer at the start position of the new data
- * <br>
- * {@code log_flag_keep_buffer}: prevents clearing of the buffer after a successful write (default is to clear the buffer).
- * <br>
- * {@code log_flag_truncate}: truncates the log file at the current position. On the Win32 Base API, this flag has no effect.
- */
-static void
-log_flush(struct log *this_, enum log_flags flags)
-{
- long pos;
- if (this_->lazy && !this_->f) {
- if (!this_->data.len)
- return;
- log_open(this_);
- }
- if (! this_->f)
- return;
- if (this_->empty) {
- if (this_->header.len)
- fwrite(this_->header.data, 1, this_->header.len, this_->f);
- if (this_->header.len || this_->data.len)
- this_->empty=0;
- }
- fwrite(this_->data.data, 1, this_->data.len, this_->f);
-#ifndef HAVE_API_WIN32_BASE
- if (flags & log_flag_truncate) {
- pos=ftell(this_->f);
- ftruncate(fileno(this_->f), pos);
- }
-#endif
- if (this_->trailer.len) {
- pos=ftell(this_->f);
- if (pos > 0) {
- fwrite(this_->trailer.data, 1, this_->trailer.len, this_->f);
- fseek(this_->f, pos, SEEK_SET);
- }
- }
- if (flags & log_flag_keep_pointer)
- fseek(this_->f, -this_->data.len, SEEK_CUR);
- fflush(this_->f);
- if (!(flags & log_flag_keep_buffer)) {
- g_free(this_->data.data);
- this_->data.data=NULL;
- this_->data.max_len=this_->data.len=0;
- }
- log_set_last_flush(this_);
-}
-
-/**
- * @brief Determines if the maximum buffer size of a log has been exceeded.
- *
- * This function examines the size of the data buffer to determine if it exceeds
- * the maximum size specified in {@code log->flush_size} and thus needs to be flushed.
- *
- * @param this_ The log object.
- * @return True if the cache needs to be flushed, false otherwise.
- */
-static int
-log_flush_required(struct log *this_)
-{
- return this_->data.len > this_->flush_size;
-}
-
-/**
- * @brief Rotates a log file.
- *
- * This function rotates a log by stopping and immediately restarting it.
- * Stopping flushes the buffer and closes the file; restarting determines the
- * new file name and opens the file as needed (depending on the lazy member).
- * <p>
- * Depending on the file name format and how the function was called, a new log
- * file will be created or the old log file will be reused (appended to or
- * overwritten, depending on {@code log->overwrite}): if the file name includes an
- * incremental number, the new file will always have a different name. If a
- * previous call to {@code log_change_required()} returned true, the new file
- * will also have a different name. In all other cases the new file will have
- * the same name as the old one, causing the old file to be overwritten or
- * appended to.
- *
- * @param this_ The log object.
- */
-static void
-log_change(struct log *this_)
-{
- log_flush(this_,0);
- log_close(this_);
- expand_filenames(this_);
- if (! this_->lazy)
- log_open(this_);
-}
-
-/**
- * @brief Determines if the log must be rotated.
- *
- * This function expands the date and time placeholders in {@code log->filename}
- * to determine if the resulting part of the filename has changed.
- *
- * @param this_ The log object.
- * @return True if the date/time-dependent part of the filename has changed, false otherwise.
- */
-static int
-log_change_required(struct log *this_)
-{
- char buffer[4096];
-
- strftime_localtime(buffer, 4096, this_->filename);
- return (strcmp(this_->filename_ex1, buffer) != 0);
-}
-
-/**
- * @brief Determines if the flush interval of a log has elapsed and flushes the buffer if needed.
- *
- * This function calculates the difference between current time and {@code log->last_flush}.
- * If it is greater than or equal to {@code log->flush_time}, the buffer is flushed.
- *
- * @param this_ The log object.
- */
-static void
-log_timer(struct log *this_)
-{
-#ifdef HAVE_SYS_TIME_H
- struct timeval tv;
- int delta;
- gettimeofday(&tv, NULL);
- delta=(tv.tv_sec-this_->last_flush.tv_sec)*1000+(tv.tv_usec-this_->last_flush.tv_usec)/1000;
- dbg(lvl_debug,"delta=%d flush_time=%d\n", delta, this_->flush_time);
- if (this_->flush_time && delta >= this_->flush_time*1000)
- log_flush(this_,0);
-#endif
-}
-
-/**
- * @brief Gets an attribute
- *
- * @param this_ The log object.
- * @param attr_type The attribute type to return
- * @param attr Points to a struct attr to store the attribute
- * @param iter An attribute iterator
- * @return True for success, false for failure
- */
-int
-log_get_attr(struct log *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
-}
-
-
-/**
- * @brief Creates and initializes a new log object.
- *
- * @param parent The parent object.
- * @param attrs Points to an array of pointers to attributes for the new log object
- * @return The new log object, or NULL if creation fails.
- */
-struct log *
-log_new(struct attr * parent,struct attr **attrs)
-{
- struct log *ret=g_new0(struct log, 1);
- struct attr *data,*overwrite,*lazy,*mkdir,*flush_size,*flush_time;
- struct file_wordexp *wexp;
- char *filename, **wexp_data;
-
- dbg(lvl_debug,"enter\n");
- ret->func=&log_func;
- navit_object_ref((struct navit_object *)ret);
- data=attr_search(attrs, NULL, attr_data);
- if (! data)
- return NULL;
- filename=data->u.str;
- wexp=file_wordexp_new(filename);
- if (wexp && file_wordexp_get_count(wexp) > 0) {
- wexp_data=file_wordexp_get_array(wexp);
- filename=wexp_data[0];
- }
- if (filename)
- ret->filename=g_strdup(filename);
- if (wexp)
- file_wordexp_destroy(wexp);
- overwrite=attr_search(attrs, NULL, attr_overwrite);
- if (overwrite)
- ret->overwrite=overwrite->u.num;
- lazy=attr_search(attrs, NULL, attr_lazy);
- if (lazy)
- ret->lazy=lazy->u.num;
- mkdir=attr_search(attrs, NULL, attr_mkdir);
- if (mkdir)
- ret->mkdir=mkdir->u.num;
- flush_size=attr_search(attrs, NULL, attr_flush_size);
- if (flush_size)
- ret->flush_size=flush_size->u.num;
- flush_time=attr_search(attrs, NULL, attr_flush_time);
- if (flush_time)
- ret->flush_time=flush_time->u.num;
- if (ret->flush_time) {
- dbg(lvl_debug,"interval %d\n", ret->flush_time*1000);
- ret->timer_callback=callback_new_1(callback_cast(log_timer), ret);
- ret->timer=event_add_timeout(ret->flush_time*1000, 1, ret->timer_callback);
- }
- expand_filenames(ret);
- if (ret->lazy)
- log_set_last_flush(ret);
- else
- log_open(ret);
- ret->attrs=attr_list_dup(attrs);
- return ret;
-}
-
-/**
- * @brief Sets the header for a log file.
- *
- * This function sets the header, which is to be inserted into any log file before
- * the actual log data.
- *
- * @param this_ The log object.
- * @param data The header data.
- * @param len Size of the header data to be copied, in bytes.
- */
-void
-log_set_header(struct log *this_, char *data, int len)
-{
- this_->header.data=g_malloc(len);
- this_->header.max_len=this_->header.len=len;
- memcpy(this_->header.data, data, len);
-}
-
-/**
- * @brief Sets the trailer for a log file.
- *
- * This function sets the trailer, which is to be added to any log file after
- * the actual log data.
- *
- * @param this_ The log object.
- * @param data The trailer data.
- * @param len Size of the trailer data to be copied, in bytes.
- */
-void
-log_set_trailer(struct log *this_, char *data, int len)
-{
- this_->trailer.data=g_malloc(len);
- this_->trailer.max_len=this_->trailer.len=len;
- memcpy(this_->trailer.data, data, len);
-}
-
-/**
- * @brief Writes to a log.
- *
- * This function appends data to a log. It rotates the log, if needed, before
- * adding the new data. After adding, the log is flushed if the buffer exceeds
- * its maximum size or if the {@code log_flag_force_flush} flag is set.
- *
- * @param this_ The log object.
- * @param data Points to a buffer containing the data to be appended.
- * @param len Length of the data to be appended, in bytes.
- * @param flags Flags to control behavior of the function:
- * <br>
- * {@code log_flag_replace_buffer}: discards any data in the buffer not yet written to the log file
- * <br>
- * {@code log_flag_force_flush}: forces a flush of the log after appending the data
- * <br>
- * {code log_flag_keep_pointer}: ignored
- * <br>
- * {@code log_flag_keep_buffer}: ignored
- * <br>
- * {@code log_flag_truncate}: ignored
- */
-void
-log_write(struct log *this_, char *data, int len, enum log_flags flags)
-{
- dbg(lvl_debug,"enter\n");
- if (log_change_required(this_)) {
- dbg(lvl_debug,"log_change");
- log_change(this_);
- }
- if (flags & log_flag_replace_buffer)
- this_->data.len=0;
- if (this_->data.len + len > this_->data.max_len) {
- dbg(lvl_info,"overflow\n");
- this_->data.max_len+=16384; // FIXME: what if len exceeds this->data.max_len by more than 16384 bytes?
- this_->data.data=g_realloc(this_->data.data,this_->data.max_len);
- }
- memcpy(this_->data.data+this_->data.len, data, len);
- this_->data.len+=len;
- if (log_flush_required(this_) || (flags & log_flag_force_flush))
- log_flush(this_, flags);
-}
-
-/**
- * @brief Returns the data buffer of a log object and its length.
- *
- * @param this_ The log object.
- * @param len Points to an int which will receive the length of the buffer.
- * This can be NULL, in which case no information on buffer length will be stored.
- * @return Pointer to the data buffer.
- */
-void *
-log_get_buffer(struct log *this_, int *len)
-{
- if (len)
- *len=this_->data.len;
- return this_->data.data;
-}
-
-
-/**
- * @brief Writes a formatted string to a log.
- *
- * This function formats a string in a fashion similar to {@code printf()} and related functions
- * and writes it to a log using {@code log_write()}.
- *
- * @param this_ The log object.
- * @param fmt The format string.
- * @param ... Additional arguments must be specified for each placeholder in the format string.
- */
-void
-log_printf(struct log *this_, char *fmt, ...)
-{
- char buffer[LOG_BUFFER_SIZE];
- int size;
- va_list ap;
-
- va_start(ap, fmt);
-
- // Format the string and write it to the log
- size = g_vsnprintf(buffer, LOG_BUFFER_SIZE, fmt, ap);
- log_write(this_, buffer, size, 0);
-
- va_end(ap);
-}
-
-/**
- * @brief Destroys a log object and frees up its memory.
- *
- * @param this_ The log object.
- */
-void
-log_destroy(struct log *this_)
-{
- dbg(lvl_debug,"enter\n");
- attr_list_free(this_->attrs);
- callback_destroy(this_->timer_callback);
- event_remove_timeout(this_->timer);
- log_flush(this_,0);
- log_close(this_);
- g_free(this_);
-}
-
-struct object_func log_func = {
- attr_log,
- (object_func_new)log_new,
- (object_func_get_attr)navit_object_get_attr,
- (object_func_iter_new)navit_object_attr_iter_new,
- (object_func_iter_destroy)navit_object_attr_iter_destroy,
- (object_func_set_attr)navit_object_set_attr,
- (object_func_add_attr)navit_object_add_attr,
- (object_func_remove_attr)navit_object_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)log_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
-
diff --git a/navit/log.h b/navit/log.h
deleted file mode 100644
index 8a9f073f1..000000000
--- a/navit/log.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_LOG_H
-#define NAVIT_LOG_H
-#define LOG_BUFFER_SIZE 256
-/**
- * printf-style writing to the log file. A buffer of LOG_BUFFER_SIZE
- * bytes is preallocated for the complete format message, longer
- * messages will be truncated.
- */
-
-enum log_flags {
- log_flag_replace_buffer=1,
- log_flag_force_flush=2,
- log_flag_keep_pointer=4,
- log_flag_keep_buffer=8,
- log_flag_truncate=16,
-};
-/* prototypes */
-enum attr_type;
-enum log_flags;
-struct attr;
-struct attr_iter;
-struct log;
-int log_get_attr(struct log *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-struct log *log_new(struct attr *parent, struct attr **attrs);
-void log_set_header(struct log *this_, char *data, int len);
-void log_set_trailer(struct log *this_, char *data, int len);
-void log_write(struct log *this_, char *data, int len, enum log_flags flags);
-void *log_get_buffer(struct log *this_, int *len);
-void log_printf(struct log *this_, char *fmt, ...);
-void log_destroy(struct log *this_);
-/* end of prototypes */
-#endif
diff --git a/navit/main.c b/navit/main.c
deleted file mode 100644
index 25dcb5267..000000000
--- a/navit/main.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/**
- * 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 <locale.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <signal.h>
-#include <glib.h>
-#include <sys/types.h>
-
-#include "config.h"
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifndef _WIN32
-#include <sys/wait.h>
-#include <signal.h>
-#endif
-
-#include "file.h"
-#include "debug.h"
-#include "main.h"
-#include "navit.h"
-#include "gui.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "coord.h"
-#include "route.h"
-#include "navigation.h"
-#include "event.h"
-#include "callback.h"
-#include "navit_nls.h"
-#include "util.h"
-#ifdef HAVE_API_WIN32_BASE
-#include <windows.h>
-#include <winbase.h>
-#endif
-
-#ifdef HAVE_API_WIN32_CE
-#include "libc.h"
-#endif
-
-struct map_data *map_data_default;
-
-struct callback_list *cbl;
-
-#ifdef HAVE_API_WIN32
-void
-setenv(char *var, char *val, int overwrite)
-{
- char *str=g_strdup_printf("%s=%s",var,val);
- if (overwrite || !getenv(var))
- putenv(str);
- g_free(str);
-}
-#endif
-
-/*
- * environment_vars[][0:name,1-3:mode]
- * ':' replaced with NAVIT_PREFIX
- * '::' replaced with NAVIT_PREFIX and LIBDIR
- * '~' replaced with HOME
-*/
-static char *environment_vars[][5]={
- {"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},
- {NULL, NULL, NULL, NULL, NULL},
-};
-
-static void
-main_setup_environment(int mode)
-{
- int i=0;
- char *var,*val,*homedir;
- while ((var=environment_vars[i][0])) {
- val=environment_vars[i][mode+1];
- if (val) {
- switch (val[0]) {
- case ':':
- if (val[1] == ':')
- val=g_strdup_printf("%s/%s%s", getenv("NAVIT_PREFIX"), LIBDIR+sizeof(PREFIX), val+2);
- else
- val=g_strdup_printf("%s%s", getenv("NAVIT_PREFIX"), val+1);
- break;
- case '~':
- homedir=getenv("HOME");
- if (!homedir)
- homedir="./";
- val=g_strdup_printf("%s%s", homedir, val+1);
- break;
- default:
- val=g_strdup(val);
- break;
- }
- setenv(var, val, 0);
- g_free(val);
- }
- i++;
- }
-}
-
-#ifdef HAVE_API_WIN32_BASE
-char *nls_table[][3]={
- // NLS Table compiled by Nick "Number6" Geoghegan
- // Not an exhaustive list, but supports 99% of all languages in Windows
- //{"LANGNAME", "CTRYNAME", "Language Code"},
- {"AFK", "ZAF", "af_ZA"}, // Afrikaans (South Africa)
- {"SQI", "ALB", "sq_AL"}, // Albanian (Albania)
- {"AMH", "ETH", "am_ET"}, // Amharic (Ethiopia)
- {"ARG", "DZA", "ar_DZ"}, // Arabic (Algeria)
- {"ARH", "BHR", "ar_BH"}, // Arabic (Bahrain)
- {"ARE", "EGY", "ar_EG"}, // Arabic (Egypt)
- {"ARI", "IRQ", "ar_IQ"}, // Arabic (Iraq)
- {"ARJ", "JOR", "ar_JO"}, // Arabic (Jordan)
- {"ARK", "KWT", "ar_KW"}, // Arabic (Kuwait)
- {"ARB", "LBN", "ar_LB"}, // Arabic (Lebanon)
- {"ARL", "LBY", "ar_LY"}, // Arabic (Libya)
- {"ARM", "MAR", "ar_MA"}, // Arabic (Morocco)
- {"ARO", "OMN", "ar_OM"}, // Arabic (Oman)
- {"ARQ", "QAT", "ar_QA"}, // Arabic (Qatar)
- {"ARA", "SAU", "ar_SA"}, // Arabic (Saudi Arabia)
- {"ARS", "SYR", "ar_SY"}, // Arabic (Syria)
- {"ART", "TUN", "ar_TN"}, // Arabic (Tunisia)
- {"ARU", "ARE", "ar_AE"}, // Arabic (U.A.E.)
- {"ARY", "YEM", "ar_YE"}, // Arabic (Yemen)
- {"HYE", "ARM", "hy_AM"}, // Armenian (Armenia)
- {"ASM", "IND", "as_IN"}, // Assamese (India)
- {"BAS", "RUS", "ba_RU"}, // Bashkir (Russia)
- {"EUQ", "ESP", "eu_ES"}, // Basque (Basque)
- {"BEL", "BLR", "be_BY"}, // Belarusian (Belarus)
- {"BNG", "BDG", "bn_BD"}, // Bengali (Bangladesh)
- {"BNG", "IND", "bn_IN"}, // Bengali (India)
- {"BRE", "FRA", "br_FR"}, // Breton (France)
- {"BGR", "BGR", "bg_BG"}, // Bulgarian (Bulgaria)
- {"CAT", "ESP", "ca_ES"}, // Catalan (Catalan)
- {"ZHH", "HKG", "zh_HK"}, // Chinese (Hong Kong S.A.R.)
- {"ZHM", "MCO", "zh_MO"}, // Chinese (Macao S.A.R.)
- {"CHS", "CHN", "zh_CN"}, // Chinese (People's Republic of China)
- {"ZHI", "SGP", "zh_SG"}, // Chinese (Singapore)
- {"CHT", "TWN", "zh_TW"}, // Chinese (Taiwan)
- {"COS", "FRA", "co_FR"}, // Corsican (France)
- {"HRV", "HRV", "hr_HR"}, // Croatian (Croatia)
- {"HRB", "BIH", "hr_BA"}, // Croatian (Latin, Bosnia and Herzegovina)
- {"CSY", "CZE", "cs_CZ"}, // Czech (Czech Republic)
- {"DAN", "DNK", "da_DK"}, // Danish (Denmark)
- {"NLB", "BEL", "nl_BE"}, // Dutch (Belgium)
- {"NLD", "NLD", "nl_NL"}, // Dutch (Netherlands)
- {"ENA", "AUS", "en_AU"}, // English (Australia)
- {"ENL", "BLZ", "en_BZ"}, // English (Belize)
- {"ENC", "CAN", "en_CA"}, // English (Canada)
- {"ENB", "CAR", "en_CB"}, // English (Caribbean)
- {"ENN", "IND", "en_IN"}, // English (India)
- {"ENI", "IRL", "en_IE"}, // English (Ireland)
- {"ENJ", "JAM", "en_JM"}, // English (Jamaica)
- {"ENM", "MYS", "en_MY"}, // English (Malaysia)
- {"ENZ", "NZL", "en_NZ"}, // English (New Zealand)
- {"ENP", "PHL", "en_PH"}, // English (Republic of the Philippines)
- {"ENE", "SGP", "en_SG"}, // English (Singapore)
- {"ENS", "ZAF", "en_ZA"}, // English (South Africa)
- {"ENT", "TTO", "en_TT"}, // English (Trinidad and Tobago)
- {"ENG", "GBR", "en_GB"}, // English (United Kingdom)
- {"ENU", "USA", "en_US"}, // English (United States)
- {"ENW", "ZWE", "en_ZW"}, // English (Zimbabwe)
- {"ETI", "EST", "et_EE"}, // Estonian (Estonia)
- {"FOS", "FRO", "fo_FO"}, // Faroese (Faroe Islands)
- {"FIN", "FIN", "fi_FI"}, // Finnish (Finland)
- {"FRB", "BEL", "fr_BE"}, // French (Belgium)
- {"FRC", "CAN", "fr_CA"}, // French (Canada)
- {"FRA", "FRA", "fr_FR"}, // French (France)
- {"FRL", "LUX", "fr_LU"}, // French (Luxembourg)
- {"FRM", "MCO", "fr_MC"}, // French (Principality of Monaco)
- {"FRS", "CHE", "fr_CH"}, // French (Switzerland)
- {"FYN", "NLD", "fy_NL"}, // Frisian (Netherlands)
- {"GLC", "ESP", "gl_ES"}, // Galician (Galician)
- {"KAT", "GEO", "ka_GE"}, // Georgian (Georgia)
- {"DEA", "AUT", "de_AT"}, // German (Austria)
- {"DEU", "DEU", "de_DE"}, // German (Germany)
- {"DEC", "LIE", "de_LI"}, // German (Liechtenstein)
- {"DEL", "LUX", "de_LU"}, // German (Luxembourg)
- {"DES", "CHE", "de_CH"}, // German (Switzerland)
- {"ELL", "GRC", "el_GR"}, // Greek (Greece)
- {"KAL", "GRL", "kl_GL"}, // Greenlandic (Greenland)
- {"GUJ", "IND", "gu_IN"}, // Gujarati (India)
- {"HEB", "ISR", "he_IL"}, // Hebrew (Israel)
- {"HIN", "IND", "hi_IN"}, // Hindi (India)
- {"HUN", "HUN", "hu_HU"}, // Hungarian (Hungary)
- {"ISL", "ISL", "is_IS"}, // Icelandic (Iceland)
- {"IBO", "NGA", "ig_NG"}, // Igbo (Nigeria)
- {"IND", "IDN", "id_ID"}, // Indonesian (Indonesia)
- {"IRE", "IRL", "ga_IE"}, // Irish (Ireland)
- {"XHO", "ZAF", "xh_ZA"}, // isiXhosa (South Africa)
- {"ZUL", "ZAF", "zu_ZA"}, // isiZulu (South Africa)
- {"ITA", "ITA", "it_IT"}, // Italian (Italy)
- {"ITS", "CHE", "it_CH"}, // Italian (Switzerland)
- {"JPN", "JPN", "ja_JP"}, // Japanese (Japan)
- {"KDI", "IND", "kn_IN"}, // Kannada (India)
- {"KKZ", "KAZ", "kk_KZ"}, // Kazakh (Kazakhstan)
- {"KHM", "KHM", "km_KH"}, // Khmer (Cambodia)
- {"KIN", "RWA", "rw_RW"}, // Kinyarwanda (Rwanda)
- {"SWK", "KEN", "sw_KE"}, // Kiswahili (Kenya)
- {"KOR", "KOR", "ko_KR"}, // Korean (Korea)
- {"KYR", "KGZ", "ky_KG"}, // Kyrgyz (Kyrgyzstan)
- {"LAO", "LAO", "lo_LA"}, // Lao (Lao P.D.R.)
- {"LVI", "LVA", "lv_LV"}, // Latvian (Latvia)
- {"LTH", "LTU", "lt_LT"}, // Lithuanian (Lithuania)
- {"LBX", "LUX", "lb_LU"}, // Luxembourgish (Luxembourg)
- {"MKI", "MKD", "mk_MK"}, // Macedonian (Former Yugoslav Republic of Macedonia)
- {"MSB", "BRN", "ms_BN"}, // Malay (Brunei Darussalam)
- {"MSL", "MYS", "ms_MY"}, // Malay (Malaysia)
- {"MYM", "IND", "ml_IN"}, // Malayalam (India)
- {"MLT", "MLT", "mt_MT"}, // Maltese (Malta)
- {"MRI", "NZL", "mi_NZ"}, // Maori (New Zealand)
- {"MAR", "IND", "mr_IN"}, // Marathi (India)
- {"MON", "MNG", "mn_MN"}, // Mongolian (Cyrillic, Mongolia)
- {"NEP", "NEP", "ne_NP"}, // Nepali (Nepal)
- {"NOR", "NOR", "nb_NO"}, // Norwegian, Bokmå(Norway)
- {"NON", "NOR", "nn_NO"}, // Norwegian, Nynorsk (Norway)
- {"OCI", "FRA", "oc_FR"}, // Occitan (France)
- {"ORI", "IND", "or_IN"}, // Oriya (India)
- {"PAS", "AFG", "ps_AF"}, // Pashto (Afghanistan)
- {"FAR", "IRN", "fa_IR"}, // Persian
- {"PLK", "POL", "pl_PL"}, // Polish (Poland)
- {"PTB", "BRA", "pt_BR"}, // Portuguese (Brazil)
- {"PTG", "PRT", "pt_PT"}, // Portuguese (Portugal)
- {"PAN", "IND", "pa_IN"}, // Punjabi (India)
- {"ROM", "ROM", "ro_RO"}, // Romanian (Romania)
- {"RMC", "CHE", "rm_CH"}, // Romansh (Switzerland)
- {"RUS", "RUS", "ru_RU"}, // Russian (Russia)
- {"SMG", "FIN", "se_FI"}, // Sami, Northern (Finland)
- {"SME", "NOR", "se_NO"}, // Sami, Northern (Norway)
- {"SMF", "SWE", "se_SE"}, // Sami, Northern (Sweden)
- {"SAN", "IND", "sa_IN"}, // Sanskrit (India)
- {"TSN", "ZAF", "tn_ZA"}, // Setswana (South Africa)
- {"SIN", "LKA", "si_LK"}, // Sinhala (Sri Lanka)
- {"SKY", "SVK", "sk_SK"}, // Slovak (Slovakia)
- {"SLV", "SVN", "sl_SI"}, // Slovenian (Slovenia)
- {"ESS", "ARG", "es_AR"}, // Spanish (Argentina)
- {"ESB", "BOL", "es_BO"}, // Spanish (Bolivia)
- {"ESL", "CHL", "es_CL"}, // Spanish (Chile)
- {"ESO", "COL", "es_CO"}, // Spanish (Colombia)
- {"ESC", "CRI", "es_CR"}, // Spanish (Costa Rica)
- {"ESD", "DOM", "es_DO"}, // Spanish (Dominican Republic)
- {"ESF", "ECU", "es_EC"}, // Spanish (Ecuador)
- {"ESE", "SLV", "es_SV"}, // Spanish (El Salvador)
- {"ESG", "GTM", "es_GT"}, // Spanish (Guatemala)
- {"ESH", "HND", "es_HN"}, // Spanish (Honduras)
- {"ESM", "MEX", "es_MX"}, // Spanish (Mexico)
- {"ESI", "NIC", "es_NI"}, // Spanish (Nicaragua)
- {"ESA", "PAN", "es_PA"}, // Spanish (Panama)
- {"ESZ", "PRY", "es_PY"}, // Spanish (Paraguay)
- {"ESR", "PER", "es_PE"}, // Spanish (Peru)
- {"ESU", "PRI", "es_PR"}, // Spanish (Puerto Rico)
- {"ESN", "ESP", "es_ES"}, // Spanish (Spain)
- {"EST", "USA", "es_US"}, // Spanish (United States)
- {"ESY", "URY", "es_UY"}, // Spanish (Uruguay)
- {"ESV", "VEN", "es_VE"}, // Spanish (Venezuela)
- {"SVF", "FIN", "sv_FI"}, // Swedish (Finland)
- {"SVE", "SWE", "sv_SE"}, // Swedish (Sweden)
- {"TAM", "IND", "ta_IN"}, // Tamil (India)
- {"TTT", "RUS", "tt_RU"}, // Tatar (Russia)
- {"TEL", "IND", "te_IN"}, // Telugu (India)
- {"THA", "THA", "th_TH"}, // Thai (Thailand)
- {"BOB", "CHN", "bo_CN"}, // Tibetan (PRC)
- {"TRK", "TUR", "tr_TR"}, // Turkish (Turkey)
- {"TUK", "TKM", "tk_TM"}, // Turkmen (Turkmenistan)
- {"UIG", "CHN", "ug_CN"}, // Uighur (PRC)
- {"UKR", "UKR", "uk_UA"}, // Ukrainian (Ukraine)
- {"URD", "PAK", "ur_PK"}, // Urdu (Islamic Republic of Pakistan)
- {"VIT", "VNM", "vi_VN"}, // Vietnamese (Vietnam)
- {"CYM", "GBR", "cy_GB"}, // Welsh (United Kingdom)
- {"WOL", "SEN", "wo_SN"}, // Wolof (Senegal)
- {"III", "CHN", "ii_CN"}, // Yi (PRC)
- {"YOR", "NGA", "yo_NG"}, // Yoruba (Nigeria)
- {NULL,NULL,NULL}, // Default - Can't find the language / Language not listed above
-};
-
-static void
-win_set_nls(void)
-{
- char country[32],lang[32];
- int i=0;
-
-#ifdef HAVE_API_WIN32_CE
- wchar_t wcountry[32],wlang[32];
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, wlang, sizeof(wlang));
- WideCharToMultiByte(CP_ACP,0,wlang,-1,lang,sizeof(lang),NULL,NULL);
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, wcountry, sizeof(wcountry));
- WideCharToMultiByte(CP_ACP,0,wcountry,-1,country,sizeof(country),NULL,NULL);
-#else
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, lang, sizeof(lang));
- GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, country, sizeof(country));
-#endif
- while (nls_table[i][0]) {
- if (!strcmp(nls_table[i][0], lang) && !(strcmp(nls_table[i][1], country))) {
- dbg(lvl_info,"Setting LANG=%s for Lang %s Country %s\n",nls_table[i][2], lang, country);
- setenv("LANG",nls_table[i][2],0);
- return;
- }
- i++;
- }
- dbg(lvl_error,"Lang %s Country %s not found\n",lang,country);
-}
-#endif
-
-void
-main_init(const char *program)
-{
- char *s;
-#ifdef _UNICODE /* currently for wince */
- wchar_t wfilename[MAX_PATH + 1];
-#endif
-
- spawn_process_init();
-
- cbl=callback_list_new();
-#ifdef HAVE_API_WIN32_BASE
- win_set_nls();
-#endif
-#ifndef HAVE_API_ANDROID
- setenv("LC_NUMERIC","C",1);
- setlocale(LC_ALL,"");
- setlocale(LC_NUMERIC,"C");
-#endif
-#if !defined _WIN32 && !defined _WIN32_WCE
- if (file_exists("navit.c") || file_exists("navit.o") || file_exists("navit.lo") || file_exists("version.h")) {
- char buffer[PATH_MAX];
- printf("%s",_("Running from source directory\n"));
- getcwd(buffer, PATH_MAX); /* libc of navit returns "dummy" */
- setenv("NAVIT_PREFIX", buffer, 0);
- main_setup_environment(0);
- } else {
- if (!getenv("NAVIT_PREFIX")) {
- int l;
- int progpath_len;
- char *progpath="/bin/navit";
- l=strlen(program);
- progpath_len=strlen(progpath);
- if (l > progpath_len && !strcmp(program+l-progpath_len,progpath)) {
- s=g_strdup(program);
- s[l-progpath_len]='\0';
- if (strcmp(s, PREFIX))
- printf(_("setting '%s' to '%s'\n"), "NAVIT_PREFIX", s);
- setenv("NAVIT_PREFIX", s, 0);
- g_free(s);
- } else
- setenv("NAVIT_PREFIX", PREFIX, 0);
- }
-#ifdef HAVE_API_ANDROID
- main_setup_environment(3);
-#else
- main_setup_environment(1);
-#endif
- }
-
-#else /* _WIN32 || _WIN32_WCE */
- if (!getenv("NAVIT_PREFIX"))
- {
- char filename[MAX_PATH + 1],
- *end;
- int len;
-
- *filename = '\0';
-#ifdef _UNICODE /* currently for wince */
- if (GetModuleFileNameW(NULL, wfilename, MAX_PATH))
- {
- wcstombs(filename, wfilename, MAX_PATH);
-#else
- if (GetModuleFileName(NULL, filename, MAX_PATH))
- {
-#endif
- end = strrchr(filename, L'\\'); /* eliminate the file name which is on the right side */
- if(end)
- *end = '\0';
- }
- len=strlen(filename);
- if (len > 4 && !strcmp(filename+len-4,"\\bin")) {
- filename[len-4]='\0';
- }
- setenv("NAVIT_PREFIX", filename, 0);
- }
- if (!getenv("HOME"))
- setenv("HOME", getenv("NAVIT_PREFIX"), 0);
- main_setup_environment(2);
-#endif /* _WIN32 || _WIN32_WCE */
-
- s = getenv("NAVIT_WID");
- if (s) {
- setenv("SDL_WINDOWID", s, 0);
- }
-}
-
diff --git a/navit/main.h b/navit/main.h
deleted file mode 100644
index 47f275c09..000000000
--- a/navit/main.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_MAIN_H
-#define NAVIT_MAIN_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* prototypes */
-struct navit;
-struct iter;
-struct attr;
-struct iter * main_iter_new(void);
-void main_iter_destroy(struct iter *iter);
-struct navit * main_get_navit(struct iter *iter);
-void main_add_navit(struct navit *nav);
-void main_remove_navit(struct navit *nav);
-int main_add_attr(struct attr *attr);
-int main_remove_attr(struct attr *attr);
-void main_init(const char *program);
-void main_init_nls(void);
-int main(int argc, char **argv);
-/* end of prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/map-share.h b/navit/map-share.h
deleted file mode 100644
index 0ba97542a..000000000
--- a/navit/map-share.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_MAP_SHARE_H
-#define NAVIT_MAP_SHARE_H
-
-void map_srv_start_poa(CORBA_ORB orb, CORBA_Environment * ev);
-CORBA_Object map_srv_start_object(CORBA_Environment * ev, struct container *co);
-
-#endif
-
diff --git a/navit/map.c b/navit/map.c
deleted file mode 100644
index 2736da9f8..000000000
--- a/navit/map.c
+++ /dev/null
@@ -1,752 +0,0 @@
-/**
- * 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.
- */
-
-/** @file
- *
- * @brief Contains code that makes navit able to load maps
- *
- * This file contains the code that makes navit able to load maps. Because
- * navit is able to open maps in different formats, this code does not handle
- * any map format itself. This is done by map plugins which register to this
- * code by calling plugin_register_category_map().
- *
- * When opening a new map, the map plugin will return a pointer to a map_priv
- * struct, which can be defined by the map plugin and contains whatever private
- * data the map plugin needs to access the map. This pointer will also be used
- * as a "handle" to access the map opened.
- *
- * A common task is to create a "map rect". A map rect is a rectangular part of
- * the map, that one can for example retrieve items from. It is not possible to
- * retrieve items directly from the complete map. Creating a map rect returns a
- * pointer to a map_rect_priv, which contains private data for the map rect and
- * will be used as "handle" for this map rect.
- */
-
-#include <glib.h>
-#include <string.h>
-#include "debug.h"
-#include "coord.h"
-#include "projection.h"
-#include "item.h"
-#include "map.h"
-#include "maptype.h"
-#include "transform.h"
-#include "plugin.h"
-#include "callback.h"
-#include "country.h"
-#include "xmlconfig.h"
-
-/**
- * @brief Holds information about a map
- *
- * This structure holds information about a map.
- */
-struct map {
- NAVIT_OBJECT
- struct map_methods meth; /**< Structure with pointers to the map plugin's functions */
- struct map_priv *priv; /**< Private data of the map, only known to the map plugin */
- struct callback_list *attr_cbl; /**< List of callbacks that are called when attributes change */
-};
-
-/**
- * @brief Describes a rectangular extract of a map
- *
- * This structure describes a rectangular extract of a map.
- */
-struct map_rect {
- struct map *m; /**< The map this extract is from */
- struct map_rect_priv *priv; /**< Private data of this map rect, only known to the map plugin */
-};
-
-/**
- * @brief Opens a new map
- *
- * This function opens a new map based on the attributes passed. This function
- * takes the attribute "attr_type" to determine which type of map to open and passes
- * all attributes to the map plugin's function that was specified in the
- * plugin_register_new_map_type()-call.
- *
- * Note that every plugin should accept an attribute of type "attr_data" to be passed
- * with the filename of the map to be opened as value.
- *
- * @param attrs Attributes specifying which map to open, see description
- * @return The opened map or NULL on failure
- */
-struct map *
-map_new(struct attr *parent, struct attr **attrs)
-{
- struct map *m;
- struct map_priv *(*maptype_new)(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl);
- struct attr *type=attr_search(attrs, NULL, attr_type);
-
- if (! type) {
- dbg(lvl_error,"missing type\n");
- return NULL;
- }
- maptype_new=plugin_get_category_map(type->u.str);
- if (! maptype_new) {
- dbg(lvl_error,"invalid type '%s'\n", type->u.str);
- return NULL;
- }
-
- m=g_new0(struct map, 1);
- m->attrs=attr_list_dup(attrs);
- m->func=&map_func;
- navit_object_ref((struct navit_object *)m);
- m->attr_cbl=callback_list_new();
- m->priv=maptype_new(&m->meth, attrs, m->attr_cbl);
- if (! m->priv) {
- map_destroy(m);
- m=NULL;
- }
- return m;
-}
-
-/**
- * @brief Gets an attribute from a map
- *
- * @param this_ The map the attribute should be read from
- * @param type The type of the attribute to be read
- * @param attr Pointer to an attrib-structure where the attribute should be written to
- * @param iter (NOT IMPLEMENTED) Used to iterate through all attributes of a type. Set this to NULL to get the first attribute, set this to an attr_iter to get the next attribute
- * @return True if the attribute type was found, false if not
- */
-int
-map_get_attr(struct map *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- int ret=0;
- if (this_->meth.map_get_attr)
- ret=this_->meth.map_get_attr(this_->priv, type, attr);
- if (!ret)
- ret=attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
- if (!ret && type == attr_active) {
- attr->type=type;
- attr->u.num=1;
- return 1;
- }
- return ret;
-}
-
-/**
- * @brief Sets an attribute of a map
- *
- * This sets an attribute of a map, overwriting an attribute of the same type if it
- * already exists. This function also calls all the callbacks that are registred
- * to be called when attributes change.
- *
- * @param this_ The map to set the attribute of
- * @param attr The attribute to set
- * @return True if the attr could be set, false otherwise
- */
-int
-map_set_attr(struct map *this_, struct attr *attr)
-{
- this_->attrs=attr_generic_set_attr(this_->attrs, attr);
- if (this_->meth.map_set_attr)
- this_->meth.map_set_attr(this_->priv, attr);
- callback_list_call_attr_2(this_->attr_cbl, attr->type, this_, attr);
- return 1;
-}
-
-/**
- * @brief Registers a new callback for attribute-change
- *
- * This function registers a new callback function that should be called if the attributes
- * of the map change.
- *
- * @param this_ The map to associate the callback with
- * @param cb The callback to add
- */
-void
-map_add_callback(struct map *this_, struct callback *cb)
-{
- callback_list_add(this_->attr_cbl, cb);
-}
-
-/**
- * @brief Removes a callback from the list of attribute-change callbacks
- *
- * This function removes one callback from the list of callbacks functions that should be called
- * when attributes of the map change.
- *
- * @param this_ The map to remove the callback from
- * @param cb The callback to remove
- */
-void
-map_remove_callback(struct map *this_, struct callback *cb)
-{
- callback_list_remove(this_->attr_cbl, cb);
-}
-
-
-/**
- * @brief Checks if strings from a map have to be converted
- *
- * @param this_ Map to be checked for the need to convert strings
- * @return True if strings from the map have to be converted, false otherwise
- */
-int
-map_requires_conversion(struct map *this_)
-{
- return (this_->meth.charset != NULL && strcmp(this_->meth.charset, "utf-8"));
-}
-
-char *map_converted_string_tmp=NULL;
-
-/**
- * @brief Converts a string from a map into a temporary allocated buffer. Conversion is not performed and original string is returned
- * if map doesn't require conversion. So lifetime of returned value is very limited.
- *
- * @param this_ The map the string to be converted is from
- * @param str The string to be converted
- * @return The converted string. Don't care about it after use.
- */
-char *
-map_convert_string_tmp(struct map *this_, char *str)
-{
- if(map_converted_string_tmp!=NULL)
- g_free(map_converted_string_tmp);
- map_converted_string_tmp=NULL;
- if(!this_ || !this_->meth.charset || !strcmp(this_->meth.charset, "utf-8"))
- return str;
- map_converted_string_tmp=g_convert(str, -1, "utf-8", this_->meth.charset, NULL, NULL, NULL);
- if(!map_converted_string_tmp) {
- dbg(lvl_error,"Error converting '%s' from %s to utf-8\n", str, this_->meth.charset);
- return str;
- }
- return map_converted_string_tmp;
-}
-
-/**
- * @brief Converts a string from a map
- *
- * @param this_ The map the string to be converted is from
- * @param str The string to be converted
- * @return The converted string. It has to be map_convert_free()d after use.
- */
-char *
-map_convert_string(struct map *this_, char *str)
-{
- return map_convert_dup(map_convert_string_tmp(this_,str));
-}
-
-
-char *
-map_convert_dup(char *str)
-{
- if(map_converted_string_tmp==str) {
- map_converted_string_tmp=NULL;
- return str;
- }
- return g_strdup(str);
-}
-
-/**
- * @brief Frees the memory allocated for a converted string
- *
- * @param str The string to be freed
- */
-void
-map_convert_free(char *str)
-{
- g_free(str);
-}
-
-/**
- * @brief Returns the projection of a map
- *
- * @param this_ The map to return the projection of
- * @return The projection of the map
- */
-enum projection
-map_projection(struct map *this_)
-{
- return this_->meth.pro;
-}
-
-/**
- * @brief Sets the projection of a map
- *
- * @param this_ The map to set the projection of
- * @param pro The projection to be set
- */
-void
-map_set_projection(struct map *this_, enum projection pro)
-{
- this_->meth.pro=pro;
-}
-
-/**
- * @brief Destroys an opened map
- *
- * @param m The map to be destroyed
- */
-
-void
-map_destroy(struct map *m)
-{
- if (!m)
- return;
- if (m->priv)
- m->meth.map_destroy(m->priv);
- attr_list_free(m->attrs);
- callback_list_destroy(m->attr_cbl);
- g_free(m);
-}
-
-/**
- * @brief Creates a new map rect
- *
- * This creates a new map rect, which can be used to retrieve items from a map. If
- * sel is a linked-list of selections, all of them will be used. If you pass NULL as
- * sel, this means "get me the whole map".
- *
- * @param m The map to build the rect on
- * @param sel Map selection to choose the rectangle - may be NULL, see description
- * @return A new map rect
- */
-struct map_rect *
-map_rect_new(struct map *m, struct map_selection *sel)
-{
- struct map_rect *mr;
-
-#if 0
- printf("map_rect_new 0x%x,0x%x-0x%x,0x%x\n", r->lu.x, r->lu.y, r->rl.x, r->rl.y);
-#endif
- mr=g_new0(struct map_rect, 1);
- mr->m=m;
- mr->priv=m->meth.map_rect_new(m->priv, sel);
- if (! mr->priv) {
- g_free(mr);
- mr=NULL;
- }
-
- return mr;
-}
-
-/**
- * @brief Gets the next item from a map rect
- *
- * Returns an item from a map rect and advances the "item pointer" one step further,
- * so that at the next call the next item is returned. Returns NULL if there are no more items.
- *
- * @param mr The map rect to return an item from
- * @return An item from the map rect
- */
-struct item *
-map_rect_get_item(struct map_rect *mr)
-{
- struct item *ret;
- dbg_assert(mr != NULL);
- dbg_assert(mr->m != NULL);
- dbg_assert(mr->m->meth.map_rect_get_item != NULL);
- ret=mr->m->meth.map_rect_get_item(mr->priv);
- if (ret)
- ret->map=mr->m;
- return ret;
-}
-
-/**
- * @brief Returns the item specified by the ID
- *
- * @param mr The map rect to search for the item
- * @param id_hi High part of the ID to be found
- * @param id_lo Low part of the ID to be found
- * @return The item with the specified ID or NULL if not found
- */
-struct item *
-map_rect_get_item_byid(struct map_rect *mr, int id_hi, int id_lo)
-{
- struct item *ret=NULL;
- dbg_assert(mr != NULL);
- dbg_assert(mr->m != NULL);
- if (mr->m->meth.map_rect_get_item_byid)
- ret=mr->m->meth.map_rect_get_item_byid(mr->priv, id_hi, id_lo);
- if (ret)
- ret->map=mr->m;
- return ret;
-}
-
-/**
- * @brief Destroys a map rect
- *
- * @param mr The map rect to be destroyed
- */
-void
-map_rect_destroy(struct map_rect *mr)
-{
- if (mr) {
- mr->m->meth.map_rect_destroy(mr->priv);
- g_free(mr);
- }
-}
-
-/**
- * @brief Holds information about a search on a map
- *
- * This structure holds information about a search performed on a map. This can be
- * used as "handle" to retrieve items from a search.
- */
-struct map_search {
- struct map *m;
- struct attr search_attr;
- void *priv;
-};
-
-/**
- * @brief Starts a search on a map
- *
- * This function starts a search on a map. What attributes one can search for depends on the
- * map plugin.
- *
- * The OSM/binfile plugin currently supports: attr_town_name, attr_street_name
- * The MG plugin currently supports: ttr_town_postal, attr_town_name, attr_street_name
- *
- * If you enable partial matches bear in mind that the search matches only the begin of the
- * strings - a search for a street named "street" would match to "streetfoo", but not to
- * "somestreet". Search is case insensitive.
- *
- * The item passed to this function specifies a "superior item" to "search within" - e.g. a town
- * in which we want to search for a street, or a country in which to search for a town.
- *
- * Please also note that the search for countries is not handled by map plugins but by navit internally -
- * have a look into country.c for details. Because of that every map plugin has to accept a country item
- * to be passed as "superior item".
- *
- * Note: If you change something here, please make sure to also update the documentation of mapset_search_new()
- * in mapset.c!
- *
- * @param m The map that should be searched
- * @param item Specifies a superior item to "search within" (see description)
- * @param search_attr Attribute specifying what to search for. See description.
- * @param partial Set this to true to also have partial matches. See description.
- * @return A new map search struct for this search
- */
-struct map_search *
-map_search_new(struct map *m, struct item *item, struct attr *search_attr, int partial)
-{
- struct map_search *this_;
- dbg(lvl_debug,"enter(%p,%p,%p,%d)\n", m, item, search_attr, partial);
- dbg(lvl_debug,"0x%x 0x%x 0x%x\n", attr_country_all, search_attr->type, attr_country_name);
- this_=g_new0(struct map_search,1);
- this_->m=m;
- this_->search_attr=*search_attr;
- if ((search_attr->type >= attr_country_all && search_attr->type <= attr_country_name) || search_attr->type == attr_country_id)
- this_->priv=country_search_new(&this_->search_attr, partial);
- else {
- if (m->meth.map_search_new) {
- if (m->meth.charset)
- this_->search_attr.u.str=g_convert(this_->search_attr.u.str, -1,m->meth.charset,"utf-8",NULL,NULL,NULL);
- this_->priv=m->meth.map_search_new(m->priv, item, &this_->search_attr, partial);
- if (! this_->priv) {
- g_free(this_);
- this_=NULL;
- }
- } else {
- g_free(this_);
- this_=NULL;
- }
- }
- return this_;
-}
-
-/**
- * @brief Returns an item from a map search
- *
- * This returns an item of the result of a search on a map and advances the "item pointer" one step,
- * so that at the next call the next item will be returned. If there are no more items in the result
- * NULL is returned.
- *
- * @param this_ Map search struct of the search
- * @return One item of the result
- */
-struct item *
-map_search_get_item(struct map_search *this_)
-{
- struct item *ret;
-
- if (! this_)
- return NULL;
- if ((this_->search_attr.type >= attr_country_all && this_->search_attr.type <= attr_country_name) || this_->search_attr.type == attr_country_id)
- return country_search_get_item(this_->priv);
- ret=this_->m->meth.map_search_get_item(this_->priv);
- if (ret)
- ret->map=this_->m;
- return ret;
-}
-
-/**
- * @brief Destroys a map search struct
- *
- * @param this_ The map search struct to be destroyed
- */
-void
-map_search_destroy(struct map_search *this_)
-{
- if (! this_)
- return;
- if (this_->search_attr.type >= attr_country_all && this_->search_attr.type <= attr_country_name)
- country_search_destroy(this_->priv);
- else {
- if (this_->m->meth.charset)
- g_free(this_->search_attr.u.str);
- this_->m->meth.map_search_destroy(this_->priv);
- }
- g_free(this_);
-}
-
-/**
- * @brief Creates a new rectangular map selection
- *
- * @param center Coordinates of the center of the new rectangle
- * @param distance Distance of the rectangle's borders from the center
- * @param order Desired order of the new selection
- * @return The new map selection
- */
-struct map_selection *
-map_selection_rect_new(struct pcoord *center, int distance, int order)
-{
- struct map_selection *ret=g_new0(struct map_selection, 1);
- ret->order=order;
- ret->range=item_range_all;
- ret->u.c_rect.lu.x=center->x-distance;
- ret->u.c_rect.lu.y=center->y+distance;
- ret->u.c_rect.rl.x=center->x+distance;
- ret->u.c_rect.rl.y=center->y-distance;
- return ret;
-}
-
-/**
- * @brief Duplicates a map selection, transforming coordinates
- *
- * This duplicates a map selection and at the same time transforms the internal
- * coordinates of the selection from one projection to another.
- *
- * @param sel The map selection to be duplicated
- * @param from The projection used for the selection at the moment
- * @param to The projection that should be used for the duplicated selection
- * @return A duplicated, transformed map selection
- */
-struct map_selection *
-map_selection_dup_pro(struct map_selection *sel, enum projection from, enum projection to)
-{
- struct map_selection *next,**last;
- struct map_selection *ret=NULL;
- last=&ret;
- while (sel) {
- next = g_new(struct map_selection, 1);
- *next=*sel;
- if (from != projection_none || to != projection_none) {
- transform_from_to(&sel->u.c_rect.lu, from, &next->u.c_rect.lu, to);
- transform_from_to(&sel->u.c_rect.rl, from, &next->u.c_rect.rl, to);
- }
- *last=next;
- last=&next->next;
- sel = sel->next;
- }
- return ret;
-}
-
-/**
- * @brief Duplicates a map selection
- *
- * @param sel The map selection to duplicate
- * @return The duplicated map selection
- */
-struct map_selection *
-map_selection_dup(struct map_selection *sel)
-{
- return map_selection_dup_pro(sel, projection_none, projection_none);
-}
-
-/**
- * @brief Destroys a map selection
- *
- * @param sel The map selection to be destroyed
- */
-void
-map_selection_destroy(struct map_selection *sel)
-{
- struct map_selection *next;
- while (sel) {
- next = sel->next;
- g_free(sel);
- sel = next;
- }
-}
-
-/**
- * @brief Checks if a selection contains a rectangle containing an item
- *
- * This function checks if a selection contains a rectangle which exactly contains
- * an item. The rectangle is automatically built around the given item.
- *
- * @param sel The selection to be checked
- * @param item The item that the rectangle should be built around
- * @return True if the rectangle is within the selection, false otherwise
- */
-int
-map_selection_contains_item_rect(struct map_selection *sel, struct item *item)
-{
- struct coord c;
- struct coord_rect r;
- int count=0;
- while (item_coord_get(item, &c, 1)) {
- if (! count) {
- r.lu=c;
- r.rl=c;
- } else
- coord_rect_extend(&r, &c);
- count++;
- }
- if (! count)
- return 0;
- return map_selection_contains_rect(sel, &r);
-
-}
-
-
-/**
- * @brief Checks if a selection contains a item range
- *
- * This function checks if a selection contains at least one of the items in range
- *
- * @param sel The selection to be checked
- * @param follow Whether the next pointer of the selection should be followed
- * @param ranges The item ranges to be checked
- * @count the number of elements in ranges
- * @return True if there is a match, false otherwise
- */
-
-int
-map_selection_contains_item_range(struct map_selection *sel, int follow, struct item_range *range, int count)
-{
- int i;
- if (! sel)
- return 1;
- while (sel) {
- for (i = 0 ; i < count ; i++) {
- if (item_range_intersects_range(&sel->range, &range[i]))
- return 1;
- }
- if (! follow)
- break;
- sel=sel->next;
- }
- return 0;
-}
-/**
- * @brief Checks if a selection contains a item
- *
- * This function checks if a selection contains a item type
- *
- * @param sel The selection to be checked
- * @param follow Whether the next pointer of the selection should be followed
- * @param item The item type to be checked
- * @return True if there is a match, false otherwise
- */
-
-int
-map_selection_contains_item(struct map_selection *sel, int follow, enum item_type type)
-{
- if (! sel)
- return 1;
- while (sel) {
- if (item_range_contains_item(&sel->range, type))
- return 1;
- if (! follow)
- break;
- sel=sel->next;
- }
- return 0;
-}
-
-
-
-/**
- * @brief Checks if a pointer points to the private data of a map
- *
- * @param map The map whose private data should be checked.
- * @param priv The private data that should be checked.
- * @return True if priv is the private data of map
- */
-int
-map_priv_is(struct map *map, struct map_priv *priv)
-{
- return (map->priv == priv);
-}
-
-void
-map_dump_filedesc(struct map *map, FILE *out)
-{
- struct map_rect *mr=map_rect_new(map, NULL);
- struct item *item;
-
- while ((item = map_rect_get_item(mr)))
- item_dump_filedesc(item, map, out);
- map_rect_destroy(mr);
-}
-
-void
-map_dump_file(struct map *map, const char *file)
-{
- FILE *f;
- f=fopen(file,"w");
- if (f) {
- map_dump_filedesc(map, f);
- fclose(f);
- } else
- dbg(lvl_error,"failed to open file '%s'\n",file);
-}
-
-void
-map_dump(struct map *map)
-{
- map_dump_filedesc(map, stdout);
-}
-
-struct item *
-map_rect_create_item(struct map_rect *mr, enum item_type type_)
-{
- if(mr && mr->priv && mr->m) {
- return mr->m->meth.map_rect_create_item(mr->priv, type_) ;
- }
- else {
- return NULL;
- }
-}
-
-struct object_func map_func = {
- attr_map,
- (object_func_new)map_new,
- (object_func_get_attr)map_get_attr,
- (object_func_iter_new)NULL,
- (object_func_iter_destroy)NULL,
- (object_func_set_attr)map_set_attr,
- (object_func_add_attr)NULL,
- (object_func_remove_attr)NULL,
- (object_func_init)NULL,
- (object_func_destroy)map_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
-
-
-
diff --git a/navit/map.h b/navit/map.h
deleted file mode 100644
index 305c26b96..000000000
--- a/navit/map.h
+++ /dev/null
@@ -1,283 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/** @file
- *
- * @brief Contains exported functions / structures for map.c
- *
- * This file contains code that works together with map.c and that is exported
- * to other modules.
- */
-
-#ifndef NAVIT_MAP_H
-#define NAVIT_MAP_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct map_priv;
-struct attr;
-#include "coord.h"
-#include "point.h"
-#include "layer.h"
-#include "debug.h"
-
-#define WORLD_BOUNDINGBOX_MIN_X -20000000
-#define WORLD_BOUNDINGBOX_MAX_X 20000000
-#define WORLD_BOUNDINGBOX_MIN_Y -20000000
-#define WORLD_BOUNDINGBOX_MAX_Y 20000000
-
-/**
- * @brief Used to select data from a map
- *
- * This struct is used to select data from a map. This one the one hand builds a
- * rectangle on the map and on the other hand selects an order for items of each
- * layer. Note that passing NULL instead of a pointer to such a struct often means
- * "get me everything".
- *
- * It's possible to link multiple selections in a linked list, see below.
- */
-struct map_selection {
- struct map_selection *next; /**< Linked-List pointer */
- union {
- struct coord_rect c_rect; /**< For building the rectangle based on coordinates */
- struct point_rect p_rect; /**< For building the rectangle based on points */
- } u;
- int order; /**< Holds the order */
- struct item_range range; /**< Range of items which should be delivered */
-};
-
-/**
- * @brief Holds all functions a map plugin has to implement to be useable
- *
- * This structure holds pointers to a map plugin's functions navit's core will call
- * to communicate with the plugin. For further information look into map.c - there exist
- * functions with the same names acting more or less as "wrappers" around the functions here.
- * Especially the arguments (and their meaning) of each function will be described there.
- */
-struct map_methods {
- enum projection pro; /**< The projection used for that type of map */
- char *charset; /**< The charset this map uses - e.g. "iso8859-1" or "utf-8". Please specify this in a form so that g_convert() can handle it. */
- void (*map_destroy)(struct map_priv *priv); /**< Function used to destroy ("close") a map. */
- struct map_rect_priv * (*map_rect_new)(struct map_priv *map, struct map_selection *sel); /**< Function to create a new map rect on the map. */
- void (*map_rect_destroy)(struct map_rect_priv *mr); /**< Function to destroy a map rect */
- struct item * (*map_rect_get_item)(struct map_rect_priv *mr); /**< Function to return the next item from a map rect */
- struct item * (*map_rect_get_item_byid)(struct map_rect_priv *mr, int id_hi, int id_lo); /**< Function to get an item with a specific ID from a map rect */
- struct map_search_priv *(*map_search_new)(struct map_priv *map, struct item *item, struct attr *search, int partial); /**< Function to start a new search on the map */
- void (*map_search_destroy)(struct map_search_priv *ms); /**< Function to destroy a map search struct */
- struct item * (*map_search_get_item)(struct map_search_priv *ms); /**< Function to get the next item of a search on the map */
- struct item * (*map_rect_create_item)(struct map_rect_priv *mr, enum item_type type); /**< Function to create a new item in the map */
- int (*map_get_attr)(struct map_priv *priv, enum attr_type type, struct attr *attr);
- int (*map_set_attr)(struct map_priv *priv, struct attr *attr);
-
-};
-
-/**
- * @brief Checks if a coordinate is within a map selection
- *
- * Checks if a coordinate is within a map selection. Note that since a selection of NULL
- * means "select everything", with sel = NULL this will always return true. If there are
- * more than one selection in a linked-list, it is sufficient if only one of the selections
- * contains the coordinate.
- *
- * @param sel The selection to check if the point is within
- * @param c Coordinate to check if it is within the selection
- * @return True if the coordinate is within one of the selections, False otherwise
- */
-static inline int
-map_selection_contains_point(struct map_selection *sel, struct coord *c)
-{
- struct map_selection *curr=sel;
- while (curr) {
- struct coord_rect *r=&curr->u.c_rect;
- if (c->x >= r->lu.x && c->x <= r->rl.x &&
- c->y <= r->lu.y && c->y >= r->rl.y)
- return 1;
- curr=curr->next;
- }
- return sel ? 0:1;
-}
-
-/**
- * @brief Checks if a polyline is within a map selection
- *
- * @sa Please refer to map_selection_contains_point()
- *
- * @param sel The selection to check if the polyline is within
- * @param c Coordinates of the polyline to check if it is within the selection
- * @param count Number of coordinates in c
- * @return True if the polyline is within one of the selections, False otherwise
- */
-static inline int
-map_selection_contains_polyline(struct map_selection *sel, struct coord *c, int count)
-{
- int i,x_mi,x_ma,y_mi,y_ma;
- struct map_selection *curr;
-
- if (! sel)
- return 1;
- for (i = 0 ; i < count-1 ; i++) {
- x_mi=c[i].x;
- if (c[i+1].x < x_mi)
- x_mi=c[i+1].x;
- x_ma=c[i].x;
- if (c[i+1].x > x_ma)
- x_ma=c[i+1].x;
- y_mi=c[i].y;
- if (c[i+1].y < y_mi)
- y_mi=c[i+1].y;
- y_ma=c[i].y;
- if (c[i+1].y > y_ma)
- y_ma=c[i+1].y;
- curr=sel;
- while (curr) {
- struct coord_rect *sr=&curr->u.c_rect;
- if (x_mi <= sr->rl.x && x_ma >= sr->lu.x &&
- y_ma >= sr->rl.y && y_mi <= sr->lu.y)
- return 1;
- curr=curr->next;
- }
- }
- return 0;
-}
-
-/**
- * @brief Checks if a rectangle is within a map selection
- *
- * @sa Please refer to map_selection_contains_point()
- *
- * @param sel The selection to check if the rectangle is within
- * @param r Rectangle to be checked for
- * @return True if the rectangle is within one of the selections, False otherwise
- */
-static inline int
-map_selection_contains_rect(struct map_selection *sel, struct coord_rect *r)
-{
- struct map_selection *curr;
-
- dbg_assert(r->lu.x <= r->rl.x);
- dbg_assert(r->lu.y >= r->rl.y);
-
- if (! sel)
- return 1;
- curr=sel;
- while (curr) {
- struct coord_rect *sr=&curr->u.c_rect;
- dbg_assert(sr->lu.x <= sr->rl.x);
- dbg_assert(sr->lu.y >= sr->rl.y);
- if (r->lu.x <= sr->rl.x && r->rl.x >= sr->lu.x &&
- r->lu.y >= sr->rl.y && r->rl.y <= sr->lu.y)
- return 1;
- curr=curr->next;
- }
- return 0;
-}
-
-
-/**
- * @brief Checks if a polygon is within a map selection
- *
- * @sa Please refer to map_selection_contains_point()
- *
- * @param sel The selection to check if the polygon is within
- * @param c Pointer to coordinates of the polygon
- * @param count Number of coordinates in c
- * @return True if the polygon is within one of the selections, False otherwise
- */
-static inline int
-map_selection_contains_polygon(struct map_selection *sel, struct coord *c, int count)
-{
- struct coord_rect r;
- int i;
-
- if (! sel)
- return 1;
- if (! count)
- return 0;
- r.lu=c[0];
- r.rl=c[0];
- for (i = 1 ; i < count ; i++) {
- if (c[i].x < r.lu.x)
- r.lu.x=c[i].x;
- if (c[i].x > r.rl.x)
- r.rl.x=c[i].x;
- if (c[i].y < r.rl.y)
- r.rl.y=c[i].y;
- if (c[i].y > r.lu.y)
- r.lu.y=c[i].y;
- }
- return map_selection_contains_rect(sel, &r);
-}
-
-/* prototypes */
-enum attr_type;
-enum projection;
-struct attr;
-struct attr_iter;
-struct callback;
-struct item;
-struct map;
-struct map_priv;
-struct map_rect;
-struct map_search;
-struct map_selection;
-struct pcoord;
-struct map *map_new(struct attr *parent, struct attr **attrs);
-struct map *map_ref(struct map* m);
-void map_unref(struct map* m);
-int map_get_attr(struct map *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int map_set_attr(struct map *this_, struct attr *attr);
-void map_add_callback(struct map *this_, struct callback *cb);
-void map_remove_callback(struct map *this_, struct callback *cb);
-int map_requires_conversion(struct map *this_);
-char *map_convert_string_tmp(struct map *this_, char *str);
-char *map_convert_string(struct map *this_, char *str);
-char *map_convert_dup(char *str);
-void map_convert_free(char *str);
-enum projection map_projection(struct map *this_);
-void map_set_projection(struct map *this_, enum projection pro);
-void map_destroy(struct map *m);
-struct map_rect *map_rect_new(struct map *m, struct map_selection *sel);
-struct item *map_rect_get_item(struct map_rect *mr);
-struct item *map_rect_get_item_byid(struct map_rect *mr, int id_hi, int id_lo);
-struct item *map_rect_create_item(struct map_rect *mr, enum item_type type_);
-void map_rect_destroy(struct map_rect *mr);
-struct map_search *map_search_new(struct map *m, struct item *item, struct attr *search_attr, int partial);
-struct item *map_search_get_item(struct map_search *this_);
-void map_search_destroy(struct map_search *this_);
-struct map_selection *map_selection_rect_new(struct pcoord *center, int distance, int order);
-struct map_selection *map_selection_dup_pro(struct map_selection *sel, enum projection from, enum projection to);
-struct map_selection *map_selection_dup(struct map_selection *sel);
-void map_selection_destroy(struct map_selection *sel);
-int map_selection_contains_item_rect(struct map_selection *sel, struct item *item);
-int map_selection_contains_item_range(struct map_selection *sel, int follow, struct item_range *range, int count);
-int map_selection_contains_item(struct map_selection *sel, int follow, enum item_type type);
-int map_priv_is(struct map *map, struct map_priv *priv);
-void map_dump_filedesc(struct map *map, FILE *out);
-void map_dump_file(struct map *map, const char *file);
-void map_dump(struct map *map);
-void map_destroy_do(struct map *m);
-struct maps * maps_new(struct attr *parent, struct attr **attrs);
-/* end of prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/navit/map/binfile/CMakeLists.txt b/navit/map/binfile/CMakeLists.txt
deleted file mode 100644
index 9b5a6cc96..000000000
--- a/navit/map/binfile/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(map_binfile binfile.c)
diff --git a/navit/map/binfile/binfile.c b/navit/map/binfile/binfile.c
deleted file mode 100644
index 9c6d9a2ef..000000000
--- a/navit/map/binfile/binfile.c
+++ /dev/null
@@ -1,2875 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include "config.h"
-#include "debug.h"
-#include "plugin.h"
-#include "projection.h"
-#include "item.h"
-#include "map.h"
-#include "maptype.h"
-#include "attr.h"
-#include "coord.h"
-#include "transform.h"
-#include "file.h"
-#include "zipfile.h"
-#include "linguistics.h"
-#include "endianess.h"
-#include "callback.h"
-#include "types.h"
-#include "geom.h"
-
-static int map_id;
-
-
-/**
- * @brief A map tile, a rectangular region of the world.
- *
- * Represents a "map tile", a rectangular region of the world. The
- * binfile format divides the world into tiles of different sizes for
- * easy handling.
- * A binfile is a ZIP archive; each member file (with the exception of
- * index files) represents one tile. The data from a tile file is read
- * into memory and used directly as the tile data of this struct.
- * <p>
- * See the Navit wiki for details on the binfile format:
- *
- * http://wiki.navit-project.org/index.php/Navit%27s_binary_map_driver
- * <p>
- * Note that this tile struct also maintains pointers to several current positions
- * inside the tile. These are not part of the actual tile data, but are
- * used for working with the data.
- */
-struct tile {
- int *start; //!< Memory address of the buffer containing the tile data (the actual map data).
- int *end; //!< First memory address not belonging to the tile data.
- /**< Thus tile->end - tile->start represents the size of the tile data
- * in multiples of 4 Bytes.
- */
- int *pos; //!< Pointer to current position (start of current item) inside the tile data.
- int *pos_coord_start; //!< Pointer to the first element inside the current item that is a coordinate.
- /**< That is the first position after the header of an
- * item. The header holds 3 entries each 32bit wide integers:
- * header[0] holds the size of the whole item (excluding this size field)
- * header[1] holds the type of the item
- * header[2] holds the size of the coordinates in the tile
- */
- int *pos_coord; //!< Current position in the coordinates region of the current item.
- int *pos_attr_start; //!< Pointer to the first attr data structure of the current item.
- int *pos_attr; //!< Current position in the attr region of the current item.
- int *pos_next; //!< Pointer to the next item (the item which follows the "current item" as indicated by *pos).
- struct file *fi; //!< The file from which this tile was loaded.
- int zipfile_num;
- int mode;
-};
-
-
-struct map_download {
- int state;
- struct map_priv *m;
- struct map_rect_priv *mr;
- struct file *http,*file;
- int zipfile,toffset,tlength,progress,read,dl_size;
- long long offset,start_offset,cd1offset,size;
- struct zip64_eoc *zip64_eoc;
- struct zip64_eocl *zip64_eocl;
- struct zip_eoc *zip_eoc;
- struct zip_cd *cd_copy,*cd;
-};
-
-/**
- * @brief Represents the map from a single binfile.
- *
- */
-struct map_priv {
- int id;
- char *filename; //!< Filename of the binfile.
- char *cachedir;
- struct file *fi,*http;
- struct file **fis;
- struct zip_cd *index_cd;
- int index_offset;
- int cde_size;
- struct zip_eoc *eoc;
- struct zip64_eoc *eoc64;
- int zip_members;
- unsigned char *search_data;
- int search_offset;
- int search_size;
- int version;
- int check_version;
- int map_version;
- GHashTable *changes;
- char *passwd;
- char *map_release;
- int flags;
- char *url;
- int update_available;
- char *progress;
- struct callback_list *cbl;
- struct map_download *download;
- int redirect;
- long download_enabled;
- int last_searched_town_id_hi;
- int last_searched_town_id_lo;
-};
-
-struct map_rect_priv {
- int *start;
- int *end;
- enum attr_type attr_last;
- int label;
- int *label_attr[5];
- struct map_selection *sel;
- struct map_priv *m;
- struct item item;
- int tile_depth;
- struct tile tiles[8];
- struct tile *t;
- int country_id;
- char *url;
- struct attr attrs[8];
- int status;
- struct map_search_priv *msp;
-#ifdef DEBUG_SIZE
- int size;
-#endif
-};
-
-/**
- * @brief Represents a search on a map.
- * This struct represents a search on a map; it is created
- * when starting a search, and is used for retrieving results.
- */
-struct map_search_priv {
- struct map_priv *map; /**< Map to search in. */
- struct map_rect_priv *mr; /**< Map rectangle to search inside. */
- struct map_rect_priv *mr_item;
- struct item *item;
- struct attr search; /**< Attribute specifying what to search for. */
- struct map_selection ms;
- GList *boundaries;
- int partial; /**< Find partial matches? */
- int mode;
- struct coord_rect rect_new;
- char *parent_name;
- GHashTable *search_results;
-};
-
-
-static void push_tile(struct map_rect_priv *mr, struct tile *t, int offset, int length);
-static void setup_pos(struct map_rect_priv *mr);
-static void map_binfile_close(struct map_priv *m);
-static int map_binfile_open(struct map_priv *m);
-static void map_binfile_destroy(struct map_priv *m);
-
-static void lfh_to_cpu(struct zip_lfh *lfh) {
- dbg_assert(lfh != NULL);
- if (lfh->ziplocsig != zip_lfh_sig) {
- lfh->ziplocsig = le32_to_cpu(lfh->ziplocsig);
- lfh->zipver = le16_to_cpu(lfh->zipver);
- lfh->zipgenfld = le16_to_cpu(lfh->zipgenfld);
- lfh->zipmthd = le16_to_cpu(lfh->zipmthd);
- lfh->ziptime = le16_to_cpu(lfh->ziptime);
- lfh->zipdate = le16_to_cpu(lfh->zipdate);
- lfh->zipcrc = le32_to_cpu(lfh->zipcrc);
- lfh->zipsize = le32_to_cpu(lfh->zipsize);
- lfh->zipuncmp = le32_to_cpu(lfh->zipuncmp);
- lfh->zipfnln = le16_to_cpu(lfh->zipfnln);
- lfh->zipxtraln = le16_to_cpu(lfh->zipxtraln);
- }
-}
-
-static void cd_to_cpu(struct zip_cd *zcd) {
- dbg_assert(zcd != NULL);
- if (zcd->zipcensig != zip_cd_sig) {
- zcd->zipcensig = le32_to_cpu(zcd->zipcensig);
- zcd->zipccrc = le32_to_cpu(zcd->zipccrc);
- zcd->zipcsiz = le32_to_cpu(zcd->zipcsiz);
- zcd->zipcunc = le32_to_cpu(zcd->zipcunc);
- zcd->zipcfnl = le16_to_cpu(zcd->zipcfnl);
- zcd->zipcxtl = le16_to_cpu(zcd->zipcxtl);
- zcd->zipccml = le16_to_cpu(zcd->zipccml);
- zcd->zipdsk = le16_to_cpu(zcd->zipdsk);
- zcd->zipint = le16_to_cpu(zcd->zipint);
- zcd->zipext = le32_to_cpu(zcd->zipext);
- zcd->zipofst = le32_to_cpu(zcd->zipofst);
- }
-}
-
-static void eoc_to_cpu(struct zip_eoc *eoc) {
- dbg_assert(eoc != NULL);
- if (eoc->zipesig != zip_eoc_sig) {
- eoc->zipesig = le32_to_cpu(eoc->zipesig);
- eoc->zipedsk = le16_to_cpu(eoc->zipedsk);
- eoc->zipecen = le16_to_cpu(eoc->zipecen);
- eoc->zipenum = le16_to_cpu(eoc->zipenum);
- eoc->zipecenn = le16_to_cpu(eoc->zipecenn);
- eoc->zipecsz = le32_to_cpu(eoc->zipecsz);
- eoc->zipeofst = le32_to_cpu(eoc->zipeofst);
- eoc->zipecoml = le16_to_cpu(eoc->zipecoml);
- }
-}
-
-static void binfile_check_version(struct map_priv *m);
-
-static struct zip_eoc *
-binfile_read_eoc(struct file *fi)
-{
- struct zip_eoc *eoc;
- eoc=(struct zip_eoc *)file_data_read(fi,fi->size-sizeof(struct zip_eoc), sizeof(struct zip_eoc));
- if (eoc) {
- eoc_to_cpu(eoc);
- dbg(lvl_debug,"sig 0x%x\n", eoc->zipesig);
- if (eoc->zipesig != zip_eoc_sig) {
- dbg(lvl_error,"map file %s: eoc signature check failed: 0x%x vs 0x%x\n", fi->name, eoc->zipesig,zip_eoc_sig);
- file_data_free(fi,(unsigned char *)eoc);
- eoc=NULL;
- }
- }
- return eoc;
-}
-
-static struct zip64_eoc *
-binfile_read_eoc64(struct file *fi)
-{
- struct zip64_eocl *eocl;
- struct zip64_eoc *eoc;
- eocl=(struct zip64_eocl *)file_data_read(fi,fi->size-sizeof(struct zip_eoc)-sizeof(struct zip64_eocl), sizeof(struct zip64_eocl));
- if (!eocl)
- return NULL;
- dbg(lvl_debug,"sig 0x%x\n", eocl->zip64lsig);
- if (eocl->zip64lsig != zip64_eocl_sig) {
- file_data_free(fi,(unsigned char *)eocl);
- dbg(lvl_warning,"map file %s: eocl wrong\n", fi->name);
- return NULL;
- }
- eoc=(struct zip64_eoc *)file_data_read(fi,eocl->zip64lofst, sizeof(struct zip64_eoc));
- if (eoc) {
- if (eoc->zip64esig != zip64_eoc_sig) {
- file_data_free(fi,(unsigned char *)eoc);
- dbg(lvl_warning,"map file %s: eoc wrong\n", fi->name);
- eoc=NULL;
- }
- dbg(lvl_debug,"eoc64 ok 0x"LONGLONG_HEX_FMT " 0x"LONGLONG_HEX_FMT "\n",eoc->zip64eofst,eoc->zip64ecsz);
- }
- file_data_free(fi,(unsigned char *)eocl);
- return eoc;
-}
-
-static int
-binfile_cd_extra(struct zip_cd *cd)
-{
- return cd->zipcfnl+cd->zipcxtl;
-}
-
-static struct zip_cd *
-binfile_read_cd(struct map_priv *m, int offset, int len)
-{
- struct zip_cd *cd;
- long long cdoffset=m->eoc64?m->eoc64->zip64eofst:m->eoc->zipeofst;
- if (len == -1) {
- cd=(struct zip_cd *)file_data_read(m->fi,cdoffset+offset, sizeof(*cd));
- cd_to_cpu(cd);
- len=binfile_cd_extra(cd);
- file_data_free(m->fi,(unsigned char *)cd);
- }
- cd=(struct zip_cd *)file_data_read(m->fi,cdoffset+offset, sizeof(*cd)+len);
- if (cd) {
- dbg(lvl_debug,"cd at "LONGLONG_FMT" %zu bytes\n",cdoffset+offset, sizeof(*cd)+len);
- cd_to_cpu(cd);
- dbg(lvl_debug,"sig 0x%x\n", cd->zipcensig);
- if (cd->zipcensig != zip_cd_sig) {
- file_data_free(m->fi,(unsigned char *)cd);
- cd=NULL;
- }
- }
- return cd;
-}
-
-/**
- * @brief Get the ZIP64 extra field data corresponding to a zip central
- * directory header.
- *
- * @param cd pointer to zip central directory structure
- * @return pointer to ZIP64 extra field, or NULL if not available
- */
-static struct zip_cd_ext *
-binfile_cd_ext(struct zip_cd *cd)
-{
- struct zip_cd_ext *ext;
- if (cd->zipofst != zip_size_64bit_placeholder)
- return NULL;
- if (cd->zipcxtl != sizeof(*ext))
- return NULL;
- ext=(struct zip_cd_ext *)((unsigned char *)cd+sizeof(*cd)+cd->zipcfnl);
- if (ext->tag != zip_extra_header_id_zip64 || ext->size != 8)
- return NULL;
- return ext;
-}
-
-/**
- * @param cd pointer to zip central directory structure
- * @return Offset of local file header in zip file.
- * Will use ZIP64 data if present.
- */
-static long long
-binfile_cd_offset(struct zip_cd *cd)
-{
- struct zip_cd_ext *ext=binfile_cd_ext(cd);
- if (ext)
- return ext->zipofst;
- else
- return cd->zipofst;
-}
-
-static struct zip_lfh *
-binfile_read_lfh(struct file *fi, long long offset)
-{
- struct zip_lfh *lfh;
-
- lfh=(struct zip_lfh *)(file_data_read(fi,offset,sizeof(struct zip_lfh)));
- if (lfh) {
- lfh_to_cpu(lfh);
- if (lfh->ziplocsig != zip_lfh_sig) {
- file_data_free(fi,(unsigned char *)lfh);
- lfh=NULL;
- }
- }
- return lfh;
-}
-
-static unsigned char *
-binfile_read_content(struct map_priv *m, struct file *fi, long long offset, struct zip_lfh *lfh)
-{
- struct zip_enc *enc;
- unsigned char *ret=NULL;
-
- offset+=sizeof(struct zip_lfh)+lfh->zipfnln;
- switch (lfh->zipmthd) {
- case 0:
- offset+=lfh->zipxtraln;
- ret=file_data_read(fi,offset, lfh->zipuncmp);
- break;
- case 8:
- offset+=lfh->zipxtraln;
- ret=file_data_read_compressed(fi,offset, lfh->zipsize, lfh->zipuncmp);
- break;
- case 99:
- if (!m->passwd)
- break;
- enc=(struct zip_enc *)file_data_read(fi, offset, sizeof(*enc));
- offset+=lfh->zipxtraln;
- switch (enc->compress_method) {
- case 0:
- ret=file_data_read_encrypted(fi, offset, lfh->zipsize, lfh->zipuncmp, 0, m->passwd);
- break;
- case 8:
- ret=file_data_read_encrypted(fi, offset, lfh->zipsize, lfh->zipuncmp, 1, m->passwd);
- break;
- default:
- dbg(lvl_error,"map file %s: unknown encrypted compression method %d\n", fi->name, enc->compress_method);
- }
- file_data_free(fi, (unsigned char *)enc);
- break;
- default:
- dbg(lvl_error,"map file %s: unknown compression method %d\n", fi->name, lfh->zipmthd);
- }
- return ret;
-}
-
-static int
-binfile_search_cd(struct map_priv *m, int offset, char *name, int partial, int skip)
-{
- int size=4096;
- int end=m->eoc64?m->eoc64->zip64ecsz:m->eoc->zipecsz;
- int len=strlen(name);
- long long cdoffset=m->eoc64?m->eoc64->zip64eofst:m->eoc->zipeofst;
- struct zip_cd *cd;
-#if 0
- dbg(lvl_debug,"end=%d\n",end);
-#endif
- while (offset < end) {
- cd=(struct zip_cd *)(m->search_data+offset-m->search_offset);
- if (! m->search_data ||
- m->search_offset > offset ||
- offset-m->search_offset+sizeof(*cd) > m->search_size ||
- offset-m->search_offset+sizeof(*cd)+cd->zipcfnl+cd->zipcxtl > m->search_size
- ) {
-#if 0
- dbg(lvl_debug,"reload %p %d %d\n", m->search_data, m->search_offset, offset);
-#endif
- if (m->search_data)
- file_data_free(m->fi,m->search_data);
- m->search_offset=offset;
- m->search_size=end-offset;
- if (m->search_size > size)
- m->search_size=size;
- m->search_data=file_data_read(m->fi,cdoffset+m->search_offset,m->search_size);
- cd=(struct zip_cd *)m->search_data;
- }
-#if 0
- dbg(lvl_debug,"offset=%d search_offset=%d search_size=%d search_data=%p cd=%p\n", offset, m->search_offset, m->search_size, m->search_data, cd);
- dbg(lvl_debug,"offset=%d fn='%s'\n",offset,cd->zipcfn);
-#endif
- if (!skip &&
- (partial || cd->zipcfnl == len) &&
- !strncmp(cd->zipcfn, name, len))
- return offset;
- skip=0;
- offset+=sizeof(*cd)+cd->zipcfnl+cd->zipcxtl+cd->zipccml;
-;
- }
- return -1;
-}
-
-static void
-map_destroy_binfile(struct map_priv *m)
-{
- dbg(lvl_debug,"map_destroy_binfile\n");
- if (m->fi)
- map_binfile_close(m);
- map_binfile_destroy(m);
-}
-
-static void
-binfile_coord_rewind(void *priv_data)
-{
- struct map_rect_priv *mr=priv_data;
- struct tile *t=mr->t;
- t->pos_coord=t->pos_coord_start;
-}
-
-static inline int
-binfile_coord_left(void *priv_data)
-{
- struct map_rect_priv *mr=priv_data;
- struct tile *t=mr->t;
- return (t->pos_attr_start-t->pos_coord)/2;
-}
-
-static int
-binfile_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *mr=priv_data;
- struct tile *t=mr->t;
- int max,ret=0;
- max=binfile_coord_left(priv_data);
- if (count > max)
- count=max;
-#if __BYTE_ORDER == __LITTLE_ENDIAN
- memcpy(c, t->pos_coord, count*sizeof(struct coord));
-#else
- {
- int i=0,end=count*sizeof(struct coord)/sizeof(int);
- int *src=(int *)t->pos_coord;
- int *dst=(int *)c;
- while (i++ < end) {
- *dst++=le32_to_cpu(*src);
- src++;
- }
- }
-#endif
- t->pos_coord+=count*2;
- ret=count;
- return ret;
-}
-
-/**
- * @brief
- * @param
- * @return
- */
-static void
-binfile_attr_rewind(void *priv_data)
-{
- struct map_rect_priv *mr=priv_data;
- struct tile *t=mr->t;
- t->pos_attr=t->pos_attr_start;
- mr->label=0;
- memset(mr->label_attr, 0, sizeof(mr->label_attr));
-
-}
-
-static char *
-binfile_extract(struct map_priv *m, char *dir, char *filename, int partial)
-{
- char *full,*fulld,*sep;
- unsigned char *start;
- int len,offset=m->index_offset;
- struct zip_cd *cd;
- struct zip_lfh *lfh;
- FILE *f;
-
- for (;;) {
- offset=binfile_search_cd(m, offset, filename, partial, 1);
- if (offset == -1)
- break;
- cd=binfile_read_cd(m, offset, -1);
- len=strlen(dir)+1+cd->zipcfnl+1;
- full=g_malloc(len);
- strcpy(full,dir);
- strcpy(full+strlen(full),"/");
- strncpy(full+strlen(full),cd->zipcfn,cd->zipcfnl);
- full[len-1]='\0';
- fulld=g_strdup(full);
- sep=strrchr(fulld, '/');
- if (sep) {
- *sep='\0';
- file_mkdir(fulld, 1);
- }
- if (full[len-2] != '/') {
- lfh=binfile_read_lfh(m->fi, binfile_cd_offset(cd));
- start=binfile_read_content(m, m->fi, binfile_cd_offset(cd), lfh);
- dbg(lvl_debug,"fopen '%s'\n", full);
- f=fopen(full,"w");
- fwrite(start, lfh->zipuncmp, 1, f);
- fclose(f);
- file_data_free(m->fi, start);
- file_data_free(m->fi, (unsigned char *)lfh);
- }
- file_data_free(m->fi, (unsigned char *)cd);
- g_free(fulld);
- g_free(full);
- if (! partial)
- break;
- }
-
- return g_strdup_printf("%s/%s",dir,filename);
-}
-
-static int
-binfile_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *mr=priv_data;
- struct tile *t=mr->t;
- enum attr_type type;
- int i,size;
-
- if (attr_type != mr->attr_last) {
- t->pos_attr=t->pos_attr_start;
- mr->attr_last=attr_type;
- }
- while (t->pos_attr < t->pos_next) {
- size=le32_to_cpu(*(t->pos_attr++));
- type=le32_to_cpu(t->pos_attr[0]);
- if (type == attr_label)
- mr->label=1;
- if (type == attr_house_number)
- mr->label_attr[0]=t->pos_attr;
- if (type == attr_street_name)
- mr->label_attr[1]=t->pos_attr;
- if (type == attr_street_name_systematic)
- mr->label_attr[2]=t->pos_attr;
- if (type == attr_district_name && mr->item.type < type_line)
- mr->label_attr[3]=t->pos_attr;
- if (type == attr_town_name && mr->item.type < type_line)
- mr->label_attr[4]=t->pos_attr;
- if (type == attr_type || attr_type == attr_any) {
- if (attr_type == attr_any) {
- dbg(lvl_debug,"pos %p attr %s size %d\n", t->pos_attr-1, attr_to_name(type), size);
- }
- attr->type=type;
- if (ATTR_IS_GROUP(type)) {
- int i=0;
- int *subpos=t->pos_attr+1;
- int size_rem=size-1;
- i=0;
- while (size_rem > 0 && i < 7) {
- int subsize=le32_to_cpu(*subpos++);
- int subtype=le32_to_cpu(subpos[0]);
- mr->attrs[i].type=subtype;
- attr_data_set_le(&mr->attrs[i], subpos+1);
- subpos+=subsize;
- size_rem-=subsize+1;
- i++;
- }
- mr->attrs[i].type=type_none;
- mr->attrs[i].u.data=NULL;
- attr->u.attrs=mr->attrs;
- } else {
- attr_data_set_le(attr, t->pos_attr+1);
- if (type == attr_url_local) {
- g_free(mr->url);
- mr->url=binfile_extract(mr->m, mr->m->cachedir, attr->u.str, 1);
- attr->u.str=mr->url;
- }
- if (type == attr_flags && mr->m->map_version < 1)
- attr->u.num |= AF_CAR;
- }
- t->pos_attr+=size;
- return 1;
- } else {
- t->pos_attr+=size;
- }
- }
- if (!mr->label && (attr_type == attr_any || attr_type == attr_label)) {
- for (i = 0 ; i < sizeof(mr->label_attr)/sizeof(int *) ; i++) {
- if (mr->label_attr[i]) {
- mr->label=1;
- attr->type=attr_label;
- attr_data_set_le(attr,mr->label_attr[i]+1);
- return 1;
- }
- }
- }
- return 0;
-}
-
-struct binfile_hash_entry {
- struct item_id id;
- int flags;
- int data[0];
-};
-
-static guint
-binfile_hash_entry_hash(gconstpointer key)
-{
- const struct binfile_hash_entry *entry=key;
- return (entry->id.id_hi ^ entry->id.id_lo);
-}
-
-static gboolean
-binfile_hash_entry_equal(gconstpointer a, gconstpointer b)
-{
- const struct binfile_hash_entry *entry1=a,*entry2=b;
- return (entry1->id.id_hi==entry2->id.id_hi && entry1->id.id_lo == entry2->id.id_lo);
-}
-
-static int *
-binfile_item_dup(struct map_priv *m, struct item *item, struct tile *t, int extend)
-{
- int size=le32_to_cpu(t->pos[0]);
- struct binfile_hash_entry *entry=g_malloc(sizeof(struct binfile_hash_entry)+(size+1+extend)*sizeof(int));
- void *ret=entry->data;
- entry->id.id_hi=item->id_hi;
- entry->id.id_lo=item->id_lo;
- entry->flags=1;
- dbg(lvl_debug,"id 0x%x,0x%x\n",entry->id.id_hi,entry->id.id_lo);
-
- memcpy(ret, t->pos, (size+1)*sizeof(int));
- if (!m->changes)
- m->changes=g_hash_table_new_full(binfile_hash_entry_hash, binfile_hash_entry_equal, g_free, NULL);
- g_hash_table_replace(m->changes, entry, entry);
- dbg(lvl_debug,"ret %p\n",ret);
- return ret;
-}
-
-static int
-binfile_coord_set(void *priv_data, struct coord *c, int count, enum change_mode mode)
-{
- struct map_rect_priv *mr=priv_data;
- struct tile *t=mr->t,*tn,new;
- int i,delta,move_len;
- int write_offset,move_offset,aoffset,coffset,clen;
- int *data;
-
- {
- int *i=t->pos,j=0;
- dbg(lvl_debug,"Before: pos_coord=%td\n",t->pos_coord-i);
- while (i < t->pos_next)
- dbg(lvl_debug,"%d:0x%x\n",j++,*i++);
-
- }
- aoffset=t->pos_attr-t->pos_attr_start;
- coffset=t->pos_coord-t->pos_coord_start-2;
- clen=t->pos_attr_start-t->pos_coord+2;
- dbg(lvl_debug,"coffset=%d clen=%d\n",coffset,clen);
- switch (mode) {
- case change_mode_delete:
- if (count*2 > clen)
- count=clen/2;
- delta=-count*2;
- move_offset=coffset+count*2;
- move_len=t->pos_next-t->pos_coord_start-move_offset;
- write_offset=0;
- break;
- case change_mode_modify:
- write_offset=coffset;
- if (count*2 > clen) {
- delta=count*2-clen;
- move_offset=t->pos_attr_start-t->pos_coord_start;
- move_len=t->pos_next-t->pos_coord_start-move_offset;
- } else {
- move_len=0;
- move_offset=0;
- delta=0;
- }
- break;
- case change_mode_prepend:
- delta=count*2;
- move_offset=coffset-2;
- move_len=t->pos_next-t->pos_coord_start-move_offset;
- write_offset=coffset-2;
- break;
- case change_mode_append:
- delta=count*2;
- move_offset=coffset;
- move_len=t->pos_next-t->pos_coord_start-move_offset;
- write_offset=coffset;
- break;
- default:
- return 0;
- }
- dbg(lvl_debug,"delta %d\n",delta);
- data=binfile_item_dup(mr->m, &mr->item, t, delta > 0 ? delta:0);
- data[0]=cpu_to_le32(le32_to_cpu(data[0])+delta);
- data[2]=cpu_to_le32(le32_to_cpu(data[2])+delta);
- new.pos=new.start=data;
- new.zipfile_num=t->zipfile_num;
- new.mode=2;
- push_tile(mr, &new, 0, 0);
- setup_pos(mr);
- tn=mr->t;
- tn->pos_coord=tn->pos_coord_start+coffset;
- tn->pos_attr=tn->pos_attr_start+aoffset;
- dbg(lvl_debug,"moving %d ints from offset %td to %td\n",move_len,tn->pos_coord_start+move_offset-data,tn->pos_coord_start+move_offset+delta-data);
- memmove(tn->pos_coord_start+move_offset+delta, tn->pos_coord_start+move_offset, move_len*4);
- {
- int *i=tn->pos,j=0;
- dbg(lvl_debug,"After move: pos_coord=%td\n",tn->pos_coord-i);
- while (i < tn->pos_next)
- dbg(lvl_debug,"%d:0x%x\n",j++,*i++);
- }
- if (mode != change_mode_append)
- tn->pos_coord+=move_offset;
- if (mode != change_mode_delete) {
- dbg(lvl_debug,"writing %d ints at offset %td\n",count*2,write_offset+tn->pos_coord_start-data);
- for (i = 0 ; i < count ; i++) {
- tn->pos_coord_start[write_offset++]=c[i].x;
- tn->pos_coord_start[write_offset++]=c[i].y;
- }
-
- }
- {
- int *i=tn->pos,j=0;
- dbg(lvl_debug,"After: pos_coord=%td\n",tn->pos_coord-i);
- while (i < tn->pos_next)
- dbg(lvl_debug,"%d:0x%x\n",j++,*i++);
- }
- return 1;
-}
-
-static int
-binfile_attr_set(void *priv_data, struct attr *attr, enum change_mode mode)
-{
- struct map_rect_priv *mr=priv_data;
- struct tile *t=mr->t,*tn,new;
- int offset,delta,move_len;
- int write_offset,move_offset,naoffset,coffset,oattr_len;
- int nattr_size,nattr_len,pad;
- int *data;
-
- {
- int *i=t->pos,j=0;
- dbg(lvl_debug,"Before: pos_attr=%td\n",t->pos_attr-i);
- while (i < t->pos_next)
- dbg(lvl_debug,"%d:0x%x\n",j++,*i++);
-
- }
-
- write_offset=0;
- naoffset=t->pos_attr-t->pos_attr_start;
- coffset=t->pos_coord-t->pos_coord_start;
- offset=0;
- oattr_len=0;
- if (!naoffset) {
- if (mode == change_mode_delete || mode == change_mode_modify) {
- dbg(lvl_error,"no attribute selected\n");
- return 0;
- }
- if (mode == change_mode_append)
- naoffset=t->pos_next-t->pos_attr_start;
- }
- while (offset < naoffset) {
- oattr_len=le32_to_cpu(t->pos_attr_start[offset])+1;
- dbg(lvl_debug,"len %d\n",oattr_len);
- write_offset=offset;
- offset+=oattr_len;
- }
- move_len=t->pos_next-t->pos_attr_start-offset;
- move_offset=offset;
- switch (mode) {
- case change_mode_delete:
- nattr_size=0;
- nattr_len=0;
- pad=0;
- break;
- case change_mode_modify:
- case change_mode_prepend:
- case change_mode_append:
- nattr_size=attr_data_size(attr);
- pad=(4-(nattr_size%4))%4;
- nattr_len=(nattr_size+pad)/4+2;
- if (mode == change_mode_prepend) {
- move_offset=write_offset;
- move_len+=oattr_len;
- }
- if (mode == change_mode_append) {
- write_offset=move_offset;
- }
- break;
- default:
- return 0;
- }
- if (mode == change_mode_delete || mode == change_mode_modify)
- delta=nattr_len-oattr_len;
- else
- delta=nattr_len;
- dbg(lvl_debug,"delta %d oattr_len %d nattr_len %d\n",delta,oattr_len, nattr_len);
- data=binfile_item_dup(mr->m, &mr->item, t, delta > 0 ? delta:0);
- data[0]=cpu_to_le32(le32_to_cpu(data[0])+delta);
- new.pos=new.start=data;
- new.zipfile_num=t->zipfile_num;
- new.mode=2;
- push_tile(mr, &new, 0, 0);
- setup_pos(mr);
- tn=mr->t;
- tn->pos_coord=tn->pos_coord_start+coffset;
- tn->pos_attr=tn->pos_attr_start+offset;
- dbg(lvl_debug,"attr start %td offset %d\n",tn->pos_attr_start-data,offset);
- dbg(lvl_debug,"moving %d ints from offset %td to %td\n",move_len,tn->pos_attr_start+move_offset-data,tn->pos_attr_start+move_offset+delta-data);
- memmove(tn->pos_attr_start+move_offset+delta, tn->pos_attr_start+move_offset, move_len*4);
- if (mode != change_mode_append)
- tn->pos_attr+=delta;
- {
- int *i=tn->pos,j=0;
- dbg(lvl_debug,"After move: pos_attr=%td\n",tn->pos_attr-i);
- while (i < tn->pos_next)
- dbg(lvl_debug,"%d:0x%x\n",j++,*i++);
- }
- if (nattr_len) {
- int *nattr=tn->pos_attr_start+write_offset;
- dbg(lvl_debug,"writing %d ints at %td\n",nattr_len,nattr-data);
- nattr[0]=cpu_to_le32(nattr_len-1);
- nattr[1]=cpu_to_le32(attr->type);
- memcpy(nattr+2, attr_data_get(attr), nattr_size);
- memset((unsigned char *)(nattr+2)+nattr_size, 0, pad);
- }
- {
- int *i=tn->pos,j=0;
- dbg(lvl_debug,"After: pos_attr=%td\n",tn->pos_attr-i);
- while (i < tn->pos_next)
- dbg(lvl_debug,"After: pos_attr=%td\n",tn->pos_attr-i);
- while (i < tn->pos_next)
- dbg(lvl_debug,"%d:0x%x\n",j++,*i++);
- }
- return 1;
-}
-
-static struct item_methods methods_binfile = {
- binfile_coord_rewind,
- binfile_coord_get,
- binfile_attr_rewind,
- binfile_attr_get,
- NULL,
- binfile_attr_set,
- binfile_coord_set,
-};
-
-static void
-push_tile(struct map_rect_priv *mr, struct tile *t, int offset, int length)
-{
- dbg_assert(mr->tile_depth < 8);
- mr->t=&mr->tiles[mr->tile_depth++];
- *(mr->t)=*t;
- mr->t->pos=mr->t->pos_next=mr->t->start+offset;
- if (length == -1)
- length=le32_to_cpu(mr->t->pos[0])+1;
- if (length > 0)
- mr->t->end=mr->t->pos+length;
-}
-
-static int
-pop_tile(struct map_rect_priv *mr)
-{
- if (mr->tile_depth <= 1)
- return 0;
- if (mr->t->mode < 2)
- file_data_free(mr->m->fi, (unsigned char *)(mr->t->start));
-#ifdef DEBUG_SIZE
-#if DEBUG_SIZE > 0
- dbg(lvl_debug,"leave %d\n",mr->t->zipfile_num);
-#endif
-#endif
- mr->t=&mr->tiles[--mr->tile_depth-1];
- return 1;
-}
-
-
-static int
-zipfile_to_tile(struct map_priv *m, struct zip_cd *cd, struct tile *t)
-{
- char buffer[1024];
- struct zip_lfh *lfh;
- char *zipfn;
- struct file *fi;
- dbg(lvl_debug,"enter %p %p %p\n", m, cd, t);
- dbg(lvl_debug,"cd->zipofst=0x"LONGLONG_HEX_FMT "\n", binfile_cd_offset(cd));
- t->start=NULL;
- t->mode=1;
- if (m->fis)
- fi=m->fis[cd->zipdsk];
- else
- fi=m->fi;
- lfh=binfile_read_lfh(fi, binfile_cd_offset(cd));
- zipfn=(char *)(file_data_read(fi,binfile_cd_offset(cd)+sizeof(struct zip_lfh), lfh->zipfnln));
- strncpy(buffer, zipfn, lfh->zipfnln);
- buffer[lfh->zipfnln]='\0';
- t->start=(int *)binfile_read_content(m, fi, binfile_cd_offset(cd), lfh);
- t->end=t->start+lfh->zipuncmp/4;
- t->fi=fi;
- file_data_free(fi, (unsigned char *)zipfn);
- file_data_free(fi, (unsigned char *)lfh);
- return t->start != NULL;
-}
-
-
-static int
-map_binfile_handle_redirect(struct map_priv *m)
-{
- char *location=file_http_header(m->http, "location");
- if (!location) {
- m->redirect=0;
- return 0;
- }
- if (m->redirect)
- return 0;
- m->redirect=1;
- dbg(lvl_debug,"redirected from %s to %s\n",m->url,location);
- g_free(m->url);
- m->url=g_strdup(location);
- file_destroy(m->http);
- m->http=NULL;
-
- return 1;
-}
-
-static int
-map_binfile_http_request(struct map_priv *m, struct attr **attrs)
-{
- if (!m->http) {
- m->http=file_create(NULL, attrs);
- } else {
- file_request(m->http, attrs);
- }
- return 1;
-}
-
-
-static long long
-map_binfile_download_size(struct map_priv *m)
-{
- struct attr url={attr_url};
- struct attr http_method={attr_http_method};
- struct attr persistent={attr_persistent};
- struct attr *attrs[4];
- int size_ret;
- long long ret;
- void *data;
-
- do {
- attrs[0]=&url;
- url.u.str=m->url;
- attrs[1]=&http_method;
- http_method.u.str="HEAD";
- persistent.u.num=1;
- attrs[2]=&persistent;
- attrs[3]=NULL;
-
- map_binfile_http_request(m, attrs);
- data=file_data_read_special(m->http, 0, &size_ret);
- g_free(data);
- if (size_ret < 0)
- return 0;
- } while (map_binfile_handle_redirect(m));
-
- ret=file_size(m->http);
- dbg(lvl_debug,"file size "LONGLONG_FMT"\n",ret);
- return ret;
-}
-
-
-static int
-map_binfile_http_close(struct map_priv *m)
-{
- if (m->http) {
- file_destroy(m->http);
- m->http=NULL;
- }
- return 1;
-}
-
-
-static struct file *
-map_binfile_http_range(struct map_priv *m, long long offset, int size)
-{
- struct attr *attrs[4];
- struct attr url={attr_url};
- struct attr http_header={attr_http_header};
- struct attr persistent={attr_persistent};
-
- persistent.u.num=1;
- attrs[0]=&url;
- attrs[1]=&http_header;
- attrs[2]=&persistent;
- attrs[3]=NULL;
-
- url.u.str=m->url;
- http_header.u.str=g_strdup_printf("Range: bytes="LONGLONG_FMT"-"LONGLONG_FMT,offset, offset+size-1);
- map_binfile_http_request(m, attrs);
- g_free(http_header.u.str);
- return m->http;
-}
-
-static unsigned char *
-map_binfile_download_range(struct map_priv *m, long long offset, int size)
-{
- unsigned char *ret;
- int size_ret;
- struct file *http=map_binfile_http_range(m, offset, size);
-
- ret=file_data_read_special(http, size, &size_ret);
- if (size_ret != size) {
- dbg(lvl_debug,"size %d vs %d\n",size,size_ret);
- g_free(ret);
- return NULL;
- }
- return ret;
-}
-
-static struct zip_cd *
-download_cd(struct map_download *download)
-{
- struct map_priv *m=download->m;
- struct zip64_eoc *zip64_eoc=(struct zip64_eoc *)file_data_read(m->fi, 0, sizeof(*zip64_eoc));
- struct zip_cd *cd=(struct zip_cd *)map_binfile_download_range(m, zip64_eoc->zip64eofst+download->zipfile*m->cde_size,m->cde_size);
- file_data_free(m->fi, (unsigned char *)zip64_eoc);
- dbg(lvl_debug,"needed cd, result %p\n",cd);
- return cd;
-}
-
-static int
-download_request(struct map_download *download)
-{
- struct attr url={attr_url};
- struct attr http_header={attr_http_header};
- struct attr persistent={attr_persistent};
- struct attr *attrs[4];
-
- if(!download->m->download_enabled)
- {
- dbg(lvl_error,"Tried downloading while it's not allowed\n");
- return 0;
- }
- attrs[0]=&url;
- persistent.u.num=1;
- attrs[1]=&persistent;
- attrs[2]=NULL;
- if (strchr(download->m->url,'?')) {
- url.u.str=g_strdup_printf("%smemberid=%d",download->m->url,download->zipfile);
- download->dl_size=-1;
- } else {
- long long offset=binfile_cd_offset(download->cd_copy);
- int size=download->cd_copy->zipcsiz+sizeof(struct zip_lfh)+download->cd_copy->zipcfnl;
- url.u.str=g_strdup(download->m->url);
- http_header.u.str=g_strdup_printf("Range: bytes="LONGLONG_FMT"-"LONGLONG_FMT,offset,offset+size-1);
- attrs[2]=&http_header;
- attrs[3]=NULL;
- download->dl_size=size;
- }
- dbg(lvl_debug,"encountered missing tile %d %s(%s), Downloading %d bytes at "LONGLONG_FMT"\n",download->zipfile, url.u.str,(char *)(download->cd_copy+1), download->dl_size, download->offset);
- map_binfile_http_request(download->m, attrs);
- g_free(url.u.str);
- download->http=download->m->http;
- return 1;
-}
-
-
-static int
-download_start(struct map_download *download)
-{
- long long offset;
- struct zip_eoc *eoc;
-
- if (!download->cd->zipcensig) {
- download->cd_copy=download_cd(download);
- } else {
- download->cd_copy=g_malloc(download->m->cde_size);
- memcpy(download->cd_copy, download->cd, download->m->cde_size);
- }
- file_data_remove(download->file, (unsigned char *)download->cd);
- download->cd=NULL;
- offset=file_size(download->file);
- offset-=sizeof(struct zip_eoc);
- eoc=(struct zip_eoc *)file_data_read(download->file, offset, sizeof(struct zip_eoc));
- download->zip_eoc=g_malloc(sizeof(struct zip_eoc));
- memcpy(download->zip_eoc, eoc, sizeof(struct zip_eoc));
- file_data_remove(download->file, (unsigned char *)eoc);
- download->start_offset=download->offset=offset;
- return download_request(download);
-}
-
-static int
-download_download(struct map_download *download)
-{
- int size=64*1024,size_ret;
- unsigned char *data;
- if (download->dl_size != -1 && size > download->dl_size)
- size=download->dl_size;
- if (!size)
- return 1;
- data=file_data_read_special(download->http, size, &size_ret);
- if (!download->read && download->m->http && map_binfile_handle_redirect(download->m)) {
- g_free(data);
- download_request(download);
- return 0;
- }
-
- dbg(lvl_debug,"got %d bytes writing at offset "LONGLONG_FMT"\n",size_ret,download->offset);
- if (size_ret <= 0) {
- g_free(data);
- return 1;
- }
- file_data_write(download->file, download->offset, size_ret, data);
- download->offset+=size_ret;
- download->read+=size_ret;
- download->dl_size-=size_ret;
- if (download->dl_size != -1)
- download->progress=download->read*100/(download->read+download->dl_size);
- return 0;
-}
-
-static int
-download_finish(struct map_download *download)
-{
- struct zip_lfh *lfh;
- char *lfh_filename;
- struct zip_cd_ext *ext;
- long long lfh_offset;
- file_data_write(download->file, download->offset, sizeof(struct zip_eoc), (void *)download->zip_eoc);
- lfh=(struct zip_lfh *)(file_data_read(download->file,download->start_offset, sizeof(struct zip_lfh)));
- ext=binfile_cd_ext(download->cd_copy);
- if (ext)
- ext->zipofst=download->start_offset;
- else
- download->cd_copy->zipofst=download->start_offset;
- download->cd_copy->zipcsiz=lfh->zipsize;
- download->cd_copy->zipcunc=lfh->zipuncmp;
- download->cd_copy->zipccrc=lfh->zipcrc;
- lfh_offset = binfile_cd_offset(download->cd_copy)+sizeof(struct zip_lfh);
- lfh_filename=(char *)file_data_read(download->file,lfh_offset,lfh->zipfnln);
- memcpy(download->cd_copy+1,lfh_filename,lfh->zipfnln);
- file_data_remove(download->file,(void *)lfh_filename);
- file_data_remove(download->file,(void *)lfh);
- file_data_write(download->file, download->m->eoc->zipeofst + download->zipfile*download->m->cde_size, binfile_cd_extra(download->cd_copy)+sizeof(struct zip_cd), (void *)download->cd_copy);
- file_data_flush(download->file, download->m->eoc->zipeofst + download->zipfile*download->m->cde_size, sizeof(struct zip_cd));
-
- g_free(download->cd_copy);
- download->cd=(struct zip_cd *)(file_data_read(download->file, download->m->eoc->zipeofst + download->zipfile*download->m->cde_size, download->m->cde_size));
- cd_to_cpu(download->cd);
- dbg(lvl_debug,"Offset %d\n",download->cd->zipofst);
- return 1;
-}
-
-static int
-download_planet_size(struct map_download *download)
-{
- download->size=map_binfile_download_size(download->m);
- dbg(lvl_debug,"Planet size "LONGLONG_FMT"\n",download->size);
- if (!download->size)
- return 0;
- return 1;
-}
-
-static int
-download_eoc(struct map_download *download)
-{
- download->zip64_eoc=(struct zip64_eoc *)map_binfile_download_range(download->m, download->size-98, 98);
- if (!download->zip64_eoc)
- return 0;
- download->zip64_eocl=(struct zip64_eocl *)(download->zip64_eoc+1);
- download->zip_eoc=(struct zip_eoc *)(download->zip64_eocl+1);
- if (download->zip64_eoc->zip64esig != zip64_eoc_sig || download->zip64_eocl->zip64lsig != zip64_eocl_sig || download->zip_eoc->zipesig != zip_eoc_sig)
- {
- dbg(lvl_error,"wrong signature on zip64_eoc downloaded from "LONGLONG_FMT"\n",download->size-98);
- g_free(download->zip64_eoc);
- return 0;
- }
- return 1;
-}
-
-static int
-download_directory_start(struct map_download *download)
-{
- download->http=map_binfile_http_range(download->m, download->zip64_eoc->zip64eofst, download->zip64_eoc->zip64ecsz);
- if (!download->http)
- return 0;
- return 1;
-}
-
-static int
-download_directory_do(struct map_download *download)
-{
- int count;
-
- for (count = 0 ; count < 100 ; count++) {
- int cd_xlen, size_ret;
- unsigned char *cd_data;
- struct zip_cd *cd;
- cd=(struct zip_cd *)file_data_read_special(download->http, sizeof(*cd), &size_ret);
- cd->zipcunc=0;
- dbg(lvl_debug,"size_ret=%d\n",size_ret);
- if (!size_ret)
- return 0;
- if (size_ret != sizeof(*cd) || cd->zipcensig != zip_cd_sig) {
- dbg(lvl_error,"error1 size=%d vs %zu\n",size_ret, sizeof(*cd));
- return 0;
- }
- file_data_write(download->file, download->offset, sizeof(*cd), (unsigned char *)cd);
- download->offset+=sizeof(*cd);
- cd_xlen=cd->zipcfnl+cd->zipcxtl;
- cd_data=file_data_read_special(download->http, cd_xlen, &size_ret);
- if (size_ret != cd_xlen) {
- dbg(lvl_error,"error2 size=%d vs %d\n",size_ret,cd_xlen);
- return 0;
- }
- file_data_write(download->file, download->offset, cd_xlen, cd_data);
- download->offset+=cd_xlen;
- g_free(cd);
- g_free(cd_data);
- }
- return 1;
-}
-
-static int
-download_directory_finish(struct map_download *download)
-{
- download->http=NULL;
- return 1;
-}
-
-static int
-download_initial_finish(struct map_download *download)
-{
- download->zip64_eoc->zip64eofst=download->cd1offset;
- download->zip64_eocl->zip64lofst=download->offset;
- download->zip_eoc->zipeofst=download->cd1offset;
-#if 0
- file_data_write(download->file, download->offset, sizeof(*download->zip64_eoc), (unsigned char *)download->zip64_eoc);
- download->offset+=sizeof(*download->zip64_eoc);
- file_data_write(download->file, download->offset, sizeof(*download->zip64_eocl), (unsigned char *)download->zip64_eocl);
- download->offset+=sizeof(*download->zip64_eocl);
-#endif
- file_data_write(download->file, download->offset, sizeof(*download->zip_eoc), (unsigned char *)download->zip_eoc);
- download->offset+=sizeof(*download->zip_eoc);
- g_free(download->zip64_eoc);
- download->zip64_eoc=NULL;
- return 1;
-}
-
-static void
-push_zipfile_tile_do(struct map_rect_priv *mr, struct zip_cd *cd, int zipfile, int offset, int length)
-
-{
- struct tile t;
- struct map_priv *m=mr->m;
- struct file *f=m->fi;
-
- dbg(lvl_debug,"enter %p %d\n", mr, zipfile);
-#ifdef DEBUG_SIZE
-#if DEBUG_SIZE > 0
- {
- char filename[cd->zipcfnl+1];
- memcpy(filename, cd+1, cd->zipcfnl);
- filename[cd->zipcfnl]='\0';
- dbg(lvl_debug,"enter %d (%s) %d\n",zipfile, filename, cd->zipcunc);
- }
-#endif
- mr->size+=cd->zipcunc;
-#endif
- t.zipfile_num=zipfile;
- if (zipfile_to_tile(m, cd, &t))
- push_tile(mr, &t, offset, length);
- file_data_free(f, (unsigned char *)cd);
-}
-
-
-static struct zip_cd *
-download(struct map_priv *m, struct map_rect_priv *mr, struct zip_cd *cd, int zipfile, int offset, int length, int async)
-{
- struct map_download *download;
-
- if(!m->download_enabled)
- return NULL;
-
- if (async == 2) {
- download=m->download;
- } else {
- download=g_new0(struct map_download, 1);
- if (mr) {
- download->m=m;
- download->mr=mr;
- download->file=m->fi;
- download->cd=cd;
- download->zipfile=zipfile;
- download->toffset=offset;
- download->tlength=length;
- download->state=1;
- } else {
- struct attr readwrite={attr_readwrite,{(void *)1}};
- struct attr create={attr_create,{(void *)1}};
- struct attr *attrs[3];
- attrs[0]=&readwrite;
- attrs[1]=&create;
- attrs[2]=NULL;
- download->file=file_create(m->filename,attrs);
- download->m=m;
- download->state=4;
- }
- }
- if (async == 1) {
- m->download=download;
- g_free(m->progress);
- if (download->mr)
- m->progress=g_strdup_printf("Download Tile %d 0%%",download->zipfile);
- else
- m->progress=g_strdup_printf("Download Map Information 0%%");
- callback_list_call_attr_0(m->cbl, attr_progress);
- return NULL;
- }
- for (;;) {
- dbg(lvl_debug,"state=%d\n",download->state);
- switch (download->state) {
- case 0:
- dbg(lvl_error,"error\n");
- break;
- case 1:
- if (download_start(download))
- download->state=2;
- else
- download->state=0;
- break;
- case 2:
- if (download_download(download))
- download->state=3;
- else {
- g_free(m->progress);
- m->progress=g_strdup_printf("Download Tile %d %d%%",download->zipfile,download->progress);
- callback_list_call_attr_0(m->cbl, attr_progress);
- }
- break;
- case 3:
- if (download_finish(download)) {
- struct zip_cd *ret;
- g_free(m->progress);
- m->progress=g_strdup_printf("Download Tile %d 100%%",download->zipfile);
- callback_list_call_attr_0(m->cbl, attr_progress);
- if (async) {
- push_zipfile_tile_do(download->mr, download->cd, download->zipfile, download->toffset, download->tlength);
- ret=NULL;
- } else
- ret=download->cd;
- g_free(m->progress);
- m->progress=NULL;
- g_free(download);
- if (async)
- m->download=NULL;
- return ret;
- } else
- download->state=0;
- break;
- case 4:
- if (download_planet_size(download))
- download->state=5;
- else
- download->state=0;
- break;
- case 5:
- g_free(m->progress);
- m->progress=g_strdup_printf("Download Map Information 50%%");
- callback_list_call_attr_0(m->cbl, attr_progress);
- if (download_eoc(download))
- download->state=6;
- else {
- dbg(lvl_error,"download of eoc failed\n");
- download->state=0;
- }
- break;
- case 6:
- g_free(m->progress);
- m->progress=g_strdup_printf("Download Map Information 100%%");
- callback_list_call_attr_0(m->cbl, attr_progress);
- if (download_directory_start(download))
- download->state=7;
- else
- download->state=0;
- break;
- case 7:
- g_free(m->progress);
- m->progress=g_strdup_printf("Download Map Directory %d%%",(int)(download->offset*100/download->zip64_eoc->zip64ecsz));
- callback_list_call_attr_0(m->cbl, attr_progress);
- if (!download_directory_do(download))
- download->state=8;
- break;
- case 8:
- if (download_directory_finish(download))
- download->state=9;
- else
- download->state=0;
- break;
- case 9:
- download_initial_finish(download);
- m->fi=download->file;
- g_free(m->progress);
- m->progress=NULL;
- g_free(download);
- if (async)
- m->download=NULL;
- map_binfile_open(m);
- break;
- }
- if (async)
- return NULL;
- }
-}
-
-static int
-push_zipfile_tile(struct map_rect_priv *mr, int zipfile, int offset, int length, int async)
-{
- struct map_priv *m=mr->m;
- struct file *f=m->fi;
- long long cdoffset=m->eoc64?m->eoc64->zip64eofst:m->eoc->zipeofst;
- struct zip_cd *cd=(struct zip_cd *)(file_data_read(f, cdoffset + zipfile*m->cde_size, m->cde_size));
- dbg(lvl_debug,"read from "LONGLONG_FMT" %d bytes\n",cdoffset + zipfile*m->cde_size, m->cde_size);
- cd_to_cpu(cd);
- if (!cd->zipcunc && m->url) {
- cd=download(m, mr, cd, zipfile, offset, length, async);
- if (!cd)
- return 1;
- }
- push_zipfile_tile_do(mr, cd, zipfile, offset, length);
- return 0;
-}
-
-static struct map_rect_priv *
-map_rect_new_binfile_int(struct map_priv *map, struct map_selection *sel)
-{
- struct map_rect_priv *mr;
-
- binfile_check_version(map);
- dbg(lvl_debug,"map_rect_new_binfile\n");
- if (!map->fi && !map->url)
- return NULL;
- map_binfile_http_close(map);
- mr=g_new0(struct map_rect_priv, 1);
- mr->m=map;
- mr->sel=sel;
- mr->item.id_hi=0;
- mr->item.id_lo=0;
- mr->item.meth=&methods_binfile;
- mr->item.priv_data=mr;
- return mr;
-}
-
-static void
-tile_bbox(char *tile, int len, struct coord_rect *r)
-{
- struct coord c;
- int overlap=1;
- int xo,yo;
- struct coord_rect world_bbox = {
- { WORLD_BOUNDINGBOX_MIN_X, WORLD_BOUNDINGBOX_MAX_Y}, /* left upper corner */
- { WORLD_BOUNDINGBOX_MAX_X, WORLD_BOUNDINGBOX_MIN_Y}, /* right lower corner */
- };
- *r=world_bbox;
- while (len) {
- c.x=(r->lu.x+r->rl.x)/2;
- c.y=(r->lu.y+r->rl.y)/2;
- xo=(r->rl.x-r->lu.x)*overlap/100;
- yo=(r->lu.y-r->rl.y)*overlap/100;
- switch (*tile) {
- case 'a':
- r->lu.x=c.x-xo;
- r->rl.y=c.y-yo;
- break;
- case 'b':
- r->rl.x=c.x+xo;
- r->rl.y=c.y-yo;
- break;
- case 'c':
- r->lu.x=c.x-xo;
- r->lu.y=c.y+yo;
- break;
- case 'd':
- r->rl.x=c.x+xo;
- r->lu.y=c.y+yo;
- break;
- default:
- return;
- }
- tile++;
- len--;
- }
-}
-
-static int
-map_download_selection_check(struct zip_cd *cd, struct map_selection *sel)
-{
- struct coord_rect cd_rect;
- if (cd->zipcunc)
- return 0;
- tile_bbox((char *)(cd+1), cd->zipcfnl, &cd_rect);
- while (sel) {
- if (coord_rect_overlap(&cd_rect, &sel->u.c_rect))
- return 1;
- sel=sel->next;
- }
- return 0;
-}
-
-static void
-map_download_selection(struct map_priv *m, struct map_rect_priv *mr, struct map_selection *sel)
-{
- int i;
- struct zip_cd *cd;
- for (i = 0 ; i < m->zip_members ; i++) {
- cd=binfile_read_cd(m, m->cde_size*i, -1);
- if (map_download_selection_check(cd, sel))
- download(m, mr, cd, i, 0, 0, 0);
- file_data_free(m->fi, (unsigned char *)cd);
- }
-}
-
-static struct map_rect_priv *
-map_rect_new_binfile(struct map_priv *map, struct map_selection *sel)
-{
- struct map_rect_priv *mr=map_rect_new_binfile_int(map, sel);
- struct tile t;
- dbg(lvl_debug,"zip_members=%d\n", map->zip_members);
- if (map->url && map->fi && sel && sel->order == 255) {
- map_download_selection(map, mr, sel);
- }
- if (map->eoc)
- mr->status=1;
- else {
- unsigned char *d;
- if (map->fi) {
- d=file_data_read(map->fi, 0, map->fi->size);
- t.start=(int *)d;
- t.end=(int *)(d+map->fi->size);
- t.fi=map->fi;
- t.zipfile_num=0;
- t.mode=0;
- push_tile(mr, &t, 0, 0);
- } else if (map->url && !map->download) {
- download(map, NULL, NULL, 0, 0, 0, 1);
- mr->status=1;
- }
- }
- return mr;
-}
-
-static void
-write_changes_do(gpointer key, gpointer value, gpointer user_data)
-{
- struct binfile_hash_entry *entry=key;
- FILE *out=user_data;
- if (entry->flags) {
- entry->flags=0;
- fwrite(entry, sizeof(*entry)+(le32_to_cpu(entry->data[0])+1)*4, 1, out);
- dbg(lvl_debug,"yes\n");
- }
-}
-
-static void
-write_changes(struct map_priv *m)
-{
- FILE *changes;
- char *changes_file;
- if (!m->changes)
- return;
- changes_file=g_strdup_printf("%s.log",m->filename);
- changes=fopen(changes_file,"ab");
- g_hash_table_foreach(m->changes, write_changes_do, changes);
- fclose(changes);
- g_free(changes_file);
-}
-
-static void
-load_changes(struct map_priv *m)
-{
- FILE *changes;
- char *changes_file;
- struct binfile_hash_entry entry,*e;
- int size;
- changes_file=g_strdup_printf("%s.log",m->filename);
- changes=fopen(changes_file,"rb");
- if (! changes) {
- g_free(changes_file);
- return;
- }
- m->changes=g_hash_table_new_full(binfile_hash_entry_hash, binfile_hash_entry_equal, g_free, NULL);
- while (fread(&entry, sizeof(entry), 1, changes) == 1) {
- if (fread(&size, sizeof(size), 1, changes) != 1)
- break;
- e=g_malloc(sizeof(struct binfile_hash_entry)+(le32_to_cpu(size)+1)*4);
- *e=entry;
- e->data[0]=size;
- if (fread(e->data+1, le32_to_cpu(size)*4, 1, changes) != 1)
- break;
- g_hash_table_replace(m->changes, e, e);
- }
- fclose(changes);
- g_free(changes_file);
-}
-
-
-static void
-map_rect_destroy_binfile(struct map_rect_priv *mr)
-{
- write_changes(mr->m);
- while (pop_tile(mr));
-#ifdef DEBUG_SIZE
- dbg(lvl_debug,"size=%d kb\n",mr->size/1024);
-#endif
- if (mr->tiles[0].fi && mr->tiles[0].start)
- file_data_free(mr->tiles[0].fi, (unsigned char *)(mr->tiles[0].start));
- g_free(mr->url);
- map_binfile_http_close(mr->m);
- g_free(mr);
-}
-
-static void
-setup_pos(struct map_rect_priv *mr)
-{
- int size,coord_size;
- struct tile *t=mr->t;
- size=le32_to_cpu(t->pos[0]);
- if (size > 1024*1024 || size < 0) {
- dbg(lvl_debug,"size=0x%x\n", size);
-#if 0
- fprintf(stderr,"offset=%d\n", (unsigned char *)(mr->pos)-mr->m->f->begin);
-#endif
- dbg(lvl_debug,"size error\n");
- }
- t->pos_next=t->pos+size+1;
- mr->item.type=le32_to_cpu(t->pos[1]);
- coord_size=le32_to_cpu(t->pos[2]);
- t->pos_coord_start=t->pos+3;
- t->pos_attr_start=t->pos_coord_start+coord_size;
-}
-
-static int
-selection_contains(struct map_selection *sel, struct coord_rect *r, struct range *mima)
-{
- int order;
- if (! sel)
- return 1;
- while (sel) {
- if (coord_rect_overlap(r, &sel->u.c_rect)) {
- order=sel->order;
- dbg(lvl_debug,"min %d max %d order %d\n", mima->min, mima->max, order);
- if (!mima->min && !mima->max)
- return 1;
- if (order >= mima->min && order <= mima->max)
- return 1;
- }
- sel=sel->next;
- }
- return 0;
-}
-
-static void
-map_parse_country_binfile(struct map_rect_priv *mr)
-{
- struct attr at;
-
- if (!binfile_attr_get(mr->item.priv_data, attr_country_id, &at))
- return;
-
- if( at.u.num != mr->country_id)
- return;
-
- if (!binfile_attr_get(mr->item.priv_data, attr_zipfile_ref, &at))
- return;
-
- if(mr->msp)
- {
- struct attr *search=&mr->msp->search;
- if(search->type==attr_town_name || search->type==attr_district_name || search->type==attr_town_or_district_name) {
- struct attr af, al;
- if(binfile_attr_get(mr->item.priv_data, attr_first_key, &af)) {
- if(linguistics_compare(af.u.str,search->u.str,linguistics_cmp_partial)>0) {
- dbg(lvl_debug,"Skipping index item with first_key='%s'\n", af.u.str);
- return;
- }
- }
- if(binfile_attr_get(mr->item.priv_data, attr_last_key, &al)) {
- if(linguistics_compare(al.u.str,search->u.str,linguistics_cmp_partial)<0) {
- dbg(lvl_debug,"Skipping index item with first_key='%s', last_key='%s'\n", af.u.str, al.u.str);
- return;
- }
- }
- }
- }
-
- push_zipfile_tile(mr, at.u.num, 0, 0, 0);
-}
-
-static int
-map_parse_submap(struct map_rect_priv *mr, int async)
-{
- struct coord_rect r;
- struct coord c[2];
- struct attr at;
- struct range mima;
- if (binfile_coord_get(mr->item.priv_data, c, 2) != 2)
- return 0;
- r.lu.x=c[0].x;
- r.lu.y=c[1].y;
- r.rl.x=c[1].x;
- r.rl.y=c[0].y;
- if (!binfile_attr_get(mr->item.priv_data, attr_order, &at))
- return 0;
-#if __BYTE_ORDER == __BIG_ENDIAN
- mima.min=le16_to_cpu(at.u.range.max);
- mima.max=le16_to_cpu(at.u.range.min);
-#else
- mima=at.u.range;
-#endif
- if (!mr->m->eoc || !selection_contains(mr->sel, &r, &mima))
- return 0;
- if (!binfile_attr_get(mr->item.priv_data, attr_zipfile_ref, &at))
- return 0;
- dbg(lvl_debug,"pushing zipfile %ld from %d\n", at.u.num, mr->t->zipfile_num);
- return push_zipfile_tile(mr, at.u.num, 0, 0, async);
-}
-
-static int
-push_modified_item(struct map_rect_priv *mr)
-{
- struct item_id id;
- struct binfile_hash_entry *entry;
- id.id_hi=mr->item.id_hi;
- id.id_lo=mr->item.id_lo;
- entry=g_hash_table_lookup(mr->m->changes, &id);
- if (entry) {
- struct tile tn;
- tn.pos_next=tn.pos=tn.start=entry->data;
- tn.zipfile_num=mr->item.id_hi;
- tn.mode=2;
- tn.end=tn.start+le32_to_cpu(entry->data[0])+1;
- push_tile(mr, &tn, 0, 0);
- return 1;
- }
- return 0;
-}
-
-static struct item *
-map_rect_get_item_binfile(struct map_rect_priv *mr)
-{
- struct tile *t;
- struct map_priv *m=mr->m;
- if (m->download) {
- download(m, NULL, NULL, 0, 0, 0, 2);
- return &busy_item;
- }
- if (mr->status == 1) {
- mr->status=0;
- if (push_zipfile_tile(mr, m->zip_members-1, 0, 0, 1))
- return &busy_item;
- }
- for (;;) {
- t=mr->t;
- if (! t)
- return NULL;
- t->pos=t->pos_next;
- if (t->pos >= t->end) {
- if (pop_tile(mr))
- continue;
- return NULL;
- }
- setup_pos(mr);
- binfile_coord_rewind(mr);
- binfile_attr_rewind(mr);
- if ((mr->item.type == type_submap) && (!mr->country_id)) {
- if (map_parse_submap(mr, 1))
- return &busy_item;
- continue;
- }
- if (t->mode != 2) {
- mr->item.id_hi=t->zipfile_num;
- mr->item.id_lo=t->pos-t->start;
- if (mr->m->changes && push_modified_item(mr))
- continue;
- }
- if (mr->country_id)
- {
- if (mr->item.type == type_countryindex) {
- map_parse_country_binfile(mr);
- }
- if (item_is_town(mr->item))
- {
- return &mr->item;
- } else {
- continue;
- }
- }
- return &mr->item;
- }
-}
-
-static struct item *
-map_rect_get_item_byid_binfile(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- struct tile *t;
- if (mr->m->eoc) {
- while (pop_tile(mr));
- push_zipfile_tile(mr, id_hi, 0, 0, 0);
- }
- t=mr->t;
- t->pos=t->start+id_lo;
- mr->item.id_hi=id_hi;
- mr->item.id_lo=id_lo;
- if (mr->m->changes)
- push_modified_item(mr);
- setup_pos(mr);
- binfile_coord_rewind(mr);
- binfile_attr_rewind(mr);
- return &mr->item;
-}
-
-static int
-binmap_search_by_index(struct map_priv *map, struct item *item, struct map_rect_priv **ret)
-{
- struct attr zipfile_ref;
- int *data;
-
- if (!item) {
- *ret=NULL;
- return 0;
- }
- if (item_attr_get(item, attr_item_id, &zipfile_ref)) {
- data=zipfile_ref.u.data;
- *ret=map_rect_new_binfile_int(map, NULL);
- push_zipfile_tile(*ret, le32_to_cpu(data[0]), le32_to_cpu(data[1]), -1, 0);
- return 3;
- }
- if (item_attr_get(item, attr_zipfile_ref, &zipfile_ref)) {
- *ret=map_rect_new_binfile_int(map, NULL);
- push_zipfile_tile(*ret, zipfile_ref.u.num, 0, 0, 0);
- return 1;
- }
- if (item_attr_get(item, attr_zipfile_ref_block, &zipfile_ref)) {
- data=zipfile_ref.u.data;
- *ret=map_rect_new_binfile_int(map, NULL);
- push_zipfile_tile(*ret, le32_to_cpu(data[0]), le32_to_cpu(data[1]), le32_to_cpu(data[2]), 0);
- return 2;
- }
- *ret=NULL;
- return 0;
-}
-
-static struct map_rect_priv *
-binmap_search_street_by_place(struct map_priv *map, struct item *town, struct coord *c, struct map_selection *sel, GList **boundaries)
-{
- struct attr town_name, poly_town_name;
- struct map_rect_priv *map_rec2;
- struct item *place;
- int found=0;
-
- if (!item_attr_get(town, attr_label, &town_name))
- return NULL;
- sel->range = item_range_all;
- sel->order = 18;
- sel->next = NULL;
- sel->u.c_rect.lu=*c;
- sel->u.c_rect.rl=*c;
- map_rec2=map_rect_new_binfile(map, sel);
- while ((place=map_rect_get_item_binfile(map_rec2))) {
- if (item_is_poly_place(*place) &&
- item_attr_get(place, attr_label, &poly_town_name) &&
- !strcmp(poly_town_name.u.str,town_name.u.str)) {
- struct coord *c;
- int i,count;
- struct geom_poly_segment *bnd;
- count=binfile_coord_left(map_rec2);
- c=g_new(struct coord,count);
- found=1;
- item_coord_get(place, c, count);
- for (i = 0 ; i < count ; i++)
- coord_rect_extend(&sel->u.c_rect, &c[i]);
- bnd=g_new(struct geom_poly_segment,1);
- bnd->first=c;
- bnd->last=c+count-1;
- bnd->type=geom_poly_segment_type_way_outer;
- *boundaries=g_list_prepend(*boundaries,bnd);
- }
- }
- map_rect_destroy_binfile(map_rec2);
- if (found)
- return map_rect_new_binfile(map, sel);
- return NULL;
-}
-
-static int
-binmap_get_estimated_town_size(struct item *town)
-{
- int size = 10000;
- switch (town->type) {
- case type_town_label_1e5:
- case type_town_label_5e4:
- case type_town_label_2e4:
- case type_district_label_1e5:
- case type_district_label_5e4:
- case type_district_label_2e4:
- size = 5000;
- break;
- case type_town_label_1e4:
- case type_town_label_5e3:
- case type_town_label_2e3:
- case type_district_label_1e4:
- case type_district_label_5e3:
- case type_district_label_2e3:
- size = 2500;
- break;
- case type_town_label_1e3:
- case type_town_label_5e2:
- case type_town_label_2e2:
- case type_town_label_1e2:
- case type_town_label_5e1:
- case type_town_label_2e1:
- case type_town_label_1e1:
- case type_town_label_5e0:
- case type_town_label_2e0:
- case type_town_label_1e0:
- case type_town_label_0e0:
- case type_district_label_1e3:
- case type_district_label_5e2:
- case type_district_label_2e2:
- case type_district_label_1e2:
- case type_district_label_5e1:
- case type_district_label_2e1:
- case type_district_label_1e1:
- case type_district_label_5e0:
- case type_district_label_2e0:
- case type_district_label_1e0:
- case type_district_label_0e0:
- size = 1000;
- break;
- default:
- break;
- }
- return size;
-}
-
-static struct map_rect_priv *
-binmap_search_street_by_estimate(struct map_priv *map, struct item *town, struct coord *c, struct map_selection *sel)
-{
- int size = binmap_get_estimated_town_size(town);
-
- sel->u.c_rect.lu.x = c->x-size;
- sel->u.c_rect.lu.y = c->y+size;
- sel->u.c_rect.rl.x = c->x+size;
- sel->u.c_rect.rl.y = c->y-size;
- return map_rect_new_binfile(map, sel);
-}
-
-static struct map_rect_priv *
-binmap_search_housenumber_by_estimate(struct map_priv *map, struct coord *c, struct map_selection *sel)
-{
- int size = 400;
- sel->u.c_rect.lu.x = c->x-size;
- sel->u.c_rect.lu.y = c->y+size;
- sel->u.c_rect.rl.x = c->x+size;
- sel->u.c_rect.rl.y = c->y-size;
-
- sel->range = item_range_all;
- sel->order = 18;
-
- return map_rect_new_binfile(map, sel);
-}
-
-
-static int
-binmap_get_estimated_boundaries (struct item *town, GList **boundaries)
-{
- int size = binmap_get_estimated_town_size(town);
- struct coord tc;
-
- if (item_coord_get(town, &tc, 1))
- {
- struct geom_poly_segment *bnd;
- struct coord *c;
- c=g_new(struct coord,5);
- bnd=g_new(struct geom_poly_segment,1);
- c[0].x = tc.x + size;
- c[0].y = tc.y - size;
- c[1].x = tc.x - size;
- c[1].y = tc.y - size;
- c[2].x = tc.x - size;
- c[2].y = tc.y + size;
- c[3].x = tc.x + size;
- c[3].y = tc.y + size;
- c[4].x = c[0].x;
- c[4].y = c[0].y;
- bnd->first=&c[0];
- bnd->last=&c[4];
- bnd->type=geom_poly_segment_type_way_outer;
- *boundaries=g_list_prepend(*boundaries,bnd);
- return 1;
- }
- return 0;
-}
-
-static struct map_search_priv *
-binmap_search_new(struct map_priv *map, struct item *item, struct attr *search, int partial)
-{
- struct map_rect_priv *map_rec;
- struct map_search_priv *msp=g_new0(struct map_search_priv, 1);
- struct item *town;
- int idx;
-
- msp->search = *search;
- msp->partial = partial;
- if(ATTR_IS_STRING(msp->search.type))
- msp->search.u.str=linguistics_casefold(search->u.str);
-
- /*
- * NOTE: If you implement search for other attributes than attr_town_name and attr_street_name,
- * please update this comment and the documentation for map_search_new() in map.c
- */
- switch (search->type) {
- case attr_country_name:
- 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;
- map_rec->country_id = item->id_lo;
- map_rec->msp = msp;
- msp->mr = map_rec;
- return msp;
- break;
- case attr_street_name:
- if (! item->map)
- break;
- if (!map_priv_is(item->map, map))
- break;
- map_rec = map_rect_new_binfile(map, NULL);
- town = map_rect_get_item_byid_binfile(map_rec, item->id_hi, item->id_lo);
- if (town) {
- struct coord c;
-
- if (binmap_search_by_index(map, town, &msp->mr))
- msp->mode = 1;
- else {
- map->last_searched_town_id_hi = town->id_hi;
- map->last_searched_town_id_lo = town->id_lo;
- if (item_coord_get(town, &c, 1)) {
- if ((msp->mr=binmap_search_street_by_place(map, town, &c, &msp->ms, &msp->boundaries)))
- msp->mode = 2;
- else {
- msp->mr=binmap_search_street_by_estimate(map, town, &c, &msp->ms);
- msp->mode = 3;
- }
- }
- }
- map_rect_destroy_binfile(map_rec);
- if (!msp->mr)
- break;
- return msp;
- }
- map_rect_destroy_binfile(map_rec);
- break;
- case attr_house_number:
- dbg(lvl_debug,"case house_number");
- if (! item->map)
- break;
- if (!map_priv_is(item->map, map))
- break;
- msp->map=map;
- msp->mr_item = map_rect_new_binfile(map, NULL);
- msp->item = map_rect_get_item_byid_binfile(msp->mr_item, item->id_hi, item->id_lo);
- idx=binmap_search_by_index(map, msp->item, &msp->mr);
- if (idx)
- msp->mode = 1;
- else
- {
- struct coord c;
- if (item_coord_get(msp->item, &c, 1))
- {
- struct attr attr;
- map_rec = map_rect_new_binfile(map, NULL);
- town = map_rect_get_item_byid_binfile(map_rec, map->last_searched_town_id_hi, map->last_searched_town_id_lo);
- if (town)
- msp->mr = binmap_search_street_by_place(map, town, &c, &msp->ms, &msp->boundaries);
- if (msp->boundaries)
- dbg(lvl_debug, "using map town boundaries\n");
- if (!msp->boundaries && town)
- {
- binmap_get_estimated_boundaries(town, &msp->boundaries);
- if (msp->boundaries)
- dbg(lvl_debug, "using estimated boundaries\n");
- }
- map_rect_destroy_binfile(map_rec);
- /* start searching in area around the street segment even if town boundaries are available */
- msp->mr=binmap_search_housenumber_by_estimate(map, &c, &msp->ms);
- msp->mode = 2;
- msp->rect_new=msp->ms.u.c_rect;
- if(item_attr_get(msp->item, attr_street_name, &attr))
- msp->parent_name=g_strdup(attr.u.str);
- dbg(lvl_debug,"pn=%s\n",msp->parent_name);
- }
- }
- if (idx != 3) {
- map_rect_destroy_binfile(msp->mr_item);
- msp->mr_item=NULL;
- }
- if (!msp->mr)
- {
- break;
- }
- return msp;
- default:
- break;
- }
- if(ATTR_IS_STRING(msp->search.type))
- g_free(msp->search.u.str);
- g_free(msp);
- return NULL;
-}
-
-
-struct duplicate
-{
- struct coord c;
- char str[0];
-};
-
-static guint
-duplicate_hash(gconstpointer key)
-{
- const struct duplicate *d=key;
- return d->c.x^d->c.y^g_str_hash(d->str);
-}
-
-static gboolean
-duplicate_equal(gconstpointer a, gconstpointer b)
-{
- const struct duplicate *da=a;
- const struct duplicate *db=b;
- return (da->c.x == db->c.x && da->c.y == db->c.y && g_str_equal(da->str,db->str));
-}
-
-/**
- * @brief Test an item if it's duplicate. If it's not a duplicate, return new struct duplicate to be duplicate_insert()'ed.
- * @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, enum attr_type attr_type2)
-{
-struct attr attr;
- struct attr attr2;
- int len;
- char *buffer;
- struct duplicate *d;
-
- if (!msp->search_results)
- msp->search_results = g_hash_table_new_full(duplicate_hash, duplicate_equal, g_free, NULL);
- binfile_attr_rewind(item->priv_data);
- 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)) {
- d->c.x=0;
- 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)) {
- struct duplicate *dr=g_malloc(len);
- memcpy(dr, d, len);
- return dr;
- }
- return NULL;
-}
-
-/**
- * @brief Insert struct duplicate item into the duplicate hash.
- * @param msp pointer to private map search data
- * @param duplicate Duplicate info to insert
- */
-static void
-duplicate_insert(struct map_search_priv *msp, struct duplicate *d)
-{
- g_hash_table_insert(msp->search_results, d, GINT_TO_POINTER(1));
-}
-
-/**
- * @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, enum attr_type attr_type2)
-{
- struct duplicate *d=duplicate_test(msp, item, attr_type, attr_type2);
- if(!d)
- return 1;
- duplicate_insert(msp,d);
- return 0;
-}
-
-static int
-item_inside_poly_list(struct item *it, GList *l)
-{
-
- while(l) {
- struct geom_poly_segment *p=l->data;
- int count=p->last-p->first+1;
- struct coord c;
- int ccount;
- item_coord_rewind(it);
- ccount=binfile_coord_left(it->priv_data);
- if(ccount==1)
- item_coord_get(it,&c,1);
- else if(ccount==2) {
- struct coord c2;
- item_coord_get(it,&c,1);
- item_coord_get(it,&c2,1);
- c.x=(c.x+c2.x)/2;
- c.y=(c.y+c2.y)/2;
- } else {
- if(ccount>3)
- ccount/=2;
- else
- ccount=2;
- while(--ccount>0)
- item_coord_get(it,&c,1);
- }
- if(geom_poly_point_inside(p->first,count,&c))
- return 1;
- l=g_list_next(l);
- }
- return 0;
-}
-
-static struct item *
-binmap_search_get_item(struct map_search_priv *map_search)
-{
- struct item* it;
- struct attr at;
- enum linguistics_cmp_mode mode=(map_search->partial?linguistics_cmp_partial:0);
-
- for (;;) {
- 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,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,0))
- return it;
- }
- }
- break;
- 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,0)) {
- return it;
- }
- }
- continue;
- }
- if (item_is_street(*it)) {
- struct attr at;
- if (!map_selection_contains_item_rect(map_search->mr->sel, it))
- break;
-
- if(binfile_attr_get(it->priv_data, attr_label, &at)) {
- struct coord c[128];
- struct duplicate *d;
-
- /* 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,0);
- if(!d)
- break;
-
- if(linguistics_compare(at.u.str, map_search->search.u.str, mode|linguistics_cmp_expand|linguistics_cmp_words)) {
- /* Remember this non-matching street name in duplicate hash to skip name
- * comparison for its following segments */
- duplicate_insert(map_search, d);
- break;
- }
-
- if(map_search->boundaries && !item_inside_poly_list(it,map_search->boundaries)) {
- /* Other segments may fit the town poly. Do not update hash for now. */
- g_free(d);
- break;
- }
-
- duplicate_insert(map_search, d);
- item_coord_rewind(it);
- return it;
- }
- }
- break;
- case attr_house_number:
- has_house_number=binfile_attr_get(it->priv_data, attr_house_number, &at);
- if ((has_house_number
- || it->type == type_house_number_interpolation_even || it->type == type_house_number_interpolation_odd
- || it->type == type_house_number_interpolation_all
- || (map_search->mode == 1 && item_is_street(*it))|| it->type == type_house_number)
- && !(map_search->boundaries && !item_inside_poly_list(it,map_search->boundaries)))
- {
- if (has_house_number)
- {
- struct attr at2;
- 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,0))
- {
- binfile_attr_rewind(it->priv_data);
- return it;
- }
- }
- }
- else
- {
- 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,0))
- {
- binfile_attr_rewind(it->priv_data);
- return it;
- }
- else if (!duplicate(map_search, it, attr_house_number_interpolation_no_ends_incrmt_1,0))
- {
- binfile_attr_rewind(it->priv_data);
- return it;
- }
- } else {
- if (!( it->type == type_house_number_interpolation_even || it->type == type_house_number_interpolation_odd
- || it->type == type_house_number_interpolation_all))
- return it;
- }
-
- }
- } else if( item_is_street(*it) && map_search->mode==2 && map_search->parent_name && binfile_attr_get(it->priv_data, attr_street_name, &at) && !strcmp(at.u.str, map_search->parent_name) )
- {
- /* If matching street segment found, prepare to expand house number search region +100m around each way point */
- if (!(map_search->boundaries && !item_inside_poly_list(it,map_search->boundaries)))
- {
- struct coord c;
- while(item_coord_get(it,&c,1))
- {
- c.x-=100;
- c.y-=100;
- coord_rect_extend(&map_search->rect_new,&c);
- c.x+=200;
- c.y+=200;
- coord_rect_extend(&map_search->rect_new,&c);
- }
- }
- }
- continue;
- default:
- return NULL;
- }
- }
- if(map_search->search.type==attr_house_number && map_search->mode==2 && map_search->parent_name) {
- /* For unindexed house number search, check if street segments extending possible housenumber locations were found */
- if(map_search->ms.u.c_rect.lu.x!=map_search->rect_new.lu.x || map_search->ms.u.c_rect.lu.y!=map_search->rect_new.lu.y ||
- map_search->ms.u.c_rect.rl.x!=map_search->rect_new.rl.x || map_search->ms.u.c_rect.rl.y!=map_search->rect_new.rl.y) {
- map_search->ms.u.c_rect=map_search->rect_new;
- map_rect_destroy_binfile(map_search->mr);
- map_search->mr=map_rect_new_binfile(map_search->map, &map_search->ms);
- dbg(lvl_debug,"Extended house number search region to %d x %d, restarting...\n",map_search->ms.u.c_rect.rl.x - map_search->ms.u.c_rect.lu.x, map_search->ms.u.c_rect.lu.y-map_search->ms.u.c_rect.rl.y);
- continue;
- }
- }
- if (!map_search->mr_item)
- return NULL;
- map_rect_destroy_binfile(map_search->mr);
- if (!binmap_search_by_index(map_search->map, map_search->item, &map_search->mr))
- return NULL;
- }
-}
-
-
-static void
-binmap_search_destroy(struct map_search_priv *ms)
-{
- if (ms->search_results)
- g_hash_table_destroy(ms->search_results);
- if(ATTR_IS_STRING(ms->search.type))
- g_free(ms->search.u.str);
- if(ms->parent_name)
- g_free(ms->parent_name);
- if (ms->mr_item)
- map_rect_destroy_binfile(ms->mr_item);
- if (ms->mr)
- map_rect_destroy_binfile(ms->mr);
- while(ms->boundaries) {
- geom_poly_segment_destroy(ms->boundaries->data);
- ms->boundaries=g_list_delete_link(ms->boundaries,ms->boundaries);
- }
- g_free(ms);
-}
-
-static int
-binmap_get_attr(struct map_priv *m, enum attr_type type, struct attr *attr)
-{
- attr->type=type;
- switch (type) {
- case attr_map_release:
- if (m->map_release) {
- attr->u.str=m->map_release;
- return 1;
- }
- break;
- case attr_progress:
- if (m->progress) {
- attr->u.str=m->progress;
- return 1;
- }
- default:
- break;
- }
- return 0;
-}
-
-static int
-binmap_set_attr(struct map_priv *map, struct attr *attr)
-{
- switch (attr->type) {
- case attr_update:
- map->download_enabled = attr->u.num;
- return 1;
- default:
- return 0;
- }
-
-}
-
-static struct map_methods map_methods_binfile = {
- projection_mg,
- "utf-8",
- map_destroy_binfile,
- map_rect_new_binfile,
- map_rect_destroy_binfile,
- map_rect_get_item_binfile,
- map_rect_get_item_byid_binfile,
- binmap_search_new,
- binmap_search_destroy,
- binmap_search_get_item,
- NULL,
- binmap_get_attr,
- binmap_set_attr,
-};
-
-static int
-binfile_get_index(struct map_priv *m)
-{
- int len;
- int cde_index_size;
- int offset;
- struct zip_cd *cd;
-
- len = strlen("index");
- cde_index_size = sizeof(struct zip_cd)+len;
- if (m->eoc64)
- offset = m->eoc64->zip64ecsz-cde_index_size;
- else
- offset = m->eoc->zipecsz-cde_index_size;
- cd = binfile_read_cd(m, offset, len);
-
- if (!cd) {
- cde_index_size+=sizeof(struct zip_cd_ext);
- if (m->eoc64)
- offset = m->eoc64->zip64ecsz-cde_index_size;
- else
- offset = m->eoc->zipecsz-cde_index_size;
- cd = binfile_read_cd(m, offset, len+sizeof(struct zip_cd_ext));
- }
- if (cd) {
- if (cd->zipcfnl == len && !strncmp(cd->zipcfn, "index", len)) {
- m->index_offset=offset;
- m->index_cd=cd;
- return 1;
- }
- }
- offset=binfile_search_cd(m, 0, "index", 0, 0);
- if (offset == -1)
- return 0;
- cd=binfile_read_cd(m, offset, -1);
- if (!cd)
- return 0;
- m->index_offset=offset;
- m->index_cd=cd;
- return 1;
-}
-
-static int
-map_binfile_zip_setup(struct map_priv *m, char *filename, int mmap)
-{
- struct zip_cd *first_cd;
- int i;
- if (!(m->eoc=binfile_read_eoc(m->fi))) {
- dbg(lvl_error,"map file %s: unable to read eoc\n", filename);
- return 0;
- }
- dbg_assert(m->eoc->zipedsk == m->eoc->zipecen);
- if (m->eoc->zipedsk && strlen(filename) > 3) {
- char *tmpfilename=g_strdup(filename),*ext=tmpfilename+strlen(tmpfilename)-3;
- m->fis=g_new(struct file *,m->eoc->zipedsk);
- for (i = 0 ; i < m->eoc->zipedsk-1 ; i++) {
- sprintf(ext,"b%02d",i+1);
- m->fis[i]=file_create(tmpfilename, 0);
- if (mmap)
- file_mmap(m->fis[i]);
- }
- m->fis[m->eoc->zipedsk-1]=m->fi;
- g_free(tmpfilename);
- }
- dbg(lvl_debug,"num_disk %d\n",m->eoc->zipedsk);
- m->eoc64=binfile_read_eoc64(m->fi);
- if (!binfile_get_index(m)) {
- dbg(lvl_error,"map file %s: no index found\n", filename);
- return 0;
- }
- if (!(first_cd=binfile_read_cd(m, 0, 0))) {
- dbg(lvl_error,"map file %s: unable to get first cd\n", filename);
- return 0;
- }
- m->cde_size=sizeof(struct zip_cd)+first_cd->zipcfnl+first_cd->zipcxtl;
- m->zip_members=m->index_offset/m->cde_size+1;
- dbg(lvl_debug,"cde_size %d\n", m->cde_size);
- dbg(lvl_debug,"members %d\n",m->zip_members);
- file_data_free(m->fi, (unsigned char *)first_cd);
- if (mmap)
- file_mmap(m->fi);
- return 1;
-}
-
-
-#if 0
-static int
-map_binfile_download_initial(struct map_priv *m)
-{
- struct attr readwrite={attr_readwrite,{(void *)1}};
- struct attr create={attr_create,{(void *)1}};
- struct attr *attrs[4];
- struct file *out;
- long long woffset=0,planet_size;
- int size_ret;
- int cd1size,cdisize;
- long long cd1offset,cdioffset;
- struct zip64_eoc *zip64_eoc;
- struct zip64_eocl *zip64_eocl;
- struct zip_eoc *zip_eoc;
- struct zip_cd *cd1,*cdn,*cdi;
- int count,chunk,cdoffset=0;
- int mode=1;
- struct map_download *download=g_new0(struct map_download, 1);
-
- attrs[0]=&readwrite;
- attrs[1]=&create;
- attrs[2]=NULL;
- download->file=file_create(m->filename,attrs);
- download->m=m;
- download_planet_size(download);
- download_eoc(download);
- download_directory_start(download);
- while (download_directory_do(download));
- download_directory_finish(download);
- download_initial_finish(download);
- m->fi=download->file;
- g_free(download);
- return 1;
-
-
- cd1size=sizeof(*cd1);
- cd1offset=zip64_eoc->zip64eofst;
- cd1=(struct zip_cd *)map_binfile_download_range(m, cd1offset, cd1size);
- if (!cd1)
- return 0;
- cd1size=sizeof(*cd1)+binfile_cd_extra(cd1);
- g_free(cd1);
- cd1=(struct zip_cd *)map_binfile_download_range(m, cd1offset, cd1size);
- if (!cd1)
- return 0;
- cd1->zipcunc=0;
- cdisize=sizeof(*cdi)+strlen("index")+cd1->zipcxtl;
- cdioffset=zip64_eoc->zip64eofst+zip64_eoc->zip64ecsz-cdisize;
- cdi=(struct zip_cd *)map_binfile_download_range(m, cdioffset, cdisize);
- if (!cdi) {
- g_free(cd1);
- return 0;
- }
- cdi->zipcunc=0;
- cdn=g_malloc0(cd1size*256);
-
- file_data_write(out, woffset, sizeof(*zip64_eoc), (unsigned char *)zip64_eoc);
- woffset+=sizeof(*zip64_eoc);
- cdoffset=woffset;
-
- file_data_write(out, woffset, cd1size, (unsigned char *)cd1);
- woffset+=cd1size;
- count=(cdioffset-cd1offset)/cd1size-1;
- while (count > 0) {
- if (count > 256)
- chunk=256;
- else
- chunk=count;
- file_data_write(out, woffset, cd1size*chunk, (unsigned char *)cdn);
- woffset+=cd1size*chunk;
- count-=chunk;
- }
- g_free(cdn);
- g_free(cd1);
- file_data_write(out, woffset, cdisize, (unsigned char *)cdi);
- woffset+=cdisize;
-
-}
-#endif
-
-static int
-map_binfile_open(struct map_priv *m)
-{
- int *magic;
- struct map_rect_priv *mr;
- struct item *item;
- struct attr attr;
- struct attr readwrite={attr_readwrite, {(void *)1}};
- struct attr *attrs[]={&readwrite, NULL};
-
- dbg(lvl_debug,"file_create %s\n", m->filename);
- m->fi=file_create(m->filename, m->url?attrs:NULL);
- if (! m->fi && m->url)
- return 0;
- if (! m->fi) {
- dbg(lvl_error,"Failed to load '%s'\n", m->filename);
- return 0;
- }
- if (m->check_version)
- m->version=file_version(m->fi, m->check_version);
- magic=(int *)file_data_read(m->fi, 0, 4);
- if (!magic) {
- file_destroy(m->fi);
- m->fi=NULL;
- return 0;
- }
- *magic = le32_to_cpu(*magic);
- if (*magic == zip_lfh_sig || *magic == zip_split_sig || *magic == zip_cd_sig || *magic == zip64_eoc_sig) {
- if (!map_binfile_zip_setup(m, m->filename, m->flags & 1)) {
- dbg(lvl_error,"invalid file format for '%s'\n", m->filename);
- file_destroy(m->fi);
- m->fi=NULL;
- return 0;
- }
- } else if (*magic == zip_lfh_sig_rev || *magic == zip_split_sig_rev || *magic == zip_cd_sig_rev || *magic == zip64_eoc_sig_rev) {
- dbg(lvl_error,"endianness mismatch for '%s'\n", m->filename);
- file_destroy(m->fi);
- m->fi=NULL;
- return 0;
- } else
- file_mmap(m->fi);
- file_data_free(m->fi, (unsigned char *)magic);
- m->cachedir=g_strdup("/tmp/navit");
- m->map_version=0;
- mr=map_rect_new_binfile(m, NULL);
- if (mr) {
- while ((item=map_rect_get_item_binfile(mr)) == &busy_item);
- if (item && item->type == type_map_information) {
- if (binfile_attr_get(item->priv_data, attr_version, &attr))
- m->map_version=attr.u.num;
- if (binfile_attr_get(item->priv_data, attr_map_release, &attr))
- m->map_release=g_strdup(attr.u.str);
- if (m->url && binfile_attr_get(item->priv_data, attr_url, &attr)) {
- dbg(lvl_debug,"url config %s map %s\n",m->url,attr.u.str);
- if (strcmp(m->url, attr.u.str))
- m->update_available=1;
- g_free(m->url);
- m->url=g_strdup(attr.u.str);
- }
- }
- map_rect_destroy_binfile(mr);
- if (m->map_version >= 16) {
- dbg(lvl_error,"%s: This map is incompatible with your navit version. Please update navit. (map version %d)\n",
- m->filename, m->map_version);
- return 0;
- }
- }
- return 1;
-}
-
-static void
-map_binfile_close(struct map_priv *m)
-{
- int i;
- file_data_free(m->fi, (unsigned char *)m->index_cd);
- file_data_free(m->fi, (unsigned char *)m->eoc);
- file_data_free(m->fi, (unsigned char *)m->eoc64);
- g_free(m->cachedir);
- g_free(m->map_release);
- if (m->fis) {
- for (i = 0 ; i < m->eoc->zipedsk ; i++) {
- file_destroy(m->fis[i]);
- }
- } else
- file_destroy(m->fi);
-}
-
-static void
-map_binfile_destroy(struct map_priv *m)
-{
- g_free(m->filename);
- g_free(m->url);
- g_free(m->progress);
- g_free(m);
-}
-
-
-static void
-binfile_check_version(struct map_priv *m)
-{
- int version=-1;
- if (!m->check_version)
- return;
- if (m->fi)
- version=file_version(m->fi, m->check_version);
- if (version != m->version) {
- if (m->fi)
- map_binfile_close(m);
- map_binfile_open(m);
- }
-}
-
-
-static struct map_priv *
-map_new_binfile(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct map_priv *m;
- struct attr *data=attr_search(attrs, NULL, attr_data);
- struct attr *check_version,*map_pass,*flags,*url,*download_enabled;
- struct file_wordexp *wexp;
- char **wexp_data;
- if (! data)
- return NULL;
-
- wexp=file_wordexp_new(data->u.str);
- wexp_data=file_wordexp_get_array(wexp);
- dbg(lvl_debug,"map_new_binfile %s\n", data->u.str);
- *meth=map_methods_binfile;
-
- m=g_new0(struct map_priv, 1);
- m->cbl=cbl;
- m->id=++map_id;
- m->filename=g_strdup(wexp_data[0]);
- file_wordexp_destroy(wexp);
- check_version=attr_search(attrs, NULL, attr_check_version);
- if (check_version)
- m->check_version=check_version->u.num;
- map_pass=attr_search(attrs, NULL, attr_map_pass);
- if (map_pass)
- m->passwd=g_strdup(map_pass->u.str);
- flags=attr_search(attrs, NULL, attr_flags);
- if (flags)
- m->flags=flags->u.num;
- url=attr_search(attrs, NULL, attr_url);
- if (url)
- m->url=g_strdup(url->u.str);
- download_enabled = attr_search(attrs, NULL, attr_update);
- if (download_enabled)
- m->download_enabled=download_enabled->u.num;
-
- if (!map_binfile_open(m) && !m->check_version && !m->url) {
- map_binfile_destroy(m);
- m=NULL;
- } else {
- load_changes(m);
- }
- return m;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug,"binfile: plugin_init\n");
- if (sizeof(struct zip_cd) != 46) {
- dbg(lvl_error,"error: sizeof(struct zip_cd)=%zu\n",sizeof(struct zip_cd));
- }
- plugin_register_category_map("binfile", map_new_binfile);
-}
-
diff --git a/navit/map/csv/CMakeLists.txt b/navit/map/csv/CMakeLists.txt
deleted file mode 100644
index 9135d1a88..000000000
--- a/navit/map/csv/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(map_csv csv.c quadtree.c)
diff --git a/navit/map/csv/csv.c b/navit/map/csv/csv.c
deleted file mode 100644
index 2726e8ab9..000000000
--- a/navit/map/csv/csv.c
+++ /dev/null
@@ -1,885 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 "config.h"
-
-#include <stdlib.h>
-#include <glib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include <errno.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include "debug.h"
-#include "plugin.h"
-#include "projection.h"
-#include "item.h"
-#include "map.h"
-#include "maptype.h"
-#include "attr.h"
-#include "transform.h"
-#include "file.h"
-#include "quadtree.h"
-
-#include "csv.h"
-
-static int map_id;
-
-/*prototypes*/
-static int
-csv_coord_set(void *priv_data, struct coord *c, int count, enum change_mode mode);
-static struct item * csv_create_item(struct map_rect_priv *mr, enum item_type it_type);
-static void quadtree_item_free(void *mr, struct quadtree_item *qitem);
-static void quadtree_item_free_do(void *qitem);
-
-
-struct quadtree_data
-{
- enum item_type type;
- int id_lo;
- GList* attr_list;
- struct item *item;
-};
-
-
-struct quadtree_data *quadtree_data_dup(struct quadtree_data *qdata)
-{
- struct quadtree_data *ret=g_new0(struct quadtree_data,1);
- GList *l;
- ret->type=qdata->type;
- ret->id_lo=qdata->id_lo;
- ret->item=g_new(struct item,1);
- *(ret->item)=*(qdata->item);
- for(l=qdata->attr_list;l;l=g_list_next(l)) {
- ret->attr_list=g_list_prepend(ret->attr_list,attr_dup(l->data));
- }
- return ret;
-}
-
-static void
-save_map_csv(struct map_priv *m)
-{
- if(m->filename && m->dirty) {
- char* filename = g_strdup_printf("%s.tmp",m->filename);
- FILE* fp;
- int ferr = 0;
- char *csv_line = 0;
- char *tmpstr = 0;
- char *oldstr = 0;
- struct quadtree_iter *iter;
- struct quadtree_item *qitem;
-
- if( ! (fp=fopen(filename,"w+"))) {
- dbg(lvl_error, "Error opening csv file to write new entries");
- return;
- }
- /*query the world*/
- iter=quadtree_query(m->tree_root, -180, 180, -180, 180, quadtree_item_free, m);
-
- while((qitem = quadtree_item_next(iter))!=NULL) {
- int i;
- enum attr_type *at = m->attr_types;
- if(qitem->deleted)
- continue;
- csv_line = NULL;
- tmpstr = NULL;
- for(i=0;i<m->attr_cnt;++i) {
- if(*at == attr_position_latitude) {
- tmpstr = g_strdup_printf("%lf",qitem->latitude);
- } else if(*at == attr_position_longitude) {
- tmpstr = g_strdup_printf("%lf",qitem->longitude);
- } else {
- GList* attr_list = ((struct quadtree_data*)(qitem->data))->attr_list;
- GList* attr_it = attr_list;
- struct attr* found_attr = NULL;
- /*search attributes*/
- while(attr_it) {
- if(((struct attr*)(attr_it->data))->type == *at) {
- found_attr = attr_it->data;
- break;
- }
- attr_it = g_list_next(attr_it);
- }
- if(found_attr) {
- if(ATTR_IS_INT(*at)) {
- tmpstr = g_strdup_printf("%d", (int)found_attr->u.num);
- } else if(ATTR_IS_DOUBLE(*at)) {
- tmpstr = g_strdup_printf("%lf", *found_attr->u.numd);
- } else if(ATTR_IS_STRING(*at)) {
- tmpstr = g_strdup(found_attr->u.str);
- } else {
- dbg(lvl_error,"Cant represent attribute %s\n",attr_to_name(*at));
- tmpstr=g_strdup("");
- }
- } else {
- dbg(lvl_debug,"No value defined for the atribute %s, assuming empty string\n",attr_to_name(*at));
- tmpstr=g_strdup("");
- }
- }
- if(i>0) {
- oldstr = csv_line;
- csv_line = g_strdup_printf("%s,%s",csv_line,tmpstr);
- g_free(tmpstr);
- g_free(oldstr);
- tmpstr = NULL;
- } else {
- csv_line=tmpstr;
- }
- ++at;
- }
-
- if(m->charset) {
- tmpstr=g_convert(csv_line, -1,m->charset,"utf-8",NULL,NULL,NULL);
- if(!tmpstr)
- dbg(lvl_error,"Error converting '%s' to %s\n",csv_line, m->charset);
- } else
- tmpstr=csv_line;
-
- if(tmpstr && fprintf(fp,"%s\n", tmpstr)<0) {
- ferr = 1;
- }
- g_free(csv_line);
- if(m->charset)
- g_free(tmpstr);
- }
-
- if(fclose(fp)) {
- ferr = 1;
- }
-
- if(! ferr) {
- unlink(m->filename);
- rename(filename,m->filename);
- m->dirty = 0;
- }
- g_free(filename);
- quadtree_query_free(iter);
-
- }
-}
-
-static const int zoom_max = 18;
-
-static void
-map_destroy_csv(struct map_priv *m)
-{
- dbg(lvl_debug,"map_destroy_csv\n");
- /*save if changed */
- save_map_csv(m);
- g_hash_table_destroy(m->qitem_hash);
- quadtree_destroy(m->tree_root);
- g_free(m->filename);
- g_free(m->charset);
- g_free(m->attr_types);
- g_free(m);
-}
-
-static void
-csv_coord_rewind(void *priv_data)
-{
-}
-
-static int
-csv_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *mr=priv_data;
- if(mr) {
- *c = mr->c;
- return 1;
- }
- else {
- return 0;
- }
-}
-
-static void
-csv_attr_rewind(void *priv_data)
-{
- /*TODO implement if needed*/
-}
-
-static int
-csv_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- int i, bAttrFound = 0;
- GList* attr_list;
- struct map_rect_priv *mr=priv_data;
- enum attr_type *at;
- if( !mr || !mr->m || !mr->m->attr_types ) {
- return 0;
- }
-
- attr_list = ((struct quadtree_data*)(mr->qitem->data))->attr_list;
-
- if (attr_type == attr_any) {
- if (mr->at_iter==NULL) { /*start iteration*/
- mr->at_iter = attr_list;
- if (mr->at_iter) {
- *attr = *(struct attr*)(mr->at_iter->data);
- return 1;
- } else { /*empty attr list*/
- mr->at_iter = NULL;
- return 0;
- }
- } else { /*continue iteration*/
- mr->at_iter = g_list_next(mr->at_iter);
- if(mr->at_iter) {
- *attr = *(struct attr*)mr->at_iter->data;
- return 1;
- } else {
- return 0;
- }
- }
- return 0;
- }
-
- at = mr->m->attr_types;
-
- for(i=0;i<mr->m->attr_cnt;++i) {
- if(*at == attr_type) {
- bAttrFound = 1;
- break;
- }
- ++at;
- }
-
- if(!bAttrFound) {
- return 0;
- }
-
- while(attr_list) {
- if(((struct attr*)attr_list->data)->type == attr_type) {
- *attr = *(struct attr*)attr_list->data;
- return 1;
- }
- attr_list = g_list_next(attr_list);
- }
- return 0;
-}
-
-static int
-csv_attr_set(void *priv_data, struct attr *attr, enum change_mode mode)
-{
- struct map_rect_priv* mr;
- struct map_priv* m;
- int i, bFound;
- struct attr *attr_new;
- GList *attr_list, *curr_attr_list;
- enum attr_type *at;
-
- mr = (struct map_rect_priv*)priv_data;
- if(!mr || !mr->qitem) {
- return 0;
- }
-
- m = mr->m;
- bFound = 0;
- at = m->attr_types;
-
- /*if attribute is not supported by this csv map return 0*/
- for(i=0;i<m->attr_cnt;++i) {
- if(*at==attr->type) {
- bFound = 1;
- break;
- }
- ++at;
- }
- if( ! bFound) {
- return 0;
- }
- m->dirty = 1;
- attr_new = attr_dup(attr);
- attr_list = ((struct quadtree_data*)(mr->qitem->data))->attr_list;
- curr_attr_list = attr_list;
-
- while(attr_list) {
- if(((struct attr*)attr_list->data)->type == attr->type) {
- switch(mode) {
- case change_mode_delete:
- attr_free((struct attr*)attr_list->data);
- curr_attr_list = g_list_delete_link(curr_attr_list,attr_list);
- m->dirty = 1;
- /* FIXME: To preserve consistency, may be the save_map_csv should be called here... */
- attr_free(attr_new);
- return 1;
- case change_mode_modify:
- case change_mode_prepend:
- case change_mode_append:
- /* replace existing attribute */
- if(attr_list->data) {
- attr_free((struct attr*)attr_list->data);
- }
- attr_list->data = attr_new;
- m->dirty = 1;
- save_map_csv(m);
- return 1;
- default:
- attr_free(attr_new);
- return 0;
- }
- }
- attr_list = g_list_next(attr_list);
- }
-
- if( mode==change_mode_modify || mode==change_mode_prepend || mode==change_mode_append) {
- /* add new attribute */
- curr_attr_list = g_list_prepend(curr_attr_list, attr_new);
- ((struct quadtree_data*)(mr->qitem->data))->attr_list = curr_attr_list;
- m->dirty = 1;
- save_map_csv(m);
- return 1;
- }
- attr_free(attr_new);
- return 0;
-}
-
-static int
-csv_type_set(void *priv_data, enum item_type type)
-{
- struct map_rect_priv* mr = (struct map_rect_priv*)priv_data;
- dbg(lvl_debug,"Enter %d\n", type);
-
- if(!mr || !mr->qitem) {
- dbg(lvl_debug,"Nothing to do\n");
- return 0;
- }
-
- if(type!=type_none)
- return 0;
-
- mr->qitem->deleted=1;
- dbg(lvl_debug,"Item %p is deleted\n",mr->qitem);
-
- return 1;
-}
-
-static struct item_methods methods_csv = {
- csv_coord_rewind,
- csv_coord_get,
- csv_attr_rewind,
- csv_attr_get,
- NULL,
- csv_attr_set,
- csv_coord_set,
- csv_type_set
-};
-
-
-/*
- * Sets coordinate of an existing item (either on the new list or an item with coord )
- */
-static int
-csv_coord_set(void *priv_data, struct coord *c, int count, enum change_mode mode)
-{
- struct quadtree_item query_item, *insert_item, *query_res;
- struct coord_geo cg;
- struct map_rect_priv* mr;
- struct map_priv* m;
- struct quadtree_item* qi;
- GList* new_it;
- dbg(lvl_debug,"Set coordinates %d %d\n", c->x, c->y);
-
- /* for now we only support coord modification only */
- if( ! change_mode_modify) {
- return 0;
- }
- /* csv driver supports one coord per record only */
- if( count != 1) {
- return 0;
- }
-
- /* get curr_item of given map_rect */
- mr = (struct map_rect_priv*)priv_data;
- m = mr->m;
-
- if(!mr->qitem) {
- return 0;
- }
-
- qi = mr->qitem;
-
- transform_to_geo(projection_mg, &c[0], &cg);
-
- /* if it is on the new list remove from new list and add it to the tree with the coord */
- new_it = m->new_items;
- while(new_it) {
- if(new_it->data==qi) {
- break;
- }
- new_it = g_list_next(new_it);
- }
- if(new_it) {
- qi->longitude = cg.lng;
- qi->latitude = cg.lat;
- quadtree_add( m->tree_root, qi, mr->qiter);
- dbg(lvl_debug,"Set coordinates %f %f\n", cg.lng, cg.lat);
- m->new_items = g_list_remove_link(m->new_items,new_it);
- m->dirty=1;
- save_map_csv(m);
- return 1;
- }
-
- /* else update quadtree item with the new coord
- remove item from the quadtree */
- query_item.longitude = cg.lng;
- query_item.latitude = cg.lat;
- query_res = quadtree_find_item(m->tree_root, &query_item);
- if(!query_res) {
- return 0;
- }
- quadtree_delete_item(m->tree_root, query_res);
- /* add item to the tree with the new coord */
- insert_item=g_new0(struct quadtree_item,1);
- insert_item->data=quadtree_data_dup(query_res->data);
- insert_item->longitude = cg.lng;
- insert_item->latitude = cg.lat;
- quadtree_add(m->tree_root, query_res, mr->qiter);
-
- mr->qitem->ref_count--;
- mr->qitem=insert_item;
- mr->qitem->ref_count++;
-
- m->dirty = 1;
- save_map_csv(m);
- return 1;
-}
-
-static void quadtree_item_free(void *this, struct quadtree_item *qitem)
-{
- struct map_priv* m=this;
- struct quadtree_data * qdata=qitem->data;
- if(m) {
- g_hash_table_remove(m->qitem_hash,&(qdata->item->id_lo));
- }
-}
-
-static void quadtree_item_free_do(void *data)
-{
- struct quadtree_item *qitem=data;
- GList* attr_it;
- struct attr* attr;
- struct quadtree_data * qdata=qitem->data;
- if(qdata) {
- for(attr_it = qdata->attr_list;attr_it;attr_it = g_list_next(attr_it)) {
- attr = attr_it->data;
- attr_free(attr);
- }
- g_list_free(qdata->attr_list);
- g_free(qdata->item);
- g_free(qitem->data);
- }
- g_free(data);
-}
-
-static void map_csv_debug_dump_hash_item(gpointer key, gpointer value, gpointer user_data)
-{
- struct quadtree_item *qi=value;
- GList *attrs;
- dbg(lvl_debug,"%p del=%d ref=%d\n", qi,qi->deleted, qi->ref_count);
- attrs=((struct quadtree_data *)qi->data)->attr_list;
- while(attrs) {
- if(((struct attr*)attrs->data)->type==attr_label)
- dbg(lvl_debug,"... %s\n",((struct attr*)attrs->data)->u.str);
- attrs=g_list_next(attrs);
- }
-}
-
-/**
- * Dump all map data (including deleted items) to the log.
- */
-static void map_csv_debug_dump(struct map_priv *map)
-{
- g_hash_table_foreach(map->qitem_hash, map_csv_debug_dump_hash_item, NULL);
-}
-
-
-static struct map_rect_priv *
-map_rect_new_csv(struct map_priv *map, struct map_selection *sel)
-{
- struct map_rect_priv *mr;
- struct coord_geo lu;
- struct coord_geo rl;
- struct quadtree_iter *res = NULL;
- dbg(lvl_debug,"map_rect_new_csv\n");
- if(debug_level_get("map_csv")>2) {
- map_csv_debug_dump(map);
- }
- mr=g_new0(struct map_rect_priv, 1);
- mr->m=map;
- mr->bStarted = 0;
- mr->sel=sel;
- if (map->flags & 1)
- mr->item.id_hi=1;
- else
- mr->item.id_hi=0;
- mr->item.id_lo=0;
- mr->item.meth=&methods_csv;
- mr->item.priv_data=mr;
-
- if(!sel) {
- lu.lng=-180;
- lu.lat=180;
- rl.lng=180;
- rl.lat=-180;
- } else {
- transform_to_geo(projection_mg, &sel->u.c_rect.lu, &lu);
- transform_to_geo(projection_mg, &sel->u.c_rect.rl, &rl);
- }
- res=quadtree_query(map->tree_root, lu.lng, rl.lng, rl.lat, lu.lat, quadtree_item_free, mr->m);
- mr->qiter = res;
- mr->qitem = NULL;
- return mr;
-}
-
-static void
-map_rect_destroy_csv(struct map_rect_priv *mr)
-{
- if(mr->qitem)
- mr->qitem->ref_count--;
-
- if(mr->qiter)
- quadtree_query_free(mr->qiter);
-
- g_free(mr);
-}
-
-static struct item *
-map_rect_get_item_csv(struct map_rect_priv *mr)
-{
-
- if(mr->qitem)
- mr->qitem->ref_count--;
-
- mr->qitem=quadtree_item_next(mr->qiter);
-
- if(mr->qitem) {
- struct item* ret=&(mr->item);
- struct coord_geo cg;
- mr->qitem->ref_count++;
- mr->item = *(((struct quadtree_data*)(mr->qitem->data))->item);
- ret->priv_data=mr;
- cg.lng = mr->qitem->longitude;
- cg.lat = mr->qitem->latitude;
- transform_from_geo(projection_mg, &cg, &mr->c);
- return ret;
- }
- return NULL;
-}
-
-static struct item *
-map_rect_get_item_byid_csv(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- /*currently id_hi is ignored*/
-
- struct quadtree_item *qit = g_hash_table_lookup(mr->m->qitem_hash,&id_lo);
-
- if(mr->qitem )
- mr->qitem->ref_count--;
-
- if(qit) {
- mr->qitem = qit;
- mr->qitem->ref_count++;
- mr->item=*(((struct quadtree_data*)(qit->data))->item);
- mr->item.priv_data=mr;
- return &(mr->item);
- } else {
- mr->qitem = NULL;
- return NULL;
- }
-}
-
-static int
-csv_get_attr(struct map_priv *m, enum attr_type type, struct attr *attr)
-{
- return 0;
-}
-
-static struct item *
-csv_create_item(struct map_rect_priv *mr, enum item_type it_type)
-{
- struct map_priv* m;
- struct quadtree_data* qd;
- struct quadtree_item* qi;
- struct item* curr_item;
- int* pID;
- if(mr && mr->m) {
- m = mr->m;
- }
- else {
- return NULL;
- }
-
- if( m->item_type != it_type) {
- return NULL;
- }
-
- m->dirty = 1;
- /*add item to the map*/
- curr_item = item_new("",zoom_max);
- curr_item->type = m->item_type;
- curr_item->meth=&methods_csv;
-
- curr_item->id_lo = m->next_item_idx;
- if (m->flags & 1)
- curr_item->id_hi=1;
- else
- curr_item->id_hi=0;
-
- qd = g_new0(struct quadtree_data,1);
- qi = g_new0(struct quadtree_item,1);
- qd->item = curr_item;
- qd->attr_list = NULL;
- qi->data = qd;
- /*we don`t have valid coord yet*/
- qi->longitude = 0;
- qi->latitude = 0;
- /*add the coord less item to the new list*/
- m->new_items = g_list_prepend(m->new_items, qi);
- if(mr->qitem)
- mr->qitem->ref_count--;
- mr->qitem=qi;
- mr->item=*curr_item;
- mr->item.priv_data=mr;
- mr->qitem->ref_count++;
- /*don't add to the quadtree yet, wait until we have a valid coord*/
- pID = g_new(int,1);
- *pID = m->next_item_idx;
- g_hash_table_insert(m->qitem_hash, pID,qi);
- ++m->next_item_idx;
- return &mr->item;
-}
-
-static struct map_methods map_methods_csv = {
- projection_mg,
- "utf-8",
- map_destroy_csv,
- map_rect_new_csv,
- map_rect_destroy_csv,
- map_rect_get_item_csv,
- map_rect_get_item_byid_csv,
- NULL,
- NULL,
- NULL,
- csv_create_item,
- csv_get_attr,
-};
-
-static struct map_priv *
-map_new_csv(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct map_priv *m = NULL;
- struct attr *attr_types;
- struct attr *item_type_attr;
- struct attr *data;
- struct attr *flags;
- struct attr *charset;
- int bLonFound = 0;
- int bLatFound = 0;
- int attr_cnt = 0;
- enum attr_type* attr_type_list = NULL;
- struct quadtree_node* tree_root = quadtree_node_new(NULL,-180,180,-180,180);
- m = g_new0(struct map_priv, 1);
- m->id = ++map_id;
- m->qitem_hash = g_hash_table_new_full(g_int_hash, g_int_equal, g_free, quadtree_item_free_do);
- m->tree_root = tree_root;
-
- attr_types = attr_search(attrs, NULL, attr_attr_types);
- if(attr_types) {
- enum attr_type* at = attr_types->u.attr_types;
- while(*at != attr_none) {
- attr_type_list = g_realloc(attr_type_list,sizeof(enum attr_type)*(attr_cnt+1));
- attr_type_list[attr_cnt] = *at;
- if(*at==attr_position_latitude) {
- bLatFound = 1;
- }
- else if(*at==attr_position_longitude) {
- bLonFound = 1;
- }
- ++attr_cnt;
- ++at;
- }
- m->attr_cnt = attr_cnt;
- m->attr_types = attr_type_list;
- } else {
- m->attr_types = NULL;
- return NULL;
- }
-
- charset = attr_search(attrs, NULL, attr_charset);
- if(charset) {
- dbg(lvl_debug,"charset:%s\n",charset->u.str);
- m->charset=g_strdup(charset->u.str);
- } else {
- m->charset=g_strdup(map_methods_csv.charset);
- }
-
- if(bLonFound==0 || bLatFound==0) {
- return NULL;
- }
-
- item_type_attr=attr_search(attrs, NULL, attr_item_type);
-
- if( !item_type_attr || item_type_attr->u.item_type==type_none) {
- return NULL;
- }
-
- m->item_type = item_type_attr->u.item_type;
-
- flags=attr_search(attrs, NULL, attr_flags);
- if (flags)
- m->flags=flags->u.num;
-
- *meth = map_methods_csv;
-
- data=attr_search(attrs, NULL, attr_data);
-
- if(data) {
- struct file_wordexp *wexp;
- char **wexp_data;
- FILE *fp;
- wexp=file_wordexp_new(data->u.str);
- wexp_data=file_wordexp_get_array(wexp);
- dbg(lvl_debug,"map_new_csv %s\n", data->u.str);
- m->filename=g_strdup(wexp_data[0]);
- file_wordexp_destroy(wexp);
-
- /*load csv file into quadtree structure*/
- /*if column number is wrong skip*/
- if((fp=fopen(m->filename,"rt"))) {
- const int max_line_len = 256;
- char *linebuf=g_alloca(sizeof(char)*max_line_len);
- while(!feof(fp)) {
- if(fgets(linebuf,max_line_len,fp)) {
- char *line=g_convert(linebuf, -1,"utf-8",m->charset,NULL,NULL,NULL);
- char *line2=NULL;
- char *delim = ",";
- int col_cnt=0;
- char *tok;
- if(!line) {
- dbg(lvl_error,"Error converting '%s' to utf-8 from %s\n",linebuf, m->charset);
- continue;
- }
- if(line[strlen(line)-1]=='\n' || line[strlen(line)-1]=='\r') {
- line[strlen(line)-1] = '\0';
- }
- line2 = g_strdup(line);
- while((tok=strtok( (col_cnt==0)?line:NULL , delim))) {
- ++col_cnt;
- }
-
- if(col_cnt==attr_cnt) {
- int cnt = 0; /*index of current attr*/
- char*tok;
- GList* attr_list = NULL;
- int bAddSum = 1;
- double longitude = 0.0, latitude=0.0;
- struct item *curr_item = item_new("",zoom_max);/*does not use parameters*/
-
- curr_item->type = item_type_attr->u.item_type;
- curr_item->id_lo = m->next_item_idx;
- if (m->flags & 1)
- curr_item->id_hi=1;
- else
- curr_item->id_hi=0;
- curr_item->meth=&methods_csv;
-
-
- while((tok=strtok( (cnt==0)?line2:NULL , delim))) {
- struct attr*curr_attr = g_new0(struct attr,1);
- int bAdd = 1;
- curr_attr->type = attr_types->u.attr_types[cnt];
- if(ATTR_IS_STRING(attr_types->u.attr_types[cnt])) {
- curr_attr->u.str = g_strdup(tok);
- }
- else if(ATTR_IS_INT(attr_types->u.attr_types[cnt])) {
- curr_attr->u.num = atoi(tok);
- }
- else if(ATTR_IS_DOUBLE(attr_types->u.attr_types[cnt])) {
- double *d = g_new(double,1);
- *d = atof(tok);
- curr_attr->u.numd = d;
- if(attr_types->u.attr_types[cnt] == attr_position_longitude) {
- longitude = *d;
- }
- if(attr_types->u.attr_types[cnt] == attr_position_latitude) {
- latitude = *d;
- }
- }
- else {
- /*unknown attribute*/
- bAddSum = bAdd = 0;
- g_free(curr_attr);
- }
-
- if(bAdd) {
- attr_list = g_list_prepend(attr_list, curr_attr);
- }
- ++cnt;
- }
- if(bAddSum && (longitude!=0.0 || latitude!=0.0)) {
- struct quadtree_data* qd = g_new0(struct quadtree_data,1);
- struct quadtree_item* qi =g_new0(struct quadtree_item,1);
- int* pID = g_new(int,1);
- qd->item = curr_item;
- qd->attr_list = attr_list;
- qi->data = qd;
- qi->longitude = longitude;
- qi->latitude = latitude;
- quadtree_add(tree_root, qi, NULL);
- *pID = m->next_item_idx;
- g_hash_table_insert(m->qitem_hash, pID,qi);
- ++m->next_item_idx;
- dbg(lvl_debug,"%s\n",line);
- }
- else {
- g_free(curr_item);
- }
-
- }
- else {
- dbg(lvl_error,"ERROR: Non-matching attr count and column count: %d %d SKIPPING line: %s\n",col_cnt, attr_cnt,line);
- }
- g_free(line);
- g_free(line2);
- }
- }
- fclose(fp);
- }
- else {
- dbg(lvl_error,"Error opening csv map file '%s': %s\n", m->filename, strerror(errno));
- return NULL;
- }
- } else {
- dbg(lvl_debug,"No data attribute, starting with in-memory map\n");
- }
-
- dbg(lvl_info,"%p\n",tree_root);
- return m;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug,"csv: plugin_init\n");
- plugin_register_category_map("csv", map_new_csv);
-}
-
diff --git a/navit/map/csv/csv.h b/navit/map/csv/csv.h
deleted file mode 100644
index 0ea31b18c..000000000
--- a/navit/map/csv/csv.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <glib.h>
-
-#include "attr.h"
-#include "coord.h"
-#include "quadtree.h"
-
-
-struct map_priv {
- int id;
- struct quadtree_node* tree_root;
- int flags;
- GHashTable*qitem_hash;
- char* filename;
- /*need to write map file on exit*/
- int dirty;
- int attr_cnt;
- enum attr_type *attr_types;
- int next_item_idx;
- enum item_type item_type;
- /*list of quadtree items that have no coord set yet ()*/
- GList* new_items;
- char *charset;
-};
-
-struct map_rect_priv {
- struct map_selection *sel;
- struct quadtree_iter *qiter;
- struct quadtree_item *qitem;
- struct coord c;
- int bStarted;
- struct item item;
- struct map_priv *m;
- GList* at_iter;
-};
-
diff --git a/navit/map/csv/quadtree.c b/navit/map/csv/quadtree.c
deleted file mode 100644
index ca6068541..000000000
--- a/navit/map/csv/quadtree.c
+++ /dev/null
@@ -1,727 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <stdlib.h>
-#include <glib.h>
-
-#include "debug.h"
-
-#include "quadtree.h"
-
-#define QUADTREE_NODE_CAPACITY 10
-
-#define MAX_DOUBLE 9999999
-/* Check if two given line segments overlap (1-d case) */
-#define segments_overlap(x11,x12, x21,x22) (((x11)<=(x21) && (x21)<=(x12)) || ((x21)<=(x11) && (x11)<=(x22)))
-/* Check if two given rectanlgles overlap (2-d case) */
-#define rects_overlap(x11,y11,x12,y12, x21,y21,x22,y22) (segments_overlap(x11,x12, x21,x22) && segments_overlap(y11,y12, y21,y22))
-
-/* Structure describing quadtree iterative query */
-struct quadtree_iter {
- /* List representing stack of quad_tree_iter_nodes referring to higher-level quadtree_nodes */
- GList *iter_nodes;
- double xmin,xmax,ymin,ymax;
- /* Current item pointer */
- struct quadtree_item *item;
- void (*item_free)(void *context, struct quadtree_item *qitem);
- void *item_free_context;
-};
-
-/* Structure describing one level of the quadtree iterative query */
-struct quadtree_iter_node {
- struct quadtree_node *node;
- /* Number of subnode being analyzed (for non-leafs) */
- int subnode;
- /* Number of item being analyzed (for leafs) */
- int item;
- /* Number of subitems in items array (for leafs) */
- int node_num;
- /* If the node referenced was a leaf when it was analyzed */
- int is_leaf;
- struct quadtree_item *items[QUADTREE_NODE_CAPACITY];
-};
-
-
-static double
-dist_sq(double x1,double y1,double x2,double y2)
-{
- return (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);
-}
-
-struct quadtree_node*
-quadtree_node_new(struct quadtree_node* parent, double xmin, double xmax, double ymin, double ymax ) {
- struct quadtree_node*ret = g_new0(struct quadtree_node,1);
- ret->xmin = xmin;
- ret->xmax = xmax;
- ret->ymin = ymin;
- ret->ymax = ymax;
- ret->is_leaf = 1;
- ret->parent = parent;
- return ret;
-}
-
-/*
- * searches all four subnodes recursively for the list of items within a rectangle
- */
-void
-quadtree_find_rect_items(struct quadtree_node* this_, double dXMin, double dXMax, double dYMin, double dYMax, GList**out) {
-
- struct quadtree_node* nodes[4] = { this_->aa, this_->ab, this_->ba, this_->bb };
- if( this_->is_leaf ) {
- int i;
- for(i=0;i<this_->node_num;++i) { //select only items within input rectangle
- if(dXMin<=this_->items[i]->longitude && this_->items[i]->longitude<=dXMax &&
- dYMin<=this_->items[i]->latitude && this_->items[i]->latitude<=dYMax
- ) {
- *out=g_list_prepend(*out,this_->items[i]);
- }
- }
- }
- else {
- int i;
- for( i=0;i<4;++i) {
- if(nodes[i] ) {
- //limit flooding
- if(nodes[i]->xmax<dXMin || dXMax<nodes[i]->xmin ||
- nodes[i]->ymax<dYMin || dYMax<nodes[i]->ymin
- ) {
- continue;
- }
- //recurse into subtiles if there is at least one subtile corner within input rectangle
- quadtree_find_rect_items(nodes[i],dXMin,dXMax,dYMin,dYMax,out);
- }
- }
- }
-}
-
-/*
- * searches all four subnodes recursively for the closest item
- */
-struct quadtree_item*
-quadtree_find_nearest_flood(struct quadtree_node* this_, struct quadtree_item* item, double current_max, struct quadtree_node* toSkip) {
- struct quadtree_node* nodes[4] = { this_->aa, this_->ab, this_->ba, this_->bb };
- struct quadtree_item*res = NULL;
- if( this_->is_leaf ) {
- int i;
- double distance_sq = current_max;
- for(i=0;i<this_->node_num;++i) {
- double curr_dist_sq = dist_sq(item->longitude,item->latitude,this_->items[i]->longitude,this_->items[i]->latitude);
- if(curr_dist_sq<distance_sq) {
- distance_sq = curr_dist_sq;
- res = this_->items[i];
- }
- }
- }
- else {
- int i;
- for( i=0;i<4;++i) {
- if(nodes[i] && nodes[i]!=toSkip) {
- //limit flooding
- struct quadtree_item*res_tmp = NULL;
- if(
- dist_sq(nodes[i]->xmin,nodes[i]->ymin,item->longitude,item->latitude)<current_max ||
- dist_sq(nodes[i]->xmax,nodes[i]->ymin,item->longitude,item->latitude)<current_max ||
- dist_sq(nodes[i]->xmax,nodes[i]->ymax,item->longitude,item->latitude)<current_max ||
- dist_sq(nodes[i]->xmin,nodes[i]->ymax,item->longitude,item->latitude)<current_max
- ) {
- res_tmp = quadtree_find_nearest_flood(nodes[i],item,current_max,NULL);
- }
- if(res_tmp) {
- double curr_dist_sq;
- res = res_tmp;
- curr_dist_sq = dist_sq(item->longitude,item->latitude,res->longitude,res->latitude);
- if(curr_dist_sq<current_max) {
- current_max = curr_dist_sq;
- }
- }
- }
- }
- }
- return res;
-}
-
-/*
- * tries to find an item exactly
- */
-struct quadtree_item*
-quadtree_find_item(struct quadtree_node* this_, struct quadtree_item* item) {
- struct quadtree_item*res = NULL;
- if( ! this_ ) {
- return NULL;
- }
- if( this_->is_leaf ) {
- int i;
- for(i=0;i<this_->node_num;++i) {
- //TODO equality check may not be correct on float values! maybe it can be replaced by range check with some tolerance
- if(item->longitude==this_->items[i]->longitude && item->latitude==this_->items[i]->latitude) {
- res = this_->items[i];
- return res;
- }
- }
- return NULL;
- }
- else {
- if(
- this_->aa &&
- this_->aa->xmin<=item->longitude && item->longitude<this_->aa->xmax &&
- this_->aa->ymin<=item->latitude && item->latitude<this_->aa->ymax
- ) {
- res = quadtree_find_item(this_->aa,item);
- }
- else if(
- this_->ab &&
- this_->ab->xmin<=item->longitude && item->longitude<this_->ab->xmax &&
- this_->ab->ymin<=item->latitude && item->latitude<this_->ab->ymax
- ) {
- res = quadtree_find_item(this_->ab,item);
- }
- else if(
- this_->ba &&
- this_->ba->xmin<=item->longitude && item->longitude<this_->ba->xmax &&
- this_->ba->ymin<=item->latitude && item->latitude<this_->ba->ymax
- ) {
- res = quadtree_find_item(this_->ba,item);
- }
- else if(
- this_->bb &&
- this_->bb->xmin<=item->longitude && item->longitude<this_->bb->xmax &&
- this_->bb->ymin<=item->latitude && item->latitude<this_->bb->ymax
- ) {
- res = quadtree_find_item(this_->bb,item);
- }
- else {
- return NULL;
- }
- }
- return res;
-}
-
-/*
- * returns the containing node for an item
- */
-struct quadtree_node*
-quadtree_find_containing_node(struct quadtree_node* root, struct quadtree_item* item)
-{
- struct quadtree_node*res = NULL;
-
- if( ! root ) {
- return NULL;
- }
-
- if( root->is_leaf ) {
- int i;
- for(i=0;i<root->node_num;++i) {
- if(item == root->items[i]) {
- res = root;
- }
- }
- }
- else {
- if(
- root->aa &&
- root->aa->xmin<=item->longitude && item->longitude<root->aa->xmax &&
- root->aa->ymin<=item->latitude && item->latitude<root->aa->ymax
- ) {
- res = quadtree_find_containing_node(root->aa,item);
- }
- else if(
- root->ab &&
- root->ab->xmin<=item->longitude && item->longitude<root->ab->xmax &&
- root->ab->ymin<=item->latitude && item->latitude<root->ab->ymax
- ) {
- res = quadtree_find_containing_node(root->ab,item);
- }
- else if(
- root->ba &&
- root->ba->xmin<=item->longitude && item->longitude<root->ba->xmax &&
- root->ba->ymin<=item->latitude && item->latitude<root->ba->ymax
- ) {
- res = quadtree_find_containing_node(root->ba,item);
- }
- else if(
- root->bb &&
- root->bb->xmin<=item->longitude && item->longitude<root->bb->xmax &&
- root->bb->ymin<=item->latitude && item->latitude<root->bb->ymax
- ) {
- res = quadtree_find_containing_node(root->bb,item);
- }
- else {
- //this should not happen
- }
- }
- return res;
-}
-
-
-int quadtree_delete_item(struct quadtree_node* root, struct quadtree_item* item)
-{
-
- struct quadtree_node* qn = quadtree_find_containing_node(root,item);
- int i, bFound=0;
-
- if(!qn || !qn->node_num) {
- return 0;
- }
-
- for(i=0;i<qn->node_num;++i) {
- if( qn->items[i] == item) {
- qn->items[i]->deleted=1;
- bFound=1;
- }
- }
- return bFound;
-}
-
-
-/*
- * tries to find closest item, first it descend into the quadtree as much as possible, then if no point is found go up n levels and flood
- */
-struct quadtree_item*
-quadtree_find_nearest(struct quadtree_node* this_, struct quadtree_item* item) {
- struct quadtree_item*res = NULL;
- double distance_sq = MAX_DOUBLE;
- if( ! this_ ) {
- return NULL;
- }
- if( this_->is_leaf ) {
- int i;
- for(i=0;i<this_->node_num;++i) {
- double curr_dist_sq = dist_sq(item->longitude,item->latitude,this_->items[i]->longitude,this_->items[i]->latitude);
- if(curr_dist_sq<distance_sq) {
- distance_sq = curr_dist_sq;
- res = this_->items[i];
- }
- }
- //go up n levels
- if(!res && this_->parent) {
- struct quadtree_item*res2 = NULL;
- struct quadtree_node* anchestor = this_->parent;
- int cnt = 0;
- while (anchestor->parent && cnt<4) {
- anchestor = anchestor->parent;
- ++cnt;
- }
- res2 = quadtree_find_nearest_flood(anchestor,item,distance_sq,NULL);
- if(res2) {
- res = res2;
- }
- }
- } else {
- if(
- this_->aa &&
- this_->aa->xmin<=item->longitude && item->longitude<this_->aa->xmax &&
- this_->aa->ymin<=item->latitude && item->latitude<this_->aa->ymax
- ) {
- res = quadtree_find_nearest(this_->aa,item);
- }
- else if(
- this_->ab &&
- this_->ab->xmin<=item->longitude && item->longitude<this_->ab->xmax &&
- this_->ab->ymin<=item->latitude && item->latitude<this_->ab->ymax
- ) {
- res = quadtree_find_nearest(this_->ab,item);
- }
- else if(
- this_->ba &&
- this_->ba->xmin<=item->longitude && item->longitude<this_->ba->xmax &&
- this_->ba->ymin<=item->latitude && item->latitude<this_->ba->ymax
- ) {
- res = quadtree_find_nearest(this_->ba,item);
- }
- else if(
- this_->bb &&
- this_->bb->xmin<=item->longitude && item->longitude<this_->bb->xmax &&
- this_->bb->ymin<=item->latitude && item->latitude<this_->bb->ymax
- ) {
- res = quadtree_find_nearest(this_->bb,item);
- }
- else {
- if(this_->parent) {
- //go up two levels
- struct quadtree_node* anchestor = this_->parent;
- int cnt = 0;
- while (anchestor->parent && cnt<4) {
- anchestor = anchestor->parent;
- ++cnt;
- }
- res = quadtree_find_nearest_flood(anchestor,item,distance_sq,NULL);
- }
- }
- }
- return res;
-
-}
-
-
-/**
- * @brief Free space occupied by deleted unreferenced items.
- * @param node pointer to the quadtree node
- * @param iter Quadtree iteration context.
- * @return nothing
- */
-void quadtree_node_drop_garbage(struct quadtree_node* node, struct quadtree_iter *iter)
-{
- int i,j;
- int node_num=node->node_num;
- dbg(lvl_debug,"Processing unreferenced subnode children...\n");
- for(i=0,j=0;i<node_num;i++) {
- if(node->items[i]->deleted && !node->items[i]->ref_count) {
- if(iter->item_free) {
- (iter->item_free)(iter->item_free_context, node->items[i]);
- } else {
- g_free(node->items[i]);
- }
- node->node_num--;
- node->items[i]=NULL;
- } else {
- node->items[j++]=node->items[i];
- }
- if(i>j)
- node->items[i]=NULL;
- }
-}
-
-/**
- * @brief Add new node to quadtree.
- * @param this_ pointer to the quadtree (root) node
- * @param item item to add
- * @param iter Quadtree iteration context. Can be NULL if no garbage collection is needed.
- * @return nothing
- */
-void
-quadtree_add(struct quadtree_node* this_, struct quadtree_item* item, struct quadtree_iter *iter) {
- if( this_->is_leaf ) {
- int bSame = 1;
- int i;
-
- if(iter)
- quadtree_node_drop_garbage(this_, iter);
-
- if(QUADTREE_NODE_CAPACITY-1 == this_->node_num) {
- double lon, lat;
- //avoid infinite recursion when all elements have the same coordinate
- lon = this_->items[0]->longitude;
- lat = this_->items[0]->latitude;
- for(i=1;i<this_->node_num;++i) {
- if (lon != this_->items[i]->longitude || lat != this_->items[i]->latitude) {
- bSame = 0;
- break;
- }
- }
- if (bSame) {
- //FIXME: memleak and items thrown away if more than QUADTREE_NODE_CAPACITY-1 items with same coordinates added.
- dbg(lvl_error,"Unable to add another item with same coordinates. Throwing item to the ground. Will leak %p.\n",item);
- return;
- }
- this_->items[this_->node_num++] = item;
- quadtree_split(this_);
- } else {
- this_->items[this_->node_num++] = item;
- }
- }
- else {
- if(
- this_->xmin<=item->longitude && item->longitude<this_->xmin+(this_->xmax-this_->xmin)/2.0 &&
- this_->ymin<=item->latitude && item->latitude<this_->ymin+(this_->ymax-this_->ymin)/2.0
- ) {
- if(!this_->aa) {
- this_->aa = quadtree_node_new( this_, this_->xmin, this_->xmin+(this_->xmax-this_->xmin)/2.0 , this_->ymin, this_->ymin+(this_->ymax-this_->ymin)/2.0 );
- }
- quadtree_add(this_->aa,item,iter);
- }
- else if(
- this_->xmin+(this_->xmax-this_->xmin)/2.0<=item->longitude && item->longitude<this_->xmax &&
- this_->ymin<=item->latitude && item->latitude<this_->ymin+(this_->ymax-this_->ymin)/2.0
- ) {
- if(!this_->ab) {
- this_->ab = quadtree_node_new( this_, this_->xmin+(this_->xmax-this_->xmin)/2.0, this_->xmax , this_->ymin, this_->ymin+(this_->ymax-this_->ymin)/2.0 );
- }
- quadtree_add(this_->ab,item,iter);
- }
- else if(
- this_->xmin<=item->longitude && item->longitude<this_->xmin+(this_->xmax-this_->xmin)/2.0 &&
- this_->ymin+(this_->ymax-this_->ymin)/2.0<=item->latitude && item->latitude<this_->ymax
- ) {
- if(!this_->ba) {
- this_->ba = quadtree_node_new( this_, this_->xmin, this_->xmin+(this_->xmax-this_->xmin)/2.0 , this_->ymin+(this_->ymax-this_->ymin)/2.0 , this_->ymax);
- }
- quadtree_add(this_->ba,item,iter);
- }
- else if(
- this_->xmin+(this_->xmax-this_->xmin)/2.0<=item->longitude && item->longitude<this_->xmax &&
- this_->ymin+(this_->ymax-this_->ymin)/2.0<=item->latitude && item->latitude<this_->ymax
- ) {
- if(!this_->bb) {
- this_->bb = quadtree_node_new( this_, this_->xmin+(this_->xmax-this_->xmin)/2.0, this_->xmax , this_->ymin+(this_->ymax-this_->ymin)/2.0 , this_->ymax);
- }
- quadtree_add(this_->bb,item,iter);
- }
- }
-}
-
-void
-quadtree_split(struct quadtree_node* this_) {
- int i;
- this_->is_leaf = 0;
- for(i=0;i<this_->node_num;++i) {
- if(
- this_->xmin<=this_->items[i]->longitude && this_->items[i]->longitude<this_->xmin+(this_->xmax-this_->xmin)/2.0 &&
- this_->ymin<=this_->items[i]->latitude && this_->items[i]->latitude<this_->ymin+(this_->ymax-this_->ymin)/2.0
- ) {
- if(!this_->aa) {
- this_->aa = quadtree_node_new( this_, this_->xmin, this_->xmin+(this_->xmax-this_->xmin)/2.0 , this_->ymin, this_->ymin+(this_->ymax-this_->ymin)/2.0 );
- }
- quadtree_add(this_->aa,this_->items[i],NULL);
- }
- else if(
- this_->xmin+(this_->xmax-this_->xmin)/2.0<=this_->items[i]->longitude && this_->items[i]->longitude<this_->xmax &&
- this_->ymin<=this_->items[i]->latitude && this_->items[i]->latitude<this_->ymin+(this_->ymax-this_->ymin)/2.0
- ) {
- if(!this_->ab) {
- this_->ab = quadtree_node_new( this_, this_->xmin+(this_->xmax-this_->xmin)/2.0, this_->xmax , this_->ymin, this_->ymin+(this_->ymax-this_->ymin)/2.0 );
- }
- quadtree_add(this_->ab,this_->items[i],NULL);
- }
- else if(
- this_->xmin<=this_->items[i]->longitude && this_->items[i]->longitude<this_->xmin+(this_->xmax-this_->xmin)/2.0 &&
- this_->ymin+(this_->ymax-this_->ymin)/2.0<=this_->items[i]->latitude && this_->items[i]->latitude<this_->ymax
- ) {
- if(!this_->ba) {
- this_->ba = quadtree_node_new( this_, this_->xmin, this_->xmin+(this_->xmax-this_->xmin)/2.0 , this_->ymin+(this_->ymax-this_->ymin)/2.0 , this_->ymax);
- }
- quadtree_add(this_->ba,this_->items[i],NULL);
- }
- else if(
- this_->xmin+(this_->xmax-this_->xmin)/2.0<=this_->items[i]->longitude && this_->items[i]->longitude<this_->xmax &&
- this_->ymin+(this_->ymax-this_->ymin)/2.0<=this_->items[i]->latitude && this_->items[i]->latitude<this_->ymax
- ) {
- if(!this_->bb) {
- this_->bb = quadtree_node_new( this_, this_->xmin+(this_->xmax-this_->xmin)/2.0, this_->xmax , this_->ymin+(this_->ymax-this_->ymin)/2.0 , this_->ymax);
- }
- quadtree_add(this_->bb,this_->items[i],NULL);
- }
- this_->items[i]=NULL;
- }
- this_->node_num = 0;
-}
-
-void
-quadtree_destroy(struct quadtree_node* this_) {
- if(this_->aa) {
- quadtree_destroy(this_->aa);
- this_->aa = NULL;
- }
- if(this_->ab) {
- quadtree_destroy(this_->ab);
- this_->ab = NULL;
- }
- if(this_->ba) {
- quadtree_destroy(this_->ba);
- this_->ba = NULL;
- }
- if(this_->bb) {
- quadtree_destroy(this_->bb);
- this_->bb = NULL;
- }
- free(this_);
-}
-
-
-/*
- * @brief Start iterating over quadtree items not marked for deletion.
- * @param this_ Pointer to the quadtree root node.
- * @param dXMin,dXMax,dYMin,dYMax boundig box of area of interest.
- * @param item_free function to be called to free the qitem, first parameter would be context, second parameter - actual qitem pointer to free
- * if this parameter is NULL, nothing would be called to free qitem pointer (possible massive memleak unless you store each qitem pointer in some
- * alternate storage)
- * @param item_free_context data to be passed as a first parameter to item_free function
- * @return pointer to the quad tree iteration structure.
- */
-struct quadtree_iter *quadtree_query(struct quadtree_node *this_, double dXMin, double dXMax, double dYMin, double dYMax,void (*item_free)(void *context, struct quadtree_item *qitem), void *item_free_context)
-{
- struct quadtree_iter *ret=g_new0(struct quadtree_iter,1);
- struct quadtree_iter_node *n=g_new0(struct quadtree_iter_node,1);
- ret->xmin=dXMin;
- ret->xmax=dXMax;
- ret->ymin=dYMin;
- ret->ymax=dYMax;
- dbg(lvl_debug,"%f %f %f %f\n",dXMin,dXMax,dYMin,dYMax)
- ret->item_free=item_free;
- ret->item_free_context=item_free_context;
- n->node=this_;
- ret->iter_nodes=g_list_prepend(ret->iter_nodes,n);
- n->is_leaf=this_->is_leaf;
- if(this_->is_leaf) {
- int i;
- n->node_num=this_->node_num;
- for(i=0;i<n->node_num;i++) {
- n->items[i]=this_->items[i];
- n->items[i]->ref_count++;
- }
- }
-
- this_->ref_count++;
- dbg(lvl_debug,"Query %p \n",this_)
- return ret;
-
-}
-
-/*
- * @brief End iteration.
- * @param iter Pointer to the quadtree iteration structure.
- */
-void quadtree_query_free(struct quadtree_iter *iter)
-{
- //Get the rest of the data to collect garbage and dereference all the items/nodes
- //TODO: No need to iterate the whole tree here. Just dereference nodes/items (if any).
- while(quadtree_item_next(iter));
- g_free(iter);
-}
-
-
-/*
- * @brief Mark current item of iterator for deletion.
- * @param iter Pointer to the quadtree iteration structure.
- */
-void quadtree_item_delete(struct quadtree_iter *iter)
-{
- if(iter->item)
- iter->item->deleted=1;
-}
-
-/*
- * @brief Get next item from the quadtree. Any met unreferenced items/nodes marked for deletion will be freed here.
- * @param iter Pointer to the quadtree iteration structure.
- * @return pointer to the next item, or NULL if no items are left.
- */
-struct quadtree_item * quadtree_item_next(struct quadtree_iter *iter)
-{
- struct quadtree_iter_node *iter_node;
- struct quadtree_node *subnode;
-
- if(iter->item) {
- iter->item->ref_count--;
- iter->item=NULL;
- }
-
- while(iter->iter_nodes) {
- struct quadtree_node *nodes[4];
- int i;
- iter_node=iter->iter_nodes->data;
-
- if(iter_node->is_leaf) {
- /* Try to find undeleted item in the current node */
- dbg(lvl_debug,"find item %p %p ...\n",iter->iter_nodes,iter->iter_nodes->data);
- while(iter_node->item<iter_node->node_num) {
- dbg(lvl_debug,"%d %d\n",iter_node->item,iter_node->items[iter_node->item]->deleted);
- if(iter_node->items[iter_node->item]->deleted) {
- iter_node->item++;
- continue;
- }
- iter->item=iter_node->items[iter_node->item];
- iter_node->item++;
- dbg(lvl_debug,"Returning %p\n",iter->item);
- iter->item->ref_count++;
- return iter->item;
- }
- for(i=0;i<iter_node->node_num;i++) {
- iter_node->items[i]->ref_count--;
- }
- } else {
- /* No items left, try to find non-empty subnode */
- nodes[0]=iter_node->node->aa;
- nodes[1]=iter_node->node->ab;
- nodes[2]=iter_node->node->ba;
- nodes[3]=iter_node->node->bb;
-
- for(subnode=NULL;!subnode && iter_node->subnode<4;iter_node->subnode++) {
- i=iter_node->subnode;
- if(!nodes[i] || !rects_overlap(nodes[i]->xmin, nodes[i]->ymin, nodes[i]->xmax, nodes[i]->ymax, iter->xmin, iter->ymin, iter->xmax, iter->ymax))
- continue;
- dbg(lvl_debug,"%f %f %f %f\n",nodes[i]->xmin, nodes[i]->xmax, nodes[i]->ymin, nodes[i]->ymax)
- subnode=nodes[i];
- }
-
- if(subnode) {
- /* Go one level deeper */
- dbg(lvl_debug,"Go one level deeper...\n");
- iter_node=g_new0(struct quadtree_iter_node, 1);
- iter_node->node=subnode;
- iter_node->is_leaf=subnode->is_leaf;
- if(iter_node->is_leaf) {
- int i;
- iter_node->node_num=subnode->node_num;
- for(i=0;i<iter_node->node_num;i++) {
- iter_node->items[i]=subnode->items[i];
- iter_node->items[i]->ref_count++;
- }
- }
- subnode->ref_count++;
- iter->iter_nodes=g_list_prepend(iter->iter_nodes,iter_node);
- continue;
- }
- }
-
- /* No nodes and items left, fix up current subnode... */
- iter_node=iter->iter_nodes->data;
- subnode=iter_node->node;
- subnode->ref_count--;
-
- if(!subnode->aa && !subnode->ab && !subnode->ba && !subnode->bb)
- subnode->is_leaf=1;
-
- /* 1. free deleted unreferenced items */
- quadtree_node_drop_garbage(subnode, iter);
-
- /* 2. remove empty leaf subnode if it's unreferenced */
-
- if(!subnode->ref_count && !subnode->node_num && subnode->is_leaf ) {
- dbg(lvl_debug,"Going to delete an empty unreferenced leaf subnode...\n");
-
- if(subnode->parent) {
- if(subnode->parent->aa==subnode) {
- subnode->parent->aa=NULL;
- } else if(subnode->parent->ab==subnode) {
- subnode->parent->ab=NULL;
- } else if(subnode->parent->ba==subnode) {
- subnode->parent->ba=NULL;
- } else if(subnode->parent->bb==subnode) {
- subnode->parent->bb=NULL;
- } else {
- dbg(lvl_error,"Found Quadtree structure corruption while trying to free an empty node.\n");
- }
-
- if(!subnode->parent->aa && !subnode->parent->ab && !subnode->parent->ba && !subnode->parent->bb )
- subnode->parent->is_leaf=1;
- g_free(subnode);
- } else
- dbg(lvl_debug,"Quadtree is empty. NOT deleting the root subnode...\n");
-
- }
-
- /* Go one step towards root */
- dbg(lvl_info,"Going towards root...\n");
- g_free(iter->iter_nodes->data);
- iter->iter_nodes=g_list_delete_link(iter->iter_nodes,iter->iter_nodes);
- }
-
- iter->item=NULL;
- return NULL;
-}
-
diff --git a/navit/map/csv/quadtree.h b/navit/map/csv/quadtree.h
deleted file mode 100644
index 389339456..000000000
--- a/navit/map/csv/quadtree.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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.
- */
-
-#ifndef QUADTREE_H
-#define QUADTREE_H
-
-#include <glib.h>
-
-#define QUADTREE_NODE_CAPACITY 10
-
-struct quadtree_item {
- double longitude;
- double latitude;
- int ref_count;
- int deleted;
- void *data;
-};
-
-struct quadtree_node {
- int node_num;
- struct quadtree_item *items[QUADTREE_NODE_CAPACITY];
- struct quadtree_node *aa;
- struct quadtree_node *ab;
- struct quadtree_node *ba;
- struct quadtree_node *bb;
- double xmin, xmax, ymin, ymax;
- int is_leaf;
- struct quadtree_node*parent;
- int ref_count;
-};
-
-struct quadtree_iter;
-
-struct quadtree_node* quadtree_node_new(struct quadtree_node* parent, double xmin, double xmax, double ymin, double ymax );
-struct quadtree_item* quadtree_find_nearest_flood(struct quadtree_node* this_, struct quadtree_item* item, double current_max, struct quadtree_node* toSkip);
-struct quadtree_item* quadtree_find_nearest(struct quadtree_node* this_, struct quadtree_item* item);
-struct quadtree_item* quadtree_find_item(struct quadtree_node* this_, struct quadtree_item* item);
-struct quadtree_node* quadtree_find_containing_node(struct quadtree_node* root, struct quadtree_item* item);
-int quadtree_delete_item(struct quadtree_node* root, struct quadtree_item* item);
-void quadtree_find_rect_items(struct quadtree_node* this_, double dXMin, double dXMax, double dYMin, double dYMax, GList**out);
-void quadtree_split(struct quadtree_node* this_);
-void quadtree_add(struct quadtree_node* this_, struct quadtree_item* item, struct quadtree_iter* iter);
-void quadtree_destroy(struct quadtree_node* this_);
-struct quadtree_iter *quadtree_query(struct quadtree_node *this_, double dXMin, double dXMax, double dYMin, double dYMax,void (*item_free)(void *context, struct quadtree_item *qitem), void *context);
-struct quadtree_item * quadtree_item_next(struct quadtree_iter *iter);
-void quadtree_query_free(struct quadtree_iter *iter);
-void quadtree_item_delete(struct quadtree_iter *iter);
-struct quadtree_data *quadtree_data_dup(struct quadtree_data *qdata);
-void quadtree_node_drop_garbage(struct quadtree_node* node, struct quadtree_iter *iter);
-
-#endif
diff --git a/navit/map/filter/CMakeLists.txt b/navit/map/filter/CMakeLists.txt
deleted file mode 100644
index 15da3f3c6..000000000
--- a/navit/map/filter/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(map_filter filter.c)
diff --git a/navit/map/filter/filter.c b/navit/map/filter/filter.c
deleted file mode 100644
index cecae7fc0..000000000
--- a/navit/map/filter/filter.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include "config.h"
-#include "debug.h"
-#include "plugin.h"
-#include "projection.h"
-#include "item.h"
-#include "map.h"
-#include "maptype.h"
-#include "attr.h"
-#include "coord.h"
-#include "transform.h"
-#include "file.h"
-#include "zipfile.h"
-#include "linguistics.h"
-#include "endianess.h"
-
-struct filter_entry {
- enum item_type first,last;
- enum attr_type cond_attr;
- char *cond_str;
-};
-
-struct filter {
- GList *old;
- GList *new;
-};
-
-struct map_priv {
- struct map *parent;
- GList *filters;
-};
-
-struct map_rect_priv {
- struct map_selection *sel;
- struct map_priv *m;
- struct map_rect *parent;
- struct item item,*parent_item;
-};
-
-struct map_search_priv {
- struct map_rect_priv *mr;
-};
-
-static enum item_type
-filter_type(struct map_priv *m, struct item *item)
-{
- GList *filters=m->filters;
- struct filter_entry *entry;
- while (filters) {
- struct filter *filter=filters->data;
- int pos=0,count=0;
- GList *old,*new;
- old=filter->old;
- while (old) {
- entry=old->data;
- if (item->type >= entry->first && item->type <= entry->last)
- break;
- pos+=entry->last-entry->first+1;
- old=g_list_next(old);
- }
- if (old && entry && entry->cond_attr != attr_none) {
- struct attr attr;
- if (entry->cond_attr == attr_id) {
- char idstr[64];
- sprintf(idstr,"0x%x 0x%x",item->id_hi,item->id_lo);
- if (strcmp(entry->cond_str, idstr))
- old=NULL;
- } else if (!item_attr_get(item, entry->cond_attr, &attr)) {
- old=NULL;
- } else {
- char *wildcard=strchr(entry->cond_str,'*');
- int len;
- if (!wildcard)
- len=strlen(entry->cond_str)+1;
- else
- len=wildcard-entry->cond_str;
- if (strncmp(entry->cond_str, attr.u.str, len))
- old=NULL;
- }
- item_attr_rewind(item);
- }
- if (old) {
- new=filter->new;
- if (!new)
- return item->type;
- while (new) {
- struct filter_entry *entry=new->data;
- count+=entry->last-entry->first+1;
- new=g_list_next(new);
- }
- pos%=count;
- new=filter->new;
- while (new) {
- struct filter_entry *entry=new->data;
- if (pos <= entry->last-entry->first)
- return entry->first+pos;
- pos-=entry->last-entry->first+1;
- new=g_list_next(new);
- }
- }
- filters=g_list_next(filters);
- }
- return item->type;
-}
-
-static void
-free_filter_entry(struct filter_entry *filter)
-{
- g_free(filter->cond_str);
- g_free(filter);
-}
-
-static void
-free_filter(struct filter *filter)
-{
- g_list_foreach(filter->old, (GFunc)free_filter_entry, NULL);
- g_list_free(filter->old);
- filter->old=NULL;
- g_list_foreach(filter->new, (GFunc)free_filter_entry, NULL);
- g_list_free(filter->new);
- filter->new=NULL;
-}
-
-static void
-free_filters(struct map_priv *m)
-{
- g_list_foreach(m->filters, (GFunc)free_filter, NULL);
- g_list_free(m->filters);
- m->filters=NULL;
-}
-
-static GList *
-parse_filter(char *filter)
-{
- GList *ret=NULL;
- for (;;) {
- char *condition,*range,*next=strchr(filter,',');
- struct filter_entry *entry=g_new0(struct filter_entry, 1);
- if (next)
- *next++='\0';
- condition=strchr(filter,'[');
- if (condition)
- *condition++='\0';
- range=strchr(filter,'-');
- if (range)
- *range++='\0';
- if (!strcmp(filter,"*") && !range) {
- entry->first=type_none;
- entry->last=type_last;
- } else {
- entry->first=item_from_name(filter);
- if (range)
- entry->last=item_from_name(range);
- else
- entry->last=entry->first;
- }
- if (condition) {
- char *end=strchr(condition,']');
- char *eq=strchr(condition,'=');
- if (end && eq && eq < end) {
- *end='\0';
- *eq++='\0';
- if (eq[0] == '"' || eq[0] == '\'') {
- char *quote=strchr(eq+1,eq[0]);
- if (quote) {
- eq++;
- *quote='\0';
- }
- }
- entry->cond_attr=attr_from_name(condition);
- entry->cond_str=g_strdup(eq);
- }
- }
- ret=g_list_append(ret, entry);
- if (!next)
- break;
- filter=next;
- }
- return ret;
-}
-
-static void
-parse_filters(struct map_priv *m, char *filter)
-{
- char *filter_copy=g_strdup(filter);
- char *str=filter_copy;
-
- free_filters(m);
- for (;;) {
- char *pos,*bracket,*eq,*next=strchr(str,';');
- struct filter *filter=g_new0(struct filter, 1);
- if (next)
- *next++='\0';
- pos=str;
- for (;;) {
- eq=strchr(pos,'=');
- if (eq) {
- bracket=strchr(pos,'[');
- if (bracket && bracket < eq) {
- bracket=strchr(pos,']');
- if (bracket)
- pos=bracket+1;
- else {
- eq=NULL;
- break;
- }
- } else {
- *eq++='\0';
- break;
- }
- } else
- break;
- }
- filter->old=parse_filter(str);
- if (eq)
- filter->new=parse_filter(eq);
- m->filters=g_list_append(m->filters,filter);
- if (!next)
- break;
- str=next;
- }
- g_free(filter_copy);
-}
-
-static void
-map_filter_coord_rewind(void *priv_data)
-{
- struct map_rect_priv *mr=priv_data;
- item_coord_rewind(mr->parent_item);
-}
-
-static int
-map_filter_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *mr=priv_data;
- return item_coord_get(mr->parent_item, c, count);
-}
-
-static void
-map_filter_attr_rewind(void *priv_data)
-{
- struct map_rect_priv *mr=priv_data;
- item_attr_rewind(mr->parent_item);
-}
-
-static int
-map_filter_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *mr=priv_data;
- return item_attr_get(mr->parent_item, attr_type, attr);
-}
-
-static struct item_methods methods_filter = {
- map_filter_coord_rewind,
- map_filter_coord_get,
- map_filter_attr_rewind,
- map_filter_attr_get,
-};
-
-static struct map_rect_priv *
-map_filter_rect_new(struct map_priv *map, struct map_selection *sel)
-{
- struct map_rect_priv *mr=NULL;
- struct map_rect *parent;
- parent=map_rect_new(map->parent, sel);
- if (parent) {
- mr=g_new0(struct map_rect_priv, 1);
- mr->m=map;
- mr->sel=sel;
- mr->parent=parent;
- mr->item.meth=&methods_filter;
- mr->item.priv_data=mr;
- }
- return mr;
-}
-
-static void
-map_filter_rect_destroy(struct map_rect_priv *mr)
-{
- map_rect_destroy(mr->parent);
- g_free(mr);
-}
-
-static struct item *
-map_filter_rect_get_item(struct map_rect_priv *mr)
-{
- mr->parent_item=map_rect_get_item(mr->parent);
- if (!mr->parent_item)
- return NULL;
- mr->item.type=filter_type(mr->m,mr->parent_item);
- mr->item.id_lo=mr->parent_item->id_lo;
- mr->item.id_hi=mr->parent_item->id_hi;
- return &mr->item;
-}
-
-static struct item *
-map_filter_rect_get_item_byid(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- dbg(lvl_debug,"enter\n");
- mr->parent_item=map_rect_get_item_byid(mr->parent, id_hi, id_lo);
- if (!mr->parent_item)
- return NULL;
- mr->item.type=filter_type(mr->m,mr->parent_item);
- mr->item.id_lo=mr->parent_item->id_lo;
- mr->item.id_hi=mr->parent_item->id_hi;
- return &mr->item;
-}
-
-static struct map_search_priv *
-map_filter_search_new(struct map_priv *map, struct item *item, struct attr *search, int partial)
-{
- dbg(lvl_debug,"enter\n");
- return NULL;
-}
-
-static struct item *
-map_filter_search_get_item(struct map_search_priv *map_search)
-{
- dbg(lvl_debug,"enter\n");
- return NULL;
-}
-
-static void
-map_filter_search_destroy(struct map_search_priv *ms)
-{
- dbg(lvl_debug,"enter\n");
-}
-
-static void
-map_filter_destroy(struct map_priv *m)
-{
- map_destroy(m->parent);
- g_free(m);
-}
-
-static int
-map_filter_set_attr(struct map_priv *m, struct attr *attr)
-{
- switch (attr->type) {
- case attr_filter:
- parse_filters(m,attr->u.str);
- return 1;
- default:
- return 0;
- }
-}
-
-
-static struct map_methods map_methods_filter = {
- projection_mg,
- "utf-8",
- map_filter_destroy,
- map_filter_rect_new,
- map_filter_rect_destroy,
- map_filter_rect_get_item,
- map_filter_rect_get_item_byid,
- map_filter_search_new,
- map_filter_search_destroy,
- map_filter_search_get_item,
- NULL,
- NULL,
- map_filter_set_attr,
-};
-
-
-
-static struct map_priv *
-map_filter_new(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct map_priv *m=NULL;
- struct attr **parent_attrs,type,*subtype=attr_search(attrs, NULL, attr_subtype),*filter=attr_search(attrs, NULL, attr_filter);
- struct map *map;
- int i,j;
- if (! subtype || !filter)
- return NULL;
- i=0;
- while (attrs[i])
- i++;
- parent_attrs=g_new(struct attr *,i+1);
- i=0;
- j=0;
- while (attrs[i]) {
- if (attrs[i]->type != attr_filter && attrs[i]->type != attr_type) {
- if (attrs[i]->type == attr_subtype) {
- type=*attrs[i];
- type.type = attr_type;
- parent_attrs[j]=&type;
- } else
- parent_attrs[j]=attrs[i];
- j++;
- }
- i++;
- }
- parent_attrs[j]=NULL;
- *meth=map_methods_filter;
- map=map_new(NULL, parent_attrs);
- if (map) {
- m=g_new0(struct map_priv, 1);
- m->parent=map;
- parse_filters(m,filter->u.str);
- }
- g_free(parent_attrs);
- return m;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug,"filter: plugin_init\n");
- plugin_register_category_map("filter", map_filter_new);
-}
-
diff --git a/navit/map/garmin/CMakeLists.txt b/navit/map/garmin/CMakeLists.txt
deleted file mode 100644
index b52c8c577..000000000
--- a/navit/map/garmin/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-add_executable(gentypes gentypes.c)
-
-include_directories( ${CMAKE_CURRENT_BINARY_DIR})
-
-# add the command to generate the source code
-add_custom_command (
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/g2nbuiltin.h
- COMMAND gentypes ${CMAKE_CURRENT_SOURCE_DIR}/garmintypes.txt ${CMAKE_CURRENT_BINARY_DIR}/g2nbuiltin.h
- DEPENDS gentypes
- )
-
-module_add_library(map_garmin garmin.c gar2navit.c g2nbuiltin.h)
diff --git a/navit/map/garmin/gar2navit.c b/navit/map/garmin/gar2navit.c
deleted file mode 100644
index 7c4450401..000000000
--- a/navit/map/garmin/gar2navit.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- Copyright (C) 2007 Alexander Atanasov <aatanasov@gmail.com>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- 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
-
- Garmin and MapSource are registered trademarks or trademarks
- of Garmin Ltd. or one of its subsidiaries.
-
-*/
-
-/*
-File format is:
-
-POINT
-GROUP,0x0100 = town_label_1e5, Megapolis (10M +)
-GROUP,0x0200 = town_label_5e4, Megapolis (5-10M)
-...
-GROUP,0x1e00-0x1e3f = district_label, District, Province, State Name
-...
-POLYLINE
-GROUP,0x00 = ALL, street_1_land, Road
-GROUP,0x01 = MCTL, highway_land, Major HWY thick
-GROUP,0x02 = MCTL, street_4_land, Principal HWY-thick
-GROUP,0x03 = MCTL, street_2_land, Principal HWY-medium
-....
-POLYGONE
-GROUP,0x01 = town_poly, City (>200k)
-GROUP,0x02 = town_poly, City (<200k)
-GROUP,0x03 = town_poly, Village
-
-GROUP is
-0 - RGN1
-1 - RGN2-4
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <malloc.h>
-#include "item.h"
-#include "attr.h"
-#include "garmin.h"
-#include "gar2navit.h"
-
-static int add_def(struct gar2nav_conv *conv, int type, unsigned short minid,
- unsigned short maxid, unsigned int group, char *ntype,
- char *descr)
-{
- enum item_type it;
- struct gar2navit *g2n;
- dlog(11, "group=%d type=%d routable=%u min=%04X max=%04X ntype=%s descr=%s\n",
- group, type, minid, maxid, ntype, descr);
- it = item_from_name(ntype);
- if (it==type_none) {
- dlog(1, "Please define: %s\n", ntype);
- }
- g2n = calloc(1, sizeof(*g2n));
- if (!g2n)
- return -1;
- g2n->id = minid;
- g2n->maxid = maxid;
- g2n->ntype = it;
- g2n->descr = strdup(descr);
- g2n->group = group;
- if (type == 1) {
- g2n->next = conv->points;
- conv->points = g2n;
- } else if (type == 2) {
- g2n->next = conv->polylines;
- conv->polylines = g2n;
- } else if (type == 3) {
- g2n->next = conv->polygons;
- conv->polygons = g2n;
- }
- return 0;
-}
-
-static int load_types_file(char *file, struct gar2nav_conv *conv)
-{
- char buf[4096];
- char descr[4096];
- char ntype[4096];
- FILE *fp;
- unsigned int minid, maxid, group;
- int rc;
- int type = -1;
-
- fp = fopen(file, "r");
- if (!fp)
- return -1;
- while (fgets(buf, sizeof(buf), fp)) {
- if (*buf == '#' || *buf == '\n')
- continue;
- if (!strncasecmp(buf, "POINT", 5)) {
- type = 1;
- continue;
- } else if (!strncasecmp(buf, "POI", 3)) {
- type = 1;
- continue;
- } else if (!strncasecmp(buf, "POLYLINE", 8)) {
- type = 2;
- continue;
- } else if (!strncasecmp(buf, "POLYGONE", 8)) {
- type = 3;
- continue;
- }
- // assume only lines are routable
- rc = sscanf(buf, "%d, 0x%04X - 0x%04X = %[^\t , ] , %[^\n]",
- &group, &minid, &maxid, ntype, descr);
- if (rc != 5) {
- maxid = 0;
- rc = sscanf(buf, "%d,0x%04X = %[^\t, ], %[^\n]",
- &group, &minid, ntype, descr);
- if (rc != 4) {
- dlog(1, "Invalid line rc=%d:[%s]\n",rc, buf);
- dlog(1, "minid=%04X ntype=[%s] des=[%s]\n",
- minid, ntype, descr);
- continue;
- }
- }
- add_def(conv, type, minid, maxid, group, ntype, descr);
- }
- fclose(fp);
- return 1;
-}
-
-struct gar2nav_conv *g2n_conv_load(char *file)
-{
- struct gar2nav_conv *c;
- int rc;
-
- c = calloc(1, sizeof(*c));
- if (!c)
- return c;
- rc = load_types_file(file, c);
- if (rc < 0) {
- dlog(1, "Failed to load: [%s]\n", file);
- free(c);
- return NULL;
- }
- return c;
-}
-
-enum item_type g2n_get_type(struct gar2nav_conv *c, unsigned int type, unsigned short id)
-{
- struct gar2navit *def = NULL;
- int group;
- group = (type >> G2N_KIND_SHIFT);
- type &= ~G2N_KIND_MASK;
- if (type == G2N_POINT)
- def = c->points;
- else if (type == G2N_POLYLINE)
- def = c->polylines;
- else if (type == G2N_POLYGONE)
- def = c->polygons;
- else {
- dlog(1, "Unknown conversion type:%d\n", type);
- return type_none;
- }
-
- if (!def) {
- dlog(5, "No conversion data for %d\n", type);
- return type_none;
- }
-
- while (def) {
- if (def->group == group &&
- ((!def->maxid && def->id == id) ||
- (def->id <= id && id <= def->maxid)))
- return def->ntype;
- def = def->next;
- }
- dlog(5, "Type[%d]:ID:[%04X] unknown\n", type, id);
- return type == G2N_POINT ? type_point_unkn : type_street_unkn;
-}
-
-char *g2n_get_descr(struct gar2nav_conv *c, int type, unsigned short id)
-{
- struct gar2navit *def = NULL;
- if (type == G2N_POINT)
- def = c->points;
- else if (type == G2N_POLYLINE)
- def = c->polylines;
- else if (type == G2N_POLYGONE)
- def = c->polygons;
- else {
- dlog(1, "Unknown conversion type:%d\n", type);
- return NULL;
- }
- while (def) {
- if ((!def->maxid && def->id == id) ||
- (def->id <= id && id <= def->maxid))
- return def->descr;
- def = def->next;
- }
- dlog(5, "Type[%d]:ID:[%04X] unknown\n", type, id);
- return NULL;
-}
-
-#if 0
-int main(int argc, char **argv)
-{
- load_types_file(argv[1], NULL);
- return 0;
-}
-#endif
-
-#include "g2nbuiltin.h"
diff --git a/navit/map/garmin/gar2navit.h b/navit/map/garmin/gar2navit.h
deleted file mode 100644
index 27c5f65e1..000000000
--- a/navit/map/garmin/gar2navit.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- Copyright (C) 2007 Alexander Atanasov <aatanasov@gmail.com>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- 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
-
- Garmin and MapSource are registered trademarks or trademarks
- of Garmin Ltd. or one of its subsidiaries.
-
-*/
-
-#define GROUP_RGN1 0
-#define GROUP_RGN2 1
-
-struct gar2navit {
- unsigned short id;
- unsigned short maxid;
- enum item_type ntype;
- unsigned group;
- char *descr;
- struct gar2navit *next;
-};
-
-#define G2N_POINT 1
-#define G2N_POLYLINE 2
-#define G2N_POLYGONE 3
-#define G2N_KIND_MASK 0xF0000000
-#define G2N_KIND_SHIFT 28
-#define G2N_RGN1 (GROUP_RGN1<<29)
-#define G2N_RGN2 (GROUP_RGN2<<29)
-
-struct gar2nav_conv {
- struct gar2navit *points;
- struct gar2navit *polylines;
- struct gar2navit *polygons;
-};
-
-struct gar2nav_conv *g2n_conv_load(char *file);
-enum item_type g2n_get_type(struct gar2nav_conv *c, unsigned int type, unsigned short id);
-char *g2n_get_descr(struct gar2nav_conv *c, int type, unsigned short id);
-struct gar2nav_conv *g2n_default_conv(void);
diff --git a/navit/map/garmin/garmin.c b/navit/map/garmin/garmin.c
deleted file mode 100644
index 2e7263081..000000000
--- a/navit/map/garmin/garmin.c
+++ /dev/null
@@ -1,997 +0,0 @@
-/*
- Copyright (C) 2007 Alexander Atanasov <aatanasov@gmail.com>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- 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
-
- Garmin and MapSource are registered trademarks or trademarks
- of Garmin Ltd. or one of its subsidiaries.
-
-*/
-
-#include <glib.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include "config.h"
-#include "plugin.h"
-#include "data.h"
-#include "projection.h"
-#include "item.h"
-#include "debug.h"
-#include "map.h"
-#include "maptype.h"
-#include "attr.h"
-#include "coord.h"
-#include "transform.h"
-#include <stdio.h>
-#include "attr.h"
-#include "coord.h"
-#include <libgarmin.h>
-#include "garmin.h"
-#include "gar2navit.h"
-
-
-static int map_id;
-
-struct map_priv {
- int id;
- char *filename;
- struct gar2nav_conv *conv;
- struct gar *g;
-};
-
-struct map_rect_priv {
- int id;
- struct coord_rect r;
- char *label; // FIXME: Register all strings for searches
- int limit;
- struct map_priv *mpriv;
- struct gmap *gmap;
- struct gobject *cobj;
- struct gobject *objs;
- struct item item;
- unsigned int last_coord;
- void *last_itterated;
- struct coord last_c;
- void *last_oattr;
- unsigned int last_attr;
- struct gar_search *search;
-};
-
-int garmin_debug = 10;
-
-void
-logfn(char *file, int line, int level, char *fmt, ...)
-{
- va_list ap;
- char fileline[256];
- int sz;
- if (level > garmin_debug)
- return;
- va_start(ap, fmt);
- sz = sprintf(fileline, "%s:%d:%d|", file, line, level);
- debug_vprintf(0, "", strlen(""), fileline, sz,
- 1, fmt, ap);
- va_end(ap);
-}
-// need a base map and a map
-struct gscale {
- char *label;
- float scale;
- int bits;
-};
-
-static struct gscale mapscales[] = {
- {"7000 km", 70000.0, 8}
- ,{"5000 km", 50000.0, 8}
- ,{"3000 km", 30000.0, 9}
- ,{"2000 km", 20000.0, 9}
- ,{"1500 km", 15000.0, 10}
- ,{"1000 km", 10000.0, 10}
- ,{"700 km", 7000.0, 11}
- ,{"500 km", 5000.0, 11}
- ,{"300 km", 3000.0, 13}
- ,{"200 km", 2000.0, 13}
- ,{"150 km", 1500.0, 13}
- ,{"100 km", 1000.0, 14}
- ,{"70 km", 700.0, 15}
- ,{"50 km", 500.0, 16}
- ,{"30 km", 300.0, 16}
- ,{"20 km", 200.0, 17}
- ,{"15 km", 150.0, 17}
- ,{"10 km", 100.0, 18}
- ,{"7 km", 70.0, 18}
- ,{"5 km", 50.0, 19}
- ,{"3 km", 30.0, 19}
- ,{"2 km", 20.0, 20}
- ,{"1.5 km", 15.0, 22}
- ,{"1 km", 10.0, 24}
- ,{"700 m", 7.0, 24}
- ,{"500 m", 5.0, 24}
- ,{"300 m", 3.0, 24}
- ,{"200 m", 2.0, 24}
- ,{"150 m", 1.5, 24}
- ,{"100 m", 1.0, 24}
- ,{"70 m", 0.7, 24}
- ,{"50 m", 0.5, 24}
- ,{"30 m", 0.3, 24}
- ,{"20 m", 0.2, 24}
- ,{"15 m", 0.1, 24}
- ,{"10 m", 0.15, 24}
-};
-
-
-static int
-garmin_object_label(struct gobject *o, struct attr *attr)
-{
- struct map_rect_priv *mr = o->priv_data;
- char *codepage;
- char *label;
- if (!mr) {
- dlog(1, "Error object do not have priv_data!!\n");
- return 0;
- }
- if (mr->label) {
- free(mr->label);
- }
- label = gar_get_object_lbl(o);
- if (label) {
- codepage = gar_obj_codepage(o);
- if (*codepage != 'a') {
- mr->label = g_convert(label, -1,"utf-8",codepage,NULL,NULL,NULL);
- free(label);
- } else
- mr->label = label;
- } else {
- mr->label = NULL;
- return 0;
- }
- if (mr->label) {
- char *cp = mr->label;
- /* FIXME Process label and give only the visible part */
- if (*mr->label == '@' || *mr->label == '^')
- cp++;
- /* FIXME: If zoomlevel is high convert ^ in the string to spaces */
- attr->u.str = cp;
- return 1;
- }
- return 0;
-}
-
-static int
-garmin_object_debug(struct gobject *o, struct attr *attr)
-{
- struct map_rect_priv *mr = o->priv_data;
- if (!mr) {
- dlog(1, "Error object do not have priv_data!!\n");
- return 0;
- }
- if (mr->label)
- free(mr->label);
- mr->label = gar_object_debug_str(o);
- if (mr->label) {
- attr->u.str = mr->label;
- return 1;
- }
- return 0;
-}
-
-
-static struct map_search_priv *
-gmap_search_new(struct map_priv *map, struct item *item, struct attr *search, int partial)
-{
- struct map_rect_priv *mr=g_new0(struct map_rect_priv, 1);
- struct gar_search *gs;
- int rc;
-
- dlog(1, "Called!\n");
- mr->mpriv=map;
- gs = g_new0(struct gar_search,1);
- if (!gs) {
- dlog(1, "Can not init search \n");
- free(mr);
- return NULL;
- }
- mr->search = gs;
- switch (search->type) {
- case attr_country_name:
- gs->type = GS_COUNTRY;
- break;
- case attr_town_name:
- gs->type = GS_CITY;
- break;
- case attr_town_postal:
- gs->type = GS_ZIP;
- break;
- case attr_street_name:
- gs->type = GS_ROAD;
- break;
-#if 0 /* someday */
- case attr_region_name:
- case attr_intersection:
- case attr_housenumber:
-#endif
- default:
- dlog(1, "Don't know how to search for %d\n", search->type);
- goto out_err;
- }
- gs->match = partial ? GM_START : GM_EXACT;
- gs->needle = strdup(search->u.str);
- dlog(5, "Needle: %s\n", gs->needle);
-
- mr->gmap = gar_find_subfiles(mr->mpriv->g, gs, GO_GET_SEARCH);
- if (!mr->gmap) {
- dlog(1, "Can not init search \n");
- goto out_err;
- }
- rc = gar_get_objects(mr->gmap, 0, gs, &mr->objs, GO_GET_SEARCH);
- if (rc < 0) {
- dlog(1, "Error loading objects\n");
- goto out_err;
- }
- mr->cobj = mr->objs;
- dlog(4, "Loaded %d objects\n", rc);
- return (struct map_search_priv *)mr;
-
-out_err:
- free(gs);
- free(mr);
- return NULL;
-}
-
-/* Assumes that only one item will be itterated at time! */
-static void
-coord_rewind(void *priv_data)
-{
- struct gobject *g = priv_data;
- struct map_rect_priv *mr = g->priv_data;
- mr->last_coord = 0;
-};
-
-static void
-attr_rewind(void *priv_data)
-{
- struct gobject *g = priv_data;
- struct map_rect_priv *mr = g->priv_data;
- mr->last_attr = 0;
-};
-
-static int
-point_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct gobject *g = priv_data;
- struct map_rect_priv *mr = g->priv_data;
- struct gcoord gc;
- if (!count)
- return 0;
- if (g != mr->last_itterated) {
- mr->last_itterated = g;
- mr->last_coord = 0;
- }
-
- if (mr->last_coord > 0)
- return 0;
-
- gar_get_object_coord(mr->gmap, g, &gc);
- c->x = gc.x;
- c->y = gc.y;
- mr->last_coord++;
-// dlog(1,"point: x=%d y=%d\n", c->x, c->y);
- // dlog(1, "point: x=%f y=%f\n", GARDEG(c->x), GARDEG(c->y));
- return 1;
-}
-
-static int
-coord_is_node(void *priv_data)
-{
- struct gobject *g = priv_data;
- struct map_rect_priv *mr = g->priv_data;
-
- return gar_is_object_dcoord_node(mr->gmap, g, mr->last_coord);
-}
-
-static int
-poly_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct gobject *g = priv_data;
- struct map_rect_priv *mr = g->priv_data;
- int ndeltas = 0, total = 0;
- struct gcoord dc;
-
- if (!count)
- return 0;
-
- if (g != mr->last_itterated) {
- mr->last_itterated = g;
- mr->last_coord = 0;
- }
- ndeltas = gar_get_object_deltas(g);
- if (mr->last_coord > ndeltas + 1)
- return 0;
- while (count --) {
- if (mr->last_coord == 0) {
- gar_get_object_coord(mr->gmap, g, &dc);
- mr->last_c.x = dc.x;
- mr->last_c.y = dc.y;
- } else {
- if (!gar_get_object_dcoord(mr->gmap, g, mr->last_coord - 1, &dc)) {
- mr->last_coord = ndeltas + 2;
- return total;
- }
- mr->last_c.x += dc.x;
- mr->last_c.y += dc.y;
- }
- c->x = mr->last_c.x;
- c->y = mr->last_c.y;
- ddlog(1, "poly: x=%f y=%f\n", GARDEG(c->x), GARDEG(c->y));
-// dlog(1,"poly: x=%d y=%d\n", c->x, c->y);
- c++;
- total++;
- mr->last_coord ++;
- }
- return total;
-}
-
-// for _any we must return one by one
-static int
-point_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct gobject *g = priv_data;
- struct map_rect_priv *mr = g->priv_data;
- int rc;
- switch (attr_type) {
- case attr_any:
- if (g != mr->last_oattr) {
- mr->last_oattr = g;
- mr->last_attr = 0;
- }
- switch(mr->last_attr) {
- case 0:
- mr->last_attr++;
- attr->type = attr_label;
- rc = garmin_object_label(g, attr);
- if (rc)
- return rc;
- case 1:
- mr->last_attr++;
- attr->type = attr_debug;
- rc = garmin_object_debug(g, attr);
- if (rc)
- return rc;
- case 2:
- mr->last_attr++;
- if (g->type == GO_POLYLINE) {
- attr->type = attr_street_name;
- rc = garmin_object_label(g, attr);
- if (rc)
- return rc;
- }
- case 3:
- mr->last_attr++;
- attr->type = attr_flags;
- attr->u.num = 0;
- rc = gar_object_flags(g);
- if (rc & F_ONEWAY)
- attr->u.num |= AF_ONEWAY;
- if (rc & F_SEGMENTED)
- attr->u.num |= AF_SEGMENTED;
- return 1;
- default:
- return 0;
- }
- break;
- case attr_label:
- attr->type = attr_label;
- return garmin_object_label(g, attr);
- case attr_town_name:
- attr->type = attr_town_name;
- return garmin_object_label(g, attr);
- case attr_street_name:
- attr->type = attr_type;
- return garmin_object_label(g, attr);
- case attr_street_name_systematic:
- /* TODO: Get secondary labels of roads */
- return 0;
- case attr_flags:
- attr->type = attr_flags;
- attr->u.num = 0;
- rc = gar_object_flags(g);
- if (rc & F_ONEWAY)
- attr->u.num |= AF_ONEWAY;
- if (rc & F_SEGMENTED)
- attr->u.num |= AF_SEGMENTED;
- return 1;
- default:
- dlog(1, "Don't know about attribute %d[%04X]=%s yet\n", attr_type,attr_type, attr_to_name(attr_type));
- }
-
- return 0;
-}
-
-static struct item_methods methods_garmin_point = {
- coord_rewind,
- point_coord_get,
- attr_rewind,
- point_attr_get,
-};
-
-static struct item_methods methods_garmin_poly = {
- coord_rewind,
- poly_coord_get,
- attr_rewind, // point_attr_rewind,
- point_attr_get, // poly_attr_get,
- coord_is_node,
-};
-
-static int
-search_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct gobject *g = priv_data;
- struct map_rect_priv *mr = g->priv_data;
- int rc;
- switch (attr_type) {
- case attr_any:
- if (g != mr->last_oattr) {
- mr->last_oattr = g;
- mr->last_attr = 0;
- }
- switch(mr->last_attr) {
- case 0:
- mr->last_attr++;
- attr->type = attr_label;
- rc = garmin_object_label(g, attr);
- if (rc)
- return rc;
- case 1:
- mr->last_attr++;
- attr->type = attr_debug;
- rc = garmin_object_debug(g, attr);
- if (rc)
- return rc;
- case 2:
- mr->last_attr++;
- if (g->type == GO_POLYLINE) {
- attr->type = attr_street_name;
- rc = garmin_object_label(g, attr);
- if (rc)
- return rc;
- }
- case 3:
- mr->last_attr++;
- attr->type = attr_flags;
- attr->u.num = 0;
- rc = gar_object_flags(g);
- if (rc & F_ONEWAY)
- attr->u.num |= AF_ONEWAY;
- if (rc & F_SEGMENTED)
- attr->u.num |= AF_SEGMENTED;
- return 1;
- default:
- return 0;
- }
- break;
- case attr_label:
- attr->type = attr_label;
- return garmin_object_label(g, attr);
- case attr_town_name:
- attr->type = attr_town_name;
- if (mr->label)
- free(mr->label);
- mr->label = gar_srch_get_city(g);
- attr->u.str = mr->label;
- if (attr->u.str)
- return 1;
- return 0;
- case attr_town_id:
- rc = gar_srch_get_cityid(g);
- if (rc) {
- attr->type = attr_town_id;
- attr->u.num = rc;
- return 1;
- }
- return 0;
- case attr_town_postal:
- attr->type = attr_town_postal;
- attr->u.str = gar_srch_get_zip(g);
- if (attr->u.str)
- return 1;
- return 0;
- case attr_street_name:
- attr->type = attr_street_name;
- if (mr->label)
- free(mr->label);
- mr->label = gar_srch_get_roadname(g);
- attr->u.str = mr->label;
- if (attr->u.str)
- return 1;
- return 0;
- case attr_street_id:
- attr->type = attr_street_id;
- attr->u.num = gar_srch_get_roadid(g);
- if (attr->u.num)
- return 1;
- return 0;
- case attr_flags:
- attr->type = attr_flags;
- attr->u.num = 0;
- rc = gar_object_flags(g);
- if (rc & F_ONEWAY)
- attr->u.num |= AF_ONEWAY;
- if (rc & F_SEGMENTED)
- attr->u.num |= AF_SEGMENTED;
- return 1;
- case attr_country_id:
- rc = gar_srch_get_countryid(g);
- if (rc) {
- attr->type = attr_country_id;
- attr->u.num = rc;
- return 1;
- }
- return 0;
- case attr_country_name:
- attr->type = attr_country_name;
- attr->u.str = gar_srch_get_country(g);
- if (attr->u.str)
- return 1;
- return 0;
- case attr_district_id:
- rc = gar_srch_get_regionid(g);
- if (rc) {
- attr->type = attr_district_id;
- attr->u.num = rc;
- return 1;
- }
- return 0;
- case attr_district_name:
- attr->type = attr_district_name;
- attr->u.str = gar_srch_get_region(g);
- if (attr->u.str)
- return 1;
- return 0;
- case attr_town_streets_item:
- return 0;
- default:
- dlog(1, "Don't know about attribute %d[%04X]=%s yet\n",
- attr_type,attr_type, attr_to_name(attr_type));
- }
-
- return 0;
-}
-
-static int
-search_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct gobject *g = priv_data;
- struct map_rect_priv *mr = g->priv_data;
- struct gcoord gc;
- if (!count)
- return 0;
- if (g != mr->last_itterated) {
- mr->last_itterated = g;
- mr->last_coord = 0;
- }
-
- if (mr->last_coord > 0)
- return 0;
-
- if (gar_get_object_coord(mr->gmap, g, &gc)) {
- c->x = gc.x;
- c->y = gc.y;
- mr->last_coord++;
- return 1;
- }
- return 0;
-}
-
-static struct item_methods methods_garmin_search = {
- coord_rewind,
- search_coord_get,
- attr_rewind,
- search_attr_get,
-};
-
-
-static struct item *
-garmin_poi2item(struct map_rect_priv *mr, struct gobject *o, unsigned short otype)
-{
- if (mr->mpriv->conv) {
- int mask = gar_object_group(o) << G2N_KIND_SHIFT;
- mr->item.type = g2n_get_type(mr->mpriv->conv, G2N_POINT|mask, otype);
- }
- mr->item.meth = &methods_garmin_point;
- return &mr->item;
-}
-
-static struct item *
-garmin_pl2item(struct map_rect_priv *mr, struct gobject *o, unsigned short otype)
-{
- if (mr->mpriv->conv) {
- int mask = gar_object_group(o) << G2N_KIND_SHIFT;
- mr->item.type = g2n_get_type(mr->mpriv->conv, G2N_POLYLINE|mask, otype);
- }
- mr->item.meth = &methods_garmin_poly;
- return &mr->item;
-}
-
-static struct item *
-garmin_pg2item(struct map_rect_priv *mr, struct gobject *o, unsigned short otype)
-{
- if (mr->mpriv->conv) {
- int mask = gar_object_group(o) << G2N_KIND_SHIFT;
- mr->item.type = g2n_get_type(mr->mpriv->conv, G2N_POLYGONE|mask, otype);
- }
- mr->item.meth = &methods_garmin_poly;
- return &mr->item;
-}
-
-static struct item *
-garmin_srch2item(struct map_rect_priv *mr, struct gobject *o, unsigned short otype)
-{
- mr->item.type = type_country_label;
- mr->item.meth = &methods_garmin_search;
- return &mr->item;
-}
-
-static struct item *
-garmin_obj2item(struct map_rect_priv *mr, struct gobject *o)
-{
- unsigned short otype;
- otype = gar_obj_type(o);
- mr->item.type = type_none;
- switch (o->type) {
- case GO_POINT:
- return garmin_poi2item(mr, o, otype);
- case GO_POLYLINE:
- return garmin_pl2item(mr, o, otype);
- case GO_POLYGON:
- return garmin_pg2item(mr, o, otype);
- case GO_ROAD:
- return garmin_pl2item(mr, o, otype);
-#if 0
- case GO_SEARCH:
- return garmin_srch2item(mr, o, otype);
-#endif
- default:
- dlog(1, "Unknown garmin object type:%d\n",
- o->type);
- }
- return NULL;
-}
-
-static struct item *
-gmap_rect_get_item_byid(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- struct gobject *o;
- o = mr->objs = gar_get_object_by_id(mr->mpriv->g, id_hi, id_lo);
- if (!o) {
- dlog(1, "Can not find object\n");
- return NULL;
- }
-
- mr->item.id_hi = id_hi;
- mr->item.id_lo = id_lo;
- mr->item.priv_data = o;
- mr->item.type = type_none;
- o->priv_data = mr;
- if (!garmin_obj2item(mr, o))
- return NULL;
- return &mr->item;
-}
-
-static struct item *
-gmap_rect_get_item(struct map_rect_priv *mr)
-{
- struct gobject *o;
- if (!mr->objs)
- return NULL;
- if (!mr->cobj)
- return NULL;
- // mr->cobj = mr->objs;
- o = mr->cobj;
-// dlog(1, "gi:o=%p\n", o);
- mr->cobj = mr->cobj->next;
- if (o) {
- mr->item.id_hi = gar_object_mapid(o);
- mr->item.id_lo = gar_object_index(o);
- mr->item.priv_data = o;
- mr->item.type = type_none;
- o->priv_data = mr;
- if (!garmin_obj2item(mr, o))
- return NULL;
- return &mr->item;
- }
- return NULL;
-}
-
-#define max(a,b) ((a) > (b) ? (a) : (b))
-struct nl2gl_t {
- int g;
- int bits;
- char *descr;
-};
-
-struct nl2gl_t nl2gl_1[] = {
- { /* 0 */ .g = 12, .descr = "0-120m", },
- { /* 1 */ .g = 11, .descr = "0-120m", },
- { /* 2 */ .g = 10, .descr = "0-120m", },
- { /* 3 */ .g = 9, .descr = "0-120m", },
- { /* 4 */ .g = 8, .descr = "0-120m", },
- { /* 5 */ .g = 7, .descr = "0-120m", },
- { /* 6 */ .g = 6, .descr = "0-120m", },
- { /* 7 */ .g = 5, .descr = "0-120m", },
- { /* 8 */ .g = 4, .descr = "0-120m", },
- { /* 9 */ .g = 4, .descr = "0-120m", },
- { /* 10 */ .g = 3, .descr = "0-120m", },
- { /* 11 */ .g = 3, .descr = "0-120m", },
- { /* 12 */ .g = 2, .descr = "0-120m", },
- { /* 13 */ .g = 2, .descr = "0-120m", },
- { /* 14 */ .g = 2, .descr = "0-120m", },
- { /* 15 */ .g = 1, .descr = "0-120m", },
- { /* 16 */ .g = 1, .descr = "0-120m", },
- { /* 17 */ .g = 1, .descr = "0-120m", },
- { /* 18 */ .g = 0, .descr = "0-120m", },
-};
-
-struct nl2gl_t nl2gl[] = {
- { /* 0 */ .g = 9, .descr = "0-120m", },
- { /* 1 */ .g = 9, .descr = "0-120m", },
- { /* 2 */ .g = 8, .descr = "0-120m", },
- { /* 3 */ .g = 8, .descr = "0-120m", },
- { /* 4 */ .g = 7, .descr = "0-120m", },
- { /* 5 */ .g = 7, .descr = "0-120m", },
- { /* 6 */ .g = 6, .descr = "0-120m", },
- { /* 7 */ .g = 6, .descr = "0-120m", },
- { /* 8 */ .g = 5, .descr = "0-120m", },
- { /* 9 */ .g = 5, .descr = "0-120m", },
- { /* 10 */ .g = 4, .descr = "0-120m", },
- { /* 11 */ .g = 4, .descr = "0-120m", },
- { /* 12 */ .g = 3, .descr = "0-120m", },
- { /* 13 */ .g = 3, .descr = "0-120m", },
- { /* 14 */ .g = 2, .descr = "0-120m", },
- { /* 15 */ .g = 2, .descr = "0-120m", },
- { /* 16 */ .g = 1, .descr = "0-120m", },
- { /* 17 */ .g = 1, .descr = "0-120m", },
- { /* 18 */ .g = 0, .descr = "0-120m", },
-};
-
-static int
-get_level(struct map_selection *sel)
-{
- return sel->order;
-}
-
-static int
-garmin_get_selection(struct map_rect_priv *map, struct map_selection *sel)
-{
- struct gar_rect r;
- struct gmap *gm;
- struct gobject **glast = NULL;
- int rc;
- int sl, el;
- int level = 0; // 18; /* max level for maps, overview maps can have bigger
- /* levels we do not deal w/ them
- */
- int flags = 0;
- if (sel && sel->range.min == type_street_0 && sel->range.max == type_ferry) {
- // Get all roads
- flags = GO_GET_ROUTABLE;
- } else if (sel)
- flags = GO_GET_SORTED;
-
- if (sel) {
- r.lulat = sel->u.c_rect.lu.y;
- r.lulong = sel->u.c_rect.lu.x;
- r.rllat = sel->u.c_rect.rl.y;
- r.rllong = sel->u.c_rect.rl.x;
- level = get_level(sel);
-// level = nl2gl[level].g;
- dlog(2, "Looking level=%d for %f %f %f %f\n",
- level, r.lulat, r.lulong, r.rllat, r.rllong);
- }
- gm = gar_find_subfiles(map->mpriv->g, sel ? &r : NULL, flags);
- if (!gm) {
- if (sel) {
- dlog(1, "Can not find map data for the area: %f %f %f %f\n",
- r.lulat, r.lulong, r.rllat, r.rllong);
- } else {
- dlog(1, "Can not find map data\n");
- }
- return -1;
- }
-#if 0
- sl = (18-(gm->maxlevel - gm->minlevel))/2;
- el = sl + (gm->maxlevel - gm->minlevel);
- if (level < sl)
- level = sl;
- if (level > el)
- level = el;
- level = level - sl;
- level = (gm->maxlevel - gm->minlevel) - level;
- dlog(3, "sl=%d el=%d level=%d\n", sl, el, level);
-#endif
- sl = (18-gm->zoomlevels)/2;
- el = sl + gm->zoomlevels;
- if (level < sl)
- level = sl;
- if (level > el)
- level = el;
- level = level - sl;
- level = gm->basebits + level;
- dlog(3, "sl=%d el=%d level=%d\n", sl, el, level);
- map->gmap = gm;
- glast = &map->objs;
- while (*glast) {
- if ((*glast)->next) {
- *glast = (*glast)->next;
- } else
- break;
- }
- rc = gar_get_objects(gm, level, sel ? &r : NULL, glast, flags);
- if (rc < 0) {
- dlog(1, "Error loading objects\n");
- return -1;
- }
- map->cobj = map->objs;
- dlog(2, "Loaded %d objects\n", rc);
- return rc;
-}
-// Can not return NULL, navit segfaults
-static struct map_rect_priv *
-gmap_rect_new(struct map_priv *map, struct map_selection *sel)
-{
- struct map_selection *ms = sel;
- struct map_rect_priv *mr;
-
- if (!map)
- return NULL;
- mr = calloc(1, sizeof(*mr));
- if (!mr)
- return mr;
- mr->mpriv = map;
- if (!sel) {
- return mr;
- } else {
- while (ms) {
- dlog(2, "order %d\n", ms->order);
- if (garmin_get_selection(mr, ms) < 0) {
- // free(mr);
- // return NULL;
- }
- ms = ms->next;
- }
- }
- return mr;
-}
-
-static void
-gmap_rect_destroy(struct map_rect_priv *mr)
-{
- dlog(11,"destroy maprect\n");
- if (mr->gmap)
- gar_free_gmap(mr->gmap);
- if (mr->objs)
- gar_free_objects(mr->objs);
- if (mr->label)
- free(mr->label);
- free(mr);
-}
-
-static void
-gmap_search_destroy(struct map_search_priv *ms)
-{
- gmap_rect_destroy((struct map_rect_priv *)ms);
-}
-
-static void
-gmap_destroy(struct map_priv *m)
-{
- dlog(5, "garmin_map_destroy\n");
- if (m->g)
- gar_free(m->g);
- if (m->filename)
- free(m->filename);
- free(m);
-}
-
-static struct map_methods map_methods = {
- projection_garmin,
- "utf-8",
- gmap_destroy,
- gmap_rect_new,
- gmap_rect_destroy,
- gmap_rect_get_item,
- gmap_rect_get_item_byid,
- gmap_search_new,
- gmap_search_destroy,
- NULL,
-};
-
-static struct map_priv *
-gmap_new(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct map_priv *m;
- struct attr *data;
- struct attr *debug;
- struct attr *flags;
- char buf[PATH_MAX];
- struct stat st;
- int dl = 1;
- struct gar_config cfg;
- int debugmask = 0;
-
- data=attr_search(attrs, NULL, attr_data);
- if (! data)
- return NULL;
- debug=attr_search(attrs, NULL, attr_debug);
- if (debug) {
- dl = atoi(debug->u.str);
- if (!dl)
- dl = 1;
- }
- flags=attr_search(attrs, NULL, attr_flags);
- if (flags) {
- debugmask = flags->u.num;
- }
- m=g_new(struct map_priv, 1);
- m->id=++map_id;
- m->filename = strdup(data->u.str);
- if (!m->filename) {
- g_free(m);
- return NULL;
- }
- memset(&cfg, 0, sizeof(struct gar_config));
- cfg.opm = OPM_GPS;
- cfg.debuglevel = dl;
- cfg.debugmask = debugmask;
- garmin_debug = dl;
- m->g = gar_init_cfg(NULL, logfn, &cfg);
- if (!m->g) {
- g_free(m->filename);
- g_free(m);
- return NULL;
- }
- // we want the data now, later we can load only what's necessery
- if (gar_img_load(m->g, m->filename, 1) < 0) {
- gar_free(m->g);
- g_free(m->filename);
- g_free(m);
- return NULL;
- }
- m->conv = NULL;
- snprintf(buf, sizeof(buf), "%s.types", m->filename);
- if (!stat(buf, &st)) {
- dlog(1, "Loading custom types from %s\n", buf);
- m->conv = g2n_conv_load(buf);
- }
- if (!m->conv) {
- dlog(1, "Using builtin types\n");
- m->conv = g2n_default_conv();
- }
- if (!m->conv) {
- dlog(1, "Failed to load map types\n");
- }
- *meth=map_methods;
- return m;
-}
-
-void
-plugin_init(void)
-{
- plugin_register_category_map("garmin", gmap_new);
-}
diff --git a/navit/map/garmin/garmin.h b/navit/map/garmin/garmin.h
deleted file mode 100644
index 94e893b12..000000000
--- a/navit/map/garmin/garmin.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- Copyright (C) 2007 Alexander Atanasov <aatanasov@gmail.com>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- 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
-
- Garmin and MapSource are registered trademarks or trademarks
- of Garmin Ltd. or one of its subsidiaries.
-
-*/
-
-#define dlog(x,y ...) logfn(__FILE__,__LINE__,x, ##y)
-#ifdef HARDDEBUG
-#define ddlog(x,y ...) logfn(__FILE__,__LINE__,x, ##y)
-#else
-#define ddlog(x,y ...)
-#endif
-
-extern int garmin_debug;
-void logfn(char *file, int line, int level, char *fmt, ...);
-
diff --git a/navit/map/garmin/garmintypes.txt b/navit/map/garmin/garmintypes.txt
deleted file mode 100644
index ce8b0d495..000000000
--- a/navit/map/garmin/garmintypes.txt
+++ /dev/null
@@ -1,707 +0,0 @@
-#
-#
-#
-POINT
-0, 0x0000 = label_unkn, Unknown label
-0, 0x0100 = town_label_1e5, Megapolis (10M +)
-0, 0x0200 = town_label_5e4, Megapolis (5-10M)
-0, 0x0300 = town_label_2e4, Big City (2-5M)
-0, 0x0400 = town_label_1e4, Big City (1-2M)
-0, 0x0500 = town_label_5e3, Big City (0.5-1M)
-0, 0x0600 = town_label_2e3, City (200-500k)
-0, 0x0700 = town_label_1e3, City (100-200k)
-0, 0x0800 = town_label_5e2, City (50-100k)
-0, 0x0900 = town_label_2e2, City (20-50k)
-0, 0x0a00 = town_label_1e2, City (10-20k)
-0, 0x0b00 = town_label_5e1, Small City (5-10k)
-0, 0x0c00 = town_label_2e1, Small City (2-5k)
-0, 0x0d00 = town_label_1e1, Village (1-2k)
-0, 0x0e00 = town_label_5e0, Village (500-1000)
-0, 0x0f00 = town_label_2e0, Village (200-500)
-0, 0x1000 = town_label_1e0, Village (100-200)
-0, 0x1100 = town_label_0e0, Village (0-100)
-
-0, 0x1200 = port_label, Port with services
-0, 0x1300 = label_unkn, Unknown label2
-0, 0x1400-0x14FF = country_label, Large Country Name
-0, 0x1500-0x15FF = country_label, Country Name
-0, 0x1c00 = poi_wreck, Unclassified Obstruction
-0, 0x1c01 = poi_wreck, Wreck
-0, 0x1c02 = poi_danger_sea_wreck, submerged wreck, dangerous
-0, 0x1c03 = poi_nondangerous, submerged wreck, non-dangerous
-0, 0x1c04 = poi_wreck, Wreck, cleared by wire drag
-0, 0x1c05 = poi_rock, Obstruction, visible at high water
-0, 0x1c06 = poi_rock, Obstruction, awash
-0, 0x1c07 = poi_rock, Obstruction, submerged
-0, 0x1c08 = poi_rock, Obstruction, cleared by wire drag
-0, 0x1c09 = poi_rock, Rock, awash
-0, 0x1c0a = poi_rock, Rock, submerged at low Water
-0, 0x1c0b = poi_sounding, Sounding
-0, 0x1d00 = poi_tide, Tide Prediction
-
-0, 0x1e00-0x1e3f = district_label, District, Province, State Name
-0, 0x1f00 = district_label_0e0, Region, District Name
-
-# Fixme if it has label how to change to highway_exit_with_label ??
-0, 0x2000-0x203F = highway_exit, Exit
-0, 0x2100-0x213F = highway_exit, Exit with Services
-0, 0x2200-0x223F = highway_exit, Exit with Restroom
-0, 0x2300-0x233F = highway_exit, Exit with Convinience Store
-0, 0x2400-0x243F = highway_exit, Exit with Weight Station
-0, 0x2500-0x253F = highway_exit, Exit with Toolbooth Booth
-0, 0x2600-0x263F = highway_exit, Exit with Information
-0, 0x2700-0x273F = highway_exit, Exit
-
-0, 0x2800-0x283F = district_label_1e0, Region Name
-
-0, 0x2900 = poi_public_utilities, Services
-
-0, 0x2A00 = poi_dining, Dining(Other)
-0, 0x2A01 = poi_dining, Dining(American)
-0, 0x2A02 = poi_dining, Dining(Asian)
-0, 0x2A03 = poi_dining, Dining(Barbecue)
-0, 0x2A04 = poi_dining, Dining(Chinese)
-0, 0x2A05 = poi_dining, Dining(Deli/Bakery)
-0, 0x2A06 = poi_dining, Dining(International)
-0, 0x2A07 = poi_fastfood, Fast Food
-0, 0x2A08 = poi_dining, Dining(Italian)
-0, 0x2A09 = poi_dining, Dining(Mexican)
-0, 0x2A0A = poi_dining, Dining(Pizza)
-0, 0x2A0B = poi_dining, Dining(Sea Food)
-0, 0x2A0C = poi_dining, Dining(Steak/Grill)
-0, 0x2A0D = poi_dining, Dining(Bagel/Donut)
-0, 0x2A0E = poi_dining, Dining(Cafe/Diner)
-0, 0x2A0F = poi_dining, Dining(French)
-0, 0x2A10 = poi_dining, Dining(German)
-0, 0x2A11 = poi_dining, Dining(British Isles)
-0, 0x2A12 = poi_dining, Dining(Special Foods)
-
-0, 0x2B00 = poi_hotel, Hotel(Other)
-0, 0x2B01 = poi_hotel, Hotel/Motel
-0, 0x2B02 = poi_hotel, Bed & Breakfast inn
-0, 0x2B03 = poi_camp_rv, Camping/RV-Park
-0, 0x2B04 = poi_resort, Resort
-
-0, 0x2C00 = poi_attraction, Amusement Park
-0, 0x2C01 = poi_attraction, Amusement Park
-0, 0x2C02 = poi_museum_history, Museum/History
-0, 0x2C03 = poi_library, Libraries
-0, 0x2C04 = poi_landmark, Land Mark
-0, 0x2C05 = poi_school, School
-0, 0x2C06 = poi_park, Park
-0, 0x2C07 = poi_zoo, Zoo
-0, 0x2C08 = poi_stadium, Sportpark, Stadium,(point)
-0, 0x2C09 = poi_fair, Fair, Conference(point)
-0, 0x2C0A = poi_wine, Wine restaurant(point)
-0, 0x2C0B = poi_worship, Place of Worship
-0, 0x2C0C = poi_hotspring, Hot Spring
-
-0, 0x2D00 = poi_theater, Theater
-0, 0x2D01 = poi_theater, Theater
-0, 0x2D02 = poi_bar, Bar
-0, 0x2D03 = poi_cinema, Cinema
-0, 0x2D04 = poi_casino, Casino
-0, 0x2D05 = poi_golf, Golf
-0, 0x2D06 = poi_skiing, Skiing Center
-0, 0x2D07 = poi_bowling, Bowling
-0, 0x2D08 = poi_icesport, Ice/Sporting
-0, 0x2D09 = poi_swimming, Swimming
-0, 0x2D0A = poi_sport, Sports(point)
-0, 0x2D0B = poi_sailing, Sailing Airport
-
-0, 0x2E00 = poi_shopping, Shoping general
-0, 0x2E01 = poi_shop_department, Department Store
-0, 0x2E02 = poi_shop_grocery, Grocery
-0, 0x2E03 = poi_shop_merchandise, General Merchandiser
-0, 0x2E04 = poi_mall, Shopping Center
-0, 0x2E05 = poi_pharmacy, Pharmacy
-0, 0x2E06 = poi_shopping, Convenience
-0, 0x2E07 = poi_shop_apparel, Apparel
-0, 0x2E08 = poi_shop_handg, House and Garden
-0, 0x2E09 = poi_shop_furniture, Home Furnishing
-0, 0x2E0a = poi_shop_retail, Special Retail
-0, 0x2E0b = poi_shop_computer, Computer/Software
-0, 0x2E0c = poi_shop_computer, Mobile Communications
-
-0, 0x2F00 = poi_service, generic service
-0, 0x2F01 = poi_fuel, Fuel/Gas
-0, 0x2F02 = poi_car_rent, Car Rental
-0, 0x2F03 = poi_autoservice, Car Repair
-0, 0x2F04 = poi_airport, Airport
-0, 0x2F05 = poi_post_office, Post Office
-0, 0x2F06 = poi_bank, Bank
-0, 0x2F07 = poi_car_dealer_parts, Car Dealer(point)
-0, 0x2F08 = poi_bus_station, Bus Station
-0, 0x2F09 = poi_marina, Marina
-0, 0x2F0A = poi_wrecker, Wrecker Service
-0, 0x2F0B = poi_car_parking, Parking
-0, 0x2F0C = poi_restroom, Restroom
-0, 0x2F0D = poi_auto_club, Automobile Club
-0, 0x2F0E = poi_car_wash, Car Wash
-0, 0x2F0F = poi_shop_gps, Garmin Dealer
-0, 0x2F10 = poi_personal_service, Personal Service
-0, 0x2F11 = poi_business_service, Business Service
-0, 0x2F12 = poi_communication, Communication
-0, 0x2F13 = poi_repair_service, Repair Service
-0, 0x2F14 = poi_social_service, Social Service
-0, 0x2F15 = poi_public_utilities, Utility
-0, 0x2F16 = poi_truck_stop, Truck Stop
-0, 0x2F17 = poi_bus_stop, Bus Stop
-
-0, 0x3000 = poi_emergency, generic emergency/government
-0, 0x3001 = poi_police, Police Station
-0, 0x3002 = poi_hospital, Hospital
-0, 0x3003 = poi_public_office, Public Office
-0, 0x3004 = poi_justice, Justice
-0, 0x3005 = poi_concert, Concert hall(point)
-0, 0x3006 = poi_border_station, Border Station(point)
-0, 0x3007 = poi_goverment_building, Goverment Building
-0, 0x3008 = poi_firebrigade, FireFighters Station
-
-0, 0x4000-0x403F = poi_golf, Golf
-0, 0x4100-0x413F = poi_fish, Fish
-0, 0x4200-0x423F = poi_wreck, Wreck
-0, 0x4300-0x433F = poi_marina, Marina
-0, 0x4400-0x443F = poi_fuel, Gas
-0, 0x4500-0x453F = poi_restaurant, Restaurant
-0, 0x4600-0x463F = poi_bar, Bar
-0, 0x4700-0x473F = poi_boat_ramp, Boat Ramp
-0, 0x4800-0x483F = poi_camping, Camping
-0, 0x4900-0x493F = poi_park, Park
-0, 0x4A00-0x4A3F = poi_picnic, Picnic Area
-0, 0x4B00-0x4B3F = poi_hospital, Hospital
-0, 0x4C00-0x4C3F = poi_information, Information
-0, 0x4D00-0x4D3F = poi_car_parking, Parking
-0, 0x4E00-0x4E3F = poi_restroom, Restroom
-0, 0x4F00-0x4F3F = poi_shower, Shower
-0, 0x5000-0x503F = poi_drinking_water, Drinking Water
-0, 0x5100-0x513F = poi_telephone, Telephone
-0, 0x5200-0x523F = poi_scenic_area, Scenic Area
-0, 0x5300-0x533F = poi_skiing, Skiing
-0, 0x5400-0x543F = poi_swimming, Swimming
-0, 0x5500-0x553F = poi_dam, Dam
-
-0, 0x5600-0x563F = poi_forbidden_area, Forbiden Area
-0, 0x5700-0x573F = poi_danger_area, Danger Area
-0, 0x5800-0x583F = poi_restricted_area, Restricted Area
-
-0, 0x5900 = poi_airport, Generic Airport
-0, 0x5901 = poi_airport, Large Airport
-0, 0x5902 = poi_airport, Medium Airport
-0, 0x5903 = poi_airport, Small Airport
-0, 0x5904 = poi_heliport, Heliport
-0, 0x5905-0x593F = poi_airport, Airport
-
-0, 0x5a00 = poi_mark, Kilometer Pole
-0, 0x5b00 = poi_mark, Kolokol
-0, 0x5c00 = poi_diving, Diving Place
-
-0, 0x5D00-0x5D3F = poi_daymark, Daymark,Green Square
-0, 0x5E00-0x5E3F = poi_daymark, Daymark,Red Triangle
-
-0, 0x6000 = poi_loudspeaker, LoudSpeaker
-0, 0x6100 = poi_building, House
-
-0, 0x6200 = poi_height, Height with point in feet one decimal place
-0, 0x6300 = poi_height, Height without point in feet no decimal place
-0, 0x6400 = poi_manmade_feature, Manmade Feature
-0, 0x6401 = poi_bridge, Bridge
-0, 0x6402 = poi_building, Building
-0, 0x6403 = poi_cemetery, Cemetery
-0, 0x6404 = poi_church, Church
-0, 0x6405 = poi_townhall, Civil
-0, 0x6406 = poi_crossing, Crossing
-0, 0x6407 = poi_dam, Dam
-0, 0x6408 = poi_hospital, Hospital
-0, 0x6409 = poi_levee, Levee
-0, 0x640A = poi_locale, Locale
-0, 0x640B = poi_military, Military
-0, 0x640C = poi_mine, Mine
-0, 0x640D = poi_oil_field, Oil Field
-0, 0x640E = poi_park, Park
-0, 0x640F = poi_post_office, Post
-0, 0x6410 = poi_school, School
-0, 0x6411 = poi_tower, Tower
-0, 0x6412 = poi_trail, Trail
-0, 0x6413 = poi_tunnel, Tunnel
-0, 0x6414 = poi_drinking_water, Drink water
-0, 0x6415 = town_ghost, Ghost Town
-0, 0x6416 = poi_ruins, Subdivision
-
-0, 0x6500 = poi_water_feature, Water Feature
-0, 0x6501 = poi_water_feature, Arroyo
-0, 0x6502 = poi_water_feature, Sand Bar
-0, 0x6503 = poi_bay, Bay
-0, 0x6504 = poi_bend, Bend
-0, 0x6505 = poi_water_feature, Canal
-0, 0x6506 = poi_water_feature, Channel
-0, 0x6507 = poi_cove, Cove
-0, 0x6508 = poi_water_feature, Falls
-0, 0x6509 = poi_water_feature, Geyser
-0, 0x650A = poi_water_feature, Glacier
-0, 0x650B = poi_marine, Harbour
-0, 0x650C = poi_island, Island
-0, 0x650D = poi_water_feature, Lake
-0, 0x650E = poi_water_feature, Rapids
-0, 0x650F = poi_water_feature, Reservoir
-0, 0x6510 = poi_water_feature, Sea
-0, 0x6511 = poi_water_feature, Spring
-0, 0x6512 = poi_water_feature, Stream
-0, 0x6513 = poi_water_feature, Swamp
-
-0, 0x6600 = poi_land_feature, Land Feature
-0, 0x6601 = poi_land_feature, Arch
-0, 0x6602 = poi_land_feature, Area
-0, 0x6603 = poi_land_feature, Basin
-0, 0x6604 = poi_land_feature, Beach
-0, 0x6605 = poi_land_feature, Bench
-0, 0x6606 = poi_land_feature, Cape
-0, 0x6607 = poi_land_feature, Cliff
-0, 0x6608 = poi_land_feature, Crater
-0, 0x6609 = poi_land_feature, Flat
-0, 0x660A = poi_land_feature, Forest
-0, 0x660B = poi_land_feature, Gap
-0, 0x660C = poi_land_feature, Gut
-0, 0x660D = poi_land_feature, Isthmus
-0, 0x660E = poi_land_feature, Lava
-0, 0x660F = poi_land_feature, Pillar
-0, 0x6610 = poi_land_feature, Plain
-0, 0x6611 = poi_land_feature, Range
-0, 0x6612 = poi_land_feature, Reserve
-0, 0x6613 = poi_land_feature, Ridge
-0, 0x6614 = poi_land_feature, Rock
-0, 0x6615 = poi_land_feature, Slope
-0, 0x6616 = poi_land_feature, Summit
-0, 0x6617 = poi_land_feature, Valley
-0, 0x6618 = poi_land_feature, Woods
-
-# This are dublicated to 0x1700, 0x1800, 0x1900, 0x1A00, 0x1B00
-# fix them if you need them
-0, 0x1600 = poi_marine_type, Beakon
-0, 0x1601 = poi_marine_type, Fog Horn
-0, 0x1602 = poi_marine_type, Radio Beacon
-0, 0x1603 = poi_marine_type, Racon
-0, 0x1604 = poi_marine_type, Day Beacon, red triangle
-0, 0x1605 = poi_marine_type, Day Beacon, green square
-0, 0x1606 = poi_marine_type, Day Beacon, white diamond
-0, 0x1607 = poi_marine_type, unlit Navaid, white
-0, 0x1608 = poi_marine_type, unlit Navaid, red
-0, 0x1609 = poi_marine_type, unlit Navaid, green
-0, 0x160a = poi_marine_type, unlit Navaid, black
-0, 0x160b = poi_marine_type, unlit Navaid, yellow or amber
-0, 0x160c = poi_marine_type, unlit Navaid, orange
-0, 0x160d = poi_marine_type, unlit Navaid, multi colored
-0, 0x160e = poi_marine_type, Navaid, unknown
-0, 0x160f = poi_marine_type, lighted Navaid, white
-0, 0x1610 = poi_marine_type, lighted Navaid, red
-0, 0x1611 = poi_marine_type, lighted Navaid, green
-0, 0x1612 = poi_marine_type, lighted Navaid, yellow or amber
-0, 0x1613 = poi_marine_type, lighted Navaid, orange
-0, 0x1614 = poi_marine_type, lighted Navaid, violet
-0, 0x1615 = poi_marine_type, lighted Navaid, blue
-0, 0x1616 = poi_marine_type, lighted Navaid, multi colored
-# RGN2-4 types
-# Marine types start
-1, 0x0100 = point_unkn, Light
-1, 0x0102 = point_unkn, Light with north topmark
-1, 0x0103 = point_unkn, Light with south topmark
-1, 0x0104 = point_unkn, Light with east topmark
-1, 0x0105 = point_unkn, Light with west topmark
-1, 0x0106 = point_unkn, Isolated danger light
-1, 0x0107 = point_unkn, Port hand light
-1, 0x0108 = point_unkn, Starboard hand light
-1, 0x0109 = point_unkn, Special purpose light
-1, 0x010a = point_unkn, Safe water light
-1, 0x0200 = point_unkn, Buoy
-1, 0x0201 = point_unkn, Buoy
-1, 0x0202 = point_unkn, Buoy with north topmark
-1, 0x0203 = point_unkn, Buoy with south topmark
-1, 0x0204 = point_unkn, Buoy with east topmark
-1, 0x0205 = point_unkn, Buoy with west topmark
-1, 0x0206 = point_unkn, Beacon
-1, 0x0207 = point_unkn, Spar buoy
-1, 0x0208 = point_unkn, Isolated danger buoy
-1, 0x0209 = point_unkn, Port hand buoy
-1, 0x020a = point_unkn, Starboard hand buoy
-1, 0x020b = point_unkn, Special purpose buoy
-1, 0x020c = point_unkn, Safe water buoy
-1, 0x020d = point_unkn, Platform buoy
-1, 0x020e = point_unkn, Beacon with north topmark
-1, 0x020f = point_unkn, Beacon with south north topmark
-1, 0x0210 = point_unkn, Beacon with east topmark
-1, 0x0211 = point_unkn, Beacon with west topmark
-1, 0x0212 = point_unkn, Isolated danger beacon
-1, 0x0213 = point_unkn, Port hand beacon
-1, 0x0214 = point_unkn, Starboard hand beacon
-1, 0x0215 = point_unkn, Special purpose beacon
-1, 0x0216 = point_unkn, Mooring buoy
-1, 0x0217 = point_unkn, Fixed point
-1, 0x0218 = point_unkn, Pole
-1, 0x0300 = point_unkn, Depth point
-1, 0x0301 = point_unkn, Depth point invisible
-1, 0x0302 = point_unkn, Depth point underscore
-1, 0x0303 = point_unkn, Spot height
-1, 0x0304 = point_unkn, Building
-1, 0x0305 = point_unkn, Chimney
-1, 0x0306 = point_unkn, Church
-1, 0x0307 = point_unkn, Tanks
-1, 0x0308 = point_unkn, Tower
-1, 0x0309 = point_unkn, Rock
-1, 0x030a = point_unkn, Triangulation point
-1, 0x030b = point_unkn, Radio mast
-1, 0x0400 = point_unkn, Isolated danger
-1, 0x0401 = point_unkn, Obstruction
-1, 0x0402 = point_unkn, Wreck
-1, 0x0403 = point_unkn, Exposed wreck
-1, 0x0404 = point_unkn, Well
-1, 0x0405 = point_unkn, Foul
-1, 0x0406 = point_unkn, Explosive
-1, 0x0407 = point_unkn, Fish haven
-1, 0x0408 = point_unkn, Obstruction that covers
-1, 0x0409 = point_unkn, Marine farm
-1, 0x040a = point_unkn, Dangerous rock
-1, 0x040b = point_unkn, No bottom found
-1, 0x040c = point_unkn, Exposed rock
-1, 0x040d = point_unkn, Dangerous rock
-1, 0x040e = point_unkn, Underwater rock (non-dangerous rock)
-1, 0x040f = point_unkn, Shoal
-1, 0x0500 = point_unkn, Label point
-1, 0x0600 = point_unkn, Centered label
-1, 0x0700 = point_unkn, Miscellaneous point
-1, 0x0701 = point_unkn, Recommended anchorage
-1, 0x0702 = point_unkn, Pilot boarding place
-1, 0x0703 = point_unkn, Yacht harbour
-1, 0x0704 = point_unkn, Pile
-1, 0x0705 = point_unkn, Anchoring prohibited
-1, 0x0706 = point_unkn, Fishing prohibited
-1, 0x0707 = point_unkn, Precautionary area
-1, 0x0708 = point_unkn, Radio report point
-1, 0x0709 = point_unkn, Anchorage berths
-1, 0x070a = point_unkn, Rescue station
-1, 0x070b = point_unkn, Fishing harbour
-1, 0x070c = point_unkn, Airport
-1, 0x0800 = point_unkn, Information
-1, 0x0901 = point_unkn, Bottom conditions
-1, 0x0902 = point_unkn, Fishing information
-1, 0x0903 = point_unkn, Facility
-# NT types start
-1, 0x0b00 = poi_dining, Dining(Other)
-1, 0x0b04 = poi_dining, Dining(Chinese)
-1, 0x0b05 = poi_dining, Dining (Deli/Bakery)
-1, 0x0b06 = poi_dining, Dining (International)
-1, 0x0b07 = poi_fastfood, Fast Food
-1, 0x0b09 = poi_dining, Dining(Mexican)
-1, 0x0b0a = poi_dining, Dining(Pizza)
-1, 0x0b0b = poi_dining, Dining (Sea Food)
-1, 0x0b0c = poi_dining, Dining (Steak/Grill)
-1, 0x0b0d = poi_dining, Dining(Bagel/Donut)
-1, 0x0b0e = poi_dining, Dining(Cafe/Diner)
-1, 0x0c01 = poi_hotel, Hotel/Motel
-1, 0x0c02 = poi_hotel, Bed & Breakfast inn
-1, 0x0c03 = poi_camp_rv, Camping/RV-Park
-1, 0x0c04 = poi_resort, Resort
-1, 0x0d01 = poi_attraction, Amusement Park
-1, 0x0d02 = poi_museum_history, Museum/History
-1, 0x0d03 = poi_fair, Fair, Conference(point)
-1, 0x0d04 = poi_scenic_area, Scenic Area
-1, 0x0d05 = poi_school, School
-1, 0x0d06 = poi_park, Park
-1, 0x0d07 = poi_zoo, Zoo
-1, 0x0d08 = poi_stadium, Sportpark, Stadium
-1, 0x0d0a = poi_bar, Wine Bar
-1, 0x0d14 = poi_hospital, Hospital
-1, 0x0e01 = poi_theater, Theater
-1, 0x0e02 = poi_bar, Bar
-1, 0x0e03 = poi_cinema, Cinema
-1, 0x0e04 = poi_casino, Casino
-1, 0x0e05 = poi_golf, Golf
-1, 0x0e06 = poi_skiing, Skiing Center/Lift
-1, 0x0e07 = poi_bar, Night Bar/Piano
-1, 0x0e08 = poi_icesport, Ice/Sporting
-1, 0x0e09 = poi_swimming, Swimming
-1, 0x0e0a = poi_sport, Sports(point)
-1, 0x0f00 = poi_hotel, Hotel(Other)
-1, 0x0f01 = poi_shop_department, Department Store
-1, 0x0f02 = poi_shop_grocery, Grocery
-1, 0x0f03 = poi_hotel, Hotel/Motel
-1, 0x0f04 = poi_resort, Resort
-1, 0x0f05 = poi_pharmacy, Pharmacy
-1, 0x1001 = poi_fuel, Fuel/Gas
-1, 0x1002 = poly_car_parking, Parking Lot
-1, 0x1003 = poi_autoservice, Car Repair
-1, 0x1004 = poi_airport, Airport
-1, 0x1005 = poi_post_office, Post Office
-1, 0x1006 = poi_bank, Bank
-1, 0x1008 = poi_bus_station, Bus station
-1, 0x1009 = poi_marina, SeaPort
-1, 0x100a = poi_wrecker, Wrecker Service
-1, 0x100b = poi_car_parking, Parking
-1, 0x100d = poi_car_dealer_parts, Car Dealer(point)
-1, 0x100e = poi_car_wash, Car Wash
-1, 0x1011 = poi_bussines_service, Business Service
-1, 0x1012 = poi_communication, Communication
-1, 0x1013 = poi_repair_service, Repair Service
-1, 0x1014 = poi_social_service, Social Service
-1, 0x1015 = poi_public_utilities, Utility
-1, 0x1101 = poi_police, Police Station
-1, 0x1102 = poi_hospital, Hospital
-1, 0x1104 = poi_justice, Justice
-1, 0x1107 = poi_public_office, Public Office
-1, 0x1400 = town_label_1e5, Megapolis (10M +)
-1, 0x1401 = town_label_5e4, Megapolis (5-10M)
-1, 0x1402 = town_label_2e4, Big City (2-5M)
-1, 0x1403 = town_label_5e3, Big City (0.5-1M)
-1, 0x1404 = town_label_2e3, City (200-500k)
-1, 0x1405 = town_label_1e3, City (100-200k)
-1, 0x1406 = town_label_5e2, City (50-100k)
-1, 0x1405 = town_label_2e2, City (20-50k)
-1, 0x1406 = town_label_1e2, City (10-20k)
-1, 0x1407 = town_label_5e1, Small City (5-10k)
-1, 0x1408 = town_label_2e1, Small City (2-5k)
-1, 0x1409 = town_label_1e1, Village (1-2k)
-1, 0x140a = town_label_5e0, Village (500-1000)
-1, 0x140b = town_label_2e0, Village (200-500)
-1, 0x140c = town_label_1e0, Village (100-200)
-1, 0x140d = town_label_0e0, Village (0-100)
-1, 0x1500 = poi_personal_service, Personal Service
-1, 0x1501 = poi_bussines_service, Bussines Service
-
-
-POLYLINE
-0, 0x00 = street_1_land, Road
-0, 0x01 = highway_land, Major HWY thick
-0, 0x02 = street_4_land, Principal HWY-thick
-0, 0x03 = street_2_land, Principal HWY-medium
-0, 0x04 = street_3_city, Arterial Road-medium
-0, 0x05 = street_4_city, Arterial Road-thick
-0, 0x06 = street_2_city, Road-thin
-0, 0x07 = street_1_city, Alley-thick
-0, 0x08 = ramp, Ramp
-0, 0x09 = ramp, Ramp highspeed
-0, 0x0a = street_0, Unpaved Road-thin
-0, 0x0b = ramp, Major HWY Connector-thick
-0, 0x0c = roundabout, Roundabout
-0, 0x0d = street_unkn, Custom defined street 1
-0, 0x0e = street_unkn, Custom defined street 2
-0, 0x0f = street_unkn, Custom defined street 3
-0, 0x10 = street_unkn, Custom defined street 4
-0, 0x11 = street_unkn, Custom defined street 5
-0, 0x12 = street_unkn, Custom defined street 6
-0, 0x13 = street_unkn, Custom defined street 7
-0, 0x14 = rail, Railroad
-0, 0x15 = water_line, Shoreline
-0, 0x16 = street_nopass, Trail
-0, 0x18 = water_line, Stream-thin
-0, 0x19 = time_zone, Time-Zone
-0, 0x1a = ferry, Ferry
-0, 0x1b = ferry, Ferry
-0, 0x1c = border_country, Political Boundary
-0, 0x1d = border_country, County Boundary
-0, 0x1e = border_country, Intl. Boundary
-0, 0x1f = water_line, River
-0, 0x20 = height_line_1, Land Contour (thin) Height in feet
-0, 0x21 = height_line_2, Land Contour (medium) Height in feet
-0, 0x22 = height_line_3, Land Contour (thick) Height in feet
-0, 0x23 = depth_line_1, Depth Contour (thin) Depth in feet
-0, 0x24 = depth_line_2, Depth Contour (medium) Depth in feet
-0, 0x25 = depth_line_3, Depth Contour (thick) Depth in feet
-0, 0x26 = water_line, Intermittent River
-0, 0x27 = street_nopass, Airport Runway
-0, 0x28 = pipeline, Pipeline
-0, 0x29 = powerline, Powerline
-0, 0x2a = marine_boundary, Marine Boundary (no line)
-0, 0x2b = marine_hazard, Marine Hazard (no line)
-# RGN2-4
-# Marine
-1, 0x0100 = street_unkn, Miscellaneous line
-1, 0x0101 = street_unkn, Line
-1, 0x0102 = street_unkn, Cartographic line
-1, 0x0103 = street_unkn, Road
-1, 0x0104 = street_unkn, Clearing line
-1, 0x0105 = street_unkn, Contour line
-1, 0x0106 = street_unkn, Overhead cable
-1, 0x0107 = street_unkn, Bridge
-1, 0x0108 = street_unkn, Recommended route
-1, 0x0109 = street_unkn, Chart border
-1, 0x0300 = street_unkn, Depth contour
-1, 0x0301 = street_unkn, Depth contour value
-1, 0x0307 = street_unkn, Intertidal zone border
-1, 0x0400 = street_unkn, Obstruction line
-1, 0x0401 = street_unkn, Submarine cable
-1, 0x0402 = street_unkn, Submarine pipeline
-1, 0x0403 = street_unkn, Pile barrier
-1, 0x0404 = street_unkn, Fishing stakes
-1, 0x0405 = street_unkn, Supply pipeline area
-1, 0x0406 = street_unkn, Submarine cable area
-1, 0x0407 = street_unkn, Dumping ground
-1, 0x0408 = street_unkn, Explosive dumping ground
-1, 0x0409 = street_unkn, Danger line
-1, 0x040a = street_unkn, Overhead cable
-1, 0x040b = street_unkn, Submerged construction
-1, 0x040c = street_unkn, Pier/jetty
-1, 0x0500 = street_unkn, Restriction
-1, 0x0501 = street_unkn, Anchoring prohibited
-1, 0x0502 = street_unkn, Fishing prohibited
-1, 0x0503 = street_unkn, Prohibited area
-1, 0x0504 = street_unkn, Military practice area
-1, 0x0505 = street_unkn, Anchoring and fishing prohibited
-1, 0x0506 = street_unkn, Limit of nature reservation
-1, 0x0507 = street_unkn, Restricted area
-1, 0x0508 = street_unkn, Minefield
-1, 0x0600 = street_unkn, Miscellaneous line
-1, 0x0601 = street_unkn, Cartographic line
-1, 0x0602 = street_unkn, Traffic separation line
-1, 0x0603 = street_unkn, International maritime boundary
-1, 0x0604 = street_unkn, Straight territorial sea baseline
-1, 0x0605 = street_unkn, Seaward limit of territorial sea
-1, 0x0606 = street_unkn, Anchorage area
-1, 0x0607 = street_unkn, Quarantine anchorage area
-1, 0x0608 = street_unkn, Fishery zone
-1, 0x0609 = street_unkn, Swept area
-1, 0x060a = street_unkn, Traffic separation zone
-1, 0x060b = street_unkn, Limit of exclusive economic zone
-1, 0x060c = street_unkn, Established direction of traffic flow
-1, 0x060d = street_unkn, Recommended direction of traffic flow
-1, 0x060e = street_unkn, Harbour limit
-1, 0x060f = street_unkn, Inadequately surveyed area
-1, 0x0610 = street_unkn, Inshore traffic zone
-1, 0x0611 = street_unkn, Limit of traffic lane
-1, 0x0701 = street_unkn, River channel
-1, 0x0702 = street_unkn, Submerged object
-1, 0x0703 = street_unkn, Submerged object
-1, 0x0704 = street_unkn, Submerged object
-1, 0x0705 = street_unkn, Submerged object
-1, 0x0706 = street_unkn, Chart boundary
-# NT types
-1, 0x0a00 = water_line, River
-1, 0x0a01 = water_line, Small River
-1, 0x0a19 = street_unkn, Dry Creek
-1, 0x0b04 = border_country, Country Border
-
-
-POLYGONE
-0, 0x01 = poly_town, City (>200k)
-0, 0x02 = poly_town, City (<200k)
-0, 0x03 = poly_town, Village
-0, 0x04 = poly_military_zone, Military
-0, 0x05 = poly_car_parking, Parking Lot
-0, 0x06 = poly_car_parking, Parking Garage
-0, 0x07 = poly_airport, Airport
-0, 0x08 = poly_commercial_center, Shopping Center
-0, 0x09 = poly_marine, Marina
-0, 0x0a = poly_university, University/College
-0, 0x0b = poly_hospital, Hospital
-0, 0x0c = poly_industry, Industrial
-0, 0x0d = area, Reservation
-0, 0x0e = poly_airport, Airport Runway
-0, 0x13 = area_unspecified, Man made area
-0, 0x14 = poly_national_park, National park
-0, 0x15 = poly_national_park, National park
-0, 0x16 = poly_nature_park, National park
-0, 0x17 = poly_park, City Park
-0, 0x18 = poly_golf_course, Golf
-0, 0x19 = poly_sport, Sport
-0, 0x1a = poly_cemetery, Cemetery
-0, 0x1e = poly_nature_park, State Park
-0, 0x1f = poly_park, State Park
-0, 0x20 = poly_park, State Park
-0, 0x28 = poly_water, Ocean
-0, 0x29 = poly_water, Water Reservour
-0, 0x32 = poly_water, Sea
-0, 0x3b = poly_water, Water Reservour
-0, 0x3c = poly_water, Lake (250-600 km2)
-0, 0x3d = poly_water, Lake (77-250 km2)
-0, 0x3e = poly_water, Lake (25-77 km2)
-0, 0x3f = poly_water, Lake (11-25 km2)
-0, 0x40 = poly_water, Lake (0.25-11 km2)
-0, 0x41 = poly_water, Lake (<0.25 km2)
-0, 0x42 = poly_water, Lake (>3.3k km2)
-0, 0x43 = poly_water, Lake (1.1-3.3k km2)
-0, 0x44 = poly_water, Lake (0.6-1.1k km2)
-0, 0x45 = poly_water, Water Reservour
-0, 0x46 = poly_water, River (>1km)
-0, 0x47 = poly_water, River (200m-1km)
-0, 0x48 = poly_water, River (40-200m)
-0, 0x49 = poly_water, River (<40m)
-0, 0x4a = area, Definition Area
-0, 0x4b = area, Background
-0, 0x4c = poly_water, Intermittent River/Lake
-0, 0x4d = poly_glacier, Glaciers
-0, 0x4e = plantation, Orchard or plantation
-0, 0x4f = poly_scrub, Scrub
-0, 0x50 = poly_wood, Woods
-0, 0x51 = poly_wetland, Wetland
-0, 0x52 = tundra, Tundra
-0, 0x53 = poly_flats, Flats
-# RGN2-4
-# Marine
-1, 0x0100 = street_unkn, Land - white
-1, 0x0101 = street_unkn, Land - non-urban
-1, 0x0102 = street_unkn, Land - urban
-1, 0x0103 = street_unkn, Chart exclusion area
-1, 0x0104 = street_unkn, Chart background
-1, 0x0105 = street_unkn, Bridge
-1, 0x0300 = street_unkn, Depth area - white 1
-1, 0x0301 = street_unkn, Intertidal zone
-1, 0x0302 = street_unkn, Depth area - blue 1
-1, 0x0303 = street_unkn, Depth area - blue 2
-1, 0x0304 = street_unkn, Depth area - blue 3
-1, 0x0305 = street_unkn, Depth area - blue 4
-1, 0x0306 = street_unkn, Depth area - blue 5
-1, 0x0307 = street_unkn, Depth area - white
-1, 0x0400 = street_unkn, Obstruction (invisible)
-1, 0x0401 = street_unkn, Submarine cable (invisible)
-1, 0x0402 = street_unkn, Submarine pipeline (invisible)
-1, 0x0403 = street_unkn, Pile barrier (invisible)
-1, 0x0404 = street_unkn, Fishing stakes (invisible)
-1, 0x0405 = street_unkn, Supply pipeline area/line (invisible)
-1, 0x0406 = street_unkn, Submarine cable area/line (invisible)
-1, 0x0407 = street_unkn, Dumping ground (invisible)
-1, 0x0408 = street_unkn, Explosive dumping ground (invisible)
-1, 0x0409 = street_unkn, Danger line (invisible)
-1, 0x040a = street_unkn, Overhead cable (invisible)
-1, 0x040b = street_unkn, Submerged construction (invisible)
-1, 0x040c = street_unkn, Pier/jetty (invisible)
-1, 0x0500 = street_unkn, Restriction area/line (invisible)
-1, 0x0501 = street_unkn, Anchoring prohibited (invisible)
-1, 0x0502 = street_unkn, Fishing prohibited (invisible)
-1, 0x0503 = street_unkn, Prohibited area (invisible)
-1, 0x0504 = street_unkn, Military practice area (invisible)
-1, 0x0505 = street_unkn, Anchoring and fishing prohibited (invisible)
-1, 0x0506 = street_unkn, Limit of nature reservation (invisible)
-1, 0x0507 = street_unkn, Restricted area (invisible)
-1, 0x0508 = street_unkn, Minefield (invisible)
-1, 0x0600 = street_unkn, Miscellaneous area
-1, 0x0601 = street_unkn, Cartographic area
-1, 0x0602 = street_unkn, Traffic separation area
-1, 0x0603 = street_unkn, International maritime boundary
-1, 0x0604 = street_unkn, Straight territorial sea baseline
-1, 0x0605 = street_unkn, Seaward limit of territorial sea
-1, 0x0606 = street_unkn, Anchorage area
-1, 0x0607 = street_unkn, Quarantine anchorage area
-1, 0x0608 = street_unkn, Fishery zone
-1, 0x0609 = street_unkn, Swept area
-1, 0x060a = street_unkn, Traffic separation zone
-1, 0x060b = street_unkn, Limit of exclusive economic zone
-1, 0x060c = street_unkn, Established direction of traffic flow
-1, 0x0701 = street_unkn, Fishing area
-1, 0x0702 = street_unkn, Restricted area
-1, 0x0703 = street_unkn, Anchorage area
-1, 0x0704 = street_unkn, Fishing Hot Spots chart
-# NT types
-1, 0x0800 = poly_town, Large City
-1, 0x0801 = poly_town, City
-1, 0x0900 = poly_plaza, Square/Place
-1, 0x0902 = poly_car_parking, Car Park (Parking Lot)
-1, 0x0904 = poly_airport, Airport
-1, 0x090d = poly_sports_stadium, Stage like circus/sport/stadium
-1, 0x090e = poly_cemetery, Graveyard/Cemetery
-1, 0x0a01 = poly_national_park, National Park
-1, 0x0a04 = poly_park, City Park
-1, 0x0a05 = poly_nature_park, Nature Park
-1, 0x0a06 = street_unkn, Dam/Man made/ ??
-1, 0x0b02 = poly_water, Sea
-1, 0x0b03 = poly_water, Water Reservour
-1, 0x0b07 = poly_water, Dam/Lake
-1, 0x0b08 = poly_water, Dam/Lake
-1, 0x0b0c = poly_water, River
diff --git a/navit/map/garmin/gentypes.c b/navit/map/garmin/gentypes.c
deleted file mode 100644
index 16682a55a..000000000
--- a/navit/map/garmin/gentypes.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- Copyright (C) 2007 Alexander Atanasov <aatanasov@gmail.com>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- 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
-
- Garmin and MapSource are registered trademarks or trademarks
- of Garmin Ltd. or one of its subsidiaries.
-
-*/
-
-/*
-File format is:
-
-POINT
-GROUP,0x0100 = town_label_1e5, Megapolis (10M +)
-GROUP,0x0200 = town_label_5e4, Megapolis (5-10M)
-...
-GROUP,0x1e00-0x1e3f = district_label, District, Province, State Name
-...
-POLYLINE
-GROUP,0x00 = street_1_land, Road
-GROUP,0x01 = highway_land, Major HWY thick
-GROUP,0x02 = street_4_land, Principal HWY-thick
-GROUP,0x03 = street_2_land, Principal HWY-medium
-....
-POLYGONE
-GROUP,0x01 = town_poly, City (>200k)
-GROUP,0x02 = town_poly, City (<200k)
-GROUP,0x03 = town_poly, Village
-
-GROUP is
-0 - good old garmin types in RGN1
-1 - NT types in RGN2-4 5 is completely unknown yet
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <malloc.h>
-#include <unistd.h>
-#include "item.h"
-#include "gar2navit.h"
-
-#define dlog(x, y...) fprintf(stderr, ## y)
-/*
-static int add_def(struct gar2nav_conv *conv, int type, unsigned short minid,
- unsigned short maxid, unsigned int routable, char *ntype,
- char *descr)
-*/
-
-static void print_header(FILE *fp)
-{
- fprintf(fp, "// This is autogenerated file -- DO NOT EDIT\n");
- fprintf(fp, "struct gar2nav_conv *g2n_default_conv(void)\n"
- "{\n"
- "\tstruct gar2nav_conv *conv;\n"
- "\n"
- "\tconv = calloc(1, sizeof(*conv));\n"
- "\tif (!conv)\n"
- "\t\treturn conv;\n");
-}
-
-static int load_types_file(char *file, char *out)
-{
- char buf[4096];
- char descr[4096];
- char ntype[4096];
- FILE *fp;
- unsigned int minid, maxid, group;
- int rc;
- int type = -1;
- FILE *fpout = stdout;
-
- fp = fopen(file, "r");
- if (!fp)
- return -1;
- if (out) {
- fpout = fopen(out, "w");
- if (!fpout)
- return -1;
- }
- print_header(fpout);
- while (fgets(buf, sizeof(buf), fp)) {
- if (*buf == '#' || *buf == '\n')
- continue;
- if (!strncasecmp(buf, "POINT", 5)) {
- type = 1;
- continue;
- } else if (!strncasecmp(buf, "POI", 3)) {
- type = 1;
- continue;
- } else if (!strncasecmp(buf, "POLYLINE", 8)) {
- type = 2;
- continue;
- } else if (!strncasecmp(buf, "POLYGONE", 8)) {
- type = 3;
- continue;
- }
-
- rc = sscanf(buf, "%d, 0x%04X - 0x%04X = %[^\t , ] , %[^\n]",
- &group, &minid, &maxid, ntype, descr);
- if (rc != 5) {
- maxid = 0;
- rc = sscanf(buf, "%d, 0x%04X = %[^\t, ], %[^\n]",
- &group,&minid, ntype, descr);
- if (rc != 4) {
- dlog(1, "Invalid line rc=%d:[%s]\n",rc, buf);
- dlog(1, "minid=%04X ntype=[%s] des=[%s]\n",
- minid, ntype, descr);
- continue;
- }
- }
-
- fprintf(fpout, "\tadd_def(conv, %d, %#.04x, %#.04x, %d, \"%s\", \"%s\");\n",
- type, minid, maxid, group, ntype, descr);
- }
- fprintf(fpout, "\treturn conv;\n");
- fprintf(fpout, "}\n");
- fclose(fp);
- if (out)
- fclose(fpout);
- return 1;
-}
-
-int main(int argc, char **argv)
-{
- if (argc!=3) {
- fprintf(stderr, "Usage: %s garmintypes.txt outfile.c\n",
- argv[0]);
- return -1;
- }
- if (load_types_file(argv[1], argv[2]) < 0) {
- unlink(argv[2]);
- return -1;
- }
- return 0;
-}
diff --git a/navit/map/garmin_img/garmin_img.c b/navit/map/garmin_img/garmin_img.c
deleted file mode 100644
index f7dccf89c..000000000
--- a/navit/map/garmin_img/garmin_img.c
+++ /dev/null
@@ -1,1513 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include "config.h"
-#include "plugin.h"
-#include "data.h"
-#include "projection.h"
-#include "map.h"
-#include "maptype.h"
-#include "item.h"
-#include "attr.h"
-#include "coord.h"
-#include "transform.h"
-#include <stdio.h>
-#include "attr.h"
-#include "coord.h"
-
-struct file {
- FILE *f;
- int offset;
-};
-
-
-int shift=5;
-int subdiv_next=0x10;
-
-
-static void *
-file_read(struct file *f, int offset, int size)
-{
- void *ptr;
- int ret;
-
- ptr=calloc(size, 1);
- if (! ptr)
- return ptr;
- fseek(f->f, f->offset+offset, SEEK_SET);
- ret=fread(ptr, size, 1, f->f);
- if (ret != 1) {
- printf("fread %d vs %d offset %d+%d(0x%x)\n", ret, size, f->offset, offset,offset);
- g_assert(1==0);
- }
- return ptr;
-}
-
-static void
-file_free(void *ptr)
-{
- free(ptr);
-}
-
-struct offset_len {
- int offset;
- int length;
-} __attribute ((packed));
-
-static void
-dump_offset_len(struct offset_len *off_len)
-{
- printf("offset: 0x%x(%d) length 0x%x(%d)\n", off_len->offset, off_len->offset, off_len->length, off_len->length);
-}
-
-struct timestamp {
- short creation_year;
- char creation_month;
- char creation_day;
- char creation_hour;
- char creation_minute;
- char creation_second;
-} __attribute__((packed));
-
-struct img_header {
- char xor;
- char zero1[9];
- char update_month;
- char update_year;
- char zero2[3];
- char checksum[1];
- char signature[7];
- char unknown1[1];
- char unknown2[2];
- char unknown3[2];
- char unknown4[2];
- char unknown5[2];
- char zero3[25];
- struct timestamp ts;
- char unknown6;
- char map_file_identifier[7];
- char unknown12;
- char map_description1[20];
- short unknown13;
- short unknown14;
- char e1;
- char e2;
- char other[413];
- char zero4[512];
- char unknown7;
- char unknown8[11];
- int file_offset;
- char unknown9;
- char unknown10[15];
- char unknown11[480];
-} __attribute__((packed));
-
-static void
-dump_ts(struct timestamp *ts)
-{
- printf("%d-%02d-%02d %02d:%02d:%02d\n", ts->creation_year, ts->creation_month, ts->creation_day, ts->creation_hour, ts->creation_minute, ts->creation_second);
-}
-
-#if 0
-static void
-dump_img(struct img_header *img_hdr)
-{
- printf("signature: '%s'\n", img_hdr->signature);
- printf("creation: ");
- dump_ts(&img_hdr->ts);
- printf("map_file_identifier: '%s'\n", img_hdr->map_file_identifier);
- printf("file_offset: 0x%x\n", img_hdr->file_offset);
- printf("e1: 0x%x(%d)\n", img_hdr->e1, img_hdr->e1);
- printf("e2: 0x%x(%d)\n", img_hdr->e2, img_hdr->e2);
- printf("offset 0x%x\n", (int) &img_hdr->e1 - (int) img_hdr);
- printf("size %d\n", sizeof(*img_hdr));
-}
-#endif
-
-struct fat_block {
- char flag;
- char filename[8];
- char type[3];
- int size;
- char zero1;
- char part;
- char zero[14];
- unsigned short blocks[240];
-} __attribute__((packed));
-
-#if 0
-static void
-dump_fat_block(struct fat_block *fat_blk)
-{
- int i=0;
- char name[9];
- char type[4];
- printf("flag: 0x%x(%d)\n", fat_blk->flag, fat_blk->flag);
- strcpy(name, fat_blk->filename);
- name[8]='\0';
- strcpy(type, fat_blk->type);
- type[3]='\0';
- printf("name: '%s.%s'\n", name, type);
- printf("size: 0x%x(%d)\n", fat_blk->size, fat_blk->size);
- printf("part: 0x%x(%d)\n", fat_blk->part, fat_blk->part);
- printf("blocks: ");
- while (i < 240) {
- printf("0x%x(%d) ",fat_blk->blocks[i], fat_blk->blocks[i]);
- if (fat_blk->blocks[i] == 0xffff)
- break;
- i++;
- }
- printf("size: %d\n", sizeof(*fat_blk));
-
-}
-#endif
-
-struct file_header {
- short header_len;
- char type[10];
- char unknown1;
- char unknown2;
- struct timestamp ts;
-} __attribute__((packed));
-
-static void
-dump_file(struct file_header *fil_hdr)
-{
- printf("header_len: %d\n", fil_hdr->header_len);
- printf("type: '%s'\n", fil_hdr->type);
- printf("unknown1: 0x%x(%d)\n", fil_hdr->unknown1, fil_hdr->unknown1);
- printf("unknown2: 0x%x(%d)\n", fil_hdr->unknown2, fil_hdr->unknown2);
- printf("creation: ");
- dump_ts(&fil_hdr->ts);
- printf("size %d\n", sizeof(*fil_hdr));
-}
-
-struct region_header {
- struct file_header fil_hdr;
- struct offset_len offset_len;
-} __attribute__((packed));
-
-#if 0
-static void
-dump_region(struct region_header *rgn_hdr)
-{
- dump_offset_len(&rgn_hdr->offset_len);
-}
-#endif
-
-struct map_priv {
- int id;
- char *filename;
-};
-
-struct map_rect_priv {
- struct coord_rect r;
- int limit;
-
- struct file tre;
- struct tree_header *tre_hdr;
- struct file rgn;
- struct region_header *rgn_hdr;
- struct file lbl;
- struct label_header *lbl_hdr;
- char *label;
-
- int subdiv_level_count;
- int subdiv_pos;
- char *subdiv;
-
- int rgn_offset;
- int rgn_end;
- struct rgn_point *pnt;
- struct rgn_poly *ply;
- unsigned char *ply_data;
- int ply_bitpos;
- int ply_bitcount;
- int ply_lngbits;
- int ply_latbits;
- int ply_lng;
- int ply_lat;
- int ply_lnglimit;
- int ply_latlimit;
- int ply_lngsign;
- int ply_latsign;
- struct offset_len rgn_items[4];
- int rgn_type;
-
- int count;
-
- FILE *f;
- long pos;
- char line[256];
- int attr_pos;
- enum attr_type attr_last;
- char attrs[256];
- char attr[256];
- double lat,lng;
- char lat_c,lng_c;
- int eoc;
- struct map_priv *m;
- struct item item;
-};
-
-static int map_id;
-
-static int
-contains_coord(char *line)
-{
- return g_ascii_isdigit(line[0]);
-}
-
-static int debug=1;
-
-static int
-get_tag(char *line, char *name, int *pos, char *ret)
-{
- int len,quoted;
- char *p,*e,*n;
-
- if (debug)
- printf("get_tag %s from %s\n", name, line);
- if (! name)
- return 0;
- len=strlen(name);
- if (pos)
- p=line+*pos;
- else
- p=line;
- for(;;) {
- while (*p == ' ') {
- p++;
- }
- if (! *p)
- return 0;
- n=p;
- e=index(p,'=');
- if (! e)
- return 0;
- p=e+1;
- quoted=0;
- while (*p) {
- if (*p == ' ' && !quoted)
- break;
- if (*p == '"')
- quoted=1-quoted;
- p++;
- }
- if (e-n == len && !strncmp(n, name, len)) {
- e++;
- len=p-e;
- if (e[0] == '"') {
- e++;
- len-=2;
- }
- strncpy(ret, e, len);
- ret[len]='\0';
- if (pos)
- *pos=p-line;
- return 1;
- }
- }
- return 0;
-}
-
-static void
-get_line(struct map_rect_priv *mr)
-{
- mr->pos=ftell(mr->f);
- fgets(mr->line, 256, mr->f);
-}
-
-static void
-map_destroy_garmin_img(struct map_priv *m)
-{
- if (debug)
- printf("map_destroy_garmin_img\n");
- g_free(m);
-}
-
-static char *
-map_charset_garmin_img(struct map_priv *m)
-{
- return "iso8859-1";
-}
-
-static enum projection
-map_projection_garmin_img(struct map_priv *m)
-{
- return projection_garmin;
-}
-
-struct label_data_offset {
- struct offset_len offset_len;
- char multiplier;
- char data;
-} __attribute ((packed));
-
-#if 0
-static void
-dump_label_data_offset(struct label_data_offset *lbl_dat)
-{
- dump_offset_len(&lbl_dat->offset_len);
- printf("multiplier 0x%x(%d)\n", lbl_dat->multiplier, lbl_dat->multiplier);
- printf("data 0x%x(%d)\n", lbl_dat->data, lbl_dat->data);
-}
-#endif
-
-struct label_data {
- struct offset_len offset_len;
- short size;
- int zero;
-} __attribute ((packed));
-
-static void
-dump_label_data(struct label_data *lbl_dat)
-{
- dump_offset_len(&lbl_dat->offset_len);
- printf("size 0x%x(%d)\n", lbl_dat->size, lbl_dat->size);
-}
-
-struct tree_header {
- struct file_header fil_hdr;
- char boundary[12];
- struct offset_len level;
- struct offset_len subdivision;
- struct label_data copyright;
- struct offset_len tre7;
- short unknown1;
- char zero1;
- struct label_data polyline;
- struct label_data polygon;
- struct label_data point;
- int mapid;
-};
-
-static void
-dump_tree_header(struct tree_header *tre_hdr)
-{
- printf("tree_header:\n");
- dump_file(&tre_hdr->fil_hdr);
- printf("level: "); dump_offset_len(&tre_hdr->level);
- printf("subdivision: "); dump_offset_len(&tre_hdr->subdivision);
- printf("copyright: "); dump_label_data(&tre_hdr->copyright);
- printf("polyline: "); dump_label_data(&tre_hdr->polyline);
- printf("polygon: "); dump_label_data(&tre_hdr->polygon);
- printf("point: "); dump_label_data(&tre_hdr->point);
- printf("len: 0x%x(%d)\n", sizeof(*tre_hdr), sizeof(*tre_hdr));
-}
-
-struct label_header {
- struct file_header fil_hdr;
- struct label_data_offset label;
- struct label_data country;
- struct label_data region;
- struct label_data city;
- struct label_data poi_index;
- struct label_data_offset poi_properties;
- short zero1;
- char zero2;
- struct label_data poi_types;
- struct label_data zip;
- struct label_data hway;
- struct label_data exit;
- struct label_data hway_data;
- int unknown1;
- short unknown2;
- struct offset_len sort_descriptor;
- struct label_data lbl13;
- struct label_data lbl14;
-} __attribute((packed));
-
-#if 0
-static void
-dump_label(struct label_header *lbl_hdr)
-{
- dump_file(&lbl_hdr->fil_hdr);
- printf("label:\n");
- dump_label_data_offset(&lbl_hdr->label);
- printf("country:\n");
- dump_label_data(&lbl_hdr->country);
- printf("region:\n");
- dump_label_data(&lbl_hdr->region);
- printf("city:\n");
- dump_label_data(&lbl_hdr->city);
- printf("poi_index:\n");
- dump_label_data(&lbl_hdr->poi_index);
- printf("poi_properties:\n");
- dump_label_data_offset(&lbl_hdr->poi_properties);
- printf("poi_types:\n");
- dump_label_data(&lbl_hdr->poi_types);
- printf("zip:\n");
- dump_label_data(&lbl_hdr->zip);
- printf("hway:\n");
- dump_label_data(&lbl_hdr->hway);
- printf("exit:\n");
- dump_label_data(&lbl_hdr->exit);
- printf("hway_data:\n");
- dump_label_data(&lbl_hdr->hway_data);
- printf("lbl13:\n");
- dump_label_data(&lbl_hdr->lbl13);
- printf("lbl14:\n");
- dump_label_data(&lbl_hdr->lbl14);
- printf("len: 0x%x(%d)\n", sizeof(*lbl_hdr), sizeof(*lbl_hdr));
-}
-#endif
-
-struct triple {
- unsigned char data[3];
-} __attribute((packed));
-
-static unsigned int
-triple_u(struct triple *t)
-{
- return t->data[0] | (t->data[1] << 8) | (t->data[2] << 16);
-}
-
-static int
-triple(struct triple *t)
-{
- int ret=t->data[0] | (t->data[1] << 8) | (t->data[2] << 16);
- if (ret > 1<<23)
- ret=ret-(1<<24);
- return ret;
-}
-
-static void
-dump_triple_u(struct triple *t)
-{
- int val=triple_u(t);
- printf("0x%x(%d)\n", val, val);
-}
-
-struct tcoord {
- struct triple lng,lat;
-} __attribute((packed));
-
-static void
-dump_tcoord(struct tcoord *t)
-{
- printf ("0x%x(%d),0x%x(%d)\n", triple_u(&t->lng), triple_u(&t->lng), triple_u(&t->lat), triple_u(&t->lat));
-}
-
-struct level {
- unsigned char zoom;
- unsigned char bits_per_coord;
- unsigned short subdivisions;
-} __attribute((packed));
-
-static void
-dump_level(struct level *lvl)
-{
- printf("level:\n");
- printf("\tzoom 0x%x(%d)\n", lvl->zoom, lvl->zoom);
- printf("\tbits_per_coord 0x%x(%d)\n", lvl->bits_per_coord, lvl->bits_per_coord);
- printf("\tsubdivisions 0x%x(%d)\n", lvl->subdivisions, lvl->subdivisions);
-}
-
-struct subdivision {
- struct triple rgn_offset;
- unsigned char types;
- struct tcoord center;
- unsigned short width;
- unsigned short height;
- unsigned short next;
-} __attribute((packed));
-
-static void
-dump_subdivision(struct subdivision *sub)
-{
- printf("subdivision:\n");
- printf("\trgn_offset: "); dump_triple_u(&sub->rgn_offset);
- printf("\ttypes: 0x%x(%d)\n", sub->types, sub->types);
- printf("\tcenter: "); dump_tcoord(&sub->center);
- printf("\tsize: 0x%x(%d)x0x%x(%d) %s\n",sub->width & 0x7fff, sub->width & 0x7fff, sub->height, sub->height, sub->width & 0x8000 ? "Terminating" : "");
- printf("\tnext: 0x%x(%d)\n",sub->next, sub->next);
-
- printf("\tlen: 0x%x(%d)\n", sizeof(*sub), sizeof(*sub));
-}
-
-struct rgn_point {
- unsigned char info;
- struct triple lbl_offset;
- short lng_delta;
- short lat_delta;
- unsigned char subtype;
-} __attribute((packed));
-
-static void
-dump_point(struct rgn_point *pnt)
-{
- printf("point:\n");
- printf("\tinfo 0x%x(%d)\n", pnt->info, pnt->info);
- printf("\tlbl_offset 0x%x(%d)\n", triple_u(&pnt->lbl_offset), triple_u(&pnt->lbl_offset));
- printf("\tlng_delta 0x%x(%d)\n", pnt->lng_delta, pnt->lng_delta);
- printf("\tlat_delta 0x%x(%d)\n", pnt->lat_delta, pnt->lat_delta);
- printf("\tsubtype 0x%x(%d)\n", pnt->subtype, pnt->subtype);
- printf("\tlen: 0x%x(%d)\n", sizeof(*pnt), sizeof(*pnt));
-}
-
-struct rgn_poly {
- unsigned char info;
- struct triple lbl_offset;
- short lng_delta;
- short lat_delta;
- union {
- struct {
- unsigned char bitstream_len;
- unsigned char bitstream_info;
- } __attribute((packed)) p1;
- struct {
- unsigned short bitstream_len;
- unsigned char bitstream_info;
- } __attribute((packed)) p2;
- } __attribute((packed)) u;
-} __attribute((packed));
-
-static void
-dump_poly(struct rgn_poly *ply)
-{
- printf("poly:\n");
- printf("\tinfo 0x%x(%d)\n", ply->info, ply->info);
- printf("\tlbl_offset 0x%x(%d)\n", triple_u(&ply->lbl_offset), triple_u(&ply->lbl_offset));
- printf("\tlng_delta 0x%x(%d)\n", ply->lng_delta, ply->lng_delta);
- printf("\tlat_delta 0x%x(%d)\n", ply->lat_delta, ply->lat_delta);
- if (ply->info & 0x80) {
- printf("\tbitstream_len 0x%x(%d)\n", ply->u.p2.bitstream_len, ply->u.p2.bitstream_len);
- printf("\tbitstream_info 0x%x(%d)\n", ply->u.p2.bitstream_info, ply->u.p2.bitstream_info);
- } else {
- printf("\tbitstream_len 0x%x(%d)\n", ply->u.p1.bitstream_len, ply->u.p1.bitstream_len);
- printf("\tbitstream_info 0x%x(%d)\n", ply->u.p1.bitstream_info, ply->u.p1.bitstream_info);
- }
- printf("\tlen: 0x%x(%d)\n", sizeof(*ply), sizeof(*ply));
-}
-
-static void
-dump_hex(void *ptr, int len)
-{
- unsigned char *c=ptr;
- while (len--) {
- printf("%02x ", *c++);
- }
- printf("\n");
-}
-
-static void
-dump_hex_r(void *ptr, int len, int rec)
-{
- unsigned char *c=ptr;
- int l=rec;
- while (len--) {
- printf("%02x ", *c++);
- if (! --l) {
- printf("\n");
- l=rec;
- }
- }
- printf("\n");
-}
-
-#if 0
-static void
-dump_label_offset(struct map_rect_priv *mr, int offset)
-{
- void *p;
- p=file_read(&mr->lbl, mr->lbl_hdr->label.offset_len.offset+offset, 128);
- printf("%s\n", (char *)p);
-}
-#endif
-
-
-#if 0
-static void
-dump_region_item(struct subdivision *sub, struct file *rgn, struct map_rect_priv *mr)
-{
- int offset,item_offset,i,j;
- unsigned short count=0;
- unsigned short *offsets[4];
- unsigned short *file_offsets;
- struct rgn_point *pnt;
-
- offset=triple_u(&sub->rgn_offset)+mr->rgn_hdr->offset_len.offset;
- file_offsets=file_read(rgn, offset, 90*sizeof(unsigned short));
- printf("0x%x ", offset); dump_hex(file_offsets, 90);
- for (i=0 ; i < 4 ; i++) {
- printf("i=%d\n", i);
- if (sub->types & (0x10 << i)) {
- if (count) {
- offsets[i]=&file_offsets[count-1];
- } else
- offsets[i]=&count;
- count++;
- } else
- offsets[i]=NULL;
-
- }
- count--;
- count*=2;
- for (i=0 ; i < 4 ; i++) {
- printf("i=%d\n", i);
- if (offsets[i]) {
- printf("offset[%d]=0x%x(%d)\n", i, *offsets[i], *offsets[i]);
- switch (i) {
- case 0:
- printf("point\n");
- break;
- case 1:
- printf("indexed point\n");
- break;
- case 2:
- printf("polyline\n");
- break;
- case 3:
- printf("polygon\n");
- break;
- }
- item_offset=offset+*offsets[i];
- switch (i) {
- case 0:
- case 1:
- for (j = 0 ; j < 10 ; j++) {
- struct coord_geo g;
- char buffer[1024];
- double conv=180.0/(1UL<<23);
- pnt=file_read(rgn, item_offset, sizeof(*pnt)*20);
- // printf("0x%x ", item_offset); dump_hex(pnt, 32);
- dump_point(pnt);
- g.lng=(triple(&sub->center.lng)+(pnt->lng_delta << shift))*conv;
- g.lat=(triple(&sub->center.lat)+(pnt->lat_delta << shift))*conv;
- printf("%f %f\n", g.lng, g.lat);
- coord_format(g.lat,g.lng,DEGREES_MINUTES_SECONDS,
- buffer,sizeof(buffer));
- printf("%s\n", buffer);
- dump_label_offset(mr, triple_u(&pnt->lbl_offset));
- if (pnt->info & 0x80)
- item_offset+=sizeof(*pnt);
- else
- item_offset+=sizeof(*pnt)-1;
- }
- }
- } else {
- printf("offset[%d] doesn't exist\n", i);
- }
- }
- file_free(file_offsets);
-}
-
-#endif
-
-static void
-dump_levels(struct map_rect_priv *mr)
-{
- int i,offset;
- struct level *lvl;
-
- offset=mr->tre_hdr->level.offset;
- for (i = 0 ; i < mr->tre_hdr->level.length/sizeof(*lvl) ; i++) {
- lvl=file_read(&mr->tre, offset, sizeof(*lvl));
- dump_level(lvl);
- offset+=sizeof(*lvl);
- }
-}
-
-#if 0
-static void
-dump_tree(struct file *f, struct file *rgn, struct map_rect_priv *mr)
-{
- struct tree_header *tre_hdr;
- struct subdivision *sub;
- int i,offset;
-
- tre_hdr=file_read(f, 0, sizeof(*tre_hdr));
- dump_tree_header(tre_hdr);
- offset=tre_hdr->subdivision.offset;
- sub=file_read(f, offset, sizeof(*sub));
- dump_subdivision(sub);
- offset+=sizeof(*sub);
- for (i = 1 ; i < tre_hdr->subdivision.length/sizeof(*sub) ; i++) {
- printf("i=%d\n", i);
- sub=file_read(f, offset, sizeof(*sub));
- dump_subdivision(sub);
- dump_region_item(sub, rgn, mr);
- if (sub->width & 0x8000)
- break;
- offset+=sizeof(*sub);
- }
- file_free(tre_hdr);
-}
-#endif
-
-#if 0
-static void
-dump_labels(struct file *f)
-{
- struct label_header *lbl_hdr;
-
- lbl_hdr=file_read(f, 0, sizeof(*lbl_hdr));
- printf("**labels**\n");
- dump_label(lbl_hdr);
- file_free(lbl_hdr);
-#if 0
- labels=alloca(lbl_hdr.label_length);
- file_read(f, lbl_hdr.label_offset, labels, lbl_hdr.label_length);
- l=labels;
- while (l < labels+lbl_hdr.label_length) {
- printf("'%s'(%d)\n", l, strlen(l));
- l+=strlen(l)+1;
- }
-#endif
-
-}
-#endif
-
-static void
-garmin_img_coord_rewind(void *priv_data)
-{
-}
-
-static void
-parse_line(struct map_rect_priv *mr)
-{
- int pos=0;
- sscanf(mr->line,"%lf %c %lf %c %n",&mr->lat,&mr->lat_c,&mr->lng,&mr->lng_c,&pos);
- if (pos < strlen(mr->line)) {
- strcpy(mr->attrs, mr->line+pos);
- }
-}
-
-static int
-get_bits(struct map_rect_priv *mr, int bits)
-{
- unsigned long ret;
- ret=L(*((unsigned long *)(mr->ply_data+mr->ply_bitpos/8)));
- ret >>= (mr->ply_bitpos & 7);
- ret &= (1 << bits)-1;
- mr->ply_bitpos+=bits;
- return ret;
-}
-
-static int
-garmin_img_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *mr=priv_data;
- struct subdivision *sub=(struct subdivision *)(mr->subdiv+mr->subdiv_pos);
- int ret=0;
- int debug=0;
- if (debug)
- printf("garmin_img_coord_get %d\n",count);
- if (debug)
- dump_subdivision(sub);
- while (count--) {
- if (mr->rgn_type < 2) {
- c->x=triple(&sub->center.lng)+(mr->pnt->lng_delta << shift);
- c->y=triple(&sub->center.lat)+(mr->pnt->lat_delta << shift);
- } else {
- if (! mr->ply_bitpos) {
- if (mr->ply->info & 0x80) {
- mr->ply_bitcount=mr->ply->u.p2.bitstream_len*8;
- mr->ply_lngbits=mr->ply->u.p2.bitstream_info & 0xf;
- mr->ply_latbits=mr->ply->u.p2.bitstream_info >> 4;
- } else {
- mr->ply_bitcount=mr->ply->u.p1.bitstream_len*8;
- mr->ply_lngbits=mr->ply->u.p1.bitstream_info & 0xf;
- mr->ply_latbits=mr->ply->u.p1.bitstream_info >> 4;
- }
- if (mr->ply_lngbits <= 9)
- mr->ply_lngbits+=2;
- if (mr->ply_latbits <= 9)
- mr->ply_latbits+=2;
- if (! get_bits(mr,1)) {
- mr->ply_lngbits+=1;
- mr->ply_lngsign=0;
- } else
- if (get_bits(mr, 1))
- mr->ply_lngsign=-1;
- else
- mr->ply_lngsign=1;
- if (! get_bits(mr,1)) {
- mr->ply_latbits+=1;
- mr->ply_latsign=0;
- } else
- if (get_bits(mr, 1))
- mr->ply_latsign=-1;
- else
- mr->ply_latsign=1;
- mr->ply_lnglimit=1 << (mr->ply_lngbits-1);
- mr->ply_latlimit=1 << (mr->ply_latbits-1);
- mr->ply_lng=mr->ply->lng_delta;
- mr->ply_lat=mr->ply->lat_delta;
- if (debug)
- printf("lngbits %d latbits %d bitcount %d\n", mr->ply_lngbits, mr->ply_latbits, mr->ply_bitcount);
- c->x=0;
- c->y=0;
- } else {
- if (mr->ply_bitpos + mr->ply_lngbits + mr->ply_latbits > mr->ply_bitcount) {
- if (debug)
- printf("out of bits %d + %d + %d >= %d\n", mr->ply_bitpos, mr->ply_lngbits, mr->ply_latbits, mr->ply_bitcount);
- return ret;
- }
- c->x=0;
- c->y=0;
- int x,y;
- for (;;) {
- x=get_bits(mr,mr->ply_lngbits);
- if (debug)
- printf("x %d ", x);
- if (mr->ply_lngsign || x != mr->ply_lnglimit)
- break;
- c->x += x-1;
- }
- if (mr->ply_lngsign) {
- c->x=x*mr->ply_lngsign;
- } else {
- if (x >= mr->ply_lnglimit)
- c->x = x - (mr->ply_lnglimit << 1) - c->x;
- else
- c->x +=x;
- }
- for (;;) {
- y=get_bits(mr,mr->ply_latbits);
- if (debug)
- printf("y %d ", y);
- if (mr->ply_latsign || y != mr->ply_latlimit)
- break;
- c->y += y-1;
- }
- if (mr->ply_latsign) {
- c->y=y*mr->ply_latsign;
- } else {
- if (y >= mr->ply_latlimit)
- c->y = y - (mr->ply_latlimit << 1) - c->y;
- else
- c->y +=y;
- }
- mr->ply_lng += c->x;
- mr->ply_lat += c->y;
- }
- if (debug)
- printf(": x %d y %d\n", c->x, c->y);
-
- c->x=triple(&sub->center.lng)+(mr->ply_lng << shift);
- c->y=triple(&sub->center.lat)+(mr->ply_lat << shift);
- }
-#if 0
- c->x-=0x6f160;
- c->y-=0x181f59;
- c->x+=0x168ca1;
- c->y+=0x68d815;
-#endif
- c++;
- ret++;
- if (mr->rgn_type < 2)
- return ret;
- }
- return ret;
-}
-
-static char *
-get_label_offset(struct map_rect_priv *mr, int offset)
-{
- g_assert(offset < mr->lbl_hdr->label.offset_len.length);
- return file_read(&mr->lbl, mr->lbl_hdr->label.offset_len.offset+offset, 128);
-}
-
-static void
-garmin_img_attr_rewind(void *priv_data)
-{
-}
-
-static int
-garmin_img_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *mr=priv_data;
- int debug=0;
-
- if (debug)
- printf("garmin_img_attr_get\n");
- if (attr_type == attr_label) {
- if (debug)
- printf("garmin_img_attr_get label\n");
- attr->type=attr_type;
- if (mr->rgn_type < 2) {
- if (mr->label)
- file_free(mr->label);
- mr->label=get_label_offset(mr, triple_u(&mr->pnt->lbl_offset) & 0x3fffff);
- attr->u.str=mr->label;
- } else {
- attr->u.str="";
- }
- return 1;
- }
- return 0;
-}
-
-static struct item_methods methods_garmin_img = {
- garmin_img_coord_rewind,
- garmin_img_coord_get,
- garmin_img_attr_rewind,
- garmin_img_attr_get,
-};
-
-static int rgn_next_type(struct map_rect_priv *mr)
-{
- while (mr->rgn_type < 3) {
- mr->rgn_type++;
- if (mr->rgn_items[mr->rgn_type].offset && mr->rgn_items[mr->rgn_type].length != 0) {
- mr->rgn_offset=mr->rgn_items[mr->rgn_type].offset;
- mr->rgn_end=mr->rgn_offset+mr->rgn_items[mr->rgn_type].length;
- return 0;
- }
- }
- return 1;
-}
-
-static int
-sub_next(struct map_rect_priv *mr, int next)
-{
- int i,offset,first=-1,last=-1,count=-1;
- int end;
- unsigned short *offsets;
- int debug=0;
-
- if (mr->subdiv_level_count <= 0)
- return 1;
- if (debug)
- printf("%d left\n", mr->subdiv_level_count);
- mr->subdiv_level_count--;
-
-#if 0
- if (next && mr->subdiv[mr->subdiv_current].width & 0x8000)
- return 1;
-#endif
- if (debug)
- dump_hex_r(mr->subdiv+mr->subdiv_pos, 64, 14);
- mr->subdiv_pos+=next;
- if (debug)
- printf("subdiv_pos 0x%x\n", mr->subdiv_pos);
- if (mr->subdiv_pos > mr->tre_hdr->subdivision.length)
- return 1;
- struct subdivision *sub=(struct subdivision *)(mr->subdiv+mr->subdiv_pos);
- offset=triple_u(&sub->rgn_offset)+mr->rgn_hdr->offset_len.offset;
- if (debug) {
- printf("offset=0x%x\n", offset);
- dump_subdivision(sub);
- }
- offsets=file_read(&mr->rgn, offset, 3*sizeof(unsigned short));
-
- if (! next)
- next=subdiv_next;
- if (mr->subdiv_pos+next < mr->tre_hdr->subdivision.length)
- end=triple_u(&((struct subdivision *)(mr->subdiv+mr->subdiv_pos+next))->rgn_offset)+mr->rgn_hdr->offset_len.offset;
- else
- end=mr->rgn_hdr->offset_len.offset+mr->rgn_hdr->offset_len.length;
- if (debug) {
- dump_subdivision(sub);
- dump_hex(offsets, 6);
- }
- for (i=0 ; i < 4 ; i++) {
- if (debug)
- printf("i=%d ", i);
- if (sub->types & (0x10 << i)) {
- if (debug)
- printf("+ ");
- if (first == -1) {
- first=i;
- mr->rgn_items[i].offset=offset;
- if (debug)
- printf("\n");
- } else {
- mr->rgn_items[i].offset=offset+offsets[count];
- if (debug)
- printf("0x%x\n", offsets[count]);
- mr->rgn_items[last].length=mr->rgn_items[i].offset-mr->rgn_items[last].offset;
- }
- last=i;
- count++;
- } else {
- if (debug)
- printf("-\n");
- mr->rgn_items[i].offset=0;
- mr->rgn_items[i].length=0;
- }
-
- }
- if (first != -1) {
- mr->rgn_items[first].offset+=count*2;
- mr->rgn_items[first].length-=count*2;
- mr->rgn_items[last].length=end-mr->rgn_items[last].offset;
- }
- if (debug) {
- for (i=0 ; i < 4 ; i++) {
- printf("%d 0x%x 0x%x\n", i, mr->rgn_items[i].offset, mr->rgn_items[i].length);
- }
- }
- mr->rgn_type=-1;
- rgn_next_type(mr);
- if (debug)
- printf("*** offset 0x%x\n", mr->rgn_offset);
- file_free(offsets);
- return 0;
-}
-
-int item_count;
-
-static struct map_rect_priv *
-map_rect_new_garmin_img(struct map_priv *map, struct coord_rect *r, struct layer *layers, int limit)
-{
- struct map_rect_priv *mr;
- struct img_header img;
-
- if (debug)
- printf("map_rect_new_garmin_img\n");
- mr=g_new0(struct map_rect_priv, 1);
- mr->m=map;
- if (r)
- mr->r=*r;
- mr->limit=limit;
- mr->item.id_hi=0;
- mr->item.id_lo=0;
- mr->item.meth=&methods_garmin_img;
- mr->item.priv_data=mr;
- mr->f=fopen(map->filename, "r");
-
- fread(&img, sizeof(img), 1, mr->f);
-#if 0
- dump_img(&img);
- for (i = 0 ; i < (img.file_offset-sizeof(img))/sizeof(fat_blk) ; i++) {
- fread(&fat_blk, sizeof(fat_blk), 1, mr->f);
- if (!fat_blk.flag)
- break;
- dump_fat_block(&fat_blk);
- }
-#endif
- mr->rgn.offset=0xa*2048;
- mr->rgn.f=mr->f;
- mr->rgn_hdr=file_read(&mr->rgn, 0, sizeof(*mr->rgn_hdr));
-
- mr->tre.offset=0x62b*2048;
- mr->tre.f=mr->f;
- mr->tre_hdr=file_read(&mr->tre, 0, sizeof(*mr->tre_hdr));
-
- mr->lbl.offset=0x64a*2048;
- mr->lbl.f=mr->f;
- mr->lbl_hdr=file_read(&mr->lbl, 0, sizeof(*mr->lbl_hdr));
-
- mr->subdiv=file_read(&mr->tre, mr->tre_hdr->subdivision.offset, mr->tre_hdr->subdivision.length);
-#if 0
- dump_hex_r(mr->subdiv, mr->tre_hdr->subdivision.length, 16);
-#endif
- dump_tree_header(mr->tre_hdr);
-
- dump_levels(mr);
-
-
- printf("limit=%d\n", limit);
- if (limit < 3) {
- mr->subdiv_pos=0;
- mr->subdiv_level_count=1;
- shift=11;
- } else if (limit < 6) {
- mr->subdiv_pos=1*sizeof(struct subdivision);
- mr->subdiv_level_count=5;
- shift=9;
- } else if (limit < 8) {
- mr->subdiv_pos=6*sizeof(struct subdivision);
- mr->subdiv_level_count=9;
- shift=7;
- } else if (limit < 10) {
- mr->subdiv_pos=15*sizeof(struct subdivision);
- mr->subdiv_level_count=143;
- shift=5;
- } else {
- mr->subdiv_pos=158*sizeof(struct subdivision);
- mr->subdiv_level_count=4190;
- shift=2;
- subdiv_next=14;
- }
-
-#if 0
- mr->rgn_offset=triple_u(&mr->subdiv[mr->subdiv_current].rgn_offset)+mr->rgn_hdr->offset_len.offset+4;
- mr->rgn_type=1;
- mr->rgn_end=mr->rgn_offset+20*8;
-#endif
- mr->count=0;
- item_count=0;
-
-#if 0
- printf("*** offset 0x%x\n", 0x656c-mr->rgn.offset);
- printf("*** offset 0x%x\n", mr->rgn_offset);
-#endif
-#if 1
- sub_next(mr, 0);
-#endif
-#if 0
- {
- struct rgn_point *pnt;
- int i;
- int offset=0x65cc;
- for (i = 0 ; i < 26 ; i++) {
- pnt=file_read(&mr->rgn, 0x656c+8*i-mr->rgn.offset, sizeof(*pnt));
- // dump_hex(pnt, sizeof(*pnt));
- dump_point(pnt);
- dump_label_offset(mr, triple_u(&pnt->lbl_offset));
- }
- }
- exit(0);
-#endif
-#if 0
- dump_tree(&mr->tre,&mr->rgn,mr);
-#endif
-
-#if 0
- f.offset=0x64a*2048;
- f.f=mr->f;
- dump_labels(&f);
-#endif
-#if 0
- fseek(mr->f, img.file_offset, SEEK_SET);
- fread(&fil, sizeof(fil), 1, mr->f);
- dump_file(&fil);
- fread(&rgn, sizeof(rgn), 1, mr->f);
- dump_region(&rgn);
- fseek(mr->f, rgn.data_length, SEEK_CUR);
- fread(&fil, sizeof(fil), 1, mr->f);
- dump_file(&fil);
-#endif
- return mr;
-}
-
-
-static void
-map_rect_destroy_garmin_img(struct map_rect_priv *mr)
-{
- fclose(mr->f);
- g_free(mr);
-}
-
-
-static struct item *
-map_rect_get_item_garmin_img(struct map_rect_priv *mr)
-{
- char *p,type[256];
- int ptype;
- int debug=0;
-
- item_count++;
-
- if (debug)
- printf("map_rect_get_item_garmin_img\n");
- for (;;) {
- if (mr->rgn_offset < mr->rgn_end) {
- if (debug)
- printf("data available\n");
- if (mr->rgn_type >= 2) {
- int len;
- if (debug)
- printf("polyline %d\n", mr->count);
- if (mr->ply)
- file_free(mr->ply);
- mr->ply=file_read(&mr->rgn, mr->rgn_offset, sizeof(*mr->ply)*3);
- if(triple_u(&mr->ply->lbl_offset) >= mr->lbl_hdr->label.offset_len.length) {
- printf("item_count %d\n", item_count);
- dump_poly(mr->ply);
- dump_hex(mr->ply, 32);
- printf("%d vs %d\n", triple_u(&mr->ply->lbl_offset), mr->lbl_hdr->label.offset_len.length);
- }
- g_assert(triple_u(&mr->ply->lbl_offset) < mr->lbl_hdr->label.offset_len.length);
- if (debug) {
- dump_hex(mr->ply, 16);
- dump_poly(mr->ply);
- }
- if (mr->ply_data)
- file_free(mr->ply_data);
- mr->rgn_offset+=10;
- if (mr->ply->info & 0x80) {
- mr->rgn_offset++;
- len=mr->ply->u.p2.bitstream_len;
- } else
- len=mr->ply->u.p1.bitstream_len;
-
- mr->ply_data=file_read(&mr->rgn, mr->rgn_offset, len);
- mr->rgn_offset += len;
- mr->ply_bitpos=0;
- // dump_hex(mr->ply_data, 32);
- if (mr->rgn_type == 3) {
- switch(mr->ply->info & 0x7f) {
- case 0x1: /* large urban area (>200k) */
- mr->item.type=type_town_poly;
- break;
- case 0xd: /* reservation */
- mr->item.type=type_park_poly;
- break;
- case 0xe: /* airport runway */
- mr->item.type=type_airport_poly;
- break;
- case 0x14: /* national park */
- mr->item.type=type_park_poly;
- break;
- case 0x32: /* sea */
- case 0x3d: /* large lake (77-250km2) */
- case 0x4c: /* intermittend water */
- mr->item.type=type_water_poly;
- break;
- case 0x4b: /* background */
- continue;
- default:
- printf("unknown polygon: 0x%x\n", mr->ply->info);
- mr->item.type=type_street_3_city;
- }
- } else {
- switch(mr->ply->info & 0x3f) {
- case 0x1: /* major highway */
- mr->item.type=type_highway_land;
- break;
- case 0x2: /* principal highway */
- mr->item.type=type_street_3_land;
- break;
- case 0x6: /* residental street */
- mr->item.type=type_street_2_land;
- break;
- case 0x16: /* walkway/trail */
- mr->item.type=type_street_1_land;
- break;
- case 0x1e: /* international boundary */
- mr->item.type=type_border_country;
- break;
- case 0x20: /* minor land contour 1/10 */
- mr->item.type=type_height_line_1;
- break;
- case 0x21: /* major land contour 1/2 */
- mr->item.type=type_height_line_2;
- break;
- default:
- printf("unknown polyline: 0x%x\n", mr->ply->info);
- mr->item.type=type_street_3_city;
- }
- }
- return &mr->item;
- }
- if (mr->pnt)
- file_free(mr->pnt);
- mr->pnt=file_read(&mr->rgn, mr->rgn_offset, sizeof(*mr->pnt));
- mr->item.type=type_none;
- int subtype=mr->pnt->subtype;
- if (mr->pnt->lbl_offset.data[2] & 0x80)
- mr->rgn_offset+=9;
- else {
- mr->rgn_offset+=8;
- subtype=0;
- }
- switch(mr->pnt->info) {
- case 0x3: /* large city 2-5M */
- mr->item.type=type_town_label_2e6;
- break;
- case 0xa: /* small city/town 10-20k */
- mr->item.type=type_town_label_1e4;
- break;
- case 0xd: /* settlement 1-2K */
- mr->item.type=type_town_label_1e3;
- break;
- case 0x11: /* settlement less 100 */
- mr->item.type=type_town_label_5e1;
- break;
- case 0x1c:
- switch(subtype) {
- case 0x01:
- mr->item.type=type_poi_wreck;
- break;
- }
- break;
- case 0x20:
- mr->item.type=type_highway_exit;
- break;
- case 0x25:
- mr->item.type=type_poi_toll_booth;
- break;
- case 0x2b:
- switch(subtype) {
- case 0x01:
- mr->item.type=type_poi_hotel;
- break;
- case 0x03:
- mr->item.type=type_poi_camp_rv;
- break;
- }
- break;
- case 0x2c:
- switch(subtype) {
- case 0x00:
- mr->item.type=type_poi_attraction;
- break;
- case 0x02:
- mr->item.type=type_poi_museum_history;
- break;
- }
- break;
- case 0x2e:
- mr->item.type=type_poi_shopping;
- break;
- case 0x2f:
- switch(subtype) {
- case 0x01:
- mr->item.type=type_poi_fuel;
- break;
- case 0x07:
- mr->item.type=type_poi_car_dealer_parts;
- break;
- case 0x0b:
- mr->item.type=type_poi_car_parking;
- break;
- case 0x15:
- mr->item.type=type_poi_public_utilities;
- break;
- }
- break;
- case 0x30:
- switch(subtype) {
- case 0x02:
- mr->item.type=type_poi_hospital;
- break;
- }
- break;
- case 0x43:
- mr->item.type=type_poi_marina;
- break;
- case 0x46:
- mr->item.type=type_poi_bar;
- break;
- case 0x48:
- mr->item.type=type_poi_camping;
- break;
- case 0x49:
- mr->item.type=type_poi_park;
- break;
- case 0x4a:
- mr->item.type=type_poi_picnic;
- break;
- case 0x59: /* airport */
- mr->item.type=type_poi_airport;
- break;
- case 0x64:
- switch(subtype) {
- case 0x1:
- mr->item.type=type_poi_bridge;
- break;
- case 0x2:
- mr->item.type=type_poi_building;
- break;
- case 0x15:
- mr->item.type=type_town_ghost;
- break;
- }
- break;
- case 0x65:
- switch(subtype) {
- case 0x0:
- mr->item.type=type_poi_water_feature;
- break;
- case 0xc:
- mr->item.type=type_poi_island;
- break;
- case 0xd:
- mr->item.type=type_poi_lake;
- break;
- }
- break;
- case 0x66:
- switch(subtype) {
- case 0x0:
- mr->item.type=type_poi_land_feature;
- break;
- case 0x6:
- mr->item.type=type_poi_cape;
- break;
- case 0x14:
- mr->item.type=type_poi_rock;
- break;
- }
- break;
- }
- if (mr->item.type == type_none) {
- printf("unknown point: 0x%x 0x%x\n", mr->pnt->info, mr->pnt->subtype);
- dump_point(mr->pnt);
- printf("label: %s\n", get_label_offset(mr, triple_u(&mr->pnt->lbl_offset) & 0x3fffff));
- mr->item.type=type_town_label;
- }
- return &mr->item;
- }
- if (debug)
- printf("out of data for type\n");
- if (rgn_next_type(mr)) {
- if (debug)
- printf("out of data for region\n");
- if (sub_next(mr, subdiv_next)) {
- if (debug)
- printf("out of data for subdivision\n");
- return NULL;
- }
- }
- }
-}
-
-static struct item *
-map_rect_get_item_byid_garmin_img(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- fseek(mr->f, id_lo, SEEK_SET);
- get_line(mr);
- mr->item.id_hi=id_hi;
- return map_rect_get_item_garmin_img(mr);
-}
-
-static struct map_methods map_methods_garmin_img = {
- projection_garmin,
- "iso8859-1",
- map_destroy_garmin_img,
- map_charset_garmin_img,
- map_projection_garmin_img,
- map_rect_new_garmin_img,
- map_rect_destroy_garmin_img,
- map_rect_get_item_garmin_img,
- map_rect_get_item_byid_garmin_img,
-};
-
-static struct map_priv *
-map_new_garmin_img(struct map_methods *meth, struct attr **attrs)
-{
- struct map_priv *m;
- struct attr *data=attr_search(attrs, NULL, attr_data);
- if (! data)
- return NULL;
-
- *meth=map_methods_garmin_img;
- m=g_new(struct map_priv, 1);
- m->id=++map_id;
- m->filename=g_strdup(data->u.str);
- return m;
-}
-
-void
-plugin_init(void)
-{
- plugin_register_category_map("garmin_img", map_new_garmin_img);
-}
-
diff --git a/navit/map/mg/CMakeLists.txt b/navit/map/mg/CMakeLists.txt
deleted file mode 100644
index 5a2dd387c..000000000
--- a/navit/map/mg/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(map_mg map.c block.c town.c tree.c poly.c street.c)
diff --git a/navit/map/mg/block.c b/navit/map/mg/block.c
deleted file mode 100644
index b2bb64ac0..000000000
--- a/navit/map/mg/block.c
+++ /dev/null
@@ -1,298 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <string.h>
-#include "debug.h"
-#include "mg.h"
-
-
-int block_lin_count,block_idx_count,block_active_count,block_mem,block_active_mem;
-
-struct block_index_item {
- /*unsigned int blocknum;
- unsigned int blocks;*/
- unsigned char p[8];
-};
-static inline unsigned int block_index_item_get_blocknum(struct block_index_item * blk) { unsigned char *p = blk->p; return get_u32(&p); }
-static inline unsigned int block_index_item_get_blocks(struct block_index_item * blk) { unsigned char *p = blk->p+4; return get_u32(&p); }
-
-struct block_index {
-/* unsigned int blocks;
- unsigned int size;
- unsigned int next;
- struct block_index_item list[0];*/
- unsigned char p[12];
-};
-static inline unsigned int block_index_get_blocks(struct block_index * blk) { unsigned char *p = blk->p; return get_u32(&p); }
-static inline unsigned int block_index_get_size(struct block_index * blk) { unsigned char *p = blk->p+4; return get_u32(&p); }
-static inline unsigned int block_index_get_next(struct block_index * blk) { unsigned char *p = blk->p+8; return get_u32(&p); }
-static inline struct block_index_item * block_index_get_list(struct block_index * blk) { return (struct block_index_item *)(blk->p+12); }
-
-static struct block *
-block_get(unsigned char **p)
-{
- struct block *ret=(struct block *)(*p);
- *p += sizeof(*ret);
- return ret;
-}
-
-
-static struct block *
-block_get_byid(struct file *file, int id, unsigned char **p_ret)
-{
- struct block_index *blk_idx;
- int blk_num,max;
-
-
- blk_idx=(struct block_index *)(file->begin+0x1000);
- max=(block_index_get_size(blk_idx)-sizeof(struct block_index))/sizeof(struct block_index_item);
- block_mem+=24;
- while (id >= max) {
- blk_idx=(struct block_index *)(file->begin+block_index_get_next(blk_idx)*512);
- id-=max;
- }
- blk_num=block_index_item_get_blocknum(&block_index_get_list(blk_idx)[id]);
-
- *p_ret=file->begin+blk_num*512;
- return block_get(p_ret);
-}
-
-int
-block_get_byindex(struct file *file, int idx, struct block_priv *blk)
-{
- dbg(lvl_debug,"idx=%d\n", idx);
- blk->b=block_get_byid(file, idx, &blk->p);
- blk->block_start=(unsigned char *)(blk->b);
- blk->p_start=blk->p;
- blk->end=blk->block_start+block_get_size(blk->b);
-
- return 1;
-}
-
-static void
-block_setup_tags(struct map_rect_priv *mr)
-{
- int len;
- unsigned char *p,*t;
- char *str;
-
- mr->b.binarytree=0;
-
- p=mr->file->begin+0x0c;
- while (*p) {
- str=get_string(&p);
- len=get_u32_unal(&p);
- t=p;
- /* printf("String '%s' len %d\n", str, len); */
- if (! strcmp(str,"FirstBatBlock")) {
- /* printf("%ld\n", get_u32_unal(&t)); */
- } else if (! strcmp(str,"MaxBlockSize")) {
- /* printf("%ld\n", get_u32_unal(&t)); */
- } else if (! strcmp(str,"FREE_BLOCK_LIST")) {
- /* printf("%ld\n", get_u32_unal(&t)); */
- } else if (! strcmp(str,"TotalRect")) {
- mr->b.b_rect.lu.x=get_u32_unal(&t);
- mr->b.b_rect.lu.y=get_u32_unal(&t);
- mr->b.b_rect.rl.x=get_u32_unal(&t);
- mr->b.b_rect.rl.y=get_u32_unal(&t);
- /* printf("0x%x,0x%x-0x%x,0x%x\n", mr->b.b_rect.lu.x, mr->b.b_rect.lu.y, mr->b.b_rect.rl.x, mr->b.b_rect.rl.y); */
- } else if (! strcmp(str,"Version")) {
- /* printf("0x%lx\n", get_u32_unal(&t)); */
- } else if (! strcmp(str,"Categories")) {
- /* printf("0x%x\n", get_u16(&t)); */
- } else if (! strcmp(str,"binaryTree")) {
- mr->b.binarytree=get_u32_unal(&t);
- /* printf("%d\n", mr->b.binarytree); */
- } else if (! strcmp(str,"CategorySets")) {
- /* printf("0x%x\n", get_u16(&t)); */
- } else if (! strcmp(str,"Kommentar")) {
- /* printf("%s\n", get_string(&t)); */
- }
- p+=len;
- }
-}
-
-#if 0
-static void
-block_rect_print(struct coord_rect *r)
-{
- printf ("0x%x,0x%x-0x%x,0x%x (0x%x,0x%x)", r->lu.x, r->lu.y, r->rl.x, r->rl.y, r->lu.x/2+r->rl.x/2,r->lu.y/2+r->rl.y/2);
-}
-#endif
-
-static void
-block_rect_same(struct coord_rect *r1, struct coord_rect *r2)
-{
- dbg_assert(r1->lu.x==r2->lu.x);
- dbg_assert(r1->lu.y==r2->lu.y);
- dbg_assert(r1->rl.x==r2->rl.x);
- dbg_assert(r1->rl.y==r2->rl.y);
-}
-
-int
-block_init(struct map_rect_priv *mr)
-{
- mr->b.block_num=-1;
- mr->b.bt.b=NULL;
- mr->b.bt.next=0;
- block_setup_tags(mr);
- if (mr->b.binarytree) {
- mr->b.bt.next=mr->b.binarytree;
- mr->b.bt.p=NULL;
- mr->b.bt.block_count=0;
- }
- if (mr->cur_sel && !coord_rect_overlap(&mr->cur_sel->u.c_rect, &mr->b.b_rect))
- return 0;
- return block_next(mr);
-}
-
-
-int
-block_next_lin(struct map_rect_priv *mr)
-{
- struct coord_rect r;
- for (;;) {
- block_lin_count++;
- block_mem+=sizeof(struct block *);
- mr->b.block_num++;
- if (! mr->b.block_num)
- mr->b.p=mr->file->begin+0x2000;
- else
- mr->b.p=mr->b.block_start+block_get_blocks(mr->b.b)*512;
- if (mr->b.p >= mr->file->end) {
- dbg(lvl_debug,"end of blocks %p vs %p\n", mr->b.p, mr->file->end);
- return 0;
- }
- mr->b.block_start=mr->b.p;
- mr->b.b=block_get(&mr->b.p);
- mr->b.p_start=mr->b.p;
- mr->b.end=mr->b.block_start+block_get_size(mr->b.b);
- if (block_get_count(mr->b.b) == -1) {
- dbg(lvl_warning,"empty blocks\n");
- return 0;
- }
- block_get_r(mr->b.b, &r);
- if (!mr->cur_sel || coord_rect_overlap(&mr->cur_sel->u.c_rect, &r)) {
- block_active_count++;
- block_active_mem+=block_get_blocks(mr->b.b)*512-sizeof(struct block *);
- dbg(lvl_debug,"block ok\n");
- return 1;
- }
- dbg(lvl_info,"block not in cur_sel\n");
- }
-}
-
-int
-block_next(struct map_rect_priv *mr)
-{
- int blk_num,coord,r_h,r_w;
- struct block_bt_priv *bt=&mr->b.bt;
- struct coord_rect r;
-
- if (!mr->b.binarytree || ! mr->cur_sel)
- return block_next_lin(mr);
- for (;;) {
- if (! bt->p) {
- dbg(lvl_debug,"block 0x%x\n", bt->next);
- if (bt->next == -1)
- return 0;
- bt->b=block_get_byid(mr->file, bt->next, &bt->p);
- bt->end=(unsigned char *)mr->b.bt.b+block_get_size(mr->b.bt.b);
- bt->next=block_get_next(bt->b);
- bt->order=0;
- dbg(lvl_debug,"size 0x%x next 0x%x\n", block_get_size(bt->b), block_get_next(bt->b));
- if (! mr->b.bt.block_count) {
-#if 0
- if (debug) {
- printf("idx rect ");
- block_rect_print(&mr->b.bt.b->r);
- }
-#endif
- block_get_r(bt->b, &bt->r);
- bt->r_curr=bt->r;
- coord=get_u32(&mr->b.bt.p);
- } else {
- bt->p=(unsigned char *)bt->b+0xc;
- }
- bt->block_count++;
- }
- while (mr->b.bt.p < mr->b.bt.end) {
- block_idx_count++;
- blk_num=get_u32(&mr->b.bt.p);
- coord=get_u32(&mr->b.bt.p);
- block_mem+=8;
- dbg(lvl_debug,"%p vs %p coord 0x%x ", mr->b.bt.end, mr->b.bt.p, coord);
- dbg(lvl_debug,"block 0x%x", blk_num);
-
- r_w=bt->r_curr.rl.x-bt->r_curr.lu.x;
- r_h=bt->r_curr.lu.y-bt->r_curr.rl.y;
-#if 0
- if (debug) {
- printf(" rect1 ");
- block_rect_print(&bt->r_curr);
- printf(" %dx%d", r_w, r_h);
- }
-#endif
- mr->b.b=NULL;
- if (blk_num != -1) {
- block_mem+=8;
- if (coord_rect_overlap(&mr->cur_sel->u.c_rect, &bt->r_curr)) {
- mr->b.b=block_get_byid(mr->file, blk_num, &mr->b.p);
- mr->b.block_num=blk_num;
- dbg_assert(mr->b.b != NULL);
- mr->b.block_start=(unsigned char *)(mr->b.b);
- mr->b.p_start=mr->b.p;
- mr->b.end=mr->b.block_start+block_get_size(mr->b.b);
- block_get_r(mr->b.b, &r);
- block_rect_same(&r, &bt->r_curr);
- }
- }
- if (coord != -1) {
- bt->stack[bt->stackp]=bt->r_curr;
- if (r_w > r_h) {
- bt->r_curr.rl.x=coord;
- bt->stack[bt->stackp].lu.x=coord+1;
- } else {
- bt->r_curr.lu.y=coord;
- bt->stack[bt->stackp].rl.y=coord+1;
- }
- bt->stackp++;
- dbg_assert(bt->stackp < BT_STACK_SIZE);
- } else {
- if (bt->stackp) {
- bt->stackp--;
- bt->r_curr=bt->stack[bt->stackp];
- } else {
- bt->r_curr=bt->r;
- bt->order++;
- if (bt->order > 100)
- return 0;
- }
- }
- if (mr->b.b) {
- block_active_count++;
- block_active_mem+=block_get_blocks(mr->b.b)*512;
- return 1;
- }
- }
- bt->p=NULL;
- }
- return 0;
-}
diff --git a/navit/map/mg/map.c b/navit/map/mg/map.c
deleted file mode 100644
index 13561e154..000000000
--- a/navit/map/mg/map.c
+++ /dev/null
@@ -1,613 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <string.h>
-#include "config.h"
-#include "debug.h"
-#include "plugin.h"
-#include "maptype.h"
-#include "mg.h"
-
-
-GList *maps;
-
-static struct country_isonum {
- int country;
- int isonum;
- int postal_len;
- char *postal_prefix;
-} country_isonums[]={
- { 1,203},
- { 2,703},
- { 7,674},
- { 11,233},
- { 12,268},
- { 13,428},
- { 14,440},
- { 15,498},
- { 16,643},
- { 17,804},
- { 18,112},
- { 20,818},
- { 30,300},
- { 31,528},
- { 32, 56},
- { 33,250},
- { 34,724},
- { 36,348},
- { 39,380},
- { 40,642},
- { 41,756},
- { 43, 40},
- { 44,826},
- { 45,208},
- { 46,752},
- { 47,578},
- { 48,616},
- { 49,276,5,"D@@"},
- { 50,292},
- { 51,620},
- { 52,442},
- { 53,372},
- { 54,352},
- { 55, 8},
- { 56,470},
- { 57,196},
- { 58,246},
- { 59,100},
- { 61,422},
- { 62, 20},
- { 63,760},
- { 66,682},
- { 71,434},
- { 72,376},
- { 73,275},
- { 75,438},
- { 76,504},
- { 77, 12},
- { 78,788},
- { 81,688},
- { 83,400},
- { 85,191},
- { 86,705},
- { 87, 70},
- { 89,807},
- { 90,792},
- { 93,492},
- { 94, 31},
- { 95, 51},
- { 98,234},
- { 99,732},
- {336,774},
-};
-
-struct map_priv * map_new_mg(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl);
-
-static int map_id;
-
-static char *file[]={
- [file_border_ply]="border.ply",
- [file_bridge_ply]="bridge.ply",
- [file_build_ply]="build.ply",
- [file_golf_ply]="golf.ply",
- [file_height_ply]="height.ply",
- [file_natpark_ply]="natpark.ply",
- [file_nature_ply]="nature.ply",
- [file_other_ply]="other.ply",
- [file_rail_ply]="rail.ply",
- [file_sea_ply]="sea.ply",
- [file_street_bti]="street.bti",
- [file_street_str]="street.str",
- [file_strname_stn]="strname.stn",
- [file_town_twn]="town.twn",
- [file_tunnel_ply]="tunnel.ply",
- [file_water_ply]="water.ply",
- [file_woodland_ply]="woodland.ply",
-};
-
-int mg_country_from_isonum(int isonum)
-{
- int i;
- for (i = 0 ; i < sizeof(country_isonums)/sizeof(struct country_isonum) ; i++)
- if (country_isonums[i].isonum == isonum)
- return country_isonums[i].country;
- return 0;
-}
-
-int mg_country_to_isonum(int country)
-{
- int i;
- for (i = 0 ; i < sizeof(country_isonums)/sizeof(struct country_isonum) ; i++)
- if (country_isonums[i].country == country)
- return country_isonums[i].isonum;
- return 0;
-}
-
-int mg_country_postal_len(int country)
-{
- int i;
- for (i = 0 ; i < sizeof(country_isonums)/sizeof(struct country_isonum) ; i++)
- if (country_isonums[i].country == country)
- return country_isonums[i].postal_len;
- return 0;
-}
-
-static char *mg_country_postal_prefix(int isonum)
-{
- int i;
- for (i = 0 ; i < sizeof(country_isonums)/sizeof(struct country_isonum) ; i++)
- if (country_isonums[i].isonum == isonum)
- return country_isonums[i].postal_prefix;
- return NULL;
-}
-
-struct item_range town_ranges[]={
- {type_town_label,type_port_label},
-};
-
-struct item_range street_ranges[]={
- {type_street_nopass,type_street_unkn},
-};
-
-struct item_range poly_ranges[]={
- {type_border_country,type_water_line},
- {type_street_unkn,type_street_unkn},
- {type_area,type_last},
-};
-
-
-static int
-file_next(struct map_rect_priv *mr)
-{
- int debug=0;
-
- for (;;) {
- mr->current_file++;
- if (mr->current_file >= file_end)
- return 0;
- mr->file=mr->m->file[mr->current_file];
- if (! mr->file)
- continue;
- switch (mr->current_file) {
- case file_strname_stn:
- continue;
- case file_town_twn:
- if (mr->cur_sel && !map_selection_contains_item_range(mr->cur_sel, 0, town_ranges, sizeof(town_ranges)/sizeof(struct item_range)))
- continue;
- break;
- case file_street_str:
- if (mr->cur_sel && !map_selection_contains_item_range(mr->cur_sel, 0, street_ranges, sizeof(street_ranges)/sizeof(struct item_range)))
- continue;
- break;
- default:
- if (mr->cur_sel && !map_selection_contains_item_range(mr->cur_sel, 0, poly_ranges, sizeof(poly_ranges)/sizeof(struct item_range)))
- continue;
- break;
- }
- if (debug)
- printf("current file: '%s'\n", file[mr->current_file]);
- mr->cur_sel=mr->xsel;
- if (block_init(mr))
- return 1;
- }
-}
-
-static void
-map_destroy_mg(struct map_priv *m)
-{
- int i;
-
- printf("mg_map_destroy\n");
- for (i = 0 ; i < file_end ; i++) {
- if (m->file[i])
- file_destroy(m->file[i]);
- }
-}
-
-extern int block_lin_count,block_idx_count,block_active_count,block_mem,block_active_mem;
-
-struct map_rect_priv *
-map_rect_new_mg(struct map_priv *map, struct map_selection *sel)
-{
- struct map_rect_priv *mr;
- int i;
-
- block_lin_count=0;
- block_idx_count=0;
- block_active_count=0;
- block_mem=0;
- block_active_mem=0;
- mr=g_new0(struct map_rect_priv, 1);
- mr->m=map;
- mr->xsel=sel;
- mr->current_file=-1;
- if (sel && sel->next)
- for (i=0 ; i < file_end ; i++)
- mr->block_hash[i]=g_hash_table_new(g_int_hash,g_int_equal);
- file_next(mr);
- return mr;
-}
-
-
-static struct item *
-map_rect_get_item_mg(struct map_rect_priv *mr)
-{
- for (;;) {
- switch (mr->current_file) {
- case file_town_twn:
- if (town_get(mr, &mr->town, &mr->item))
- return &mr->item;
- break;
- case file_border_ply:
- case file_bridge_ply:
- case file_build_ply:
- case file_golf_ply:
- /* case file_height_ply: */
- case file_natpark_ply:
- case file_nature_ply:
- case file_other_ply:
- case file_rail_ply:
- case file_sea_ply:
- /* case file_tunnel_ply: */
- case file_water_ply:
- case file_woodland_ply:
- if (poly_get(mr, &mr->poly, &mr->item))
- return &mr->item;
- break;
- case file_street_str:
- if (street_get(mr, &mr->street, &mr->item))
- return &mr->item;
- break;
- case file_end:
- return NULL;
- default:
- break;
- }
- if (block_next(mr))
- continue;
- if (mr->cur_sel->next) {
- mr->cur_sel=mr->cur_sel->next;
- if (block_init(mr))
- continue;
- }
- if (file_next(mr))
- continue;
- dbg(lvl_debug,"lin_count %d idx_count %d active_count %d %d kB (%d kB)\n", block_lin_count, block_idx_count, block_active_count, (block_mem+block_active_mem)/1024, block_active_mem/1024);
- return NULL;
- }
-}
-
-struct item *
-map_rect_get_item_byid_mg(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- mr->current_file = (id_hi >> 16) & 0xff;
- switch (mr->current_file) {
- case file_town_twn:
- if (town_get_byid(mr, &mr->town, id_hi, id_lo, &mr->item))
- return &mr->item;
- break;
- case file_street_str:
- if (street_get_byid(mr, &mr->street, id_hi, id_lo, &mr->item))
- return &mr->item;
- break;
- case file_strname_stn:
- if (street_name_get_byid(mr, &mr->street, id_hi, id_lo, &mr->item))
- return &mr->item;
- break;
- default:
- if (poly_get_byid(mr, &mr->poly, id_hi, id_lo, &mr->item))
- return &mr->item;
- break;
- }
- return NULL;
-}
-
-
-void
-map_rect_destroy_mg(struct map_rect_priv *mr)
-{
- int i;
- for (i=0 ; i < file_end ; i++)
- if (mr->block_hash[i])
- g_hash_table_destroy(mr->block_hash[i]);
- g_free(mr);
-}
-
-static char *
-map_search_mg_convert_special(char *str)
-{
- char *ret,*c=g_malloc(strlen(str)*2+1);
-
- ret=c;
- for (;;) {
- switch ((unsigned char)(*str)) {
- case 0xc4:
- *c++='A';
- break;
- case 0xd6:
- *c++='O';
- break;
- case 0xdc:
- *c++='U';
- break;
- case 0xdf:
- *c++='s';
- *c++='s';
- break;
- case 0xe4:
- *c++='a';
- break;
- case 0xf6:
- *c++='o';
- break;
- case 0xfc:
- *c++='u';
- break;
- default:
- dbg(lvl_debug,"0x%x\n", *str);
- *c++=*str;
- break;
- }
- if (! *str)
- return ret;
- str++;
- }
-}
-
-static int
-map_search_setup(struct map_rect_priv *mr)
-{
- char *prefix;
- dbg(lvl_debug,"%s\n", attr_to_name(mr->search_type));
- switch (mr->search_type) {
- case attr_town_postal:
- if (mr->search_item.type != type_country_label) {
- dbg(lvl_error,"wrong parent type %s\n", item_to_name(mr->search_item.type));
- return 0;
- }
- prefix=mg_country_postal_prefix(mr->search_item.id_lo);
- if (! prefix)
- return 0;
- tree_search_init(mr->m->dirname, "town.b1", &mr->ts, 0);
- mr->current_file=file_town_twn;
- mr->search_str=g_strdup_printf("%s%s",prefix,mr->search_attr->u.str);
- dbg(lvl_debug,"search_str='%s'\n",mr->search_str);
- mr->search_country=mg_country_from_isonum(mr->search_item.id_lo);
- break;
- case attr_town_name:
- if (mr->search_item.type != type_country_label) {
- dbg(lvl_error,"wrong parent type %s\n", item_to_name(mr->search_item.type));
- return 0;
- }
- tree_search_init(mr->m->dirname, "town.b2", &mr->ts, 0x1000);
- mr->current_file=file_town_twn;
- mr->search_str=map_search_mg_convert_special(mr->search_attr->u.str);
- mr->search_country=mg_country_from_isonum(mr->search_item.id_lo);
- break;
- case attr_district_name:
- if (mr->search_item.type != type_country_label) {
- dbg(lvl_error,"wrong parent type %s\n", item_to_name(mr->search_item.type));
- return 0;
- }
- tree_search_init(mr->m->dirname, "town.b3", &mr->ts, 0x1000);
- mr->current_file=file_town_twn;
- mr->search_str=map_search_mg_convert_special(mr->search_attr->u.str);
- mr->search_country=mg_country_from_isonum(mr->search_item.id_lo);
- break;
- case attr_street_name:
- if (mr->search_item.type != type_town_streets) {
- GList *tmp=maps;
- struct item *item=NULL;
- struct attr attr;
- struct map_rect_priv *mr2;
- while (tmp) {
- mr2=map_rect_new_mg(tmp->data, NULL);
- item=map_rect_get_item_byid_mg(mr2, mr->search_item.id_hi, mr->search_item.id_lo);
- if (item)
- break;
- map_rect_destroy_mg(mr2);
- tmp=g_list_next(tmp);
- }
- if (item) {
- if (item_attr_get(item, attr_town_streets_item, &attr)) {
- mr->search_item=*attr.u.item;
- map_rect_destroy_mg(mr2);
- } else {
- map_rect_destroy_mg(mr2);
- return 0;
- }
- } else {
- dbg(lvl_error,"wrong parent type %s %p 0x%x 0x%x\n", item_to_name(mr->search_item.type), item, mr->search_item.id_hi, mr->search_item.id_lo);
- return 0;
- }
- }
- dbg(lvl_debug,"street_assoc=0x%x\n", mr->search_item.id_lo);
- tree_search_init(mr->m->dirname, "strname.b1", &mr->ts, 0);
- mr->current_file=file_strname_stn;
- mr->search_str=g_strdup(mr->search_attr->u.str);
- break;
- case attr_house_number:
- if (!map_priv_is(mr->search_item.map, mr->m))
- return 0;
- if (!housenumber_search_setup(mr)) {
- dbg(lvl_error,"failed to search for attr_house_number\n");
- return 0;
- }
- break;
- default:
- dbg(lvl_error,"unknown search %s\n",attr_to_name(mr->search_type));
- return 0;
- }
- mr->file=mr->m->file[mr->current_file];
- block_init(mr);
- return 1;
-}
-static void map_search_cleanup(struct map_rect_priv *mr);
-
-static struct item * map_search_get_item_mg(struct map_search_priv *ms);
-
-static struct map_search_priv *
-map_search_new_mg(struct map_priv *map, struct item *item, struct attr *search, int partial)
-{
- struct map_rect_priv *mr=g_new0(struct map_rect_priv, 1);
- dbg(lvl_debug,"searching for %s '%s'\n", attr_to_name(search->type), search->u.str);
- dbg(lvl_debug,"id_lo=0x%x\n", item->id_lo);
- dbg(lvl_debug,"search=%s\n", search->u.str);
- mr->m=map;
- mr->search_attr=attr_dup(search);
- mr->search_type=search->type;
- mr->search_item=*item;
- mr->search_partial=partial;
- if (search->type == attr_town_or_district_name) {
- mr->search_type=attr_town_name;
- mr->search_type_next=attr_district_name;
- }
- if (!map_search_setup(mr)) {
- dbg(lvl_warning,"map_search_new_mg failed\n");
- g_free(mr);
- return NULL;
- }
- mr->search_mr_tmp=map_rect_new_mg(map, NULL);
-
- return (struct map_search_priv *)mr;
-}
-
-static void
-map_search_cleanup(struct map_rect_priv *mr)
-{
- g_free(mr->search_str);
- mr->search_str=NULL;
- tree_search_free(&mr->ts);
- mr->search_linear=0;
- mr->search_p=NULL;
- mr->search_blk_count=0;
- mr->search_blk_off=NULL;
- mr->search_block=0;
-}
-
-static void
-map_search_destroy_mg(struct map_search_priv *ms)
-{
- struct map_rect_priv *mr=(struct map_rect_priv *)ms;
-
- dbg(lvl_debug,"mr=%p\n", mr);
- if (! mr)
- return;
- map_search_cleanup(mr);
- if (mr->search_mr_tmp)
- map_rect_destroy_mg(mr->search_mr_tmp);
- attr_free(mr->search_attr);
- g_free(mr);
-}
-
-static struct item *
-map_search_get_item_mg(struct map_search_priv *ms)
-{
- struct map_rect_priv *mr=(struct map_rect_priv *)ms;
- struct item *ret=NULL;
-
- if (! mr)
- return NULL;
- switch (mr->search_type) {
- case attr_town_postal:
- case attr_town_name:
- case attr_district_name:
- ret=town_search_get_item(mr);
- break;
- case attr_street_name:
- ret=street_search_get_item(mr);
- break;
- case attr_house_number:
- ret=housenumber_search_get_item(mr);
- break;
- default:
- dbg(lvl_error,"unknown search %s\n",attr_to_name(mr->search_type));
- break;
- }
- if (!ret && mr->search_type_next != attr_none) {
- mr->search_type=mr->search_type_next;
- mr->search_type_next=attr_none;
- map_search_cleanup(mr);
- map_search_setup(mr);
- return map_search_get_item_mg(ms);
- }
- return ret;
-}
-
-static struct map_methods map_methods_mg = {
- projection_mg,
- "iso8859-1",
- map_destroy_mg,
- map_rect_new_mg,
- map_rect_destroy_mg,
- map_rect_get_item_mg,
- map_rect_get_item_byid_mg,
- map_search_new_mg,
- map_search_destroy_mg,
- map_search_get_item_mg,
-};
-
-
-struct map_priv *
-map_new_mg(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct map_priv *m;
- int i,maybe_missing;
- struct attr *data=attr_search(attrs, NULL, attr_data);
- char *filename;
- struct file_wordexp *wexp;
- char **wexp_data;
-
- if (! data)
- return NULL;
-
- wexp=file_wordexp_new(data->u.str);
- wexp_data=file_wordexp_get_array(wexp);
-
- *meth=map_methods_mg;
- data=attr_search(attrs, NULL, attr_data);
-
- m=g_new(struct map_priv, 1);
- m->id=++map_id;
- m->dirname=g_strdup(wexp_data[0]);
- file_wordexp_destroy(wexp);
- for (i = 0 ; i < file_end ; i++) {
- if (file[i]) {
- filename=g_strdup_printf("%s/%s", m->dirname, file[i]);
- m->file[i]=file_create_caseinsensitive(filename, 0);
- if (! m->file[i]) {
- maybe_missing=(i == file_border_ply || i == file_height_ply || i == file_sea_ply);
- if (! maybe_missing)
- dbg(lvl_error,"Failed to load %s\n", filename);
- } else
- file_mmap(m->file[i]);
- g_free(filename);
- }
- }
- maps=g_list_append(maps, m);
-
- return m;
-}
-
-void
-plugin_init(void)
-{
- plugin_register_category_map("mg", map_new_mg);
-}
diff --git a/navit/map/mg/mg.h b/navit/map/mg/mg.h
deleted file mode 100644
index e6febc212..000000000
--- a/navit/map/mg/mg.h
+++ /dev/null
@@ -1,372 +0,0 @@
-/**
- * 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 "item.h"
-#include "attr.h"
-#include "coord.h"
-#include "data.h"
-#include "projection.h"
-#include "map.h"
-#include "file.h"
-
-struct block_data {
- struct file *file;
-};
-
-struct block {
-/* int blocks;
- int size;
- int next;
- struct coord_rect r;
- int count;*/
- unsigned char p[32];
-};
-static inline int block_get_blocks(struct block * blk) { unsigned char *p = blk->p; return get_u32(&p); }
-static inline int block_get_size(struct block * blk) { unsigned char *p = blk->p+4; return get_u32(&p); }
-static inline int block_get_next(struct block * blk) { unsigned char *p = blk->p+8; return get_u32(&p); }
-static inline int block_get_count(struct block * blk) { unsigned char *p = blk->p+28; return get_u32(&p); }
-static inline void block_get_r(struct block * blk, struct coord_rect * r) { unsigned char *p = blk->p+12; r ->lu.x = get_u32(&p); r ->lu.y = get_u32(&p); r ->rl.x = get_u32(&p); r ->rl.y = get_u32(&p); }
-
-struct item_priv {
- int cidx;
- int aidx;
- unsigned char *cstart,*cp,*cend;
- unsigned char *astart,*ap,*aend;
- enum attr_type attr_last;
- enum attr_type attr_next;
- struct item item;
-};
-
-struct town_priv {
- unsigned int id; /*!< Identifier */
- struct coord c; /*!< Coordinates */
- char *name; /*!< Name */
- char *district; /*!< District */
- char *postal_code1; /*!< Postal code */
- unsigned char order; /*!< Order (Importance) */
- unsigned char type; /*!< Type */
- unsigned short country; /*!< Country */
- unsigned int unknown2; /*!< Unknown */
- unsigned char size; /*!< Size of town */
- unsigned int street_assoc; /*!< Association to streets */
- unsigned char unknown3; /*!< Unknown */
- char *postal_code2; /*!< 2nd postal code */
- unsigned int unknown4; /*!< Unknown */
-
- int cidx;
- int aidx;
- enum attr_type attr_next;
- char debug[256];
- char postal[32];
- struct item town_attr_item;
-};
-
-struct poly_priv {
- int poly_num;
- unsigned char *poly_next;
- int subpoly_num;
- int subpoly_num_all;
- unsigned char *subpoly_next;
- unsigned char *subpoly_start;
- unsigned char *p;
- struct coord c[2];
- char *name;
- unsigned char order;
- unsigned char type;
- unsigned int polys;
- unsigned int *count;
- unsigned int count_sum;
-
- int aidx;
- enum attr_type attr_next;
-};
-
-struct street_header {
- /*unsigned char order;
- int count;*/
- unsigned char p[5];
-} __attribute__((packed));
-static inline unsigned char street_header_get_order(struct street_header * str) { return *str->p; }
-static inline int street_header_get_count(struct street_header * str) { unsigned char *p = str->p+1; return get_u32_unal(&p); }
-
-struct street_type {
- /*unsigned char order;
- unsigned short country;*/
- unsigned char p[3];
-} __attribute__((packed));
-static inline unsigned char street_type_get_order(struct street_type * str) { return *str->p; }
-static inline unsigned short street_type_get_country(struct street_type * str) { unsigned char *p = str->p+1; return get_u16_unal(&p); }
-
-struct street_header_type {
- struct street_header *header;
- int type_count;
- struct street_type *type;
-};
-
-struct street_str {
- /*int segid;
- unsigned char limit;*/ /* 0x03,0x30=One Way,0x33=No Passing */
- /*unsigned char unknown2;
- unsigned char unknown3;
- unsigned char type;
- unsigned int nameid;*/
- unsigned char p[12];
-};
-static inline int street_str_get_segid(struct street_str * str) { unsigned char *p = str->p; return get_u32_unal(&p); }
-static inline unsigned char street_str_get_limit(struct street_str * str) { return str->p[4]; }
-static inline unsigned char street_str_get_unknown2(struct street_str * str) { return str->p[5]; }
-static inline unsigned char street_str_get_unknown3(struct street_str * str) { return str->p[6]; }
-static inline unsigned char street_str_get_type(struct street_str * str) { return str->p[7]; }
-static inline unsigned int street_str_get_nameid(struct street_str * str) { unsigned char *p = str->p+8; return get_u32_unal(&p); }
-
-struct street_name_segment {
- int segid;
- int country;
-};
-
-struct street_name {
- int len;
- int country;
- int townassoc;
- char *name1;
- char *name2;
- int segment_count;
- struct street_name_segment *segments;
- int aux_len;
- unsigned char *aux_data;
- int tmp_len;
- unsigned char *tmp_data;
-};
-
-struct housenumber {
- int number;
- char *suffix;
-};
-
-struct street_name_numbers {
- int len;
- int tag;
- int dist;
- int country;
- struct coord *c;
- struct housenumber first;
- struct housenumber last;
- int segment_count;
- struct street_name_segment *segments;
- int aux_len;
- unsigned char *aux_data;
- int tmp_len;
- unsigned char *tmp_data;
-};
-static inline void street_name_numbers_get_coord(struct street_name_numbers * str, struct coord * c) {
- unsigned char *p=(unsigned char *)str->c;
- c->x=get_u32_unal(&p);
- c->y=get_u32_unal(&p);
-}
-
-struct street_name_number {
- int len;
- int tag;
- struct coord *c;
- struct housenumber first;
- struct housenumber last;
- struct street_name_segment *segment;
-};
-
-
-
-struct street_priv {
- struct file *name_file;
- struct street_header *header;
- int type_count;
- struct street_type *type;
- struct street_str *str;
- struct street_str *str_start;
- unsigned char *coord_begin;
- unsigned char *p;
- unsigned char *p_rewind;
- unsigned char *end;
- unsigned char *next;
- int status;
- int status_rewind;
- struct coord_rect ref;
- int bytes;
- int more;
- int flags;
- int housenumber;
- int cidx;
- struct coord hnc[100];
- struct housenumber hn[100];
- int hn_count;
- struct street_name name;
- struct street_name_numbers name_numbers;
- struct street_name_number name_number;
- enum attr_type attr_next;
- char debug[256];
- char first_number[32];
- char last_number[32];
- char current_number[32];
- GHashTable *streetname_hash;
-};
-
-enum file_index {
- file_border_ply=0,
- file_bridge_ply,
- file_build_ply,
- file_golf_ply,
- file_height_ply,
- file_natpark_ply,
- file_nature_ply,
- file_other_ply,
- file_rail_ply,
- file_sea_ply,
- file_street_bti,
- file_street_str,
- file_strname_stn,
- file_town_twn,
- file_tunnel_ply,
- file_water_ply,
- file_woodland_ply,
- file_end,
- file_town_twn_alt1,
- file_town_twn_alt2,
- file_street_str_alt1,
- file_street_str_alt2,
- file_street_str_alt3,
- file_street_str_alt4,
-};
-
-struct map_priv {
- int id;
- struct file *file[file_end];
- char *dirname;
-};
-
-#define BT_STACK_SIZE 32
-
-struct block_bt_priv {
- struct block *b;
- struct coord_rect r, r_curr;
- int next;
- int block_count;
- struct coord_rect stack[BT_STACK_SIZE];
- int stackp;
- int order;
- unsigned char *p;
- unsigned char *end;
-};
-
-struct block_priv {
- int block_num;
- struct coord_rect b_rect;
- unsigned char *block_start;
- struct block *b;
- unsigned char *p;
- unsigned char *end;
- unsigned char *p_start;
- int binarytree;
- struct block_bt_priv bt;
-};
-
-struct block_offset {
-/* unsigned short offset;
- unsigned short block;*/
- unsigned char p[4];
-};
-static inline unsigned short block_offset_get_offset(struct block_offset * blk) { unsigned char *p = blk->p; return get_u16_unal(&p); }
-static inline unsigned short block_offset_get_block(struct block_offset * blk) { unsigned char *p = blk->p+2; return get_u16_unal(&p); }
-
-struct tree_search_node {
- struct tree_hdr *hdr;
- unsigned char *p;
- unsigned char *last;
- unsigned char *end;
- int low;
- int high;
- int last_low;
- int last_high;
- };
-
-struct tree_search {
- struct file *f;
- int last_node;
- int curr_node;
- struct tree_search_node nodes[5];
-};
-
-
-struct map_rect_priv {
- struct map_selection *xsel;
- struct map_selection *cur_sel;
-
- struct map_priv *m;
- enum file_index current_file;
- struct file *file;
- struct block_priv b;
- struct item item;
- struct town_priv town;
- struct poly_priv poly;
- struct street_priv street;
- struct tree_search ts;
- int search_country;
- struct item search_item;
- struct attr *search_attr;
- char *search_str;
- int search_partial;
- int search_linear;
- unsigned char *search_p;
- int search_blk_count;
- enum attr_type search_type,search_type_next;
- struct map_rect_priv *search_mr_tmp;
- struct item *search_item_tmp;
- struct block_offset *search_blk_off;
- int search_block;
- GHashTable *block_hash[file_end];
- struct item_priv item3;
-};
-
-int mg_country_from_isonum(int isonum);
-int mg_country_to_isonum(int country);
-int mg_country_postal_len(int country);
-
-int block_init(struct map_rect_priv *mr);
-int block_next(struct map_rect_priv *mr);
-int block_get_byindex(struct file *file, int idx, struct block_priv *blk);
-int block_next_lin(struct map_rect_priv *mr);
-
-int tree_search_hv(char *dirname, char *filename, unsigned int search1, unsigned int search2, int *result);
-int town_get(struct map_rect_priv *mr, struct town_priv *poly, struct item *item);
-int town_get_byid(struct map_rect_priv *mr, struct town_priv *twn, int id_hi, int id_lo, struct item *item);
-struct item * town_search_get_item(struct map_rect_priv *mr);
-int poly_get(struct map_rect_priv *mr, struct poly_priv *poly, struct item *item);
-int poly_get_byid(struct map_rect_priv *mr, struct poly_priv *poly, int id_hi, int id_lo, struct item *item);
-int street_get(struct map_rect_priv *mr, struct street_priv *street, struct item *item);
-int street_get_byid(struct map_rect_priv *mr, struct street_priv *street, int id_hi, int id_lo, struct item *item);
-int street_name_get_byid(struct map_rect_priv *mr, struct street_priv *street, int id_hi, int id_lo, struct item *item);
-struct item * street_search_get_item(struct map_rect_priv *mr);
-void tree_search_init(char *dirname, char *filename, struct tree_search *ts, int offset);
-void tree_search_free(struct tree_search *ts);
-int tree_search_next(struct tree_search *ts, unsigned char **p, int dir);
-int tree_search_next_lin(struct tree_search *ts, unsigned char **p);
-struct item * housenumber_search_get_item(struct map_rect_priv *mr);
-struct map_rect_priv * map_rect_new_mg(struct map_priv *map, struct map_selection *sel);
-void map_rect_destroy_mg(struct map_rect_priv *mr);
-struct item *map_rect_get_item_byid_mg(struct map_rect_priv *mr, int id_hi, int id_lo);
-int housenumber_search_setup(struct map_rect_priv *mr);
diff --git a/navit/map/mg/poly.c b/navit/map/mg/poly.c
deleted file mode 100644
index 7c73d4587..000000000
--- a/navit/map/mg/poly.c
+++ /dev/null
@@ -1,265 +0,0 @@
-/**
- * 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 <string.h>
-#include "debug.h"
-#include "mg.h"
-
-static void
-poly_coord_rewind(void *priv_data)
-{
- struct poly_priv *poly=priv_data;
-
- poly->p=poly->subpoly_start;
-
-}
-
-static int
-poly_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct poly_priv *poly=priv_data;
- int ret=0;
-
- while (count--) {
- if (poly->p >= poly->subpoly_next)
- break;
- c->x=get_u32_unal(&poly->p);
- c->y=get_u32_unal(&poly->p);
- c++;
- ret++;
- }
- return ret;
-}
-
-static void
-poly_attr_rewind(void *priv_data)
-{
- struct poly_priv *poly=priv_data;
-
- poly->aidx=0;
-}
-
-static int
-poly_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct poly_priv *poly=priv_data;
-
- attr->type=attr_type;
- switch (attr_type) {
- case attr_any:
- while (poly->attr_next != attr_none) {
- if (poly_attr_get(poly, poly->attr_next, attr))
- return 1;
- }
- return 0;
- case attr_label:
- attr->u.str=poly->name;
- poly->attr_next=attr_none;
- if (attr->u.str[0])
- return 1;
- return 0;
- default:
- return 0;
- }
- return 1;
-}
-
-static struct item_methods poly_meth = {
- poly_coord_rewind,
- poly_coord_get,
- poly_attr_rewind,
- poly_attr_get,
-};
-
-static void
-poly_get_data(struct poly_priv *poly, unsigned char **p)
-{
- poly->c[0].x=get_u32_unal(p);
- poly->c[0].y=get_u32_unal(p);
- poly->c[1].x=get_u32_unal(p);
- poly->c[1].y=get_u32_unal(p);
- *p+=sizeof(struct coord);
- poly->name=(char *)(*p);
- while (**p) {
- (*p)++;
- }
- (*p)++;
- poly->order=*(*p)++;
- poly->type=*(*p)++;
- poly->polys=get_u32_unal(p);
- poly->count=(unsigned int *)(*p); (*p)+=poly->polys*sizeof(unsigned int);
- poly->count_sum=get_u32_unal(p);
-}
-
-int
-poly_get(struct map_rect_priv *mr, struct poly_priv *poly, struct item *item)
-{
- struct coord_rect r;
-
- for (;;) {
- if (mr->b.p >= mr->b.end)
- return 0;
- if (mr->b.p == mr->b.p_start) {
- poly->poly_num=0;
- poly->subpoly_num=0;
- poly->subpoly_num_all=0;
- poly->poly_next=mr->b.p;
- item->meth=&poly_meth;
- }
- if (poly->poly_num >= block_get_count(mr->b.b))
- return 0;
- if (!poly->subpoly_num) {
- mr->b.p=poly->poly_next;
- item->id_lo=mr->b.p-mr->file->begin;
- poly_get_data(poly, &mr->b.p);
- poly->poly_next=mr->b.p+poly->count_sum*sizeof(struct coord);
- poly->poly_num++;
- r.lu=poly->c[0];
- r.rl=poly->c[1];
- if (mr->cur_sel && (poly->order > mr->cur_sel->order*3 || !coord_rect_overlap(&mr->cur_sel->u.c_rect, &r))) {
- poly->subpoly_num_all+=poly->polys;
- mr->b.p=poly->poly_next;
- continue;
- }
- switch(poly->type) {
- case 0x13:
- item->type=type_poly_wood;
- break;
- case 0x14:
- item->type=type_poly_town;
- break;
- case 0x15:
- item->type=type_poly_cemetery;
- break;
- case 0x16:
- item->type=type_poly_building;
- break;
- case 0x17:
- item->type=type_poly_museum;
- break;
- case 0x19:
- item->type=type_poly_place;
- break;
- case 0x1b:
- item->type=type_poly_commercial_center;
- break;
- case 0x1e:
- item->type=type_poly_industry;
- break;
- case 0x23:
- /* FIXME: what is this ?*/
- item->type=type_poly_place;
- break;
- case 0x24:
- item->type=type_poly_car_parking;
- break;
- case 0x28:
- item->type=type_poly_airport;
- break;
- case 0x29:
- item->type=type_poly_station;
- break;
- case 0x2d:
- item->type=type_poly_hospital;
- break;
- case 0x2e:
- item->type=type_poly_hospital;
- break;
- case 0x2f:
- item->type=type_poly_university;
- break;
- case 0x30:
- item->type=type_poly_university;
- break;
- case 0x32:
- item->type=type_poly_park;
- break;
- case 0x34:
- item->type=type_poly_sport;
- break;
- case 0x35:
- item->type=type_poly_sport;
- break;
- case 0x37:
- item->type=type_poly_golf_course;
- break;
- case 0x38:
- item->type=type_poly_national_park;
- break;
- case 0x39:
- item->type=type_poly_nature_park;
- break;
- case 0x3c:
- item->type=type_poly_water;
- break;
- case 0xbc:
- item->type=type_water_line;
- break;
- case 0xc3:
- /* FIXME: what is this ?*/
- item->type=type_border_state;
- break;
- case 0xc6:
- item->type=type_border_country;
- break;
- case 0xc7:
- item->type=type_border_state;
- break;
- case 0xd0:
- item->type=type_rail;
- break;
- default:
- dbg(lvl_error,"Unknown poly type 0x%x '%s' 0x%x,0x%x\n", poly->type,poly->name,r.lu.x,r.lu.y);
- item->type=type_street_unkn;
- }
- if (!map_selection_contains_item(mr->cur_sel, 0, item->type)) {
- poly->subpoly_num_all+=poly->polys;
- mr->b.p=poly->poly_next;
- continue;
- }
- } else
- mr->b.p=poly->subpoly_next;
- dbg(lvl_debug,"%d %d %s\n", poly->subpoly_num_all, mr->b.block_num, poly->name);
- item->id_lo=poly->subpoly_num_all | (mr->b.block_num << 16);
- item->id_hi=(mr->current_file << 16);
- dbg(lvl_debug,"0x%x 0x%x\n", item->id_lo, item->id_hi);
- poly->subpoly_next=mr->b.p+L(poly->count[poly->subpoly_num])*sizeof(struct coord);
- poly->subpoly_num++;
- poly->subpoly_num_all++;
- if (poly->subpoly_num >= poly->polys)
- poly->subpoly_num=0;
- poly->subpoly_start=poly->p=mr->b.p;
- item->priv_data=poly;
- poly->attr_next=attr_label;
- return 1;
- }
-}
-
-int
-poly_get_byid(struct map_rect_priv *mr, struct poly_priv *poly, int id_hi, int id_lo, struct item *item)
-{
- int count=id_lo & 0xffff;
- int ret=0;
- block_get_byindex(mr->m->file[mr->current_file], id_lo >> 16, &mr->b);
- while (count-- >= 0) {
- ret=poly_get(mr, poly, item);
- }
- return ret;
-}
-
diff --git a/navit/map/mg/street.c b/navit/map/mg/street.c
deleted file mode 100644
index 6aad6e5a0..000000000
--- a/navit/map/mg/street.c
+++ /dev/null
@@ -1,1074 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include "debug.h"
-#include "mg.h"
-
-int coord_debug;
-
-#if 0
-static void street_name_numbers_get(struct street_name_numbers *name_numbers, unsigned char **p);
-static void street_name_number_get(struct street_name_number *name_number, unsigned char **p);
-
-static void
-street_name_debug(struct street_name *sn, FILE *out)
-{
- struct street_name_numbers nns;
- unsigned char *p=sn->aux_data;
- unsigned char *end=p+sn->aux_len;
- int i;
-
- while (p < end) {
- unsigned char *pn,*pn_end;
- struct street_name_number nn;
- street_name_numbers_get(&nns, &p);
- fprintf(out,"0x%x 0x%x type=town_label label=\"%s(%d):0x%x:%d%s-%d%s\" debug=\"len=0x%x\"",nns.c->x,nns.c->y,sn->name2, sn->segment_count, nns.tag, nns.first.number,nns.first.suffix,nns.last.number,nns.last.suffix,nns.len);
- for (i = 0 ; i < sn->segment_count ; i++) {
- fprintf(out," debug=\"segment(%d)=0x%x\"",i,sn->segments[i].segid);
- }
- fprintf(out,"\n");
- pn=nns.aux_data;
- pn_end=nns.aux_data+nns.aux_len;
- while (pn < pn_end) {
- street_name_number_get(&nn, &pn);
- fprintf(out,"0x%x 0x%x type=town_label label=\"%s:0x%x:%d%s-%d%s\" debug=\"len=0x%x\"\n", nn.c->x, nn.c->y, sn->name2, nn.tag, nn.first.number, nn.first.suffix, nn.last.number,nn.last.suffix,nn.len);
- }
- }
- fflush(out);
-}
-#endif
-
-static void
-street_name_get(struct street_name *name, unsigned char **p)
-{
-#if 0
- static FILE *out;
- static GHashTable *hash;
-#endif
- unsigned char *start=*p;
- name->len=get_u16_unal(p);
- name->country=get_u16_unal(p);
- name->townassoc=get_u32_unal(p);
- name->name1=get_string(p);
- name->name2=get_string(p);
- name->segment_count=get_u32_unal(p);
- name->segments=(struct street_name_segment *)(*p);
- (*p)+=(sizeof (struct street_name_segment))*name->segment_count;
- name->aux_len=name->len-(*p-start);
- name->aux_data=*p;
- name->tmp_len=name->aux_len;
- name->tmp_data=name->aux_data;
- *p=start+name->len;
-#if 0
- if (! out) {
- out=fopen("hn.txt","a");
- }
- if (! hash) {
- hash=g_hash_table_new(NULL,NULL);
- }
- if (! g_hash_table_lookup(hash, *p)) {
- g_hash_table_insert(hash, *p, (void *)1);
- street_name_debug(name, out);
- }
-#endif
-}
-
-static int
-street_name_eod(struct street_name *name)
-{
- return (name->tmp_data >= name->aux_data+name->aux_len);
-}
-
-static void
-street_name_numbers_get(struct street_name_numbers *name_numbers, unsigned char **p)
-{
- unsigned char *start=*p;
- name_numbers->len=get_u16_unal(p);
- name_numbers->tag=get_u8(p);
- name_numbers->dist=get_u32_unal(p);
- name_numbers->country=get_u32_unal(p);
- name_numbers->c=coord_get(p);
- name_numbers->first.number=get_u16_unal(p);
- name_numbers->first.suffix=get_string(p);
- name_numbers->last.number=get_u16_unal(p);
- name_numbers->last.suffix=get_string(p);
- name_numbers->segment_count=get_u32_unal(p);
- name_numbers->segments=(struct street_name_segment *)(*p);
- (*p)+=sizeof(struct street_name_segment)*name_numbers->segment_count;
- name_numbers->aux_len=name_numbers->len-(*p-start);
- name_numbers->aux_data=*p;
- name_numbers->tmp_len=name_numbers->aux_len;
- name_numbers->tmp_data=name_numbers->aux_data;
- *p=start+name_numbers->len;
-}
-
-static int
-street_name_numbers_eod(struct street_name_numbers *name_numbers)
-{
- return (name_numbers->tmp_data >= name_numbers->aux_data+name_numbers->aux_len);
-}
-
-static void
-street_name_number_get(struct street_name_number *name_number, unsigned char **p)
-{
- unsigned char *start=*p;
- name_number->len=get_u16_unal(p);
- name_number->tag=get_u8(p);
- name_number->c=coord_get(p);
- name_number->first.number=get_u16_unal(p);
- name_number->first.suffix=get_string(p);
- name_number->last.number=get_u16_unal(p);
- name_number->last.suffix=get_string(p);
- name_number->segment=(struct street_name_segment *)p;
- *p=start+name_number->len;
-}
-
-static void
-street_name_get_by_id(struct street_name *name, struct file *file, unsigned long id)
-{
- unsigned char *p;
- if (id) {
- p=file->begin+id+0x2000;
- street_name_get(name, &p);
- }
-}
-
-static int street_get_bytes(struct coord_rect *r)
-{
- int bytes,dx,dy;
- bytes=2;
- dx=r->rl.x-r->lu.x;
- dy=r->lu.y-r->rl.y;
- dbg_assert(dx > 0);
- dbg_assert(dy > 0);
- if (dx > 32767 || dy > 32767)
- bytes=3;
- if (dx > 8388608 || dy > 8388608)
- bytes=4;
-
- return bytes;
-}
-
-static int street_get_coord(unsigned char **pos, int bytes, struct coord_rect *ref, struct coord *f)
-{
- unsigned char *p;
- int x,y,flags=0;
-
- p=*pos;
- x=*p++;
- x|=(*p++) << 8;
- if (bytes == 2) {
- if ( x > 0x7fff) {
- x=0x10000-x;
- flags=1;
- }
- }
- else if (bytes == 3) {
- x|=(*p++) << 16;
- if ( x > 0x7fffff) {
- x=0x1000000-x;
- flags=1;
- }
- } else {
- x|=(*p++) << 16;
- x|=(*p++) << 24;
- if (x < 0) {
- x=-x;
- flags=1;
- }
- }
- y=*p++;
- y|=(*p++) << 8;
- if (bytes == 3) {
- y|=(*p++) << 16;
- } else if (bytes == 4) {
- y|=(*p++) << 16;
- y|=(*p++) << 24;
- }
- if (f) {
- f->x=ref->lu.x+x;
- f->y=ref->rl.y+y;
- dbg(lvl_debug,"0x%x,0x%x + 0x%x,0x%x = 0x%x,0x%x\n", x, y, ref->lu.x, ref->rl.y, f->x, f->y);
- }
- *pos=p;
- return flags;
-}
-
-static void
-street_coord_get_begin(unsigned char **p)
-{
- struct street_str *str;
-
- str=(struct street_str *)(*p);
- while (street_str_get_segid(str)) {
- str++;
- }
- (*p)=(unsigned char *)str;
- (*p)+=4;
-}
-
-
-static void
-street_coord_rewind(void *priv_data)
-{
- struct street_priv *street=priv_data;
-
- street->p=street->next=NULL;
- street->status=street->status_rewind;
-}
-
-static int
-street_coord_get_helper(struct street_priv *street, struct coord *c)
-{
- unsigned char *n;
- if (street->p+street->bytes*2 >= street->end)
- return 0;
- if (street->status >= 4)
- return 0;
- n=street->p;
- if (street_get_coord(&street->p, street->bytes, &street->ref, c)) {
- if (street->status)
- street->next=n;
- street->status+=2;
- if (street->status == 5)
- return 0;
- }
- return 1;
-}
-
-static int
-street_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct street_priv *street=priv_data;
- int ret=0,i,scount;
-#ifdef DEBUG_COORD_GET
- int segid,debug=0;
-#endif
-
- if (! street->p && count) {
- street->p=street->coord_begin;
- scount=street->str-street->str_start;
- for (i = 0 ; i < scount ; i++) {
- street->status=street_str_get_segid(&street->str[i+1]) >= 0 ? 0:1;
- while (street_coord_get_helper(street, c));
- street->p=street->next;
- }
- street->status_rewind=street->status=street_str_get_segid(&street->str[1]) >= 0 ? 0:1;
- }
-#ifdef DEBUG_COORD_GET
- segid=street_str_get_segid(&street->str[0]);
- if (segid < 0)
- segid=-segid;
- if (segid == 0x15)
- debug=1;
- if (debug) {
- dbg(lvl_debug,"enter 0x%x\n",segid);
- }
-#endif
- while (count > 0) {
- if (street_coord_get_helper(street, c)) {
-#ifdef DEBUG_COORD_GET
- if (debug) {
- dbg(lvl_debug,"0x%x,0x%x\n", c->x, c->y);
- }
-#endif
- c++;
- ret++;
- count--;
- } else {
- street->more=0;
- return ret;
- }
- }
- return ret;
-}
-
- static void
-street_attr_rewind(void *priv_data)
-{
- /* struct street_priv *street=priv_data; */
-
-}
-
-static int
-street_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct street_priv *street=priv_data;
- int nameid;
-
- dbg(lvl_debug,"segid 0x%x\n", street_str_get_segid(street->str));
- attr->type=attr_type;
- switch (attr_type) {
- case attr_any:
- while (street->attr_next != attr_none) {
- if (street_attr_get(street, street->attr_next, attr))
- return 1;
- }
- return 0;
- case attr_label:
- street->attr_next=attr_street_name;
- nameid=street_str_get_nameid(street->str);
- if (! nameid)
- return 0;
- if (! street->name.len)
- street_name_get_by_id(&street->name,street->name_file,nameid);
- attr->u.str=street->name.name2;
- if (attr->u.str && attr->u.str[0])
- return 1;
- attr->u.str=street->name.name1;
- if (attr->u.str && attr->u.str[0])
- return 1;
- return 0;
- case attr_street_name:
- street->attr_next=attr_street_name_systematic;
- nameid=street_str_get_nameid(street->str);
- if (! nameid)
- return 0;
- if (! street->name.len)
- street_name_get_by_id(&street->name,street->name_file,nameid);
- attr->u.str=street->name.name2;
- return ((attr->u.str && attr->u.str[0]) ? 1:0);
- case attr_street_name_systematic:
- street->attr_next=attr_flags;
- nameid=street_str_get_nameid(street->str);
- if (! nameid)
- return 0;
- if (! street->name.len)
- street_name_get_by_id(&street->name,street->name_file,nameid);
- attr->u.str=street->name.name1;
- return ((attr->u.str && attr->u.str[0]) ? 1:0);
- case attr_flags:
- attr->u.num=street->flags;
- street->attr_next=attr_country_id;
- return 1;
- case attr_country_id:
- street->attr_next=attr_debug;
- nameid=street_str_get_nameid(street->str);
- if (! nameid)
- return 0;
- if (! street->name.len)
- street_name_get_by_id(&street->name,street->name_file,nameid);
- attr->u.num=mg_country_to_isonum(street->name.country);
- return 1;
- case attr_debug:
- street->attr_next=attr_none;
- {
- struct street_str *str=street->str;
- sprintf(street->debug,"order:0x%x\nsegid:0x%x\nlimit:0x%x\nunknown2:0x%x\nunknown3:0x%x\ntype:0x%x\nnameid:0x%x\ntownassoc:0x%x",street_header_get_order(street->header),street_str_get_segid(str),street_str_get_limit(str),street_str_get_unknown2(str),street_str_get_unknown3(str),street_str_get_type(str),street_str_get_nameid(str), street->name.len ? street->name.townassoc : 0);
- attr->u.str=street->debug;
- }
- return 1;
- default:
- return 0;
- }
- return 1;
-}
-
-static struct item_methods street_meth = {
- street_coord_rewind,
- street_coord_get,
- street_attr_rewind,
- street_attr_get,
-};
-
-static void
-street_get_data(struct street_priv *street, unsigned char **p)
-{
- street->header=(struct street_header *)(*p);
- (*p)+=sizeof(struct street_header);
- street->type_count=street_header_get_count(street->header);
- street->type=(struct street_type *)(*p);
- (*p)+=street->type_count*sizeof(struct street_type);
-}
-
- /*0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 */
-static unsigned char limit[]={0,0,1,1,1,2,2,4,6,6,12,13,14,20,20,20,20,20,20};
-
-int
-street_get(struct map_rect_priv *mr, struct street_priv *street, struct item *item)
-{
- int *flags;
- struct coord_rect r;
- for (;;) {
- while (street->more) {
- struct coord c;
- street_coord_get(street, &c, 1);
- }
-#if 0
- if (street->housenumber) {
- if (street_get_housenumber(mr, street, item))
- return 1;
- street->housenumber=0;
- }
-#endif
- if (mr->b.p == mr->b.p_start) {
- street_get_data(street, &mr->b.p);
- street->name_file=mr->m->file[file_strname_stn];
- if (mr->cur_sel && street_header_get_order(street->header) > limit[mr->cur_sel->order])
- return 0;
- street->end=mr->b.end;
- block_get_r(mr->b.b, &r);
- street->ref=r;
- street->bytes=street_get_bytes(&r);
- street->str_start=street->str=(struct street_str *)mr->b.p;
- street->coord_begin=mr->b.p;
- street_coord_get_begin(&street->coord_begin);
- street->p=street->coord_begin;
- street->type--;
- item->meth=&street_meth;
- item->priv_data=street;
- } else {
- street->str++;
- street->p=street->next;
- }
- if (! street_str_get_segid(street->str))
- return 0;
- if (street_str_get_segid(street->str) < 0)
- street->type++;
-#if 0
- dbg_assert(street->p != NULL);
-#endif
- street->next=NULL;
- street->status_rewind=street->status=street_str_get_segid(&street->str[1]) >= 0 ? 0:1;
-#if 0
- if (street->type->country != 0x31) {
- printf("country=0x%x\n", street->type->country);
- }
-#endif
- item->id_hi=street_type_get_country(street->type) | (mr->current_file << 16);
- item->id_lo=street_str_get_segid(street->str) > 0 ? street_str_get_segid(street->str) : -street_str_get_segid(street->str);
- switch(street_str_get_type(street->str) & 0x1f) {
- case 0xf: /* very small street */
- if (street_str_get_limit(street->str) == 0x33)
- item->type=type_street_nopass;
- else
- item->type=type_street_0;
- break;
- case 0xd:
- item->type=type_ferry;
- break;
- case 0xc: /* small street */
- item->type=type_street_1_city;
- break;
- case 0xb:
- item->type=type_street_2_city;
- break;
- case 0xa:
- if ((street_str_get_limit(street->str) == 0x03 || street_str_get_limit(street->str) == 0x30) && street_header_get_order(street->header) < 4)
- item->type=type_street_4_city;
- else
- item->type=type_street_3_city;
- break;
- case 0x9:
- if (street_header_get_order(street->header) < 5)
- item->type=type_street_4_city;
- else if (street_header_get_order(street->header) < 7)
- item->type=type_street_2_city;
- else
- item->type=type_street_1_city;
- break;
- case 0x8:
- item->type=type_street_2_land;
- break;
- case 0x7:
- if ((street_str_get_limit(street->str) == 0x03 || street_str_get_limit(street->str) == 0x30) && street_header_get_order(street->header) < 4)
- item->type=type_street_4_city;
- else
- item->type=type_street_3_land;
- break;
- case 0x6:
- item->type=type_ramp;
- break;
- case 0x5:
- item->type=type_street_4_land;
- break;
- case 0x4:
- item->type=type_street_4_land;
- break;
- case 0x3:
- item->type=type_street_n_lanes;
- break;
- case 0x2:
- item->type=type_highway_city;
- break;
- case 0x1:
- item->type=type_highway_land;
- break;
- default:
- item->type=type_street_unkn;
- dbg(lvl_error,"unknown type 0x%x\n",street_str_get_type(street->str));
- }
- flags=item_get_default_flags(item->type);
- if (flags)
- street->flags=*flags;
- else
- street->flags=0;
- if (street_str_get_type(street->str) & 0x40) {
- street->flags|=(street_str_get_limit(street->str) & 0x30) ? AF_ONEWAYREV:0;
- street->flags|=(street_str_get_limit(street->str) & 0x03) ? AF_ONEWAY:0;
- } else {
- street->flags|=(street_str_get_limit(street->str) & 0x30) ? AF_ONEWAY:0;
- street->flags|=(street_str_get_limit(street->str) & 0x03) ? AF_ONEWAYREV:0;
- }
-#if 0
- coord_debug=(street->str->unknown2 != 0x40 || street->str->unknown3 != 0x40);
- if (coord_debug) {
- item->type=type_street_unkn;
- printf("%d %02x %02x %02x %02x\n", street->str->segid, street->str->type, street->str->limit, street->str->unknown2, street->str->unknown3);
- }
-#endif
- street->p_rewind=street->p;
- street->name.len=0;
- street->attr_next=attr_label;
- street->more=1;
- street->housenumber=1;
- street->hn_count=0;
- if (!map_selection_contains_item(mr->cur_sel, 0, item->type))
- continue;
- item->meth=&street_meth;
- item->priv_data=street;
- return 1;
- }
-}
-
-int
-street_get_byid(struct map_rect_priv *mr, struct street_priv *street, int id_hi, int id_lo, struct item *item)
-{
- int country=id_hi & 0xffff;
- int res;
- struct coord_rect r;
- dbg(lvl_debug,"enter(%p,%p,0x%x,0x%x,%p)\n", mr, street, id_hi, id_lo, item);
- if (! country)
- return 0;
- if (! tree_search_hv(mr->m->dirname, "street", (id_lo >> 8) | (country << 24), id_lo & 0xff, &res))
- return 0;
- dbg(lvl_debug,"res=0x%x (blk=0x%x)\n", res, res >> 12);
- block_get_byindex(mr->m->file[mr->current_file], res >> 12, &mr->b);
- street_get_data(street, &mr->b.p);
- street->name_file=mr->m->file[file_strname_stn];
- street->end=mr->b.end;
- block_get_r(mr->b.b, &r);
- street->ref=r;
- street->bytes=street_get_bytes(&r);
- street->str_start=street->str=(struct street_str *)mr->b.p;
- street->coord_begin=mr->b.p;
- street_coord_get_begin(&street->coord_begin);
- street->p=street->coord_begin;
- street->type--;
- item->meth=&street_meth;
- item->priv_data=street;
- street->str+=(res & 0xfff)-1;
- dbg(lvl_debug,"segid 0x%x\n", street_str_get_segid(&street->str[1]));
- return street_get(mr, street, item);
-#if 0
- mr->b.p=mr->b.block_start+(res & 0xffff);
- return town_get(mr, twn, item);
-#endif
-
- return 0;
-}
-
-struct street_name_index {
- int block;
- unsigned short country;
- int town_assoc;
- char name[0];
-} __attribute__((packed));
-
-static unsigned char
-latin1_tolower(unsigned char c)
-{
- if (c >= 'A' && c <= 'Z')
- return c - 'A' + 'a';
- if (c == 0xc4 || c == 0xc9 || c == 0xd6 || c == 0xdc)
- return c+0x20;
- return c;
-}
-
-static unsigned char
-latin1_tolower_ascii(unsigned char c)
-{
- unsigned char ret=latin1_tolower(c);
- switch (ret) {
- case 0xe4:
- return 'a';
- case 0xe9:
- return 'e';
- case 0xf6:
- return 'o';
- case 0xfc:
- return 'u';
- default:
- if (ret >= 0x80)
- dbg(lvl_debug,"ret=0x%x\n",c);
- return ret;
- }
-}
-
-static int
-strncasecmp_latin1(char *str1, char *str2, int len)
-{
- int d;
- while (len--) {
- d=latin1_tolower((unsigned char)(*str1))-latin1_tolower((unsigned char)(*str2));
- if (d)
- return d;
- if (! *str1)
- return 0;
- str1++;
- str2++;
- }
- return 0;
-}
-
-static int
-strncasecmp_latin1_ascii(char *str1, char *str2, int len)
-{
- int d;
- while (len--) {
- d=latin1_tolower_ascii((unsigned char)(*str1))-latin1_tolower_ascii((unsigned char)(*str2));
- if (d)
- return d;
- if (! *str1)
- return 0;
- str1++;
- str2++;
- }
- return 0;
-}
-
-static int
-street_search_compare_do(struct map_rect_priv *mr, int country, int town_assoc, char *name)
-{
- int d,len;
-
- dbg(lvl_debug,"enter");
- dbg(lvl_debug,"country 0x%x town_assoc 0x%x name '%s'\n", country, town_assoc, name);
- d=(mr->search_item.id_hi & 0xffff)-country;
- dbg(lvl_debug,"country %d (%d vs %d)\n", d, mr->search_item.id_hi & 0xffff, country);
- if (!d) {
- if (mr->search_item.id_lo == town_assoc ) {
- dbg(lvl_debug,"town_assoc match (0x%x)\n", town_assoc);
- len=mr->search_partial ? strlen(mr->search_str):INT_MAX;
- d=strncasecmp_latin1(mr->search_str, name, len);
- if (!strncasecmp_latin1_ascii(mr->search_str, name, len))
- d=0;
- dbg(lvl_debug,"string %d\n", d);
- } else {
- if (town_assoc < mr->search_item.id_lo)
- d=1;
- else
- d=-1;
- dbg(lvl_debug,"assoc %d 0x%x-0x%x\n",d, mr->search_item.id_lo, town_assoc);
- }
- }
- dbg(lvl_debug,"d=%d\n", d);
- return d;
-}
-
-static int
-street_search_compare(unsigned char **p, struct map_rect_priv *mr)
-{
- struct street_name_index *i;
- int ret;
-
- dbg(lvl_debug,"enter\n");
- i=(struct street_name_index *)(*p);
- *p+=sizeof(*i)+strlen(i->name)+1;
-
- dbg(lvl_debug,"block 0x%x\n", i->block);
-
- ret=street_search_compare_do(mr, i->country, i->town_assoc, i->name);
- if (ret <= 0)
- mr->search_block=i->block;
- return ret;
-}
-
-static void
-street_name_coord_rewind(void *priv_data)
-{
- /* struct street_priv *street=priv_data; */
-
-}
-
-static void
-street_name_attr_rewind(void *priv_data)
-{
- /* struct street_priv *street=priv_data; */
-
-}
-
-static int
-street_name_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *mr=priv_data;
- struct street_name_numbers snns;
- unsigned char *p=mr->street.name.aux_data;
-
- dbg(lvl_debug,"aux_data=%p\n", p);
- if (count) {
- street_name_numbers_get(&snns, &p);
- street_name_numbers_get_coord(&snns, c);
- return 1;
- }
-
- return 0;
-}
-
-#if 0
-static void
-debug(struct map_rect_priv *mr)
-{
- int i;
- struct street_name_numbers nns;
- unsigned char *p=mr->street.name.aux_data;
- unsigned char *end=p+mr->street.name.aux_len;
- printf("len=0x%x\n", mr->street.name.aux_len);
- for (i = 0 ; i < mr->street.name.aux_len ; i++) {
- printf("%02x ",mr->street.name.aux_data[i]);
- }
- printf("\n");
- {
- while (p < end) {
- unsigned char *pn,*pn_end;
- struct street_name_number nn;
- street_name_numbers_get(&nns, &p);
- printf("name_numbers:\n");
- printf(" len 0x%x\n", nns.len);
- printf(" tag 0x%x\n", nns.tag);
- printf(" dist 0x%x\n", nns.dist);
- printf(" country 0x%x\n", nns.country);
- printf(" coord 0x%x,0x%x\n", nns.c->x, nns.c->y);
- printf(" first %d\n", nns.first.number);
- printf(" last %d\n", nns.last.number);
- printf(" segment count 0x%x\n", nns.segment_count);
- printf(" aux_len 0x%x\n", nns.aux_len);
- pn=nns.aux_data;
- pn_end=nns.aux_data+nns.aux_len;
- while (pn < pn_end) {
- printf(" number:\n");
- street_name_number_get(&nn, &pn);
- printf(" len 0x%x\n", nn.len);
- printf(" tag 0x%x\n", nn.tag);
- printf(" coord 0x%x,0x%x\n", nn.c->x, nn.c->y);
- printf(" first %d\n", nn.first.number);
- printf(" last %d\n", nn.last.number);
- }
- }
- }
-}
-#endif
-
-static int
-street_name_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *mr=priv_data;
-
- attr->type=attr_type;
- switch (attr_type) {
- case attr_street_name:
- attr->u.str=mr->street.name.name2;
- return ((attr->u.str && attr->u.str[0]) ? 1:0);
- case attr_street_name_systematic:
- attr->u.str=mr->street.name.name1;
- return ((attr->u.str && attr->u.str[0]) ? 1:0);
- case attr_town_name:
- case attr_district_name:
- case attr_postal:
- if (!mr->search_item_tmp)
- mr->search_item_tmp=map_rect_get_item_byid_mg(mr->search_mr_tmp, mr->street.name_numbers.country | (file_town_twn << 16), mr->street.name_numbers.dist);
- if (!mr->search_item_tmp)
- return 0;
- return item_attr_get(mr->search_item_tmp, attr_type, attr);
- default:
- dbg(lvl_error,"unknown attr %s\n",attr_to_name(attr_type));
- return 0;
- }
-}
-
-
-
-
-
-static struct item_methods street_name_meth = {
- street_name_coord_rewind,
- street_name_coord_get,
- street_name_attr_rewind,
- street_name_attr_get,
-};
-
-
-int
-street_name_get_byid(struct map_rect_priv *mr, struct street_priv *street, int id_hi, int id_lo, struct item *item)
-{
- mr->current_file=id_hi >> 16;
- street->name_file=mr->m->file[mr->current_file];
- item->type=type_street_name;
- item->id_hi=id_hi;
- item->id_lo=id_lo;
- item->meth=&street_name_meth;
- item->map=NULL;
- item->priv_data=mr;
- mr->b.p=street->name_file->begin+item->id_lo;
- dbg(lvl_debug,"last %p map %p file %d begin %p\n", mr->b.p, mr->m, mr->current_file, mr->m->file[mr->current_file]->begin);
- street_name_get(&street->name, &mr->b.p);
- return 1;
-}
-
-static struct item *
-street_search_get_item_street_name(struct map_rect_priv *mr)
-{
- int dir=1,leaf;
- unsigned char *last;
-
- dbg(lvl_debug,"enter\n");
- if (! mr->search_blk_count) {
- dbg(lvl_debug,"partial 0x%x '%s' ***\n", mr->town.street_assoc, mr->search_str);
- if (mr->search_linear)
- return NULL;
- dbg(lvl_debug,"tree_search_next\n");
- mr->search_block=-1;
- while ((leaf=tree_search_next(&mr->ts, &mr->search_p, dir)) != -1) {
- dir=street_search_compare(&mr->search_p, mr);
- }
- dbg(lvl_debug,"dir=%d mr->search_block=0x%x\n", dir, mr->search_block);
- if (mr->search_block == -1)
- return NULL;
- mr->search_blk_count=1;
- block_get_byindex(mr->m->file[file_strname_stn], mr->search_block, &mr->b);
- mr->b.p=mr->b.block_start+12;
- }
- dbg(lvl_debug,"name id %td\n", mr->b.p-mr->m->file[file_strname_stn]->begin);
- if (! mr->search_blk_count)
- return NULL;
- for (;;) {
- if (mr->b.p >= mr->b.end) {
- if (!block_next_lin(mr)) {
- dbg(lvl_debug,"end of blocks in %p, %p\n", mr->m->file[file_strname_stn]->begin, mr->m->file[file_strname_stn]->end);
- return NULL;
- }
- mr->b.p=mr->b.block_start+12;
- }
- while (mr->b.p < mr->b.end) {
- last=mr->b.p;
- street_name_get(&mr->street.name, &mr->b.p);
- dir=street_search_compare_do(mr, mr->street.name.country, mr->street.name.townassoc, mr->street.name.name2);
- dbg(lvl_debug,"country 0x%x assoc 0x%x name1 '%s' name2 '%s' dir=%d\n", mr->street.name.country, mr->street.name.townassoc, mr->street.name.name1, mr->street.name.name2, dir);
- if (dir < 0) {
- dbg(lvl_debug,"end of data\n");
- mr->search_blk_count=0;
- return NULL;
- }
- if (!dir) {
- dbg(lvl_debug,"result country 0x%x assoc 0x%x name1 '%s' name2 '%s' dir=%d aux_data=%p len=0x%x\n", mr->street.name.country, mr->street.name.townassoc, mr->street.name.name1, mr->street.name.name2, dir, mr->street.name.aux_data, mr->street.name.aux_len);
- mr->item.type = type_street_name;
- mr->item.id_hi=(file_strname_stn << 16);
- mr->item.id_lo=last-mr->m->file[file_strname_stn]->begin;
- dbg(lvl_debug,"id 0x%x 0x%x last %p map %p file %d begin %p\n", mr->item.id_hi, mr->item.id_lo, last, mr->m, mr->current_file, mr->m->file[mr->current_file]->begin);
- mr->item.meth=&street_name_meth;
- mr->item.map=NULL;
- mr->item.priv_data=mr;
- /* debug(mr); */
- dbg(lvl_debug,"last %p\n",last);
- return &mr->item;
- }
- }
- }
-}
-
-struct item *
-street_search_get_item(struct map_rect_priv *mr)
-{
- struct item *item;
- for (;;) {
- if (!mr->street.name.tmp_data || street_name_eod(&mr->street.name)) {
- item=street_search_get_item_street_name(mr);
- if (!item)
- return NULL;
- if (!mr->street.name.aux_len)
- return item;
- }
- mr->item.id_hi++;
- street_name_numbers_get(&mr->street.name_numbers, &mr->street.name.tmp_data);
- mr->search_item_tmp=NULL;
- return &mr->item;
- }
-}
-
-static int
-street_name_numbers_next(struct map_rect_priv *mr)
-{
- if (street_name_eod(&mr->street.name))
- return 0;
- dbg(lvl_debug,"%p vs %p\n",mr->street.name.tmp_data, mr->street.name.aux_data);
- street_name_numbers_get(&mr->street.name_numbers, &mr->street.name.tmp_data);
- return 1;
-}
-
-static int
-street_name_number_next(struct map_rect_priv *mr)
-{
- if (street_name_numbers_eod(&mr->street.name_numbers))
- return 0;
- street_name_number_get(&mr->street.name_number, &mr->street.name_numbers.tmp_data);
- sprintf(mr->street.first_number,"%d%s",mr->street.name_number.first.number,mr->street.name_number.first.suffix);
- sprintf(mr->street.last_number,"%d%s",mr->street.name_number.last.number,mr->street.name_number.last.suffix);
- mr->street.current_number[0]='\0';
- return 1;
-}
-
-static void
-housenumber_coord_rewind(void *priv_data)
-{
- /* struct street_priv *street=priv_data; */
-
-}
-
-static void
-housenumber_attr_rewind(void *priv_data)
-{
- /* struct street_priv *street=priv_data; */
-
-}
-
-static int
-housenumber_coord_get(void *priv_data, struct coord *c, int count)
-{
- return 0;
-}
-
-static int
-housenumber_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *mr=priv_data;
- attr->type=attr_type;
- switch (attr_type) {
- case attr_house_number:
- attr->u.str=mr->street.current_number;
- return 1;
- case attr_town_name:
- case attr_district_name:
- case attr_postal:
- if (!mr->search_item_tmp)
- mr->search_item_tmp=map_rect_get_item_byid_mg(mr->search_mr_tmp, mr->street.name_numbers.country | (file_town_twn << 16), mr->street.name_numbers.dist);
- if (!mr->search_item_tmp)
- return 0;
- return item_attr_get(mr->search_item_tmp, attr_type, attr);
- default:
- dbg(lvl_error,"unknown attr %s\n",attr_to_name(attr_type));
- return 0;
- }
-}
-
-
-static struct item_methods housenumber_meth = {
- housenumber_coord_rewind,
- housenumber_coord_get,
- housenumber_attr_rewind,
- housenumber_attr_get,
-};
-
-int
-housenumber_search_setup(struct map_rect_priv *mr)
-{
- dbg(lvl_debug,"enter (0x%x,0x%x)\n",mr->search_item.id_hi,mr->search_item.id_lo);
- int id=mr->search_item.id_hi & 0xff;
- mr->current_file=file_strname_stn;
- mr->street.name_file=mr->m->file[mr->current_file];
- mr->b.p=mr->street.name_file->begin+mr->search_item.id_lo;
- mr->search_str=g_strdup(mr->search_attr->u.str);
- dbg(lvl_debug,"last %p\n",mr->b.p);
- street_name_get(&mr->street.name, &mr->b.p);
-#if 0
- debug(mr);
-#endif
- while (id > 0) {
- id--;
- dbg(lvl_debug,"loop\n");
- if (!street_name_numbers_next(mr))
- return 0;
- }
- mr->item.type=type_house_number;
- mr->item.priv_data=mr;
- mr->item.id_hi=mr->search_item.id_hi + 0x100;
- mr->item.meth=&housenumber_meth;
- if (!id)
- mr->item.id_hi+=1;
- mr->item.id_lo=mr->search_item.id_lo;
- dbg(lvl_debug,"getting name_number %p vs %p + %d\n",mr->street.name_numbers.tmp_data,mr->street.name_numbers.aux_data, mr->street.name_numbers.aux_len);
- if (!street_name_number_next(mr))
- return 0;
- dbg(lvl_debug,"enter\n");
- // debug(mr);
- return 1;
-}
-
-static int
-house_number_next(char *number, char *first, char *last, int interpolation, int *percentage)
-{
- int firstn=atoi(first);
- int lastn=atoi(last);
- int current,delta,len=lastn-firstn;
- if (interpolation) {
- len/=2;
- }
- if (!number[0]) {
- strcpy(number,first);
- delta=0;
- } else {
- current=atoi(number)+(interpolation ? 2:1);
- if (current > lastn)
- return 0;
- sprintf(number,"%d",current);
- delta=current-firstn;
- }
- if (percentage) {
- if (len)
- *percentage=delta*100/len;
- else
- *percentage=50;
- }
- return 1;
-}
-
-struct item *
-housenumber_search_get_item(struct map_rect_priv *mr)
-{
- int d;
- dbg(lvl_debug,"enter %s %s\n",mr->street.first_number,mr->street.last_number);
- for (;;) {
- if (!house_number_next(mr->street.current_number, mr->street.first_number, mr->street.last_number, 0, NULL)) {
- if (!street_name_number_next(mr))
- return NULL;
- continue;
- }
- if (mr->search_partial)
- d=strncasecmp(mr->search_str, mr->street.current_number, strlen(mr->search_str));
- else
- d=strcasecmp(mr->search_str, mr->street.current_number);
- if (!d) {
- mr->search_item_tmp=NULL;
- return &mr->item;
- }
- }
-}
diff --git a/navit/map/mg/town.c b/navit/map/mg/town.c
deleted file mode 100644
index 0fd19be0d..000000000
--- a/navit/map/mg/town.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <string.h>
-#include "debug.h"
-#include "mg.h"
-
-
-
-static void
-town_coord_rewind(void *priv_data)
-{
- struct town_priv *twn=priv_data;
-
- twn->cidx=0;
-}
-
-static int
-town_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct town_priv *twn=priv_data;
-
- if (twn->cidx || count <= 0)
- return 0;
- twn->cidx=1;
- *c=twn->c;
- return 1;
-}
-
-static void
-town_attr_rewind(void *priv_data)
-{
- struct town_priv *twn=priv_data;
-
- twn->aidx=0;
- twn->attr_next=attr_label;
-}
-
-static int
-town_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct town_priv *twn=priv_data;
- int len;
-
- attr->type=attr_type;
- switch (attr_type) {
- case attr_any:
- while (twn->attr_next != attr_none) {
- if (town_attr_get(twn, twn->attr_next, attr))
- return 1;
- }
- return 0;
- case attr_label:
- attr->u.str=twn->district;
- twn->attr_next=attr_town_name;
- if (attr->u.str[0])
- return 1;
- attr->u.str=twn->name;
- return ((attr->u.str && attr->u.str[0]) ? 1:0);
- case attr_town_name:
- attr->u.str=twn->name;
- twn->attr_next=attr_town_postal;
- return ((attr->u.str && attr->u.str[0]) ? 1:0);
- case attr_town_postal:
- case attr_postal:
- strncpy(twn->postal, twn->postal_code1, 32);
- attr->u.str=twn->postal;
- len=mg_country_postal_len(twn->country);
- if (!len)
- len=31;
- twn->postal[len]='\0';
- twn->attr_next=attr_district_name;
- return ((attr->u.str && attr->u.str[0]) ? 1:0);
- case attr_district_name:
- attr->u.str=twn->district;
- twn->attr_next=attr_debug;
- return ((attr->u.str && attr->u.str[0]) ? 1:0);
- case attr_town_streets_item:
- twn->town_attr_item.type=type_town_streets;
- twn->town_attr_item.id_hi=twn->country | (file_town_twn << 16) | 0x10000000;
- twn->town_attr_item.id_lo=twn->street_assoc;
- attr->u.item=&twn->town_attr_item;
- twn->attr_next=attr_debug;
- return 1;
- case attr_debug:
- sprintf(twn->debug, "order %d\nsize %d\nstreet_assoc 0x%x", twn->order, twn->size, twn->street_assoc);
- attr->u.str=twn->debug;
- twn->attr_next=attr_none;
- return 1;
- default:
- dbg(lvl_warning, "Don't know about attribute %d[%04X]=%s yet\n",
- attr_type, attr_type, attr_to_name(attr_type));
- return 0;
- }
- return 1;
-}
-
-static struct item_methods town_meth = {
- town_coord_rewind,
- town_coord_get,
- town_attr_rewind,
- town_attr_get,
-};
-
-static void
-town_get_data(struct town_priv *twn, unsigned char **p)
-{
- twn->id=get_u32_unal(p);
- twn->c.x=get_u32_unal(p);
- twn->c.y=get_u32_unal(p);
- twn->name=get_string(p);
- twn->district=get_string(p);
- twn->postal_code1=get_string(p);
- twn->order=get_u8(p); /* 1-15 (19) */
- twn->country=get_u16_unal(p);
- twn->type=get_u8(p);
- twn->unknown2=get_u32_unal(p);
- twn->size=get_u8(p);
- twn->street_assoc=get_u32_unal(p);
- twn->unknown3=get_u8(p);
- twn->postal_code2=get_string(p);
- twn->unknown4=get_u32_unal(p);
-#if 0
- printf("%s\t%s\t%s\t%d\t%d\t%d\n",twn->name,twn->district,twn->postal_code1,twn->order, twn->country, twn->type);
-#endif
-}
- /*0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 */
-static unsigned char limit[]={0,1,2,2,4,6,8,10,11,13,14,14,14,20,20,20,20,20,20};
-
-static enum item_type town_item[]={type_town_label_5e1, type_town_label_1e2, type_town_label_2e2, type_town_label_5e2, type_town_label_1e3, type_town_label_1e3, type_town_label_2e3, type_town_label_5e3, type_town_label_1e4, type_town_label_2e4, type_town_label_5e4, type_town_label_1e5, type_town_label_1e5, type_town_label_2e5, type_town_label_5e5, type_town_label_1e6, type_town_label_2e6};
-static enum item_type district_item[]={type_district_label_5e1, type_district_label_1e2, type_district_label_2e2, type_district_label_5e2, type_district_label_1e3, type_district_label_1e3, type_district_label_2e3, type_district_label_5e3, type_district_label_1e4, type_district_label_2e4, type_district_label_5e4, type_district_label_1e5, type_district_label_1e5, type_district_label_2e5, type_district_label_5e5, type_district_label_1e6, type_district_label_2e6};
-int
-town_get(struct map_rect_priv *mr, struct town_priv *twn, struct item *item)
-{
- int size;
- for (;;) {
- if (mr->b.p >= mr->b.end)
- return 0;
- town_get_data(twn, &mr->b.p);
- twn->cidx=0;
- twn->aidx=0;
- twn->attr_next=attr_label;
- if (! mr->cur_sel || (twn->order <= limit[mr->cur_sel->order] && coord_rect_contains(&mr->cur_sel->u.c_rect,&twn->c))) {
- switch(twn->type) {
- case 1:
- size=twn->size;
- if (size >= sizeof(town_item)/sizeof(enum item_type))
- size=sizeof(town_item)/sizeof(enum item_type)-1;
- item->type=town_item[size];
- break;
- case 3:
- size=twn->size;
- if (size == 6 && twn->order < 14)
- size++;
- if (size == 5 && twn->order < 14)
- size+=2;
- if (size >= sizeof(district_item)/sizeof(enum item_type))
- size=sizeof(district_item)/sizeof(enum item_type)-1;
- item->type=district_item[size];
- break;
- case 4:
- item->type=type_port_label;
- break;
- case 9:
- item->type=type_highway_exit_label;
- break;
- default:
- printf("unknown town type 0x%x '%s' '%s' 0x%x,0x%x\n", twn->type, twn->name, twn->district, twn->c.x, twn->c.y);
- item->type=type_town_label;
- }
- if (map_selection_contains_item(mr->cur_sel, 0, item->type)) {
- item->id_hi=twn->country | (mr->current_file << 16);
- item->id_lo=twn->id;
- item->priv_data=twn;
- item->meth=&town_meth;
- return 1;
- }
- }
- }
-}
-
-int
-town_get_byid(struct map_rect_priv *mr, struct town_priv *twn, int id_hi, int id_lo, struct item *item)
-{
- int country=id_hi & 0xffff;
- int res;
- if (!tree_search_hv(mr->m->dirname, "town", (id_lo >> 8) | (country << 24), id_lo & 0xff, &res))
- return 0;
- block_get_byindex(mr->m->file[mr->current_file], res >> 16, &mr->b);
- mr->b.p=mr->b.block_start+(res & 0xffff);
- return town_get(mr, twn, item);
-}
-
-static int
-town_search_compare(unsigned char **p, struct map_rect_priv *mr)
-{
- int country, d;
- char *name;
-
- if (mr->search_type == attr_town_postal) {
- mr->search_blk_count=1;
- mr->search_blk_off=(struct block_offset *)(*p);
- *p+=4;
- name=get_string(p);
- d=0;
- } else {
- country=get_u16_unal(p);
- dbg(lvl_debug,"country 0x%x ", country);
- name=get_string(p);
- dbg(lvl_debug,"name '%s' ",name);
- mr->search_blk_count=get_u32_unal(p);
- mr->search_blk_off=(struct block_offset *)(*p);
- dbg(lvl_debug,"len %d ", mr->search_blk_count);
- (*p)+=mr->search_blk_count*4;
- d=mr->search_country-country;
- }
- if (!d) {
- if (mr->search_partial)
- d=strncasecmp(mr->search_str, name, strlen(mr->search_str));
- else
- d=strcasecmp(mr->search_str, name);
- }
- dbg(lvl_debug,"%d \n",d);
- return d;
-
-}
-
-
-
-struct item *
-town_search_get_item(struct map_rect_priv *mr)
-{
- int dir=1,leaf;
-
- if (! mr->search_blk_count) {
- dbg(lvl_debug,"partial %d 0x%x '%s' ***\n", mr->search_partial, mr->search_country, mr->search_str);
- if (! mr->search_linear) {
- while ((leaf=tree_search_next(&mr->ts, &mr->search_p, dir)) != -1) {
- dir=town_search_compare(&mr->search_p, mr);
- if (! dir) {
- mr->search_linear=1;
- mr->search_p=NULL;
- break;
- }
- }
- if (! mr->search_linear) {
- dbg(lvl_warning,"not found\n");
- return NULL;
- }
- }
- if (! tree_search_next_lin(&mr->ts, &mr->search_p)) {
- dbg(lvl_debug,"linear not found\n");
- return NULL;
- }
- if (town_search_compare(&mr->search_p, mr)) {
- dbg(lvl_debug,"no match\n");
- return NULL;
- }
- dbg(lvl_debug,"found %d blocks\n",mr->search_blk_count);
- }
- if (! mr->search_blk_count)
- return NULL;
- dbg(lvl_debug,"block 0x%x offset 0x%x\n", block_offset_get_block(mr->search_blk_off), block_offset_get_offset(mr->search_blk_off));
- block_get_byindex(mr->m->file[mr->current_file], block_offset_get_block(mr->search_blk_off), &mr->b);
- mr->b.p=mr->b.block_start+block_offset_get_offset(mr->search_blk_off);
- town_get(mr, &mr->town, &mr->item);
- mr->search_blk_off++;
- mr->search_blk_count--;
- return &mr->item;
-}
diff --git a/navit/map/mg/tree.c b/navit/map/mg/tree.c
deleted file mode 100644
index e456ca87c..000000000
--- a/navit/map/mg/tree.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <string.h>
-#include "debug.h"
-#include "mg.h"
-
-struct tree_hdr {
- /*unsigned int addr;
- unsigned int size;
- unsigned int low;*/
- unsigned char p[12];
-};
-static inline unsigned int tree_hdr_get_addr(struct tree_hdr * tree) { unsigned char *p = tree->p; return get_u32(&p); }
-static inline unsigned int tree_hdr_get_size(struct tree_hdr * tree) { unsigned char *p = tree->p+4; return get_u32(&p); }
-static inline unsigned int tree_hdr_get_low(struct tree_hdr * tree) { unsigned char *p = tree->p+8; return get_u32(&p); }
-
-struct tree_hdr_h {
-/* unsigned int addr;
- unsigned int size;*/
- unsigned char p[8];
-};
-static inline unsigned int tree_hdr_h_get_addr(struct tree_hdr_h * tree) { unsigned char *p = tree->p; return get_u32(&p); }
-static inline unsigned int tree_hdr_h_get_size(struct tree_hdr_h * tree) { unsigned char *p = tree->p+4; return get_u32(&p); }
-
-struct tree_leaf_h {
-/* unsigned int lower;
- unsigned int higher;
- unsigned int match;
- unsigned int value;*/
- unsigned char p[16];
-};
-static inline unsigned int tree_leaf_h_get_lower(struct tree_leaf_h * tree) { unsigned char *p = tree->p; return get_u32(&p); }
-static inline unsigned int tree_leaf_h_get_higher(struct tree_leaf_h * tree) { unsigned char *p = tree->p+4; return get_u32(&p); }
-static inline unsigned int tree_leaf_h_get_match(struct tree_leaf_h * tree) { unsigned char *p = tree->p+8; return get_u32(&p); }
-static inline unsigned int tree_leaf_h_get_value(struct tree_leaf_h * tree) { unsigned char *p = tree->p+12; return get_u32(&p); }
-
-
-struct tree_hdr_v {
- /*unsigned int count;
- unsigned int next;
- unsigned int unknown;*/
- unsigned char p[12];
-};
-static inline unsigned int tree_hdr_v_get_count(struct tree_hdr_v * tree) { unsigned char *p = tree->p; return get_u32_unal(&p); }
-static inline unsigned int tree_hdr_v_get_next(struct tree_hdr_v * tree) { unsigned char *p = tree->p+4; return get_u32_unal(&p); }
-static inline unsigned int tree_hdr_v_get_unknown(struct tree_hdr_v * tree) { unsigned char *p = tree->p+8; return get_u32_unal(&p); }
-
-struct tree_leaf_v {
- unsigned char key;
- /*int value;*/
- unsigned char p[4];
-} __attribute__((packed));
-static inline int tree_leaf_v_get_value(struct tree_leaf_v * tree) { unsigned char *p = tree->p; return get_u32_unal(&p); }
-
-static int
-tree_search_h(struct file *file, unsigned int search)
-{
- unsigned char *p=file->begin,*end;
- int last,i=0,value,lower;
- struct tree_hdr_h *thdr;
- struct tree_leaf_h *tleaf;
-
- dbg(lvl_debug,"enter\n");
- while (i++ < 1000) {
- thdr=(struct tree_hdr_h *)p;
- p+=sizeof(*thdr);
- end=p+tree_hdr_h_get_size(thdr);
- dbg(lvl_debug,"@%td\n", p-file->begin);
- last=0;
- while (p < end) {
- tleaf=(struct tree_leaf_h *)p;
- p+=sizeof(*tleaf);
- dbg(lvl_debug,"low:0x%x high:0x%x match:0x%x val:0x%x search:0x%x\n", tree_leaf_h_get_lower(tleaf), tree_leaf_h_get_higher(tleaf), tree_leaf_h_get_match(tleaf), tree_leaf_h_get_value(tleaf), search);
- value=tree_leaf_h_get_value(tleaf);
- if (value == search)
- return tree_leaf_h_get_match(tleaf);
- if (value > search) {
- dbg(lvl_debug,"lower\n");
- lower=tree_leaf_h_get_lower(tleaf);
- if (lower)
- last=lower;
- break;
- }
- last=tree_leaf_h_get_higher(tleaf);
- }
- if (! last || last == -1)
- return 0;
- p=file->begin+last;
- }
- return 0;
-}
-
-static int
-tree_search_v(struct file *file, int offset, int search)
-{
- unsigned char *p=file->begin+offset;
- int i=0,count,next;
- struct tree_hdr_v *thdr;
- struct tree_leaf_v *tleaf;
- while (i++ < 1000) {
- thdr=(struct tree_hdr_v *)p;
- p+=sizeof(*thdr);
- count=tree_hdr_v_get_count(thdr);
- dbg(lvl_debug,"offset=%td count=0x%x\n", p-file->begin, count);
- while (count--) {
- tleaf=(struct tree_leaf_v *)p;
- p+=sizeof(*tleaf);
- dbg(lvl_debug,"0x%x 0x%x\n", tleaf->key, search);
- if (tleaf->key == search)
- return tree_leaf_v_get_value(tleaf);
- }
- next=tree_hdr_v_get_next(thdr);
- if (! next)
- break;
- p=file->begin+next;
- }
- return 0;
-}
-
-int
-tree_search_hv(char *dirname, char *filename, unsigned int search_h, unsigned int search_v, int *result)
-{
- struct file *f_idx_h, *f_idx_v;
- char buffer[4096];
- int h,v;
-
- dbg(lvl_debug,"enter(%s, %s, 0x%x, 0x%x, %p)\n",dirname, filename, search_h, search_v, result);
- sprintf(buffer, "%s/%s.h1", dirname, filename);
- f_idx_h=file_create_caseinsensitive(buffer, 0);
- if ((!f_idx_h) || (!file_mmap(f_idx_h)))
- return 0;
- sprintf(buffer, "%s/%s.v1", dirname, filename);
- f_idx_v=file_create_caseinsensitive(buffer, 0);
- dbg(lvl_debug,"%p %p\n", f_idx_h, f_idx_v);
- if ((!f_idx_v) || (!file_mmap(f_idx_v))) {
- file_destroy(f_idx_h);
- return 0;
- }
- if ((h=tree_search_h(f_idx_h, search_h))) {
- dbg(lvl_debug,"h=0x%x\n", h);
- if ((v=tree_search_v(f_idx_v, h, search_v))) {
- dbg(lvl_debug,"v=0x%x\n", v);
- *result=v;
- file_destroy(f_idx_v);
- file_destroy(f_idx_h);
- dbg(lvl_debug,"return 1\n");
- return 1;
- }
- }
- file_destroy(f_idx_v);
- file_destroy(f_idx_h);
- dbg(lvl_debug,"return 0\n");
- return 0;
-}
-
-static struct tree_search_node *
-tree_search_enter(struct tree_search *ts, int offset)
-{
- struct tree_search_node *tsn=&ts->nodes[++ts->curr_node];
- unsigned char *p;
- p=ts->f->begin+offset;
- tsn->hdr=(struct tree_hdr *)p;
- tsn->p=p+sizeof(struct tree_hdr);
- tsn->last=tsn->p;
- tsn->end=p+tree_hdr_get_size(tsn->hdr);
- tsn->low=tree_hdr_get_low(tsn->hdr);
- tsn->high=tree_hdr_get_low(tsn->hdr);
- dbg(lvl_debug,"pos %td addr 0x%ux size 0x%ux low 0x%ux end %tu\n", p-ts->f->begin, tree_hdr_get_addr(tsn->hdr), tree_hdr_get_size(tsn->hdr), tree_hdr_get_low(tsn->hdr), tsn->end-ts->f->begin);
- return tsn;
-}
-
-int tree_search_next(struct tree_search *ts, unsigned char **p, int dir)
-{
- struct tree_search_node *tsn=&ts->nodes[ts->curr_node];
-
- if (! *p)
- *p=tsn->p;
- dbg(lvl_debug,"next *p=%p dir=%d\n", *p, dir);
- dbg(lvl_debug,"low1=0x%x high1=0x%x\n", tsn->low, tsn->high);
- if (dir <= 0) {
- dbg(lvl_debug,"down 0x%x\n", tsn->low);
- if (tsn->low != 0xffffffff) {
- tsn=tree_search_enter(ts, tsn->low);
- *p=tsn->p;
- tsn->high=get_u32(p);
- ts->last_node=ts->curr_node;
- dbg(lvl_debug,"saving last2 %d %td\n", ts->curr_node, tsn->last-ts->f->begin);
- dbg(lvl_debug,"high2=0x%x\n", tsn->high);
- return 0;
- }
- return -1;
- }
- tsn->low=tsn->high;
- tsn->last=*p;
- tsn->high=get_u32_unal(p);
- dbg(lvl_debug,"saving last3 %d %p\n", ts->curr_node, tsn->last);
- if (*p < tsn->end)
- return (tsn->low == 0xffffffff ? 1 : 0);
- dbg(lvl_debug,"end reached high=0x%x\n",tsn->high);
- if (tsn->low != 0xffffffff) {
- dbg(lvl_debug,"low 0x%x\n", tsn->low);
- tsn=tree_search_enter(ts, tsn->low);
- *p=tsn->p;
- tsn->high=get_u32_unal(p);
- ts->last_node=ts->curr_node;
- dbg(lvl_debug,"saving last4 %d %td\n", ts->curr_node, tsn->last-ts->f->begin);
- dbg(lvl_debug,"high4=0x%x\n", tsn->high);
- return 0;
- }
- return -1;
-}
-
-int tree_search_next_lin(struct tree_search *ts, unsigned char **p)
-{
- struct tree_search_node *tsn=&ts->nodes[ts->curr_node];
- int high;
-
- dbg(lvl_debug,"pos=%d %td\n", ts->curr_node, *p-ts->f->begin);
- if (*p)
- ts->nodes[ts->last_node].last=*p;
- *p=tsn->last;
- for (;;) {
- high=get_u32_unal(p);
- if (*p < tsn->end) {
- ts->last_node=ts->curr_node;
- while (high != 0xffffffff) {
- tsn=tree_search_enter(ts, high);
- dbg(lvl_debug,"reload %d\n",ts->curr_node);
- high=tsn->low;
- }
- return 1;
- }
- dbg(lvl_debug,"eon %d %td %td\n", ts->curr_node, *p-ts->f->begin, tsn->end-ts->f->begin);
- if (! ts->curr_node)
- break;
- ts->curr_node--;
- tsn=&ts->nodes[ts->curr_node];
- *p=tsn->last;
- }
-
- return 0;
-}
-
-void
-tree_search_init(char *dirname, char *filename, struct tree_search *ts, int offset)
-{
- char buffer[4096];
- sprintf(buffer, "%s/%s", dirname, filename);
- ts->f=file_create_caseinsensitive(buffer, 0);
- ts->curr_node=-1;
- if (ts->f) {
- file_mmap(ts->f);
- tree_search_enter(ts, offset);
- }
-}
-
-void
-tree_search_free(struct tree_search *ts)
-{
- if (ts->f)
- file_destroy(ts->f);
-}
diff --git a/navit/map/shapefile/CMakeLists.txt b/navit/map/shapefile/CMakeLists.txt
deleted file mode 100644
index 906537a73..000000000
--- a/navit/map/shapefile/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(map_shapefile shapefile.c)
diff --git a/navit/map/shapefile/shapefile.c b/navit/map/shapefile/shapefile.c
deleted file mode 100644
index e3eb4b723..000000000
--- a/navit/map/shapefile/shapefile.c
+++ /dev/null
@@ -1,796 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include "config.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include "debug.h"
-#include "plugin.h"
-#include "projection.h"
-#include "item.h"
-#include "map.h"
-#include "maptype.h"
-#include "attr.h"
-#include "transform.h"
-#include "file.h"
-#include "shapefil.h"
-
-
-#define IS_ARC(x) ((x).nSHPType == SHPT_ARC || (x).nSHPType == SHPT_ARCZ || (x).nSHPType == SHPT_ARCM)
-#define IS_POLYGON(x) ((x).nSHPType == SHPT_POLYGON || (x).nSHPType == SHPT_POLYGONZ || (x).nSHPType == SHPT_POLYGONM)
-
-struct map_priv {
- int id;
- char *filename;
- char *charset;
- SHPHandle hSHP;
- DBFHandle hDBF;
- int nShapeType, nEntities, nFields;
- double adfMinBound[4], adfMaxBound[4];
- struct longest_match *lm;
- char *dbfmap_data;
- struct coord offset;
- enum projection pro;
- int flags;
-};
-
-
-struct map_rect_priv {
- struct map_selection *sel;
- struct map_priv *m;
- struct item item;
- int idx;
- int cidx,cidx_rewind;
- int part,part_rewind;
- int aidx;
- enum attr_type anext;
- SHPObject *psShape;
- char *str;
- char *line;
- int attr_pos;
- struct attr *attr;
-};
-
-static void
-map_destroy_shapefile(struct map_priv *m)
-{
- dbg(lvl_debug,"map_destroy_shapefile\n");
- g_free(m);
-}
-
-static void
-shapefile_coord_rewind(void *priv_data)
-{
- struct map_rect_priv *mr=priv_data;
- mr->cidx=mr->cidx_rewind;
- mr->part=mr->part_rewind;
-}
-
-static void
-shapefile_coord(struct map_rect_priv *mr, int idx, struct coord *c)
-{
- SHPObject *psShape=mr->psShape;
- struct coord cs;
- struct coord_geo g;
-
- if (!mr->m->pro) {
- g.lng=psShape->padfX[idx]+mr->m->offset.x;
- g.lat=psShape->padfY[idx]+mr->m->offset.y;
- transform_from_geo(projection_mg, &g, c);
- } else {
- cs.x=psShape->padfX[idx]+mr->m->offset.x;
- cs.y=psShape->padfY[idx]+mr->m->offset.y;
- transform_from_to(&cs, mr->m->pro, c, projection_mg);
- }
-}
-
-static int
-shapefile_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *mr=priv_data;
- int ret=0;
- int idx;
-
- SHPObject *psShape=mr->psShape;
- while (count) {
- idx=mr->cidx;
- if (idx >= psShape->nVertices)
- break;
- if (mr->part+1 < psShape->nParts && idx == psShape->panPartStart[mr->part+1]) {
- if (IS_POLYGON(*psShape)) {
- mr->part++;
- shapefile_coord(mr, 0, c);
- } else if (IS_ARC(*psShape)) {
- break;
- } else {
- dbg_assert("Neither POLYGON or ARC and has parts" == NULL);
- }
- } else {
- shapefile_coord(mr, idx, c);
- mr->cidx++;
- }
- ret++;
- c++;
- count--;
- }
- return ret;
-}
-
-static void
-shapefile_attr_rewind(void *priv_data)
-{
- struct map_rect_priv *mr=priv_data;
- mr->aidx=0;
- mr->attr_pos=0;
- if (mr->m->flags & 1)
- mr->anext=attr_none;
- else
- mr->anext=attr_debug;
-}
-
-
-struct longest_match_list_item {
- void *data;
- int match_idx_count;
- int *match_idx;
-};
-
-struct longest_match_list {
- GList *longest_match_list_items;
-};
-
-
-struct longest_match {
- GHashTable *match_hash;
- char *match_present;
- int match_present_count;
- GList *longest_match_lists;
- int longest_match_list_count;
-};
-
-static void
-longest_match_add_match(struct longest_match *lm, struct longest_match_list_item *lmi, char *match)
-{
- int idx;
- if (!(idx=(int)(long)g_hash_table_lookup(lm->match_hash, match))) {
- idx=lm->match_present_count++;
- lm->match_present=g_renew(char, lm->match_present, lm->match_present_count);
- g_hash_table_insert(lm->match_hash, g_strdup(match), (gpointer)(long)idx);
- }
- lmi->match_idx=g_renew(int, lmi->match_idx, lmi->match_idx_count+1);
- lmi->match_idx[lmi->match_idx_count++]=idx;
-}
-
-static void
-longest_match_item_destroy(struct longest_match_list_item *lmi, long flags)
-{
- if (!lmi)
- return;
- if (flags & 2) {
- g_free(lmi->data);
- }
- g_free(lmi->match_idx);
- g_free(lmi);
-}
-
-static struct longest_match_list_item *
-longest_match_item_new(struct longest_match_list *lml, void *data)
-{
- struct longest_match_list_item *ret=g_new0(struct longest_match_list_item,1);
- lml->longest_match_list_items=g_list_append(lml->longest_match_list_items, ret);
- ret->data=data;
-
- return ret;
-}
-
-static struct longest_match_list *
-longest_match_list_new(struct longest_match *lm)
-{
- struct longest_match_list *ret=g_new0(struct longest_match_list,1);
- lm->longest_match_lists=g_list_append(lm->longest_match_lists, ret);
- return ret;
-}
-
-static void
-longest_match_list_destroy(struct longest_match_list *lml, long flags)
-{
- if (!lml)
- return;
- if (flags & 1) {
- g_list_foreach(lml->longest_match_list_items, (GFunc)longest_match_item_destroy, (gpointer)flags);
- g_list_free(lml->longest_match_list_items);
- }
- g_free(lml);
-}
-
-static struct longest_match_list *
-longest_match_get_list(struct longest_match *lm, int list)
-{
- GList *l=lm->longest_match_lists;
- while (l && list > 0) {
- l=g_list_next(l);
- list++;
- }
- if (l)
- return l->data;
- return NULL;
-}
-
-static struct longest_match *
-longest_match_new(void)
-{
- struct longest_match *ret=g_new0(struct longest_match,1);
- ret->match_hash=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
- ret->match_present_count=1;
- return ret;
-}
-
-static void
-longest_match_destroy(struct longest_match *lm, long flags)
-{
- if (!lm)
- return;
- if (flags & 1) {
- g_list_foreach(lm->longest_match_lists, (GFunc)longest_match_list_destroy, (gpointer)flags);
- g_list_free(lm->longest_match_lists);
- }
- g_hash_table_destroy(lm->match_hash);
- g_free(lm->match_present);
- g_free(lm);
-}
-
-static void
-longest_match_clear(struct longest_match *lm)
-{
- if (lm->match_present)
- memset(lm->match_present, 0, lm->match_present_count);
-}
-
-static void
-longest_match_add_key_value(struct longest_match *lm, char *k, char *v)
-{
- char* buffer=g_alloca(strlen(k)+strlen(v)+2);
- int idx;
-
- strcpy(buffer,"*=*");
- if ((idx=(int)(long)g_hash_table_lookup(lm->match_hash, buffer)))
- lm->match_present[idx]=1;
-
- sprintf(buffer,"%s=*", k);
- if ((idx=(int)(long)g_hash_table_lookup(lm->match_hash, buffer)))
- lm->match_present[idx]=2;
-
- sprintf(buffer,"*=%s", v);
- if ((idx=(int)(long)g_hash_table_lookup(lm->match_hash, buffer)))
- lm->match_present[idx]=2;
-
- sprintf(buffer,"%s=%s", k, v);
- if ((idx=(int)(long)g_hash_table_lookup(lm->match_hash, buffer)))
- lm->match_present[idx]=4;
-}
-
-static int
-longest_match_list_find(struct longest_match *lm, struct longest_match_list *lml, void **list, int max_list_len)
-{
- int j,longest=0,ret=0,sum,val;
- struct longest_match_list_item *curr;
- GList *l=lml->longest_match_list_items;
-
-
- while (l) {
- sum=0;
- curr=l->data;
- for (j = 0 ; j < curr->match_idx_count ; j++) {
- val=lm->match_present[curr->match_idx[j]];
- if (val)
- sum+=val;
- else {
- sum=-1;
- break;
- }
- }
- if (sum > longest) {
- longest=sum;
- ret=0;
- }
- if (sum > 0 && sum == longest && ret < max_list_len)
- list[ret++]=curr->data;
- l=g_list_next(l);
- }
- return ret;
-}
-
-
-static void
-build_match(struct longest_match *lm, struct longest_match_list *lml, char *line)
-{
- struct longest_match_list_item *lmli;
- char *kvl=NULL,*i=NULL,*p,*kv;
- dbg(lvl_debug,"line=%s\n",line);
- kvl=line;
- p=strchr(line,'\t');
- if (p) {
- while (*p == '\t')
- *p++='\0';
- i=p;
- }
- lmli=longest_match_item_new(lml,g_strdup(i));
- while ((kv=strtok(kvl, ","))) {
- kvl=NULL;
- longest_match_add_match(lm, lmli, kv);
- }
-}
-
-static void
-build_matches(struct map_priv *m,char *matches)
-{
- char *matches2=g_strdup(matches);
- char *l=matches2,*p;
- struct longest_match_list *lml;
-
- m->lm=longest_match_new();
- lml=longest_match_list_new(m->lm);
- while (l) {
- p=strchr(l,'\n');
- if (p)
- *p++='\0';
- if (strlen(l))
- build_match(m->lm,lml,l);
- l=p;
- }
- g_free(matches2);
-}
-
-static void
-process_fields(struct map_priv *m, int id)
-{
- int i;
- char szTitle[12],*str;
- int nWidth, nDecimals;
-
- for (i = 0 ; i < m->nFields ; i++) {
-
- switch (DBFGetFieldInfo(m->hDBF, i, szTitle, &nWidth, &nDecimals )) {
- case FTString:
- str=g_strdup(DBFReadStringAttribute( m->hDBF, id, i ));
- break;
- case FTInteger:
- str=g_strdup_printf("%d",DBFReadIntegerAttribute( m->hDBF, id, i ));
- break;
- case FTDouble:
- str=g_strdup_printf("%lf",DBFReadDoubleAttribute( m->hDBF, id, i ));
- break;
- case FTInvalid:
- str=NULL;
- break;
- default:
- str=NULL;
- }
- longest_match_add_key_value(m->lm, szTitle, str);
- }
-}
-
-static int
-attr_resolve(struct map_rect_priv *mr, enum attr_type attr_type, struct attr *attr)
-{
- char name[1024];
- char value[1024];
- char szTitle[12];
- const char *str;
- char *col,*type=NULL;
- int i,len, nWidth, nDecimals;
- if (!mr->line)
- return 0;
- if (attr_type != attr_any)
- type=attr_to_name(attr_type);
- if (attr_from_line(mr->line,type,&mr->attr_pos,value,name)) {
- len=strlen(value);
- if (value[0] == '$' && value[1] == '{' && value[len-1] == '}') {
- int found=0;
- value[len-1]='\0';
- col=value+2;
- for (i = 0 ; i < mr->m->nFields ; i++) {
- if (DBFGetFieldInfo(mr->m->hDBF, i, szTitle, &nWidth, &nDecimals ) == FTString && !strcmp(szTitle,col)) {
- str=DBFReadStringAttribute( mr->m->hDBF, mr->item.id_hi, i);
- strcpy(value,str);
- found=1;
- break;
- }
- }
- if (!found)
- value[0]='\0';
- }
- if (!value[0])
- return -1;
- dbg(lvl_debug,"name=%s value=%s\n",name,value);
- attr_free(mr->attr);
- mr->attr=attr_new_from_text(name,value);
- if (mr->attr) {
- *attr=*mr->attr;
- return 1;
- }
- return -1;
- }
- return 0;
-}
-
-static int
-shapefile_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *mr=priv_data;
- struct map_priv *m=mr->m;
- char szTitle[12],*pszTypeName, *str;
- int code, ret, nWidth, nDecimals;
-
- attr->type=attr_type;
- switch (attr_type) {
- case attr_any:
- while ((code=attr_resolve(mr, attr_type, attr))) {
- if (code == 1)
- return 1;
- }
- while (mr->anext != attr_none) {
- ret=shapefile_attr_get(priv_data, mr->anext, attr);
- if (ret)
- return ret;
- }
- return 0;
- case attr_debug:
- if (mr->aidx >= m->nFields) {
- mr->anext=attr_none;
- return 0;
- }
- switch (DBFGetFieldInfo(m->hDBF, mr->aidx, szTitle, &nWidth, &nDecimals )) {
- case FTString:
- pszTypeName = "String";
- str=g_strdup(DBFReadStringAttribute( m->hDBF, mr->item.id_hi, mr->aidx ));
- break;
- case FTInteger:
- pszTypeName = "Integer";
- str=g_strdup_printf("%d",DBFReadIntegerAttribute( m->hDBF, mr->item.id_hi, mr->aidx ));
- break;
- case FTDouble:
- pszTypeName = "Double";
- str=g_strdup_printf("%lf",DBFReadDoubleAttribute( m->hDBF, mr->item.id_hi, mr->aidx ));
- break;
- case FTInvalid:
- pszTypeName = "Invalid";
- str=NULL;
- break;
- default:
- pszTypeName = "Unknown";
- str=NULL;
- }
- g_free(mr->str);
- mr->str=attr->u.str=g_strdup_printf("%s=%s(%s)",szTitle,str,pszTypeName);
- g_free(str);
- mr->aidx++;
- return 1;
- default:
- return (attr_resolve(mr, attr_type, attr) == 1);
- }
-}
-
-static struct item_methods methods_shapefile = {
- shapefile_coord_rewind,
- shapefile_coord_get,
- shapefile_attr_rewind,
- shapefile_attr_get,
-};
-
-static struct map_rect_priv *
-map_rect_new_shapefile(struct map_priv *map, struct map_selection *sel)
-{
- struct map_rect_priv *mr;
- char *dbfmapfile=g_strdup_printf("%s.dbfmap", map->filename);
- void *data;
- struct file *file;
- int size;
- int changed=0;
- if ((file=file_create(dbfmapfile, 0))) {
- size=file_size(file);
- data=file_data_read_all(file);
- if (data) {
- if (!map->dbfmap_data || size != strlen(map->dbfmap_data) || strncmp(data,map->dbfmap_data,size)) {
- g_free(map->dbfmap_data);
- map->dbfmap_data=g_malloc(size+1);
- memcpy(map->dbfmap_data, data, size);
- map->dbfmap_data[size]='\0';
- changed=1;
- }
- file_data_free(file, data);
- }
- file_destroy(file);
- } else {
- dbg(lvl_error,"Failed to open %s\n",dbfmapfile);
- if (map->dbfmap_data) {
- changed=1;
- g_free(map->dbfmap_data);
- map->dbfmap_data=NULL;
- }
- }
- dbg(lvl_debug,"%s changed %d old %p\n",dbfmapfile,changed,map->dbfmap_data);
- if (changed) {
- longest_match_destroy(map->lm,1);
- map->lm=NULL;
- if (map->dbfmap_data) {
- build_matches(map,map->dbfmap_data);
- }
- }
- dbg(lvl_debug,"map_rect_new_shapefile\n");
- mr=g_new0(struct map_rect_priv, 1);
- mr->m=map;
- mr->idx=0;
- mr->item.id_lo=0;
- mr->item.id_hi=0;
- mr->item.meth=&methods_shapefile;
- mr->item.priv_data=mr;
- g_free(dbfmapfile);
- return mr;
-}
-
-
-static void
-map_rect_destroy_shapefile(struct map_rect_priv *mr)
-{
- if (mr->psShape)
- SHPDestroyObject(mr->psShape);
- attr_free(mr->attr);
- g_free(mr->str);
- g_free(mr);
-}
-
-static struct item *
-map_rect_get_item_shapefile(struct map_rect_priv *mr)
-{
- struct map_priv *m=mr->m;
- void *lines[5];
- struct longest_match_list *lml;
- int count;
- char type[1024];
-
- if (mr->psShape && IS_ARC(*mr->psShape) && mr->part+1 < mr->psShape->nParts) {
- mr->part++;
- mr->part_rewind=mr->part;
- mr->cidx_rewind=mr->psShape->panPartStart[mr->part];
- } else {
- if (mr->idx >= m->nEntities)
- return NULL;
- mr->item.id_hi=mr->idx;
- if (mr->psShape)
- SHPDestroyObject(mr->psShape);
- mr->psShape=SHPReadObject(m->hSHP, mr->idx);
- if (mr->psShape->nVertices > 1)
- mr->item.type=type_street_unkn;
- else
- mr->item.type=type_point_unkn;
- if (m->lm) {
- longest_match_clear(m->lm);
- process_fields(m, mr->idx);
-
- lml=longest_match_get_list(m->lm, 0);
- count=longest_match_list_find(m->lm, lml, lines, sizeof(lines)/sizeof(void *));
- if (count) {
- mr->line=lines[0];
- if (attr_from_line(mr->line,"type",NULL,type,NULL)) {
- dbg(lvl_debug,"type='%s'\n", type);
- mr->item.type=item_from_name(type);
- if (mr->item.type == type_none && strcmp(type,"none"))
- dbg(lvl_error,"Warning: type '%s' unknown\n", type);
- } else {
- dbg(lvl_debug,"failed to get attribute type\n");
- }
- } else
- mr->line=NULL;
- }
- mr->idx++;
- mr->part_rewind=0;
- mr->cidx_rewind=0;
- }
- shapefile_coord_rewind(mr);
- shapefile_attr_rewind(mr);
- return &mr->item;
-}
-
-static struct item *
-map_rect_get_item_byid_shapefile(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- mr->idx=id_hi;
- while (id_lo--) {
- if (!map_rect_get_item_shapefile(mr))
- return NULL;
- }
- return map_rect_get_item_shapefile(mr);
-}
-
-static struct map_methods map_methods_shapefile = {
- projection_mg,
- "iso8859-1",
- map_destroy_shapefile,
- map_rect_new_shapefile,
- map_rect_destroy_shapefile,
- map_rect_get_item_shapefile,
- map_rect_get_item_byid_shapefile,
-};
-
-static struct map_priv *
-map_new_shapefile(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct map_priv *m;
- struct attr *data=attr_search(attrs, NULL, attr_data);
- struct attr *charset=attr_search(attrs, NULL, attr_charset);
- struct attr *projectionname=attr_search(attrs, NULL, attr_projectionname);
- struct attr *flags=attr_search(attrs, NULL, attr_flags);
- struct file_wordexp *wexp;
- char *wdata;
- char **wexp_data;
- char *shapefile,*dbffile;
- if (! data)
- return NULL;
- dbg(lvl_debug,"map_new_shapefile %s\n", data->u.str);
- wdata=g_strdup(data->u.str);
- wexp=file_wordexp_new(wdata);
- wexp_data=file_wordexp_get_array(wexp);
- *meth=map_methods_shapefile;
-
- m=g_new0(struct map_priv, 1);
- m->filename=g_strdup(wexp_data[0]);
- shapefile=g_strdup_printf("%s.shp", m->filename);
- m->hSHP=SHPOpen(shapefile, "rb" );
- SHPGetInfo( m->hSHP, &m->nEntities, &m->nShapeType, m->adfMinBound, m->adfMaxBound );
- g_free(shapefile);
- dbffile=g_strdup_printf("%s.dbf", m->filename);
- m->hDBF=DBFOpen(dbffile, "rb");
- m->nFields=DBFGetFieldCount(m->hDBF);
- g_free(dbffile);
- dbg(lvl_debug,"map_new_shapefile %s %s\n", m->filename, wdata);
- if (charset) {
- m->charset=g_strdup(charset->u.str);
- meth->charset=m->charset;
- }
- if (projectionname)
- m->pro=projection_from_name(projectionname->u.str, &m->offset);
- if (flags)
- m->flags=flags->u.num;
- file_wordexp_destroy(wexp);
- return m;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug,"shapefile: plugin_init\n");
- plugin_register_category_map("shapefile", map_new_shapefile);
-}
-
-/************************************************************************/
-/* VSI_SHP_Open() */
-/************************************************************************/
-
-static SAFile VSI_SHP_Open( const char *pszFilename, const char *pszAccess )
-
-{
- return (SAFile)fopen(pszFilename, pszAccess);
-}
-
-/************************************************************************/
-/* VSI_SHP_Read() */
-/************************************************************************/
-
-static SAOffset VSI_SHP_Read( void *p, SAOffset size, SAOffset nmemb, SAFile file )
-
-{
- return fread(p, size, nmemb, (FILE *)file);
-}
-
-/************************************************************************/
-/* VSI_SHP_Write() */
-/************************************************************************/
-
-static SAOffset VSI_SHP_Write( void *p, SAOffset size, SAOffset nmemb, SAFile file )
-
-{
- return fwrite(p, size, nmemb, (FILE *)file);
-}
-
-/************************************************************************/
-/* VSI_SHP_Seek() */
-/************************************************************************/
-
-static SAOffset VSI_SHP_Seek( SAFile file, SAOffset offset, int whence )
-
-{
- return fseek((FILE *)file, offset, whence);
-}
-
-/************************************************************************/
-/* VSI_SHP_Tell() */
-/************************************************************************/
-
-static SAOffset VSI_SHP_Tell( SAFile file )
-
-{
- return ftell((FILE *)file);
-}
-
-
-static int VSI_SHP_Flush( SAFile file )
-
-{
- return fflush((FILE *)file);
-}
-
-/************************************************************************/
-/* VSI_SHP_Close() */
-/************************************************************************/
-
-static int VSI_SHP_Close( SAFile file )
-
-{
- return fclose((FILE *)file);
-}
-
-/************************************************************************/
-/* SADError() */
-/************************************************************************/
-
-static void VSI_SHP_Error( const char *message )
-
-{
- dbg(lvl_error,"error:%s\n", message);
-}
-
-/************************************************************************/
-/* VSI_SHP_Remove() */
-/************************************************************************/
-
-static int VSI_SHP_Remove( const char *pszFilename )
-
-{
- return unlink(pszFilename);
-}
-
-/************************************************************************/
-/* SASetupDefaultHooks() */
-/************************************************************************/
-
-void SASetupDefaultHooks( SAHooks *psHooks )
-
-{
- psHooks->FOpen = VSI_SHP_Open;
- psHooks->FRead = VSI_SHP_Read;
- psHooks->FWrite = VSI_SHP_Write;
- psHooks->FSeek = VSI_SHP_Seek;
- psHooks->FTell = VSI_SHP_Tell;
- psHooks->FFlush = VSI_SHP_Flush;
- psHooks->FClose = VSI_SHP_Close;
-
- psHooks->Remove = VSI_SHP_Remove;
- psHooks->Atof = atof;
-
- psHooks->Error = VSI_SHP_Error;
-}
-
-
diff --git a/navit/map/textfile/CMakeLists.txt b/navit/map/textfile/CMakeLists.txt
deleted file mode 100644
index 00ef8211c..000000000
--- a/navit/map/textfile/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(map_textfile textfile.c)
diff --git a/navit/map/textfile/textfile.c b/navit/map/textfile/textfile.c
deleted file mode 100644
index 43be12368..000000000
--- a/navit/map/textfile/textfile.c
+++ /dev/null
@@ -1,399 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <math.h>
-#include "config.h"
-#include "debug.h"
-#include "plugin.h"
-#include "projection.h"
-#include "item.h"
-#include "map.h"
-#include "maptype.h"
-#include "attr.h"
-#include "transform.h"
-#include "file.h"
-
-#include "textfile.h"
-
-static int map_id;
-
-static void
-remove_comment_line(char* line){
- if (line[0]==TEXTFILE_COMMENT_CHAR){
- line='\0';
- }
-}
-
-static void
-get_line(struct map_rect_priv *mr)
-{
- if(mr->f) {
- if (!mr->m->is_pipe)
- mr->pos=ftell(mr->f);
- else
- mr->pos+=mr->lastlen;
- fgets(mr->line, TEXTFILE_LINE_SIZE, mr->f);
- dbg(lvl_debug,"read textfile line: %s\n", mr->line);
- remove_comment_line(mr->line);
- mr->lastlen=strlen(mr->line)+1;
- if (strlen(mr->line) >= TEXTFILE_LINE_SIZE-1)
- dbg(lvl_error, "line too long: %s\n", mr->line);
- }
-}
-
-static void
-map_destroy_textfile(struct map_priv *m)
-{
- g_free(m->filename);
- if(m->charset) {
- g_free(m->charset);
- }
- g_free(m);
-}
-
-static void
-textfile_coord_rewind(void *priv_data)
-{
-}
-
-static int
-parse_line(struct map_rect_priv *mr, int attr)
-{
- int pos;
-
- pos=coord_parse(mr->line, projection_mg, &mr->c);
- if (pos < strlen(mr->line) && attr) {
- strcpy(mr->attrs, mr->line+pos);
- }
- return pos;
-}
-
-static int
-textfile_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *mr=priv_data;
- int ret=0;
- dbg(lvl_warning,"enter, count: %d\n",count);
- while (count--) {
- if (mr->f && !feof(mr->f) && (!mr->item.id_hi || !mr->eoc) && parse_line(mr, mr->item.id_hi)) {
- if (c){
- *c=mr->c;
- dbg(lvl_debug,"c=0x%x,0x%x\n", c->x, c->y);
- c++;
- }
- ret++;
- get_line(mr);
- if (mr->item.id_hi)
- mr->eoc=1;
- } else {
- mr->more=0;
- break;
- }
- }
- return ret;
-}
-
-static void
-textfile_attr_rewind(void *priv_data)
-{
- struct map_rect_priv *mr=priv_data;
- mr->attr_pos=0;
- mr->attr_last=attr_none;
-}
-
-static void
-textfile_encode_attr(char *attr_val, enum attr_type attr_type, struct attr *attr)
-{
- if (attr_type >= attr_type_int_begin && attr_type <= attr_type_int_end)
- attr->u.num=atoi(attr_val);
- else
- attr->u.str=attr_val;
-}
-
-static int
-textfile_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *mr=priv_data;
- char *str=NULL;
- dbg(lvl_debug,"mr=%p attrs='%s' ", mr, mr->attrs);
- if (attr_type != mr->attr_last) {
- dbg(lvl_debug,"reset attr_pos\n");
- mr->attr_pos=0;
- mr->attr_last=attr_type;
- }
- if (attr_type == attr_any) {
- dbg(lvl_debug,"attr_any");
- if (attr_from_line(mr->attrs,NULL,&mr->attr_pos,mr->attr, mr->attr_name)) {
- attr_type=attr_from_name(mr->attr_name);
- dbg(lvl_debug,"found attr '%s' 0x%x\n", mr->attr_name, attr_type);
- attr->type=attr_type;
- textfile_encode_attr(mr->attr, attr_type, attr);
- return 1;
- }
- } else {
- str=attr_to_name(attr_type);
- dbg(lvl_debug,"attr='%s' ",str);
- if (attr_from_line(mr->attrs,str,&mr->attr_pos,mr->attr, NULL)) {
- textfile_encode_attr(mr->attr, attr_type, attr);
- dbg(lvl_debug,"found\n");
- return 1;
- }
- }
- dbg(lvl_debug,"not found\n");
- return 0;
-}
-
-static struct item_methods methods_textfile = {
- textfile_coord_rewind,
- textfile_coord_get,
- textfile_attr_rewind,
- textfile_attr_get,
-};
-
-static struct map_rect_priv *
-map_rect_new_textfile(struct map_priv *map, struct map_selection *sel)
-{
- struct map_rect_priv *mr;
-
- dbg(lvl_debug,"enter\n");
- mr=g_new0(struct map_rect_priv, 1);
- mr->m=map;
- mr->sel=sel;
- if (map->flags & 1)
- mr->item.id_hi=1;
- else
- mr->item.id_hi=0;
- mr->item.id_lo=0;
- mr->item.meth=&methods_textfile;
- mr->item.priv_data=mr;
- if (map->is_pipe) {
-#ifdef HAVE_POPEN
- char *oargs,*args=g_strdup(map->filename),*sep=" ";
- enum layer_type lay;
- g_free(mr->args);
- while (sel) {
- oargs=args;
- args=g_strdup_printf("%s 0x%x 0x%x 0x%x 0x%x", oargs, sel->u.c_rect.lu.x, sel->u.c_rect.lu.y, sel->u.c_rect.rl.x, sel->u.c_rect.rl.y);
- g_free(oargs);
- for (lay=layer_town ; lay < layer_end ; lay++) {
- oargs=args;
- args=g_strdup_printf("%s%s%d", oargs, sep, sel->order);
- g_free(oargs);
- sep=",";
- }
- sel=sel->next;
- }
- dbg(lvl_debug,"popen args %s\n", args);
- mr->args=args;
- mr->f=popen(mr->args, "r");
- mr->pos=0;
- mr->lastlen=0;
-#else
- dbg(lvl_error,"unable to work with pipes %s\n",map->filename);
-#endif
- } else {
- mr->f=fopen(map->filename, "r");
- }
- if(!mr->f) {
- if (!(errno == ENOENT && map->no_warning_if_map_file_missing)) {
- dbg(lvl_error, "error opening textfile %s: %s\n", map->filename, strerror(errno));
- }
- }
- get_line(mr);
- return mr;
-}
-
-
-static void
-map_rect_destroy_textfile(struct map_rect_priv *mr)
-{
- if (mr->f) {
- if (mr->m->is_pipe) {
-#ifdef HAVE_POPEN
- pclose(mr->f);
-#endif
- }
- else {
- fclose(mr->f);
- }
- }
- g_free(mr);
-}
-
-static struct item *
-map_rect_get_item_textfile(struct map_rect_priv *mr)
-{
- char *p,type[TEXTFILE_LINE_SIZE];
- dbg(lvl_debug,"map_rect_get_item_textfile id_hi=%d line=%s", mr->item.id_hi, mr->line);
- if (!mr->f) {
- return NULL;
- }
- while (mr->more) {
- struct coord c;
- textfile_coord_get(mr, &c, 1);
- }
- for(;;) {
- if (feof(mr->f)) {
- dbg(lvl_debug,"map_rect_get_item_textfile: eof %d\n",mr->item.id_hi);
- if (mr->m->flags & 1) {
- if (!mr->item.id_hi)
- return NULL;
- mr->item.id_hi=0;
- } else {
- if (mr->item.id_hi)
- return NULL;
- mr->item.id_hi=1;
- }
- if (mr->m->is_pipe) {
-#ifdef HAVE_POPEN
- pclose(mr->f);
- mr->f=popen(mr->args, "r");
- mr->pos=0;
- mr->lastlen=0;
-#endif
- } else {
- fseek(mr->f, 0, SEEK_SET);
- clearerr(mr->f);
- }
- get_line(mr);
- }
- if ((p=strchr(mr->line,'\n')))
- *p='\0';
- if (mr->item.id_hi) {
- mr->attrs[0]='\0';
- if (!parse_line(mr, 1)) {
- get_line(mr);
- continue;
- }
- dbg(lvl_debug,"map_rect_get_item_textfile: point found\n");
- mr->eoc=0;
- mr->item.id_lo=mr->pos;
- } else {
- if (parse_line(mr, 1)) {
- get_line(mr);
- continue;
- }
- dbg(lvl_debug,"map_rect_get_item_textfile: line found\n");
- if (! mr->line[0]) {
- get_line(mr);
- continue;
- }
- mr->item.id_lo=mr->pos;
- strcpy(mr->attrs, mr->line);
- get_line(mr);
- dbg(lvl_debug,"mr=%p attrs=%s\n", mr, mr->attrs);
- }
- dbg(lvl_debug,"get_attrs %s\n", mr->attrs);
- if (attr_from_line(mr->attrs,"type",NULL,type,NULL)) {
- dbg(lvl_debug,"type='%s'\n", type);
- mr->item.type=item_from_name(type);
- if (mr->item.type == type_none)
- dbg(lvl_error, "Warning: type '%s' unknown\n", type);
- } else {
- get_line(mr);
- continue;
- }
- mr->attr_last=attr_none;
- mr->more=1;
- dbg(lvl_debug,"return attr='%s'\n", mr->attrs);
- return &mr->item;
- }
-}
-
-static struct item *
-map_rect_get_item_byid_textfile(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- if (mr->m->is_pipe) {
-#ifndef _MSC_VER
- pclose(mr->f);
- mr->f=popen(mr->args, "r");
- mr->pos=0;
- mr->lastlen=0;
-#endif /* _MSC_VER */
- } else
- fseek(mr->f, id_lo, SEEK_SET);
- get_line(mr);
- mr->item.id_hi=id_hi;
- return map_rect_get_item_textfile(mr);
-}
-
-static struct map_methods map_methods_textfile = {
- projection_mg,
- "utf-8",
- map_destroy_textfile,
- map_rect_new_textfile,
- map_rect_destroy_textfile,
- map_rect_get_item_textfile,
- map_rect_get_item_byid_textfile,
-};
-
-static struct map_priv *
-map_new_textfile(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct map_priv *m;
- struct attr *data=attr_search(attrs, NULL, attr_data);
- struct attr *charset=attr_search(attrs, NULL, attr_charset);
- struct attr *flags=attr_search(attrs, NULL, attr_flags);
- struct attr *no_warn=attr_search(attrs, NULL, attr_no_warning_if_map_file_missing);
- struct file_wordexp *wexp;
- int len,is_pipe=0;
- char *wdata;
- char **wexp_data;
- if (! data)
- return NULL;
- dbg(lvl_debug,"map_new_textfile %s\n", data->u.str);
- wdata=g_strdup(data->u.str);
- len=strlen(wdata);
- if (len && wdata[len-1] == '|') {
- wdata[len-1]='\0';
- is_pipe=1;
- }
- wexp=file_wordexp_new(wdata);
- wexp_data=file_wordexp_get_array(wexp);
- *meth=map_methods_textfile;
-
- m=g_new0(struct map_priv, 1);
- m->id=++map_id;
- m->filename=g_strdup(wexp_data[0]);
- m->is_pipe=is_pipe;
- m->no_warning_if_map_file_missing=(no_warn!=NULL) && (no_warn->u.num);
- if (flags)
- m->flags=flags->u.num;
- dbg(lvl_debug,"map_new_textfile %s %s\n", m->filename, wdata);
- if (charset) {
- m->charset=g_strdup(charset->u.str);
- meth->charset=m->charset;
- }
- file_wordexp_destroy(wexp);
- g_free(wdata);
- return m;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug,"textfile: plugin_init\n");
- plugin_register_category_map("textfile", map_new_textfile);
-}
-
diff --git a/navit/map/textfile/textfile.h b/navit/map/textfile/textfile.h
deleted file mode 100644
index 8cfa69737..000000000
--- a/navit/map/textfile/textfile.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * 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 <stdio.h>
-#include "attr.h"
-#include "coord.h"
-
-#define TEXTFILE_COMMENT_CHAR '#'
-
-struct map_priv {
- int id;
- char *filename;
- char *charset;
- int is_pipe;
- int no_warning_if_map_file_missing;
- int flags;
-};
-
-#define TEXTFILE_LINE_SIZE 512
-
-struct map_rect_priv {
- struct map_selection *sel;
-
- FILE *f;
- long pos;
- char line[TEXTFILE_LINE_SIZE];
- int attr_pos;
- enum attr_type attr_last;
- char attrs[TEXTFILE_LINE_SIZE];
- char attr[TEXTFILE_LINE_SIZE];
- char attr_name[TEXTFILE_LINE_SIZE];
- struct coord c;
- int eoc;
- int more;
- struct map_priv *m;
- struct item item;
- char *args;
- int lastlen;
-};
-
diff --git a/navit/map_data.h b/navit/map_data.h
deleted file mode 100644
index 656bd80d6..000000000
--- a/navit/map_data.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_MAP_DATA_H
-#define NAVIT_MAP_DATA_H
-
-enum file_index {
- file_border_ply=0,
- file_bridge_ply,
- file_height_ply,
- file_other_ply,
- file_rail_ply,
- file_sea_ply,
- file_street_bti,
- file_street_str,
- file_strname_stn,
- file_town_twn,
- file_tunnel_ply,
- file_water_ply,
- file_woodland_ply,
- file_end
-};
-
-struct map_data {
- struct file *file[file_end];
- struct map_data *next;
-};
-
-struct map_data *load_maps(char *map);
-
-struct transformation;
-struct block_info;
-
-void map_data_foreach(struct map_data *mdata, int file, struct transformation *t, int limit,
- void(*func)(struct block_info *, unsigned char *, unsigned char *, void *), void *data);
-
-#endif
-
diff --git a/navit/maps.c b/navit/maps.c
deleted file mode 100644
index 628713dd2..000000000
--- a/navit/maps.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2012 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 "item.h"
-#include "debug.h"
-#include "file.h"
-#include "map.h"
-#include "mapset.h"
-#include "xmlconfig.h"
-
-struct maps;
-
-struct maps *
-maps_new(struct attr *parent, struct attr **attrs)
-{
- struct attr *data,**attrs_dup;
- if (!parent) {
- dbg(lvl_error,"No parent\n");
- return NULL;
- }
- if (parent->type != attr_mapset) {
- dbg(lvl_error,"Parent must be mapset\n");
- return NULL;
- }
- dbg(lvl_debug,"enter\n");
- attrs_dup=attr_list_dup(attrs);
- data=attr_search(attrs_dup, NULL, attr_data);
- if (data) {
- struct file_wordexp *wexp=file_wordexp_new(data->u.str);
- int i,count=file_wordexp_get_count(wexp);
- char **array=file_wordexp_get_array(wexp);
- struct attr *name;
- struct attr *name_provided = attr_search(attrs_dup, NULL, attr_name);
-
- // if no name was provided, fill the name with the location
- if (!name_provided) {
- struct attr name_tmp;
- name_tmp.type = attr_name;
- name_tmp.u.str="NULL";
- attrs_dup=attr_generic_add_attr(attrs_dup, &name_tmp);
- name = attr_search(attrs_dup, NULL, attr_name);
- }
-
- for (i = 0 ; i < count ; i++) {
- struct attr map;
- g_free(data->u.str);
- data->u.str=g_strdup(array[i]);
-
- if (!name_provided) {
- g_free(name->u.str);
- name->u.str=g_strdup(array[i]);
- }
-
- map.type=attr_map;
- map.u.map=map_new(parent, attrs_dup);
-
- if (map.u.map) {
- mapset_add_attr(parent->u.mapset, &map);
- navit_object_unref(map.u.navit_object);
- }
-
- }
- file_wordexp_destroy(wexp);
- } else {
- dbg(lvl_error,"no data attribute\n");
- }
- attr_list_free(attrs_dup);
- return NULL;
-}
-
-struct object_func maps_func = {
- attr_maps,
- (object_func_new)maps_new,
- (object_func_get_attr)NULL,
- (object_func_iter_new)NULL,
- (object_func_iter_destroy)NULL,
- (object_func_set_attr)NULL,
- (object_func_add_attr)NULL,
- (object_func_remove_attr)NULL,
- (object_func_init)NULL,
- (object_func_destroy)NULL,
- (object_func_dup)NULL,
- (object_func_ref)NULL,
- (object_func_unref)NULL,
-};
diff --git a/navit/maps/CMakeLists.txt b/navit/maps/CMakeLists.txt
deleted file mode 100644
index c3f8ae7c4..000000000
--- a/navit/maps/CMakeLists.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-if(SAMPLE_MAP)
- set(SAMPLE_MAP_NAME osm_bbox_11.3,47.9,11.7,48.2)
- set(maptool_args "--attr-debug-level=5")
-
- GET_TARGET_PROPERTY(MAPTOOL_PATH maptool LOCATION)
- add_custom_target(sample_map ALL DEPENDS ${SAMPLE_MAP_NAME}.xml)
- add_custom_command (
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.xml
- COMMAND ${CMAKE_COMMAND} -D TYPE=binfile -D DATA=${SAMPLE_MAP_NAME}.bin
- -D DST=${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.xml
- -P ${PROJECT_SOURCE_DIR}/cmake/navit_writemapxml.cmake
- VERBATIM
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.bin
- )
- if(DOWNLOAD_SAMPLE_MAP)
- add_custom_command (
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.bin
- COMMAND ${CMAKE_COMMAND}
- -D URL=http://www.navit-project.org/maps/${SAMPLE_MAP_NAME}.bin
- -D DST=${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.bin
- -P ${PROJECT_SOURCE_DIR}/cmake/navit_download.cmake
- VERBATIM
- )
- else()
- add_custom_command (
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.bin
- COMMAND bzcat ${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.osm.bz2
- | ${MAPTOOL_PATH} ${maptool_args} ${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.bin
- VERBATIM
- DEPENDS maptool ${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.osm.bz2
- )
- add_custom_command (
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.osm.bz2
- COMMAND ${CMAKE_COMMAND}
- -D URL=http://www.navit-project.org/maps/${SAMPLE_MAP_NAME}.osm.bz2
- -D DST=${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.osm.bz2
- -P ${PROJECT_SOURCE_DIR}/cmake/navit_download.cmake
- VERBATIM
- )
- endif()
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SAMPLE_MAP_NAME}.bin
- DESTINATION ${SHARE_DIR}/maps
- PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
-endif()
diff --git a/navit/mapset.c b/navit/mapset.c
deleted file mode 100644
index 6c3d0b5d1..000000000
--- a/navit/mapset.c
+++ /dev/null
@@ -1,419 +0,0 @@
-/**
- * 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.
- */
-
-/** @file
- *
- * @brief Contains code used for loading more than one map
- *
- * The code in this file introduces "mapsets", which are collections of several maps.
- * This enables navit to operate on more than one map at once. See map.c / map.h to learn
- * how maps are handled.
- */
-
-#include <string.h>
-#include <glib.h>
-#include <glib/gprintf.h>
-#include "debug.h"
-#include "item.h"
-#include "mapset.h"
-#include "projection.h"
-#include "map.h"
-#include "xmlconfig.h"
-
-/**
- * @brief A mapset
- *
- * This structure holds a complete mapset
- */
-struct mapset {
- NAVIT_OBJECT
- GList *maps; /**< Linked list of all the maps in the mapset */
-};
-
-struct attr_iter {
- GList *last;
-};
-
-/**
- * @brief Creates a new, empty mapset
- *
- * @return The new mapset
- */
-struct mapset *mapset_new(struct attr *parent, struct attr **attrs)
-{
- struct mapset *ms;
-
- ms=g_new0(struct mapset, 1);
- ms->func=&mapset_func;
- navit_object_ref((struct navit_object *)ms);
- ms->attrs=attr_list_dup(attrs);
-
- return ms;
-}
-
-struct mapset *mapset_dup(struct mapset *ms)
-{
- struct mapset *ret=mapset_new(NULL, ms->attrs);
- ret->maps=g_list_copy(ms->maps);
- return ret;
-}
-
-
-struct attr_iter *
-mapset_attr_iter_new(void)
-{
- return g_new0(struct attr_iter, 1);
-}
-
-void
-mapset_attr_iter_destroy(struct attr_iter *iter)
-{
- g_free(iter);
-}
-
-/**
- * @brief Adds a map to a mapset
- *
- * @param ms The mapset to add the map to
- * @param m The map to be added
- */
-int
-mapset_add_attr(struct mapset *ms, struct attr *attr)
-{
- switch (attr->type) {
- case attr_map:
- ms->attrs=attr_generic_add_attr(ms->attrs,attr);
- ms->maps=g_list_append(ms->maps, attr->u.map);
- return 1;
- default:
- return 0;
- }
-}
-
-int
-mapset_remove_attr(struct mapset *ms, struct attr *attr)
-{
- switch (attr->type) {
- case attr_map:
- ms->attrs=attr_generic_remove_attr(ms->attrs,attr);
- ms->maps=g_list_remove(ms->maps, attr->u.map);
- return 1;
- default:
- return 0;
- }
-}
-
-int
-mapset_get_attr(struct mapset *ms, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- GList *map;
- map=ms->maps;
- attr->type=type;
- switch (type) {
- case attr_map:
- while (map) {
- if (!iter || iter->last == g_list_previous(map)) {
- attr->u.map=map->data;
- if (iter)
- iter->last=map;
- return 1;
- }
- map=g_list_next(map);
- }
- break;
- default:
- break;
- }
- return 0;
-}
-
-/**
- * @brief Destroys a mapset.
- *
- * This destroys a mapset. Please note that it does not touch the contained maps
- * in any way.
- *
- * @param ms The mapset to be destroyed
- */
-void mapset_destroy(struct mapset *ms)
-{
- g_list_free(ms->maps);
- attr_list_free(ms->attrs);
- g_free(ms);
-}
-
-/**
- * @brief Handle for a mapset in use
- *
- * This struct is used for a mapset that is in use. With this it is possible to iterate
- * all maps in a mapset.
- */
-struct mapset_handle {
- GList *l; /**< Pointer to the current (next) map */
-};
-
-/**
- * @brief Returns a new handle for a mapset
- *
- * This returns a new handle for an existing mapset. The new handle points to the first
- * map in the set.
- *
- * @param ms The mapset to get a handle of
- * @return The new mapset handle
- */
-struct mapset_handle *
-mapset_open(struct mapset *ms)
-{
- struct mapset_handle *ret=NULL;
- if(ms)
- {
- ret=g_new(struct mapset_handle, 1);
- ret->l=ms->maps;
- }
-
- return ret;
-}
-
-/**
- * @brief Gets the next map from a mapset handle
- *
- * If you set active to true, this function will not return any maps that
- * have the attr_active attribute associated with them and set to false.
- *
- * @param msh The mapset handle to get the next map of
- * @param active Set to true to only get active maps (See description)
- * @return The next map
- */
-struct map * mapset_next(struct mapset_handle *msh, int active)
-{
- struct map *ret;
- struct attr active_attr;
-
- for (;;) {
- if (!msh || !msh->l)
- return NULL;
- ret=msh->l->data;
- msh->l=g_list_next(msh->l);
- if (!active)
- return ret;
- if (active == 2 && map_get_attr(ret, attr_route_active, &active_attr, NULL)) {
- if (active_attr.u.num)
- return ret;
- else
- continue;
- }
- if (active == 3 && map_get_attr(ret, attr_search_active, &active_attr, NULL)) {
- if (active_attr.u.num)
- return ret;
- else
- continue;
- }
- if (!map_get_attr(ret, attr_active, &active_attr, NULL))
- return ret;
- if (active_attr.u.num)
- return ret;
- }
-}
-
-/**
- * @brief Gets a map from the mapset by name
- *
- * @param ms The map
- * @param map_name the map name used by the search
- * @return The next map
- */
-struct map *
-mapset_get_map_by_name(struct mapset *ms, const char*map_name)
-{
- struct mapset_handle*msh;
- struct map*curr_map;
- struct attr map_attr;
- if( !ms || !map_name ) {
- return NULL;
- }
- msh=mapset_open(ms);
- while ((curr_map=mapset_next(msh, 1))) {
- //get map name
- if(map_get_attr(curr_map,attr_name, &map_attr,NULL)) {
- if( ! strcmp(map_attr.u.str, map_name)) {
- break;
- }
- }
- }
- mapset_close(msh);
- return curr_map;
-}
-
-/**
- * @brief Closes a mapset handle after it is no longer used
- *
- * @param msh Mapset handle to be closed
- */
-void
-mapset_close(struct mapset_handle *msh)
-{
- g_free(msh);
-}
-
-/**
- * @brief Holds information about a search in a mapset
- *
- * This struct holds information about a search (e.g. for a street) in a mapset.
- *
- * @sa For a more detailed description see the documentation of mapset_search_new().
- */
-struct mapset_search {
- GList *map; /**< The list of maps to be searched within */
- struct map_search *ms; /**< A map search struct for the map currently active */
- struct item *item; /**< "Superior" item. */
- struct attr *search_attr; /**< Attribute to be searched for. */
- int partial; /**< Indicates if one would like to have partial matches */
- struct mapset *mapset; /**< reference to current mapset. Set to NULL when all maps are searched */
-};
-
-/**
- * @brief Starts a search on a mapset
- *
- * This function starts a search on a mapset. What attributes one can search for depends on the
- * map plugin. See the description of map_search_new() in map.c for details.
- *
- * If you enable partial matches bear in mind that the search matches only the begin of the
- * strings - a search for a street named "street" would match to "streetfoo", but not to
- * "somestreet". Search is case insensitive.
- *
- * The item passed to this function specifies a "superior item" to "search within" - e.g. a town
- * in which we want to search for a street, or a country in which to search for a town.
- *
- * @param ms The mapset that should be searched
- * @param item Specifies a superior item to "search within" (see description)
- * @param search_attr Attribute specifying what to search for. See description.
- * @param partial Set this to true to also have partial matches. See description.
- * @return A new mapset search struct for this search
- */
-struct mapset_search *
-mapset_search_new(struct mapset *ms, struct item *item, struct attr *search_attr, int partial)
-{
- struct mapset_search *this;
- dbg(lvl_debug,"enter(%p,%p,%p,%d)\n", ms, item, search_attr, partial);
- this=g_new0(struct mapset_search,1);
- if(this != NULL && ms!=NULL )
- {
- this->mapset=ms;
- this->item=item;
- this->search_attr=search_attr;
- this->partial=partial;
- return this;
- }
- else
- {
- return NULL;
- }
-}
-
-/**
- * @brief Returns the next found item from a mapset search
- *
- * This function returns the next item from a mapset search or NULL if there are no more items found.
- * It automatically iterates through all the maps in the mapset. Please note that maps which have the
- * attr_active attribute associated with them and set to false are not searched.
- *
- * @param this The mapset search to return an item from
- * @return The next found item or NULL if there are no more items found
- */
-struct item *
-mapset_search_get_item(struct mapset_search *this_)
-{
- struct item *ret=NULL;
- struct attr active_attr;
- int country_search=this_->search_attr->type >= attr_country_all && this_->search_attr->type <= attr_country_name;
-
- while ((this_) && (this_->mapset) && (!this_->ms || !(ret=map_search_get_item(this_->ms)))) { /* The current map has no more items to be returned */
-
- /* Use only the first map from the mapset to search for country codes. */
- if (this_->map && country_search)
- break;
-
- for (;;) {
- if (!this_->map)
- this_->map=this_->mapset->maps;
- else
- this_->map=g_list_next(this_->map);
-
- if (!this_->map) {
- /* No more maps left, mark this mapset_search as finished */
- this_->mapset=NULL;
- break;
- }
-
- /* Any map can be used for country search, regardless of it's attr_active value */
- if(country_search)
- break;
-
- if (map_get_attr(this_->map->data, attr_search_active, &active_attr, NULL)) {
- if (!active_attr.u.num)
- continue;
- }
- if (!map_get_attr(this_->map->data, attr_active, &active_attr, NULL))
- break;
- if (active_attr.u.num)
- break;
- }
- if(this_->ms) {
- map_search_destroy(this_->ms);
- this_->ms=NULL;
- }
- if (! this_->map)
- break;
- this_->ms=map_search_new(this_->map->data, this_->item, this_->search_attr, this_->partial);
- }
- return ret;
-}
-
-/**
- * @brief Destroys a mapset search
- *
- * @param this The mapset search to be destroyed
- */
-void
-mapset_search_destroy(struct mapset_search *this_)
-{
- if (this_) {
- map_search_destroy(this_->ms);
- g_free(this_);
- }
-}
-
-struct object_func mapset_func = {
- attr_mapset,
- (object_func_new)mapset_new,
- (object_func_get_attr)mapset_get_attr,
- (object_func_iter_new)mapset_attr_iter_new,
- (object_func_iter_destroy)mapset_attr_iter_destroy,
- (object_func_set_attr)NULL,
- (object_func_add_attr)mapset_add_attr,
- (object_func_remove_attr)mapset_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)mapset_destroy,
- (object_func_dup)mapset_dup,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
-
-
-
diff --git a/navit/mapset.h b/navit/mapset.h
deleted file mode 100644
index 6f8917d04..000000000
--- a/navit/mapset.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_MAPSET_H
-#define NAVIT_MAPSET_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* prototypes */
-enum attr_type;
-struct attr;
-struct attr_iter;
-struct item;
-struct map;
-struct mapset;
-struct mapset_handle;
-struct mapset_search;
-struct mapset *mapset_new(struct attr *parent, struct attr **attrs);
-struct mapset *mapset_dup(struct mapset *ms);
-struct attr_iter *mapset_attr_iter_new(void);
-void mapset_attr_iter_destroy(struct attr_iter *iter);
-int mapset_add_attr(struct mapset *ms, struct attr *attr);
-int mapset_remove_attr(struct mapset *ms, struct attr *attr);
-int mapset_get_attr(struct mapset *ms, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-void mapset_destroy(struct mapset *ms);
-struct map *mapset_get_map_by_name(struct mapset *ms, const char*map_name);
-struct mapset_handle *mapset_open(struct mapset *ms);
-struct map *mapset_next(struct mapset_handle *msh, int active);
-void mapset_close(struct mapset_handle *msh);
-struct mapset_search *mapset_search_new(struct mapset *ms, struct item *item, struct attr *search_attr, int partial);
-struct item *mapset_search_get_item(struct mapset_search *this_);
-void mapset_search_destroy(struct mapset_search *this_);
-struct mapset * mapset_ref(struct mapset* m);
-void mapset_unref(struct mapset *m);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/navit/maptool/CMakeLists.txt b/navit/maptool/CMakeLists.txt
deleted file mode 100644
index 0c006daee..000000000
--- a/navit/maptool/CMakeLists.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-
-if(BUILD_MAPTOOL)
- add_definitions( -DMODULE=maptool ${NAVIT_COMPILE_FLAGS})
- include_directories(${CMAKE_CURRENT_SOURCE_DIR})
- SET(MAPTOOL_SOURCE boundaries.c buffer.c ch.c coastline.c itembin.c itembin_buffer.c misc.c osm.c osm_o5m.c osm_relations.c sourcesink.c tempfile.c tile.c zip.c osm_xml.c)
- if(NOT MSVC)
- SET(MAPTOOL_SOURCE ${MAPTOOL_SOURCE} osm_protobuf.c osm_protobufdb.c generated-code/fileformat.pb-c.c generated-code/osmformat.pb-c.c google/protobuf-c/protobuf-c.c)
- endif(NOT MSVC)
- add_library (maptool_core ${MAPTOOL_SOURCE})
- add_executable (maptool maptool.c)
- if(NOT MSVC)
- SET(NAVIT_LIBS ${NAVIT_LIBS} m)
- endif(NOT MSVC)
- target_link_libraries(maptool maptool_core ${NAVIT_LIBNAME} ${NAVIT_LIBS})
-
- install(TARGETS maptool
- DESTINATION ${BIN_DIR}
- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
-
-endif()
diff --git a/navit/maptool/boundaries.c b/navit/maptool/boundaries.c
deleted file mode 100644
index 605b6fb7b..000000000
--- a/navit/maptool/boundaries.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <stdio.h>
-#include <string.h>
-#include "maptool.h"
-#ifdef _MSC_VER
-#define strcasecmp _stricmp
-#endif
-
-char *
-osm_tag_value(struct item_bin *ib, char *key)
-{
- char *tag=NULL;
- int len=strlen(key);
- while ((tag=item_bin_get_attr(ib, attr_osm_tag, tag))) {
- if (!strncmp(tag,key,len) && tag[len] == '=')
- return tag+len+1;
- }
- return NULL;
-}
-
-#if 0
-static char *
-osm_tag_name(struct item_bin *ib)
-{
- return osm_tag_value(ib, "name");
-}
-#endif
-
-osmid
-boundary_relid(struct boundary *b)
-{
- long long *id;
- if (!b)
- return 0;
- if (!b->ib)
- return 0;
- id=item_bin_get_attr(b->ib, attr_osm_relationid, NULL);
- if (id)
- return *id;
- return 0;
-}
-static void
-process_boundaries_member(void *func_priv, void *relation_priv, struct item_bin *member, void *member_priv)
-{
- struct boundary *b=relation_priv;
- enum geom_poly_segment_type role=(long)member_priv;
- int *dup;
- dup=item_bin_get_attr(member,attr_duplicate,NULL);
- if(!dup || *dup==0)
- b->segments=g_list_prepend(b->segments,item_bin_to_poly_segment(member, role));
-}
-
-static GList *
-process_boundaries_setup(FILE *boundaries, struct relations *relations)
-{
- struct item_bin *ib;
- GList *boundaries_list=NULL;
- struct relations_func *relations_func;
-
- relations_func=relations_func_new(process_boundaries_member, NULL);
- while ((ib=read_item(boundaries))) {
- char *member=NULL;
- struct boundary *boundary=g_new0(struct boundary, 1);
- char *admin_level=osm_tag_value(ib, "admin_level");
- char *iso=osm_tag_value(ib, "ISO3166-1");
- int has_subrelations=0;
- int has_outer_ways=0;
-
- processed_relations++;
-
- if(!iso)
- iso=osm_tag_value(ib, "iso3166-1:alpha2");
-
- if (admin_level && !strcmp(admin_level, "2")) {
- if(!iso) {
- char *int_name=osm_tag_value(ib,"int_name");
- if(int_name && !strcmp(int_name,"France"))
- iso="FR";
- }
- if (iso) {
- struct country_table *country=country_from_iso2(iso);
- if (!country)
- osm_warning("relation",item_bin_get_relationid(ib),0,"Country Boundary contains unknown ISO3166-1 value '%s'\n",iso);
- else {
- boundary->iso2=g_strdup(iso);
- osm_info("relation",item_bin_get_relationid(ib),0,"Country Boundary for '%s'\n",iso);
- }
- boundary->country=country;
- } else
- osm_warning("relation",item_bin_get_relationid(ib),0,"Country Boundary doesn't contain an ISO3166-1 tag\n");
- }
- while ((member=item_bin_get_attr(ib, attr_osm_member, member))) {
- long long osm_id;
- int read=0;
- enum relation_member_type member_type;
- int member_type_numeric;
- char *rolestr;
-
- if (sscanf(member,RELATION_MEMBER_PARSE_FORMAT,&member_type_numeric,&osm_id,&read) < 2)
- continue;
-
- member_type=(enum relation_member_type)member_type_numeric;
- rolestr=member+read;
-
- if(member_type==rel_member_node) {
- if(!strcmp(rolestr,"admin_centre") || !strcmp(rolestr,"admin_center"))
- boundary->admin_centre=osm_id;
- }
- if(member_type==rel_member_way) {
- enum geom_poly_segment_type role;
- if (!strcmp(rolestr,"outer") || !strcmp(rolestr,"exclave")) {
- has_outer_ways=1;
- role=geom_poly_segment_type_way_outer;
- }
- else if (!strcmp(rolestr,"inner") || !strcmp(rolestr,"enclave"))
- role=geom_poly_segment_type_way_inner;
- else if (!strcmp(rolestr,""))
- role=geom_poly_segment_type_way_unknown;
- else {
- osm_warning("relation",item_bin_get_relationid(ib),0,"Unknown role %s in member ",rolestr);
- osm_warning("way",osm_id,1,"\n");
- role=geom_poly_segment_type_none;
- }
- relations_add_relation_member_entry(relations, relations_func, boundary, (gpointer)role, rel_member_way, osm_id);
- }
- if(member_type==rel_member_relation) {
- if (!strcmp(rolestr,"outer") || !strcmp(rolestr,"exclave") || !strcmp(rolestr,"inner") || !strcmp(rolestr,"enclave"))
- has_subrelations++;
- }
- }
- if(boundary->iso2 && has_subrelations)
- osm_warning("relation",item_bin_get_relationid(ib),0,"Country boundary '%s' has %d relations as boundary segments. These are not supported yet.\n", boundary->iso2, has_subrelations);
- if(boundary->iso2 && !has_outer_ways) {
- osm_warning("relation",item_bin_get_relationid(ib),0,"Skipping country boundary for '%s' because it has no outer ways.\n", boundary->iso2);
- g_free(boundary->iso2);
- boundary->iso2=NULL;
- }
-
- boundary->ib=item_bin_dup(ib);
- boundaries_list=g_list_append(boundaries_list, boundary);
- }
- return boundaries_list;
-}
-
-GList *
-boundary_find_matches(GList *l, struct coord *c)
-{
- GList *ret=NULL;
- while (l) {
- struct boundary *boundary=l->data;
- if (bbox_contains_coord(&boundary->r, c)) {
- if (geom_poly_segments_point_inside(boundary->sorted_segments,c) > 0)
- ret=g_list_prepend(ret, boundary);
- ret=g_list_concat(ret,boundary_find_matches(boundary->children, c));
- }
- l=g_list_next(l);
- }
- return ret;
-}
-
-#if 0
-static void
-test(GList *boundaries_list)
-{
- struct item_bin *ib;
- FILE *f=fopen("country_276.bin.unsorted","r");
- printf("start\n");
- while ((ib=read_item(f))) {
- struct coord *c=(struct coord *)(ib+1);
- char *name=item_bin_get_attr(ib, attr_town_name, NULL);
- printf("%s:",name);
- boundary_find_matches(boundaries_list, c);
- printf("\n");
- }
- fclose(f);
- printf("end\n");
-}
-
-static void
-dump_hierarchy(GList *l, char *prefix)
-{
- char *newprefix=g_alloca(sizeof(char)*(strlen(prefix)+2));
- strcpy(newprefix, prefix);
- strcat(newprefix," ");
- while (l) {
- struct boundary *boundary=l->data;
- fprintf(stderr,"%s:%s (0x%x,0x%x)-(0x%x,0x%x)\n",prefix,osm_tag_name(boundary->ib),boundary->r.l.x,boundary->r.l.y,boundary->r.h.x,boundary->r.h.y);
- dump_hierarchy(boundary->children, newprefix);
- l=g_list_next(l);
- }
-}
-
-static gint
-boundary_bbox_compare(gconstpointer a, gconstpointer b)
-{
- const struct boundary *boundarya=a;
- const struct boundary *boundaryb=b;
- long long areaa=bbox_area(&boundarya->r);
- long long areab=bbox_area(&boundaryb->r);
- if (areaa > areab)
- return 1;
- if (areaa < areab)
- return -1;
- return 0;
-}
-#endif
-
-static GList *
-process_boundaries_insert(GList *list, struct boundary *boundary)
-{
- GList *l=list;
- while (l) {
- struct boundary *b=l->data;
- if (bbox_contains_bbox(&boundary->r, &b->r)) {
- list=g_list_remove(list, b);
- boundary->children=g_list_prepend(boundary->children, b);
- l=list;
- } else if (bbox_contains_bbox(&b->r, &boundary->r)) {
- b->children=process_boundaries_insert(b->children, boundary);
- return list;
- } else
- l=g_list_next(l);
- }
- return g_list_prepend(list, boundary);
-}
-
-
-static GList *
-process_boundaries_finish(GList *boundaries_list)
-{
- GList *l,*sl;
- GList *ret=NULL;
- l=boundaries_list;
- while (l) {
- struct boundary *boundary=l->data;
- int first=1;
- FILE *f=NULL,*fu=NULL;
- if (boundary->country) {
- char *name=g_strdup_printf("country_%s_poly",boundary->iso2);
- f=tempfile("",name,1);
- g_free(name);
- }
- boundary->sorted_segments=geom_poly_segments_sort(boundary->segments, geom_poly_segment_type_way_right_side);
- sl=boundary->sorted_segments;
- while (sl) {
- struct geom_poly_segment *gs=sl->data;
- struct coord *c=gs->first;
- while (c <= gs->last) {
- if (first) {
- boundary->r.l=*c;
- boundary->r.h=*c;
- first=0;
- } else
- bbox_extend(c, &boundary->r);
- c++;
- }
- if (f) {
- struct item_bin *ib=tmp_item_bin;
- item_bin_init(ib, type_selected_line);
- /* FIXME check for overflow */
- item_bin_add_coord(ib, gs->first, gs->last-gs->first+1);
- item_bin_write(ib, f);
- }
- if (boundary->country) {
- if (!coord_is_equal(*gs->first,*gs->last)) {
- struct item_bin *ib;
- if (!fu) {
- char *name=g_strdup_printf("country_%s_broken",boundary->iso2);
- fu=tempfile("",name,1);
- g_free(name);
- }
- ib=tmp_item_bin;
- item_bin_init(ib, type_selected_point);
- item_bin_add_coord(ib, gs->first, 1);
- item_bin_write(ib, fu);
- item_bin_init(ib, type_selected_point);
- item_bin_add_coord(ib, gs->last, 1);
- item_bin_write(ib, fu);
- }
- }
- sl=g_list_next(sl);
- }
- ret=process_boundaries_insert(ret, boundary);
- l=g_list_next(l);
- if (f)
- fclose(f);
- if (fu) {
- if (boundary->country)
- osm_warning("relation",item_bin_get_relationid(boundary->ib),0,"Broken country polygon '%s'\n",boundary->iso2);
- fclose(fu);
- }
-
- }
-#if 0
- printf("hierarchy\n");
-#endif
-#if 0
- boundaries_list=g_list_sort(boundaries_list, boundary_bbox_compare);
- l=boundaries_list;
- while (l) {
- struct boundary *boundary=l->data;
- GList *l2,*ln;
- ln=l2=g_list_next(l);
- while (l2) {
- struct boundary *boundary2=l2->data;
- if (bbox_contains_bbox(&boundary2->r, &boundary->r)) {
- boundaries_list=g_list_remove(boundaries_list, boundary);
- boundary2->children=g_list_append(boundary2->children, boundary);
-#if 0
- printf("found\n");
-#endif
- break;
- }
- l2=g_list_next(l2);
- }
- l=ln;
- }
- dump_hierarchy(boundaries_list,"");
-#if 0
- printf("hierarchy done\n");
- printf("test\n");
- test(boundaries_list);
-#endif
-#endif
- return ret;
-}
-
-GList *
-process_boundaries(FILE *boundaries, FILE *ways)
-{
- GList *boundaries_list;
- struct relations *relations=relations_new();
-
- boundaries_list=process_boundaries_setup(boundaries, relations);
- relations_process(relations, NULL, ways);
- relations_destroy(relations);
- return process_boundaries_finish(boundaries_list);
-}
-
-void
-free_boundaries(GList *bl)
-{
- GList *l=bl;
- while (l) {
- struct boundary *boundary=l->data;
- GList *s=boundary->segments;
- while (s) {
- struct geom_poly_segment *seg=s->data;
- g_free(seg->first);
- g_free(seg);
- s=g_list_next(s);
- };
- s=boundary->sorted_segments;
- while (s) {
- struct geom_poly_segment *seg=s->data;
- g_free(seg->first);
- g_free(seg);
- s=g_list_next(s);
- };
- g_list_free(boundary->segments);
- g_list_free(boundary->sorted_segments);
- g_free(boundary->ib);
- g_free(boundary->iso2);
- free_boundaries(boundary->children);
- g_free(boundary);
- l=g_list_next(l);
- }
- g_list_free(bl);
-}
diff --git a/navit/maptool/buffer.c b/navit/maptool/buffer.c
deleted file mode 100644
index 2907b0670..000000000
--- a/navit/maptool/buffer.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 "navit_lfs.h"
-#include <stdlib.h>
-#include "maptool.h"
-#include "debug.h"
-
-void
-save_buffer(char *filename, struct buffer *b, long long offset)
-{
- FILE *f;
- f=fopen(filename,"rb+");
- if (! f)
- f=fopen(filename,"wb+");
-
- dbg_assert(f != NULL);
- dbg_assert(fseeko(f, offset, SEEK_SET)==0);
- dbg_assert(fwrite(b->base, b->size, 1, f)==1);
- fclose(f);
-}
-
-void
-load_buffer(char *filename, struct buffer *b, long long offset, long long size)
-{
- FILE *f;
- long long len;
- dbg_assert(size>=0);
- dbg_assert(offset>=0);
- if (b->base)
- free(b->base);
- b->malloced=0;
- f=fopen(filename,"rb");
- fseeko(f, 0, SEEK_END);
- len=ftello(f);
- dbg_assert(len>=0);
- if (offset+size > len) {
- size=len-offset;
- }
- b->size=b->malloced=size;
- dbg_assert(b->size>0);
-#if 0
- fprintf(stderr,"reading "LONGLONG_FMT" bytes from %s of "LONGLONG_FMT" bytes at "LONGLONG_FMT"\n", b->size, filename, len, offset);
-#endif
- fseeko(f, offset, SEEK_SET);
- b->base=malloc(b->size);
- dbg_assert(b->base != NULL);
- fread(b->base, b->size, 1, f);
- fclose(f);
-}
-
-long long
-sizeof_buffer(char *filename)
-{
- long long ret;
- FILE *f=fopen(filename,"rb");
- fseeko(f, 0, SEEK_END);
- ret=ftello(f);
- fclose(f);
- return ret;
-}
diff --git a/navit/maptool/ch.c b/navit/maptool/ch.c
deleted file mode 100644
index b1b0b1bf6..000000000
--- a/navit/maptool/ch.c
+++ /dev/null
@@ -1,550 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <math.h>
-#include <stdlib.h>
-#include "maptool.h"
-#include "coord.h"
-#include "file.h"
-#include "debug.h"
-
-#if GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 10
-#define g_slice_alloc0 g_malloc0
-#define g_slice_new(x) g_new(x,1)
-#define g_slice_new0(x) g_new0(x,1)
-#define g_slice_free(x,y) g_free(y)
-#define g_slice_free1(x,y) g_free(y)
-#endif
-
-struct ch_edge {
- int flags;
- int weight;
- struct item_id target,middle;
-};
-
-struct node {
- int first_edge;
- int dummy;
-} *nodes;
-int node_count;
-
-struct edge {
- unsigned target:26;
- unsigned scedge1:6;
- unsigned weight:28;
- unsigned type:2;
- unsigned flags:2;
- unsigned int edge_count;
- unsigned scedge2:6;
- unsigned scmiddle:26;
-} *edges;
-
-int edge_count;
-
-struct newnode {
- int newnode;
-} *newnodes;
-
-int newnode_count;
-
-GHashTable *newnode_hash;
-
-struct edge_hash_item {
- int first,last;
-};
-
-
-GHashTable *edge_hash;
-
-struct file *sgr,*ddsg_node_index;
-
-struct coord *node_index;
-
-GHashTable *sgr_nodes_hash;
-
-static int ch_levels=14;
-
-static int
-road_speed(enum item_type type)
-{
- switch (type) {
- case type_street_0:
- case type_street_1_city:
- case type_living_street:
- case type_street_service:
- case type_track_gravelled:
- case type_track_unpaved:
- return 10;
- case type_street_2_city:
- case type_track_paved:
- return 30;
- case type_street_3_city:
- return 40;
- case type_street_4_city:
- return 50;
- case type_highway_city:
- return 80;
- case type_street_1_land:
- return 60;
- case type_street_2_land:
- return 65;
- case type_street_3_land:
- return 70;
- case type_street_4_land:
- return 80;
- case type_street_n_lanes:
- return 120;
- case type_highway_land:
- return 120;
- case type_ramp:
- return 40;
- case type_roundabout:
- return 10;
- case type_ferry:
- return 40;
- default:
- return 0;
- }
-}
-
-static void
-coord_slice_free(void *data)
-{
- g_slice_free(struct coord, data);
-}
-
-
-static GHashTable *
-coord_hash_new(void)
-{
- return g_hash_table_new_full(coord_hash, coord_equal, coord_slice_free, NULL);
-}
-
-static void
-item_id_slice_free(void *data)
-{
- g_slice_free(struct item_id, data);
-}
-
-static void
-add_node_to_hash(FILE *idx, GHashTable *hash, struct coord *c, int *nodes)
-{
- if (! g_hash_table_lookup(hash, c)) {
- struct coord *ct=g_slice_new(struct coord);
- *ct=*c;
- fwrite(c, sizeof(*c), 1, idx);
- (*nodes)++;
- g_hash_table_insert(hash, ct, GINT_TO_POINTER(*nodes));
- }
-
-}
-
-static void
-edge_hash_slice_free(void *data)
-{
- g_slice_free(struct edge_hash_item, data);
-}
-
-static guint
-edge_hash_hash(gconstpointer key)
-{
- const struct edge_hash_item *itm=key;
- return itm->first*2654435761UL+itm->last;
-}
-
-static gboolean
-edge_hash_equal(gconstpointer a, gconstpointer b)
-{
- const struct edge_hash_item *itm_a=a;
- const struct edge_hash_item *itm_b=b;
- return (itm_a->first == itm_b->first && itm_a->last == itm_b->last);
-}
-
-
-
-static void
-ch_generate_ddsg(FILE *in, FILE *ref, FILE *idx, FILE *ddsg)
-{
- GHashTable *hash=coord_hash_new();
- struct item_bin *ib;
- int nodes=0,edges=0;
-
- while ((ib=read_item(in))) {
- int ccount=ib->clen/2;
- struct coord *c=(struct coord *)(ib+1);
- if (road_speed(ib->type)) {
- add_node_to_hash(idx, hash, &c[0], &nodes);
- add_node_to_hash(idx, hash, &c[ccount-1], &nodes);
- edges++;
- }
- }
- edge_hash=g_hash_table_new_full(edge_hash_hash, edge_hash_equal, edge_hash_slice_free, item_id_slice_free);
- fseek(in, 0, SEEK_SET);
- fprintf(ddsg,"d\n");
- fprintf(ddsg,"%d %d\n", nodes, edges);
- while ((ib=read_item(in))) {
- int i,ccount=ib->clen/2;
- struct coord *c=(struct coord *)(ib+1);
- int n1,n2,speed=road_speed(ib->type);
- struct item_id road_id;
- double l;
- fread(&road_id, sizeof(road_id), 1, ref);
- if (speed) {
- struct edge_hash_item *hi=g_slice_new(struct edge_hash_item);
- struct item_id *id=g_slice_new(struct item_id);
- *id=road_id;
- dbg_assert((n1=GPOINTER_TO_INT(g_hash_table_lookup(hash, &c[0]))) != 0);
- dbg_assert((n2=GPOINTER_TO_INT(g_hash_table_lookup(hash, &c[ccount-1]))) != 0);
- l=0;
- for (i = 0 ; i < ccount-1 ; i++) {
- l+=sqrt(sq(c[i+1].x-c[i].x)+sq(c[i+1].y-c[i].y));
- }
- fprintf(ddsg,"%d %d %d 0\n", n1-1, n2-1, (int)(l*36/speed));
- hi->first=n1-1;
- hi->last=n2-1;
- g_hash_table_insert(edge_hash, hi, id);
- }
- }
- g_hash_table_destroy(hash);
-}
-
-static void
-ch_generate_sgr(char *suffix)
-{
-#ifndef HAVE_API_WIN32_CE
- char command[1024];
- sprintf(command,"./contraction-hierarchies-20080621/main -s -p -f ddsg_%s.tmp -o hcn_%s.tmp -l hcn_log_%s.tmp -x 190 -y 1 -e 600 -p 1000 -k 1,3.3,2,10,3,10,5",suffix,suffix,suffix);
- printf("%s\n",command);
- system(command);
- sprintf(command,"./contraction-hierarchies-20080621/main -c -f ddsg_%s.tmp -h hcn_%s.tmp -k 1,3.3,2,10,3,10,5 -C ch_%s.tmp -O 1 -z sgr_%s.tmp",suffix,suffix,suffix,suffix);
- printf("%s\n",command);
- system(command);
-#endif
-}
-
-static void
-ch_process_node(FILE *out, int node, int resolve)
-{
- int first_edge_id=nodes[node].first_edge;
- int last_edge_id=nodes[node+1].first_edge;
- int edge_id;
- struct ch_edge ch_edge;
- struct item_bin *item_bin;
- struct edge_hash_item fwd,rev;
- int oldnode;
- memset(&ch_edge, 0, sizeof(ch_edge));
- item_bin=init_item(type_ch_node);
- oldnode=GPOINTER_TO_INT(g_hash_table_lookup(newnode_hash, GINT_TO_POINTER(node)));
-#if 0
- dbg(lvl_debug,"0x%x,0x%x\n",node_index[oldnode].x,node_index[oldnode].y);
-#endif
- item_bin_add_coord(item_bin, &node_index[oldnode], 1);
- fwd.first=oldnode;
- rev.last=oldnode;
- for (edge_id = first_edge_id ; edge_id < last_edge_id ; edge_id++) {
- if (resolve) {
- struct edge *edge=&edges[edge_id];
- int oldnode=GPOINTER_TO_INT(g_hash_table_lookup(newnode_hash, GINT_TO_POINTER((int)edge->target)));
- struct item_id *id;
- ch_edge.weight=edge->weight;
- fwd.last=oldnode;
- rev.first=oldnode;
- ch_edge.flags=edge->flags & 3;
- if (edge->scmiddle == 67108863) {
- id=g_hash_table_lookup(edge_hash, &fwd);
- if (!id) {
- ch_edge.flags|=8;
- id=g_hash_table_lookup(edge_hash, &rev);
- }
- if (id == NULL) {
- fprintf(stderr,"Shortcut %d Weight %d\n",edge->scmiddle,edge->weight);
- fprintf(stderr,"Neither %d-%d nor %d-%d exists\n",fwd.first,fwd.last,rev.first,rev.last);
- exit(1);
- } else {
- ch_edge.middle=*id;
-#if 0
- dbg(lvl_debug,"middle street id for is "ITEM_ID_FMT"\n",ITEM_ID_ARGS(*id));
-#endif
- }
- } else {
- ch_edge.flags|=4;
- id=g_hash_table_lookup(sgr_nodes_hash, GINT_TO_POINTER((int)edge->scmiddle));
- dbg_assert(id != NULL);
- ch_edge.middle=*id;
-#if 0
- dbg(lvl_debug,"middle node id for is "ITEM_ID_FMT"\n",ITEM_ID_ARGS(*id));
-#endif
- }
- id=g_hash_table_lookup(sgr_nodes_hash, GINT_TO_POINTER((int)edge->target));
-#if 0
- dbg(lvl_debug,"id for %d is "ITEM_ID_FMT"\n",edge->target,ITEM_ID_ARGS(*id));
-#endif
- if (id == NULL) {
- fprintf(stderr,"Failed to look up target %d\n",edge->target);
- } else {
- ch_edge.target=*id;
- }
- }
- item_bin_add_attr_data(item_bin,attr_ch_edge,&ch_edge,sizeof(ch_edge));
- }
- item_bin_write(item_bin, out);
-}
-
-static void
-ch_process_nodes(FILE *out, int pos, int count, int resolve)
-{
- int i;
- printf("count %d sum=%d newnode_count=%d\n",count,pos,newnode_count);
- for (i = 0 ; i < count ; i++)
- ch_process_node(out, pos+i, resolve);
-}
-
-
-static void
-ch_process(FILE **files, int depth, int resolve)
-{
- int count=newnode_count;
- int pos=0;
-
- while (depth > 0 && pos < newnode_count) {
- count=(count+1)/2;
- ch_process_nodes(files[depth], pos, count, resolve);
- pos+=count;
- depth--;
- }
- ch_process_nodes(files[depth], pos, newnode_count-pos, resolve);
-}
-
-static void
-ch_setup(char *suffix)
-{
- int i;
- if (!sgr) {
- int *data,size,offset=0;
- char *filename=tempfile_name(suffix,"sgr");
- printf("filename=%s\n",filename);
- sgr=file_create(filename,0);
- g_free(filename);
- dbg_assert(sgr != NULL);
- file_mmap(sgr);
-
- size=sizeof(int);
- data=(int *)file_data_read(sgr, offset, size);
- node_count=*data;
- offset+=size;
-
- size=node_count*sizeof(struct node);
- nodes=(struct node *)file_data_read(sgr, offset, size);
- offset+=size;
-
- size=sizeof(int);
- data=(int *)file_data_read(sgr, offset, size);
- edge_count=*data;
- offset+=size;
-
- size=edge_count*sizeof(struct edge);
- edges=(struct edge *)file_data_read(sgr, offset, size);
- offset+=size;
-
- size=sizeof(int);
- data=(int *)file_data_read(sgr, offset, size);
- newnode_count=*data;
- offset+=size;
-
- size=edge_count*sizeof(struct newnode);
- newnodes=(struct newnode *)file_data_read(sgr, offset, size);
- offset+=size;
-
- newnode_hash=g_hash_table_new(NULL, NULL);
-
- for (i = 0 ; i < newnode_count ; i++) {
- g_hash_table_insert(newnode_hash, GINT_TO_POINTER(newnodes[i].newnode), GINT_TO_POINTER(i));
- }
- }
- if (!ddsg_node_index) {
- char *filename=tempfile_name(suffix,"ddsg_coords");
- ddsg_node_index=file_create(filename,0);
- g_free(filename);
- dbg_assert(ddsg_node_index != NULL);
- file_mmap(ddsg_node_index);
- node_index=(struct coord *)file_data_read(ddsg_node_index, 0, file_size(ddsg_node_index));
- }
-}
-
-static void
-ch_create_tempfiles(char *suffix, FILE **files, int count, int mode)
-{
- char name[256];
- int i;
-
- for (i = 0 ; i <= count ; i++) {
- sprintf(name,"graph_%d",i);
- files[i]=tempfile(suffix, name, mode);
- }
-}
-
-static void
-ch_close_tempfiles(FILE **files, int count)
-{
- int i;
-
- for (i = 0 ; i <= count ; i++) {
- fclose(files[i]);
- }
-}
-
-#if 0
-static void
-ch_remove_tempfiles(char *suffix, int count)
-{
- char name[256];
- int i;
-
- for (i = 0 ; i <= count ; i++) {
- sprintf(name,"graph_%d",i);
- tempfile_unlink(suffix, name);
- }
-}
-#endif
-
-static void
-ch_copy_to_tiles(char *suffix, int count, struct tile_info *info, FILE *ref)
-{
- char name[256];
- int i;
- FILE *f;
- struct item_bin *item_bin;
-
- for (i = count ; i >= 0 ; i--) {
- sprintf(name,"graph_%d",i);
- f=tempfile(suffix, name, 0);
- while ((item_bin = read_item(f))) {
- tile_write_item_minmax(info, item_bin, ref, i, i);
- }
- fclose(f);
- }
-}
-
-void
-ch_generate_tiles(char *map_suffix, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info)
-{
- struct tile_info info;
- FILE *in,*ref,*ddsg_coords,*ddsg;
- FILE **graphfiles;
- info.write=0;
- info.maxlen=0;
- info.suffix=suffix;
- info.tiles_list=NULL;
- info.tilesdir_out=tilesdir_out;
- graphfiles=g_alloca(sizeof(FILE*)*(ch_levels+1));
-
- ch_create_tempfiles(suffix, graphfiles, ch_levels, 1);
- in=tempfile(map_suffix,"ways_split",0);
- ref=tempfile(map_suffix,"ways_split_ref",0);
- ddsg_coords=tempfile(suffix,"ddsg_coords",1);
- ddsg=tempfile(suffix,"ddsg",1);
- ch_generate_ddsg(in, ref, ddsg_coords, ddsg);
- fclose(in);
- fclose(ref);
- fclose(ddsg_coords);
- fclose(ddsg);
- ch_generate_sgr(suffix);
- ch_setup(suffix);
- ch_process(graphfiles, ch_levels, 0);
- ch_close_tempfiles(graphfiles, ch_levels);
-
- tile_hash=g_hash_table_new(g_str_hash, g_str_equal);
- ch_copy_to_tiles(suffix, ch_levels, &info, NULL);
- merge_tiles(&info);
-
- write_tilesdir(&info, zip_info, tilesdir_out);
-}
-
-void
-ch_assemble_map(char *map_suffix, char *suffix, struct zip_info *zip_info)
-{
- struct tile_info info;
- struct tile_head *th;
- FILE **graphfiles=g_alloca(sizeof(FILE*)*(ch_levels+1));
- FILE *ref;
- struct item_id id;
- int nodeid=0;
-
- info.write=1;
- info.maxlen=zip_get_maxnamelen(zip_info);
- info.suffix=suffix;
- info.tiles_list=NULL;
- info.tilesdir_out=NULL;
- ref=tempfile(suffix,"sgr_ref",1);
-
- create_tile_hash();
-
- th=tile_head_root;
- while (th) {
- th->zip_data=NULL;
- th->process=1;
- th=th->next;
- }
-
- ch_setup(suffix);
- ch_copy_to_tiles(suffix, ch_levels, &info, ref);
- fclose(ref);
- ref=tempfile(suffix,"sgr_ref",0);
- sgr_nodes_hash=g_hash_table_new_full(NULL, NULL, NULL, item_id_slice_free);
- while (fread(&id, sizeof(id), 1, ref)) {
- struct item_id *id2=g_slice_new(struct item_id);
- *id2=id;
-#if 0
- dbg(lvl_debug,"%d is "ITEM_ID_FMT"\n",nodeid,ITEM_ID_ARGS(*id2));
-#endif
- g_hash_table_insert(sgr_nodes_hash, GINT_TO_POINTER(nodeid), id2);
- nodeid++;
- }
- th=tile_head_root;
- while (th) {
- th->zip_data=malloc(th->total_size);
- th->total_size_used=0;
- th=th->next;
- }
- ch_create_tempfiles(suffix, graphfiles, ch_levels, 1);
- ch_process(graphfiles, ch_levels, 1);
- ch_close_tempfiles(graphfiles, ch_levels);
-
- g_hash_table_destroy(newnode_hash);
- g_hash_table_destroy(edge_hash);
- g_hash_table_destroy(sgr_nodes_hash);
-
- ch_copy_to_tiles(suffix, ch_levels, &info, NULL);
- write_tilesdir(&info, zip_info, NULL);
-
- th=tile_head_root;
- while (th) {
- if (th->name[0]) {
- if (th->total_size != th->total_size_used) {
- fprintf(stderr,"Size error '%s': %d vs %d\n", th->name, th->total_size, th->total_size_used);
- exit(1);
- }
- write_zipmember(zip_info, th->name, zip_get_maxnamelen(zip_info), th->zip_data, th->total_size);
- } else {
- fwrite(th->zip_data, th->total_size, 1, zip_get_index(zip_info));
- }
- g_free(th->zip_data);
- th=th->next;
- }
-}
diff --git a/navit/maptool/coastline.c b/navit/maptool/coastline.c
deleted file mode 100644
index 4e17fd652..000000000
--- a/navit/maptool/coastline.c
+++ /dev/null
@@ -1,671 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 "maptool.h"
-#include "debug.h"
-
-struct coastline_tile
-{
- osmid wayid;
- int edges;
-};
-
-static int distance_from_ll(struct coord *c, struct rect *bbox)
-{
- int dist=0;
- if (c->x == bbox->l.x)
- return dist+c->y-bbox->l.y;
- dist+=bbox->h.y-bbox->l.y;
- if (c->y == bbox->h.y)
- return dist+c->x-bbox->l.x;
- dist+=bbox->h.x-bbox->l.x;
- if (c->x == bbox->h.x)
- return dist+bbox->h.y-c->y;
- dist+=bbox->h.y-bbox->l.y;
- if (c->y == bbox->l.y)
- return dist+bbox->h.x-c->x;
- return -1;
-}
-
-static struct geom_poly_segment *
-find_next(struct rect *bbox, GList *segments, struct coord *c, int exclude, struct coord *ci)
-{
- int min=INT_MAX,search=distance_from_ll(c, bbox)+(exclude?1:0);
- GList *curr;
- int i;
- struct geom_poly_segment *ret=NULL;
-
- for (i = 0 ; i < 2 ; i++) {
- curr=segments;
- dbg(lvl_debug,"search distance %d\n",search);
- while (curr) {
- struct geom_poly_segment *seg=curr->data;
- int dist=distance_from_ll(seg->first, bbox);
- dbg(lvl_debug,"0x%x 0x%x dist %d\n",seg->first->x,seg->first->y,dist);
- if (dist != -1 && seg->first != seg->last && dist < min && (dist >= search)) {
- min=dist;
- ci[0]=*seg->first;
- ci[1]=*seg->last;
- ret=seg;
- }
- curr=g_list_next(curr);
- }
- if (ret || !search)
- break;
- search=0;
- }
- return ret;
-}
-
-static void
-close_polygon(struct item_bin *ib, struct coord *from, struct coord *to, int dir, struct rect *bbox, int *edges)
-{
- int i,e,dist,fromdist,todist;
- int full=(bbox->h.x-bbox->l.x+bbox->h.y-bbox->l.y)*2;
- int corners=0,first_corner=0;
- struct coord c;
- if (dir > 0) {
- fromdist=distance_from_ll(from, bbox);
- todist=distance_from_ll(to, bbox);
- } else {
- fromdist=distance_from_ll(to, bbox);
- todist=distance_from_ll(from, bbox);
- }
-#if 0
- fprintf(stderr,"close_polygon fromdist %d todist %d full %d dir %d\n", fromdist, todist, full, dir);
-#endif
- if (fromdist > todist)
- todist+=full;
-#if 0
- fprintf(stderr,"close_polygon corrected fromdist %d todist %d full %d dir %d\n", fromdist, todist, full, dir);
-#endif
- for (i = 0 ; i < 8 ; i++) {
- if (dir > 0)
- e=i;
- else
- e=7-i;
- switch (e%4) {
- case 0:
- c=bbox->l;
- break;
- case 1:
- c.x=bbox->l.x;
- c.y=bbox->h.y;
- break;
- case 2:
- c=bbox->h;
- break;
- case 3:
- c.x=bbox->h.x;
- c.y=bbox->l.y;
- break;
- }
- dist=distance_from_ll(&c, bbox);
- if (e & 4)
- dist+=full;
-#if 0
- fprintf(stderr,"dist %d %d\n",e,dist);
-#endif
- if (dist > fromdist && dist < todist) {
- item_bin_add_coord(ib, &c, 1);
-#if 0
- fprintf(stderr,"add\n");
-#endif
- }
- if (dist >= fromdist && dist <= todist) {
- if (!corners)
- first_corner=e;
- corners++;
- }
- }
- while (corners >= 2) {
- *edges |= 1<<(first_corner%4);
- first_corner++;
- corners--;
- }
-}
-
-struct coastline_tile_data {
- struct item_bin_sink_func *sink;
- GHashTable *tile_edges;
- int level;
- GList *k,*v;
-};
-
-static GList *
-tile_data_to_segments(int *tile_data)
-{
- int *end=tile_data+tile_data[0];
- int *curr=tile_data+1;
- GList *segments=NULL;
- int count=0;
-
- while (curr < end) {
- struct item_bin *ib=(struct item_bin *)curr;
- segments=g_list_prepend(segments,item_bin_to_poly_segment(ib, geom_poly_segment_type_way_right_side));
- curr+=ib->len+1;
- count++;
- }
-#if 0
- fprintf(stderr,"%d segments\n",count);
-#endif
- return segments;
-}
-
-static void
-tile_collector_process_tile(char *tile, int *tile_data, struct coastline_tile_data *data)
-{
- int poly_start_valid,tile_start_valid,exclude,search=0;
- struct rect bbox;
- struct coord cn[2],end,poly_start,tile_start;
- struct geom_poly_segment *first;
- struct item_bin *ib=NULL;
- struct item_bin_sink *out=data->sink->priv_data[1];
- int edges=0,flags;
- GList *sorted_segments,*curr;
- struct item_bin *ibt=(struct item_bin *)(tile_data+1);
- struct coastline_tile *ct=g_new0(struct coastline_tile, 1);
- ct->wayid=item_bin_get_wayid(ibt);
-#if 0
- if (strncmp(tile,"bcdbdcabddddba",7))
- return;
-#endif
-#if 0
- if (strncmp(tile,"bcdbdcaaaaddba",14))
- return;
-#endif
-#if 0
- fprintf(stderr,"tile %s of size %d\n", tile, *tile_data);
-#endif
- tile_bbox(tile, &bbox, 0);
- curr=tile_data_to_segments(tile_data);
- sorted_segments=geom_poly_segments_sort(curr, geom_poly_segment_type_way_right_side);
- g_list_foreach(curr,(GFunc)geom_poly_segment_destroy,NULL);
- g_list_free(curr);
-
-#if 0
-{
- GList *sort_segments=sorted_segments;
- int count=0;
- while (sort_segments) {
- struct geom_poly_segment *seg=sort_segments->data;
- struct item_bin *ib=(struct item_bin *)buffer;
- char *text=g_strdup_printf("segment %d type %d %p %s area "LONGLONG_FMT,count++,seg->type,sort_segments,coord_is_equal(*seg->first, *seg->last) ? "closed":"open",geom_poly_area(seg->first,seg->last-seg->first+1));
- item_bin_init(ib, type_rg_segment);
- item_bin_add_coord(ib, seg->first, seg->last-seg->first+1);
- item_bin_add_attr_string(ib, attr_debug, text);
- // fprintf(stderr,"%s\n",text);
- g_free(text);
- // item_bin_dump(ib, stderr);
- item_bin_write_to_sink(ib, out, NULL);
- sort_segments=g_list_next(sort_segments);
- }
-}
-#endif
- flags=0;
- curr=sorted_segments;
- while (curr) {
- struct geom_poly_segment *seg=curr->data;
- switch (seg->type) {
- case geom_poly_segment_type_way_inner:
- flags|=1;
- break;
- case geom_poly_segment_type_way_outer:
- flags|=2;
- break;
- default:
- flags|=4;
- break;
- }
- curr=g_list_next(curr);
- }
- if (flags == 1) {
- ct->edges=15;
- ib=init_item(type_poly_water_tiled);
- item_bin_bbox(ib, &bbox);
- item_bin_add_attr_longlong(ib, attr_osm_wayid, ct->wayid);
- item_bin_write_to_sink(ib, out, NULL);
- g_hash_table_insert(data->tile_edges, g_strdup(tile), ct);
- return;
- }
-#if 1
- end=bbox.l;
- tile_start_valid=0;
- poly_start_valid=0;
- exclude=0;
- poly_start.x=0;
- poly_start.y=0;
- tile_start.x=0;
- tile_start.y=0;
- for (;;) {
- search++;
- // item_bin_write_debug_point_to_sink(out, &end, "Search %d",search);
- dbg(lvl_debug,"searching next polygon from 0x%x 0x%x\n",end.x,end.y);
- first=find_next(&bbox, sorted_segments, &end, exclude, cn);
- exclude=1;
- if (!first)
- break;
- if (!tile_start_valid) {
- tile_start=cn[0];
- tile_start_valid=1;
- } else {
- if (cn[0].x == tile_start.x && cn[0].y == tile_start.y) {
- dbg(lvl_debug,"end of tile reached\n");
- break;
- }
- }
- if (first->type == geom_poly_segment_type_none) {
- end=cn[0];
- continue;
- }
- poly_start_valid=0;
- dbg(lvl_debug,"start of polygon 0x%x 0x%x\n",cn[0].x,cn[0].y);
- for (;;) {
- if (!poly_start_valid) {
- poly_start=cn[0];
- poly_start_valid=1;
- ib=init_item(type_poly_water_tiled);
- } else {
- close_polygon(ib, &end, &cn[0], 1, &bbox, &edges);
- if (cn[0].x == poly_start.x && cn[0].y == poly_start.y) {
- dbg(lvl_debug,"poly end reached\n");
- item_bin_add_attr_longlong(ib, attr_osm_wayid, ct->wayid);
- item_bin_write_to_sink(ib, out, NULL);
- end=cn[0];
- break;
- }
- }
- if (first->type == geom_poly_segment_type_none)
- break;
- item_bin_add_coord(ib, first->first, first->last-first->first+1);
- first->type=geom_poly_segment_type_none;
- end=cn[1];
- if (distance_from_ll(&end, &bbox) == -1) {
- dbg(lvl_debug,"incomplete\n");
- break;
- }
- first=find_next(&bbox, sorted_segments, &end, 1, cn);
- dbg(lvl_debug,"next segment of polygon 0x%x 0x%x\n",cn[0].x,cn[0].y);
- }
- if (search > 55)
- break;
- }
- g_list_foreach(sorted_segments,(GFunc)geom_poly_segment_destroy,NULL);
- g_list_free(sorted_segments);
-#endif
-
-#if 0
- {
- int *end=tile_data+tile_data[0];
- int *curr=tile_data+1;
- while (curr < end) {
- struct item_bin *ib=(struct item_bin *)curr;
- // item_bin_dump(ib);
- ib->type=type_rg_segment;
- item_bin_write_to_sink(ib, out, NULL);
- curr+=ib->len+1;
-#if 0
- {
- struct coord *c[2];
- int i;
- char *s;
- c[0]=(struct coord *)(ib+1);
- c[1]=c[0]+ib->clen/2-1;
- for (i = 0 ; i < 2 ; i++) {
- s=coord_to_str(c[i]);
- item_bin_write_debug_point_to_sink(out, c[i], "%s",s);
- g_free(s);
- }
-
- }
-#endif
- }
- }
-#endif
- ct->edges=edges;
- g_hash_table_insert(data->tile_edges, g_strdup(tile), ct);
-#if 0
- item_bin_init(ib, type_border_country);
- item_bin_bbox(ib, &bbox);
- item_bin_add_attr_string(ib, attr_debug, tile);
- item_bin_write_to_sink(ib, out, NULL);
-#endif
-#if 0
- c.x=(bbox.l.x+bbox.h.x)/2;
- c.y=(bbox.l.y+bbox.h.y)/2;
- item_bin_write_debug_point_to_sink(out, &c, "%s %d",tile,edges);
-#endif
-}
-
-static void
-ocean_tile(GHashTable *hash, char *tile, char c, osmid wayid, struct item_bin_sink *out)
-{
- int len=strlen(tile);
- char *tile2=g_alloca(sizeof(char)*(len+1));
- struct rect bbox;
- struct item_bin *ib;
- struct coastline_tile *ct;
-
- strcpy(tile2, tile);
- tile2[len-1]=c;
- //fprintf(stderr,"Testing %s\n",tile2);
- ct=g_hash_table_lookup(hash, tile2);
- if (ct)
- return;
- //fprintf(stderr,"%s ok\n",tile2);
- tile_bbox(tile2, &bbox, 0);
- ib=init_item(type_poly_water_tiled);
- item_bin_bbox(ib, &bbox);
- item_bin_add_attr_longlong(ib, attr_osm_wayid, wayid);
- item_bin_write_to_sink(ib, out, NULL);
- ct=g_new0(struct coastline_tile, 1);
- ct->edges=15;
- ct->wayid=wayid;
- g_hash_table_insert(hash, g_strdup(tile2), ct);
-#if 0
- item_bin_init(ib, type_border_country);
- item_bin_bbox(ib, &bbox);
- item_bin_add_attr_string(ib, attr_debug, tile2);
- item_bin_write_to_sink(ib, out, NULL);
-#endif
-#if 0
- {
- struct coord co;
- co.x=(bbox.l.x+bbox.h.x)/2;
- co.y=(bbox.l.y+bbox.h.y)/2;
- item_bin_write_debug_point_to_sink(out, &co, "%s 15",tile2);
- }
-#endif
-}
-
-/* ba */
-/* dc */
-
-static void
-tile_collector_add_siblings(char *tile, struct coastline_tile *ct, struct coastline_tile_data *data)
-{
- int len=strlen(tile);
- char t=tile[len-1];
- struct item_bin_sink *out=data->sink->priv_data[1];
- int edges=ct->edges;
- int debug=0;
-#if 0
- if (!strncmp(tile,"bcacccaadbdcd",10))
- debug=1;
-#endif
- if (debug)
- fprintf(stderr,"%s (%c) has %d edges active\n",tile,t,edges);
- if (t == 'a' && (edges & 1))
- ocean_tile(data->tile_edges, tile, 'b', ct->wayid, out);
- if (t == 'a' && (edges & 8))
- ocean_tile(data->tile_edges, tile, 'c', ct->wayid, out);
- if (t == 'b' && (edges & 4))
- ocean_tile(data->tile_edges, tile, 'a', ct->wayid, out);
- if (t == 'b' && (edges & 8))
- ocean_tile(data->tile_edges, tile, 'd', ct->wayid, out);
- if (t == 'c' && (edges & 1))
- ocean_tile(data->tile_edges, tile, 'd', ct->wayid, out);
- if (t == 'c' && (edges & 2))
- ocean_tile(data->tile_edges, tile, 'a', ct->wayid, out);
- if (t == 'd' && (edges & 4))
- ocean_tile(data->tile_edges, tile, 'c', ct->wayid, out);
- if (t == 'd' && (edges & 2))
- ocean_tile(data->tile_edges, tile, 'b', ct->wayid, out);
-}
-
-static int
-tile_sibling_edges(GHashTable *hash, char *tile, char c)
-{
- int len=strlen(tile);
- char *tile2=g_alloca(sizeof(char)*(len+1));
- struct coastline_tile *ct;
- strcpy(tile2, tile);
- tile2[len-1]=c;
- ct=g_hash_table_lookup(hash, tile2);
- if (ct)
- return ct->edges;
- return 15;
-}
-
-#if 0
-static void
-ocean_tile2(struct rect *r, int dx, int dy, int wf, int hf, struct item_bin_sink *out)
-{
- struct item_bin *ib;
- int w=r->h.x-r->l.x;
- int h=r->h.y-r->l.y;
- char tile2[32];
- struct rect bbox;
- bbox.l.x=r->l.x+dx*w;
- bbox.l.y=r->l.y+dy*h;
- bbox.h.x=bbox.l.x+w*wf;
- bbox.h.y=bbox.l.y+h*hf;
- //fprintf(stderr,"0x%x,0x%x-0x%x,0x%x -> 0x%x,0x%x-0x%x,0x%x\n",r->l.x,r->l.y,r->h.x,r->h.y,bbox.l.x,bbox.l.y,bbox.h.x,bbox.h.y);
- ib=init_item(type_poly_water_tiled);
- item_bin_bbox(ib, &bbox);
- item_bin_write_to_sink(ib, out, NULL);
-#if 0
- item_bin_init(ib, type_border_country);
- item_bin_bbox(ib, &bbox);
- item_bin_add_attr_string(ib, attr_debug, tile2);
- item_bin_write_to_sink(ib, out, NULL);
-#endif
- tile(&bbox, NULL, tile2, 32, 0, NULL);
-#if 0
- {
- struct coord co;
- co.x=(bbox.l.x+bbox.h.x)/2;
- co.y=(bbox.l.y+bbox.h.y)/2;
- item_bin_write_debug_point_to_sink(out, &co, "%s 15",tile2);
- }
-#endif
-}
-#endif
-
-static void
-tile_collector_add_siblings2(char *tile, struct coastline_tile *ct, struct coastline_tile_data *data)
-{
- int edges=ct->edges;
- int pedges=0;
- int debug=0;
- int len=strlen(tile);
- struct coastline_tile *cn, *co;
- char *tile2=g_alloca(sizeof(char)*(len+1));
- char t=tile[len-1];
- strcpy(tile2, tile);
- tile2[len-1]='\0';
-#if 0
- if (!strncmp(tile,"bcacccaadbdcd",10))
- debug=1;
-#endif
- if (debug)
- fprintf(stderr,"len of %s %d vs %d\n",tile,len,data->level);
-
-
- if (debug)
- fprintf(stderr,"checking siblings of '%s' with %d edges active\n",tile,edges);
- if (t == 'b' && (edges & 1) && (tile_sibling_edges(data->tile_edges, tile, 'd') & 1))
- pedges|=1;
- if (t == 'd' && (edges & 2) && (tile_sibling_edges(data->tile_edges, tile, 'b') & 1))
- pedges|=1;
- if (t == 'a' && (edges & 2) && (tile_sibling_edges(data->tile_edges, tile, 'b') & 2))
- pedges|=2;
- if (t == 'b' && (edges & 2) && (tile_sibling_edges(data->tile_edges, tile, 'a') & 2))
- pedges|=2;
- if (t == 'a' && (edges & 4) && (tile_sibling_edges(data->tile_edges, tile, 'c') & 4))
- pedges|=4;
- if (t == 'c' && (edges & 4) && (tile_sibling_edges(data->tile_edges, tile, 'a') & 4))
- pedges|=4;
- if (t == 'd' && (edges & 8) && (tile_sibling_edges(data->tile_edges, tile, 'c') & 8))
- pedges|=8;
- if (t == 'c' && (edges & 8) && (tile_sibling_edges(data->tile_edges, tile, 'd') & 8))
- pedges|=8;
- co=g_hash_table_lookup(data->tile_edges, tile2);
- if (debug)
- fprintf(stderr,"result '%s' %d old %d\n",tile2,pedges,co?co->edges:0);
- cn=g_new0(struct coastline_tile, 1);
- cn->edges=pedges;
- if (co) {
- cn->edges|=co->edges;
- cn->wayid=co->wayid;
- } else
- cn->wayid=ct->wayid;
- g_hash_table_insert(data->tile_edges, g_strdup(tile2), cn);
-}
-
-static void
-foreach_tile_func(gpointer key, gpointer value, gpointer user_data)
-{
- struct coastline_tile_data *data=user_data;
- if (strlen((char *)key) == data->level) {
- data->k=g_list_prepend(data->k, key);
- data->v=g_list_prepend(data->v, value);
- }
-}
-
-static void
-foreach_tile(struct coastline_tile_data *data, void(*func)(char *, struct coastline_tile *, struct coastline_tile_data *))
-{
- GList *k,*v;
- data->k=NULL;
- data->v=NULL;
-
- g_hash_table_foreach(data->tile_edges, foreach_tile_func, data);
- k=data->k;
- v=data->v;
- while (k) {
- func(k->data,v->data,data);
- k=g_list_next(k);
- v=g_list_next(v);
- }
- g_list_free(data->k);
- g_list_free(data->v);
-}
-
-static int
-tile_collector_finish(struct item_bin_sink_func *tile_collector)
-{
- struct coastline_tile_data data;
- int i;
- GHashTable *hash;
- data.sink=tile_collector;
- data.tile_edges=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
- hash=tile_collector->priv_data[0];
- fprintf(stderr,"tile_collector_finish\n");
-#if 1
- g_hash_table_foreach(hash, (GHFunc) tile_collector_process_tile, &data);
-#endif
- fprintf(stderr,"tile_collector_finish foreach done\n");
- g_hash_table_destroy(hash);
- fprintf(stderr,"tile_collector_finish destroy done\n");
- for (i = 14 ; i > 0 ; i--) {
- fprintf(stderr,"Level=%d\n",i);
- data.level=i;
- foreach_tile(&data, tile_collector_add_siblings);
- fprintf(stderr,"*");
- foreach_tile(&data, tile_collector_add_siblings);
- fprintf(stderr,"*");
- foreach_tile(&data, tile_collector_add_siblings);
- fprintf(stderr,"*");
- foreach_tile(&data, tile_collector_add_siblings);
- fprintf(stderr,"*");
- foreach_tile(&data, tile_collector_add_siblings2);
- fprintf(stderr,"*\n");
- foreach_tile(&data, tile_collector_add_siblings2);
- fprintf(stderr,"*\n");
- foreach_tile(&data, tile_collector_add_siblings2);
- fprintf(stderr,"*\n");
- foreach_tile(&data, tile_collector_add_siblings2);
- fprintf(stderr,"*\n");
- }
-#if 0
- data.level=13;
- g_hash_table_foreach(data.tile_edges, tile_collector_add_siblings, &data);
- g_hash_table_foreach(data.tile_edges, tile_collector_add_siblings, &data);
- g_hash_table_foreach(data.tile_edges, tile_collector_add_siblings2, &data);
- data.level=12;
- g_hash_table_foreach(data.tile_edges, tile_collector_add_siblings, &data);
- g_hash_table_foreach(data.tile_edges, tile_collector_add_siblings, &data);
-#endif
- item_bin_sink_func_destroy(tile_collector);
- fprintf(stderr,"tile_collector_finish done\n");
- return 0;
-}
-
-
-static int
-coastline_processor_process(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data)
-{
-#if 0
- int i;
- struct coord *c=(struct coord *)(ib+1);
- for (i = 0 ; i < 19 ; i++) {
- c[i]=c[i+420];
- }
- ib->clen=(i-1)*2;
-#endif
- item_bin_write_clipped(ib, func->priv_data[0], func->priv_data[1]);
- return 0;
-}
-
-static struct item_bin_sink_func *
-coastline_processor_new(struct item_bin_sink *out)
-{
- struct item_bin_sink_func *coastline_processor=item_bin_sink_func_new(coastline_processor_process);
- struct item_bin_sink *tiles=item_bin_sink_new();
- struct item_bin_sink_func *tile_collector=tile_collector_new(out);
- struct tile_parameter *param=g_new0(struct tile_parameter, 1);
-
- param->min=14;
- param->max=14;
- param->overlap=0;
- param->attr_to_copy=attr_osm_wayid;
-
- item_bin_sink_add_func(tiles, tile_collector);
- coastline_processor->priv_data[0]=param;
- coastline_processor->priv_data[1]=tiles;
- coastline_processor->priv_data[2]=tile_collector;
- return coastline_processor;
-}
-
-static void
-coastline_processor_finish(struct item_bin_sink_func *coastline_processor)
-{
- struct tile_parameter *param=coastline_processor->priv_data[0];
- struct item_bin_sink *tiles=coastline_processor->priv_data[1];
- struct item_bin_sink_func *tile_collector=coastline_processor->priv_data[2];
- g_free(param);
- tile_collector_finish(tile_collector);
- item_bin_sink_destroy(tiles);
- item_bin_sink_func_destroy(coastline_processor);
-}
-
-void
-process_coastlines(FILE *in, FILE *out)
-{
- struct item_bin_sink *reader=file_reader_new(in,-1,0);
- struct item_bin_sink_func *file_writer=file_writer_new(out);
- struct item_bin_sink *result=item_bin_sink_new();
- struct item_bin_sink_func *coastline_processor=coastline_processor_new(result);
- item_bin_sink_add_func(reader, coastline_processor);
- item_bin_sink_add_func(result, file_writer);
- file_reader_finish(reader);
- coastline_processor_finish(coastline_processor);
- file_writer_finish(file_writer);
- item_bin_sink_destroy(result);
-}
diff --git a/navit/maptool/fileformat.proto b/navit/maptool/fileformat.proto
deleted file mode 100644
index 006cba767..000000000
--- a/navit/maptool/fileformat.proto
+++ /dev/null
@@ -1,36 +0,0 @@
-option java_package = "crosby.binary";
-package OSMPBF;
-
-//protoc --java_out=../.. fileformat.proto
-
-
-//
-// STORAGE LAYER: Storing primitives.
-//
-
-message Blob {
- optional bytes raw = 1; // No compression
- optional int32 raw_size = 2; // When compressed, the uncompressed size
-
- // Possible compressed versions of the data.
- optional bytes zlib_data = 3;
-
- // PROPOSED feature for LZMA compressed data. SUPPORT IS NOT REQUIRED.
- optional bytes lzma_data = 4;
-
- // Formerly used for bzip2 compressed data. Depreciated in 2010.
- optional bytes OBSOLETE_bzip2_data = 5 [deprecated=true]; // Don't reuse this tag number.
-}
-
-/* A file contains an sequence of fileblock headers, each prefixed by
-their length in network byte order, followed by a data block
-containing the actual data. types staring with a "_" are reserved.
-*/
-
-message BlobHeader {
- required string type = 1;
- optional bytes indexdata = 2;
- required int32 datasize = 3;
-}
-
-
diff --git a/navit/maptool/generated-code/fileformat.pb-c.c b/navit/maptool/generated-code/fileformat.pb-c.c
deleted file mode 100644
index f67ba94d5..000000000
--- a/navit/maptool/generated-code/fileformat.pb-c.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/* Generated by the protocol buffer compiler. DO NOT EDIT! */
-
-/* Do not generate deprecated warnings for self */
-#ifndef PROTOBUF_C_NO_DEPRECATED
-#define PROTOBUF_C_NO_DEPRECATED
-#endif
-
-#include "fileformat.pb-c.h"
-void osmpbf__blob__init
- (OSMPBF__Blob *message)
-{
- static OSMPBF__Blob init_value = OSMPBF__BLOB__INIT;
- *message = init_value;
-}
-size_t osmpbf__blob__get_packed_size
- (const OSMPBF__Blob *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__blob__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__blob__pack
- (const OSMPBF__Blob *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__blob__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__blob__pack_to_buffer
- (const OSMPBF__Blob *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__blob__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__Blob *
- osmpbf__blob__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__Blob *)
- protobuf_c_message_unpack (&osmpbf__blob__descriptor,
- allocator, len, data);
-}
-void osmpbf__blob__free_unpacked
- (OSMPBF__Blob *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__blob__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__blob_header__init
- (OSMPBF__BlobHeader *message)
-{
- static OSMPBF__BlobHeader init_value = OSMPBF__BLOB_HEADER__INIT;
- *message = init_value;
-}
-size_t osmpbf__blob_header__get_packed_size
- (const OSMPBF__BlobHeader *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__blob_header__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__blob_header__pack
- (const OSMPBF__BlobHeader *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__blob_header__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__blob_header__pack_to_buffer
- (const OSMPBF__BlobHeader *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__blob_header__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__BlobHeader *
- osmpbf__blob_header__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__BlobHeader *)
- protobuf_c_message_unpack (&osmpbf__blob_header__descriptor,
- allocator, len, data);
-}
-void osmpbf__blob_header__free_unpacked
- (OSMPBF__BlobHeader *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__blob_header__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-static const ProtobufCFieldDescriptor osmpbf__blob__field_descriptors[5] =
-{
- {
- "raw",
- 1,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_BYTES,
- PROTOBUF_C_OFFSETOF(OSMPBF__Blob, has_raw),
- PROTOBUF_C_OFFSETOF(OSMPBF__Blob, raw),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "raw_size",
- 2,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_INT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Blob, has_raw_size),
- PROTOBUF_C_OFFSETOF(OSMPBF__Blob, raw_size),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "zlib_data",
- 3,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_BYTES,
- PROTOBUF_C_OFFSETOF(OSMPBF__Blob, has_zlib_data),
- PROTOBUF_C_OFFSETOF(OSMPBF__Blob, zlib_data),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "lzma_data",
- 4,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_BYTES,
- PROTOBUF_C_OFFSETOF(OSMPBF__Blob, has_lzma_data),
- PROTOBUF_C_OFFSETOF(OSMPBF__Blob, lzma_data),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "OBSOLETE_bzip2_data",
- 5,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_BYTES,
- PROTOBUF_C_OFFSETOF(OSMPBF__Blob, has_obsolete_bzip2_data),
- PROTOBUF_C_OFFSETOF(OSMPBF__Blob, obsolete_bzip2_data),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__blob__field_indices_by_name[] = {
- 4, /* field[4] = OBSOLETE_bzip2_data */
- 3, /* field[3] = lzma_data */
- 0, /* field[0] = raw */
- 1, /* field[1] = raw_size */
- 2, /* field[2] = zlib_data */
-};
-static const ProtobufCIntRange osmpbf__blob__number_ranges[1 + 1] =
-{
- { 1, 0 },
- { 0, 5 }
-};
-const ProtobufCMessageDescriptor osmpbf__blob__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.Blob",
- "Blob",
- "OSMPBF__Blob",
- "OSMPBF",
- sizeof(OSMPBF__Blob),
- 5,
- osmpbf__blob__field_descriptors,
- osmpbf__blob__field_indices_by_name,
- 1, osmpbf__blob__number_ranges,
- (ProtobufCMessageInit) osmpbf__blob__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const ProtobufCFieldDescriptor osmpbf__blob_header__field_descriptors[3] =
-{
- {
- "type",
- 1,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_STRING,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__BlobHeader, type),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "indexdata",
- 2,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_BYTES,
- PROTOBUF_C_OFFSETOF(OSMPBF__BlobHeader, has_indexdata),
- PROTOBUF_C_OFFSETOF(OSMPBF__BlobHeader, indexdata),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "datasize",
- 3,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_INT32,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__BlobHeader, datasize),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__blob_header__field_indices_by_name[] = {
- 2, /* field[2] = datasize */
- 1, /* field[1] = indexdata */
- 0, /* field[0] = type */
-};
-static const ProtobufCIntRange osmpbf__blob_header__number_ranges[1 + 1] =
-{
- { 1, 0 },
- { 0, 3 }
-};
-const ProtobufCMessageDescriptor osmpbf__blob_header__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.BlobHeader",
- "BlobHeader",
- "OSMPBF__BlobHeader",
- "OSMPBF",
- sizeof(OSMPBF__BlobHeader),
- 3,
- osmpbf__blob_header__field_descriptors,
- osmpbf__blob_header__field_indices_by_name,
- 1, osmpbf__blob_header__number_ranges,
- (ProtobufCMessageInit) osmpbf__blob_header__init,
- NULL,NULL,NULL /* reserved[123] */
-};
diff --git a/navit/maptool/generated-code/fileformat.pb-c.h b/navit/maptool/generated-code/fileformat.pb-c.h
deleted file mode 100644
index 9996bfbea..000000000
--- a/navit/maptool/generated-code/fileformat.pb-c.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Generated by the protocol buffer compiler. DO NOT EDIT! */
-
-#ifndef PROTOBUF_C_fileformat_2eproto__INCLUDED
-#define PROTOBUF_C_fileformat_2eproto__INCLUDED
-
-#include <google/protobuf-c/protobuf-c.h>
-
-PROTOBUF_C_BEGIN_DECLS
-
-
-typedef struct _OSMPBF__Blob OSMPBF__Blob;
-typedef struct _OSMPBF__BlobHeader OSMPBF__BlobHeader;
-
-
-/* --- enums --- */
-
-
-/* --- messages --- */
-
-struct _OSMPBF__Blob
-{
- ProtobufCMessage base;
- protobuf_c_boolean has_raw;
- ProtobufCBinaryData raw;
- protobuf_c_boolean has_raw_size;
- int32_t raw_size;
- protobuf_c_boolean has_zlib_data;
- ProtobufCBinaryData zlib_data;
- protobuf_c_boolean has_lzma_data;
- ProtobufCBinaryData lzma_data;
- protobuf_c_boolean has_obsolete_bzip2_data PROTOBUF_C_DEPRECATED;
- ProtobufCBinaryData obsolete_bzip2_data PROTOBUF_C_DEPRECATED;
-};
-#define OSMPBF__BLOB__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__blob__descriptor) \
- , 0,{0,NULL}, 0,0, 0,{0,NULL}, 0,{0,NULL}, 0,{0,NULL} }
-
-
-struct _OSMPBF__BlobHeader
-{
- ProtobufCMessage base;
- char *type;
- protobuf_c_boolean has_indexdata;
- ProtobufCBinaryData indexdata;
- int32_t datasize;
-};
-#define OSMPBF__BLOB_HEADER__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__blob_header__descriptor) \
- , NULL, 0,{0,NULL}, 0 }
-
-
-/* OSMPBF__Blob methods */
-void osmpbf__blob__init
- (OSMPBF__Blob *message);
-size_t osmpbf__blob__get_packed_size
- (const OSMPBF__Blob *message);
-size_t osmpbf__blob__pack
- (const OSMPBF__Blob *message,
- uint8_t *out);
-size_t osmpbf__blob__pack_to_buffer
- (const OSMPBF__Blob *message,
- ProtobufCBuffer *buffer);
-OSMPBF__Blob *
- osmpbf__blob__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__blob__free_unpacked
- (OSMPBF__Blob *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__BlobHeader methods */
-void osmpbf__blob_header__init
- (OSMPBF__BlobHeader *message);
-size_t osmpbf__blob_header__get_packed_size
- (const OSMPBF__BlobHeader *message);
-size_t osmpbf__blob_header__pack
- (const OSMPBF__BlobHeader *message,
- uint8_t *out);
-size_t osmpbf__blob_header__pack_to_buffer
- (const OSMPBF__BlobHeader *message,
- ProtobufCBuffer *buffer);
-OSMPBF__BlobHeader *
- osmpbf__blob_header__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__blob_header__free_unpacked
- (OSMPBF__BlobHeader *message,
- ProtobufCAllocator *allocator);
-/* --- per-message closures --- */
-
-typedef void (*OSMPBF__Blob_Closure)
- (const OSMPBF__Blob *message,
- void *closure_data);
-typedef void (*OSMPBF__BlobHeader_Closure)
- (const OSMPBF__BlobHeader *message,
- void *closure_data);
-
-/* --- services --- */
-
-
-/* --- descriptors --- */
-
-extern const ProtobufCMessageDescriptor osmpbf__blob__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__blob_header__descriptor;
-
-PROTOBUF_C_END_DECLS
-
-
-#endif /* PROTOBUF_fileformat_2eproto__INCLUDED */
diff --git a/navit/maptool/generated-code/osmformat.pb-c.c b/navit/maptool/generated-code/osmformat.pb-c.c
deleted file mode 100644
index f31a72c4e..000000000
--- a/navit/maptool/generated-code/osmformat.pb-c.c
+++ /dev/null
@@ -1,1582 +0,0 @@
-/* Generated by the protocol buffer compiler. DO NOT EDIT! */
-
-/* Do not generate deprecated warnings for self */
-#ifndef PROTOBUF_C_NO_DEPRECATED
-#define PROTOBUF_C_NO_DEPRECATED
-#endif
-
-#include "osmformat.pb-c.h"
-void osmpbf__header_block__init
- (OSMPBF__HeaderBlock *message)
-{
- static OSMPBF__HeaderBlock init_value = OSMPBF__HEADER_BLOCK__INIT;
- *message = init_value;
-}
-size_t osmpbf__header_block__get_packed_size
- (const OSMPBF__HeaderBlock *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__header_block__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__header_block__pack
- (const OSMPBF__HeaderBlock *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__header_block__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__header_block__pack_to_buffer
- (const OSMPBF__HeaderBlock *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__header_block__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__HeaderBlock *
- osmpbf__header_block__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__HeaderBlock *)
- protobuf_c_message_unpack (&osmpbf__header_block__descriptor,
- allocator, len, data);
-}
-void osmpbf__header_block__free_unpacked
- (OSMPBF__HeaderBlock *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__header_block__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__header_bbox__init
- (OSMPBF__HeaderBBox *message)
-{
- static OSMPBF__HeaderBBox init_value = OSMPBF__HEADER_BBOX__INIT;
- *message = init_value;
-}
-size_t osmpbf__header_bbox__get_packed_size
- (const OSMPBF__HeaderBBox *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__header_bbox__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__header_bbox__pack
- (const OSMPBF__HeaderBBox *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__header_bbox__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__header_bbox__pack_to_buffer
- (const OSMPBF__HeaderBBox *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__header_bbox__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__HeaderBBox *
- osmpbf__header_bbox__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__HeaderBBox *)
- protobuf_c_message_unpack (&osmpbf__header_bbox__descriptor,
- allocator, len, data);
-}
-void osmpbf__header_bbox__free_unpacked
- (OSMPBF__HeaderBBox *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__header_bbox__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__primitive_block__init
- (OSMPBF__PrimitiveBlock *message)
-{
- static OSMPBF__PrimitiveBlock init_value = OSMPBF__PRIMITIVE_BLOCK__INIT;
- *message = init_value;
-}
-size_t osmpbf__primitive_block__get_packed_size
- (const OSMPBF__PrimitiveBlock *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__primitive_block__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__primitive_block__pack
- (const OSMPBF__PrimitiveBlock *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__primitive_block__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__primitive_block__pack_to_buffer
- (const OSMPBF__PrimitiveBlock *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__primitive_block__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__PrimitiveBlock *
- osmpbf__primitive_block__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__PrimitiveBlock *)
- protobuf_c_message_unpack (&osmpbf__primitive_block__descriptor,
- allocator, len, data);
-}
-void osmpbf__primitive_block__free_unpacked
- (OSMPBF__PrimitiveBlock *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__primitive_block__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__primitive_group__init
- (OSMPBF__PrimitiveGroup *message)
-{
- static OSMPBF__PrimitiveGroup init_value = OSMPBF__PRIMITIVE_GROUP__INIT;
- *message = init_value;
-}
-size_t osmpbf__primitive_group__get_packed_size
- (const OSMPBF__PrimitiveGroup *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__primitive_group__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__primitive_group__pack
- (const OSMPBF__PrimitiveGroup *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__primitive_group__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__primitive_group__pack_to_buffer
- (const OSMPBF__PrimitiveGroup *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__primitive_group__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__PrimitiveGroup *
- osmpbf__primitive_group__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__PrimitiveGroup *)
- protobuf_c_message_unpack (&osmpbf__primitive_group__descriptor,
- allocator, len, data);
-}
-void osmpbf__primitive_group__free_unpacked
- (OSMPBF__PrimitiveGroup *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__primitive_group__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__string_table__init
- (OSMPBF__StringTable *message)
-{
- static OSMPBF__StringTable init_value = OSMPBF__STRING_TABLE__INIT;
- *message = init_value;
-}
-size_t osmpbf__string_table__get_packed_size
- (const OSMPBF__StringTable *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__string_table__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__string_table__pack
- (const OSMPBF__StringTable *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__string_table__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__string_table__pack_to_buffer
- (const OSMPBF__StringTable *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__string_table__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__StringTable *
- osmpbf__string_table__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__StringTable *)
- protobuf_c_message_unpack (&osmpbf__string_table__descriptor,
- allocator, len, data);
-}
-void osmpbf__string_table__free_unpacked
- (OSMPBF__StringTable *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__string_table__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__info__init
- (OSMPBF__Info *message)
-{
- static OSMPBF__Info init_value = OSMPBF__INFO__INIT;
- *message = init_value;
-}
-size_t osmpbf__info__get_packed_size
- (const OSMPBF__Info *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__info__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__info__pack
- (const OSMPBF__Info *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__info__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__info__pack_to_buffer
- (const OSMPBF__Info *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__info__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__Info *
- osmpbf__info__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__Info *)
- protobuf_c_message_unpack (&osmpbf__info__descriptor,
- allocator, len, data);
-}
-void osmpbf__info__free_unpacked
- (OSMPBF__Info *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__info__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__dense_info__init
- (OSMPBF__DenseInfo *message)
-{
- static OSMPBF__DenseInfo init_value = OSMPBF__DENSE_INFO__INIT;
- *message = init_value;
-}
-size_t osmpbf__dense_info__get_packed_size
- (const OSMPBF__DenseInfo *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__dense_info__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__dense_info__pack
- (const OSMPBF__DenseInfo *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__dense_info__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__dense_info__pack_to_buffer
- (const OSMPBF__DenseInfo *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__dense_info__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__DenseInfo *
- osmpbf__dense_info__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__DenseInfo *)
- protobuf_c_message_unpack (&osmpbf__dense_info__descriptor,
- allocator, len, data);
-}
-void osmpbf__dense_info__free_unpacked
- (OSMPBF__DenseInfo *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__dense_info__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__change_set__init
- (OSMPBF__ChangeSet *message)
-{
- static OSMPBF__ChangeSet init_value = OSMPBF__CHANGE_SET__INIT;
- *message = init_value;
-}
-size_t osmpbf__change_set__get_packed_size
- (const OSMPBF__ChangeSet *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__change_set__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__change_set__pack
- (const OSMPBF__ChangeSet *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__change_set__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__change_set__pack_to_buffer
- (const OSMPBF__ChangeSet *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__change_set__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__ChangeSet *
- osmpbf__change_set__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__ChangeSet *)
- protobuf_c_message_unpack (&osmpbf__change_set__descriptor,
- allocator, len, data);
-}
-void osmpbf__change_set__free_unpacked
- (OSMPBF__ChangeSet *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__change_set__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__node__init
- (OSMPBF__Node *message)
-{
- static OSMPBF__Node init_value = OSMPBF__NODE__INIT;
- *message = init_value;
-}
-size_t osmpbf__node__get_packed_size
- (const OSMPBF__Node *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__node__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__node__pack
- (const OSMPBF__Node *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__node__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__node__pack_to_buffer
- (const OSMPBF__Node *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__node__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__Node *
- osmpbf__node__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__Node *)
- protobuf_c_message_unpack (&osmpbf__node__descriptor,
- allocator, len, data);
-}
-void osmpbf__node__free_unpacked
- (OSMPBF__Node *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__node__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__dense_nodes__init
- (OSMPBF__DenseNodes *message)
-{
- static OSMPBF__DenseNodes init_value = OSMPBF__DENSE_NODES__INIT;
- *message = init_value;
-}
-size_t osmpbf__dense_nodes__get_packed_size
- (const OSMPBF__DenseNodes *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__dense_nodes__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__dense_nodes__pack
- (const OSMPBF__DenseNodes *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__dense_nodes__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__dense_nodes__pack_to_buffer
- (const OSMPBF__DenseNodes *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__dense_nodes__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__DenseNodes *
- osmpbf__dense_nodes__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__DenseNodes *)
- protobuf_c_message_unpack (&osmpbf__dense_nodes__descriptor,
- allocator, len, data);
-}
-void osmpbf__dense_nodes__free_unpacked
- (OSMPBF__DenseNodes *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__dense_nodes__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__way__init
- (OSMPBF__Way *message)
-{
- static OSMPBF__Way init_value = OSMPBF__WAY__INIT;
- *message = init_value;
-}
-size_t osmpbf__way__get_packed_size
- (const OSMPBF__Way *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__way__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__way__pack
- (const OSMPBF__Way *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__way__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__way__pack_to_buffer
- (const OSMPBF__Way *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__way__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__Way *
- osmpbf__way__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__Way *)
- protobuf_c_message_unpack (&osmpbf__way__descriptor,
- allocator, len, data);
-}
-void osmpbf__way__free_unpacked
- (OSMPBF__Way *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__way__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-void osmpbf__relation__init
- (OSMPBF__Relation *message)
-{
- static OSMPBF__Relation init_value = OSMPBF__RELATION__INIT;
- *message = init_value;
-}
-size_t osmpbf__relation__get_packed_size
- (const OSMPBF__Relation *message)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__relation__descriptor);
- return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
-}
-size_t osmpbf__relation__pack
- (const OSMPBF__Relation *message,
- uint8_t *out)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__relation__descriptor);
- return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
-}
-size_t osmpbf__relation__pack_to_buffer
- (const OSMPBF__Relation *message,
- ProtobufCBuffer *buffer)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__relation__descriptor);
- return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
-}
-OSMPBF__Relation *
- osmpbf__relation__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- return (OSMPBF__Relation *)
- protobuf_c_message_unpack (&osmpbf__relation__descriptor,
- allocator, len, data);
-}
-void osmpbf__relation__free_unpacked
- (OSMPBF__Relation *message,
- ProtobufCAllocator *allocator)
-{
- PROTOBUF_C_ASSERT (message->base.descriptor == &osmpbf__relation__descriptor);
- protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
-}
-static const ProtobufCFieldDescriptor osmpbf__header_block__field_descriptors[5] =
-{
- {
- "bbox",
- 1,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_MESSAGE,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBlock, bbox),
- &osmpbf__header_bbox__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "required_features",
- 4,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_STRING,
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBlock, n_required_features),
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBlock, required_features),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "optional_features",
- 5,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_STRING,
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBlock, n_optional_features),
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBlock, optional_features),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "writingprogram",
- 16,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_STRING,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBlock, writingprogram),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "source",
- 17,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_STRING,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBlock, source),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__header_block__field_indices_by_name[] = {
- 0, /* field[0] = bbox */
- 2, /* field[2] = optional_features */
- 1, /* field[1] = required_features */
- 4, /* field[4] = source */
- 3, /* field[3] = writingprogram */
-};
-static const ProtobufCIntRange osmpbf__header_block__number_ranges[3 + 1] =
-{
- { 1, 0 },
- { 4, 1 },
- { 16, 3 },
- { 0, 5 }
-};
-const ProtobufCMessageDescriptor osmpbf__header_block__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.HeaderBlock",
- "HeaderBlock",
- "OSMPBF__HeaderBlock",
- "OSMPBF",
- sizeof(OSMPBF__HeaderBlock),
- 5,
- osmpbf__header_block__field_descriptors,
- osmpbf__header_block__field_indices_by_name,
- 3, osmpbf__header_block__number_ranges,
- (ProtobufCMessageInit) osmpbf__header_block__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const ProtobufCFieldDescriptor osmpbf__header_bbox__field_descriptors[4] =
-{
- {
- "left",
- 1,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_SINT64,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBBox, left),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "right",
- 2,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_SINT64,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBBox, right),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "top",
- 3,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_SINT64,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBBox, top),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "bottom",
- 4,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_SINT64,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__HeaderBBox, bottom),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__header_bbox__field_indices_by_name[] = {
- 3, /* field[3] = bottom */
- 0, /* field[0] = left */
- 1, /* field[1] = right */
- 2, /* field[2] = top */
-};
-static const ProtobufCIntRange osmpbf__header_bbox__number_ranges[1 + 1] =
-{
- { 1, 0 },
- { 0, 4 }
-};
-const ProtobufCMessageDescriptor osmpbf__header_bbox__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.HeaderBBox",
- "HeaderBBox",
- "OSMPBF__HeaderBBox",
- "OSMPBF",
- sizeof(OSMPBF__HeaderBBox),
- 4,
- osmpbf__header_bbox__field_descriptors,
- osmpbf__header_bbox__field_indices_by_name,
- 1, osmpbf__header_bbox__number_ranges,
- (ProtobufCMessageInit) osmpbf__header_bbox__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const int32_t osmpbf__primitive_block__granularity__default_value = 100;
-static const int64_t osmpbf__primitive_block__lat_offset__default_value = 0;
-static const int64_t osmpbf__primitive_block__lon_offset__default_value = 0;
-static const int32_t osmpbf__primitive_block__date_granularity__default_value = 1000;
-static const ProtobufCFieldDescriptor osmpbf__primitive_block__field_descriptors[6] =
-{
- {
- "stringtable",
- 1,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_MESSAGE,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, stringtable),
- &osmpbf__string_table__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "primitivegroup",
- 2,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_MESSAGE,
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, n_primitivegroup),
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, primitivegroup),
- &osmpbf__primitive_group__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "granularity",
- 17,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_INT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, has_granularity),
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, granularity),
- NULL,
- &osmpbf__primitive_block__granularity__default_value,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "date_granularity",
- 18,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_INT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, has_date_granularity),
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, date_granularity),
- NULL,
- &osmpbf__primitive_block__date_granularity__default_value,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "lat_offset",
- 19,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_INT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, has_lat_offset),
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, lat_offset),
- NULL,
- &osmpbf__primitive_block__lat_offset__default_value,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "lon_offset",
- 20,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_INT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, has_lon_offset),
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveBlock, lon_offset),
- NULL,
- &osmpbf__primitive_block__lon_offset__default_value,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__primitive_block__field_indices_by_name[] = {
- 3, /* field[3] = date_granularity */
- 2, /* field[2] = granularity */
- 4, /* field[4] = lat_offset */
- 5, /* field[5] = lon_offset */
- 1, /* field[1] = primitivegroup */
- 0, /* field[0] = stringtable */
-};
-static const ProtobufCIntRange osmpbf__primitive_block__number_ranges[2 + 1] =
-{
- { 1, 0 },
- { 17, 2 },
- { 0, 6 }
-};
-const ProtobufCMessageDescriptor osmpbf__primitive_block__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.PrimitiveBlock",
- "PrimitiveBlock",
- "OSMPBF__PrimitiveBlock",
- "OSMPBF",
- sizeof(OSMPBF__PrimitiveBlock),
- 6,
- osmpbf__primitive_block__field_descriptors,
- osmpbf__primitive_block__field_indices_by_name,
- 2, osmpbf__primitive_block__number_ranges,
- (ProtobufCMessageInit) osmpbf__primitive_block__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const ProtobufCFieldDescriptor osmpbf__primitive_group__field_descriptors[5] =
-{
- {
- "nodes",
- 1,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_MESSAGE,
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveGroup, n_nodes),
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveGroup, nodes),
- &osmpbf__node__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "dense",
- 2,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_MESSAGE,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveGroup, dense),
- &osmpbf__dense_nodes__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "ways",
- 3,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_MESSAGE,
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveGroup, n_ways),
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveGroup, ways),
- &osmpbf__way__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "relations",
- 4,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_MESSAGE,
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveGroup, n_relations),
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveGroup, relations),
- &osmpbf__relation__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "changesets",
- 5,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_MESSAGE,
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveGroup, n_changesets),
- PROTOBUF_C_OFFSETOF(OSMPBF__PrimitiveGroup, changesets),
- &osmpbf__change_set__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__primitive_group__field_indices_by_name[] = {
- 4, /* field[4] = changesets */
- 1, /* field[1] = dense */
- 0, /* field[0] = nodes */
- 3, /* field[3] = relations */
- 2, /* field[2] = ways */
-};
-static const ProtobufCIntRange osmpbf__primitive_group__number_ranges[1 + 1] =
-{
- { 1, 0 },
- { 0, 5 }
-};
-const ProtobufCMessageDescriptor osmpbf__primitive_group__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.PrimitiveGroup",
- "PrimitiveGroup",
- "OSMPBF__PrimitiveGroup",
- "OSMPBF",
- sizeof(OSMPBF__PrimitiveGroup),
- 5,
- osmpbf__primitive_group__field_descriptors,
- osmpbf__primitive_group__field_indices_by_name,
- 1, osmpbf__primitive_group__number_ranges,
- (ProtobufCMessageInit) osmpbf__primitive_group__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const ProtobufCFieldDescriptor osmpbf__string_table__field_descriptors[1] =
-{
- {
- "s",
- 1,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_BYTES,
- PROTOBUF_C_OFFSETOF(OSMPBF__StringTable, n_s),
- PROTOBUF_C_OFFSETOF(OSMPBF__StringTable, s),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__string_table__field_indices_by_name[] = {
- 0, /* field[0] = s */
-};
-static const ProtobufCIntRange osmpbf__string_table__number_ranges[1 + 1] =
-{
- { 1, 0 },
- { 0, 1 }
-};
-const ProtobufCMessageDescriptor osmpbf__string_table__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.StringTable",
- "StringTable",
- "OSMPBF__StringTable",
- "OSMPBF",
- sizeof(OSMPBF__StringTable),
- 1,
- osmpbf__string_table__field_descriptors,
- osmpbf__string_table__field_indices_by_name,
- 1, osmpbf__string_table__number_ranges,
- (ProtobufCMessageInit) osmpbf__string_table__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const int32_t osmpbf__info__version__default_value = -1;
-static const ProtobufCFieldDescriptor osmpbf__info__field_descriptors[5] =
-{
- {
- "version",
- 1,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_INT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Info, has_version),
- PROTOBUF_C_OFFSETOF(OSMPBF__Info, version),
- NULL,
- &osmpbf__info__version__default_value,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "timestamp",
- 2,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_INT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__Info, has_timestamp),
- PROTOBUF_C_OFFSETOF(OSMPBF__Info, timestamp),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "changeset",
- 3,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_INT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__Info, has_changeset),
- PROTOBUF_C_OFFSETOF(OSMPBF__Info, changeset),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "uid",
- 4,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_INT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Info, has_uid),
- PROTOBUF_C_OFFSETOF(OSMPBF__Info, uid),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "user_sid",
- 5,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_UINT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Info, has_user_sid),
- PROTOBUF_C_OFFSETOF(OSMPBF__Info, user_sid),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__info__field_indices_by_name[] = {
- 2, /* field[2] = changeset */
- 1, /* field[1] = timestamp */
- 3, /* field[3] = uid */
- 4, /* field[4] = user_sid */
- 0, /* field[0] = version */
-};
-static const ProtobufCIntRange osmpbf__info__number_ranges[1 + 1] =
-{
- { 1, 0 },
- { 0, 5 }
-};
-const ProtobufCMessageDescriptor osmpbf__info__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.Info",
- "Info",
- "OSMPBF__Info",
- "OSMPBF",
- sizeof(OSMPBF__Info),
- 5,
- osmpbf__info__field_descriptors,
- osmpbf__info__field_indices_by_name,
- 1, osmpbf__info__number_ranges,
- (ProtobufCMessageInit) osmpbf__info__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const ProtobufCFieldDescriptor osmpbf__dense_info__field_descriptors[5] =
-{
- {
- "version",
- 1,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_INT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseInfo, n_version),
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseInfo, version),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "timestamp",
- 2,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_SINT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseInfo, n_timestamp),
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseInfo, timestamp),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "changeset",
- 3,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_SINT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseInfo, n_changeset),
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseInfo, changeset),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "uid",
- 4,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_SINT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseInfo, n_uid),
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseInfo, uid),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "user_sid",
- 5,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_SINT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseInfo, n_user_sid),
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseInfo, user_sid),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__dense_info__field_indices_by_name[] = {
- 2, /* field[2] = changeset */
- 1, /* field[1] = timestamp */
- 3, /* field[3] = uid */
- 4, /* field[4] = user_sid */
- 0, /* field[0] = version */
-};
-static const ProtobufCIntRange osmpbf__dense_info__number_ranges[1 + 1] =
-{
- { 1, 0 },
- { 0, 5 }
-};
-const ProtobufCMessageDescriptor osmpbf__dense_info__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.DenseInfo",
- "DenseInfo",
- "OSMPBF__DenseInfo",
- "OSMPBF",
- sizeof(OSMPBF__DenseInfo),
- 5,
- osmpbf__dense_info__field_descriptors,
- osmpbf__dense_info__field_indices_by_name,
- 1, osmpbf__dense_info__number_ranges,
- (ProtobufCMessageInit) osmpbf__dense_info__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const ProtobufCFieldDescriptor osmpbf__change_set__field_descriptors[1] =
-{
- {
- "id",
- 1,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_INT64,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__ChangeSet, id),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__change_set__field_indices_by_name[] = {
- 0, /* field[0] = id */
-};
-static const ProtobufCIntRange osmpbf__change_set__number_ranges[1 + 1] =
-{
- { 1, 0 },
- { 0, 1 }
-};
-const ProtobufCMessageDescriptor osmpbf__change_set__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.ChangeSet",
- "ChangeSet",
- "OSMPBF__ChangeSet",
- "OSMPBF",
- sizeof(OSMPBF__ChangeSet),
- 1,
- osmpbf__change_set__field_descriptors,
- osmpbf__change_set__field_indices_by_name,
- 1, osmpbf__change_set__number_ranges,
- (ProtobufCMessageInit) osmpbf__change_set__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const ProtobufCFieldDescriptor osmpbf__node__field_descriptors[6] =
-{
- {
- "id",
- 1,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_SINT64,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__Node, id),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "keys",
- 2,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_UINT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Node, n_keys),
- PROTOBUF_C_OFFSETOF(OSMPBF__Node, keys),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "vals",
- 3,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_UINT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Node, n_vals),
- PROTOBUF_C_OFFSETOF(OSMPBF__Node, vals),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "info",
- 4,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_MESSAGE,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__Node, info),
- &osmpbf__info__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "lat",
- 8,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_SINT64,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__Node, lat),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "lon",
- 9,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_SINT64,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__Node, lon),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__node__field_indices_by_name[] = {
- 0, /* field[0] = id */
- 3, /* field[3] = info */
- 1, /* field[1] = keys */
- 4, /* field[4] = lat */
- 5, /* field[5] = lon */
- 2, /* field[2] = vals */
-};
-static const ProtobufCIntRange osmpbf__node__number_ranges[2 + 1] =
-{
- { 1, 0 },
- { 8, 4 },
- { 0, 6 }
-};
-const ProtobufCMessageDescriptor osmpbf__node__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.Node",
- "Node",
- "OSMPBF__Node",
- "OSMPBF",
- sizeof(OSMPBF__Node),
- 6,
- osmpbf__node__field_descriptors,
- osmpbf__node__field_indices_by_name,
- 2, osmpbf__node__number_ranges,
- (ProtobufCMessageInit) osmpbf__node__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const ProtobufCFieldDescriptor osmpbf__dense_nodes__field_descriptors[5] =
-{
- {
- "id",
- 1,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_SINT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseNodes, n_id),
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseNodes, id),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "denseinfo",
- 5,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_MESSAGE,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseNodes, denseinfo),
- &osmpbf__dense_info__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "lat",
- 8,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_SINT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseNodes, n_lat),
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseNodes, lat),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "lon",
- 9,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_SINT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseNodes, n_lon),
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseNodes, lon),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "keys_vals",
- 10,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_INT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseNodes, n_keys_vals),
- PROTOBUF_C_OFFSETOF(OSMPBF__DenseNodes, keys_vals),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__dense_nodes__field_indices_by_name[] = {
- 1, /* field[1] = denseinfo */
- 0, /* field[0] = id */
- 4, /* field[4] = keys_vals */
- 2, /* field[2] = lat */
- 3, /* field[3] = lon */
-};
-static const ProtobufCIntRange osmpbf__dense_nodes__number_ranges[3 + 1] =
-{
- { 1, 0 },
- { 5, 1 },
- { 8, 2 },
- { 0, 5 }
-};
-const ProtobufCMessageDescriptor osmpbf__dense_nodes__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.DenseNodes",
- "DenseNodes",
- "OSMPBF__DenseNodes",
- "OSMPBF",
- sizeof(OSMPBF__DenseNodes),
- 5,
- osmpbf__dense_nodes__field_descriptors,
- osmpbf__dense_nodes__field_indices_by_name,
- 3, osmpbf__dense_nodes__number_ranges,
- (ProtobufCMessageInit) osmpbf__dense_nodes__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-static const ProtobufCFieldDescriptor osmpbf__way__field_descriptors[5] =
-{
- {
- "id",
- 1,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_INT64,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__Way, id),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "keys",
- 2,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_UINT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Way, n_keys),
- PROTOBUF_C_OFFSETOF(OSMPBF__Way, keys),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "vals",
- 3,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_UINT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Way, n_vals),
- PROTOBUF_C_OFFSETOF(OSMPBF__Way, vals),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "info",
- 4,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_MESSAGE,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__Way, info),
- &osmpbf__info__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "refs",
- 8,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_SINT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__Way, n_refs),
- PROTOBUF_C_OFFSETOF(OSMPBF__Way, refs),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__way__field_indices_by_name[] = {
- 0, /* field[0] = id */
- 3, /* field[3] = info */
- 1, /* field[1] = keys */
- 4, /* field[4] = refs */
- 2, /* field[2] = vals */
-};
-static const ProtobufCIntRange osmpbf__way__number_ranges[2 + 1] =
-{
- { 1, 0 },
- { 8, 4 },
- { 0, 5 }
-};
-const ProtobufCMessageDescriptor osmpbf__way__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.Way",
- "Way",
- "OSMPBF__Way",
- "OSMPBF",
- sizeof(OSMPBF__Way),
- 5,
- osmpbf__way__field_descriptors,
- osmpbf__way__field_indices_by_name,
- 2, osmpbf__way__number_ranges,
- (ProtobufCMessageInit) osmpbf__way__init,
- NULL,NULL,NULL /* reserved[123] */
-};
-const ProtobufCEnumValue osmpbf__relation__member_type__enum_values_by_number[3] =
-{
- { "NODE", "OSMPBF__RELATION__MEMBER_TYPE__NODE", 0 },
- { "WAY", "OSMPBF__RELATION__MEMBER_TYPE__WAY", 1 },
- { "RELATION", "OSMPBF__RELATION__MEMBER_TYPE__RELATION", 2 },
-};
-static const ProtobufCIntRange osmpbf__relation__member_type__value_ranges[] = {
-{0, 0},{0, 3}
-};
-const ProtobufCEnumValueIndex osmpbf__relation__member_type__enum_values_by_name[3] =
-{
- { "NODE", 0 },
- { "RELATION", 2 },
- { "WAY", 1 },
-};
-const ProtobufCEnumDescriptor osmpbf__relation__member_type__descriptor =
-{
- PROTOBUF_C_ENUM_DESCRIPTOR_MAGIC,
- "OSMPBF.Relation.MemberType",
- "MemberType",
- "OSMPBF__Relation__MemberType",
- "OSMPBF",
- 3,
- osmpbf__relation__member_type__enum_values_by_number,
- 3,
- osmpbf__relation__member_type__enum_values_by_name,
- 1,
- osmpbf__relation__member_type__value_ranges,
- NULL,NULL,NULL,NULL /* reserved[1234] */
-};
-static const ProtobufCFieldDescriptor osmpbf__relation__field_descriptors[7] =
-{
- {
- "id",
- 1,
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_TYPE_INT64,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, id),
- NULL,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "keys",
- 2,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_UINT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, n_keys),
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, keys),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "vals",
- 3,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_UINT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, n_vals),
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, vals),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "info",
- 4,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_TYPE_MESSAGE,
- 0, /* quantifier_offset */
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, info),
- &osmpbf__info__descriptor,
- NULL,
- 0, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "roles_sid",
- 8,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_INT32,
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, n_roles_sid),
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, roles_sid),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "memids",
- 9,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_SINT64,
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, n_memids),
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, memids),
- NULL,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
- {
- "types",
- 10,
- PROTOBUF_C_LABEL_REPEATED,
- PROTOBUF_C_TYPE_ENUM,
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, n_types),
- PROTOBUF_C_OFFSETOF(OSMPBF__Relation, types),
- &osmpbf__relation__member_type__descriptor,
- NULL,
- 1, /* packed */
- 0,NULL,NULL /* reserved1,reserved2, etc */
- },
-};
-static const unsigned osmpbf__relation__field_indices_by_name[] = {
- 0, /* field[0] = id */
- 3, /* field[3] = info */
- 1, /* field[1] = keys */
- 5, /* field[5] = memids */
- 4, /* field[4] = roles_sid */
- 6, /* field[6] = types */
- 2, /* field[2] = vals */
-};
-static const ProtobufCIntRange osmpbf__relation__number_ranges[2 + 1] =
-{
- { 1, 0 },
- { 8, 4 },
- { 0, 7 }
-};
-const ProtobufCMessageDescriptor osmpbf__relation__descriptor =
-{
- PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC,
- "OSMPBF.Relation",
- "Relation",
- "OSMPBF__Relation",
- "OSMPBF",
- sizeof(OSMPBF__Relation),
- 7,
- osmpbf__relation__field_descriptors,
- osmpbf__relation__field_indices_by_name,
- 2, osmpbf__relation__number_ranges,
- (ProtobufCMessageInit) osmpbf__relation__init,
- NULL,NULL,NULL /* reserved[123] */
-};
diff --git a/navit/maptool/generated-code/osmformat.pb-c.h b/navit/maptool/generated-code/osmformat.pb-c.h
deleted file mode 100644
index 32ac75767..000000000
--- a/navit/maptool/generated-code/osmformat.pb-c.h
+++ /dev/null
@@ -1,523 +0,0 @@
-/* Generated by the protocol buffer compiler. DO NOT EDIT! */
-
-#ifndef PROTOBUF_C_osmformat_2eproto__INCLUDED
-#define PROTOBUF_C_osmformat_2eproto__INCLUDED
-
-#include <google/protobuf-c/protobuf-c.h>
-
-PROTOBUF_C_BEGIN_DECLS
-
-
-typedef struct _OSMPBF__HeaderBlock OSMPBF__HeaderBlock;
-typedef struct _OSMPBF__HeaderBBox OSMPBF__HeaderBBox;
-typedef struct _OSMPBF__PrimitiveBlock OSMPBF__PrimitiveBlock;
-typedef struct _OSMPBF__PrimitiveGroup OSMPBF__PrimitiveGroup;
-typedef struct _OSMPBF__StringTable OSMPBF__StringTable;
-typedef struct _OSMPBF__Info OSMPBF__Info;
-typedef struct _OSMPBF__DenseInfo OSMPBF__DenseInfo;
-typedef struct _OSMPBF__ChangeSet OSMPBF__ChangeSet;
-typedef struct _OSMPBF__Node OSMPBF__Node;
-typedef struct _OSMPBF__DenseNodes OSMPBF__DenseNodes;
-typedef struct _OSMPBF__Way OSMPBF__Way;
-typedef struct _OSMPBF__Relation OSMPBF__Relation;
-
-
-/* --- enums --- */
-
-typedef enum _OSMPBF__Relation__MemberType {
- OSMPBF__RELATION__MEMBER_TYPE__NODE = 0,
- OSMPBF__RELATION__MEMBER_TYPE__WAY = 1,
- OSMPBF__RELATION__MEMBER_TYPE__RELATION = 2
-} OSMPBF__Relation__MemberType;
-
-/* --- messages --- */
-
-struct _OSMPBF__HeaderBlock
-{
- ProtobufCMessage base;
- OSMPBF__HeaderBBox *bbox;
- size_t n_required_features;
- char **required_features;
- size_t n_optional_features;
- char **optional_features;
- char *writingprogram;
- char *source;
-};
-#define OSMPBF__HEADER_BLOCK__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__header_block__descriptor) \
- , NULL, 0,NULL, 0,NULL, NULL, NULL }
-
-
-struct _OSMPBF__HeaderBBox
-{
- ProtobufCMessage base;
- int64_t left;
- int64_t right;
- int64_t top;
- int64_t bottom;
-};
-#define OSMPBF__HEADER_BBOX__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__header_bbox__descriptor) \
- , 0, 0, 0, 0 }
-
-
-struct _OSMPBF__PrimitiveBlock
-{
- ProtobufCMessage base;
- OSMPBF__StringTable *stringtable;
- size_t n_primitivegroup;
- OSMPBF__PrimitiveGroup **primitivegroup;
- protobuf_c_boolean has_granularity;
- int32_t granularity;
- protobuf_c_boolean has_lat_offset;
- int64_t lat_offset;
- protobuf_c_boolean has_lon_offset;
- int64_t lon_offset;
- protobuf_c_boolean has_date_granularity;
- int32_t date_granularity;
-};
-#define OSMPBF__PRIMITIVE_BLOCK__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__primitive_block__descriptor) \
- , NULL, 0,NULL, 0,100, 0,0, 0,0, 0,1000 }
-
-
-struct _OSMPBF__PrimitiveGroup
-{
- ProtobufCMessage base;
- size_t n_nodes;
- OSMPBF__Node **nodes;
- OSMPBF__DenseNodes *dense;
- size_t n_ways;
- OSMPBF__Way **ways;
- size_t n_relations;
- OSMPBF__Relation **relations;
- size_t n_changesets;
- OSMPBF__ChangeSet **changesets;
-};
-#define OSMPBF__PRIMITIVE_GROUP__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__primitive_group__descriptor) \
- , 0,NULL, NULL, 0,NULL, 0,NULL, 0,NULL }
-
-
-struct _OSMPBF__StringTable
-{
- ProtobufCMessage base;
- size_t n_s;
- ProtobufCBinaryData *s;
-};
-#define OSMPBF__STRING_TABLE__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__string_table__descriptor) \
- , 0,NULL }
-
-
-struct _OSMPBF__Info
-{
- ProtobufCMessage base;
- protobuf_c_boolean has_version;
- int32_t version;
- protobuf_c_boolean has_timestamp;
- int64_t timestamp;
- protobuf_c_boolean has_changeset;
- int64_t changeset;
- protobuf_c_boolean has_uid;
- int32_t uid;
- protobuf_c_boolean has_user_sid;
- uint32_t user_sid;
-};
-#define OSMPBF__INFO__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__info__descriptor) \
- , 0,-1, 0,0, 0,0, 0,0, 0,0 }
-
-
-struct _OSMPBF__DenseInfo
-{
- ProtobufCMessage base;
- size_t n_version;
- int32_t *version;
- size_t n_timestamp;
- int64_t *timestamp;
- size_t n_changeset;
- int64_t *changeset;
- size_t n_uid;
- int32_t *uid;
- size_t n_user_sid;
- int32_t *user_sid;
-};
-#define OSMPBF__DENSE_INFO__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__dense_info__descriptor) \
- , 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL }
-
-
-struct _OSMPBF__ChangeSet
-{
- ProtobufCMessage base;
- int64_t id;
-};
-#define OSMPBF__CHANGE_SET__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__change_set__descriptor) \
- , 0 }
-
-
-struct _OSMPBF__Node
-{
- ProtobufCMessage base;
- int64_t id;
- size_t n_keys;
- uint32_t *keys;
- size_t n_vals;
- uint32_t *vals;
- OSMPBF__Info *info;
- int64_t lat;
- int64_t lon;
-};
-#define OSMPBF__NODE__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__node__descriptor) \
- , 0, 0,NULL, 0,NULL, NULL, 0, 0 }
-
-
-struct _OSMPBF__DenseNodes
-{
- ProtobufCMessage base;
- size_t n_id;
- int64_t *id;
- OSMPBF__DenseInfo *denseinfo;
- size_t n_lat;
- int64_t *lat;
- size_t n_lon;
- int64_t *lon;
- size_t n_keys_vals;
- int32_t *keys_vals;
-};
-#define OSMPBF__DENSE_NODES__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__dense_nodes__descriptor) \
- , 0,NULL, NULL, 0,NULL, 0,NULL, 0,NULL }
-
-
-struct _OSMPBF__Way
-{
- ProtobufCMessage base;
- int64_t id;
- size_t n_keys;
- uint32_t *keys;
- size_t n_vals;
- uint32_t *vals;
- OSMPBF__Info *info;
- size_t n_refs;
- int64_t *refs;
-};
-#define OSMPBF__WAY__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__way__descriptor) \
- , 0, 0,NULL, 0,NULL, NULL, 0,NULL }
-
-
-struct _OSMPBF__Relation
-{
- ProtobufCMessage base;
- int64_t id;
- size_t n_keys;
- uint32_t *keys;
- size_t n_vals;
- uint32_t *vals;
- OSMPBF__Info *info;
- size_t n_roles_sid;
- int32_t *roles_sid;
- size_t n_memids;
- int64_t *memids;
- size_t n_types;
- OSMPBF__Relation__MemberType *types;
-};
-#define OSMPBF__RELATION__INIT \
- { PROTOBUF_C_MESSAGE_INIT (&osmpbf__relation__descriptor) \
- , 0, 0,NULL, 0,NULL, NULL, 0,NULL, 0,NULL, 0,NULL }
-
-
-/* OSMPBF__HeaderBlock methods */
-void osmpbf__header_block__init
- (OSMPBF__HeaderBlock *message);
-size_t osmpbf__header_block__get_packed_size
- (const OSMPBF__HeaderBlock *message);
-size_t osmpbf__header_block__pack
- (const OSMPBF__HeaderBlock *message,
- uint8_t *out);
-size_t osmpbf__header_block__pack_to_buffer
- (const OSMPBF__HeaderBlock *message,
- ProtobufCBuffer *buffer);
-OSMPBF__HeaderBlock *
- osmpbf__header_block__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__header_block__free_unpacked
- (OSMPBF__HeaderBlock *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__HeaderBBox methods */
-void osmpbf__header_bbox__init
- (OSMPBF__HeaderBBox *message);
-size_t osmpbf__header_bbox__get_packed_size
- (const OSMPBF__HeaderBBox *message);
-size_t osmpbf__header_bbox__pack
- (const OSMPBF__HeaderBBox *message,
- uint8_t *out);
-size_t osmpbf__header_bbox__pack_to_buffer
- (const OSMPBF__HeaderBBox *message,
- ProtobufCBuffer *buffer);
-OSMPBF__HeaderBBox *
- osmpbf__header_bbox__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__header_bbox__free_unpacked
- (OSMPBF__HeaderBBox *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__PrimitiveBlock methods */
-void osmpbf__primitive_block__init
- (OSMPBF__PrimitiveBlock *message);
-size_t osmpbf__primitive_block__get_packed_size
- (const OSMPBF__PrimitiveBlock *message);
-size_t osmpbf__primitive_block__pack
- (const OSMPBF__PrimitiveBlock *message,
- uint8_t *out);
-size_t osmpbf__primitive_block__pack_to_buffer
- (const OSMPBF__PrimitiveBlock *message,
- ProtobufCBuffer *buffer);
-OSMPBF__PrimitiveBlock *
- osmpbf__primitive_block__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__primitive_block__free_unpacked
- (OSMPBF__PrimitiveBlock *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__PrimitiveGroup methods */
-void osmpbf__primitive_group__init
- (OSMPBF__PrimitiveGroup *message);
-size_t osmpbf__primitive_group__get_packed_size
- (const OSMPBF__PrimitiveGroup *message);
-size_t osmpbf__primitive_group__pack
- (const OSMPBF__PrimitiveGroup *message,
- uint8_t *out);
-size_t osmpbf__primitive_group__pack_to_buffer
- (const OSMPBF__PrimitiveGroup *message,
- ProtobufCBuffer *buffer);
-OSMPBF__PrimitiveGroup *
- osmpbf__primitive_group__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__primitive_group__free_unpacked
- (OSMPBF__PrimitiveGroup *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__StringTable methods */
-void osmpbf__string_table__init
- (OSMPBF__StringTable *message);
-size_t osmpbf__string_table__get_packed_size
- (const OSMPBF__StringTable *message);
-size_t osmpbf__string_table__pack
- (const OSMPBF__StringTable *message,
- uint8_t *out);
-size_t osmpbf__string_table__pack_to_buffer
- (const OSMPBF__StringTable *message,
- ProtobufCBuffer *buffer);
-OSMPBF__StringTable *
- osmpbf__string_table__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__string_table__free_unpacked
- (OSMPBF__StringTable *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__Info methods */
-void osmpbf__info__init
- (OSMPBF__Info *message);
-size_t osmpbf__info__get_packed_size
- (const OSMPBF__Info *message);
-size_t osmpbf__info__pack
- (const OSMPBF__Info *message,
- uint8_t *out);
-size_t osmpbf__info__pack_to_buffer
- (const OSMPBF__Info *message,
- ProtobufCBuffer *buffer);
-OSMPBF__Info *
- osmpbf__info__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__info__free_unpacked
- (OSMPBF__Info *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__DenseInfo methods */
-void osmpbf__dense_info__init
- (OSMPBF__DenseInfo *message);
-size_t osmpbf__dense_info__get_packed_size
- (const OSMPBF__DenseInfo *message);
-size_t osmpbf__dense_info__pack
- (const OSMPBF__DenseInfo *message,
- uint8_t *out);
-size_t osmpbf__dense_info__pack_to_buffer
- (const OSMPBF__DenseInfo *message,
- ProtobufCBuffer *buffer);
-OSMPBF__DenseInfo *
- osmpbf__dense_info__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__dense_info__free_unpacked
- (OSMPBF__DenseInfo *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__ChangeSet methods */
-void osmpbf__change_set__init
- (OSMPBF__ChangeSet *message);
-size_t osmpbf__change_set__get_packed_size
- (const OSMPBF__ChangeSet *message);
-size_t osmpbf__change_set__pack
- (const OSMPBF__ChangeSet *message,
- uint8_t *out);
-size_t osmpbf__change_set__pack_to_buffer
- (const OSMPBF__ChangeSet *message,
- ProtobufCBuffer *buffer);
-OSMPBF__ChangeSet *
- osmpbf__change_set__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__change_set__free_unpacked
- (OSMPBF__ChangeSet *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__Node methods */
-void osmpbf__node__init
- (OSMPBF__Node *message);
-size_t osmpbf__node__get_packed_size
- (const OSMPBF__Node *message);
-size_t osmpbf__node__pack
- (const OSMPBF__Node *message,
- uint8_t *out);
-size_t osmpbf__node__pack_to_buffer
- (const OSMPBF__Node *message,
- ProtobufCBuffer *buffer);
-OSMPBF__Node *
- osmpbf__node__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__node__free_unpacked
- (OSMPBF__Node *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__DenseNodes methods */
-void osmpbf__dense_nodes__init
- (OSMPBF__DenseNodes *message);
-size_t osmpbf__dense_nodes__get_packed_size
- (const OSMPBF__DenseNodes *message);
-size_t osmpbf__dense_nodes__pack
- (const OSMPBF__DenseNodes *message,
- uint8_t *out);
-size_t osmpbf__dense_nodes__pack_to_buffer
- (const OSMPBF__DenseNodes *message,
- ProtobufCBuffer *buffer);
-OSMPBF__DenseNodes *
- osmpbf__dense_nodes__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__dense_nodes__free_unpacked
- (OSMPBF__DenseNodes *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__Way methods */
-void osmpbf__way__init
- (OSMPBF__Way *message);
-size_t osmpbf__way__get_packed_size
- (const OSMPBF__Way *message);
-size_t osmpbf__way__pack
- (const OSMPBF__Way *message,
- uint8_t *out);
-size_t osmpbf__way__pack_to_buffer
- (const OSMPBF__Way *message,
- ProtobufCBuffer *buffer);
-OSMPBF__Way *
- osmpbf__way__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__way__free_unpacked
- (OSMPBF__Way *message,
- ProtobufCAllocator *allocator);
-/* OSMPBF__Relation methods */
-void osmpbf__relation__init
- (OSMPBF__Relation *message);
-size_t osmpbf__relation__get_packed_size
- (const OSMPBF__Relation *message);
-size_t osmpbf__relation__pack
- (const OSMPBF__Relation *message,
- uint8_t *out);
-size_t osmpbf__relation__pack_to_buffer
- (const OSMPBF__Relation *message,
- ProtobufCBuffer *buffer);
-OSMPBF__Relation *
- osmpbf__relation__unpack
- (ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void osmpbf__relation__free_unpacked
- (OSMPBF__Relation *message,
- ProtobufCAllocator *allocator);
-/* --- per-message closures --- */
-
-typedef void (*OSMPBF__HeaderBlock_Closure)
- (const OSMPBF__HeaderBlock *message,
- void *closure_data);
-typedef void (*OSMPBF__HeaderBBox_Closure)
- (const OSMPBF__HeaderBBox *message,
- void *closure_data);
-typedef void (*OSMPBF__PrimitiveBlock_Closure)
- (const OSMPBF__PrimitiveBlock *message,
- void *closure_data);
-typedef void (*OSMPBF__PrimitiveGroup_Closure)
- (const OSMPBF__PrimitiveGroup *message,
- void *closure_data);
-typedef void (*OSMPBF__StringTable_Closure)
- (const OSMPBF__StringTable *message,
- void *closure_data);
-typedef void (*OSMPBF__Info_Closure)
- (const OSMPBF__Info *message,
- void *closure_data);
-typedef void (*OSMPBF__DenseInfo_Closure)
- (const OSMPBF__DenseInfo *message,
- void *closure_data);
-typedef void (*OSMPBF__ChangeSet_Closure)
- (const OSMPBF__ChangeSet *message,
- void *closure_data);
-typedef void (*OSMPBF__Node_Closure)
- (const OSMPBF__Node *message,
- void *closure_data);
-typedef void (*OSMPBF__DenseNodes_Closure)
- (const OSMPBF__DenseNodes *message,
- void *closure_data);
-typedef void (*OSMPBF__Way_Closure)
- (const OSMPBF__Way *message,
- void *closure_data);
-typedef void (*OSMPBF__Relation_Closure)
- (const OSMPBF__Relation *message,
- void *closure_data);
-
-/* --- services --- */
-
-
-/* --- descriptors --- */
-
-extern const ProtobufCMessageDescriptor osmpbf__header_block__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__header_bbox__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__primitive_block__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__primitive_group__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__string_table__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__info__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__dense_info__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__change_set__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__node__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__dense_nodes__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__way__descriptor;
-extern const ProtobufCMessageDescriptor osmpbf__relation__descriptor;
-extern const ProtobufCEnumDescriptor osmpbf__relation__member_type__descriptor;
-
-PROTOBUF_C_END_DECLS
-
-
-#endif /* PROTOBUF_osmformat_2eproto__INCLUDED */
diff --git a/navit/maptool/google/protobuf-c/protobuf-c-private.h b/navit/maptool/google/protobuf-c/protobuf-c-private.h
deleted file mode 100644
index 01bbd35aa..000000000
--- a/navit/maptool/google/protobuf-c/protobuf-c-private.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* --- protobuf-c-private.h: private structures and functions --- */
-/*
- * Copyright 2008, Dave Benson.
- *
- * 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.
- */
-
-
-/* === needs to be declared for the PROTOBUF_C_BUFFER_SIMPLE_INIT macro === */
-
-void protobuf_c_buffer_simple_append (ProtobufCBuffer *buffer,
- size_t len,
- const unsigned char *data);
-
-/* === stuff which needs to be declared for use in the generated code === */
-
-struct _ProtobufCEnumValueIndex
-{
- const char *name;
- unsigned index; /* into values[] array */
-};
-
-/* IntRange: helper structure for optimizing
- int => index lookups
- in the case where the keys are mostly consecutive values,
- as they presumably are for enums and fields.
-
- The data structures assumes that the values in the original
- array are sorted */
-struct _ProtobufCIntRange
-{
- int start_value;
- unsigned orig_index;
- /* NOTE: the number of values in the range can
- be inferred by looking at the next element's orig_index.
- a dummy element is added to make this simple */
-};
-
-
-/* === declared for exposition on ProtobufCIntRange === */
-/* note: ranges must have an extra sentinel IntRange at the end whose
- orig_index is set to the number of actual values in the original array */
-/* returns -1 if no orig_index found */
-int protobuf_c_int_ranges_lookup (unsigned n_ranges,
- ProtobufCIntRange *ranges);
-
-#define PROTOBUF_C_SERVICE_DESCRIPTOR_MAGIC 0x14159bc3
-#define PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC 0x28aaeef9
-#define PROTOBUF_C_ENUM_DESCRIPTOR_MAGIC 0x114315af
-
-/* === behind the scenes on the generated service's __init functions */
-typedef void (*ProtobufCServiceDestroy) (ProtobufCService *service);
-void
-protobuf_c_service_generated_init (ProtobufCService *service,
- const ProtobufCServiceDescriptor *descriptor,
- ProtobufCServiceDestroy destroy);
-
-void
-protobuf_c_service_invoke_internal(ProtobufCService *service,
- unsigned method_index,
- const ProtobufCMessage *input,
- ProtobufCClosure closure,
- void *closure_data);
diff --git a/navit/maptool/google/protobuf-c/protobuf-c.c b/navit/maptool/google/protobuf-c/protobuf-c.c
deleted file mode 100644
index 7cb727bf9..000000000
--- a/navit/maptool/google/protobuf-c/protobuf-c.c
+++ /dev/null
@@ -1,2603 +0,0 @@
-/* --- protobuf-c.c: public protobuf c runtime implementation --- */
-
-/*
- * Copyright 2008, Dave Benson.
- *
- * 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.
- */
-
-/* TODO items:
-
- * 64-BIT OPTIMIZATION: certain implementations use 32-bit math even on 64-bit platforms
- (uint64_size, uint64_pack, parse_uint64)
-
- * get_packed_size and pack seem to use type-prefixed names,
- whereas parse uses type-suffixed names. pick one and stick with it.
- Decision: go with type-suffixed, since the type (or its instance)
- is typically the object of the verb.
- NOTE: perhaps the "parse" methods should be reanemd to "unpack"
- at the same time. (this only affects internal (static) functions)
-
- * use TRUE and FALSE instead of 1 and 0 as appropriate
-
- * use size_t consistently
- */
-
-#include <stdio.h> /* for occasional printf()s */
-#include <stdlib.h> /* for abort(), malloc() etc */
-#include <string.h> /* for strlen(), memcpy(), memmove() */
-
-#ifndef PRINT_UNPACK_ERRORS
-#define PRINT_UNPACK_ERRORS 1
-#endif
-
-#include "protobuf-c.h"
-
-#define MAX_UINT64_ENCODED_SIZE 10
-
-/* convenience macros */
-#define TMPALLOC(allocator, size) ((allocator)->tmp_alloc ((allocator)->allocator_data, (size)))
-#define FREE(allocator, ptr) \
- do { if ((ptr) != NULL) ((allocator)->free ((allocator)->allocator_data, (ptr))); } while(0)
-#define UNALIGNED_ALLOC(allocator, size) ALLOC (allocator, size) /* placeholder */
-#define STRUCT_MEMBER_P(struct_p, struct_offset) \
- ((void *) ((uint8_t*) (struct_p) + (struct_offset)))
-#define STRUCT_MEMBER(member_type, struct_p, struct_offset) \
- (*(member_type*) STRUCT_MEMBER_P ((struct_p), (struct_offset)))
-#define STRUCT_MEMBER_PTR(member_type, struct_p, struct_offset) \
- ((member_type*) STRUCT_MEMBER_P ((struct_p), (struct_offset)))
-#define TRUE 1
-#define FALSE 0
-
-static void
-alloc_failed_warning (unsigned size, const char *filename, unsigned line)
-{
- fprintf (stderr,
- "WARNING: out-of-memory allocating a block of size %u (%s:%u)\n",
- size, filename, line);
-}
-
-/* Try to allocate memory, running some special code if it fails. */
-#define DO_ALLOC(dst, allocator, size, fail_code) \
-{ size_t da__allocation_size = (size); \
- if (da__allocation_size == 0) \
- dst = NULL; \
- else if ((dst=((allocator)->alloc ((allocator)->allocator_data, \
- da__allocation_size))) == NULL) \
- { \
- alloc_failed_warning (da__allocation_size, __FILE__, __LINE__); \
- fail_code; \
- } \
-}
-#define DO_UNALIGNED_ALLOC DO_ALLOC /* placeholder */
-
-
-
-#define ASSERT_IS_ENUM_DESCRIPTOR(desc) \
- assert((desc)->magic == PROTOBUF_C_ENUM_DESCRIPTOR_MAGIC)
-#define ASSERT_IS_MESSAGE_DESCRIPTOR(desc) \
- assert((desc)->magic == PROTOBUF_C_MESSAGE_DESCRIPTOR_MAGIC)
-#define ASSERT_IS_MESSAGE(message) \
- ASSERT_IS_MESSAGE_DESCRIPTOR((message)->descriptor)
-#define ASSERT_IS_SERVICE_DESCRIPTOR(desc) \
- assert((desc)->magic == PROTOBUF_C_SERVICE_DESCRIPTOR_MAGIC)
-
-/* --- allocator --- */
-
-static void protobuf_c_out_of_memory_default (void)
-{
- fprintf (stderr, "Out Of Memory!!!\n");
- abort ();
-}
-void (*protobuf_c_out_of_memory) (void) = protobuf_c_out_of_memory_default;
-
-static void *system_alloc(void *allocator_data, size_t size)
-{
- void *rv;
- (void) allocator_data;
- if (size == 0)
- return NULL;
- rv = malloc (size);
- if (rv == NULL)
- protobuf_c_out_of_memory ();
- return rv;
-}
-
-static void system_free (void *allocator_data, void *data)
-{
- (void) allocator_data;
- if (data)
- free (data);
-}
-
-/* Some users may configure the default allocator;
- providing your own allocator to unpack() is prefered.
- this allocator is still used for packing nested messages. */
-ProtobufCAllocator protobuf_c_default_allocator =
-{
- system_alloc,
- system_free,
- NULL,
- 8192,
- NULL
-};
-
-/* Users should NOT modify this structure,
- but it's difficult to prevent.
-
- please modify protobuf_c_default_allocator instead. */
-ProtobufCAllocator protobuf_c_system_allocator =
-{
- system_alloc,
- system_free,
- NULL,
- 8192,
- NULL
-};
-
-/* === buffer-simple === */
-void
-protobuf_c_buffer_simple_append (ProtobufCBuffer *buffer,
- size_t len,
- const uint8_t *data)
-{
- ProtobufCBufferSimple *simp = (ProtobufCBufferSimple *) buffer;
- size_t new_len = simp->len + len;
- if (new_len > simp->alloced)
- {
- size_t new_alloced = simp->alloced * 2;
- uint8_t *new_data;
- while (new_alloced < new_len)
- new_alloced += new_alloced;
- DO_ALLOC (new_data, &protobuf_c_default_allocator, new_alloced, return);
- memcpy (new_data, simp->data, simp->len);
- if (simp->must_free_data)
- FREE (&protobuf_c_default_allocator, simp->data);
- else
- simp->must_free_data = 1;
- simp->data = new_data;
- simp->alloced = new_alloced;
- }
- memcpy (simp->data + simp->len, data, len);
- simp->len = new_len;
-}
-
-/* === get_packed_size() === */
-
-/* Return the number of bytes required to store the
- tag for the field (which includes 3 bits for
- the wire-type, and a single bit that denotes the end-of-tag. */
-static inline size_t
-get_tag_size (unsigned number)
-{
- if (number < (1<<4))
- return 1;
- else if (number < (1<<11))
- return 2;
- else if (number < (1<<18))
- return 3;
- else if (number < (1<<25))
- return 4;
- else
- return 5;
-}
-
-/* Return the number of bytes required to store
- a variable-length unsigned integer that fits in 32-bit uint
- in base-128 encoding. */
-static inline size_t
-uint32_size (uint32_t v)
-{
- if (v < (1<<7))
- return 1;
- else if (v < (1<<14))
- return 2;
- else if (v < (1<<21))
- return 3;
- else if (v < (1<<28))
- return 4;
- else
- return 5;
-}
-/* Return the number of bytes required to store
- a variable-length signed integer that fits in 32-bit int
- in base-128 encoding. */
-static inline size_t
-int32_size (int32_t v)
-{
- if (v < 0)
- return 10;
- else if (v < (1<<7))
- return 1;
- else if (v < (1<<14))
- return 2;
- else if (v < (1<<21))
- return 3;
- else if (v < (1<<28))
- return 4;
- else
- return 5;
-}
-/* return the zigzag-encoded 32-bit unsigned int from a 32-bit signed int */
-static inline uint32_t
-zigzag32 (int32_t v)
-{
- if (v < 0)
- return ((uint32_t)(-v)) * 2 - 1;
- else
- return v * 2;
-}
-/* Return the number of bytes required to store
- a variable-length signed integer that fits in 32-bit int,
- converted to unsigned via the zig-zag algorithm,
- then packed using base-128 encoding. */
-static inline size_t
-sint32_size (int32_t v)
-{
- return uint32_size(zigzag32(v));
-}
-
-/* Return the number of bytes required to store
- a variable-length unsigned integer that fits in 64-bit uint
- in base-128 encoding. */
-static inline size_t
-uint64_size (uint64_t v)
-{
- uint32_t upper_v = (v>>32);
- if (upper_v == 0)
- return uint32_size ((uint32_t)v);
- else if (upper_v < (1<<3))
- return 5;
- else if (upper_v < (1<<10))
- return 6;
- else if (upper_v < (1<<17))
- return 7;
- else if (upper_v < (1<<24))
- return 8;
- else if (upper_v < (1U<<31))
- return 9;
- else
- return 10;
-}
-
-/* return the zigzag-encoded 64-bit unsigned int from a 64-bit signed int */
-static inline uint64_t
-zigzag64 (int64_t v)
-{
- if (v < 0)
- return ((uint64_t)(-v)) * 2 - 1;
- else
- return v * 2;
-}
-
-/* Return the number of bytes required to store
- a variable-length signed integer that fits in 64-bit int,
- converted to unsigned via the zig-zag algorithm,
- then packed using base-128 encoding. */
-static inline size_t
-sint64_size (int64_t v)
-{
- return uint64_size(zigzag64(v));
-}
-
-/* Get serialized size of a single field in the message,
- including the space needed by the identifying tag. */
-static size_t
-required_field_get_packed_size (const ProtobufCFieldDescriptor *field,
- const void *member)
-{
- size_t rv = get_tag_size (field->id);
- switch (field->type)
- {
- case PROTOBUF_C_TYPE_SINT32:
- return rv + sint32_size (*(const int32_t *) member);
- case PROTOBUF_C_TYPE_INT32:
- return rv + int32_size (*(const uint32_t *) member);
- case PROTOBUF_C_TYPE_UINT32:
- return rv + uint32_size (*(const uint32_t *) member);
- case PROTOBUF_C_TYPE_SINT64:
- return rv + sint64_size (*(const int64_t *) member);
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_UINT64:
- return rv + uint64_size (*(const uint64_t *) member);
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- return rv + 4;
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- return rv + 8;
- case PROTOBUF_C_TYPE_BOOL:
- return rv + 1;
- case PROTOBUF_C_TYPE_FLOAT:
- return rv + 4;
- case PROTOBUF_C_TYPE_DOUBLE:
- return rv + 8;
- case PROTOBUF_C_TYPE_ENUM:
- // TODO: is this correct for negative-valued enums?
- return rv + uint32_size (*(const uint32_t *) member);
- case PROTOBUF_C_TYPE_STRING:
- {
- const char *str = *(char * const *) member;
- size_t len = str ? strlen (str) : 0;
- return rv + uint32_size (len) + len;
- }
- case PROTOBUF_C_TYPE_BYTES:
- {
- size_t len = ((const ProtobufCBinaryData*) member)->len;
- return rv + uint32_size (len) + len;
- }
- //case PROTOBUF_C_TYPE_GROUP:
- case PROTOBUF_C_TYPE_MESSAGE:
- {
- const ProtobufCMessage *msg = * (ProtobufCMessage * const *) member;
- size_t subrv = msg ? protobuf_c_message_get_packed_size (msg) : 0;
- return rv + uint32_size (subrv) + subrv;
- }
- }
- PROTOBUF_C_ASSERT_NOT_REACHED ();
- return 0;
-}
-
-/* Get serialized size of a single optional field in the message,
- including the space needed by the identifying tag.
- Returns 0 if the optional field isn't set. */
-static size_t
-optional_field_get_packed_size (const ProtobufCFieldDescriptor *field,
- const protobuf_c_boolean *has,
- const void *member)
-{
- if (field->type == PROTOBUF_C_TYPE_MESSAGE
- || field->type == PROTOBUF_C_TYPE_STRING)
- {
- const void *ptr = * (const void * const *) member;
- if (ptr == NULL
- || ptr == field->default_value)
- return 0;
- }
- else
- {
- if (!*has)
- return 0;
- }
- return required_field_get_packed_size (field, member);
-}
-
-/* Get serialized size of a repeated field in the message,
- which may consist of any number of values (including 0).
- Includes the space needed by the identifying tags (as needed). */
-static size_t
-repeated_field_get_packed_size (const ProtobufCFieldDescriptor *field,
- size_t count,
- const void *member)
-{
- size_t header_size;
- size_t rv = 0;
- unsigned i;
- void *array = * (void * const *) member;
- if (count == 0)
- return 0;
- header_size = get_tag_size (field->id);
- if (!field->packed)
- header_size *= count;
- switch (field->type)
- {
- case PROTOBUF_C_TYPE_SINT32:
- for (i = 0; i < count; i++)
- rv += sint32_size (((int32_t*)array)[i]);
- break;
- case PROTOBUF_C_TYPE_INT32:
- for (i = 0; i < count; i++)
- rv += int32_size (((uint32_t*)array)[i]);
- break;
- case PROTOBUF_C_TYPE_UINT32:
- case PROTOBUF_C_TYPE_ENUM:
- for (i = 0; i < count; i++)
- rv += uint32_size (((uint32_t*)array)[i]);
- break;
- case PROTOBUF_C_TYPE_SINT64:
- for (i = 0; i < count; i++)
- rv += sint64_size (((int64_t*)array)[i]);
- break;
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_UINT64:
- for (i = 0; i < count; i++)
- rv += uint64_size (((uint64_t*)array)[i]);
- break;
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
- rv += 4 * count;
- break;
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
- rv += 8 * count;
- break;
- case PROTOBUF_C_TYPE_BOOL:
- rv += count;
- break;
- case PROTOBUF_C_TYPE_STRING:
- for (i = 0; i < count; i++)
- {
- size_t len = strlen (((char**) array)[i]);
- rv += uint32_size (len) + len;
- }
- break;
-
- case PROTOBUF_C_TYPE_BYTES:
- for (i = 0; i < count; i++)
- {
- size_t len = ((ProtobufCBinaryData*) array)[i].len;
- rv += uint32_size (len) + len;
- }
- break;
- case PROTOBUF_C_TYPE_MESSAGE:
- for (i = 0; i < count; i++)
- {
- size_t len = protobuf_c_message_get_packed_size (((ProtobufCMessage **) array)[i]);
- rv += uint32_size (len) + len;
- }
- break;
- //case PROTOBUF_C_TYPE_GROUP: // NOT SUPPORTED
- }
- if (field->packed)
- header_size += uint32_size (rv);
- return header_size + rv;
-}
-
-/* Get the packed size of a unknown field (meaning one that
- is passed through mostly uninterpreted... this is done
- for forward compatibilty with the addition of new fields). */
-static inline size_t
-unknown_field_get_packed_size (const ProtobufCMessageUnknownField *field)
-{
- return get_tag_size (field->tag) + field->len;
-}
-
-/* Get the number of bytes that the message will occupy once serialized. */
-size_t
-protobuf_c_message_get_packed_size(const ProtobufCMessage *message)
-{
- unsigned i;
- size_t rv = 0;
- ASSERT_IS_MESSAGE (message);
- for (i = 0; i < message->descriptor->n_fields; i++)
- {
- const ProtobufCFieldDescriptor *field = message->descriptor->fields + i;
- const void *member = ((const char *) message) + field->offset;
- const void *qmember = ((const char *) message) + field->quantifier_offset;
-
- if (field->label == PROTOBUF_C_LABEL_REQUIRED)
- rv += required_field_get_packed_size (field, member);
- else if (field->label == PROTOBUF_C_LABEL_OPTIONAL)
- rv += optional_field_get_packed_size (field, qmember, member);
- else
- rv += repeated_field_get_packed_size (field, * (const size_t *) qmember, member);
- }
- for (i = 0; i < message->n_unknown_fields; i++)
- rv += unknown_field_get_packed_size (&message->unknown_fields[i]);
- return rv;
-}
-/* === pack() === */
-/* Pack an unsigned 32-bit integer in base-128 encoding, and return the number of bytes needed:
- this will be 5 or less. */
-static inline size_t
-uint32_pack (uint32_t value, uint8_t *out)
-{
- unsigned rv = 0;
- if (value >= 0x80)
- {
- out[rv++] = value | 0x80;
- value >>= 7;
- if (value >= 0x80)
- {
- out[rv++] = value | 0x80;
- value >>= 7;
- if (value >= 0x80)
- {
- out[rv++] = value | 0x80;
- value >>= 7;
- if (value >= 0x80)
- {
- out[rv++] = value | 0x80;
- value >>= 7;
- }
- }
- }
- }
- /* assert: value<128 */
- out[rv++] = value;
- return rv;
-}
-
-/* Pack a 32-bit signed integer, returning the number of bytes needed.
- Negative numbers are packed as twos-complement 64-bit integers. */
-static inline size_t
-int32_pack (int32_t value, uint8_t *out)
-{
- if (value < 0)
- {
- out[0] = value | 0x80;
- out[1] = (value>>7) | 0x80;
- out[2] = (value>>14) | 0x80;
- out[3] = (value>>21) | 0x80;
- out[4] = (value>>28) | 0x80;
- out[5] = out[6] = out[7] = out[8] = 0xff;
- out[9] = 0x01;
- return 10;
- }
- else
- return uint32_pack (value, out);
-}
-
-/* Pack a 32-bit integer in zigwag encoding. */
-static inline size_t
-sint32_pack (int32_t value, uint8_t *out)
-{
- return uint32_pack (zigzag32 (value), out);
-}
-
-/* Pack a 64-bit unsigned integer that fits in a 64-bit uint,
- using base-128 encoding. */
-static size_t
-uint64_pack (uint64_t value, uint8_t *out)
-{
- uint32_t hi = value>>32;
- uint32_t lo = value;
- unsigned rv;
- if (hi == 0)
- return uint32_pack ((uint32_t)lo, out);
- out[0] = (lo) | 0x80;
- out[1] = (lo>>7) | 0x80;
- out[2] = (lo>>14) | 0x80;
- out[3] = (lo>>21) | 0x80;
- if (hi < 8)
- {
- out[4] = (hi<<4) | (lo>>28);
- return 5;
- }
- else
- {
- out[4] = ((hi&7)<<4) | (lo>>28) | 0x80;
- hi >>= 3;
- }
- rv = 5;
- while (hi >= 128)
- {
- out[rv++] = hi | 0x80;
- hi >>= 7;
- }
- out[rv++] = hi;
- return rv;
-}
-
-/* Pack a 64-bit signed integer in zigzan encoding,
- return the size of the packed output.
- (Max returned value is 10) */
-static inline size_t
-sint64_pack (int64_t value, uint8_t *out)
-{
- return uint64_pack (zigzag64 (value), out);
-}
-
-/* Pack a 32-bit value, little-endian.
- Used for fixed32, sfixed32, float) */
-static inline size_t
-fixed32_pack (uint32_t value, uint8_t *out)
-{
-#ifdef IS_LITTLE_ENDIAN
- memcpy (out, &value, 4);
-#else
- out[0] = value;
- out[1] = value>>8;
- out[2] = value>>16;
- out[3] = value>>24;
-#endif
- return 4;
-}
-
-/* Pack a 64-bit fixed-length value.
- (Used for fixed64, sfixed64, double) */
-/* XXX: the big-endian impl is really only good for 32-bit machines,
- a 64-bit version would be appreciated, plus a way
- to decide to use 64-bit math where convenient. */
-static inline size_t
-fixed64_pack (uint64_t value, uint8_t *out)
-{
-#ifdef IS_LITTLE_ENDIAN
- memcpy (out, &value, 8);
-#else
- fixed32_pack (value, out);
- fixed32_pack (value>>32, out+4);
-#endif
- return 8;
-}
-
-
-/* Pack a boolean as 0 or 1, even though the protobuf_c_boolean
- can really assume any integer value. */
-/* XXX: perhaps on some platforms "*out = !!value" would be
- a better impl, b/c that is idiotmatic c++ in some stl impls. */
-static inline size_t
-boolean_pack (protobuf_c_boolean value, uint8_t *out)
-{
- *out = value ? 1 : 0;
- return 1;
-}
-
-/* Pack a length-prefixed string.
- The input string is NUL-terminated.
-
- The NULL pointer is treated as an empty string.
- This isn't really necessary, but it allows people
- to leave required strings blank.
- (See Issue 13 in the bug tracker for a
- little more explanation).
- */
-static inline size_t
-string_pack (const char * str, uint8_t *out)
-{
- if (str == NULL)
- {
- out[0] = 0;
- return 1;
- }
- else
- {
- size_t len = strlen (str);
- size_t rv = uint32_pack (len, out);
- memcpy (out + rv, str, len);
- return rv + len;
- }
-}
-
-static inline size_t
-binary_data_pack (const ProtobufCBinaryData *bd, uint8_t *out)
-{
- size_t len = bd->len;
- size_t rv = uint32_pack (len, out);
- memcpy (out + rv, bd->data, len);
- return rv + len;
-}
-
-static inline size_t
-prefixed_message_pack (const ProtobufCMessage *message, uint8_t *out)
-{
- if (message == NULL)
- {
- out[0] = 0;
- return 1;
- }
- else
- {
- size_t rv = protobuf_c_message_pack (message, out + 1);
- uint32_t rv_packed_size = uint32_size (rv);
- if (rv_packed_size != 1)
- memmove (out + rv_packed_size, out + 1, rv);
- return uint32_pack (rv, out) + rv;
- }
-}
-
-/* wire-type will be added in required_field_pack() */
-/* XXX: just call uint64_pack on 64-bit platforms. */
-static size_t
-tag_pack (uint32_t id, uint8_t *out)
-{
- if (id < (1<<(32-3)))
- return uint32_pack (id<<3, out);
- else
- return uint64_pack (((uint64_t)id) << 3, out);
-}
-
-static size_t
-required_field_pack (const ProtobufCFieldDescriptor *field,
- const void *member,
- uint8_t *out)
-{
- size_t rv = tag_pack (field->id, out);
- switch (field->type)
- {
- case PROTOBUF_C_TYPE_SINT32:
- out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- return rv + sint32_pack (*(const int32_t *) member, out + rv);
- case PROTOBUF_C_TYPE_INT32:
- out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- return rv + int32_pack (*(const uint32_t *) member, out + rv);
- case PROTOBUF_C_TYPE_UINT32:
- case PROTOBUF_C_TYPE_ENUM:
- out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- return rv + uint32_pack (*(const uint32_t *) member, out + rv);
- case PROTOBUF_C_TYPE_SINT64:
- out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- return rv + sint64_pack (*(const int64_t *) member, out + rv);
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_UINT64:
- out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- return rv + uint64_pack (*(const uint64_t *) member, out + rv);
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
- out[0] |= PROTOBUF_C_WIRE_TYPE_32BIT;
- return rv + fixed32_pack (*(const uint32_t *) member, out + rv);
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
- out[0] |= PROTOBUF_C_WIRE_TYPE_64BIT;
- return rv + fixed64_pack (*(const uint64_t *) member, out + rv);
- case PROTOBUF_C_TYPE_BOOL:
- out[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- return rv + boolean_pack (*(const protobuf_c_boolean *) member, out + rv);
- case PROTOBUF_C_TYPE_STRING:
- {
- out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED;
- return rv + string_pack (*(char * const *) member, out + rv);
- }
-
- case PROTOBUF_C_TYPE_BYTES:
- {
- const ProtobufCBinaryData * bd = ((const ProtobufCBinaryData*) member);
- out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED;
- return rv + binary_data_pack (bd, out + rv);
- }
- //case PROTOBUF_C_TYPE_GROUP: // NOT SUPPORTED
- case PROTOBUF_C_TYPE_MESSAGE:
- {
- out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED;
- return rv + prefixed_message_pack (*(ProtobufCMessage * const *) member,
- out + rv);
- }
- }
- PROTOBUF_C_ASSERT_NOT_REACHED ();
- return 0;
-}
-static size_t
-optional_field_pack (const ProtobufCFieldDescriptor *field,
- const protobuf_c_boolean *has,
- const void *member,
- uint8_t *out)
-{
- if (field->type == PROTOBUF_C_TYPE_MESSAGE
- || field->type == PROTOBUF_C_TYPE_STRING)
- {
- const void *ptr = * (const void * const *) member;
- if (ptr == NULL
- || ptr == field->default_value)
- return 0;
- }
- else
- {
- if (!*has)
- return 0;
- }
- return required_field_pack (field, member, out);
-}
-
-/* TODO: implement as a table lookup */
-static inline size_t
-sizeof_elt_in_repeated_array (ProtobufCType type)
-{
- switch (type)
- {
- case PROTOBUF_C_TYPE_SINT32:
- case PROTOBUF_C_TYPE_INT32:
- case PROTOBUF_C_TYPE_UINT32:
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
- case PROTOBUF_C_TYPE_ENUM:
- return 4;
- case PROTOBUF_C_TYPE_SINT64:
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_UINT64:
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
- return 8;
- case PROTOBUF_C_TYPE_BOOL:
- return sizeof (protobuf_c_boolean);
- case PROTOBUF_C_TYPE_STRING:
- case PROTOBUF_C_TYPE_MESSAGE:
- return sizeof (void *);
- case PROTOBUF_C_TYPE_BYTES:
- return sizeof (ProtobufCBinaryData);
- }
- PROTOBUF_C_ASSERT_NOT_REACHED ();
- return 0;
-}
-
-static void
-copy_to_little_endian_32 (void *out, const void *in, unsigned N)
-{
-#ifdef IS_LITTLE_ENDIAN
- memcpy (out, in, N * 4);
-#else
- unsigned i;
- const uint32_t *ini = in;
- for (i = 0; i < N; i++)
- fixed32_pack (ini[i], (uint8_t*)out + 4*i);
-#endif
-}
-static void
-copy_to_little_endian_64 (void *out, const void *in, unsigned N)
-{
-#ifdef IS_LITTLE_ENDIAN
- memcpy (out, in, N * 8);
-#else
- unsigned i;
- const uint64_t *ini = in;
- for (i = 0; i < N; i++)
- fixed64_pack (ini[i], (uint8_t*)out + 8*i);
-#endif
-}
-
-static unsigned
-get_type_min_size (ProtobufCType type)
-{
- if (type == PROTOBUF_C_TYPE_SFIXED32
- || type == PROTOBUF_C_TYPE_FIXED32
- || type == PROTOBUF_C_TYPE_FLOAT)
- return 4;
- if (type == PROTOBUF_C_TYPE_SFIXED64
- || type == PROTOBUF_C_TYPE_FIXED64
- || type == PROTOBUF_C_TYPE_DOUBLE)
- return 8;
- return 1;
-}
-
-static size_t
-repeated_field_pack (const ProtobufCFieldDescriptor *field,
- size_t count,
- const void *member,
- uint8_t *out)
-{
- char *array = * (char * const *) member;
- unsigned i;
- if (field->packed)
- {
- unsigned header_len;
- unsigned len_start;
- unsigned min_length;
- unsigned payload_len;
- unsigned length_size_min;
- unsigned actual_length_size;
- uint8_t *payload_at;
- if (count == 0)
- return 0;
- header_len = tag_pack (field->id, out);
- out[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED;
- len_start = header_len;
- min_length = get_type_min_size (field->type) * count;
- length_size_min = uint32_size (min_length);
- header_len += length_size_min;
- payload_at = out + header_len;
- switch (field->type)
- {
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
- copy_to_little_endian_32 (payload_at, array, count);
- payload_at += count * 4;
- break;
-
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
- copy_to_little_endian_64 (payload_at, array, count);
- payload_at += count * 8;
- break;
-
- case PROTOBUF_C_TYPE_INT32:
- {
- const int32_t *arr = (const int32_t *) array;
- for (i = 0; i < count; i++)
- payload_at += int32_pack (arr[i], payload_at);
- }
- break;
-
- case PROTOBUF_C_TYPE_SINT32:
- {
- const int32_t *arr = (const int32_t *) array;
- for (i = 0; i < count; i++)
- payload_at += sint32_pack (arr[i], payload_at);
- }
- break;
-
- case PROTOBUF_C_TYPE_SINT64:
- {
- const int64_t *arr = (const int64_t *) array;
- for (i = 0; i < count; i++)
- payload_at += sint64_pack (arr[i], payload_at);
- }
- break;
- case PROTOBUF_C_TYPE_ENUM:
- case PROTOBUF_C_TYPE_UINT32:
- {
- const uint32_t *arr = (const uint32_t *) array;
- for (i = 0; i < count; i++)
- payload_at += uint32_pack (arr[i], payload_at);
- }
- break;
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_UINT64:
- {
- const uint64_t *arr = (const uint64_t *) array;
- for (i = 0; i < count; i++)
- payload_at += uint64_pack (arr[i], payload_at);
- }
- break;
- case PROTOBUF_C_TYPE_BOOL:
- {
- const protobuf_c_boolean *arr = (const protobuf_c_boolean *) array;
- for (i = 0; i < count; i++)
- payload_at += boolean_pack (arr[i], payload_at);
- }
- break;
-
- default:
- assert (0);
- }
- payload_len = payload_at - (out + header_len);
- actual_length_size = uint32_size (payload_len);
- if (length_size_min != actual_length_size)
- {
- assert (actual_length_size == length_size_min + 1);
- memmove (out + header_len + 1, out + header_len, payload_len);
- header_len++;
- }
- uint32_pack (payload_len, out + len_start);
- return header_len + payload_len;
- }
- else
- {
- /* CONSIDER: optimize this case a bit (by putting the loop inside the switch) */
- size_t rv = 0;
- unsigned siz = sizeof_elt_in_repeated_array (field->type);
- for (i = 0; i < count; i++)
- {
- rv += required_field_pack (field, array, out + rv);
- array += siz;
- }
- return rv;
- }
-}
-static size_t
-unknown_field_pack (const ProtobufCMessageUnknownField *field,
- uint8_t *out)
-{
- size_t rv = tag_pack (field->tag, out);
- out[0] |= field->wire_type;
- memcpy (out + rv, field->data, field->len);
- return rv + field->len;
-}
-
-size_t
-protobuf_c_message_pack (const ProtobufCMessage *message,
- uint8_t *out)
-{
- unsigned i;
- size_t rv = 0;
- ASSERT_IS_MESSAGE (message);
- for (i = 0; i < message->descriptor->n_fields; i++)
- {
- const ProtobufCFieldDescriptor *field = message->descriptor->fields + i;
- const void *member = ((const char *) message) + field->offset;
-
- /* it doesn't hurt to compute qmember (a pointer to the quantifier
- field of the structure), but the pointer is only valid if
- the field is one of:
- - a repeated field
- - an optional field that isn't a pointer type
- (meaning: not a message or a string) */
- const void *qmember = ((const char *) message) + field->quantifier_offset;
-
- if (field->label == PROTOBUF_C_LABEL_REQUIRED)
- rv += required_field_pack (field, member, out + rv);
- else if (field->label == PROTOBUF_C_LABEL_OPTIONAL)
- /* note that qmember is bogus for strings and messages,
- but it isn't used */
- rv += optional_field_pack (field, qmember, member, out + rv);
- else
- rv += repeated_field_pack (field, * (const size_t *) qmember, member, out + rv);
- }
- for (i = 0; i < message->n_unknown_fields; i++)
- rv += unknown_field_pack (&message->unknown_fields[i], out + rv);
- return rv;
-}
-
-/* === pack_to_buffer() === */
-static size_t
-required_field_pack_to_buffer (const ProtobufCFieldDescriptor *field,
- const void *member,
- ProtobufCBuffer *buffer)
-{
- size_t rv;
- uint8_t scratch[MAX_UINT64_ENCODED_SIZE * 2];
- rv = tag_pack (field->id, scratch);
- switch (field->type)
- {
- case PROTOBUF_C_TYPE_SINT32:
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- rv += sint32_pack (*(const int32_t *) member, scratch + rv);
- buffer->append (buffer, rv, scratch);
- break;
- case PROTOBUF_C_TYPE_INT32:
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- rv += int32_pack (*(const uint32_t *) member, scratch + rv);
- buffer->append (buffer, rv, scratch);
- break;
- case PROTOBUF_C_TYPE_UINT32:
- case PROTOBUF_C_TYPE_ENUM:
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- rv += uint32_pack (*(const uint32_t *) member, scratch + rv);
- buffer->append (buffer, rv, scratch);
- break;
- case PROTOBUF_C_TYPE_SINT64:
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- rv += sint64_pack (*(const int64_t *) member, scratch + rv);
- buffer->append (buffer, rv, scratch);
- break;
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_UINT64:
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- rv += uint64_pack (*(const uint64_t *) member, scratch + rv);
- buffer->append (buffer, rv, scratch);
- break;
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_32BIT;
- rv += fixed32_pack (*(const uint32_t *) member, scratch + rv);
- buffer->append (buffer, rv, scratch);
- break;
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_64BIT;
- rv += fixed64_pack (*(const uint64_t *) member, scratch + rv);
- buffer->append (buffer, rv, scratch);
- break;
- case PROTOBUF_C_TYPE_BOOL:
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_VARINT;
- rv += boolean_pack (*(const protobuf_c_boolean *) member, scratch + rv);
- buffer->append (buffer, rv, scratch);
- break;
- case PROTOBUF_C_TYPE_STRING:
- {
- const char *str = *(char * const *) member;
- size_t sublen = str ? strlen (str) : 0;
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED;
- rv += uint32_pack (sublen, scratch + rv);
- buffer->append (buffer, rv, scratch);
- buffer->append (buffer, sublen, (const uint8_t *) str);
- rv += sublen;
- break;
- }
-
- case PROTOBUF_C_TYPE_BYTES:
- {
- const ProtobufCBinaryData * bd = ((const ProtobufCBinaryData*) member);
- size_t sublen = bd->len;
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED;
- rv += uint32_pack (sublen, scratch + rv);
- buffer->append (buffer, rv, scratch);
- buffer->append (buffer, sublen, bd->data);
- rv += sublen;
- break;
- }
- //PROTOBUF_C_TYPE_GROUP, // NOT SUPPORTED
- case PROTOBUF_C_TYPE_MESSAGE:
- {
- uint8_t simple_buffer_scratch[256];
- size_t sublen;
- ProtobufCBufferSimple simple_buffer
- = PROTOBUF_C_BUFFER_SIMPLE_INIT (simple_buffer_scratch);
- const ProtobufCMessage *msg = *(ProtobufCMessage * const *) member;
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED;
- if (msg == NULL)
- sublen = 0;
- else
- sublen = protobuf_c_message_pack_to_buffer (msg, &simple_buffer.base);
- rv += uint32_pack (sublen, scratch + rv);
- buffer->append (buffer, rv, scratch);
- buffer->append (buffer, sublen, simple_buffer.data);
- rv += sublen;
- PROTOBUF_C_BUFFER_SIMPLE_CLEAR (&simple_buffer);
- break;
- }
- default:
- PROTOBUF_C_ASSERT_NOT_REACHED ();
- }
- return rv;
-}
-static size_t
-optional_field_pack_to_buffer (const ProtobufCFieldDescriptor *field,
- const protobuf_c_boolean *has,
- const void *member,
- ProtobufCBuffer *buffer)
-{
- if (field->type == PROTOBUF_C_TYPE_MESSAGE
- || field->type == PROTOBUF_C_TYPE_STRING)
- {
- const void *ptr = * (const void * const *) member;
- if (ptr == NULL
- || ptr == field->default_value)
- return 0;
- }
- else
- {
- if (!*has)
- return 0;
- }
- return required_field_pack_to_buffer (field, member, buffer);
-}
-
-static size_t
-get_packed_payload_length (const ProtobufCFieldDescriptor *field,
- unsigned count,
- const void *array)
-{
- unsigned rv = 0;
- unsigned i;
- switch (field->type)
- {
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
- return count * 4;
-
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
- return count * 8;
-
- case PROTOBUF_C_TYPE_INT32:
- {
- const int32_t *arr = (const int32_t *) array;
- for (i = 0; i < count; i++)
- rv += int32_size (arr[i]);
- }
- break;
-
- case PROTOBUF_C_TYPE_SINT32:
- {
- const int32_t *arr = (const int32_t *) array;
- for (i = 0; i < count; i++)
- rv += sint32_size (arr[i]);
- }
- break;
- case PROTOBUF_C_TYPE_ENUM:
- case PROTOBUF_C_TYPE_UINT32:
- {
- const uint32_t *arr = (const uint32_t *) array;
- for (i = 0; i < count; i++)
- rv += uint32_size (arr[i]);
- }
- break;
-
- case PROTOBUF_C_TYPE_SINT64:
- {
- const int64_t *arr = (const int64_t *) array;
- for (i = 0; i < count; i++)
- rv += sint64_size (arr[i]);
- }
- break;
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_UINT64:
- {
- const uint64_t *arr = (const uint64_t *) array;
- for (i = 0; i < count; i++)
- rv += uint64_size (arr[i]);
- }
- break;
- case PROTOBUF_C_TYPE_BOOL:
- return count;
- default:
- assert (0);
- }
- return rv;
-}
-static size_t
-pack_buffer_packed_payload (const ProtobufCFieldDescriptor *field,
- unsigned count,
- const void *array,
- ProtobufCBuffer *buffer)
-{
- uint8_t scratch[16];
- size_t rv = 0;
- unsigned i;
- switch (field->type)
- {
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
-#ifdef IS_LITTLE_ENDIAN
- rv = count * 4;
- goto no_packing_needed;
-#else
- for (i = 0; i < count; i++)
- {
- unsigned len = fixed32_pack (((uint32_t*)array)[i], scratch);
- buffer->append (buffer, len, scratch);
- rv += len;
- }
-#endif
- break;
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
-#ifdef IS_LITTLE_ENDIAN
- rv = count * 8;
- goto no_packing_needed;
-#else
- for (i = 0; i < count; i++)
- {
- unsigned len = fixed64_pack (((uint64_t*)array)[i], scratch);
- buffer->append (buffer, len, scratch);
- rv += len;
- }
- break;
-#endif
- case PROTOBUF_C_TYPE_INT32:
- for (i = 0; i < count; i++)
- {
- unsigned len = int32_pack (((int32_t*)array)[i], scratch);
- buffer->append (buffer, len, scratch);
- rv += len;
- }
- break;
-
- case PROTOBUF_C_TYPE_SINT32:
- for (i = 0; i < count; i++)
- {
- unsigned len = sint32_pack (((int32_t*)array)[i], scratch);
- buffer->append (buffer, len, scratch);
- rv += len;
- }
- break;
- case PROTOBUF_C_TYPE_ENUM:
- case PROTOBUF_C_TYPE_UINT32:
- for (i = 0; i < count; i++)
- {
- unsigned len = uint32_pack (((uint32_t*)array)[i], scratch);
- buffer->append (buffer, len, scratch);
- rv += len;
- }
- break;
-
- case PROTOBUF_C_TYPE_SINT64:
- for (i = 0; i < count; i++)
- {
- unsigned len = sint64_pack (((int64_t*)array)[i], scratch);
- buffer->append (buffer, len, scratch);
- rv += len;
- }
- break;
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_UINT64:
- for (i = 0; i < count; i++)
- {
- unsigned len = uint64_pack (((uint64_t*)array)[i], scratch);
- buffer->append (buffer, len, scratch);
- rv += len;
- }
- break;
- case PROTOBUF_C_TYPE_BOOL:
- for (i = 0; i < count; i++)
- {
- unsigned len = boolean_pack (((protobuf_c_boolean*)array)[i], scratch);
- buffer->append (buffer, len, scratch);
- rv += len;
- }
- return count;
- default:
- assert(0);
- }
- return rv;
-
-#ifdef IS_LITTLE_ENDIAN
-no_packing_needed:
- buffer->append (buffer, rv, array);
- return rv;
-#endif
-}
-
-static size_t
-repeated_field_pack_to_buffer (const ProtobufCFieldDescriptor *field,
- unsigned count,
- const void *member,
- ProtobufCBuffer *buffer)
-{
- char *array = * (char * const *) member;
- if (count == 0)
- return 0;
- if (field->packed)
- {
- uint8_t scratch[MAX_UINT64_ENCODED_SIZE * 2];
- size_t rv = tag_pack (field->id, scratch);
- size_t payload_len = get_packed_payload_length (field, count, array);
- size_t tmp;
- scratch[0] |= PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED;
- rv += uint32_pack (payload_len, scratch + rv);
- buffer->append (buffer, rv, scratch);
- tmp = pack_buffer_packed_payload (field, count, array, buffer);
- if (tmp != payload_len){
- fprintf (stderr, "Unexpected payload length: %zu (expected: %zu). Aborting.\n", tmp, payload_len);
- abort ();
- }
- return rv + payload_len;
- }
- else
- {
- size_t siz;
- unsigned i;
- /* CONSIDER: optimize this case a bit (by putting the loop inside the switch) */
- unsigned rv = 0;
- siz = sizeof_elt_in_repeated_array (field->type);
- for (i = 0; i < count; i++)
- {
- rv += required_field_pack_to_buffer (field, array, buffer);
- array += siz;
- }
- return rv;
- }
-}
-
-static size_t
-unknown_field_pack_to_buffer (const ProtobufCMessageUnknownField *field,
- ProtobufCBuffer *buffer)
-{
- uint8_t header[MAX_UINT64_ENCODED_SIZE];
- size_t rv = tag_pack (field->tag, header);
- header[0] |= field->wire_type;
- buffer->append (buffer, rv, header);
- buffer->append (buffer, field->len, field->data);
- return rv + field->len;
-}
-
-size_t
-protobuf_c_message_pack_to_buffer (const ProtobufCMessage *message,
- ProtobufCBuffer *buffer)
-{
- unsigned i;
- size_t rv = 0;
- ASSERT_IS_MESSAGE (message);
- for (i = 0; i < message->descriptor->n_fields; i++)
- {
- const ProtobufCFieldDescriptor *field = message->descriptor->fields + i;
- const void *member = ((const char *) message) + field->offset;
- const void *qmember = ((const char *) message) + field->quantifier_offset;
-
- if (field->label == PROTOBUF_C_LABEL_REQUIRED)
- rv += required_field_pack_to_buffer (field, member, buffer);
- else if (field->label == PROTOBUF_C_LABEL_OPTIONAL)
- rv += optional_field_pack_to_buffer (field, qmember, member, buffer);
- else
- rv += repeated_field_pack_to_buffer (field, * (const size_t *) qmember, member, buffer);
- }
- for (i = 0; i < message->n_unknown_fields; i++)
- rv += unknown_field_pack_to_buffer (&message->unknown_fields[i], buffer);
-
- return rv;
-}
-
-/* === unpacking === */
-#if PRINT_UNPACK_ERRORS
-# define UNPACK_ERROR(args) do { printf args;printf("\n"); }while(0)
-#else
-# define UNPACK_ERROR(args) do { } while (0)
-#endif
-
-static inline int
-int_range_lookup (unsigned n_ranges,
- const ProtobufCIntRange *ranges,
- int value)
-{
- unsigned start, n;
- if (n_ranges == 0)
- return -1;
- start = 0;
- n = n_ranges;
- while (n > 1)
- {
- unsigned mid = start + n / 2;
- if (value < ranges[mid].start_value)
- {
- n = mid - start;
- }
- else if (value >= ranges[mid].start_value + (int)(ranges[mid+1].orig_index-ranges[mid].orig_index))
- {
- unsigned new_start = mid + 1;
- n = start + n - new_start;
- start = new_start;
- }
- else
- return (value - ranges[mid].start_value) + ranges[mid].orig_index;
- }
- if (n > 0)
- {
- unsigned start_orig_index = ranges[start].orig_index;
- unsigned range_size = ranges[start+1].orig_index - start_orig_index;
-
- if (ranges[start].start_value <= value
- && value < (int)(ranges[start].start_value + range_size))
- return (value - ranges[start].start_value) + start_orig_index;
- }
- return -1;
-}
-
-static size_t
-parse_tag_and_wiretype (size_t len,
- const uint8_t *data,
- uint32_t *tag_out,
- ProtobufCWireType *wiretype_out)
-{
- unsigned max_rv = len > 5 ? 5 : len;
- uint32_t tag = (data[0]&0x7f) >> 3;
- unsigned shift = 4;
- unsigned rv;
- *wiretype_out = data[0] & 7;
- if ((data[0] & 0x80) == 0)
- {
- *tag_out = tag;
- return 1;
- }
- for (rv = 1; rv < max_rv; rv++)
- if (data[rv] & 0x80)
- {
- tag |= (data[rv] & 0x7f) << shift;
- shift += 7;
- }
- else
- {
- tag |= data[rv] << shift;
- *tag_out = tag;
- return rv + 1;
- }
- return 0; /* error: bad header */
-}
-
-/* sizeof(ScannedMember) must be <= (1<<BOUND_SIZEOF_SCANNED_MEMBER_LOG2) */
-#define BOUND_SIZEOF_SCANNED_MEMBER_LOG2 5
-typedef struct _ScannedMember ScannedMember;
-struct _ScannedMember
-{
- uint32_t tag;
- uint8_t wire_type;
- uint8_t length_prefix_len;
- const ProtobufCFieldDescriptor *field;
- size_t len;
- const uint8_t *data;
-};
-
-static inline uint32_t
-scan_length_prefixed_data (size_t len, const uint8_t *data, size_t *prefix_len_out)
-{
- unsigned hdr_max = len < 5 ? len : 5;
- unsigned hdr_len;
- uint32_t val = 0;
- unsigned i;
- unsigned shift = 0;
- for (i = 0; i < hdr_max; i++)
- {
- val |= (data[i] & 0x7f) << shift;
- shift += 7;
- if ((data[i] & 0x80) == 0)
- break;
- }
- if (i == hdr_max)
- {
- UNPACK_ERROR (("error parsing length for length-prefixed data"));
- return 0;
- }
- hdr_len = i + 1;
- *prefix_len_out = hdr_len;
- if (hdr_len + val > len)
- {
- UNPACK_ERROR (("data too short after length-prefix of %u",
- val));
- return 0;
- }
- return hdr_len + val;
-}
-
-static size_t
-max_b128_numbers (size_t len, const uint8_t *data)
-{
- size_t rv = 0;
- while (len--)
- if ((*data++ & 0x80) == 0)
- ++rv;
- return rv;
-}
-
-
-/* Given a raw slab of packed-repeated values,
- determine the number of elements.
- This function detects certain kinds of errors
- but not others; the remaining error checking is done by
- parse_packed_repeated_member() */
-static protobuf_c_boolean
-count_packed_elements (ProtobufCType type,
- size_t len,
- const uint8_t *data,
- size_t *count_out)
-{
- switch (type)
- {
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
- if (len % 4 != 0)
- {
- UNPACK_ERROR (("length must be a multiple of 4 for fixed-length 32-bit types"));
- return FALSE;
- }
- *count_out = len / 4;
- return TRUE;
-
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
- if (len % 8 != 0)
- {
- UNPACK_ERROR (("length must be a multiple of 8 for fixed-length 64-bit types"));
- return FALSE;
- }
- *count_out = len / 8;
- return TRUE;
-
- case PROTOBUF_C_TYPE_INT32:
- case PROTOBUF_C_TYPE_SINT32:
- case PROTOBUF_C_TYPE_ENUM:
- case PROTOBUF_C_TYPE_UINT32:
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_SINT64:
- case PROTOBUF_C_TYPE_UINT64:
- *count_out = max_b128_numbers (len, data);
- return TRUE;
- case PROTOBUF_C_TYPE_BOOL:
- *count_out = len;
- return TRUE;
-
- case PROTOBUF_C_TYPE_STRING:
- case PROTOBUF_C_TYPE_BYTES:
- case PROTOBUF_C_TYPE_MESSAGE:
- default:
- UNPACK_ERROR (("bad protobuf-c type %u for packed-repeated", type));
- return FALSE;
- }
-}
-
-static inline uint32_t
-parse_uint32 (unsigned len, const uint8_t *data)
-{
- unsigned rv = data[0] & 0x7f;
- if (len > 1)
- {
- rv |= ((data[1] & 0x7f) << 7);
- if (len > 2)
- {
- rv |= ((data[2] & 0x7f) << 14);
- if (len > 3)
- {
- rv |= ((data[3] & 0x7f) << 21);
- if (len > 4)
- rv |= (data[4] << 28);
- }
- }
- }
- return rv;
-}
-static inline uint32_t
-parse_int32 (unsigned len, const uint8_t *data)
-{
- return parse_uint32 (len, data);
-}
-static inline int32_t
-unzigzag32 (uint32_t v)
-{
- if (v&1)
- return -(v>>1) - 1;
- else
- return v>>1;
-}
-static inline uint32_t
-parse_fixed_uint32 (const uint8_t *data)
-{
-#ifdef IS_LITTLE_ENDIAN
- uint32_t t;
- memcpy (&t, data, 4);
- return t;
-#else
- return data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24);
-#endif
-}
-static uint64_t
-parse_uint64 (unsigned len, const uint8_t *data)
-{
- unsigned shift, i;
- if (len < 5)
- return parse_uint32 (len, data);
- uint64_t rv = ((data[0] & 0x7f))
- | ((data[1] & 0x7f)<<7)
- | ((data[2] & 0x7f)<<14)
- | ((data[3] & 0x7f)<<21);
- shift = 28;
- for (i = 4; i < len; i++)
- {
- rv |= (((uint64_t)(data[i]&0x7f)) << shift);
- shift += 7;
- }
- return rv;
-}
-static inline int64_t
-unzigzag64 (uint64_t v)
-{
- if (v&1)
- return -(v>>1) - 1;
- else
- return v>>1;
-}
-static inline uint64_t
-parse_fixed_uint64 (const uint8_t *data)
-{
-#ifdef IS_LITTLE_ENDIAN
- uint64_t t;
- memcpy (&t, data, 8);
- return t;
-#else
- return (uint64_t)parse_fixed_uint32 (data)
- | (((uint64_t)parse_fixed_uint32(data+4)) << 32);
-#endif
-}
-static protobuf_c_boolean
-parse_boolean (unsigned len, const uint8_t *data)
-{
- unsigned i;
- for (i = 0; i < len; i++)
- if (data[i] & 0x7f)
- return 1;
- return 0;
-}
-static protobuf_c_boolean
-parse_required_member (ScannedMember *scanned_member,
- void *member,
- ProtobufCAllocator *allocator,
- protobuf_c_boolean maybe_clear)
-{
- unsigned len = scanned_member->len;
- const uint8_t *data = scanned_member->data;
- ProtobufCWireType wire_type = scanned_member->wire_type;
- switch (scanned_member->field->type)
- {
- case PROTOBUF_C_TYPE_INT32:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT)
- return 0;
- *(uint32_t*)member = parse_int32 (len, data);
- return 1;
- case PROTOBUF_C_TYPE_UINT32:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT)
- return 0;
- *(uint32_t*)member = parse_uint32 (len, data);
- return 1;
- case PROTOBUF_C_TYPE_SINT32:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT)
- return 0;
- *(int32_t*)member = unzigzag32 (parse_uint32 (len, data));
- return 1;
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_32BIT)
- return 0;
- *(uint32_t*)member = parse_fixed_uint32 (data);
- return 1;
-
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_UINT64:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT)
- return 0;
- *(uint64_t*)member = parse_uint64 (len, data);
- return 1;
- case PROTOBUF_C_TYPE_SINT64:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT)
- return 0;
- *(int64_t*)member = unzigzag64 (parse_uint64 (len, data));
- return 1;
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_64BIT)
- return 0;
- *(uint64_t*)member = parse_fixed_uint64 (data);
- return 1;
-
- case PROTOBUF_C_TYPE_BOOL:
- *(protobuf_c_boolean*)member = parse_boolean (len, data);
- return 1;
-
- case PROTOBUF_C_TYPE_ENUM:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_VARINT)
- return 0;
- *(uint32_t*)member = parse_uint32 (len, data);
- return 1;
-
- case PROTOBUF_C_TYPE_STRING:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED)
- return 0;
- {
- char **pstr = member;
- unsigned pref_len = scanned_member->length_prefix_len;
- if (maybe_clear && *pstr != NULL)
- {
- const char *def = scanned_member->field->default_value;
- if (*pstr != NULL && *pstr != def)
- FREE (allocator, *pstr);
- }
- DO_ALLOC (*pstr, allocator, len - pref_len + 1, return 0);
- memcpy (*pstr, data + pref_len, len - pref_len);
- (*pstr)[len-pref_len] = 0;
- return 1;
- }
- case PROTOBUF_C_TYPE_BYTES:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED)
- return 0;
- {
- ProtobufCBinaryData *bd = member;
- const ProtobufCBinaryData *def_bd;
- unsigned pref_len = scanned_member->length_prefix_len;
- def_bd = scanned_member->field->default_value;
- if (maybe_clear && bd->data != NULL && bd->data != def_bd->data)
- FREE (allocator, bd->data);
- DO_ALLOC (bd->data, allocator, len - pref_len, return 0);
- memcpy (bd->data, data + pref_len, len - pref_len);
- bd->len = len - pref_len;
- return 1;
- }
- //case PROTOBUF_C_TYPE_GROUP, // NOT SUPPORTED
- case PROTOBUF_C_TYPE_MESSAGE:
- if (wire_type != PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED)
- return 0;
- {
- ProtobufCMessage **pmessage = member;
- ProtobufCMessage *subm;
- const ProtobufCMessage *def_mess;
- unsigned pref_len = scanned_member->length_prefix_len;
- def_mess = scanned_member->field->default_value;
- if (maybe_clear && *pmessage != NULL && *pmessage != def_mess)
- protobuf_c_message_free_unpacked (*pmessage, allocator);
- subm = protobuf_c_message_unpack (scanned_member->field->descriptor,
- allocator,
- len - pref_len, data + pref_len);
- *pmessage = subm; /* since we freed the message we must clear the field, even if NULL */
- if (subm == NULL)
- return 0;
- return 1;
- }
- }
- return 0;
-}
-
-static protobuf_c_boolean
-parse_optional_member (ScannedMember *scanned_member,
- void *member,
- ProtobufCMessage *message,
- ProtobufCAllocator *allocator)
-{
- if (!parse_required_member (scanned_member, member, allocator, TRUE))
- return 0;
- if (scanned_member->field->quantifier_offset != 0)
- STRUCT_MEMBER (protobuf_c_boolean,
- message,
- scanned_member->field->quantifier_offset) = 1;
- return 1;
-}
-
-static protobuf_c_boolean
-parse_repeated_member (ScannedMember *scanned_member,
- void *member,
- ProtobufCMessage *message,
- ProtobufCAllocator *allocator)
-{
- const ProtobufCFieldDescriptor *field = scanned_member->field;
- size_t *p_n = STRUCT_MEMBER_PTR(size_t, message, field->quantifier_offset);
- size_t siz = sizeof_elt_in_repeated_array (field->type);
- char *array = *(char**)member;
- if (!parse_required_member (scanned_member,
- array + siz * (*p_n),
- allocator,
- FALSE))
- return 0;
- *p_n += 1;
- return 1;
-}
-
-static unsigned scan_varint (unsigned len, const uint8_t *data)
-{
- unsigned i;
- if (len > 10)
- len = 10;
- for (i = 0; i < len; i++)
- if ((data[i] & 0x80) == 0)
- break;
- if (i == len)
- return 0;
- return i + 1;
-}
-
-static protobuf_c_boolean
-parse_packed_repeated_member (ScannedMember *scanned_member,
- void *member,
- ProtobufCMessage *message)
-{
- const ProtobufCFieldDescriptor *field = scanned_member->field;
- size_t *p_n = STRUCT_MEMBER_PTR(size_t, message, field->quantifier_offset);
- size_t siz = sizeof_elt_in_repeated_array (field->type);
- char *array = *(char**)member + siz * (*p_n);
- const uint8_t *at = scanned_member->data + scanned_member->length_prefix_len;
- size_t rem = scanned_member->len - scanned_member->length_prefix_len;
- size_t count = 0;
- unsigned i;
- switch (field->type)
- {
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
- count = (scanned_member->len - scanned_member->length_prefix_len) / 4;
-#ifdef IS_LITTLE_ENDIAN
- goto no_unpacking_needed;
-#else
- for (i = 0; i < count; i++)
- {
- ((uint32_t*)array)[i] = parse_fixed_uint32 (at);
- at += 4;
- }
-#endif
- break;
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
- count = (scanned_member->len - scanned_member->length_prefix_len) / 8;
-#ifdef IS_LITTLE_ENDIAN
- goto no_unpacking_needed;
-#else
- for (i = 0; i < count; i++)
- {
- ((uint64_t*)array)[i] = parse_fixed_uint64 (at);
- at += 8;
- }
- break;
-#endif
- case PROTOBUF_C_TYPE_INT32:
- while (rem > 0)
- {
- unsigned s = scan_varint (rem, at);
- if (s == 0)
- {
- UNPACK_ERROR (("bad packed-repeated int32 value"));
- return FALSE;
- }
- ((int32_t*)array)[count++] = parse_int32 (s, at);
- at += s;
- rem -= s;
- }
- break;
-
- case PROTOBUF_C_TYPE_SINT32:
- while (rem > 0)
- {
- unsigned s = scan_varint (rem, at);
- if (s == 0)
- {
- UNPACK_ERROR (("bad packed-repeated sint32 value"));
- return FALSE;
- }
- ((int32_t*)array)[count++] = unzigzag32 (parse_uint32 (s, at));
- at += s;
- rem -= s;
- }
- break;
- case PROTOBUF_C_TYPE_ENUM:
- case PROTOBUF_C_TYPE_UINT32:
- while (rem > 0)
- {
- unsigned s = scan_varint (rem, at);
- if (s == 0)
- {
- UNPACK_ERROR (("bad packed-repeated enum or uint32 value"));
- return FALSE;
- }
- ((uint32_t*)array)[count++] = parse_uint32 (s, at);
- at += s;
- rem -= s;
- }
- break;
-
- case PROTOBUF_C_TYPE_SINT64:
- while (rem > 0)
- {
- unsigned s = scan_varint (rem, at);
- if (s == 0)
- {
- UNPACK_ERROR (("bad packed-repeated sint64 value"));
- return FALSE;
- }
- ((int64_t*)array)[count++] = unzigzag64 (parse_uint64 (s, at));
- at += s;
- rem -= s;
- }
- break;
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_UINT64:
- while (rem > 0)
- {
- unsigned s = scan_varint (rem, at);
- if (s == 0)
- {
- UNPACK_ERROR (("bad packed-repeated int64/uint64 value"));
- return FALSE;
- }
- ((int64_t*)array)[count++] = parse_uint64 (s, at);
- at += s;
- rem -= s;
- }
- break;
- case PROTOBUF_C_TYPE_BOOL:
- count = rem;
- for (i = 0; i < count; i++)
- {
- if (at[i] > 1)
- {
- UNPACK_ERROR (("bad packed-repeated boolean value"));
- return FALSE;
- }
- ((protobuf_c_boolean*)array)[i] = at[i];
- }
- break;
- default:
- assert(0);
- }
- *p_n += count;
- return TRUE;
-
-#ifdef IS_LITTLE_ENDIAN
-no_unpacking_needed:
- memcpy (array, at, count * siz);
- *p_n += count;
- return TRUE;
-#endif
-}
-
-static protobuf_c_boolean
-parse_member (ScannedMember *scanned_member,
- ProtobufCMessage *message,
- ProtobufCAllocator *allocator)
-{
- const ProtobufCFieldDescriptor *field = scanned_member->field;
- void *member;
- if (field == NULL)
- {
- ProtobufCMessageUnknownField *ufield = message->unknown_fields + (message->n_unknown_fields++);
- ufield->tag = scanned_member->tag;
- ufield->wire_type = scanned_member->wire_type;
- ufield->len = scanned_member->len;
- DO_UNALIGNED_ALLOC (ufield->data, allocator, scanned_member->len, return 0);
- memcpy (ufield->data, scanned_member->data, ufield->len);
- return 1;
- }
- member = (char*)message + field->offset;
- switch (field->label)
- {
- case PROTOBUF_C_LABEL_REQUIRED:
- return parse_required_member (scanned_member, member, allocator, TRUE);
- case PROTOBUF_C_LABEL_OPTIONAL:
- return parse_optional_member (scanned_member, member, message, allocator);
- case PROTOBUF_C_LABEL_REPEATED:
- if (field->packed
- && scanned_member->wire_type == PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED)
- return parse_packed_repeated_member (scanned_member, member, message);
- else
- return parse_repeated_member (scanned_member, member, message, allocator);
- }
- PROTOBUF_C_ASSERT_NOT_REACHED ();
- return 0;
-}
-
-
-/* TODO: expose/use this function if desc->message_init==NULL
- (which occurs for old code, and may be useful for certain
- programatic techniques for generating descriptors). */
-static void
-protobuf_c_message_init_generic (const ProtobufCMessageDescriptor *desc,
- ProtobufCMessage *message)
-{
- unsigned i;
- memset (message, 0, desc->sizeof_message);
- message->descriptor = desc;
- for (i = 0; i < desc->n_fields; i++)
- if (desc->fields[i].default_value != NULL
- && desc->fields[i].label != PROTOBUF_C_LABEL_REPEATED)
- {
- void *field = STRUCT_MEMBER_P (message, desc->fields[i].offset);
- const void *dv = desc->fields[i].default_value;
- switch (desc->fields[i].type)
- {
- case PROTOBUF_C_TYPE_INT32:
- case PROTOBUF_C_TYPE_SINT32:
- case PROTOBUF_C_TYPE_SFIXED32:
- case PROTOBUF_C_TYPE_UINT32:
- case PROTOBUF_C_TYPE_FIXED32:
- case PROTOBUF_C_TYPE_FLOAT:
- case PROTOBUF_C_TYPE_ENUM:
- memcpy (field, dv, 4);
- break;
-
- case PROTOBUF_C_TYPE_INT64:
- case PROTOBUF_C_TYPE_SINT64:
- case PROTOBUF_C_TYPE_SFIXED64:
- case PROTOBUF_C_TYPE_UINT64:
- case PROTOBUF_C_TYPE_FIXED64:
- case PROTOBUF_C_TYPE_DOUBLE:
- memcpy (field, dv, 8);
- break;
-
- case PROTOBUF_C_TYPE_BOOL:
- memcpy (field, dv, sizeof (protobuf_c_boolean));
- break;
-
- case PROTOBUF_C_TYPE_BYTES:
- memcpy (field, dv, sizeof (ProtobufCBinaryData));
- break;
-
- case PROTOBUF_C_TYPE_STRING:
- case PROTOBUF_C_TYPE_MESSAGE:
- /* the next line essentially implements a cast from const,
- which is totally unavoidable. */
- *(const void**)field = dv;
- break;
- }
- }
-}
-
-/* ScannedMember slabs (an unpacking implementation detail).
- Before doing real unpacking, we first scan through the
- elements to see how many there are (for repeated fields),
- and which field to use (for non-repeated fields given twice).
-
- * In order to avoid allocations for small messages,
- we keep a stack-allocated slab of ScannedMembers of
- size FIRST_SCANNED_MEMBER_SLAB_SIZE (16).
- After we fill that up, we allocate each slab twice
- as large as the previous one. */
-#define FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2 4
-
-/* The number of slabs, including the stack-allocated ones;
- choose the number so that we would overflow if we needed
- a slab larger than provided. */
-#define MAX_SCANNED_MEMBER_SLAB \
- (sizeof(void*)*8 - 1 \
- - BOUND_SIZEOF_SCANNED_MEMBER_LOG2 \
- - FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2)
-
-ProtobufCMessage *
-protobuf_c_message_unpack (const ProtobufCMessageDescriptor *desc,
- ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data)
-{
- ProtobufCMessage *rv;
- size_t rem = len;
- const uint8_t *at = data;
- const ProtobufCFieldDescriptor *last_field = desc->fields + 0;
- ScannedMember first_member_slab[1<<FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2];
-
- /* scanned_member_slabs[i] is an array of arrays of ScannedMember.
- The first slab (scanned_member_slabs[0] is just a pointer to
- first_member_slab), above. All subsequent slabs will be allocated
- using the allocator. */
- ScannedMember *scanned_member_slabs[MAX_SCANNED_MEMBER_SLAB+1];
- unsigned which_slab = 0; /* the slab we are currently populating */
- unsigned in_slab_index = 0; /* number of members in the slab */
- size_t n_unknown = 0;
- unsigned f;
- unsigned i_slab;
- unsigned last_field_index = 0;
- unsigned long *required_fields_bitmap;
- unsigned required_fields_bitmap_len;
- static const unsigned word_bits = sizeof(long) * 8;
-
- ASSERT_IS_MESSAGE_DESCRIPTOR (desc);
-
- if (allocator == NULL)
- allocator = &protobuf_c_default_allocator;
-
- required_fields_bitmap_len = (desc->n_fields + word_bits - 1) / word_bits;
- required_fields_bitmap = alloca(required_fields_bitmap_len * sizeof(long));
- memset(required_fields_bitmap, 0, required_fields_bitmap_len * sizeof(long));
-
- DO_ALLOC (rv, allocator, desc->sizeof_message, return NULL);
- scanned_member_slabs[0] = first_member_slab;
-
- /* Generated code always defines "message_init".
- However, we provide a fallback for (1) users of old protobuf-c
- generated-code that do not provide the function,
- and (2) descriptors constructed from some other source
- (most likely, direct construction from the .proto file) */
- if (desc->message_init != NULL)
- protobuf_c_message_init (desc, rv);
- else
- protobuf_c_message_init_generic (desc, rv);
-
- while (rem > 0)
- {
- uint32_t tag;
- ProtobufCWireType wire_type;
- size_t used = parse_tag_and_wiretype (rem, at, &tag, &wire_type);
- const ProtobufCFieldDescriptor *field;
- ScannedMember tmp;
- if (used == 0)
- {
- UNPACK_ERROR (("error parsing tag/wiretype at offset %u",
- (unsigned)(at-data)));
- goto error_cleanup_during_scan;
- }
- /* XXX: consider optimizing for field[1].id == tag, if field[1] exists! */
- if (last_field->id != tag)
- {
- /* lookup field */
- int field_index = int_range_lookup (desc->n_field_ranges,
- desc->field_ranges,
- tag);
- if (field_index < 0)
- {
- field = NULL;
- n_unknown++;
- }
- else
- {
- field = desc->fields + field_index;
- last_field = field;
- last_field_index = field_index;
- }
- }
- else
- field = last_field;
-
- if (field != NULL && field->label == PROTOBUF_C_LABEL_REQUIRED)
- required_fields_bitmap[last_field_index / word_bits] |= (1UL << (last_field_index % word_bits));
-
- at += used;
- rem -= used;
- tmp.tag = tag;
- tmp.wire_type = wire_type;
- tmp.field = field;
- tmp.data = at;
- switch (wire_type)
- {
- case PROTOBUF_C_WIRE_TYPE_VARINT:
- {
- unsigned max_len = rem < 10 ? rem : 10;
- unsigned i;
- for (i = 0; i < max_len; i++)
- if ((at[i] & 0x80) == 0)
- break;
- if (i == max_len)
- {
- UNPACK_ERROR (("unterminated varint at offset %u",
- (unsigned)(at-data)));
- goto error_cleanup_during_scan;
- }
- tmp.len = i + 1;
- }
- break;
- case PROTOBUF_C_WIRE_TYPE_64BIT:
- if (rem < 8)
- {
- UNPACK_ERROR (("too short after 64bit wiretype at offset %u",
- (unsigned)(at-data)));
- goto error_cleanup_during_scan;
- }
- tmp.len = 8;
- break;
- case PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED:
- {
- size_t pref_len;
- tmp.len = scan_length_prefixed_data (rem, at, &pref_len);
- if (tmp.len == 0)
- {
- /* NOTE: scan_length_prefixed_data calls UNPACK_ERROR */
- goto error_cleanup_during_scan;
- }
- tmp.length_prefix_len = pref_len;
- break;
- }
- case PROTOBUF_C_WIRE_TYPE_32BIT:
- if (rem < 4)
- {
- UNPACK_ERROR (("too short after 32bit wiretype at offset %u",
- (unsigned)(at-data)));
- goto error_cleanup_during_scan;
- }
- tmp.len = 4;
- break;
- default:
- UNPACK_ERROR (("unsupported tag %u at offset %u",
- wire_type, (unsigned)(at-data)));
- goto error_cleanup_during_scan;
- }
- if (in_slab_index == (1U<<(which_slab+FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2)))
- {
- size_t size;
- in_slab_index = 0;
- if (which_slab == MAX_SCANNED_MEMBER_SLAB)
- {
- UNPACK_ERROR (("too many fields"));
- goto error_cleanup_during_scan;
- }
- which_slab++;
- size = sizeof(ScannedMember) << (which_slab+FIRST_SCANNED_MEMBER_SLAB_SIZE_LOG2);
- /* TODO: consider using alloca() ! */
- if (allocator->tmp_alloc != NULL)
- scanned_member_slabs[which_slab] = TMPALLOC(allocator, size);
- else
- DO_ALLOC (scanned_member_slabs[which_slab], allocator, size, goto error_cleanup_during_scan);
- }
- scanned_member_slabs[which_slab][in_slab_index++] = tmp;
-
- if (field != NULL && field->label == PROTOBUF_C_LABEL_REPEATED)
- {
- size_t *n = STRUCT_MEMBER_PTR (size_t, rv, field->quantifier_offset);
- if (field->packed
- && wire_type == PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED)
- {
- size_t count;
- if (!count_packed_elements (field->type,
- tmp.len - tmp.length_prefix_len,
- tmp.data + tmp.length_prefix_len,
- &count))
- {
- UNPACK_ERROR (("counting packed elements"));
- goto error_cleanup_during_scan;
- }
- *n += count;
- }
- else
- *n += 1;
- }
-
- at += tmp.len;
- rem -= tmp.len;
- }
-
- /* allocate space for repeated fields, also check that all required fields have been set */
- for (f = 0; f < desc->n_fields; f++)
- {
- const ProtobufCFieldDescriptor *field = desc->fields + f;
- if (field->label == PROTOBUF_C_LABEL_REPEATED)
- {
- size_t siz = sizeof_elt_in_repeated_array (field->type);
- size_t *n_ptr = STRUCT_MEMBER_PTR (size_t, rv, field->quantifier_offset);
- if (*n_ptr != 0)
- {
- unsigned n = *n_ptr;
- *n_ptr = 0;
- assert(rv->descriptor != NULL);
-#define CLEAR_REMAINING_N_PTRS() \
- for(f++;f < desc->n_fields; f++) \
- { \
- field = desc->fields + f; \
- if (field->label == PROTOBUF_C_LABEL_REPEATED) \
- STRUCT_MEMBER (size_t, rv, field->quantifier_offset) = 0; \
- }
- DO_ALLOC (STRUCT_MEMBER (void *, rv, field->offset),
- allocator, siz * n,
- CLEAR_REMAINING_N_PTRS (); goto error_cleanup);
-#undef CLEAR_REMAINING_N_PTRS
- }
- }
- else if (field->label == PROTOBUF_C_LABEL_REQUIRED)
- {
- if (field->default_value == NULL && 0 == (required_fields_bitmap[f / word_bits] & (1UL << (f % word_bits))))
- {
- UNPACK_ERROR (("message '%s': missing required field '%s'", desc->name, field->name));
- goto error_cleanup;
- }
- }
- }
-
- /* allocate space for unknown fields */
- if (n_unknown)
- {
- DO_ALLOC (rv->unknown_fields,
- allocator, n_unknown * sizeof (ProtobufCMessageUnknownField),
- goto error_cleanup);
- }
-
- /* do real parsing */
- for (i_slab = 0; i_slab <= which_slab; i_slab++)
- {
- unsigned max = (i_slab == which_slab) ? in_slab_index : (1U<<(i_slab+4));
- ScannedMember *slab = scanned_member_slabs[i_slab];
- unsigned j;
- for (j = 0; j < max; j++)
- {
- if (!parse_member (slab + j, rv, allocator))
- {
- UNPACK_ERROR (("error parsing member %s of %s",
- slab->field ? slab->field->name : "*unknown-field*", desc->name));
- goto error_cleanup;
- }
- }
- }
-
- /* cleanup */
- if (allocator->tmp_alloc == NULL)
- {
- unsigned j;
- for (j = 1; j <= which_slab; j++)
- FREE (allocator, scanned_member_slabs[j]);
- }
-
- return rv;
-
-error_cleanup:
- protobuf_c_message_free_unpacked (rv, allocator);
- if (allocator->tmp_alloc == NULL)
- {
- unsigned j;
- for (j = 1; j <= which_slab; j++)
- FREE (allocator, scanned_member_slabs[j]);
- }
- return NULL;
-
-error_cleanup_during_scan:
- FREE (allocator, rv);
- if (allocator->tmp_alloc == NULL)
- {
- unsigned j;
- for (j = 1; j <= which_slab; j++)
- FREE (allocator, scanned_member_slabs[j]);
- }
- return NULL;
-}
-
-/* === free_unpacked === */
-void
-protobuf_c_message_free_unpacked (ProtobufCMessage *message,
- ProtobufCAllocator *allocator)
-{
- const ProtobufCMessageDescriptor *desc = message->descriptor;
- unsigned f;
- ASSERT_IS_MESSAGE (message);
- if (allocator == NULL)
- allocator = &protobuf_c_default_allocator;
- message->descriptor = NULL;
- for (f = 0; f < desc->n_fields; f++)
- {
- if (desc->fields[f].label == PROTOBUF_C_LABEL_REPEATED)
- {
- size_t n = STRUCT_MEMBER (size_t, message, desc->fields[f].quantifier_offset);
- void * arr = STRUCT_MEMBER (void *, message, desc->fields[f].offset);
- if (desc->fields[f].type == PROTOBUF_C_TYPE_STRING)
- {
- unsigned i;
- for (i = 0; i < n; i++)
- FREE (allocator, ((char**)arr)[i]);
- }
- else if (desc->fields[f].type == PROTOBUF_C_TYPE_BYTES)
- {
- unsigned i;
- for (i = 0; i < n; i++)
- FREE (allocator, ((ProtobufCBinaryData*)arr)[i].data);
- }
- else if (desc->fields[f].type == PROTOBUF_C_TYPE_MESSAGE)
- {
- unsigned i;
- for (i = 0; i < n; i++)
- protobuf_c_message_free_unpacked (((ProtobufCMessage**)arr)[i], allocator);
- }
- if (arr != NULL)
- FREE (allocator, arr);
- }
- else if (desc->fields[f].type == PROTOBUF_C_TYPE_STRING)
- {
- char *str = STRUCT_MEMBER (char *, message, desc->fields[f].offset);
- if (str && str != desc->fields[f].default_value)
- FREE (allocator, str);
- }
- else if (desc->fields[f].type == PROTOBUF_C_TYPE_BYTES)
- {
- void *data = STRUCT_MEMBER (ProtobufCBinaryData, message, desc->fields[f].offset).data;
- const ProtobufCBinaryData *default_bd;
- default_bd = desc->fields[f].default_value;
- if (data != NULL
- && (default_bd == NULL || default_bd->data != data))
- FREE (allocator, data);
- }
- else if (desc->fields[f].type == PROTOBUF_C_TYPE_MESSAGE)
- {
- ProtobufCMessage *sm;
- sm = STRUCT_MEMBER (ProtobufCMessage *, message,desc->fields[f].offset);
- if (sm && sm != desc->fields[f].default_value)
- protobuf_c_message_free_unpacked (sm, allocator);
- }
- }
-
- for (f = 0; f < message->n_unknown_fields; f++)
- FREE (allocator, message->unknown_fields[f].data);
- if (message->unknown_fields != NULL)
- FREE (allocator, message->unknown_fields);
-
- FREE (allocator, message);
-}
-
-/* === services === */
-typedef void (*GenericHandler)(void *service,
- const ProtobufCMessage *input,
- ProtobufCClosure closure,
- void *closure_data);
-void
-protobuf_c_service_invoke_internal(ProtobufCService *service,
- unsigned method_index,
- const ProtobufCMessage *input,
- ProtobufCClosure closure,
- void *closure_data)
-{
- GenericHandler *handlers;
- GenericHandler handler;
-
- /* Verify that method_index is within range.
- If this fails, you are likely invoking a newly added
- method on an old service. (Although other memory corruption
- bugs can cause this assertion too) */
- PROTOBUF_C_ASSERT (method_index < service->descriptor->n_methods);
-
- /* Get the array of virtual methods (which are enumerated by
- the generated code) */
- handlers = (GenericHandler *) (service + 1);
-
- /* get our method and invoke it */
- /* TODO: seems like handler==NULL is a situation that
- needs handling */
- handler = handlers[method_index];
- (*handler) (service, input, closure, closure_data);
-}
-
-void
-protobuf_c_service_generated_init (ProtobufCService *service,
- const ProtobufCServiceDescriptor *descriptor,
- ProtobufCServiceDestroy destroy)
-{
- ASSERT_IS_SERVICE_DESCRIPTOR(descriptor);
- service->descriptor = descriptor;
- service->destroy = destroy;
- service->invoke = protobuf_c_service_invoke_internal;
- memset (service + 1, 0, descriptor->n_methods * sizeof (GenericHandler));
-}
-
-void protobuf_c_service_destroy (ProtobufCService *service)
-{
- service->destroy (service);
-}
-
-/* --- querying the descriptors --- */
-const ProtobufCEnumValue *
-protobuf_c_enum_descriptor_get_value_by_name
- (const ProtobufCEnumDescriptor *desc,
- const char *name)
-{
- unsigned start = 0, count = desc->n_value_names;
- while (count > 1)
- {
- unsigned mid = start + count / 2;
- int rv = strcmp (desc->values_by_name[mid].name, name);
- if (rv == 0)
- return desc->values + desc->values_by_name[mid].index;
- else if (rv < 0)
- {
- count = start + count - (mid + 1);
- start = mid + 1;
- }
- else
- count = mid - start;
- }
- if (count == 0)
- return NULL;
- if (strcmp (desc->values_by_name[start].name, name) == 0)
- return desc->values + desc->values_by_name[start].index;
- return NULL;
-}
-const ProtobufCEnumValue *
-protobuf_c_enum_descriptor_get_value
- (const ProtobufCEnumDescriptor *desc,
- int value)
-{
- int rv = int_range_lookup (desc->n_value_ranges, desc->value_ranges, value);
- if (rv < 0)
- return NULL;
- return desc->values + rv;
-}
-
-const ProtobufCFieldDescriptor *
-protobuf_c_message_descriptor_get_field_by_name
- (const ProtobufCMessageDescriptor *desc,
- const char *name)
-{
- unsigned start = 0, count = desc->n_fields;
- const ProtobufCFieldDescriptor *field;
- while (count > 1)
- {
- unsigned mid = start + count / 2;
- int rv;
- field = desc->fields + desc->fields_sorted_by_name[mid];
- rv = strcmp (field->name, name);
- if (rv == 0)
- return field;
- else if (rv < 0)
- {
- count = start + count - (mid + 1);
- start = mid + 1;
- }
- else
- count = mid - start;
- }
- if (count == 0)
- return NULL;
- field = desc->fields + desc->fields_sorted_by_name[start];
- if (strcmp (field->name, name) == 0)
- return field;
- return NULL;
-}
-
-const ProtobufCFieldDescriptor *
-protobuf_c_message_descriptor_get_field
- (const ProtobufCMessageDescriptor *desc,
- unsigned value)
-{
- int rv = int_range_lookup (desc->n_field_ranges,
- desc->field_ranges,
- value);
- if (rv < 0)
- return NULL;
- return desc->fields + rv;
-}
-
-const ProtobufCMethodDescriptor *
-protobuf_c_service_descriptor_get_method_by_name
- (const ProtobufCServiceDescriptor *desc,
- const char *name)
-{
- unsigned start = 0, count = desc->n_methods;
- while (count > 1)
- {
- unsigned mid = start + count / 2;
- unsigned mid_index = desc->method_indices_by_name[mid];
- const char *mid_name = desc->methods[mid_index].name;
- int rv = strcmp (mid_name, name);
- if (rv == 0)
- return desc->methods + desc->method_indices_by_name[mid];
- if (rv < 0)
- {
- count = start + count - (mid + 1);
- start = mid + 1;
- }
- else
- {
- count = mid - start;
- }
- }
- if (count == 0)
- return NULL;
- if (strcmp (desc->methods[desc->method_indices_by_name[start]].name, name) == 0)
- return desc->methods + desc->method_indices_by_name[start];
- return NULL;
-}
diff --git a/navit/maptool/google/protobuf-c/protobuf-c.h b/navit/maptool/google/protobuf-c/protobuf-c.h
deleted file mode 100644
index 98bd77b2a..000000000
--- a/navit/maptool/google/protobuf-c/protobuf-c.h
+++ /dev/null
@@ -1,444 +0,0 @@
-/* --- protobuf-c.h: public protobuf c runtime api --- */
-
-/*
- * Copyright 2008, Dave Benson.
- *
- * 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.
- */
-
-#ifndef __PROTOBUF_C_RUNTIME_H_
-#define __PROTOBUF_C_RUNTIME_H_
-
-#include <stddef.h>
-#include <assert.h>
-
-#ifdef __cplusplus
-# define PROTOBUF_C_BEGIN_DECLS extern "C" {
-# define PROTOBUF_C_END_DECLS }
-#else
-# define PROTOBUF_C_BEGIN_DECLS
-# define PROTOBUF_C_END_DECLS
-#endif
-
-#if !defined(PROTOBUF_C_NO_DEPRECATED) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
-#define PROTOBUF_C_DEPRECATED __attribute__((__deprecated__))
-#else
-#define PROTOBUF_C_DEPRECATED
-#endif
-
-/* Define int32_t, int64_t, uint32_t, uint64_t, uint8_t.
-
- Usually, just include <inttypes.h> to do the work.
- XXX: should we use stdint.h?
- */
-#ifndef PROTOBUF_C_SKIP_INTTYPES_H
-# if defined(_MSC_VER)
- /* On windows, in ms visual studio, define the types ourselves */
-# define int32_t signed __int32
-# define uint32_t unsigned __int32
-# define int64_t signed __int64
-# define uint64_t unsigned __int64
-# define uint8_t unsigned char
-# else
- /* Use the system inttypes.h */
-# include <inttypes.h>
-# endif
-#endif
-
-PROTOBUF_C_BEGIN_DECLS
-
-typedef enum
-{
- PROTOBUF_C_LABEL_REQUIRED,
- PROTOBUF_C_LABEL_OPTIONAL,
- PROTOBUF_C_LABEL_REPEATED
-} ProtobufCLabel;
-
-typedef enum
-{
- PROTOBUF_C_TYPE_INT32,
- PROTOBUF_C_TYPE_SINT32,
- PROTOBUF_C_TYPE_SFIXED32,
- PROTOBUF_C_TYPE_INT64,
- PROTOBUF_C_TYPE_SINT64,
- PROTOBUF_C_TYPE_SFIXED64,
- PROTOBUF_C_TYPE_UINT32,
- PROTOBUF_C_TYPE_FIXED32,
- PROTOBUF_C_TYPE_UINT64,
- PROTOBUF_C_TYPE_FIXED64,
- PROTOBUF_C_TYPE_FLOAT,
- PROTOBUF_C_TYPE_DOUBLE,
- PROTOBUF_C_TYPE_BOOL,
- PROTOBUF_C_TYPE_ENUM,
- PROTOBUF_C_TYPE_STRING,
- PROTOBUF_C_TYPE_BYTES,
- //PROTOBUF_C_TYPE_GROUP, // NOT SUPPORTED
- PROTOBUF_C_TYPE_MESSAGE,
-} ProtobufCType;
-
-typedef int protobuf_c_boolean;
-#define PROTOBUF_C_OFFSETOF(struct, member) offsetof(struct, member)
-
-#define PROTOBUF_C_ASSERT(condition) assert(condition)
-#define PROTOBUF_C_ASSERT_NOT_REACHED() assert(0)
-
-typedef struct _ProtobufCBinaryData ProtobufCBinaryData;
-struct _ProtobufCBinaryData
-{
- size_t len;
- uint8_t *data;
-};
-
-typedef struct _ProtobufCIntRange ProtobufCIntRange; /* private */
-
-/* --- memory management --- */
-typedef struct _ProtobufCAllocator ProtobufCAllocator;
-struct _ProtobufCAllocator
-{
- void *(*alloc)(void *allocator_data, size_t size);
- void (*free)(void *allocator_data, void *pointer);
- void *(*tmp_alloc)(void *allocator_data, size_t size);
- unsigned max_alloca;
- void *allocator_data;
-};
-
-/* This is a configurable allocator.
- * By default, it uses the system allocator (meaning malloc() and free()).
- * This is typically changed to adapt to frameworks that provide
- * some nonstandard allocation functions.
- *
- * NOTE: you may modify this allocator.
- */
-extern ProtobufCAllocator protobuf_c_default_allocator; /* settable */
-
-/* This is the system allocator, meaning it uses malloc() and free().
- *
- * NOTE: please do NOT modify this allocator.
- */
-extern ProtobufCAllocator protobuf_c_system_allocator; /* use malloc, free etc */
-
-/* This is the function that our default allocators call when they
- run out-of-memory. The default behavior of this function is to
- terminate your program. */
-extern void (*protobuf_c_out_of_memory) (void);
-
-/* --- append-only data buffer --- */
-typedef struct _ProtobufCBuffer ProtobufCBuffer;
-struct _ProtobufCBuffer
-{
- void (*append)(ProtobufCBuffer *buffer,
- size_t len,
- const uint8_t *data);
-};
-/* --- enums --- */
-typedef struct _ProtobufCEnumValue ProtobufCEnumValue;
-typedef struct _ProtobufCEnumValueIndex ProtobufCEnumValueIndex;
-typedef struct _ProtobufCEnumDescriptor ProtobufCEnumDescriptor;
-
-/* ProtobufCEnumValue: this represents a single value of
- * an enumeration.
- * 'name' is the string identifying this value, as given in the .proto file.
- * 'c_name' is the full name of the C enumeration value.
- * 'value' is the number assigned to this value, as given in the .proto file.
- */
-struct _ProtobufCEnumValue
-{
- const char *name;
- const char *c_name;
- int value;
-};
-
-/* ProtobufCEnumDescriptor: the represents the enum as a whole,
- * with all its values.
- * 'magic' is a code we check to ensure that the api is used correctly.
- * 'name' is the qualified name (e.g. "namespace.Type").
- * 'short_name' is the unqualified name ("Type"), as given in the .proto file.
- * 'package_name' is the '.'-separated namespace
- * 'n_values' is the number of distinct values.
- * 'values' is the array of distinct values.
- * 'n_value_names' number of named values (including aliases).
- * 'value_names' are the named values (including aliases).
- *
- * The rest of the values are private essentially.
- *
- * see also: Use protobuf_c_enum_descriptor_get_value_by_name()
- * and protobuf_c_enum_descriptor_get_value() to efficiently
- * lookup values in the descriptor.
- */
-struct _ProtobufCEnumDescriptor
-{
- uint32_t magic;
-
- const char *name;
- const char *short_name;
- const char *c_name;
- const char *package_name;
-
- /* sorted by value */
- unsigned n_values;
- const ProtobufCEnumValue *values;
-
- /* sorted by name */
- unsigned n_value_names;
- const ProtobufCEnumValueIndex *values_by_name;
-
- /* value-ranges, for faster lookups by number */
- unsigned n_value_ranges;
- const ProtobufCIntRange *value_ranges;
-
- void *reserved1;
- void *reserved2;
- void *reserved3;
- void *reserved4;
-};
-
-/* --- messages --- */
-typedef struct _ProtobufCMessageDescriptor ProtobufCMessageDescriptor;
-typedef struct _ProtobufCFieldDescriptor ProtobufCFieldDescriptor;
-typedef struct _ProtobufCMessage ProtobufCMessage;
-typedef void (*ProtobufCMessageInit)(ProtobufCMessage *);
-/* ProtobufCFieldDescriptor: description of a single field
- * in a message.
- * 'name' is the name of the field, as given in the .proto file.
- * 'id' is the code representing the field, as given in the .proto file.
- * 'label' is one of PROTOBUF_C_LABEL_{REQUIRED,OPTIONAL,REPEATED}
- * 'type' is the type of field.
- * 'quantifier_offset' is the offset in bytes into the message's C structure
- * for this member's "has_MEMBER" field (for optional members) or
- * "n_MEMBER" field (for repeated members).
- * 'offset' is the offset in bytes into the message's C structure
- * for the member itself.
- * 'descriptor' is a pointer to a ProtobufC{Enum,Message}Descriptor
- * if type is PROTOBUF_C_TYPE_{ENUM,MESSAGE} respectively,
- * otherwise NULL.
- * 'default_value' is a pointer to a default value for this field,
- * where allowed.
- */
-struct _ProtobufCFieldDescriptor
-{
- const char *name;
- uint32_t id;
- ProtobufCLabel label;
- ProtobufCType type;
- unsigned quantifier_offset;
- unsigned offset;
- const void *descriptor; /* for MESSAGE and ENUM types */
- const void *default_value; /* or NULL if no default-value */
- protobuf_c_boolean packed;
-
- unsigned reserved_flags;
- void *reserved2;
- void *reserved3;
-};
-/* ProtobufCMessageDescriptor: description of a message.
- *
- * 'magic' is a code we check to ensure that the api is used correctly.
- * 'name' is the qualified name (e.g. "namespace.Type").
- * 'short_name' is the unqualified name ("Type"), as given in the .proto file.
- * 'c_name' is the c-formatted name of the structure
- * 'package_name' is the '.'-separated namespace
- * 'sizeof_message' is the size in bytes of the C structure
- * representing an instance of this type of message.
- * 'n_fields' is the number of known fields in this message.
- * 'fields' is the fields sorted by id number.
- * 'fields_sorted_by_name', 'n_field_ranges' and 'field_ranges'
- * are used for looking up fields by name and id. (private)
- */
-struct _ProtobufCMessageDescriptor
-{
- uint32_t magic;
-
- const char *name;
- const char *short_name;
- const char *c_name;
- const char *package_name;
-
- size_t sizeof_message;
-
- /* sorted by field-id */
- unsigned n_fields;
- const ProtobufCFieldDescriptor *fields;
- const unsigned *fields_sorted_by_name;
-
- /* ranges, optimization for looking up fields */
- unsigned n_field_ranges;
- const ProtobufCIntRange *field_ranges;
-
- ProtobufCMessageInit message_init;
- void *reserved1;
- void *reserved2;
- void *reserved3;
-};
-
-
-/* ProtobufCMessage: an instance of a message.
- *
- * ProtobufCMessage is sort-of a lightweight
- * base-class for all messages.
- *
- * In particular, ProtobufCMessage doesn't have
- * any allocation policy associated with it.
- * That's because it is common to create ProtobufCMessage's
- * on the stack. In fact, we that's what we recommend
- * for sending messages (because if you just allocate from the
- * stack, then you can't really have a memory leak).
- *
- * This means that functions like protobuf_c_message_unpack()
- * which return a ProtobufCMessage must be paired
- * with a free function, like protobuf_c_message_free_unpacked().
- *
- * 'descriptor' gives the locations and types of the members of message
- * 'n_unknown_fields' is the number of fields we didn't recognize.
- * 'unknown_fields' are fields we didn't recognize.
- */
-typedef struct _ProtobufCMessageUnknownField ProtobufCMessageUnknownField;
-struct _ProtobufCMessage
-{
- const ProtobufCMessageDescriptor *descriptor;
- unsigned n_unknown_fields;
- ProtobufCMessageUnknownField *unknown_fields;
-};
-#define PROTOBUF_C_MESSAGE_INIT(descriptor) { descriptor, 0, NULL }
-
-/* To pack a message: you have two options:
- (1) you can compute the size of the message
- using protobuf_c_message_get_packed_size()
- then pass protobuf_c_message_pack() a buffer of
- that length.
- (2) Provide a virtual buffer (a ProtobufCBuffer) to
- accept data as we scan through it.
- */
-size_t protobuf_c_message_get_packed_size(const ProtobufCMessage *message);
-size_t protobuf_c_message_pack (const ProtobufCMessage *message,
- uint8_t *out);
-size_t protobuf_c_message_pack_to_buffer (const ProtobufCMessage *message,
- ProtobufCBuffer *buffer);
-
-ProtobufCMessage *
- protobuf_c_message_unpack (const ProtobufCMessageDescriptor *,
- ProtobufCAllocator *allocator,
- size_t len,
- const uint8_t *data);
-void protobuf_c_message_free_unpacked (ProtobufCMessage *message,
- ProtobufCAllocator *allocator);
-
-/* WARNING: 'message' must be a block of memory
- of size descriptor->sizeof_message. */
-#define protobuf_c_message_init(descriptor, message) ((descriptor)->message_init((ProtobufCMessage*) (message)))
-
-/* --- services --- */
-typedef struct _ProtobufCMethodDescriptor ProtobufCMethodDescriptor;
-typedef struct _ProtobufCServiceDescriptor ProtobufCServiceDescriptor;
-
-struct _ProtobufCMethodDescriptor
-{
- const char *name;
- const ProtobufCMessageDescriptor *input;
- const ProtobufCMessageDescriptor *output;
-};
-struct _ProtobufCServiceDescriptor
-{
- uint32_t magic;
-
- const char *name;
- const char *short_name;
- const char *c_name;
- const char *package;
- unsigned n_methods;
- const ProtobufCMethodDescriptor *methods; /* in order from .proto file */
- const unsigned *method_indices_by_name;
-};
-
-typedef struct _ProtobufCService ProtobufCService;
-typedef void (*ProtobufCClosure)(const ProtobufCMessage *message,
- void *closure_data);
-struct _ProtobufCService
-{
- const ProtobufCServiceDescriptor *descriptor;
- void (*invoke)(ProtobufCService *service,
- unsigned method_index,
- const ProtobufCMessage *input,
- ProtobufCClosure closure,
- void *closure_data);
- void (*destroy) (ProtobufCService *service);
-};
-
-
-void protobuf_c_service_destroy (ProtobufCService *);
-
-
-/* --- querying the descriptors --- */
-const ProtobufCEnumValue *
-protobuf_c_enum_descriptor_get_value_by_name
- (const ProtobufCEnumDescriptor *desc,
- const char *name);
-const ProtobufCEnumValue *
-protobuf_c_enum_descriptor_get_value
- (const ProtobufCEnumDescriptor *desc,
- int value);
-const ProtobufCFieldDescriptor *
-protobuf_c_message_descriptor_get_field_by_name
- (const ProtobufCMessageDescriptor *desc,
- const char *name);
-const ProtobufCFieldDescriptor *
-protobuf_c_message_descriptor_get_field
- (const ProtobufCMessageDescriptor *desc,
- unsigned value);
-const ProtobufCMethodDescriptor *
-protobuf_c_service_descriptor_get_method_by_name
- (const ProtobufCServiceDescriptor *desc,
- const char *name);
-
-/* --- wire format enums --- */
-typedef enum
-{
- PROTOBUF_C_WIRE_TYPE_VARINT,
- PROTOBUF_C_WIRE_TYPE_64BIT,
- PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED,
- PROTOBUF_C_WIRE_TYPE_START_GROUP, /* unsupported */
- PROTOBUF_C_WIRE_TYPE_END_GROUP, /* unsupported */
- PROTOBUF_C_WIRE_TYPE_32BIT
-} ProtobufCWireType;
-
-/* --- unknown message fields --- */
-struct _ProtobufCMessageUnknownField
-{
- uint32_t tag;
- ProtobufCWireType wire_type;
- size_t len;
- uint8_t *data;
-};
-
-/* --- extra (superfluous) api: trivial buffer --- */
-typedef struct _ProtobufCBufferSimple ProtobufCBufferSimple;
-struct _ProtobufCBufferSimple
-{
- ProtobufCBuffer base;
- size_t alloced;
- size_t len;
- uint8_t *data;
- protobuf_c_boolean must_free_data;
-};
-#define PROTOBUF_C_BUFFER_SIMPLE_INIT(array_of_bytes) \
-{ { protobuf_c_buffer_simple_append }, \
- sizeof(array_of_bytes), 0, (array_of_bytes), 0 }
-#define PROTOBUF_C_BUFFER_SIMPLE_CLEAR(simp_buf) \
- do { if ((simp_buf)->must_free_data) \
- protobuf_c_default_allocator.free (&protobuf_c_default_allocator.allocator_data, (simp_buf)->data); } while (0)
-
-/* ====== private ====== */
-#include "protobuf-c-private.h"
-
-
-PROTOBUF_C_END_DECLS
-
-#endif /* __PROTOBUF_C_RUNTIME_H_ */
diff --git a/navit/maptool/itembin.c b/navit/maptool/itembin.c
deleted file mode 100644
index 98b0c52a6..000000000
--- a/navit/maptool/itembin.c
+++ /dev/null
@@ -1,718 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <string.h>
-#include <stdlib.h>
-#include <assert.h>
-#include "maptool.h"
-#include "linguistics.h"
-#include "file.h"
-#include "debug.h"
-
-
-
-int
-item_bin_read(struct item_bin *ib, FILE *in)
-{
- if (fread(ib, 4, 1, in) == 0)
- return 0;
- if (!ib->len)
- return 1;
- if (fread((unsigned char *)ib+4, ib->len*4, 1, in))
- return 2;
- return 0;
-}
-
-void
-item_bin_set_type(struct item_bin *ib, enum item_type type)
-{
- ib->type=type;
-}
-
-void
-item_bin_init(struct item_bin *ib, enum item_type type)
-{
- ib->clen=0;
- ib->len=2;
- item_bin_set_type(ib, type);
-}
-
-
-void
-item_bin_add_coord(struct item_bin *ib, struct coord *coords_to_add, int count)
-{
- struct coord *coord_list=(struct coord *)(ib+1);
- coord_list+=ib->clen/2;
- memcpy(coord_list, coords_to_add, count*sizeof(struct coord));
- ib->clen+=count*2;
- ib->len+=count*2;
-}
-
-void
-item_bin_add_coord_reverse(struct item_bin *ib, struct coord *c, int count)
-{
- int i;
- for (i = count-1 ; i >= 0 ; i--)
- item_bin_add_coord(ib, &c[i], 1);
-}
-
-void
-item_bin_bbox(struct item_bin *ib, struct rect *r)
-{
- struct coord c;
- item_bin_add_coord(ib, &r->l, 1);
- c.x=r->h.x;
- c.y=r->l.y;
- item_bin_add_coord(ib, &c, 1);
- item_bin_add_coord(ib, &r->h, 1);
- c.x=r->l.x;
- c.y=r->h.y;
- item_bin_add_coord(ib, &c, 1);
- item_bin_add_coord(ib, &r->l, 1);
-}
-
-void
-item_bin_copy_coord(struct item_bin *ib, struct item_bin *from, int dir)
-{
- struct coord *c=(struct coord *)(from+1);
- int i,count=from->clen/2;
- if (dir >= 0) {
- item_bin_add_coord(ib, c, count);
- return;
- }
- for (i = 1 ; i <= count ; i++)
- item_bin_add_coord(ib, &c[count-i], 1);
-}
-
-void
-item_bin_copy_attr(struct item_bin *ib, struct item_bin *from, enum attr_type attr)
-{
- struct attr_bin *ab=item_bin_get_attr_bin(from, attr, NULL);
- if (ab)
- item_bin_add_attr_data(ib, ab->type, (void *)(ab+1), (ab->len-1)*4);
- assert(attr == attr_osm_wayid);
- assert(item_bin_get_wayid(ib) == item_bin_get_wayid(from));
-}
-
-void
-item_bin_add_coord_rect(struct item_bin *ib, struct rect *r)
-{
- item_bin_add_coord(ib, &r->l, 1);
- item_bin_add_coord(ib, &r->h, 1);
-}
-
-int
-attr_bin_write_data(struct attr_bin *ab, enum attr_type type, void *data, int size)
-{
- int pad=(4-(size%4))%4;
- ab->type=type;
- memcpy(ab+1, data, size);
- memset((unsigned char *)(ab+1)+size, 0, pad);
- ab->len=(size+pad)/4+1;
- return ab->len+1;
-}
-
-int
-attr_bin_write_attr(struct attr_bin *ab, struct attr *attr)
-{
- return attr_bin_write_data(ab, attr->type, attr_data_get(attr), attr_data_size(attr));
-}
-
-void
-item_bin_add_attr_data(struct item_bin *ib, enum attr_type type, void *data, int size)
-{
- struct attr_bin *ab=(struct attr_bin *)((int *)ib+ib->len+1);
- ib->len+=attr_bin_write_data(ab, type, data, size);
-}
-
-void
-item_bin_add_attr(struct item_bin *ib, struct attr *attr)
-{
- struct attr_bin *ab=(struct attr_bin *)((int *)ib+ib->len+1);
- if (ATTR_IS_GROUP(attr->type)) {
- int i=0;
- int *abptr;
- ab->type=attr->type;
- ab->len=1;
- abptr=(int *)(ab+1);
- while (attr->u.attrs[i].type) {
- int size=attr_bin_write_attr((struct attr_bin *)abptr, &attr->u.attrs[i]);
- ab->len+=size;
- abptr+=size;
- i++;
- }
- ib->len+=ab->len+1;
-
- } else
- ib->len+=attr_bin_write_attr(ab, attr);
-
-}
-
-void
-item_bin_remove_attr(struct item_bin *ib, void *ptr)
-{
- unsigned char *s=(unsigned char *)ib;
- unsigned char *e=s+(ib->len+1)*4;
- s+=sizeof(struct item_bin)+ib->clen*4;
- while (s < e) {
- struct attr_bin *ab=(struct attr_bin *)s;
- s+=(ab->len+1)*4;
- if ((void *)(ab+1) == ptr) {
- ib->len-=ab->len+1;
- memmove(ab,s,e-s);
- return;
- }
- }
-}
-
-void
-item_bin_add_attr_int(struct item_bin *ib, enum attr_type type, int val)
-{
- struct attr attr;
- attr.type=type;
- attr.u.num=val;
- item_bin_add_attr(ib, &attr);
-}
-
-void *
-item_bin_get_attr(struct item_bin *ib, enum attr_type type, void *last)
-{
- unsigned char *s=(unsigned char *)ib;
- unsigned char *e=s+(ib->len+1)*4;
- s+=sizeof(struct item_bin)+ib->clen*4;
- while (s < e) {
- struct attr_bin *ab=(struct attr_bin *)s;
- s+=(ab->len+1)*4;
- if (ab->type == type && (void *)(ab+1) > last) {
- return (ab+1);
- }
- }
- return NULL;
-}
-
-struct attr_bin *
-item_bin_get_attr_bin(struct item_bin *ib, enum attr_type type, void *last)
-{
- unsigned char *s=(unsigned char *)ib;
- unsigned char *e=s+(ib->len+1)*4;
- s+=sizeof(struct item_bin)+ib->clen*4;
- while (s < e) {
- struct attr_bin *ab=(struct attr_bin *)s;
- s+=(ab->len+1)*4;
- if (ab->type == type && (void *)(ab+1) > last) {
- return ab;
- }
- }
- return NULL;
-}
-
-struct attr_bin *
-item_bin_get_attr_bin_last(struct item_bin *ib)
-{
- struct attr_bin *ab=NULL;
- unsigned char *s=(unsigned char *)ib;
- unsigned char *e=s+(ib->len+1)*4;
- s+=sizeof(struct item_bin)+ib->clen*4;
- while (s < e) {
- ab=(struct attr_bin *)s;
- s+=(ab->len+1)*4;
- }
- return ab;
-}
-
-void
-item_bin_add_attr_longlong(struct item_bin *ib, enum attr_type type, long long val)
-{
- struct attr attr;
- attr.type=type;
- attr.u.num64=&val;
- item_bin_add_attr(ib, &attr);
-}
-
-void
-item_bin_add_attr_string(struct item_bin *ib, enum attr_type type, char *str)
-{
- struct attr attr;
- if (! str)
- return;
- attr.type=type;
- attr.u.str=str;
- item_bin_add_attr(ib, &attr);
-}
-
-void
-item_bin_add_attr_range(struct item_bin *ib, enum attr_type type, short min, short max)
-{
- struct attr attr;
- attr.type=type;
- attr.u.range.min=min;
- attr.u.range.max=max;
- item_bin_add_attr(ib, &attr);
-}
-
-void
-item_bin_write(struct item_bin *ib, FILE *out)
-{
- dbg_assert(fwrite(ib, (ib->len+1)*4, 1, out)==1);
-}
-
-struct item_bin *
-item_bin_dup(struct item_bin *ib)
-{
- int len=(ib->len+1)*4;
- struct item_bin *ret=g_malloc(len);
- memcpy(ret, ib, len);
-
- return ret;
-}
-
-void
-item_bin_write_clipped(struct item_bin *ib, struct tile_parameter *param, struct item_bin_sink *out)
-{
- struct tile_data tile_data;
- int i;
- bbox((struct coord *)(ib+1), ib->clen/2, &tile_data.item_bbox);
- tile_data.buffer[0]='\0';
- tile_data.tile_depth=tile(&tile_data.item_bbox, NULL, tile_data.buffer, param->max, param->overlap, &tile_data.tile_bbox);
- if (tile_data.tile_depth == param->max || tile_data.tile_depth >= param->min) {
- item_bin_write_to_sink(ib, out, &tile_data);
- return;
- }
- for (i = 0 ; i < 4 ; i++) {
- struct rect clip_rect;
- tile_data.buffer[tile_data.tile_depth]='a'+i;
- tile_data.buffer[tile_data.tile_depth+1]='\0';
- tile_bbox(tile_data.buffer, &clip_rect, param->overlap);
- if (ib->type < type_area)
- clip_line(ib, &clip_rect, param, out);
- else
- clip_polygon(ib, &clip_rect, param, out);
- }
-}
-
-static char *
-coord_to_str(struct coord *c)
-{
- int x=c->x;
- int y=c->y;
- char *sx="";
- char *sy="";
- if (x < 0) {
- sx="-";
- x=-x;
- }
- if (y < 0) {
- sy="-";
- y=-y;
- }
- return g_strdup_printf("%s0x%x %s0x%x",sx,x,sy,y);
-}
-
-static void
-dump_coord(struct coord *c, FILE *out)
-{
- char *str=coord_to_str(c);
- fprintf(out,"%s",str);
- g_free(str);
-}
-
-
-void
-item_bin_dump(struct item_bin *ib, FILE *out)
-{
- struct coord *c;
- struct attr_bin *a;
- struct attr attr;
- int *attr_start;
- int *attr_end;
- int i;
- char *str;
-
- c=(struct coord *)(ib+1);
- if (ib->type < type_line) {
- dump_coord(c,out);
- fprintf(out, " ");
- }
- attr_start=(int *)(ib+1)+ib->clen;
- attr_end=(int *)ib+ib->len+1;
- fprintf(out,"type=%s", item_to_name(ib->type));
- while (attr_start < attr_end) {
- a=(struct attr_bin *)(attr_start);
- attr_start+=a->len+1;
- attr.type=a->type;
- attr_data_set(&attr, (a+1));
- str=attr_to_text(&attr, NULL, 1);
- fprintf(out," %s=\"%s\"", attr_to_name(a->type), str);
- g_free(str);
- }
- fprintf(out," debug=\"length=%d\"", ib->len);
- fprintf(out,"\n");
- if (ib->type >= type_line) {
- for (i = 0 ; i < ib->clen/2 ; i++) {
- dump_coord(c+i,out);
- fprintf(out,"\n");
- }
- }
-}
-
-void
-dump_itembin(struct item_bin *ib)
-{
- item_bin_dump(ib, stdout);
-}
-
-struct population_table {
- enum item_type type;
- int population;
-};
-
-static struct population_table town_population[] = {
- {type_town_label_0e0,0},
- {type_town_label_1e0,1},
- {type_town_label_2e0,2},
- {type_town_label_5e0,5},
- {type_town_label_1e1,10},
- {type_town_label_2e1,20},
- {type_town_label_5e1,50},
- {type_town_label_1e2,100},
- {type_town_label_2e2,200},
- {type_town_label_5e2,500},
- {type_town_label_1e3,1000},
- {type_town_label_2e3,2000},
- {type_town_label_5e3,5000},
- {type_town_label_1e4,10000},
- {type_town_label_2e4,20000},
- {type_town_label_5e4,50000},
- {type_town_label_1e5,100000},
- {type_town_label_2e5,200000},
- {type_town_label_5e5,500000},
- {type_town_label_1e6,1000000},
- {type_town_label_2e6,2000000},
- {type_town_label_5e6,5000000},
- {type_town_label_1e7,10000000},
-};
-
-static struct population_table district_population[] = {
- {type_district_label_0e0,0},
- {type_district_label_1e0,1},
- {type_district_label_2e0,2},
- {type_district_label_5e0,5},
- {type_district_label_1e1,10},
- {type_district_label_2e1,20},
- {type_district_label_5e1,50},
- {type_district_label_1e2,100},
- {type_district_label_2e2,200},
- {type_district_label_5e2,500},
- {type_district_label_1e3,1000},
- {type_district_label_2e3,2000},
- {type_district_label_5e3,5000},
- {type_district_label_1e4,10000},
- {type_district_label_2e4,20000},
- {type_district_label_5e4,50000},
- {type_district_label_1e5,100000},
- {type_district_label_2e5,200000},
- {type_district_label_5e5,500000},
- {type_district_label_1e6,1000000},
- {type_district_label_2e6,2000000},
- {type_district_label_5e6,5000000},
- {type_district_label_1e7,10000000},
-};
-
-void
-item_bin_set_type_by_population(struct item_bin *ib, int population)
-{
- struct population_table *table;
- int i,count;
-
- if (population < 0)
- population=0;
- if (item_is_district(*ib)) {
- table=district_population;
- count=sizeof(district_population)/sizeof(district_population[0]);
- } else {
- table=town_population;
- count=sizeof(town_population)/sizeof(town_population[0]);
- }
- for (i = 0 ; i < count ; i++) {
- if (population < table[i].population)
- break;
- }
- item_bin_set_type(ib, table[i-1].type);
-}
-
-
-void
-item_bin_write_match(struct item_bin *ib, enum attr_type type, enum attr_type match, int maxdepth, FILE *out)
-{
- char *word=item_bin_get_attr(ib, type, NULL);
- int i,words=0,len;
- char tilename[32]="";
-
- if (!word)
- return;
-
- if(maxdepth && ib->clen>0) {
- struct rect r;
- struct coord *c=(struct coord *)(ib+1);
- r.l=c[0];
- r.h=c[0];
- for (i = 1 ; i < ib->clen/2 ; i++)
- bbox_extend(&c[i], &r);
- tile(&r,NULL,tilename,maxdepth,overlap,NULL);
- }
-
- /* insert attr_tile_name attribute before the attribute used as alphabetical key (of type type) */
- if(maxdepth) {
- item_bin_add_attr_string(ib, attr_tile_name, tilename);
- item_bin_add_attr_string(ib, type, word);
- item_bin_remove_attr(ib,word);
- word=item_bin_get_attr(ib, type, NULL);
- }
- len=ib->len;
- do {
- if (linguistics_search(word)) {
- for (i = 0 ; i < 3 ; i++) {
- char *str=linguistics_expand_special(word, i);
- if (str) {
- ib->len=len;
- if (i || words)
- item_bin_add_attr_string(ib, match, str);
- item_bin_write(ib, out);
- g_free(str);
- }
- }
- words++;
- }
- word=linguistics_next_word(word);
- } while (word);
-}
-
-static int
-item_bin_sort_compare(const void *p1, const void *p2)
-{
- struct item_bin *ib1=*((struct item_bin **)p1),*ib2=*((struct item_bin **)p2);
- struct attr_bin *attr1,*attr2;
- char *s1,*s2;
- int ret;
-
- attr1=item_bin_get_attr_bin(ib1, attr_tile_name, NULL);
- attr2=item_bin_get_attr_bin(ib2, attr_tile_name, NULL);
- if(attr1&&attr2) {
- s1=(char *)(attr1+1);
- s2=(char *)(attr2+1);
- ret=strcmp(s1,s2);
- if(ret)
- return ret;
- }
-#if 0
- dbg_assert(ib1->clen==2);
- dbg_assert(ib2->clen==2);
- attr1=(struct attr_bin *)((int *)(ib1+1)+ib1->clen);
- attr2=(struct attr_bin *)((int *)(ib2+1)+ib1->clen);
-#else
- attr1=item_bin_get_attr_bin_last(ib1);
- attr2=item_bin_get_attr_bin_last(ib2);
-#endif
-#if 0
- dbg_assert(attr1->type == attr_town_name || attr1->type == attr_town_name_match);
- dbg_assert(attr2->type == attr_town_name || attr2->type == attr_town_name_match);
-#endif
- s1=(char *)(attr1+1);
- s2=(char *)(attr2+1);
- if (attr1->type == attr_house_number && attr2->type == attr_house_number) {
- ret=atoi(s1)-atoi(s2);
- if (ret)
- return ret;
- }
-
- s1=linguistics_casefold(s1);
- s2=linguistics_casefold(s2);
-
- ret=strcmp(s1, s2);
- g_free(s1);
- g_free(s2);
-
- if (!ret) {
- int match1=0,match2=0;
- match1=(attr1->type == attr_town_name_match || attr1->type == attr_district_name_match);
- match2=(attr2->type == attr_town_name_match || attr2->type == attr_district_name_match);
- ret=match1-match2;
- }
-#if 0
- fprintf(stderr,"sort_countries_compare p1=%p p2=%p %s %s\n",p1,p2,s1,s2);
-#endif
- return ret;
-}
-
-int
-item_bin_sort_file(char *in_file, char *out_file, struct rect *r, int *size)
-{
- int j,k,count,rc=0;
- struct coord *c;
- struct item_bin *ib;
- FILE *f;
- unsigned char *p,**idx,*buffer;
- if (file_get_contents(in_file, &buffer, size)) {
- ib=(struct item_bin *)buffer;
- p=buffer;
- count=0;
- while (p < buffer+*size) {
- count++;
- p+=(*((int *)p)+1)*4;
- }
- idx=g_malloc(count*sizeof(void *));
- p=buffer;
- for (j = 0 ; j < count ; j++) {
- idx[j]=p;
- p+=(*((int *)p)+1)*4;
- }
- qsort(idx, count, sizeof(void *), item_bin_sort_compare);
- f=fopen(out_file,"wb");
- for (j = 0 ; j < count ; j++) {
- ib=(struct item_bin *)(idx[j]);
- c=(struct coord *)(ib+1);
- dbg_assert(fwrite(ib, (ib->len+1)*4, 1, f)==1);
- if (r) {
- for (k = 0 ; k < ib->clen/2 ; k++) {
- if (rc)
- bbox_extend(&c[k], r);
- else {
- r->l=c[k];
- r->h=c[k];
- }
- rc++;
- }
- }
- }
- fclose(f);
- g_free(idx);
- g_free(buffer);
- return 1;
- }
- return 0;
-}
-
-struct geom_poly_segment *
-item_bin_to_poly_segment(struct item_bin *ib, int type)
-{
- struct geom_poly_segment *ret=g_new(struct geom_poly_segment, 1);
- int count=ib->clen*sizeof(int)/sizeof(struct coord);
- ret->type=type;
- ret->first=g_new(struct coord, count);
- ret->last=ret->first+count-1;
- geom_coord_copy((struct coord *)(ib+1), ret->first, count, 0);
- return ret;
-}
-
-void
-clip_line(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out)
-{
- char *buffer=g_alloca(sizeof(char)*(ib->len*4+32));
- struct item_bin *ib_new=(struct item_bin *)buffer;
- struct coord *pa=(struct coord *)(ib+1);
- int count=ib->clen/2;
- struct coord p1,p2;
- int i,code;
- item_bin_init(ib_new, ib->type);
- for (i = 0 ; i < count ; i++) {
- if (i) {
- p1.x=pa[i-1].x;
- p1.y=pa[i-1].y;
- p2.x=pa[i].x;
- p2.y=pa[i].y;
- /* 0 = invisible, 1 = completely visible, 3 = start point clipped, 5 = end point clipped, 7 both points clipped */
- code=geom_clip_line_code(&p1, &p2, r);
-#if 1
- if (((code == 1 || code == 5) && ib_new->clen == 0) || (code & 2)) {
- item_bin_add_coord(ib_new, &p1, 1);
- }
- if (code) {
- item_bin_add_coord(ib_new, &p2, 1);
- }
- if (i == count-1 || (code & 4)) {
- if (param->attr_to_copy)
- item_bin_copy_attr(ib_new, ib, param->attr_to_copy);
- if (ib_new->clen)
- item_bin_write_clipped(ib_new, param, out);
- item_bin_init(ib_new, ib->type);
- }
-#else
- if (code) {
- item_bin_init(ib_new, ib->type);
- item_bin_add_coord(ib_new, &p1, 1);
- item_bin_add_coord(ib_new, &p2, 1);
- if (param->attr_to_copy)
- item_bin_copy_attr(ib_new, ib, param->attr_to_copy);
- item_bin_write_clipped(ib_new, param, out);
- }
-#endif
- }
- }
-}
-
-void
-clip_polygon(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out)
-{
- int count_in=ib->clen/2;
- struct coord *pin,*p,*s,pi;
- char *buffer1=g_alloca(sizeof(char)*(ib->len*4+ib->clen*7+32));
- struct item_bin *ib1=(struct item_bin *)buffer1;
- char *buffer2=g_alloca(sizeof(char)*(ib->len*4+ib->clen*7+32));
- struct item_bin *ib2=(struct item_bin *)buffer2;
- struct item_bin *ib_in,*ib_out;
- int edge,i;
- ib_out=ib1;
- ib_in=ib;
- for (edge = 0 ; edge < 4 ; edge++) {
- count_in=ib_in->clen/2;
- pin=(struct coord *)(ib_in+1);
- p=pin;
- s=pin+count_in-1;
- item_bin_init(ib_out, ib_in->type);
- for (i = 0 ; i < count_in ; i++) {
- if (geom_is_inside(p, r, edge)) {
- if (! geom_is_inside(s, r, edge)) {
- geom_poly_intersection(s,p,r,edge,&pi);
- item_bin_add_coord(ib_out, &pi, 1);
- }
- item_bin_add_coord(ib_out, p, 1);
- } else {
- if (geom_is_inside(s, r, edge)) {
- geom_poly_intersection(p,s,r,edge,&pi);
- item_bin_add_coord(ib_out, &pi, 1);
- }
- }
- s=p;
- p++;
- }
- if (ib_in == ib1) {
- ib_in=ib2;
- ib_out=ib1;
- } else {
- ib_in=ib1;
- ib_out=ib2;
- }
- }
- if (ib_in->clen) {
- if (param->attr_to_copy)
- item_bin_copy_attr(ib_in, ib, param->attr_to_copy);
- item_bin_write_clipped(ib_in, param, out);
- }
-}
-
diff --git a/navit/maptool/itembin_buffer.c b/navit/maptool/itembin_buffer.c
deleted file mode 100644
index 980749539..000000000
--- a/navit/maptool/itembin_buffer.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <string.h>
-#include <stdlib.h>
-#include "maptool.h"
-#include "debug.h"
-
-
-/** Buffer for temporarily storing an item. */
-static char misc_item_buffer[20000000];
-/** An item_bin for temporary use. */
-struct item_bin *tmp_item_bin=(struct item_bin *)(void *)misc_item_buffer;
-/** A node_item for temporary use. */
-static struct node_item *tmp_node_item=(struct node_item *)(void *)misc_item_buffer;
-
-struct node_item *
-read_node_item(FILE *in)
-{
- if (fread(tmp_node_item, sizeof(struct node_item), 1, in) != 1)
- return NULL;
- return tmp_node_item;
-}
-
-struct item_bin *
-read_item(FILE *in)
-{
- struct item_bin *ib=(struct item_bin *) misc_item_buffer;
- for (;;) {
- switch (item_bin_read(ib, in)) {
- case 0:
- return NULL;
- case 2:
- dbg_assert((ib->len+1)*4 < sizeof(misc_item_buffer));
- bytes_read+=(ib->len+1)*sizeof(int);
- return ib;
- default:
- continue;
- }
- }
-}
-
-struct item_bin *
-read_item_range(FILE *in, int *min, int *max)
-{
- struct range r;
-
- if (fread(&r, sizeof(r), 1, in) != 1)
- return NULL;
- *min=r.min;
- *max=r.max;
- return read_item(in);
-}
-
-struct item_bin *
-init_item(enum item_type type)
-{
- struct item_bin *ib=(struct item_bin *) misc_item_buffer;
-
- item_bin_init(ib, type);
- return ib;
-}
diff --git a/navit/maptool/maptool.c b/navit/maptool/maptool.c
deleted file mode 100644
index 2d35fe516..000000000
--- a/navit/maptool/maptool.c
+++ /dev/null
@@ -1,1124 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 "config.h"
-#include "navit_lfs.h"
-#include <stdlib.h>
-#include <glib.h>
-#include <assert.h>
-#include <string.h>
-#include <signal.h>
-#include <stdio.h>
-#include <math.h>
-#ifdef _MSC_VER
-#include "getopt_long.h"
-#define atoll _atoi64
-#else
-#include <getopt.h>
-#include <unistd.h>
-#include <sys/time.h>
-#endif
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <zlib.h>
-#include "file.h"
-#include "item.h"
-#include "map.h"
-#include "main.h"
-#include "zipfile.h"
-#include "linguistics.h"
-#include "plugin.h"
-#include "util.h"
-#include "maptool.h"
-
-#define SLIZE_SIZE_DEFAULT_GB 1
-long long slice_size=SLIZE_SIZE_DEFAULT_GB*1024ll*1024*1024;
-int attr_debug_level=1;
-int ignore_unknown = 0;
-GHashTable *dedupe_ways_hash;
-int phase;
-int slices;
-int unknown_country;
-char ch_suffix[] ="r"; /* Used to make compiler happy due to Bug 35903 in gcc */
-/** Textual description of available experimental features, or NULL (=none available). */
-char* experimental_feature_description = "Move coastline data to order 6 tiles. Makes map look more smooth, but may affect drawing/searching performance."; /* add description here */
-/** Indicates if experimental features (if available) were enabled. */
-int experimental;
-
-struct buffer node_buffer = {
- 64*1024*1024,
-};
-
-int processed_nodes, processed_nodes_out, processed_ways, processed_relations, processed_tiles;
-
-int overlap=1;
-
-int bytes_read;
-
-static long start_brk;
-#ifdef _WIN32
-#define timespec timeval
-#endif
-static struct timespec start_ts;
-
-/*
- Asynchronous signal safe lltoa function (note: no trailing \0 char!)
-*/
-static int assafe_lltoa(long long n, int maxlen, char *buf)
-{
- int i;
- int out_length;
-
- if(maxlen<1)
- return 0;
-
- if(n<0) {
- n=-n;
- buf[0]='-';
- maxlen--;
- buf++;
- } else if(n==0) {
- buf[0]='0';
- return 1;
- }
-
- for(i=0; n>0 && i<maxlen; i++) {
- buf[i]='0'+(n%10);
- n/=10;
- }
- out_length=i;
- for(i=0;i<out_length/2;i++) {
- char c=buf[i];
- buf[i]=buf[out_length-i-1];
- buf[out_length-i-1]=c;
- }
- return out_length;
-}
-
-/*
- Asynchronous signal safe string copy to buffer function (note: no trailing \0 char!)
-*/
-static int assafe_strcp2buf(char *str, int maxlen, char *buf)
-{
- int i;
- for(i=0;str[i] && i<maxlen;i++)
- buf[i]=str[i];
- return i;
-}
-
-static void
-progress_time(void)
-{
- struct timespec ts;
- int seconds;
- const int buflen=20;
- char buf[buflen];
- int pos=1;
- buf[0]=' ';
-#ifdef _WIN32
- gettimeofday(&ts, NULL);
-#else
- clock_gettime(CLOCK_REALTIME, &ts);
-#endif
- seconds=ts.tv_sec-start_ts.tv_sec;
- pos+=assafe_lltoa(seconds/60, buflen-pos, buf+pos);
- seconds%=60;
- pos+=assafe_strcp2buf(seconds>9?":":":0", buflen-pos, buf+pos);
- pos+=assafe_lltoa(seconds, buflen-pos, buf+pos);
- write(2,buf,pos);
-}
-
-static void
-progress_memory(void)
-{
-#ifdef HAVE_SBRK
- long mem=(long)sbrk(0)-start_brk;
- const int buflen=20;
- char buf[buflen];
- int pos=1;
- buf[0]=' ';
- pos+=assafe_lltoa(mem/1024/1024, buflen-pos, buf+pos);
- pos+=assafe_strcp2buf(" MB", buflen-pos, buf+pos);
- write(2,buf,pos);
-#endif
-}
-
-static void
-sig_alrm_do(int sig)
-{
- const int buflen=1024;
- char buf[buflen];
- int pos=0;
-#ifndef _WIN32
- signal(SIGALRM, sig_alrm_do);
- alarm(30);
-#endif
- pos+=assafe_strcp2buf("PROGRESS", buflen-pos, buf+pos);
- pos+=assafe_lltoa(phase, buflen-pos, buf+pos);
- pos+=assafe_strcp2buf(": Processed ", buflen-pos, buf+pos);
- pos+=assafe_lltoa(processed_nodes, buflen-pos, buf+pos);
- pos+=assafe_strcp2buf(" nodes (", buflen-pos, buf+pos);
- pos+=assafe_lltoa(processed_nodes_out, buflen-pos, buf+pos);
- pos+=assafe_strcp2buf(" out) ", buflen-pos, buf+pos);
- pos+=assafe_lltoa(processed_ways, buflen-pos, buf+pos);
- pos+=assafe_strcp2buf(" ways ", buflen-pos, buf+pos);
- pos+=assafe_lltoa(processed_relations, buflen-pos, buf+pos);
- pos+=assafe_strcp2buf(" relations ", buflen-pos, buf+pos);
- pos+=assafe_lltoa(processed_tiles, buflen-pos, buf+pos);
- pos+=assafe_strcp2buf(" tiles", buflen-pos, buf+pos);
- write(2,buf,pos);
- progress_time();
- progress_memory();
-#ifndef _WIN32
- write(2,"\r\n",2);
-#else
- write(2,"\n",1);
-#endif
-}
-
-void
-sig_alrm(int sig)
-{
- fflush(stderr);
- sig_alrm_do(sig);
-}
-
-
-
-void
-sig_alrm_end(void)
-{
-#ifndef _WIN32
- alarm(0);
-#endif
-}
-
-static struct files_relation_processing *
-files_relation_processing_new(FILE *line2poi, char *suffix) {
- struct files_relation_processing *result = g_new(struct files_relation_processing, 1);
- result->ways_in=tempfile(suffix,"ways_split",0);
- result->ways_out=tempfile(suffix,"ways_split_relproc_tmp",1);
- result->nodes_in=tempfile(suffix,"nodes",0);
- result->nodes_out=tempfile(suffix,"nodes_relproc_tmp",1);
- result->nodes2_in=NULL;
- result->nodes2_out=NULL;
- if(line2poi) {
- result->nodes2_in=tempfile(suffix,"way2poi_result",0);
- result->nodes2_out=tempfile(suffix,"way2poi_result_relproc_tmp",1);
- }
- return result;
-}
-
-static void
-files_relation_processing_destroy(struct files_relation_processing *files_relproc, char *suffix) {
- fclose(files_relproc->ways_in);
- fclose(files_relproc->nodes_in);
- fclose(files_relproc->ways_out);
- fclose(files_relproc->nodes_out);
- tempfile_rename(suffix,"ways_split_relproc_tmp","ways_split");
- tempfile_rename(suffix,"nodes_relproc_tmp","nodes");
- if(files_relproc->nodes2_in) {
- fclose(files_relproc->nodes2_in);
- fclose(files_relproc->nodes2_out);
- tempfile_rename(suffix,"way2poi_result_relproc_tmp","way2poi_result");
- }
- g_free(files_relproc);
-}
-
-static struct plugins *plugins;
-
-static void add_plugin(char *path)
-{
- struct attr pa_attr={attr_path};
- struct attr pl_attr={attr_plugins};
- struct attr *attrs[2]={&pa_attr,NULL};
-
- if (! plugins) {
- file_init();
- plugins=plugins_new();
- }
- pa_attr.u.str=path;
- pl_attr.u.plugins=plugins;
- plugin_new(&pl_attr,attrs);
-}
-
-static void
-maptool_init(FILE* rule_file)
-{
- if (plugins)
- plugins_init(plugins);
- osm_init(rule_file);
-}
-
-static void
-usage(void)
-{
- FILE *f = stdout;
- /* DEVELOPERS : don't forget to update the manpage if you modify theses options */
- fprintf(f,"\n");
- fprintf(f,"maptool - parse osm textfile and convert to Navit binfile format\n\n");
- fprintf(f,"Usage (for OSM XML data):\n");
- fprintf(f,"bzcat planet.osm.bz2 | maptool mymap.bin\n");
- fprintf(f,"Usage (for OSM Protobuf/PBF data):\n");
- fprintf(f,"maptool --protobuf -i planet.osm.pbf planet.bin\n");
- fprintf(f,"Available switches:\n");
- fprintf(f,"-h (--help) : this screen\n");
- fprintf(f,"-5 (--md5) <file> : set file where to write md5 sum\n");
- fprintf(f,"-6 (--64bit) : set zip 64 bit compression\n");
- fprintf(f,"-a (--attr-debug-level) <level> : control which data is included in the debug attribute\n");
- fprintf(f,"-c (--dump-coordinates) : dump coordinates after phase 1\n");
-#ifdef HAVE_POSTGRESQL
- fprintf(f,"-d (--db) <conn. string> : get osm data out of a postgresql database with osm simple scheme and given connect string\n");
-#endif
- fprintf(f,"-D (--dump) : dump map data to standard output in Navit textfile format\n");
- fprintf(f,"-e (--end) <phase> : end at specified phase\n");
- fprintf(f,"-E (--experimental) : Enable experimental features (%s)\n",
- experimental_feature_description ? experimental_feature_description : "-not available in this version-");
- fprintf(f,"-i (--input-file) <file> : specify the input file name (OSM), overrules default stdin\n");
- fprintf(f,"-k (--keep-tmpfiles) : do not delete tmp files after processing. useful to reuse them\n");
- fprintf(f,"-M (--o5m) : input data is in o5m format\n");
- fprintf(f,"-n (--ignore-unknown) : do not output ways and nodes with unknown type\n");
- fprintf(f,"-N (--nodes-only) : process only nodes\n");
- fprintf(f,"-P (--protobuf) : input data is in pbf (Protocol Buffer) format\n");
- fprintf(f,"-r (--rule-file) <file> : read mapping rules from specified file\n");
- fprintf(f,"-s (--start) <phase> : start at specified phase\n");
- fprintf(f,"-S (--slice-size) <size> : limit memory to use for some large internal buffers, in bytes. Default is %dGB.\n", SLIZE_SIZE_DEFAULT_GB);
- fprintf(f,"-t (--timestamp) <y-m-dTh:m:s> : Set zip timestamp\n");
- fprintf(f,"-w (--dedupe-ways) : ensure no duplicate ways or nodes. useful when using several input files\n");
- fprintf(f,"-W (--ways-only) : process only ways\n");
- fprintf(f,"-U (--unknown-country) : add objects with unknown country to index\n");
- fprintf(f,"-x (--index-size) : set maximum country index size in bytes\n");
- fprintf(f,"-z (--compression-level) <level> : set the compression level\n");
- fprintf(f,"Internal options (undocumented):\n");
- fprintf(f,"-b (--binfile)\n");
- fprintf(f,"-B \n");
- fprintf(f,"-m (--map) \n");
- fprintf(f,"-O \n");
- fprintf(f,"-p (--plugin) \n");
- fprintf(f,"-u (--url) \n");
-
- exit(0);
-}
-
-struct maptool_params {
- int zip64;
- int keep_tmpfiles;
- int process_nodes;
- int process_ways;
- int process_relations;
- char *protobufdb;
- char *protobufdb_operation;
- char *md5file;
- int start;
- int end;
- int dump;
- int o5m;
- int compression_level;
- int protobuf;
- int dump_coordinates;
- int input;
- GList *map_handles;
- FILE* input_file;
- FILE* rule_file;
- char *url;
- struct maptool_osm osm;
- FILE *ways_split;
- char *timestamp;
- char *result;
- char *dbstr;
- int node_table_loaded;
- int countries_loaded;
- int tilesdir_loaded;
- int max_index_size;
-};
-
-static int
-parse_option(struct maptool_params *p, char **argv, int argc, int *option_index)
-{
- char *optarg_cp,*attr_name,*attr_value;
- struct map *handle;
- struct attr *attrs[10];
- int pos,c,i;
-
- static struct option long_options[] = {
- {"md5", 1, 0, '5'},
- {"64bit", 0, 0, '6'},
- {"attr-debug-level", 1, 0, 'a'},
- {"binfile", 0, 0, 'b'},
- {"compression-level", 1, 0, 'z'},
-#ifdef HAVE_POSTGRESQL
- {"db", 1, 0, 'd'},
-#endif
- {"dedupe-ways", 0, 0, 'w'},
- {"dump", 0, 0, 'D'},
- {"dump-coordinates", 0, 0, 'c'},
- {"end", 1, 0, 'e'},
- {"experimental", 0, 0, 'E'},
- {"help", 0, 0, 'h'},
- {"keep-tmpfiles", 0, 0, 'k'},
- {"nodes-only", 0, 0, 'N'},
- {"map", 1, 0, 'm'},
- {"o5m", 0, 0, 'M'},
- {"plugin", 1, 0, 'p'},
- {"protobuf", 0, 0, 'P'},
- {"start", 1, 0, 's'},
- {"timestamp", 1, 0, 't'},
- {"input-file", 1, 0, 'i'},
- {"rule-file", 1, 0, 'r'},
- {"ignore-unknown", 0, 0, 'n'},
- {"url", 1, 0, 'u'},
- {"ways-only", 0, 0, 'W'},
- {"slice-size", 1, 0, 'S'},
- {"unknown-country", 0, 0, 'U'},
- {"index-size", 0, 0, 'x'},
- {0, 0, 0, 0}
- };
- c = getopt_long (argc, argv, "5:6B:DEMNO:PS:Wa:bc"
-#ifdef HAVE_POSTGRESQL
- "d:"
-#endif
- "e:hi:knm:p:r:s:t:wu:z:Ux:", long_options, option_index);
- if (c == -1)
- return 1;
- switch (c) {
- case '5':
- p->md5file=optarg;
- break;
- case '6':
- p->zip64=1;
- break;
- case 'B':
- p->protobufdb=optarg;
- break;
- case 'D':
- p->dump=1;
- break;
- case 'E':
- experimental=1;
- break;
- case 'M':
- p->o5m=1;
- break;
- case 'N':
- p->process_ways=0;
- break;
- case 'R':
- p->process_relations=0;
- break;
- case 'O':
- p->protobufdb_operation=optarg;
- p->dump=1;
- break;
- case 'P':
- p->protobuf=1;
- break;
- case 'S':
- slice_size=atoll(optarg);
- break;
- case 'W':
- p->process_nodes=0;
- break;
- case 'U':
- unknown_country=1;
- break;
- case 'a':
- attr_debug_level=atoi(optarg);
- break;
- case 'b':
- p->input=1;
- break;
- case 'c':
- p->dump_coordinates=1;
- break;
-#ifdef HAVE_POSTGRESQL
- case 'd':
- p->dbstr=optarg;
- break;
-#endif
- case 'e':
- p->end=atoi(optarg);
- break;
- case 'h':
- return 2;
- case 'm':
- optarg_cp=g_strdup(optarg);
- pos=0;
- i=0;
- attr_name=g_strdup(optarg);
- attr_value=g_strdup(optarg);
- while (i < 9 && attr_from_line(optarg_cp, NULL, &pos, attr_value, attr_name)) {
- attrs[i]=attr_new_from_text(attr_name,attr_value);
- if (attrs[i]) {
- i++;
- } else {
- fprintf(stderr,"Failed to convert %s=%s to attribute\n",attr_name,attr_value);
- }
- attr_value=g_strdup(optarg);
- }
- attrs[i++]=NULL;
- g_free(attr_value);
- g_free(optarg_cp);
- handle=map_new(NULL, attrs);
- if (! handle) {
- fprintf(stderr,"Failed to create map from attributes\n");
- exit(1);
- }
- p->map_handles=g_list_append(p->map_handles,handle);
- break;
- case 'n':
- fprintf(stderr,"I will IGNORE unknown types\n");
- ignore_unknown=1;
- break;
- case 'k':
- fprintf(stderr,"I will KEEP tmp files\n");
- p->keep_tmpfiles=1;
- break;
- case 'p':
- add_plugin(optarg);
- break;
- case 's':
- p->start=atoi(optarg);
- break;
- case 't':
- p->timestamp=optarg;
- break;
- case 'w':
- dedupe_ways_hash=g_hash_table_new(NULL, NULL);
- break;
- case 'i':
- p->input_file = fopen( optarg, "r" );
- if (p->input_file == NULL )
- {
- fprintf( stderr, "\nInput file (%s) not found\n", optarg );
- exit( 1 );
- }
- break;
- case 'r':
- p->rule_file = fopen( optarg, "r" );
- if (p->rule_file == NULL )
- {
- fprintf( stderr, "\nRule file (%s) not found\n", optarg );
- exit( 1 );
- }
- break;
- case 'u':
- p->url=optarg;
- break;
- case 'x':
- p->max_index_size=atoi(optarg);
- break;
-#ifdef HAVE_ZLIB
- case 'z':
- p->compression_level=atoi(optarg);
- break;
-#endif
- case '?':
- default:
- return 0;
- }
- return 3;
-}
-
-static int
-start_phase(struct maptool_params *p, char *str)
-{
- phase++;
- if (p->start <= phase && p->end >= phase) {
- fprintf(stderr,"PROGRESS: Phase %d: %s",phase,str);
- fflush(stderr);
- progress_time();
- progress_memory();
- fprintf(stderr,"\n");
- return 1;
- } else
- return 0;
-}
-
-static void
-exit_with_error(char* error_message) {
- fprintf(stderr, "%s", error_message);
- exit(1);
-}
-
-static void
-osm_read_input_data(struct maptool_params *p, char *suffix)
-{
- unlink("coords.tmp");
- if (p->process_ways)
- p->osm.ways=tempfile(suffix,"ways",1);
- if (p->process_nodes) {
- p->osm.nodes=tempfile(suffix,"nodes",1);
- p->osm.towns=tempfile(suffix,"towns",1);
- }
- if (p->process_ways && p->process_nodes) {
- p->osm.turn_restrictions=tempfile(suffix,"turn_restrictions",1);
- p->osm.line2poi=tempfile(suffix,"line2poi",1);
- p->osm.poly2poi=tempfile(suffix,"poly2poi",1);
- }
- if (p->process_relations) {
- p->osm.boundaries=tempfile(suffix,"boundaries",1);
- p->osm.associated_streets=tempfile(suffix,"associated_streets",1);
- p->osm.house_number_interpolations=tempfile(suffix,"house_number_interpolations",1);
- }
-#ifdef HAVE_POSTGRESQL
- if (p->dbstr)
- map_collect_data_osm_db(p->dbstr,&p->osm);
- else
-#endif
- if (p->map_handles) {
- GList *l;
- phase1_map(p->map_handles,p->osm.ways,p->osm.nodes);
- l=p->map_handles;
- while (l) {
- map_destroy(l->data);
- l=g_list_next(l);
- }
- }
- else if (p->protobuf) {
-#ifdef _MSC_VER
- exit_with_error("Option -P not yet supported on MSVC\n");
-#else
- map_collect_data_osm_protobuf(p->input_file,&p->osm);
-#endif
- }
- else if (p->o5m)
- map_collect_data_osm_o5m(p->input_file,&p->osm);
- else
- map_collect_data_osm(p->input_file,&p->osm);
-
- if (node_buffer.size==0 && !p->map_handles){
- fprintf(stderr,"No nodes found - looks like an invalid input file.\n");
- exit(1);
- }
- flush_nodes(1);
- if (p->osm.ways)
- fclose(p->osm.ways);
- if (p->osm.nodes)
- fclose(p->osm.nodes);
- if (p->osm.turn_restrictions)
- fclose(p->osm.turn_restrictions);
- if (p->osm.associated_streets)
- fclose(p->osm.associated_streets);
- if (p->osm.house_number_interpolations)
- fclose(p->osm.house_number_interpolations);
- if (p->osm.boundaries)
- fclose(p->osm.boundaries);
- if (p->osm.poly2poi)
- fclose(p->osm.poly2poi);
- if (p->osm.line2poi)
- fclose(p->osm.line2poi);
- if (p->osm.towns)
- fclose(p->osm.towns);
-}
-int debug_ref=0;
-
-static void
-osm_count_references(struct maptool_params *p, char *suffix, int clear)
-{
- int i,first=1;
- fprintf(stderr,"%d slices\n",slices);
- for (i = slices-1 ; i>=0 ; i--) {
- fprintf(stderr, "slice %d of %d\n",slices-i-1,slices-1);
- if (!first) {
- FILE *ways=tempfile(suffix,"ways",0);
- load_buffer("coords.tmp",&node_buffer, i*slice_size, slice_size);
- if (clear)
- clear_node_item_buffer();
- ref_ways(ways);
- save_buffer("coords.tmp",&node_buffer, i*slice_size);
- fclose(ways);
- }
- FILE *poly2poi=tempfile(suffix,first?"poly2poi":"poly2poi_resolved",0);
- FILE *poly2poinew=tempfile(suffix,"poly2poi_resolved_new",1);
- FILE *line2poi=tempfile(suffix,first?"line2poi":"line2poi_resolved",0);
- FILE *line2poinew=tempfile(suffix,"line2poi_resolved_new",1);
- resolve_ways(poly2poi, poly2poinew);
- resolve_ways(line2poi, line2poinew);
- fclose(poly2poi);
- fclose(poly2poinew);
- fclose(line2poi);
- fclose(line2poinew);
- tempfile_rename(suffix,"poly2poi_resolved_new","poly2poi_resolved");
- tempfile_rename(suffix,"line2poi_resolved_new","line2poi_resolved");
- if (first && !p->keep_tmpfiles) {
- tempfile_unlink(suffix,"poly2poi");
- tempfile_unlink(suffix,"line2poi");
- }
- first=0;
- }
-}
-
-
-static void
-osm_resolve_coords_and_split_at_intersections(struct maptool_params *p, char *suffix)
-{
- FILE *ways, *ways_split, *ways_split_index, *graph, *coastline;
- int i;
-
- ways=tempfile(suffix,"ways",0);
- for (i = 0 ; i < slices ; i++) {
- int final=(i >= slices-1);
- ways_split=tempfile(suffix,"ways_split",1);
- ways_split_index=final ? tempfile(suffix,"ways_split_index",1) : NULL;
- graph=tempfile(suffix,"graph",1);
- coastline=tempfile(suffix,"coastline",1);
- if (i)
- load_buffer("coords.tmp",&node_buffer, i*slice_size, slice_size);
- map_resolve_coords_and_split_at_intersections(ways,ways_split,ways_split_index,graph,coastline,final);
- fclose(ways_split);
- if (ways_split_index)
- fclose(ways_split_index);
- fclose(ways);
- fclose(graph);
- fclose(coastline);
- if (! final) {
- tempfile_rename(suffix,"ways_split","ways_to_resolve");
- ways=tempfile(suffix,"ways_to_resolve",0);
- }
- }
- if(!p->keep_tmpfiles)
- tempfile_unlink(suffix,"ways");
- tempfile_unlink(suffix,"ways_to_resolve");
-}
-
-static void
-osm_process_way2poi(struct maptool_params *p, char *suffix)
-{
- FILE *poly2poi=tempfile(suffix,"poly2poi_resolved",0);
- FILE *line2poi=tempfile(suffix,"line2poi_resolved",0);
- FILE *way2poi_result=tempfile(suffix,"way2poi_result",1);
- if (poly2poi) {
- process_way2poi(poly2poi, way2poi_result, type_area);
- fclose(poly2poi);
- }
- if (line2poi) {
- process_way2poi(line2poi, way2poi_result, type_line);
- fclose(line2poi);
- }
- fclose(way2poi_result);
-}
-
-static void
-osm_process_coastlines(struct maptool_params *p, char *suffix)
-{
- FILE *coastline=tempfile(suffix,"coastline",0);
- if (coastline) {
- FILE *coastline_result=tempfile(suffix,"coastline_result",1);
- process_coastlines(coastline, coastline_result);
- fclose(coastline_result);
- fclose(coastline);
- }
-}
-
-static void
-osm_process_turn_restrictions(struct maptool_params *p, char *suffix)
-{
- FILE *ways_split, *ways_split_index, *relations, *coords;
- p->osm.turn_restrictions=tempfile(suffix,"turn_restrictions",0);
- if (!p->osm.turn_restrictions)
- return;
- relations=tempfile(suffix,"relations",1);
- coords=fopen("coords.tmp","rb");
- ways_split=tempfile(suffix,"ways_split",0);
- ways_split_index=tempfile(suffix,"ways_split_index",0);
- process_turn_restrictions(p->osm.turn_restrictions,coords,ways_split,ways_split_index,relations);
- fclose(ways_split_index);
- fclose(ways_split);
- fclose(coords);
- fclose(relations);
- fclose(p->osm.turn_restrictions);
- if(!p->keep_tmpfiles)
- tempfile_unlink(suffix,"turn_restrictions");
-}
-
-static void
-maptool_dump(struct maptool_params *p, char *suffix)
-{
- char *files[10];
- int i,files_count=0;
- if (p->process_nodes)
- files[files_count++]="nodes";
- if (p->process_ways)
- files[files_count++]="ways_split";
- if (p->process_relations)
- files[files_count++]="relations";
- for (i = 0 ; i < files_count ; i++) {
- FILE *f=tempfile(suffix,files[i],0);
- if (f) {
- dump(f);
- fclose(f);
- }
- }
-}
-
-static void
-maptool_generate_tiles(struct maptool_params *p, char *suffix, char **filenames, int filename_count, int first, char *suffix0)
-{
- struct zip_info *zip_info;
- FILE *tilesdir;
- FILE *files[10];
- int zipnum, f;
- if (first) {
- zip_info=zip_new();
- zip_set_zip64(zip_info, p->zip64);
- zip_set_timestamp(zip_info, p->timestamp);
- }
- zipnum=zip_get_zipnum(zip_info);
- tilesdir=tempfile(suffix,"tilesdir",1);
- if (!strcmp(suffix,ch_suffix)) { /* Makes compiler happy due to bug 35903 in gcc */
- ch_generate_tiles(suffix0,suffix,tilesdir,zip_info);
- } else {
- for (f = 0 ; f < filename_count ; f++)
- files[f]=tempfile(suffix,filenames[f],0);
- phase4(files,filename_count,0,suffix,tilesdir,zip_info);
- for (f = 0 ; f < filename_count ; f++) {
- if (files[f])
- fclose(files[f]);
- }
- }
- fclose(tilesdir);
- zip_set_zipnum(zip_info,zipnum);
-}
-
-static void
-maptool_assemble_map(struct maptool_params *p, char *suffix, char **filenames, char **referencenames, int filename_count, int first, int last, char *suffix0)
-{
- FILE *files[10];
- FILE *references[10];
- struct zip_info *zip_info;
- int zipnum,f;
-
- if (first) {
- char *zipdir=tempfile_name("zipdir","");
- char *zipindex=tempfile_name("index","");
- zip_info=zip_new();
- zip_set_zip64(zip_info, p->zip64);
- zip_set_timestamp(zip_info, p->timestamp);
- zip_set_maxnamelen(zip_info, 14+strlen(suffix0));
- zip_set_compression_level(zip_info, p->compression_level);
- if (p->md5file)
- zip_set_md5(zip_info, 1);
- if(!zip_open(zip_info, p->result, zipdir, zipindex)) {
- fprintf(stderr,"Fatal: Could not write output file.\n");
- exit(1);
- }
- if (p->url) {
- map_information_attrs[1].type=attr_url;
- map_information_attrs[1].u.str=p->url;
- }
- index_init(zip_info, 1);
- }
- if (!strcmp(suffix,ch_suffix)) { /* Makes compiler happy due to bug 35903 in gcc */
- ch_assemble_map(suffix0,suffix,zip_info);
- } else {
- for (f = 0 ; f < filename_count ; f++) {
- files[f]=tempfile(suffix, filenames[f], 0);
- if (referencenames[f])
- references[f]=tempfile(suffix,referencenames[f],1);
- else
- references[f]=NULL;
- }
- phase5(files,references,filename_count,0,suffix,zip_info);
- for (f = 0 ; f < filename_count ; f++) {
- if (files[f])
- fclose(files[f]);
- if (references[f])
- fclose(references[f]);
- }
- }
- if(!p->keep_tmpfiles) {
- tempfile_unlink(suffix,"relations");
- tempfile_unlink(suffix,"nodes");
- tempfile_unlink(suffix,"ways_split");
- tempfile_unlink(suffix,"poly2poi_resolved");
- tempfile_unlink(suffix,"line2poi_resolved");
- tempfile_unlink(suffix,"ways_split_ref");
- tempfile_unlink(suffix,"coastline");
- tempfile_unlink(suffix,"turn_restrictions");
- tempfile_unlink(suffix,"graph");
- tempfile_unlink(suffix,"tilesdir");
- tempfile_unlink(suffix,"boundaries");
- tempfile_unlink(suffix,"way2poi_result");
- tempfile_unlink(suffix,"coastline_result");
- tempfile_unlink(suffix,"towns_poly");
- unlink("coords.tmp");
- }
- if (last) {
- unsigned char md5_data[16];
- zipnum=zip_get_zipnum(zip_info);
- add_aux_tiles("auxtiles.txt", zip_info);
- write_countrydir(zip_info,p->max_index_size);
- zip_set_zipnum(zip_info, zipnum);
- write_aux_tiles(zip_info);
- zip_write_index(zip_info);
- zip_write_directory(zip_info);
- zip_close(zip_info);
- if (p->md5file && zip_get_md5(zip_info, md5_data)) {
- FILE *md5=fopen(p->md5file,"w");
- int i;
- for (i = 0 ; i < 16 ; i++)
- fprintf(md5,"%02x",md5_data[i]);
- fprintf(md5,"\n");
- fclose(md5);
- }
- if (!p->keep_tmpfiles) {
- remove_countryfiles();
- tempfile_unlink("index","");
- tempfile_unlink("zipdir","");
- }
- }
-}
-
-static void
-maptool_load_node_table(struct maptool_params *p, int last)
-{
- if (!p->node_table_loaded) {
- slices=(sizeof_buffer("coords.tmp")+(long long)slice_size-(long long)1)/(long long)slice_size;
- assert(slices>0);
- load_buffer("coords.tmp",&node_buffer,last?(slices-1)*slice_size:0, slice_size);
- p->node_table_loaded=1;
- }
-}
-
-static void
-maptool_load_countries(struct maptool_params *p)
-{
- if (!p->countries_loaded) {
- load_countries();
- p->countries_loaded=1;
- }
-}
-
-static void
-maptool_load_tilesdir(struct maptool_params *p, char *suffix)
-{
- if (!p->tilesdir_loaded) {
- FILE *tilesdir=tempfile(suffix,"tilesdir",0);
- load_tilesdir(tilesdir);
- p->tilesdir_loaded=1;
- }
-}
-
-int main(int argc, char **argv)
-{
- struct maptool_params p;
- char *suffixes[]={""};
- char *suffix=suffixes[0];
- char *filenames[20];
- char *referencenames[20];
- int filename_count=0;
-
- int suffix_count=sizeof(suffixes)/sizeof(char *);
- int i;
- int suffix_start=0;
- int option_index=0;
- main_init(argv[0]);
-#ifndef HAVE_GLIB
- _g_slice_thread_init_nomessage();
-#endif
- linguistics_init();
-
- memset(&p, 0, sizeof(p));
-#ifdef HAVE_ZLIB
- p.compression_level=9;
-#endif
- p.start=1;
- p.end=99;
- p.input_file=stdin;
- p.process_nodes=1;
- p.process_ways=1;
- p.process_relations=1;
- p.timestamp=current_to_iso8601();
- p.max_index_size=65536;
-
-#ifdef HAVE_SBRK
- start_brk=(long)sbrk(0);
-#endif
-#ifdef _WIN32
- gettimeofday(&start_ts,NULL);
-#else
- clock_gettime(CLOCK_REALTIME, &start_ts);
-#endif
- while (1) {
- int parse_result=parse_option(&p, argv, argc, &option_index);
- if (!parse_result) {
- exit(1);
- }
- if (parse_result == 1)
- break;
- if (parse_result == 2) {
- usage();
- exit(0);
- }
- }
- if (experimental && (!experimental_feature_description )) {
- exit_with_error("No experimental features available in this version, aborting. \n");
- }
- if (optind < argc -1) {
- exit_with_error("Only one non-option argument allowed.\n");
- }
- if (p.dump == 0 && optind != argc -1) {
- exit_with_error("Please specify an output file.\n");
- }
- if (p.dump == 1 && optind != argc) {
- exit_with_error("Please do not specify an output file in dump mode.\n");
- }
-
- p.result=argv[optind];
-
-
- // initialize plugins and OSM mappings
- maptool_init(p.rule_file);
- if (p.protobufdb_operation) {
-#ifdef _MSC_VER
- exit_with_error("Option -O not yet supported on MSVC\n");
-#else
- osm_protobufdb_load(p.input_file, p.protobufdb);
- return 0;
-#endif
- }
- phase=0;
-
- // input from an OSM file
- if (p.input == 0) {
- if (start_phase(&p, "reading input data")) {
- osm_read_input_data(&p, suffix);
- p.node_table_loaded=1;
- }
- if (start_phase(&p, "counting references and resolving ways")) {
- maptool_load_node_table(&p,1);
- osm_count_references(&p, suffix, p.start == phase);
- }
- if (start_phase(&p,"converting ways to pois")) {
- osm_process_way2poi(&p, suffix);
- }
- if (start_phase(&p,"splitting at intersections")) {
- if (p.process_ways) {
- maptool_load_node_table(&p,0);
- osm_resolve_coords_and_split_at_intersections(&p, suffix);
- }
- }
- free(node_buffer.base);
- node_buffer.base=NULL;
- node_buffer.malloced=0;
- node_buffer.size=0;
- p.node_table_loaded=0;
- } else {
- if (start_phase(&p,"reading data")) {
- FILE *ways_split=tempfile(suffix,"ways_split",1);
- process_binfile(stdin, ways_split);
- fclose(ways_split);
- }
- }
- if (start_phase(&p,"generating coastlines")) {
- osm_process_coastlines(&p, suffix);
- }
- if (start_phase(&p,"assigning towns to countries")) {
- FILE *towns=tempfile(suffix,"towns",0),*boundaries=NULL,*ways=NULL;
- if (towns) {
- boundaries=tempfile(suffix,"boundaries",0);
- ways=tempfile(suffix,"ways_split",0);
- osm_process_towns(towns,boundaries,ways,suffix);
- fclose(ways);
- fclose(boundaries);
- fclose(towns);
- if(!p.keep_tmpfiles)
- tempfile_unlink(suffix,"towns");
- }
- }
- if (start_phase(&p,"sorting countries")) {
- sort_countries(p.keep_tmpfiles);
- p.countries_loaded=1;
- }
- if (start_phase(&p,"generating turn restrictions")) {
- if (p.process_relations) {
- osm_process_turn_restrictions(&p, suffix);
- }
- if(!p.keep_tmpfiles)
- tempfile_unlink(suffix,"ways_split_index");
- }
- if (p.process_relations && p.process_ways && p.process_nodes && start_phase(&p,"processing associated street relations")) {
- struct files_relation_processing *files_relproc = files_relation_processing_new(p.osm.line2poi, suffix);
- p.osm.associated_streets=tempfile(suffix,"associated_streets",0);
- if (p.osm.associated_streets) {
-
- process_associated_streets(p.osm.associated_streets, files_relproc);
-
- fclose(p.osm.associated_streets);
- files_relation_processing_destroy(files_relproc, suffix);
- if(!p.keep_tmpfiles) {
- tempfile_unlink(suffix,"associated_streets");
- }
- }
- }
- if (p.process_relations && p.process_ways && p.process_nodes && start_phase(&p,"processing house number interpolations")) {
- // OSM house number interpolations are handled like a relation.
- struct files_relation_processing *files_relproc = files_relation_processing_new(p.osm.line2poi, suffix);
- p.osm.house_number_interpolations=tempfile(suffix,"house_number_interpolations",0);
- if (p.osm.house_number_interpolations) {
-
- process_house_number_interpolations(p.osm.house_number_interpolations, files_relproc);
-
- fclose(p.osm.house_number_interpolations);
- files_relation_processing_destroy(files_relproc, suffix);
- if(!p.keep_tmpfiles) {
- tempfile_unlink(suffix,"house_number_interpolations");
- }
- }
- }
- if (p.dump == 1 && start_phase(&p,"dumping")) {
- maptool_dump(&p, suffix);
- exit(0);
- }
- if (p.process_relations) {
- filenames[filename_count]="relations";
- referencenames[filename_count++]=NULL;
- filenames[filename_count]="towns_poly";
- referencenames[filename_count++]=NULL;
- }
- if (p.process_ways) {
- filenames[filename_count]="ways_split";
- referencenames[filename_count++]=NULL;
- filenames[filename_count]="coastline_result";
- referencenames[filename_count++]=NULL;
- }
- if (p.process_nodes) {
- filenames[filename_count]="nodes";
- referencenames[filename_count++]=NULL;
- filenames[filename_count]="way2poi_result";
- referencenames[filename_count++]=NULL;
- }
- for (i = suffix_start ; i < suffix_count ; i++) {
- suffix=suffixes[i];
- if (start_phase(&p,"generating tiles")) {
- maptool_load_countries(&p);
- maptool_generate_tiles(&p, suffix, filenames, filename_count, i == suffix_start, suffixes[0]);
- p.tilesdir_loaded=1;
- }
- if (start_phase(&p,"assembling map")) {
- maptool_load_countries(&p);
- maptool_load_tilesdir(&p, suffix);
- maptool_assemble_map(&p, suffix, filenames, referencenames, filename_count, i == suffix_start, i == suffix_count-1, suffixes[0]);
- }
- phase-=2;
- }
- phase+=2;
- start_phase(&p,"done");
- return 0;
-}
diff --git a/navit/maptool/maptool.h b/navit/maptool/maptool.h
deleted file mode 100644
index f1f45fff7..000000000
--- a/navit/maptool/maptool.h
+++ /dev/null
@@ -1,423 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 "config.h"
-#include <glib.h>
-#include "coord.h"
-#include "item.h"
-#include "attr.h"
-#include "geom.h"
-#include "types.h"
-#ifdef HAVE_LIBCRYPTO
-#include <openssl/md5.h>
-#endif
-
-#define sq(x) ((double)(x)*(x))
-
-#define BUFFER_SIZE 1280
-
-#define debug_tile(x) 0
-#define debug_itembin(x) 0
-
-#define RELATION_MEMBER_PRINT_FORMAT "%d:"LONGLONG_FMT":%s"
-#define RELATION_MEMBER_PARSE_FORMAT "%d:"LONGLONG_FMT":%n"
-
-struct tile_data {
- char buffer[1024];
- int tile_depth;
- struct rect item_bbox;
- struct rect tile_bbox;
-};
-
-struct tile_parameter {
- int min;
- int max;
- int overlap;
- enum attr_type attr_to_copy;
-};
-
-struct tile_info {
- int write;
- int maxlen;
- char *suffix;
- GList **tiles_list;
- FILE *tilesdir_out;
-};
-
-extern struct tile_head {
- int num_subtiles;
- int total_size;
- char *name;
- char *zip_data;
- int total_size_used;
- int zipnum;
- int process;
- struct tile_head *next;
- // char subtiles[0];
-} *tile_head_root;
-
-
-/**
- * A map item (street, POI, border etc.) as it is stored in a Navit binfile.
- * Note that this struct only has fields for the header of the item. The
- * actual data (coordinates and attributes) is stored in memory after
- * this struct as two arrays of type struct coord and struct attr_bin
- * respectively.
- * See also http://wiki.navit-project.org/index.php/Navit%27s_binary_map_driver .
- * @see struct coord
- * @see struct attr_bin
- */
-struct item_bin {
- /** Length of this item (not including this length field) in 32-bit ints. */
- int len;
- /** Item type. */
- enum item_type type;
- /** Length of the following coordinate array in 32-bit ints. */
- int clen;
-};
-
-/**
- * An attribute for an item_bin as it is stored in a Navit binfile.
- * Note that this struct only has fields for the header of the attribute.
- * The attribute value is stored in memory after this struct. The type of the value
- * (string, number, ...) depends on the attribute type.
- * @see struct item_bin
- */
-struct attr_bin {
- /** Length of this attribute (not including this length field) in 32-bit ints. */
- int len;
- /** Attribute type. */
- enum attr_type type;
-};
-
-
-struct item_bin_sink_func {
- int (*func)(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data);
- void *priv_data[8];
-};
-
-struct item_bin_sink {
- void *priv_data[8];
- GList *sink_funcs;
-};
-#define NODE_ID_BITS 56
-struct node_item {
- struct coord c;
- unsigned long long int nd_id:NODE_ID_BITS;
- char ref_way;
-};
-
-struct zip_info;
-
-struct country_table;
-
-/**
- * Data type for the ID of an OSM element (node/way/relation).
- * Must be at least 64 bit wide because IDs will soon exceed 32 bit.
- */
-typedef unsigned long long int osmid;
-#define OSMID_FMT ULONGLONG_FMT
-
-/** Files needed for processing a relation. */
-struct files_relation_processing {
- FILE *ways_in;
- FILE *ways_out;
- FILE *nodes_in;
- FILE *nodes_out;
- FILE *nodes2_in;
- FILE *nodes2_out;
-};
-
-/* boundaries.c */
-
-struct boundary {
- struct item_bin *ib;
- struct country_table *country;
- char *iso2;
- GList *segments,*sorted_segments;
- GList *children;
- struct rect r;
- osmid admin_centre;
-};
-
-char *osm_tag_value(struct item_bin *ib, char *key);
-
-osmid boundary_relid(struct boundary *b);
-
-GList *process_boundaries(FILE *boundaries, FILE *ways);
-
-GList *boundary_find_matches(GList *bl, struct coord *c);
-
-void free_boundaries(GList *l);
-
-/* buffer.c */
-
-/** A buffer that can be grown as needed. */
-struct buffer {
- /** Number of bytes to extend the buffer by when it must grow. */
- int malloced_step;
- /** Current allocated size (bytes). */
- long long malloced;
- /** Base address of this buffer. */
- unsigned char *base;
- /** Size of currently used part of the buffer. */
- long long size;
-};
-
-void save_buffer(char *filename, struct buffer *b, long long offset);
-void load_buffer(char *filename, struct buffer *b, long long offset, long long size);
-long long sizeof_buffer(char *filename);
-
-/* ch.c */
-
-void ch_generate_tiles(char *map_suffix, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info);
-void ch_assemble_map(char *map_suffix, char *suffix, struct zip_info *zip_info);
-
-/* coastline.c */
-
-void process_coastlines(FILE *in, FILE *out);
-
-/* itembin.c */
-
-int item_bin_read(struct item_bin *ib, FILE *in);
-void item_bin_set_type(struct item_bin *ib, enum item_type type);
-void item_bin_init(struct item_bin *ib, enum item_type type);
-void item_bin_add_coord(struct item_bin *ib, struct coord *c, int count);
-void item_bin_add_coord_reverse(struct item_bin *ib, struct coord *c, int count);
-void item_bin_bbox(struct item_bin *ib, struct rect *r);
-void item_bin_copy_coord(struct item_bin *ib, struct item_bin *from, int dir);
-void item_bin_copy_attr(struct item_bin *ib, struct item_bin *from, enum attr_type attr);
-void item_bin_add_coord_rect(struct item_bin *ib, struct rect *r);
-int attr_bin_write_data(struct attr_bin *ab, enum attr_type type, void *data, int size);
-int attr_bin_write_attr(struct attr_bin *ab, struct attr *attr);
-void item_bin_add_attr_data(struct item_bin *ib, enum attr_type type, void *data, int size);
-void item_bin_add_attr(struct item_bin *ib, struct attr *attr);
-void item_bin_add_attr_int(struct item_bin *ib, enum attr_type type, int val);
-void *item_bin_get_attr(struct item_bin *ib, enum attr_type type, void *last);
-struct attr_bin * item_bin_get_attr_bin(struct item_bin *ib, enum attr_type type, void *last);
-struct attr_bin * item_bin_get_attr_bin_last(struct item_bin *ib);
-void item_bin_add_attr_longlong(struct item_bin *ib, enum attr_type type, long long val);
-void item_bin_add_attr_string(struct item_bin *ib, enum attr_type type, char *str);
-void item_bin_add_attr_range(struct item_bin *ib, enum attr_type type, short min, short max);
-void item_bin_remove_attr(struct item_bin *ib, void *ptr);
-void item_bin_write(struct item_bin *ib, FILE *out);
-struct item_bin *item_bin_dup(struct item_bin *ib);
-void item_bin_write_clipped(struct item_bin *ib, struct tile_parameter *param, struct item_bin_sink *out);
-void item_bin_dump(struct item_bin *ib, FILE *out);
-void dump_itembin(struct item_bin *ib);
-void item_bin_set_type_by_population(struct item_bin *ib, int population);
-void item_bin_write_match(struct item_bin *ib, enum attr_type type, enum attr_type match, int maxdepth, FILE *out);
-int item_bin_sort_file(char *in_file, char *out_file, struct rect *r, int *size);
-void clip_line(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out);
-void clip_polygon(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out);
-struct geom_poly_segment *item_bin_to_poly_segment(struct item_bin *ib, int type);
-
-/* itembin_buffer.c */
-struct node_item *read_node_item(FILE *in);
-struct item_bin *read_item(FILE *in);
-struct item_bin *read_item_range(FILE *in, int *min, int *max);
-struct item_bin *init_item(enum item_type type);
-extern struct item_bin *tmp_item_bin;
-
-/* maptool.c */
-
-extern long long slice_size;
-extern int attr_debug_level;
-extern char *suffix;
-extern int ignore_unknown;
-extern GHashTable *dedupe_ways_hash;
-extern int slices;
-extern struct buffer node_buffer;
-extern int processed_nodes, processed_nodes_out, processed_ways, processed_relations, processed_tiles;
-extern int bytes_read;
-extern int overlap;
-extern int unknown_country;
-extern int experimental;
-void sig_alrm(int sig);
-void sig_alrm_end(void);
-
-/* misc.c */
-extern struct rect world_bbox;
-
-
-void bbox_extend(struct coord *c, struct rect *r);
-void bbox(struct coord *c, int count, struct rect *r);
-int contains_bbox(int xl, int yl, int xh, int yh, struct rect *r);
-int bbox_contains_coord(struct rect *r, struct coord *c);
-int bbox_contains_bbox(struct rect *out, struct rect *in);
-long long bbox_area(struct rect const *r);
-void phase1_map(GList *maps, FILE *out_ways, FILE *out_nodes);
-void dump(FILE *in);
-int phase4(FILE **in, int in_count, int with_range, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info);
-int phase5(FILE **in, FILE **references, int in_count, int with_range, char *suffix, struct zip_info *zip_info);
-void process_binfile(FILE *in, FILE *out);
-void add_aux_tiles(char *name, struct zip_info *info);
-void cat(FILE *in, FILE *out);
-int item_order_by_type(enum item_type type);
-
-
-/* osm.c */
-struct maptool_osm {
- FILE *boundaries;
- FILE *turn_restrictions;
- FILE *associated_streets;
- FILE *house_number_interpolations;
- FILE *nodes;
- FILE *ways;
- FILE *line2poi;
- FILE *poly2poi;
- FILE *towns;
-};
-
-/** Type of a relation member. */
-enum relation_member_type {
- UNUSED,
- rel_member_node,
- rel_member_way,
- rel_member_relation,
-};
-
-void osm_warning(char *type, osmid id, int cont, char *fmt, ...);
-void osm_info(char *type, osmid id, int cont, char *fmt, ...);
-void osm_add_tag(char *k, char *v);
-void osm_add_node(osmid id, double lat, double lon);
-void osm_add_way(osmid id);
-void osm_add_relation(osmid id);
-void osm_end_relation(struct maptool_osm *osm);
-void osm_add_member(enum relation_member_type type, osmid ref, char *role);
-void osm_end_way(struct maptool_osm *osm);
-void osm_end_node(struct maptool_osm *osm);
-void osm_add_nd(osmid ref);
-osmid item_bin_get_id(struct item_bin *ib);
-void flush_nodes(int final);
-void sort_countries(int keep_tmpfiles);
-void process_associated_streets(FILE *in, struct files_relation_processing *files_relproc);
-void process_house_number_interpolations(FILE *in, struct files_relation_processing *files_relproc);
-void process_turn_restrictions(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out);
-void process_turn_restrictions_old(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out);
-void clear_node_item_buffer(void);
-void ref_ways(FILE *in);
-void resolve_ways(FILE *in, FILE *out);
-unsigned long long item_bin_get_nodeid(struct item_bin *ib);
-unsigned long long item_bin_get_wayid(struct item_bin *ib);
-unsigned long long item_bin_get_relationid(struct item_bin *ib);
-void process_way2poi(FILE *in, FILE *out, int type);
-int map_resolve_coords_and_split_at_intersections(FILE *in, FILE *out, FILE *out_index, FILE *out_graph, FILE *out_coastline, int final);
-void write_countrydir(struct zip_info *zip_info, int max_index_size);
-void osm_process_towns(FILE *in, FILE *boundaries, FILE *ways, char *suffix);
-void load_countries(void);
-void remove_countryfiles(void);
-struct country_table * country_from_iso2(char *iso);
-void osm_init(FILE*);
-
-/* osm_o5m.c */
-int map_collect_data_osm_o5m(FILE *in, struct maptool_osm *osm);
-
-/* osm_psql.c */
-int map_collect_data_osm_db(char *dbstr, struct maptool_osm *osm);
-
-/* osm_protobuf.c */
-int map_collect_data_osm_protobuf(FILE *in, struct maptool_osm *osm);
-int osm_protobufdb_load(FILE *in, char *dir);
-
-/* osm_relations.c */
-struct relations * relations_new(void);
-struct relations_func *relations_func_new(void (*func)(void *func_priv, void *relation_priv, struct item_bin *member, void *member_priv), void *func_priv);
-void relations_add_relation_member_entry(struct relations *rel, struct relations_func *func, void *relation_priv, void *member_priv, enum relation_member_type type, osmid id);
-void relations_add_relation_default_entry(struct relations *rel, struct relations_func *func);
-void relations_process(struct relations *rel, FILE *nodes, FILE *ways);
-void relations_destroy(struct relations *rel);
-
-
-/* osm_xml.c */
-int osm_xml_get_attribute(char *xml, char *attribute, char *buffer, int buffer_size);
-void osm_xml_decode_entities(char *buffer);
-int map_collect_data_osm(FILE *in, struct maptool_osm *osm);
-
-
-/* sourcesink.c */
-
-struct item_bin_sink *item_bin_sink_new(void);
-struct item_bin_sink_func *item_bin_sink_func_new(int (*func)(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data));
-void item_bin_sink_func_destroy(struct item_bin_sink_func *func);
-void item_bin_sink_add_func(struct item_bin_sink *sink, struct item_bin_sink_func *func);
-void item_bin_sink_destroy(struct item_bin_sink *sink);
-int item_bin_write_to_sink(struct item_bin *ib, struct item_bin_sink *sink, struct tile_data *tile_data);
-struct item_bin_sink *file_reader_new(FILE *in, int limit, int offset);
-int file_reader_finish(struct item_bin_sink *sink);
-int file_writer_process(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data);
-struct item_bin_sink_func *file_writer_new(FILE *out);
-int file_writer_finish(struct item_bin_sink_func *file_writer);
-int tile_collector_process(struct item_bin_sink_func *tile_collector, struct item_bin *ib, struct tile_data *tile_data);
-struct item_bin_sink_func *tile_collector_new(struct item_bin_sink *out);
-
-/* tempfile.c */
-
-char *tempfile_name(char *suffix, char *name);
-FILE *tempfile(char *suffix, char *name, int mode);
-void tempfile_unlink(char *suffix, char *name);
-void tempfile_rename(char *suffix, char *from, char *to);
-
-/* tile.c */
-extern GHashTable *tile_hash,*tile_hash2;
-
-struct aux_tile {
- char *name;
- char *filename;
- int size;
-};
-
-extern GList *aux_tile_list;
-
-int tile(struct rect *r, char *suffix, char *ret, int max, int overlap, struct rect *tr);
-void tile_bbox(char *tile, struct rect *r, int overlap);
-int tile_len(char *tile);
-void load_tilesdir(FILE *in);
-void tile_write_item_to_tile(struct tile_info *info, struct item_bin *ib, FILE *reference, char *name);
-void tile_write_item_minmax(struct tile_info *info, struct item_bin *ib, FILE *reference, int min, int max);
-int add_aux_tile(struct zip_info *zip_info, char *name, char *filename, int size);
-int write_aux_tiles(struct zip_info *zip_info);
-int create_tile_hash(void);
-void write_tilesdir(struct tile_info *info, struct zip_info *zip_info, FILE *out);
-void merge_tiles(struct tile_info *info);
-struct attr map_information_attrs[32];
-void index_init(struct zip_info *info, int version);
-void index_submap_add(struct tile_info *info, struct tile_head *th);
-
-/* zip.c */
-void write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, int data_size);
-void zip_write_index(struct zip_info *info);
-int zip_write_directory(struct zip_info *info);
-struct zip_info *zip_new(void);
-void zip_set_md5(struct zip_info *info, int on);
-int zip_get_md5(struct zip_info *info, unsigned char *out);
-void zip_set_zip64(struct zip_info *info, int on);
-void zip_set_compression_level(struct zip_info *info, int level);
-void zip_set_maxnamelen(struct zip_info *info, int max);
-int zip_get_maxnamelen(struct zip_info *info);
-int zip_add_member(struct zip_info *info);
-int zip_set_timestamp(struct zip_info *info, char *timestamp);
-int zip_open(struct zip_info *info, char *out, char *dir, char *index);
-FILE *zip_get_index(struct zip_info *info);
-int zip_get_zipnum(struct zip_info *info);
-void zip_set_zipnum(struct zip_info *info, int num);
-void zip_close(struct zip_info *info);
-void zip_destroy(struct zip_info *info);
-
-/* Break compilation on 32 bit architectures, as we're going to cast osmid's to gpointer to use them as keys to GHashTable's */
-struct maptool_force_64 {char s[sizeof(gpointer)<sizeof(osmid)?-1:1];};
diff --git a/navit/maptool/misc.c b/navit/maptool/misc.c
deleted file mode 100644
index 90b03d462..000000000
--- a/navit/maptool/misc.c
+++ /dev/null
@@ -1,454 +0,0 @@
-/**
- * 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.
- */
-
-
-#define _FILE_OFFSET_BITS 64
-#define _LARGEFILE_SOURCE
-#define _LARGEFILE64_SOURCE
-#include <stdlib.h>
-#include <glib.h>
-#include <assert.h>
-#include <string.h>
-#include <signal.h>
-#include <stdio.h>
-#include <math.h>
-#ifndef _MSC_VER
-#include <getopt.h>
-#include <unistd.h>
-#endif
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <zlib.h>
-#include "file.h"
-#include "item.h"
-#include "map.h"
-#include "main.h"
-#include "config.h"
-#include "zipfile.h"
-#include "linguistics.h"
-#include "plugin.h"
-#include "maptool.h"
-
-#define phase1_coord_max 16384
-
-struct rect world_bbox = {
- { WORLD_BOUNDINGBOX_MIN_X, WORLD_BOUNDINGBOX_MIN_Y},
- { WORLD_BOUNDINGBOX_MAX_X, WORLD_BOUNDINGBOX_MAX_Y},
-};
-
-void
-bbox_extend(struct coord *c, struct rect *r)
-{
- if (c->x < r->l.x)
- r->l.x=c->x;
- if (c->y < r->l.y)
- r->l.y=c->y;
- if (c->x > r->h.x)
- r->h.x=c->x;
- if (c->y > r->h.y)
- r->h.y=c->y;
-}
-
-void
-bbox(struct coord *c, int count, struct rect *r)
-{
- if (! count)
- return;
- r->l=*c;
- r->h=*c;
- while (--count) {
- c++;
- bbox_extend(c, r);
- }
-}
-
-int
-contains_bbox(int xl, int yl, int xh, int yh, struct rect *r)
-{
- if (r->h.x < xl || r->h.x > xh) {
- return 0;
- }
- if (r->l.x > xh || r->l.x < xl) {
- return 0;
- }
- if (r->h.y < yl || r->h.y > yh) {
- return 0;
- }
- if (r->l.y > yh || r->l.y < yl) {
- return 0;
- }
- return 1;
-}
-
-int
-bbox_contains_coord(struct rect *r, struct coord *c)
-{
- if (r->h.x < c->x)
- return 0;
- if (r->l.x > c->x)
- return 0;
- if (r->h.y < c->y)
- return 0;
- if (r->l.y > c->y)
- return 0;
- return 1;
-}
-
-int
-bbox_contains_bbox(struct rect *out, struct rect *in)
-{
- if (out->h.x < in->h.x)
- return 0;
- if (out->l.x > in->l.x)
- return 0;
- if (out->h.y < in->h.y)
- return 0;
- if (out->l.y > in->l.y)
- return 0;
- return 1;
-}
-
-long long
-bbox_area(struct rect const *r)
-{
- return ((long long)r->h.x-r->l.x)*(r->h.y-r->l.y);
-}
-
-void
-phase1_map(GList *maps, FILE *out_ways, FILE *out_nodes)
-{
- struct map_rect *mr;
- struct item *item;
- int count;
- struct coord ca[phase1_coord_max];
- struct attr attr;
- struct item_bin *item_bin;
-
- while (maps) {
- mr=map_rect_new(maps->data, NULL);
- while ((item = map_rect_get_item(mr))) {
- count=item_coord_get(item, ca, item->type < type_line ? 1: phase1_coord_max);
- item_bin=init_item(item->type);
- item_bin_add_coord(item_bin, ca, count);
- while (item_attr_get(item, attr_any, &attr)) {
- if (attr.type >= attr_type_string_begin && attr.type <= attr_type_string_end) {
- attr.u.str=map_convert_string(maps->data, attr.u.str);
- if (attr.u.str) {
- item_bin_add_attr(item_bin, &attr);
- map_convert_free(attr.u.str);
- }
- } else
- item_bin_add_attr(item_bin, &attr);
- }
- if (item->type >= type_line)
- item_bin_write(item_bin, out_ways);
- else
- item_bin_write(item_bin, out_nodes);
- }
- map_rect_destroy(mr);
- maps=g_list_next(maps);
- }
-}
-
-int
-item_order_by_type(enum item_type type)
-{
- int max=14;
- switch (type) {
- case type_town_label_1e7:
- case type_town_label_5e6:
- max=3;
- break;
- case type_town_label_2e6:
- case type_town_label_1e6:
- max=5;
- break;
- case type_town_label_5e5:
- case type_district_label_1e7:
- case type_district_label_5e6:
- case type_district_label_2e6:
- case type_district_label_1e6:
- case type_district_label_5e5:
- max=6;
- break;
- case type_town_label_2e5:
- case type_town_label_1e5:
- case type_district_label_2e5:
- case type_district_label_1e5:
- case type_street_n_lanes:
- case type_highway_city:
- case type_highway_land:
- case type_ramp:
- max=8;
- break;
- case type_town_label_5e4:
- case type_town_label_2e4:
- case type_town_label_1e4:
- case type_district_label_5e4:
- case type_district_label_2e4:
- case type_district_label_1e4:
- max=9;
- break;
- case type_poly_water_tiled:
- if(experimental)
- max=9;
- break;
- case type_street_4_land:
- case type_street_4_city:
- max=10;
- break;
- case type_town_label_5e3:
- case type_town_label_2e3:
- case type_town_label_1e3:
- case type_district_label_5e3:
- case type_district_label_2e3:
- case type_district_label_1e3:
- case type_street_3_city:
- case type_street_3_land:
- max=12;
- break;
- default:
- break;
- }
- return max;
-}
-
-static void
-phase34_process_file(struct tile_info *info, FILE *in, FILE *reference)
-{
- struct item_bin *ib;
- struct attr_bin *a;
- int max;
-
- while ((ib=read_item(in))) {
- if (ib->type < 0x80000000)
- processed_nodes++;
- else
- processed_ways++;
- max=item_order_by_type(ib->type);
- a=item_bin_get_attr_bin(ib, attr_order, NULL);
- if(a) {
- int max2=((struct range *)(a+1))->max;
- if(max>max2)
- max=max2;
- }
- tile_write_item_minmax(info, ib, reference, 0, max);
- }
-}
-
-static void
-phase34_process_file_range(struct tile_info *info, FILE *in, FILE *reference)
-{
- struct item_bin *ib;
- int min,max;
-
- while ((ib=read_item_range(in, &min, &max))) {
- if (ib->type < 0x80000000)
- processed_nodes++;
- else
- processed_ways++;
- tile_write_item_minmax(info, ib, reference, min, max);
- }
-}
-
-static int
-phase34(struct tile_info *info, struct zip_info *zip_info, FILE **in, FILE **reference, int in_count, int with_range)
-{
- int i;
-
- processed_nodes=processed_nodes_out=processed_ways=processed_relations=processed_tiles=0;
- bytes_read=0;
- sig_alrm(0);
- if (! info->write)
- tile_hash=g_hash_table_new(g_str_hash, g_str_equal);
- for (i = 0 ; i < in_count ; i++) {
- if (in[i]) {
- if (with_range)
- phase34_process_file_range(info, in[i], reference ? reference[i]:NULL);
- else
- phase34_process_file(info, in[i], reference ? reference[i]:NULL);
- }
- }
- if (! info->write)
- merge_tiles(info);
- sig_alrm(0);
- sig_alrm_end();
- write_tilesdir(info, zip_info, info->tilesdir_out);
-
- return 0;
-
-}
-
-
-void
-dump(FILE *in)
-{
- struct item_bin *ib;
- while ((ib=read_item(in))) {
- dump_itembin(ib);
- }
-}
-
-int
-phase4(FILE **in, int in_count, int with_range, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info)
-{
- struct tile_info info;
- info.write=0;
- info.maxlen=0;
- info.suffix=suffix;
- info.tiles_list=NULL;
- info.tilesdir_out=tilesdir_out;
- return phase34(&info, zip_info, in, NULL, in_count, with_range);
-}
-
-static int
-process_slice(FILE **in, FILE **reference, int in_count, int with_range, long long size, char *suffix, struct zip_info *zip_info)
-{
- struct tile_head *th;
- char *slice_data,*zip_data;
- int zipfiles=0;
- struct tile_info info;
- int i;
-
- slice_data=malloc(size);
- assert(slice_data != NULL);
- zip_data=slice_data;
- th=tile_head_root;
- while (th) {
- if (th->process) {
- th->zip_data=zip_data;
- zip_data+=th->total_size;
- }
- th=th->next;
- }
- for (i = 0 ; i < in_count ; i++) {
- if (in[i])
- fseek(in[i], 0, SEEK_SET);
- if (reference && reference[i]) {
- fseek(reference[i], 0, SEEK_SET);
- }
- }
- info.write=1;
- info.maxlen=zip_get_maxnamelen(zip_info);
- info.suffix=suffix;
- info.tiles_list=NULL;
- info.tilesdir_out=NULL;
- phase34(&info, zip_info, in, reference, in_count, with_range);
-
- for (th=tile_head_root;th;th=th->next) {
- if (!th->process)
- continue;
- if (th->name[0]) {
- if (th->total_size != th->total_size_used) {
- fprintf(stderr,"Size error '%s': %d vs %d\n", th->name, th->total_size, th->total_size_used);
- exit(1);
- }
- write_zipmember(zip_info, th->name, zip_get_maxnamelen(zip_info), th->zip_data, th->total_size);
- zipfiles++;
- } else {
- dbg_assert(fwrite(th->zip_data, th->total_size, 1, zip_get_index(zip_info))==1);
- }
- }
- free(slice_data);
-
- return zipfiles;
-}
-
-int
-phase5(FILE **in, FILE **references, int in_count, int with_range, char *suffix, struct zip_info *zip_info)
-{
- long long size;
- int slices;
- int zipnum,written_tiles;
- struct tile_head *th,*th2;
- create_tile_hash();
-
- th=tile_head_root;
- size=0;
- slices=0;
- fprintf(stderr, "Maximum slice size "LONGLONG_FMT"\n", slice_size);
- while (th) {
- if (size + th->total_size > slice_size) {
- fprintf(stderr,"Slice %d is of size "LONGLONG_FMT"\n", slices, size);
- size=0;
- slices++;
- }
- size+=th->total_size;
- th=th->next;
- }
- if (size)
- fprintf(stderr,"Slice %d is of size "LONGLONG_FMT"\n", slices, size);
- th=tile_head_root;
- size=0;
- slices=0;
- while (th) {
- th2=tile_head_root;
- while (th2) {
- th2->process=0;
- th2=th2->next;
- }
- size=0;
- while (th && size+th->total_size < slice_size) {
- size+=th->total_size;
- th->process=1;
- th=th->next;
- }
- /* process_slice() modifies zip_info, but need to retain old info */
- zipnum=zip_get_zipnum(zip_info);
- written_tiles=process_slice(in, references, in_count, with_range, size, suffix, zip_info);
- zip_set_zipnum(zip_info, zipnum+written_tiles);
- slices++;
- }
- return 0;
-}
-
-void
-process_binfile(FILE *in, FILE *out)
-{
- struct item_bin *ib;
- while ((ib=read_item(in))) {
- item_bin_write(ib, out);
- }
-}
-
-void
-add_aux_tiles(char *name, struct zip_info *info)
-{
- char buffer[4096];
- char *s;
- FILE *in;
- FILE *tmp;
- in=fopen(name,"rb");
- if (!in)
- return;
- while (fscanf(in,"%s",buffer) == 1) {
- s=strchr(buffer,'/');
- if (s)
- s++;
- else
- s=buffer;
- tmp=fopen(buffer,"rb");
- if (tmp) {
- fseek(tmp, 0, SEEK_END);
- add_aux_tile(info, s, buffer, ftell(tmp));
- fclose(tmp);
- }
- }
- fclose(in);
-}
diff --git a/navit/maptool/osm.c b/navit/maptool/osm.c
deleted file mode 100644
index 1d56834fb..000000000
--- a/navit/maptool/osm.c
+++ /dev/null
@@ -1,3538 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 "navit_lfs.h"
-#ifdef _MSC_VER
-#define strcasecmp _stricmp
-#define snprintf _snprintf
-#else
-#include <unistd.h>
-#endif
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <ctype.h>
-#include "maptool.h"
-#include "debug.h"
-#include "linguistics.h"
-#include "country.h"
-#include "file.h"
-#include "profile.h"
-#include "types.h"
-#include "transform.h"
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#define M_PI_4 0.785398163397448309616
-#endif
-
-static int in_way, in_node, in_relation;
-osmid nodeid,wayid;
-
-static GHashTable *attr_hash,*country_table_hash,*attr_hash;
-
-static char *attr_present;
-static int attr_present_count;
-
-static struct item_bin item;
-
-
-int maxspeed_attr_value;
-
-char debug_attr_buffer[BUFFER_SIZE];
-
-int flags[4];
-int flagsa[4];
-
-int flags_attr_value;
-
-struct attr_bin osmid_attr;
-long long osmid_attr_value;
-
-char is_in_buffer[BUFFER_SIZE];
-
-char attr_strings_buffer[BUFFER_SIZE*16];
-int attr_strings_buffer_free_offset;
-
-#define MAX_COORD_COUNT 65536
-struct coord coord_buffer[MAX_COORD_COUNT];
-
-struct attr_mapping {
- enum item_type type;
- int attr_present_idx_count;
- int attr_present_idx[0];
-};
-
-static void nodes_ref_item_bin(struct item_bin *ib);
-
-
-static struct attr_mapping **attr_mapping_node;
-static int attr_mapping_node_count;
-static struct attr_mapping **attr_mapping_way;
-static int attr_mapping_way_count;
-static struct attr_mapping **attr_mapping_way2poi;
-static int attr_mapping_way2poi_count;
-static struct attr_mapping **attr_mapping_rel2poly_place;
-static int attr_mapping_rel2poly_place_count;
-
-static int attr_longest_match(struct attr_mapping **mapping, int mapping_count, enum item_type *types, int types_count);
-static void attr_longest_match_clear(void);
-
-
-enum attr_strings_type {
- attr_string_phone,
- attr_string_fax,
- attr_string_email,
- attr_string_url,
- attr_string_district_name,
- attr_string_street_name,
- attr_string_street_name_systematic,
- attr_string_street_name_systematic_nat,
- attr_string_street_name_systematic_int,
- attr_string_ref,
- attr_string_exit_to,
- attr_string_street_destination,
- attr_string_street_destination_forward,
- attr_string_street_destination_backward,
- attr_string_house_number,
- attr_string_label,
- attr_string_postal,
- attr_string_population,
- attr_string_county_name,
- attr_string_last,
-};
-
-char *attr_strings[attr_string_last];
-
-char *osm_types[]={"unknown","node","way","relation"};
-
-/*
- * These macros are designed to handle maptool internal node id reference representation. This representation does not leak
- * to binfile, so it's safe to change it without breaking binfile binary compatibility.
- * Currently it keeps low 31 bits in y coordinate and up to 30 high order bits in x coordinate, allowing for 61 bit osm node id in total.
- */
-#define REF_MARKER (1ull << 30)
-#define REF_MASK (3ull << 30)
-#define IS_REF(c) (((c).x & REF_MASK)==REF_MARKER)
-#define GET_REF(c) ((((osmid)(c).x & ~REF_MARKER)<<31) + (c).y )
-#define SET_REF(c,ref) do { (c).x = REF_MARKER | ((osmid)(ref)>>31); (c).y = (osmid)(ref) & 0x7fffffffull; } while(0)
-
-/* Table of country codes with possible is_in spellings.
- * Note: If you update this list, check also country array in country.c
- */
-struct country_table {
- int countryid;
- char *names;
- char *admin_levels;
- FILE *file;
- int size;
- struct rect r;
- int nparts;
-} country_table[] = {
- { 4,"Afghanistan"},
- { 8,"Albania"},
- { 10,"Antarctica"},
- { 12,"Algeria"},
- { 16,"American Samoa"},
- { 20,"Andorra"},
- { 24,"Angola"},
- { 28,"Antigua and Barbuda"},
- { 31,"Azerbaijan"},
- { 32,"Argentina,República Argentina,AR "},
- { 36,"Australia,AUS"},
- { 40,"Austria,Österreich,AUT"},
- { 44,"Bahamas"},
- { 48,"Bahrain"},
- { 50,"Bangladesh"},
- { 51,"Armenia"},
- { 52,"Barbados"},
- { 56,"Belgium,Belgique,Belgie,België,Belgien","345c7M"},
- { 60,"Bermuda"},
- { 64,"Bhutan"},
- { 68,"Bolivia, Plurinational State of"},
- { 70,"Bosnia and Herzegovina,Bosna i Hercegovina,БоÑна и Херцеговина"},
- { 72,"Botswana"},
- { 74,"Bouvet Island"},
- { 76,"Brazil"},
- { 84,"Belize"},
- { 86,"British Indian Ocean Territory"},
- { 90,"Solomon Islands"},
- { 92,"Virgin Islands, British"},
- { 96,"Brunei Darussalam"},
- { 100,"Bulgaria,БългариÑ"},
- { 104,"Myanmar"},
- { 108,"Burundi"},
- { 112,"Belarus"},
- { 116,"Cambodia"},
- { 120,"Cameroon"},
- { 124,"Canada"},
- { 132,"Cape Verde"},
- { 136,"Cayman Islands"},
- { 140,"Central African Republic"},
- { 144,"Sri Lanka"},
- { 148,"Chad"},
- { 152,"Chile"},
- { 156,"China"},
- { 158,"Taiwan, Province of China"},
- { 162,"Christmas Island"},
- { 166,"Cocos (Keeling) Islands"},
- { 170,"Colombia"},
- { 174,"Comoros"},
- { 175,"Mayotte"},
- { 178,"Congo"},
- { 180,"Congo, the Democratic Republic of the"},
- { 184,"Cook Islands"},
- { 188,"Costa Rica"},
- { 191,"Croatia,Republika Hrvatska,HR"},
- { 192,"Cuba"},
- { 196,"Cyprus"},
- { 203,"Czech Republic,Česká republika,CZ"},
- { 204,"Benin"},
- { 208,"Denmark,Danmark,DK"},
- { 212,"Dominica"},
- { 214,"Dominican Republic"},
- { 218,"Ecuador"},
- { 222,"El Salvador"},
- { 226,"Equatorial Guinea"},
- { 231,"Ethiopia"},
- { 232,"Eritrea"},
- { 233,"Estonia"},
- { 234,"Faroe Islands,Føroyar"},
- { 238,"Falkland Islands (Malvinas)"},
- { 239,"South Georgia and the South Sandwich Islands"},
- { 242,"Fiji"},
- { 246,"Finland,Suomi"},
- { 248,"Ã…land Islands"},
- { 250,"France,République française,FR","3s5c7M"},
- { 254,"French Guiana"},
- { 258,"French Polynesia"},
- { 260,"French Southern Territories"},
- { 262,"Djibouti"},
- { 266,"Gabon"},
- { 268,"Georgia"},
- { 270,"Gambia"},
- { 275,"Palestinian Territory, Occupied"},
- { 276,"Germany,Deutschland,Bundesrepublik Deutschland","345c7M"},
- { 288,"Ghana"},
- { 292,"Gibraltar"},
- { 296,"Kiribati"},
- { 300,"Greece"},
- { 304,"Greenland"},
- { 308,"Grenada"},
- { 312,"Guadeloupe"},
- { 316,"Guam"},
- { 320,"Guatemala"},
- { 324,"Guinea"},
- { 328,"Guyana"},
- { 332,"Haiti"},
- { 334,"Heard Island and McDonald Islands"},
- { 336,"Holy See (Vatican City State)"},
- { 340,"Honduras"},
- { 344,"Hong Kong"},
- { 348,"Hungary,Magyarország"},
- { 352,"Iceland"},
- { 356,"India"},
- { 360,"Indonesia"},
- { 364,"Iran, Islamic Republic of"},
- { 368,"Iraq"},
- { 372,"Ireland"},
- { 376,"Israel"},
- { 380,"Italy,Italia"},
- { 384,"Côte d'Ivoire"},
- { 388,"Jamaica"},
- { 392,"Japan"},
- { 398,"Kazakhstan"},
- { 400,"Jordan"},
- { 404,"Kenya"},
- { 408,"Korea, Democratic People's Republic of"},
- { 410,"Korea, Republic of"},
- { 414,"Kuwait"},
- { 417,"Kyrgyzstan"},
- { 418,"Lao People's Democratic Republic"},
- { 422,"Lebanon"},
- { 426,"Lesotho"},
- { 428,"Latvia"},
- { 430,"Liberia"},
- { 434,"Libyan Arab Jamahiriya"},
- { 438,"Liechtenstein"},
- { 440,"Lithuania,Lietuva"},
- { 442,"Luxembourg"},
- { 446,"Macao"},
- { 450,"Madagascar"},
- { 454,"Malawi"},
- { 458,"Malaysia"},
- { 462,"Maldives"},
- { 466,"Mali"},
- { 470,"Malta"},
- { 474,"Martinique"},
- { 478,"Mauritania"},
- { 480,"Mauritius"},
- { 484,"Mexico"},
- { 492,"Monaco"},
- { 496,"Mongolia"},
- { 498,"Moldova, Republic of"},
- { 499,"Montenegro,Црна Гора,Crna Gora"},
- { 500,"Montserrat"},
- { 504,"Morocco"},
- { 508,"Mozambique"},
- { 512,"Oman"},
- { 516,"Namibia"},
- { 520,"Nauru"},
- { 524,"Nepal"},
- { 528,"Nederland,The Netherlands,Niederlande,NL,Netherlands","3c567M"},
- { 530,"Netherlands Antilles"},
- { 531,"Curacao"},
- { 533,"Aruba"},
- { 534,"Sint Maarten (Dutch part)"},
- { 535,"Bonaire, Sint Eustatius and Saba"},
- { 540,"New Caledonia"},
- { 548,"Vanuatu"},
- { 554,"New Zealand"},
- { 558,"Nicaragua"},
- { 562,"Niger"},
- { 566,"Nigeria"},
- { 570,"Niue"},
- { 574,"Norfolk Island"},
- { 578,"Norway,Norge,Noreg,NO"},
- { 580,"Northern Mariana Islands"},
- { 581,"United States Minor Outlying Islands"},
- { 583,"Micronesia, Federated States of"},
- { 584,"Marshall Islands"},
- { 585,"Palau"},
- { 586,"Pakistan"},
- { 591,"Panama"},
- { 598,"Papua New Guinea"},
- { 600,"Paraguay"},
- { 604,"Peru"},
- { 608,"Philippines"},
- { 612,"Pitcairn"},
- { 616,"Poland,Polska,PL","3s5cmT"},
- { 620,"Portugal"},
- { 624,"Guinea-Bissau"},
- { 626,"Timor-Leste"},
- { 630,"Puerto Rico"},
- { 634,"Qatar"},
- { 638,"Réunion"},
- { 642,"România,Romania,RO"},
- { 643,"РоÑÑиÑ,РоÑÑийÑÐºÐ°Ñ Ð¤ÐµÐ´ÐµÑ€Ð°Ñ†Ð¸Ñ,Russia,Russian Federation","3s5c7m"},
- { 646,"Rwanda"},
- { 652,"Saint Barthélemy"},
- { 654,"Saint Helena, Ascension and Tristan da Cunha"},
- { 659,"Saint Kitts and Nevis"},
- { 660,"Anguilla"},
- { 662,"Saint Lucia"},
- { 663,"Saint Martin (French part)"},
- { 666,"Saint Pierre and Miquelon"},
- { 670,"Saint Vincent and the Grenadines"},
- { 674,"San Marino"},
- { 678,"Sao Tome and Principe"},
- { 682,"Saudi Arabia"},
- { 686,"Senegal"},
- { 688,"Srbija,Србија,Serbia"},
- { 690,"Seychelles"},
- { 694,"Sierra Leone"},
- { 702,"Singapore"},
- { 703,"Slovakia,Slovensko,SK"},
- { 704,"Viet Nam"},
- { 705,"Slovenia,Republika Slovenija,SI"},
- { 706,"Somalia"},
- { 710,"South Africa"},
- { 716,"Zimbabwe"},
- { 724,"Spain,Espana,España,Reino de Espana,Reino de España","345scm"},
- { 728,"South Sudan"},
- { 732,"Western Sahara"},
- { 736,"Sudan"},
- { 740,"Suriname"},
- { 744,"Svalbard and Jan Mayen"},
- { 748,"Swaziland"},
- { 752,"Sweden,Sverige,Konungariket Sverige,SE"},
- { 756,"Switzerland,Schweiz","3s5c7M"},
- { 760,"Syrian Arab Republic"},
- { 762,"Tajikistan"},
- { 764,"Thailand"},
- { 768,"Togo"},
- { 772,"Tokelau"},
- { 776,"Tonga"},
- { 780,"Trinidad and Tobago"},
- { 784,"United Arab Emirates"},
- { 788,"Tunisia"},
- { 792,"Turkey"},
- { 795,"Turkmenistan"},
- { 796,"Turks and Caicos Islands"},
- { 798,"Tuvalu"},
- { 800,"Uganda"},
- { 804,"Ukraine","3s5c78"},
- { 807,"Macedonia,Македонија"},
- { 818,"Egypt"},
- { 826,"United Kingdom,UK","3s5c7m"},
- { 831,"Guernsey"},
- { 832,"Jersey"},
- { 833,"Isle of Man"},
- { 834,"Tanzania, United Republic of"},
- { 840,"USA","3s5c7m"},
- { 850,"Virgin Islands, U.S."},
- { 854,"Burkina Faso"},
- { 858,"Uruguay"},
- { 860,"Uzbekistan"},
- { 862,"Venezuela, Bolivarian Republic of"},
- { 876,"Wallis and Futuna"},
- { 882,"Samoa"},
- { 887,"Yemen"},
- { 894,"Zambia"},
- { 999,"Unknown"},
-};
-
-// first char - item type
-// =w - ways
-// =? - used both for nodes and ways
-// otherwise - nodes
-
-static char *attrmap={
- "n *=* point_unkn\n"
- "? addr:housenumber=* house_number\n"
- "? aeroway=aerodrome poi_airport\n"
- "? aeroway=airport poi_airport\n"
- "? aeroway=helipad poi_heliport\n"
- "? aeroway=terminal poi_airport\n"
- "? amenity=atm poi_atm\n"
- "? amenity=bank poi_bank\n"
- "? amenity=bar poi_bar\n"
- "n amenity=bench poi_bench\n"
- "? amenity=bicycle_rental poi_bicycle_rental\n"
- "? amenity=bicycle_parking poi_bicycle_parking\n"
- "? amenity=biergarten poi_biergarten\n"
- "? amenity=bus_station poi_bus_station\n"
- "? amenity=cafe poi_cafe\n"
- "? amenity=car_sharing poi_car_sharing\n"
- "? amenity=car_wash poi_car_wash\n"
- "? amenity=cinema poi_cinema\n"
- "? amenity=college poi_school_college\n"
- "? amenity=courthouse poi_justice\n"
- "? amenity=drinking_water poi_potable_water\n"
- "? amenity=fast_food poi_fastfood\n"
- "? amenity=fire_station poi_firebrigade\n"
- "? amenity=fountain poi_fountain\n"
- "? amenity=fuel poi_fuel\n"
- "? amenity=grave_yard poi_cemetery\n"
- "? amenity=hospital poi_hospital\n"
- "? amenity=hunting_stand poi_hunting_stand\n"
- "? amenity=kindergarten poi_kindergarten\n"
- "? amenity=library poi_library\n"
- "? amenity=nightclub poi_nightclub\n"
- "? amenity=park_bench poi_bench\n"
- "? amenity=parking poi_car_parking\n"
- "? amenity=pharmacy poi_pharmacy\n"
- "? amenity=place_of_worship,religion=christian poi_church\n"
- "? amenity=place_of_worship poi_worship\n"
- "? amenity=police poi_police\n"
- "? amenity=post_box poi_post_box\n"
- "? amenity=post_office poi_post_office\n"
- "? amenity=prison poi_prison\n"
- "? amenity=pub poi_pub\n"
- "? amenity=public_building poi_public_office\n"
- "? amenity=recycling poi_recycling\n"
- "? amenity=restaurant,cuisine=fine_dining poi_dining\n"
- "? amenity=restaurant poi_restaurant\n"
- "? amenity=school poi_school\n"
- "? amenity=shelter poi_shelter\n"
- "? amenity=taxi poi_taxi\n"
- "? amenity=tec_common tec_common\n"
- "? amenity=telephone poi_telephone\n"
- "? amenity=theatre poi_theater\n"
- "? amenity=toilets poi_restroom\n"
- "? amenity=townhall poi_townhall\n"
- "? amenity=university poi_school_university\n"
- "? amenity=vending_machine poi_vending_machine\n"
- "n barrier=bollard barrier_bollard\n"
- "n barrier=cycle_barrier barrier_cycle\n"
- "n barrier=lift_gate barrier_lift_gate\n"
- "? car=car_rental poi_car_rent\n"
- "? highway=bus_station poi_bus_station\n"
- "? highway=bus_stop poi_bus_stop\n"
- "n highway=mini_roundabout mini_roundabout\n"
- "n highway=motorway_junction highway_exit\n"
- "n highway=stop traffic_sign_stop\n"
- "n highway=toll_booth poi_toll_booth\n"
- "n highway=traffic_signals traffic_signals\n"
- "n highway=turning_circle turning_circle\n"
- "? historic=boundary_stone poi_boundary_stone\n"
- "? historic=castle poi_castle\n"
- "? historic=memorial poi_memorial\n"
- "? historic=monument poi_monument\n"
- "? historic=ruins poi_ruins\n"
-// "? historic=* poi_ruins\n"
- "? landuse=cemetery poi_cemetery\n"
- "? leisure=fishing poi_fish\n"
- "? leisure=golf_course poi_golf\n"
- "? leisure=marina poi_marine\n"
- "? leisure=playground poi_playground\n"
- "? leisure=slipway poi_boat_ramp\n"
- "? leisure=sports_centre poi_sport\n"
- "? leisure=stadium poi_stadium\n"
- "? man_made=tower poi_tower\n"
- "? military=airfield poi_military\n"
- "? military=barracks poi_military\n"
- "? military=bunker poi_military\n"
- "? military=danger_area poi_danger_area\n"
- "? military=range poi_military\n"
- "? natural=bay poi_bay\n"
- "? natural=peak,ele=* poi_peak\n" // show only major peaks with elevation
- "? natural=tree poi_tree\n"
- "n place=city town_label_2e5\n"
- "n place=hamlet town_label_2e2\n"
- "n place=locality town_label_2e0\n"
- "n place=suburb district_label\n"
- "n place=town town_label_2e4\n"
- "n place=village town_label_2e3\n"
- "n power=tower power_tower\n"
- "n power=sub_station power_substation\n"
- "n railway=halt poi_rail_halt\n"
- "n railway=level_crossing poi_level_crossing\n"
- "? railway=station poi_rail_station\n"
- "? railway=tram_stop poi_rail_tram_stop\n"
- "? shop=baker poi_shop_baker\n"
- "? shop=bakery poi_shop_baker\n"
- "? shop=beverages poi_shop_beverages\n"
- "? shop=bicycle poi_shop_bicycle\n"
- "? shop=butcher poi_shop_butcher\n"
- "? shop=car poi_car_dealer_parts\n"
- "? shop=car_repair poi_repair_service\n"
- "? shop=clothes poi_shop_apparel\n"
- "? shop=convenience poi_shop_grocery\n"
- "? shop=chemist poi_shop_drugstore\n"
- "? shop=florist poi_shop_florist\n"
- "? shop=fruit poi_shop_fruit\n"
- "? shop=furniture poi_shop_furniture\n"
- "? shop=garden_centre poi_shop_handg\n"
- "? shop=hardware poi_shop_handg\n"
- "? shop=hairdresser poi_hairdresser\n"
- "? shop=kiosk poi_shop_kiosk\n"
- "? shop=optician poi_shop_optician\n"
- "? shop=parfum poi_shop_parfum\n"
- "? shop=photo poi_shop_photo\n"
- "? shop=shoes poi_shop_shoes\n"
- "? shop=supermarket poi_shopping\n"
- "? shop=mall poi_mall\n"
- "? sport=10pin poi_bowling\n"
- "? sport=baseball poi_baseball\n"
- "? sport=basketball poi_basketball\n"
- "? sport=climbing poi_climbing\n"
- "? sport=golf poi_golf\n"
- "? sport=motor_sports poi_motor_sport\n"
- "? sport=skiing poi_skiing\n"
- "? sport=soccer poi_soccer\n"
- "? sport=stadium poi_stadium\n"
- "? sport=swimming poi_swimming\n"
- "? sport=tennis poi_tennis\n"
- "? tourism=attraction poi_attraction\n"
- "? tourism=camp_site poi_camp_rv\n"
- "? tourism=caravan_site poi_camp_rv\n"
- "? tourism=guest_house poi_guesthouse\n"
- "? tourism=hostel poi_hostel\n"
- "? tourism=hotel poi_hotel\n"
- "? tourism=information poi_information\n"
- "? tourism=motel poi_motel\n"
- "? tourism=museum poi_museum_history\n"
- "? tourism=picnic_site poi_picnic\n"
- "? tourism=theme_park poi_resort\n"
- "? tourism=viewpoint poi_viewpoint\n"
- "? tourism=zoo poi_zoo\n"
- "n traffic_sign=city_limit traffic_sign_city_limit\n"
- "n highway=speed_camera tec_common\n"
- "w *=* street_unkn\n"
- "w addr:interpolation=even house_number_interpolation_even\n"
- "w addr:interpolation=odd house_number_interpolation_odd\n"
- "w addr:interpolation=all house_number_interpolation_all\n"
- "w addr:interpolation=alphabetic house_number_interpolation_alphabetic\n"
- "w aerialway=cable_car lift_cable_car\n"
- "w aerialway=chair_lift lift_chair\n"
- "w aerialway=drag_lift lift_drag\n"
- "w aeroway=aerodrome poly_airport\n"
- "w aeroway=apron poly_apron\n"
- "w aeroway=runway aeroway_runway\n"
- "w aeroway=taxiway aeroway_taxiway\n"
- "w aeroway=terminal poly_terminal\n"
- "w amenity=college poly_college\n"
- "w amenity=grave_yard poly_cemetery\n"
- "w amenity=parking poly_car_parking\n"
- "w amenity=place_of_worship poly_building\n"
- "w amenity=university poly_university\n"
- "w boundary=administrative,admin_level=2 border_country\n"
- "w boundary=civil border_civil\n"
- "w boundary=national_park border_national_park\n"
- "w boundary=political border_political\n"
- "w building=* poly_building\n"
- "w contour_ext=elevation_major height_line_1\n"
- "w contour_ext=elevation_medium height_line_2\n"
- "w contour_ext=elevation_minor height_line_3\n"
- "w highway=bridleway bridleway\n"
- "w highway=bus_guideway bus_guideway\n"
- "w highway=construction street_construction\n"
- "w highway=cyclepath cycleway\n"
- "w highway=cycleway cycleway\n"
- "w highway=footway footway\n"
- "w highway=footway,piste:type=nordic footway_and_piste_nordic\n"
- "w highway=living_street living_street\n"
- "w highway=minor street_1_land\n"
- "w highway=parking_lane street_parking_lane\n"
- "w highway=path path\n"
- "w highway=path,bicycle=designated cycleway\n"
- "w highway=path,bicycle=official cycleway\n"
- "w highway=path,bicycle=designated,foot=designated cycleway\n"
- "w highway=path,bicycle=official,foot=official cycleway\n"
- "w highway=path,foot=designated footway\n"
- "w highway=path,foot=official footway\n"
- "w highway=path,horse=designated bridleway\n"
- "w highway=path,horse=official bridleway\n"
- "w highway=path,sac_scale=alpine_hiking hiking_alpine\n"
- "w highway=path,sac_scale=demanding_alpine_hiking hiking_alpine_demanding\n"
- "w highway=path,sac_scale=demanding_mountain_hiking hiking_mountain_demanding\n"
- "w highway=path,sac_scale=difficult_alpine_hiking hiking_alpine_difficult\n"
- "w highway=path,sac_scale=hiking hiking\n"
- "w highway=path,sac_scale=mountain_hiking hiking_mountain\n"
- "w highway=pedestrian street_pedestrian\n"
- "w highway=pedestrian,area=1 poly_pedestrian\n"
- "w highway=plaza poly_plaza\n"
- "w highway=motorway highway_land\n"
- "w highway=motorway,rural=0 highway_city\n"
- "w highway=motorway_link ramp\n"
- "w highway=trunk street_n_lanes\n"
- "w highway=trunk_link ramp\n"
- "w highway=primary street_4_land\n"
- "w highway=primary,name=*,rural=1 street_4_land\n"
- "w highway=primary,name=* street_4_city\n"
- "w highway=primary,rural=0 street_4_city\n"
- "w highway=primary_link ramp\n"
- "w highway=secondary street_3_land\n"
- "w highway=secondary,name=*,rural=1 street_3_land\n"
- "w highway=secondary,name=* street_3_city\n"
- "w highway=secondary,rural=0 street_3_city\n"
- "w highway=secondary,area=1 poly_street_3\n"
- "w highway=secondary_link ramp\n"
- "w highway=tertiary street_2_land\n"
- "w highway=tertiary,name=*,rural=1 street_2_land\n"
- "w highway=tertiary,name=* street_2_city\n"
- "w highway=tertiary,rural=0 street_2_city\n"
- "w highway=tertiary,area=1 poly_street_2\n"
- "w highway=tertiary_link ramp\n"
- "w highway=residential street_1_city\n"
- "w highway=residential,area=1 poly_street_1\n"
- "w highway=unclassified street_1_city\n"
- "w highway=unclassified,area=1 poly_street_1\n"
- "w highway=road street_1_city\n"
- "w highway=service street_service\n"
- "w highway=service,area=1 poly_service\n"
- "w highway=service,service=parking_aisle street_parking_lane\n"
- "w highway=track track_gravelled\n"
- "w highway=track,surface=grass track_grass\n"
- "w highway=track,surface=gravel track_gravelled\n"
- "w highway=track,surface=ground track_ground\n"
- "w highway=track,surface=paved track_paved\n"
- "w highway=track,surface=unpaved track_unpaved\n"
- "w highway=track,tracktype=grade1 track_paved\n"
- "w highway=track,tracktype=grade2 track_gravelled\n"
- "w highway=track,tracktype=grade3 track_unpaved\n"
- "w highway=track,tracktype=grade4 track_ground\n"
- "w highway=track,tracktype=grade5 track_grass\n"
- "w highway=track,surface=paved,tracktype=grade1 track_paved\n"
- "w highway=track,surface=gravel,tracktype=grade2 track_gravelled\n"
- "w highway=track,surface=unpaved,tracktype=grade3 track_unpaved\n"
- "w highway=track,surface=ground,tracktype=grade4 track_ground\n"
- "w highway=track,surface=grass,tracktype=grade5 track_grass\n"
- "w highway=unsurfaced track_gravelled\n"
- "w highway=steps steps\n"
- "w historic=archaeological_site poly_archaeological_site\n"
- "w historic=battlefield poly_battlefield\n"
- "w historic=ruins poly_ruins\n"
- "w historic=town_gate poly_building\n"
- "w landuse=allotments poly_allotments\n"
- "w landuse=basin poly_basin\n"
- "w landuse=brownfield poly_brownfield\n"
- "w landuse=cemetery poly_cemetery\n"
- "w landuse=commercial poly_commercial\n"
- "w landuse=construction poly_construction\n"
- "w landuse=farm poly_farm\n"
- "w landuse=farmland poly_farm\n"
- "w landuse=farmyard poly_town\n"
- "w landuse=forest poly_wood\n"
- "w landuse=grass poly_meadow\n"
- "w landuse=greenfield poly_greenfield\n"
- "w landuse=industrial poly_industry\n"
- "w landuse=landfill poly_landfill\n"
- "w landuse=military poly_military\n"
- "w landuse=meadow poly_meadow\n"
- "w landuse=plaza poly_plaza\n"
- "w landuse=quarry poly_quarry\n"
- "w landuse=railway poly_railway\n"
- "w landuse=recreation_ground poly_recreation_ground\n"
- "w landuse=reservoir poly_reservoir\n"
- "w landuse=residential poly_town\n"
- "w landuse=residential,area=1 poly_town\n"
- "w landuse=retail poly_retail\n"
- "w landuse=village_green poly_village_green\n"
- "w landuse=vineyard poly_farm\n"
- "w landuse=depot poly_depot\n"
- "w landuse=garages poly_garages\n"
- "w landuse=greenhouse_horticulture poly_greenhouse\n"
- "w landuse=orchard poly_orchard\n"
- "w landuse=plant_nursery poly_plantnursery\n"
- "w landuse=port poly_port\n"
- "w landuse=salt_pond poly_saltpond\n"
- "w leisure=common poly_common\n"
- "w leisure=fishing poly_fishing\n"
- "w leisure=garden poly_garden\n"
- "w leisure=golf_course poly_golf_course\n"
- "w leisure=marina poly_marina\n"
- "w leisure=nature_reserve poly_nature_reserve\n"
- "w leisure=park poly_park\n"
- "w leisure=pitch poly_sports_pitch\n"
- "w leisure=playground poly_playground\n"
- "w leisure=sports_centre poly_sport\n"
- "w leisure=stadium poly_sports_stadium\n"
- "w leisure=track poly_sports_track\n"
- "w leisure=water_park poly_water_park\n"
- "w military=airfield poly_airfield\n"
- "w military=barracks poly_barracks\n"
- "w military=danger_area poly_danger_area\n"
- "w military=naval_base poly_naval_base\n"
- "w military=range poly_range\n"
- "w natural=beach poly_beach\n"
- "w natural=coastline water_line\n"
- "w natural=fell poly_fell\n"
- "w natural=glacier poly_glacier\n"
- "w natural=grassland poly_meadow\n"
- "w natural=heath poly_heath\n"
- "w natural=land poly_land\n"
- "w natural=marsh poly_marsh\n"
- "w natural=meadow poly_meadow\n"
- "w natural=mud poly_mud\n"
- "w natural=sand poly_beach\n"
- "w natural=scree poly_scree\n"
- "w natural=scrub poly_scrub\n"
- "w natural=water poly_water\n"
- "w natural=wetland poly_mud\n"
- "w natural=wood poly_wood\n"
- "w piste:type=downhill,piste:difficulty=advanced piste_downhill_advanced\n"
- "w piste:type=downhill,piste:difficulty=easy piste_downhill_easy\n"
- "w piste:type=downhill,piste:difficulty=expert piste_downhill_expert\n"
- "w piste:type=downhill,piste:difficulty=freeride piste_downhill_freeride\n"
- "w piste:type=downhill,piste:difficulty=intermediate piste_downhill_intermediate\n"
- "w piste:type=downhill,piste:difficulty=novice piste_downhill_novice\n"
- "w piste:type=nordic piste_nordic\n"
- "w place=suburb poly_place1\n"
- "w place=hamlet poly_place2\n"
- "w place=isolated_dwelling poly_place2\n"
- "w place=locality poly_place2\n"
- "w place=village poly_place3\n"
- "w place=municipality poly_place4\n"
- "w place=town poly_place5\n"
- "w place=city poly_place6\n"
- "w de:place=city poly_place6\n"
- "w power=line powerline\n"
- "w railway=abandoned rail_abandoned\n"
- "w railway=disused rail_disused\n"
- "w railway=light_rail rail_light\n"
- "w railway=monorail rail_mono\n"
- "w railway=narrow_gauge rail_narrow_gauge\n"
- "w railway=preserved rail_preserved\n"
- "w railway=rail rail\n"
- "w railway=subway rail_subway\n"
- "w railway=tram rail_tram\n"
- "w route=ferry ferry\n"
- "w route=ski piste_nordic\n"
- "w sport=* poly_sport\n"
- "w tourism=artwork poly_artwork\n"
- "w tourism=attraction poly_attraction\n"
- "w tourism=camp_site poly_camp_site\n"
- "w tourism=caravan_site poly_caravan_site\n"
- "w tourism=picnic_site poly_picnic_site\n"
- "w tourism=theme_park poly_theme_park\n"
- "w tourism=zoo poly_zoo\n"
- "w waterway=canal water_canal\n"
- "w waterway=drain water_drain\n"
- "w waterway=river water_river\n"
- "w waterway=riverbank poly_water\n"
- "w waterway=stream water_stream\n"
- "w barrier=ditch ditch\n"
- "w barrier=hedge hedge\n"
- "w barrier=fence fence\n"
- "w barrier=wall wall\n"
- "w barrier=retaining_wall retaining_wall\n"
- "w barrier=city_wall city_wall\n"
-};
-
-static void
-build_attrmap_line(char *line)
-{
- char *t=NULL,*kvl=NULL,*i=NULL,*p,*kv;
- struct attr_mapping *attr_mapping=g_malloc0(sizeof(struct attr_mapping));
- int idx,attr_mapping_count=0;
- t=line;
- p=strpbrk(t," \t");
- if (p) {
- while (*p && isspace(*p))
- *p++='\0';
- kvl=p;
- p=strpbrk(kvl," \t");;
- }
- if (p) {
- while (*p && isspace(*p))
- *p++='\0';
- i=p;
- }
- if (t[0] == 'w') {
- if (! i)
- i="street_unkn";
- } else {
- if (! i)
- i="point_unkn";
- }
- attr_mapping->type=item_from_name(i);
- if (!attr_mapping->type) {
- printf("no id found for '%s'\n",i);
- }
- while ((kv=strtok(kvl, ","))) {
- kvl=NULL;
- if (!(idx=(int)(long)g_hash_table_lookup(attr_hash, kv))) {
- idx=attr_present_count++;
- g_hash_table_insert(attr_hash, kv, (gpointer)(long long)idx);
- }
- attr_mapping=g_realloc(attr_mapping, sizeof(struct attr_mapping)+(attr_mapping_count+1)*sizeof(int));
- attr_mapping->attr_present_idx[attr_mapping_count++]=idx;
- attr_mapping->attr_present_idx_count=attr_mapping_count;
- }
- if (t[0]== 'w') {
- attr_mapping_way=g_realloc(attr_mapping_way, sizeof(*attr_mapping_way)*(attr_mapping_way_count+1));
- attr_mapping_way[attr_mapping_way_count++]=attr_mapping;
- if(item_is_poly_place(*attr_mapping)) {
- attr_mapping_rel2poly_place=g_realloc(attr_mapping_rel2poly_place, sizeof(*attr_mapping_rel2poly_place)*(attr_mapping_rel2poly_place_count+1));
- attr_mapping_rel2poly_place[attr_mapping_rel2poly_place_count++]=attr_mapping;
- }
- }
- if (t[0]== '?') {
- attr_mapping_way2poi=g_realloc(attr_mapping_way2poi, sizeof(*attr_mapping_way2poi)*(attr_mapping_way2poi_count+1));
- attr_mapping_way2poi[attr_mapping_way2poi_count++]=attr_mapping;
- }
- if (t[0]!= 'w') {
- attr_mapping_node=g_realloc(attr_mapping_node, sizeof(*attr_mapping_node)*(attr_mapping_node_count+1));
- attr_mapping_node[attr_mapping_node_count++]=attr_mapping;
- }
-
-}
-
-static void
-build_attrmap(FILE* rule_file)
-{
- attr_hash=g_hash_table_new(g_str_hash, g_str_equal);
- attr_present_count=1;
-
- // build attribute map from rule file if given
- if( rule_file )
- {
- char buffer[200], *p;
- while (fgets( buffer, 200, rule_file )) {
- p=strchr(buffer,'\n');
- if(p)
- *p = 0;
- build_attrmap_line( g_strdup( buffer ) );
- }
- fclose( rule_file );
- }
- // use hardcoded default attributes
- else
- {
- char *p,*map=g_strdup(attrmap);
- while (map) {
- p=strchr(map,'\n');
- if (p)
- *p++='\0';
- if (strlen(map))
- build_attrmap_line(map);
- map=p;
- }
- }
-
- attr_present=g_malloc0(sizeof(*attr_present)*attr_present_count);
-}
-
-static void
-build_countrytable(void)
-{
- int i;
- char *names,*str,*tok;
- country_table_hash=g_hash_table_new(g_str_hash, g_str_equal);
- for (i = 0 ; i < sizeof(country_table)/sizeof(struct country_table) ; i++) {
- names=g_strdup(country_table[i].names);
- str=names;
- while ((tok=strtok(str, ","))) {
- str=NULL;
- g_hash_table_insert(country_table_hash, tok, (gpointer)&country_table[i]);
- }
- }
-}
-
-static void
-osm_logv(char *prefix, char *objtype, osmid id, int cont, struct coord_geo *geo, char *fmt, va_list ap)
-{
- char str[4096];
- vsnprintf(str, sizeof(str), fmt, ap);
- if(cont)
- prefix="";
- if(objtype)
- fprintf(stderr,"%shttp://www.openstreetmap.org/%s/"OSMID_FMT" %s", prefix, objtype, id, str);
- else if(geo)
- fprintf(stderr,"%shttp://www.openstreetmap.org/#map=19/%.5f/%.5f %s",prefix, geo->lat, geo->lng, str);
- else
- fprintf(stderr,"%s[no osm object info] %s",prefix, str);
-}
-
-void
-osm_warning(char *type, osmid id, int cont, char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- osm_logv("OSM Warning:", type, id, cont, NULL, fmt, ap);
- va_end(ap);
-}
-
-void
-osm_info(char *type, osmid id, int cont, char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- osm_logv("OSM Info:", type, id, cont, NULL, fmt, ap);
- va_end(ap);
-}
-
-static void
-itembin_warning(struct item_bin *ib, int cont, char *fmt, ...)
-{
- char *type=NULL;
- osmid id;
- struct coord_geo geo;
- va_list ap;
- if(0!=(id=item_bin_get_nodeid(ib))) {
- type="node";
- } else if(0!=(id=item_bin_get_wayid(ib))) {
- type="way";
- } else if(0!=(id=item_bin_get_relationid(ib))) {
- type="relation";
- } else {
- struct coord *c=(struct coord *)(ib+1);
- transform_to_geo(projection_mg, c, &geo);
- }
-
- va_start(ap, fmt);
- osm_logv("OSM Warning:", type, id, cont, &geo, fmt, ap);
- va_end(ap);
-}
-
-static void
-attr_strings_clear(void)
-{
- attr_strings_buffer_free_offset=0;
- memset(attr_strings, 0, sizeof(attr_strings));
-}
-
-static void
-attr_strings_save(enum attr_strings_type id, char *str)
-{
- int str_size=strlen(str)+1;
- dbg_assert(attr_strings_buffer_free_offset+str_size<sizeof(attr_strings_buffer));
- attr_strings[id]=attr_strings_buffer+attr_strings_buffer_free_offset;
- g_strlcpy(attr_strings[id], str, str_size);
- attr_strings_buffer_free_offset+=str_size;
-}
-
-static osmid
-item_bin_get_nodeid_from_attr(struct item_bin *ib, enum attr_type attr_type)
-{
- unsigned long long *ret=item_bin_get_attr(ib, attr_type, NULL);
- if (ret)
- return *ret;
- return 0;
-}
-
-osmid
-item_bin_get_nodeid(struct item_bin *ib)
-{
- return item_bin_get_nodeid_from_attr(ib, attr_osm_nodeid);
-}
-
-osmid
-item_bin_get_wayid(struct item_bin *ib)
-{
- unsigned long long *ret=item_bin_get_attr(ib, attr_osm_wayid, NULL);
- if (ret)
- return *ret;
- return 0;
-}
-
-osmid
-item_bin_get_relationid(struct item_bin *ib)
-{
- unsigned long long *ret=item_bin_get_attr(ib, attr_osm_relationid, NULL);
- if (ret)
- return *ret;
- return 0;
-}
-
-osmid
-item_bin_get_id(struct item_bin *ib)
-{
- osmid ret;
- if (ib->type < 0x80000000)
- return item_bin_get_nodeid(ib);
- ret=item_bin_get_wayid(ib);
- if (!ret)
- ret=item_bin_get_relationid(ib);
- return ret;
-}
-
-static int node_is_tagged;
-static void relation_add_tag(char *k, char *v);
-
-static int
-access_value(char *v)
-{
- if (!strcmp(v,"1"))
- return 1;
- if (!strcmp(v,"yes"))
- return 1;
- if (!strcmp(v,"designated"))
- return 1;
- if (!strcmp(v,"official"))
- return 1;
- if (!strcmp(v,"permissive"))
- return 1;
- if (!strcmp(v,"0"))
- return 2;
- if (!strcmp(v,"no"))
- return 2;
- if (!strcmp(v,"agricultural"))
- return 2;
- if (!strcmp(v,"forestry"))
- return 2;
- if (!strcmp(v,"private"))
- return 2;
- if (!strcmp(v,"delivery"))
- return 2;
- if (!strcmp(v,"destination"))
- return 2;
- return 3;
-}
-
-static void
-osm_update_attr_present(char *k, char *v);
-
-void
-osm_add_tag(char *k, char *v)
-{
- int level=2;
- if (in_relation) {
- relation_add_tag(k,v);
- return;
- }
- if (! strcmp(k,"ele")){
- attr_strings_save(attr_string_label, v);
- level=9;
- }
- if (! strcmp(k,"time"))
- level=9;
- if (! strcmp(k,"created_by"))
- level=9;
- if (! strncmp(k,"tiger:",6) || !strcmp(k,"AND_nodes"))
- level=9;
- if (! strcmp(k,"converted_by") || ! strcmp(k,"source"))
- level=8;
- if (! strncmp(k,"osmarender:",11) || !strncmp(k,"svg:",4))
- level=8;
- if (! strcmp(k,"layer"))
- level=7;
- if (! strcasecmp(v,"true") || ! strcasecmp(v,"yes"))
- v="1";
- if (! strcasecmp(v,"false") || ! strcasecmp(v,"no"))
- v="0";
- if (! strcmp(k,"oneway")) {
- if (!strcmp(v,"1")) {
- flags[0] |= AF_ONEWAY | AF_ROUNDABOUT_VALID;
- }
- if (! strcmp(v,"-1")) {
- flags[0] |= AF_ONEWAYREV | AF_ROUNDABOUT_VALID;
- }
- if (!in_way)
- level=6;
- else
- level=5;
- }
- if (! strcmp(k,"junction")) {
- if (! strcmp(v,"roundabout"))
- flags[0] |= AF_ONEWAY | AF_ROUNDABOUT | AF_ROUNDABOUT_VALID;
- }
- if (! strcmp(k,"maxspeed")) {
- if (strstr(v, "mph")) {
- maxspeed_attr_value = (int)floor(atof(v) * 1.609344);
- } else {
- maxspeed_attr_value = atoi(v);
- }
- if (maxspeed_attr_value)
- flags[0] |= AF_SPEED_LIMIT;
- level=5;
- }
- if (! strcmp(k,"toll")) {
- if (!strcmp(v,"1")) {
- flags[0] |= AF_TOLL;
- }
- }
- if (! strcmp(k,"access")) {
- if (strcmp(v,"destination"))
- flagsa[access_value(v)] |= AF_DANGEROUS_GOODS|AF_EMERGENCY_VEHICLES|AF_TRANSPORT_TRUCK|AF_DELIVERY_TRUCK|AF_PUBLIC_BUS|AF_TAXI|AF_HIGH_OCCUPANCY_CAR|AF_CAR|AF_MOTORCYCLE|AF_MOPED|AF_HORSE|AF_BIKE|AF_PEDESTRIAN;
- else
- flags[0] |= AF_THROUGH_TRAFFIC_LIMIT;
- if (! strcmp(v,"hov"))
- flags[0] |= AF_HIGH_OCCUPANCY_CAR_ONLY;
- level=5;
- }
- if (! strcmp(k,"vehicle")) {
- flags[access_value(v)] |= AF_DANGEROUS_GOODS|AF_EMERGENCY_VEHICLES|AF_TRANSPORT_TRUCK|AF_DELIVERY_TRUCK|AF_PUBLIC_BUS|AF_TAXI|AF_HIGH_OCCUPANCY_CAR|AF_CAR|AF_MOTORCYCLE|AF_MOPED|AF_BIKE;
- level=5;
- }
- if (! strcmp(k,"motor_vehicle")) {
- flags[access_value(v)] |= AF_DANGEROUS_GOODS|AF_EMERGENCY_VEHICLES|AF_TRANSPORT_TRUCK|AF_DELIVERY_TRUCK|AF_PUBLIC_BUS|AF_TAXI|AF_HIGH_OCCUPANCY_CAR|AF_CAR|AF_MOTORCYCLE|AF_MOPED;
- level=5;
- }
- if (! strcmp(k,"bicycle")) {
- flags[access_value(v)] |= AF_BIKE;
- level=5;
- }
- if (! strcmp(k,"foot")) {
- flags[access_value(v)] |= AF_PEDESTRIAN;
- level=5;
- }
- if (! strcmp(k,"horse")) {
- flags[access_value(v)] |= AF_HORSE;
- level=5;
- }
- if (! strcmp(k,"moped")) {
- flags[access_value(v)] |= AF_MOPED;
- level=5;
- }
- if (! strcmp(k,"motorcycle")) {
- flags[access_value(v)] |= AF_MOTORCYCLE;
- level=5;
- }
- if (! strcmp(k,"motorcar")) {
- flags[access_value(v)] |= AF_CAR;
- level=5;
- }
- if (! strcmp(k,"hov")) {
- flags[access_value(v)] |= AF_HIGH_OCCUPANCY_CAR;
- level=5;
- }
- if (! strcmp(k,"bus")) {
- flags[access_value(v)] |= AF_PUBLIC_BUS;
- level=5;
- }
- if (! strcmp(k,"taxi")) {
- flags[access_value(v)] |= AF_TAXI;
- level=5;
- }
- if (! strcmp(k,"goods")) {
- flags[access_value(v)] |= AF_DELIVERY_TRUCK;
- level=5;
- }
- if (! strcmp(k,"hgv")) {
- flags[access_value(v)] |= AF_TRANSPORT_TRUCK;
- level=5;
- }
- if (! strcmp(k,"emergency")) {
- flags[access_value(v)] |= AF_EMERGENCY_VEHICLES;
- level=5;
- }
- if (! strcmp(k,"hazmat")) {
- flags[access_value(v)] |= AF_DANGEROUS_GOODS;
- level=5;
- }
- if (! strcmp(k,"tunnel") && !strcmp(v,"1")) {
- flags[0] |= AF_UNDERGROUND;
- }
- if (! strcmp(k,"note"))
- level=5;
- if (! strcmp(k,"name")) {
- attr_strings_save(attr_string_label, v);
- level=5;
- }
- if (! strcmp(k,"addr:email")) {
- attr_strings_save(attr_string_email, v);
- level=5;
- }
- if (! strcmp(k,"addr:suburb")) {
- attr_strings_save(attr_string_district_name, v);
- level=5;
- }
- if (! strcmp(k,"addr:housenumber")) {
- attr_strings_save(attr_string_house_number, v);
- level=5;
- }
- if (! strcmp(k,"addr:street")) {
- attr_strings_save(attr_string_street_name, v);
- level=5;
- }
- if (! strcmp(k,"phone")) {
- attr_strings_save(attr_string_phone, v);
- level=5;
- }
- if (! strcmp(k,"fax")) {
- attr_strings_save(attr_string_fax, v);
- level=5;
- }
- if (! strcmp(k,"postal_code")) {
- attr_strings_save(attr_string_postal, v);
- level=5;
- }
- if (! strcmp(k,"addr:postcode") && !attr_strings[attr_string_postal]) {
- attr_strings_save(attr_string_postal, v);
- level=5;
- }
- if (! strcmp(k,"openGeoDB:postal_codes") && !attr_strings[attr_string_postal]) {
- attr_strings_save(attr_string_postal, v);
- level=5;
- }
- if (! strcmp(k,"population")) {
- attr_strings_save(attr_string_population, v);
- level=5;
- }
- if (! strcmp(k,"openGeoDB:population") && !attr_strings[attr_string_population]) {
- attr_strings_save(attr_string_population, v);
- level=5;
- }
- if ((! strcmp(k,"ref")) || (! strcmp(k,"destination:ref"))) {
- if (in_way)
- attr_strings_save(attr_string_street_name_systematic, v);
- /* for exit number of highway_exit poi */
- else attr_strings_save(attr_string_ref, v);
- level=5;
- }
- if (! strcmp(k,"nat_ref")) {
- if (in_way)
- attr_strings_save(attr_string_street_name_systematic_nat, v);
- level=5;
- }
- if (! strcmp(k,"int_ref")) {
- if (in_way)
- attr_strings_save(attr_string_street_name_systematic_int, v);
- level=5;
- }
- if (! strcmp(k,"destination")) {
- if (in_way)
- attr_strings_save(attr_string_street_destination, v);
- level=5;
- }
- if (! strcmp(k,"destination:forward"))
- {
- if (in_way)
- attr_strings_save(attr_string_street_destination_forward, v);
- level=5;
- }
- if (! strcmp(k,"destination:backward"))
- {
- if (in_way)
- attr_strings_save(attr_string_street_destination_backward, v);
- level=5;
- }
- if (! strcmp(k,"exit_to")) {
- attr_strings_save(attr_string_exit_to, v);
- level=5;
- }
- if (! strcmp(k,"openGeoDB:is_in")) {
- if (!is_in_buffer[0])
- g_strlcpy(is_in_buffer, v, sizeof(is_in_buffer));
- level=5;
- }
- if (! strcmp(k,"is_in")) {
- if (!is_in_buffer[0])
- g_strlcpy(is_in_buffer, v, sizeof(is_in_buffer));
- level=5;
- }
- if (! strcmp(k,"is_in:country")) {
- /**
- * Sometimes there is no is_in tag, only is_in:country.
- * I put this here so it can be overwritten by the previous if clause if there IS an is_in tag.
- */
- g_strlcpy(is_in_buffer, v, sizeof(is_in_buffer));
- level=5;
- }
- if (! strcmp(k,"place_county")) {
- /**
- * Ireland uses the place_county OSM tag to describe what county a town is in.
- * This would be equivalent to is_in: Town; Locality; Country
- * A real world example would be Node: Moycullen (52234625)
- * The tag is processed as Moycullen; Galway; Ireland
- * where Galway is the county
- */
- g_strlcpy(is_in_buffer, "Ireland", sizeof(is_in_buffer));
- attr_strings_save(attr_string_county_name, v);
- level=5;
- }
- if (! strcmp(k,"gnis:ST_alpha")) {
- /* assume a gnis tag means it is part of the USA:
- http://en.wikipedia.org/wiki/Geographic_Names_Information_System
- many US towns do not have is_in tags
- */
- g_strlcpy(is_in_buffer, "USA", sizeof(is_in_buffer));
- level=5;
- }
- if (! strcmp(k,"lanes")) {
- level=5;
- }
- if (attr_debug_level >= level) {
- int bytes_left = sizeof( debug_attr_buffer ) - strlen(debug_attr_buffer) - 1;
- if ( bytes_left > 0 )
- {
- snprintf(debug_attr_buffer+strlen(debug_attr_buffer), bytes_left, " %s=%s", k, v);
- debug_attr_buffer[ sizeof( debug_attr_buffer ) - 1 ] = '\0';
- node_is_tagged=1;
- }
- }
- if (level < 6)
- node_is_tagged=1;
-
- osm_update_attr_present(k, v);
-}
-
-static void
-osm_update_attr_present(char *k, char *v)
-{
- const int bufsize=BUFFER_SIZE*2+2;
- int idx;
- char *p, buffer[bufsize];
-
- g_strlcpy(buffer,"*=*", bufsize);
- if ((idx=(int)(long)g_hash_table_lookup(attr_hash, buffer))) {
- dbg_assert(idx<attr_present_count);
- attr_present[idx]=1;
- }
-
- snprintf(buffer,bufsize,"%s=*", k);
- for(p=buffer;*p;p++)
- if(isspace(*p)) *p='_';
- if ((idx=(int)(long)g_hash_table_lookup(attr_hash, buffer))) {
- dbg_assert(idx<attr_present_count);
- attr_present[idx]=2;
- }
-
- snprintf(buffer,bufsize,"*=%s", v);
- for(p=buffer;*p;p++)
- if(isspace(*p)) *p='_';
- if ((idx=(int)(long)g_hash_table_lookup(attr_hash, buffer))) {
- dbg_assert(idx<attr_present_count);
- attr_present[idx]=2;
- }
-
- snprintf(buffer,bufsize,"%s=%s", k, v);
- for(p=buffer;*p;p++)
- if(isspace(*p)) *p='_';
- if ((idx=(int)(long)g_hash_table_lookup(attr_hash, buffer))) {
- dbg_assert(idx<attr_present_count);
- attr_present[idx]=4;
- }
-}
-
-int coord_count;
-
-static void
-extend_buffer(struct buffer *b)
-{
- b->malloced+=b->malloced_step;
- b->base=realloc(b->base, b->malloced);
- if (b->base == NULL) {
- fprintf(stderr,"realloc of %d bytes failed\n",(int)b->malloced);
- exit(1);
- }
-
-}
-
-/** The node currently being processed. */
-static struct node_item *current_node;
-/** ID of the last node processed. */
-osmid id_last_node;
-GHashTable *node_hash,*way_hash;
-
-static void
-node_buffer_to_hash(void)
-{
- int i,count=node_buffer.size/sizeof(struct node_item);
- struct node_item *ni=(struct node_item *)node_buffer.base;
-
- for (i = 0 ; i < count ; i++)
- g_hash_table_insert(node_hash, (gpointer)(long long)(ni[i].nd_id), (gpointer)(long long)i);
-}
-
-void
-flush_nodes(int final)
-{
- fprintf(stderr,"flush_nodes %d\n",final);
- save_buffer("coords.tmp",&node_buffer,slices*slice_size);
- if (!final) {
- node_buffer.size=0;
- }
- slices++;
-}
-
-static struct node_item*
-allocate_node_item_in_buffer(void) {
- struct node_item* new_node;
- if (node_buffer.size + sizeof(struct node_item) > node_buffer.malloced)
- extend_buffer(&node_buffer);
- if (node_buffer.size + sizeof(struct node_item) > slice_size) {
- flush_nodes(0);
- }
- new_node=(struct node_item *)(node_buffer.base+node_buffer.size);
- node_buffer.size+=sizeof(struct node_item);
- return new_node;
-}
-
-static void
-remove_last_node_item_from_buffer(void) {
- node_buffer.size-=sizeof(struct node_item);
-}
-
-void
-osm_add_node(osmid id, double lat, double lon)
-{
- in_node=1;
- attr_strings_clear();
- node_is_tagged=0;
- nodeid=id;
- item.type=type_point_unkn;
- debug_attr_buffer[0]='\0';
- is_in_buffer[0]='\0';
- debug_attr_buffer[0]='\0';
- osmid_attr.type=attr_osm_nodeid;
- osmid_attr.len=3;
- osmid_attr_value=id;
-
- current_node=allocate_node_item_in_buffer();
- dbg_assert(id < ((2ull<<NODE_ID_BITS)-1));
- current_node->nd_id=id;
- current_node->ref_way=0;
- current_node->c.x=lon*6371000.0*M_PI/180;
- current_node->c.y=log(tan(M_PI_4+lat*M_PI/360))*6371000.0;
- if (! node_hash) {
- if (current_node->nd_id > id_last_node) {
- id_last_node=current_node->nd_id;
- } else {
- fprintf(stderr,"INFO: Nodes out of sequence (new " OSMID_FMT " vs old " OSMID_FMT "), adding hash\n",
- (osmid)current_node->nd_id, id_last_node);
- node_hash=g_hash_table_new(NULL, NULL);
- node_buffer_to_hash();
- }
- } else
- if (!g_hash_table_lookup(node_hash, (gpointer)(long long)(current_node->nd_id)))
- g_hash_table_insert(node_hash, (gpointer)(long long)(current_node->nd_id),
- (gpointer)(long long)(current_node-(struct node_item *)node_buffer.base));
- else {
- remove_last_node_item_from_buffer();
- nodeid=0;
- }
-
-}
-
-void
-clear_node_item_buffer(void)
-{
- int j,count=node_buffer.size/sizeof(struct node_item);
- struct node_item *ni=(struct node_item *)(node_buffer.base);
- for (j = 0 ; j < count ; j++) {
- ni[j].ref_way=0;
- }
-}
-
-static long long
-node_item_find_index_in_ordered_list(osmid id)
-{
- struct node_item *node_buffer_base=(struct node_item *)(node_buffer.base);
- long long node_count=node_buffer.size/sizeof(struct node_item);
- long long search_step=node_count>4 ? node_count/4 : 1;
- long long search_index=node_count/2;
- if (node_buffer_base[0].nd_id > id)
- return -1;
- if (node_buffer_base[node_count-1].nd_id < id)
- return -1;
- while (node_buffer_base[search_index].nd_id != id) {
-#if 0
- fprintf(stderr,"search_index=%d node_count=%d search_step=%d id=%d node_buffer_base[search_index].id=%d\n",
- search_index, node_count, search_step, id, node_buffer_base[search_index].id);
-#endif
- if (node_buffer_base[search_index].nd_id < id) {
- search_index+=search_step;
- if (search_step == 1) {
- if (search_index >= node_count)
- return -1;
- if (node_buffer_base[search_index].nd_id > id)
- return -1;
- } else {
- if (search_index >= node_count)
- search_index=node_count-1;
- }
- } else {
- search_index-=search_step;
- if (search_step == 1) {
- if (search_index < 0)
- return -1;
- if (node_buffer_base[search_index].nd_id < id)
- return -1;
- } else {
- if (search_index < 0)
- search_index=0;
- }
- }
- if (search_step > 1)
- search_step/=2;
- }
- return search_index;
-}
-
-static struct node_item *
-node_item_get(osmid id)
-{
- struct node_item *node_buffer_base=(struct node_item *)(node_buffer.base);
- long long result_index;
- if (node_hash) {
- // Use g_hash_table_lookup_extended instead of g_hash_table_lookup
- // to distinguish a key with a value 0 from a missing key.
- if (!g_hash_table_lookup_extended (node_hash, (gpointer)(id), NULL,
- (gpointer)&result_index)) {
- result_index=-1;
- }
- } else {
- result_index=node_item_find_index_in_ordered_list(id);
- }
- return result_index!=-1 ? node_buffer_base+result_index : NULL;
-}
-
-#if 0
-static int
-load_node(FILE *coords, int p, struct node_item *ret)
-{
- fseek(coords, p*sizeof(struct node_item), SEEK_SET);
- if (fread(ret, sizeof(*ret), 1, coords) != 1) {
- fprintf(stderr,"read failed\n");
- return 0;
- }
- return 1;
-}
-#endif
-
-#if 0
-static int
-node_item_get_from_file(FILE *coords, osmid id, struct node_item *ret)
-{
- int count;
- int interval;
- int p;
- if (node_hash) {
- int i;
- i=(int)(long)(g_hash_table_lookup(node_hash, (gpointer)(long)id));
- fseek(coords, i*sizeof(*ret), SEEK_SET);
- if (fread(ret, sizeof(*ret), 1, coords) == 1)
- return 1;
- else
- return 0;
- }
-
- fseek(coords, 0, SEEK_END);
- count=ftello(coords)/sizeof(struct node_item);
- interval=count/4;
- p=count/2;
- if(interval==0) {
- // If fewer than 4 nodes defined so far set interval to 1 to
- // avoid infinite loop
- interval = 1;
- }
- if (!load_node(coords, p, ret))
- return 0;
- for (;;) {
- if (ret->id == id)
- return 1;
- if (ret->id < id) {
- p+=interval;
- if (interval == 1) {
- if (p >= count)
- return 0;
- if (!load_node(coords, p, ret))
- return 0;
- if (ret->id > id)
- return 0;
- } else {
- if (p >= count)
- p=count-1;
- if (!load_node(coords, p, ret))
- return 0;
- }
- } else {
- p-=interval;
- if (interval == 1) {
- if (p < 0)
- return 0;
- if (!load_node(coords, p, ret))
- return 0;
- if (ret->id < id)
- return 0;
- } else {
- if (p < 0)
- p=0;
- if (!load_node(coords, p, ret))
- return 0;
- }
- }
- if (interval > 1)
- interval/=2;
- }
-}
-#endif
-void
-osm_add_way(osmid id)
-{
- static osmid wayid_last;
-
- in_way=1;
- wayid=id;
- coord_count=0;
- attr_strings_clear();
- item.type=type_street_unkn;
- debug_attr_buffer[0]='\0';
- maxspeed_attr_value=0;
- flags_attr_value = 0;
- memset(flags, 0, sizeof(flags));
- memset(flagsa, 0, sizeof(flagsa));
- debug_attr_buffer[0]='\0';
- osmid_attr_value=id;
- if (wayid < wayid_last && !way_hash) {
- fprintf(stderr,"INFO: Ways out of sequence (new "OSMID_FMT" vs old "OSMID_FMT"), adding hash\n", wayid, wayid_last);
- way_hash=g_hash_table_new(NULL, NULL);
- }
- wayid_last=wayid;
-}
-
-char relation_type[BUFFER_SIZE];
-char iso_code[BUFFER_SIZE];
-int boundary;
-
-void
-osm_add_relation(osmid id)
-{
- osmid_attr_value=id;
- in_relation=1;
- debug_attr_buffer[0]='\0';
- relation_type[0]='\0';
- iso_code[0]='\0';
- boundary=0;
- item_bin_init(tmp_item_bin, type_none);
- item_bin_add_attr_longlong(tmp_item_bin, attr_osm_relationid, osmid_attr_value);
-}
-
-static int
-country_id_from_iso2(char *iso)
-{
- int ret=0;
- if (iso) {
- struct country_search *search;
- struct attr country_iso2,country_id;
- struct item *item;
- country_iso2.type=attr_country_iso2;
- country_iso2.u.str=iso;
- search=country_search_new(&country_iso2,0);
- if ((item=country_search_get_item(search)) && item_attr_get(item, attr_country_id, &country_id))
- ret=country_id.u.num;
-
- country_search_destroy(search);
- }
- return ret;
-}
-
-static struct country_table *
-country_from_countryid(int id)
-{
- int i;
- for (i = 0 ; i < sizeof(country_table)/sizeof(struct country_table) ; i++) {
- if (country_table[i].countryid == id)
- return &country_table[i];
- }
- return NULL;
-}
-
-struct country_table *
-country_from_iso2(char *iso)
-{
- return country_from_countryid(country_id_from_iso2(iso));
-}
-
-
-void
-osm_end_relation(struct maptool_osm *osm)
-{
- enum item_type type;
-
- in_relation=0;
-
- if(attr_longest_match(attr_mapping_rel2poly_place, attr_mapping_rel2poly_place_count, &type, 1)) {
- tmp_item_bin->type=type;
- }
- else
- type=type_none;
-
- if ((!strcmp(relation_type, "multipolygon") || !strcmp(relation_type, "boundary")) && (boundary || type!=type_none)) {
- item_bin_write(tmp_item_bin, osm->boundaries);
- }
-
- if (!strcmp(relation_type, "restriction") && (tmp_item_bin->type == type_street_turn_restriction_no || tmp_item_bin->type == type_street_turn_restriction_only))
- item_bin_write(tmp_item_bin, osm->turn_restrictions);
-
- if (!strcmp(relation_type, "associatedStreet") )
- item_bin_write(tmp_item_bin, osm->associated_streets);
-
- attr_longest_match_clear();
-}
-
-void
-osm_add_member(enum relation_member_type type, osmid ref, char *role)
-{
- const int bufsize=BUFFER_SIZE*3+3;
- char member_buffer[bufsize];
- struct attr memberattr = { attr_osm_member };
-
- snprintf(member_buffer,bufsize, RELATION_MEMBER_PRINT_FORMAT, (int)type, (long long) ref, role);
- memberattr.u.str=member_buffer;
- item_bin_add_attr(tmp_item_bin, &memberattr);
-}
-
-static void
-relation_add_tag(char *k, char *v)
-{
- int add_tag=1;
-#if 0
- fprintf(stderr,"add tag %s %s\n",k,v);
-#endif
- if (!strcmp(k,"type")) {
- g_strlcpy(relation_type, v, sizeof(relation_type));
- add_tag=0;
- }
- else if (!strcmp(k,"restriction")) {
- if (!strncmp(v,"no_",3)) {
- tmp_item_bin->type=type_street_turn_restriction_no;
- add_tag=0;
- } else if (!strncmp(v,"only_",5)) {
- tmp_item_bin->type=type_street_turn_restriction_only;
- add_tag=0;
- } else {
- tmp_item_bin->type=type_none;
- osm_warning("relation", osmid_attr_value, 0, "Unknown restriction %s\n",v);
- }
- } else if (!strcmp(k,"boundary")) {
- if (!strcmp(v,"administrative") || !strcmp(v,"postal_code")) {
- boundary=1;
- }
- } else if (!strcmp(k,"ISO3166-1") || !strcmp(k,"ISO3166-1:alpha2")) {
- g_strlcpy(iso_code, v, sizeof(iso_code));
- }
- if (add_tag) {
- char *tag;
- tag=g_alloca(strlen(k)+strlen(v)+2);
- sprintf(tag,"%s=%s",k,v);
- item_bin_add_attr_string(tmp_item_bin, attr_osm_tag, tag);
- }
-
- osm_update_attr_present(k,v);
-}
-
-
-static int
-attr_longest_match(struct attr_mapping **mapping, int mapping_count, enum item_type *types, int types_count)
-{
- int i,j,longest=0,ret=0,sum,val;
- struct attr_mapping *curr;
- for (i = 0 ; i < mapping_count ; i++) {
- sum=0;
- curr=mapping[i];
- for (j = 0 ; j < curr->attr_present_idx_count ; j++) {
- val=attr_present[curr->attr_present_idx[j]];
- if (val)
- sum+=val;
- else {
- sum=-1;
- break;
- }
- }
- if (sum > longest) {
- longest=sum;
- ret=0;
- }
- if (sum > 0 && sum == longest && ret < types_count)
- types[ret++]=curr->type;
- }
- return ret;
-}
-
-static void
-attr_longest_match_clear(void)
-{
- memset(attr_present, 0, sizeof(*attr_present)*attr_present_count);
-}
-
-void
-osm_end_way(struct maptool_osm *osm)
-{
- int i,count;
- int *def_flags,add_flags;
- enum item_type types[10];
- struct item_bin *item_bin;
- int count_lines=0, count_areas=0;
-
- in_way=0;
-
- if (! osm->ways)
- return;
-
- if (dedupe_ways_hash) {
- if (g_hash_table_lookup(dedupe_ways_hash, (gpointer)(long long)wayid))
- return;
- g_hash_table_insert(dedupe_ways_hash, (gpointer)(long long)wayid, (gpointer)1);
- }
-
- count=attr_longest_match(attr_mapping_way, attr_mapping_way_count, types, sizeof(types)/sizeof(enum item_type));
- if (!count) {
- count=1;
- types[0]=type_street_unkn;
- }
- if (count >= 10) {
- fprintf(stderr,"way id "OSMID_FMT"\n",osmid_attr_value);
- dbg_assert(count < 10);
- }
- for (i = 0 ; i < count ; i++) {
- add_flags=0;
- if (types[i] == type_none)
- continue;
- if (ignore_unknown && (types[i] == type_street_unkn || types[i] == type_point_unkn))
- continue;
- if (types[i] != type_street_unkn) {
- if(types[i]<type_area)
- count_lines++;
- else
- count_areas++;
- }
- item_bin=init_item(types[i]);
- item_bin_add_coord(item_bin, coord_buffer, coord_count);
- nodes_ref_item_bin(item_bin);
- def_flags=item_get_default_flags(types[i]);
- if (def_flags) {
- flags_attr_value=((*def_flags & ~flagsa[2]) | flags[0] | flags[1] | flagsa[1]) & ~flags[2];
- if (flags_attr_value != *def_flags)
- add_flags=1;
- }
- item_bin_add_attr_string(item_bin, def_flags ? attr_street_name : attr_label, attr_strings[attr_string_label]);
- item_bin_add_attr_string(item_bin, attr_district_name, attr_strings[attr_string_district_name]);
- item_bin_add_attr_string(item_bin, attr_street_name_systematic, attr_strings[attr_string_street_name_systematic]);
- item_bin_add_attr_string(item_bin, attr_street_name_systematic_nat, attr_strings[attr_string_street_name_systematic_nat]);
- item_bin_add_attr_string(item_bin, attr_street_destination, attr_strings[attr_string_street_destination]);
- item_bin_add_attr_string(item_bin, attr_street_destination_forward, attr_strings[attr_string_street_destination_forward]);
- item_bin_add_attr_string(item_bin, attr_street_destination_backward, attr_strings[attr_string_street_destination_backward]);
- item_bin_add_attr_longlong(item_bin, attr_osm_wayid, osmid_attr_value);
- if (debug_attr_buffer[0])
- item_bin_add_attr_string(item_bin, attr_debug, debug_attr_buffer);
- if (add_flags)
- item_bin_add_attr_int(item_bin, attr_flags, flags_attr_value);
- if (maxspeed_attr_value)
- item_bin_add_attr_int(item_bin, attr_maxspeed, maxspeed_attr_value);
- if(i>0)
- item_bin_add_attr_int(item_bin, attr_duplicate, 1);
- item_bin_write(item_bin,osm->ways);
-
- if (types[i]>=type_house_number_interpolation_even && types[i]<=type_house_number_interpolation_alphabetic){
- struct item_bin *item_bin_interpolation_way=init_item(types[i]);
- item_bin_add_attr_longlong(item_bin, attr_osm_wayid, osmid_attr_value);
- item_bin_add_attr_longlong(item_bin, attr_osm_nodeid_first_node, GET_REF(coord_buffer[0]));
- item_bin_add_attr_longlong(item_bin, attr_osm_nodeid_last_node, GET_REF(coord_buffer[coord_count-1]));
- item_bin_write(item_bin_interpolation_way, osm->house_number_interpolations);
- }
- }
- if(osm->line2poi) {
- count=attr_longest_match(attr_mapping_way2poi, attr_mapping_way2poi_count, types, sizeof(types)/sizeof(enum item_type));
- dbg_assert(count < 10);
- for (i = 0 ; i < count ; i++) {
- if (types[i] == type_none || types[i] == type_point_unkn)
- continue;
- item_bin=init_item(types[i]);
- item_bin_add_coord(item_bin, coord_buffer, coord_count);
- item_bin_add_attr_string(item_bin, attr_label, attr_strings[attr_string_label]);
- item_bin_add_attr_string(item_bin, attr_house_number, attr_strings[attr_string_house_number]);
- item_bin_add_attr_string(item_bin, attr_district_name, attr_strings[attr_string_district_name]);
- item_bin_add_attr_string(item_bin, attr_street_name, attr_strings[attr_string_street_name]);
- item_bin_add_attr_string(item_bin, attr_phone, attr_strings[attr_string_phone]);
- item_bin_add_attr_string(item_bin, attr_fax, attr_strings[attr_string_fax]);
- item_bin_add_attr_string(item_bin, attr_email, attr_strings[attr_string_email]);
- item_bin_add_attr_string(item_bin, attr_county_name, attr_strings[attr_string_county_name]);
- item_bin_add_attr_string(item_bin, attr_url, attr_strings[attr_string_url]);
- item_bin_add_attr_longlong(item_bin, attr_osm_wayid, osmid_attr_value);
- item_bin_write(item_bin, count_areas<=count_lines ? osm->line2poi:osm->poly2poi);
- }
- }
- attr_longest_match_clear();
-}
-
-void
-osm_end_node(struct maptool_osm *osm)
-{
- int count,i;
- char *postal;
- enum item_type types[10];
- struct item_bin *item_bin;
- in_node=0;
-
- if (!osm->nodes || ! node_is_tagged || ! nodeid)
- return;
- count=attr_longest_match(attr_mapping_node, attr_mapping_node_count, types, sizeof(types)/sizeof(enum item_type));
- if (!count) {
- types[0]=type_point_unkn;
- count=1;
- }
- if (count >= 10) {
- fprintf(stderr,"node id "OSMID_FMT"\n",osmid_attr_value);
- dbg_assert(count < 10);
- }
- for (i = 0 ; i < count ; i++) {
- if (types[i] == type_none)
- continue;
- if (ignore_unknown && (types[i] == type_street_unkn || types[i] == type_point_unkn))
- continue;
- item_bin=init_item(types[i]);
- if (item_is_town(*item_bin) && attr_strings[attr_string_population])
- item_bin_set_type_by_population(item_bin, atoi(attr_strings[attr_string_population]));
- item_bin_add_coord(item_bin, &current_node->c, 1);
- item_bin_add_attr_string(item_bin, item_is_town(*item_bin) ? attr_town_name : attr_label, attr_strings[attr_string_label]);
- item_bin_add_attr_string(item_bin, attr_house_number, attr_strings[attr_string_house_number]);
- item_bin_add_attr_string(item_bin, attr_street_name, attr_strings[attr_string_street_name]);
- item_bin_add_attr_string(item_bin, attr_phone, attr_strings[attr_string_phone]);
- item_bin_add_attr_string(item_bin, attr_fax, attr_strings[attr_string_fax]);
- item_bin_add_attr_string(item_bin, attr_email, attr_strings[attr_string_email]);
- item_bin_add_attr_string(item_bin, attr_county_name, attr_strings[attr_string_county_name]);
- item_bin_add_attr_string(item_bin, attr_url, attr_strings[attr_string_url]);
- item_bin_add_attr_longlong(item_bin, attr_osm_nodeid, osmid_attr_value);
- item_bin_add_attr_string(item_bin, attr_ref, attr_strings[attr_string_ref]);
- item_bin_add_attr_string(item_bin, attr_exit_to, attr_strings[attr_string_exit_to]);
- item_bin_add_attr_string(item_bin, attr_debug, debug_attr_buffer);
- postal=attr_strings[attr_string_postal];
- if (postal) {
- char *sep=strchr(postal,',');
- if (sep)
- *sep='\0';
- item_bin_add_attr_string(item_bin, item_is_town(*item_bin) ? attr_town_postal : attr_postal, postal);
- }
- item_bin_write(item_bin,osm->nodes);
- if (item_is_town(*item_bin) && attr_strings[attr_string_label] && osm->towns) {
- item_bin=init_item(item_bin->type);
- item_bin_add_coord(item_bin, &current_node->c, 1);
- item_bin_add_attr_string(item_bin, attr_osm_is_in, is_in_buffer);
- item_bin_add_attr_longlong(item_bin, attr_osm_nodeid, osmid_attr_value);
- item_bin_add_attr_string(item_bin, attr_town_postal, postal);
- item_bin_add_attr_string(item_bin, attr_county_name, attr_strings[attr_string_county_name]);
- item_bin_add_attr_string(item_bin, item_is_district(*item_bin)?attr_district_name:attr_town_name, attr_strings[attr_string_label]);
- item_bin_write(item_bin, osm->towns);
- }
- }
- processed_nodes_out++;
- attr_longest_match_clear();
-}
-
-#define MAX_TOWN_ADMIN_LEVELS 11
-
-struct town_country {
- /* attrs[0] is reserved for postal code */
- /* attrs[1..] are for osm admin levels 3.. (admin_level=2 is always a country boundary)*/
- struct attr attrs[MAX_TOWN_ADMIN_LEVELS];
- struct country_table *country;
-};
-
-static struct town_country *
-town_country_new(struct country_table *country)
-{
- struct town_country *ret=g_malloc0(sizeof(struct town_country));
- ret->country=country;
- return ret;
-}
-
-static void
-town_country_destroy(struct town_country *tc)
-{
- g_free(tc);
-}
-
-/**
- * Insert a new record into the list of town info structures, if there's no such entry.
- *
- * @param in/out town_country_list pointer to GList* of town_country structures.
- * @param in country country to add the town to
- * @returns refernce to then new town_country structure added to the list, or NULL if GList already had an entry for the country given
- */
-static struct town_country *
-town_country_list_insert_if_new(GList **town_country_list, struct country_table *country)
-{
- GList *l;
- struct town_country *ret;
-
- if(!country)
- return NULL;
-
- for(l=*town_country_list; l; l=g_list_next(l)) {
- if(((struct town_country*)l->data)->country==country)
- return NULL;
- }
-
- ret=town_country_new(country);
- *town_country_list=g_list_prepend(*town_country_list, ret);
- return ret;
-}
-
-static GList *
-osm_process_town_unknown_country(void)
-{
- static struct country_table *unknown;
- if (!unknown)
- unknown=country_from_countryid(999);
-
- return g_list_prepend(NULL, town_country_new(unknown));
-}
-
-
-/**
- * Get town name from district is_in attribute if possible.
- *
- * @param in ib pointer to item_bin structure holding district information
- * @param in town_hash hash of all town names
- * @returns refernce to a list of struct town_country* the town belongs to
- */
-static char *
-osm_process_town_get_town_name_from_is_in(struct item_bin *ib, GHashTable *town_hash)
-{
- char *is_in=item_bin_get_attr(ib, attr_osm_is_in, NULL);
- char *tok,*dup,*buf;
- char *town=NULL;
-
- if(!is_in)
- return NULL;
-
- dup=g_strdup(is_in);
- buf=dup;
- while (!town && (tok=strtok(buf, ",;"))) {
- while (*tok==' ')
- tok++;
- town=g_hash_table_lookup(town_hash, tok);
- buf=NULL;
- }
- g_free(dup);
-
- return town;
-}
-
-
-/**
- * Find list of countries which town or district belongs to.
- * @param in ib pointer to item_bin structure holding town information
- * @returns refernce to a list of struct town_country* the town belongs to
- */
-static GList *
-osm_process_town_by_is_in(struct item_bin *ib)
-{
- struct country_table *country;
- char *is_in=item_bin_get_attr(ib, attr_osm_is_in, NULL);
- char *tok,*dup,*buf;
- GList *town_country_list=NULL;
-
- if(!is_in)
- return NULL;
-
- dup=g_strdup(is_in);
- buf=dup;
- while ((tok=strtok(buf, ",;"))) {
- while (*tok==' ')
- tok++;
- country=g_hash_table_lookup(country_table_hash,tok);
- town_country_list_insert_if_new(&town_country_list, country);
- buf=NULL;
- }
-
- g_free(dup);
-
- return town_country_list;
-}
-
-/**
- * Update town attributes based on its administrative parents.
- *
- * @param in town town initial item_bin data
- * @param in/out tc town_country structure holding country information and town attributes to add to town item_bin
- * @param in matches list of administrative boundaries the town belongs to (data is struct boundary *)
- * @returns nothing
- */
-static void
-osm_process_town_by_boundary_update_attrs(struct item_bin *town, struct town_country *tc, GList *matches)
-{
- long long *nodeid;
- long long node_id=0;
- int max_possible_adm_level=-1;
- int max_adm_level=0;
- GList *l;
- int a;
-
- if(tc->country->admin_levels)
- max_possible_adm_level=strlen(tc->country->admin_levels)+3;
-
- nodeid=item_bin_get_attr(town, attr_osm_nodeid, NULL);
- if(nodeid)
- node_id=*nodeid;
-
- for(l=matches;l;l=g_list_next(l)) {
- struct boundary *b=l->data;
- char *boundary_admin_level_string;
- char *name;
- char *postal=osm_tag_value(b->ib, "postal_code");
-
- if (postal) {
- tc->attrs[0].type=attr_town_postal;
- tc->attrs[0].u.str=postal;
- }
-
- if(max_possible_adm_level==-1)
- continue;
-
- boundary_admin_level_string=osm_tag_value(b->ib, "admin_level");
-
- if (!boundary_admin_level_string)
- continue;
-
- a=atoi(boundary_admin_level_string);
- if (a > 2 && a < max_possible_adm_level) {
- enum attr_type attr_type=attr_none;
- switch(tc->country->admin_levels[a-3]) {
- case 's':
- attr_type=attr_state_name;
- break;
- case 'c':
- attr_type=attr_county_name;
- break;
- case 'M':
- /* Here we patch the boundary itself to convert it to town polygon later*/
- b->ib->type=type_poly_place6;
- case 'm':
- attr_type=attr_municipality_name;
- break;
- case 'T':
- /* Here we patch the boundary itself to convert it to town polygon later*/
- b->ib->type=type_poly_place6;
- break;
- }
- name=osm_tag_value(b->ib, "name");
- if (name && attr_type != attr_none) {
- tc->attrs[a-2].type=attr_type;
- tc->attrs[a-2].u.str=name;
- }
- }
- if(b->admin_centre && b->admin_centre==node_id) {
- if(!max_adm_level || max_adm_level<a) {
- max_adm_level=a;
- }
- }
- }
-
- /* Administrative centres are not to be contained in their own districts. */
- if(max_adm_level>0)
- for(a=max_possible_adm_level-1;a>max_adm_level && a>2;a--)
- tc->attrs[a-2].type=type_none;
-}
-
-/**
- * Find country which town belongs to. Find town administrative hierarchy attributes.
- *
- * @param in bl list of administrative boundaries (data is struct boundary *)
- * @param in town item_bin structure holding town information
- * @param in c town center coordinates
- * @returns refernce to the list of town_country structures
- */
-static GList *
-osm_process_town_by_boundary(GList *bl, struct item_bin *town, struct coord *c)
-{
- GList *matches=boundary_find_matches(bl, c);
- GList *town_country_list=NULL;
- GList *l;
-
- for (l=matches;l;l=g_list_next(l)) {
- struct boundary *match=l->data;
- if (match->country) {
- struct town_country *tc=town_country_list_insert_if_new(&town_country_list, match->country);
- if(tc)
- osm_process_town_by_boundary_update_attrs(town, tc, matches);
- }
- }
-
- g_list_free(matches);
-
- return town_country_list;
-}
-
-static void
-osm_town_relations_to_poly(GList *boundaries, FILE *towns_poly)
-{
- while(boundaries) {
- struct boundary *b=boundaries->data;
- if(item_is_poly_place(*b->ib)) {
- GList *s=b->sorted_segments;
- while(s) {
- struct geom_poly_segment *seg=s->data;
- if((seg->type==geom_poly_segment_type_way_outer || seg->type==geom_poly_segment_type_way_unknown) && coord_is_equal(*seg->first,*seg->last)) {
- struct item_bin *ib=init_item(b->ib->type);
- void *a;
- item_bin_add_coord(ib, seg->first, seg->last-seg->first+1);
- a=osm_tag_value(b->ib, "name");
- if(a)
- item_bin_add_attr_string(ib,attr_label,a);
- a=osm_tag_value(b->ib, "osm_relationid");
- if(a)
- item_bin_add_attr_longlong(ib,attr_osm_relationid,atol(a));
- item_bin_write(ib, towns_poly);
- }
- s=g_list_next(s);
- }
- }
- osm_town_relations_to_poly(b->children, towns_poly);
- boundaries=g_list_next(boundaries);
- }
-}
-
-
-void
-osm_process_towns(FILE *in, FILE *boundaries, FILE *ways, char *suffix)
-{
- struct item_bin *ib;
- GList *bl;
- GHashTable *town_hash;
- FILE *towns_poly;
-
- processed_nodes=processed_nodes_out=processed_ways=processed_relations=processed_tiles=0;
- bytes_read=0;
- sig_alrm(0);
-
- bl=process_boundaries(boundaries, ways);
-
- fprintf(stderr, "Processed boundaries\n");
-
- town_hash=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
- while ((ib=read_item(in))) {
- if (!item_is_district(*ib))
- {
- char *townname=item_bin_get_attr(ib, attr_town_name, NULL);
- char *dup=strdup(townname);
- g_hash_table_replace(town_hash, dup, dup);
- }
- }
- fseek(in, 0, SEEK_SET);
-
- fprintf(stderr, "Finished town table rebuild\n");
-
- while ((ib=read_item(in))) {
- struct coord *c=(struct coord *)(ib+1);
- GList *tc_list, *l;
- struct item_bin *ib_copy=NULL;
-
- processed_nodes++;
-
- tc_list=osm_process_town_by_boundary(bl, ib, c);
- if (!tc_list)
- tc_list=osm_process_town_by_is_in(ib);
-
- if (!tc_list && unknown_country)
- tc_list=osm_process_town_unknown_country();
-
- if (!tc_list) {
- itembin_warning(ib, 0, "Lost town %s %s\n", item_bin_get_attr(ib, attr_town_name, NULL), item_bin_get_attr(ib, attr_district_name, NULL));
- }
-
- if(tc_list && g_list_next(tc_list))
- ib_copy=item_bin_dup(ib);
-
- l=tc_list;
- while(l) {
- struct town_country *tc=l->data;
- char *is_in;
- long long *nodeid;
- char *town_name=NULL;
- int i;
-
- if (!tc->country->file) {
- char *name=g_strdup_printf("country_%d.unsorted.tmp", tc->country->countryid);
- tc->country->file=fopen(name,"wb");
- g_free(name);
- }
-
- if (item_is_district(*ib) && NULL!=(town_name=osm_process_town_get_town_name_from_is_in(ib, town_hash))) {
- struct attr attr_new_town_name;
- attr_new_town_name.type = attr_town_name;
- attr_new_town_name.u.str = town_name;
- item_bin_add_attr(ib, &attr_new_town_name);
- }
-
- if ((is_in=item_bin_get_attr(ib, attr_osm_is_in, NULL))!=NULL)
- item_bin_remove_attr(ib, is_in);
-
- nodeid=item_bin_get_attr(ib, attr_osm_nodeid, NULL);
-
- if (nodeid)
- item_bin_remove_attr(ib, nodeid);
-
- /* Treat district like a town, if we did not find the town it belongs to */
- if (!item_bin_get_attr(ib, attr_town_name, NULL)) {
- char *district_name = item_bin_get_attr(ib, attr_district_name, NULL);
-
- if (district_name) {
- struct attr attr_new_town_name;
- attr_new_town_name.type = attr_town_name;
- attr_new_town_name.u.str = district_name;
-
- item_bin_add_attr(ib, &attr_new_town_name);
- item_bin_remove_attr(ib, district_name);
- }
- }
-
- /* FIXME: preserved from old code, but we'll have to reconsider if we really should drop attribute
- * explicitely set on the town osm node and use an attribute derived from one of its surrounding boundaries. Thus we would
- * use town central district' postal code instead of town one. */
- if (tc->attrs[0].type != attr_none) {
- char *postal=item_bin_get_attr(ib, attr_town_postal, NULL);
- if (postal)
- item_bin_remove_attr(ib, postal);
- }
-
- for (i = 0 ; i < MAX_TOWN_ADMIN_LEVELS ; i++) {
- if (tc->attrs[i].type != attr_none)
- item_bin_add_attr(ib, &tc->attrs[i]);
- }
-
- if(item_bin_get_attr(ib, attr_district_name, NULL))
- item_bin_write_match(ib, attr_district_name, attr_district_name_match, 5, tc->country->file);
- else
- item_bin_write_match(ib, attr_town_name, attr_town_name_match, 5, tc->country->file);
-
- town_country_destroy(tc);
- processed_nodes_out++;
- l=g_list_next(l);
- if(l!=NULL)
- memcpy(ib, ib_copy, (ib_copy->len+1)*4);
- }
- g_free(ib_copy);
- g_list_free(tc_list);
- }
-
- towns_poly=tempfile(suffix,"towns_poly",1);
- osm_town_relations_to_poly(bl, towns_poly);
- fclose(towns_poly);
-
- g_hash_table_destroy(town_hash);
- free_boundaries(bl);
-
- sig_alrm(0);
- sig_alrm_end();
-
- fprintf(stderr, "Finished processing towns\n");
-}
-
-void
-sort_countries(int keep_tmpfiles)
-{
- int i;
- struct country_table *co;
- char *name_in,*name_out;
- for (i = 0 ; i < sizeof(country_table)/sizeof(struct country_table) ; i++) {
- co=&country_table[i];
- if (co->file) {
- fclose(co->file);
- co->file=NULL;
- }
- name_in=g_strdup_printf("country_%d.unsorted.tmp", co->countryid);
- name_out=g_strdup_printf("country_%d.tmp", co->countryid);
- co->r=world_bbox;
- item_bin_sort_file(name_in, name_out, &co->r, &co->size);
- if (!keep_tmpfiles)
- unlink(name_in);
- g_free(name_in);
- g_free(name_out);
- }
-}
-
-struct relation_member {
- enum relation_member_type type;
- long long id;
- char *role;
-};
-
-static void
-parse_relation_member_string(char *relation_member_string, struct relation_member *memb)
-{
- int len;
- int type_numeric;
- sscanf(relation_member_string,RELATION_MEMBER_PARSE_FORMAT,&type_numeric,&memb->id,&len);
- memb->type=(enum relation_member_type)type_numeric;
- memb->role=relation_member_string+len;
-}
-
-static int
-search_relation_member(struct item_bin *ib, char *role, struct relation_member *memb, int *min_count)
-{
- char *str=NULL;
- int count=0;
- while ((str=item_bin_get_attr(ib, attr_osm_member, str))) {
- parse_relation_member_string(str, memb);
- count++;
- if (!strcmp(memb->role, role) && (!min_count || *min_count < count)) {
- if (min_count)
- *min_count=count;
- return 1;
- }
- }
- return 0;
-}
-
-#if 0
-static int
-load_way_index(FILE *ways_index, int p, long long *idx)
-{
- int step=sizeof(*idx)*2;
- fseek(ways_index, p*step, SEEK_SET);
- if (fread(idx, step, 1, ways_index) != 1) {
- fprintf(stderr,"read failed\n");
- return 0;
- }
- return 1;
-}
-#endif
-
-#if 0
-static int
-seek_to_way(FILE *way, FILE *ways_index, osmid wayid)
-{
- long offset;
- long long idx[2];
- int count,interval,p;
- if (way_hash) {
- if (!(g_hash_table_lookup_extended(way_hash, (gpointer)(long)wayid, NULL, (gpointer)&offset)))
- return 0;
- fseek(way, offset, SEEK_SET);
- return 1;
- }
- fseek(ways_index, 0, SEEK_END);
- count=ftello(ways_index)/sizeof(idx);
- interval=count/4;
- p=count/2;
- if(interval==0) {
- // If fewer than 4 nodes defined so far set interval to 1 to
- // avoid infinite loop
- interval = 1;
- }
- if (!load_way_index(ways_index, p, idx))
- return 0;
- for (;;) {
- if (idx[0] == wayid) {
- fseek(way, idx[1], SEEK_SET);
- return 1;
- }
- if (idx[0] < wayid) {
- p+=interval;
- if (interval == 1) {
- if (p >= count)
- return 0;
- if (!load_way_index(ways_index, p, idx))
- return 0;
- if (idx[0] > wayid)
- return 0;
- } else {
- if (p >= count)
- p=count-1;
- if (!load_way_index(ways_index, p, idx))
- return 0;
- }
- } else {
- p-=interval;
- if (interval == 1) {
- if (p < 0)
- return 0;
- if (!load_way_index(ways_index, p, idx))
- return 0;
- if (idx[0] < wayid)
- return 0;
- } else {
- if (p < 0)
- p=0;
- if (!load_way_index(ways_index, p, idx))
- return 0;
- }
- }
- if (interval > 1)
- interval/=2;
- }
-}
-#endif
-
-#if 0
-static struct coord *
-get_way(FILE *way, FILE *ways_index, struct coord *c, long long wayid, struct item_bin *ret, int debug)
-{
- long long currid;
- int last;
- struct coord *ic;
- if (!seek_to_way(way, ways_index, wayid)) {
- if (debug)
- fprintf(stderr,"not found in index");
- return NULL;
- }
- while (item_bin_read(ret, way)) {
- currid=item_bin_get_wayid(ret);
- if (debug)
- fprintf(stderr,LONGLONG_FMT":",currid);
- if (currid != wayid)
- return NULL;
- ic=(struct coord *)(ret+1);
- last=ret->clen/2-1;
- if (debug)
- fprintf(stderr,"(0x%x,0x%x)-(0x%x,0x%x)",ic[0].x,ic[0].y,ic[last].x,ic[last].y);
- if (!c)
- return &ic[0];
- if (ic[0].x == c->x && ic[0].y == c->y)
- return &ic[last];
- if (ic[last].x == c->x && ic[last].y == c->y)
- return &ic[0];
- }
- return NULL;
-}
-#endif
-
-struct associated_street {
- osmid relid;
- char *name;
-};
-
-struct process_relation_member_func_priv {
- FILE *out;
- GList *allocations;
-};
-
-static void
-process_associated_street_member(void *func_priv, void *relation_priv, struct item_bin *member, void *member_priv_unused)
-{
- struct process_relation_member_func_priv *fp=func_priv;
- struct associated_street *rel=relation_priv;
- if(!fp->out) {
- /* Pass 1, fill associated street names in relation_priv */
- char *name;
- if(!rel->name && item_is_street(*member) && (name=item_bin_get_attr(member,attr_street_name,NULL))!=NULL ) {
- rel->name=g_strdup(name);
- fp->allocations=g_list_prepend(fp->allocations, rel->name);
- }
- } else {
- /* Pass 2, add associated street names to relation members which do not have street name attr defined but
- have house number defined or are streets */
- int type_implies_streetname=item_is_street(*member) ||
- member->type==type_house_number_interpolation_even ||
- member->type==type_house_number_interpolation_odd ||
- member->type==type_house_number_interpolation_all ||
- member->type==type_house_number_interpolation_alphabetic;
- if(rel->name && !item_bin_get_attr(member,attr_street_name,NULL) && (type_implies_streetname || item_bin_get_attr(member,attr_house_number,NULL)))
- item_bin_add_attr_string(member, attr_street_name, rel->name);
- item_bin_write(member,fp->out);
- }
-}
-
-struct house_number_interpolation {
- osmid wayid;
- char* street_name;
- osmid nodeid_first_node;
- char* house_number_first_node;
- osmid nodeid_last_node;
- char* house_number_last_node;
-};
-
-static void
-process_house_number_interpolation_member(void *func_priv, void *relation_priv, struct item_bin *member, void *member_priv_unused)
-{
- struct process_relation_member_func_priv *fp=func_priv;
- struct house_number_interpolation *rel=relation_priv;
- if(!fp->out) {
- /* Pass 1, read street name & house numbers from first & last node.*/
- char *street_name;
- char *house_number;
- if((street_name=item_bin_get_attr(member,attr_street_name,NULL))) {
- rel->street_name=g_strdup(street_name);
- fp->allocations=g_list_prepend(fp->allocations, rel->street_name);
- }
- if ((house_number=item_bin_get_attr(member,attr_house_number,NULL))) {
- osmid* nodeid;
- char *house_number_dup;
- if((nodeid=item_bin_get_attr(member,attr_osm_nodeid,NULL))) {
- house_number_dup=g_strdup(house_number);
- fp->allocations=g_list_prepend(fp->allocations, house_number_dup);
- if (*nodeid==rel->nodeid_first_node){
- rel->house_number_first_node=house_number_dup;
- }else{
- rel->house_number_last_node=house_number_dup;
- }
- }
- }
- } else {
- /* Pass 2, add interpolation information to interpolation ways. */
- enum attr_type attr_for_interpolation = 0;
- switch (member->type){
- case type_house_number_interpolation_even:
- case type_house_number_interpolation_odd:
- attr_for_interpolation = attr_house_number_interpolation_no_ends_incrmt_2;
- break;
- case type_house_number_interpolation_all:
- attr_for_interpolation = attr_house_number_interpolation_no_ends_incrmt_1;
- break;
- default:
- // alphabetic interpolation not (yet) supported
- break;
- }
- if(attr_for_interpolation && rel->street_name){
- item_bin_add_attr_string(member, attr_street_name, rel->street_name);
- char* house_number_from_to = g_strconcat(rel->house_number_first_node, "-", rel->house_number_last_node, NULL);
- fp->allocations=g_list_prepend(fp->allocations, house_number_from_to);
- item_bin_add_attr_string(member, attr_for_interpolation, house_number_from_to);
- }
- item_bin_write(member,fp->out);
- }
-}
-
-static void
-relation_func_writethrough(void *func_priv, void *relation_priv_unused, struct item_bin *member, void *member_priv_unused)
-{
- FILE *out=*(FILE **)func_priv;
- if(out)
- item_bin_write(member,out);
-}
-
-
-static void
-process_associated_streets_setup(FILE *in, struct relations *relations, struct process_relation_member_func_priv *fp)
-{
- struct relation_member relm;
- long long relid;
- struct item_bin *ib;
- struct relations_func *relations_func;
- int min_count;
-
- fseek(in, 0, SEEK_SET);
- relations_func=relations_func_new(process_associated_street_member, fp);
- while ((ib=read_item(in))) {
- char *name=osm_tag_value(ib, "name");
- int namelen=name?strlen(name)+1:0;
- struct associated_street *rel=g_malloc0(sizeof(struct associated_street)+namelen);
- relid=item_bin_get_relationid(ib);
- rel->relid=relid;
- if(name) {
- rel->name=(char*)(rel+1);
- g_strlcpy(rel->name,name,namelen);
- }
- min_count=0;
- while(search_relation_member(ib, "street",&relm,&min_count)) {
- if(relm.type==rel_member_way)
- relations_add_relation_member_entry(relations, relations_func, rel, NULL, relm.type, relm.id);
- }
- min_count=0;
- while(search_relation_member(ib, "house",&relm,&min_count)) {
- relations_add_relation_member_entry(relations, relations_func, rel, NULL, relm.type, relm.id);
- }
- min_count=0;
- while(search_relation_member(ib, "addr:houselink",&relm,&min_count)) {
- relations_add_relation_member_entry(relations, relations_func, rel, NULL, relm.type, relm.id);
- }
- min_count=0;
- while(search_relation_member(ib, "address",&relm,&min_count)) {
- relations_add_relation_member_entry(relations, relations_func, rel, NULL, relm.type, relm.id);
- }
- }
- relations_func=relations_func_new(relation_func_writethrough, &fp->out);
- relations_add_relation_default_entry(relations, relations_func);
-}
-
-void
-process_associated_streets(FILE *in, struct files_relation_processing *files_relproc)
-{
- struct relations *relations=relations_new();
- struct process_relation_member_func_priv fp={NULL,NULL};
- fseek(in, 0, SEEK_SET);
- process_associated_streets_setup(in, relations, &fp);
-
- /* Set noname relations names from their street members */
- fseek(files_relproc->ways_in, 0, SEEK_SET);
- relations_process(relations, NULL, files_relproc->ways_in);
-
- /* Set street names on all members */
- fp.out=files_relproc->ways_out;
- fseek(files_relproc->ways_in, 0, SEEK_SET);
- relations_process(relations, NULL, files_relproc->ways_in);
-
- fp.out=files_relproc->nodes_out;
- fseek(files_relproc->nodes_in, 0, SEEK_SET);
- relations_process(relations, NULL, files_relproc->nodes_in);
-
- if(files_relproc->nodes2_in) {
- fp.out=files_relproc->nodes2_out;
- fseek(files_relproc->nodes2_in, 0, SEEK_SET);
- relations_process(relations, NULL, files_relproc->nodes2_in);
- }
-
- relations_destroy(relations);
- g_list_foreach(fp.allocations, (GFunc)free, NULL);
- g_list_free(fp.allocations);
-}
-
-static void
-process_house_number_interpolations_setup(FILE *in, struct relations *relations, struct process_relation_member_func_priv *fp)
-{
- struct item_bin *ib;
- struct relations_func *relations_func_process_hn_interpol;
-
- fseek(in, 0, SEEK_SET);
- relations_func_process_hn_interpol=relations_func_new(process_house_number_interpolation_member, fp);
- while ((ib=read_item(in))) {
- struct house_number_interpolation *hn_interpol=g_malloc0(sizeof(struct house_number_interpolation));
- hn_interpol->wayid=item_bin_get_wayid(ib);
- hn_interpol->nodeid_first_node=item_bin_get_nodeid_from_attr(ib, attr_osm_nodeid_first_node);
- hn_interpol->nodeid_last_node=item_bin_get_nodeid_from_attr(ib, attr_osm_nodeid_last_node);
- dbg_assert(hn_interpol->wayid && hn_interpol->nodeid_first_node && hn_interpol->nodeid_last_node);
- relations_add_relation_member_entry(relations, relations_func_process_hn_interpol, hn_interpol, NULL, rel_member_node, hn_interpol->nodeid_first_node);
- relations_add_relation_member_entry(relations, relations_func_process_hn_interpol, hn_interpol, NULL, rel_member_node, hn_interpol->nodeid_last_node);
- relations_add_relation_member_entry(relations, relations_func_process_hn_interpol, hn_interpol, NULL, rel_member_way, hn_interpol->wayid);
- }
- relations_add_relation_default_entry(relations, relations_func_new(relation_func_writethrough, &fp->out));
-}
-
-void
-process_house_number_interpolations(FILE *in, struct files_relation_processing *files_relproc) {
- struct relations *relations=relations_new();
- struct process_relation_member_func_priv fp={NULL,NULL};
- fseek(in, 0, SEEK_SET);
- process_house_number_interpolations_setup(in, relations, &fp);
-
- /* Copy house numbers & street names from first/last node to interpolation way. */
- fseek(files_relproc->ways_in, 0, SEEK_SET);
- relations_process(relations, NULL, files_relproc->ways_in);
-
- fseek(files_relproc->nodes_in, 0, SEEK_SET);
- relations_process(relations, NULL, files_relproc->nodes_in);
-
- /* Set street names on all members */
- fp.out=files_relproc->ways_out;
- fseek(files_relproc->ways_in, 0, SEEK_SET);
- relations_process(relations, NULL, files_relproc->ways_in);
-
- fp.out=files_relproc->nodes_out;
- fseek(files_relproc->nodes_in, 0, SEEK_SET);
- relations_process(relations, NULL, files_relproc->nodes_in);
-
- if(files_relproc->nodes2_in) {
- fp.out=files_relproc->nodes2_out;
- fseek(files_relproc->nodes2_in, 0, SEEK_SET);
- relations_process(relations, NULL, files_relproc->nodes2_in);
- }
-
- relations_destroy(relations);
- g_list_foreach(fp.allocations, (GFunc)free, NULL);
- g_list_free(fp.allocations);
-}
-
-struct turn_restriction {
- osmid relid;
- enum item_type type;
- struct coord *c[3];
- int c_count[3];
- struct rect r;
- int order;
-};
-
-static void
-process_turn_restrictions_member(void *func_priv, void *relation_priv, struct item_bin *member, void *member_priv)
-{
- int i,count,type=(long)member_priv;
- struct turn_restriction *turn_restriction=relation_priv;
- struct coord *c=(struct coord *)(member+1);
- int ccount=member->clen/2;
-
- if (member->type < type_line)
- count=1;
- else
- count=2;
- turn_restriction->c[type]=g_renew(struct coord, turn_restriction->c[type], turn_restriction->c_count[type]+count);
- turn_restriction->c[type][turn_restriction->c_count[type]++]=c[0];
- if (count > 1)
- turn_restriction->c[type][turn_restriction->c_count[type]++]=c[ccount-1];
- if(IS_REF(turn_restriction->r.l)) {
- turn_restriction->r.l=c[0];
- turn_restriction->r.h=c[0];
- i=1;
- } else
- i=0;
- for(;i<ccount;i++)
- bbox_extend(&c[i], &turn_restriction->r);
-
- i=item_order_by_type(member->type);
- if(i<turn_restriction->order)
- turn_restriction->order=i;
-
-}
-
-static void
-process_turn_restrictions_fromto(struct turn_restriction *t, int type, struct coord **c)
-{
- int i,j;
- for (i = 0 ; i < t->c_count[type] ; i+=2) {
- for (j = 0 ; j < t->c_count[1] ; j++) {
- if (coord_is_equal(t->c[type][i],t->c[1][j])) {
- c[0]=&t->c[type][i+1];
- c[1]=&t->c[type][i];
- return;
- }
- if (coord_is_equal(t->c[type][i+1],t->c[1][j])) {
- c[0]=&t->c[type][i];
- c[1]=&t->c[type][i+1];
- return;
- }
- }
- }
-}
-
-static void
-process_turn_restrictions_dump_coord(struct coord *c, int count)
-{
- int i;
- for (i = 0 ; i < count ; i++) {
- fprintf(stderr,"(0x%x,0x%x)",c[i].x,c[i].y);
- }
-}
-
-static void
-process_turn_restrictions_finish(GList *tr, FILE *out)
-{
- GList *l=tr;
- while (l) {
- struct turn_restriction *t=l->data;
- struct coord *c[4]={NULL,NULL,NULL,NULL};
- struct item_bin *ib=tmp_item_bin;
-
- if (!t->c_count[0]) {
- osm_warning("relation",t->relid,0,"turn restriction: from member not found\n");
- } else if (!t->c_count[1]) {
- osm_warning("relation",t->relid,0,"turn restriction: via member not found\n");
- } else if (!t->c_count[2]) {
- osm_warning("relation",t->relid,0,"turn restriction: to member not found\n");
- } else {
- process_turn_restrictions_fromto(t, 0, c);
- process_turn_restrictions_fromto(t, 2, c+2);
- if (!c[0] || !c[2]) {
- osm_warning("relation",t->relid,0,"turn restriction: via (");
- process_turn_restrictions_dump_coord(t->c[1], t->c_count[1]);
- fprintf(stderr,")");
- if (!c[0]) {
- fprintf(stderr," failed to connect to from (");
- process_turn_restrictions_dump_coord(t->c[0], t->c_count[0]);
- fprintf(stderr,")");
- }
- if (!c[2]) {
- fprintf(stderr," failed to connect to to (");
- process_turn_restrictions_dump_coord(t->c[2], t->c_count[2]);
- fprintf(stderr,")");
- }
- fprintf(stderr,"\n");
- } else {
- if (t->c_count[1] <= 2) {
- int order;
- char tilebuf[20]="";
- item_bin_init(ib,t->type);
- item_bin_add_coord(ib, c[0], 1);
- item_bin_add_coord(ib, c[1], 1);
- if (t->c_count[1] > 1)
- item_bin_add_coord(ib, c[3], 1);
- item_bin_add_coord(ib, c[2], 1);
-
- order=tile(&t->r,"",tilebuf,sizeof(tilebuf)-1,overlap,NULL);
- if(order > t->order)
- order=t->order;
- item_bin_add_attr_range(ib,attr_order,0,order);
-
- item_bin_write(ib, out);
- }
-
- }
- }
- g_free(t->c[0]);
- g_free(t->c[1]);
- g_free(t->c[2]);
- g_free(t);
- l=g_list_next(l);
- }
- g_list_free(tr);
-}
-
-static GList *
-process_turn_restrictions_setup(FILE *in, struct relations *relations)
-{
- struct relation_member fromm,tom,viam,tmpm;
- long long relid;
- struct item_bin *ib;
- struct relations_func *relations_func;
- int min_count;
- GList *turn_restrictions=NULL;
-
- fseek(in, 0, SEEK_SET);
- relations_func=relations_func_new(process_turn_restrictions_member, NULL);
- while ((ib=read_item(in))) {
- struct turn_restriction *turn_restriction;
- relid=item_bin_get_relationid(ib);
- min_count=0;
- if (!search_relation_member(ib, "from",&fromm,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: from member missing\n");
- continue;
- }
- if (search_relation_member(ib, "from",&tmpm,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: multiple from members\n");
- continue;
- }
- min_count=0;
- if (!search_relation_member(ib, "to",&tom,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: to member missing\n");
- continue;
- }
- if (search_relation_member(ib, "to",&tmpm,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: multiple to members\n");
- continue;
- }
- min_count=0;
- if (!search_relation_member(ib, "via",&viam,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: via member missing\n");
- continue;
- }
- if (search_relation_member(ib, "via",&tmpm,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: multiple via member\n");
- continue;
- }
- if (fromm.type != rel_member_way) {
- osm_warning("relation",relid,0,"turn restriction: wrong type for from member ");
- osm_warning(osm_types[fromm.type],fromm.id,1,"\n");
- continue;
- }
- if (tom.type != rel_member_way) {
- osm_warning("relation",relid,0,"turn restriction: wrong type for to member ");
- osm_warning(osm_types[tom.type],tom.id,1,"\n");
- continue;
- }
- if (viam.type != rel_member_node && viam.type != rel_member_way) {
- osm_warning("relation",relid,0,"turn restriction: wrong type for via member ");
- osm_warning(osm_types[viam.type],viam.id,1,"\n");
- continue;
- }
- turn_restriction=g_new0(struct turn_restriction, 1);
- turn_restriction->relid=relid;
- turn_restriction->type=ib->type;
- turn_restriction->r.l.x=1<<30;
- turn_restriction->order=255;
- relations_add_relation_member_entry(relations, relations_func, turn_restriction, (gpointer) 0, fromm.type, fromm.id);
- relations_add_relation_member_entry(relations, relations_func, turn_restriction, (gpointer) 1, viam.type, viam.id);
- relations_add_relation_member_entry(relations, relations_func, turn_restriction, (gpointer) 2, tom.type, tom.id);
- turn_restrictions=g_list_append(turn_restrictions, turn_restriction);
- }
- return turn_restrictions;
-}
-
-void
-process_turn_restrictions(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out)
-{
- struct relations *relations=relations_new();
- GList *turn_restrictions;
- fseek(in, 0, SEEK_SET);
- turn_restrictions=process_turn_restrictions_setup(in, relations);
- relations_process(relations, coords, ways);
- process_turn_restrictions_finish(turn_restrictions, out);
- relations_destroy(relations);
-}
-#if 0
-void
-process_turn_restrictions_old(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out)
-{
- struct relation_member fromm,tom,viam,tmpm;
- struct node_item ni;
- long long relid;
- char from_buffer[65536],to_buffer[65536],via_buffer[65536];
- struct item_bin *ib,*from=(struct item_bin *)from_buffer,*to=(struct item_bin *)to_buffer,*via=(struct item_bin *)via_buffer;
- struct coord *fromc,*toc,*viafrom,*viato,*tmp;
- int min_count;
- while ((ib=read_item(in))) {
- relid=item_bin_get_relationid(ib);
- min_count=0;
- if (!search_relation_member(ib, "from",&fromm,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: from member missing\n");
- continue;
- }
- if (search_relation_member(ib, "from",&tmpm,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: multiple from members\n");
- continue;
- }
- min_count=0;
- if (!search_relation_member(ib, "to",&tom,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: to member missing\n");
- continue;
- }
- if (search_relation_member(ib, "to",&tmpm,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: multiple to members\n");
- continue;
- }
- min_count=0;
- if (!search_relation_member(ib, "via",&viam,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: via member missing\n");
- continue;
- }
- if (search_relation_member(ib, "via",&tmpm,&min_count)) {
- osm_warning("relation",relid,0,"turn restriction: multiple via member\n");
- continue;
- }
- if (fromm.type != 2) {
- osm_warning("relation",relid,0,"turn restriction: wrong type for from member ");
- osm_warning(osm_types[fromm.type],fromm.id,1,"\n");
- continue;
- }
- if (tom.type != 2) {
- osm_warning("relation",relid,0,"turn restriction: wrong type for to member ");
- osm_warning(osm_types[tom.type],tom.id,1,"\n");
- continue;
- }
- if (viam.type != 1 && viam.type != 2) {
- osm_warning("relation",relid,0,"turn restriction: wrong type for via member ");
- osm_warning(osm_types[viam.type],viam.id,1,"\n");
- continue;
- }
- if (viam.type == 1) {
- if (!node_item_get_from_file(coords, viam.id, &ni)) {
- osm_warning("relation",relid,0,"turn restriction: failed to get via member ");
- osm_warning(osm_types[viam.type],viam.id,1,"\n");
- continue;
- }
- viafrom=&ni.c;
- viato=&ni.c;
- } else {
- if (!(viafrom=get_way(ways, ways_index, NULL, viam.id, via, 0))) {
- osm_warning("relation",relid,0,"turn restriction: failed to get first via coordinate from ");
- osm_warning(osm_types[viam.type],viam.id,1,"\n");
- continue;
- }
- if (!(viato=get_way(ways, ways_index, viafrom, viam.id, via, 0))) {
- osm_warning("relation",relid,0,"turn restriction: failed to get last via coordinate from ");
- osm_warning(osm_types[viam.type],viam.id,1,"\n");
- continue;
- }
-
- }
-#if 0
- fprintf(stderr,"via "LONGLONG_FMT" vs %d\n",viam.id, ni.id);
- fprintf(stderr,"coord 0x%x,0x%x\n",ni.c.x,ni.c.y);
- fprintf(stderr,"Lookup "LONGLONG_FMT"\n",fromm.id);
-#endif
- if (!(fromc=get_way(ways, ways_index, viafrom, fromm.id, from, 0))) {
- if (viam.type == 1 || !(fromc=get_way(ways, ways_index, viato, fromm.id, from, 0))) {
- osm_warning("relation",relid,0,"turn restriction: failed to connect via ");
- osm_warning(osm_types[viam.type],viam.id,1," 0x%x,0x%x-0x%x,0x%x to from member ",viafrom->x,viafrom->y,viato->x,viato->y);
- osm_warning(osm_types[fromm.type],fromm.id,1," (");
- get_way(ways, ways_index, viafrom, fromm.id, from, 1);
- fprintf(stderr,")\n");
- continue;
- } else {
- tmp=viato;
- viato=viafrom;
- viafrom=tmp;
- }
- }
- if (!(toc=get_way(ways, ways_index, viato, tom.id, to, 0))) {
- osm_warning("relation",relid,0,"turn restriction: failed to connect via ");
- osm_warning(osm_types[viam.type],viam.id,1," 0x%x,0x%x-0x%x,0x%x to to member ",viafrom->x,viafrom->y,viato->x,viato->y);
- osm_warning(osm_types[tom.type],tom.id,1," (");
- get_way(ways, ways_index, viato, tom.id, to, 1);
- fprintf(stderr,")\n");
- continue;
- }
-#if 0
- fprintf(stderr,"(0x%x,0x%x)-(0x%x,0x%x)-(0x%x,0x%x)\n",fromc->x,fromc->y, ni.c.x, ni.c.y, toc->x, toc->y);
-#endif
- item_bin_init(ib,ib->type);
- item_bin_add_coord(ib, fromc, 1);
- item_bin_add_coord(ib, viafrom, 1);
- if (viam.type == 2)
- item_bin_add_coord(ib, viato, 1);
- item_bin_add_coord(ib, toc, 1);
- item_bin_write(item_bin, out);
- }
-}
-#endif
-
-#if 0
-static void
-process_countries(FILE *way, FILE *ways_index)
-{
- FILE *in=fopen("country_de.tmp","r");
- struct item_bin *ib;
- char buffer2[400000];
- struct item_bin *ib2=(struct item_bin *)buffer2;
- GList *segments=NULL,*sort_segments;
- fseek(in, 0, SEEK_SET);
- while ((ib=read_item(in))) {
- char *str=NULL;
- struct relation_member member;
- while ((str=item_bin_get_attr(ib, attr_osm_member, str))) {
- if (!parse_relation_member_string(str, &member))
- break;
- if (member.type == 2) {
- if (!seek_to_way(way, ways_index, member.id)) {
- fprintf(stderr,"not found in index");
- break;
- }
- while (item_bin_read(ib2, way)) {
- if (item_bin_get_wayid(ib2) != member.id)
- break;
- segments=g_list_prepend(segments,item_bin_to_poly_segment(ib2, geom_poly_segment_type_way_unknown));
- break;
- }
- }
- }
- }
- sort_segments=geom_poly_segments_sort(segments, geom_poly_segment_type_way_left_side);
- FILE *tmp=fopen("tst.txt","w");
- while (sort_segments) {
- struct geom_poly_segment *seg=sort_segments->data;
- if (!seg) {
- fprintf(stderr,"is null\n");
- } else {
- fprintf(stderr,"segment %p %s area "LONGLONG_FMT"\n",sort_segments,coord_is_equal(*seg->first, *seg->last) ? "closed":"open",geom_poly_area(seg->first,seg->last-seg->first+1));
- }
-#if 0
- int count=seg->last-seg->first+1;
- item_bin_init(ib, type_border_country);
- item_bin_add_coord(ib, seg->first, count);
- item_bin_dump(ib, tmp);
-#endif
-
- sort_segments=g_list_next(sort_segments);
- }
- fclose(tmp);
- fclose(in);
-}
-#endif
-
-static void
-node_ref_way(osmid node)
-{
- struct node_item *ni;
- ni=node_item_get(node);
- if (ni)
- ni->ref_way++;
-}
-
-static void
-nodes_ref_item_bin(struct item_bin *ib)
-{
- int i;
- struct coord *c=(struct coord *)(ib+1);
- for (i = 0 ; i < ib->clen/2 ; i++)
- node_ref_way(GET_REF(c[i]));
-}
-
-
-void
-osm_add_nd(osmid ref)
-{
- SET_REF(coord_buffer[coord_count], ref);
- coord_count++;
- if (coord_count > MAX_COORD_COUNT) {
- fprintf(stderr,"ERROR: Overflow - more than %d coordinates in one way.\n", MAX_COORD_COUNT);
- exit(1);
- }
-}
-
-static void
-write_item_way_subsection_index(FILE *out, FILE *out_index, FILE *out_graph, struct item_bin *orig, long long *last_id)
-{
- osmid idx[2];
- idx[0]=item_bin_get_wayid(orig);
- idx[1]=ftello(out);
- if (way_hash) {
- if (!(g_hash_table_lookup_extended(way_hash, (gpointer)(long long)idx[0], NULL, NULL)))
- g_hash_table_insert(way_hash, (gpointer)(long long)idx[0], (gpointer)(long long)idx[1]);
- } else {
- if (!last_id || *last_id != idx[0])
- dbg_assert(fwrite(idx, sizeof(idx), 1, out_index)==1);
- if (last_id)
- *last_id=idx[0];
- }
-}
-
-static void
-write_item_way_subsection(FILE *out, FILE *out_index, FILE *out_graph, struct item_bin *orig, int first, int last, long long *last_id)
-{
- struct item_bin new;
- struct coord *c=(struct coord *)(orig+1);
- char *attr=(char *)(c+orig->clen/2);
- int attr_len=orig->len-orig->clen-2;
- processed_ways++;
- new.type=orig->type;
- new.clen=(last-first+1)*2;
- new.len=new.clen+attr_len+2;
- if (out_index)
- write_item_way_subsection_index(out, out_index, out_graph, orig, last_id);
-#if 0
- fprintf(stderr,"first %d last %d type 0x%x len %d clen %d attr_len %d\n", first, last, new.type, new.len, new.clen, attr_len);
-#endif
- dbg_assert(fwrite(&new, sizeof(new), 1, out)==1);
- dbg_assert(fwrite(c+first, new.clen*4, 1, out)==1);
- dbg_assert(fwrite(attr, attr_len*4, 1, out)==1);
-#if 0
- fwrite(&new, sizeof(new), 1, out_graph);
- fwrite(c+first, new.clen*4, 1, out_graph);
- fwrite(attr, attr_len*4, 1, out_graph);
-#endif
-}
-
-void
-ref_ways(FILE *in)
-{
- struct item_bin *ib;
-
- fseek(in, 0, SEEK_SET);
- while ((ib=read_item(in)))
- nodes_ref_item_bin(ib);
-}
-
-void
-resolve_ways(FILE *in, FILE *out)
-{
- struct item_bin *ib;
- struct coord *c;
- int i;
- struct node_item *ni;
-
- fseek(in, 0, SEEK_SET);
- while ((ib=read_item(in))) {
- c=(struct coord *)(ib+1);
- for (i = 0 ; i < ib->clen/2 ; i++) {
- if(!IS_REF(c[i]))
- continue;
- ni=node_item_get(GET_REF(c[i]));
- if(ni) {
- c[i].x=ni->c.x;
- c[i].y=ni->c.y;
- }
-
- }
- item_bin_write(ib,out);
- }
-}
-
-/**
- * Get POI coordinates from area/line coordinates.
- * @param in *in input file with area/line coordinates.
- * @param in *out output file with POI coordinates
- * @param in type input file original contents type: type_line or type_area
- * @returns nothing
- */
-void
-process_way2poi(FILE *in, FILE *out, int type)
-{
- struct item_bin *ib;
- while ((ib=read_item(in))) {
- int count=ib->clen/2;
- if(count>1 && ib->type<type_line) {
- struct coord *c=(struct coord *)(ib+1), c1, c2;
- int done=0;
- if(type==type_area) {
- if(count<3) {
- osm_warning("way",item_bin_get_wayid(ib),0,"Broken polygon, less than 3 points defined\n");
- } else if(!geom_poly_centroid(c, count, &c1)) {
- osm_warning("way",item_bin_get_wayid(ib),0,"Broken polygon, area is 0\n");
- } else {
- if(geom_poly_point_inside(c, count, &c1)) {
- c[0]=c1;
- } else {
- geom_poly_closest_point(c, count, &c1, &c2);
- c[0]=c2;
- }
- done=1;
- }
- }
- if(!done) {
- geom_line_middle(c,count,&c1);
- c[0]=c1;
- }
- write_item_way_subsection(out, NULL, NULL, ib, 0, 0, NULL);
- }
- }
-}
-
-
-int
-map_resolve_coords_and_split_at_intersections(FILE *in, FILE *out, FILE *out_index, FILE *out_graph, FILE *out_coastline, int final)
-{
- struct coord *c;
- int i,ccount,last,remaining;
- osmid ndref;
- struct item_bin *ib;
- struct node_item *ni;
- long long last_id=0;
- processed_nodes=processed_nodes_out=processed_ways=processed_relations=processed_tiles=0;
- sig_alrm(0);
- while ((ib=read_item(in))) {
-#if 0
- fprintf(stderr,"type 0x%x len %d clen %d\n", ib->type, ib->len, ib->clen);
-#endif
- ccount=ib->clen/2;
- if (ccount <= 1)
- continue;
- c=(struct coord *)(ib+1);
- last=0;
- for (i = 0 ; i < ccount ; i++) {
- if (IS_REF(c[i])) {
- ndref=GET_REF(c[i]);
- ni=node_item_get(ndref);
- if (ni) {
- c[i]=ni->c;
- if (ni->ref_way > 1 && i != 0 && i != ccount-1 && i != last && item_get_default_flags(ib->type)) {
- write_item_way_subsection(out, out_index, out_graph, ib, last, i, &last_id);
- last=i;
- }
- } else if (final) {
- osm_warning("way",item_bin_get_wayid(ib),0,"Non-existing reference to ");
- osm_warning("node",ndref,1,"\n");
- remaining=(ib->len+1)*4-sizeof(struct item_bin)-i*sizeof(struct coord);
- memmove(&c[i], &c[i+1], remaining);
- ib->clen-=2;
- ib->len-=2;
- i--;
- ccount--;
- }
- }
- }
- if (ccount) {
- write_item_way_subsection(out, out_index, out_graph, ib, last, ccount-1, &last_id);
- if (final && ib->type == type_water_line && out_coastline) {
- write_item_way_subsection(out_coastline, NULL, NULL, ib, last, ccount-1, NULL);
- }
- }
- }
- sig_alrm(0);
- sig_alrm_end();
- return 0;
-}
-
-static void
-index_country_add(struct zip_info *info, int country_id, char*first_key, char *last_key, char *tile, char *filename, int size, FILE *out)
-{
- struct item_bin *item_bin=init_item(type_countryindex);
- int num=0, zip_num;
- char tilename[32];
-
- do {
- snprintf(tilename,sizeof(tilename),"%ss%d", tile, num);
- num++;
- zip_num=add_aux_tile(info, tilename, filename, size);
- } while (zip_num == -1);
-
- item_bin_add_attr_int(item_bin, attr_country_id, country_id);
-
- if(first_key)
- item_bin_add_attr_string(item_bin, attr_first_key, first_key);
-
- if(last_key)
- item_bin_add_attr_string(item_bin, attr_last_key, last_key);
-
- item_bin_add_attr_int(item_bin, attr_zipfile_ref, zip_num);
- item_bin_write(item_bin, out);
-}
-
-void
-write_countrydir(struct zip_info *zip_info, int max_index_size)
-{
- int i;
- int max=11;
- char filename[32];
- struct country_table *co;
- for (i = 0 ; i < sizeof(country_table)/sizeof(struct country_table) ; i++) {
- co=&country_table[i];
- if(co->size) {
- FILE *in;
- char countrypart[32];
- char partsuffix[32];
- FILE *out=NULL;
- char *outname=NULL;
- int partsize;
- char buffer[50000];
- struct item_bin *ib=(struct item_bin*)buffer;
- int ibsize;
- char tileco[32]="";
- char tileprev[32]="";
- char tilecur[32]="";
- char *countryindexname;
- FILE *countryindex;
- char key[1024]="",first_key[1024]="",last_key[1024]="";
-
- tile(&co->r, "", tileco, max, overlap, NULL);
-
- snprintf(filename,sizeof(filename),"country_%d.tmp", co->countryid);
- in=fopen(filename,"rb");
-
- snprintf(countrypart,sizeof(countrypart),"country_%d_p",co->countryid);
-
- countryindex=tempfile("0",countrypart,1);
- countryindexname=tempfile_name("0",countrypart);
-
- partsize=0;
-
- while(1) {
- int r=item_bin_read(ib,in);
- struct attr_bin *a;
- ibsize=r>0?(ib->len+1)*4 : 0;
- if(ibsize) {
- g_strlcpy(tileprev,tilecur,sizeof(tileprev));
- a=item_bin_get_attr_bin(ib, attr_tile_name, NULL);
- if(a) {
- g_strlcpy(tilecur,(char *)(a+1),sizeof(tilecur));
- item_bin_remove_attr(ib,a+1);
- }
- else
- tilecur[0]=0;
-
- a=item_bin_get_attr_bin_last(ib);
- if(a && ATTR_IS_STRING(a->type))
- g_strlcpy(key,(char *)(a+1),sizeof(key));
- }
-
- /* If output file is already opened, and:
- - we have reached end of input file, or
- - adding new tile would make index part too big, or
- - item just read belongs to a different tile than the previous one,
- then close existing output file, put reference to the country index tile.*/
- if(out && (!r || (partsize && ((partsize+ibsize)>max_index_size)) || strcmp(tileprev,tilecur)) ) {
- partsize=ftello(out);
- fclose(out);
- out=NULL;
- index_country_add(zip_info,co->countryid,first_key,last_key,strlen(tileco)>strlen(tileprev)?tileco:tileprev,outname,partsize,countryindex);
- g_free(outname);
- outname=NULL;
- g_strlcpy(first_key,key,sizeof(first_key));
- }
-
- /* No items left, finish this country index. */
- if(!r)
- break;
-
- /* Open new output file. */
- if(!out) {
- co->nparts++;
- snprintf(partsuffix,sizeof(partsuffix),"%d",co->nparts);
- out=tempfile(partsuffix,countrypart,1);
- outname=tempfile_name(partsuffix,countrypart);
- partsize=0;
- }
-
- item_bin_write(ib,out);
- partsize+=ibsize;
- g_strlcpy(last_key,key,sizeof(last_key));
- }
-
- partsize=ftello(countryindex);
- if(partsize)
- index_country_add(zip_info,co->countryid,NULL,NULL,tileco,countryindexname, partsize, zip_get_index(zip_info));
- fclose(countryindex);
- g_free(countryindexname);
- fclose(in);
- }
- }
-}
-
-void
-load_countries(void)
-{
- char filename[32];
- FILE *f;
- int i;
- struct country_table *co;
-
- for (i = 0 ; i < sizeof(country_table)/sizeof(struct country_table) ; i++) {
- co=&country_table[i];
- sprintf(filename,"country_%d.tmp", co->countryid);
- f=fopen(filename,"rb");
- if (f) {
- int i,first=1;
- struct item_bin *ib;
- while ((ib=read_item(f))) {
- struct coord *c=(struct coord *)(ib+1);
- co->size+=ib->len*4+4;
- for (i = 0 ; i < ib->clen/2 ; i++) {
- if (first) {
- co->r.l=c[i];
- co->r.h=c[i];
- first=0;
- } else
- bbox_extend(&c[i], &co->r);
- }
- }
- fseek(f, 0, SEEK_END);
- co->size=ftello(f);
- fclose(f);
- }
- }
-}
-
-void
-remove_countryfiles(void)
-{
- int i,j;
- char filename[32];
- struct country_table *co;
-
- for (i = 0 ; i < sizeof(country_table)/sizeof(struct country_table) ; i++) {
- co=&country_table[i];
- if (co->size) {
- sprintf(filename,"country_%d.tmp", co->countryid);
- unlink(filename);
- }
- for(j=0; j<=co->nparts;j++) {
- char partsuffix[32];
- sprintf(filename,"country_%d_p", co->countryid);
- sprintf(partsuffix,"%d",j);
- tempfile_unlink(partsuffix,filename);
- }
- }
-}
-
-void osm_init(FILE* rule_file)
-{
- build_attrmap(rule_file);
- build_countrytable();
-}
-
diff --git a/navit/maptool/osm_o5m.c b/navit/maptool/osm_o5m.c
deleted file mode 100644
index d6957067d..000000000
--- a/navit/maptool/osm_o5m.c
+++ /dev/null
@@ -1,352 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include "maptool.h"
-
-static int print;
-
-static char *types[]={"node","way","relation"};
-
-struct o5m {
- unsigned char buffer[65536*2];
- int buffer_size;
- unsigned char *buffer_start;
- unsigned char *buffer_end;
- FILE *in;
- int error;
-
- int lat, lon, uid, version;
- unsigned long long id, rid[3], changeset;
- time_t timestamp;
- char *user;
-};
-
-static struct string_table {
- char strings[15000][256];
- int pos;
-} st;
-
-static double latlon_scale=10000000.0;
-
-#define buffer_end(o,x) ((o)->buffer_start+(x) > (o)->buffer_end && !fill_buffer((o), (x)))
-
-static int
-fill_buffer(struct o5m *o, int min)
-{
- int count;
-
- memmove(o->buffer, o->buffer_start, o->buffer_end-o->buffer_start);
- o->buffer_end-=o->buffer_start-o->buffer;
- o->buffer_start=o->buffer;
- count=fread(o->buffer_end, 1, o->buffer+o->buffer_size-o->buffer_end, o->in);
- if (!count)
- return 0;
- o->buffer_end+=count;
- return (min <= o->buffer_end - o->buffer);
-}
-
-static unsigned long long
-get_uval(unsigned char **p)
-{
- unsigned char c;
- unsigned long long ret=0;
- int shift=0;
-
- for (;;) {
- c=*((*p)++);
- ret+=((unsigned long long)c & 0x7f) << shift;
- if (!(c & 0x80))
- return ret;
- shift+=7;
- }
-}
-
-static long long
-get_sval(unsigned char **p)
-{
- unsigned long long ret=get_uval(p);
- if (ret & 1) {
- return -((long long)(ret >> 1)+1);
- } else {
- return ret >> 1;
- }
-}
-
-static void
-get_strings(struct string_table *st, unsigned char **p, char **s1, char **s2)
-{
- int len,xlen=0;
- *s1=(char *)*p;
- len=strlen(*s1);
- xlen=1;
- if (s2) {
- *s2=*s1+len+1;
- len+=strlen(*s2);
- xlen++;
- }
- (*p)+=len+xlen;
- if (len <= 250) {
- memcpy(st->strings[st->pos++], *s1, len+xlen);
- if (st->pos >= 15000)
- st->pos=0;
- }
-}
-
-static void
-get_strings_ref(struct string_table *st, int ref, char **s1, char **s2)
-{
- int pos=st->pos-ref;
-
- if (pos < 0)
- pos+=15000;
- *s1=st->strings[pos];
- if (s2)
- *s2=*s1+strlen(*s1)+1;
-}
-
-static void
-print_escaped(char *s)
-{
- for (;;) {
- switch (*s) {
- case 0:
- return;
- case 9:
- case 13:
- case 34:
- case 38:
- case 39:
- case 60:
- case 62:
- printf("&#%d;",*s);
- break;
- default:
- putc(*s,stdout);
- break;
- }
- s++;
- }
-}
-
-static void
-o5m_reset(struct o5m *o)
-{
- o->lat=0;
- o->lon=0;
- o->id=0;
- o->rid[0]=0;
- o->rid[1]=0;
- o->rid[2]=0;
- o->changeset=0;
- o->timestamp=0;
-}
-
-static void
-o5m_print_start(struct o5m *o, int c)
-{
- printf("\t<%s id=\""LONGLONG_FMT"\"",types[c-0x10],o->id);
-}
-
-static void
-o5m_print_version(struct o5m *o, int tags)
-{
- char timestamp_str[64];
- if (o->version) {
- strftime(timestamp_str, sizeof(timestamp_str), "%Y-%m-%dT%H:%M:%SZ", gmtime(&o->timestamp));
- printf(" version=\"%d\" timestamp=\"%s\" changeset=\""LONGLONG_FMT"\"",o->version,timestamp_str,o->changeset);
- if (o->uid) {
- printf(" uid=\"%d\" user=\"",o->uid);
- print_escaped(o->user);
- printf("\"");
- }
- }
- printf("%s\n",tags?">":"/>");
-}
-
-static void
-o5m_print_end(char c)
-{
- printf("\t</%s>\n",types[c-0x10]);
-}
-
-int
-map_collect_data_osm_o5m(FILE *in, struct maptool_osm *osm)
-{
- struct o5m o;
- unsigned char c, *end, *rend;
- int len, rlen, ref, tags;
- char *uidstr, *role;
-
- if (print) {
- printf("<?xml version='1.0' encoding='UTF-8'?>\n");
- printf("<osm version=\"0.6\" generator=\"osmconvert 0.1X6\">\n");
- }
-
-
- o5m_reset(&o);
- o.buffer_size=sizeof(o.buffer);
- o.buffer_start=o.buffer;
- o.buffer_end=o.buffer;
- o.error=0;
- o.in=in;
-
- fill_buffer(&o,1);
- for (;;) {
- if (buffer_end(&o, 1)) {
- fprintf(stderr,"unexpected eof\n");
- return 1;
- }
- c=*(o.buffer_start++);
- switch (c) {
- case 0x10:
- case 0x11:
- case 0x12:
- (void)buffer_end(&o, 4);
- len=get_uval(&o.buffer_start);
- if (o.buffer_start > o.buffer_end) {
- fprintf(stderr,"unexpected eof\n");
- return 0;
- }
- if (buffer_end(&o, len)) {
- fprintf(stderr,"unexpected eof or buffer too small, item type %d, item size %d\n", c, len);
- return 0;
- }
- end=o.buffer_start+len;
- o.id+=get_sval(&o.buffer_start);
- o.version=get_uval(&o.buffer_start);
- if (o.version) {
- o.timestamp+=get_sval(&o.buffer_start);
- if (o.timestamp) {
- o.changeset+=get_sval(&o.buffer_start);
- ref=get_uval(&o.buffer_start);
- if (ref)
- get_strings_ref(&st, ref, &uidstr, &o.user);
- else
- get_strings(&st, &o.buffer_start, &uidstr, &o.user);
- o.uid=get_uval((unsigned char **)&uidstr);
- }
- }
- if (print)
- o5m_print_start(&o, c);
- switch (c) {
- case 0x10:
- o.lon+=get_sval(&o.buffer_start);
- o.lat+=get_sval(&o.buffer_start);
- osm_add_node(o.id, o.lat/latlon_scale,o.lon/latlon_scale);
- tags=end > o.buffer_start;
- if (print) {
- printf(" lat=\"%.7f\" lon=\"%.7f\"",o.lat/10000000.0,o.lon/10000000.0);
- o5m_print_version(&o, tags);
- }
- break;
- case 0x11:
- osm_add_way(o.id);
- rlen=get_uval(&o.buffer_start);
- tags=end > o.buffer_start;
- rend=o.buffer_start+rlen;
- if (print)
- o5m_print_version(&o, tags);
- while (o.buffer_start < rend) {
- o.rid[0]+=get_sval(&o.buffer_start);
- osm_add_nd(o.rid[0]);
- if (print)
- printf("\t\t<nd ref=\""LONGLONG_FMT"\"/>\n",o.rid[0]);
- }
- break;
- case 0x12:
- osm_add_relation(o.id);
- rlen=get_uval(&o.buffer_start);
- tags=end > o.buffer_start;
- rend=o.buffer_start+rlen;
- if (print)
- o5m_print_version(&o, tags);
- while (o.buffer_start < rend) {
- long long delta=get_sval(&o.buffer_start);
- int r;
- ref=get_uval(&o.buffer_start);
- if (ref)
- get_strings_ref(&st, ref, &role, NULL);
- else
- get_strings(&st, &o.buffer_start, &role, NULL);
- r=role[0]-'0';
- if (r < 0)
- r=0;
- if (r > 2)
- r=2;
- o.rid[r]+=delta;
- osm_add_member(r+1, o.rid[r], role+1);
- if (print)
- printf("\t\t<member type=\"%s\" ref=\""LONGLONG_FMT"\" role=\"%s\"/>\n",types[r], o.rid[r], role+1);
- }
- break;
- }
- while (end > o.buffer_start) {
- char *k, *v;
- ref=get_uval(&o.buffer_start);
- if (ref)
- get_strings_ref(&st, ref, &k, &v);
- else
- get_strings(&st, &o.buffer_start, &k, &v);
- osm_add_tag(k, v);
- if (print) {
- printf("\t\t<tag k=\"");
- print_escaped(k);
- printf("\" v=\"");
- print_escaped(v);
- printf("\"/>\n");
- }
- }
- if (print && tags) {
- o5m_print_end(c);
- }
- switch (c) {
- case 0x10:
- osm_end_node(osm);
- break;
- case 0x11:
- osm_end_way(osm);
- break;
- case 0x12:
- osm_end_relation(osm);
- break;
- }
- break;
- case 0xdb:
- if (print)
- printf("\t<bounds minlat=\"-180.0000000\" minlon=\"-90.0000000\" maxlat=\"180.0000000\" maxlon=\"90.0000000\"/>\n");
- len=get_uval(&o.buffer_start);
- if (o.buffer_start > o.buffer_end) {
- return 0;
- }
- if (buffer_end(&o, len)) {
- return 0;
- }
- o.buffer_start+=len;
- break;
- case 0xe0:
- if (buffer_end(&o, 5))
- return 0;
- o.buffer_start+=5;
- break;
- case 0xfe:
- return 1;
- case 0xff:
- o5m_reset(&o);
- break;
- default:
- fprintf(stderr,"Unknown tag 0x%x\n",c);
- /* Fall through */
- case 0xdc: /* File timestamp: silently ignore it */
- len=get_uval(&o.buffer_start);
- if (o.buffer_start > o.buffer_end) {
- return 0;
- }
- if (buffer_end(&o, len)) {
- return 0;
- }
- o.buffer_start+=len;
- break;
- }
- }
- return 0;
-}
diff --git a/navit/maptool/osm_protobuf.c b/navit/maptool/osm_protobuf.c
deleted file mode 100644
index b6eb5f2ca..000000000
--- a/navit/maptool/osm_protobuf.c
+++ /dev/null
@@ -1,385 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <unistd.h>
-#include <time.h>
-#include <zlib.h>
-#include "maptool.h"
-#include "debug.h"
-#include "linguistics.h"
-#include "file.h"
-#include "generated-code/fileformat.pb-c.h"
-#include "generated-code/osmformat.pb-c.h"
-
-
-static double latlon_scale=10000000.0;
-
-/* Maximum length of a BlobHeader, see
- * http://wiki.openstreetmap.org/wiki/PBF_Format */
-#define MAX_HEADER_LENGTH 1024 * 64
-/* Maximum length of a Blob */
-#define MAX_BLOB_LENGTH 1024 * 1024 * 32
-
-#define SANITY_CHECK_LENGTH(length, max_length) \
- if (length > max_length){ \
- fprintf(stderr,"Not a valid protobuf file. " \
- "Invalid block size in input: %d, max is %d. \n", \
- length, max_length); \
- return NULL; \
- }
-
-static OSMPBF__BlobHeader *
-read_header(FILE *f)
-{
- unsigned char *buffer,lenb[4];
- int len;
-
- if (fread(lenb, 4, 1, f) != 1)
- return NULL;
- len=(lenb[0] << 24) | (lenb[1] << 16) | (lenb[2] << 8) | lenb[3];
- SANITY_CHECK_LENGTH(len, MAX_HEADER_LENGTH)
- buffer=alloca(len);
- if (fread(buffer, len, 1, f) != 1)
- return NULL;
- return osmpbf__blob_header__unpack(&protobuf_c_system_allocator, len, buffer);
-}
-
-
-static OSMPBF__Blob *
-read_blob(OSMPBF__BlobHeader *header, FILE *f, unsigned char *buffer)
-{
- int len=header->datasize;
- SANITY_CHECK_LENGTH(len, MAX_BLOB_LENGTH)
- if (fread(buffer, len, 1, f) != 1)
- return NULL;
- return osmpbf__blob__unpack(&protobuf_c_system_allocator, len, buffer);
-}
-
-static unsigned char *
-uncompress_blob(OSMPBF__Blob *blob)
-{
- unsigned char *ret=malloc(blob->raw_size);
- int zerr;
- z_stream strm;
-
- if (!ret)
- return NULL;
- strm.zalloc = Z_NULL;
- strm.zfree = Z_NULL;
- strm.opaque = Z_NULL;
- strm.avail_in=blob->zlib_data.len;
- strm.next_in=blob->zlib_data.data;
- strm.avail_out=blob->raw_size;
- strm.next_out=ret;
- zerr = inflateInit(&strm);
- if (zerr != Z_OK) {
- free(ret);
- return NULL;
- }
- zerr = inflate(&strm, Z_NO_FLUSH);
- if (zerr != Z_STREAM_END) {
- free(ret);
- return NULL;
- }
- inflateEnd(&strm);
- return ret;
-}
-
-static int
-get_string(char *buffer, int buffer_size, OSMPBF__PrimitiveBlock *primitive_block, int id, int escape)
-{
- int len=primitive_block->stringtable->s[id].len;
- char *data=(char *)primitive_block->stringtable->s[id].data;
- if (primitive_block->stringtable->s[id].len >= buffer_size) {
- buffer[0]='\0';
- return 0;
- }
- if (escape) {
- int i;
- char *p=buffer;
- for (i = 0 ; i < len ; i++) {
- switch(data[i]) {
- case '\t':
- case '\r':
- case '\n':
- case '>':
- case '<':
- case '\'':
- case '"':
- case '&':
- sprintf(p,"&#%d;",data[i]);
- p+=strlen(p);
- break;
- default:
- *p++=data[i];
- }
- }
- *p++='\0';
- return 1;
- } else {
- strncpy(buffer, data, len);
- buffer[len]='\0';
- return 1;
- }
-}
-
-
-static void
-process_osmheader(OSMPBF__Blob *blob, unsigned char *data)
-{
- OSMPBF__HeaderBlock *header_block;
- header_block=osmpbf__header_block__unpack(&protobuf_c_system_allocator, blob->raw_size, data);
- osmpbf__header_block__free_unpacked(header_block, &protobuf_c_system_allocator);
-}
-
-#if 0
-
-static void
-process_user(OSMPBF__PrimitiveBlock *primitive_block, int user_sid, int uid, int swap)
-{
- char userbuff[1024];
- get_string(userbuff, sizeof(userbuff), primitive_block, user_sid, 1);
- if (userbuff[0] && uid != -1) {
- if (swap)
- printf(" uid=\"%d\" user=\"%s\"",uid,userbuff);
- else
- printf(" user=\"%s\" uid=\"%d\"",userbuff,uid);
- }
-}
-
-static void
-process_timestamp(long long timestamp)
-{
- time_t ts;
- struct tm *tm;
- char tsbuff[1024];
- ts=timestamp;
- tm=gmtime(&ts);
- strftime(tsbuff, sizeof(tsbuff), "%Y-%m-%dT%H:%M:%SZ", tm);
- printf(" timestamp=\"%s\"",tsbuff);
-}
-
-#endif
-
-static void
-process_tag(OSMPBF__PrimitiveBlock *primitive_block, int key, int val)
-{
- char keybuff[1024];
- char valbuff[1024];
-#if 0
- get_string(keybuff, sizeof(keybuff), primitive_block, key, 1);
- get_string(valbuff, sizeof(valbuff), primitive_block, val, 1);
- printf("\t\t<tag k=\"%s\" v=\"%s\" />\n",keybuff,valbuff);
-#else
- get_string(keybuff, sizeof(keybuff), primitive_block, key, 0);
- get_string(valbuff, sizeof(valbuff), primitive_block, val, 0);
- osm_add_tag(keybuff, valbuff);
-#endif
-}
-
-
-static void
-process_dense(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__DenseNodes *dense, struct maptool_osm *osm)
-{
- int i,j=0,has_tags;
- long long id=0,lat=0,lon=0,changeset=0,timestamp=0;
- int user_sid=0,uid=0;
-
- if (!dense)
- return;
-
- for (i = 0 ; i < dense->n_id ; i++) {
- id+=dense->id[i];
- lat+=dense->lat[i];
- lon+=dense->lon[i];
- changeset+=dense->denseinfo->changeset[i];
- user_sid+=dense->denseinfo->user_sid[i];
- uid+=dense->denseinfo->uid[i];
- timestamp+=dense->denseinfo->timestamp[i];
- has_tags=dense->keys_vals && dense->keys_vals[j];
- osm_add_node(id, lat/latlon_scale,lon/latlon_scale);
-#if 0
- printf("\t<node id=\"%Ld\" lat=\"%.7f\" lon=\"%.7f\" version=\"%d\" changeset=\"%Ld\"",id,lat/latlon_scale,lon/latlon_scale,dense->denseinfo->version[i],changeset);
- process_user(primitive_block, user_sid, uid, 0);
- process_timestamp(timestamp);
-#endif
- if (has_tags) {
-#if 0
- printf(">\n");
-#endif
- while (dense->keys_vals[j]) {
- process_tag(primitive_block, dense->keys_vals[j], dense->keys_vals[j+1]);
- j+=2;
- }
-#if 0
- printf("\t</node>\n");
- } else
- printf("/>\n");
-#else
- }
-#endif
- osm_end_node(osm);
- j++;
- }
-}
-
-#if 0
-static void
-process_info(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__Info *info)
-{
- printf(" version=\"%d\" changeset=\"%Ld\"",info->version,info->changeset);
- process_user(primitive_block, info->user_sid, info->uid, 1);
- process_timestamp(info->timestamp);
-}
-#endif
-
-static void
-process_way(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__Way *way, struct maptool_osm *osm)
-{
- int i;
- long long ref=0;
-
- osm_add_way(way->id);
-#if 0
- printf("\t<way id=\"%Ld\"",way->id);
- process_info(primitive_block, way->info);
- printf(">\n");
-#else
-#endif
- for (i = 0 ; i < way->n_refs ; i++) {
- ref+=way->refs[i];
- osm_add_nd(ref);
-#if 0
- printf("\t\t<nd ref=\"%Ld\"/>\n",ref);
-#else
-#endif
- }
- for (i = 0 ; i < way->n_keys ; i++)
- process_tag(primitive_block, way->keys[i], way->vals[i]);
-#if 0
- printf("\t</way>\n");
-#endif
- osm_end_way(osm);
-}
-
-static void
-process_relation(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__Relation *relation, struct maptool_osm *osm)
-{
- int i;
- long long ref=0;
- char rolebuff[1024];
-
-#if 0
- printf("\t<relation id=\"%Ld\"",relation->id);
- process_info(primitive_block, relation->info);
- printf(">\n");
-#endif
- osm_add_relation(relation->id);
- for (i = 0 ; i < relation->n_roles_sid ; i++) {
-#if 0
- printf("\t\t<member type=\"");
- switch (relation->types[i]) {
- case 0:
- printf("node");
- break;
- case 1:
- printf("way");
- break;
- case 2:
- printf("relation");
- break;
- default:
- printf("unknown");
- break;
- }
-#endif
- ref+=relation->memids[i];
- get_string(rolebuff, sizeof(rolebuff), primitive_block, relation->roles_sid[i], 1);
-#if 0
- printf("\" ref=\"%Ld\" role=\"%s\"/>\n",ref,rolebuff);
-#else
- osm_add_member(relation->types[i]+1,ref,rolebuff);
-#endif
- }
- for (i = 0 ; i < relation->n_keys ; i++)
- process_tag(primitive_block, relation->keys[i], relation->vals[i]);
-#if 0
- printf("\t</relation>\n");
-#else
- osm_end_relation(osm);
-#endif
-}
-
-static void
-process_osmdata(OSMPBF__Blob *blob, unsigned char *data, struct maptool_osm *osm)
-{
- int i,j;
- OSMPBF__PrimitiveBlock *primitive_block;
- primitive_block=osmpbf__primitive_block__unpack(&protobuf_c_system_allocator, blob->raw_size, data);
- for (i = 0 ; i < primitive_block->n_primitivegroup ; i++) {
- OSMPBF__PrimitiveGroup *primitive_group=primitive_block->primitivegroup[i];
- process_dense(primitive_block, primitive_group->dense, osm);
- for (j = 0 ; j < primitive_group->n_ways ; j++)
- process_way(primitive_block, primitive_group->ways[j], osm);
- for (j = 0 ; j < primitive_group->n_relations ; j++)
- process_relation(primitive_block, primitive_group->relations[j], osm);
-#if 0
- printf("Group %p %d %d %d %d\n",primitive_group->dense,primitive_group->n_nodes,primitive_group->n_ways,primitive_group->n_relations,primitive_group->n_changesets);
-#endif
- }
- osmpbf__primitive_block__free_unpacked(primitive_block, &protobuf_c_system_allocator);
-}
-
-
-int
-map_collect_data_osm_protobuf(FILE *in, struct maptool_osm *osm)
-{
- OSMPBF__BlobHeader *header;
- OSMPBF__Blob *blob;
- unsigned char *data;
- unsigned char *buffer=malloc(MAX_BLOB_LENGTH);
-
-#if 0
- printf("<?xml version='1.0' encoding='UTF-8'?>\n");
- printf("<osm version=\"0.6\" generator=\"pbf2osm\">\n");
-#endif
- while ((header=read_header(in))) {
- blob=read_blob(header, in, buffer);
- data=uncompress_blob(blob);
- if (!strcmp(header->type,"OSMHeader")) {
- process_osmheader(blob, data);
- } else if (!strcmp(header->type,"OSMData")) {
- process_osmdata(blob, data, osm);
- } else {
- printf("skipping fileblock of unknown type '%s'\n", header->type);
- free(buffer);
- return 0;
- }
- free(data);
- osmpbf__blob__free_unpacked(blob, &protobuf_c_system_allocator);
- osmpbf__blob_header__free_unpacked(header, &protobuf_c_system_allocator);
- }
- free(buffer);
-#if 0
- printf("</osm>\n");
-#endif
- return 1;
-}
diff --git a/navit/maptool/osm_protobufdb.c b/navit/maptool/osm_protobufdb.c
deleted file mode 100644
index 2b242df9c..000000000
--- a/navit/maptool/osm_protobufdb.c
+++ /dev/null
@@ -1,865 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <unistd.h>
-#include <time.h>
-#include <zlib.h>
-#include "maptool.h"
-#include "debug.h"
-#include "linguistics.h"
-#include "file.h"
-#include "generated-code/fileformat.pb-c.h"
-#include "generated-code/osmformat.pb-c.h"
-
-static double latlon_scale=10000000.0;
-
-struct db_config {
- int node_ids_per_file;
- int node_ids_per_blob;
- int node_ids_per_group;
- int way_ids_per_file;
- int way_ids_per_blob;
- int way_ids_per_group;
- int relation_ids_per_file;
- int relation_ids_per_blob;
- int relation_ids_per_group;
-} db_config = {
- 200000, 30000, 500,
- 40000, 1000, 30,
- 10000, 500, 20,
-};
-
-struct osm_protobufdb_context {
- int current_file, current_block, active_block;
- int in_node, in_way, in_relation;
- OSMPBF__Node n;
- OSMPBF__Way w;
- OSMPBF__Relation r;
- OSMPBF__Info i;
- FILE *f;
- OSMPBF__PrimitiveBlock *pb;
- OSMPBF__PrimitiveGroup *pg;
- GHashTable *string_hash;
- OSMPBF__DenseInfo *di;
- OSMPBF__DenseNodes *dn;
- OSMPBF__StringTable *st;
-} context;
-
-static int
-osm_protobufdb_write_blob(OSMPBF__Blob *blob, FILE *out)
-{
- unsigned char lenb[4];
- int len,blen;
- unsigned char *buffer;
- OSMPBF__BlobHeader header=OSMPBF__BLOB_HEADER__INIT;
-
-
-
- blen=osmpbf__blob__get_packed_size(blob);
- header.type="OSMData";
- header.datasize=blen;
- len=osmpbf__blob_header__get_packed_size(&header);
- buffer=alloca(len);
- lenb[0]=len>>24;
- lenb[1]=len>>16;
- lenb[2]=len>>8;
- lenb[3]=len;
- osmpbf__blob_header__pack(&header, buffer);
- if (fwrite(lenb, sizeof(lenb), 1, out) != 1)
- return 0;
- if (fwrite(buffer, len, 1, out) != 1)
- return 0;
- buffer=alloca(blen);
- osmpbf__blob__pack(blob, buffer);
- if (fwrite(buffer, blen, 1, out) != 1)
- return 0;
- return 1;
-}
-
-#if 0
-void
-dump_block(OSMPBF__PrimitiveBlock *pb)
-{
- int i,j;
- printf("%d groups\n",pb->n_primitivegroup);
- for (i = 0 ; i < pb->n_primitivegroup ; i++) {
- printf("%d relations\n",pb->primitivegroup[i]->n_relations);
- for (j = 0 ; j < pb->primitivegroup[i]->n_relations ; j++) {
- printf("Info %d\n",pb->primitivegroup[i]->relations[j]->info->version);
- }
- }
-}
-#endif
-
-static int
-osm_protobufdb_finish_block(struct osm_protobufdb_context *ctx)
-{
- OSMPBF__Blob *blob,empty_blob=OSMPBF__BLOB__INIT;
- int len;
- if (!ctx->pb)
- return 0;
- len=osmpbf__primitive_block__get_packed_size(ctx->pb);
-
- while (ctx->current_block < ctx->active_block) {
- osm_protobufdb_write_blob(&empty_blob, ctx->f);
- ctx->current_block++;
- }
- blob=malloc(sizeof(*blob));
- *blob=empty_blob;
- blob->has_raw=1;
- blob->has_raw_size=1;
- blob->raw.data=malloc(len);
- osmpbf__primitive_block__pack(ctx->pb, blob->raw.data);
- blob->raw.len=len;
- blob->raw_size=len;
- osm_protobufdb_write_blob(blob, ctx->f);
- osmpbf__blob__free_unpacked(blob, &protobuf_c_system_allocator);
- osmpbf__primitive_block__free_unpacked(ctx->pb, &protobuf_c_system_allocator);
- ctx->pb=NULL;
- ctx->current_block++;
- return 1;
-}
-
-static int
-osm_protobufdb_start_block(struct osm_protobufdb_context *ctx, int blocknum)
-{
- OSMPBF__PrimitiveBlock pb=OSMPBF__PRIMITIVE_BLOCK__INIT;
- OSMPBF__StringTable st=OSMPBF__STRING_TABLE__INIT;
- if (ctx->active_block == blocknum)
- return 0;
- osm_protobufdb_finish_block(ctx);
- ctx->active_block=blocknum;
- ctx->pb=malloc(sizeof(*ctx->pb));
- *ctx->pb=pb;
- ctx->pb->stringtable=malloc(sizeof(*ctx->pb->stringtable));
- *ctx->pb->stringtable=st;
- ctx->st=ctx->pb->stringtable;
- return 1;
-}
-
-static int
-osm_protobufdb_start_group(struct osm_protobufdb_context *ctx, int groupnum)
-{
- OSMPBF__PrimitiveGroup pg=OSMPBF__PRIMITIVE_GROUP__INIT;
- if (ctx->pb->n_primitivegroup <= groupnum) {
- ctx->pb->primitivegroup=realloc(ctx->pb->primitivegroup, (groupnum+1)*sizeof(ctx->pb->primitivegroup[0]));
- while (ctx->pb->n_primitivegroup <= groupnum) {
- ctx->pb->primitivegroup[ctx->pb->n_primitivegroup]=malloc(sizeof(*context.pg));
- *ctx->pb->primitivegroup[ctx->pb->n_primitivegroup++]=pg;
- }
- g_hash_table_destroy(ctx->string_hash);
- ctx->string_hash=g_hash_table_new(g_str_hash, g_str_equal);
- }
- ctx->pg=ctx->pb->primitivegroup[groupnum];
- if (!ctx->pg) {
- ctx->pg=malloc(sizeof(*context.pg));
- *ctx->pg=pg;
- ctx->pb->primitivegroup[groupnum]=ctx->pg;
- }
- return 1;
-}
-
-#if 0
-static int
-osm_protobufdb_start_densenode(struct osm_protobufdb_context *ctx)
-{
- OSMPBF__DenseInfo di=OSMPBF__DENSE_INFO__INIT;
- OSMPBF__DenseNodes dn=OSMPBF__DENSE_NODES__INIT;
-
- if (!ctx->pg->dense) {
- ctx->dn=malloc(sizeof(*context.dn));
- *ctx->dn=dn;
- ctx->pg->dense=ctx->dn;
- } else
- ctx->dn=ctx->pg->dense;
- if (!ctx->dn->denseinfo) {
- ctx->di=malloc(sizeof(*context.di));
- *ctx->di=di;
- ctx->dn->denseinfo=ctx->di;
- } else
- ctx->di=ctx->dn->denseinfo;
- return 1;
-}
-
-static void
-osm_protobufdb_write_primitive_group(OSMPBF__PrimitiveGroup *pg, OSMPBF__PrimitiveBlock *pb)
-{
- pb->primitivegroup=realloc(pb->primitivegroup,(pb->n_primitivegroup+1)*sizeof(OSMPBF__PrimitiveGroup *));
- pb->primitivegroup[pb->n_primitivegroup++]=pg;
-}
-#endif
-
-
-#define insert(struct, member, pos) {\
- int n=struct->n_##member; \
- int s=sizeof(struct->member[0]); \
- struct->member=realloc(struct->member, (n+1)*s); \
- memmove(&struct->member[n+1], &struct->member[n], (pos-n)*s); \
- memset(&struct->member[n], 0, s); \
- struct->n_##member++;\
-}
-
-#if 0
-static int
-osm_protobufdb_insert_densenode(long long id, OSMPBF__Node *offset, OSMPBF__Info *offseti, OSMPBF__DenseNodes *dn)
-{
- int i,l,p;
- memset(offset, 0, sizeof(*offset));
- offseti->timestamp=0;
- offseti->changeset=0;
- offseti->user_sid=0;
- offseti->uid=0;
- l=dn->n_id;
- for (i = 0 ; i < l ; i++) {
- offset->id+=dn->id[i];
- offset->lat+=dn->lat[i];
- offset->lon+=dn->lon[i];
- offseti->timestamp+=dn->denseinfo->timestamp[i];
- offseti->changeset+=dn->denseinfo->changeset[i];
- offseti->user_sid+=dn->denseinfo->user_sid[i];
- offseti->uid+=dn->denseinfo->uid[i];
- }
- p=l;
- insert(dn, id, p);
- insert(dn, lat, p);
- insert(dn, lon, p);
- insert(dn->denseinfo, version, p);
- insert(dn->denseinfo, timestamp, p);
- insert(dn->denseinfo, changeset, p);
- insert(dn->denseinfo, user_sid, p);
- insert(dn->denseinfo, uid, p);
- return p;
-}
-
-static void
-osm_protobufdb_modify_densenode(OSMPBF__Node *node, OSMPBF__Info *info, OSMPBF__Node *offset, OSMPBF__Info *offseti, int pos, OSMPBF__DenseNodes *dn)
-{
- int i;
- if (pos+1 < dn->n_id) {
- dn->id[pos+1]+=dn->id[pos]-node->id;
- dn->lat[pos+1]+=dn->lat[pos]-node->lat;
- dn->lon[pos+1]+=dn->lon[pos]-node->lon;
- dn->denseinfo->timestamp[pos+1]+=dn->denseinfo->timestamp[pos]-info->timestamp;
- dn->denseinfo->changeset[pos+1]+=dn->denseinfo->changeset[pos]-info->changeset;
- dn->denseinfo->user_sid[pos+1]+=dn->denseinfo->user_sid[pos]-info->user_sid;
- dn->denseinfo->uid[pos+1]+=dn->denseinfo->uid[pos]-info->uid;
- }
- dn->id[pos]=node->id-offset->id;
- dn->lat[pos]=node->lat-offset->lat;
- dn->lon[pos]=node->lon-offset->lon;
- dn->keys_vals=realloc(dn->keys_vals, (dn->n_keys_vals+node->n_keys+node->n_vals+1)*sizeof(dn->keys_vals[0]));
- for (i = 0 ; i < node->n_keys ; i++) {
- dn->keys_vals[dn->n_keys_vals++]=node->keys[i];
- dn->keys_vals[dn->n_keys_vals++]=node->vals[i];
- }
- dn->keys_vals[dn->n_keys_vals++]=0;
- dn->denseinfo->version[pos]=info->version;
- dn->denseinfo->timestamp[pos]=info->timestamp-offseti->timestamp;
- dn->denseinfo->changeset[pos]=info->changeset-offseti->changeset;
- dn->denseinfo->user_sid[pos]=info->user_sid-offseti->user_sid;
- dn->denseinfo->uid[pos]=info->uid-offseti->uid;
-}
-#endif
-
-static int
-osm_protobufdb_insert_node(long long id, OSMPBF__PrimitiveGroup *pg)
-{
- int l,p;
- OSMPBF__Node node=OSMPBF__NODE__INIT;
- l=pg->n_nodes;
- p=l;
- insert(pg, nodes, p);
- pg->nodes[p]=malloc(sizeof(*pg->nodes[0]));
- *pg->nodes[p]=node;
- return p;
-}
-
-static void
-osm_protobufdb_modify_node(OSMPBF__Node *node, OSMPBF__Info *info, int pos, OSMPBF__PrimitiveGroup *pg)
-{
- OSMPBF__Node *n=pg->nodes[pos];
- OSMPBF__Info *old_info;
-
- if (n->keys)
- free(n->keys);
- if (n->vals)
- free(n->vals);
- old_info=n->info;
- *n=*node;
- if (!info) {
- if (old_info)
- osmpbf__info__free_unpacked(old_info, &protobuf_c_system_allocator);
- n->info=NULL;
- } else {
- if (old_info)
- n->info=old_info;
- else
- n->info=malloc(sizeof(*info));
- *n->info=*info;
- }
-
-}
-
-static int
-osm_protobufdb_insert_way(long long id, OSMPBF__PrimitiveGroup *pg)
-{
- int l,p;
- OSMPBF__Way way=OSMPBF__WAY__INIT;
- l=pg->n_ways;
- p=l;
- insert(pg, ways, p);
- pg->ways[p]=malloc(sizeof(*pg->ways[0]));
- *pg->ways[p]=way;
- return p;
-}
-
-static void
-osm_protobufdb_modify_way(OSMPBF__Way *way, OSMPBF__Info *info, int pos, OSMPBF__PrimitiveGroup *pg)
-{
- OSMPBF__Way *w=pg->ways[pos];
- OSMPBF__Info *old_info;
- int i;
- long long ref=0;
-
- if (w->keys)
- free(w->keys);
- if (w->vals)
- free(w->vals);
- if (w->refs)
- free(w->refs);
- old_info=w->info;
- *w=*way;
- for (i = 0 ; i < w->n_refs ; i++) {
- w->refs[i]-=ref;
- ref+=w->refs[i];
- }
- if (!info) {
- if (old_info)
- osmpbf__info__free_unpacked(old_info, &protobuf_c_system_allocator);
- w->info=NULL;
- } else {
- if (old_info)
- w->info=old_info;
- else
- w->info=malloc(sizeof(*info));
- *w->info=*info;
- }
-
-}
-
-static int
-osm_protobufdb_insert_relation(long long id, OSMPBF__PrimitiveGroup *pg)
-{
- int l,p;
- OSMPBF__Relation relation=OSMPBF__RELATION__INIT;
- l=pg->n_relations;
- p=l;
- insert(pg, relations, p);
- pg->relations[p]=malloc(sizeof(*pg->relations[0]));
- *pg->relations[p]=relation;
- return p;
-}
-
-static void
-osm_protobufdb_modify_relation(OSMPBF__Relation *relation, OSMPBF__Info *info, int pos, OSMPBF__PrimitiveGroup *pg)
-{
- OSMPBF__Relation *r=pg->relations[pos];
- OSMPBF__Info *old_info;
- int i;
- long long ref=0;
-
- if (r->keys)
- free(r->keys);
- if (r->vals)
- free(r->vals);
- if (r->roles_sid)
- free(r->roles_sid);
- if (r->memids)
- free(r->memids);
- if (r->types)
- free(r->types);
- old_info=r->info;
- *r=*relation;
- for (i = 0 ; i < r->n_memids ; i++) {
- r->memids[i]-=ref;
- ref+=r->memids[i];
- }
- if (!info) {
- if (old_info)
- osmpbf__info__free_unpacked(old_info, &protobuf_c_system_allocator);
- r->info=NULL;
- } else {
- if (old_info)
- r->info=old_info;
- else
- r->info=malloc(sizeof(*info));
- *r->info=*info;
- }
-
-}
-
-static int
-osm_protobufdb_string(struct osm_protobufdb_context *ctx, char *str)
-{
- char *strd;
- OSMPBF__StringTable *st=ctx->st;
-
- gpointer value;
- assert(ctx->string_hash != NULL);
- if (g_hash_table_lookup_extended(ctx->string_hash, str, NULL, &value)) {
- return (long)value;
- }
- if (!st->n_s) {
- st->n_s++;
- }
- strd=strdup(str);
- st->s=realloc(st->s, sizeof(st->s[0])*(st->n_s+1));
- if (st->n_s == 1) {
- st->s[0].data=NULL;
- st->s[0].len=0;
- }
- st->s[st->n_s].data=(unsigned char *)strd;
- st->s[st->n_s].len=strlen(strd);
- g_hash_table_insert(ctx->string_hash, strd, (gpointer)st->n_s);
- return st->n_s++;
-}
-
-
-static int
-osm_protobufdb_finish_file(struct osm_protobufdb_context *ctx)
-{
- osm_protobufdb_finish_block(ctx);
- if (ctx->f) {
- fclose(ctx->f);
- ctx->f=NULL;
- }
- ctx->current_file=-1;
- return 1;
-}
-
-
-static int
-osm_protobufdb_start_file(struct osm_protobufdb_context *ctx, int type, int num)
-{
- char name[1024];
- if (ctx->current_file == num)
- return 0;
- osm_protobufdb_finish_file(ctx);
- sprintf(name,"tst/%d-%08d",type,num);
- ctx->f=fopen(name,"w");
- ctx->current_file=num;
- ctx->current_block=0;
- ctx->active_block=-1;
- return 1;
-}
-
-static void
-test(void)
-{
-#if 0
- struct node n,o;
- long long id=1;
- long long lat=0;
- long long lon=0;
- long long timestamp=0;
- long long changeset=0;
- int version=1;
- int user_sid=0;
- int uid=0;
- int p;
- n.id=1;
-#endif
-#if 0
- OSMPBF__DenseInfo di=OSMPBF__DENSE_INFO__INIT;
- OSMPBF__DenseNodes dn=OSMPBF__DENSE_NODES__INIT;
-#endif
-
- context.current_file=-1;
-
-#if 0
- context.di=malloc(sizeof(*context.di));
- *context.di=di;
- context.dn=malloc(sizeof(*context.dn));
- *context.dn=dn;
-#endif
-
-#if 0
- di.n_version=1;
- di.version=&version;
- di.n_timestamp=1;
- di.timestamp=&timestamp;
- di.n_changeset=1;
- di.changeset=&changeset;
- di.n_user_sid=1;
- di.user_sid=&user_sid;
- di.n_uid=1;
- di.uid=&uid;
-#endif
-#if 0
- n.id=1;
- n.lat=1;
- n.lon=1;
- n.timestamp=1;
- n.changeset=1;
- n.version=1;
- n.user_sid=0;
- n.uid=0;
- p=osm_protobufdb_insert_densenode(&n.id, &o, &dn);
- osm_protobufdb_modify(&n, &o, p, &dn);
- p=osm_protobufdb_insert_densenode(&n.id, &o, &dn);
- osm_protobufdb_modify(&n, &o, p, &dn);
-#endif
-
-
-#if 0
- dn.n_id=1;
- dn.id=&id;
- dn.n_lat=1;
- dn.lat=&lat;
- dn.n_lon=1;
- dn.lon=&lon;
-#endif
-#if 0
- st.n_s=1;
- data.data="Test";
- data.len=4;
- st.s=&data;
-#endif
-}
-
-static void
-finish(void)
-{
- osm_protobufdb_finish_file(&context);
-#if 0
- osm_protobufdb_write_primitive_group(context.pg, context.pb);
- osm_protobufdb_write_primitive_block(context.pb, context.blob);
- osm_protobufdb_write_blob_to_file();
-#endif
-}
-
-static long long
-osm_protobufdb_timestamp(char *str)
-{
- struct tm tm;
- int res=sscanf(str,"%d-%d-%dT%d:%d:%dZ",&tm.tm_year,&tm.tm_mon,&tm.tm_mday,&tm.tm_hour,&tm.tm_min,&tm.tm_sec);
- if (res != 6)
- return 0;
- tm.tm_year-=1900;
- tm.tm_mon-=1;
-#if defined(HAVE_API_WIN32_BASE) || defined(ANDROID)
- return 0;
-#else
- return timegm(&tm);
-#endif
-}
-
-static void
-osm_protobufdb_parse_info(struct osm_protobufdb_context *ctx, char *str)
-{
- char version[1024];
- char changeset[1024];
- char user[1024];
- char uid[1024];
- char timestamp[1024];
-
- OSMPBF__Info *i=&ctx->i, ii=OSMPBF__INFO__INIT;
- *i=ii;
- if (osm_xml_get_attribute(str, "version", version, sizeof(version))) {
- i->version=atoi(version);
- i->has_version=1;
- }
- if (osm_xml_get_attribute(str, "changeset", changeset, sizeof(changeset))) {
- i->changeset=atoll(changeset);
- i->has_changeset=1;
- }
- if (osm_xml_get_attribute(str, "user", user, sizeof(user))) {
- osm_xml_decode_entities(user);
- i->user_sid=osm_protobufdb_string(ctx, user);
- i->has_user_sid=1;
- }
- if (osm_xml_get_attribute(str, "uid", uid, sizeof(uid))) {
- i->uid=atoi(uid);
- i->has_uid=1;
- }
- if (osm_xml_get_attribute(str, "timestamp", timestamp, sizeof(timestamp))) {
- i->timestamp=osm_protobufdb_timestamp(timestamp);
- i->has_timestamp=1;
- }
-}
-
-static int
-osm_protobufdb_parse_node(struct osm_protobufdb_context *ctx, char *str)
-{
- char id[1024];
- char lat[1024];
- char lon[1024];
- OSMPBF__Node *n=&ctx->n, ni=OSMPBF__NODE__INIT;
-
- *n=ni;
- if (!osm_xml_get_attribute(str, "id", id, sizeof(id)))
- return 0;
- if (!osm_xml_get_attribute(str, "lat", lat, sizeof(lat)))
- return 0;
- if (!osm_xml_get_attribute(str, "lon", lon, sizeof(lon)))
- return 0;
- n->id=atoll(id);
- n->lat=atof(lat)*latlon_scale+0.5;
- n->lon=atof(lon)*latlon_scale+0.5;
- int file=n->id/db_config.node_ids_per_file;
- int fileo=n->id%db_config.node_ids_per_file;
- int blob=fileo/db_config.node_ids_per_blob;
- int blobo=fileo%db_config.node_ids_per_blob;
- int group=blobo/db_config.node_ids_per_group;
-
- osm_protobufdb_start_file(ctx, 1, file);
- osm_protobufdb_start_block(ctx, blob);
- osm_protobufdb_start_group(ctx, group);
- osm_protobufdb_parse_info(ctx, str);
- ctx->in_node=1;
- return 1;
-}
-
-static int
-osm_protobufdb_end_node(struct osm_protobufdb_context *ctx)
-{
- int p;
-#if 0
- OSMPBF__Node *n=&ctx->n,offset;
- OSMPBF__Info *i=&ctx->i,offseti;
- osm_protobufdb_start_densenode(ctx);
- p=osm_protobufdb_insert_densenode(n->id, &offset, &offseti, context.dn);
- osm_protobufdb_modify_densenode(n, i, &offset, &offseti, p, context.dn);
-#else
- p=osm_protobufdb_insert_node(ctx->n.id, ctx->pg);
- osm_protobufdb_modify_node(&ctx->n, &ctx->i, p, ctx->pg);
-#endif
- ctx->in_node=0;
- return 1;
-}
-
-
-static int
-osm_protobufdb_parse_way(struct osm_protobufdb_context *ctx, char *str)
-{
- char id[1024];
- OSMPBF__Way *w=&ctx->w, wi=OSMPBF__WAY__INIT;
-
- *w=wi;
- if (!osm_xml_get_attribute(str, "id", id, sizeof(id)))
- return 0;
- w->id=atoll(id);
- int file=w->id/db_config.way_ids_per_file;
- int fileo=w->id%db_config.way_ids_per_file;
- int blob=fileo/db_config.way_ids_per_blob;
- int blobo=fileo%db_config.way_ids_per_blob;
- int group=blobo/db_config.way_ids_per_group;
-
- osm_protobufdb_start_file(ctx, 2, file);
- osm_protobufdb_start_block(ctx, blob);
- osm_protobufdb_start_group(ctx, group);
- osm_protobufdb_parse_info(ctx, str);
- ctx->in_way=1;
- return 1;
-}
-
-static int
-osm_protobufdb_end_way(struct osm_protobufdb_context *ctx)
-{
- int p;
- p=osm_protobufdb_insert_way(ctx->w.id, ctx->pg);
- osm_protobufdb_modify_way(&ctx->w, &ctx->i, p, ctx->pg);
- ctx->in_way=0;
- return 1;
-}
-
-static int
-osm_protobufdb_parse_relation(struct osm_protobufdb_context *ctx, char *str)
-{
- char id[1024];
- OSMPBF__Relation *r=&ctx->r, ri=OSMPBF__RELATION__INIT;
-
- *r=ri;
- if (!osm_xml_get_attribute(str, "id", id, sizeof(id)))
- return 0;
- r->id=atoll(id);
- int file=r->id/db_config.relation_ids_per_file;
- int fileo=r->id%db_config.relation_ids_per_file;
- int blob=fileo/db_config.relation_ids_per_blob;
- int blobo=fileo%db_config.relation_ids_per_blob;
- int group=blobo/db_config.relation_ids_per_group;
-
- osm_protobufdb_start_file(ctx, 3, file);
- osm_protobufdb_start_block(ctx, blob);
- osm_protobufdb_start_group(ctx, group);
- osm_protobufdb_parse_info(ctx, str);
- ctx->in_relation=1;
- return 1;
-}
-
-static int
-osm_protobufdb_end_relation(struct osm_protobufdb_context *ctx)
-{
- int p;
- p=osm_protobufdb_insert_relation(ctx->r.id, ctx->pg);
- osm_protobufdb_modify_relation(&ctx->r, &ctx->i, p, ctx->pg);
- ctx->in_node=0;
- return 1;
-}
-
-static int
-osm_protobufdb_parse_tag(struct osm_protobufdb_context *ctx, char *str)
-{
- OSMPBF__Node *n=&ctx->n;
- OSMPBF__Way *w=&ctx->w;
- OSMPBF__Relation *r=&ctx->r;
- char k_buffer[BUFFER_SIZE];
- char v_buffer[BUFFER_SIZE];
- if (!osm_xml_get_attribute(str, "k", k_buffer, BUFFER_SIZE))
- return 0;
- if (!osm_xml_get_attribute(str, "v", v_buffer, BUFFER_SIZE))
- return 0;
- osm_xml_decode_entities(v_buffer);
- if (ctx->in_node) {
- n->keys=realloc(n->keys, (n->n_keys+1)*sizeof(n->keys[0]));
- n->vals=realloc(n->vals, (n->n_vals+1)*sizeof(n->vals[0]));
- n->keys[n->n_keys++]=osm_protobufdb_string(ctx, k_buffer);
- n->vals[n->n_vals++]=osm_protobufdb_string(ctx, v_buffer);
- }
- if (ctx->in_way) {
- w->keys=realloc(w->keys, (w->n_keys+1)*sizeof(w->keys[0]));
- w->vals=realloc(w->vals, (w->n_vals+1)*sizeof(w->vals[0]));
- w->keys[w->n_keys++]=osm_protobufdb_string(ctx, k_buffer);
- w->vals[w->n_vals++]=osm_protobufdb_string(ctx, v_buffer);
- }
- if (ctx->in_relation) {
- r->keys=realloc(r->keys, (r->n_keys+1)*sizeof(r->keys[0]));
- r->vals=realloc(r->vals, (r->n_vals+1)*sizeof(r->vals[0]));
- r->keys[r->n_keys++]=osm_protobufdb_string(ctx, k_buffer);
- r->vals[r->n_vals++]=osm_protobufdb_string(ctx, v_buffer);
- }
- return 1;
-}
-
-static int
-osm_protobufdb_parse_nd(struct osm_protobufdb_context *ctx, char *str)
-{
- OSMPBF__Way *w=&ctx->w;
- char ref_buffer[BUFFER_SIZE];
- if (!osm_xml_get_attribute(str, "ref", ref_buffer, BUFFER_SIZE))
- return 0;
- if (ctx->in_way) {
- w->refs=realloc(w->refs, (w->n_refs+1)*sizeof(w->refs[0]));
- w->refs[w->n_refs++]=atoll(ref_buffer);
- }
- return 1;
-}
-
-static int
-osm_protobufdb_parse_member(struct osm_protobufdb_context *ctx, char *str)
-{
- OSMPBF__Relation *r=&ctx->r;
- char type_buffer[BUFFER_SIZE];
- char ref_buffer[BUFFER_SIZE];
- char role_buffer[BUFFER_SIZE];
- int type=0;
- if (!osm_xml_get_attribute(str, "type", type_buffer, BUFFER_SIZE))
- return 0;
- if (!osm_xml_get_attribute(str, "ref", ref_buffer, BUFFER_SIZE))
- return 0;
- if (!osm_xml_get_attribute(str, "role", role_buffer, BUFFER_SIZE))
- return 0;
- if (!strcmp(type_buffer,"node"))
- type=0;
- else if (!strcmp(type_buffer,"way"))
- type=1;
- else if (!strcmp(type_buffer,"relation"))
- type=2;
- if (ctx->in_relation) {
- r->roles_sid=realloc(r->roles_sid, (r->n_roles_sid+1)*sizeof(r->roles_sid[0]));
- r->roles_sid[r->n_roles_sid++]=osm_protobufdb_string(ctx, role_buffer);
- r->memids=realloc(r->memids, (r->n_memids+1)*sizeof(r->memids[0]));
- r->memids[r->n_memids++]=atoll(ref_buffer);
- r->types=realloc(r->types, (r->n_types+1)*sizeof(r->types[0]));
- r->types[r->n_types++]=type;
- }
- return 1;
-}
-
-
-
-int
-osm_protobufdb_load(FILE *in, char *dir)
-{
- int size=BUFFER_SIZE;
- char buffer[size];
- char *p;
- sig_alrm(0);
- test();
- while (fgets(buffer, size, in)) {
- int closed=strstr(buffer,"/>")?1:0;
- p=strchr(buffer,'<');
- if (! p) {
- fprintf(stderr,"WARNING: wrong line %s\n", buffer);
- continue;
- }
- if (!strncmp(p, "<?xml ",6)) {
- } else if (!strncmp(p, "<osm ",5)) {
- } else if (!strncmp(p, "<bound ",7)) {
- } else if (!strncmp(p, "<node ",6)) {
- if (!osm_protobufdb_parse_node(&context, p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- if (closed)
- osm_protobufdb_end_node(&context);
- processed_nodes++;
- } else if (!strncmp(p, "<tag ",5)) {
- if (!osm_protobufdb_parse_tag(&context, p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- } else if (!strncmp(p, "<way ",5)) {
- if (!osm_protobufdb_parse_way(&context, p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- if (closed)
- osm_protobufdb_end_way(&context);
- processed_ways++;
- } else if (!strncmp(p, "<nd ",4)) {
- if (!osm_protobufdb_parse_nd(&context, p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- } else if (!strncmp(p, "<relation ",10)) {
- if (!osm_protobufdb_parse_relation(&context, p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- processed_relations++;
- } else if (!strncmp(p, "<member ",8)) {
- if (!osm_protobufdb_parse_member(&context, p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- } else if (!strncmp(p, "</node>",7)) {
- osm_protobufdb_end_node(&context);
- } else if (!strncmp(p, "</way>",6)) {
- osm_protobufdb_end_way(&context);
- } else if (!strncmp(p, "</relation>",11)) {
- osm_protobufdb_end_relation(&context);
- } else if (!strncmp(p, "</osm>",6)) {
- } else {
- fprintf(stderr,"WARNING: unknown tag in %s\n", buffer);
- }
- }
- finish();
- return 1;
-}
diff --git a/navit/maptool/osm_psql.c b/navit/maptool/osm_psql.c
deleted file mode 100644
index 53ba780bc..000000000
--- a/navit/maptool/osm_psql.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <unistd.h>
-#include "maptool.h"
-#include "debug.h"
-#include "linguistics.h"
-#include "file.h"
-#ifdef HAVE_POSTGRESQL
-#include <libpq-fe.h>
-
-int
-map_collect_data_osm_db(char *dbstr, struct maptool_osm *osm)
-{
- PGconn *conn;
- PGresult *res,*node,*way,*tag;
- int count,tagged,i,j,k;
- long min, max, id, tag_id, node_id;
- char query[256];
-
- sig_alrm(0);
- conn=PQconnectdb(dbstr);
- if (! conn) {
- fprintf(stderr,"Failed to connect to database with '%s'\n",dbstr);
- exit(1);
- }
- res=PQexec(conn, "begin");
- if (! res) {
- fprintf(stderr, "Cannot begin transaction: %s\n", PQerrorMessage(conn));
- PQclear(res);
- exit(1);
- }
- res=PQexec(conn, "set transaction isolation level serializable");
- if (! res) {
- fprintf(stderr, "Cannot set isolation level: %s\n", PQerrorMessage(conn));
- PQclear(res);
- exit(1);
- }
- res=PQexec(conn, "declare node cursor for select id,x(coordinate),y(coordinate) from node order by id");
- if (! res) {
- fprintf(stderr, "Cannot setup cursor for nodes: %s\n", PQerrorMessage(conn));
- PQclear(res);
- exit(1);
- }
- res=PQexec(conn, "declare way cursor for select id from way order by id");
- if (! res) {
- fprintf(stderr, "Cannot setup cursor for nodes: %s\n", PQerrorMessage(conn));
- PQclear(res);
- exit(1);
- }
- res=PQexec(conn, "declare relation cursor for select id from relation order by id");
- if (! res) {
- fprintf(stderr, "Cannot setup cursor for nodes: %s\n", PQerrorMessage(conn));
- PQclear(res);
- exit(1);
- }
- for (;;) {
- node=PQexec(conn, "fetch 100000 from node");
- if (! node) {
- fprintf(stderr, "Cannot setup cursor for nodes: %s\n", PQerrorMessage(conn));
- PQclear(node);
- exit(1);
- }
- count=PQntuples(node);
- if (! count)
- break;
- min=atol(PQgetvalue(node, 0, 0));
- max=atol(PQgetvalue(node, count-1, 0));
- sprintf(query,"select node_id,name,value from node_tag where node_id >= %ld and node_id <= %ld order by node_id", min, max);
- tag=PQexec(conn, query);
- if (! tag) {
- fprintf(stderr, "Cannot query node_tag: %s\n", PQerrorMessage(conn));
- exit(1);
- }
- j=0;
- for (i = 0 ; i < count ; i++) {
- id=atol(PQgetvalue(node, i, 0));
- osm_add_node(id, atof(PQgetvalue(node, i, 1)), atof(PQgetvalue(node, i, 2)));
- tagged=0;
- processed_nodes++;
- while (j < PQntuples(tag)) {
- tag_id=atol(PQgetvalue(tag, j, 0));
- if (tag_id == id) {
- osm_add_tag(PQgetvalue(tag, j, 1), PQgetvalue(tag, j, 2));
- tagged=1;
- j++;
- }
- if (tag_id < id)
- j++;
- if (tag_id > id)
- break;
- }
- osm_end_node(osm);
- }
- PQclear(tag);
- PQclear(node);
- }
- for (;;) {
- way=PQexec(conn, "fetch 100000 from way");
- if (! way) {
- fprintf(stderr, "Cannot setup cursor for ways: %s\n", PQerrorMessage(conn));
- PQclear(node);
- exit(1);
- }
- count=PQntuples(way);
- if (! count)
- break;
- min=atol(PQgetvalue(way, 0, 0));
- max=atol(PQgetvalue(way, count-1, 0));
- sprintf(query,"select way_id,node_id from way_node where way_id >= %ld and way_id <= %ld order by way_id,sequence_id", min, max);
- node=PQexec(conn, query);
- if (! node) {
- fprintf(stderr, "Cannot query way_node: %s\n", PQerrorMessage(conn));
- exit(1);
- }
- sprintf(query,"select way_id,name,value from way_tag where way_id >= %ld and way_id <= %ld order by way_id", min, max);
- tag=PQexec(conn, query);
- if (! tag) {
- fprintf(stderr, "Cannot query way_tag: %s\n", PQerrorMessage(conn));
- exit(1);
- }
- j=0;
- k=0;
- for (i = 0 ; i < count ; i++) {
- id=atol(PQgetvalue(way, i, 0));
- osm_add_way(id);
- tagged=0;
- processed_ways++;
- while (k < PQntuples(node)) {
- node_id=atol(PQgetvalue(node, k, 0));
- if (node_id == id) {
- osm_add_nd(atoll(PQgetvalue(node, k, 1)));
- tagged=1;
- k++;
- }
- if (node_id < id)
- k++;
- if (node_id > id)
- break;
- }
- while (j < PQntuples(tag)) {
- tag_id=atol(PQgetvalue(tag, j, 0));
- if (tag_id == id) {
- osm_add_tag(PQgetvalue(tag, j, 1), PQgetvalue(tag, j, 2));
- tagged=1;
- j++;
- }
- if (tag_id < id)
- j++;
- if (tag_id > id)
- break;
- }
- if (tagged)
- osm_end_way(osm);
- }
- PQclear(tag);
- PQclear(node);
- PQclear(way);
- }
-
- res=PQexec(conn, "commit");
- if (! res) {
- fprintf(stderr, "Cannot commit transaction: %s\n", PQerrorMessage(conn));
- PQclear(res);
- exit(1);
- }
- sig_alrm(0);
- sig_alrm_end();
- return 1;
-}
-#endif
diff --git a/navit/maptool/osm_relations.c b/navit/maptool/osm_relations.c
deleted file mode 100644
index 591ca7d9d..000000000
--- a/navit/maptool/osm_relations.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <stdio.h>
-#include <string.h>
-#include "maptool.h"
-#include "attr.h"
-
-/** Information about all members of a relation type and how to process them. */
-struct relations {
- /** Hashes for nodes, ways and relations which are members. */
- GHashTable *member_hash[3];
- /** Default entries for processing items which are not a member of any relation. */
- GList *default_members;
-};
-
-struct relations_func {
- void (*func)(void *func_priv, void *relation_priv, struct item_bin *member, void *member_priv);
- void *func_priv;
-};
-
-struct relations_member {
- osmid memberid;
- void *relation_priv,*member_priv;
- struct relations_func *func;
-};
-
-static guint
-relations_member_hash(gconstpointer key)
-{
- const struct relations_member *memb=key;
- return (memb->memberid >> 32)^(memb->memberid & 0xffffffff);
-}
-
-static gboolean
-relations_member_equal(gconstpointer a, gconstpointer b)
-{
- const struct relations_member *memba=a;
- const struct relations_member *membb=b;
- return (memba->memberid == membb->memberid);
-}
-
-struct relations *
-relations_new(void)
-{
- struct relations *ret=g_new0(struct relations, 1);
- int i;
-
- for (i = 0 ; i < 3 ; i++)
- ret->member_hash[i]=g_hash_table_new(relations_member_hash, relations_member_equal);
- return ret;
-}
-
-struct relations_func *
-relations_func_new(void (*func)(void *func_priv, void *relation_priv, struct item_bin *member, void *member_priv), void *func_priv)
-{
- struct relations_func *relations_func=g_new(struct relations_func, 1);
- relations_func->func=func;
- relations_func->func_priv=func_priv;
- return relations_func;
-}
-
-static struct relations_member *
-relations_member_new(struct relations_func *func, void *relation_priv, void *member_priv, osmid id)
-{
- struct relations_member *memb=g_new(struct relations_member, 1);
- memb->memberid=id;
- memb->relation_priv=relation_priv;
- memb->member_priv=member_priv;
- memb->func=func;
- return memb;
-}
-/*
- * @brief Add an entry for a relation member to the relations collection.
- * This function fills the relations collection, which is then passed to relations_process for
- * processing.
- * @param in rel relations collection to add the new member to
- * @param in func structure defining function to call when this member is read
- * @param in relation_priv parameter describing relation, or NULL. Will be passed to func function.
- * @param in member_priv parameter describing relation member, or NULL. Will be passed to func function.
- * @param in type Type of this member (node, way etc.).
- * @param in id OSM ID of relation member.
- */
-void
-relations_add_relation_member_entry(struct relations *rel, struct relations_func *func, void
- *relation_priv, void *member_priv, enum relation_member_type type, osmid id)
-{
- struct relations_member *memb=relations_member_new(func, relation_priv, member_priv, id);
- GHashTable *member_hash=rel->member_hash[type-1];
- // The real key is the OSM ID, but we recycle "memb" as key to avoid a second allocating for the key.
- g_hash_table_insert(member_hash, memb, g_list_append(g_hash_table_lookup(member_hash, memb), memb));
-}
-
-/*
- * @brief Add a default entry to the relations collection.
- * Put a default entry into the relations collection, which is then passed to
- * relations_process for processing. The default entry is used for map items which are not a
- * member of any relation.
- * @param in rel relations collection to add the new member to
- * @param in func structure defining function to call when this member is read
- */
-void
-relations_add_relation_default_entry(struct relations *rel, struct relations_func *func)
-{
- struct relations_member *memb=relations_member_new(func, NULL, NULL, 0);
- rel->default_members=g_list_append(rel->default_members, memb);
-}
-
-
-/*
- * @brief The actual relations processing: Loop through raw data and process any relations members.
- * This function reads through all nodes and ways passed in, and looks up each item in the
- * relations collection. For each relation member found, its processing function is called.
- * @param in rel relations collection storing pre-processed relations. Built using relations_add_relation_member_entry.
- * @param in nodes file containing nodes in "coords.tmp" format
- * @param in ways file containing items in item_bin format. This file may contain both nodes, ways, and relations in that format.
- */
-void
-relations_process(struct relations *rel, FILE *nodes, FILE *ways)
-{
- char buffer[128];
- struct item_bin *ib=(struct item_bin *)buffer;
- osmid *id;
- struct coord *c=(struct coord *)(ib+1),cn={0,0};
- struct node_item *ni;
- GList *l;
-
- if (nodes) {
- item_bin_init(ib, type_point_unkn);
- item_bin_add_coord(ib, &cn, 1);
- item_bin_add_attr_longlong(ib, attr_osm_nodeid, 0);
- id=item_bin_get_attr(ib, attr_osm_nodeid, NULL);
- while ((ni=read_node_item(nodes))) {
- *id=ni->nd_id;
- *c=ni->c;
- l=g_hash_table_lookup(rel->member_hash[0], id);
- while (l) {
- struct relations_member *memb=l->data;
- memb->func->func(memb->func->func_priv, memb->relation_priv, ib, memb->member_priv);
- l=g_list_next(l);
- }
- }
- }
- if (ways) {
- while ((ib=read_item(ways))) {
- l=NULL;
- if(NULL!=(id=item_bin_get_attr(ib, attr_osm_nodeid, NULL)))
- l=g_hash_table_lookup(rel->member_hash[0], id);
- else if(NULL!=(id=item_bin_get_attr(ib, attr_osm_wayid, NULL)))
- l=g_hash_table_lookup(rel->member_hash[1], id);
- else if(NULL!=(id=item_bin_get_attr(ib, attr_osm_relationid, NULL)))
- l=g_hash_table_lookup(rel->member_hash[2], id);
- if(!l)
- l=rel->default_members;
- while (l) {
- struct relations_member *memb=l->data;
- memb->func->func(memb->func->func_priv, memb->relation_priv, ib, memb->member_priv);
- l=g_list_next(l);
- }
- }
- }
-}
-
-static void
-relations_destroy_func(void *key, GList *l, void *data)
-{
- GList *ll=l;
- while (ll) {
- g_free(ll->data);
- ll=g_list_next(ll);
- }
- g_list_free(l);
-}
-
-void
-relations_destroy(struct relations *relations)
-{
- int i;
-
- for (i = 0 ; i < 3 ; i++) {
- g_hash_table_foreach(relations->member_hash[i], (GHFunc)relations_destroy_func, NULL);
- g_hash_table_destroy(relations->member_hash[i]);
- }
- g_free(relations);
-}
diff --git a/navit/maptool/osm_xml.c b/navit/maptool/osm_xml.c
deleted file mode 100644
index c107a8048..000000000
--- a/navit/maptool/osm_xml.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <string.h>
-#include <stdlib.h>
-#include <math.h>
-#ifdef _MSC_VER
-#define atoll _atoi64
-#else
-#include <unistd.h>
-#endif
-#include "maptool.h"
-
-int
-osm_xml_get_attribute(char *xml, char *attribute, char *buffer, int buffer_size)
-{
- int len=strlen(attribute);
- char *pos,*i,s,*attr;
- attr=g_alloca(len+2);
- strcpy(attr, attribute);
- strcpy(attr+len, "=");
- pos=strstr(xml, attr);
- if (! pos)
- return 0;
- pos+=len+1;
- s=*pos++;
- if (! s)
- return 0;
- i=strchr(pos, s);
- if (! i)
- return 0;
- if (i - pos > buffer_size) {
- fprintf(stderr,"Buffer overflow %ld vs %d\n", (long)(i-pos), buffer_size);
- return 0;
- }
- strncpy(buffer, pos, i-pos);
- buffer[i-pos]='\0';
- return 1;
-}
-
-static struct entity {
- char *entity;
- char c;
-} entities[]= {
- {"&quot;",'"'},
- {"&apos;",'\''},
- {"&amp;",'&'},
- {"&lt;",'<'},
- {"&gt;",'>'},
- {"&#34;",'"'},
- {"&#39;",'\''},
- {"&#38;",'&'},
- {"&#60;",'<'},
- {"&#62;",'>'},
- {"&#123;",'{'},
- {"&#125;",'}'},
-};
-
-void
-osm_xml_decode_entities(char *buffer)
-{
- char *pos=buffer;
- int i,len;
-
- while ((pos=strchr(pos, '&'))) {
- for (i = 0 ; i < sizeof(entities)/sizeof(struct entity); i++) {
- len=strlen(entities[i].entity);
- if (!strncmp(pos, entities[i].entity, len)) {
- *pos=entities[i].c;
- memmove(pos+1, pos+len, strlen(pos+len)+1);
- break;
- }
- }
- pos++;
- }
-}
-
-static int
-parse_tag(char *p)
-{
- char k_buffer[BUFFER_SIZE];
- char v_buffer[BUFFER_SIZE];
- if (!osm_xml_get_attribute(p, "k", k_buffer, BUFFER_SIZE))
- return 0;
- if (!osm_xml_get_attribute(p, "v", v_buffer, BUFFER_SIZE))
- return 0;
- osm_xml_decode_entities(v_buffer);
- osm_add_tag(k_buffer, v_buffer);
- return 1;
-}
-
-
-static int
-parse_node(char *p)
-{
- char id_buffer[BUFFER_SIZE];
- char lat_buffer[BUFFER_SIZE];
- char lon_buffer[BUFFER_SIZE];
- if (!osm_xml_get_attribute(p, "id", id_buffer, BUFFER_SIZE))
- return 0;
- if (!osm_xml_get_attribute(p, "lat", lat_buffer, BUFFER_SIZE))
- return 0;
- if (!osm_xml_get_attribute(p, "lon", lon_buffer, BUFFER_SIZE))
- return 0;
- osm_add_node(atoll(id_buffer), atof(lat_buffer), atof(lon_buffer));
- return 1;
-}
-
-
-static int
-parse_way(char *p)
-{
- char id_buffer[BUFFER_SIZE];
- if (!osm_xml_get_attribute(p, "id", id_buffer, BUFFER_SIZE))
- return 0;
- osm_add_way(atoll(id_buffer));
- return 1;
-}
-
-static int
-parse_relation(char *p)
-{
- char id_buffer[BUFFER_SIZE];
- if (!osm_xml_get_attribute(p, "id", id_buffer, BUFFER_SIZE))
- return 0;
- osm_add_relation(atoll(id_buffer));
- return 1;
-}
-
-static int
-parse_member(char *p)
-{
- char type_buffer[BUFFER_SIZE];
- char ref_buffer[BUFFER_SIZE];
- char role_buffer[BUFFER_SIZE];
- enum relation_member_type type;
- if (!osm_xml_get_attribute(p, "type", type_buffer, BUFFER_SIZE))
- return 0;
- if (!osm_xml_get_attribute(p, "ref", ref_buffer, BUFFER_SIZE))
- return 0;
- if (!osm_xml_get_attribute(p, "role", role_buffer, BUFFER_SIZE))
- return 0;
- if (!strcmp(type_buffer,"node"))
- type=rel_member_node;
- else if (!strcmp(type_buffer,"way"))
- type=rel_member_way;
- else if (!strcmp(type_buffer,"relation"))
- type=rel_member_relation;
- else {
- fprintf(stderr,"Unknown type '%s'\n",type_buffer);
- return 0;
- }
- osm_add_member(type, atoll(ref_buffer), role_buffer);
-
- return 1;
-}
-
-static int
-parse_nd(char *p)
-{
- char ref_buffer[BUFFER_SIZE];
- if (!osm_xml_get_attribute(p, "ref", ref_buffer, BUFFER_SIZE))
- return 0;
- osm_add_nd(atoll(ref_buffer));
- return 1;
-}
-
-static int
-xml_declaration_in_line(char* buffer){
- return !strncmp(buffer, "<?xml ", 6);
-}
-
-int
-map_collect_data_osm(FILE *in, struct maptool_osm *osm)
-{
- int size=BUFFER_SIZE;
- char buffer[BUFFER_SIZE];
- char *p;
- sig_alrm(0);
- if (!fgets(buffer, size, in) || !xml_declaration_in_line(buffer)){
- fprintf(stderr,"FATAL: First line does not start with XML declaration;\n"
- "this does not look like a valid OSM file.\n");
- exit(EXIT_FAILURE);
- }
- while (fgets(buffer, size, in)) {
- p=strchr(buffer,'<');
- if (! p) {
- fprintf(stderr,"FATAL: wrong line in input data (does not start with '<'): %s\n", buffer);
- fprintf(stderr,"This does not look like a valid OSM file.\n"
- "Note that maptool can only process OSM files without wrapped or empty lines.\n");
- exit(EXIT_FAILURE);
- }
- if (!strncmp(p, "<osm ",5)) {
- } else if (!strncmp(p, "<bound ",7)) {
- } else if (!strncmp(p, "<node ",6)) {
- if (!parse_node(p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- processed_nodes++;
- } else if (!strncmp(p, "<tag ",5)) {
- if (!parse_tag(p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- } else if (!strncmp(p, "<way ",5)) {
- if (!parse_way(p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- processed_ways++;
- } else if (!strncmp(p, "<nd ",4)) {
- if (!parse_nd(p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- } else if (!strncmp(p, "<relation ",10)) {
- if (!parse_relation(p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- processed_relations++;
- } else if (!strncmp(p, "<member ",8)) {
- if (!parse_member(p))
- fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
- } else if (!strncmp(p, "</node>",7)) {
- osm_end_node(osm);
- } else if (!strncmp(p, "</way>",6)) {
- osm_end_way(osm);
- } else if (!strncmp(p, "</relation>",11)) {
- osm_end_relation(osm);
- } else if (!strncmp(p, "</osm>",6)) {
- } else {
- fprintf(stderr,"WARNING: unknown tag in %s\n", buffer);
- }
- }
- sig_alrm(0);
- sig_alrm_end();
- return 1;
-}
diff --git a/navit/maptool/osmformat.proto b/navit/maptool/osmformat.proto
deleted file mode 100644
index 73f6472a9..000000000
--- a/navit/maptool/osmformat.proto
+++ /dev/null
@@ -1,209 +0,0 @@
-option java_package = "crosby.binary";
-package OSMPBF;
-
-/* OSM Binary file format
-
-This is the master schema file of the OSM binary file format. This
-file is designed to support limited random-access and future
-extendability.
-
-A binary OSM file consists of a sequence of FileBlocks (please see
-fileformat.proto). The first fileblock contains a serialized instance
-of HeaderBlock, followed by a sequence of PrimitiveBlock blocks that
-contain the primitives.
-
-Each primitiveblock is designed to be independently parsable. It
-contains a string table storing all strings in that block (keys and
-values in tags, roles in relations, usernames, etc.) as well as
-metadata containing the precision of coordinates or timestamps in that
-block.
-
-A primitiveblock contains a sequence of primitive groups, each
-containing primitives of the same type (nodes, densenodes, ways,
-relations). Coordinates are stored in signed 64-bit integers. Lat&lon
-are measured in units <granularity> nanodegrees. The default of
-granularity of 100 nanodegrees corresponds to about 1cm on the ground,
-and a full lat or lon fits into 32 bits.
-
-Converting an integer to a lattitude or longitude uses the formula:
-$OUT = IN * granularity / 10**9$. Many encoding schemes use delta
-coding when representing nodes and relations.
-
-*/
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-/* Contains the file header. */
-
-message HeaderBlock {
- optional HeaderBBox bbox = 1;
- /* Additional tags to aid in parsing this dataset */
- repeated string required_features = 4;
- repeated string optional_features = 5;
-
- optional string writingprogram = 16;
- optional string source = 17; // From the bbox field.
-}
-
-
-/** The bounding box field in the OSM header. BBOX, as used in the OSM
-header. Units are always in nanodegrees -- they do not obey
-granularity rules. */
-
-message HeaderBBox {
- required sint64 left = 1;
- required sint64 right = 2;
- required sint64 top = 3;
- required sint64 bottom = 4;
-}
-
-
-///////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////
-
-
-message PrimitiveBlock {
- required StringTable stringtable = 1;
- repeated PrimitiveGroup primitivegroup = 2;
-
- // Granularity, units of nanodegrees, used to store coordinates in this block
- optional int32 granularity = 17 [default=100];
- // Offset value between the output coordinates coordinates and the granularity grid in unites of nanodegrees.
- optional int64 lat_offset = 19 [default=0];
- optional int64 lon_offset = 20 [default=0];
-
-// Granularity of dates, normally represented in units of milliseconds since the 1970 epoch.
- optional int32 date_granularity = 18 [default=1000];
-
-
- // Proposed extension:
- //optional BBox bbox = XX;
-}
-
-// Group of OSMPrimitives. All primitives in a group must be the same type.
-message PrimitiveGroup {
- repeated Node nodes = 1;
- optional DenseNodes dense = 2;
- repeated Way ways = 3;
- repeated Relation relations = 4;
- repeated ChangeSet changesets = 5;
-}
-
-
-/** String table, contains the common strings in each block.
-
- Note that we reserve index '0' as a delimiter, so the entry at that
- index in the table is ALWAYS blank and unused.
-
- */
-message StringTable {
- repeated bytes s = 1;
-}
-
-/* Optional metadata that may be included into each primitive. */
-message Info {
- optional int32 version = 1 [default = -1];
- optional int64 timestamp = 2;
- optional int64 changeset = 3;
- optional int32 uid = 4;
- optional uint32 user_sid = 5; // String IDs
-}
-
-/** Optional metadata that may be included into each primitive. Special dense format used in DenseNodes. */
-message DenseInfo {
- repeated int32 version = 1 [packed = true];
- repeated sint64 timestamp = 2 [packed = true]; // DELTA coded
- repeated sint64 changeset = 3 [packed = true]; // DELTA coded
- repeated sint32 uid = 4 [packed = true]; // DELTA coded
- repeated sint32 user_sid = 5 [packed = true]; // String IDs for usernames. DELTA coded
-}
-
-
-// THIS IS STUB DESIGN FOR CHANGESETS. NOT USED RIGHT NOW.
-// TODO: REMOVE THIS?
-message ChangeSet {
- required int64 id = 1;
-//
-// // Parallel arrays.
-// repeated uint32 keys = 2 [packed = true]; // String IDs.
-// repeated uint32 vals = 3 [packed = true]; // String IDs.
-//
-// optional Info info = 4;
-
-// optional int64 created_at = 8;
-// optional int64 closetime_delta = 9;
-// optional bool open = 10;
-// optional HeaderBBox bbox = 11;
-}
-
-
-message Node {
- required sint64 id = 1;
- // Parallel arrays.
- repeated uint32 keys = 2 [packed = true]; // String IDs.
- repeated uint32 vals = 3 [packed = true]; // String IDs.
-
- optional Info info = 4; // May be omitted in omitmeta
-
- required sint64 lat = 8;
- required sint64 lon = 9;
-}
-
-/* Used to densly represent a sequence of nodes that do not have any tags.
-
-We represent these nodes columnwise as five columns: ID's, lats, and
-lons, all delta coded. When metadata is not omitted,
-
-We encode keys & vals for all nodes as a single array of integers
-containing key-stringid and val-stringid, using a stringid of 0 as a
-delimiter between nodes.
-
- ( (<keyid> <valid>)* '0' )*
- */
-
-message DenseNodes {
- repeated sint64 id = 1 [packed = true]; // DELTA coded
-
- //repeated Info info = 4;
- optional DenseInfo denseinfo = 5;
-
- repeated sint64 lat = 8 [packed = true]; // DELTA coded
- repeated sint64 lon = 9 [packed = true]; // DELTA coded
-
- // Special packing of keys and vals into one array. May be empty if all nodes in this block are tagless.
- repeated int32 keys_vals = 10 [packed = true];
-}
-
-
-message Way {
- required int64 id = 1;
- // Parallel arrays.
- repeated uint32 keys = 2 [packed = true];
- repeated uint32 vals = 3 [packed = true];
-
- optional Info info = 4;
-
- repeated sint64 refs = 8 [packed = true]; // DELTA coded
-}
-
-message Relation {
- enum MemberType {
- NODE = 0;
- WAY = 1;
- RELATION = 2;
- }
- required int64 id = 1;
-
- // Parallel arrays.
- repeated uint32 keys = 2 [packed = true];
- repeated uint32 vals = 3 [packed = true];
-
- optional Info info = 4;
-
- // Parallel arrays
- repeated int32 roles_sid = 8 [packed = true];
- repeated sint64 memids = 9 [packed = true]; // DELTA encoded
- repeated MemberType types = 10 [packed = true];
-}
-
diff --git a/navit/maptool/sourcesink.c b/navit/maptool/sourcesink.c
deleted file mode 100644
index 97aa7de7d..000000000
--- a/navit/maptool/sourcesink.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 <stdio.h>
-#include <glib.h>
-#include <string.h>
-#include "coord.h"
-#include "item.h"
-#include "attr.h"
-#include "maptool.h"
-
-struct item_bin_sink *
-item_bin_sink_new(void)
-{
- struct item_bin_sink *ret=g_new0(struct item_bin_sink, 1);
-
- return ret;
-}
-
-struct item_bin_sink_func *
-item_bin_sink_func_new(int (*func)(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data))
-{
- struct item_bin_sink_func *ret=g_new0(struct item_bin_sink_func, 1);
- ret->func=func;
- return ret;
-}
-
-void
-item_bin_sink_func_destroy(struct item_bin_sink_func *func)
-{
- g_free(func);
-}
-
-void
-item_bin_sink_add_func(struct item_bin_sink *sink, struct item_bin_sink_func *func)
-{
- sink->sink_funcs=g_list_append(sink->sink_funcs, func);
-}
-
-void
-item_bin_sink_destroy(struct item_bin_sink *sink)
-{
- /* g_list_foreach(sink->sink_funcs, (GFunc)g_free, NULL); */
- g_list_free(sink->sink_funcs);
- g_free(sink);
-}
-
-int
-item_bin_write_to_sink(struct item_bin *ib, struct item_bin_sink *sink, struct tile_data *tile_data)
-{
- GList *list=sink->sink_funcs;
- int ret=0;
- while (list) {
- struct item_bin_sink_func *func=list->data;
- ret=func->func(func, ib, tile_data);
- if (ret)
- break;
- list=g_list_next(list);
- }
- return ret;
-}
-
-struct item_bin_sink *
-file_reader_new(FILE *in, int limit, int offset)
-{
- struct item_bin_sink *ret;
- if (!in)
- return NULL;
- ret=item_bin_sink_new();
- ret->priv_data[0]=in;
- ret->priv_data[1]=(void *)(long)limit;
- ret->priv_data[2]=(void *)(long)offset;
- fseek(in, 0, SEEK_SET);
- return ret;
-}
-
-int
-file_reader_finish(struct item_bin_sink *sink)
-{
- struct item_bin *ib;
- int ret =0;
- FILE *in=sink->priv_data[0];
- int limit=(int)(long)sink->priv_data[1];
- int offset=(int)(long)sink->priv_data[2];
- while ((ib=read_item(in))) {
- if (offset > 0) {
- offset--;
- } else {
- ret=item_bin_write_to_sink(ib, sink, NULL);
- if (ret || (limit != -1 && !--limit)) {
- item_bin_sink_destroy(sink);
- return ret;
- }
- }
- }
- item_bin_sink_destroy(sink);
- return 0;
-}
-
-int
-file_writer_process(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data)
-{
- FILE *out=func->priv_data[0];
- item_bin_write(ib, out);
- return 0;
-}
-
-struct item_bin_sink_func *
-file_writer_new(FILE *out)
-{
- struct item_bin_sink_func *file_writer;
- if (!out)
- return NULL;
- file_writer=item_bin_sink_func_new(file_writer_process);
- file_writer->priv_data[0]=out;
- return file_writer;
-}
-
-int
-file_writer_finish(struct item_bin_sink_func *file_writer)
-{
- item_bin_sink_func_destroy(file_writer);
- return 0;
-}
-
-
-int
-tile_collector_process(struct item_bin_sink_func *tile_collector, struct item_bin *ib, struct tile_data *tile_data)
-{
- int *buffer,*buffer2;
- int len=ib->len+1;
- GHashTable *hash=tile_collector->priv_data[0];
- buffer=g_hash_table_lookup(hash, tile_data->buffer);
- buffer2=g_malloc((len+(buffer ? buffer[0] : 1))*4);
- if (buffer) {
- memcpy(buffer2, buffer, buffer[0]*4);
- } else
- buffer2[0]=1;
- memcpy(buffer2+buffer2[0], ib, len*4);
- buffer2[0]+=len;
- g_hash_table_insert(hash, g_strdup(tile_data->buffer), buffer2);
- return 0;
-}
-
-struct item_bin_sink_func *
-tile_collector_new(struct item_bin_sink *out)
-{
- struct item_bin_sink_func *tile_collector;
- tile_collector=item_bin_sink_func_new(tile_collector_process);
- tile_collector->priv_data[0]=g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
- tile_collector->priv_data[1]=out;
- return tile_collector;
-}
-
diff --git a/navit/maptool/tempfile.c b/navit/maptool/tempfile.c
deleted file mode 100644
index d00acd21b..000000000
--- a/navit/maptool/tempfile.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2011 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 "navit_lfs.h"
-#ifndef _MSC_VER
-#include <unistd.h>
-#endif
-#include "maptool.h"
-#include "debug.h"
-
-char *
-tempfile_name(char *suffix, char *name)
-{
- return g_strdup_printf("%s_%s.tmp",name, suffix);
-}
-FILE *
-tempfile(char *suffix, char *name, int mode)
-{
- char *buffer=tempfile_name(suffix, name);
- FILE *ret=NULL;
- switch (mode) {
- case 0:
- ret=fopen(buffer, "rb");
- break;
- case 1:
- ret=fopen(buffer, "wb+");
- break;
- case 2:
- ret=fopen(buffer, "ab");
- break;
- }
- g_free(buffer);
- return ret;
-}
-
-void
-tempfile_unlink(char *suffix, char *name)
-{
- char buffer[4096];
- sprintf(buffer,"%s_%s.tmp",name, suffix);
- unlink(buffer);
-}
-
-void
-tempfile_rename(char *suffix, char *from, char *to)
-{
- char buffer_from[4096],buffer_to[4096];
- sprintf(buffer_from,"%s_%s.tmp",from,suffix);
- sprintf(buffer_to,"%s_%s.tmp",to,suffix);
- dbg_assert(rename(buffer_from, buffer_to) == 0);
-
-}
diff --git a/navit/maptool/tile.c b/navit/maptool/tile.c
deleted file mode 100644
index 9d9f94145..000000000
--- a/navit/maptool/tile.c
+++ /dev/null
@@ -1,702 +0,0 @@
-/**
- * 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.
- */
-
-
-#define _FILE_OFFSET_BITS 64
-#define _LARGEFILE_SOURCE
-#define _LARGEFILE64_SOURCE
-#include <stdlib.h>
-#include <glib.h>
-#include <assert.h>
-#include <string.h>
-#include <signal.h>
-#include <stdio.h>
-#include <math.h>
-#ifndef _MSC_VER
-#include <getopt.h>
-#include <unistd.h>
-#endif
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <zlib.h>
-#include "file.h"
-#include "item.h"
-#include "map.h"
-#include "zipfile.h"
-#include "main.h"
-#include "config.h"
-#include "linguistics.h"
-#include "plugin.h"
-
-#include "maptool.h"
-
-GList *aux_tile_list;
-struct tile_head *tile_head_root;
-GHashTable *strings_hash,*tile_hash,*tile_hash2;
-
-static char* string_hash_lookup( const char* key )
-{
- char* key_ptr = NULL;
-
- if ( strings_hash == NULL ) {
- strings_hash = g_hash_table_new(g_str_hash, g_str_equal);
- }
-
- if ( ( key_ptr = g_hash_table_lookup(strings_hash, key )) == NULL ) {
- key_ptr = g_strdup( key );
- g_hash_table_insert(strings_hash, key_ptr, (gpointer)key_ptr );
-
- }
- return key_ptr;
-}
-
-static char** th_get_subtile( const struct tile_head* th, int idx )
-{
- char* subtile_ptr = NULL;
- subtile_ptr = (char*)th + sizeof( struct tile_head ) + idx * sizeof( char *);
- return (char**)subtile_ptr;
-}
-
-int
-tile(struct rect *r, char *suffix, char *ret, int max, int overlap, struct rect *tr)
-{
- int x0,x2,x4;
- int y0,y2,y4;
- int xo,yo;
- int i;
- struct rect rr=*r;
-
- x0=world_bbox.l.x;
- y0=world_bbox.l.y;
- x4=world_bbox.h.x;
- y4=world_bbox.h.y;
-
- if(rr.l.x<x0)
- rr.l.x=x0;
- if(rr.h.x<x0)
- rr.h.x=x0;
- if(rr.l.y<y0)
- rr.l.y=y0;
- if(rr.h.y<y0)
- rr.h.y=y0;
- if(rr.l.x>x4)
- rr.l.x=x4;
- if(rr.h.x>x4)
- rr.h.x=x4;
- if(rr.l.y>y4)
- rr.l.y=y4;
- if(rr.h.y>y4)
- rr.h.y=y4;
-
- for (i = 0 ; i < max ; i++) {
- x2=(x0+x4)/2;
- y2=(y0+y4)/2;
- xo=(x4-x0)*overlap/100;
- yo=(y4-y0)*overlap/100;
- if ( contains_bbox(x0,y0,x2+xo,y2+yo,&rr)) {
- strcat(ret,"d");
- x4=x2+xo;
- y4=y2+yo;
- } else if (contains_bbox(x2-xo,y0,x4,y2+yo,&rr)) {
- strcat(ret,"c");
- x0=x2-xo;
- y4=y2+yo;
- } else if (contains_bbox(x0,y2-yo,x2+xo,y4,&rr)) {
- strcat(ret,"b");
- x4=x2+xo;
- y0=y2-yo;
- } else if (contains_bbox(x2-xo,y2-yo,x4,y4,&rr)) {
- strcat(ret,"a");
- x0=x2-xo;
- y0=y2-yo;
- } else
- break;
- }
- if (tr) {
- tr->l.x=x0;
- tr->l.y=y0;
- tr->h.x=x4;
- tr->h.y=y4;
- }
- if (suffix)
- strcat(ret,suffix);
- return i;
-}
-
-void
-tile_bbox(char *tile, struct rect *r, int overlap)
-{
- struct coord c;
- int xo,yo;
- *r=world_bbox;
- while (*tile) {
- c.x=(r->l.x+r->h.x)/2;
- c.y=(r->l.y+r->h.y)/2;
- xo=(r->h.x-r->l.x)*overlap/100;
- yo=(r->h.y-r->l.y)*overlap/100;
- switch (*tile) {
- case 'a':
- r->l.x=c.x-xo;
- r->l.y=c.y-yo;
- break;
- case 'b':
- r->h.x=c.x+xo;
- r->l.y=c.y-yo;
- break;
- case 'c':
- r->l.x=c.x-xo;
- r->h.y=c.y+yo;
- break;
- case 'd':
- r->h.x=c.x+xo;
- r->h.y=c.y+yo;
- break;
- }
- tile++;
- }
-}
-
-int
-tile_len(char *tile)
-{
- int ret=0;
- while (tile[0] >= 'a' && tile[0] <= 'd') {
- tile++;
- ret++;
- }
- return ret;
-}
-
-static void
-tile_extend(char *tile, struct item_bin *ib, GList **tiles_list)
-{
- struct tile_head *th=NULL;
- if (debug_tile(tile))
- fprintf(stderr,"Tile:Writing %d bytes to '%s' (%p,%p) 0x%x "LONGLONG_FMT"\n", (ib->len+1)*4, tile, g_hash_table_lookup(tile_hash, tile), tile_hash2 ? g_hash_table_lookup(tile_hash2, tile) : NULL, ib->type, item_bin_get_id(ib));
- if (tile_hash2)
- th=g_hash_table_lookup(tile_hash2, tile);
- if (!th)
- th=g_hash_table_lookup(tile_hash, tile);
- if (! th) {
- th=malloc(sizeof(struct tile_head)+ sizeof( char* ) );
- assert(th != NULL);
- // strcpy(th->subtiles, tile);
- th->num_subtiles=1;
- th->total_size=0;
- th->total_size_used=0;
- th->zipnum=0;
- th->zip_data=NULL;
- th->name=string_hash_lookup(tile);
- *th_get_subtile( th, 0 ) = th->name;
-
- if (tile_hash2)
- g_hash_table_insert(tile_hash2, string_hash_lookup( th->name ), th);
- if (tiles_list)
- *tiles_list=g_list_append(*tiles_list, string_hash_lookup( th->name ) );
- processed_tiles++;
- if (debug_tile(tile))
- fprintf(stderr,"new '%s'\n", tile);
- }
- th->total_size+=ib->len*4+4;
- if (debug_tile(tile))
- fprintf(stderr,"New total size of %s(%p):%d\n", th->name, th, th->total_size);
- g_hash_table_insert(tile_hash, string_hash_lookup( th->name ), th);
-}
-
-static int
-tile_data_size(char *tile)
-{
- struct tile_head *th;
- th=g_hash_table_lookup(tile_hash, tile);
- if (! th)
- return 0;
- return th->total_size;
-}
-
-static int
-merge_tile(char *base, char *sub)
-{
- struct tile_head *thb, *ths;
- thb=g_hash_table_lookup(tile_hash, base);
- ths=g_hash_table_lookup(tile_hash, sub);
- if (! ths)
- return 0;
- if (debug_tile(base) || debug_tile(sub))
- fprintf(stderr,"merging '%s'(%p) (%d) with '%s'(%p) (%d)\n", base, thb, thb ? thb->total_size : 0, sub, ths, ths->total_size);
- if (! thb) {
- thb=ths;
- g_hash_table_remove(tile_hash, sub);
- thb->name=string_hash_lookup(base);
- g_hash_table_insert(tile_hash, string_hash_lookup( thb->name ), thb);
-
- } else {
- thb=realloc(thb, sizeof(struct tile_head)+( ths->num_subtiles+thb->num_subtiles ) * sizeof( char*) );
- assert(thb != NULL);
- memcpy( th_get_subtile( thb, thb->num_subtiles ), th_get_subtile( ths, 0 ), ths->num_subtiles * sizeof( char*) );
- thb->num_subtiles+=ths->num_subtiles;
- thb->total_size+=ths->total_size;
- g_hash_table_insert(tile_hash, string_hash_lookup( thb->name ), thb);
- g_hash_table_remove(tile_hash, sub);
- g_free(ths);
- }
- return 1;
-}
-
-static gint
-get_tiles_list_cmp(gconstpointer s1, gconstpointer s2)
-{
- return strcmp((char *)s1, (char *)s2);
-}
-
-static void
-get_tiles_list_func(char *key, struct tile_head *th, GList **list)
-{
- *list=g_list_prepend(*list, key);
-}
-
-static GList *
-get_tiles_list(void)
-{
- GList *ret=NULL;
- g_hash_table_foreach(tile_hash, (GHFunc)get_tiles_list_func, &ret);
- ret=g_list_sort(ret, get_tiles_list_cmp);
- return ret;
-}
-
-#if 0
-static void
-write_tile(char *key, struct tile_head *th, gpointer dummy)
-{
- FILE *f;
- char buffer[1024];
- fprintf(stderr,"DEBUG: Writing %s\n", key);
- strcpy(buffer,"tiles/");
- strcat(buffer,key);
-#if 0
- strcat(buffer,".bin");
-#endif
- f=fopen(buffer, "wb+");
- while (th) {
- fwrite(th->data, th->size, 1, f);
- th=th->next;
- }
- fclose(f);
-}
-#endif
-
-static void
-write_item(char *tile, struct item_bin *ib, FILE *reference)
-{
- struct tile_head *th;
- int size;
-
- th=g_hash_table_lookup(tile_hash2, tile);
- if (debug_itembin(ib)) {
- fprintf(stderr,"tile head %p\n",th);
- }
- if (! th)
- th=g_hash_table_lookup(tile_hash, tile);
- if (th) {
- if (debug_itembin(ib)) {
- fprintf(stderr,"Match %s %d %s\n",tile,th->process,th->name);
- dump_itembin(ib);
- }
- if (th->process != 0 && th->process != 1) {
- fprintf(stderr,"error with tile '%s' of length %d\n", tile, (int)strlen(tile));
- abort();
- }
- if (! th->process) {
- if (reference)
- fseek(reference, 8, SEEK_CUR);
- return;
- }
- if (debug_tile(tile))
- fprintf(stderr,"Data:Writing %d bytes to '%s' (%p,%p) 0x%x\n", (ib->len+1)*4, tile, g_hash_table_lookup(tile_hash, tile), tile_hash2 ? g_hash_table_lookup(tile_hash2, tile) : NULL, ib->type);
- size=(ib->len+1)*4;
- if (th->total_size_used+size > th->total_size) {
- fprintf(stderr,"Overflow in tile %s (used %d max %d item %d)\n", tile, th->total_size_used, th->total_size, size);
- exit(1);
- return;
- }
- if (reference) {
- int offset=th->total_size_used/4;
- dbg_assert(fwrite(&th->zipnum, sizeof(th->zipnum), 1, reference)==1);
- dbg_assert(fwrite(&offset, sizeof(th->total_size_used), 1, reference)==1);
- }
- if (th->zip_data)
- memcpy(th->zip_data+th->total_size_used, ib, size);
- th->total_size_used+=size;
- } else {
- fprintf(stderr,"no tile hash found for %s\n", tile);
- exit(1);
- }
-}
-
-void
-tile_write_item_to_tile(struct tile_info *info, struct item_bin *ib, FILE *reference, char *name)
-{
- if (info->write)
- write_item(name, ib, reference);
- else
- tile_extend(name, ib, info->tiles_list);
-}
-
-void
-tile_write_item_minmax(struct tile_info *info, struct item_bin *ib, FILE *reference, int min, int max)
-{
- struct rect r;
- char buffer[1024];
- bbox((struct coord *)(ib+1), ib->clen/2, &r);
- buffer[0]='\0';
- tile(&r, info->suffix, buffer, max, overlap, NULL);
- tile_write_item_to_tile(info, ib, reference, buffer);
-}
-
-int
-add_aux_tile(struct zip_info *zip_info, char *name, char *filename, int size)
-{
- struct aux_tile *at;
- GList *l;
- l=aux_tile_list;
- while (l) {
- at=l->data;
- if (!strcmp(at->name, name)) {
- return -1;
- }
- l=g_list_next(l);
- }
- at=g_new0(struct aux_tile, 1);
- at->name=g_strdup(name);
- at->filename=g_strdup(filename);
- at->size=size;
- aux_tile_list=g_list_append(aux_tile_list, at);
- fprintf(stderr,"Adding %s as %s\n",filename, name);
- return zip_add_member(zip_info);
-}
-
-int
-write_aux_tiles(struct zip_info *zip_info)
-{
- GList *l=aux_tile_list;
- struct aux_tile *at;
- char *buffer;
- FILE *f;
- int count=0;
-
- while (l) {
- at=l->data;
- buffer=malloc(at->size);
- assert(buffer != NULL);
- f=fopen(at->filename,"rb");
- assert(f != NULL);
- fread(buffer, at->size, 1, f);
- fclose(f);
- write_zipmember(zip_info, at->name, zip_get_maxnamelen(zip_info), buffer, at->size);
- free(buffer);
- count++;
- l=g_list_next(l);
- zip_add_member(zip_info);
- }
- return count;
-}
-
-static int
-add_tile_hash(struct tile_head *th)
-{
- int idx,len,maxnamelen=0;
- char **data;
-
-#if 0
- g_hash_table_insert(tile_hash2, string_hash_lookup( th->name ), th);
-#endif
- for( idx = 0; idx < th->num_subtiles; idx++ ) {
-
- data = th_get_subtile( th, idx );
-
- if (debug_tile(((char *)data)) || debug_tile(th->name)) {
- fprintf(stderr,"Parent for '%s' is '%s'\n", *data, th->name);
- }
-
- g_hash_table_insert(tile_hash2, *data, th);
-
- len = strlen( *data );
-
- if (len > maxnamelen) {
- maxnamelen=len;
- }
- }
- return maxnamelen;
-}
-
-
-int
-create_tile_hash(void)
-{
- struct tile_head *th;
- int len,maxnamelen=0;
-
- tile_hash2=g_hash_table_new(g_str_hash, g_str_equal);
- th=tile_head_root;
- while (th) {
- len=add_tile_hash(th);
- if (len > maxnamelen)
- maxnamelen=len;
- th=th->next;
- }
- return maxnamelen;
-}
-
-static void
-create_tile_hash_list(GList *list)
-{
- GList *next;
- struct tile_head *th;
-
- tile_hash2=g_hash_table_new(g_str_hash, g_str_equal);
-
- next=g_list_first(list);
- while (next) {
- th=g_hash_table_lookup(tile_hash, next->data);
- if (!th) {
- fprintf(stderr,"No tile found for '%s'\n", (char *)(next->data));
- }
- add_tile_hash(th);
- next=g_list_next(next);
- }
-}
-
-void
-load_tilesdir(FILE *in)
-{
- char tile[32],subtile[32],c;
- int size,zipnum=0;
- struct tile_head **last;
- create_tile_hash();
- tile_hash=g_hash_table_new(g_str_hash, g_str_equal);
- last=&tile_head_root;
- while (fscanf(in,"%[^:]:%d",tile,&size) == 2) {
- struct tile_head *th=malloc(sizeof(struct tile_head));
- if (!strcmp(tile,"index"))
- tile[0]='\0';
- th->num_subtiles=0;
- th->total_size=size;
- th->total_size_used=0;
- th->zipnum=zipnum++;
- th->zip_data=NULL;
- th->name=string_hash_lookup(tile);
-#if 0
- printf("tile '%s' %d\n",tile,size);
-#endif
- while (fscanf(in,":%[^:\n]",subtile) == 1) {
-#if 0
- printf("subtile '%s'\n",subtile);
-#endif
- th=realloc(th, sizeof(struct tile_head)+(th->num_subtiles+1)*sizeof(char*));
- *th_get_subtile( th, th->num_subtiles ) = string_hash_lookup(subtile);
- th->num_subtiles++;
- }
- *last=th;
- last=&th->next;
- add_tile_hash(th);
- g_hash_table_insert(tile_hash, th->name, th);
- if (fread(&c, 1, 1, in) != 1 || c != '\n') {
- printf("syntax error\n");
- }
- }
- *last=NULL;
-}
-
-void
-write_tilesdir(struct tile_info *info, struct zip_info *zip_info, FILE *out)
-{
- int idx,len,maxlen;
- GList *next,*tiles_list;
- char **data;
- struct tile_head *th,**last=NULL;
-
- tiles_list=get_tiles_list();
- info->tiles_list=&tiles_list;
- if (! info->write)
- create_tile_hash_list(tiles_list);
- next=g_list_first(tiles_list);
- last=&tile_head_root;
- maxlen=info->maxlen;
- if (! maxlen) {
- while (next) {
- if (strlen(next->data) > maxlen)
- maxlen=strlen(next->data);
- next=g_list_next(next);
- }
- }
- len=maxlen;
- while (len >= 0) {
-#if 0
- fprintf(stderr,"PROGRESS: collecting tiles with len=%d\n", len);
-#endif
- next=g_list_first(tiles_list);
- while (next) {
- if (strlen(next->data) == len) {
- th=g_hash_table_lookup(tile_hash, next->data);
- if (!info->write) {
- *last=th;
- last=&th->next;
- th->next=NULL;
- th->zipnum=zip_get_zipnum(zip_info);
- fprintf(out,"%s:%d",strlen((char *)next->data)?(char *)next->data:"index",th->total_size);
-
- for ( idx = 0; idx< th->num_subtiles; idx++ ){
- data= th_get_subtile( th, idx );
- fprintf(out,":%s", *data);
- }
-
- fprintf(out,"\n");
- }
- if (th->name[strlen(info->suffix)])
- index_submap_add(info, th);
- zip_add_member(zip_info);
- processed_tiles++;
- }
- next=g_list_next(next);
- }
- len--;
- }
- g_list_free(tiles_list);
- if (info->suffix[0] && info->write) {
- struct item_bin *item_bin=init_item(type_submap);
- item_bin_add_coord_rect(item_bin, &world_bbox);
- item_bin_add_attr_range(item_bin, attr_order, 0, 255);
- item_bin_add_attr_int(item_bin, attr_zipfile_ref, zip_get_zipnum(zip_info)-1);
- item_bin_write(item_bin, zip_get_index(zip_info));
- }
-}
-
-void
-merge_tiles(struct tile_info *info)
-{
- struct tile_head *th;
- char basetile[1024];
- char subtile[1024];
- GList *tiles_list_sorted,*last;
- int i,i_min,len,size_all,size[5],size_min,work_done;
- long long zip_size;
-
- do {
- tiles_list_sorted=get_tiles_list();
- fprintf(stderr,"PROGRESS: sorting %d tiles\n", g_list_length(tiles_list_sorted));
- tiles_list_sorted=g_list_sort(tiles_list_sorted, (GCompareFunc)strcmp);
- fprintf(stderr,"PROGRESS: sorting %d tiles done\n", g_list_length(tiles_list_sorted));
- last=g_list_last(tiles_list_sorted);
- zip_size=0;
- while (last) {
- th=g_hash_table_lookup(tile_hash, last->data);
- zip_size+=th->total_size;
- last=g_list_previous(last);
- }
- last=g_list_last(tiles_list_sorted);
- work_done=0;
- while (last) {
- processed_tiles++;
- len=tile_len(last->data);
- if (len >= 1) {
- strcpy(basetile,last->data);
- basetile[len-1]='\0';
- strcat(basetile, info->suffix);
- strcpy(subtile,last->data);
- for (i = 0 ; i < 4 ; i++) {
- subtile[len-1]='a'+i;
- size[i]=tile_data_size(subtile);
- }
- size[4]=tile_data_size(basetile);
- size_all=size[0]+size[1]+size[2]+size[3]+size[4];
- if (size_all < 65536 && size_all > 0 && size_all != size[4]) {
- for (i = 0 ; i < 4 ; i++) {
- subtile[len-1]='a'+i;
- work_done+=merge_tile(basetile, subtile);
- }
- } else {
- for (;;) {
- size_min=size_all;
- i_min=-1;
- for (i = 0 ; i < 4 ; i++) {
- if (size[i] && size[i] < size_min) {
- size_min=size[i];
- i_min=i;
- }
- }
- if (i_min == -1)
- break;
- if (size[4]+size_min >= 65536)
- break;
- subtile[len-1]='a'+i_min;
- work_done+=merge_tile(basetile, subtile);
- size[4]+=size[i_min];
- size[i_min]=0;
- }
- }
- }
- last=g_list_previous(last);
- }
- g_list_free(tiles_list_sorted);
- fprintf(stderr,"PROGRESS: merged %d tiles\n", work_done);
- } while (work_done);
-}
-
-struct attr map_information_attrs[32];
-
-void
-index_init(struct zip_info *info, int version)
-{
- struct item_bin *item_bin;
- int i;
- map_information_attrs[0].type=attr_version;
- map_information_attrs[0].u.num=version;
- item_bin=init_item(type_map_information);
- for (i = 0 ; i < 32 ; i++) {
- if (!map_information_attrs[i].type)
- break;
- item_bin_add_attr(item_bin, &map_information_attrs[i]);
- }
- item_bin_write(item_bin, zip_get_index(info));
-}
-
-void
-index_submap_add(struct tile_info *info, struct tile_head *th)
-{
- int tlen=tile_len(th->name);
- int len=tlen;
- char *index_tile;
- struct rect r;
- struct item_bin *item_bin;
-
- index_tile=g_alloca(len+1+strlen(info->suffix));
- strcpy(index_tile, th->name);
- if (len > 6)
- len=6;
- else
- len=0;
- index_tile[len]=0;
- strcat(index_tile, info->suffix);
- tile_bbox(th->name, &r, overlap);
-
- item_bin=init_item(type_submap);
- item_bin_add_coord_rect(item_bin, &r);
- item_bin_add_attr_range(item_bin, attr_order, (tlen > 4)?tlen-4 : 0, 255);
- item_bin_add_attr_int(item_bin, attr_zipfile_ref, th->zipnum);
- tile_write_item_to_tile(info, item_bin, NULL, index_tile);
-}
diff --git a/navit/maptool/zip.c b/navit/maptool/zip.c
deleted file mode 100644
index f352e6353..000000000
--- a/navit/maptool/zip.c
+++ /dev/null
@@ -1,483 +0,0 @@
-/**
- * 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 <zlib.h>
-#include <string.h>
-#include <stdlib.h>
-#include "debug.h"
-#include "maptool.h"
-#include "config.h"
-#include "zipfile.h"
-
-#ifdef HAVE_LIBCRYPTO
-#include <openssl/sha.h>
-#include <openssl/hmac.h>
-#include <openssl/aes.h>
-#include <openssl/evp.h>
-#include <openssl/rand.h>
-#include <openssl/md5.h>
-#endif
-
-struct zip_info {
- int zipnum;
- int dir_size;
- long long offset;
- int compression_level;
- int maxnamelen;
- int zip64;
- short date;
- short time;
- char *passwd;
- FILE *res2;
- FILE *index;
- FILE *dir;
-#ifdef HAVE_LIBCRYPTO
- MD5_CTX md5_ctx;
-#endif
- int md5;
-};
-
-static int
-zip_write(struct zip_info *info, void *data, int len)
-{
- if (fwrite(data, len, 1, info->res2) != 1)
- return 0;
-#ifdef HAVE_LIBCRYPTO
- if (info->md5)
- MD5_Update(&info->md5_ctx, data, len);
-#endif
- return 1;
-}
-
-#ifdef HAVE_ZLIB
-static int
-compress2_int(Byte *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level)
-{
- z_stream stream;
- int err;
-
- stream.next_in = (Bytef*)source;
- stream.avail_in = (uInt)sourceLen;
- stream.next_out = dest;
- stream.avail_out = (uInt)*destLen;
- if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
-
- stream.zalloc = (alloc_func)0;
- stream.zfree = (free_func)0;
- stream.opaque = (voidpf)0;
-
- err = deflateInit2(&stream, level, Z_DEFLATED, -15, 9, Z_DEFAULT_STRATEGY);
- if (err != Z_OK) return err;
-
- err = deflate(&stream, Z_FINISH);
- if (err != Z_STREAM_END) {
- deflateEnd(&stream);
- return err == Z_OK ? Z_BUF_ERROR : err;
- }
- *destLen = stream.total_out;
-
- err = deflateEnd(&stream);
- return err;
-}
-#endif
-
-void
-write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, int data_size)
-{
- struct zip_lfh lfh = {
- 0x04034b50,
- 0x0a,
- 0x0,
- 0x0,
- zip_info->time,
- zip_info->date,
- 0x0,
- 0x0,
- 0x0,
- filelen,
- 0x0,
- };
- struct zip_cd cd = {
- 0x02014b50,
- 0x17,
- 0x00,
- 0x0a,
- 0x00,
- 0x0000,
- 0x0,
- zip_info->time,
- zip_info->date,
- 0x0,
- 0x0,
- 0x0,
- filelen,
- 0x0000,
- 0x0000,
- 0x0000,
- 0x0000,
- 0x0,
- zip_info->offset,
- };
- struct zip_cd_ext cd_ext = {
- 0x1,
- 0x8,
- zip_info->offset,
- };
-#ifdef HAVE_LIBCRYPTO
- struct zip_enc enc = {
- 0x9901,
- 0x7,
- 0x2,
- 'A','E',
- 0x1,
- 0x0,
- };
- unsigned char salt[8], key[34], verify[2], mac[10];
-#endif
- char *filename;
- int crc=0,len,comp_size=data_size;
- uLongf destlen=data_size+data_size/500+12;
- char *compbuffer;
-
- compbuffer = malloc(destlen);
- if (!compbuffer) {
- fprintf(stderr, "No more memory.\n");
- exit (1);
- }
-#ifdef HAVE_LIBCRYPTO
- if (zip_info->passwd) {
- RAND_bytes(salt, sizeof(salt));
- PKCS5_PBKDF2_HMAC_SHA1(zip_info->passwd, strlen(zip_info->passwd), salt, sizeof(salt), 1000, sizeof(key), key);
- verify[0]=key[32];
- verify[1]=key[33];
- } else {
-#endif
- crc=crc32(0, NULL, 0);
- crc=crc32(crc, (unsigned char *)data, data_size);
-#ifdef HAVE_LIBCRYPTO
- }
-#endif
- lfh.zipmthd=zip_info->compression_level ? 8:0;
-#ifdef HAVE_ZLIB
- if (zip_info->compression_level) {
- int error=compress2_int((Byte *)compbuffer, &destlen, (Bytef *)data, data_size, zip_info->compression_level);
- if (error == Z_OK) {
- if (destlen < data_size) {
- data=compbuffer;
- comp_size=destlen;
- } else
- lfh.zipmthd=0;
- } else {
- fprintf(stderr,"compress2 returned %d\n", error);
- }
- }
-#endif
- lfh.zipcrc=crc;
- lfh.zipsize=comp_size;
- lfh.zipuncmp=data_size;
-#ifdef HAVE_LIBCRYPTO
- if (zip_info->passwd) {
- enc.compress_method=lfh.zipmthd;
- lfh.zipmthd=99;
- lfh.zipxtraln+=sizeof(enc);
- lfh.zipgenfld|=1;
- lfh.zipsize+=sizeof(salt)+sizeof(verify)+sizeof(mac);
- }
-#endif
- cd.zipccrc=crc;
- cd.zipcsiz=lfh.zipsize;
- cd.zipcunc=data_size;
- cd.zipcmthd=lfh.zipmthd;
- if (zip_info->zip64) {
- cd.zipofst=0xffffffff;
- cd.zipcxtl+=sizeof(cd_ext);
- }
-#ifdef HAVE_LIBCRYPTO
- if (zip_info->passwd) {
- cd.zipcmthd=99;
- cd.zipcxtl+=sizeof(enc);
- cd.zipcflg|=1;
- }
-#endif
- filename=g_alloca(filelen+1);
- strcpy(filename, name);
- len=strlen(filename);
- while (len < filelen) {
- filename[len++]='_';
- }
- filename[filelen]='\0';
- zip_write(zip_info, &lfh, sizeof(lfh));
- zip_write(zip_info, filename, filelen);
- zip_info->offset+=sizeof(lfh)+filelen;
-#ifdef HAVE_LIBCRYPTO
- if (zip_info->passwd) {
- unsigned char counter[16], xor[16], *datap=(unsigned char *)data;
- int size=comp_size;
- AES_KEY aeskey;
- zip_write(zip_info, &enc, sizeof(enc));
- zip_write(zip_info, salt, sizeof(salt));
- zip_write(zip_info, verify, sizeof(verify));
- zip_info->offset+=sizeof(enc)+sizeof(salt)+sizeof(verify);
- AES_set_encrypt_key(key, 128, &aeskey);
- memset(counter, 0, sizeof(counter));
- while (size > 0) {
- int i,curr_size,idx=0;
- do {
- counter[idx]++;
- } while (!counter[idx++]);
- AES_encrypt(counter, xor, &aeskey);
- curr_size=size;
- if (curr_size > sizeof(xor))
- curr_size=sizeof(xor);
- for (i = 0 ; i < curr_size ; i++)
- *datap++^=xor[i];
- size-=curr_size;
- }
- }
-#endif
- zip_write(zip_info, data, comp_size);
- zip_info->offset+=comp_size;
-#ifdef HAVE_LIBCRYPTO
- if (zip_info->passwd) {
- unsigned int maclen=sizeof(mac);
- unsigned char mactmp[maclen*2];
- HMAC(EVP_sha1(), key+16, 16, (unsigned char *)data, comp_size, mactmp, &maclen);
- zip_write(zip_info, mactmp, sizeof(mac));
- zip_info->offset+=sizeof(mac);
- }
-#endif
- dbg_assert(fwrite(&cd, sizeof(cd), 1, zip_info->dir)==1);
- dbg_assert(fwrite(filename, filelen, 1, zip_info->dir)==1);
- zip_info->dir_size+=sizeof(cd)+filelen;
- if (zip_info->zip64) {
- dbg_assert(fwrite(&cd_ext, sizeof(cd_ext), 1, zip_info->dir)==1);
- zip_info->dir_size+=sizeof(cd_ext);
- }
-#ifdef HAVE_LIBCRYPTO
- if (zip_info->passwd) {
- dbg_assert(fwrite(&enc, sizeof(enc), 1, zip_info->dir)==1);
- zip_info->dir_size+=sizeof(enc);
- }
-#endif
-
- free(compbuffer);
-}
-
-void
-zip_write_index(struct zip_info *info)
-{
- int size=ftell(info->index);
- char *buffer;
-
- buffer=g_alloca(size);
- fseek(info->index, 0, SEEK_SET);
- fread(buffer, size, 1, info->index);
- write_zipmember(info, "index", strlen("index"), buffer, size);
- info->zipnum++;
-}
-
-static void
-zip_write_file_data(struct zip_info *info, FILE *in)
-{
- size_t size;
- char buffer[4096];
- while ((size=fread(buffer, 1, 4096, in)))
- zip_write(info, buffer, size);
-}
-
-int
-zip_write_directory(struct zip_info *info)
-{
- struct zip_eoc eoc = {
- 0x06054b50,
- 0x0000,
- 0x0000,
- 0x0000,
- 0x0000,
- 0x0,
- 0x0,
- 0x0,
- };
- struct zip64_eoc eoc64 = {
- 0x06064b50,
- 0x0,
- 0x0,
- 0x0403,
- 0x0,
- 0x0,
- 0x0,
- 0x0,
- 0x0,
- 0x0,
- };
- struct zip64_eocl eocl = {
- 0x07064b50,
- 0x0,
- 0x0,
- 0x0,
- };
-
- fseek(info->dir, 0, SEEK_SET);
- zip_write_file_data(info, info->dir);
- if (info->zip64) {
- eoc64.zip64esize=sizeof(eoc64)-12;
- eoc64.zip64enum=info->zipnum;
- eoc64.zip64ecenn=info->zipnum;
- eoc64.zip64ecsz=info->dir_size;
- eoc64.zip64eofst=info->offset;
- zip_write(info, &eoc64, sizeof(eoc64));
- eocl.zip64lofst=info->offset+info->dir_size;
- zip_write(info, &eocl, sizeof(eocl));
- }
- eoc.zipenum=info->zipnum;
- eoc.zipecenn=info->zipnum;
- eoc.zipecsz=info->dir_size;
- eoc.zipeofst=info->offset;
- zip_write(info, &eoc, sizeof(eoc));
- sig_alrm(0);
-#ifndef _WIN32
- alarm(0);
-#endif
- return 0;
-}
-
-struct zip_info *
-zip_new(void)
-{
- return g_new0(struct zip_info, 1);
-}
-
-void
-zip_set_md5(struct zip_info *info, int on)
-{
-#ifdef HAVE_LIBCRYPTO
- info->md5=on;
- if (on)
- MD5_Init(&info->md5_ctx);
-#endif
-}
-
-int
-zip_get_md5(struct zip_info *info, unsigned char *out)
-{
- if (!info->md5)
- return 0;
-#ifdef HAVE_LIBCRYPTO
- MD5_Final(out, &info->md5_ctx);
- return 1;
-#endif
- return 0;
-}
-
-void
-zip_set_zip64(struct zip_info *info, int on)
-{
- info->zip64=on;
-}
-
-void
-zip_set_compression_level(struct zip_info *info, int level)
-{
- info->compression_level=level;
-}
-
-void
-zip_set_maxnamelen(struct zip_info *info, int max)
-{
- info->maxnamelen=max;
-}
-
-int
-zip_get_maxnamelen(struct zip_info *info)
-{
- return info->maxnamelen;
-}
-
-int
-zip_add_member(struct zip_info *info)
-{
- return info->zipnum++;
-}
-
-
-int
-zip_set_timestamp(struct zip_info *info, char *timestamp)
-{
- int year,month,day,hour,min,sec;
-
- if (sscanf(timestamp,"%d-%d-%dT%d:%d:%d",&year,&month,&day,&hour,&min,&sec) == 6) {
- info->date=day | (month << 5) | ((year-1980) << 9);
- info->time=(sec >> 1) | (min << 5) | (hour << 11);
- return 1;
- }
- return 0;
-}
-
-int
-zip_open(struct zip_info *info, char *out, char *dir, char *index)
-{
- info->res2=fopen(out,"wb+");
- if(!info->res2) {
- fprintf(stderr,"Could not open output zip file %s\n", out);
- return 0;
- }
- info->dir=fopen(dir,"wb+");
- if(!info->dir) {
- fprintf(stderr,"Could not open zip directory %s\n", dir);
- return 0;
- }
- info->index=fopen(index,"wb+");
- if(!info->index) {
- fprintf(stderr,"Could not open index %s\n", index);
- return 0;
- }
- return 1;
-}
-
-FILE *
-zip_get_index(struct zip_info *info)
-{
- return info->index;
-}
-
-int
-zip_get_zipnum(struct zip_info *info)
-{
- return info->zipnum;
-}
-
-void
-zip_set_zipnum(struct zip_info *info, int num)
-{
- info->zipnum=num;
-}
-
-void
-zip_close(struct zip_info *info)
-{
- fclose(info->index);
- fclose(info->dir);
- fclose(info->res2);
-}
-
-void
-zip_destroy(struct zip_info *info)
-{
- g_free(info);
-}
diff --git a/navit/maptype.c b/navit/maptype.c
deleted file mode 100644
index cb77a1d5b..000000000
--- a/navit/maptype.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * 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 "debug.h"
-#include "projection.h"
-#include "item.h"
-#include "map.h"
-#include "maptype.h"
-
-static struct maptype *maptype_root;
-
-void
-maptype_register(char *name, struct map_priv *(*map_new)(struct map_methods *meth, char *data, char **charset, enum projection *pro))
-{
- struct maptype *mt;
- mt=g_new(struct maptype, 1);
- mt->name=g_strdup(name);
- mt->map_new=map_new;
- mt->next=maptype_root;
- maptype_root=mt;
-}
-
-struct maptype *
-maptype_get(const char *name)
-{
- struct maptype *mt=maptype_root;
-
- while (mt) {
- if (!g_ascii_strcasecmp(mt->name, name))
- return mt;
- mt=mt->next;
- }
- return NULL;
-}
diff --git a/navit/maptype.h b/navit/maptype.h
deleted file mode 100644
index 7ebf233b6..000000000
--- a/navit/maptype.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_MAPTYPE_H
-#define NAVIT_MAPTYPE_H
-
-struct map_methods;
-enum projection;
-
-struct maptype {
- char *name;
- struct map_priv *(*map_new)(struct map_methods *meth, char *data, char **charset, enum projection *pro);
- struct maptype *next;
-};
-
-/* prototypes */
-struct map_methods;
-struct map_priv;
-struct maptype;
-void maptype_register(char *name, struct map_priv *(*map_new)(struct map_methods *meth, char *data, char **charset, enum projection *pro));
-struct maptype *maptype_get(const char *name);
-
-#endif
-
diff --git a/navit/menu.c b/navit/menu.c
deleted file mode 100644
index 92afa6c73..000000000
--- a/navit/menu.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * 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 "menu.h"
-#include "debug.h"
-
-struct menu *
-menu_add(struct menu *menu, char *name, enum menu_type type, struct callback *cb)
-{
- struct menu *this;
- if (! menu || ! menu->meth.add)
- return NULL;
- this=g_new0(struct menu, 1);
- this->priv=(*menu->meth.add)(menu->priv, &this->meth, name, type, cb);
- if (! this->priv) {
- g_free(this);
- return NULL;
- }
-
- return this;
-}
-
-void
-menu_popup(struct menu *menu)
-{
- if (! menu || ! menu->meth.popup)
- return;
- (*menu->meth.popup)(menu->priv);
-
-}
diff --git a/navit/menu.h b/navit/menu.h
deleted file mode 100644
index e2dd1c0e8..000000000
--- a/navit/menu.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_MENU_H
-#define NAVIT_MENU_H
-
-enum menu_type {
- menu_type_submenu,
- menu_type_menu,
- menu_type_toggle,
-};
-
-struct container;
-struct menu;
-struct callback;
-
-struct menu_methods {
- struct menu_priv *(*add)(struct menu_priv *menu, struct menu_methods *meth, char *name, enum menu_type type, struct callback *cb);
- void (*set_toggle)(struct menu_priv *menu, int active);
- int (*get_toggle)(struct menu_priv *menu);
- void (*popup)(struct menu_priv *menu);
-};
-
-struct menu {
- struct menu_priv *priv;
- struct menu_methods meth;
-};
-
-/* prototypes */
-struct menu *menu_add(struct menu *menu, char *name, enum menu_type type, struct callback *cb);
-void menu_popup(struct menu *menu);
-/* end of prototypes */
-#endif
diff --git a/navit/messages.c b/navit/messages.c
deleted file mode 100644
index 80b17236a..000000000
--- a/navit/messages.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * 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 <time.h>
-#include "messages.h"
-#include "callback.h"
-#include "event.h"
-#include "attr.h"
-
-struct messagelist {
- struct message *messages; /**< All the messages that can currently be shown */
- int last_mid; /**< Last Message ID */
- int maxage; /**< Maximum age of messages */
- int maxnum; /**< Maximum number of messages */
- struct callback *msg_cleanup_cb; /**< Callback to clean up the messages */
- struct event_timeout *msg_cleanup_to; /**< Idle event to clean up the messages */
-};
-
-int
-message_new(struct messagelist *this_, const char *message)
-{
- struct message *msg;
-
- msg = g_new0(struct message, 1);
- msg->text = g_strdup(message);
- msg->id = ++(this_->last_mid);
- msg->time = time(NULL);
-
- msg->next = this_->messages;
- this_->messages = msg;
-
- return msg->id;
-}
-
-int
-message_delete(struct messagelist *this_, int mid)
-{
- struct message *msg,*last;;
-
- msg = this_->messages;
- last = NULL;
-
- while (msg) {
- if (msg->id == mid) {
- break;
- }
-
- last = msg;
- msg = msg->next;
- }
-
- if (msg) {
- if (last) {
- last->next = msg->next;
- } else {
- this_->messages = msg->next;
- }
-
- g_free(msg->text);
- g_free(msg);
-
- return 1;
- } else {
- return 0;
- }
-}
-
-static void
-message_cleanup(struct messagelist *this_)
-{
- struct message *msg,*next,*prev=NULL;
- int i;
- time_t now;
-
- msg = this_->messages;
-
- now = time(NULL);
-
- i = 0;
- while (msg && (i < this_->maxnum)) {
- if ((this_->maxage > 0) && (now - msg->time) > this_->maxage) {
- break;
- }
-
- i++;
- prev = msg;
- msg = msg->next;
- }
-
- if (prev) {
- prev->next = NULL;
- } else {
- this_->messages = NULL;
- }
-
- while (msg) {
- next = msg->next;
-
- g_free(msg->text);
- g_free(msg);
-
- msg = next;
- }
-}
-
-struct messagelist
-*messagelist_new(struct attr **attrs)
-{
- struct messagelist *this = g_new0(struct messagelist, 1);
- struct attr num_attr,age_attr;
-
- if (attr_generic_get_attr(attrs, NULL, attr_message_maxage, &age_attr, NULL)) {
- this->maxage = age_attr.u.num;
- } else {
- this->maxage = 10;
- }
-
- if (attr_generic_get_attr(attrs, NULL, attr_message_maxnum, &num_attr, NULL)) {
- this->maxnum = num_attr.u.num;
- } else {
- this->maxnum = 3;
- }
-
- return this;
-}
-
-void
-messagelist_init(struct messagelist *this_)
-{
- if (!event_system())
- return;
- this_->msg_cleanup_cb = callback_new_1(callback_cast(message_cleanup), this_);
- this_->msg_cleanup_to = event_add_timeout(1000, 1, this_->msg_cleanup_cb);
-}
-
-struct message
-*message_get(struct messagelist *this_)
-{
- return this_->messages;
-}
diff --git a/navit/messages.h b/navit/messages.h
deleted file mode 100644
index 8570c6dad..000000000
--- a/navit/messages.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * 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.
- */
-
-#ifndef NAVIT_MESSAGES_H
-#define NAVIT_MESSAGES_H
-
-struct messagelist;
-
-struct message {
- struct message *next;
- int id;
- time_t time;
- char *text;
-};
-
-/* Prototypes */
-struct attr;
-
-int message_new(struct messagelist *this_, const char *message);
-int message_delete(struct messagelist *this_, int mid);
-struct messagelist *messagelist_new(struct attr **attrs);
-void messagelist_init(struct messagelist *this_);
-struct message *message_get(struct messagelist *this_);
-
-#endif
diff --git a/navit/navigation.c b/navit/navigation.c
deleted file mode 100644
index 0812093d1..000000000
--- a/navit/navigation.c
+++ /dev/null
@@ -1,4470 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2015 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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <ctype.h>
-#include <glib.h>
-#include "debug.h"
-#include "profile.h"
-#include "navigation.h"
-#include "coord.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "route.h"
-#include "transform.h"
-#include "mapset.h"
-#include "projection.h"
-#include "map.h"
-#include "navit.h"
-#include "event.h"
-#include "callback.h"
-#include "speech.h"
-#include "vehicleprofile.h"
-#include "plugin.h"
-#include "navit_nls.h"
-#include "util.h"
-#include "linguistics.h"
-
-/* #define DEBUG */
-
-/** @file
- *
- * Generates navigation messages for a calculated route.
- */
-static int roundabout_extra_length=50;
-
-/* TODO: find out if this is being used elsewhere and, if so, move this definition somewhere more generic */
-static int invalid_angle = 361;
-
-/** Minimum absolute delta for a turn.
- * Maneuvers whose absolute delta is less than this will be considered straight */
-static int min_turn_limit = 25;
-
-/* FIXME: revisit these limits. IMHO (mvglasow):
- *
- * 0 degrees = perfect straight road
- * 90 degrees = perfect turn
- * 180 degrees = perfect U turn
- *
- * Then, by interpolation:
- * 45 degrees = perfect "light turn"
- * 135 degrees = perfect "sharp turn"
- *
- * This also agrees with the angles depicted in the maneuver icons.
- *
- * Thresholds should be roughly halfway between them.
- * 25 degrees for min_turn_limit is probably OK (would be 22.5 by the above definition),
- * but maybe the rest should be somewhat closer to 67.5-117.5-157.5 instead of 45-105-165.
- *
- * robotaxi:
- * suggested limits derived from 'simple turn rules' in bugfix/enhancement #1095:
- * 25-45-110-165.
- * taken over from here: 25 (straight limit) and 165 (u-turn-limit used for very strong turn)
- */
-
-/** Minimum absolute delta for a turn of "normal" strength (which is always just announced as "turn left/right" even when strength is required).
- * Maneuvers whose absolute delta is less than this will be announced as "turn easily left/right" when strength is required. */
-static int turn_2_limit = 45;
-
-/** Minimum absolute delta for a sharp turn.
- * Maneuvers whose absolute delta is equal to or greater than this will be announced as "turn sharply left/right" when strength is required. */
-static int sharp_turn_limit = 110;
-
-/** Minimum absolute delta for a U turn.
- * Maneuvers whose absolute delta is less than this (but at least #min_turn_limit) will always be announced as turns.
- * Note that, depending on other conditions, even maneuvers whose delta exceeds the threshold may still be announced as (sharp) turns. */
-static int u_turn_limit = 165;
-
-/** Enum that defines the different states in announcing a turn.
- * These states are dependent on the current distance to the turn;
- * the distances are configured in navit.xml for every type of highway. */
-enum announcement_level {
- level_connect = -2,
- level_error = -1,
- level_now = 0,
- level_meters = 1,
- level_soon = 2,
- level_follow = 3
-};
-
-enum gender {unknown, masculine, feminine, neuter};
-
-struct suffix {
- char *fullname;
- char *abbrev;
- int gender;
-} suffixes[]= {
- /* DE */
- {"weg", NULL, masculine},
-/* {"platz", "pl.", masculine}, collides with Lithuanian "plentas" (which is more frequent) */
- {"platz", NULL, masculine},
- {"ring", NULL, masculine},
- {"bogen", NULL, masculine},
- {"allee", NULL, feminine},
- {"gasse", NULL, feminine},
- {"straße", "str.", feminine},
-
- /* EN */
- {"street", NULL, masculine},
- {"drive", NULL, masculine},
-
- /* FR */
- {"boulevard", NULL, masculine},
- {"chemin", NULL, neuter},
- {"rue", NULL, feminine},
-
- /* LT, as per http://wiki.openstreetmap.org/wiki/WikiProject_Lithuania */
- {"gatvÄ—", "g.", feminine},
- {"plentas", "pl.", masculine},
- {"prospektas", "pr.", masculine},
- {"alÄ—ja", "al.", feminine},
- {"skersgatvis", "skg.", masculine},
- {"aikštė", "a.", feminine},
-
- /* NL */
- {"straat", NULL, neuter},
-/* {"weg", NULL, neuter}, doubles-up with German */
- {"baan", NULL, neuter},
- {"laan", NULL, neuter},
- {"wegel", NULL, neuter},
-
-};
-
-
-enum nav_status_int {
- status_none = 0,
- status_busy = 1,
- status_has_ritem = 2,
- status_has_sitem = 4
-};
-
-
-struct navigation {
- NAVIT_OBJECT
- struct route *route;
- struct map *map;
- struct item_hash *hash;
- struct vehicleprofile *vehicleprofile;
- struct navigation_itm *first;
- struct navigation_itm *last;
- struct navigation_command *cmd_first;
- struct navigation_command *cmd_last;
- struct callback_list *callback_speech;
- struct callback_list *callback;
- struct navit *navit;
- struct speech *speech;
- int level_last;
- struct item item_last;
- int turn_around;
- int turn_around_limit;
- int distance_turn;
- struct callback *route_cb;
- int announce[route_item_last-route_item_first+1][3];
- int tell_street_name;
- int delay;
- int curr_delay;
- int turn_around_count;
- int flags;
- struct map_rect *route_mr; /**< Map rect on the route map, used for maneuver generation */
- enum nav_status_int status_int; /**< Internal status information used during maneuver generation */
- struct callback *idle_cb; /**< Idle callback to process the route map */
- struct event_idle *idle_ev; /**< The pointer to the idle event */
- int nav_status; /**< Status of the navigation engine */
-};
-
-/** @brief Set of simplified distance values that are easy to be pronounced.
-* Used for the 'vocabulary_distances' configuration.
-*/
-int distances[]={1,2,3,4,5,10,25,50,75,100,150,200,250,300,400,500,750,-1};
-
-
-/* Allowed values for navigation_maneuver.merge_or_exit
- * The numeric values are chosen in such a way that they can be interpreted as flags:
- * 1=merge, 2=exit, 4=interchange, 8=right, 16=left
- * Identifiers were chosen over flags to enforce certain rules
- * (merge/exit/interchange and left/right are mutually exclusive, left/right requires merge or exit). */
-
-/** Not merging into or exiting from a motorway_like road */
-#define mex_none 0
-
-/** Merging into a motorway-like road, direction undefined.
- * This value is not intended to be set directly but can be used for
- * comparisons, e.g. `merge_or_exit & mex_merge`. */
-#define mex_merge 1
-
-/** Exiting from a motorway-like road, direction undefined.
- * This should only be used for ramps leading to a non-motorway road.
- * For interchanges, use #mex_interchange instead.
- * This value is not intended to be set directly but can be used for
- * comparisons, e.g. `merge_or_exit & mex_merge`. */
-#define mex_exit 2
-
-/** Motorway-like road splits in two.
- * This should be used for all cases in which ramps lead to another motorway-like road. */
-#define mex_interchange 4
-
-/** Merging into a motorway-like road to the right (coming from the left) */
-#define mex_merge_right 9
-
-/** Exiting from a motorway-like road to the right.
- * @see mex_exit for usage */
-#define mex_exit_right 10
-
-/** Merging into a motorway-like road to the left (coming from the right) */
-#define mex_merge_left 17
-
-/** Exiting from a motorway-like road to the left.
- * @see mex_exit for usage */
-#define mex_exit_left 18
-
-/**
- * @brief Holds information about a navigation maneuver.
- *
- * This structure is populated when a navigation maneuver is first analyzed. Its members contain all information
- * needed to decide whether or not to announce the maneuver, what type of maneuver it is and the information that
- * was used to determine the former two.
- */
-struct navigation_maneuver {
- enum item_type type; /**< The type of maneuver to perform. Any {@code nav_*} item is permitted here, with one exception:
- merge or exit maneuvers are indicated by the {@code merge_or_exit} member. The {@code item_type}
- for such maneuvers should be a turn instruction in cases where the maneuver is ambiguous, or
- {@code nav_none} for cases in which we would expect the driver to perform this maneuver even
- without being instructed to do so. **/
- int delta; /**< Bearing difference (the angle the driver has to steer) for the maneuver */
- int merge_or_exit; /**< Whether we are merging into or exiting from a motorway_like road or we are at an interchange */
- int is_complex_t_junction; /**< Whether we are coming from the "stem" of a T junction whose "bar" is a dual-carriageway road and
- crossing the opposite lane of the "bar" first (i.e. turning left in countries that drive on the
- right, or turning right in countries that drive on the left). For these maneuvers
- {@code num_options} is 1 (which means we normally wouldn't announce the maneuver) but drivers
- would expect an announcement in such cases. */
- int num_options; /**< Number of permitted candidate ways, i.e. ways which we may enter (based on access flags of the
- way but without considering turn restrictions). Permitted candidate ways include the route. */
- int num_new_motorways; /**< Number of permitted candidate ways that are motorway-like.
- Numbers greater then one should be interpreted as "more than one", not as a precise number. */
- int num_other_ways; /**< Number of permitted candidate ways that are neither ramps nor motorway-like */
- int old_cat; /**< Maneuver category of the way leading to the maneuver */
- int new_cat; /**< Maneuver category of the selected way after the maneuver */
- int max_cat; /**< Highest maneuver category of any permitted candidate way other than the route */
- int num_similar_ways; /**< Number of candidate ways (including the route) that have a {@code maneuver_category()} similar
- to {@code old_cat}. See {@code maneuver_required2()} for definition of "similar". */
- int left; /**< Minimum bearing delta of any candidate way left of the route, -180 for none */
- int right; /**< Minimum bearing delta of any candidate way right of the route, 180 for none */
- int is_unambiguous; /**< Whether the maneuver is unambiguous. A maneuver is unambiguous if, despite
- multiple candidate way being available, we can reasonable expect the driver to
- continue on the route without being told to do so. This is typically the case when
- the route stays on the main road and goes straight, while all other candidate ways
- are minor roads and involve a significant turn. */
- int is_same_street; /**< Whether the street keeps its name after the maneuver. */
-};
-
-/**
- * @brief Holds information about a command for a navigation maneuver.
- *
- * An instance of this structure is generated for each navigation maneuver that is to be announced.
- */
-struct navigation_command {
- struct navigation_itm *itm; /**< The navigation item following the maneuver */
- struct navigation_command *next; /**< next command in the list */
- struct navigation_command *prev; /**< previous command in the list */
- int delta; /**< bearing change at maneuver */
- int roundabout_delta; /**< if we are leaving a roundabout, effective bearing change (between entry and exit) with some corrections applied */
- int length; /**< if the maneuver is a roundabout, distance between entry and exit (plus penalty), else 0 */
- struct navigation_maneuver *maneuver; /**< Details on the maneuver to perform */
-};
-
-/*
- * @brief Holds a way that one could possibly drive from a navigation item
- *
- */
-struct navigation_way {
- struct navigation_way *next; /**< Pointer to a linked-list of all navigation_ways from this navigation item */
- short dir; /**< The direction -1 or 1 of the way */
- short angle2; /**< The bearing at the start or the way (0 = north, 90 =east etc.) */
- int flags; /**< The flags of the way */
- struct item item; /**< The item of the way */
- char *name; /**< The street name ({@code street_name} attribute) */
- char *name_systematic; /**< The road number ({@code street_name_systematic} attribute, OSM: {@code ref}) */
- char *exit_ref; /**< Exit_ref if found on the first node of the way*/
- char *exit_label; /**< Exit_label if found on the first node of the way*/
- struct street_destination *destination; /**< The destination this way leads to (OSM: {@code destination}) */
-};
-
-struct navigation_itm {
- struct navigation_way way;
- int angle_end; /**< The bearing at the end of {@code way} */
- struct coord start,end;
- int time;
- int length;
- int speed;
- int dest_time;
- int dest_length;
- int told; /**< Indicates if this item's announcement has been told earlier and should not be told again*/
- int streetname_told; /**< Indicates if this item's streetname has been told in speech navigation*/
- int dest_count;
- struct navigation_itm *next;
- struct navigation_itm *prev;
-};
-
-
-/**
- * @brief A linked list containing the destination of the road
- *
- * Holds the destination info from the road, that is the place
- * you drive to if you keep following the road as found on
- * traffic sign's (ex. Paris, Senlis ...)
- */
-struct street_destination {
- struct street_destination *next;
- char *destination;
- int rank;
-};
-
-
-
-static void navigation_flush(struct navigation *this_);
-
-/**
- * @brief Calculates the delta between two angles
- *
- * The return value is to be interpreted as follows:
- * <ul>
- * <li>-179..-1: {@code angle2} is left of {@code angle1}</li>
- * <li>0: Both angles are identical</li>
- * <li>1..179: {@code angle2} is right of {@code angle1}</li>
- * <li>180: {@code angle1} is opposite of {@code angle2}</li>
- * </ul>
- * @param angle1 The first angle
- * @param angle2 The second angle
- * @return The difference between the angles, see description
- */
-static int
-angle_delta(int angle1, int angle2)
-{
- int delta=angle2-angle1;
- if (delta <= -180)
- delta+=360;
- if (delta > 180)
- delta-=360;
- return delta;
-}
-
-static int
-angle_median(int angle1, int angle2)
-{
- int delta=angle_delta(angle1, angle2);
- int ret=angle1+delta/2;
- if (ret < 0)
- ret+=360;
- if (ret > 360)
- ret-=360;
- return ret;
-}
-
-static int
-angle_opposite(int angle)
-{
- return ((angle+180)%360);
-}
-
-
-/**
- * @brief Checks if two navigation items are on the same street
- *
- * This function checks if two navigation items are on the same street. It returns
- * true if either their name or their "systematic name" (e.g. "A6" or "B256") are the
- * same.
- *
- * @param old_name The name of the first item to be checked
- * @param old_name_systematic The systematic name of the first item to be checked
- * @param new_name The name of the second item to be checked
- * @param new_name_systematic The systematic name of the second item to be checked
- * @return True if both old and new are on the same street
- */
-static int
-is_same_street2(char *old_name, char *old_name_systematic, char *new_name, char *new_name_systematic)
-{
- if (old_name && new_name && !strcmp(old_name, new_name)) {
- dbg(lvl_debug,"is_same_street: '%s' '%s' vs '%s' '%s' yes (1.)\n", old_name_systematic, new_name_systematic, old_name, new_name);
- return 1;
- }
- if (old_name_systematic && new_name_systematic && !strcmp(old_name_systematic, new_name_systematic)) {
- dbg(lvl_debug,"is_same_street: '%s' '%s' vs '%s' '%s' yes (2.)\n", old_name_systematic, new_name_systematic, old_name, new_name);
- return 1;
- }
- dbg(lvl_debug,"is_same_street: '%s' '%s' vs '%s' '%s' no\n", old_name_systematic, new_name_systematic, old_name, new_name);
- return 0;
-}
-
-
-/**
- * @brief Checks if two ways are identical
- *
- * This function checks if two {@code navigation_way}s are likely to represent the same way on the ground.
- * It does this by comparing the {@code name}, {@code name_systematic}, {@code angle2} and {@code item.type}
- * members of both ways and returning {@code true} if all of them match.
- *
- * Names are compared by calling {@code is_same_street()}.
- *
- * ID attributes (such as OSM IDs) are not used for comparison, which allows the function to handle even
- * overlapping maps for the same area created from different versions of OSM data, in which IDs may have
- * changed as a result of ways being merged or split. As long as the above attributes match, the ways will
- * still be considered equal.
- *
- * Note that way geometry (other than {@code angle2}) is not compared. If necessary, the caller needs to
- * make geometry-related comparisons separately.
- */
-static int
-is_same_way(struct navigation_way * w1, struct navigation_way * w2) {
- if (!is_same_street2(w1->name, w1->name_systematic, w2->name, w2->name_systematic))
- return 0;
- if ((w1->angle2 == w2->angle2) && (w1->item.type == w2->item.type))
- return 1;
- else
- return 0;
-}
-
-
-/**
- * @brief Frees a list as constructed with split_string_to_list()
- *
- * @param list the list to be freed
- */
-static void
-free_list(struct street_destination *list) {
-
- if (list){
- struct street_destination *clist;
- while (list){
- clist = list->next;
- g_free(list->destination);
- g_free(list);
- list = clist;
- }
- list = NULL;
- }
-}
-
-/**
- * @brief Splits a string into a list, and sets their initial rank to 0
- *
- * The separator to split on can be any character. Preceding whitespace
- * characters will be removed.
- *
- * @param way a navigation_way holding the list to be filled up
- * @param raw_string a string to split
- * @param sep a char to be used as separator to split the raw_string
- * @return the number of entries in the list
- */
-static int
-split_string_to_list(struct navigation_way *way, char* raw_string, char sep)
-{
-
- struct street_destination *new_street_destination = NULL;
- struct street_destination *next_street_destination_remember = NULL;
- char *pos1 = raw_string;
- char *pos2;
- int count = 0;
-
- free_list(way->destination); /*in case this is a retry with a different separator.*/
- dbg(lvl_debug,"raw_string=%s split with %c\n",raw_string, sep);
- if (strlen(raw_string)>0)
- {
- count = 1;
- while (pos1)
- {
- new_street_destination = g_new(struct street_destination, 1);
- new_street_destination->next = next_street_destination_remember;
- next_street_destination_remember = new_street_destination ;
- if ((pos2 = strrchr(pos1, sep)) != NULL)
- {
- *pos2 = '\0' ;
- while (isspace(pos2[1]))
- pos2++;
- new_street_destination->destination = g_strdup(pos2+1);
- new_street_destination->rank=0;
- dbg(lvl_debug,"splitted_off_string=%s\n",new_street_destination->destination);
- count++;
- }
- else
- {
- while (isspace(pos1[0]))
- pos1++;
- new_street_destination->destination = g_strdup(pos1);
- new_street_destination->rank=0;
- pos1 = NULL;
- dbg(lvl_debug,"head_of_string=%s\n",new_street_destination->destination);
- }
- way->destination = next_street_destination_remember;
- }
- }
- return count;
-}
-
-
-
-/**
- * @brief Returns the first destination with a rank higher than zero.
- *
- * If all items in the list have a zero rank, the first one will be returned.
- */
-static struct street_destination *
-get_bestranked(struct street_destination *street_destination)
-{
- struct street_destination *selected_street_destination;
-
- selected_street_destination = street_destination;
- while (selected_street_destination)
- {
- if (selected_street_destination->rank > 0)
- return selected_street_destination;
- selected_street_destination = selected_street_destination->next;
- }
- return street_destination;
-}
-
-/**
- * @brief Assigns a high rank to a matching destination in the next
- * command having destination info, and reset existing ranks to zero
- *
- * @param street destination to be given a high rank
- * @param command
- * @return 1 if successful, zero otherwise
- */
-static int
-set_highrank(struct street_destination *street_destination, struct navigation_command *command)
-{
- struct street_destination *future_street_destination = NULL;
- struct navigation_command *next_command;
- char* destination_string;
- int success = 0;
- destination_string = street_destination->destination;
-
- if (command->next)
- {
- next_command=command->next;
- while (next_command)
- {
- if (next_command->itm->way.destination)
- break;
- if (!next_command->next)
- break;
- next_command=next_command->next;
- }
- if (next_command->itm->way.destination)
- future_street_destination = next_command->itm->way.destination;
- else future_street_destination = NULL;
- }
-
- while (future_street_destination)
- {
- if ((strcmp(destination_string,future_street_destination->destination)==0))
- {
- future_street_destination->rank=99;
- success =1;
- }
- else
- future_street_destination->rank=0;
- future_street_destination=future_street_destination->next;
- }
- return success;
-}
-
-
-/** @brief Selects the destination-names for the next announcement from the
- * destination-names that are registered in the following command items.
- *
- * The aim of this function is to find the destination-name entry that has the most hits in the following
- * command items so that the destination name has a relevance over several announcements. If there is no 'winner'
- * the entry is selected that is at top of the destination.
- */
-static char*
-select_announced_destinations(struct navigation_command *current_command)
-{
- struct street_destination *current_destination = NULL; /* the list pointer of the destination_names of the current command. */
- struct street_destination *search_destination = NULL; /* the list pointer of the destination_names of the respective search_command. */
-
- struct navigation_command *search_command = NULL;
-
- #define MAX_LOOPS 10 /* limits the number of next command items to investigate over */
- #define MAX_DESTINATIONS 10 /* limits the number of destination entries to investigate */
- int destination_count[MAX_DESTINATIONS]; /* contains the hits of identical destinations over all */
- /* investigated command items - a 'high score' of destination names */
- int destination_index = 0;
- int search_command_counter = 0;
- int i, max_hits=0, max_hit_index;
-
- /* search over every following command for seeking identical destination_names */
- if (current_command->itm->way.destination)
- { /* can we investigate over the following commands? */
- if (current_command->next)
- { /* loop over every destination of the current command, as far as there are not more than MAX_DESTINATIONS entries. */
- destination_index = 0; /* start with the first destination */
- current_destination = current_command->itm->way.destination;
- while (current_destination && (destination_index < MAX_DESTINATIONS))
- { /* initialize the search command */
- search_command = current_command->next;
- search_command_counter = 0;
- destination_count[destination_index]=0;
- while (search_command && (search_command_counter < MAX_LOOPS))
- {
- if (search_command->itm && search_command->itm->way.destination)
- { /* has the search command any destinations ? */
- search_destination = search_command->itm->way.destination;
- while (search_destination)
- { /* Search this name in the destination list of the current command. */
- if (0 == strcmp(current_destination->destination, search_destination->destination))
- { /* enter the destination_name in the investigation list*/
- destination_count[destination_index]++;
- search_destination = NULL; /* break condition */
- }
- else search_destination = search_destination->next;
- }
- }
- search_command_counter++;
- search_command = search_command->next;
- }
- destination_index++;
- current_destination = current_destination->next;
- }
-
- /* search for the best candidate */
- max_hits = 0;
- max_hit_index = 0;
- for (i = 0; i < destination_index; i++)
- {
- if (destination_count[i] > max_hits)
- {
- max_hits = destination_count[i];
- max_hit_index = i;
- }
- }
- /* jump to the corresponding destination_name */
- current_destination = current_command->itm->way.destination;
- for (i = 0; i < max_hit_index; i++)
- {
- current_destination = current_destination->next;
- }
-
- dbg(lvl_debug,"%s, max hits =%i\n",current_destination->destination,max_hits);
- set_highrank(current_destination,current_command);
- }
- }
-
- /* return the best candidate, if there is any.*/
- if (max_hits)
- return g_strdup(current_destination->destination);
- return g_strdup(current_destination ? get_bestranked(current_destination)->destination:NULL);
-}
-
-
-/**
- * @brief Converts navigation status to human-readable text.
- *
- * @param The status. This must be one of the values for {@code enum nav_status}.
- *
- * @return A string which corresponds to the constant value. The caller is responsible for calling
- * {@code g_free()} when the result is no longer needed.
- */
-char *nav_status_to_text(int status) {
- char *ret;
-
- switch (status) {
- case status_invalid:
- ret = g_strdup("status_invalid");
- break;
- case status_no_route:
- ret = g_strdup("status_no_route");
- break;
- case status_no_destination:
- ret = g_strdup("status_no_destination");
- break;
- case status_position_wait:
- ret = g_strdup("status_position_wait");
- break;
- case status_calculating:
- ret = g_strdup("status_calculating");
- break;
- case status_recalculating:
- ret = g_strdup("status_recalculating");
- break;
- case status_routing:
- ret = g_strdup("status_routing");
- break;
- default:
- ret = g_strdup_printf("status_unknown_%d", status);
- }
- return ret;
-}
-
-
-int
-navigation_get_attr(struct navigation *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- struct map_rect *mr;
- struct item *item;
- dbg(lvl_debug,"enter %s\n", attr_to_name(type));
- switch (type) {
- case attr_map:
- attr->u.map=this_->map;
- break;
- case attr_item_type:
- case attr_length:
- case attr_navigation_speech:
- case attr_street_name:
- case attr_street_name_systematic:
- case attr_street_destination:
-
- mr=map_rect_new(this_->map, NULL);
- while ((item=map_rect_get_item(mr))) {
- if (item->type != type_nav_none && item->type != type_nav_position) {
- if (type == attr_item_type)
- attr->u.item_type=item->type;
- else {
- if (!item_attr_get(item, type, attr))
- item=NULL;
- }
- break;
- }
- }
- map_rect_destroy(mr);
- if (!item)
- return 0;
- break;
- case attr_turn_around_count:
- attr->u.num=this_->turn_around_count;
- break;
- case attr_nav_status:
- attr->u.num=this_->nav_status;
- break;
- default:
- return navit_object_get_attr((struct navit_object *)this_, type, attr, iter);
- }
- attr->type=type;
- return 1;
-}
-
-static void
-navigation_set_turnaround(struct navigation *this_, int val)
-{
- if (this_->turn_around_count != val) {
- struct attr attr=ATTR_INT(turn_around_count, val);
- this_->turn_around_count=val;
- navit_object_callbacks((struct navit_object *)this_, &attr);
- }
-}
-
-int
-navigation_set_attr(struct navigation *this_, struct attr *attr)
-{
- switch (attr->type) {
- case attr_speech:
- this_->speech=attr->u.speech;
- break;
- case attr_nav_status:
- this_->nav_status = attr->u.num;
- break;
- default:
- break;
- }
- return navit_object_set_attr((struct navit_object *)this_, attr);
-}
-
-
-struct navigation *
-navigation_new(struct attr *parent, struct attr **attrs)
-{
- int i,j;
- struct attr * attr;
- struct navigation *ret=(struct navigation *)navit_object_new(attrs, &navigation_func, sizeof(struct navigation));
- ret->hash=item_hash_new();
- ret->callback=callback_list_new();
- ret->callback_speech=callback_list_new();
- ret->level_last=4;
- ret->distance_turn=50;
- ret->turn_around_limit=3;
- ret->navit=parent->u.navit;
- ret->tell_street_name=1;
- ret->route_mr = NULL;
-
- for (j = 0 ; j <= route_item_last-route_item_first ; j++) {
- for (i = 0 ; i < 3 ; i++) {
- ret->announce[j][i]=-1;
- }
- }
-
- if ((attr=attr_search(attrs, NULL, attr_tell_street_name))) {
- ret->tell_street_name = attr->u.num;
- }
- if ((attr=attr_search(attrs, NULL, attr_delay))) {
- ret->delay = attr->u.num;
- }
- if ((attr=attr_search(attrs, NULL, attr_flags))) {
- ret->flags = attr->u.num;
- }
- return ret;
-}
-
-int
-navigation_set_announce(struct navigation *this_, enum item_type type, int *level)
-{
- int i;
- if (type < route_item_first || type > route_item_last) {
- dbg(lvl_debug,"street type %d out of range [%d,%d]", type, route_item_first, route_item_last);
- return 0;
- }
- for (i = 0 ; i < 3 ; i++)
- this_->announce[type-route_item_first][i]=level[i];
- return 1;
-}
-
-static enum announcement_level
-navigation_get_announce_level(struct navigation *this_, enum item_type type, int dist)
-{
- enum announcement_level level;
-
- if (type < route_item_first || type > route_item_last)
- {
- dbg(lvl_error," item outside routable range\n");
- return level_error;
- }
- for (level = level_now ; level < level_follow ; level++) {
- if (dist <= this_->announce[type-route_item_first][level])
- return level;
- }
- return level;
-}
-
-static int is_way_allowed(struct navigation *nav, struct navigation_way *way, int mode);
-
-static enum announcement_level
-navigation_get_announce_level_cmd(struct navigation *this_, struct navigation_itm *itm, struct navigation_command *cmd, int distance)
-{
- enum announcement_level level2,level=navigation_get_announce_level(this_, itm->way.item.type, distance);
- if (this_->cmd_first->itm->prev) {
- level2=navigation_get_announce_level(this_, cmd->itm->prev->way.item.type, distance);
- if (level2 > level) {
- level = level2;
- }
- }
- return level;
-}
-
-/* 0=N,90=E */
-/**
- * @brief Gets the bearing from one point to another
- *
- * @param c1 The first coordinate
- * @param c2 The second coordinate
- * @param dir The direction: if it is -1, the bearing from c2 to c1 is returned, else the bearing from c1 to c2
- *
- * @return The bearing in degrees, {@code 0 <= result < 360}.
- */
-static int
-road_angle(struct coord *c1, struct coord *c2, int dir)
-{
- int ret=transform_get_angle_delta(c1, c2, dir);
- dbg(lvl_debug, "road_angle(0x%x,0x%x - 0x%x,0x%x)=%d\n", c1->x, c1->y, c2->x, c2->y, ret);
- return ret;
-}
-
-static const char
-*get_count_str(int n)
-{
- switch (n) {
- case 0:
- /* TRANSLATORS: the following counts refer to streets */
- return _("zeroth"); /* Not sure if this exists, neither if it will ever be needed */
- case 1:
- return _("first");
- case 2:
- return _("second");
- case 3:
- return _("third");
- case 4:
- return _("fourth");
- case 5:
- return _("fifth");
- case 6:
- return _("sixth");
- default:
- return NULL;
- }
-}
-
-static const char
-*get_exit_count_str(int n)
-{
- switch (n) {
- case 0:
- /* TRANSLATORS: the following counts refer to roundabout exits */
- return _("zeroth exit"); /* Not sure if this exists, neither if it will ever be needed */
- case 1:
- return _("first exit");
- case 2:
- return _("second exit");
- case 3:
- return _("third exit");
- case 4:
- return _("fourth exit");
- case 5:
- return _("fifth exit");
- case 6:
- return _("sixth exit");
- default:
- return NULL;
- }
-}
-
-static int
-round_distance(int dist)
-{
- if (dist < 100) {
- dist=(dist+5)/10;
- return dist*10;
- }
- if (dist < 250) {
- dist=(dist+13)/25;
- return dist*25;
- }
- if (dist < 500) {
- dist=(dist+25)/50;
- return dist*50;
- }
- if (dist < 1000) {
- dist=(dist+50)/100;
- return dist*100;
- }
- if (dist < 5000) {
- dist=(dist+50)/100;
- return dist*100;
- }
- if (dist < 100000) {
- dist=(dist+500)/1000;
- return dist*1000;
- }
- dist=(dist+5000)/10000;
- return dist*10000;
-}
-
-/** @brief Returns the last element of the simplified numbers containing a distance value.
-* @return value with the highest distance.
-*/
-static int
-distance_set_last(void)
-{
- static int i=0;
- if (i == 0) {
- while (distances[i] > 0)
- i++;
- }
- return distances[i-1];
-}
-
-/** @brief Restricts the distance value to a simple set of pronounceable numbers.
-* @param dist The distance to be processed
-* @return distance Simplified distance value
-*/
-static int
-round_distance_reduced( int dist )
-{
- int factor = 1;
- if (dist > distance_set_last())
- {
- dist=(dist+500)/1000;
- factor = 1000;
- }
-
- int i=0,d=0,m=0;
- while (distances[i] > 0) {
- if (!i || abs(distances[i]-dist) <= d) {
- d=abs(distances[i]-dist);
- m=i;
- }
- if (distances[i] > dist)
- break;
- i++;
- }
- dbg(lvl_debug,"converted %d to %d with factor %d\n",dist,distances[m],factor);
- return distances[m] * factor;
-
-}
-
-
-/** @brief Generates the distance string.
-* Considers the configuration of 'imperial' units and 'vocabulary_distances'.
-* 'imperial' if set distinguishes the distance statement between miles and feet. Maximum distance in feet is 500.
-* 'vocabulary_distances' if set constrains the distance values to a set of simple pronounceable numbers.
-*
-* @param nav The navigation object.
-* @param dist Distance in meters.
-* @param type The type of announcement precision.
-* @param is_length 1 for length statement, 0 for distance statement.
-* @return String with length/distance statement.
-*/
-static char *
-get_distance_str(struct navigation *nav, int dist_meters, enum attr_type type, int is_length)
-{
- int imperial=0,vocabulary=1; /* default configuration */
-
- /* Get configuration */
- struct attr attr;
- if (navit_get_attr(nav->navit, attr_imperial, &attr, NULL))
- imperial=attr.u.num;
- if (nav->speech && speech_get_attr(nav->speech, attr_vocabulary_distances, &attr, NULL))
- vocabulary=attr.u.num;
- /****************************/
-
- if (imperial) {
-
- int dist_feet = dist_meters * FEET_PER_METER;
-
- if (vocabulary > 0)
- {
- /* normal statement */
- if (type != attr_navigation_long_exact)
- dist_feet = round_distance(dist_feet);
- }
- else
- {
- /* statement with reduced vocabularies */
- dist_feet = round_distance_reduced(dist_feet);
- }
-
- /* check for statement in feet */
- if (dist_feet <= 500)
- {
- if (is_length)
- return g_strdup_printf(_("%d feet"), dist_feet);
- else
- return g_strdup_printf(_("in %d feet"), dist_feet);
- }
-
- int dist_miles = (double) dist_meters / (double)METERS_PER_MILE + 0.5;
-
- if (vocabulary == 0)
- {
- /* statement with reduced vocabularies */
- dist_miles = round_distance_reduced(dist_miles);
- }
-
- if ((dist_meters < METERS_PER_MILE) && (vocabulary > 0))
- {
- /* values smaller than one need extra treatment for one decimal place. For reduced vocabulary it shall remain 'one'. */
- int rem = (((double)dist_meters / (double)METERS_PER_MILE) + 0.05) * 10.0;
- dist_miles= 0;
- if (is_length)
- return g_strdup_printf(_("%d.%d miles"), dist_miles, rem);
- else
- return g_strdup_printf(_("in %d.%d miles"), dist_miles, rem);
- }
-
- if (is_length)
- return g_strdup_printf(navit_nls_ngettext("one mile","%d miles", dist_miles), dist_miles);
- else
- return g_strdup_printf(navit_nls_ngettext("in one mile","in %d miles", dist_miles), dist_miles);
-
- } else {
-
- if (vocabulary > 0)
- {
- /* normal statement */
- if (type != attr_navigation_long_exact)
- dist_meters = round_distance(dist_meters);
- }
- else
- {
- /* statement with reduced vocabularies */
- dist_meters = round_distance_reduced(dist_meters);
- }
-
- if (dist_meters < 1000)
- {
- if (is_length)
- return g_strdup_printf(_("%d meters"), dist_meters);
- else
- return g_strdup_printf(_("in %d meters"), dist_meters);
- }
- if (dist_meters < 5000) {
- /* Distances below 5 km shall be announced with one decimal place. */
- int rem=(dist_meters/100)%10;
- if (rem) {
- if (is_length)
- return g_strdup_printf(_("%d.%d kilometers"), dist_meters/1000, rem);
- else
- return g_strdup_printf(_("in %d.%d kilometers"), dist_meters/1000, rem);
- }
- }
- if (is_length)
- return g_strdup_printf(navit_nls_ngettext("one kilometer","%d kilometers", dist_meters/1000), dist_meters/1000);
- else
- return g_strdup_printf(navit_nls_ngettext("in one kilometer","in %d kilometers", dist_meters/1000), dist_meters/1000);
- }
-}
-
-/**
- * @brief Initializes a navigation_way
- *
- * This function analyzes the underlying map item and sets the entry bearing, names and flags for the way.
- *
- * Note that entry bearing is expressed as bearing towards the opposite end of the item.
- *
- * Note that this function is not suitable for ways on the route (created in {@code navigation_itm_new})
- * as it may return incorrect coordinates for these ways.
- *
- * @param w The way to initialize. The {@code item}, {@code id_hi}, {@code id_lo} and {@code dir}
- * members of this struct must be set prior to calling this function.
- */
-static void
-navigation_way_init(struct navigation_way *w)
-{
- struct coord cbuf[2];
- struct item *realitem;
- struct coord c;
- struct map_rect *mr;
- struct attr attr;
-
- w->angle2 = invalid_angle;
- mr = map_rect_new(w->item.map, NULL);
- if (!mr)
- return;
-
- realitem = map_rect_get_item_byid(mr, w->item.id_hi, w->item.id_lo);
- if (!realitem) {
- dbg(lvl_warning,"Item from segment not found on map!\n");
- map_rect_destroy(mr);
- return;
- }
-
- if (realitem->type < type_line || realitem->type >= type_area) {
- map_rect_destroy(mr);
- return;
- }
- if (item_attr_get(realitem, attr_flags, &attr))
- w->flags=attr.u.num;
- else
- w->flags=0;
- if (item_attr_get(realitem, attr_street_name, &attr))
- w->name=map_convert_string(realitem->map,attr.u.str);
- else
- w->name=NULL;
- if (item_attr_get(realitem, attr_street_name_systematic, &attr))
- w->name_systematic=map_convert_string(realitem->map,attr.u.str);
- else
- w->name_systematic=NULL;
-
- if (w->dir < 0) {
- if (item_coord_get(realitem, cbuf, 2) != 2) {
- dbg(lvl_warning,"Using calculate_angle() with a less-than-two-coords-item?\n");
- map_rect_destroy(mr);
- return;
- }
-
- while (item_coord_get(realitem, &c, 1)) {
- cbuf[0] = cbuf[1];
- cbuf[1] = c;
- }
-
- } else {
- if (item_coord_get(realitem, cbuf, 2) != 2) {
- dbg(lvl_warning,"Using calculate_angle() with a less-than-two-coords-item?\n");
- map_rect_destroy(mr);
- return;
- }
- c = cbuf[0];
- cbuf[0] = cbuf[1];
- cbuf[1] = c;
- }
-
- map_rect_destroy(mr);
-
- w->angle2=road_angle(&cbuf[1],&cbuf[0],0);
-}
-
-
-/**
- * @brief Returns the maximum delta between a reference bearing and any segment of a given way, up to a given distance from its start
- *
- * The return value is the maximum delta (in terms of absolute value), but the sign is preserved. If the maximum delta is encountered
- * more than once but with different signs, {@code dir} controls which of the two values is returned:
- * <ul>
- * <li>+1: Return the first maximum encountered when following the direction of the route</li>
- * <li>-1: Return the first maximum encountered when going against the direction of the route</li>
- * </ul>
- *
- * {@code invalid_angle} will be returned if one of the following errors occurs:
- * <ul>
- * <li>The item is not found on the map</li>
- * <li>The item is not of the correct type</li>
- * <li>The item has fewer than 2 points</li>
- * <li>{@code dist} is zero</li>
- * </ul>
- *
- * If {@code dist} exceeds the length of the way, the entire way is examined.
- *
- * @param pro The projection used by the map
- * @param w The way to examine
- * @param angle The reference bearing
- * @param dist The distance from the start of the way at which to determine bearing
- * @param dir Controls how to handle when the same delta is encountered multiple times but with different signs,
- * permissible values are either -1 or +1
- *
- * @return The delta, {@code -180 < delta <= 180}, or {@code invalid_angle} if an error occurred.
- */
-static int
-navigation_way_get_max_delta(struct navigation_way *w, enum projection pro, int angle, double dist, int dir) {
- double dist_left = dist; /* distance from last examined point */
- int ret = invalid_angle;
- int tmp_delta;
- int eff_dir = dir * w->dir; /* effective direction: +1 to examine section from start of way, -1 from end of way */
- struct coord cbuf[2];
- struct item *realitem;
- struct coord c;
- struct map_rect *mr;
-
- mr = map_rect_new(w->item.map, NULL);
- if (!mr)
- return ret;
-
- realitem = map_rect_get_item_byid(mr, w->item.id_hi, w->item.id_lo);
- if (!realitem) {
- dbg(lvl_warning,"Item from segment not found on map!\n");
- map_rect_destroy(mr);
- return ret;
- }
-
- if (realitem->type < type_line || realitem->type >= type_area) {
- map_rect_destroy(mr);
- return ret;
- }
-
- if (item_coord_get(realitem, &cbuf[1], 1) != 1) {
- dbg(lvl_warning,"item has no coords\n");
- map_rect_destroy(mr);
- return ret;
- }
-
- if (eff_dir < 0) {
- /* we're going against the direction of the item:
- * measure its total length and set dist_left to difference of total length and distance */
- dist_left = 0;
- while (item_coord_get(realitem, &c, 1)) {
- cbuf[0] = cbuf[1];
- cbuf[1] = c;
- dist_left += transform_distance(pro, &cbuf[0], &cbuf[1]);
- }
-
- /* if dist is less that the distance of the way, make dist_left the distance from the other end
- * else set it to zero (so we'll examine the whole way) */
- if (dist_left > dist)
- dist_left -= dist;
- else
- dist_left = 0;
-
- item_coord_rewind(realitem);
-
- if (item_coord_get(realitem, &cbuf[1], 1) != 1) {
- dbg(lvl_warning,"item has no more coords after rewind\n");
- map_rect_destroy(mr);
- return ret;
- }
- }
-
- while (item_coord_get(realitem, &c, 1)) {
- if ((eff_dir > 0) && (dist_left <= 0))
- break;
- cbuf[0] = cbuf[1];
- cbuf[1] = c;
- dist_left -= transform_distance(pro, &cbuf[0], &cbuf[1]);
- if ((eff_dir < 0) && (dist_left > 0))
- continue;
- tmp_delta = angle_delta(angle, road_angle(&cbuf[0], &cbuf[1], w->dir));
- if ((ret == invalid_angle) || (abs(ret) < abs(tmp_delta)) || ((abs(ret) == abs(tmp_delta)) && (eff_dir < 0)))
- ret = tmp_delta;
- }
-
- map_rect_destroy(mr);
- return ret;
-}
-
-/**
- * @brief Clears the ways one can drive from itm
- *
- * @param itm The item that should have its ways cleared
- */
-static void
-navigation_itm_ways_clear(struct navigation_itm *itm)
-{
- struct navigation_way *c,*n;
-
- c = itm->way.next;
- while (c) {
- n = c->next;
- map_convert_free(c->name);
- map_convert_free(c->name_systematic);
- g_free(c);
- c = n;
- }
-
- itm->way.next = NULL;
-}
-
-/**
- * @brief Updates the ways one can drive from itm
- *
- * This updates the list of possible ways to drive to from itm. The item "itm" is on
- * and the next navigation item are excluded.
- *
- * @param itm The item that should be updated
- * @param graph_map The route graph's map that these items are on
- */
-static void
-navigation_itm_ways_update(struct navigation_itm *itm, struct map *graph_map)
-{
- struct map_selection coord_sel;
- struct map_rect *g_rect; /* Contains a map rectangle from the route graph's map */
- struct item *i,*sitem;
- struct attr sitem_attr,direction_attr;
- struct navigation_way *w, *l, *h;
-
- dbg(lvl_debug, "entering for item: %s %s %s\n", item_to_name(itm->way.item.type), itm->way.name_systematic, itm->way.name);
-
- navigation_itm_ways_clear(itm);
-
- /* These values cause the code in route.c to get us only the route graph point and connected segments */
- coord_sel.next = NULL;
- coord_sel.u.c_rect.lu = itm->start;
- coord_sel.u.c_rect.rl = itm->start;
- /* the selection's order is ignored */
-
- g_rect = map_rect_new(graph_map, &coord_sel);
-
- i = map_rect_get_item(g_rect);
- if (!i || i->type != type_rg_point) { /* probably offroad? */
- map_rect_destroy(g_rect);
- return ;
- }
-
- w = NULL;
-
- while (1) {
- i = map_rect_get_item(g_rect);
-
- if (!i) {
- break;
- }
-
- if (i->type != type_rg_segment) {
- continue;
- }
-
- if (!item_attr_get(i,attr_street_item,&sitem_attr)) {
- dbg(lvl_warning, "Got no street item for route graph item in entering_straight()\n");
- continue;
- }
-
- if (!item_attr_get(i,attr_direction,&direction_attr)) {
- continue;
- }
-
- sitem = sitem_attr.u.item;
- if (sitem->type == type_street_turn_restriction_no || sitem->type == type_street_turn_restriction_only)
- continue;
-
- if (item_is_equal(itm->way.item,*sitem) || ((itm->prev) && item_is_equal(itm->prev->way.item,*sitem))) {
- continue;
- }
-
- l = w;
- w = g_new0(struct navigation_way, 1);
- w->dir = direction_attr.u.num;
- w->item = *sitem;
- w->next = l;
- navigation_way_init(w); /* calculate and set w->angle2 */
-
- dbg(lvl_debug, "- retrieved way: %s %s %s\n", item_to_name(w->item.type), w->name_systematic, w->name);
-
- /* check if w is already in the list */
- h = l;
- while (h) {
- if (is_same_way(w, h)) {
- g_free(w);
- w = l;
- dbg(lvl_debug, " - way is already in list, discarding\n");
- }
- h = h->next;
- }
- }
-
- map_rect_destroy(g_rect);
-
- itm->way.next = w;
-}
-
-/**
- * @brief Destroys navigation items associated with a navigation object.
- *
- * This function destroys all or some of the {@code navigation_itm} instances associated with
- * {@code this_}, starting with the first one. Data structures associated with the items will
- * also be freed.
- *
- * @param this_ The navigation object whose command instances are to be destroyed
- * @param end The first navigation item to keep. If it is NULL or not found in the list, all items
- * will be destroyed.
- */
-static void
-navigation_destroy_itms_cmds(struct navigation *this_, struct navigation_itm *end)
-{
- struct navigation_itm *itm;
- struct navigation_command *cmd;
- dbg(lvl_info,"enter this_=%p this_->first=%p this_->cmd_first=%p end=%p\n", this_, this_->first, this_->cmd_first, end);
- if (this_->cmd_first)
- dbg(lvl_info,"this_->cmd_first->itm=%p\n", this_->cmd_first->itm);
- while (this_->first && this_->first != end) {
- itm=this_->first;
- dbg(lvl_debug,"destroying %p\n", itm);
- item_hash_remove(this_->hash, &itm->way.item);
- this_->first=itm->next;
- if (this_->first)
- this_->first->prev=NULL;
- if (this_->cmd_first && this_->cmd_first->itm == itm->next) {
- cmd=this_->cmd_first;
- this_->cmd_first=cmd->next;
- if (cmd->next) {
- cmd->next->prev = NULL;
- }
- if (cmd->maneuver)
- g_free(cmd->maneuver);
- g_free(cmd);
- }
-
- map_convert_free(itm->way.name);
- map_convert_free(itm->way.name_systematic);
- map_convert_free(itm->way.exit_ref);
- map_convert_free(itm->way.exit_label);
- free_list(itm->way.destination);
- navigation_itm_ways_clear(itm);
- g_free(itm);
- }
- if (! this_->first)
- this_->last=NULL;
- if (! this_->first && end)
- dbg(lvl_error,"end wrong\n");
- dbg(lvl_info,"ret this_->first=%p this_->cmd_first=%p\n",this_->first, this_->cmd_first);
-}
-
-static void
-navigation_itm_update(struct navigation_itm *itm, struct item *ritem)
-{
- struct attr length, time, speed;
-
- if (! item_attr_get(ritem, attr_length, &length)) {
- dbg(lvl_error,"no length\n");
- return;
- }
- if (! item_attr_get(ritem, attr_time, &time)) {
- dbg(lvl_error,"no time\n");
- return;
- }
- if (! item_attr_get(ritem, attr_speed, &speed)) {
- dbg(lvl_error,"no speed\n");
- return;
- }
-
- dbg(lvl_debug,"length=%ld time=%ld speed=%ld\n", length.u.num, time.u.num, speed.u.num);
- itm->length=length.u.num;
- itm->time=time.u.num;
- itm->speed=speed.u.num;
-}
-
-/**
- * @brief Creates and adds a new navigation_itm to a linked list of such
- *
- * routeitem has an attr. streetitem, but that is only and id and a map,
- * allowing to fetch the actual streetitem, that will live under the same name.
- *
- * Known issue:
- * If a way splits in 2, exit_to info ends up on both continuations of the ramp, sometimes
- * leading to wrong guidance.
- * The case where a ramp itself splits in 2 is already covered by ignoring exit_to info
- * in such cases.
- *
- * @param this_ the navigation object
- * @param routeitem the routeitem from which to create a navigation item
- * @return the new navigation_itm (used nowhere)
- */
-static struct navigation_itm *
-navigation_itm_new(struct navigation *this_, struct item *routeitem)
-{
- struct navigation_itm *ret=g_new0(struct navigation_itm, 1);
- int i=0;
- struct item *streetitem;
- struct map *graph_map = NULL;
- struct attr street_item,direction,route_attr;
- struct map_rect *mr;
- struct attr attr;
- struct coord c[5];
- struct coord exitcoord;
-
- if (routeitem) {
- ret->streetname_told=0;
- if (! item_attr_get(routeitem, attr_street_item, &street_item)) {
- dbg(lvl_warning, "no street item\n");
- g_free(ret);
- ret = NULL;
- return ret;
- }
-
- if (item_attr_get(routeitem, attr_direction, &direction))
- ret->way.dir=direction.u.num;
- else
- ret->way.dir=0;
-
- streetitem=street_item.u.item;
- ret->way.item=*streetitem;
- item_hash_insert(this_->hash, streetitem, ret);
-
- mr=map_rect_new(streetitem->map, NULL);
- struct map *tmap = streetitem->map;
-
- if (! (streetitem=map_rect_get_item_byid(mr, streetitem->id_hi, streetitem->id_lo))) {
- g_free(ret);
- map_rect_destroy(mr);
- return NULL;
- }
-
- if (item_attr_get(streetitem, attr_flags, &attr))
- ret->way.flags=attr.u.num;
-
- if (item_attr_get(streetitem, attr_street_name, &attr))
- ret->way.name=map_convert_string(streetitem->map,attr.u.str);
-
- if (item_attr_get(streetitem, attr_street_name_systematic, &attr))
- ret->way.name_systematic=map_convert_string(streetitem->map,attr.u.str);
-
- if (ret->way.flags && (ret->way.flags & AF_ONEWAY))
- {
- if (item_attr_get(streetitem, attr_street_destination, &attr))
- {
- char *destination_raw;
- destination_raw=map_convert_string(streetitem->map,attr.u.str);
- dbg(lvl_debug,"destination_raw =%s\n",destination_raw);
- split_string_to_list(&(ret->way),destination_raw, ';');
- g_free(destination_raw);
- }
- }
- else
- {
- if (ret->way.dir == 1)
- {
- if (item_attr_get(streetitem, attr_street_destination_forward, &attr))
- {
- char *destination_raw;
- destination_raw=map_convert_string(streetitem->map,attr.u.str);
- dbg(lvl_debug,"destination_raw forward =%s\n",destination_raw);
- split_string_to_list(&(ret->way),destination_raw, ';');
- g_free(destination_raw);
- }
-
- }
- if (ret->way.dir == -1)
- {
- if (item_attr_get(streetitem, attr_street_destination_backward, &attr))
- {
- char *destination_raw;
- destination_raw=map_convert_string(streetitem->map,attr.u.str);
- dbg(lvl_debug,"destination_raw backward =%s\n",destination_raw);
- split_string_to_list(&(ret->way),destination_raw, ';');
- g_free(destination_raw);
- }
- }
- }
- navigation_itm_update(ret, routeitem);
-
- while (item_coord_get(routeitem, &c[i], 1))
- {
- dbg(lvl_debug, "coord %d 0x%x 0x%x\n", i, c[i].x ,c[i].y);
- if (i < 4)
- i++;
- else
- {
- c[2]=c[3];
- c[3]=c[4];
- }
- }
-
- i--;
- if (i>=1)
- {
- ret->way.angle2=road_angle(&c[0], &c[1], 0);
- ret->angle_end=road_angle(&c[i-1], &c[i], 0);
- }
- ret->start=c[0];
- ret->end=c[i];
-
- if(item_attr_get(routeitem, attr_route, &route_attr))
- graph_map = route_get_graph_map(route_attr.u.route);
- if (graph_map )
- {
- if (this_->last)
- ret->prev=this_->last;
- navigation_itm_ways_update(ret,graph_map);
- }
-
- /* If we have a ramp, check the map for higway_exit info,
- * but only on the first node of the ramp.
- * We are doing the same for motorway-like roads because some
- * interchanges use motorway types for the links between two
- * motorways.
- * Ramps with nodes in reverse order and oneway=-1 are not
- * specifically handled, but no occurence known so far either.
- * If present, obtain exit_ref, exit_label and exit_to
- * from the map.
- */
- if (ret->way.next && ((streetitem->type == type_ramp) || (streetitem->type == type_highway_land)
- || (streetitem->type == type_highway_city) || (streetitem->type == type_street_n_lanes)))
- {
- struct map_selection mselexit;
- struct item *rampitem;
- dbg(lvl_debug,"test ramp\n");
- mselexit.next = NULL;
- mselexit.u.c_rect.lu = c[0] ;
- mselexit.u.c_rect.rl = c[0] ;
- mselexit.range = item_range_all;
- mselexit.order =18;
-
- map_rect_destroy(mr);
- mr = map_rect_new(tmap, &mselexit);
-
- while ((rampitem=map_rect_get_item(mr)))
- {
- if (rampitem->type == type_highway_exit && item_coord_get(rampitem, &exitcoord, 1)
- && exitcoord.x == c[0].x && exitcoord.y == c[0].y)
- {
- while (item_attr_get(rampitem, attr_any, &attr))
- {
- if (attr.type && attr.type == attr_label)
- {
- dbg(lvl_debug,"exit_label=%s\n",attr.u.str);
- ret->way.exit_label= map_convert_string(tmap,attr.u.str);
- }
- if (attr.type == attr_ref)
- {
- dbg(lvl_debug,"exit_ref=%s\n",attr.u.str);
- ret->way.exit_ref= map_convert_string(tmap,attr.u.str);
- }
- if (attr.type == attr_exit_to)
- {
- /* use exit_to as a fall back in case :
- * - there is no regular destination info
- * - we are not coming from a ramp already
- */
- if (attr.u.str
- && !ret->way.destination
- && (ret->way.item.type == type_ramp)
- && (this_->last)
- && (!(this_->last->way.item.type == type_ramp))) {
- char *destination_raw;
- destination_raw=map_convert_string(tmap,attr.u.str);
- dbg(lvl_debug,"destination_raw from exit_to =%s\n",destination_raw);
- if ((split_string_to_list(&(ret->way),destination_raw, ';')) < 2)
- /*
- * if a first try did not result in an actual splitting
- * retry with ',' as a separator because in France a bad
- * mapping practice exists to separate exit_to with ','
- * instead of ';'
- */
- (split_string_to_list(&(ret->way),destination_raw, ','));
- g_free(destination_raw);
- }
- }
- }
- }
- }
- }
- dbg(lvl_debug,"i=%d start %d end %d '%s' \n", i, ret->way.angle2, ret->angle_end, ret->way.name_systematic);
- map_rect_destroy(mr);
- } else {
- if (this_->last)
- ret->start=ret->end=this_->last->end;
- }
- if (! this_->first)
- this_->first=ret;
- if (this_->last) {
- this_->last->next=ret;
- ret->prev=this_->last;
- }
- dbg(lvl_debug,"ret=%p\n", ret);
- this_->last=ret;
- return ret;
-}
-
-/**
- * @brief Counts how many times a driver could turn right/left
- *
- * This function counts how many times the driver theoretically could
- * turn right/left between two navigation items, not counting the final
- * turn itself.
- *
- * @param from The navigation item which should form the start
- * @param to The navigation item which should form the end
- * @param direction Set to < 0 to count turns to the left >= 0 for turns to the right
- * @return The number of possibilities to turn or -1 on error
- */
-static int
-count_possible_turns(struct navigation *nav, struct navigation_itm *from, struct navigation_itm *to, int direction)
-{
- int count;
- struct navigation_itm *curr;
- struct navigation_way *w;
-
- count = 0;
- curr = from->next;
- while (curr && (curr != to)) {
- w = curr->way.next;
-
- while (w) {
- if (is_way_allowed(nav, w, 4)) {
- if (direction < 0) {
- if (angle_delta(curr->prev->angle_end, w->angle2) < 0) {
- count++;
- break;
- }
- } else {
- if (angle_delta(curr->prev->angle_end, w->angle2) > 0) {
- count++;
- break;
- }
- }
- }
- w = w->next;
- }
- curr = curr->next;
- }
-
- if (!curr) { /* from does not lead to to? */
- return -1;
- }
-
- return count;
-}
-
-/**
- * @brief Calculates distance and time to the destination
- *
- * This function calculates the distance and the time to the destination of a
- * navigation. If incr is set, this is only calculated for the first navigation
- * item, which is a lot faster than re-calculation the whole destination, but works
- * only if the rest of the navigation already has been calculated.
- *
- * @param this_ The navigation whose destination / time should be calculated
- * @param incr Set this to true to only calculate the first item. See description.
- */
-static void
-calculate_dest_distance(struct navigation *this_, int incr)
-{
- int len=0, time=0, count=0;
- struct navigation_itm *next,*itm=this_->last;
- dbg(lvl_debug, "enter this_=%p, incr=%d\n", this_, incr);
- if (incr) {
- if (itm) {
- dbg(lvl_info, "old values: (%p) time=%d lenght=%d\n", itm, itm->dest_length, itm->dest_time);
- } else {
- dbg(lvl_info, "old values: itm is null\n");
- }
- itm=this_->first;
- next=itm->next;
- dbg(lvl_info, "itm values: time=%d lenght=%d\n", itm->length, itm->time);
- dbg(lvl_info, "next values: (%p) time=%d lenght=%d\n", next, next->dest_length, next->dest_time);
- itm->dest_length=next->dest_length+itm->length;
- itm->dest_count=next->dest_count+1;
- itm->dest_time=next->dest_time+itm->time;
- dbg(lvl_info, "new values: time=%d lenght=%d\n", itm->dest_length, itm->dest_time);
- return;
- }
- while (itm) {
- len+=itm->length;
- time+=itm->time;
- itm->dest_length=len;
- itm->dest_time=time;
- itm->dest_count=count++;
- itm=itm->prev;
- }
- dbg(lvl_debug,"len %d time %d\n", len, time);
-}
-
-
-static int maneuver_category(enum item_type type)
-{
- switch (type) {
- case type_street_0:
- return 1;
- case type_street_1_city:
- return 2;
- case type_street_2_city:
- return 3;
- case type_street_3_city:
- return 4;
- case type_street_4_city:
- return 5;
- case type_highway_city:
- return 7;
- case type_street_1_land:
- return 2;
- case type_street_2_land:
- return 3;
- case type_street_3_land:
- return 4;
- case type_street_4_land:
- return 5;
- case type_street_n_lanes:
- return 6;
- case type_highway_land:
- return 7;
- case type_ramp:
- return 0;
- case type_roundabout:
- return 0;
- case type_ferry:
- return 0;
- default:
- return 0;
- }
-
-
-}
-
-/**
- * @brief Checks whether a way is allowed
- *
- * This function checks whether a given vehicle is permitted to enter a given way by comparing the
- * access and one-way restrictions of the way against the settings in {@code nav->vehicleprofile}.
- * Turn restrictions are not taken into account.
- *
- * @param nav The navigation object
- * @param way The way to examine
- * @param mode If nonzero, oneway restrictions will be taken into account. If zero, only the vehicle type
- * will be taken into account.
- *
- * @return True if entry is permitted, false otherwise. If {@code nav->vehicleprofile} is null, true is returned.
- */
-
- /* (jandegr) this gets called from within show_maneuver with mode=3 for roundabouts
- * and with mode=4 from within count_possible_turns() for the use with
- * 'take the manieth road to the left/right'
- * However over here mode is ignored, so the 'manieth' road excludes unallowed oneway's,
- * but IMHO it should count all drivable roads. For roundabouts it seems to be ok.
- *
- */
-
-static int
-is_way_allowed(struct navigation *nav, struct navigation_way *way, int mode)
-{
- if (!nav->vehicleprofile || !way->flags)
- return 1;
- if (mode)
- return ((way->flags & (way->dir >= 0 ? nav->vehicleprofile->flags_forward_mask : nav->vehicleprofile->flags_reverse_mask)) == nav->vehicleprofile->flags);
- else
- return ((way->flags & nav->vehicleprofile->flags) == nav->vehicleprofile->flags);
-}
-
-/**
- * @brief Checks whether a way has motorway-like characteristics
- *
- * Motorway-like means one of the following:
- *
- * item type is highway_land or highway_city (OSM: highway=motorway)
- * item type is street_n_lanes (OSM: highway=trunk) and way is one-way
- * {@code extended} is true and item type is either ramp or street_service
- *
- * @param way The way to examine
- * @param extended Whether to consider ramps and service roads to be motorway-like
- * @return True for motorway-like, false otherwise
- */
-static int
-is_motorway_like(struct navigation_way *way, int extended)
-{
- if ((way->item.type == type_highway_land) || (way->item.type == type_highway_city) || ((way->item.type == type_street_n_lanes) && (way->flags & AF_ONEWAYMASK)))
- return 1;
- if ((extended) && ((way->item.type == type_ramp) || (way->item.type == type_street_service)))
- return 1;
- return 0;
-}
-
-/**
- * @brief Checks whether a way is a ramp
- *
- * @param way The way to be examined
- * @return True for ramp, false otherwise
- */
-static int
-is_ramp(struct navigation_way *way) {
- if (way->item.type == type_ramp)
- return 1;
- return 0;
-}
-
-/**
- * @brief Checks if navit has to create a maneuver to drive from old to new
- *
- * This function checks if it has to create a "maneuver" - i.e. guide the user - to drive
- * from "old" to "new".
- *
- * @param old The old navigation item, where we're coming from
- * @param new The new navigation item, where we're going to
- * @param maneuver Pointer to a buffer that will receive a pointer to a {@code struct navigation_maneuver}
- * in which detailed information on the maneuver will be stored. The buffer may receive a null pointer
- * for some cases that do not require a maneuver. If a non-null pointer is returned, the caller is responsible
- * for freeing up the buffer once it is no longer needed.
- * @return True if navit should guide the user, false otherwise
- */
-static int
-maneuver_required2 (struct navigation *nav, struct navigation_itm *old, struct navigation_itm *new, struct navigation_maneuver **maneuver)
-{
- struct navigation_maneuver m; /* if the function returns true, this will be passed in the maneuver argument */
- struct navigation_itm *ni; /* temporary navigation item used for comparisons that examine previous or subsequent maneuvers */
- int ret=0;
- int dw; /* temporary bearing difference between old and w (way being examined) */
- int dlim; /* if no other ways are within +/- dlim, the maneuver is unambiguous */
- int dc; /* if new and another way are within +/-min_turn_limit and on the same side, bearing difference for the other way; else d */
- char *r=NULL; /* human-legible reason for announcing or not announcing the maneuver */
- struct navigation_way *w; /* temporary way to examine */
- struct navigation_way *through_segment2 = NULL; /* off-route segment of through road at complex T junction */
- int wcat;
- int junction_limit = 100; /* maximum distance between two carriageways at a junction */
- int motorways_left = 0, motorways_right = 0; /* number of motorway-like roads left or right of new->way */
- int coming_from_motorway = 0; /* when the maneuver changes from one ramp to another,
- * whether the last non-ramp road was motorway-like */
- int route_leaves_motorway = 0; /* when the maneuver changes from a motorway-like road to a ramp,
- * whether a subsequent maneuver leaves the motorway (changing direction
- * is considered leaving the motorway) */
-
- *maneuver = NULL;
-
- m.type = type_nav_none;
- m.delta = angle_delta(old->angle_end, new->way.angle2);
- m.merge_or_exit = mex_none;
- m.is_complex_t_junction = 0;
- m.num_options = 0;
- m.num_new_motorways = 0;
- m.num_other_ways = 0;
- m.num_similar_ways = 0;
- m.old_cat = maneuver_category(old->way.item.type);
- m.new_cat = maneuver_category(new->way.item.type);
- m.max_cat = -1;
- m.left = -180;
- m.right = 180;
- m.is_unambiguous = 1;
- /* Check whether the street keeps its name */
- m.is_same_street = is_same_street2(old->way.name, old->way.name_systematic, new->way.name, new->way.name_systematic);
-
- dc = m.delta;
-
- dbg(lvl_debug,"enter %p %p %p\n",old, new, maneuver);
-#if 0
- dbg(lvl_debug, "old=%s %s, new=%s %s, angle old=%d, angle new=%d, d=%i\n ", old->way.name, old->way.name_systematic, new->way.name, new->way.name_systematic, old->angle_end, new->way.angle2, d);
-#endif
- if (!new->way.next || (new->way.next && (new->way.next->angle2 == new->way.angle2) && !new->way.next->next)) {
- /* No announcement necessary (with extra magic to eliminate duplicate ways) */
- r="no: Only one possibility";
- } else if (!new->way.next->next && new->way.next->item.type == type_ramp && !is_way_allowed(nav,new->way.next,1)) {
- /* If the other way is only a ramp and it is one-way in the wrong direction, no announcement necessary */
- r="no: Only ramp and unallowed direction ";
- ret=0;
- }
- if (! r) {
- /* Announce exit from roundabout, but not entry or staying in it */
- if ((old->way.flags & AF_ROUNDABOUT) && ! (new->way.flags & AF_ROUNDABOUT)) {
- r="yes: leaving roundabout";
- ret=1;
- } else if (!new->way.next->next && !(old->way.flags & AF_ROUNDABOUT) && (new->way.flags & AF_ROUNDABOUT) && (new->way.next->flags & AF_ROUNDABOUT)) {
- /* this rather complicated construct makes sure we suppress announcements
- * only when we're entering a roundabout AND there are no other options */
- r="no: entering roundabout";
- } else if ((old->way.flags & AF_ROUNDABOUT) && (new->way.flags & AF_ROUNDABOUT)) {
- r="no: staying in roundabout";
- }
- }
- if (!r) {
- /* Analyze all options (including new->way).
- * Anything that iterates over the whole set of options should be done here. This avoids
- * looping over the entire set of ways multiple times, which aims to improve performance
- * and predictability (because the same filter is applied to the ways being analyzed).
- */
- w = &(new->way);
- int through_segments = 0;
- while (w) {
- /* in case of overlapping ways, avoid counting the way on the route twice */
- if ((w->angle2 != new->way.angle2) || (w == &(new->way))) {
- dw=angle_delta(old->angle_end, w->angle2);
- if (is_way_allowed(nav,w,1)) {
- dbg(lvl_debug, "- Examining allowed way: %s %s %s, delta=%i\n", item_to_name(w->item.type), w->name_systematic, w->name, dw);
- m.num_options++;
- /* ways of similar category */
- if (maneuver_category(w->item.type) == m.old_cat) {
- /* TODO: considering a maneuver_category difference of 1 to be similar, e.g.
- * if (abs(maneuver_category(w->item.type) - m.old_cat) <= 1)
- * will improve things in some cases but also introduce some junk maneuvers,
- * e.g. at complex junctions. If we relax the maneuver_category requirement,
- * we may need some extra requirements. */
- m.num_similar_ways++;
- }
- /* motorway-like ways */
- if ((m.num_new_motorways < 2) && is_motorway_like(w, 0)) {
- /* Count all motorway-like segments:
- * - always count new
- * - if new or w have an exit_ref or exit_label, count w
- * - if old, new and w have the same name_systematic, do not count w
- * - if one of old, new and w has no name_systematic, count w
- * This is for handling temporary splits (e.g. at toll booths), which should
- * be counted as one motorway for the purpose of navigation. On the other hand,
- * occasionally a motorway may split at an interchange with both segments
- * retaining the name, in which case we want to count both motorways. */
- if ((w == &(new->way))
- || new->way.exit_ref
- || new->way.exit_label
- || w->exit_ref
- || w->exit_label
- || !old->way.name_systematic
- || !new->way.name_systematic
- || !w->name_systematic
- || strcmp(old->way.name_systematic, new->way.name_systematic)
- || strcmp(old->way.name_systematic, w->name_systematic))
- m.num_new_motorways++;
- } else if (!is_motorway_like(w, 1)) {
- m.num_other_ways++;
- }
- if (w != &(new->way)) {
- /* if we're exiting from a motorway, check which side of the ramp the motorway is on */
- if (is_motorway_like(w, 0) && is_motorway_like(&(old->way), 0) && new->way.item.type == type_ramp) {
- if (dw < m.delta)
- motorways_left++;
- else
- motorways_right++;
- }
-
- if (dw < m.delta) {
- if (dw > m.left)
- m.left=dw;
- } else {
- if (dw < m.right)
- m.right=dw;
- }
-
- /* If almost-straight ways are present, the maneuver is ambiguous. We are counting only ways having
- * a nonzero maneuver category (street_0 or higher), excluding ramps, service roads and anything closed
- * to motorized traffic. Exceptions apply when the new way itself has a maneuver category of 0.
- * Note that this is in addition for the dlim calculations we do further below, as they fail to
- * catch some ambiguous cases for very low deltas. */
- if ((dw > -min_turn_limit) && (dw < min_turn_limit) && ((maneuver_category(w->item.type) != 0) || (maneuver_category(new->way.item.type) == 0)))
- m.is_unambiguous = 0;
-
- if (dw < 0) {
- if (dw > -min_turn_limit && m.delta < 0 && m.delta > -min_turn_limit)
- dc=dw;
- } else {
- if (dw < min_turn_limit && m.delta > 0 && m.delta < min_turn_limit)
- dc=dw;
- }
- wcat=maneuver_category(w->item.type);
- /* If any other street has the same name, we can't use the same name criterion.
- * Exceptions apply if we're coming from a motorway-like road and:
- * - the other road is motorway-like (a motorway might split up temporarily) or
- * - the other road is a ramp or service road (they are sometimes tagged with the name of the motorway)
- * The second one is really a workaround for bad tagging practice in OSM. Since entering
- * a ramp always creates a maneuver, we don't expect the workaround to have any unwanted
- * side effects.
- */
- if (m.is_same_street && is_same_street2(old->way.name, old->way.name_systematic, w->name, w->name_systematic) && (!is_motorway_like(&(old->way), 0) || (!is_motorway_like(w, 0) && w->item.type != type_ramp)) && is_way_allowed(nav,w,2))
- m.is_same_street=0;
- /* If the route category changes to a lower one but another road has the same route category as old,
- * it is not clear which of the two the driver would perceive as the "same street", hence reset is_same_street */
- /* Mark if the street has a higher or the same category */
- if (wcat > m.max_cat)
- m.max_cat=wcat;
- } /* if w != new->way */
- /* if is_way_allowed */
- } else {
- /* If we're merging onto a motorway, check which side of the ramp the motorway is on.
- * This requires examining the candidate ways which are NOT allowed. */
- if (is_motorway_like(w, 0) && is_motorway_like(&(new->way), 0) && old->way.item.type == type_ramp) {
- if (dw < 0)
- motorways_left++;
- else
- motorways_right++;
- }
- /* if !is_way_allowed */
- } /* if is_way_allowed || !is_way_allowed */
- if (w->flags & AF_ONEWAYMASK) {
- /* count through_segments (even if they are not allowed) to check if we are at a complex T junction */
- if (is_same_street2(new->way.name, new->way.name_systematic, w->name, w->name_systematic))
- /* count segments belonging to the same street */
- through_segments++;
- else if ((!through_segment2 && (abs(angle_delta(angle_opposite(w->angle2), new->way.angle2)) < min_turn_limit))
- || (through_segment2 && (abs(angle_delta(angle_opposite(w->angle2), new->way.angle2)) < abs(angle_delta(angle_opposite(through_segment2->angle2), new->way.angle2))))) {
- /* also count near-straight continuations of new (the through road may change names at the junction) */
- if (!through_segment2)
- through_segments++;
- through_segment2 = w;
- }
- }
- } /* if w is not a duplicate of way->next */
- w = w->next;
- } /* while w */
- if ((abs(m.delta) >= min_turn_limit) && (through_segments >= 2)) {
- /* If we have to make a considerable turn (min_turn_limit or more),
- * check whether we are approaching a complex T junction from the "stem"
- * (which would need an announcement).
- * Complex means that the through road is a dual-carriageway road.
- * This is the case only if at least 2 segments (including new) are one-way
- * (regardless of direction) and have the same name as new or through_segment2.
- * More than 2 such segments are possible e.g. where two physically separated
- * lanes join.
- * To find out if there is another carriageway, we need to analyze the previous
- * maneuvers.
- */
- int hist_through_segments = 0;
- int hist_dist = old->length; /* distance between previous and current maneuver */
- ni = old;
- while (ni && (hist_through_segments == 0) && (hist_dist <= junction_limit)) {
- /* TODO: shouldn't the condition be (hist_through_segments < 2) to catch through segments that are slightly offset?? */
- struct navigation_way *w = ni->way.next;
- while (w) {
- if (is_same_street2(new->way.name, new->way.name_systematic, w->name, w->name_systematic)
- || (through_segment2 && is_same_street2(through_segment2->name, through_segment2->name_systematic, w->name, w->name_systematic)))
- hist_through_segments++;
- w = w->next;
- }
- ni = ni->prev;
- if (ni)
- hist_dist += ni->length;
- }
- if (hist_through_segments >= 2) {
- /* Require at least 2 segments (there may be more than two in cases such as
- * local-express lane systems or separate cycleways) */
- ret=1;
- m.is_complex_t_junction = 1;
- r="yes: turning into multi-carriageway through-road of T junction";
- }
- }
- }
- if (!r && abs(m.delta) > 75) {
- /* always make an announcement if you have to make a sharp turn */
- r="yes: delta over 75";
- ret=1;
- } else if (!r && abs(m.delta) >= min_turn_limit) {
- if ((m.new_cat >= maneuver_category(type_street_2_city)) && (m.num_similar_ways > 1)) {
- /* When coming from street_2_* or higher category road, check if
- * - we have multiple options of the same category and
- * - we have to make a considerable turn (at least min_turn_limit)
- * If both is the case, ANNOUNCE.
- */
- ret=1;
- r="yes: more than one similar road and delta >= min_turn_limit";
- }
- }
- if ((!r) && (m.num_options <= 1))
- r="no: only one option permitted";
- if (!r) {
- if (is_motorway_like(&(old->way), 0) && (m.num_other_ways == 0) && (m.num_new_motorways > 1) && ((m.left > -90) || (m.right < 90))) {
- /* If we are at a motorway interchange, ANNOUNCE
- * We are assuming a motorway interchange when old way and at least
- * two possible ways are motorway-like and allowed.
- * Additionally we require one way (other than the new way) within +/-90°.
- * This prevents the rule from essentially announcing "don't do the U turn"
- * at the beginning of a single-carriageway section, which is occasionally
- * found on motorways.
- * If any of the possible ways is neither motorway-like nor a ramp,
- * we are probably on a trunk road with level crossings and not
- * at a motorway interchange.
- */
- r="yes: motorway interchange (multiple motorways)";
- m.merge_or_exit = mex_interchange;
- ret=1;
- } else if (is_motorway_like(&(old->way), 0) && is_motorway_like(&(new->way), 0) && (m.num_other_ways == 0) && (!m.is_same_street)) {
- /* Another sign that we are at a motorway interchange is if the street name changes
- */
- r="yes: motorway interchange (name changes)";
- m.merge_or_exit = mex_interchange;
- ret=1;
- } else if ((new->way.item.type == type_ramp) && ((m.num_other_ways == 0) || (abs(m.delta) >= min_turn_limit)) && ((m.left > -90) || (m.right < 90))) {
- /* Motorway ramps can be confusing, therefore we need to lower the bar for announcing a maneuver.
- * When the new way is a ramp, we check for the following criteria:
- * - All available ways are either motorway-like or ramps.
- * This prevents this rule from firing in non-motorway settings, which is needed to avoid
- * superfluous maneuvers when the minor road of a complex T junction is a ramp.
- * - If the above is not met, the maneuver must involve a turn (min_turn_limit or more) to enter the ramp.
- * - Additionally, there must be one way (other than the new way) within +/-90°.
- * This prevents the rule from essentially announcing "don't do the U turn" where the ramps for
- * two opposite directions merge.
- * If the criteria are satisfied, announce.
- */
- r="yes: entering ramp";
- ret=1;
- }
- }
- if (!r) {
- /* get the delta limit for checking for other streets. It is lower if the street has no other
- streets of the same or higher category */
- if (m.new_cat < m.old_cat)
- dlim=80;
- else
- dlim=120;
- /* if the street is really straight, the others might be closer to straight */
- if (abs(m.delta) < 20)
- dlim/=2;
- /* if both old and new way have a category of 0, or if both ways and at least one other way are
- * in the same category and no other ways are higher,
- * dlim is 620/256 (roughly 2.5) times the delta of the maneuver */
- if ((m.max_cat == m.new_cat && m.max_cat == m.old_cat) || (m.new_cat == 0 && m.old_cat == 0))
- dlim=abs(m.delta)*620/256;
- /* if both old and new way are in higher than highest encountered category,
- * dlim is 128/256 times (i.e. one half) the delta of the maneuver */
- else if (m.max_cat < m.new_cat && m.max_cat < m.old_cat)
- dlim=abs(m.delta)*128/256;
- /* if no other ways are within +/-dlim, the maneuver is unambiguous */
- if (m.left >= -dlim || m.right <= dlim)
- m.is_unambiguous = 0;
- /* if another way is within +/-min_turn_limit and on the same side as new, the maneuver is ambiguous */
- if (dc != m.delta) {
- dbg(lvl_debug, "m.delta %d vs dc %d\n", m.delta, dc);
- m.is_unambiguous=0;
- }
- if (!m.is_same_street && m.is_unambiguous < 1) { /* FIXME: why < 1? */
- ret=1;
- r="yes: different street and ambiguous";
- }
- /* we should have cat of the candidate within dlim
- * instead of testing against max_cat.
- * The highest cat road might be well outside dlim
- */
- else if (m.max_cat >= m.new_cat && m.is_unambiguous < 1)
- {
- ret = 1;
- r="yes: ambiguous because of other candidates within dlim";
- }
- else
- r="no: same street or unambiguous";
-#ifdef DEBUG
- r=g_strdup_printf("%s: d %d left %d right %d dlim=%d cat old:%d new:%d max:%d unambiguous=%d same_street=%d", ret==1?"yes":"no", m.delta, m.left, m.right, dlim, m.old_cat, m.new_cat, m.max_cat, m.is_unambiguous, m.is_same_street);
-#endif
- }
-
- if (m.merge_or_exit == mex_none) {
- if (old->way.item.type == type_ramp && is_motorway_like(&(new->way), 0)) {
- if (motorways_left)
- m.merge_or_exit = mex_merge_left;
- else if (motorways_right)
- m.merge_or_exit = mex_merge_right;
- /* if there are no motorways on either side, we are not merging
- * (more likely the start of a motorway) */
-
- if (m.merge_or_exit != mex_none) {
- ret=1;
- if (!r)
- r = "yes: merging onto motorway-like road";
- }
- } else if (is_motorway_like(&(old->way), 1) && (new->way.item.type == type_ramp)) {
- /* Detect interchanges - if:
- * - we're entering a ramp,
- * - we're coming from a motorway-like road (directly or via ramps),
- * - the route is taking us onto another motorway-like road and
- * - none of the ways in between connects to any non-motorway roads,
- * set m.merge_or_exit = mex_interchange.
- * The last condition is to prevent direction changes (i.e. exit motorway and take
- * access ramp for opposite direction) from being misinterpreted as interchanges. */
- ni = old;
- coming_from_motorway = 1;
- while (coming_from_motorway && ni && (ni->way.item.type == type_ramp)) {
- w = &(ni->way);
- while (coming_from_motorway && w) {
- coming_from_motorway = is_motorway_like(w, 1);
- w = w->next;
- }
- ni = ni->prev;
- }
- if (ni && coming_from_motorway)
- coming_from_motorway = is_motorway_like(&(ni->way), 0);
- ni = new->next;
- route_leaves_motorway = !coming_from_motorway;
- while (!route_leaves_motorway && ni && (ni->way.item.type == type_ramp)) {
- w = &(ni->way);
- while (!route_leaves_motorway && w) {
- route_leaves_motorway = !is_motorway_like(w, 1);
- w = w->next;
- }
- ni = ni->next;
- }
- if (ni && !route_leaves_motorway && is_motorway_like(&(ni->way), 0))
- m.merge_or_exit = mex_interchange;
- else if (is_motorway_like(&(old->way), 0) || (coming_from_motorway && new->way.exit_ref)) {
- if (motorways_left && (m.left > -90))
- m.merge_or_exit = mex_exit_right;
- else if (motorways_right && (m.right < 90))
- m.merge_or_exit = mex_exit_left;
- /* if there are no motorways within +/-90 degrees on either side, this is not an exit
- * (more likely the end of a motorway) */
- }
-
- if (is_motorway_like(&(old->way), 0) && (m.merge_or_exit != mex_none)) {
- ret=1;
- if (!r)
- r = "yes: leaving motorway-like road";
- }
- }
- }
-
- if (ret) {
- *maneuver = g_new(struct navigation_maneuver, 1);
- memcpy(*maneuver, &m, sizeof(struct navigation_maneuver));
- }
- if (r)
- dbg(lvl_debug, "%s %s %s -> %s %s %s: %s, delta=%i, merge_or_exit=%i\n", item_to_name(old->way.item.type), old->way.name_systematic, old->way.name, item_to_name(new->way.item.type), new->way.name_systematic, new->way.name, r, m.delta, m.merge_or_exit);
- return ret;
-}
-
-/**
- * @brief Adjusts a bearing delta to point in the same direction as a reference delta.
- *
- * Calculated delta results are constrained to -180 <= delta <= +180 degrees. Some heuristics, however, require values outside
- * that range, e.g. -190 rather than 170 degrees. Given a reference with approximately correct orientation, this function corrects
- * that delta to match the reference as closely as possible. This is done by adding or subtracting 360 degrees as needed.
- *
- * @param delta The delta to adjust. {@code abs(delta)} must be no greater than 180.
- * @param reference The reference delta. {@code abs(reference)} must be no greater then 180.
- * @return The adjusted delta, which is numerically within +/-180 degrees of the reference. If {@code delta} or {@code reference}
- * are outside of their specified range, the result is undefined.
- */
-static int adjust_delta(int delta, int reference) {
- if ((delta >= 0) && (delta - reference) > 180) {
- dbg(lvl_debug,"adjusting delta from %d to %d\n", delta, delta - 360);
- return delta - 360;
- }
- else if ((delta <= 0) && (reference - delta) > 180) {
- dbg(lvl_debug,"adjusting delta from %d to %d\n", delta, delta + 360);
- return delta + 360;
- }
- else
- return delta;
-}
-
-/**
- * @brief Analyzes a roundabout and sets maneuver information
- *
- * Exit from a roundabout requires a somewhat complex analysis of the ways involved in order to:
- * <ul>
- * <li>Calculate effective bearing change (between entry and exit) and store it in {@code cmd->roundabout_delta}</li>
- * <li>Set {@code cmd->maneuver->type} to {@code nav_roundabout_{r|l}{1..8}}, based on bearing change</li>
- * <li>Set {@code cmd->length}</li>
- * </ul>
- *
- * Bearing change must be as close as possible to how drivers would perceive it.
- * Builds prior to r2017 used the difference between the last way before and the first way after the roundabout,
- * which tends to overestimate the angle when the ways leading towards and/or away from the roundabout split into
- * separate carriageways in a Y-shape. This is referred to as {@code delta1} here.
- *
- * In r2017 a different approach was introduced, which essentially distorts the roads so they enter and leave
- * the roundabout at a 90 degree angle. (To make calculations simpler, tangents of the roundabout at the entry
- * and exit points are used, with one of them reversed in direction, instead of the approach roads.)
- * However, this approach tends to underestimate the angle when the distance between approach roads is large.
- * This is referred to as {@code delta2} here.
- *
- * Combining {@code delta1} and {@code delta2}, calculating error estimates for each and using a weighted average between the
- * two delta estimates gives better results in many cases but fails for certain road layouts - namely, when corresponding
- * approach roads are connected by more than one roundabout segment, or when additional ways connect to an approach road.
- * These cases break error calculation and thus weight distribution.
- *
- * Project HighFive introduces a new approach, which compares bearings of ways leading towards and away from the
- * roundabout not immediately at entry and exit but at a certain distance from the roundabout, which is roughly proportional
- * to the circumference of the roundabout. Circumference is estimated using the arithmetic mean value of {@code delta1} and
- * {@code delta2}. This approach has produced the best results in tests. In code it is referred to as {@code delta3}.
- *
- * @param this_ The navigation object
- * @param cmd A {@code struct navigation_cmd}, whose {@code delta} and {@code maneuver} members must be set prior to calling
- * this function
- * @param itm The navigation item for the maneuver to exit the roundabout
- */
-static void navigation_analyze_roundabout(struct navigation *this_, struct navigation_command *cmd, struct navigation_itm *itm) {
- enum item_type r = type_none, l = type_none;
- int len = 0; /* length of roundabout segment */
- int roundabout_length; /* estimated total length of roundabout */
- int angle = 0;
- int entry_tangent; /* tangent of the roundabout at entry point, against direction of route */
- int exit_tangent; /* tangent of the roundabout at exit point, in direction of route */
- int entry_road_angle, exit_road_angle; /* angles before and after approach segments */
- struct navigation_itm *itm2; /* items before itm to examine, up to first roundabout segment on route */
- struct navigation_itm *itm3; /* items before itm2 and after itm to examine */
- struct navigation_way *w; /* continuation of the roundabout after we leave it */
- struct navigation_way *w2; /* segment of the roundabout leading to the point at which we enter it */
- int dtsir = 0; /* delta to stay in roundabout */
- int d, dmax = 0; /* when examining deltas of roundabout approaches, current and maximum encountered */
- int delta1, delta2, delta3; /* for roundabout delta calculated with different approaches */
- int dist_left; /* when examining ways around the roundabout to a certain threshold, the distance we have left to go */
- int central_angle; /* approximate central angle for the roundabout arc that is part of the route */
- int abort; /* whether a (complex) criterion for aborting a loop has been met */
-
- /* Find continuation of roundabout after the exit. Don't simply use itm->way.next here, it will break
- * if a node in the roundabout is shared by more than one way */
- w = itm->way.next;
- while (w && !(w->flags & AF_ROUNDABOUT))
- w = w->next;
- if (w) {
- /* When exiting a roundabout, w should never be null, thus this
- * code will always be executed. Checking for the condition anyway ensures
- * that botched map data (roundabout ending with nowhere else to go) will not
- * cause a crash. For the same reason we're using dtsir with a default value of 0.
- */
-
- dtsir = angle_delta(itm->prev->angle_end, w->angle2);
- dbg(lvl_debug,"delta to stay in roundabout %d\n", dtsir);
-
- exit_tangent = angle_median(itm->prev->angle_end, w->angle2);
- dbg(lvl_debug,"exit %d median from %d, %d\n", exit_tangent, itm->prev->angle_end, w->angle2);
-
- /* Move back to where we enter the roundabout, calculate length in roundabout */
- itm2=itm;
- while (itm2->prev && (itm2->prev->way.flags & AF_ROUNDABOUT)) {
- itm2=itm2->prev;
- len+=itm2->length;
- angle=itm2->angle_end;
- }
-
- /* Find the segment of the roundabout leading up to the point at which we enter it. Again, don't simply
- * use itm2->way.next here, it will break if a node in the roundabout is shared by more than one way */
- w2 = itm2->way.next;
- while (w2 && !(w2->flags & AF_ROUNDABOUT))
- w2 = w2->next;
-
- /* Calculate entry angle */
- if (itm2 && w2) {
- entry_tangent = angle_median(angle_opposite(itm2->way.angle2), w2->angle2);
- dbg(lvl_debug, "entry %d median from %d (%d), %d\n", entry_tangent, angle_opposite(itm2->way.angle2), itm2->way.angle2, itm2->way.next->angle2);
- } else {
- entry_tangent = angle_opposite(angle);
- } /* endif itm2 && w2 */
- dbg(lvl_debug, "entry %d exit %d\n", entry_tangent, exit_tangent);
-
- delta2 = angle_delta(entry_tangent, exit_tangent);
- dbg(lvl_debug, "delta2 %d\n", delta2);
-
- if (itm2->prev) {
- /* If there are V-shaped approach segments and we are turning around or making a sharp turn,
- * delta1 may point in the wrong direction, thus we need adjust_delta() to correct this. */
- delta1 = adjust_delta(angle_delta(itm2->prev->angle_end, itm->way.angle2), delta2);
-
- /* Now try to figure out the error range for delta1. Errors are caused by turns in the approach segments
- * just before the roundabout. We use the last segment before the approach as a reference.
- * We assume the approach to begin when one of the following is true:
- * - a way turns into a ramp
- * - a way turns into a one-way road
- * - a certain distance from the roundabout, proportional to its circumference, is exceeded
- * Simply comparing bearings at these points may cause confusion with certain road layouts (namely
- * S-shaped dual-carriageway roads), hence we examine the entire approach segment and take the largest
- * delta (relative to the end of the approach segment) which we encounter.
- * This is done for both ends of the roundabout.
- */
-
- /* Approximate roundabout circumference based on len and approximate central angle of route segment.
- * The central angle is approximated using the unweighted average of delta1 and delta2,
- * which is somewhat crude but sufficient for our purposes. */
- central_angle = abs((delta1 + delta2) / 2 + ((cmd->delta < dtsir) ? 180 : -180));
- if (central_angle)
- roundabout_length = len * 360 / central_angle;
- else {
- dbg(lvl_error,"central_angle in roundabout_length computation lead to divide by zero (delta1 = %d, delta2 = %d, cmd->delta = %d, dtsir = %d, len = %d)",delta1,delta2,cmd->delta,dtsir,len);
- roundabout_length = len;
- }
- dbg(lvl_debug,"roundabout_length = %dm (for central_angle = %d degrees)\n", roundabout_length, central_angle);
-
- /* in the case of separate carriageways, approach roads become hard to identify, thus we keep a cap on distance.
- * Currently this is at most half the length of the roundabout, which has worked well in tests but can be tweaked
- * to further improve results. */
- dist_left = roundabout_length / 2;
- dbg(lvl_debug,"examining roads for up to %dm\n", dist_left);
-
- /* examine items before roundabout */
- itm3 = itm2->prev; /* last segment before roundabout */
- abort = 0;
- while (itm3->prev) {
- if ((itm3->next && is_ramp(&(itm3->next->way)) && !is_ramp(&(itm3->way))) || !(itm3->way.flags & AF_ONEWAYMASK)) {
- dbg(lvl_debug,"items before roundabout: break because ramp or oneway ends, %dm left\n", dist_left);
- dist_left = 0; /* to make sure we don't examine the following way in depth */
- break;
- }
- if (dist_left <= itm3->length) {
- dbg(lvl_debug,"items before roundabout: maximum distance reached, %dm left, item length %dm\n", dist_left, itm3->length);
- break;
- }
- d = navigation_way_get_max_delta(&(itm3->way), map_projection(this_->map), itm2->prev->angle_end, dist_left, -1);
- if ((d != invalid_angle) && (abs(d) > abs(dmax)))
- dmax = d;
- w2 = itm3->way.next;
- while (w2) {
- /* Stop examining ways at a turn maneuver (more than one way allowed and route does not follow straightest path) */
- if (is_way_allowed(this_, w2, 0)
- && (abs(angle_delta(angle_opposite(w2->angle2), itm3->way.angle2)) <= abs(angle_delta(itm3->prev->angle_end, itm3->way.angle2)))) {
- /* FIXME: comparing angles probably does not work well for near-equal angles */
- abort = 1;
- break;
- }
- w2 = w2->next;
- }
- if (abort) {
- dbg(lvl_debug,"items before roundabout: break because of potential turn maneuver, %dm left\n", dist_left);
- dist_left = itm3->length;
- break;
- }
- dist_left -= itm3->length;
- itm3 = itm3->prev;
- }
- if (dist_left == 0) {
- d = angle_delta(itm2->prev->angle_end, itm3->angle_end);
- } else if (dist_left < itm3->length) {
- d = navigation_way_get_max_delta(&(itm3->way), map_projection(this_->map), itm2->prev->angle_end, dist_left, -1);
- } else {
- /* not enough objects in navigation map, use most distant one
- * - or dist_left == itm3->length, this saves a few CPU cycles over the above */
- d = angle_delta(itm2->prev->angle_end, itm3->way.angle2);
- }
- if ((d != invalid_angle) && (abs(d) > abs(dmax)))
- dmax = d;
- entry_road_angle = (itm2->prev->angle_end + dmax) % 360;
- dbg(lvl_debug,"entry_road_angle %d (%d + %d)\n", entry_road_angle, itm2->prev->angle_end, dmax);
-
- /* examine items after roundabout */
- dmax = 0;
- dist_left = roundabout_length / 2;
- itm3 = itm; /* first segment after roundabout */
- abort = 0;
- while (itm3->next) {
- if ((itm3->prev && is_ramp(&(itm3->prev->way)) && !is_ramp(&(itm3->way))) || !(itm3->way.flags & AF_ONEWAYMASK)) {
- dbg(lvl_debug,"items after roundabout: break because ramp or oneway ends, %dm left\n", dist_left);
- dist_left = 0; /* to make sure we don't examine the following way in depth */
- break;
- }
- if (dist_left <= itm3->length) {
- dbg(lvl_debug,"items after roundabout: maximum distance reached, %dm left, item length %dm\n", dist_left, itm3->length);
- break;
- }
- d = navigation_way_get_max_delta(&(itm3->way), map_projection(this_->map), itm->way.angle2, dist_left, 1);
- if ((d != invalid_angle) && (abs(d) > abs(dmax)))
- dmax = d;
- w2 = itm3->next->way.next;
- while (w2) {
- /* Stop examining ways at a turn maneuver (more than one way allowed and route does not follow straightest path) */
- if (is_way_allowed(this_, w2, 0)
- && (abs(angle_delta(itm3->angle_end, w2->angle2)) <= abs(angle_delta(itm3->angle_end, itm3->next->way.angle2)))) {
- /* FIXME: comparing angles probably does not work well for near-equal angles */
- abort = 1;
- break;
- }
- w2 = w2->next;
- }
- if (abort) {
- dbg(lvl_debug,"items after roundabout: break because of potential turn maneuver, %dm left\n", dist_left);
- dist_left = itm3->length;
- break;
- }
- dist_left -= itm3->length;
- itm3 = itm3->next;
- }
- if (dist_left == 0) {
- d = angle_delta(itm->way.angle2, itm3->way.angle2);
- } else if (dist_left < itm3->length) {
- d = navigation_way_get_max_delta(&(itm3->way), map_projection(this_->map), itm->way.angle2, dist_left, 1);
- } else {
- /* not enough objects in navigation map, use most distant one
- * - or dist_left == itm3->length, this saves a few CPU cycles over the above */
- d = angle_delta(itm->way.angle2, itm3->angle_end);
- }
- if ((d != invalid_angle) && (abs(d) > abs(dmax)))
- dmax = d;
-
- exit_road_angle = (itm->way.angle2 + dmax) % 360;
- dbg(lvl_debug,"exit_road_angle %d (%d + %d)\n", exit_road_angle, itm->way.angle2, dmax);
-
- dbg(lvl_debug,"delta1 %d\n", delta1);
-
- delta3 = adjust_delta(angle_delta(entry_road_angle, exit_road_angle), delta2);
- dbg(lvl_debug,"delta3 %d\n", delta3);
-
- cmd->roundabout_delta = delta3;
- dbg(lvl_debug,"roundabout_delta %d\n", cmd->roundabout_delta);
- } else {
- /* we don't know where we entered the roundabout, so we can't calculate delta1 */
- cmd->roundabout_delta = delta2;
- } /* endif itm2->prev */
- cmd->length=len+roundabout_extra_length;
- } /* if w */
-
- /* set cmd->maneuver->type */
- switch (((180 + 22) - cmd->roundabout_delta) / 45) {
- case 0:
- case 1:
- r = type_nav_roundabout_r1;
- l = type_nav_roundabout_l7;
- break;
- case 2:
- r = type_nav_roundabout_r2;
- l = type_nav_roundabout_l6;
- break;
- case 3:
- r = type_nav_roundabout_r3;
- l = type_nav_roundabout_l5;
- break;
- case 4:
- r = type_nav_roundabout_r4;
- l = type_nav_roundabout_l4;
- break;
- case 5:
- r = type_nav_roundabout_r5;
- l = type_nav_roundabout_l3;
- break;
- case 6:
- r = type_nav_roundabout_r6;
- l = type_nav_roundabout_l2;
- break;
- case 7:
- r = type_nav_roundabout_r7;
- l = type_nav_roundabout_l1;
- break;
- case 8:
- r = type_nav_roundabout_r8;
- l = type_nav_roundabout_l8;
- break;
- }
- dbg(lvl_debug,"delta %d\n", cmd->delta);
- /* if delta to leave the roundabout (cmd->delta) is less than delta to stay in roundabout (dtsir),
- * we're exiting to the left, so we're probably in a clockwise roundabout, and vice versa */
- if (cmd->delta < dtsir)
- cmd->maneuver->type = l;
- else
- cmd->maneuver->type = r;
- dbg(lvl_debug,"type %s\n", item_to_name(cmd->maneuver->type));
-}
-
-
-/**
- * @brief Creates a new {@code struct navigation_command} for a maneuver.
- *
- * This function creates a new command and inserts it into the command list of {@code this_}.
- * It also parses {@code maneuver} and sets its {@code type} appropriately so that other
- * functions can rely on that.
- *
- * @param this_ The navigation object
- * @param itm The navigation item following the maneuver
- * @param maneuver The {@code struct navigation_maneuver} returned by {@code maneuver_required2()}. For the destination,
- * initialize a zeroed-out {@code struct navigation_maneuver} and set its {@code type} member to {@code type_nav_destination}
- * prior to calling this function.
- *
- * @return The new command
- */
-static struct navigation_command *
-command_new(struct navigation *this_, struct navigation_itm *itm, struct navigation_maneuver *maneuver)
-{
- struct navigation_command *ret=g_new0(struct navigation_command, 1);
- struct navigation_way *w; /* the way in which to turn. */
- int more_ways_for_strength = 0; /* Counts the number of ways of the current node that turn
- to the same direction as the route way. Strengthening criterion. */
- int turn_no_of_route_way = 0; /* The number of the route way of all ways that turn to the same direction.
- Count direction from abs(0 degree) up to abs(180 degree). Strengthening criterion. */
-
- dbg(lvl_debug,"enter this_=%p itm=%p maneuver=%p delta=%d\n", this_, itm, maneuver, maneuver->delta);
- ret->maneuver = maneuver;
- ret->delta=maneuver->delta;
- ret->itm=itm;
-
- /* Possible maneuver types:
- * nav_none (default, change wherever we encounter it – unless the maneuver is a merge, which has only merge_or_exit)
- * nav_straight (set below)
- * nav_keep_{left|right} (set below)
- * nav_{right|left}_{1..3} (set below)
- * nav_turnaround (TODO: when we have a U turn without known direction? Needs full implementation!)
- * nav_turnaround_{left|right} (set below)
- * nav_roundabout_{r|l}{1..8} (set below, special handling)
- * nav_exit_{left|right} (do not set here)
- * nav_merge_{left|right} (do not set here)
- * nav_destination (if this is set, leave it)
- * nav_position (do not set here)
- */
-
- if (ret->maneuver->type != type_nav_destination) {
- /* FIXME: this will not catch cases in which entry and exit share the same node and we just *touch* the roundabout */
- if (itm && itm->prev && !(itm->way.flags & AF_ROUNDABOUT) && (itm->prev->way.flags & AF_ROUNDABOUT)) {
- navigation_analyze_roundabout(this_, ret, itm);
- } else {
- /* non-roundabout turn --> */
-
- /* set ret->maneuver->type */
- if (abs(ret->delta) >= min_turn_limit) {
-
- /* Strengthening criterion: If there are more ways in the same direction, in which the vehicle can turn,
- the announcement shall be more precise. I.e. the strengthening is dependent on which of the possible ways
- the route turn shall be. So, with the selection of one of the possible ways a certain turn angle pattern
- becomes active.
- Second criterion: the turn angle of the route way defines the strengthening of the announcement according
- to the pattern. */
- w = itm->next->way.next;
-
- if (angle_delta(itm->next->way.angle2,itm->angle_end) < 0) { /* next turns or bends left */
- while (w) {
- if (angle_delta(w->angle2,itm->angle_end) < -min_turn_limit) {
- more_ways_for_strength++; /* there is an additional way that also turns left.
- Note: the route turn is not contained
- Left means more than min_turn_limit, less is straight on */
- if (angle_delta(w->angle2,itm->angle_end) < ret->delta)
- turn_no_of_route_way++; /* this way is on the left side of the route way */
- }
- w = w->next;
- }
- } else { /* next turns or bends right. Same investigation, but mirrored. */
- while (w) {
- if (angle_delta(w->angle2,itm->angle_end) > min_turn_limit) {
- more_ways_for_strength++;
- if (angle_delta(w->angle2,itm->angle_end) > ret->delta)
- turn_no_of_route_way++; /* this way is on the right side of the route way */
- }
- w = w->next;
- }
- }
-
-
- /* Investigate the strengthening of announcement. */
- switch (more_ways_for_strength) {
- case 0:
- /* Only one possibility to turn to this direction */
- if (ret->delta < -sharp_turn_limit) {
- ret->maneuver->type = type_nav_left_3; /* strongly left */
- } else if (ret->delta <= 0) {
- ret->maneuver->type = type_nav_left_2; /* normally left */
- } else if (ret->delta <= sharp_turn_limit) {
- ret->maneuver->type = type_nav_right_2;/* normally right */
- } else {
- ret->maneuver->type = type_nav_right_3;/* strongly right */
- }
- break;
- case 1:
- /* One additional possibility to turn to the same direction */
- if (turn_no_of_route_way == 0) {
- /* the route is less strong to turn */
- if (ret->delta < -turn_2_limit) {
- ret->maneuver->type = type_nav_left_2; /* normally left */
- } else if (ret->delta <= 0) {
- ret->maneuver->type = type_nav_left_1; /* easily left */
- } else if (ret->delta <= turn_2_limit) {
- ret->maneuver->type = type_nav_right_1; /* easily right */
- } else {
- ret->maneuver->type = type_nav_right_2; /* normally right */
- }
- } else {
- if (ret->delta < -sharp_turn_limit) {
- ret->maneuver->type = type_nav_left_3; /* strongly left */
- } else if (ret->delta <= 0) {
- ret->maneuver->type = type_nav_left_2; /* normally left */
- } else if (ret->delta <= sharp_turn_limit) {
- ret->maneuver->type = type_nav_right_2; /* normally right */
- } else {
- ret->maneuver->type = type_nav_right_3; /* strongly right */
- }
- }
- break;
- default:
- /* Two or more additional possibilities to turn to the same direction. */
- if (turn_no_of_route_way == 0) {
- if (ret->delta < -turn_2_limit) {
- ret->maneuver->type = type_nav_left_2; /* normally left */
- } else if (ret->delta <= 0) {
- ret->maneuver->type = type_nav_left_1; /* easily left */
- } else if (ret->delta <= turn_2_limit) {
- ret->maneuver->type = type_nav_right_1; /* easily right */
- } else {
- ret->maneuver->type = type_nav_right_2; /* normally right */
- }
- }
- else if (turn_no_of_route_way == 1) {
- if (ret->delta < -sharp_turn_limit) {
- ret->maneuver->type = type_nav_left_3; /* strongly left */
- } else if (ret->delta <= 0) {
- ret->maneuver->type = type_nav_left_2; /* normally left */
- } else if (ret->delta <= sharp_turn_limit) {
- ret->maneuver->type = type_nav_right_2; /* normally right */
- } else {
- ret->maneuver->type = type_nav_right_3; /* strongly right */
- }
- }
- else if (turn_no_of_route_way > 1) {
- /* if the route is the strongest of all possible turns here */
- if (ret->delta < -u_turn_limit) {
- ret->maneuver->type = type_nav_turnaround_left; /* turn around left */
- } else if (ret->delta < -sharp_turn_limit) {
- ret->maneuver->type = type_nav_left_3; /* strongly left */
- } else if (ret->delta <= 0) {
- ret->maneuver->type = type_nav_left_2; /* normally left */
- } else if (ret->delta <= sharp_turn_limit) {
- ret->maneuver->type = type_nav_right_2; /* normally right */
- } else if (ret->delta <= u_turn_limit) {
- ret->maneuver->type = type_nav_right_3; /* strongly right */
- } else {
- ret->maneuver->type = type_nav_turnaround_right; /* turn around right */
- }
- }
- break;
- }
- } else {
- /* if the route goes straight:
- * If there's another way on one side of the route within 2 * min_turn_limit (not both - the expression below is a logical XOR),
- * the maneuver is "keep left" or "keep right", else it is "go straight".
- * Note that neighbors are not necessarily straight.
- * The boundary may need some tweaking, (2 * min_turn_limit) may not be ideal but it's a first shot which ensures that other straight ways
- * will always fulfill the neighbor criteria. */
- int has_left_neighbor = (ret->maneuver->left - ret->delta > 2 * -min_turn_limit);
- int has_right_neighbor = (ret->maneuver->right - ret->delta < 2 * min_turn_limit);
- if (!(has_left_neighbor) != !(has_right_neighbor)) {
- if (has_left_neighbor)
- ret->maneuver->type = type_nav_keep_right;
- else
- ret->maneuver->type = type_nav_keep_left;
- } else
- ret->maneuver->type = type_nav_straight;
- } /* endif ret->delta */
- }
- }
-
- if (this_->cmd_last) {
- this_->cmd_last->next=ret;
- ret->prev = this_->cmd_last;
- }
- this_->cmd_last=ret;
-
- if (!this_->cmd_first)
- this_->cmd_first=ret;
- return ret;
-}
-
-
-/**
- * @brief Creates turn instructions where needed
- *
- * @param this_ The navigation object for which to create turn instructions
- * @param route Not used
- */
-static void
-make_maneuvers(struct navigation *this_, struct route *route)
-{
- struct navigation_itm *itm, *last=NULL, *last_itm=NULL;
- struct navigation_maneuver *maneuver;
- itm=this_->first;
- this_->cmd_last=NULL;
- this_->cmd_first=NULL;
- while (itm) {
- if (last) {
- if (maneuver_required2(this_, last_itm, itm, &maneuver)) {
- command_new(this_, itm, maneuver);
- }
- } else
- last=itm;
- last_itm=itm;
- itm=itm->next;
- }
- maneuver = g_new0(struct navigation_maneuver, 1);
- maneuver->type = type_nav_destination;
- command_new(this_, last_itm, maneuver);
-}
-
-static int
-contains_suffix(char *name, char *suffix)
-{
- if (!suffix)
- return 0;
- if (strlen(name) < strlen(suffix))
- return 0;
- return !navit_utf8_strcasecmp(name+strlen(name)-strlen(suffix), suffix);
-}
-
-
-
-static char *
-replace_suffix(char *name, char *search, char *replace)
-{
- int len=strlen(name)-strlen(search);
- char *ret=g_malloc(len+strlen(replace)+1);
- strncpy(ret, name, len);
- strcpy(ret+len, replace);
- if (isupper(name[len])) {
- ret[len]=toupper(ret[len]);
- }
-
- return ret;
-}
-
-
-
-/**
- * @brief Creates a text description for the destination of a maneuver, which can be used in announcements.
- *
- * @param nav The navigation object
- * @param cmd The {@code navigation_command} for which to generate an announcement
- * @param next The current navigation item. In speech mode this should be set to the navigation
- * item starting at the vehicle's current position; in route description mode this should be set to
- * the {@code navigation_item} associated with the previous {@code navigation_command}
- * @param prefix A space will be added as a prefix to the string returned, or a null string for no prefix
- */
-static char *
-navigation_item_destination(struct navigation *nav, struct navigation_command *cmd, struct navigation_itm *next, char *prefix)
-{
- char *ret = NULL, *name1 = NULL, *sep = "", *name2 = "";
- char *name = NULL, *name_systematic=NULL;
- int i, gender = unknown;
- int vocabulary1=1;
- int vocabulary2=1;
- struct attr attr;
- struct navigation_itm *itm = cmd->itm;
- struct navigation_itm *itm_pre = NULL;
- struct navigation_itm *itm_post = NULL;
-
- if (! prefix)
- prefix="";
- /* check the configuration of navit.xml */
- if (nav->speech && speech_get_attr(nav->speech, attr_vocabulary_name, &attr, NULL))
- vocabulary1=attr.u.num; /* shall the street name be announced? */
- if (nav->speech && speech_get_attr(nav->speech, attr_vocabulary_name_systematic, &attr, NULL))
- vocabulary2=attr.u.num; /* shall the systematic name be announced? */
-
- /* On motorway links don't announce the name of the ramp as this is done by name_systematic and the street_destination. */
- if (vocabulary1 && (itm->way.item.type != type_ramp))
- name=itm->way.name;
-
- if (vocabulary2)
- name_systematic=itm->way.name_systematic;
-
- if (name) {
- name1 = g_strdup(name);
- for (i = 0; i < sizeof(suffixes)/sizeof(suffixes[0]); i++) {
- if (contains_suffix(name, suffixes[i].fullname)) {
- gender = suffixes[i].gender;
- g_free(name1);
- name1 = g_strdup(name);
- break;
- }
- if (contains_suffix(name, suffixes[i].abbrev)) {
- gender = suffixes[i].gender;
- g_free(name1);
- name1 = replace_suffix(name, suffixes[i].abbrev, suffixes[i].fullname);
- break;
- }
- }
- if (name_systematic) {
- name2 = name_systematic;
- sep=" ";
- }
- } else
- name1 = g_strdup("");
-
- if (cmd->maneuver && cmd->maneuver->type && (cmd->maneuver->merge_or_exit & mex_merge)) {
- if (name_systematic)
- /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name */
- ret = g_strdup_printf(_("%1$sonto the %2$s%3$s%4$s"), prefix, name_systematic, sep, name1);
- else if (name)
- switch (gender) {
- case unknown:
- /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name */
- ret = g_strdup_printf(_("%1$sonto %2$s"), prefix, name1);
- break;
- case masculine:
- /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included */
- ret=g_strdup_printf(_("%1$sonto %2$s|masculine form"), prefix, name1);
- break;
- case feminine:
- /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included */
- ret=g_strdup_printf(_("%1$sonto %2$s|feminine form"), prefix, name1);
- break;
- case neuter:
- /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included */
- ret=g_strdup_printf(_("%1$sonto %2$s|neuter form"), prefix, name1);
- break;
- }
- else ret = g_strdup("");
- } else if (!name && !name_systematic && itm->way.item.type == type_ramp && (!cmd->maneuver || (cmd->maneuver->merge_or_exit != mex_interchange))) {
- itm_pre = itm->prev;
- while (itm_pre && (itm_pre->way.item.type == type_ramp))
- itm_pre = itm_pre->prev;
- itm_post = itm->next;
- while (itm_post && (itm_post->way.item.type == type_ramp) && (!cmd->next || (itm_post != cmd->next->itm)))
- itm_post = itm_post->next;
- if (((itm_post) && is_motorway_like(&(itm_post->way), 0))
- && ((itm_pre) && !is_motorway_like(&(itm_pre->way), 0)))
- /* TRANSLATORS: motorway ramp refers to the slip road for entering a motorway. */
- ret = g_strdup_printf("%s%s",prefix,_("onto the motorway ramp")); /* This is only announced when there is no additional info about the ramp and the ramp leads to a motorway. */
- else
- ret = g_strdup("");
- } else if (!name && !name_systematic)
- ret = g_strdup("");
- else if (name) {
- switch (gender) {
- case unknown:
- /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name */
- ret=g_strdup_printf(_("%sinto %s%s%s"), prefix, name, sep, name2);
- break;
- case masculine:
- /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included */
- ret=g_strdup_printf(_("%sinto %s%s%s|masculine form"), prefix, name1, sep, name2);
- break;
- case feminine:
- /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included */
- ret=g_strdup_printf(_("%sinto %s%s%s|feminine form"), prefix, name1, sep, name2);
- break;
- case neuter:
- /* TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included */
- ret=g_strdup_printf(_("%sinto %s%s%s|neuter form"), prefix, name1, sep, name2);
- break;
- }
-
- } else
- /* TRANSLATORS: gives the name of the next road to turn into (into the E17) */
- ret=g_strdup_printf(_("%sinto the %s"),prefix,name_systematic);
- g_free(name1);
- name1=ret;
- while (name1 && *name1) {
- switch (*name1) {
- case '|':
- *name1='\0';
- break;
- case '/':
- *name1++=' ';
- break;
- default:
- name1++;
- break;
- }
- }
- return ret;
-}
-
-
-/**
- * @brief Formats the exit ref and name for display and speech output
- *
- * This function takes the navigation command for a motorway maneuver (exit or interchange) and
- * returns a string describing the exit.
- *
- * If the exit has a name and ref and the name is different from {@code street_destination_announce},
- * a string of the form "ref name" is returned. If only one of the two is different from NULL, it
- * is returned unchanged.
- *
- * If the name matches {@code street_destination_announce}, it is always treated as if it were NULL.
- * This prevents redundancy in announcements.
- *
- * No checks are done that the maneuver actually has the appropriate merge_or_exit flags set. The
- * caller is responsible for performing such checks prior to calling this function.
- *
- * @param this_ The navigation command
- * @param street_destination_announce The name of the street following the maneuver. This argument
- * may be NULL, in which case the exit name will not be suppressed.
- */
-static char *
-navigation_cmd_get_exit_announce(struct navigation_command *this_, char *street_destination_announce) {
- char * ret = NULL;
- char *folded_exit_label=NULL;
- char *folded_street_destination_announce=NULL;
-
- if (this_->itm->way.exit_label) {
- folded_exit_label = linguistics_casefold(this_->itm->way.exit_label);
- if (street_destination_announce)
- folded_street_destination_announce = linguistics_casefold(street_destination_announce);
- else
- folded_street_destination_announce = g_strdup("");
-
- if (!strstr(folded_street_destination_announce, folded_exit_label)) { /* No redundancy? */
- if (this_->itm->way.exit_ref)
- ret = g_strdup_printf("%1$s %2$s", this_->itm->way.exit_ref, this_->itm->way.exit_label);
- else
- ret = g_strdup_printf("%1$s", this_->itm->way.exit_label);
- } else if (this_->itm->way.exit_ref)
- ret = g_strdup_printf("%1$s", this_->itm->way.exit_ref);
-
- } else {
- if (this_->itm->way.exit_ref)
- ret = g_strdup_printf("%1$s", this_->itm->way.exit_ref);
- }
-
- g_free(folded_exit_label);
- g_free(folded_street_destination_announce);
-
- return ret;
-}
-
-
-/**
- * @brief Creates turn by turn guidance sentences for the speech and for the route description
- *
- * @param nav The navigation object
- * @param itm The current navigation item, which is used to determine the distance to the next
- * maneuver. In speech mode this should be set to the navigation item starting at the vehicle's
- * current position; in route description mode this should be set to the {@code navigation_item}
- * associated with the previous {@code navigation_command}
- * @param cmd The {@code navigation_command} for which to generate an announcement
- * @param type The type of announcements to generate. Set to {@code attr_navigation_long_exact}
- * to avoid rounding distances, or to {@code attr_navigation_speech} to avoid announcing street
- * names more than once
- * @param connect Whether this is the second of two connected announcements, as in "turn left
- * in..., then turn right"
- */
-static char *
-show_maneuver(struct navigation *nav, struct navigation_itm *itm, struct navigation_command *cmd, enum attr_type type, enum announcement_level level)
-{
-
- int distance=itm->dest_length-cmd->itm->dest_length;
- char *d=NULL,*ret=NULL;
- char *street_destination_announce=NULL;
- int skip_roads = 0;
- int count_roundabout;
- struct navigation_itm *cur;
- struct navigation_way *candidate_way;
- int tellstreetname = 0;
- char *at = NULL; /* Motorway junction name */
- char *direction = NULL; /* The direction-dependent part of the maneuver */
- char *destination = NULL;
- char *street_destination = NULL;
- char *instruction = NULL;
- char *strength = NULL; /* Strength of turn like 'easily', 'strongly', etc. */
-
-
- if (type != attr_navigation_long_exact)
- distance=round_distance(distance);
-
- if (type == attr_navigation_speech) {
- if (nav->turn_around && nav->turn_around == nav->turn_around_limit) {
- if (level == level_connect) {
- return g_strdup(""); /* there is no ',then turn around' */
- } else {
- navigation_set_turnaround(nav, nav->turn_around_count+1);
- return g_strdup(_("When possible, please turn around"));
- }
- }
- navigation_set_turnaround(nav, 0);
- dbg(lvl_debug,"distance=%d level=%d type=0x%x\n", distance, level, itm->way.item.type);
- }
-
-
- street_destination=select_announced_destinations(cmd);
- if (street_destination)
- if (level == level_connect) {
- /* for the connected announcement suppress the destination, if this is the same as in the first part of the announcement */
- if (cmd->prev) {
- char *street_destination_previous = select_announced_destinations(cmd->prev);
- if (street_destination_previous && strstr(street_destination_previous, street_destination)) { /* doesn't have any new information? */
- street_destination_announce=g_strdup("");
- } else {
- /* TRANSLATORS: the argument is the destination to follow */
- street_destination_announce=g_strdup_printf(_("towards %s"),street_destination);
- }
- g_free(street_destination_previous);
- } else {
- street_destination_announce=g_strdup_printf(_("towards %s"),street_destination);
- }
- } else {
- street_destination_announce=g_strdup_printf(_("towards %s"),street_destination);
- }
- else street_destination_announce=g_strdup("");
- g_free(street_destination);
-
- if (cmd->itm->prev->way.flags & AF_ROUNDABOUT)
- {
- cur = cmd->itm->prev;
- count_roundabout = 0;
- while (cur && (cur->way.flags & AF_ROUNDABOUT))
- {
- candidate_way=cur->next->way.next;
- while (candidate_way)
- {
- if (candidate_way && is_way_allowed(nav,candidate_way,3))
- /* If the next segment has no exit or the exit isn't allowed, don't count it */
- {
- count_roundabout++;
- /* As soon as we have an allowed one on this node,
- * stop further counting for this node.
- */
- break;
- }
- candidate_way=candidate_way->next;
- }
- cur = cur->prev;
- }
-
- /*try to figure out if the entry node has a usable exit as well
- *
- * this will fail for left-hand driving areas
- */
- if (cur && cur->next)
- {
- candidate_way=cur->next->way.next;
- while (candidate_way)
- {
- if (candidate_way && is_way_allowed(nav,candidate_way,3)
- /*&& (angle_delta(cur->angle_end,candidate_way->angle2) > 0) && ( angle_delta(candidate_way->angle2,cur->next->way.angle2) < 0 )*/)
- /*for right-hand traffic, exits should be to the right anyway to allow smooth turns, so leave this out until we find a counterexample :)*/
- {
- count_roundabout++;
- /* As soon as we have an allowed one on this node,
- * stop further counting for this node.
- */
- break;
- }
- candidate_way=candidate_way->next;
- }
- }
-
- switch (level)
- {
- case level_follow:
- d=get_distance_str(nav, distance, type, 1);
- return g_strdup_printf(_("Follow the road for the next %s"), d);
- case level_soon:
- return g_strdup(_("Enter the roundabout soon"));
- case level_meters:
- d = get_distance_str(nav, distance, attr_navigation_short, 0);
- /* TRANSLATORS: %s is the distance to the roundabout */
- ret = g_strdup_printf(_("Enter the roundabout %s"), d);
- g_free(d);
- return ret;
- case level_connect:
- return g_strdup(_("then enter the roundabout"));
- case level_now:
- /* TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow */
- return g_strdup_printf(_("Leave the roundabout at the %1$s %2$s"), get_exit_count_str(count_roundabout),street_destination_announce);
- default :
- dbg(lvl_error,"unexpected announcement level %d\n", level);
- return g_strdup_printf("internal error");
- }
- }
-
- if (cmd->maneuver && cmd->maneuver->type)
- {
- if (cmd->itm->next)
- {
- if(type == attr_navigation_speech)
- { /* In voice mode */
- /* In Voice Mode only tell the street name in level_meters or in level_ if level 1 was skipped */
- if (level == level_meters)
- { /* we are close to the intersection */
- cmd->itm->streetname_told = 1; /* remember to be checked when we turn */
- tellstreetname = 1; /* Ok, so we tell the name of the street */
- }
- else if (level == level_now)
- {
- if(cmd->itm->streetname_told == 0) /* we are right at the intersection */
- tellstreetname = 1;
- else
- cmd->itm->streetname_told = 0; /* reset just in case we come to the same street again */
- }
- else if (level == level_connect)
- {
- tellstreetname = 1;
- }
- }
- else
- tellstreetname = 1;
- }
-
-
- switch (level)
- {
- case level_soon :
- d=g_strdup(_("soon"));
- break;
- case level_meters :
- d=get_distance_str(nav, distance, attr_navigation_short, 0);
- break;
- case level_now :
- d=g_strdup(_("now"));
- break;
- case level_connect :
- d=g_strdup(_("then"));
- break;
- default :
- d = g_strdup("");
- break;
- }
-
- if (tellstreetname)
- destination=navigation_item_destination(nav, cmd, itm, " ");
- else destination = g_strdup("");
-
- if (!(cmd->maneuver->merge_or_exit == mex_none ))
- {
- char *exit_announce=NULL;
-
- /* interchange or exit announcement shall be a long distance information only.
- But if so, exit_label shall not be announced in case it is a substring
- of destination info to avoid redundancy and not let the sentence become too long.
- Otherwise, if there is no additional destination info, just say it at level_meters. */
- if ((level == level_soon) || ((level == level_meters) && (!street_destination_announce && !destination)) || (type != attr_navigation_speech)) {
- exit_announce = navigation_cmd_get_exit_announce(cmd, street_destination_announce);
- }
-
- switch (cmd->maneuver->merge_or_exit)
- {
- case mex_merge_left:
- case mex_merge_right:
- if (cmd->maneuver->merge_or_exit == mex_merge_right) {
- if (level == level_connect)
- /* TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. */
- instruction = g_strdup_printf(_("then merge%1$s|right"), destination);
- else
- /* TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included. */
- instruction = g_strdup_printf(_("Merge %1$s%2$s|right"), d, destination);
- } else {
- if (level == level_connect)
- /* TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. */
- instruction = g_strdup_printf(_("then merge%1$s|left"), destination);
- else
- /* TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included. */
- instruction = g_strdup_printf(_("Merge %1$s%2$s|left"), d, destination);
- }
- break;
- case mex_exit_left:
- case mex_exit_right:
- direction = (cmd->maneuver->merge_or_exit == mex_exit_left) ?
- g_strdup(_("on your left")) :
- g_strdup(_("on your right"));
- if (exit_announce)
- /* TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance */
- instruction = g_strdup_printf(_("Take exit %1$s %2$s %3$s"), exit_announce, direction, d);
- else
- /* TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination */
- instruction = g_strdup_printf(_("Take the exit %1$s %2$s%3$s"), direction, d, destination);
-
- break;
- }
-
- if (!instruction && exit_announce) {
- /* TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West" */
- at = g_strdup_printf(" %1$s %2$s", cmd->maneuver->merge_or_exit == mex_interchange ? (_("at interchange")) : (_( "at exit")),
- exit_announce ? exit_announce : "");
- }
- g_free(exit_announce);
- }
- if (!instruction) {
- if (!at)
- at = g_strdup("");
- switch (cmd->maneuver->type) {
- case type_nav_straight :
- if (level == level_connect)
- /* TRANSLATORS: the arg. is where to do the maneuver */
- instruction = g_strdup_printf(_("then continue straight%1$s"), at);
- else
- /* TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination */
- instruction = g_strdup_printf(_("Continue straight %1$s%2$s%3$s"), d, at, destination);
- break;
- case type_nav_keep_right :
- if (level == level_connect)
- /* TRANSLATORS: the arg. is where to do the maneuver */
- instruction = g_strdup_printf(_("then keep right%1$s"), at);
- else
- /* TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination */
- instruction = g_strdup_printf(_("Keep right %1$s%2$s%3$s"), d, at, destination);
- break;
- case type_nav_keep_left :
- if (level == level_connect)
- /* TRANSLATORS: the arg. is where to do the maneuver */
- instruction = g_strdup_printf(_("then keep left%1$s"), at);
- else
- /* TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination */
- instruction = g_strdup_printf(_("Keep left %1$s%2$s%3$s"), d, at, destination);
- break;
- case type_nav_right_1 :
- case type_nav_right_2 :
- case type_nav_right_3 :
- case type_nav_left_1 :
- case type_nav_left_2 :
- case type_nav_left_3 :
- /* generic turn case */
- switch (cmd->maneuver->type) {
- case type_nav_right_1 :
- case type_nav_right_2 :
- case type_nav_right_3 :
- /* TRANSLATORS: "right" as in "turn right" */
- direction = g_strdup(_("right"));
- if (level == level_now)
- skip_roads = count_possible_turns(nav, cmd->prev ? cmd->prev->itm : nav->first, cmd->itm, 90);
- else if (level == level_connect)
- /* Robotaxi: todo - must tidy up skip_roads == -1 issue */
- skip_roads = count_possible_turns(nav, itm->next ? itm->next : itm, cmd->itm, 90);
- break;
- case type_nav_left_1 :
- case type_nav_left_2 :
- case type_nav_left_3 :
- /* TRANSLATORS: "left" as in "turn left" */
- direction = g_strdup(_("left"));
- if (level == level_now)
- skip_roads = count_possible_turns(nav, cmd->prev ? cmd->prev->itm : nav->first, cmd->itm, -90);
- else if (level == level_connect)
- skip_roads = count_possible_turns(nav, itm->next ? itm->next : itm, cmd->itm, -90);
- break;
- default:
- direction = g_strdup("");
- break;
- }
- switch (cmd->maneuver->type) {
- case type_nav_right_1 :
- case type_nav_left_1 :
- /* TRANSLATORS: as in "turn easily right" */
- strength = g_strdup(_("easily "));
- break;
- case type_nav_right_3 :
- case type_nav_left_3 :
- /* TRANSLATORS: as in "turn strongly right" */
- strength = g_strdup(_("strongly "));
- break;
- default:
- strength = g_strdup("");
- break;
- }
- /* Robotaxi: todo - must tidy up skip_roads == -1 issue */
- if (skip_roads > 0) {
- if (skip_roads < 6) {
- if (level == level_connect)
- instruction = g_strdup_printf(_("then take the %1$s road to the %2$s"), get_count_str(skip_roads+1), direction);
- else
- instruction = g_strdup_printf(_("Take the %1$s road to the %2$s"), get_count_str(skip_roads+1), direction);
- /*and preserve skip_roads to signal that we already have an instruction*/
- } else {
- g_free(d);
- d=g_strdup_printf(_("after %i roads"),skip_roads);
- skip_roads = 0; /*signal an instruction still has to be created*/
- }
- }
- /* cave: no else - may come from 'if (skip_roads)' above ! */
- if (skip_roads <= 0) {
- /* TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination */
- instruction = g_strdup_printf(_("Turn %1$s%2$s %3$s%4$s"), strength, direction, d, destination);
- }
- break;
- case type_nav_turnaround_left:
- if (level == level_connect)
- /* TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included. */
- instruction = g_strdup(_("then make a U-turn|left"));
- else
- /* TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included. */
- instruction = g_strdup_printf(_("Make a U-turn %1$s|left"), d);
- break;
- case type_nav_turnaround_right:
- if (level == level_connect)
- /* TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included. */
- instruction = g_strdup(_("then make a U-turn|right"));
- else
- /* TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included. */
- instruction = g_strdup_printf(_("Make a U-turn %1$s|right"), d);
- break;
- case type_nav_none:
- /*An empty placeholder that we can use in the future for
- * some motorway commands that are now suppressed but we
- * can in some cases make it say here :
- * 'follow destination blabla' without any further driving instructions,
- * in cases where relevant destination info is available.
- * Even if there is no driving command to be announced, in some cases
- * there is an overhead roadsign in preparation of an upcoming road-split,
- * and then we can give useful info to the driver.
- *
- * UNTESTED !
- *
- */
- instruction = g_strdup(_("follow"));
- break;
- case type_nav_destination:
- /* the old code used to clear the route destination when this was the only
- * instruction left. Was that useful ?
- * Should be tested with the old code what happens if the driver
- * 'overshoots' the destination and the route destination is already cleared.
- * I suppose it will now keep guiding the user to destination untill another one
- * is set or a 'stop navigation' action is done using the gui.
- */
- if (level == level_connect)
- instruction=g_strdup(_("then you have reached your destination."));
- else
- /* TRANSLATORS: the arg. is distance */
- instruction=g_strdup_printf(_("You have reached your destination %s"), d);
- break;
- default:
- dbg(lvl_error,"unhandled instruction\n");
- break;
- }
- }
- }
- switch (level)
- {
- case level_follow:
- d=get_distance_str(nav, distance, type, 1);
- ret=g_strdup_printf(_("Follow the road for the next %s"), d);
- break;
- case level_soon:
- if (at) /* 'at' contains interchange or exit information that shall not be combined with street_destination_announce */
- ret= g_strdup_printf(("%1$s %2$s"),instruction,"");
- else
- ret= g_strdup_printf(("%1$s %2$s"),instruction,street_destination_announce);
- break;
- case level_meters:
- case level_connect:
- case level_now:
- ret= g_strdup_printf(("%1$s %2$s"),instruction,street_destination_announce);
- break;
- default :
- ret= g_strdup_printf(("%1$s %2$s"),instruction,street_destination_announce);
- dbg(lvl_error,"unexpected announcement level %d\n", level);
- break;
- }
-
- g_free(at);
- g_free(d);
- g_free(destination);
- g_free(direction);
- g_free(instruction);
- g_free(street_destination_announce);
- g_free(strength);
- return ret;
-
-}
-
-
-/**
- * @brief Creates announcements for maneuvers, plus maneuvers immediately following the next maneuver
- *
- * This function creates an announcement for the current maneuver and for maneuvers
- * immediately following that maneuver, if these are very close and we're in speech navigation.
- * The actual announcements are created by calling {@code show_maneuver()}.
- *
- * @param nav The navigation object
- * @param itm The current navigation item, which is used to determine the distance to the next
- * maneuver. In speech mode this should be set to the navigation item starting at the vehicle's
- * current position; in route description mode this should be set to the {@code navigation_item}
- * associated with the previous {@code navigation_command}
- * @param cmd The {@code navigation_command} for which to generate an announcement
- * @param type The type of announcements to generate. If set to {@code attr_navigation_speech},
- * maneuvers will be grouped ("turn left, then turn right") if we are close to the first maneuver
- * and the second maneuver is within a short distance from the first. This parameter is passed to
- * {@code show_maneuver()}, where it is evaluated again. See {@code show_maneuver()} for details.
- *
- * @return An announcement that should be made
- */
-static char *
-show_next_maneuvers(struct navigation *nav, struct navigation_itm *itm, struct navigation_command *cmd, enum attr_type type)
-{
- int distance = itm->dest_length-cmd->itm->dest_length; /* distance from e.g. current GPS position to next announced turn position */
- enum announcement_level level;
- char *ret,*buf,*next;
-
-
- if (type != attr_navigation_speech) {
- return show_maneuver(nav, itm, cmd, type, level_meters); /* We only accumulate maneuvers in speech navigation */
- }
-
-
- level = navigation_get_announce_level_cmd(nav, itm, cmd, distance-cmd->length);
-
- if (level > level_soon) {
- /* suppress the 'follow the road..' announcement, if the next 'soon' announcement is just a few meters away, so just quit */
- if ((distance - cmd->length) < (nav->announce[itm->way.item.type - route_item_first][2] + 2 * nav->announce[itm->way.item.type - route_item_first][0])) {
- /* a few meters away is defined by two times the distance of the 'now'-distance. */
- return g_strdup("");
- }
- }
- else if ((level == level_soon) && (itm->told == 1)) {
- /* suppress the 'soon' announcement, if the last announcement already concatenated this, so just quit */
- return g_strdup("");
- }
- else if ((level == level_meters) && (itm->told == 1)) {
- /* suppress the 'in xx meters..' announcement, if the 'soon' announcement is just a few meters away, so just quit */
- if ((distance - cmd->length) < (nav->announce[itm->way.item.type - route_item_first][1] + 2 * nav->announce[itm->way.item.type - route_item_first][0])) {
- /* a few meters away is defined by two times the distance of the 'now'-distance. */
- return g_strdup("");
- }
- }
-
- ret = show_maneuver(nav, itm, cmd, type, level);
-
- if (level > level_meters) {
- return ret; /* We only concatenate maneuvers that are close each other, so quit here */
- }
-
- if (cmd->next && cmd->itm) {
- /* determine the level of the command that comes immediately after that. */
- enum announcement_level nextlevel = navigation_get_announce_level(nav, cmd->itm->way.item.type, cmd->itm->dest_length - cmd->next->itm->dest_length);
-
- /* If this level starts with 1 or 0 concatenate the following announcement to the current: */
- if (nextlevel <= level_soon) {
- next = show_maneuver(nav, cmd->itm, cmd->next, type, level_connect);
- if (*next != '\0') /* is the second announcement not an empty string? */
- {
- cmd->itm->told = 1;
- buf = ret;
- ret = g_strdup_printf("%s, %s", buf, next); /* concatenate both announcements */
- g_free(buf);
- }
- g_free(next);
- }
- }
-
- return ret;
-}
-
-static void
-navigation_call_callbacks(struct navigation *this_, int force_speech)
-{
- int distance, level = 0;
- void *p=this_;
- if (!this_->cmd_first)
- return;
- callback_list_call(this_->callback, 1, &p);
- dbg(lvl_debug,"force_speech=%d turn_around=%d turn_around_limit=%d\n", force_speech, this_->turn_around, this_->turn_around_limit);
- distance=this_->first->dest_length-this_->cmd_first->itm->dest_length;
- if (this_->turn_around_limit && this_->turn_around == this_->turn_around_limit) {
- dbg(lvl_debug,"distance=%d distance_turn=%d\n", distance, this_->distance_turn);
- while (distance > this_->distance_turn) {
- this_->level_last=4;
- level=4;
- force_speech=2;
- if (this_->distance_turn >= 500)
- this_->distance_turn*=2;
- else
- this_->distance_turn=500;
- }
- } else if (!this_->turn_around_limit || this_->turn_around == -this_->turn_around_limit+1) {
- this_->distance_turn=50;
- distance-=this_->cmd_first->length;
- level=navigation_get_announce_level_cmd(this_, this_->first, this_->cmd_first, distance);
- if (level < this_->level_last) {
- /* only tell if the level is valid for more than 3 seconds */
- int speed_distance=this_->first->speed*30/36;
- if (distance < speed_distance || navigation_get_announce_level_cmd(this_, this_->first, this_->cmd_first, distance-speed_distance) == level) {
- dbg(lvl_debug,"distance %d speed_distance %d\n",distance,speed_distance);
- dbg(lvl_debug,"level %d < %d\n", level, this_->level_last);
- this_->level_last=level;
- force_speech=3;
- }
- }
- if (!item_is_equal(this_->cmd_first->itm->way.item, this_->item_last)) {
- this_->item_last=this_->cmd_first->itm->way.item;
- if (this_->delay)
- this_->curr_delay=this_->delay;
- else
- force_speech=5;
- } else {
- if (this_->curr_delay) {
- this_->curr_delay--;
- if (!this_->curr_delay)
- force_speech=4;
- }
- }
- }
- if (force_speech) {
- this_->level_last=level;
- this_->curr_delay=0;
- dbg(lvl_debug,"force_speech=%d distance=%d level=%d type=0x%x\n", force_speech, distance, level, this_->first->way.item.type);
- callback_list_call(this_->callback_speech, 1, &p);
- }
-}
-
-/**
- * @brief Cleans up and initiates maneuver creation.
- *
- * This function is called by {@link navigation_update_idle(struct navigation *)}
- * after it has retrieved all objects from the route map.
- *
- * It will reset the navigation object's idle event/callback, deallocate some temporary objects and
- * reset the {@code busy} flag. Arguments correspond to those of
- * {@link navigation_update_idle(struct navigation *)}.
- *
- * @param this_ Points to the navigation object. After the function returns, its {@code map_rect}
- * member will no longer be valid.
- * @param cancel If true, only cleanup (deallocation of objects) will be done and no maneuvers will be generated.
- * If false, maneuvers will be generated.
- */
-static void
-navigation_update_done(struct navigation *this_, int cancel) {
- int incr = 0;
- struct map_rect *mr = this_->route_mr;
- struct attr nav_status;
-
- if (this_->idle_ev)
- event_remove_idle(this_->idle_ev);
- if (this_->idle_cb)
- callback_destroy(this_->idle_cb);
- this_->idle_ev=NULL;
- this_->idle_cb=NULL;
-
- if (!cancel) {
- nav_status.type = attr_nav_status;
- nav_status.u.num = status_routing;
- if (!(this_->status_int & status_has_sitem))
- navigation_destroy_itms_cmds(this_, NULL);
- else {
- if (!(this_->status_int & status_has_ritem)) {
- navigation_itm_new(this_, NULL);
- make_maneuvers(this_,this_->route);
- }
- calculate_dest_distance(this_, incr);
- profile(0,"end");
- navigation_call_callbacks(this_, FALSE);
- }
- navigation_set_attr(this_, &nav_status);
- }
- /*
- * In order to ensure that route_mr holds either NULL or a valid pointer at any given time,
- * always pass a copy of it to map_rect_destroy() and set route_mr to NULL prior to calling
- * map_rect_destroy(). The reason is that map_rect_destroy() for a route map may indirectly
- * call navigation_update(), which will modify the same members. For the same reason,
- * status_int must be reset before the call to map_rect_destroy().
- */
- this_->status_int = status_none;
- this_->route_mr = NULL;
- map_rect_destroy(mr);
-}
-
-/**
- * @brief Idle callback function to retrieve items from the route map.
- *
- * @param this_ Points to the navigation object. The caller is responsible for initializing its
- * {@code route_mr} member. After processing completes, the {@code route_mr} member will no longer
- * be valid.
- */
-static void
-navigation_update_idle(struct navigation *this_) {
- int count = 100; /* Maximum number of items retrieved in one run of this function.
- * This should be set low enough for each pass to complete in less
- * than a second even on low-performance devices. */
- struct item *ritem; /* Holds an item from the route map */
- struct item *sitem; /* Holds the item from the actual map which corresponds to ritem */
- struct attr street_item, street_direction;
- struct navigation_itm *itm;
-
- /* Do not use the route_path_flag_cancel flag here because it is also used whenever
- * destinations or waypoints change, not just when the user stops navigation altogether
- */
- if (!route_has_graph(this_->route)) {
- navigation_update_done(this_, 1);
- return;
- }
-
- while (count > 0) {
- if (!(ritem = map_rect_get_item(this_->route_mr))) {
- this_->status_int &= ~(status_has_ritem);
- break;
- }
- this_->status_int |= status_has_ritem;
- if ((ritem)->type == type_route_start && this_->turn_around > -this_->turn_around_limit+1)
- this_->turn_around--;
- if ((ritem)->type == type_route_start_reverse && this_->turn_around < this_->turn_around_limit)
- this_->turn_around++;
- if ((ritem)->type != type_street_route)
- continue;
- if ((!(this_->status_int & status_has_sitem)) && item_attr_get(ritem, attr_street_item, &street_item)) {
- this_->status_int |= status_has_sitem;
- if (!item_attr_get(ritem, attr_direction, &street_direction))
- street_direction.u.num = 0;
- sitem = street_item.u.item;
- dbg(lvl_debug,"sitem=%p\n", sitem);
- itm = item_hash_lookup(this_->hash, sitem);
- dbg(lvl_info,"itm for item with id (0x%x,0x%x) is %p\n", sitem->id_hi, sitem->id_lo, itm);
- if (itm && itm->way.dir != street_direction.u.num) {
- dbg(lvl_info,"wrong direction\n");
- itm = NULL;
- }
- navigation_destroy_itms_cmds(this_, itm);
- if (itm) {
- navigation_itm_update(itm, ritem);
- break;
- }
- dbg(lvl_debug,"not on track\n");
- }
- navigation_itm_new(this_, ritem);
- count--;
- }
- if (count > 0) {
- /* if count > 0, one of the break conditions in the loop was true and we're done */
- navigation_update_done(this_, 0);
- return;
- }
-}
-
-/**
- * @brief Event handler for changes to the route.
- *
- * This function is added to the callback list of the current route. It is called whenever the
- * status of the route changes and will either discard the current list of maneuvers or build a new
- * list.
- *
- * @param this_ The navigation object
- * @param route The route
- * @param attr The route status attribute
- */
-static void
-navigation_update(struct navigation *this_, struct route *route, struct attr *attr)
-{
- struct map *map;
- struct attr vehicleprofile;
- struct attr nav_status;
-
- if (attr->type != attr_route_status)
- return;
-
- dbg(lvl_debug,"enter\n");
-
- nav_status.type = attr_nav_status;
- switch(attr->u.num) {
- case route_status_not_found:
- nav_status.u.num = status_no_route;
- break;
- case route_status_no_destination:
- nav_status.u.num = status_no_destination;
- break;
- case route_status_destination_set:
- nav_status.u.num = status_position_wait;
- break;
- case route_status_building_path:
- case route_status_building_graph:
- case route_status_path_done_new:
- case route_status_path_done_incremental:
- nav_status.u.num = (this_->nav_status >= status_recalculating) ? status_recalculating : status_calculating;
- }
- navigation_set_attr(this_, &nav_status);
-
- if (attr->u.num == route_status_no_destination || attr->u.num == route_status_not_found || attr->u.num == route_status_path_done_new)
- navigation_flush(this_);
- if (attr->u.num != route_status_path_done_new && attr->u.num != route_status_path_done_incremental) {
- if (this_->status_int & status_busy) {
- navigation_update_done(this_, 1);
- }
- return;
- }
-
- if (! this_->route)
- return;
- map=route_get_map(this_->route);
- if (! map)
- return;
- this_->route_mr = map_rect_new(map, NULL);
- if (! this_->route_mr)
- return;
- if (route_get_attr(route, attr_vehicleprofile, &vehicleprofile, NULL))
- this_->vehicleprofile=vehicleprofile.u.vehicleprofile;
- else
- this_->vehicleprofile=NULL;
- dbg(lvl_debug,"enter\n");
-
- this_->status_int = status_busy;
- if (route_get_flags(this_->route) & route_path_flag_async) {
- this_->idle_cb = callback_new_1(callback_cast(navigation_update_idle), this_);
- this_->idle_ev = event_add_idle(50, this_->idle_cb);
- } else {
- this_->idle_ev = NULL;
- this_->idle_cb = NULL;
- while (this_->status_int & status_busy)
- navigation_update_idle(this_);
- }
-}
-
-static void
-navigation_flush(struct navigation *this_)
-{
- navigation_destroy_itms_cmds(this_, NULL);
-}
-
-
-void
-navigation_destroy(struct navigation *this_)
-{
- navigation_flush(this_);
- item_hash_destroy(this_->hash);
- callback_list_destroy(this_->callback);
- callback_list_destroy(this_->callback_speech);
- g_free(this_);
-}
-
-/**
- * @brief Registers a new callback function.
- *
- * Callback functions are called whenever the attribute for which they are registered changes.
- * It is possible to register callbacks for {@code attr_any}, which will fire on any change.
- *
- * The {@code navigation} object has three callback lists. They differ by the arguments which are
- * passed to the callback function and are selected based on the attribute type:
- * <ul>
- * <li>Callbacks for the {@code navigation_speech} attribute are added to the
- * {@code callback_speech} list.</li>
- * <li>Callbacks for the {@code navigation_long} attribute are added to the {@code callback} list.
- * </li>
- * <li>Callbacks for any other attribute, including {@code attr_any}, are added to the list stored
- * in the {@code callback_list} attribute. This functionality is inherited from
- * {@code navit_object}.</li>
- * </ul>
- *
- * @param this_ The navigation object.
- * @param type The attribute type
- * @param cb The callback function
- *
- * @return true on success, false on failure
- */
-int
-navigation_register_callback(struct navigation *this_, enum attr_type type, struct callback *cb)
-{
- struct attr attr_cbl;
-
- if (type == attr_navigation_speech)
- callback_list_add(this_->callback_speech, cb);
- else if (type == attr_navigation_long)
- callback_list_add(this_->callback, cb);
- else {
- if (navigation_get_attr(this_, attr_callback_list, &attr_cbl, NULL))
- callback_list_add(attr_cbl.u.callback_list, cb);
- else
- return 0;
- }
- return 1;
-}
-
-/**
- * @brief Unregisters a callback function.
- *
- * This function removes a previously registered callback function from the callback list to which
- * it was added. See the documentation on
- * {@link navigation_register_callback(struct navigation *, enum attr_type, struct callback *)} for
- * details on callback lists.
- *
- * @param this_ The navigation object.
- * @param type The attribute type
- * @param cb The callback function
- */
-void
-navigation_unregister_callback(struct navigation *this_, enum attr_type type, struct callback *cb)
-{
- struct attr attr_cbl;
-
- if (type == attr_navigation_speech)
- callback_list_remove(this_->callback_speech, cb);
- else if (type == attr_navigation_long)
- callback_list_remove(this_->callback, cb);
- else if (navigation_get_attr(this_, attr_callback_list, &attr_cbl, NULL))
- callback_list_remove(attr_cbl.u.callback_list, cb);
-}
-
-struct map *
-navigation_get_map(struct navigation *this_)
-{
- struct attr *attrs[5];
- struct attr type,navigation,data,description;
- type.type=attr_type;
- type.u.str="navigation";
- navigation.type=attr_navigation;
- navigation.u.navigation=this_;
- data.type=attr_data;
- data.u.str="";
- description.type=attr_description;
- description.u.str="Navigation";
-
- attrs[0]=&type;
- attrs[1]=&navigation;
- attrs[2]=&data;
- attrs[3]=&description;
- attrs[4]=NULL;
- if (! this_->map)
- this_->map=map_new(NULL, attrs);
- return this_->map;
-}
-
-struct map_priv {
- struct navigation *navigation;
-};
-
-struct map_rect_priv {
- struct navigation *nav;
- struct navigation_command *cmd;
- struct navigation_command *cmd_next;
- struct navigation_itm *itm;
- struct navigation_itm *itm_next;
- struct navigation_itm *cmd_itm;
- struct navigation_itm *cmd_itm_next;
- struct item item;
- enum attr_type attr_next;
- int ccount;
- int debug_idx;
- struct navigation_way *ways;
- int show_all;
- char *str;
-};
-
-static int
-navigation_map_item_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *this=priv_data;
- if (this->ccount || ! count)
- return 0;
- *c=this->itm->start;
- this->ccount=1;
- return 1;
-}
-
-static void
-navigation_map_item_coord_rewind(void *priv_data)
-{
- struct map_rect_priv *this=priv_data;
- this->ccount=0;
-}
-
-
-static int
-navigation_map_item_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *this_=priv_data;
- struct navigation_command *cmd=this_->cmd;
- struct navigation_maneuver *maneuver = NULL;
- struct navigation_itm *itm=this_->itm;
- struct navigation_itm *prev=itm->prev;
- char *exit_announce=NULL;
- attr->type=attr_type;
-
- if (this_->str) {
- g_free(this_->str);
- this_->str=NULL;
- }
-
- if (cmd) {
- if (cmd->itm != itm)
- cmd=NULL;
- }
- if (cmd && cmd->maneuver)
- maneuver = cmd->maneuver;
- switch(attr_type) {
- case attr_level:
- if (cmd) {
- int distance=this_->cmd_itm->dest_length-cmd->itm->dest_length;
- distance=round_distance(distance);
- attr->u.num=navigation_get_announce_level(this_->nav, this_->cmd_itm->way.item.type, distance-cmd->length);
- return 1;
- }
- return 0;
- case attr_navigation_short:
- this_->attr_next=attr_navigation_long;
- if (cmd) {
- this_->str=attr->u.str=show_next_maneuvers(this_->nav, this_->cmd_itm, cmd, attr_type);
- return 1;
- }
- return 0;
- case attr_navigation_long:
- this_->attr_next=attr_navigation_long_exact;
- if (cmd) {
- this_->str=attr->u.str=show_next_maneuvers(this_->nav, this_->cmd_itm, cmd, attr_type);
- return 1;
- }
- return 0;
- case attr_navigation_long_exact:
- this_->attr_next=attr_navigation_speech;
- if (cmd) {
- this_->str=attr->u.str=show_next_maneuvers(this_->nav, this_->cmd_itm, cmd, attr_type);
- return 1;
- }
- return 0;
- case attr_navigation_speech:
- this_->attr_next=attr_length;
- if (cmd) {
- this_->str=attr->u.str=show_next_maneuvers(this_->nav, this_->cmd_itm, this_->cmd, attr_type);
- return 1;
- }
- return 0;
- case attr_length:
- this_->attr_next=attr_time;
- if (cmd) {
- attr->u.num=this_->cmd_itm->dest_length-cmd->itm->dest_length;
- return 1;
- }
- return 0;
- case attr_time:
- this_->attr_next=attr_destination_length;
- if (cmd) {
- attr->u.num=this_->cmd_itm->dest_time-cmd->itm->dest_time;
- return 1;
- }
- return 0;
- case attr_destination_length:
- attr->u.num=itm->dest_length;
- this_->attr_next=attr_destination_time;
- return 1;
- case attr_destination_time:
- attr->u.num=itm->dest_time;
- this_->attr_next=attr_street_name;
- return 1;
- case attr_street_name:
- attr->u.str=itm->way.name;
- this_->attr_next=attr_street_name_systematic;
- if (attr->u.str){
- return 1;}
- return 0;
- case attr_street_name_systematic:
- attr->u.str=itm->way.name_systematic;
- this_->attr_next=attr_street_destination;
- if (attr->u.str){
- return 1;}
- return 0;
- case attr_street_destination:
- this_->attr_next=attr_name;
- if (cmd && itm->way.destination && itm->way.destination->destination)
- this_->str=attr->u.str=select_announced_destinations(cmd);
- else attr->u.str=NULL;
- if (attr->u.str){
- return 1;}
- return 0;
-
- case attr_name:
- /* attr_name returns exit_ref and exit_label if available,
- * preceded by the word 'exit' or 'interchange'.
- *
- * Otherwise it returns street name and name_systematic, if available
- *
- * FIXME should a new attr. be defined for this, and if yes, which ?
- */
- this_->attr_next=attr_debug;
- attr->u.str=NULL;
- exit_announce = navigation_cmd_get_exit_announce(cmd, NULL);
- if (exit_announce && maneuver)
- /* TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East" */
- this_->str=attr->u.str=g_strdup_printf("%s %s", maneuver->merge_or_exit & mex_interchange ? (_("Interchange")) : (_("Exit")),
- exit_announce ? exit_announce : "");
- else if (itm->way.name || itm->way.name_systematic)
- this_->str=attr->u.str=g_strdup_printf("%s %s",
- itm->way.name ? itm->way.name : "",itm->way.name_systematic ? itm->way.name_systematic : "");
- if (attr->u.str){
- return 1;}
- return 0;
- case attr_debug:
- switch(this_->debug_idx) {
- case 0:
- this_->debug_idx++;
- this_->str=attr->u.str=g_strdup_printf("angle:%d (- %d)", itm->way.angle2, itm->angle_end);
- return 1;
- case 1:
- this_->debug_idx++;
- this_->str=attr->u.str=g_strdup_printf("item type:%s", item_to_name(itm->way.item.type));
- return 1;
- case 2:
- this_->debug_idx++;
- if (cmd) {
- this_->str=attr->u.str=g_strdup_printf("delta:%d", cmd->delta);
- return 1;
- }
- case 3:
- this_->debug_idx++;
- if (prev) {
- this_->str=attr->u.str=g_strdup_printf("prev street_name:%s", prev->way.name);
- return 1;
- }
- case 4:
- this_->debug_idx++;
- if (prev) {
- this_->str=attr->u.str=g_strdup_printf("prev street_name_systematic:%s", prev->way.name_systematic);
- return 1;
- }
- case 5:
- this_->debug_idx++;
- if (prev) {
- this_->str=attr->u.str=g_strdup_printf("prev angle:(%d -) %d", prev->way.angle2, prev->angle_end);
- return 1;
- }
- case 6:
- this_->debug_idx++;
- this_->ways=itm->way.next;
- if (prev) {
- this_->str=attr->u.str=g_strdup_printf("prev item type:%s", item_to_name(prev->way.item.type));
- return 1;
- }
- case 7:
- if (this_->ways && prev) {
- this_->str=attr->u.str=g_strdup_printf("other item angle:%d delta:%d flags:%d dir:%d type:%s id:(0x%x,0x%x)", this_->ways->angle2, angle_delta(prev->angle_end, this_->ways->angle2), this_->ways->flags, this_->ways->dir, item_to_name(this_->ways->item.type), this_->ways->item.id_hi, this_->ways->item.id_lo);
- this_->ways=this_->ways->next;
- return 1;
- }
- this_->debug_idx++;
- case 8:
- this_->debug_idx++;
- if (prev) {
- struct navigation_maneuver *maneuver = NULL;
- maneuver_required2(this_->nav, prev, itm, &maneuver);
- this_->str=attr->u.str=g_strdup_printf("type: %s, is_complex_t_junction: %d, is_same_street: %d, is_unambiguous: %d, merge_or_exit: %d, old_cat: %d, new_cat: %d, max_cat: %d, num_options: %d, num_similar_ways: %d, num_new_motorways: %d, num_other_ways: %d, left: %d, right: %d, delta: %d",
- item_to_name(maneuver->type),
- maneuver->is_complex_t_junction,
- maneuver->is_same_street,
- maneuver->is_unambiguous,
- maneuver->merge_or_exit,
- maneuver->old_cat,
- maneuver->new_cat,
- maneuver->max_cat,
- maneuver->num_options,
- maneuver->num_similar_ways,
- maneuver->num_new_motorways,
- maneuver->num_other_ways,
- maneuver->left,
- maneuver->right,
- maneuver->delta);
- return 1;
- }
-
- default:
- this_->attr_next=attr_none;
- return 0;
- }
- case attr_any:
- while (this_->attr_next != attr_none) {
- if (navigation_map_item_attr_get(priv_data, this_->attr_next, attr))
- return 1;
- }
- return 0;
- default:
- attr->type=attr_none;
- return 0;
- }
-}
-
-static void
-navigation_map_item_attr_rewind(void *priv_data)
-{
- struct map_rect_priv *priv = priv_data;
- priv->debug_idx=0;
- priv->attr_next=attr_navigation_short;
-}
-
-static struct item_methods navigation_map_item_methods = {
- navigation_map_item_coord_rewind,
- navigation_map_item_coord_get,
- navigation_map_item_attr_rewind,
- navigation_map_item_attr_get,
-};
-
-
-static void
-navigation_map_destroy(struct map_priv *priv)
-{
- g_free(priv);
-}
-
-static void
-navigation_map_rect_init(struct map_rect_priv *priv)
-{
- priv->cmd_next=priv->nav->cmd_first;
- priv->cmd_itm_next=priv->itm_next=priv->nav->first;
-}
-
-static struct map_rect_priv *
-navigation_map_rect_new(struct map_priv *priv, struct map_selection *sel)
-{
- struct navigation *nav=priv->navigation;
- struct map_rect_priv *ret=g_new0(struct map_rect_priv, 1);
- ret->nav=nav;
- navigation_map_rect_init(ret);
- ret->item.meth=&navigation_map_item_methods;
- ret->item.priv_data=ret;
-#ifdef DEBUG
- ret->show_all=1;
-#endif
- return ret;
-}
-
-static void
-navigation_map_rect_destroy(struct map_rect_priv *priv)
-{
- g_free(priv->str);
- g_free(priv);
-}
-
-/**
- * @brief Gets the next item from the navigation map.
- *
- * This function returns an item from a map rectangle on the navigation map and advances the item pointer,
- * so that at the next call the next item will be returned.
- *
- * The {@code type} member of the result, which indicates the type of maneuver, is generally copied over from
- * {@code maneuver->type}, though some exceptions apply: The first item in the map will have a type of
- * {@code nav_position} and the last one will have a type of {@code nav_destination}.
- * If {@code maneuver->merge_or_exit} indicates a merge or exit, the result will be of the corresponding
- * merge or exit type.
- *
- * Earlier versions of Navit had the entire logic for setting the maneuver type in this function, but this has
- * been moved to {@code command_new()} so that other functions can use the same results.
- *
- * @param priv The {@code struct map_rect_priv} of the map rect on the navigation map from which an item
- * is to be retrieved.
- *
- * @return The item, or NULL if there are no more items in the map rectangle
- */
-static struct item *
-navigation_map_get_item(struct map_rect_priv *priv)
-{
- struct item *ret=&priv->item;
- if (!priv->itm_next)
- return NULL;
- priv->itm=priv->itm_next;
- priv->cmd=priv->cmd_next;
- priv->cmd_itm=priv->cmd_itm_next;
- if (!priv->cmd)
- return NULL;
- if (!priv->show_all && priv->itm->prev != NULL)
- priv->itm=priv->cmd->itm;
- priv->itm_next=priv->itm->next;
- if (priv->itm->prev)
- ret->type=type_nav_none;
- else
- ret->type=type_nav_position;
- if (priv->cmd->itm == priv->itm) {
- priv->cmd_itm_next=priv->cmd->itm;
- priv->cmd_next=priv->cmd->next;
- if (priv->cmd_itm_next && !priv->cmd_itm_next->next)
- ret->type=type_nav_destination; /* FIXME: do we need to set that here? The generic case should catch that now... */
- else if (priv->cmd->maneuver && ((priv->cmd->maneuver->type != type_nav_none) || (priv->cmd->maneuver->merge_or_exit & (mex_merge | mex_exit)))) {
- /* if maneuver type or merge_or_exit is set, use these values */
- /* FIXME: make decision to use merge_or_exit context-dependent */
- switch (priv->cmd->maneuver->merge_or_exit) {
- case mex_merge_left:
- ret->type=type_nav_merge_left;
- break;
- case mex_merge_right:
- ret->type=type_nav_merge_right;
- break;
- case mex_exit_left:
- ret->type=type_nav_exit_left;
- break;
- case mex_exit_right:
- ret->type=type_nav_exit_right;
- break;
- default:
- /* exit or merge without a direction should never happen,
- * mex_intersection results in a regular instruction,
- * thus all these are handled by the default case,
- * which is to return the type field */
- ret->type = priv->cmd->maneuver->type;
- }
- } /* else if priv->cmd->maneuver ... */
- } /* if priv->cmd->itm == priv->itm */
- navigation_map_item_coord_rewind(priv);
- navigation_map_item_attr_rewind(priv);
-
- ret->id_lo=priv->itm->dest_count;
- dbg(lvl_debug,"type=%d\n", ret->type);
- return ret;
-}
-
-/**
- * @brief Gets the item with the specified ID from the navigation map.
- *
- * This function returns the item with the ID specified in the arguments from a map rectangle on the
- * navigation map.
- *
- * Internally the function calls {@code navigation_map_get_item()}, thus the same logic applies for the
- * data of the item that is returned. See {@code navigation_map_get_item()} for details.
- *
- * The item pointer of the map rectangle will be moved so that a subsequent call to {@code navigation_map_get_item()}
- * will return the next item following the one returned by this function.
- *
- * @param priv The {@code struct map_rect_priv} of the map rect on the navigation map from which an item
- * is to be retrieved.
- * @param id_hi The high part of the ID
- * @param id_lo The low part of the ID
- *
- * @return The item, or NULL if an item with the ID specified was not found in the map rectangle
- */
-static struct item *
-navigation_map_get_item_byid(struct map_rect_priv *priv, int id_hi, int id_lo)
-{
- struct item *ret;
- navigation_map_rect_init(priv);
- while ((ret=navigation_map_get_item(priv))) {
- if (ret->id_hi == id_hi && ret->id_lo == id_lo)
- return ret;
- }
- return NULL;
-}
-
-static struct map_methods navigation_map_meth = {
- projection_mg,
- "utf-8",
- navigation_map_destroy,
- navigation_map_rect_new,
- navigation_map_rect_destroy,
- navigation_map_get_item,
- navigation_map_get_item_byid,
- NULL,
- NULL,
- NULL,
-};
-
-static struct map_priv *
-navigation_map_new(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct map_priv *ret;
- struct attr *navigation_attr;
-
- navigation_attr=attr_search(attrs, NULL, attr_navigation);
- if (! navigation_attr)
- return NULL;
- ret=g_new0(struct map_priv, 1);
- *meth=navigation_map_meth;
- ret->navigation=navigation_attr->u.navigation;
-
- return ret;
-}
-
-void
-navigation_set_route(struct navigation *this_, struct route *route)
-{
- struct attr callback;
- if (!this_->route_cb)
- this_->route_cb=callback_new_attr_1(callback_cast(navigation_update), attr_route_status, this_);
- callback.type=attr_callback;
- callback.u.callback=this_->route_cb;
- if (this_->route)
- route_remove_attr(this_->route, &callback);
- this_->route=route;
- if (this_->route) {
- struct attr route_status;
- route_add_attr(this_->route, &callback);
- if (route_get_attr(this_->route, attr_route_status, &route_status, NULL))
- navigation_update(this_, this_->route, &route_status);
- }
-}
-
-void
-navigation_init(void)
-{
- plugin_register_category_map("navigation", navigation_map_new);
-}
-
-struct object_func navigation_func = {
- attr_navigation,
- (object_func_new)navigation_new,
- (object_func_get_attr)navigation_get_attr,
- (object_func_iter_new)navit_object_attr_iter_new,
- (object_func_iter_destroy)navit_object_attr_iter_destroy,
- (object_func_set_attr)navigation_set_attr,
- (object_func_add_attr)navit_object_add_attr,
- (object_func_remove_attr)navit_object_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)navigation_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
-
diff --git a/navit/navigation.h b/navit/navigation.h
deleted file mode 100644
index 28faa015c..000000000
--- a/navit/navigation.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_NAVIGATION_H
-#define NAVIT_NAVIGATION_H
-
-#define FEET_PER_METER 3.2808399
-#define FEET_PER_MILE 5280
-#define METERS_PER_MILE 1609
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * Values for the {@code nav_status} attribute
- */
-enum nav_status {
- status_invalid = -2, /*!< Status is unknown. The {@code nav_status} attribute will never return this
- value but code that listens to changes to this attribute may use this value
- as a placeholder until the first actual status has been obtained. */
- status_no_route = -1, /*!< No route was found */
- status_no_destination = 0, /*!< No destination set, not routing */
- status_position_wait = 1, /*!< Destination is set but current position is unknown */
- status_calculating = 2, /*!< A new route is being calculated and turn instructions are being generated */
- status_recalculating = 3, /*!< The existing route is being recalculated, along with its turn instructions.
- Note that as the vehicle follows a route, status will flip between
- {@code status_routing} and {@code status_recalculating} with every position
- update. */
- status_routing = 4, /*!< A route with turn instructions has been calculated and the user is being
- guided along it */
-};
-
-
-/* prototypes */
-enum attr_type;
-enum item_type;
-struct attr;
-struct attr_iter;
-struct callback;
-struct map;
-struct navigation;
-struct route;
-char *nav_status_to_text(int status);
-int navigation_get_attr(struct navigation *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int navigation_set_attr(struct navigation *this_, struct attr *attr);
-struct navigation *navigation_new(struct attr *parent, struct attr **attrs);
-int navigation_set_announce(struct navigation *this_, enum item_type type, int *level);
-void navigation_destroy(struct navigation *this_);
-int navigation_register_callback(struct navigation *this_, enum attr_type type, struct callback *cb);
-void navigation_unregister_callback(struct navigation *this_, enum attr_type type, struct callback *cb);
-struct map *navigation_get_map(struct navigation *this_);
-void navigation_set_route(struct navigation *this_, struct route *route);
-void navigation_init(void);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/navit.c b/navit/navit.c
deleted file mode 100644
index fa2db9926..000000000
--- a/navit/navit.c
+++ /dev/null
@@ -1,3722 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2009 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.
- */
-
-#define _USE_MATH_DEFINES 1
-#include "config.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <string.h>
-#include <fcntl.h>
-#include <glib.h>
-#include <math.h>
-#include <time.h>
-#include "debug.h"
-#include "navit.h"
-#include "callback.h"
-#include "gui.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "projection.h"
-#include "map.h"
-#include "mapset.h"
-#include "main.h"
-#include "coord.h"
-#include "point.h"
-#include "transform.h"
-#include "param.h"
-#include "menu.h"
-#include "graphics.h"
-#include "popup.h"
-#include "data_window.h"
-#include "route.h"
-#include "navigation.h"
-#include "speech.h"
-#include "track.h"
-#include "vehicle.h"
-#include "layout.h"
-#include "log.h"
-#include "attr.h"
-#include "event.h"
-#include "file.h"
-#include "profile.h"
-#include "command.h"
-#include "navit_nls.h"
-#include "map.h"
-#include "util.h"
-#include "messages.h"
-#include "vehicleprofile.h"
-#include "sunriset.h"
-#include "bookmarks.h"
-#ifdef HAVE_API_WIN32_BASE
-#include <windows.h>
-#include "util.h"
-#endif
-#ifdef HAVE_API_WIN32_CE
-#include "libc.h"
-#endif
-
-/* define string for bookmark handling */
-#define TEXTFILE_COMMENT_NAVI_STOPPED "# navigation stopped\n"
-
-/**
- * @defgroup navit The navit core instance
- * @brief navit is the object containing most global data structures.
- *
- * Among others:
- * - a set of maps
- * - one or more vehicles
- * - a graphics object for rendering the map
- * - a gui object for displaying the user interface
- * - a route object
- * - a navigation object
- * @{
- */
-
-//! The vehicle used for navigation.
-struct navit_vehicle {
- int follow;
- /*! Limit of the follow counter. See navit_add_vehicle */
- int follow_curr;
- /*! Deprecated : follow counter itself. When it reaches 'update' counts, map is recentered*/
- struct coord coord;
- int dir;
- int speed;
- struct coord last; /*< Position of the last update of this vehicle */
- struct vehicle *vehicle;
- struct attr callback;
- int animate_cursor;
-};
-
-struct navit {
- NAVIT_OBJECT
- struct attr self;
- GList *mapsets;
- GList *layouts;
- struct gui *gui;
- struct layout *layout_current;
- struct graphics *gra;
- struct action *action;
- struct transformation *trans, *trans_cursor;
- struct compass *compass;
- struct route *route;
- struct navigation *navigation;
- struct speech *speech;
- struct tracking *tracking;
- int ready;
- struct window *win;
- struct displaylist *displaylist;
- int tracking_flag;
- int orientation;
- int recentdest_count;
- int osd_configuration;
- GList *vehicles;
- GList *windows_items;
- struct navit_vehicle *vehicle;
- struct callback_list *attr_cbl;
- struct callback *nav_speech_cb, *roadbook_callback, *popup_callback, *route_cb, *progress_cb;
- struct datawindow *roadbook_window;
- struct map *former_destination;
- struct point pressed, last, current;
- int button_pressed,moved,popped,zoomed;
- int center_timeout;
- int autozoom_secs;
- int autozoom_min;
- int autozoom_max;
- int autozoom_active;
- int autozoom_paused;
- struct event_timeout *button_timeout, *motion_timeout;
- struct callback *motion_timeout_callback;
- int ignore_button;
- int ignore_graphics_events;
- struct log *textfile_debug_log;
- struct pcoord destination;
- int destination_valid;
- int blocked; /**< Whether draw operations are currently blocked. This can be a combination of the
- following flags:
- 1: draw operations are blocked
- 2: draw operations are pending, requiring a redraw once draw operations are unblocked */
- int w,h;
- int drag_bitmap;
- int use_mousewheel;
- struct messagelist *messages;
- struct callback *resize_callback,*button_callback,*motion_callback,*predraw_callback;
- struct vehicleprofile *vehicleprofile;
- GList *vehicleprofiles;
- int pitch;
- int follow_cursor;
- int prevTs;
- int graphics_flags;
- int zoom_min, zoom_max;
- int radius;
- struct bookmarks *bookmarks;
- int flags;
- /* 1=No graphics ok */
- /* 2=No gui ok */
- int border;
- int imperial;
- int waypoints_flag;
- struct coord_geo center;
- int auto_switch; /*auto switching between day/night layout enabled ?*/
-};
-
-struct gui *main_loop_gui;
-
-struct attr_iter {
- void *iter;
- union {
- GList *list;
- struct mapset_handle *mapset_handle;
- } u;
-};
-
-static void navit_vehicle_update_position(struct navit *this_, struct navit_vehicle *nv);
-static void navit_vehicle_draw(struct navit *this_, struct navit_vehicle *nv, struct point *pnt);
-static int navit_add_vehicle(struct navit *this_, struct vehicle *v);
-static int navit_set_attr_do(struct navit *this_, struct attr *attr, int init);
-static int navit_get_cursor_pnt(struct navit *this_, struct point *p, int keep_orientation, int *dir);
-static void navit_set_cursors(struct navit *this_);
-static void navit_cmd_zoom_to_route(struct navit *this);
-static void navit_cmd_set_center_cursor(struct navit *this_);
-static void navit_cmd_announcer_toggle(struct navit *this_);
-static void navit_set_vehicle(struct navit *this_, struct navit_vehicle *nv);
-static int navit_set_vehicleprofile(struct navit *this_, struct vehicleprofile *vp);
-static void navit_cmd_switch_layout_day_night(struct navit *this_, char *function, struct attr **in, struct attr ***out, int valid);
-struct object_func navit_func;
-
-struct navit *global_navit;
-
-void
-navit_add_mapset(struct navit *this_, struct mapset *ms)
-{
- this_->mapsets = g_list_append(this_->mapsets, ms);
-}
-
-struct mapset *
-navit_get_mapset(struct navit *this_)
-{
- if(this_->mapsets){
- return this_->mapsets->data;
- } else {
- dbg(lvl_error,"No mapsets enabled! Is it on purpose? Navit can't draw a map. Please check your navit.xml\n");
- }
- return NULL;
-}
-
-struct tracking *
-navit_get_tracking(struct navit *this_)
-{
- return this_->tracking;
-}
-
-/**
- * @brief Get the user data directory.
- * @param[in] create - create the directory if it does not exist
- *
- * @return char * to the data directory string.
- *
- * returns the directory used to store user data files (center.txt,
- * destination.txt, bookmark.txt, ...)
- *
- */
-char*
-navit_get_user_data_directory(int create) {
- char *dir;
- dir = getenv("NAVIT_USER_DATADIR");
- if (create && !file_exists(dir)) {
- dbg(lvl_debug,"creating dir %s\n", dir);
- if (file_mkdir(dir,0)) {
- dbg(lvl_error,"failed creating dir %s\n", dir);
- return NULL;
- }
- }
- return dir;
-}
-
-
-void
-navit_draw_async(struct navit *this_, int async)
-{
-
- if (this_->blocked) {
- this_->blocked |= 2;
- return;
- }
- transform_setup_source_rect(this_->trans);
- graphics_draw(this_->gra, this_->displaylist, this_->mapsets->data, this_->trans, this_->layout_current, async, NULL, this_->graphics_flags|1);
-}
-
-void
-navit_draw(struct navit *this_)
-{
- if (this_->ready == 3)
- navit_draw_async(this_, 0);
-}
-
-int
-navit_get_ready(struct navit *this_)
-{
- return this_->ready;
-}
-
-
-
-void
-navit_draw_displaylist(struct navit *this_)
-{
- if (this_->ready == 3)
- graphics_displaylist_draw(this_->gra, this_->displaylist, this_->trans, this_->layout_current, this_->graphics_flags|1);
-}
-
-static void
-navit_map_progress(struct navit *this_)
-{
- struct map *map;
- struct mapset *ms;
- struct mapset_handle *msh;
- struct attr attr;
- struct point p;
- if (this_->ready != 3)
- return;
- p.x=10;
- p.y=32;
-
- ms=this_->mapsets->data;
- msh=mapset_open(ms);
- while (msh && (map=mapset_next(msh, 0))) {
- if (map_get_attr(map, attr_progress, &attr, NULL)) {
- char *str=g_strdup_printf("%s ",attr.u.str);
- graphics_draw_mode(this_->gra, draw_mode_begin);
- graphics_draw_text_std(this_->gra, 16, str, &p);
- g_free(str);
- p.y+=32;
- graphics_draw_mode(this_->gra, draw_mode_end);
- }
- }
- mapset_close(msh);
-}
-
-static void
-navit_redraw_route(struct navit *this_, struct route *route, struct attr *attr)
-{
- int updated;
- if (attr->type != attr_route_status)
- return;
- updated=attr->u.num;
- if (this_->ready != 3)
- return;
- if (updated != route_status_path_done_new)
- return;
- if (this_->vehicle) {
- if (this_->vehicle->follow_curr == 1)
- return;
- if (this_->vehicle->follow_curr <= this_->vehicle->follow)
- this_->vehicle->follow_curr=this_->vehicle->follow;
- }
- navit_draw(this_);
-}
-
-void
-navit_handle_resize(struct navit *this_, int w, int h)
-{
- struct map_selection sel;
- int callback=(this_->ready == 1);
- this_->ready |= 2;
- memset(&sel, 0, sizeof(sel));
- this_->w=w;
- this_->h=h;
- sel.u.p_rect.rl.x=w;
- sel.u.p_rect.rl.y=h;
- transform_set_screen_selection(this_->trans, &sel);
- graphics_init(this_->gra);
- graphics_set_rect(this_->gra, &sel.u.p_rect);
- if (callback)
- callback_list_call_attr_1(this_->attr_cbl, attr_graphics_ready, this_);
- if (this_->ready == 3)
- navit_draw_async(this_, 1);
-}
-
-static void
-navit_resize(void *data, int w, int h)
-{
- struct navit *this=data;
- if (!this->ignore_graphics_events)
- navit_handle_resize(this, w, h);
-}
-
-int
-navit_get_width(struct navit *this_)
-{
- return this_->w;
-}
-
-
-int
-navit_get_height(struct navit *this_)
-{
- return this_->h;
-}
-
-static void
-navit_popup(void *data)
-{
- struct navit *this_=data;
- popup(this_, 1, &this_->pressed);
- this_->button_timeout=NULL;
- this_->popped=1;
-}
-
-
-/**
- * @brief Sets a flag indicating that the current button event should be ignored by subsequent handlers.
- *
- * Calling this function will set the {@code ignore_button} member to {@code true} and return its previous state.
- * The default handler, {@link navit_handle_button(navit *, int, int, point *, callback *)} calls this function
- * just before the actual event handling core and aborts if the result is {@code true}. In order to prevent
- * multiple handlers from firing on a single event, custom button click handlers should implement the same logic
- * for events they wish to handle.
- *
- * If a handler wishes to pass down an event to other handlers, it must abort without calling this function.
- *
- * @param this_ The navit instance
- * @return {@code true} if the caller should ignore the button event, {@code false} if it should handle it
- */
-int
-navit_ignore_button(struct navit *this_)
-{
- if (this_->ignore_button)
- return 1;
- this_->ignore_button=1;
- return 0;
-}
-
-void
-navit_ignore_graphics_events(struct navit *this_, int ignore)
-{
- this_->ignore_graphics_events=ignore;
-}
-
-static int
-navit_restrict_to_range(int value, int min, int max){
- if (value>max) {
- value = max;
- }
- if (value<min) {
- value = min;
- }
- return value;
-}
-
-static void
-navit_restrict_map_center_to_world_boundingbox(struct transformation *tr, struct coord *new_center){
- new_center->x = navit_restrict_to_range(new_center->x, WORLD_BOUNDINGBOX_MIN_X, WORLD_BOUNDINGBOX_MAX_X);
- new_center->y = navit_restrict_to_range(new_center->y, WORLD_BOUNDINGBOX_MIN_Y, WORLD_BOUNDINGBOX_MAX_Y);
-}
-
-/**
- * @brief Change map center position by translating from "old" to "new".
- */
-static void
-update_transformation(struct transformation *tr, struct point *old, struct point *new)
-{
- /* Code for rotation was removed in rev. 5252; see Trac #1078. */
- struct coord coord_old,coord_new;
- struct coord center_new,*center_old;
- if (!transform_reverse(tr, old, &coord_old))
- return;
- if (!transform_reverse(tr, new, &coord_new))
- return;
- center_old=transform_get_center(tr);
- center_new.x=center_old->x+coord_old.x-coord_new.x;
- center_new.y=center_old->y+coord_old.y-coord_new.y;
- navit_restrict_map_center_to_world_boundingbox(tr, &center_new);
- dbg(lvl_debug,"change center from 0x%x,0x%x to 0x%x,0x%x\n", center_old->x, center_old->y, center_new.x, center_new.y);
- transform_set_center(tr, &center_new);
-}
-
-void
-navit_set_timeout(struct navit *this_)
-{
- struct attr follow;
- follow.type=attr_follow;
- follow.u.num=this_->center_timeout;
- navit_set_attr(this_, &follow);
-}
-
-int
-navit_handle_button(struct navit *this_, int pressed, int button, struct point *p, struct callback *popup_callback)
-{
- int border=16;
-
- dbg(lvl_debug,"button %d %s (ignore: %d)\n",button,pressed?"pressed":"released",this_->ignore_button);
- callback_list_call_attr_4(this_->attr_cbl, attr_button, this_, GINT_TO_POINTER(pressed), GINT_TO_POINTER(button), p);
- if (this_->ignore_button) {
- this_->ignore_button=0;
- return 0;
- }
- if (pressed) {
- this_->pressed=*p;
- this_->last=*p;
- this_->zoomed=0;
- if (button == 1) {
- this_->button_pressed=1;
- this_->moved=0;
- this_->popped=0;
- if (popup_callback)
- this_->button_timeout=event_add_timeout(500, 0, popup_callback);
- }
- if (button == 2)
- navit_set_center_screen(this_, p, 1);
- if (button == 3)
- popup(this_, button, p);
- if (button == 4 && this_->use_mousewheel) {
- this_->zoomed = 1;
- navit_zoom_in(this_, 2, p);
- }
- if (button == 5 && this_->use_mousewheel) {
- this_->zoomed = 1;
- navit_zoom_out(this_, 2, p);
- }
- } else {
-
- this_->button_pressed=0;
- if (this_->button_timeout) {
- event_remove_timeout(this_->button_timeout);
- this_->button_timeout=NULL;
- if (! this_->moved && ! transform_within_border(this_->trans, p, border)) {
- navit_set_center_screen(this_, p, !this_->zoomed);
- }
- }
- if (this_->motion_timeout) {
- event_remove_timeout(this_->motion_timeout);
- this_->motion_timeout=NULL;
- }
- if (this_->moved) {
- dbg(lvl_debug, "mouse drag (%d, %d)->(%d, %d)\n", this_->pressed.x, this_->pressed.y, p->x, p->y);
- update_transformation(this_->trans, &this_->pressed, p);
- graphics_draw_drag(this_->gra, NULL);
- transform_copy(this_->trans, this_->trans_cursor);
- graphics_overlay_disable(this_->gra, 0);
- if (!this_->zoomed)
- navit_set_timeout(this_);
- navit_draw(this_);
- } else
- return 1;
- }
- return 0;
-}
-
-static void
-navit_button(void *data, int pressed, int button, struct point *p)
-{
- struct navit *this=data;
- dbg(lvl_debug,"enter %d %d ignore %d\n",pressed,button,this->ignore_graphics_events);
- if (!this->ignore_graphics_events) {
- if (! this->popup_callback)
- this->popup_callback=callback_new_1(callback_cast(navit_popup), this);
- navit_handle_button(this, pressed, button, p, this->popup_callback);
- }
-}
-
-
-static void
-navit_motion_timeout(struct navit *this_)
-{
- int dx, dy;
-
- if (this_->drag_bitmap) {
- struct point point;
- point.x=(this_->current.x-this_->pressed.x);
- point.y=(this_->current.y-this_->pressed.y);
- if (graphics_draw_drag(this_->gra, &point)) {
- graphics_overlay_disable(this_->gra, 1);
- graphics_draw_mode(this_->gra, draw_mode_end);
- this_->moved=1;
- this_->motion_timeout=NULL;
- return;
- }
- }
- dx=(this_->current.x-this_->last.x);
- dy=(this_->current.y-this_->last.y);
- if (dx || dy) {
- struct transformation *tr;
- this_->last=this_->current;
- graphics_overlay_disable(this_->gra, 1);
- tr=transform_dup(this_->trans);
- update_transformation(tr, &this_->pressed, &this_->current);
- graphics_draw_cancel(this_->gra, this_->displaylist);
- graphics_displaylist_draw(this_->gra, this_->displaylist, tr, this_->layout_current, this_->graphics_flags|512);
- transform_destroy(tr);
- this_->moved=1;
- }
- this_->motion_timeout=NULL;
- return;
-}
-
-void
-navit_handle_motion(struct navit *this_, struct point *p)
-{
- int dx, dy;
-
- if (this_->button_pressed && !this_->popped) {
- dx=(p->x-this_->pressed.x);
- dy=(p->y-this_->pressed.y);
- if (dx < -8 || dx > 8 || dy < -8 || dy > 8) {
- this_->moved=1;
- if (this_->button_timeout) {
- event_remove_timeout(this_->button_timeout);
- this_->button_timeout=NULL;
- }
- this_->current=*p;
- if (! this_->motion_timeout_callback)
- this_->motion_timeout_callback=callback_new_1(callback_cast(navit_motion_timeout), this_);
- if (! this_->motion_timeout)
- this_->motion_timeout=event_add_timeout(this_->drag_bitmap?10:100, 0, this_->motion_timeout_callback);
- }
- }
-}
-
-static void
-navit_motion(void *data, struct point *p)
-{
- struct navit *this=data;
- if (!this->ignore_graphics_events)
- navit_handle_motion(this, p);
-}
-
-static void
-navit_predraw(struct navit *this_)
-{
- GList *l;
- struct navit_vehicle *nv;
- transform_copy(this_->trans, this_->trans_cursor);
- l=this_->vehicles;
- while (l) {
- nv=l->data;
- navit_vehicle_draw(this_, nv, NULL);
- l=g_list_next(l);
- }
-}
-
-static void
-navit_scale(struct navit *this_, long scale, struct point *p, int draw)
-{
- struct coord c1, c2, *center;
- if (scale < this_->zoom_min)
- scale=this_->zoom_min;
- if (scale > this_->zoom_max)
- scale=this_->zoom_max;
- if (p)
- transform_reverse(this_->trans, p, &c1);
- transform_set_scale(this_->trans, scale);
- if (p) {
- transform_reverse(this_->trans, p, &c2);
- center = transform_center(this_->trans);
- center->x += c1.x - c2.x;
- center->y += c1.y - c2.y;
- }
- if (draw)
- navit_draw(this_);
-}
-
-/**
- * @brief Automatically adjusts zoom level
- *
- * This function automatically adjusts the current
- * zoom level according to the current speed.
- *
- * @param this_ The navit struct
- * @param center The "immovable" point - i.e. the vehicles position if we're centering on the vehicle
- * @param speed The vehicles speed in meters per second
- * @param dir The direction into which the vehicle moves
- */
-static void
-navit_autozoom(struct navit *this_, struct coord *center, int speed, int draw)
-{
- struct point pc;
- int distance,w,h;
- double new_scale;
- long scale;
-
- if (! this_->autozoom_active) {
- return;
- }
-
- if(this_->autozoom_paused){
- this_->autozoom_paused--;
- return;
- }
-
- distance = speed * this_->autozoom_secs;
-
- transform_get_size(this_->trans, &w, &h);
- transform(this_->trans, transform_get_projection(this_->trans), center, &pc, 1, 0, 0, NULL);
- scale = transform_get_scale(this_->trans);
-
- /* We make sure that the point we want to see is within a certain range
- * around the vehicle. The radius of this circle is the size of the
- * screen. This doesn't necessarily mean the point is visible because of
- * perspective etc. Quite rough, but should be enough. */
-
- if (w > h) {
- new_scale = (double)distance / h * 16;
- } else {
- new_scale = (double)distance / w * 16;
- }
-
- if (abs(new_scale - scale) < 2) {
- return; // Smoothing
- }
- if (new_scale > this_->autozoom_max)
- new_scale=this_->autozoom_max;
- if (new_scale < this_->autozoom_min)
- new_scale=this_->autozoom_min;
- if (new_scale != scale)
- navit_scale(this_, (long)new_scale, &pc, 0);
-}
-
-/**
- * Change the current zoom level, zooming closer to the ground
- *
- * @param navit The navit instance
- * @param factor The zoom factor, usually 2
- * @param p The invariant point (if set to NULL, default to center)
- * @returns nothing
- */
-void
-navit_zoom_in(struct navit *this_, int factor, struct point *p)
-{
- long scale=transform_get_scale(this_->trans)/factor;
- if(this_->autozoom_active){
- this_->autozoom_paused = 10;
- }
- if (scale < 1)
- scale=1;
- navit_scale(this_, scale, p, 1);
-}
-
-/**
- * Change the current zoom level
- *
- * @param navit The navit instance
- * @param factor The zoom factor, usually 2
- * @param p The invariant point (if set to NULL, default to center)
- * @returns nothing
- */
-void
-navit_zoom_out(struct navit *this_, int factor, struct point *p)
-{
- long scale=transform_get_scale(this_->trans)*factor;
- if(this_->autozoom_active){
- this_->autozoom_paused = 10;
- }
- navit_scale(this_, scale, p, 1);
-}
-
-void
-navit_zoom_in_cursor(struct navit *this_, int factor)
-{
- struct point p;
- if (this_->vehicle && this_->vehicle->follow_curr <= 1 && navit_get_cursor_pnt(this_, &p, 0, NULL)) {
- navit_zoom_in(this_, factor, &p);
- this_->vehicle->follow_curr=this_->vehicle->follow;
- } else
- navit_zoom_in(this_, factor, NULL);
-}
-
-void
-navit_zoom_out_cursor(struct navit *this_, int factor)
-{
- struct point p;
- if (this_->vehicle && this_->vehicle->follow_curr <= 1 && navit_get_cursor_pnt(this_, &p, 0, NULL)) {
- navit_zoom_out(this_, 2, &p);
- this_->vehicle->follow_curr=this_->vehicle->follow;
- } else
- navit_zoom_out(this_, 2, NULL);
-}
-
-static int
-navit_cmd_zoom_in(struct navit *this_)
-{
-
- navit_zoom_in_cursor(this_, 2);
- return 0;
-}
-
-static int
-navit_cmd_zoom_out(struct navit *this_)
-{
- navit_zoom_out_cursor(this_, 2);
- return 0;
-}
-
-
-static void
-navit_cmd_say(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- if (in && in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str)
- navit_say(this, in[0]->u.str);
-}
-
-static GHashTable *cmd_int_var_hash = NULL;
-static GHashTable *cmd_attr_var_hash = NULL;
-
-/**
- * Store key value pair for the command system (for int typed values)
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attributes in[0] is the key string, in[1] is the integer value to store
- * @param out output attributes, unused
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_set_int_var(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- char*key;
- struct attr*val;
- if(!cmd_int_var_hash) {
- cmd_int_var_hash = g_hash_table_new(g_str_hash, g_str_equal);
- }
-
- if ( (in && in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str) &&
- (in && in[1] && ATTR_IS_NUMERIC(in[1]->type))) {
- val = g_new(struct attr,1);
- attr_dup_content(in[1],val);
- key = g_strdup(in[0]->u.str);
- g_hash_table_insert(cmd_int_var_hash, key, val);
- }
-}
-
-
-/**
- * Store key value pair for the command system (for attr typed values, can be used as opaque handles)
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attributes in[0] is the key string, in[1] is the attr* value to store
- * @param out output attributes, unused
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_set_attr_var(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- char*key;
- struct attr*val;
- if(!cmd_attr_var_hash) {
- cmd_attr_var_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)attr_free);
- }
-
- if ( (in && in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str) &&
- (in && in[1] )) {
- val = attr_dup(in[1]);
- key = g_strdup(in[0]->u.str);
- g_hash_table_insert(cmd_attr_var_hash, key, val);
- } else {
- dbg(lvl_warning, "Wrong parameters for set_attr_var() command function\n");
- }
-}
-
-
-
-/**
- * command to toggle the active state of a named layer of the current layout
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attribute in[0] is the name of the layer
- * @param out output unused
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_toggle_layer(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- if (in && in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str) {
- if(this->layout_current && this->layout_current->layers) {
- GList* layers = this->layout_current->layers;
- while (layers) {
- struct layer*l=layers->data;
- if(l && !strcmp(l->name,in[0]->u.str) ) {
- l->active ^= 1;
- navit_draw(this);
- return;
- }
- layers=g_list_next(layers);
- }
- }
- }
-}
-
-/**
- * adds an item with the current coordinate of the vehicle to a named map
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attribute in[0] is the name of the map
- * @param out output attribute, 0 on error or the id of the created item on success
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_map_add_curr_pos(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr **list = g_new0(struct attr *,2);
- struct attr*val = g_new0(struct attr,1);
- struct mapset* ms;
- struct map_selection sel;
- const int selection_range = 10;
- enum item_type item_type;
- struct item *it;
- struct map* curr_map = NULL;
- struct coord curr_coord;
- struct map_rect *mr;
-
- //return invalid item on error
- val->type = attr_none;
- val->u.item = NULL;
- list[0] = val;
- list[1] = NULL;
- *out = list;
- if (
- in && in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str && //map name
- in[1] && ATTR_IS_STRING(in[1]->type) && in[1]->u.str //item type
- ) {
-
- if(!(ms=navit_get_mapset(this))) {
- dbg(lvl_error, "Command function map_add_curr_pos(): there is no active mapset\n");
- return;
- }
-
- if((item_type = item_from_name(in[1]->u.str))==type_none) {
- dbg(lvl_error, "Command function map_add_curr_pos(): unknown item type\n");
- return;
- }
-
- curr_map = mapset_get_map_by_name(ms, in[0]->u.str);
-
- //no map with the given name found
- if( ! curr_map) {
- dbg(lvl_error, "Command function map_add_curr_pos(): map not found\n");
- return;
- }
-
- if(this->vehicle && this->vehicle->vehicle ) {
- struct attr pos_attr;
- if(vehicle_get_attr(this->vehicle->vehicle,attr_position_coord_geo,&pos_attr,NULL)) {
- transform_from_geo(projection_mg, pos_attr.u.coord_geo, &curr_coord);
- } else {
- dbg(lvl_error, "Command function map_add_curr_pos(): vehicle position is not accessible\n");
- return;
- }
- } else {
- dbg(lvl_error, "Command function map_add_curr_pos(): no vehicle\n");
- return;
- }
-
- sel.next=NULL;
- sel.order=18;
- sel.range.min=type_none;
- sel.range.max=type_tec_common;
- sel.u.c_rect.lu.x=curr_coord.x-selection_range;
- sel.u.c_rect.lu.y=curr_coord.y+selection_range;
- sel.u.c_rect.rl.x=curr_coord.x+selection_range;
- sel.u.c_rect.rl.y=curr_coord.y-selection_range;
-
- mr = map_rect_new(curr_map, &sel);
- if(mr) {
-
- it = map_rect_create_item( mr, item_type);
- if (it) {
- struct attr attr;
- attr.type=attr_type_item_begin;
- attr.u.item=it;
- attr_dup_content(&attr,val);
- item_coord_set(it,&curr_coord, 1, change_mode_modify);
- }
- }
- map_rect_destroy(mr);
- }
-}
-
-/**
- * sets an attribute (name value pair) of a map item specified by map name and item id
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attribute in[0] - name of the map ; in[1] - item ; in[2] - attr name ; in[3] - attr value
- * @param out output attribute, 0 on error, 1 on success
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_map_item_set_attr(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- if (
- in && in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str &&//map name
- in[1] && ATTR_IS_ITEM(in[1]->type) && in[2]->u.item &&//item
- in[2] && ATTR_IS_STRING(in[2]->type) && in[2]->u.str && //attr_type str
- in[3] && ATTR_IS_STRING(in[3]->type) && in[3]->u.str //attr_value str
- ) {
- struct attr attr_to_set;
- struct map* curr_map = NULL;
- struct mapset *ms;
- struct item *it;
- struct map_rect *mr;
-
- if(ATTR_IS_STRING(attr_from_name(in[2]->u.str))) {
- attr_to_set.u.str = in[3]->u.str;
- attr_to_set.type = attr_from_name(in[2]->u.str);
- }
- else if(ATTR_IS_INT(attr_from_name(in[2]->u.str))) {
- attr_to_set.u.num = atoi(in[3]->u.str);
- attr_to_set.type = attr_from_name(in[2]->u.str);
- }
- else if(ATTR_IS_DOUBLE(attr_from_name(in[2]->u.str))) {
- double* val = g_new0(double,1);
- *val = atof(in[3]->u.str);
- attr_to_set.u.numd = val;
- attr_to_set.type = attr_from_name(in[2]->u.str);
- }
-
- ms = navit_get_mapset(this);
-
- curr_map = mapset_get_map_by_name(ms, in[0]->u.str);
-
- if( ! curr_map) {
- return;
- }
-
- mr=map_rect_new(curr_map,NULL);
- it=in[1]->u.item;
- it=map_rect_get_item_byid(mr,it->id_hi,it->id_lo);
-
- if(it) {
- item_attr_set(it, &attr_to_set, change_mode_modify);
- }
- map_rect_destroy(mr);
- } else {
- dbg(lvl_debug,"Error in command function item_set_attr()\n");
- dbg(lvl_debug,"Command function item_set_attr(): map cond: %d\n",(in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str)?1:0);
- dbg(lvl_debug,"Command function item_set_attr(): item cond: %d\n",(in[1] && ATTR_IS_ITEM(in[1]->type))?1:0);
- dbg(lvl_debug,"Command function item_set_attr(): attr type cond: %d\n",(in[2] && ATTR_IS_STRING(in[2]->type) && in[2]->u.str)?1:0);
- dbg(lvl_debug,"Command function item_set_attr(): attr val cond: %d\n",(in[3] && ATTR_IS_STRING(in[3]->type) && in[3]->u.str)?1:0);
- }
-}
-
-/**
- * Get attr variable given a key string for the command system (for opaque usage)
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attribute in[0] is the key string
- * @param out output attribute, the attr for the given key string if exists or NULL
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_get_attr_var(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr **list = g_new0(struct attr *,2);
- list[1] = NULL;
- *out = list;
- if(!cmd_attr_var_hash) {
- struct attr*val = g_new0(struct attr,1);
- val->type = attr_type_item_begin;
- val->u.item = NULL;
- list[0] = val;
- return;
- }
- if (in && in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str) {
- struct attr*ret = g_hash_table_lookup(cmd_attr_var_hash, in[0]->u.str);
- if(ret) {
- list[0] = attr_dup(ret);
- }
- else {
- struct attr*val = g_new0(struct attr,1);
- val->type = attr_type_int_begin;
- val->u.item = NULL;
- list[0] = val;
- }
- }
-}
-
-
-/**
- * Get value given a key string for the command system
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attribute in[0] is the key string
- * @param out output attribute, the value for the given key string if exists or 0
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_get_int_var(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr **list = g_new0(struct attr *,2);
- list[1] = NULL;
- *out = list;
- if(!cmd_int_var_hash) {
- struct attr*val = g_new0(struct attr,1);
- val->type = attr_type_int_begin;
- val->u.num = 0;
- list[0] = val;
- return;
- }
- if (in && in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str) {
- struct attr*ret = g_hash_table_lookup(cmd_int_var_hash, in[0]->u.str);
- if(ret) {
- list[0] = attr_dup(ret);
- }
- else {
- struct attr*val = g_new0(struct attr,1);
- val->type = attr_type_int_begin;
- val->u.num = 0;
- list[0] = val;
- }
- }
-}
-
-GList *cmd_int_var_stack = NULL;
-
-/**
- * Push an integer to the stack for the command system
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attribute in[0] is the integer attibute to push
- * @param out output attributes, unused
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_push_int(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- if (in && in[0] && ATTR_IS_NUMERIC(in[0]->type)) {
- struct attr*val = g_new(struct attr,1);
- attr_dup_content(in[0],val);
- cmd_int_var_stack = g_list_prepend(cmd_int_var_stack, val);
- }
-}
-
-/**
- * Pop an integer from the command system's integer stack
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attributes unused
- * @param out output attribute, the value popped if stack isn't empty or 0
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_pop_int(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr **list = g_new0(struct attr *,2);
- if(!cmd_int_var_stack) {
- struct attr*val = g_new0(struct attr,1);
- val->type = attr_type_int_begin;
- val->u.num = 0;
- list[0] = val;
- }
- else {
- list[0] = cmd_int_var_stack->data;
- cmd_int_var_stack = g_list_remove_link(cmd_int_var_stack,cmd_int_var_stack);
- }
- list[1] = NULL;
- *out = list;
-}
-
-/**
- * Get current size of command system's integer stack
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attributes unused
- * @param out output attribute, the size of stack
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_int_stack_size(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr **list;
- struct attr *attr = g_new0(struct attr ,1);
- attr->type = attr_type_int_begin;
- if(!cmd_int_var_stack) {
- attr->u.num = 0;
- }
- else {
- attr->u.num = g_list_length(cmd_int_var_stack);
- }
- list = g_new0(struct attr *,2);
- list[0] = attr;
- list[1] = NULL;
- *out = list;
- cmd_int_var_stack = g_list_remove_link(cmd_int_var_stack,cmd_int_var_stack);
-}
-
-static struct attr **
-navit_get_coord(struct navit *this, struct attr **in, struct pcoord *pc)
-{
- if (!in)
- return NULL;
- if (!in[0])
- return NULL;
- pc->pro = transform_get_projection(this->trans);
- if (ATTR_IS_STRING(in[0]->type)) {
- struct coord c;
- coord_parse(in[0]->u.str, pc->pro, &c);
- pc->x=c.x;
- pc->y=c.y;
- in++;
- } else if (ATTR_IS_COORD(in[0]->type)) {
- pc->x=in[0]->u.coord->x;
- pc->y=in[0]->u.coord->y;
- in++;
- } else if (ATTR_IS_PCOORD(in[0]->type)) {
- *pc=*in[0]->u.pcoord;
- in++;
- } else if (in[1] && in[2] && ATTR_IS_INT(in[0]->type) && ATTR_IS_INT(in[1]->type) && ATTR_IS_INT(in[2]->type)) {
- pc->pro=in[0]->u.num;
- pc->x=in[1]->u.num;
- pc->y=in[2]->u.num;
- in+=3;
- } else if (in[1] && ATTR_IS_INT(in[0]->type) && ATTR_IS_INT(in[1]->type)) {
- pc->x=in[0]->u.num;
- pc->y=in[1]->u.num;
- in+=2;
- } else
- return NULL;
- return in;
-}
-
-static void
-navit_cmd_set_destination(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct pcoord pc;
- char *description=NULL;
- in=navit_get_coord(this, in, &pc);
- if (!in)
- return;
- if (in[0] && ATTR_IS_STRING(in[0]->type))
- description=in[0]->u.str;
- navit_set_destination(this, &pc, description, 1);
-}
-
-
-static void
-navit_cmd_route_remove_next_waypoint(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- navit_remove_waypoint(this);
-}
-
-
-static void
-navit_cmd_route_remove_last_waypoint(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- navit_remove_nth_waypoint(this, navit_get_destination_count(this)-1);
-}
-
-
-static void
-navit_cmd_set_center(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct pcoord pc;
- int set_timeout=0;
- in=navit_get_coord(this, in, &pc);
- if (!in)
- return;
- if(in[0] && ATTR_IS_INT(in[0]->type))
- set_timeout=in[0]->u.num!=0;
- navit_set_center(this, &pc, set_timeout);
-}
-
-
-static void
-navit_cmd_set_position(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct pcoord pc;
- in=navit_get_coord(this, in, &pc);
- if (!in)
- return;
- navit_set_position(this, &pc);
-}
-
-
-static void
-navit_cmd_fmt_coordinates(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr attr;
- attr.type=attr_type_string_begin;
- attr.u.str="Fix me";
- if (out) {
- *out=attr_generic_add_attr(*out, &attr);
- }
-}
-
-/**
- * Join several string attributes into one
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attributes in[0] - separator, in[1..] - attributes to join
- * @param out output attribute joined attribute as string
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_strjoin(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- struct attr attr;
- gchar *ret, *sep;
- int i;
- attr.type=attr_type_string_begin;
- attr.u.str=NULL;
- if(in[0] && in[1]) {
- sep=attr_to_text(in[0],NULL,1);
- ret=attr_to_text(in[1],NULL,1);
- for(i=2;in[i];i++) {
- gchar *in_i=attr_to_text(in[i],NULL,1);
- gchar *r=g_strjoin(sep,ret,in_i,NULL);
- g_free(in_i);
- g_free(ret);
- ret=r;
- }
- g_free(sep);
- attr.u.str=ret;
- if(out) {
- *out=attr_generic_add_attr(*out, &attr);
- }
- g_free(ret);
- }
-}
-
-/**
- * Call external program
- *
- * @param navit The navit instance
- * @param function unused (needed to match command function signature)
- * @param in input attributes in[0] - name of executable, in[1..] - parameters
- * @param out output attribute unused
- * @param valid unused
- * @returns nothing
- */
-static void
-navit_cmd_spawn(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- int i,j, nparms, nvalid;
- char ** argv=NULL;
- struct spawn_process_info *pi;
-
- nparms=0;
- nvalid=0;
- if(in) {
- while(in[nparms]) {
- if (in[nparms]->type!=attr_none)
- nvalid++;
- nparms++;
- }
- }
-
- if(nvalid>0) {
- argv=g_new(char*,nvalid+1);
- for(i=0,j=0;in[i];i++) {
- if(in[i]->type!=attr_none ) {
- argv[j++]=attr_to_text(in[i],NULL,1);
- } else {
- dbg(lvl_debug,"Parameter #%i is attr_none - skipping\n",i);
- }
- }
- argv[j]=NULL;
- pi=spawn_process(argv);
-
- // spawn_process() testing suite - uncomment following code to test.
- //sleep(3);
- // example of non-blocking wait
- //int st=spawn_process_check_status(pi,0);dbg(lvl_debug,"status %i\n",st);
- // example of blocking wait
- //st=spawn_process_check_status(pi,1);dbg(lvl_debug,"status %i\n",st);
- // example of wait after process is finished and status is
- // already tested
- //st=spawn_process_check_status(pi,1);dbg(lvl_debug,"status %i\n",st);
- // example of wait after process is finished and status is
- // already tested - unblocked
- //st=spawn_process_check_status(pi,0);dbg(lvl_debug,"status %i\n",st);
-
- // End testing suite
- spawn_process_info_free(pi);
- for(i=0;argv[i];i++)
- g_free(argv[i]);
- g_free(argv);
- }
-}
-
-
-static struct command_table commands[] = {
- {"zoom_in",command_cast(navit_cmd_zoom_in)},
- {"zoom_out",command_cast(navit_cmd_zoom_out)},
- {"zoom_to_route",command_cast(navit_cmd_zoom_to_route)},
- {"say",command_cast(navit_cmd_say)},
- {"set_center",command_cast(navit_cmd_set_center)},
- {"set_center_cursor",command_cast(navit_cmd_set_center_cursor)},
- {"set_destination",command_cast(navit_cmd_set_destination)},
- {"set_position",command_cast(navit_cmd_set_position)},
- {"route_remove_next_waypoint",command_cast(navit_cmd_route_remove_next_waypoint)},
- {"route_remove_last_waypoint",command_cast(navit_cmd_route_remove_last_waypoint)},
- {"set_position",command_cast(navit_cmd_set_position)},
- {"announcer_toggle",command_cast(navit_cmd_announcer_toggle)},
- {"fmt_coordinates",command_cast(navit_cmd_fmt_coordinates)},
- {"set_int_var",command_cast(navit_cmd_set_int_var)},
- {"get_int_var",command_cast(navit_cmd_get_int_var)},
- {"push_int",command_cast(navit_cmd_push_int)},
- {"pop_int",command_cast(navit_cmd_pop_int)},
- {"int_stack_size",command_cast(navit_cmd_int_stack_size)},
- {"toggle_layer",command_cast(navit_cmd_toggle_layer)},
- {"strjoin",command_cast(navit_cmd_strjoin)},
- {"spawn",command_cast(navit_cmd_spawn)},
- {"map_add_curr_pos",command_cast(navit_cmd_map_add_curr_pos)},
- {"map_item_set_attr",command_cast(navit_cmd_map_item_set_attr)},
- {"set_attr_var",command_cast(navit_cmd_set_attr_var)},
- {"get_attr_var",command_cast(navit_cmd_get_attr_var)},
- {"switch_layout_day_night",command_cast(navit_cmd_switch_layout_day_night)},
-};
-
-void
-navit_command_add_table(struct navit*this_, struct command_table *commands, int count)
-{
- command_add_table(this_->attr_cbl, commands, count, this_);
-}
-
-struct navit *
-navit_new(struct attr *parent, struct attr **attrs)
-{
- struct navit *this_=g_new0(struct navit, 1);
- struct pcoord center;
- struct coord co;
- struct coord_geo g;
- enum projection pro=projection_mg;
- int zoom = 256;
- g.lat=53.13;
- g.lng=11.70;
-
- this_->func=&navit_func;
- navit_object_ref((struct navit_object *)this_);
- this_->attrs=attr_list_dup(attrs);
- this_->self.type=attr_navit;
- this_->self.u.navit=this_;
- this_->attr_cbl=callback_list_new();
-
- this_->orientation=-1;
- this_->tracking_flag=1;
- this_->recentdest_count=10;
- this_->osd_configuration=-1;
-
- this_->center_timeout = 10;
- this_->use_mousewheel = 1;
- this_->autozoom_secs = 10;
- this_->autozoom_min = 7;
- this_->autozoom_active = 0;
- this_->autozoom_paused = 0;
- this_->zoom_min = 1;
- this_->zoom_max = 2097152;
- this_->autozoom_max = this_->zoom_max;
- this_->follow_cursor = 1;
- this_->radius = 30;
- this_->border = 16;
- this_->auto_switch = TRUE;
-
- transform_from_geo(pro, &g, &co);
- center.x=co.x;
- center.y=co.y;
- center.pro = pro;
- this_->trans = transform_new(&center, zoom, (this_->orientation != -1) ? this_->orientation : 0);
- this_->trans_cursor = transform_new(&center, zoom, (this_->orientation != -1) ? this_->orientation : 0);
-
- this_->bookmarks=bookmarks_new(&this_->self, NULL, this_->trans);
-
- this_->prevTs=0;
-
- for (;*attrs; attrs++) {
- navit_set_attr_do(this_, *attrs, 1);
- }
- this_->displaylist=graphics_displaylist_new();
- command_add_table(this_->attr_cbl, commands, sizeof(commands)/sizeof(struct command_table), this_);
-
- this_->messages = messagelist_new(attrs);
-
- dbg(lvl_debug,"return %p\n",this_);
-
- return this_;
-}
-
-static int
-navit_set_gui(struct navit *this_, struct gui *gui)
-{
- if (this_->gui)
- return 0;
- this_->gui=gui;
- if (gui_has_main_loop(this_->gui)) {
- if (! main_loop_gui) {
- main_loop_gui=this_->gui;
- } else {
- dbg(lvl_error,"gui with main loop already active, ignoring this instance");
- return 0;
- }
- }
- return 1;
-}
-
-void
-navit_add_message(struct navit *this_, const char *message)
-{
- message_new(this_->messages, message);
-}
-
-struct message
-*navit_get_messages(struct navit *this_)
-{
- return message_get(this_->messages);
-}
-
-static int
-navit_set_graphics(struct navit *this_, struct graphics *gra)
-{
- if (this_->gra)
- return 0;
- this_->gra=gra;
- this_->resize_callback=callback_new_attr_1(callback_cast(navit_resize), attr_resize, this_);
- graphics_add_callback(gra, this_->resize_callback);
- this_->button_callback=callback_new_attr_1(callback_cast(navit_button), attr_button, this_);
- graphics_add_callback(gra, this_->button_callback);
- this_->motion_callback=callback_new_attr_1(callback_cast(navit_motion), attr_motion, this_);
- graphics_add_callback(gra, this_->motion_callback);
- this_->predraw_callback=callback_new_attr_1(callback_cast(navit_predraw), attr_predraw, this_);
- graphics_add_callback(gra, this_->predraw_callback);
- return 1;
-}
-
-struct graphics *
-navit_get_graphics(struct navit *this_)
-{
- return this_->gra;
-}
-
-struct vehicleprofile *
-navit_get_vehicleprofile(struct navit *this_)
-{
- return this_->vehicleprofile;
-}
-
-GList *
-navit_get_vehicleprofiles(struct navit *this_)
-{
- return this_->vehicleprofiles;
-}
-
-static void
-navit_projection_set(struct navit *this_, enum projection pro, int draw)
-{
- struct coord_geo g;
- struct coord *c;
-
- c=transform_center(this_->trans);
- transform_to_geo(transform_get_projection(this_->trans), c, &g);
- transform_set_projection(this_->trans, pro);
- transform_from_geo(pro, &g, c);
- if (draw)
- navit_draw(this_);
-}
-
-static void
-navit_mark_navigation_stopped(char *former_destination_file){
- FILE *f;
- f=fopen(former_destination_file, "a");
- if (f) {
- fprintf(f,"%s", TEXTFILE_COMMENT_NAVI_STOPPED);
- fclose(f);
- }else{
- dbg(lvl_error, "Error setting mark in destination file %s: %s\n", former_destination_file, strerror(errno));
- }
-}
-
-
-/**
- * Start or add a given set of coordinates for route computing
- *
- * @param navit The navit instance
- * @param c The coordinate to start routing to
- * @param description A label which allows the user to later identify this destination in the former destinations selection
- * @param async Set to 1 to do route calculation asynchronously
- * @return nothing
- */
-void
-navit_set_destination(struct navit *this_, struct pcoord *c, const char *description, int async)
-{
- char *destination_file;
- destination_file = bookmarks_get_destination_file(TRUE);
- if (c) {
- this_->destination=*c;
- this_->destination_valid=1;
-
- dbg(lvl_debug, "c=(%i,%i)\n", c->x,c->y);
- bookmarks_append_destinations(this_->former_destination, destination_file, c, 1, type_former_destination, description, this_->recentdest_count);
- } else {
- this_->destination_valid=0;
- bookmarks_append_destinations(this_->former_destination, destination_file, NULL, 0, type_former_destination, NULL, this_->recentdest_count);
- navit_mark_navigation_stopped(destination_file);
- }
- g_free(destination_file);
-
- callback_list_call_attr_0(this_->attr_cbl, attr_destination);
-
- if (this_->route) {
- struct attr attr;
- int dstcount;
- struct pcoord *pc;
-
- navit_get_attr(this_, attr_waypoints_flag, &attr, NULL);
- if (this_->waypoints_flag==0 || route_get_destination_count(this_->route)==0){
- route_set_destination(this_->route, c, async);
- }else{
- route_append_destination(this_->route, c, async);
- }
-
- dstcount=route_get_destination_count(this_->route);
- if(dstcount>0) {
- destination_file = bookmarks_get_destination_file(TRUE);
- pc=g_new(struct pcoord,dstcount);
- route_get_destinations(this_->route,pc,dstcount);
- bookmarks_append_destinations(this_->former_destination, destination_file, pc, dstcount, type_former_itinerary, description, this_->recentdest_count);
- g_free(pc);
- g_free(destination_file);
- }
-
- if (this_->ready == 3 && !(this_->flags & 4))
- navit_draw(this_);
- }
-}
-
-/**
- * Add destination description to the recent dest file. Doesn't start routing.
- *
- * @param navit The navit instance
- * @param c The coordinate to start routing to
- * @param description A label which allows the user to later identify this destination in the former destinations selection
- * @returns nothing
- */
-void
-navit_add_destination_description(struct navit *this_, struct pcoord *c, const char *description)
-{
- char *destination_file;
- if (c) {
- destination_file = bookmarks_get_destination_file(TRUE);
- bookmarks_append_destinations(this_->former_destination, destination_file, c, 1, type_former_destination, description, this_->recentdest_count);
- g_free(destination_file);
- }
-}
-
-
-/**
- * Start the route computing to a given set of coordinates including waypoints
- *
- * @param this_ The navit instance
- * @param c The coordinate to start routing to
- * @param description A label which allows the user to later identify this destination in the former destinations selection
- * @param async If routing should be done asynchronously
- * @returns nothing
- */
-void
-navit_set_destinations(struct navit *this_, struct pcoord *c, int count, const char *description, int async)
-{
- char *destination_file;
- if (c && count) {
- this_->destination=c[count-1];
- this_->destination_valid=1;
-
- destination_file = bookmarks_get_destination_file(TRUE);
- bookmarks_append_destinations(this_->former_destination, destination_file, c, count, type_former_itinerary, description, this_->recentdest_count);
- g_free(destination_file);
- } else
- this_->destination_valid=0;
- callback_list_call_attr_0(this_->attr_cbl, attr_destination);
- if (this_->route) {
- route_set_destinations(this_->route, c, count, async);
-
- if (this_->ready == 3)
- navit_draw(this_);
- }
-}
-
-int
-navit_get_destinations(struct navit *this_, struct pcoord *pc, int count)
-{
- if(!this_->route)
- return 0;
- return route_get_destinations(this_->route, pc, count);
-
-}
-
-int
-navit_get_destination_count(struct navit *this_)
-{
- if(!this_->route)
- return 0;
- return route_get_destination_count(this_->route);
-}
-
-char*
-navit_get_destination_description(struct navit *this_, int n)
-{
- if(!this_->route)
- return NULL;
- return route_get_destination_description(this_->route, n);
-}
-
-void
-navit_remove_nth_waypoint(struct navit *this_, int n)
-{
- if(!this_->route)
- return;
- if (route_get_destination_count(this_->route)>1){
- route_remove_nth_waypoint(this_->route, n);
- }else{
- navit_set_destination(this_, NULL, NULL, 0);
- }
-}
-
-void
-navit_remove_waypoint(struct navit *this_)
-{
- if(!this_->route)
- return;
- if (route_get_destination_count(this_->route)>1){
- route_remove_waypoint(this_->route);
- }else{
- navit_set_destination(this_, NULL, NULL, 0);
- }
-}
-
-/**
- * @brief Checks if a route is calculated
- *
- * This function checks if a route is calculated.
- *
- * @param this_ The navit struct whose route should be checked.
- * @return True if the route is set, false otherwise.
- */
-int
-navit_check_route(struct navit *this_)
-{
- if (this_->route) {
- return route_get_path_set(this_->route);
- }
-
- return 0;
-}
-
-static int
-navit_former_destinations_active(struct navit *this_)
-{
- char *destination_file_name = bookmarks_get_destination_file(FALSE);
- FILE *destination_file;
- int active=0;
- char lastline[100];
- destination_file=fopen(destination_file_name,"r");
- if (destination_file) {
- while(fgets(lastline, sizeof(lastline), destination_file));
- fclose(destination_file);
- if ((lastline != NULL) && (strcmp(lastline, TEXTFILE_COMMENT_NAVI_STOPPED))){
- active=1;
- }
- }
- g_free(destination_file_name);
- return active;
-}
-
-
-struct map* read_former_destinations_from_file(){
- struct attr type, data, no_warn, flags, *attrs[5];
- char *destination_file = bookmarks_get_destination_file(FALSE);
- struct map *m;
-
- type.type=attr_type;
- type.u.str="textfile";
-
- data.type=attr_data;
- data.u.str=destination_file;
-
- no_warn.type=attr_no_warning_if_map_file_missing;
- no_warn.u.num=1;
-
- flags.type=attr_flags;
- flags.u.num=1;
-
- attrs[0]=&type; attrs[1]=&data; attrs[2]=&flags;
- attrs[3]=&no_warn; attrs[4]=NULL;
-
- m=map_new(NULL, attrs);
- g_free(destination_file);
- return m;
-}
-
-static void
-navit_add_former_destinations_from_file(struct navit *this_)
-{
- struct item *item;
- int i,valid=0,count=0,maxcount=1;
- struct coord *c=g_new(struct coord, maxcount);
- struct pcoord *pc;
- struct map_rect *mr;
-
- this_->former_destination=read_former_destinations_from_file();
- if (!this_->route || !navit_former_destinations_active(this_) || !this_->vehicle)
- return;
- mr=map_rect_new(this_->former_destination, NULL);
- while ((item=map_rect_get_item(mr))) {
- if (item->type == type_former_itinerary || item->type == type_former_itinerary_part) {
- count=item_coord_get(item, c, maxcount);
- while(count==maxcount) {
- maxcount*=2;
- c=g_realloc(c, sizeof(struct coord)*maxcount);
- count+=item_coord_get(item, &c[count], maxcount-count);
- }
- if(count)
- valid=1;
- }
- }
- map_rect_destroy(mr);
- if (valid && count > 0) {
- pc=g_new(struct pcoord, count);
- for (i = 0 ; i < count ; i++) {
- pc[i].pro=map_projection(this_->former_destination);
- pc[i].x=c[i].x;
- pc[i].y=c[i].y;
- }
- if (count == 1)
- route_set_destination(this_->route, &pc[0], 1);
- else
- route_set_destinations(this_->route, pc, count, 1);
- this_->destination=pc[count-1];
- this_->destination_valid=1;
- g_free(pc);
- }
- g_free(c);
-}
-
-
-void
-navit_textfile_debug_log(struct navit *this_, const char *fmt, ...)
-{
- va_list ap;
- char *str1,*str2;
- va_start(ap, fmt);
- if (this_->textfile_debug_log && this_->vehicle) {
- str1=g_strdup_vprintf(fmt, ap);
- str2=g_strdup_printf("0x%x 0x%x%s%s\n", this_->vehicle->coord.x, this_->vehicle->coord.y, strlen(str1) ? " " : "", str1);
- log_write(this_->textfile_debug_log, str2, strlen(str2), 0);
- g_free(str2);
- g_free(str1);
- }
- va_end(ap);
-}
-
-void
-navit_textfile_debug_log_at(struct navit *this_, struct pcoord *pc, const char *fmt, ...)
-{
- va_list ap;
- char *str1,*str2;
- va_start(ap, fmt);
- if (this_->textfile_debug_log && this_->vehicle) {
- str1=g_strdup_vprintf(fmt, ap);
- str2=g_strdup_printf("0x%x 0x%x%s%s\n", pc->x, pc->y, strlen(str1) ? " " : "", str1);
- log_write(this_->textfile_debug_log, str2, strlen(str2), 0);
- g_free(str2);
- g_free(str1);
- }
- va_end(ap);
-}
-
-void
-navit_say(struct navit *this_, const char *text)
-{
- struct attr attr;
- if(this_->speech) {
- if (!speech_get_attr(this_->speech, attr_active, &attr, NULL))
- attr.u.num = 1;
- dbg(lvl_debug, "this_.speech->active %ld\n", attr.u.num);
- if(attr.u.num)
- speech_say(this_->speech, text);
- }
-}
-
-/**
- * @brief Toggles the navigation announcer for navit
- * @param this_ The navit object
- */
-static void
-navit_cmd_announcer_toggle(struct navit *this_)
-{
- struct attr attr, speechattr;
-
- // search for the speech attribute
- if(!navit_get_attr(this_, attr_speech, &speechattr, NULL))
- return;
- // find out if the corresponding attribute attr_active has been set
- if(speech_get_attr(speechattr.u.speech, attr_active, &attr, NULL)) {
- // flip it then...
- attr.u.num = !attr.u.num;
- } else {
- // otherwise disable it because voice is enabled by default
- attr.type = attr_active;
- attr.u.num = 0;
- }
-
- // apply the new state
- if(!speech_set_attr(speechattr.u.speech, &attr))
- return;
-
- // announce that the speech attribute has changed
- callback_list_call_attr_1(this_->attr_cbl, attr_speech, this_);
-}
-
-void
-navit_speak(struct navit *this_)
-{
- struct navigation *nav=this_->navigation;
- struct map *map=NULL;
- struct map_rect *mr=NULL;
- struct item *item;
- struct attr attr;
-
- if (!speech_get_attr(this_->speech, attr_active, &attr, NULL))
- attr.u.num = 1;
- dbg(lvl_debug, "this_.speech->active %ld\n", attr.u.num);
- if(!attr.u.num)
- return;
-
- if (nav)
- map=navigation_get_map(nav);
- if (map)
- mr=map_rect_new(map, NULL);
- if (mr) {
- while ((item=map_rect_get_item(mr)) && (item->type == type_nav_position || item->type == type_nav_none));
- if (item && item_attr_get(item, attr_navigation_speech, &attr)) {
- if (*attr.u.str != '\0') {
- speech_say(this_->speech, attr.u.str);
- navit_add_message(this_, attr.u.str);
- }
- navit_textfile_debug_log(this_, "type=announcement label=\"%s\"", attr.u.str);
- }
- map_rect_destroy(mr);
- }
-}
-
-static void
-navit_window_roadbook_update(struct navit *this_)
-{
- struct navigation *nav=this_->navigation;
- struct map *map=NULL;
- struct map_rect *mr=NULL;
- struct item *item;
- struct attr attr;
- struct param_list param[5];
- int secs;
-
- dbg(lvl_debug,"enter\n");
- datawindow_mode(this_->roadbook_window, 1);
- if (nav)
- map=navigation_get_map(nav);
- if (map)
- mr=map_rect_new(map, NULL);
- dbg(lvl_debug,"nav=%p map=%p mr=%p\n", nav, map, mr);
- if (mr) {
- dbg(lvl_debug,"while loop\n");
- while ((item=map_rect_get_item(mr))) {
- dbg(lvl_debug,"item=%p\n", item);
- attr.u.str=NULL;
- if (item->type != type_nav_position) {
- item_attr_get(item, attr_navigation_long, &attr);
- if (attr.u.str == NULL) {
- continue;
- }
- dbg(lvl_info, "Command='%s'\n", attr.u.str);
- param[0].value=g_strdup(attr.u.str);
- } else
- param[0].value=_("Position");
- param[0].name=_("Command");
-
- item_attr_get(item, attr_length, &attr);
- dbg(lvl_info, "Length=%ld\n", attr.u.num);
- param[1].name=_("Length");
-
- if ( attr.u.num >= 2000 )
- {
- param[1].value=g_strdup_printf("%5.1f %s",(float)attr.u.num / 1000, _("km") );
- }
- else
- {
- param[1].value=g_strdup_printf("%7ld %s",attr.u.num, _("m"));
- }
-
- item_attr_get(item, attr_time, &attr);
- dbg(lvl_info, "Time=%ld\n", attr.u.num);
- secs=attr.u.num/10;
- param[2].name=_("Time");
- if ( secs >= 3600 )
- {
- param[2].value=g_strdup_printf("%d:%02d:%02d",secs / 60, ( secs / 60 ) % 60 , secs % 60);
- }
- else
- {
- param[2].value=g_strdup_printf("%d:%02d",secs / 60, secs % 60);
- }
-
- item_attr_get(item, attr_destination_length, &attr);
- dbg(lvl_info, "Destlength=%ld\n", attr.u.num);
- param[3].name=_("Destination Length");
- if ( attr.u.num >= 2000 )
- {
- param[3].value=g_strdup_printf("%5.1f %s",(float)attr.u.num / 1000, _("km") );
- }
- else
- {
- param[3].value=g_strdup_printf("%ld %s",attr.u.num, _("m"));
- }
-
- item_attr_get(item, attr_destination_time, &attr);
- dbg(lvl_info, "Desttime=%ld\n", attr.u.num);
- secs=attr.u.num/10;
- param[4].name=_("Destination Time");
- if ( secs >= 3600 )
- {
- param[4].value=g_strdup_printf("%d:%02d:%02d",secs / 3600, (secs / 60 ) % 60 , secs % 60);
- }
- else
- {
- param[4].value=g_strdup_printf("%d:%02d",secs / 60, secs % 60);
- }
- datawindow_add(this_->roadbook_window, param, 5);
- }
- map_rect_destroy(mr);
- }
- datawindow_mode(this_->roadbook_window, 0);
-}
-
-void
-navit_window_roadbook_destroy(struct navit *this_)
-{
- dbg(lvl_debug, "enter\n");
- navigation_unregister_callback(this_->navigation, attr_navigation_long, this_->roadbook_callback);
- callback_destroy(this_->roadbook_callback);
- this_->roadbook_window=NULL;
- this_->roadbook_callback=NULL;
-}
-void
-navit_window_roadbook_new(struct navit *this_)
-{
- if (!this_->gui || this_->roadbook_callback || this_->roadbook_window) {
- return;
- }
-
- this_->roadbook_callback=callback_new_1(callback_cast(navit_window_roadbook_update), this_);
- navigation_register_callback(this_->navigation, attr_navigation_long, this_->roadbook_callback);
- this_->roadbook_window=gui_datawindow_new(this_->gui, _("Roadbook"), NULL, callback_new_1(callback_cast(navit_window_roadbook_destroy), this_));
- navit_window_roadbook_update(this_);
-}
-
-void
-navit_init(struct navit *this_)
-{
- struct mapset *ms;
- struct map *map;
- int callback;
- char *center_file;
-
- dbg(lvl_info,"enter gui %p graphics %p\n",this_->gui,this_->gra);
-
- if (!this_->gui && !(this_->flags & 2)) {
- dbg(lvl_error,"FATAL: No GUI available.\n");
- exit(1);
- }
- if (!this_->gra && !(this_->flags & 1)) {
- dbg(lvl_error,"FATAL: No graphics subsystem available.\n");
- exit(1);
- }
- dbg(lvl_info,"Connecting gui to graphics\n");
- if (this_->gui && this_->gra && gui_set_graphics(this_->gui, this_->gra)) {
- struct attr attr_type_gui, attr_type_graphics;
- gui_get_attr(this_->gui, attr_type, &attr_type_gui, NULL);
- graphics_get_attr(this_->gra, attr_type, &attr_type_graphics, NULL);
- dbg(lvl_error,"FATAL: Failed to connect graphics '%s' to gui '%s'\n", attr_type_graphics.u.str, attr_type_gui.u.str);
- dbg(lvl_error,"Please see http://wiki.navit-project.org/index.php/Failed_to_connect_graphics_to_gui "
- "for explanations and solutions\n");
- exit(1);
- }
- if (this_->speech && this_->navigation) {
- struct attr speech;
- speech.type=attr_speech;
- speech.u.speech=this_->speech;
- navigation_set_attr(this_->navigation, &speech);
- }
- dbg(lvl_info,"Initializing graphics\n");
- dbg(lvl_info,"Setting Vehicle\n");
- navit_set_vehicle(this_, this_->vehicle);
- dbg(lvl_info,"Adding dynamic maps to mapset %p\n",this_->mapsets);
- if (this_->mapsets) {
- struct mapset_handle *msh;
- ms=this_->mapsets->data;
- this_->progress_cb=callback_new_attr_1(callback_cast(navit_map_progress), attr_progress, this_);
- msh=mapset_open(ms);
- while (msh && (map=mapset_next(msh, 0))) {
- //pass new callback instance for each map in the mapset to make map callback list destruction work correctly
- struct callback *pcb = callback_new_attr_1(callback_cast(navit_map_progress), attr_progress, this_);
- map_add_callback(map, pcb);
- }
- mapset_close(msh);
-
- if (this_->route) {
- if ((map=route_get_map(this_->route))) {
- struct attr map_a;
- map_a.type=attr_map;
- map_a.u.map=map;
- mapset_add_attr(ms, &map_a);
- }
- if ((map=route_get_graph_map(this_->route))) {
- struct attr map_a,active;
- map_a.type=attr_map;
- map_a.u.map=map;
- active.type=attr_active;
- active.u.num=0;
- mapset_add_attr(ms, &map_a);
- map_set_attr(map, &active);
- }
- route_set_mapset(this_->route, ms);
- route_set_projection(this_->route, transform_get_projection(this_->trans));
- }
- if (this_->tracking) {
- tracking_set_mapset(this_->tracking, ms);
- if (this_->route)
- tracking_set_route(this_->tracking, this_->route);
- }
- if (this_->navigation) {
- if ((map=navigation_get_map(this_->navigation))) {
- struct attr map_a,active;
- map_a.type=attr_map;
- map_a.u.map=map;
- active.type=attr_active;
- active.u.num=0;
- mapset_add_attr(ms, &map_a);
- map_set_attr(map, &active);
- }
- }
- if (this_->tracking) {
- if ((map=tracking_get_map(this_->tracking))) {
- struct attr map_a,active;
- map_a.type=attr_map;
- map_a.u.map=map;
- active.type=attr_active;
- active.u.num=0;
- mapset_add_attr(ms, &map_a);
- map_set_attr(map, &active);
- }
- }
- navit_add_former_destinations_from_file(this_);
- } else {
- dbg(lvl_error, "FATAL: No mapset available. Please add a (valid) mapset to your configuration.\n");
- exit(1);
- }
- if (this_->route) {
- struct attr callback;
- this_->route_cb=callback_new_attr_1(callback_cast(navit_redraw_route), attr_route_status, this_);
- callback.type=attr_callback;
- callback.u.callback=this_->route_cb;
- route_add_attr(this_->route, &callback);
- }
- if (this_->navigation) {
- if (this_->speech) {
- this_->nav_speech_cb=callback_new_1(callback_cast(navit_speak), this_);
- navigation_register_callback(this_->navigation, attr_navigation_speech, this_->nav_speech_cb);
- }
- if (this_->route)
- navigation_set_route(this_->navigation, this_->route);
- }
- dbg(lvl_info,"Setting Center\n");
- center_file = bookmarks_get_center_file(FALSE);
- bookmarks_set_center_from_file(this_->bookmarks, center_file);
- g_free(center_file);
- global_navit=this_;
-
- messagelist_init(this_->messages);
-
- navit_set_cursors(this_);
-
- callback_list_call_attr_1(this_->attr_cbl, attr_navit, this_);
- callback=(this_->ready == 2);
- this_->ready|=1;
- dbg(lvl_info,"ready=%d\n",this_->ready);
- if (this_->ready == 3)
- navit_draw_async(this_, 1);
- if (callback)
- callback_list_call_attr_1(this_->attr_cbl, attr_graphics_ready, this_);
-}
-
-void
-navit_zoom_to_rect(struct navit *this_, struct coord_rect *r)
-{
- struct coord c;
- int w,h,scale=16;
-
- c.x=(r->rl.x+r->lu.x)/2;
- c.y=(r->rl.y+r->lu.y)/2;
- transform_set_center(this_->trans, &c);
- transform_get_size(this_->trans, &w, &h);
- dbg(lvl_debug,"center 0x%x,0x%x w %d h %d\n",c.x,c.y,w,h);
- dbg(lvl_debug,"%x,%x-%x,%x\n", r->lu.x,r->lu.y,r->rl.x,r->rl.y);
- while (scale < 1<<20) {
- struct point p1,p2;
- transform_set_scale(this_->trans, scale);
- transform_setup_source_rect(this_->trans);
- transform(this_->trans, transform_get_projection(this_->trans), &r->lu, &p1, 1, 0, 0, NULL);
- transform(this_->trans, transform_get_projection(this_->trans), &r->rl, &p2, 1, 0, 0, NULL);
- dbg(lvl_debug,"%d,%d-%d,%d\n",p1.x,p1.y,p2.x,p2.y);
- if (p1.x < 0 || p2.x < 0 || p1.x > w || p2.x > w ||
- p1.y < 0 || p2.y < 0 || p1.y > h || p2.y > h)
- scale*=2;
- else
- break;
-
- }
- dbg(lvl_debug,"scale=%d (0x%x) of %d (0x%x)\n",scale,scale,1<<20,1<<20);
- if (this_->ready == 3)
- navit_draw_async(this_,0);
-}
-
-void
-navit_zoom_to_route(struct navit *this_, int orientation)
-{
- struct map *map;
- struct map_rect *mr=NULL;
- struct item *item;
- struct coord c;
- struct coord_rect r;
- int count=0;
- if (! this_->route)
- return;
- dbg(lvl_debug,"enter\n");
- map=route_get_map(this_->route);
- dbg(lvl_debug,"map=%p\n",map);
- if (map)
- mr=map_rect_new(map, NULL);
- dbg(lvl_debug,"mr=%p\n",mr);
- if (mr) {
- while ((item=map_rect_get_item(mr))) {
- dbg(lvl_debug,"item=%s\n", item_to_name(item->type));
- while (item_coord_get(item, &c, 1)) {
- dbg(lvl_debug,"coord\n");
- if (!count)
- r.lu=r.rl=c;
- else
- coord_rect_extend(&r, &c);
- count++;
- }
- }
- map_rect_destroy(mr);
- }
- if (! count)
- return;
- if (orientation != -1)
- transform_set_yaw(this_->trans, orientation);
- navit_zoom_to_rect(this_, &r);
-}
-
-static void
-navit_cmd_zoom_to_route(struct navit *this)
-{
- navit_zoom_to_route(this, 0);
-}
-
-
-/**
- * Change the current zoom level
- *
- * @param navit The navit instance
- * @param center The point where to center the map, including its projection
- * @returns nothing
- */
-void
-navit_set_center(struct navit *this_, struct pcoord *center, int set_timeout)
-{
- struct coord *c=transform_center(this_->trans);
- struct coord c1,c2;
- enum projection pro = transform_get_projection(this_->trans);
- if (pro != center->pro) {
- c1.x = center->x;
- c1.y = center->y;
- transform_from_to(&c1, center->pro, &c2, pro);
- } else {
- c2.x = center->x;
- c2.y = center->y;
- }
- *c=c2;
- if (set_timeout)
- navit_set_timeout(this_);
- if (this_->ready == 3)
- navit_draw(this_);
-}
-
-static void
-navit_set_center_coord_screen(struct navit *this_, struct coord *c, struct point *p, int set_timeout)
-{
- int width, height;
- struct point po;
- transform_set_center(this_->trans, c);
- transform_get_size(this_->trans, &width, &height);
- po.x=width/2;
- po.y=height/2;
- update_transformation(this_->trans, &po, p);
- if (set_timeout)
- navit_set_timeout(this_);
-}
-
-/**
- * Links all vehicles to a cursor depending on the current profile.
- *
- * @param this_ A navit instance
- * @author Ralph Sennhauser (10/2009)
- */
-static void
-navit_set_cursors(struct navit *this_)
-{
- struct attr name;
- struct navit_vehicle *nv;
- struct cursor *c;
- GList *v;
-
- v=g_list_first(this_->vehicles); // GList of navit_vehicles
- while (v) {
- nv=v->data;
- if (vehicle_get_attr(nv->vehicle, attr_cursorname, &name, NULL)) {
- if (!strcmp(name.u.str,"none"))
- c=NULL;
- else
- c=layout_get_cursor(this_->layout_current, name.u.str);
- } else
- c=layout_get_cursor(this_->layout_current, "default");
- vehicle_set_cursor(nv->vehicle, c, 0);
- v=g_list_next(v);
- }
- return;
-}
-
-
-/**
- * @brief Calculates the position of the cursor on the screen.
- *
- * This method considers padding if supported by the graphics plugin. In that case, the inner rectangle
- * (i.e. screen size minus padding) will be used to center the cursor and to determine cursor offset (as
- * specified in `this_->radius`).
- *
- * @param this_ The navit object
- * @param p Receives the screen coordinates for the cursor
- * @param keep_orientation Whether to maintain the current map orientation. If false, the map will be
- * rotated so that the bearing of the vehicle is up.
- * @param dir Receives the new map orientation as requested by `screen_orientation` (can be `NULL`)
- *
- * @return Always 1
- */
-static int
-navit_get_cursor_pnt(struct navit *this_, struct point *p, int keep_orientation, int *dir)
-{
- int width, height;
- struct navit_vehicle *nv=this_->vehicle;
- struct padding *padding = NULL;
-
- float offset=this_->radius; // Cursor offset from the center of the screen (percent).
-#if 0 /* Better improve track.c to get that issue resolved or make it configurable with being off the default, the jumping back to the center is a bit annoying */
- float min_offset = 0.; // Percent offset at min_offset_speed.
- float max_offset = 30.; // Percent offset at max_offset_speed.
- int min_offset_speed = 2; // Speed in km/h
- int max_offset_speed = 50; // Speed in km/h
- // Calculate cursor offset from the center of the screen, upon speed.
- if (nv->speed <= min_offset_speed) {
- offset = min_offset;
- } else if (nv->speed > max_offset_speed) {
- offset = max_offset;
- } else {
- offset = (max_offset - min_offset) / (max_offset_speed - min_offset_speed) * (nv->speed - min_offset_speed);
- }
-#endif
-
- if (this_->gra) {
- padding = graphics_get_data(this_->gra, "padding");
- } else
- dbg(lvl_warning, "cannot get padding: this->gra is NULL\n");
-
- transform_get_size(this_->trans, &width, &height);
- dbg(lvl_debug, "width=%d height=%d\n", width, height);
-
- if (padding) {
- width -= (padding->left + padding->right);
- height -= (padding->top + padding->bottom);
- dbg(lvl_debug, "corrected for padding: width=%d height=%d\n", width, height);
- }
-
- if (this_->orientation == -1 || keep_orientation) {
- p->x=50*width/100;
- p->y=(50 + offset)*height/100;
- if (dir)
- *dir=keep_orientation?this_->orientation:nv->dir;
- } else {
- int mdir;
- if (this_->tracking && this_->tracking_flag) {
- mdir = tracking_get_angle(this_->tracking) - this_->orientation;
- } else {
- mdir=nv->dir-this_->orientation;
- }
-
- p->x=(50 - offset*sin(M_PI*mdir/180.))*width/100;
- p->y=(50 + offset*cos(M_PI*mdir/180.))*height/100;
- if (dir)
- *dir=this_->orientation;
- }
-
- if (padding) {
- p->x += padding->left;
- p->y += padding->top;
- }
-
- dbg(lvl_debug, "x=%d y=%d, offset=%f\n", p->x, p->y, offset);
-
- return 1;
-}
-
-/**
- * @brief Recalculates the map view so that the vehicle cursor is visible
- *
- * This function recalculates the parameters which control the visible map area, zoom and orientation. The
- * caller is responsible for redrawing the map after the function returns.
- *
- * If the vehicle supplies a {@code position_valid} attribute and it is {@code attr_position_valid_invalid},
- * the map position is not changed.
- *
- * @param this_ The navit object
- * @param autozoom Whether to set zoom based on current speed. If false, current zoom will be maintained.
- * @param keep_orientation Whether to maintain the current map orientation. If false, the map will be rotated
- * so that the bearing of the vehicle is up.
- */
-void
-navit_set_center_cursor(struct navit *this_, int autozoom, int keep_orientation)
-{
- int dir;
- struct point pn;
- struct navit_vehicle *nv=this_->vehicle;
- struct attr attr;
- if (vehicle_get_attr(nv->vehicle, attr_position_valid, &attr, NULL) && (attr.u.num == attr_position_valid_invalid))
- return;
- navit_get_cursor_pnt(this_, &pn, keep_orientation, &dir);
- transform_set_yaw(this_->trans, dir);
- navit_set_center_coord_screen(this_, &nv->coord, &pn, 0);
- if (autozoom)
- navit_autozoom(this_, &nv->coord, nv->speed, 0);
-}
-
-/**
- * @brief Recenters the map so that the vehicle cursor is visible
- *
- * This function first calls {@code navit_set_center_cursor()} to recalculate the map display, then
- * triggers a redraw of the map.
- *
- *@param this_ The navit object
- */
-static void
-navit_set_center_cursor_draw(struct navit *this_)
-{
- navit_set_center_cursor(this_,1,0);
- if (this_->ready == 3)
- navit_draw_async(this_, 1);
-}
-
-/**
- * @brief Recenters the map so that the vehicle cursor is visible
- *
- * This is the callback function for the {@code set_center_cursor()} command. It is just a wrapper around
- * {@code navit_set_center_cursor_draw()}.
- *
- *@param this_ The navit object
- */
-static void
-navit_cmd_set_center_cursor(struct navit *this_)
-{
- navit_set_center_cursor_draw(this_);
-}
-
-void
-navit_set_center_screen(struct navit *this_, struct point *p, int set_timeout)
-{
- struct coord c;
- struct pcoord pc;
- transform_reverse(this_->trans, p, &c);
- pc.x = c.x;
- pc.y = c.y;
- pc.pro = transform_get_projection(this_->trans);
- navit_set_center(this_, &pc, set_timeout);
-}
-
-static int
-navit_set_attr_do(struct navit *this_, struct attr *attr, int init)
-{
- int dir=0, orient_old=0, attr_updated=0;
- struct coord co;
- long zoom;
- GList *l;
- struct navit_vehicle *nv;
- struct layout *lay;
- struct attr active;
- active.type=attr_active;
- active.u.num=0;
-
- dbg(lvl_debug, "enter, this_=%p, attr=%p (%s), init=%d\n", this_, attr, attr_to_name(attr->type), init);
-
- switch (attr->type) {
- case attr_autozoom:
- attr_updated=(this_->autozoom_secs != attr->u.num);
- this_->autozoom_secs = attr->u.num;
- break;
- case attr_autozoom_active:
- attr_updated=(this_->autozoom_active != attr->u.num);
- this_->autozoom_active = attr->u.num;
- break;
- case attr_center:
- transform_from_geo(transform_get_projection(this_->trans), attr->u.coord_geo, &co);
- dbg(lvl_debug,"0x%x,0x%x\n",co.x,co.y);
- transform_set_center(this_->trans, &co);
- break;
- case attr_drag_bitmap:
- attr_updated=(this_->drag_bitmap != !!attr->u.num);
- this_->drag_bitmap=!!attr->u.num;
- break;
- case attr_flags:
- attr_updated=(this_->flags != attr->u.num);
- this_->flags=attr->u.num;
- break;
- case attr_flags_graphics:
- attr_updated=(this_->graphics_flags != attr->u.num);
- this_->graphics_flags=attr->u.num;
- break;
- case attr_follow:
- if (!this_->vehicle)
- return 0;
- attr_updated=(this_->vehicle->follow_curr != attr->u.num);
- this_->vehicle->follow_curr = attr->u.num;
- break;
- case attr_layout:
- if(!attr->u.layout)
- return 0;
- if(this_->layout_current!=attr->u.layout) {
- this_->layout_current=attr->u.layout;
- graphics_font_destroy_all(this_->gra);
- navit_set_cursors(this_);
- if (this_->ready == 3)
- navit_draw(this_);
- attr_updated=1;
- }
- break;
- case attr_layout_name:
- if(!attr->u.str)
- return 0;
- l=this_->layouts;
- while (l) {
- lay=l->data;
- if (!strcmp(lay->name,attr->u.str)) {
- struct attr attr;
- attr.type=attr_layout;
- attr.u.layout=lay;
- return navit_set_attr_do(this_, &attr, init);
- }
- l=g_list_next(l);
- }
- return 0;
- case attr_map_border:
- if (this_->border != attr->u.num) {
- this_->border=attr->u.num;
- attr_updated=1;
- }
- break;
- case attr_orientation:
- orient_old=this_->orientation;
- this_->orientation=attr->u.num;
- if (!init) {
- if (this_->orientation != -1) {
- dir = this_->orientation;
- } else {
- if (this_->vehicle) {
- dir = this_->vehicle->dir;
- }
- }
- transform_set_yaw(this_->trans, dir);
- if (orient_old != this_->orientation) {
-#if 0
- if (this_->ready == 3)
- navit_draw(this_);
-#endif
- attr_updated=1;
- }
- }
- break;
- case attr_osd_configuration:
- dbg(lvl_debug,"setting osd_configuration to %ld (was %d)\n", attr->u.num, this_->osd_configuration);
- attr_updated=(this_->osd_configuration != attr->u.num);
- this_->osd_configuration=attr->u.num;
- break;
- case attr_pitch:
- attr_updated=(this_->pitch != attr->u.num);
- this_->pitch=attr->u.num;
- transform_set_pitch(this_->trans, round(this_->pitch*sqrt(240*320)/sqrt(this_->w*this_->h))); // Pitch corrected for window resolution
- if (!init && attr_updated && this_->ready == 3)
- navit_draw(this_);
- break;
- case attr_projection:
- if(this_->trans && transform_get_projection(this_->trans) != attr->u.projection) {
- navit_projection_set(this_, attr->u.projection, !init);
- attr_updated=1;
- }
- break;
- case attr_radius:
- attr_updated=(this_->radius != attr->u.num);
- this_->radius=attr->u.num;
- break;
- case attr_recent_dest:
- attr_updated=(this_->recentdest_count != attr->u.num);
- this_->recentdest_count=attr->u.num;
- break;
- case attr_speech:
- if(this_->speech && this_->speech != attr->u.speech) {
- attr_updated=1;
- this_->speech = attr->u.speech;
- }
- break;
- case attr_timeout:
- attr_updated=(this_->center_timeout != attr->u.num);
- this_->center_timeout = attr->u.num;
- break;
- case attr_tracking:
- attr_updated=(this_->tracking_flag != !!attr->u.num);
- this_->tracking_flag=!!attr->u.num;
- break;
- case attr_transformation:
- this_->trans=attr->u.transformation;
- break;
- case attr_use_mousewheel:
- attr_updated=(this_->use_mousewheel != !!attr->u.num);
- this_->use_mousewheel=!!attr->u.num;
- break;
- case attr_vehicle:
- if (!attr->u.vehicle) {
- if (this_->vehicle) {
- vehicle_set_attr(this_->vehicle->vehicle, &active);
- navit_set_vehicle(this_, NULL);
- attr_updated=1;
- }
- break;
- }
- l=this_->vehicles;
- while(l) {
- nv=l->data;
- if (nv->vehicle == attr->u.vehicle) {
- if (!this_->vehicle || this_->vehicle->vehicle != attr->u.vehicle) {
- if (this_->vehicle)
- vehicle_set_attr(this_->vehicle->vehicle, &active);
- active.u.num=1;
- vehicle_set_attr(nv->vehicle, &active);
- attr_updated=1;
- }
- navit_set_vehicle(this_, nv);
- }
- l=g_list_next(l);
- }
- break;
- case attr_vehicleprofile:
- attr_updated=navit_set_vehicleprofile(this_, attr->u.vehicleprofile);
- break;
- case attr_zoom:
- zoom=transform_get_scale(this_->trans);
- attr_updated=(zoom != attr->u.num);
- transform_set_scale(this_->trans, attr->u.num);
- if (attr_updated && !init)
- navit_draw(this_);
- break;
- case attr_zoom_min:
- attr_updated=(attr->u.num != this_->zoom_min);
- this_->zoom_min=attr->u.num;
- break;
- case attr_zoom_max:
- attr_updated=(attr->u.num != this_->zoom_max);
- this_->zoom_max=attr->u.num;
- break;
- case attr_message:
- navit_add_message(this_, attr->u.str);
- break;
- case attr_follow_cursor:
- attr_updated=(this_->follow_cursor != !!attr->u.num);
- this_->follow_cursor=!!attr->u.num;
- break;
- case attr_imperial:
- attr_updated=(this_->imperial != attr->u.num);
- this_->imperial=attr->u.num;
- break;
- case attr_waypoints_flag:
- attr_updated=(this_->waypoints_flag != !!attr->u.num);
- this_->waypoints_flag=!!attr->u.num;
- break;
- default:
- dbg(lvl_debug, "calling generic setter method for attribute type %s\n", attr_to_name(attr->type))
- return navit_object_set_attr((struct navit_object *) this_, attr);
- }
- if (attr_updated && !init) {
- callback_list_call_attr_2(this_->attr_cbl, attr->type, this_, attr);
- if (attr->type == attr_osd_configuration)
- graphics_draw_mode(this_->gra, draw_mode_end);
- }
- return 1;
-}
-
-int
-navit_set_attr(struct navit *this_, struct attr *attr)
-{
- return navit_set_attr_do(this_, attr, 0);
-}
-
-int
-navit_get_attr(struct navit *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- struct message *msg;
- struct coord *c;
- int len,offset;
- int ret=1;
-
- switch (type) {
- case attr_message:
- msg = navit_get_messages(this_);
-
- if (!msg) {
- return 0;
- }
-
- len = 0;
- while (msg) {
- len += strlen(msg->text) + 1;
- msg = msg->next;
- }
- attr->u.str = g_malloc(len + 1);
-
- msg = navit_get_messages(this_);
- offset = 0;
- while (msg) {
- g_stpcpy((attr->u.str + offset), msg->text);
- offset += strlen(msg->text);
- attr->u.str[offset] = '\n';
- offset++;
-
- msg = msg->next;
- }
-
- attr->u.str[len] = '\0';
- break;
- case attr_imperial:
- attr->u.num=this_->imperial;
- break;
- case attr_bookmark_map:
- attr->u.map=bookmarks_get_map(this_->bookmarks);
- break;
- case attr_bookmarks:
- attr->u.bookmarks=this_->bookmarks;
- break;
- case attr_callback_list:
- attr->u.callback_list=this_->attr_cbl;
- break;
- case attr_center:
- c=transform_get_center(this_->trans);
- transform_to_geo(transform_get_projection(this_->trans), c, &this_->center);
- attr->u.coord_geo=&this_->center;
- break;
- case attr_destination:
- if (! this_->destination_valid)
- return 0;
- attr->u.pcoord=&this_->destination;
- break;
- case attr_displaylist:
- attr->u.displaylist=this_->displaylist;
- return (attr->u.displaylist != NULL);
- case attr_follow:
- if (!this_->vehicle)
- return 0;
- attr->u.num=this_->vehicle->follow_curr;
- break;
- case attr_former_destination_map:
- attr->u.map=this_->former_destination;
- break;
- case attr_graphics:
- attr->u.graphics=this_->gra;
- ret=(attr->u.graphics != NULL);
- break;
- case attr_gui:
- attr->u.gui=this_->gui;
- ret=(attr->u.gui != NULL);
- break;
- case attr_layer:
- ret=attr_generic_get_attr(this_->attrs, NULL, type, attr, iter?(struct attr_iter *)&iter->iter:NULL);
- break;
- case attr_layout:
- if (iter) {
- if (iter->u.list) {
- iter->u.list=g_list_next(iter->u.list);
- } else {
- iter->u.list=this_->layouts;
- }
- if (!iter->u.list)
- return 0;
- attr->u.layout=(struct layout *)iter->u.list->data;
- } else {
- attr->u.layout=this_->layout_current;
- }
- break;
- case attr_map:
- if (iter && this_->mapsets) {
- if (!iter->u.mapset_handle) {
- iter->u.mapset_handle=mapset_open((struct mapset *)this_->mapsets->data);
- }
- attr->u.map=mapset_next(iter->u.mapset_handle, 0);
- if(!attr->u.map) {
- mapset_close(iter->u.mapset_handle);
- return 0;
- }
- } else {
- return 0;
- }
- break;
- case attr_mapset:
- attr->u.mapset=this_->mapsets->data;
- ret=(attr->u.mapset != NULL);
- break;
- case attr_navigation:
- attr->u.navigation=this_->navigation;
- break;
- case attr_orientation:
- attr->u.num=this_->orientation;
- break;
- case attr_osd:
- ret=attr_generic_get_attr(this_->attrs, NULL, type, attr, iter?(struct attr_iter *)&iter->iter:NULL);
- break;
- case attr_osd_configuration:
- attr->u.num=this_->osd_configuration;
- break;
- case attr_pitch:
- attr->u.num=round(transform_get_pitch(this_->trans)*sqrt(this_->w*this_->h)/sqrt(240*320)); // Pitch corrected for window resolution
- break;
- case attr_projection:
- if(this_->trans) {
- attr->u.num=transform_get_projection(this_->trans);
- } else {
- return 0;
- }
- break;
- case attr_route:
- attr->u.route=this_->route;
- break;
- case attr_speech:
- if(this_->speech) {
- attr->u.speech=this_->speech;
- } else {
- return 0;
- }
- break;
- case attr_timeout:
- attr->u.num=this_->center_timeout;
- break;
- case attr_tracking:
- attr->u.num=this_->tracking_flag;
- break;
- case attr_trackingo:
- attr->u.tracking=this_->tracking;
- break;
- case attr_transformation:
- attr->u.transformation=this_->trans;
- break;
- case attr_vehicle:
- if(iter) {
- if(iter->u.list) {
- iter->u.list=g_list_next(iter->u.list);
- } else {
- iter->u.list=this_->vehicles;
- }
- if(!iter->u.list)
- return 0;
- attr->u.vehicle=((struct navit_vehicle*)iter->u.list->data)->vehicle;
- } else {
- if(this_->vehicle) {
- attr->u.vehicle=this_->vehicle->vehicle;
- } else {
- return 0;
- }
- }
- break;
- case attr_vehicleprofile:
- if (iter) {
- if(iter->u.list) {
- iter->u.list=g_list_next(iter->u.list);
- } else {
- iter->u.list=this_->vehicleprofiles;
- }
- if(!iter->u.list)
- return 0;
- attr->u.vehicleprofile=iter->u.list->data;
- } else {
- attr->u.vehicleprofile=this_->vehicleprofile;
- }
- break;
- case attr_zoom:
- attr->u.num=transform_get_scale(this_->trans);
- break;
- case attr_autozoom_active:
- attr->u.num=this_->autozoom_active;
- break;
- case attr_follow_cursor:
- attr->u.num=this_->follow_cursor;
- break;
- case attr_waypoints_flag:
- attr->u.num=this_->waypoints_flag;
- break;
- default:
- dbg(lvl_debug, "calling generic getter method for attribute type %s\n", attr_to_name(type))
- return navit_object_get_attr((struct navit_object *) this_, type, attr, iter);
- }
- attr->type=type;
- return ret;
-}
-
-static int
-navit_add_log(struct navit *this_, struct log *log)
-{
- struct attr type_attr;
- if (!log_get_attr(log, attr_type, &type_attr, NULL))
- return 0;
- if (!strcmp(type_attr.u.str, "textfile_debug")) {
- char *header = "type=track_tracked\n";
- if (this_->textfile_debug_log)
- return 0;
- log_set_header(log, header, strlen(header));
- this_->textfile_debug_log=log;
- return 1;
- }
- return 0;
-}
-
-static int
-navit_add_layout(struct navit *this_, struct layout *layout)
-{
- struct attr active;
- this_->layouts = g_list_append(this_->layouts, layout);
- layout_get_attr(layout, attr_active, &active, NULL);
- if(active.u.num || !this_->layout_current) {
- this_->layout_current=layout;
- return 1;
- }
- return 0;
-}
-
-int
-navit_add_attr(struct navit *this_, struct attr *attr)
-{
- int ret=1;
- switch (attr->type) {
- case attr_callback:
- navit_add_callback(this_, attr->u.callback);
- break;
- case attr_log:
- ret=navit_add_log(this_, attr->u.log);
- break;
- case attr_gui:
- ret=navit_set_gui(this_, attr->u.gui);
- break;
- case attr_graphics:
- ret=navit_set_graphics(this_, attr->u.graphics);
- break;
- case attr_layout:
- navit_add_layout(this_, attr->u.layout);
- break;
- case attr_route:
- this_->route=attr->u.route;
- break;
- case attr_mapset:
- this_->mapsets = g_list_append(this_->mapsets, attr->u.mapset);
- break;
- case attr_navigation:
- this_->navigation=attr->u.navigation;
- break;
- case attr_osd:
- break;
- case attr_recent_dest:
- this_->recentdest_count = attr->u.num;
- break;
- case attr_speech:
- this_->speech=attr->u.speech;
- break;
- case attr_trackingo:
- this_->tracking=attr->u.tracking;
- break;
- case attr_vehicle:
- ret=navit_add_vehicle(this_, attr->u.vehicle);
- break;
- case attr_vehicleprofile:
- this_->vehicleprofiles=g_list_append(this_->vehicleprofiles, attr->u.vehicleprofile);
- break;
- case attr_autozoom_min:
- this_->autozoom_min = attr->u.num;
- break;
- case attr_autozoom_max:
- this_->autozoom_max = attr->u.num;
- break;
- case attr_layer:
- case attr_script:
- break;
- default:
- return 0;
- }
- if (ret)
- this_->attrs=attr_generic_add_attr(this_->attrs, attr);
- callback_list_call_attr_2(this_->attr_cbl, attr->type, this_, attr);
- return ret;
-}
-
-int
-navit_remove_attr(struct navit *this_, struct attr *attr)
-{
- int ret=1;
- switch (attr->type) {
- case attr_callback:
- navit_remove_callback(this_, attr->u.callback);
- break;
- case attr_vehicle:
- case attr_osd:
- this_->attrs=attr_generic_remove_attr(this_->attrs, attr);
- return 1;
- default:
- return 0;
- }
- return ret;
-}
-
-struct attr_iter *
-navit_attr_iter_new(void)
-{
- return g_new0(struct attr_iter, 1);
-}
-
-void
-navit_attr_iter_destroy(struct attr_iter *iter)
-{
- g_free(iter);
-}
-
-void
-navit_add_callback(struct navit *this_, struct callback *cb)
-{
- callback_list_add(this_->attr_cbl, cb);
-}
-
-void
-navit_remove_callback(struct navit *this_, struct callback *cb)
-{
- callback_list_remove(this_->attr_cbl, cb);
-}
-
-static int
-coord_not_set(struct coord c){
- return !(c.x || c.y);
-}
-
-/**
- * Toggle the cursor update : refresh the map each time the cursor has moved (instead of only when it reaches a border)
- *
- * @param this_ The navit instance
- * @param nv vehicle to draw
- * @param pnt Screen coordinates of the vehicle. If NULL, position stored in nv is used.
- * @returns nothing
- */
-
-static void
-navit_vehicle_draw(struct navit *this_, struct navit_vehicle *nv, struct point *pnt)
-{
- struct point cursor_pnt;
- enum projection pro;
-
- if (this_->blocked||coord_not_set(nv->coord))
- return;
- if (pnt)
- cursor_pnt=*pnt;
- else {
- pro=transform_get_projection(this_->trans_cursor);
- if (!pro)
- return;
- transform(this_->trans_cursor, pro, &nv->coord, &cursor_pnt, 1, 0, 0, NULL);
- }
- vehicle_draw(nv->vehicle, this_->gra, &cursor_pnt, nv->dir-transform_get_yaw(this_->trans_cursor), nv->speed);
-}
-
-/**
- * @brief Called when the position of a vehicle changes.
- *
- * This function is called when the position of any configured vehicle changes and triggers all actions
- * that need to happen in response, such as:
- * <ul>
- * <li>Switching between day and night layout (based on the new position timestamp)</li>
- * <li>Updating position, bearing and speed of {@code nv} with the data of the active vehicle
- * (which may be different from the vehicle reporting the update)</li>
- * <li>Invoking callbacks for {@code navit}'s {@code attr_position} and {@code attr_position_coord_geo}
- * attributes</li>
- * <li>Triggering an update of the vehicle's position on the map and, if needed, an update of the
- * visible map area ad orientation</li>
- * <li>Logging a new track point, if enabled</li>
- * <li>Updating the position on the route</li>
- * <li>Stopping navigation if the destination has been reached</li>
- * </ul>
- *
- * @param this_ The navit object
- * @param nv The {@code navit_vehicle} which reported a new position
- */
-static void
-navit_vehicle_update_position(struct navit *this_, struct navit_vehicle *nv) {
- struct attr attr_valid, attr_dir, attr_speed, attr_pos;
- struct pcoord cursor_pc;
- struct point cursor_pnt, *pnt=&cursor_pnt;
- struct tracking *tracking=NULL;
- struct pcoord *pc;
- enum projection pro=transform_get_projection(this_->trans_cursor);
- int count;
- int (*get_attr)(void *, enum attr_type, struct attr *, struct attr_iter *);
- void *attr_object;
- char *destination_file;
- char *description;
-
- profile(0,NULL);
- if (this_->ready == 3)
- navit_layout_switch(this_);
- if (this_->vehicle == nv && this_->tracking_flag)
- tracking=this_->tracking;
- if (tracking) {
- tracking_update(tracking, nv->vehicle, this_->vehicleprofile, pro);
- attr_object=tracking;
- get_attr=(int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))tracking_get_attr;
- } else {
- attr_object=nv->vehicle;
- get_attr=(int (*)(void *, enum attr_type, struct attr *, struct attr_iter *))vehicle_get_attr;
- }
- if (get_attr(attr_object, attr_position_valid, &attr_valid, NULL))
- if (!attr_valid.u.num != attr_position_valid_invalid)
- return;
- if (! get_attr(attr_object, attr_position_direction, &attr_dir, NULL) ||
- ! get_attr(attr_object, attr_position_speed, &attr_speed, NULL) ||
- ! get_attr(attr_object, attr_position_coord_geo, &attr_pos, NULL)) {
- profile(0,"return 2\n");
- return;
- }
- nv->dir=*attr_dir.u.numd;
- nv->speed=*attr_speed.u.numd;
- transform_from_geo(pro, attr_pos.u.coord_geo, &nv->coord);
- if (nv != this_->vehicle) {
- if (this_->ready == 3)
- navit_vehicle_draw(this_, nv, NULL);
- profile(0,"return 3\n");
- return;
- }
- cursor_pc.x = nv->coord.x;
- cursor_pc.y = nv->coord.y;
- cursor_pc.pro = pro;
- if (this_->route) {
- if (tracking)
- route_set_position_from_tracking(this_->route, tracking, pro);
- else
- route_set_position(this_->route, &cursor_pc);
- }
- callback_list_call_attr_0(this_->attr_cbl, attr_position);
- navit_textfile_debug_log(this_, "type=trackpoint_tracked");
- if (this_->ready == 3) {
- if (this_->gui && nv->speed > 2)
- navit_disable_suspend();
-
- transform(this_->trans_cursor, pro, &nv->coord, &cursor_pnt, 1, 0, 0, NULL);
- if (this_->button_pressed != 1 && this_->follow_cursor && nv->follow_curr <= nv->follow &&
- (nv->follow_curr == 1 || !transform_within_border(this_->trans_cursor, &cursor_pnt, this_->border)))
- navit_set_center_cursor_draw(this_);
- else
- navit_vehicle_draw(this_, nv, pnt);
-
- if (nv->follow_curr > 1)
- nv->follow_curr--;
- else
- nv->follow_curr=nv->follow;
- }
- callback_list_call_attr_2(this_->attr_cbl, attr_position_coord_geo, this_, nv->vehicle);
-
- /* Finally, if we reached our destination, stop navigation. */
- if (this_->route) {
- switch(route_destination_reached(this_->route)) {
- case 1:
- description=route_get_destination_description(this_->route, 0);
- route_remove_waypoint(this_->route);
- count=route_get_destination_count(this_->route);
- pc=g_alloca(sizeof(*pc)*count);
- route_get_destinations(this_->route, pc, count);
- destination_file = bookmarks_get_destination_file(TRUE);
- bookmarks_append_destinations(this_->former_destination, destination_file, pc, count, type_former_itinerary_part, description, this_->recentdest_count);
- g_free(destination_file);
- g_free(description);
- break;
- case 2:
- destination_file = bookmarks_get_destination_file(TRUE);
- bookmarks_append_destinations(this_->former_destination, destination_file, NULL, 0, type_former_itinerary_part, NULL, this_->recentdest_count);
- navit_set_destination(this_, NULL, NULL, 0);
- g_free(destination_file);
- break;
- }
- }
- profile(0,"return 5\n");
-}
-
-/**
- * @brief Called when a status attribute of a vehicle changes.
- *
- * This function is called when the {@code position_fix_type}, {@code position_sats_used} or {@code position_hdop}
- * attribute of any configured vehicle changes.
- *
- * The function checks if {@code nv} refers to the active vehicle and if {@code type} is one of the above types.
- * If this is the case, it invokes the callback functions for {@code navit}'s respective attributes.
- *
- * Future actions that need to happen when one of these three attribute changes for any vehicle should be
- * implemented here.
- *
- * @param this_ The navit object
- * @param nv The {@code navit_vehicle} which reported a new status attribute
- * @param type The type of attribute with has changed
- */
-static void
-navit_vehicle_update_status(struct navit *this_, struct navit_vehicle *nv, enum attr_type type) {
- if (this_->vehicle != nv)
- return;
- switch(type) {
- case attr_position_fix_type:
- case attr_position_sats_used:
- case attr_position_hdop:
- callback_list_call_attr_2(this_->attr_cbl, type, this_, nv->vehicle);
- break;
- default:
- return;
- }
-}
-
-/**
- * Set the position of the vehicle
- *
- * @param navit The navit instance
- * @param c The coordinate to set as position
- * @returns nothing
- */
-
-void
-navit_set_position(struct navit *this_, struct pcoord *c)
-{
- if (this_->route) {
- route_set_position(this_->route, c);
- callback_list_call_attr_0(this_->attr_cbl, attr_position);
- }
- if (this_->ready == 3)
- navit_draw(this_);
-}
-
-static int
-navit_set_vehicleprofile(struct navit *this_, struct vehicleprofile *vp)
-{
- if (this_->vehicleprofile == vp)
- return 0;
- this_->vehicleprofile=vp;
- if (this_->route)
- route_set_profile(this_->route, this_->vehicleprofile);
- return 1;
-}
-
-int
-navit_set_vehicleprofile_name(struct navit *this_, char *name)
-{
- struct attr attr;
- GList *l;
- l=this_->vehicleprofiles;
- while (l) {
- if (vehicleprofile_get_attr(l->data, attr_name, &attr, NULL)) {
- if (!strcmp(attr.u.str, name)) {
- navit_set_vehicleprofile(this_, l->data);
- return 1;
- }
- }
- l=g_list_next(l);
- }
- return 0;
-}
-
-static void
-navit_set_vehicle(struct navit *this_, struct navit_vehicle *nv)
-{
- struct attr attr;
- this_->vehicle=nv;
- if (nv && vehicle_get_attr(nv->vehicle, attr_profilename, &attr, NULL)) {
- if (navit_set_vehicleprofile_name(this_, attr.u.str))
- return;
- }
- 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);
- }
-}
-
-/**
- * @brief Registers a new vehicle.
- *
- * @param this_ The navit instance
- * @param v The vehicle to register
- * @return True for success
- */
-static int
-navit_add_vehicle(struct navit *this_, struct vehicle *v)
-{
- struct navit_vehicle *nv=g_new0(struct navit_vehicle, 1);
- struct attr follow, active, animate;
- nv->vehicle=v;
- nv->follow=0;
- nv->last.x = 0;
- nv->last.y = 0;
- nv->animate_cursor=0;
- if ((vehicle_get_attr(v, attr_follow, &follow, NULL)))
- nv->follow=follow.u.num;
- nv->follow_curr=nv->follow;
- this_->vehicles=g_list_append(this_->vehicles, nv);
- if ((vehicle_get_attr(v, attr_active, &active, NULL)) && active.u.num)
- navit_set_vehicle(this_, nv);
- if ((vehicle_get_attr(v, attr_animate, &animate, NULL)))
- nv->animate_cursor=animate.u.num;
- nv->callback.type=attr_callback;
- nv->callback.u.callback=callback_new_attr_2(callback_cast(navit_vehicle_update_position), attr_position_coord_geo, this_, nv);
- vehicle_add_attr(nv->vehicle, &nv->callback);
- nv->callback.u.callback=callback_new_attr_3(callback_cast(navit_vehicle_update_status), attr_position_fix_type, this_, nv, attr_position_fix_type);
- vehicle_add_attr(nv->vehicle, &nv->callback);
- nv->callback.u.callback=callback_new_attr_3(callback_cast(navit_vehicle_update_status), attr_position_sats_used, this_, nv, attr_position_sats_used);
- vehicle_add_attr(nv->vehicle, &nv->callback);
- nv->callback.u.callback=callback_new_attr_3(callback_cast(navit_vehicle_update_status), attr_position_hdop, this_, nv, attr_position_hdop);
- vehicle_add_attr(nv->vehicle, &nv->callback);
- vehicle_set_attr(nv->vehicle, &this_->self);
- return 1;
-}
-
-
-
-
-struct gui *
-navit_get_gui(struct navit *this_)
-{
- return this_->gui;
-}
-
-struct transformation *
-navit_get_trans(struct navit *this_)
-{
- return this_->trans;
-}
-
-struct route *
-navit_get_route(struct navit *this_)
-{
- return this_->route;
-}
-
-struct navigation *
-navit_get_navigation(struct navit *this_)
-{
- return this_->navigation;
-}
-
-struct displaylist *
-navit_get_displaylist(struct navit *this_)
-{
- return this_->displaylist;
-}
-
-/*todo : make it switch to nightlayout when we are in a tunnel */
-void
-navit_layout_switch(struct navit *n)
-{
-
- int currTs=0;
- struct attr iso8601_attr,geo_attr,valid_attr,layout_attr;
- double trise,tset,trise_actual;
- struct layout *l;
- int year, month, day;
- int after_sunrise = FALSE;
- int after_sunset = FALSE;
-
- if (navit_get_attr(n,attr_layout,&layout_attr,NULL)!=1) {
- return; //No layout - nothing to switch
- }
- if (!n->vehicle)
- return;
- l=layout_attr.u.layout;
-
- 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 (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) {
- 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;
- }
-}
-
-/**
- * @brief this command is used to change the layout and enable/disable the automatic layout switcher
- *
- * @param this_ The navit instance
- * @param function unused
- * @param in input attributes in[0], a string, see usage below
- * @param out output attribute unused
- * @param valid unused
- *
- *
- * usage :
- * manual : disable autoswitcher
- * auto : enable autoswitcher
- * manual_toggle : disable autoswitcher and toggle between day / night layout
- * manual_day : disable autoswitcher and set to day layout
- * manual_night : disable autoswitcher and set to night layout
- *
- * todo : make it return the state of the autoswitcher and
- * the version of the active layout (day/night/undefined)
- */
-static
-void navit_cmd_switch_layout_day_night(struct navit *this_, char *function, struct attr **in, struct attr ***out, int valid)
-{
-
- if (!(in && in[0] && ATTR_IS_STRING(in[0]->type))) {
- return;
- }
-
- dbg(lvl_debug," called with mode =%s\n",in[0]->u.str);
-
- if (!this_->layout_current)
- return;
-
- if (!this_->vehicle)
- return;
-
- if (!strcmp(in[0]->u.str,"manual")) {
- this_->auto_switch = FALSE;
- }
- else if (!strcmp(in[0]->u.str,"auto")) {
- this_->auto_switch = TRUE;
- this_->prevTs = 0;
- navit_layout_switch(this_);
- }
- else if (!strcmp(in[0]->u.str,"manual_toggle")) {
- if (this_->layout_current->dayname) {
- navit_set_layout_by_name(this_,this_->layout_current->dayname);
- this_->auto_switch = FALSE;
- dbg(lvl_debug,"toggeled layout to = %s\n",this_->layout_current->name);
- }
- else if (this_->layout_current->nightname) {
- navit_set_layout_by_name(this_,this_->layout_current->nightname);
- this_->auto_switch = FALSE;
- dbg(lvl_debug,"toggeled layout to = %s\n",this_->layout_current->name);
- }
- }
- else if (!strcmp(in[0]->u.str,"manual_day") && this_->layout_current->dayname) {
- navit_set_layout_by_name(this_,this_->layout_current->dayname);
- this_->auto_switch = FALSE;
- dbg(lvl_debug,"switched layout to = %s\n",this_->layout_current->name);
- }
- else if (!strcmp(in[0]->u.str,"manual_night") && this_->layout_current->nightname) {
- navit_set_layout_by_name(this_,this_->layout_current->nightname);
- this_->auto_switch = FALSE;
- dbg(lvl_debug,"switched layout to = %s\n",this_->layout_current->name);
- }
-
- dbg(lvl_debug,"auto = %i\n",this_->auto_switch);
- return;
-}
-
-int
-navit_set_vehicle_by_name(struct navit *n,const char *name)
-{
- struct vehicle *v;
- struct attr_iter *iter;
- struct attr vehicle_attr, name_attr;
-
- iter=navit_attr_iter_new();
-
- while (navit_get_attr(n,attr_vehicle,&vehicle_attr,iter)) {
- v=vehicle_attr.u.vehicle;
- vehicle_get_attr(v,attr_name,&name_attr,NULL);
- if (name_attr.type==attr_name) {
- if (!strcmp(name,name_attr.u.str)) {
- navit_set_attr(n,&vehicle_attr);
- navit_attr_iter_destroy(iter);
- return 1;
- }
- }
- }
- navit_attr_iter_destroy(iter);
- return 0;
-}
-
-int
-navit_set_layout_by_name(struct navit *n,const char *name)
-{
- struct layout *l;
- struct attr_iter iter;
- struct attr layout_attr;
-
- iter.u.list=0x00;
-
- if (navit_get_attr(n,attr_layout,&layout_attr,&iter)!=1) {
- return 0; //No layouts - nothing to do
- }
- if (iter.u.list==NULL) {
- return 0;
- }
-
- iter.u.list=g_list_first(iter.u.list);
-
- while(iter.u.list) {
- l=(struct layout*)iter.u.list->data;
- if (!strcmp(name,l->name)) {
- layout_attr.u.layout=l;
- layout_attr.type=attr_layout;
- navit_set_attr(n,&layout_attr);
- iter.u.list=g_list_first(iter.u.list);
- return 1;
- }
- iter.u.list=g_list_next(iter.u.list);
- }
-
- iter.u.list=g_list_first(iter.u.list);
- return 0;
-}
-
-void
-navit_disable_suspend() {
- gui_disable_suspend(global_navit->gui);
- callback_list_call_attr_0(global_navit->attr_cbl,attr_unsuspend);
-}
-
-/**
- * @brief Blocks or unblocks redraw operations.
- *
- * The {@code block} parameter specifies the operation to carry out:
- *
- * {@code block > 0} cancels all draw operations in progress and blocks future operations. It sets flag 1 of the
- * {@code blocked} member. If draw operations in progress were canceled, flag 2 is also set.
- *
- * {@code block = 0} unblocks redraw operations, resetting {@code blocked} to 0. If flag 2 was previously set,
- * indicating that draw operations had been previously canceled, a redraw is triggered.
- *
- * {@code block < 0} unblocks redraw operations and forces a redraw. As above, {@code blocked} is reset to 0.
- *
- * @param this_ The navit instance
- * @param block The operation to perform, see description
- *
- * @return {@code true} if a redraw operation was triggered, {@code false} if not
- */
-int
-navit_block(struct navit *this_, int block)
-{
- if (block > 0) {
- this_->blocked |= 1;
- if (graphics_draw_cancel(this_->gra, this_->displaylist))
- this_->blocked |= 2;
- return 0;
- }
- if ((this_->blocked & 2) || block < 0) {
- this_->blocked=0;
- navit_draw(this_);
- return 1;
- }
- this_->blocked=0;
- return 0;
-}
-
-/**
- * @brief Returns whether redraw operations are currently blocked.
- */
-int navit_get_blocked(struct navit *this_)
-{
- return this_->blocked;
-}
-
-void
-navit_destroy(struct navit *this_)
-{
- dbg(lvl_debug,"enter %p\n",this_);
- graphics_draw_cancel(this_->gra, this_->displaylist);
- callback_list_call_attr_1(this_->attr_cbl, attr_destroy, this_);
- attr_list_free(this_->attrs);
-
- if(cmd_int_var_hash) {
- g_hash_table_destroy(cmd_int_var_hash);
- cmd_int_var_hash=NULL;
- }
- if(cmd_attr_var_hash) {
- g_hash_table_destroy(cmd_attr_var_hash);
- cmd_attr_var_hash=NULL;
- }
- if(cmd_int_var_stack) {
- g_list_foreach(cmd_int_var_stack, (GFunc)attr_free, NULL);
- g_list_free(cmd_int_var_stack);
- cmd_int_var_stack=NULL;
- }
-
- if (this_->bookmarks) {
- char *center_file = bookmarks_get_center_file(TRUE);
- bookmarks_write_center_to_file(this_->bookmarks, center_file);
- g_free(center_file);
- bookmarks_destroy(this_->bookmarks);
- }
-
- callback_destroy(this_->nav_speech_cb);
- callback_destroy(this_->roadbook_callback);
- callback_destroy(this_->popup_callback);
- callback_destroy(this_->motion_timeout_callback);
- callback_destroy(this_->progress_cb);
-
- if(this_->gra) {
- graphics_remove_callback(this_->gra, this_->resize_callback);
- graphics_remove_callback(this_->gra, this_->button_callback);
- graphics_remove_callback(this_->gra, this_->motion_callback);
- graphics_remove_callback(this_->gra, this_->predraw_callback);
- }
-
- callback_destroy(this_->resize_callback);
- callback_destroy(this_->motion_callback);
- callback_destroy(this_->predraw_callback);
-
- callback_destroy(this_->route_cb);
- if (this_->route)
- route_destroy(this_->route);
-
- map_destroy(this_->former_destination);
-
- graphics_displaylist_destroy(this_->displaylist);
-
- graphics_free(this_->gra);
-
- g_free(this_);
-}
-
-struct object_func navit_func = {
- attr_navit,
- (object_func_new)navit_new,
- (object_func_get_attr)navit_get_attr,
- (object_func_iter_new)navit_attr_iter_new,
- (object_func_iter_destroy)navit_attr_iter_destroy,
- (object_func_set_attr)navit_set_attr,
- (object_func_add_attr)navit_add_attr,
- (object_func_remove_attr)navit_remove_attr,
- (object_func_init)navit_init,
- (object_func_destroy)navit_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
-
-/** @} */
diff --git a/navit/navit.dtd b/navit/navit.dtd
deleted file mode 100644
index c17602725..000000000
--- a/navit/navit.dtd
+++ /dev/null
@@ -1,156 +0,0 @@
-<!ELEMENT config (plugins,debug*,navit)>
-<!ATTLIST config xmlns:xi CDATA #REQUIRED>
-<!ATTLIST config language CDATA #IMPLIED>
-<!ELEMENT plugins (plugin*)>
-<!ELEMENT plugin EMPTY>
-<!ATTLIST plugin path CDATA #REQUIRED>
-<!ATTLIST plugin active CDATA #IMPLIED>
-<!ATTLIST plugin ondemand CDATA #IMPLIED>
-<!ELEMENT debug EMPTY>
-<!ATTLIST debug name CDATA #REQUIRED>
-<!ATTLIST debug level CDATA "0">
-<!ATTLIST debug dbg_level (error|warning|info|debug) "error">
-<!ELEMENT log EMPTY>
-<!ATTLIST log enabled CDATA #IMPLIED>
-<!ATTLIST log type CDATA #REQUIRED>
-<!ATTLIST log data CDATA #REQUIRED>
-<!ATTLIST log flush_size CDATA #IMPLIED>
-<!ATTLIST log flush_time CDATA #IMPLIED>
-<!ATTLIST log attr_types CDATA #IMPLIED>
-<!ELEMENT navit (graphics,gui+,log*,osd*,vehicle*,tracking,vehicleprofile*,route,navigation,speech,mapset+,layout+)*>
-<!ATTLIST navit center CDATA #REQUIRED>
-<!ATTLIST navit zoom CDATA #REQUIRED>
-<!ATTLIST navit tracking CDATA #REQUIRED>
-<!ATTLIST navit orientation CDATA #REQUIRED>
-<!ATTLIST navit recent_dest CDATA #IMPLIED>
-<!ATTLIST navit drag_bitmap CDATA #IMPLIED>
-<!ELEMENT gui ANY>
-<!ATTLIST gui type CDATA #REQUIRED>
-<!ATTLIST gui menubar CDATA #IMPLIED>
-<!ATTLIST gui toolbar CDATA #IMPLIED>
-<!ATTLIST gui statusbar CDATA #IMPLIED>
-<!ATTLIST gui skin CDATA #IMPLIED>
-<!ATTLIST gui fullscreen CDATA #IMPLIED>
-<!ATTLIST gui enabled CDATA #IMPLIED>
-<!ELEMENT graphics EMPTY>
-<!ATTLIST graphics type CDATA #REQUIRED>
-<!ATTLIST graphics event_loop_system CDATA #IMPLIED>
-<!ELEMENT vehicle (log*)>
-<!ATTLIST vehicle name CDATA #REQUIRED>
-<!ATTLIST vehicle source CDATA #REQUIRED>
-<!ATTLIST vehicle enabled CDATA #IMPLIED>
-<!ATTLIST vehicle active CDATA #IMPLIED>
-<!ATTLIST vehicle follow CDATA #IMPLIED>
-<!ATTLIST vehicle update CDATA #IMPLIED>
-<!ATTLIST vehicle gpsd_query CDATA #IMPLIED>
-<!ATTLIST vehicle profilename CDATA #IMPLIED>
-<!ELEMENT vehicleprofile (roadprofile+)>
-<!ATTLIST vehicleprofile name CDATA #REQUIRED>
-<!ATTLIST vehicleprofile flags CDATA #REQUIRED>
-<!ATTLIST vehicleprofile flags_forward_mask CDATA #REQUIRED>
-<!ATTLIST vehicleprofile flags_reverse_mask CDATA #REQUIRED>
-<!ATTLIST vehicleprofile maxspeed_handling CDATA #REQUIRED>
-<!ATTLIST vehicleprofile route_mode CDATA #REQUIRED>
-<!ATTLIST vehicleprofile route_depth CDATA #IMPLIED>
-<!ATTLIST vehicleprofile static_distance CDATA #IMPLIED>
-<!ATTLIST vehicleprofile static_speed CDATA #IMPLIED>
-<!ATTLIST vehicleprofile vehicle_width CDATA #IMPLIED>
-<!ATTLIST vehicleprofile vehicle_height CDATA #IMPLIED>
-<!ATTLIST vehicleprofile vehicle_length CDATA #IMPLIED>
-<!ATTLIST vehicleprofile vehicle_weight CDATA #IMPLIED>
-<!ATTLIST vehicleprofile vehicle_axle_weight CDATA #IMPLIED>
-<!ELEMENT coord EMPTY>
-<!ATTLIST coord x CDATA #REQUIRED>
-<!ATTLIST coord y CDATA #REQUIRED>
-<!ELEMENT cursor (itemgra+)>
-<!ATTLIST cursor w CDATA #REQUIRED>
-<!ATTLIST cursor h CDATA #REQUIRED>
-<!ELEMENT tracking ANY>
-<!ATTLIST tracking cdf_histsize CDATA #IMPLIED>
-<!ELEMENT route EMPTY>
-<!ATTLIST route destination_distance CDATA #IMPLIED>
-<!ELEMENT roadprofile (announcement*)>
-<!ATTLIST roadprofile item_types CDATA #REQUIRED>
-<!ATTLIST roadprofile speed CDATA #REQUIRED>
-<!ATTLIST roadprofile route_weight CDATA #REQUIRED>
-<!ELEMENT speed EMPTY>
-<!ATTLIST speed type CDATA #REQUIRED>
-<!ATTLIST speed value CDATA #REQUIRED>
-<!ELEMENT navigation (announce+)>
-<!ELEMENT announce EMPTY>
-<!ATTLIST announce type CDATA #REQUIRED>
-<!ATTLIST announce level0 CDATA #IMPLIED>
-<!ATTLIST announce level1 CDATA #IMPLIED>
-<!ATTLIST announce level2 CDATA #IMPLIED>
-<!ATTLIST announce unit CDATA #REQUIRED>
-<!ELEMENT announcement EMPTY>
-<!ATTLIST announcement level CDATA #REQUIRED>
-<!ATTLIST announcement distance_metric CDATA #REQUIRED>
-<!ELEMENT speech EMPTY>
-<!ATTLIST speech type CDATA #REQUIRED>
-<!ATTLIST speech data CDATA #REQUIRED>
-<!ATTLIST speech cps CDATA #IMPLIED>
-<!ELEMENT mapset (map*,xi:include*)>
-<!ATTLIST mapset enabled CDATA #IMPLIED>
-<!ELEMENT map EMPTY>
-<!ATTLIST map type CDATA #REQUIRED>
-<!ATTLIST map enabled CDATA #IMPLIED>
-<!ATTLIST map active CDATA #IMPLIED>
-<!ATTLIST map data CDATA #REQUIRED>
-<!ATTLIST map debug CDATA #IMPLIED>
-<!ELEMENT layout (cursor*,xi:include*,layer+)*>
-<!ATTLIST layout name CDATA #REQUIRED>
-<!ATTLIST layout active CDATA #IMPLIED>
-<!ATTLIST layout color CDATA #IMPLIED>
-<!ATTLIST layout font CDATA #IMPLIED>
-<!ATTLIST layout daylayout CDATA #IMPLIED>
-<!ATTLIST layout nightlayout CDATA #IMPLIED>
-<!ELEMENT layer (itemgra*)>
-<!ATTLIST layer enabled CDATA #IMPLIED>
-<!ATTLIST layer name CDATA #IMPLIED>
-<!ATTLIST layer details CDATA #IMPLIED>
-<!ATTLIST layer order CDATA #IMPLIED>
-<!ATTLIST layer ref CDATA #IMPLIED>
-<!ATTLIST layer active CDATA #IMPLIED>
-<!ELEMENT osd EMPTY>
-<!ATTLIST osd enabled CDATA #IMPLIED>
-<!ATTLIST osd type CDATA #REQUIRED>
-<!ATTLIST osd x CDATA #IMPLIED>
-<!ATTLIST osd y CDATA #IMPLIED>
-<!ATTLIST osd src CDATA #IMPLIED>
-<!ATTLIST osd command CDATA #IMPLIED>
-<!ELEMENT itemgra (polygon|polyline|text|circle|icon|image|arrows)*>
-<!ATTLIST itemgra item_types CDATA #IMPLIED>
-<!ATTLIST itemgra order CDATA #IMPLIED>
-<!ATTLIST itemgra speed_range CDATA #IMPLIED>
-<!ELEMENT polygon (coord*)>
-<!ATTLIST polygon color CDATA #REQUIRED>
-<!ELEMENT polyline (coord*)>
-<!ATTLIST polyline color CDATA #REQUIRED>
-<!ATTLIST polyline width CDATA #IMPLIED>
-<!ATTLIST polyline dash CDATA #IMPLIED>
-<!ATTLIST polyline offset CDATA #IMPLIED>
-<!ATTLIST polyline radius CDATA #IMPLIED>
-<!ELEMENT text EMPTY>
-<!ATTLIST text text_size CDATA #REQUIRED>
-<!ATTLIST text color CDATA #IMPLIED>
-<!ATTLIST text background_color CDATA #IMPLIED>
-<!ELEMENT circle (coord*)>
-<!ATTLIST circle color CDATA #REQUIRED>
-<!ATTLIST circle radius CDATA #REQUIRED>
-<!ATTLIST circle width CDATA #IMPLIED>
-<!ATTLIST circle text_size CDATA #IMPLIED>
-<!ATTLIST circle background_color CDATA #IMPLIED>
-<!ELEMENT icon EMPTY>
-<!ATTLIST icon src CDATA #REQUIRED>
-<!ATTLIST icon w CDATA #IMPLIED>
-<!ATTLIST icon h CDATA #IMPLIED>
-<!ATTLIST icon x CDATA #IMPLIED>
-<!ATTLIST icon y CDATA #IMPLIED>
-<!ELEMENT arrows EMPTY>
-<!ATTLIST arrows color CDATA #REQUIRED>
-<!ATTLIST arrows width CDATA #IMPLIED>
-<!ELEMENT image EMPTY>
-<!ELEMENT xi:include EMPTY>
-<!ATTLIST xi:include href CDATA #IMPLIED>
-<!ATTLIST xi:include xpointer CDATA #IMPLIED>
diff --git a/navit/navit.h b/navit/navit.h
deleted file mode 100644
index 898ff6cff..000000000
--- a/navit/navit.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_NAVIT_H
-#define NAVIT_NAVIT_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern struct gui *main_loop_gui;
-// defined in glib.h.
-#ifndef __G_LIST_H__
-struct _GList;
-typedef struct _GList GList;
-#endif
-
-/* prototypes */
-enum attr_type;
-struct attr;
-struct attr_iter;
-struct callback;
-struct coord_rect;
-struct displaylist;
-struct graphics;
-struct gui;
-struct mapset;
-struct message;
-struct navigation;
-struct navit;
-struct pcoord;
-struct point;
-struct route;
-struct tracking;
-struct transformation;
-struct vehicleprofile;
-struct command_table;
-struct item;
-void navit_add_mapset(struct navit *this_, struct mapset *ms);
-struct mapset *navit_get_mapset(struct navit *this_);
-struct tracking *navit_get_tracking(struct navit *this_);
-char *navit_get_user_data_directory(int create);
-void navit_draw_async(struct navit *this_, int async);
-void navit_draw(struct navit *this_);
-int navit_get_ready(struct navit *this_);
-void navit_draw_displaylist(struct navit *this_);
-void navit_handle_resize(struct navit *this_, int w, int h);
-int navit_get_width(struct navit *this_);
-int navit_get_height(struct navit *this_);
-int navit_ignore_button(struct navit *this_);
-void navit_ignore_graphics_events(struct navit *this_, int ignore);
-void navit_set_timeout(struct navit *this_);
-int navit_handle_button(struct navit *this_, int pressed, int button, struct point *p, struct callback *popup_callback);
-void navit_handle_motion(struct navit *this_, struct point *p);
-void navit_zoom_in(struct navit *this_, int factor, struct point *p);
-void navit_zoom_out(struct navit *this_, int factor, struct point *p);
-void navit_zoom_in_cursor(struct navit *this_, int factor);
-void navit_zoom_out_cursor(struct navit *this_, int factor);
-struct navit *navit_new(struct attr *parent, struct attr **attrs);
-void navit_add_message(struct navit *this_, const char *message);
-struct message *navit_get_messages(struct navit *this_);
-struct graphics *navit_get_graphics(struct navit *this_);
-struct vehicleprofile *navit_get_vehicleprofile(struct navit *this_);
-GList *navit_get_vehicleprofiles(struct navit *this_);
-void navit_set_destination(struct navit *this_, struct pcoord *c, const char *description, int async);
-void navit_set_destinations(struct navit *this_, struct pcoord *c, int count, const char *description, int async);
-void navit_add_destination_description(struct navit *this_, struct pcoord *c, const char *description);
-int navit_get_destinations(struct navit *this_, struct pcoord *pc, int count);
-int navit_get_destination_count(struct navit *this_);
-char* navit_get_destination_description(struct navit *this_, int n);
-void navit_remove_nth_waypoint(struct navit *this_, int n);
-void navit_remove_waypoint(struct navit *this_);
-char* navit_get_coord_description(struct navit *this_, struct pcoord *c);
-int navit_check_route(struct navit *this_);
-struct map* read_former_destinations_from_file(void);
-void navit_textfile_debug_log(struct navit *this_, const char *fmt, ...);
-void navit_textfile_debug_log_at(struct navit *this_, struct pcoord *pc, const char *fmt, ...);
-int navit_speech_estimate(struct navit *this_, char *str);
-void navit_say(struct navit *this_, const char *text);
-void navit_speak(struct navit *this_);
-void navit_window_roadbook_destroy(struct navit *this_);
-void navit_window_roadbook_new(struct navit *this_);
-void navit_init(struct navit *this_);
-void navit_zoom_to_rect(struct navit *this_, struct coord_rect *r);
-void navit_zoom_to_route(struct navit *this_, int orientation);
-void navit_set_center(struct navit *this_, struct pcoord *center, int set_timeout);
-void navit_set_center_cursor(struct navit *this_, int autozoom, int keep_orientation);
-void navit_set_center_screen(struct navit *this_, struct point *p, int set_timeout);
-int navit_set_attr(struct navit *this_, struct attr *attr);
-int navit_get_attr(struct navit *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int navit_add_attr(struct navit *this_, struct attr *attr);
-int navit_remove_attr(struct navit *this_, struct attr *attr);
-struct attr_iter *navit_attr_iter_new(void);
-void navit_attr_iter_destroy(struct attr_iter *iter);
-void navit_add_callback(struct navit *this_, struct callback *cb);
-void navit_remove_callback(struct navit *this_, struct callback *cb);
-void navit_set_position(struct navit *this_, struct pcoord *c);
-struct gui *navit_get_gui(struct navit *this_);
-struct transformation *navit_get_trans(struct navit *this_);
-struct route *navit_get_route(struct navit *this_);
-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);
-int navit_get_blocked(struct navit *this_);
-void navit_destroy(struct navit *this_);
-void navit_command_add_table(struct navit*this_, struct command_table *commands, int count);
-struct navit * navit_ref(struct navit *this_);
-void navit_unref(struct navit *this_);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/navit/navit_lfs.h b/navit/navit_lfs.h
deleted file mode 100644
index 8d8065401..000000000
--- a/navit/navit_lfs.h
+++ /dev/null
@@ -1,72 +0,0 @@
-#ifndef __NAVIT_LFS_H__
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2014 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.
- */
-
-#ifdef BUFSIZ
-#error "Don't #include stdio.h directly if you later #include navit_lfs.h"
-#endif
-#ifdef F_OK
-#error "Don't #include unistd.h directly if you later #include navit_lfs.h"
-#endif
-#ifdef O_RDWR
-#error "Don't #include unistd.h directly if you later #include navit_lfs.h"
-#endif
-
-#define _LARGEFILE_SOURCE
-#define _FILE_OFFSET_BITS 64
-#ifdef __MSVCRT__
-#define __USE_MINGW_FSEEK
-#endif
-
-#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#ifdef __MSVCRT__
-
-#undef lseek
-#define lseek(fd,offset,whence) _lseeki64(fd,offset,whence)
-
-#undef ftello
-#define ftello(f) ftello64(f)
-
-#undef fseeko
-#define fseeko(f,offset,whence) fseeko64(f,offset,whence)
-
-#undef off_t
-#define off_t long long
-
-#endif
-
-#ifdef HAVE_API_ANDROID
-#undef lseek
-#define lseek lseek64
-#endif
-
-#ifndef O_LARGEFILE
-#define O_LARGEFILE 0
-#endif
-
-#ifndef O_BINARY
-#define O_BINARY 0
-#endif
-
-#define __NAVIT_LFS_H__
-#endif
-
diff --git a/navit/navit_nls.c b/navit/navit_nls.c
deleted file mode 100644
index a4b32a45a..000000000
--- a/navit/navit_nls.c
+++ /dev/null
@@ -1,94 +0,0 @@
-#include "config.h"
-#include "debug.h"
-#include <glib.h>
-#include <navit_nls.h>
-#include <stdlib.h>
-#ifdef HAVE_API_WIN32_CE
-#include "libc.h"
-#endif
-
-#ifdef USE_LIBGNUINTL
-#include <libgnuintl.h>
-#else
-#include <libintl.h>
-#endif
-#ifdef USE_NATIVE_LANGUAGE_SUPPORT
-static GList *textdomains;
-#endif
-
-char *
-navit_nls_add_textdomain(const char *package, const char *dir)
-{
-#ifdef USE_NATIVE_LANGUAGE_SUPPORT
- char *ret=bindtextdomain(package, dir);
- bind_textdomain_codeset(package, "UTF-8");
- textdomains=g_list_append(textdomains, g_strdup(package));
- return ret;
-#else
- return NULL;
-#endif
-}
-
-void
-navit_nls_remove_textdomain(const char *package)
-{
-#ifdef USE_NATIVE_LANGUAGE_SUPPORT
- GList *i=textdomains;
- while (i) {
- if (!strcmp(i->data, package)) {
- textdomains=g_list_remove_all(textdomains, i->data);
- g_free(i->data);
- return;
- }
- i=g_list_next(i);
- }
-#endif
-}
-
-const char *
-navit_nls_gettext(const char *msgid)
-{
-#ifdef USE_NATIVE_LANGUAGE_SUPPORT
- GList *i=textdomains;
- while (i) {
- const char *ret=dgettext(i->data, msgid);
- if (ret != msgid)
- return ret;
- i=g_list_next(i);
- }
-#endif
- return msgid;
-}
-
-const char *
-navit_nls_ngettext(const char *msgid, const char *msgid_plural, unsigned long int n)
-{
-#ifdef USE_NATIVE_LANGUAGE_SUPPORT
- GList *i=textdomains;
- while (i) {
- const char *ret=dngettext(i->data, msgid, msgid_plural, n);
- if (ret != msgid && ret != msgid_plural)
- return ret;
- i=g_list_next(i);
- }
-#endif
- if (n == 1) {
- return msgid;
- } else {
- return msgid_plural;
- }
-}
-
-void
-navit_nls_main_init(void)
-{
-#ifdef USE_NATIVE_LANGUAGE_SUPPORT
-#ifdef FORCE_LOCALE
-#define STRINGIFY2(x) #x
-#define STRINGIFY(x) STRINGIFY2(x)
- setlocale(LC_MESSAGES,STRINGIFY(FORCE_LOCALE));
-#endif
- navit_nls_add_textdomain(PACKAGE, getenv("NAVIT_LOCALEDIR"));
- textdomain(PACKAGE);
-#endif
-}
diff --git a/navit/navit_nls.h b/navit/navit_nls.h
deleted file mode 100644
index e0fe2efe4..000000000
--- a/navit/navit_nls.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef __NAVIT_NLS_H__
-
-char *navit_nls_add_textdomain(const char *package, const char *dir);
-void navit_nls_remove_textdomain(const char *package);
-const char *navit_nls_gettext(const char *msgid);
-const char *navit_nls_ngettext(const char *msgid, const char *msgid_plural, unsigned long int n);
-void navit_nls_main_init(void);
-
-#define _(STRING) navit_nls_gettext(STRING)
-#define gettext_noop(String) String
-#define _n(STRING) gettext_noop(STRING)
-
-#define __NAVIT_NLS_H__
-#endif
diff --git a/navit/navit_shipped.xml b/navit/navit_shipped.xml
deleted file mode 100644
index 680308df0..000000000
--- a/navit/navit_shipped.xml
+++ /dev/null
@@ -1,7318 +0,0 @@
-<?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"/>
- <!-- 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"/>
-
- <!-- 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="gtk_drawing_area"/>
- <!-- 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" 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&amp;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&amp;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>
- <img cond='navit.autozoom_active==0' src='gui_zoom_auto' onclick='navit.autozoom_active=1;redraw_map();back_to_map()'><text>Auto zoom</text></img>
- <img cond='navit.autozoom_active==1' src='gui_zoom_manual' onclick='navit.autozoom_active=0;redraw_map();back_to_map()'><text>Manual zoom</text></img>
- <a href='#Settings Layers'><img src='gui_layers'><text>Layers</text></img></a>
- </a>
- <a name='Tools'><text>Tools</text>
- <img src='gui_actions' onclick='locale()'><text>Show Locale</text></img>
- <img src='gui_tools' onclick='network_info()'><text>Network info</text></img>
- </a>
- <a name='Route'><text>Route</text>
- <img cond='navit.route.route_status&amp;1' src='gui_zoom_route' onclick='navit.zoom_to_route();redraw_map();back_to_map()'><text>Zoom to route</text></img>
- <img src='gui_actions' onclick='route_description()'><text>Description</text></img>
- <img src='gui_heightprofile' onclick='route_height_profile()'><text>Height Profile</text></img>
- <img cond='navit.waypoints_flag &amp;&amp; (navit.route.route_status&amp;1)' src='cursor_still' onclick='waypoints()'><text>Waypoints</text></img>
- <img cond='navit.waypoints_flag &amp;&amp; (navit.route.route_status&amp;1)' src='gui_stop' onclick='navit.route_remove_last_waypoint()'><text>Drop last
-Waypoint</text></img>
- <img cond='navit.waypoints_flag &amp;&amp; (navit.route.route_status&amp;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 Layers' class='clist'><text>Layers</text>
- <script>
- foreach(layer;navit.layout.layer)
- if (layer.name)
- img("centry",layer.active?"gui_active":"gui_inactive",layer.name,
- "","navit.layout.layer[@name==%{se}].active=%{d}*",layer.name,!layer.active,"redraw_map();refresh();");
- else
- img("centry",layer.active?"gui_active":"gui_inactive",
- "","navit.layout.layer[@name==%{se}].active=%{d}*",layer.name,!layer.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)
- 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.
- You can find a list of all the available OSDs items here:
- http://wiki.navit-project.org/index.php/OSD -->
- <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="no" type="button" x="0" y="0" command="gui.fullscreen=!gui.fullscreen" src="toggle_fullscreen.png"/>
- <osd enabled="no" type="button" x="-96" y="0" command="gui.menu(1)" src="menu.png"/>
- <osd enabled="no" type="button" x="-96" y="-96" command="zoom_in()" src="zoom_in.png"/>
- <osd enabled="no" type="button" x="0" y="-96" command="zoom_out()" src="zoom_out.png"/>
-
- <!-- Vehicle with GPS enabled for gpsd on unix -->
- <vehicle name="Local GPS" profilename="car" enabled="yes" 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 baudrate=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://"/>
-
- <!-- 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="0x4040002" flags_reverse_mask="0x4040001" 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"/>
- <!--
- 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="yes">
- <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 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="Liberation Sans">
-
- <cursor w="57" h="57">
- <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="#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>
- <polygon color="#009C00">
- <coord x="-21" y="-18" />
- <coord x="0" y="-3" />
- <coord x="0" y="-9" />
- <coord x="-21" y="-18" />
- </polygon>
- <polygon color="#006500">
- <coord x="21" y="-18" />
- <coord x="0" y="-3" />
- <coord x="0" y="-9" />
- <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>
- <polyline color="#008500" width="1">
- <coord x="-21" y="-18" />
- <coord x="0" y="-3" />
- <coord x="0" y="-9" />
- <coord x="-21" y="-18" />
- </polyline>
- <polyline color="#008500" width="1">
- <coord x="21" y="-18" />
- <coord x="0" y="-3" />
- <coord x="0" y="-9" />
- <coord x="21" y="-18" />
- </polyline>
- </itemgra>
- </cursor>
-
- <layer name="polygons">
- <itemgra item_types="image" order="0-">
- <image/>
- </itemgra>
- <itemgra item_types="poly_nature_reserve" order="10-">
- <polygon color="#cedec6"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_glacier" order="10-">
- <polygon color="#ddecec"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_town" order="0-">
- <polygon color="#ffc895"/>
- <polyline color="#ebb481"/>
- </itemgra>
- <itemgra item_types="poly_naval_base" order="10-">
- <polygon color="#6a9993"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_airfield" order="10-">
- <polygon color="#ecd3cf"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_university" order="8-">
- <polygon color="#d68fb8"/>
- <polyline color="#881155"/>
- </itemgra>
- <itemgra item_types="poly_college" order="10-">
- <polygon color="#f4f4f4"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_attraction" order="10-">
- <polygon color="#01a36c"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_theme_park" order="10-">
- <polygon color="#01a36c"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_water_park" order="10-">
- <polygon color="#8cc1c8"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_zoo" order="10-">
- <polygon color="#ccbda5"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_depot" order="10-">
- <polygon color="#c2b098"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_railway" order="10-">
- <polygon color="#b3b9c5"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_port" order="10-">
- <polygon color="#8188a0"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_marina" order="10-">
- <polygon color="#aac4d2"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_commercial" order="10-">
- <polygon color="#eaeed3"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_retail" order="10-">
- <polygon color="#d6b690"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_plaza" order="10-">
- <polygon color="#cac4bc"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_battlefield" order="10-">
- <polygon color="#373d1c"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_archaeological_site" order="10-">
- <polygon color="#d9cfb6"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_ruins" order="10-">
- <polygon color="#d9cfb6"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_camp_site" order="10-">
- <polygon color="#339900"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_caravan_site" order="10-">
- <polygon color="#8d9723"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_golf_course" order="10-">
- <polygon color="#419a22"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_marsh" order="10-">
- <polygon color="#553f23"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_fell" order="10-">
- <polygon color="#bbb56b"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_greenfield" order="10-">
- <polygon color="#f1eee8"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_brownfield" order="10-">
- <polygon color="#b6b690"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_heath" order="10-">
- <polygon color="#d6d99f"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_scree" order="10-">
- <polygon color="#eee5dc"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_quarry" order="10-">
- <polygon color="#e4caad"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_landfill" order="10-">
- <polygon color="#999893"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_construction" order="10-">
- <polygon color="#f47216"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_range" order="10-">
- <polygon color="#6d6b63"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_danger_area" order="10-">
- <polygon color="#f2ba1b"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_common" order="10-">
- <polygon color="#7bab36"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_recreation_ground" order="10-">
- <polygon color="#8fa400"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_playground" order="10-">
- <polygon color="#b4c479"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_fishing" order="10-">
- <polygon color="#713907"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_allotments" order="10-">
- <polygon color="#eecfb3"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_garden" order="10-">
- <polygon color="#cfeca8"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_village_green" order="10-">
- <polygon color="#93ac47"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_picnic_site" order="10-">
- <polygon color="#797548"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_wood" order="0-">
- <polygon color="#8ec78d"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_greenhouse" order="10-">
- <polygon color="#f9e8cb"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_orchard" order="10-">
- <polygon color="#9edc90"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_plantnursery" order="10-">
- <polygon color="#addea2"/>
- <text text_size="5"/>
- </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_water_tiled" order="0-">
- <polygon color="#82c8ea"/>
- </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_beach" order="0-">
- <polygon color="#fbed66"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_mud" order="0-">
- <polygon color="#96ced4"/>
- <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="0-">
- <polygon color="#4af04f"/>
- </itemgra>
- <itemgra item_types="poly_industry,poly_place" order="0-">
- <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="poly_saltpond" order="10-">
- <polygon color="#d7804a"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_water,poly_basin,poly_reservoir" order="0-">
- <polygon color="#82c8ea"/>
- <polyline color="#5096b8"/>
- <text text_size="5"/>
- </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="1-">
- <polygon color="#bde3cb"/>
- </itemgra>
- <itemgra item_types="poly_car_parking" order="1-">
- <polygon color="#e7cf87"/>
- </itemgra>
- <itemgra item_types="poly_artwork" order="10-">
- <polygon color="#fefbc5"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_sports_stadium" order="10-">
- <polygon color="#6eb85d"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_sports_track" order="10-">
- <polygon color="#b6554e"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_barracks" order="10-">
- <polygon color="#b6a6a6"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_garages" order="10-">
- <polygon color="#deddcc"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_building" order="0-">
- <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>
- </layer>
- <layer name="heightlines">
- <itemgra item_types="height_line_1" order="7">
- <polyline color="#000000" width="1"/>
- </itemgra>
- <itemgra item_types="height_line_1" order="8-">
- <polyline color="#000000" width="3"/>
- <text text_size="8"/>
- </itemgra>
- <itemgra item_types="height_line_2" order="8">
- <polyline color="#000000" width="1"/>
- </itemgra>
- <itemgra item_types="height_line_2" order="9-">
- <polyline color="#000000" width="2"/>
- <text text_size="8"/>
- </itemgra>
- <itemgra item_types="height_line_3" order="9-11">
- <polyline color="#000000" width="1"/>
- </itemgra>
- <itemgra item_types="height_line_3" order="12-">
- <polyline color="#000000" width="1"/>
- <text text_size="8"/>
- </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.png"/>
- <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 Symbols">
- <itemgra item_types="mini_roundabout" order="12-">
- <icon src="mini_roundabout.png"/>
- </itemgra>
- <itemgra item_types="turning_circle" order="12-">
- <icon src="mini_roundabout.png"/>
- </itemgra>
- <itemgra item_types="poi_airport" order="5-">
- <icon src="airport.png"/>
- </itemgra>
- <itemgra item_types="town_ghost" order="10-">
- <icon src="ghost_town.xpm"/>
- </itemgra>
- <itemgra item_types="poi_hotel" order="12-">
- <icon src="hotel.png"/>
- </itemgra>
- <itemgra item_types="poi_car_parking" order="11-">
- <icon src="parking.png"/>
- </itemgra>
- <itemgra item_types="poi_car_dealer_parts" order="12-">
- <icon src="car_dealer.png"/>
- </itemgra>
- <itemgra item_types="poi_car_sharing" order="11-">
- <icon src="car_sharing.png"/>
- </itemgra>
- <itemgra item_types="poi_fuel" order="12-">
- <icon src="fuel.png"/>
- </itemgra>
- <itemgra item_types="poi_shopping" order="12-">
- <icon src="shopping.png"/>
- </itemgra>
- <itemgra item_types="poi_attraction" order="11-">
- <icon src="attraction.png"/>
- </itemgra>
- <itemgra item_types="poi_cafe" order="12-">
- <icon src="cafe.png"/>
- </itemgra>
- <itemgra item_types="poi_bar" order="12-">
- <icon src="bar.png"/>
- </itemgra>
- <itemgra item_types="poi_pub" order="12-">
- <icon src="beer.png"/>
- </itemgra>
- <itemgra item_types="poi_bridge" order="12-">
- <icon src="bridge.xpm"/>
- </itemgra>
- <itemgra item_types="highway_exit" order="11-">
- <icon src="exit.png"/>
- </itemgra>
- <itemgra item_types="poi_camp_rv" order="12-">
- <icon src="camping.png"/>
- </itemgra>
- <itemgra item_types="poi_museum_history" order="12-">
- <icon src="museum.png"/>
- </itemgra>
- <itemgra item_types="poi_hospital" order="12-">
- <icon src="hospital.png"/>
- </itemgra>
- <itemgra item_types="poi_dining" order="12-">
- <icon src="restaurant.png"/>
- </itemgra>
- <itemgra item_types="poi_fastfood" order="12-">
- <icon src="fastfood.png"/>
- </itemgra>
- <itemgra item_types="poi_police" order="12-">
- <icon src="police.png"/>
- </itemgra>
- <itemgra item_types="poi_auto_club" order="12-">
- <icon src="auto_club.xpm"/>
- </itemgra>
- <itemgra item_types="poi_autoservice" order="12-">
- <icon src="car_dealer.png"/>
- </itemgra>
- <itemgra item_types="poi_bank" order="12-">
- <icon src="bank.png"/>
- </itemgra>
- <itemgra item_types="poi_atm" order="12-">
- <icon src="atm.png"/>
- </itemgra>
- <itemgra item_types="poi_bay" order="12-">
- <icon src="bay.xpm"/>
- </itemgra>
- <itemgra item_types="poi_bend" order="12-">
- <icon src="bend.xpm"/>
- </itemgra>
- <itemgra item_types="poi_boat_ramp" order="12-">
- <icon src="boat_ramp.png"/>
- </itemgra>
- <itemgra item_types="poi_border_station" order="12-">
- <icon src="border_station.xpm"/>
- </itemgra>
- <itemgra item_types="poi_bowling" order="12-">
- <icon src="bowling.xpm"/>
- </itemgra>
- <itemgra item_types="poi_bus_station" order="11-">
- <icon src="bus.png"/>
- </itemgra>
- <itemgra item_types="poi_bus_stop" order="12-">
- <icon src="bus_stop.png"/>
- </itemgra>
- <itemgra item_types="poi_business_service" order="12-">
- <icon src="bussines_service.xpm"/>
- </itemgra>
- <itemgra item_types="poi_car_rent" order="12-">
- <icon src="car_rent.png"/>
- </itemgra>
- <itemgra item_types="poi_car_wash" order="12-">
- <icon src="car_wash.xpm"/>
- </itemgra>
- <itemgra item_types="poi_casino" order="12-">
- <icon src="casino.png"/>
- </itemgra>
- <itemgra item_types="poi_cemetery" order="12-">
- <icon src="cemetery.xpm"/>
- </itemgra>
- <itemgra item_types="poi_church" order="11-">
- <icon src="church.png"/>
- </itemgra>
- <itemgra item_types="poi_bahai" order="11-">
- <icon src="bahai.png"/>
- </itemgra>
- <itemgra item_types="poi_buddhist" order="11-">
- <icon src="buddhist.png"/>
- </itemgra>
- <itemgra item_types="poi_hindu" order="11-">
- <icon src="hindu.png"/>
- </itemgra>
- <itemgra item_types="poi_islamic" order="11-">
- <icon src="islamic.png"/>
- </itemgra>
- <itemgra item_types="poi_jain" order="11-">
- <icon src="jain.png"/>
- </itemgra>
- <itemgra item_types="poi_jewish" order="11-">
- <icon src="jewish.png"/>
- </itemgra>
- <itemgra item_types="poi_pagan" order="11-">
- <icon src="pagan.png"/>
- </itemgra>
- <itemgra item_types="poi_pastafarian" order="11-">
- <icon src="pastafarian.png"/>
- </itemgra>
- <itemgra item_types="poi_shinto" order="11-">
- <icon src="shinto.png"/>
- </itemgra>
- <itemgra item_types="poi_sikh" order="11-">
- <icon src="sikh.png"/>
- </itemgra>
- <itemgra item_types="poi_taoist" order="11-">
- <icon src="taoist.png"/>
- </itemgra>
- <itemgra item_types="poi_cinema" order="12-">
- <icon src="cinema.png"/>
- </itemgra>
- <itemgra item_types="poi_communication" order="12-">
- <icon src="communication.xpm"/>
- </itemgra>
- <itemgra item_types="poi_concert" order="12-">
- <icon src="concert.xpm"/>
- </itemgra>
- <itemgra item_types="poi_cove" order="12-">
- <icon src="cove.xpm"/>
- </itemgra>
- <itemgra item_types="poi_crossing" order="12-">
- <icon src="crossing.xpm"/>
- </itemgra>
- <itemgra item_types="poi_dam" order="12-">
- <icon src="dam.png"/>
- </itemgra>
- <itemgra item_types="poi_danger_area" order="12-">
- <icon src="danger_16_16.png"/>
- </itemgra>
- <itemgra item_types="poi_danger_sea_wreck" order="12-">
- <icon src="dangerous.xpm"/>
- </itemgra>
- <itemgra item_types="poi_daymark" order="12-">
- <icon src="daymark.png"/>
- </itemgra>
- <itemgra item_types="poi_diving" order="12-">
- <icon src="diving.xpm"/>
- </itemgra>
- <itemgra item_types="poi_drinking_water" order="13-">
- <icon src="drinking_water.png"/>
- </itemgra>
- <itemgra item_types="poi_emergency" order="12-">
- <icon src="emergency.png"/>
- </itemgra>
- <itemgra item_types="poi_fair" order="12-">
- <icon src="fair.xpm"/>
- </itemgra>
- <itemgra item_types="poi_firebrigade" order="12-">
- <icon src="firebrigade.png"/>
- </itemgra>
- <itemgra item_types="poi_fish" order="9-">
- <icon src="fish.xpm"/>
- </itemgra>
- <itemgra item_types="poi_forbidden_area" order="12-">
- <icon src="forbiden_area.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shop_bicycle" order="12-">
- <icon src="bicycle_shop.png"/>
- </itemgra>
- <itemgra item_types="poi_shop_gps" order="15-">
- <icon src="garmin.xpm"/>
- </itemgra>
- <itemgra item_types="poi_golf" order="12-">
- <icon src="golf.png"/>
- </itemgra>
- <itemgra item_types="poi_government_building" order="12-">
- <icon src="goverment_building.xpm"/>
- </itemgra>
- <itemgra item_types="poi_height" order="12-">
- <icon src="height.xpm"/>
- </itemgra>
- <itemgra item_types="poi_heliport" order="8-">
- <icon src="heliport.png"/>
- </itemgra>
- <itemgra item_types="poi_hotspring" order="12-">
- <icon src="hotspring.xpm"/>
- </itemgra>
- <itemgra item_types="poi_icesport" order="12-">
- <icon src="icesport.xpm"/>
- </itemgra>
- <itemgra item_types="poi_information" order="12-">
- <icon src="information.png"/>
- </itemgra>
- <itemgra item_types="poi_justice" order="12-">
- <icon src="justice.png"/>
- </itemgra>
- <itemgra item_types="poi_landmark" order="11-">
- <icon src="landmark.xpm"/>
- </itemgra>
- <itemgra item_types="poi_levee" order="12-">
- <icon src="levee.xpm"/>
- </itemgra>
- <itemgra item_types="poi_level_crossing" order="11-">
- <icon src="level_crossing.xpm"/>
- </itemgra>
- <itemgra item_types="poi_library" order="12-">
- <icon src="library.png"/>
- </itemgra>
- <itemgra item_types="poi_locale" order="12-">
- <icon src="locale.xpm"/>
- </itemgra>
- <itemgra item_types="poi_loudspeaker" order="12-">
- <icon src="loudspeaker.xpm"/>
- </itemgra>
- <itemgra item_types="poi_mall" order="12-">
- <icon src="mall.xpm"/>
- </itemgra>
- <itemgra item_types="poi_manmade_feature" order="12-">
- <icon src="manmade_feature.xpm"/>
- </itemgra>
- <itemgra item_types="poi_marine" order="12-">
- <icon src="marine.png"/>
- </itemgra>
- <itemgra item_types="poi_marine_type" order="12-">
- <icon src="marine_type.png"/>
- </itemgra>
- <itemgra item_types="poi_mark" order="12-">
- <icon src="mark.png"/>
- </itemgra>
- <itemgra item_types="poi_military" order="11-">
- <icon src="military.png"/>
- </itemgra>
- <itemgra item_types="poi_mine" order="12-">
- <icon src="mine.xpm"/>
- </itemgra>
- <itemgra item_types="poi_nondangerous" order="12-">
- <icon src="nondangerous.xpm"/>
- </itemgra>
- <itemgra item_types="poi_oil_field" order="12-">
- <icon src="oil_field.xpm"/>
- </itemgra>
- <itemgra item_types="poi_peak" order="7-">
- <icon src="peak.png"/>
- </itemgra>
- <itemgra item_types="poi_personal_service" order="12-">
- <icon src="personal_service.xpm"/>
- </itemgra>
- <itemgra item_types="poi_pharmacy" order="12-">
- <icon src="pharmacy.png"/>
- </itemgra>
- <itemgra item_types="poi_post_office,poi_post_box" order="13-">
- <icon src="post.png"/>
- </itemgra>
- <itemgra item_types="poi_public_office" order="12-">
- <icon src="public_office.xpm"/>
- </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.png"/>
- </itemgra>
- <itemgra item_types="poi_resort" order="12-">
- <icon src="resort.png"/>
- </itemgra>
- <itemgra item_types="poi_restaurant" order="12-">
- <icon src="restaurant.png"/>
- </itemgra>
- <itemgra item_types="poi_restricted_area" order="12-">
- <icon src="restricted_area.xpm"/>
- </itemgra>
- <itemgra item_types="poi_restroom" order="13-">
- <icon src="toilets.png"/>
- </itemgra>
- <itemgra item_types="poi_sailing" order="12-">
- <icon src="sailing.xpm"/>
- </itemgra>
- <itemgra item_types="poi_scenic_area" order="12-">
- <icon src="scenic_area.xpm"/>
- </itemgra>
- <itemgra item_types="poi_school" order="12-">
- <icon src="school.png"/>
- </itemgra>
- <itemgra item_types="poi_service" order="12-">
- <icon src="service.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shop_apparel" order="12-">
- <icon src="shop_apparel.png"/>
- </itemgra>
- <itemgra item_types="poi_shop_computer" order="12-">
- <icon src="shop_computer.png"/>
- </itemgra>
- <itemgra item_types="poi_shop_department" order="12-">
- <icon src="shop_department.png"/>
- </itemgra>
- <itemgra item_types="poi_shop_furniture" order="12-">
- <icon src="shop_furnish.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shop_grocery" order="12-">
- <icon src="shop_grocery.png"/>
- </itemgra>
- <itemgra item_types="poi_shop_handg" order="12-">
- <icon src="shop_handg.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shop_merchandise" order="12-">
- <icon src="shop_merchandise.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shop_retail" order="12-">
- <icon src="shop_retail.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shower" order="13-">
- <icon src="shower.xpm"/>
- </itemgra>
- <itemgra item_types="poi_skiing" order="11-">
- <icon src="skiing.png"/>
- </itemgra>
- <itemgra item_types="poi_social_service" order="12-">
- <icon src="social_service.xpm"/>
- </itemgra>
- <itemgra item_types="poi_sounding" order="12-">
- <icon src="sounding.xpm"/>
- </itemgra>
- <itemgra item_types="poi_sport" order="12-">
- <icon src="sport.xpm"/>
- </itemgra>
- <itemgra item_types="poi_stadium" order="11-">
- <icon src="stadium.png"/>
- </itemgra>
- <itemgra item_types="poi_swimming" order="12-">
- <icon src="swimming.png"/>
- </itemgra>
- <itemgra item_types="poi_telephone" order="13-">
- <icon src="telephone.png"/>
- </itemgra>
- <itemgra item_types="poi_theater" order="12-">
- <icon src="theater.png"/>
- </itemgra>
- <itemgra item_types="poi_tide" order="12-">
- <icon src="tide.xpm"/>
- </itemgra>
- <itemgra item_types="poi_tower" order="13-">
- <icon src="tower.xpm"/>
- </itemgra>
- <itemgra item_types="poi_townhall" order="12-">
- <icon src="townhall.png"/>
- </itemgra>
- <itemgra item_types="poi_trail" order="12-">
- <icon src="trail.xpm"/>
- </itemgra>
- <itemgra item_types="poi_truck_stop" order="12-">
- <icon src="truck_stop.xpm"/>
- </itemgra>
- <itemgra item_types="poi_tunnel" order="12-">
- <icon src="tunnel.xpm"/>
- </itemgra>
- <itemgra item_types="poi_wine" order="12-">
- <icon src="wine.xpm"/>
- </itemgra>
- <itemgra item_types="poi_worship" order="8-">
- <icon src="worship.png"/>
- </itemgra>
- <itemgra item_types="poi_wrecker" order="12-">
- <icon src="wrecker.xpm"/>
- </itemgra>
- <itemgra item_types="poi_zoo" order="9-">
- <icon src="zoo.png"/>
- </itemgra>
- <itemgra item_types="poi_picnic" order="12-">
- <icon src="picnic.png"/>
- </itemgra>
- <itemgra item_types="poi_playground" order="12-">
- <icon src="playground.png"/>
- </itemgra>
- <itemgra item_types="poi_gc_multi" order="12-">
- <icon src="gc_multi.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_tradi" order="12-">
- <icon src="gc_tradi.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_event" order="12-">
- <icon src="gc_event.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_mystery" order="12-">
- <icon src="gc_mystery.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_question" order="12-">
- <icon src="gc_question.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_stages" order="12-">
- <icon src="gc_stages.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_reference" order="12-">
- <icon src="gc_reference.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_webcam" order="12-">
- <icon src="gc_webcam.xpm"/>
- </itemgra>
- <itemgra item_types="traffic_signals" order="13-">
- <icon src="traffic_signals.png"/>
- </itemgra>
- <itemgra item_types="poi_wifi" order="13-">
- <icon src="wifi.png"/>
- </itemgra>
- <itemgra item_types="poi_taxi" order="13-">
- <icon src="taxi.png"/>
- </itemgra>
- <itemgra item_types="poi_image" order="12-">
- <image/>
- </itemgra>
- <!-- I'm not sure if the following stuff should appear in any layout. Maybe portions should only apply to the bicyle layout. -->
- <itemgra item_types="poi_bench" order="13-">
- <icon src="bench.png"/>
- </itemgra>
- <itemgra item_types="poi_biergarten" order="12-">
- <icon src="beer.png"/>
- </itemgra>
- <itemgra item_types="poi_boundary_stone" order="13-">
- <icon src="boundary_stone.png"/>
- </itemgra>
- <itemgra item_types="poi_castle" order="11-">
- <icon src="castle.png"/>
- </itemgra>
- <itemgra item_types="poi_ruins" order="11-">
- <icon src="ruins.png"/>
- </itemgra>
- <itemgra item_types="poi_hunting_stand" order="12-">
- <icon src="hunting_stand.png"/>
- </itemgra>
- <itemgra item_types="poi_memorial" order="12-">
- <icon src="memorial.png"/>
- </itemgra>
- <itemgra item_types="poi_monument" order="12-">
- <icon src="memorial.png"/>
- </itemgra>
- <itemgra item_types="poi_shelter" order="11-">
- <icon src="shelter.png"/>
- </itemgra>
- <itemgra item_types="poi_fountain" order="13-">
- <icon src="fountain.png"/>
- </itemgra>
- <itemgra item_types="poi_potable_water" order="13-">
- <icon src="drinking_water.png"/>
- </itemgra>
- <itemgra item_types="poi_toilets" order="12-">
- <icon src="toilets.png"/>
- </itemgra>
- <itemgra item_types="poi_viewpoint" order="10-">
- <icon src="viewpoint.png"/>
- </itemgra>
- <itemgra item_types="tec_common" order="11-">
- <icon src="tec_common.png"/>
- </itemgra>
- <itemgra item_types="vehicle" order="0-">
- <icon src="gui_vehicle_16_16.png" />
- </itemgra>
- <itemgra item_types="vehicle_pedestrian" order="0-">
- <icon src="gui_vehicle_pedestrian_16_16.png" />
- </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 Labels">
- <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_school,poi_service,poi_shop_bicycle,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-dark" daylayout="Car" color="#011001">
-
- <cursor w="57" h="57">
- <itemgra speed_range="-2">
- <polyline color="#0000BC" radius="0" width="4">
- <coord x="0" y="0" />
- </polyline>
- <circle color="#000085" radius="9" width="3">
- <coord x="0" y="0" />
- </circle>
- <circle color="#0000BC" radius="13" width="3">
- <coord x="0" y="0" />
- </circle>
- <circle color="#000085" radius="18" width="3">
- <coord x="0" y="0" />
- </circle>
- </itemgra>
- <itemgra speed_range="3-">
- <polygon color="#000085">
- <coord x="-21" y="-18" />
- <coord x="0" y="21" />
- <coord x="0" y="-3" />
- <coord x="-21" y="-18" />
- </polygon>
- <polygon color="#0000BC">
- <coord x="21" y="-18" />
- <coord x="0" y="21" />
- <coord x="0" y="-3" />
- <coord x="21" y="-18" />
- </polygon>
- <polygon color="#00009C">
- <coord x="-21" y="-18" />
- <coord x="0" y="-3" />
- <coord x="0" y="-9" />
- <coord x="-21" y="-18" />
- </polygon>
- <polygon color="#000065">
- <coord x="21" y="-18" />
- <coord x="0" y="-3" />
- <coord x="0" y="-9" />
- <coord x="21" y="-18" />
- </polygon>
- <polyline color="#000085" 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="#000085" 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="#000085" width="1">
- <coord x="-21" y="-18" />
- <coord x="0" y="-3" />
- <coord x="0" y="-9" />
- <coord x="-21" y="-18" />
- </polyline>
- <polyline color="#000085" width="1">
- <coord x="21" y="-18" />
- <coord x="0" y="-3" />
- <coord x="0" y="-9" />
- <coord x="21" y="-18" />
- </polyline>
- </itemgra>
- </cursor>
-
- <layer name="polygons"><!-- Colors based on Car layout; R/34 G/8 B/9 -->
- <itemgra item_types="image" order="0-">
- <image/>
- </itemgra>
- <itemgra item_types="poly_nature_reserve" order="10-">
- <polygon color="#061d15"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_glacier" order="10-">
- <polygon color="#071e19"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_town" order="0-">
- <polygon color="#191711"/>
- </itemgra>
- <itemgra item_types="poly_naval_base" order="10-">
- <polygon color="#03140f"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_airfield" order="10-">
- <polygon color="#071b16"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_university" order="8-">
- <polygon color="#140f14"/>
- </itemgra>
- <itemgra item_types="poly_college" order="10-">
- <polygon color="#071f1a"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_attraction" order="10-">
- <polygon color="#00150b"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_theme_park" order="10-">
- <polygon color="#00150b"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_water_park" order="10-">
- <polygon color="#041915"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_zoo" order="10-">
- <polygon color="#061811"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_depot" order="10-">
- <polygon color="#051610"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_railway" order="10-">
- <polygon color="#051815"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_port" order="10-">
- <polygon color="#031111"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_marina" order="10-">
- <polygon color="#051916"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_commercial" order="10-">
- <polygon color="#071f16"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_retail" order="10-">
- <polygon color="#06170f"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_plaza" order="10-">
- <polygon color="#061914"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_battlefield" order="10-">
- <polygon color="#010703"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_archaeological_site" order="10-">
- <polygon color="#061b13"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_ruins" order="10-">
- <polygon color="#061b13"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_camp_site" order="10-">
- <polygon color="#011400"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_caravan_site" order="10-">
- <polygon color="#041303"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_golf_course" order="10-">
- <polygon color="#021403"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_marsh" order="10-">
- <polygon color="#020803"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_fell" order="10-">
- <polygon color="#05170b"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_greenfield" order="10-">
- <polygon color="#071f19"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_brownfield" order="10-">
- <polygon color="#05170f"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_heath" order="10-">
- <polygon color="#061c11"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_scree" order="10-">
- <polygon color="#071d17"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_quarry" order="10-">
- <polygon color="#071a12"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_landfill" order="10-">
- <polygon color="#04130f"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_construction" order="10-">
- <polygon color="#070e02"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_range" order="10-">
- <polygon color="#030d0a"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_danger_area" order="10-">
- <polygon color="#071802"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_common" order="10-">
- <polygon color="#031605"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_recreation_ground" order="10-">
- <polygon color="#041500"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_playground" order="10-">
- <polygon color="#05190d"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_fishing" order="10-">
- <polygon color="#030700"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_allotments" order="10-">
- <polygon color="#071b13"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_garden" order="10-">
- <polygon color="#061e12"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_village_green" order="10-">
- <polygon color="#041607"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_picnic_site" order="10-">
- <polygon color="#030f07"/>
- <text text_size="5"/>
- </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_greenhouse" order="10-">
- <polygon color="#071d16"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_orchard" order="10-">
- <polygon color="#041b10"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_plantnursery" order="10-">
- <polygon color="#051b12"/>
- <text 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_land" order="0-">
- <polygon color="#011001"/>
- <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_park" order="0-">
- <polygon color="#041a06"/>
- <text color="#55c4bd" background_color="#000000" text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_beach" order="0-">
- <polygon color="#081f0b"/>
- <text color="#55c4bd" background_color="#000000" text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_mud" order="0-">
- <polygon color="#02071d"/>
- <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="poly_saltpond" order="10-">
- <polygon color="#061008"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_water,poly_basin,poly_reservoir" order="0-">
- <polygon color="#010321"/>
- <text color="#55c4bd" background_color="#000000" text_size="5"/>
- </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_artwork" order="10-">
- <polygon color="#082015"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_sports_stadium" order="10-">
- <polygon color="#03180a"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_sports_track" order="10-">
- <polygon color="#050b08"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_barracks" order="10-">
- <polygon color="#051511"/>
- <text text_size="5"/>
- </itemgra>
- <itemgra item_types="poly_garages" order="10-">
- <polygon color="#061b16"/>
- <text text_size="5"/>
- </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>
- </layer>
- <layer name="heightlines">
- <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.png"/>
- <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="POI Symbols">
- <itemgra item_types="mini_roundabout" order="12-">
- <icon src="mini_roundabout.png"/>
- </itemgra>
- <itemgra item_types="turning_circle" order="12-">
- <icon src="mini_roundabout.png"/>
- </itemgra>
- <itemgra item_types="poi_airport" order="5-">
- <icon src="airport.png"/>
- </itemgra>
- <itemgra item_types="town_ghost" order="0-">
- <icon src="ghost_town.xpm"/>
- </itemgra>
- <itemgra item_types="poi_hotel" order="12-">
- <icon src="hotel.png"/>
- </itemgra>
- <itemgra item_types="poi_car_parking" order="11-">
- <icon src="parking.png"/>
- </itemgra>
- <itemgra item_types="poi_car_sharing" order="11-">
- <icon src="car_sharing.png"/>
- </itemgra>
- <itemgra item_types="poi_car_dealer_parts" order="0-">
- <icon src="car_dealer.png"/>
- </itemgra>
- <itemgra item_types="poi_fuel" order="10-">
- <icon src="fuel.png"/>
- </itemgra>
- <itemgra item_types="poi_shopping" order="10-">
- <icon src="shopping.png"/>
- </itemgra>
- <itemgra item_types="poi_attraction" order="8-">
- <icon src="attraction.png"/>
- </itemgra>
- <itemgra item_types="poi_cafe" order="12-">
- <icon src="cafe.png"/>
- </itemgra>
- <itemgra item_types="poi_bar" order="12-">
- <icon src="bar.png"/>
- </itemgra>
- <itemgra item_types="poi_pub" order="12-">
- <icon src="beer.png"/>
- </itemgra>
- <itemgra item_types="poi_bridge" order="0-">
- <icon src="bridge.xpm"/>
- </itemgra>
- <itemgra item_types="highway_exit" order="11-">
- <icon src="exit.png"/>
- </itemgra>
- <itemgra item_types="poi_camp_rv" order="9-">
- <icon src="camping.png"/>
- </itemgra>
- <itemgra item_types="poi_museum_history" order="12-">
- <icon src="museum.png"/>
- </itemgra>
- <itemgra item_types="poi_hospital" order="12-">
- <icon src="hospital.png"/>
- </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.png"/>
- </itemgra>
- <itemgra item_types="poi_fastfood" order="12-">
- <icon src="fastfood.png"/>
- </itemgra>
- <itemgra item_types="poi_police" order="12-">
- <icon src="police.png"/>
- </itemgra>
- <itemgra item_types="poi_auto_club" order="0-">
- <icon src="auto_club.xpm"/>
- </itemgra>
- <itemgra item_types="poi_autoservice" order="0-">
- <icon src="car_dealer.png"/>
- </itemgra>
- <itemgra item_types="poi_bank" order="12-">
- <icon src="bank.png"/>
- </itemgra>
- <itemgra item_types="poi_atm" order="12-">
- <icon src="atm.png"/>
- </itemgra>
- <itemgra item_types="poi_bay" order="0-">
- <icon src="bay.xpm"/>
- </itemgra>
- <itemgra item_types="poi_bend" order="0-">
- <icon src="bend.xpm"/>
- </itemgra>
- <itemgra item_types="poi_boat_ramp" order="12-">
- <icon src="boat_ramp.png"/>
- </itemgra>
- <itemgra item_types="poi_border_station" order="0-">
- <icon src="border_station.xpm"/>
- </itemgra>
- <itemgra item_types="poi_bowling" order="0-">
- <icon src="bowling.xpm"/>
- </itemgra>
- <itemgra item_types="poi_bus_station" order="12-">
- <icon src="bus.png"/>
- </itemgra>
- <itemgra item_types="poi_bus_stop" order="12-">
- <icon src="bus_stop.png"/>
- </itemgra>
- <itemgra item_types="poi_business_service" order="0-">
- <icon src="bussines_service.xpm"/>
- </itemgra>
- <itemgra item_types="poi_car_rent" order="11-">
- <icon src="car_rent.png"/>
- </itemgra>
- <itemgra item_types="poi_car_wash" order="12-">
- <icon src="car_wash.xpm"/>
- </itemgra>
- <itemgra item_types="poi_casino" order="11-">
- <icon src="casino.png"/>
- </itemgra>
- <itemgra item_types="poi_cemetery" order="11-">
- <icon src="cemetery.xpm"/>
- </itemgra>
- <itemgra item_types="poi_church" order="11-">
- <icon src="church.png"/>
- </itemgra>
- <itemgra item_types="poi_bahai" order="11-">
- <icon src="bahai.png"/>
- </itemgra>
- <itemgra item_types="poi_buddhist" order="11-">
- <icon src="buddhist.png"/>
- </itemgra>
- <itemgra item_types="poi_hindu" order="11-">
- <icon src="hindu.png"/>
- </itemgra>
- <itemgra item_types="poi_islamic" order="11-">
- <icon src="islamic.png"/>
- </itemgra>
- <itemgra item_types="poi_jain" order="11-">
- <icon src="jain.png"/>
- </itemgra>
- <itemgra item_types="poi_jewish" order="11-">
- <icon src="jewish.png"/>
- </itemgra>
- <itemgra item_types="poi_pagan" order="11-">
- <icon src="pagan.png"/>
- </itemgra>
- <itemgra item_types="poi_pastafarian" order="11-">
- <icon src="pastafarian.png"/>
- </itemgra>
- <itemgra item_types="poi_shinto" order="11-">
- <icon src="shinto.png"/>
- </itemgra>
- <itemgra item_types="poi_sikh" order="11-">
- <icon src="sikh.png"/>
- </itemgra>
- <itemgra item_types="poi_taoist" order="11-">
- <icon src="taoist.png"/>
- </itemgra>
- <itemgra item_types="poi_cinema" order="12-">
- <icon src="cinema.png"/>
- </itemgra>
- <itemgra item_types="poi_communication" order="0-">
- <icon src="communication.xpm"/>
- </itemgra>
- <itemgra item_types="poi_concert" order="0-">
- <icon src="concert.xpm"/>
- </itemgra>
- <itemgra item_types="poi_cove" order="0-">
- <icon src="cove.xpm"/>
- </itemgra>
- <itemgra item_types="poi_crossing" order="0-">
- <icon src="crossing.xpm"/>
- </itemgra>
- <itemgra item_types="poi_dam" order="0-">
- <icon src="dam.png"/>
- </itemgra>
- <itemgra item_types="poi_danger_area" order="12-">
- <icon src="danger_16_16.png"/>
- </itemgra>
- <itemgra item_types="poi_danger_sea_wreck" order="0-">
- <icon src="dangerous.xpm"/>
- </itemgra>
- <itemgra item_types="poi_daymark" order="0-">
- <icon src="daymark.png"/>
- </itemgra>
- <itemgra item_types="poi_diving" order="0-">
- <icon src="diving.xpm"/>
- </itemgra>
- <itemgra item_types="poi_drinking_water" order="0-">
- <icon src="drinking_water.png"/>
- </itemgra>
- <itemgra item_types="poi_emergency" order="0-">
- <icon src="emergency.png"/>
- </itemgra>
- <itemgra item_types="poi_fair" order="0-">
- <icon src="fair.xpm"/>
- </itemgra>
- <itemgra item_types="poi_firebrigade" order="12-">
- <icon src="firebrigade.png"/>
- </itemgra>
- <itemgra item_types="poi_fish" order="0-">
- <icon src="fish.xpm"/>
- </itemgra>
- <itemgra item_types="poi_forbidden_area" order="0-">
- <icon src="forbiden_area.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shop_gps" order="0-">
- <icon src="garmin.xpm"/>
- </itemgra>
- <itemgra item_types="poi_golf" order="12-">
- <icon src="golf.png"/>
- </itemgra>
- <itemgra item_types="poi_government_building" order="0-">
- <icon src="goverment_building.xpm"/>
- </itemgra>
- <itemgra item_types="poi_height" order="0-">
- <icon src="height.xpm"/>
- </itemgra>
- <itemgra item_types="poi_heliport" order="7-">
- <icon src="heliport.png"/>
- </itemgra>
- <itemgra item_types="poi_hotspring" order="0-">
- <icon src="hotspring.xpm"/>
- </itemgra>
- <itemgra item_types="poi_icesport" order="0-">
- <icon src="icesport.xpm"/>
- </itemgra>
- <itemgra item_types="poi_information" order="12-">
- <icon src="information.png"/>
- </itemgra>
- <itemgra item_types="poi_justice" order="10-">
- <icon src="justice.png"/>
- </itemgra>
- <itemgra item_types="poi_landmark" order="0-">
- <icon src="landmark.png"/>
- </itemgra>
- <itemgra item_types="poi_levee" order="0-">
- <icon src="levee.xpm"/>
- </itemgra>
- <itemgra item_types="poi_level_crossing" order="11-">
- <icon src="level_crossing.xpm"/>
- </itemgra>
- <itemgra item_types="poi_library" order="12-">
- <icon src="library.png"/>
- </itemgra>
- <itemgra item_types="poi_locale" order="0-">
- <icon src="locale.xpm"/>
- </itemgra>
- <itemgra item_types="poi_loudspeaker" order="0-">
- <icon src="loudspeaker.xpm"/>
- </itemgra>
- <itemgra item_types="poi_mall" order="0-">
- <icon src="mall.xpm"/>
- </itemgra>
- <itemgra item_types="poi_manmade_feature" order="0-">
- <icon src="manmade_feature.xpm"/>
- </itemgra>
- <itemgra item_types="poi_marine" order="0-">
- <icon src="marine.png"/>
- </itemgra>
- <itemgra item_types="poi_marine_type" order="0-">
- <icon src="marine_type.png"/>
- </itemgra>
- <itemgra item_types="poi_mark" order="0-">
- <icon src="mark.png"/>
- </itemgra>
- <itemgra item_types="poi_military" order="0-">
- <icon src="military.png"/>
- </itemgra>
- <itemgra item_types="poi_mine" order="0-">
- <icon src="mine.xpm"/>
- </itemgra>
- <itemgra item_types="poi_nondangerous" order="0-">
- <icon src="nondangerous.xpm"/>
- </itemgra>
- <itemgra item_types="poi_oil_field" order="0-">
- <icon src="oil_field.xpm"/>
- </itemgra>
- <itemgra item_types="poi_peak" order="6-">
- <icon src="peak.png"/>
- </itemgra>
- <itemgra item_types="poi_personal_service" order="0-">
- <icon src="personal_service.xpm"/>
- </itemgra>
- <itemgra item_types="poi_pharmacy" order="12-">
- <icon src="pharmacy.png"/>
- </itemgra>
- <itemgra item_types="poi_post_office,poi_post_box" order="13-">
- <icon src="post.png"/>
- </itemgra>
- <itemgra item_types="poi_public_office" order="0-">
- <icon src="public_office.xpm"/>
- </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.png"/>
- </itemgra>
- <itemgra item_types="poi_resort" order="0-">
- <icon src="resort.png"/>
- </itemgra>
- <itemgra item_types="poi_restaurant" order="12-">
- <icon src="restaurant.png"/>
- </itemgra>
- <itemgra item_types="poi_restricted_area" order="0-">
- <icon src="restricted_area.xpm"/>
- </itemgra>
- <itemgra item_types="poi_restroom" order="13-">
- <icon src="toilets.png"/>
- </itemgra>
- <itemgra item_types="poi_sailing" order="0-">
- <icon src="sailing.xpm"/>
- </itemgra>
- <itemgra item_types="poi_scenic_area" order="0-">
- <icon src="scenic_area.xpm"/>
- </itemgra>
- <itemgra item_types="poi_school" order="12-">
- <icon src="school.png"/>
- </itemgra>
- <itemgra item_types="poi_service" order="0-">
- <icon src="service.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shop_apparel" order="0-">
- <icon src="shop_apparel.png"/>
- </itemgra>
- <itemgra item_types="poi_shop_computer" order="0-">
- <icon src="shop_computer.png"/>
- </itemgra>
- <itemgra item_types="poi_shop_department" order="0-">
- <icon src="shop_department.png"/>
- </itemgra>
- <itemgra item_types="poi_shop_furniture" order="0-">
- <icon src="shop_furnish.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shop_grocery" order="0-">
- <icon src="shop_grocery.png"/>
- </itemgra>
- <itemgra item_types="poi_shop_handg" order="0-">
- <icon src="shop_handg.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shop_merchandise" order="0-">
- <icon src="shop_merchandise.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shop_retail" order="0-">
- <icon src="shop_retail.xpm"/>
- </itemgra>
- <itemgra item_types="poi_shower" order="0-">
- <icon src="shower.xpm"/>
- </itemgra>
- <itemgra item_types="poi_skiing" order="12-">
- <icon src="skiing.png"/>
- </itemgra>
- <itemgra item_types="poi_social_service" order="0-">
- <icon src="social_service.xpm"/>
- </itemgra>
- <itemgra item_types="poi_sounding" order="0-">
- <icon src="sounding.xpm"/>
- </itemgra>
- <itemgra item_types="poi_sport" order="12-">
- <icon src="sport.xpm"/>
- </itemgra>
- <itemgra item_types="poi_stadium" order="0-">
- <icon src="stadium.png"/>
- </itemgra>
- <itemgra item_types="poi_swimming" order="12-">
- <icon src="swimming.png"/>
- </itemgra>
- <itemgra item_types="poi_taxi" order="13-">
- <icon src="taxi.png"/>
- </itemgra>
- <itemgra item_types="poi_telephone" order="13-">
- <icon src="telephone.png"/>
- </itemgra>
- <itemgra item_types="poi_theater" order="12-">
- <icon src="theater.png"/>
- </itemgra>
- <itemgra item_types="poi_tide" order="0-">
- <icon src="tide.xpm"/>
- </itemgra>
- <itemgra item_types="poi_tower" order="13-">
- <icon src="tower.xpm"/>
- </itemgra>
- <itemgra item_types="poi_townhall" order="12-">
- <icon src="townhall.png"/>
- </itemgra>
- <itemgra item_types="poi_trail" order="0-">
- <icon src="trail.xpm"/>
- </itemgra>
- <itemgra item_types="poi_truck_stop" order="0-">
- <icon src="truck_stop.xpm"/>
- </itemgra>
- <itemgra item_types="poi_tunnel" order="0-">
- <icon src="tunnel.xpm"/>
- </itemgra>
- <itemgra item_types="poi_wifi" order="11-">
- <icon src="wifi.png"/>
- </itemgra>
- <itemgra item_types="poi_wine" order="0-">
- <icon src="wine.xpm"/>
- </itemgra>
- <itemgra item_types="poi_worship" order="0-">
- <icon src="worship.png"/>
- </itemgra>
- <itemgra item_types="poi_wrecker" order="0-">
- <icon src="wrecker.xpm"/>
- </itemgra>
- <itemgra item_types="poi_zoo" order="10-">
- <icon src="zoo.png"/>
- </itemgra>
- <itemgra item_types="poi_picnic" order="11-">
- <icon src="picnic.png"/>
- </itemgra>
- <itemgra item_types="poi_playground" order="12-">
- <icon src="playground.png"/>
- </itemgra>
- <itemgra item_types="poi_gc_multi" order="0-">
- <icon src="gc_multi.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_tradi" order="0-">
- <icon src="gc_tradi.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_event" order="0-">
- <icon src="gc_event.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_mystery" order="0-">
- <icon src="gc_mystery.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_question" order="0-">
- <icon src="gc_question.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_stages" order="0-">
- <icon src="gc_stages.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_reference" order="0-">
- <icon src="gc_reference.xpm"/>
- </itemgra>
- <itemgra item_types="poi_gc_webcam" order="0-">
- <icon src="gc_webcam.xpm"/>
- </itemgra>
- <itemgra item_types="traffic_signals" order="13-">
- <icon src="traffic_signals.png"/>
- </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="13-">
- <icon src="bench.png"/>
- </itemgra>
- <itemgra item_types="poi_biergarten" order="12-">
- <icon src="beer.png"/>
- </itemgra>
- <itemgra item_types="poi_boundary_stone" order="13-">
- <icon src="boundary_stone.png"/>
- </itemgra>
- <itemgra item_types="poi_castle" order="12-">
- <icon src="castle.png"/>
- </itemgra>
- <itemgra item_types="poi_hunting_stand" order="13-">
- <icon src="hunting_stand.png"/>
- </itemgra>
- <itemgra item_types="poi_memorial" order="12-">
- <icon src="memorial.png"/>
- </itemgra>
- <itemgra item_types="poi_monument" order="12-">
- <icon src="memorial.png"/>
- </itemgra>
- <itemgra item_types="poi_shelter" order="10-">
- <icon src="shelter.png"/>
- </itemgra>
- <itemgra item_types="poi_fountain" order="12-">
- <icon src="fountain.png"/>
- </itemgra>
- <itemgra item_types="poi_potable_water" order="12-">
- <icon src="drinking_water.png"/>
- </itemgra>
- <itemgra item_types="poi_toilets" order="12-">
- <icon src="toilets.png"/>
- </itemgra>
- <itemgra item_types="poi_viewpoint" order="12-">
- <icon src="viewpoint.png"/>
- </itemgra>
- <itemgra item_types="tec_common" order="11-">
- <icon src="tec_common.png"/>
- </itemgra>
- <itemgra item_types="vehicle" order="0-">
- <icon src="gui_vehicle_16_16.png" />
- </itemgra>
- <itemgra item_types="vehicle_pedestrian" order="0-">
- <icon src="gui_vehicle_pedestrian_16_16.png" />
- </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="57" h="57">
- <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="13-">
- <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.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_left_2" order="0-">
- <icon src="nav_left_2_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_left_3" order="0-">
- <icon src="nav_left_3_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_right_1" order="0-">
- <icon src="nav_right_1_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_right_2" order="0-">
- <icon src="nav_right_2_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_right_3" order="0-">
- <icon src="nav_right_3_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_straight" order="0-">
- <icon src="nav_straight_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_turnaround_left" order="0-">
- <icon src="nav_turnaround_left_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_turnaround_right" order="0-">
- <icon src="nav_turnaround_right_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_l1" order="0-">
- <icon src="nav_roundabout_l1_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_r1" order="0-">
- <icon src="nav_roundabout_r1_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_l2" order="0-">
- <icon src="nav_roundabout_l2_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_r2" order="0-">
- <icon src="nav_roundabout_r2_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_l3" order="0-">
- <icon src="nav_roundabout_l3_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_r3" order="0-">
- <icon src="nav_roundabout_r3_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_l4" order="0-">
- <icon src="nav_roundabout_l4_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_r4" order="0-">
- <icon src="nav_roundabout_r4_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_l5" order="0-">
- <icon src="nav_roundabout_l5_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_r5" order="0-">
- <icon src="nav_roundabout_r5_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_l6" order="0-">
- <icon src="nav_roundabout_l6_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_r6" order="0-">
- <icon src="nav_roundabout_r6_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_l7" order="0-">
- <icon src="nav_roundabout_l7_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_r7" order="0-">
- <icon src="nav_roundabout_r7_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_l8" order="0-">
- <icon src="nav_roundabout_l8_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_roundabout_r8" order="0-">
- <icon src="nav_roundabout_r8_bk.png" w="32" h="32" />
- </itemgra>
- <itemgra item_types="nav_keep_left" order="0-">
- <icon src="nav_keep_left_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_merge_left" order="0-">
- <icon src="nav_merge_left_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_keep_right" order="0-">
- <icon src="nav_keep_right_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_merge_right" order="0-">
- <icon src="nav_merge_right_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_exit_left" order="0-">
- <icon src="nav_exit_left_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="nav_exit_right" order="0-">
- <icon src="nav_exit_right_bk.png" w="32" h="32"/>
- </itemgra>
- <itemgra item_types="route_end" order="0-">
- <icon src="nav_destination_bk.png" 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.png" />
- </itemgra>
- <itemgra item_types="announcement" order="7-">
- <icon src="gui_sound_32_32.png" />
- <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.png" />
- </itemgra>
- <itemgra item_types="turning_circle" order="12-">
- <icon src="mini_roundabout.png" />
- </itemgra>
- <itemgra item_types="poi_airport" order="6-">
- <icon src="airport.png" />
- </itemgra>
- <itemgra item_types="poi_fuel" order="12-">
- <icon src="fuel.png" />
- </itemgra>
- <itemgra item_types="poi_bridge" order="12-">
- <icon src="bridge.png" />
- </itemgra>
- <itemgra item_types="highway_exit" order="12-">
- <icon src="exit.png" />
- </itemgra>
- <itemgra item_types="poi_auto_club" order="13-">
- <icon src="auto_club.png" />
- </itemgra>
- <itemgra item_types="poi_bank" order="13-">
- <icon src="bank.png" />
- </itemgra>
- <itemgra item_types="poi_atm" order="13-">
- <icon src="atm.png"/>
- </itemgra>
- <itemgra item_types="poi_danger_area" order="13-">
- <icon src="danger_16_16.png" />
- </itemgra>
- <itemgra item_types="poi_forbidden_area" order="13-">
- <icon src="forbiden_area.png" />
- </itemgra>
- <itemgra item_types="poi_tunnel" order="12-">
- <icon src="tunnel.png" />
- </itemgra>
- <itemgra item_types="traffic_signals" order="14-">
- <icon src="traffic_signals.png" />
- </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.png" />
- </itemgra>
- <itemgra item_types="turning_circle" order="12-">
- <icon src="mini_roundabout.png" />
- </itemgra>
- <itemgra item_types="poi_airport" order="5-">
- <icon src="airport.png" />
- </itemgra>
- <itemgra item_types="town_ghost" order="10-">
- <icon src="ghost_town.png" />
- </itemgra>
- <itemgra item_types="poi_hotel" order="12-">
- <icon src="hotel.png" />
- </itemgra>
- <itemgra item_types="poi_car_parking" order="11-">
- <icon src="parking.png" />
- </itemgra>
- <itemgra item_types="poi_car_dealer_parts" order="12-">
- <icon src="car_dealer.png" />
- </itemgra>
- <itemgra item_types="poi_fuel" order="12-">
- <icon src="fuel.png" />
- </itemgra>
- <itemgra item_types="poi_shopping" order="12-">
- <icon src="shopping.png" />
- </itemgra>
- <itemgra item_types="poi_attraction" order="11-">
- <icon src="attraction.png" />
- </itemgra>
- <itemgra item_types="poi_cafe" order="12-">
- <icon src="cafe.png" />
- </itemgra>
- <itemgra item_types="poi_bar" order="12-">
- <icon src="bar.png" />
- </itemgra>
- <itemgra item_types="poi_pub" order="12-">
- <icon src="beer.png" />
- </itemgra>
- <itemgra item_types="poi_bridge" order="12-">
- <icon src="bridge.png" />
- </itemgra>
- <itemgra item_types="highway_exit" order="11-">
- <icon src="exit.png" />
- </itemgra>
- <itemgra item_types="poi_camp_rv" order="12-">
- <icon src="camping.png" />
- </itemgra>
- <itemgra item_types="poi_museum_history" order="12-">
- <icon src="museum.png" />
- </itemgra>
- <itemgra item_types="poi_hospital" order="12-">
- <icon src="hospital.png" />
- </itemgra>
- <itemgra item_types="poi_dining" order="12-">
- <icon src="restaurant.png"/>
- </itemgra>
- <itemgra item_types="poi_fastfood" order="12-">
- <icon src="fastfood.png" />
- </itemgra>
- <itemgra item_types="poi_police" order="12-">
- <icon src="police.png" />
- </itemgra>
- <itemgra item_types="poi_auto_club" order="12-">
- <icon src="auto_club.png" />
- </itemgra>
- <itemgra item_types="poi_autoservice" order="12-">
- <icon src="car_dealer.png" />
- </itemgra>
- <itemgra item_types="poi_bank" order="12-">
- <icon src="bank.png" />
- </itemgra>
- <itemgra item_types="poi_atm" order="12-">
- <icon src="atm.png"/>
- </itemgra>
- <itemgra item_types="poi_bay" order="12-">
- <icon src="bay.png" />
- </itemgra>
- <itemgra item_types="poi_bend" order="12-">
- <icon src="bend.png" />
- </itemgra>
- <itemgra item_types="poi_boat_ramp" order="12-">
- <icon src="boat_ramp.png" />
- </itemgra>
- <itemgra item_types="poi_border_station" order="12-">
- <icon src="border_station.png" />
- </itemgra>
- <itemgra item_types="poi_bowling" order="12-">
- <icon src="bowling.png" />
- </itemgra>
- <itemgra item_types="poi_bus_station" order="11-">
- <icon src="bus.png" />
- </itemgra>
- <itemgra item_types="poi_bus_stop" order="12-">
- <icon src="bus_stop.png" />
- </itemgra>
- <itemgra item_types="poi_business_service" order="12-">
- <icon src="bussines_service.png" />
- </itemgra>
- <itemgra item_types="poi_car_rent" order="12-">
- <icon src="car_rent.png" />
- </itemgra>
- <itemgra item_types="poi_car_sharing" order="11-">
- <icon src="car_sharing.png"/>
- </itemgra>
- <itemgra item_types="poi_car_wash" order="12-">
- <icon src="car_wash.png" />
- </itemgra>
- <itemgra item_types="poi_casino" order="12-">
- <icon src="casino.png" />
- </itemgra>
- <itemgra item_types="poi_cemetery" order="12-">
- <icon src="cemetery.xpm" />
- </itemgra>
- <itemgra item_types="poi_church" order="11-">
- <icon src="church.png" />
- </itemgra>
- <itemgra item_types="poi_bahai" order="11-">
- <icon src="bahai.png"/>
- </itemgra>
- <itemgra item_types="poi_buddhist" order="11-">
- <icon src="buddhist.png"/>
- </itemgra>
- <itemgra item_types="poi_hindu" order="11-">
- <icon src="hindu.png"/>
- </itemgra>
- <itemgra item_types="poi_islamic" order="11-">
- <icon src="islamic.png"/>
- </itemgra>
- <itemgra item_types="poi_jain" order="11-">
- <icon src="jain.png"/>
- </itemgra>
- <itemgra item_types="poi_jewish" order="11-">
- <icon src="jewish.png"/>
- </itemgra>
- <itemgra item_types="poi_pagan" order="11-">
- <icon src="pagan.png"/>
- </itemgra>
- <itemgra item_types="poi_pastafarian" order="11-">
- <icon src="pastafarian.png"/>
- </itemgra>
- <itemgra item_types="poi_shinto" order="11-">
- <icon src="shinto.png"/>
- </itemgra>
- <itemgra item_types="poi_sikh" order="11-">
- <icon src="sikh.png"/>
- </itemgra>
- <itemgra item_types="poi_taoist" order="11-">
- <icon src="taoist.png"/>
- </itemgra>
- <itemgra item_types="poi_cinema" order="12-">
- <icon src="cinema.png" />
- </itemgra>
- <itemgra item_types="poi_communication" order="12-">
- <icon src="communication.png" />
- </itemgra>
- <itemgra item_types="poi_concert" order="12-">
- <icon src="concert.png" />
- </itemgra>
- <itemgra item_types="poi_cove" order="12-">
- <icon src="cove.png" />
- </itemgra>
- <itemgra item_types="poi_crossing" order="12-">
- <icon src="crossing.png" />
- </itemgra>
- <itemgra item_types="poi_dam" order="12-">
- <icon src="dam.png" />
- </itemgra>
- <itemgra item_types="poi_danger_area" order="12-">
- <icon src="danger_16_16.png" />
- </itemgra>
- <itemgra item_types="poi_danger_sea_wreck" order="12-">
- <icon src="dangerous.png" />
- </itemgra>
- <itemgra item_types="poi_daymark" order="12-">
- <icon src="daymark.png" />
- </itemgra>
- <itemgra item_types="poi_diving" order="12-">
- <icon src="diving.png" />
- </itemgra>
- <itemgra item_types="poi_drinking_water" order="13-">
- <icon src="drinking_water.png" />
- </itemgra>
- <itemgra item_types="poi_emergency" order="12-">
- <icon src="emergency.png" />
- </itemgra>
- <itemgra item_types="poi_fair" order="12-">
- <icon src="fair.png" />
- </itemgra>
- <itemgra item_types="poi_firebrigade" order="12-">
- <icon src="firebrigade.png" />
- </itemgra>
- <itemgra item_types="poi_fish" order="9-">
- <icon src="fish.png" />
- </itemgra>
- <itemgra item_types="poi_forbidden_area" order="12-">
- <icon src="forbiden_area.png" />
- </itemgra>
- <itemgra item_types="poi_shop_gps" order="15-">
- <icon src="garmin.png" />
- </itemgra>
- <itemgra item_types="poi_golf" order="12-">
- <icon src="golf.png" />
- </itemgra>
- <itemgra item_types="poi_government_building" order="12-">
- <icon src="goverment_building.png" />
- </itemgra>
- <itemgra item_types="poi_height" order="12-">
- <icon src="height.png" />
- </itemgra>
- <itemgra item_types="poi_heliport" order="8-">
- <icon src="heliport.png" />
- </itemgra>
- <itemgra item_types="poi_hotspring" order="12-">
- <icon src="hotspring.png" />
- </itemgra>
- <itemgra item_types="poi_icesport" order="12-">
- <icon src="icesport.png" />
- </itemgra>
- <itemgra item_types="poi_information" order="12-">
- <icon src="information.png" />
- </itemgra>
- <itemgra item_types="poi_justice" order="12-">
- <icon src="justice.png" />
- </itemgra>
- <itemgra item_types="poi_landmark" order="11-">
- <icon src="landmark.png" />
- </itemgra>
- <itemgra item_types="poi_levee" order="12-">
- <icon src="levee.png" />
- </itemgra>
- <itemgra item_types="poi_level_crossing" order="11-">
- <icon src="level_crossing.xpm" />
- </itemgra>
- <itemgra item_types="poi_library" order="12-">
- <icon src="library.png" />
- </itemgra>
- <itemgra item_types="poi_locale" order="12-">
- <icon src="locale.png" />
- </itemgra>
- <itemgra item_types="poi_loudspeaker" order="12-">
- <icon src="loudspeaker.png" />
- </itemgra>
- <itemgra item_types="poi_mall" order="12-">
- <icon src="mall.png" />
- </itemgra>
- <itemgra item_types="poi_manmade_feature" order="12-">
- <icon src="manmade_feature.png" />
- </itemgra>
- <itemgra item_types="poi_marine" order="12-">
- <icon src="marine.png" />
- </itemgra>
- <itemgra item_types="poi_marine_type" order="12-">
- <icon src="marine_type.png" />
- </itemgra>
- <itemgra item_types="poi_mark" order="12-">
- <icon src="mark.png" />
- </itemgra>
- <itemgra item_types="poi_military" order="11-">
- <icon src="military.png" />
- </itemgra>
- <itemgra item_types="poi_mine" order="12-">
- <icon src="mine.png" />
- </itemgra>
- <itemgra item_types="poi_nondangerous" order="12-">
- <icon src="nondangerous.png" />
- </itemgra>
- <itemgra item_types="poi_oil_field" order="12-">
- <icon src="oil_field.png" />
- </itemgra>
- <itemgra item_types="poi_peak" order="7-">
- <icon src="peak.png" />
- </itemgra>
- <itemgra item_types="poi_personal_service" order="12-">
- <icon src="personal_service.png" />
- </itemgra>
- <itemgra item_types="poi_pharmacy" order="12-">
- <icon src="pharmacy.png" />
- </itemgra>
- <itemgra item_types="poi_post_office,poi_post_box"
- order="13-">
- <icon src="post.png" />
- </itemgra>
- <itemgra item_types="poi_public_office" order="12-">
- <icon src="public_office.png" />
- </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.png" />
- </itemgra>
- <itemgra item_types="poi_resort" order="12-">
- <icon src="resort.png" />
- </itemgra>
- <itemgra item_types="poi_restaurant" order="12-">
- <icon src="restaurant.png" />
- </itemgra>
- <itemgra item_types="poi_restricted_area" order="12-">
- <icon src="restricted_area.png" />
- </itemgra>
- <itemgra item_types="poi_restroom" order="13-">
- <icon src="toilets.png"/>
- </itemgra>
- <itemgra item_types="poi_sailing" order="12-">
- <icon src="sailing.png" />
- </itemgra>
- <itemgra item_types="poi_scenic_area" order="12-">
- <icon src="scenic_area.png" />
- </itemgra>
- <itemgra item_types="poi_school" order="12-">
- <icon src="school.png" />
- </itemgra>
- <itemgra item_types="poi_service" order="12-">
- <icon src="service.png" />
- </itemgra>
- <itemgra item_types="poi_shop_apparel" order="12-">
- <icon src="shop_apparel.png" />
- </itemgra>
- <itemgra item_types="poi_shop_bicycle" order="12-">
- <icon src="bicycle_shop.png" />
- </itemgra>
- <itemgra item_types="poi_shop_computer" order="12-">
- <icon src="shop_computer.png" />
- </itemgra>
- <itemgra item_types="poi_shop_department" order="12-">
- <icon src="shop_department.png" />
- </itemgra>
- <itemgra item_types="poi_shop_furniture" order="12-">
- <icon src="shop_furnish.png" />
- </itemgra>
- <itemgra item_types="poi_shop_grocery" order="12-">
- <icon src="shop_grocery.png" />
- </itemgra>
- <itemgra item_types="poi_shop_handg" order="12-">
- <icon src="shop_handg.png" />
- </itemgra>
- <itemgra item_types="poi_shop_merchandise" order="12-">
- <icon src="shop_merchandise.png" />
- </itemgra>
- <itemgra item_types="poi_shop_retail" order="12-">
- <icon src="shop_retail.png" />
- </itemgra>
- <itemgra item_types="poi_shower" order="13-">
- <icon src="shower.png" />
- </itemgra>
- <itemgra item_types="poi_skiing" order="11-">
- <icon src="skiing.png" />
- </itemgra>
- <itemgra item_types="poi_social_service" order="12-">
- <icon src="social_service.png" />
- </itemgra>
- <itemgra item_types="poi_sounding" order="12-">
- <icon src="sounding.png" />
- </itemgra>
- <itemgra item_types="poi_sport" order="12-">
- <icon src="sport.png" />
- </itemgra>
- <itemgra item_types="poi_stadium" order="11-">
- <icon src="stadium.png" />
- </itemgra>
- <itemgra item_types="poi_swimming" order="12-">
- <icon src="swimming.png" />
- </itemgra>
- <itemgra item_types="poi_telephone" order="13-">
- <icon src="telephone.png" />
- </itemgra>
- <itemgra item_types="poi_theater" order="12-">
- <icon src="theater.png" />
- </itemgra>
- <itemgra item_types="poi_tide" order="12-">
- <icon src="tide.png" />
- </itemgra>
- <itemgra item_types="poi_tower" order="13-">
- <icon src="tower.xpm" />
- </itemgra>
- <itemgra item_types="poi_townhall" order="12-">
- <icon src="townhall.png" />
- </itemgra>
- <itemgra item_types="poi_trail" order="12-">
- <icon src="trail.png" />
- </itemgra>
- <itemgra item_types="poi_truck_stop" order="12-">
- <icon src="truck_stop.png" />
- </itemgra>
- <itemgra item_types="poi_tunnel" order="12-">
- <icon src="tunnel.png" />
- </itemgra>
- <itemgra item_types="poi_wine" order="12-">
- <icon src="wine.png" />
- </itemgra>
- <itemgra item_types="poi_worship" order="8-">
- <icon src="worship.png" />
- </itemgra>
- <itemgra item_types="poi_wrecker" order="12-">
- <icon src="wrecker.png" />
- </itemgra>
- <itemgra item_types="poi_zoo" order="9-">
- <icon src="zoo.png" />
- </itemgra>
- <itemgra item_types="poi_picnic" order="12-">
- <icon src="picnic.png" />
- </itemgra>
- <itemgra item_types="poi_playground" order="12-">
- <icon src="playground.png"/>
- </itemgra>
- <itemgra item_types="poi_gc_multi" order="12-">
- <icon src="gc_multi.xpm" />
- </itemgra>
- <itemgra item_types="poi_gc_tradi" order="12-">
- <icon src="gc_tradi.xpm" />
- </itemgra>
- <itemgra item_types="poi_gc_event" order="12-">
- <icon src="gc_event.xpm" />
- </itemgra>
- <itemgra item_types="poi_gc_mystery" order="12-">
- <icon src="gc_mystery.xpm" />
- </itemgra>
- <itemgra item_types="poi_gc_question" order="12-">
- <icon src="gc_question.xpm" />
- </itemgra>
- <itemgra item_types="poi_gc_stages" order="12-">
- <icon src="gc_stages.xpm" />
- </itemgra>
- <itemgra item_types="poi_gc_reference" order="12-">
- <icon src="gc_reference.xpm" />
- </itemgra>
- <itemgra item_types="poi_gc_webcam" order="12-">
- <icon src="gc_webcam.xpm" />
- </itemgra>
- <itemgra item_types="traffic_signals" order="13-">
- <icon src="traffic_signals.png" />
- </itemgra>
- <itemgra item_types="poi_wifi" order="13-">
- <icon src="wifi.png" />
- </itemgra>
- <itemgra item_types="poi_image" order="12-">
- <image />
- </itemgra>
- <itemgra item_types="poi_bench" order="13-">
- <icon src="bench.png" />
- </itemgra>
- <itemgra item_types="poi_biergarten" order="12-">
- <icon src="biergarten.png" />
- </itemgra>
- <itemgra item_types="poi_boundary_stone" order="13-">
- <icon src="boundary_stone.png" />
- </itemgra>
- <itemgra item_types="poi_castle" order="11-">
- <icon src="castle.png" />
- </itemgra>
- <itemgra item_types="poi_ruins" order="11-">
- <icon src="ruins.png" />
- </itemgra>
- <itemgra item_types="poi_hunting_stand" order="12-">
- <icon src="hunting_stand.png" />
- </itemgra>
- <itemgra item_types="poi_memorial" order="12-">
- <icon src="memorial.png" />
- </itemgra>
- <itemgra item_types="poi_monument" order="12-">
- <icon src="memorial.png" />
- </itemgra>
- <itemgra item_types="poi_shelter" order="11-">
- <icon src="shelter.png" />
- </itemgra>
- <itemgra item_types="poi_fountain" order="13-">
- <icon src="fountain.png" />
- </itemgra>
- <itemgra item_types="poi_potable_water" order="13-">
- <icon src="drinking_water.png"/>
- </itemgra>
- <itemgra item_types="poi_toilets" order="12-">
- <icon src="toilets.png" />
- </itemgra>
- <itemgra item_types="poi_viewpoint" order="10-">
- <icon src="viewpoint.png" />
- </itemgra>
- <itemgra item_types="tec_common" order="11-">
- <icon src="tec_common.png"/>
- </itemgra>
- <itemgra item_types="vehicle" order="0-">
- <icon src="gui_vehicle_16_16.png" />
- </itemgra>
- <itemgra item_types="vehicle_pedestrian" order="0-">
- <icon src="gui_vehicle_pedestrian_16_16.png" />
- </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.png"/>
- <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.png"/>
- </itemgra>
- <itemgra item_types="poi_bicycle_rental" order="11-">
- <icon src="bicycle_rental.png"/>
- </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.png"/>
- <circle color="#000000" radius="3" text_size="7"/>
- </itemgra>
- <itemgra item_types="poi_atm" order="12-">
- <icon src="atm.png"/>
- </itemgra>
- <!-- amenity=fuel -->
- <itemgra item_types="poi_fuel" order="14-">
- <icon src="fuel.png"/>
- <circle color="#000000" radius="3" text_size="7"/>
- </itemgra>
- <!-- amenity=hospitalg -->
- <itemgra item_types="poi_hospital" order="14-">
- <icon src="hospital.png"/>
- <circle color="#000000" radius="3" text_size="7"/>
- </itemgra>
- <!-- amenity=parking -->
- <itemgra item_types="poi_car_parking" order="14-">
- <icon src="parking.png"/>
- </itemgra>
- <!-- amenity=police -->
- <itemgra item_types="poi_police" order="14-">
- <icon src="police.png"/>
- <circle color="#000000" radius="3" text_size="7"/>
- </itemgra>
- <!-- amenity=restaurant -->
- <itemgra item_types="poi_restaurant" order="14-">
- <icon src="restaurant.png"/>
- <circle color="#000000" radius="3" text_size="7"/>
- </itemgra>
- <!-- leisure=golf_curse -->
- <itemgra item_types="poi_golf" order="14-">
- <icon src="golf.png"/>
- <circle color="#000000" radius="3" text_size="7"/>
- </itemgra>
- <!-- tourism=hotel -->
- <itemgra item_types="poi_hotel" order="14-">
- <icon src="hotel.png"/>
- <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/navit/osd.c b/navit/osd.c
deleted file mode 100644
index a0c9183d1..000000000
--- a/navit/osd.c
+++ /dev/null
@@ -1,515 +0,0 @@
-/**
- * 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 "debug.h"
-#include "plugin.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "color.h"
-#include "point.h"
-#include "navit.h"
-#include "graphics.h"
-#include "command.h"
-#include "callback.h"
-#include "osd.h"
-
-
-struct osd {
- NAVIT_OBJECT
- struct osd_methods meth;
- struct osd_priv *priv;
-};
-
-int
-osd_set_methods(struct osd_methods *in, int in_size, struct osd_methods *out)
-{
- return navit_object_set_methods(in, in_size, out, sizeof(struct osd_methods));
-}
-
-struct osd *
-osd_new(struct attr *parent, struct attr **attrs)
-{
- struct osd *o;
- struct osd_priv *(*new)(struct navit *nav, struct osd_methods *meth, struct attr **attrs);
- struct attr *type=attr_search(attrs, NULL, attr_type),cbl;
-
- if (! type)
- return NULL;
- new=plugin_get_category_osd(type->u.str);
- if (! new) {
- dbg(lvl_error, "invalid OSD type '%s'\n", type->u.str);
- return NULL;
- }
- o=g_new0(struct osd, 1);
- o->attrs=attr_list_dup(attrs);
- cbl.type=attr_callback_list;
- cbl.u.callback_list=callback_list_new();
- o->attrs=attr_generic_prepend_attr(o->attrs, &cbl);
-
- o->priv=new(parent->u.navit, &o->meth, o->attrs);
- if (o->priv) {
- o->func=&osd_func;
- navit_object_ref((struct navit_object *)o);
- } else {
- attr_list_free(o->attrs);
- g_free(o);
- o=NULL;
- }
- dbg(lvl_debug,"new osd %p\n",o);
- return o;
-}
-
-int
-osd_get_attr(struct osd *osd, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- int ret=0;
- if(osd && osd->meth.get_attr)
- /* values for ret: -1: Not possible, 0: Ignored by driver, 1 valid */
- ret=osd->meth.get_attr(osd->priv, type, attr);
- if (ret == -1)
- return 0;
- if (ret > 0)
- return 1;
- return navit_object_get_attr((struct navit_object *)osd, type, attr, iter);
-}
-
-int
-osd_set_attr(struct osd *osd, struct attr* attr)
-{
- int ret=0;
- if(osd && osd->meth.set_attr)
- /* values for ret: -1: Not possible, 0: Ignored by driver, 1 set and store, 2 set, don't store */
- ret=osd->meth.set_attr(osd->priv, attr);
- if (ret == -1)
- return 0;
- if (ret == 2)
- return 1;
- return navit_object_set_attr((struct navit_object *)osd, attr);
-}
-
-static void
-osd_destroy(struct osd *osd)
-{
- if (!osd)
- return;
- if (osd->meth.destroy)
- osd->meth.destroy(osd->priv);
- attr_list_free(osd->attrs);
- g_free(osd);
-}
-
-void
-osd_wrap_point(struct point *p, struct navit *nav)
-{
- if (p->x < 0)
- p->x += navit_get_width(nav);
- if (p->y < 0)
- p->y += navit_get_height(nav);
-
-}
-
-static void
-osd_evaluate_command(struct osd_item *this, struct navit *nav)
-{
- struct attr navit;
- navit.type=attr_navit;
- navit.u.navit=nav;
- dbg(lvl_debug, "calling command '%s'\n", this->command);
- command_evaluate(&navit, this->command);
-}
-
-void
-osd_std_click(struct osd_item *this, struct navit *nav, int pressed, int button, struct point *p)
-{
- int click_is_outside_item;
- struct point bp = this->p;
- if (!this->command || !this->command[0])
- return;
- osd_wrap_point(&bp, nav);
- click_is_outside_item = p->x < bp.x || p->y < bp.y || p->x > bp.x + this->w || p->y > bp.y + this->h;
- if ((click_is_outside_item || !this->configured) && !this->pressed)
- return;
- if (button != 1)
- return;
- if (!!pressed == !!this->pressed)
- return;
- if (navit_ignore_button(nav))
- return;
- this->pressed = pressed;
- if (pressed && this->command)
- osd_evaluate_command(this, nav);
-}
-
-void
-osd_std_resize(struct osd_item *item)
-{
- graphics_overlay_resize(item->gr, &item->p, item->w, item->h, 1);
-}
-
-/**
- * @brief Calculates the size and position of an OSD item.
- *
- * If the geometry of the OSD item is specified relative to screen dimensions,
- * this function will set its absolute dimensions accordingly. If relative width
- * or relative height is set to 0% (int value is equal to ATTR_REL_RELSHIFT),
- * object width (height) is not changed here, for button and image osds it means
- * to derive values from the underlying image.
- *
- * This method considers padding if the graphics plugin supports it (i.e. its `get_data` method returns
- * a valid pointer if `"padding"` is supplied as its arument): It will offset the origin of the item by
- * the amount of padding in the left and top edges, and will reduce `w` and `h` by the total amount of
- * padding in the respective dimension to obtain the equivalent of 100%.
- *
- * If the graphics driver does not support padding, none of these corrections take place (this is
- * equivalent to 0 padding on all sides).
- *
- * @param item The item whose size and position are to be calculated
- * @param w Available screen width in pixels
- * @param h Available screen height in pixels
- */
-void
-osd_std_calculate_sizes(struct osd_item *item, int w, int h)
-{
- struct padding *padding = NULL;
-
- if (item->gr) {
- padding = graphics_get_data(item->gr, "padding");
- if (padding) {
- dbg(lvl_debug, "Got padding=%p for item=%p (item->gr=%p): left=%d top=%d right=%d bottom=%d\n",
- padding, item, item->gr, padding->left, padding->top, padding->right, padding->bottom);
- } else {
- dbg(lvl_debug, "Got padding=%p for item=%p (item->gr=%p)\n",
- padding, item, item->gr);
- }
- } else
- dbg(lvl_warning, "cannot get padding for item=%p: item->gr is NULL\n", item);
-
- /* reduce w and h by total padding in the respective dimension */
- if (padding) {
- w -= (padding->left + padding->right);
- h -= (padding->top + padding->bottom);
- }
-
- if(item->rel_w!=ATTR_REL_RELSHIFT)
- item->w=attr_rel2real(item->rel_w, w, 1);
- if(item->w<0)
- item->w=0;
- if(item->rel_h!=ATTR_REL_RELSHIFT)
- item->h=attr_rel2real(item->rel_h, h, 1);
- if(item->h<0)
- item->h=0;
- item->p.x=attr_rel2real(item->rel_x, w, 1);
- item->p.y=attr_rel2real(item->rel_y, h, 1);
-
- /* add left and top padding to item->p */
- if (padding) {
- item->p.x += padding->left;
- item->p.y += padding->top;
- }
-}
-
-/**
- * @brief Recalculates the size and position of an OSD item and
- * triggers a redraw of the item.
- *
- * This is a callback function that can be stored in the `resize_cb` member of an OSD item.
- *
- * @param item The OSD item to resize and redraw
- * @param priv
- * @param w Available screen width in pixels (the width that corresponds to
- * 100%)
- * @param h Available screen height in pixels (the height that corresponds to
- * 100%)
- */
-static void
-osd_std_calculate_sizes_and_redraw(struct osd_item *item, struct osd_priv *priv, int w, int h)
-{
- struct attr vehicle_attr;
-
- osd_std_calculate_sizes(item, w, h);
-
- osd_std_resize(item);
- item->do_draw=1;
- if (item->meth.draw) {
- if (navit_get_attr(item->navit, attr_vehicle, &vehicle_attr, NULL)) {
- item->meth.draw(priv, item->navit, vehicle_attr.u.vehicle);
- item->do_draw=0;
- }
- }
-}
-
-static void
-osd_std_keypress(struct osd_item *item, struct navit *nav, char *key)
-{
-#if 0
- int i;
- dbg(lvl_debug,"key=%s\n",key);
- for (i = 0 ; i < strlen(key) ; i++) {
- dbg(lvl_debug,"key:0x%02x\n",key[i]);
- }
- for (i = 0 ; i < strlen(item->accesskey) ; i++) {
- dbg(lvl_debug,"accesskey:0x%02x\n",item->accesskey[i]);
- }
-#endif
- if ( ! graphics_is_disabled(item->gr) && item->accesskey && key && !strcmp(key, item->accesskey))
- osd_evaluate_command(item, nav);
-}
-
-/**
- * @brief Configures or unconfigures an OSD item.
- *
- * This method evaluates the result of the last execution of {@code cs}. If it evaluates to true, the
- * item is configured, else it is unconfigured. (A configured item is displayed on the screen and can
- * respond to user input, an unconfigured item is invisible and cannot receive user input.)
- *
- * If an error occurred during evaluation of {@code cs}, the item's configuration state is not changed.
- *
- * @param item The OSD item to reconfigure
- * @param cs The command to evaluate
- */
-static void
-osd_std_reconfigure(struct osd_item *item, struct command_saved *cs)
-{
- char *err = NULL; /* Error description */
-
- dbg(lvl_debug, "enter, item=%p, cs=%p\n", item, cs);
- if (!command_saved_error(cs)) {
- item->configured = !! command_saved_get_int(cs);
- if (item->gr && !(item->flags & 16))
- graphics_overlay_disable(item->gr, !item->configured);
- } else {
- err = command_error_to_text(command_saved_error(cs));
- dbg(lvl_error, "Error in saved command: %s, cs=%p.\n", err, cs);
- g_free(err);
- }
-}
-
-void
-osd_set_std_attr(struct attr **attrs, struct osd_item *item, int flags)
-{
- struct attr *attr;
-
- item->flags=flags;
- item->osd_configuration=-1;
- item->color_fg.r = 0xffff;
- item->color_fg.g = 0xffff;
- item->color_fg.b = 0xffff;
- item->color_fg.a = 0xffff;
- item->text_color.r = 0xffff;
- item->text_color.g = 0xffff;
- item->text_color.b = 0xffff;
- item->text_color.a = 0xffff;
- if (flags & 1) {
- item->color_bg.r = 0x0808;
- item->color_bg.g = 0x0808;
- item->color_bg.b = 0xf8f8;
- item->color_bg.a = 0x0000;
- } else {
- item->color_bg.r = 0x0;
- item->color_bg.g = 0x0;
- item->color_bg.b = 0x0;
- item->color_bg.a = 0x5fff;
- }
-
- attr=attr_search(attrs, NULL, attr_osd_configuration);
- if (attr)
- item->osd_configuration = attr->u.num;
-
- attr=attr_search(attrs, NULL, attr_enable_expression);
- if (attr) {
- item->enable_cs = command_saved_new(attr->u.str, item->navit, NULL, 0);
- }
-
- attr = attr_search(attrs, NULL, attr_w);
- if (attr) {
- item->rel_w = attr->u.num;
- }
-
- attr = attr_search(attrs, NULL, attr_h);
- if (attr) {
- item->rel_h = attr->u.num;
- }
-
- attr = attr_search(attrs, NULL, attr_x);
- if (attr) {
- item->rel_x = attr->u.num;
- }
-
- attr = attr_search(attrs, NULL, attr_y);
- if (attr) {
- item->rel_y = attr->u.num;
- }
-
- attr = attr_search(attrs, NULL, attr_font_size);
- if (attr)
- item->font_size = attr->u.num;
-
- attr=attr_search(attrs, NULL, attr_background_color);
- if (attr)
- item->color_bg=*attr->u.color;
- attr = attr_search(attrs, NULL, attr_command);
- if (attr)
- item->command = g_strdup(attr->u.str);
- attr=attr_search(attrs, NULL, attr_text_color);
- if (attr)
- item->text_color=*attr->u.color;
- attr=attr_search(attrs, NULL, attr_foreground_color);
- if (attr)
- item->color_fg=*attr->u.color;
- attr=attr_search(attrs, NULL, attr_accesskey);
- if (attr)
- item->accesskey = g_strdup(attr->u.str);
- attr=attr_search(attrs, NULL, attr_font);
- if (attr)
- item->font_name = g_strdup(attr->u.str);
-
-}
-void
-osd_std_config(struct osd_item *item, struct navit *navit)
-{
- struct attr attr;
- char *err = NULL; /* Error description */
-
- dbg(lvl_debug, "enter, item=%p, enable_cs=%p\n", item, item->enable_cs);
- if (item->enable_cs) {
- item->reconfig_cb = callback_new_1(callback_cast(osd_std_reconfigure), item);
- command_saved_set_cb(item->enable_cs, item->reconfig_cb);
-
- if (!command_saved_error(item->enable_cs)) {
- item->configured = !! command_saved_get_int(item->enable_cs);
- } else {
- err = command_error_to_text(command_saved_error(item->enable_cs));
- dbg(lvl_error, "Error in saved command: %s, item=%p.\n", err, item);
- g_free(err);
- }
- } else {
- if (!navit_get_attr(navit, attr_osd_configuration, &attr, NULL))
- attr.u.num=-1;
- item->configured = !!(attr.u.num & item->osd_configuration);
- }
- if (item->gr && !(item->flags & 16))
- graphics_overlay_disable(item->gr, !item->configured);
-}
-
-void
-osd_set_std_config(struct navit *nav, struct osd_item *item)
-{
- dbg(lvl_debug, "enter, item=%p\n", item);
- item->cb = callback_new_attr_2(callback_cast(osd_std_config), attr_osd_configuration, item, nav);
- navit_add_callback(nav, item->cb);
- osd_std_config(item, nav);
-}
-
-void
-osd_set_keypress(struct navit *nav, struct osd_item *item)
-{
- struct graphics *navit_gr = navit_get_graphics(nav);
- dbg(lvl_info,"accesskey %s\n",item->accesskey);
- if (item->accesskey) {
- item->keypress_cb=callback_new_attr_2(callback_cast(osd_std_keypress), attr_keypress, item, nav);
- graphics_add_callback(navit_gr, item->keypress_cb);
- }
-}
-
-/**
- * @brief Sets up the graphics for an item.
- *
- * This method creates a new graphics overlay for an item and initializes its attributes (colors, font
- * and callbacks for resize and key events).
- *
- * @param nav The navit object
- * @param item The OSD item
- * @param priv The `struct osd_priv` for the OSD item
- */
-void
-osd_set_std_graphic(struct navit *nav, struct osd_item *item, struct osd_priv *priv)
-{
- struct graphics *navit_gr;
- int w, h;
- struct padding *padding = NULL;
-
- navit_gr = navit_get_graphics(nav);
- w = navit_get_width(nav);
- h = navit_get_height(nav);
-
- padding = graphics_get_data(navit_gr, "padding");
-
- if (padding) {
- dbg(lvl_debug, "Got padding=%p for item=%p: left=%d top=%d right=%d bottom=%d\n",
- padding, item, padding->left, padding->top, padding->right, padding->bottom);
- w -= (padding->left + padding->right);
- h -= (padding->top + padding->bottom);
- } else
- dbg(lvl_debug, "Padding is NULL\n");
-
- osd_std_calculate_sizes(item, w, h);
-
- if (padding) {
- item->p.x += padding->left;
- item->p.y += padding->top;
- }
-
- item->gr = graphics_overlay_new(navit_gr, &item->p, item->w, item->h, 1);
-
- item->graphic_bg = graphics_gc_new(item->gr);
- graphics_gc_set_foreground(item->graphic_bg, &item->color_bg);
- graphics_background_gc(item->gr, item->graphic_bg);
-
- item->graphic_fg = graphics_gc_new(item->gr);
- graphics_gc_set_foreground(item->graphic_fg, &item->color_fg);
-
- if (item->flags & 2) {
- item->font = graphics_named_font_new(item->gr, item->font_name, item->font_size, 1);
- item->graphic_fg_text = graphics_gc_new(item->gr);
- graphics_gc_set_foreground(item->graphic_fg_text, &item->text_color);
- }
-
- osd_set_std_config(nav, item);
-
- item->resize_cb = callback_new_attr_2(callback_cast(osd_std_calculate_sizes_and_redraw), attr_resize, item, priv);
- graphics_add_callback(navit_gr, item->resize_cb);
- osd_set_keypress(nav, item);
-}
-
-void
-osd_fill_with_bgcolor(struct osd_item *item)
-{
- struct point p[1];
- graphics_draw_mode(item->gr, draw_mode_begin);
- p[0].x=0;
- p[0].y=0;
- graphics_draw_rectangle(item->gr, item->graphic_bg, p, item->w, item->h);
-}
-
-struct object_func osd_func = {
- attr_osd,
- (object_func_new)osd_new,
- (object_func_get_attr)osd_get_attr,
- (object_func_iter_new)navit_object_attr_iter_new,
- (object_func_iter_destroy)navit_object_attr_iter_destroy,
- (object_func_set_attr)osd_set_attr,
- (object_func_add_attr)navit_object_add_attr,
- (object_func_remove_attr)navit_object_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)osd_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
diff --git a/navit/osd.h b/navit/osd.h
deleted file mode 100644
index 38fa0e5ff..000000000
--- a/navit/osd.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_OSD_H
-#define NAVIT_OSD_H
-
-struct osd_priv;
-struct attr;
-
-struct osd_methods {
- void (*osd_destroy)(struct osd_priv *osd);
- int (*set_attr)(struct osd_priv *osd, struct attr* attr);
- void (*destroy)(struct osd_priv *osd);
- int (*get_attr)(struct osd_priv *osd, enum attr_type type, struct attr* attr);
-};
-
-#define osd_draw_cast(x) (void (*)(struct osd_priv *osd, struct navit *navit, struct vehicle *v))(x)
-
-struct osd_item_methods {
- void (*draw)(struct osd_priv *osd, struct navit *navit, struct vehicle *v);
-};
-
-struct osd_item {
- struct point p;
- struct osd_item_methods meth;
- int flags, w, h, fg_line_width, font_size, osd_configuration, configured;
- int rel_w, rel_h, rel_x, rel_y;
- struct color color_bg, color_fg, text_color;
- struct navit *navit;
- struct graphics *gr;
- struct graphics_gc *graphic_bg, *graphic_fg, *graphic_fg_text;
- struct graphics_font *font;
- char *font_name;
- struct callback *cb;
- struct callback *resize_cb;
- struct callback *reconfig_cb;
- struct callback *keypress_cb;
- int pressed;
- char *command;
- struct command_saved *enable_cs;
- char *accesskey;
- int do_draw; /**< Whether the item needs to be redrawn. */
-};
-
-/* prototypes */
-struct attr;
-struct navit;
-struct osd;
-struct osd *osd_new(struct attr *parent, struct attr **attrs);
-int osd_set_methods(struct osd_methods *in, int in_size, struct osd_methods *out);
-void osd_wrap_point(struct point *p, struct navit *nav);
-void osd_std_click(struct osd_item *this, struct navit *nav, int pressed, int button, struct point *p);
-void osd_set_std_attr(struct attr **attrs, struct osd_item *item, int flags);
-void osd_std_config(struct osd_item *item, struct navit *navit);
-void osd_set_keypress(struct navit *nav, struct osd_item *item);
-void osd_set_std_config(struct navit *nav, struct osd_item *item);
-void osd_set_std_graphic(struct navit *nav, struct osd_item *item, struct osd_priv *priv);
-void osd_std_resize(struct osd_item *item);
-void osd_std_calculate_sizes(struct osd_item *item, int w, int h);
-void osd_fill_with_bgcolor(struct osd_item *item);
-int osd_set_attr(struct osd *osd, struct attr* attr);
-int osd_get_attr(struct osd *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-/* end of prototypes */
-
-#endif
-
diff --git a/navit/osd/core/CMakeLists.txt b/navit/osd/core/CMakeLists.txt
deleted file mode 100644
index 84231464b..000000000
--- a/navit/osd/core/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(osd_core osd_core.c)
diff --git a/navit/osd/core/osd_core.c b/navit/osd/core/osd_core.c
deleted file mode 100644
index d336d36f6..000000000
--- a/navit/osd/core/osd_core.c
+++ /dev/null
@@ -1,4020 +0,0 @@
-/**
- * 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 "config.h"
-#ifdef _MSC_VER
-#define _USE_MATH_DEFINES 1
-#endif /* _MSC_VER */
-#include <stdlib.h>
-#include <math.h>
-#include <stdio.h>
-#include <glib.h>
-#include <time.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <string.h>
-#include "item.h"
-#include "xmlconfig.h"
-#include "point.h"
-#include "coord.h"
-#include "graphics.h"
-#include "transform.h"
-#include "route.h"
-#include "navit.h"
-#include "plugin.h"
-#include "debug.h"
-#include "callback.h"
-#include "color.h"
-#include "vehicle.h"
-#include "navigation.h"
-#include "track.h"
-#include "map.h"
-#include "file.h"
-#include "attr.h"
-#include "command.h"
-#include "navit_nls.h"
-#include "messages.h"
-#include "vehicleprofile.h"
-#include "roadprofile.h"
-#include "osd.h"
-#include "speech.h"
-#include "event.h"
-#include "mapset.h"
-#include "util.h"
-
-#ifdef HAVE_API_WIN32_CE
-#include "libc.h"
-#endif
-
-#ifdef _MSC_VER
-static double round(double x)
-{
- if (x >= 0.0)
- return floor(x + 0.5);
- else
- return ceil(x - 0.5);
-}
-#endif /* MSC_VER */
-
-struct osd_priv_common {
- struct osd_item osd_item;
- struct osd_priv *data;
- int (*spec_set_attr_func)(struct osd_priv_common *opc, struct attr* attr);
-};
-
-struct odometer;
-
-int set_std_osd_attr(struct osd_priv *priv, struct attr*the_attr);
-static void osd_odometer_reset(struct osd_priv_common *opc, int flags);
-static void osd_cmd_odometer_reset(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid);
-static void osd_odometer_draw(struct osd_priv_common *opc, struct navit *nav, struct vehicle *v);
-static struct osd_text_item * oti_new(struct osd_text_item * parent);
-int osd_button_set_attr(struct osd_priv_common *opc, struct attr* attr);
-
-static int b_commandtable_added = 0;
-
-
-struct compass {
- int width;
- struct graphics_gc *green;
- struct callback *click_cb;
-};
-
-static void
-transform_rotate(struct point *center, int angle, struct point *p,
- int count)
-{
- int i, x, y;
- double dx, dy;
- for (i = 0; i < count; i++) {
- dx = sin(M_PI * angle / 180.0);
- dy = cos(M_PI * angle / 180.0);
- x = dy * p->x - dx * p->y;
- y = dx * p->x + dy * p->y;
-
- p->x = center->x + x;
- p->y = center->y + y;
- p++;
- }
-}
-
-static void
-handle(struct graphics *gr, struct graphics_gc *gc, struct point *p, int r,
- int dir)
-{
- struct point ph[3];
- int l = r * 0.4;
-
- ph[0].x = 0;
- ph[0].y = r;
- ph[1].x = 0;
- ph[1].y = -r;
- transform_rotate(p, dir, ph, 2);
- graphics_draw_lines(gr, gc, ph, 2);
- ph[0].x = -l;
- ph[0].y = -r + l;
- ph[1].x = 0;
- ph[1].y = -r;
- ph[2].x = l;
- ph[2].y = -r + l;
- transform_rotate(p, dir, ph, 3);
- graphics_draw_lines(gr, gc, ph, 3);
-}
-
-/**
- * * Format distance, choosing the unit (m or km) and precision depending on distance
- * *
- * * @param distance distance in meters
- * * @param sep separator character to be inserted between distance value and unit
- * * @returns a pointer to a string containing the formatted distance
- * */
-static char *
-format_distance(double distance, char *sep, int imperial)
-{
- if (imperial){
- distance *= FEET_PER_METER;
- if(distance <= 500){
- return g_strdup_printf("%.0f%sft", round(distance / 10) * 10, sep);
- } else {
- return g_strdup_printf("%.1f%smi", distance / FEET_PER_MILE, sep);
- }
- } else {
- if (distance >= 10000)
- return g_strdup_printf("%.0f%skm", distance / 1000, sep);
- else if (distance >= 1000)
- return g_strdup_printf("%.1f%skm", distance / 1000, sep);
- else if (distance >= 300)
- return g_strdup_printf("%.0f%sm", round(distance / 25) * 25, sep);
- else if (distance >= 50)
- return g_strdup_printf("%.0f%sm", round(distance / 10) * 10, sep);
- else if (distance >= 10)
- return g_strdup_printf("%.0f%sm", distance, sep);
- else
- return g_strdup_printf("%.1f%sm", distance, sep);
- }
-}
-
-/**
- * * Format time (duration)
- * *
- * * @param tm pointer to a tm structure specifying the time
- * * @param days days
- * * @returns a pointer to a string containing the formatted time
- * */
-static char *
-format_time(struct tm *tm, int days)
-{
- if (days)
- return g_strdup_printf("%d+%02d:%02d", days, tm->tm_hour, tm->tm_min);
- else
- return g_strdup_printf("%02d:%02d", tm->tm_hour, tm->tm_min);
-}
-
-/**
- * * Format speed in km/h
- * *
- * * @param speed speed in km/h
- * * @param sep separator character to be inserted between speed value and unit
- * * @returns a pointer to a string containing the formatted speed
- * */
-static char *
-format_speed(double speed, char *sep, char *format, int imperial)
-{
- char *unit="km/h";
- if (imperial) {
- speed = speed*1000*FEET_PER_METER/FEET_PER_MILE;
- unit="mph";
- }
- if (!format || !strcmp(format,"named"))
- return g_strdup_printf((speed < 10) ? "%.1f%s%s":"%.0f%s%s", speed, sep, unit);
- else if (!strcmp(format,"value") || !strcmp(format,"unit")) {
- if (!strcmp(format,"value"))
- return g_strdup_printf((speed < 10) ? "%.1f":"%.0f", speed);
- else
- return g_strdup(unit);
- }
- return g_strdup("");
-}
-
-static char *
-format_float_0(double num)
-{
- return g_strdup_printf("%.0f", num);
-}
-
-int set_std_osd_attr(struct osd_priv *priv, struct attr*the_attr)
-{
- struct osd_priv_common *opc=(struct osd_priv_common *)priv;
- if(opc && the_attr && ATTR_IS_INT(the_attr->type)) {
- int attr_set=0;
- if(attr_w == the_attr->type) {
- opc->osd_item.rel_w = the_attr->u.num;
- attr_set=1;
- }
- else if(attr_h == the_attr->type) {
- opc->osd_item.rel_h = the_attr->u.num;
- attr_set=1;
- }
- else if(attr_x == the_attr->type) {
- opc->osd_item.rel_x = the_attr->u.num;
- attr_set=1;
- }
- else if(attr_y == the_attr->type) {
- opc->osd_item.rel_y = the_attr->u.num;
- attr_set=1;
- }
- else if(attr_font_size == the_attr->type) {
- opc->osd_item.font_size = the_attr->u.num;
- attr_set=1;
- }
- if(attr_set && opc->osd_item.gr) {
- osd_std_calculate_sizes(&opc->osd_item, navit_get_width(opc->osd_item.navit), navit_get_height(opc->osd_item.navit));
- osd_std_resize(&opc->osd_item);
- return 1;
- }
- }
- if(opc->spec_set_attr_func) {
- opc->spec_set_attr_func(opc, the_attr);
- }
- return 0;
-}
-
-
-struct route_guard {
- int coord_num;
- struct coord *coords;
- double min_dist; //distance treshold, exceeding this distance will trigger announcement
- double max_dist; //out of range distance, farther than this distance no warning will be given
- char*item_name;
- char*map_name;
- int warned;
- double last_time;
- int update_period;
- struct color active_color;
- struct graphics_gc *red;
- int width;
-};
-
-static void osd_route_guard_draw(struct osd_priv_common *opc, struct navit *nav, struct vehicle *v)
-{
- int i=0;
- struct vehicle* curr_vehicle = v;
- struct attr position_attr, vehicle_attr, imperial_attr;
- struct coord curr_coord;
- struct route_guard *this = (struct route_guard *)opc->data;
- double curr_time;
- struct timeval tv;
- struct point p;
- struct point bbox[4];
- char* dist_str;
- struct graphics_gc *curr_color;
- int imperial=0;
- double min_dist;
-
- //do not execute for each gps update
- gettimeofday(&tv,NULL);
- curr_time = (double)(tv.tv_usec)/1000000.0+tv.tv_sec;
- if ( this->last_time+this->update_period > curr_time) {
- return;
- }
- this->last_time = curr_time;
- if(nav) {
- navit_get_attr(nav, attr_vehicle, &vehicle_attr, NULL);
- if (vehicle_attr.u.vehicle) {
- curr_vehicle = vehicle_attr.u.vehicle;
- }
- if (navit_get_attr(nav, attr_imperial, &imperial_attr, NULL)) {
- imperial=imperial_attr.u.num;
- }
- }
-
- if(0==curr_vehicle)
- return;
-
- if(!vehicle_get_attr(curr_vehicle, attr_position_coord_geo,&position_attr, NULL)) {
- return;
- }
- transform_from_geo(projection_mg, position_attr.u.coord_geo, &curr_coord);
-
- min_dist = 1000000;
- //calculate min dist
- if(this->coord_num > 1) {
- double scale = transform_scale(curr_coord.y);
- for( i=1 ; i<this->coord_num ; ++i ) {
- struct coord proj_coord;
- double curr_dist;
- transform_distance_line_sq(&this->coords[i-1], &this->coords[i], &curr_coord, &proj_coord);
- curr_dist = transform_distance(projection_mg, &proj_coord, &curr_coord);
- curr_dist /= scale;
- if (curr_dist<min_dist) {
- min_dist = curr_dist;
- }
- }
- if ( this->warned == 0 && this->min_dist < min_dist && min_dist < this->max_dist) {
- navit_say(nav, _("Return to route!"));
- this->warned = 1;
- } else if( min_dist < this->min_dist ) {
- this->warned = 0;
- }
- }
- osd_fill_with_bgcolor(&opc->osd_item);
-
- dist_str = format_distance(min_dist, "", imperial);
-
- graphics_get_text_bbox(opc->osd_item.gr, opc->osd_item.font, dist_str, 0x10000, 0, bbox, 0);
- p.x=(opc->osd_item.w-bbox[2].x)/2;
- p.y = opc->osd_item.h-opc->osd_item.h/10;
-
- curr_color = (this->min_dist < min_dist && min_dist < this->max_dist) ? this->red : opc->osd_item.graphic_fg;
- graphics_draw_text(opc->osd_item.gr, curr_color, NULL, opc->osd_item.font, dist_str, &p, 0x10000, 0);
-
- g_free(dist_str);
-
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
-}
-
-static void
-osd_route_guard_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct color red_color={0xffff,0x0000,0x0000,0xffff};
- struct route_guard *this = (struct route_guard *)opc->data;
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
- //load coord data
- if (this->map_name && this->item_name) {
- struct mapset* ms;
- struct map_rect *mr;
- struct mapset_handle *msh;
- struct map *map = NULL;
- struct item *item = NULL;
- if(!(ms=navit_get_mapset(nav))) {
- return;
- }
- msh=mapset_open(ms);
- while ((map=mapset_next(msh, 1))) {
- struct attr attr;
- if(map_get_attr(map, attr_name, &attr, NULL)) {
- if( ! strcmp(this->map_name, attr.u.str) ) {
- mr=map_rect_new(map, NULL);
- if (mr) {
- while ((item=map_rect_get_item(mr))) {
- struct attr item_attr;
- if(item_attr_get(item, attr_name, &item_attr)) {
- if (!strcmp(item_attr.u.str,this->item_name)) {
- //item found, get coords
- struct coord c;
- this->coord_num=0;
- while (item_coord_get(item,&c,1)) {
- this->coords = g_renew(struct coord,this->coords,this->coord_num+1);
- this->coords[this->coord_num] = c;
- ++this->coord_num;
- }
- }
- }
- }
- }
- } else {
- continue;
- }
- } else {
- continue;
- }
- }
- mapset_close(msh);
- }
-
- this->red = graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(this->red, &red_color);
- graphics_gc_set_linewidth(this->red, this->width);
-
- opc->osd_item.graphic_fg = graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(opc->osd_item.graphic_fg, &opc->osd_item.text_color);
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width);
-
- //setup draw callback
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_route_guard_draw), attr_position_coord_geo, opc));
-}
-
-static void
-osd_route_guard_destroy(struct osd_priv_common *opc)
-{
- struct route_guard *this = (struct route_guard *)opc->data;
- g_free(this->coords);
-}
-
-static struct osd_priv *
-osd_route_guard_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct route_guard *this = g_new0(struct route_guard, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.rel_x = 120;
- opc->osd_item.rel_y = 20;
- opc->osd_item.rel_w = 60;
- opc->osd_item.rel_h = 80;
- opc->osd_item.navit = nav;
- opc->osd_item.font_size = 200;
- opc->osd_item.meth.draw = osd_draw_cast(osd_route_guard_draw);
- meth->set_attr = set_std_osd_attr;
- osd_set_std_attr(attrs, &opc->osd_item, 2);
-
- attr = attr_search(attrs, NULL, attr_min_dist);
- if (attr) {
- this->min_dist = attr->u.num;
- }
- else
- this->min_dist = 30; //default tolerance is 30m
-
- attr = attr_search(attrs, NULL, attr_max_dist);
- if (attr) {
- this->max_dist = attr->u.num;
- }
- else
- this->max_dist = 500; //default
-
- attr = attr_search(attrs, NULL, attr_item_name);
- if (attr) {
- this->item_name = g_strdup(attr->u.str);
- }
- else
- this->item_name = NULL;
-
- attr = attr_search(attrs, NULL, attr_map_name);
- if (attr) {
- this->map_name = g_strdup(attr->u.str);
- }
- else
- this->map_name = NULL;
-
- attr = attr_search(attrs, NULL, attr_update_period);
- this->update_period=attr ? attr->u.num : 10;
-
- attr = attr_search(attrs, NULL, attr_width);
- this->width=attr ? attr->u.num : 2;
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_route_guard_init), attr_graphics_ready, opc));
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_route_guard_destroy), attr_destroy, opc));
-
- return (struct osd_priv *) opc;
-}
-
-
-static int odometers_saved = 0;
-static GList* odometer_list = NULL;
-
-static struct command_table commands[] = {
- {"odometer_reset",command_cast(osd_cmd_odometer_reset)},
-};
-
-struct odometer {
- int width;
- struct graphics_gc *orange;
- struct callback *click_cb;
- char *text; //text of label attribute for this osd
- char *name; //unique name of the odometer (needed for handling multiple odometers persistently)
- struct color idle_color; //text color when counter is idle
- int align;
- int bDisableReset;
- int bAutoStart;
- int bActive; //counting or not
- int autosave_period; //autosave period in seconds
- double sum_dist; //sum of distance ofprevious intervals in meters
- double sum_time; //sum of time of previous intervals in seconds (needed for avg spd calculation)
- double time_all;
- double last_click_time; //time of last click (for double click handling)
- double last_start_time; //time of last start of counting
- double last_update_time; //time of last position update
- struct coord last_coord;
- double last_speed;
- double max_speed;
- double acceleration;
-};
-
-static void
-osd_cmd_odometer_reset(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
-{
- if (in && in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str) {
- GList* list = odometer_list;
- while(list) {
- if(!strcmp(((struct odometer*)((struct osd_priv_common *)(list->data))->data)->name,in[0]->u.str)) {
- osd_odometer_reset(list->data,3);
- osd_odometer_draw(list->data,this,NULL);
- }
- list = g_list_next(list);
- }
- }
-}
-
-static char*
-str_replace(char*output, char*input, char*pattern, char*replacement)
-{
- char *pos;
- char *pos2;
- if (!output || !input || !pattern || !replacement) {
- return NULL;
- }
- if(!strcmp(pattern,"")) {
- return input;
- }
-
- pos = &input[0];
- pos2 = &input[0];
- output[0] = 0;
- while ( (pos2=strstr(pos,pattern)) ) {
- strncat(output,pos,pos2-pos);
- strcat(output,replacement);
- pos = pos2 + strlen(pattern);
- }
- strcat(output,pos);
- return NULL;
-}
-
-/*
- * save current odometer state to string
- */
-static char *osd_odometer_to_string(struct odometer *this_)
-{
- return g_strdup_printf("odometer %s %lf %lf %d %lf\n",this_->name,this_->sum_dist,this_->time_all,this_->bActive,this_->max_speed);
-}
-
-/*
- * load current odometer state from string
- */
-static void osd_odometer_from_string(struct odometer *this_, char*str)
-{
- char* tok;
- char* name_str;
- char* sum_dist_str;
- char* sum_time_str;
- char* active_str;
- char* max_spd_str;
- tok = strtok(str, " ");
- if( !tok || strcmp("odometer",tok)) {
- return;
- }
- name_str = g_strdup(strtok(NULL, " "));
- if(!name_str) {
- return;
- }
- sum_dist_str = g_strdup(strtok(NULL, " "));
- if(!sum_dist_str) {
- g_free(name_str);
- return;
- }
- sum_time_str = g_strdup(strtok(NULL, " "));
- if(!sum_time_str) {
- g_free(name_str);
- g_free(sum_dist_str);
- return;
- }
- active_str = g_strdup(strtok(NULL, " "));
- if(!active_str) {
- g_free(name_str);
- g_free(sum_dist_str);
- g_free(sum_time_str);
- return;
- }
- max_spd_str = g_strdup(strtok(NULL, " "));
- if(!max_spd_str) {
- g_free(name_str);
- g_free(sum_dist_str);
- g_free(sum_time_str);
- g_free(active_str);
- return;
- }
-
- this_->name = name_str;
- this_->sum_dist = atof(sum_dist_str);
- this_->sum_time = atof(sum_time_str);
- this_->bActive = atoi(active_str);
- this_->max_speed = atof(max_spd_str);
- this_->last_coord.x = -1;
- g_free(active_str);
- g_free(sum_dist_str);
- g_free(sum_time_str);
- g_free(max_spd_str);
-}
-
-static void draw_multiline_osd_text(char *buffer,struct osd_item *osd_item, struct graphics_gc *curr_color)
-{
- gchar**bufvec = g_strsplit(buffer,"\n",0);
- struct point p, bbox[4];
- //count strings
- int strnum = 0;
- gchar**pch = bufvec;
- while(*pch) {
- ++strnum;
- ++pch;
- }
-
- if(0<strnum) {
- int dh = osd_item->h / strnum;
-
- pch = bufvec;
- p.y = 0;
- while (*pch) {
- graphics_get_text_bbox(osd_item->gr, osd_item->font, *pch, 0x10000, 0, bbox, 0);
- p.x=(osd_item->w-bbox[2].x)/2;
- p.y += dh;
- graphics_draw_text(osd_item->gr, curr_color, NULL, osd_item->font, *pch, &p, 0x10000, 0);
- ++pch;
- }
- }
- g_free(bufvec);
-}
-
-/**
- * * draw osd text based on the given alignment setting on a osd_item
- * *
- * * @param buffer pointer to a string containing the text to be displayed
- * * @param align alignment setting (to be taken form the osd attribute)
- * * @param osd_item the osd item to work on
- * * @param curr_color the color in which the osd text should be visible (defaults to osd_items foreground color)
- * * @returns nothing
- * */
-static void draw_aligned_osd_text(char *buffer, int align, struct osd_item *osd_item, struct graphics_gc *curr_color)
-{
-
- int height=osd_item->font_size*13/256;
- int yspacing=height/2;
- int xspacing=height/4;
- char *next, *last;
- struct point p, p2[4];
- int lines;
- int do_draw = osd_item->do_draw;
-
- osd_fill_with_bgcolor(osd_item);
- lines=0;
- next=buffer;
- last=buffer;
- while ((next=strstr(next, "\\n"))) {
- last = next;
- lines++;
- next++;
- }
-
- while (*last) {
- if (! g_ascii_isspace(*last)) {
- lines++;
- break;
- }
- last++;
- }
-
- dbg(lvl_debug,"align=%d\n", align);
- switch (align & 51) {
- case 1:
- p.y=0;
- break;
- case 2:
- p.y=(osd_item->h-lines*(height+yspacing)-yspacing);
- break;
- case 16: // Grow from top to bottom
- p.y = 0;
- if (lines != 0) {
- osd_item->h = (lines-1) * (height+yspacing) + height;
- } else {
- osd_item->h = 0;
- }
-
- if (do_draw) {
- osd_std_resize(osd_item);
- }
- default:
- p.y=(osd_item->h-lines*(height+yspacing)-yspacing)/2;
- }
-
- while (buffer) {
- next=strstr(buffer, "\\n");
- if (next) {
- *next='\0';
- next+=2;
- }
- graphics_get_text_bbox(osd_item->gr,
- osd_item->font,
- buffer, 0x10000,
- 0x0, p2, 0);
- switch (align & 12) {
- case 4:
- p.x=xspacing;
- break;
- case 8:
- p.x=osd_item->w-(p2[2].x-p2[0].x)-xspacing;
- break;
- default:
- p.x = ((p2[0].x - p2[2].x) / 2) + (osd_item->w / 2);
- }
- p.y += height+yspacing;
- graphics_draw_text(osd_item->gr,
- curr_color?curr_color:osd_item->graphic_fg_text,
- NULL, osd_item->font,
- buffer, &p, 0x10000,
- 0);
- buffer=next;
-
- graphics_draw_mode(osd_item->gr, draw_mode_end);
-
- }
-
-}
-
-
-static void osd_odometer_draw(struct osd_priv_common *opc, struct navit *nav, struct vehicle *v)
-{
- struct odometer *this = (struct odometer *)opc->data;
-
- struct coord curr_coord;
- struct graphics_gc *curr_color;
-
- char *dist_buffer=0;
- char *spd_buffer=0;
- char *max_spd_buffer=0;
- char *time_buffer = 0;
- char *acc_buffer = 0;
- struct attr position_attr,vehicle_attr,imperial_attr,speed_attr;
- enum projection pro;
- struct vehicle* curr_vehicle = v;
- double spd = 0;
- double curr_spd = 0;
-
- int remainder;
- int days;
- int hours;
- int mins;
- int secs;
- int imperial=0;
-
- char buffer [256+1]="";
- char buffer2[256+1]="";
-
- if(nav) {
- if (navit_get_attr(nav, attr_vehicle, &vehicle_attr, NULL))
- curr_vehicle=vehicle_attr.u.vehicle;
- if (navit_get_attr(nav, attr_imperial, &imperial_attr, NULL))
- imperial=imperial_attr.u.num;
- }
-
- if(0==curr_vehicle)
- return;
-
- osd_fill_with_bgcolor(&opc->osd_item);
- if(this->bActive) {
- if(!vehicle_get_attr(curr_vehicle, attr_position_coord_geo,&position_attr, NULL)) {
- return;
- }
- pro = projection_mg;//position_attr.u.pcoord->pro;
- transform_from_geo(pro, position_attr.u.coord_geo, &curr_coord);
-
- if (this->last_coord.x != -1 ) {
- const double cStepDistLimit = 10000;
- struct timeval tv;
- double curr_time;
- double dt;
- double dCurrDist = 0;
-
- gettimeofday(&tv,NULL);
- curr_time = (double)(tv.tv_usec)/1000000.0+tv.tv_sec;
- //we have valid previous position
- dt = curr_time-this->last_update_time;
- dCurrDist = transform_distance(pro, &curr_coord, &this->last_coord);
- if(dCurrDist<=cStepDistLimit) {
- this->sum_dist += dCurrDist;
- }
- this->time_all = curr_time-this->last_click_time+this->sum_time;
- spd = 3.6*(double)this->sum_dist/(double)this->time_all;
- if(dt != 0) {
- if (curr_coord.x!=this->last_coord.x || curr_coord.y!=this->last_coord.y) {
- if(vehicle_get_attr(curr_vehicle, attr_position_speed,&speed_attr, NULL)) {
- double dv;
- curr_spd = *speed_attr.u.numd;
- dv = (curr_spd-this->last_speed)/3.6; //speed difference in m/sec
- this->acceleration = dv/dt;
- this->last_speed = curr_spd;
- this->last_update_time = curr_time;
- }
- }
- }
- this->max_speed = (curr_spd<=this->max_speed) ? this->max_speed : curr_spd;
- }
- this->last_coord = curr_coord;
- }
-
- dist_buffer = format_distance(this->sum_dist,"",imperial);
- spd_buffer = format_speed(spd,"","value",imperial);
- max_spd_buffer = format_speed(this->max_speed,"","value",imperial);
- acc_buffer = g_strdup_printf("%.3f m/s2",this->acceleration);
- remainder = (int)this->time_all;
- days = remainder / (24*60*60);
- remainder = remainder % (24*60*60);
- hours = remainder / (60*60);
- remainder = remainder % (60*60);
- mins = remainder / (60);
- remainder = remainder % (60);
- secs = remainder;
- if(0<days) {
- time_buffer = g_strdup_printf("%02dd %02d:%02d:%02d",days,hours,mins,secs);
- }
- else {
- time_buffer = g_strdup_printf("%02d:%02d:%02d",hours,mins,secs);
- }
-
- buffer [0] = 0;
- buffer2[0] = 0;
- if(this->text) {
- str_replace(buffer,this->text,"${avg_spd}",spd_buffer);
- str_replace(buffer2,buffer,"${distance}",dist_buffer);
- str_replace(buffer,buffer2,"${time}",time_buffer);
- str_replace(buffer2,buffer,"${acceleration}",acc_buffer);
- str_replace(buffer,buffer2,"${max_spd}",max_spd_buffer);
- }
- g_free(time_buffer);
-
- curr_color = this->bActive?opc->osd_item.graphic_fg:this->orange;
-
- draw_aligned_osd_text(buffer, this->align, &opc->osd_item, curr_color);
- g_free(dist_buffer);
- g_free(spd_buffer);
- g_free(max_spd_buffer);
- g_free(acc_buffer);
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
-}
-
-
-static void
-osd_odometer_reset(struct osd_priv_common *opc, int flags)
-{
- struct odometer *this = (struct odometer *)opc->data;
-
- if(!this->bDisableReset || (flags & 1)) {
- if (!(flags & 2))
- this->bActive = 0;
- this->sum_dist = 0;
- this->sum_time = 0;
- this->max_speed = 0;
- this->last_start_time = 0;
- this->last_coord.x = -1;
- this->last_coord.y = -1;
- }
-}
-
-static void
-osd_odometer_click(struct osd_priv_common *opc, struct navit *nav, int pressed, int button, struct point *p)
-{
- struct odometer *this = (struct odometer *)opc->data;
-
- struct point bp = opc->osd_item.p;
- struct timeval tv;
- double curr_time;
- const double double_click_timewin = .5;
- osd_wrap_point(&bp, nav);
- if ((p->x < bp.x || p->y < bp.y || p->x > bp.x + opc->osd_item.w || p->y > bp.y + opc->osd_item.h || !opc->osd_item.configured ) && !opc->osd_item.pressed)
- return;
- if (button != 1)
- return;
- if (navit_ignore_button(nav))
- return;
- if (!!pressed == !!opc->osd_item.pressed)
- return;
-
- gettimeofday(&tv,NULL);
- curr_time = (double)(tv.tv_usec)/1000000.0+tv.tv_sec;
-
- if (pressed) { //single click handling
- if(this->bActive) { //being stopped
- this->last_coord.x = -1;
- this->last_coord.y = -1;
- this->sum_time += curr_time-this->last_click_time;
- }
-
- this->bActive ^= 1; //toggle active flag
-
- if (curr_time-double_click_timewin <= this->last_click_time) { //double click handling
- osd_odometer_reset(opc,0);
- }
-
- this->last_click_time = curr_time;
-
- osd_odometer_draw(opc, nav,NULL);
- }
-}
-
-
-static int
-osd_odometer_save(struct navit* nav)
-{
- //save odometers that are persistent(ie have name)
- FILE*f;
- GList* list = odometer_list;
- char* fn = g_strdup_printf("%s/odometer.txt",navit_get_user_data_directory(TRUE));
- f = fopen(fn,"w+");
- g_free(fn);
- if(!f) {
- return TRUE;
- }
- while (list) {
- if(((struct odometer*)((struct osd_priv_common *)(list->data))->data)->name) {
- char*odo_str = osd_odometer_to_string((struct odometer*)((struct osd_priv_common *)(list->data))->data);
- fprintf(f,"%s",odo_str);
- g_free(odo_str);
- }
- list = g_list_next(list);
- }
- fclose(f);
- return TRUE;
-}
-
-
-static void
-osd_odometer_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct odometer *this = (struct odometer *)opc->data;
-
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
-
- this->orange = graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(this->orange, &this->idle_color);
- graphics_gc_set_linewidth(this->orange, this->width);
-
- opc->osd_item.graphic_fg = graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(opc->osd_item.graphic_fg, &opc->osd_item.text_color);
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width);
-
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width);
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_odometer_draw), attr_position_coord_geo, opc));
-
- navit_add_callback(nav, this->click_cb = callback_new_attr_1(callback_cast (osd_odometer_click), attr_button, opc));
-
- if(this->autosave_period>0) {
- event_add_timeout(this->autosave_period*1000, 1, callback_new_1(callback_cast(osd_odometer_save), NULL));
- }
-
- if(this->bAutoStart) {
- this->bActive = 1;
- }
- osd_odometer_draw(opc, nav, NULL);
-}
-
-static void
-osd_odometer_destroy(struct navit* nav)
-{
- if(!odometers_saved) {
- odometers_saved = 1;
- osd_odometer_save(NULL);
- }
-}
-
-static struct osd_priv *
-osd_odometer_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- FILE* f;
- char* fn;
-
- struct odometer *this = g_new0(struct odometer, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
- struct color orange_color={0xffff,0xa5a5,0x0000,0xffff};
-
- opc->data = (void*)this;
- opc->osd_item.rel_x = 120;
- opc->osd_item.rel_y = 20;
- opc->osd_item.rel_w = 60;
- opc->osd_item.rel_h = 80;
- opc->osd_item.navit = nav;
- opc->osd_item.font_size = 200;
- opc->osd_item.meth.draw = osd_draw_cast(osd_odometer_draw);
- meth->set_attr = set_std_osd_attr;
-
- this->bActive = 0; //do not count on init
- this->sum_dist = 0;
- this->max_speed = 0;
- this->last_click_time = time(0);
- this->last_coord.x = -1;
- this->last_coord.y = -1;
-
- attr = attr_search(attrs, NULL, attr_label);
- //FIXME find some way to free text!!!!
- if (attr) {
- this->text = g_strdup(attr->u.str);
- }
- else
- this->text = NULL;
-
- attr = attr_search(attrs, NULL, attr_name);
- //FIXME find some way to free text!!!!
- if (attr) {
- this->name = g_strdup(attr->u.str);
- }
- else
- this->name = NULL;
-
- attr = attr_search(attrs, NULL, attr_disable_reset);
- if (attr)
- this->bDisableReset = attr->u.num;
- else
- this->bDisableReset = 0;
-
- attr = attr_search(attrs, NULL, attr_autostart);
- if (attr)
- this->bAutoStart = attr->u.num;
- else
- this->bAutoStart = 0;
- attr = attr_search(attrs, NULL, attr_autosave_period);
- if (attr)
- this->autosave_period = attr->u.num;
- else
- this->autosave_period = -1; //disabled by default
-
- attr = attr_search(attrs, NULL, attr_align);
- if (attr)
- this->align=attr->u.num;
-
- osd_set_std_attr(attrs, &opc->osd_item, 2);
- attr = attr_search(attrs, NULL, attr_width);
- this->width=attr ? attr->u.num : 2;
- attr = attr_search(attrs, NULL, attr_idle_color);
- this->idle_color=attr ? *attr->u.color : orange_color; // text idle_color defaults to orange
-
- this->last_coord.x = -1;
- this->last_coord.y = -1;
- this->sum_dist = 0.0;
-
- //load state from file
- fn = g_strdup_printf("%s/odometer.txt",navit_get_user_data_directory(FALSE));
- f = fopen(fn,"r+");
-
- if(f) {
- g_free(fn);
-
- while(!feof(f)) {
- char str[128];
- char *line;
- if(fgets(str,128,f))
- {
- char *tok;
- line = g_strdup(str);
- tok = strtok(str," ");
- if(!strcmp(tok,"odometer")) {
- tok = strtok(NULL," ");
- if(this->name && tok && !strcmp(this->name,tok)) {
- osd_odometer_from_string(this,line);
- }
- }
- g_free(line);
- }
- }
- fclose(f);
- }
-
- if(b_commandtable_added == 0) {
- navit_command_add_table(nav, commands, sizeof(commands)/sizeof(struct command_table));
- b_commandtable_added = 1;
- }
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_odometer_init), attr_graphics_ready, opc));
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_odometer_destroy), attr_destroy, nav));
- odometer_list = g_list_append(odometer_list, opc);
-
- return (struct osd_priv *) opc;
-}
-
-
-struct cmd_interface {
- int width;
- struct graphics_gc *orange;
- int update_period; //in sec
- char* text;
- struct graphics_image *img;
- char*img_filename;
- char* command;
- int bReserved;
-};
-
-static void
-osd_cmd_interface_draw(struct osd_priv_common *opc, struct navit *nav,
- struct vehicle *v)
-{
- struct cmd_interface *this = (struct cmd_interface *)opc->data;
-
- struct point p;
- struct point bbox[4];
- struct graphics_gc *curr_color;
- struct attr navit;
- p.x = 0;
- p.y = 0;
- navit.type=attr_navit;
- navit.u.navit = opc->osd_item.navit;
-
- if(0==this->bReserved) {
- this->bReserved = 1;
- command_evaluate(&navit, this->command);
- this->bReserved = 0;
- }
-
- osd_fill_with_bgcolor(&opc->osd_item);
-
- //display image
- if(this->img) {
- graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, this->img);
- }
-
- //display text
- graphics_get_text_bbox(opc->osd_item.gr, opc->osd_item.font, this->text, 0x10000, 0, bbox, 0);
- p.x=(opc->osd_item.w-bbox[2].x)/2;
- p.y = opc->osd_item.h-opc->osd_item.h/10;
- curr_color = opc->osd_item.graphic_fg;
- if(this->text)
- draw_multiline_osd_text(this->text,&opc->osd_item, curr_color);
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
-}
-
-
-
-static void
-osd_cmd_interface_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct cmd_interface *this = (struct cmd_interface *)opc->data;
-
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
-
- opc->osd_item.graphic_fg = graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(opc->osd_item.graphic_fg, &opc->osd_item.text_color);
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width);
-
-
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width);
-
- if(this->update_period>0) {
- event_add_timeout(this->update_period*1000, 1, callback_new_1(callback_cast(osd_cmd_interface_draw), opc));
- }
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast (osd_std_click), attr_button, &opc->osd_item));
-
- this->text = g_strdup("");
-}
-
-static int
-osd_cmd_interface_set_attr(struct osd_priv_common *opc, struct attr* attr)
-{
- struct cmd_interface *this_ = (struct cmd_interface *)opc->data;
-
- if(NULL==attr || NULL==this_) {
- return 0;
- }
-
- if(attr->type == attr_status_text) {
- if(this_->text) {
- g_free(this_->text);
- }
- if(attr->u.str) {
- this_->text = g_strdup(attr->u.str);
- }
- return 1;
- }
- if(attr->type == attr_src) {
- if(attr->u.str) {
- if((!this_->img_filename) || strcmp(this_->img_filename, graphics_icon_path(attr->u.str))) {
- //destroy old img, create new image
- if(this_->img) {
- graphics_image_free(opc->osd_item.gr, this_->img);
- }
- if(this_->img_filename) {
- g_free(this_->img_filename);
- }
- this_->img_filename = graphics_icon_path(attr->u.str);
- this_->img = graphics_image_new(opc->osd_item.gr, this_->img_filename);
- }
- }
- return 1;
- }
- return 0;
-}
-
-
-static struct osd_priv *
-osd_cmd_interface_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct cmd_interface *this = g_new0(struct cmd_interface, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.rel_x = 120;
- opc->osd_item.rel_y = 20;
- opc->osd_item.rel_w = 60;
- opc->osd_item.rel_h = 80;
- opc->osd_item.navit = nav;
- opc->osd_item.font_size = 200;
- opc->osd_item.meth.draw = osd_draw_cast(osd_cmd_interface_draw);
-
- opc->spec_set_attr_func = osd_cmd_interface_set_attr;
- meth->set_attr = set_std_osd_attr;
-
- osd_set_std_attr(attrs, &opc->osd_item, 2);
-
- attr = attr_search(attrs, NULL, attr_width);
- this->width=attr ? attr->u.num : 2;
-
- attr = attr_search(attrs, NULL, attr_update_period);
- this->update_period=attr ? attr->u.num : 5; //default update period is 5 seconds
-
- attr = attr_search(attrs, NULL, attr_command);
- this->command = attr ? g_strdup(attr->u.str) : g_strdup("");
-
- if(b_commandtable_added == 0) {
- navit_command_add_table(nav, commands, sizeof(commands)/sizeof(struct command_table));
- b_commandtable_added = 1;
- }
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_cmd_interface_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-
-
-
-struct stopwatch {
- int width;
- struct graphics_gc *orange;
- struct callback *click_cb;
- struct color idle_color; //text color when counter is idle
-
- int bDisableReset;
- int bActive; //counting or not
- time_t current_base_time; //base time of currently measured time interval
- time_t sum_time; //sum of previous time intervals (except current intervals)
- time_t last_click_time; //time of last click (for double click handling)
-};
-
-static void
-osd_stopwatch_draw(struct osd_priv_common *opc, struct navit *nav,
- struct vehicle *v)
-{
- struct stopwatch *this = (struct stopwatch *)opc->data;
-
- struct graphics_gc *curr_color;
- char buffer[32]="00:00:00";
- struct point p;
- struct point bbox[4];
- time_t total_sec,total_min,total_hours,total_days;
- total_sec = this->sum_time;
-
- osd_fill_with_bgcolor(&opc->osd_item);
-
- if(this->bActive) {
- total_sec += time(0)-this->current_base_time;
- }
-
- total_min = total_sec/60;
- total_hours = total_min/60;
- total_days = total_hours/24;
-
- if (total_days==0) {
- g_snprintf(buffer,32,"%02d:%02d:%02d", (int)total_hours%24, (int)total_min%60, (int)total_sec%60);
- } else {
- g_snprintf(buffer,32,"%02dd %02d:%02d:%02d",
- (int)total_days, (int)total_hours%24, (int)total_min%60, (int)total_sec%60);
- }
-
- graphics_get_text_bbox(opc->osd_item.gr, opc->osd_item.font, buffer, 0x10000, 0, bbox, 0);
- p.x=(opc->osd_item.w-bbox[2].x)/2;
- p.y = opc->osd_item.h-opc->osd_item.h/10;
-
- curr_color = this->bActive?opc->osd_item.graphic_fg:this->orange;
- graphics_draw_text(opc->osd_item.gr, curr_color, NULL, opc->osd_item.font, buffer, &p, 0x10000, 0);
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
-}
-
-
-static void
-osd_stopwatch_click(struct osd_priv_common *opc, struct navit *nav, int pressed, int button, struct point *p)
-{
- struct stopwatch *this = (struct stopwatch *)opc->data;
-
- struct point bp = opc->osd_item.p;
- osd_wrap_point(&bp, nav);
- if ((p->x < bp.x || p->y < bp.y || p->x > bp.x + opc->osd_item.w || p->y > bp.y + opc->osd_item.h || !opc->osd_item.configured ) && !opc->osd_item.pressed)
- return;
- if (button != 1)
- return;
- if (navit_ignore_button(nav))
- return;
- if (!!pressed == !!opc->osd_item.pressed)
- return;
-
- if (pressed) { //single click handling
-
- if(this->bActive) {
- this->sum_time += time(0)-this->current_base_time;
- this->current_base_time = 0;
- } else {
- this->current_base_time = time(0);
- }
-
- this->bActive ^= 1; //toggle active flag
-
- if (this->last_click_time == time(0) && !this->bDisableReset) { //double click handling
- this->bActive = 0;
- this->current_base_time = 0;
- this->sum_time = 0;
- }
-
- this->last_click_time = time(0);
- }
-
- osd_stopwatch_draw(opc, nav,NULL);
-}
-
-
-static void
-osd_stopwatch_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct stopwatch *this = (struct stopwatch *)opc->data;
-
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
-
- this->orange = graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(this->orange, &this->idle_color);
- graphics_gc_set_linewidth(this->orange, this->width);
-
- opc->osd_item.graphic_fg = graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(opc->osd_item.graphic_fg, &opc->osd_item.text_color);
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width);
-
-
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width);
-
- event_add_timeout(500, 1, callback_new_1(callback_cast(osd_stopwatch_draw), opc));
-
- navit_add_callback(nav, this->click_cb = callback_new_attr_1(callback_cast (osd_stopwatch_click), attr_button, opc));
-
- osd_stopwatch_draw(opc, nav, NULL);
-}
-
-static struct osd_priv *
-osd_stopwatch_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct stopwatch *this = g_new0(struct stopwatch, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
- struct color orange_color={0xffff,0xa5a5,0x0000,0xffff};
-
- opc->data = (void*)this;
- opc->osd_item.rel_x = 120;
- opc->osd_item.rel_y = 20;
- opc->osd_item.rel_w = 60;
- opc->osd_item.rel_h = 80;
- opc->osd_item.navit = nav;
- opc->osd_item.font_size = 200;
- opc->osd_item.meth.draw = osd_draw_cast(osd_stopwatch_draw);
- meth->set_attr = set_std_osd_attr;
-
- this->bActive = 0; //do not count on init
- this->current_base_time = 0;
- this->sum_time = 0;
- this->last_click_time = 0;
-
- osd_set_std_attr(attrs, &opc->osd_item, 2);
- attr = attr_search(attrs, NULL, attr_width);
- this->width=attr ? attr->u.num : 2;
- attr = attr_search(attrs, NULL, attr_idle_color);
- this->idle_color=attr ? *attr->u.color : orange_color; // text idle_color defaults to orange
- attr = attr_search(attrs, NULL, attr_disable_reset);
- if (attr)
- this->bDisableReset = attr->u.num;
- else
- this->bDisableReset = 0;
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_stopwatch_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-
-static void
-osd_compass_draw(struct osd_priv_common *opc, struct navit *nav,
- struct vehicle *v)
-{
- struct compass *this = (struct compass *)opc->data;
-
- struct point p,bbox[4];
- struct attr attr_dir, destination_attr, position_attr, imperial_attr;
- double dir, vdir = 0;
- char *buffer;
- struct coord c1, c2;
- enum projection pro;
- int imperial=0;
-
- if (navit_get_attr(nav, attr_imperial, &imperial_attr, NULL))
- imperial=imperial_attr.u.num;
-
- osd_fill_with_bgcolor(&opc->osd_item);
- p.x = opc->osd_item.w/2;
- p.y = opc->osd_item.w/2;
- graphics_draw_circle(opc->osd_item.gr,
- opc->osd_item.graphic_fg, &p, opc->osd_item.w*5/6);
- if (v) {
- if (vehicle_get_attr(v, attr_position_direction, &attr_dir, NULL)) {
- vdir = *attr_dir.u.numd;
- handle(opc->osd_item.gr, opc->osd_item.graphic_fg, &p, opc->osd_item.w/3, -vdir);
- }
-
- if (navit_get_attr(nav, attr_destination, &destination_attr, NULL)
- && vehicle_get_attr(v, attr_position_coord_geo,&position_attr, NULL)) {
- pro = destination_attr.u.pcoord->pro;
- transform_from_geo(pro, position_attr.u.coord_geo, &c1);
- c2.x = destination_attr.u.pcoord->x;
- c2.y = destination_attr.u.pcoord->y;
- dir = atan2(c2.x - c1.x, c2.y - c1.y) * 180.0 / M_PI;
- dir -= vdir;
- handle(opc->osd_item.gr, this->green, &p, opc->osd_item.w/3, dir);
- buffer=format_distance(transform_distance(pro, &c1, &c2),"",imperial);
- graphics_get_text_bbox(opc->osd_item.gr, opc->osd_item.font, buffer, 0x10000, 0, bbox, 0);
- p.x=(opc->osd_item.w-bbox[2].x)/2;
- p.y = opc->osd_item.h-opc->osd_item.h/10;
- graphics_draw_text(opc->osd_item.gr, this->green, NULL, opc->osd_item.font, buffer, &p, 0x10000, 0);
- g_free(buffer);
- }
- }
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
-}
-
-
-
-static void
-osd_compass_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct color c;
-
- struct compass *this = (struct compass *)opc->data;
-
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
-
- this->green = graphics_gc_new(opc->osd_item.gr);
- c.r = 0;
- c.g = 65535;
- c.b = 0;
- c.a = 65535;
- graphics_gc_set_foreground(this->green, &c);
- graphics_gc_set_linewidth(this->green, this->width);
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width);
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_compass_draw), attr_position_coord_geo, opc));
- if (opc->osd_item.command)
- navit_add_callback(nav, this->click_cb = callback_new_attr_1(callback_cast (osd_std_click), attr_button, &opc->osd_item));
-
- osd_compass_draw(opc, nav, NULL);
-}
-
-static struct osd_priv *
-osd_compass_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct compass *this = g_new0(struct compass, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.rel_x = 20;
- opc->osd_item.rel_y = 20;
- opc->osd_item.rel_w = 60;
- opc->osd_item.rel_h = 80;
- opc->osd_item.navit = nav;
- opc->osd_item.font_size = 200;
- opc->osd_item.meth.draw = osd_draw_cast(osd_compass_draw);
- meth->set_attr = set_std_osd_attr;
- osd_set_std_attr(attrs, &opc->osd_item, 2);
- attr = attr_search(attrs, NULL, attr_width);
- this->width=attr ? attr->u.num : 2;
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_compass_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-struct osd_button {
- int use_overlay;
- /* FIXME: do we need navit_init_cb? It is set in two places but never read.
- * osd_button_new sets it to osd_button_init (init callback), and
- * osd_button_init sets it to osd_std_click (click callback). */
- struct callback *draw_cb,*navit_init_cb;
- struct graphics_image *img;
- char *src_dir,*src;
-};
-
-
-/**
- * @brief Adjusts width and height of an OSD item to fit the image it displays.
- *
- * A width or height of 0%, stored in relative attributes as {@code ATTR_REL_RELSHIFT}, is used as a flag
- * indicating that the respective dimension is unset, i.e. determined by the dimensions of its image.
- *
- * If this is the case for height and/or width, the respective dimension will be updated to fit the image.
- *
- * Note that this method is used by several OSD items, notably {@code osd_image}, {@code osd_button} and
- * {@code osd_android_menu}.
- *
- * @param opc The OSD item
- * @param img The image displayed by the item
- */
-static void
-osd_button_adjust_sizes(struct osd_priv_common *opc, struct graphics_image *img)
-{
- if(opc->osd_item.rel_w==ATTR_REL_RELSHIFT)
- opc->osd_item.w=img->width;
- if(opc->osd_item.rel_h==ATTR_REL_RELSHIFT)
- opc->osd_item.h=img->height;
-}
-
-static void
-osd_button_draw(struct osd_priv_common *opc, struct navit *nav)
-{
- struct osd_button *this = (struct osd_button *)opc->data;
-
- // FIXME: Do we need this check?
- if(navit_get_blocked(nav)&1)
- return;
-
- struct point p;
-
- if (this->use_overlay) {
- struct graphics_image *img;
- img=graphics_image_new_scaled(opc->osd_item.gr, this->src, opc->osd_item.w, opc->osd_item.h);
- osd_button_adjust_sizes(opc, img);
- p.x=(opc->osd_item.w-img->width)/2;
- p.y=(opc->osd_item.h-img->height)/2;
- osd_fill_with_bgcolor(&opc->osd_item);
- graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, img);
- graphics_image_free(opc->osd_item.gr, img);
- } else {
- struct graphics *gra;
- gra = navit_get_graphics(nav);
- this->img = graphics_image_new_scaled(gra, this->src, opc->osd_item.w, opc->osd_item.h);
-
- if (!this->img) {
- dbg(lvl_warning, "failed to load '%s'\n", this->src);
- return;
- }
-
- osd_std_calculate_sizes(&opc->osd_item, navit_get_width(nav), navit_get_height(nav));
- osd_button_adjust_sizes(opc, this->img);
-
- p = opc->osd_item.p;
- p.x+=(opc->osd_item.w-this->img->width)/2;
- p.y+=(opc->osd_item.h-this->img->height)/2;
-
- if (!opc->osd_item.configured)
- return;
-
- graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, this->img);
- }
-}
-
-static void
-osd_button_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct osd_button *this = (struct osd_button *)opc->data;
-
- struct graphics *gra = navit_get_graphics(nav);
-
- /* translate properties to real size */
- osd_std_calculate_sizes(&opc->osd_item, navit_get_width(nav), navit_get_height(nav));
- /* most graphics plugins cannot accept w=0 or h=0. They require special w=-1 or h=-1 for "no size"*/
- if((opc->osd_item.w <= 0) || (opc->osd_item.h <=0))
- {
- opc->osd_item.w = -1;
- opc->osd_item.h = -1;
- }
- dbg(lvl_debug, "enter\n");
- dbg(lvl_debug, "Get: %s, %d, %d, %d, %d\n", this->src, opc->osd_item.rel_w, opc->osd_item.rel_h, opc->osd_item.w, opc->osd_item.h);
- this->img = graphics_image_new_scaled(gra, this->src, opc->osd_item.w, opc->osd_item.h);
- if (!this->img) {
- dbg(lvl_warning, "failed to load '%s'\n", this->src);
- return;
- }
- else
- {
- dbg(lvl_debug,"Got %s: %d, %d\n", this->src, this->img->width, this->img->height);
- }
- osd_button_adjust_sizes(opc, this->img);
- if (this->use_overlay) {
- struct graphics_image *img;
- struct point p;
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
- img=graphics_image_new_scaled(opc->osd_item.gr, this->src, opc->osd_item.w, opc->osd_item.h);
- p.x=(opc->osd_item.w-this->img->width)/2;
- p.y=(opc->osd_item.h-this->img->height)/2;
- osd_fill_with_bgcolor(&opc->osd_item);
- graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, img);
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
- graphics_image_free(opc->osd_item.gr, img);
- } else {
- osd_set_std_config(nav, &opc->osd_item);
- osd_set_keypress(nav, &opc->osd_item);
- opc->osd_item.gr=gra;
- opc->osd_item.graphic_bg=graphics_gc_new(opc->osd_item.gr);
- graphics_add_callback(gra, this->draw_cb=callback_new_attr_2(callback_cast(osd_button_draw), attr_postdraw, opc, nav));
- }
- navit_add_callback(nav, this->navit_init_cb = callback_new_attr_1(callback_cast (osd_std_click), attr_button, &opc->osd_item));
- osd_button_draw(opc,nav);
-}
-
-static char *
-osd_button_icon_path(struct osd_button *this_, char *src)
-{
- if (!this_->src_dir)
- return graphics_icon_path(src);
- return g_strdup_printf("%s%s%s", this_->src_dir, G_DIR_SEPARATOR_S, src);
-}
-
-int
-osd_button_set_attr(struct osd_priv_common *opc, struct attr* attr)
-{
- struct osd_button *this_ = (struct osd_button *)opc->data;
-
- if(NULL==attr || NULL==this_) {
- return 0;
- }
- if(attr->type == attr_src) {
- struct navit *nav;
- struct graphics *gra;
- if(this_->src) {
- g_free(this_->src);
- }
- if(attr->u.str) {
- this_->src = osd_button_icon_path(this_, attr->u.str);
- }
- nav = opc->osd_item.navit;
- gra = navit_get_graphics(nav);
- this_->img = graphics_image_new_scaled(gra, this_->src, opc->osd_item.w, opc->osd_item.h);
- if (!this_->img) {
- dbg(lvl_warning, "failed to load '%s'\n", this_->src);
- return 0;
- }
-
- if(navit_get_blocked(nav)&1)
- return 1;
-
- osd_button_draw(opc,nav);
- navit_draw(opc->osd_item.navit);
- return 1;
- }
- return 0;
-}
-
-
-
-static struct osd_priv *
-osd_button_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct osd_button *this = g_new0(struct osd_button, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.navit = nav;
- opc->osd_item.meth.draw = osd_draw_cast(osd_button_draw);
- /*Value of 0% is stored in relative attributes as ATTR_REL_RELSHIFT, we use this value as "width/height unset" flag */
- opc->osd_item.rel_w = ATTR_REL_RELSHIFT;
- opc->osd_item.rel_h = ATTR_REL_RELSHIFT;
-
- meth->set_attr = set_std_osd_attr;
- opc->spec_set_attr_func = osd_button_set_attr;
-
- attr=attr_search(attrs, NULL, attr_use_overlay);
- if (attr)
- this->use_overlay=attr->u.num;
- osd_set_std_attr(attrs, &opc->osd_item, this->use_overlay ? 1:(1|16));
-
- if (!opc->osd_item.command) {
- dbg(lvl_error, "no command\n");
- goto error;
- }
- attr = attr_search(attrs, NULL, attr_src_dir);
- if (attr)
- this->src_dir=graphics_icon_path(attr->u.str);
- else
- this->src_dir=NULL;
- attr = attr_search(attrs, NULL, attr_src);
- if (!attr) {
- dbg(lvl_error, "no src\n");
- goto error;
- }
-
- this->src = osd_button_icon_path(this, attr->u.str);
-
- navit_add_callback(nav, this->navit_init_cb = callback_new_attr_1(callback_cast (osd_button_init), attr_graphics_ready, opc));
-
- if(b_commandtable_added == 0) {
- navit_command_add_table(nav, commands, sizeof(commands)/sizeof(struct command_table));
- b_commandtable_added = 1;
- }
-
- return (struct osd_priv *) opc;
- error:
- g_free(this);
- g_free(opc);
- return NULL;
-}
-
-static void
-osd_image_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct osd_button *this = (struct osd_button *)opc->data;
-
- struct graphics *gra = navit_get_graphics(nav);
- dbg(lvl_debug, "enter\n");
- this->img = graphics_image_new(gra, this->src);
- if (!this->img) {
- dbg(lvl_warning, "failed to load '%s'\n", this->src);
- return;
- }
- osd_button_adjust_sizes(opc, this->img);
- if (this->use_overlay) {
- struct graphics_image *img;
- struct point p;
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
- img=graphics_image_new(opc->osd_item.gr, this->src);
- p.x=(opc->osd_item.w-this->img->width)/2;
- p.y=(opc->osd_item.h-this->img->height)/2;
- osd_fill_with_bgcolor(&opc->osd_item);
- graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, img);
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
- graphics_image_free(opc->osd_item.gr, img);
- } else {
- opc->osd_item.configured=1;
- opc->osd_item.gr=gra;
- opc->osd_item.graphic_bg=graphics_gc_new(opc->osd_item.gr);
- graphics_add_callback(gra, this->draw_cb=callback_new_attr_2(callback_cast(osd_button_draw), attr_postdraw, opc, nav));
- }
- osd_button_draw(opc,nav);
-}
-
-static struct osd_priv *
-osd_image_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct osd_button *this = g_new0(struct osd_button, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.navit = nav;
- opc->osd_item.meth.draw = osd_draw_cast(osd_button_draw);
- /*Value of 0% is stored in relative attributes as ATTR_REL_RELSHIFT, we use this value as "width/height unset" flag */
- opc->osd_item.rel_w = ATTR_REL_RELSHIFT;
- opc->osd_item.rel_h = ATTR_REL_RELSHIFT;
- meth->set_attr = set_std_osd_attr;
- opc->spec_set_attr_func = osd_button_set_attr;
-
- osd_set_std_attr(attrs, &opc->osd_item, 1);
-
- attr=attr_search(attrs, NULL, attr_use_overlay);
- if (attr)
- this->use_overlay=attr->u.num;
- attr = attr_search(attrs, NULL, attr_src);
- if (!attr) {
- dbg(lvl_error, "no src\n");
- goto error;
- }
-
- this->src = graphics_icon_path(attr->u.str);
-
- navit_add_callback(nav, this->navit_init_cb = callback_new_attr_1(callback_cast (osd_image_init), attr_graphics_ready, opc));
-
- return (struct osd_priv *) opc;
- error:
- g_free(opc);
- g_free(this);
- return NULL;
-}
-
-
-/**
- * Internal data for {@code navigation_status} OSD.
- */
-struct navigation_status {
- char *icon_src; /**< Source for icon, with a placeholder */
- int icon_h;
- int icon_w;
- int last_status; /**< Last status displayed.
- Apart from the usual values of {@code nav_status}, -2 is used to
- indicate we have not yet received a status. */
-};
-
-
-/**
- * @brief Draws a `navigation_status` OSD.
- *
- * This method performs the actual operation of selecting and drawing the image. It can be called
- * directly as a callback method for the `navigation.nav_status` attribute, or indirectly through the
- * draw method.
- *
- * @param opc The OSD to draw
- * @param status The status of the navigation engine (the value of the {@code nav_status} attribute)
- */
-static void osd_navigation_status_draw_do(struct osd_priv_common *opc, int status) {
- struct navigation_status *this = (struct navigation_status *)opc->data;
- struct point p;
- int do_draw = opc->osd_item.do_draw;
- struct graphics_image *gr_image;
- char *image;
-
- /* When we're routing, the status will flip from 4 (routing) to 3 (recalculating) and back on
- * every position update. This hack prevents unnecessary (and even undesirable) updates.
- */
- int status2 = (status == 3) ? 4 : status;
-
-
- if ((status2 != this->last_status) && (status2 != status_invalid)) {
- this->last_status = status2;
- do_draw = 1;
- }
-
- if (do_draw) {
- osd_fill_with_bgcolor(&opc->osd_item);
- image = g_strdup_printf(this->icon_src, nav_status_to_text(status2));
- dbg(lvl_debug, "image=%s\n", image);
- gr_image =
- graphics_image_new_scaled(opc->osd_item.gr,
- image, this->icon_w,
- this->icon_h);
- if (!gr_image) {
- dbg(lvl_error,"failed to load %s in %dx%d\n",image,this->icon_w,this->icon_h);
- g_free(image);
- image = graphics_icon_path("unknown.png");
- gr_image =
- graphics_image_new_scaled(opc->
- osd_item.gr,
- image,
- this->icon_w,
- this->
- icon_h);
- }
- dbg(lvl_debug, "gr_image=%p\n", gr_image);
- if (gr_image) {
- p.x =
- (opc->osd_item.w -
- gr_image->width) / 2;
- p.y =
- (opc->osd_item.h -
- gr_image->height) / 2;
- graphics_draw_image(opc->osd_item.gr,
- opc->osd_item.
- graphic_fg, &p,
- gr_image);
- graphics_image_free(opc->osd_item.gr,
- gr_image);
- }
- g_free(image);
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
- }
-}
-
-
-/**
- * @brief Draws a `navigation_status` OSD.
- *
- * This is the draw method for the OSD. It exposes the standard signature for the `draw` method and acts
- * as a wrapper around `osd_navigation_status_draw_do()`.
- *
- * @param osd The OSD to draw.
- * @param navit The navit instance
- * @param v The vehicle (not used but part of the prototype)
- */
-static void osd_navigation_status_draw(struct osd_priv *osd, struct navit *navit, struct vehicle *v) {
- struct navigation *nav = NULL;
- struct attr attr;
-
- if (navit)
- nav = navit_get_navigation(navit);
- if (nav) {
- if (navigation_get_attr(nav, attr_nav_status, &attr, NULL))
- osd_navigation_status_draw_do((struct osd_priv_common *) osd, attr.u.num);
- }
-}
-
-
-/**
- * @brief Initializes a new {@code navigation_status} OSD.
- *
- * This function is registered as a callback function in {@link osd_navigation_status_new(struct navit *, struct osd_methods *, struct attr **)}.
- * It is called after graphics initialization has finished and can be used for any initialization
- * tasks which rely on a functional graphics system.
- *
- * @param opc The OSD to initialize
- * @param navit The navit instance
- */
-static void osd_navigation_status_init(struct osd_priv_common *opc, struct navit *navit) {
- struct navigation *nav = NULL;
- struct attr attr;
-
- dbg(lvl_debug, "enter, opc=%p\n", opc);
- osd_set_std_graphic(navit, &opc->osd_item, (struct osd_priv *)opc);
- if (navit)
- nav = navit_get_navigation(navit);
- if (nav) {
- navigation_register_callback(nav, attr_nav_status, callback_new_attr_1(callback_cast(osd_navigation_status_draw_do), attr_nav_status, opc));
- if (navigation_get_attr(nav, attr_nav_status, &attr, NULL))
- osd_navigation_status_draw_do(opc, attr.u.num);
- }
- else
- dbg(lvl_error, "navigation instance is NULL, OSD will never update\n");
- //navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_std_click), attr_button, &opc->osd_item)); // FIXME do we need this?
-}
-
-
-/**
- * @brief Creates a new {@code navigation_status} OSD.
- *
- * This initializes the data structures and registers {@link osd_navigation_status_init(struct osd_priv_common *, struct navit *)}
- * as a callback.
- *
- * Note that this function runs before the graphics system has been initialized. Therefore, code
- * that requires a functional graphics system must be placed in
- * {@link osd_navigation_status_init(struct osd_priv_common *, struct navit *)}.
- *
- * @param nav The navit instance
- * @param meth The methods for the new OSD
- * @param attrs The attributes for the new OSD
- */
-static struct osd_priv *osd_navigation_status_new(struct navit *nav, struct osd_methods *meth, struct attr **attrs) {
- struct navigation_status *this = g_new0(struct navigation_status, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.rel_x = 20;
- opc->osd_item.rel_y = -80;
- opc->osd_item.rel_w = 70;
- opc->osd_item.navit = nav;
- opc->osd_item.rel_h = 70;
- opc->osd_item.font_size = 200; // FIXME may not be needed
- opc->osd_item.meth.draw = osd_draw_cast(osd_navigation_status_draw);
- meth->set_attr = set_std_osd_attr;
- osd_set_std_attr(attrs, &opc->osd_item, 0);
-
- this->icon_w = -1;
- this->icon_h = -1;
- this->last_status = status_invalid;
-
- attr = attr_search(attrs, NULL, attr_icon_w);
- if (attr)
- this->icon_w = attr->u.num;
-
- attr = attr_search(attrs, NULL, attr_icon_h);
- if (attr)
- this->icon_h = attr->u.num;
-
- attr = attr_search(attrs, NULL, attr_icon_src);
- if (attr) {
- struct file_wordexp *we;
- char **array;
- we = file_wordexp_new(attr->u.str);
- array = file_wordexp_get_array(we);
- this->icon_src = graphics_icon_path(array[0]);
- file_wordexp_destroy(we);
- } else {
- this->icon_src = graphics_icon_path("%s_wh.svg");
- }
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_navigation_status_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-
-struct nav_next_turn {
- char *test_text;
- char *icon_src;
- int icon_h, icon_w, active;
- char *last_name;
- int level;
-};
-
-static void
-osd_nav_next_turn_draw(struct osd_priv_common *opc, struct navit *navit,
- struct vehicle *v)
-{
- struct nav_next_turn *this = (struct nav_next_turn *)opc->data;
-
- struct point p;
- int do_draw = opc->osd_item.do_draw;
- struct navigation *nav = NULL;
- struct map *map = NULL;
- struct map_rect *mr = NULL;
- struct item *item = NULL;
- struct graphics_image *gr_image;
- char *image;
- char *name = "unknown";
- int level = this->level;
-
- if (navit)
- nav = navit_get_navigation(navit);
- if (nav)
- map = navigation_get_map(nav);
- if (map)
- mr = map_rect_new(map, NULL);
- if (mr)
- while ((item = map_rect_get_item(mr))
- && (item->type == type_nav_position || item->type == type_nav_none || level-- > 0));
- if (item) {
- name = item_to_name(item->type);
- dbg(lvl_debug, "name=%s\n", name);
- if (this->active != 1 || this->last_name != name) {
- this->active = 1;
- this->last_name = name;
- do_draw = 1;
- }
- } else {
- if (this->active != 0) {
- this->active = 0;
- do_draw = 1;
- }
- }
- if (mr)
- map_rect_destroy(mr);
-
- if (do_draw) {
- osd_fill_with_bgcolor(&opc->osd_item);
- if (this->active) {
- image = g_strdup_printf(this->icon_src, name);
- dbg(lvl_debug, "image=%s\n", image);
- gr_image =
- graphics_image_new_scaled(opc->osd_item.gr,
- image, this->icon_w,
- this->icon_h);
- if (!gr_image) {
- dbg(lvl_error,"failed to load %s in %dx%d\n",image,this->icon_w,this->icon_h);
- g_free(image);
- image = graphics_icon_path("unknown.png");
- gr_image =
- graphics_image_new_scaled(opc->
- osd_item.gr,
- image,
- this->icon_w,
- this->
- icon_h);
- }
- dbg(lvl_debug, "gr_image=%p\n", gr_image);
- if (gr_image) {
- p.x =
- (opc->osd_item.w -
- gr_image->width) / 2;
- p.y =
- (opc->osd_item.h -
- gr_image->height) / 2;
- graphics_draw_image(opc->osd_item.gr,
- opc->osd_item.
- graphic_fg, &p,
- gr_image);
- graphics_image_free(opc->osd_item.gr,
- gr_image);
- }
- g_free(image);
- }
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
- }
-}
-
-static void
-osd_nav_next_turn_init(struct osd_priv_common *opc, struct navit *nav)
-{
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_nav_next_turn_draw), attr_position_coord_geo, opc));
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_std_click), attr_button, &opc->osd_item));
- osd_nav_next_turn_draw(opc, nav, NULL);
-}
-
-static struct osd_priv *
-osd_nav_next_turn_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct nav_next_turn *this = g_new0(struct nav_next_turn, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.rel_x = 20;
- opc->osd_item.rel_y = -80;
- opc->osd_item.rel_w = 70;
- opc->osd_item.navit = nav;
- opc->osd_item.rel_h = 70;
- opc->osd_item.font_size = 200;
- opc->osd_item.meth.draw = osd_draw_cast(osd_nav_next_turn_draw);
- meth->set_attr = set_std_osd_attr;
- osd_set_std_attr(attrs, &opc->osd_item, 0);
-
- this->icon_w = -1;
- this->icon_h = -1;
- this->active = -1;
- this->level = 0;
-
- attr = attr_search(attrs, NULL, attr_icon_w);
- if (attr)
- this->icon_w = attr->u.num;
-
- attr = attr_search(attrs, NULL, attr_icon_h);
- if (attr)
- this->icon_h = attr->u.num;
-
- attr = attr_search(attrs, NULL, attr_icon_src);
- if (attr) {
- struct file_wordexp *we;
- char **array;
- we = file_wordexp_new(attr->u.str);
- array = file_wordexp_get_array(we);
- this->icon_src = graphics_icon_path(array[0]);
- file_wordexp_destroy(we);
- } else {
- this->icon_src = graphics_icon_path("%s_wh.svg");
- }
-
- attr = attr_search(attrs, NULL, attr_level);
- if (attr)
- this->level=attr->u.num;
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_nav_next_turn_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-struct nav_toggle_announcer
-{
- int w,h;
- /* FIXME this is actually the click callback, which is set once but never read. Do we need this? */
- struct callback *navit_init_cb;
- char *icon_src;
- int icon_h, icon_w, active, last_state;
-};
-
-static void
-osd_nav_toggle_announcer_draw(struct osd_priv_common *opc, struct navit *navit, struct vehicle *v)
-{
- struct nav_toggle_announcer *this = (struct nav_toggle_announcer *)opc->data;
-
- struct point p;
- int do_draw = opc->osd_item.do_draw;
- struct graphics_image *gr_image;
- char *path;
- char *gui_sound_off = "gui_sound_off";
- char *gui_sound_on = "gui_sound";
- struct attr attr, speechattr;
-
- if (!navit_get_attr(navit, attr_speech, &speechattr, NULL))
- {
- dbg(lvl_error, "No speech plugin available, toggle_announcer disabled.\n");
- return;
- }
- if (!speech_get_attr(speechattr.u.speech, attr_active, &attr, NULL))
- attr.u.num = 1;
- this->active = attr.u.num;
-
- if(this->active != this->last_state)
- {
- this->last_state = this->active;
- do_draw = 1;
- }
-
- if (do_draw)
- {
- graphics_draw_mode(opc->osd_item.gr, draw_mode_begin);
- p.x = 0;
- p.y = 0;
- graphics_draw_rectangle(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, opc->osd_item.w, opc->osd_item.h);
-
- if (this->active)
- path = g_strdup_printf(this->icon_src, gui_sound_on);
- else
- path = g_strdup_printf(this->icon_src, gui_sound_off);
-
- gr_image = graphics_image_new_scaled(opc->osd_item.gr, path, this->icon_w, this->icon_h);
- if (!gr_image)
- {
- g_free(path);
- path = graphics_icon_path("unknown.png");
- gr_image = graphics_image_new_scaled(opc->osd_item.gr, path, this->icon_w, this->icon_h);
- }
-
- dbg(lvl_debug, "gr_image=%p\n", gr_image);
-
- if (gr_image)
- {
- p.x = (opc->osd_item.w - gr_image->width) / 2;
- p.y = (opc->osd_item.h - gr_image->height) / 2;
- graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_fg, &p, gr_image);
- graphics_image_free(opc->osd_item.gr, gr_image);
- }
-
- g_free(path);
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
- }
-}
-
-static void
-osd_nav_toggle_announcer_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct nav_toggle_announcer *this = (struct nav_toggle_announcer *)opc->data;
-
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_nav_toggle_announcer_draw), attr_speech, opc));
- navit_add_callback(nav, this->navit_init_cb = callback_new_attr_1(callback_cast(osd_std_click), attr_button, &opc->osd_item));
- osd_nav_toggle_announcer_draw(opc, nav, NULL);
-}
-
-static struct osd_priv *
-osd_nav_toggle_announcer_new(struct navit *nav, struct osd_methods *meth, struct attr **attrs)
-{
- struct nav_toggle_announcer *this = g_new0(struct nav_toggle_announcer, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
- char *command = "announcer_toggle()";
-
- opc->data = (void*)this;
- opc->osd_item.rel_w = 48;
- opc->osd_item.rel_h = 48;
- opc->osd_item.rel_x = -64;
- opc->osd_item.rel_y = 76;
- opc->osd_item.navit = nav;
- opc->osd_item.meth.draw = osd_draw_cast(osd_nav_toggle_announcer_draw);
- meth->set_attr = set_std_osd_attr;
-
- osd_set_std_attr(attrs, &opc->osd_item, 0);
-
- this->icon_w = -1;
- this->icon_h = -1;
- this->last_state = -1;
-
- attr = attr_search(attrs, NULL, attr_icon_src);
- if (attr) {
- struct file_wordexp *we;
- char **array;
- we = file_wordexp_new(attr->u.str);
- array = file_wordexp_get_array(we);
- this->icon_src = g_strdup(array[0]);
- file_wordexp_destroy(we);
- } else
- this->icon_src = graphics_icon_path("%s_32.xpm");
-
- opc->osd_item.command = g_strdup(command);
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_nav_toggle_announcer_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-enum osd_speed_warner_eAnnounceState {eNoWarn=0,eWarningTold=1};
-enum camera_t {CAM_FIXED=1, CAM_TRAFFIC_LAMP, CAM_RED, CAM_SECTION, CAM_MOBILE, CAM_RAIL, CAM_TRAFFIPAX};
-char*camera_t_strs[] = {"None","Fix","Traffic lamp","Red detect","Section","Mobile","Rail","Traffipax(non persistent)"};
-char*camdir_t_strs[] = {"All dir.","UNI-dir","BI-dir"};
-enum cam_dir_t {CAMDIR_ALL=0, CAMDIR_ONE, CAMDIR_TWO};
-
-struct osd_speed_cam_entry {
- double lon;
- double lat;
- enum camera_t cam_type;
- int speed_limit;
- enum cam_dir_t cam_dir;
- int direction;
-};
-
-struct osd_speed_cam {
- int width;
- int flags;
- struct graphics_gc *orange;
- struct graphics_gc *red;
- struct color idle_color;
-
- int announce_on;
- enum osd_speed_warner_eAnnounceState announce_state;
- char *text; //text of label attribute for this osd
-};
-
-static double
-angle_diff(int firstAngle,int secondAngle)
-{
- double difference = secondAngle - firstAngle;
- while (difference < -180) difference += 360;
- while (difference > 180) difference -= 360;
- return difference;
-}
-
-static void
-osd_speed_cam_draw(struct osd_priv_common *opc, struct navit *navit, struct vehicle *v)
-{
- struct osd_speed_cam *this_ = (struct osd_speed_cam *)opc->data;
-
- struct attr position_attr,vehicle_attr,imperial_attr;
- struct point bbox[4];
- struct attr speed_attr;
- struct vehicle* curr_vehicle = v;
- struct coord curr_coord;
- struct coord cam_coord;
- struct mapset* ms;
-
- double dCurrDist = -1;
- int dir_idx = -1;
- int dir = -1;
- int spd = -1;
- int idx = -1;
- double speed = -1;
- int bFound = 0;
-
- int dst=2000;
- int dstsq=dst*dst;
- struct map_selection sel;
- struct map_rect *mr;
- struct mapset_handle *msh;
- struct map *map;
- struct item *item;
-
- struct attr attr_dir;
- struct graphics_gc *curr_color;
- int ret_attr = 0;
- int imperial=0;
-
- if (navit_get_attr(navit, attr_imperial, &imperial_attr, NULL))
- imperial=imperial_attr.u.num;
-
-
- if(navit) {
- navit_get_attr(navit, attr_vehicle, &vehicle_attr, NULL);
- }
- else {
- return;
- }
- if (vehicle_attr.u.vehicle) {
- curr_vehicle = vehicle_attr.u.vehicle;
- }
-
- if(0==curr_vehicle)
- return;
-
- if(!(ms=navit_get_mapset(navit))) {
- return;
- }
-
- ret_attr = vehicle_get_attr(curr_vehicle, attr_position_coord_geo,&position_attr, NULL);
- if(0==ret_attr) {
- return;
- }
-
- transform_from_geo(projection_mg, position_attr.u.coord_geo, &curr_coord);
-
- sel.next=NULL;
- sel.order=18;
- sel.range.min=type_tec_common;
- sel.range.max=type_tec_common;
- sel.u.c_rect.lu.x=curr_coord.x-dst;
- sel.u.c_rect.lu.y=curr_coord.y+dst;
- sel.u.c_rect.rl.x=curr_coord.x+dst;
- sel.u.c_rect.rl.y=curr_coord.y-dst;
-
- msh=mapset_open(ms);
- while ((map=mapset_next(msh, 1))) {
- struct attr attr;
- if(map_get_attr(map, attr_type, &attr, NULL)) {
- if( strcmp("csv", attr.u.str) && strcmp("binfile", attr.u.str)) {
- continue;
- }
- }
- else {
- continue;
- }
- mr=map_rect_new(map, &sel);
- if (!mr)
- continue;
- while ((item=map_rect_get_item(mr))) {
- struct coord cn;
- if (item->type == type_tec_common && item_coord_get(item, &cn, 1)) {
- int dist=transform_distance_sq(&cn, &curr_coord);
- if (dist < dstsq) {
- struct attr tec_attr;
- bFound = 1;
- dstsq=dist;
- dCurrDist = sqrt(dist);
- cam_coord = cn;
- idx = -1;
- if(item_attr_get(item,attr_tec_type,&tec_attr)) {
- idx = tec_attr.u.num;
- }
- dir_idx = -1;
- if(item_attr_get(item,attr_tec_dirtype,&tec_attr)) {
- dir_idx = tec_attr.u.num;
- }
- dir= 0;
- if(item_attr_get(item,attr_tec_direction,&tec_attr)) {
- dir = tec_attr.u.num;
- }
- spd= 0;
- if(item_attr_get(item,attr_maxspeed,&tec_attr)) {
- spd = tec_attr.u.num;
- }
- }
- }
- }
- map_rect_destroy(mr);
- }
- mapset_close(msh);
-
- if(bFound && (idx==-1 || this_->flags & (1<<(idx-1))) ) {
- dCurrDist = transform_distance(projection_mg, &curr_coord, &cam_coord);
- ret_attr = vehicle_get_attr(curr_vehicle,attr_position_speed,&speed_attr, NULL);
- if(0==ret_attr) {
- graphics_overlay_disable(opc->osd_item.gr,1);
- return;
- }
- if (opc->osd_item.configured) {
- graphics_overlay_disable(opc->osd_item.gr,0);
- }
- speed = *speed_attr.u.numd;
- if(dCurrDist <= speed*750.0/130.0) { //at speed 130 distance limit is 750m
- if(this_->announce_state==eNoWarn && this_->announce_on) {
- this_->announce_state=eWarningTold; //warning told
- navit_say(navit, _("Look out! Camera!"));
- }
- }
- else {
- this_->announce_state=eNoWarn;
- }
-
- if(this_->text) {
- char buffer [256]="";
- char buffer2[256]="";
- char dir_str[16];
- char spd_str[16];
- buffer [0] = 0;
- buffer2[0] = 0;
-
- osd_fill_with_bgcolor(&opc->osd_item);
-
- str_replace(buffer,this_->text,"${distance}",format_distance(dCurrDist,"",imperial));
- str_replace(buffer2,buffer,"${camera_type}",(0<=idx && idx<=CAM_TRAFFIPAX)?camera_t_strs[idx]:"");
- str_replace(buffer,buffer2,"${camera_dir}",(0<=dir_idx && dir_idx<=CAMDIR_TWO)?camdir_t_strs[dir_idx]:"");
- sprintf(dir_str,"%d",dir);
- sprintf(spd_str,"%d",spd);
- str_replace(buffer2,buffer,"${direction}",dir_str);
- str_replace(buffer,buffer2,"${speed_limit}",spd_str);
-
- graphics_get_text_bbox(opc->osd_item.gr, opc->osd_item.font, buffer, 0x10000, 0, bbox, 0);
- curr_color = this_->orange;
- //tolerance is +-20 degrees
- if(
- dir_idx==CAMDIR_ONE &&
- dCurrDist <= speed*750.0/130.0 &&
- vehicle_get_attr(v, attr_position_direction, &attr_dir, NULL) &&
- fabs(angle_diff(dir,*attr_dir.u.numd))<=20 ) {
- curr_color = this_->red;
- }
- //tolerance is +-20 degrees in both directions
- else if(
- dir_idx==CAMDIR_TWO &&
- dCurrDist <= speed*750.0/130.0 &&
- vehicle_get_attr(v, attr_position_direction, &attr_dir, NULL) &&
- (fabs(angle_diff(dir,*attr_dir.u.numd))<=20 || fabs(angle_diff(dir+180,*attr_dir.u.numd))<=20 )) {
- curr_color = this_->red;
- }
- else if(dCurrDist <= speed*750.0/130.0) {
- curr_color = this_->red;
- }
- draw_multiline_osd_text(buffer,&opc->osd_item, curr_color);
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
- }
- }
- else {
- graphics_overlay_disable(opc->osd_item.gr,1);
- }
-}
-
-static void
-osd_speed_cam_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct osd_speed_cam *this = (struct osd_speed_cam *)opc->data;
-
- struct color red_color={0xffff,0x0000,0x0000,0xffff};
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
-
- this->red = graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(this->red, &red_color);
- graphics_gc_set_linewidth(this->red, this->width);
-
- this->orange = graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(this->orange, &this->idle_color);
- graphics_gc_set_linewidth(this->orange, this->width);
-
- opc->osd_item.graphic_fg = graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(opc->osd_item.graphic_fg, &opc->osd_item.text_color);
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width);
-
-
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->width);
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_speed_cam_draw), attr_position_coord_geo, opc));
-
-}
-
-static struct osd_priv *
-osd_speed_cam_new(struct navit *nav, struct osd_methods *meth, struct attr **attrs)
-{
-
- struct color default_color={0xffff,0xa5a5,0x0000,0xffff};
-
- struct osd_speed_cam *this = g_new0(struct osd_speed_cam, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.p.x = 120;
- opc->osd_item.p.y = 20;
- opc->osd_item.w = 60;
- opc->osd_item.h = 80;
- opc->osd_item.navit = nav;
- opc->osd_item.font_size = 200;
- opc->osd_item.meth.draw = osd_draw_cast(osd_speed_cam_draw);
- meth->set_attr = set_std_osd_attr;
-
- osd_set_std_attr(attrs, &opc->osd_item, 2);
- attr = attr_search(attrs, NULL, attr_width);
- this->width=attr ? attr->u.num : 2;
- attr = attr_search(attrs, NULL, attr_idle_color);
- this->idle_color=attr ? *attr->u.color : default_color; // text idle_color defaults to orange
-
- attr = attr_search(attrs, NULL, attr_label);
- if (attr) {
- this->text = g_strdup(attr->u.str);
- }
- else
- this->text = NULL;
-
- attr = attr_search(attrs, NULL, attr_announce_on);
- if (attr) {
- this->announce_on = attr->u.num;
- }
- else {
- this->announce_on = 1; //announce by default
- }
-
- attr = attr_search(attrs, NULL, attr_flags);
- if (attr) {
- this->flags = attr->u.num;
- }
- else {
- this->flags = -1; //every cam type is on by default
- }
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_speed_cam_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-struct osd_speed_warner {
- struct graphics_gc *red;
- struct graphics_gc *green;
- struct graphics_gc *grey;
- struct graphics_gc *black;
- int width;
- int active;
- int d;
- double speed_exceed_limit_offset;
- double speed_exceed_limit_percent;
- int announce_on;
- enum osd_speed_warner_eAnnounceState announce_state;
- int bTextOnly;
- struct graphics_image *img_active,*img_passive,*img_off;
- char* label_str;
- int timeout;
- int wait_before_warn;
- struct callback *click_cb;
-};
-
-static void
-osd_speed_warner_draw(struct osd_priv_common *opc, struct navit *navit, struct vehicle *v)
-{
- struct osd_speed_warner *this = (struct osd_speed_warner *)opc->data;
-
- struct point p,bbox[4];
- char text[16]="";
-
- struct tracking *tracking = NULL;
- struct graphics_gc *osd_color=this->grey;
- struct graphics_image *img = this->img_off;
-
-
- osd_fill_with_bgcolor(&opc->osd_item);
- p.x=opc->osd_item.w/2-this->d/4;
- p.y=opc->osd_item.h/2-this->d/4;
- p.x=opc->osd_item.w/2;
- p.y=opc->osd_item.h/2;
-
- if (navit) {
- tracking = navit_get_tracking(navit);
- }
- if (tracking && this->active ) {
-
- struct attr maxspeed_attr,speed_attr,imperial_attr;
- int *flags;
- double routespeed = -1;
- double tracking_speed = -1;
- int osm_data = 0;
- struct item *item;
- int imperial=0;
-
- item=tracking_get_current_item(tracking);
-
- if(navit) {
- if (navit_get_attr(navit, attr_imperial, &imperial_attr, NULL))
- imperial=imperial_attr.u.num;
- }
-
- flags=tracking_get_current_flags(tracking);
- if (flags && (*flags & AF_SPEED_LIMIT) && tracking_get_attr(tracking, attr_maxspeed, &maxspeed_attr, NULL)) {
- routespeed = maxspeed_attr.u.num;
- osm_data = 1;
- }
- if (routespeed == -1) {
- struct vehicleprofile *prof=navit_get_vehicleprofile(navit);
- struct roadprofile *rprof=NULL;
- if (prof && item)
- rprof=vehicleprofile_get_roadprofile(prof, item->type);
- if (rprof) {
- if(rprof->maxspeed!=0)
- routespeed=rprof->maxspeed;
- }
- }
- tracking_get_attr(tracking, attr_position_speed, &speed_attr, NULL);
- tracking_speed = *speed_attr.u.numd;
- if( -1 != tracking_speed && -1 != routespeed ) {
- char*routespeed_str = format_speed(routespeed,"","value",imperial);
- g_snprintf(text,16,"%s%s",osm_data ? "" : "~",routespeed_str);
- g_free(routespeed_str);
- if( this->speed_exceed_limit_offset+routespeed<tracking_speed &&
- (100.0+this->speed_exceed_limit_percent)/100.0*routespeed<tracking_speed ) {
- if(this->announce_state==eNoWarn && this->announce_on) {
- if(this->wait_before_warn>0){
- this->wait_before_warn--;
- }else{
- this->announce_state=eWarningTold; //warning told
- navit_say(navit,_("Please decrease your speed"));
- }
- }
- }else{
- /* reset speed warning */
- this->wait_before_warn = this->timeout;
- }
- if( tracking_speed <= routespeed ) {
- this->announce_state=eNoWarn; //no warning
- osd_color = this->green;
- img = this->img_passive;
- }
- else {
- osd_color = this->red;
- img = this->img_active;
- }
- } else {
- osd_color = this-> grey;
- img = this->img_off;
- this->announce_state = eNoWarn;
- }
- } else {
- //when tracking is not available display grey
- osd_color = this->grey;
- img = this->img_off;
- this->announce_state = eNoWarn;
- }
- if(this->img_active && this->img_passive && this->img_off) {
- struct point p;
- p.x=(opc->osd_item.w-img->width)/2;
- p.y=(opc->osd_item.h-img->height)/2;
- graphics_draw_image(opc->osd_item.gr, opc->osd_item.graphic_bg, &p, img);
- }
- else if(0==this->bTextOnly) {
- graphics_draw_circle(opc->osd_item.gr, osd_color, &p, this->d-this->width*2 );
- }
- graphics_get_text_bbox(opc->osd_item.gr, opc->osd_item.font, text, 0x10000, 0, bbox, 0);
- p.x=(opc->osd_item.w-bbox[2].x)/2;
- p.y=(opc->osd_item.h+bbox[2].y)/2-bbox[2].y;
- graphics_draw_text(opc->osd_item.gr, osd_color, NULL, opc->osd_item.font, text, &p, 0x10000, 0);
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
-}
-
-static void
-osd_speed_warner_click(struct osd_priv_common *opc, struct navit *nav, int pressed, int button, struct point *p)
-{
- struct osd_speed_warner *this = (struct osd_speed_warner *)opc->data;
-
- struct point bp = opc->osd_item.p;
- osd_wrap_point(&bp, nav);
- if ((p->x < bp.x || p->y < bp.y || p->x > bp.x + opc->osd_item.w || p->y > bp.y + opc->osd_item.h || !opc->osd_item.configured ) && !opc->osd_item.pressed)
- return;
- if (button != 1)
- return;
- if (navit_ignore_button(nav))
- return;
- if (!!pressed == !!opc->osd_item.pressed)
- return;
-
- this->active = !this->active;
- osd_speed_warner_draw(opc, nav, NULL);
-}
-
-
-static void
-osd_speed_warner_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct osd_speed_warner *this = (struct osd_speed_warner *)opc->data;
-
- struct color red_color={0xffff,0,0,0xffff};
- struct color green_color={0,0xffff,0,0xffff};
- struct color grey_color={0x8888,0x8888,0x8888,0x8888};
- struct color black_color={0x1111,0x1111,0x1111,0x9999};
-
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_speed_warner_draw), attr_position_coord_geo, opc));
- navit_add_callback(nav, this->click_cb = callback_new_attr_1(callback_cast (osd_speed_warner_click), attr_button, opc));
-
- this->d=opc->osd_item.w;
- if (opc->osd_item.h < this->d)
- this->d=opc->osd_item.h;
- this->width=this->d/10;
- this->wait_before_warn = this->timeout;
- if(this->label_str && !strncmp("images:",this->label_str,7)) {
- char *tok1=NULL, *tok2=NULL, *tok3=NULL;
- strtok(this->label_str,":");
- tok1 = strtok(NULL,":");
- if(tok1) {
- tok2 = strtok(NULL,":");
- }
- if(tok1 && tok2) {
- tok3 = strtok(NULL,":");
- }
- if(tok1 && tok2 && tok3) {
- tok1 = graphics_icon_path(tok1);
- tok2 = graphics_icon_path(tok2);
- tok3 = graphics_icon_path(tok3);
- this->img_active = graphics_image_new(opc->osd_item.gr, tok1);
- this->img_passive = graphics_image_new(opc->osd_item.gr, tok2);
- this->img_off = graphics_image_new(opc->osd_item.gr, tok3);
- g_free(tok1);
- g_free(tok2);
- g_free(tok3);
- }
- }
-
- g_free(this->label_str);
- this->label_str = NULL;
-
- graphics_gc_set_linewidth(opc->osd_item.graphic_fg, this->d/2-2 /*-this->width*/ );
-
- this->red=graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(this->red, &red_color);
- graphics_gc_set_linewidth(this->red, this->width);
-
- this->green=graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(this->green, &green_color);
- graphics_gc_set_linewidth(this->green, this->width-2);
-
- this->grey=graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(this->grey, &grey_color);
- graphics_gc_set_linewidth(this->grey, this->width);
-
- this->black=graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(this->black, &black_color);
- graphics_gc_set_linewidth(this->black, this->width);
-
- osd_speed_warner_draw(opc, nav, NULL);
-}
-
-static struct osd_priv *
-osd_speed_warner_new(struct navit *nav, struct osd_methods *meth, struct attr **attrs)
-{
- struct osd_speed_warner *this=g_new0(struct osd_speed_warner, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.rel_x=-80;
- opc->osd_item.rel_y=20;
- opc->osd_item.rel_w=60;
- opc->osd_item.rel_h=60;
- opc->osd_item.navit = nav;
- this->active=-1;
- opc->osd_item.meth.draw = osd_draw_cast(osd_speed_warner_draw);
- meth->set_attr = set_std_osd_attr;
-
- attr = attr_search(attrs, NULL, attr_speed_exceed_limit_offset);
- if (attr) {
- this->speed_exceed_limit_offset = attr->u.num;
- } else
- this->speed_exceed_limit_offset = 15; //by default 15 km/h
-
- attr = attr_search(attrs, NULL, attr_speed_exceed_limit_percent);
- if (attr) {
- this->speed_exceed_limit_percent = attr->u.num;
- } else
- this->speed_exceed_limit_percent = 10; //by default factor of 1.1
-
- this->bTextOnly = 0; //by default display graphics also
- attr = attr_search(attrs, NULL, attr_label);
- if (attr) {
- this->label_str = g_strdup(attr->u.str);
- if (!strcmp("text_only",attr->u.str)) {
- this->bTextOnly = 1;
- }
- }
- attr = attr_search(attrs, NULL, attr_timeout);
- if (attr)
- this->timeout = attr->u.num;
- else
- this->timeout = 10; // 10s timeout by default
-
- attr = attr_search(attrs, NULL, attr_announce_on);
- if (attr)
- this->announce_on = attr->u.num;
- else
- this->announce_on = 1; //announce by default
- osd_set_std_attr(attrs, &opc->osd_item, 2);
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_speed_warner_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-struct osd_text_item {
- int static_text;
- char *text;
- void *prev;
- void *next;
- enum attr_type section;
- enum attr_type attr_typ;
- void *root;
- int offset;
- char *format;
-};
-
-struct osd_text {
- int active;
- char *text;
- int align;
- char *last;
- struct osd_text_item *items;
-};
-
-
-/**
- * @brief Formats a text attribute
- *
- * Returns the formatted current value of an attribute as a string
- *
- * @param attr The attribute to be formatted
- * @param format A string specifying how to format the attribute. Allowed format strings depend on the attribute; this member can be NULL.
- * @param imperial True to convert values to imperial, false to return metric values
- * @returns The formatted value
- */
-static char *
-osd_text_format_attr(struct attr *attr, char *format, int imperial)
-{
- struct tm tm, text_tm, text_tm0;
- time_t textt;
- int days=0;
- char buffer[1024];
-
- switch (attr->type) {
- case attr_position_speed:
- return format_speed(*attr->u.numd,"",format,imperial);
- case attr_position_height:
- case attr_position_direction:
- return format_float_0(*attr->u.numd);
- case attr_position_magnetic_direction:
- return g_strdup_printf("%ld",attr->u.num);
- case attr_position_coord_geo:
- if ((!format) || (!strcmp(format,"pos_degminsec")))
- {
- coord_format(attr->u.coord_geo->lat,attr->u.coord_geo->lng,DEGREES_MINUTES_SECONDS,buffer,sizeof(buffer));
- return g_strdup(buffer);
- }
- else if (!strcmp(format,"pos_degmin"))
- {
- coord_format(attr->u.coord_geo->lat,attr->u.coord_geo->lng,DEGREES_MINUTES,buffer,sizeof(buffer));
- return g_strdup(buffer);
- }
- else if (!strcmp(format,"pos_deg"))
- {
- coord_format(attr->u.coord_geo->lat,attr->u.coord_geo->lng,DEGREES_DECIMAL,buffer,sizeof(buffer));
- return g_strdup(buffer);
- }
- else if (!strcmp(format,"lat_degminsec"))
- {
- coord_format(attr->u.coord_geo->lat,360,DEGREES_MINUTES_SECONDS,buffer,sizeof(buffer));
- return g_strdup(buffer);
- }
- else if (!strcmp(format,"lat_degmin"))
- {
- coord_format(attr->u.coord_geo->lat,360,DEGREES_MINUTES,buffer,sizeof(buffer));
- return g_strdup(buffer);
- }
- else if (!strcmp(format,"lat_deg"))
- {
- coord_format(attr->u.coord_geo->lat,360,DEGREES_DECIMAL,buffer,sizeof(buffer));
- return g_strdup(buffer);
- }
- else if (!strcmp(format,"lng_degminsec"))
- {
- coord_format(360,attr->u.coord_geo->lng,DEGREES_MINUTES_SECONDS,buffer,sizeof(buffer));
- return g_strdup(buffer);
- }
- else if (!strcmp(format,"lng_degmin"))
- {
- coord_format(360,attr->u.coord_geo->lng,DEGREES_MINUTES,buffer,sizeof(buffer));
- return g_strdup(buffer);
- }
- else if (!strcmp(format,"lng_deg"))
- {
- coord_format(360,attr->u.coord_geo->lng,DEGREES_DECIMAL,buffer,sizeof(buffer));
- return g_strdup(buffer);
- }
- else
- { // fall back to pos_degminsec
- coord_format(attr->u.coord_geo->lat,attr->u.coord_geo->lng,DEGREES_MINUTES_SECONDS,buffer,sizeof(buffer));
- return g_strdup(buffer);
- }
- case attr_destination_time:
- if (!format || (strcmp(format,"arrival") && strcmp(format,"remaining")))
- break;
- textt = time(NULL);
- tm = *localtime(&textt);
- if (!strcmp(format,"remaining")) {
- textt-=tm.tm_hour*3600+tm.tm_min*60+tm.tm_sec;
- tm = *localtime(&textt);
- }
- textt += attr->u.num / 10;
- text_tm = *localtime(&textt);
- if (tm.tm_year != text_tm.tm_year || tm.tm_mon != text_tm.tm_mon || tm.tm_mday != text_tm.tm_mday) {
- text_tm0 = text_tm;
- text_tm0.tm_sec = 0;
- text_tm0.tm_min = 0;
- text_tm0.tm_hour = 0;
- tm.tm_sec = 0;
- tm.tm_min = 0;
- tm.tm_hour = 0;
- days = (mktime(&text_tm0) - mktime(&tm) + 43200) / 86400;
- }
- return format_time(&text_tm, days);
- case attr_length:
- case attr_destination_length:
- if (!format)
- break;
- if (!strcmp(format,"named"))
- return format_distance(attr->u.num,"",imperial);
- if (!strcmp(format,"value") || !strcmp(format,"unit")) {
- char *ret,*tmp=format_distance(attr->u.num," ",imperial);
- char *pos=strchr(tmp,' ');
- if (! pos)
- return tmp;
- *pos++='\0';
- if (!strcmp(format,"value"))
- return tmp;
- ret=g_strdup(pos);
- g_free(tmp);
- return ret;
- }
- case attr_position_time_iso8601:
- if ((!format) || (!strcmp(format,"iso8601")))
- {
- break;
- }
- else
- {
- if (strstr(format, "local;") == format)
- {
- textt = iso8601_to_secs(attr->u.str);
- memcpy ((void *) &tm, (void *) localtime(&textt), sizeof(tm));
- strftime(buffer, sizeof(buffer), (char *)(format + 6), &tm);
- }
- else if ((sscanf(format, "%*c%2d:%2d;", &(text_tm.tm_hour), &(text_tm.tm_min)) == 2) && (strchr("+-", format[0])))
- {
- if (strchr("-", format[0]))
- {
- textt = iso8601_to_secs(attr->u.str) - text_tm.tm_hour * 3600 - text_tm.tm_min * 60;
- }
- else
- {
- textt = iso8601_to_secs(attr->u.str) + text_tm.tm_hour * 3600 + text_tm.tm_min * 60;
- }
- memcpy ((void *) &tm, (void *) gmtime(&textt), sizeof(tm));
- strftime(buffer, sizeof(buffer), &format[strcspn(format, ";") + 1], &tm);
- }
- else
- {
- sscanf(attr->u.str, "%4d-%2d-%2dT%2d:%2d:%2d", &(tm.tm_year), &(tm.tm_mon), &(tm.tm_mday), &(tm.tm_hour), &(tm.tm_min), &(tm.tm_sec));
- // the tm structure definition is kinda weird and needs some extra voodoo
- tm.tm_year-=1900; tm.tm_mon--;
- // get weekday and day of the year
- mktime(&tm);
- strftime(buffer, sizeof(buffer), format, &tm);
- }
- return g_strdup(buffer);
- }
- default:
- break;
- }
- return attr_to_text(attr, NULL, 1);
-}
-
-/**
- * @brief Parses a string of the form key.subkey or key[index].subkey into its components, where subkey
- * can itself have its own index and further subkeys
- *
- * @param in String to parse (the part before subkey will be modified by the function); upon returning
- * this pointer will point to a string containing key
- * @param index Pointer to an address that will receive a pointer to a string containing index or NULL
- * if key does not have an index
- * @returns If the function succeeds, a pointer to a string containing subkey, i.e. everything following
- * the first period, or a pointer to an empty string if there is nothing left to parse. If the function
- * fails (index with missing closed bracket or passing a null pointer as index argument when an index
- * was encountered), the return value is NULL
- */
-static char *
-osd_text_split(char *in, char **index)
-{
- char *pos;
- int len;
- if (index)
- *index=NULL;
- len=strcspn(in,"[.");
- in+=len;
- switch (in[0]) {
- case '\0':
- return in;
- case '.':
- *in++='\0';
- return in;
- case '[':
- if (!index)
- return NULL;
- *in++='\0';
- *index=in;
- pos=strchr(in,']');
- if (pos) {
- *pos++='\0';
- if (*pos == '.') {
- *pos++='\0';
- }
- return pos;
- }
- return NULL;
- }
- return NULL;
-}
-
-static void
-osd_text_draw(struct osd_priv_common *opc, struct navit *navit, struct vehicle *v)
-{
- struct osd_text *this = (struct osd_text *)opc->data;
- struct point p, p2[4];
- char *str,*last,*next,*value,*absbegin;
- int do_draw = opc->osd_item.do_draw;
- struct attr attr, vehicle_attr, maxspeed_attr, imperial_attr;
- struct navigation *nav = NULL;
- struct tracking *tracking = NULL;
- struct map *nav_map = NULL;
- struct map_rect *nav_mr = NULL;
- struct item *item;
- struct osd_text_item *oti;
- int offset,lines;
- int height=opc->osd_item.font_size*13/256;
- int yspacing=height/2;
- int xspacing=height/4;
- int imperial=0;
-
- if (navit_get_attr(navit, attr_imperial, &imperial_attr, NULL))
- imperial=imperial_attr.u.num;
-
- vehicle_attr.u.vehicle=NULL;
- oti=this->items;
- str=NULL;
-
- while (oti) {
- item=NULL;
- value=NULL;
-
- if (oti->static_text) {
- value=g_strdup(oti->text);
- } else if (oti->section == attr_navigation) {
- if (navit && !nav)
- nav = navit_get_navigation(navit);
- if (nav && !nav_map)
- nav_map = navigation_get_map(nav);
- if (nav_map )
- nav_mr = map_rect_new(nav_map, NULL);
- if (nav_mr)
- item = map_rect_get_item(nav_mr);
-
- offset=oti->offset;
- while (item) {
- if (item->type == type_nav_none)
- item=map_rect_get_item(nav_mr);
- else if (!offset)
- break;
- else {
- offset--;
- item=map_rect_get_item(nav_mr);
- }
- }
-
- if (item) {
- dbg(lvl_debug,"name %s\n", item_to_name(item->type));
- dbg(lvl_debug,"type %s\n", attr_to_name(oti->attr_typ));
- if (item_attr_get(item, oti->attr_typ, &attr))
- value=osd_text_format_attr(&attr, oti->format, imperial);
- }
- if (nav_mr)
- map_rect_destroy(nav_mr);
- } else if (oti->section == attr_vehicle) {
- if (navit && !vehicle_attr.u.vehicle) {
- navit_get_attr(navit, attr_vehicle, &vehicle_attr, NULL);
- }
- if (vehicle_attr.u.vehicle) {
- if (vehicle_get_attr(vehicle_attr.u.vehicle, oti->attr_typ, &attr, NULL)) {
- value=osd_text_format_attr(&attr, oti->format, imperial);
- }
- }
- } else if (oti->section == attr_tracking) {
- if (navit) {
- tracking = navit_get_tracking(navit);
- }
- if (tracking) {
- item=tracking_get_current_item(tracking);
- if (item && (oti->attr_typ == attr_speed)) {
- double routespeed = -1;
- int *flags=tracking_get_current_flags(tracking);
- if (flags && (*flags & AF_SPEED_LIMIT) && tracking_get_attr(tracking, attr_maxspeed, &maxspeed_attr, NULL)) {
- routespeed = maxspeed_attr.u.num;
- }
- if (routespeed == -1) {
- struct vehicleprofile *prof=navit_get_vehicleprofile(navit);
- struct roadprofile *rprof=NULL;
- if (prof)
- rprof=vehicleprofile_get_roadprofile(prof, item->type);
- if (rprof) {
- routespeed=rprof->speed;
- }
- }
-
- value = format_speed(routespeed,"", oti->format, imperial);
- } else if (item) {
- if (tracking_get_attr(tracking, oti->attr_typ, &attr, NULL))
- value=osd_text_format_attr(&attr, oti->format, imperial);
- }
- }
-
- } else if (oti->section == attr_navit) {
- if (oti->attr_typ == attr_message) {
- struct message *msg;
- int len,offset;
- char *tmp;
-
- msg = navit_get_messages(navit);
- len = 0;
- while (msg) {
- len+= strlen(msg->text) + 2;
-
- msg = msg->next;
- }
-
- value = g_malloc(len +1);
-
- msg = navit_get_messages(navit);
- offset = 0;
- while (msg) {
- tmp = g_stpcpy((value+offset), msg->text);
- g_stpcpy(tmp, "\\n");
- offset += strlen(msg->text) + 2;
-
- msg = msg->next;
- }
-
- value[len] = '\0';
- }
- }
-
- next=g_strdup_printf("%s%s",str ? str:"",value ? value:" ");
- if (value)
- g_free(value);
- if (str)
- g_free(str);
- str=next;
- oti=oti->next;
- }
-
- if ( !this->last || !str || strcmp(this->last, str) ) {
- do_draw=1;
- if (this->last)
- g_free(this->last);
- this->last = g_strdup(str);
- }
-
- absbegin=str;
-
- if (do_draw) {
- osd_fill_with_bgcolor(&opc->osd_item);
- if (str) {
- lines=0;
- next=str;
- last=str;
- while ((next=strstr(next, "\\n"))) {
- last = next;
- lines++;
- next++;
- }
-
- while (*last) {
- if (! g_ascii_isspace(*last)) {
- lines++;
- break;
- }
- last++;
- }
-
- dbg(lvl_debug,"this->align=%d\n", this->align);
- switch (this->align & 51) {
- case 1:
- p.y=0;
- break;
- case 2:
- p.y=(opc->osd_item.h-lines*(height+yspacing)-yspacing);
- break;
- case 16: // Grow from top to bottom
- p.y = 0;
- if (lines != 0) {
- opc->osd_item.h = (lines-1) * (height+yspacing) + height;
- } else {
- opc->osd_item.h = 0;
- }
-
- if (do_draw) {
- osd_std_resize(&opc->osd_item);
- }
- default:
- p.y=(opc->osd_item.h-lines*(height+yspacing)-yspacing)/2;
- }
-
- while (str) {
- next=strstr(str, "\\n");
- if (next) {
- *next='\0';
- next+=2;
- }
- graphics_get_text_bbox(opc->osd_item.gr,
- opc->osd_item.font,
- str, 0x10000,
- 0x0, p2, 0);
- switch (this->align & 12) {
- case 4:
- p.x=xspacing;
- break;
- case 8:
- p.x=opc->osd_item.w-(p2[2].x-p2[0].x)-xspacing;
- break;
- default:
- p.x = ((p2[0].x - p2[2].x) / 2) + (opc->osd_item.w / 2);
- }
- p.y += height+yspacing;
- graphics_draw_text(opc->osd_item.gr,
- opc->osd_item.graphic_fg_text,
- NULL, opc->osd_item.font,
- str, &p, 0x10000,
- 0);
- str=next;
- }
- }
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
- }
- g_free(absbegin);
-
-}
-
-/**
- * @brief Creates a new osd_text_item and inserts it into a linked list
- *
- * @param parent The preceding {@code osd_text_item} in the list. If NULL, the new item becomes the root
- * element of a new list
- * @returns The new {@code osd_text_item}
- */
-static struct osd_text_item *
-oti_new(struct osd_text_item * parent)
-{
- struct osd_text_item *this;
- this=g_new0(struct osd_text_item, 1);
- this->prev=parent;
-
- if(!parent) {
- this->root=this;
- } else {
- parent->next=this;
- this->root=parent->root;
- }
-
- return this;
-}
-
-/**
- * @brief Prepares a text type OSD element
- *
- * This function parses the label string (as specified in the XML file) for a text type OSD element
- * into attributes and static text.
- *
- * @param opc The {@code struct osd_priv_common} for the OSD element. {@code opc->data->items} will
- * receive a pointer to a list of {@code osd_text_item} structures.
- * @param nav The navit structure
- */
-static void
-osd_text_prepare(struct osd_priv_common *opc, struct navit *nav)
-{
- struct osd_text *this = (struct osd_text *)opc->data;
-
- char *absbegin,*str,*start,*end,*key,*subkey,*index;
- struct osd_text_item *oti;
-
- oti=NULL;
- str=g_strdup(this->text);
- absbegin=str;
-
- while ((start=strstr(str, "${"))) {
-
- *start='\0';
- start+=2;
-
- // find plain text before
- if (start!=str) {
- oti = oti_new(oti);
- oti->static_text=1;
- oti->text=g_strdup(str);
-
- }
-
- end=strstr(start,"}");
- if (! end)
- break;
-
- *end++='\0';
- key=start;
-
- subkey=osd_text_split(key,NULL);
-
- oti = oti_new(oti);
- oti->section=attr_from_name(key);
-
- if (( oti->section == attr_navigation ||
- oti->section == attr_tracking) && subkey) {
- key=osd_text_split(subkey,&index);
-
- if (index)
- oti->offset=atoi(index);
-
- subkey=osd_text_split(key,&index);
-
- if (!strcmp(key,"route_speed")) {
- oti->attr_typ=attr_speed;
- } else {
- oti->attr_typ=attr_from_name(key);
- }
- oti->format = g_strdup(index);
-
- } else if ((oti->section == attr_vehicle || oti->section == attr_navit) && subkey) {
- key=osd_text_split(subkey,&index);
- if (!strcmp(subkey,"messages")) {
- oti->attr_typ=attr_message;
- } else {
- oti->attr_typ=attr_from_name(subkey);
- }
- oti->format = g_strdup(index);
- }
-
- switch(oti->attr_typ) {
- default:
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_text_draw), attr_position_coord_geo, opc));
- break;
- }
-
- str=(end);
- }
-
- if(*str!='\0'){
- oti = oti_new(oti);
- oti->static_text=1;
- oti->text=g_strdup(str);
- }
-
- if (oti)
- this->items=oti->root;
- else
- this->items=NULL;
-
- g_free(absbegin);
-
-}
-
-static void
-osd_text_init(struct osd_priv_common *opc, struct navit *nav)
-{
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_std_click), attr_button, &opc->osd_item));
- osd_text_prepare(opc,nav);
- osd_text_draw(opc, nav, NULL);
-
-}
-
-static int
-osd_text_set_attr(struct osd_priv_common *opc, struct attr* attr)
-{
- struct osd_text *this_ = (struct osd_text *)opc->data;
-
- if(NULL==attr || NULL==this_) {
- return 0;
- }
- if(attr->type == attr_label) {
- struct navit *nav=opc->osd_item.navit;
-
- if(this_->text)
- g_free(this_->text);
-
- if(attr->u.str)
- this_->text = g_strdup(attr->u.str);
- else
- this_->text=g_strdup("");
-
- osd_text_prepare(opc,nav);
-
- if(navit_get_blocked(nav)&1)
- return 1;
-
- osd_text_draw(opc,nav,NULL);
- navit_draw(opc->osd_item.navit);
- return 1;
- }
- return 0;
-}
-
-
-static struct osd_priv *
-osd_text_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct osd_text *this = g_new0(struct osd_text, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.rel_x = -80;
- opc->osd_item.rel_y = 20;
- opc->osd_item.rel_w = 60;
- opc->osd_item.rel_h = 20;
- opc->osd_item.navit = nav;
- opc->osd_item.font_size = 200;
- opc->osd_item.meth.draw = osd_draw_cast(osd_text_draw);
- meth->set_attr = set_std_osd_attr;
- opc->spec_set_attr_func = osd_text_set_attr;
- osd_set_std_attr(attrs, &opc->osd_item, 2);
-
- this->active = -1;
- this->last = NULL;
-
- attr = attr_search(attrs, NULL, attr_label);
- if (attr)
- this->text = g_strdup(attr->u.str);
- else
- this->text = NULL;
- attr = attr_search(attrs, NULL, attr_align);
- if (attr)
- this->align=attr->u.num;
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_text_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-struct gps_status {
- char *icon_src;
- int icon_h, icon_w, active;
- int strength;
-};
-
-static void
-osd_gps_status_draw(struct osd_priv_common *opc, struct navit *navit,
- struct vehicle *v)
-{
- struct gps_status *this = (struct gps_status *)opc->data;
-
- struct point p;
- int do_draw = opc->osd_item.do_draw;
- struct graphics_image *gr_image;
- char *image;
- struct attr attr, vehicle_attr;
- int strength=-1;
-
- if (navit && navit_get_attr(navit, attr_vehicle, &vehicle_attr, NULL)) {
- if (vehicle_get_attr(vehicle_attr.u.vehicle, attr_position_fix_type, &attr, NULL)) {
- switch(attr.u.num) {
- case 1:
- case 2:
- strength=2;
- if (vehicle_get_attr(vehicle_attr.u.vehicle, attr_position_sats_used, &attr, NULL)) {
- dbg(lvl_debug,"num=%ld\n", attr.u.num);
- if (attr.u.num >= 3)
- strength=attr.u.num-1;
- if (strength > 5)
- strength=5;
- if (strength > 3) {
- if (vehicle_get_attr(vehicle_attr.u.vehicle, attr_position_hdop, &attr, NULL)) {
- if (*attr.u.numd > 2.0 && strength > 4)
- strength=4;
- if (*attr.u.numd > 4.0 && strength > 3)
- strength=3;
- }
- }
- }
- break;
- default:
- strength=1;
- }
- }
- }
- if (this->strength != strength) {
- this->strength=strength;
- do_draw=1;
- }
- if (do_draw) {
- osd_fill_with_bgcolor(&opc->osd_item);
- if (this->active) {
- image = g_strdup_printf(this->icon_src, strength);
- gr_image = graphics_image_new_scaled(opc->osd_item.gr, image, this->icon_w, this->icon_h);
- if (gr_image) {
- p.x = (opc->osd_item.w - gr_image->width) / 2;
- p.y = (opc->osd_item.h - gr_image->height) / 2;
- graphics_draw_image(opc->osd_item.gr, opc->osd_item. graphic_fg, &p, gr_image);
- graphics_image_free(opc->osd_item.gr, gr_image);
- }
- g_free(image);
- }
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
- }
-}
-
-static void
-osd_gps_status_init(struct osd_priv_common *opc, struct navit *nav)
-{
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_draw), attr_position_coord_geo, opc));
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_draw), attr_position_fix_type, opc));
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_draw), attr_position_sats_used, opc));
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_draw), attr_position_hdop, opc));
- osd_gps_status_draw(opc, nav, NULL);
-}
-
-static struct osd_priv *
-osd_gps_status_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct gps_status *this = g_new0(struct gps_status, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.rel_x = 20;
- opc->osd_item.rel_y = -80;
- opc->osd_item.rel_w = 60;
- opc->osd_item.navit = nav;
- opc->osd_item.rel_h = 40;
- opc->osd_item.font_size = 200;
- opc->osd_item.meth.draw = osd_draw_cast(osd_gps_status_draw);
- meth->set_attr = set_std_osd_attr;
- osd_set_std_attr(attrs, &opc->osd_item, 0);
-
- this->icon_w = -1;
- this->icon_h = -1;
- this->active = -1;
- this->strength = -2;
-
- attr = attr_search(attrs, NULL, attr_icon_w);
- if (attr)
- this->icon_w = attr->u.num;
-
- attr = attr_search(attrs, NULL, attr_icon_h);
- if (attr)
- this->icon_h = attr->u.num;
-
- attr = attr_search(attrs, NULL, attr_icon_src);
- if (attr) {
- struct file_wordexp *we;
- char **array;
- we = file_wordexp_new(attr->u.str);
- array = file_wordexp_get_array(we);
- this->icon_src = g_strdup(array[0]);
- file_wordexp_destroy(we);
- } else
- this->icon_src = graphics_icon_path("gui_strength_%d_32_32.png");
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-
-struct volume {
- char *icon_src;
- int icon_h, icon_w, active;
- int strength;
- struct callback *click_cb;
-};
-
-static void
-osd_volume_draw(struct osd_priv_common *opc, struct navit *navit)
-{
- struct volume *this = (struct volume *)opc->data;
-
- struct point p;
- struct graphics_image *gr_image;
- char *image;
-
- osd_fill_with_bgcolor(&opc->osd_item);
- if (this->active) {
- image = g_strdup_printf(this->icon_src, this->strength);
- gr_image = graphics_image_new_scaled(opc->osd_item.gr, image, this->icon_w, this->icon_h);
- if (gr_image) {
- p.x = (opc->osd_item.w - gr_image->width) / 2;
- p.y = (opc->osd_item.h - gr_image->height) / 2;
- graphics_draw_image(opc->osd_item.gr, opc->osd_item. graphic_fg, &p, gr_image);
- graphics_image_free(opc->osd_item.gr, gr_image);
- }
- g_free(image);
- }
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
-}
-
-static void
-osd_volume_click(struct osd_priv_common *opc, struct navit *nav, int pressed, int button, struct point *p)
-{
- struct volume *this = (struct volume *)opc->data;
-
- struct point bp = opc->osd_item.p;
- if ((p->x < bp.x || p->y < bp.y || p->x > bp.x + opc->osd_item.w || p->y > bp.y + opc->osd_item.h) && !opc->osd_item.pressed)
- return;
- navit_ignore_button(nav);
- if (pressed) {
- if (p->y - bp.y < opc->osd_item.h/2)
- this->strength++;
- else
- this->strength--;
- if (this->strength < 0)
- this->strength=0;
- if (this->strength > 5)
- this->strength=5;
- osd_volume_draw(opc, nav);
- }
-}
-static void
-osd_volume_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct volume *this = (struct volume *)opc->data;
-
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
- navit_add_callback(nav, this->click_cb = callback_new_attr_1(callback_cast (osd_volume_click), attr_button, opc));
- osd_volume_draw(opc, nav);
-}
-
-static struct osd_priv *
-osd_volume_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct volume *this = g_new0(struct volume, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
- opc->osd_item.rel_x = 20;
- opc->osd_item.rel_y = -80;
- opc->osd_item.rel_w = 60;
- opc->osd_item.rel_h = 40;
- opc->osd_item.navit = nav;
- opc->osd_item.font_size = 200;
- opc->osd_item.meth.draw = osd_draw_cast(osd_volume_draw);
- meth->set_attr = set_std_osd_attr;
- osd_set_std_attr(attrs, &opc->osd_item, 0);
-
- this->icon_w = -1;
- this->icon_h = -1;
- this->active = -1;
- this->strength = -1;
-
- attr = attr_search(attrs, NULL, attr_icon_w);
- if (attr)
- this->icon_w = attr->u.num;
-
- attr = attr_search(attrs, NULL, attr_icon_h);
- if (attr)
- this->icon_h = attr->u.num;
-
- attr = attr_search(attrs, NULL, attr_icon_src);
- if (attr) {
- struct file_wordexp *we;
- char **array;
- we = file_wordexp_new(attr->u.str);
- array = file_wordexp_get_array(we);
- this->icon_src = g_strdup(array[0]);
- file_wordexp_destroy(we);
- } else
- this->icon_src = graphics_icon_path("gui_strength_%d_32_32.png");
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_volume_init), attr_graphics_ready, opc));
- return (struct osd_priv *) opc;
-}
-
-struct osd_scale {
- int use_overlay;
- struct callback *draw_cb,*navit_init_cb;
- struct graphics_gc *black;
-};
-
-static int
-round_to_nice_value(double value)
-{
- double nearest_power_of10,mantissa;
- nearest_power_of10=pow(10,floor(log10(value)));
- mantissa=value/nearest_power_of10;
- if (mantissa >= 5)
- mantissa=5;
- else if (mantissa >= 2)
- mantissa=2;
- else
- mantissa=1;
- return mantissa*nearest_power_of10;
-}
-
-static void
-osd_scale_draw(struct osd_priv_common *opc, struct navit *nav)
-{
- struct osd_scale *this = (struct osd_scale *)opc->data;
-
- struct point item_pos,scale_line_start,scale_line_end;
- struct point p[10],bbox[4];
- struct attr transformation,imperial_attr;
- int scale_x_offset,scale_length_on_map,scale_length_pixels;
- double distance_on_map;
- char *text;
- int width_reduced;
- int imperial=0;
-
- osd_std_calculate_sizes(&opc->osd_item, navit_get_width(nav), navit_get_height(nav));
-
- width_reduced=opc->osd_item.w*9/10;
-
- if (navit_get_attr(nav, attr_imperial, &imperial_attr, NULL))
- imperial=imperial_attr.u.num;
-
- if (!navit_get_attr(nav, attr_transformation, &transformation, NULL))
- return;
- if (this->use_overlay) {
- graphics_draw_mode(opc->osd_item.gr, draw_mode_begin);
- item_pos.x=0;
- item_pos.y=0;
- graphics_draw_rectangle(opc->osd_item.gr, opc->osd_item.graphic_bg, &item_pos, opc->osd_item.w, opc->osd_item.h);
- } else {
- item_pos=opc->osd_item.p;
- }
- scale_line_start=item_pos;
- scale_line_start.y+=opc->osd_item.h/2;
- scale_line_start.x+=(opc->osd_item.w-width_reduced)/2;
- scale_line_end=scale_line_start;
- scale_line_end.x+=width_reduced;
-
- distance_on_map=transform_pixels_to_map_distance(transformation.u.transformation, width_reduced);
- scale_length_on_map=round_to_nice_value(distance_on_map);
- scale_length_pixels=scale_length_on_map/distance_on_map*width_reduced;
- scale_x_offset=(opc->osd_item.w-scale_length_pixels) / 2;
-
- p[0]=scale_line_start;
- p[1]=scale_line_end;
- p[0].x+=scale_x_offset;
- p[1].x-=scale_x_offset;
- p[2]=p[0];
- p[3]=p[0];
- p[2].y-=opc->osd_item.h/10;
- p[3].y+=opc->osd_item.h/10;
- p[4]=p[1];
- p[5]=p[1];
- p[4].y-=opc->osd_item.h/10;
- p[5].y+=opc->osd_item.h/10;
- p[6]=p[2];
- p[6].x-=2;
- p[6].y-=2;
- p[7]=p[0];
- p[7].y-=2;
- p[8]=p[4];
- p[8].x-=2;
- p[8].y-=2;
- graphics_draw_rectangle(opc->osd_item.gr, opc->osd_item.graphic_fg, p+6, 4,opc->osd_item.h/5+4);
- graphics_draw_rectangle(opc->osd_item.gr, opc->osd_item.graphic_fg, p+7, p[1].x-p[0].x, 4);
- graphics_draw_rectangle(opc->osd_item.gr, opc->osd_item.graphic_fg, p+8, 4,opc->osd_item.h/5+4);
- graphics_draw_lines(opc->osd_item.gr, this->black, p, 2);
- graphics_draw_lines(opc->osd_item.gr, this->black, p+2, 2);
- graphics_draw_lines(opc->osd_item.gr, this->black, p+4, 2);
- text=format_distance(scale_length_on_map, "", imperial);
- graphics_get_text_bbox(opc->osd_item.gr, opc->osd_item.font, text, 0x10000, 0, bbox, 0);
- p[0].x=(opc->osd_item.w-bbox[2].x)/2+item_pos.x;
- p[0].y=item_pos.y+opc->osd_item.h-opc->osd_item.h/10;
- graphics_draw_text(opc->osd_item.gr, this->black, opc->osd_item.graphic_fg, opc->osd_item.font, text, &p[0], 0x10000, 0);
- g_free(text);
- if (this->use_overlay)
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
-}
-
-static void
-osd_scale_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct osd_scale *this = (struct osd_scale *)opc->data;
-
- struct color color_black={COLOR_BLACK_};
- struct graphics *gra = navit_get_graphics(nav);
- dbg(lvl_debug, "enter\n");
- if (this->use_overlay) {
- osd_set_std_graphic(nav, &opc->osd_item, (struct osd_priv *)opc);
- } else {
- opc->osd_item.configured=1;
- opc->osd_item.gr=gra;
- opc->osd_item.font = graphics_font_new(opc->osd_item.gr, opc->osd_item.font_size, 1);
- opc->osd_item.graphic_fg=graphics_gc_new(opc->osd_item.gr);
- }
- this->black=graphics_gc_new(opc->osd_item.gr);
- graphics_gc_set_foreground(this->black, &color_black);
- graphics_add_callback(gra, this->draw_cb=callback_new_attr_2(callback_cast(osd_scale_draw), attr_postdraw, opc, nav));
- if (navit_get_ready(nav) == 3)
- osd_scale_draw(opc, nav);
-}
-
-static struct osd_priv *
-osd_scale_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct osd_scale *this = g_new0(struct osd_scale, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- struct attr *attr;
-
- opc->data = (void*)this;
-
- opc->osd_item.navit = nav;
- opc->osd_item.meth.draw = osd_draw_cast(osd_scale_draw);
- meth->set_attr = set_std_osd_attr;
-
- osd_set_std_attr(attrs, &opc->osd_item, 3);
-
- attr=attr_search(attrs, NULL, attr_use_overlay);
- if (attr)
- this->use_overlay=attr->u.num;
-
- navit_add_callback(nav, this->navit_init_cb = callback_new_attr_1(callback_cast (osd_scale_init), attr_graphics_ready, opc));
-
- return (struct osd_priv *) opc;
-}
-
-struct auxmap {
- struct displaylist *displaylist;
- struct transformation *ntrans;
- struct transformation *trans;
- struct layout *layout;
- struct callback *postdraw_cb;
- struct graphics_gc *red;
- struct navit *nav;
-};
-
-static void
-osd_auxmap_draw(struct osd_priv_common *opc)
-{
- struct auxmap *this = (struct auxmap *)opc->data;
-
- int d=10;
- struct point p;
- struct attr mapset;
-
- if (!opc->osd_item.configured)
- return;
- if (!navit_get_attr(this->nav, attr_mapset, &mapset, NULL) || !mapset.u.mapset)
- return;
- p.x=opc->osd_item.w/2;
- p.y=opc->osd_item.h/2;
-
- if (opc->osd_item.rel_h || opc->osd_item.rel_w) {
- struct map_selection sel;
- memset(&sel, 0, sizeof(sel));
- sel.u.p_rect.rl.x=opc->osd_item.w;
- sel.u.p_rect.rl.y=opc->osd_item.h;
- dbg(lvl_debug,"osd_auxmap_draw: sel.u.p_rect.rl=(%d, %d)\n", opc->osd_item.w, opc->osd_item.h);
- transform_set_screen_selection(this->trans, &sel);
- graphics_set_rect(opc->osd_item.gr, &sel.u.p_rect);
- }
-
- transform_set_center(this->trans, transform_get_center(this->ntrans));
- transform_set_scale(this->trans, 64);
- transform_set_yaw(this->trans, transform_get_yaw(this->ntrans));
- transform_setup_source_rect(this->trans);
- transform_set_projection(this->trans, transform_get_projection(this->ntrans));
-#if 0
- graphics_displaylist_draw(opc->osd_item.gr, this->displaylist, this->trans, this->layout, 4);
-#endif
- graphics_draw(opc->osd_item.gr, this->displaylist, mapset.u.mapset, this->trans, this->layout, 0, NULL, 1);
- graphics_draw_circle(opc->osd_item.gr, this->red, &p, d);
- graphics_draw_mode(opc->osd_item.gr, draw_mode_end);
-
-}
-
-static void
-osd_auxmap_init(struct osd_priv_common *opc, struct navit *nav)
-{
- struct auxmap *this = (struct auxmap *)opc->data;
-
- struct graphics *gra;
- struct attr attr;
- struct map_selection sel;
- struct pcoord center={ projection_mg, 0, 0};
- struct color red={0xffff,0x0,0x0,0xffff};
-
- this->nav=nav;
- if (! navit_get_attr(nav, attr_graphics, &attr, NULL))
- return;
- gra=attr.u.graphics;
- graphics_add_callback(gra, callback_new_attr_1(callback_cast(osd_auxmap_draw), attr_postdraw, opc));
- if (! navit_get_attr(nav, attr_transformation, &attr, NULL))
- return;
- this->ntrans=attr.u.transformation;
- if (! navit_get_attr(nav, attr_displaylist, &attr, NULL))
- return;
- this->displaylist=attr.u.displaylist;
- if (! navit_get_attr(nav, attr_layout, &attr, NULL))
- return;
- this->layout=attr.u.layout;
- osd_set_std_graphic(nav, &opc->osd_item, NULL);
- graphics_init(opc->osd_item.gr);
- this->red=graphics_gc_new(gra);
- graphics_gc_set_foreground(this->red,&red);
- graphics_gc_set_linewidth(this->red,3);
- memset(&sel, 0, sizeof(sel));
- sel.u.p_rect.rl.x=opc->osd_item.w;
- sel.u.p_rect.rl.y=opc->osd_item.h;
- this->trans=transform_new(&center, 16, 0);
- transform_set_screen_selection(this->trans, &sel);
- graphics_set_rect(opc->osd_item.gr, &sel.u.p_rect);
-#if 0
- osd_auxmap_draw(opc, nav);
-#endif
-}
-
-static struct osd_priv *
-osd_auxmap_new(struct navit *nav, struct osd_methods *meth, struct attr **attrs)
-{
- struct auxmap *this = g_new0(struct auxmap, 1);
- struct osd_priv_common *opc = g_new0(struct osd_priv_common,1);
- opc->data = (void*)this;
-
- opc->osd_item.rel_x = 20;
- opc->osd_item.rel_y = -80;
- opc->osd_item.rel_w = 60;
- opc->osd_item.rel_h = 40;
- opc->osd_item.font_size = 200;
- meth->set_attr = set_std_osd_attr;
- osd_set_std_attr(attrs, &opc->osd_item, 0);
-
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_auxmap_init), attr_navit, opc));
- return (struct osd_priv *) opc;
-}
-
-
-void
-plugin_init(void)
-{
- plugin_register_category_osd("compass", osd_compass_new);
- plugin_register_category_osd("navigation_next_turn", osd_nav_next_turn_new);
- plugin_register_category_osd("button", osd_button_new);
- plugin_register_category_osd("toggle_announcer", osd_nav_toggle_announcer_new);
- plugin_register_category_osd("speed_warner", osd_speed_warner_new);
- plugin_register_category_osd("speed_cam", osd_speed_cam_new);
- plugin_register_category_osd("text", osd_text_new);
- plugin_register_category_osd("gps_status", osd_gps_status_new);
- plugin_register_category_osd("volume", osd_volume_new);
- plugin_register_category_osd("scale", osd_scale_new);
- plugin_register_category_osd("image", osd_image_new);
- plugin_register_category_osd("stopwatch", osd_stopwatch_new);
- plugin_register_category_osd("odometer", osd_odometer_new);
- plugin_register_category_osd("auxmap", osd_auxmap_new);
- plugin_register_category_osd("cmd_interface", osd_cmd_interface_new);
- plugin_register_category_osd("route_guard", osd_route_guard_new);
- plugin_register_category_osd("navigation_status", osd_navigation_status_new);
-}
diff --git a/navit/param.c b/navit/param.c
deleted file mode 100644
index fbf14b316..000000000
--- a/navit/param.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "param.h"
-
-void
-param_add_string(const char *name, const char *value, struct param_list **param, int *count)
-{
- char *param_name;
- char *param_value;
- if (*count > 0) {
- param_name=malloc(strlen(value)+strlen(name)+2);
- param_value=param_name+strlen(name)+1;
- strcpy(param_name, name);
- strcpy(param_value, value);
- (*param)->name=param_name;
- (*param)->value=param_value;
-
- (*count)--;
- (*param)++;
- }
-
-}
-
-void
-param_add_dec(const char *name, unsigned long value, struct param_list **param, int *count)
-{
- char buffer[1024];
- sprintf(buffer, "%ld", value);
- param_add_string(name, buffer, param, count);
-}
-
-
-void
-param_add_hex(const char *name, unsigned long value, struct param_list **param, int *count)
-{
- char buffer[1024];
- sprintf(buffer, "0x%lx", value);
- param_add_string(name, buffer, param, count);
-}
-
-void
-param_add_hex_sig(const char *name, long value, struct param_list **param, int *count)
-{
- char buffer[1024];
- if (value < 0)
- sprintf(buffer, "-0x%lx", -value);
- else
- sprintf(buffer, "0x%lx", value);
- param_add_string(name, buffer, param, count);
-}
diff --git a/navit/param.h b/navit/param.h
deleted file mode 100644
index 8b7ec04f7..000000000
--- a/navit/param.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_PARAM_H
-#define NAVIT_PARAM_H
-
-struct param_list {
- const char *name;
- const char *value;
-};
-
-void param_add_string(const char *name, const char *value, struct param_list **param, int *count);
-void param_add_dec(const char *name, unsigned long value, struct param_list **param, int *count);
-void param_add_hex(const char *name, unsigned long value, struct param_list **param, int *count);
-void param_add_hex_sig(const char *name, long value, struct param_list **param, int *count);
-
-#endif
-
diff --git a/navit/phrase.c b/navit/phrase.c
deleted file mode 100644
index 9c7edaaa7..000000000
--- a/navit/phrase.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * 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 <time.h>
-#include <glib.h>
-#include "coord.h"
-#include "item.h"
-#include "route.h"
-#include "speech.h"
-#include "phrase.h"
-
-void
-phrase_route_calc(void *speech)
-{
-#if 0
- if (! speech)
- return;
- speech_say(speech,"Die Route wird berechnet\n");
-#endif
-}
-
-void
-phrase_route_calculated(void *speech, void *route)
-{
-#if 0
- struct tm *eta;
-#endif
- if (! speech)
- return;
-
-#if 0 /* FIXME */
- eta=route_get_eta(route);
-
- speech_sayf(speech,"Die Route wurde berechnet, geschätzte Ankunftszeit %d Uhr %d Entfernung %4.0f Kilometer", eta->tm_hour,eta->tm_min,route_get_len(route)/1000);
-#endif
-
-}
diff --git a/navit/phrase.h b/navit/phrase.h
deleted file mode 100644
index d184b379b..000000000
--- a/navit/phrase.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_PHRASE_H
-#define NAVIT_PHRASE_H
-
-void phrase_route_calc(void *speech);
-void phrase_route_calculated(void *speech, void *route);
-
-#endif
-
diff --git a/navit/plugin.c b/navit/plugin.c
deleted file mode 100644
index 8c61bc9b7..000000000
--- a/navit/plugin.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/**
- * 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 <string.h>
-#include <glib.h>
-#include "config.h"
-#ifdef USE_PLUGINS
-#ifdef HAVE_GMODULE
-#include <gmodule.h>
-#else
-#ifdef HAVE_API_WIN32_BASE
-#include <windows.h>
-#else
-#include <dlfcn.h>
-#endif
-#endif
-#endif
-#include "plugin.h"
-#include "file.h"
-#define PLUGIN_C
-#include "plugin.h"
-#include "item.h"
-#include "debug.h"
-
-#ifdef USE_PLUGINS
-#ifndef HAVE_GMODULE
-typedef void * GModule;
-#define G_MODULE_BIND_LOCAL 1
-#define G_MODULE_BIND_LAZY 2
-static int
-g_module_supported(void)
-{
- return 1;
-}
-
-#ifdef HAVE_API_WIN32_BASE
-
-static DWORD last_error;
-static char errormsg[64];
-
-static void *
-g_module_open(char *name, int flags)
-{
- HINSTANCE handle;
- int len=MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, -1, 0, 0);
- wchar_t filename[len];
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, -1, filename, len) ;
-
- handle = LoadLibraryW (filename);
- if (!handle)
- last_error=GetLastError();
- return handle;
-}
-
-static char *
-g_module_error(void)
-{
- sprintf(errormsg,"dll error %d",(int)last_error);
- return errormsg;
-}
-
-static int
-g_module_symbol(GModule *handle, char *symbol, gpointer *addr)
-{
-#ifdef HAVE_API_WIN32_CE
- int len=MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, symbol, -1, 0, 0);
- wchar_t wsymbol[len+1];
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, symbol, -1, wsymbol, len) ;
- *addr=GetProcAddress ((HANDLE)handle, wsymbol);
-#else
- *addr=GetProcAddress ((HANDLE)handle, symbol);
-#endif
- if (*addr)
- return 1;
- last_error=GetLastError();
- return 0;
-}
-
-static void
-g_module_close(GModule *handle)
-{
- FreeLibrary((HANDLE)handle);
-}
-
-#else
-static void *
-g_module_open(char *name, int flags)
-{
- return dlopen(name,
- (flags & G_MODULE_BIND_LAZY ? RTLD_LAZY : RTLD_NOW) |
- (flags & G_MODULE_BIND_LOCAL ? RTLD_LOCAL : RTLD_GLOBAL));
-}
-
-static char *
-g_module_error(void)
-{
- return dlerror();
-}
-
-static int
-g_module_symbol(GModule *handle, char *symbol, gpointer *addr)
-{
- *addr=dlsym(handle, symbol);
- return (*addr != NULL);
-}
-
-static void
-g_module_close(GModule *handle)
-{
- dlclose(handle);
-}
-#endif
-#endif
-#endif
-
-struct plugin {
- int active;
- int lazy;
- int ondemand;
- char *name;
-#ifdef USE_PLUGINS
- GModule *mod;
-#endif
- void (*init)(void);
-};
-
-struct plugins {
- GHashTable *hash;
- GList *list;
-} *pls;
-
-static struct plugin *
-plugin_new_from_path(char *plugin)
-{
-#ifdef USE_PLUGINS
- struct plugin *ret;
- if (! g_module_supported()) {
- return NULL;
- }
- ret=g_new0(struct plugin, 1);
- ret->name=g_strdup(plugin);
- return ret;
-#else
- return NULL;
-#endif
-}
-
-int
-plugin_load(struct plugin *pl)
-{
-#ifdef USE_PLUGINS
- gpointer init;
-
- GModule *mod;
-
- if (pl->mod) {
- dbg(lvl_debug,"'%s' already loaded, returning\n", pl->name);
- return 1;
- }
- mod=g_module_open(pl->name, G_MODULE_BIND_LOCAL | (pl->lazy ? G_MODULE_BIND_LAZY : 0));
- if (! mod) {
- dbg(lvl_error,"can't load '%s', Error '%s'\n", pl->name, g_module_error());
- return 0;
- }
- if (!g_module_symbol(mod, "plugin_init", &init)) {
- dbg(lvl_error,"can't load '%s', plugin_init not found\n", pl->name);
- g_module_close(mod);
- return 0;
- } else {
- dbg(lvl_debug, "loaded module %s\n", pl->name);
- pl->mod=mod;
- pl->init=init;
- }
- return 1;
-#else
- return 0;
-#endif
-}
-
-char *
-plugin_get_name(struct plugin *pl)
-{
- return pl->name;
-}
-
-int
-plugin_get_active(struct plugin *pl)
-{
- return pl->active;
-}
-
-void
-plugin_set_active(struct plugin *pl, int active)
-{
- pl->active=active;
-}
-
-void
-plugin_set_lazy(struct plugin *pl, int lazy)
-{
- pl->lazy=lazy;
-}
-
-#ifdef USE_PLUGINS
-static int
-plugin_get_ondemand(struct plugin *pl)
-{
- return pl->ondemand;
-}
-#endif
-
-static void
-plugin_set_ondemand(struct plugin *pl, int ondemand)
-{
- pl->ondemand=ondemand;
-}
-
-void
-plugin_call_init(struct plugin *pl)
-{
- pl->init();
-}
-
-void
-plugin_unload(struct plugin *pl)
-{
-#ifdef USE_PLUGINS
- g_module_close(pl->mod);
- pl->mod=NULL;
-#endif
-}
-
-void
-plugin_destroy(struct plugin *pl)
-{
- g_free(pl);
-}
-
-struct plugins *
-plugins_new(void)
-{
- struct plugins *ret=g_new0(struct plugins, 1);
- ret->hash=g_hash_table_new(g_str_hash, g_str_equal);
- pls=ret;
- return ret;
-}
-
-struct plugin *
-plugin_new(struct attr *parent, struct attr **attrs) {
-#ifdef USE_PLUGINS
- struct attr *path_attr, *attr;
- struct file_wordexp *we;
- int active=1; // default active
- int lazy=0, ondemand=0;
- int i, count;
- char **array;
- char *name;
- struct plugin *pl=NULL;
- struct plugins *pls=NULL;
-
- if (parent)
- pls=parent->u.plugins;
-
- if (! (path_attr=attr_search(attrs, NULL, attr_path))) {
- dbg(lvl_error,"missing path\n");
- return NULL;
- }
- if ( (attr=attr_search(attrs, NULL, attr_active))) {
- active=attr->u.num;
- }
- if ( (attr=attr_search(attrs, NULL, attr_lazy))) {
- lazy=attr->u.num;
- }
- if ( (attr=attr_search(attrs, NULL, attr_ondemand))) {
- ondemand=attr->u.num;
- }
- dbg(lvl_debug, "path=\"%s\", active=%d, lazy=%d, ondemand=%d\n",path_attr->u.str, active, lazy, ondemand);
-
- we=file_wordexp_new(path_attr->u.str);
- count=file_wordexp_get_count(we);
- array=file_wordexp_get_array(we);
- dbg(lvl_info,"expanded to %d words\n",count);
- if (count != 1 || file_exists(array[0])) {
- for (i = 0 ; i < count ; i++) {
- name=array[i];
- dbg(lvl_info,"found plugin module file [%d]: '%s'\n", i, name);
- if (! (pls && (pl=g_hash_table_lookup(pls->hash, name)))) {
- pl=plugin_new_from_path(name);
- if (! pl) {
- dbg(lvl_error,"failed to create plugin from file '%s'\n", name);
- continue;
- }
- if (pls) {
- g_hash_table_insert(pls->hash, plugin_get_name(pl), pl);
- pls->list=g_list_append(pls->list, pl);
- }
- } else {
- if (pls) {
- pls->list=g_list_remove(pls->list, pl);
- pls->list=g_list_append(pls->list, pl);
- }
- }
- plugin_set_active(pl, active);
- plugin_set_lazy(pl, lazy);
- plugin_set_ondemand(pl, ondemand);
- if (!pls && active) {
- if (!plugin_load(pl))
- plugin_set_active(pl, 0);
- else
- plugin_call_init(pl);
- }
- }
- }
- file_wordexp_destroy(we);
- return pl;
-#else
- return 0;
-#endif
-}
-
-void
-plugins_init(struct plugins *pls)
-{
-#ifdef USE_PLUGINS
- struct plugin *pl;
- GList *l;
-
- l=pls->list;
- if (l){
- while (l) {
- pl=l->data;
- if (! plugin_get_ondemand(pl)) {
- if (plugin_get_active(pl))
- if (!plugin_load(pl))
- plugin_set_active(pl, 0);
- if (plugin_get_active(pl))
- plugin_call_init(pl);
- }
- l=g_list_next(l);
- }
- } else {
- dbg(lvl_error, "Warning: No plugins found. Is Navit installed correctly?\n");
- }
-#endif
-}
-
-void
-plugins_destroy(struct plugins *pls)
-{
- GList *l;
- struct plugin *pl;
-
- l=pls->list;
- while (l) {
- pl=l->data;
- plugin_unload(pl);
- plugin_destroy(pl);
- }
- g_list_free(pls->list);
- g_hash_table_destroy(pls->hash);
- g_free(pls);
-}
-
-static void *
-find_by_name(enum plugin_category category, const char *name)
-{
- GList *name_list=plugin_categories[category];
- while (name_list) {
- struct name_val *nv=name_list->data;
- if (!g_ascii_strcasecmp(nv->name, name))
- return nv->val;
- name_list=g_list_next(name_list);
- }
- return NULL;
-}
-
-void *
-plugin_get_category(enum plugin_category category, const char *category_name, const char *name)
-{
- GList *plugin_list;
- struct plugin *pl;
- char *mod_name, *filename=NULL, *corename=NULL;
- void *result=NULL;
-
- dbg(lvl_debug, "category=\"%s\", name=\"%s\"\n", category_name, name);
-
- if ((result=find_by_name(category, name))) {
- return result;
- }
- if (!pls)
- return NULL;
- plugin_list=pls->list;
- filename=g_strjoin("", "lib", category_name, "_", name, NULL);
- corename=g_strjoin("", "lib", category_name, "_", "core", NULL);
- while (plugin_list) {
- pl=plugin_list->data;
- if ((mod_name=g_strrstr(pl->name, "/")))
- mod_name++;
- else
- mod_name=pl->name;
- if (!g_ascii_strncasecmp(mod_name, filename, strlen(filename)) || !g_ascii_strncasecmp(mod_name, corename, strlen(corename))) {
- dbg(lvl_debug, "Loading module \"%s\"\n",pl->name) ;
- if (plugin_get_active(pl))
- if (!plugin_load(pl))
- plugin_set_active(pl, 0);
- if (plugin_get_active(pl))
- plugin_call_init(pl);
- if ((result=find_by_name(category, name))) {
- g_free(filename);
- g_free(corename);
- return result;
- }
- }
- plugin_list=g_list_next(plugin_list);
- }
- g_free(filename);
- g_free(corename);
- return NULL;
-}
diff --git a/navit/plugin.h b/navit/plugin.h
deleted file mode 100644
index 4687a6460..000000000
--- a/navit/plugin.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef PLUGIN_C
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct plugin;
-
-/**
- * @brief All existing plugin categories.
- *
- * Plugins are grouped into categories. Plugins within one category offer the same
- * functionality (GUI, graphics, map etc.). Consequently the category determines the API
- * offered by a plugin.
- */
-enum plugin_category {
- /** Category for plugins which implement a graphics backend. */
- plugin_category_graphics,
- /** Category for plugins which implement a GUI frontend. */
- plugin_category_gui,
- /** Category for plugins which implement a driver for providing/loading map data. */
- plugin_category_map,
- /** Category for plugins which implement an OSD. */
- plugin_category_osd,
- /** Category for plugins which implement speech output. */
- plugin_category_speech,
- /** Category for plugins which supply position data (typically from a GPS receiver). */
- plugin_category_vehicle,
- /** Category for plugins which implement/wrap an event subsystem. */
- plugin_category_event,
- /** Category for plugins which load fonts. */
- plugin_category_font,
- /** Dummy for last entry. */
- plugin_category_last,
-};
-#endif
-
-struct container;
-struct popup;
-struct popup_item;
-#undef PLUGIN_FUNC1
-#undef PLUGIN_FUNC3
-#undef PLUGIN_FUNC4
-#undef PLUGIN_CATEGORY
-#define PLUGIN_PROTO(name,...) void name(__VA_ARGS__)
-
-#ifdef PLUGIN_C
-#define PLUGIN_REGISTER(name,...) \
-void \
-plugin_register_##name(PLUGIN_PROTO((*func),__VA_ARGS__)) \
-{ \
- plugin_##name##_func=func; \
-}
-
-#define PLUGIN_CALL(name,...) \
-{ \
- if (plugin_##name##_func) \
- (*plugin_##name##_func)(__VA_ARGS__); \
-}
-
-#define PLUGIN_FUNC1(name,t1,p1) \
-PLUGIN_PROTO((*plugin_##name##_func),t1 p1); \
-void plugin_call_##name(t1 p1) PLUGIN_CALL(name,p1) \
-PLUGIN_REGISTER(name,t1 p1)
-
-#define PLUGIN_FUNC3(name,t1,p1,t2,p2,t3,p3) \
-PLUGIN_PROTO((*plugin_##name##_func),t1 p1,t2 p2,t3 p3); \
-void plugin_call_##name(t1 p1,t2 p2, t3 p3) PLUGIN_CALL(name,p1,p2,p3) \
-PLUGIN_REGISTER(name,t1 p1,t2 p2,t3 p3)
-
-#define PLUGIN_FUNC4(name,t1,p1,t2,p2,t3,p3,t4,p4) \
-PLUGIN_PROTO((*plugin_##name##_func),t1 p1,t2 p2,t3 p3,t4 p4); \
-void plugin_call_##name(t1 p1,t2 p2, t3 p3, t4 p4) PLUGIN_CALL(name,p1,p2,p3,p4) \
-PLUGIN_REGISTER(name,t1 p1,t2 p2,t3 p3,t4 p4)
-
-struct name_val {
- char *name;
- void *val;
-};
-
-GList *plugin_categories[plugin_category_last];
-
-#define PLUGIN_CATEGORY(category,newargs) \
-struct category##_priv; \
-struct category##_methods; \
-void \
-plugin_register_category_##category(const char *name, struct category##_priv *(*new_) newargs) \
-{ \
- struct name_val *nv; \
- nv=g_new(struct name_val, 1); \
- nv->name=g_strdup(name); \
- nv->val=new_; \
- plugin_categories[plugin_category_##category]=g_list_append(plugin_categories[plugin_category_##category], nv); \
-} \
- \
-void * \
-plugin_get_category_##category(const char *name) \
-{ \
- return plugin_get_category(plugin_category_##category, #category, name); \
-}
-
-#else
-#define PLUGIN_FUNC1(name,t1,p1) \
-void plugin_register_##name(void(*func)(t1 p1)); \
-void plugin_call_##name(t1 p1);
-
-#define PLUGIN_FUNC3(name,t1,p1,t2,p2,t3,p3) \
-void plugin_register_##name(void(*func)(t1 p1,t2 p2,t3 p3)); \
-void plugin_call_##name(t1 p1,t2 p2,t3 p3);
-
-#define PLUGIN_FUNC4(name,t1,p1,t2,p2,t3,p3,t4,p4) \
-void plugin_register_##name(void(*func)(t1 p1,t2 p2,t3 p3,t4 p4)); \
-void plugin_call_##name(t1 p1,t2 p2,t3 p3,t4 p4);
-
-#define PLUGIN_CATEGORY(category,newargs) \
-struct category##_priv; \
-struct category##_methods; \
-void plugin_register_category_##category(const char *name, struct category##_priv *(*new_) newargs); \
-void *plugin_get_category_##category(const char *name);
-
-#endif
-
-#include "plugin_def.h"
-
-#ifndef USE_PLUGINS
-#define plugin_module_cat3(pre,mod,post) pre##mod##post
-#define plugin_module_cat2(pre,mod,post) plugin_module_cat3(pre,mod,post)
-#define plugin_module_cat(pre,post) plugin_module_cat2(pre,MODULE,post)
-#define plugin_init plugin_module_cat(module_,_init)
-#endif
-
-struct attr;
-
-/* prototypes */
-void plugin_init(void);
-int plugin_load(struct plugin *pl);
-char *plugin_get_name(struct plugin *pl);
-int plugin_get_active(struct plugin *pl);
-void plugin_set_active(struct plugin *pl, int active);
-void plugin_set_lazy(struct plugin *pl, int lazy);
-void plugin_call_init(struct plugin *pl);
-void plugin_unload(struct plugin *pl);
-void plugin_destroy(struct plugin *pl);
-struct plugins *plugins_new(void);
-struct plugin *plugin_new(struct attr *parent, struct attr ** attrs);
-void plugins_init(struct plugins *pls);
-void plugins_destroy(struct plugins *pls);
-void *plugin_get_category(enum plugin_category category, const char *category_name, const char *name);
-/* end of prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-
diff --git a/navit/plugin/j1850/CMakeLists.txt b/navit/plugin/j1850/CMakeLists.txt
deleted file mode 100644
index 0a9e4f011..000000000
--- a/navit/plugin/j1850/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(plugin_j1850 j1850.c)
diff --git a/navit/plugin/j1850/j1850.c b/navit/plugin/j1850/j1850.c
deleted file mode 100644
index 26e18057d..000000000
--- a/navit/plugin/j1850/j1850.c
+++ /dev/null
@@ -1,506 +0,0 @@
-/* vim: set tabstop=4 expandtab: */
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2014 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.
- */
-
-/*
- This plugin implements a small subset of the SAE j1850 protocal used in some cars.
- So far the code assumes that it is run on Linux. It allows Navit to read the steering
- wheel inputs and some metrics like RPM or the fuel tank level
- */
-
-#include <math.h>
-#include <stdio.h>
-#include <glib.h>
-#include <time.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <termios.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-#include "config.h"
-#include <navit/item.h>
-#include <navit/xmlconfig.h>
-#include <navit/main.h>
-#include <navit/debug.h>
-#include <navit/map.h>
-#include <navit/navit.h>
-#include <navit/callback.h>
-#include <navit/file.h>
-#include <navit/plugin.h>
-#include <navit/event.h>
-#include <navit/command.h>
-#include <navit/config_.h>
-#include "graphics.h"
-#include "color.h"
-#include "osd.h"
-
-struct j1850 {
- struct navit *nav;
- int status;
- int device;
- int index;
- char message[255];
- char * filename;
- struct event_idle *idle;
- struct callback *callback;
- struct osd_item osd_item;
- int width;
- struct graphics_gc *orange,*white;
- struct callback *click_cb;
- int init_string_index;
-
- int engine_rpm;
- int trans_rpm;
- int map;
- int tank_level;
- int odo;
-};
-
-/**
- * @brief Generates a fake sentence. Used for debugging
- * @param[in] dest - the char * to which we will write the sentence
- * lenght - the length of the sentence to generate
- *
- * @return nothing
- *
- * Generates a fake string to simulate data from the serial port
- *
- */
-void rand_str(char *dest, size_t length) {
- char charset[] = "0123456789"
- "ABCDEF";
-
- while (length-- > 0) {
- size_t index = (double) rand() / RAND_MAX * (sizeof charset - 1);
- *dest++ = charset[index];
- }
- *dest = '\0';
-}
-
-/**
- * @brief Writes 'cmd' to the serial port'
- * @param[in] cmd - the char * that we will write to the serial port
- * device - the serial port device
- *
- * @return nothing
- *
- * Write the cmd to the serial port
- *
- */
-void write_to_serial_port(unsigned char *cmd, int device)
-{
- int n_written = 0;
- do {
- n_written += write( device, &cmd[n_written], 1 );
- }
- while (cmd[n_written-1] != '\r' && n_written > 0);
- dbg(lvl_info,"sent %s to the serial port\n",cmd);
-}
-
-/**
- * @brief Function called when navit is idle. Does the continous reading
- * @param[in] j1850 - the j1850 struct containing the state of the plugin
- *
- * @return nothing
- *
- * This is the main function of this plugin. It is called when navit is idle,
- * and performs the initialization of the obd device if needed, then reads
- * one char each time it is called, and puts this char in a buffer. When it
- * reads an EOL character, the buffer is parsed, and the appropriate action is
- * taken. The buffer is then cleared and we start over.
- *
- */
-static void
-j1850_idle(struct j1850 *j1850)
-{
- int n; // used to keep track of the numbers of char read from the device
- int value; // used to convert the ascii char to an int
- char buf = '\0'; // the buffer where we store the char read from the device
- char header[3]; // a buffer to store the j1850 header for easier matching
- struct timeval tv; // used to timestamp the logs
- struct attr navit;
-
- const char *init_string[] = {
- "ATZ\r\n",
- "ATI\r\n",
- "ATL1\r\n",
- "ATH1\r\n",
- "ATS1\r\n",
- "ATAL\r\n",
- "ATMA\r\n",
- NULL
- };
-
- // Make sure we sent all init commands before trying to read
- if ( init_string[j1850->init_string_index])
- {
- dbg(lvl_info,"Sending next init command : %s\n",init_string[j1850->init_string_index]);
- if (j1850->device > 0 ){
- write_to_serial_port(init_string[j1850->init_string_index++],j1850->device);
- }
-
- // Did we reach the last init command?
- if ( !init_string[j1850->init_string_index])
- {
- // if yes, switch to idle read instead of timed read
- event_remove_timeout(j1850->idle);
- j1850->idle=event_add_idle(125, j1850->callback);
- }
- return;
- }
- navit.type=attr_navit;
- navit.u.navit=j1850->nav;
-
- // If not connected, generate random messages for debugging purpose
- if (j1850->device < 0 ){
- rand_str(j1850->message,8);
- return;
- }
-
- n = read( j1850->device, &buf, 1 );
- if(n == -1) {
- dbg(lvl_debug,"x\n");
- } else if (n==0) {
- dbg(lvl_debug,".\n");
- } else {
- if( buf == 13 ) {
- gettimeofday(&tv, NULL);
- unsigned long long millisecondsSinceEpoch =
- (unsigned long long)(tv.tv_sec) * 1000 +
- (unsigned long long)(tv.tv_usec) / 1000;
-
- j1850->message[j1850->index]='\0';
- FILE *fp;
- fp = fopen(j1850->filename,"a");
- fprintf(fp, "%llu,%s\n", millisecondsSinceEpoch, j1850->message);
- fclose(fp);
- strncpy(header, j1850->message, 2);
- header[2]='\0';
- if( strncmp(header,"10",2)==0 ) {
- char * w1 = strndup(j1850->message+2, 2);
- char * w2 = strndup(j1850->message+4, 2);
- char * w3 = strndup(j1850->message+6, 2);
- j1850->engine_rpm = ((int)strtol(w1, NULL, 16) ) / 4 ;
- j1850->trans_rpm = ((int)strtol(w2, NULL, 16) ) / 4 ;
- j1850->map = (int)strtol(w3, NULL, 16);
- } else if( strncmp(header,"3D",2)==0 ) {
- if (strcmp(j1850->message, "3D110000EE") == 0) {
- // noise
- } else if (strcmp(j1850->message, "3D1120009B") == 0) {
- dbg(lvl_error,"L1\n");
- command_evaluate(&navit, "gui.spotify_volume_up()" );
- } else if (strcmp(j1850->message, "3D110080C8") == 0) {
- dbg(lvl_error,"L2\n");
- command_evaluate(&navit, "gui.spotify_volume_toggle()" );
- } else if (strcmp(j1850->message, "3D1110005A") == 0) {
- dbg(lvl_error,"L3\n");
- command_evaluate(&navit, "gui.spotify_volume_down()" );
- } else if (strcmp(j1850->message, "3D110400C3") == 0) {
- dbg(lvl_error,"R1\n");
- command_evaluate(&navit, "gui.spotify_next_track()" );
- } else if (strcmp(j1850->message, "3D110002D4") == 0) {
- dbg(lvl_error,"R2\n");
- command_evaluate(&navit, "gui.spotify_toggle()" );
- } else if (strcmp(j1850->message, "3D11020076") == 0) {
- dbg(lvl_error,"R3\n");
- command_evaluate(&navit, "gui.spotify_previous_track()" );
- } else {
- dbg(lvl_error,"Got button from %s\n", j1850->message);
- }
- } else if( strncmp(header,"72",2)==0 ) {
- char * data=strndup(j1850->message+2, 8);
- j1850->odo=((int)strtol(data, NULL, 16) )/8000;
- } else if( strncmp(header,"90",2)==0 ) {
- } else if( strncmp(header,"A4",2)==0 ) {
- char * w1 =strndup(j1850->message+2, 4);
- j1850->tank_level = ((int)strtol(w1, NULL, 16) ) / 4 ;
- } else {
- // printf(" ascii: %i [%s] with header [%s]\n",buf, response, header);
- }
- // Message has been processed. Let's clear it
- j1850->message[0]='\0';
- j1850->index=0;
- } else {
- value=buf-48;
- if(value==-16 || buf == 10 ){
- //space and newline, discard
- return;
- } else if (value>16) {
- // chars, need to shift down
- value-=7;
- j1850->message[j1850->index]=buf;
- j1850->index++;
- } else if (buf == '<' ) {
- // We have a data error. Let's truncate the message
- j1850->message[j1850->index]='\0';
- j1850->index++;
- } else {
- j1850->message[j1850->index]=buf;
- j1850->index++;
- }
- // printf("{%c:%i}", buf,value);
- }
- }
-}
-
-/**
- * @brief Draws the j1850 OSD
- * @param[in] j1850 - the j1850 struct containing the state of the plugin
- * nav - the navit object
- * v - the vehicle object
- *
- * @return nothing
- *
- * Draws the j1850 OSD. Currently it only displays the last parsed message
- *
- */
-static void
-osd_j1850_draw(struct j1850 *this, struct navit *nav,
- struct vehicle *v)
-{
- osd_std_draw(&this->osd_item);
-
- struct point p, bbox[4];
-
- graphics_get_text_bbox(this->osd_item.gr, this->osd_item.font, this->message, 0x10000, 0, bbox, 0);
- p.x=(this->osd_item.w-bbox[2].x)/2;
- p.y = this->osd_item.h-this->osd_item.h/10;
-
- struct graphics_gc *curr_color = this->white;
- // online? use this->bActive?this->white:this->orange;
- graphics_draw_text(this->osd_item.gr, curr_color, NULL, this->osd_item.font, this->message, &p, 0x10000, 0);
- graphics_draw_mode(this->osd_item.gr, draw_mode_end);
-}
-
-/**
- * @brief Initialize the j1850 OSD
- * @param[in] j1850 - the j1850 struct containing the state of the plugin
- * nav - the navit object
- *
- * @return nothing
- *
- * Initialize the j1850 OSD
- *
- */
-static void
-osd_j1850_init(struct j1850 *this, struct navit *nav)
-{
-
- struct color c;
- osd_set_std_graphic(nav, &this->osd_item, (struct osd_priv *)this);
-
- // Used when debugging or when the device is offline
- this->orange = graphics_gc_new(this->osd_item.gr);
- c.r = 0xFFFF;
- c.g = 0xA5A5;
- c.b = 0x0000;
- c.a = 65535;
- graphics_gc_set_foreground(this->orange, &c);
- graphics_gc_set_linewidth(this->orange, this->width);
-
- // Used when we are receiving real datas from the device
- this->white = graphics_gc_new(this->osd_item.gr);
- c.r = 65535;
- c.g = 65535;
- c.b = 65535;
- c.a = 65535;
- graphics_gc_set_foreground(this->white, &c);
- graphics_gc_set_linewidth(this->white, this->width);
-
-
- graphics_gc_set_linewidth(this->osd_item.graphic_fg_white, this->width);
-
- event_add_timeout(500, 1, callback_new_1(callback_cast(osd_j1850_draw), this));
-
- j1850_init_serial_port(this);
-
- // navit_add_callback(nav, this->click_cb = callback_new_attr_1(callback_cast (osd_j1850_click), attr_button, this));
-
- osd_j1850_draw(this, nav, NULL);
-}
-
-/**
- * @brief Sends 'cmd' and reads the reply from the device
- * @param[in] cmd - the char * that we will write to the serial port
- * device - the serial port device
- *
- * @return nothing
- *
- * Sends 'cmd' and reads the reply from the device
- *
- */
-void send_and_read(unsigned char *cmd, int USB)
-{
- int n_written = 0;
- do {
- n_written += write( USB, &cmd[n_written], 1 );
- }
- while (cmd[n_written-1] != '\r' && n_written > 0);
-
- int n = 0;
- char buf = '\0';
-
- /* Whole response*/
- char response[255];
-
- do
- {
- n = read( USB, &buf, 1 );
- if(n == -1) {
- dbg(lvl_debug,"x");
- } else if (n==0) {
- dbg(lvl_debug,".");
- } else {
- dbg(lvl_debug,"[%s]", &buf);
- }
- }
- while( buf != '\r' && n > 0);
-
- if (n < 0) {
- dbg(lvl_error,"Read error\n");
- } else if (n == 0) {
- dbg(lvl_error,"Nothing to read?\n");
- } else {
- dbg(lvl_error,"Response : \n");
- }
-}
-
-/**
- * @brief Opens the serial port and saves state to the j1850 object
- * @param[in] j1850 - the j1850 struct containing the state of the plugin
- *
- * @return nothing
- *
- * Opens the serial port and saves state to the j1850 object
- *
- */
-void
-j1850_init_serial_port(struct j1850 *j1850)
-{
- j1850->callback=callback_new_1(callback_cast(j1850_idle), j1850);
- // Fixme : we should read the device path from the config file
- j1850->device = open( "/dev/ttyUSB0", O_RDWR| O_NOCTTY );
- if ( j1850->device < 0 )
- {
- dbg(lvl_error,"Can't open port\n");
- j1850->idle=event_add_timeout(100, 1, j1850->callback);
- return;
- }
-
- struct termios tty;
- struct termios tty_old;
- memset (&tty, 0, sizeof tty);
-
- /* Error Handling */
- if ( tcgetattr ( j1850->device, &tty ) != 0 )
- {
- dbg(lvl_error,"Error\n");
- return;
- }
-
- /* Save old tty parameters */
- tty_old = tty;
-
- /* Set Baud Rate */
- cfsetospeed (&tty, (speed_t)B115200);
- cfsetispeed (&tty, (speed_t)B115200);
-
- /* Setting other Port Stuff */
- tty.c_cflag &= ~PARENB; // Make 8n1
- tty.c_cflag &= ~CSTOPB;
- tty.c_cflag &= ~CSIZE;
- tty.c_cflag |= CS8;
-
- tty.c_cflag &= ~CRTSCTS; // no flow control
- tty.c_cc[VMIN] = 1; // read doesn't block
- tty.c_cc[VTIME] = 10; // 0.5 seconds read timeout
- tty.c_cflag |= CREAD | CLOCAL; // turn on READ & ignore ctrl lines
-
- /* Make raw */
- cfmakeraw(&tty);
-
- /* Flush Port, then applies attributes */
- tcflush( j1850->device, TCIFLUSH );
- if ( tcsetattr ( j1850->device, TCSANOW, &tty ) != 0)
- {
- dbg(lvl_error,"Flush error\n");
- return;
- }
-
- dbg(lvl_error,"Port init ok\n");
- // For the init part, we want to wait 1sec before each init string
- j1850->idle=event_add_timeout(1000, 1, j1850->callback);
-}
-
-/**
- * @brief Creates the j1850 OSD and set some default properties
- * @param[in] nav - the navit object
- * meth - the osd_methods
- * attrs - pointer to the attributes
- *
- * @return nothing
- *
- * Creates the j1850 OSD and set some default properties
- *
- */
-static struct osd_priv *
-osd_j1850_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct j1850 *this=g_new0(struct j1850, 1);
- this->nav=nav;
- time_t current_time = time(NULL);
- // FIXME : make sure that the directory we log to exists!
- this->filename=g_strdup_printf("/home/navit/.navit/obd/%ld.log",(long)current_time);
- dbg(lvl_error,"Will log to %s\n", this->filename);
- this->init_string_index=0;
- struct attr *attr;
- this->osd_item.p.x = 120;
- this->osd_item.p.y = 20;
- this->osd_item.w = 160;
- this->osd_item.h = 20;
- this->osd_item.navit = nav;
- this->osd_item.font_size = 200;
- this->osd_item.meth.draw = osd_draw_cast(osd_j1850_draw);
-
- osd_set_std_attr(attrs, &this->osd_item, 2);
- attr = attr_search(attrs, NULL, attr_width);
- this->width=attr ? attr->u.num : 2;
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_j1850_init), attr_graphics_ready, this));
- return (struct osd_priv *) this;
-}
-
-/**
- * @brief The plugin entry point
- *
- * @return nothing
- *
- * The plugin entry point
- *
- */
-void
-plugin_init(void)
-{
- struct attr callback,navit;
- struct attr_iter *iter;
-
- plugin_register_category_osd("j1850", osd_j1850_new);
-}
diff --git a/navit/plugin/pedestrian/CMakeLists.txt b/navit/plugin/pedestrian/CMakeLists.txt
deleted file mode 100644
index 8205dbb64..000000000
--- a/navit/plugin/pedestrian/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(plugin_pedestrian pedestrian.c)
diff --git a/navit/plugin/pedestrian/pedestrian.c b/navit/plugin/pedestrian/pedestrian.c
deleted file mode 100644
index 7e5a4361d..000000000
--- a/navit/plugin/pedestrian/pedestrian.c
+++ /dev/null
@@ -1,1381 +0,0 @@
-/**
- * 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 <math.h>
-#include <stdio.h>
-#include <glib.h>
-#include <time.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <termios.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-#include "config.h"
-#include <navit/item.h>
-#include <navit/xmlconfig.h>
-#include <navit/main.h>
-#include <navit/debug.h>
-#include <navit/point.h>
-#include <navit/graphics.h>
-#include <navit/transform.h>
-#include <navit/map.h>
-#include <navit/navit.h>
-#include <navit/callback.h>
-#include <navit/file.h>
-#include <navit/color.h>
-#include <navit/route.h>
-#include <navit/plugin.h>
-#include <navit/layout.h>
-#include <navit/mapset.h>
-#include <navit/osd.h>
-#include <navit/event.h>
-#include <navit/command.h>
-#include <navit/config_.h>
-#include <navit/vehicle.h>
-
-/* #define DEMO 1 */
-
-#ifdef HAVE_API_ANDROID
-#include <navit/android.h>
-#endif
-static struct map *global_map;
-
-int orientation,orientation_old;
-
-struct pedestrian {
- struct navit *nav;
- int w,h;
- int yaw;
-} pedestrian_data;
-
-int sensors_locked;
-
-struct attr initial_layout, main_layout;
-
-
-struct rocket {
- struct navit *navit;
- struct layout *layout;
- struct graphics *gra;
- struct transformation *trans;
- struct displaylist *dl;
- struct mapset *ms;
- int a,g,t,hog,v,vscale;
- struct callback *callback;
- struct event_idle *idle;
-};
-
-static void
-pedestrian_rocket_idle(struct rocket *rocket)
-{
- struct attr follow;
- follow.type=attr_follow;
- follow.u.num=100;
- transform_set_hog(rocket->trans, rocket->hog);
- graphics_displaylist_draw(rocket->gra, rocket->dl, rocket->trans, rocket->layout, 0);
- rocket->v+=rocket->a-rocket->g;
- dbg(lvl_debug,"enter v=%d\n",rocket->v);
- if (rocket->t > 0)
- rocket->t--;
- else
- rocket->a=0;
- rocket->hog+=rocket->v/rocket->vscale;
- dbg(lvl_debug,"hog=%d\n",rocket->hog);
- if (rocket->hog < 0) {
- transform_set_hog(rocket->trans, 0);
- transform_set_order_base(rocket->trans, 14);
- transform_set_scale(rocket->trans, transform_get_scale(rocket->trans));
- graphics_overlay_disable(rocket->gra, 0);
- navit_draw(rocket->navit);
- follow.u.num=1;
- event_remove_idle(rocket->idle);
- rocket->idle=NULL;
- sensors_locked=0;
- }
- navit_set_attr(rocket->navit, &follow);
-}
-
-static void
-pedestrian_cmd_pedestrian_rocket(struct rocket *rocket)
-{
- struct attr attr;
- int max=0;
-#if 0
- int i,step=10;
-#endif
- rocket->a=2;
- rocket->g=1;
- rocket->t=100;
- rocket->hog=0;
- rocket->v=0;
- rocket->vscale=10;
- if (! navit_get_attr(rocket->navit, attr_graphics, &attr, NULL))
- return;
- rocket->gra=attr.u.graphics;
- if (! navit_get_attr(rocket->navit, attr_transformation, &attr, NULL))
- return;
- rocket->trans=attr.u.transformation;
- if (! navit_get_attr(rocket->navit, attr_displaylist, &attr, NULL))
- return;
- rocket->dl=attr.u.displaylist;
- if (! navit_get_attr(rocket->navit, attr_mapset, &attr, NULL))
- return;
- rocket->ms=attr.u.mapset;
- transform_set_hog(rocket->trans, max);
- transform_set_order_base(rocket->trans, 14);
- transform_set_scale(rocket->trans, transform_get_scale(rocket->trans));
- transform_setup_source_rect(rocket->trans);
- graphics_overlay_disable(rocket->gra, 1);
- graphics_draw(rocket->gra, rocket->dl, rocket->ms, rocket->trans, rocket->layout, 0, NULL, 0);
- sensors_locked=1;
- if (!rocket->idle)
- rocket->idle=event_add_idle(50, rocket->callback);
-#if 0
- while (hog >= 0) {
- transform_set_hog(trans, hog);
-#if 0
- graphics_draw(gra, dl, ms, trans, layout, 0, NULL);
-#else
- graphics_displaylist_draw(gra, dl, trans, layout, 0);
-#endif
- v=v+a-g;
- if (t > 0)
- t--;
- else
- a=0;
- hog=hog+v/vscale;
- }
-#if 0
- for (i = 0 ; i < max ; i+=step) {
- transform_set_hog(trans, i);
- graphics_displaylist_draw(gra, dl, trans, layout, 0);
- }
- for (i = max ; i >= 0 ; i-=step) {
- transform_set_hog(trans, i);
- graphics_displaylist_draw(gra, dl, trans, layout, 0);
- }
-#endif
-#endif
-}
-
-static struct command_table commands[] = {
- {"pedestrian_rocket",command_cast(pedestrian_cmd_pedestrian_rocket)},
-};
-
-
-
-static void
-osd_rocket_init(struct navit *nav)
-{
- struct rocket *rocket=g_new0(struct rocket, 1);
- struct attr attr;
- rocket->navit=nav;
- rocket->callback=callback_new_1(callback_cast(pedestrian_rocket_idle), rocket);
- if (navit_get_attr(nav, attr_layout, &attr, NULL))
- rocket->layout=attr.u.layout;
- if (navit_get_attr(nav, attr_callback_list, &attr, NULL)) {
- dbg(lvl_debug,"ok\n");
- command_add_table(attr.u.callback_list, commands, sizeof(commands)/sizeof(struct command_table), rocket);
- }
-}
-
-struct marker {
- struct cursor *cursor;
-};
-
-static void
-osd_marker_draw(struct marker *this, struct navit *nav)
-{
-#if 0
- struct attr graphics;
- struct point p;
- dbg(lvl_debug,"enter\n");
- if (!navit_get_attr(nav, attr_graphics, &graphics, NULL))
- return;
- p.x=40;
- p.y=50;
- cursor_draw(this->cursor, graphics.u.graphics, &p, 0, 45, 0);
-#endif
-
-}
-
-static void
-osd_marker_init(struct marker *this, struct navit *nav)
-{
- struct attr cursor;
- struct attr itemgra,polygon,polygoncoord1,polygoncoord2,polygoncoord3;
- struct attr *color=attr_new_from_text("color","#ff0000");
-
- cursor=(struct attr){attr_cursor, {(void *)cursor_new(NULL, (struct attr *[]){
- &(struct attr){attr_w,{(void *)26}},
- &(struct attr){attr_h,{(void *)26}},
- NULL})}};
- itemgra=(struct attr){attr_itemgra, {(void *)itemgra_new(&cursor, (struct attr *[]){
- NULL})}};
- cursor_add_attr(cursor.u.cursor, &itemgra);
- polygon=(struct attr){attr_polygon, {(void *)polygon_new(&itemgra, (struct attr *[]){
- color,
- &(struct attr){attr_width,{(void *)2}},
- NULL})}};
- itemgra_add_attr(itemgra.u.itemgra, &polygon);
- polygoncoord1=(struct attr){attr_coord, {(void *)coord_new_from_attrs(&polygon, (struct attr *[]){
- &(struct attr){attr_x,{(void *)-7}},
- &(struct attr){attr_y,{(void *)-10}},
- NULL})}};
- element_add_attr(polygon.u.element, &polygoncoord1);
- polygoncoord2=(struct attr){attr_coord, {(void *)coord_new_from_attrs(&polygon, (struct attr *[]){
- &(struct attr){attr_x,{(void *)0}},
- &(struct attr){attr_y,{(void *)12}},
- NULL})}};
- element_add_attr(polygon.u.element, &polygoncoord2);
- polygoncoord3=(struct attr){attr_coord, {(void *)coord_new_from_attrs(&polygon, (struct attr *[]){
- &(struct attr){attr_x,{(void *)7}},
- &(struct attr){attr_y,{(void *)-10}},
- NULL})}};
- element_add_attr(polygon.u.element, &polygoncoord3);
- attr_free(color);
- this->cursor=cursor.u.cursor;
- osd_marker_draw(this, nav);
-}
-
-static struct osd_priv *
-osd_marker_new(struct navit *nav, struct osd_methods *meth,
- struct attr **attrs)
-{
- struct marker *this = g_new0(struct marker, 1);
- navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_marker_init), attr_navit, this));
- return (struct osd_priv *) this;
-}
-
-
-
-struct map_priv {
- struct navit *navit;
-};
-
-struct map_rect_priv {
- struct map_priv *mpriv;
- struct item item;
- struct map_rect *route_map_rect;
- struct item *route_item;
- struct street_data *sd;
- struct coord c0;
- struct coord c_base;
- int checked;
- int idx_base;
- int idx_next;
- int idx;
- int first,last;
- int route_item_done;
- struct coord c_out;
- struct coord c_next;
- struct coord c_next_base;
- struct coord lseg[2];
- struct coord lseg_base[2];
- int lseg_done;
- int lseg_done_base;
-};
-
-static int
-map_route_occluded_bbox(struct map *map, struct coord_rect *bbox)
-{
- struct coord c[128];
- struct coord_rect r;
- int i,first=1,ccount;
- struct map_rect *map_rect=map_rect_new(map, NULL);
- struct item *item;
- while ((item=map_rect_get_item(map_rect))) {
- ccount=item_coord_get(item, c, 128);
- if (ccount && first) {
- r.lu=c[0];
- r.rl=c[0];
- first=0;
- }
- for (i = 0 ; i < ccount ; i++)
- coord_rect_extend(&r, &c[i]);
- }
- map_rect_destroy(map_rect);
- if (first)
- return 0;
- *bbox=r;
- return 1;
-}
-
-static struct building {
- struct street_data *sd;
- struct coord left,right;
- struct building *next;
-} *buildings;
-
-static void
-map_route_occluded_buildings_free(void)
-{
- struct building *next,*b=buildings;
- while (b) {
- street_data_free(b->sd);
- next=b->next;
- g_free(b);
- b=next;
- }
- buildings=NULL;
-}
-
-static void
-map_route_occluded_get_buildings(struct mapset *mapset, struct coord_rect *r)
-{
- struct mapset_handle *msh=mapset_open(mapset);
- struct map *map;
- struct map_selection sel;
- struct map_rect *mr;
- struct item *item;
- struct building *b;
- sel.next=NULL;
- sel.u.c_rect=*r;
- sel.order=18;
- sel.range.min=type_poly_building;
- sel.range.max=type_poly_building;
-
- map_route_occluded_buildings_free();
- while ((map = mapset_next(msh, 1))) {
- mr=map_rect_new(map, &sel);
- while ((item = map_rect_get_item(mr))) {
- if (item->type == type_poly_building) {
-#if 0
- if (item->id_hi != 0x1 || item->id_lo != 0x1f69)
- continue;
-#endif
-#if 0
- if (item->id_hi != 0x8)
- continue;
-#if 1
- if (item->id_lo != 0x2b3e0 && item->id_lo != 0x2ae7a && item->id_lo != 0x2af1a && item->id_lo != 0x2b348 && item->id_lo != 0x18bb5 && item->id_lo != 0x18ce5 && item->id_lo != 0x18a85)
-#else
- if (item->id_lo != 0x18bb5 && item->id_lo != 0x18ce5 && item->id_lo != 0x18a85)
-#endif
- continue;
-#endif
- b=g_new(struct building, 1);
- b->sd=street_get_data(item);
- b->next=buildings;
- buildings=b;
- }
- }
- map_rect_destroy(mr);
- }
-}
-
-FILE *debug,*debug2;
-
-/* < 0 left, > 0 right */
-
-static int
-side(struct coord *l0, struct coord *l1, struct coord *p)
-{
- int dxl=l1->x-l0->x;
- int dyl=l1->y-l0->y;
- int dxp=p->x-l0->x;
- int dyp=p->y-l0->y;
-
- return dxp*dyl-dyp*dxl;
-}
-
-static void
-map_route_occluded_check_buildings(struct coord *c0)
-{
- struct building *b=buildings;
- dbg(lvl_debug,"enter\n");
- int i,count;
- struct coord *c;
-#if 1
- FILE *bdebug,*bldebug;
- bdebug=fopen("tstb.txt","w");
- bldebug=fopen("tstbl.txt","w");
-#endif
- while (b) {
- c=b->sd->c;
- count=b->sd->count;
- if (c[count-1].x == c[0].x && c[count-1].y == c[0].y) {
-#if 0
- dbg(lvl_debug,"closed\n");
-#endif
- count--;
- }
- for (i = 0 ; i < count ; i++) {
- if (!i || side(c0, &b->left, &c[i]) < 0)
- b->left=c[i];
- if (!i || side(c0, &b->right, &c[i]) > 0)
- b->right=c[i];
- }
-#if 1
- if (bdebug) {
- fprintf(bdebug,"0x%x 0x%x type=poi_hospital\n", b->left.x, b->left.y);
- fprintf(bdebug,"0x%x 0x%x type=poi_hospital\n", b->right.x, b->right.y);
- }
- if (bldebug) {
- fprintf(bldebug,"type=street_nopass\n");
- fprintf(bldebug,"0x%x 0x%x\n", c0->x, c0->y);
- fprintf(bldebug,"0x%x 0x%x\n", c0->x+(b->left.x-c0->x)*10, c0->y+(b->left.y-c0->y)*10);
- fprintf(bldebug,"type=street_nopass\n");
- fprintf(bldebug,"0x%x 0x%x\n", c0->x, c0->y);
- fprintf(bldebug,"0x%x 0x%x\n", c0->x+(b->right.x-c0->x)*10, c0->y+(b->right.y-c0->y)*10);
- }
-#endif
- b=b->next;
- }
-#if 1
- if (bdebug)
- fclose(bdebug);
- if (bldebug)
- fclose(bldebug);
-#endif
-}
-
-static int
-intersect(struct coord *p1, struct coord *p2, struct coord *p3, struct coord *p4, struct coord *i)
-{
- double num=(p4->x-p3->x)*(p1->y-p3->y)-(p4->y-p3->y)*(p1->x-p3->x);
- double den=(p4->y-p3->y)*(p2->x-p1->x)-(p4->x-p3->x)*(p2->y-p1->y);
- if (num < 0 && den < 0) {
- num=-num;
- den=-den;
- }
- dbg(lvl_debug,"num=%f den=%f\n", num, den);
- if (i) {
- i->x=p1->x+(num/den)*(p2->x-p1->x)+0.5;
- i->y=p1->y+(num/den)*(p2->y-p1->y)+0.5;
- dbg(lvl_debug,"i=0x%x,0x%x\n", i->x, i->y);
- if (debug2)
- fprintf(debug2, "0x%x 0x%x type=town_label_5e3\n", i->x, i->y);
- }
- if (num < 0 || den < 0)
- return -1;
- if (num > den)
- return 257;
- return 256*num/den;
-}
-
-/* return
- 0=Not clipped
- 1=Start clipped
- 2=End clipped
- 3=Both clipped
- 4=Invisible
-*/
-
-/* #define DEBUG_VISIBLE */
-
-static int
-is_visible_line(struct coord *c0, struct coord *c1, struct coord *c2)
-{
- int res,ret=0;
- struct building *b=buildings;
- struct coord cn;
-#ifdef DEBUG_VISIBLE
- dbg(lvl_debug,"enter\n");
-#endif
- while (b) {
- if (side(&b->left, &b->right, c1) < 0 || side(&b->left, &b->right, c2) < 0) {
-#ifdef DEBUG_VISIBLE
- dbg(lvl_debug,"sides left: start %d end %d right: start %d end %d\n", side(c0, &b->left, c1), side(c0, &b->left, c2), side(c0, &b->right, c1), side(c0, &b->right, c2));
-#endif
- for (;;) {
- if (side(c0, &b->left, c1) <= 0) {
- if (side(c0, &b->left, c2) > 0) {
-#ifdef DEBUG_VISIBLE
- dbg(lvl_debug,"visible: start is left of left corner and end is right of left corner, clipping end\n");
-#endif
- res=intersect(c0, &b->left, c1, c2, &cn);
- if (res < 256)
- break;
- if (c1->x != cn.x || c1->y != cn.y) {
- *c2=cn;
- ret|=2;
- break;
- }
- } else
- break;
- }
- if (side(c0, &b->right, c1) >= 0) {
- if (side(c0, &b->right, c2) < 0) {
-#ifdef DEBUG_VISIBLE
- dbg(lvl_debug,"visible: start is right of right corner and end is left of right corner, clipping end\n");
-#endif
- res=intersect(c0, &b->right, c1, c2, &cn);
- if (res < 256)
- break;
- if (c1->x != cn.x || c1->y != cn.y) {
- *c2=cn;
- ret|=2;
- break;
- }
- } else
- break;
- }
- if (side(c0, &b->left, c2) <= 0) {
- if (side(c0, &b->left, c1) > 0) {
-#ifdef DEBUG_VISIBLE
- dbg(lvl_debug,"visible: end is left of left corner and start is right of left corner, clipping start\n");
-#endif
- res=intersect(c0, &b->left, c1, c2, &cn);
- if (res < 256)
- break;
- if (c2->x != cn.x || c2->y != cn.y) {
- *c1=cn;
- ret|=1;
- break;
- }
- } else
- break;
- }
- if (side(c0, &b->right, c2) >= 0) {
- if (side(c0, &b->right, c1) < 0) {
-#ifdef DEBUG_VISIBLE
- dbg(lvl_debug,"visible: end is right of right corner and start is left of right corner, clipping start\n");
-#endif
- res=intersect(c0, &b->right, c1, c2, &cn);
- if (res < 256)
- break;
- if (c2->x != cn.x || c2->y != cn.y) {
- *c1=cn;
- ret|=1;
- break;
- }
- } else
- break;
- }
-#ifdef DEBUG_VISIBLE
- dbg(lvl_debug,"visible: not visible\n");
-#endif
- return 4;
- }
- }
- b=b->next;
- }
-#ifdef DEBUG_VISIBLE
- dbg(lvl_debug,"return %d\n",ret);
-#endif
- return ret;
-}
-
-static void
-map_route_occluded_coord_rewind(void *priv_data)
-{
- struct map_rect_priv *mr = priv_data;
- dbg(lvl_debug,"enter\n");
- mr->idx=mr->idx_base;
- mr->first=1;
- mr->lseg_done=mr->lseg_done_base;
- mr->c_next=mr->c_next_base;
- mr->lseg[0]=mr->lseg_base[0];
- mr->lseg[1]=mr->lseg_base[1];
- mr->last=0;
- item_coord_rewind(mr->route_item);
-}
-
-static void
-map_route_occluded_attr_rewind(void *priv_data)
-{
- struct map_rect_priv *mr=priv_data;
- dbg(lvl_debug,"enter\n");
- item_attr_rewind(mr->route_item);
-}
-
-static int
-map_route_occluded_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *mr=priv_data;
- dbg(lvl_debug,"enter\n");
- return item_attr_get(mr->route_item, attr_type, attr);
-}
-
-static int
-coord_next(struct map_rect_priv *mr, struct coord *c)
-{
- if (mr->idx >= mr->sd->count)
- return 1;
- *c=mr->sd->c[mr->idx++];
- return 0;
-}
-
-#define DEBUG_COORD_GET
-static int
-map_route_occluded_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *mr=priv_data;
- struct coord l0,l1;
- int vis,ret=0;
- char buffer[4096];
-
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"enter\n");
-#endif
- dbg_assert(count >= 2);
- if (! mr->checked) {
- mr->c0=mr->sd->c[0];
- map_route_occluded_check_buildings(&mr->c0);
- mr->checked=1;
- }
- while (ret < count && !mr->last) {
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"coord first %d lseg_done %d\n",mr->first,mr->lseg_done);
-#endif
- if (mr->lseg_done) {
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"loading %d of %d from id_lo %d\n", mr->idx, mr->sd->count, mr->sd->item.id_lo);
-#endif
- if (!mr->idx) {
- if (coord_next(mr, &mr->lseg[0])) {
- mr->route_item_done=1;
- mr->last=1;
- mr->idx_base=mr->idx=0;
- break;
- }
- mr->first=1;
- } else
- mr->lseg[0]=mr->lseg[1];
- if (coord_next(mr, &mr->lseg[1])) {
- mr->route_item_done=1;
- mr->last=1;
- mr->idx_base=mr->idx=0;
- break;
- }
- mr->c_next=mr->lseg[0];
- mr->lseg_done=0;
- }
- l0=mr->c_next;
- l1=mr->lseg[1];
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"line (0x%x,0x%x)-(0x%x,0x%x)\n", l0.x,l0.y,l1.x,l1.y);
-#endif
- vis=is_visible_line(&mr->c0, &l0, &l1);
- if (debug) {
- fprintf(debug,"type=tracking_%d debug=\"%s\"\n",vis*20,buffer);
- fprintf(debug,"0x%x 0x%x\n", l0.x, l0.y);
- fprintf(debug,"0x%x 0x%x\n", l1.x, l1.y);
- }
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"vis=%d line (0x%x,0x%x)-(0x%x,0x%x)\n", vis, l0.x,l0.y,l1.x,l1.y);
-#endif
- mr->idx_base=mr->idx;
- mr->c_next_base=mr->c_next;
- mr->lseg_base[0]=mr->lseg[0];
- mr->lseg_base[1]=mr->lseg[1];
- mr->lseg_done_base=mr->lseg_done;
- switch (vis) {
- case 0:
- mr->c_next_base=mr->c_next;
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"out 0x%x,0x%x\n", l0.x, l1.y);
-#endif
- c[ret++]=l0;
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"out 0x%x,0x%x\n", l1.x, l1.y);
-#endif
- c[ret++]=l1;
- mr->lseg_done_base=mr->lseg_done=1;
- mr->last=1;
- break;
- case 1:
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"begin clipped\n");
- dbg(lvl_debug,"out 0x%x,0x%x\n", l0.x, l1.y);
-#endif
- c[ret++]=l0;
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"out 0x%x,0x%x\n", l1.x, l1.y);
-#endif
- c[ret++]=l1;
- mr->c_next_base=mr->c_next=l1;
- mr->last=1;
- break;
- case 2:
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"end clipped\n");
-#endif
- mr->c_next_base=mr->c_next;
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"out 0x%x,0x%x\n", l0.x, l1.y);
-#endif
- c[ret++]=l0;
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"out 0x%x,0x%x\n", l1.x, l1.y);
-#endif
- c[ret++]=l1;
- mr->c_next_base=mr->c_next=l1;
- mr->last=1;
- break;
- case 3:
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"both clipped\n");
-#endif
- mr->c_next_base=mr->c_next;
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"out 0x%x,0x%x\n", l0.x, l1.y);
-#endif
- c[ret++]=l0;
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"out 0x%x,0x%x\n", l1.x, l1.y);
-#endif
- c[ret++]=l1;
- mr->c_next_base=mr->c_next=l1;
- mr->last=1;
- break;
- case 4:
- mr->last=1;
- mr->lseg_done_base=mr->lseg_done=1;
- break;
-
-#if 0
- case 2:
- dbg(lvl_debug,"visible up to 0x%x,0x%x\n",l1.x,l1.y);
- if (mr->first) {
- mr->first=0;
- c[ret++]=mr->c_out;
- dbg(lvl_debug,"out 0x%x,0x%x\n", mr->c_out.x, mr->c_out.y);
- }
- c[ret++]=mr->c_out=l1;
- dbg(lvl_debug,"out 0x%x,0x%x\n", l1.x, l1.y);
- mr->last=1;
- mr->route_item_done=1;
- break;
- case 1:
- case 3:
- case 4:
- dbg(lvl_debug,"invisible\n");
- mr->c_out=l1;
- mr->idx++;
- mr->last=1;
- mr->route_item_done=1;
- break;
- }
- if (!vis)
- break;
-#endif
- }
- }
-#ifdef DEBUG_COORD_GET
- dbg(lvl_debug,"ret=%d last=%d\n", ret, mr->last);
-#endif
- return ret;
-}
-
-static struct item_methods methods_route_occluded_item = {
- map_route_occluded_coord_rewind,
- map_route_occluded_coord_get,
- map_route_occluded_attr_rewind,
- map_route_occluded_attr_get,
-};
-
-static void
-map_route_occluded_destroy(struct map_priv *priv)
-{
- g_free(priv);
-}
-
-static int no_recurse;
-
-static struct map_rect_priv *
-map_route_occluded_rect_new(struct map_priv *priv, struct map_selection *sel)
-{
- struct map_rect_priv * mr;
- struct attr route;
- struct attr route_map;
- struct map_rect *route_map_rect;
- struct coord_rect r;
- if (!navit_get_attr(priv->navit, attr_route, &route, NULL)) {
- dbg(lvl_debug,"no route in navit\n");
- return NULL;
- }
- if (!route_get_attr(route.u.route, attr_map, &route_map, NULL)) {
- dbg(lvl_debug,"no map in route\n");
- return NULL;
- }
- route_map_rect=map_rect_new(route_map.u.map, sel);
- if (!route_map_rect) {
- dbg(lvl_debug,"no route map rect\n");
- return NULL;
- }
- map_dump_file(route_map.u.map, "route.txt");
- mr=g_new0(struct map_rect_priv, 1);
- mr->route_map_rect=route_map_rect;
- mr->mpriv = priv;
- mr->item.priv_data = mr;
- mr->item.meth = &methods_route_occluded_item;
- mr->item.id_lo = -1;
- mr->route_item_done=1;
- mr->lseg_done_base=1;
- mr->last=1;
- if (!no_recurse && map_route_occluded_bbox(route_map.u.map, &r)) {
- struct attr mapset;
- no_recurse++;
- if (navit_get_attr(mr->mpriv->navit, attr_mapset, &mapset, NULL))
- map_route_occluded_get_buildings(mapset.u.mapset, &r);
- debug=fopen("tst.txt","w");
- debug2=fopen("tstp.txt","w");
- no_recurse--;
- }
- return mr;
-}
-
-
-static void
-map_route_occluded_rect_destroy(struct map_rect_priv *mr)
-{
- map_rect_destroy(mr->route_map_rect);
- street_data_free(mr->sd);
- g_free(mr);
- if (!no_recurse) {
- if (debug) {
- fclose(debug);
- debug=NULL;
- }
- if (debug2) {
- fclose(debug2);
- debug2=NULL;
- }
- }
-#if 0
- static int in_dump;
- if (! in_dump) {
- in_dump=1;
- map_dump_file(global_map,"route.txt");
- in_dump=0;
- }
-#endif
-}
-
-static struct item *
-map_route_occluded_get_item(struct map_rect_priv *mr)
-{
- dbg(lvl_debug,"enter last=%d\n",mr->last);
- while (!mr->last) {
- struct coord c[128];
- map_route_occluded_coord_get(mr, c, 128);
- }
- if (mr->route_item_done) {
- dbg(lvl_debug,"next route item\n");
- do {
- mr->route_item=map_rect_get_item(mr->route_map_rect);
- } while (mr->route_item && mr->route_item->type != type_street_route);
- dbg(lvl_debug,"item %p\n", mr->route_item);
- if (!mr->route_item)
- return NULL;
- mr->item.type=type_street_route_occluded;
- street_data_free(mr->sd);
- mr->sd=street_get_data(mr->route_item);
- mr->route_item_done=0;
- }
- mr->item.id_lo++;
-#if 0
- if (mr->item.id_lo > 20)
- return NULL;
-#endif
- map_route_occluded_coord_rewind(mr);
- dbg(lvl_debug,"type %s\n", item_to_name(mr->route_item->type));
- return &mr->item;
-}
-
-static struct item *
-map_route_occluded_get_item_byid(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- struct item *ret=NULL;
- while (id_lo-- > 0)
- ret=map_route_occluded_get_item(mr);
- return ret;
-}
-
-static struct map_methods map_route_occluded_methods = {
- projection_mg,
- "utf-8",
- map_route_occluded_destroy,
- map_route_occluded_rect_new,
- map_route_occluded_rect_destroy,
- map_route_occluded_get_item,
- map_route_occluded_get_item_byid,
- NULL,
- NULL,
- NULL,
-};
-
-
-static struct map_priv *
-map_route_occluded_new(struct map_methods *meth, struct attr **attrs)
-{
- struct map_priv *ret;
- struct attr *navit;
- dbg(lvl_debug,"enter\n");
- navit=attr_search(attrs, NULL, attr_navit);
- if (! navit)
- return NULL;
- ret=g_new0(struct map_priv, 1);
- *meth=map_route_occluded_methods;
- ret->navit=navit->u.navit;
- dbg(lvl_debug,"m=%p navit=%p\n", ret, ret->navit);
- return ret;
-}
-
-static void
-pedestrian_graphics_resize(struct graphics *gra, int w, int h)
-{
-#ifndef HAVE_API_ANDROID
- static int done;
- if (!done) {
- int id=(int)graphics_get_data(gra, "xwindow_id");
- char buffer[1024];
- sprintf(buffer,"testxv %d &",id);
- system(buffer);
- done=1;
- }
-#endif
- pedestrian_data.w=w;
- pedestrian_data.h=h;
-}
-
-
-static void
-pedestrian_draw_arrow(struct graphics *gra, char *name, int x, int y)
-{
- char *src=graphics_icon_path(name);
- struct graphics_image *img=graphics_image_new(gra, src);
- struct graphics_gc *gc=graphics_gc_new(gra);
- struct color col={0xffff,0xffff,0xffff,0xffff};
- struct point p;
- graphics_gc_set_foreground(gc, &col);
- p.x=x;
- p.y=y;
- graphics_draw_image(gra, gc, &p, img);
- graphics_image_free(gra, img);
- graphics_gc_destroy(gc);
- g_free(src);
-}
-
-static void
-pedestrian_draw_arrows(struct graphics *gra)
-{
- struct attr route, route_map;
- struct map_rect *route_map_rect;
- struct item *item;
-
- if (orientation == 2)
- return;
- if (!navit_get_attr(pedestrian_data.nav, attr_route, &route, NULL)) {
- dbg(lvl_debug,"no route in navit\n");
- return;
- }
- if (!route_get_attr(route.u.route, attr_map, &route_map, NULL)) {
- dbg(lvl_debug,"no map in route\n");
- return;
- }
- route_map_rect=map_rect_new(route_map.u.map, NULL);
- if (!route_map_rect) {
- dbg(lvl_debug,"no route map rect\n");
- return;
- }
- while ((item=map_rect_get_item(route_map_rect))) {
- if (item->type == type_street_route) {
- struct coord c[2];
- if (item_coord_get(item, c, 2) == 2) {
- struct coord *center=transform_get_center(navit_get_trans(pedestrian_data.nav));
- int angle=transform_get_angle_delta(center, &c[1], 0);
- angle-=pedestrian_data.yaw;
- if (angle < 0)
- angle+=360;
- if (angle >= 360)
- angle-=360;
- if (angle > 180 && angle < 350)
- pedestrian_draw_arrow(gra,"gui_arrow_left_32_32.png",0,pedestrian_data.h/2-16);
- if (angle > 10 && angle <= 180)
- pedestrian_draw_arrow(gra,"gui_arrow_right_32_32.png",pedestrian_data.w-32,pedestrian_data.h/2-16);
- }
- break;
- }
- }
- map_rect_destroy(route_map_rect);
-}
-
-static void
-pedestrian_graphics_postdraw(struct graphics *gra)
-{
-#if 0
- struct graphics_gc * gc = graphics_gc_new(gra);
- struct point p;
- struct color c = {0xadad,0xd8d8,0xe6e6,0xffff};
- p.x=0;
- p.y=0;
- graphics_gc_set_foreground(gc, &c);
- graphics_draw_rectangle(gra, gc, &p, 1000, 200);
- graphics_gc_destroy(gc);
-#endif
- pedestrian_draw_arrows(gra);
-}
-
-#ifndef HAVE_API_ANDROID
-struct tilt_data {
- int len,axis;
- char buffer[32];
-};
-
-void
-pedestrian_write_tilt(int fd, int axis)
-{
- char *buffer="01";
- int ret;
-
- ret=write(fd, buffer+axis, 1);
- if (ret != 2) {
- dbg(lvl_debug,"ret=%d\n",ret);
- }
-}
-
-
-void
-pedestrian_read_tilt(int fd, struct navit *nav, struct tilt_data *data)
-{
- int val,ret,maxlen=3;
- ret=read(fd, data->buffer+data->len, maxlen-data->len);
- if (ret > 0) {
- data->len+=ret;
- data->buffer[data->len]='\0';
- }
- if (data->len == 3) {
- struct attr attr;
- sscanf(data->buffer,"%02x",&val);
- data->len=0;
- if (navit_get_attr(nav, attr_transformation, &attr, NULL)) {
- struct transformation *trans=attr.u.transformation;
- dbg(lvl_debug,"ok axis=%d val=0x%x\n", data->axis, val);
- if (data->axis != 1) {
- transform_set_pitch(trans, 90+(val-0x80));
- } else {
- transform_set_roll(trans, 0x80-val);
- }
- }
- data->axis=1-data->axis;
-
-#if 0
- pedestrian_write_tilt(fd, data->axis);
-#endif
- }
-}
-
-void
-pedestrian_write_tilt_timer(int fd, struct tilt_data *data)
-{
- pedestrian_write_tilt(fd, data->axis);
-}
-
-void
-pedestrian_setup_tilt(struct navit *nav)
-{
- int fd,on=1;
- struct termios t;
- struct callback *cb,*cbt;
- struct tilt_data *data=g_new0(struct tilt_data, 1);
- char buffer[32];
- fd=open("/dev/tiltsensor",O_RDWR);
- if (fd == -1) {
- dbg(lvl_error,"Failed to set up tilt sensor, error %d\n",errno);
- return;
- }
- tcgetattr(fd, &t);
- cfmakeraw(&t);
- cfsetspeed(&t, B19200);
- tcsetattr(fd, TCSANOW, &t);
- ioctl(fd, FIONBIO, &on);
- cb=callback_new_3(callback_cast(pedestrian_read_tilt), fd, nav, data);
- cbt=callback_new_2(callback_cast(pedestrian_write_tilt_timer), fd, data);
- event_add_watch(fd, event_watch_cond_read, cb);
- event_add_timeout(300, 1, cbt);
- read(fd, buffer, 32);
-#if 0
- pedestrian_write_tilt(fd, 0);
-#endif
-}
-
-#else
-
-
-float sensors[2][3];
-
-static void
-android_sensors(struct navit *nav, int sensor, float *x, float *y, float *z)
-{
- float yaw=0,pitch=0;
- struct attr attr;
- sensors[sensor-1][0]=*x;
- sensors[sensor-1][1]=*y;
- sensors[sensor-1][2]=*z;
- if (sensors_locked)
- return;
- dbg(lvl_debug,"enter %d %f %f %f\n",sensor,*x,*y,*z);
- if (sensor == 1) {
- if (*x > 7.5)
- orientation=1; /* landscape */
- if (*y > 7.5)
- orientation=0; /* portrait */
- if (*z > 7.5)
- orientation=2; /* flat */
- dbg(lvl_debug,"orientation=%d\n",orientation);
- }
- if ((orientation_old == 2) != (orientation == 2)) {
- struct attr attr, flags_graphics, osd_configuration;
- navit_set_attr(nav, orientation == 2 ? &initial_layout:&main_layout);
- navit_get_attr(nav, attr_transformation, &attr, NULL);
- transform_set_scale(attr.u.transformation, orientation == 2 ? 64:16);
- flags_graphics.type=attr_flags_graphics;
- flags_graphics.u.num=orientation == 2 ? 0:10;
- navit_set_attr(nav, &flags_graphics);
- osd_configuration.type=attr_osd_configuration;
- osd_configuration.u.num=orientation == 2 ? 1:2;
- navit_set_attr(nav, &osd_configuration);
- }
- orientation_old=orientation;
- switch (orientation) {
- case 2:
- if (sensor == 2) {
- yaw=atan2f(-*y,-*x)*180/M_PI+180;
- }
- pitch=0;
- break;
- case 1:
- if (sensor == 1) {
- pitch=atan2f(*x,*z)*180/M_PI;
- }
- if (sensor == 2) {
- yaw=atan2f(-*y,*z)*180/M_PI+180;
- }
- break;
- case 0:
- if (sensor == 1) {
- pitch=atan2f(*y,*z)*180/M_PI;
- }
- if (sensor == 2) {
- yaw=atan2f(*x,*z)*180/M_PI+180;
- }
- break;
- }
- if (navit_get_attr(nav, attr_transformation, &attr, NULL)) {
- struct transformation *trans=attr.u.transformation;
- if (sensor == 1) {
- if (orientation != 2)
- pitch+=2.0;
- transform_set_pitch(trans, (int)pitch);
- dbg(lvl_debug,"pich %d %f\n",orientation,pitch);
- } else {
- struct attr attr;
- attr.type=attr_orientation;
- attr.u.num=yaw-1.0;
- if (attr.u.num < 0)
- attr.u.num+=360;
- pedestrian_data.yaw=attr.u.num;
- navit_set_attr(nav, &attr);
- dbg(lvl_debug,"yaw %d %f\n",orientation,yaw);
- if (orientation == 2)
- navit_set_center_cursor(nav, 1, 0);
- }
- }
-}
-#endif
-
-static void
-pedestrian_log(char **logstr)
-{
-#ifdef HAVE_API_ANDROID
- char *tag=g_strdup_printf(
- "\t\t<navit:compass:x>%f</navit:compass:x>\n"
- "\t\t<navit:compass:y>%f</navit:compass:y>\n"
- "\t\t<navit:compass:z>%f</navit:compass:z>\n"
- "\t\t<navit:accel:x>%f</navit:accel:x>\n"
- "\t\t<navit:accel:y>%f</navit:accel:y>\n"
- "\t\t<navit:accel:z>%f</navit:accel:z>\n",
- sensors[0][0],sensors[0][1],sensors[0][2],
- sensors[1][0],sensors[1][1],sensors[1][2]);
- vehicle_log_gpx_add_tag(tag, logstr);
-#endif
-}
-
-#ifdef DEMO
-static void
-vehicle_changed(struct vehicle *v, struct transformation *trans)
-{
- struct attr attr;
- if (vehicle_get_attr(v, attr_position_direction, &attr, NULL)) {
- int dir=(int)(*attr.u.numd);
- dbg(lvl_debug,"enter %d\n",dir);
- transform_set_pitch(trans, 90);
- transform_set_yaw(trans, dir);
- }
-}
-#endif
-
-
-static void
-pedestrian_navit_init(struct navit *nav)
-{
- struct attr route;
- struct attr route_map;
- struct attr map;
- struct attr mapset;
- struct attr graphics,attr,flags_graphics;
- struct transformation *trans;
- struct attr_iter *iter;
-
-#ifdef HAVE_API_ANDROID
- struct callback *cb;
- jclass navitsensorsclass;
- jmethodID cid;
- jobject navitsensors;
-
- dbg(lvl_debug,"enter\n");
- if (android_find_class_global("org/navitproject/navit/NavitSensors", &navitsensorsclass)) {
- dbg(lvl_debug,"class found\n");
- cid = (*jnienv)->GetMethodID(jnienv, navitsensorsclass, "<init>", "(Landroid/content/Context;I)V");
- dbg(lvl_debug,"cid=%p\n",cid);
- if (cid) {
- cb=callback_new_1(callback_cast(android_sensors), nav);
- navitsensors=(*jnienv)->NewObject(jnienv, navitsensorsclass, cid, android_activity, cb);
- dbg(lvl_debug,"object=%p\n",navitsensors);
- if (navitsensors)
- navitsensors = (*jnienv)->NewGlobalRef(jnienv, navitsensors);
- }
- }
-#endif
- pedestrian_data.nav=nav;
- flags_graphics.type=attr_flags_graphics;
- flags_graphics.u.num=10;
- navit_set_attr(nav, &flags_graphics);
- if (navit_get_attr(nav, attr_graphics, &graphics, NULL)) {
- struct attr attr;
- struct callback *cb=callback_new_attr_1(callback_cast(pedestrian_graphics_resize),attr_resize,graphics.u.graphics);
- graphics_add_callback(graphics.u.graphics, cb);
- cb=callback_new_attr_1(callback_cast(pedestrian_graphics_postdraw),attr_postdraw,graphics.u.graphics);
- graphics_add_callback(graphics.u.graphics, cb);
- attr.type=attr_use_camera;
- attr.u.num=1;
- graphics_set_attr(graphics.u.graphics, &attr);
- }
- osd_rocket_init(nav);
-#if 1
-#ifndef HAVE_API_ANDROID
- pedestrian_setup_tilt(nav);
-#endif
- trans=navit_get_trans(nav);
- transform_set_pitch(trans, 90);
- transform_set_roll(trans, 0);
- transform_set_hog(trans, 2);
- transform_set_distance(trans, 0);
- transform_set_scales(trans, 750, 620, 32 << 8);
- if (!navit_get_attr(nav, attr_route, &route, NULL))
- return;
- if (!route_get_attr(route.u.route, attr_map, &route_map, NULL))
- return;
- dbg(lvl_debug,"enter 1\n");
-#if 0
- struct attr active;
- active.type=attr_active;
- active.u.num=0;
- if (!map_set_attr(route_map.u.map, &active))
- return;
- dbg(lvl_debug,"enter 2\n");
-#endif
- if (!navit_get_attr(nav, attr_mapset, &mapset, NULL))
- return;
- map.type=attr_map;
- map.u.map=map_new(NULL, (struct attr*[]){
- &(struct attr){attr_type,{"route_occluded"}},
- &(struct attr){attr_data,{""}},
- &(struct attr){attr_description,{"Occluded Route"}},
- &(struct attr){attr_navit,{(void *)nav}},
- NULL});
- global_map=map.u.map;
- mapset_add_attr(mapset.u.mapset, &map);
-
-#if 0
- map=route_get_attr(route, attr_map);
-#endif
-#endif
- transform_set_scale(trans, 16);
- navit_get_attr(nav, attr_layout, &initial_layout, NULL);
- iter=navit_attr_iter_new();
- while(navit_get_attr(nav, attr_layout, &attr, iter)) {
- if (!strcmp(attr.u.layout->name, "Route")) {
- dbg(lvl_debug,"found %s\n",attr_to_name(attr.type));
- main_layout=attr;
-#if 1
- navit_set_attr(nav, &attr);
-#endif
- break;
- }
- }
- navit_attr_iter_destroy(iter);
- if (navit_get_attr(nav, attr_vehicle, &attr, NULL)) {
- struct attr cbattr;
- cbattr.u.callback=callback_new_attr_0(callback_cast(pedestrian_log), attr_log_gpx);
- cbattr.type=attr_callback;
- vehicle_add_attr(attr.u.vehicle, &cbattr);
-#ifdef DEMO
- cbattr.u.callback=callback_new_attr_2(callback_cast(vehicle_changed), attr_position_coord_geo, attr.u.vehicle, trans);
- cbattr.type=attr_callback;
- vehicle_add_attr(attr.u.vehicle, &cbattr);
-#endif
- }
-
-}
-
-static void
-pedestrian_navit(struct navit *nav, int add)
-{
- dbg(lvl_debug,"enter\n");
- struct attr callback;
- if (add) {
- callback.type=attr_callback;
- callback.u.callback=callback_new_attr_0(callback_cast(pedestrian_navit_init), attr_navit);
- navit_add_attr(nav, &callback);
- }
-}
-
-void
-plugin_init(void)
-{
- struct attr callback,navit;
- struct attr_iter *iter;
-#ifdef HAVE_API_ANDROID
- jclass ActivityClass;
- jmethodID Activity_setRequestedOrientation;
-
- if (!android_find_class_global("android/app/Activity", &ActivityClass))
- dbg(lvl_error,"failed to get class android/app/Activity\n");
- Activity_setRequestedOrientation = (*jnienv)->GetMethodID(jnienv, ActivityClass, "setRequestedOrientation", "(I)V");
- if (Activity_setRequestedOrientation == NULL)
- dbg(lvl_error,"failed to get method setRequestedOrientation from android/app/Activity\n");
- (*jnienv)->CallVoidMethod(jnienv, android_activity, Activity_setRequestedOrientation, 0);
-#endif
-
- plugin_register_category_osd("marker", osd_marker_new);
- plugin_register_category_map("route_occluded", map_route_occluded_new);
- callback.type=attr_callback;
- callback.u.callback=callback_new_attr_0(callback_cast(pedestrian_navit), attr_navit);
- config_add_attr(config, &callback);
- iter=config_attr_iter_new();
- while (config_get_attr(config, attr_navit, &navit, iter))
- pedestrian_navit_init(navit.u.navit);
- config_attr_iter_destroy(iter);
-}
diff --git a/navit/plugin_def.h b/navit/plugin_def.h
deleted file mode 100644
index 985160e6f..000000000
--- a/navit/plugin_def.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-struct attr;
-struct navit;
-struct callback_list;
-struct gui;
-PLUGIN_FUNC1(draw, struct container *, co)
-PLUGIN_FUNC3(popup, struct container *, map, struct popup *, p, struct popup_item **, list)
-PLUGIN_CATEGORY(graphics, (struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl))
-PLUGIN_CATEGORY(gui, (struct navit *nav, struct gui_methods *meth, struct attr **attrs, struct gui *gui))
-PLUGIN_CATEGORY(map, (struct map_methods *meth, struct attr **attrs, struct callback_list *cbl))
-PLUGIN_CATEGORY(osd, (struct navit *nav, struct osd_methods *meth, struct attr **attrs))
-PLUGIN_CATEGORY(speech, (struct speech_methods *meth, struct attr **attrs, struct attr *parent))
-PLUGIN_CATEGORY(vehicle, (struct vehicle_methods *meth, struct callback_list *cbl, struct attr **attrs))
-PLUGIN_CATEGORY(event, (struct event_methods *meth))
-PLUGIN_CATEGORY(font, (void *meth))
diff --git a/navit/point.h b/navit/point.h
deleted file mode 100644
index cc5ccdd67..000000000
--- a/navit/point.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_POINT_H
-#define NAVIT_POINT_H
-
-struct point {
- int x;
- int y;
-};
-
-struct point_rect {
- struct point lu;
- struct point rl;
-};
-#endif
diff --git a/navit/popup.c b/navit/popup.c
deleted file mode 100644
index 71b82b1d9..000000000
--- a/navit/popup.c
+++ /dev/null
@@ -1,438 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2008, 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 "config.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <fcntl.h>
-#include <glib.h>
-#include "popup.h"
-#include "debug.h"
-#include "navit.h"
-#include "coord.h"
-#include "gui.h"
-#include "menu.h"
-#include "point.h"
-#include "transform.h"
-#include "projection.h"
-#include "item.h"
-#include "map.h"
-#include "graphics.h"
-#include "callback.h"
-#include "route.h"
-#include "navit_nls.h"
-#include "bookmarks.h"
-
-#if 0
-static void
-popup_set_no_passing(struct popup_item *item, void *param)
-{
-#if 0
- struct display_list *l=param;
- struct segment *seg=(struct segment *)(l->data);
- struct street_str *str=(struct street_str *)(seg->data[0]);
- char log[256];
- int segid=str->segid;
- if (segid < 0)
- segid=-segid;
-
- sprintf(log,"Attributes Street 0x%x updated: limit=0x%x(0x%x)", segid, 0x33, str->limit);
- str->limit=0x33;
- log_write(log, seg->blk_inf.file, str, sizeof(*str));
-#endif
-}
-
-#endif
-
-static void
-popup_traffic_distortion(struct item *item, char *attr)
-{
- /* add the configuration directory to the name of the file to use */
- char *dist_filename = g_strjoin(NULL, navit_get_user_data_directory(TRUE),
- "/distortion.txt", NULL);
- if (dist_filename) /* if we built the filename */
- {
- FILE *map=fopen(dist_filename,"a");
- if (map) /* if the file was opened */
- {
- struct coord c;
- struct map_rect *mr;
- fprintf(map,"type=traffic_distortion %s\n",attr);
- mr=map_rect_new(item->map,NULL);
- item=map_rect_get_item_byid(mr, item->id_hi, item->id_lo);
- while (item_coord_get(item, &c, 1)) {
- fprintf(map,"0x%x 0x%x\n",c.x,c.y);
- }
- fclose(map);
- }
- else
- {
- dbg(lvl_error,"could not open file for distortions !!");
-
- } /* else - if (map) */
- g_free(dist_filename); /* free the file name */
- } /* if (dist_filename) */
-
-} /* end: popup_traffic_distortion(..) */
-
-
-static void
-popup_traffic_distortion_blocked(struct item *item)
-{
- dbg(lvl_debug,"item=%p\n",item);
- popup_traffic_distortion(item, "maxspeed=0");
-}
-
-static void
-popup_traffic_distortion_speed(struct item *item, int maxspeed)
-{
- char buffer[256];
- sprintf(buffer,"maxspeed=%d",maxspeed);
- popup_traffic_distortion(item,buffer);
-}
-
-static void
-popup_traffic_distortion_delay(struct item *item, int delay)
-{
- char buffer[256];
- sprintf(buffer,"delay=%d",delay*600);
- popup_traffic_distortion(item,buffer);
-}
-
-static void
-popup_set_destination(struct navit *nav, struct pcoord *pc)
-{
- struct coord c;
- struct coord_geo g;
- char buffer[1024];
- char buffer_geo[1024];
- c.x = pc->x;
- c.y = pc->y;
- transform_to_geo(transform_get_projection(navit_get_trans(nav)), &c, &g);
- coord_format(g.lat,g.lng,DEGREES_MINUTES_SECONDS,buffer_geo,sizeof(buffer_geo));
- sprintf(buffer,"Map Point %s", buffer_geo);
- navit_set_destination(nav, pc, buffer, 1);
-}
-
-
-void
-popup_set_visitbefore(struct navit *nav, struct pcoord *pc,int visitbefore)
-{
- struct pcoord *dst;
- char buffer[1024];
- int i, dstcount_new;
- sprintf(buffer, _("Waypoint %d"), visitbefore+1);
- dstcount_new=navit_get_destination_count(nav)+1;
- dst=g_alloca(dstcount_new*sizeof(struct pcoord));
- navit_get_destinations(nav,dst,dstcount_new);
- for (i=dstcount_new-1;i>visitbefore;i--){
- dst[i]=dst[i-1];
- }
- dst[visitbefore]=*pc;
- navit_add_destination_description(nav,pc,buffer);
- navit_set_destinations(nav, dst, dstcount_new, buffer, 1);
-}
-
-
-
-static void
-popup_set_bookmark(struct navit *nav, struct pcoord *pc)
-{
- struct attr attr;
- struct coord c;
- struct coord_geo g;
- char buffer[1024];
- char buffer_geo[1024];
- c.x = pc->x;
- c.y = pc->y;
- transform_to_geo(pc->pro, &c, &g);
- coord_format(g.lat,g.lng,DEGREES_MINUTES_SECONDS,buffer_geo,sizeof(buffer_geo));
- sprintf(buffer,"Map Point %s", buffer_geo);
- if (!gui_add_bookmark(navit_get_gui(nav), pc, buffer)) {
- navit_get_attr(nav, attr_bookmarks, &attr, NULL);
- bookmarks_add_bookmark(attr.u.bookmarks, pc, buffer);
- }
-}
-
-
-extern void *vehicle;
-
-static void
-popup_set_position(struct navit *nav, struct pcoord *pc)
-{
- dbg(lvl_debug,"%p %p\n", nav, pc);
- navit_set_position(nav, pc);
-}
-
-#if 0
-static void
-popup_break_crossing(struct display_list *l)
-{
- struct segment *seg=(struct segment *)(l->data);
- struct street_str *str=(struct street_str *)(seg->data[0]);
- char log[256];
- int segid=str->segid;
- if (segid < 0)
- segid=-segid;
-
- sprintf(log,"Coordinates Street 0x%x updated: limit=0x%x(0x%x)", segid, 0x33, str->limit);
- str->limit=0x33;
- log_write(log, seg->blk_inf.file, str, sizeof(*str));
-}
-#endif
-
-
-#define popup_printf(menu, type, ...) popup_printf_cb(menu, type, NULL, __VA_ARGS__)
-
-static void *
-popup_printf_cb(void *menu, enum menu_type type, struct callback *cb, const char *fmt, ...)
-{
- gchar *str,*us;
- int usc=0;
- va_list ap;
- void *ret;
-
- va_start(ap, fmt);
- str=g_strdup_vprintf(fmt, ap);
- dbg(lvl_debug,"%s\n", str);
- us=str;
- while (*us) {
- if (*us == '_')
- usc++;
- us++;
- }
- if (usc) {
- gchar *str2=g_malloc(strlen(str)+usc+1);
- gchar *us2=str2;
- us=str;
- while (*us) {
- if (*us == '_')
- *us2++=*us;
- *us2++=*us++;
- }
- *us2='\0';
- g_free(str);
- str=str2;
- }
- ret=menu_add(menu, str, type, cb);
- va_end(ap);
- g_free(str);
- return ret;
-}
-
-
-
-static void
-popup_show_visitbefore(struct navit *nav,struct pcoord *pc, void *menu)
-{
- void *menuvisitbefore;
- char buffer[100];
- int i, dstcount;
- dstcount=navit_get_destination_count(nav);
- if (dstcount>=1){
- menuvisitbefore=popup_printf(menu, menu_type_submenu, _("Visit before..."));
- for (i=0;i<dstcount;i++){
- sprintf(buffer,_("Waypoint %d"),i+1);
- popup_printf_cb(menuvisitbefore, menu_type_menu, callback_new_3(callback_cast(popup_set_visitbefore), nav, pc,i), buffer);
- }
- }
-}
-
-static void
-popup_show_attr_val(struct map *map, void *menu, struct attr *attr)
-{
- char *attr_name=attr_to_name(attr->type);
- char *str;
-
- str=attr_to_text(attr, map, 1);
- popup_printf(menu, menu_type_menu, "%s: %s", attr_name, str);
- g_free(str);
-}
-
-#if 0
-static void
-popup_show_attr(void *menu, struct item *item, enum attr_type attr_type)
-{
- struct attr attr;
- memset(&attr, 0, sizeof(attr));
- attr.type=attr_type;
- if (item_attr_get(item, attr_type, &attr))
- popup_show_attr_val(menu, &attr);
-}
-#endif
-
-static void
-popup_show_attrs(struct map *map, void *menu, struct item *item)
-{
-#if 0
- popup_show_attr(menu, item, attr_debug);
- popup_show_attr(menu, item, attr_address);
- popup_show_attr(menu, item, attr_phone);
- popup_show_attr(menu, item, attr_phone);
- popup_show_attr(menu, item, attr_entry_fee);
- popup_show_attr(menu, item, attr_open_hours);
-#else
- struct attr attr;
- for (;;) {
- memset(&attr, 0, sizeof(attr));
- if (item_attr_get(item, attr_any, &attr))
- popup_show_attr_val(map, menu, &attr);
- else
- break;
- }
-
-#endif
-}
-
-static void
-popup_item_dump(struct item *item)
-{
- struct map_rect *mr;
- mr=map_rect_new(item->map,NULL);
- item=map_rect_get_item_byid(mr, item->id_hi, item->id_lo);
- dbg(lvl_debug,"item=%p\n",item);
- item_dump_filedesc(item,item->map,stdout);
- map_rect_destroy(mr);
-}
-
-
-static void
-popup_show_item(struct navit *nav, void *popup, struct displayitem *di)
-{
- struct map_rect *mr;
- void *menu, *menu_item, *menu_dist;
- char *label;
- struct item *item,*diitem;
- int count;
-
- label=graphics_displayitem_get_label(di);
- diitem=graphics_displayitem_get_item(di);
- count=graphics_displayitem_get_coord_count(di);
-
- dbg_assert(diitem);
-
- if (label)
- menu=popup_printf(popup, menu_type_submenu, "%s '%s' (%d coords)", item_to_name(diitem->type), label, count);
- else
- menu=popup_printf(popup, menu_type_submenu, "%s (%d coords)", item_to_name(diitem->type), count);
- menu_item=popup_printf(menu, menu_type_submenu, "Item");
- popup_printf(menu_item, menu_type_menu, "type: 0x%x", diitem->type);
- popup_printf(menu_item, menu_type_menu, "id: 0x%x 0x%x", diitem->id_hi, diitem->id_lo);
- if (diitem->map) {
- struct attr type,data;
- if (!map_get_attr(diitem->map, attr_type, &type, NULL))
- type.u.str="";
- if (!map_get_attr(diitem->map, attr_data, &data, NULL))
- data.u.str="";
- popup_printf(menu_item, menu_type_menu, "map: %s:%s", type.u.str, data.u.str);
- }
- if (diitem->map) {
- mr=map_rect_new(diitem->map,NULL);
- item=map_rect_get_item_byid(mr, diitem->id_hi, diitem->id_lo);
- dbg(lvl_debug,"item=%p\n", item);
- if (item) {
- popup_show_attrs(item->map, menu_item, item);
- popup_printf_cb(menu_item, menu_type_menu, callback_new_1(callback_cast(popup_item_dump), diitem), "Dump");
- if (item->type < type_line) {
- struct coord co;
- struct pcoord *c;
- if (item_coord_get(item, &co, 1)) {
- c=g_new(struct pcoord, 1);
- c->pro = transform_get_projection(navit_get_trans(nav));
- c->x = co.x;
- c->y = co.y;
- popup_printf_cb(menu_item, menu_type_menu, callback_new_2(callback_cast(popup_set_position), nav, c), _("Set as position"));
- popup_printf_cb(menu_item, menu_type_menu, callback_new_2(callback_cast(popup_set_destination), nav, c), _("Set as destination"));
- popup_printf_cb(menu_item, menu_type_menu, callback_new_2(callback_cast(popup_set_bookmark), nav, c), _("Add as bookmark"));
- }
- }
- }
- map_rect_destroy(mr);
- } else {
- popup_printf(menu, menu_type_menu, "(No map)");
- }
- if (item_get_default_flags(diitem->type)) {
- int speeds[]={5,10,20,30,40,50,60,70,80,90,100};
- int delays[]={1,2,3,5,10,15,20,30,45,60,75,90,120,150,180,240,300};
- int i;
- menu_dist=popup_printf(menu, menu_type_submenu, "Traffic distortion");
- popup_printf_cb(menu_dist, menu_type_menu, callback_new_1(callback_cast(popup_traffic_distortion_blocked), diitem), "Blocked");
- menu_item=popup_printf(menu_dist, menu_type_submenu,"Max speed");
- for (i = 0 ; i < sizeof(speeds)/sizeof(int); i++) {
- popup_printf_cb(menu_item, menu_type_menu, callback_new_2(callback_cast(popup_traffic_distortion_speed), diitem, speeds[i]), "%d km/h",speeds[i]);
- }
- menu_item=popup_printf(menu_dist, menu_type_submenu,"Delay");
- for (i = 0 ; i < sizeof(delays)/sizeof(int); i++) {
- popup_printf_cb(menu_item, menu_type_menu, callback_new_2(callback_cast(popup_traffic_distortion_delay), diitem, delays[i]*600), "%d min",delays[i]);
- }
- }
-}
-
-static void
-popup_display(struct navit *nav, void *popup, struct point *p)
-{
- struct displaylist_handle *dlh;
- struct displaylist *display;
- struct displayitem *di;
-
- display=navit_get_displaylist(nav);
- dlh=graphics_displaylist_open(display);
- while ((di=graphics_displaylist_next(dlh))) {
- if (graphics_displayitem_within_dist(display, di, p, 5)) {
- popup_show_item(nav, popup, di);
- }
- }
- graphics_displaylist_close(dlh);
-}
-
-static struct pcoord c;
-
-void
-popup(struct navit *nav, int button, struct point *p)
-{
- void *popup,*men;
- char buffer[1024];
- struct coord_geo g;
- struct coord co;
-
- popup=gui_popup_new(navit_get_gui(nav));
- if (! popup)
- return;
- transform_reverse(navit_get_trans(nav), p, &co);
- men=popup_printf(popup, menu_type_submenu, _("Point 0x%x 0x%x"), co.x, co.y);
- popup_printf(men, menu_type_menu, _("Screen coord : %d %d"), p->x, p->y);
- transform_to_geo(transform_get_projection(navit_get_trans(nav)), &co, &g);
- coord_format(g.lat,g.lng,DEGREES_MINUTES_SECONDS,buffer,sizeof(buffer));
- popup_printf(men, menu_type_menu, "%s", buffer);
- popup_printf(men, menu_type_menu, "%f %f", g.lat, g.lng);
- dbg(lvl_debug,"%p %p\n", nav, &c);
- c.pro = transform_get_projection(navit_get_trans(nav));
- c.x = co.x;
- c.y = co.y;
- popup_printf_cb(men, menu_type_menu, callback_new_2(callback_cast(popup_set_position), nav, &c), _("Set as position"));
- popup_printf_cb(men, menu_type_menu, callback_new_2(callback_cast(popup_set_destination), nav, &c), _("Set as destination"));
- popup_show_visitbefore(nav,&c,men);
- popup_printf_cb(men, menu_type_menu, callback_new_2(callback_cast(popup_set_bookmark), nav, &c), _("Add as bookmark"));
- popup_display(nav, popup, p);
- menu_popup(popup);
-}
diff --git a/navit/popup.h b/navit/popup.h
deleted file mode 100644
index 85e32f6e7..000000000
--- a/navit/popup.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_POPUP_H
-#define NAVIT_POPUP_H
-
-struct navit;
-struct point;
-struct pcoord;
-void popup(struct navit *nav, int button, struct point *p);
-void popup_set_visitbefore(struct navit *nav, struct pcoord *pc, int visitbefore);
-#endif
diff --git a/navit/profile.c b/navit/profile.c
deleted file mode 100644
index 564a63096..000000000
--- a/navit/profile.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * 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 <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#ifndef _MSC_VER
-#include <sys/time.h>
-#endif /* _MSC_VER */
-#include "profile.h"
-#include "debug.h"
-
-#define PROFILE_LEVEL_MAX 9
-
-/**
- * @brief Log timing information.
- *
- * @note Normally this function is called via the macro 'profile', which automatically fills in
- * parameters 'module' and 'function'.
- *
- * Successive calls to this function will print the elapsed time between calls, using an
- * internal timer. To start/reset the internal timer without printing a message, set parameter
- * 'fmt' to NULL.
- *
- * To run multiple timers in parallel, the parameter 'level' can be used. Each invocation will
- * print the elapsed time to the last invocation with the same level. As an exception, calling
- * with 'fmt'=NULL wll reset all timers with a level greater or equal to the level parameter.
- *
- * Typically, profiling is started by calling profile(0, NULL). Then calls with various levels
- * can be used to print different intermediate timings.
- *
- * @param level level of timer to use (0 to PROFILE_LEVEL_MAX).
- * @param module name of current module (for logging)
- * @param function name of current function (for logging)
- * @param fmt format string Log message to print (as a printf format string), followed by required
- * parameters as varargs. May be NULL; then no message is printed, and all timers with the
- * same or higher level are reset.
- */
-void
-profile_timer(int level, const char *module, const char *function, const char *fmt, ...)
-{
-#ifndef _MSC_VER
- va_list ap;
- static struct timeval last[PROFILE_LEVEL_MAX+1];
- struct timeval curr;
- double msec;
- char buffer[strlen(module)+20];
-
- if (level < 0)
- level=0;
- if (level > PROFILE_LEVEL_MAX)
- level=PROFILE_LEVEL_MAX;
- if (fmt) {
- gettimeofday(&curr, NULL);
- msec=(curr.tv_usec-last[level].tv_usec)/((double)1000)+
- (curr.tv_sec-last[level].tv_sec)*1000;
-
- sprintf(buffer, "profile:%s", module);
- va_start(ap, fmt);
- debug_vprintf(lvl_debug, buffer, strlen(buffer), function, strlen(function), 1, fmt, ap);
- va_end(ap);
- debug_printf(lvl_debug, buffer, strlen(buffer), function, strlen(function), 0, " %7.1f ms\n", msec);
- gettimeofday(&last[level], NULL);
- } else {
- gettimeofday(&curr, NULL);
- while (level <= PROFILE_LEVEL_MAX)
- last[level++]=curr;
- }
-#endif /*_MSC_VER*/
-}
diff --git a/navit/profile.h b/navit/profile.h
deleted file mode 100644
index e6f900fce..000000000
--- a/navit/profile.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_PROFILE_H
-#define NAVIT_PROFILE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef _MSC_VER
-#define __PRETTY_FUNCTION__ __FUNCTION__
-#endif
-#define profile_str2(x) #x
-#define profile_str1(x) profile_str2(x)
-#define profile_module profile_str1(MODULE)
-/*
- * Macro for logging timing information.
- * See function profile_timer for more information.
- */
-#define profile(level,...) profile_timer(level,profile_module,__PRETTY_FUNCTION__,__VA_ARGS__)
-void profile_timer(int level, const char *module, const char *function, const char *fmt, ...);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/navit/profile_option.c b/navit/profile_option.c
deleted file mode 100644
index 8a1049068..000000000
--- a/navit/profile_option.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2012 Navit Team
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terpo 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 "item.h"
-#include "debug.h"
-#include "xmlconfig.h"
-
-struct profile_option
-{
- NAVIT_OBJECT
-};
-
-static struct profile_option *
-profile_option_new(struct attr *parent, struct attr **attrs)
-{
- struct profile_option *po=g_new0(struct profile_option, 1);
- po->func=&profile_option_func;
- navit_object_ref((struct navit_object *)po);
- po->attrs=attr_list_dup(attrs);
- dbg(lvl_debug,"return %p\n",po);
- return po;
-}
-
-static void
-profile_option_destroy(struct profile_option *po)
-{
- attr_list_free(po->attrs);
- g_free(po);
-}
-
-struct object_func profile_option_func = {
- attr_profile_option,
- (object_func_new)profile_option_new,
- (object_func_get_attr)navit_object_get_attr,
- (object_func_iter_new)navit_object_attr_iter_new,
- (object_func_iter_destroy)navit_object_attr_iter_destroy,
- (object_func_set_attr)navit_object_set_attr,
- (object_func_add_attr)navit_object_add_attr,
- (object_func_remove_attr)navit_object_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)profile_option_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
diff --git a/navit/projection.c b/navit/projection.c
deleted file mode 100644
index d916689ee..000000000
--- a/navit/projection.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * 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 <string.h>
-#include <glib.h>
-#include "coord.h"
-#include "debug.h"
-#include "projection.h"
-
-struct projection_name {
- enum projection projection;
- char *name;
-};
-
-
-struct projection_name projection_names[]={
- {projection_none, ""},
- {projection_mg, "mg"},
- {projection_garmin, "garmin"},
- {projection_utm, "utm"},
-};
-
-static int
-utmref_letter(char l)
-{
- if (l < 'a' || l == 'i' || l == 'o')
- return -1;
- if (l < 'i')
- return l-'a';
- if (l < 'o')
- return l-'a'-1;
- if (l <= 'z')
- return l-'a'-2;
- return -1;
-}
-
-/**
- * Look up a projection by name.
- *
- * @param name name of projection to look up (values from projection_names, and UTM projections)
- * @utm_offset Only for UTM projections: Used to return the offset for the UTM projection
- * @returns projection, or projection_none if no projection could be determined
- */
-enum projection
-projection_from_name(const char *name, struct coord *utm_offset)
-{
- int i;
- int zone,baserow;
- char ns,zone_field,square_x,square_y;
-
- for (i=0 ; i < sizeof(projection_names)/sizeof(struct projection_name) ; i++) {
- if (! strcmp(projection_names[i].name, name))
- return projection_names[i].projection;
- }
- if (utm_offset) {
- if (sscanf(name,"utm%d%c",&zone,&ns) == 2 && zone > 0 && zone <= 60 && (ns == 'n' || ns == 's')) {
- utm_offset->x=zone*1000000;
- utm_offset->y=(ns == 's' ? -10000000:0);
- return projection_utm;
- }
- if (sscanf(name,"utmref%d%c%c%c",&zone,&zone_field,&square_x,&square_y)) {
- i=utmref_letter(zone_field);
- if (i < 2 || i > 21) {
- dbg(lvl_error,"invalid zone field '%c' in '%s'\n",zone_field,name);
- return projection_none;
- }
- i-=12;
- dbg(lvl_debug,"zone_field %d\n",i);
- baserow=i*887.6/100;
- utm_offset->x=zone*1000000;
- i=utmref_letter(square_x);
- utm_offset->x+=((i%8)+1)*100000;
- i=utmref_letter(square_y);
- dbg(lvl_debug,"baserow %d\n",baserow);
- if (!(zone % 2))
- i-=5;
- dbg(lvl_debug,"i=%d\n",i);
- i=(i-baserow+100)%20+baserow;
- utm_offset->y=i*100000;
- return projection_utm;
- }
- }
- return projection_none;
-}
-
-char *
-projection_to_name(enum projection proj)
-{
- int i;
-
- for (i=0 ; i < sizeof(projection_names)/sizeof(struct projection_name) ; i++) {
- if (projection_names[i].projection == proj)
- return projection_names[i].name;
- }
- return NULL;
-}
-
diff --git a/navit/projection.h b/navit/projection.h
deleted file mode 100644
index d67952b1f..000000000
--- a/navit/projection.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_PROJECTION_H
-#define NAVIT_PROJECTION_H
-
-enum projection {
- projection_none, /*!< No projection or unknown projection */
- projection_mg, /*!< Mercator projection */
- projection_garmin, /*!< Garmin projection */
- projection_screen, /*!< Screen projection */
- projection_utm /*!< UTM projection */
-};
-
-enum map_datum {
- map_datum_none, map_datum_wgs84, map_datum_dhdn
-};
-
-struct coord;
-enum projection projection_from_name(const char *name, struct coord *offset);
-char * projection_to_name(enum projection proj);
-
-#endif
-
diff --git a/navit/roadprofile.c b/navit/roadprofile.c
deleted file mode 100644
index 1cda16130..000000000
--- a/navit/roadprofile.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * 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 "debug.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "roadprofile.h"
-
-static void
-roadprofile_set_attr_do(struct roadprofile *this, struct attr *attr)
-{
- switch (attr->type) {
- case attr_speed:
- this->speed=attr->u.num;
- break;
- case attr_maxspeed:
- this->maxspeed=attr->u.num;
- break;
- case attr_route_weight:
- this->route_weight=attr->u.num;
- break;
- default:
- break;
- }
-}
-
-struct roadprofile *
-roadprofile_new(struct attr *parent, struct attr **attrs)
-{
- struct roadprofile *this_;
- struct attr **attr;
- this_=g_new0(struct roadprofile, 1);
- this_->func=&roadprofile_func;
- navit_object_ref((struct navit_object *)this_);
-
- this_->attrs=attr_list_dup(attrs);
- for (attr=attrs;*attr; attr++)
- roadprofile_set_attr_do(this_, *attr);
- return this_;
-}
-
-int
-roadprofile_get_attr(struct roadprofile *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
-}
-
-int
-roadprofile_set_attr(struct roadprofile *this_, struct attr *attr)
-{
- roadprofile_set_attr_do(this_, attr);
- this_->attrs=attr_generic_set_attr(this_->attrs, attr);
- return 1;
-}
-
-int
-roadprofile_add_attr(struct roadprofile *this_, struct attr *attr)
-{
- this_->attrs=attr_generic_add_attr(this_->attrs, attr);
- return 1;
-}
-
-int
-roadprofile_remove_attr(struct roadprofile *this_, struct attr *attr)
-{
- this_->attrs=attr_generic_remove_attr(this_->attrs, attr);
- return 1;
-}
-
-struct attr_iter *
-roadprofile_attr_iter_new(void)
-{
- return (struct attr_iter *)g_new0(void *,1);
-}
-
-void
-roadprofile_attr_iter_destroy(struct attr_iter *iter)
-{
- g_free(iter);
-}
-
-static struct roadprofile *
-roadprofile_dup(struct roadprofile *this_)
-{
- struct roadprofile *ret=g_new(struct roadprofile, 1);
- *ret=*this_;
- ret->refcount=1;
- ret->attrs=attr_list_dup(this_->attrs);
- return ret;
-}
-
-static void
-roadprofile_destroy(struct roadprofile *this_)
-{
- attr_list_free(this_->attrs);
- g_free(this_);
-}
-
-
-struct object_func roadprofile_func = {
- attr_roadprofile,
- (object_func_new)roadprofile_new,
- (object_func_get_attr)roadprofile_get_attr,
- (object_func_iter_new)roadprofile_attr_iter_new,
- (object_func_iter_destroy)roadprofile_attr_iter_destroy,
- (object_func_set_attr)roadprofile_set_attr,
- (object_func_add_attr)roadprofile_add_attr,
- (object_func_remove_attr)roadprofile_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)roadprofile_destroy,
- (object_func_dup)roadprofile_dup,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
diff --git a/navit/roadprofile.h b/navit/roadprofile.h
deleted file mode 100644
index a4ff65076..000000000
--- a/navit/roadprofile.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * 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.
- */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-struct roadprofile {
- NAVIT_OBJECT
- int speed;
- int route_weight;
- int maxspeed;
-};
-
-struct roadprofile * roadprofile_new(struct attr *parent, struct attr **attrs);
-int roadprofile_get_attr(struct roadprofile *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int roadprofile_set_attr(struct roadprofile *this_, struct attr *attr);
-int roadprofile_add_attr(struct roadprofile *this_, struct attr *attr);
-int roadprofile_remove_attr(struct roadprofile *this_, struct attr *attr);
-struct attr_iter *roadprofile_attr_iter_new(void);
-void roadprofile_attr_iter_destroy(struct attr_iter *iter);
-#ifdef __cplusplus
-}
-#endif
diff --git a/navit/route.c b/navit/route.c
deleted file mode 100644
index 364bd390c..000000000
--- a/navit/route.c
+++ /dev/null
@@ -1,4250 +0,0 @@
-/**
- * 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.
- */
-
-/** @file
- * @brief Contains code related to finding a route from a position to a destination
- *
- * Routing uses segments, points and items. Items are items from the map: Streets, highways, etc.
- * Segments represent such items, or parts of it. Generally, a segment is a driveable path. An item
- * can be represented by more than one segment - in that case it is "segmented". Each segment has an
- * "offset" associated, that indicates at which position in a segmented item this segment is - a
- * segment representing a not-segmented item always has the offset 1.
- * A point is located at the end of segments, often connecting several segments.
- *
- * The code in this file will make navit find a route between a position and a destination.
- * It accomplishes this by first building a "route graph". This graph contains segments and
- * points.
- *
- * After building this graph in route_graph_build(), the function route_graph_flood() assigns every
- * point and segment a "value" which represents the "costs" of traveling from this point to the
- * destination. This is done by Dijkstra's algorithm.
- *
- * When the graph is built a "route path" is created, which is a path in this graph from a given
- * position to the destination determined at time of building the graph.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#if 0
-#include <assert.h>
-#include <unistd.h>
-#include <sys/time.h>
-#endif
-#include "navit_nls.h"
-#include "glib_slice.h"
-#include "config.h"
-#include "point.h"
-#include "graphics.h"
-#include "profile.h"
-#include "coord.h"
-#include "projection.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "map.h"
-#include "mapset.h"
-#include "route.h"
-#include "track.h"
-#include "transform.h"
-#include "plugin.h"
-#include "fib.h"
-#include "event.h"
-#include "callback.h"
-#include "vehicle.h"
-#include "vehicleprofile.h"
-#include "roadprofile.h"
-#include "debug.h"
-
-struct map_priv {
- struct route *route;
-};
-
-int debug_route=0;
-
-/**
- * @brief A point in the route graph
- *
- * This represents a point in the route graph. A point usually connects two or more segments,
- * but there are also points which don't do that (e.g. at the end of a dead-end).
- */
-struct route_graph_point {
- struct route_graph_point *hash_next; /**< Pointer to a chained hashlist of all route_graph_points with this hash */
- struct route_graph_segment *start; /**< Pointer to a list of segments of which this point is the start. The links
- * of this linked-list are in route_graph_segment->start_next.*/
- struct route_graph_segment *end; /**< Pointer to a list of segments of which this pointer is the end. The links
- * of this linked-list are in route_graph_segment->end_next. */
- struct route_graph_segment *seg; /**< Pointer to the segment one should use to reach the destination at
- * least costs */
- struct fibheap_el *el; /**< When this point is put on a Fibonacci heap, this is a pointer
- * to this point's heap-element */
- int value; /**< The cost at which one can reach the destination from this point on.
- * {@code INT_MAX} indicates that the destination is unreachable from this
- * point, or that this point has not yet been examined. */
- struct coord c; /**< Coordinates of this point */
- int flags; /**< Flags for this point (eg traffic distortion) */
-};
-
-#define RP_TRAFFIC_DISTORTION 1
-#define RP_TURN_RESTRICTION 2
-#define RP_TURN_RESTRICTION_RESOLVED 4
-
-/**
- * @brief A segment in the route graph or path
- *
- * This is a segment in the route graph or path. A segment represents a driveable way.
- */
-
-struct route_segment_data {
- struct item item; /**< The item (e.g. street) that this segment represents. */
- int flags;
- int len; /**< Length of this segment, in meters */
- /*NOTE: After a segment, various fields may follow, depending on what flags are set. Order of fields:
- 1.) maxspeed Maximum allowed speed on this segment. Present if AF_SPEED_LIMIT is set.
- 2.) offset If the item is segmented (i.e. represented by more than one segment), this
- indicates the position of this segment in the item. Present if AF_SEGMENTED is set.
- */
-};
-
-
-struct size_weight_limit {
- int width;
- int length;
- int height;
- int weight;
- int axle_weight;
-};
-
-#define RSD_OFFSET(x) *((int *)route_segment_data_field_pos((x), attr_offset))
-#define RSD_MAXSPEED(x) *((int *)route_segment_data_field_pos((x), attr_maxspeed))
-#define RSD_SIZE_WEIGHT(x) *((struct size_weight_limit *)route_segment_data_field_pos((x), attr_vehicle_width))
-#define RSD_DANGEROUS_GOODS(x) *((int *)route_segment_data_field_pos((x), attr_vehicle_dangerous_goods))
-
-
-struct route_graph_segment_data {
- struct item *item;
- int offset;
- int flags;
- int len;
- int maxspeed;
- struct size_weight_limit size_weight;
- int dangerous_goods;
-};
-
-/**
- * @brief A segment in the route graph
- *
- * This is a segment in the route graph. A segment represents a driveable way.
- */
-struct route_graph_segment {
- struct route_graph_segment *next; /**< Linked-list pointer to a list of all route_graph_segments */
- struct route_graph_segment *start_next; /**< Pointer to the next element in the list of segments that start at the
- * same point. Start of this list is in route_graph_point->start. */
- struct route_graph_segment *end_next; /**< Pointer to the next element in the list of segments that end at the
- * same point. Start of this list is in route_graph_point->end. */
- struct route_graph_point *start; /**< Pointer to the point this segment starts at. */
- struct route_graph_point *end; /**< Pointer to the point this segment ends at. */
- struct route_segment_data data; /**< The segment data */
-};
-
-/**
- * @brief A traffic distortion
- *
- * Traffic distortions represent delays or closures on the route, which can occur for a variety of
- * reasons such as roadworks, accidents or heavy traffic. They are also used internally by Navit to
- * avoid using a particular segment.
- *
- * A traffic distortion can limit the speed on a segment, or introduce a delay. If both are given,
- * at the same time, they are cumulative.
- */
-struct route_traffic_distortion {
- int maxspeed; /**< Maximum speed possible in km/h. Use {@code INT_MAX} to
- leave the speed unchanged, or 0 to mark the segment as
- impassable. */
- int delay; /**< Delay in tenths of seconds (0 for no delay) */
-};
-
-/**
- * @brief A segment in the route path
- *
- * This is a segment in the route path.
- */
-struct route_path_segment {
- struct route_path_segment *next; /**< Pointer to the next segment in the path */
- struct route_segment_data *data; /**< The segment data */
- int direction; /**< Order in which the coordinates are ordered. >0 means "First
- * coordinate of the segment is the first coordinate of the item", <=0
- * means reverse. */
- unsigned ncoords; /**< How many coordinates does this segment have? */
- struct coord c[0]; /**< Pointer to the ncoords coordinates of this segment */
- /* WARNING: There will be coordinates following here, so do not create new fields after c! */
-};
-
-/**
- * @brief Usually represents a destination or position
- *
- * This struct usually represents a destination or position
- */
-struct route_info {
- struct coord c; /**< The actual destination / position */
- struct coord lp; /**< The nearest point on a street to c */
- int pos; /**< The position of lp within the coords of the street */
- int lenpos; /**< Distance between lp and the end of the street */
- int lenneg; /**< Distance between lp and the start of the street */
- int lenextra; /**< Distance between lp and c */
- int percent; /**< ratio of lenneg to lenght of whole street in percent */
- struct street_data *street; /**< The street lp is on */
- int street_direction; /**< Direction of vehicle on street -1 = Negative direction, 1 = Positive direction, 0 = Unknown */
- int dir; /**< Direction to take when following the route -1 = Negative direction, 1 = Positive direction */
-};
-
-/**
- * @brief A complete route path
- *
- * A route path is an ordered set of segments describing the route from the current position (or previous
- * destination) to the next destination.
- */
-struct route_path {
- int in_use; /**< The path is in use and can not be updated */
- int update_required; /**< The path needs to be updated after it is no longer in use */
- int updated; /**< The path has only been updated */
- int path_time; /**< Time to pass the path */
- int path_len; /**< Length of the path */
- struct route_path_segment *path; /**< The first segment in the path, i.e. the segment one should
- * drive in next */
- struct route_path_segment *path_last; /**< The last segment in the path */
- /* XXX: path_hash is not necessery now */
- struct item_hash *path_hash; /**< A hashtable of all the items represented by this route's segements */
- struct route_path *next; /**< Next route path in case of intermediate destinations */
-};
-
-/**
- * @brief A complete route
- *
- * This struct holds all information about a route.
- */
-struct route {
- NAVIT_OBJECT
- struct mapset *ms; /**< The mapset this route is built upon */
- enum route_path_flags flags;
- struct route_info *pos; /**< Current position within this route */
- GList *destinations; /**< Destinations of the route */
- int reached_destinations_count; /**< Used as base to calculate waypoint numbers */
- struct route_info *current_dst; /**< Current destination */
-
- struct route_graph *graph; /**< Pointer to the route graph */
- struct route_path *path2; /**< Pointer to the route path */
- struct map *map;
- struct map *graph_map;
- struct callback * route_graph_done_cb ; /**< Callback when route graph is done */
- struct callback * route_graph_flood_done_cb ; /**< Callback when route graph flooding is done */
- struct callback_list *cbl2; /**< Callback list to call when route changes */
- int destination_distance; /**< Distance to the destination at which the destination is considered "reached" */
- struct vehicleprofile *vehicleprofile; /**< Routing preferences */
- int route_status; /**< Route Status */
- int link_path; /**< Link paths over multiple waypoints together */
- struct pcoord pc;
- struct vehicle *v;
-};
-
-/**
- * @brief A complete route graph
- *
- * The route graph holds all routable segments along with the connections between them and the cost of
- * each segment.
- */
-struct route_graph {
- int busy; /**< The graph is being built */
- struct map_selection *sel; /**< The rectangle selection for the graph */
- struct mapset_handle *h; /**< Handle to the mapset */
- struct map *m; /**< Pointer to the currently active map */
- struct map_rect *mr; /**< Pointer to the currently active map rectangle */
- struct vehicleprofile *vehicleprofile; /**< The vehicle profile */
- struct callback *idle_cb; /**< Idle callback to process the graph */
- struct callback *done_cb; /**< Callback when graph is done */
- struct event_idle *idle_ev; /**< The pointer to the idle event */
- struct route_graph_segment *route_segments; /**< Pointer to the first route_graph_segment in the linked list of all segments */
- struct route_graph_segment *avoid_seg;
-#define HASH_SIZE 8192
- struct route_graph_point *hash[HASH_SIZE]; /**< A hashtable containing all route_graph_points in this graph */
-};
-
-#define HASHCOORD(c) ((((c)->x +(c)->y) * 2654435761UL) & (HASH_SIZE-1))
-
-/**
- * @brief Iterator to iterate through all route graph segments in a route graph point
- *
- * This structure can be used to iterate through all route graph segments connected to a
- * route graph point. Use this with the rp_iterator_* functions.
- */
-struct route_graph_point_iterator {
- struct route_graph_point *p; /**< The route graph point whose segments should be iterated */
- int end; /**< Indicates if we have finished iterating through the "start" segments */
- struct route_graph_segment *next; /**< The next segment to be returned */
-};
-
-struct attr_iter {
- union {
- GList *list;
- } u;
-};
-
-static struct route_info * route_find_nearest_street(struct vehicleprofile *vehicleprofile, struct mapset *ms, struct pcoord *c);
-static struct route_graph_point *route_graph_get_point(struct route_graph *this, struct coord *c);
-static void route_graph_update(struct route *this, struct callback *cb, int async);
-static void route_graph_build_done(struct route_graph *rg, int cancel);
-static struct route_path *route_path_new(struct route_graph *this, struct route_path *oldpath, struct route_info *pos, struct route_info *dst, struct vehicleprofile *profile);
-static void route_process_street_graph(struct route_graph *this, struct item *item, struct vehicleprofile *profile);
-static void route_graph_destroy(struct route_graph *this);
-static void route_path_update(struct route *this, int cancel, int async);
-static int route_time_seg(struct vehicleprofile *profile, struct route_segment_data *over, struct route_traffic_distortion *dist);
-static void route_graph_flood(struct route_graph *this, struct route_info *dst, struct vehicleprofile *profile, struct callback *cb);
-static void route_graph_reset(struct route_graph *this);
-
-
-/**
- * @brief Returns the projection used for this route
- *
- * @param route The route to return the projection for
- * @return The projection used for this route
- */
-static enum projection route_projection(struct route *route)
-{
- struct street_data *street;
- struct route_info *dst=route_get_dst(route);
- if (!route->pos && !dst)
- return projection_none;
- street = route->pos ? route->pos->street : dst->street;
- if (!street || !street->item.map)
- return projection_none;
- return map_projection(street->item.map);
-}
-
-/**
- * @brief Creates a new graph point iterator
- *
- * This function creates a new route graph point iterator, that can be used to
- * iterate through all segments connected to the point.
- *
- * @param p The route graph point to create the iterator from
- * @return A new iterator.
- */
-static struct route_graph_point_iterator
-rp_iterator_new(struct route_graph_point *p)
-{
- struct route_graph_point_iterator it;
-
- it.p = p;
- if (p->start) {
- it.next = p->start;
- it.end = 0;
- } else {
- it.next = p->end;
- it.end = 1;
- }
-
- return it;
-}
-
-/**
- * @brief Gets the next segment connected to a route graph point from an iterator
- *
- * @param it The route graph point iterator to get the segment from
- * @return The next segment or NULL if there are no more segments
- */
-static struct route_graph_segment
-*rp_iterator_next(struct route_graph_point_iterator *it)
-{
- struct route_graph_segment *ret;
-
- ret = it->next;
- if (!ret) {
- return NULL;
- }
-
- if (!it->end) {
- if (ret->start_next) {
- it->next = ret->start_next;
- } else {
- it->next = it->p->end;
- it->end = 1;
- }
- } else {
- it->next = ret->end_next;
- }
-
- return ret;
-}
-
-/**
- * @brief Checks if the last segment returned from a route_graph_point_iterator comes from the end
- *
- * @param it The route graph point iterator to be checked
- * @return 1 if the last segment returned comes from the end of the route graph point, 0 otherwise
- */
-static int
-rp_iterator_end(struct route_graph_point_iterator *it) {
- if (it->end && (it->next != it->p->end)) {
- return 1;
- } else {
- return 0;
- }
-}
-
-static void
-route_path_get_distances(struct route_path *path, struct coord *c, int count, int *distances)
-{
- int i;
- for (i = 0 ; i < count ; i++)
- distances[i]=INT_MAX;
- while (path) {
- struct route_path_segment *seg=path->path;
- while (seg) {
- for (i = 0 ; i < count ; i++) {
- int dist=transform_distance_polyline_sq(seg->c, seg->ncoords, &c[i], NULL, NULL);
- if (dist < distances[i])
- distances[i]=dist;
- }
- seg=seg->next;
- }
- path=path->next;
- }
- for (i = 0 ; i < count ; i++) {
- if (distances[i] != INT_MAX)
- distances[i]=sqrt(distances[i]);
- }
-}
-
-void
-route_get_distances(struct route *this, struct coord *c, int count, int *distances)
-{
- return route_path_get_distances(this->path2, c, count, distances);
-}
-
-/**
- * @brief Destroys a route_path
- *
- * @param this The route_path to be destroyed
- */
-static void
-route_path_destroy(struct route_path *this, int recurse)
-{
- struct route_path_segment *c,*n;
- struct route_path *next;
- while (this) {
- next=this->next;
- if (this->path_hash) {
- item_hash_destroy(this->path_hash);
- this->path_hash=NULL;
- }
- c=this->path;
- while (c) {
- n=c->next;
- g_free(c);
- c=n;
- }
- this->in_use--;
- if (!this->in_use)
- g_free(this);
- if (!recurse)
- break;
- this=next;
- }
-}
-
-/**
- * @brief Creates a completely new route structure
- *
- * @param attrs Not used
- * @return The newly created route
- */
-struct route *
-route_new(struct attr *parent, struct attr **attrs)
-{
- struct route *this=g_new0(struct route, 1);
- struct attr dest_attr;
-
- this->func=&route_func;
- navit_object_ref((struct navit_object *)this);
-
- if (attr_generic_get_attr(attrs, NULL, attr_destination_distance, &dest_attr, NULL)) {
- this->destination_distance = dest_attr.u.num;
- } else {
- this->destination_distance = 50; // Default value
- }
- this->cbl2=callback_list_new();
-
- return this;
-}
-
-/**
- * @brief Duplicates a route object
- *
- * @return The duplicated route
- */
-
-struct route *
-route_dup(struct route *orig)
-{
- struct route *this=g_new0(struct route, 1);
- this->func=&route_func;
- navit_object_ref((struct navit_object *)this);
- this->cbl2=callback_list_new();
- this->destination_distance=orig->destination_distance;
- this->ms=orig->ms;
- this->flags=orig->flags;
- this->vehicleprofile=orig->vehicleprofile;
-
- return this;
-}
-
-/**
- * @brief Checks if a segment is part of a roundabout
- *
- * This function checks if a segment is part of a roundabout.
- *
- * @param seg The segment to be checked
- * @param level How deep to scan the route graph
- * @param direction Set this to 1 if we're entering the segment through its end, to 0 otherwise
- * @param origin Used internally, set to NULL
- * @return 1 If a roundabout was detected, 0 otherwise
- */
-static int
-route_check_roundabout(struct route_graph_segment *seg, int level, int direction, struct route_graph_segment *origin)
-{
- struct route_graph_point_iterator it,it2;
- struct route_graph_segment *cur;
- int count=0;
-
- if (!level) {
- return 0;
- }
- if (!direction && !(seg->data.flags & AF_ONEWAY)) {
- return 0;
- }
- if (direction && !(seg->data.flags & AF_ONEWAYREV)) {
- return 0;
- }
- if (seg->data.flags & AF_ROUNDABOUT_VALID)
- return 0;
-
- if (!origin) {
- origin = seg;
- }
-
- if (!direction) {
- it = rp_iterator_new(seg->end);
- } else {
- it = rp_iterator_new(seg->start);
- }
- it2=it;
-
- while ((cur = rp_iterator_next(&it2)))
- count++;
-
- if (count > 3)
- return 0;
- cur = rp_iterator_next(&it);
- while (cur) {
- if (cur == seg) {
- cur = rp_iterator_next(&it);
- continue;
- }
-
- if (cur->data.item.type != origin->data.item.type) {
- // This street is of another type, can't be part of the roundabout
- cur = rp_iterator_next(&it);
- continue;
- }
-
- if (cur == origin) {
- seg->data.flags |= AF_ROUNDABOUT;
- return 1;
- }
-
- if (route_check_roundabout(cur, (level-1), rp_iterator_end(&it), origin)) {
- seg->data.flags |= AF_ROUNDABOUT;
- return 1;
- }
-
- cur = rp_iterator_next(&it);
- }
-
- return 0;
-}
-
-/**
- * @brief Sets the mapset of the route passwd
- *
- * @param this The route to set the mapset for
- * @param ms The mapset to set for this route
- */
-void
-route_set_mapset(struct route *this, struct mapset *ms)
-{
- this->ms=ms;
-}
-
-/**
- * @brief Sets the vehicle profile of a route
- *
- * @param this The route to set the profile for
- * @param prof The vehicle profile
- */
-
-void
-route_set_profile(struct route *this, struct vehicleprofile *prof)
-{
- if (this->vehicleprofile != prof) {
- int dest_count = g_list_length(this->destinations);
- struct pcoord *pc;
- this->vehicleprofile = prof;
- pc = g_alloca(dest_count*sizeof(struct pcoord));
- route_get_destinations(this, pc, dest_count);
- route_set_destinations(this, pc, dest_count, 1);
- }
-}
-
-/**
- * @brief Returns the mapset of the route passed
- *
- * @param this The route to get the mapset of
- * @return The mapset of the route passed
- */
-struct mapset *
-route_get_mapset(struct route *this)
-{
- return this->ms;
-}
-
-/**
- * @brief Returns the current position within the route passed
- *
- * @param this The route to get the position for
- * @return The position within the route passed
- */
-struct route_info *
-route_get_pos(struct route *this)
-{
- return this->pos;
-}
-
-/**
- * @brief Returns the destination of the route passed
- *
- * @param this The route to get the destination for
- * @return The destination of the route passed
- */
-struct route_info *
-route_get_dst(struct route *this)
-{
- struct route_info *dst=NULL;
-
- if (this->destinations)
- dst=g_list_last(this->destinations)->data;
- return dst;
-}
-
-/**
- * @brief Checks if the path is calculated for the route passed
- *
- * @param this The route to check
- * @return True if the path is calculated, false if not
- */
-int
-route_get_path_set(struct route *this)
-{
- return this->path2 != NULL;
-}
-
-/**
- * @brief Checks if the route passed contains a certain item within the route path
- *
- * This function checks if a certain items exists in the path that navit will guide
- * the user to his destination. It does *not* check if this item exists in the route
- * graph!
- *
- * @param this The route to check for this item
- * @param item The item to search for
- * @return True if the item was found, false if the item was not found or the route was not calculated
- */
-int
-route_contains(struct route *this, struct item *item)
-{
- if (! this->path2 || !this->path2->path_hash)
- return 0;
- if (item_hash_lookup(this->path2->path_hash, item))
- return 1;
- if (! this->pos || !this->pos->street)
- return 0;
- return item_is_equal(this->pos->street->item, *item);
-
-}
-
-static struct route_info *
-route_next_destination(struct route *this)
-{
- if (!this->destinations)
- return NULL;
- return this->destinations->data;
-}
-
-/**
- * @brief Checks if a route has reached its destination
- *
- * @param this The route to be checked
- * @return True if the destination is "reached", false otherwise.
- */
-int
-route_destination_reached(struct route *this)
-{
- struct street_data *sd = NULL;
- enum projection pro;
- struct route_info *dst=route_next_destination(this);
-
- if (!this->pos)
- return 0;
- if (!dst)
- return 0;
-
- sd = this->pos->street;
-
- if (!this->path2) {
- return 0;
- }
-
- if (!item_is_equal(this->pos->street->item, dst->street->item)) {
- return 0;
- }
-
- if ((sd->flags & AF_ONEWAY) && (this->pos->lenneg >= dst->lenneg)) { // We would have to drive against the one-way road
- return 0;
- }
- if ((sd->flags & AF_ONEWAYREV) && (this->pos->lenpos >= dst->lenpos)) {
- return 0;
- }
- pro=route_projection(this);
- if (pro == projection_none)
- return 0;
-
- if (transform_distance(pro, &this->pos->c, &dst->lp) > this->destination_distance) {
- return 0;
- }
-
- if (g_list_next(this->destinations))
- return 1;
- else
- return 2;
-}
-
-/**
- * @brief Returns the position from which to route to the current destination of the route.
- *
- * This function examines the destination list of the route. If present, it returns the destination
- * which precedes the one indicated by the {@code current_dst} member of the route. Failing that,
- * the current position of the route is returned.
- *
- * @param this The route object
- * @return The previous destination or current position, see description
- */
-static struct route_info *
-route_previous_destination(struct route *this)
-{
- GList *l=g_list_find(this->destinations, this->current_dst);
- if (!l)
- return this->pos;
- l=g_list_previous(l);
- if (!l)
- return this->pos;
- return l->data;
-}
-
-/**
- * @brief Updates or recreates the route graph.
- *
- * This function is called after the route graph has been changed or rebuilt and flooding has
- * completed. It then updates the route path to reflect these changes.
- *
- * If multiple destinations are set, this function will reset and re-flood the route graph for each
- * destination, thus recursively calling itself for each destination.
- *
- * @param this The route object
- * @param new_graph FIXME Whether the route graph has been rebuilt from scratch
- */
-/* FIXME Should we rename this function to route_graph_flood_done, in order to avoid confusion? */
-static void
-route_path_update_done(struct route *this, int new_graph)
-{
- struct route_path *oldpath=this->path2;
- struct attr route_status;
- struct route_info *prev_dst; /* previous destination or current position */
- route_status.type=attr_route_status;
- if (this->path2 && (this->path2->in_use>1)) {
- this->path2->update_required=1+new_graph;
- return;
- }
- route_status.u.num=route_status_building_path;
- route_set_attr(this, &route_status);
- prev_dst=route_previous_destination(this);
- if (this->link_path) {
- this->path2=route_path_new(this->graph, NULL, prev_dst, this->current_dst, this->vehicleprofile);
- if (this->path2)
- this->path2->next=oldpath;
- else
- route_path_destroy(oldpath,0);
- } else {
- this->path2=route_path_new(this->graph, oldpath, prev_dst, this->current_dst, this->vehicleprofile);
- if (oldpath && this->path2) {
- this->path2->next=oldpath->next;
- route_path_destroy(oldpath,0);
- }
- }
- if (this->path2) {
- struct route_path_segment *seg=this->path2->path;
- int path_time=0,path_len=0;
- while (seg) {
- /* FIXME */
- int seg_time=route_time_seg(this->vehicleprofile, seg->data, NULL);
- if (seg_time == INT_MAX) {
- dbg(lvl_debug,"error\n");
- } else
- path_time+=seg_time;
- path_len+=seg->data->len;
- seg=seg->next;
- }
- this->path2->path_time=path_time;
- this->path2->path_len=path_len;
- if (prev_dst != this->pos) {
- this->link_path=1;
- this->current_dst=prev_dst;
- route_graph_reset(this->graph);
- route_graph_flood(this->graph, this->current_dst, this->vehicleprofile, this->route_graph_flood_done_cb);
- return;
- }
- if (!new_graph && this->path2->updated)
- route_status.u.num=route_status_path_done_incremental;
- else
- route_status.u.num=route_status_path_done_new;
- } else
- route_status.u.num=route_status_not_found;
- this->link_path=0;
- route_set_attr(this, &route_status);
-}
-
-/**
- * @brief Updates the route graph and the route path if something changed with the route
- *
- * This will update the route graph and the route path of the route if some of the
- * route's settings (destination, position) have changed.
- *
- * The behavior of this function can be controlled via flags:
- * <ul>
- * <li>{@code route_path_flag_cancel}: Cancel navigation, clear route graph and route path</li>
- * <li>{@code route_path_flag_async}: Perform operations asynchronously</li>
- * <li>{@code route_path_flag_no_rebuild}: Do not rebuild the route graph</li>
- * </ul>
- *
- * These flags will be stored in the {@code flags} member of the route object.
- *
- * @attention For this to work the route graph has to be destroyed if the route's
- * @attention destination is changed somewhere!
- *
- * @param this The route to update
- * @param flags Flags to control the behavior of this function, see description
- */
-static void
-route_path_update_flags(struct route *this, enum route_path_flags flags)
-{
- dbg(lvl_debug,"enter %d\n", flags);
- this->flags = flags;
- if (! this->pos || ! this->destinations) {
- dbg(lvl_debug,"destroy\n");
- route_path_destroy(this->path2,1);
- this->path2 = NULL;
- return;
- }
- if (flags & route_path_flag_cancel) {
- route_graph_destroy(this->graph);
- this->graph=NULL;
- }
- /* the graph is destroyed when setting the destination */
- if (this->graph) {
- if (this->graph->busy) {
- dbg(lvl_debug,"busy building graph\n");
- return;
- }
- // we can try to update
- dbg(lvl_debug,"try update\n");
- route_path_update_done(this, 0);
- } else {
- route_path_destroy(this->path2,1);
- this->path2 = NULL;
- }
- if (!this->graph || (!this->path2 && !(flags & route_path_flag_no_rebuild))) {
- dbg(lvl_debug,"rebuild graph %p %p\n",this->graph,this->path2);
- if (! this->route_graph_flood_done_cb)
- this->route_graph_flood_done_cb=callback_new_2(callback_cast(route_path_update_done), this, (long)1);
- dbg(lvl_debug,"route_graph_update\n");
- route_graph_update(this, this->route_graph_flood_done_cb, !!(flags & route_path_flag_async));
- }
-}
-
-/**
- * @brief Updates the route graph and the route path if something changed with the route
- *
- * This function is a wrapper around {@link route_path_update_flags(route *, enum route_path)}.
- *
- * @param this The route to update
- * @param cancel If true, cancel navigation, clear route graph and route path
- * @param async If true, perform processing asynchronously
- */
-static void
-route_path_update(struct route *this, int cancel, int async)
-{
- enum route_path_flags flags=(cancel ? route_path_flag_cancel:0)|(async ? route_path_flag_async:0);
- route_path_update_flags(this, flags);
-}
-
-
-/**
- * @brief This will calculate all the distances stored in a route_info
- *
- * @param ri The route_info to calculate the distances for
- * @param pro The projection used for this route
- */
-static void
-route_info_distances(struct route_info *ri, enum projection pro)
-{
- int npos=ri->pos+1;
- struct street_data *sd=ri->street;
- /* 0 1 2 X 3 4 5 6 pos=2 npos=3 count=7 0,1,2 3,4,5,6*/
- ri->lenextra=transform_distance(pro, &ri->lp, &ri->c);
- ri->lenneg=transform_polyline_length(pro, sd->c, npos)+transform_distance(pro, &sd->c[ri->pos], &ri->lp);
- ri->lenpos=transform_polyline_length(pro, sd->c+npos, sd->count-npos)+transform_distance(pro, &sd->c[npos], &ri->lp);
- if (ri->lenneg || ri->lenpos)
- ri->percent=(ri->lenneg*100)/(ri->lenneg+ri->lenpos);
- else
- ri->percent=50;
-}
-
-/**
- * @brief This sets the current position of the route passed
- *
- * This will set the current position of the route passed to the street that is nearest to the
- * passed coordinates. It also automatically updates the route.
- *
- * @param this The route to set the position of
- * @param pos Coordinates to set as position
- * @param flags Flags to use for building the graph
- */
-
-static int
-route_set_position_flags(struct route *this, struct pcoord *pos, enum route_path_flags flags)
-{
- if (this->pos)
- route_info_free(this->pos);
- this->pos=NULL;
- this->pos=route_find_nearest_street(this->vehicleprofile, this->ms, pos);
-
- // If there is no nearest street, bail out.
- if (!this->pos) return 0;
-
- this->pos->street_direction=0;
- dbg(lvl_debug,"this->pos=%p\n", this->pos);
- route_info_distances(this->pos, pos->pro);
- route_path_update_flags(this, flags);
- return 1;
-}
-
-/**
- * @brief This sets the current position of the route passed
- *
- * This will set the current position of the route passed to the street that is nearest to the
- * passed coordinates. It also automatically updates the route.
- *
- * @param this The route to set the position of
- * @param pos Coordinates to set as position
- */
-void
-route_set_position(struct route *this, struct pcoord *pos)
-{
- route_set_position_flags(this, pos, route_path_flag_async);
-}
-
-/**
- * @brief Sets a route's current position based on coordinates from tracking
- *
- * @param this The route to set the current position of
- * @param tracking The tracking to get the coordinates from
- */
-void
-route_set_position_from_tracking(struct route *this, struct tracking *tracking, enum projection pro)
-{
- struct coord *c;
- struct route_info *ret;
- struct street_data *sd;
-
- dbg(lvl_info,"enter\n");
- c=tracking_get_pos(tracking);
- ret=g_new0(struct route_info, 1);
- if (!ret) {
- printf("%s:Out of memory\n", __FUNCTION__);
- return;
- }
- if (this->pos)
- route_info_free(this->pos);
- this->pos=NULL;
- ret->c=*c;
- ret->lp=*c;
- ret->pos=tracking_get_segment_pos(tracking);
- ret->street_direction=tracking_get_street_direction(tracking);
- sd=tracking_get_street_data(tracking);
- if (sd) {
- ret->street=street_data_dup(sd);
- route_info_distances(ret, pro);
- }
- dbg(lvl_debug,"position 0x%x,0x%x item 0x%x,0x%x direction %d pos %d lenpos %d lenneg %d\n",c->x,c->y,sd?sd->item.id_hi:0,sd?sd->item.id_lo:0,ret->street_direction,ret->pos,ret->lenpos,ret->lenneg);
- dbg(lvl_debug,"c->x=0x%x, c->y=0x%x pos=%d item=(0x%x,0x%x)\n", c->x, c->y, ret->pos, ret->street?ret->street->item.id_hi:0, ret->street?ret->street->item.id_lo:0);
- dbg(lvl_debug,"street 0=(0x%x,0x%x) %d=(0x%x,0x%x)\n", ret->street?ret->street->c[0].x:0, ret->street?ret->street->c[0].y:0, ret->street?ret->street->count-1:0, ret->street?ret->street->c[ret->street->count-1].x:0, ret->street?ret->street->c[ret->street->count-1].y:0);
- this->pos=ret;
- if (this->destinations)
- route_path_update(this, 0, 1);
- dbg(lvl_info,"ret\n");
-}
-
-/* Used for debuging of route_rect, what routing sees */
-struct map_selection *route_selection;
-
-/**
- * @brief Returns a single map selection
- */
-struct map_selection *
-route_rect(int order, struct coord *c1, struct coord *c2, int rel, int abs)
-{
- int dx,dy,sx=1,sy=1,d,m;
- struct map_selection *sel=g_new(struct map_selection, 1);
- if (!sel) {
- printf("%s:Out of memory\n", __FUNCTION__);
- return sel;
- }
- sel->order=order;
- sel->range.min=route_item_first;
- sel->range.max=route_item_last;
- dbg(lvl_debug,"%p %p\n", c1, c2);
- dx=c1->x-c2->x;
- dy=c1->y-c2->y;
- if (dx < 0) {
- sx=-1;
- sel->u.c_rect.lu.x=c1->x;
- sel->u.c_rect.rl.x=c2->x;
- } else {
- sel->u.c_rect.lu.x=c2->x;
- sel->u.c_rect.rl.x=c1->x;
- }
- if (dy < 0) {
- sy=-1;
- sel->u.c_rect.lu.y=c2->y;
- sel->u.c_rect.rl.y=c1->y;
- } else {
- sel->u.c_rect.lu.y=c1->y;
- sel->u.c_rect.rl.y=c2->y;
- }
- if (dx*sx > dy*sy)
- d=dx*sx;
- else
- d=dy*sy;
- m=d*rel/100+abs;
- sel->u.c_rect.lu.x-=m;
- sel->u.c_rect.rl.x+=m;
- sel->u.c_rect.lu.y+=m;
- sel->u.c_rect.rl.y-=m;
- sel->next=NULL;
- return sel;
-}
-
-/**
- * @brief Appends a map selection to the selection list. Selection list may be NULL.
- */
-static struct map_selection *
-route_rect_add(struct map_selection *sel, int order, struct coord *c1, struct coord *c2, int rel, int abs)
-{
- struct map_selection *ret;
- ret=route_rect(order, c1, c2, rel, abs);
- ret->next=sel;
- return ret;
-}
-
-/**
- * @brief Returns a list of map selections useable to create a route graph
- *
- * Returns a list of map selections useable to get a map rect from which items can be
- * retrieved to build a route graph.
- *
- * @param c Array containing route points, including start, intermediate and destination ones.
- * @param count number of route points
- * @param proifle vehicleprofile
- */
-static struct map_selection *
-route_calc_selection(struct coord *c, int count, struct vehicleprofile *profile)
-{
- struct map_selection *ret=NULL;
- int i;
- struct coord_rect r;
- char *depth, *str, *tok;
-
- if (!count)
- return NULL;
- r.lu=c[0];
- r.rl=c[0];
- for (i = 1 ; i < count ; i++)
- coord_rect_extend(&r, &c[i]);
-
- depth=profile->route_depth;
- if (!depth)
- depth="4:25%,8:40000,18:10000";
- depth=str=g_strdup(depth);
-
- while((tok=strtok(str,","))!=NULL) {
- int order=0, dist=0;
- sscanf(tok,"%d:%d",&order,&dist);
- if(strchr(tok,'%'))
- ret=route_rect_add(ret, order, &r.lu, &r.rl, dist, 0);
- else
- for (i = 0 ; i < count ; i++) {
- ret=route_rect_add(ret, order, &c[i], &c[i], 0, dist);
- }
- str=NULL;
- }
-
- g_free(depth);
-
- return ret;
-}
-
-/**
- * @brief Destroys a list of map selections
- *
- * @param sel Start of the list to be destroyed
- */
-static void
-route_free_selection(struct map_selection *sel)
-{
- struct map_selection *next;
- while (sel) {
- next=sel->next;
- g_free(sel);
- sel=next;
- }
-}
-
-
-static void
-route_clear_destinations(struct route *this_)
-{
- g_list_foreach(this_->destinations, (GFunc)route_info_free, NULL);
- g_list_free(this_->destinations);
- this_->destinations=NULL;
-}
-
-/**
- * @brief Sets the destination of a route
- *
- * This sets the destination of a route to the street nearest to the coordinates passed
- * and updates the route.
- *
- * @param this The route to set the destination for
- * @param dst Points to an array of coordinates to set as destinations, which will be visited in the
- * order in which they appear in the array (the last one is the final destination)
- * @param count Number of items in {@code dst}, 0 to clear all destinations
- * @param async If set, do routing asynchronously
- */
-
-void
-route_set_destinations(struct route *this, struct pcoord *dst, int count, int async)
-{
- struct attr route_status;
- struct route_info *dsti;
- int i;
- route_status.type=attr_route_status;
-
- profile(0,NULL);
- route_clear_destinations(this);
- if (dst && count) {
- for (i = 0 ; i < count ; i++) {
- dsti=route_find_nearest_street(this->vehicleprofile, this->ms, &dst[i]);
- if(dsti) {
- route_info_distances(dsti, dst->pro);
- this->destinations=g_list_append(this->destinations, dsti);
- }
- }
- route_status.u.num=route_status_destination_set;
- } else {
- this->reached_destinations_count=0;
- route_status.u.num=route_status_no_destination;
- }
- callback_list_call_attr_1(this->cbl2, attr_destination, this);
- route_set_attr(this, &route_status);
- profile(1,"find_nearest_street");
-
- /* The graph has to be destroyed and set to NULL, otherwise route_path_update() doesn't work */
- route_graph_destroy(this->graph);
- this->graph=NULL;
- this->current_dst=route_get_dst(this);
- route_path_update(this, 1, async);
- profile(0,"end");
-}
-
-int
-route_get_destinations(struct route *this, struct pcoord *pc, int count)
-{
- int ret=0;
- GList *l=this->destinations;
- while (l && ret < count) {
- struct route_info *dst=l->data;
- pc->x=dst->c.x;
- pc->y=dst->c.y;
- pc->pro=projection_mg; /* FIXME */
- pc++;
- ret++;
- l=g_list_next(l);
- }
- return ret;
-}
-
-/**
- * @brief Get the destinations count for the route
- *
- * @param this The route instance
- * @return destination count for the route
- */
-int
-route_get_destination_count(struct route *this)
-{
- return g_list_length(this->destinations);
-}
-
-/**
- * @brief Returns a description for a waypoint as (type or street_name_systematic) + (label or WayID[osm_wayid])
- *
- * @param this The route instance
- * @param n The nth waypoint
- * @return The description
- */
-char*
-route_get_destination_description(struct route *this, int n)
-{
- struct route_info *dst;
- struct map_rect *mr=NULL;
- struct item *item;
- struct attr attr;
- char *type=NULL;
- char *label=NULL;
- char *desc=NULL;
-
- if(!this->destinations)
- return NULL;
-
- dst=g_list_nth_data(this->destinations,n);
- mr=map_rect_new(dst->street->item.map, NULL);
- item = map_rect_get_item_byid(mr, dst->street->item.id_hi, dst->street->item.id_lo);
-
- type=g_strdup(item_to_name(dst->street->item.type));
-
- while(item_attr_get(item, attr_any, &attr)) {
- if (attr.type==attr_street_name_systematic ){
- g_free(type);
- type=attr_to_text(&attr, item->map, 1);
- } else if (attr.type==attr_label){
- g_free(label);
- label=attr_to_text(&attr, item->map, 1);
- } else if (attr.type==attr_osm_wayid && !label){
- char *tmp=attr_to_text(&attr, item->map, 1);
- label=g_strdup_printf("WayID %s", tmp);
- g_free(tmp);
- }
- }
-
- if(!label && !type) {
- desc=g_strdup(_("unknown street"));
- } else if (!label || strcmp(type, label)==0){
- desc=g_strdup(type);
- } else {
- desc=g_strdup_printf("%s %s", type, label);
- }
-
- g_free(label);
- g_free(type);
-
- if (mr)
- map_rect_destroy(mr);
-
- return desc;
-}
-
-/**
- * @brief Start a route given set of coordinates
- *
- * @param this The route instance
- * @param dst The coordinate to start routing to
- * @param async Set to 1 to do route calculation asynchronously
- * @return nothing
- */
-void
-route_set_destination(struct route *this, struct pcoord *dst, int async)
-{
- route_set_destinations(this, dst, dst?1:0, async);
-}
-
-/**
- * @brief Append a waypoint to the route.
- *
- * This appends a waypoint to the current route, targetting the street
- * nearest to the coordinates passed, and updates the route.
- *
- * @param this The route to set the destination for
- * @param dst Coordinates of the new waypoint
- * @param async: If set, do routing asynchronously
- */
-void
-route_append_destination(struct route *this, struct pcoord *dst, int async)
-{
- if (dst){
- struct route_info *dsti;
- dsti=route_find_nearest_street(this->vehicleprofile, this->ms, &dst[0]);
- if(dsti) {
- route_info_distances(dsti, dst->pro);
- this->destinations=g_list_append(this->destinations, dsti);
- }
- /* The graph has to be destroyed and set to NULL, otherwise route_path_update() doesn't work */
- route_graph_destroy(this->graph);
- this->graph=NULL;
- this->current_dst=route_get_dst(this);
- route_path_update(this, 1, async);
- }else{
- route_set_destinations(this, NULL, 0, async);
- }
-}
-
-/**
- * @brief Remove the nth waypoint of the route
- *
- * @param this The route instance
- * @param n The waypoint to remove
- * @return nothing
- */
-void
-route_remove_nth_waypoint(struct route *this, int n)
-{
- struct route_info *ri=g_list_nth_data(this->destinations, n);
- this->destinations=g_list_remove(this->destinations,ri);
- route_info_free(ri);
- /* The graph has to be destroyed and set to NULL, otherwise route_path_update() doesn't work */
- route_graph_destroy(this->graph);
- this->graph=NULL;
- this->current_dst=route_get_dst(this);
- route_path_update(this, 1, 1);
-}
-
-void
-route_remove_waypoint(struct route *this)
-{
- if (this->path2) {
- struct route_path *path = this->path2;
- struct route_info *ri = this->destinations->data;
- this->destinations = g_list_remove(this->destinations, ri);
- route_info_free(ri);
- this->path2 = this->path2->next;
- route_path_destroy(path, 0);
- if (!this->destinations) {
- this->route_status=route_status_no_destination;
- this->reached_destinations_count=0;
- return;
- }
- this->reached_destinations_count++;
- route_graph_reset(this->graph);
- this->current_dst = this->destinations->data;
- route_graph_flood(this->graph, this->current_dst, this->vehicleprofile, this->route_graph_flood_done_cb);
- }
-}
-
-/**
- * @brief Gets the next route_graph_point with the specified coordinates
- *
- * @param this The route in which to search
- * @param c Coordinates to search for
- * @param last The last route graph point returned to iterate over multiple points with the same coordinates,
- * or {@code NULL} to return the first point
- * @return The point at the specified coordinates or NULL if not found
- */
-static struct route_graph_point *
-route_graph_get_point_next(struct route_graph *this, struct coord *c, struct route_graph_point *last)
-{
- struct route_graph_point *p;
- int seen=0,hashval=HASHCOORD(c);
- p=this->hash[hashval];
- while (p) {
- if (p->c.x == c->x && p->c.y == c->y) {
- if (!last || seen)
- return p;
- if (p == last)
- seen=1;
- }
- p=p->hash_next;
- }
- return NULL;
-}
-
-/**
- * @brief Gets the first route_graph_point with the specified coordinates
- *
- * @param this The route in which to search
- * @param c Coordinates to search for
- * @return The point at the specified coordinates or NULL if not found
- */
-static struct route_graph_point *
-route_graph_get_point(struct route_graph *this, struct coord *c)
-{
- return route_graph_get_point_next(this, c, NULL);
-}
-
-/**
- * @brief Gets the last route_graph_point with the specified coordinates
- *
- * @param this The route in which to search
- * @param c Coordinates to search for
- * @return The point at the specified coordinates or NULL if not found
- */
-static struct route_graph_point *
-route_graph_get_point_last(struct route_graph *this, struct coord *c)
-{
- struct route_graph_point *p,*ret=NULL;
- int hashval=HASHCOORD(c);
- p=this->hash[hashval];
- while (p) {
- if (p->c.x == c->x && p->c.y == c->y)
- ret=p;
- p=p->hash_next;
- }
- return ret;
-}
-
-
-
-/**
- * @brief Create a new point for the route graph with the specified coordinates
- *
- * @param this The route to insert the point into
- * @param f The coordinates at which the point should be created
- * @return The point created
- */
-
-static struct route_graph_point *
-route_graph_point_new(struct route_graph *this, struct coord *f)
-{
- int hashval;
- struct route_graph_point *p;
-
- hashval=HASHCOORD(f);
- if (debug_route)
- printf("p (0x%x,0x%x)\n", f->x, f->y);
- p=g_slice_new0(struct route_graph_point);
- p->hash_next=this->hash[hashval];
- this->hash[hashval]=p;
- p->value=INT_MAX;
- p->c=*f;
- return p;
-}
-
-/**
- * @brief Inserts a point into the route graph at the specified coordinates
- *
- * This will insert a point into the route graph at the coordinates passed in f.
- * Note that the point is not yet linked to any segments.
- *
- * If the route graph already contains a point at the specified coordinates, the existing point
- * will be returned.
- *
- * @param this The route graph to insert the point into
- * @param f The coordinates at which the point should be inserted
- * @return The point inserted or NULL on failure
- */
-static struct route_graph_point *
-route_graph_add_point(struct route_graph *this, struct coord *f)
-{
- struct route_graph_point *p;
-
- p=route_graph_get_point(this,f);
- if (!p)
- p=route_graph_point_new(this,f);
- return p;
-}
-
-/**
- * @brief Frees all the memory used for points in the route graph passed
- *
- * @param this The route graph to delete all points from
- */
-static void
-route_graph_free_points(struct route_graph *this)
-{
- struct route_graph_point *curr,*next;
- int i;
- for (i = 0 ; i < HASH_SIZE ; i++) {
- curr=this->hash[i];
- while (curr) {
- next=curr->hash_next;
- g_slice_free(struct route_graph_point, curr);
- curr=next;
- }
- this->hash[i]=NULL;
- }
-}
-
-/**
- * @brief Resets all nodes
- *
- * This iterates through all the points in the route graph, resetting them to their initial state.
- * The {@code value} member of each point (cost to reach the destination) is reset to
- * {@code INT_MAX}, the {@code seg} member (cheapest way to destination) is reset to {@code NULL}
- * and the {@code el} member (pointer to element in Fibonacci heap) is also reset to {@code NULL}.
- *
- * References to elements of the route graph which were obtained prior to calling this function
- * remain valid after it returns.
- *
- * @param this The route graph to reset
- */
-static void
-route_graph_reset(struct route_graph *this)
-{
- struct route_graph_point *curr;
- int i;
- for (i = 0 ; i < HASH_SIZE ; i++) {
- curr=this->hash[i];
- while (curr) {
- curr->value=INT_MAX;
- curr->seg=NULL;
- curr->el=NULL;
- curr=curr->hash_next;
- }
- }
-}
-
-/**
- * @brief Returns the position of a certain field appended to a route graph segment
- *
- * This function returns a pointer to a field that is appended to a route graph
- * segment.
- *
- * @param seg The route graph segment the field is appended to
- * @param type Type of the field that should be returned
- * @return A pointer to a field of a certain type, or NULL if no such field is present
- */
-static void *
-route_segment_data_field_pos(struct route_segment_data *seg, enum attr_type type)
-{
- unsigned char *ptr;
-
- ptr = ((unsigned char*)seg) + sizeof(struct route_segment_data);
-
- if (seg->flags & AF_SPEED_LIMIT) {
- if (type == attr_maxspeed)
- return (void*)ptr;
- ptr += sizeof(int);
- }
- if (seg->flags & AF_SEGMENTED) {
- if (type == attr_offset)
- return (void*)ptr;
- ptr += sizeof(int);
- }
- if (seg->flags & AF_SIZE_OR_WEIGHT_LIMIT) {
- if (type == attr_vehicle_width)
- return (void*)ptr;
- ptr += sizeof(struct size_weight_limit);
- }
- if (seg->flags & AF_DANGEROUS_GOODS) {
- if (type == attr_vehicle_dangerous_goods)
- return (void*)ptr;
- ptr += sizeof(int);
- }
- return NULL;
-}
-
-/**
- * @brief Calculates the size of a route_segment_data struct with given flags
- *
- * @param flags The flags of the route_segment_data
- */
-
-static int
-route_segment_data_size(int flags)
-{
- int ret=sizeof(struct route_segment_data);
- if (flags & AF_SPEED_LIMIT)
- ret+=sizeof(int);
- if (flags & AF_SEGMENTED)
- ret+=sizeof(int);
- if (flags & AF_SIZE_OR_WEIGHT_LIMIT)
- ret+=sizeof(struct size_weight_limit);
- if (flags & AF_DANGEROUS_GOODS)
- ret+=sizeof(int);
- return ret;
-}
-
-
-static int
-route_graph_segment_is_duplicate(struct route_graph_point *start, struct route_graph_segment_data *data)
-{
- struct route_graph_segment *s;
- s=start->start;
- while (s) {
- if (item_is_equal(*data->item, s->data.item)) {
- if (data->flags & AF_SEGMENTED) {
- if (RSD_OFFSET(&s->data) == data->offset) {
- return 1;
- }
- } else
- return 1;
- }
- s=s->start_next;
- }
- return 0;
-}
-
-/**
- * @brief Inserts a new segment into the route graph
- *
- * This function performs a check if a segment for the item specified already exists, and inserts
- * a new segment representing this item if it does not.
- *
- * @param this The route graph to insert the segment into
- * @param start The graph point which should be connected to the start of this segment
- * @param end The graph point which should be connected to the end of this segment
- * @param len The length of this segment
- * @param item The item that is represented by this segment
- * @param flags Flags for this segment
- * @param offset If the item passed in "item" is segmented (i.e. divided into several segments), this indicates the position of this segment within the item
- * @param maxspeed The maximum speed allowed on this segment in km/h. -1 if not known.
- */
-static void
-route_graph_add_segment(struct route_graph *this, struct route_graph_point *start,
- struct route_graph_point *end, struct route_graph_segment_data *data)
-{
- struct route_graph_segment *s;
- int size;
-
- size = sizeof(struct route_graph_segment)-sizeof(struct route_segment_data)+route_segment_data_size(data->flags);
- s = g_slice_alloc0(size);
- if (!s) {
- printf("%s:Out of memory\n", __FUNCTION__);
- return;
- }
- s->start=start;
- s->start_next=start->start;
- start->start=s;
- s->end=end;
- s->end_next=end->end;
- end->end=s;
- dbg_assert(data->len >= 0);
- s->data.len=data->len;
- s->data.item=*data->item;
- s->data.flags=data->flags;
-
- if (data->flags & AF_SPEED_LIMIT)
- RSD_MAXSPEED(&s->data)=data->maxspeed;
- if (data->flags & AF_SEGMENTED)
- RSD_OFFSET(&s->data)=data->offset;
- if (data->flags & AF_SIZE_OR_WEIGHT_LIMIT)
- RSD_SIZE_WEIGHT(&s->data)=data->size_weight;
- if (data->flags & AF_DANGEROUS_GOODS)
- RSD_DANGEROUS_GOODS(&s->data)=data->dangerous_goods;
-
- s->next=this->route_segments;
- this->route_segments=s;
- if (debug_route)
- printf("l (0x%x,0x%x)-(0x%x,0x%x)\n", start->c.x, start->c.y, end->c.x, end->c.y);
-}
-
-/**
- * @brief Gets all the coordinates of an item
- *
- * This will get all the coordinates of the item i and return them in c,
- * up to max coordinates. Additionally it is possible to limit the coordinates
- * returned to all the coordinates of the item between the two coordinates
- * start end end.
- *
- * @important Make sure that whatever c points to has enough memory allocated
- * @important to hold max coordinates!
- *
- * @param i The item to get the coordinates of
- * @param c Pointer to memory allocated for holding the coordinates
- * @param max Maximum number of coordinates to return
- * @param start First coordinate to get
- * @param end Last coordinate to get
- * @return The number of coordinates returned
- */
-static int get_item_seg_coords(struct item *i, struct coord *c, int max,
- struct coord *start, struct coord *end)
-{
- struct map_rect *mr;
- struct item *item;
- int rc = 0, p = 0;
- struct coord c1;
- mr=map_rect_new(i->map, NULL);
- if (!mr)
- return 0;
- item = map_rect_get_item_byid(mr, i->id_hi, i->id_lo);
- if (item) {
- rc = item_coord_get(item, &c1, 1);
- while (rc && (c1.x != start->x || c1.y != start->y)) {
- rc = item_coord_get(item, &c1, 1);
- }
- while (rc && p < max) {
- c[p++] = c1;
- if (c1.x == end->x && c1.y == end->y)
- break;
- rc = item_coord_get(item, &c1, 1);
- }
- }
- map_rect_destroy(mr);
- return p;
-}
-
-/**
- * @brief Returns and removes one segment from a path
- *
- * @param path The path to take the segment from
- * @param item The item whose segment to remove
- * @param offset Offset of the segment within the item to remove. If the item is not segmented this should be 1.
- * @return The segment removed
- */
-static struct route_path_segment *
-route_extract_segment_from_path(struct route_path *path, struct item *item,
- int offset)
-{
- int soffset;
- struct route_path_segment *sp = NULL, *s;
- s = path->path;
- while (s) {
- if (item_is_equal(s->data->item,*item)) {
- if (s->data->flags & AF_SEGMENTED)
- soffset=RSD_OFFSET(s->data);
- else
- soffset=1;
- if (soffset == offset) {
- if (sp) {
- sp->next = s->next;
- break;
- } else {
- path->path = s->next;
- break;
- }
- }
- }
- sp = s;
- s = s->next;
- }
- if (s)
- item_hash_remove(path->path_hash, item);
- return s;
-}
-
-/**
- * @brief Adds a segment and the end of a path
- *
- * @param this The path to add the segment to
- * @param segment The segment to add
- */
-static void
-route_path_add_segment(struct route_path *this, struct route_path_segment *segment)
-{
- if (!this->path)
- this->path=segment;
- if (this->path_last)
- this->path_last->next=segment;
- this->path_last=segment;
-}
-
-/**
- * @brief Adds a two coordinate line to a path
- *
- * This adds a new line to a path, creating a new segment for it.
- *
- * @param this The path to add the item to
- * @param start coordinate to add to the start of the item. If none should be added, make this NULL.
- * @param end coordinate to add to the end of the item. If none should be added, make this NULL.
- * @param len The length of the item
- */
-static void
-route_path_add_line(struct route_path *this, struct coord *start, struct coord *end, int len)
-{
- int ccnt=2;
- struct route_path_segment *segment;
- int seg_size,seg_dat_size;
-
- dbg(lvl_debug,"line from 0x%x,0x%x-0x%x,0x%x\n", start->x, start->y, end->x, end->y);
- seg_size=sizeof(*segment) + sizeof(struct coord) * ccnt;
- seg_dat_size=sizeof(struct route_segment_data);
- segment=g_malloc0(seg_size + seg_dat_size);
- segment->data=(struct route_segment_data *)((char *)segment+seg_size);
- segment->ncoords=ccnt;
- segment->direction=0;
- segment->c[0]=*start;
- segment->c[1]=*end;
- segment->data->len=len;
- route_path_add_segment(this, segment);
-}
-
-/**
- * @brief Inserts a new item into the path
- *
- * This function does almost the same as "route_path_add_item()", but identifies
- * the item to add by a segment from the route graph. Another difference is that it "copies" the
- * segment from the route graph, i.e. if the item is segmented, only the segment passed in rgs will
- * be added to the route path, not all segments of the item.
- *
- * The function can be sped up by passing an old path already containing this segment in oldpath -
- * the segment will then be extracted from this old path. Please note that in this case the direction
- * parameter has no effect.
- *
- * @param this The path to add the item to
- * @param oldpath Old path containing the segment to be added. Speeds up the function, but can be NULL.
- * @param rgs Segment of the route graph that should be "copied" to the route path
- * @param dir Order in which to add the coordinates. See route_path_add_item()
- * @param pos Information about start point if this is the first segment
- * @param dst Information about end point if this is the last segment
- */
-
-static int
-route_path_add_item_from_graph(struct route_path *this, struct route_path *oldpath, struct route_graph_segment *rgs, int dir, struct route_info *pos, struct route_info *dst)
-{
- struct route_path_segment *segment=NULL;
- int i, ccnt, extra=0, ret=0;
- struct coord *c,*cd,ca[2048];
- int offset=1;
- int seg_size,seg_dat_size;
- int len=rgs->data.len;
- if (rgs->data.flags & AF_SEGMENTED)
- offset=RSD_OFFSET(&rgs->data);
-
- dbg(lvl_debug,"enter (0x%x,0x%x) dir=%d pos=%p dst=%p\n", rgs->data.item.id_hi, rgs->data.item.id_lo, dir, pos, dst);
- if (oldpath) {
- segment=item_hash_lookup(oldpath->path_hash, &rgs->data.item);
- if (segment && segment->direction == dir) {
- segment = route_extract_segment_from_path(oldpath, &rgs->data.item, offset);
- if (segment) {
- ret=1;
- if (!pos)
- goto linkold;
- }
- g_free(segment);
- }
- }
-
- if (pos) {
- if (dst) {
- extra=2;
- if (dst->lenneg >= pos->lenneg) {
- dir=1;
- ccnt=dst->pos-pos->pos;
- c=pos->street->c+pos->pos+1;
- len=dst->lenneg-pos->lenneg;
- } else {
- dir=-1;
- ccnt=pos->pos-dst->pos;
- c=pos->street->c+dst->pos+1;
- len=pos->lenneg-dst->lenneg;
- }
- } else {
- extra=1;
- dbg(lvl_debug,"pos dir=%d\n", dir);
- dbg(lvl_debug,"pos pos=%d\n", pos->pos);
- dbg(lvl_debug,"pos count=%d\n", pos->street->count);
- if (dir > 0) {
- c=pos->street->c+pos->pos+1;
- ccnt=pos->street->count-pos->pos-1;
- len=pos->lenpos;
- } else {
- c=pos->street->c;
- ccnt=pos->pos+1;
- len=pos->lenneg;
- }
- }
- pos->dir=dir;
- } else if (dst) {
- extra=1;
- dbg(lvl_debug,"dst dir=%d\n", dir);
- dbg(lvl_debug,"dst pos=%d\n", dst->pos);
- if (dir > 0) {
- c=dst->street->c;
- ccnt=dst->pos+1;
- len=dst->lenneg;
- } else {
- c=dst->street->c+dst->pos+1;
- ccnt=dst->street->count-dst->pos-1;
- len=dst->lenpos;
- }
- } else {
- ccnt=get_item_seg_coords(&rgs->data.item, ca, 2047, &rgs->start->c, &rgs->end->c);
- c=ca;
- }
- seg_size=sizeof(*segment) + sizeof(struct coord) * (ccnt + extra);
- seg_dat_size=route_segment_data_size(rgs->data.flags);
- segment=g_malloc0(seg_size + seg_dat_size);
- segment->data=(struct route_segment_data *)((char *)segment+seg_size);
- segment->direction=dir;
- cd=segment->c;
- if (pos && (c[0].x != pos->lp.x || c[0].y != pos->lp.y))
- *cd++=pos->lp;
- if (dir < 0)
- c+=ccnt-1;
- for (i = 0 ; i < ccnt ; i++) {
- *cd++=*c;
- c+=dir;
- }
- segment->ncoords+=ccnt;
- if (dst && (cd[-1].x != dst->lp.x || cd[-1].y != dst->lp.y))
- *cd++=dst->lp;
- segment->ncoords=cd-segment->c;
- if (segment->ncoords <= 1) {
- g_free(segment);
- return 1;
- }
-
- /* We check if the route graph segment is part of a roundabout here, because this
- * only matters for route graph segments which form parts of the route path */
- if (!(rgs->data.flags & AF_ROUNDABOUT)) { // We identified this roundabout earlier
- route_check_roundabout(rgs, 13, (dir < 1), NULL);
- }
-
- memcpy(segment->data, &rgs->data, seg_dat_size);
-linkold:
- segment->data->len=len;
- segment->next=NULL;
- item_hash_insert(this->path_hash, &rgs->data.item, segment);
-
- route_path_add_segment(this, segment);
-
- return ret;
-}
-
-/**
- * @brief Destroys all segments of a route graph
- *
- * @param this The graph to destroy all segments from
- */
-static void
-route_graph_free_segments(struct route_graph *this)
-{
- struct route_graph_segment *curr,*next;
- int size;
- curr=this->route_segments;
- while (curr) {
- next=curr->next;
- size = sizeof(struct route_graph_segment)-sizeof(struct route_segment_data)+route_segment_data_size(curr->data.flags);
- g_slice_free1(size, curr);
- curr=next;
- }
- this->route_segments=NULL;
-}
-
-/**
- * @brief Destroys a route graph
- *
- * @param this The route graph to be destroyed
- */
-static void
-route_graph_destroy(struct route_graph *this)
-{
- if (this) {
- route_graph_build_done(this, 1);
- route_graph_free_points(this);
- route_graph_free_segments(this);
- g_free(this);
- }
-}
-
-/**
- * @brief Returns the estimated speed on a segment, or 0 for an impassable segment
- *
- * This function returns the estimated speed to be driven on a segment, calculated as follows:
- * <ul>
- * <li>Initially the route weight of the vehicle profile for the given item type is used. If the
- * item type does not have a route weight in the vehicle profile given, it is considered impassable
- * and 0 is returned.</li>
- * <li>If the {@code maxspeed} attribute of the segment's item is set, either it or the previous
- * speed estimate for the segment is used, as governed by the vehicle profile's
- * {@code maxspeed_handling} attribute.</li>
- * <li>If a traffic distortion is present, its {@code maxspeed} is taken into account in a similar
- * manner. Unlike the regular {@code maxspeed}, a {@code maxspeed} resulting from a traffic
- * distortion is always considered if it limits the speed, regardless of {@code maxspeed_handling}.
- * </li>
- * <li>Access restrictions for dangerous goods, size or weight are evaluated, and 0 is returned if
- * the given vehicle profile violates one of them.</li>
- * </ul>
- *
- * @param profile The routing preferences
- * @param over The segment which is passed
- * @param dist A traffic distortion if applicable, or {@code NULL}
- * @return The estimated speed in km/h, or 0 if the segment is impassable
- */
-static int
-route_seg_speed(struct vehicleprofile *profile, struct route_segment_data *over, struct route_traffic_distortion *dist)
-{
- struct roadprofile *roadprofile=vehicleprofile_get_roadprofile(profile, over->item.type);
- int speed,maxspeed;
- if (!roadprofile || !roadprofile->route_weight)
- return 0;
- speed=roadprofile->route_weight;
- if (profile->maxspeed_handling != maxspeed_ignore) {
- if (over->flags & AF_SPEED_LIMIT) {
- maxspeed=RSD_MAXSPEED(over);
- if (profile->maxspeed_handling == maxspeed_enforce)
- speed=maxspeed;
- } else
- maxspeed=INT_MAX;
- if (dist && maxspeed > dist->maxspeed)
- maxspeed=dist->maxspeed;
- if (maxspeed != INT_MAX && (profile->maxspeed_handling != maxspeed_restrict || maxspeed < speed))
- speed=maxspeed;
- }
- if (over->flags & AF_DANGEROUS_GOODS) {
- if (profile->dangerous_goods & RSD_DANGEROUS_GOODS(over))
- return 0;
- }
- if (over->flags & AF_SIZE_OR_WEIGHT_LIMIT) {
- struct size_weight_limit *size_weight=&RSD_SIZE_WEIGHT(over);
- if (size_weight->width != -1 && profile->width != -1 && profile->width > size_weight->width)
- return 0;
- if (size_weight->height != -1 && profile->height != -1 && profile->height > size_weight->height)
- return 0;
- if (size_weight->length != -1 && profile->length != -1 && profile->length > size_weight->length)
- return 0;
- if (size_weight->weight != -1 && profile->weight != -1 && profile->weight > size_weight->weight)
- return 0;
- if (size_weight->axle_weight != -1 && profile->axle_weight != -1 && profile->axle_weight > size_weight->axle_weight)
- return 0;
- }
- return speed;
-}
-
-/**
- * @brief Returns the time needed to travel along a segment, or {@code INT_MAX} if the segment is impassable.
- *
- * This function returns the time needed to travel along the entire length of {@code over} in
- * tenths of seconds. Restrictions for dangerous goods, weight or size are taken into account.
- * Traffic distortions are also taken into account if a valid {@code dist} argument is given.
- *
- * @param profile The vehicle profile (routing preferences)
- * @param over The segment which is passed
- * @param dist A traffic distortion if applicable, or {@code NULL}
- * @return The time needed in tenths of seconds
- */
-
-static int
-route_time_seg(struct vehicleprofile *profile, struct route_segment_data *over, struct route_traffic_distortion *dist)
-{
- int speed=route_seg_speed(profile, over, dist);
- if (!speed)
- return INT_MAX;
- return over->len*36/speed+(dist ? dist->delay : 0);
-}
-
-/**
- * @brief Returns the traffic distortion for a segment.
- *
- * @param seg The segment for which the traffic distortion is to be returned
- * @param ret Points to a {@code struct route_traffic_distortion}, whose members will be filled
- *
- * @return true if a traffic distortion was found, 0 if not
- */
-static int
-route_get_traffic_distortion(struct route_graph_segment *seg, struct route_traffic_distortion *ret)
-{
- struct route_graph_point *start=seg->start;
- struct route_graph_point *end=seg->end;
- struct route_graph_segment *tmp,*found=NULL;
- tmp=start->start;
- while (tmp && !found) {
- if (tmp->data.item.type == type_traffic_distortion && tmp->start == start && tmp->end == end)
- found=tmp;
- tmp=tmp->start_next;
- }
- tmp=start->end;
- while (tmp && !found) {
- if (tmp->data.item.type == type_traffic_distortion && tmp->end == start && tmp->start == end)
- found=tmp;
- tmp=tmp->end_next;
- }
- if (found) {
- ret->delay=found->data.len;
- if (found->data.flags & AF_SPEED_LIMIT)
- ret->maxspeed=RSD_MAXSPEED(&found->data);
- else
- ret->maxspeed=INT_MAX;
- return 1;
- }
- return 0;
-}
-
-static int
-route_through_traffic_allowed(struct vehicleprofile *profile, struct route_graph_segment *seg)
-{
- return (seg->data.flags & AF_THROUGH_TRAFFIC_LIMIT) == 0;
-}
-
-/**
- * @brief Returns the "cost" of driving from point {@code from} along segment {@code over} in direction {@code dir}
- *
- * Cost is relative to time, indicated in tenths of seconds.
- *
- * This function considers traffic distortions as well as penalties. If the segment is impassable
- * due to traffic distortions or restrictions, {@code INT_MAX} is returned in order to prevent use
- * of this segment for routing.
- *
- * @param profile The routing preferences
- * @param from The point where we are starting
- * @param over The segment we are using
- * @param dir The direction of segment which we are driving. Positive values indicate we are
- * traveling in the direction of the segment, negative values indicate we are traveling against
- * that direction. Values of +2 or -2 cause the function to ignore traffic distortions.
- *
- * @return The "cost" needed to travel along the segment
- */
-
-static int
-route_value_seg(struct vehicleprofile *profile, struct route_graph_point *from, struct route_graph_segment *over, int dir)
-{
- int ret;
- struct route_traffic_distortion dist,*distp=NULL;
-#if 0
- dbg(lvl_debug,"flags 0x%x mask 0x%x flags 0x%x\n", over->flags, dir >= 0 ? profile->flags_forward_mask : profile->flags_reverse_mask, profile->flags);
-#endif
- if ((over->data.flags & (dir >= 0 ? profile->flags_forward_mask : profile->flags_reverse_mask)) != profile->flags)
- return INT_MAX;
- if (dir > 0 && (over->start->flags & RP_TURN_RESTRICTION))
- return INT_MAX;
- if (dir < 0 && (over->end->flags & RP_TURN_RESTRICTION))
- return INT_MAX;
- if (from && from->seg == over)
- return INT_MAX;
- if ((over->start->flags & RP_TRAFFIC_DISTORTION) && (over->end->flags & RP_TRAFFIC_DISTORTION) &&
- route_get_traffic_distortion(over, &dist) && dir != 2 && dir != -2) {
- distp=&dist;
- }
- ret=route_time_seg(profile, &over->data, distp);
- if (ret == INT_MAX)
- return ret;
- if (!route_through_traffic_allowed(profile, over) && from && route_through_traffic_allowed(profile, from->seg))
- ret+=profile->through_traffic_penalty;
- return ret;
-}
-
-static int
-route_graph_segment_match(struct route_graph_segment *s1, struct route_graph_segment *s2)
-{
- if (!s1 || !s2)
- return 0;
- return (s1->start->c.x == s2->start->c.x && s1->start->c.y == s2->start->c.y &&
- s1->end->c.x == s2->end->c.x && s1->end->c.y == s2->end->c.y);
-}
-
-/**
- * @brief Sets or clears a traffic distortion for a segment.
- *
- * This sets or clears a delay. It cannot be used to set speed.
- *
- * @param this The route graph
- * @param seg The segment to which the traffic distortion applies
- * @param delay Delay in tenths of a second
- */
-static void
-route_graph_set_traffic_distortion(struct route_graph *this, struct route_graph_segment *seg, int delay)
-{
- struct route_graph_point *start=NULL;
- struct route_graph_segment *s;
-
- while ((start=route_graph_get_point_next(this, &seg->start->c, start))) {
- s=start->start;
- while (s) {
- if (route_graph_segment_match(s, seg)) {
- if (s->data.item.type != type_none && s->data.item.type != type_traffic_distortion && delay) {
- struct route_graph_segment_data data;
- struct item item;
- memset(&data, 0, sizeof(data));
- memset(&item, 0, sizeof(item));
- item.type=type_traffic_distortion;
- data.item=&item;
- data.len=delay;
- s->start->flags |= RP_TRAFFIC_DISTORTION;
- s->end->flags |= RP_TRAFFIC_DISTORTION;
- route_graph_add_segment(this, s->start, s->end, &data);
- } else if (s->data.item.type == type_traffic_distortion && !delay) {
- s->data.item.type = type_none;
- }
- }
- s=s->start_next;
- }
- }
-}
-
-/**
- * @brief Adds a route distortion item to the route graph
- *
- * @param this The route graph to add to
- * @param item The item to add
- */
-static void
-route_process_traffic_distortion(struct route_graph *this, struct item *item)
-{
- struct route_graph_point *s_pnt,*e_pnt;
- struct coord c,l;
- struct attr delay_attr, maxspeed_attr;
- struct route_graph_segment_data data;
-
- data.item=item;
- data.len=0;
- data.flags=0;
- data.offset=1;
- data.maxspeed = INT_MAX;
-
- if (item_coord_get(item, &l, 1)) {
- s_pnt=route_graph_add_point(this,&l);
- while (item_coord_get(item, &c, 1)) {
- l=c;
- }
- e_pnt=route_graph_add_point(this,&l);
- s_pnt->flags |= RP_TRAFFIC_DISTORTION;
- e_pnt->flags |= RP_TRAFFIC_DISTORTION;
- if (item_attr_get(item, attr_maxspeed, &maxspeed_attr)) {
- data.flags |= AF_SPEED_LIMIT;
- data.maxspeed=maxspeed_attr.u.num;
- }
- if (item_attr_get(item, attr_delay, &delay_attr))
- data.len=delay_attr.u.num;
- route_graph_add_segment(this, s_pnt, e_pnt, &data);
- }
-}
-
-/**
- * @brief Adds a turn restriction item to the route graph
- *
- * @param this The route graph to add to
- * @param item The item to add
- */
-static void
-route_process_turn_restriction(struct route_graph *this, struct item *item)
-{
- struct route_graph_point *pnt[4];
- struct coord c[5];
- int i,count;
- struct route_graph_segment_data data;
-
- count=item_coord_get(item, c, 5);
- if (count != 3 && count != 4) {
- dbg(lvl_debug,"wrong count %d\n",count);
- return;
- }
- if (count == 4)
- return;
- for (i = 0 ; i < count ; i++)
- pnt[i]=route_graph_add_point(this,&c[i]);
- dbg(lvl_debug,"%s: (0x%x,0x%x)-(0x%x,0x%x)-(0x%x,0x%x) %p-%p-%p\n",item_to_name(item->type),c[0].x,c[0].y,c[1].x,c[1].y,c[2].x,c[2].y,pnt[0],pnt[1],pnt[2]);
- data.item=item;
- data.flags=0;
- data.len=0;
- route_graph_add_segment(this, pnt[0], pnt[1], &data);
- route_graph_add_segment(this, pnt[1], pnt[2], &data);
-#if 1
- if (count == 4) {
- pnt[1]->flags |= RP_TURN_RESTRICTION;
- pnt[2]->flags |= RP_TURN_RESTRICTION;
- route_graph_add_segment(this, pnt[2], pnt[3], &data);
- } else
- pnt[1]->flags |= RP_TURN_RESTRICTION;
-#endif
-}
-
-/**
- * @brief Adds an item to the route graph
- *
- * This adds an item (e.g. a street) to the route graph, creating as many segments as needed for a
- * segmented item.
- *
- * @param this The route graph to add to
- * @param item The item to add
- * @param profile The vehicle profile currently in use
- */
-static void
-route_process_street_graph(struct route_graph *this, struct item *item, struct vehicleprofile *profile)
-{
-#ifdef AVOID_FLOAT
- int len=0;
-#else
- double len=0;
-#endif
- int segmented = 0;
- struct roadprofile *roadp;
- struct route_graph_point *s_pnt,*e_pnt; /* Start and end point */
- struct coord c,l; /* Current and previous point */
- struct attr attr;
- struct route_graph_segment_data data;
- data.flags=0;
- data.offset=1;
- data.maxspeed=-1;
- data.item=item;
-
- roadp = vehicleprofile_get_roadprofile(profile, item->type);
- if (!roadp) {
- /* Don't include any roads that don't have a road profile in our vehicle profile */
- return;
- }
-
- if (item_coord_get(item, &l, 1)) {
- int default_flags_value=AF_ALL;
- int *default_flags=item_get_default_flags(item->type);
- if (! default_flags)
- default_flags=&default_flags_value;
- if (item_attr_get(item, attr_flags, &attr)) {
- data.flags = attr.u.num;
- if (data.flags & AF_SEGMENTED)
- segmented = 1;
- } else
- data.flags = *default_flags;
-
-
- if (data.flags & AF_SPEED_LIMIT) {
- if (item_attr_get(item, attr_maxspeed, &attr))
- data.maxspeed = attr.u.num;
- }
- if (data.flags & AF_DANGEROUS_GOODS) {
- if (item_attr_get(item, attr_vehicle_dangerous_goods, &attr))
- data.dangerous_goods = attr.u.num;
- else
- data.flags &= ~AF_DANGEROUS_GOODS;
- }
- if (data.flags & AF_SIZE_OR_WEIGHT_LIMIT) {
- if (item_attr_get(item, attr_vehicle_width, &attr))
- data.size_weight.width=attr.u.num;
- else
- data.size_weight.width=-1;
- if (item_attr_get(item, attr_vehicle_height, &attr))
- data.size_weight.height=attr.u.num;
- else
- data.size_weight.height=-1;
- if (item_attr_get(item, attr_vehicle_length, &attr))
- data.size_weight.length=attr.u.num;
- else
- data.size_weight.length=-1;
- if (item_attr_get(item, attr_vehicle_weight, &attr))
- data.size_weight.weight=attr.u.num;
- else
- data.size_weight.weight=-1;
- if (item_attr_get(item, attr_vehicle_axle_weight, &attr))
- data.size_weight.axle_weight=attr.u.num;
- else
- data.size_weight.axle_weight=-1;
- }
-
- s_pnt=route_graph_add_point(this,&l);
- if (!segmented) {
- while (item_coord_get(item, &c, 1)) {
- len+=transform_distance(map_projection(item->map), &l, &c);
- l=c;
- }
- e_pnt=route_graph_add_point(this,&l);
- dbg_assert(len >= 0);
- data.len=len;
- if (!route_graph_segment_is_duplicate(s_pnt, &data))
- route_graph_add_segment(this, s_pnt, e_pnt, &data);
- } else {
- int isseg,rc;
- int sc = 0;
- do {
- isseg = item_coord_is_node(item);
- rc = item_coord_get(item, &c, 1);
- if (rc) {
- len+=transform_distance(map_projection(item->map), &l, &c);
- l=c;
- if (isseg) {
- e_pnt=route_graph_add_point(this,&l);
- data.len=len;
- if (!route_graph_segment_is_duplicate(s_pnt, &data))
- route_graph_add_segment(this, s_pnt, e_pnt, &data);
- data.offset++;
- s_pnt=route_graph_add_point(this,&l);
- len = 0;
- }
- }
- } while(rc);
- e_pnt=route_graph_add_point(this,&l);
- dbg_assert(len >= 0);
- sc++;
- data.len=len;
- if (!route_graph_segment_is_duplicate(s_pnt, &data))
- route_graph_add_segment(this, s_pnt, e_pnt, &data);
- }
- }
-}
-
-/**
- * @brief Gets the next route_graph_segment belonging to the specified street
- *
- * @param graph The route graph in which to search
- * @param sd The street to search for
- * @param last The last route graph segment returned to iterate over multiple segments of the same
- * item. If {@code NULL}, the first matching segment will be returned.
- *
- * @return The route graph segment, or {@code NULL} if none was found.
- */
-static struct route_graph_segment *
-route_graph_get_segment(struct route_graph *graph, struct street_data *sd, struct route_graph_segment *last)
-{
- struct route_graph_point *start=NULL;
- struct route_graph_segment *s;
- int seen=0;
-
- while ((start=route_graph_get_point_next(graph, &sd->c[0], start))) {
- s=start->start;
- while (s) {
- if (item_is_equal(sd->item, s->data.item)) {
- if (!last || seen)
- return s;
- if (last == s)
- seen=1;
- }
- s=s->start_next;
- }
- }
- return NULL;
-}
-
-/**
- * @brief Calculates the routing costs for each point
- *
- * This function is the heart of routing. It assigns each point in the route graph a
- * cost at which one can reach the destination from this point on. Additionally it assigns
- * each point a segment one should follow from this point on to reach the destination at the
- * stated costs.
- *
- * This function uses Dijkstra's algorithm to do the routing. To understand it you should have a look
- * at this algorithm.
- *
- * References to elements of the route graph which were obtained prior to calling this function
- * remain valid after it returns.
- *
- * @param this_ The route graph to flood
- * @param dst The destination of the route
- * @param profile The vehicle profile to use for routing. This determines which ways are passable
- * and how their costs are calculated.
- * @param cb The callback function to call when flooding is complete
- */
-static void
-route_graph_flood(struct route_graph *this, struct route_info *dst, struct vehicleprofile *profile, struct callback *cb)
-{
- struct route_graph_point *p_min;
- struct route_graph_segment *s=NULL;
- int min,new,val;
- struct fibheap *heap; /* This heap will hold all points with "temporarily" calculated costs */
-
- heap = fh_makekeyheap();
-
- while ((s=route_graph_get_segment(this, dst->street, s))) {
- val=route_value_seg(profile, NULL, s, -1);
- if (val != INT_MAX) {
- val=val*(100-dst->percent)/100;
- s->end->seg=s;
- s->end->value=val;
- s->end->el=fh_insertkey(heap, s->end->value, s->end);
- }
- val=route_value_seg(profile, NULL, s, 1);
- if (val != INT_MAX) {
- val=val*dst->percent/100;
- s->start->seg=s;
- s->start->value=val;
- s->start->el=fh_insertkey(heap, s->start->value, s->start);
- }
- }
- for (;;) {
- p_min=fh_extractmin(heap); /* Starting Dijkstra by selecting the point with the minimum costs on the heap */
- if (! p_min) /* There are no more points with temporarily calculated costs, Dijkstra has finished */
- break;
- min=p_min->value;
- if (debug_route)
- printf("extract p=%p free el=%p min=%d, 0x%x, 0x%x\n", p_min, p_min->el, min, p_min->c.x, p_min->c.y);
- p_min->el=NULL; /* This point is permanently calculated now, we've taken it out of the heap */
- s=p_min->start;
- while (s) { /* Iterating all the segments leading away from our point to update the points at their ends */
- val=route_value_seg(profile, p_min, s, -1);
- if (val != INT_MAX && item_is_equal(s->data.item,p_min->seg->data.item)) {
- if (profile->turn_around_penalty2)
- val+=profile->turn_around_penalty2;
- else
- val=INT_MAX;
- }
- if (val != INT_MAX) {
- new=min+val;
- if (debug_route)
- printf("begin %d len %d vs %d (0x%x,0x%x)\n",new,val,s->end->value, s->end->c.x, s->end->c.y);
- if (new < s->end->value) { /* We've found a less costly way to reach the end of s, update it */
- s->end->value=new;
- s->end->seg=s;
- if (! s->end->el) {
- if (debug_route)
- printf("insert_end p=%p el=%p val=%d ", s->end, s->end->el, s->end->value);
- s->end->el=fh_insertkey(heap, new, s->end);
- if (debug_route)
- printf("el new=%p\n", s->end->el);
- }
- else {
- if (debug_route)
- printf("replace_end p=%p el=%p val=%d\n", s->end, s->end->el, s->end->value);
- fh_replacekey(heap, s->end->el, new);
- }
- }
- if (debug_route)
- printf("\n");
- }
- s=s->start_next;
- }
- s=p_min->end;
- while (s) { /* Doing the same as above with the segments leading towards our point */
- val=route_value_seg(profile, p_min, s, 1);
- if (val != INT_MAX && item_is_equal(s->data.item,p_min->seg->data.item)) {
- if (profile->turn_around_penalty2)
- val+=profile->turn_around_penalty2;
- else
- val=INT_MAX;
- }
- if (val != INT_MAX) {
- new=min+val;
- if (debug_route)
- printf("end %d len %d vs %d (0x%x,0x%x)\n",new,val,s->start->value,s->start->c.x, s->start->c.y);
- if (new < s->start->value) {
- s->start->value=new;
- s->start->seg=s;
- if (! s->start->el) {
- if (debug_route)
- printf("insert_start p=%p el=%p val=%d ", s->start, s->start->el, s->start->value);
- s->start->el=fh_insertkey(heap, new, s->start);
- if (debug_route)
- printf("el new=%p\n", s->start->el);
- }
- else {
- if (debug_route)
- printf("replace_start p=%p el=%p val=%d\n", s->start, s->start->el, s->start->value);
- fh_replacekey(heap, s->start->el, new);
- }
- }
- if (debug_route)
- printf("\n");
- }
- s=s->end_next;
- }
- }
- fh_deleteheap(heap);
- callback_call_0(cb);
- dbg(lvl_debug,"return\n");
-}
-
-/**
- * @brief Starts an "offroad" path
- *
- * This starts a path that is not located on a street. It creates a new route path
- * adding only one segment, that leads from pos to dest, and which is not associated with an item.
- *
- * @param this Not used
- * @param pos The starting position for the new path
- * @param dst The destination of the new path
- * @param dir Not used
- * @return The new path
- */
-static struct route_path *
-route_path_new_offroad(struct route_graph *this, struct route_info *pos, struct route_info *dst)
-{
- struct route_path *ret;
-
- ret=g_new0(struct route_path, 1);
- ret->in_use=1;
- ret->path_hash=item_hash_new();
- route_path_add_line(ret, &pos->c, &dst->c, pos->lenextra+dst->lenextra);
- ret->updated=1;
-
- return ret;
-}
-
-/**
- * @brief Returns a coordinate at a given distance
- *
- * This function returns the coordinate, where the user will be if he
- * follows the current route for a certain distance.
- *
- * @param this_ The route we're driving upon
- * @param dist The distance in meters
- * @return The coordinate where the user will be in that distance
- */
-struct coord
-route_get_coord_dist(struct route *this_, int dist)
-{
- int d,l,i,len;
- int dx,dy;
- double frac;
- struct route_path_segment *cur;
- struct coord ret;
- enum projection pro=route_projection(this_);
- struct route_info *dst=route_get_dst(this_);
-
- d = dist;
-
- if (!this_->path2 || pro == projection_none) {
- return this_->pos->c;
- }
-
- ret = this_->pos->c;
- cur = this_->path2->path;
- while (cur) {
- if (cur->data->len < d) {
- d -= cur->data->len;
- } else {
- for (i=0; i < (cur->ncoords-1); i++) {
- l = d;
- len = (int)transform_polyline_length(pro, (cur->c + i), 2);
- d -= len;
- if (d <= 0) {
- // We interpolate a bit here...
- frac = (double)l / len;
-
- dx = (cur->c + i + 1)->x - (cur->c + i)->x;
- dy = (cur->c + i + 1)->y - (cur->c + i)->y;
-
- ret.x = (cur->c + i)->x + (frac * dx);
- ret.y = (cur->c + i)->y + (frac * dy);
- return ret;
- }
- }
- return cur->c[(cur->ncoords-1)];
- }
- cur = cur->next;
- }
-
- return dst->c;
-}
-
-/**
- * @brief Creates a new route path
- *
- * This creates a new non-trivial route. It therefore needs the routing information created by route_graph_flood, so
- * make sure to run route_graph_flood() after changing the destination before using this function.
- *
- * @param this The route graph to create the route from
- * @param oldpath (Optional) old path which may contain parts of the new part - this speeds things up a bit. May be NULL.
- * @param pos The starting position of the route
- * @param dst The destination of the route
- * @param preferences The routing preferences
- * @return The new route path
- */
-static struct route_path *
-route_path_new(struct route_graph *this, struct route_path *oldpath, struct route_info *pos, struct route_info *dst, struct vehicleprofile *profile)
-{
- struct route_graph_segment *s=NULL,*s1=NULL,*s2=NULL; /* candidate segments for cheapest path */
- struct route_graph_point *start; /* point at which the next segment starts, i.e. up to which the path is complete */
- struct route_info *posinfo, *dstinfo; /* same as pos and dst, but NULL if not part of current segment */
- int segs=0,dir; /* number of segments added to graph, direction of first segment */
- int val1=INT_MAX,val2=INT_MAX; /* total cost for s1 and s2, respectively */
- int val,val1_new,val2_new;
- struct route_path *ret;
-
- if (! pos->street || ! dst->street) {
- dbg(lvl_error,"pos or dest not set\n");
- return NULL;
- }
-
- if (profile->mode == 2 || (profile->mode == 0 && pos->lenextra + dst->lenextra > transform_distance(map_projection(pos->street->item.map), &pos->c, &dst->c)))
- return route_path_new_offroad(this, pos, dst);
- while ((s=route_graph_get_segment(this, pos->street, s))) {
- val=route_value_seg(profile, NULL, s, 2);
- if (val != INT_MAX && s->end->value != INT_MAX) {
- val=val*(100-pos->percent)/100;
- dbg(lvl_debug,"val1 %d\n",val);
- if (route_graph_segment_match(s,this->avoid_seg) && pos->street_direction < 0)
- val+=profile->turn_around_penalty;
- dbg(lvl_debug,"val1 %d\n",val);
- val1_new=s->end->value+val;
- dbg(lvl_debug,"val1 +%d=%d\n",s->end->value,val1_new);
- if (val1_new < val1) {
- val1=val1_new;
- s1=s;
- }
- }
- val=route_value_seg(profile, NULL, s, -2);
- if (val != INT_MAX && s->start->value != INT_MAX) {
- val=val*pos->percent/100;
- dbg(lvl_debug,"val2 %d\n",val);
- if (route_graph_segment_match(s,this->avoid_seg) && pos->street_direction > 0)
- val+=profile->turn_around_penalty;
- dbg(lvl_debug,"val2 %d\n",val);
- val2_new=s->start->value+val;
- dbg(lvl_debug,"val2 +%d=%d\n",s->start->value,val2_new);
- if (val2_new < val2) {
- val2=val2_new;
- s2=s;
- }
- }
- }
- if (val1 == INT_MAX && val2 == INT_MAX) {
- dbg(lvl_error,"no route found, pos blocked\n");
- return NULL;
- }
- if (val1 == val2) {
- val1=s1->end->value;
- val2=s2->start->value;
- }
- if (val1 < val2) {
- start=s1->start;
- s=s1;
- dir=1;
- } else {
- start=s2->end;
- s=s2;
- dir=-1;
- }
- if (pos->street_direction && dir != pos->street_direction && profile->turn_around_penalty) {
- if (!route_graph_segment_match(this->avoid_seg,s)) {
- dbg(lvl_debug,"avoid current segment\n");
- if (this->avoid_seg)
- route_graph_set_traffic_distortion(this, this->avoid_seg, 0);
- this->avoid_seg=s;
- route_graph_set_traffic_distortion(this, this->avoid_seg, profile->turn_around_penalty);
- route_graph_reset(this);
- route_graph_flood(this, dst, profile, NULL);
- return route_path_new(this, oldpath, pos, dst, profile);
- }
- }
- ret=g_new0(struct route_path, 1);
- ret->in_use=1;
- ret->updated=1;
- if (pos->lenextra)
- route_path_add_line(ret, &pos->c, &pos->lp, pos->lenextra);
- ret->path_hash=item_hash_new();
- dstinfo=NULL;
- posinfo=pos;
- while (s && !dstinfo) { /* following start->seg, which indicates the least costly way to reach our destination */
- segs++;
-#if 0
- printf("start->value=%d 0x%x,0x%x\n", start->value, start->c.x, start->c.y);
-#endif
- if (s->start == start) {
- if (item_is_equal(s->data.item, dst->street->item) && (s->end->seg == s || !posinfo))
- dstinfo=dst;
- if (!route_path_add_item_from_graph(ret, oldpath, s, 1, posinfo, dstinfo))
- ret->updated=0;
- start=s->end;
- } else {
- if (item_is_equal(s->data.item, dst->street->item) && (s->start->seg == s || !posinfo))
- dstinfo=dst;
- if (!route_path_add_item_from_graph(ret, oldpath, s, -1, posinfo, dstinfo))
- ret->updated=0;
- start=s->start;
- }
- posinfo=NULL;
- s=start->seg;
- }
- if (dst->lenextra)
- route_path_add_line(ret, &dst->lp, &dst->c, dst->lenextra);
- dbg(lvl_debug, "%d segments\n", segs);
- return ret;
-}
-
-static int
-route_graph_build_next_map(struct route_graph *rg)
-{
- do {
- rg->m=mapset_next(rg->h, 2);
- if (! rg->m)
- return 0;
- map_rect_destroy(rg->mr);
- rg->mr=map_rect_new(rg->m, rg->sel);
- } while (!rg->mr);
-
- return 1;
-}
-
-
-static int
-is_turn_allowed(struct route_graph_point *p, struct route_graph_segment *from, struct route_graph_segment *to)
-{
- struct route_graph_point *prev,*next;
- struct route_graph_segment *tmp1,*tmp2;
- if (item_is_equal(from->data.item, to->data.item))
- return 0;
- if (from->start == p)
- prev=from->end;
- else
- prev=from->start;
- if (to->start == p)
- next=to->end;
- else
- next=to->start;
- tmp1=p->end;
- while (tmp1) {
- if (tmp1->start->c.x == prev->c.x && tmp1->start->c.y == prev->c.y &&
- (tmp1->data.item.type == type_street_turn_restriction_no ||
- tmp1->data.item.type == type_street_turn_restriction_only)) {
- tmp2=p->start;
- dbg(lvl_debug,"found %s (0x%x,0x%x) (0x%x,0x%x)-(0x%x,0x%x) %p-%p\n",item_to_name(tmp1->data.item.type),tmp1->data.item.id_hi,tmp1->data.item.id_lo,tmp1->start->c.x,tmp1->start->c.y,tmp1->end->c.x,tmp1->end->c.y,tmp1->start,tmp1->end);
- while (tmp2) {
- dbg(lvl_debug,"compare %s (0x%x,0x%x) (0x%x,0x%x)-(0x%x,0x%x) %p-%p\n",item_to_name(tmp2->data.item.type),tmp2->data.item.id_hi,tmp2->data.item.id_lo,tmp2->start->c.x,tmp2->start->c.y,tmp2->end->c.x,tmp2->end->c.y,tmp2->start,tmp2->end);
- if (item_is_equal(tmp1->data.item, tmp2->data.item))
- break;
- tmp2=tmp2->start_next;
- }
- dbg(lvl_debug,"tmp2=%p\n",tmp2);
- if (tmp2) {
- dbg(lvl_debug,"%s tmp2->end=%p next=%p\n",item_to_name(tmp1->data.item.type),tmp2->end,next);
- }
- if (tmp1->data.item.type == type_street_turn_restriction_no && tmp2 && tmp2->end->c.x == next->c.x && tmp2->end->c.y == next->c.y) {
- dbg(lvl_debug,"from 0x%x,0x%x over 0x%x,0x%x to 0x%x,0x%x not allowed (no)\n",prev->c.x,prev->c.y,p->c.x,p->c.y,next->c.x,next->c.y);
- return 0;
- }
- if (tmp1->data.item.type == type_street_turn_restriction_only && tmp2 && (tmp2->end->c.x != next->c.x || tmp2->end->c.y != next->c.y)) {
- dbg(lvl_debug,"from 0x%x,0x%x over 0x%x,0x%x to 0x%x,0x%x not allowed (only)\n",prev->c.x,prev->c.y,p->c.x,p->c.y,next->c.x,next->c.y);
- return 0;
- }
- }
- tmp1=tmp1->end_next;
- }
- dbg(lvl_debug,"from 0x%x,0x%x over 0x%x,0x%x to 0x%x,0x%x allowed\n",prev->c.x,prev->c.y,p->c.x,p->c.y,next->c.x,next->c.y);
- return 1;
-}
-
-static void
-route_graph_clone_segment(struct route_graph *this, struct route_graph_segment *s, struct route_graph_point *start, struct route_graph_point *end, int flags)
-{
- struct route_graph_segment_data data;
- data.item=&s->data.item;
- data.offset=1;
- data.flags=s->data.flags|flags;
- data.len=s->data.len+1;
- data.maxspeed=-1;
- data.dangerous_goods=0;
- if (s->data.flags & AF_SPEED_LIMIT)
- data.maxspeed=RSD_MAXSPEED(&s->data);
- if (s->data.flags & AF_SEGMENTED)
- data.offset=RSD_OFFSET(&s->data);
- dbg(lvl_debug,"cloning segment from %p (0x%x,0x%x) to %p (0x%x,0x%x)\n",start,start->c.x,start->c.y, end, end->c.x, end->c.y);
- route_graph_add_segment(this, start, end, &data);
-}
-
-static void
-route_graph_process_restriction_segment(struct route_graph *this, struct route_graph_point *p, struct route_graph_segment *s, int dir)
-{
- struct route_graph_segment *tmp;
- struct route_graph_point *pn;
- struct coord c=p->c;
- int dx=0;
- int dy=0;
- c.x+=dx;
- c.y+=dy;
- dbg(lvl_debug,"From %s %d,%d\n",item_to_name(s->data.item.type),dx,dy);
- pn=route_graph_point_new(this, &c);
- if (dir > 0) { /* going away */
- dbg(lvl_debug,"other 0x%x,0x%x\n",s->end->c.x,s->end->c.y);
- if (s->data.flags & AF_ONEWAY) {
- dbg(lvl_debug,"Not possible\n");
- return;
- }
- route_graph_clone_segment(this, s, pn, s->end, AF_ONEWAYREV);
- } else { /* coming in */
- dbg(lvl_debug,"other 0x%x,0x%x\n",s->start->c.x,s->start->c.y);
- if (s->data.flags & AF_ONEWAYREV) {
- dbg(lvl_debug,"Not possible\n");
- return;
- }
- route_graph_clone_segment(this, s, s->start, pn, AF_ONEWAY);
- }
- tmp=p->start;
- while (tmp) {
- if (tmp != s && tmp->data.item.type != type_street_turn_restriction_no &&
- tmp->data.item.type != type_street_turn_restriction_only &&
- !(tmp->data.flags & AF_ONEWAYREV) && is_turn_allowed(p, s, tmp)) {
- route_graph_clone_segment(this, tmp, pn, tmp->end, AF_ONEWAY);
- dbg(lvl_debug,"To start %s\n",item_to_name(tmp->data.item.type));
- }
- tmp=tmp->start_next;
- }
- tmp=p->end;
- while (tmp) {
- if (tmp != s && tmp->data.item.type != type_street_turn_restriction_no &&
- tmp->data.item.type != type_street_turn_restriction_only &&
- !(tmp->data.flags & AF_ONEWAY) && is_turn_allowed(p, s, tmp)) {
- route_graph_clone_segment(this, tmp, tmp->start, pn, AF_ONEWAYREV);
- dbg(lvl_debug,"To end %s\n",item_to_name(tmp->data.item.type));
- }
- tmp=tmp->end_next;
- }
-}
-
-static void
-route_graph_process_restriction_point(struct route_graph *this, struct route_graph_point *p)
-{
- struct route_graph_segment *tmp;
- tmp=p->start;
- dbg(lvl_debug,"node 0x%x,0x%x\n",p->c.x,p->c.y);
- while (tmp) {
- if (tmp->data.item.type != type_street_turn_restriction_no &&
- tmp->data.item.type != type_street_turn_restriction_only)
- route_graph_process_restriction_segment(this, p, tmp, 1);
- tmp=tmp->start_next;
- }
- tmp=p->end;
- while (tmp) {
- if (tmp->data.item.type != type_street_turn_restriction_no &&
- tmp->data.item.type != type_street_turn_restriction_only)
- route_graph_process_restriction_segment(this, p, tmp, -1);
- tmp=tmp->end_next;
- }
- p->flags |= RP_TURN_RESTRICTION_RESOLVED;
-}
-
-static void
-route_graph_process_restrictions(struct route_graph *this)
-{
- struct route_graph_point *curr;
- int i;
- dbg(lvl_debug,"enter\n");
- for (i = 0 ; i < HASH_SIZE ; i++) {
- curr=this->hash[i];
- while (curr) {
- if (curr->flags & RP_TURN_RESTRICTION)
- route_graph_process_restriction_point(this, curr);
- curr=curr->hash_next;
- }
- }
-}
-
-/**
- * @brief Releases all resources needed to build the route graph.
- *
- * If {@code cancel} is false, this function will start processing restrictions and ultimately call
- * the route graph's {@code done_cb} callback.
- *
- * @param rg Points to the route graph
- * @param cancel True if the process was aborted before completing, false if it completed normally
- */
-static void
-route_graph_build_done(struct route_graph *rg, int cancel)
-{
- dbg(lvl_debug,"cancel=%d\n",cancel);
- if (rg->idle_ev)
- event_remove_idle(rg->idle_ev);
- if (rg->idle_cb)
- callback_destroy(rg->idle_cb);
- map_rect_destroy(rg->mr);
- mapset_close(rg->h);
- route_free_selection(rg->sel);
- rg->idle_ev=NULL;
- rg->idle_cb=NULL;
- rg->mr=NULL;
- rg->h=NULL;
- rg->sel=NULL;
- if (! cancel) {
- route_graph_process_restrictions(rg);
- callback_call_0(rg->done_cb);
- }
- rg->busy=0;
-}
-
-static void
-route_graph_build_idle(struct route_graph *rg, struct vehicleprofile *profile)
-{
- int count=1000;
- struct item *item;
-
- while (count > 0) {
- for (;;) {
- item=map_rect_get_item(rg->mr);
- if (item)
- break;
- if (!route_graph_build_next_map(rg)) {
- route_graph_build_done(rg, 0);
- return;
- }
- }
- if (item->type == type_traffic_distortion)
- route_process_traffic_distortion(rg, item);
- else if (item->type == type_street_turn_restriction_no || item->type == type_street_turn_restriction_only)
- route_process_turn_restriction(rg, item);
- else
- route_process_street_graph(rg, item, profile);
- count--;
- }
-}
-
-/**
- * @brief Builds a new route graph from a mapset
- *
- * This function builds a new route graph from a map. Please note that this function does not
- * add any routing information to the route graph - this has to be done via the route_graph_flood()
- * function.
- *
- * The function does not create a graph covering the whole map, but only covering the rectangle
- * between c1 and c2.
- *
- * @param ms The mapset to build the route graph from
- * @param c The coordinates of the destination or next waypoint
- * @param c1 Corner 1 of the rectangle to use from the map
- * @param c2 Corner 2 of the rectangle to use from the map
- * @param done_cb The callback which will be called when graph is complete
- * @return The new route graph.
- */
-// FIXME documentation does not match argument list
-static struct route_graph *
-route_graph_build(struct mapset *ms, struct coord *c, int count, struct callback *done_cb, int async, struct vehicleprofile *profile)
-{
- struct route_graph *ret=g_new0(struct route_graph, 1);
-
- dbg(lvl_debug,"enter\n");
-
- ret->sel=route_calc_selection(c, count, profile);
- ret->h=mapset_open(ms);
- ret->done_cb=done_cb;
- ret->busy=1;
- if (route_graph_build_next_map(ret)) {
- if (async) {
- ret->idle_cb=callback_new_2(callback_cast(route_graph_build_idle), ret, profile);
- ret->idle_ev=event_add_idle(50, ret->idle_cb);
- }
- } else
- route_graph_build_done(ret, 0);
-
- return ret;
-}
-
-static void
-route_graph_update_done(struct route *this, struct callback *cb)
-{
- route_graph_flood(this->graph, this->current_dst, this->vehicleprofile, cb);
-}
-
-/**
- * @brief Updates the route graph
- *
- * This updates the route graph after settings in the route have changed. It also
- * adds routing information afterwards by calling route_graph_flood().
- *
- * @param this The route to update the graph for
- * @param cb The callback function to call when the route graph update is complete (used only in asynchronous mode)
- * @param async Set to nonzero in order to update the route graph asynchronously
- */
-static void
-route_graph_update(struct route *this, struct callback *cb, int async)
-{
- struct attr route_status;
- struct coord *c=g_alloca(sizeof(struct coord)*(1+g_list_length(this->destinations)));
- int i=0;
- GList *tmp;
-
- route_status.type=attr_route_status;
- route_graph_destroy(this->graph);
- this->graph=NULL;
- callback_destroy(this->route_graph_done_cb);
- this->route_graph_done_cb=callback_new_2(callback_cast(route_graph_update_done), this, cb);
- route_status.u.num=route_status_building_graph;
- route_set_attr(this, &route_status);
- c[i++]=this->pos->c;
- tmp=this->destinations;
- while (tmp) {
- struct route_info *dst=tmp->data;
- c[i++]=dst->c;
- tmp=g_list_next(tmp);
- }
- this->graph=route_graph_build(this->ms, c, i, this->route_graph_done_cb, async, this->vehicleprofile);
- if (! async) {
- while (this->graph->busy)
- route_graph_build_idle(this->graph, this->vehicleprofile);
- }
-}
-
-/**
- * @brief Gets street data for an item
- *
- * @param item The item to get the data for
- * @return Street data for the item
- */
-struct street_data *
-street_get_data (struct item *item)
-{
- int count=0,*flags;
- struct street_data *ret = NULL, *ret1;
- struct attr flags_attr, maxspeed_attr;
- const int step = 128;
- int c;
-
- do {
- ret1=g_realloc(ret, sizeof(struct street_data)+(count+step)*sizeof(struct coord));
- if (!ret1) {
- if (ret)
- g_free(ret);
- return NULL;
- }
- ret = ret1;
- c = item_coord_get(item, &ret->c[count], step);
- count += c;
- } while (c && c == step);
-
- ret1=g_realloc(ret, sizeof(struct street_data)+count*sizeof(struct coord));
- if (ret1)
- ret = ret1;
- ret->item=*item;
- ret->count=count;
- if (item_attr_get(item, attr_flags, &flags_attr))
- ret->flags=flags_attr.u.num;
- else {
- flags=item_get_default_flags(item->type);
- if (flags)
- ret->flags=*flags;
- else
- ret->flags=0;
- }
-
- ret->maxspeed = -1;
- if (ret->flags & AF_SPEED_LIMIT) {
- if (item_attr_get(item, attr_maxspeed, &maxspeed_attr)) {
- ret->maxspeed = maxspeed_attr.u.num;
- }
- }
-
- return ret;
-}
-
-/**
- * @brief Copies street data
- *
- * @param orig The street data to copy
- * @return The copied street data
- */
-struct street_data *
-street_data_dup(struct street_data *orig)
-{
- struct street_data *ret;
- int size=sizeof(struct street_data)+orig->count*sizeof(struct coord);
-
- ret=g_malloc(size);
- memcpy(ret, orig, size);
-
- return ret;
-}
-
-/**
- * @brief Frees street data
- *
- * @param sd Street data to be freed
- */
-void
-street_data_free(struct street_data *sd)
-{
- g_free(sd);
-}
-
-/**
- * @brief Finds the nearest street to a given coordinate
- *
- * @param ms The mapset to search in for the street
- * @param pc The coordinate to find a street nearby
- * @return The nearest street
- */
-static struct route_info *
-route_find_nearest_street(struct vehicleprofile *vehicleprofile, struct mapset *ms, struct pcoord *pc)
-{
- struct route_info *ret=NULL;
- int max_dist=1000;
- struct map_selection *sel;
- int dist,mindist=0,pos;
- struct mapset_handle *h;
- struct map *m;
- struct map_rect *mr;
- struct item *item;
- struct coord lp;
- struct street_data *sd;
- struct coord c;
- struct coord_geo g;
-
- if(!vehicleprofile)
- return NULL;
-
- ret=g_new0(struct route_info, 1);
- mindist = INT_MAX;
-
- h=mapset_open(ms);
- while ((m=mapset_next(h,2))) {
- c.x = pc->x;
- c.y = pc->y;
- if (map_projection(m) != pc->pro) {
- transform_to_geo(pc->pro, &c, &g);
- transform_from_geo(map_projection(m), &g, &c);
- }
- sel = route_rect(18, &c, &c, 0, max_dist);
- if (!sel)
- continue;
- mr=map_rect_new(m, sel);
- if (!mr) {
- map_selection_destroy(sel);
- continue;
- }
- while ((item=map_rect_get_item(mr))) {
- if (item_get_default_flags(item->type)) {
- sd=street_get_data(item);
- if (!sd)
- continue;
- dist=transform_distance_polyline_sq(sd->c, sd->count, &c, &lp, &pos);
- if (dist < mindist && (
- (sd->flags & vehicleprofile->flags_forward_mask) == vehicleprofile->flags ||
- (sd->flags & vehicleprofile->flags_reverse_mask) == vehicleprofile->flags)) {
- mindist = dist;
- if (ret->street) {
- street_data_free(ret->street);
- }
- ret->c=c;
- ret->lp=lp;
- ret->pos=pos;
- ret->street=sd;
- dbg(lvl_debug,"dist=%d id 0x%x 0x%x pos=%d\n", dist, item->id_hi, item->id_lo, pos);
- } else {
- street_data_free(sd);
- }
- }
- }
- map_selection_destroy(sel);
- map_rect_destroy(mr);
- }
- mapset_close(h);
-
- if (!ret->street || mindist > max_dist*max_dist) {
- if (ret->street) {
- street_data_free(ret->street);
- dbg(lvl_debug,"Much too far %d > %d\n", mindist, max_dist);
- }
- g_free(ret);
- ret = NULL;
- }
-
- return ret;
-}
-
-/**
- * @brief Destroys a route_info
- *
- * @param info The route info to be destroyed
- */
-void
-route_info_free(struct route_info *inf)
-{
- if (!inf)
- return;
- if (inf->street)
- street_data_free(inf->street);
- g_free(inf);
-}
-
-
-#include "point.h"
-
-/**
- * @brief Returns street data for a route info
- *
- * @param rinf The route info to return the street data for
- * @return Street data for the route info
- */
-struct street_data *
-route_info_street(struct route_info *rinf)
-{
- return rinf->street;
-}
-
-#if 0
-struct route_crossings *
-route_crossings_get(struct route *this, struct coord *c)
-{
- struct route_point *pnt;
- struct route_segment *seg;
- int crossings=0;
- struct route_crossings *ret;
-
- pnt=route_graph_get_point(this, c);
- seg=pnt->start;
- while (seg) {
- printf("start: 0x%x 0x%x\n", seg->item.id_hi, seg->item.id_lo);
- crossings++;
- seg=seg->start_next;
- }
- seg=pnt->end;
- while (seg) {
- printf("end: 0x%x 0x%x\n", seg->item.id_hi, seg->item.id_lo);
- crossings++;
- seg=seg->end_next;
- }
- ret=g_malloc(sizeof(struct route_crossings)+crossings*sizeof(struct route_crossing));
- ret->count=crossings;
- return ret;
-}
-#endif
-
-
-struct map_rect_priv {
- struct route_info_handle *ri;
- enum attr_type attr_next;
- int pos;
- struct map_priv *mpriv;
- struct item item;
- unsigned int last_coord;
- struct route_path *path;
- struct route_path_segment *seg,*seg_next;
- struct route_graph_point *point;
- struct route_graph_segment *rseg;
- char *str;
- int hash_bucket;
- struct coord *coord_sel; /**< Set this to a coordinate if you want to filter for just a single route graph point */
- struct route_graph_point_iterator it;
- /* Pointer to current waypoint element of route->destinations */
- GList *dest;
-};
-
-static void
-rm_coord_rewind(void *priv_data)
-{
- struct map_rect_priv *mr = priv_data;
- mr->last_coord = 0;
-}
-
-static void
-rm_attr_rewind(void *priv_data)
-{
- struct map_rect_priv *mr = priv_data;
- mr->attr_next = attr_street_item;
-}
-
-static int
-rm_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *mr = priv_data;
- struct route_path_segment *seg=mr->seg;
- struct route *route=mr->mpriv->route;
- if (mr->item.type != type_street_route && mr->item.type != type_waypoint && mr->item.type != type_route_end)
- return 0;
- attr->type=attr_type;
- switch (attr_type) {
- case attr_any:
- while (mr->attr_next != attr_none) {
- if (rm_attr_get(priv_data, mr->attr_next, attr))
- return 1;
- }
- return 0;
- case attr_maxspeed:
- mr->attr_next = attr_street_item;
- if (seg && seg->data->flags & AF_SPEED_LIMIT) {
- attr->u.num=RSD_MAXSPEED(seg->data);
-
- } else {
- return 0;
- }
- return 1;
- case attr_street_item:
- mr->attr_next=attr_direction;
- if (seg && seg->data->item.map)
- attr->u.item=&seg->data->item;
- else
- return 0;
- return 1;
- case attr_direction:
- mr->attr_next=attr_route;
- if (seg)
- attr->u.num=seg->direction;
- else
- return 0;
- return 1;
- case attr_route:
- mr->attr_next=attr_length;
- attr->u.route = mr->mpriv->route;
- return 1;
- case attr_length:
- mr->attr_next=attr_time;
- if (seg)
- attr->u.num=seg->data->len;
- else
- return 0;
- return 1;
- case attr_time:
- mr->attr_next=attr_speed;
- if (seg)
- attr->u.num=route_time_seg(route->vehicleprofile, seg->data, NULL);
- else
- return 0;
- return 1;
- case attr_speed:
- mr->attr_next=attr_label;
- if (seg)
- attr->u.num=route_seg_speed(route->vehicleprofile, seg->data, NULL);
- else
- return 0;
- return 1;
- case attr_label:
- mr->attr_next=attr_none;
- if(mr->item.type==type_waypoint || mr->item.type == type_route_end) {
- if(mr->str)
- g_free(mr->str);
- mr->str=g_strdup_printf("%d",route->reached_destinations_count+g_list_position(route->destinations,mr->dest)+1);
- attr->u.str=mr->str;
- return 1;
- }
- return 0;
- default:
- mr->attr_next=attr_none;
- attr->type=attr_none;
- return 0;
- }
- return 0;
-}
-
-static int
-rm_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *mr = priv_data;
- struct route_path_segment *seg = mr->seg;
- int i,rc=0;
- struct route *r = mr->mpriv->route;
- enum projection pro = route_projection(r);
-
- if (pro == projection_none)
- return 0;
- if (mr->item.type == type_route_start || mr->item.type == type_route_start_reverse || mr->item.type == type_route_end || mr->item.type == type_waypoint ) {
- if (! count || mr->last_coord)
- return 0;
- mr->last_coord=1;
- if (mr->item.type == type_route_start || mr->item.type == type_route_start_reverse)
- c[0]=r->pos->c;
- else if (mr->item.type == type_waypoint) {
- c[0]=((struct route_info *)mr->dest->data)->c;
- } else { /*type_route_end*/
- c[0]=route_get_dst(r)->c;
- }
- return 1;
- }
- if (! seg)
- return 0;
- for (i=0; i < count; i++) {
- if (mr->last_coord >= seg->ncoords)
- break;
- if (i >= seg->ncoords)
- break;
- if (pro != projection_mg)
- transform_from_to(&seg->c[mr->last_coord++], pro,
- &c[i],projection_mg);
- else
- c[i] = seg->c[mr->last_coord++];
- rc++;
- }
- dbg(lvl_debug,"return %d\n",rc);
- return rc;
-}
-
-static struct item_methods methods_route_item = {
- rm_coord_rewind,
- rm_coord_get,
- rm_attr_rewind,
- rm_attr_get,
-};
-
-static void
-rp_attr_rewind(void *priv_data)
-{
- struct map_rect_priv *mr = priv_data;
- mr->attr_next = attr_label;
-}
-
-static int
-rp_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *mr = priv_data;
- struct route_graph_point *p = mr->point;
- struct route_graph_segment *seg = mr->rseg;
- struct route *route=mr->mpriv->route;
-
- attr->type=attr_type;
- switch (attr_type) {
- case attr_any: // works only with rg_points for now
- while (mr->attr_next != attr_none) {
- dbg(lvl_debug,"querying %s\n", attr_to_name(mr->attr_next));
- if (rp_attr_get(priv_data, mr->attr_next, attr))
- return 1;
- }
- return 0;
- case attr_maxspeed:
- mr->attr_next = attr_label;
- if (mr->item.type != type_rg_segment)
- return 0;
- if (seg && (seg->data.flags & AF_SPEED_LIMIT)) {
- attr->type = attr_maxspeed;
- attr->u.num=RSD_MAXSPEED(&seg->data);
- return 1;
- } else {
- return 0;
- }
- case attr_label:
- mr->attr_next=attr_street_item;
- attr->type = attr_label;
- if (mr->str)
- g_free(mr->str);
- if (mr->item.type == type_rg_point) {
- if (p->value != INT_MAX)
- mr->str=g_strdup_printf("%d", p->value);
- else
- mr->str=g_strdup("-");
- } else {
- int len=seg->data.len;
- int speed=route_seg_speed(route->vehicleprofile, &seg->data, NULL);
- int time=route_time_seg(route->vehicleprofile, &seg->data, NULL);
- if (speed)
- mr->str=g_strdup_printf("%dm %dkm/h %d.%ds",len,speed,time/10,time%10);
- else if (len)
- mr->str=g_strdup_printf("%dm",len);
- else {
- mr->str=NULL;
- return 0;
- }
- }
- attr->u.str = mr->str;
- return 1;
- case attr_street_item:
- mr->attr_next=attr_flags;
- if (mr->item.type != type_rg_segment)
- return 0;
- if (seg && seg->data.item.map)
- attr->u.item=&seg->data.item;
- else
- return 0;
- return 1;
- case attr_flags:
- mr->attr_next = attr_direction;
- if (mr->item.type != type_rg_segment)
- return 0;
- if (seg) {
- attr->u.num = seg->data.flags;
- } else {
- return 0;
- }
- return 1;
- case attr_direction:
- mr->attr_next = attr_debug;
- // This only works if the map has been opened at a single point, and in that case indicates if the
- // segment returned last is connected to this point via its start (1) or its end (-1)
- if (!mr->coord_sel || (mr->item.type != type_rg_segment))
- return 0;
- if (seg->start == mr->point) {
- attr->u.num=1;
- } else if (seg->end == mr->point) {
- attr->u.num=-1;
- } else {
- return 0;
- }
- return 1;
- case attr_debug:
- mr->attr_next=attr_none;
- if (mr->str)
- g_free(mr->str);
- mr->str=NULL;
- switch (mr->item.type) {
- case type_rg_point:
- {
- struct route_graph_segment *tmp;
- int start=0;
- int end=0;
- tmp=p->start;
- while (tmp) {
- start++;
- tmp=tmp->start_next;
- }
- tmp=p->end;
- while (tmp) {
- end++;
- tmp=tmp->end_next;
- }
- mr->str=g_strdup_printf("%d %d %p (0x%x,0x%x)", start, end, p, p->c.x, p->c.y);
- attr->u.str = mr->str;
- }
- return 1;
- case type_rg_segment:
- if (! seg)
- return 0;
- mr->str=g_strdup_printf("len %d time %d start %p end %p",seg->data.len, route_time_seg(route->vehicleprofile, &seg->data, NULL), seg->start, seg->end);
- attr->u.str = mr->str;
- return 1;
- default:
- return 0;
- }
- default:
- mr->attr_next=attr_none;
- attr->type=attr_none;
- return 0;
- }
-}
-
-/**
- * @brief Returns the coordinates of a route graph item
- *
- * @param priv_data The route graph item's private data
- * @param c Pointer where to store the coordinates
- * @param count How many coordinates to get at a max?
- * @return The number of coordinates retrieved
- */
-static int
-rp_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *mr = priv_data;
- struct route_graph_point *p = mr->point;
- struct route_graph_segment *seg = mr->rseg;
- int rc = 0,i,dir;
- struct route *r = mr->mpriv->route;
- enum projection pro = route_projection(r);
-
- if (pro == projection_none)
- return 0;
- for (i=0; i < count; i++) {
- if (mr->item.type == type_rg_point) {
- if (mr->last_coord >= 1)
- break;
- if (pro != projection_mg)
- transform_from_to(&p->c, pro,
- &c[i],projection_mg);
- else
- c[i] = p->c;
- } else {
- if (mr->last_coord >= 2)
- break;
- dir=0;
- if (seg->end->seg == seg)
- dir=1;
- if (mr->last_coord)
- dir=1-dir;
- if (dir) {
- if (pro != projection_mg)
- transform_from_to(&seg->end->c, pro,
- &c[i],projection_mg);
- else
- c[i] = seg->end->c;
- } else {
- if (pro != projection_mg)
- transform_from_to(&seg->start->c, pro,
- &c[i],projection_mg);
- else
- c[i] = seg->start->c;
- }
- }
- mr->last_coord++;
- rc++;
- }
- return rc;
-}
-
-static struct item_methods methods_point_item = {
- rm_coord_rewind,
- rp_coord_get,
- rp_attr_rewind,
- rp_attr_get,
-};
-
-static void
-rp_destroy(struct map_priv *priv)
-{
- g_free(priv);
-}
-
-static void
-rm_destroy(struct map_priv *priv)
-{
- g_free(priv);
-}
-
-static struct map_rect_priv *
-rm_rect_new(struct map_priv *priv, struct map_selection *sel)
-{
- struct map_rect_priv * mr;
- dbg(lvl_debug,"enter\n");
-#if 0
- if (! route_get_pos(priv->route))
- return NULL;
- if (! route_get_dst(priv->route))
- return NULL;
-#endif
-#if 0
- if (! priv->route->path2)
- return NULL;
-#endif
- mr=g_new0(struct map_rect_priv, 1);
- mr->mpriv = priv;
- mr->item.priv_data = mr;
- mr->item.type = type_none;
- mr->item.meth = &methods_route_item;
- if (priv->route->path2) {
- mr->path=priv->route->path2;
- mr->seg_next=mr->path->path;
- mr->path->in_use++;
- } else
- mr->seg_next=NULL;
- return mr;
-}
-
-/**
- * @brief Opens a new map rectangle on the route graph's map
- *
- * This function opens a new map rectangle on the route graph's map.
- * The "sel" parameter enables you to only search for a single route graph
- * point on this map (or exactly: open a map rectangle that only contains
- * this one point). To do this, pass here a single map selection, whose
- * c_rect has both coordinates set to the same point. Otherwise this parameter
- * has no effect.
- *
- * @param priv The route graph map's private data
- * @param sel Here it's possible to specify a point for which to search. Please read the function's description.
- * @return A new map rect's private data
- */
-static struct map_rect_priv *
-rp_rect_new(struct map_priv *priv, struct map_selection *sel)
-{
- struct map_rect_priv * mr;
-
- dbg(lvl_debug,"enter\n");
- if (! priv->route->graph)
- return NULL;
- mr=g_new0(struct map_rect_priv, 1);
- mr->mpriv = priv;
- mr->item.priv_data = mr;
- mr->item.type = type_rg_point;
- mr->item.meth = &methods_point_item;
- if (sel) {
- if ((sel->u.c_rect.lu.x == sel->u.c_rect.rl.x) && (sel->u.c_rect.lu.y == sel->u.c_rect.rl.y)) {
- mr->coord_sel = g_malloc(sizeof(struct coord));
- *(mr->coord_sel) = sel->u.c_rect.lu;
- }
- }
- return mr;
-}
-
-static void
-rm_rect_destroy(struct map_rect_priv *mr)
-{
- if (mr->str)
- g_free(mr->str);
- if (mr->coord_sel) {
- g_free(mr->coord_sel);
- }
- if (mr->path) {
- mr->path->in_use--;
- if (mr->path->update_required && (mr->path->in_use==1) && (mr->mpriv->route->route_status & ~route_status_destination_set))
- route_path_update_done(mr->mpriv->route, mr->path->update_required-1);
- else if (!mr->path->in_use)
- g_free(mr->path);
- }
-
- g_free(mr);
-}
-
-static struct item *
-rp_get_item(struct map_rect_priv *mr)
-{
- struct route *r = mr->mpriv->route;
- struct route_graph_point *p = mr->point;
- struct route_graph_segment *seg = mr->rseg;
-
- if (mr->item.type == type_rg_point) {
- if (mr->coord_sel) {
- // We are supposed to return only the point at one specified coordinate...
- if (!p) {
- p = route_graph_get_point_last(r->graph, mr->coord_sel);
- if (!p) {
- mr->point = NULL; // This indicates that no point has been found
- } else {
- mr->it = rp_iterator_new(p);
- }
- } else {
- p = NULL;
- }
- } else {
- if (!p) {
- mr->hash_bucket=0;
- p = r->graph->hash[0];
- } else
- p=p->hash_next;
- while (!p) {
- mr->hash_bucket++;
- if (mr->hash_bucket >= HASH_SIZE)
- break;
- p = r->graph->hash[mr->hash_bucket];
- }
- }
- if (p) {
- mr->point = p;
- mr->item.id_lo++;
- rm_coord_rewind(mr);
- rp_attr_rewind(mr);
- return &mr->item;
- } else
- mr->item.type = type_rg_segment;
- }
-
-
- if (mr->coord_sel) {
- if (!mr->point) { /* This means that no point has been found */
- return NULL;
- }
- seg = rp_iterator_next(&(mr->it));
- } else {
- if (!seg)
- seg=r->graph->route_segments;
- else
- seg=seg->next;
- }
-
- if (seg) {
- mr->rseg = seg;
- mr->item.id_lo++;
- rm_coord_rewind(mr);
- rp_attr_rewind(mr);
- return &mr->item;
- }
- return NULL;
-
-}
-
-static struct item *
-rp_get_item_byid(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- struct item *ret=NULL;
- while (id_lo-- > 0)
- ret=rp_get_item(mr);
- return ret;
-}
-
-
-static struct item *
-rm_get_item(struct map_rect_priv *mr)
-{
- struct route *route=mr->mpriv->route;
- void *id=0;
-
- switch (mr->item.type) {
- case type_none:
- if (route->pos && route->pos->street_direction && route->pos->street_direction != route->pos->dir)
- mr->item.type=type_route_start_reverse;
- else
- mr->item.type=type_route_start;
- if (route->pos) {
- id=route->pos;
- break;
- }
-
- case type_route_start:
- case type_route_start_reverse:
- mr->seg=NULL;
- mr->dest=mr->mpriv->route->destinations;
- default:
- if (mr->item.type == type_waypoint)
- mr->dest=g_list_next(mr->dest);
- mr->item.type=type_street_route;
- mr->seg=mr->seg_next;
- if (!mr->seg && mr->path && mr->path->next) {
- struct route_path *p=NULL;
- mr->path->in_use--;
- if (!mr->path->in_use)
- p=mr->path;
- mr->path=mr->path->next;
- mr->path->in_use++;
- mr->seg=mr->path->path;
- if (p)
- g_free(p);
- if (mr->dest) {
- id=mr->dest;
- mr->item.type=type_waypoint;
- mr->seg_next=mr->seg;
- break;
- }
- }
- if (mr->seg) {
- mr->seg_next=mr->seg->next;
- id=mr->seg;
- break;
- }
- if (mr->dest && g_list_next(mr->dest)) {
- id=mr->dest;
- mr->item.type=type_waypoint;
- break;
- }
- mr->item.type=type_route_end;
- id=&(mr->mpriv->route->destinations);
- if (mr->mpriv->route->destinations)
- break;
- case type_route_end:
- return NULL;
- }
- mr->last_coord = 0;
- item_id_from_ptr(&mr->item,id);
- rm_attr_rewind(mr);
- return &mr->item;
-}
-
-static struct item *
-rm_get_item_byid(struct map_rect_priv *mr, int id_hi, int id_lo)
-{
- struct item *ret=NULL;
- do {
- ret=rm_get_item(mr);
- } while (ret && (ret->id_lo!=id_lo || ret->id_hi!=id_hi));
- return ret;
-}
-
-static struct map_methods route_meth = {
- projection_mg,
- "utf-8",
- rm_destroy,
- rm_rect_new,
- rm_rect_destroy,
- rm_get_item,
- rm_get_item_byid,
- NULL,
- NULL,
- NULL,
-};
-
-static struct map_methods route_graph_meth = {
- projection_mg,
- "utf-8",
- rp_destroy,
- rp_rect_new,
- rm_rect_destroy,
- rp_get_item,
- rp_get_item_byid,
- NULL,
- NULL,
- NULL,
-};
-
-static struct map_priv *
-route_map_new_helper(struct map_methods *meth, struct attr **attrs, int graph)
-{
- struct map_priv *ret;
- struct attr *route_attr;
-
- route_attr=attr_search(attrs, NULL, attr_route);
- if (! route_attr)
- return NULL;
- ret=g_new0(struct map_priv, 1);
- if (graph)
- *meth=route_graph_meth;
- else
- *meth=route_meth;
- ret->route=route_attr->u.route;
-
- return ret;
-}
-
-static struct map_priv *
-route_map_new(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- return route_map_new_helper(meth, attrs, 0);
-}
-
-static struct map_priv *
-route_graph_map_new(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- return route_map_new_helper(meth, attrs, 1);
-}
-
-static struct map *
-route_get_map_helper(struct route *this_, struct map **map, char *type, char *description)
-{
- struct attr *attrs[5];
- struct attr a_type,navigation,data,a_description;
- a_type.type=attr_type;
- a_type.u.str=type;
- navigation.type=attr_route;
- navigation.u.route=this_;
- data.type=attr_data;
- data.u.str="";
- a_description.type=attr_description;
- a_description.u.str=description;
-
- attrs[0]=&a_type;
- attrs[1]=&navigation;
- attrs[2]=&data;
- attrs[3]=&a_description;
- attrs[4]=NULL;
-
- if (! *map) {
- *map=map_new(NULL, attrs);
- navit_object_ref((struct navit_object *)*map);
- }
-
- return *map;
-}
-
-/**
- * @brief Returns a new map containing the route path
- *
- * This function returns a new map containing the route path.
- *
- * @important Do not map_destroy() this!
- *
- * @param this_ The route to get the map of
- * @return A new map containing the route path
- */
-struct map *
-route_get_map(struct route *this_)
-{
- return route_get_map_helper(this_, &this_->map, "route","Route");
-}
-
-
-/**
- * @brief Returns a new map containing the route graph
- *
- * This function returns a new map containing the route graph.
- *
- * @important Do not map_destroy() this!
- *
- * @param this_ The route to get the map of
- * @return A new map containing the route graph
- */
-struct map *
-route_get_graph_map(struct route *this_)
-{
- return route_get_map_helper(this_, &this_->graph_map, "route_graph","Route Graph");
-}
-
-
-/**
- * @brief Returns the flags for the route.
- */
-enum route_path_flags route_get_flags(struct route *this_) {
- return this_->flags;
-}
-
-/**
- * @brief Whether the route has a valid graph.
- *
- * @return True if the route has a graph, false if not.
- */
-int
-route_has_graph(struct route *this_) {
- return (this_->graph != NULL);
-}
-
-void
-route_set_projection(struct route *this_, enum projection pro)
-{
-}
-
-int
-route_set_attr(struct route *this_, struct attr *attr)
-{
- int attr_updated=0;
- switch (attr->type) {
- case attr_route_status:
- attr_updated = (this_->route_status != attr->u.num);
- this_->route_status = attr->u.num;
- break;
- case attr_destination:
- route_set_destination(this_, attr->u.pcoord, 1);
- return 1;
- case attr_position:
- route_set_position_flags(this_, attr->u.pcoord, route_path_flag_async);
- return 1;
- case attr_position_test:
- return route_set_position_flags(this_, attr->u.pcoord, route_path_flag_no_rebuild);
- case attr_vehicle:
- attr_updated = (this_->v != attr->u.vehicle);
- this_->v=attr->u.vehicle;
- if (attr_updated) {
- struct attr g;
- struct pcoord pc;
- struct coord c;
- if (vehicle_get_attr(this_->v, attr_position_coord_geo, &g, NULL)) {
- pc.pro=projection_mg;
- transform_from_geo(projection_mg, g.u.coord_geo, &c);
- pc.x=c.x;
- pc.y=c.y;
- route_set_position(this_, &pc);
- }
- }
- break;
- default:
- dbg(lvl_error,"unsupported attribute: %s\n",attr_to_name(attr->type));
- return 0;
- }
- if (attr_updated)
- callback_list_call_attr_2(this_->cbl2, attr->type, this_, attr);
- return 1;
-}
-
-int
-route_add_attr(struct route *this_, struct attr *attr)
-{
- switch (attr->type) {
- case attr_callback:
- callback_list_add(this_->cbl2, attr->u.callback);
- return 1;
- default:
- return 0;
- }
-}
-
-int
-route_remove_attr(struct route *this_, struct attr *attr)
-{
- dbg(lvl_debug,"enter\n");
- switch (attr->type) {
- case attr_callback:
- callback_list_remove(this_->cbl2, attr->u.callback);
- return 1;
- case attr_vehicle:
- this_->v=NULL;
- return 1;
- default:
- return 0;
- }
-}
-
-int
-route_get_attr(struct route *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- int ret=1;
- switch (type) {
- case attr_map:
- attr->u.map=route_get_map(this_);
- ret=(attr->u.map != NULL);
- break;
- case attr_destination:
- if (this_->destinations) {
- struct route_info *dst;
- if (iter) {
- if (iter->u.list) {
- iter->u.list=g_list_next(iter->u.list);
- } else {
- iter->u.list=this_->destinations;
- }
- if (!iter->u.list) {
- return 0;
- }
- dst = (struct route_info*)iter->u.list->data;
- } else { //No iter handling
- dst=route_get_dst(this_);
- }
- attr->u.pcoord=&this_->pc;
- this_->pc.pro=projection_mg; /* fixme */
- this_->pc.x=dst->c.x;
- this_->pc.y=dst->c.y;
- } else
- ret=0;
- break;
- case attr_vehicle:
- attr->u.vehicle=this_->v;
- ret=(this_->v != NULL);
- dbg(lvl_debug,"get vehicle %p\n",this_->v);
- break;
- case attr_vehicleprofile:
- attr->u.vehicleprofile=this_->vehicleprofile;
- ret=(this_->vehicleprofile != NULL);
- break;
- case attr_route_status:
- attr->u.num=this_->route_status;
- break;
- case attr_destination_time:
- if (this_->path2 && (this_->route_status == route_status_path_done_new || this_->route_status == route_status_path_done_incremental)) {
- struct route_path *path=this_->path2;
- attr->u.num=0;
- while (path) {
- attr->u.num+=path->path_time;
- path=path->next;
- }
- dbg(lvl_debug,"path_time %ld\n",attr->u.num);
- } else
- ret=0;
- break;
- case attr_destination_length:
- if (this_->path2 && (this_->route_status == route_status_path_done_new || this_->route_status == route_status_path_done_incremental)) {
- struct route_path *path=this_->path2;
- attr->u.num=0;
- while (path) {
- attr->u.num+=path->path_len;
- path=path->next;
- }
- } else
- ret=0;
- break;
- default:
- return 0;
- }
- attr->type=type;
- return ret;
-}
-
-struct attr_iter *
-route_attr_iter_new(void)
-{
- return g_new0(struct attr_iter, 1);
-}
-
-void
-route_attr_iter_destroy(struct attr_iter *iter)
-{
- g_free(iter);
-}
-
-void
-route_init(void)
-{
- plugin_register_category_map("route", route_map_new);
- plugin_register_category_map("route_graph", route_graph_map_new);
-}
-
-void
-route_destroy(struct route *this_)
-{
- this_->refcount++; /* avoid recursion */
- route_path_destroy(this_->path2,1);
- route_graph_destroy(this_->graph);
- route_clear_destinations(this_);
- route_info_free(this_->pos);
- map_destroy(this_->map);
- map_destroy(this_->graph_map);
- g_free(this_);
-}
-
-struct object_func route_func = {
- attr_route,
- (object_func_new)route_new,
- (object_func_get_attr)route_get_attr,
- (object_func_iter_new)NULL,
- (object_func_iter_destroy)NULL,
- (object_func_set_attr)route_set_attr,
- (object_func_add_attr)route_add_attr,
- (object_func_remove_attr)route_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)route_destroy,
- (object_func_dup)route_dup,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
diff --git a/navit/route.h b/navit/route.h
deleted file mode 100644
index 5f55f804c..000000000
--- a/navit/route.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/** @file
- *
- * @brief Contains exported code for route.c
- *
- * This file contains code that works together with route.c and that is exported to
- * other modules.
- */
-
-#ifndef NAVIT_ROUTE_H
-#define NAVIT_ROUTE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-enum route_path_flags {
- route_path_flag_none=0,
- route_path_flag_cancel=1,
- route_path_flag_async=2,
- route_path_flag_no_rebuild=4,
-};
-
-enum route_status {
- route_status_no_destination=0,
- route_status_destination_set=1,
- route_status_not_found=1|2,
- route_status_building_path=1|4,
- route_status_building_graph=1|4|8,
- route_status_path_done_new=1|16,
- route_status_path_done_incremental=1|32,
-};
-
-struct route_crossing {
- long segid;
- int dir;
-};
-
-struct route_crossings {
- int count;
- struct route_crossing crossing[0];
-};
-
-/**
- * @brief Information about a street
- *
- * This contains information about a certain street
- */
-struct street_data {
- struct item item; /**< The map item for this street */
- int count; /**< Number of coordinates this street has */
- int flags;
- int maxspeed; /**< Maximum speed allowed on this street. */
- struct coord c[0]; /**< Pointer to the coordinates of this street.
- * DO NOT INSERT FIELDS AFTER THIS. */
-};
-
-/* prototypes */
-enum attr_type;
-enum projection;
-struct attr;
-struct attr_iter;
-struct coord;
-struct item;
-struct map;
-struct map_selection;
-struct mapset;
-struct pcoord;
-struct route;
-struct route_info;
-struct street_data;
-struct tracking;
-struct vehicleprofile;
-struct route *route_new(struct attr *parent, struct attr **attrs);
-struct route *route_dup(struct route *orig);
-void route_set_mapset(struct route *this_, struct mapset *ms);
-void route_set_profile(struct route *this_, struct vehicleprofile *prof);
-struct mapset *route_get_mapset(struct route *this_);
-struct route_info *route_get_pos(struct route *this_);
-struct route_info *route_get_dst(struct route *this_);
-int route_get_path_set(struct route *this_);
-int route_contains(struct route *this_, struct item *item);
-int route_destination_reached(struct route *this_);
-void route_set_position(struct route *this_, struct pcoord *pos);
-void route_set_position_from_tracking(struct route *this_, struct tracking *tracking, enum projection pro);
-struct map_selection *route_rect(int order, struct coord *c1, struct coord *c2, int rel, int abs);
-void route_set_destinations(struct route *this_, struct pcoord *dst, int count, int async);
-int route_get_destinations(struct route *this_, struct pcoord *pc, int count);
-int route_get_destination_count(struct route *this_);
-void route_get_distances(struct route *this_, struct coord *c, int count, int *distances);
-void route_set_destination(struct route *this_, struct pcoord *dst, int async);
-void route_append_destination(struct route *this_, struct pcoord *dst, int async);
-void route_remove_nth_waypoint(struct route *this_, int n);
-void route_remove_waypoint(struct route *this_);
-char* route_get_destination_description(struct route *this_, int n);
-struct coord route_get_coord_dist(struct route *this_, int dist);
-struct street_data *street_get_data(struct item *item);
-struct street_data *street_data_dup(struct street_data *orig);
-void street_data_free(struct street_data *sd);
-void route_info_free(struct route_info *inf);
-struct street_data *route_info_street(struct route_info *rinf);
-struct map *route_get_map(struct route *this_);
-struct map *route_get_graph_map(struct route *this_);
-enum route_path_flags route_get_flags(struct route *this_);
-int route_has_graph(struct route *this_);
-void route_set_projection(struct route *this_, enum projection pro);
-void route_set_destinations(struct route *this_, struct pcoord *dst, int count, int async);
-int route_set_attr(struct route *this_, struct attr *attr);
-int route_add_attr(struct route *this_, struct attr *attr);
-int route_remove_attr(struct route *this_, struct attr *attr);
-struct attr_iter * route_attr_iter_new(void);
-void route_attr_iter_destroy(struct attr_iter *iter);
-int route_get_attr(struct route *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-void route_init(void);
-void route_destroy(struct route *this_);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/navit/script.c b/navit/script.c
deleted file mode 100644
index 2c6719cdc..000000000
--- a/navit/script.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2012 Navit Team
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terscr 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 "item.h"
-#include "debug.h"
-#include "event.h"
-#include "callback.h"
-#include "command.h"
-#include "xmlconfig.h"
-
-struct script
-{
- NAVIT_OBJECT
- struct attr parent;
- struct callback *cb;
- struct event_timeout *timeout;
- struct command_saved *cs;
-};
-
-static void
-script_run(struct script *scr)
-{
- struct attr *xml_text=attr_search(scr->attrs, NULL, attr_xml_text);
- int error;
- if (!xml_text || !xml_text->u.str) {
- dbg(lvl_error,"no text\n");
- return;
- }
- dbg(lvl_debug,"running '%s'\n",xml_text->u.str);
- command_evaluate_to_void(&scr->parent, xml_text->u.str, &error);
-}
-
-static int
-script_set_attr_int(struct script *scr, struct attr *attr)
-{
- switch (attr->type) {
- case attr_refresh_cond:
- dbg(lvl_debug,"refresh_cond\n");
- if (scr->cs)
- command_saved_destroy(scr->cs);
- scr->cs=command_saved_attr_new(attr->u.str, &scr->parent, scr->cb, 0);
- return 1;
- case attr_update_period:
- if (scr->timeout)
- event_remove_timeout(scr->timeout);
- scr->timeout=event_add_timeout(attr->u.num, 1, scr->cb);
- return 1;
- default:
- return 0;
- }
-}
-
-static struct script *
-script_new(struct attr *parent, struct attr **attrs)
-{
- struct script *scr=g_new0(struct script, 1);
- scr->func=&script_func;
- navit_object_ref((struct navit_object *)scr);
- scr->attrs=attr_list_dup(attrs);
- attrs=scr->attrs;
- scr->cb=callback_new_1(callback_cast(script_run), scr);
- scr->parent=*parent;
- while (attrs && *attrs)
- script_set_attr_int(scr, *attrs++);
- dbg(lvl_debug,"return %p\n",scr);
- return scr;
-}
-
-static void
-script_destroy(struct script *scr)
-{
- dbg(lvl_debug,"enter %p\n",scr);
- if (scr->timeout)
- event_remove_timeout(scr->timeout);
- if (scr->cs)
- command_saved_destroy(scr->cs);
- callback_destroy(scr->cb);
- attr_list_free(scr->attrs);
- g_free(scr);
-}
-
-struct object_func script_func = {
- attr_script,
- (object_func_new)script_new,
- (object_func_get_attr)navit_object_get_attr,
- (object_func_iter_new)navit_object_attr_iter_new,
- (object_func_iter_destroy)navit_object_attr_iter_destroy,
- (object_func_set_attr)navit_object_set_attr,
- (object_func_add_attr)navit_object_add_attr,
- (object_func_remove_attr)navit_object_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)script_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
diff --git a/navit/script/cabify.sh b/navit/script/cabify.sh
deleted file mode 100755
index 4536ff330..000000000
--- a/navit/script/cabify.sh
+++ /dev/null
@@ -1,83 +0,0 @@
-#! /bin/bash
-
-function check_pocketcab()
-{
- which pocketpc-cab &> /dev/null
- if [ $? -ne 0 ]
- then
- echo "You don't have pocketpc-cab installed or not in PATH"
- exit
- fi
-}
-
-SRCDIR="../.."
-BASEDIR="navit"
-MAPSDIR=""
-CABLIST="/tmp/navit.lst"
-CABNAME=""
-
-check_pocketcab
-
-if [ "$1" == "" ]
-then
- echo "$0 cabname [sourcedir [pocketinstalldir [navit.xml mapsdir]]]"
- exit
-else
- CABNAME="$1"
-fi
-[ "$2" != "" ] && SRCDIR="$2"
-[ "$3" != "" ] && BASEDIR="$3"
-if [ "$4" != "" ];
-then
- NAVITXML="$4"
-else
- NAVITXML=""
-fi
-[ "$5" != "" ] && MAPSDIR="$5"
-
-echo "Source dir: $SRCDIR"
-echo "PocketPc dir: $BASEDIR"
-[ "$NAVITXML" != "" ] && echo "Navitxml: $NAVITXML"
-[ "$MAPSDIR" != "" ] && echo "Maps: $MAPSDIR"
-
-echo -n > $CABLIST.$$
-
-for i in `ls $SRCDIR/locale/*/*/*.mo`
-do
- bn="`basename "$i"`"
- d=${i##$SRCDIR/}
- echo "$i $BASEDIR/$d" >> $CABLIST.$$
-done
-
-for i in $SRCDIR/navit/icons/*.xpm
-do
- bn="`basename "$i"`"
- echo "$i $BASEDIR/icons/" >> $CABLIST.$$
-done
-
-echo "$SRCDIR/navit/navit.exe $BASEDIR/" >> $CABLIST.$$
-if [ "$NAVITXML" != "" ]
-then
-echo "$NAVITXML $BASEDIR/" >> $CABLIST.$$
-fi
-if [ "$MAPSDIR" != "" ]
-then
-for i in $MAPSDIR/*.bin
-do
- bn="`basename "$i"`"
- echo "$i $BASEDIR/maps/$bn" >> $CABLIST.$$
-done
-for i in $MAPSDIR/*.txt
-do
- bn="`basename "$i"`"
- echo "$i $BASEDIR/maps/$bn" >> $CABLIST.$$
-done
-for i in $MAPSDIR/*.img
-do
- bn="`basename "$i"`"
- echo "$i $BASEDIR/maps/$bn" >> $CABLIST.$$
-done
-fi
-pocketpc-cab -p "Navit Team" -a "Navit" $CABLIST.$$ $CABNAME
-rm $CABLIST.$$
-
diff --git a/navit/script/check_itemdef b/navit/script/check_itemdef
deleted file mode 100755
index 61ea1cb29..000000000
--- a/navit/script/check_itemdef
+++ /dev/null
@@ -1,42 +0,0 @@
-#! /bin/sh
-function check_item_def
-{
- grep -q "[(,]$1)" ../item_def.h || echo "$1 missing"
-}
-
-function check_item_xml
-{
- grep -q "^$1\$" check.$$ || echo "$1 will not be rendered"
-}
-
-
-awk '/<layout name="Car"/,/<\/layout/ { if (/<itemgra/) {print $0} }' < ../navit.xml | sed 's/.*item_types="\([^"]*\)".*/\1/' | tr "," "\012" | sort -u >check.$$
-echo item_def.h
-grep "^ITEM" ../item_def.h | sed -e "s/ITEM(\(.*\))/\1/" -e "s/ITEM2([^,]*,\(.*\))/\1/" |
-while read -r x
-do
- check_item_xml "$x"
-done
-
-rm -f check.$$
-echo maptool.c
-egrep '^ "[nw] +[^ ]+ +[^ ]+' ../maptool.c | sed "s/.* //" | sort -u |
-while read -r x
-do
- check_item_def "${x%%\\n\"}"
-done
-
-echo "navit.xml"
-grep '<itemgra item_types="' <../navit.xml | cut -d \" -f 2 | tr "," "\012" |
-while read -r x
-do
- check_item_def "$x"
-done
-
-echo "garmintypes.txt"
-grep "^[0-9]" ../map/garmin/garmintypes.txt | sed -e 's/[A-Z][A-Z]*, //' -e 's/.*= \([^,]*\),.*/\1/' | sort -u |
-while read -r x
-do
- check_item_def "$x"
-done
-
diff --git a/navit/script/compare_map b/navit/script/compare_map
deleted file mode 100755
index f16e3c5e8..000000000
--- a/navit/script/compare_map
+++ /dev/null
@@ -1,26 +0,0 @@
-#! /bin/sh
-maptool=$0
-maptool=${maptool%/*}
-maptool=$maptool/../maptool/maptool
-dir=compare.$$
-mkdir $dir
-file1=$1
-file2=$2
-unzip -vl $file1 | sed "s/[0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]//" | egrep -v '^Archive| files$' >$dir/dir1.txt
-unzip -vl $file2 | sed "s/[0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]//" | egrep -v '^Archive| files$' >$dir/dir2.txt
-diff $dir/dir1.txt $dir/dir2.txt | egrep "^<|^>" |
-while read line
-do
- echo $line
- case $line in
- \>*)
- name=${line##*\ }
- echo $name
- unzip -p $file1 $name >$dir/ways_split_.tmp
- ( cd $dir && ../$maptool -D -s3 >data1.txt) 2>/dev/null
- unzip -p $file2 $name >$dir/ways_split_.tmp
- ( cd $dir && ../$maptool -D -s3 >data2.txt) 2>/dev/null
- diff $dir/data1.txt $dir/data2.txt
- ;;
- esac
-done
diff --git a/navit/script/download_index.html b/navit/script/download_index.html
deleted file mode 100644
index fed33e179..000000000
--- a/navit/script/download_index.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>Planet Extraction</title>
- <style type="text/css">
- html, body {
- margin: 0;
- padding: 1em;
- font: 0.9em Verdana, Arial, sans serif;
- }
- input, select, textarea {
- font: 1em Verdana, Arial, sans serif;
- }
- .input {
- border: none;
- width: 100px;
- }
- .bbox {
- font-size: 12px;
- color: #000;
- background-color: #fff;
- width: 300px;
- border: 1px solid gray;
- }
- .button {
- width: 200px;
- height: 50px;
- font-weight: bold;
- }
- #map {
- float: left;
- width: 500px;
- height: 500px;
- border: 1px solid gray;
- }
- #controls {
- float: left;
-
- }
- </style>
- <script src="http://openlayers.org/dev/lib/OpenLayers.js"></script>
- <script type="text/javascript">
- var map, polygonControl, polygonLayer, bbox_set;
-
- OpenLayers.Util.onImageLoadErrorColor = "transparent";
- function init(){
- map = new OpenLayers.Map('map');
-
- var wmsLayer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
- "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'});
-
- polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer");
-
- map.addLayers([wmsLayer, polygonLayer]);
- map.addControl(new OpenLayers.Control.LayerSwitcher());
- map.addControl(new OpenLayers.Control.MousePosition());
-
- polyOptions = {sides: 4, irregular: true};
- polygonControl = new OpenLayers.Control.DrawFeature(polygonLayer,
- OpenLayers.Handler.RegularPolygon,
- {handlerOptions: polyOptions});
- //alert(polygonControl);
-
- map.addControl(polygonControl);
-
- polygonControl.featureAdded=featureInsert;
-
- map.setCenter(new OpenLayers.LonLat(0, 0), 3);
-
- document.getElementById('noneToggle').checked = true;
- //document.getElementById('irregularToggle').checked = false;
-
- //var polyOptions = {sides: 4, irregular: true};
- //polygonControl.handler.setOptions(polyOptions);
- }
-
- function featureInsert(feature){
- var old=[];
- for (var i = 0; i < polygonLayer.features.length; i++) {
- if (polygonLayer.features[i] != feature) {
- old.push(polygonLayer.features[i]);
- }
- }
- polygonLayer.destroyFeatures(old);
-
- var bounds = feature.geometry.getBounds();
-
- document.form.bounds_top.value = bounds.top;
- document.form.bounds_right.value = bounds.right;
- document.form.bounds_btm.value = bounds.bottom;
- document.form.bounds_left.value = bounds.left;
- bbox_set=true;
- }
- function download() {
- var bbox = document.form.bounds_left.value + "," +
- document.form.bounds_btm.value + "," +
- document.form.bounds_right.value + "," +
- document.form.bounds_top.value;
- if (bbox_set) {
- location.href="http://maps.navit-project.org/api/map?bbox=" + bbox;
- } else {
- alert("Please select a bounding box first\n");
- }
- }
- function setOptions(options) {
- polygonControl.handler.setOptions(options);
- }
- function setSize(fraction) {
- var radius = fraction * map.getExtent().getHeight();
- polygonControl.handler.setOptions({radius: radius,
- angle: 0});
- }
- </script>
- </head>
- <body onload="init()">
- <h2>Planet extract</h2>
- <div id="map"></div>
- <div id="controls">
- <ul style="list-style:none;"><b>Map Controls</b>
- <li>
- <input type="radio" name="type"
- value="none" id="noneToggle"
- onclick="polygonControl.deactivate()"
- checked="checked" />
- <label for="noneToggle">navigate</label>
- </li>
- <li>
- <input type="radio" name="type"
- value="polygon" id="polygonToggle"
- onclick="polygonControl.activate()" />
- <label for="polygonToggle">select</label>
- </li>
- </ul>
- <ul style="list-style:none"><b>Fetch box</b>
- <form name="form">
- <li>Top Right: <input type="text" name="bounds_top" class="input">,
- <input type="text" name="bounds_right" class="input"></li>
- <li>Bottom left: <input type="text" name="bounds_btm" class="input">,
- <input type="text" name="bounds_left" class="input"></li>
- </form>
- <li>&nbsp;</li>
- <li><input type="button" class="button" value="Get map!" onclick="javascript:download()"></li>
- </ul>
- </div>
- </body>
-</html>
diff --git a/navit/script/dump_types b/navit/script/dump_types
deleted file mode 100755
index ca1bbdfff..000000000
--- a/navit/script/dump_types
+++ /dev/null
@@ -1,26 +0,0 @@
-#! /bin/sh
-IFS="(),"
-function print_defs
-{
- type=$1
- while read a1 a2 a3
- do
- case $a1 in
- *2)
- id=$(($a2))
- name=$a3
- ;;
- *)
- name=$a2
- esac
- printf "%s%s 0x%x\n" $type $name $id
- id=$((id+1))
- done
-}
-dir=$0
-dir=${dir%/*}
-dir=$dir/../
-id=0
-grep ^ITEM $dir/item_def.h | print_defs type_
-id=0
-grep ^ATTR $dir/attr_def.h | print_defs attr_
diff --git a/navit/script/gensvg b/navit/script/gensvg
deleted file mode 100755
index b7a4241c9..000000000
--- a/navit/script/gensvg
+++ /dev/null
@@ -1,266 +0,0 @@
-#! /bin/sh
-
-makearrow()
-{
-cat <<EOT
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M $xl0,$yl0 L $xl1,$yl1 C $xcc0,$ycc0 $xcc1,$ycc1 $xc0,$yc0$extra"
- style="fill:none;stroke:#${colval};stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate($xa0,$ya0) scale(3) rotate($angle)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#${colval};stroke:#${colval};stroke-linejoin:round"
- />
-
- </g>
-</svg>
-EOT
-}
-
-makeroundabout()
-{
-cat <<EOT
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- width="64px"
- height="64px">
- <g>
- <path
- d="M $xa0 $ya0 A $r $r 0 $long1 $sweep $xl1 $yl1"
- style="fill:none;stroke:#${colval};stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4" />
- <path
- d="M $xl0,$yl0 L $xl1,$yl1 A $r $r 0 $long2 $sweep $xa0 $ya0 L $xl2 $yl2"
- style="fill:none;stroke:#${colval};stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
- <path
- transform="translate($xl2,$yl2) scale(2) rotate($angle)"
- d="M -4,1 L 0,-7 L 4,1 C 2,-1 -2,-1 -4,1"
- style="fill:#${colval};stroke:#${colval};stroke-linejoin:round"
- />
- </g>
-</svg>
-EOT
-}
-
-yl0=63
-for col in bk wh
-do
- case $col in
- bk)
- colval="000000"
- ;;
- wh)
- colval="ffffff"
- ;;
- esac
- for dir in left right
- do
- xl0=32
- xl1=32
- angle=360
- step=-45
- xa=33.5
- xb=26
- xc=16
- xd=22
- xe=32
- xf=28
- if [ "$dir" = "right" ]
- then
- angle=0
- step=45
- xa=30.5
- xb=$((64-xb))
- xc=$((64-xc))
- xd=$((64-xd))
- xe=$((64-xe))
- xf=$((64-xf))
- fi
- for st in 1 2 3
- do
- case $st in
- 1)
- yl1=42
- yc0=20
- ycc1=31
- ycc0=31
- ya0=20
- xc0=$xd
- xa0=$xd
- xcc0=$xe
- xcc1=$xe
- ;;
- 2)
- yl1=25
- yc0=20
- ycc1=20
- ycc0=22
- ya0=20
- xc0=$xd
- xa0=$xd
- xcc0=$xe
- xcc1=$xf
- ;;
- 3)
- yl1=32
- yc0=26
- ycc1=16
- ycc0=10
- ya0=26
- xc0=$xc
- xa0=$xc
- xcc0=$xa
- xcc1=$xb
- ;;
- esac
- angle=$((angle+step))
- filename="nav_${dir}_${st}_$col.svg"
- extra=""
- makearrow >$filename
- done
- filename="nav_turnaround_${dir}_$col.svg"
- angle=180
- xcc0=48
- xc0=22
- xcc1=22
- xl0=48
- xl1=48
- xa0=22
- if [ "$dir" = "right" ]
- then
- xcc0=$((64-$xcc0))
- xc0=$((64-$xc0))
- xcc1=$((64-$xcc1))
- xl0=$((64-$xl0))
- xl1=$((64-$xl1))
- xa0=$((64-$xa0))
- fi
- yl1=20
- yc0=20
- ycc1=0
- ycc0=0
- ya0=35
- extra=" L $xc0 $ya0"
- makearrow >$filename
- xl0=32
- xl1=32
- yl1=44
- r=12
- letter=l
- angle=180
- step=45
- longa=1
- longb=0
- sweep=1
- xa=26
- xb=38
- if [ "$dir" = "right" ]
- then
- letter=r
- step=-45
- longa=0
- longb=1
- sweep=0
- xa=$((64-xa))
- xb=$((64-xb))
- fi
- for st in 1 2 3 4 5 6 7 8
- do
- angle=$((angle+step))
- if [ $angle -ge 360 ]
- then
- angle=$((angle-360))
- fi
- if [ $angle -lt 0 ]
- then
- angle=$((angle+360))
- fi
- xa0=40.46
- ya0=40.46
- long1=$longb
- case $angle in
- 0)
- xa0=32
- ya0=20
- xl2=32
- yl2=14
- ;;
- 45)
- xa0=40.46
- ya0=23.54
- xl2=44.7
- yl2=19.3
- ;;
- 90)
- xa0=44
- ya0=32
- xl2=50
- yl2=32
- ;;
- 135)
- xa0=40.46
- ya0=40.46
- xl2=44.7
- yl2=44.7
- ;;
- 180)
- xa0=$xb
- ya0=44
- xl0=$xa
- xl1=$xa
- xl2=$xb
- yl2=50
- long1=0
- ;;
- 225)
- xa0=23.54
- ya0=40.46
- xl2=19.3
- yl2=44.7
- long1=$longa
- ;;
- 270)
- xa0=20
- ya0=32
- xl2=14
- yl2=32
- long1=$longa
- ;;
- 315)
- xa0=23.54
- ya0=23.54
- xl2=19.3
- yl2=19.3
- long1=$longa
- ;;
- esac
- long2=$((1-long1))
- filename="nav_roundabout_${letter}${st}_$col.svg"
- makeroundabout >$filename
- done
- done
- filename="nav_straight_$col.svg"
- xl0=32
- xl1=32
- yl1=32
- xcc0=32
- ycc0=10
- xcc1=32
- ycc1=16
- xc0=32
- yc0=26
- xa0=32
- ya0=26
- angle=0
- extra=""
- makearrow >$filename
-done
-
diff --git a/navit/script/geotag b/navit/script/geotag
deleted file mode 100755
index e025cbc61..000000000
--- a/navit/script/geotag
+++ /dev/null
@@ -1,36 +0,0 @@
-#! /bin/sh
-#TZ=UTC+00:00:00
-TZ=UTC+00:59:57
-export TZ
-order=${5%%,*}
-case $order in
-10|11)
- size=1000
- ;;
-12|13)
- size=4000
- ;;
-14|15)
- size=16000
- ;;
-16|17|18|19)
- size=64000
- ;;
-*)
- exit
-esac
-ls -l --full-time images/*.jpg | sed -e 's/^\([^ ]* \)\{5\}//' -e 's/20\([0-9]*\)-\([0-9]*\)-\([0-9]*\) \([0-9]*\):\([0-9]*\):\([0-9]*\)\.[0-9]* [^ ]*/\\$GPRMC,\4\5\6\\.000,\\([^,]*,\\)\\{7\\}\3\2\1,\\([^,]*,\\)\\{2\\}[^,]*\\*..$/' | tail +2 |
-while read -r sentence image
-do
- if [ ! -f $image.$size ]
- then
- djpeg -scale 1/8 $image | pamscale -pixels $size | cjpeg >$image.$size
-
- fi
- if [ ! -f $image.txt ]
- then
- grep -e "$sentence" tracks/* | sed -e 's/^\([^,]*,\)\{3\}\(\([^,]*,\)\{4\}\).*/\2/' -e 's/,/ /g' > $image.txt
- [ -s $image.txt ] || echo "$sentence not found" >&2
- fi
- sed "s&\$&type=poi_image label=$image.$size&" <$image.txt
-done
diff --git a/navit/script/get_map b/navit/script/get_map
deleted file mode 100755
index 7c8ef970f..000000000
--- a/navit/script/get_map
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /bin/bash
-echo "/* XPM */" >map.xpm
-req="<MapRequest reqVer='100' format='jpeg' visibleRoutes='111111111' colorDepth='4'><Rect l='0' t='0' r='$1' b='$2'></Rect><Rect l='$3' t='$4' r='$5' b='$6'></Rect></MapRequest>"
-perl -e 'print (pack("a20",length($ARGV[0]))) ; print $ARGV[0]' "$req" | netcat localhost 10371 | dd bs=20 skip=1 2>/dev/null | tail +2 >>map.xpm
-xv map.xpm &
diff --git a/navit/script/gps_emu b/navit/script/gps_emu
deleted file mode 100755
index f2eef3e50..000000000
--- a/navit/script/gps_emu
+++ /dev/null
@@ -1,19 +0,0 @@
-#! /bin/bash
-function send_data
-{
- trap send_data SIGPIPE
- while read line
- do
- case $line in
- \$GPVTG*)
- echo "$line"
- sleep 1
- ;;
- *)
- echo "$line"
- ;;
- esac
- done <track/all.txt >/tmp/gpsdata
-}
-
-send_data
diff --git a/navit/script/gps_emu2 b/navit/script/gps_emu2
deleted file mode 100755
index e9e79b42a..000000000
--- a/navit/script/gps_emu2
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /usr/bin/perl
-
-open(FILE,"<$ARGV[0]");
-read(FILE,$header,64);
-
-($magic,$version)=unpack("a8l",$header);
-
-#print "magic=$magic version=$version\n";
-
-select STDOUT; $| = 1;
-
-$count=$ARGV[1];
-while ($count) {
- read(FILE,$record,64);
- $count--;
-}
-
-while (read(FILE,$record,64))
-{
- ($flags,$status,$mode,$hdop,$vdop,$pdop,$sats,$timestampl,$timestamph,$latitude,$longitude,$altitude,$speed,$direction)=unpack("SCCCCCCLLddddd",$record);
-
-
- if ($mode == 3) {
- ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($timestampl);
- $datestring=sprintf("%02d.%02d.%d %02d:%02d:%02d",$mday,$mon+1,$year+1900,$hour,$min,$sec);
- $long_dir="E";
- $lat_dir="N";
- if ($longitude < 0) {
- $long_dir="W";
- $logitude=-$longitude;
- }
- if ($latitude < 0) {
- $lat_dir="S";
- $latitude=-$latitude;
- }
- $long_deg=int($longitude);
- $lat_deg=int($latitude);
- $long_gps=$long_deg*100+($longitude-$long_deg)*60;
- $lat_gps=$lat_deg*100+($latitude-$lat_deg)*60;
- $lastpos="$lat_gps $lat_dir $long_gps $long_dir";
- printf("\$GPGGA,%02d%02d%02d,%s,%s,%s,%s,1,%d,%s,%s,M,,,,0000*0C\n",$hour,$min,$sec,$lat_gps,$lat_dir,$long_gps,$long_dir,$sats,$hdop,$altitude);
- printf("\$GPVTG,%s,T,,M,,N,%s,K,*6A\n",$direction,$speed*1.852);
- printf(STDERR "\$GPGGA,%02d%02d%02d,%s,%s,%s,%s,1,%d,%s,%s,M,,,,0000*0C\n",$hour,$min,$sec,$lat_gps,$lat_dir,$long_gps,$long_dir,$sats,$hdop,$altitude);
- sleep(1);
- }
-}
diff --git a/navit/script/gps_emu3 b/navit/script/gps_emu3
deleted file mode 100755
index 5c0ecf256..000000000
--- a/navit/script/gps_emu3
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /bin/bash
-while read line
-do
- if [ -n "$line" ]
- then
- echo $line
- fi
- if [ "${line#\$GPVTG}" != "$line" ]
- then
- sleep 1
- fi
-done <$1
diff --git a/navit/script/gps_emu4 b/navit/script/gps_emu4
deleted file mode 100755
index 2f90fcfc8..000000000
--- a/navit/script/gps_emu4
+++ /dev/null
@@ -1,136 +0,0 @@
-#! /usr/bin/perl
-use Glib qw/TRUE FALSE/;
-use Gtk2 '-init';
-
-sub exit_with_error
-{
- my ($error)=@_;
- print STDERR "$error\n";
- exit(1);
-}
-
-sub process_one_packet
-{
- $pos[$idx++]=tell(STDIN);
- while (<STDIN>) {
- if (!defined($match)) {
- syswrite(STDOUT,$_) or exit_with_error $!;
- } else {
- $buffer.=$_;
- }
- if (/^\$GPRMC/) {
- my($dummy,$time,$dummy)=split(/,/,$_);
- $entry->set_text($time);
- if (!defined($match)) {
- return;
- }
- if (substr($time,0,length($match)) eq $match) {
- undef $match;
- syswrite(STDOUT,$buffer) or exit_with_error $!;
- return;
- }
- $buffer='';
- }
- }
-}
-
-sub process_one_packet_at_idx
-{
- ($idx)=@_;
- seek(STDIN,$pos[$idx],SEEK_SET);
- process_one_packet();
-}
-
-sub forward
-{
- process_one_packet();
- return 1;
-}
-
-sub backward
-{
- if ($idx > 1) {
- process_one_packet_at_idx($idx-2);
- }
- return 1;
-}
-
-sub add_timeout
-{
- my ($interval,$dir)=@_;
-
- if ($timeout > 0) {
- Glib::Source->remove($timeout);
- }
- if ($dir > 0) {
- forward();
- $timeout=Glib::Timeout->add ($interval, \&forward);
- }
- if ($dir < 0) {
- backward();
- $timeout=Glib::Timeout->add ($interval, \&backward);
- }
-}
-
-sub entry
-{
- $match=$entry->get_text();
- seek(STDIN,0,SEEK_SET);
- process_one_packet();
-}
-
-$oldfh = select(STDOUT); $| = 1; select($oldfh);
-$window = Gtk2::Window->new('toplevel');
-$box = Gtk2::HBox->new();
-$window->add($box);
-$button = Gtk2::Button->new("Stop");
-$button->signal_connect(clicked => sub { add_timeout(0,0) });
-$box->add($button);
-$button = Gtk2::Button->new("100 Hz");
-$button->signal_connect(clicked => sub { add_timeout(10,-1); });
-$box->add($button);
-$button = Gtk2::Button->new("10 Hz");
-$button->signal_connect(clicked => sub { add_timeout(100,-1); });
-$box->add($button);
-$button = Gtk2::Button->new("4 Hz");
-$button->signal_connect(clicked => sub { add_timeout(250,-1); });
-$box->add($button);
-$button = Gtk2::Button->new("1 Hz");
-$button->signal_connect(clicked => sub { add_timeout(1000,-1); });
-$box->add($button);
-$button = Gtk2::Button->new("-");
-$button->signal_connect(clicked => sub { add_timeout(0,0) ; backward() });
-$box->add($button);
-$entry = Gtk2::Entry->new();
-$entry->set_text("???");
-$entry->signal_connect(activate => \&entry);
-$box->add($entry);
-$button = Gtk2::Button->new("+");
-$button->signal_connect(clicked => sub { add_timeout(0,0) ; forward() });
-$box->add($button);
-$button = Gtk2::Button->new("1 Hz");
-$button->signal_connect(clicked => sub { add_timeout(1000,1); });
-$box->add($button);
-$button = Gtk2::Button->new("4 Hz");
-$button->signal_connect(clicked => sub { add_timeout(250,1); });
-$box->add($button);
-$button = Gtk2::Button->new("10 Hz");
-$button->signal_connect(clicked => sub { add_timeout(100,1); });
-$box->add($button);
-$button = Gtk2::Button->new("100 Hz");
-$button->signal_connect(clicked => sub { add_timeout(10,1); });
-$box->add($button);
-$button = Gtk2::Button->new("Max");
-$button->signal_connect(clicked => sub { add_timeout(1,1); });
-$box->add($button);
-$window->show_all;
-if ($ARGV[0] eq '100' || $ARGV[0] eq '10' || $ARV[0] eq '4' || $ARGV[0] eq '1') {
- add_timeout(1000/$ARGV[0], 1);
- shift(@ARGV);
-}
-if ($ARGV[0]) {
- $match=$ARGV[0];
- process_one_packet();
-}
-Gtk2->main;
-0;
diff --git a/navit/script/itemgra.pl b/navit/script/itemgra.pl
deleted file mode 100755
index bbe02b000..000000000
--- a/navit/script/itemgra.pl
+++ /dev/null
@@ -1,57 +0,0 @@
-#! /usr/bin/perl
-my $layout;
-my $type,$types;
-my $order,$orders,@orders;
-my @layouts;
-open(IN,"../navit.xml");
-while (<IN>) {
- if (/<layout name="([^"]*)"/) {
- $layout=$1;
- push(@layouts,$layout);
- }
- if (/<itemgra item_types="([^"]*)"/) {
- $types=$1;
- if (/order="([^"]*)"/) {
- $order=$1;
- foreach $type (split(",",$types)) {
- $result->{$type}->{$layout}->{$order}=1;
- }
- }
- }
-}
-close(IN);
-open(IN,"../item_def.h");
-while (<IN>) {
- if (/^ITEM2\([^,]*,(.*)\)/) {
- $type=$1;
- $result->{$type}->{"none"}=1;
- }
- if (/^ITEM\((.*)\)/) {
- $type=$1;
- $result->{$type}->{"none"}=1;
- }
-}
-close(IN);
-my $typefmt="%-30s";
-my $layoutfmt="%10s";
-printf($typefmt,"");
-foreach $layout (@layouts) {
- printf($layoutfmt,$layout);
-}
-printf("\n");
-foreach $type (sort keys %$result) {
- $marker="";
- if (!$result->{$type}->{"none"}) {
- $marker="#";
- }
- printf($typefmt,$marker.$type);
- foreach $layout (@layouts) {
- @orders=sort keys %{$result->{$type}->{$layout}};
- $order="";
- if ($#orders >= 0) {
- $order="*";
- }
- printf($layoutfmt,$order);
- }
- printf("\n");
-}
diff --git a/navit/script/mapExtract.class.php b/navit/script/mapExtract.class.php
deleted file mode 100644
index f5c4bbbc3..000000000
--- a/navit/script/mapExtract.class.php
+++ /dev/null
@@ -1,283 +0,0 @@
-<?php
-
-class mapExtract {
-
- var $input_fd;
- var $output_fd;
- var $fetchBbox;
-
- var $formats;
- var $worldBbox;
-
- function mapExtract() {
- $formats = array();
-
- $formats['ziphpack'] = "lssssslLLSS";
- $formats['zipheader'] = "l" . "ziplocsig"; # Signature (is always the same)
- $formats['zipheader'] .= "/s" . "zipver"; # zip version needed
- $formats['zipheader'] .= "/s" . "zipgenfld";# type of os that generated the file
- $formats['zipheader'] .= "/s" . "zipmthd"; #
- $formats['zipheader'] .= "/s" . "ziptime"; # time
- $formats['zipheader'] .= "/s" . "zipdate"; # date
- $formats['zipheader'] .= "/l" . "zipcrc"; # crc checksum
- $formats['zipheader'] .= "/L" . "zipsize"; # data size
- $formats['zipheader'] .= "/L" . "zipuncmp"; # uncompressed size
- $formats['zipheader'] .= "/S" . "zipfnln"; # length of filename
- $formats['zipheader'] .= "/S" . "zipxtraln";# length of extra data (always 0)
-
- $formats['zipcdpack'] = "iccccssssiIISSSSSII";
- $formats['zipcd'] = "".
- "i" . "zipcensig/".
- "c" . "zipcver/".
- "c" . "zipcos/".
- "c" . "zipcvxt/".
- "c" . "zipcexos/".
- "s" . "zipcflg/".
- "s" . "zipcmthd/".
- "s" . "ziptim/".
- "s" . "zipdat/".
- "i" . "zipccrc/".
- "I" . "zipcsiz/".
- "I" . "zipcunc/".
- "S" . "zipcfnl/".
- "S" . "zipcxtl/".
- "S" . "zipccml/".
- "S" . "zipdsk/".
- "S" . "zipint/".
- "I" . "zipext/".
- "I" . "zipofst";
-
- $formats['zipeocpack'] = "iSSSSIIs";
- $formats['zipeoc'] = "".
- "i" . "zipesig/".
- "S" . "zipedsk/".
- "S" . "zipecen/".
- "S" . "zipenum/".
- "S" . "zipecenn/".
- "I" . "zipecsz/".
- "I" . "zipeofst/".
- "s" . "zipecoml/".
-
- $world_bbox = array();
- $world_bbox['l']['x'] = -20000000;
- $world_bbox['l']['y'] = -20000000;
- $world_bbox['h']['x'] = 20000000;
- $world_bbox['h']['y'] = 20000000;
-
- $this->formats = $formats;
- $this->worldBbox = $world_bbox;
- }
-
-
- function process() {
-
- if (!is_array($this->fetchBbox)) {
- return "Fetch box not set";
- }
- #
- if (!$this->input_fd) {
- return "No useable input set";
- }
- if (!$this->output_fd) {
- return "No useable output set";
- }
- $filecount = 0;
- $offset = 0;
- $zipcd_data = '';
- $report = array();
-
- /**
- * Read through zipheaders
- *
- */
- for(;;) {
- $buffer = fread($this->input_fd, 30);
- if (! strlen($buffer))
- break;
- $tileinfo = unpack($this->formats['zipheader'], $buffer);
-
- if ($tileinfo['ziplocsig'] != 0x4034b50)
- break;
-
- if ($tileinfo['zipfnln'] <= 0)
- break;
-
- $filename = fread($this->input_fd, $tileinfo['zipfnln']);
- $done=false;
-
- $r = $this->worldBbox;
-
- $len=strlen($filename);
- for ($i=0 ; $i < $len ; $i++) {
- $c['x'] = floor( ($r['l']['x'] + $r['h']['x'])/2 );
- $c['y'] = floor( ($r['l']['y'] + $r['h']['y'])/2 );
-
- switch($filename[$i]) {
- case 'a':
- $r['l']['x'] = $c['x'];
- $r['l']['y'] = $c['y'];
- break;
- case 'b':
- $r['h']['x'] = $c['x'];
- $r['l']['y'] = $c['y'];
- break;
- case 'c':
- $r['l']['x'] = $c['x'];
- $r['h']['y'] = $c['y'];
- break;
- case 'd':
- $r['h']['x'] = $c['x'];
- $r['h']['y'] = $c['y'];
- break;
- default:
- $done=true;
- }
- if ($done)
- break;
- }
- # print "zipsize=" . $tileinfo['zipsize'];
- $tilecontent = fread($this->input_fd, $tileinfo['zipsize']);
-
- # print "tile $filename";
- /* Area inside box, save it! */
- if ($this->contains_bbox($r)) {
- $report['added_areas']++;
-
- $zipheader = $buffer;
- # print " in\n";
-
- /* Area outside of box, set zipcontent=0 */
- } else {
- # print " out\n";
- $report['excluded_areas']++;
-
- $tileinfo['zipmthd'] = $tileinfo['zipcrc'] = $tileinfo
-['zipsize'] = $tileinfo['zipuncmp'] = 0;
- $zipheader = $tileinfo;
- $tilecontent = '';
- $zipheader = pack($this->formats['ziphpack'],
- $tileinfo['ziplocsig'],
- $tileinfo['zipver'],
- $tileinfo['zipgenfld'],
- $tileinfo['zipmthd'],
- $tileinfo['ziptime'],
- $tileinfo['zipdate'],
- $tileinfo['zipcrc'],
- $tileinfo['zipsize'],
- $tileinfo['zipuncmp'],
- $tileinfo['zipfnln'],
- $tileinfo['zipxtraln']
- );
- }
-
- $put = $zipheader.$filename.$tilecontent;
-
- /* Zip directory */
- $zipcd_data .= pack($this->formats['zipcdpack'],
- 0x02014b50,
- $tileinfo['zipver'],
- 0x00,
- 0x0a,
- 0x00,
- 0x00,
- $tileinfo['zipmthd'],
- $tileinfo['ziptime'],
- $tileinfo['zipdate'],
- $tileinfo['zipcrc'],
- $tileinfo['zipsize'],
- $tileinfo['zipuncmp'],
- $tileinfo['zipfnln'],
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- $offset
- ) . $filename;
-
- fwrite($this->output_fd, $put);
- $offset += strlen($put);
- $filecount += 1;
- }
-
- fwrite($this->output_fd, $zipcd_data);
- $ecsz = strlen($zipcd_data);
-
- /* Zip central directory */
- $zip_eoc = pack($this->formats['zipeocpack'],
- 0x06054b50, #zipesig;
- 0, #zipedsk;
- 0, #zipecen;
- $filecount, #zipenum;
- $filecount, #zipecenn;
- $ecsz, #zipecsz;
- $offset, #zipeofst;
- 0 #zipecoml;
- );
- fwrite($this->output_fd, $zip_eoc);
-
-
- return null;
- }
-
- function setBbox($sx,$sy,$ex,$ey) {
- if ($ex<$sx)
- return false;
- if ($ey<$sy)
- return false;
- $this->fetchBbox = $this->getmercator($sx,$sy,$ex,$ey);
- return true;
- }
-
- function setInput($file) {
- $this->input_fd=fopen($file,'r');
- }
- function setInputFD($fd) {
- $this->input_fd=$fd;
- }
-
- function setOutput($file) {
- $this->output_fd=fopen($file,'w');
- }
-
- function setOutputFD($fd) {
- $this->output_fd=$fd;
- }
-
-
- function contains_bbox(&$r) {
- $c =& $this->fetchBbox;
- if ($c['l']['x'] > $r['h']['x'])
- return false;
- elseif ($c['h']['x'] < $r['l']['x'])
- return false;
- elseif ($c['l']['y'] > $r['h']['y'])
- return false;
- elseif ($c['h']['y'] < $r['l']['y'])
- return false;
- else
- return true;
- }
-
- function getmercator($sx,$sy,$ex,$ey) {
- $sx = $sx*6371000.0*M_PI/180;
- $sy = log(tan(M_PI_4+$sy*M_PI/360))*6371000.0;
-
- $ex = $ex*6371000.0*M_PI/180;
- $ey = log(tan(M_PI_4+$ey*M_PI/360))*6371000.0;
- return array(
- 'l' => array(
- 'x' => $sx,
- 'y' => $sy
- ),
- 'h' => array(
- 'x' => $ex,
- 'y' => $ey
- )
- );
- }
-
-}
-
-
-?>
diff --git a/navit/script/map_index.php b/navit/script/map_index.php
deleted file mode 100644
index 57fd0d054..000000000
--- a/navit/script/map_index.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
- set_time_limit(600);
- require_once("mapExtract.class.php");
- $bbox=split(',',urldecode($HTTP_GET_VARS['bbox']));
- if (count($bbox) == 4) {
- $mapextract = new mapExtract();
- $mapextract->setBbox($bbox[0], $bbox[1], $bbox[2], $bbox[3]);
- $fp=fopen('php://output','w');
- $mapextract->setInput('../../planet.bin');
- $mapextract->setOutputFD($fp);
- if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
- header('Content-Type: application/force-download');
- else
- header('Content-Type: application/octet-stream');
- $name='osm_bbox_';
- $name.=round($bbox[0],1) . ',' . round($bbox[1],1) . ',';
- $name.=round($bbox[2],1) . ',' . round($bbox[3],1);
- $name.='.bin';
- header("Content-disposition: attachment; filename=\"$name\"");
- $error=$mapextract->process();
- if ($error) {
- header('Content-Type: text/plain');
- echo $error;
- }
- fclose($fp);
- } else {
- #echo "<pre>";
- #print_r($HTTP_HOST);
- #echo "</pre>";
- $areas=array(
- 'Germany' => '5,47,16,55.1',
- );
- $url='http://' . $HTTP_SERVER_VARS['HTTP_HOST'] . $HTTP_SERVER_VARS['PHP_SELF'];
- echo "Use: $url?bbox=bllon,bllat,trlon,trlat <br />\n";
- echo "<br />\n";
- while (list($area,$bbox)=each($areas)) {
- $urlf=$url . "?bbox=$bbox";
- echo "$area <a href='$urlf'>$urlf</a><br />\n";
- }
-
- }
-?>
diff --git a/navit/script/mapextract.php b/navit/script/mapextract.php
deleted file mode 100644
index 004b63caf..000000000
--- a/navit/script/mapextract.php
+++ /dev/null
@@ -1,225 +0,0 @@
-#!/usr/local/bin/php &#8211;q
-<?php
-function getmercator($sx,$sy,$ex,$ey) {
-
- $sx = $sx*6371000.0*M_PI/180;
- $sy = log(tan(M_PI_4+$sy*M_PI/360))*6371000.0;
-
- $ex = $ex*6371000.0*M_PI/180;
- $ey = log(tan(M_PI_4+$ey*M_PI/360))*6371000.0;
-
- return array(
- 'l' => array(
- 'x' => $sx,
- 'y' => $sy
- ),
- 'h' => array(
- 'x' => $ex,
- 'y' => $ey
- )
- );
-
-}
-function contains_bbox($c, &$r) {
- if ($c['l']['x'] > $r['h']['x'])
- return false;
- elseif ($c['h']['x'] < $r['l']['x'])
- return false;
- elseif ($c['l']['y'] > $r['h']['y'])
- return false;
- elseif ($c['h']['y'] < $r['l']['y'])
- return false;
- else
- return true;
-}
-
-$fetch_bbox = getmercator(11.3, 47.9, 11.4, 48.0);
-
-$files = array();
-$files['input'] = '/home/burner/carputer/navit/src/maps/osm_bbox_11.3,47.9,11.7,48.2.bin';
-$files['output'] = 'myarea.bin';
-
-$formats = array();
-$formats['ziphpack'] = "lssssslLLSS";
-$formats['zipheader'] = "l" . "ziplocsig"; # Signature (is always the same)
-$formats['zipheader'] .= "/s" . "zipver"; # zip version needed
-$formats['zipheader'] .= "/s" . "zipgenfld";# type of os that generated the file
-$formats['zipheader'] .= "/s" . "zipmthd"; #
-$formats['zipheader'] .= "/s" . "ziptime"; # time
-$formats['zipheader'] .= "/s" . "zipdate"; # date
-$formats['zipheader'] .= "/l" . "zipcrc"; # crc checksum
-$formats['zipheader'] .= "/L" . "zipsize"; # data size
-$formats['zipheader'] .= "/L" . "zipuncmp"; # uncompressed size
-$formats['zipheader'] .= "/S" . "zipfnln"; # length of filename
-$formats['zipheader'] .= "/S" . "zipxtraln";# length of extra data (always 0)
-
-$formats['zipcd'] = "".
- "i" . "zipcensig/".
- "c" . "zipcver/".
- "c" . "zipcos/".
- "c" . "zipcvxt/".
- "c" . "zipcexos/".
- "s" . "zipcflg/".
- "s" . "zipcmthd/".
- "s" . "ziptim/".
- "s" . "zipdat/".
- "i" . "zipccrc/".
- "I" . "zipcsiz/".
- "I" . "zipcunc/".
- "S" . "zipcfnl/".
- "S" . "zipcxtl/".
- "S" . "zipccml/".
- "S" . "zipdsk/".
- "S" . "zipint/".
- "I" . "zipext/".
- "I" . "zipofst/".
-$formats['zipcdpack'] = "iccccssssiIISSSSSII";
-
-$formats['zipcontent'] = "i5x/i5y/ii";
-
-$world_bbox = array();
-$world_bbox['l']['x'] = -20000000;
-$world_bbox['l']['y'] = -20000000;
-$world_bbox['h']['x'] = 20000000;
-$world_bbox['h']['y'] = 20000000;
-
-$fp = fopen($files['input'], 'r');
-$sp = fopen($files['output'], 'w');
-
-$files = array();
-$offset = 0;
-
-/**
- * Read through zipheaders
- *
- */
-while (!feof($fp)) {
-
- $buffer = fread($fp, 30);
- $tileinfo = unpack($formats['zipheader'], $buffer);
-
- if ($tileinfo['zipfnln'] <= 0)
- break;
-
- $filename = fread($fp, $tileinfo['zipfnln']);
- $x=0;
- $done=false;
-
- $r = $world_bbox;
-
- while (!$done) {
- $c['x'] = floor( ($r['l']['x'] + $r['h']['x'])/2 );
- $c['y'] = floor( ($r['l']['y'] + $r['h']['y'])/2 );
-
- switch($filename[$x]) {
- case 'a':
- $r['l']['x'] = $c['x'];
- $r['l']['y'] = $c['y'];
- break;
- case 'b':
- $r['h']['x'] = $c['x'];
- $r['l']['y'] = $c['y'];
- break;
- case 'c':
- $r['l']['x'] = $c['x'];
- $r['h']['y'] = $c['y'];
- break;
- case 'd':
- $r['h']['x'] = $c['x'];
- $r['h']['y'] = $c['y'];
- break;
- default:
- $done=true;
- }
- $x++;
- }
-
- $tilecontent = fread($fp, $tileinfo['zipsize']);
-
- /* Area inside box, save it! */
- if (contains_bbox($fetch_bbox, $r)) {
- #echo "In box. ";
- #echo $filename . " ";
- $zipheader = $buffer;
- #echo "\n";
-
- /* Area outside of box, set zipcontent=0 */
- } else {
- $tileinfo['zipmthd'] = $tileinfo['zipcrc'] = $tileinfo['zipsize'] = $tileinfo['zipuncmp'] = 0;
- #echo "Out of box";
- $zipheader = $tileinfo;
- $tilecontent = '';
- $zipheader = pack($formats['ziphpack'],
- $tileinfo['ziplocsig'],
- $tileinfo['zipver'],
- $tileinfo['zipgenfld'],
- $tileinfo['zipmthd'],
- $tileinfo['ziptime'],
- $tileinfo['zipdate'],
- $tileinfo['zipcrc'],
- $tileinfo['zipsize'],
- $tileinfo['zipuncmp'],
- $tileinfo['zipfnln'],
- $tileinfo['zipxtraln']
- );
- }
-
- $put = $zipheader.$filename.$tilecontent;
- $files[$filename]['header'] = $tileinfo;
- $files[$filename]['size'] = strlen($put);
-
- $zipcd = array();
- $zipcd['zipcensig'] = 0x02014b50;
- $zipcd['zipcver'] = $tileinfo['zipver'];
- $zipcd['zipcos'] = 0x00;
- $zipcd['zipcvxt'] = 0x0a;
- $zipcd['zipcexos'] = 0x00;
- $zipcd['zipcflg'] = 0x00;
- $zipcd['zipcmthd'] = $tileinfo['zipmthd'];
- $zipcd['ziptim'] = $tileinfo['ziptime'];
- $zipcd['zipdat'] = $tileinfo['zipdate'];
- $zipcd['zipccrc'] = $tileinfo['zipcrc'];
- $zipcd['zipcsiz'] = $tileinfo['zipsize'];
- $zipcd['zipcunc'] = $tileinfo['zipuncmp'];
- $zipcd['zipcfnl'] = $tileinfo['zipfnln'];
- $zipcd['zipcxtl'] = 0x00;
- $zipcd['zipccml'] = 0x00;
- $zipcd['zipdsk'] = 0x00;
- $zipcd['zipint'] = 0x00;
- $zipcd['zipext'] = 0x00;
- $zipcd['zipofst'] = $offset;
-
- $zipcd_data .= pack($formats['zipcdpack'],
- $zipcd['zipcensig'],
- $zipcd['zipcver'],
- $zipcd['zipcos'],
- $zipcd['zipcvxt'],
- $zipcd['zipcexos'],
- $zipcd['zipcflg'],
- $zipcd['zipcmthd'],
- $zipcd['ziptim'],
- $zipcd['zipdat'],
- $zipcd['zipccrc'],
- $zipcd['zipcsiz'],
- $zipcd['zipcunc'],
- $zipcd['zipcfnl'],
- $zipcd['zipcxtl'],
- $zipcd['zipccml'],
- $zipcd['zipdsk'],
- $zipcd['zipint'],
- $zipcd['zipext'],
- $zipcd['zipofst']
- ) . $filename;
-
-
- fwrite($sp, $put);
- $offset += strlen($put);
-
-}
-
-fwrite($sp, $zipcd_data);
-
-fclose($fp);
-fclose($sp);
-
-?>
diff --git a/navit/script/osm/Geo/OSM/APIClientV4.pm b/navit/script/osm/Geo/OSM/APIClientV4.pm
deleted file mode 100644
index 26b8ec5fc..000000000
--- a/navit/script/osm/Geo/OSM/APIClientV4.pm
+++ /dev/null
@@ -1,226 +0,0 @@
-##################################################################
-## APIClientV4.pm - General Perl client for the API ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Currently only supports uploading. Note the package actually ##
-## creates a package named Geo::OSM::APIClient so upgrades to ##
-## later versions will be easier. ##
-## Licence: LGPL ##
-##################################################################
-
-use LWP::UserAgent;
-use strict;
-
-package Geo::OSM::APIClient;
-use Geo::OSM::OsmReaderV3;
-use MIME::Base64;
-use HTTP::Request;
-use Carp;
-use Encode;
-use POSIX qw(sigprocmask);
-
-sub new
-{
- my( $class, %attr ) = @_;
-
- my $obj = bless {}, $class;
-
- my $url = $attr{api};
- if( not defined $url )
- {
- croak "Did not specify aip url";
- }
-
- $url =~ s,/$,,; # Strip trailing slash
- $obj->{url} = $url;
- $obj->{client} = new LWP::UserAgent(agent => 'Geo::OSM::APIClientV4', timeout => 1200);
-
- if( defined $attr{username} and defined $attr{password} )
- {
- if( $obj->{url} =~ m,http://([\w.]+)/, )
- {
- $obj->{client}->credentials( "$1:80", "Web Password", $attr{username}, $attr{password} );
- }
- my $encoded = MIME::Base64::encode_base64("$attr{username}:$attr{password}","");
- $obj->{client}->default_header( "Authorization", "Basic $encoded" );
- }
-
- $obj->{reader} = init Geo::OSM::OsmReader( sub { _process($obj,@_) } );
- return $obj;
-}
-
-# This is the callback from the parser. If checks if the buffer is defined.
-# If the buffer is an array, append the new object. If the buffer is a proc,
-# call it.
-sub _process
-{
- my($obj,$ent) = @_;
- if( not defined $obj->{buffer} )
- { die "Internal error: Received object with buffer" }
- if( ref $obj->{buffer} eq "ARRAY" )
- { push @{$obj->{buffer}}, $ent; return }
- if( ref $obj->{buffer} eq "CODE" )
- { $obj->{buffer}->($ent); return }
- die "Internal error: don't know what to do with buffer $obj->{buffer}";
-}
-
-# Utility function to handle the temporary blocking of signals in a way that
-# works with exception handling.
-sub _with_blocked_sigs(&)
-{
- my $ss = new POSIX::SigSet( &POSIX::SIGINT );
- my $func = shift;
- my $os = new POSIX::SigSet;
- sigprocmask( &POSIX::SIG_BLOCK, $ss, $os );
- my $ret = eval { &$func };
- sigprocmask( &POSIX::SIG_SETMASK, $os );
- die $@ if $@;
- return $ret;
-}
-
-sub _request
-{
- my $self = shift;
- my $req = shift;
- return _with_blocked_sigs { $self->{client}->request($req) };
-}
-
-sub last_error_code
-{
- return shift->{last_error}->code;
-}
-
-sub last_error_message
-{
- return shift->{last_error}->message;
-}
-
-sub create
-{
- my( $self, $ent ) = @_;
- my $oldid = $ent->id;
- $ent->set_id(0);
- my $content = encode("utf-8", $ent->full_xml);
- $ent->set_id($oldid);
- my $req = new HTTP::Request PUT => $self->{url}."/".$ent->type()."/create";
- $req->content($content);
-
-# print $req->as_string;
-
- my $res = $self->_request($req);
-
-# print $res->as_string;
-
- if( $res->code == 200 )
- {
- return $res->content
- }
-
- $self->{last_error} = $res;
- return undef;
-}
-
-sub modify
-{
- my( $self, $ent ) = @_;
- my $content = encode("utf-8", $ent->full_xml);
- my $req = new HTTP::Request PUT => $self->{url}."/".$ent->type()."/".$ent->id();
- $req->content($content);
-
-# print $req->as_string;
-
- my $res = $self->_request($req);
-
- return $ent->id() if $res->code == 200;
- $self->{last_error} = $res;
- return undef;
-}
-
-sub delete
-{
- my( $self, $ent ) = @_;
- my $content = encode("utf-8", $ent->full_xml);
- my $req = new HTTP::Request DELETE => $self->{url}."/".$ent->type()."/".$ent->id();
-# $req->content($content);
-
-# print $req->as_string;
-
- my $res = $self->_request($req);
-
- return $ent->id() if $res->code == 200;
- $self->{last_error} = $res;
- return undef;
-}
-
-sub get($$)
-{
- my $self = shift;
- my $type = shift;
- my $id = shift;
-
- my $req = new HTTP::Request GET => $self->{url}."/$type/$id";
-
- my $res = $self->_request($req);
-
- if( $res->code != 200 )
- {
- $self->{last_error} = $res;
- return undef;
- }
-
- my @res;
- $self->{buffer} = \@res;
- $self->{reader}->parse($res->content);
- undef $self->{buffer};
- if( scalar(@res) != 1 )
- {
- die "Unexpected response for get_$type [".$res->content()."]\n";
- }
-
- return $res[0];
-}
-
-sub get_node($)
-{
- my $self = shift;
- return $self->get("node",shift);
-}
-
-sub get_way($)
-{
- my $self = shift;
- return $self->get("way",shift);
-}
-
-sub get_segment($)
-{
- my $self = shift;
- return $self->get("segment",shift);
-}
-
-
-sub map($$$$)
-{
- my $self = shift;
- my @bbox = @_;
-
- my $req = new HTTP::Request GET => $self->{url}."/map?bbox=$bbox[0],$bbox[1],$bbox[2],$bbox[3]";
-
- my $res = $self->_request($req);
-
- if( $res->code != 200 )
- {
- $self->{last_error} = $res;
- return undef;
- }
-
- my @res;
- $self->{buffer} = \@res;
- $self->{reader}->parse($res->content);
- undef $self->{buffer};
-
- return \@res;
-}
-
-
-1;
diff --git a/navit/script/osm/Geo/OSM/APIClientV5.pm b/navit/script/osm/Geo/OSM/APIClientV5.pm
deleted file mode 100644
index 5bee097de..000000000
--- a/navit/script/osm/Geo/OSM/APIClientV5.pm
+++ /dev/null
@@ -1,327 +0,0 @@
-##################################################################
-## APIClientV5.pm - General Perl client for the API ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Currently only supports uploading. Note the package actually ##
-## creates a package named Geo::OSM::APIClient so upgrades to ##
-## later versions will be easier. ##
-## Licence: LGPL ##
-##################################################################
-
-use LWP::UserAgent;
-use strict;
-
-package Geo::OSM::APIClient;
-use Geo::OSM::OsmReaderV5;
-use MIME::Base64;
-use HTTP::Request;
-use Carp;
-use Encode;
-use POSIX qw(sigprocmask);
-use URI;
-use Socket qw(inet_ntoa);
-
-sub new
-{
- my( $class, %attr ) = @_;
-
- my $obj = bless {}, $class;
-
- my $url = $attr{api};
- if( not defined $url )
- {
- croak "Did not specify api url";
- }
-
- $url =~ s,/$,,; # Strip trailing slash
- $obj->{url} = URI->new($url);
- $obj->{client} = new LWP::UserAgent(agent => 'Geo::OSM::APIClientV5', timeout => 1200);
-
- if( defined $attr{username} and defined $attr{password} )
- {
- my $encoded = MIME::Base64::encode_base64("$attr{username}:$attr{password}","");
- $obj->{client}->default_header( "Authorization", "Basic $encoded" );
- }
-
- # We had the problem of the client doing a DNS lookup each request. To
- # solve this we do a gethostbyname now and store that in the URI.
- {
- my $addr;
- (undef, undef, undef, undef, $addr) = gethostbyname($obj->{url}->host);
- if( defined $addr )
- {
- $obj->{client}->default_header( "Host", $obj->{url}->host );
- $obj->{url}->host( inet_ntoa($addr) );
- print STDERR "Using address: ".$obj->{url}->as_string()."\n";
- }
- }
- # Hack to avoid protocol lookups each time
- @LWP::Protocol::http::EXTRA_SOCK_OPTS = ( 'Proto' => 6 );
-
- $obj->{reader} = init Geo::OSM::OsmReader( sub { _process($obj,@_) } );
- return $obj;
-}
-
-# This is the callback from the parser. If checks if the buffer is defined.
-# If the buffer is an array, append the new object. If the buffer is a proc,
-# call it.
-sub _process
-{
- my($obj,$ent) = @_;
- if( not defined $obj->{buffer} )
- { die "Internal error: Received object with buffer" }
- if( ref $obj->{buffer} eq "ARRAY" )
- { push @{$obj->{buffer}}, $ent; return }
- if( ref $obj->{buffer} eq "CODE" )
- { $obj->{buffer}->($ent); return }
- die "Internal error: don't know what to do with buffer $obj->{buffer}";
-}
-
-# Utility function to handle the temporary blocking of signals in a way that
-# works with exception handling.
-sub _with_blocked_sigs(&)
-{
- my $ss = new POSIX::SigSet( &POSIX::SIGINT );
- my $func = shift;
- my $os = new POSIX::SigSet;
- sigprocmask( &POSIX::SIG_BLOCK, $ss, $os );
- my $ret = eval { &$func };
- sigprocmask( &POSIX::SIG_SETMASK, $os );
- die $@ if $@;
- return $ret;
-}
-
-sub _request
-{
- my $self = shift;
- my $req = shift;
- return _with_blocked_sigs { $self->{client}->request($req) };
-}
-
-sub last_error_code
-{
- my $self=shift;
- croak "No last error" unless defined $self->{last_error};
- return $self->{last_error}->code;
-}
-
-sub last_error_message
-{
- my $self=shift;
- croak "No last error" unless defined $self->{last_error};
- return $self->{last_error}->message;
-}
-
-sub create($)
-{
- my( $self, $ent ) = @_;
- my $oldid = $ent->id;
- $ent->set_id(0);
- my $content = encode("utf-8", $ent->full_xml);
- $ent->set_id($oldid);
- my $req = new HTTP::Request PUT => $self->{url}."/".$ent->type()."/create";
- $req->content($content);
-
-# print $req->as_string;
-
- my $res = $self->_request($req);
-
-# print $res->as_string;
-
- if( $res->code == 200 )
- {
- return $res->content
- }
-
- $self->{last_error} = $res;
- return undef;
-}
-
-sub modify($)
-{
- my( $self, $ent ) = @_;
- my $content = encode("utf-8", $ent->full_xml);
- my $req = new HTTP::Request PUT => $self->{url}."/".$ent->type()."/".$ent->id();
- $req->content($content);
-
-# print $req->as_string;
-
- my $res = $self->_request($req);
-
- return $ent->id() if $res->code == 200;
- $self->{last_error} = $res;
- return undef;
-}
-
-sub delete($)
-{
- my( $self, $ent ) = @_;
- my $content = encode("utf-8", $ent->full_xml);
- my $req = new HTTP::Request DELETE => $self->{url}."/".$ent->type()."/".$ent->id();
-# $req->content($content);
-
-# print $req->as_string;
-
- my $res = $self->_request($req);
-
- return $ent->id() if $res->code == 200;
- $self->{last_error} = $res;
- return undef;
-}
-
-sub get($$)
-{
- my $self = shift;
- my $type = shift;
- my $id = shift;
- my $extra = shift;
-
- $extra = "/".$extra if (defined $extra);
- $extra = "" if not defined $extra;
-
- my $req = new HTTP::Request GET => $self->{url}."/$type/$id$extra";
-
- my $res = $self->_request($req);
-
- if( $res->code != 200 )
- {
- $self->{last_error} = $res;
- return undef;
- }
-
- my @res;
- $self->{buffer} = \@res;
- $self->{reader}->parse($res->content);
- undef $self->{buffer};
- if($extra =~ /history/)
- {
- return @res;
- }
- if(scalar(@res) != 1 )
- {
- die "Unexpected response for get_$type [".$res->content()."]\n";
- }
-
- return $res[0];
-}
-
-sub resurrect($$)
-{
- my $self = shift;
- my $type = shift;
- my $id = shift;
-
- my $ret = $self->get($type, $id);
- if (defined $ret || !defined $self->{last_error} || ($self->{last_error}->code != 410)) {
- return $ret;
- }
-
- my @ents = $self->get($type, $id, 'history');
- # we want the last _visible_ one
- my $ent = $ents[-2];
- if ($ent->type eq 'way') {
- printf("resurrecting way, checking all member nodes...\n");
- foreach my $node_id (@{$ent->nodes()}) {
- printf("checking node: $node_id...");
- my $node_ent = $self->get('node', $node_id);
- if (defined $node_ent) {
- printf("good\n");
- next;
- }
- printf("attempting to resurrect node: $node_id...");
- $node_ent = $self->resurrect('node', $node_id);
- if (!defined $node_ent) {
- die "failed";
- }
- printf("success!\n");
- }
- printf("all way nodes are OK, ");
- }
- printf("attempting to resurrect %s...", $ent->type);
- $ret = $self->modify($ent);
- if ($ret == $ent->id) {
- printf("ok\n");
- return $ret;
- }
- die sprintf("unable to resurrect $type $id: %s\n", $self->last_error_message);
-}
-
-sub get_node($)
-{
- my $self = shift;
- return $self->get("node",shift);
-}
-
-sub get_way($)
-{
- my $self = shift;
- return $self->get("way",shift);
-}
-
-sub get_relation($)
-{
- my $self = shift;
- return $self->get("relation",shift);
-}
-
-sub get_subtype($$)
-{
- my $self = shift;
- my $type = shift;
- my $id = shift;
- my $subtype = shift;
-
- my $req = new HTTP::Request GET => $self->{url}."/$type/$id/$subtype";
-
- my $res = $self->_request($req);
-
- if( $res->code != 200 )
- {
- $self->{last_error} = $res;
- return undef;
- }
-
- my @res;
- $self->{buffer} = \@res;
- $self->{reader}->parse($res->content);
- undef $self->{buffer};
- if( scalar(@res) < 1 )
- {
- die "Unexpected response for get_subtype($type,$id,$subtype) [".$res->content()."]\n";
- }
-
- return \@res;
-}
-
-sub get_node_ways($)
-{
- my $self = shift;
- my $id = shift;
-
- return $self->get_subtype("node",$id,"ways");
-}
-
-sub map($$$$)
-{
- my $self = shift;
- my @bbox = @_;
-
- my $req = new HTTP::Request GET => $self->{url}."/map?bbox=$bbox[0],$bbox[1],$bbox[2],$bbox[3]";
-
- my $res = $self->_request($req);
-
- if( $res->code != 200 )
- {
- $self->{last_error} = $res;
- return undef;
- }
-
- my @res;
- $self->{buffer} = \@res;
- $self->{reader}->parse($res->content);
- undef $self->{buffer};
-
- return \@res;
-}
-
-1;
diff --git a/navit/script/osm/Geo/OSM/APIClientV6.pm b/navit/script/osm/Geo/OSM/APIClientV6.pm
deleted file mode 100644
index d659ac14c..000000000
--- a/navit/script/osm/Geo/OSM/APIClientV6.pm
+++ /dev/null
@@ -1,364 +0,0 @@
-##################################################################
-## APIClientV6.pm - General Perl client for the API ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Currently only supports uploading. Note the package actually ##
-## creates a package named Geo::OSM::APIClient so upgrades to ##
-## later versions will be easier. ##
-## Licence: LGPL ##
-##################################################################
-
-use LWP::UserAgent;
-use strict;
-
-package Geo::OSM::APIClient;
-use Geo::OSM::OsmReaderV6;
-use MIME::Base64;
-use HTTP::Request;
-use Carp;
-use Encode;
-use POSIX qw(sigprocmask);
-use URI;
-use Socket qw(inet_ntoa);
-
-sub new
-{
- my( $class, %attr ) = @_;
-
- my $obj = bless {}, $class;
-
- my $url = $attr{api};
- if( not defined $url )
- {
- croak "Did not specify api url";
- }
-
- $url =~ s,/$,,; # Strip trailing slash
- $obj->{url} = URI->new($url);
- $obj->{client} = new LWP::UserAgent(agent => 'Geo::OSM::APIClientV6', timeout => 1200);
-
- if( defined $attr{username} and defined $attr{password} )
- {
- my $encoded = MIME::Base64::encode_base64("$attr{username}:$attr{password}","");
- $obj->{client}->default_header( "Authorization", "Basic $encoded" );
- }
-
- # We had the problem of the client doing a DNS lookup each request. To
- # solve this we do a gethostbyname now and store that in the URI.
- {
- my $addr;
- (undef, undef, undef, undef, $addr) = gethostbyname($obj->{url}->host);
- if( defined $addr )
- {
- $obj->{client}->default_header( "Host", $obj->{url}->host );
- $obj->{url}->host( inet_ntoa($addr) );
- print STDERR "Using address: ".$obj->{url}->as_string()."\n";
- }
- }
- # Hack to avoid protocol lookups each time
- @LWP::Protocol::http::EXTRA_SOCK_OPTS = ( 'Proto' => 6 );
-
- $obj->{reader} = init Geo::OSM::OsmReader( sub { _process($obj,@_) } );
- return $obj;
-}
-
-# This is the callback from the parser. If checks if the buffer is defined.
-# If the buffer is an array, append the new object. If the buffer is a proc,
-# call it.
-sub _process
-{
- my($obj,$ent) = @_;
- if( not defined $obj->{buffer} )
- { die "Internal error: Received object with buffer" }
- if( ref $obj->{buffer} eq "ARRAY" )
- { push @{$obj->{buffer}}, $ent; return }
- if( ref $obj->{buffer} eq "CODE" )
- { $obj->{buffer}->($ent); return }
- die "Internal error: don't know what to do with buffer $obj->{buffer}";
-}
-
-# Utility function to handle the temporary blocking of signals in a way that
-# works with exception handling.
-sub _with_blocked_sigs(&)
-{
- my $ss = new POSIX::SigSet( &POSIX::SIGINT );
- my $func = shift;
- my $os = new POSIX::SigSet;
- sigprocmask( &POSIX::SIG_BLOCK, $ss, $os );
- my $ret = eval { &$func };
- sigprocmask( &POSIX::SIG_SETMASK, $os );
- die $@ if $@;
- return $ret;
-}
-
-sub _request
-{
- my $self = shift;
- my $req = shift;
- return _with_blocked_sigs { $self->{client}->request($req) };
-}
-
-sub last_error_code
-{
- my $self=shift;
- croak "No last error" unless defined $self->{last_error};
- return $self->{last_error}->code;
-}
-
-sub last_error_message
-{
- my $self=shift;
- croak "No last error" unless defined $self->{last_error};
- return $self->{last_error}->message;
-}
-
-sub create_changeset
-{
- my( $self ) = @_;
- my $req = new HTTP::Request PUT => $self->{url}."/changeset/create";
- my $content="<osm><changeset></changeset></osm>";
- $req->content($content);
- my $res = $self->_request($req);
-
- if( $res->code == 200 )
- {
- $self->{changeset}=$res->content;
- return 1;
- }
-
- $self->{last_error} = $res;
- $self->{changeset}=undef;
- return 0;
-
-}
-
-sub close_changeset
-{
- my( $self ) = @_;
- my $req = new HTTP::Request PUT => $self->{url}."/changeset/".$self->{changeset}."/close";
- my $res = $self->_request($req);
-
- $self->{changeset}=undef;
- if( $res->code == 200 )
- {
- return 1;
- }
- return 0;
-
-}
-
-sub create($)
-{
- my( $self, $ent ) = @_;
- my $oldid = $ent->id;
- $ent->set_id(0);
- my $content = encode("utf-8", $ent->full_xml);
- $ent->set_id($oldid);
- my $req = new HTTP::Request PUT => $self->{url}."/".$ent->type()."/create";
- $req->content($content);
-
-# print $req->as_string;
-
- my $res = $self->_request($req);
-
-# print $res->as_string;
-
- if( $res->code == 200 )
- {
- return $res->content
- }
-
- $self->{last_error} = $res;
- return undef;
-}
-
-sub modify($)
-{
- my( $self, $ent ) = @_;
- $ent->set_changeset($self->{changeset});
- my $content = encode("utf-8", $ent->full_xml);
- my $req = new HTTP::Request PUT => $self->{url}."/".$ent->type()."/".$ent->id();
- $req->content($content);
-
-# print $req->as_string;
-
- my $res = $self->_request($req);
-
- return $ent->id() if $res->code == 200;
- $self->{last_error} = $res;
- return undef;
-}
-
-sub delete($)
-{
- my( $self, $ent ) = @_;
- $ent->set_changeset($self->{changeset});
- my $content = encode("utf-8", $ent->full_xml);
- my $req = new HTTP::Request DELETE => $self->{url}."/".$ent->type()."/".$ent->id();
- $req->content($content);
-
-# print $req->as_string;
-
- my $res = $self->_request($req);
-
- return $ent->id() if $res->code == 200;
- $self->{last_error} = $res;
- return undef;
-}
-
-sub get($$)
-{
- my $self = shift;
- my $type = shift;
- my $id = shift;
- my $extra = shift;
-
- $extra = "/".$extra if (defined $extra);
- $extra = "" if not defined $extra;
-
- my $req = new HTTP::Request GET => $self->{url}."/$type/$id$extra";
-
- my $res = $self->_request($req);
-
- if( $res->code != 200 )
- {
- $self->{last_error} = $res;
- return undef;
- }
-
- my @res;
- $self->{buffer} = \@res;
- $self->{reader}->parse($res->content);
- undef $self->{buffer};
- if($extra =~ /history/)
- {
- return @res;
- }
- if(scalar(@res) != 1 )
- {
- die "Unexpected response for get_$type [".$res->content()."]\n";
- }
-
- return $res[0];
-}
-
-sub resurrect($$)
-{
- my $self = shift;
- my $type = shift;
- my $id = shift;
-
- my $ret = $self->get($type, $id);
- if (defined $ret || !defined $self->{last_error} || ($self->{last_error}->code != 410)) {
- return $ret;
- }
-
- my @ents = $self->get($type, $id, 'history');
- # we want the last _visible_ one
- my $ent = $ents[-2];
- if ($ent->type eq 'way') {
- printf("resurrecting way, checking all member nodes...\n");
- foreach my $node_id (@{$ent->nodes()}) {
- printf("checking node: $node_id...");
- my $node_ent = $self->get('node', $node_id);
- if (defined $node_ent) {
- printf("good\n");
- next;
- }
- printf("attempting to resurrect node: $node_id...");
- $node_ent = $self->resurrect('node', $node_id);
- if (!defined $node_ent) {
- die "failed";
- }
- printf("success!\n");
- }
- printf("all way nodes are OK, ");
- }
- printf("attempting to resurrect %s...", $ent->type);
- $ret = $self->modify($ent);
- if ($ret == $ent->id) {
- printf("ok\n");
- return $ret;
- }
- die sprintf("unable to resurrect $type $id: %s\n", $self->last_error_message);
-}
-
-sub get_node($)
-{
- my $self = shift;
- return $self->get("node",shift);
-}
-
-sub get_way($)
-{
- my $self = shift;
- return $self->get("way",shift);
-}
-
-sub get_relation($)
-{
- my $self = shift;
- return $self->get("relation",shift);
-}
-
-sub get_subtype($$)
-{
- my $self = shift;
- my $type = shift;
- my $id = shift;
- my $subtype = shift;
-
- my $req = new HTTP::Request GET => $self->{url}."/$type/$id/$subtype";
-
- my $res = $self->_request($req);
-
- if( $res->code != 200 )
- {
- $self->{last_error} = $res;
- return undef;
- }
-
- my @res;
- $self->{buffer} = \@res;
- $self->{reader}->parse($res->content);
- undef $self->{buffer};
- if( scalar(@res) < 1 )
- {
- die "Unexpected response for get_subtype($type,$id,$subtype) [".$res->content()."]\n";
- }
-
- return \@res;
-}
-
-sub get_node_ways($)
-{
- my $self = shift;
- my $id = shift;
-
- return $self->get_subtype("node",$id,"ways");
-}
-
-sub map($$$$)
-{
- my $self = shift;
- my @bbox = @_;
-
- my $req = new HTTP::Request GET => $self->{url}."/map?bbox=$bbox[0],$bbox[1],$bbox[2],$bbox[3]";
-
- my $res = $self->_request($req);
-
- if( $res->code != 200 )
- {
- $self->{last_error} = $res;
- return undef;
- }
-
- my @res;
- $self->{buffer} = \@res;
- $self->{reader}->parse($res->content);
- undef $self->{buffer};
-
- return \@res;
-}
-
-1;
diff --git a/navit/script/osm/Geo/OSM/EntitiesV3.pm b/navit/script/osm/Geo/OSM/EntitiesV3.pm
deleted file mode 100644
index 2708463c7..000000000
--- a/navit/script/osm/Geo/OSM/EntitiesV3.pm
+++ /dev/null
@@ -1,296 +0,0 @@
-##################################################################
-## EntitiesV3.pm - Wraps entities used by OSM ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Package that wraps the entities used by OSM into Perl ##
-## object, so they can be easily manipulated by various ##
-## packages. ##
-## ##
-## Licence: LGPL ##
-##################################################################
-
-use XML::Writer;
-use strict;
-
-############################################################################
-## Top level Entity type, parent of all types, includes stuff relating to ##
-## tags and IDs which are shared by all entity types ##
-############################################################################
-package Geo::OSM::Entity;
-use POSIX qw(strftime);
-
-use Carp;
-
-sub _new
-{
- bless {}, shift;
-}
-
-sub _get_writer
-{
- my($self,$res) = @_;
- return new XML::Writer(OUTPUT => $res, NEWLINES => 0, ENCODING => 'utf-8');
-}
-
-sub add_tag
-{
- my($self, $k,$v) = @_;
- push @{$self->{tags}}, $k, $v;
-}
-
-sub add_tags
-{
- my($self, @tags) = @_;
- if( scalar(@tags)&1 )
- { croak "add_tags requires an even number of arguments" }
- push @{$self->{tags}}, @tags;
-}
-
-sub set_tags
-{
- my($self,$tags) = @_;
- if( ref($tags) eq "HASH" )
- { $self->{tags} = [%$tags] }
- elsif( ref($tags) eq "ARRAY" )
- { $self->{tags} = [@$tags] }
- else
- { croak "set_tags must be HASH or ARRAY" }
-}
-
-sub tags
-{
- my $self = shift;
- return [@{$self->{tags}}]; # Return copy
-}
-
-sub tag_xml
-{
- my ($self,$writer) = @_;
- my @a = @{$self->{tags}};
-
- my $str = "";
-
- while( my($k,$v) = splice @a, 0, 2 )
- {
- $writer->emptyTag( "tag", 'k' => $k, 'v' => $v );
- }
-}
-
-our $_ID = -1;
-
-sub set_id
-{
- my($self,$id) = @_;
-
- if( not defined $id )
- { $id = $_ID-- }
- $self->{id} = $id;
-}
-
-sub id
-{
- my $self = shift;
- return $self->{id};
-}
-
-sub set_timestamp
-{
- my($self,$time) = @_;
- if( defined $time )
- { $self->{timestamp} = $time }
- else
- { $self->{timestamp} = strftime "%Y-%m-%dT%H:%M:%S+00:00", gmtime(time) }
-}
-
-sub timestamp
-{
- my $self = shift;
- return $self->{timestamp};
-}
-
-sub full_xml
-{
- my $self = shift;
- return qq(<?xml version="1.0"?>\n<osm version="0.4">\n).$self->xml()."</osm>\n";
-}
-
-package Geo::OSM::Way;
-our @ISA = qw(Geo::OSM::Entity);
-
-sub new
-{
- my($class, $attr, $tags, $segs) = @_;
-
- my $obj = bless $class->SUPER::_new(), $class;
-
- $obj->set_tags($tags);
- $obj->set_segs($segs);
- $obj->set_id($attr->{id} );
- $obj->set_timestamp( $attr->{timestamp} );
-
- return $obj;
-}
-
-sub type { return "way" }
-
-sub set_segs
-{
- my($self,$segs) = @_;
- $self->{segs} = $segs;
-}
-
-sub segs
-{
- my $self = shift;
- return [@{$self->{segs}}]; # Return a copy
-}
-
-sub xml
-{
- my $self = shift;
- my $str = "";
- my $writer = $self->_get_writer(\$str);
-
- $writer->startTag( "way", id => $self->id, timestamp => $self->timestamp );
- $self->tag_xml( $writer );
- for my $seg (@{$self->segs})
- {
- $writer->emptyTag( "seg", id => $seg );
- }
- $writer->endTag( "way" );
- $writer->end;
- return $str;
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my $incomplete = 0;
- my ($new_id) = $mapper->map('way',$self->id); # Determine mapped ID
- # It is ok for the new_id to be incomplete; it may be a create request
-
- my @new_segs = map { [ $mapper->map('segment',$_) ] } @{$self->segs};
- map { $incomplete |= $_->[1] } @new_segs;
- # incomplete tracks if any of the segs are incomplete
-
- my $new_ent = new Geo::OSM::Way( {id=>$new_id, timestamp=>$self->timestamp}, $self->tags, [map {$_->[0]} @new_segs] );
- return($new_ent,$incomplete);
-}
-
-package Geo::OSM::Segment;
-our @ISA = qw(Geo::OSM::Entity);
-
-sub new
-{
- my($class, $attr, $tags) = @_;
-
- my $obj = bless $class->SUPER::_new(), $class;
-
- $obj->set_tags($tags);
- $obj->set_id($attr->{id} );
- $obj->set_timestamp( $attr->{timestamp} );
- $obj->{from} = $attr->{from};
- $obj->{to} = $attr->{to};
-
- return $obj;
-}
-
-sub type { return "segment" }
-
-sub set_fromto
-{
- my($self,$from,$to) = @_;
- $self->{from} = $from;
- $self->{to} = $to;
-}
-
-sub from
-{
- shift->{from};
-}
-sub to
-{
- shift->{to};
-}
-
-sub xml
-{
- my $self = shift;
- my $str = "";
- my $writer = $self->_get_writer(\$str);
-
- $writer->startTag( "segment", id => $self->id, from => $self->from, to => $self->to, timestamp => $self->timestamp );
- $self->tag_xml( $writer );
- $writer->endTag( "segment" );
- $writer->end;
- return $str;
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my ($new_id) = $mapper->map('segment',$self->id);
- my ($new_from,$i1) = $mapper->map('node',$self->from);
- my ($new_to,$i2) = $mapper->map('node',$self->to);
- my $new_ent = new Geo::OSM::Segment( {id=>$new_id, timestamp=>$self->timestamp, from=>$new_from, to=>$new_to}, $self->tags );
- return($new_ent,$i1|$i2);
-}
-
-package Geo::OSM::Node;
-our @ISA = qw(Geo::OSM::Entity);
-
-sub new
-{
- my($class, $attr, $tags) = @_;
-
- my $obj = bless $class->SUPER::_new(), $class;
-
- $obj->set_tags($tags);
- $obj->set_id($attr->{id} );
- $obj->set_timestamp( $attr->{timestamp} );
- $obj->{lon} = $attr->{lon};
- $obj->{lat} = $attr->{lat};
-
- return $obj;
-}
-
-sub type { return "node" }
-
-sub set_latlon
-{
- my($self,$lat,$lon) = @_;
- $self->{lat} = $lat;
- $self->{lon} = $lon;
-}
-
-sub lat
-{
- shift->{lat};
-}
-sub lon
-{
- shift->{lon};
-}
-
-sub xml
-{
- my $self = shift;
- my $str = "";
- my $writer = $self->_get_writer(\$str);
-
- $writer->startTag( "node", id => $self->id, lat => $self->lat, lon => $self->lon, timestamp => $self->timestamp );
- $self->tag_xml( $writer );
- $writer->endTag( "node" );
- $writer->end;
- return $str;
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my ($new_id) = $mapper->map('node',$self->id);
- my $new_ent = new Geo::OSM::Node( {id=>$new_id, timestamp=>$self->timestamp, lat=>$self->lat, lon=>$self->lon}, $self->tags );
- return($new_ent,0);
-}
-
-1;
diff --git a/navit/script/osm/Geo/OSM/EntitiesV5.pm b/navit/script/osm/Geo/OSM/EntitiesV5.pm
deleted file mode 100644
index 625ff6b03..000000000
--- a/navit/script/osm/Geo/OSM/EntitiesV5.pm
+++ /dev/null
@@ -1,375 +0,0 @@
-##################################################################
-## EntitiesV3.pm - Wraps entities used by OSM ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Package that wraps the entities used by OSM into Perl ##
-## object, so they can be easily manipulated by various ##
-## packages. ##
-## ##
-## Licence: LGPL ##
-##################################################################
-
-use XML::Writer;
-use strict;
-
-############################################################################
-## Top level Entity type, parent of all types, includes stuff relating to ##
-## tags and IDs which are shared by all entity types ##
-############################################################################
-package Geo::OSM::Entity;
-use POSIX qw(strftime);
-
-use Carp;
-
-sub _new
-{
- bless {}, shift;
-}
-
-sub _get_writer
-{
- my($self,$res) = @_;
- return new XML::Writer(OUTPUT => $res, NEWLINES => 0, ENCODING => 'utf-8');
-}
-
-sub add_tag
-{
- my($self, $k,$v) = @_;
- push @{$self->{tags}}, $k, $v;
-}
-
-sub add_tags
-{
- my($self, @tags) = @_;
- if( scalar(@tags)&1 )
- { croak "add_tags requires an even number of arguments" }
- push @{$self->{tags}}, @tags;
-}
-
-sub set_tags
-{
- my($self,$tags) = @_;
- if( ref($tags) eq "HASH" )
- { $self->{tags} = [%$tags] }
- elsif( ref($tags) eq "ARRAY" )
- { $self->{tags} = [@$tags] }
- else
- { croak "set_tags must be HASH or ARRAY" }
-}
-
-sub tags
-{
- my $self = shift;
- return [@{$self->{tags}}]; # Return copy
-}
-
-sub tag_xml
-{
- my ($self,$writer) = @_;
- my @a = @{$self->{tags}};
-
- my $str = "";
-
- while( my($k,$v) = splice @a, 0, 2 )
- {
- $writer->emptyTag( "tag", 'k' => $k, 'v' => $v );
- }
-}
-
-our $_ID = -1;
-
-sub set_id
-{
- my($self,$id) = @_;
-
- if( not defined $id )
- { $id = $_ID-- }
- $self->{id} = $id;
-}
-
-sub id
-{
- my $self = shift;
- return $self->{id};
-}
-
-sub set_timestamp
-{
- my($self,$time) = @_;
- if( defined $time )
- { $self->{timestamp} = $time }
- else
- { $self->{timestamp} = strftime "%Y-%m-%dT%H:%M:%S+00:00", gmtime(time) }
-}
-
-sub timestamp
-{
- my $self = shift;
- return $self->{timestamp};
-}
-
-sub full_xml
-{
- my $self = shift;
- return qq(<?xml version="1.0"?>\n<osm version="0.5">\n).$self->xml()."</osm>\n";
-}
-
-package Geo::OSM::Way;
-our @ISA = qw(Geo::OSM::Entity);
-use Carp;
-
-sub new
-{
- my($class, $attr, $tags, $nodes) = @_;
-
- my $obj = bless $class->SUPER::_new(), $class;
-
- $obj->set_tags($tags);
- $obj->set_nodes($nodes);
- $obj->set_id($attr->{id} );
- $obj->set_timestamp( $attr->{timestamp} );
-
- return $obj;
-}
-
-sub type { return "way" }
-
-sub set_nodes
-{
- my($self,$nodes) = @_;
- if( not defined $nodes )
- { $nodes = [] }
- if( ref($nodes) ne "ARRAY" )
- { $nodes = [$nodes] }
- if( scalar( grep { (ref($_) ne "")?$_->type ne "node":$_ !~ /^-?\d+/ } @$nodes ) )
- { croak "Expected array of nodes" }
- $self->{nodes} = [map { ref($_)?$_->id:$_ } @$nodes];
-}
-
-sub nodes
-{
- my $self = shift;
- return [@{$self->{nodes}}]; # Return a copy
-}
-
-sub xml
-{
- my $self = shift;
- my $str = "";
- my $writer = $self->_get_writer(\$str);
-
- $writer->startTag( "way", id => $self->id, timestamp => $self->timestamp );
- $self->tag_xml( $writer );
- for my $node (@{$self->nodes})
- {
- $writer->emptyTag( "nd", ref => $node );
- }
- $writer->endTag( "way" );
- $writer->end;
- return $str;
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my $incomplete = 0;
- my ($new_id) = $mapper->map('way',$self->id); # Determine mapped ID
- # It is ok for the new_id to be incomplete; it may be a create request
-
- my @new_nodes = map { [ $mapper->map('node',$_) ] } @{$self->nodes};
- map { $incomplete |= $_->[1] } @new_nodes;
- # incomplete tracks if any of the segs are incomplete
-
- my $new_ent = new Geo::OSM::Way( {id=>$new_id, timestamp=>$self->timestamp}, $self->tags, [map {$_->[0]} @new_nodes] );
- return($new_ent,$incomplete);
-}
-
-package Geo::OSM::Relation::Member;
-use Carp;
-# Relation reference can be specified in several ways:
-# { type => $type, ref => $id [ , role => $str ] }
-# { ref => $obj [ , role => $str ] }
-# [ $type, $id [,$role] ]
-# [ $obj, [,$role] ]
-sub new
-{
- my $class = shift;
- my $arg = shift;
- return $arg if ref($arg) eq $class; # Return if already object
- if( ref($arg) eq "ARRAY" )
- {
- if( ref $arg->[0] )
- { $arg = { ref => $arg->[0], role => $arg->[1] } }
- else
- { $arg = { type => $arg->[0], ref => $arg->[1], role => $arg->[2] } }
- }
- if( ref($arg) eq "HASH" )
- {
- if( ref $arg->{ref} )
- { $arg = [ $arg->{ref}->type, $arg->{ref}->id, $arg->{role} ] }
- else
- { $arg = [ $arg->{type}, $arg->{ref}, $arg->{role} ] }
- }
- else
- { croak "Relation reference must be array or hash" }
- croak "Bad type of member '$arg->[0]'"
- unless $arg->[0] =~ /^(way|node|relation)$/;
- croak "Bad member id '$arg->[1]'"
- unless $arg->[1] =~ /^-?\d+$/;
- $arg->[2] ||= "";
-
- return bless $arg, $class;
-}
-
-sub member_type { shift->[0] }
-sub ref { shift->[1] }
-sub role { shift->[2] }
-
-sub type { return "relation:member" }
-
-sub _xml
-{
- my $self = shift;
- my $writer = shift;
-
- $writer->emptyTag( "member", type => $self->member_type, ref => $self->ref, role => $self->role );
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my ($new_ref,$incomplete) = $mapper->map($self->member_type,$self->ref);
- my $new_member = new Geo::OSM::Relation::Member( { type => $self->member_type, ref => $new_ref, role => $self->role } );
- return($new_member,$incomplete);
-}
-
-package Geo::OSM::Relation;
-our @ISA = qw(Geo::OSM::Entity);
-
-sub new
-{
- my($class, $attr, $tags, $members) = @_;
-
- my $obj = bless $class->SUPER::_new(), $class;
-
- $obj->set_tags($tags);
- $obj->set_members($members);
- $obj->set_id($attr->{id} );
- $obj->set_timestamp( $attr->{timestamp} );
-
- return $obj;
-}
-
-sub set_members
-{
- my($self,$members) = @_;
- if( not defined $members )
- { $members = [] }
- if( ref($members) ne "ARRAY" )
- { $members = [$members] }
- $self->{members} = [map { new Geo::OSM::Relation::Member($_) } @$members];
-}
-
-sub members
-{
- my $self = shift;
- return [@{$self->{members}}];
-}
-
-sub type { return "relation" }
-
-sub xml
-{
- my $self = shift;
- my $str = "";
- my $writer = $self->_get_writer(\$str);
-
- $writer->startTag( "relation", id => $self->id, timestamp => $self->timestamp );
- $self->tag_xml( $writer );
- # Write members
- foreach my $member (@{$self->{members}})
- { $member->_xml( $writer ) }
- $writer->endTag( "relation" );
- $writer->end;
- return $str;
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my $incomplete = 0;
-
- my ($new_id) = $mapper->map('relation',$self->id);
- my @new_members = map { [ $_->map($mapper) ] } @{$self->members};
- map { $incomplete |= $_->[1] } @new_members;
- # incomplete tracks if any of the members are incomplete
- my $new_ent = new Geo::OSM::Relation( {id=>$new_id, timestamp=>$self->timestamp}, $self->tags, [map {$_->[0]} @new_members] );
- return($new_ent,$incomplete);
-}
-
-package Geo::OSM::Node;
-use Carp;
-our @ISA = qw(Geo::OSM::Entity);
-
-sub new
-{
- my($class, $attr, $tags) = @_;
-
- my $obj = bless $class->SUPER::_new(), $class;
-
- $obj->set_tags($tags);
- $obj->set_id($attr->{id} );
- $obj->set_timestamp( $attr->{timestamp} );
- if( $attr->{lon} !~ /^[-+]?\d+(\.\d+)?([eE][+-]?\d+)?$/ or
- $attr->{lat} !~ /^[-+]?\d+(\.\d+)?([eE][+-]?\d+)?$/ )
- {
- croak "Invalid lat,lon values ($attr->{lat},$attr->{lon})\n";
- }
- $obj->{lon} = $attr->{lon};
- $obj->{lat} = $attr->{lat};
-
- return $obj;
-}
-
-sub type { return "node" }
-
-sub set_latlon
-{
- my($self,$lat,$lon) = @_;
- $self->{lat} = $lat;
- $self->{lon} = $lon;
-}
-
-sub lat
-{
- shift->{lat};
-}
-sub lon
-{
- shift->{lon};
-}
-
-sub xml
-{
- my $self = shift;
- my $str = "";
- my $writer = $self->_get_writer(\$str);
-
- $writer->startTag( "node", id => $self->id, lat => $self->lat, lon => $self->lon, timestamp => $self->timestamp );
- $self->tag_xml( $writer );
- $writer->endTag( "node" );
- $writer->end;
- return $str;
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my ($new_id) = $mapper->map('node',$self->id);
- my $new_ent = new Geo::OSM::Node( {id=>$new_id, timestamp=>$self->timestamp, lat=>$self->lat, lon=>$self->lon}, $self->tags );
- return($new_ent,0);
-}
-
-
-
-1;
diff --git a/navit/script/osm/Geo/OSM/EntitiesV6.pm b/navit/script/osm/Geo/OSM/EntitiesV6.pm
deleted file mode 100644
index 8747c17f0..000000000
--- a/navit/script/osm/Geo/OSM/EntitiesV6.pm
+++ /dev/null
@@ -1,404 +0,0 @@
-##################################################################
-## EntitiesV3.pm - Wraps entities used by OSM ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Package that wraps the entities used by OSM into Perl ##
-## object, so they can be easily manipulated by various ##
-## packages. ##
-## ##
-## Licence: LGPL ##
-##################################################################
-
-use XML::Writer;
-use strict;
-
-############################################################################
-## Top level Entity type, parent of all types, includes stuff relating to ##
-## tags and IDs which are shared by all entity types ##
-############################################################################
-package Geo::OSM::Entity;
-use POSIX qw(strftime);
-
-use Carp;
-
-sub _new
-{
- bless {}, shift;
-}
-
-sub _get_writer
-{
- my($self,$res) = @_;
- return new XML::Writer(OUTPUT => $res, NEWLINES => 0, ENCODING => 'utf-8');
-}
-
-sub add_tag
-{
- my($self, $k,$v) = @_;
- push @{$self->{tags}}, $k, $v;
-}
-
-sub add_tags
-{
- my($self, @tags) = @_;
- if( scalar(@tags)&1 )
- { croak "add_tags requires an even number of arguments" }
- push @{$self->{tags}}, @tags;
-}
-
-sub set_tags
-{
- my($self,$tags) = @_;
- if( ref($tags) eq "HASH" )
- { $self->{tags} = [%$tags] }
- elsif( ref($tags) eq "ARRAY" )
- { $self->{tags} = [@$tags] }
- else
- { croak "set_tags must be HASH or ARRAY" }
-}
-
-sub tags
-{
- my $self = shift;
- return [@{$self->{tags}}]; # Return copy
-}
-
-sub tag_xml
-{
- my ($self,$writer) = @_;
- my @a = @{$self->{tags}};
-
- my $str = "";
-
- while( my($k,$v) = splice @a, 0, 2 )
- {
- $writer->emptyTag( "tag", 'k' => $k, 'v' => $v );
- }
-}
-
-our $_ID = -1;
-
-sub set_id
-{
- my($self,$id) = @_;
-
- if( not defined $id )
- { $id = $_ID-- }
- $self->{id} = $id;
-}
-
-sub id
-{
- my $self = shift;
- return $self->{id};
-}
-
-sub set_timestamp
-{
- my($self,$time) = @_;
- if( defined $time )
- { $self->{timestamp} = $time }
- else
- { $self->{timestamp} = strftime "%Y-%m-%dT%H:%M:%S+00:00", gmtime(time) }
-}
-
-sub timestamp
-{
- my $self = shift;
- return $self->{timestamp};
-}
-
-sub set_changeset
-{
- my($self,$changeset) = @_;
- $self->{changeset} = $changeset;
-}
-
-sub changeset
-{
- shift->{changeset};
-}
-
-sub set_version
-{
- my($self,$version) = @_;
- $self->{version} = $version;
-}
-
-sub version
-{
- shift->{version};
-}
-
-sub full_xml
-{
- my $self = shift;
- return qq(<?xml version="1.0"?>\n<osm version="0.6">\n).$self->xml()."</osm>\n";
-}
-
-package Geo::OSM::Way;
-our @ISA = qw(Geo::OSM::Entity);
-use Carp;
-
-sub new
-{
- my($class, $attr, $tags, $nodes) = @_;
-
- my $obj = bless $class->SUPER::_new(), $class;
-
- $obj->set_tags($tags);
- $obj->set_nodes($nodes);
- $obj->set_id($attr->{id} );
- $obj->set_timestamp( $attr->{timestamp} );
- $obj->set_changeset( $attr->{changeset} );
- $obj->set_version( $attr->{version} );
-
- return $obj;
-}
-
-sub type { return "way" }
-
-sub set_nodes
-{
- my($self,$nodes) = @_;
- if( not defined $nodes )
- { $nodes = [] }
- if( ref($nodes) ne "ARRAY" )
- { $nodes = [$nodes] }
- if( scalar( grep { (ref($_) ne "")?$_->type ne "node":$_ !~ /^-?\d+/ } @$nodes ) )
- { croak "Expected array of nodes" }
- $self->{nodes} = [map { ref($_)?$_->id:$_ } @$nodes];
-}
-
-sub nodes
-{
- my $self = shift;
- return [@{$self->{nodes}}]; # Return a copy
-}
-
-sub xml
-{
- my $self = shift;
- my $str = "";
- my $writer = $self->_get_writer(\$str);
-
- $writer->startTag( "way", id => $self->id, timestamp => $self->timestamp, changeset => $self->changeset, version => $self->version);
- $self->tag_xml( $writer );
- for my $node (@{$self->nodes})
- {
- $writer->emptyTag( "nd", ref => $node );
- }
- $writer->endTag( "way" );
- $writer->end;
- return $str;
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my $incomplete = 0;
- my ($new_id) = $mapper->map('way',$self->id); # Determine mapped ID
- # It is ok for the new_id to be incomplete; it may be a create request
-
- my @new_nodes = map { [ $mapper->map('node',$_) ] } @{$self->nodes};
- map { $incomplete |= $_->[1] } @new_nodes;
- # incomplete tracks if any of the segs are incomplete
-
- my $new_ent = new Geo::OSM::Way( {id=>$new_id, timestamp=>$self->timestamp}, $self->tags, [map {$_->[0]} @new_nodes] );
- return($new_ent,$incomplete);
-}
-
-package Geo::OSM::Relation::Member;
-use Carp;
-# Relation reference can be specified in several ways:
-# { type => $type, ref => $id [ , role => $str ] }
-# { ref => $obj [ , role => $str ] }
-# [ $type, $id [,$role] ]
-# [ $obj, [,$role] ]
-sub new
-{
- my $class = shift;
- my $arg = shift;
- return $arg if ref($arg) eq $class; # Return if already object
- if( ref($arg) eq "ARRAY" )
- {
- if( ref $arg->[0] )
- { $arg = { ref => $arg->[0], role => $arg->[1] } }
- else
- { $arg = { type => $arg->[0], ref => $arg->[1], role => $arg->[2] } }
- }
- if( ref($arg) eq "HASH" )
- {
- if( ref $arg->{ref} )
- { $arg = [ $arg->{ref}->type, $arg->{ref}->id, $arg->{role} ] }
- else
- { $arg = [ $arg->{type}, $arg->{ref}, $arg->{role} ] }
- }
- else
- { croak "Relation reference must be array or hash" }
- croak "Bad type of member '$arg->[0]'"
- unless $arg->[0] =~ /^(way|node|relation)$/;
- croak "Bad member id '$arg->[1]'"
- unless $arg->[1] =~ /^-?\d+$/;
- $arg->[2] ||= "";
-
- return bless $arg, $class;
-}
-
-sub member_type { shift->[0] }
-sub ref { shift->[1] }
-sub role { shift->[2] }
-
-sub type { return "relation:member" }
-
-sub _xml
-{
- my $self = shift;
- my $writer = shift;
-
- $writer->emptyTag( "member", type => $self->member_type, ref => $self->ref, role => $self->role );
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my ($new_ref,$incomplete) = $mapper->map($self->member_type,$self->ref);
- my $new_member = new Geo::OSM::Relation::Member( { type => $self->member_type, ref => $new_ref, role => $self->role } );
- return($new_member,$incomplete);
-}
-
-package Geo::OSM::Relation;
-our @ISA = qw(Geo::OSM::Entity);
-
-sub new
-{
- my($class, $attr, $tags, $members) = @_;
-
- my $obj = bless $class->SUPER::_new(), $class;
-
- $obj->set_tags($tags);
- $obj->set_members($members);
- $obj->set_id($attr->{id} );
- $obj->set_timestamp( $attr->{timestamp} );
- $obj->set_changeset( $attr->{changeset} );
- $obj->set_version( $attr->{version} );
-
- return $obj;
-}
-
-sub set_members
-{
- my($self,$members) = @_;
- if( not defined $members )
- { $members = [] }
- if( ref($members) ne "ARRAY" )
- { $members = [$members] }
- $self->{members} = [map { new Geo::OSM::Relation::Member($_) } @$members];
-}
-
-sub members
-{
- my $self = shift;
- return [@{$self->{members}}];
-}
-
-sub type { return "relation" }
-
-sub xml
-{
- my $self = shift;
- my $str = "";
- my $writer = $self->_get_writer(\$str);
-
- $writer->startTag( "relation", id => $self->id, timestamp => $self->timestamp, changeset => $self->changeset, version => $self->version );
- $self->tag_xml( $writer );
- # Write members
- foreach my $member (@{$self->{members}})
- { $member->_xml( $writer ) }
- $writer->endTag( "relation" );
- $writer->end;
- return $str;
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my $incomplete = 0;
-
- my ($new_id) = $mapper->map('relation',$self->id);
- my @new_members = map { [ $_->map($mapper) ] } @{$self->members};
- map { $incomplete |= $_->[1] } @new_members;
- # incomplete tracks if any of the members are incomplete
- my $new_ent = new Geo::OSM::Relation( {id=>$new_id, timestamp=>$self->timestamp}, $self->tags, [map {$_->[0]} @new_members] );
- return($new_ent,$incomplete);
-}
-
-package Geo::OSM::Node;
-use Carp;
-use Data::Dumper;
-our @ISA = qw(Geo::OSM::Entity);
-
-sub new
-{
- my($class, $attr, $tags) = @_;
-
- my $obj = bless $class->SUPER::_new(), $class;
-
- $obj->set_tags($tags);
- $obj->set_id($attr->{id} );
- $obj->set_timestamp( $attr->{timestamp} );
- $obj->set_changeset( $attr->{changeset} );
- $obj->set_version( $attr->{version} );
- if( $attr->{lon} !~ /^[-+]?\d+(\.\d+)?([eE][+-]?\d+)?$/ or
- $attr->{lat} !~ /^[-+]?\d+(\.\d+)?([eE][+-]?\d+)?$/ )
- {
- croak "Invalid lat,lon values ($attr->{lat},$attr->{lon})\n";
- }
- $obj->{lon} = $attr->{lon};
- $obj->{lat} = $attr->{lat};
-
- return $obj;
-}
-
-sub type { return "node" }
-
-sub set_latlon
-{
- my($self,$lat,$lon) = @_;
- $self->{lat} = $lat;
- $self->{lon} = $lon;
-}
-
-sub lat
-{
- shift->{lat};
-}
-sub lon
-{
- shift->{lon};
-}
-
-sub xml
-{
- my $self = shift;
- my $str = "";
- my $writer = $self->_get_writer(\$str);
-
- $writer->startTag( "node", id => $self->id, lat => $self->lat, lon => $self->lon, timestamp => $self->timestamp, changeset => $self->changeset, version => $self->version);
- $self->tag_xml( $writer );
- $writer->endTag( "node" );
- $writer->end;
- return $str;
-}
-
-sub map
-{
- my($self,$mapper) = @_;
- my ($new_id) = $mapper->map('node',$self->id);
- my $new_ent = new Geo::OSM::Node( {id=>$new_id, timestamp=>$self->timestamp, lat=>$self->lat, lon=>$self->lon}, $self->tags );
- return($new_ent,0);
-}
-
-
-
-1;
diff --git a/navit/script/osm/Geo/OSM/MapFeatures.pm b/navit/script/osm/Geo/OSM/MapFeatures.pm
deleted file mode 100644
index c4ae62f89..000000000
--- a/navit/script/osm/Geo/OSM/MapFeatures.pm
+++ /dev/null
@@ -1,194 +0,0 @@
-##################################################################
-package Geo::OSM::MapFeatures;
-##################################################################
-
-use Exporter;
-@ISA = qw( Exporter );
-use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-@EXPORT = qw( );
-
-use strict;
-use warnings;
-
-use HTTP::Request;
-use File::Basename;
-use File::Copy;
-use File::Path;
-use Getopt::Long;
-use HTTP::Request;
-use Storable ();
-use Data::Dumper;
-
-use Utils::File;
-use Utils::Debug;
-use Utils::LWP::Utils;
-use XML::Parser;
-use XML::Simple;
-
-my $self;
-
-# ------------------------------------------------------------------
-sub style($){
- my $self = shift;
-
-}
-
-# ------------------------------------------------------------------
-# load the complete MapFeatures Structure into memory
-sub load($;$){
- my ($class, $filename) = @_;
- #$filename ||= '../../freemap/freemap.xml';
- $filename ||= './map-features.xml';
- print("Loading Map Features from $filename\n") if $VERBOSE || $DEBUG;
- print "$filename: ".(-s $filename)." Bytes\n" if $DEBUG;
- print STDERR "Parsing file: $filename\n" if $DEBUG;
-
- my $fh = data_open($filename);
- if (not $fh) {
- print STDERR "WARNING: Could not open osm data from $filename\n";
- return;
- }
- my $self = XMLin($fh);
-
- if (not $self) {
- print STDERR "WARNING: Could not parse osm data from $filename\n";
- return;
- }
-
- #delete $self->{defs}->{symbol};
- #warn Dumper(\$self->{defs});
- #warn Dumper(\$self->{data});
- #warn Dumper(\$self->{rule});
- #warn Dumper(keys %{$self});
- #warn Dumper(%{$self});
-
- bless($self,$class);
- return $self;
-}
-
-# ------------------------------------------------------------------
-# Load icons into memory nad create a PDF Version out of it
-sub load_icons($$){
- my $self = shift;
- my $PDF = shift;
- die "No PDF Document defined\n" unless $PDF;
-
- print STDERR "load_icons():\n" if $DEBUG;
-# print STDERR Dumper(\$self);
-
- for my $rule ( @{$self->{rule}} ) {
- my $img = $rule->{style}->{image};
- next unless defined $img;
- $img =~s/^images\///;
- my $img_filename;
- for my $path ( qw( ../../freemap/images
- ../../map-icons/square.small
- ../../map-icons/square.big
- ../../map-icons/classic.big
- ../../map-icons/classic.small
- ../../map-icons/nick
- ../../map-icons/classic/other
- ) ) {
- $img_filename = "$path/$img";
- if ( -s $img_filename ) {
- my $png = $PDF->image_png($img_filename);
- $rule->{png}=$png;
- #print STDERR "image: $img_filename\n";
- last;
- }
- }
-
- if ( ! $rule->{png} ) {
- warn "missing $img\n";
- }
- #print STDERR "rule: ".Dumper(\$rule);
-# print STDERR "condition: ".Dumper(\$rule->{condition});
- my $condition = $rule->{condition};
-# print STDERR "image: $img_filename\t";
- print STDERR " #condition: $condition->{k}=$condition->{v}\t";
- printf STDERR "scale: %d-%d",
- ($rule->{style}->{scale_max}||0),
- ($rule->{style}->{scale_min}||0);
- print STDERR "get_icon() image: $img\n";
-
- }
-}
-
-# ------------------------------------------------------------------
-sub get_icons($$$){
- my $self = shift;
- my $rule_line= shift;
- my $scale = shift;
- return undef if $rule_line =~ m/^[\s\,]*$/;
-# return undef if $rule_line eq ",";
-
- my ($dummy1,$dummy2,$attr) = split(",",$rule_line,3);
- my %attr;
- foreach my $kv ( split(",",$attr)){
- my ($k,$v)=split("=",$kv);
- $attr{$k}=$v;
- }
-
-
- print STDERR "get_icon($attr)\n";
-
- my $png =undef;
- for my $rule ( @{$self->{rule}} ) {
- my $img = $rule->{style}->{image};
- next unless $img;
-
- my $condition = $rule->{condition};
-# print STDERR "condition: $condition->{k}=$condition->{v}\n";
- if ( defined ( $attr{scale_max}) &&
- $scale > $attr{scale_max}) {
- next;
- }
-
- if ( defined( $attr{ $condition->{k}}) &&
- $attr{ $condition->{k}} eq $condition->{v} ) {
- print STDERR "condition: $condition->{k}=$condition->{v}\n";
- print STDERR "get_icon() image: $img\t";
- $png = $rule->{png};
- }
-
- return $png if $png;
- }
- return undef;
-}
-1;
-
-=head1 NAME
-
-Geo::OSM::MapFeature
-
-=head1 DESCRIPTION
-
-Load the MapFeatures.xml into memory
-
-=head1 COPYRIGHT
-
-Copyright 2006, Jörg Ostertag
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=head1 AUTHOR
-
-Jörg Ostertag (MapFeatures-for-openstreetmap@ostertag.name)
-
-=head1 SEE ALSO
-
-http://www.openstreetmap.org/
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/OsmChangeReaderV3.pm b/navit/script/osm/Geo/OSM/OsmChangeReaderV3.pm
deleted file mode 100644
index 65103a36e..000000000
--- a/navit/script/osm/Geo/OSM/OsmChangeReaderV3.pm
+++ /dev/null
@@ -1,323 +0,0 @@
-##################################################################
-## OsmChangeReader.pm - Library for reading OSM change files ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Package that reads both osmChange and JOSM file format change##
-## files. The user creates the parse with a callback and the ##
-## loader will call the callback for each detected change. Note ##
-## that for JOSM file entires that are not changes are ignored. ##
-## ##
-## Licence: LGPL ##
-##################################################################
-package Geo::OSM::OsmChangeReader;
-
-use strict;
-use warnings;
-
-use Utils::File;
-use Utils::Math;
-use Utils::Debug;
-use XML::Parser;
-use Carp;
-
-use Geo::OSM::EntitiesV3;
-
-use constant STATE_INIT => 1;
-use constant STATE_EXPECT_COMMAND => 2;
-use constant STATE_EXPECT_ENTITY => 3;
-use constant STATE_EXPECT_BODY => 4;
-
-use constant FILETYPE_UNKNOWN => 0;
-use constant FILETYPE_OSMCHANGE => 1;
-use constant FILETYPE_OSM => 2;
-
-sub new
-{
- my $obj = bless{}, shift;
- my $proc = shift;
- my $prog = shift;
- if( ref $proc ne "CODE" )
- { die "new Geo::OSM::OsmChangeReader requires a sub as argument\n" }
- $obj->{oldproc} = $proc;
- if( defined $prog )
- { $obj->{progress} = $prog }
- return $obj;
-}
-
-# With this initialiser, your process will get called with instantiated objects rather than useless details
-sub init
-{
- my $obj = bless{}, shift;
- my $proc = shift;
- my $prog = shift;
- if( ref $proc ne "CODE" )
- { die "init Geo::OSM::OsmChangeReader requires a sub as argument\n" }
- $obj->{newproc} = $proc;
- if( defined $prog )
- { $obj->{progress} = $prog }
- return $obj;
-}
-
-sub _process
-{
- my($self, $command, $entity, $attr, $tags, $segs) = @_;
-
- if( defined $self->{oldproc} )
- {
- return $self->{oldproc}->($command, $entity, $attr, $tags, $segs);
- }
-
- my $ent;
- if( $entity eq "node" )
- {
- $ent = new Geo::OSM::Node( $attr, $tags );
- }
- if( $entity eq "segment" )
- {
- $ent = new Geo::OSM::Segment( $attr, $tags );
- }
- if( $entity eq "way" )
- {
- $ent = new Geo::OSM::Way( $attr, $tags, $segs );
- }
- croak "Unknown entity '$entity'" if not defined $ent;
-
- return $self->{newproc}->($command, $ent );
-}
-
-sub load{
- my ($self, $file_name) = @_;
-
- $self->{filetype} = FILETYPE_UNKNOWN;
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- my $fh = data_open($file_name);
- die "Cannot open OSM File $file_name\n" unless $fh;
- $self->{input_length} = -s $fh;
- $self->{count}=0;
- eval {
- $P->parse($fh);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed $file_name in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n $file_name\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-
-}
-
-sub parse($)
-{
- my ($self, $string) = @_;
-
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- $self->{input_length} = length($string);
- $self->{count}=0;
- eval {
- $P->parse($string);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed string in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n [$string]\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-}
-
-# Function is called whenever an XML tag is started
-sub DoStart
-{
-#print @_,"\n";
- my ($self, $Expat, $Name, %Attr) = @_;
-
- if( $self->{filetype} == FILETYPE_UNKNOWN )
- {
- if( $self->{state} == STATE_INIT )
- {
- if($Name eq "osmChange"){
- $self->{state} = STATE_EXPECT_COMMAND;
- $self->{filetype} = FILETYPE_OSMCHANGE;
-
- if( $Attr{version} ne "0.3" and $Attr{version} ne "0.4" )
- { die "OsmChangeReaderV3 can only read 0.3 and 0.4 files, found '$Attr{version}'\n" }
- } elsif($Name eq "osm"){
- $self->{state} = STATE_EXPECT_ENTITY;
- $self->{filetype} = FILETYPE_OSM;
-
- if( $Attr{version} ne "0.3" and $Attr{version} ne "0.4" )
- { die "OsmChangeReaderV3 can only read 0.3 and 0.4 files, found '$Attr{version}'\n" }
- } else {
- die "Expected 'osmChange' tag, got '$Name'\n";
- }
- }
- }
- elsif( $self->{state} == STATE_EXPECT_COMMAND )
- {
- if($Name eq 'create' or $Name eq 'modify' or $Name eq 'delete'){
- $self->{command} = $Name;
- $self->{state} = STATE_EXPECT_ENTITY;
- } else {
- die "Expected command\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- # Pick up the origin attribute from the bound tag
- if( $Name eq "bound" )
- {
- if( exists $Attr{origin} )
- {
- $self->{origin} = $Attr{origin};
- }
- return;
- }
- if($Name eq "node" or $Name eq "segment" or $Name eq "way"){
- $self->{entity} = $Name;
- $self->{attr} = {%Attr};
- $self->{tags} = [];
- $self->{segs} = ($Name eq "way") ? [] : undef;
- $self->{state} = STATE_EXPECT_BODY;
- } else {
- die "Expected entity\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_BODY )
- {
- if($Name eq "tag"){
- push @{$self->{tags}}, $Attr{"k"}, $Attr{"v"};
- }
- if($Name eq "seg"){
- push @{$self->{segs}}, $Attr{"id"};
- }
- }
-}
-
-# Function is called whenever an XML tag is ended
-sub DoEnd
-{
- my ($self, $Expat, $Name) = @_;
- if( $self->{state} == STATE_EXPECT_BODY )
- {
- if( $Name eq $self->{entity} )
- {
- if( $self->{filetype} == FILETYPE_OSMCHANGE )
- {
- $self->_process( $self->{command}, $self->{entity}, $self->{attr}, $self->{tags}, $self->{segs} );
- }
- else # FILETYPE_OSM
- {
- # Only entities with a modify tag are interesting, or if they have a negative ID (that's create)
- if( exists $self->{attr}->{action} )
- {
- $self->_process( $self->{attr}->{action}, $self->{entity}, $self->{attr}, $self->{tags}, $self->{segs} );
- }
- elsif( $self->{attr}{id} < 0 )
- {
- $self->_process( "create", $self->{entity}, $self->{attr}, $self->{tags}, $self->{segs} );
- }
- }
- $self->{count}++;
- if( $self->{progress} and ($self->{count}%11) == 1)
- {
- $self->{progress}->($self->{count}, $Expat->current_byte()/$self->{input_length} );
- }
- $self->{state} = STATE_EXPECT_ENTITY;
- }
- return;
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- return if $Name eq "bound";
- if( $self->{filetype} == FILETYPE_OSMCHANGE )
- {
- if( $Name eq $self->{command} )
- {
- $self->{state} = STATE_EXPECT_COMMAND;
- }else {die}
- }
- else # FILETYPE_OSM
- {
- if( $Name eq "osm" )
- {
- $self->{state} = STATE_INIT;
- } else {die}
- }
- return;
- }
- elsif( $self->{state} == STATE_EXPECT_COMMAND )
- {
- if( $Name eq "osmChange" )
- {
- $self->{state} = STATE_INIT;
- }else {die}
- return;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-OsmChangeReaderV3 - Module for reading OpenStreetMap V3 Change XML data files
-
-=head1 SYNOPSIS
-
- my $OSM = new Geo::OSM::OsmChangeReader(\&process);
- $OSM->load("Data/changes.osc");
-
- sub process
- {
- my($OSM, $command, $entity, $attr, $tags, $segs) = @_;
- print "Doing a $command on a $entity $attr->{id}\n";
- while( my($k,$v) = splice @{$tags}, 0, 2 )
- { print " $k: $v\n" }
- if( defined $segs )
- { print " Segs: ", join(", ",@$segs),"\n"; }
- }
-
-=head1 AUTHOR
-
-Martijn van Oosterhout <kleptog@svana.org>
-based on OsmXML.pm written by:
-Oliver White (oliver.white@blibbleblobble.co.uk)
-
-=head1 COPYRIGHT
-
-Copyright 2007, Martijn van Oosterhout
-Copyright 2006, Oliver White
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/OsmChangeReaderV5.pm b/navit/script/osm/Geo/OSM/OsmChangeReaderV5.pm
deleted file mode 100644
index fdc65e1a9..000000000
--- a/navit/script/osm/Geo/OSM/OsmChangeReaderV5.pm
+++ /dev/null
@@ -1,316 +0,0 @@
-##################################################################
-## OsmChangeReader.pm - Library for reading OSM change files ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Package that reads both osmChange and JOSM file format change##
-## files. The user creates the parse with a callback and the ##
-## loader will call the callback for each detected change. Note ##
-## that for JOSM file entires that are not changes are ignored. ##
-## ##
-## Licence: LGPL ##
-##################################################################
-package Geo::OSM::OsmChangeReader;
-
-use strict;
-use warnings;
-
-use Utils::File;
-use Utils::Math;
-use Utils::Debug;
-use XML::Parser;
-use Carp;
-
-use Geo::OSM::EntitiesV5;
-
-use constant STATE_INIT => 1;
-use constant STATE_EXPECT_COMMAND => 2;
-use constant STATE_EXPECT_ENTITY => 3;
-use constant STATE_EXPECT_BODY => 4;
-
-use constant FILETYPE_UNKNOWN => 0;
-use constant FILETYPE_OSMCHANGE => 1;
-use constant FILETYPE_OSM => 2;
-
-# With this initialiser, your process will get called with instantiated objects
-sub init
-{
- my $obj = bless{}, shift;
- my $proc = shift;
- my $prog = shift;
- if( ref $proc ne "CODE" )
- { die "init Geo::OSM::OsmChangeReader requires a sub as argument\n" }
- $obj->{newproc} = $proc;
- if( defined $prog )
- { $obj->{progress} = $prog }
- return $obj;
-}
-
-sub _process
-{
- my($self, $command, $entity, $attr, $tags, $members) = @_;
-
- if( defined $self->{oldproc} )
- {
- return $self->{oldproc}->($command, $entity, $attr, $tags, $members);
- }
-
- my $ent;
- if( $entity eq "node" )
- {
- $ent = new Geo::OSM::Node( $attr, $tags );
- }
- if( $entity eq "relation" )
- {
- $ent = new Geo::OSM::Relation( $attr, $tags, $members );
- }
- if( $entity eq "way" )
- {
- $ent = new Geo::OSM::Way( $attr, $tags, $members );
- }
- croak "Unknown entity '$entity'" if not defined $ent;
-
- return $self->{newproc}->($command, $ent );
-}
-
-sub load{
- my ($self, $file_name) = @_;
-
- $self->{filetype} = FILETYPE_UNKNOWN;
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- my $fh = data_open($file_name);
- die "Cannot open OSM File $file_name\n" unless $fh;
- $self->{input_length} = -s $fh;
- $self->{count}=0;
- eval {
- $P->parse($fh);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed $file_name in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n $file_name\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-
-}
-
-sub parse($)
-{
- my ($self, $string) = @_;
-
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- $self->{input_length} = length($string);
- $self->{count}=0;
- eval {
- $P->parse($string);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed string in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n [$string]\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-}
-
-# Function is called whenever an XML tag is started
-sub DoStart
-{
-#print @_,"\n";
- my ($self, $Expat, $Name, %Attr) = @_;
-
- if( $self->{filetype} == FILETYPE_UNKNOWN )
- {
- if( $self->{state} == STATE_INIT )
- {
- if($Name eq "osmChange"){
- $self->{state} = STATE_EXPECT_COMMAND;
- $self->{filetype} = FILETYPE_OSMCHANGE;
-
- if( $Attr{version} ne "0.5" )
- { die "OsmChangeReaderV3 can only read 0.5 files, found '$Attr{version}'\n" }
- } elsif($Name eq "osm"){
- $self->{state} = STATE_EXPECT_ENTITY;
- $self->{filetype} = FILETYPE_OSM;
-
- if( $Attr{version} ne "0.5" )
- { die "OsmChangeReaderV3 can only read 0.5 files, found '$Attr{version}'\n" }
- } else {
- die "Expected 'osmChange' tag, got '$Name'\n";
- }
- }
- }
- elsif( $self->{state} == STATE_EXPECT_COMMAND )
- {
- if($Name eq 'create' or $Name eq 'modify' or $Name eq 'delete'){
- $self->{command} = $Name;
- $self->{state} = STATE_EXPECT_ENTITY;
- } else {
- die "Expected command\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- # Pick up the origin attribute from the bound tag
- if( $Name eq "bound" )
- {
- if( exists $Attr{origin} )
- {
- $self->{origin} = $Attr{origin};
- }
- return;
- }
- if($Name eq "node" or $Name eq "relation" or $Name eq "way"){
- $self->{entity} = $Name;
- $self->{attr} = {%Attr};
- $self->{tags} = [];
- $self->{members} = ($Name ne "node") ? [] : undef;
- $self->{state} = STATE_EXPECT_BODY;
- } else {
- die "Expected entity\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_BODY )
- {
- if($Name eq "tag"){
- push @{$self->{tags}}, $Attr{"k"}, $Attr{"v"};
- }
- if($Name eq "nd"){
- push @{$self->{members}}, $Attr{"ref"};
- }
- if($Name eq "member"){
- push @{$self->{members}}, new Geo::OSM::Relation::Member( \%Attr );
- }
- }
-}
-
-# Function is called whenever an XML tag is ended
-sub DoEnd
-{
- my ($self, $Expat, $Name) = @_;
- if( $self->{state} == STATE_EXPECT_BODY )
- {
- if( $Name eq $self->{entity} )
- {
- if( $self->{filetype} == FILETYPE_OSMCHANGE )
- {
- $self->_process( $self->{command}, $self->{entity}, $self->{attr}, $self->{tags}, $self->{members} );
- }
- else # FILETYPE_OSM
- {
- # Only entities with a modify tag are interesting, or if they have a negative ID (that's create)
- if( exists $self->{attr}->{action} and $self->{attr}->{action} eq "modify" and $self->{attr}{id} < 0 )
- { $self->{attr}->{action} = "create" }
- if( exists $self->{attr}->{action} )
- {
- $self->_process( $self->{attr}->{action}, $self->{entity}, $self->{attr}, $self->{tags}, $self->{members} );
- }
- elsif( $self->{attr}{id} < 0 )
- {
- $self->_process( "create", $self->{entity}, $self->{attr}, $self->{tags}, $self->{members} );
- }
- }
- $self->{count}++;
- if( $self->{progress} and ($self->{count}%11) == 1)
- {
- $self->{progress}->($self->{count}, $Expat->current_byte()/$self->{input_length} );
- }
- $self->{state} = STATE_EXPECT_ENTITY;
- }
- return;
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- return if $Name eq "bound";
- if( $self->{filetype} == FILETYPE_OSMCHANGE )
- {
- if( $Name eq $self->{command} )
- {
- $self->{state} = STATE_EXPECT_COMMAND;
- }else {die}
- }
- else # FILETYPE_OSM
- {
- if( $Name eq "osm" )
- {
- $self->{state} = STATE_INIT;
- } else {die}
- }
- return;
- }
- elsif( $self->{state} == STATE_EXPECT_COMMAND )
- {
- if( $Name eq "osmChange" )
- {
- $self->{state} = STATE_INIT;
- }else {die}
- return;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-OsmChangeReaderV5 - Module for reading OpenStreetMap V5 Change XML data files
-
-=head1 SYNOPSIS
-
- my $OSM = new Geo::OSM::OsmChangeReader(\&process);
- $OSM->load("Data/changes.osc");
-
- sub process
- {
- my($OSM, $command, $entity) = @_;
- print "Doing a $command on a $entity ".$entity->id."\n";
- my $tags = $entity->tags;
- while( my($k,$v) = splice @{$tags}, 0, 2 )
- { print " $k: $v\n" }
- if( $entity->type eq "way" )
- { print " Nodes: ", join(", ",@{$entity->nodes}),"\n"; }
- }
-
-=head1 AUTHOR
-
-Martijn van Oosterhout <kleptog@svana.org>
-based on OsmXML.pm written by:
-Oliver White (oliver.white@blibbleblobble.co.uk)
-
-=head1 COPYRIGHT
-
-Copyright 2007, Martijn van Oosterhout
-Copyright 2006, Oliver White
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/OsmChangeReaderV6.pm b/navit/script/osm/Geo/OSM/OsmChangeReaderV6.pm
deleted file mode 100644
index e67397829..000000000
--- a/navit/script/osm/Geo/OSM/OsmChangeReaderV6.pm
+++ /dev/null
@@ -1,316 +0,0 @@
-##################################################################
-## OsmChangeReader.pm - Library for reading OSM change files ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Package that reads both osmChange and JOSM file format change##
-## files. The user creates the parse with a callback and the ##
-## loader will call the callback for each detected change. Note ##
-## that for JOSM file entires that are not changes are ignored. ##
-## ##
-## Licence: LGPL ##
-##################################################################
-package Geo::OSM::OsmChangeReader;
-
-use strict;
-use warnings;
-
-use Utils::File;
-use Utils::Math;
-use Utils::Debug;
-use XML::Parser;
-use Carp;
-
-use Geo::OSM::EntitiesV6;
-
-use constant STATE_INIT => 1;
-use constant STATE_EXPECT_COMMAND => 2;
-use constant STATE_EXPECT_ENTITY => 3;
-use constant STATE_EXPECT_BODY => 4;
-
-use constant FILETYPE_UNKNOWN => 0;
-use constant FILETYPE_OSMCHANGE => 1;
-use constant FILETYPE_OSM => 2;
-
-# With this initialiser, your process will get called with instantiated objects
-sub init
-{
- my $obj = bless{}, shift;
- my $proc = shift;
- my $prog = shift;
- if( ref $proc ne "CODE" )
- { die "init Geo::OSM::OsmChangeReader requires a sub as argument\n" }
- $obj->{newproc} = $proc;
- if( defined $prog )
- { $obj->{progress} = $prog }
- return $obj;
-}
-
-sub _process
-{
- my($self, $command, $entity, $attr, $tags, $members) = @_;
-
- if( defined $self->{oldproc} )
- {
- return $self->{oldproc}->($command, $entity, $attr, $tags, $members);
- }
-
- my $ent;
- if( $entity eq "node" )
- {
- $ent = new Geo::OSM::Node( $attr, $tags );
- }
- if( $entity eq "relation" )
- {
- $ent = new Geo::OSM::Relation( $attr, $tags, $members );
- }
- if( $entity eq "way" )
- {
- $ent = new Geo::OSM::Way( $attr, $tags, $members );
- }
- croak "Unknown entity '$entity'" if not defined $ent;
-
- return $self->{newproc}->($command, $ent );
-}
-
-sub load{
- my ($self, $file_name) = @_;
-
- $self->{filetype} = FILETYPE_UNKNOWN;
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- my $fh = data_open($file_name);
- die "Cannot open OSM File $file_name\n" unless $fh;
- $self->{input_length} = -s $fh;
- $self->{count}=0;
- eval {
- $P->parse($fh);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed $file_name in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n $file_name\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-
-}
-
-sub parse($)
-{
- my ($self, $string) = @_;
-
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- $self->{input_length} = length($string);
- $self->{count}=0;
- eval {
- $P->parse($string);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed string in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n [$string]\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-}
-
-# Function is called whenever an XML tag is started
-sub DoStart
-{
-#print @_,"\n";
- my ($self, $Expat, $Name, %Attr) = @_;
-
- if( $self->{filetype} == FILETYPE_UNKNOWN )
- {
- if( $self->{state} == STATE_INIT )
- {
- if($Name eq "osmChange"){
- $self->{state} = STATE_EXPECT_COMMAND;
- $self->{filetype} = FILETYPE_OSMCHANGE;
-
- if( $Attr{version} ne "0.6" )
- { die "OsmChangeReaderV6 can only read 0.6 files, found '$Attr{version}'\n" }
- } elsif($Name eq "osm"){
- $self->{state} = STATE_EXPECT_ENTITY;
- $self->{filetype} = FILETYPE_OSM;
-
- if( $Attr{version} ne "0.6" )
- { die "OsmChangeReaderV6 can only read 0.6 files, found '$Attr{version}'\n" }
- } else {
- die "Expected 'osmChange' tag, got '$Name'\n";
- }
- }
- }
- elsif( $self->{state} == STATE_EXPECT_COMMAND )
- {
- if($Name eq 'create' or $Name eq 'modify' or $Name eq 'delete'){
- $self->{command} = $Name;
- $self->{state} = STATE_EXPECT_ENTITY;
- } else {
- die "Expected command\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- # Pick up the origin attribute from the bound tag
- if( $Name eq "bound" )
- {
- if( exists $Attr{origin} )
- {
- $self->{origin} = $Attr{origin};
- }
- return;
- }
- if($Name eq "node" or $Name eq "relation" or $Name eq "way"){
- $self->{entity} = $Name;
- $self->{attr} = {%Attr};
- $self->{tags} = [];
- $self->{members} = ($Name ne "node") ? [] : undef;
- $self->{state} = STATE_EXPECT_BODY;
- } else {
- die "Expected entity\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_BODY )
- {
- if($Name eq "tag"){
- push @{$self->{tags}}, $Attr{"k"}, $Attr{"v"};
- }
- if($Name eq "nd"){
- push @{$self->{members}}, $Attr{"ref"};
- }
- if($Name eq "member"){
- push @{$self->{members}}, new Geo::OSM::Relation::Member( \%Attr );
- }
- }
-}
-
-# Function is called whenever an XML tag is ended
-sub DoEnd
-{
- my ($self, $Expat, $Name) = @_;
- if( $self->{state} == STATE_EXPECT_BODY )
- {
- if( $Name eq $self->{entity} )
- {
- if( $self->{filetype} == FILETYPE_OSMCHANGE )
- {
- $self->_process( $self->{command}, $self->{entity}, $self->{attr}, $self->{tags}, $self->{members} );
- }
- else # FILETYPE_OSM
- {
- # Only entities with a modify tag are interesting, or if they have a negative ID (that's create)
- if( exists $self->{attr}->{action} and $self->{attr}->{action} eq "modify" and $self->{attr}{id} < 0 )
- { $self->{attr}->{action} = "create" }
- if( exists $self->{attr}->{action} )
- {
- $self->_process( $self->{attr}->{action}, $self->{entity}, $self->{attr}, $self->{tags}, $self->{members} );
- }
- elsif( $self->{attr}{id} < 0 )
- {
- $self->_process( "create", $self->{entity}, $self->{attr}, $self->{tags}, $self->{members} );
- }
- }
- $self->{count}++;
- if( $self->{progress} and ($self->{count}%11) == 1)
- {
- $self->{progress}->($self->{count}, $Expat->current_byte()/$self->{input_length} );
- }
- $self->{state} = STATE_EXPECT_ENTITY;
- }
- return;
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- return if $Name eq "bound";
- if( $self->{filetype} == FILETYPE_OSMCHANGE )
- {
- if( $Name eq $self->{command} )
- {
- $self->{state} = STATE_EXPECT_COMMAND;
- }else {die}
- }
- else # FILETYPE_OSM
- {
- if( $Name eq "osm" )
- {
- $self->{state} = STATE_INIT;
- } else {die}
- }
- return;
- }
- elsif( $self->{state} == STATE_EXPECT_COMMAND )
- {
- if( $Name eq "osmChange" )
- {
- $self->{state} = STATE_INIT;
- }else {die}
- return;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-OsmChangeReaderV6 - Module for reading OpenStreetMap V6 Change XML data files
-
-=head1 SYNOPSIS
-
- my $OSM = new Geo::OSM::OsmChangeReader(\&process);
- $OSM->load("Data/changes.osc");
-
- sub process
- {
- my($OSM, $command, $entity) = @_;
- print "Doing a $command on a $entity ".$entity->id."\n";
- my $tags = $entity->tags;
- while( my($k,$v) = splice @{$tags}, 0, 2 )
- { print " $k: $v\n" }
- if( $entity->type eq "way" )
- { print " Nodes: ", join(", ",@{$entity->nodes}),"\n"; }
- }
-
-=head1 AUTHOR
-
-Martijn van Oosterhout <kleptog@svana.org>
-based on OsmXML.pm written by:
-Oliver White (oliver.white@blibbleblobble.co.uk)
-
-=head1 COPYRIGHT
-
-Copyright 2007, Martijn van Oosterhout
-Copyright 2006, Oliver White
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/OsmReaderV3.pm b/navit/script/osm/Geo/OSM/OsmReaderV3.pm
deleted file mode 100644
index b01963470..000000000
--- a/navit/script/osm/Geo/OSM/OsmReaderV3.pm
+++ /dev/null
@@ -1,246 +0,0 @@
-##################################################################
-## OsmReader.pm - Library for reading OSM files ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Package that reads both OSM file format files. ##
-## The user creates the parse with a callback and the ##
-## loader will call the callback for each detected object. ##
-## Licence: LGPL ##
-##################################################################
-package Geo::OSM::OsmReader;
-
-use strict;
-use warnings;
-
-use Utils::File;
-use Utils::Math;
-use Utils::Debug;
-use XML::Parser;
-use Carp;
-
-use Geo::OSM::EntitiesV3;
-
-use constant STATE_INIT => 1;
-use constant STATE_EXPECT_ENTITY => 3;
-use constant STATE_EXPECT_BODY => 4;
-
-# With this initialiser, your process will get called with instantiated objects
-sub init
-{
- my $obj = bless{}, shift;
- my $proc = shift;
- my $prog = shift;
- if( ref $proc ne "CODE" )
- { die "init Geo::OSM::OsmReader requires a sub as argument\n" }
- $obj->{newproc} = $proc;
- if( defined $prog )
- { $obj->{progress} = $prog }
- return $obj;
-}
-
-sub _process
-{
- my($self, $entity, $attr, $tags, $members) = @_;
-
- my $ent;
- if( $entity eq "node" )
- {
- $ent = new Geo::OSM::Node( $attr, $tags );
- }
- if( $entity eq "segment" )
- {
- $ent = new Geo::OSM::Segment( $attr, $tags );
- }
- if( $entity eq "way" )
- {
- $ent = new Geo::OSM::Way( $attr, $tags, $members );
- }
- croak "Unknown entity '$entity'" if not defined $ent;
-
- return $self->{newproc}->( $ent );
-}
-
-sub load($)
-{
- my ($self, $file_name) = @_;
-
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- my $fh = data_open($file_name);
- die "Cannot open OSM File $file_name\n" unless $fh;
- $self->{input_length} = -s $fh;
- $self->{count}=0;
- eval {
- $P->parse($fh);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed $file_name in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n $file_name\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-}
-
-sub parse($)
-{
- my ($self, $string) = @_;
-
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- $self->{input_length} = length($string);
- $self->{count}=0;
- eval {
- $P->parse($string);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed string in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n [$string]\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-}
-
-# Function is called whenever an XML tag is started
-sub DoStart
-{
-#print @_,"\n";
- my ($self, $Expat, $Name, %Attr) = @_;
-
- if( $self->{state} == STATE_INIT )
- {
- if($Name eq "osm"){
- $self->{state} = STATE_EXPECT_ENTITY;
-
- if( $Attr{version} ne "0.3" and $Attr{version} ne "0.4")
- { die "OsmReaderV5 can only read 0.3 or 0.4 files, found '$Attr{version}'\n" }
- } else {
- die "Expected 'osm' tag, got '$Name'\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- # Pick up the origin attribute from the bound tag
- if( $Name eq "bound" )
- {
- if( exists $Attr{origin} )
- {
- $self->{origin} = $Attr{origin};
- }
- return;
- }
- if($Name eq "node" or $Name eq "segment" or $Name eq "way"){
- $self->{entity} = $Name;
- $self->{attr} = {%Attr};
- $self->{tags} = [];
- $self->{members} = ($Name ne "node") ? [] : undef;
- $self->{state} = STATE_EXPECT_BODY;
- } else {
- die "Expected entity\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_BODY )
- {
- if($Name eq "tag"){
- push @{$self->{tags}}, $Attr{"k"}, $Attr{"v"};
- }
- if($Name eq "seg"){
- push @{$self->{members}}, $Attr{"id"};
- }
- }
-}
-
-# Function is called whenever an XML tag is ended
-sub DoEnd
-{
- my ($self, $Expat, $Name) = @_;
- if( $self->{state} == STATE_EXPECT_BODY )
- {
- if( $Name eq $self->{entity} )
- {
- $self->_process( $self->{entity}, $self->{attr}, $self->{tags}, $self->{members} );
- $self->{count}++;
- if( $self->{progress} and ($self->{count}%11) == 1)
- {
- $self->{progress}->($self->{count}, $self->{input_length} ? $Expat->current_byte()/$self->{input_length} : $Expat->current_byte());
- }
- $self->{state} = STATE_EXPECT_ENTITY;
- }
- return;
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- return if $Name eq "bound";
- if( $Name eq "osm" )
- {
- $self->{state} = STATE_INIT;
- } else {die}
- return;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-OsmReaderV3 - Module for reading OpenStreetMap V3 XML data files
-
-=head1 SYNOPSIS
-
- my $OSM = new Geo::OSM::OsmReader(\&process);
- $OSM->load("Data/changes.osc");
-
- sub process
- {
- my($OSM, $entity) = @_;
- print "Read $entity ".$entity->id."\n";
- my $tags = $entity->tags;
- while( my($k,$v) = splice @{$tags}, 0, 2 )
- { print " $k: $v\n" }
- if( $entity->type eq "way" )
- { print " Segs: ", join(", ",@{$entity->segs}),"\n"; }
- }
-
-=head1 AUTHOR
-
-Martijn van Oosterhout <kleptog@svana.org>
-based on OsmXML.pm written by:
-Oliver White (oliver.white@blibbleblobble.co.uk)
-
-=head1 COPYRIGHT
-
-Copyright 2007, Martijn van Oosterhout
-Copyright 2006, Oliver White
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/OsmReaderV5.pm b/navit/script/osm/Geo/OSM/OsmReaderV5.pm
deleted file mode 100644
index 37a477b1a..000000000
--- a/navit/script/osm/Geo/OSM/OsmReaderV5.pm
+++ /dev/null
@@ -1,249 +0,0 @@
-##################################################################
-## OsmReader.pm - Library for reading OSM files ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Package that reads both OSM file format files. ##
-## The user creates the parse with a callback and the ##
-## loader will call the callback for each detected object. ##
-## Licence: LGPL ##
-##################################################################
-package Geo::OSM::OsmReader;
-
-use strict;
-use warnings;
-
-use Utils::File;
-use Utils::Math;
-use Utils::Debug;
-use XML::Parser;
-use Carp;
-
-use Geo::OSM::EntitiesV5;
-
-use constant STATE_INIT => 1;
-use constant STATE_EXPECT_ENTITY => 3;
-use constant STATE_EXPECT_BODY => 4;
-
-# With this initialiser, your process will get called with instantiated objects
-sub init
-{
- my $obj = bless{}, shift;
- my $proc = shift;
- my $prog = shift;
- if( ref $proc ne "CODE" )
- { die "init Geo::OSM::OsmReader requires a sub as argument\n" }
- $obj->{newproc} = $proc;
- if( defined $prog )
- { $obj->{progress} = $prog }
- return $obj;
-}
-
-sub _process
-{
- my($self, $entity, $attr, $tags, $members) = @_;
-
- my $ent;
- if( $entity eq "node" )
- {
- $ent = new Geo::OSM::Node( $attr, $tags );
- }
- if( $entity eq "relation" )
- {
- $ent = new Geo::OSM::Relation( $attr, $tags, $members );
- }
- if( $entity eq "way" )
- {
- $ent = new Geo::OSM::Way( $attr, $tags, $members );
- }
- croak "Unknown entity '$entity'" if not defined $ent;
-
- return $self->{newproc}->( $ent );
-}
-
-sub load($)
-{
- my ($self, $file_name) = @_;
-
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- my $fh = data_open($file_name);
- die "Cannot open OSM File $file_name\n" unless $fh;
- $self->{input_length} = -s $fh;
- $self->{count}=0;
- eval {
- $P->parse($fh);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed $file_name in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n $file_name\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-}
-
-sub parse($)
-{
- my ($self, $string) = @_;
-
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- $self->{input_length} = length($string);
- $self->{count}=0;
- eval {
- $P->parse($string);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed string in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n [$string]\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-}
-
-# Function is called whenever an XML tag is started
-sub DoStart
-{
-#print @_,"\n";
- my ($self, $Expat, $Name, %Attr) = @_;
-
- if( $self->{state} == STATE_INIT )
- {
- if($Name eq "osm"){
- $self->{state} = STATE_EXPECT_ENTITY;
-
- if( $Attr{version} ne "0.5" )
- { die "OsmReaderV5 can only read 0.5 files, found '$Attr{version}'\n" }
- } else {
- die "Expected 'osm' tag, got '$Name'\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- # Pick up the origin attribute from the bound tag
- if( $Name eq "bound" )
- {
- if( exists $Attr{origin} )
- {
- $self->{origin} = $Attr{origin};
- }
- return;
- }
- if($Name eq "node" or $Name eq "relation" or $Name eq "way"){
- $self->{entity} = $Name;
- $self->{attr} = {%Attr};
- $self->{tags} = [];
- $self->{members} = ($Name ne "node") ? [] : undef;
- $self->{state} = STATE_EXPECT_BODY;
- } else {
- die "Expected entity\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_BODY )
- {
- if($Name eq "tag"){
- push @{$self->{tags}}, $Attr{"k"}, $Attr{"v"};
- }
- if($Name eq "nd"){
- push @{$self->{members}}, $Attr{"ref"};
- }
- if($Name eq "member"){
- push @{$self->{members}}, new Geo::OSM::Relation::Member( \%Attr );
- }
- }
-}
-
-# Function is called whenever an XML tag is ended
-sub DoEnd
-{
- my ($self, $Expat, $Name) = @_;
- if( $self->{state} == STATE_EXPECT_BODY )
- {
- if( $Name eq $self->{entity} )
- {
- $self->_process( $self->{entity}, $self->{attr}, $self->{tags}, $self->{members} );
- $self->{count}++;
- if( $self->{progress} and ($self->{count}%11) == 1)
- {
- $self->{progress}->($self->{count}, $Expat->current_byte()/$self->{input_length} );
- }
- $self->{state} = STATE_EXPECT_ENTITY;
- }
- return;
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- return if $Name eq "bound";
- if( $Name eq "osm" )
- {
- $self->{state} = STATE_INIT;
- } else {die}
- return;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-OsmReaderV5 - Module for reading OpenStreetMap V5 XML data files
-
-=head1 SYNOPSIS
-
- my $OSM = new Geo::OSM::OsmReader(\&process);
- $OSM->load("Data/changes.osc");
-
- sub process
- {
- my($OSM, $entity) = @_;
- print "Read $entity ".$entity->id."\n";
- my $tags = $entity->tags;
- while( my($k,$v) = splice @{$tags}, 0, 2 )
- { print " $k: $v\n" }
- if( $entity->type eq "way" )
- { print " Nodes: ", join(", ",@{$entity->nodes}),"\n"; }
- }
-
-=head1 AUTHOR
-
-Martijn van Oosterhout <kleptog@svana.org>
-based on OsmXML.pm written by:
-Oliver White (oliver.white@blibbleblobble.co.uk)
-
-=head1 COPYRIGHT
-
-Copyright 2007, Martijn van Oosterhout
-Copyright 2006, Oliver White
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/OsmReaderV6.pm b/navit/script/osm/Geo/OSM/OsmReaderV6.pm
deleted file mode 100644
index 4f6a683d2..000000000
--- a/navit/script/osm/Geo/OSM/OsmReaderV6.pm
+++ /dev/null
@@ -1,249 +0,0 @@
-##################################################################
-## OsmReader.pm - Library for reading OSM files ##
-## By Martijn van Oosterhout <kleptog@svana.org> ##
-## ##
-## Package that reads both OSM file format files. ##
-## The user creates the parse with a callback and the ##
-## loader will call the callback for each detected object. ##
-## Licence: LGPL ##
-##################################################################
-package Geo::OSM::OsmReader;
-
-use strict;
-use warnings;
-
-use Utils::File;
-use Utils::Math;
-use Utils::Debug;
-use XML::Parser;
-use Carp;
-
-use Geo::OSM::EntitiesV6;
-
-use constant STATE_INIT => 1;
-use constant STATE_EXPECT_ENTITY => 3;
-use constant STATE_EXPECT_BODY => 4;
-
-# With this initialiser, your process will get called with instantiated objects
-sub init
-{
- my $obj = bless{}, shift;
- my $proc = shift;
- my $prog = shift;
- if( ref $proc ne "CODE" )
- { die "init Geo::OSM::OsmReader requires a sub as argument\n" }
- $obj->{newproc} = $proc;
- if( defined $prog )
- { $obj->{progress} = $prog }
- return $obj;
-}
-
-sub _process
-{
- my($self, $entity, $attr, $tags, $members) = @_;
-
- my $ent;
- if( $entity eq "node" )
- {
- $ent = new Geo::OSM::Node( $attr, $tags );
- }
- if( $entity eq "relation" )
- {
- $ent = new Geo::OSM::Relation( $attr, $tags, $members );
- }
- if( $entity eq "way" )
- {
- $ent = new Geo::OSM::Way( $attr, $tags, $members );
- }
- croak "Unknown entity '$entity'" if not defined $ent;
-
- return $self->{newproc}->( $ent );
-}
-
-sub load($)
-{
- my ($self, $file_name) = @_;
-
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- my $fh = data_open($file_name);
- die "Cannot open OSM File $file_name\n" unless $fh;
- $self->{input_length} = -s $fh;
- $self->{count}=0;
- eval {
- $P->parse($fh);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed $file_name in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n $file_name\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-}
-
-sub parse($)
-{
- my ($self, $string) = @_;
-
- $self->{state} = STATE_INIT;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => sub{ DoStart( $self, @_ )}, End => sub { DoEnd( $self, @_ )}});
- $self->{input_length} = length($string);
- $self->{count}=0;
- eval {
- $P->parse($string);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed string in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n [$string]\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-}
-
-# Function is called whenever an XML tag is started
-sub DoStart
-{
-#print @_,"\n";
- my ($self, $Expat, $Name, %Attr) = @_;
-
- if( $self->{state} == STATE_INIT )
- {
- if($Name eq "osm"){
- $self->{state} = STATE_EXPECT_ENTITY;
-
- if( $Attr{version} ne "0.6" )
- { die "OsmReaderV6 can only read 0.6 files, found '$Attr{version}'\n" }
- } else {
- die "Expected 'osm' tag, got '$Name'\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- # Pick up the origin attribute from the bound tag
- if( $Name eq "bounds" )
- {
- if( exists $Attr{origin} )
- {
- $self->{origin} = $Attr{origin};
- }
- return;
- }
- if($Name eq "node" or $Name eq "relation" or $Name eq "way"){
- $self->{entity} = $Name;
- $self->{attr} = {%Attr};
- $self->{tags} = [];
- $self->{members} = ($Name ne "node") ? [] : undef;
- $self->{state} = STATE_EXPECT_BODY;
- } else {
- die "Expected entity\n";
- }
- }
- elsif( $self->{state} == STATE_EXPECT_BODY )
- {
- if($Name eq "tag"){
- push @{$self->{tags}}, $Attr{"k"}, $Attr{"v"};
- }
- if($Name eq "nd"){
- push @{$self->{members}}, $Attr{"ref"};
- }
- if($Name eq "member"){
- push @{$self->{members}}, new Geo::OSM::Relation::Member( \%Attr );
- }
- }
-}
-
-# Function is called whenever an XML tag is ended
-sub DoEnd
-{
- my ($self, $Expat, $Name) = @_;
- if( $self->{state} == STATE_EXPECT_BODY )
- {
- if( $Name eq $self->{entity} )
- {
- $self->_process( $self->{entity}, $self->{attr}, $self->{tags}, $self->{members} );
- $self->{count}++;
- if( $self->{progress} and ($self->{count}%11) == 1)
- {
- $self->{progress}->($self->{count}, $Expat->current_byte()/$self->{input_length} );
- }
- $self->{state} = STATE_EXPECT_ENTITY;
- }
- return;
- }
- elsif( $self->{state} == STATE_EXPECT_ENTITY )
- {
- return if $Name eq "bounds";
- if( $Name eq "osm" )
- {
- $self->{state} = STATE_INIT;
- } else {die}
- return;
- }
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-OsmReaderV6 - Module for reading OpenStreetMap V6 XML data files
-
-=head1 SYNOPSIS
-
- my $OSM = new Geo::OSM::OsmReader(\&process);
- $OSM->load("Data/changes.osc");
-
- sub process
- {
- my($OSM, $entity) = @_;
- print "Read $entity ".$entity->id."\n";
- my $tags = $entity->tags;
- while( my($k,$v) = splice @{$tags}, 0, 2 )
- { print " $k: $v\n" }
- if( $entity->type eq "way" )
- { print " Nodes: ", join(", ",@{$entity->nodes}),"\n"; }
- }
-
-=head1 AUTHOR
-
-Martijn van Oosterhout <kleptog@svana.org>
-based on OsmXML.pm written by:
-Oliver White (oliver.white@blibbleblobble.co.uk)
-
-=head1 COPYRIGHT
-
-Copyright 2007, Martijn van Oosterhout
-Copyright 2006, Oliver White
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/OsmXML.pm b/navit/script/osm/Geo/OSM/OsmXML.pm
deleted file mode 100644
index 60f458db7..000000000
--- a/navit/script/osm/Geo/OSM/OsmXML.pm
+++ /dev/null
@@ -1,161 +0,0 @@
-package Geo::OSM::OsmXML;
-
-use strict;
-use warnings;
-
-use Utils::File;
-use Utils::Math;
-use Utils::Debug;
-use XML::Parser;
-
-sub new(){ bless{} }
-
-sub load(){
- my ($self, $file_name) = @_;
-
- my $start_time = time();
- my $P = new XML::Parser(Handlers => {Start => \&DoStart, End => \&DoEnd, Char => \&DoChar});
- my $fh = data_open($file_name);
- die "Cannot open OSM File $file_name\n" unless $fh;
- eval {
- $P->parse($fh);
- };
- print "\n" if $DEBUG || $VERBOSE;
- if ( $VERBOSE) {
- printf "Read and parsed $file_name in %.0f sec\n",time()-$start_time;
- }
- if ( $@ ) {
- warn "$@Error while parsing\n $file_name\n";
- return;
- }
- if (not $P) {
- warn "WARNING: Could not parse osm data\n";
- return;
- }
-
-}
-sub name(){return($OsmXML::lastName)};
-
-sub bounds(){
- my ($S,$W,$N,$E) = (1e+6,1e+6,-1e+6,-1e+6); # S,W,N,E
- foreach my $Node(values %OsmXML::Nodes){
- $S = $Node->{"lat"} if($Node->{"lat"} < $S);
- $N = $Node->{"lat"} if($Node->{"lat"} > $N);
- $W = $Node->{"lon"} if($Node->{"lon"} < $W);
- $E = $Node->{"lon"} if($Node->{"lon"} > $E);
- }
- return($S,$W,$N,$E);
-}
-
-# Function is called whenever an XML tag is started
-sub DoStart()
-{
- my ($Expat, $Name, %Attr) = @_;
-
- if($Name eq "node"){
- undef %OsmXML::Tags;
- %OsmXML::MainAttr = %Attr;
- }
- if($Name eq "segment"){
- undef %OsmXML::Tags;
- %OsmXML::MainAttr = %Attr;
- }
- if($Name eq "way"){
- undef %OsmXML::Tags;
- undef @OsmXML::WaySegments;
- %OsmXML::MainAttr = %Attr;
- }
- if($Name eq "tag"){
- $OsmXML::Tags{$Attr{"k"}} = $Attr{"v"};
- }
- if($Name eq "seg"){
- push(@OsmXML::WaySegments, $Attr{"id"});
- }
-}
-
-# Function is called whenever an XML tag is ended
-sub DoEnd(){
- my ($Expat, $Element) = @_;
- if($Element eq "node"){
- my $ID = $OsmXML::MainAttr{"id"};
- $OsmXML::Nodes{$ID}{"lat"} = $OsmXML::MainAttr{"lat"};
- $OsmXML::Nodes{$ID}{"lon"} = $OsmXML::MainAttr{"lon"};
- foreach(keys(%OsmXML::Tags)){
- $OsmXML::Nodes{$ID}{$_} = $OsmXML::Tags{$_};
- }
- }
- if($Element eq "segment"){
- my $ID = $OsmXML::MainAttr{"id"};
- $OsmXML::Segments{$ID}{"from"} = $OsmXML::MainAttr{"from"};
- $OsmXML::Segments{$ID}{"to"} = $OsmXML::MainAttr{"to"};
- foreach(keys(%OsmXML::Tags)){
- $OsmXML::Segments{$ID}{$_} = $OsmXML::Tags{$_};
- }
- }
- if($Element eq "way"){
- my $ID = $OsmXML::MainAttr{"id"};
- $OsmXML::Ways{$ID}{"segments"} = join(",",@OsmXML::WaySegments);
- foreach(keys(%OsmXML::Tags)){
- $OsmXML::Ways{$ID}{$_} = $OsmXML::Tags{$_};
- }
- }
-}
-
-# Function is called whenever text is encountered in the XML file
-sub DoChar(){
- my ($Expat, $String) = @_;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-OsmXML - Module for reading OpenStreetMap XML data files
-
-=head1 SYNOPSIS
-
- $OSM = new OsmXML();
- $OSM->load("Data/nottingham.osm");
-
- foreach $Way(%OsmXML::Ways){
- @Segments = split(/,/, $Way->{"segments"});
-
- foreach $SegmentID(@Segments){
- $Segment = $OsmXML::Segments{$SegmentID};
-
- $Node1 = $OsmXML::Nodes{$Segment->{"from"}};
- $Node2 = $OsmXML::Nodes{$Segment->{"to"}};
-
- printf "Node at %f,%f, named %s, is a %s",
- $Node2->{"lat"},
- $Node2->{"lon"},
- $Node2->{"name"},
- $Node2->{"highway"};
- }
- }
-
-=head1 AUTHOR
-
-Oliver White (oliver.white@blibbleblobble.co.uk)
-
-=head1 COPYRIGHT
-
-Copyright 2006, Oliver White
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/Planet.pm b/navit/script/osm/Geo/OSM/Planet.pm
deleted file mode 100644
index bedfdffc8..000000000
--- a/navit/script/osm/Geo/OSM/Planet.pm
+++ /dev/null
@@ -1,336 +0,0 @@
-##################################################################
-package Geo::OSM::Planet;
-##################################################################
-
-use Exporter;
-@ISA = qw( Exporter );
-use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-@EXPORT = qw( mirror_planet
- osm_dir
- planet_dir
- UTF8sanitize
- estimated_max_id
- estimated_max_count
- );
-
-use strict;
-use warnings;
-
-use HTTP::Request;
-use File::Basename;
-use File::Copy;
-use File::Path;
-use File::Slurp;
-use Getopt::Long;
-use HTTP::Request;
-use Storable ();
-use Data::Dumper;
-
-use Utils::File;
-use Utils::Debug;
-use Utils::LWP::Utils;
-
-
-# As of planet-061220
-my $estimations = {
- 'way' => {
- 'count' => 3918624,
- 'max_id' => 8013668
- },
- 'elem' => {
- 'count' => 312752630,
- 'max_id' => 312752630
- },
- 'seg' => {
- 'count' => 40992844,
- 'max_id' => 57261050
- },
- 'segment' => {
- 'count' => 41325764,
- 'max_id' => 57259818
- },
- 'tag' => {
- 'count' => 186445779,
- 'max_id' => 1
- },
- 'node' => {
- 'count' => 40069619,
- 'max_id' => 59943310
- },
- 'line' => {
- 'count' => 388379350,
- 'max_id' => 312752630
- }
-};
-
-# ------------------------------------------------------------------
-# This routine estimates the maximum id for way,elem,seg,...
-# The values are taken from older planet.osm Files
-# So they mostly are a little bit to low
-# ARGS:
-# $type: line|way|tag|...
-# RETURNS:
-# $result: number of estimated max_id
-sub estimated_max_id($){
- my $type= shift;
- unless ( defined ($estimations->{$type}->{max_id})) {
- warn("\n estimated_max_id($type): unknown Tag-Type\n");
- return 0;
- };
- return $estimations->{$type}->{max_id};
-}
-
-# ------------------------------------------------------------------
-# This routine estimates the maximim number of elements for way,elem,seg,...
-# The values are taken from older planet.osm Files
-# So they mostly are a little bit to low
-# ARGS:
-# $type: line|way|tag|...
-# RETURNS:
-# $result: number of estimated elements
-sub estimated_max_count($){
- my $type= shift;
- unless ( defined ($estimations->{$type}->{count})) {
- warn("\n estimated_max_id($type): unknown Tag-Type\n");
- return 0;
- };
- return $estimations->{$type}->{count};
-}
-
-# ------------------------------------------------------------------
-# returns the osm main directory for holding data
-sub osm_dir() {
- # For later these are the defaults
- # on where we can read/write
- # ~/osm
- # /var/data/osm
- my $dir;
-
- my $home = $ENV{HOME};
- unless ( $home ) {
- $home = `whoami`;
- chomp $home;
- $home = "/home/$home";
- }
-
- $dir = "$home/osm";
- return $dir;
-}
-
-# ------------------------------------------------------------------
-# Returns (or sets) the directory where the planet.osm files will be found
-my $PLANET_DIR='';
-sub planet_dir(;$) {
- my $new_dir=shift;
-
- if ( $new_dir ) {
- $PLANET_DIR = $new_dir;
- } elsif( ! $PLANET_DIR) {
- my $dir = osm_dir();
- $PLANET_DIR = "$dir/planet";
- }
- return $PLANET_DIR;
-}
-
-
-sub sort_unique(@){
- my @srt = sort @_;
- my @erg;
- my $last_val=undef;
- for my $val ( @srt ){
- next if $last_val && $val eq $last_val;
- $last_val=$val;
- push (@erg,$val);
- }
- return @erg
-}
-
-
-# ------------------------------------------------------------------
-# mirror the newest planet.osm File to
-# ~/osm/planet/planet.osm.bz2
-# and the resulting
-# Filename is returned
-#
-# the file is -----NO LONGER--- Sanitized afterwards
-sub mirror_planet(){
- my $planet_server="http://planet.openstreetmap.org";
- my $url = "$planet_server";
-
- my $mirror_dir=planet_dir();
- mkdir_if_needed( $mirror_dir );
-
- my $current_file;
- if ( !$Utils::LWP::Utils::NO_MIRROR ) {
- # Get Index.html of Planet.osm.org
- my $apache_sort_hy_date="?C=M;O=D";
- my $index_file="$mirror_dir/planet_index.html";
- my $result = mirror_file("$url/$apache_sort_hy_date",$index_file);
- if ( $result ) {
- my $index_content = read_file( $index_file ) ;
-
- # Get the current planet.osm File
- my @all_files = ($index_content =~ m/(planet-\d\d\d\d\d\d.osm.bz2|planet-\d\d\d\d\d\d.osm.gz)/g);
- my ( $current_file1,$current_file2 )
- = grep { $_ !~ m/planet-061008/ } reverse sort_unique(@all_files);
- print STDERR " TOP Files: ( $current_file1,$current_file2 ) \n" if $DEBUG;
- $current_file = $current_file1;
- $current_file1 =~ s/\.bz2$/\.gz/;
- if ( $current_file1 eq $current_file2 ) {
- $current_file = $current_file1
- };
- if ( $current_file ) {
- $url .= "/$current_file";
- $current_file = "$mirror_dir/$current_file";
- print STDERR "Mirror OSM Data from $url\n" if $VERBOSE || $DEBUG;
- $result = mirror_file($url,$current_file);
- #return undef unless $result;
- }
- }
- }
-
- my @files= reverse sort_unique( grep { $_ !~ m/planet-061008/ } glob("$mirror_dir/planet-*.osm.{bz2,gz}"));
- if ( $DEBUG) {
- print STDERR "Existing Files: \n\t".join("\n\t",@files)."\n";
- }
- $current_file = $files[0];
-
- if ( $DEBUG) {
- print STDERR "Choosen File: $current_file\n";
- }
-
- return undef unless $current_file;
-
-# $current_file = UTF8sanitize($current_file);
-# if ( $DEBUG >2 || $VERBOSE>3) {
-# print STDERR "Sanitized File: $current_file\n";
-# }
-
- my ($unpacked_file) = ($current_file=~ m/(.*\.osm)/);
- $current_file = $unpacked_file
- unless file_needs_re_generation($current_file,$unpacked_file);
-
- print STDERR "Mirror done, using '$current_file'\n" if $VERBOSE>1 || $DEBUG>1;
- return $current_file;
-}
-
-# ------------------------------------------------------------------
-# creates a second file with a sanitized Version of planet.osm
-# the resulting file can be found at
-# ~/osm/planet/planet-07XXXX-a.osm.bz2
-# If a recent enought Version is found in ~/osm/planet/
-# nothing is done, but the filename of the file is returned
-# if the routine finds an uncompressed up to date Version
-# ~/osm/planet/planet-07XXXX-a.osm
-# this Filename is returned.
-sub UTF8sanitize($){
- my $filename = shift;
- if ( $DEBUG) {
- print STDERR "UTF8sanitize($filename)\n";
- }
- my $start_time=time();
-
- # the newer Files do not need to be sanitized
- my ($file_date) = ($filename =~ m/planet-(\d+)/ );
- return $filename
- if ($file_date >= 061205) && ( $file_date < 061213);
-
- my $filename_new= $filename;
- $filename_new =~ s/\.osm/-a.osm/;
- my $filename_new_check=newest_unpacked_filename($filename_new);
-
- # check if planet-070101-a.osm[.bz2] is newer than planet-070101.osm.bz2
- return $filename_new_check
- unless file_needs_re_generation($filename,$filename_new_check);
-
- # We have to create a new one
- print STDERR "UTF8 Sanitize $filename ... \n";
- # Uggly Hack, but for now it works
- my $UTF8sanitizer=`which UTF8sanitizer`;
- chomp $UTF8sanitizer;
- unless ( -x $UTF8sanitizer ) {
- $UTF8sanitizer=find_file_in_perl_path('../planet.osm/C/UTF8sanitizer');
- }
- die "Sanitizer not found\n" unless -x $UTF8sanitizer;
- print STDERR "Sanitizer found at '$UTF8sanitizer'\n" if $DEBUG;
-
- print STDERR " this may take some time ... \n";
- my $cmd = "gzip -dc $filename | $UTF8sanitizer | bzip2 >$filename_new.part";
- print "Command: $cmd" if $DEBUG || $VERBOSE;
- my $result = `$cmd`;
- print $result if $DEBUG || $VERBOSE;
-
- print "Sanitized $filename " if $DEBUG || $VERBOSE;
- print_time($start_time);
-
- my $file_size = -s "$filename";
- my $file_size_new = -s "$filename_new.part";
- if ( $file_size_new < ($file_size*0.9) ) {
- die "File Sanitize seems not successfull.\n".
- "Original Size $file_size\n".
- "Sanitized Size $file_size_new\n";
- }
- rename "$filename_new.part","$filename_new";
- if ( ! -s $filename_new ) {
- die "Cannot sanitize $filename\n";
- }
- print "now we have a sanitized $filename_new\n" if $DEBUG || $VERBOSE;
- return $filename_new;
-}
-
-# ------------------------------------------------------------------
-# find a file in the current Perl Search path. For now this was the
-# easiest solution to find programms like UTF8Sanitize
-# ARGS: relative filename (relative to @INC-path
-# RETURNS: Absolute path to file
-sub find_file_in_perl_path($){
- my $file = shift;
-
- my $found_file = '';
- for my $path ( @INC ) {
- my $filename = "$path/$file";
- print "find_file_in_perl_path: looking in '$filename'\n" if $DEBUG>2;
- if ( -s $filename){
- $found_file = $filename;
- last;
- };
- }
-
- print "find_file_in_perl_path($file): --> $found_file\n" if $DEBUG;
- return $found_file;
-}
-
-# ------------------------------------------------------------------
-1;
-
-=head1 NAME
-
-Geo::OSM::Planet
-
-=head1 COPYRIGHT
-
-Copyright 2006, Jörg Ostertag
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=head1 AUTHOR
-
-Jörg Ostertag (planet-count-for-openstreetmap@ostertag.name)
-
-=head1 SEE ALSO
-
-http://www.openstreetmap.org/
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/SegmentList.pm b/navit/script/osm/Geo/OSM/SegmentList.pm
deleted file mode 100644
index 0de35ebf5..000000000
--- a/navit/script/osm/Geo/OSM/SegmentList.pm
+++ /dev/null
@@ -1,520 +0,0 @@
-##################################################################
-package Geo::OSM::SegmentList;
-##################################################################
-
-use Exporter;
-@ISA = qw( Exporter );
-use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-@EXPORT = qw( LoadOSM_segment_csv
- reduce_segments_list
- read_osm_file
- load_segment_list
- );
-
-use strict;
-use warnings;
-
-use Math::Trig;
-
-use Data::Dumper;
-use Geo::Geometry;
-use Geo::OSM::Planet;
-use Utils::Debug;
-use Utils::File;
-use Utils::Math;
-use Geo::Filter::Area;
-
-sub load_segment_list($;$){
- my $do_filter_against_osm = shift;
- my $bounds = shift;
-
- my $osm_segments;
- print STDERR "load_segment_list from: '$do_filter_against_osm'\n";
- if ( $do_filter_against_osm =~ m/^postgis|mapnik$/ ) {
- $osm_segments = Geo::OSM::SegmentList::LoadOSM_segment_postgis($bounds);
- } elsif ( -s $do_filter_against_osm ) {
- if ( $do_filter_against_osm =~ m/\.csv/ ) {
- $osm_segments = Geo::OSM::SegmentList::LoadOSM_segment_csv($do_filter_against_osm, $bounds);
- } elsif ( $do_filter_against_osm =~ m/\.osm/ ) {
- $osm_segments = Geo::OSM::SegmentList::read_osm_file($do_filter_against_osm, $bounds);
- } else {
- die "Unknown Datatype for $do_filter_against_osm\n";
- }
- #print Dumper(\$osm_segments ) if $DEBUG;
- } elsif ( $do_filter_against_osm !~ m/^\d*$/ ) {
- die "Unknown Datatype for $do_filter_against_osm\n";
- } else {
-
- # later we search in:
- # ~/.osm/data/planet.osm.csv
- # /var/data/osm/planet.osm.csv
-
- my $home = $ENV{HOME}|| '~/';
- my $path= planet_dir();
- my $osm_filename = "${path}/csv/osm-segments.csv";
- $osm_filename =~ s,\~/,$home/,;
- printf STDERR "check $osm_filename for loading\n" if $DEBUG;
-
- die "Cannot open $osm_filename\n" unless -s $osm_filename;
- $osm_segments = Geo::OSM::SegmentList::LoadOSM_segment_csv($osm_filename, $bounds);
- };
- return $osm_segments
-}
-
-# ------------------------------------------------------------------
-# reduce osm Segments to only those inside the bounding box
-# This make comparison faster
-sub reduce_segments_list($$) {
- my $all_osm_segments = shift;
- my $bounds = shift;
-
- my $start_time=time();
-
- #printf STDERR "reduce_osm_segments(".Dumper(\$bounds).")\n" if $DEBUG;
-
- my $osm_segments = [];
- my $count=0;
- my $all_count=0;
- for my $segment ( @{$all_osm_segments} ) {
- $all_count++;
- next unless $segment->[0] >= $bounds->{lat_min};
- next unless $segment->[0] <= $bounds->{lat_max};
- next unless $segment->[1] >= $bounds->{lon_min};
- next unless $segment->[1] <= $bounds->{lon_max};
- next unless $segment->[2] >= $bounds->{lat_min};
- next unless $segment->[2] <= $bounds->{lat_max};
- next unless $segment->[3] >= $bounds->{lon_min};
- next unless $segment->[3] <= $bounds->{lon_max};
- $count++;
- push(@{$osm_segments},$segment);
- }
- if ( $VERBOSE > 3 || $DEBUG > 3 ) {
- printf STDERR " Reduced OSM Segment list to $count( $all_count) OSM-Segments ";
- print_time($start_time);
- }
-
- return $osm_segments;
-}
-
-# -------------------------------------------------------
-# Load the csv Version of a segment list
-# Args: $filename, {lat_min=> .., lat_max => ..., lon_min => .., lon_max => .. }
-sub LoadOSM_segment_csv($;$){
- my $filename = shift;
- my $bounds = shift;
- printf STDERR "Reading OSM-Segment-csv File: $filename, ($bounds->{lat_min} ... $bounds->{lat_max} , $bounds->{lon_min} ... $bounds->{lon_max})\n"
- if $DEBUG || $VERBOSE;
- my $start_time=time();
-
- my $segments;
- my $check_bounds = 1 if defined $bounds;
- $main::dont_write_osm_storable=1 || $check_bounds;
- $main::dont_read_osm_storable=1;
-
- if ( -s "$filename.storable" &&
- ! file_needs_re_generation($filename,"$filename.storable")
- && ! $main::dont_read_osm_storable ) {
- # later we should compare if the file also is newer than the source
- $filename .= ".storable";
- printf STDERR "Reading OSM File as storable: $filename\n"
- if $DEBUG || $VERBOSE;
- $segments = Storable::retrieve($filename);
- if ( $VERBOSE >1 || $DEBUG) {
- printf STDERR "Reading $filename done";
- print_time($start_time);
- }
- } else {
- my $fh = data_open($filename);
- my $count=0;
- my $count_read=0;
-
- die "Cannot open $filename in LoadOSM_segment_csv.\n".
- "Please create it first to use the option --osm.\n".
- "See --help for more info" unless $fh;
-
- while ( my $line = $fh ->getline() ) {
- $count++;
- chomp $line;
- my @segment;
- my $dummy;
- ($segment[0],$segment[1],$segment[2],$segment[3],$segment[4]) = split(/,/,$line,5);
- #print STDERR Dumper(\@segment);
-
- if ( $check_bounds ) {
- next unless $segment[0] >= $bounds->{lat_min};
- next unless $segment[0] <= $bounds->{lat_max};
- next unless $segment[1] >= $bounds->{lon_min};
- next unless $segment[1] <= $bounds->{lon_max};
- next unless $segment[2] >= $bounds->{lat_min};
- next unless $segment[2] <= $bounds->{lat_max};
- next unless $segment[3] >= $bounds->{lon_min};
- next unless $segment[3] <= $bounds->{lon_max};
- }
-
- push (@{$segments},\@segment);
- $count_read++;
- }
- $fh->close();
- if ( $VERBOSE >1 || $DEBUG) {
- printf STDERR "Read and parsed $count_read($count) Lines in $filename";
- print_time($start_time);
- }
- if ( ! $main::dont_write_osm_storable ) {
- $start_time=time();
- Storable::store($segments ,"$filename.storable");
- if ( $VERBOSE >1 || $DEBUG) {
- printf STDERR "Wrote Storable in to $filename.storable";
- print_time($start_time);
- }
- };
- }
-
-
- return($segments);
-}
-
-
-
-# -------------------------------------------------------
-# Load the segment list from postgis
-# Args: {lat_min=> .., lat_max => ..., lon_min => .., lon_max => .. }
-# This is a test to see if we can handle all segments of the world
-# with reasonable query times
-sub LoadOSM_segment_postgis($;$){
- my $bounds = shift;
- printf STDERR "Reading OSM-Segments form PostGis($bounds->{lat_min} ... $bounds->{lat_max} , $bounds->{lon_min} ... $bounds->{lon_max})\n"
- if $DEBUG || $VERBOSE;
- my $start_time=time();
-
- my $segments;
- my $check_bounds = 1 if defined $bounds;
- my @row;
- my $sth;
-
- use DBI;
-
- my $dbname="gis";
- my $dbhost="/var/run/postgresql";
- my $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$dbhost", "", "", {AutoCommit => 0});
-
- unless( $dbh) {
- warn "\n\n!!!!!!!!!!!!!!!! WARNING: Cannot Open Database for reading OSM Segments\n\n";
- return;
- };
-
- # WHERE the_geom && setsrid('BOX(47.36 21.40,51.185 21.53)'::box2d, 42102)
- # WHERE GeomFromText('POINT(25.3 25.40)', 42102) && the_geom \
- # AND distance(the_geom, GeomFromText('POINT(25.7 5.3)', 42102)) = 0
- # WHERE distance(the_geom, setsrid('BOX(4.36 2.3,1.5 2.8)'::box2d, 42102)) = 0
- # WHERE the_point && setsrid('BOX(295149 2315499, 465992 2163790)'::box2d, -1)
-
- ##############################
- # FOR DEBUG
-# $bounds->{lat_min}=10;
-# $bounds->{lon_min}=10;
-# $bounds->{lat_max}=70;
-# $bounds->{lon_max}=70;
- #
- ####################################
-
- my $SRID_WGS84="4326";
- my $SRID_UNKNOWN="3395";
- my $SRID_OSM="900913";
-
- my $polygon_text=sprintf("POLYGON((%.5f %.5f,%.5f %.5f,%.5f %.5f,%.5f %.5f,%.5f %.5f))",
- $bounds->{lat_min}-0.1 , $bounds->{lon_min}-0.1,
- $bounds->{lat_max}+0.1 , $bounds->{lon_min}-0.1 ,
- $bounds->{lat_max}+0.1 , $bounds->{lon_max}+0.1 ,
- $bounds->{lat_min}-0.1 , $bounds->{lon_max}+0.1 ,
- $bounds->{lat_min}-0.1 , $bounds->{lon_min}-0.1);
- my $polygon="transform(GeomFromText('$polygon_text',${SRID_WGS84}),$SRID_OSM)";
-
- my $select = "select osm_id,highway,name from planet_osm_line where highway is not null and way && ".
- " $polygon ".
- "limit 5;";
- print "\nprepare: $select\n";
- $sth = $dbh->prepare($select, { pg_server_prepare => 1 });
- $sth->execute();
- while ( @row = $sth->fetchrow_array ) {
- print "postgis ROW: @row\n";
- }
- printf STDERR "---------------------------------------------------------------\n" if $DEBUG || $VERBOSE;
-
-
-# $select = "SELECT name ,astext(way),$distance FROM planet_osm_roads WHERE $distance < 500 order by $distance;";
-
- #SELECT * FROM planet_osm_roads WHERE way in ?",
- #$select = "SELECT name FROM planet_osm_roads WHERE distance(way,GeomFromText('POINT(856371.58 6683083.41)', 3395)) < 1000;";
-# my $distance="distance(way, GeomFromText('POINT(856371.58 6683083.41)', 3395))";
- my $point_text=sprintf("POINT(%.5f %.5f)", $bounds->{lat_min} , $bounds->{lon_min});
- my $point="transform(GeomFromText('$point_text',${SRID_WGS84}),$SRID_OSM)";
- my $distance="distance(way,$point)";
-
- $select = "SELECT name FROM planet_osm_line WHERE ${distance} < 1000;";
- print "\nprepare: $select\n";
- $sth = $dbh->prepare($select, { pg_server_prepare => 1 });
- $sth->execute();
- while ( @row = $sth->fetchrow_array ) {
- print "postgis ROW: @row\n";
- }
- printf STDERR "---------------------------------------------------------------\n" if $DEBUG || $VERBOSE;
-
- $select = "SELECT name FROM planet_osm_roads WHERE ${distance} < 1000;";
- print "\nprepare: $select\n";
- $sth = $dbh->prepare($select, { pg_server_prepare => 1 });
- $sth->execute();
- while ( @row = $sth->fetchrow_array ) {
- print "postgis ROW: @row\n";
- }
- printf STDERR "---------------------------------------------------------------\n" if $DEBUG || $VERBOSE;
-
- $select = "SELECT osm_id,highway,name,asText(transform(way,${SRID_WGS84})) from planet_osm_line where highway is not null limit 5;";
- print "\nprepare: $select\n";
- $sth = $dbh->prepare($select, { pg_server_prepare => 1 });
- $sth->execute();
- while ( @row = $sth->fetchrow_array ) {
- print "postgis ROW: @row\n";
- }
-
- printf STDERR "---------------------------------------------------------------\n" if $DEBUG || $VERBOSE;
-
- my $count=0;
- my $count_read=0;
- while ( @row = $sth->fetchrow_array ) {
- print "postgis ROW: @row\n";
-
- $count++;
- my $line="";
- chomp $line;
- my @segment;
- my $dummy;
- ($segment[0],$segment[1],$segment[2],$segment[3],$segment[4]) = split(/,/,$line,5);
- #print STDERR Dumper(\@segment);
-
- if ( $check_bounds ) {
- next unless $segment[0] >= $bounds->{lat_min};
- next unless $segment[0] <= $bounds->{lat_max};
- next unless $segment[1] >= $bounds->{lon_min};
- next unless $segment[1] <= $bounds->{lon_max};
- next unless $segment[2] >= $bounds->{lat_min};
- next unless $segment[2] <= $bounds->{lat_max};
- next unless $segment[3] >= $bounds->{lon_min};
- next unless $segment[3] <= $bounds->{lon_max};
- }
-
- push (@{$segments},\@segment);
- $count_read++;
- }
-
- $dbh->disconnect;
-
-
- return($segments);
-}
-
-
-# ----------------------
-sub Storable_save($$){
- my $filename = shift;
- my $segments = shift;
- eval{
- Storable::store($segments ,"$filename.storable");
- };
- if ( $@ ) {
- #warn Dumper(\$segments);
- die "Storable_save(): $@\n";
- }
- printf STDERR "Stored OSM File: $filename as storable\n"
- if $DEBUG || $VERBOSE;
-}
-
-# ----------------------
-sub Storable_load($){
- my $filename = shift;
- $filename .= ".storable";
- my $segments = Storable::retrieve($filename);
- printf STDERR "Loaded OSM File: $filename as storable\n"
- if $DEBUG || $VERBOSE;
- return $segments;
-}
-
-##################################################################
-# read Segment list from osm File
-##################################################################
-
-#our $read_osm_nodes;
-our $read_osm_segments;
-#our $read_osm_obj;
-our (%MainAttr,$Type,%Tags, @WaySegments);
-# Stats
-our %AllTags;
-# Stored data
-our (%Nodes, %Segments, %Stats);
-our $AREA_FILTER;
-$AREA_FILTER = Geo::Filter::Area->new( area => "world" );
-my $from_node=0;
-
-# Function is called whenever an XML tag is started
-#----------------------------------------------
-sub DoStart()
-{
- my ($Expat, $Name, %Attr) = @_;
-
- if($Name eq "node"){
- undef %Tags;
- %MainAttr = %Attr;
- $Type = "n";
- }
- if($Name eq "segment"){
- undef %Tags;
- %MainAttr = %Attr;
- $Type = "s";
- }
- if($Name eq "way"){
- undef %Tags;
- undef @WaySegments;
- %MainAttr = %Attr;
- $Type = "w";
- }
- if($Name eq "tag"){
- # TODO: protect against id,from,to,lat,long,etc. being used as tags
- $Tags{$Attr{"k"}} = $Attr{"v"};
- $AllTags{$Attr{"k"}}++;
- $Stats{"tags"}++;
- }
- if($Name eq "way"){
- $from_node=0;
- }
- if($Name eq "nd" ) {
- my $to_node = $Attr{"ref"};
- if ( $from_node &&
- defined($Nodes{$from_node}) &&
- defined($Nodes{$to_node})
- ) {
- my ($lat1,$lon1)=split(",",$Nodes{$from_node});
- my ($lat2,$lon2)=split(",",$Nodes{$to_node});
- my $angle = angle_north_relative(
- { lat => $lat1 , lon => $lon1 },
- { lat => $lat2 , lon => $lon2 });
- push (@{$read_osm_segments},[$lat1,$lon1,$lat2,$lon2,$angle]);
- }
- $from_node = $to_node;
- }
-}
-
-# Function is called whenever an XML tag is ended
-#----------------------------------------------
-sub DoEnd(){
- my ($Expat, $Element) = @_;
- my $ID = $MainAttr{"id"};
-
- if($Element eq "node"){
- my $node={};
- $node->{"lat"} = $MainAttr{"lat"};
- $node->{"lon"} = $MainAttr{"lon"};
-
- if ( $AREA_FILTER->inside($node) ) {
- $Nodes{$ID} = sprintf("%f,%f",$MainAttr{lat}, $MainAttr{lon});
- foreach(keys(%Tags)){
- $node->{$_} = $Tags{$_};
- }
- }
- }
-
- if($Element eq "segment"){
- my $from = $MainAttr{"from"};
- my $to = $MainAttr{"to"};
- if ( defined($Nodes{$from}) && defined($Nodes{$to}) ) {
- $Segments{$ID}{"from"} = $from;
- $Segments{$ID}{"to"} = $to;
- }
- }
-
- if($Element eq "way"){
- if ( @WaySegments ) {
- foreach my $seg_id( @WaySegments ){ # we only have the needed ones in here
- }
- }
- }
-}
-
-# Function is called whenever text is encountered in the XML file
-#----------------------------------------------
-sub DoChar(){
- my ($Expat, $String) = @_;
-}
-
-# --------------------------------------------
-sub read_osm_file($;$) { # Insert Segments from osm File
- my $filename = shift;
- my $bounds = shift;
-
- print("Reading OSM Segment from File $filename\n") if $VERBOSE || $DEBUG;
- if ( file_needs_re_generation($filename,"$filename.storable")) {
- print "$filename: ".(-s $filename)." Bytes\n" if $DEBUG;
-
- print STDERR "Parsing file: $filename\n" if $DEBUG;
- my $p = new XML::Parser( Handlers => {
- Start => \&DoStart,
- End => \&DoEnd,
- Char => \&DoChar,
- },
- ErrorContext => 10,
- );
-
- my $fh = data_open($filename);
- if (not $fh) {
- print STDERR "WARNING: Could not open osm data from $filename\n";
- return;
- }
- my $content;
- eval {
- $content = $p->parse($fh);
- };
- if (not $p) {
- print STDERR "WARNING: Could not parse osm data from $filename\n";
- return;
- }
- #warn Dumper(\$read_osm_segments);
- Storable_save($filename,$read_osm_segments);
- } else {
- $read_osm_segments=Storable_load($filename);
- }
- return($read_osm_segments);
-}
-
-# -------------------------------------------------------
-
-1;
-
-=head1 NAME
-
-Geo::OSM::SegmentList
-
-=head1 COPYRIGHT
-
-Copyright 2006, Jörg Ostertag
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=head1 AUTHOR
-
-Jörg Ostertag (planet-count-for-openstreetmap@ostertag.name)
-
-=head1 SEE ALSO
-
-http://www.openstreetmap.org/
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/Tracks2OSM.pm b/navit/script/osm/Geo/OSM/Tracks2OSM.pm
deleted file mode 100644
index 4016f8c02..000000000
--- a/navit/script/osm/Geo/OSM/Tracks2OSM.pm
+++ /dev/null
@@ -1,145 +0,0 @@
-##################################################################
-package Geo::OSM::Tracks2OSM;
-# Functions:
-# tracks2osm:
-# converts a tracks Hash to an OSM Datastructure
-#
-##################################################################
-
-use Exporter;
-@ISA = qw( Exporter );
-use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-@EXPORT = qw( tracks2osm );
-
-use strict;
-use warnings;
-
-use Data::Dumper;
-
-use Geo::Geometry;
-use Geo::Tracks::Tools;
-use Utils::Debug;
-use Utils::File;
-use Utils::Math;
-
-my $first_id = -10000;
-
-my $lat_lon2node={};
-my $next_osm_node_number = $first_id;
-my $osm_nodes_duplicate = {};
-# Check if a node at this position exists
-# if it exists we get the old id; otherwise we create a new one
-sub create_node($$) {
- my $osm_nodes = shift;
- my $elem = shift;
-
- printf STDERR "create_node(): lat or lon undefined : $elem->{lat},$elem->{lon} ".Dumper(\$elem)."\n"
- unless defined($elem->{lat}) && defined($elem->{lon}) ;
-
- my $id=0;
- my $lat_lon = sprintf("%f_%f",$elem->{lat},$elem->{lon});
- if ( defined( $osm_nodes_duplicate->{$lat_lon} ) ) {
- $id = $osm_nodes_duplicate->{$lat_lon};
- printf STDERR "Node already exists as $id pos:$lat_lon\n"
- if $DEBUG>2;
- $osm_nodes->{$id}=$elem;
- # TODO: We have to check that the tags of the old and new nodes don't differ
- # or we have to merge them
- } else {
- $next_osm_node_number--;
- $id = $next_osm_node_number;
- $elem->{tag}->{converted_by} = "Track2osm" ;
- $elem->{node_id} ||= $id;
- $osm_nodes->{$id}=$elem;
- $lat_lon2node->{$lat_lon}=$id;
- $osm_nodes_duplicate->{$lat_lon}=$id;
- };
- if ( !$id ) {
- print STDERR "create_node(): Null node($id,$lat_lon) created\n".
- Dumper($elem)
- if $DEBUG;
- }
- return $id;
-}
-
-
-my $osm_way_number = $first_id;
-# ------------------------------------------------------------------
-sub tracks2osm($){
- my $tracks = shift;
-
-
- my $osm_nodes = {};
- my $osm_ways = {};
- my $reference = $tracks->{filename};
-
- my $last_angle = 999999999;
- my $angle;
- my $angle_to_last;
-
-
- my $count_valid_points_for_ways=0;
-
- enrich_tracks($tracks);
-
- for my $track ( @{$tracks->{tracks}} ) {
-
- # We need at least two elements in track
- next unless scalar(@{$track})>1;
-
- $osm_way_number--;
- $osm_ways->{$osm_way_number}->{tag} = {
- "converted_by" => "Track2osm",
- "highway" => "FIXME",
- "note" => "FIXME",
- };
- for my $elem ( @{$track} ) {
- my $node_id = $elem->{node_id} || create_node($osm_nodes,$elem);
-
- # -------------------------------------------- Add to Way
- push(@{$osm_ways->{$osm_way_number}->{nd}},$node_id);
- $count_valid_points_for_ways++;
- }
- }
-
- my $bounds = GPS::get_bounding_box($tracks);
- printf STDERR "Track $reference Bounds: ".Dumper(\$bounds) if $DEBUG>5;
- return { nodes => $osm_nodes,
- ways => $osm_ways,
- bounds => $bounds,
- };
-}
-
-
-
-=head1 NAME
-
-Geo::OSM::Track2OSM
-
-=head1 COPYRIGHT
-
-Copyright 2006, Jörg Ostertag
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=head1 AUTHOR
-
-Jörg Ostertag (planet-count-for-openstreetmap@ostertag.name)
-
-=head1 SEE ALSO
-
-http://www.openstreetmap.org/
-
-=cut
diff --git a/navit/script/osm/Geo/OSM/Upload.pm b/navit/script/osm/Geo/OSM/Upload.pm
deleted file mode 100644
index da18e97ec..000000000
--- a/navit/script/osm/Geo/OSM/Upload.pm
+++ /dev/null
@@ -1,145 +0,0 @@
-package osm;
-
-use strict;
-use warnings;
-
-
-use WWW::Curl::easy;
-
-sub new(){bless{}};
-
-sub setup(){
- my $self = shift();
- $self->{Username} = shift();
- $self->{Password} = shift();
- $self->{UserAgent} = shift();
-}
-
-sub tempfiles(){
- my $self = shift();
- $self->{file1} = shift();
- $self->{file2} = shift();
-}
-
-sub uploadWay(){
- my ($self, $Tags, @Segments) = @_;
- $Tags .= sprintf("<tag k=\"created_by\" v=\"%s\"/>", $self->{UserAgent});
-
- my $Segments = "";
- foreach $Segment(@Segments){
- $Segments .= "<seg id=\"$Segment\"/>";
- }
-
- my $Way = "<way id=\"0\">$Segments$Tags</way>";
- my $OSM = "<osm version=\"0.3\">$Way</osm>";
- my $data = "<?xml version=\"1.0\"?>\n$OSM";
- my $path = "way/0";
-
- my ($response, $http_code) = $self->upload($data, $path);
- return($response);
-}
-
-sub uploadSegment(){
- my ($self, $Node1,$Node2,$Tags) = @_;
- $Tags .= sprintf("<tag k=\"created_by\" v=\"%s\"/>", $self->{UserAgent});
-
- my $Segment = sprintf("<segment id=\"0\" from=\"%d\" to=\"%d\">$Tags</segment>", $Node1,$Node2);
- my $OSM = "<osm version=\"0.3\">$Segment</osm>";
- my $data = "<?xml version=\"1.0\"?>\n$OSM";
- my $path = "segment/0";
-
- my ($response, $http_code) = $self->upload($data, $path);
-
-
- return($response);
-}
-
-sub uploadNode(){
- my ($self, $Lat, $Long, $Tags) = @_;
- $Tags .= sprintf("<tag k=\"created_by\" v=\"%s\"/>", $self->{UserAgent});
-
- my $Node = sprintf("<node id=\"0\" lon=\"%f\" lat=\"%f\">$Tags</node>", $Long, $Lat);
- my $OSM = "<osm version=\"0.3\">$Node</osm>";
- my $data = "<?xml version=\"1.0\"?>\n$OSM";
- my $path = "node/0";
-
- my ($response, $http_code) = $self->upload($data, $path);
-
- return($response);
-}
-
-sub upload(){
- my($self, $data, $path) = @_;
-
- my $curl = new WWW::Curl::easy;
-
- my $login = sprintf("%s:%s", $self->{Username}, $self->{Password});
-
- open(my $FileToSend, ">", $self->{file1});
- print $FileToSend $data;
- close $FileToSend;
-
- my $url = "http://www.openstreetmap.org/api/0.3/$path";
-
- open(my $TxFile, "<", $self->{file1});
- open(my $RxFile, ">",$self->{file2});
- $curl->setopt(CURLOPT_URL,$url);
- $curl->setopt(CURLOPT_RETURNTRANSFER,-1);
- $curl->setopt(CURLOPT_HEADER,0);
- $curl->setopt(CURLOPT_USERPWD,$login);
- $curl->setopt(CURLOPT_PUT,-1);
- $curl->setopt(CURLOPT_INFILE,$TxFile);
- $curl->setopt(CURLOPT_INFILESIZE, -s $self->{file1});
- $curl->setopt(CURLOPT_FILE, $RxFile);
-
- $curl->perform();
- my $http_code = $curl->getinfo(CURLINFO_HTTP_CODE);
- my $err = $curl->errbuf;
- $curl->close();
- close $TxFile;
- close $RxFile;
-
- open(my $ResponseFile, "<", $self->{file2});
- my $response = int(<$ResponseFile>);
- close $ResponseFile;
-
- print "Code $http_code\n" if($http_code != 200);
-
- return($response, $http_code);
-}
-
-1;
-
-
-=head1 NAME
-
-Geo::OSM::Upload
-
-=head1 COPYRIGHT
-
-Copyright 2006, Jörg Ostertag
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=head1 AUTHOR
-
-Jörg Ostertag (planet-count-for-openstreetmap@ostertag.name)
-
-=head1 SEE ALSO
-
-http://www.openstreetmap.org/
-
-=cut
-
diff --git a/navit/script/osm/Geo/OSM/Write.pm b/navit/script/osm/Geo/OSM/Write.pm
deleted file mode 100644
index 463c2d0cd..000000000
--- a/navit/script/osm/Geo/OSM/Write.pm
+++ /dev/null
@@ -1,170 +0,0 @@
-##################################################################
-package Geo::OSM::Write;
-##################################################################
-
-use Exporter;
-@ISA = qw( Exporter );
-use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-@EXPORT = qw( write_osm_file );
-
-use strict;
-use warnings;
-
-use Math::Trig;
-use Data::Dumper;
-
-use Geo::Geometry;
-use Utils::Debug;
-use Utils::File;
-use Utils::Math;
-
-
-# ------------------------------------------------------------------
-sub tags2osm($){
- my $obj = shift;
-
- my $erg = "";
- for my $k ( keys %{$obj->{tag}} ) {
- my $v = $obj->{tag}{$k};
- if ( ! defined $v ) {
- warn "incomplete Object: ".Dumper($obj);
- }
- #next unless defined $v;
-
- # character escaping as per http://www.w3.org/TR/REC-xml/
- $v =~ s/&/&amp;/g;
- $v =~ s/\'/&apos;/g;
- $v =~ s/</&lt;/g;
- $v =~ s/>/&gt;/g;
- $v =~ s/\"/&quot;/g;
-
- $erg .= " <tag k=\'$k\' v=\'$v\' />\n";
- }
- return $erg;
-}
-
-sub write_osm_file($$) { # Write an osm File
- my $filename = shift;
- my $osm = shift;
-
- my $osm_nodes = $osm->{nodes};
- my $osm_ways = $osm->{ways};
-
- $osm->{tool} ||= "OSM-Tool";
- my $count_nodes = 0;
- my $count_ways = 0;
-
- my $generate_ways=$main::generate_ways;
-
- my $start_time=time();
-
- printf STDERR ("Writing OSM File $filename\n") if $VERBOSE >1 || $DEBUG>1;
-
- my $fh;
- if ( $filename eq "-" ) {
- $fh = IO::File->new('>&STDOUT');
- $fh or die("cannot open STDOUT: $!");
- } else {
- $fh = IO::File->new(">$filename");
- }
- $fh->binmode(':utf8');
-
- print $fh "<?xml version='1.0' encoding='UTF-8'?>\n";
- print $fh "<osm version=\'0.5\' generator=\'".$osm->{tool}."\'>\n";
- if ( defined ( $osm->{bounds} ) ) {
- my $bounds = $osm->{bounds};
- my $bounds_sting = "$bounds->{lat_min},$bounds->{lon_min},$bounds->{lat_max},$bounds->{lon_max}";
- # -90,-180,90,180
- print $fh " <bound box=\"$bounds_sting\" origin=\"OSM-perl-writer\" />\n";
-
- }
-
- # --- Nodes
- for my $node_id ( sort keys %{$osm_nodes} ) {
- next unless $node_id;
- my $node = $osm_nodes->{$node_id};
- my $lat = $node->{lat};
- my $lon = $node->{lon};
- unless ( defined($lat) && defined($lon)){
- printf STDERR "Node '$node_id' not complete\n";
- next;
- }
- print $fh " <node id=\'$node_id\' ";
- print $fh " timestamp=\'".$node->{timestamp}."\' "
- if defined $node->{timestamp};
- print $fh " changeset=\'".$node->{changeset}."\' "
- if defined $node->{changeset};
- print $fh " lat=\'$lat\' ";
- print $fh " lon=\'$lon\' ";
- print $fh ">\n";
- print $fh tags2osm($node);
- print $fh " </node>\n";
- $count_nodes++;
- }
-
- # --- Ways
- for my $way_id ( sort keys %{$osm_ways} ) {
- next unless $way_id;
- my $way = $osm_ways->{$way_id};
- next unless scalar( @{$way->{nd}} )>1;
-
- print $fh " <way id=\'$way_id\'";
- print $fh " timestamp=\'".$way->{timestamp}."\'"
- if defined $way->{timestamp};
- print $fh ">";
-
- for my $way_nd ( @{$way->{nd}} ) {
- next unless $way_nd;
- print $fh " <nd ref=\'$way_nd\' />\n";
- }
- print $fh tags2osm($way);
- print $fh " </way>\n";
- $count_ways++;
-
- }
-
- print $fh "</osm>\n";
- $fh->close();
-
- if ( $VERBOSE || $DEBUG ) {
- printf STDERR "%-35s: ",$filename;
- printf STDERR " Wrote OSM File ".
- "($count_nodes Nodes, $count_ways Ways)";
- print_time($start_time);
- }
-
-}
-
-1;
-
-=head1 NAME
-
-Geo::OSM::Write
-
-=head1 COPYRIGHT
-
-Copyright 2006, Jörg Ostertag
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, 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 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.
-
-=head1 AUTHOR
-
-Jörg Ostertag (planet-count-for-openstreetmap@ostertag.name)
-
-=head1 SEE ALSO
-
-http://www.openstreetmap.org/
-
-=cut
diff --git a/navit/script/osm/border_follower.pl b/navit/script/osm/border_follower.pl
deleted file mode 100755
index 3a5b31167..000000000
--- a/navit/script/osm/border_follower.pl
+++ /dev/null
@@ -1,139 +0,0 @@
-#! /usr/bin/perl
-# Do a
-# svn co http://svn.openstreetmap.org/applications/utils/perl_lib/Geo
-# and
-# svn co http://svn.openstreetmap.org/applications/utils/perl_lib/Utils
-# first
-# Example usage:
-# ./border_follower.pl 10359135 Germany 2 country state
-use Geo::OSM::APIClientV5;
-use Data::Dumper;
-$direction='left';
-if ($ARGV[0] eq '-r') {
- $direction='right';
- shift(@ARGV);
-}
-$first_wayid=$ARGV[0];
-$name=$ARGV[1];
-$required_admin_level=$ARGV[2];
-$type=$ARGV[3];
-$alt_type=$ARGV[4];
-$revers=0;
-$api=new Geo::OSM::APIClient(api=>'http://www.openstreetmap.org/api/0.5');
-$wayid=$first_wayid;
-$path="$first_wayid";
-sub error
-{
- my ($message)=@_;
- $node=$api->get_node($last);
- print "$message at Node $last $node->{lat} $node->{lon}\n";
- $lat=$node->{lat};
- $lon=$node->{lon};
- $latl=$node->{lat}-0.01;
- $lath=$node->{lat}+0.01;
- $lonl=$node->{lon}-0.01;
- $lonh=$node->{lon}+0.01;
- system("firefox 'http://www.informationfreeway.org/?lat=$lat&lon=$lon&zoom=12&layers=B000F000F' ; wget -O error.osm http://www.openstreetmap.org/api/0.5/map?bbox=$lonl,$latl,$lonh,$lath ; josm error.osm --selection=id:$last");
- exit(1);
-}
-
-do {
- print "Following $wayid\n";
- $way=$api->get_way($wayid);
-# print Dumper($way->{'tags'});
-
- $nodes=$way->nodes;
- $tags = $way->tags;
- $reverse=0;
-# print Dumper($tags);
- while( my($k,$v) = splice @{$tags}, 0, 2 ) {
- if (($k eq "$direction:$type" || $k eq "$direction:$alt_type") && $v eq $name) {
- $reverse=1;
- }
- }
- if ($reverse) {
- $first=$nodes->[$#$nodes];
- $last=$nodes->[0];
- } else {
- $first=$nodes->[0];
- $last=$nodes->[$#$nodes];
- }
- $ways=$api->get_node_ways($last);
-
-# print "first=$first\n";
-# print "last=$last\n";
-
- print "$#$ways Ways\n";
- if ($#$ways <= 0) {
- error "End";
- }
- $lastid=$wayid;
- $count=0;
- foreach $way (@$ways) {
- $newid=$way->{'id'};
- $timestamp=$way->{'timestamp'};
- if ($newid == $lastid) {
- next;
- }
- $nodes=$way->nodes;
- print "way $newid ($#$nodes nodes) $timestamp\n";
- my $tags = $way->tags;
- $match=0;
- $boundary=0;
- $admin_level=0;
- while( my($k,$v) = splice @{$tags}, 0, 2 ) {
- print "tag: $k=$v\n";
- if (($k eq "left:$type" || $k eq "right:$type")) {
- if ($v eq $name) {
- $match=1;
- } else {
- $neighbors{$v}=$newid;
- }
- }
- if (($k eq "left:$alt_type" || $k eq "right:$alt_type") && $v eq $name) {
- print "Warning: $k in $newid\n";
- $match=1;
- }
- if ($k eq "boundary") {
- if ($boundary == 0 && $v eq "administrative") {
- $boundary=1;
- } else {
- $boundary=2;
- }
- }
- if ($k eq "admin_level") {
- if ($admin_level == 0 && $v eq $required_admin_level) {
- $admin_level=1;
- } else {
- $admin_level=2;
- }
- }
- }
- if ($match) {
- print "MATCH\n";
- if ($boundary != 1 ) {
- print "boundary $boundary wrong at $newid\n"
- }
- if ($admin_level != 1) {
- print "admin_level $admin_level wrong at $newid\n"
- }
- $wayid=$newid;
- $count++;
- }
- }
- if ($count == 0) {
- error "No connection"
- } else {
- if ($count > 1) {
- error "Multiple connections ($count)"
- } else {
- $path="$path $wayid";
- }
- }
-} while ($wayid != $first_wayid);
-print "End reached\n";
-print "Path $path\n";
-while (($key,$value)=each(%neighbors)) {
- print "Neighbor $key $value\n";
-}
-#print Dumper($ways);
diff --git a/navit/script/osm/osmtool.pl b/navit/script/osm/osmtool.pl
deleted file mode 100755
index 10f50a8ed..000000000
--- a/navit/script/osm/osmtool.pl
+++ /dev/null
@@ -1,142 +0,0 @@
-#! /usr/bin/perl
-use Geo::OSM::APIClientV6;
-use Data::Dumper;
-
-sub print_error
-{
- print Dumper($api->{last_error});
- print 'Error:' . $api->{last_error}->rc . "\n";
-}
-
-sub print_entitiy
-{
- my ($res)=@_;
-
- my ($xml);
- $xml=$res->xml;
- $xml=~s/>/>\n/g;
- print $xml;
-}
-
-sub remove_member
-{
- my ($res,$type,$id)=@_;
-
- my (@members);
- my $found=0;
- foreach my $member (@{$res->members}) {
- if ($member->member_type eq $type && $member->ref eq $id) {
- $found++;
- } else {
- push(@members, $member);
- }
- }
- if ($found) {
- $res->set_members(\@members);
- }
- return $found;
-}
-
-sub cmd_delete
-{
- my($type,$id)=@_;
- my($res);
- $res=$api->get($type,$id);
- if (!$api->create_changeset()) {
- print_error();
- return 1;
- }
- if (!$api->delete($res)) {
- print_error();
- return 1;
- }
- if (!$api->close_changeset()) {
- print_error();
- return 1;
- }
- return 0;
-}
-
-sub cmd_get
-{
- my($type,$id)=@_;
-
- my($res,$xml);
- $res=$api->get($type,$id);
- print_entitiy($res);
-}
-
-sub cmd_relations
-{
- my($type,$id)=@_;
-
- my($res,$xml);
- $res=$api->get($type,$id,"relations");
- print_entitiy($res);
-}
-
-sub cmd_remove_member_all
-{
- my($type,$id)=@_;
-
- my($res);
- $res=$api->get($type,$id,"relations");
- if (!remove_member($res,$type,$id)) {
- print "Error:Member not found\n";
- return 1;
- }
- if (!$api->modify($res)) {
- print_error();
- return 1;
- }
- return 0;
-}
-
-sub cmd_reload
-{
- my($type,$id)=@_;
- $res=$api->get($type,$id);
- if (!$api->create_changeset()) {
- print_error();
- return 1;
- }
- if (!$api->modify($res)) {
- print_error();
- return 1;
- }
- if (!$api->close_changeset()) {
- print_error();
- return 1;
- }
- return 0;
-}
-
-sub command
-{
- my(@arg)=@_;
-
- if ($arg[0] eq 'delete') {
- cmd_delete($arg[1],$arg[2]);
- }
- if ($arg[0] eq 'get') {
- cmd_get($arg[1],$arg[2]);
- }
- if ($arg[0] eq 'relations') {
- cmd_relations($arg[1],$arg[2]);
- }
- if ($arg[0] eq 'remove-member-all') {
- cmd_remove_member_all($arg[1],$arg[2]);
- }
- if ($arg[0] eq 'reload') {
- cmd_reload($arg[1],$arg[2]);
- }
-}
-
-while (substr($ARGV[0],0,2) eq '--') {
- $expr=substr($ARGV[0],2);
- ($key,$value)=split('=',$expr,2);
- $attr{$key}=$value;
- shift;
-}
-$api=new Geo::OSM::APIClient(api=>'http://www.openstreetmap.org/api/0.6',%attr);
-command(@ARGV);
diff --git a/navit/script/wiki2def b/navit/script/wiki2def
deleted file mode 100755
index bbbbb5ba2..000000000
--- a/navit/script/wiki2def
+++ /dev/null
@@ -1,60 +0,0 @@
-#! /bin/bash
-rm -f item_def.h.wiki
-rm -f osmmap_def.h.wiki
-IFS="|"
-for file in item_def.h.wiki osmmap_def.h.wiki
-do
- cat <<\EOT >$file
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/* This file is generated from http://wiki.navit-project.org/index.php/Item_def.h, do not edit it, edit the wiki page instead */
-EOT
-done
-type="n"
-wget -O - "http://wiki.navit-project.org/index.php/Item_def.h?action=edit" |
-awk '/<textarea/,/<\/textarea/ { print $0 }' |
-grep "^| " |
-sed -e 's/^| *//' -e 's/ *$//' -e 's/ *|/|/g' -e 's/| */|/g' -e 's/||/|/g' |
-while read id item description osmtags dummy
-do
- if [[ "$id" == colspan=* ]]
- then
- echo "/* $item */" >>item_def.h.wiki
- continue
- fi
- if [[ -z "$id" ]]
- then
- echo "ITEM($item)" >>item_def.h.wiki
- else
- echo "ITEM2($id,$item)" >>item_def.h.wiki
- if [ "$id" == "0x80000000" ]
- then
- type="w"
- fi
- fi
- if [[ -n "$osmtags" ]]
- then
- for osmtag in $(echo "$osmtags" | sed 's/&lt;br\/&gt;/|/g')
- do
- printf '"%s\t%s\t%s\t%s\\n"\n' $type $osmtag $item >> osmmap_def.h.wiki
- done
- fi
-done
-exit 0
diff --git a/navit/search.c b/navit/search.c
deleted file mode 100644
index 139feef58..000000000
--- a/navit/search.c
+++ /dev/null
@@ -1,1050 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include <string.h>
-#include <math.h>
-#include "debug.h"
-#include "projection.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "map.h"
-#include "mapset.h"
-#include "coord.h"
-#include "transform.h"
-#include "search.h"
-#include "country.h"
-#include "linguistics.h"
-#include "geom.h"
-#include "util.h"
-#include "search_houseno_interpol.h"
-
-#ifdef HAVE_API_ANDROID
-#include "android.h"
-#endif
-#include "layout.h"
-
-static struct search_list_result *search_list_result_dup(struct search_list_result *slr);
-static void search_list_country_destroy(struct search_list_country *this_);
-static void search_list_town_destroy(struct search_list_town *this_);
-static void search_list_street_destroy(struct search_list_street *this_);
-static void search_list_house_number_destroy(struct search_list_house_number *this_);
-
-struct search_list_level {
- struct mapset *ms;
- struct search_list_common *parent;
- struct attr *attr;
- int partial;
- int selected;
- struct mapset_search *search;
- GHashTable *hash;
- GList *list,*curr,*last;
-};
-
-struct search_list {
- struct mapset *ms;
- struct item *item;
- int level;
- struct search_list_level levels[4];
- struct search_list_result result;
- struct search_list_result last_result;
- int last_result_valid;
- char *postal;
- struct house_number_interpolation inter;
- int use_address_results;
- GList *address_results,*address_results_pos;
-};
-
-static guint
-search_item_hash_hash(gconstpointer key)
-{
- const struct item *itm=key;
- gconstpointer hashkey=(gconstpointer)GINT_TO_POINTER(itm->id_hi^itm->id_lo);
- return g_direct_hash(hashkey);
-}
-
-static gboolean
-search_item_hash_equal(gconstpointer a, gconstpointer b)
-{
- const struct item *itm_a=a;
- const struct item *itm_b=b;
- if (item_is_equal_id(*itm_a, *itm_b))
- return TRUE;
- return FALSE;
-}
-
-/**
- * @brief Create new instance of search_list to run a search.
- *
- * @param ms mapset that is to be searched
- * @returns new search_list
- */
-struct search_list *
-search_list_new(struct mapset *ms)
-{
- struct search_list *ret;
-
- ret=g_new0(struct search_list, 1);
- ret->ms=ms;
-
- return ret;
-}
-
-static void search_list_search_free(struct search_list *sl, int level);
-
-/**
- * @brief Determine search list level for given attr_type.
- * @param attr_type attribute value
- * @return corresponding search list level (country=0, town=1, ...)
- */
-int
-search_list_level(enum attr_type attr_type)
-{
- switch(attr_type) {
- case attr_country_all:
- case attr_country_id:
- case attr_country_iso2:
- case attr_country_iso3:
- case attr_country_car:
- case attr_country_name:
- return 0;
- case attr_town_postal:
- return 1;
- case attr_town_name:
- case attr_district_name:
- case attr_town_or_district_name:
- return 1;
- case attr_street_name:
- return 2;
- case attr_house_number:
- return 3;
- case attr_postal:
- return -1;
- default:
- dbg(lvl_error,"unknown search '%s'\n",attr_to_name(attr_type));
- return -1;
- }
-}
-
-static char *
-search_fix_spaces(char *str)
-{
- int i;
- int len=strlen(str);
- char c,*s,*d,*ret=g_strdup(str);
-
- for (i = 0 ; i < len ; i++) {
- if (ret[i] == ',' || ret[i] == ',' || ret[i] == '/')
- ret[i]=' ';
- }
- s=ret;
- d=ret;
- len=0;
- do {
- c=*s++;
- if (c != ' ' || len != 0) {
- *d++=c;
- len++;
- }
- while (c == ' ' && *s == ' ')
- s++;
- if (c == ' ' && *s == '\0') {
- d--;
- len--;
- }
- } while (c);
- return ret;
-}
-
-struct phrase {
- char *start;
- char *end;
- int wordcount;
-};
-
-static GList *
-search_split_phrases(char *str)
-{
- char *s,*d;
- int wordcount=0;
- GList *ret=NULL;
- s=str;
- do {
- d=s;
- wordcount=0;
- do {
- d++;
- if (*d == ' ' || *d == '\0') {
- struct phrase *phrase=g_new(struct phrase, 1);
- phrase->start=s;
- phrase->end=d;
- phrase->wordcount=++wordcount;
- ret=g_list_append(ret, phrase);
- }
- } while (*d != '\0');
- do {
- s++;
- if (*s == ' ') {
- s++;
- break;
- }
- } while (*s != '\0');
- } while (*s != '\0');
- return ret;
-}
-
-static char *
-search_phrase_str(struct phrase *p)
-{
- int len=p->end-p->start;
- char *ret=g_malloc(len+1);
- strncpy(ret, p->start, len);
- ret[len]='\0';
- return ret;
-}
-
-static int
-search_phrase_used(struct phrase *p, GList *used_phrases)
-{
- while (used_phrases) {
- struct phrase *pu=used_phrases->data;
- dbg(lvl_debug,"'%s'-'%s' vs '%s'-'%s'\n",p->start,p->end,pu->start,pu->end);
- if (p->start < pu->end && p->end > pu->start)
- return 1;
- dbg(lvl_debug,"unused\n");
- used_phrases=g_list_next(used_phrases);
- }
- return 0;
-}
-
-static gint
-search_by_address_compare(gconstpointer a, gconstpointer b)
-{
- const struct search_list_result *slra=a;
- const struct search_list_result *slrb=b;
- return slrb->id-slra->id;
-}
-
-
-static GList *
-search_by_address_attr(GList *results, struct search_list *sl, GList *phrases, GList *exclude, enum attr_type attr_type, int wordcount)
-{
- GList *tmp=phrases;
- struct attr attr;
- attr.type=attr_type;
- while (tmp) {
- if (!search_phrase_used(tmp->data, exclude)) {
- struct phrase *p=tmp->data;
- int count=0,wordcount_all=wordcount+p->wordcount;
- struct search_list_result *slr;
- attr.u.str=search_phrase_str(p);
- dbg(lvl_debug,"%s phrase '%s'\n",attr_to_name(attr_type),attr.u.str);
- search_list_search(sl, &attr, 0);
- while ((slr=search_list_get_result(sl))) {
- if (attr_type != attr_country_all) {
- struct search_list_result *slrd=search_list_result_dup(slr);
- slrd->id=wordcount_all;
- results=g_list_insert_sorted(results, slrd, search_by_address_compare);
- }
- count++;
- }
- dbg(lvl_debug,"%d results wordcount %d\n",count,wordcount_all);
- if (count) {
- GList *used=g_list_prepend(g_list_copy(exclude), tmp->data);
- enum attr_type new_attr_type=attr_none;
- switch (attr_type) {
- case attr_country_all:
- new_attr_type=attr_town_or_district_name;
- break;
- case attr_town_or_district_name:
- new_attr_type=attr_street_name;
- break;
- case attr_street_name:
- new_attr_type=attr_house_number;
- break;
- default:
- break;
- }
- if (new_attr_type != attr_none)
- results=search_by_address_attr(results, sl, phrases, used, new_attr_type, wordcount_all);
- g_list_free(used);
- }
- g_free(attr.u.str);
- }
- tmp=g_list_next(tmp);
- }
- return results;
-}
-
-static void
-search_by_address(struct search_list *this_, char *addr)
-{
- char *str=search_fix_spaces(addr);
- GList *tmp,*phrases=search_split_phrases(str);
- struct search_list *sl=search_list_new(this_->ms);
- this_->address_results=search_by_address_attr(NULL, sl, phrases, NULL, attr_country_all, 0);
- this_->address_results_pos=this_->address_results;
- search_list_destroy(sl);
- tmp=phrases;
- while (tmp) {
- g_free(tmp->data);
- tmp=g_list_next(tmp);
- }
- g_list_free(phrases);
- // TODO: Looks like we should g_free(str) here. But this is
- // currently dead code, so no way to test it.
-}
-
-static void
-search_address_results_free(struct search_list *this_)
-{
- GList *tmp;
- tmp=this_->address_results;
- while (tmp) {
- struct search_list_result *slr=tmp->data;
- if (slr->country)
- search_list_country_destroy(slr->country);
- if (slr->town)
- search_list_town_destroy(slr->town);
- if (slr->street)
- search_list_street_destroy(slr->street);
- if (slr->house_number)
- search_list_house_number_destroy(slr->house_number);
- if (slr->c)
- g_free(slr->c);
- g_free(slr);
- tmp=g_list_next(tmp);
- }
- g_list_free(this_->address_results);
- this_->address_results=this_->address_results_pos=NULL;
-}
-
-/**
- * @brief Start a search.
- *
- * @param this search_list to use for the search
- * @param search_attr attributes to use for the search
- * @param partial do partial search? (1=yes,0=no)
- */
-void
-search_list_search(struct search_list *this_, struct attr *search_attr, int partial)
-{
- struct search_list_level *le;
- int level;
- dbg(lvl_info,"Starting search for '=%s' of type %s\n", search_attr->u.str, attr_to_name(search_attr->type));
- search_address_results_free(this_);
- if (search_attr->type == attr_address) {
- search_by_address(this_, search_attr->u.str);
- this_->use_address_results=1;
- return;
- }
- this_->use_address_results=0;
- level=search_list_level(search_attr->type);
- this_->item=NULL;
- house_number_interpolation_clear_all(&this_->inter);
- if (level != -1) {
- this_->result.id=0;
- this_->level=level;
- le=&this_->levels[level];
- search_list_search_free(this_, level);
- le->attr=attr_dup(search_attr);
- le->partial=partial;
- if (level > 0) {
- le=&this_->levels[level-1];
- le->curr=le->list;
- }
- } else if (search_attr->type == attr_postal) {
- g_free(this_->postal);
- this_->postal=g_strdup(search_attr->u.str);
- }
-}
-
-struct search_list_common *
-search_list_select(struct search_list *this_, enum attr_type attr_type, int id, int mode)
-{
- int level;
- int num;
- struct search_list_level *le;
- struct search_list_common *slc;
- GList *curr;
-
- level = search_list_level(attr_type);
- if (level < 0)
- return NULL;
- le=&this_->levels[level];
- curr=le->list;
- if (mode > 0 || !id)
- le->selected=mode;
- //dbg(lvl_debug,"enter level=%d %d %d %p\n", level, id, mode, curr);
- num = 0;
- while (curr) {
- num++;
- if (! id || num == id) {
- slc=curr->data;
- slc->selected=mode;
- if (id) {
- le->last=curr;
- //dbg(lvl_debug,"found\n");
- return slc;
- }
- }
- curr=g_list_next(curr);
- }
- //dbg(lvl_debug,"not found\n");
- return NULL;
-}
-
-static void
-search_list_common_addattr(struct attr* attr,struct search_list_common *common)
-{
-
- common->attrs=attr_generic_prepend_attr(common->attrs,attr);
- switch(attr->type) {
- case attr_town_name:
- common->town_name=common->attrs[0]->u.str;
- break;
- case attr_county_name:
- common->county_name=common->attrs[0]->u.str;
- break;
- case attr_district_name:
- common->district_name=common->attrs[0]->u.str;
- break;
- case attr_postal:
- common->postal=common->attrs[0]->u.str;
- break;
- case attr_town_postal:
- if(!common->postal)
- common->postal=common->attrs[0]->u.str;
- break;
- case attr_postal_mask:
- common->postal_mask=common->attrs[0]->u.str;
- break;
- default:
- break;
- }
-}
-
-static void
-search_list_common_new(struct item *item, struct search_list_common *common)
-{
- struct attr attr;
- int i;
- enum attr_type common_attrs[]={
- attr_state_name,
- attr_county_name,
- attr_municipality_name,
- attr_town_name,
- attr_district_name,
- attr_postal,
- attr_town_postal,
- attr_postal_mask,
- attr_none
- };
-
- common->town_name=NULL;
- common->district_name=NULL;
- common->county_name=NULL;
- common->postal=NULL;
- common->postal_mask=NULL;
- common->attrs=NULL;
-
- for(i=0;common_attrs[i];i++) {
- if (item_attr_get(item, common_attrs[i], &attr)) {
- struct attr at;
- at.type=attr.type;
- at.u.str=map_convert_string(item->map, attr.u.str);
- search_list_common_addattr(&at,common);
- map_convert_free(at.u.str);
- }
- }
-}
-
-static void
-search_list_common_dup(struct search_list_common *src, struct search_list_common *dst)
-{
- int i;
-
- if(dst->attrs) {
- for(i=0;dst->attrs[i];i++)
- search_list_common_addattr(src->attrs[i],dst);
- }
-
- if (src->c) {
- dst->c=g_new(struct pcoord, 1);
- *dst->c=*src->c;
- } else
- dst->c=NULL;
-}
-
-static void
-search_list_common_destroy(struct search_list_common *common)
-{
- g_free(common->c);
- attr_list_free(common->attrs);
-
- common->town_name=NULL;
- common->district_name=NULL;
- common->county_name=NULL;
- common->postal=NULL;
- common->postal_mask=NULL;
- common->c=NULL;
- common->attrs=NULL;
-}
-
-static struct search_list_country *
-search_list_country_new(struct item *item)
-{
- struct search_list_country *ret=g_new0(struct search_list_country, 1);
- struct attr attr;
-
- ret->common.item=ret->common.unique=*item;
- if (item_attr_get(item, attr_country_car, &attr))
- ret->car=g_strdup(attr.u.str);
- if (item_attr_get(item, attr_country_iso2, &attr)) {
-#ifdef HAVE_API_ANDROID
- ret->iso2=g_malloc(strlen(attr.u.str)+1);
- strtolower(ret->iso2, attr.u.str);
-#else
- ret->iso2=g_strdup(attr.u.str);
-#endif
- ret->flag=g_strdup_printf("country_%s", ret->iso2);
- }
- if (item_attr_get(item, attr_country_iso3, &attr))
- ret->iso3=g_strdup(attr.u.str);
- if (item_attr_get(item, attr_country_name, &attr))
- ret->name=g_strdup(attr.u.str);
- return ret;
-}
-
-static struct search_list_country *
-search_list_country_dup(struct search_list_country *this_)
-{
- struct search_list_country *ret=g_new(struct search_list_country, 1);
- ret->car=g_strdup(this_->car);
- ret->iso2=g_strdup(this_->iso2);
- ret->iso3=g_strdup(this_->iso3);
- ret->flag=g_strdup(this_->flag);
- ret->name=g_strdup(this_->name);
- return ret;
-}
-
-static void
-search_list_country_destroy(struct search_list_country *this_)
-{
- g_free(this_->car);
- g_free(this_->iso2);
- g_free(this_->iso3);
- g_free(this_->flag);
- g_free(this_->name);
- g_free(this_);
-}
-
-static struct search_list_town *
-search_list_town_new(struct item *item)
-{
- struct search_list_town *ret=g_new0(struct search_list_town, 1);
- struct attr attr;
- struct coord c;
-
- ret->itemt=*item;
- ret->common.item=ret->common.unique=*item;
- if (item_attr_get(item, attr_town_streets_item, &attr)) {
- dbg(lvl_debug,"town_assoc 0x%x 0x%x\n", attr.u.item->id_hi, attr.u.item->id_lo);
- ret->common.unique=*attr.u.item;
- }
- search_list_common_new(item, &ret->common);
- if (item_attr_get(item, attr_county_name, &attr))
- ret->county=map_convert_string(item->map,attr.u.str);
- else
- ret->county=NULL;
- if (item_coord_get(item, &c, 1)) {
- ret->common.c=g_new(struct pcoord, 1);
- ret->common.c->x=c.x;
- ret->common.c->y=c.y;
- ret->common.c->pro = map_projection(item->map);
- }
- return ret;
-}
-
-static struct search_list_town *
-search_list_town_dup(struct search_list_town *this_)
-{
- struct search_list_town *ret=g_new0(struct search_list_town, 1);
- ret->county=map_convert_dup(this_->county);
- search_list_common_dup(&this_->common, &ret->common);
- return ret;
-}
-
-static void
-search_list_town_destroy(struct search_list_town *this_)
-{
- map_convert_free(this_->county);
- search_list_common_destroy(&this_->common);
- g_free(this_);
-}
-
-
-static struct search_list_street *
-search_list_street_new(struct item *item)
-{
- struct search_list_street *ret=g_new0(struct search_list_street, 1);
- struct attr attr;
- struct coord p[1024];
- struct coord c;
- int count;
-
- ret->common.item=ret->common.unique=*item;
- if (item_attr_get(item, attr_street_name, &attr))
- ret->name=map_convert_string(item->map, attr.u.str);
- else
- ret->name=NULL;
- search_list_common_new(item, &ret->common);
- count=item_coord_get(item, p, sizeof(p)/sizeof(*p));
- if (count) {
- geom_line_middle(p,count,&c);
- ret->common.c=g_new(struct pcoord, 1);
- ret->common.c->x=c.x;
- ret->common.c->y=c.y;
- ret->common.c->pro = map_projection(item->map);
- }
- return ret;
-}
-
-static struct search_list_street *
-search_list_street_dup(struct search_list_street *this_)
-{
- struct search_list_street *ret=g_new0(struct search_list_street, 1);
- ret->name=map_convert_dup(this_->name);
- search_list_common_dup(&this_->common, &ret->common);
- return ret;
-}
-
-static void
-search_list_street_destroy(struct search_list_street *this_)
-{
- map_convert_free(this_->name);
- search_list_common_destroy(&this_->common);
- g_free(this_);
-}
-
-static struct search_list_house_number *
-search_list_house_number_new(struct item *item, struct house_number_interpolation *inter, char *inter_match, int inter_partial)
-{
- struct search_list_house_number *ret=g_new0(struct search_list_house_number, 1);
- struct attr attr;
- char *house_number=NULL;
-
- ret->common.item=ret->common.unique=*item;
- if (item_attr_get(item, attr_house_number, &attr)) {
- house_number=attr.u.str;
- } else {
- ret->house_number_interpolation=1;
- memset(&ret->common.unique, 0, sizeof(ret->common.unique));
- house_number=search_next_interpolated_house_number(item, inter, inter_match, inter_partial);
- }
- if (!house_number) {
- g_free(ret);
- return NULL;
- }
- ret->house_number=map_convert_string(item->map, house_number);
- search_list_common_new(item, &ret->common);
- ret->common.c=search_house_number_coordinate(item, ret->house_number_interpolation?inter:NULL);
- return ret;
-}
-
-static struct search_list_house_number *
-search_list_house_number_dup(struct search_list_house_number *this_)
-{
- struct search_list_house_number *ret=g_new0(struct search_list_house_number, 1);
- ret->house_number=map_convert_dup(this_->house_number);
- search_list_common_dup(&this_->common, &ret->common);
- return ret;
-}
-
-static void
-search_list_house_number_destroy(struct search_list_house_number *this_)
-{
- map_convert_free(this_->house_number);
- search_list_common_destroy(&this_->common);
- g_free(this_);
-}
-
-static void
-search_list_result_destroy(int level, void *p)
-{
- switch (level) {
- case 0:
- search_list_country_destroy(p);
- break;
- case 1:
- search_list_town_destroy(p);
- break;
- case 2:
- search_list_street_destroy(p);
- break;
- case 3:
- search_list_house_number_destroy(p);
- break;
- }
-}
-
-static struct search_list_result *
-search_list_result_dup(struct search_list_result *slr)
-{
- struct search_list_result *ret=g_new0(struct search_list_result, 1);
- ret->id=slr->id;
- if (slr->c) {
- ret->c=g_new(struct pcoord, 1);
- *ret->c=*slr->c;
- }
- if (slr->country)
- ret->country=search_list_country_dup(slr->country);
- if (slr->town)
- ret->town=search_list_town_dup(slr->town);
- if (slr->street)
- ret->street=search_list_street_dup(slr->street);
- if (slr->house_number)
- ret->house_number=search_list_house_number_dup(slr->house_number);
- return ret;
-}
-
-static void
-search_list_search_free(struct search_list *sl, int level)
-{
- struct search_list_level *le=&sl->levels[level];
- GList *next,*curr;
- if (le->search)
- {
- mapset_search_destroy(le->search);
- le->search=NULL;
- }
-#if 0 /* FIXME */
- if (le->hash) {
- g_hash_table_destroy(le->hash);
- le->hash=NULL;
- }
-#endif
- curr=le->list;
- while (curr)
- {
- search_list_result_destroy(level, curr->data);
- next=g_list_next(curr);
- curr=next;
- }
- attr_free(le->attr);
- g_list_free(le->list);
- le->list=NULL;
- le->curr=NULL;
- le->last=NULL;
-}
-
-char *
-search_postal_merge(char *mask, char *new)
-{
- int i;
- char *ret=NULL;
- dbg(lvl_debug,"enter %s %s\n", mask, new);
- if (!new)
- return NULL;
- if (!mask)
- return g_strdup(new);
- i=0;
- while (mask[i] && new[i]) {
- if (mask[i] != '.' && mask[i] != new[i])
- break;
- i++;
-
- }
- if (mask[i]) {
- ret=g_strdup(mask);
- while (mask[i])
- ret[i++]='.';
- }
- dbg(lvl_debug,"merged %s with %s as %s\n", mask, new, ret);
- return ret;
-}
-
-char *
-search_postal_merge_replace(char *mask, char *new)
-{
- char *ret=search_postal_merge(mask, new);
- if (!ret)
- return mask;
- g_free(mask);
- return ret;
-}
-
-
-static int
-postal_match(char *postal, char *mask)
-{
- for (;;) {
- if ((*postal != *mask) && (*mask != '.'))
- return 0;
- if (!*postal) {
- if (!*mask)
- return 1;
- else
- return 0;
- }
- postal++;
- mask++;
- }
-}
-
-static int
-search_add_result(struct search_list_level *le, struct search_list_common *slc)
-{
- struct search_list_common *slo;
- char *merged;
- int unique=0;
- if (slc->unique.type || slc->unique.id_hi || slc->unique.id_lo)
- unique=1;
- if (unique)
- slo=g_hash_table_lookup(le->hash, &slc->unique);
- else
- slo=NULL;
- if (!slo) {
- if (unique)
- g_hash_table_insert(le->hash, &slc->unique, slc);
- if (slc->postal && !slc->postal_mask) {
- slc->postal_mask=g_strdup(slc->postal);
- }
- le->list=g_list_append(le->list, slc);
- return 1;
- }
- merged=search_postal_merge(slo->postal_mask, slc->postal);
- if (merged) {
- g_free(slo->postal_mask);
- slo->postal_mask=merged;
- }
- return 0;
-}
-
-/**
- * @brief Get (next) result from a search.
- *
- * @param this_ search_list representing the search
- * @return next result
- */
-struct search_list_result *
-search_list_get_result(struct search_list *this_)
-{
- struct search_list_level *le,*leu;
- int level=this_->level;
- struct attr attr2;
- int has_street_name=0;
-
- if (this_->use_address_results) {
- struct search_list_result *ret=NULL;
- if (this_->address_results_pos) {
- ret=this_->address_results_pos->data;
- this_->address_results_pos=g_list_next(this_->address_results_pos);
- }
- return ret;
- }
-
- //dbg(lvl_debug,"enter\n");
- le=&this_->levels[level];
- //dbg(lvl_debug,"le=%p\n", le);
- for (;;)
- {
- //dbg(lvl_debug,"le->search=%p\n", le->search);
- if (! le->search)
- {
- //dbg(lvl_debug,"partial=%d level=%d\n", le->partial, level);
- if (! level)
- le->parent=NULL;
- else
- {
- leu=&this_->levels[level-1];
- //dbg(lvl_debug,"leu->curr=%p\n", leu->curr);
- for (;;)
- {
- //dbg(lvl_debug,"*********########");
-
- struct search_list_common *slc;
- if (! leu->curr)
- {
- return NULL;
- }
- le->parent=leu->curr->data;
- leu->last=leu->curr;
- leu->curr=g_list_next(leu->curr);
- slc=(struct search_list_common *)(le->parent);
- if (!slc)
- break;
- if (slc->selected == leu->selected)
- break;
- }
- }
- if (le->parent)
- {
- //dbg(lvl_debug,"mapset_search_new with item(%d,%d)\n", le->parent->item.id_hi, le->parent->item.id_lo);
- }
- //dbg(lvl_debug,"############## attr=%s\n", attr_to_name(le->attr->type));
- le->search=mapset_search_new(this_->ms, &le->parent->item, le->attr, le->partial);
- le->hash=g_hash_table_new(search_item_hash_hash, search_item_hash_equal);
- }
- //dbg(lvl_debug,"le->search=%p\n", le->search);
- if (!this_->item)
- {
- //dbg(lvl_debug,"sssss 1");
- this_->item=mapset_search_get_item(le->search);
- //dbg(lvl_debug,"sssss 1 %p\n",this_->item);
- }
- if (this_->item)
- {
- void *p=NULL;
- //dbg(lvl_debug,"id_hi=%d id_lo=%d\n", this_->item->id_hi, this_->item->id_lo);
- if (this_->postal)
- {
- struct attr postal;
- if (item_attr_get(this_->item, attr_postal_mask, &postal)) {
- if (!postal_match(this_->postal, postal.u.str))
- continue;
- } else if (item_attr_get(this_->item, attr_postal, &postal)) {
- if (strcmp(this_->postal, postal.u.str))
- continue;
- }
- }
- this_->result.country=NULL;
- this_->result.town=NULL;
- this_->result.street=NULL;
- this_->result.c=NULL;
- //dbg(lvl_debug,"case x LEVEL start %d\n",level);
- switch (level)
- {
- case 0:
- //dbg(lvl_debug,"case 0 COUNTRY");
- p=search_list_country_new(this_->item);
- this_->result.country=p;
- this_->result.country->common.parent=NULL;
- this_->result.town=NULL;
- this_->result.street=NULL;
- this_->result.house_number=NULL;
- this_->item=NULL;
- break;
- case 1:
- //dbg(lvl_debug,"case 1 TOWN");
- p=search_list_town_new(this_->item);
- this_->result.town=p;
- this_->result.town->common.parent=this_->levels[0].last->data;
- this_->result.country=this_->result.town->common.parent;
- this_->result.c=this_->result.town->common.c;
- this_->result.street=NULL;
- this_->result.house_number=NULL;
- this_->item=NULL;
- break;
- case 2:
- //dbg(lvl_debug,"case 2 STREET");
- p=search_list_street_new(this_->item);
- this_->result.street=p;
- this_->result.street->common.parent=this_->levels[1].last->data;
- this_->result.town=this_->result.street->common.parent;
- this_->result.country=this_->result.town->common.parent;
- this_->result.c=this_->result.street->common.c;
- this_->result.house_number=NULL;
- this_->item=NULL;
- break;
- case 3:
- dbg(lvl_debug,"case 3 HOUSENUMBER\n");
- has_street_name=0;
-
- // if this housenumber has a streetname tag, set the name now
- if (item_attr_get(this_->item, attr_street_name, &attr2))
- {
- dbg(lvl_debug,"streetname: %s\n",attr2.u.str);
- has_street_name=1;
- }
-
- p=search_list_house_number_new(this_->item, &this_->inter, le->attr->u.str, le->partial);
- if (!p)
- {
- house_number_interpolation_clear_all(&this_->inter);
- this_->item=NULL;
- continue;
- }
-
- this_->result.house_number=p;
- if (!this_->result.house_number->house_number_interpolation)
- {
- this_->item=NULL;
- } else {
- dbg(lvl_debug,"interpolation!\n");
- }
-
- if(le->parent && has_street_name) {
- struct search_list_street *street=this_->levels[level-1].last->data;
- if(navit_utf8_strcasecmp(street->name, attr2.u.str)) {
- search_list_house_number_destroy(p);
- //this_->item=NULL;
- continue;
- }
- }
-
-
- this_->result.house_number->common.parent=this_->levels[2].last->data;
- this_->result.street=this_->result.house_number->common.parent;
- this_->result.town=this_->result.street->common.parent;
- this_->result.country=this_->result.town->common.parent;
- this_->result.c=this_->result.house_number->common.c;
-
-#if 0
- if(!has_street_name) {
- static struct search_list_street null_street;
- this_->result.street=&null_street;
- }
-#endif
- }
- if (p)
- {
- if (search_add_result(le, p))
- {
- this_->result.id++;
- return &this_->result;
- }
- else
- {
- search_list_result_destroy(level, p);
- }
- }
- } else {
- mapset_search_destroy(le->search);
- le->search=NULL;
- g_hash_table_destroy(le->hash);
- if (! level)
- break;
- }
- }
- return NULL;
-}
-
-void
-search_list_destroy(struct search_list *this_)
-{
- g_free(this_->postal);
- g_free(this_);
-}
-
-void
-search_init(void)
-{
-}
diff --git a/navit/search.h b/navit/search.h
deleted file mode 100644
index 50756606f..000000000
--- a/navit/search.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_SEARCH_H
-#define NAVIT_SEARCH_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-struct search_list_common {
- void *parent;
- struct item unique,item;
- int selected;
- struct pcoord *c;
- char *town_name;
- char *district_name;
- char *postal;
- char *postal_mask;
- char *county_name;
- struct attr **attrs;
-};
-
-struct search_list_country {
- struct search_list_common common;
- char *car;
- char *iso2;
- char *iso3;
- char *name;
- char *flag;
-};
-
-struct search_list_town {
- struct search_list_common common;
- struct item itemt;
- char *county;
-};
-
-struct search_list_street {
- struct search_list_common common;
- char *name;
-};
-
-struct search_list_house_number {
- struct search_list_common common;
- char *house_number;
- int house_number_interpolation;
-};
-
-struct search_list_result {
- int id;
- struct pcoord *c;
- struct search_list_country *country;
- struct search_list_town *town;
- struct search_list_street *street;
- struct search_list_house_number *house_number;
-};
-
-/* prototypes */
-struct attr;
-struct mapset;
-struct search_list;
-struct search_list_result;
-struct jni_object;
-struct search_list *search_list_new(struct mapset *ms);
-int search_list_level(enum attr_type attr_type);
-void search_list_search(struct search_list *this_, struct attr *search_attr, int partial);
-char *search_postal_merge(char *mask, char *new_);
-char *search_postal_merge_replace(char *mask, char *new_);
-struct search_list_common *search_list_select(struct search_list *this_, enum attr_type attr_type, int id, int mode);
-char *search_list_get_unique(struct search_list *this_, char *unique);
-struct search_list_result *search_list_get_result(struct search_list *this_);
-void search_list_destroy(struct search_list *this_);
-void search_init(void);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/navit/search_houseno_interpol.c b/navit/search_houseno_interpol.c
deleted file mode 100644
index 604fcf93c..000000000
--- a/navit/search_houseno_interpol.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include <string.h>
-#include <math.h>
-#include "debug.h"
-#include "projection.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "map.h"
-#include "mapset.h"
-#include "coord.h"
-#include "transform.h"
-#include "search.h"
-#include "country.h"
-#include "linguistics.h"
-#include "geom.h"
-#include "util.h"
-#include "search_houseno_interpol.h"
-
-struct hn_interpol_attr {
- enum attr_type house_number_interpol_attr;
- int interpol_increment;
- enum include_end_nodes include_end_nodes;
-};
-
-#define house_number_interpol_attr_END -1
-/**
- * Attributes that indicate a house number interpolation,
- * along with interpolation information.
- */
-struct hn_interpol_attr house_number_interpol_attrs[] = {
- { attr_house_number_left, 1, end_nodes_yes },
- { attr_house_number_left_odd, 2, end_nodes_yes },
- { attr_house_number_left_even, 2, end_nodes_yes },
- { attr_house_number_right, 1, end_nodes_yes },
- { attr_house_number_right_odd, 2, end_nodes_yes },
- { attr_house_number_right_even, 2, end_nodes_yes },
- { attr_house_number_interpolation_no_ends_incrmt_1, 1, end_nodes_no },
- { attr_house_number_interpolation_no_ends_incrmt_2, 2, end_nodes_no },
- { house_number_interpol_attr_END, -1, -1 },
-};
-
-void
-house_number_interpolation_clear_current(struct house_number_interpolation *inter)
-{
- g_free(inter->first);
- g_free(inter->last);
- g_free(inter->curr);
- inter->first=inter->last=inter->curr=NULL;
- inter->increment=inter->include_end_nodes=-1;
-}
-
-void
-house_number_interpolation_clear_all(struct house_number_interpolation *inter)
-{
- inter->curr_interpol_attr_idx=0;
- house_number_interpolation_clear_current(inter);
-}
-
-static char *
-search_next_house_number_curr_interpol_with_ends(struct house_number_interpolation *inter)
-{
- dbg(lvl_debug,"interpolate %s-%s %s\n",inter->first,inter->last,inter->curr);
- if (!inter->first || !inter->last)
- return NULL;
- if (!inter->curr)
- inter->curr=g_strdup(inter->first);
- else {
- if (strcmp(inter->curr, inter->last)) {
- int next=atoi(inter->curr)+(inter->increment);
- g_free(inter->curr);
- if (next == atoi(inter->last))
- inter->curr=g_strdup(inter->last);
- else
- inter->curr=g_strdup_printf("%d",next);
- } else {
- g_free(inter->curr);
- inter->curr=NULL;
- }
- }
- dbg(lvl_debug,"interpolate result %s\n",inter->curr);
- return inter->curr;
-}
-
-static int
-house_number_is_end_number(char* house_number, struct house_number_interpolation *inter) {
- return ( (!strcmp(house_number, inter->first))
- || (!strcmp(house_number, inter->last)) );
-}
-
-static char *
-search_next_house_number_curr_interpol(struct house_number_interpolation *inter)
-{
- char* hn=NULL;
- switch (inter->include_end_nodes) {
- case end_nodes_yes:
- hn=search_next_house_number_curr_interpol_with_ends(inter);
- break;
- case end_nodes_no:
- do {
- hn=search_next_house_number_curr_interpol_with_ends(inter);
- } while (hn!=NULL && house_number_is_end_number(hn, inter));
- break;
- }
- return hn;
-}
-
-static void
-search_house_number_interpolation_split(char *str, struct house_number_interpolation *inter)
-{
- char *pos=strchr(str,'-');
- char *first,*last;
- int len;
- if (!pos) {
- inter->first=g_strdup(str);
- inter->last=g_strdup(str);
- inter->rev=0;
- return;
- }
- len=pos-str;
- first=g_malloc(len+1);
- strncpy(first, str, len);
- first[len]='\0';
- last=g_strdup(pos+1);
- dbg(lvl_debug,"%s = %s - %s\n",str, first, last);
- if (atoi(first) > atoi(last)) {
- inter->first=last;
- inter->last=first;
- inter->rev=1;
- } else {
- inter->first=first;
- inter->last=last;
- inter->rev=0;
- }
-}
-
-struct pcoord *
-search_house_number_coordinate(struct item *item, struct house_number_interpolation *inter)
-{
- struct pcoord *ret=g_new(struct pcoord, 1);
- ret->pro = map_projection(item->map);
- dbg(lvl_debug,"%s\n",item_to_name(item->type));
- if (!inter) {
- struct coord c;
- if (item_coord_get(item, &c, 1)) {
- ret->x=c.x;
- ret->y=c.y;
- } else {
- g_free(ret);
- ret=NULL;
- }
- } else {
- int count,max=1024;
- int hn_pos,hn_length;
- int inter_increment=inter->increment;
- struct coord *c=g_alloca(sizeof(struct coord)*max);
- item_coord_rewind(item);
- count=item_coord_get(item, c, max);
- hn_length=atoi(inter->last)-atoi(inter->first);
- if (inter->rev)
- hn_pos=atoi(inter->last)-atoi(inter->curr);
- else
- hn_pos=atoi(inter->curr)-atoi(inter->first);
- if (count) {
- int i,distance_sum=0,hn_distance;
- int *distances=g_alloca(sizeof(int)*(count-1));
- dbg(lvl_debug,"count=%d hn_length=%d hn_pos=%d (%s of %s-%s)\n",count,hn_length,hn_pos,inter->curr,inter->first,inter->last);
- if (!hn_length) {
- hn_length=2;
- hn_pos=1;
- }
- if (count == max)
- dbg(lvl_error,"coordinate overflow\n");
- for (i = 0 ; i < count-1 ; i++) {
- distances[i]=navit_sqrt(transform_distance_sq(&c[i],&c[i+1]));
- distance_sum+=distances[i];
- dbg(lvl_debug,"distance[%d]=%d\n",i,distances[i]);
- }
- dbg(lvl_debug,"sum=%d\n",distance_sum);
-#if 0
- hn_distance=distance_sum*hn_pos/hn_length;
-#else
- hn_distance=(distance_sum*hn_pos+distance_sum*inter_increment/2)/(hn_length+inter_increment);
-#endif
- dbg(lvl_debug,"hn_distance=%d\n",hn_distance);
- i=0;
- while (i < count-1 && hn_distance > distances[i])
- hn_distance-=distances[i++];
- dbg(lvl_debug,"remaining distance=%d from %d\n",hn_distance,distances[i]);
- ret->x=(c[i+1].x-c[i].x)*hn_distance/distances[i]+c[i].x;
- ret->y=(c[i+1].y-c[i].y)*hn_distance/distances[i]+c[i].y;
- }
- }
- return ret;
-}
-
-static int
-search_match(char *str, char *search, int partial)
-{
- if (!partial)
- return (!g_ascii_strcasecmp(str, search));
- else
- return (!g_ascii_strncasecmp(str, search, strlen(search)));
-}
-
-char *
-search_next_interpolated_house_number(struct item *item, struct house_number_interpolation *inter, char *inter_match, int inter_partial)
-{
- while (1) {
- char *hn;
- struct attr attr;
- struct hn_interpol_attr curr_interpol_attr;
- while((hn=search_next_house_number_curr_interpol(inter))){
- if (search_match(hn, inter_match, inter_partial)) {
- return map_convert_string(item->map, hn);
- }
- }
-
- house_number_interpolation_clear_current(inter);
- curr_interpol_attr=house_number_interpol_attrs[inter->curr_interpol_attr_idx];
- if (curr_interpol_attr.house_number_interpol_attr==house_number_interpol_attr_END) {
- return NULL;
- }
- if (item_attr_get(item, curr_interpol_attr.house_number_interpol_attr, &attr)) {
- search_house_number_interpolation_split(attr.u.str, inter);
- inter->increment=curr_interpol_attr.interpol_increment;
- inter->include_end_nodes=curr_interpol_attr.include_end_nodes;
- }
- inter->curr_interpol_attr_idx++;
- }
-}
-
diff --git a/navit/search_houseno_interpol.h b/navit/search_houseno_interpol.h
deleted file mode 100644
index 460d236c7..000000000
--- a/navit/search_houseno_interpol.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * 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.
- */
-
-enum include_end_nodes {
- end_nodes_yes,
- end_nodes_no,
-};
-
-/** Data for a house number interpolation. */
-struct house_number_interpolation {
- /** Index of interpolation attribute currently used. */
- int curr_interpol_attr_idx;
- /** Interpolation increment */
- int increment;
- /** Reverse interpolation? (0/1) */
- int rev;
- /** First number. */
- char *first;
- /** Last number. */
- char *last;
- /** Include first and last node in interpolation results? */
- enum include_end_nodes include_end_nodes;
- /** Current number in running interpolation. */
- char *curr;
-};
-
-void
-house_number_interpolation_clear_current(struct house_number_interpolation *inter);
-
-void
-house_number_interpolation_clear_all(struct house_number_interpolation *inter);
-
-char *
-search_next_interpolated_house_number(struct item *item, struct house_number_interpolation
- *inter, char *inter_match, int inter_partial);
-
-struct pcoord *
-search_house_number_coordinate(struct item *item, struct house_number_interpolation *inter);
diff --git a/navit/speech.c b/navit/speech.c
deleted file mode 100644
index cabd998dc..000000000
--- a/navit/speech.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * 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 <string.h>
-#include "debug.h"
-#include "item.h"
-#include "speech.h"
-#include "plugin.h"
-#include "xmlconfig.h"
-
-struct speech {
- NAVIT_OBJECT;
- struct speech_priv *priv;
- struct speech_methods meth;
-};
-
-
-struct speech *
-speech_new(struct attr *parent, struct attr **attrs)
-{
- struct speech *this_;
- struct speech_priv *(*speech_new)(struct speech_methods *meth, struct attr **attrs, struct attr *parent);
- struct attr *attr;
-
- attr=attr_search(attrs, NULL, attr_type);
- if (! attr) {
- dbg(lvl_error,"type missing\n");
- return NULL;
- }
- dbg(lvl_debug,"type='%s'\n", attr->u.str);
- speech_new=plugin_get_category_speech(attr->u.str);
- dbg(lvl_debug,"new=%p\n", speech_new);
- if (! speech_new) {
- dbg(lvl_error,"wrong type '%s'\n", attr->u.str);
- return NULL;
- }
- this_=(struct speech *)navit_object_new(attrs, &speech_func, sizeof(struct speech));
- this_->priv=speech_new(&this_->meth, this_->attrs, parent);
- dbg(lvl_debug, "say=%p\n", this_->meth.say);
- dbg(lvl_debug,"priv=%p\n", this_->priv);
- if (! this_->priv) {
- speech_destroy(this_);
- return NULL;
- }
- dbg(lvl_debug,"return %p\n", this_);
-
- return this_;
-}
-
-void
-speech_destroy(struct speech *this_)
-{
- if (this_->priv)
- this_->meth.destroy(this_->priv);
- navit_object_destroy((struct navit_object *)this_);
-}
-
-int
-speech_say(struct speech *this_, const char *text)
-{
- dbg(lvl_debug, "this_=%p text='%s' calling %p\n", this_, text, this_->meth.say);
- return (this_->meth.say)(this_->priv, text);
-}
-
-struct attr active=ATTR_INT(active, 1);
-struct attr *speech_default_attrs[]={
- &active,
- NULL,
-};
-
-/**
- * @brief Gets an attribute from a speech plugin
- *
- * @param this_ The speech plugin the attribute should be read from
- * @param type The type of the attribute to be read
- * @param attr Pointer to an attrib-structure where the attribute should be written to
- * @param iter (NOT IMPLEMENTED) Used to iterate through all attributes of a type. Set this to NULL to get the first attribute, set this to an attr_iter to get the next attribute
- * @return True if the attribute type was found, false if not
- */
-
-int
-speech_get_attr(struct speech *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- return attr_generic_get_attr(this_->attrs, speech_default_attrs, type, attr, iter);
-}
-
-/**
- * @brief Tries to estimate how long it will take to speak a certain string
- *
- * This function tries to estimate how long it will take to speak a certain string
- * passed in str. It relies on the "characters per second"-value passed from the
- * configuration.
- *
- * @param this_ The speech whose speed should be used
- * @param str The string that should be estimated
- * @return Time in tenth of seconds or -1 on error
- */
-int
-speech_estimate_duration(struct speech *this_, char *str)
-{
- int count;
- struct attr cps_attr;
-
- if (!speech_get_attr(this_,attr_cps,&cps_attr,NULL)) {
- return -1;
- }
-
- count = strlen(str);
-
- return (count * 10) / cps_attr.u.num;
-}
-
-/**
- * @brief Sets an attribute from an speech plugin
- *
- * This sets an attribute of a speech plugin, overwriting an attribute of the same type if it
- * already exists. This function also calls all the callbacks that are registred
- * to be called when attributes change.
- *
- * @param this_ The speech plugin to set the attribute of
- * @param attr The attribute to set
- * @return True if the attr could be set, false otherwise
- */
-
-int
-speech_set_attr(struct speech *this_, struct attr *attr)
-{
- this_->attrs=attr_generic_set_attr(this_->attrs, attr);
- //callback_list_call_attr_2(this_->attr_cbl, attr->type, this_, attr);
- return 1;
-}
-
-struct object_func speech_func = {
- attr_speech,
- (object_func_new)speech_new,
- (object_func_get_attr)speech_get_attr,
- (object_func_iter_new)navit_object_attr_iter_new,
- (object_func_iter_destroy)navit_object_attr_iter_destroy,
- (object_func_set_attr)speech_set_attr,
- (object_func_add_attr)navit_object_add_attr,
- (object_func_remove_attr)navit_object_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)speech_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
-
diff --git a/navit/speech.h b/navit/speech.h
deleted file mode 100644
index 8e4d3d91c..000000000
--- a/navit/speech.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_SPEECH_H
-#define NAVIT_SPEECH_H
-
-struct speech_priv;
-struct attr_iter;
-
-struct speech_methods {
- void (*destroy)(struct speech_priv *this_);
- int (*say)(struct speech_priv *this_, const char *text);
-};
-
-/* prototypes */
-struct speech * speech_new(struct attr *parent, struct attr **attrs);
-int speech_say(struct speech *this_, const char *text);
-int speech_sayf(struct speech *this_, const char *format, ...);
-void speech_destroy(struct speech *this_);
-int speech_get_attr(struct speech *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int speech_set_attr(struct speech *this_, struct attr *attr);
-int speech_estimate_duration(struct speech *this_, char *str);
-/* end of prototypes */
-
-#endif
-
diff --git a/navit/speech/android/CMakeLists.txt b/navit/speech/android/CMakeLists.txt
deleted file mode 100644
index 73c426a3e..000000000
--- a/navit/speech/android/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(speech_android speech_android.c)
diff --git a/navit/speech/android/speech_android.c b/navit/speech/android/speech_android.c
deleted file mode 100644
index 2b3f2612c..000000000
--- a/navit/speech/android/speech_android.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include "config.h"
-#include "item.h"
-#include "debug.h"
-#include "plugin.h"
-#include "android.h"
-#include "speech.h"
-
-struct speech_priv {
- jclass NavitSpeechClass;
- jobject NavitSpeech;
- jmethodID NavitSpeech_say;
- int flags;
-};
-
-static int
-speech_android_say(struct speech_priv *this, const char *text)
-{
- char *str=g_strdup(text);
- jstring string;
- int i;
-
- if (this->flags & 2) {
- for (i = 0 ; i < strlen(str) ; i++) {
- if (str[i] == 0xc3 && str[i+1] == 0x84) {
- str[i]='A';
- str[i+1]='e';
- }
- if (str[i] == 0xc3 && str[i+1] == 0x96) {
- str[i]='O';
- str[i+1]='e';
- }
- if (str[i] == 0xc3 && str[i+1] == 0x9c) {
- str[i]='U';
- str[i+1]='e';
- }
- if (str[i] == 0xc3 && str[i+1] == 0xa4) {
- str[i]='a';
- str[i+1]='e';
- }
- if (str[i] == 0xc3 && str[i+1] == 0xb6) {
- str[i]='o';
- str[i+1]='e';
- }
- if (str[i] == 0xc3 && str[i+1] == 0xbc) {
- str[i]='u';
- str[i+1]='e';
- }
- if (str[i] == 0xc3 && str[i+1] == 0x9f) {
- str[i]='s';
- str[i+1]='s';
- }
- }
- }
- string = (*jnienv)->NewStringUTF(jnienv, str);
- dbg(lvl_debug,"enter %s\n",str);
- (*jnienv)->CallVoidMethod(jnienv, this->NavitSpeech, this->NavitSpeech_say, string);
- (*jnienv)->DeleteLocalRef(jnienv, string);
- g_free(str);
-
- return 1;
-}
-
-static void
-speech_android_destroy(struct speech_priv *this) {
- g_free(this);
-}
-
-static struct speech_methods speech_android_meth = {
- speech_android_destroy,
- speech_android_say,
-};
-
-static int
-speech_android_init(struct speech_priv *ret)
-{
- jmethodID cid;
- char *class="org/navitproject/navit/NavitSpeech2";
-
- if (ret->flags & 1)
- class="org/navitproject/navit/NavitSpeech";
-
- if (!android_find_class_global(class, &ret->NavitSpeechClass)) {
- dbg(lvl_error,"No class found\n");
- return 0;
- }
- dbg(lvl_debug,"at 3\n");
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitSpeechClass, "<init>", "(Lorg/navitproject/navit/Navit;)V");
- if (cid == NULL) {
- dbg(lvl_error,"no method found\n");
- return 0; /* exception thrown */
- }
- if (!android_find_method(ret->NavitSpeechClass, "say", "(Ljava/lang/String;)V", &ret->NavitSpeech_say))
- return 0;
- dbg(lvl_debug,"at 4 android_activity=%p\n",android_activity);
- ret->NavitSpeech=(*jnienv)->NewObject(jnienv, ret->NavitSpeechClass, cid, android_activity);
- dbg(lvl_debug,"result=%p\n",ret->NavitSpeech);
- if (!ret->NavitSpeech)
- return 0;
- if (ret->NavitSpeech)
- ret->NavitSpeech = (*jnienv)->NewGlobalRef(jnienv, ret->NavitSpeech);
- return 1;
-}
-
-static struct speech_priv *
-speech_android_new(struct speech_methods *meth, struct attr **attrs, struct attr *parent) {
- struct speech_priv *this;
- struct attr *flags;
- *meth=speech_android_meth;
- this=g_new0(struct speech_priv,1);
- if (android_version < 4)
- this->flags=3;
- if (!speech_android_init(this)) {
- dbg(lvl_error,"Failed to init speech %p\n",this->NavitSpeechClass);
- g_free(this);
- this=NULL;
- }
- if ((flags = attr_search(attrs, NULL, attr_flags)))
- this->flags=flags->u.num;
-
- return this;
-}
-
-
-void
-plugin_init(void)
-{
- plugin_register_category_speech("android", speech_android_new);
-}
diff --git a/navit/speech/cmdline/CMakeLists.txt b/navit/speech/cmdline/CMakeLists.txt
deleted file mode 100644
index f8c00ad4b..000000000
--- a/navit/speech/cmdline/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(speech_cmdline speech_cmdline.c)
diff --git a/navit/speech/cmdline/speech_cmdline.c b/navit/speech/cmdline/speech_cmdline.c
deleted file mode 100644
index 490811ce5..000000000
--- a/navit/speech/cmdline/speech_cmdline.c
+++ /dev/null
@@ -1,265 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <string.h>
-#include <limits.h>
-#include <glib.h>
-#include "config.h"
-#include "debug.h"
-#include "item.h"
-#include "plugin.h"
-#include "file.h"
-#include "speech.h"
-#include "util.h"
-#ifdef HAVE_API_WIN32_BASE
-#include <windows.h>
-#endif
-#ifdef USE_EXEC
-#include <sys/types.h>
-#include <unistd.h>
-#include <string.h>
-#endif
-
-
-static char *urldecode(char *str)
-{
- char *ret=g_strdup(str);
- char *src=ret;
- char *dst=ret;
- while (*src) {
- if (*src == '%') {
- int val;
- if (sscanf(src+1,"%02x",&val)) {
- src+=2;
- *dst++=val;
- }
- src++;
- } else
- *dst++=*src++;
- }
- *dst++='\0';
- return ret;
-}
-
-static GList *
-speech_cmdline_search(GList *samples, int suffix_len, const char *text, int decode)
-{
- GList *loop_samples=samples,*result=NULL,*recursion_result;
- int shortest_result_length=INT_MAX;
- dbg(lvl_debug,"searching samples for text: '%s'\n",text);
- while (loop_samples) {
- char *sample_name=loop_samples->data;
- int sample_name_len;
- if (decode)
- sample_name=urldecode(sample_name);
- sample_name_len=strlen(sample_name)-suffix_len;
- // TODO: Here we compare UTF-8 text with a filename.
- // It's unclear how a case-insensitive comparison should work
- // in general, so for now we only do it for ASCII text.
- if (!g_ascii_strncasecmp(text, sample_name, sample_name_len)) {
- const char *remaining_text=text+sample_name_len;
- while (*remaining_text == ' ' || *remaining_text == ',')
- remaining_text++;
- dbg(lvl_debug,"sample '%s' matched; remaining text: '%s'\n",sample_name,remaining_text);
- if (*remaining_text) {
- recursion_result=speech_cmdline_search(samples, suffix_len, remaining_text, decode);
- if (recursion_result && g_list_length(recursion_result) < shortest_result_length) {
- g_list_free(result);
- result=recursion_result;
- result=g_list_prepend(result, loop_samples->data);
- shortest_result_length=g_list_length(result);
- } else {
- dbg(lvl_debug,"no (shorter) result found for remaining text '%s', "
- "trying next sample\n", remaining_text);
- g_list_free(recursion_result);
- }
- } else {
- g_list_free(result);
- result=g_list_prepend(NULL, loop_samples->data);
- break;
- }
- }
- if (decode)
- g_free(sample_name);
- loop_samples=g_list_next(loop_samples);
- }
- return result;
-}
-#if 0
-
- r=search(l, strlen(path)+1, suffix_len, argv[1]);
- while (r) {
- printf("%s/%s\n",path,r->data);
- r=g_list_next(r);
- }
- return 0;
-#endif
-
-struct speech_priv {
- char *cmdline;
- char *sample_dir;
- char *sample_suffix;
- int flags;
- GList *samples;
- struct spawn_process_info *spi;
-};
-
-static int
-speechd_say(struct speech_priv *this, const char *text)
-{
- char **cmdv=g_strsplit(this->cmdline," ", -1);
- int variable_arg_no=-1;
- GList *argl=NULL;
- guint listlen;
- int samplesmode=0;
- int i;
-
- for(i=0;cmdv[i];i++)
- if(strchr(cmdv[i],'%')) {
- variable_arg_no=i;
- break;
- }
-
- if (this->sample_dir && this->sample_suffix) {
- argl=speech_cmdline_search(this->samples, strlen(this->sample_suffix), text, !!(this->flags & 1));
- samplesmode=1;
- listlen=g_list_length(argl);
- dbg(lvl_debug,"For text: '%s', found %d samples.\n",text,listlen);
- if (!listlen){
- dbg(lvl_error,"No matching samples found. Cannot speak text: '%s'\n",text);
- }
- } else {
- listlen=1;
- }
- if(listlen>0) {
- dbg(lvl_debug,"Speaking text '%s'\n",text);
- int argc;
- char**argv;
- int j;
- int cmdvlen=g_strv_length(cmdv);
- argc=cmdvlen + listlen - (variable_arg_no>0?1:0);
- argv=g_new(char *,argc+1);
- if(variable_arg_no==-1) {
- argv[cmdvlen]=g_strdup("%s");
- variable_arg_no=cmdvlen;
- }
-
- for(i=0,j=0;j<argc;) {
- if( i==variable_arg_no ) {
- if (samplesmode) {
- GList *l=argl;
- while(l) {
- char *new_arg;
- new_arg=g_strdup_printf("%s/%s",this->sample_dir,(char *)l->data);
- dbg(lvl_debug,"new_arg %s\n",new_arg);
- argv[j++]=g_strdup_printf(cmdv[i],new_arg);
- g_free(new_arg);
- l=g_list_next(l);
- }
- } else {
- argv[j++]=g_strdup_printf(cmdv[i],text);
- }
- i++;
- } else {
- argv[j++]=g_strdup(cmdv[i++]);
- }
- }
- argv[j]=NULL;
- if (argl)
- // No need to free data elements here as they are
- // still referenced from this->samples
- g_list_free(argl);
-
- if(this->spi) {
- spawn_process_check_status(this->spi,1); // Block until previous spawned speech process is terminated.
- spawn_process_info_free(this->spi);
- }
- this->spi=spawn_process(argv);
- g_strfreev(argv);
- }
- g_strfreev(cmdv);
- return 0;
-}
-
-
-static void
-speechd_destroy(struct speech_priv *this) {
- GList *l=this->samples;
- g_free(this->cmdline);
- g_free(this->sample_dir);
- g_free(this->sample_suffix);
- while(l) {
- g_free(l->data);
- }
- g_list_free(this->samples);
- if(this->spi)
- spawn_process_info_free(this->spi);
- g_free(this);
-}
-
-static struct speech_methods speechd_meth = {
- speechd_destroy,
- speechd_say,
-};
-
-static struct speech_priv *
-speechd_new(struct speech_methods *meth, struct attr **attrs, struct attr *parent) {
- struct speech_priv *this;
- struct attr *attr;
- attr=attr_search(attrs, NULL, attr_data);
- if (! attr)
- return NULL;
- this=g_new0(struct speech_priv,1);
- this->cmdline=g_strdup(attr->u.str);
- if ((attr=attr_search(attrs, NULL, attr_sample_dir)))
- this->sample_dir=g_strdup(attr->u.str);
- if ((attr=attr_search(attrs, NULL, attr_sample_suffix)))
- this->sample_suffix=g_strdup(attr->u.str);
- if ((attr=attr_search(attrs, NULL, attr_flags)))
- this->flags=attr->u.num;
- if (this->sample_dir && this->sample_suffix) {
- void *handle=file_opendir(this->sample_dir);
- if (!handle) {
- dbg(lvl_error,"Cannot read sample directory contents: %s", this->sample_dir);
- return NULL;
- }
- char *name;
- int suffix_len=strlen(this->sample_suffix);
- while((name=file_readdir(handle))) {
- int len=strlen(name);
- if (len > suffix_len) {
- if (!strcmp(name+len-suffix_len, this->sample_suffix)) {
- dbg(lvl_debug,"found %s\n",name);
- this->samples=g_list_prepend(this->samples, g_strdup(name));
- }
- }
- }
- file_closedir(handle);
- }
- *meth=speechd_meth;
- return this;
-}
-
-
-void
-plugin_init(void)
-{
- plugin_register_category_speech("cmdline", speechd_new);
-}
diff --git a/navit/speech/dbus/CMakeLists.txt b/navit/speech/dbus/CMakeLists.txt
deleted file mode 100644
index 87413018a..000000000
--- a/navit/speech/dbus/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(speech_dbus speech_dbus.c)
diff --git a/navit/speech/dbus/speech_dbus.c b/navit/speech/dbus/speech_dbus.c
deleted file mode 100644
index 0fdfb71ab..000000000
--- a/navit/speech/dbus/speech_dbus.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include "config.h"
-#include "item.h"
-#include "plugin.h"
-#include "navit.h"
-#include "attr.h"
-#include "callback.h"
-#include "speech.h"
-
-struct speech_priv {
- struct navit *nav;
-};
-
-static int
-speech_dbus_say(struct speech_priv *this, const char *text)
-{
- struct attr attr1,attr2,cb,*attr_list[3];
- int valid=0;
- attr1.type=attr_type;
- attr1.u.str="speech";
- attr2.type=attr_data;
- attr2.u.str=(char *)text;
- attr_list[0]=&attr1;
- attr_list[1]=&attr2;
- attr_list[2]=NULL;
- if (navit_get_attr(this->nav, attr_callback_list, &cb, NULL))
- callback_list_call_attr_4(cb.u.callback_list, attr_command, "dbus_send_signal", attr_list, NULL, &valid);
- return 0;
-}
-
-static void
-speech_dbus_destroy(struct speech_priv *this) {
- g_free(this);
-}
-
-static struct speech_methods speech_dbus_meth = {
- speech_dbus_destroy,
- speech_dbus_say,
-};
-
-static struct speech_priv *
-speech_dbus_new(struct speech_methods *meth, struct attr **attrs, struct attr *parent) {
- struct speech_priv *this;
- if (!parent || parent->type != attr_navit)
- return NULL;
- this=g_new(struct speech_priv,1);
- this->nav=parent->u.navit;
- *meth=speech_dbus_meth;
- return this;
-}
-
-
-void
-plugin_init(void)
-{
- plugin_register_category_speech("dbus", speech_dbus_new);
-}
diff --git a/navit/speech/espeak/CMakeLists.txt b/navit/speech/espeak/CMakeLists.txt
deleted file mode 100644
index f08e35090..000000000
--- a/navit/speech/espeak/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-module_add_library(speech_espeak speak.c)
-target_link_libraries(speech_espeak support_espeak)
diff --git a/navit/speech/espeak/speak.c b/navit/speech/espeak/speak.c
deleted file mode 100644
index 329a05d01..000000000
--- a/navit/speech/espeak/speak.c
+++ /dev/null
@@ -1,518 +0,0 @@
-/**
- * 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.
- */
-
-#define _WIN32_WINNT 0x0500
-
-#include "config.h"
-
-#ifdef HAVE_API_WIN32_BASE
-#include <windows.h>
-#include <mmsystem.h>
-#include <winreg.h>
-#else
-#include <unistd.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <glib.h>
-#include "item.h"
-#include "plugin.h"
-#include "speech.h"
-#include "util.h"
-#include "file.h"
-#include "debug.h"
-
-#include "support/espeak/speech.h"
-#include "support/espeak/speak_lib.h"
-#include "support/espeak/phoneme.h"
-#include "support/espeak/synthesize.h"
-#include "support/espeak/voice.h"
-#include "support/espeak/translate.h"
-
-
-#define BUFFERS 4
-
-
-// ----- some stuff needed by espeak ----------------------------------
-char path_home[N_PATH_HOME]; // this is the espeak-data directory
-int (* uri_callback)(int, const char *, const char *) = NULL;
-int (* phoneme_callback)(const char *) = NULL;
-FILE *f_wave = NULL;
-
-int GetFileLength(const char *filename)
-{
- struct stat statbuf;
-
- if(stat(filename,&statbuf) != 0)
- return(0);
-
- if((statbuf.st_mode & S_IFMT) == S_IFDIR)
- return(-2); // a directory
-
- return(statbuf.st_size);
-}
-
-void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr)
-{
-}
-
-char *Alloc(int size)
-{
- return g_malloc(size);
-}
-
-void Free(void *ptr)
-{
- g_free(ptr);
-}
-
-// --------------------------------------------------------------------
-
-
-enum speech_messages
-{
- msg_say = WM_USER,
- msg_exit
-};
-
-enum speech_state
-{
- state_available,
- state_speaking_phase_1,
- state_speaking_phase_2,
- state_speaking_phase_3
-
-};
-
-struct speech_priv {
- GList *free_buffers;
- HWAVEOUT h_wave_out;
- enum speech_state state;
- GList *phrases;
- HWND h_queue;
- HANDLE h_message_thread;
-};
-
-
-static void waveout_close(struct speech_priv* sp_priv)
-{
- waveOutClose(sp_priv->h_wave_out);
-}
-
-static BOOL waveout_open(struct speech_priv* sp_priv)
-{
- MMRESULT result = 0;
-
- HWAVEOUT hwo;
- static WAVEFORMATEX wmTemp;
- wmTemp.wFormatTag = WAVE_FORMAT_PCM;
- wmTemp.nChannels = 1;
- wmTemp.nSamplesPerSec = 22050;
- wmTemp.wBitsPerSample = 16;
- wmTemp.nBlockAlign = wmTemp.nChannels * wmTemp.wBitsPerSample / 8;
- wmTemp.nAvgBytesPerSec = wmTemp.nSamplesPerSec * wmTemp.nBlockAlign;
- wmTemp.cbSize = 0;
- result = waveOutOpen(&hwo, (UINT) WAVE_MAPPER, &wmTemp, (DWORD)sp_priv->h_queue, (DWORD)sp_priv, CALLBACK_WINDOW);
- sp_priv->h_wave_out = hwo;
-
- return (result==MMSYSERR_NOERROR);
-}
-
-static int wave_out(struct speech_priv* sp_priv)
-{
- int isDone;
-
- WAVEHDR *WaveHeader = g_list_first(sp_priv->free_buffers)->data;
- sp_priv->free_buffers = g_list_remove(sp_priv->free_buffers, WaveHeader);
-
- out_ptr = out_start = WaveHeader->lpData;
- out_end = WaveHeader->lpData + WaveHeader->dwBufferLength;
-
- isDone = WavegenFill(0);
-
- if ( out_ptr < out_end )
- {
- memset ( out_ptr, 0, out_end - out_ptr );
- }
- waveOutWrite(sp_priv->h_wave_out, WaveHeader, sizeof(WAVEHDR));
-
- return isDone;
-}
-
-static BOOL initialise(void)
-{
- int param;
- int result;
-
- WavegenInit(22050,0); // 22050
- if((result = LoadPhData()) != 1)
- {
- if(result == -1)
- {
- dbg(lvl_error, "Failed to load espeak-data\n");
- return FALSE;
- }
- else
- dbg(lvl_error, "Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home);
- }
- LoadConfig();
- SetVoiceStack(NULL);
- SynthesizeInit();
-
- for(param=0; param<N_SPEECH_PARAM; param++)
- param_stack[0].parameter[param] = param_defaults[param];
-
- return TRUE;
-}
-
-static void fill_buffer(struct speech_priv *this)
-{
- while ( this->free_buffers && this->state != state_speaking_phase_3 )
- {
- if(Generate(phoneme_list,&n_phoneme_list,1)==0)
- {
- if (!SpeakNextClause(NULL,NULL,1))
- {
- this->state = state_speaking_phase_2;
- }
- }
-
- if ( wave_out(this)!= 0 && this->state == state_speaking_phase_2)
- {
- this->state = state_speaking_phase_3;
- }
- }
-}
-
-static void start_speaking(struct speech_priv* sp_priv)
-{
- char *phrase = g_list_first(sp_priv->phrases)->data;
-
- sp_priv->state = state_speaking_phase_1;
-
- SpeakNextClause(NULL, phrase,0);
- wave_out(sp_priv);
- fill_buffer(sp_priv);
-}
-
-static LRESULT CALLBACK speech_message_handler( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
-{
- dbg(lvl_debug, "message_handler called\n");
-
- switch (uMsg)
- {
- case msg_say:
- {
- struct speech_priv* sp_priv = (struct speech_priv*)wParam;
- sp_priv->phrases = g_list_append(sp_priv->phrases, (char*)lParam);
-
- if ( sp_priv->state == state_available )
- {
- start_speaking(sp_priv);
- }
-
- }
- break;
- case MM_WOM_DONE:
- {
- WAVEHDR *WaveHeader = (WAVEHDR *)lParam;
- struct speech_priv* sp_priv;
- dbg(lvl_info, "Wave buffer done\n");
-
- sp_priv = (struct speech_priv*)WaveHeader->dwUser;
- sp_priv->free_buffers = g_list_append(sp_priv->free_buffers, WaveHeader);
-
- if ( sp_priv->state != state_speaking_phase_3)
- {
- fill_buffer(sp_priv);
- }
- else if ( g_list_length(sp_priv->free_buffers) == BUFFERS && sp_priv->state == state_speaking_phase_3 )
- {
- // remove the spoken phrase from the list
- char *phrase = g_list_first(sp_priv->phrases)->data;
- g_free( phrase );
- sp_priv->phrases = g_list_remove(sp_priv->phrases, phrase);
-
- if ( sp_priv->phrases )
- {
- start_speaking(sp_priv);
- }
- else
- {
- sp_priv->state = state_available;
- }
- }
- }
- break;
- case msg_exit:
- ExitThread(0);
- break;
-
- default:
- break;
-
- }
-
- return TRUE;
-}
-
-static void speech_message_dispatcher( struct speech_priv * sp_priv)
-{
- BOOL bRet;
- MSG msg;
-
- while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
- {
- if (bRet == -1)
- {
- dbg(lvl_error, "Error getting message from queue\n");
- break;
- }
- else
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
-}
-
-static void create_buffers(struct speech_priv *sp_priv)
-{
- int buffer_counter;
- char *buffer_head;
-
-
- SYSTEM_INFO system_info;
- GetSystemInfo (&system_info);
-
- buffer_head = VirtualAlloc(0, system_info.dwPageSize * BUFFERS, MEM_RESERVE, PAGE_NOACCESS);
-
- for (buffer_counter = 0; buffer_counter < BUFFERS; buffer_counter++)
- {
- WAVEHDR *WaveHeader = g_new0(WAVEHDR, 1);
-
- WaveHeader->dwBufferLength = system_info.dwPageSize;
- WaveHeader->lpData = (char *)VirtualAlloc(buffer_head, WaveHeader->dwBufferLength, MEM_COMMIT, PAGE_READWRITE);
- buffer_head += WaveHeader->dwBufferLength;
-
- WaveHeader->dwUser = (DWORD)sp_priv;
- waveOutPrepareHeader(sp_priv->h_wave_out, WaveHeader, sizeof(WAVEHDR));
-
- sp_priv->free_buffers = g_list_append( sp_priv->free_buffers, WaveHeader );
- }
-}
-
-static DWORD startThread( LPVOID sp_priv)
-{
- struct speech_priv *this = (struct speech_priv *) sp_priv;
- // Create message queue
- TCHAR *g_szClassName = TEXT("SpeechQueue");
- WNDCLASS wc;
- HWND hwnd;
- HWND hWndParent;
-
-
- memset(&wc, 0 , sizeof(WNDCLASS));
- wc.lpfnWndProc = speech_message_handler;
- wc.hInstance = GetModuleHandle(NULL);
- wc.lpszClassName = g_szClassName;
-
- if (!RegisterClass(&wc))
- {
- dbg(lvl_error, "Window registration for message queue failed\n");
- return 1;
- }
-
- hWndParent = NULL;
-#ifndef HAVE_API_WIN32_CE
- hWndParent = HWND_MESSAGE;
-#endif
-
- // create a message only window
- hwnd = CreateWindow(
- g_szClassName,
- TEXT("Navit"),
- 0,
- 0,
- 0,
- 0,
- 0,
- hWndParent,
- NULL,
- GetModuleHandle(NULL),
- NULL);
-
- if (hwnd == NULL)
- {
- dbg(lvl_error, "Window creation failed: %d\n", GetLastError());
- return 1;
- }
-
- this->h_queue = hwnd;
- this->phrases = NULL;
- this->state = state_available;
-
- if(!waveout_open(this))
- {
- dbg(lvl_error, "Can't open wave output\n");
- return 1;
- }
-
- this->free_buffers = NULL;
- create_buffers(this);
-
- speech_message_dispatcher(this);
-
- return 0;
-}
-
-static int
-espeak_say(struct speech_priv *this, const char *text)
-{
- char *phrase = g_strdup(text);
- dbg(lvl_debug, "Speak: '%s'\n", text);
-
- if (!PostMessage(this->h_queue, msg_say, (WPARAM)this, (LPARAM)phrase))
- {
- dbg(lvl_error, "PostThreadMessage 'say' failed\n");
- }
-
- return 0;
-}
-
-static void free_list(gpointer pointer, gpointer this )
-{
- if ( this )
- {
- struct speech_priv *sp_priv = (struct speech_priv *)this;
- WAVEHDR *WaveHeader = (WAVEHDR *)pointer;
-
- waveOutUnprepareHeader(sp_priv->h_wave_out, WaveHeader, sizeof(WAVEHDR));
- VirtualFree(WaveHeader->lpData, WaveHeader->dwBufferLength, MEM_DECOMMIT);
- }
- g_free(pointer);
-}
-
-static void
-espeak_destroy(struct speech_priv *this)
-{
- g_list_foreach( this->free_buffers, free_list, (gpointer)this );
- g_list_free( this->free_buffers );
-
- g_list_foreach( this->phrases, free_list, 0 );
- g_list_free(this->phrases);
-
- waveout_close(this);
- g_free(this);
-}
-
-static struct speech_methods espeak_meth = {
- espeak_destroy,
- espeak_say,
-};
-
-static struct speech_priv *
-espeak_new(struct speech_methods *meth, struct attr **attrs, struct attr *parent) {
- struct speech_priv *this = NULL;
- struct attr *path;
- struct attr *language;
- char *lang_str=NULL;
-
- path=attr_search(attrs, NULL, attr_path);
- if (path)
- strcpy(path_home,path->u.str);
- else
- sprintf(path_home,"%s/espeak-data",getenv("NAVIT_SHAREDIR"));
- dbg(lvl_debug,"path_home set to %s\n",path_home);
-
- if ( !initialise() )
- {
- return NULL;
- }
-
- language=attr_search(attrs, NULL, attr_language);
- if ( language ) {
- lang_str=g_strdup(language->u.str);
- } else {
- char *lang_env=getenv("LANG");
-
- if (lang_env) {
- char *country,*lang,*lang_full;
- char *file1;
- char *file2;
- lang_full=g_strdup(lang_env);
- strtolower(lang_full,lang_env);
- lang=g_strdup(lang_full);
- country=strchr(lang_full,'_');
- if (country) {
- lang[country-lang_full]='\0';
- *country++='-';
- }
- file1=g_strdup_printf("%s/voices/%s",path_home,lang_full);
- file2=g_strdup_printf("%s/voices/%s/%s",path_home,lang,lang_full);
- dbg(lvl_debug,"Testing %s and %s\n",file1,file2);
- if (file_exists(file1) || file_exists(file2))
- lang_str=g_strdup(lang_full);
- else
- lang_str=g_strdup(lang);
- dbg(lvl_debug,"Language full %s lang %s result %s\n",lang_full,lang,lang_str);
- g_free(lang_full);
- g_free(lang);
- g_free(file1);
- g_free(file2);
- }
- }
- if(lang_str && SetVoiceByName(lang_str) != EE_OK)
- {
- dbg(lvl_error, "Error setting language to: '%s',falling back to default\n", lang_str);
- g_free(lang_str);
- lang_str=NULL;
- }
- if(!lang_str && SetVoiceByName("default") != EE_OK) {
- dbg(lvl_error, "Error setting language to default\n");
- }
-
-
- SetParameter(espeakRATE,170,0);
- SetParameter(espeakVOLUME,100,0);
- SetParameter(espeakCAPITALS,option_capitals,0);
- SetParameter(espeakPUNCTUATION,option_punctuation,0);
- SetParameter(espeakWORDGAP,0,0);
-
-// if(pitch_adjustment != 50)
-// {
-// SetParameter(espeakPITCH,pitch_adjustment,0);
-// }
- DoVoiceChange(voice);
-
- this=g_new(struct speech_priv,1);
- this->h_message_thread = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)startThread, (PVOID)this, 0, NULL);
-
- *meth=espeak_meth;
-
-
- return this;
-}
-
-void
-plugin_init(void)
-{
- plugin_register_category_speech("espeak", espeak_new);
-}
diff --git a/navit/speech/iphone/CMakeLists.txt b/navit/speech/iphone/CMakeLists.txt
deleted file mode 100644
index 16b75cb10..000000000
--- a/navit/speech/iphone/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-set(speech_iphone_LIBS "-F ${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks -framework VoiceServices")
-module_add_library(speech_iphone speech_iphone.m)
diff --git a/navit/speech/iphone/VSSpeechSynthesizer.h b/navit/speech/iphone/VSSpeechSynthesizer.h
deleted file mode 100644
index d7b83e337..000000000
--- a/navit/speech/iphone/VSSpeechSynthesizer.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#import <foundation/foundation.h>
-
-@interface VSSpeechSynthesizer : NSObject
-{
-}
-
-+ (id)availableLanguageCodes;
-+ (BOOL)isSystemSpeaking;
-- (id)startSpeakingString:(id)string;
-- (id)startSpeakingString:(id)string toURL:(id)url;
-- (id)startSpeakingString:(id)string toURL:(id)url withLanguageCode:(id)code;
-- (float)rate; // default rate: 1
-- (id)setRate:(float)rate;
-- (float)pitch; // default pitch: 0.5
-- (id)setPitch:(float)pitch;
-- (float)volume; // default volume: 0.8
-- (id)setVolume:(float)volume;
-@end
diff --git a/navit/speech/iphone/speech_iphone.m b/navit/speech/iphone/speech_iphone.m
deleted file mode 100644
index c77b6fbc2..000000000
--- a/navit/speech/iphone/speech_iphone.m
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include "config.h"
-#include "item.h"
-#include "debug.h"
-#include "plugin.h"
-#include "speech.h"
-#import "VSSpeechSynthesizer.h"
-
-struct speech_priv {
- VSSpeechSynthesizer *speech;
-};
-
-static int
-speech_iphone_say(struct speech_priv *this, const char *text)
-{
- dbg(0,"enter %s\n",text);
- NSString *s=[[NSString alloc]initWithUTF8String: text];
- [this->speech startSpeakingString:s toURL:nil];
- [s release];
- dbg(0,"ok\n");
- return 1;
-}
-
-static void
-speech_iphone_destroy(struct speech_priv *this)
-{
- [this->speech release];
- g_free(this);
-}
-
-static struct speech_methods speech_iphone_meth = {
- speech_iphone_destroy,
- speech_iphone_say,
-};
-
-static struct speech_priv *
-speech_iphone_new(struct speech_methods *meth, struct attr **attrs, struct attr *parent)
-{
- struct speech_priv *this;
- *meth=speech_iphone_meth;
- this=g_new0(struct speech_priv,1);
- this->speech=[[NSClassFromString(@"VSSpeechSynthesizer") alloc] init];
- dbg(0,"this->speech=%p\n",this->speech);
- [this->speech setRate:(float)1.0];
- return this;
-}
-
-
-void
-plugin_init(void)
-{
- dbg(0,"enter\n");
- plugin_register_category_speech("iphone", speech_iphone_new);
-}
diff --git a/navit/speech/qt5_espeak/CMakeLists.txt b/navit/speech/qt5_espeak/CMakeLists.txt
deleted file mode 100644
index dbeb1efb2..000000000
--- a/navit/speech/qt5_espeak/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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(speech_qt5_espeak qt5_espeak.cpp Qt5EspeakAudioOut.cpp)
-if(INTERNAL_ESPEAK_COMPLETE)
- add_definitions ("-DINTERNAL_ESPEAK=1")
- target_link_libraries(speech_qt5_espeak support_espeak)
-else()
- add_definitions ("-DINTERNAL_ESPEAK=0")
-endif()
diff --git a/navit/speech/qt5_espeak/Qt5EspeakAudioOut.cpp b/navit/speech/qt5_espeak/Qt5EspeakAudioOut.cpp
deleted file mode 100644
index da2c6b3e1..000000000
--- a/navit/speech/qt5_espeak/Qt5EspeakAudioOut.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2017-2017 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.
- */
-// style with: clang-format -style=WebKit -i *
-
-#include "Qt5EspeakAudioOut.h"
-extern "C" {
-#include "debug.h"
-}
-
-Qt5EspeakAudioOut::Qt5EspeakAudioOut(int samplerate, const char* category)
-{
- data = new QByteArray();
- buffer = new QBuffer(data);
- buffer->open(QIODevice::ReadWrite);
-
- QAudioFormat format;
- // Set up the format, eg.
- format.setSampleRate(samplerate);
- format.setChannelCount(1);
- format.setSampleSize(16);
- format.setCodec("audio/pcm");
- format.setByteOrder(QAudioFormat::LittleEndian);
- format.setSampleType(QAudioFormat::SignedInt);
-
- QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
- if (!info.isFormatSupported(format)) {
- dbg(lvl_error,
- "Raw audio format not supported by backend, cannot play audio.\n");
- return;
- }
-
- audio = new QAudioOutput(format, this);
- /* try to set a rather huge buffer size in order to avoid chopping due to
- * event loop
- * not getting idle. Drawing may take just too long time. This hopefully
- * removes the
- * need to do multi threading with all its problems. May be a problem on
- * systems with
- * really low memory.*/
- audio->setBufferSize((samplerate * 1 /*ch*/ * 2 /*samplezize*/) * 5 /*seconds*/);
- dbg(lvl_debug, "Buffer size is: %d\n", audio->bufferSize());
- if (category != NULL)
- audio->setCategory(QString(category));
-
- connect(audio, SIGNAL(stateChanged(QAudio::State)), this,
- SLOT(handleStateChanged(QAudio::State)));
- /* to cope with resume coming from other thread (of libespeak)*/
- connect(this, SIGNAL(call_resume(int)), this, SLOT(resume(int)));
-}
-
-Qt5EspeakAudioOut::~Qt5EspeakAudioOut()
-{
- delete (audio);
- audio = NULL;
- delete (buffer);
- buffer = NULL;
- delete (data);
- data = NULL;
-}
-
-void Qt5EspeakAudioOut::handleStateChanged(QAudio::State newState)
-{
- dbg(lvl_debug, "Enter %d\n", newState);
- switch (newState) {
- case QAudio::ActiveState:
- break;
- case QAudio::SuspendedState:
- break;
- case QAudio::StoppedState:
- break;
- case QAudio::IdleState:
- /*remove all data that was already read*/
- data->remove(0, buffer->pos());
- buffer->seek(0);
- dbg(lvl_debug, "Size %d\n", data->size());
- break;
- }
-}
-
-void Qt5EspeakAudioOut::resume(int state)
-{
- dbg(lvl_debug, "Enter %d\n", state);
- if (audio->state() != QAudio::ActiveState)
- audio->start(buffer);
-}
-
-void Qt5EspeakAudioOut::addSamples(short* wav, int numsamples)
-{
- dbg(lvl_debug, "Enter (%d samples)\n", numsamples);
-
- /*remove all data that was already read (if any)*/
- data->remove(0, buffer->pos());
- buffer->seek(0);
-
- if (numsamples > 0) {
- data->append((const char*)wav, numsamples * sizeof(short));
- dbg(lvl_debug, "%ld samples in buffer\n",
- (long int)(buffer->size() / sizeof(short)));
- emit call_resume(numsamples);
- }
-}
diff --git a/navit/speech/qt5_espeak/Qt5EspeakAudioOut.h b/navit/speech/qt5_espeak/Qt5EspeakAudioOut.h
deleted file mode 100644
index d7eb632fd..000000000
--- a/navit/speech/qt5_espeak/Qt5EspeakAudioOut.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2017-2017 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.
- */
-// style with: clang-format -style=WebKit -i *
-
-#ifndef Qt5EspeakAudioOut_h
-#define Qt5EspeakAudioOut_h
-#include <QAudioOutput>
-#include <QBuffer>
-#include <QByteArray>
-#include <QObject>
-class Qt5EspeakAudioOut : public QObject {
- Q_OBJECT
-public:
- /* Instantiate this. Parameters are the sample rate to use,
- * and the category to sort this audio output to. Not all platforms
- * will honour category */
- Qt5EspeakAudioOut(int samplerate, const char* category);
- ~Qt5EspeakAudioOut();
- /* Add new samples to this class. The samples will be played*/
- void addSamples(short* wav, int numsamples);
-public slots:
- /* Deal with QAudioOutput status changes */
- void handleStateChanged(QAudio::State newState);
- /* Cause QAusioOutput to resume playing (after samples were added)*/
- void resume(int state);
-signals:
- /* Cause QAusioOutput to resume playing. Emit this from different thread
- * as this is not threadsafe*/
- void call_resume(int state);
-
-protected:
-private:
- /* internal buffer */
- QByteArray* data;
- QBuffer* buffer;
- /* audio output class */
- QAudioOutput* audio;
-};
-#endif
diff --git a/navit/speech/qt5_espeak/qt5_espeak.cpp b/navit/speech/qt5_espeak/qt5_espeak.cpp
deleted file mode 100755
index 8d108eae6..000000000
--- a/navit/speech/qt5_espeak/qt5_espeak.cpp
+++ /dev/null
@@ -1,252 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2017-2017 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.
- */
-// style with: clang-format -style=WebKit -i *
-#include "config.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-
-#include <glib.h>
-extern "C" {
-#include "item.h"
-#include "attr.h"
-#include "debug.h"
-#include "file.h"
-#include "plugin.h"
-#include "speech.h"
-#include "util.h"
-}
-#include <espeak/speak_lib.h>
-
-#include "Qt5EspeakAudioOut.h"
-
-#ifndef INTERNAL_ESPEAK
-#define INTERNAL_ESPEAK 0
-#endif
-#define BUFFERLENGTH 1000
-#define SAMPLE_SIZE 16
-
-// --------------------------------------------------------------------
-
-/* private context handle type */
-struct speech_priv {
- gchar* path_home;
- int sample_rate;
-
- bool espeak_ok;
- bool audio_ok;
- Qt5EspeakAudioOut* audio;
-};
-
-/* callback from espeak to transfer generated samples */
-int qt5_espeak_SynthCallback(short* wav, int numsamples, espeak_EVENT* events)
-{
- struct speech_priv* pr = NULL;
- dbg(lvl_debug, "Callback %d samples\n", numsamples);
- if (events != NULL)
- pr = (struct speech_priv*)events->user_data;
- if ((pr != NULL) && (pr->audio != NULL)) {
- pr->audio->addSamples(wav, numsamples);
- }
-
- return 0;
- /* 0 - continue synthesis */
- /* 1 - abort synthesis */
-}
-
-/* set up espeak */
-static bool
-qt5_espeak_init_espeak(struct speech_priv* sr, struct attr** attrs)
-{
- struct attr* path;
-
- /* prepare espeak library path home */
- path = attr_search(attrs, NULL, attr_path);
- if (path) {
- sr->path_home = g_strdup(path->u.str);
- } else {
-#if INTERNAL_ESPEAK
- sr->path_home = g_strdup_printf("%s", getenv("NAVIT_SHAREDIR"));
-#else
- /* since no path was given by config, we don't know the path to external
- * espeak data.
- * so give NULL to use default path */
- sr->path_home = NULL;
-#endif
- }
- dbg(lvl_debug, "path_home set to %s\n", sr->path_home);
-#if INTERNAL_ESPEAK
- /*internal espeak is configured to support only synchronous modes */
- sr->sample_rate = espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS, BUFFERLENGTH, sr->path_home, 0);
-#else
- // sr->sample_rate = espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL, BUFFERLENGTH,
- // sr->path_home, 0);
- sr->sample_rate = espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS, BUFFERLENGTH, sr->path_home, 0);
-#endif
- if (sr->sample_rate == EE_INTERNAL_ERROR) {
- dbg(lvl_error, "Init failed %d\n", sr->sample_rate);
- return 1;
- }
- dbg(lvl_error, "Sample rate is %d\n", sr->sample_rate);
-
- espeak_SetSynthCallback(qt5_espeak_SynthCallback);
- return TRUE;
-}
-
-/* set language to espeak */
-static bool
-qt5_espeak_init_language(struct speech_priv* pr, struct attr** attrs)
-{
- struct attr* language;
- gchar* lang_str = NULL;
- espeak_ERROR error;
- espeak_VOICE voice_spec;
-
- language = attr_search(attrs, NULL, attr_language);
- if (language) {
- lang_str = g_strdup(language->u.str);
- } else {
- char* lang_env = getenv("LANG");
- if (lang_env != NULL) {
- char* country;
-
- lang_str = g_strdup(lang_env);
- /* convert to all lower */
- strtolower(lang_str, lang_env);
-
- /* extract language code from LANG environment */
- dbg(lvl_debug, "%s\n", lang_str);
- country = strchr(lang_str, '_');
- dbg(lvl_debug, "%s\n", country);
- if (country) {
- lang_str[country - lang_str] = '\0';
- }
- dbg(lvl_debug, "espeak lang: %s\n", lang_str);
- }
- }
- /*TODO (golden water tap): expose all those values as attrs */
- voice_spec.name = NULL; /* here we could select a specific voice */
- voice_spec.languages = lang_str;
- voice_spec.gender = 0; /* 0 auto, 1 male, 2 female */
- voice_spec.age = 20;
- voice_spec.variant = 0;
-
- error = espeak_SetVoiceByProperties(&voice_spec);
- if (lang_str != NULL)
- g_free(lang_str);
- if (error != EE_OK) {
- dbg(lvl_error, "Unable to set Language\n");
- return false;
- }
- return true;
-}
-
-/* init audio system */
-static bool
-qt5_espeak_init_audio(struct speech_priv* sr, const char* category)
-{
- try {
- sr->audio = new Qt5EspeakAudioOut(sr->sample_rate, category);
- } catch (void* exception) {
- dbg(lvl_error, "Exception on Qt5EspeakAudioOut creation");
- return false;
- }
- return true;
-}
-
-/* will be called to say new text.
- * sr - private handle
- * text - new (utf8) text
- */
-static int
-qt5_espeak_say(struct speech_priv* sr, const char* text)
-{
- espeak_ERROR error;
- dbg(lvl_debug, "Say \"%s\"\n", text);
- error = espeak_Synth(text, strlen(text), 0, POS_CHARACTER, 0,
- espeakCHARS_UTF8, NULL, sr);
- if (error != EE_OK)
- dbg(lvl_error, "Unable to speak! error == %d\n", error);
-
- return 0;
-}
-
-/* destructor */
-static void
-qt5_espeak_destroy(struct speech_priv* sr)
-{
- dbg(lvl_debug, "Enter\n");
-
- if (sr->path_home != NULL)
- g_free(sr->path_home);
- /* destroy handle */
- g_free(sr);
-}
-
-/* the plugin interface for speech */
-static struct speech_methods qt5_espeak_meth = {
- qt5_espeak_destroy, qt5_espeak_say,
-};
-
-/* create new instance of this.
- * meth - return plugin interface
- * attr - get decoded attributes from config
- * parent - get parent attributes from config
- */
-static struct speech_priv*
-qt5_espeak_new(struct speech_methods* meth, struct attr** attrs,
- struct attr* parent)
-{
- struct speech_priv* sr = NULL;
- dbg(lvl_debug, "Enter\n");
-
- /* allocate handle */
- sr = g_new0(struct speech_priv, 1);
- sr->path_home = NULL;
- sr->espeak_ok = false;
- sr->audio_ok = false;
- sr->sample_rate = 0;
- sr->audio = NULL;
- /* register our methods */
- *meth = qt5_espeak_meth;
-
- /* init espeak library */
- if (!(sr->espeak_ok = qt5_espeak_init_espeak(sr, attrs))) {
- dbg(lvl_error, "Unable to initialize espeak library\n");
- }
-
- /* init espeak voice and language */
- if (!(sr->espeak_ok = qt5_espeak_init_language(sr, attrs))) {
- dbg(lvl_error, "Unable to initialize espeak language\n");
- }
-
- /* init qt5 audio using default category*/
- if (!(sr->audio_ok = qt5_espeak_init_audio(sr, NULL))) {
- dbg(lvl_error, "Unable to initialize audio\n");
- }
- return sr;
-}
-
-/* initialize this as plugin */
-void plugin_init(void)
-{
- dbg(lvl_debug, "Enter\n");
- plugin_register_category_speech("qt5_espeak", qt5_espeak_new);
-}
diff --git a/navit/speech/speech_dispatcher/CMakeLists.txt b/navit/speech/speech_dispatcher/CMakeLists.txt
deleted file mode 100644
index 897a8c088..000000000
--- a/navit/speech/speech_dispatcher/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(speech_speech_dispatcher speech_speech_dispatcher.c)
diff --git a/navit/speech/speech_dispatcher/speech_speech_dispatcher.c b/navit/speech/speech_dispatcher/speech_speech_dispatcher.c
deleted file mode 100644
index d22b3f795..000000000
--- a/navit/speech/speech_dispatcher/speech_speech_dispatcher.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * 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 <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <glib.h>
-#include <stdarg.h>
-#include "config.h"
-#include <libspeechd.h>
-#include "plugin.h"
-#include "speech.h"
-
-struct speech_priv {
- SPDConnection *conn;
-};
-
-static int
-speechd_say(struct speech_priv *this, const char *text) {
- int err;
-
- err = spd_sayf(this->conn, SPD_MESSAGE, text);
- if (err != 1)
- return 1;
- return 0;
-}
-
-static void
-speechd_destroy(struct speech_priv *this) {
- spd_close(this->conn);
- g_free(this);
-}
-
-static struct speech_methods speechd_meth = {
- speechd_destroy,
- speechd_say,
-};
-
-static struct speech_priv *
-speechd_new(struct speech_methods *meth, struct attr **attrs, struct attr *attr) {
- struct speech_priv *this;
- SPDConnection *conn;
-
- conn = spd_open("navit","main",NULL,SPD_MODE_SINGLE);
- if (! conn)
- return NULL;
- this=g_new(struct speech_priv,1);
- if (this) {
- this->conn=conn;
- *meth=speechd_meth;
- spd_set_punctuation(conn, SPD_PUNCT_NONE);
- }
- return this;
-}
-
-
-void
-plugin_init(void)
-{
- plugin_register_category_speech("speech_dispatcher", speechd_new);
-}
diff --git a/navit/start.c b/navit/start.c
deleted file mode 100644
index 35bdce0a0..000000000
--- a/navit/start.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * 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 "start_real.h"
-
-int
-main(int argc, char **argv)
-{
- return main_real(argc, argv);
-}
diff --git a/navit/start_apple.m b/navit/start_apple.m
deleted file mode 100644
index 356d34408..000000000
--- a/navit/start_apple.m
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * 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 "start_real.h"
-#import <Foundation/Foundation.h>
-#include <glib.h>
-#include <stdlib.h>
-
-int
-main(int argc, char **argv)
-{
- int ret;
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSString *appFolderPath = [[NSBundle mainBundle] resourcePath];
- NSString *locale = [[NSLocale currentLocale] localeIdentifier];
- char *lang=g_strdup_printf("%s.UTF-8",[locale UTF8String]);
- dbg(0,"lang %s\n",lang);
- setenv("LANG",lang,0);
- setlocale(LC_ALL, NULL);
-
- const char *s=[appFolderPath UTF8String];
- char *user=g_strdup_printf("%s/../Documents",s);
- chdir(s);
- argv[0]=g_strdup_printf("%s/bin/navit",s);
- setenv("NAVIT_USER_DATADIR",user,0);
-
- dbg(0,"calling main_real\n");
- ret=main_real(argc, argv);
- g_free(argv[0]);
- g_free(user);
- [pool release];
- return ret;
-}
diff --git a/navit/start_real.c b/navit/start_real.c
deleted file mode 100644
index 16e0d5edb..000000000
--- a/navit/start_real.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <glib.h>
-#include "config.h"
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#else
-#include <XGetopt.h>
-#endif
-#include "config_.h"
-#include "version.h"
-#include "item.h"
-#include "coord.h"
-#include "main.h"
-#include "route.h"
-#include "navigation.h"
-#include "track.h"
-#include "debug.h"
-#include "event.h"
-#include "event_glib.h"
-#include "xmlconfig.h"
-#include "file.h"
-#include "search.h"
-#include "start_real.h"
-#include "linguistics.h"
-#include "navit_nls.h"
-#include "atom.h"
-#include "command.h"
-#include "geom.h"
-#ifdef HAVE_API_WIN32_CE
-#include <windows.h>
-#include <winbase.h>
-#endif
-
-char *version=PACKAGE_VERSION"+git:"GIT_VERSION""NAVIT_VARIANT;
-int main_argc;
-char * const* main_argv;
-
-static void
-print_usage(void)
-{
- printf("%s",_("navit usage:\n"
- "navit [options] [configfile]\n"
- "\t-c <file>: use <file> as config file, instead of using the default file.\n"
- "\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, 2=info, 3=debug).\n"
- "\tSettings from config file will still take effect where they set a higher level.\n"
- "\t-h: print this usage info and exit.\n"
- "\t-v: print the version and exit.\n"));
-}
-
-
-#ifndef USE_PLUGINS
-extern void builtin_init(void);
-#endif /* USE_PLUGINS*/
-
-int main_real(int argc, char * const* argv)
-{
- xmlerror *error = NULL;
- char *config_file = NULL, *command=NULL, *startup_file=NULL;
- int opt;
- char *cp;
- struct attr navit, conf;
-
- GList *list = NULL, *li;
- main_argc=argc;
- main_argv=argv;
-
-#ifdef HAVE_GLIB
- event_glib_init();
-#else
- _g_slice_thread_init_nomessage();
-#endif
- atom_init();
- main_init(argv[0]);
- navit_nls_main_init();
- debug_init(argv[0]);
-
- cp = getenv("NAVIT_LOGFILE");
- if (cp) {
- debug_set_logfile(cp);
- }
-#ifdef HAVE_API_WIN32_CE
- else {
- debug_set_logfile("/Storage Card/navit.log");
- }
-#endif
- file_init();
-#ifndef USE_PLUGINS
- builtin_init();
-#endif
- route_init();
- navigation_init();
- tracking_init();
- search_init();
- linguistics_init();
- geom_init();
- config_file=NULL;
-#ifdef HAVE_GETOPT_H
- opterr=0; //don't bomb out on errors.
-#endif /* _MSC_VER */
- /* ingore iphone command line argument */
- if (argc == 2 && !strcmp(argv[1],"-RegisterForSystemEvents"))
- argc=1;
- if (argc > 1) {
- /* Don't forget to update the manpage if you modify theses options */
- while((opt = getopt(argc, argv, ":hvc:d:e:s:")) != -1) {
- switch(opt) {
- case 'h':
- print_usage();
- exit(0);
- break;
- case 'v':
- printf("%s %s\n", "navit", version);
- exit(0);
- break;
- case 'c':
- printf("config file n is set to `%s'\n", optarg);
- config_file = optarg;
- break;
- case 'd':
- debug_set_global_level(atoi(optarg), 1);
- break;
- case 'e':
- command=optarg;
- break;
- case 's':
- startup_file=optarg;
- break;
-#ifdef HAVE_GETOPT_H
- case ':':
- fprintf(stderr, "navit: Error - Option `%c' needs a value\n", optopt);
- print_usage();
- exit(2);
- break;
- case '?':
- fprintf(stderr, "navit: Error - No such option: `%c'\n", optopt);
- print_usage();
- exit(3);
-#endif
- }
- }
- // use 1st cmd line option that is left for the config file
- if (optind < argc) config_file = argv[optind];
- }
-
- // if config file is explicitely given only look for it, otherwise try std paths
- if (config_file) {
- list = g_list_append(list,g_strdup(config_file));
- } else {
- list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_USER_DATADIR"), "/navit.xml" , NULL));
- list = g_list_append(list,g_strdup("navit.xml.local"));
- list = g_list_append(list,g_strdup("navit.xml"));
- list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml.local" , NULL));
- list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml" , NULL));
-#ifndef _WIN32
- list = g_list_append(list,g_strdup("/etc/navit/navit.xml"));
-#endif
- }
- li = list;
- for (;;) {
- if (li == NULL) {
- // We have not found an existing config file from all possibilities
- dbg(lvl_error, "%s", _("No config file navit.xml, navit.xml.local found\n"));
- return 4;
- }
- // Try the next config file possibility from the list
- config_file = li->data;
- dbg(lvl_debug,"trying %s\n",config_file);
- if (file_exists(config_file)) {
- break;
- }
- g_free(config_file);
- li = g_list_next(li);
- }
-
- dbg(lvl_debug,"Loading %s\n",config_file);
- if (!config_load(config_file, &error)) {
- dbg(lvl_error, _("Error parsing config file '%s': %s\n"), config_file, error ? error->message : "");
- } else {
- dbg(lvl_info, _("Using config file '%s'\n"), config_file);
- }
- if (! config) {
- dbg(lvl_error, _("Error: No configuration found in config file '%s'\n"), config_file);
- }
- while (li) {
- g_free(li->data);
- li = g_list_next(li);
- }
- g_list_free(list);
- if (! (config && config_get_attr(config, attr_navit, &navit, NULL))) {
- dbg(lvl_error, "%s", _("Internal initialization failed, exiting. Check previous error messages.\n"));
- exit(5);
- }
- conf.type=attr_config;
- conf.u.config=config;
- if (startup_file) {
- FILE *f = fopen(startup_file,"r");
- if (f) {
- char buffer[4096];
- int fclose_ret;
- while(fgets(buffer, sizeof(buffer), f)) {
- command_evaluate(&conf, buffer);
- }
- fclose_ret = fclose(f);
- if (fclose_ret != 0) {
- dbg(lvl_error, "Could not close the specified startup file: %s\n", startup_file);
- }
- } else {
- dbg(lvl_error, "Could not open the specified startup file: %s", startup_file);
- }
- }
- if (command) {
- command_evaluate(&conf, command);
- }
- event_main_loop_run();
-
- /* TODO: Android actually has no event loop, so we can't free all allocated resources here. Have to find better place to
- * free all allocations on program exit. And don't forget to free all the stuff allocated in the code above.
- */
-#ifndef HAVE_API_ANDROID
- linguistics_free();
- debug_finished();
-#endif
- return 0;
-}
diff --git a/navit/start_real.h b/navit/start_real.h
deleted file mode 100644
index 898251433..000000000
--- a/navit/start_real.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2009 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.
- */
-
-#ifndef NAVIT_MAIN_REAL_H
-#define NAVIT_MAIN_REAL_H
-
-int main_real(int argc, char * const* argv);
-
-#endif
diff --git a/navit/startonce.sh b/navit/startonce.sh
deleted file mode 100755
index d0bfafdcc..000000000
--- a/navit/startonce.sh
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/sh
-
-# This script is part of navit, a navigation system.
-# It can be used to make sure that navit is only started
-# once. If navit is already running it will be brought to
-# the front.
-
-# Set this to a place where a pidfile should be stored.
-# Make sure you have write access...
-PIDFILE="/var/run/navit/navit.pid"
-
-# Set this to navit's executable.
-NAVIT="./navit"
-
-# Optional: Set this to an alternative configuration file
-#CONFIG="./navit.xml"
-
-############################################################
-### You should not need to edit anything below this line ###
-############################################################
-
-function check_wmctrl()
-{
- which wmctrl > /dev/null
-
- if [ $? -ne 0 ] ; then
- echo "I need the 'wmctrl' program. Exit."
- exit 1
- fi
-}
-
-function start_navit()
-{
- if [ "x" != "x$CONFIG" ] ; then
- $NAVIT -c $CONFIG &
- else
- $NAVIT &
- fi
-
- pid=$!
-
- echo -n "$pid" > $PIDFILE
-
- if [ $? -eq 0 ] ; then
- echo "Started navit with PID $pid."
- else
- kill $pid
- echo "Could not create pidfile!"
- exit 1
- fi
-
- # Waiting for navit to close...
- wait $pid
-
- rm $PIDFILE
-}
-
-function check_navit()
-{
- if [ -f $PIDFILE ] ; then
- pid=`cat $PIDFILE`
- kill -0 $pid 2>/dev/null
- if [ $? -eq 0 ] ; then
- echo "Bringing Navit to front"
-
- winid=`wmctrl -l -p | grep -e "^[^:blank:]*[:blank:]*[^:blank:]*[:blank:]*$pid[:blank:]*" | sed 's/ .*//'`
- wmctrl -i -R $winid
-
- exit 0
- fi
- fi
-}
-
-
-### Start of the main script ###
-
-check_wmctrl
-
-check_navit
-
-start_navit
diff --git a/navit/sunriset.c b/navit/sunriset.c
deleted file mode 100644
index 122d14b32..000000000
--- a/navit/sunriset.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
-
-SUNRISET.C - computes Sun rise/set times, start/end of twilight, and
- the length of the day at any date and latitude
-
-Written as DAYLEN.C, 1989-08-16
-
-Modified to SUNRISET.C, 1992-12-01
-
-(c) Paul Schlyter, 1989, 1992
-
-Released to the public domain by Paul Schlyter, December 1992
-
-*/
-
-
-#include <stdio.h>
-#include <math.h>
-
-#include "sunriset.h"
-
-/* The "workhorse" function for sun rise/set times */
-
-int __sunriset__( int year, int month, int day, double lon, double lat,
- double altit, int upper_limb, double *trise, double *tset )
-/***************************************************************************/
-/* Note: year,month,date = calendar date, 1801-2099 only. */
-/* Eastern longitude positive, Western longitude negative */
-/* Northern latitude positive, Southern latitude negative */
-/* The longitude value IS critical in this function! */
-/* altit = the altitude which the Sun should cross */
-/* Set to -35/60 degrees for rise/set, -6 degrees */
-/* for civil, -12 degrees for nautical and -18 */
-/* degrees for astronomical twilight. */
-/* upper_limb: non-zero -> upper limb, zero -> center */
-/* Set to non-zero (e.g. 1) when computing rise/set */
-/* times, and to zero when computing start/end of */
-/* twilight. */
-/* *rise = where to store the rise time */
-/* *set = where to store the set time */
-/* Both times are relative to the specified altitude, */
-/* and thus this function can be used to comupte */
-/* various twilight times, as well as rise/set times */
-/* Return value: 0 = sun rises/sets this day, times stored at */
-/* *trise and *tset. */
-/* +1 = sun above the specified "horizon" 24 hours. */
-/* *trise set to time when the sun is at south, */
-/* minus 12 hours while *tset is set to the south */
-/* time plus 12 hours. "Day" length = 24 hours */
-/* -1 = sun is below the specified "horizon" 24 hours */
-/* "Day" length = 0 hours, *trise and *tset are */
-/* both set to the time when the sun is at south. */
-/* */
-/**********************************************************************/
-{
- double d, /* Days since 2000 Jan 0.0 (negative before) */
- sr, /* Solar distance, astronomical units */
- sRA, /* Sun's Right Ascension */
- sdec, /* Sun's declination */
- sradius, /* Sun's apparent radius */
- t, /* Diurnal arc */
- tsouth, /* Time when Sun is at south */
- sidtime; /* Local sidereal time */
-
- int rc = 0; /* Return cde from function - usually 0 */
-
- /* Compute d of 12h local mean solar time */
- d = days_since_2000_Jan_0(year,month,day) + 0.5 - lon/360.0;
-
- /* Compute local sideral time of this moment */
- sidtime = revolution( GMST0(d) + 180.0 + lon );
-
- /* Compute Sun's RA + Decl at this moment */
- sun_RA_dec( d, &sRA, &sdec, &sr );
-
- /* Compute time when Sun is at south - in hours UT */
- tsouth = 12.0 - rev180(sidtime - sRA)/15.0;
-
- /* Compute the Sun's apparent radius, degrees */
- sradius = 0.2666 / sr;
-
- /* Do correction to upper limb, if necessary */
- if ( upper_limb )
- altit -= sradius;
-
- /* Compute the diurnal arc that the Sun traverses to reach */
- /* the specified altitide altit: */
- {
- double cost;
- cost = ( sind(altit) - sind(lat) * sind(sdec) ) /
- ( cosd(lat) * cosd(sdec) );
- if ( cost >= 1.0 )
- rc = -1, t = 0.0; /* Sun always below altit */
- else if ( cost <= -1.0 )
- rc = +1, t = 12.0; /* Sun always above altit */
- else
- t = acosd(cost)/15.0; /* The diurnal arc, hours */
- }
-
- /* Store rise and set times - in hours UT */
- *trise = tsouth - t;
- *tset = tsouth + t;
-
- return rc;
-} /* __sunriset__ */
-
-
-
-/* The "workhorse" function */
-
-
-double __daylen__( int year, int month, int day, double lon, double lat,
- double altit, int upper_limb )
-/**********************************************************************/
-/* Note: year,month,date = calendar date, 1801-2099 only. */
-/* Eastern longitude positive, Western longitude negative */
-/* Northern latitude positive, Southern latitude negative */
-/* The longitude value is not critical. Set it to the correct */
-/* longitude if you're picky, otherwise set to to, say, 0.0 */
-/* The latitude however IS critical - be sure to get it correct */
-/* altit = the altitude which the Sun should cross */
-/* Set to -35/60 degrees for rise/set, -6 degrees */
-/* for civil, -12 degrees for nautical and -18 */
-/* degrees for astronomical twilight. */
-/* upper_limb: non-zero -> upper limb, zero -> center */
-/* Set to non-zero (e.g. 1) when computing day length */
-/* and to zero when computing day+twilight length. */
-/**********************************************************************/
-{
- double d, /* Days since 2000 Jan 0.0 (negative before) */
- obl_ecl, /* Obliquity (inclination) of Earth's axis */
- sr, /* Solar distance, astronomical units */
- slon, /* True solar longitude */
- sin_sdecl, /* Sine of Sun's declination */
- cos_sdecl, /* Cosine of Sun's declination */
- sradius, /* Sun's apparent radius */
- t; /* Diurnal arc */
-
- /* Compute d of 12h local mean solar time */
- d = days_since_2000_Jan_0(year,month,day) + 0.5 - lon/360.0;
-
- /* Compute obliquity of ecliptic (inclination of Earth's axis) */
- obl_ecl = 23.4393 - 3.563E-7 * d;
-
- /* Compute Sun's position */
- sunpos( d, &slon, &sr );
-
- /* Compute sine and cosine of Sun's declination */
- sin_sdecl = sind(obl_ecl) * sind(slon);
- cos_sdecl = sqrt( 1.0 - sin_sdecl * sin_sdecl );
-
- /* Compute the Sun's apparent radius, degrees */
- sradius = 0.2666 / sr;
-
- /* Do correction to upper limb, if necessary */
- if ( upper_limb )
- altit -= sradius;
-
- /* Compute the diurnal arc that the Sun traverses to reach */
- /* the specified altitide altit: */
- {
- double cost;
- cost = ( sind(altit) - sind(lat) * sin_sdecl ) /
- ( cosd(lat) * cos_sdecl );
- if ( cost >= 1.0 )
- t = 0.0; /* Sun always below altit */
- else if ( cost <= -1.0 )
- t = 24.0; /* Sun always above altit */
- else t = (2.0/15.0) * acosd(cost); /* The diurnal arc, hours */
- }
- return t;
-} /* __daylen__ */
-
-
-/* This function computes the Sun's position at any instant */
-
-void sunpos( double d, double *lon, double *r )
-/******************************************************/
-/* Computes the Sun's ecliptic longitude and distance */
-/* at an instant given in d, number of days since */
-/* 2000 Jan 0.0. The Sun's ecliptic latitude is not */
-/* computed, since it's always very near 0. */
-/******************************************************/
-{
- double M, /* Mean anomaly of the Sun */
- w, /* Mean longitude of perihelion */
- /* Note: Sun's mean longitude = M + w */
- e, /* Eccentricity of Earth's orbit */
- E, /* Eccentric anomaly */
- x, y, /* x, y coordinates in orbit */
- v; /* True anomaly */
-
- /* Compute mean elements */
- M = revolution( 356.0470 + 0.9856002585 * d );
- w = 282.9404 + 4.70935E-5 * d;
- e = 0.016709 - 1.151E-9 * d;
-
- /* Compute true longitude and radius vector */
- E = M + e * RADEG * sind(M) * ( 1.0 + e * cosd(M) );
- x = cosd(E) - e;
- y = sqrt( 1.0 - e*e ) * sind(E);
- *r = sqrt( x*x + y*y ); /* Solar distance */
- v = atan2d( y, x ); /* True anomaly */
- *lon = v + w; /* True solar longitude */
- if ( *lon >= 360.0 )
- *lon -= 360.0; /* Make it 0..360 degrees */
-}
-
-void sun_RA_dec( double d, double *RA, double *dec, double *r )
-{
- double lon, obl_ecl;
- double xs, ys;
- double xe, ye, ze;
-
- /* Compute Sun's ecliptical coordinates */
- sunpos( d, &lon, r );
-
- /* Compute ecliptic rectangular coordinates */
- xs = *r * cosd(lon);
- ys = *r * sind(lon);
- /* No zs, because the Sun is always in the ecliptic plane! */
-
- /* Compute obliquity of ecliptic (inclination of Earth's axis) */
- obl_ecl = 23.4393 - 3.563E-7 * d;
-
- /* Convert to equatorial rectangular coordinates - x is unchanged */
- xe = xs;
- ye = ys * cosd(obl_ecl);
- ze = ys * sind(obl_ecl);
-
- /* Convert to spherical coordinates */
- *RA = atan2d( ye, xe );
- *dec = atan2d( ze, sqrt(xe*xe + ye*ye) );
-
-} /* sun_RA_dec */
-
-
-/******************************************************************/
-/* This function reduces any angle to within the first revolution */
-/* by subtracting or adding even multiples of 360.0 until the */
-/* result is >= 0.0 and < 360.0 */
-/******************************************************************/
-
-#define INV360 ( 1.0 / 360.0 )
-
-double revolution( double x )
-/*****************************************/
-/* Reduce angle to within 0..360 degrees */
-/*****************************************/
-{
- return( x - 360.0 * floor( x * INV360 ) );
-} /* revolution */
-
-double rev180( double x )
-/*********************************************/
-/* Reduce angle to within -180..+180 degrees */
-/*********************************************/
-{
- return( x - 360.0 * floor( x * INV360 + 0.5 ) );
-} /* revolution */
-
-
-/*******************************************************************/
-/* This function computes GMST0, the Greenwhich Mean Sidereal Time */
-/* at 0h UT (i.e. the sidereal time at the Greenwhich meridian at */
-/* 0h UT). GMST is then the sidereal time at Greenwich at any */
-/* time of the day. I've generelized GMST0 as well, and define it */
-/* as: GMST0 = GMST - UT -- this allows GMST0 to be computed at */
-/* other times than 0h UT as well. While this sounds somewhat */
-/* contradictory, it is very practical: instead of computing */
-/* GMST like: */
-/* */
-/* GMST = (GMST0) + UT * (366.2422/365.2422) */
-/* */
-/* where (GMST0) is the GMST last time UT was 0 hours, one simply */
-/* computes: */
-/* */
-/* GMST = GMST0 + UT */
-/* */
-/* where GMST0 is the GMST "at 0h UT" but at the current moment! */
-/* Defined in this way, GMST0 will increase with about 4 min a */
-/* day. It also happens that GMST0 (in degrees, 1 hr = 15 degr) */
-/* is equal to the Sun's mean longitude plus/minus 180 degrees! */
-/* (if we neglect aberration, which amounts to 20 seconds of arc */
-/* or 1.33 seconds of time) */
-/* */
-/*******************************************************************/
-
-double GMST0( double d )
-{
- double sidtim0;
- /* Sidtime at 0h UT = L (Sun's mean longitude) + 180.0 degr */
- /* L = M + w, as defined in sunpos(). Since I'm too lazy to */
- /* add these numbers, I'll let the C compiler do it for me. */
- /* Any decent C compiler will add the constants at compile */
- /* time, imposing no runtime or code overhead. */
- sidtim0 = revolution( ( 180.0 + 356.0470 + 282.9404 ) +
- ( 0.9856002585 + 4.70935E-5 ) * d );
- return sidtim0;
-} /* GMST0 */
diff --git a/navit/sunriset.h b/navit/sunriset.h
deleted file mode 100644
index 36a770935..000000000
--- a/navit/sunriset.h
+++ /dev/null
@@ -1,117 +0,0 @@
-extern const char* timezone_name;
-extern long int timezone_offset;
-
-#define TMOD(x) ((x)<0?(x)+24:((x)>=24?(x)-24:(x)))
-#define DAYSOFF(x) ((x)<0?"(-1) ":((x)>=24?"(+1) ":""))
-
-#define HOURS(h) ((int)(floor(h)))
-#define MINUTES(h) ((int)(60*(h-floor(h))))
-
-#ifndef ABS
-#define ABS(x) ((x)<0?-(x):(x))
-#endif
-
-/* A macro to compute the number of days elapsed since 2000 Jan 0.0 */
-/* (which is equal to 1999 Dec 31, 0h UT) */
-/* Dan R sez: This is some pretty fucking high magic. */
-#define days_since_2000_Jan_0(y,m,d) \
- (367L*(y)-((7*((y)+(((m)+9)/12)))/4)+((275*(m))/9)+(d)-730530L)
-
-/* Some conversion factors between radians and degrees */
-
-#ifndef PI
- #define PI 3.1415926535897932384
-#endif
-
-#define RADEG ( 180.0 / PI )
-#define DEGRAD ( PI / 180.0 )
-
-/* The trigonometric functions in degrees */
-
-#define sind(x) sin((x)*DEGRAD)
-#define cosd(x) cos((x)*DEGRAD)
-#define tand(x) tan((x)*DEGRAD)
-
-#define atand(x) (RADEG*atan(x))
-#define asind(x) (RADEG*asin(x))
-#define acosd(x) (RADEG*acos(x))
-#define atan2d(y,x) (RADEG*atan2(y,x))
-
-/* Following are some macros around the "workhorse" function __daylen__ */
-/* They mainly fill in the desired values for the reference altitude */
-/* below the horizon, and also selects whether this altitude should */
-/* refer to the Sun's center or its upper limb. */
-
-
-/* This macro computes the length of the day, from sunrise to sunset. */
-/* Sunrise/set is considered to occur when the Sun's upper limb is */
-/* 50 arc minutes below the horizon (this accounts for the refraction */
-/* of the Earth's atmosphere). */
-/* The original version of the program used the value of 35 arc mins, */
-/* which is the accepted value in Sweden. */
-#define day_length(year,month,day,lon,lat) \
- __daylen__( year, month, day, lon, lat, -50.0/60.0, 1 )
-
-/* This macro computes the length of the day, including civil twilight. */
-/* Civil twilight starts/ends when the Sun's center is 6 degrees below */
-/* the horizon. */
-#define day_civil_twilight_length(year,month,day,lon,lat) \
- __daylen__( year, month, day, lon, lat, -6.0, 0 )
-
-/* This macro computes the length of the day, incl. nautical twilight. */
-/* Nautical twilight starts/ends when the Sun's center is 12 degrees */
-/* below the horizon. */
-#define day_nautical_twilight_length(year,month,day,lon,lat) \
- __daylen__( year, month, day, lon, lat, -12.0, 0 )
-
-/* This macro computes the length of the day, incl. astronomical twilight. */
-/* Astronomical twilight starts/ends when the Sun's center is 18 degrees */
-/* below the horizon. */
-#define day_astronomical_twilight_length(year,month,day,lon,lat) \
- __daylen__( year, month, day, lon, lat, -18.0, 0 )
-
-
-/* This macro computes times for sunrise/sunset. */
-/* Sunrise/set is considered to occur when the Sun's upper limb is */
-/* 35 arc minutes below the horizon (this accounts for the refraction */
-/* of the Earth's atmosphere). */
-#define sun_rise_set(year,month,day,lon,lat,rise,set) \
- __sunriset__( year, month, day, lon, lat, -35.0/60.0, 1, rise, set )
-
-/* This macro computes the start and end times of civil twilight. */
-/* Civil twilight starts/ends when the Sun's center is 6 degrees below */
-/* the horizon. */
-#define civil_twilight(year,month,day,lon,lat,start,end) \
- __sunriset__( year, month, day, lon, lat, -6.0, 0, start, end )
-
-/* This macro computes the start and end times of nautical twilight. */
-/* Nautical twilight starts/ends when the Sun's center is 12 degrees */
-/* below the horizon. */
-#define nautical_twilight(year,month,day,lon,lat,start,end) \
- __sunriset__( year, month, day, lon, lat, -12.0, 0, start, end )
-
-/* This macro computes the start and end times of astronomical twilight. */
-/* Astronomical twilight starts/ends when the Sun's center is 18 degrees */
-/* below the horizon. */
-#define astronomical_twilight(year,month,day,lon,lat,start,end) \
- __sunriset__( year, month, day, lon, lat, -18.0, 0, start, end )
-
-
-/* Function prototypes */
-
-double __daylen__( int year, int month, int day, double lon, double lat,
- double altit, int upper_limb );
-
-int __sunriset__( int year, int month, int day, double lon, double lat,
- double altit, int upper_limb, double *rise, double *set );
-
-void sunpos( double d, double *lon, double *r );
-
-void sun_RA_dec( double d, double *RA, double *dec, double *r );
-
-double revolution( double x );
-
-double rev180( double x );
-
-double GMST0( double d );
-
diff --git a/navit/support/espeak/CMakeLists.txt b/navit/support/espeak/CMakeLists.txt
deleted file mode 100644
index 6a20511e7..000000000
--- a/navit/support/espeak/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-
-if(INTERNAL_ESPEAK_COMPLETE)
- set(ESPEAK_LIBRARY_ADDITIONAL speak_lib.c)
-endif()
-supportlib_add_library(support_espeak 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 ${ESPEAK_LIBRARY_ADDITIONAL})
-
-install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/espeak-data DESTINATION ${SHARE_DIR} PATTERN ".svn" EXCLUDE)
diff --git a/navit/support/espeak/StdAfx.h b/navit/support/espeak/StdAfx.h
deleted file mode 100644
index c9a526fdf..000000000
--- a/navit/support/espeak/StdAfx.h
+++ /dev/null
@@ -1,3 +0,0 @@
-// This is a dummy file.
-// A file of this name is needed on Windows
-
diff --git a/navit/support/espeak/compiledict.c b/navit/support/espeak/compiledict.c
deleted file mode 100755
index a2b7865f9..000000000
--- a/navit/support/espeak/compiledict.c
+++ /dev/null
@@ -1,1671 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <wctype.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "translate.h"
-
-//#define OPT_FORMAT // format the text and write formatted copy to Log file
-//#define OUTPUT_FORMAT
-
-extern void Write4Bytes(FILE *f, int value);
-int HashDictionary(const char *string);
-
-static FILE *f_log = NULL;
-extern char *dir_dictionary;
-
-static int linenum;
-static int error_count;
-static int transpose_offset; // transpose character range for LookupDictList()
-static int transpose_min;
-static int transpose_max;
-static int text_mode = 0;
-static int debug_flag = 0;
-
-static int hash_counts[N_HASH_DICT];
-static char *hash_chains[N_HASH_DICT];
-static char letterGroupsDefined[N_LETTER_GROUPS];
-
-#define __cdecl
-
-MNEM_TAB mnem_flags[] = {
- // these in the first group put a value in bits0-3 of dictionary_flags
- {"$1", 0x41}, // stress on 1st syllable
- {"$2", 0x42}, // stress on 2nd syllable
- {"$3", 0x43},
- {"$4", 0x44},
- {"$5", 0x45},
- {"$6", 0x46},
- {"$7", 0x47},
- {"$u", 0x48}, // reduce to unstressed
- {"$u1", 0x49},
- {"$u2", 0x4a},
- {"$u3", 0x4b},
- {"$u+", 0x4c}, // reduce to unstressed, but stress at end of clause
- {"$u1+", 0x4d},
- {"$u2+", 0x4e},
- {"$u3+", 0x4f},
-
-
- // these set the corresponding numbered bit if dictionary_flags
- {"$pause", 8}, /* ensure pause before this word */
- {"$only", 9}, /* only match on this word without suffix */
- {"$onlys", 10}, /* only match with none, or with 's' suffix */
- {"$strend", 11}, /* full stress if at end of clause */
- {"$strend2", 12}, /* full stress if at end of clause, or only followed by unstressed */
- {"$unstressend",13}, /* reduce stress at end of clause */
- {"$atend", 14}, /* use this pronunciation if at end of clause */
-
- {"$dot", 16}, /* ignore '.' after this word (abbreviation) */
- {"$abbrev", 17}, /* use this pronuciation rather than split into letters */
- {"$stem", 18}, // must have a suffix
-
-// language specific
- {"$double", 19}, // IT double the initial consonant of next word
- {"$alt", 20}, // use alternative pronunciation
- {"$alt2", 21},
-
-
- {"$max3", 27}, // limit to 3 repetitions
- {"$brk", 28}, // a shorter $pause
- {"$text", 29}, // word translates to replcement text, not phonemes
-
-// flags in dictionary word 2
- {"$verbf", 0x20}, /* verb follows */
- {"$verbsf", 0x21}, /* verb follows, allow -s suffix */
- {"$nounf", 0x22}, /* noun follows */
- {"$pastf", 0x23}, /* past tense follows */
- {"$verb", 0x24}, /* use this pronunciation when its a verb */
- {"$noun", 0x25}, /* use this pronunciation when its a noun */
- {"$past", 0x26}, /* use this pronunciation when its past tense */
- {"$verbextend",0x28}, /* extend influence of 'verb follows' */
- {"$capital", 0x29}, /* use this pronunciation if initial letter is upper case */
- {"$allcaps", 0x2a}, /* use this pronunciation if initial letter is upper case */
- {"$accent", 0x2b}, // character name is base-character name + accent name
-
- // doesn't set dictionary_flags
- {"$?", 100}, // conditional rule, followed by byte giving the condition number
-
- {"$textmode", 200},
- {"$phonememode", 201},
- {NULL, -1}
-};
-
-
-#define LEN_GROUP_NAME 12
-
-typedef struct {
- char name[LEN_GROUP_NAME+1];
- unsigned int start;
- unsigned int length;
-} RGROUP;
-
-
-int isspace2(unsigned int c)
-{//=========================
-// can't use isspace() because on Windows, isspace(0xe1) gives TRUE !
- int c2;
-
- if(((c2 = (c & 0xff)) == 0) || (c > ' '))
- return(0);
- return(1);
-}
-
-
-static const char *LookupMnem2(MNEM_TAB *table, int value)
-{//=======================================================
- while(table->mnem != NULL)
- {
- if(table->value == value)
- return(table->mnem);
- table++;
- }
- return("");
-}
-
-
-char *print_dictionary_flags(unsigned int *flags)
-{//==============================================
- static char buf[20];
-
- sprintf(buf,"%s 0x%x/%x",LookupMnem2(mnem_flags,(flags[0] & 0xf)+0x40), flags[0], flags[1]);
- return(buf);
-}
-
-
-
-static FILE *fopen_log(const char *fname,const char *access)
-{//==================================================
-// performs fopen, but produces error message to f_log if it fails
- FILE *f;
-
- if((f = fopen(fname,access)) == NULL)
- {
- if(f_log != NULL)
- fprintf(f_log,"Can't access (%s) file '%s'\n",access,fname);
- }
- return(f);
-}
-
-
-#ifdef OPT_FORMAT
-static const char *lookup_mnem(MNEM_TAB *table, int value)
-//========================================================
-/* Lookup a mnemonic string in a table, return its name */
-{
- while(table->mnem != NULL)
- {
- if(table->value==value)
- return(table->mnem);
- table++;
- }
- return("??"); /* not found */
-} /* end of mnem */
-#endif
-
-
-
-
-static int compile_line(char *linebuf, char *dict_line, int *hash)
-{//===============================================================
-// Compile a line in the language_list file
- unsigned char c;
- char *p;
- char *word;
- char *phonetic;
- unsigned int ix;
- int step;
- unsigned int n_flag_codes = 0;
- int flag_offset;
- int length;
- int multiple_words = 0;
- int multiple_numeric_hyphen = 0;
- char *multiple_string = NULL;
- char *multiple_string_end = NULL;
-
- int len_word;
- int len_phonetic;
- int text_not_phonemes; // this word specifies replacement text, not phonemes
- unsigned int wc;
- int all_upper_case;
-
- char *mnemptr;
- char *comment;
- unsigned char flag_codes[100];
- char encoded_ph[200];
- unsigned char bad_phoneme[4];
-static char nullstring[] = {0};
-
- comment = NULL;
- text_not_phonemes = 0;
- phonetic = word = nullstring;
-
-if(memcmp(linebuf,"_-",2)==0)
-{
-step=1; // TEST
-}
- p = linebuf;
-// while(isspace2(*p)) p++;
-
-#ifdef deleted
- if(*p == '$')
- {
- if(memcmp(p,"$textmode",9) == 0)
- {
- text_mode = 1;
- return(0);
- }
- if(memcmp(p,"$phonememode",12) == 0)
- {
- text_mode = 0;
- return(0);
- }
- }
-#endif
-
- step = 0;
-
- c = 0;
- while(c != '\n')
- {
- c = *p;
-
- if((c == '?') && (step==0))
- {
- // conditional rule, allow only if the numbered condition is set for the voice
- flag_offset = 100;
-
- p++;
- if(*p == '!')
- {
- // allow only if the numbered condition is NOT set
- flag_offset = 132;
- p++;
- }
-
- ix = 0;
- if(isdigit(*p))
- {
- ix += (*p-'0');
- p++;
- }
- if(isdigit(*p))
- {
- ix = ix*10 + (*p-'0');
- p++;
- }
- flag_codes[n_flag_codes++] = ix + flag_offset;
- c = *p;
- }
-
- if((c == '$') && isalnum(p[1]))
- {
- /* read keyword parameter */
- mnemptr = p;
- while(!isspace2(c = *p)) p++;
- *p = 0;
-
- ix = LookupMnem(mnem_flags,mnemptr);
- if(ix > 0)
- {
- if(ix == 200)
- {
- text_mode = 1;
- }
- else
- if(ix == 201)
- {
- text_mode = 0;
- }
- else
- if(ix == BITNUM_FLAG_TEXTMODE)
- {
- text_not_phonemes = 1;
- }
- else
- {
- flag_codes[n_flag_codes++] = ix;
- }
- }
- else
- {
- fprintf(f_log,"%5d: Unknown keyword: %s\n",linenum,mnemptr);
- error_count++;
- }
- }
-
- if((c == '/') && (p[1] == '/') && (multiple_words==0))
- {
- c = '\n'; /* "//" treat comment as end of line */
- comment = p;
- }
-
- switch(step)
- {
- case 0:
- if(c == '(')
- {
- multiple_words = 1;
- word = p+1;
- step = 1;
- }
- else
- if(!isspace2(c))
- {
- word = p;
- step = 1;
- }
- break;
-
- case 1:
- if((c == '-') && (word[0] != '_'))
- {
- if(isdigit(word[0]))
- {
- multiple_numeric_hyphen = 1;
- }
- else
- {
- flag_codes[n_flag_codes++] = BITNUM_FLAG_HYPHENATED;
- }
- c = ' ';
- }
- if(isspace2(c))
- {
- p[0] = 0; /* terminate english word */
-
- if(multiple_words)
- {
- multiple_string = multiple_string_end = p+1;
- step = 2;
- }
- else
- {
- step = 3;
- }
- }
- else
- if((c == ')') && multiple_words)
- {
- p[0] = 0;
- step = 3;
- multiple_words = 0;
- }
- break;
-
- case 2:
- if(isspace2(c))
- {
- multiple_words++;
- }
- else
- if(c == ')')
- {
- p[0] = ' '; // terminate extra string
- multiple_string_end = p+1;
- step = 3;
- }
- break;
-
- case 3:
- if(!isspace2(c))
- {
- phonetic = p;
- step = 4;
- }
- break;
-
- case 4:
- if(isspace2(c))
- {
- p[0] = 0; /* terminate phonetic */
- step = 5;
- }
- break;
-
- case 5:
- break;
- }
- p++;
- }
-
- if(word[0] == 0)
- {
-#ifdef OPT_FORMAT
- if(comment != NULL)
- fprintf(f_log,"%s",comment);
- else
- fputc('\n',f_log);
-#endif
- return(0); /* blank line */
- }
-
- if(text_mode)
- text_not_phonemes = 1;
-
- if(text_not_phonemes != translator->langopts.textmode)
- {
- flag_codes[n_flag_codes++] = BITNUM_FLAG_TEXTMODE;
- }
-
- if(text_not_phonemes)
- {
- // this is replacement text, so don't encode as phonemes. Restrict the length of the replacement word
- strncpy0(encoded_ph,phonetic,N_WORD_BYTES-4);
- }
- else
- {
- EncodePhonemes(phonetic,encoded_ph,bad_phoneme);
- if(strchr(encoded_ph,phonSWITCH) != 0)
- {
- flag_codes[n_flag_codes++] = BITNUM_FLAG_ONLY_S; // don't match on suffixes (except 's') when switching languages
- }
-
- // check for errors in the phonemes codes
- for(ix=0; ix<sizeof(encoded_ph); ix++)
- {
- c = encoded_ph[ix];
- if(c == 0) break;
-
- if(c == 255)
- {
- /* unrecognised phoneme, report error */
- fprintf(f_log,"%5d: Bad phoneme [%c] (0x%x) in: %s %s\n",linenum,bad_phoneme[0],bad_phoneme[0],word,phonetic);
- error_count++;
- }
- }
- }
-
- if(sscanf(word,"U+%x",&wc) == 1)
- {
- // Character code
- ix = utf8_out(wc, word);
- word[ix] = 0;
- }
- else
- if(word[0] != '_')
- {
- // convert to lower case, and note if the word is all-capitals
- int c2;
-
- all_upper_case = 1;
- p = word;
- for(p=word;;)
- {
- // this assumes that the lower case char is the same length as the upper case char
- // OK, except for Turkish "I", but use towlower() rather than towlower2()
- ix = utf8_in(&c2,p);
- if(c2 == 0)
- break;
- if(iswupper(c2))
- {
- utf8_out(towlower(c2),p);
- }
- else
- {
- all_upper_case = 0;
- }
- p += ix;
- }
- if(all_upper_case)
- {
- flag_codes[n_flag_codes++] = BITNUM_FLAG_ALLCAPS;
- }
- }
-
- len_word = strlen(word);
-
- if(transpose_offset > 0)
- {
- len_word = TransposeAlphabet(word, transpose_offset, transpose_min, transpose_max);
- }
-
- *hash = HashDictionary(word);
- len_phonetic = strlen(encoded_ph);
-
- dict_line[1] = len_word; // bit 6 indicates whether the word has been compressed
- len_word &= 0x3f;
-
- memcpy(&dict_line[2],word,len_word);
-
- if(len_phonetic == 0)
- {
- // no phonemes specified. set bit 7
- dict_line[1] |= 0x80;
- length = len_word + 2;
- }
- else
- {
- length = len_word + len_phonetic + 3;
- strcpy(&dict_line[(len_word)+2],encoded_ph);
- }
-
- for(ix=0; ix<n_flag_codes; ix++)
- {
- dict_line[ix+length] = flag_codes[ix];
- }
- length += n_flag_codes;
-
- if((multiple_string != NULL) && (multiple_words > 0))
- {
- if(multiple_words > 10)
- {
- fprintf(f_log,"%5d: Two many parts in a multi-word entry: %d\n",linenum,multiple_words);
- }
- else
- {
- dict_line[length++] = 80 + multiple_words + multiple_numeric_hyphen; // if numeric, count a hyphen as an extra word
- ix = multiple_string_end - multiple_string;
- if(multiple_numeric_hyphen)
- {
- // the first part is numeric, so keep the hyphen to match on
- dict_line[length++] = '-';
- dict_line[length++] = ' ';
- }
- memcpy(&dict_line[length],multiple_string,ix);
- length += ix;
- }
- }
- dict_line[0] = length;
-
-#ifdef OPT_FORMAT
- spaces = 16;
- for(ix=0; ix<n_flag_codes; ix++)
- {
- if(flag_codes[ix] >= 100)
- {
- fprintf(f_log,"?%d ",flag_codes[ix]-100);
- spaces -= 3;
- }
- }
-
- fprintf(f_log,"%s",word);
- spaces -= strlen(word);
- DecodePhonemes(encoded_ph,decoded_ph);
- while(spaces-- > 0) fputc(' ',f_log);
- spaces += (14 - strlen(decoded_ph));
-
- fprintf(f_log," %s",decoded_ph);
- while(spaces-- > 0) fputc(' ',f_log);
- for(ix=0; ix<n_flag_codes; ix++)
- {
- if(flag_codes[ix] < 100)
- fprintf(f_log," %s",lookup_mnem(mnem_flags,flag_codes[ix]));
- }
- if(comment != NULL)
- fprintf(f_log," %s",comment);
- else
- fputc('\n',f_log);
-#endif
-
- return(length);
-} /* end of compile_line */
-
-
-
-static void compile_dictlist_start(void)
-{//=====================================
-// initialise dictionary list
- int ix;
- char *p;
- char *p2;
-
- for(ix=0; ix<N_HASH_DICT; ix++)
- {
- p = hash_chains[ix];
- while(p != NULL)
- {
- memcpy(&p2,p,sizeof(char *));
- free(p);
- p = p2;
- }
- hash_chains[ix] = NULL;
- hash_counts[ix]=0;
- }
-}
-
-
-static void compile_dictlist_end(FILE *f_out)
-{//==========================================
-// Write out the compiled dictionary list
- int hash;
- int length;
- char *p;
-
- if(f_log != NULL)
- {
-#ifdef OUTPUT_FORMAT
- for(hash=0; hash<N_HASH_DICT; hash++)
- {
- fprintf(f_log,"%8d",hash_counts[hash]);
- if((hash & 7) == 7)
- fputc('\n',f_log);
- }
- fflush(f_log);
-#endif
- }
-
- for(hash=0; hash<N_HASH_DICT; hash++)
- {
- p = hash_chains[hash];
- hash_counts[hash] = (int)ftell(f_out);
-
- while(p != NULL)
- {
- length = *(p+sizeof(char *));
- fwrite(p+sizeof(char *),length,1,f_out);
- memcpy(&p,p,sizeof(char *));
- }
- fputc(0,f_out);
- }
-}
-
-
-
-static int compile_dictlist_file(const char *path, const char* filename)
-{//=====================================================================
- int length;
- int hash;
- char *p;
- int count=0;
- FILE *f_in;
- char buf[200];
- char fname[sizeof(path_home)+45];
- char dict_line[128];
-
- text_mode = 0;
-
- sprintf(fname,"%s%s",path,filename);
- if((f_in = fopen(fname,"r")) == NULL)
- return(-1);
-
- fprintf(f_log,"Compiling: '%s'\n",fname);
-
- linenum=0;
-
- while(fgets(buf,sizeof(buf),f_in) != NULL)
- {
- linenum++;
-
- length = compile_line(buf,dict_line,&hash);
- if(length == 0) continue; /* blank line */
-
- hash_counts[hash]++;
-
- p = (char *)malloc(length+sizeof(char *));
- if(p == NULL)
- {
- if(f_log != NULL)
- {
- fprintf(f_log,"Can't allocate memory\n");
- error_count++;
- }
- break;
- }
-
- memcpy(p,&hash_chains[hash],sizeof(char *));
- hash_chains[hash] = p;
- memcpy(p+sizeof(char *),dict_line,length);
- count++;
- }
-
- fprintf(f_log,"\t%d entries\n",count);
- fclose(f_in);
- return(0);
-} /* end of compile_dictlist_file */
-
-
-
-static char rule_cond[80];
-static char rule_pre[80];
-static char rule_post[80];
-static char rule_match[80];
-static char rule_phonemes[80];
-static char group_name[LEN_GROUP_NAME+1];
-
-#define N_RULES 2000 // max rules for each group
-
-
-
-static void copy_rule_string(char *string, int *state)
-{//===================================================
-// state 0: conditional, 1=pre, 2=match, 3=post, 4=phonemes
- static char *outbuf[5] = {rule_cond, rule_pre, rule_match, rule_post, rule_phonemes};
- static int next_state[5] = {2,2,4,4,4};
- char *output;
- char *p;
- int ix;
- int len;
- char c;
- int sxflags;
- int value;
- int literal;
-
- if(string[0] == 0) return;
-
- output = outbuf[*state];
- if(*state==4)
- {
- // append to any previous phoneme string, i.e. allow spaces in the phoneme string
- len = strlen(rule_phonemes);
- if(len > 0)
- rule_phonemes[len++] = ' ';
- output = &rule_phonemes[len];
- }
- sxflags = 0x808000; // to ensure non-zero bytes
-
- for(p=string,ix=0;;)
- {
- literal = 0;
- c = *p++;
- if(c == '\\')
- {
- c = *p++; // treat next character literally
- if((c >= '0') && (c <= '3') && (p[0] >= '0') && (p[0] <= '7') && (p[1] >= '0') && (p[1] <= '7'))
- {
- // character code given by 3 digit octal value;
- c = (c-'0')*64 + (p[0]-'0')*8 + (p[1]-'0');
- p += 2;
- }
- literal = 1;
- }
-
- if(((*state)==1) || ((*state)==3))
- {
- // replace special characters (note: 'E' is reserved for a replaced silent 'e')
- if(literal == 0)
- {
- static const char lettergp_letters[9] = {LETTERGP_A,LETTERGP_B,LETTERGP_C,0,0,LETTERGP_F,LETTERGP_G,LETTERGP_H,LETTERGP_Y};
- switch(c)
- {
- case '_':
- c = RULE_SPACE;
- break;
-
- case 'Y':
- c = 'I'; // drop through to next case
- case 'A': // vowel
- case 'B':
- case 'C':
- case 'H':
- case 'F':
- case 'G':
- if((*state) == 1)
- {
- // pre-rule, put the number before the RULE_LETTERGP;
- output[ix++] = lettergp_letters[c-'A'] + 'A';
- c = RULE_LETTERGP;
- }
- else
- {
- output[ix++] = RULE_LETTERGP;
- c = lettergp_letters[c-'A'] + 'A';
- }
- break;
- case 'D':
- c = RULE_DIGIT;
- break;
- case 'K':
- c = RULE_NOTVOWEL;
- break;
- case 'N':
- c = RULE_NO_SUFFIX;
- break;
- case 'V':
- c = RULE_IFVERB;
- break;
- case 'Z':
- c = RULE_NONALPHA;
- break;
- case '+':
- c = RULE_INC_SCORE;
- break;
- case '@':
- c = RULE_SYLLABLE;
- break;
- case '&':
- c = RULE_STRESSED;
- break;
- case '%':
- c = RULE_DOUBLE;
- break;
- case '#':
- c = RULE_DEL_FWD;
- break;
- case '!':
- c = RULE_CAPITAL;
- break;
- case 'T':
- c = RULE_ALT1;
- break;
- case 'W':
- c = RULE_SPELLING;
- break;
- case 'X':
- c = RULE_NOVOWELS;
- break;
- case 'L':
- // expect two digits
- c = *p++ - '0';
- value = *p++ - '0';
- c = c * 10 + value;
- if((value < 0) || (value > 9))
- {
- c = 0;
- fprintf(f_log,"%5d: Expected 2 digits after 'L'\n",linenum);
- error_count++;
- }
- else
- if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0))
- {
- fprintf(f_log,"%5d: Letter group L%.2d not defined\n",linenum,c);
- error_count++;
- }
- c += 'A';
- if((*state) == 1)
- {
- // pre-rule, put the group number before the RULE_LETTERGP command
- output[ix++] = c;
- c = RULE_LETTERGP2;
- }
- else
- {
- output[ix++] = RULE_LETTERGP2;
- }
- break;
-
- case '$': // obsolete, replaced by S
- fprintf(f_log,"%5d: $ now not allowed, use S for suffix",linenum);
- error_count++;
- break;
- case 'P':
- sxflags |= SUFX_P; // Prefix, now drop through to Suffix
- case 'S':
- output[ix++] = RULE_ENDING;
- value = 0;
- while(!isspace2(c = *p++) && (c != 0))
- {
- switch(c)
- {
- case 'e':
- sxflags |= SUFX_E;
- break;
- case 'i':
- sxflags |= SUFX_I;
- break;
- case 'p': // obsolete, replaced by 'P' above
- sxflags |= SUFX_P;
- break;
- case 'v':
- sxflags |= SUFX_V;
- break;
- case 'd':
- sxflags |= SUFX_D;
- break;
- case 'f':
- sxflags |= SUFX_F;
- break;
- case 'q':
- sxflags |= SUFX_Q;
- break;
- case 't':
- sxflags |= SUFX_T;
- break;
- case 'b':
- sxflags |= SUFX_B;
- break;
- default:
- if(isdigit(c))
- value = (value*10) + (c - '0');
- break;
- }
- }
- p--;
- output[ix++] = sxflags >> 16;
- output[ix++] = sxflags >> 8;
- c = value | 0x80;
- break;
- }
- }
- }
- output[ix++] = c;
- if(c == 0) break;
- }
-
- *state = next_state[*state];
-} // end of copy_rule_string
-
-
-
-static char *compile_rule(char *input)
-{//===================================
- int ix;
- unsigned char c;
- int wc;
- char *p;
- char *prule;
- int len;
- int len_name;
- int state=2;
- int finish=0;
- int pre_bracket=0;
- char buf[80];
- char output[150];
- unsigned char bad_phoneme[4];
-
- buf[0]=0;
- rule_cond[0]=0;
- rule_pre[0]=0;
- rule_post[0]=0;
- rule_match[0]=0;
- rule_phonemes[0]=0;
-
- p = buf;
-
- for(ix=0; finish==0; ix++)
- {
- c = input[ix];
-
- switch(c = input[ix])
- {
- case ')': // end of prefix section
- *p = 0;
- state = 1;
- pre_bracket = 1;
- copy_rule_string(buf,&state);
- p = buf;
- break;
-
- case '(': // start of suffix section
- *p = 0;
- state = 2;
- copy_rule_string(buf,&state);
- state = 3;
- p = buf;
- break;
-
- case '\n': // end of line
- case '\r':
- case 0: // end of line
- *p = 0;
- copy_rule_string(buf,&state);
- finish=1;
- break;
-
- case '\t': // end of section section
- case ' ':
- *p = 0;
- copy_rule_string(buf,&state);
- p = buf;
- break;
-
- case '?':
- if(state==2)
- state=0;
- else
- *p++ = c;
- break;
-
- default:
- *p++ = c;
- break;
- }
- }
-
- if(strcmp(rule_match,"$group")==0)
- strcpy(rule_match,group_name);
-
- if(rule_match[0]==0)
- return(NULL);
-
- EncodePhonemes(rule_phonemes,buf,bad_phoneme);
- for(ix=0;; ix++)
- {
- if((c = buf[ix])==0) break;
- if(c==255)
- {
- fprintf(f_log,"%5d: Bad phoneme [%c] in %s",linenum,bad_phoneme[0],input);
- error_count++;
- break;
- }
- }
- strcpy(output,buf);
- len = strlen(buf)+1;
-
- len_name = strlen(group_name);
- if((len_name > 0) && (memcmp(rule_match,group_name,len_name) != 0))
- {
- utf8_in(&wc,rule_match);
- if((group_name[0] == '9') && IsDigit(wc))
- {
- // numeric group, rule_match starts with a digit, so OK
- }
- else
- {
- fprintf(f_log,"%5d: Wrong initial letters '%s' for group '%s'\n",linenum,rule_match,group_name);
- error_count++;
- }
- }
- strcpy(&output[len],rule_match);
- len += strlen(rule_match);
-
- if(debug_flag)
- {
- output[len] = RULE_LINENUM;
- output[len+1] = (linenum % 255) + 1;
- output[len+2] = (linenum / 255) + 1;
- len+=3;
- }
-
- if(rule_cond[0] != 0)
- {
- ix = -1;
- if(rule_cond[0] == '!')
- {
- // allow the rule only if the condition number is NOT set for the voice
- ix = atoi(&rule_cond[1]) + 32;
- }
- else
- {
- // allow the rule only if the condition number is set for the voice
- ix = atoi(rule_cond);
- }
-
- if((ix > 0) && (ix < 255))
- {
- output[len++] = RULE_CONDITION;
- output[len++] = ix;
- }
- else
- {
- fprintf(f_log,"%5d: bad condition number ?%d\n",linenum,ix);
- error_count++;
- }
- }
- if(rule_pre[0] != 0)
- {
- output[len++] = RULE_PRE;
- // output PRE string in reverse order
- for(ix = strlen(rule_pre)-1; ix>=0; ix--)
- output[len++] = rule_pre[ix];
- }
-
- if(rule_post[0] != 0)
- {
- sprintf(&output[len],"%c%s",RULE_POST,rule_post);
- len += (strlen(rule_post)+1);
- }
- output[len++]=0;
- prule = (char *)malloc(len);
- memcpy(prule,output,len);
- return(prule);
-} // end of compile_rule
-
-
-static int __cdecl string_sorter(char **a, char **b)
-{//=================================================
- char *pa, *pb;
- int ix;
-
- if((ix = strcmp(pa = *a,pb = *b)) != 0)
- return(ix);
- pa += (strlen(pa)+1);
- pb += (strlen(pb)+1);
- return(strcmp(pa,pb));
-} /* end of string_sorter */
-
-
-static int __cdecl rgroup_sorter(RGROUP *a, RGROUP *b)
-{//===================================================
- int ix;
- ix = strcmp(a->name,b->name);
- if(ix != 0) return(ix);
- return(a->start-b->start);
-}
-
-
-#ifdef OUTPUT_FORMAT
-static void print_rule_group(FILE *f_out, int n_rules, char **rules, char *name)
-{//=============================================================================
- int rule;
- int ix;
- unsigned char c;
- int len1;
- int len2;
- int spaces;
- char *p;
- char *pout;
- int condition;
- char buf[80];
- char suffix[12];
-
- static unsigned char symbols[] = {'@','&','%','+','#','$','D','Z','A','B','C','F'};
-
- fprintf(f_out,"\n$group %s\n",name);
-
- for(rule=0; rule<n_rules; rule++)
- {
- p = rules[rule];
- len1 = strlen(p) + 1;
- p = &p[len1];
- len2 = strlen(p);
-
- rule_match[0]=0;
- rule_pre[0]=0;
- rule_post[0]=0;
- condition = 0;
-
- pout = rule_match;
- for(ix=0; ix<len2; ix++)
- {
- switch(c = p[ix])
- {
- case RULE_PRE:
- *pout = 0;
- pout = rule_pre;
- break;
- case RULE_POST:
- *pout = 0;
- pout = rule_post;
- break;
- case RULE_CONDITION:
- condition = p[++ix];
- break;
- case RULE_ENDING:
- sprintf(suffix,"$%d[%x]",(p[ix+2]),p[ix+1] & 0x7f);
- ix += 2;
- strcpy(pout,suffix);
- pout += strlen(suffix);
- break;
- default:
- if(c <= RULE_LETTER7)
- c = symbols[c-RULE_SYLLABLE];
- if(c == ' ')
- c = '_';
- *pout++ = c;
- break;
- }
- }
- *pout = 0;
-
- spaces = 12;
- if(condition > 0)
- {
- sprintf(buf,"?%d ",condition);
- spaces -= strlen(buf);
- fprintf(f_out,"%s",buf);
- }
-
- if(rule_pre[0] != 0)
- {
- p = buf;
- for(ix=strlen(rule_pre)-1;ix>=0;ix--)
- *p++ = rule_pre[ix];
- sprintf(p,") ");
- spaces -= strlen(buf);
- for(ix=0; ix<spaces; ix++)
- fputc(' ',f_out);
- fprintf(f_out,"%s",buf);
- spaces = 0;
- }
-
- for(ix=0; ix<spaces; ix++)
- fputc(' ',f_out);
-
- spaces = 14;
- sprintf(buf," %s ",rule_match);
- if(rule_post[0] != 0)
- {
- p = &buf[strlen(buf)];
- sprintf(p,"(%s ",rule_post);
- }
- fprintf(f_out,"%s",buf);
- spaces -= strlen(buf);
-
- for(ix=0; ix<spaces; ix++)
- fputc(' ',f_out);
- DecodePhonemes(rules[rule],buf);
- fprintf(f_out,"%s\n",buf); // phonemes
- }
-}
-#endif
-
-
-//#define LIST_GROUP_INFO
-static void output_rule_group(FILE *f_out, int n_rules, char **rules, char *name)
-{//==============================================================================
- int ix;
- int len1;
- int len2;
- int len_name;
- char *p;
- char *p2, *p3;
- const char *common;
-
- short nextchar_count[256];
- memset(nextchar_count,0,sizeof(nextchar_count));
-
- len_name = strlen(name);
-
-#ifdef OUTPUT_FORMAT
- print_rule_group(f_log,n_rules,rules,name);
-#endif
-
- // sort the rules in this group by their phoneme string
- common = "";
- qsort((void *)rules,n_rules,sizeof(char *),(int (__cdecl *)(const void *,const void *))string_sorter);
-
- if(strcmp(name,"9")==0)
- len_name = 0; // don't remove characters from numeric match strings
-
- for(ix=0; ix<n_rules; ix++)
- {
- p = rules[ix];
- len1 = strlen(p) + 1; // phoneme string
- p3 = &p[len1];
- p2 = p3 + len_name; // remove group name from start of match string
- len2 = strlen(p2);
-
- nextchar_count[(unsigned char)(p2[0])]++; // the next byte after the group name
-
- if((common[0] != 0) && (strcmp(p,common)==0))
- {
- fwrite(p2,len2,1,f_out);
- fputc(0,f_out); // no phoneme string, it's the same as previous rule
- }
- else
- {
- if((ix < n_rules-1) && (strcmp(p,rules[ix+1])==0))
- {
- common = rules[ix]; // phoneme string is same as next, set as common
- fputc(RULE_PH_COMMON,f_out);
- }
-
- fwrite(p2,len2,1,f_out);
- fputc(RULE_PHONEMES,f_out);
- fwrite(p,len1,1,f_out);
- }
- }
-
-#ifdef LIST_GROUP_INFO
- for(ix=32; ix<256; ix++)
- {
- if(nextchar_count[ix] > 30)
- printf("Group %s %c %d\n",name,ix,nextchar_count[ix]);
- }
-#endif
-} // end of output_rule_group
-
-
-
-static int compile_lettergroup(char *input, FILE *f_out)
-{//=====================================================
- char *p;
- char *p_start;
- int group;
- int ix;
- int n_items;
- int length;
- int max_length = 0;
-
- #define N_LETTERGP_ITEMS 200
- char *items[N_LETTERGP_ITEMS];
- char item_length[N_LETTERGP_ITEMS];
-
- p = input;
- if(!isdigit(p[0]) || !isdigit(p[1]))
- {
- fprintf(f_log,"%5d: Expected 2 digits after '.L'\n",linenum);
- error_count++;
- return(1);
- }
-
- group = atoi(&p[0]);
- if(group >= N_LETTER_GROUPS)
- {
- fprintf(f_log,"%5d: lettergroup out of range (01-%.2d)\n",linenum,N_LETTER_GROUPS-1);
- error_count++;
- return(1);
- }
-
- while(!isspace2(*p)) p++;
-
- fputc(RULE_GROUP_START,f_out);
- fputc(RULE_LETTERGP2,f_out);
- fputc(group + 'A', f_out);
- if(letterGroupsDefined[group] != 0)
- {
- fprintf(f_log,"%5d: lettergroup L%.2d is already defined\n",linenum,group);
- error_count++;
- }
- letterGroupsDefined[group] = 1;
-
- n_items = 0;
- while(n_items < N_LETTERGP_ITEMS)
- {
- while(isspace2(*p)) p++;
- if(*p == 0)
- break;
-
- items[n_items] = p_start = p;
- while((*p & 0xff) > ' ')
- {
- p++;
- }
- *p++ = 0;
- length = p - p_start;
- if(length > max_length)
- max_length = length;
- item_length[n_items++] = length;
- }
-
- // write out the items, longest first
- while(max_length > 1)
- {
- for(ix=0; ix < n_items; ix++)
- {
- if(item_length[ix] == max_length)
- {
- fwrite(items[ix],1,max_length,f_out);
- }
- }
- max_length--;
- }
-
- fputc(RULE_GROUP_END,f_out);
-
- return(0);
-}
-
-
-static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp)
-{//====================================================================
- char *prule;
- unsigned char *p;
- int ix;
- int c;
- int gp;
- FILE *f_temp;
- int n_rules=0;
- int count=0;
- int different;
- const char *prev_rgroup_name;
- unsigned int char_code;
- int compile_mode=0;
- char *buf;
- char buf1[200];
- char *rules[N_RULES];
-
- int n_rgroups = 0;
- RGROUP rgroup[N_RULE_GROUP2];
-
- linenum = 0;
- group_name[0] = 0;
-
- if((f_temp = fopen_log(fname_temp,"wb")) == NULL)
- return(1);
-
- for(;;)
- {
- linenum++;
- buf = fgets(buf1,sizeof(buf1),f_in);
- if(buf != NULL)
- {
- if((p = (unsigned char *)strstr(buf,"//")) != NULL)
- *p = 0;
-
- if(buf[0] == '\r') buf++; // ignore extra \r in \r\n
- }
-
- if((buf == NULL) || (buf[0] == '.'))
- {
- // next .group or end of file, write out the previous group
-
- if(n_rules > 0)
- {
- strcpy(rgroup[n_rgroups].name,group_name);
- rgroup[n_rgroups].start = ftell(f_temp);
- output_rule_group(f_temp,n_rules,rules,group_name);
- rgroup[n_rgroups].length = ftell(f_temp) - rgroup[n_rgroups].start;
- n_rgroups++;
-
- count += n_rules;
- }
- n_rules = 0;
-
- if(compile_mode == 2)
- {
- // end of the character replacements section
- fwrite(&n_rules,1,4,f_out); // write a zero word to terminate the replacemenmt list
- compile_mode = 0;
- }
-
- if(buf == NULL) break; // end of file
-
- if(memcmp(buf,".L",2)==0)
- {
- compile_lettergroup(&buf[2], f_out);
- continue;
- }
-
- if(memcmp(buf,".replace",8)==0)
- {
- compile_mode = 2;
- fputc(RULE_GROUP_START,f_out);
- fputc(RULE_REPLACEMENTS,f_out);
-
- // advance to next word boundary
- while((ftell(f_out) & 3) != 0)
- fputc(0,f_out);
- }
-
- if(memcmp(buf,".group",6)==0)
- {
- compile_mode = 1;
-
- p = (unsigned char *)&buf[6];
- while((p[0]==' ') || (p[0]=='\t')) p++; // Note: Windows isspace(0xe1) gives TRUE !
- ix = 0;
- while((*p > ' ') && (ix < LEN_GROUP_NAME))
- group_name[ix++] = *p++;
- group_name[ix]=0;
-
- if(sscanf(group_name,"0x%x",&char_code)==1)
- {
- // group character is given as a character code (max 16 bits)
- p = (unsigned char *)group_name;
-
- if(char_code > 0x100)
- {
- *p++ = (char_code >> 8);
- }
- *p++ = char_code;
- *p = 0;
- }
-
- if(strlen(group_name) > 2)
- {
- if(utf8_in(&c,group_name) < 2)
- {
- fprintf(f_log,"%5d: Group name longer than 2 bytes (UTF8)",linenum);
- error_count++;
- }
-
- group_name[2] = 0;
- }
- }
-
- continue;
- }
-
- switch(compile_mode)
- {
- case 1: // .group
- prule = compile_rule(buf);
- if((prule != NULL) && (n_rules < N_RULES))
- {
- rules[n_rules++] = prule;
- }
- break;
-
- case 2: // .replace
- {
- int replace1;
- int replace2;
- char *p;
-
- p = buf;
- replace1 = 0;
- replace2 = 0;
- while(isspace2(*p)) p++;
- ix = 0;
- while((unsigned char)(*p) > 0x20) // not space or zero-byte
- {
- p += utf8_in(&c,p);
- replace1 += (c << ix);
- ix += 16;
- }
- while(isspace2(*p)) p++;
- ix = 0;
- while((unsigned char)(*p) > 0x20)
- {
- p += utf8_in(&c,p);
- replace2 += (c << ix);
- ix += 16;
- }
- if(replace1 != 0)
- {
- Write4Bytes(f_out,replace1); // write as little-endian
- Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary()
- }
- }
- break;
- }
- }
- fclose(f_temp);
-
- qsort((void *)rgroup,n_rgroups,sizeof(rgroup[0]),(int (__cdecl *)(const void *,const void *))rgroup_sorter);
-
- if((f_temp = fopen(fname_temp,"rb"))==NULL)
- return(2);
-
- prev_rgroup_name = "\n";
-
- for(gp = 0; gp < n_rgroups; gp++)
- {
- fseek(f_temp,rgroup[gp].start,SEEK_SET);
-
- if((different = strcmp(rgroup[gp].name, prev_rgroup_name)) != 0)
- {
- // not the same as the previous group
- if(gp > 0)
- fputc(RULE_GROUP_END,f_out);
- fputc(RULE_GROUP_START,f_out);
- fprintf(f_out, prev_rgroup_name = rgroup[gp].name);
- fputc(0,f_out);
- }
-
- for(ix=rgroup[gp].length; ix>0; ix--)
- {
- c = fgetc(f_temp);
- fputc(c,f_out);
- }
-
- if(different)
- {
- }
- }
- fputc(RULE_GROUP_END,f_out);
- fputc(0,f_out);
-
- fclose(f_temp);
-#if 0
- remove(fname_temp);
-#endif
-
- fprintf(f_log,"\t%d rules, %d groups\n\n",count,n_rgroups);
- return(0);
-} // end of compile_dictrules
-
-
-
-int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *fname_err, int flags)
-{//=====================================================================================================
-// fname: space to write the filename in case of error
-// flags: bit 0: include source line number information, for debug purposes.
-
- FILE *f_in;
- FILE *f_out;
- int offset_rules=0;
- int value;
- char fname_in[sizeof(path_home)+45];
- char fname_out[sizeof(path_home)+15];
- char fname_temp[sizeof(path_home)+15];
- char path[sizeof(path_home)+40]; // path_dsource+20
-
- error_count = 0;
- memset(letterGroupsDefined,0,sizeof(letterGroupsDefined));
-
- debug_flag = flags & 1;
-
- if(dsource == NULL)
- dsource = "";
-
- f_log = log;
-//f_log = fopen("log2.txt","w");
- if(f_log == NULL)
- f_log = stderr;
-
- sprintf(path,"%s%s_",dsource,dict_name);
- sprintf(fname_in,"%srules",path);
- f_in = fopen_log(fname_in,"r");
- if(f_in == NULL)
- {
- if(fname_err)
- strcpy(fname_err,fname_in);
- return(-1);
- }
-
- sprintf(fname_out,"%s%c%s_dict",path_home,PATHSEP,dict_name);
- if((f_out = fopen_log(fname_out,"wb+")) == NULL)
- {
- if(fname_err)
- strcpy(fname_err,fname_in);
- return(-1);
- }
- sprintf(fname_temp,"%s%ctemp",path_home,PATHSEP);
-
- transpose_offset = 0;
-
- if(strcmp(dict_name,"ru") == 0)
- {
- // transpose cyrillic alphabet from unicode to iso8859-5
-// transpose_offset = 0x430-0xd0;
- transpose_offset = 0x42f; // range 0x01 to 0x22
- transpose_min = 0x430;
- transpose_max = 0x451;
- }
-
- value = N_HASH_DICT;
- Write4Bytes(f_out,value);
- Write4Bytes(f_out,offset_rules);
-
- compile_dictlist_start();
-
- fprintf(f_log,"Using phonemetable: '%s'\n",phoneme_tab_list[phoneme_tab_number].name);
- compile_dictlist_file(path,"roots");
- if(translator->langopts.listx)
- {
- compile_dictlist_file(path,"list");
- compile_dictlist_file(path,"listx");
- }
- else
- {
- compile_dictlist_file(path,"listx");
- compile_dictlist_file(path,"list");
- }
- compile_dictlist_file(path,"extra");
-
- compile_dictlist_end(f_out);
- offset_rules = ftell(f_out);
-
- fprintf(f_log,"Compiling: '%s'\n",fname_in);
-
- compile_dictrules(f_in,f_out,fname_temp);
- fclose(f_in);
-
- fseek(f_out,4,SEEK_SET);
- Write4Bytes(f_out,offset_rules);
- fclose(f_out);
-
- LoadDictionary(translator, dict_name, 0);
-
- return(error_count);
-} // end of compile_dictionary
-
diff --git a/navit/support/espeak/debug.c b/navit/support/espeak/debug.c
deleted file mode 100644
index 38ea57c99..000000000
--- a/navit/support/espeak/debug.c
+++ /dev/null
@@ -1,74 +0,0 @@
-#include <stdio.h>
-#include <stdarg.h>
-#include "speech.h"
-#include "debug.h"
-
-#ifdef DEBUG_ENABLED
-#include <sys/time.h>
-#include <unistd.h>
-
-static FILE* fd_log=NULL;
-static const char* FILENAME="/tmp/espeak.log";
-
-void debug_init()
-{
- if((fd_log = fopen(FILENAME,"a")) != NULL)
- setvbuf(fd_log, NULL, _IONBF, 0);
-}
-
-void debug_enter(const char* text)
-{
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
-
- // fd_log = fopen(FILENAME,"a");
- if (!fd_log)
- {
- debug_init();
- }
-
- if (fd_log)
- {
- fprintf(fd_log, "%03d.%03dms > ENTER %s\n",(int)(tv.tv_sec%1000), (int)(tv.tv_usec/1000), text);
- // fclose(fd_log);
- }
-}
-
-
-void debug_show(const char *format, ...)
-{
- va_list args;
- va_start(args, format);
- // fd_log = fopen(FILENAME,"a");
- if (!fd_log)
- {
- debug_init();
- }
- if (fd_log)
- {
- vfprintf(fd_log, format, args);
- // fclose(fd_log);
- }
- va_end(args);
-}
-
-void debug_time(const char* text)
-{
- struct timeval tv;
-
- gettimeofday(&tv, NULL);
-
- // fd_log = fopen(FILENAME,"a");
- if (!fd_log)
- {
- debug_init();
- }
- if (fd_log)
- {
- fprintf(fd_log, "%03d.%03dms > %s\n",(int)(tv.tv_sec%1000), (int)(tv.tv_usec/1000), text);
- // fclose(fd_log);
- }
-}
-
-#endif
diff --git a/navit/support/espeak/debug.h b/navit/support/espeak/debug.h
deleted file mode 100644
index c3fb9c920..000000000
--- a/navit/support/espeak/debug.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef DEBUG_H
-#define DEBUG_H
-
-//#define DEBUG_ENABLED
-
-#ifdef DEBUG_ENABLED
-#define ENTER(text) debug_enter(text)
-#define SHOW(format,...) debug_show(format,__VA_ARGS__);
-#define SHOW_TIME(text) debug_time(text);
-extern void debug_enter(const char* text);
-extern void debug_show(const char* format,...);
-extern void debug_time(const char* text);
-
-#else
-
-#ifdef PLATFORM_WINDOWS
-#define SHOW(format) // VC6 doesn't allow "..."
-#else
-#define SHOW(format,...)
-#endif
-#define SHOW_TIME(text)
-#define ENTER(text)
-#endif
-
-
-#endif
diff --git a/navit/support/espeak/dictionary.c b/navit/support/espeak/dictionary.c
deleted file mode 100755
index d7dd3dc65..000000000
--- a/navit/support/espeak/dictionary.c
+++ /dev/null
@@ -1,3490 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#define LOG_TRANSLATE
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <wctype.h>
-#include <wchar.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "translate.h"
-
-
-int dictionary_skipwords;
-char dictionary_name[40];
-
-extern char *print_dictionary_flags(unsigned int *flags);
-
-// accented characters which indicate (in some languages) the start of a separate syllable
-//static const unsigned short diereses_list[7] = {L'ä',L'ë',L'ï',L'ö',L'ü',L'ÿ',0};
-static const unsigned short diereses_list[7] = {0xe4,0xeb,0xef,0xf6,0xfc,0xff,0};
-
-// convert characters to an approximate 7 bit ascii equivalent
-// used for checking for vowels
-static unsigned char remove_accent[] = {
-'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i', // 0c0
-'d','n','o','o','o','o','o', 0, 'o','u','u','u','u','y','t','s', // 0d0
-'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i', // 0e0
-'d','n','o','o','o','o','o', 0 ,'o','u','u','u','u','y','t','y', // 0f0
-
-'a','a','a','a','a','a','c','c','c','c','c','c','c','c','d','d', // 100
-'d','d','e','e','e','e','e','e','e','e','e','e','g','g','g','g', // 110
-'g','g','g','g','h','h','h','h','i','i','i','i','i','i','i','i', // 120
-'i','i','i','i','j','j','k','k','k','l','l','l','l','l','l','l', // 130
-'l','l','l','n','n','n','n','n','n','n','n','n','o','o','o','o', // 140
-'o','o','o','o','r','r','r','r','r','r','s','s','s','s','s','s', // 150
-'s','s','t','t','t','t','t','t','u','u','u','u','u','u','u','u', // 160
-'u','u','u','u','w','w','y','y','y','z','z','z','z','z','z','s', // 170
-'b','b','b','b', 0, 0, 'o','c','c','d','d','d','d','d','e','e', // 180
-'e','f','f','g','g','h','i','i','k','k','l','l','m','n','n','o', // 190
-'o','o','o','o','p','p','y', 0, 0, 's','s','t','t','t','t','u', // 1a0
-'u','u','v','y','y','z','z','z','z','z','z','z', 0, 0, 0, 'w', // 1b0
-'t','t','t','k','d','d','d','l','l','l','n','n','n','a','a','i', // 1c0
-'i','o','o','u','u','u','u','u','u','u','u','u','u','e','a','a', // 1d0
-'a','a','a','a','g','g','g','g','k','k','o','o','o','o','z','z', // 1e0
-'j','d','d','d','g','g','w','w','n','n','a','a','a','a','o','o', // 1f0
-
-'a','a','a','a','e','e','e','e','i','i','i','i','o','o','o','o', // 200
-'r','r','r','r','u','u','u','u','s','s','t','t','y','y','h','h', // 210
-'n','d','o','o','z','z','a','a','e','e','o','o','o','o','o','o', // 220
-'o','o','y','y','l','n','t','j','d','q','a','c','c','l','t','s', // 230
-'z', 0 };
-
-
-
-
-void strncpy0(char *to,const char *from, int size)
-{//===============================================
- // strcpy with limit, ensures a zero terminator
- strncpy(to,from,size);
- to[size-1] = 0;
-}
-
-
-static int reverse_word_bytes(int word)
-{//=============================
- // reverse the order of bytes from little-endian to big-endian
-#ifdef ARCH_BIG
- int ix;
- int word2 = 0;
-
- for(ix=0; ix<=24; ix+=8)
- {
- word2 = word2 << 8;
- word2 |= (word >> ix) & 0xff;
- }
- return(word2);
-#else
- return(word);
-#endif
-}
-
-
-int LookupMnem(MNEM_TAB *table, char *string)
-{//==========================================
- while(table->mnem != NULL)
- {
- if(strcmp(string,table->mnem)==0)
- return(table->value);
- table++;
- }
- return(table->value);
-}
-
-
-
-//=============================================================================================
-// Read pronunciation rules and pronunciation lookup dictionary
-//
-//=============================================================================================
-
-
-static void InitGroups(Translator *tr)
-{//===================================
-/* Called after dictionary 1 is loaded, to set up table of entry points for translation rule chains
- for single-letters and two-letter combinations
-*/
-
- int ix;
- char *p;
- char *p_name;
- unsigned int *pw;
- unsigned char c, c2;
- int len;
-
- tr->n_groups2 = 0;
- for(ix=0; ix<256; ix++)
- {
- tr->groups1[ix]=NULL;
- tr->groups2_count[ix]=0;
- tr->groups2_start[ix]=255; // indicates "not set"
- }
- memset(tr->letterGroups,0,sizeof(tr->letterGroups));
-
- p = tr->data_dictrules;
- while(*p != 0)
- {
- if(*p != RULE_GROUP_START)
- {
- fprintf(stderr,"Bad rules data in '%s_dict' at 0x%x\n",dictionary_name,(unsigned int)(p - tr->data_dictrules));
- break;
- }
- p++;
-
- if(p[0] == RULE_REPLACEMENTS)
- {
- pw = (unsigned int *)(((long)p+4) & ~3); // advance to next word boundary
- tr->langopts.replace_chars = pw;
- while(pw[0] != 0)
- {
- pw += 2; // find the end of the replacement list, each entry is 2 words.
- }
- p = (char *)(pw+1);
-
-#ifdef ARCH_BIG
- pw = (unsigned int *)(tr->langopts.replace_chars);
- while(*pw != 0)
- {
- *pw = reverse_word_bytes(*pw);
- pw++;
- *pw = reverse_word_bytes(*pw);
- pw++;
- }
-#endif
- continue;
- }
-
- if(p[0] == RULE_LETTERGP2)
- {
- ix = p[1] - 'A';
- p += 2;
- if((ix >= 0) && (ix < N_LETTER_GROUPS))
- {
- tr->letterGroups[ix] = p;
- }
- }
- else
- {
- len = strlen(p);
- p_name = p;
- c = p_name[0];
-
- p += (len+1);
- if(len == 1)
- {
- tr->groups1[c] = p;
- }
- else
- if(len == 0)
- {
- tr->groups1[0] = p;
- }
- else
- {
- if(tr->groups2_start[c] == 255)
- tr->groups2_start[c] = tr->n_groups2;
-
- tr->groups2_count[c]++;
- tr->groups2[tr->n_groups2] = p;
- c2 = p_name[1];
- tr->groups2_name[tr->n_groups2++] = (c + (c2 << 8));
- }
- }
-
- // skip over all the rules in this group
- while(*p != RULE_GROUP_END)
- {
- p += (strlen(p) + 1);
- }
- p++;
- }
-
-} // end of InitGroups
-
-
-
-int LoadDictionary(Translator *tr, const char *name, int no_error)
-{//===============================================================
- int hash;
- char *p;
- int *pw;
- int length;
- FILE *f;
- unsigned int size;
- char fname[sizeof(path_home)+20];
-
- strcpy(dictionary_name,name); // currently loaded dictionary name
-
- if(no_error) // don't load dictionary, just set the dictionary_name
- return(1);
-
- // Load a pronunciation data file into memory
- // bytes 0-3: offset to rules data
- // bytes 4-7: number of hash table entries
- sprintf(fname,"%s%c%s_dict",path_home,PATHSEP,name);
- size = GetFileLength(fname);
-
- f = fopen(fname,"rb");
- if((f == NULL) || (size <= 0))
- {
- if(no_error == 0)
- {
- fprintf(stderr,"Can't read dictionary file: '%s'\n",fname);
- }
- return(1);
- }
-
- if(tr->data_dictlist != NULL)
- Free(tr->data_dictlist);
-
- tr->data_dictlist = Alloc(size);
- fread(tr->data_dictlist,size,1,f);
- fclose(f);
-
-
- pw = (int *)(tr->data_dictlist);
- length = reverse_word_bytes(pw[1]);
-
- if(size <= (N_HASH_DICT + sizeof(int)*2))
- {
- fprintf(stderr,"Empty _dict file: '%s\n",fname);
- return(2);
- }
-
- if((reverse_word_bytes(pw[0]) != N_HASH_DICT) ||
- (length <= 0) || (length > 0x8000000))
- {
- fprintf(stderr,"Bad data: '%s' (%x length=%x)\n",fname,reverse_word_bytes(pw[0]),length);
- return(2);
- }
- tr->data_dictrules = &(tr->data_dictlist[length]);
-
- // set up indices into data_dictrules
- InitGroups(tr);
- if(tr->groups1[0] == NULL)
- {
- fprintf(stderr,"Error in %s_rules, no default rule group\n",name);
- }
-
- // set up hash table for data_dictlist
- p = &(tr->data_dictlist[8]);
-
- for(hash=0; hash<N_HASH_DICT; hash++)
- {
- tr->dict_hashtab[hash] = p;
- while((length = *p) != 0)
- {
- p += length;
- }
- p++; // skip over the zero which terminates the list for this hash value
- }
-
- return(0);
-} // end of LoadDictionary
-
-
-int HashDictionary(const char *string)
-//====================================
-/* Generate a hash code from the specified string
- This is used to access the dictionary_2 word-lookup dictionary
-*/
-{
- int c;
- int chars=0;
- int hash=0;
-
- while((c = (*string++ & 0xff)) != 0)
- {
- hash = hash * 8 + c;
- hash = (hash & 0x3ff) ^ (hash >> 8); /* exclusive or */
- chars++;
- }
-
- return((hash+chars) & 0x3ff); // a 10 bit hash code
-} // end of HashDictionary
-
-
-
-//=============================================================================================
-// Translate between internal representation of phonemes and a mnemonic form for display
-//
-//=============================================================================================
-
-
-
-char *EncodePhonemes(char *p, char *outptr, unsigned char *bad_phoneme)
-/*********************************************************************/
-/* Translate a phoneme string from ascii mnemonics to internal phoneme numbers,
- from 'p' up to next blank .
- Returns advanced 'p'
- outptr contains encoded phonemes, unrecognised phonemes are encoded as 255
- bad_phoneme must point to char array of length 2 of more
-*/
-{
- int ix;
- unsigned char c;
- int count; /* num. of matching characters */
- int max; /* highest num. of matching found so far */
- int max_ph; /* corresponding phoneme with highest matching */
- int consumed;
- unsigned int mnemonic_word;
-
- bad_phoneme[0] = 0;
-
- // skip initial blanks
- while(isspace(*p))
- {
- p++;
- }
-
- while(((c = *p) != 0) && !isspace(c))
- {
- consumed = 0;
-
- switch(c)
- {
- case '|':
- // used to separate phoneme mnemonics if needed, to prevent characters being treated
- // as a multi-letter mnemonic
-
- if((c = p[1]) == '|')
- {
- // treat double || as a word-break symbol, drop through
- // to the default case with c = '|'
- }
- else
- {
- p++;
- break;
- }
-
- default:
- // lookup the phoneme mnemonic, find the phoneme with the highest number of
- // matching characters
- max= -1;
- max_ph= 0;
-
- for(ix=1; ix<n_phoneme_tab; ix++)
- {
- if(phoneme_tab[ix] == NULL)
- continue;
- if(phoneme_tab[ix]->type == phINVALID)
- continue; // this phoneme is not defined for this language
-
- count = 0;
- mnemonic_word = phoneme_tab[ix]->mnemonic;
-
- while(((c = p[count]) > ' ') && (count < 4) &&
- (c == ((mnemonic_word >> (count*8)) & 0xff)))
- count++;
-
- if((count > max) &&
- ((count == 4) || (((mnemonic_word >> (count*8)) & 0xff)==0)))
- {
- max = count;
- max_ph = phoneme_tab[ix]->code;
- }
- }
-
- if(max_ph == 0)
- {
- max_ph = 255; /* not recognised */
- bad_phoneme[0] = *p;
- bad_phoneme[1] = 0;
- }
-
- if(max <= 0)
- max = 1;
- p += (consumed + max);
- *outptr++ = (char)(max_ph);
-
- if(max_ph == phonSWITCH)
- {
- // Switch Language: this phoneme is followed by a text string
- char *p_lang = outptr;
- while(!isspace(c = *p) && (c != 0))
- {
- p++;
- *outptr++ = tolower(c);
- }
- *outptr = 0;
- if(c == 0)
- {
- if(strcmp(p_lang,"en")==0)
- {
- *p_lang = 0; // don't need "en", it's assumed by default
- return(p);
- }
- }
- else
- {
- *outptr++ = '|'; // more phonemes follow, terminate language string with separator
- }
- }
- break;
- }
- }
- /* terminate the encoded string */
- *outptr = 0;
- return(p);
-} // end of EncodePhonemes
-
-
-
-void DecodePhonemes(const char *inptr, char *outptr)
-//==================================================
-// Translate from internal phoneme codes into phoneme mnemonics
-{
- unsigned char phcode;
- unsigned char c;
- unsigned int mnem;
- PHONEME_TAB *ph;
- static const char *stress_chars = "==,,'* ";
-
- while((phcode = *inptr++) > 0)
- {
- if(phcode == 255)
- continue; /* indicates unrecognised phoneme */
- if((ph = phoneme_tab[phcode]) == NULL)
- continue;
-
- if((ph->type == phSTRESS) && (ph->std_length <= 4) && (ph->spect == 0))
- {
- if(ph->std_length > 1)
- *outptr++ = stress_chars[ph->std_length];
- }
- else
- {
- mnem = ph->mnemonic;
-
- while((c = (mnem & 0xff)) != 0)
- {
- *outptr++ = c;
- mnem = mnem >> 8;
- }
- if(phcode == phonSWITCH)
- {
- while(isalpha(*inptr))
- {
- *outptr++ = *inptr++;
- }
- }
- }
- }
- *outptr = 0; /* string terminator */
-} // end of DecodePhonemes
-
-
-
-static void WriteMnemonic(char *phon_out, int *ix, int mnem)
-{//=========================================================
- unsigned char c;
-
- while((c = mnem & 0xff) != 0)
- {
- if((c == '/') && (option_phoneme_variants==0))
- break; // discard phoneme variant indicator
- phon_out[(*ix)++]= c;
- // phon_out[phon_out_ix++]= ipa1[c];
- mnem = mnem >> 8;
- }
-}
-
-
-
-void GetTranslatedPhonemeString(char *phon_out, int n_phon_out)
-{//============================================================
-/* Can be called after a clause has been translated into phonemes, in order
- to display the clause in phoneme mnemonic form.
-*/
-
- int ix;
- int phon_out_ix=0;
- int stress;
- char *p;
- PHONEME_LIST *plist;
-
- static const char *stress_chars = "==,,''";
-
- if(phon_out != NULL)
- {
- for(ix=1; ix<(n_phoneme_list-2) && (phon_out_ix < (n_phon_out - 6)); ix++)
- {
- plist = &phoneme_list[ix];
- if(plist->newword)
- phon_out[phon_out_ix++] = ' ';
-
- if(plist->synthflags & SFLAG_SYLLABLE)
- {
- if((stress = plist->stresslevel) > 1)
- {
- if(stress > 5) stress = 5;
- phon_out[phon_out_ix++] = stress_chars[stress];
- }
- }
- WriteMnemonic(phon_out, &phon_out_ix, plist->ph->mnemonic);
-
- if(plist->synthflags & SFLAG_LENGTHEN)
- {
- WriteMnemonic(phon_out, &phon_out_ix, phoneme_tab[phonLENGTHEN]->mnemonic);
- }
- if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL))
- {
- // syllablic consonant
- WriteMnemonic(phon_out, &phon_out_ix, phoneme_tab[phonSYLLABIC]->mnemonic);
- }
- if(plist->ph->code == phonSWITCH)
- {
- // the tone_ph field contains a phoneme table number
- p = phoneme_tab_list[plist->tone_ph].name;
- while(*p != 0)
- {
- phon_out[phon_out_ix++] = *p++;
- }
- phon_out[phon_out_ix++] = ' ';
- }
- else
- if(plist->tone_ph > 0)
- {
- WriteMnemonic(phon_out, &phon_out_ix, phoneme_tab[plist->tone_ph]->mnemonic);
- }
- }
-
- if(phon_out_ix >= n_phon_out)
- phon_out_ix = n_phon_out - 1;
- phon_out[phon_out_ix] = 0;
- }
-} // end of GetTranslatedPhonemeString
-
-
-
-//=============================================================================================
-// Is a word Unpronouncable - and so should be spoken as individual letters
-//
-//=============================================================================================
-
-
-
-static int IsLetterGroup(Translator *tr, char *word, int group, int pre)
-{//=====================================================================
- // match the word against a list of utf-8 strings
- char *p;
- char *w;
- int len=0;
-
- p = tr->letterGroups[group];
- if(p == NULL)
- return(0);
-
- while(*p != RULE_GROUP_END)
- {
- if(pre)
- {
- len = strlen(p);
- w = word - len + 1;
- }
- else
- {
- w = word;
- }
- while(*p == *w)
- {
- w++;
- p++;
- }
- if(*p == 0)
- {
- if(pre)
- return(len);
- return(w-word); // matched a complete string
- }
-
- while(*p++ != 0); // skip to end of string
- }
- return(0);
-}
-
-
-static int IsLetter(Translator *tr, int letter, int group)
-{//=======================================================
- int letter2;
-
- if(tr->letter_groups[group] != NULL)
- {
- if(wcschr(tr->letter_groups[group],letter))
- return(1);
- return(0);
- }
-
- if(group > 7)
- return(0);
-
- if(tr->letter_bits_offset > 0)
- {
- if(((letter2 = (letter - tr->letter_bits_offset)) > 0) && (letter2 < 0x80))
- letter = letter2;
- else
- return(0);
- }
- else
- {
- if((letter >= 0xc0) && (letter <= 0x241))
- return(tr->letter_bits[remove_accent[letter-0xc0]] & (1L << group));
- }
-
- if((letter >= 0) && (letter < 0x80))
- return(tr->letter_bits[letter] & (1L << group));
-
- return(0);
-}
-
-
-static int IsVowel(Translator *tr, int letter)
-{//===========================================
- return(IsLetter(tr, letter, 0));
-}
-
-
-
-
-static int Unpronouncable_en(Translator *tr, char *word)
-{//=====================================================
-/* Determines whether a word in 'unpronouncable', i.e. whether it should
- be spoken as individual letters.
-
- This function is language specific.
-*/
-
- int c;
- int vowel_posn=9;
- int index;
- int count;
- int ix;
- int apostrophe=0;
-
- static unsigned char initials_bitmap[86] = {
- 0x00, 0x00, 0x00, 0x00, 0x22, 0x08, 0x00, 0x88, // 0
- 0x20, 0x24, 0x20, 0x80, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x28, 0x08, 0x00, 0x88, 0x22, 0x04, 0x00, // 16
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x88, 0x22, 0x04, 0x00, 0x02, 0x00, 0x04, // 32
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x28, 0x8a, 0x03, 0x00, 0x00, 0x40, 0x00, // 48
- 0x02, 0x00, 0x41, 0xca, 0xbb, 0x06, 0x20, 0x80,
- 0x91, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, // 64
- 0x08, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, };
-
-
- // words which we pass through to the dictionary, even though they look unpronouncable
- static const char *exceptions[] = {
- "'s ", "st ","nd ","rd ","th ",NULL };
-
- if((*word == ' ') || (*word == 0))
- return(0);
-
- for(ix=0; exceptions[ix] != NULL; ix++)
- {
- // Seemingly uncpronouncable words, but to be looked in the dictionary rules instead
- if(memcmp(word,exceptions[ix],3)==0)
- return(0);
- }
-
- index=0;
- count=0;
- for(;;)
- {
- index += utf8_in(&c,&word[index]);
- count++;
-
- if((c==0) || (c==' '))
- break;
-
- if(IsVowel(tr, c) || (c == 'y'))
- {
- vowel_posn = count;
- break;
- }
-
- if(c == '\'')
- apostrophe = 1;
- else
- if(!IsAlpha(c))
- return(0); // letter (not vowel) outside Latin character range or apostrophe, abort test
- }
- if((vowel_posn > 5) || ((word[0]!='s') && (vowel_posn > 4)))
- return(1); // no vowel, or no vowel in first four letters
-
- /* there is at least one vowel, is the initial letter combination valid ? */
-
- if(vowel_posn < 3)
- return(0); /* vowel in first two letters, OK */
-
- if(apostrophe)
- return(0); // first two letters not a-z, abort test
-
- index = (word[0]-'a') * 26 + (word[1]-'a');
- if(initials_bitmap[index >> 3] & (1L << (index & 7)))
- return(0);
- else
- return(1); /****/
-} /* end of Unpronounceable */
-
-
-
-
-int Unpronouncable(Translator *tr, char *word)
-{//===========================================
-/* Determines whether a word in 'unpronouncable', i.e. whether it should
- be spoken as individual letters.
-
- This function may be language specific. This is a generic version.
-*/
-
- int c;
- int c1=0;
- int vowel_posn=9;
- int index;
- int count;
- int apostrophe=0;
-
- if(tr->translator_name == L('e','n'))
- {
- return(Unpronouncable_en(tr,word));
- }
-
- utf8_in(&c,word);
- if((tr->letter_bits_offset > 0) && (c < 0x241))
- {
- // Latin characters for a language with a non-latin alphabet
- return(0); // so we can re-translate the word as English
- }
-
- if(tr->langopts.param[LOPT_UNPRONOUNCABLE] == 1)
- return(0);
-
- if((*word == ' ') || (*word == 0))
- return(0);
-
- index = 0;
- count = 0;
- for(;;)
- {
- index += utf8_in(&c,&word[index]);
- if((c==0) || (c==' '))
- break;
-
- if(count==0)
- c1 = c;
- count++;
-
- if(IsVowel(tr, c))
- {
- vowel_posn = count; // position of the first vowel
- break;
- }
-
- if(c == '\'')
- apostrophe = 1;
- else
- if(!iswalpha(c))
- return(0); // letter (not vowel) outside a-z range or apostrophe, abort test
- }
-
- if((vowel_posn < 9) && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 2))
- return(0); // option means allow any word with a vowel
-
- if(c1 == tr->langopts.param[LOPT_UNPRONOUNCABLE])
- vowel_posn--; // disregard this as the initial letter when counting
-
- if(vowel_posn > (tr->langopts.max_initial_consonants+1))
- return(1); // no vowel, or no vowel in first four letters
-
-return(0);
-
-} /* end of Unpronounceable */
-
-
-
-//=============================================================================================
-// Determine the stress pattern of a word
-//
-//=============================================================================================
-
-
-
-static int GetVowelStress(Translator *tr, unsigned char *phonemes, unsigned char *vowel_stress, int *vowel_count, int *stressed_syllable, int control)
-{//====================================================================================================================================================
-// control = 1, set stress to 1 for forced unstressed vowels
- unsigned char phcode;
- PHONEME_TAB *ph;
- unsigned char *ph_out = phonemes;
- int count = 1;
- int max_stress = 0;
- int ix;
- int j;
- int stress = 0;
- int primary_posn = 0;
-
- vowel_stress[0] = 0;
- while(((phcode = *phonemes++) != 0) && (count < (N_WORD_PHONEMES/2)-1))
- {
- if((ph = phoneme_tab[phcode]) == NULL)
- continue;
-
- if((ph->type == phSTRESS) && (ph->spect == 0))
- {
- /* stress marker, use this for the following vowel */
-
- if(phcode == phonSTRESS_PREV)
- {
- /* primary stress on preceeding vowel */
- j = count - 1;
- while((j > 0) && (*stressed_syllable == 0) && (vowel_stress[j] < 4))
- {
- if(vowel_stress[j] != 1)
- {
- // don't promote a phoneme which must be unstressed
- vowel_stress[j] = 4;
-
- if(max_stress < 4)
- {
- max_stress = 4;
- primary_posn = j;
- }
-
- /* reduce any preceding primary stress markers */
- for(ix=1; ix<j; ix++)
- {
- if(vowel_stress[ix] == 4)
- vowel_stress[ix] = 3;
- }
- break;
- }
- j--;
- }
- }
- else
- {
- if((ph->std_length < 4) || (*stressed_syllable == 0))
- {
- stress = ph->std_length;
-
- if(stress > max_stress)
- max_stress = stress;
- }
- }
- continue;
- }
-
- if((ph->type == phVOWEL) && !(ph->phflags & phNONSYLLABIC))
- {
- vowel_stress[count] = (char)stress;
- if((stress >= 4) && (stress >= max_stress))
- {
- primary_posn = count;
- max_stress = stress;
- }
-
- if((stress == 0) && (control & 1) && (ph->phflags & phUNSTRESSED))
- vowel_stress[count] = 1; /* weak vowel, must be unstressed */
-
- count++;
- stress = 0;
- }
- else
- if(phcode == phonSYLLABIC)
- {
- // previous consonant phoneme is syllablic
- vowel_stress[count] = (char)stress;
- if((stress == 0) && (control & 1))
- vowel_stress[count++] = 1; // syllabic consonant, usually unstressed
- }
-
- *ph_out++ = phcode;
- }
- vowel_stress[count] = 0;
- *ph_out = 0;
-
- /* has the position of the primary stress been specified by $1, $2, etc? */
- if(*stressed_syllable > 0)
- {
- if(*stressed_syllable >= count)
- *stressed_syllable = count-1; // the final syllable
-
- vowel_stress[*stressed_syllable] = 4;
- max_stress = 4;
- primary_posn = *stressed_syllable;
- }
-
- if(max_stress == 5)
- {
- // priority stress, replaces any other primary stress marker
- for(ix=1; ix<count; ix++)
- {
- if(vowel_stress[ix] == 4)
- {
- if(tr->langopts.stress_flags & 0x20000)
- vowel_stress[ix] = 0;
- else
- vowel_stress[ix] = 3;
- }
-
- if(vowel_stress[ix] == 5)
- {
- vowel_stress[ix] = 4;
- primary_posn = ix;
- }
- }
- max_stress = 4;
- }
-
- *stressed_syllable = primary_posn;
- *vowel_count = count;
- return(max_stress);
-} // end of GetVowelStress
-
-
-
-static char stress_phonemes[] = {phonSTRESS_U, phonSTRESS_D, phonSTRESS_2, phonSTRESS_3,
- phonSTRESS_P, phonSTRESS_P2, phonSTRESS_TONIC};
-
-
-void ChangeWordStress(Translator *tr, char *word, int new_stress)
-{//==============================================================
- int ix;
- unsigned char *p;
- int max_stress;
- int vowel_count; // num of vowels + 1
- int stressed_syllable=0; // position of stressed syllable
- unsigned char phonetic[N_WORD_PHONEMES];
- unsigned char vowel_stress[N_WORD_PHONEMES/2];
-
- strcpy((char *)phonetic,word);
- max_stress = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 0);
-
- if(new_stress >= 4)
- {
- // promote to primary stress
- for(ix=1; ix<vowel_count; ix++)
- {
- if(vowel_stress[ix] >= max_stress)
- {
- vowel_stress[ix] = new_stress;
- break;
- }
- }
- }
- else
- {
- // remove primary stress
- for(ix=1; ix<vowel_count; ix++)
- {
- if(vowel_stress[ix] > new_stress) // >= allows for diminished stress (=1)
- vowel_stress[ix] = new_stress;
- }
- }
-
- // write out phonemes
- ix = 1;
- p = phonetic;
- while(*p != 0)
- {
- if((phoneme_tab[*p]->type == phVOWEL) && !(phoneme_tab[*p]->phflags & phNONSYLLABIC))
- {
- if(vowel_stress[ix] != 0)
- *word++ = stress_phonemes[vowel_stress[ix]];
-
- ix++;
- }
- *word++ = *p++;
- }
- *word = 0;
-} // end of ChangeWordStress
-
-
-
-void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress)
-{//=========================================================================================================
-/* Guess stress pattern of word. This is language specific
-
- 'dictionary_flags' has bits 0-3 position of stressed vowel (if > 0)
- or unstressed (if == 7) or syllables 1 and 2 (if == 6)
- bits 8... dictionary flags
-
- If 'tonic' is set (>= 0), replace highest stress by this value.
-
- Parameter used for input and output
-*/
-
- unsigned char phcode;
- unsigned char *p;
- PHONEME_TAB *ph;
- int stress;
- int max_stress;
- int vowel_count; // num of vowels + 1
- int ix;
- int v;
- int v_stress;
- int stressed_syllable; // position of stressed syllable
- int max_stress_posn;
- int unstressed_word = 0;
- char *max_output;
- int final_ph;
- int final_ph2;
- int mnem;
- int mnem2;
- int post_tonic;
- int opt_length;
- int done;
- int stressflags;
-
- unsigned char vowel_stress[N_WORD_PHONEMES/2];
- char syllable_weight[N_WORD_PHONEMES/2];
- char vowel_length[N_WORD_PHONEMES/2];
- unsigned char phonetic[N_WORD_PHONEMES];
-
- static char consonant_types[16] = {0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0};
-
-
- /* stress numbers STRESS_BASE +
- 0 diminished, unstressed within a word
- 1 unstressed, weak
- 2
- 3 secondary stress
- 4 main stress */
-
- stressflags = tr->langopts.stress_flags;
-
- /* copy input string into internal buffer */
- for(ix=0; ix<N_WORD_PHONEMES; ix++)
- {
- phonetic[ix] = output[ix];
- // check for unknown phoneme codes
- if(phonetic[ix] >= n_phoneme_tab)
- phonetic[ix] = phonSCHWA;
- if(phonetic[ix] == 0)
- break;
- }
- if(ix == 0) return;
- final_ph = phonetic[ix-1];
- final_ph2 = phonetic[ix-2];
-
- max_output = output + (N_WORD_PHONEMES-3); /* check for overrun */
-
- // any stress position marked in the xx_list dictionary ?
- stressed_syllable = (*dictionary_flags) & 0x7;
- if((*dictionary_flags) & 0x8)
- {
- // this indicates a word without a primary stress
- stressed_syllable = (*dictionary_flags) & 0x3;
- unstressed_word = 1;
- }
-
- max_stress = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 1);
-
- if((max_stress == 0) && (tr->langopts.stress_flags & 1) && (vowel_count == 2))
- {
- // option: don't stress monosyllables except at end-of-clause
- vowel_stress[1] = 1;
- (*dictionary_flags) |= FLAG_STRESS_END2;
- }
-
- // heavy or light syllables
- ix = 1;
- for(p = phonetic; *p != 0; p++)
- {
- if((phoneme_tab[p[0]]->type == phVOWEL) && !(phoneme_tab[p[0]]->phflags & phNONSYLLABIC))
- {
- int weight = 0;
- int lengthened = 0;
-
- if(phoneme_tab[p[1]]->code == phonLENGTHEN)
- lengthened = 1;
-
- if(lengthened || (phoneme_tab[p[0]]->phflags & phLONG))
- {
- // long vowel, increase syllable weight
- weight++;
- }
- vowel_length[ix] = weight;
-
- if(lengthened) p++; // advance over phonLENGTHEN
-
- if(consonant_types[phoneme_tab[p[1]]->type] && ((phoneme_tab[p[2]]->type != phVOWEL) || (phoneme_tab[p[1]]->phflags & phLONG)))
- {
- // followed by two consonants, a long consonant, or consonant and end-of-word
- weight++;
- }
- syllable_weight[ix] = weight;
- ix++;
- }
- }
-
- switch(tr->langopts.stress_rule)
- {
- case 8:
- // stress on first syllable, unless it is a light syllable
- if(syllable_weight[1] > 0)
- break;
- // else drop through to case 1
- case 1:
- // stress on second syllable
- if((stressed_syllable == 0) && (vowel_count > 2))
- {
- stressed_syllable = 2;
- if(max_stress == 0)
- {
- vowel_stress[stressed_syllable] = 4;
- }
- max_stress = 4;
- }
- break;
-
- case 2:
- // a language with stress on penultimate vowel
-
- if(stressed_syllable == 0)
- {
- /* no explicit stress - stress the penultimate vowel */
- max_stress = 4;
-
- if(vowel_count > 2)
- {
- stressed_syllable = vowel_count - 2;
-
- if(stressflags & 0x300)
- {
- // LANG=Spanish, stress on last vowel if the word ends in a consonant other than 'n' or 's'
- if(phoneme_tab[final_ph]->type != phVOWEL)
- {
- if(stressflags & 0x100)
- {
- stressed_syllable = vowel_count - 1;
- }
- else
- {
- mnem = phoneme_tab[final_ph]->mnemonic;
- mnem2 = phoneme_tab[final_ph2]->mnemonic;
-
- if((mnem == 's') && (mnem2 == 'n'))
- {
- // -ns stress remains on penultimate syllable
- }
- else
- if(((mnem != 'n') && (mnem != 's')) || (phoneme_tab[final_ph2]->type != phVOWEL))
- {
- stressed_syllable = vowel_count - 1;
- }
- }
- }
- }
- if(stressflags & 0x80000)
- {
- // stress on last syllable if it has a long vowel, but previous syllable has a short vowel
- if(vowel_length[vowel_count - 1] > vowel_length[vowel_count - 2])
- {
- stressed_syllable = vowel_count - 1;
- }
- }
-
- if(vowel_stress[stressed_syllable] == 1)
- {
- // but this vowel is explicitly marked as unstressed
- if(stressed_syllable > 1)
- stressed_syllable--;
- else
- stressed_syllable++;
- }
- }
- else
- {
- stressed_syllable = 1;
- }
-
- // only set the stress if it's not already marked explicitly
- if(vowel_stress[stressed_syllable] == 0)
- {
- // don't stress if next and prev syllables are stressed
- if((vowel_stress[stressed_syllable-1] < 4) || (vowel_stress[stressed_syllable+1] < 4))
- vowel_stress[stressed_syllable] = max_stress;
- }
- }
- break;
-
- case 3:
- // stress on last vowel
- if(stressed_syllable == 0)
- {
- /* no explicit stress - stress the final vowel */
- stressed_syllable = vowel_count - 1;
- if(max_stress == 0)
- {
- while(stressed_syllable > 0)
- {
- if(vowel_stress[stressed_syllable] == 0)
- {
- vowel_stress[stressed_syllable] = 4;
- break;
- }
- else
- stressed_syllable--;
- }
- }
- max_stress = 4;
- }
- break;
-
- case 4: // stress on antipenultimate vowel
- if(stressed_syllable == 0)
- {
- stressed_syllable = vowel_count - 3;
- if(stressed_syllable < 1)
- stressed_syllable = 1;
-
- if(max_stress == 0)
- {
- vowel_stress[stressed_syllable] = 4;
- }
- max_stress = 4;
- }
- break;
-
- case 5:
- // LANG=Russian
- if(stressed_syllable == 0)
- {
- /* no explicit stress - guess the stress from the number of syllables */
- static char guess_ru[16] = {0,0,1,1,2,3,3,4,5,6,7,7,8,9,10,11};
- static char guess_ru_v[16] = {0,0,1,1,2,2,3,3,4,5,6,7,7,8,9,10}; // for final phoneme is a vowel
- static char guess_ru_t[16] = {0,0,1,2,3,3,3,4,5,6,7,7,7,8,9,10}; // for final phoneme is an unvoiced stop
-
- stressed_syllable = vowel_count - 3;
- if(vowel_count < 16)
- {
- if(phoneme_tab[final_ph]->type == phVOWEL)
- stressed_syllable = guess_ru_v[vowel_count];
- else
- if(phoneme_tab[final_ph]->type == phSTOP)
- stressed_syllable = guess_ru_t[vowel_count];
- else
- stressed_syllable = guess_ru[vowel_count];
- }
- vowel_stress[stressed_syllable] = 4;
- max_stress = 4;
- }
- break;
-
- case 6: // LANG=hi stress on the last heaviest syllable
- if(stressed_syllable == 0)
- {
- int wt;
- int max_weight = -1;
- int prev_stressed;
-
- // find the heaviest syllable, excluding the final syllable
- for(ix = 1; ix < (vowel_count-1); ix++)
- {
- if(vowel_stress[ix] == 0)
- {
- if((wt = syllable_weight[ix]) >= max_weight)
- {
- max_weight = wt;
- prev_stressed = stressed_syllable;
- stressed_syllable = ix;
- }
- }
- }
-
- if((syllable_weight[vowel_count-1] == 2) && (max_weight< 2))
- {
- // the only double=heavy syllable is the final syllable, so stress this
- stressed_syllable = vowel_count-1;
- }
- else
- if(max_weight <= 0)
- {
- // all syllables, exclusing the last, are light. Stress the first syllable
- stressed_syllable = 1;
- }
-
- vowel_stress[stressed_syllable] = 4;
- max_stress = 4;
- }
- break;
-
- case 7: // LANG=tr, the last syllable for any vowel markes explicitly as unstressed
- if(stressed_syllable == 0)
- {
- stressed_syllable = vowel_count - 1;
- for(ix=1; ix < vowel_count; ix++)
- {
- if(vowel_stress[ix] == 1)
- {
- stressed_syllable = ix-1;
- break;
- }
- }
- vowel_stress[stressed_syllable] = 4;
- max_stress = 4;
- }
- break;
-
- case 9: // mark all as stressed
- for(ix=1; ix<vowel_count; ix++)
- {
- if(vowel_stress[ix] == 0)
- vowel_stress[ix] = 4;
- }
- break;
- }
-
- /* now guess the complete stress pattern */
- if(max_stress < 4)
- stress = 4; /* no primary stress marked, use for 1st syllable */
- else
- stress = 3;
-
-
- if((stressflags & 0x1000) && (vowel_count == 2))
- {
- // Two syllable word, if one syllable has primary stress, then give the other secondary stress
- if(vowel_stress[1] == 4)
- vowel_stress[2] = 3;
- if(vowel_stress[2] == 4)
- vowel_stress[1] = 3;
- }
-#if deleted
- if((stressflags & 0x2000) && (vowel_stress[1] == 0))
- {
- // If there is only one syllable before the primary stress, give it a secondary stress
- if((vowel_count > 2) && (vowel_stress[2] >= 4))
- {
- vowel_stress[1] = 3;
- }
- }
-#endif
-
- done = 0;
- for(v=1; v<vowel_count; v++)
- {
- if(vowel_stress[v] == 0)
- {
- if((stressflags & 0x10) && (stress < 4) && (v == vowel_count-1))
- {
- // flag: don't give secondary stress to final vowel
- }
- else
- if((stressflags & 0x8000) && (done == 0))
- {
- vowel_stress[v] = (char)stress;
- done =1;
- stress = 3; /* use secondary stress for remaining syllables */
- }
- else
- if((vowel_stress[v-1] <= 1) && ((vowel_stress[v+1] <= 1) || ((stress == 4) && (vowel_stress[v+1] <= 2))))
- {
- /* trochaic: give stress to vowel surrounded by unstressed vowels */
-
- if((stress == 3) && (stressflags & 0x20))
- continue; // don't use secondary stress
-
- if((v > 1) && (stressflags & 0x40) && (syllable_weight[v]==0) && (syllable_weight[v+1]>0))
- {
- // don't put secondary stress on a light syllable which is followed by a heavy syllable
- continue;
- }
-
-// should start with secondary stress on the first syllable, or should it count back from
-// the primary stress and put secondary stress on alternate syllables?
- vowel_stress[v] = (char)stress;
- done =1;
- stress = 3; /* use secondary stress for remaining syllables */
- }
- }
- }
-
- if((unstressed_word) && (tonic < 0))
- {
- if(vowel_count <= 2)
- tonic = tr->langopts.unstressed_wd1; /* monosyllable - unstressed */
- else
- tonic = tr->langopts.unstressed_wd2; /* more than one syllable, used secondary stress as the main stress */
- }
-
- max_stress = 0;
- max_stress_posn = 0;
- for(v=1; v<vowel_count; v++)
- {
- if(vowel_stress[v] >= max_stress)
- {
- max_stress = vowel_stress[v];
- max_stress_posn = v;
- }
- }
-
- if(tonic >= 0)
- {
- /* find position of highest stress, and replace it by 'tonic' */
-
- /* don't disturb an explicitly set stress by 'unstress-at-end' flag */
- if((tonic > max_stress) || (max_stress <= 4))
- vowel_stress[max_stress_posn] = (char)tonic;
- max_stress = tonic;
- }
-
-
- /* produce output phoneme string */
- p = phonetic;
- v = 1;
-
- if((ph = phoneme_tab[*p]) != NULL)
- {
-
- if(ph->type == phSTRESS)
- ph = phoneme_tab[p[1]];
-
-#ifdef deleted
- int gap = tr->langopts.word_gap & 0x700;
- if((gap) && (vowel_stress[1] >= 4) && (prev_stress >= 4))
- {
- /* two primary stresses together, insert a short pause */
- *output++ = pause_phonemes[gap >> 8];
- }
- else
-#endif
- if((tr->langopts.vowel_pause & 0x30) && (ph->type == phVOWEL))
- {
- // word starts with a vowel
-
- if((tr->langopts.vowel_pause & 0x20) && (vowel_stress[1] >= 4))
- {
- *output++ = phonPAUSE_NOLINK; // not to be replaced by link
- }
- else
- {
- *output++ = phonPAUSE_VSHORT; // break, but no pause
- }
- }
- }
-
- p = phonetic;
- post_tonic = 0;
- while(((phcode = *p++) != 0) && (output < max_output))
- {
- if((ph = phoneme_tab[phcode]) == NULL)
- continue;
-
-// if(ph->type == phSTRESS)
-// continue;
-
- if(ph->type == phPAUSE)
- {
- tr->prev_last_stress = 0;
- }
- else
- if(((ph->type == phVOWEL) && !(ph->phflags & phNONSYLLABIC)) || (*p == phonSYLLABIC))
- {
- // a vowel, or a consonant followed by a syllabic consonant marker
-
- v_stress = vowel_stress[v];
- tr->prev_last_stress = v_stress;
-
- if(vowel_stress[v-1] >= max_stress)
- post_tonic = 1;
-
- if(v_stress <= 1)
- {
- if((v > 1) && (max_stress >= 4) && (stressflags & 4) && (v == (vowel_count-1)))
- {
- // option: mark unstressed final syllable as diminished
- v_stress = 1;
- }
- else
- if((stressflags & 2) || (v == 1) || (v == (vowel_count-1)))
- {
- // first or last syllable, or option 'don't set diminished stress'
- v_stress = 0;
- }
- else
- if((v == (vowel_count-2)) && (vowel_stress[vowel_count-1] <= 1))
- {
- // penultimate syllable, followed by an unstressed final syllable
- v_stress = 0;
- }
- else
- {
- // unstressed syllable within a word
- if((vowel_stress[v-1] != 1) || ((stressflags & 0x10000) == 0))
- {
- v_stress = 1; /* change from 0 (unstressed) to 1 (diminished stress) */
- vowel_stress[v] = v_stress;
- }
- }
- }
-
- if(v_stress > 0)
- *output++ = stress_phonemes[v_stress]; // mark stress of all vowels except 0 (unstressed)
-
-
- if(vowel_stress[v] > max_stress)
- {
- max_stress = vowel_stress[v];
- }
-
- if((*p == phonLENGTHEN) && ((opt_length = tr->langopts.param[LOPT_IT_LENGTHEN]) & 1))
- {
- // remove lengthen indicator from non-stressed syllables
- int shorten=0;
-
- if(opt_length & 0x10)
- {
- // only allow lengthen indicator on the highest stress syllable in the word
- if(v != max_stress_posn)
- shorten = 1;
- }
- else
- if(v_stress < 4)
- {
- // only allow lengthen indicator if stress >= 4.
- shorten = 1;
- }
-
- if(shorten)
- p++;
- }
-
- if((v_stress >= 4) && (tr->langopts.param[LOPT_IT_LENGTHEN] == 2))
- {
- // LANG=Italian, lengthen penultimate stressed vowels, unless followed by 2 consonants
- if((v == (vowel_count - 2)) && (syllable_weight[v] == 0))
- {
- *output++ = phcode;
- phcode = phonLENGTHEN;
- }
- }
-
- v++;
- }
-
- if(phcode != 1)
- *output++ = phcode;
- }
- *output++ = 0;
-
-} /* end of SetWordStress */
-
-
-
-
-//=============================================================================================
-// Look up a word in the pronunciation rules
-//
-//=============================================================================================
-
-
-#ifdef LOG_TRANSLATE
-static char *DecodeRule(const char *group, char *rule)
-{//==================================================
-/* Convert compiled match template to ascii */
-
- unsigned char rb;
- unsigned char c;
- char *p;
- int ix;
- int match_type;
- int finished=0;
- int value;
- int linenum=0;
- int flags;
- int suffix_char;
- int condition_num=0;
- char buf[60];
- char buf_pre[60];
- char suffix[20];
- static char output[60];
-
- static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',
- '@','&','%','+','#','S','D','Z','A','L',' ',' ',' ',' ',' ','N','K','V',' ','T','X','?','W'};
-
- static char symbols_lg[] = {'A','B','C','H','F','G','Y'};
-
- match_type = 0;
- buf_pre[0] = 0;
- strcpy(buf,group);
- p = &buf[strlen(buf)];
- while(!finished)
- {
- rb = *rule++;
-
- if(rb <= RULE_LINENUM)
- {
- switch(rb)
- {
- case 0:
- case RULE_PHONEMES:
- finished=1;
- break;
- case RULE_PRE:
- match_type = RULE_PRE;
- *p = 0;
- p = buf_pre;
- break;
- case RULE_POST:
- match_type = RULE_POST;
- *p = 0;
- strcat(buf," (");
- p = &buf[strlen(buf)];
- break;
- case RULE_PH_COMMON:
- break;
- case RULE_CONDITION:
- /* conditional rule, next byte gives condition number */
- condition_num = *rule++;
- break;
- case RULE_LINENUM:
- value = (rule[1] & 0xff) - 1;
- linenum = (rule[0] & 0xff) - 1 + (value * 255);
- rule+=2;
- break;
- }
- continue;
- }
-
- if(rb == RULE_ENDING)
- {
- static const char *flag_chars = "ei vtfq t";
- flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f);
- suffix_char = 'S';
- if(flags & (SUFX_P >> 8))
- suffix_char = 'P';
- sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f);
- rule += 3;
- for(ix=0;ix<9;ix++)
- {
- if(flags & 1)
- sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]);
- flags = (flags >> 1);
- }
- strcpy(p,suffix);
- p += strlen(suffix);
- c = ' ';
- }
- else
- if(rb == RULE_LETTERGP)
- {
- c = symbols_lg[*rule++ - 'A'];
- }
- else
- if(rb == RULE_LETTERGP2)
- {
- value = *rule++ - 'A';
- p[0] = 'L';
- p[1] = (value / 10) + '0';
- c = (value % 10) + '0';
-
- if(match_type == RULE_PRE)
- {
- p[0] = c;
- c = 'L';
- }
- p+=2;
- }
- else
- if(rb <= RULE_LAST_RULE)
- c = symbols[rb];
- else
- if(rb == RULE_SPACE)
- c = '_';
- else
- c = rb;
- *p++ = c;
- }
- *p = 0;
-
- p = output;
- if(linenum > 0)
- {
- sprintf(p,"%5d:\t",linenum);
- p += 7;
- }
- if(condition_num > 0)
- {
- sprintf(p,"?%d ",condition_num);
- p = &p[strlen(p)];
- }
- if((ix = strlen(buf_pre)) > 0)
- {
- while(--ix >= 0)
- *p++ = buf_pre[ix];
- *p++ = ')';
- *p++ = ' ';
- }
- *p = 0;
- strcat(p,buf);
- ix = strlen(output);
- while(ix < 8)
- output[ix++]=' ';
- output[ix]=0;
- return(output);
-} /* end of decode_match */
-#endif
-
-
-
-void AppendPhonemes(Translator *tr, char *string, int size, const char *ph)
-{//========================================================================
-/* Add new phoneme string "ph" to "string"
- Keeps count of the number of vowel phonemes in the word, and whether these
- can be stressed syllables. These values can be used in translation rules
-*/
- const char *p;
- unsigned char c;
- int unstress_mark;
- int length;
-
- length = strlen(ph) + strlen(string);
- if(length >= size)
- {
- return;
- }
-
- /* any stressable vowel ? */
- unstress_mark = 0;
- p = ph;
- while((c = *p++) != 0)
- {
- if(c >= n_phoneme_tab) continue;
-
- if(phoneme_tab[c]->type == phSTRESS)
- {
- if(phoneme_tab[c]->std_length < 4)
- unstress_mark = 1;
- }
- else
- {
- if(phoneme_tab[c]->type == phVOWEL)
- {
- if(((phoneme_tab[c]->phflags & phUNSTRESSED) == 0) &&
- (unstress_mark == 0))
- {
- tr->word_stressed_count++;
- }
- unstress_mark = 0;
- tr->word_vowel_count++;
- }
- }
- }
-
- if(string != NULL)
- strcat(string,ph);
-} /* end of AppendPhonemes */
-
-
-
-static void MatchRule(Translator *tr, char *word[], const char *group, char *rule, MatchRecord *match_out, int word_flags, int dict_flags)
-{//=======================================================================================================================================
-/* Checks a specified word against dictionary rules.
- Returns with phoneme code string, or NULL if no match found.
-
- word (indirect) points to current character group within the input word
- This is advanced by this procedure as characters are consumed
-
- group: the initial characters used to choose the rules group
-
- rule: address of dictionary rule data for this character group
-
- match_out: returns best points score
-
- word_flags: indicates whether this is a retranslation after a suffix has been removed
-*/
-
- unsigned char rb; // current instuction from rule
- unsigned char letter; // current letter from input word, single byte
- int letter_w; // current letter, wide character
- int letter_xbytes; // number of extra bytes of multibyte character (num bytes - 1)
- unsigned char last_letter;
-
- char *pre_ptr;
- char *post_ptr; /* pointer to first character after group */
-
- char *rule_start; /* start of current match template */
- char *p;
-
- int match_type; /* left, right, or consume */
- int failed;
- int consumed; /* number of letters consumed from input */
- int count; /* count through rules in the group */
- int syllable_count;
- int vowel;
- int letter_group;
- int distance_right;
- int distance_left;
- int lg_pts;
- int n_bytes;
- int add_points;
-
- MatchRecord match;
- static MatchRecord best;
-
- int total_consumed; /* letters consumed for best match */
- int group_length;
-
- unsigned char condition_num;
- char *common_phonemes; /* common to a group of entries */
-
-
-
- if(rule == NULL)
- {
- match_out->points = 0;
- (*word)++;
- return;
- }
-
-
- total_consumed = 0;
- count = 0;
- common_phonemes = NULL;
- match_type = 0;
-
- best.points = 0;
- best.phonemes = "";
- best.end_type = 0;
- best.del_fwd = NULL;
-
- group_length = strlen(group);
-
- /* search through dictionary rules */
- while(rule[0] != RULE_GROUP_END)
- {
- match_type=0;
- consumed = 0;
- letter = 0;
- distance_right= -6; /* used to reduce points for matches further away the current letter */
- distance_left= -2;
- count++;
-
- match.points = 1;
- match.end_type = 0;
- match.del_fwd = NULL;
-
- pre_ptr = *word;
- post_ptr = *word + group_length;
-
- /* work through next rule until end, or until no-match proved */
- rule_start = rule;
- failed = 0;
- while(!failed)
- {
- rb = *rule++;
-
- if(rb <= RULE_LINENUM)
- {
- switch(rb)
- {
- case 0: // no phoneme string for this rule, use previous common rule
- if(common_phonemes != NULL)
- {
- match.phonemes = common_phonemes;
- while(((rb = *match.phonemes++) != 0) && (rb != RULE_PHONEMES))
- {
- if(rb == RULE_CONDITION)
- match.phonemes++; // skip over condition number
- }
- }
- else
- {
- match.phonemes = "";
- }
- rule--; // so we are still pointing at the 0
- failed=2; // matched OK
- break;
- case RULE_PRE:
- match_type = RULE_PRE;
- break;
- case RULE_POST:
- match_type = RULE_POST;
- break;
- case RULE_PHONEMES:
- match.phonemes = rule;
- failed=2; // matched OK
- break;
- case RULE_PH_COMMON:
- common_phonemes = rule;
- break;
- case RULE_CONDITION:
- /* conditional rule, next byte gives condition number */
- condition_num = *rule++;
-
- if(condition_num >= 32)
- {
- // allow the rule only if the condition number is NOT set
- if((tr->dict_condition & (1L << (condition_num-32))) != 0)
- failed = 1;
- }
- else
- {
- // allow the rule only if the condition number is set
- if((tr->dict_condition & (1L << condition_num)) == 0)
- failed = 1;
- }
-
- if(!failed)
- match.points++; // add one point for a matched conditional rule
- break;
- case RULE_LINENUM:
- rule+=2;
- break;
- }
- continue;
- }
-
- add_points = 0;
-
- switch(match_type)
- {
- case 0:
- /* match and consume this letter */
- last_letter = letter;
- letter = *post_ptr++;
-
- if((letter == rb) || ((letter==(unsigned char)REPLACED_E) && (rb=='e')))
- {
- add_points = 21;
- consumed++;
- }
- else
- failed = 1;
- break;
-
-
- case RULE_POST:
- /* continue moving fowards */
- distance_right += 6;
- if(distance_right > 18)
- distance_right = 19;
- last_letter = letter;
- letter_xbytes = utf8_in(&letter_w,post_ptr)-1;
- letter = *post_ptr++;
-
- switch(rb)
- {
- case RULE_LETTERGP:
- letter_group = *rule++ - 'A';
- if(IsLetter(tr, letter_w, letter_group))
- {
- lg_pts = 20;
- if(letter_group==2)
- lg_pts = 19; // fewer points for C, general consonant
- add_points = (lg_pts-distance_right);
- post_ptr += letter_xbytes;
- }
- else
- failed = 1;
- break;
-
- case RULE_LETTERGP2: // match against a list of utf-8 strings
- letter_group = *rule++ - 'A';
- if((n_bytes = IsLetterGroup(tr, post_ptr-1,letter_group,0)) >0)
- {
- add_points = (20-distance_right);
- post_ptr += (n_bytes-1);
- }
- else
- failed =1;
- break;
-
- case RULE_NOTVOWEL:
- if(!IsLetter(tr, letter_w,0))
- {
- add_points = (20-distance_right);
- post_ptr += letter_xbytes;
- }
- else
- failed = 1;
- break;
-
- case RULE_DIGIT:
- if(IsDigit(letter_w))
- {
- add_points = (20-distance_right);
- post_ptr += letter_xbytes;
- }
- else
- if(tr->langopts.tone_numbers)
- {
- // also match if there is no digit
- add_points = (20-distance_right);
- post_ptr--;
- }
- else
- failed = 1;
- break;
-
- case RULE_NONALPHA:
- if(!iswalpha(letter_w))
- {
- add_points = (21-distance_right);
- post_ptr += letter_xbytes;
- }
- else
- failed = 1;
- break;
-
- case RULE_DOUBLE:
- if(letter == last_letter)
- add_points = (21-distance_right);
- else
- failed = 1;
- break;
-
- case RULE_ALT1:
- if(dict_flags & FLAG_ALT_TRANS)
- add_points = 1;
- else
- failed = 1;
- break;
-
- case '-':
- if((letter == '-') || ((letter == ' ') && (word_flags & FLAG_HYPHEN_AFTER)))
- {
- add_points = (22-distance_right); // one point more than match against space
- }
- else
- failed = 1;
- break;
-
- case RULE_SYLLABLE:
- {
- /* more than specified number of vowel letters to the right */
- char *p = post_ptr + letter_xbytes;
-
- syllable_count = 1;
- while(*rule == RULE_SYLLABLE)
- {
- rule++;
- syllable_count+=1; /* number of syllables to match */
- }
- vowel = 0;
- while(letter_w != RULE_SPACE)
- {
- if((vowel==0) && IsLetter(tr, letter_w,LETTERGP_VOWEL2))
- {
- // this is counting vowels which are separated by non-vowels
- syllable_count--;
- }
- vowel = IsLetter(tr, letter_w,LETTERGP_VOWEL2);
- p += utf8_in(&letter_w,p);
- }
- if(syllable_count <= 0)
- add_points = (19-distance_right);
- else
- failed = 1;
- }
- break;
-
- case RULE_NOVOWELS:
- {
- char *p = post_ptr + letter_xbytes;
- while(letter_w != RULE_SPACE)
- {
- if(IsLetter(tr, letter_w,LETTERGP_VOWEL2))
- {
- failed = 1;
- break;
- }
- p += utf8_in(&letter_w,p);
- }
- if(!failed)
- add_points = (19-distance_right);
- }
- break;
-
- case RULE_INC_SCORE:
- add_points = 20; // force an increase in points
- break;
-
- case RULE_DEL_FWD:
- // find the next 'e' in the word and replace by ''
- for(p = *word + group_length; *p != ' '; p++)
- {
- if(*p == 'e')
- {
- match.del_fwd = p;
- break;
- }
- }
- break;
-
- case RULE_ENDING:
- // next 3 bytes are a (non-zero) ending type. 2 bytes of flags + suffix length
- match.end_type = (rule[0] << 16) + ((rule[1] & 0x7f) << 8) + (rule[2] & 0x7f);
- rule += 3;
- break;
-
- case RULE_NO_SUFFIX:
- if(word_flags & FLAG_SUFFIX_REMOVED)
- failed = 1; // a suffix has been removed
- else
- add_points = 1;
- break;
-
- default:
- if(letter == rb)
- {
- if(letter == RULE_SPACE)
- add_points = (21-distance_right);
- else
- add_points = (21-distance_right);
- }
- else
- failed = 1;
- break;
- }
- break;
-
-
- case RULE_PRE:
- /* match backwards from start of current group */
- distance_left += 2;
- if(distance_left > 18)
- distance_left = 19;
-
- last_letter = *pre_ptr;
- pre_ptr--;
- letter_xbytes = utf8_in2(&letter_w,pre_ptr,1)-1;
- letter = *pre_ptr;
-
- switch(rb)
- {
- case RULE_LETTERGP:
- letter_group = *rule++ - 'A';
- if(IsLetter(tr, letter_w,letter_group))
- {
- lg_pts = 20;
- if(letter_group==2)
- lg_pts = 19; // fewer points for C, general consonant
- add_points = (lg_pts-distance_left);
- pre_ptr -= letter_xbytes;
- }
- else
- failed = 1;
- break;
-
- case RULE_LETTERGP2: // match against a list of utf-8 strings
- letter_group = *rule++ - 'A';
- if((n_bytes = IsLetterGroup(tr, pre_ptr,letter_group,1)) >0)
- {
- add_points = (20-distance_right);
- pre_ptr -= (n_bytes-1);
- }
- else
- failed =1;
- break;
-
- case RULE_NOTVOWEL:
- if(!IsLetter(tr, letter_w,0))
- {
- add_points = (20-distance_left);
- pre_ptr -= letter_xbytes;
- }
- else
- failed = 1;
- break;
-
- case RULE_DOUBLE:
- if(letter == last_letter)
- add_points = (21-distance_left);
- else
- failed = 1;
- break;
-
- case RULE_DIGIT:
- if(IsDigit(letter_w))
- {
- add_points = (21-distance_left);
- pre_ptr -= letter_xbytes;
- }
- else
- failed = 1;
- break;
-
- case RULE_NONALPHA:
- if(!iswalpha(letter_w))
- {
- add_points = (21-distance_right);
- pre_ptr -= letter_xbytes;
- }
- else
- failed = 1;
- break;
-
- case RULE_SYLLABLE:
- /* more than specified number of vowels to the left */
- syllable_count = 1;
- while(*rule == RULE_SYLLABLE)
- {
- rule++;
- syllable_count++; /* number of syllables to match */
- }
- if(syllable_count <= tr->word_vowel_count)
- add_points = (19-distance_left);
- else
- failed = 1;
- break;
-
- case RULE_STRESSED:
- if(tr->word_stressed_count > 0)
- add_points = 19;
- else
- failed = 1;
- break;
-
- case RULE_NOVOWELS:
- {
- char *p = pre_ptr - letter_xbytes - 1;
- while(letter_w != RULE_SPACE)
- {
- if(IsLetter(tr, letter_w,LETTERGP_VOWEL2))
- {
- failed = 1;
- break;
- }
- p -= utf8_in2(&letter_w,p,1);
- }
- if(!failed)
- add_points = 3;
- }
- break;
-
- case RULE_IFVERB:
- if(tr->expect_verb)
- add_points = 1;
- else
- failed = 1;
- break;
-
- case RULE_CAPITAL:
- if(word_flags & FLAG_FIRST_UPPER)
- add_points = 1;
- else
- failed = 1;
- break;
-
- case '.':
- // dot in pre- section, match on any dot before this point in the word
- for(p=pre_ptr; *p != ' '; p--)
- {
- if(*p == '.')
- {
- add_points = 50;
- break;
- }
- }
- if(*p == ' ')
- failed = 1;
- break;
-
- case '-':
- if((letter == '-') || ((letter == ' ') && (word_flags & FLAG_HYPHEN)))
- {
- add_points = (22-distance_right); // one point more than match against space
- }
- else
- failed = 1;
- break;
-
- default:
- if(letter == rb)
- {
- if(letter == RULE_SPACE)
- add_points = 4;
- else
- add_points = (21-distance_left);
- }
- else
- failed = 1;
- break;
- }
- break;
- }
-
- if(failed == 0)
- match.points += add_points;
- }
-
- if(failed == 2)
- {
- /* matched OK, is this better than the last best match ? */
- if(match.points >= best.points)
- {
- memcpy(&best,&match,sizeof(match));
- total_consumed = consumed;
- }
-
-#ifdef LOG_TRANSLATE
- if((option_phonemes == 2) && (match.points > 0) && ((word_flags & FLAG_NO_TRACE) == 0))
- {
- // show each rule that matches, and it's points score
- int pts;
- char decoded_phonemes[80];
-
- // note: 'count' contains the rule number, if we want to include it
- pts = match.points;
- if(group_length > 1)
- pts += 35; // to account for an extra letter matching
- DecodePhonemes(match.phonemes,decoded_phonemes);
- fprintf(f_trans,"%3d\t%s [%s]\n",pts,DecodeRule(group,rule_start),decoded_phonemes);
- }
-#endif
-
- }
-
- /* skip phoneme string to reach start of next template */
- while(*rule++ != 0);
- }
-
-#ifdef LOG_TRANSLATE
- if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0))
- {
- if(group_length <= 1)
- fprintf(f_trans,"\n");
- }
-#endif
-
- /* advance input data pointer */
- total_consumed += group_length;
- if(total_consumed == 0)
- total_consumed = 1; /* always advance over 1st letter */
-
- *word += total_consumed;
-
- if(best.points == 0)
- best.phonemes = "";
- memcpy(match_out,&best,sizeof(MatchRecord));
-} /* end of MatchRule */
-
-
-
-
-int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, char *end_phonemes, int word_flags, unsigned int *dict_flags)
-{//=====================================================================================================================================
-/* Translate a word bounded by space characters
- Append the result to 'phonemes' and any standard prefix/suffix in 'end_phonemes' */
-
- unsigned char c, c2;
- unsigned int c12;
- int wc=0;
- int wc_prev;
- int wc_bytes;
- char *p2; /* copy of p for use in double letter chain match */
- int found;
- int g; /* group chain number */
- int g1; /* first group for this letter */
- int n;
- int letter;
- int any_alpha=0;
- int ix;
- unsigned int digit_count=0;
- char *p;
- int dict_flags0=0;
- MatchRecord match1;
- MatchRecord match2;
- char ph_buf[40];
- char word_copy[N_WORD_BYTES];
- static const char str_pause[2] = {phonPAUSE_NOLINK,0};
-
- char group_name[4];
-
- if(tr->data_dictrules == NULL)
- return(0);
-
- if(dict_flags != NULL)
- dict_flags0 = dict_flags[0];
-
- for(ix=0; ix<(N_WORD_BYTES-1);)
- {
- c = p_start[ix];
- word_copy[ix++] = c;
- if(c == 0)
- break;
- }
- word_copy[ix] = 0;
-
-
-#ifdef LOG_TRANSLATE
- if((option_phonemes == 2) && ((word_flags & FLAG_NO_TRACE)==0))
- {
- char wordbuf[120];
- int ix;
-
- for(ix=0; ((c = p_start[ix]) != ' ') && (c != 0); ix++)
- {
- wordbuf[ix] = c;
- }
- wordbuf[ix] = 0;
- fprintf(f_trans,"Translate '%s'\n",wordbuf);
- }
-#endif
-
- p = p_start;
- tr->word_vowel_count = 0;
- tr->word_stressed_count = 0;
-
- if(end_phonemes != NULL)
- end_phonemes[0] = 0;
-
- while(((c = *p) != ' ') && (c != 0))
- {
- wc_prev = wc;
- wc_bytes = utf8_in(&wc,p);
- if(IsAlpha(wc))
- any_alpha++;
-
- n = tr->groups2_count[c];
- if(IsDigit(wc) && ((tr->langopts.tone_numbers == 0) || !any_alpha))
- {
- // lookup the number in *_list not *_rules
- char string[8];
- char buf[40];
- string[0] = '_';
- memcpy(&string[1],p,wc_bytes);
- string[1+wc_bytes] = 0;
- Lookup(tr, string,buf);
- if(++digit_count >= 2)
- {
- strcat(buf,str_pause);
- digit_count=0;
- }
- AppendPhonemes(tr,phonemes,ph_size,buf);
- p += wc_bytes;
- continue;
- }
- else
- {
- digit_count = 0;
- found = 0;
-
- if(n > 0)
- {
- /* there are some 2 byte chains for this initial letter */
- c2 = p[1];
- c12 = c + (c2 << 8); /* 2 characters */
-
- g1 = tr->groups2_start[c];
- for(g=g1; g < (g1+n); g++)
- {
- if(tr->groups2_name[g] == c12)
- {
- found = 1;
-
- group_name[0] = c;
- group_name[1] = c2;
- group_name[2] = 0;
- p2 = p;
- MatchRule(tr, &p2, group_name, tr->groups2[g], &match2, word_flags, dict_flags0);
- if(match2.points > 0)
- match2.points += 35; /* to acount for 2 letters matching */
-
- /* now see whether single letter chain gives a better match ? */
- group_name[1] = 0;
- MatchRule(tr, &p, group_name, tr->groups1[c], &match1, word_flags, dict_flags0);
-
- if(match2.points >= match1.points)
- {
- // use match from the 2-letter group
- memcpy(&match1,&match2,sizeof(MatchRecord));
- p = p2;
- }
- }
- }
- }
-
- if(!found)
- {
- /* alphabetic, single letter chain */
- group_name[0] = c;
- group_name[1] = 0;
-
- if(tr->groups1[c] != NULL)
- MatchRule(tr, &p, group_name, tr->groups1[c], &match1, word_flags, dict_flags0);
- else
- {
- // no group for this letter, use default group
- MatchRule(tr, &p, "", tr->groups1[0], &match1, word_flags, dict_flags0);
-
- if((match1.points == 0) && ((option_sayas & 0x10) == 0))
- {
- n = utf8_in(&letter,p-1)-1;
-
- if(tr->letter_bits_offset > 0)
- {
- // not a Latin alphabet, switch to the default Latin alphabet language
- if((letter <= 0x241) && iswalpha(letter))
- {
- sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language);
- return(0);
- }
- }
-#ifdef deleted
-// can't switch to a tone language, because the tone-phoneme numbers are not valid for the original language
- if((letter >= 0x4e00) && (letter < 0xa000) && (tr->langopts.ideographs != 1))
- {
- // Chinese ideogram
- sprintf(phonemes,"%czh",phonSWITCH);
- return(0);
- }
-#endif
-
- // is it a bracket ?
- if(IsBracket(letter))
- {
- if(pre_pause < 4)
- pre_pause = 4;
- }
-
- // no match, try removing the accent and re-translating the word
- if((letter >= 0xc0) && (letter <= 0x241) && ((ix = remove_accent[letter-0xc0]) != 0))
- {
- // within range of the remove_accent table
- if((p[-2] != ' ') || (p[n] != ' '))
- {
- // not the only letter in the word
- p2 = p-1;
- p[-1] = ix;
- while((p[0] = p[n]) != ' ') p++;
- while(n-- > 0) *p++ = ' '; // replacement character must be no longer than original
-
- if(tr->langopts.param[LOPT_DIERESES] && (lookupwchar(diereses_list,letter) > 0))
- {
- // vowel with dieresis, replace and continue from this point
- p = p2;
- continue;
- }
-
- phonemes[0] = 0; // delete any phonemes which have been produced so far
- p = p_start;
- tr->word_vowel_count = 0;
- tr->word_stressed_count = 0;
- continue; // start again at the beginning of the word
- }
- }
- else
- if((letter >= 0x3200) && (letter < 0xa700) && (end_phonemes != NULL))
- {
- // ideograms
- // outside the range of the accent table, speak the unknown symbol sound
- Lookup(tr, "_??", ph_buf);
- match1.phonemes = ph_buf;
- match1.points = 1;
- p += (wc_bytes-1);
- }
- }
- }
-
- if(match1.points == 0)
- {
- if((wc >= 0x300) && (wc <= 0x36f))
- {
- // combining accent inside a word, ignore
- }
- else
- if(IsAlpha(wc))
- {
- if((any_alpha > 1) || (p[wc_bytes-1] > ' '))
- {
- // an unrecognised character in a word, abort and then spell the word
- phonemes[0] = 0;
- if(dict_flags != NULL)
- dict_flags[0] |= FLAG_SPELLWORD;
- break;
- }
- }
- else
- {
- LookupLetter(tr, wc, -1, ph_buf);
- if(ph_buf[0])
- {
- match1.phonemes = ph_buf;
- match1.points = 1;
- }
- }
- p += (wc_bytes-1);
- }
- else
- {
- tr->phonemes_repeat_count = 0;
- }
- }
- }
-
- if(match1.phonemes == NULL)
- match1.phonemes = "";
-
- if(match1.points > 0)
- {
- if((match1.phonemes[0] == phonSWITCH) && ((word_flags & FLAG_DONT_SWITCH_TRANSLATOR)==0))
- {
- // an instruction to switch language, return immediately so we can re-translate
- strcpy(phonemes,match1.phonemes);
- return(0);
- }
-
- if((match1.end_type != 0) && (end_phonemes != NULL))
- {
- /* a standard ending has been found, re-translate the word without it */
- if((match1.end_type & SUFX_P) && (word_flags & FLAG_NO_PREFIX))
- {
- // ignore the match on a prefix
- }
- else
- {
- if((match1.end_type & SUFX_P) && ((match1.end_type & 0x7f) == 0))
- {
- // no prefix length specified
- match1.end_type |= p - p_start;
- }
- strcpy(end_phonemes,match1.phonemes);
- memcpy(p_start,word_copy,strlen(word_copy));
- return(match1.end_type);
- }
- }
- if(match1.del_fwd != NULL)
- *match1.del_fwd = REPLACED_E;
- AppendPhonemes(tr,phonemes,ph_size,match1.phonemes);
- }
- }
-
- // any language specific changes ?
- ApplySpecialAttribute(tr,phonemes,dict_flags0);
- memcpy(p_start,word_copy,strlen(word_copy));
-
- return(0);
-} /* end of TranslateRules */
-
-
-void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags)
-{//========================================================================
- // apply after the translation is complete
- int ix;
- int len;
- char *p;
-
- len = strlen(phonemes);
-
- switch(tr->translator_name)
- {
- case L('i','t'):
- for(ix=0; ix<(len-1); ix++)
- {
- if(phonemes[ix] == phonSTRESS_P)
- {
- p = &phonemes[ix+1];
- if((dict_flags & FLAG_ALT2_TRANS) != 0)
- {
- if(*p == PhonemeCode('E'))
- *p = PhonemeCode('e');
- if(*p == PhonemeCode('O'))
- *p = PhonemeCode('o');
- }
- else
- {
- if(*p == PhonemeCode('e'))
- *p = PhonemeCode('E');
- if(*p == PhonemeCode('o'))
- *p = PhonemeCode('O');
- }
- break;
- }
- }
- break;
- }
-} // end of ApplySpecialAttribute2
-
-
-void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags)
-{//=======================================================================
-// Amend the translated phonemes according to an attribute which is specific for the language.
- int len;
- int ix;
- char *p_end;
- int phoneme_1;
-
- if((dict_flags & (FLAG_ALT_TRANS | FLAG_ALT2_TRANS)) == 0)
- return;
-
- len = strlen(phonemes);
- p_end = &phonemes[len-1];
-
- switch(tr->translator_name)
- {
- case L('d','e'):
- if(p_end[0] == PhonemeCode2('i',':'))
- {
- // words ends in ['i:], change to [=I@]
- p_end[-1] = phonSTRESS_PREV;
- p_end[0] = PhonemeCode('I');
- p_end[1] = phonSCHWA;
- p_end[2] = 0;
- }
- break;
-
- case L('p','t'):
- phoneme_1 = PhonemeCode('o');
- for(ix=0; ix<(len-1); ix++)
- {
- if(phonemes[ix] == phoneme_1)
- {
- phonemes[ix] = PhonemeCode('O');
- break;
- }
- }
- break;
-
- case L('r','o'):
- if(p_end[0] == PhonemeCode('j'))
- {
- // word end in [j], change to ['i]
- p_end[0] = phonSTRESS_P;
- p_end[1] = PhonemeCode('i');
- p_end[2] = 0;
- }
- break;
- }
-} // end of ApplySpecialAttribute
-
-
-
-//=============================================================================================
-// Look up a word in the pronunciation dictionary list
-// - exceptions which override the usual pronunciation rules, or which give a word
-// special properties, such as pronounce as unstressed
-//=============================================================================================
-
-// common letter pairs, encode these as a single byte
-static const short pairs_ru[] = {
-0x010c, // ла 21052 0x23
-0x010e, // на 18400
-0x0113, // та 14254
-0x0301, // ав 31083
-0x030f, // ов 13420
-0x060e, // не 21798
-0x0611, // ре 19458
-0x0903, // ви 16226
-0x0b01, // ак 14456
-0x0b0f, // ок 17836
-0x0c01, // ал 13324
-0x0c09, // ил 16877
-0x0e01, // ан 15359
-0x0e06, // ен 13543 0x30
-0x0e09, // ин 17168
-0x0e0e, // нн 15973
-0x0e0f, // он 22373
-0x0e1c, // ын 15052
-0x0f03, // во 24947
-0x0f11, // ро 13552
-0x0f12, // Ñо 16368
-0x100f, // оп 19054
-0x1011, // рп 17067
-0x1101, // ар 23967
-0x1106, // ер 18795
-0x1109, // ир 13797
-0x110f, // ор 21737
-0x1213, // Ñ‚Ñ 25076
-0x1220, // ÑÑ 14310
-0x7fff};
-//0x040f ог 12976
-//0x1306 ет 12826
-//0x0f0d мо 12688
-
-
-int TransposeAlphabet(char *text, int offset, int min, int max)
-{//============================================================
-// transpose cyrillic alphabet (for example) into ascii (single byte) character codes
-// return: number of bytes, bit 6: 1=used compression
- int c;
- int c2;
- int ix;
- char *p = text;
- char *p2 = text;
- int all_alpha=1;
- int bits;
- int acc;
-
- do {
- p += utf8_in(&c,p);
- if((c >= min) && (c <= max))
- {
- *p2++ = c - offset;
- }
- else
- if(c != 0)
- {
- p2 += utf8_out(c,p2);
- all_alpha=0;
- }
- } while (c != 0);
- *p2 = 0;
-
- if(all_alpha)
- {
- // compress to 6 bits per character
- acc=0;
- bits=0;
-
- p = text;
- p2 = text;
- while((c = *p++) != 0)
- {
- c2 = c + (*p << 8);
- for(ix=0; c2 >= pairs_ru[ix]; ix++)
- {
- if(c2 == pairs_ru[ix])
- {
- // found an encoding for a 2-character pair
- c = ix + 0x23; // 2-character codes start at 0x23
- p++;
- break;
- }
- }
- acc = (acc << 6) + (c & 0x3f);
- bits += 6;
-
- if(bits >= 8)
- {
- bits -= 8;
- *p2++ = (acc >> bits);
- }
- }
- if(bits > 0)
- {
- *p2++ = (acc << (8-bits));
- }
- *p2 = 0;
- return((p2 - text) | 0x40); // bit 6 indicates compressed characters
- }
- return(p2 - text);
-} // end of TransposeAlphabet
-
-
-
-
-static const char *LookupDict2(Translator *tr, const char *word, const char *word2,
- char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab)
-//=====================================================================================
-/* Find an entry in the word_dict file for a specified word.
- Returns NULL if no match, else returns 'word_end'
-
- word zero terminated word to match
- word2 pointer to next word(s) in the input text (terminated by space)
-
- flags: returns dictionary flags which are associated with a matched word
-
- end_flags: indicates whether this is a retranslation after removing a suffix
-*/
-{
- char *p;
- char *next;
- int hash;
- int phoneme_len;
- int wlen;
- unsigned char flag;
- unsigned int dictionary_flags;
- unsigned int dictionary_flags2;
- int condition_failed=0;
- int n_chars;
- int no_phonemes;
- int skipwords;
- int ix;
- const char *word_end;
- const char *word1;
- int wflags = 0;
- char word_buf[N_WORD_BYTES];
-
- if(wtab != NULL)
- {
- wflags = wtab->flags;
- }
-
- word1 = word;
- if(tr->transpose_offset > 0)
- {
- strcpy(word_buf,word);
- wlen = TransposeAlphabet(word_buf, tr->transpose_offset, tr->transpose_min, tr->transpose_max);
- word = word_buf;
- }
- else
- {
- wlen = strlen(word);
- }
-
- hash = HashDictionary(word);
- p = tr->dict_hashtab[hash];
-
- if(p == NULL)
- {
- if(flags != NULL)
- *flags = 0;
- return(0);
- }
-
- // Find the first entry in the list for this hash value which matches.
- // This corresponds to the last matching entry in the *_list file.
-
- while(*p != 0)
- {
- next = p + p[0];
-
- if(((p[1] & 0x7f) != wlen) || (memcmp(word,&p[2],wlen & 0x3f) != 0))
- {
- // bit 6 of wlen indicates whether the word has been compressed; so we need to match on this also.
- p = next;
- continue;
- }
-
- /* found matching entry. Decode the phonetic string */
- word_end = word2;
-
- dictionary_flags = 0;
- dictionary_flags2 = 0;
- no_phonemes = p[1] & 0x80;
-
- p += ((p[1] & 0x3f) + 2);
-
- if(no_phonemes)
- {
- phonetic[0] = 0;
- phoneme_len = 0;
- }
- else
- {
- strcpy(phonetic,p);
- phoneme_len = strlen(p);
- p += (phoneme_len + 1);
- }
-
- while(p < next)
- {
- // examine the flags which follow the phoneme string
-
- flag = *p++;
- if(flag >= 100)
- {
- // conditional rule
- if(flag >= 132)
- {
- // fail if this condition is set
- if((tr->dict_condition & (1 << (flag-132))) != 0)
- condition_failed = 1;
- }
- else
- {
- // allow only if this condition is set
- if((tr->dict_condition & (1 << (flag-100))) == 0)
- condition_failed = 1;
- }
- }
- else
- if(flag > 80)
- {
- // flags 81 to 90 match more than one word
- // This comes after the other flags
- n_chars = next - p;
- skipwords = flag - 80;
-
- // don't use the contraction if any of the words are emphasized
- for(ix=0; ix <= skipwords; ix++)
- {
- if(wflags & FLAG_EMPHASIZED2)
- {
- condition_failed = 1;
- }
- }
-
- if(memcmp(word2,p,n_chars) != 0)
- condition_failed = 1;
-
- if(condition_failed)
- {
- p = next;
- break;
- }
-
- dictionary_flags |= FLAG_SKIPWORDS;
- dictionary_skipwords = skipwords;
- p = next;
- word_end = word2 + n_chars;
- }
- else
- if(flag > 64)
- {
- // stressed syllable information, put in bits 0-3
- dictionary_flags = (dictionary_flags & ~0xf) | (flag & 0xf);
- if((flag & 0xc) == 0xc)
- dictionary_flags |= FLAG_STRESS_END;
- }
- else
- if(flag >= 32)
- {
- dictionary_flags2 |= (1L << (flag-32));
- }
- else
- {
- dictionary_flags |= (1L << flag);
- }
- }
-
- if(condition_failed)
- {
- condition_failed=0;
- continue;
- }
-
- if((end_flags & FLAG_SUFX)==0)
- {
- // no suffix has been removed
- if(dictionary_flags & FLAG_STEM)
- continue; // this word must have a suffix
- }
-
- if((end_flags & SUFX_P) && (dictionary_flags & (FLAG_ONLY | FLAG_ONLY_S)))
- continue; // $only or $onlys, don't match if a prefix has been removed
-
- if(end_flags & FLAG_SUFX)
- {
- // a suffix was removed from the word
- if(dictionary_flags & FLAG_ONLY)
- continue; // no match if any suffix
-
- if((dictionary_flags & FLAG_ONLY_S) && ((end_flags & FLAG_SUFX_S)==0))
- {
- // only a 's' suffix allowed, but the suffix wasn't 's'
- continue;
- }
- }
-
- if(dictionary_flags2 & FLAG_HYPHENATED)
- {
- if(!(wflags & FLAG_HYPHEN_AFTER))
- {
- continue;
- }
- }
- if(dictionary_flags2 & FLAG_CAPITAL)
- {
- if(!(wflags & FLAG_FIRST_UPPER))
- {
- continue;
- }
- }
- if(dictionary_flags2 & FLAG_ALLCAPS)
- {
- if(!(wflags & FLAG_ALL_UPPER))
- {
- continue;
- }
- }
-
- if((dictionary_flags & FLAG_ATEND) && (word_end < tr->clause_end))
- {
- // only use this pronunciation if it's the last word of the clause
- continue;
- }
-
- if(dictionary_flags2 & FLAG_VERB)
- {
- // this is a verb-form pronunciation
-
- if(tr->expect_verb || (tr->expect_verb_s && (end_flags & FLAG_SUFX_S)))
- {
- // OK, we are expecting a verb
- }
- else
- {
- /* don't use the 'verb' pronunciation unless we are
- expecting a verb */
- continue;
- }
- }
- if(dictionary_flags2 & FLAG_PAST)
- {
- if(!tr->expect_past)
- {
- /* don't use the 'past' pronunciation unless we are
- expecting past tense */
- continue;
- }
- }
- if(dictionary_flags2 & FLAG_NOUN)
- {
- if(!tr->expect_noun)
- {
- /* don't use the 'noun' pronunciation unless we are
- expecting a noun */
- continue;
- }
- }
-
- if(flags != NULL)
- {
- flags[0] = dictionary_flags | FLAG_FOUND_ATTRIBUTES;
- flags[1] = dictionary_flags2;
- }
-
- if(phoneme_len == 0)
- {
- if(option_phonemes == 2)
- {
- fprintf(f_trans,"Flags: %s %s\n",word1,print_dictionary_flags(flags));
- }
- return(0); // no phoneme translation found here, only flags. So use rules
- }
-
- if(flags != NULL)
- flags[0] |= FLAG_FOUND; // this flag indicates word was found in dictionary
-
- if(option_phonemes == 2)
- {
- unsigned int flags1 = 0;
- char ph_decoded[N_WORD_PHONEMES];
- int textmode;
-
- DecodePhonemes(phonetic,ph_decoded);
- if(flags != NULL)
- flags1 = flags[0];
-
- if((dictionary_flags & FLAG_TEXTMODE) == 0)
- textmode = 0;
- else
- textmode = 1;
-
- if(textmode == translator->langopts.textmode)
- {
- // only show this line if the word translates to phonemes, not replacement text
- fprintf(f_trans,"Found: %s [%s] %s\n",word1,ph_decoded,print_dictionary_flags(flags));
- }
- }
- return(word_end);
-
- }
- return(0);
-} // end of LookupDict2
-
-
-
-int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *flags, int end_flags, WORD_TAB *wtab)
-//==================================================================================================================
-/* Lookup a specified word in the word dictionary.
- Returns phonetic data in 'phonetic' and bits in 'flags'
-
- end_flags: indicates if a suffix has been removed
-*/
-{
- int length;
- const char *found;
- const char *word1;
- const char *word2;
- unsigned char c;
- int nbytes;
- int len;
- char word[N_WORD_BYTES];
- static char word_replacement[N_WORD_BYTES];
-
- length = 0;
- word2 = word1 = *wordptr;
-
- while((word2[nbytes = utf8_nbytes(word2)]==' ') && (word2[nbytes+1]=='.'))
- {
- // look for an abbreviation of the form a.b.c
- // try removing the spaces between the dots and looking for a match
- memcpy(&word[length],word2,nbytes);
- length += nbytes;
- word[length++] = '.';
- word2 += nbytes+3;
- }
- if(length > 0)
- {
- // found an abbreviation containing dots
- nbytes = 0;
- while(((c = word2[nbytes]) != 0) && (c != ' '))
- {
- nbytes++;
- }
- memcpy(&word[length],word2,nbytes);
- word[length+nbytes] = 0;
- found = LookupDict2(tr, word, word2, ph_out, flags, end_flags, wtab);
- if(found)
- {
- // set the skip words flag
- flags[0] |= FLAG_SKIPWORDS;
- dictionary_skipwords = length;
- return(1);
- }
- }
-
- for(length=0; length<N_WORD_BYTES; length++)
- {
- if(((c = *word1++)==0) || (c == ' '))
- break;
- word[length] = c;
- }
- word[length] = 0;
-
- found = LookupDict2(tr, word, word1, ph_out, flags, end_flags, wtab);
-
- if(flags[0] & FLAG_MAX3)
- {
- if(strcmp(ph_out, tr->phonemes_repeat) == 0)
- {
- tr->phonemes_repeat_count++;
- if(tr->phonemes_repeat_count > 3)
- {
- ph_out[0] = 0;
- }
- }
- else
- {
- strncpy0(tr->phonemes_repeat, ph_out, sizeof(tr->phonemes_repeat));
- tr->phonemes_repeat_count = 1;
- }
- }
- else
- {
- tr->phonemes_repeat_count = 0;
- }
-
-
- if((found == 0) && (flags[1] & FLAG_ACCENT))
- {
- int letter;
- word2 = word;
- if(*word2 == '_') word2++;
- len = utf8_in(&letter, word2);
- LookupAccentedLetter(tr,letter, ph_out);
- found = word2 + len;
- }
-
- if(found == 0)
- {
- ph_out[0] = 0;
-
- // try modifications to find a recognised word
-
- if((end_flags & FLAG_SUFX_E_ADDED) && (word[length-1] == 'e'))
- {
- // try removing an 'e' which has been added by RemoveEnding
- word[length-1] = 0;
- found = LookupDict2(tr, word, word1, ph_out, flags, end_flags, wtab);
- }
- else
- if((end_flags & SUFX_D) && (word[length-1] == word[length-2]))
- {
- // try removing a double letter
- word[length-1] = 0;
- found = LookupDict2(tr, word, word1, ph_out, flags, end_flags, wtab);
- }
- }
-
- if(found)
- {
- // if textmode is the default, then words which have phonemes are marked.
- if(tr->langopts.textmode)
- *flags ^= FLAG_TEXTMODE;
-
- if(*flags & FLAG_TEXTMODE)
- {
- // the word translates to replacement text, not to phonemes
-
- if(end_flags & FLAG_ALLOW_TEXTMODE)
- {
- // only use replacement text if this is the original word, not if a prefix or suffix has been removed
- word_replacement[0] = 0;
- word_replacement[1] = ' ';
- sprintf(&word_replacement[2],"%s ",ph_out); // replacement word, preceded by zerochar and space
-
- word1 = *wordptr;
- *wordptr = &word_replacement[2];
-
- if(option_phonemes == 2)
- {
- len = found - word1;
- memcpy(word,word1,len); // include multiple matching words
- word[len] = 0;
- fprintf(f_trans,"Replace: %s %s\n",word,*wordptr);
- }
- }
-
- ph_out[0] = 0;
- return(0);
- }
-
- return(1);
- }
-
- ph_out[0] = 0;
- return(0);
-} // end of LookupDictList
-
-
-
-int Lookup(Translator *tr, const char *word, char *ph_out)
-{//===================================================
- unsigned int flags[2]={0,0};
- char* word1 = (char *)word;
- return(LookupDictList(tr, &word1, ph_out, flags, 0, NULL));
-}
-
-
-
-int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
-{//========================================================================
-/* Removes a standard suffix from a word, once it has been indicated by the dictionary rules.
- end_type: bits 0-6 number of letters
- bits 8-14 suffix flags
-
- word_copy: make a copy of the original word
- This routine is language specific. In English it deals with reversing y->i and e-dropping
- that were done when the suffix was added to the original word.
-*/
-
- int i;
- char *word_end;
- int len_ending;
- int end_flags;
- const char *p;
- int len;
- static char ending[12];
-
- // these lists are language specific, but are only relevent if the 'e' suffix flag is used
- static const char *add_e_exceptions[] = {
- "ion", NULL };
-
- static const char *add_e_additions[] = {
- "c", "rs", "ir", "ur", "ath", "ns", "lu", NULL };
-
- for(word_end = word; *word_end != ' '; word_end++)
- {
- /* replace discarded 'e's */
- if(*word_end == REPLACED_E)
- *word_end = 'e';
- }
- i = word_end - word;
- memcpy(word_copy,word,i);
- word_copy[i] = 0;
-
- // look for multibyte characters to increase the number of bytes to remove
- for(len_ending = i = (end_type & 0x3f); i>0 ;i--) // num.of characters of the suffix
- {
- word_end--;
- while((*word_end & 0xc0) == 0x80)
- {
- word_end--; // for multibyte characters
- len_ending++;
- }
- }
-
- // remove bytes from the end of the word and replace them by spaces
- for(i=0; i<len_ending; i++)
- {
- ending[i] = word_end[i];
- word_end[i] = ' ';
- }
- ending[i] = 0;
- word_end--; /* now pointing at last character of stem */
-
- end_flags = (end_type & 0xfff0) | FLAG_SUFX;
-
- /* add an 'e' to the stem if appropriate,
- if stem ends in vowel+consonant
- or stem ends in 'c' (add 'e' to soften it) */
-
- if(end_type & SUFX_I)
- {
- if(word_end[0] == 'i')
- word_end[0] = 'y';
- }
-
- if(end_type & SUFX_E)
- {
- // add 'e' to end of stem
- if(IsLetter(tr, word_end[-1],LETTERGP_VOWEL2) && IsLetter(tr, word_end[0],1))
- {
- // vowel(incl.'y') + hard.consonant
-
- for(i=0; (p = add_e_exceptions[i]) != NULL; i++)
- {
- len = strlen(p);
- if(memcmp(p,&word_end[1-len],len)==0)
- {
- break;
- }
- }
- if(p == NULL)
- end_flags |= FLAG_SUFX_E_ADDED; // no exception found
- }
- else
- {
- for(i=0; (p = add_e_additions[i]) != NULL; i++)
- {
- len = strlen(p);
- if(memcmp(p,&word_end[1-len],len)==0)
- {
- end_flags |= FLAG_SUFX_E_ADDED;
- break;
- }
- }
- }
-
- if(end_flags & FLAG_SUFX_E_ADDED)
- {
- word_end[1] = 'e';
-#ifdef LOG_TRANSLATE
-if(option_phonemes == 2)
-{
- fprintf(f_trans,"add e\n");
-}
-#endif
- }
- }
-
- if((end_type & SUFX_V) && (tr->expect_verb==0))
- tr->expect_verb = 1; // this suffix indicates the verb pronunciation
-
-
- if((strcmp(ending,"s")==0) || (strcmp(ending,"es")==0))
- end_flags |= FLAG_SUFX_S;
-
- if(strcmp(ending,"'s")==0)
- end_flags &= ~FLAG_SUFX; // don't consider 's as an added suffix
-
- return(end_flags);
-} /* end of RemoveEnding */
-
-
diff --git a/navit/support/espeak/espeak-data/af_dict b/navit/support/espeak/espeak-data/af_dict
deleted file mode 100644
index 7819c9fe0..000000000
--- a/navit/support/espeak/espeak-data/af_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/ca_dict b/navit/support/espeak/espeak-data/ca_dict
deleted file mode 100644
index b9a4ea43a..000000000
--- a/navit/support/espeak/espeak-data/ca_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/config b/navit/support/espeak/espeak-data/config
deleted file mode 100755
index be1b6246a..000000000
--- a/navit/support/espeak/espeak-data/config
+++ /dev/null
@@ -1,9 +0,0 @@
-//pa_device 7
-
-// play a sound for punctuation, rather than speak its name
-//soundicon _( /usr/share/sounds/sound-icons/left-round-bracket
-//soundicon _) /usr/share/sounds/sound-icons/right-round-bracket
-//soundicon _[ /usr/share/sounds/sound-icons/left-square-bracket
-//soundicon _] /usr/share/sounds/sound-icons/right-square-bracket
-//soundicon _{ /usr/share/sounds/sound-icons/left-brace
-//soundicon _} /usr/share/sounds/sound-icons/right-brace
diff --git a/navit/support/espeak/espeak-data/cs_dict b/navit/support/espeak/espeak-data/cs_dict
deleted file mode 100644
index 3391b98b2..000000000
--- a/navit/support/espeak/espeak-data/cs_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/cy_dict b/navit/support/espeak/espeak-data/cy_dict
deleted file mode 100644
index 13a768030..000000000
--- a/navit/support/espeak/espeak-data/cy_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/da_dict b/navit/support/espeak/espeak-data/da_dict
deleted file mode 100644
index 75ccbd670..000000000
--- a/navit/support/espeak/espeak-data/da_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/de_dict b/navit/support/espeak/espeak-data/de_dict
deleted file mode 100644
index 988f4c31b..000000000
--- a/navit/support/espeak/espeak-data/de_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/el_dict b/navit/support/espeak/espeak-data/el_dict
deleted file mode 100644
index a6ab63dee..000000000
--- a/navit/support/espeak/espeak-data/el_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/en_dict b/navit/support/espeak/espeak-data/en_dict
deleted file mode 100644
index d15b0e9ab..000000000
--- a/navit/support/espeak/espeak-data/en_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/eo_dict b/navit/support/espeak/espeak-data/eo_dict
deleted file mode 100644
index 155523963..000000000
--- a/navit/support/espeak/espeak-data/eo_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/es_dict b/navit/support/espeak/espeak-data/es_dict
deleted file mode 100644
index 203da2639..000000000
--- a/navit/support/espeak/espeak-data/es_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/fi_dict b/navit/support/espeak/espeak-data/fi_dict
deleted file mode 100644
index a08d45a6f..000000000
--- a/navit/support/espeak/espeak-data/fi_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/fr_dict b/navit/support/espeak/espeak-data/fr_dict
deleted file mode 100644
index e66708e04..000000000
--- a/navit/support/espeak/espeak-data/fr_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/grc_dict b/navit/support/espeak/espeak-data/grc_dict
deleted file mode 100644
index 0aeab45e0..000000000
--- a/navit/support/espeak/espeak-data/grc_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/hbs_dict b/navit/support/espeak/espeak-data/hbs_dict
deleted file mode 100644
index 91ee7ba4b..000000000
--- a/navit/support/espeak/espeak-data/hbs_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/hi_dict b/navit/support/espeak/espeak-data/hi_dict
deleted file mode 100644
index 388d3f246..000000000
--- a/navit/support/espeak/espeak-data/hi_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/hu_dict b/navit/support/espeak/espeak-data/hu_dict
deleted file mode 100644
index 5a1f21165..000000000
--- a/navit/support/espeak/espeak-data/hu_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/hy_dict b/navit/support/espeak/espeak-data/hy_dict
deleted file mode 100644
index 18c3e2027..000000000
--- a/navit/support/espeak/espeak-data/hy_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/id_dict b/navit/support/espeak/espeak-data/id_dict
deleted file mode 100644
index 3c9967ce8..000000000
--- a/navit/support/espeak/espeak-data/id_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/is_dict b/navit/support/espeak/espeak-data/is_dict
deleted file mode 100644
index 10cf846f8..000000000
--- a/navit/support/espeak/espeak-data/is_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/it_dict b/navit/support/espeak/espeak-data/it_dict
deleted file mode 100644
index 40cf952a2..000000000
--- a/navit/support/espeak/espeak-data/it_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/jbo_dict b/navit/support/espeak/espeak-data/jbo_dict
deleted file mode 100644
index f7ebcf454..000000000
--- a/navit/support/espeak/espeak-data/jbo_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/ku_dict b/navit/support/espeak/espeak-data/ku_dict
deleted file mode 100644
index 18d285845..000000000
--- a/navit/support/espeak/espeak-data/ku_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/la_dict b/navit/support/espeak/espeak-data/la_dict
deleted file mode 100644
index 3ef82f832..000000000
--- a/navit/support/espeak/espeak-data/la_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/lv_dict b/navit/support/espeak/espeak-data/lv_dict
deleted file mode 100644
index 3ecb61b51..000000000
--- a/navit/support/espeak/espeak-data/lv_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/af1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/af1_phtrans
deleted file mode 100644
index fc9ad0179..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/af1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/ca1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/ca1_phtrans
deleted file mode 100644
index 4fe4188e5..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/ca1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/cr1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/cr1_phtrans
deleted file mode 100644
index 15e2c4988..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/cr1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/cs_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/cs_phtrans
deleted file mode 100644
index 85ebb03e3..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/cs_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/de2_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/de2_phtrans
deleted file mode 100644
index c5af1a7c4..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/de2_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/de4_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/de4_phtrans
deleted file mode 100644
index b10fc8441..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/de4_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/de6_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/de6_phtrans
deleted file mode 100644
index 4cb62d9c2..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/de6_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/en1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/en1_phtrans
deleted file mode 100644
index c847d1703..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/en1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/es_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/es_phtrans
deleted file mode 100644
index b959f92c1..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/es_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/fr1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/fr1_phtrans
deleted file mode 100644
index 1a242b36f..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/fr1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/gr2_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/gr2_phtrans
deleted file mode 100644
index b3775abbd..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/gr2_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/grc-de6_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/grc-de6_phtrans
deleted file mode 100644
index e41d3105c..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/grc-de6_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/hu1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/hu1_phtrans
deleted file mode 100644
index 26dad49a0..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/hu1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/id1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/id1_phtrans
deleted file mode 100644
index 452de8c8a..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/id1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/in1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/in1_phtrans
deleted file mode 100644
index 7f4631899..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/in1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/it3_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/it3_phtrans
deleted file mode 100644
index 6d826477b..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/it3_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/la1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/la1_phtrans
deleted file mode 100644
index 1f2eb9290..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/la1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/nl_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/nl_phtrans
deleted file mode 100644
index d982c1845..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/nl_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/pl1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/pl1_phtrans
deleted file mode 100644
index 9d4e50fd7..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/pl1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/pt1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/pt1_phtrans
deleted file mode 100644
index c5172f7b3..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/pt1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/pt_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/pt_phtrans
deleted file mode 100644
index 9de1630d9..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/pt_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/ptbr4_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/ptbr4_phtrans
deleted file mode 100644
index 0b94de719..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/ptbr4_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/ptbr_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/ptbr_phtrans
deleted file mode 100644
index a1dbba000..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/ptbr_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/ro1_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/ro1_phtrans
deleted file mode 100644
index 4aeaf54ec..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/ro1_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/sv2_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/sv2_phtrans
deleted file mode 100644
index ae119d86e..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/sv2_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/sv_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/sv_phtrans
deleted file mode 100644
index bb556eb28..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/sv_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/us3_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/us3_phtrans
deleted file mode 100644
index 449b419ac..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/us3_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mbrola_ph/us_phtrans b/navit/support/espeak/espeak-data/mbrola_ph/us_phtrans
deleted file mode 100644
index bdeef5d1a..000000000
--- a/navit/support/espeak/espeak-data/mbrola_ph/us_phtrans
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/mk_dict b/navit/support/espeak/espeak-data/mk_dict
deleted file mode 100644
index a6cf3dc53..000000000
--- a/navit/support/espeak/espeak-data/mk_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/nl_dict b/navit/support/espeak/espeak-data/nl_dict
deleted file mode 100644
index f286bee90..000000000
--- a/navit/support/espeak/espeak-data/nl_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/no_dict b/navit/support/espeak/espeak-data/no_dict
deleted file mode 100644
index 4f8f84f0d..000000000
--- a/navit/support/espeak/espeak-data/no_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/pap_dict b/navit/support/espeak/espeak-data/pap_dict
deleted file mode 100644
index 11eb4b515..000000000
--- a/navit/support/espeak/espeak-data/pap_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/phondata b/navit/support/espeak/espeak-data/phondata
deleted file mode 100644
index d46417ed0..000000000
--- a/navit/support/espeak/espeak-data/phondata
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/phondata-manifest b/navit/support/espeak/espeak-data/phondata-manifest
deleted file mode 100644
index 4197d142d..000000000
--- a/navit/support/espeak/espeak-data/phondata-manifest
+++ /dev/null
@@ -1,729 +0,0 @@
-# This file lists the type of data that has been compiled into the
-# phondata file
-#
-# The first character of a line indicates the type of data:
-# S - A SPECT_SEQ structure
-# W - A wavefile segment
-# E - An envelope
-#
-# Address is the displacement within phondata of this item
-#
-# Address Data file
-# ------- ---------
-W 0x00004 ustop/null
-S 0x00154 vowel/@
-S 0x00218 vowel/@-
-W 0x002dc ustop/percus10
-S 0x004e8 j/j@
-S 0x005ec j2/j2@
-S 0x006b0 w/w@
-S 0x00774 l/l@
-S 0x00838 l^/j2@
-S 0x008fc r/r@
-S 0x009c0 r2/r2@
-S 0x00a84 m/m@
-S 0x00b88 n/n@
-S 0x00c8c nn/nn@
-S 0x00d50 n^/n^@
-S 0x00ed4 l/L1_@L
-S 0x00fd8 l/L2_@L
-S 0x010dc l/l_@
-S 0x011a0 l/xl
-S 0x01224 w/xw
-S 0x012a8 j/xj
-S 0x0132c r/xr
-S 0x013b0 r3/r_@
-S 0x01474 j/ja
-S 0x01578 j2/j2a
-S 0x0163c w/wa
-S 0x01700 l/la
-S 0x01784 l^/j2a
-S 0x01848 r/ra
-S 0x0190c r2/r2a
-S 0x019d0 m/ma
-S 0x01ad4 n/na
-S 0x01bd8 nn/nna
-S 0x01c9c n^/n^a
-S 0x01de0 l/L1_aL
-S 0x01ee4 l/L2_aL
-S 0x01fe8 l/l_a
-S 0x020ac r3/r_a
-S 0x02170 j/je
-S 0x02274 j2/j2e
-S 0x02338 w/we
-S 0x023fc l/le
-S 0x02480 l^/j2e
-S 0x02544 r/re
-S 0x02608 r2/r2e
-S 0x0270c m/me
-S 0x02810 n/ne
-S 0x02914 nn/nne
-S 0x029d8 n^/n^e
-S 0x02b5c l/L1_eL
-S 0x02c20 l/L2_eL
-S 0x02ce4 l/l_e
-S 0x02d68 r3/r_e
-S 0x02e2c j/ji
-S 0x02ef0 j2/j2i
-S 0x02fb4 w/wi
-S 0x03078 l/li
-S 0x0313c l^/j2i
-S 0x03200 r/ri
-S 0x032c4 r2/r2i
-S 0x03388 m/mi
-S 0x034cc n/ni
-S 0x035d0 nn/nni
-S 0x03694 n^/n^i
-S 0x03818 l/L1_iL
-S 0x0391c l/L2_iL
-S 0x03a20 l/l_i
-S 0x03ae4 nn/inn
-S 0x03ba8 j2/xj2
-S 0x03c2c r3/r_i
-S 0x03cf0 j/jo
-S 0x03e34 j2/j2o
-S 0x03f38 w/wo
-S 0x03ffc l/lo
-S 0x04100 l^/j2o
-S 0x04204 r/ro
-S 0x042c8 r2/r2o
-S 0x0438c m/mo
-S 0x04490 n/no
-S 0x04594 nn/nno
-S 0x04658 n^/n^o
-S 0x0481c l/L1_oL
-S 0x04960 l/L2_oL
-S 0x04aa4 l/l_o
-S 0x04ba8 r3/r_o
-S 0x04c6c j/ju
-S 0x04d30 j2/j2u
-S 0x04df4 w/wu
-S 0x04eb8 l/lu
-S 0x04f7c l^/j2u
-S 0x05080 r/ru
-S 0x05144 r2/r2u
-S 0x05208 m/mu
-S 0x0530c n/nu
-S 0x05410 nn/nnu
-S 0x054d4 n^/n^u
-S 0x05658 l/L1_uL
-S 0x0575c l/L2_uL
-S 0x05860 l/l_u
-S 0x05924 r3/r_u
-S 0x059e8 r/r
-S 0x05aac r/_r
-S 0x05b70 r/tr
-S 0x05bf4 r/r_
-S 0x05d38 r3/r_
-W 0x05dbc r3/rx
-S 0x07114 r3/r_n
-S 0x07198 r/rr
-S 0x0725c r/trr
-S 0x07320 r2/_r2
-S 0x073e4 r3/r_trill2
-W 0x074a8 r3/r_trill2.wav
-S 0x07bb4 r3/r_trill
-W 0x07cb8 r3/r_trill.wav
-W 0x08724 r3/r_trill3.wav
-S 0x08b68 r3/r_uvl
-W 0x08c6c r3/r_uvl.wav
-S 0x09b74 l/l
-S 0x09bf8 l/_l
-S 0x09cbc l/tl
-S 0x09d40 l/l_long
-S 0x09dc4 l/l_
-S 0x09e48 l^/l^
-S 0x09f4c l^/_l^
-S 0x0a050 w/w
-S 0x0a0d4 w/_w
-S 0x0a198 w/w_
-S 0x0a25c w/iw_
-S 0x0a320 j/_j
-S 0x0a3a4 j/j_
-S 0x0a468 j2/_j2
-S 0x0a4ec m/_m
-S 0x0a570 m/m_
-S 0x0a634 m/mj
-S 0x0a6f8 n/_n
-S 0x0a77c n/n_
-S 0x0a840 n/nj
-S 0x0a904 n/_nr
-S 0x0a988 n/nr_
-S 0x0aa4c n^/_n^
-S 0x0aad0 n^/n^_
-S 0x0ac14 nn/_nn
-S 0x0ac98 nn/nn_
-S 0x0ad5c nn/nnj
-S 0x0ade0 r3/@tap
-S 0x0af24 r3/@tap2
-S 0x0b068 r3/@tap_rfx
-S 0x0b1ac b/b
-W 0x0b2b0 x/b
-S 0x0b414 b/b_
-W 0x0b4d8 x/b_
-S 0x0b8f0 b/ba
-S 0x0b9f4 b/b@
-S 0x0baf8 b/be
-S 0x0bbfc b/bi
-S 0x0bd00 b/bo
-S 0x0be04 b/bu
-S 0x0bf08 b/b@2
-S 0x0c00c b/xb
-S 0x0c0d0 d/d
-W 0x0c194 x/d
-S 0x0c3b0 d/d_
-W 0x0c474 x/d_
-S 0x0c89c d/dr
-S 0x0c920 d/xd
-W 0x0c9e4 x/d_dnt
-S 0x0ccc8 d/tap3
-S 0x0cdcc d/tap1
-S 0x0ce90 dzh/dzh
-W 0x0cf54 x/dzh
-S 0x0d360 dzh/dzh_
-W 0x0d424 x/dzh_
-S 0x0de5c dzh/xdzh
-W 0x0df20 x/dz_pzd
-S 0x0e380 dzh/dz_pzd
-S 0x0e444 dzh/dz_pzd_
-S 0x0e508 dzh/xdz_pzd
-S 0x0e5cc g/g
-W 0x0e690 x/g2
-S 0x0e918 g/g_
-W 0x0e9dc x/g_
-S 0x0ed9c g/xg
-S 0x0ee60 g2/g
-W 0x0ef24 x/g2_
-S 0x0f2e4 g2/g_
-S 0x0f3a8 g2/xg
-S 0x0f46c voc/bh
-W 0x0f530 vocw/v
-S 0x0fe30 voc/v_
-S 0x0fef4 voc/v
-S 0x0fff8 voc/vj
-S 0x100fc voc/dh
-W 0x101c0 vocw/dh
-S 0x10ac8 voc/dh_
-S 0x10b8c voc/z
-W 0x10c50 ufric/s_
-S 0x11704 voc/z_
-S 0x117c8 voc/zh
-W 0x1188c vocw/zh
-S 0x121f4 voc/zh_
-W 0x122b8 vocw/zh_rfx
-S 0x12b48 voc/z_pzd
-W 0x12c0c ufric/s_pzd
-S 0x13544 voc/z_pzd_
-W 0x13608 ufric/s_pzd_
-W 0x1410c ufric/sh_pzd
-W 0x14a40 ufric/sh_pzd_
-S 0x15508 voc/j
-W 0x1560c ufric/ch
-S 0x15d24 voc/Q
-W 0x15de8 vocw/Q
-S 0x165f4 voc/Q_
-W 0x166b8 vocw/Q_
-S 0x16ec4 voc/Q_ulv
-W 0x16fc8 ufric/xx
-W 0x17ac4 ustop/p
-W 0x17e34 ustop/p_
-W 0x18644 ustop/pr
-W 0x18a8c ustop/p_unasp
-W 0x18db8 ustop/pl
-W 0x191b0 ustop/t
-W 0x195e4 ustop/t_
-W 0x19aa4 ustop/t_dnt
-W 0x19eb4 ustop/tr
-W 0x1a614 ustop/t_hi
-W 0x1a9b0 ustop/tsh
-W 0x1aff0 ustop/tsh_
-W 0x1b930 ustop/ts_pzd
-W 0x1c034 ustop/c
-W 0x1c2e4 ustop/t_pzd
-W 0x1c730 ustop/k
-W 0x1cc04 ustop/k_
-W 0x1d0c0 ustop/kr
-W 0x1d700 ustop/k_unasp
-W 0x1dbd4 ustop/kl
-W 0x1e204 ustop/ki
-W 0x1e7cc ustop/q
-W 0x1e938 ustop/q_u
-W 0x1ea58 ufric/f
-W 0x1f248 ufric/f_
-W 0x1fd18 ufric/th
-W 0x205b0 ufric/th_
-W 0x20e30 ufric/s
-W 0x215d0 ufric/s!
-W 0x21e80 ufric/sh
-W 0x22830 ufric/sh_
-W 0x232e0 ufric/sh_rfx
-W 0x23c7c ufric/ll
-W 0x246c0 ufric/ch_
-W 0x24fe8 ufric/x_hr
-W 0x258fc ufric/x
-W 0x26260 h/h_
-W 0x2690c h/h@
-W 0x26e60 h/ha
-W 0x274dc h/he
-W 0x27b70 h/hi
-W 0x28108 h/ho
-W 0x287c4 h/hu
-S 0x28ee8 vowel/a_2
-S 0x28fec vowel/a#
-S 0x290f0 vowel/e
-S 0x291f4 vowel/ee_1
-S 0x29338 vowel/i
-S 0x2943c vowel/o
-S 0x29580 vowel/oo_4
-S 0x29684 vowel/u_bck
-S 0x29788 vowel/uu_2
-S 0x2988c vowel/y
-S 0x299d0 vowel/y#
-S 0x29ad4 vdiph/au_4
-S 0x29c58 vdiph/eu
-S 0x29d9c vdiph2/iu
-S 0x29f20 vdiph/ai
-S 0x2a064 vdiph/ei
-S 0x2a1a8 vdiph/eei
-S 0x2a32c vdiph/oi
-S 0x2a4f0 vdiph/ui
-S 0x2a634 w/w2
-W 0x2a6f8 ustop/p_unasp_
-W 0x2a834 ustop/ts
-W 0x2b290 ustop/ts_
-W 0x2bbf0 ustop/t_dnt2
-S 0x2be48 vwl_en/@L
-S 0x2bf0c vowel/a
-S 0x2c010 vowel/a#_3
-S 0x2c0d4 vowel/ee_2
-S 0x2c1d8 vowel/ii_4
-S 0x2c2dc vowel/ii_en
-S 0x2c3a0 vowel/0
-S 0x2c4a4 vowel/V_2
-S 0x2c5a8 vowel/uu
-S 0x2c6ac vowel/aa_2
-S 0x2c830 vowel/3_en
-S 0x2c974 vowel/i_en
-S 0x2cab8 w/wi2
-S 0x2cbbc vowel/oo_en
-S 0x2cd00 vdiph2/uw_2
-S 0x2ce44 vwl_en/u_L
-S 0x2cf88 vdiph/au
-S 0x2d10c vdiph/@u_en
-S 0x2d290 vdiph/ai_2
-S 0x2d454 vdiph/ooi
-S 0x2d618 vdiph2/ii@
-S 0x2d79c vdiph2/uu@
-S 0x2d8e0 vwl_en/aI@
-S 0x2daa4 vwl_en/aU@
-S 0x2dc28 vowelr/V_r
-S 0x2dd6c vowelr/V3_r
-S 0x2deb0 vnasal/aa_n2
-S 0x2dff4 vnasal/ee_n
-S 0x2e138 vnasal/oo_n
-S 0x2e23c vowel/oe
-S 0x2e300 vowel/@_fr
-S 0x2e3c4 vowel/ee
-S 0x2e4c8 vowel/ii
-S 0x2e5cc vowel/e_3
-S 0x2e6d0 vowel/0_2
-S 0x2e7d4 vowel/o-_2
-S 0x2e8d8 vowel/aa_5
-S 0x2ea1c vwl_en_n/aa_5
-S 0x2eb60 vowel/3_2
-S 0x2eca4 vowel/oo_1
-S 0x2ede8 vwl_en_n/O@
-S 0x2eeec vdiph2/uw_4
-S 0x2f030 vdiph/eeu_3
-S 0x2f174 vdiph/ae_2
-S 0x2f2f8 vdiph2/ee@
-S 0x2f43c vdiph2/i@
-S 0x2f600 vwl_en_us/3_us
-S 0x2f704 vowel/@_4
-S 0x2f7c8 vowel/@_low2
-S 0x2f88c vwl_en_us/a
-S 0x2f990 vnasal/ee_n2
-S 0x2fad4 vwl_en_us/ee
-S 0x2fbd8 vowel/ii#_3
-S 0x2fcdc vowel/ii_final
-S 0x2fde0 vowel/aa_8
-S 0x2fee4 vwl_en_us/oor
-S 0x30028 vowel/V_6
-S 0x3012c vowel/8_2
-S 0x30230 vwl_en_us/ar
-S 0x30374 vwl_en_us/3_us2
-S 0x304b8 vowel/0_3
-S 0x305bc vwl_en_us/or
-S 0x30700 vowel/aa#
-S 0x30804 vdiph2/uw
-S 0x30948 vdiph/aoo
-S 0x30a8c vdiph/8u
-S 0x30bd0 vdiph/aae
-S 0x30d54 vdiph2/ei_4
-S 0x30e98 vdiph/ooi_4
-S 0x30fdc vwl_en_us/er
-S 0x31120 vwl_en_us/ir
-S 0x31264 vwl_en_us/ur
-S 0x313a8 vwl_en_us/ai@
-S 0x3152c d/tap2
-S 0x315f0 d/x_tap
-S 0x316b4 vowel/@_3
-S 0x31778 vowel/V
-S 0x3187c vowel/a_3
-S 0x31980 vowel/e_e
-S 0x31a84 vowel/e#
-S 0x31b88 vowel/e_5
-S 0x31c8c vowel/oo_2
-S 0x31d90 vowel/V_4
-S 0x31e94 vowel/u#_4
-S 0x31f98 vowelr/aa_r
-S 0x3215c vdiph2/e@
-S 0x322a0 vowel/i_5
-S 0x323a4 vowel/oo
-S 0x324a8 vowelr/oo_r
-S 0x325ac vowelr/o_r
-S 0x32730 vowel/u#
-S 0x32834 vdiph/au#
-S 0x32978 vowel/o_3
-S 0x32a7c vdiph/ai_7
-S 0x32c00 vwl_en/aI@_2
-S 0x32d84 vwl_en/@L_2
-S 0x32e88 vowel/e_2
-S 0x32f8c vdiph/0i_2
-S 0x33110 vowelr/i_r
-S 0x33254 vdiph2/u#@
-S 0x33398 vowel/@_low
-S 0x3345c vowel/&
-S 0x33560 vowel/e_mid
-S 0x33664 vowel/V_3
-S 0x33728 vowel/o-_3
-S 0x3382c vwl_en_rp/aa
-S 0x33970 vowel/3_3
-S 0x33ab4 vowel/u_fnt
-S 0x33bb8 vdiph/au_3
-S 0x33d3c vdiph/@u_2
-S 0x33e80 vdiph/ai_6
-S 0x34044 vdiph2/ei_2
-S 0x34188 vdiph/ooi_3
-S 0x3430c vdiph2/ee@_2
-S 0x34450 vwl_en_rp/i@
-S 0x345d4 vowel/o_mid
-S 0x346d8 vwl_en_rp/aU@
-S 0x3485c vowel/ii_6
-S 0x34920 vdiph2/ei_3
-S 0x34a64 vdiph/@u
-S 0x34ba8 vdiph/Vu_2
-S 0x34d2c vdiph/@i_3
-S 0x34e70 vdiph2/i@_2
-S 0x34ff4 vwl_en/ooi@
-S 0x351b8 vowel/@_fnt
-S 0x352bc vowel/uu_bck
-S 0x353c0 vowel/i_fnt
-S 0x354c4 vdiph2/o_oo
-S 0x35608 vowel/u
-S 0x3570c vdiph/aau_2
-S 0x35850 vdiph2/ie
-S 0x35994 vwl_af/@
-S 0x35a58 vwl_af/r@
-S 0x35b1c vowel/e_mid2
-S 0x35c20 vwl_af/I
-S 0x35ce4 vowel/oo_3
-S 0x35da8 vowel/uu_3
-S 0x35e6c vowel/ee_3
-S 0x35f30 l/L_eL_af
-S 0x35ff4 vowel/aa_3
-S 0x360f8 vdiph/i@_2
-S 0x3627c vowel/i_3
-S 0x36380 vdiph2/o@
-S 0x36504 vowel/y_3
-S 0x36608 vdiph2/iu_3
-S 0x367cc vdiph/Vu
-S 0x36950 vdiph/ai_4
-S 0x36ad4 vdiph/aai_2
-S 0x36c98 vdiph/@i_2
-S 0x36ddc vdiph/ooi_2
-S 0x36f60 vdiph/oi_2
-S 0x37124 vdiph/ui_2
-S 0x372a8 vdiph/y#y_2
-S 0x3742c vdiph2/y#@
-S 0x37570 vnasal/aa_n3
-S 0x376b4 vnasal/e_n
-S 0x377b8 vnasal/o_n2
-W 0x378fc ufric/x2
-S 0x38254 vowel/ii_3
-S 0x38358 vowel/ii#
-S 0x3845c vowel/i#
-S 0x38560 vowel/o_2
-S 0x386a4 vdiph2/iu_4
-S 0x387e8 vdiph/ui_3
-S 0x3896c vowel/aa_6
-S 0x38ab0 vowel/i_2
-S 0x38bb4 vdiph/ai_5
-S 0x38cf8 vowel/yy_4
-S 0x38dfc l/l_3
-S 0x38e80 j/_j_short
-S 0x38f04 vdiph/eei_2
-S 0x39048 vowelr/r-voc
-S 0x3918c vwl_hi/l-voc
-S 0x39290 vowel/i_4
-S 0x39394 vowel/aa_9
-S 0x39498 vowel/u_2
-S 0x3959c vowel/uu_4
-S 0x396a0 vdiph/aai_3
-S 0x39824 vdiph/&i
-S 0x39968 vdiph/y#i
-S 0x39aac vdiph/ui_4
-S 0x39bf0 vdiph/yi
-S 0x39d34 vdiph/aau
-S 0x39eb8 vdiph/ou
-S 0x39ffc vdiph/eu_2
-S 0x3a140 vdiph2/iu_2
-S 0x3a2c4 vdiph/&y
-S 0x3a408 vdiph/eey
-S 0x3a54c vdiph/y#y
-S 0x3a690 vdiph2/iy
-S 0x3a7d4 vdiph2/uo
-S 0x3a918 vdiph2/y-y#
-S 0x3aa5c r3/r_trill_short
-W 0x3ab60 ufric/s_continue
-W 0x3b310 h/hu_fi
-S 0x3bc00 vwl_fr/tr
-S 0x3bc84 vwl_fr/@R5
-S 0x3bd48 vowel/@_hgh
-S 0x3be0c vwl_fr/r_@
-S 0x3bed0 vowel/a_6
-S 0x3bfd4 vwl_fr/r_a
-S 0x3c058 vowel/e_8
-S 0x3c15c vwl_fr/r_e
-S 0x3c220 vwl_fr/r_i
-S 0x3c2e4 vwl_fr/r_o
-S 0x3c3a8 vowel/u_bck2
-S 0x3c4ac vwl_fr/r_u
-S 0x3c570 vowel/y_2
-S 0x3c6b4 l/l_y
-S 0x3c778 vwl_fr/r_y
-S 0x3c83c vowel/@_5
-S 0x3c900 vwl_fr/r_@2
-S 0x3c984 vwl_fr/w_a
-S 0x3cac8 vdiph/yi_fr
-S 0x3cc4c vnasal/aa_n4
-S 0x3cd90 vwl_fr/r_a~
-S 0x3ce14 vnasal/W_n
-S 0x3cf58 vowel/a_en
-S 0x3d05c vwl_fr/r
-S 0x3d0e0 r3/r_2
-W 0x3d164 ustop/t_short
-S 0x3d3a8 vowel/yy
-S 0x3d4ac vdiph/ae
-S 0x3d5f0 vowel/aa
-S 0x3d6f4 vwl_fr/@R2
-S 0x3d7f8 vowel/@_bck
-S 0x3d8fc vowel/i_6
-S 0x3da00 vdiph/ee-e
-S 0x3db44 vnasal/i_n2
-S 0x3dc48 vnasal/aa_n
-S 0x3dd8c vnasal/V_n
-S 0x3de90 vnasal/oo_n2
-S 0x3dfd4 vnasal/o_n
-S 0x3e118 vnasal/u_n
-S 0x3e21c vdiph/aau_3
-S 0x3e3a0 l^/l_rfx
-S 0x3e464 voc/v#
-S 0x3e568 voc/v#_
-W 0x3e62c ustop/p_asp
-S 0x3eb30 d/xd3
-W 0x3ebf4 ustop/ts_pzd2
-W 0x3ef28 ustop/ts_pzd_
-W 0x3f3ec ustop/k_asp
-S 0x3faf0 vowel/a_5
-S 0x3fbf4 vowel/u#_3
-S 0x3fcf8 vowel/u#_2
-S 0x3fdfc vowel/y#_2
-S 0x3ff00 vowel/8_7
-S 0x40004 vdiph/aai
-S 0x40188 vdiph2/uaa
-S 0x4030c vdiph2/ie_2
-W 0x40450 ustop/ts2
-S 0x40920 vowel/o_5
-S 0x40a24 vowel/o_6
-S 0x40ae8 vowel/aa_7
-S 0x40bec vdiph/y#y_3
-S 0x40cf0 vdiph/Vu_3
-S 0x40e74 vdiph2/yu
-S 0x40ff8 voc/Q_less
-W 0x410bc vocw/Q2
-W 0x41988 ufric/sx_sv
-S 0x421d0 vowel/a#_2
-S 0x422d4 vowel/ee#
-S 0x423d8 vowel/i_7
-S 0x424dc vowel/oo_5
-S 0x425e0 vowel/ii#_2
-S 0x426e4 vnasal/ee_u_n
-S 0x42868 vnasal/oo_n3
-W 0x429ec x/d_pzd
-S 0x42e00 d/xd_pzd
-S 0x42ec4 d/xdz
-S 0x42f88 vowel/ee_6
-S 0x4304c vdiph/ou_2
-S 0x43190 vdiph/eei_3
-W 0x432d4 r3/rz_cs
-S 0x43d80 voc/zh_2
-S 0x43e44 vdiph/oou
-W 0x43f88 ufric/sh3
-W 0x4491c ustop/tsh2
-W 0x45028 ustop/ts_pzd3
-S 0x456a8 dzh/dzh2
-W 0x4576c ustop/t_sr
-S 0x45aa4 d/d_dnt
-W 0x45b68 ufric/x_sr
-W 0x463e8 ufric/ch_sr
-W 0x46fc8 ufric/sh_pzd2
-W 0x47b18 ustop/ts_sr
-W 0x482d4 ustop/tsh_sr
-S 0x48bec vwl_ru/ii-
-S 0x48cb0 vwl_ro/mi
-S 0x48df4 vwl_ru/i
-S 0x48ef8 vwl_ru/ii#
-S 0x48fbc vwl_ru/i#
-S 0x490c0 vwl_ru/ii
-S 0x491c4 vwl_ru/e
-S 0x492c8 vwl_ru/E#
-S 0x493cc vwl_ru/E@
-S 0x494d0 vwl_ru/a
-S 0x495d4 vwl_ru/o
-S 0x496d8 vwl_ru/oo
-S 0x4979c vwl_ru/u
-S 0x498a0 vwl_ru/u#
-S 0x499e4 vwl_ru/u#u
-S 0x49b28 vwl_ru/8
-S 0x49bec vwl_ru/ee
-S 0x49d30 vwl_ru/ju
-S 0x49e34 vwl_ru/ja
-S 0x49fb8 vwl_ru/aa
-S 0x4a0bc r3/r_ru2
-W 0x4a1c0 r3/r_ru
-S 0x4a4c4 vowel/ii_5
-S 0x4a5c8 vdiph/eeu_2
-S 0x4a70c d/tap4
-S 0x4a810 voc/v2
-S 0x4a8d4 vnasal/i_n
-S 0x4a9d8 vnasal/a#_n
-S 0x4aadc vnasal/a#u_n
-S 0x4ac20 vnasal/oi_n
-S 0x4ade4 vdiph/0i
-S 0x4afa8 vdiph/eeu
-S 0x4b0ec vowel/i#_5
-S 0x4b1f0 vowel/u_6
-S 0x4b2f4 vwl_fr/@R
-S 0x4b3f8 vwl_ro/ii-
-S 0x4b4bc vwl_ro/li
-S 0x4b5c0 vwl_ro/ni
-S 0x4b6c4 vowel/o-_4
-S 0x4b7c8 vdiph/@u_3
-S 0x4b94c vdiph/ii
-S 0x4bb10 vdiph/i#i
-S 0x4bc54 vdiph2/uw_3
-S 0x4bd98 vdiph2/ea
-S 0x4bedc vdiph2/eo
-S 0x4c060 vdiph2/e[u
-S 0x4c1a4 vdiph2/oa
-S 0x4c2e8 d/tap
-S 0x4c3ac d/tap_i
-S 0x4c470 vowel/a_4
-S 0x4c574 vowel/ee#_2
-S 0x4c678 vowel/y_5
-S 0x4c7bc vowel/yy_3
-S 0x4c8c0 vowel/oe_4
-S 0x4c984 vowel/aa_4
-S 0x4ca88 vwl_sv/r_sv3
-S 0x4cc8c vowel/y_4
-S 0x4cd90 vowel/oe_2
-S 0x4ce94 vwl_no/y#
-S 0x4cf98 vwl_no/&
-S 0x4d09c vwl_no/u#
-S 0x4d1a0 vwl_no/u#2
-S 0x4d2e4 vdiph/ai_3
-S 0x4d428 vwl_no/y#y
-S 0x4d56c vwl_no/au-
-S 0x4d730 vowel/y##
-S 0x4d834 vowel/y#_3
-S 0x4d938 vdiph/ou_3
-S 0x4da3c vdiph/y#i_2
-S 0x4db80 m/m#_
-S 0x4dc84 n/n#_
-S 0x4dd88 n^/n^#_
-S 0x4de8c nn/nn#_
-W 0x4df90 ufric/tl#
-S 0x4e8f8 r3/r#_
-E 0x4e97c envelope/p_level
-E 0x4e9fc envelope/p_fall
-E 0x4ea7c envelope/p_rise
-E 0x4eafc envelope/p_fallrise
-E 0x4eb7c envelope/p_214
-E 0x4ebfc envelope/vi_5amp
-E 0x4ec7c envelope/p_512
-E 0x4ecfc envelope/vi_6amp
-S 0x4ed7c vowel/u_7
-S 0x4ee80 vowel/u#_5
-S 0x4ef84 vowel/@_2
-S 0x4f088 vdiph/&i_3
-S 0x4f20c vdiph/@i
-S 0x4f350 vdiph/u-i
-S 0x4f494 vdiph/aau_4
-S 0x4f618 vdiph2/ii@_3
-S 0x4f79c l/l_vi
-S 0x4f8a0 vwl_zh/ang
-S 0x4faa4 vwl_zh/aang
-S 0x4fce8 vdiph/au_2
-S 0x4fe6c vwl_zh/eng
-S 0x50070 vwl_zh/ing
-S 0x502b4 vwl_zh/ng
-S 0x503f8 vwl_zh/oeng
-S 0x505bc vwl_zh/ong
-S 0x50740 vwl_zh/ung
-S 0x508c4 vowel/8_3
-E 0x509c8 envelope/i_risefall
-W 0x50a48 ustop/t_unasp2
-S 0x50b54 n/n_long_
-W 0x50c18 ustop/k_unasp_
-W 0x50ed4 ustop/tsh_pzd_unasp
-W 0x51724 ustop/tsh_pzd
-W 0x52264 ustop/ts_unasp
-W 0x52adc ustop/ts_rfx_unasp
-W 0x536c8 ustop/ts_rfx
-S 0x543a8 nn/nn2_
-S 0x5446c vwl_zh/a_n
-S 0x54570 vwl_zh/aau
-S 0x546b4 vowel/ii_2
-S 0x54778 vowel/i#_7
-S 0x5487c vowel/i#_6
-S 0x54980 vwl_zh/iaa
-S 0x54ac4 vwl_zh/iaau
-S 0x54c48 vwl_zh/ie
-S 0x54d8c vdiph2/iioo
-S 0x54ed0 vwl_zh/iou
-S 0x55054 vowel/8
-S 0x55158 vwl_zh/uaa
-S 0x5529c vwl_zh/uai
-S 0x55420 vwl_zh/uei
-S 0x555a4 vwl_zh/uo
-S 0x55728 vwl_zh/y&
-S 0x5586c vwl_zh/yee
-S 0x559b0 vdiph2/y@
-S 0x55af4 vowel/u_5
-S 0x55bf8 vnasal/m-
-S 0x55cfc vnasal/n-
-S 0x55e00 vnasal/nn-
-S 0x55f04 vowel/u#_7
-S 0x56008 vowel/8_5
-S 0x5610c vowel/o_7
-S 0x56210 vowel/uu#
-S 0x56314 vowel/8_6
-S 0x56418 vowel/ee_4
-S 0x5651c vdiph2/ye
-S 0x56660 l/l_front_
-S 0x567a4 l/l_front
-S 0x568a8 l/l_4
-S 0x5696c vwl_fr/@R3
-S 0x56a30 vwl_fr/@R4
-S 0x56af4 r/a_
diff --git a/navit/support/espeak/espeak-data/phonindex b/navit/support/espeak/espeak-data/phonindex
deleted file mode 100644
index 8bed38930..000000000
--- a/navit/support/espeak/espeak-data/phonindex
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/phontab b/navit/support/espeak/espeak-data/phontab
deleted file mode 100644
index c0d3a751d..000000000
--- a/navit/support/espeak/espeak-data/phontab
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/pl_dict b/navit/support/espeak/espeak-data/pl_dict
deleted file mode 100644
index e46b00b04..000000000
--- a/navit/support/espeak/espeak-data/pl_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/pt_dict b/navit/support/espeak/espeak-data/pt_dict
deleted file mode 100644
index 9ba2a7a78..000000000
--- a/navit/support/espeak/espeak-data/pt_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/ro_dict b/navit/support/espeak/espeak-data/ro_dict
deleted file mode 100644
index b0a72f406..000000000
--- a/navit/support/espeak/espeak-data/ro_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/ru_dict b/navit/support/espeak/espeak-data/ru_dict
deleted file mode 100644
index 52d652ccd..000000000
--- a/navit/support/espeak/espeak-data/ru_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/sk_dict b/navit/support/espeak/espeak-data/sk_dict
deleted file mode 100644
index a5d7e7c75..000000000
--- a/navit/support/espeak/espeak-data/sk_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/sq_dict b/navit/support/espeak/espeak-data/sq_dict
deleted file mode 100644
index aea3d0625..000000000
--- a/navit/support/espeak/espeak-data/sq_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/sv_dict b/navit/support/espeak/espeak-data/sv_dict
deleted file mode 100644
index 1327d8d0c..000000000
--- a/navit/support/espeak/espeak-data/sv_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/sw_dict b/navit/support/espeak/espeak-data/sw_dict
deleted file mode 100644
index 77e2fd233..000000000
--- a/navit/support/espeak/espeak-data/sw_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/ta_dict b/navit/support/espeak/espeak-data/ta_dict
deleted file mode 100644
index 214e2f4da..000000000
--- a/navit/support/espeak/espeak-data/ta_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/tr_dict b/navit/support/espeak/espeak-data/tr_dict
deleted file mode 100644
index a3f685047..000000000
--- a/navit/support/espeak/espeak-data/tr_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/vi_dict b/navit/support/espeak/espeak-data/vi_dict
deleted file mode 100644
index 24a645a03..000000000
--- a/navit/support/espeak/espeak-data/vi_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/voices/!v/croak b/navit/support/espeak/espeak-data/voices/!v/croak
deleted file mode 100755
index ae76a4c4d..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/croak
+++ /dev/null
@@ -1,11 +0,0 @@
-language variant
-name croak
-gender male 70
-
-pitch 85 117
-flutter 20
-
-formant 0 100 80 110
-
-
-
diff --git a/navit/support/espeak/espeak-data/voices/!v/f1 b/navit/support/espeak/espeak-data/voices/!v/f1
deleted file mode 100755
index 13664a34f..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/f1
+++ /dev/null
@@ -1,18 +0,0 @@
-language variant
-name female1
-gender female
-
-pitch 145 200
-flutter 7
-roughness 4
-formant 0 115 80 150
-formant 1 120 80 180
-formant 2 100 70 150 150
-formant 3 115 70 150
-formant 4 110 80 150
-formant 5 110 90 150
-formant 6 105 80 150
-formant 7 110 70 150
-formant 8 110 70 150
-
-stressAdd -10 -10 -20 -20 0 0 40 70
diff --git a/navit/support/espeak/espeak-data/voices/!v/f2 b/navit/support/espeak/espeak-data/voices/!v/f2
deleted file mode 100755
index e92946707..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/f2
+++ /dev/null
@@ -1,20 +0,0 @@
-language variant
-name female2
-gender female
-
-pitch 142 220
-roughness 3
-
-formant 0 105 80 150
-formant 1 110 80 160
-formant 2 110 70 150
-formant 3 110 70 150
-formant 4 115 80 150
-formant 5 115 80 150
-formant 6 110 70 150
-formant 7 110 70 150
-formant 8 110 70 150
-
-stressAdd 0 0 -10 -10 0 0 10 40
-breath 0 2 3 3 3 3 3 2
-echo 140 10
diff --git a/navit/support/espeak/espeak-data/voices/!v/f3 b/navit/support/espeak/espeak-data/voices/!v/f3
deleted file mode 100644
index 92a158281..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/f3
+++ /dev/null
@@ -1,22 +0,0 @@
-language variant
-name female3
-gender female
-
-pitch 140 240
-formant 0 105 80 150
-formant 1 120 75 150 -50
-formant 2 135 70 150 -250
-formant 3 125 80 150
-formant 4 125 80 150
-formant 5 125 80 150
-formant 6 120 70 150
-formant 7 110 70 150
-formant 8 110 70 150
-
-stressAmp 18 18 20 20 20 20 20 20
-//breath 0 2 4 4 4 4 4 4
-breath 0 2 3 3 3 3 3 2
-echo 120 10
-roughness 4
-
-
diff --git a/navit/support/espeak/espeak-data/voices/!v/f4 b/navit/support/espeak/espeak-data/voices/!v/f4
deleted file mode 100644
index 52c5ac935..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/f4
+++ /dev/null
@@ -1,18 +0,0 @@
-language variant
-name female4
-gender female
-
-echo 130 15
-pitch 142 200
-formant 0 120 80 150
-formant 1 115 80 160 -20
-formant 2 130 75 150 -200
-formant 3 123 75 150
-formant 4 125 80 150
-formant 5 125 80 150
-formant 6 110 80 150
-formant 7 110 75 150
-formant 8 110 75 150
-
-stressAdd -20 -20 -20 -20 0 0 20 120
-stressAmp 18 16 20 20 20 20 20 20
diff --git a/navit/support/espeak/espeak-data/voices/!v/fast b/navit/support/espeak/espeak-data/voices/!v/fast
deleted file mode 100755
index 30441d7e2..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/fast
+++ /dev/null
@@ -1,11 +0,0 @@
-language variant
-name fast_test
-
-// Try decreasing these values to make eSpeak's fastest speed faster.
-// The 3 parameters affect:
-// pauses,
-// unvoiced consonants,
-// vowels and voiced consonants
-// The default values are: fast 15 72 110
-
-fast_test 15 72 110
diff --git a/navit/support/espeak/espeak-data/voices/!v/m1 b/navit/support/espeak/espeak-data/voices/!v/m1
deleted file mode 100755
index 57603a885..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/m1
+++ /dev/null
@@ -1,19 +0,0 @@
-language variant
-name male1
-gender male 70
-
-pitch 74 109
-flutter 4
-roughness 4
-
-formant 0 98 95 100
-formant 1 97 95 100
-formant 2 97 95 100
-formant 3 97 100 100
-formant 4 97 100 100
-formant 5 105 100 100
-formant 6 95 100 100
-formant 7 100 100 100
-formant 8 100 100 100
-
-stressAdd -10 -10 -20 -20 0 0 40 70
diff --git a/navit/support/espeak/espeak-data/voices/!v/m2 b/navit/support/espeak/espeak-data/voices/!v/m2
deleted file mode 100644
index c234f4687..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/m2
+++ /dev/null
@@ -1,15 +0,0 @@
-language variant
-name male2
-gender male
-
-pitch 88 115
-echo 130 15
-formant 0 100 80 120
-formant 1 90 85 120
-formant 2 110 85 120
-formant 3 105 90 120
-formant 4 100 90 120
-formant 5 100 90 120
-formant 6 100 90 120
-formant 7 100 90 120
-formant 8 100 90 120
diff --git a/navit/support/espeak/espeak-data/voices/!v/m3 b/navit/support/espeak/espeak-data/voices/!v/m3
deleted file mode 100644
index 581cd883f..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/m3
+++ /dev/null
@@ -1,16 +0,0 @@
-language variant
-name male3
-gender male
-
-pitch 80 122
-formant 0 100 100 100
-formant 1 96 97 100
-formant 2 96 97 100
-formant 3 96 103 100
-formant 4 95 103 100
-formant 5 95 103 100
-formant 6 100 100 100
-formant 7 100 100 100
-formant 8 100 100 100
-
-stressAdd 10 10 0 0 0 0 -30 -30
diff --git a/navit/support/espeak/espeak-data/voices/!v/m4 b/navit/support/espeak/espeak-data/voices/!v/m4
deleted file mode 100644
index 7199341c3..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/m4
+++ /dev/null
@@ -1,17 +0,0 @@
-language variant
-name male4
-gender male
-
-pitch 70 110
-
-formant 0 103 100 100
-formant 1 103 100 100
-formant 2 103 100 100
-formant 3 103 100 100
-formant 4 106 100 100
-formant 5 106 100 100
-formant 6 106 100 100
-formant 7 103 100 100
-formant 8 103 100 100
-
-stressAdd -10 -10 -30 -30 0 0 60 90
diff --git a/navit/support/espeak/espeak-data/voices/!v/m5 b/navit/support/espeak/espeak-data/voices/!v/m5
deleted file mode 100755
index d25865608..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/m5
+++ /dev/null
@@ -1,15 +0,0 @@
-language variant
-name male5
-gender male
-
-formant 0 100 85 130
-formant 1 90 85 130 40
-formant 2 80 85 130 310
-formant 3 105 85 130
-formant 4 105 85 130
-formant 5 105 85 130
-formant 6 105 85 150
-formant 7 105 85 150
-formant 8 105 85 150
-
-intonation 2
diff --git a/navit/support/espeak/espeak-data/voices/!v/m6 b/navit/support/espeak/espeak-data/voices/!v/m6
deleted file mode 100755
index bd336a988..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/m6
+++ /dev/null
@@ -1,13 +0,0 @@
-language variant
-name male6
-gender male
-
-pitch 82 117
-
-formant 0 100 90 120
-formant 1 100 90 140
-formant 2 100 70 140
-formant 3 100 75 140
-formant 4 100 80 140
-formant 5 100 80 140
-
diff --git a/navit/support/espeak/espeak-data/voices/!v/m7 b/navit/support/espeak/espeak-data/voices/!v/m7
deleted file mode 100755
index 9a8370622..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/m7
+++ /dev/null
@@ -1,18 +0,0 @@
-language variant
-gender male 35
-name male5
-
-formant 0 120 150 220
-
-formant 1 100 100 100
-formant 2 100 100 100
-formant 3 100 100 100
-
-formant 4 100 80 100
-formant 5 100 100 100
-
-formant 6 80 200 80
-formant 7 80 200 100
-
-pitch 80 118
-tone 600 150 255 50 100 100
diff --git a/navit/support/espeak/espeak-data/voices/!v/whisper b/navit/support/espeak/espeak-data/voices/!v/whisper
deleted file mode 100755
index 4f8f5e88f..000000000
--- a/navit/support/espeak/espeak-data/voices/!v/whisper
+++ /dev/null
@@ -1,13 +0,0 @@
-language variant
-name whisper
-gender male
-
-pitch 82 117
-flutter 20
-
-formant 0 100 0 100
-formant 1 100 80 100
-
-voicing 17
-breath 75 75 50 40 15 10
-breathw 150 150 200 200 400 400
diff --git a/navit/support/espeak/espeak-data/voices/af b/navit/support/espeak/espeak-data/voices/af
deleted file mode 100755
index bcbb2a005..000000000
--- a/navit/support/espeak/espeak-data/voices/af
+++ /dev/null
@@ -1,8 +0,0 @@
-name afrikaans
-language af
-gender male
-roughness 0
-pitch 63 120
-
-
-
diff --git a/navit/support/espeak/espeak-data/voices/bs b/navit/support/espeak/espeak-data/voices/bs
deleted file mode 100755
index eadd70732..000000000
--- a/navit/support/espeak/espeak-data/voices/bs
+++ /dev/null
@@ -1,16 +0,0 @@
-name bosnian
-language bs
-phonemes hr
-dictionary hbs
-gender male
-
-pitch 81 120
-formant 0 100 100 100
-formant 1 97 97 100
-formant 2 97 97 100
-formant 3 97 102 100
-formant 4 97 102 100
-formant 5 97 102 100
-
-stressAdd 10 10 0 0 0 0 -30 -30
-dictrules 3 4
diff --git a/navit/support/espeak/espeak-data/voices/ca b/navit/support/espeak/espeak-data/voices/ca
deleted file mode 100644
index dc51396ce..000000000
--- a/navit/support/espeak/espeak-data/voices/ca
+++ /dev/null
@@ -1,4 +0,0 @@
-name catalan
-language ca
-gender male
-
diff --git a/navit/support/espeak/espeak-data/voices/cs b/navit/support/espeak/espeak-data/voices/cs
deleted file mode 100755
index 1c2992dd5..000000000
--- a/navit/support/espeak/espeak-data/voices/cs
+++ /dev/null
@@ -1,4 +0,0 @@
-name czech
-language cs
-gender male
-
diff --git a/navit/support/espeak/espeak-data/voices/cy b/navit/support/espeak/espeak-data/voices/cy
deleted file mode 100755
index 2991e99d1..000000000
--- a/navit/support/espeak/espeak-data/voices/cy
+++ /dev/null
@@ -1,5 +0,0 @@
-language cy
-name welsh-test
-gender male
-
-intonation 4
diff --git a/navit/support/espeak/espeak-data/voices/da b/navit/support/espeak/espeak-data/voices/da
deleted file mode 100755
index ec9936cc2..000000000
--- a/navit/support/espeak/espeak-data/voices/da
+++ /dev/null
@@ -1,3 +0,0 @@
-name danish-test
-language da
-gender male
diff --git a/navit/support/espeak/espeak-data/voices/de b/navit/support/espeak/espeak-data/voices/de
deleted file mode 100755
index 653c3f5c4..000000000
--- a/navit/support/espeak/espeak-data/voices/de
+++ /dev/null
@@ -1,5 +0,0 @@
-name german
-language de
-gender male
-
-
diff --git a/navit/support/espeak/espeak-data/voices/default b/navit/support/espeak/espeak-data/voices/default
deleted file mode 100755
index b2fd9d084..000000000
--- a/navit/support/espeak/espeak-data/voices/default
+++ /dev/null
@@ -1,4 +0,0 @@
-name default
-language en
-gender male
-
diff --git a/navit/support/espeak/espeak-data/voices/el b/navit/support/espeak/espeak-data/voices/el
deleted file mode 100755
index 1e9a757f8..000000000
--- a/navit/support/espeak/espeak-data/voices/el
+++ /dev/null
@@ -1,5 +0,0 @@
-name greek
-language el
-gender male
-
-
diff --git a/navit/support/espeak/espeak-data/voices/en/en b/navit/support/espeak/espeak-data/voices/en/en
deleted file mode 100755
index 43e2ca1fc..000000000
--- a/navit/support/espeak/espeak-data/voices/en/en
+++ /dev/null
@@ -1,9 +0,0 @@
-name english
-language en-uk 2
-language en 2
-gender male
-
-//pitch 80 117
-
-replace 03 I i
-replace 03 I2 i
diff --git a/navit/support/espeak/espeak-data/voices/en/en-n b/navit/support/espeak/espeak-data/voices/en/en-n
deleted file mode 100755
index 933311dad..000000000
--- a/navit/support/espeak/espeak-data/voices/en/en-n
+++ /dev/null
@@ -1,14 +0,0 @@
-name lancashire
-language en-uk-north
-language en-uk 3
-gender male
-
-phonemes en_n
-
-stressLength 160 150 180 180 220 220 290 290
-
-replace 00 i@3 i@
-replace 03 N n
-//replace 03 I i
-//replace 03 I2 i
-
diff --git a/navit/support/espeak/espeak-data/voices/en/en-rp b/navit/support/espeak/espeak-data/voices/en/en-rp
deleted file mode 100755
index 3489f28ad..000000000
--- a/navit/support/espeak/espeak-data/voices/en/en-rp
+++ /dev/null
@@ -1,12 +0,0 @@
-name english_rp
-language en-uk-rp
-language en-uk 4
-gender male
-
-phonemes en_rp
-replace 00 o@ O@
-replace 00 i@3 i@
-replace 03 I i
-replace 03 I2 i
-replace 03 @ a2
-replace 03 3 a2
diff --git a/navit/support/espeak/espeak-data/voices/en/en-sc b/navit/support/espeak/espeak-data/voices/en/en-sc
deleted file mode 100755
index e16ae25a8..000000000
--- a/navit/support/espeak/espeak-data/voices/en/en-sc
+++ /dev/null
@@ -1,16 +0,0 @@
-name en-scottish
-language en-sc
-language en 4
-gender male
-
-phonemes en_sc
-dictrules 5 6 7
-stressLength 180 130 200 200 0 0 250 270
-
-replace 03 @ V
-replace 03 I i
-replace 03 I2 i
-replace 01 aI aI2
-replace 02 a a/
-replace 02 u: U
-replace 02 3: VR
diff --git a/navit/support/espeak/espeak-data/voices/en/en-us b/navit/support/espeak/espeak-data/voices/en/en-us
deleted file mode 100755
index c2656b28c..000000000
--- a/navit/support/espeak/espeak-data/voices/en/en-us
+++ /dev/null
@@ -1,17 +0,0 @@
-// moving towards US English
-name english-us
-language en-us 2
-language en-r
-language en 3
-gender male
-
-phonemes en_us
-dictrules 3 6
-option 12 1 // reduce [t]
-
-stressLength 145 125 170 170 0 0 265 290
-stressAmp 17 16 20 20 20 22 22 20
-
-replace 03 I i
-replace 03 I2 i
-replace 03 @ @/
diff --git a/navit/support/espeak/espeak-data/voices/en/en-wi b/navit/support/espeak/espeak-data/voices/en/en-wi
deleted file mode 100755
index 28a42a563..000000000
--- a/navit/support/espeak/espeak-data/voices/en/en-wi
+++ /dev/null
@@ -1,19 +0,0 @@
-name en-westindies
-language en-wi
-language en-uk 4
-gender male
-
-phonemes en_wi
-dictrules 8
-stressLength 175 175 175 175 220 220 250 290
-
-replace 00 D d
-replace 00 T t[
-replace 00 U@ o@
-replace 00 i@3 i@
-replace 03 @ a2
-replace 03 3 a2
-replace 03 N n
-
-formant 1 98 100 100
-formant 2 98 100 100
diff --git a/navit/support/espeak/espeak-data/voices/en/en-wm b/navit/support/espeak/espeak-data/voices/en/en-wm
deleted file mode 100755
index aa82f88fb..000000000
--- a/navit/support/espeak/espeak-data/voices/en/en-wm
+++ /dev/null
@@ -1,12 +0,0 @@
-name english_wmids
-language en-uk-wmids
-gender male
-
-phonemes en_wm
-
-replace 00 h NULL
-replace 00 o@ O@
-replace 00 i@3 i@
-dictrules 6
-intonation 4
-stressAdd 0 0 0 0 0 0 0 20
diff --git a/navit/support/espeak/espeak-data/voices/eo b/navit/support/espeak/espeak-data/voices/eo
deleted file mode 100755
index 36a4bff65..000000000
--- a/navit/support/espeak/espeak-data/voices/eo
+++ /dev/null
@@ -1,3 +0,0 @@
-name esperanto
-language eo
-gender male
diff --git a/navit/support/espeak/espeak-data/voices/es b/navit/support/espeak/espeak-data/voices/es
deleted file mode 100755
index 1a9e53b6e..000000000
--- a/navit/support/espeak/espeak-data/voices/es
+++ /dev/null
@@ -1,7 +0,0 @@
-name spanish
-language es
-gender male
-
-dictrules 1
-intonation 3
-
diff --git a/navit/support/espeak/espeak-data/voices/es-la b/navit/support/espeak/espeak-data/voices/es-la
deleted file mode 100755
index c326c46f5..000000000
--- a/navit/support/espeak/espeak-data/voices/es-la
+++ /dev/null
@@ -1,11 +0,0 @@
-name spanish-latin-american
-language es-la
-language es-mx 6
-gender male
-
-phonemes es_la
-dictrules 2
-intonation 2
-stressLength 170 200 180 180 0 0 250 280
-
-replace 00 T s
diff --git a/navit/support/espeak/espeak-data/voices/fi b/navit/support/espeak/espeak-data/voices/fi
deleted file mode 100755
index 6e11c9312..000000000
--- a/navit/support/espeak/espeak-data/voices/fi
+++ /dev/null
@@ -1,4 +0,0 @@
-name finnish
-language fi
-gender male
-
diff --git a/navit/support/espeak/espeak-data/voices/fr b/navit/support/espeak/espeak-data/voices/fr
deleted file mode 100755
index 973073161..000000000
--- a/navit/support/espeak/espeak-data/voices/fr
+++ /dev/null
@@ -1,7 +0,0 @@
-language fr
-name french
-gender male
-
-dictrules 1
-intonation 3
-
diff --git a/navit/support/espeak/espeak-data/voices/fr-be b/navit/support/espeak/espeak-data/voices/fr-be
deleted file mode 100755
index cba9b2757..000000000
--- a/navit/support/espeak/espeak-data/voices/fr-be
+++ /dev/null
@@ -1,7 +0,0 @@
-language fr-be
-name french (Belgium)
-gender male
-
-dictrules 2
-intonation 3
-
diff --git a/navit/support/espeak/espeak-data/voices/hi b/navit/support/espeak/espeak-data/voices/hi
deleted file mode 100755
index de4786c94..000000000
--- a/navit/support/espeak/espeak-data/voices/hi
+++ /dev/null
@@ -1,9 +0,0 @@
-name hindi-test
-language hi
-gender male
-
-translator hi
-phonemes hi
-dictionary hi
-
-dictrules 1
diff --git a/navit/support/espeak/espeak-data/voices/hr b/navit/support/espeak/espeak-data/voices/hr
deleted file mode 100755
index d6811d3ae..000000000
--- a/navit/support/espeak/espeak-data/voices/hr
+++ /dev/null
@@ -1,18 +0,0 @@
-name croatian
-language hr
-language hbs
-gender male
-
-dictionary hbs
-
-// attributes towards !variant3
-pitch 81 120
-formant 0 100 100 100
-formant 1 97 97 100
-formant 2 97 97 100
-formant 3 97 102 100
-formant 4 97 102 100
-formant 5 97 102 100
-
-stressAdd 10 10 0 0 0 0 -30 -30
-dictrules 1
diff --git a/navit/support/espeak/espeak-data/voices/hu b/navit/support/espeak/espeak-data/voices/hu
deleted file mode 100755
index ba2bdde41..000000000
--- a/navit/support/espeak/espeak-data/voices/hu
+++ /dev/null
@@ -1,3 +0,0 @@
-name hungarian
-language hu
-gender male
diff --git a/navit/support/espeak/espeak-data/voices/hy b/navit/support/espeak/espeak-data/voices/hy
deleted file mode 100644
index 6c65e3c68..000000000
--- a/navit/support/espeak/espeak-data/voices/hy
+++ /dev/null
@@ -1,3 +0,0 @@
-name armenian
-language hy
-gender male
diff --git a/navit/support/espeak/espeak-data/voices/hy-west b/navit/support/espeak/espeak-data/voices/hy-west
deleted file mode 100644
index 46317618d..000000000
--- a/navit/support/espeak/espeak-data/voices/hy-west
+++ /dev/null
@@ -1,19 +0,0 @@
-name armenian-west
-language hy
-gender male
-
-// change consonants for West Armenian pronunciation
-replace 00 b p#
-replace 00 d t#
-replace 00 dz ts#
-replace 00 dZ tS
-replace 00 g k#
-
-replace 00 p b
-replace 00 t d
-replace 00 ts dz
-replace 00 c dZ
-replace 00 k g
-
-replace 00 ** R // ??
-replace 00 r R
diff --git a/navit/support/espeak/espeak-data/voices/id b/navit/support/espeak/espeak-data/voices/id
deleted file mode 100755
index ce800f70b..000000000
--- a/navit/support/espeak/espeak-data/voices/id
+++ /dev/null
@@ -1,8 +0,0 @@
-name indonesian-test
-language id
-gender male
-
-stressLength 160 200 180 180 0 0 220 240
-stressAmp 16 18 18 18 0 0 22 21
-
-consonants 80 80
diff --git a/navit/support/espeak/espeak-data/voices/is b/navit/support/espeak/espeak-data/voices/is
deleted file mode 100755
index 9e9c4e747..000000000
--- a/navit/support/espeak/espeak-data/voices/is
+++ /dev/null
@@ -1,4 +0,0 @@
-name icelandic-test
-language is
-gender male
-
diff --git a/navit/support/espeak/espeak-data/voices/it b/navit/support/espeak/espeak-data/voices/it
deleted file mode 100755
index 53c2a7048..000000000
--- a/navit/support/espeak/espeak-data/voices/it
+++ /dev/null
@@ -1,6 +0,0 @@
-name italian
-language it
-gender male
-
-replace 03 i I
-
diff --git a/navit/support/espeak/espeak-data/voices/ku b/navit/support/espeak/espeak-data/voices/ku
deleted file mode 100755
index 536957cb8..000000000
--- a/navit/support/espeak/espeak-data/voices/ku
+++ /dev/null
@@ -1,6 +0,0 @@
-name kurdish
-language ku
-gender male
-
-//words 1 48
-
diff --git a/navit/support/espeak/espeak-data/voices/la b/navit/support/espeak/espeak-data/voices/la
deleted file mode 100644
index f3e97b523..000000000
--- a/navit/support/espeak/espeak-data/voices/la
+++ /dev/null
@@ -1,13 +0,0 @@
-name latin
-language la
-gender male
-stressrule 2 33 0 2
-// rule=penultimate
-// flags=0100001 (no automatic secondary stress + don't stres monosyllables)
-// unstressed_wd1=0
-// unstressed_wd2=2
-
-// short gap between words
-words 2
-
-// Note: The Latin voice needs long vowels to be marked with macrons
diff --git a/navit/support/espeak/espeak-data/voices/lv b/navit/support/espeak/espeak-data/voices/lv
deleted file mode 100755
index 0278ea213..000000000
--- a/navit/support/espeak/espeak-data/voices/lv
+++ /dev/null
@@ -1,6 +0,0 @@
-name latvian
-language lv
-gender male
-
-replace 03 o o:
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-af1 b/navit/support/espeak/espeak-data/voices/mb/mb-af1
deleted file mode 100755
index 03dac4f6b..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-af1
+++ /dev/null
@@ -1,7 +0,0 @@
-name afrikaans-mbrola-1
-language af 7
-gender male
-
-pitch 82 117
-mbrola af1 af1_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-af1-en b/navit/support/espeak/espeak-data/voices/mb/mb-af1-en
deleted file mode 100755
index 71ecab719..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-af1-en
+++ /dev/null
@@ -1,7 +0,0 @@
-name en-afrikaans
-language en 11
-gender male
-
-pitch 82 117
-mbrola af1 af1_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-br1 b/navit/support/espeak/espeak-data/voices/mb/mb-br1
deleted file mode 100755
index ba7c42cc4..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-br1
+++ /dev/null
@@ -1,9 +0,0 @@
-language pt 7
-name brazil-mbrola-1
-gender male
-pitch 82 117
-
-dictrules 2 3 4
-
-mbrola br1 ptbr_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-br3 b/navit/support/espeak/espeak-data/voices/mb/mb-br3
deleted file mode 100644
index 8479e658e..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-br3
+++ /dev/null
@@ -1,9 +0,0 @@
-language pt 7
-name brazil-mbrola-3
-gender male
-pitch 82 117
-
-dictrules 2 3 4
-
-mbrola br3 ptbr_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-br4 b/navit/support/espeak/espeak-data/voices/mb/mb-br4
deleted file mode 100644
index d3d772007..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-br4
+++ /dev/null
@@ -1,9 +0,0 @@
-language pt 7
-name brazil-mbrola-4
-gender female
-pitch 140 220
-
-dictrules 2 3 4
-
-mbrola br4 ptbr4_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-cr1 b/navit/support/espeak/espeak-data/voices/mb/mb-cr1
deleted file mode 100755
index 9b280bf8b..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-cr1
+++ /dev/null
@@ -1,9 +0,0 @@
-name croatian-mbrola-1
-language hr 7
-gender male
-
-dictionary hbs
-dictrules 1
-
-pitch 82 117
-mbrola cr1 cr1_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-cz2 b/navit/support/espeak/espeak-data/voices/mb/mb-cz2
deleted file mode 100755
index dbde21234..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-cz2
+++ /dev/null
@@ -1,6 +0,0 @@
-name czech-mbrola-2
-language cs 7
-gender male
-
-pitch 82 117
-mbrola cz2 cs_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-de2 b/navit/support/espeak/espeak-data/voices/mb/mb-de2
deleted file mode 100755
index c0a5475ec..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-de2
+++ /dev/null
@@ -1,6 +0,0 @@
-name german-mbrola-2
-language de 6
-gender male
-
-mbrola de2 de2_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-de4 b/navit/support/espeak/espeak-data/voices/mb/mb-de4
deleted file mode 100755
index 31bd479a3..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-de4
+++ /dev/null
@@ -1,6 +0,0 @@
-name german-mbrola-4
-language de 6
-gender male
-
-mbrola de4 de4_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-de4-en b/navit/support/espeak/espeak-data/voices/mb/mb-de4-en
deleted file mode 100755
index 8fd4a63a1..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-de4-en
+++ /dev/null
@@ -1,6 +0,0 @@
-name en-german
-language en 9
-gender male
-
-mbrola de4 de4_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-de5 b/navit/support/espeak/espeak-data/voices/mb/mb-de5
deleted file mode 100755
index 569f9d054..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-de5
+++ /dev/null
@@ -1,10 +0,0 @@
-name german-mbrola-5
-language de 7
-gender female
-
-pitch 140 220
-mbrola de5 de6_phtrans 22050
-
-// avoid glottal stops. de5 assumes [?] between pause and vowel
-replace 00 _! _
-replace 00 _| _
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-de5-en b/navit/support/espeak/espeak-data/voices/mb/mb-de5-en
deleted file mode 100755
index e416c6dc5..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-de5-en
+++ /dev/null
@@ -1,7 +0,0 @@
-name en-german-5
-language en
-gender female
-
-pitch 140 220
-mbrola de5 de6_phtrans 22050
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-de6 b/navit/support/espeak/espeak-data/voices/mb/mb-de6
deleted file mode 100644
index 35a4a3fc5..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-de6
+++ /dev/null
@@ -1,6 +0,0 @@
-name german-mbrola-6
-language de 6
-gender male
-
-mbrola de6 de6_phtrans 22050
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-de6-grc b/navit/support/espeak/espeak-data/voices/mb/mb-de6-grc
deleted file mode 100644
index a6e0f46bb..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-de6-grc
+++ /dev/null
@@ -1,6 +0,0 @@
-name german-mbrola-6
-language grc 6
-gender male
-
-mbrola de6 grc-de6_phtrans 22050
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-de7 b/navit/support/espeak/espeak-data/voices/mb/mb-de7
deleted file mode 100755
index aa80edaad..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-de7
+++ /dev/null
@@ -1,7 +0,0 @@
-name german-mbrola-7
-language de 7
-gender female
-
-pitch 140 220
-mbrola de7 de6_phtrans 22050
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-en1 b/navit/support/espeak/espeak-data/voices/mb/mb-en1
deleted file mode 100755
index fc60f4167..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-en1
+++ /dev/null
@@ -1,7 +0,0 @@
-name english-mb-en1
-language en-uk 3
-language en 2
-gender male
-
-pitch 82 117
-mbrola en1 en1_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-es1 b/navit/support/espeak/espeak-data/voices/mb/mb-es1
deleted file mode 100755
index d59fe7952..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-es1
+++ /dev/null
@@ -1,7 +0,0 @@
-language es 7
-name spanish-mbrola-1
-gender male
-pitch 82 117
-
-mbrola es1 es_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-es2 b/navit/support/espeak/espeak-data/voices/mb/mb-es2
deleted file mode 100644
index 42de58882..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-es2
+++ /dev/null
@@ -1,7 +0,0 @@
-language es 7
-name spanish-mbrola-2
-gender male
-pitch 82 117
-
-mbrola es2 es_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-fr1 b/navit/support/espeak/espeak-data/voices/mb/mb-fr1
deleted file mode 100755
index 7cbdab338..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-fr1
+++ /dev/null
@@ -1,9 +0,0 @@
-language fr 7
-name french-mbrola-1
-gender male
-
-dictrules 1
-stressLength 180 180 180 180 0 0 220 220
-pitch 82 117
-mbrola fr1 fr1_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-fr1-en b/navit/support/espeak/espeak-data/voices/mb/mb-fr1-en
deleted file mode 100755
index 366653147..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-fr1-en
+++ /dev/null
@@ -1,8 +0,0 @@
-name en-french
-language en 10
-gender male
-
-dictrules 1
-pitch 82 117
-mbrola fr1 fr1_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-fr4 b/navit/support/espeak/espeak-data/voices/mb/mb-fr4
deleted file mode 100755
index c276bec0d..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-fr4
+++ /dev/null
@@ -1,8 +0,0 @@
-language fr 7
-name french-mbrola-4
-gender female
-
-dictrules 1
-pitch 140 220
-mbrola fr1 fr1_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-fr4-en b/navit/support/espeak/espeak-data/voices/mb/mb-fr4-en
deleted file mode 100755
index b8f782946..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-fr4-en
+++ /dev/null
@@ -1,8 +0,0 @@
-language en 10
-name en-french
-gender female
-
-dictrules 1
-pitch 140 220
-mbrola fr1 fr1_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-gr2 b/navit/support/espeak/espeak-data/voices/mb/mb-gr2
deleted file mode 100755
index 30dea8920..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-gr2
+++ /dev/null
@@ -1,6 +0,0 @@
-name greek-mbrola-1
-language el 7
-gender male
-
-pitch 82 117
-mbrola gr2 gr2_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-gr2-en b/navit/support/espeak/espeak-data/voices/mb/mb-gr2-en
deleted file mode 100755
index b48b1788b..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-gr2-en
+++ /dev/null
@@ -1,6 +0,0 @@
-name en-greek
-language en 7
-gender male
-
-pitch 82 117
-mbrola gr2 gr2_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-hu1 b/navit/support/espeak/espeak-data/voices/mb/mb-hu1
deleted file mode 100755
index b8519559d..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-hu1
+++ /dev/null
@@ -1,6 +0,0 @@
-name hungarian-mbrola-1
-language hu 7
-gender female
-
-pitch 140 220
-mbrola hu1 hu1_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-hu1-en b/navit/support/espeak/espeak-data/voices/mb/mb-hu1-en
deleted file mode 100755
index 73ac62a4a..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-hu1-en
+++ /dev/null
@@ -1,6 +0,0 @@
-name en-hungarian
-language en 10
-gender female
-
-pitch 140 220
-mbrola hu1 hu1_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-id1 b/navit/support/espeak/espeak-data/voices/mb/mb-id1
deleted file mode 100755
index b86f59306..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-id1
+++ /dev/null
@@ -1,7 +0,0 @@
-name indonesian-mbrola-1
-language id 7
-gender male
-
-pitch 82 117
-mbrola id1 id1_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-it3 b/navit/support/espeak/espeak-data/voices/mb/mb-it3
deleted file mode 100755
index 00e88867c..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-it3
+++ /dev/null
@@ -1,8 +0,0 @@
-name italian-mbrola-3
-language it 7
-gender male
-
-pitch 82 117
-mbrola it3 it3_phtrans
-
-replace 03 i I // final unstressed "i"
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-it4 b/navit/support/espeak/espeak-data/voices/mb/mb-it4
deleted file mode 100755
index f2130ba4f..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-it4
+++ /dev/null
@@ -1,8 +0,0 @@
-name italian-mbrola-4
-language it 7
-gender female
-
-pitch 140 220
-mbrola it4 it3_phtrans
-
-replace 03 i I // final unstressed "i"
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-la1 b/navit/support/espeak/espeak-data/voices/mb/mb-la1
deleted file mode 100755
index 7ef93a5ed..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-la1
+++ /dev/null
@@ -1,6 +0,0 @@
-name latin-mbrola-1
-language la 7
-gender male
-
-pitch 82 117
-mbrola la1 la1_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-nl2 b/navit/support/espeak/espeak-data/voices/mb/mb-nl2
deleted file mode 100755
index fc377156b..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-nl2
+++ /dev/null
@@ -1,7 +0,0 @@
-language nl 7
-name dutch-mbrola-2
-gender male
-
-pitch 82 117
-mbrola nl2 nl_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-nl2-en b/navit/support/espeak/espeak-data/voices/mb/mb-nl2-en
deleted file mode 100755
index 0c2d13a65..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-nl2-en
+++ /dev/null
@@ -1,7 +0,0 @@
-language en 10
-name en-dutch
-gender male
-
-pitch 82 117
-mbrola nl2 nl_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-pl1 b/navit/support/espeak/espeak-data/voices/mb/mb-pl1
deleted file mode 100755
index 4e2b9d23e..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-pl1
+++ /dev/null
@@ -1,6 +0,0 @@
-name polish-mbrola-1
-language pl 7
-gender female
-
-pitch 140 220
-mbrola pl1 pl1_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-pl1-en b/navit/support/espeak/espeak-data/voices/mb/mb-pl1-en
deleted file mode 100755
index 9ba872a49..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-pl1-en
+++ /dev/null
@@ -1,6 +0,0 @@
-name en-polish
-language en 11
-gender female
-
-pitch 140 220
-mbrola pl1 pl1_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-pt1 b/navit/support/espeak/espeak-data/voices/mb/mb-pt1
deleted file mode 100644
index ebd92ffb3..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-pt1
+++ /dev/null
@@ -1,9 +0,0 @@
-language pt 7
-name portugal-mbrola-1
-gender female
-pitch 140 220
-
-dictrules 1
-
-mbrola pt1 pt1_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-ro1 b/navit/support/espeak/espeak-data/voices/mb/mb-ro1
deleted file mode 100755
index 14417c1fd..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-ro1
+++ /dev/null
@@ -1,7 +0,0 @@
-name romanian-mbrola-1
-language ro 7
-gender male
-
-pitch 82 117
-mbrola ro1 ro1_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-ro1-en b/navit/support/espeak/espeak-data/voices/mb/mb-ro1-en
deleted file mode 100755
index f310f868e..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-ro1-en
+++ /dev/null
@@ -1,7 +0,0 @@
-name en-romanian
-language en 9
-gender male
-
-pitch 82 117
-mbrola ro1 ro1_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-sw1 b/navit/support/espeak/espeak-data/voices/mb/mb-sw1
deleted file mode 100755
index 4c6239268..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-sw1
+++ /dev/null
@@ -1,7 +0,0 @@
-name swedish-mbrola-1
-language sv 7
-gender male
-
-pitch 82 117
-mbrola sw1 sv_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-sw1-en b/navit/support/espeak/espeak-data/voices/mb/mb-sw1-en
deleted file mode 100755
index 52692c385..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-sw1-en
+++ /dev/null
@@ -1,7 +0,0 @@
-name en-swedish
-language en 11
-gender male
-
-pitch 82 117
-mbrola sw1 sv_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-sw2 b/navit/support/espeak/espeak-data/voices/mb/mb-sw2
deleted file mode 100755
index c632e263c..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-sw2
+++ /dev/null
@@ -1,7 +0,0 @@
-name swedish-mbrola-2
-language sv 8
-gender female
-
-pitch 140 220
-mbrola sw2 sv2_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-sw2-en b/navit/support/espeak/espeak-data/voices/mb/mb-sw2-en
deleted file mode 100755
index f2033dc11..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-sw2-en
+++ /dev/null
@@ -1,7 +0,0 @@
-name en-swedish-f
-language en
-gender female
-
-pitch 140 220
-mbrola sw2 sv2_phtrans
-
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-us1 b/navit/support/espeak/espeak-data/voices/mb/mb-us1
deleted file mode 100755
index c62589be7..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-us1
+++ /dev/null
@@ -1,12 +0,0 @@
-name us-mbrola-1
-language en-us
-language en 8
-gender female
-
-phonemes en_us
-dictrules 3 6
-
-stressLength 170 135 205 205 0 0 245 275
-
-pitch 140 220
-mbrola us1 us_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-us2 b/navit/support/espeak/espeak-data/voices/mb/mb-us2
deleted file mode 100755
index d94fce5a4..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-us2
+++ /dev/null
@@ -1,12 +0,0 @@
-name us-mbrola-2
-language en-us
-language en 7
-gender male
-
-phonemes en_us
-dictrules 3 6
-
-stressLength 170 135 205 205 0 0 245 275
-
-pitch 82 117
-mbrola us2 us_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mb/mb-us3 b/navit/support/espeak/espeak-data/voices/mb/mb-us3
deleted file mode 100755
index 645e1b7d0..000000000
--- a/navit/support/espeak/espeak-data/voices/mb/mb-us3
+++ /dev/null
@@ -1,12 +0,0 @@
-name us-mbrola-3
-language en-us
-language en 8
-gender male
-
-phonemes en_us
-dictrules 3 6
-
-stressLength 170 135 205 205 0 0 245 275
-
-pitch 82 117
-mbrola us3 us3_phtrans
diff --git a/navit/support/espeak/espeak-data/voices/mk b/navit/support/espeak/espeak-data/voices/mk
deleted file mode 100755
index 4607dd079..000000000
--- a/navit/support/espeak/espeak-data/voices/mk
+++ /dev/null
@@ -1,4 +0,0 @@
-name macedonian-test
-language mk
-gender male
-
diff --git a/navit/support/espeak/espeak-data/voices/nl b/navit/support/espeak/espeak-data/voices/nl
deleted file mode 100755
index 6a8d5efd8..000000000
--- a/navit/support/espeak/espeak-data/voices/nl
+++ /dev/null
@@ -1,3 +0,0 @@
-language nl
-name dutch-test
-gender male
diff --git a/navit/support/espeak/espeak-data/voices/no b/navit/support/espeak/espeak-data/voices/no
deleted file mode 100755
index 77b60b963..000000000
--- a/navit/support/espeak/espeak-data/voices/no
+++ /dev/null
@@ -1,6 +0,0 @@
-name norwegian-test
-language no
-language nb
-gender male
-
-intonation 4
diff --git a/navit/support/espeak/espeak-data/voices/pl b/navit/support/espeak/espeak-data/voices/pl
deleted file mode 100755
index 8fc65d4ba..000000000
--- a/navit/support/espeak/espeak-data/voices/pl
+++ /dev/null
@@ -1,5 +0,0 @@
-name polish
-language pl
-gender male
-
-intonation 2
diff --git a/navit/support/espeak/espeak-data/voices/pt b/navit/support/espeak/espeak-data/voices/pt
deleted file mode 100755
index 53cb31446..000000000
--- a/navit/support/espeak/espeak-data/voices/pt
+++ /dev/null
@@ -1,7 +0,0 @@
-name brazil
-language pt
-language pt-br
-gender male
-
-dictrules 2
-
diff --git a/navit/support/espeak/espeak-data/voices/pt-pt b/navit/support/espeak/espeak-data/voices/pt-pt
deleted file mode 100755
index e23915f39..000000000
--- a/navit/support/espeak/espeak-data/voices/pt-pt
+++ /dev/null
@@ -1,7 +0,0 @@
-name portugal
-language pt-pt
-gender male
-phonemes pt_pt
-
-dictrules 1
-intonation 2
diff --git a/navit/support/espeak/espeak-data/voices/ro b/navit/support/espeak/espeak-data/voices/ro
deleted file mode 100755
index d8ecd252c..000000000
--- a/navit/support/espeak/espeak-data/voices/ro
+++ /dev/null
@@ -1,5 +0,0 @@
-name romanian
-language ro
-gender male
-
-
diff --git a/navit/support/espeak/espeak-data/voices/ru b/navit/support/espeak/espeak-data/voices/ru
deleted file mode 100755
index 238c69126..000000000
--- a/navit/support/espeak/espeak-data/voices/ru
+++ /dev/null
@@ -1,6 +0,0 @@
-name russian_test
-language ru
-gender male
-
-replace 03 a a#
-
diff --git a/navit/support/espeak/espeak-data/voices/sk b/navit/support/espeak/espeak-data/voices/sk
deleted file mode 100755
index 026363f6a..000000000
--- a/navit/support/espeak/espeak-data/voices/sk
+++ /dev/null
@@ -1,4 +0,0 @@
-name slovak
-language sk
-gender male
-
diff --git a/navit/support/espeak/espeak-data/voices/sq b/navit/support/espeak/espeak-data/voices/sq
deleted file mode 100644
index d0b729579..000000000
--- a/navit/support/espeak/espeak-data/voices/sq
+++ /dev/null
@@ -1,6 +0,0 @@
-name albanian
-language sq
-gender male
-
-// add this line to remove 'ë' at the end of words
-// replace 00 @/ NULL
diff --git a/navit/support/espeak/espeak-data/voices/sr b/navit/support/espeak/espeak-data/voices/sr
deleted file mode 100644
index a7a8223db..000000000
--- a/navit/support/espeak/espeak-data/voices/sr
+++ /dev/null
@@ -1,15 +0,0 @@
-name serbian
-language sr
-gender male
-dictionary hbs
-
-// attributes towards !variant3 pitch 80 120
-formant 0 100 100 100
-formant 1 97 97 100
-formant 2 97 97 100
-formant 3 97 102 100
-formant 4 97 102 100
-formant 5 97 102 100
-
-stressAdd 10 10 0 0 0 0 -30 -30
-dictrules 2 4
diff --git a/navit/support/espeak/espeak-data/voices/sv b/navit/support/espeak/espeak-data/voices/sv
deleted file mode 100755
index df70f4387..000000000
--- a/navit/support/espeak/espeak-data/voices/sv
+++ /dev/null
@@ -1,4 +0,0 @@
-name swedish
-language sv
-gender male
-
diff --git a/navit/support/espeak/espeak-data/voices/sw b/navit/support/espeak/espeak-data/voices/sw
deleted file mode 100755
index cf584b7dd..000000000
--- a/navit/support/espeak/espeak-data/voices/sw
+++ /dev/null
@@ -1,4 +0,0 @@
-name swahihi-test
-language sw
-gender male
-
diff --git a/navit/support/espeak/espeak-data/voices/ta b/navit/support/espeak/espeak-data/voices/ta
deleted file mode 100755
index 8848d6820..000000000
--- a/navit/support/espeak/espeak-data/voices/ta
+++ /dev/null
@@ -1,6 +0,0 @@
-name tamil
-language ta
-gender male
-
-intonation 2
-consonants 80
diff --git a/navit/support/espeak/espeak-data/voices/test/grc b/navit/support/espeak/espeak-data/voices/test/grc
deleted file mode 100755
index ffa942063..000000000
--- a/navit/support/espeak/espeak-data/voices/test/grc
+++ /dev/null
@@ -1,8 +0,0 @@
-name greek-ancient
-language grc
-gender male
-
-stressLength 170 170 190 190 0 0 230 240
-dictrules 1
-words 3
-
diff --git a/navit/support/espeak/espeak-data/voices/test/jbo b/navit/support/espeak/espeak-data/voices/test/jbo
deleted file mode 100644
index ebab1a875..000000000
--- a/navit/support/espeak/espeak-data/voices/test/jbo
+++ /dev/null
@@ -1,3 +0,0 @@
-name lojban
-language jbo
-
diff --git a/navit/support/espeak/espeak-data/voices/test/pap b/navit/support/espeak/espeak-data/voices/test/pap
deleted file mode 100644
index 3b105a7fb..000000000
--- a/navit/support/espeak/espeak-data/voices/test/pap
+++ /dev/null
@@ -1,5 +0,0 @@
-name papiamento-test
-language pap
-
-phonemes base2
-
diff --git a/navit/support/espeak/espeak-data/voices/tr b/navit/support/espeak/espeak-data/voices/tr
deleted file mode 100755
index 4f1904e51..000000000
--- a/navit/support/espeak/espeak-data/voices/tr
+++ /dev/null
@@ -1,4 +0,0 @@
-name turkish
-language tr
-gender male
-
diff --git a/navit/support/espeak/espeak-data/voices/vi b/navit/support/espeak/espeak-data/voices/vi
deleted file mode 100755
index 1596e3c77..000000000
--- a/navit/support/espeak/espeak-data/voices/vi
+++ /dev/null
@@ -1,6 +0,0 @@
-name vietnam-test
-language vi
-gender male
-
-words 1
-pitch 80 118
diff --git a/navit/support/espeak/espeak-data/voices/zh b/navit/support/espeak/espeak-data/voices/zh
deleted file mode 100644
index 03edde41d..000000000
--- a/navit/support/espeak/espeak-data/voices/zh
+++ /dev/null
@@ -1,30 +0,0 @@
-name Mandarin
-language zh
-gender male
-words 1
-pitch 80 118
-
-//for some dialects
-
-//[en]: replace ng with n
-//[zh]: �޺�������ng���n
-//replace 0 N n
-
-//[en]: replace rfx consonants
-//[zh]: �޾�������r���l��z��er���e
-//replace 0 ts.h tsh
-//replace 0 ts. ts
-//replace 0 s. s
-//replace 0 i. i[
-//replace 0 z. l
-//replace 0 z. z
-//replace 0 @r @
-
-//[en]: replace beginning n or l
-//[zh]: ����nl��n���l��l���n
-//replace 2 n l
-//replace 2 l n
-
-//[en]: replace beginning w with v
-//[zh]: w���v
-//replace 0 w v \ No newline at end of file
diff --git a/navit/support/espeak/espeak-data/voices/zh-yue b/navit/support/espeak/espeak-data/voices/zh-yue
deleted file mode 100755
index ba8723264..000000000
--- a/navit/support/espeak/espeak-data/voices/zh-yue
+++ /dev/null
@@ -1,14 +0,0 @@
-name cantonese-test
-language zh-yue
-language yue
-language zhy
-
-translator zhy
-phonemes zhy
-dictionary zhy
-gender male
-
-// interpret English letters as 1=English words, 2=jyutping
-dictrules 1
-
-words 1
diff --git a/navit/support/espeak/espeak-data/zh_dict b/navit/support/espeak/espeak-data/zh_dict
deleted file mode 100644
index 0b611f845..000000000
--- a/navit/support/espeak/espeak-data/zh_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak-data/zhy_dict b/navit/support/espeak/espeak-data/zhy_dict
deleted file mode 100644
index 4ad9e7c21..000000000
--- a/navit/support/espeak/espeak-data/zhy_dict
+++ /dev/null
Binary files differ
diff --git a/navit/support/espeak/espeak.c b/navit/support/espeak/espeak.c
deleted file mode 100644
index 7997d0673..000000000
--- a/navit/support/espeak/espeak.c
+++ /dev/null
@@ -1,665 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2006 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <getopt.h>
-#include <time.h>
-#include <sys/stat.h>
-
-#include "speak_lib.h"
-
-// This version of the command-line speak program uses the
-// libespeak.so.1 library
-
-
-
-static const char *help_text =
-"\nspeak [options] [\"<words>\"]\n\n"
-"-f <text file> Text file to speak\n"
-"--stdin Read text input from stdin instead of a file\n\n"
-"If neither -f nor --stdin, <words> are spoken, or if none then text is\n"
-"spoken from stdin, each line separately.\n\n"
-"-a <integer>\n"
-"\t Amplitude, 0 to 200, default is 100\n"
-"-g <integer>\n"
-"\t Word gap. Pause between words, units of 10mS at the default speed\n"
-"-l <integer>\n"
-"\t Line length. If not zero (which is the default), consider\n"
-"\t lines less than this length as end-of-clause\n"
-"-p <integer>\n"
-"\t Pitch adjustment, 0 to 99, default is 50\n"
-"-s <integer>\n"
-"\t Speed in words per minute, 80 to 390, default is 170\n"
-"-v <voice name>\n"
-"\t Use voice file of this name from espeak-data/voices\n"
-"-w <wave file name>\n"
-"\t Write output to this WAV file, rather than speaking it directly\n"
-"-b\t Input text encoding, 1=UTF8, 2=8 bit, 4=16 bit \n"
-"-m\t Interpret SSML markup, and ignore other < > tags\n"
-"-q\t Quiet, don't produce any speech (may be useful with -x)\n"
-"-x\t Write phoneme mnemonics to stdout\n"
-"-X\t Write phonemes mnemonics and translation trace to stdout\n"
-"-z\t No final sentence pause at the end of the text\n"
-"--stdout Write speech output to stdout\n"
-"--compile=<voice name>\n"
-"\t Compile the pronunciation rules and dictionary in the current\n"
-"\t directory. =<voice name> is optional and specifies which language\n"
-"--path=\"<path>\"\n"
-"\t Specifies the directory containing the espeak-data directory\n"
-"--phonout=\"<filename>\"\n"
-"\t Write output from -x -X commands and mbrola phoneme data to this file\n"
-"--punct=\"<characters>\"\n"
-"\t Speak the names of punctuation characters during speaking. If\n"
-"\t =<characters> is omitted, all punctuation is spoken.\n"
-"--split=\"<minutes>\"\n"
-"\t Starts a new WAV file every <minutes>. Used with -w\n"
-"--voices=<language>\n"
-"\t List the available voices for the specified language.\n"
-"\t If <language> is omitted, then list all voices.\n"
-"-k <integer>\n"
-"\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n"
-"\t higher values = a pitch increase (try -k20).\n";
-
-
-
-
-int samplerate;
-int quiet = 0;
-unsigned int samples_total = 0;
-unsigned int samples_split = 0;
-unsigned int wavefile_count = 0;
-
-FILE *f_wavfile = NULL;
-char filetype[5];
-char wavefile[200];
-
-
-int GetFileLength(const char *filename)
-{//====================================
- struct stat statbuf;
-
- if(stat(filename,&statbuf) != 0)
- return(0);
-
- if((statbuf.st_mode & S_IFMT) == S_IFDIR)
- return(-2); // a directory
-
- return(statbuf.st_size);
-} // end of GetFileLength
-
-
-void strncpy0(char *dest, const char *source, int size)
-{//====================================================
- if(source!=NULL)
- {
- strncpy(dest,source,size);
- dest[size-1] = 0;
- }
-}
-
-
-void DisplayVoices(FILE *f_out, char *language)
-{//============================================
- int ix;
- const char *p;
- int len;
- int count;
- int scores = 0;
- const espeak_VOICE *v;
- const char *lang_name;
- char age_buf[12];
- const espeak_VOICE **voices;
- espeak_VOICE voice_select;
-
- static char genders[4] = {' ','M','F',' '};
-
- if((language != NULL) && (language[0] != 0))
- {
- // display only voices for the specified language, in order of priority
- voice_select.languages = language;
- voice_select.age = 0;
- voice_select.gender = 0;
- voice_select.name = NULL;
- voices = espeak_ListVoices(&voice_select);
- scores = 1;
- }
- else
- {
- voices = espeak_ListVoices(NULL);
- }
-
- fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n");
-
- for(ix=0; (v = voices[ix]) != NULL; ix++)
- {
- count = 0;
- p = v->languages;
- while(*p != 0)
- {
- len = strlen(p+1);
- lang_name = p+1;
-
- if(v->age == 0)
- strcpy(age_buf," ");
- else
- sprintf(age_buf,"%3d",v->age);
-
- if(count==0)
- {
- fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ",
- p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier);
- }
- else
- {
- fprintf(f_out,"(%s %d)",lang_name,p[0]);
- }
- count++;
- p += len+2;
- }
-// if(scores)
-// fprintf(f_out,"%3d ",v->score);
- fputc('\n',f_out);
- }
-} // end of DisplayVoices
-
-
-
-
-static void Write4Bytes(FILE *f, int value)
-{//=================================
-// Write 4 bytes to a file, least significant first
- int ix;
-
- for(ix=0; ix<4; ix++)
- {
- fputc(value & 0xff,f);
- value = value >> 8;
- }
-}
-
-
-
-int OpenWavFile(char *path, int rate)
-//===================================
-{
- static unsigned char wave_hdr[44] = {
- 'R','I','F','F',0x24,0xf0,0xff,0x7f,'W','A','V','E','f','m','t',' ',
- 0x10,0,0,0,1,0,1,0, 9,0x3d,0,0,0x12,0x7a,0,0,
- 2,0,0x10,0,'d','a','t','a', 0x00,0xf0,0xff,0x7f};
-
- if(path == NULL)
- return(2);
-
- if(path[0] == 0)
- return(0);
-
- if(strcmp(path,"stdout")==0)
- f_wavfile = stdout;
- else
- f_wavfile = fopen(path,"wb");
-
- if(f_wavfile != NULL)
- {
- fwrite(wave_hdr,1,24,f_wavfile);
- Write4Bytes(f_wavfile,rate);
- Write4Bytes(f_wavfile,rate * 2);
- fwrite(&wave_hdr[32],1,12,f_wavfile);
- return(0);
- }
- return(1);
-} // end of OpenWavFile
-
-
-
-static void CloseWavFile()
-//========================
-{
- unsigned int pos;
-
- if((f_wavfile==NULL) || (f_wavfile == stdout))
- return;
-
- fflush(f_wavfile);
- pos = ftell(f_wavfile);
-
- fseek(f_wavfile,4,SEEK_SET);
- Write4Bytes(f_wavfile,pos - 8);
-
- fseek(f_wavfile,40,SEEK_SET);
- Write4Bytes(f_wavfile,pos - 44);
-
- fclose(f_wavfile);
- f_wavfile = NULL;
-
-} // end of CloseWavFile
-
-
-static int SynthCallback(short *wav, int numsamples, espeak_EVENT *events)
-{//========================================================================
- char fname[210];
-
- if(quiet) return(0); // -q quiet mode
-
- if(wav == NULL)
- {
- CloseWavFile();
- return(0);
- }
-
- if(samples_split > 0)
- {
- // start a new WAV file when this limit is reached, at the next sentence boundary
- while(events->type != 0)
- {
- if((events->type == espeakEVENT_SENTENCE) && (samples_total > samples_split))
- {
- CloseWavFile();
- samples_total = 0;
- }
- events++;
- }
- }
-
- if(f_wavfile == NULL)
- {
- sprintf(fname,"%s_%.2d%s",wavefile,++wavefile_count,filetype);
- if(OpenWavFile(fname, samplerate) != 0)
- return(1);
- }
-
- if(numsamples > 0)
- {
- samples_total += numsamples;
- fwrite(wav,numsamples*2,1,f_wavfile);
- }
- return(0);
-}
-
-
-
-int main (int argc, char **argv)
-//==============================
-{
- static struct option long_options[] =
- {
- /* These options set a flag. */
-// {"verbose", no_argument, &verbose_flag, 1},
-// {"brief", no_argument, &verbose_flag, 0},
-
- /* These options don't set a flag.
- We distinguish them by their indices. */
- {"help", no_argument, 0, 'h'},
- {"stdin", no_argument, 0, 0x100},
- {"compile-debug", optional_argument, 0, 0x101},
- {"compile", optional_argument, 0, 0x102},
- {"punct", optional_argument, 0, 0x103},
- {"voices", optional_argument, 0, 0x104},
- {"stdout", no_argument, 0, 0x105},
- {"split", optional_argument, 0, 0x106},
- {"path", required_argument, 0, 0x107},
- {"phonout", required_argument, 0, 0x108},
- {0, 0, 0, 0}
- };
-
- static const char* err_load = "Failed to read ";
-
-
- FILE *f_text=NULL;
- char *p_text=NULL;
- FILE *f_phonemes_out = stdout;
- char *data_path = NULL; // use default path for espeak-data
-
- int option_index = 0;
- int c;
- int ix;
- int value;
- int flag_stdin = 0;
- int flag_compile = 0;
- int filesize = 0;
- int synth_flags = espeakCHARS_AUTO | espeakPHONEMES | espeakENDPAUSE;
-
- int volume = -1;
- int speed = -1;
- int pitch = -1;
- int wordgap = -1;
- int option_capitals = -1;
- int option_punctuation = -1;
- int option_phonemes = -1;
- int option_linelength = 0;
- int option_waveout = 0;
-
- espeak_VOICE voice_select;
- char filename[200];
- char voicename[40];
- char voice_mbrola[20];
- char dictname[40];
-#define N_PUNCTLIST 100
- wchar_t option_punctlist[N_PUNCTLIST];
-
- voicename[0] = 0;
- voice_mbrola[0] = 0;
- dictname[0] = 0;
- wavefile[0] = 0;
- filename[0] = 0;
- option_punctlist[0] = 0;
-
- while(true)
- {
- c = getopt_long (argc, argv, "a:b:f:g:hk:l:mp:qs:v:w:xXz",
- long_options, &option_index);
-
- /* Detect the end of the options. */
- if (c == -1)
- break;
-
- switch (c)
- {
- case 'b':
- // input character encoding, 8bit, 16bit, UTF8
- if((sscanf(optarg,"%d",&value) == 1) && (value <= 4))
- synth_flags |= value;
- else
- synth_flags |= espeakCHARS_8BIT;
- break;
-
- case 'h':
- printf("\n");
- printf("eSpeak text-to-speech: %s\n%s",espeak_Info(),help_text);
- exit(0);
- break;
-
- case 'k':
- option_capitals = atoi(optarg);
- break;
-
- case 'x':
- option_phonemes = 1;
- break;
-
- case 'X':
- option_phonemes = 2;
- break;
-
- case 'm':
- synth_flags |= espeakSSML;
- break;
-
- case 'p':
- pitch = atoi(optarg);
- break;
-
- case 'q':
- quiet = 1;
- break;
-
- case 'f':
- strncpy0(filename,optarg,sizeof(filename));
- break;
-
- case 'l':
- option_linelength = atoi(optarg);
- break;
-
- case 'a':
- volume = atoi(optarg);
- break;
-
- case 's':
- speed = atoi(optarg);
- break;
-
- case 'g':
- wordgap = atoi(optarg);
- break;
-
- case 'v':
- strncpy0(voicename,optarg,sizeof(voicename));
- break;
-
- case 'w':
- option_waveout = 1;
- strncpy0(wavefile,optarg,sizeof(filename));
- break;
-
- case 'z': // remove pause from the end of a sentence
- synth_flags &= ~espeakENDPAUSE;
- break;
-
- case 0x100: // --stdin
- flag_stdin = 1;
- break;
-
- case 0x105: // --stdout
- option_waveout = 1;
- strcpy(wavefile,"stdout");
- break;
-
- case 0x101: // --compile-debug
- case 0x102: // --compile
- strncpy0(voicename,optarg,sizeof(voicename));
- flag_compile = c;
- quiet = 1;
- break;
-
- case 0x103: // --punct
- option_punctuation = 1;
- if(optarg != NULL)
- {
- ix = 0;
- while((ix < N_PUNCTLIST) && ((option_punctlist[ix] = optarg[ix]) != 0)) ix++;
- option_punctlist[N_PUNCTLIST-1] = 0;
- option_punctuation = 2;
- }
- break;
-
- case 0x104: // --voices
- espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,data_path,0);
- DisplayVoices(stdout,optarg);
- exit(0);
-
- case 0x106: // -- split
- if(optarg == NULL)
- samples_split = 30; // default 30 minutes
- else
- samples_split = atoi(optarg);
- break;
-
- case 0x107: // --path
- data_path = optarg;
- break;
-
- case 0x108: // --phonout
- if((f_phonemes_out = fopen(optarg,"w")) == NULL)
- {
- fprintf(stderr,"Can't write to: %s\n",optarg);
- }
- break;
-
- default:
- exit(0);
- }
- }
-
-
- if(option_waveout || quiet)
- {
- // writing to a file (or no output), we can use synchronous mode
- samplerate = espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,data_path,0);
- samples_split = (samplerate * samples_split) * 60;
-
- espeak_SetSynthCallback(SynthCallback);
- if(samples_split)
- {
- char *extn;
- extn = strrchr(wavefile,'.');
- if((extn != NULL) && ((wavefile + strlen(wavefile) - extn) <= 4))
- {
- strcpy(filetype,extn);
- *extn = 0;
- }
- }
- else
- if(option_waveout)
- {
- if(OpenWavFile(wavefile,samplerate) != 0)
- exit(4);
- }
- }
- else
- {
- // play the sound output
- samplerate = espeak_Initialize(AUDIO_OUTPUT_PLAYBACK,0,data_path,0);
- }
-
-
- if(voicename[0] == 0)
- strcpy(voicename,"default");
-
- if(espeak_SetVoiceByName(voicename) != EE_OK)
- {
- memset(&voice_select,0,sizeof(voice_select));
- voice_select.languages = voicename;
- if(espeak_SetVoiceByProperties(&voice_select) != EE_OK)
- {
- fprintf(stderr,"%svoice '%s'\n",err_load,voicename);
- exit(2);
- }
- }
-
- if(flag_compile)
- {
- // This must be done after the voice is set
- espeak_CompileDictionary("", stderr, flag_compile & 0x1);
- exit(0);
- }
-
- // set any non-default values of parameters. This must be done after espeak_Initialize()
- if(speed > 0)
- espeak_SetParameter(espeakRATE,speed,0);
- if(volume >= 0)
- espeak_SetParameter(espeakVOLUME,volume,0);
- if(pitch >= 0)
- espeak_SetParameter(espeakPITCH,pitch,0);
- if(option_capitals >= 0)
- espeak_SetParameter(espeakCAPITALS,option_capitals,0);
- if(option_punctuation >= 0)
- espeak_SetParameter(espeakPUNCTUATION,option_punctuation,0);
- if(wordgap >= 0)
- espeak_SetParameter(espeakWORDGAP,wordgap,0);
- if(option_linelength > 0)
- espeak_SetParameter(espeakLINELENGTH,option_linelength,0);
- if(option_punctuation == 2)
- espeak_SetPunctuationList(option_punctlist);
- espeak_SetPhonemeTrace(option_phonemes,f_phonemes_out);
-
- if(filename[0]==0)
- {
- if((optind < argc) && (flag_stdin == 0))
- {
- // there's a non-option parameter, and no -f or --stdin
- // use it as text
- p_text = argv[optind];
- }
- else
- {
- f_text = stdin;
- if(flag_stdin == 0)
- {
- flag_stdin = 2;
- }
- }
- }
- else
- {
- filesize = GetFileLength(filename);
- f_text = fopen(filename,"r");
- }
-
- if((f_text == NULL) && (p_text == NULL))
- {
- fprintf(stderr,"%sfile '%s'\n",err_load,filename);
- exit(1);
- }
-
-
- if(p_text != NULL)
- {
- int size;
- size = strlen(p_text);
- espeak_Synth(p_text,size+1,0,POS_CHARACTER,0,synth_flags,NULL,NULL);
- }
- else
- if(flag_stdin)
- {
- int max = 1000;
- p_text = (char *)malloc(max);
-
- if(flag_stdin == 2)
- {
- // line by line input on stdin
- while(fgets(p_text,max,stdin) != NULL)
- {
- p_text[max-1] = 0;
- espeak_Synth(p_text,max,0,POS_CHARACTER,0,synth_flags,NULL,NULL);
-
- }
- }
- else
- {
- // bulk input on stdin
- ix = 0;
- while(!feof(stdin))
- {
- p_text[ix++] = fgetc(stdin);
- if(ix >= (max-1))
- {
- max += 1000;
- p_text = (char *)realloc(p_text,max);
- }
- }
- if(ix > 0)
- {
- p_text[ix-1] = 0;
- espeak_Synth(p_text,ix+1,0,POS_CHARACTER,0,synth_flags,NULL,NULL);
- }
- }
- }
- else
- if(f_text != NULL)
- {
- if((p_text = (char *)malloc(filesize+1)) == NULL)
- {
- fprintf(stderr,"Failed to allocate memory %d bytes",filesize);
- exit(3);
- }
-
- fread(p_text,1,filesize,f_text);
- p_text[filesize]=0;
- espeak_Synth(p_text,filesize+1,0,POS_CHARACTER,0,synth_flags,NULL,NULL);
- fclose(f_text);
- }
-
- espeak_Synchronize();
-
- if(f_phonemes_out != stdout)
- fclose(f_phonemes_out); // needed for WinCE
- return(0);
-}
diff --git a/navit/support/espeak/espeak_command.c b/navit/support/espeak/espeak_command.c
deleted file mode 100644
index 1b59333c1..000000000
--- a/navit/support/espeak/espeak_command.c
+++ /dev/null
@@ -1,707 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2007, Gilles Casse <gcasse@oralux.org> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-#include "speech.h"
-
-#ifdef USE_ASYNC
-// This source file is only used for asynchronious modes
-
-#include "espeak_command.h"
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <wchar.h>
-
-#include "debug.h"
-
-
-static unsigned int my_current_text_id=0;
-
-
-//<create_espeak_text
-t_espeak_command* create_espeak_text(const void *text, size_t size, unsigned int position, espeak_POSITION_TYPE position_type, unsigned int end_position, unsigned int flags, void* user_data)
-{
- ENTER("create_espeak_text");
- int a_error=1;
- void* a_text = NULL;
- t_espeak_text* data = NULL;
- t_espeak_command* a_command = (t_espeak_command*)malloc(sizeof(t_espeak_command));
-
- if (!text || !size || !a_command)
- {
- goto text_error;
- }
-
- a_text = malloc( size );
- if (!a_text)
- {
- goto text_error;
- }
- memcpy(a_text, text, size);
-
- a_command->type = ET_TEXT;
- a_command->state = CS_UNDEFINED;
- data = &(a_command->u.my_text);
- data->unique_identifier = ++my_current_text_id;
- data->text = a_text;
- data->size = size;
- data->position = position;
- data->position_type = position_type;
- data->end_position = end_position;
- data->flags = flags;
- data->user_data = user_data;
- a_error=0;
-
- SHOW("ET_TEXT malloc text=%x, command=%x (uid=%d)\n", a_text, a_command, data->unique_identifier);
-
- text_error:
- if (a_error)
- {
- if (a_text)
- {
- free (a_text);
- }
- if (a_command)
- {
- free (a_command);
- }
- a_command = NULL;
- }
-
- SHOW("command=0x%x\n", a_command);
-
- return a_command;
-}
-
-//>
-
-
-t_espeak_command* create_espeak_terminated_msg(unsigned int unique_identifier, void* user_data)
-{
- ENTER("create_espeak_terminated_msg");
- int a_error=1;
- t_espeak_terminated_msg* data = NULL;
- t_espeak_command* a_command = (t_espeak_command*)malloc(sizeof(t_espeak_command));
-
- if (!a_command)
- {
- goto msg_error;
- }
-
- a_command->type = ET_TERMINATED_MSG;
- a_command->state = CS_UNDEFINED;
- data = &(a_command->u.my_terminated_msg);
- data->unique_identifier = unique_identifier;
- data->user_data = user_data;
- a_error=0;
-
- SHOW("ET_TERMINATED_MSG command=%x (uid=%d, user_data=0x%x)\n", a_command, unique_identifier, (int)user_data);
-
- msg_error:
- if (a_error)
- {
- if (a_command)
- {
- free (a_command);
- }
- a_command = NULL;
- }
-
- SHOW("command=0x%x\n", a_command);
-
- return a_command;
-
-}
-
-
-
-
-//<create_espeak_mark
-t_espeak_command* create_espeak_mark(const void *text, size_t size, const char *index_mark, unsigned int end_position, unsigned int flags, void* user_data)
-{
- ENTER("create_espeak_mark");
- int a_error=1;
- void* a_text = NULL;
- char *a_index_mark = NULL;
- t_espeak_mark* data = NULL;
- t_espeak_command* a_command = (t_espeak_command*)malloc(sizeof(t_espeak_command));
-
- if (!text || !size || !index_mark || !a_command)
- {
- goto mark_error;
- }
-
- a_text = malloc( size );
- if (!a_text)
- {
- goto mark_error;
- }
- memcpy(a_text, text, size);
-
- a_index_mark = strdup( index_mark);
-
- a_command->type = ET_MARK;
- a_command->state = CS_UNDEFINED;
- data = &(a_command->u.my_mark);
- data->unique_identifier = ++my_current_text_id;
- data->text = a_text;
- data->size = size;
- data->index_mark = a_index_mark;
- data->end_position = end_position;
- data->flags = flags;
- data->user_data = user_data;
- a_error=0;
-
- mark_error:
- if (a_error)
- {
- if (a_text)
- {
- free (a_text);
- }
- if (a_command)
- {
- free (a_command);
- }
- a_command = NULL;
- if (a_index_mark)
- {
- free (a_index_mark);
- }
- }
-
- SHOW("ET_MARK malloc text=%x, command=%x (uid=%d)\n", a_text, a_command, data->unique_identifier);
-
- return a_command;
-}
-//>
-//< create_espeak_key, create_espeak_char
-
-t_espeak_command* create_espeak_key(const char *key_name, void *user_data)
-{
- ENTER("create_espeak_key");
- int a_error=1;
- t_espeak_command* a_command = (t_espeak_command*)malloc(sizeof(t_espeak_command));
-
- if (!key_name || !a_command)
- {
- goto key_error;
- }
-
- a_command->type = ET_KEY;
- a_command->state = CS_UNDEFINED;
- a_command->u.my_key.user_data = user_data;
- a_command->u.my_key.unique_identifier = ++my_current_text_id;
- a_command->u.my_key.key_name = strdup( key_name);
- a_error=0;
-
- key_error:
- if (a_error)
- {
- if (a_command)
- {
- free (a_command);
- }
- a_command = NULL;
- }
-
- SHOW("command=0x%x\n", a_command);
-
- return a_command;
-}
-
-t_espeak_command* create_espeak_char(wchar_t character, void* user_data)
-{
- ENTER("create_espeak_char");
- int a_error=1;
- t_espeak_command* a_command = (t_espeak_command*)malloc(sizeof(t_espeak_command));
- if (!a_command)
- {
- goto char_error;
- }
-
- a_command->type = ET_CHAR;
- a_command->state = CS_UNDEFINED;
- a_command->u.my_char.user_data = user_data;
- a_command->u.my_char.unique_identifier = ++my_current_text_id;
- a_command->u.my_char.character = character;
- a_error=0;
-
- char_error:
- if (a_error)
- {
- if (a_command)
- {
- free (a_command);
- }
- a_command = NULL;
- }
-
- SHOW("command=0x%x\n", a_command);
-
- return a_command;
-}
-
-//>
-//< create_espeak_parameter
-
-t_espeak_command* create_espeak_parameter(espeak_PARAMETER parameter, int value, int relative)
-{
- ENTER("create_espeak_parameter");
- int a_error=1;
- t_espeak_parameter* data = NULL;
- t_espeak_command* a_command = (t_espeak_command*)malloc(sizeof(t_espeak_command));
- if (!a_command)
- {
- goto param_error;
- }
-
- a_command->type = ET_PARAMETER;
- a_command->state = CS_UNDEFINED;
- data = &(a_command->u.my_param);
- data->parameter = parameter;
- data->value = value;
- data->relative = relative;
- a_error=0;
-
- param_error:
- if (a_error)
- {
- if (a_command)
- {
- free (a_command);
- }
- a_command = NULL;
- }
-
- SHOW("command=0x%x\n", a_command);
-
- return a_command;
-}
-
-//>
-//< create_espeak_punctuation_list
-
-t_espeak_command* create_espeak_punctuation_list(const wchar_t *punctlist)
-{
- ENTER("create_espeak_punctuation_list");
- int a_error=1;
- // wchar_t *a_list = NULL;
- t_espeak_command* a_command = (t_espeak_command*)malloc(sizeof(t_espeak_command));
-
- if (!punctlist || !a_command)
- {
- goto list_error;
- }
-
- a_command->type = ET_PUNCTUATION_LIST;
- a_command->state = CS_UNDEFINED;
-
- {
- size_t len = (wcslen(punctlist) + 1)*sizeof(wchar_t);
- wchar_t* a_list = (wchar_t*)malloc(len);
- memcpy(a_list, punctlist, len);
- a_command->u.my_punctuation_list = a_list;
- }
-
- a_error=0;
-
- list_error:
- if (a_error)
- {
- if (a_command)
- {
- free (a_command);
- }
- a_command = NULL;
- }
-
- SHOW("command=0x%x\n", a_command);
-
- return a_command;
-}
-
-//>
-//< create_espeak_voice_name, create_espeak_voice_spec
-
-t_espeak_command* create_espeak_voice_name(const char *name)
-{
- ENTER("create_espeak_voice_name");
-
- int a_error=1;
- t_espeak_command* a_command = (t_espeak_command*)malloc(sizeof(t_espeak_command));
-
- if (!name || !a_command)
- {
- goto name_error;
- }
-
- a_command->type = ET_VOICE_NAME;
- a_command->state = CS_UNDEFINED;
- a_command->u.my_voice_name = strdup( name);
- a_error=0;
-
- name_error:
- if (a_error)
- {
- if (a_command)
- {
- free (a_command);
- }
- a_command = NULL;
- }
-
- SHOW("command=0x%x\n", a_command);
-
- return a_command;
-}
-
-t_espeak_command* create_espeak_voice_spec(espeak_VOICE *voice)
-{
- ENTER("create_espeak_voice_spec");
- int a_error=1;
- t_espeak_command* a_command = (t_espeak_command*)malloc(sizeof(t_espeak_command));
-
- if (!voice || !a_command)
- {
- goto spec_error;
- }
-
- a_command->type = ET_VOICE_SPEC;
- a_command->state = CS_UNDEFINED;
- {
- espeak_VOICE* data = &(a_command->u.my_voice_spec);
- memcpy(data, voice, sizeof(espeak_VOICE));
-
- if (voice->name)
- {
- data->name = strdup(voice->name);
- }
-
- if (voice->languages)
- {
- data->languages = strdup(voice->languages);
- }
-
- if (voice->identifier)
- {
- data->identifier = strdup(voice->identifier);
- }
-
- a_error=0;
- }
-
- spec_error:
- if (a_error)
- {
- if (a_command)
- {
- free (a_command);
- }
- a_command = NULL;
- }
-
- SHOW("command=0x%x\n", a_command);
-
- return a_command;
-}
-
-//>
-//< delete_espeak_command
-int delete_espeak_command( t_espeak_command* the_command)
-{
- ENTER("delete_espeak_command");
- int a_status = 0;
- if (the_command)
- {
- switch(the_command->type)
- {
- case ET_TEXT:
- if (the_command->u.my_text.text)
- {
- SHOW("delete_espeak_command > ET_TEXT free text=%x, command=%x, uid=%d\n", the_command->u.my_text.text, the_command, the_command->u.my_text.unique_identifier);
- free(the_command->u.my_text.text);
- }
- break;
-
- case ET_MARK:
- if (the_command->u.my_mark.text)
- {
- free(the_command->u.my_mark.text);
- }
- if (the_command->u.my_mark.index_mark)
- {
- free((void*)(the_command->u.my_mark.index_mark));
- }
- break;
-
- case ET_TERMINATED_MSG:
- {
- // if the terminated msg is pending,
- // it must be processed here for informing the calling program
- // that its message is finished.
- // This can be important for cleaning the related user data.
- t_espeak_terminated_msg* data = &(the_command->u.my_terminated_msg);
- if (the_command->state == CS_PENDING)
- {
- the_command->state = CS_PROCESSED;
- SHOW("delete_espeak_command > ET_TERMINATED_MSG callback (command=0x%x, uid=%d) \n", the_command, data->unique_identifier);
- sync_espeak_terminated_msg( data->unique_identifier, data->user_data);
- }
- }
- break;
-
- case ET_KEY:
- if (the_command->u.my_key.key_name)
- {
- free((void*)(the_command->u.my_key.key_name));
- }
- break;
-
- case ET_CHAR:
- case ET_PARAMETER:
- // No allocation
- break;
-
- case ET_PUNCTUATION_LIST:
- if (the_command->u.my_punctuation_list)
- {
- free((void*)(the_command->u.my_punctuation_list));
- }
- break;
-
- case ET_VOICE_NAME:
- if (the_command->u.my_voice_name)
- {
- free((void*)(the_command->u.my_voice_name));
- }
- break;
-
- case ET_VOICE_SPEC:
- {
- espeak_VOICE* data = &(the_command->u.my_voice_spec);
-
- if (data->name)
- {
- free((void *)data->name);
- }
-
- if (data->languages)
- {
- free((void *)data->languages);
- }
-
- if (data->identifier)
- {
- free((void *)data->identifier);
- }
- }
- break;
-
- default:
- assert(0);
- }
- SHOW("delete_espeak_command > free command=0x%x\n", the_command);
- free(the_command);
- a_status = 1;
- }
- return a_status;
-}
-//>
-//< process_espeak_command
-void process_espeak_command( t_espeak_command* the_command)
-{
- ENTER("process_espeak_command");
-
- SHOW("command=0x%x\n", the_command);
-
- if (the_command == NULL)
- {
- return;
- }
-
- the_command->state = CS_PROCESSED;
-
- switch(the_command->type)
- {
- case ET_TEXT:
- {
- t_espeak_text* data = &(the_command->u.my_text);
- sync_espeak_Synth( data->unique_identifier, data->text, data->size,
- data->position, data->position_type,
- data->end_position, data->flags, data->user_data);
- }
- break;
-
- case ET_MARK:
- {
- t_espeak_mark* data = &(the_command->u.my_mark);
- sync_espeak_Synth_Mark( data->unique_identifier, data->text, data->size,
- data->index_mark, data->end_position, data->flags,
- data->user_data);
- }
- break;
-
- case ET_TERMINATED_MSG:
- {
- t_espeak_terminated_msg* data = &(the_command->u.my_terminated_msg);
- sync_espeak_terminated_msg( data->unique_identifier, data->user_data);
- }
- break;
-
- case ET_KEY:
- {
- const char* data = the_command->u.my_key.key_name;
- sync_espeak_Key(data);
- }
- break;
-
- case ET_CHAR:
- {
- const wchar_t data = the_command->u.my_char.character;
- sync_espeak_Char( data);
- }
- break;
-
- case ET_PARAMETER:
- {
- t_espeak_parameter* data = &(the_command->u.my_param);
- SetParameter( data->parameter, data->value, data->relative);
- }
- break;
-
- case ET_PUNCTUATION_LIST:
- {
- const wchar_t* data = the_command->u.my_punctuation_list;
- sync_espeak_SetPunctuationList( data);
- }
- break;
-
- case ET_VOICE_NAME:
- {
- const char* data = the_command->u.my_voice_name;
- SetVoiceByName( data);
- }
- break;
-
- case ET_VOICE_SPEC:
- {
- espeak_VOICE* data = &(the_command->u.my_voice_spec);
- SetVoiceByProperties(data);
- }
- break;
-
- default:
- assert(0);
- break;
- }
-}
-
-//>
-
-//< process_espeak_command
-void display_espeak_command( t_espeak_command* the_command)
-{
- ENTER("display_espeak_command");
-#ifdef DEBUG_ENABLED
- if (the_command == NULL)
- {
- SHOW("display_espeak_command > command=%s\n","NULL");
- return;
- }
-
- SHOW("display_espeak_command > state=%d\n",the_command->state);
-
- switch(the_command->type)
- {
- case ET_TEXT:
- {
- t_espeak_text* data = &(the_command->u.my_text);
- SHOW("display_espeak_command > (0x%x) uid=%d, TEXT=%s, user_data=0x%x\n", the_command, data->unique_identifier, (char*)data->text, (int)(data->user_data));
- }
- break;
-
- case ET_MARK:
- {
- t_espeak_mark* data = &(the_command->u.my_mark);
- SHOW("display_espeak_command > (0x%x) uid=%d, MARK=%s, user_data=0x%x\n", the_command, data->unique_identifier, (char*)data->text, (int)(data->user_data));
- }
- break;
-
- case ET_KEY:
- {
- const char* data = the_command->u.my_key;
- SHOW("display_espeak_command > (0x%x) KEY=%c\n", the_command, data);
- }
- break;
-
- case ET_TERMINATED_MSG:
- {
- t_espeak_terminated_msg* data = &(the_command->u.my_terminated_msg);
-
- SHOW("display_espeak_command > (0x%x) TERMINATED_MSG uid=%d, user_data=0x%x, state=%d\n",
- the_command, data->unique_identifier, data->user_data,
- the_command->state);
- }
- break;
-
- case ET_CHAR:
- {
- const wchar_t data = the_command->u.my_char;
- SHOW("display_espeak_command > (0x%x) CHAR=%c\n", the_command, (char)data);
- }
- break;
-
- case ET_PARAMETER:
- {
- t_espeak_parameter* data = &(the_command->u.my_param);
- SHOW("display_espeak_command > (0x%x) PARAMETER=%d, value=%d, relative=%d\n",
- the_command, data->parameter, data->value, data->relative);
- }
- break;
-
- case ET_PUNCTUATION_LIST:
- {
- const wchar_t* data = the_command->u.my_punctuation_list;
- sync_espeak_SetPunctuationList( data);
- SHOW("display_espeak_command > (0x%x) PUNCTLIST=%s\n", the_command, (char*)data);
- }
- break;
-
- case ET_VOICE_NAME:
- {
- const char* data = the_command->u.my_voice_name;
- SHOW("display_espeak_command > (0x%x) VOICE_NAME=%s\n", the_command, data);
- }
- break;
-
- case ET_VOICE_SPEC:
- {
- SHOW("display_espeak_command > (0x%x) VOICE_SPEC", the_command);
- }
- break;
-
- default:
- assert(0);
- break;
- }
-#endif
-}
-
-#endif
-//>
diff --git a/navit/support/espeak/espeak_command.h b/navit/support/espeak/espeak_command.h
deleted file mode 100644
index b2664be6a..000000000
--- a/navit/support/espeak/espeak_command.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef ESPEAK_COMMAND_H
-#define ESPEAK_COMMAND_H
-
-#ifndef PLATFORM_WINDOWS
-#include <unistd.h>
-#endif
-#include "speak_lib.h"
-
-enum t_espeak_type
- {
- ET_TEXT,
- ET_MARK,
- ET_KEY,
- ET_CHAR,
- ET_PARAMETER,
- ET_PUNCTUATION_LIST,
- ET_VOICE_NAME,
- ET_VOICE_SPEC,
- ET_TERMINATED_MSG
- };
-
-typedef struct
-{
- unsigned int unique_identifier;
- void* text;
- size_t size;
- unsigned int position;
- espeak_POSITION_TYPE position_type;
- unsigned int end_position;
- unsigned int flags;
- void* user_data;
-} t_espeak_text;
-
-typedef struct
-{
- unsigned int unique_identifier;
- void* text;
- size_t size;
- const char* index_mark;
- unsigned int end_position;
- unsigned int flags;
- void* user_data;
-} t_espeak_mark;
-
-typedef struct
-{
- unsigned int unique_identifier;
- void* user_data;
- wchar_t character;
-} t_espeak_character;
-
-typedef struct
-{
- unsigned int unique_identifier;
- void* user_data;
- const char* key_name;
-} t_espeak_key;
-
-
-typedef struct
-{
- unsigned int unique_identifier;
- void* user_data;
-} t_espeak_terminated_msg;
-
-
-typedef struct
-{
- espeak_PARAMETER parameter;
- int value;
- int relative;
-} t_espeak_parameter;
-
-enum t_command_state
-{
- CS_UNDEFINED, // The command has just been created
- CS_PENDING, // stored in the fifo
- CS_PROCESSED // processed
-};
-
-typedef struct
-{
- enum t_espeak_type type;
- enum t_command_state state;
-
- union command
- {
- t_espeak_text my_text;
- t_espeak_mark my_mark;
- t_espeak_key my_key;
- t_espeak_character my_char;
- t_espeak_parameter my_param;
- const wchar_t* my_punctuation_list;
- const char *my_voice_name;
- espeak_VOICE my_voice_spec;
- t_espeak_terminated_msg my_terminated_msg;
- } u;
-} t_espeak_command;
-
-
-t_espeak_command* create_espeak_text(const void *text, size_t size, unsigned int position, espeak_POSITION_TYPE position_type, unsigned int end_position, unsigned int flags, void* user_data);
-
-t_espeak_command* create_espeak_mark(const void *text, size_t size, const char *index_mark, unsigned int end_position, unsigned int flags, void* user_data);
-
-t_espeak_command* create_espeak_terminated_msg(unsigned int unique_identifier, void* user_data);
-
-t_espeak_command* create_espeak_key(const char *key_name, void *user_data);
-
-t_espeak_command* create_espeak_char(wchar_t character, void *user_data);
-
-t_espeak_command* create_espeak_parameter(espeak_PARAMETER parameter, int value, int relative);
-
-t_espeak_command* create_espeak_punctuation_list(const wchar_t *punctlist);
-
-t_espeak_command* create_espeak_voice_name(const char *name);
-
-t_espeak_command* create_espeak_voice_spec(espeak_VOICE *voice_spec);
-
-void process_espeak_command( t_espeak_command* the_command);
-
-int delete_espeak_command( t_espeak_command* the_command);
-
-void display_espeak_command(t_espeak_command* the_command);
-
-
-espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, size_t size,
- unsigned int position, espeak_POSITION_TYPE position_type,
- unsigned int end_position, unsigned int flags, void* user_data);
-espeak_ERROR sync_espeak_Synth_Mark(unsigned int unique_identifier, const void *text, size_t size,
- const char *index_mark, unsigned int end_position,
- unsigned int flags, void* user_data);
-void sync_espeak_Key(const char *key);
-void sync_espeak_Char(wchar_t character);
-void sync_espeak_SetPunctuationList(const wchar_t *punctlist);
-void sync_espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative);
-int sync_espeak_SetVoiceByName(const char *name);
-int sync_espeak_SetVoiceByProperties(espeak_VOICE *voice_selector);
-espeak_ERROR SetVoiceByName(const char *name);
-espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector);
-void SetParameter(int parameter, int value, int relative);
-
-int sync_espeak_terminated_msg(unsigned int unique_identifier, void* user_data);
-
-//>
-#endif
diff --git a/navit/support/espeak/event.c b/navit/support/espeak/event.c
deleted file mode 100644
index cc696272d..000000000
--- a/navit/support/espeak/event.c
+++ /dev/null
@@ -1,725 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2007, Gilles Casse <gcasse@oralux.org> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-
-#include "speech.h"
-
-#ifdef USE_ASYNC
-// This source file is only used for asynchronious modes
-
-
-//<includes
-#include <unistd.h>
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-#include <pthread.h>
-#include <semaphore.h>
-#include <sys/time.h>
-#include <errno.h>
-
-#include "speak_lib.h"
-#include "event.h"
-#include "wave.h"
-#include "debug.h"
-//>
-//<decls and function prototypes
-
-
-// my_mutex: protects my_thread_is_talking,
-static pthread_mutex_t my_mutex;
-static sem_t my_sem_start_is_required;
-static sem_t my_sem_stop_is_required;
-static sem_t my_sem_stop_is_acknowledged;
-// my_thread: polls the audio duration and compares it to the duration of the first event.
-static pthread_t my_thread;
-
-static t_espeak_callback* my_callback = NULL;
-static int my_event_is_running=0;
-
-enum {MIN_TIMEOUT_IN_MS=10,
- ACTIVITY_TIMEOUT=50, // in ms, check that the stream is active
- MAX_ACTIVITY_CHECK=6
-};
-
-
-typedef struct t_node
-{
- void* data;
- t_node *next;
-} node;
-
-static node* head=NULL;
-static node* tail=NULL;
-static int node_counter=0;
-static espeak_ERROR push(void* data);
-static void* pop();
-static void init();
-static void* polling_thread(void*);
-
-//>
-//<event_init
-
-void event_set_callback(t_espeak_callback* SynthCallback)
-{
- my_callback = SynthCallback;
-}
-
-void event_init(void)
-{
- ENTER("event_init");
-
- my_event_is_running=0;
-
- // security
- pthread_mutex_init( &my_mutex, (const pthread_mutexattr_t *)NULL);
- init();
-
- assert(-1 != sem_init(&my_sem_start_is_required, 0, 0));
- assert(-1 != sem_init(&my_sem_stop_is_required, 0, 0));
- assert(-1 != sem_init(&my_sem_stop_is_acknowledged, 0, 0));
-
- pthread_attr_t a_attrib;
- if (pthread_attr_init (& a_attrib)
- || pthread_attr_setdetachstate(&a_attrib, PTHREAD_CREATE_JOINABLE)
- || pthread_create( &my_thread,
- & a_attrib,
- polling_thread,
- (void*)NULL))
- {
- assert(0);
- }
-
- pthread_attr_destroy(&a_attrib);
-}
-//>
-//<event_display
-static void event_display(espeak_EVENT* event)
-{
-ENTER("event_display");
-
-#ifdef DEBUG_ENABLED
- if (event==NULL)
- {
- SHOW("event_display > event=%s\n","NULL");
- }
- else
- {
- static const char* label[] = {
- "LIST_TERMINATED",
- "WORD",
- "SENTENCE",
- "MARK",
- "PLAY",
- "END",
- "MSG_TERMINATED"
- };
-
- SHOW("event_display > event=0x%x\n",event);
- SHOW("event_display > type=%s\n",label[event->type]);
- SHOW("event_display > uid=%d\n",event->unique_identifier);
- SHOW("event_display > text_position=%d\n",event->text_position);
- SHOW("event_display > length=%d\n",event->length);
- SHOW("event_display > audio_position=%d\n",event->audio_position);
- SHOW("event_display > sample=%d\n",event->sample);
- SHOW("event_display > user_data=0x%x\n",event->user_data);
- }
-#endif
-}
-//>
-//<event_copy
-
-static espeak_EVENT* event_copy (espeak_EVENT* event)
-{
- ENTER("event_copy");
-
- if (event==NULL)
- {
- return NULL;
- }
-
- espeak_EVENT* a_event=(espeak_EVENT*)malloc(sizeof(espeak_EVENT));
- if (a_event)
- {
- memcpy(a_event, event, sizeof(espeak_EVENT));
-
- switch(event->type)
- {
- case espeakEVENT_MARK:
- case espeakEVENT_PLAY:
- if (event->id.name)
- {
- a_event->id.name = strdup(event->id.name);
- }
- break;
-
- default:
- break;
- }
- }
-
- event_display(a_event);
-
- return a_event;
-}
-
-//>
-//<event_notify
-
-// Call the user supplied callback
-//
-// Note: the current sequence is:
-//
-// * First call with: event->type = espeakEVENT_SENTENCE
-// * 0, 1 or several calls: event->type = espeakEVENT_WORD
-// * Last call: event->type = espeakEVENT_MSG_TERMINATED
-//
-
-static void event_notify(espeak_EVENT* event)
-{
-ENTER("event_notify");
- static unsigned int a_old_uid = 0;
-
- espeak_EVENT events[2];
- memcpy(&events[0],event,sizeof(espeak_EVENT)); // the event parameter in the callback function should be an array of eventd
- memcpy(&events[1],event,sizeof(espeak_EVENT));
- events[1].type = espeakEVENT_LIST_TERMINATED; // ... terminated by an event type=0
-
- if (event && my_callback)
- {
- event_display(event);
-
- switch(event->type)
- {
- case espeakEVENT_SENTENCE:
- my_callback(NULL, 0, events);
- a_old_uid = event->unique_identifier;
- break;
-
- case espeakEVENT_MSG_TERMINATED:
- case espeakEVENT_MARK:
- case espeakEVENT_WORD:
- case espeakEVENT_END:
- case espeakEVENT_PHONEME:
- {
-// jonsd - I'm not sure what this is for. gilles says it's for when Gnome Speech reads a file of blank lines
- if (a_old_uid != event->unique_identifier)
- {
- espeak_EVENT_TYPE a_new_type = events[0].type;
- events[0].type = espeakEVENT_SENTENCE;
- my_callback(NULL, 0, events);
- events[0].type = a_new_type;
- usleep(50000);
- }
- my_callback(NULL, 0, events);
- a_old_uid = event->unique_identifier;
- }
- break;
-
- default:
- case espeakEVENT_LIST_TERMINATED:
- case espeakEVENT_PLAY:
- break;
- }
- }
-}
-//>
-//<event_delete
-
-static int event_delete(espeak_EVENT* event)
-{
-ENTER("event_delete");
-
- event_display(event);
-
- if(event==NULL)
- {
- return 0;
- }
-
- switch(event->type)
- {
- case espeakEVENT_MSG_TERMINATED:
- event_notify(event);
- break;
-
- case espeakEVENT_MARK:
- case espeakEVENT_PLAY:
- if(event->id.name)
- {
- free((void*)(event->id.name));
- }
- break;
-
- default:
- break;
- }
-
- free(event);
- return 1;
-}
-
-//>
-//<event_declare
-
-espeak_ERROR event_declare (espeak_EVENT* event)
-{
-ENTER("event_declare");
-
- event_display(event);
-
- if (!event)
- {
- return EE_INTERNAL_ERROR;
- }
-
- int a_status = pthread_mutex_lock(&my_mutex);
- espeak_ERROR a_error = EE_OK;
-
- if (!a_status)
- {
- SHOW_TIME("event_declare > locked\n");
- espeak_EVENT* a_event = event_copy(event);
- a_error = push(a_event);
- if (a_error != EE_OK)
- {
- event_delete(a_event);
- }
- SHOW_TIME("event_declare > unlocking\n");
- a_status = pthread_mutex_unlock(&my_mutex);
- }
-
- // TBD: remove the comment
- // reminder: code in comment.
- // This wait can lead to an underrun
- //
-// if (!a_status && !my_event_is_running && (a_error == EE_OK))
-// {
-// // quit when command is actually started
-// // (for possible forthcoming 'end of command' checks)
- SHOW_TIME("event_declare > post my_sem_start_is_required\n");
- sem_post(&my_sem_start_is_required);
-// int val=1;
-// while (val)
-// {
-// usleep(50000); // TBD: event?
-// sem_getvalue(&my_sem_start_is_required, &val);
-// }
-// }
-
- if (a_status != 0)
- {
- a_error = EE_INTERNAL_ERROR;
- }
-
- return a_error;
-}
-
-//>
-//<event_clear_all
-
-espeak_ERROR event_clear_all ()
-{
- ENTER("event_clear_all");
-
- int a_status = pthread_mutex_lock(&my_mutex);
- int a_event_is_running = 0;
-
- SHOW_TIME("event_stop > locked\n");
- if (a_status != 0)
- {
- return EE_INTERNAL_ERROR;
- }
-
- if (my_event_is_running)
- {
- SHOW_TIME("event_stop > post my_sem_stop_is_required\n");
- sem_post(&my_sem_stop_is_required);
- a_event_is_running = 1;
- }
- else
- {
- init(); // clear pending events
- }
- SHOW_TIME("event_stop > unlocking\n");
- a_status = pthread_mutex_unlock(&my_mutex);
- if (a_status != 0)
- {
- return EE_INTERNAL_ERROR;
- }
-
- if (a_event_is_running)
- {
- SHOW_TIME("event_stop > wait for my_sem_stop_is_acknowledged\n");
- while ((sem_wait(&my_sem_stop_is_acknowledged) == -1) && errno == EINTR)
- {
- continue; // Restart when interrupted by handler
- }
- SHOW_TIME("event_stop > get my_sem_stop_is_acknowledged\n");
- }
-
- SHOW_TIME("LEAVE event_stop\n");
-
- return EE_OK;
-}
-
-//>
-//<sleep_until_timeout_or_stop_request
-
-static int sleep_until_timeout_or_stop_request(uint32_t time_in_ms)
-{
-ENTER("sleep_until_timeout_or_stop_request");
-
- int a_stop_is_required=0;
- struct timespec ts, to;
- struct timeval tv;
- int err=0;
-
- clock_gettime2( &ts);
- to.tv_sec = ts.tv_sec;
- to.tv_nsec = ts.tv_nsec;
-
- add_time_in_ms( &ts, time_in_ms);
-
- SHOW("polling_thread > sleep_until_timeout_or_stop_request > start sem_timedwait from %d.%09lu to %d.%09lu \n",
- to.tv_sec, to.tv_nsec,
- ts.tv_sec, ts.tv_nsec);
-
- while ((err = sem_timedwait(&my_sem_stop_is_required, &ts)) == -1
- && errno == EINTR)
- {
- continue; // Restart when interrupted by handler
- }
-
- assert (gettimeofday(&tv, NULL) != -1);
- SHOW("polling_thread > sleep_until_timeout_or_stop_request > stop sem_timedwait %d.%09lu \n",
- tv.tv_sec, tv.tv_usec*1000);
-
- if (err == 0)
- {
- SHOW("polling_thread > sleep_until_timeout_or_stop_request > %s\n","stop required!");
- a_stop_is_required=1; // stop required
- }
- return a_stop_is_required;
-}
-
-//>
-//<get_remaining_time
-// Asked for the time interval required for reaching the sample.
-// If the stream is opened but the audio samples are not played,
-// a timeout is started.
-
-static int get_remaining_time(uint32_t sample, uint32_t* time_in_ms, int* stop_is_required)
-{
-ENTER("get_remaining_time");
-
- int err = 0;
- *stop_is_required = 0;
- int i=0;
-
- for (i=0; i < MAX_ACTIVITY_CHECK && (*stop_is_required == 0); i++)
- {
- err = wave_get_remaining_time( sample, time_in_ms);
-
- if (err || wave_is_busy(NULL) || (*time_in_ms == 0))
- { // if err, stream not available: quit
- // if wave is busy, time_in_ms is known: quit
- // if wave is not busy but remaining time == 0, event is reached: quit
- break;
- }
-
- // stream opened but not active
- //
- // Several possible states:
- // * the stream is opened but not yet started:
- //
- // wait for the start of stream
- //
- // * some samples have already been played,
- // ** the end of stream is reached
- // ** or there is an underrun
- //
- // wait for the close of stream
-
- *stop_is_required = sleep_until_timeout_or_stop_request( ACTIVITY_TIMEOUT);
- }
-
- return err;
-}
-
-//>
-//<polling_thread
-
-static void* polling_thread(void*)
-{
-ENTER("polling_thread");
-
- while(1)
- {
- int a_stop_is_required=0;
-
- SHOW_TIME("polling_thread > locking\n");
- int a_status = pthread_mutex_lock(&my_mutex);
- SHOW_TIME("polling_thread > locked (my_event_is_running = 0)\n");
- my_event_is_running = 0;
- pthread_mutex_unlock(&my_mutex);
- SHOW_TIME("polling_thread > unlocked\n");
-
- SHOW_TIME("polling_thread > wait for my_sem_start_is_required\n");
-
- while ((sem_wait(&my_sem_start_is_required) == -1) && errno == EINTR)
- {
- continue; // Restart when interrupted by handler
- }
-
- SHOW_TIME("polling_thread > get my_sem_start_is_required\n");
-
- a_status = pthread_mutex_lock(&my_mutex);
- SHOW_TIME("polling_thread > locked (my_event_is_running = 1)\n");
- my_event_is_running = 1;
- pthread_mutex_unlock(&my_mutex);
- SHOW_TIME("polling_thread > unlocked\n");
-
- a_stop_is_required=0;
- a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required);
- if ((a_status==0) && a_stop_is_required)
- {
- SHOW("polling_thread > stop required (%d)\n", __LINE__);
- while(0 == sem_trywait(&my_sem_stop_is_required))
- {
- };
- }
- else
- {
- a_stop_is_required=0;
- }
-
- // In this loop, my_event_is_running = 1
- while (head && !a_stop_is_required)
- {
- SHOW_TIME("polling_thread > check head\n");
- while(0 == sem_trywait(&my_sem_start_is_required))
- {
- };
-
- espeak_EVENT* event = (espeak_EVENT*)(head->data);
- assert(event);
-
- uint32_t time_in_ms = 0;
-
- int err = get_remaining_time((uint32_t)event->sample,
- &time_in_ms,
- &a_stop_is_required);
- if (a_stop_is_required)
- {
- break;
- }
- else if (err != 0)
- {
- // No available time: the event is deleted.
- SHOW("polling_thread > %s\n","audio device down");
- a_status = pthread_mutex_lock(&my_mutex);
- SHOW_TIME("polling_thread > locked\n");
- event_delete( (espeak_EVENT*)pop());
- a_status = pthread_mutex_unlock(&my_mutex);
- SHOW_TIME("polling_thread > unlocked\n");
- }
- else if (time_in_ms==0)
- { // the event is already reached.
- if (my_callback)
- {
- event_notify(event);
- // the user_data (and the type) are cleaned to be sure
- // that MSG_TERMINATED is called twice (at delete time too).
- event->type=espeakEVENT_LIST_TERMINATED;
- event->user_data=NULL;
- }
-
- a_status = pthread_mutex_lock(&my_mutex);
- SHOW_TIME("polling_thread > locked\n");
- event_delete( (espeak_EVENT*)pop());
- a_status = pthread_mutex_unlock(&my_mutex);
- SHOW_TIME("polling_thread > unlocked\n");
-
- a_stop_is_required=0;
- a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required);
-
- if ((a_status==0) && a_stop_is_required)
- {
- SHOW("polling_thread > stop required (%d)\n", __LINE__);
- while(0 == sem_trywait(&my_sem_stop_is_required))
- {
- };
- }
- else
- {
- a_stop_is_required=0;
- }
- }
- else
- { // The event will be notified soon: sleep until timeout or stop request
- a_stop_is_required = sleep_until_timeout_or_stop_request(time_in_ms);
- }
- }
-
- a_status = pthread_mutex_lock(&my_mutex);
- SHOW_TIME("polling_thread > locked\n");
-
- SHOW_TIME("polling_thread > my_event_is_running = 0\n");
- my_event_is_running = 0;
-
- if(!a_stop_is_required)
- {
- a_status = sem_getvalue(&my_sem_stop_is_required, &a_stop_is_required);
- if ((a_status==0) && a_stop_is_required)
- {
- SHOW("polling_thread > stop required (%d)\n", __LINE__);
- while(0 == sem_trywait(&my_sem_stop_is_required))
- {
- };
- }
- else
- {
- a_stop_is_required=0;
- }
- }
-
- a_status = pthread_mutex_unlock(&my_mutex);
- SHOW_TIME("polling_thread > unlocked\n");
-
- if (a_stop_is_required)
- {
- SHOW("polling_thread > %s\n","stop required!");
- // no mutex required since the stop command is synchronous
- // and waiting for my_sem_stop_is_acknowledged
- init();
-
- // acknowledge the stop request
- SHOW_TIME("polling_thread > post my_sem_stop_is_acknowledged\n");
- a_status = sem_post(&my_sem_stop_is_acknowledged);
- }
- }
-
- return NULL;
-}
-
-//>
-//<push, pop, init
-enum {MAX_NODE_COUNTER=1000};
-// return 1 if ok, 0 otherwise
-static espeak_ERROR push(void* the_data)
-{
- ENTER("event > push");
-
- assert((!head && !tail) || (head && tail));
-
- if (the_data == NULL)
- {
- SHOW("event > push > event=0x%x\n", NULL);
- return EE_INTERNAL_ERROR;
- }
-
- if (node_counter >= MAX_NODE_COUNTER)
- {
- SHOW("event > push > %s\n", "EE_BUFFER_FULL");
- return EE_BUFFER_FULL;
- }
-
- node *n = (node *)malloc(sizeof(node));
- if (n == NULL)
- {
- return EE_INTERNAL_ERROR;
- }
-
- if (head == NULL)
- {
- head = n;
- tail = n;
- }
- else
- {
- tail->next = n;
- tail = n;
- }
-
- tail->next = NULL;
- tail->data = the_data;
-
- node_counter++;
- SHOW("event > push > counter=%d (uid=%d)\n",node_counter,((espeak_EVENT*)the_data)->unique_identifier);
-
- return EE_OK;
-}
-
-static void* pop()
-{
- ENTER("event > pop");
- void* the_data = NULL;
-
- assert((!head && !tail) || (head && tail));
-
- if (head != NULL)
- {
- node* n = head;
- the_data = n->data;
- head = n->next;
- free(n);
- node_counter--;
- SHOW("event > pop > event=0x%x (counter=%d, uid=%d)\n",the_data, node_counter,((espeak_EVENT*)the_data)->unique_identifier);
- }
-
- if(head == NULL)
- {
- tail = NULL;
- }
-
- return the_data;
-}
-
-
-static void init()
-{
- ENTER("event > init");
-
- while (event_delete( (espeak_EVENT*)pop() ))
- {}
-
- node_counter = 0;
-}
-
-//>
-//<event_terminate
-void event_terminate()
-{
-ENTER("event_terminate");
-
- if (my_thread)
- {
- pthread_cancel(my_thread);
- pthread_join(my_thread,NULL);
- pthread_mutex_destroy(&my_mutex);
- sem_destroy(&my_sem_start_is_required);
- sem_destroy(&my_sem_stop_is_required);
- sem_destroy(&my_sem_stop_is_acknowledged);
- init(); // purge event
- }
-}
-
-#endif
-//>
-
diff --git a/navit/support/espeak/event.h b/navit/support/espeak/event.h
deleted file mode 100644
index c9ee482b0..000000000
--- a/navit/support/espeak/event.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef EVENT_H
-#define EVENT_H
-
-/*
-Manage events (sentence, word, mark, end,...), is responsible of calling the external
-callback as soon as the relevant audio sample is played.
-
-
-The audio stream is composed of samples from synthetised messages or audio icons.
-Each event is associated to a sample.
-
-Scenario:
-
-- event_declare is called for each expected event.
-
-- A timeout is started for the first pending event.
-
-- When the timeout happens, the synth_callback is called.
-
-Note: the timeout is checked against the real progress of the audio stream, which depends on pauses or underruns. If the real progress is lower than the expected one, a new timeout starts.
-
-*/
-
-#include "speak_lib.h"
-
-// Initialize the event component.
-// First function to be called.
-// the callback will be called when the event actually occurs.
-// The callback is detailled in speak_lib.h .
-void event_init(void);
-void event_set_callback(t_espeak_callback* cb);
-
-// Clear any pending event.
-//
-// Return: EE_OK: operation achieved
-// EE_INTERNAL_ERROR.
-espeak_ERROR event_clear_all ();
-
-// Declare a future event
-//
-// Return: EE_OK: operation achieved
-// EE_BUFFER_FULL: the event can not be buffered;
-// you may try after a while to call the function again.
-// EE_INTERNAL_ERROR.
-espeak_ERROR event_declare (espeak_EVENT* event);
-
-// Terminate the event component.
-// Last function to be called.
-void event_terminate();
-
-#endif
diff --git a/navit/support/espeak/fifo.c b/navit/support/espeak/fifo.c
deleted file mode 100644
index 95d5ab1ed..000000000
--- a/navit/support/espeak/fifo.c
+++ /dev/null
@@ -1,593 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2007, Gilles Casse <gcasse@oralux.org> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-#include "speech.h"
-
-#ifdef USE_ASYNC
-// This source file is only used for asynchronious modes
-
-
-//<includes
-
-#include <unistd.h>
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-#include <pthread.h>
-#include <semaphore.h>
-#include <wchar.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <time.h>
-
-#include "fifo.h"
-#include "wave.h"
-#include "debug.h"
-
-
-//>
-//<decls and function prototypes
-
-// my_mutex: protects my_thread_is_talking,
-// my_stop_is_required, and the command fifo
-static pthread_mutex_t my_mutex;
-static int my_command_is_running = 0;
-static int my_stop_is_required = 0;
-// + fifo
-//
-
-// my_thread: reads commands from the fifo, and runs them.
-static pthread_t my_thread;
-static sem_t my_sem_start_is_required;
-static sem_t my_sem_stop_is_acknowledged;
-
-static void* say_thread(void*);
-
-static espeak_ERROR push(t_espeak_command* the_command);
-static t_espeak_command* pop();
-static void init();
-static int node_counter=0;
-enum {MAX_NODE_COUNTER=400,
- INACTIVITY_TIMEOUT=50, // in ms, check that the stream is inactive
- MAX_INACTIVITY_CHECK=2
-};
-
-//>
-//<fifo_init
-void fifo_init()
-{
- ENTER("fifo_init");
-
- // security
- pthread_mutex_init( &my_mutex, (const pthread_mutexattr_t *)NULL);
- init();
-
- assert(-1 != sem_init(&my_sem_start_is_required, 0, 0));
- assert(-1 != sem_init(&my_sem_stop_is_acknowledged, 0, 0));
-
- pthread_attr_t a_attrib;
- if (pthread_attr_init (& a_attrib)
- || pthread_attr_setdetachstate(&a_attrib, PTHREAD_CREATE_JOINABLE)
- || pthread_create( &my_thread,
- & a_attrib,
- say_thread,
- (void*)NULL))
- {
- assert(0);
- }
-
- pthread_attr_destroy(&a_attrib);
-
- // leave once the thread is actually started
- SHOW_TIME("fifo > wait for my_sem_stop_is_acknowledged\n");
- while ((sem_wait(&my_sem_stop_is_acknowledged) == -1) && errno == EINTR)
- {
- continue; // Restart when interrupted by handler
- }
- SHOW_TIME("fifo > get my_sem_stop_is_acknowledged\n");
-}
-//>
-//<fifo_add_command
-
-espeak_ERROR fifo_add_command (t_espeak_command* the_command)
-{
- ENTER("fifo_add_command");
-
- int a_status = pthread_mutex_lock(&my_mutex);
- espeak_ERROR a_error = EE_OK;
-
- if (!a_status)
- {
- SHOW_TIME("fifo_add_command > locked\n");
- a_error = push(the_command);
- SHOW_TIME("fifo_add_command > unlocking\n");
- a_status = pthread_mutex_unlock(&my_mutex);
- }
-
- if (!a_status && !my_command_is_running && (a_error == EE_OK))
- {
- // quit when command is actually started
- // (for possible forthcoming 'end of command' checks)
- SHOW_TIME("fifo_add_command > post my_sem_start_is_required\n");
- sem_post(&my_sem_start_is_required);
- int val=1;
- while (val)
- {
- usleep(50000); // TBD: event?
- sem_getvalue(&my_sem_start_is_required, &val);
- }
- }
-
- if (a_status != 0)
- {
- a_error = EE_INTERNAL_ERROR;
- }
-
- SHOW_TIME("LEAVE fifo_add_command");
- return a_error;
-}
-
-//>
-//<fifo_add_commands
-
-espeak_ERROR fifo_add_commands (t_espeak_command* command1, t_espeak_command* command2)
-{
- ENTER("fifo_add_command");
-
- int a_status = pthread_mutex_lock(&my_mutex);
- espeak_ERROR a_error = EE_OK;
-
- if (!a_status)
- {
- SHOW_TIME("fifo_add_commands > locked\n");
-
- if (node_counter+1 >= MAX_NODE_COUNTER)
- {
- SHOW("push > %s\n", "EE_BUFFER_FULL");
- a_error = EE_BUFFER_FULL;
- }
- else
- {
- push(command1);
- push(command2);
- }
- SHOW_TIME("fifo_add_command > unlocking\n");
- a_status = pthread_mutex_unlock(&my_mutex);
- }
-
- if (!a_status && !my_command_is_running && (a_error == EE_OK))
- {
- // quit when one command is actually started
- // (for possible forthcoming 'end of command' checks)
- SHOW_TIME("fifo_add_command > post my_sem_start_is_required\n");
- sem_post(&my_sem_start_is_required);
- int val=1;
- while (val)
- {
- usleep(50000); // TBD: event?
- sem_getvalue(&my_sem_start_is_required, &val);
- }
- }
-
- if (a_status != 0)
- {
- a_error = EE_INTERNAL_ERROR;
- }
-
- SHOW_TIME("LEAVE fifo_add_commands");
- return a_error;
-}
-
-//>
-//<fifo_stop
-
-espeak_ERROR fifo_stop ()
-{
- ENTER("fifo_stop");
-
- int a_command_is_running = 0;
- int a_status = pthread_mutex_lock(&my_mutex);
- SHOW_TIME("fifo_stop > locked\n");
- if (a_status != 0)
- {
- return EE_INTERNAL_ERROR;
- }
-
- if (my_command_is_running)
- {
- a_command_is_running = 1;
- my_stop_is_required = 1;
- SHOW_TIME("fifo_stop > my_stop_is_required = 1\n");
- }
- SHOW_TIME("fifo_stop > unlocking\n");
- a_status = pthread_mutex_unlock(&my_mutex);
- if (a_status != 0)
- {
- return EE_INTERNAL_ERROR;
- }
-
- if (a_command_is_running)
- {
- SHOW_TIME("fifo_stop > wait for my_sem_stop_is_acknowledged\n");
- while ((sem_wait(&my_sem_stop_is_acknowledged) == -1) && errno == EINTR)
- {
- continue; // Restart when interrupted by handler
- }
- SHOW_TIME("fifo_stop > get my_sem_stop_is_acknowledged\n");
- }
-
- SHOW_TIME("fifo_stop > my_stop_is_required = 0\n");
- my_stop_is_required = 0;
- SHOW_TIME("LEAVE fifo_stop\n");
-
- return EE_OK;
-}
-
-//>
-
-//<fifo_is_speaking
-int fifo_is_busy ()
-{
- // ENTER("isSpeaking");
- // int aResult = (int) (my_command_is_running || WaveIsPlaying());
- SHOW("fifo_is_busy > aResult = %d\n",my_command_is_running);
- return my_command_is_running;
-}
-
-// int pause ()
-// {
-// ENTER("pause");
-// // TBD
-// // if (espeakPause (espeakHandle, 1))
-// return true;
-// }
-
-// int resume ()
-// {
-// ENTER("resume");
-// // TBD
-// // if (espeakPause (espeakHandle, 0))
-// return true;
-// }
-//>
-
-
-//<sleep_until_start_request_or_inactivity
-
-static int sleep_until_start_request_or_inactivity()
-{
- SHOW_TIME("fifo > sleep_until_start_request_or_inactivity > ENTER");
- int a_start_is_required=0;
-
- // Wait for the start request (my_sem_start_is_required).
- // Besides this, if the audio stream is still busy,
- // check from time to time its end.
- // The end of the stream is confirmed by several checks
- // for filtering underflow.
- //
- int i=0;
- while((i<= MAX_INACTIVITY_CHECK) && !a_start_is_required)
- {
- if (wave_is_busy( NULL) )
- {
- i = 0;
- }
- else
- {
- i++;
- }
-
- int err=0;
- struct timespec ts, to;
- struct timeval tv;
-
- clock_gettime2( &ts);
- to.tv_sec = ts.tv_sec;
- to.tv_nsec = ts.tv_nsec;
-
- add_time_in_ms( &ts, INACTIVITY_TIMEOUT);
-
- SHOW("fifo > sleep_until_start_request_or_inactivity > start sem_timedwait (start_is_required) from %d.%09lu to %d.%09lu \n",
- to.tv_sec, to.tv_nsec,
- ts.tv_sec, ts.tv_nsec);
-
- while ((err = sem_timedwait(&my_sem_start_is_required, &ts)) == -1
- && errno == EINTR)
- {
- continue;
- }
-
- assert (gettimeofday(&tv, NULL) != -1);
- SHOW("fifo > sleep_until_start_request_or_inactivity > stop sem_timedwait (start_is_required, err=%d) %d.%09lu \n", err,
- tv.tv_sec, tv.tv_usec*1000);
-
- if (err==0)
- {
- a_start_is_required = 1;
- }
- }
- SHOW_TIME("fifo > sleep_until_start_request_or_inactivity > LEAVE");
- return a_start_is_required;
-}
-
-//>
-//<close_stream
-
-static void close_stream()
-{
- SHOW_TIME("fifo > close_stream > ENTER\n");
-
- // Warning: a wave_close can be already required by
- // an external command (espeak_Cancel + fifo_stop), if so:
- // my_stop_is_required = 1;
-
- int a_status = pthread_mutex_lock(&my_mutex);
- assert (!a_status);
- int a_stop_is_required = my_stop_is_required;
- if (!a_stop_is_required)
- {
- my_command_is_running = 1;
- }
- a_status = pthread_mutex_unlock(&my_mutex);
-
- if (!a_stop_is_required)
- {
- wave_close(NULL);
-
- int a_status = pthread_mutex_lock(&my_mutex);
- assert (!a_status);
- my_command_is_running = 0;
-
- a_stop_is_required = my_stop_is_required;
- a_status = pthread_mutex_unlock(&my_mutex);
-
- if (a_stop_is_required)
- {
- // acknowledge the stop request
- SHOW_TIME("fifo > close_stream > post my_sem_stop_is_acknowledged\n");
- int a_status = sem_post(&my_sem_stop_is_acknowledged);
- assert( a_status != -1);
- }
- }
-
- SHOW_TIME("fifo > close_stream > LEAVE\n");
-}
-
-//>
-//<say_thread
-
-static void* say_thread(void*)
-{
- ENTER("say_thread");
-
- SHOW_TIME("say_thread > post my_sem_stop_is_acknowledged\n");
-
- // announce that thread is started
- sem_post(&my_sem_stop_is_acknowledged);
-
- int look_for_inactivity=0;
-
- while(1)
- {
- SHOW_TIME("say_thread > wait for my_sem_start_is_required\n");
-
- int a_start_is_required = 0;
- if (look_for_inactivity)
- {
- a_start_is_required = sleep_until_start_request_or_inactivity();
- if (!a_start_is_required)
- {
- close_stream();
- }
- }
- look_for_inactivity = 1;
-
- if (!a_start_is_required)
- {
- while ((sem_wait(&my_sem_start_is_required) == -1) && errno == EINTR)
- {
- continue; // Restart when interrupted by handler
- }
- }
- SHOW_TIME("say_thread > get my_sem_start_is_required\n");
-
- SHOW_TIME("say_thread > my_command_is_running = 1\n");
- my_command_is_running = 1;
-
- while( my_command_is_running)
- {
- SHOW_TIME("say_thread > locking\n");
- int a_status = pthread_mutex_lock(&my_mutex);
- assert (!a_status);
- t_espeak_command* a_command = (t_espeak_command*)pop();
-
- if (a_command == NULL)
- {
- SHOW_TIME("say_thread > text empty (talking=0) \n");
- a_status = pthread_mutex_unlock(&my_mutex);
- SHOW_TIME("say_thread > unlocked\n");
- SHOW_TIME("say_thread > my_command_is_running = 0\n");
- my_command_is_running = 0;
- }
- else
- {
- display_espeak_command(a_command);
- // purge start semaphore
- SHOW_TIME("say_thread > purge my_sem_start_is_required\n");
- while(0 == sem_trywait(&my_sem_start_is_required))
- {
- };
-
- if (my_stop_is_required)
- {
- SHOW_TIME("say_thread > my_command_is_running = 0\n");
- my_command_is_running = 0;
- }
- SHOW_TIME("say_thread > unlocking\n");
- a_status = pthread_mutex_unlock(&my_mutex);
-
- if (my_command_is_running)
- {
- process_espeak_command(a_command);
- }
- delete_espeak_command(a_command);
- }
- }
-
- if (my_stop_is_required)
- {
- // no mutex required since the stop command is synchronous
- // and waiting for my_sem_stop_is_acknowledged
- init();
-
- // purge start semaphore
- SHOW_TIME("say_thread > purge my_sem_start_is_required\n");
- while(0==sem_trywait(&my_sem_start_is_required))
- {
- };
-
- // acknowledge the stop request
- SHOW_TIME("say_thread > post my_sem_stop_is_acknowledged\n");
- int a_status = sem_post(&my_sem_stop_is_acknowledged);
- assert( a_status != -1);
- }
- // and wait for the next start
- SHOW_TIME("say_thread > wait for my_sem_start_is_required\n");
- }
-
- return NULL;
-}
-
-int fifo_is_command_enabled()
-{
- SHOW("ENTER fifo_is_command_enabled=%d\n",(int)(0 == my_stop_is_required));
- return (0 == my_stop_is_required);
-}
-
-//>
-//<fifo
-typedef struct t_node
-{
- t_espeak_command* data;
- t_node *next;
-} node;
-
-static node* head=NULL;
-static node* tail=NULL;
-// return 1 if ok, 0 otherwise
-static espeak_ERROR push(t_espeak_command* the_command)
-{
- ENTER("fifo > push");
-
- assert((!head && !tail) || (head && tail));
-
- if (the_command == NULL)
- {
- SHOW("push > command=0x%x\n", NULL);
- return EE_INTERNAL_ERROR;
- }
-
- if (node_counter >= MAX_NODE_COUNTER)
- {
- SHOW("push > %s\n", "EE_BUFFER_FULL");
- return EE_BUFFER_FULL;
- }
-
- node *n = (node *)malloc(sizeof(node));
- if (n == NULL)
- {
- return EE_INTERNAL_ERROR;
- }
-
- if (head == NULL)
- {
- head = n;
- tail = n;
- }
- else
- {
- tail->next = n;
- tail = n;
- }
-
- tail->next = NULL;
- tail->data = the_command;
-
- node_counter++;
- SHOW("push > counter=%d\n",node_counter);
-
- the_command->state = CS_PENDING;
- display_espeak_command(the_command);
-
- return EE_OK;
-}
-
-static t_espeak_command* pop()
-{
- ENTER("fifo > pop");
- t_espeak_command* the_command = NULL;
-
- assert((!head && !tail) || (head && tail));
-
- if (head != NULL)
- {
- node* n = head;
- the_command = n->data;
- head = n->next;
- free(n);
- node_counter--;
- SHOW("pop > command=0x%x (counter=%d)\n",the_command, node_counter);
- }
-
- if(head == NULL)
- {
- tail = NULL;
- }
-
- display_espeak_command(the_command);
-
- return the_command;
-}
-
-
-static void init()
-{
- ENTER("fifo > init");
- while (delete_espeak_command( pop() ))
- {}
- node_counter = 0;
-}
-
-//>
-//<fifo_init
-void fifo_terminate()
-{
- ENTER("fifo_terminate");
-
- pthread_cancel(my_thread);
- pthread_join(my_thread,NULL);
- pthread_mutex_destroy(&my_mutex);
- sem_destroy(&my_sem_start_is_required);
- sem_destroy(&my_sem_stop_is_acknowledged);
-
- init(); // purge fifo
-}
-
-#endif
-//>
-
diff --git a/navit/support/espeak/fifo.h b/navit/support/espeak/fifo.h
deleted file mode 100644
index b3699ff9b..000000000
--- a/navit/support/espeak/fifo.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef FIFO_H
-#define FIFO_H
-
-// Helps to add espeak commands in a first-in first-out queue
-// and run them asynchronously.
-
-#include "espeak_command.h"
-#include "speak_lib.h"
-
-// Initialize the fifo component.
-// First function to be called.
-void fifo_init();
-
-// Add an espeak command.
-//
-// Note: this function fails if too many commands are already buffered.
-// In such a case, the calling function could wait and then add again its command.
-//
-// Return: EE_OK: operation achieved
-// EE_BUFFER_FULL: the command can not be buffered;
-// you may try after a while to call the function again.
-// EE_INTERNAL_ERROR.
-espeak_ERROR fifo_add_command (t_espeak_command* c);
-
-// Add two espeak commands in a single transaction.
-//
-// Note: this function fails if too many commands are already buffered.
-// In such a case, the calling function could wait and then add again these commands.
-//
-// Return: EE_OK: operation achieved
-// EE_BUFFER_FULL: at least one command can not be buffered;
-// you may try after a while to call the function again.
-// EE_INTERNAL_ERROR.
-espeak_ERROR fifo_add_commands (t_espeak_command* c1, t_espeak_command* c2);
-
-// The current running command must be stopped and the awaiting commands are cleared.
-// Return: EE_OK: operation achieved
-// EE_INTERNAL_ERROR.
-espeak_ERROR fifo_stop ();
-
-// Is there a running command?
-// Returns 1 if yes; 0 otherwise.
-int fifo_is_busy ();
-
-// Terminate the fifo component.
-// Last function to be called.
-void fifo_terminate();
-
-// Indicates if the running command is still enabled.
-//
-// Note: this function is mainly called by the SynthCallback (speak_lib.cpp)
-// It indicates if the actual wave sample can still be played. It is helpful for
-// stopping speech as soon as a cancel command is applied.
-//
-// Returns 1 if yes, or 0 otherwise.
-int fifo_is_command_enabled();
-
-#endif
diff --git a/navit/support/espeak/intonation.c b/navit/support/espeak/intonation.c
deleted file mode 100755
index 61b2ff282..000000000
--- a/navit/support/espeak/intonation.c
+++ /dev/null
@@ -1,1104 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <wctype.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-#include "translate.h"
-
-
-/* Note this module is mostly old code that needs to be rewritten to
- provide a more flexible intonation system.
-*/
-
-// bits in SYLLABLE.flags
-#define SYL_RISE 1
-#define SYL_EMPHASIS 2
-#define SYL_END_CLAUSE 4
-
-typedef struct {
- char stress;
- char env;
- char flags; //bit 0=pitch rising, bit1=emnphasized, bit2=end of clause
- char nextph_type;
- short pitch1;
- short pitch2;
-} SYLLABLE;
-
-static SYLLABLE *syllable_tab;
-
-
-static int tone_pitch_env; /* used to return pitch envelope */
-
-
-
-/* Pitch data for tone types */
-/*****************************/
-
-
-#define PITCHfall 0
-#define PITCHrise 1
-#define PITCHfrise 2 // and 3 must be for the varient preceded by 'r'
-#define PITCHfrise2 4 // and 5 must be the 'r' variant
-#define PITCHrisefall 6
-
-/* 0 fall */
-unsigned char env_fall[128] = {
- 0xff, 0xfd, 0xfa, 0xf8, 0xf6, 0xf4, 0xf2, 0xf0, 0xee, 0xec, 0xea, 0xe8, 0xe6, 0xe4, 0xe2, 0xe0,
- 0xde, 0xdc, 0xda, 0xd8, 0xd6, 0xd4, 0xd2, 0xd0, 0xce, 0xcc, 0xca, 0xc8, 0xc6, 0xc4, 0xc2, 0xc0,
- 0xbe, 0xbc, 0xba, 0xb8, 0xb6, 0xb4, 0xb2, 0xb0, 0xae, 0xac, 0xaa, 0xa8, 0xa6, 0xa4, 0xa2, 0xa0,
- 0x9e, 0x9c, 0x9a, 0x98, 0x96, 0x94, 0x92, 0x90, 0x8e, 0x8c, 0x8a, 0x88, 0x86, 0x84, 0x82, 0x80,
- 0x7e, 0x7c, 0x7a, 0x78, 0x76, 0x74, 0x72, 0x70, 0x6e, 0x6c, 0x6a, 0x68, 0x66, 0x64, 0x62, 0x60,
- 0x5e, 0x5c, 0x5a, 0x58, 0x56, 0x54, 0x52, 0x50, 0x4e, 0x4c, 0x4a, 0x48, 0x46, 0x44, 0x42, 0x40,
- 0x3e, 0x3c, 0x3a, 0x38, 0x36, 0x34, 0x32, 0x30, 0x2e, 0x2c, 0x2a, 0x28, 0x26, 0x24, 0x22, 0x20,
- 0x1e, 0x1c, 0x1a, 0x18, 0x16, 0x14, 0x12, 0x10, 0x0e, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x00 };
-
-/* 1 rise */
-unsigned char env_rise[128] = {
- 0x00, 0x02, 0x04, 0x06, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e,
- 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e,
- 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e,
- 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e,
- 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e,
- 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe,
- 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde,
- 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfd, 0xff };
-
-unsigned char env_frise[128] = {
- 0xff, 0xf4, 0xea, 0xe0, 0xd6, 0xcc, 0xc3, 0xba, 0xb1, 0xa8, 0x9f, 0x97, 0x8f, 0x87, 0x7f, 0x78,
- 0x71, 0x6a, 0x63, 0x5c, 0x56, 0x50, 0x4a, 0x44, 0x3f, 0x39, 0x34, 0x2f, 0x2b, 0x26, 0x22, 0x1e,
- 0x1a, 0x17, 0x13, 0x10, 0x0d, 0x0b, 0x08, 0x06, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x13, 0x15, 0x17,
- 0x1a, 0x1d, 0x1f, 0x22, 0x25, 0x28, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x39, 0x3b, 0x3d, 0x40,
- 0x42, 0x45, 0x47, 0x4a, 0x4c, 0x4f, 0x51, 0x54, 0x57, 0x5a, 0x5d, 0x5f, 0x62, 0x65, 0x68, 0x6b,
- 0x6e, 0x71, 0x74, 0x78, 0x7b, 0x7e, 0x81, 0x85, 0x88, 0x8b, 0x8f, 0x92, 0x96, 0x99, 0x9d, 0xa0,
- 0xa4, 0xa8, 0xac, 0xaf, 0xb3, 0xb7, 0xbb, 0xbf, 0xc3, 0xc7, 0xcb, 0xcf, 0xd3, 0xd7, 0xdb, 0xe0 };
-
-static unsigned char env_r_frise[128] = {
- 0xcf, 0xcc, 0xc9, 0xc6, 0xc3, 0xc0, 0xbd, 0xb9, 0xb4, 0xb0, 0xab, 0xa7, 0xa2, 0x9c, 0x97, 0x92,
- 0x8c, 0x86, 0x81, 0x7b, 0x75, 0x6f, 0x69, 0x63, 0x5d, 0x57, 0x50, 0x4a, 0x44, 0x3e, 0x38, 0x33,
- 0x2d, 0x27, 0x22, 0x1c, 0x17, 0x12, 0x0d, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x08, 0x0a, 0x0c, 0x0d, 0x0f, 0x12, 0x14, 0x16,
- 0x19, 0x1b, 0x1e, 0x21, 0x24, 0x27, 0x2a, 0x2d, 0x30, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3f, 0x41,
- 0x43, 0x46, 0x48, 0x4b, 0x4d, 0x50, 0x52, 0x55, 0x58, 0x5a, 0x5d, 0x60, 0x63, 0x66, 0x69, 0x6c,
- 0x6f, 0x72, 0x75, 0x78, 0x7b, 0x7e, 0x81, 0x85, 0x88, 0x8b, 0x8f, 0x92, 0x96, 0x99, 0x9d, 0xa0,
- 0xa4, 0xa8, 0xac, 0xaf, 0xb3, 0xb7, 0xbb, 0xbf, 0xc3, 0xc7, 0xcb, 0xcf, 0xd3, 0xd7, 0xdb, 0xe0 };
-
-static unsigned char env_frise2[128] = {
- 0xff, 0xf9, 0xf4, 0xee, 0xe9, 0xe4, 0xdf, 0xda, 0xd5, 0xd0, 0xcb, 0xc6, 0xc1, 0xbd, 0xb8, 0xb3,
- 0xaf, 0xaa, 0xa6, 0xa1, 0x9d, 0x99, 0x95, 0x90, 0x8c, 0x88, 0x84, 0x80, 0x7d, 0x79, 0x75, 0x71,
- 0x6e, 0x6a, 0x67, 0x63, 0x60, 0x5d, 0x59, 0x56, 0x53, 0x50, 0x4d, 0x4a, 0x47, 0x44, 0x41, 0x3e,
- 0x3c, 0x39, 0x37, 0x34, 0x32, 0x2f, 0x2d, 0x2b, 0x28, 0x26, 0x24, 0x22, 0x20, 0x1e, 0x1c, 0x1a,
- 0x19, 0x17, 0x15, 0x14, 0x12, 0x11, 0x0f, 0x0e, 0x0d, 0x0c, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05,
- 0x05, 0x04, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x04, 0x04, 0x05, 0x06, 0x07, 0x08,
- 0x09, 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x12, 0x13, 0x15, 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x20 };
-
-static unsigned char env_r_frise2[128] = {
- 0xd0, 0xce, 0xcd, 0xcc, 0xca, 0xc8, 0xc7, 0xc5, 0xc3, 0xc1, 0xc0, 0xbd, 0xbb, 0xb8, 0xb5, 0xb3,
- 0xb0, 0xad, 0xaa, 0xa7, 0xa3, 0xa0, 0x9d, 0x99, 0x96, 0x92, 0x8f, 0x8b, 0x87, 0x84, 0x80, 0x7c,
- 0x78, 0x74, 0x70, 0x6d, 0x69, 0x65, 0x61, 0x5d, 0x59, 0x55, 0x51, 0x4d, 0x4a, 0x46, 0x42, 0x3e,
- 0x3b, 0x37, 0x34, 0x31, 0x2f, 0x2d, 0x2a, 0x28, 0x26, 0x24, 0x22, 0x20, 0x1e, 0x1c, 0x1a, 0x19,
- 0x17, 0x15, 0x14, 0x12, 0x11, 0x0f, 0x0e, 0x0d, 0x0c, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05, 0x05,
- 0x04, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x04, 0x04, 0x05, 0x06, 0x07, 0x08,
- 0x09, 0x0a, 0x0b, 0x0c, 0x0e, 0x0f, 0x10, 0x12, 0x13, 0x15, 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x20 };
-
-static unsigned char env_risefall[128] = {
- 0x98, 0x99, 0x99, 0x9a, 0x9c, 0x9d, 0x9f, 0xa1, 0xa4, 0xa7, 0xa9, 0xac, 0xb0, 0xb3, 0xb6, 0xba,
- 0xbe, 0xc1, 0xc5, 0xc9, 0xcd, 0xd1, 0xd4, 0xd8, 0xdc, 0xdf, 0xe3, 0xe6, 0xea, 0xed, 0xf0, 0xf2,
- 0xf5, 0xf7, 0xf9, 0xfb, 0xfc, 0xfd, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd,
- 0xfb, 0xfa, 0xf8, 0xf6, 0xf3, 0xf1, 0xee, 0xec, 0xe9, 0xe6, 0xe4, 0xe0, 0xdd, 0xda, 0xd7, 0xd3,
- 0xd0, 0xcc, 0xc8, 0xc4, 0xc0, 0xbc, 0xb8, 0xb4, 0xb0, 0xac, 0xa7, 0xa3, 0x9f, 0x9a, 0x96, 0x91,
- 0x8d, 0x88, 0x84, 0x7f, 0x7b, 0x76, 0x72, 0x6d, 0x69, 0x65, 0x60, 0x5c, 0x58, 0x54, 0x50, 0x4c,
- 0x48, 0x44, 0x40, 0x3c, 0x39, 0x35, 0x32, 0x2f, 0x2b, 0x28, 0x26, 0x23, 0x20, 0x1d, 0x1a, 0x17,
- 0x15, 0x12, 0x0f, 0x0d, 0x0a, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 };
-
-static unsigned char env_rise2[128] = {
- 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x06, 0x06,
- 0x07, 0x08, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
- 0x16, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1f, 0x20, 0x22, 0x23, 0x25, 0x26, 0x28, 0x29, 0x2b,
- 0x2d, 0x2f, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, 0x47, 0x49, 0x4b,
- 0x4e, 0x50, 0x52, 0x55, 0x57, 0x5a, 0x5d, 0x5f, 0x62, 0x65, 0x67, 0x6a, 0x6d, 0x70, 0x73, 0x76,
- 0x79, 0x7c, 0x7f, 0x82, 0x86, 0x89, 0x8c, 0x90, 0x93, 0x96, 0x9a, 0x9d, 0xa0, 0xa3, 0xa6, 0xa9,
- 0xac, 0xaf, 0xb2, 0xb5, 0xb8, 0xbb, 0xbe, 0xc1, 0xc4, 0xc7, 0xca, 0xcd, 0xd0, 0xd3, 0xd6, 0xd9,
- 0xdc, 0xdf, 0xe2, 0xe4, 0xe7, 0xe9, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfb, 0xfd };
-
-static unsigned char env_fall2[128] = {
- 0xfe, 0xfe, 0xfd, 0xfd, 0xfc, 0xfb, 0xfb, 0xfa, 0xfa, 0xf9, 0xf8, 0xf8, 0xf7, 0xf7, 0xf6, 0xf6,
- 0xf5, 0xf4, 0xf4, 0xf3, 0xf3, 0xf2, 0xf2, 0xf1, 0xf0, 0xf0, 0xef, 0xee, 0xee, 0xed, 0xec, 0xeb,
- 0xea, 0xea, 0xe9, 0xe8, 0xe7, 0xe6, 0xe5, 0xe4, 0xe3, 0xe2, 0xe1, 0xe0, 0xde, 0xdd, 0xdc, 0xdb,
- 0xd9, 0xd8, 0xd6, 0xd5, 0xd3, 0xd2, 0xd0, 0xce, 0xcc, 0xcb, 0xc9, 0xc7, 0xc5, 0xc3, 0xc0, 0xbe,
- 0xbc, 0xb9, 0xb7, 0xb5, 0xb2, 0xaf, 0xad, 0xaa, 0xa7, 0xa4, 0xa1, 0x9e, 0x9a, 0x97, 0x94, 0x90,
- 0x8d, 0x89, 0x85, 0x81, 0x7d, 0x79, 0x75, 0x71, 0x6d, 0x68, 0x64, 0x61, 0x5e, 0x5b, 0x57, 0x54,
- 0x51, 0x4d, 0x4a, 0x46, 0x43, 0x40, 0x3c, 0x39, 0x35, 0x32, 0x2e, 0x2a, 0x27, 0x23, 0x1f, 0x1c,
- 0x18, 0x14, 0x11, 0x0d, 0x0b, 0x09, 0x07, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 };
-
-static unsigned char env_fallrise3[128] = {
- 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfd, 0xfc, 0xfa, 0xf8, 0xf6, 0xf4, 0xf1, 0xee, 0xeb,
- 0xe8, 0xe5, 0xe1, 0xde, 0xda, 0xd6, 0xd2, 0xcd, 0xc9, 0xc4, 0xbf, 0xba, 0xb6, 0xb0, 0xab, 0xa6,
- 0xa1, 0x9c, 0x96, 0x91, 0x8b, 0x86, 0x80, 0x7b, 0x75, 0x6f, 0x6a, 0x64, 0x5f, 0x59, 0x54, 0x4f,
- 0x49, 0x44, 0x3f, 0x3a, 0x35, 0x30, 0x2b, 0x26, 0x22, 0x1d, 0x19, 0x15, 0x11, 0x0d, 0x0a, 0x07,
- 0x04, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x05,
- 0x07, 0x09, 0x0b, 0x0d, 0x10, 0x12, 0x15, 0x18, 0x1b, 0x1e, 0x22, 0x25, 0x29, 0x2d, 0x31, 0x35,
- 0x3a, 0x3e, 0x43, 0x48, 0x4c, 0x51, 0x57, 0x5b, 0x5e, 0x62, 0x65, 0x68, 0x6b, 0x6e, 0x71, 0x74,
- 0x76, 0x78, 0x7b, 0x7c, 0x7e, 0x80, 0x81, 0x82, 0x83, 0x83, 0x84, 0x84, 0x83, 0x83, 0x82, 0x81 };
-
-static unsigned char env_fallrise4[128] = {
- 0x72, 0x72, 0x71, 0x71, 0x70, 0x6f, 0x6d, 0x6c, 0x6a, 0x68, 0x66, 0x64, 0x61, 0x5f, 0x5c, 0x5a,
- 0x57, 0x54, 0x51, 0x4e, 0x4b, 0x48, 0x45, 0x42, 0x3f, 0x3b, 0x38, 0x35, 0x32, 0x2f, 0x2c, 0x29,
- 0x26, 0x23, 0x20, 0x1d, 0x1b, 0x18, 0x16, 0x14, 0x12, 0x10, 0x0e, 0x0c, 0x0b, 0x0a, 0x09, 0x08,
- 0x07, 0x07, 0x07, 0x07, 0x07, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06,
- 0x07, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0f, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1b, 0x1d, 0x20,
- 0x23, 0x26, 0x29, 0x2c, 0x2f, 0x33, 0x37, 0x3b, 0x3f, 0x43, 0x47, 0x4c, 0x51, 0x56, 0x5b, 0x60,
- 0x65, 0x6a, 0x6f, 0x74, 0x79, 0x7f, 0x84, 0x89, 0x8f, 0x95, 0x9b, 0xa1, 0xa7, 0xad, 0xb3, 0xba,
- 0xc0, 0xc7, 0xce, 0xd5, 0xdc, 0xe3, 0xea, 0xf1, 0xf5, 0xf7, 0xfa, 0xfc, 0xfd, 0xfe, 0xff, 0xff };
-
-static unsigned char env_risefallrise[128] = {
- 0x7f, 0x7f, 0x7f, 0x80, 0x81, 0x83, 0x84, 0x87, 0x89, 0x8c, 0x8f, 0x92, 0x96, 0x99, 0x9d, 0xa1,
- 0xa5, 0xaa, 0xae, 0xb2, 0xb7, 0xbb, 0xc0, 0xc5, 0xc9, 0xcd, 0xd2, 0xd6, 0xda, 0xde, 0xe2, 0xe6,
- 0xea, 0xed, 0xf0, 0xf3, 0xf5, 0xf8, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xfe, 0xfd, 0xfc, 0xfb, 0xf9,
- 0xf7, 0xf4, 0xf0, 0xec, 0xe7, 0xe2, 0xdc, 0xd5, 0xce, 0xc6, 0xbd, 0xb4, 0xa9, 0x9e, 0x92, 0x88,
- 0x82, 0x7d, 0x77, 0x72, 0x6c, 0x66, 0x60, 0x5a, 0x54, 0x4e, 0x49, 0x42, 0x3c, 0x37, 0x32, 0x2d,
- 0x28, 0x24, 0x1f, 0x1b, 0x18, 0x14, 0x11, 0x0e, 0x0c, 0x09, 0x07, 0x06, 0x05, 0x04, 0x04, 0x04,
- 0x04, 0x05, 0x06, 0x08, 0x0a, 0x0d, 0x10, 0x14, 0x18, 0x1d, 0x23, 0x29, 0x2f, 0x37, 0x3e, 0x47,
- 0x50, 0x5a, 0x64, 0x70, 0x7c, 0x83, 0x85, 0x88, 0x8a, 0x8c, 0x8e, 0x8f, 0x91, 0x92, 0x93, 0x93 };
-
-
-
-
-unsigned char *envelope_data[18] = {
- env_fall,
- env_rise,
- env_frise, env_r_frise,
- env_frise2, env_r_frise2,
- env_risefall, env_risefall,
-
- env_fallrise3, env_fallrise3,
- env_fallrise4, env_fallrise4,
- env_fall2, env_fall2,
- env_rise2, env_rise2,
- env_risefallrise, env_risefallrise
- };
-
-
-/* all pitches given in Hz above pitch_base */
-
-// pitch change during the main part of the clause
-static int drops_0[8] = {0x400,0x400,0x700,0x700,0x700,0xa00,0x1800,0x0e00};
-//static int drops_1[8] = {0x400,0x400,0x600,0x600,0xc00,0xc00,0x0e00,0x0e00};
-//static int drops_2[8] = {0x400,0x400,0x600,0x600,-0x800,0xc00,0x0e00,0x0e00};
-
-static short oflow[] = {0, 20, 12, 4, 0};
-static short oflow_emf[] = {5, 24, 15, 10, 5};
-static short oflow_less[] = {3, 19, 12, 7, 2};
-// static short oflow_test2[] = {20, 0, 20, 0, 20};
-// static short back_emf[] = {35, 32, 0};
-
-
-#define N_TONE_HEAD_TABLE 13
-#define N_TONE_NUCLEUS_TABLE 13
-
-
-typedef struct {
- unsigned char pre_start;
- unsigned char pre_end;
-
- unsigned char body_start;
- unsigned char body_end;
-
- int *body_drops;
- unsigned char body_max_steps;
- char body_lower_u;
-
- char n_overflow;
- short *overflow;
-} TONE_HEAD;
-
-
-typedef struct {
- unsigned char pitch_env0; /* pitch envelope, tonic syllable at end */
- unsigned char tonic_max0;
- unsigned char tonic_min0;
-
- unsigned char pitch_env1; /* followed by unstressed */
- unsigned char tonic_max1;
- unsigned char tonic_min1;
-
- short *backwards;
-
- unsigned char tail_start;
- unsigned char tail_end;
- unsigned char flags;
-} TONE_NUCLEUS;
-
-#define T_EMPH 1
-
-static TONE_HEAD tone_head_table[N_TONE_HEAD_TABLE] = {
- {20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 0 statement
- {20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 1 comma
- {20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 2 question
- {20, 25, 36, 22, drops_0, 3, 4, 5, oflow_emf}, // 3 exclamation
- {20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 4 statement, emphatic
- {20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less}, // 5 statement, less intonation
- {20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less}, // 6 comma, less intonation
- {20, 25, 32, 24, drops_0, 4, 3, 5, oflow_less}, // 7 comma, less intonation, less rise
- {20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 8 pitch raises at end of sentence
- {20, 25, 34, 20, drops_0, 3, 3, 5, oflow}, // 9 comma
- {20, 25, 34, 22, drops_0, 3, 3, 5, oflow}, // 10 question
- {15, 18, 18, 14, drops_0, 3, 3, 5, oflow_less}, // 11 test
- {20, 25, 24, 22, drops_0, 3, 3, 5, oflow_less}, // 12 test
-};
-
-static TONE_NUCLEUS tone_nucleus_table[N_TONE_NUCLEUS_TABLE] = {
- {PITCHfall, 30, 5, PITCHfall, 32, 9, NULL, 12, 7, 0}, // 0 statement
- {PITCHfrise, 35, 8, PITCHfrise2, 35,10, NULL, 15, 23, 0}, // 1 comma
- {PITCHfrise, 39,10, PITCHfrise2, 36,10, NULL, 15, 28, 0}, // 2 question
-// {PITCHfall, 41, 4, PITCHfall, 41,27, NULL, 16, 4, T_EMPH}, // 3 exclamation
- {PITCHfall, 41, 4, PITCHfall, 41,35, NULL, 35, 4, T_EMPH}, // 3 exclamation
- {PITCHfall, 38, 2, PITCHfall, 42,30, NULL, 15, 5, 0}, // 4 statement, emphatic
- {PITCHfall, 28, 5, PITCHfall, 28, 9, NULL, 12, 7, 0}, // 5 statement, less intonation
- {PITCHfrise, 30, 8, PITCHfrise2, 30,10, NULL, 13, 20, 0}, // 6 comma, less intonation
- {PITCHfrise2, 28, 7, PITCHfall, 29,14, NULL, 14, 8, 0}, // 7 comma, less intonation, less rise
- {PITCHrise, 30,20, PITCHfall, 19,14, NULL, 20, 26, 0}, // 8 pitch raises at end of sentence
- {PITCHfrise, 35,11, PITCHfrise2, 32,10, NULL, 19, 24, 0}, // 9 comma
- {PITCHfrise, 39,15, PITCHfall, 28,14, NULL, 20, 36, 0}, // 10 question
- {PITCHfall, 28, 6, PITCHfall, 28,10, NULL, 12, 6, 0}, // 11 test
- {PITCHfall, 35, 9, PITCHfall, 35,12, NULL, 16, 10, 0}, // 12 test
-};
-
-
-
-/* index by 0=. 1=, 2=?, 3=! 4=none, 5=emphasized */
-unsigned char punctuation_to_tone[INTONATION_TYPES][PUNCT_INTONATIONS] = {
- {0,1,2,3,0,4},
- {0,1,2,3,0,4},
- {5,6,2,3,0,4},
- {5,7,1,3,0,4},
- {8,9,10,3,0,0},
- {8,8,10,3,0,0},
- {11,11,11,11,0,0}, // 6 test
- {12,12,12,12,0,0}
-};
-
-
-
-/* indexed by stress */
-static int min_drop[] = {0x300,0x300,0x400,0x400,0x900,0x900,0x900,0xb00};
-
-
-
-
-#define SECONDARY 3
-#define PRIMARY 4
-#define PRIMARY_STRESSED 6
-#define PRIMARY_LAST 7
-
-
-static int number_pre;
-static int number_body;
-static int number_tail;
-static int last_primary;
-static int tone_posn;
-static int tone_posn2;
-static int no_tonic;
-
-
-static void count_pitch_vowels(int start, int end, int clause_end)
-/****************************************************************/
-{
- int ix;
- int stress;
- int max_stress = 0;
- int max_stress_posn = 0; // last syllable ot the highest stress
- int max_stress_posn2 = 0; // penuntimate syllable of the highest stress
-
- number_pre = -1; /* number of vowels before 1st primary stress */
- number_body = 0;
- number_tail = 0; /* number between tonic syllable and next primary */
- last_primary = -1;
-
- for(ix=start; ix<end; ix++)
- {
- stress = syllable_tab[ix].stress; /* marked stress level */
-
- if(stress >= max_stress)
- {
- if(stress > max_stress)
- {
- max_stress_posn2 = ix;
- }
- else
- {
- max_stress_posn2 = max_stress_posn;
- }
- max_stress_posn = ix;
- max_stress = stress;
- }
- if(stress >= PRIMARY)
- {
- if(number_pre < 0)
- number_pre = ix - start;
-
- last_primary = ix;
- }
-
- }
-
- if(number_pre < 0)
- number_pre = end;
-
- number_tail = end - max_stress_posn - 1;
- tone_posn = max_stress_posn;
- tone_posn2 = max_stress_posn2;
-
- if(no_tonic)
- {
- tone_posn = tone_posn2 = end; // next position after the end of the truncated clause
- }
- else
- if(last_primary >= 0)
- {
- if(end == clause_end)
- {
- syllable_tab[last_primary].stress = PRIMARY_LAST;
- }
- }
- else
- {
- // no primary stress. Use the highest stress
- syllable_tab[tone_posn].stress = PRIMARY_LAST;
- }
-} /* end of count_pitch_vowels */
-
-
-
-
-static int count_increments(int ix, int end_ix, int min_stress)
-/*************************************************************/
-/* Count number of primary stresses up to tonic syllable or body_reset */
-{
- int count = 0;
- int stress;
-
- while(ix < end_ix)
- {
- stress = syllable_tab[ix++].stress;
- if(stress >= PRIMARY_LAST)
- break;
-
- if(stress >= min_stress)
- count++;
- }
- return(count);
-} /* end of count_increments */
-
-
-
-static void set_pitch(SYLLABLE *syl, int base, int drop)
-/******************************************************/
-// Set the pitch of a vowel in syllable_tab. Base & drop are Hz * 256
-{
- int pitch1, pitch2;
- int flags = 0;
-
- /* adjust experimentally */
- int pitch_range2 = 148;
- int pitch_base2 = 72;
-
- if(base < 0) base = 0;
-
- pitch2 = ((base * pitch_range2 ) >> 15) + pitch_base2;
-
- if(drop < 0)
- {
- flags = SYL_RISE;
- drop = -drop;
- }
-
- pitch1 = pitch2 + ((drop * pitch_range2) >> 15);
-
- if(pitch1 > 511) pitch1 = 511;
- if(pitch2 > 511) pitch2 = 511;
-
- syl->pitch1 = pitch1;
- syl->pitch2 = pitch2;
- syl->flags |= flags;
-} /* end of set_pitch */
-
-
-
-static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *tn, int min_stress, int continuing)
-/**********************************************************************************************/
-/* Calculate pitches until next RESET or tonic syllable, or end.
- Increment pitch if stress is >= min_stress.
- Used for tonic segment */
-{
- int stress;
- int pitch=0;
- int increment=0;
- int n_primary=0;
- int n_steps=0;
- int initial;
- int overflow=0;
- int n_overflow;
- int *drops;
- short *overflow_tab;
- SYLLABLE *syl;
-
- static short continue_tab[5] = {-13, 16, 10, 4, 0};
-
- drops = th->body_drops;
-
- if(continuing)
- {
- initial =0;
- overflow = 0;
- n_overflow = 5;
- overflow_tab = continue_tab;
- increment = (th->body_end - th->body_start) << 8;
- increment = increment / (th->body_max_steps -1);
- }
- else
- {
- n_overflow = th->n_overflow;
- overflow_tab = th->overflow;
- initial = 1;
- }
-
- while(ix < end_ix)
- {
- syl = &syllable_tab[ix];
- stress = syl->stress;
-
-// if(stress == PRIMARY_MARKED)
-// initial = 1; // reset the intonation pattern
-
- if(initial || (stress >= min_stress))
- {
- // a primary stress
-
- if((initial) || (stress == 5))
- {
- initial = 0;
- overflow = 0;
- n_steps = n_primary = count_increments(ix,end_ix,min_stress);
-
- if(n_steps > th->body_max_steps)
- n_steps = th->body_max_steps;
-
- if(n_steps > 1)
- {
- increment = (th->body_end - th->body_start) << 8;
- increment = increment / (n_steps -1);
- }
- else
- increment = 0;
-
- pitch = th->body_start << 8;
- }
- else
- {
- if(n_steps > 0)
- pitch += increment;
- else
- {
- pitch = (th->body_end << 8) - (increment * overflow_tab[overflow++])/16;
- if(overflow >= n_overflow)
- {
- overflow = 0;
- overflow_tab = th->overflow;
- }
- }
- }
-
- n_steps--;
-
- n_primary--;
- if((tn->backwards) && (n_primary < 2))
- {
- pitch = tn->backwards[n_primary] << 8;
- }
- }
-
- if(stress >= PRIMARY)
- {
- syl->stress = PRIMARY_STRESSED;
- set_pitch(syl,pitch,drops[stress]);
- }
- else
- if(stress >= SECONDARY)
- {
- set_pitch(syl,pitch,drops[stress]);
- }
- else
- {
- /* unstressed, drop pitch if preceded by PRIMARY */
- if((syllable_tab[ix-1].stress & 0x3f) >= SECONDARY)
- set_pitch(syl,pitch - (th->body_lower_u << 8), drops[stress]);
- else
- set_pitch(syl,pitch,drops[stress]);
- }
-
- ix++;
- }
- return(ix);
-} /* end of calc_pitch_segment */
-
-
-
-
-
-static int calc_pitch_segment2(int ix, int end_ix, int start_p, int end_p, int min_stress)
-/****************************************************************************************/
-/* Linear pitch rise/fall, change pitch at min_stress or stronger
- Used for pre-head and tail */
-{
- int stress;
- int pitch;
- int increment;
- int n_increments;
- int drop;
- SYLLABLE *syl;
-
- if(ix >= end_ix)
- return(ix);
-
- n_increments = count_increments(ix,end_ix,min_stress);
- increment = (end_p - start_p) << 8;
-
- if(n_increments > 1)
- {
- increment = increment / n_increments;
- }
-
-
- pitch = start_p << 8;
- while(ix < end_ix)
- {
- syl = &syllable_tab[ix];
- stress = syl->stress;
-
- if(increment > 0)
- {
- set_pitch(syl,pitch,-increment);
- pitch += increment;
- }
- else
- {
- drop = -increment;
- if(drop < min_drop[stress])
- drop = min_drop[stress];
-
- pitch += increment;
-
- if(drop > 0x900)
- drop = 0x900;
- set_pitch(syl, pitch, drop);
- }
-
- ix++;
- }
- return(ix);
-} /* end of calc_pitch_segment2 */
-
-
-
-
-
-
-static int calc_pitches(int start, int end, int head_tone, int nucleus_tone)
-//===========================================================================
-// Calculate pitch values for the vowels in this tone group
-{
- int ix;
- TONE_HEAD *th;
- TONE_NUCLEUS *tn;
- int drop;
- int continuing = 0;
-
- if(start > 0)
- continuing = 1;
-
- th = &tone_head_table[head_tone];
- tn = &tone_nucleus_table[nucleus_tone];
- ix = start;
-
- /* vowels before the first primary stress */
- /******************************************/
-
- if(number_pre > 0)
- {
- ix = calc_pitch_segment2(ix, ix+number_pre, th->pre_start, th->pre_end, 0);
- }
-
- /* body of tonic segment */
- /*************************/
-
- if(option_tone_flags & OPTION_EMPHASIZE_PENULTIMATE)
- {
- tone_posn = tone_posn2; // put tone on the penultimate stressed word
- }
- ix = calc_pitch_segment(ix,tone_posn, th, tn, PRIMARY, continuing);
-
- if(no_tonic)
- return(0);
-
- /* tonic syllable */
- /******************/
-
- if(tn->flags & T_EMPH)
- {
- syllable_tab[ix].flags |= SYL_EMPHASIS;
- }
-
- if(number_tail == 0)
- {
- tone_pitch_env = tn->pitch_env0;
- drop = tn->tonic_max0 - tn->tonic_min0;
- set_pitch(&syllable_tab[ix++],tn->tonic_min0 << 8,drop << 8);
- }
- else
- {
- tone_pitch_env = tn->pitch_env1;
- drop = tn->tonic_max1 - tn->tonic_min1;
- set_pitch(&syllable_tab[ix++],tn->tonic_min1 << 8,drop << 8);
- }
-
- syllable_tab[tone_posn].env = tone_pitch_env;
- if(syllable_tab[tone_posn].stress == PRIMARY)
- syllable_tab[tone_posn].stress = PRIMARY_STRESSED;
-
- /* tail, after the tonic syllable */
- /**********************************/
-
- calc_pitch_segment2(ix, end, tn->tail_start, tn->tail_end, 0);
-
- return(tone_pitch_env);
-} /* end of calc_pitches */
-
-
-
-
-
-
-static void CalcPitches_Tone(Translator *tr, int clause_tone)
-{//==========================================================
-// clause_tone: 0=. 1=, 2=?, 3=! 4=none
- PHONEME_LIST *p;
- int ix;
- int count_stressed=0;
- int final_stressed=0;
-
- int tone_ph;
- int pause;
- int tone_promoted;
- PHONEME_TAB *tph;
- PHONEME_TAB *prev_tph; // forget across word boundary
- PHONEME_TAB *prevw_tph; // remember across word boundary
- PHONEME_TAB *prev2_tph; // 2 tones previous
- PHONEME_LIST *prev_p;
-
- int pitch_adjust = 0; // pitch gradient through the clause - inital value
- int pitch_decrement = 0; // decrease by this for each stressed syllable
- int pitch_low = 0; // until it drops to this
- int pitch_high = 0; // then reset to this
-
- p = &phoneme_list[0];
-
- // count number of stressed syllables
- p = &phoneme_list[0];
- for(ix=0; ix<n_phoneme_list; ix++, p++)
- {
- if((p->type == phVOWEL) && (p->stresslevel >= 4))
- {
- if(count_stressed == 0)
- final_stressed = ix;
-
- if(p->stresslevel >= 4)
- {
- final_stressed = ix;
- count_stressed++;
- }
- }
- }
-
- phoneme_list[final_stressed].stresslevel = 7;
-
- // language specific, changes to tones
- if(tr->translator_name == L('v','i'))
- {
- // LANG=vi
- p = &phoneme_list[final_stressed];
- if(p->tone_ph == 0)
- p->tone_ph = PhonemeCode('7'); // change default tone (tone 1) to falling tone at end of clause
- }
-
-
- pause = 1;
- tone_promoted = 0;
-
- prev_p = p = &phoneme_list[0];
- prev_tph = prevw_tph = phoneme_tab[phonPAUSE];
-
- // perform tone sandhi
- for(ix=0; ix<n_phoneme_list; ix++, p++)
- {
- if((p->type == phPAUSE) && (p->ph->std_length > 50))
- {
- pause = 1; // there is a pause since the previous vowel
- prevw_tph = phoneme_tab[phonPAUSE]; // forget previous tone
- }
-
- if(p->newword)
- {
- prev_tph = phoneme_tab[phonPAUSE]; // forget across word boundaries
- }
-
- if(p->synthflags & SFLAG_SYLLABLE)
- {
- tone_ph = p->tone_ph;
- tph = phoneme_tab[tone_ph];
-
- // Mandarin
- if(tr->translator_name == L('z','h'))
- {
- if(tone_ph == 0)
- {
- if(pause || tone_promoted)
- {
- tone_ph = PhonemeCode2('5','5'); // no previous vowel, use tone 1
- tone_promoted = 1;
- }
- else
- {
- tone_ph = PhonemeCode2('1','1'); // default tone 5
- }
-
- p->tone_ph = tone_ph;
- tph = phoneme_tab[tone_ph];
-
- }
- else
- {
- tone_promoted = 0;
- }
-
- if(ix == final_stressed)
- {
- if((tph->mnemonic == 0x3535 ) || (tph->mnemonic == 0x3135))
- {
- // change sentence final tone 1 or 4 to stress 6, not 7
- phoneme_list[final_stressed].stresslevel = 6;
- }
- }
-
- if(prevw_tph->mnemonic == 0x343132) // [214]
- {
- if(tph->mnemonic == 0x343132) // [214]
- prev_p->tone_ph = PhonemeCode2('3','5');
- else
- prev_p->tone_ph = PhonemeCode2('2','1');
- }
- if((prev_tph->mnemonic == 0x3135) && (tph->mnemonic == 0x3135)) // [51] + [51]
- {
- prev_p->tone_ph = PhonemeCode2('5','3');
- }
-
- if(tph->mnemonic == 0x3131) // [11] Tone 5
- {
- // tone 5, change its level depending on the previous tone (across word boundaries)
- if(prevw_tph->mnemonic == 0x3535)
- p->tone_ph = PhonemeCode2('2','2');
- if(prevw_tph->mnemonic == 0x3533)
- p->tone_ph = PhonemeCode2('3','3');
- if(prevw_tph->mnemonic == 0x343132)
- p->tone_ph = PhonemeCode2('4','4');
-
- // tone 5 is unstressed (shorter)
- p->stresslevel = 1; // diminished stress
- }
- }
-
- prev_p = p;
- prev2_tph = prevw_tph;
- prevw_tph = prev_tph = tph;
- pause = 0;
- }
- }
-
- // convert tone numbers to pitch
- p = &phoneme_list[0];
- for(ix=0; ix<n_phoneme_list; ix++, p++)
- {
- if(p->synthflags & SFLAG_SYLLABLE)
- {
- tone_ph = p->tone_ph;
-
- if(p->stresslevel != 1) // TEST, consider all syllables as stressed
- {
- if(ix == final_stressed)
- {
- // the last stressed syllable
- pitch_adjust = pitch_low;
- }
- else
- {
- pitch_adjust -= pitch_decrement;
- if(pitch_adjust <= pitch_low)
- pitch_adjust = pitch_high;
- }
- }
-
- if(tone_ph ==0)
- {
- tone_ph = phonDEFAULTTONE; // no tone specified, use default tone 1
- p->tone_ph = tone_ph;
- }
- p->pitch1 = pitch_adjust + phoneme_tab[tone_ph]->start_type;
- p->pitch2 = pitch_adjust + phoneme_tab[tone_ph]->end_type;
- }
- }
-
-
-} // end of Translator::CalcPitches_Tone
-
-
-
-void CalcPitches(Translator *tr, int clause_type)
-{//==============================================
-// clause_type: 0=. 1=, 2=?, 3=! 4=none
- PHONEME_LIST *p;
- SYLLABLE *syl;
- int ix;
- int x;
- int st_ix;
- int n_st;
- int option;
- int group_tone;
- int group_tone_emph;
- int group_tone_comma;
- int ph_start=0;
- int st_start;
- int st_clause_end;
- int count;
- int n_primary;
- int count_primary;
- PHONEME_TAB *ph;
- int ph_end=n_phoneme_list;
-
- SYLLABLE syllable_tab2[N_PHONEME_LIST];
-
- syllable_tab = syllable_tab2; // don't use permanent storage. it's only needed during the call of CalcPitches()
- n_st = 0;
- n_primary = 0;
- for(ix=0; ix<(n_phoneme_list-1); ix++)
- {
- p = &phoneme_list[ix];
- if(p->synthflags & SFLAG_SYLLABLE)
- {
- syllable_tab[n_st].flags = 0;
- syllable_tab[n_st].env = PITCHfall;
- syllable_tab[n_st].nextph_type = phoneme_list[ix+1].type;
- syllable_tab[n_st++].stress = p->stresslevel;
-
- if(p->stresslevel >= 4)
- n_primary++;
- }
- else
- if((p->ph->code == phonPAUSE_CLAUSE) && (n_st > 0))
- {
- syllable_tab[n_st-1].flags |= SYL_END_CLAUSE;
- }
- }
- syllable_tab[n_st].stress = 0; // extra 0 entry at the end
-
- if(n_st == 0)
- return; // nothing to do
-
-
-
- if(tr->langopts.tone_language == 1)
- {
- CalcPitches_Tone(tr,clause_type);
- return;
- }
-
-
- option = tr->langopts.intonation_group;
- if(option >= INTONATION_TYPES)
- option = 0;
-
- group_tone = tr->punct_to_tone[option][clause_type];
- group_tone_emph = tr->punct_to_tone[option][5]; // emphatic form of statement
- group_tone_comma = tr->punct_to_tone[option][1]; // emphatic form of statement
-
- if(clause_type == 4)
- no_tonic = 1; /* incomplete clause, used for abbreviations such as Mr. Dr. Mrs. */
- else
- no_tonic = 0;
-
- st_start = 0;
- count_primary=0;
- for(st_ix=0; st_ix<n_st; st_ix++)
- {
- syl = &syllable_tab[st_ix];
-
- if(syl->stress >= 4)
- count_primary++;
-
- if(syl->stress == 6)
- {
- // reduce the stress of the previous stressed syllable (review only the previous few syllables)
- for(ix=st_ix-1; ix>=st_start && ix>=(st_ix-3); ix--)
- {
- if(syllable_tab[ix].stress == 6)
- break;
- if(syllable_tab[ix].stress == 4)
- {
- syllable_tab[ix].stress = 3;
- break;
- }
- }
-
- // are the next primary syllables also emphasized ?
- for(ix=st_ix+1; ix<n_st; ix++)
- {
- if(syllable_tab[ix].stress == 4)
- break;
- if(syllable_tab[ix].stress == 6)
- {
- // emphasize this syllable, but don't end the current tone group
- syllable_tab[st_ix].flags = SYL_EMPHASIS;
- syl->stress = 5;
- break;
- }
- }
- }
-
- if(syl->stress == 6)
- {
- // an emphasized syllable, end the tone group after the next primary stress
- syllable_tab[st_ix].flags = SYL_EMPHASIS;
-
- count = 0;
- if((n_primary - count_primary) > 1)
- count =1;
-
- for(ix=st_ix+1; ix<n_st; ix++)
- {
- if(syllable_tab[ix].stress > 4)
- break;
- if(syllable_tab[ix].stress == 4)
- {
- count++;
- if(count > 1)
- break;
- }
- }
-
- count_pitch_vowels(st_start, ix, n_st);
- if((ix < n_st) || (clause_type == 0))
- calc_pitches(st_start, ix, group_tone_emph, group_tone_emph); // split into > 1 tone groups, use emphatic tone
- else
- calc_pitches(st_start, ix, group_tone, group_tone);
-
- st_start = ix;
- }
- if((st_start < st_ix) && (syl->flags & SYL_END_CLAUSE))
- {
- // end of clause after this syllable, indicated by a phonPAUSE_CLAUSE phoneme
- st_clause_end = st_ix+1;
- count_pitch_vowels(st_start, st_clause_end, st_clause_end);
- calc_pitches(st_start, st_clause_end, group_tone_comma, group_tone_comma);
- st_start = st_clause_end;
- }
- }
-
- if(st_start < st_ix)
- {
- count_pitch_vowels(st_start, st_ix, n_st);
- calc_pitches(st_start, st_ix, group_tone, group_tone);
- }
-
-
- // unpack pitch data
- st_ix=0;
- for(ix=ph_start; ix < ph_end; ix++)
- {
- p = &phoneme_list[ix];
- p->stresslevel = syllable_tab[st_ix].stress;
-
- if(p->synthflags & SFLAG_SYLLABLE)
- {
- syl = &syllable_tab[st_ix];
-
- x = syl->pitch1 - 72;
- if(x < 0) x = 0;
- p->pitch1 = x;
-
- x = syl->pitch2 - 72;
- if(x < 0) x = 0;
- p->pitch2 = x;
-
- p->env = PITCHfall;
- if(syl->flags & SYL_RISE)
- {
- p->env = PITCHrise;
- }
- else
- if(p->stresslevel > 5)
- p->env = syl->env;
-
- if(p->pitch1 > p->pitch2)
- {
- // swap so that pitch2 is the higher
- x = p->pitch1;
- p->pitch1 = p->pitch2;
- p->pitch2 = x;
- }
-
-if(p->tone_ph)
-{
- ph = phoneme_tab[p->tone_ph];
- x = (p->pitch1 + p->pitch2)/2;
- p->pitch2 = x + ph->end_type;
- p->pitch1 = x + ph->start_type;
-}
-
- if(syl->flags & SYL_EMPHASIS)
- {
- p->stresslevel |= 8; // emphasized
- }
-
- st_ix++;
- }
- }
-
-} // end of Translator::CalcPitches
-
-
diff --git a/navit/support/espeak/klatt.c b/navit/support/espeak/klatt.c
deleted file mode 100644
index 8cdbf782b..000000000
--- a/navit/support/espeak/klatt.c
+++ /dev/null
@@ -1,1303 +0,0 @@
-
-/***************************************************************************
- * Copyright (C) 2008 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * Based on a re-implementation by: *
- * (c) 1993,94 Jon Iles and Nick Ing-Simmons *
- * of the Klatt cascade-parallel formant synthesizer *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-// See URL: ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/synthesis/klatt.3.04.tar.gz
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "klatt.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-
-#ifdef INCLUDE_KLATT // conditional compilation for the whole file
-
-extern unsigned char *out_ptr; // **JSD
-extern unsigned char *out_start;
-extern unsigned char *out_end;
-extern WGEN_DATA wdata;
-static int nsamples;
-static int sample_count;
-
-
-#ifdef _MSC_VER
-#define getrandom(min,max) ((rand()%(int)(((max)+1)-(min)))+(min))
-#else
-#define getrandom(min,max) ((rand()%(long)(((max)+1)-(min)))+(min))
-#endif
-
-
-/* function prototypes for functions private to this file */
-
-static void flutter(klatt_frame_ptr);
-static double sampled_source (void);
-static double impulsive_source (void);
-static double natural_source (void);
-static void pitch_synch_par_reset (klatt_frame_ptr);
-static double gen_noise (double);
-static double DBtoLIN (long);
-static void frame_init (klatt_frame_ptr);
-static void setabc (long,long,resonator_ptr);
-static void setzeroabc (long,long,resonator_ptr);
-
-static klatt_frame_t kt_frame;
-static klatt_global_t kt_globals;
-
-/*
-function RESONATOR
-
-This is a generic resonator function. Internal memory for the resonator
-is stored in the globals structure.
-*/
-
-static double resonator(resonator_ptr r, double input)
-{
- double x;
-
- x = (double) ((double)r->a * (double)input + (double)r->b * (double)r->p1 + (double)r->c * (double)r->p2);
- r->p2 = (double)r->p1;
- r->p1 = (double)x;
-
- return (double)x;
-}
-
-static double resonator2(resonator_ptr r, double input)
-{
- double x;
-
- x = (double) ((double)r->a * (double)input + (double)r->b * (double)r->p1 + (double)r->c * (double)r->p2);
- r->p2 = (double)r->p1;
- r->p1 = (double)x;
-
- r->a += r->a_inc;
- r->b += r->b_inc;
- r->c += r->c_inc;
- return (double)x;
-}
-
-
-
-/*
-function ANTIRESONATOR
-
-This is a generic anti-resonator function. The code is the same as resonator
-except that a,b,c need to be set with setzeroabc() and we save inputs in
-p1/p2 rather than outputs. There is currently only one of these - "rnz"
-Output = (rnz.a * input) + (rnz.b * oldin1) + (rnz.c * oldin2)
-*/
-
-#ifdef deleted
-static double antiresonator(resonator_ptr r, double input)
-{
- register double x = (double)r->a * (double)input + (double)r->b * (double)r->p1 + (double)r->c * (double)r->p2;
- r->p2 = (double)r->p1;
- r->p1 = (double)input;
- return (double)x;
-}
-#endif
-
-static double antiresonator2(resonator_ptr r, double input)
-{
- register double x = (double)r->a * (double)input + (double)r->b * (double)r->p1 + (double)r->c * (double)r->p2;
- r->p2 = (double)r->p1;
- r->p1 = (double)input;
-
- r->a += r->a_inc;
- r->b += r->b_inc;
- r->c += r->c_inc;
- return (double)x;
-}
-
-
-
-/*
-function FLUTTER
-
-This function adds F0 flutter, as specified in:
-
-"Analysis, synthesis and perception of voice quality variations among
-female and male talkers" D.H. Klatt and L.C. Klatt JASA 87(2) February 1990.
-
-Flutter is added by applying a quasi-random element constructed from three
-slowly varying sine waves.
-*/
-
-static void flutter(klatt_frame_ptr frame)
-{
- static int time_count;
- double delta_f0;
- double fla,flb,flc,fld,fle;
-
- fla = (double) kt_globals.f0_flutter / 50;
- flb = (double) kt_globals.original_f0 / 100;
-// flc = sin(2*PI*12.7*time_count);
-// fld = sin(2*PI*7.1*time_count);
-// fle = sin(2*PI*4.7*time_count);
- flc = sin(PI*12.7*time_count); // because we are calling flutter() more frequently, every 2.9mS
- fld = sin(PI*7.1*time_count);
- fle = sin(PI*4.7*time_count);
- delta_f0 = fla * flb * (flc + fld + fle) * 10;
- frame->F0hz10 = frame->F0hz10 + (long) delta_f0;
- time_count++;
-}
-
-
-
-/*
-function SAMPLED_SOURCE
-
-Allows the use of a glottal excitation waveform sampled from a real
-voice.
-*/
-
-static double sampled_source()
-{
- int itemp;
- double ftemp;
- double result;
- double diff_value;
- int current_value;
- int next_value;
- double temp_diff;
-
- if(kt_globals.T0!=0)
- {
- ftemp = (double) kt_globals.nper;
- ftemp = ftemp / kt_globals.T0;
- ftemp = ftemp * kt_globals.num_samples;
- itemp = (int) ftemp;
-
- temp_diff = ftemp - (double) itemp;
-
- current_value = kt_globals.natural_samples[itemp];
- next_value = kt_globals.natural_samples[itemp+1];
-
- diff_value = (double) next_value - (double) current_value;
- diff_value = diff_value * temp_diff;
-
- result = kt_globals.natural_samples[itemp] + diff_value;
- result = result * kt_globals.sample_factor;
- }
- else
- {
- result = 0;
- }
- return(result);
-}
-
-
-
-
-/*
-function PARWAVE
-
-Converts synthesis parameters to a waveform.
-*/
-
-
-static int parwave(klatt_frame_ptr frame)
-{
- double temp;
- double outbypas;
- double out;
- long n4;
- double frics;
- double glotout;
- double aspiration;
- double casc_next_in;
- double par_glotout;
- static double noise;
- static double voice;
- static double vlast;
- static double glotlast;
- static double sourc;
- int ix;
-
- frame_init(frame); /* get parameters for next frame of speech */
-
- flutter(frame); /* add f0 flutter */
-
-#ifdef deleted
-{
- FILE *f;
- f=fopen("klatt_log","a");
- fprintf(f,"%4dhz %2dAV %4d %3d, %4d %3d, %4d %3d, %4d %3d, %4d, %3d, %4d %3d TLT=%2d\n",frame->F0hz10,frame->AVdb,
- frame->F1hz,frame->B1hz,frame->F2hz,frame->B2hz,frame->F3hz,frame->B3hz,frame->F4hz,frame->B4hz,frame->F5hz,frame->B5hz,frame->F6hz,frame->B6hz,frame->TLTdb);
- fclose(f);
-}
-#endif
-
- /* MAIN LOOP, for each output sample of current frame: */
-
- for (kt_globals.ns=0; kt_globals.ns<kt_globals.nspfr; kt_globals.ns++)
- {
- /* Get low-passed random number for aspiration and frication noise */
- noise = gen_noise(noise);
-
- /*
- Amplitude modulate noise (reduce noise amplitude during
- second half of glottal period) if voicing simultaneously present.
- */
-
- if (kt_globals.nper > kt_globals.nmod)
- {
- noise *= (double) 0.5;
- }
-
- /* Compute frication noise */
- frics = kt_globals.amp_frica * noise;
-
- /*
- Compute voicing waveform. Run glottal source simulation at 4
- times normal sample rate to minimize quantization noise in
- period of female voice.
- */
-
- for (n4=0; n4<4; n4++)
- {
- switch(kt_globals.glsource)
- {
- case IMPULSIVE:
- voice = impulsive_source();
- break;
- case NATURAL:
- voice = natural_source();
- break;
- case SAMPLED:
- voice = sampled_source();
- break;
- }
-
- /* Reset period when counter 'nper' reaches T0 */
- if (kt_globals.nper >= kt_globals.T0)
- {
- kt_globals.nper = 0;
- pitch_synch_par_reset(frame);
- }
-
- /*
- Low-pass filter voicing waveform before downsampling from 4*samrate
- to samrate samples/sec. Resonator f=.09*samrate, bw=.06*samrate
- */
-
- voice = resonator(&(kt_globals.rsn[RLP]),voice);
-
- /* Increment counter that keeps track of 4*samrate samples per sec */
- kt_globals.nper++;
- }
-
- /*
- Tilt spectrum of voicing source down by soft low-pass filtering, amount
- of tilt determined by TLTdb
- */
-
- voice = (voice * kt_globals.onemd) + (vlast * kt_globals.decay);
- vlast = voice;
-
- /*
- Add breathiness during glottal open phase. Amount of breathiness
- determined by parameter Aturb Use nrand rather than noise because
- noise is low-passed.
- */
-
-
- if (kt_globals.nper < kt_globals.nopen)
- {
- voice += kt_globals.amp_breth * kt_globals.nrand;
- }
-
- /* Set amplitude of voicing */
- glotout = kt_globals.amp_voice * voice;
- par_glotout = kt_globals.par_amp_voice * voice;
-
- /* Compute aspiration amplitude and add to voicing source */
- aspiration = kt_globals.amp_aspir * noise;
- glotout += aspiration;
-
- par_glotout += aspiration;
-
- /*
- Cascade vocal tract, excited by laryngeal sources.
- Nasal antiresonator, then formants FNP, F5, F4, F3, F2, F1
- */
-
- out=0;
- if(kt_globals.synthesis_model != ALL_PARALLEL)
- {
- casc_next_in = antiresonator2(&(kt_globals.rsn[Rnz]),glotout);
- casc_next_in = resonator(&(kt_globals.rsn[Rnpc]),casc_next_in);
- casc_next_in = resonator(&(kt_globals.rsn[R8c]),casc_next_in);
- casc_next_in = resonator(&(kt_globals.rsn[R7c]),casc_next_in);
- casc_next_in = resonator(&(kt_globals.rsn[R6c]),casc_next_in);
- casc_next_in = resonator2(&(kt_globals.rsn[R5c]),casc_next_in);
- casc_next_in = resonator2(&(kt_globals.rsn[R4c]),casc_next_in);
- casc_next_in = resonator2(&(kt_globals.rsn[R3c]),casc_next_in);
- casc_next_in = resonator2(&(kt_globals.rsn[R2c]),casc_next_in);
- out = resonator2(&(kt_globals.rsn[R1c]),casc_next_in);
- }
-
- /* Excite parallel F1 and FNP by voicing waveform */
- sourc = par_glotout; /* Source is voicing plus aspiration */
-
- /*
- Standard parallel vocal tract Formants F6,F5,F4,F3,F2,
- outputs added with alternating sign. Sound source for other
- parallel resonators is frication plus first difference of
- voicing waveform.
- */
-
- out += resonator(&(kt_globals.rsn[R1p]),sourc);
- out += resonator(&(kt_globals.rsn[Rnpp]),sourc);
-
- sourc = frics + par_glotout - glotlast;
- glotlast = par_glotout;
-
- for(ix=R2p; ix<=R6p; ix++)
- {
- out = resonator(&(kt_globals.rsn[ix]),sourc) - out;
- }
-
- outbypas = kt_globals.amp_bypas * sourc;
-
- out = outbypas - out;
-
-#ifdef deleted
-// for testing
- if (kt_globals.outsl != 0)
- {
- switch(kt_globals.outsl)
- {
- case 1:
- out = voice;
- break;
- case 2:
- out = aspiration;
- break;
- case 3:
- out = frics;
- break;
- case 4:
- out = glotout;
- break;
- case 5:
- out = par_glotout;
- break;
- case 6:
- out = outbypas;
- break;
- case 7:
- out = sourc;
- break;
- }
- }
-#endif
-
- out = resonator(&(kt_globals.rsn[Rout]),out);
- temp = (out * wdata.amplitude * kt_globals.amp_gain0) ; /* Convert back to integer */
-
-
- // mix with a recorded WAV if required for this phoneme
- {
- int z2;
- signed char c;
- int sample;
-
- z2 = 0;
- if(wdata.mix_wavefile_ix < wdata.n_mix_wavefile)
- {
- if(wdata.mix_wave_scale == 0)
- {
- // a 16 bit sample
- c = wdata.mix_wavefile[wdata.mix_wavefile_ix+1];
- sample = wdata.mix_wavefile[wdata.mix_wavefile_ix] + (c * 256);
- wdata.mix_wavefile_ix += 2;
- }
- else
- {
- // a 8 bit sample, scaled
- sample = (signed char)wdata.mix_wavefile[wdata.mix_wavefile_ix++] * wdata.mix_wave_scale;
- }
- z2 = sample * wdata.amplitude_v / 1024;
- z2 = (z2 * wdata.mix_wave_amp)/40;
- temp += z2;
- }
- }
-
- // if fadeout is set, fade to zero over 64 samples, to avoid clicks at end of synthesis
- if(kt_globals.fadeout > 0)
- {
- kt_globals.fadeout--;
- temp = (temp * kt_globals.fadeout) / 64;
- }
-
- if (temp < -32768.0)
- {
- temp = -32768.0;
- }
-
- if (temp > 32767.0)
- {
- temp = 32767.0;
- }
-
- *out_ptr++ = (int)(temp); // **JSD
- *out_ptr++ = (int)(temp) >> 8;
- sample_count++;
- if(out_ptr >= out_end)
- {
- return(1);
- }
- }
- return(0);
-} // end of parwave
-
-
-
-
-/*
-function PARWAVE_INIT
-
-Initialises all parameters used in parwave, sets resonator internal memory
-to zero.
-*/
-
-static void reset_resonators()
-{
- int r_ix;
-
- for(r_ix=0; r_ix < N_RSN; r_ix++)
- {
- kt_globals.rsn[r_ix].p1 = 0;
- kt_globals.rsn[r_ix].p2 = 0;
- }
-}
-
-static void parwave_init()
-{
- kt_globals.FLPhz = (950 * kt_globals.samrate) / 10000;
- kt_globals.BLPhz = (630 * kt_globals.samrate) / 10000;
- kt_globals.minus_pi_t = -PI / kt_globals.samrate;
- kt_globals.two_pi_t = -2.0 * kt_globals.minus_pi_t;
- setabc(kt_globals.FLPhz,kt_globals.BLPhz,&(kt_globals.rsn[RLP]));
- kt_globals.nper = 0;
- kt_globals.T0 = 0;
- kt_globals.nopen = 0;
- kt_globals.nmod = 0;
-
- reset_resonators();
-}
-
-
-/*
-function FRAME_INIT
-
-Use parameters from the input frame to set up resonator coefficients.
-*/
-
-static void frame_init(klatt_frame_ptr frame)
-{
- double amp_par[7];
- static double amp_par_factor[7] = {0.6, 0.4, 0.15, 0.06, 0.04, 0.022, 0.03};
- long Gain0_tmp;
- int ix;
-
- kt_globals.original_f0 = frame->F0hz10 / 10;
-
- frame->AVdb_tmp = frame->AVdb - 7;
- if (frame->AVdb_tmp < 0)
- {
- frame->AVdb_tmp = 0;
- }
-
- kt_globals.amp_aspir = DBtoLIN(frame->ASP) * 0.05;
- kt_globals.amp_frica = DBtoLIN(frame->AF) * 0.25;
- kt_globals.par_amp_voice = DBtoLIN(frame->AVpdb);
- kt_globals.amp_bypas = DBtoLIN(frame->AB) * 0.05;
-
- for(ix=0; ix <= 6; ix++)
- {
- // parallel amplitudes F1 to F6, and parallel nasal pole
- amp_par[ix] = DBtoLIN(frame->Ap[ix]) * amp_par_factor[ix];
- }
-
- Gain0_tmp = frame->Gain0 - 3;
- if (Gain0_tmp <= 0)
- {
- Gain0_tmp = 57;
- }
- kt_globals.amp_gain0 = DBtoLIN(Gain0_tmp) / kt_globals.scale_wav;
-
- /* Set coefficients of variable cascade resonators */
- for(ix=0; ix<=8; ix++)
- {
- // formants 1 to 8, plus nasal pole
- setabc(frame->Fhz[ix],frame->Bhz[ix],&(kt_globals.rsn[ix]));
-
- if(ix <= 5)
- {
- setabc(frame->Fhz_next[ix],frame->Bhz_next[ix],&(kt_globals.rsn_next[ix]));
-
- kt_globals.rsn[ix].a_inc = (kt_globals.rsn_next[ix].a - kt_globals.rsn[ix].a) / 64.0;
- kt_globals.rsn[ix].b_inc = (kt_globals.rsn_next[ix].b - kt_globals.rsn[ix].b) / 64.0;
- kt_globals.rsn[ix].c_inc = (kt_globals.rsn_next[ix].c - kt_globals.rsn[ix].c) / 64.0;
- }
- }
-
- // nasal zero anti-resonator
- setzeroabc(frame->Fhz[F_NZ],frame->Bhz[F_NZ],&(kt_globals.rsn[Rnz]));
- setzeroabc(frame->Fhz_next[F_NZ],frame->Bhz_next[F_NZ],&(kt_globals.rsn_next[Rnz]));
- kt_globals.rsn[F_NZ].a_inc = (kt_globals.rsn_next[F_NZ].a - kt_globals.rsn[F_NZ].a) / 64.0;
- kt_globals.rsn[F_NZ].b_inc = (kt_globals.rsn_next[F_NZ].b - kt_globals.rsn[F_NZ].b) / 64.0;
- kt_globals.rsn[F_NZ].c_inc = (kt_globals.rsn_next[F_NZ].c - kt_globals.rsn[F_NZ].c) / 64.0;
-
-
- /* Set coefficients of parallel resonators, and amplitude of outputs */
-
- for(ix=0; ix<=6; ix++)
- {
- setabc(frame->Fhz[ix],frame->Bphz[ix],&(kt_globals.rsn[Rparallel+ix]));
- kt_globals.rsn[Rparallel+ix].a *= amp_par[ix];
- }
-
- /* output low-pass filter */
-
- setabc((long)0.0,(long)(kt_globals.samrate/2),&(kt_globals.rsn[Rout]));
-
-}
-
-
-
-/*
-function IMPULSIVE_SOURCE
-
-Generate a low pass filtered train of impulses as an approximation of
-a natural excitation waveform. Low-pass filter the differentiated impulse
-with a critically-damped second-order filter, time constant proportional
-to Kopen.
-*/
-
-
-static double impulsive_source()
-{
- static double doublet[] = {0.0,13000000.0,-13000000.0};
- static double vwave;
-
- if (kt_globals.nper < 3)
- {
- vwave = doublet[kt_globals.nper];
- }
- else
- {
- vwave = 0.0;
- }
-
- return(resonator(&(kt_globals.rsn[RGL]),vwave));
-}
-
-
-
-/*
-function NATURAL_SOURCE
-
-Vwave is the differentiated glottal flow waveform, there is a weak
-spectral zero around 800 Hz, magic constants a,b reset pitch synchronously.
-*/
-
-static double natural_source()
-{
- double lgtemp;
- static double vwave;
-
- if (kt_globals.nper < kt_globals.nopen)
- {
- kt_globals.pulse_shape_a -= kt_globals.pulse_shape_b;
- vwave += kt_globals.pulse_shape_a;
- lgtemp=vwave * 0.028;
-
- return(lgtemp);
- }
- else
- {
- vwave = 0.0;
- return(0.0);
- }
-}
-
-
-
-
-
-/*
-function PITCH_SYNC_PAR_RESET
-
-Reset selected parameters pitch-synchronously.
-
-
-Constant B0 controls shape of glottal pulse as a function
-of desired duration of open phase N0
-(Note that N0 is specified in terms of 40,000 samples/sec of speech)
-
-Assume voicing waveform V(t) has form: k1 t**2 - k2 t**3
-
- If the radiation characterivative, a temporal derivative
- is folded in, and we go from continuous time to discrete
- integers n: dV/dt = vwave[n]
- = sum over i=1,2,...,n of { a - (i * b) }
- = a n - b/2 n**2
-
- where the constants a and b control the detailed shape
- and amplitude of the voicing waveform over the open
- potion of the voicing cycle "nopen".
-
- Let integral of dV/dt have no net dc flow --> a = (b * nopen) / 3
-
- Let maximum of dUg(n)/dn be constant --> b = gain / (nopen * nopen)
- meaning as nopen gets bigger, V has bigger peak proportional to n
-
- Thus, to generate the table below for 40 <= nopen <= 263:
-
- B0[nopen - 40] = 1920000 / (nopen * nopen)
-*/
-
-static void pitch_synch_par_reset(klatt_frame_ptr frame)
-{
- long temp;
- double temp1;
- static long skew;
- static short B0[224] =
- {
- 1200,1142,1088,1038, 991, 948, 907, 869, 833, 799, 768, 738, 710, 683, 658,
- 634, 612, 590, 570, 551, 533, 515, 499, 483, 468, 454, 440, 427, 415, 403,
- 391, 380, 370, 360, 350, 341, 332, 323, 315, 307, 300, 292, 285, 278, 272,
- 265, 259, 253, 247, 242, 237, 231, 226, 221, 217, 212, 208, 204, 199, 195,
- 192, 188, 184, 180, 177, 174, 170, 167, 164, 161, 158, 155, 153, 150, 147,
- 145, 142, 140, 137, 135, 133, 131, 128, 126, 124, 122, 120, 119, 117, 115,
- 113,111, 110, 108, 106, 105, 103, 102, 100, 99, 97, 96, 95, 93, 92, 91, 90,
- 88, 87, 86, 85, 84, 83, 82, 80, 79, 78, 77, 76, 75, 75, 74, 73, 72, 71,
- 70, 69, 68, 68, 67, 66, 65, 64, 64, 63, 62, 61, 61, 60, 59, 59, 58, 57,
- 57, 56, 56, 55, 55, 54, 54, 53, 53, 52, 52, 51, 51, 50, 50, 49, 49, 48, 48,
- 47, 47, 46, 46, 45, 45, 44, 44, 43, 43, 42, 42, 41, 41, 41, 41, 40, 40,
- 39, 39, 38, 38, 38, 38, 37, 37, 36, 36, 36, 36, 35, 35, 35, 35, 34, 34,33,
- 33, 33, 33, 32, 32, 32, 32, 31, 31, 31, 31, 30, 30, 30, 30, 29, 29, 29, 29,
- 28, 28, 28, 28, 27, 27
- };
-
- if (frame->F0hz10 > 0)
- {
- /* T0 is 4* the number of samples in one pitch period */
-
- kt_globals.T0 = (40 * kt_globals.samrate) / frame->F0hz10;
-
-
- kt_globals.amp_voice = DBtoLIN(frame->AVdb_tmp);
-
- /* Duration of period before amplitude modulation */
-
- kt_globals.nmod = kt_globals.T0;
- if (frame->AVdb_tmp > 0)
- {
- kt_globals.nmod >>= 1;
- }
-
- /* Breathiness of voicing waveform */
-
- kt_globals.amp_breth = DBtoLIN(frame->Aturb) * 0.1;
-
- /* Set open phase of glottal period where 40 <= open phase <= 263 */
-
- kt_globals.nopen = 4 * frame->Kopen;
-
- if ((kt_globals.glsource == IMPULSIVE) && (kt_globals.nopen > 263))
- {
- kt_globals.nopen = 263;
- }
-
- if (kt_globals.nopen >= (kt_globals.T0-1))
- {
-// printf("Warning: glottal open period cannot exceed T0, truncated\n");
- kt_globals.nopen = kt_globals.T0 - 2;
- }
-
- if (kt_globals.nopen < 40)
- {
- /* F0 max = 1000 Hz */
-// printf("Warning: minimum glottal open period is 10 samples.\n");
-// printf("truncated, nopen = %d\n",kt_globals.nopen);
- kt_globals.nopen = 40;
- }
-
-
- /* Reset a & b, which determine shape of "natural" glottal waveform */
-
- kt_globals.pulse_shape_b = B0[kt_globals.nopen-40];
- kt_globals.pulse_shape_a = (kt_globals.pulse_shape_b * kt_globals.nopen) * 0.333;
-
- /* Reset width of "impulsive" glottal pulse */
-
- temp = kt_globals.samrate / kt_globals.nopen;
-
- setabc((long)0,temp,&(kt_globals.rsn[RGL]));
-
- /* Make gain at F1 about constant */
-
- temp1 = kt_globals.nopen *.00833;
- kt_globals.rsn[RGL].a *= temp1 * temp1;
-
- /*
- Truncate skewness so as not to exceed duration of closed phase
- of glottal period.
- */
-
-
- temp = kt_globals.T0 - kt_globals.nopen;
- if (frame->Kskew > temp)
- {
-// printf("Kskew duration=%d > glottal closed period=%d, truncate\n", frame->Kskew, kt_globals.T0 - kt_globals.nopen);
- frame->Kskew = temp;
- }
- if (skew >= 0)
- {
- skew = frame->Kskew;
- }
- else
- {
- skew = - frame->Kskew;
- }
-
- /* Add skewness to closed portion of voicing period */
- kt_globals.T0 = kt_globals.T0 + skew;
- skew = - skew;
- }
- else
- {
- kt_globals.T0 = 4; /* Default for f0 undefined */
- kt_globals.amp_voice = 0.0;
- kt_globals.nmod = kt_globals.T0;
- kt_globals.amp_breth = 0.0;
- kt_globals.pulse_shape_a = 0.0;
- kt_globals.pulse_shape_b = 0.0;
- }
-
- /* Reset these pars pitch synchronously or at update rate if f0=0 */
-
- if ((kt_globals.T0 != 4) || (kt_globals.ns == 0))
- {
- /* Set one-pole low-pass filter that tilts glottal source */
-
- kt_globals.decay = (0.033 * frame->TLTdb);
-
- if (kt_globals.decay > 0.0)
- {
- kt_globals.onemd = 1.0 - kt_globals.decay;
- }
- else
- {
- kt_globals.onemd = 1.0;
- }
- }
-}
-
-
-
-/*
-function SETABC
-
-Convert formant freqencies and bandwidth into resonator difference
-equation constants.
-*/
-
-
-static void setabc(long int f, long int bw, resonator_ptr rp)
-{
- double r;
- double arg;
-
- /* Let r = exp(-pi bw t) */
- arg = kt_globals.minus_pi_t * bw;
- r = exp(arg);
-
- /* Let c = -r**2 */
- rp->c = -(r * r);
-
- /* Let b = r * 2*cos(2 pi f t) */
- arg = kt_globals.two_pi_t * f;
- rp->b = r * cos(arg) * 2.0;
-
- /* Let a = 1.0 - b - c */
- rp->a = 1.0 - rp->b - rp->c;
-}
-
-
-/*
-function SETZEROABC
-
-Convert formant freqencies and bandwidth into anti-resonator difference
-equation constants.
-*/
-
-static void setzeroabc(long int f, long int bw, resonator_ptr rp)
-{
- double r;
- double arg;
-
- f = -f;
-
- if(f>=0)
- {
- f = -1;
- }
-
- /* First compute ordinary resonator coefficients */
- /* Let r = exp(-pi bw t) */
- arg = kt_globals.minus_pi_t * bw;
- r = exp(arg);
-
- /* Let c = -r**2 */
- rp->c = -(r * r);
-
- /* Let b = r * 2*cos(2 pi f t) */
- arg = kt_globals.two_pi_t * f;
- rp->b = r * cos(arg) * 2.;
-
- /* Let a = 1.0 - b - c */
- rp->a = 1.0 - rp->b - rp->c;
-
- /* Now convert to antiresonator coefficients (a'=1/a, b'=b/a, c'=c/a) */
- rp->a = 1.0 / rp->a;
- rp->c *= -rp->a;
- rp->b *= -rp->a;
-}
-
-
-/*
-function GEN_NOISE
-
-Random number generator (return a number between -8191 and +8191)
-Noise spectrum is tilted down by soft low-pass filter having a pole near
-the origin in the z-plane, i.e. output = input + (0.75 * lastoutput)
-*/
-
-
-static double gen_noise(double noise)
-{
- long temp;
- static double nlast;
-
- temp = (long) getrandom(-8191,8191);
- kt_globals.nrand = (long) temp;
-
- noise = kt_globals.nrand + (0.75 * nlast);
- nlast = noise;
-
- return(noise);
-}
-
-
-/*
-function DBTOLIN
-
-Convert from decibels to a linear scale factor
-
-
-Conversion table, db to linear, 87 dB --> 32767
- 86 dB --> 29491 (1 dB down = 0.5**1/6)
- ...
- 81 dB --> 16384 (6 dB down = 0.5)
- ...
- 0 dB --> 0
-
-The just noticeable difference for a change in intensity of a vowel
-is approximately 1 dB. Thus all amplitudes are quantized to 1 dB
-steps.
-*/
-
-
-static double DBtoLIN(long dB)
-{
- static short amptable[88] =
- {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7,
- 8, 9, 10, 11, 13, 14, 16, 18, 20, 22, 25, 28, 32,
- 35, 40, 45, 51, 57, 64, 71, 80, 90, 101, 114, 128,
- 142, 159, 179, 202, 227, 256, 284, 318, 359, 405,
- 455, 512, 568, 638, 719, 881, 911, 1024, 1137, 1276,
- 1438, 1622, 1823, 2048, 2273, 2552, 2875, 3244, 3645,
- 4096, 4547, 5104, 5751, 6488, 7291, 8192, 9093, 10207,
- 11502, 12976, 14582, 16384, 18350, 20644, 23429,
- 26214, 29491, 32767 };
-
- if ((dB < 0) || (dB > 87))
- {
- return(0);
- }
-
- return((double)(amptable[dB]) * 0.001);
-}
-
-
-
-
-
-extern voice_t *wvoice;
-static klatt_peaks_t peaks[N_PEAKS];
-static int end_wave;
-static int klattp[N_KLATTP];
-static double klattp1[N_KLATTP];
-static double klattp_inc[N_KLATTP];
-
-static int scale_wav_tab[] = {45,38,45,45}; // scale output from different voicing sources
-
-
-
-int Wavegen_Klatt(int resume)
-{//==========================
- int pk;
- int x;
- int ix;
-
- if(resume==0)
- {
- sample_count = 0;
- }
-
- while(sample_count < nsamples)
- {
- kt_frame.F0hz10 = (wdata.pitch * 10) / 4096;
-
- // formants F6,F7,F8 are fixed values for cascade resonators, set in KlattInit()
- // but F6 is used for parallel resonator
- // F0 is used for the nasal zero
- for(ix=0; ix < 6; ix++)
- {
- kt_frame.Fhz[ix] = peaks[ix].freq;
- if(ix < 4)
- {
- kt_frame.Bhz[ix] = peaks[ix].bw;
- }
- }
- for(ix=1; ix < 7; ix++)
- {
- kt_frame.Ap[ix] = 0;
- }
-
- kt_frame.AVdb = klattp[KLATT_AV];
- kt_frame.AVpdb = klattp[KLATT_AVp];
- kt_frame.AF = klattp[KLATT_Fric];
- kt_frame.AB = klattp[KLATT_FricBP];
- kt_frame.ASP = klattp[KLATT_Aspr];
- kt_frame.Aturb = klattp[KLATT_Turb];
- kt_frame.Kskew = klattp[KLATT_Skew];
- kt_frame.TLTdb = klattp[KLATT_Tilt];
- kt_frame.Kopen = klattp[KLATT_Kopen];
-
- // advance formants
- for(pk=0; pk<N_PEAKS; pk++)
- {
- peaks[pk].freq1 += peaks[pk].freq_inc;
- peaks[pk].freq = (int)peaks[pk].freq1;
- peaks[pk].bw1 += peaks[pk].bw_inc;
- peaks[pk].bw = (int)peaks[pk].bw1;
- peaks[pk].bp1 += peaks[pk].bp_inc;
- peaks[pk].bp = (int)peaks[pk].bp1;
- peaks[pk].ap1 += peaks[pk].ap_inc;
- peaks[pk].ap = (int)peaks[pk].ap1;
- }
-
- // advance other parameters
- for(ix=0; ix < N_KLATTP; ix++)
- {
- klattp1[ix] += klattp_inc[ix];
- klattp[ix] = (int)(klattp1[ix]);
- }
-
- for(ix=0; ix<=6; ix++)
- {
- kt_frame.Fhz_next[ix] = peaks[ix].freq;
- if(ix < 4)
- {
- kt_frame.Bhz_next[ix] = peaks[ix].bw;
- }
- }
-
- // advance the pitch
- wdata.pitch_ix += wdata.pitch_inc;
- if((ix = wdata.pitch_ix>>8) > 127) ix = 127;
- x = wdata.pitch_env[ix] * wdata.pitch_range;
- wdata.pitch = (x>>8) + wdata.pitch_base;
-
- kt_globals.nspfr = (nsamples - sample_count);
- if(kt_globals.nspfr > STEPSIZE)
- kt_globals.nspfr = STEPSIZE;
-
- if(parwave(&kt_frame) == 1)
- {
- return(1);
- }
- }
-
- if(end_wave == 1)
- {
- // fade out to avoid a click
- kt_globals.fadeout = 64;
- end_wave = 0;
- sample_count -= 64;
- kt_globals.nspfr = 64;
- if(parwave(&kt_frame) == 1)
- {
- return(1);
- }
- }
-
- return(0);
-}
-
-
-void SetSynth_Klatt(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v, int control)
-{//===========================================================================================
- int ix;
- DOUBLEX next;
- int qix;
- int cmd;
- static frame_t prev_fr;
-
- if(wvoice != NULL)
- {
- if((wvoice->klattv[0] > 0) && (wvoice->klattv[0] <=3 ))
- {
- kt_globals.glsource = wvoice->klattv[0];
- kt_globals.scale_wav = scale_wav_tab[kt_globals.glsource];
- }
- kt_globals.f0_flutter = wvoice->flutter/32;
- }
-
- end_wave = 0;
- if(control & 2)
- {
- end_wave = 1; // fadeout at the end
- }
- if(control & 1)
- {
- end_wave = 1;
- for(qix=wcmdq_head+1;;qix++)
- {
- if(qix >= N_WCMDQ) qix = 0;
- if(qix == wcmdq_tail) break;
-
- cmd = wcmdq[qix][0];
- if(cmd==WCMD_KLATT)
- {
- end_wave = 0; // next wave generation is from another spectrum
- break;
- }
- if((cmd==WCMD_WAVE) || (cmd==WCMD_PAUSE))
- break; // next is not from spectrum, so continue until end of wave cycle
- }
- }
-
-{
-//FILE *f;
-//f=fopen("klatt_log","a");
-//fprintf(f,"len %4d (%3d %4d %4d) (%3d %4d %4d)\n",length,fr1->ffreq[1],fr1->ffreq[2],fr1->ffreq[3],fr2->ffreq[1],fr2->ffreq[2],fr2->ffreq[3]);
-//fclose(f);
-}
-
- if(control & 1)
- {
- if(wdata.prev_was_synth == 0)
- {
- // A break, not following on from another synthesized sound.
- // Reset the synthesizer
- //reset_resonators(&kt_globals);
- parwave_init();
- }
- else
- {
- if((prev_fr.ffreq[1] != fr1->ffreq[1]) || (prev_fr.ffreq[2] != fr1->ffreq[2]))
- {
-
- // fade out to avoid a click, but only up to the end of output buffer
- ix = (out_end - out_ptr)/2;
- if(ix > 64)
- ix = 64;
- kt_globals.fadeout = ix;
- kt_globals.nspfr = ix;
- parwave(&kt_frame);
-
- //reset_resonators(&kt_globals);
- parwave_init();
- }
- }
- wdata.prev_was_synth = 1;
- memcpy(&prev_fr,fr2,sizeof(prev_fr));
- }
- if(fr2->frflags & FRFLAG_BREAK)
- {
-// fr2 = fr1;
-// reset_resonators(&kt_globals);
- }
-
- for(ix=0; ix<N_KLATTP; ix++)
- {
- if((ix >= 5) && ((fr1->frflags & FRFLAG_KLATT) == 0))
- {
- klattp1[ix] = klattp[ix] = 0;
- klattp_inc[ix] = 0;
- }
- else
- {
- klattp1[ix] = klattp[ix] = fr1->klattp[ix];
- klattp_inc[ix] = (double)((fr2->klattp[ix] - klattp[ix]) * STEPSIZE)/length;
- }
-
- // get klatt parameter adjustments for the voice
-// if((ix>0) && (ix < KLATT_AVp))
-// klattp1[ix] = klattp[ix] = (klattp[ix] + wvoice->klattv[ix]);
- }
-
- nsamples = length;
-
- for(ix=1; ix < 6; ix++)
- {
- peaks[ix].freq1 = (fr1->ffreq[ix] * v->freq[ix] / 256.0) + v->freqadd[ix];
- peaks[ix].freq = (int)(peaks[ix].freq1);
- next = (fr2->ffreq[ix] * v->freq[ix] / 256.0) + v->freqadd[ix];
- peaks[ix].freq_inc = ((next - peaks[ix].freq1) * STEPSIZE) / length;
-
- if(ix < 4)
- {
- // klatt bandwidth for f1, f2, f3 (others are fixed)
- peaks[ix].bw1 = fr1->bw[ix] * 2;
- peaks[ix].bw = (int)(peaks[ix].bw1);
- next = fr2->bw[ix] * 2;
- peaks[ix].bw_inc = ((next - peaks[ix].bw1) * STEPSIZE) / length;
- }
- }
-
- // nasal zero frequency
- peaks[0].freq1 = fr1->klattp[KLATT_FNZ] * 2;
- peaks[0].freq = (int)(peaks[0].freq1);
- next = fr2->klattp[KLATT_FNZ] * 2;
- peaks[0].freq_inc = ((next - peaks[0].freq1) * STEPSIZE) / length;
-
- peaks[0].bw1 = 89;
- peaks[0].bw = 89;
- peaks[0].bw_inc = 0;
-
- if(fr1->frflags & FRFLAG_KLATT)
- {
- // the frame contains additional parameters for parallel resonators
- for(ix=1; ix < 7; ix++)
- {
- peaks[ix].bp1 = fr1->klatt_bp[ix] * 4; // parallel bandwidth
- peaks[ix].bp = (int)(peaks[ix].bp1);
- next = fr2->klatt_bp[ix] * 2;
- peaks[ix].bp_inc = ((next - peaks[ix].bp1) * STEPSIZE) / length;
-
- peaks[ix].ap1 = fr1->klatt_ap[ix]; // parallal amplitude
- peaks[ix].ap = (int)(peaks[ix].ap1);
- next = fr2->klatt_ap[ix] * 2;
- peaks[ix].ap_inc = ((next - peaks[ix].ap1) * STEPSIZE) / length;
- }
- }
-} // end of SetSynth_Klatt
-
-
-int Wavegen_Klatt2(int length, int modulation, int resume, frame_t *fr1, frame_t *fr2)
-{//===================================================================================
- if(resume==0)
- SetSynth_Klatt(length, modulation, fr1, fr2, wvoice, 1);
-
- return(Wavegen_Klatt(resume));
-}
-
-
-
-void KlattInit()
-{
-#define NUMBER_OF_SAMPLES 100
-
- static short natural_samples[NUMBER_OF_SAMPLES]=
- {
- -310,-400,530,356,224,89,23,-10,-58,-16,461,599,536,701,770,
- 605,497,461,560,404,110,224,131,104,-97,155,278,-154,-1165,
- -598,737,125,-592,41,11,-247,-10,65,92,80,-304,71,167,-1,122,
- 233,161,-43,278,479,485,407,266,650,134,80,236,68,260,269,179,
- 53,140,275,293,296,104,257,152,311,182,263,245,125,314,140,44,
- 203,230,-235,-286,23,107,92,-91,38,464,443,176,98,-784,-2449,
- -1891,-1045,-1600,-1462,-1384,-1261,-949,-730
- };
- static short formant_hz[10] = {280,688,1064,2806,3260,3700,6500,7000,8000,280};
- static short bandwidth[10] = {89,160,70,160,200,200,500,500,500,89};
- static short parallel_amp[10] = { 0,59,59,59,59,59,59,0,0,0};
- static short parallel_bw[10] = {59,59,89,149,200,200,500,0,0,0};
-
- int ix;
-
- sample_count=0;
-
- kt_globals.synthesis_model = CASCADE_PARALLEL;
- kt_globals.samrate = 22050;
-
- kt_globals.glsource = IMPULSIVE; // IMPULSIVE, NATURAL, SAMPLED
- kt_globals.scale_wav = scale_wav_tab[kt_globals.glsource];
- kt_globals.natural_samples = natural_samples;
- kt_globals.num_samples = NUMBER_OF_SAMPLES;
- kt_globals.sample_factor = 3.0;
- kt_globals.nspfr = (kt_globals.samrate * 10) / 1000;
- kt_globals.outsl = 0;
- kt_globals.f0_flutter = 20;
-
- parwave_init();
-
- // set default values for frame parameters
- for(ix=0; ix<=9; ix++)
- {
- kt_frame.Fhz[ix] = formant_hz[ix];
- kt_frame.Bhz[ix] = bandwidth[ix];
- kt_frame.Ap[ix] = parallel_amp[ix];
- kt_frame.Bphz[ix] = parallel_bw[ix];
- }
- kt_frame.Bhz_next[F_NZ] = bandwidth[F_NZ];
-
- kt_frame.F0hz10 = 1000;
- kt_frame.AVdb = 59; // 59
- kt_frame.ASP = 0;
- kt_frame.Kopen = 40; // 40
- kt_frame.Aturb = 0;
- kt_frame.TLTdb = 0;
- kt_frame.AF =50;
- kt_frame.Kskew = 0;
- kt_frame.AB = 0;
- kt_frame.AVpdb = 0;
- kt_frame.Gain0 = 60; // 62
-} // end of KlattInit
-
-#endif // INCLUDE_KLATT
diff --git a/navit/support/espeak/klatt.h b/navit/support/espeak/klatt.h
deleted file mode 100644
index 5583b178a..000000000
--- a/navit/support/espeak/klatt.h
+++ /dev/null
@@ -1,153 +0,0 @@
-
-
-#define CASCADE_PARALLEL 1 /* Type of synthesis model */
-#define ALL_PARALLEL 2
-
-#define IMPULSIVE 1 /* Type of voicing source */
-#define NATURAL 2
-#define SAMPLED 3
-
-#define PI 3.1415927
-
-
-/* typedef's that need to be exported */
-
-typedef long flag;
-
-/* Resonator Structure */
-
-typedef struct
-{
- double a;
- double b;
- double c;
- double p1;
- double p2;
- double a_inc;
- double b_inc;
- double c_inc;
-} resonator_t, *resonator_ptr;
-
-/* Structure for Klatt Globals */
-
-typedef struct
-{
- flag synthesis_model; /* cascade-parallel or all-parallel */
- flag outsl; /* Output waveform selector */
- long samrate; /* Number of output samples per second */
- long FLPhz ; /* Frequeny of glottal downsample low-pass filter */
- long BLPhz ; /* Bandwidth of glottal downsample low-pass filter */
- flag glsource; /* Type of glottal source */
- int f0_flutter; /* Percentage of f0 flutter 0-100 */
- long nspfr; /* number of samples per frame */
- long nper; /* Counter for number of samples in a pitch period */
- long ns;
- long T0; /* Fundamental period in output samples times 4 */
- long nopen; /* Number of samples in open phase of period */
- long nmod; /* Position in period to begin noise amp. modul */
- long nrand; /* Varible used by random number generator */
- double pulse_shape_a; /* Makes waveshape of glottal pulse when open */
- double pulse_shape_b; /* Makes waveshape of glottal pulse when open */
- double minus_pi_t;
- double two_pi_t;
- double onemd;
- double decay;
- double amp_bypas; /* AB converted to linear gain */
- double amp_voice; /* AVdb converted to linear gain */
- double par_amp_voice; /* AVpdb converted to linear gain */
- double amp_aspir; /* AP converted to linear gain */
- double amp_frica; /* AF converted to linear gain */
- double amp_breth; /* ATURB converted to linear gain */
- double amp_gain0; /* G0 converted to linear gain */
- int num_samples; /* number of glottal samples */
- double sample_factor; /* multiplication factor for glottal samples */
- short *natural_samples; /* pointer to an array of glottal samples */
- long original_f0; /* original value of f0 not modified by flutter */
-
- int fadeout; // set to 64 to cause fadeout over 64 samples
- int scale_wav; // depends on the voicing source
-
-#define N_RSN 20
-#define Rnpc 0
-#define R1c 1
-#define R2c 2
-#define R3c 3
-#define R4c 4
-#define R5c 5
-#define R6c 6
-#define R7c 7
-#define R8c 8
-#define Rnz 9
-
-#define Rparallel 10
-#define Rnpp 10
-#define R1p 11
-#define R2p 12
-#define R3p 13
-#define R4p 14
-#define R5p 15
-#define R6p 16
-
-#define RGL 17
-#define RLP 18
-#define Rout 19
-
- resonator_t rsn[N_RSN]; // internal storage for resonators
- resonator_t rsn_next[N_RSN];
-
-} klatt_global_t, *klatt_global_ptr;
-
-/* Structure for Klatt Parameters */
-
-#define F_NZ 0 // nasal zero formant
-#define F1 1
-#define F2 2
-#define F3 3
-#define F4 4
-#define F5 5
-#define F6 6
-#define F_NP 9 // nasal pole formant
-
-
-typedef struct
-{
- long F0hz10; /* Voicing fund freq in Hz */
- long AVdb; /* Amp of voicing in dB, 0 to 70 */
- int Fhz[10]; // formant Hz, F_NZ to F6 to F_NP
- int Bhz[10];
- int Ap[10]; /* Amp of parallel formants in dB, 0 to 80 */
- int Bphz[10]; /* Parallel formants bw in Hz, 40 to 1000 */
-
- long ASP; /* Amp of aspiration in dB, 0 to 70 */
- long Kopen; /* # of samples in open period, 10 to 65 */
- long Aturb; /* Breathiness in voicing, 0 to 80 */
- long TLTdb; /* Voicing spectral tilt in dB, 0 to 24 */
- long AF; /* Amp of frication in dB, 0 to 80 */
- long Kskew; /* Skewness of alternate periods, 0 to 40 in sample#/2 */
-
- long AB; /* Amp of bypass fric. in dB, 0 to 80 */
- long AVpdb; /* Amp of voicing, par in dB, 0 to 70 */
- long Gain0; /* Overall gain, 60 dB is unity, 0 to 60 */
-
- long AVdb_tmp; //copy of AVdb, which is changed within parwave()
- int Fhz_next[10]; // Fhz for the next chunk, so we can do interpolation of resonator (a,b,c) parameters
- int Bhz_next[10];
- } klatt_frame_t, *klatt_frame_ptr;
-
-
-typedef struct {
- int freq; // Hz
- int bw; // klatt bandwidth
- int ap; // parallel amplitude
- int bp; // parallel bandwidth
- DOUBLEX freq1; // floating point versions of the above
- DOUBLEX bw1;
- DOUBLEX ap1;
- DOUBLEX bp1;
- DOUBLEX freq_inc; // increment by this every 64 samples
- DOUBLEX bw_inc;
- DOUBLEX ap_inc;
- DOUBLEX bp_inc;
-} klatt_peaks_t;
-
-
diff --git a/navit/support/espeak/mbrolib.h b/navit/support/espeak/mbrolib.h
deleted file mode 100644
index 0616b464b..000000000
--- a/navit/support/espeak/mbrolib.h
+++ /dev/null
@@ -1,205 +0,0 @@
-#ifndef MBROLIB_H
-#define MBROLIB_H
-
-/*
- * mbrolib: mbrola wrapper.
- *
- * Copyright (C) 2007 Gilles Casse <gcasse@oralux.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
-*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* < types */
-
-/** Parameters */
-
-typedef struct {
- int ignore_error; /* 1=Ignore any fatal error or unknown diphone */
- char comment_char; /* Comment character */
- float volume_ratio; /* Volume ratio */
- float frequency_ratio; /* Applied to pitch points */
- float time_ratio; /* Applied to phone durations */
-} mbrolib_parameter;
-
-
-/** Returned errors */
-
-typedef enum {
- MBROLIB_OK=0,
- MBROLIB_DATABASE_NOT_INSTALLED,
- MBROLIB_INVAL,
- MBROLIB_OUT_OF_MEMORY,
- MBROLIB_OUT_OF_RANGE,
- MBROLIB_READ_ERROR,
- MBROLIB_WRITE_ERROR
-} MBROLIB_ERROR;
-
-
-
-/** Gender */
-
-typedef enum {
- MBROLIB_FEMALE,
- MBROLIB_MALE
-} MBROLIB_GENDER;
-
-
-
-/** Voice descriptor */
-
-typedef struct {
- char *name; /* name (for example: "en1") */
- char *filename; /* database pathname (for example: "/usr/share/mbrola/voices/en1) */
- int rate; /* database sample rate */
- MBROLIB_GENDER gender;
- const char *language; /* Language and optional dialect qualifier in ascii (e.g. en, fr_ca). */
-} mbrolib_voice;
-
-/* > */
-
-
-/** Initialization, returns a new handle.
- First function.
-
- @param the_sample_rate: output rate in Hz (for example 22050). If 0, keep the original database rate.
-
- @return handle (or NULL if error).
-*/
-void* mbrolib_init( int sample_rate);
-typedef void* (t_mbrolib_init)(int);
-
-
-/** Returns the list of the installed mbrola databases.
- The databases are searched according to the MBROLA_PATH environment variable if set,
- or under a default path otherwise (see MBROLA_PATH in mbrolib.c).
-
- An array of voices is returned. The last item is set to NULL.
- The caller must not free the returned items or the array.
-
- @param the_handle previously given by mbrolib_init.
-
- @return An array of voices.
-*/
-const mbrolib_voice ** mbrolib_list_voices( void* the_handle);
-typedef const mbrolib_voice ** (t_mbrolib_list_voices)(void*);
-
-
-
-/** Set voice
-
- @param the_handle.
-
- @param the_database (for example, "en1").
-
- @return error code (MBROLIB_OK, MBROLIB_DATABASE_NOT_INSTALLED, MBROLIB_INVAL).
-
-*/
-MBROLIB_ERROR mbrolib_set_voice( void* the_handle, const char* the_name);
-typedef MBROLIB_ERROR (t_mbrolib_set_voice)( void*, const char*);
-
-
-
-/** Get the current database parameters.
- The caller supplies a pointer to an already allocated structure.
-
- @param the_handle previously given by mbrolib_init.
-
- @param the_parameters: pointer to the structure.
-
- @return error code (MBROLIB_OK, MBROLIB_INVAL).
-*/
-MBROLIB_ERROR mbrolib_get_parameter(void* the_handle, mbrolib_parameter* the_parameter);
-typedef MBROLIB_ERROR (t_mbrolib_get_parameter)(void*, mbrolib_parameter*);
-
-
-
-/** Set the database parameters using the supplied data.
-
- @param the_handle previously given by mbrolib_init.
-
- @param the_parameters: pointer to the wished parameters.
-
- @return error code (MBROLIB_OK, MBROLIB_INVAL).
-*/
-MBROLIB_ERROR mbrolib_set_parameter(void* the_handle, const mbrolib_parameter* the_parameter);
-typedef MBROLIB_ERROR (t_mbrolib_set_parameter)(void*, const mbrolib_parameter*);
-
-
-
-/** Write the mbrola phonemes in the internal buffer.
-
- @param the_handle.
-
- @param the_mbrola_phonemes.
-
- @param the_size in bytes.
-
- @return error code (MBROLIB_OK, MBROLIB_INVAL, MBROLIB_WRITE_ERROR, MBROLIB_READ_ERROR).
-*/
-MBROLIB_ERROR mbrolib_write(void* the_handle, const char* the_mbrola_phonemes, size_t the_size);
-typedef MBROLIB_ERROR (t_mbrolib_write)(void*, const char*, size_t);
-
-
-
-/** Read n bytes of the output samples.
-
- @param the_handle.
-
- @param the_samples (raw audio data, 16bits, mono).
-
- @param the_size max number of int16 to read.
-
- @param the_size number of int16 read.
-
- @return error code (MBROLIB_OK, MBROLIB_INVAL, MBROLIB_READ_ERROR).
-
-*/
-MBROLIB_ERROR mbrolib_read(void* the_handle, short* the_samples, int the_max_size, int* the_read_size);
-typedef MBROLIB_ERROR (t_mbrolib_read)(void*, short*, int, int*);
-
-
-
-/** Flush
-
- @param the_handle.
-
-*/
-void mbrolib_flush(void* the_handle);
-typedef void (t_mbrolib_flush)(void*);
-
-
-
-/** Release the handle
-
- @param the_handle.
-
- @return error code (MBROLIB_OK, MBROLIB_INVAL).
-
-*/
-MBROLIB_ERROR mbrolib_terminate(void* the_handle);
-typedef MBROLIB_ERROR (t_mbrolib_terminate)(void*);
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/support/espeak/numbers.c b/navit/support/espeak/numbers.c
deleted file mode 100644
index 9c74eaca3..000000000
--- a/navit/support/espeak/numbers.c
+++ /dev/null
@@ -1,1507 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <wctype.h>
-#include <wchar.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-#include "translate.h"
-
-
-
-#define M_NAME 0
-#define M_SMALLCAP 1
-#define M_TURNED 2
-#define M_REVERSED 3
-#define M_CURL 4
-
-#define M_ACUTE 5
-#define M_BREVE 6
-#define M_CARON 7
-#define M_CEDILLA 8
-#define M_CIRCUMFLEX 9
-#define M_DIAERESIS 10
-#define M_DOUBLE_ACUTE 11
-#define M_DOT_ABOVE 12
-#define M_GRAVE 13
-#define M_MACRON 14
-#define M_OGONEK 15
-#define M_RING 16
-#define M_STROKE 17
-#define M_TILDE 18
-
-#define M_BAR 19
-#define M_RETROFLEX 20
-#define M_HOOK 21
-
-
-#define M_MIDDLE_DOT M_DOT_ABOVE // duplicate of M_DOT_ABOVE
-#define M_IMPLOSIVE M_HOOK
-
-typedef struct {
-const char *name;
-int flags;
-} ACCENTS;
-
-// these are tokens to look up in the *_list file.
-static ACCENTS accents_tab[] = {
-{"_lig", 1},
-{"_smc", 1}, // smallcap
-{"_tur", 1}, // turned
-{"_rev", 1}, // reversed
-{"_crl", 0}, // curl
-
-{"_acu", 0}, // acute
-{"_brv", 0}, // breve
-{"_hac", 0}, // caron/hacek
-{"_ced", 0}, // cedilla
-{"_cir", 0}, // circumflex
-{"_dia", 0}, // diaeresis
-{"_ac2", 0}, // double acute
-{"_dot", 0}, // dot
-{"_grv", 0}, // grave
-{"_mcn", 0}, // macron
-{"_ogo", 0}, // ogonek
-{"_rng", 0}, // ring
-{"_stk", 0}, // stroke
-{"_tld", 0}, // tilde
-
-{"_bar", 0}, // bar
-{"_rfx", 0}, // retroflex
-{"_hok", 0}, // hook
-};
-
-
-#define CAPITAL 0
-#define LETTER(ch,mod1,mod2) (ch-59)+(mod1 << 6)+(mod2 << 11)
-#define LIGATURE(ch1,ch2,mod1) (ch1-59)+((ch2-59) << 6)+(mod1 << 12)+0x8000
-
-
-#define L_ALPHA 60 // U+3B1
-#define L_SCHWA 61 // U+259
-#define L_OPEN_E 62 // U+25B
-#define L_GAMMA 63 // U+3B3
-#define L_IOTA 64 // U+3B9
-#define L_OE 65 // U+153
-#define L_OMEGA 66 // U+3C9
-
-#define L_PHI 67 // U+3C6
-#define L_ESH 68 // U+283
-#define L_UPSILON 69 // U+3C5
-#define L_EZH 70 // U+292
-#define L_GLOTTAL 71 // U+294
-#define L_RTAP 72 // U+27E
-
-
-static const short non_ascii_tab[] = {
- 0, 0x3b1, 0x259, 0x25b, 0x3b3, 0x3b9, 0x153, 0x3c9,
-0x3c6, 0x283, 0x3c5, 0x292, 0x294, 0x27e };
-
-
-// characters U+00e0 to U+017f
-static const unsigned short letter_accents_0e0[] = {
-LETTER('a',M_GRAVE,0), // U+00e0
-LETTER('a',M_ACUTE,0),
-LETTER('a',M_CIRCUMFLEX,0),
-LETTER('a',M_TILDE,0),
-LETTER('a',M_DIAERESIS,0),
-LETTER('a',M_RING,0),
-LIGATURE('a','e',0),
-LETTER('c',M_CEDILLA,0),
-LETTER('e',M_GRAVE,0),
-LETTER('e',M_ACUTE,0),
-LETTER('e',M_CIRCUMFLEX,0),
-LETTER('e',M_DIAERESIS,0),
-LETTER('i',M_GRAVE,0),
-LETTER('i',M_ACUTE,0),
-LETTER('i',M_CIRCUMFLEX,0),
-LETTER('i',M_DIAERESIS,0),
-LETTER('d',M_NAME,0), // eth // U+00f0
-LETTER('n',M_TILDE,0),
-LETTER('o',M_GRAVE,0),
-LETTER('o',M_ACUTE,0),
-LETTER('o',M_CIRCUMFLEX,0),
-LETTER('o',M_TILDE,0),
-LETTER('o',M_DIAERESIS,0),
-0, // division sign
-LETTER('o',M_STROKE,0),
-LETTER('u',M_GRAVE,0),
-LETTER('u',M_ACUTE,0),
-LETTER('u',M_CIRCUMFLEX,0),
-LETTER('u',M_DIAERESIS,0),
-LETTER('y',M_ACUTE,0),
-LETTER('t',M_NAME,0), // thorn
-LETTER('y',M_DIAERESIS,0),
-CAPITAL, // U+0100
-LETTER('a',M_MACRON,0),
-CAPITAL,
-LETTER('a',M_BREVE,0),
-CAPITAL,
-LETTER('a',M_OGONEK,0),
-CAPITAL,
-LETTER('c',M_ACUTE,0),
-CAPITAL,
-LETTER('c',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('c',M_DOT_ABOVE,0),
-CAPITAL,
-LETTER('c',M_CARON,0),
-CAPITAL,
-LETTER('d',M_CARON,0),
-CAPITAL, // U+0110
-LETTER('d',M_STROKE,0),
-CAPITAL,
-LETTER('e',M_MACRON,0),
-CAPITAL,
-LETTER('e',M_BREVE,0),
-CAPITAL,
-LETTER('e',M_DOT_ABOVE,0),
-CAPITAL,
-LETTER('e',M_OGONEK,0),
-CAPITAL,
-LETTER('e',M_CARON,0),
-CAPITAL,
-LETTER('g',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('g',M_BREVE,0),
-CAPITAL, // U+0120
-LETTER('g',M_DOT_ABOVE,0),
-CAPITAL,
-LETTER('g',M_CEDILLA,0),
-CAPITAL,
-LETTER('h',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('h',M_STROKE,0),
-CAPITAL,
-LETTER('i',M_TILDE,0),
-CAPITAL,
-LETTER('i',M_MACRON,0),
-CAPITAL,
-LETTER('i',M_BREVE,0),
-CAPITAL,
-LETTER('i',M_OGONEK,0),
-CAPITAL, // U+0130
-LETTER('i',M_NAME,0), // dotless i
-CAPITAL,
-LIGATURE('i','j',0),
-CAPITAL,
-LETTER('j',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('k',M_CEDILLA,0),
-LETTER('k',M_NAME,0), // kra
-CAPITAL,
-LETTER('l',M_ACUTE,0),
-CAPITAL,
-LETTER('l',M_CEDILLA,0),
-CAPITAL,
-LETTER('l',M_CARON,0),
-CAPITAL,
-LETTER('l',M_MIDDLE_DOT,0), // U+0140
-CAPITAL,
-LETTER('l',M_STROKE,0),
-CAPITAL,
-LETTER('n',M_ACUTE,0),
-CAPITAL,
-LETTER('n',M_CEDILLA,0),
-CAPITAL,
-LETTER('n',M_CARON,0),
-LETTER('n',M_NAME,0), // apostrophe n
-CAPITAL,
-LETTER('n',M_NAME,0), // eng
-CAPITAL,
-LETTER('o',M_MACRON,0),
-CAPITAL,
-LETTER('o',M_BREVE,0),
-CAPITAL, // U+0150
-LETTER('o',M_DOUBLE_ACUTE,0),
-CAPITAL,
-LIGATURE('o','e',0),
-CAPITAL,
-LETTER('r',M_ACUTE,0),
-CAPITAL,
-LETTER('r',M_CEDILLA,0),
-CAPITAL,
-LETTER('r',M_CARON,0),
-CAPITAL,
-LETTER('s',M_ACUTE,0),
-CAPITAL,
-LETTER('s',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('s',M_CEDILLA,0),
-CAPITAL, // U+0160
-LETTER('s',M_CARON,0),
-CAPITAL,
-LETTER('t',M_CEDILLA,0),
-CAPITAL,
-LETTER('t',M_CARON,0),
-CAPITAL,
-LETTER('t',M_STROKE,0),
-CAPITAL,
-LETTER('u',M_TILDE,0),
-CAPITAL,
-LETTER('u',M_MACRON,0),
-CAPITAL,
-LETTER('u',M_BREVE,0),
-CAPITAL,
-LETTER('u',M_RING,0),
-CAPITAL, // U+0170
-LETTER('u',M_DOUBLE_ACUTE,0),
-CAPITAL,
-LETTER('u',M_OGONEK,0),
-CAPITAL,
-LETTER('w',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('y',M_CIRCUMFLEX,0),
-CAPITAL, // Y-DIAERESIS
-CAPITAL,
-LETTER('z',M_ACUTE,0),
-CAPITAL,
-LETTER('z',M_DOT_ABOVE,0),
-CAPITAL,
-LETTER('z',M_CARON,0),
-LETTER('s',M_NAME,0), // long-s // U+17f
-};
-
-
-// characters U+0250 to U+029F
-static const unsigned short letter_accents_250[] = {
-LETTER('a',M_TURNED,0), // U+250
-LETTER(L_ALPHA,0,0),
-LETTER(L_ALPHA,M_TURNED,0),
-LETTER('b',M_IMPLOSIVE,0),
-0, // open-o
-LETTER('c',M_CURL,0),
-LETTER('d',M_RETROFLEX,0),
-LETTER('d',M_IMPLOSIVE,0),
-LETTER('e',M_REVERSED,0), // U+258
-0, // schwa
-LETTER(L_SCHWA,M_HOOK,0),
-0, // open-e
-LETTER(L_OPEN_E,M_REVERSED,0),
-LETTER(L_OPEN_E,M_HOOK,M_REVERSED),
-0,//LETTER(L_OPEN_E,M_CLOSED,M_REVERSED),
-LETTER('j',M_BAR,0),
-LETTER('g',M_IMPLOSIVE,0), // U+260
-LETTER('g',0,0),
-LETTER('g',M_SMALLCAP,0),
-LETTER(L_GAMMA,0,0),
-0, // ramshorn
-LETTER('h',M_TURNED,0),
-LETTER('h',M_HOOK,0),
-0,//LETTER(L_HENG,M_HOOK,0),
-LETTER('i',M_BAR,0), // U+268
-LETTER(L_IOTA,0,0),
-LETTER('i',M_SMALLCAP,0),
-LETTER('l',M_TILDE,0),
-LETTER('l',M_BAR,0),
-LETTER('l',M_RETROFLEX,0),
-LIGATURE('l','z',0),
-LETTER('m',M_TURNED,0),
-0,//LETTER('m',M_TURNED,M_LEG), // U+270
-LETTER('m',M_HOOK,0),
-0,//LETTER('n',M_LEFTHOOK,0),
-LETTER('n',M_RETROFLEX,0),
-LETTER('n',M_SMALLCAP,0),
-LETTER('o',M_BAR,0),
-LIGATURE('o','e',M_SMALLCAP),
-0,//LETTER(L_OMEGA,M_CLOSED,0),
-LETTER(L_PHI,0,0), // U+278
-LETTER('r',M_TURNED,0),
-0,//LETTER('r',M_TURNED,M_LEG),
-LETTER('r',M_RETROFLEX,M_TURNED),
-0,//LETTER('r',M_LEG,0),
-LETTER('r',M_RETROFLEX,0),
-0, // r-tap
-LETTER(L_RTAP,M_REVERSED,0),
-LETTER('r',M_SMALLCAP,0), // U+280
-LETTER('r',M_TURNED,M_SMALLCAP),
-LETTER('s',M_RETROFLEX,0),
-0, // esh
-0,//LETTER('j',M_BAR,L_IMPLOSIVE),
-LETTER(L_ESH,M_REVERSED,0),
-LETTER(L_ESH,M_CURL,0),
-LETTER('t',M_TURNED,0),
-LETTER('t',M_RETROFLEX,0), // U+288
-LETTER('u',M_BAR,0),
-LETTER(L_UPSILON,0,0),
-LETTER('v',M_HOOK,0),
-LETTER('v',M_TURNED,0),
-LETTER('w',M_TURNED,0),
-LETTER('y',M_TURNED,0),
-LETTER('y',M_SMALLCAP,0),
-LETTER('z',M_RETROFLEX,0), // U+290
-LETTER('z',M_CURL,0),
-0, // ezh
-LETTER(L_EZH,M_CURL,0),
-0, // glottal stop
-LETTER(L_GLOTTAL,M_REVERSED,0),
-LETTER(L_GLOTTAL,M_TURNED,0),
-0,//LETTER('c',M_LONG,0),
-0, // bilabial click // U+298
-LETTER('b',M_SMALLCAP,0),
-0,//LETTER(L_OPEN_E,M_CLOSED,0),
-LETTER('g',M_IMPLOSIVE,M_SMALLCAP),
-LETTER('h',M_SMALLCAP,0),
-LETTER('j',M_CURL,0),
-LETTER('k',M_TURNED,0),
-LETTER('l',M_SMALLCAP,0),
-LETTER('q',M_HOOK,0), // U+2a0
-LETTER(L_GLOTTAL,M_STROKE,0),
-LETTER(L_GLOTTAL,M_STROKE,M_REVERSED),
-LIGATURE('d','z',0),
-0, // dezh
-LIGATURE('d','z',M_CURL),
-LIGATURE('t','s',0),
-0, // tesh
-LIGATURE('t','s',M_CURL),
-};
-
-static int LookupLetter2(Translator *tr, unsigned int letter, char *ph_buf)
-{//========================================================================
- int len;
- char single_letter[10];
-
- single_letter[0] = 0;
- single_letter[1] = '_';
- len = utf8_out(letter, &single_letter[2]);
- single_letter[len+2] = ' ';
- single_letter[len+3] = 0;
-
- if(Lookup(tr, &single_letter[1], ph_buf) == 0)
- {
- single_letter[1] = ' ';
- if(Lookup(tr, &single_letter[2], ph_buf) == 0)
- {
- TranslateRules(tr, &single_letter[2], ph_buf, 20, NULL,0,NULL);
- }
- }
- return(ph_buf[0]);
-}
-
-
-void LookupAccentedLetter(Translator *tr, unsigned int letter, char *ph_buf)
-{//=========================================================================
- // lookup the character in the accents table
- int accent_data = 0;
- int accent1 = 0;
- int accent2 = 0;
- int basic_letter;
- int letter2=0;
- char ph_letter1[30];
- char ph_letter2[30];
- char ph_accent1[30];
- char ph_accent2[30];
-
- ph_accent2[0] = 0;
-
- if((letter >= 0xe0) && (letter < 0x17f))
- {
- accent_data = letter_accents_0e0[letter - 0xe0];
- }
- else
- if((letter >= 0x250) && (letter <= 0x2a8))
- {
- accent_data = letter_accents_250[letter - 0x250];
- }
-
- if(accent_data != 0)
- {
- basic_letter = (accent_data & 0x3f) + 59;
- if(basic_letter < 'a')
- basic_letter = non_ascii_tab[basic_letter-59];
-
- if(accent_data & 0x8000)
- {
- letter2 = (accent_data >> 6) & 0x3f;
- letter2 += 59;
- accent2 = (accent_data >> 12) & 0x7;
- }
- else
- {
- accent1 = (accent_data >> 6) & 0x1f;
- accent2 = (accent_data >> 11) & 0xf;
- }
-
-
- if(Lookup(tr, accents_tab[accent1].name, ph_accent1) != 0)
- {
-
- if(LookupLetter2(tr, basic_letter, ph_letter1) != 0)
- {
- if(accent2 != 0)
- {
- if(Lookup(tr, accents_tab[accent2].name, ph_accent2) == 0)
- {
-// break;
- }
-
- if(accents_tab[accent2].flags & 1)
- {
- strcpy(ph_buf,ph_accent2);
- ph_buf += strlen(ph_buf);
- ph_accent2[0] = 0;
- }
- }
- if(letter2 != 0)
- {
- //ligature
- LookupLetter2(tr, letter2, ph_letter2);
- sprintf(ph_buf,"%s%c%s%c%s%s",ph_accent1, phonPAUSE_VSHORT, ph_letter1, phonSTRESS_P, ph_letter2, ph_accent2);
- }
- else
- {
- if(accent1 == 0)
- strcpy(ph_buf, ph_letter1);
- else
- if((tr->langopts.accents & 1) || (accents_tab[accent1].flags & 1))
- sprintf(ph_buf,"%s%c%c%s", ph_accent1, phonPAUSE_VSHORT, phonSTRESS_P, ph_letter1);
- else
- sprintf(ph_buf,"%c%s%c%s%c", phonSTRESS_2, ph_letter1, phonPAUSE_VSHORT, ph_accent1, phonPAUSE_VSHORT);
- }
- }
- }
- }
-} // end of LookupAccentedLetter
-
-
-
-void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_buf1)
-{//=================================================================================
- int len;
- unsigned char *p;
- static char single_letter[10] = {0,0};
- char ph_stress[2];
- unsigned int dict_flags[2];
- char ph_buf3[40];
- char *ptr;
-
- ph_buf1[0] = 0;
- len = utf8_out(letter,&single_letter[2]);
- single_letter[len+2] = ' ';
-
- if(next_byte == -1)
- {
- // speaking normal text, not individual characters
- if(Lookup(tr, &single_letter[2], ph_buf1) != 0)
- return;
-
- single_letter[1] = '_';
- if(Lookup(tr, &single_letter[1], ph_buf3) != 0)
- return; // the character is specified as _* so ignore it when speaking normal text
-
- // check whether this character is specified for English
- if(tr->translator_name == L('e','n'))
- return; // we are already using English
-
- SetTranslator2("en");
- if(Lookup(translator2, &single_letter[2], ph_buf3) != 0)
- {
- // yes, switch to English and re-translate the word
- sprintf(ph_buf1,"%c",phonSWITCH);
- }
- SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
- return;
- }
-
- if((letter <= 32) || iswspace(letter))
- {
- // lookup space as _&32 etc.
- sprintf(&single_letter[1],"_#%d ",letter);
- Lookup(tr, &single_letter[1], ph_buf1);
- return;
- }
-
- if(next_byte != ' ')
- next_byte = RULE_SPELLING;
- single_letter[3+len] = next_byte; // follow by space-space if the end of the word, or space-0x31
-
- single_letter[1] = '_';
-
- // if the $accent flag is set for this letter, use the accents table (below)
- dict_flags[1] = 0;
- ptr = &single_letter[1];
-
- if(Lookup(tr, &single_letter[1], ph_buf3) == 0)
- {
- single_letter[1] = ' ';
- if(Lookup(tr, &single_letter[2], ph_buf3) == 0)
- {
- TranslateRules(tr, &single_letter[2], ph_buf3, sizeof(ph_buf3), NULL,FLAG_NO_TRACE,NULL);
- }
- }
-
- if(ph_buf3[0] == 0)
- {
- LookupAccentedLetter(tr, letter, ph_buf3);
- }
-
- if(ph_buf3[0] == 0)
- {
- ph_buf1[0] = 0;
- return;
- }
- if(ph_buf3[0] == phonSWITCH)
- {
- strcpy(ph_buf1,ph_buf3);
- return;
- }
- // at a stress marker at the start of the letter name, unless one is already marked
- ph_stress[0] = phonSTRESS_P;
- ph_stress[1] = 0;
-
- for(p=(unsigned char *)ph_buf3; *p != 0; p++)
- {
- if(phoneme_tab[*p]->type == phSTRESS)
- ph_stress[0] = 0; // stress is already marked
- }
- sprintf(ph_buf1,"%s%s",ph_stress,ph_buf3);
-}
-
-
-
-int TranslateLetter(Translator *tr, char *word, char *phonemes, int control, int word_length)
-{//======================================================================================
-// get pronunciation for an isolated letter
-// return number of bytes used by the letter
-// control 2=say-as glyphs, 3-say-as chars
- int n_bytes;
- int letter;
- int len;
- int save_option_phonemes;
- char *p2;
- char *pbuf;
- char capital[20];
- char ph_buf[60];
- char ph_buf2[60];
- char hexbuf[6];
-
- ph_buf[0] = 0;
- capital[0] = 0;
-
- n_bytes = utf8_in(&letter,word);
-
- if((letter & 0xfff00) == 0x0e000)
- {
- letter &= 0xff; // uncode private usage area
- }
-
- if(control > 2)
- {
- // include CAPITAL information
- if(iswupper(letter))
- {
- Lookup(tr, "_cap", capital);
- }
- }
- letter = towlower2(letter);
-
- LookupLetter(tr, letter, word[n_bytes], ph_buf);
-
- if(ph_buf[0] == phonSWITCH)
- {
- strcpy(phonemes,ph_buf);
- return(0);
- }
-
- if((ph_buf[0] == 0) && (tr->translator_name != L('e','n')))
- {
- // speak as English, check whether there is a translation for this character
- SetTranslator2("en");
- save_option_phonemes = option_phonemes;
- option_phonemes = 0;
- LookupLetter(translator2, letter, word[n_bytes], ph_buf);
- SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
- option_phonemes = save_option_phonemes;
-
- if(ph_buf[0] != 0)
- {
- sprintf(phonemes,"%cen",phonSWITCH);
- return(0);
- }
- }
-
- if(ph_buf[0] == 0)
- {
- // character name not found
- if(iswalpha(letter))
- Lookup(tr, "_?A", ph_buf);
-
- if((ph_buf[0]==0) && !iswspace(letter))
- Lookup(tr, "_??", ph_buf);
-
- if(ph_buf[0] != 0)
- {
- // speak the hexadecimal number of the character code
- sprintf(hexbuf,"%x",letter);
- pbuf = ph_buf;
- for(p2 = hexbuf; *p2 != 0; p2++)
- {
- pbuf += strlen(pbuf);
- *pbuf++ = phonPAUSE_VSHORT;
- LookupLetter(tr, *p2, 0, pbuf);
- }
- }
- }
-
- len = strlen(phonemes);
- if(tr->langopts.accents & 2)
- sprintf(ph_buf2,"%c%s%s",0xff,ph_buf,capital);
- else
- sprintf(ph_buf2,"%c%s%s",0xff,capital,ph_buf); // the 0xff marker will be removed or replaced in SetSpellingStress()
- if((len + strlen(ph_buf2)) < N_WORD_PHONEMES)
- {
- strcpy(&phonemes[len],ph_buf2);
- }
- return(n_bytes);
-} // end of TranslateLetter
-
-
-
-void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars)
-{//=============================================================================
-// Individual letter names, reduce the stress of some.
- int ix;
- unsigned int c;
- int n_stress=0;
- int count;
- unsigned char buf[N_WORD_PHONEMES];
-
- for(ix=0; (c = phonemes[ix]) != 0; ix++)
- {
- if(c == phonSTRESS_P)
- {
- n_stress++;
- }
- buf[ix] = c;
- }
- buf[ix] = 0;
-
- count = 0;
- for(ix=0; (c = buf[ix]) != 0; ix++)
- {
- if((c == phonSTRESS_P) && (n_chars > 1))
- {
- count++;
-
- if(tr->langopts.spelling_stress == 1)
- {
- // stress on initial letter when spelling
- if(count > 1)
- c = phonSTRESS_3;
- }
- else
- {
- if(count != n_stress)
- {
- if(((count % 3) != 0) || (count == n_stress-1))
- c = phonSTRESS_3; // reduce to secondary stress
- }
- }
- }
- else
- if(c == 0xff)
- {
- if((control < 2) || (ix==0))
- continue; // don't insert pauses
-
- if(control == 4)
- c = phonPAUSE; // pause after each character
- if(((count % 3) == 0) || (control > 2))
- c = phonPAUSE_SHORT; // pause following a primary stress
- else
- continue; // remove marker
- }
- *phonemes++ = c;
- }
- if(control >= 2)
- *phonemes++ = phonPAUSE_NOLINK;
- *phonemes = 0;
-} // end of SetSpellingStress
-
-
-
-// Numbers
-
-static char ph_ordinal2[12];
-
-int TranslateRoman(Translator *tr, char *word, char *ph_out)
-{//=====================================================
- int c;
- char *p;
- const char *p2;
- int acc;
- int prev;
- int value;
- int subtract;
- int repeat = 0;
- unsigned int flags;
- char ph_roman[30];
- char number_chars[N_WORD_BYTES];
-
- static const char *roman_numbers = "ixcmvld";
- static int roman_values[] = {1,10,100,1000,5,50,500};
-
- acc = 0;
- prev = 0;
- subtract = 0x7fff;
-
- while((c = *word++) != ' ')
- {
- if((p2 = strchr(roman_numbers,c)) == NULL)
- return(0);
-
- value = roman_values[p2 - roman_numbers];
- if(value == prev)
- {
- repeat++;
- if(repeat >= 3)
- return(0);
- }
- else
- repeat = 0;
-
- if((prev > 1) && (prev != 10) && (prev != 100))
- {
- if(value >= prev)
- return(0);
- }
- if((prev != 0) && (prev < value))
- {
- if(((acc % 10) != 0) || ((prev*10) < value))
- return(0);
- subtract = prev;
- value -= subtract;
- }
- else
- if(value >= subtract)
- return(0);
- else
- acc += prev;
- prev = value;
- }
- acc += prev;
- if(acc < 2)
- return(0);
-
- if(acc > tr->langopts.max_roman)
- return(0);
-
- Lookup(tr, "_roman",ph_roman); // precede by "roman" if _rom is defined in *_list
- p = &ph_out[0];
-
- if((tr->langopts.numbers & NUM_ROMAN_AFTER) == 0)
- {
- strcpy(ph_out,ph_roman);
- p = &ph_out[strlen(ph_out)];
- }
-
- sprintf(number_chars," %d ",acc);
- TranslateNumber(tr, &number_chars[1], p, &flags, 0);
-
- if(tr->langopts.numbers & NUM_ROMAN_AFTER)
- strcat(ph_out,ph_roman);
- return(1);
-} // end of TranslateRoman
-
-
-static const char *M_Variant(int value)
-{//====================================
- // returns M, or perhaps MA for some cases
-
- if((translator->langopts.numbers2 & 0x100) && (value >= 2) && (value <= 4))
- return("0MA"); // Czech, Slovak
- else
- if(((value % 100) < 10) || ((value % 100) > 20)) // but not teens, 10 to 19
- {
- if ((translator->langopts.numbers2 & 0x40) &&
- ((value % 10)>=2) &&
- ((value % 10)<=4))
- {
- // for Polish language - two forms of plural!
- return("0MA");
- }
-
- if((translator->langopts.numbers2 & 0x80) &&
- ((value % 10)==1))
- {
- return("1MA");
- }
-
- }
- return("0M");
-}
-
-
-static int LookupThousands(Translator *tr, int value, int thousandplex, char *ph_out)
-{//==================================================================================
- int found;
- char string[12];
- char ph_of[12];
- char ph_thousands[40];
-
- ph_of[0] = 0;
-
- // first look fora match with the exact value of thousands
- sprintf(string,"_%dM%d",value,thousandplex);
-
- if((found = Lookup(tr, string, ph_thousands)) == 0)
- {
- if((value % 100) >= 20)
- {
- Lookup(tr, "_0of", ph_of);
- }
-
- sprintf(string,"_%s%d",M_Variant(value),thousandplex);
-
- if(Lookup(tr, string, ph_thousands) == 0)
- {
- // repeat "thousand" if higher order names are not available
- sprintf(string,"_%dM1",value);
- if((found = Lookup(tr, string, ph_thousands)) == 0)
- Lookup(tr, "_0M1", ph_thousands);
- }
- }
- sprintf(ph_out,"%s%s",ph_of,ph_thousands);
- return(found);
-}
-
-
-static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
-{//========================================================================
-// Lookup a 2 digit number
-// control bit 0: tens and units (use special form of '1')
-// control bit 1: ordinal number
-// control bit 2: use feminine form of '2'
-// control bit 3: speak zero tens
-
- int found;
- int ix;
- int units;
- int used_and=0;
- int found_ordinal = 0;
- int next_phtype;
- char string[12]; // for looking up entries in *_list
- char ph_ordinal[20];
- char ph_tens[50];
- char ph_digits[50];
- char ph_and[12];
-
- // is there a special pronunciation for this 2-digit number
- found = 0;
- ph_ordinal[0] = 0;
-
- if(control & 4)
- {
- sprintf(string,"_%df",value);
- found = Lookup(tr, string, ph_digits);
- }
- if(control & 2)
- {
- strcpy(ph_ordinal, ph_ordinal2);
-
- sprintf(string,"_%do",value);
- if((found = Lookup(tr, string, ph_digits)) != 0)
- {
- found_ordinal = 1;
- }
- }
-
- if(found == 0)
- {
- if((value == 1) && (control & 1))
- {
- if(Lookup(tr, "_1a", ph_out) != 0)
- return(0);
- }
- sprintf(string,"_%d",value);
- found = Lookup(tr, string, ph_digits);
- }
-
- // no, speak as tens+units
-
- if((control & 8) && (value < 10))
- {
- // speak leading zero
- Lookup(tr, "_0", ph_tens);
- }
- else
- {
- if(found)
- {
- ph_tens[0] = 0;
- }
- else
- {
- units = (value % 10);
-
- if((control & 2) && ((units == 0) || (tr->langopts.numbers & 0x10)))
- {
- sprintf(string,"_%dXo",value / 10);
- if(Lookup(tr, string, ph_tens) != 0)
- {
- found_ordinal = 1;
- }
- }
- if(found_ordinal == 0)
- {
- sprintf(string,"_%dX",value / 10);
- Lookup(tr, string, ph_tens);
- }
-
- if((ph_tens[0] == 0) && (tr->langopts.numbers & NUM_VIGESIMAL))
- {
- // tens not found, (for example) 73 is 60+13
- units = (value % 20);
- sprintf(string,"_%dX",(value / 10) & 0xfe);
- Lookup(tr, string, ph_tens);
- }
-
- ph_digits[0] = 0;
- if(units > 0)
- {
- found = 0;
- if(control & 4)
- {
- // is there a variant form of this number?
- sprintf(string,"_%df",units);
- found = Lookup(tr, string, ph_digits);
- }
- if((control & 2) && ((tr->langopts.numbers & 0x10) == 0))
- {
- // ordinal
- sprintf(string,"_%do",units);
- if((found = Lookup(tr, string, ph_digits)) != 0)
- {
- found_ordinal = 1;
- }
- }
- if(found == 0)
- {
- sprintf(string,"_%d",units);
- Lookup(tr, string, ph_digits);
- }
- }
- }
- }
-
- if((control & 2) && (found_ordinal == 0) && (ph_ordinal[0] == 0))
- {
- if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & 0x10)))
- Lookup(tr, "_ord20", ph_ordinal);
- if(ph_ordinal[0] == 0)
- Lookup(tr, "_ord", ph_ordinal);
- }
-
- if((tr->langopts.numbers & 0x30) && (ph_tens[0] != 0) && (ph_digits[0] != 0))
- {
- Lookup(tr, "_0and", ph_and);
- if(tr->langopts.numbers & 0x10)
- sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal);
- else
- sprintf(ph_out,"%s%s%s%s",ph_tens, ph_and, ph_digits, ph_ordinal);
- used_and = 1;
- }
- else
- {
- if(tr->langopts.numbers & 0x200)
- {
- // remove vowel from the end of tens if units starts with a vowel (LANG=Italian)
- if(((ix = strlen(ph_tens)-1) >= 0) && (ph_digits[0] != 0))
- {
- if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS)
- next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type;
-
- if((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL))
- ph_tens[ix] = 0;
- }
- }
- sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal);
- }
-
- if(tr->langopts.numbers & 0x100)
- {
- // only one primary stress
- found = 0;
- for(ix=strlen(ph_out)-1; ix>=0; ix--)
- {
- if(ph_out[ix] == phonSTRESS_P)
- {
- if(found)
- ph_out[ix] = phonSTRESS_3;
- else
- found = 1;
- }
- }
- }
- return(used_and);
-} // end of LookupNum2
-
-
-static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null, int thousandplex, int control)
-{//=============================================================================================================
-// Translate a 3 digit number
-// control bit 0, previous thousands
-// bit 1, ordinal number
- int found;
- int hundreds;
- int x;
- char string[12]; // for looking up entries in **_list
- char buf1[100];
- char buf2[100];
- char ph_100[20];
- char ph_10T[20];
- char ph_digits[50];
- char ph_thousands[50];
- char ph_hundred_and[12];
- char ph_thousand_and[12];
-
- hundreds = value / 100;
- buf1[0] = 0;
-
- if(hundreds > 0)
- {
- ph_thousands[0] = 0;
- ph_thousand_and[0] = 0;
-
- found = 0;
- if((control & 2) && ((value % 100) == 0))
- {
- // ordinal number, with no tens or units
- found = Lookup(tr, "_0Co", ph_100);
- }
- if(found == 0)
- {
- Lookup(tr, "_0C", ph_100);
- }
-
- if(((tr->langopts.numbers & 0x0800) != 0) && (hundreds == 19))
- {
- // speak numbers such as 1984 as years: nineteen-eighty-four
-// ph_100[0] = 0; // don't say "hundred", we also need to surpess "and"
- }
- else
- if(hundreds >= 10)
- {
- ph_digits[0] = 0;
-
- if(LookupThousands(tr, hundreds / 10, thousandplex+1, ph_10T) == 0)
- {
- x = 0;
- if(tr->langopts.numbers2 & (1 << (thousandplex+1)))
- x = 4;
- LookupNum2(tr, hundreds/10, x, ph_digits);
- }
-
- if(tr->langopts.numbers2 & 0x200)
- sprintf(ph_thousands,"%s%s%c",ph_10T,ph_digits,phonPAUSE_NOLINK); // say "thousands" before its number, not after
- else
- sprintf(ph_thousands,"%s%s%c",ph_digits,ph_10T,phonPAUSE_NOLINK);
-
- hundreds %= 10;
- if(hundreds == 0)
- ph_100[0] = 0;
- suppress_null = 1;
- }
-
- ph_digits[0] = 0;
- if(hundreds > 0)
- {
- if((tr->langopts.numbers & 0x100000) && ((control & 1) || (ph_thousands[0] != 0)))
- {
- Lookup(tr, "_0and", ph_thousand_and);
- }
-
- suppress_null = 1;
-
- found = 0;
- if((value % 1000) == 100)
- {
- // is there a special pronunciation for exactly 100 ?
- found = Lookup(tr, "_1C0", ph_digits);
- }
- if(!found)
- {
- sprintf(string,"_%dC",hundreds);
- found = Lookup(tr, string, ph_digits); // is there a specific pronunciation for n-hundred ?
- }
-
- if(found)
- {
- ph_100[0] = 0;
- }
- else
- {
- if((hundreds > 1) || ((tr->langopts.numbers & 0x400) == 0))
- {
- LookupNum2(tr, hundreds, 0, ph_digits);
- }
- }
- }
-
- sprintf(buf1,"%s%s%s%s",ph_thousands,ph_thousand_and,ph_digits,ph_100);
- }
-
- ph_hundred_and[0] = 0;
- if((tr->langopts.numbers & 0x40) && ((value % 100) != 0))
- {
- if((value > 100) || ((control & 1) && (thousandplex==0)))
- {
- Lookup(tr, "_0and", ph_hundred_and);
- }
- }
-
-
- buf2[0] = 0;
- value = value % 100;
-
- if((value != 0) || (suppress_null == 0))
- {
- x = 0;
- if(thousandplex==0)
- {
- x = 1; // allow "eins" for 1 rather than "ein"
- if(control & 2)
- x = 3; // ordinal number
- }
- else
- {
- if(tr->langopts.numbers2 & (1 << thousandplex))
- x = 4; // use variant (feminine) for before thousands and millions
- }
-
- if(LookupNum2(tr, value, x, buf2) != 0)
- {
- if(tr->langopts.numbers & 0x80)
- ph_hundred_and[0] = 0; // don't put 'and' after 'hundred' if there's 'and' between tens and units
- }
- }
-
- sprintf(ph_out,"%s%s%s",buf1,ph_hundred_and,buf2);
-
- return(0);
-} // end of LookupNum3
-
-
-static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int *flags, int wflags)
-{//====================================================================================================
-// Number translation with various options
-// the "word" may be up to 4 digits
-// "words" of 3 digits may be preceded by another number "word" for thousands or millions
-
- int n_digits;
- int value;
- unsigned int ix;
- unsigned char c;
- int suppress_null = 0;
- int decimal_point = 0;
- int thousandplex = 0;
- int thousands_inc = 0;
- int prev_thousands = 0;
- int ordinal = 0;
- int this_value;
- static int prev_value;
- int decimal_count;
- int max_decimal_count;
- int decimal_mode;
- int hyphen;
- char *p;
- char string[20]; // for looking up entries in **_list
- char buf1[100];
- char ph_append[50];
- char ph_buf[200];
- char ph_buf2[50];
- char suffix[20];
-
- static const char str_pause[2] = {phonPAUSE_NOLINK,0};
-
- *flags = 0;
-
- for(ix=0; isdigit(word[ix]); ix++) ;
- n_digits = ix;
- value = this_value = atoi(word);
-
- ph_ordinal2[0] = 0;
- if((tr->langopts.numbers & 0x10000) && (word[ix] == '.') && !isdigit(word[ix+2]))
- {
- // ordinal number is indicated by dot after the number
- ordinal = 2;
- word[ix] = ' ';
- }
- else
- {
- // look for an ordinal number suffix after the number
- ix++;
- hyphen = 0;
- p = suffix;
- if(word[ix] == '-')
- {
- *p++ = '-';
- hyphen = 1;
- ix += 2;
- }
- while((word[ix] != 0) && (word[ix] != ' ') && (ix < (sizeof(suffix)-1)))
- {
- *p++ = word[ix++];
- }
- *p = 0;
-
- if(suffix[0] != 0)
- {
- sprintf(string,"_0%s",suffix);
- if(Lookup(tr, string, ph_ordinal2))
- {
- // this is an ordinal suffix
- ordinal = 2;
- flags[0] |= FLAG_SKIPWORDS;
- dictionary_skipwords = 1 + hyphen;
- }
- }
- }
-
- ph_append[0] = 0;
- ph_buf2[0] = 0;
-
- // is there a previous thousands part (as a previous "word") ?
- if((n_digits == 3) && (word[-2] == tr->langopts.thousands_sep) && isdigit(word[-3]))
- {
- prev_thousands = 1;
- }
- else
- if((tr->langopts.thousands_sep == ' ') || (tr->langopts.numbers & 0x1000))
- {
- // thousands groups can be separated by spaces
- if((n_digits == 3) && isdigit(word[-2]))
- {
- prev_thousands = 1;
- }
- }
-
- if((word[0] == '0') && (prev_thousands == 0) && (word[1] != ' ') && (word[1] != tr->langopts.decimal_sep))
- {
- if((n_digits == 2) && (word[3] == ':') && isdigit(word[5]) && isspace(word[7]))
- {
- // looks like a time 02:30, omit the leading zero
- }
- else
- {
- return(0); // number string with leading zero, speak as individual digits
- }
- }
-
- if((tr->langopts.numbers & 0x1000) && (word[n_digits] == ' '))
- thousands_inc = 1;
- else
- if(word[n_digits] == tr->langopts.thousands_sep)
- thousands_inc = 2;
-
- if(thousands_inc > 0)
- {
- // if the following "words" are three-digit groups, count them and add
- // a "thousand"/"million" suffix to this one
-
- ix = n_digits + thousands_inc;
- while(isdigit(word[ix]) && isdigit(word[ix+1]) && isdigit(word[ix+2]))
- {
- thousandplex++;
- if(word[ix+3] == tr->langopts.thousands_sep)
- ix += (3 + thousands_inc);
- else
- break;
- }
- }
-
- if((value == 0) && prev_thousands)
- {
- suppress_null = 1;
- }
-
- if((word[n_digits] == tr->langopts.decimal_sep) && isdigit(word[n_digits+1]))
- {
- // this "word" ends with a decimal point
- Lookup(tr, "_dpt", ph_append);
- decimal_point = 1;
- }
- else
- if(suppress_null == 0)
- {
- if(thousands_inc > 0)
- {
- if((thousandplex > 0) && (value < 1000))
- {
- if((suppress_null == 0) && (LookupThousands(tr,value,thousandplex,ph_append)))
- {
- // found an exact match for N thousand
- value = 0;
- suppress_null = 1;
- }
- }
- }
- }
- else
- if((thousandplex > 1) && prev_thousands && (prev_value > 0))
- {
- sprintf(string,"_%s%d",M_Variant(value),thousandplex+1);
- if(Lookup(tr, string, buf1)==0)
- {
- // speak this thousandplex if there was no word for the previous thousandplex
- sprintf(string,"_0M%d",thousandplex);
- Lookup(tr, string, ph_append);
- }
- }
-
- if((ph_append[0] == 0) && (word[n_digits] == '.') && (thousandplex == 0))
- {
- Lookup(tr, "_.", ph_append);
- }
-
- LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal);
- if((thousandplex > 0) && (tr->langopts.numbers2 & 0x200))
- sprintf(ph_out,"%s%s%s",ph_append,ph_buf2,ph_buf); // say "thousands" before its number
- else
- sprintf(ph_out,"%s%s%s",ph_buf2,ph_buf,ph_append);
-
-
- while(decimal_point)
- {
- n_digits++;
-
- decimal_count = 0;
- while(isdigit(word[n_digits+decimal_count]))
- decimal_count++;
-
- if(decimal_count > 1)
- {
- max_decimal_count = 2;
- switch(decimal_mode = (tr->langopts.numbers & 0xe000))
- {
- case 0x8000:
- max_decimal_count = 5;
- case 0x4000:
- // French/Polish decimal fraction
- while(word[n_digits] == '0')
- {
- Lookup(tr, "_0", buf1);
- strcat(ph_out,buf1);
- decimal_count--;
- n_digits++;
- }
- if((decimal_count <= max_decimal_count) && isdigit(word[n_digits]))
- {
- LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0);
- strcat(ph_out,buf1);
- n_digits += decimal_count;
- }
- break;
-
- case 0x2000:
- case 0xa000:
- // Italian decimal fractions
- if(decimal_count <= 4)
- {
- LookupNum3(tr, atoi(&word[n_digits]), ph_buf, 0,0,0);
- if((word[n_digits]=='0') || (decimal_mode == 0xa000))
- {
- // decimal part has leading zeros, so add a "hundredths" or "thousandths" suffix
- sprintf(string,"_0Z%d",decimal_count);
- if(Lookup(tr, string, buf1) == 0)
- break; // revert to speaking single digits
-
- strcat(ph_buf,buf1);
- }
- strcat(ph_out,ph_buf);
- n_digits += decimal_count;
- }
- break;
-
- case 0x6000:
- // Romanian decimal fractions
- if((decimal_count <= 4) && (word[n_digits] != '0'))
- {
- LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0);
- strcat(ph_out,buf1);
- n_digits += decimal_count;
- }
- break;
- }
- }
-
- while(isdigit(c = word[n_digits]) && (strlen(ph_out) < (N_WORD_PHONEMES - 10)))
- {
- value = word[n_digits++] - '0';
- LookupNum2(tr, value, 1, buf1);
- strcat(ph_out,buf1);
- }
-
- // something after the decimal part ?
- if(Lookup(tr, "_dpt2", buf1))
- strcat(ph_out,buf1);
-
- if((c == tr->langopts.decimal_sep) && isdigit(word[n_digits+1]))
- {
- Lookup(tr, "_dpt", buf1);
- strcat(ph_out,buf1);
- }
- else
- {
- decimal_point = 0;
- }
- }
- if((ph_out[0] != 0) && (ph_out[0] != phonSWITCH))
- {
- int next_char;
- char *p;
- p = &word[n_digits+1];
-
- p += utf8_in(&next_char,p);
- if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' '))
- utf8_in(&next_char,p);
-
- if(!iswalpha(next_char))
- strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc.
- }
-
- *flags |= FLAG_FOUND;
- prev_value = this_value;
- return(1);
-} // end of TranslateNumber_1
-
-
-
-int TranslateNumber(Translator *tr, char *word1, char *ph_out, unsigned int *flags, int wflags)
-{//============================================================================================
- if(option_sayas == SAYAS_DIGITS1)
- return(0); // speak digits individually
-
- if((tr->langopts.numbers & 0x3) == 1)
- return(TranslateNumber_1(tr, word1, ph_out, flags, wflags));
-
- return(0);
-} // end of TranslateNumber
-
diff --git a/navit/support/espeak/phoneme.h b/navit/support/espeak/phoneme.h
deleted file mode 100755
index 596f457ef..000000000
--- a/navit/support/espeak/phoneme.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-
-
-// phoneme types
-#define phPAUSE 0
-#define phSTRESS 1
-#define phVOWEL 2
-#define phLIQUID 3
-#define phSTOP 4
-#define phVSTOP 5
-#define phFRICATIVE 6
-#define phVFRICATIVE 7
-#define phNASAL 8
-#define phVIRTUAL 9
-#define phDELETED 14
-#define phINVALID 15
-
-
-// phoneme properties
-// bits 16-19 give place of articulation (not currently used)
-#define phWAVE 0x01
-#define phUNSTRESSED 0x02
-#define phFORTIS 0x08
-#define phVOICED 0x10
-#define phSIBILANT 0x20
-#define phNOLINK 0x40
-#define phTRILL 0x80
-#define phVOWEL2 0x100 // liquid that is considered a vowel
-#define phPALATAL 0x200
-#define phAPPENDPH 0x2000 // always insert another phoneme (link_out) after this one
-#define phBRKAFTER 0x4000 // [*] add a post-pause
-#define phBEFOREPAUSE 0x8000 // replace with the link_out phoneme if the next phoneme is a pause
-
-#define phALTERNATIVE 0x1c00 // bits 10,11,12 specifying use of alternative_ph
-#define phBEFOREVOWEL 0x0000
-#define phBEFOREVOWELPAUSE 0x0400
-#define phBEFORENOTVOWEL 0x0c00
-#define phBEFORENOTVOWEL2 0x1000
-#define phSWITCHVOICING 0x0800
-#define phBEFORE_R 0x1400
-
-#define phNONSYLLABIC 0x100000 // don't count this vowel as a syllable when finding the stress position
-#define phLONG 0x200000
-#define phLENGTHENSTOP 0x400000 // make the pre-pause slightly longer
-#define phRHOTIC 0x800000
-
-// fixed phoneme code numbers, these can be used from the program code
-#define phonCONTROL 1
-#define phonSTRESS_U 2
-#define phonSTRESS_D 3
-#define phonSTRESS_2 4
-#define phonSTRESS_3 5
-#define phonSTRESS_P 6
-#define phonSTRESS_P2 7 // priority stress within a word
-#define phonSTRESS_PREV 8
-#define phonPAUSE 9
-#define phonPAUSE_SHORT 10
-#define phonPAUSE_NOLINK 11
-#define phonLENGTHEN 12
-#define phonSCHWA 13
-#define phonSCHWA_SHORT 14
-#define phonEND_WORD 15
-#define phonSONORANT 16
-#define phonDEFAULTTONE 17
-#define phonCAPITAL 18
-#define phonGLOTTALSTOP 19
-#define phonSYLLABIC 20
-#define phonSWITCH 21
-#define phonX1 22 // a language specific action
-#define phonPAUSE_VSHORT 23
-#define phonPAUSE_LONG 24
-#define phonT_REDUCED 25
-#define phonSTRESS_TONIC 26
-#define phonPAUSE_CLAUSE 27
-
-extern const unsigned char pause_phonemes[8]; // 0, vshort, short, pause, long, glottalstop
-
-// place of articulation
-#define phPLACE 0xf0000
-#define phPLACE_pla 0x60000
-
-#define N_PHONEME_TABS 100 // number of phoneme tables
-#define N_PHONEME_TAB 256 // max phonemes in a phoneme table
-#define N_PHONEME_TAB_NAME 32 // must be multiple of 4
-
-// main table of phonemes, index by phoneme number (1-254)
-typedef struct {
- unsigned int mnemonic; // 1st char is in the l.s.byte
- unsigned int phflags; // bits 28-30 reduce_to level, bits 16-19 place of articulation
- // bits 10-11 alternative ph control
-
- unsigned short std_length; // for vowels, in mS; for phSTRESS, the stress/tone type
- unsigned short spect;
- unsigned short before;
- unsigned short after;
-
- unsigned char code; // the phoneme number
- unsigned char type; // phVOWEL, phPAUSE, phSTOP etc
- unsigned char start_type;
- unsigned char end_type;
-
- unsigned char length_mod; // a length_mod group number, used to access length_mod_tab
- unsigned char reduce_to; // change to this phoneme if unstressed
- unsigned char alternative_ph; // change to this phoneme if a vowel follows/doesn't follow
- unsigned char link_out; // insert linking phoneme if a vowel follows
-
-} PHONEME_TAB;
-
-
-// Several phoneme tables may be loaded into memory. phoneme_tab points to
-// one for the current voice
-extern int n_phoneme_tab;
-extern int current_phoneme_table;
-extern PHONEME_TAB *phoneme_tab[N_PHONEME_TAB];
-extern unsigned char phoneme_tab_flags[N_PHONEME_TAB]; // bit 0: not inherited
-
-typedef struct {
- char name[N_PHONEME_TAB_NAME];
- PHONEME_TAB *phoneme_tab_ptr;
- int n_phonemes;
- int includes; // also include the phonemes from this other phoneme table
-} PHONEME_TAB_LIST;
-
-
-
-// table of phonemes to be replaced with different phonemes, for the current voice
-#define N_REPLACE_PHONEMES 60
-typedef struct {
- unsigned char old_ph;
- unsigned char new_ph;
- char type; // 0=always replace, 1=only at end of word
-} REPLACE_PHONEMES;
-
-extern int n_replace_phonemes;
-extern REPLACE_PHONEMES replace_phonemes[N_REPLACE_PHONEMES];
-
-
-#define PH(c1,c2) (c2<<8)+c1 // combine two characters into an integer for phoneme name
-#define PH3(c1,c2,c3) (c3<<16)+(c2<<8)+c1
-#define PhonemeCode2(c1,c2) PhonemeCode((c2<<8)+c1)
-int LookupPhonemeString(const char *string);
-int PhonemeCode(unsigned int mnem);
-
-char *EncodePhonemes(char *p, char *outptr, unsigned char *bad_phoneme);
-void DecodePhonemes(const char *inptr, char *outptr);
-
-extern const char *WordToString(unsigned int word);
-
-extern PHONEME_TAB_LIST phoneme_tab_list[N_PHONEME_TABS];
-extern int phoneme_tab_number;
diff --git a/navit/support/espeak/phonemelist.c b/navit/support/espeak/phonemelist.c
deleted file mode 100755
index d663e2e94..000000000
--- a/navit/support/espeak/phonemelist.c
+++ /dev/null
@@ -1,686 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "translate.h"
-
-
-const unsigned char pause_phonemes[8] = {0, phonPAUSE_VSHORT, phonPAUSE_SHORT, phonPAUSE, phonPAUSE_LONG, phonGLOTTALSTOP, phonPAUSE_LONG, phonPAUSE_LONG};
-
-
-extern int n_ph_list2;
-extern PHONEME_LIST2 ph_list2[N_PHONEME_LIST]; // first stage of text->phonemes
-
-
-
-static int ChangePhonemes(Translator *tr, PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch)
-{//=================================================================================================================
-// Called for each phoneme in the phoneme list, to allow a language to make changes
-// ph The current phoneme
-
- if(tr->translator_name == L('r','u'))
- return(ChangePhonemes_ru(tr, phlist, n_ph, index, ph, ch));
-
- return(0);
-}
-
-
-static int SubstitutePhonemes(Translator *tr, PHONEME_LIST2 *plist_out)
-{//====================================================================
-// Copy the phonemes list and perform any substitutions that are required for the
-// current voice
- int ix;
- int k;
- int replace_flags;
- int n_plist_out = 0;
- int word_end;
- int max_stress = -1;
- int switched_language = 0;
- int max_stress_posn=0;
- int n_syllables = 0;
- int syllable = 0;
- int syllable_stressed = 0;
- PHONEME_LIST2 *plist2;
- PHONEME_LIST2 *pl;
- PHONEME_TAB *next=NULL;
-
- for(ix=0; (ix < n_ph_list2) && (n_plist_out < N_PHONEME_LIST); ix++)
- {
- plist2 = &ph_list2[ix];
-
- if(plist2->phcode == phonSWITCH)
- switched_language ^= 1;
-
- // don't do any substitution if the language has been temporarily changed
- if(switched_language == 0)
- {
- if(ix < (n_ph_list2 -1))
- next = phoneme_tab[ph_list2[ix+1].phcode];
-
- word_end = 0;
- if((plist2+1)->sourceix || ((next != 0) && (next->type == phPAUSE)))
- word_end = 1; // this phoneme is the end of a word
-
- if(tr->langopts.phoneme_change != 0)
- {
- // this language does changes to phonemes after translation
- int flags;
- CHANGEPH ch;
- if(plist2->sourceix)
- {
- // start of a word, find the stressed vowel
- syllable = 0;
- syllable_stressed = 0;
- n_syllables = 0;
-
- max_stress = -1;
- max_stress_posn = ix;
- for(k=ix; k < n_ph_list2; k++)
- {
- if(((pl = &ph_list2[k])->sourceix != 0) && (k > ix))
- break;
-
- pl->stress &= 0xf;
-
- if(phoneme_tab[pl->phcode]->type == phVOWEL)
- {
- n_syllables++;
-
- if(pl->stress > max_stress)
- {
- syllable_stressed = n_syllables;
- max_stress = pl->stress;
- max_stress_posn = k;
- }
- }
- }
- }
-
- if(phoneme_tab[plist2->phcode]->type == phVOWEL)
- {
- syllable++;
- }
-
- // make any language specific changes
- flags = 0;
- if(ix == max_stress_posn)
- flags |= 2;
- if(ix > max_stress_posn)
- flags |= 4;
- if(ph_list2[ix].synthflags & SFLAG_DICTIONARY)
- flags |= 8;
- ch.flags = flags | word_end;
-
- ch.stress = plist2->stress;
- ch.stress_highest = max_stress;
- ch.n_vowels = n_syllables;
- ch.vowel_this = syllable;
- ch.vowel_stressed = syllable_stressed;
-
- ChangePhonemes(tr, ph_list2, n_ph_list2, ix, phoneme_tab[ph_list2[ix].phcode], &ch);
- }
-
- // check whether a Voice has specified that we should replace this phoneme
- for(k=0; k<n_replace_phonemes; k++)
- {
- if(plist2->phcode == replace_phonemes[k].old_ph)
- {
- replace_flags = replace_phonemes[k].type;
-
- if((replace_flags & 1) && (word_end == 0))
- continue; // this replacement only occurs at the end of a word
-
- if((replace_flags & 2) && ((plist2->stress & 0x7) > 3))
- continue; // this replacement doesn't occur in stressed syllables
-
- // substitute the replacement phoneme
- plist2->phcode = replace_phonemes[k].new_ph;
- if((plist2->stress > 1) && (phoneme_tab[plist2->phcode]->phflags & phUNSTRESSED))
- plist2->stress = 0; // the replacement must be unstressed
- break;
- }
- }
-
- if(plist2->phcode == 0)
- {
- continue; // phoneme has been replaced by NULL, so don't copy it
- }
- }
-
- // copy phoneme into the output list
- memcpy(&plist_out[n_plist_out++],plist2,sizeof(PHONEME_LIST2));
- }
- return(n_plist_out);
-} // end of SubstitutePhonemes
-
-
-
-void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
-{//=====================================================================
-
- int ix=0;
- int j;
- int insert_ph = 0;
- PHONEME_LIST *phlist;
- PHONEME_TAB *ph;
- PHONEME_TAB *prev, *next, *next2;
- int unstress_count = 0;
- int word_stress = 0;
- int switched_language = 0;
- int max_stress;
- int voicing;
- int regression;
- int end_sourceix;
- int alternative;
- int first_vowel=0; // first vowel in a word
- PHONEME_LIST2 ph_list3[N_PHONEME_LIST];
-
- static PHONEME_LIST2 ph_list2_null = {0,0,0,0,0};
- PHONEME_LIST2 *plist2 = &ph_list2_null;
- PHONEME_LIST2 *plist2_inserted = NULL;
-
- plist2 = ph_list2;
- phlist = phoneme_list;
- end_sourceix = plist2[n_ph_list2-1].sourceix;
-
- // is the last word of the clause unstressed ?
- max_stress = 0;
- for(j = n_ph_list2-3; j>=0; j--)
- {
- // start with the last phoneme (before the terminating pauses) and move forwards
- if((plist2[j].stress & 0x7f) > max_stress)
- max_stress = plist2[j].stress & 0x7f;
- if(plist2[j].sourceix != 0)
- break;
- }
- if(max_stress < 4)
- {
- // the last word is unstressed, look for a previous word that can be stressed
- while(--j >= 0)
- {
- if(plist2[j].synthflags & SFLAG_PROMOTE_STRESS) // dictionary flags indicated that this stress can be promoted
- {
- plist2[j].stress = 4; // promote to stressed
- break;
- }
- if(plist2[j].stress >= 4)
- {
- // found a stressed syllable, so stop looking
- break;
- }
- }
- }
-
- if((regression = tr->langopts.param[LOPT_REGRESSIVE_VOICING]) != 0)
- {
- // set consonant clusters to all voiced or all unvoiced
- // Regressive
- int type;
- voicing = 0;
-
- for(j=n_ph_list2-1; j>=0; j--)
- {
- ph = phoneme_tab[plist2[j].phcode];
- if(ph == NULL)
- continue;
-
- if(ph->code == phonSWITCH)
- switched_language ^= 1;
- if(switched_language)
- continue;
-
- type = ph->type;
-
- if(regression & 0x2)
- {
- // LANG=Russian, [v] amd [v;] don't cause regression, or [R^]
- if((ph->mnemonic == 'v') || (ph->mnemonic == ((';'<<8)+'v')) || ((ph->mnemonic & 0xff)== 'R'))
- type = phLIQUID;
- }
-
- if((type==phSTOP) || type==(phFRICATIVE))
- {
- if(voicing==0)
- {
- voicing = 1;
- }
- else
- if((voicing==2) && ((ph->phflags & phALTERNATIVE)==phSWITCHVOICING))
- {
- plist2[j].phcode = ph->alternative_ph; // change to voiced equivalent
- }
- }
- else
- if((type==phVSTOP) || type==(phVFRICATIVE))
- {
- if(voicing==0)
- {
- voicing = 2;
- }
- else
- if((voicing==1) && ((ph->phflags & phALTERNATIVE)==phSWITCHVOICING))
- {
- plist2[j].phcode = ph->alternative_ph; // change to unvoiced equivalent
- }
- }
- else
- {
- if(regression & 0x8)
- {
- // LANG=Polish, propagate through liquids and nasals
- if((type == phPAUSE) || (type == phVOWEL))
- voicing = 0;
- }
- else
- {
- voicing = 0;
- }
- }
- if((regression & 0x4) && (plist2[j].sourceix))
- {
- // stop propagation at a word boundary
- voicing = 0;
- }
- }
- }
-
- n_ph_list2 = SubstitutePhonemes(tr,ph_list3) - 2;
-
- // transfer all the phonemes of the clause into phoneme_list
- ph = phoneme_tab[phonPAUSE];
- switched_language = 0;
-
- for(j=0; insert_ph || ((j < n_ph_list2) && (ix < N_PHONEME_LIST-3)); j++)
- {
- prev = ph;
-
- plist2 = &ph_list3[j];
-
- if(insert_ph != 0)
- {
- // we have a (linking) phoneme which we need to insert here
- next = phoneme_tab[plist2->phcode]; // this phoneme, i.e. after the insert
-
- // re-use the previous entry for the inserted phoneme.
- // That's OK because we don't look backwards from plist2
- j--;
- plist2 = plist2_inserted = &ph_list3[j];
- memset(plist2, 0, sizeof(*plist2));
- plist2->phcode = insert_ph;
- ph = phoneme_tab[insert_ph];
- insert_ph = 0;
- }
- else
- {
- // otherwise get the next phoneme from the list
- ph = phoneme_tab[plist2->phcode];
-
- if(plist2->phcode == phonSWITCH)
- {
- // change phoneme table
- SelectPhonemeTable(plist2->tone_number);
- switched_language ^= SFLAG_SWITCHED_LANG;
- }
- next = phoneme_tab[(plist2+1)->phcode]; // the phoneme after this one
- }
-
- if(plist2->sourceix)
- {
- // start of a word
- int k;
- word_stress = 0;
- first_vowel = 1;
-
- // find the highest stress level in this word
- for(k=j+1; k < n_ph_list2; k++)
- {
- if(ph_list3[k].sourceix)
- break; // start of the next word
-
- if(ph_list3[k].stress > word_stress)
- word_stress = ph_list3[k].stress;
- }
- }
-
- if(ph == NULL) continue;
-
- if(ph->type == phVOWEL)
- {
- // check for consecutive unstressed syllables
- if(plist2->stress == 0)
- {
- // an unstressed vowel
- unstress_count++;
- if((unstress_count > 1) && ((unstress_count & 1)==0))
- {
- // in a sequence of unstressed syllables, reduce alternate syllables to 'diminished'
- // stress. But not for the last phoneme of a stressed word
- if((tr->langopts.stress_flags & 0x2) || ((word_stress > 3) && ((plist2+1)->sourceix!=0)))
- {
- // An unstressed final vowel of a stressed word
- unstress_count=1; // try again for next syllable
- }
- else
- {
- plist2->stress = 1; // change stress to 'diminished'
- }
- }
- }
- else
- {
- unstress_count = 0;
- }
- }
-
- alternative = 0;
-
- if(ph->alternative_ph > 0)
- {
- switch(ph->phflags & phALTERNATIVE)
- {
- // This phoneme changes if vowel follows, or doesn't follow, depending on its phNOTFOLLOWS flag
- case phBEFORENOTVOWEL:
- if(next->type != phVOWEL)
- alternative = ph->alternative_ph;
- break;
-
- case phBEFORENOTVOWEL2: // LANG=tr
- if(((plist2+1)->sourceix != 0) ||
- ((next->type != phVOWEL) && ((phoneme_tab[(plist2+2)->phcode]->type != phVOWEL) || ((plist2+2)->sourceix != 0))))
- {
- alternative = ph->alternative_ph;
- }
- break;
-
- case phBEFOREVOWELPAUSE:
- if((next->type == phVOWEL) || (next->type == phPAUSE))
- alternative = ph->alternative_ph;
- break;
-
- case phBEFOREVOWEL:
- if(next->type == phVOWEL)
- alternative = ph->alternative_ph;
- break;
-
- case phBEFORE_R:
- if(next->phflags & phRHOTIC)
- {
- alternative = ph->alternative_ph;
- }
- break;
- }
- }
- if(ph->phflags & phBEFOREPAUSE)
- {
- if(next->type == phPAUSE)
- alternative = ph->link_out; // replace with the link_out phoneme
- }
-
- if(alternative == 1)
- continue; // NULL phoneme, discard
-
- if(alternative > 1)
- {
- PHONEME_TAB *ph2;
- ph2 = ph;
- ph = phoneme_tab[alternative];
-
- if(ph->type == phVOWEL)
- {
- plist2->synthflags |= SFLAG_SYLLABLE;
- if(ph2->type != phVOWEL)
- plist2->stress = 0; // change from non-vowel to vowel, make sure it's unstressed
- }
- else
- plist2->synthflags &= ~SFLAG_SYLLABLE;
- }
-
- if(tr->langopts.param[LOPT_REDUCE_T])
- {
- if((ph->mnemonic == 't') && (plist2->sourceix == 0) && ((prev->type == phVOWEL) || (prev->mnemonic == 'n')))
- {
- if(((plist2+1)->sourceix == 0) && ((plist2+1)->stress < 3) && (next->type == phVOWEL))
- {
- ph = phoneme_tab[phonT_REDUCED];
- }
- }
- }
-
-
- while((ph->reduce_to != 0) && (!(plist2->synthflags & SFLAG_DICTIONARY) || (tr->langopts.param[LOPT_REDUCE] & 1)))
- {
- int reduce_level;
- int stress_level;
- int reduce = 0;
-
- reduce_level = (ph->phflags >> 28) & 7;
-
- if(ph->type == phVOWEL)
- {
- stress_level = plist2->stress;
- }
- else
- {
- // consonant, get stress from the following vowel
- if(next->type == phVOWEL)
- stress_level = (plist2+1)->stress;
- else
- break;
- }
-
- if((stress_level == 1) && (first_vowel))
- stress_level = 0; // ignore 'dimished' stress on first syllable
-
- if(stress_level == 1)
- reduce = 1; // stress = 'reduced'
-
- if(stress_level < reduce_level)
- reduce =1;
-
- if((word_stress < 4) && (tr->langopts.param[LOPT_REDUCE] & 0x2) && (stress_level >= word_stress))
- {
- // don't reduce the most stressed syllable in an unstressed word
- reduce = 0;
- }
-
- if(reduce)
- ph = phoneme_tab[ph->reduce_to];
- else
- break;
- }
-
- if(ph->type == phVOWEL)
- first_vowel = 0;
-
- if((plist2+1)->synthflags & SFLAG_LENGTHEN)
- {
- static char types_double[] = {phFRICATIVE,phVFRICATIVE,phNASAL,phLIQUID,0};
- if(strchr(types_double,next->type))
- {
- // lengthen this consonant by doubling it
- insert_ph = next->code;
- (plist2+1)->synthflags ^= SFLAG_LENGTHEN;
- }
- }
-
- if((plist2+1)->sourceix != 0)
- {
- int x;
-
- if(tr->langopts.vowel_pause && (ph->type != phPAUSE))
- {
-
- if((ph->type != phVOWEL) && (tr->langopts.vowel_pause & 0x200))
- {
- // add a pause after a word which ends in a consonant
- insert_ph = phonPAUSE_NOLINK;
- }
-
- if(next->type == phVOWEL)
- {
- if((x = tr->langopts.vowel_pause & 0x0c) != 0)
- {
- // break before a word which starts with a vowel
- if(x == 0xc)
- insert_ph = phonPAUSE_NOLINK;
- else
- insert_ph = phonPAUSE_VSHORT;
- }
-
- if((ph->type == phVOWEL) && ((x = tr->langopts.vowel_pause & 0x03) != 0))
- {
- // adjacent vowels over a word boundary
- if(x == 2)
- insert_ph = phonPAUSE_SHORT;
- else
- insert_ph = phonPAUSE_VSHORT;
- }
-
- if(((plist2+1)->stress >= 4) && (tr->langopts.vowel_pause & 0x100))
- {
- // pause before a words which starts with a stressed vowel
- insert_ph = phonPAUSE_SHORT;
- }
- }
- }
-
- if(plist2 != plist2_inserted)
- {
- if((x = (tr->langopts.word_gap & 0x7)) != 0)
- {
- if((x > 1) || ((insert_ph != phonPAUSE_SHORT) && (insert_ph != phonPAUSE_NOLINK)))
- {
- // don't reduce the pause
- insert_ph = pause_phonemes[x];
- }
- }
- if(option_wordgap > 0)
- {
- insert_ph = phonPAUSE_LONG;
- }
- }
- }
-
- next2 = phoneme_tab[(plist2+2)->phcode];
-
- if((insert_ph == 0) && (ph->link_out != 0) && !(ph->phflags & phBEFOREPAUSE) && (((plist2+1)->synthflags & SFLAG_EMBEDDED)==0))
- {
- if(ph->phflags & phAPPENDPH)
- {
- // always append the specified phoneme, unless it already is the next phoneme
- if((ph->link_out != (plist2+1)->phcode) && (next->type == phVOWEL))
-// if(ph->link_out != (plist2+1)->phcode)
- {
- insert_ph = ph->link_out;
- }
- }
- else
- if(((tr->langopts.word_gap & 8)==0) || ((plist2+1)->sourceix == 0))
- {
- // This phoneme can be linked to a following vowel by inserting a linking phoneme
- if(next->type == phVOWEL)
- insert_ph = ph->link_out;
- else
- if(next->code == phonPAUSE_SHORT)
- {
- // Pause followed by Vowel, replace the Short Pause with the linking phoneme,
- if(next2->type == phVOWEL)
- (plist2+1)->phcode = ph->link_out; // replace pause by linking phoneme
- }
- }
- }
-
- if(ph->phflags & phVOICED)
- {
- // check that a voiced consonant is preceded or followed by a vowel or liquid
- // and if not, add a short schwa
-
- // not yet implemented
- }
-
- phlist[ix].ph = ph;
- phlist[ix].type = ph->type;
- phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module
- phlist[ix].synthflags = plist2->synthflags | switched_language;
- phlist[ix].stresslevel = plist2->stress & 0xf;
- phlist[ix].tone_ph = plist2->tone_number;
- phlist[ix].sourceix = 0;
-
- if(plist2->sourceix != 0)
- {
- phlist[ix].sourceix = plist2->sourceix;
- phlist[ix].newword = 1; // this phoneme is the start of a word
-
- if(start_sentence)
- {
- phlist[ix].newword = 5; // start of sentence + start of word
- start_sentence = 0;
- }
- }
- else
- {
- phlist[ix].newword = 0;
- }
-
- phlist[ix].length = ph->std_length;
- if((ph->code == phonPAUSE_LONG) && (option_wordgap > 0))
- {
- phlist[ix].ph = phoneme_tab[phonPAUSE_SHORT];
- phlist[ix].length = option_wordgap*14; // 10mS per unit at the default speed
- }
-
- if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE)
- {
- phlist[ix].length = 128; // length_mod
- phlist[ix].env = PITCHfall;
- }
-
- phlist[ix].prepause = 0;
- phlist[ix].amp = 20; // default, will be changed later
- phlist[ix].pitch1 = 0x400;
- phlist[ix].pitch2 = 0x400;
- ix++;
- }
- phlist[ix].newword = 2; // end of clause
-
- phlist[ix].type = phPAUSE; // terminate with 2 Pause phonemes
- phlist[ix].length = post_pause; // length of the pause, depends on the punctuation
- phlist[ix].sourceix = end_sourceix;
- phlist[ix].synthflags = 0;
-
- phlist[ix++].ph = phoneme_tab[phonPAUSE];
- phlist[ix].type = phPAUSE;
- phlist[ix].length = 0;
- phlist[ix].sourceix=0;
- phlist[ix].synthflags = 0;
- phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT];
-
- n_phoneme_list = ix;
-} // end of MakePhonemeList
-
-
diff --git a/navit/support/espeak/portaudio.h b/navit/support/espeak/portaudio.h
deleted file mode 100755
index 2ab8e02a4..000000000
--- a/navit/support/espeak/portaudio.h
+++ /dev/null
@@ -1,466 +0,0 @@
-// NOTE: Copy this file to portaudio.h in order to compile with V18 portaudio
-
-
-#ifndef PORT_AUDIO_H
-#define PORT_AUDIO_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/*
- * $Id: portaudio.h,v 1.5 2002/03/26 18:04:22 philburk Exp $
- * PortAudio Portable Real-Time Audio Library
- * PortAudio API Header File
- * Latest version available at: http://www.audiomulch.com/portaudio/
- *
- * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-typedef int PaError;
-typedef enum {
- paNoError = 0,
-
- paHostError = -10000,
- paInvalidChannelCount,
- paInvalidSampleRate,
- paInvalidDeviceId,
- paInvalidFlag,
- paSampleFormatNotSupported,
- paBadIODeviceCombination,
- paInsufficientMemory,
- paBufferTooBig,
- paBufferTooSmall,
- paNullCallback,
- paBadStreamPtr,
- paTimedOut,
- paInternalError,
- paDeviceUnavailable
-} PaErrorNum;
-
-/*
- Pa_Initialize() is the library initialisation function - call this before
- using the library.
-
-*/
-
-PaError Pa_Initialize( void );
-
-/*
- Pa_Terminate() is the library termination function - call this after
- using the library.
-
-*/
-
-PaError Pa_Terminate( void );
-
-/*
- Pa_GetHostError() returns a host specific error code.
- This can be called after receiving a PortAudio error code of paHostError.
-
-*/
-
-long Pa_GetHostError( void );
-
-/*
- Pa_GetErrorText() translates the supplied PortAudio error number
- into a human readable message.
-
-*/
-
-const char *Pa_GetErrorText( PaError errnum );
-
-/*
- Sample formats
-
- These are formats used to pass sound data between the callback and the
- stream. Each device has a "native" format which may be used when optimum
- efficiency or control over conversion is required.
-
- Formats marked "always available" are supported (emulated) by all
- PortAudio implementations.
-
- The floating point representation (paFloat32) uses +1.0 and -1.0 as the
- maximum and minimum respectively.
-
- paUInt8 is an unsigned 8 bit format where 128 is considered "ground"
-
-*/
-
-typedef unsigned long PaSampleFormat;
-#define paFloat32 ((PaSampleFormat) (1<<0)) /*always available*/
-#define paInt16 ((PaSampleFormat) (1<<1)) /*always available*/
-#define paInt32 ((PaSampleFormat) (1<<2)) /*always available*/
-#define paInt24 ((PaSampleFormat) (1<<3))
-#define paPackedInt24 ((PaSampleFormat) (1<<4))
-#define paInt8 ((PaSampleFormat) (1<<5))
-#define paUInt8 ((PaSampleFormat) (1<<6))
-#define paCustomFormat ((PaSampleFormat) (1<<16))
-
-/*
- Device enumeration mechanism.
-
- Device ids range from 0 to Pa_CountDevices()-1.
-
- Devices may support input, output or both.
-
-*/
-
-typedef int PaDeviceID;
-#define paNoDevice -1
-
-int Pa_CountDevices( void );
-
-typedef struct
-{
- int structVersion;
- const char *name;
- int maxInputChannels;
- int maxOutputChannels;
- /* Number of discrete rates, or -1 if range supported. */
- int numSampleRates;
- /* Array of supported sample rates, or {min,max} if range supported. */
- const double *sampleRates;
- PaSampleFormat nativeSampleFormats;
-}
-PaDeviceInfo;
-
-/*
- Pa_GetDefaultInputDeviceID(), Pa_GetDefaultOutputDeviceID() return the
- default device ids for input and output respectively, or paNoDevice if
- no device is available.
- The result can be passed to Pa_OpenStream().
-
- On the PC, the user can specify a default device by
- setting an environment variable. For example, to use device #1.
-
- set PA_RECOMMENDED_OUTPUT_DEVICE=1
-
- The user should first determine the available device ids by using
- the supplied application "pa_devs".
-
-*/
-
-PaDeviceID Pa_GetDefaultInputDeviceID( void );
-PaDeviceID Pa_GetDefaultOutputDeviceID( void );
-
-
-
-/*
- Pa_GetDeviceInfo() returns a pointer to an immutable PaDeviceInfo structure
- for the device specified.
- If the device parameter is out of range the function returns NULL.
-
- PortAudio manages the memory referenced by the returned pointer, the client
- must not manipulate or free the memory. The pointer is only guaranteed to be
- valid between calls to Pa_Initialize() and Pa_Terminate().
-
-*/
-
-const PaDeviceInfo* Pa_GetDeviceInfo( PaDeviceID device );
-
-/*
- PaTimestamp is used to represent a continuous sample clock with arbitrary
- start time that can be used for syncronization. The type is used for the
- outTime argument to the PortAudioCallback and as the result of Pa_StreamTime()
-
-*/
-
-typedef double PaTimestamp;
-
-/*
- PortAudioCallback is implemented by PortAudio clients.
-
- inputBuffer and outputBuffer are arrays of interleaved samples,
- the format, packing and number of channels used by the buffers are
- determined by parameters to Pa_OpenStream() (see below).
-
- framesPerBuffer is the number of sample frames to be processed by the callback.
-
- outTime is the time in samples when the buffer(s) processed by
- this callback will begin being played at the audio output.
- See also Pa_StreamTime()
-
- userData is the value of a user supplied pointer passed to Pa_OpenStream()
- intended for storing synthesis data etc.
-
- return value:
- The callback can return a non-zero value to stop the stream. This may be
- useful in applications such as soundfile players where a specific duration
- of output is required. However, it is not necessary to utilise this mechanism
- as StopStream() will also terminate the stream. A callback returning a
- non-zero value must fill the entire outputBuffer.
-
- NOTE: None of the other stream functions may be called from within the
- callback function except for Pa_GetCPULoad().
-
-*/
-
-typedef int (PortAudioCallback)(
- void *inputBuffer, void *outputBuffer,
- unsigned long framesPerBuffer,
- PaTimestamp outTime, void *userData );
-
-
-/*
- Stream flags
-
- These flags may be supplied (ored together) in the streamFlags argument to
- the Pa_OpenStream() function.
-
-*/
-
-#define paNoFlag (0)
-#define paClipOff (1<<0) /* disable default clipping of out of range samples */
-#define paDitherOff (1<<1) /* disable default dithering */
-#define paPlatformSpecificFlags (0x00010000)
-typedef unsigned long PaStreamFlags;
-
-/*
- A single PortAudioStream provides multiple channels of real-time
- input and output audio streaming to a client application.
- Pointers to PortAudioStream objects are passed between PortAudio functions.
-*/
-
-typedef void PortAudioStream;
-#define PaStream PortAudioStream
-
-/*
- Pa_OpenStream() opens a stream for either input, output or both.
-
- stream is the address of a PortAudioStream pointer which will receive
- a pointer to the newly opened stream.
-
- inputDevice is the id of the device used for input (see PaDeviceID above.)
- inputDevice may be paNoDevice to indicate that an input device is not required.
-
- numInputChannels is the number of channels of sound to be delivered to the
- callback. It can range from 1 to the value of maxInputChannels in the
- PaDeviceInfo record for the device specified by the inputDevice parameter.
- If inputDevice is paNoDevice numInputChannels is ignored.
-
- inputSampleFormat is the sample format of inputBuffer provided to the callback
- function. inputSampleFormat may be any of the formats described by the
- PaSampleFormat enumeration (see above). PortAudio guarantees support for
- the device's native formats (nativeSampleFormats in the device info record)
- and additionally 16 and 32 bit integer and 32 bit floating point formats.
- Support for other formats is implementation defined.
-
- inputDriverInfo is a pointer to an optional driver specific data structure
- containing additional information for device setup or stream processing.
- inputDriverInfo is never required for correct operation. If not used
- inputDriverInfo should be NULL.
-
- outputDevice is the id of the device used for output (see PaDeviceID above.)
- outputDevice may be paNoDevice to indicate that an output device is not required.
-
- numOutputChannels is the number of channels of sound to be supplied by the
- callback. See the definition of numInputChannels above for more details.
-
- outputSampleFormat is the sample format of the outputBuffer filled by the
- callback function. See the definition of inputSampleFormat above for more
- details.
-
- outputDriverInfo is a pointer to an optional driver specific data structure
- containing additional information for device setup or stream processing.
- outputDriverInfo is never required for correct operation. If not used
- outputDriverInfo should be NULL.
-
- sampleRate is the desired sampleRate. For full-duplex streams it is the
- sample rate for both input and output
-
- framesPerBuffer is the length in sample frames of all internal sample buffers
- used for communication with platform specific audio routines. Wherever
- possible this corresponds to the framesPerBuffer parameter passed to the
- callback function.
-
- numberOfBuffers is the number of buffers used for multibuffered communication
- with the platform specific audio routines. If you pass zero, then an optimum
- value will be chosen for you internally. This parameter is provided only
- as a guide - and does not imply that an implementation must use multibuffered
- i/o when reliable double buffering is available (such as SndPlayDoubleBuffer()
- on the Macintosh.)
-
- streamFlags may contain a combination of flags ORed together.
- These flags modify the behaviour of the streaming process. Some flags may only
- be relevant to certain buffer formats.
-
- callback is a pointer to a client supplied function that is responsible
- for processing and filling input and output buffers (see above for details.)
-
- userData is a client supplied pointer which is passed to the callback
- function. It could for example, contain a pointer to instance data necessary
- for processing the audio buffers.
-
- return value:
- Upon success Pa_OpenStream() returns PaNoError and places a pointer to a
- valid PortAudioStream in the stream argument. The stream is inactive (stopped).
- If a call to Pa_OpenStream() fails a non-zero error code is returned (see
- PaError above) and the value of stream is invalid.
-
-*/
-
-PaError Pa_OpenStream( PortAudioStream** stream,
- PaDeviceID inputDevice,
- int numInputChannels,
- PaSampleFormat inputSampleFormat,
- void *inputDriverInfo,
- PaDeviceID outputDevice,
- int numOutputChannels,
- PaSampleFormat outputSampleFormat,
- void *outputDriverInfo,
- double sampleRate,
- unsigned long framesPerBuffer,
- unsigned long numberOfBuffers,
- PaStreamFlags streamFlags,
- PortAudioCallback *callback,
- void *userData );
-
-
-/*
- Pa_OpenDefaultStream() is a simplified version of Pa_OpenStream() that opens
- the default input and/or output devices. Most parameters have identical meaning
- to their Pa_OpenStream() counterparts, with the following exceptions:
-
- If either numInputChannels or numOutputChannels is 0 the respective device
- is not opened. This has the same effect as passing paNoDevice in the device
- arguments to Pa_OpenStream().
-
- sampleFormat applies to both the input and output buffers.
-
-*/
-
-PaError Pa_OpenDefaultStream( PortAudioStream** stream,
- int numInputChannels,
- int numOutputChannels,
- PaSampleFormat sampleFormat,
- double sampleRate,
- unsigned long framesPerBuffer,
- unsigned long numberOfBuffers,
- PortAudioCallback *callback,
- void *userData );
-
-/*
- Pa_CloseStream() closes an audio stream, flushing any pending buffers.
-
-*/
-
-PaError Pa_CloseStream( PortAudioStream* );
-
-/*
- Pa_StartStream() and Pa_StopStream() begin and terminate audio processing.
- Pa_StopStream() waits until all pending audio buffers have been played.
- Pa_AbortStream() stops playing immediately without waiting for pending
- buffers to complete.
-
-*/
-
-PaError Pa_StartStream( PortAudioStream *stream );
-
-PaError Pa_StopStream( PortAudioStream *stream );
-
-PaError Pa_AbortStream( PortAudioStream *stream );
-
-/*
- Pa_StreamActive() returns one (1) when the stream is active (ie playing
- or recording audio), zero (0) when not playing, or a negative error number
- if the stream is invalid.
- The stream is active between calls to Pa_StartStream() and Pa_StopStream(),
- but may also become inactive if the callback returns a non-zero value.
- In the latter case, the stream is considered inactive after the last
- buffer has finished playing.
-
-*/
-
-PaError Pa_StreamActive( PortAudioStream *stream );
-
-/*
- Pa_StreamTime() returns the current output time in samples for the stream.
- This time may be used as a time reference (for example synchronizing audio to
- MIDI).
-
-*/
-
-PaTimestamp Pa_StreamTime( PortAudioStream *stream );
-
-/*
- Pa_GetCPULoad() returns the CPU Load for the stream.
- The "CPU Load" is a fraction of total CPU time consumed by the stream's
- audio processing routines including, but not limited to the client supplied
- callback.
- A value of 0.5 would imply that PortAudio and the sound generating
- callback was consuming roughly 50% of the available CPU time.
- This function may be called from the callback function or the application.
-
-*/
-
-double Pa_GetCPULoad( PortAudioStream* stream );
-
-/*
- Pa_GetMinNumBuffers() returns the minimum number of buffers required by
- the current host based on minimum latency.
- On the PC, for the DirectSound implementation, latency can be optionally set
- by user by setting an environment variable.
- For example, to set latency to 200 msec, put:
-
- set PA_MIN_LATENCY_MSEC=200
-
- in the AUTOEXEC.BAT file and reboot.
- If the environment variable is not set, then the latency will be determined
- based on the OS. Windows NT has higher latency than Win95.
-
-*/
-
-int Pa_GetMinNumBuffers( int framesPerBuffer, double sampleRate );
-
-/*
- Pa_Sleep() puts the caller to sleep for at least 'msec' milliseconds.
- You may sleep longer than the requested time so don't rely on this for
- accurate musical timing.
-
- Pa_Sleep() is provided as a convenience for authors of portable code (such as
- the tests and examples in the PortAudio distribution.)
-
-*/
-
-void Pa_Sleep( long msec );
-
-/*
- Pa_GetSampleSize() returns the size in bytes of a single sample in the
- supplied PaSampleFormat, or paSampleFormatNotSupported if the format is
- no supported.
-
-*/
-
-PaError Pa_GetSampleSize( PaSampleFormat format );
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PORT_AUDIO_H */
diff --git a/navit/support/espeak/portaudio18.h b/navit/support/espeak/portaudio18.h
deleted file mode 100755
index 2ab8e02a4..000000000
--- a/navit/support/espeak/portaudio18.h
+++ /dev/null
@@ -1,466 +0,0 @@
-// NOTE: Copy this file to portaudio.h in order to compile with V18 portaudio
-
-
-#ifndef PORT_AUDIO_H
-#define PORT_AUDIO_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/*
- * $Id: portaudio.h,v 1.5 2002/03/26 18:04:22 philburk Exp $
- * PortAudio Portable Real-Time Audio Library
- * PortAudio API Header File
- * Latest version available at: http://www.audiomulch.com/portaudio/
- *
- * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- */
-
-typedef int PaError;
-typedef enum {
- paNoError = 0,
-
- paHostError = -10000,
- paInvalidChannelCount,
- paInvalidSampleRate,
- paInvalidDeviceId,
- paInvalidFlag,
- paSampleFormatNotSupported,
- paBadIODeviceCombination,
- paInsufficientMemory,
- paBufferTooBig,
- paBufferTooSmall,
- paNullCallback,
- paBadStreamPtr,
- paTimedOut,
- paInternalError,
- paDeviceUnavailable
-} PaErrorNum;
-
-/*
- Pa_Initialize() is the library initialisation function - call this before
- using the library.
-
-*/
-
-PaError Pa_Initialize( void );
-
-/*
- Pa_Terminate() is the library termination function - call this after
- using the library.
-
-*/
-
-PaError Pa_Terminate( void );
-
-/*
- Pa_GetHostError() returns a host specific error code.
- This can be called after receiving a PortAudio error code of paHostError.
-
-*/
-
-long Pa_GetHostError( void );
-
-/*
- Pa_GetErrorText() translates the supplied PortAudio error number
- into a human readable message.
-
-*/
-
-const char *Pa_GetErrorText( PaError errnum );
-
-/*
- Sample formats
-
- These are formats used to pass sound data between the callback and the
- stream. Each device has a "native" format which may be used when optimum
- efficiency or control over conversion is required.
-
- Formats marked "always available" are supported (emulated) by all
- PortAudio implementations.
-
- The floating point representation (paFloat32) uses +1.0 and -1.0 as the
- maximum and minimum respectively.
-
- paUInt8 is an unsigned 8 bit format where 128 is considered "ground"
-
-*/
-
-typedef unsigned long PaSampleFormat;
-#define paFloat32 ((PaSampleFormat) (1<<0)) /*always available*/
-#define paInt16 ((PaSampleFormat) (1<<1)) /*always available*/
-#define paInt32 ((PaSampleFormat) (1<<2)) /*always available*/
-#define paInt24 ((PaSampleFormat) (1<<3))
-#define paPackedInt24 ((PaSampleFormat) (1<<4))
-#define paInt8 ((PaSampleFormat) (1<<5))
-#define paUInt8 ((PaSampleFormat) (1<<6))
-#define paCustomFormat ((PaSampleFormat) (1<<16))
-
-/*
- Device enumeration mechanism.
-
- Device ids range from 0 to Pa_CountDevices()-1.
-
- Devices may support input, output or both.
-
-*/
-
-typedef int PaDeviceID;
-#define paNoDevice -1
-
-int Pa_CountDevices( void );
-
-typedef struct
-{
- int structVersion;
- const char *name;
- int maxInputChannels;
- int maxOutputChannels;
- /* Number of discrete rates, or -1 if range supported. */
- int numSampleRates;
- /* Array of supported sample rates, or {min,max} if range supported. */
- const double *sampleRates;
- PaSampleFormat nativeSampleFormats;
-}
-PaDeviceInfo;
-
-/*
- Pa_GetDefaultInputDeviceID(), Pa_GetDefaultOutputDeviceID() return the
- default device ids for input and output respectively, or paNoDevice if
- no device is available.
- The result can be passed to Pa_OpenStream().
-
- On the PC, the user can specify a default device by
- setting an environment variable. For example, to use device #1.
-
- set PA_RECOMMENDED_OUTPUT_DEVICE=1
-
- The user should first determine the available device ids by using
- the supplied application "pa_devs".
-
-*/
-
-PaDeviceID Pa_GetDefaultInputDeviceID( void );
-PaDeviceID Pa_GetDefaultOutputDeviceID( void );
-
-
-
-/*
- Pa_GetDeviceInfo() returns a pointer to an immutable PaDeviceInfo structure
- for the device specified.
- If the device parameter is out of range the function returns NULL.
-
- PortAudio manages the memory referenced by the returned pointer, the client
- must not manipulate or free the memory. The pointer is only guaranteed to be
- valid between calls to Pa_Initialize() and Pa_Terminate().
-
-*/
-
-const PaDeviceInfo* Pa_GetDeviceInfo( PaDeviceID device );
-
-/*
- PaTimestamp is used to represent a continuous sample clock with arbitrary
- start time that can be used for syncronization. The type is used for the
- outTime argument to the PortAudioCallback and as the result of Pa_StreamTime()
-
-*/
-
-typedef double PaTimestamp;
-
-/*
- PortAudioCallback is implemented by PortAudio clients.
-
- inputBuffer and outputBuffer are arrays of interleaved samples,
- the format, packing and number of channels used by the buffers are
- determined by parameters to Pa_OpenStream() (see below).
-
- framesPerBuffer is the number of sample frames to be processed by the callback.
-
- outTime is the time in samples when the buffer(s) processed by
- this callback will begin being played at the audio output.
- See also Pa_StreamTime()
-
- userData is the value of a user supplied pointer passed to Pa_OpenStream()
- intended for storing synthesis data etc.
-
- return value:
- The callback can return a non-zero value to stop the stream. This may be
- useful in applications such as soundfile players where a specific duration
- of output is required. However, it is not necessary to utilise this mechanism
- as StopStream() will also terminate the stream. A callback returning a
- non-zero value must fill the entire outputBuffer.
-
- NOTE: None of the other stream functions may be called from within the
- callback function except for Pa_GetCPULoad().
-
-*/
-
-typedef int (PortAudioCallback)(
- void *inputBuffer, void *outputBuffer,
- unsigned long framesPerBuffer,
- PaTimestamp outTime, void *userData );
-
-
-/*
- Stream flags
-
- These flags may be supplied (ored together) in the streamFlags argument to
- the Pa_OpenStream() function.
-
-*/
-
-#define paNoFlag (0)
-#define paClipOff (1<<0) /* disable default clipping of out of range samples */
-#define paDitherOff (1<<1) /* disable default dithering */
-#define paPlatformSpecificFlags (0x00010000)
-typedef unsigned long PaStreamFlags;
-
-/*
- A single PortAudioStream provides multiple channels of real-time
- input and output audio streaming to a client application.
- Pointers to PortAudioStream objects are passed between PortAudio functions.
-*/
-
-typedef void PortAudioStream;
-#define PaStream PortAudioStream
-
-/*
- Pa_OpenStream() opens a stream for either input, output or both.
-
- stream is the address of a PortAudioStream pointer which will receive
- a pointer to the newly opened stream.
-
- inputDevice is the id of the device used for input (see PaDeviceID above.)
- inputDevice may be paNoDevice to indicate that an input device is not required.
-
- numInputChannels is the number of channels of sound to be delivered to the
- callback. It can range from 1 to the value of maxInputChannels in the
- PaDeviceInfo record for the device specified by the inputDevice parameter.
- If inputDevice is paNoDevice numInputChannels is ignored.
-
- inputSampleFormat is the sample format of inputBuffer provided to the callback
- function. inputSampleFormat may be any of the formats described by the
- PaSampleFormat enumeration (see above). PortAudio guarantees support for
- the device's native formats (nativeSampleFormats in the device info record)
- and additionally 16 and 32 bit integer and 32 bit floating point formats.
- Support for other formats is implementation defined.
-
- inputDriverInfo is a pointer to an optional driver specific data structure
- containing additional information for device setup or stream processing.
- inputDriverInfo is never required for correct operation. If not used
- inputDriverInfo should be NULL.
-
- outputDevice is the id of the device used for output (see PaDeviceID above.)
- outputDevice may be paNoDevice to indicate that an output device is not required.
-
- numOutputChannels is the number of channels of sound to be supplied by the
- callback. See the definition of numInputChannels above for more details.
-
- outputSampleFormat is the sample format of the outputBuffer filled by the
- callback function. See the definition of inputSampleFormat above for more
- details.
-
- outputDriverInfo is a pointer to an optional driver specific data structure
- containing additional information for device setup or stream processing.
- outputDriverInfo is never required for correct operation. If not used
- outputDriverInfo should be NULL.
-
- sampleRate is the desired sampleRate. For full-duplex streams it is the
- sample rate for both input and output
-
- framesPerBuffer is the length in sample frames of all internal sample buffers
- used for communication with platform specific audio routines. Wherever
- possible this corresponds to the framesPerBuffer parameter passed to the
- callback function.
-
- numberOfBuffers is the number of buffers used for multibuffered communication
- with the platform specific audio routines. If you pass zero, then an optimum
- value will be chosen for you internally. This parameter is provided only
- as a guide - and does not imply that an implementation must use multibuffered
- i/o when reliable double buffering is available (such as SndPlayDoubleBuffer()
- on the Macintosh.)
-
- streamFlags may contain a combination of flags ORed together.
- These flags modify the behaviour of the streaming process. Some flags may only
- be relevant to certain buffer formats.
-
- callback is a pointer to a client supplied function that is responsible
- for processing and filling input and output buffers (see above for details.)
-
- userData is a client supplied pointer which is passed to the callback
- function. It could for example, contain a pointer to instance data necessary
- for processing the audio buffers.
-
- return value:
- Upon success Pa_OpenStream() returns PaNoError and places a pointer to a
- valid PortAudioStream in the stream argument. The stream is inactive (stopped).
- If a call to Pa_OpenStream() fails a non-zero error code is returned (see
- PaError above) and the value of stream is invalid.
-
-*/
-
-PaError Pa_OpenStream( PortAudioStream** stream,
- PaDeviceID inputDevice,
- int numInputChannels,
- PaSampleFormat inputSampleFormat,
- void *inputDriverInfo,
- PaDeviceID outputDevice,
- int numOutputChannels,
- PaSampleFormat outputSampleFormat,
- void *outputDriverInfo,
- double sampleRate,
- unsigned long framesPerBuffer,
- unsigned long numberOfBuffers,
- PaStreamFlags streamFlags,
- PortAudioCallback *callback,
- void *userData );
-
-
-/*
- Pa_OpenDefaultStream() is a simplified version of Pa_OpenStream() that opens
- the default input and/or output devices. Most parameters have identical meaning
- to their Pa_OpenStream() counterparts, with the following exceptions:
-
- If either numInputChannels or numOutputChannels is 0 the respective device
- is not opened. This has the same effect as passing paNoDevice in the device
- arguments to Pa_OpenStream().
-
- sampleFormat applies to both the input and output buffers.
-
-*/
-
-PaError Pa_OpenDefaultStream( PortAudioStream** stream,
- int numInputChannels,
- int numOutputChannels,
- PaSampleFormat sampleFormat,
- double sampleRate,
- unsigned long framesPerBuffer,
- unsigned long numberOfBuffers,
- PortAudioCallback *callback,
- void *userData );
-
-/*
- Pa_CloseStream() closes an audio stream, flushing any pending buffers.
-
-*/
-
-PaError Pa_CloseStream( PortAudioStream* );
-
-/*
- Pa_StartStream() and Pa_StopStream() begin and terminate audio processing.
- Pa_StopStream() waits until all pending audio buffers have been played.
- Pa_AbortStream() stops playing immediately without waiting for pending
- buffers to complete.
-
-*/
-
-PaError Pa_StartStream( PortAudioStream *stream );
-
-PaError Pa_StopStream( PortAudioStream *stream );
-
-PaError Pa_AbortStream( PortAudioStream *stream );
-
-/*
- Pa_StreamActive() returns one (1) when the stream is active (ie playing
- or recording audio), zero (0) when not playing, or a negative error number
- if the stream is invalid.
- The stream is active between calls to Pa_StartStream() and Pa_StopStream(),
- but may also become inactive if the callback returns a non-zero value.
- In the latter case, the stream is considered inactive after the last
- buffer has finished playing.
-
-*/
-
-PaError Pa_StreamActive( PortAudioStream *stream );
-
-/*
- Pa_StreamTime() returns the current output time in samples for the stream.
- This time may be used as a time reference (for example synchronizing audio to
- MIDI).
-
-*/
-
-PaTimestamp Pa_StreamTime( PortAudioStream *stream );
-
-/*
- Pa_GetCPULoad() returns the CPU Load for the stream.
- The "CPU Load" is a fraction of total CPU time consumed by the stream's
- audio processing routines including, but not limited to the client supplied
- callback.
- A value of 0.5 would imply that PortAudio and the sound generating
- callback was consuming roughly 50% of the available CPU time.
- This function may be called from the callback function or the application.
-
-*/
-
-double Pa_GetCPULoad( PortAudioStream* stream );
-
-/*
- Pa_GetMinNumBuffers() returns the minimum number of buffers required by
- the current host based on minimum latency.
- On the PC, for the DirectSound implementation, latency can be optionally set
- by user by setting an environment variable.
- For example, to set latency to 200 msec, put:
-
- set PA_MIN_LATENCY_MSEC=200
-
- in the AUTOEXEC.BAT file and reboot.
- If the environment variable is not set, then the latency will be determined
- based on the OS. Windows NT has higher latency than Win95.
-
-*/
-
-int Pa_GetMinNumBuffers( int framesPerBuffer, double sampleRate );
-
-/*
- Pa_Sleep() puts the caller to sleep for at least 'msec' milliseconds.
- You may sleep longer than the requested time so don't rely on this for
- accurate musical timing.
-
- Pa_Sleep() is provided as a convenience for authors of portable code (such as
- the tests and examples in the PortAudio distribution.)
-
-*/
-
-void Pa_Sleep( long msec );
-
-/*
- Pa_GetSampleSize() returns the size in bytes of a single sample in the
- supplied PaSampleFormat, or paSampleFormatNotSupported if the format is
- no supported.
-
-*/
-
-PaError Pa_GetSampleSize( PaSampleFormat format );
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PORT_AUDIO_H */
diff --git a/navit/support/espeak/portaudio19.h b/navit/support/espeak/portaudio19.h
deleted file mode 100644
index 5c060b711..000000000
--- a/navit/support/espeak/portaudio19.h
+++ /dev/null
@@ -1,1127 +0,0 @@
-// NOTE: Copy this file to portaudio.h in order to compile with V19 portaudio
-
-#ifndef PORTAUDIO_H
-#define PORTAUDIO_H
-/*
- * $Id: portaudio.h 1061 2006-06-19 22:46:41Z lschwardt $
- * PortAudio Portable Real-Time Audio Library
- * PortAudio API Header File
- * Latest version available at: http://www.portaudio.com/
- *
- * Copyright (c) 1999-2002 Ross Bencina and Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/** @file
- @brief The PortAudio API.
-*/
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/** Retrieve the release number of the currently running PortAudio build,
- eg 1900.
-*/
-int Pa_GetVersion( void );
-
-
-/** Retrieve a textual description of the current PortAudio build,
- eg "PortAudio V19-devel 13 October 2002".
-*/
-const char* Pa_GetVersionText( void );
-
-
-/** Error codes returned by PortAudio functions.
- Note that with the exception of paNoError, all PaErrorCodes are negative.
-*/
-
-typedef int PaError;
-typedef enum PaErrorCode
-{
- paNoError = 0,
-
- paNotInitialized = -10000,
- paUnanticipatedHostError,
- paInvalidChannelCount,
- paInvalidSampleRate,
- paInvalidDevice,
- paInvalidFlag,
- paSampleFormatNotSupported,
- paBadIODeviceCombination,
- paInsufficientMemory,
- paBufferTooBig,
- paBufferTooSmall,
- paNullCallback,
- paBadStreamPtr,
- paTimedOut,
- paInternalError,
- paDeviceUnavailable,
- paIncompatibleHostApiSpecificStreamInfo,
- paStreamIsStopped,
- paStreamIsNotStopped,
- paInputOverflowed,
- paOutputUnderflowed,
- paHostApiNotFound,
- paInvalidHostApi,
- paCanNotReadFromACallbackStream, /**< @todo review error code name */
- paCanNotWriteToACallbackStream, /**< @todo review error code name */
- paCanNotReadFromAnOutputOnlyStream, /**< @todo review error code name */
- paCanNotWriteToAnInputOnlyStream, /**< @todo review error code name */
- paIncompatibleStreamHostApi,
- paBadBufferPtr
-} PaErrorCode;
-
-
-/** Translate the supplied PortAudio error code into a human readable
- message.
-*/
-const char *Pa_GetErrorText( PaError errorCode );
-
-
-/** Library initialization function - call this before using PortAudio.
- This function initialises internal data structures and prepares underlying
- host APIs for use. This function MUST be called before using any other
- PortAudio API functions.
-
- If Pa_Initialize() is called multiple times, each successful
- call must be matched with a corresponding call to Pa_Terminate().
- Pairs of calls to Pa_Initialize()/Pa_Terminate() may overlap, and are not
- required to be fully nested.
-
- Note that if Pa_Initialize() returns an error code, Pa_Terminate() should
- NOT be called.
-
- @return paNoError if successful, otherwise an error code indicating the cause
- of failure.
-
- @see Pa_Terminate
-*/
-PaError Pa_Initialize( void );
-
-
-/** Library termination function - call this when finished using PortAudio.
- This function deallocates all resources allocated by PortAudio since it was
- initializied by a call to Pa_Initialize(). In cases where Pa_Initialise() has
- been called multiple times, each call must be matched with a corresponding call
- to Pa_Terminate(). The final matching call to Pa_Terminate() will automatically
- close any PortAudio streams that are still open.
-
- Pa_Terminate() MUST be called before exiting a program which uses PortAudio.
- Failure to do so may result in serious resource leaks, such as audio devices
- not being available until the next reboot.
-
- @return paNoError if successful, otherwise an error code indicating the cause
- of failure.
-
- @see Pa_Initialize
-*/
-PaError Pa_Terminate( void );
-
-
-
-/** The type used to refer to audio devices. Values of this type usually
- range from 0 to (Pa_DeviceCount-1), and may also take on the PaNoDevice
- and paUseHostApiSpecificDeviceSpecification values.
-
- @see Pa_DeviceCount, paNoDevice, paUseHostApiSpecificDeviceSpecification
-*/
-typedef int PaDeviceIndex;
-
-
-/** A special PaDeviceIndex value indicating that no device is available,
- or should be used.
-
- @see PaDeviceIndex
-*/
-#define paNoDevice ((PaDeviceIndex)-1)
-
-
-/** A special PaDeviceIndex value indicating that the device(s) to be used
- are specified in the host api specific stream info structure.
-
- @see PaDeviceIndex
-*/
-#define paUseHostApiSpecificDeviceSpecification ((PaDeviceIndex)-2)
-
-
-/* Host API enumeration mechanism */
-
-/** The type used to enumerate to host APIs at runtime. Values of this type
- range from 0 to (Pa_GetHostApiCount()-1).
-
- @see Pa_GetHostApiCount
-*/
-typedef int PaHostApiIndex;
-
-
-/** Retrieve the number of available host APIs. Even if a host API is
- available it may have no devices available.
-
- @return A non-negative value indicating the number of available host APIs
- or, a PaErrorCode (which are always negative) if PortAudio is not initialized
- or an error is encountered.
-
- @see PaHostApiIndex
-*/
-PaHostApiIndex Pa_GetHostApiCount( void );
-
-
-/** Retrieve the index of the default host API. The default host API will be
- the lowest common denominator host API on the current platform and is
- unlikely to provide the best performance.
-
- @return A non-negative value ranging from 0 to (Pa_GetHostApiCount()-1)
- indicating the default host API index or, a PaErrorCode (which are always
- negative) if PortAudio is not initialized or an error is encountered.
-*/
-PaHostApiIndex Pa_GetDefaultHostApi( void );
-
-
-/** Unchanging unique identifiers for each supported host API. This type
- is used in the PaHostApiInfo structure. The values are guaranteed to be
- unique and to never change, thus allowing code to be written that
- conditionally uses host API specific extensions.
-
- New type ids will be allocated when support for a host API reaches
- "public alpha" status, prior to that developers should use the
- paInDevelopment type id.
-
- @see PaHostApiInfo
-*/
-typedef enum PaHostApiTypeId
-{
- paInDevelopment=0, /* use while developing support for a new host API */
- paDirectSound=1,
- paMME=2,
- paASIO=3,
- paSoundManager=4,
- paCoreAudio=5,
- paOSS=7,
- paALSA=8,
- paAL=9,
- paBeOS=10,
- paWDMKS=11,
- paJACK=12,
- paWASAPI=13,
- paAudioScienceHPI=14
-} PaHostApiTypeId;
-
-
-/** A structure containing information about a particular host API. */
-
-typedef struct PaHostApiInfo
-{
- /** this is struct version 1 */
- int structVersion;
- /** The well known unique identifier of this host API @see PaHostApiTypeId */
- PaHostApiTypeId type;
- /** A textual description of the host API for display on user interfaces. */
- const char *name;
-
- /** The number of devices belonging to this host API. This field may be
- used in conjunction with Pa_HostApiDeviceIndexToDeviceIndex() to enumerate
- all devices for this host API.
- @see Pa_HostApiDeviceIndexToDeviceIndex
- */
- int deviceCount;
-
- /** The default input device for this host API. The value will be a
- device index ranging from 0 to (Pa_GetDeviceCount()-1), or paNoDevice
- if no default input device is available.
- */
- PaDeviceIndex defaultInputDevice;
-
- /** The default output device for this host API. The value will be a
- device index ranging from 0 to (Pa_GetDeviceCount()-1), or paNoDevice
- if no default output device is available.
- */
- PaDeviceIndex defaultOutputDevice;
-
-} PaHostApiInfo;
-
-
-/** Retrieve a pointer to a structure containing information about a specific
- host Api.
-
- @param hostApi A valid host API index ranging from 0 to (Pa_GetHostApiCount()-1)
-
- @return A pointer to an immutable PaHostApiInfo structure describing
- a specific host API. If the hostApi parameter is out of range or an error
- is encountered, the function returns NULL.
-
- The returned structure is owned by the PortAudio implementation and must not
- be manipulated or freed. The pointer is only guaranteed to be valid between
- calls to Pa_Initialize() and Pa_Terminate().
-*/
-const PaHostApiInfo * Pa_GetHostApiInfo( PaHostApiIndex hostApi );
-
-
-/** Convert a static host API unique identifier, into a runtime
- host API index.
-
- @param type A unique host API identifier belonging to the PaHostApiTypeId
- enumeration.
-
- @return A valid PaHostApiIndex ranging from 0 to (Pa_GetHostApiCount()-1) or,
- a PaErrorCode (which are always negative) if PortAudio is not initialized
- or an error is encountered.
-
- The paHostApiNotFound error code indicates that the host API specified by the
- type parameter is not available.
-
- @see PaHostApiTypeId
-*/
-PaHostApiIndex Pa_HostApiTypeIdToHostApiIndex( PaHostApiTypeId type );
-
-
-/** Convert a host-API-specific device index to standard PortAudio device index.
- This function may be used in conjunction with the deviceCount field of
- PaHostApiInfo to enumerate all devices for the specified host API.
-
- @param hostApi A valid host API index ranging from 0 to (Pa_GetHostApiCount()-1)
-
- @param hostApiDeviceIndex A valid per-host device index in the range
- 0 to (Pa_GetHostApiInfo(hostApi)->deviceCount-1)
-
- @return A non-negative PaDeviceIndex ranging from 0 to (Pa_GetDeviceCount()-1)
- or, a PaErrorCode (which are always negative) if PortAudio is not initialized
- or an error is encountered.
-
- A paInvalidHostApi error code indicates that the host API index specified by
- the hostApi parameter is out of range.
-
- A paInvalidDevice error code indicates that the hostApiDeviceIndex parameter
- is out of range.
-
- @see PaHostApiInfo
-*/
-PaDeviceIndex Pa_HostApiDeviceIndexToDeviceIndex( PaHostApiIndex hostApi,
- int hostApiDeviceIndex );
-
-
-
-/** Structure used to return information about a host error condition.
-*/
-typedef struct PaHostErrorInfo{
- PaHostApiTypeId hostApiType; /**< the host API which returned the error code */
- long errorCode; /**< the error code returned */
- const char *errorText; /**< a textual description of the error if available, otherwise a zero-length string */
-}PaHostErrorInfo;
-
-
-/** Return information about the last host error encountered. The error
- information returned by Pa_GetLastHostErrorInfo() will never be modified
- asyncronously by errors occurring in other PortAudio owned threads
- (such as the thread that manages the stream callback.)
-
- This function is provided as a last resort, primarily to enhance debugging
- by providing clients with access to all available error information.
-
- @return A pointer to an immutable structure constaining information about
- the host error. The values in this structure will only be valid if a
- PortAudio function has previously returned the paUnanticipatedHostError
- error code.
-*/
-const PaHostErrorInfo* Pa_GetLastHostErrorInfo( void );
-
-
-
-/* Device enumeration and capabilities */
-
-/** Retrieve the number of available devices. The number of available devices
- may be zero.
-
- @return A non-negative value indicating the number of available devices or,
- a PaErrorCode (which are always negative) if PortAudio is not initialized
- or an error is encountered.
-*/
-PaDeviceIndex Pa_GetDeviceCount( void );
-
-
-/** Retrieve the index of the default input device. The result can be
- used in the inputDevice parameter to Pa_OpenStream().
-
- @return The default input device index for the default host API, or paNoDevice
- if no default input device is available or an error was encountered.
-*/
-PaDeviceIndex Pa_GetDefaultInputDevice( void );
-
-
-/** Retrieve the index of the default output device. The result can be
- used in the outputDevice parameter to Pa_OpenStream().
-
- @return The default output device index for the defualt host API, or paNoDevice
- if no default output device is available or an error was encountered.
-
- @note
- On the PC, the user can specify a default device by
- setting an environment variable. For example, to use device #1.
-<pre>
- set PA_RECOMMENDED_OUTPUT_DEVICE=1
-</pre>
- The user should first determine the available device ids by using
- the supplied application "pa_devs".
-*/
-PaDeviceIndex Pa_GetDefaultOutputDevice( void );
-
-
-/** The type used to represent monotonic time in seconds that can be used
- for syncronisation. The type is used for the outTime argument to the
- PaStreamCallback and as the result of Pa_GetStreamTime().
-
- @see PaStreamCallback, Pa_GetStreamTime
-*/
-typedef double PaTime;
-
-
-/** A type used to specify one or more sample formats. Each value indicates
- a possible format for sound data passed to and from the stream callback,
- Pa_ReadStream and Pa_WriteStream.
-
- The standard formats paFloat32, paInt16, paInt32, paInt24, paInt8
- and aUInt8 are usually implemented by all implementations.
-
- The floating point representation (paFloat32) uses +1.0 and -1.0 as the
- maximum and minimum respectively.
-
- paUInt8 is an unsigned 8 bit format where 128 is considered "ground"
-
- The paNonInterleaved flag indicates that a multichannel buffer is passed
- as a set of non-interleaved pointers.
-
- @see Pa_OpenStream, Pa_OpenDefaultStream, PaDeviceInfo
- @see paFloat32, paInt16, paInt32, paInt24, paInt8
- @see paUInt8, paCustomFormat, paNonInterleaved
-*/
-typedef unsigned long PaSampleFormat;
-
-
-#define paFloat32 ((PaSampleFormat) 0x00000001) /**< @see PaSampleFormat */
-#define paInt32 ((PaSampleFormat) 0x00000002) /**< @see PaSampleFormat */
-#define paInt24 ((PaSampleFormat) 0x00000004) /**< Packed 24 bit format. @see PaSampleFormat */
-#define paInt16 ((PaSampleFormat) 0x00000008) /**< @see PaSampleFormat */
-#define paInt8 ((PaSampleFormat) 0x00000010) /**< @see PaSampleFormat */
-#define paUInt8 ((PaSampleFormat) 0x00000020) /**< @see PaSampleFormat */
-#define paCustomFormat ((PaSampleFormat) 0x00010000)/**< @see PaSampleFormat */
-
-#define paNonInterleaved ((PaSampleFormat) 0x80000000)
-
-/** A structure providing information and capabilities of PortAudio devices.
- Devices may support input, output or both input and output.
-*/
-typedef struct PaDeviceInfo
-{
- int structVersion; /* this is struct version 2 */
- const char *name;
- PaHostApiIndex hostApi; /* note this is a host API index, not a type id*/
-
- int maxInputChannels;
- int maxOutputChannels;
-
- /* Default latency values for interactive performance. */
- PaTime defaultLowInputLatency;
- PaTime defaultLowOutputLatency;
- /* Default latency values for robust non-interactive applications (eg. playing sound files). */
- PaTime defaultHighInputLatency;
- PaTime defaultHighOutputLatency;
-
- double defaultSampleRate;
-} PaDeviceInfo;
-
-
-/** Retrieve a pointer to a PaDeviceInfo structure containing information
- about the specified device.
- @return A pointer to an immutable PaDeviceInfo structure. If the device
- parameter is out of range the function returns NULL.
-
- @param device A valid device index in the range 0 to (Pa_GetDeviceCount()-1)
-
- @note PortAudio manages the memory referenced by the returned pointer,
- the client must not manipulate or free the memory. The pointer is only
- guaranteed to be valid between calls to Pa_Initialize() and Pa_Terminate().
-
- @see PaDeviceInfo, PaDeviceIndex
-*/
-const PaDeviceInfo* Pa_GetDeviceInfo( PaDeviceIndex device );
-
-
-/** Parameters for one direction (input or output) of a stream.
-*/
-typedef struct PaStreamParameters
-{
- /** A valid device index in the range 0 to (Pa_GetDeviceCount()-1)
- specifying the device to be used or the special constant
- paUseHostApiSpecificDeviceSpecification which indicates that the actual
- device(s) to use are specified in hostApiSpecificStreamInfo.
- This field must not be set to paNoDevice.
- */
- PaDeviceIndex device;
-
- /** The number of channels of sound to be delivered to the
- stream callback or accessed by Pa_ReadStream() or Pa_WriteStream().
- It can range from 1 to the value of maxInputChannels in the
- PaDeviceInfo record for the device specified by the device parameter.
- */
- int channelCount;
-
- /** The sample format of the buffer provided to the stream callback,
- a_ReadStream() or Pa_WriteStream(). It may be any of the formats described
- by the PaSampleFormat enumeration.
- */
- PaSampleFormat sampleFormat;
-
- /** The desired latency in seconds. Where practical, implementations should
- configure their latency based on these parameters, otherwise they may
- choose the closest viable latency instead. Unless the suggested latency
- is greater than the absolute upper limit for the device implementations
- should round the suggestedLatency up to the next practial value - ie to
- provide an equal or higher latency than suggestedLatency wherever possibe.
- Actual latency values for an open stream may be retrieved using the
- inputLatency and outputLatency fields of the PaStreamInfo structure
- returned by Pa_GetStreamInfo().
- @see default*Latency in PaDeviceInfo, *Latency in PaStreamInfo
- */
- PaTime suggestedLatency;
-
- /** An optional pointer to a host api specific data structure
- containing additional information for device setup and/or stream processing.
- hostApiSpecificStreamInfo is never required for correct operation,
- if not used it should be set to NULL.
- */
- void *hostApiSpecificStreamInfo;
-
-} PaStreamParameters;
-
-
-/** Return code for Pa_IsFormatSupported indicating success. */
-#define paFormatIsSupported (0)
-
-/** Determine whether it would be possible to open a stream with the specified
- parameters.
-
- @param inputParameters A structure that describes the input parameters used to
- open a stream. The suggestedLatency field is ignored. See PaStreamParameters
- for a description of these parameters. inputParameters must be NULL for
- output-only streams.
-
- @param outputParameters A structure that describes the output parameters used
- to open a stream. The suggestedLatency field is ignored. See PaStreamParameters
- for a description of these parameters. outputParameters must be NULL for
- input-only streams.
-
- @param sampleRate The required sampleRate. For full-duplex streams it is the
- sample rate for both input and output
-
- @return Returns 0 if the format is supported, and an error code indicating why
- the format is not supported otherwise. The constant paFormatIsSupported is
- provided to compare with the return value for success.
-
- @see paFormatIsSupported, PaStreamParameters
-*/
-PaError Pa_IsFormatSupported( const PaStreamParameters *inputParameters,
- const PaStreamParameters *outputParameters,
- double sampleRate );
-
-
-
-/* Streaming types and functions */
-
-
-/**
- A single PaStream can provide multiple channels of real-time
- streaming audio input and output to a client application. A stream
- provides access to audio hardware represented by one or more
- PaDevices. Depending on the underlying Host API, it may be possible
- to open multiple streams using the same device, however this behavior
- is implementation defined. Portable applications should assume that
- a PaDevice may be simultaneously used by at most one PaStream.
-
- Pointers to PaStream objects are passed between PortAudio functions that
- operate on streams.
-
- @see Pa_OpenStream, Pa_OpenDefaultStream, Pa_OpenDefaultStream, Pa_CloseStream,
- Pa_StartStream, Pa_StopStream, Pa_AbortStream, Pa_IsStreamActive,
- Pa_GetStreamTime, Pa_GetStreamCpuLoad
-
-*/
-typedef void PaStream;
-
-
-/** Can be passed as the framesPerBuffer parameter to Pa_OpenStream()
- or Pa_OpenDefaultStream() to indicate that the stream callback will
- accept buffers of any size.
-*/
-#define paFramesPerBufferUnspecified (0)
-
-
-/** Flags used to control the behavior of a stream. They are passed as
- parameters to Pa_OpenStream or Pa_OpenDefaultStream. Multiple flags may be
- ORed together.
-
- @see Pa_OpenStream, Pa_OpenDefaultStream
- @see paNoFlag, paClipOff, paDitherOff, paNeverDropInput,
- paPrimeOutputBuffersUsingStreamCallback, paPlatformSpecificFlags
-*/
-typedef unsigned long PaStreamFlags;
-
-/** @see PaStreamFlags */
-#define paNoFlag ((PaStreamFlags) 0)
-
-/** Disable default clipping of out of range samples.
- @see PaStreamFlags
-*/
-#define paClipOff ((PaStreamFlags) 0x00000001)
-
-/** Disable default dithering.
- @see PaStreamFlags
-*/
-#define paDitherOff ((PaStreamFlags) 0x00000002)
-
-/** Flag requests that where possible a full duplex stream will not discard
- overflowed input samples without calling the stream callback. This flag is
- only valid for full duplex callback streams and only when used in combination
- with the paFramesPerBufferUnspecified (0) framesPerBuffer parameter. Using
- this flag incorrectly results in a paInvalidFlag error being returned from
- Pa_OpenStream and Pa_OpenDefaultStream.
-
- @see PaStreamFlags, paFramesPerBufferUnspecified
-*/
-#define paNeverDropInput ((PaStreamFlags) 0x00000004)
-
-/** Call the stream callback to fill initial output buffers, rather than the
- default behavior of priming the buffers with zeros (silence). This flag has
- no effect for input-only and blocking read/write streams.
-
- @see PaStreamFlags
-*/
-#define paPrimeOutputBuffersUsingStreamCallback ((PaStreamFlags) 0x00000008)
-
-/** A mask specifying the platform specific bits.
- @see PaStreamFlags
-*/
-#define paPlatformSpecificFlags ((PaStreamFlags)0xFFFF0000)
-
-/**
- Timing information for the buffers passed to the stream callback.
-*/
-typedef struct PaStreamCallbackTimeInfo{
- PaTime inputBufferAdcTime;
- PaTime currentTime;
- PaTime outputBufferDacTime;
-} PaStreamCallbackTimeInfo;
-
-
-/**
- Flag bit constants for the statusFlags to PaStreamCallback.
-
- @see paInputUnderflow, paInputOverflow, paOutputUnderflow, paOutputOverflow,
- paPrimingOutput
-*/
-typedef unsigned long PaStreamCallbackFlags;
-
-/** In a stream opened with paFramesPerBufferUnspecified, indicates that
- input data is all silence (zeros) because no real data is available. In a
- stream opened without paFramesPerBufferUnspecified, it indicates that one or
- more zero samples have been inserted into the input buffer to compensate
- for an input underflow.
- @see PaStreamCallbackFlags
-*/
-#define paInputUnderflow ((PaStreamCallbackFlags) 0x00000001)
-
-/** In a stream opened with paFramesPerBufferUnspecified, indicates that data
- prior to the first sample of the input buffer was discarded due to an
- overflow, possibly because the stream callback is using too much CPU time.
- Otherwise indicates that data prior to one or more samples in the
- input buffer was discarded.
- @see PaStreamCallbackFlags
-*/
-#define paInputOverflow ((PaStreamCallbackFlags) 0x00000002)
-
-/** Indicates that output data (or a gap) was inserted, possibly because the
- stream callback is using too much CPU time.
- @see PaStreamCallbackFlags
-*/
-#define paOutputUnderflow ((PaStreamCallbackFlags) 0x00000004)
-
-/** Indicates that output data will be discarded because no room is available.
- @see PaStreamCallbackFlags
-*/
-#define paOutputOverflow ((PaStreamCallbackFlags) 0x00000008)
-
-/** Some of all of the output data will be used to prime the stream, input
- data may be zero.
- @see PaStreamCallbackFlags
-*/
-#define paPrimingOutput ((PaStreamCallbackFlags) 0x00000010)
-
-/**
- Allowable return values for the PaStreamCallback.
- @see PaStreamCallback
-*/
-typedef enum PaStreamCallbackResult
-{
- paContinue=0,
- paComplete=1,
- paAbort=2
-} PaStreamCallbackResult;
-
-
-/**
- Functions of type PaStreamCallback are implemented by PortAudio clients.
- They consume, process or generate audio in response to requests from an
- active PortAudio stream.
-
- @param input and @param output are arrays of interleaved samples,
- the format, packing and number of channels used by the buffers are
- determined by parameters to Pa_OpenStream().
-
- @param frameCount The number of sample frames to be processed by
- the stream callback.
-
- @param timeInfo The time in seconds when the first sample of the input
- buffer was received at the audio input, the time in seconds when the first
- sample of the output buffer will begin being played at the audio output, and
- the time in seconds when the stream callback was called.
- See also Pa_GetStreamTime()
-
- @param statusFlags Flags indicating whether input and/or output buffers
- have been inserted or will be dropped to overcome underflow or overflow
- conditions.
-
- @param userData The value of a user supplied pointer passed to
- Pa_OpenStream() intended for storing synthesis data etc.
-
- @return
- The stream callback should return one of the values in the
- PaStreamCallbackResult enumeration. To ensure that the callback continues
- to be called, it should return paContinue (0). Either paComplete or paAbort
- can be returned to finish stream processing, after either of these values is
- returned the callback will not be called again. If paAbort is returned the
- stream will finish as soon as possible. If paComplete is returned, the stream
- will continue until all buffers generated by the callback have been played.
- This may be useful in applications such as soundfile players where a specific
- duration of output is required. However, it is not necessary to utilise this
- mechanism as Pa_StopStream(), Pa_AbortStream() or Pa_CloseStream() can also
- be used to stop the stream. The callback must always fill the entire output
- buffer irrespective of its return value.
-
- @see Pa_OpenStream, Pa_OpenDefaultStream
-
- @note With the exception of Pa_GetStreamCpuLoad() it is not permissable to call
- PortAudio API functions from within the stream callback.
-*/
-typedef int PaStreamCallback(
- const void *input, void *output,
- unsigned long frameCount,
- const PaStreamCallbackTimeInfo* timeInfo,
- PaStreamCallbackFlags statusFlags,
- void *userData );
-
-
-/** Opens a stream for either input, output or both.
-
- @param stream The address of a PaStream pointer which will receive
- a pointer to the newly opened stream.
-
- @param inputParameters A structure that describes the input parameters used by
- the opened stream. See PaStreamParameters for a description of these parameters.
- inputParameters must be NULL for output-only streams.
-
- @param outputParameters A structure that describes the output parameters used by
- the opened stream. See PaStreamParameters for a description of these parameters.
- outputParameters must be NULL for input-only streams.
-
- @param sampleRate The desired sampleRate. For full-duplex streams it is the
- sample rate for both input and output
-
- @param framesPerBuffer The number of frames passed to the stream callback
- function, or the preferred block granularity for a blocking read/write stream.
- The special value paFramesPerBufferUnspecified (0) may be used to request that
- the stream callback will recieve an optimal (and possibly varying) number of
- frames based on host requirements and the requested latency settings.
- Note: With some host APIs, the use of non-zero framesPerBuffer for a callback
- stream may introduce an additional layer of buffering which could introduce
- additional latency. PortAudio guarantees that the additional latency
- will be kept to the theoretical minimum however, it is strongly recommended
- that a non-zero framesPerBuffer value only be used when your algorithm
- requires a fixed number of frames per stream callback.
-
- @param streamFlags Flags which modify the behaviour of the streaming process.
- This parameter may contain a combination of flags ORed together. Some flags may
- only be relevant to certain buffer formats.
-
- @param streamCallback A pointer to a client supplied function that is responsible
- for processing and filling input and output buffers. If this parameter is NULL
- the stream will be opened in 'blocking read/write' mode. In blocking mode,
- the client can receive sample data using Pa_ReadStream and write sample data
- using Pa_WriteStream, the number of samples that may be read or written
- without blocking is returned by Pa_GetStreamReadAvailable and
- Pa_GetStreamWriteAvailable respectively.
-
- @param userData A client supplied pointer which is passed to the stream callback
- function. It could for example, contain a pointer to instance data necessary
- for processing the audio buffers. This parameter is ignored if streamCallback
- is NULL.
-
- @return
- Upon success Pa_OpenStream() returns paNoError and places a pointer to a
- valid PaStream in the stream argument. The stream is inactive (stopped).
- If a call to Pa_OpenStream() fails, a non-zero error code is returned (see
- PaError for possible error codes) and the value of stream is invalid.
-
- @see PaStreamParameters, PaStreamCallback, Pa_ReadStream, Pa_WriteStream,
- Pa_GetStreamReadAvailable, Pa_GetStreamWriteAvailable
-*/
-PaError Pa_OpenStream( PaStream** stream,
- const PaStreamParameters *inputParameters,
- const PaStreamParameters *outputParameters,
- double sampleRate,
- unsigned long framesPerBuffer,
- PaStreamFlags streamFlags,
- PaStreamCallback *streamCallback,
- void *userData );
-
-
-/** A simplified version of Pa_OpenStream() that opens the default input
- and/or output devices.
-
- @param stream The address of a PaStream pointer which will receive
- a pointer to the newly opened stream.
-
- @param numInputChannels The number of channels of sound that will be supplied
- to the stream callback or returned by Pa_ReadStream. It can range from 1 to
- the value of maxInputChannels in the PaDeviceInfo record for the default input
- device. If 0 the stream is opened as an output-only stream.
-
- @param numOutputChannels The number of channels of sound to be delivered to the
- stream callback or passed to Pa_WriteStream. It can range from 1 to the value
- of maxOutputChannels in the PaDeviceInfo record for the default output dvice.
- If 0 the stream is opened as an output-only stream.
-
- @param sampleFormat The sample format of both the input and output buffers
- provided to the callback or passed to and from Pa_ReadStream and Pa_WriteStream.
- sampleFormat may be any of the formats described by the PaSampleFormat
- enumeration.
-
- @param sampleRate Same as Pa_OpenStream parameter of the same name.
- @param framesPerBuffer Same as Pa_OpenStream parameter of the same name.
- @param streamCallback Same as Pa_OpenStream parameter of the same name.
- @param userData Same as Pa_OpenStream parameter of the same name.
-
- @return As for Pa_OpenStream
-
- @see Pa_OpenStream, PaStreamCallback
-*/
-PaError Pa_OpenDefaultStream( PaStream** stream,
- int numInputChannels,
- int numOutputChannels,
- PaSampleFormat sampleFormat,
- double sampleRate,
- unsigned long framesPerBuffer,
- PaStreamCallback *streamCallback,
- void *userData );
-
-
-/** Closes an audio stream. If the audio stream is active it
- discards any pending buffers as if Pa_AbortStream() had been called.
-*/
-PaError Pa_CloseStream( PaStream *stream );
-
-
-/** Functions of type PaStreamFinishedCallback are implemented by PortAudio
- clients. They can be registered with a stream using the Pa_SetStreamFinishedCallback
- function. Once registered they are called when the stream becomes inactive
- (ie once a call to Pa_StopStream() will not block).
- A stream will become inactive after the stream callback returns non-zero,
- or when Pa_StopStream or Pa_AbortStream is called. For a stream providing audio
- output, if the stream callback returns paComplete, or Pa_StopStream is called,
- the stream finished callback will not be called until all generated sample data
- has been played.
-
- @param userData The userData parameter supplied to Pa_OpenStream()
-
- @see Pa_SetStreamFinishedCallback
-*/
-typedef void PaStreamFinishedCallback( void *userData );
-
-
-/** Register a stream finished callback function which will be called when the
- stream becomes inactive. See the description of PaStreamFinishedCallback for
- further details about when the callback will be called.
-
- @param stream a pointer to a PaStream that is in the stopped state - if the
- stream is not stopped, the stream's finished callback will remain unchanged
- and an error code will be returned.
-
- @param streamFinishedCallback a pointer to a function with the same signature
- as PaStreamFinishedCallback, that will be called when the stream becomes
- inactive. Passing NULL for this parameter will un-register a previously
- registered stream finished callback function.
-
- @return on success returns paNoError, otherwise an error code indicating the cause
- of the error.
-
- @see PaStreamFinishedCallback
-*/
-PaError Pa_SetStreamFinishedCallback( PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback );
-
-
-/** Commences audio processing.
-*/
-PaError Pa_StartStream( PaStream *stream );
-
-
-/** Terminates audio processing. It waits until all pending
- audio buffers have been played before it returns.
-*/
-PaError Pa_StopStream( PaStream *stream );
-
-
-/** Terminates audio processing immediately without waiting for pending
- buffers to complete.
-*/
-PaError Pa_AbortStream( PaStream *stream );
-
-
-/** Determine whether the stream is stopped.
- A stream is considered to be stopped prior to a successful call to
- Pa_StartStream and after a successful call to Pa_StopStream or Pa_AbortStream.
- If a stream callback returns a value other than paContinue the stream is NOT
- considered to be stopped.
-
- @return Returns one (1) when the stream is stopped, zero (0) when
- the stream is running or, a PaErrorCode (which are always negative) if
- PortAudio is not initialized or an error is encountered.
-
- @see Pa_StopStream, Pa_AbortStream, Pa_IsStreamActive
-*/
-PaError Pa_IsStreamStopped( PaStream *stream );
-
-
-/** Determine whether the stream is active.
- A stream is active after a successful call to Pa_StartStream(), until it
- becomes inactive either as a result of a call to Pa_StopStream() or
- Pa_AbortStream(), or as a result of a return value other than paContinue from
- the stream callback. In the latter case, the stream is considered inactive
- after the last buffer has finished playing.
-
- @return Returns one (1) when the stream is active (ie playing or recording
- audio), zero (0) when not playing or, a PaErrorCode (which are always negative)
- if PortAudio is not initialized or an error is encountered.
-
- @see Pa_StopStream, Pa_AbortStream, Pa_IsStreamStopped
-*/
-PaError Pa_IsStreamActive( PaStream *stream );
-
-
-
-/** A structure containing unchanging information about an open stream.
- @see Pa_GetStreamInfo
-*/
-
-typedef struct PaStreamInfo
-{
- /** this is struct version 1 */
- int structVersion;
-
- /** The input latency of the stream in seconds. This value provides the most
- accurate estimate of input latency available to the implementation. It may
- differ significantly from the suggestedLatency value passed to Pa_OpenStream().
- The value of this field will be zero (0.) for output-only streams.
- @see PaTime
- */
- PaTime inputLatency;
-
- /** The output latency of the stream in seconds. This value provides the most
- accurate estimate of output latency available to the implementation. It may
- differ significantly from the suggestedLatency value passed to Pa_OpenStream().
- The value of this field will be zero (0.) for input-only streams.
- @see PaTime
- */
- PaTime outputLatency;
-
- /** The sample rate of the stream in Hertz (samples per second). In cases
- where the hardware sample rate is inaccurate and PortAudio is aware of it,
- the value of this field may be different from the sampleRate parameter
- passed to Pa_OpenStream(). If information about the actual hardware sample
- rate is not available, this field will have the same value as the sampleRate
- parameter passed to Pa_OpenStream().
- */
- double sampleRate;
-
-} PaStreamInfo;
-
-
-/** Retrieve a pointer to a PaStreamInfo structure containing information
- about the specified stream.
- @return A pointer to an immutable PaStreamInfo structure. If the stream
- parameter invalid, or an error is encountered, the function returns NULL.
-
- @param stream A pointer to an open stream previously created with Pa_OpenStream.
-
- @note PortAudio manages the memory referenced by the returned pointer,
- the client must not manipulate or free the memory. The pointer is only
- guaranteed to be valid until the specified stream is closed.
-
- @see PaStreamInfo
-*/
-const PaStreamInfo* Pa_GetStreamInfo( PaStream *stream );
-
-
-/** Determine the current time for the stream according to the same clock used
- to generate buffer timestamps. This time may be used for syncronising other
- events to the audio stream, for example synchronizing audio to MIDI.
-
- @return The stream's current time in seconds, or 0 if an error occurred.
-
- @see PaTime, PaStreamCallback
-*/
-PaTime Pa_GetStreamTime( PaStream *stream );
-
-
-/** Retrieve CPU usage information for the specified stream.
- The "CPU Load" is a fraction of total CPU time consumed by a callback stream's
- audio processing routines including, but not limited to the client supplied
- stream callback. This function does not work with blocking read/write streams.
-
- This function may be called from the stream callback function or the
- application.
-
- @return
- A floating point value, typically between 0.0 and 1.0, where 1.0 indicates
- that the stream callback is consuming the maximum number of CPU cycles possible
- to maintain real-time operation. A value of 0.5 would imply that PortAudio and
- the stream callback was consuming roughly 50% of the available CPU time. The
- return value may exceed 1.0. A value of 0.0 will always be returned for a
- blocking read/write stream, or if an error occurrs.
-*/
-double Pa_GetStreamCpuLoad( PaStream* stream );
-
-
-/** Read samples from an input stream. The function doesn't return until
- the entire buffer has been filled - this may involve waiting for the operating
- system to supply the data.
-
- @param stream A pointer to an open stream previously created with Pa_OpenStream.
-
- @param buffer A pointer to a buffer of sample frames. The buffer contains
- samples in the format specified by the inputParameters->sampleFormat field
- used to open the stream, and the number of channels specified by
- inputParameters->numChannels. If non-interleaved samples were requested,
- buffer is a pointer to the first element of an array of non-interleaved
- buffer pointers, one for each channel.
-
- @param frames The number of frames to be read into buffer. This parameter
- is not constrained to a specific range, however high performance applications
- will want to match this parameter to the framesPerBuffer parameter used
- when opening the stream.
-
- @return On success PaNoError will be returned, or PaInputOverflowed if input
- data was discarded by PortAudio after the previous call and before this call.
-*/
-PaError Pa_ReadStream( PaStream* stream,
- void *buffer,
- unsigned long frames );
-
-
-/** Write samples to an output stream. This function doesn't return until the
- entire buffer has been consumed - this may involve waiting for the operating
- system to consume the data.
-
- @param stream A pointer to an open stream previously created with Pa_OpenStream.
-
- @param buffer A pointer to a buffer of sample frames. The buffer contains
- samples in the format specified by the outputParameters->sampleFormat field
- used to open the stream, and the number of channels specified by
- outputParameters->numChannels. If non-interleaved samples were requested,
- buffer is a pointer to the first element of an array of non-interleaved
- buffer pointers, one for each channel.
-
- @param frames The number of frames to be written from buffer. This parameter
- is not constrained to a specific range, however high performance applications
- will want to match this parameter to the framesPerBuffer parameter used
- when opening the stream.
-
- @return On success PaNoError will be returned, or paOutputUnderflowed if
- additional output data was inserted after the previous call and before this
- call.
-*/
-PaError Pa_WriteStream( PaStream* stream,
- const void *buffer,
- unsigned long frames );
-
-
-/** Retrieve the number of frames that can be read from the stream without
- waiting.
-
- @return Returns a non-negative value representing the maximum number of frames
- that can be read from the stream without blocking or busy waiting or, a
- PaErrorCode (which are always negative) if PortAudio is not initialized or an
- error is encountered.
-*/
-signed long Pa_GetStreamReadAvailable( PaStream* stream );
-
-
-/** Retrieve the number of frames that can be written to the stream without
- waiting.
-
- @return Returns a non-negative value representing the maximum number of frames
- that can be written to the stream without blocking or busy waiting or, a
- PaErrorCode (which are always negative) if PortAudio is not initialized or an
- error is encountered.
-*/
-signed long Pa_GetStreamWriteAvailable( PaStream* stream );
-
-
-/* Miscellaneous utilities */
-
-
-/** Retrieve the size of a given sample format in bytes.
-
- @return The size in bytes of a single sample in the specified format,
- or paSampleFormatNotSupported if the format is not supported.
-*/
-PaError Pa_GetSampleSize( PaSampleFormat format );
-
-
-/** Put the caller to sleep for at least 'msec' milliseconds. This function is
- provided only as a convenience for authors of portable code (such as the tests
- and examples in the PortAudio distribution.)
-
- The function may sleep longer than requested so don't rely on this for accurate
- musical timing.
-*/
-void Pa_Sleep( long msec );
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PORTAUDIO_H */
diff --git a/navit/support/espeak/readclause.c b/navit/support/espeak/readclause.c
deleted file mode 100644
index b8d302a27..000000000
--- a/navit/support/espeak/readclause.c
+++ /dev/null
@@ -1,2440 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <wctype.h>
-#include <wchar.h>
-#include <math.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-#include "translate.h"
-
-#ifdef PLATFORM_POSIX
-#include <unistd.h>
-#endif
-
-#include <locale.h>
-#define N_XML_BUF 256
-
-#define double(x) ((double)(x))
-static const char *xmlbase = ""; // base URL from <speak>
-
-static int namedata_ix=0;
-static int n_namedata = 0;
-char *namedata = NULL;
-
-
-static FILE *f_input = NULL;
-static int ungot_char2 = 0;
-unsigned char *p_textinput;
-wchar_t *p_wchar_input;
-static int ungot_char;
-static const char *ungot_word = NULL;
-static int end_of_input;
-
-static int ignore_text=0; // set during <sub> ... </sub> to ignore text which has been replaced by an alias
-static int clear_skipping_text = 0; // next clause should clear the skipping_text flag
-int count_characters = 0;
-static int sayas_mode;
-static int ssml_ignore_l_angle = 0;
-
-static const char *punct_stop = ".:!?"; // pitch fall if followed by space
-static const char *punct_close = ")]}>;'\""; // always pitch fall unless followed by alnum
-
-// alter tone for announce punctuation or capitals
-static const char *tone_punct_on = "\0016T"; // add reverberation, lower pitch
-static const char *tone_punct_off = "\001T";
-
-// punctuations symbols that can end a clause
-static const unsigned short punct_chars[] = {',','.','?','!',':',';',
- 0x2013, // en-dash
- 0x2014, // em-dash
- 0x2026, // elipsis
-
- 0x037e, // Greek question mark (looks like semicolon)
- 0x0387, // Greek semicolon, ano teleia
- 0x0964, // Devanagari Danda (fullstop)
-
- 0x0589, // Armenian period
- 0x055d, // Armenian comma
- 0x055c, // Armenian exclamation
- 0x055e, // Armenian question
- 0x055b, // Armenian emphasis mark
-
- 0x1362, // Ethiopic period
- 0x1363,
- 0x1364,
- 0x1365,
- 0x1366,
- 0x1367,
- 0x1368,
-
- 0x3001, // ideograph comma
- 0x3002, // ideograph period
-
- 0xff01, // fullwidth exclamation
- 0xff0c, // fullwidth comma
- 0xff0e, // fullwidth period
- 0xff1a, // fullwidth colon
- 0xff1b, // fullwidth semicolon
- 0xff1f, // fullwidth question mark
-
- 0};
-
-
-// indexed by (entry num. in punct_chars) + 1
-// bits 0-7 pause x 10mS, bits 12-14 intonation type, bit 15 don't need following space or bracket
-static const unsigned int punct_attributes [] = { 0,
- CLAUSE_COMMA, CLAUSE_PERIOD, CLAUSE_QUESTION, CLAUSE_EXCLAMATION, CLAUSE_COLON, CLAUSE_SEMICOLON,
- CLAUSE_SEMICOLON, // en-dash
- CLAUSE_SEMICOLON, // em-dash
- CLAUSE_SEMICOLON, // elipsis
-
- CLAUSE_QUESTION, // Greek question mark
- CLAUSE_SEMICOLON, // Greek semicolon
- CLAUSE_PERIOD+0x8000, // Devanagari Danda (fullstop)
-
- CLAUSE_PERIOD+0x8000, // Armenian period
- CLAUSE_COMMA, // Armenian comma
- CLAUSE_EXCLAMATION + PUNCT_IN_WORD, // Armenian exclamation
- CLAUSE_QUESTION + PUNCT_IN_WORD, // Armenian question
- CLAUSE_PERIOD + PUNCT_IN_WORD, // Armenian emphasis mark
-
- CLAUSE_PERIOD, // Ethiopic period
- CLAUSE_COMMA, // Ethiopic comma
- CLAUSE_SEMICOLON, // Ethiopic semicolon
- CLAUSE_COLON, // Ethiopic colon
- CLAUSE_COLON, // Ethiopic preface colon
- CLAUSE_QUESTION, // Ethiopic question mark
- CLAUSE_PERIOD, // Ethiopic paragraph
-
- CLAUSE_COMMA+0x8000, // ideograph comma
- CLAUSE_PERIOD+0x8000, // ideograph period
-
- CLAUSE_EXCLAMATION+0x8000, // fullwidth
- CLAUSE_COMMA+0x8000,
- CLAUSE_PERIOD+0x8000,
- CLAUSE_COLON+0x8000,
- CLAUSE_SEMICOLON+0x8000,
- CLAUSE_QUESTION+0x8000,
-
- CLAUSE_SEMICOLON, // spare
- 0 };
-
-
-// stack for language and voice properties
-// frame 0 is for the defaults, before any ssml tags.
-typedef struct {
- int tag_type;
- int voice_variant;
- int voice_gender;
- int voice_age;
- char voice_name[40];
- char language[20];
-} SSML_STACK;
-
-#define N_SSML_STACK 20
-static int n_ssml_stack;
-static SSML_STACK ssml_stack[N_SSML_STACK];
-
-static char current_voice_id[40] = {0};
-
-
-#define N_PARAM_STACK 20
-static int n_param_stack;
-PARAM_STACK param_stack[N_PARAM_STACK];
-
-static int speech_parameters[N_SPEECH_PARAM]; // current values, from param_stack
-
-const int param_defaults[N_SPEECH_PARAM] = {
- 0, // silence (internal use)
- 170, // rate wpm
- 100, // volume
- 50, // pitch
- 50, // range
- 0, // punctuation
- 0, // capital letters
- 0, // wordgap
- 0, // options
- 0, // intonation
- 0,
- 0,
- 0, // emphasis
- 0, // line length
- 0, // voice type
-};
-
-
-#ifdef NEED_WCHAR_FUNCTIONS
-
-// additional Latin characters beyond the Latin1 character set
-#define MAX_WALPHA 0x233
-// indexed by character - 0x100
-// 0=not alphabetic, 0xff=lower case, other=value to add to upper case to convert to lower case
-static unsigned char walpha_tab[MAX_WALPHA-0xff] = {
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 100
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 110
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 120
- 0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1, // 130
- 0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, // 140
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 150
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 160
- 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, // 170
- 0xff, 210, 1,0xff, 1,0xff, 206, 1,0xff, 205, 205, 1,0xff,0xff, 79, 202, // 180
- 203, 1,0xff, 205, 207,0xff, 211, 209, 1,0xff,0xff,0xff, 211, 213,0xff, 214, // 190
- 1,0xff, 1,0xff, 1,0xff, 218, 1,0xff, 218,0xff,0xff, 1,0xff, 218, 1, // 1a0
- 0xff, 217, 217, 1,0xff, 1,0xff, 219, 1,0xff,0xff,0xff, 1,0xff,0xff,0xff, // 1b0
- 0xff,0xff,0xff,0xff, 2, 1,0xff, 2, 1,0xff, 2, 1,0xff, 1,0xff, 1, // 1c0
- 0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff,0xff, 1,0xff, // 1d0
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1e0
- 0xff, 2, 1,0xff, 1,0xff,0xff,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 1f0
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 200
- 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 210
- 0xff, 0, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, 1,0xff, // 220
- 1,0xff, 1,0xff }; // 230
-
-// use ctype.h functions for Latin1 (character < 0x100)
-int iswalpha(int c)
-{
- if(c < 0x100)
- return(isalpha(c));
- if((c > 0x3040) && (c <= 0xa700))
- return(1); // japanese, chinese characters
- if(c > MAX_WALPHA)
- return(0);
- return(walpha_tab[c-0x100]);
-}
-
-int iswdigit(int c)
-{
- if(c < 0x100)
- return(isdigit(c));
- return(0);
-}
-
-int iswalnum(int c)
-{
- if(iswdigit(c))
- return(1);
- return(iswalpha(c));
-}
-
-int towlower(int c)
-{
- int x;
- if(c < 0x100)
- return(tolower(c));
- if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff))
- return(c); // already lower case
- return(c + x); // convert to lower case
-}
-
-int towupper(int c)
-{
- // check whether the previous character code is the upper-case equivalent of this character
- if(tolower(c-1) == c)
- return(c-1); // yes, use it
- return(c); // no
-}
-
-int iswupper(int c)
-{
- int x;
- if(c < 0x100)
- return(isupper(c));
- if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff))
- return(0);
- return(1);
-}
-
-int iswlower(int c)
-{
- if(c < 0x100)
- return(islower(c));
- if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff))
- return(0);
- return(1);
-}
-
-int iswspace(int c)
-{
- if(c < 0x100)
- return(isspace(c));
- return(0);
-}
-
-int iswpunct(int c)
-{
- if(c < 0x100)
- return(ispunct(c));
- return(0);
-}
-
-const wchar_t *wcschr(const wchar_t *str, int c)
-{
- while(*str != 0)
- {
- if(*str == c)
- return(str);
- str++;
- }
- return(NULL);
-}
-
-#ifndef WINCE
-// wcslen() is provided by WINCE, but not the other wchar functions
-const int wcslen(const wchar_t *str)
-{
- int ix=0;
-
- while(*str != 0)
- {
- ix++;
- }
- return(ix);
-}
-#endif
-
-float wcstod(const wchar_t *str, wchar_t **tailptr)
-{
- int ix;
- char buf[80];
- while(isspace(*str)) str++;
- for(ix=0; ix<80; ix++)
- {
- buf[ix] = str[ix];
- if(isspace(buf[ix]))
- break;
- }
- *tailptr = (wchar_t *)&str[ix];
- return(atof(buf));
-}
-#endif
-
-int towlower2(unsigned int c)
-{
- // check for non-standard upper to lower case conversions
- if(c == 'I')
- {
- if(translator->translator_name == L('t','r'))
- {
- c = 0x131; // I -> ı
- }
- }
- return(towlower(c));
-}
-
-static void GetC_unget(int c)
-{//==========================
-// This is only called with UTF8 input, not wchar input
- if(f_input != NULL)
- ungetc(c,f_input);
- else
- {
- p_textinput--;
- *p_textinput = c;
- end_of_input = 0;
- }
-}
-
-int Eof(void)
-{//==========
- if(ungot_char != 0)
- return(0);
-
- if(f_input != 0)
- return(feof(f_input));
-
- return(end_of_input);
-}
-
-
-static int GetC_get(void)
-{//======================
- unsigned int c;
- unsigned int c2;
-
- if(f_input != NULL)
- {
- c = fgetc(f_input);
- if(feof(f_input)) c = ' ';
-
- if(option_multibyte == espeakCHARS_16BIT)
- {
- c2 = fgetc(f_input);
- if(feof(f_input)) c2 = 0;
- c = c + (c2 << 8);
- }
- return(c);
- }
-
- if(option_multibyte == espeakCHARS_WCHAR)
- {
- if(*p_wchar_input == 0)
- {
- end_of_input = 1;
- return(0);
- }
-
- if(!end_of_input)
- return(*p_wchar_input++);
- }
- else
- {
- if(*p_textinput == 0)
- {
- end_of_input = 1;
- return(0);
- }
-
- if(!end_of_input)
- {
- if(option_multibyte == espeakCHARS_16BIT)
- {
- c = p_textinput[0] + (p_textinput[1] << 8);
- p_textinput += 2;
- return(c);
- }
- return(*p_textinput++ & 0xff);
- }
- }
- return(0);
-}
-
-
-static int GetC(void)
-{//==================
-// Returns a unicode wide character
-// Performs UTF8 checking and conversion
-
- int c;
- int c1;
- int c2;
- int cbuf[4];
- int ix;
- int n_bytes;
- unsigned char m;
- static int ungot2 = 0;
- static const unsigned char mask[4] = {0xff,0x1f,0x0f,0x07};
- static const unsigned char mask2[4] = {0,0x80,0x20,0x30};
-
- if((c1 = ungot_char) != 0)
- {
- ungot_char = 0;
- return(c1);
- }
-
- if(ungot2 != 0)
- {
- c1 = ungot2;
- ungot2 = 0;
- }
- else
- {
- c1 = GetC_get();
- }
-
- if((option_multibyte == espeakCHARS_WCHAR) || (option_multibyte == espeakCHARS_16BIT))
- {
- count_characters++;
- return(c1); // wchar_t text
- }
-
- if((option_multibyte < 2) && (c1 & 0x80))
- {
- // multi-byte utf8 encoding, convert to unicode
- n_bytes = 0;
-
- if(((c1 & 0xe0) == 0xc0) && ((c1 & 0x1e) != 0))
- n_bytes = 1;
- else
- if((c1 & 0xf0) == 0xe0)
- n_bytes = 2;
- else
- if(((c1 & 0xf8) == 0xf0) && ((c1 & 0x0f) <= 4))
- n_bytes = 3;
-
- if((ix = n_bytes) > 0)
- {
- c = c1 & mask[ix];
- m = mask2[ix];
- while(ix > 0)
- {
- if((c2 = cbuf[ix] = GetC_get()) == 0)
- {
- if(option_multibyte==espeakCHARS_AUTO)
- option_multibyte=espeakCHARS_8BIT; // change "auto" option to "no"
- GetC_unget(' ');
- break;
- }
-
- if((c2 & 0xc0) != 0x80)
- {
- // This is not UTF8. Change to 8-bit characterset.
- if((n_bytes == 2) && (ix == 1))
- ungot2 = cbuf[2];
- GetC_unget(c2);
- break;
- }
- m = 0x80;
- c = (c << 6) + (c2 & 0x3f);
- ix--;
- }
- if(ix == 0)
- {
- count_characters++;
- return(c);
- }
- }
- // top-bit-set character is not utf8, drop through to 8bit charset case
- if((option_multibyte==espeakCHARS_AUTO) && !Eof())
- option_multibyte=espeakCHARS_8BIT; // change "auto" option to "no"
- }
-
- // 8 bit character set, convert to unicode if
- count_characters++;
- if(c1 >= 0xa0)
- return(translator->charset_a0[c1-0xa0]);
- return(c1);
-} // end of GetC
-
-
-static void UngetC(int c)
-{//======================
- ungot_char = c;
-}
-
-
-static const char *WordToString2(unsigned int word)
-{//================================================
-// Convert a language mnemonic word into a string
- int ix;
- static char buf[5];
- char *p;
-
- p = buf;
- for(ix=3; ix>=0; ix--)
- {
- if((*p = word >> (ix*8)) != 0)
- p++;
- }
- *p = 0;
- return(buf);
-}
-
-
-static const char *LookupSpecial(Translator *tr, const char *string, char* text_out)
-{//=================================================================================
- unsigned int flags[2];
- char phonemes[55];
- char phonemes2[55];
- char *string1 = (char *)string;
-
- if(LookupDictList(tr,&string1,phonemes,flags,0,NULL))
- {
- SetWordStress(tr, phonemes, &flags[0], -1, 0);
- DecodePhonemes(phonemes,phonemes2);
- sprintf(text_out,"[[%s]]",phonemes2);
- option_phoneme_input |= 2;
- return(text_out);
- }
- return(NULL);
-}
-
-
-static const char *LookupCharName(Translator *tr, int c)
-{//=====================================================
-// Find the phoneme string (in ascii) to speak the name of character c
-// Used for punctuation characters and symbols
-
- int ix;
- unsigned int flags[2];
- char single_letter[24];
- char phonemes[60];
- char phonemes2[60];
- const char *lang_name = NULL;
- char *string;
- static char buf[60];
-
- buf[0] = 0;
- flags[0] = 0;
- flags[1] = 0;
- single_letter[0] = 0;
- single_letter[1] = '_';
- ix = utf8_out(c,&single_letter[2]);
- single_letter[2+ix]=0;
-
- string = &single_letter[1];
- if(LookupDictList(tr, &string, phonemes, flags, 0, NULL) == 0)
- {
- // try _* then *
- string = &single_letter[2];
- if(LookupDictList(tr, &string, phonemes, flags, 0, NULL) == 0)
- {
- // now try the rules
- single_letter[1] = ' ';
- TranslateRules(tr, &single_letter[2], phonemes, sizeof(phonemes), NULL,0,NULL);
- }
- }
-
- if((phonemes[0] == 0) && (tr->translator_name != L('e','n')))
- {
- // not found, try English
- SetTranslator2("en");
- string = &single_letter[1];
- single_letter[1] = '_';
- if(LookupDictList(translator2, &string, phonemes, flags, 0, NULL) == 0)
- {
- string = &single_letter[2];
- LookupDictList(translator2, &string, phonemes, flags, 0, NULL);
- }
- if(phonemes[0])
- {
- lang_name = "en";
- }
- else
- {
- SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
- }
- }
-
- if(phonemes[0])
- {
- if(lang_name)
- {
- SetWordStress(translator2, phonemes, &flags[0], -1, 0);
- DecodePhonemes(phonemes,phonemes2);
- sprintf(buf,"[[_^_%s %s _^_%s]]","en",phonemes2,WordToString2(tr->translator_name));
- SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
- }
- else
- {
- SetWordStress(tr, phonemes, &flags[0], -1, 0);
- DecodePhonemes(phonemes,phonemes2);
- sprintf(buf,"[[%s]] ",phonemes2);
- }
- option_phoneme_input |= 2;
- }
- else
- {
- strcpy(buf,"[[(X1)(X1)(X1)]]");
- option_phoneme_input |= 2;
- }
-
- return(buf);
-}
-
-int Read4Bytes(FILE *f)
-{//====================
-// Read 4 bytes (least significant first) into a word
- int ix;
- unsigned char c;
- int acc=0;
-
- for(ix=0; ix<4; ix++)
- {
- c = fgetc(f) & 0xff;
- acc += (c << (ix*8));
- }
- return(acc);
-}
-
-
-static int LoadSoundFile(const char *fname, int index)
-{//===================================================
- FILE *f;
- char *p;
- int *ip;
- int length;
- char fname_temp[100];
- char fname2[sizeof(path_home)+13+40];
-
- if(fname == NULL)
- {
- // filename is already in the table
- fname = soundicon_tab[index].filename;
- }
-
- if(fname==NULL)
- return(1);
-
- if(fname[0] != '/')
- {
- // a relative path, look in espeak-data/soundicons
- sprintf(fname2,"%s%csoundicons%c%s",path_home,PATHSEP,PATHSEP,fname);
- fname = fname2;
- }
-
- f = NULL;
-#ifdef PLATFORM_POSIX
- if((f = fopen(fname,"rb")) != NULL)
- {
- int ix;
- int fd_temp;
- const char *resample;
- int header[3];
- char command[sizeof(fname2)+sizeof(fname2)+40];
-
- fseek(f,20,SEEK_SET);
- for(ix=0; ix<3; ix++)
- header[ix] = Read4Bytes(f);
-
- // if the sound file is not mono, 16 bit signed, at the correct sample rate, then convert it
- if((header[0] != 0x10001) || (header[1] != samplerate) || (header[2] != samplerate*2))
- {
- fclose(f);
- f = NULL;
-
- if(header[2] == samplerate)
- resample = "";
- else
- resample = "polyphase";
-
- strcpy(fname_temp,"/tmp/espeakXXXXXX");
- if((fd_temp = mkstemp(fname_temp)) >= 0)
- {
- close(fd_temp);
-// sprintf(fname_temp,"%s.wav",tmpnam(NULL));
- sprintf(command,"sox \"%s\" -r %d -w -s -c1 %s %s\n", fname, samplerate, fname_temp, resample);
- if(system(command) == 0)
- {
- fname = fname_temp;
- }
- }
- }
- }
-#endif
-
- if(f == NULL)
- {
- f = fopen(fname,"rb");
- if(f == NULL)
- {
- fprintf(stderr,"Can't read temp file: %s\n",fname);
- return(3);
- }
- }
-
- length = GetFileLength(fname);
- fseek(f,0,SEEK_SET);
- if((p = (char *)realloc(soundicon_tab[index].data, length)) == NULL)
- {
- fclose(f);
- return(4);
- }
- fread(p,length,1,f);
- fclose(f);
-#if 0
- remove(fname_temp);
-#endif
-
- ip = (int *)(&p[40]);
- soundicon_tab[index].length = (*ip) / 2; // length in samples
- soundicon_tab[index].data = p;
- return(0);
-} // end of LoadSoundFile
-
-
-static int LookupSoundicon(int c)
-{//==============================
-// Find the sound icon number for a punctuation chatacter
- int ix;
-
- for(ix=N_SOUNDICON_SLOTS; ix<n_soundicon_tab; ix++)
- {
- if(soundicon_tab[ix].name == c)
- {
- if(soundicon_tab[ix].length == 0)
- {
- if(LoadSoundFile(NULL,ix)!=0)
- return(-1); // sound file is not available
- }
- return(ix);
- }
- }
- return(-1);
-}
-
-
-static int LoadSoundFile2(const char *fname)
-{//=========================================
-// Load a sound file into one of the reserved slots in the sound icon table
-// (if it'snot already loaded)
-
- int ix;
- static int slot = -1;
-
- for(ix=0; ix<n_soundicon_tab; ix++)
- {
- if(((soundicon_tab[ix].filename != NULL) && strcmp(fname, soundicon_tab[ix].filename) == 0))
- return(ix); // already loaded
- }
-
- // load the file into the next slot
- slot++;
- if(slot >= N_SOUNDICON_SLOTS)
- slot = 0;
-
- if(LoadSoundFile(fname, slot) != 0)
- return(-1);
-
- soundicon_tab[slot].filename = (char *)realloc(soundicon_tab[ix].filename, strlen(fname)+1);
- strcpy(soundicon_tab[slot].filename, fname);
- return(slot);
-}
-
-
-
-static int AnnouncePunctuation(Translator *tr, int c1, int c2, char *buf, int bufix)
-{//=================================================================================
- // announce punctuation names
- // c1: the punctuation character
- // c2: the following character
-
- int punct_count;
- const char *punctname;
- int found = 0;
- int soundicon;
- char *p;
-
- if((soundicon = LookupSoundicon(c1)) >= 0)
- {
- // add an embedded command to play the soundicon
- sprintf(&buf[bufix],"\001%dI ",soundicon);
- UngetC(c2);
- found = 1;
- }
- else
- if((punctname = LookupCharName(tr, c1)) != NULL)
- {
- found = 1;
- if(bufix==0)
- {
- punct_count=1;
- while(c2 == c1)
- {
- punct_count++;
- c2 = GetC();
- }
- UngetC(c2);
-
- p = &buf[bufix];
- if(punct_count==1)
- {
- sprintf(p,"%s %s %s",tone_punct_on,punctname,tone_punct_off);
- }
- else
- if(punct_count < 4)
- {
- sprintf(p,"\001+10S%s",tone_punct_on);
- while(punct_count-- > 0)
- sprintf(buf,"%s %s",buf,punctname);
- sprintf(p,"%s %s\001-10S",buf,tone_punct_off);
- }
- else
- {
- sprintf(p,"%s %s %d %s %s",
- tone_punct_on,punctname,punct_count,punctname,tone_punct_off);
- return(CLAUSE_COMMA);
- }
- }
- else
- {
- // end the clause now and pick up the punctuation next time
- UngetC(c2);
- if(option_ssml)
- {
- if((c1 == '<') || (c1 == '&'))
- ssml_ignore_l_angle = c1; // this was &lt; which was converted to <, don't pick it up again as <
- }
- ungot_char2 = c1;
- buf[bufix] = ' ';
- buf[bufix+1] = 0;
- }
- }
-
- if(found == 0)
- return(-1);
-
- if(c1 == '-')
- return(CLAUSE_NONE); // no pause
- if(bufix > 0)
- return(CLAUSE_SHORTCOMMA);
- if((strchr_w(punct_close,c1) != NULL) && !iswalnum(c2))
- return(CLAUSE_SHORTFALL+4);
- if(iswspace(c2) && strchr_w(punct_stop,c1)!=NULL)
- return(punct_attributes[lookupwchar(punct_chars,c1)]);
-
- return(CLAUSE_SHORTCOMMA);
-} // end of AnnouncePunctuation
-
-#define SSML_SPEAK 1
-#define SSML_VOICE 2
-#define SSML_PROSODY 3
-#define SSML_SAYAS 4
-#define SSML_MARK 5
-#define SSML_SENTENCE 6
-#define SSML_PARAGRAPH 7
-#define SSML_PHONEME 8
-#define SSML_SUB 9
-#define SSML_STYLE 10
-#define SSML_AUDIO 11
-#define SSML_EMPHASIS 12
-#define SSML_BREAK 13
-#define SSML_IGNORE_TEXT 14
-#define HTML_BREAK 15
-#define SSML_CLOSE 0x10 // for a closing tag, OR this with the tag type
-
-// these tags have no effect if they are self-closing, eg. <voice />
-static char ignore_if_self_closing[] = {0,1,1,1,1,0,0,0,0,1,1,0,1,0,1,0,0};
-
-
-static MNEM_TAB ssmltags[] = {
- {"speak", SSML_SPEAK},
- {"voice", SSML_VOICE},
- {"prosody", SSML_PROSODY},
- {"say-as", SSML_SAYAS},
- {"mark", SSML_MARK},
- {"s", SSML_SENTENCE},
- {"p", SSML_PARAGRAPH},
- {"phoneme", SSML_PHONEME},
- {"sub", SSML_SUB},
- {"tts:style", SSML_STYLE},
- {"audio", SSML_AUDIO},
- {"emphasis", SSML_EMPHASIS},
- {"break", SSML_BREAK},
- {"metadata", SSML_IGNORE_TEXT},
-
- {"br", HTML_BREAK},
- {"li", HTML_BREAK},
- {"img", HTML_BREAK},
- {"td", HTML_BREAK},
- {"h1", SSML_PARAGRAPH},
- {"h2", SSML_PARAGRAPH},
- {"h3", SSML_PARAGRAPH},
- {"h4", SSML_PARAGRAPH},
- {"hr", SSML_PARAGRAPH},
- {"script", SSML_IGNORE_TEXT},
- {"style", SSML_IGNORE_TEXT},
- {NULL,0}};
-
-
-
-
-static const char *VoiceFromStack()
-{//================================
-// Use the voice properties from the SSML stack to choose a voice, and switch
-// to that voice if it's not the current voice
- int ix;
- SSML_STACK *sp;
- const char *v_id;
- int voice_name_specified;
- int voice_found;
- espeak_VOICE voice_select;
- char voice_name[40];
- char language[40];
-
- strcpy(voice_name,ssml_stack[0].voice_name);
- strcpy(language,ssml_stack[0].language);
- voice_select.age = ssml_stack[0].voice_age;
- voice_select.gender = ssml_stack[0].voice_gender;
- voice_select.variant = ssml_stack[0].voice_variant;
- voice_select.identifier = NULL;
-
- for(ix=0; ix<n_ssml_stack; ix++)
- {
- sp = &ssml_stack[ix];
- voice_name_specified = 0;
-
- if((sp->voice_name[0] != 0) && (SelectVoiceByName(NULL,sp->voice_name) != NULL))
- {
- voice_name_specified = 1;
- strcpy(voice_name, sp->voice_name);
- language[0] = 0;
- voice_select.gender = 0;
- voice_select.age = 0;
- voice_select.variant = 0;
- }
- if(sp->language[0] != 0)
- {
- strcpy(language, sp->language);
- if(voice_name_specified == 0)
- voice_name[0] = 0; // forget a previous voice name if a language is specified
- }
- if(sp->voice_gender != 0)
- voice_select.gender = sp->voice_gender;
- if(sp->voice_age != 0)
- voice_select.age = sp->voice_age;
- if(sp->voice_variant != 0)
- voice_select.variant = sp->voice_variant;
- }
-
- voice_select.name = voice_name;
- voice_select.languages = language;
- v_id = SelectVoice(&voice_select, &voice_found);
- if(v_id == NULL)
- return("default");
- return(v_id);
-} // end of VoiceFromStack
-
-
-
-static void ProcessParamStack(char *outbuf, int *outix)
-{//====================================================
-// Set the speech parameters from the parameter stack
- int param;
- int ix;
- int value;
- char buf[20];
- int new_parameters[N_SPEECH_PARAM];
- static char cmd_letter[N_SPEECH_PARAM] = {0, 'S','A','P','R', 0, 0, 0, 0, 0, 0, 0, 'F'}; // embedded command letters
-
-
- for(param=0; param<N_SPEECH_PARAM; param++)
- new_parameters[param] = -1;
-
- for(ix=0; ix<n_param_stack; ix++)
- {
- for(param=0; param<N_SPEECH_PARAM; param++)
- {
- if(param_stack[ix].parameter[param] >= 0)
- new_parameters[param] = param_stack[ix].parameter[param];
- }
- }
-
- for(param=0; param<N_SPEECH_PARAM; param++)
- {
- if((value = new_parameters[param]) != speech_parameters[param])
- {
- buf[0] = 0;
-
- switch(param)
- {
- case espeakPUNCTUATION:
- option_punctuation = value-1;
- break;
-
- case espeakCAPITALS:
- option_capitals = value;
- break;
-
- case espeakRATE:
- case espeakVOLUME:
- case espeakPITCH:
- case espeakRANGE:
- case espeakEMPHASIS:
- sprintf(buf,"%c%d%c",CTRL_EMBEDDED,value,cmd_letter[param]);
- break;
- }
-
- speech_parameters[param] = new_parameters[param];
- strcpy(&outbuf[*outix],buf);
- (*outix) += strlen(buf);
- }
- }
-} // end of ProcessParamStack
-
-
-static PARAM_STACK *PushParamStack(int tag_type)
-{//=============================================
- int ix;
- PARAM_STACK *sp;
-
- sp = &param_stack[n_param_stack];
- if(n_param_stack < (N_PARAM_STACK-1))
- n_param_stack++;
-
- sp->type = tag_type;
- for(ix=0; ix<N_SPEECH_PARAM; ix++)
- {
- sp->parameter[ix] = -1;
- }
- return(sp);
-} // end of PushParamStack
-
-
-static void PopParamStack(int tag_type, char *outbuf, int *outix)
-{//==============================================================
- // unwind the stack up to and including the previous tag of this type
- int ix;
- int top = 0;
-
- if(tag_type >= SSML_CLOSE)
- tag_type -= SSML_CLOSE;
-
- for(ix=0; ix<n_param_stack; ix++)
- {
- if(param_stack[ix].type == tag_type)
- {
- top = ix;
- }
- }
- if(top > 0)
- {
- n_param_stack = top;
- }
- ProcessParamStack(outbuf, outix);
-} // end of PopParamStack
-
-
-
-static wchar_t *GetSsmlAttribute(wchar_t *pw, const char *name)
-{//============================================================
-// Gets the value string for an attribute.
-// Returns NULL if the attribute is not present
- int ix;
- static wchar_t empty[1] = {0};
-
- while(*pw != 0)
- {
- if(iswspace(pw[-1]))
- {
- ix = 0;
- while(*pw == name[ix])
- {
- pw++;
- ix++;
- }
- if(name[ix]==0)
- {
- // found the attribute, now get the value
- while(iswspace(*pw)) pw++;
- if(*pw == '=') pw++;
- while(iswspace(*pw)) pw++;
- if(*pw == '"')
- return(pw+1);
- else
- return(empty);
- }
- }
- pw++;
- }
- return(NULL);
-} // end of GetSsmlAttribute
-
-
-static int attrcmp(const wchar_t *string1, const char *string2)
-{//============================================================
- int ix;
-
- if(string1 == NULL)
- return(1);
-
- for(ix=0; (string1[ix] == string2[ix]) && (string1[ix] != 0); ix++)
- {
- }
- if((string1[ix]=='"') && (string2[ix]==0))
- return(0);
- return(1);
-}
-
-
-static int attrlookup(const wchar_t *string1, const MNEM_TAB *mtab)
-{//================================================================
- int ix;
-
- for(ix=0; mtab[ix].mnem != NULL; ix++)
- {
- if(attrcmp(string1,mtab[ix].mnem) == 0)
- return(mtab[ix].value);
- }
- return(mtab[ix].value);
-}
-
-
-static int attrnumber(const wchar_t *pw, int default_value, int type)
-{//==================================================================
- int value = 0;
-
- if((pw == NULL) || !isdigit(*pw))
- return(default_value);
-
- while(isdigit(*pw))
- {
- value = value*10 + *pw++ - '0';
- }
- if((type==1) && (towlower(*pw)=='s'))
- {
- // time: seconds rather than ms
- value *= 1000;
- }
- return(value);
-} // end of attrnumber
-
-
-
-static int attrcopy_utf8(char *buf, const wchar_t *pw, int len)
-{//============================================================
-// Convert attribute string into utf8, write to buf, and return its utf8 length
- unsigned int c;
- int ix = 0;
- int n;
- int prev_c = 0;
-
- if(pw != NULL)
- {
- while((ix < (len-4)) && ((c = *pw++) != 0))
- {
- if((c=='"') && (prev_c != '\\'))
- break; // " indicates end of attribute, unless preceded by backstroke
- n = utf8_out(c,&buf[ix]);
- ix += n;
- prev_c = c;
- }
- }
- buf[ix] = 0;
- return(ix);
-} // end of attrcopy_utf8
-
-
-
-static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out)
-{//=============================================================================
- int sign = 0;
- wchar_t *tail;
- float value;
-
- while(iswspace(*pw)) pw++;
- if(*pw == '+')
- {
- pw++;
- sign = 1;
- }
- if(*pw == '-')
- {
- pw++;
- sign = -1;
- }
- value = (float)wcstod(pw,&tail);
- if(tail == pw)
- {
- // failed to find a number, return 100%
- *value_out = 100;
- return(2);
- }
-
- if(*tail == '%')
- {
- if(sign != 0)
- value = 100 + (sign * value);
- *value_out = (int)value;
- return(2); // percentage
- }
-
- if((tail[0]=='s') && (tail[1]=='t'))
- {
- double x;
- // convert from semitones to a frequency percentage
- x = pow(double(2.0),double((value*sign)/12)) * 100;
- *value_out = (int)x;
- return(2); // percentage
- }
-
- if(param_type == espeakRATE)
- {
- *value_out = (int)(value * 100);
- return(2); // percentage
- }
-
- *value_out = (int)value;
- return(sign); // -1, 0, or 1
-} // end of attr_prosody_value
-
-
-int AddNameData(const char *name, int wide)
-{//========================================
-// Add the name to the namedata and return its position
-// (Used by the Windows SAPI wrapper)
- int ix;
- int len;
- void *vp;
-
- if(wide)
- {
- len = (wcslen((const wchar_t *)name)+1)*sizeof(wchar_t);
- n_namedata = (n_namedata + sizeof(wchar_t) - 1) % sizeof(wchar_t); // round to wchar_t boundary
- }
- else
- {
- len = strlen(name)+1;
- }
-
- if(namedata_ix+len >= n_namedata)
- {
- // allocate more space for marker names
- if((vp = realloc(namedata, namedata_ix+len + 300)) == NULL)
- return(-1); // failed to allocate, original data is unchanged but ignore this new name
-
- namedata = (char *)vp;
- n_namedata = namedata_ix+len + 300;
- }
- memcpy(&namedata[ix = namedata_ix],name,len);
- namedata_ix += len;
- return(ix);
-} // end of AddNameData
-
-
-void SetVoiceStack(espeak_VOICE *v)
-{//================================
- SSML_STACK *sp;
- sp = &ssml_stack[0];
-
- if(v == NULL)
- {
- memset(sp,0,sizeof(ssml_stack[0]));
- return;
- }
- if(v->languages != NULL)
- strcpy(sp->language,v->languages);
- if(v->name != NULL)
- strcpy(sp->voice_name,v->name);
- sp->voice_variant = v->variant;
- sp->voice_age = v->age;
- sp->voice_gender = v->gender;
-}
-
-
-static int GetVoiceAttributes(wchar_t *pw, int tag_type)
-{//=====================================================
-// Determines whether voice attribute are specified in this tag, and if so, whether this means
-// a voice change.
-// If it's a closing tag, delete the top frame of the stack and determine whether this implies
-// a voice change.
-// Returns CLAUSE_BIT_VOICE if there is a voice change
-
- wchar_t *lang;
- wchar_t *gender;
- wchar_t *name;
- wchar_t *age;
- wchar_t *variant;
- const char *new_voice_id;
- SSML_STACK *ssml_sp;
-
- static const MNEM_TAB mnem_gender[] = {
- {"male", 1},
- {"female", 2},
- {"neutral", 3},
- {NULL, 0}};
-
- if(tag_type & SSML_CLOSE)
- {
- // delete a stack frame
- if(n_ssml_stack > 1)
- {
- n_ssml_stack--;
- }
- }
- else
- {
- // add a stack frame if any voice details are specified
- lang = GetSsmlAttribute(pw,"xml:lang");
-
- if(tag_type != SSML_VOICE)
- {
- // only expect an xml:lang attribute
- name = NULL;
- variant = NULL;
- age = NULL;
- gender = NULL;
- }
- else
- {
- name = GetSsmlAttribute(pw,"name");
- variant = GetSsmlAttribute(pw,"variant");
- age = GetSsmlAttribute(pw,"age");
- gender = GetSsmlAttribute(pw,"gender");
- }
-
- if((tag_type != SSML_VOICE) && (lang==NULL))
- return(0); // <s> or <p> without language spec, nothing to do
-
- ssml_sp = &ssml_stack[n_ssml_stack++];
-
- attrcopy_utf8(ssml_sp->language,lang,sizeof(ssml_sp->language));
- attrcopy_utf8(ssml_sp->voice_name,name,sizeof(ssml_sp->voice_name));
- ssml_sp->voice_variant = attrnumber(variant,1,0)-1;
- ssml_sp->voice_age = attrnumber(age,0,0);
- ssml_sp->voice_gender = attrlookup(gender,mnem_gender);
- ssml_sp->tag_type = tag_type;
- }
-
- new_voice_id = VoiceFromStack();
- if(strcmp(new_voice_id,current_voice_id) != 0)
- {
- // add an embedded command to change the voice
- strcpy(current_voice_id,new_voice_id);
- return(CLAUSE_BIT_VOICE); // change of voice
- }
-
- return(0);
-} // end of GetVoiceAttributes
-
-
-static void SetProsodyParameter(int param_type, wchar_t *attr1, PARAM_STACK *sp)
-{//=============================================================================
- int value;
- int sign;
-
- static const MNEM_TAB mnem_volume[] = {
- {"default",100},
- {"silent",0},
- {"x-soft",30},
- {"soft",65},
- {"medium",100},
- {"loud",150},
- {"x-loud",230},
- {NULL, -1}};
-
- static const MNEM_TAB mnem_rate[] = {
- {"default",100},
- {"x-slow",60},
- {"slow",80},
- {"medium",100},
- {"fast",120},
- {"x-fast",150},
- {NULL, -1}};
-
- static const MNEM_TAB mnem_pitch[] = {
- {"default",100},
- {"x-low",70},
- {"low",85},
- {"medium",100},
- {"high",110},
- {"x-high",120},
- {NULL, -1}};
-
- static const MNEM_TAB mnem_range[] = {
- {"default",100},
- {"x-low",20},
- {"low",50},
- {"medium",100},
- {"high",140},
- {"x-high",180},
- {NULL, -1}};
-
- static const MNEM_TAB *mnem_tabs[5] = {
- NULL, mnem_rate, mnem_volume, mnem_pitch, mnem_range };
-
-
- if((value = attrlookup(attr1,mnem_tabs[param_type])) >= 0)
- {
- // mnemonic specifies a value as a percentage of the base pitch/range/rate/volume
- sp->parameter[param_type] = (param_stack[0].parameter[param_type] * value)/100;
- }
- else
- {
- sign = attr_prosody_value(param_type,attr1,&value);
-
- if(sign == 0)
- sp->parameter[param_type] = value; // absolute value in Hz
- else
- if(sign == 2)
- {
- // change specified as percentage or in semitones
- sp->parameter[param_type] = (speech_parameters[param_type] * value)/100;
- }
- else
- {
- // change specified as plus or minus Hz
- sp->parameter[param_type] = speech_parameters[param_type] + (value*sign);
- }
- }
-} // end of SetProsodyParemeter
-
-
-
-static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outbuf, int self_closing)
-{//==================================================================================================
-// xml_buf is the tag and attributes with a zero terminator in place of the original '>'
-// returns a clause terminator value.
-
- unsigned int ix;
- int index;
- int c;
- int tag_type;
- int value;
- int value2;
- int value3;
- int voice_change_flag;
- wchar_t *px;
- wchar_t *attr1;
- wchar_t *attr2;
- wchar_t *attr3;
- int terminator;
- char *uri;
- int param_type;
- char tag_name[40];
- char buf[80];
- PARAM_STACK *sp;
- SSML_STACK *ssml_sp;
-
- static const MNEM_TAB mnem_punct[] = {
- {"none", 1},
- {"all", 2},
- {"some", 3},
- {NULL, -1}};
-
- static const MNEM_TAB mnem_capitals[] = {
- {"no", 0},
- {"spelling", 2},
- {"icon", 1},
- {"pitch", 20}, // this is the amount by which to raise the pitch
- {NULL, -1}};
-
- static const MNEM_TAB mnem_interpret_as[] = {
- {"characters",SAYAS_CHARS},
- {"tts:char",SAYAS_SINGLE_CHARS},
- {"tts:key",SAYAS_KEY},
- {"tts:digits",SAYAS_DIGITS},
- {"telephone",SAYAS_DIGITS1},
- {NULL, -1}};
-
- static const MNEM_TAB mnem_sayas_format[] = {
- {"glyphs",1},
- {NULL, -1}};
-
- static const MNEM_TAB mnem_break[] = {
- {"none",0},
- {"x-weak",1},
- {"weak",2},
- {"medium",3},
- {"strong",4},
- {"x-strong",5},
- {NULL,-1}};
-
- static const MNEM_TAB mnem_emphasis[] = {
- {"none",1},
- {"reduced",2},
- {"moderate",3},
- {"strong",4},
- {NULL,-1}};
-
- static const char *prosody_attr[5] = {
- NULL, "rate", "volume", "pitch", "range" };
-
- for(ix=0; ix<(sizeof(tag_name)-1); ix++)
- {
- if(((c = xml_buf[ix]) == 0) || iswspace(c))
- break;
- tag_name[ix] = tolower((char)c);
- }
- tag_name[ix] = 0;
-
- px = &xml_buf[ix]; // the tag's attributes
-
- if(tag_name[0] == '/')
- {
- tag_type = LookupMnem(ssmltags,&tag_name[1]) + SSML_CLOSE; // closing tag
- }
- else
- {
- tag_type = LookupMnem(ssmltags,tag_name);
-
- if(self_closing && ignore_if_self_closing[tag_type])
- return(0);
- }
-
- voice_change_flag = 0;
- terminator = CLAUSE_NONE;
- ssml_sp = &ssml_stack[n_ssml_stack-1];
-
- switch(tag_type)
- {
- case SSML_STYLE:
- sp = PushParamStack(tag_type);
- attr1 = GetSsmlAttribute(px,"field");
- attr2 = GetSsmlAttribute(px,"mode");
-
-
- if(attrcmp(attr1,"punctuation")==0)
- {
- value = attrlookup(attr2,mnem_punct);
- sp->parameter[espeakPUNCTUATION] = value;
- }
- else
- if(attrcmp(attr1,"capital_letters")==0)
- {
- value = attrlookup(attr2,mnem_capitals);
- sp->parameter[espeakCAPITALS] = value;
- }
- ProcessParamStack(outbuf, outix);
- break;
-
- case SSML_PROSODY:
- sp = PushParamStack(tag_type);
-
- // look for attributes: rate, volume, pitch, range
- for(param_type=espeakRATE; param_type <= espeakRANGE; param_type++)
- {
- if((attr1 = GetSsmlAttribute(px,prosody_attr[param_type])) != NULL)
- {
- SetProsodyParameter(param_type, attr1, sp);
- }
- }
-
- ProcessParamStack(outbuf, outix);
- break;
-
- case SSML_EMPHASIS:
- sp = PushParamStack(tag_type);
- value = 3; // default is "moderate"
- if((attr1 = GetSsmlAttribute(px,"level")) != NULL)
- {
- value = attrlookup(attr1,mnem_emphasis);
- }
-
- if(translator->langopts.tone_language == 1)
- {
- static unsigned char emphasis_to_pitch_range[] = {50,50,40,70,90,90};
- static unsigned char emphasis_to_volume[] = {100,100,70,110,140,140};
- // tone language (eg.Chinese) do emphasis by increasing the pitch range.
- sp->parameter[espeakRANGE] = emphasis_to_pitch_range[value];
- sp->parameter[espeakVOLUME] = emphasis_to_volume[value];
- }
- else
- {
- sp->parameter[espeakEMPHASIS] = value;
- }
- ProcessParamStack(outbuf, outix);
- break;
-
- case SSML_STYLE + SSML_CLOSE:
- case SSML_PROSODY + SSML_CLOSE:
- case SSML_EMPHASIS + SSML_CLOSE:
- PopParamStack(tag_type, outbuf, outix);
- break;
-
- case SSML_SAYAS:
- attr1 = GetSsmlAttribute(px,"interpret-as");
- attr2 = GetSsmlAttribute(px,"format");
- attr3 = GetSsmlAttribute(px,"detail");
- value = attrlookup(attr1,mnem_interpret_as);
- value2 = attrlookup(attr2,mnem_sayas_format);
- if(value2 == 1)
- value = SAYAS_GLYPHS;
-
- value3 = attrnumber(attr3,0,0);
-
- if(value == SAYAS_DIGITS)
- {
- if(value3 <= 1)
- value = SAYAS_DIGITS1;
- else
- value = SAYAS_DIGITS + value3;
- }
-
- sprintf(buf,"%c%dY",CTRL_EMBEDDED,value);
- strcpy(&outbuf[*outix],buf);
- (*outix) += strlen(buf);
-
- sayas_mode = value; // punctuation doesn't end clause during SAY-AS
- break;
-
- case SSML_SAYAS + SSML_CLOSE:
- outbuf[(*outix)++] = CTRL_EMBEDDED;
- outbuf[(*outix)++] = 'Y';
- sayas_mode = 0;
- break;
-
- case SSML_SUB:
- if((attr1 = GetSsmlAttribute(px,"alias")) != NULL)
- {
- // use the alias rather than the text
- ignore_text = 1;
- (*outix) += attrcopy_utf8(&outbuf[*outix],attr1,n_outbuf-*outix);
- }
- break;
-
- case SSML_IGNORE_TEXT:
- ignore_text = 1;
- break;
-
- case SSML_SUB + SSML_CLOSE:
- case SSML_IGNORE_TEXT + SSML_CLOSE:
- ignore_text = 0;
- break;
-
- case SSML_MARK:
- if((attr1 = GetSsmlAttribute(px,"name")) != NULL)
- {
- // add name to circular buffer of marker names
- attrcopy_utf8(buf,attr1,sizeof(buf));
-
- if(strcmp(skip_marker,buf)==0)
- {
- // This is the marker we are waiting for before starting to speak
- clear_skipping_text = 1;
- skip_marker[0] = 0;
- return(CLAUSE_NONE);
- }
-
- if((index = AddNameData(buf,0)) >= 0)
- {
- sprintf(buf,"%c%dM",CTRL_EMBEDDED,index);
- strcpy(&outbuf[*outix],buf);
- (*outix) += strlen(buf);
- }
- }
- break;
-
- case SSML_AUDIO:
- sp = PushParamStack(tag_type);
-
- if((attr1 = GetSsmlAttribute(px,"src")) != NULL)
- {
- char fname[256];
- attrcopy_utf8(buf,attr1,sizeof(buf));
-
- if(uri_callback == NULL)
- {
- if((xmlbase != NULL) && (buf[0] != '/'))
- {
- sprintf(fname,"%s/%s",xmlbase,buf);
- index = LoadSoundFile2(fname);
- }
- else
- {
- index = LoadSoundFile2(buf);
- }
- if(index >= 0)
- {
- sprintf(buf,"%c%dI",CTRL_EMBEDDED,index);
- strcpy(&outbuf[*outix],buf);
- (*outix) += strlen(buf);
- sp->parameter[espeakSILENCE] = 1;
- }
- }
- else
- {
- if((index = AddNameData(buf,0)) >= 0)
- {
- uri = &namedata[index];
- if(uri_callback(1,uri,xmlbase) == 0)
- {
- sprintf(buf,"%c%dU",CTRL_EMBEDDED,index);
- strcpy(&outbuf[*outix],buf);
- (*outix) += strlen(buf);
- sp->parameter[espeakSILENCE] = 1;
- }
- }
- }
- }
- ProcessParamStack(outbuf, outix);
-
- if(self_closing)
- PopParamStack(tag_type, outbuf, outix);
- return(CLAUSE_NONE);
-
- case SSML_AUDIO + SSML_CLOSE:
- PopParamStack(tag_type, outbuf, outix);
- return(CLAUSE_NONE);
-
- case SSML_BREAK:
- value = 21;
- terminator = CLAUSE_NONE;
-
- if((attr1 = GetSsmlAttribute(px,"strength")) != NULL)
- {
- static int break_value[6] = {0,7,14,21,40,80}; // *10mS
- value = attrlookup(attr1,mnem_break);
- if(value < 3)
- {
- // adjust prepause on the following word
- sprintf(&outbuf[*outix],"%c%dB",CTRL_EMBEDDED,value);
- (*outix) += 3;
- terminator = 0;
- }
- value = break_value[value];
- }
- if((attr2 = GetSsmlAttribute(px,"time")) != NULL)
- {
- value = (attrnumber(attr2,0,1) * 25) / speed.speed_factor1; // compensate for speaking speed to keep constant pause length
-
- if(terminator == 0)
- terminator = CLAUSE_NONE;
- }
- if(terminator)
- {
- if(value > 0xfff)
- value = 0xfff;
- return(terminator + value);
- }
- break;
-
- case SSML_SPEAK:
- if((attr1 = GetSsmlAttribute(px,"xml:base")) != NULL)
- {
- attrcopy_utf8(buf,attr1,sizeof(buf));
- if((index = AddNameData(buf,0)) >= 0)
- {
- xmlbase = &namedata[index];
- }
- }
- if(GetVoiceAttributes(px, tag_type) == 0)
- return(0); // no voice change
- return(CLAUSE_VOICE);
-
- case SSML_VOICE:
- if(GetVoiceAttributes(px, tag_type) == 0)
- return(0); // no voice change
- return(CLAUSE_VOICE);
-
- case SSML_SPEAK + SSML_CLOSE:
- // unwind stack until the previous <voice> or <speak> tag
- while((n_ssml_stack > 1) && (ssml_stack[n_ssml_stack-1].tag_type != SSML_SPEAK))
- {
- n_ssml_stack--;
- }
- return(CLAUSE_PERIOD + GetVoiceAttributes(px, tag_type));
-
- case SSML_VOICE + SSML_CLOSE:
- // unwind stack until the previous <voice> or <speak> tag
- while((n_ssml_stack > 1) && (ssml_stack[n_ssml_stack-1].tag_type != SSML_VOICE))
- {
- n_ssml_stack--;
- }
-
-terminator=0; // ?? Sentence intonation, but no pause ??
- return(terminator + GetVoiceAttributes(px, tag_type));
-
- case HTML_BREAK:
- case HTML_BREAK + SSML_CLOSE:
- return(CLAUSE_COLON);
-
- case SSML_SENTENCE:
- if(ssml_sp->tag_type == SSML_SENTENCE)
- {
- // new sentence implies end-of-sentence
- voice_change_flag = GetVoiceAttributes(px, SSML_SENTENCE+SSML_CLOSE);
- }
- voice_change_flag |= GetVoiceAttributes(px, tag_type);
- return(CLAUSE_PARAGRAPH + voice_change_flag);
-
-
- case SSML_PARAGRAPH:
- if(ssml_sp->tag_type == SSML_SENTENCE)
- {
- // new paragraph implies end-of-sentence or end-of-paragraph
- voice_change_flag = GetVoiceAttributes(px, SSML_SENTENCE+SSML_CLOSE);
- }
- if(ssml_sp->tag_type == SSML_PARAGRAPH)
- {
- // new paragraph implies end-of-sentence or end-of-paragraph
- voice_change_flag |= GetVoiceAttributes(px, SSML_PARAGRAPH+SSML_CLOSE);
- }
- voice_change_flag |= GetVoiceAttributes(px, tag_type);
- return(CLAUSE_PARAGRAPH + voice_change_flag);
-
-
- case SSML_SENTENCE + SSML_CLOSE:
- if(ssml_sp->tag_type == SSML_SENTENCE)
- {
- // end of a sentence which specified a language
- voice_change_flag = GetVoiceAttributes(px, tag_type);
- }
- return(CLAUSE_PERIOD + voice_change_flag);
-
-
- case SSML_PARAGRAPH + SSML_CLOSE:
- if((ssml_sp->tag_type == SSML_SENTENCE) || (ssml_sp->tag_type == SSML_PARAGRAPH))
- {
- // End of a paragraph which specified a language.
- // (End-of-paragraph also implies end-of-sentence)
- return(GetVoiceAttributes(px, tag_type) + CLAUSE_PARAGRAPH);
- }
- return(CLAUSE_PARAGRAPH);
- }
- return(0);
-} // end of ProcessSsmlTag
-
-
-static MNEM_TAB xml_char_mnemonics[] = {
- {"gt",'>'},
- {"lt",'<'},
- {"amp", '&'},
- {"quot", '"'},
- {"nbsp", ' '},
- {"apos", '\''},
- {NULL,-1}};
-
-
-int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type)
-{//=============================================================================================================
-/* Find the end of the current clause.
- Write the clause into buf
-
- returns: clause type (bits 0-7: pause x10mS, bits 8-11 intonation type)
-
- Also checks for blank line (paragraph) as end-of-clause indicator.
-
- Does not end clause for:
- punctuation immediately followed by alphanumeric eg. 1.23 !Speak :path
- repeated punctuation, eg. ... !!!
-*/
- int c1=' '; // current character
- int c2; // next character
- int cprev=' '; // previous character
- int parag;
- int ix = 0;
- int j;
- int nl_count;
- int linelength = 0;
- int phoneme_mode = 0;
- int n_xml_buf;
- int terminator;
- int punct;
- int found;
- int any_alnum = 0;
- int self_closing;
- int punct_data;
- int stressed_word = 0;
- const char *p;
- wchar_t xml_buf[N_XML_BUF+1];
-
-#define N_XML_BUF2 20
- char xml_buf2[N_XML_BUF2+2]; // for &<name> and &<number> sequences
- static char ungot_string[N_XML_BUF2+4];
- static int ungot_string_ix = -1;
-
- if(clear_skipping_text)
- {
- skipping_text = 0;
- clear_skipping_text = 0;
- }
-
- tr->clause_upper_count = 0;
- tr->clause_lower_count = 0;
- end_of_input = 0;
- *tone_type = 0;
-
-f_input = f_in; // for GetC etc
-
- if(ungot_word != NULL)
- {
- strcpy(buf,ungot_word);
- ix += strlen(ungot_word);
- ungot_word = NULL;
- }
-
- if(ungot_char2 != 0)
- {
- c2 = ungot_char2;
- }
- else
- {
- c2 = GetC();
- }
-
- while(!Eof() || (ungot_char != 0) || (ungot_char2 != 0) || (ungot_string_ix >= 0))
- {
- if(!iswalnum(c1))
- {
- if((end_character_position > 0) && (count_characters > end_character_position))
- {
- end_of_input = 1;
- return(CLAUSE_EOF);
- }
-
- if((skip_characters > 0) && (count_characters > skip_characters))
- {
- // reached the specified start position
- // don't break a word
- clear_skipping_text = 1;
- skip_characters = 0;
- UngetC(c2);
- return(CLAUSE_NONE);
- }
- }
-
- cprev = c1;
- c1 = c2;
-
- if(ungot_string_ix >= 0)
- {
- if(ungot_string[ungot_string_ix] == 0)
- ungot_string_ix = -1;
- }
-
- if((ungot_string_ix == 0) && (ungot_char2 == 0))
- {
- c1 = ungot_string[ungot_string_ix++];
- }
- if(ungot_string_ix >= 0)
- {
- c2 = ungot_string[ungot_string_ix++];
- }
- else
- {
- c2 = GetC();
-
- if(Eof())
- {
- c2 = ' ';
- }
- }
- ungot_char2 = 0;
-
- if((option_ssml) && (phoneme_mode==0))
- {
- if((ssml_ignore_l_angle != '&') && (c1 == '&') && ((c2=='#') || ((c2 >= 'a') && (c2 <= 'z'))))
- {
- n_xml_buf = 0;
- c1 = c2;
- while(!Eof() && (iswalnum(c1) || (c1=='#')) && (n_xml_buf < N_XML_BUF2))
- {
- xml_buf2[n_xml_buf++] = c1;
- c1 = GetC();
- }
- xml_buf2[n_xml_buf] = 0;
- c2 = GetC();
- sprintf(ungot_string,"%s%c%c",&xml_buf2[0],c1,c2);
-
- if(c1 == ';')
- {
- if(xml_buf2[0] == '#')
- {
- // character code number
- if(xml_buf2[1] == 'x')
- found = sscanf(&xml_buf2[2],"%x",(unsigned int *)(&c1));
- else
- found = sscanf(&xml_buf2[1],"%d",&c1);
- }
- else
- {
- if((found = LookupMnem(xml_char_mnemonics,xml_buf2)) != -1)
- {
- c1 = found;
- if(c2 == 0)
- c2 = ' ';
- }
- }
- }
- else
- {
- found = -1;
- }
-
- if(found <= 0)
- {
- ungot_string_ix = 0;
- c1 = '&';
- c2 = ' ';
- }
-
- if((c1 <= 0x20) && ((sayas_mode == SAYAS_SINGLE_CHARS) || (sayas_mode == SAYAS_KEY)))
- {
- c1 += 0xe000; // move into unicode private usage area
- }
- }
- else
- if((c1 == '<') && (ssml_ignore_l_angle != '<'))
- {
- if(c2 == '!')
- {
- // a comment, ignore until closing '<'
- while(!Eof() && (c1 != '>'))
- {
- c1 = GetC();
- }
- c2 = ' ';
- }
- else
- if((c2 == '/') || iswalpha(c2))
- {
- // SSML Tag
- n_xml_buf = 0;
- c1 = c2;
- while(!Eof() && (c1 != '>') && (n_xml_buf < N_XML_BUF))
- {
- xml_buf[n_xml_buf++] = c1;
- c1 = GetC();
- }
- xml_buf[n_xml_buf] = 0;
- c2 = ' ';
-
- buf[ix++] = ' ';
-
- self_closing = 0;
- if(xml_buf[n_xml_buf-1] == '/')
- {
- // a self-closing tag
- xml_buf[n_xml_buf-1] = ' ';
- self_closing = 1;
- }
-
- terminator = ProcessSsmlTag(xml_buf,buf,ix,n_buf,self_closing);
-
- if(terminator != 0)
- {
- buf[ix] = ' ';
- buf[ix++] = 0;
-
- if(terminator & CLAUSE_BIT_VOICE)
- {
- // a change in voice, write the new voice name to the end of the buf
- p = current_voice_id;
- while((*p != 0) && (ix < (n_buf-1)))
- {
- buf[ix++] = *p++;
- }
- buf[ix++] = 0;
- }
- return(terminator);
- }
- continue;
- }
- }
- }
- ssml_ignore_l_angle=0;
-
- if(ignore_text)
- continue;
-
- if((c2=='\n') && (option_linelength == -1))
- {
- // single-line mode, return immediately on NL
- if((punct = lookupwchar(punct_chars,c1)) == 0)
- {
- charix[ix] = count_characters - clause_start_char;
- *charix_top = ix;
- ix += utf8_out(c1,&buf[ix]);
- terminator = CLAUSE_PERIOD; // line doesn't end in punctuation, assume period
- }
- else
- {
- terminator = punct_attributes[punct];
- }
- buf[ix] = ' ';
- buf[ix+1] = 0;
- return(terminator);
- }
-
- if((c1 == CTRL_EMBEDDED) || (c1 == ctrl_embedded))
- {
- // an embedded command. If it's a voice change, end the clause
- if(c2 == 'V')
- {
- buf[ix++] = 0; // end the clause at this point
- while(!iswspace(c1 = GetC()) && !Eof() && (ix < (n_buf-1)))
- buf[ix++] = c1; // add voice name to end of buffer, after the text
- buf[ix++] = 0;
- return(CLAUSE_VOICE);
- }
- else
- if(c2 == 'B')
- {
- // set the punctuation option from an embedded command
- // B0 B1 B<punct list><space>
- strcpy(&buf[ix]," ");
- ix += 3;
-
- if((c2 = GetC()) == '0')
- option_punctuation = 0;
- else
- {
- option_punctuation = 1;
- option_punctlist[0] = 0;
- if(c2 != '1')
- {
- // a list of punctuation characters to be spoken, terminated by space
- j = 0;
- while(!iswspace(c2) && !Eof())
- {
- option_punctlist[j++] = c2;
- c2 = GetC();
- buf[ix++] = ' ';
- }
- option_punctlist[j] = 0; // terminate punctuation list
- option_punctuation = 2;
- }
- }
- c2 = GetC();
- continue;
- }
- }
-
- linelength++;
-
- if(iswalnum(c1))
- any_alnum = 1;
- else
- {
- if(stressed_word)
- {
- stressed_word = 0;
- c1 = CHAR_EMPHASIS; // indicate this word is stressed
- UngetC(c2);
- c2 = ' ';
- }
-
- if(iswspace(c1))
- {
- char *p_word;
-
- if(tr->translator_name == 0x6a626f)
- {
- // language jbo : lojban
- // treat "i" or ".i" as end-of-sentence
- p_word = &buf[ix-1];
- if(p_word[0] == 'i')
- {
- if(p_word[-1] == '.')
- p_word--;
- if(p_word[-1] == ' ')
- {
- ungot_word = "i ";
- UngetC(c2);
- p_word[0] = 0;
- return(CLAUSE_PERIOD);
- }
- }
- }
- }
- }
-
- if(iswupper(c1))
- {
- tr->clause_upper_count++;
- if((option_capitals == 2) && (sayas_mode == 0) && !iswupper(cprev))
- {
- char text_buf[40];
- char text_buf2[30];
- if(LookupSpecial(tr, "_cap", text_buf2) != NULL)
- {
- sprintf(text_buf,"%s%s%s",tone_punct_on,text_buf2,tone_punct_off);
- j = strlen(text_buf);
- if((ix + j) < n_buf)
- {
- strcpy(&buf[ix],text_buf);
- ix += j;
- }
- }
- }
- }
- else
- if(iswalpha(c1))
- tr->clause_lower_count++;
-
- if(option_phoneme_input)
- {
- if(phoneme_mode > 0)
- phoneme_mode--;
- else
- if((c1 == '[') && (c2 == '['))
- phoneme_mode = -1; // input is phoneme mnemonics, so don't look for punctuation
- else
- if((c1 == ']') && (c2 == ']'))
- phoneme_mode = 2; // set phoneme_mode to zero after the next two characters
- }
-
- if(c1 == '\n')
- {
- parag = 0;
-
- // count consecutive newlines, ignoring other spaces
- while(!Eof() && iswspace(c2))
- {
- if(c2 == '\n')
- parag++;
- c2 = GetC();
- }
- if(parag > 0)
- {
- // 2nd newline, assume paragraph
- UngetC(c2);
-
- buf[ix] = ' ';
- buf[ix+1] = 0;
- if(parag > 3)
- parag = 3;
-if(option_ssml) parag=1;
- return((CLAUSE_PARAGRAPH-30) + 30*parag); // several blank lines, longer pause
- }
-
- if(linelength <= option_linelength)
- {
- // treat lines shorter than a specified length as end-of-clause
- UngetC(c2);
- buf[ix] = ' ';
- buf[ix+1] = 0;
- return(CLAUSE_COLON);
- }
-
- linelength = 0;
- }
-
- if(option_punctuation && (phoneme_mode==0) && (sayas_mode==0) && iswpunct(c1))
- {
- // option is set to explicitly speak punctuation characters
- // if a list of allowed punctuation has been set up, check whether the character is in it
- if((option_punctuation == 1) || (wcschr(option_punctlist,c1) != NULL))
- {
- if((terminator = AnnouncePunctuation(tr, c1, c2, buf, ix)) >= 0)
- return(terminator);
- }
- }
-
- if((phoneme_mode==0) && (sayas_mode==0) && ((punct = lookupwchar(punct_chars,c1)) != 0))
- {
- punct_data = punct_attributes[punct];
-
- if(punct_data & PUNCT_IN_WORD)
- {
- // Armenian punctuation inside a word
- stressed_word = 1;
- *tone_type = punct_data >> 12 & 0xf; // override the end-of-sentence type
- continue;
- }
-
- if((iswspace(c2) || (punct_data & 0x8000) || IsBracket(c2) || (c2=='?') || (c2=='-') || Eof()))
- {
- // note: (c2='?') is for when a smart-quote has been replaced by '?'
- buf[ix] = ' ';
- buf[ix+1] = 0;
-
- if((c1 == '.') && (cprev == '.'))
- {
- c1 = 0x2026;
- punct = 9; // elipsis
- }
-
- nl_count = 0;
- while(!Eof() && iswspace(c2))
- {
- if(c2 == '\n')
- nl_count++;
- c2 = GetC(); // skip past space(s)
- }
- if(!Eof())
- {
- UngetC(c2);
- }
-
- if((nl_count==0) && (c1 == '.'))
- {
- if(iswdigit(cprev) && (tr->langopts.numbers & 0x10000) && islower(c2))
- {
- // dot after a number indicates an ordinal number
- c2 = '.';
- continue;
- }
- if(iswlower(c2))
- {
- c2 = ' ';
- continue; // next word has no capital letter, this dot is probably from an abbreviation
- }
- if(any_alnum==0)
- {
- c2 = ' '; // no letters or digits yet, so probably not a sentence terminator
- continue;
- }
- }
-
- punct_data = punct_attributes[punct];
- if(nl_count > 1)
- {
- if((punct_data == CLAUSE_QUESTION) || (punct_data == CLAUSE_EXCLAMATION))
- return(punct_data + 35); // with a longer pause
- return(CLAUSE_PARAGRAPH);
- }
- return(punct_data); // only recognise punctuation if followed by a blank or bracket/quote
- }
- }
-
- if(speech_parameters[espeakSILENCE]==1)
- continue;
-
- j = ix+1;
- ix += utf8_out(c1,&buf[ix]); // buf[ix++] = c1;
- if(!iswspace(c1) && !IsBracket(c1))
- {
- charix[ix] = count_characters - clause_start_char;
- while(j < ix)
- charix[j++] = -1; // subsequent bytes of a multibyte character
- }
- *charix_top = ix;
-
- if(((ix > (n_buf-20)) && !IsAlpha(c1) && !iswdigit(c1)) || (ix >= (n_buf-2)))
- {
- // clause too long, getting near end of buffer, so break here
- // try to break at a word boundary (unless we actually reach the end of buffer).
- buf[ix] = ' ';
- buf[ix+1] = 0;
- UngetC(c2);
- return(CLAUSE_NONE);
- }
- }
-
- if(stressed_word)
- {
- ix += utf8_out(CHAR_EMPHASIS, &buf[ix]);
- }
- buf[ix] = ' ';
- buf[ix+1] = 0;
- return(CLAUSE_EOF); // end of file
-} // end of ReadClause
-
-
-void InitNamedata(void)
-{//====================
- namedata_ix = 0;
- if(namedata != NULL)
- {
- free(namedata);
- namedata = NULL;
- n_namedata = 0;
- }
-}
-
-
-void InitText2(void)
-{//=================
- int param;
-
- ungot_char = 0;
-
- n_ssml_stack =1;
- n_param_stack = 1;
- ssml_stack[0].tag_type = 0;
-
- for(param=0; param<N_SPEECH_PARAM; param++)
- speech_parameters[param] = param_stack[0].parameter[param]; // set all speech parameters to defaults
-
- option_punctuation = speech_parameters[espeakPUNCTUATION];
- option_capitals = speech_parameters[espeakCAPITALS];
-
- current_voice_id[0] = 0;
-
- ignore_text = 0;
- clear_skipping_text = 0;
- count_characters = -1;
- sayas_mode = 0;
-
- xmlbase = NULL;
-}
-
diff --git a/navit/support/espeak/setlengths.c b/navit/support/espeak/setlengths.c
deleted file mode 100755
index ed4421bf9..000000000
--- a/navit/support/espeak/setlengths.c
+++ /dev/null
@@ -1,673 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <wctype.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-#include "translate.h"
-
-extern int GetAmplitude(void);
-
-
-// convert from words-per-minute to internal speed factor
-static unsigned char speed_lookup[290] = {
- 250, 246, 243, 239, 236, // 80
- 233, 229, 226, 223, 220, // 85
- 217, 214, 211, 208, 205, // 90
- 202, 197, 194, 192, 190, // 95
- 187, 185, 183, 180, 178, // 100
- 176, 174, 172, 170, 168, // 105
- 166, 164, 161, 159, 158, // 110
- 156, 154, 152, 150, 148, // 115
- 146, 145, 143, 141, 137, // 120
- 136, 135, 133, 132, 131, // 125
- 129, 128, 127, 126, 125, // 130
- 124, 122, 121, 120, 119, // 135
- 117, 116, 115, 114, 113, // 140
- 112, 111, 110, 108, 107, // 145
- 106, 105, 104, 103, 102, // 150
- 101, 100, 99, 98, 97, // 155
- 96, 95, 93, 92, 92, // 160
- 91, 90, 89, 89, 88, // 165
- 87, 87, 86, 85, 85, // 170
- 84, 83, 83, 82, 81, // 175
- 80, 80, 79, 78, 78, // 180
- 77, 76, 76, 75, 73, // 185
- 72, 72, 71, 71, 70, // 190
- 70, 69, 69, 68, 67, // 195
- 67, 66, 66, 65, 65, // 200
- 64, 64, 63, 63, 62, // 205
- 62, 61, 60, 60, 59, // 210
- 59, 58, 58, 57, 57, // 215
- 56, 56, 55, 55, 55, // 220
- 54, 54, 53, 53, 52, // 225
- 52, 51, 51, 50, 50, // 230
- 49, 49, 49, 48, 48, // 235
- 47, 47, 46, 46, 46, // 240
- 45, 45, 44, 44, 43, // 245
- 43, 43, 42, 42, 41, // 250
- 41, 41, 40, 40, 39, // 255
- 39, 39, 38, 38, 38, // 260
- 37, 37, 37, 36, 36, // 265
- 35, 35, 35, 34, 34, // 270
- 34, 33, 33, 33, 32, // 275
- 32, 32, 32, 31, 31, // 280
- 31, 30, 30, 30, 29, // 285
- 29, 29, 29, 28, 28, // 290
- 28, 28, 27, 27, 27, // 295
- 26, 26, 26, 26, 25, // 300
- 25, 25, 22, 22, 22, // 305
- 22, 22, 22, 22, 22, // 310
- 21, 21, 21, 21, 21, // 315
- 21, 20, 20, 20, 20, // 320
- 20, 15, 15, 15, 15, // 325
- 15, 15, 15, 15, 16, // 330
- 16, 16, 16, 15, 15, // 335
- 15, 15, 15, 15, 15, // 340
- 15, 17, 17, 16, 16, // 345
- 15, 15, 14, 14, 13, // 350
- 13, 12, 12, 11, 11, // 355
- 10, 10, 9, 8, 8, // 360
- 7, 6, 5, 5, 4, // 365
-};
-
-// speed_factor2 adjustments for speeds 370 to 390
-static unsigned char faster[] = {
-114,112,110,109,107,105,104,102,100,98, // 370-379
-96,94,92,90,88,85,83,80,78,75,72 }; //380-390
-
-static int speed1 = 130;
-static int speed2 = 121;
-static int speed3 = 118;
-
-
-
-void SetSpeed(int control)
-{//=======================
- int x;
- int s1;
- int wpm;
- int wpm2;
-
- wpm = embedded_value[EMBED_S];
- if(control == 2)
- wpm = embedded_value[EMBED_S2];
- wpm2 = wpm;
-
- if(wpm > 369) wpm = 369;
- if(wpm < 80) wpm = 80;
-
- x = speed_lookup[wpm-80];
-
- if(control & 1)
- {
- // set speed factors for different syllable positions within a word
- // these are used in CalcLengths()
- speed1 = (x * voice->speedf1)/256;
- speed2 = (x * voice->speedf2)/256;
- speed3 = (x * voice->speedf3)/256;
- }
-
- if(control & 2)
- {
- // these are used in synthesis file
- s1 = (x * voice->speedf1)/256;
- speed.speed_factor1 = (256 * s1)/115; // full speed adjustment, used for pause length
-if(speed.speed_factor1 < 15)
- speed.speed_factor1 = 15;
- if(wpm >= 170)
-// speed_factor2 = 100 + (166*s1)/128; // reduced speed adjustment, used for playing recorded sounds
- speed.speed_factor2 = 110 + (150*s1)/128; // reduced speed adjustment, used for playing recorded sounds
- else
- speed.speed_factor2 = 128 + (128*s1)/130; // = 215 at 170 wpm
-
- if(wpm2 > 369)
- {
- if(wpm2 > 390)
- wpm2 = 390;
- speed.speed_factor2 = faster[wpm2 - 370];
- }
- }
-
- speed.min_sample_len = 450;
- speed.speed_factor3 = 110; // controls the effect of FRFLAG_LEN_MOD reduce length change
-
- if(wpm2 >= 370)
- {
- // TESTING
- // use experimental fast settings if they have been specified in the Voice
- if(speed.fast_settings[0] > 0)
- speed.speed_factor1 = speed.fast_settings[0];
- if(speed.fast_settings[1] > 0)
- speed.speed_factor2 = speed.fast_settings[1];
- if(speed.fast_settings[2] > 0)
- speed.speed_factor3 = speed.fast_settings[2];
- }
-} // end of SetSpeed
-
-
-#ifdef deleted
-void SetAmplitude(int amp)
-{//=======================
- static unsigned char amplitude_factor[] = {0,5,6,7,9,11,14,17,21,26, 32, 38,44,50,56,63,70,77,84,91,100 };
-
- if((amp >= 0) && (amp <= 20))
- {
- option_amplitude = (amplitude_factor[amp] * 480)/256;
- }
-}
-#endif
-
-
-
-void SetParameter(int parameter, int value, int relative)
-{//======================================================
-// parameter: reset-all, amp, pitch, speed, linelength, expression, capitals, number grouping
-// relative 0=absolute 1=relative
-
- int new_value = value;
- int default_value;
-
- if(relative)
- {
- if(parameter < 5)
- {
- default_value = param_defaults[parameter];
- new_value = default_value + (default_value * value)/100;
- }
- }
- param_stack[0].parameter[parameter] = new_value;
-
- switch(parameter)
- {
- case espeakRATE:
- embedded_value[EMBED_S] = new_value;
- embedded_value[EMBED_S2] = new_value;
- SetSpeed(3);
- break;
-
- case espeakVOLUME:
- embedded_value[EMBED_A] = new_value;
- GetAmplitude();
- break;
-
- case espeakPITCH:
- if(new_value > 99) new_value = 99;
- if(new_value < 0) new_value = 0;
- embedded_value[EMBED_P] = new_value;
- break;
-
- case espeakRANGE:
- if(new_value > 99) new_value = 99;
- embedded_value[EMBED_R] = new_value;
- break;
-
- case espeakLINELENGTH:
- option_linelength = new_value;
- break;
-
- case espeakWORDGAP:
- option_wordgap = new_value;
- break;
-
- case espeakINTONATION:
- if((new_value & 0xff) != 0)
- translator->langopts.intonation_group = new_value & 0xff;
- option_tone_flags = new_value;
- break;
-
- default:
- break;
- }
-} // end of SetParameter
-
-
-
-static void DoEmbedded2(int *embix)
-{//================================
- // There were embedded commands in the text at this point
-
- unsigned int word;
-
- do {
- word = embedded_list[(*embix)++];
-
- if((word & 0x1f) == EMBED_S)
- {
- // speed
- SetEmbedded(word & 0x7f, word >> 8); // adjusts embedded_value[EMBED_S]
- SetSpeed(1);
- }
- } while((word & 0x80) == 0);
-}
-
-
-void CalcLengths(Translator *tr)
-{//==============================
- int ix;
- int ix2;
- PHONEME_LIST *prev;
- PHONEME_LIST *next;
- PHONEME_LIST *next2;
- PHONEME_LIST *next3;
- PHONEME_LIST *p;
- PHONEME_LIST *p2;
-
- int stress;
- int type;
- static int more_syllables=0;
- int pre_sonorant=0;
- int pre_voiced=0;
- int last_pitch = 0;
- int pitch_start;
- int length_mod;
- int len;
- int env2;
- int end_of_clause;
- int embedded_ix = 0;
- int min_drop;
- int emphasized;
- int tone_mod;
- unsigned char *pitch_env=NULL;
-
- for(ix=1; ix<n_phoneme_list; ix++)
- {
- prev = &phoneme_list[ix-1];
- p = &phoneme_list[ix];
- stress = p->stresslevel & 0x7;
- emphasized = p->stresslevel & 0x8;
-
- next = &phoneme_list[ix+1];
-
- if(p->synthflags & SFLAG_EMBEDDED)
- {
- DoEmbedded2(&embedded_ix);
- }
-
- type = p->type;
- if(p->synthflags & SFLAG_SYLLABLE)
- type = phVOWEL;
-
- switch(type)
- {
- case phPAUSE:
- last_pitch = 0;
- break;
-
- case phSTOP:
- last_pitch = 0;
- if(prev->type == phFRICATIVE)
- p->prepause = 20;
- else
- if((more_syllables > 0) || (stress < 4))
- p->prepause = 40;
- else
- p->prepause = 60;
-
- if(prev->type == phSTOP)
- p->prepause = 60;
-
- if((tr->langopts.word_gap & 0x10) && (p->newword))
- p->prepause = 60;
-
- if(p->ph->phflags & phLENGTHENSTOP)
- p->prepause += 30;
-
- if(p->synthflags & SFLAG_LENGTHEN)
- p->prepause += tr->langopts.long_stop;
- break;
-
- case phVFRICATIVE:
- if(next->type==phVOWEL)
- {
- pre_voiced = 1;
- } // drop through
- case phFRICATIVE:
- if(p->newword)
- p->prepause = 15;
-
- if(next->type==phPAUSE && prev->type==phNASAL && !(p->ph->phflags&phFORTIS))
- p->prepause = 25;
-
- if(prev->ph->phflags & phBRKAFTER)
- p->prepause = 30;
-
- if((p->ph->phflags & phSIBILANT) && next->type==phSTOP && !next->newword)
- {
- if(prev->type == phVOWEL)
- p->length = 200; // ?? should do this if it's from a prefix
- else
- p->length = 150;
- }
- else
- p->length = 256;
-
- if((tr->langopts.word_gap & 0x10) && (p->newword))
- p->prepause = 30;
-
- break;
-
- case phVSTOP:
- if(prev->type==phVFRICATIVE || prev->type==phFRICATIVE || (prev->ph->phflags & phSIBILANT) || (prev->type == phLIQUID))
- p->prepause = 30;
-
- if(next->type==phVOWEL || next->type==phLIQUID)
- {
- if((next->type==phVOWEL) || !next->newword)
- pre_voiced = 1;
-
- p->prepause = 40;
-
- if((prev->type == phPAUSE) || (prev->type == phVOWEL)) // || (prev->ph->mnemonic == ('/'*256+'r')))
- p->prepause = 0;
- else
- if(p->newword==0)
- {
- if(prev->type==phLIQUID)
- p->prepause = 20;
- if(prev->type==phNASAL)
- p->prepause = 12;
-
- if(prev->type==phSTOP && !(prev->ph->phflags & phFORTIS))
- p->prepause = 0;
- }
- }
- if((tr->langopts.word_gap & 0x10) && (p->newword) && (p->prepause < 20))
- p->prepause = 20;
-
- break;
-
- case phLIQUID:
- case phNASAL:
- p->amp = tr->stress_amps[1]; // unless changed later
- p->length = 256; // TEMPORARY
- min_drop = 0;
-
- if(p->newword)
- {
- if(prev->type==phLIQUID)
- p->prepause = 25;
- if(prev->type==phVOWEL)
- p->prepause = 12;
- }
-
- if(next->type==phVOWEL)
- {
- pre_sonorant = 1;
- }
- else
- if((prev->type==phVOWEL) || (prev->type == phLIQUID))
- {
- p->length = prev->length;
- p->pitch2 = last_pitch;
- if(p->pitch2 < 7)
- p->pitch2 = 7;
- p->pitch1 = p->pitch2 - 8;
- p->env = PITCHfall;
- pre_voiced = 0;
-
- if(p->type == phLIQUID)
- {
- p->length = speed1;
-//p->pitch1 = p->pitch2 - 20; // post vocalic [r/]
- }
-
- if(next->type == phVSTOP)
- {
- p->length = (p->length * 160)/100;
- }
- if(next->type == phVFRICATIVE)
- {
- p->length = (p->length * 120)/100;
- }
- }
- else
- {
- p->pitch2 = last_pitch;
- for(ix2=ix; ix2<n_phoneme_list; ix2++)
- {
- if(phoneme_list[ix2].type == phVOWEL)
- {
- p->pitch2 = phoneme_list[ix2].pitch2;
- break;
- }
- }
- p->pitch1 = p->pitch2-8;
- p->env = PITCHfall;
- pre_voiced = 0;
- }
- break;
-
- case phVOWEL:
- min_drop = 0;
- next2 = &phoneme_list[ix+2];
- next3 = &phoneme_list[ix+3];
-
- if(stress > 7) stress = 7;
-
- if(pre_sonorant)
- p->amp = tr->stress_amps[stress]-1;
- else
- p->amp = tr->stress_amps[stress];
-
- if(emphasized)
- p->amp = 25;
-
- if(ix >= (n_phoneme_list-3))
- {
- // last phoneme of a clause, limit its amplitude
- if(p->amp > tr->langopts.param[LOPT_MAXAMP_EOC])
- p->amp = tr->langopts.param[LOPT_MAXAMP_EOC];
- }
-
- // is the last syllable of a word ?
- more_syllables=0;
- end_of_clause = 0;
- for(p2 = p+1; p2->newword== 0; p2++)
- {
- if((p2->type == phVOWEL) && !(p2->ph->phflags & phNONSYLLABIC))
- more_syllables++;
-
- if(p2->ph->code == phonPAUSE_CLAUSE)
- end_of_clause = 2;
- }
- if(p2->ph->code == phonPAUSE_CLAUSE)
- end_of_clause = 2;
-
- if((p2->newword & 2) && (more_syllables==0))
- {
- end_of_clause = 2;
- }
-
- // calc length modifier
- if((next->ph->code == phonPAUSE_VSHORT) && (next2->type == phPAUSE))
- {
- // if PAUSE_VSHORT is followed by a pause, then use that
- next = next2;
- next2 = next3;
- next3 = &phoneme_list[ix+4];
- }
-
- if(more_syllables==0)
- {
- len = tr->langopts.length_mods0[next2->ph->length_mod *10+ next->ph->length_mod];
-
- if((next->newword) && (tr->langopts.word_gap & 0x20))
- {
- // consider as a pause + first phoneme of the next word
- length_mod = (len + tr->langopts.length_mods0[next->ph->length_mod *10+ 1])/2;
- }
- else
- length_mod = len;
- }
- else
- {
- length_mod = tr->langopts.length_mods[next2->ph->length_mod *10+ next->ph->length_mod];
-
- if((next->type == phNASAL) && (next2->type == phSTOP || next2->type == phVSTOP) && (next3->ph->phflags & phFORTIS))
- length_mod -= 15;
- }
-
- if(more_syllables==0)
- length_mod *= speed1;
- else
- if(more_syllables==1)
- length_mod *= speed2;
- else
- length_mod *= speed3;
-
- length_mod = length_mod / 128;
-
- if(length_mod < 8)
- length_mod = 8; // restrict how much lengths can be reduced
-
- if(stress >= 7)
- {
- // tonic syllable, include a constant component so it doesn't decrease directly with speed
- length_mod += 20;
- if(emphasized)
- length_mod += 10;
- }
- else
- if(emphasized)
- {
- length_mod += 20;
- }
-
- if((len = tr->stress_lengths[stress]) == 0)
- len = tr->stress_lengths[6];
-
- length_mod = (length_mod * len)/128;
-
- if(p->tone_ph != 0)
- {
- if((tone_mod = phoneme_tab[p->tone_ph]->std_length) > 0)
- {
- // a tone phoneme specifies a percentage change to the length
- length_mod = (length_mod * tone_mod) / 100;
- }
- }
-
- if(end_of_clause == 2)
- {
- // this is the last syllable in the clause, lengthen it - more for short vowels
- len = p->ph->std_length;
- if(tr->langopts.stress_flags & 0x40000)
- len=200; // don't lengthen short vowels more than long vowels at end-of-clause
- length_mod = length_mod * (256 + (280 - len)/3)/256;
- }
-
-if(p->type != phVOWEL)
-{
- length_mod = 256; // syllabic consonant
- min_drop = 8;
-}
- p->length = length_mod;
-
- // pre-vocalic part
- // set last-pitch
- env2 = p->env;
- if(env2 > 1) env2++; // version for use with preceding semi-vowel
-
- if(p->tone_ph != 0)
- {
- pitch_env = LookupEnvelope(phoneme_tab[p->tone_ph]->spect);
- }
- else
- {
- pitch_env = envelope_data[env2];
- }
-
- pitch_start = p->pitch1 + ((p->pitch2-p->pitch1)*pitch_env[0])/256;
-
- if(pre_sonorant || pre_voiced)
- {
- // set pitch for pre-vocalic part
- if(pitch_start == 1024)
- last_pitch = pitch_start; // pitch is not set
-
- if(pitch_start - last_pitch > 8) // was 9
- last_pitch = pitch_start - 8;
-
- prev->pitch1 = last_pitch;
- prev->pitch2 = pitch_start;
- if(last_pitch < pitch_start)
- {
- prev->env = PITCHrise;
- p->env = env2;
- }
- else
- {
- prev->env = PITCHfall;
- }
-
- prev->length = length_mod;
-
- prev->amp = p->amp;
- if((prev->type != phLIQUID) && (prev->amp > 18))
- prev->amp = 18;
- }
-
- // vowel & post-vocalic part
- next->synthflags &= ~SFLAG_SEQCONTINUE;
- if(next->type == phNASAL && next2->type != phVOWEL)
- next->synthflags |= SFLAG_SEQCONTINUE;
-
- if(next->type == phLIQUID)
- {
- next->synthflags |= SFLAG_SEQCONTINUE;
-
- if(next2->type == phVOWEL)
- {
- next->synthflags &= ~SFLAG_SEQCONTINUE;
- }
-
- if(next2->type != phVOWEL)
- {
- if(next->ph->mnemonic == ('/'*256+'r'))
- {
- next->synthflags &= ~SFLAG_SEQCONTINUE;
-// min_drop = 15;
- }
- }
- }
-
- if((min_drop > 0) && ((p->pitch2 - p->pitch1) < min_drop))
- {
- p->pitch1 = p->pitch2 - min_drop;
- if(p->pitch1 < 0)
- p->pitch1 = 0;
- }
-
- last_pitch = p->pitch1 + ((p->pitch2-p->pitch1)*envelope_data[p->env][127])/256;
- pre_sonorant = 0;
- pre_voiced = 0;
- break;
- }
- }
-} // end of CalcLengths
-
diff --git a/navit/support/espeak/sintab.h b/navit/support/espeak/sintab.h
deleted file mode 100755
index 08fc18f31..000000000
--- a/navit/support/espeak/sintab.h
+++ /dev/null
@@ -1,258 +0,0 @@
-short int sin_tab[2048] = {
- 0, -25, -50, -75, -100, -125, -150, -175,
- -201, -226, -251, -276, -301, -326, -351, -376,
- -401, -427, -452, -477, -502, -527, -552, -577,
- -602, -627, -652, -677, -702, -727, -752, -777,
- -802, -827, -852, -877, -902, -927, -952, -977,
- -1002, -1027, -1052, -1077, -1102, -1127, -1152, -1177,
- -1201, -1226, -1251, -1276, -1301, -1326, -1350, -1375,
- -1400, -1425, -1449, -1474, -1499, -1523, -1548, -1573,
- -1597, -1622, -1647, -1671, -1696, -1721, -1745, -1770,
- -1794, -1819, -1843, -1868, -1892, -1917, -1941, -1965,
- -1990, -2014, -2038, -2063, -2087, -2111, -2136, -2160,
- -2184, -2208, -2233, -2257, -2281, -2305, -2329, -2353,
- -2377, -2401, -2425, -2449, -2473, -2497, -2521, -2545,
- -2569, -2593, -2617, -2640, -2664, -2688, -2712, -2735,
- -2759, -2783, -2806, -2830, -2853, -2877, -2900, -2924,
- -2947, -2971, -2994, -3018, -3041, -3064, -3088, -3111,
- -3134, -3157, -3180, -3204, -3227, -3250, -3273, -3296,
- -3319, -3342, -3365, -3388, -3410, -3433, -3456, -3479,
- -3502, -3524, -3547, -3570, -3592, -3615, -3637, -3660,
- -3682, -3705, -3727, -3749, -3772, -3794, -3816, -3839,
- -3861, -3883, -3905, -3927, -3949, -3971, -3993, -4015,
- -4037, -4059, -4080, -4102, -4124, -4146, -4167, -4189,
- -4211, -4232, -4254, -4275, -4296, -4318, -4339, -4360,
- -4382, -4403, -4424, -4445, -4466, -4487, -4508, -4529,
- -4550, -4571, -4592, -4613, -4633, -4654, -4675, -4695,
- -4716, -4736, -4757, -4777, -4798, -4818, -4838, -4859,
- -4879, -4899, -4919, -4939, -4959, -4979, -4999, -5019,
- -5039, -5059, -5078, -5098, -5118, -5137, -5157, -5176,
- -5196, -5215, -5235, -5254, -5273, -5292, -5311, -5331,
- -5350, -5369, -5388, -5406, -5425, -5444, -5463, -5482,
- -5500, -5519, -5537, -5556, -5574, -5593, -5611, -5629,
- -5648, -5666, -5684, -5702, -5720, -5738, -5756, -5774,
- -5791, -5809, -5827, -5844, -5862, -5880, -5897, -5914,
- -5932, -5949, -5966, -5984, -6001, -6018, -6035, -6052,
- -6069, -6085, -6102, -6119, -6136, -6152, -6169, -6185,
- -6202, -6218, -6235, -6251, -6267, -6283, -6299, -6315,
- -6331, -6347, -6363, -6379, -6395, -6410, -6426, -6441,
- -6457, -6472, -6488, -6503, -6518, -6533, -6549, -6564,
- -6579, -6594, -6608, -6623, -6638, -6653, -6667, -6682,
- -6696, -6711, -6725, -6739, -6754, -6768, -6782, -6796,
- -6810, -6824, -6838, -6852, -6865, -6879, -6893, -6906,
- -6920, -6933, -6946, -6960, -6973, -6986, -6999, -7012,
- -7025, -7038, -7051, -7064, -7076, -7089, -7101, -7114,
- -7126, -7139, -7151, -7163, -7175, -7187, -7199, -7211,
- -7223, -7235, -7247, -7259, -7270, -7282, -7293, -7305,
- -7316, -7327, -7338, -7349, -7361, -7372, -7382, -7393,
- -7404, -7415, -7425, -7436, -7446, -7457, -7467, -7478,
- -7488, -7498, -7508, -7518, -7528, -7538, -7548, -7557,
- -7567, -7577, -7586, -7596, -7605, -7614, -7623, -7633,
- -7642, -7651, -7660, -7668, -7677, -7686, -7695, -7703,
- -7712, -7720, -7728, -7737, -7745, -7753, -7761, -7769,
- -7777, -7785, -7793, -7800, -7808, -7816, -7823, -7830,
- -7838, -7845, -7852, -7859, -7866, -7873, -7880, -7887,
- -7894, -7900, -7907, -7914, -7920, -7926, -7933, -7939,
- -7945, -7951, -7957, -7963, -7969, -7975, -7980, -7986,
- -7991, -7997, -8002, -8008, -8013, -8018, -8023, -8028,
- -8033, -8038, -8043, -8047, -8052, -8057, -8061, -8066,
- -8070, -8074, -8078, -8082, -8086, -8090, -8094, -8098,
- -8102, -8105, -8109, -8113, -8116, -8119, -8123, -8126,
- -8129, -8132, -8135, -8138, -8141, -8143, -8146, -8149,
- -8151, -8153, -8156, -8158, -8160, -8162, -8164, -8166,
- -8168, -8170, -8172, -8174, -8175, -8177, -8178, -8179,
- -8181, -8182, -8183, -8184, -8185, -8186, -8187, -8187,
- -8188, -8189, -8189, -8190, -8190, -8190, -8190, -8190,
- -8191, -8190, -8190, -8190, -8190, -8190, -8189, -8189,
- -8188, -8187, -8187, -8186, -8185, -8184, -8183, -8182,
- -8181, -8179, -8178, -8177, -8175, -8174, -8172, -8170,
- -8168, -8166, -8164, -8162, -8160, -8158, -8156, -8153,
- -8151, -8149, -8146, -8143, -8141, -8138, -8135, -8132,
- -8129, -8126, -8123, -8119, -8116, -8113, -8109, -8105,
- -8102, -8098, -8094, -8090, -8086, -8082, -8078, -8074,
- -8070, -8066, -8061, -8057, -8052, -8047, -8043, -8038,
- -8033, -8028, -8023, -8018, -8013, -8008, -8002, -7997,
- -7991, -7986, -7980, -7975, -7969, -7963, -7957, -7951,
- -7945, -7939, -7933, -7926, -7920, -7914, -7907, -7900,
- -7894, -7887, -7880, -7873, -7866, -7859, -7852, -7845,
- -7838, -7830, -7823, -7816, -7808, -7800, -7793, -7785,
- -7777, -7769, -7761, -7753, -7745, -7737, -7728, -7720,
- -7712, -7703, -7695, -7686, -7677, -7668, -7660, -7651,
- -7642, -7633, -7623, -7614, -7605, -7596, -7586, -7577,
- -7567, -7557, -7548, -7538, -7528, -7518, -7508, -7498,
- -7488, -7478, -7467, -7457, -7446, -7436, -7425, -7415,
- -7404, -7393, -7382, -7372, -7361, -7349, -7338, -7327,
- -7316, -7305, -7293, -7282, -7270, -7259, -7247, -7235,
- -7223, -7211, -7199, -7187, -7175, -7163, -7151, -7139,
- -7126, -7114, -7101, -7089, -7076, -7064, -7051, -7038,
- -7025, -7012, -6999, -6986, -6973, -6960, -6946, -6933,
- -6920, -6906, -6893, -6879, -6865, -6852, -6838, -6824,
- -6810, -6796, -6782, -6768, -6754, -6739, -6725, -6711,
- -6696, -6682, -6667, -6653, -6638, -6623, -6608, -6594,
- -6579, -6564, -6549, -6533, -6518, -6503, -6488, -6472,
- -6457, -6441, -6426, -6410, -6395, -6379, -6363, -6347,
- -6331, -6315, -6299, -6283, -6267, -6251, -6235, -6218,
- -6202, -6185, -6169, -6152, -6136, -6119, -6102, -6085,
- -6069, -6052, -6035, -6018, -6001, -5984, -5966, -5949,
- -5932, -5914, -5897, -5880, -5862, -5844, -5827, -5809,
- -5791, -5774, -5756, -5738, -5720, -5702, -5684, -5666,
- -5648, -5629, -5611, -5593, -5574, -5556, -5537, -5519,
- -5500, -5482, -5463, -5444, -5425, -5406, -5388, -5369,
- -5350, -5331, -5311, -5292, -5273, -5254, -5235, -5215,
- -5196, -5176, -5157, -5137, -5118, -5098, -5078, -5059,
- -5039, -5019, -4999, -4979, -4959, -4939, -4919, -4899,
- -4879, -4859, -4838, -4818, -4798, -4777, -4757, -4736,
- -4716, -4695, -4675, -4654, -4633, -4613, -4592, -4571,
- -4550, -4529, -4508, -4487, -4466, -4445, -4424, -4403,
- -4382, -4360, -4339, -4318, -4296, -4275, -4254, -4232,
- -4211, -4189, -4167, -4146, -4124, -4102, -4080, -4059,
- -4037, -4015, -3993, -3971, -3949, -3927, -3905, -3883,
- -3861, -3839, -3816, -3794, -3772, -3749, -3727, -3705,
- -3682, -3660, -3637, -3615, -3592, -3570, -3547, -3524,
- -3502, -3479, -3456, -3433, -3410, -3388, -3365, -3342,
- -3319, -3296, -3273, -3250, -3227, -3204, -3180, -3157,
- -3134, -3111, -3088, -3064, -3041, -3018, -2994, -2971,
- -2947, -2924, -2900, -2877, -2853, -2830, -2806, -2783,
- -2759, -2735, -2712, -2688, -2664, -2640, -2617, -2593,
- -2569, -2545, -2521, -2497, -2473, -2449, -2425, -2401,
- -2377, -2353, -2329, -2305, -2281, -2257, -2233, -2208,
- -2184, -2160, -2136, -2111, -2087, -2063, -2038, -2014,
- -1990, -1965, -1941, -1917, -1892, -1868, -1843, -1819,
- -1794, -1770, -1745, -1721, -1696, -1671, -1647, -1622,
- -1597, -1573, -1548, -1523, -1499, -1474, -1449, -1425,
- -1400, -1375, -1350, -1326, -1301, -1276, -1251, -1226,
- -1201, -1177, -1152, -1127, -1102, -1077, -1052, -1027,
- -1002, -977, -952, -927, -902, -877, -852, -827,
- -802, -777, -752, -727, -702, -677, -652, -627,
- -602, -577, -552, -527, -502, -477, -452, -427,
- -401, -376, -351, -326, -301, -276, -251, -226,
- -201, -175, -150, -125, -100, -75, -50, -25,
- 0, 25, 50, 75, 100, 125, 150, 175,
- 201, 226, 251, 276, 301, 326, 351, 376,
- 401, 427, 452, 477, 502, 527, 552, 577,
- 602, 627, 652, 677, 702, 727, 752, 777,
- 802, 827, 852, 877, 902, 927, 952, 977,
- 1002, 1027, 1052, 1077, 1102, 1127, 1152, 1177,
- 1201, 1226, 1251, 1276, 1301, 1326, 1350, 1375,
- 1400, 1425, 1449, 1474, 1499, 1523, 1548, 1573,
- 1597, 1622, 1647, 1671, 1696, 1721, 1745, 1770,
- 1794, 1819, 1843, 1868, 1892, 1917, 1941, 1965,
- 1990, 2014, 2038, 2063, 2087, 2111, 2136, 2160,
- 2184, 2208, 2233, 2257, 2281, 2305, 2329, 2353,
- 2377, 2401, 2425, 2449, 2473, 2497, 2521, 2545,
- 2569, 2593, 2617, 2640, 2664, 2688, 2712, 2735,
- 2759, 2783, 2806, 2830, 2853, 2877, 2900, 2924,
- 2947, 2971, 2994, 3018, 3041, 3064, 3088, 3111,
- 3134, 3157, 3180, 3204, 3227, 3250, 3273, 3296,
- 3319, 3342, 3365, 3388, 3410, 3433, 3456, 3479,
- 3502, 3524, 3547, 3570, 3592, 3615, 3637, 3660,
- 3682, 3705, 3727, 3749, 3772, 3794, 3816, 3839,
- 3861, 3883, 3905, 3927, 3949, 3971, 3993, 4015,
- 4037, 4059, 4080, 4102, 4124, 4146, 4167, 4189,
- 4211, 4232, 4254, 4275, 4296, 4318, 4339, 4360,
- 4382, 4403, 4424, 4445, 4466, 4487, 4508, 4529,
- 4550, 4571, 4592, 4613, 4633, 4654, 4675, 4695,
- 4716, 4736, 4757, 4777, 4798, 4818, 4838, 4859,
- 4879, 4899, 4919, 4939, 4959, 4979, 4999, 5019,
- 5039, 5059, 5078, 5098, 5118, 5137, 5157, 5176,
- 5196, 5215, 5235, 5254, 5273, 5292, 5311, 5331,
- 5350, 5369, 5388, 5406, 5425, 5444, 5463, 5482,
- 5500, 5519, 5537, 5556, 5574, 5593, 5611, 5629,
- 5648, 5666, 5684, 5702, 5720, 5738, 5756, 5774,
- 5791, 5809, 5827, 5844, 5862, 5880, 5897, 5914,
- 5932, 5949, 5966, 5984, 6001, 6018, 6035, 6052,
- 6069, 6085, 6102, 6119, 6136, 6152, 6169, 6185,
- 6202, 6218, 6235, 6251, 6267, 6283, 6299, 6315,
- 6331, 6347, 6363, 6379, 6395, 6410, 6426, 6441,
- 6457, 6472, 6488, 6503, 6518, 6533, 6549, 6564,
- 6579, 6594, 6608, 6623, 6638, 6653, 6667, 6682,
- 6696, 6711, 6725, 6739, 6754, 6768, 6782, 6796,
- 6810, 6824, 6838, 6852, 6865, 6879, 6893, 6906,
- 6920, 6933, 6946, 6960, 6973, 6986, 6999, 7012,
- 7025, 7038, 7051, 7064, 7076, 7089, 7101, 7114,
- 7126, 7139, 7151, 7163, 7175, 7187, 7199, 7211,
- 7223, 7235, 7247, 7259, 7270, 7282, 7293, 7305,
- 7316, 7327, 7338, 7349, 7361, 7372, 7382, 7393,
- 7404, 7415, 7425, 7436, 7446, 7457, 7467, 7478,
- 7488, 7498, 7508, 7518, 7528, 7538, 7548, 7557,
- 7567, 7577, 7586, 7596, 7605, 7614, 7623, 7633,
- 7642, 7651, 7660, 7668, 7677, 7686, 7695, 7703,
- 7712, 7720, 7728, 7737, 7745, 7753, 7761, 7769,
- 7777, 7785, 7793, 7800, 7808, 7816, 7823, 7830,
- 7838, 7845, 7852, 7859, 7866, 7873, 7880, 7887,
- 7894, 7900, 7907, 7914, 7920, 7926, 7933, 7939,
- 7945, 7951, 7957, 7963, 7969, 7975, 7980, 7986,
- 7991, 7997, 8002, 8008, 8013, 8018, 8023, 8028,
- 8033, 8038, 8043, 8047, 8052, 8057, 8061, 8066,
- 8070, 8074, 8078, 8082, 8086, 8090, 8094, 8098,
- 8102, 8105, 8109, 8113, 8116, 8119, 8123, 8126,
- 8129, 8132, 8135, 8138, 8141, 8143, 8146, 8149,
- 8151, 8153, 8156, 8158, 8160, 8162, 8164, 8166,
- 8168, 8170, 8172, 8174, 8175, 8177, 8178, 8179,
- 8181, 8182, 8183, 8184, 8185, 8186, 8187, 8187,
- 8188, 8189, 8189, 8190, 8190, 8190, 8190, 8190,
- 8191, 8190, 8190, 8190, 8190, 8190, 8189, 8189,
- 8188, 8187, 8187, 8186, 8185, 8184, 8183, 8182,
- 8181, 8179, 8178, 8177, 8175, 8174, 8172, 8170,
- 8168, 8166, 8164, 8162, 8160, 8158, 8156, 8153,
- 8151, 8149, 8146, 8143, 8141, 8138, 8135, 8132,
- 8129, 8126, 8123, 8119, 8116, 8113, 8109, 8105,
- 8102, 8098, 8094, 8090, 8086, 8082, 8078, 8074,
- 8070, 8066, 8061, 8057, 8052, 8047, 8043, 8038,
- 8033, 8028, 8023, 8018, 8013, 8008, 8002, 7997,
- 7991, 7986, 7980, 7975, 7969, 7963, 7957, 7951,
- 7945, 7939, 7933, 7926, 7920, 7914, 7907, 7900,
- 7894, 7887, 7880, 7873, 7866, 7859, 7852, 7845,
- 7838, 7830, 7823, 7816, 7808, 7800, 7793, 7785,
- 7777, 7769, 7761, 7753, 7745, 7737, 7728, 7720,
- 7712, 7703, 7695, 7686, 7677, 7668, 7660, 7651,
- 7642, 7633, 7623, 7614, 7605, 7596, 7586, 7577,
- 7567, 7557, 7548, 7538, 7528, 7518, 7508, 7498,
- 7488, 7478, 7467, 7457, 7446, 7436, 7425, 7415,
- 7404, 7393, 7382, 7372, 7361, 7349, 7338, 7327,
- 7316, 7305, 7293, 7282, 7270, 7259, 7247, 7235,
- 7223, 7211, 7199, 7187, 7175, 7163, 7151, 7139,
- 7126, 7114, 7101, 7089, 7076, 7064, 7051, 7038,
- 7025, 7012, 6999, 6986, 6973, 6960, 6946, 6933,
- 6920, 6906, 6893, 6879, 6865, 6852, 6838, 6824,
- 6810, 6796, 6782, 6768, 6754, 6739, 6725, 6711,
- 6696, 6682, 6667, 6653, 6638, 6623, 6608, 6594,
- 6579, 6564, 6549, 6533, 6518, 6503, 6488, 6472,
- 6457, 6441, 6426, 6410, 6395, 6379, 6363, 6347,
- 6331, 6315, 6299, 6283, 6267, 6251, 6235, 6218,
- 6202, 6185, 6169, 6152, 6136, 6119, 6102, 6085,
- 6069, 6052, 6035, 6018, 6001, 5984, 5966, 5949,
- 5932, 5914, 5897, 5880, 5862, 5844, 5827, 5809,
- 5791, 5774, 5756, 5738, 5720, 5702, 5684, 5666,
- 5648, 5629, 5611, 5593, 5574, 5556, 5537, 5519,
- 5500, 5482, 5463, 5444, 5425, 5406, 5388, 5369,
- 5350, 5331, 5311, 5292, 5273, 5254, 5235, 5215,
- 5196, 5176, 5157, 5137, 5118, 5098, 5078, 5059,
- 5039, 5019, 4999, 4979, 4959, 4939, 4919, 4899,
- 4879, 4859, 4838, 4818, 4798, 4777, 4757, 4736,
- 4716, 4695, 4675, 4654, 4633, 4613, 4592, 4571,
- 4550, 4529, 4508, 4487, 4466, 4445, 4424, 4403,
- 4382, 4360, 4339, 4318, 4296, 4275, 4254, 4232,
- 4211, 4189, 4167, 4146, 4124, 4102, 4080, 4059,
- 4037, 4015, 3993, 3971, 3949, 3927, 3905, 3883,
- 3861, 3839, 3816, 3794, 3772, 3749, 3727, 3705,
- 3682, 3660, 3637, 3615, 3592, 3570, 3547, 3524,
- 3502, 3479, 3456, 3433, 3410, 3388, 3365, 3342,
- 3319, 3296, 3273, 3250, 3227, 3204, 3180, 3157,
- 3134, 3111, 3088, 3064, 3041, 3018, 2994, 2971,
- 2947, 2924, 2900, 2877, 2853, 2830, 2806, 2783,
- 2759, 2735, 2712, 2688, 2664, 2640, 2617, 2593,
- 2569, 2545, 2521, 2497, 2473, 2449, 2425, 2401,
- 2377, 2353, 2329, 2305, 2281, 2257, 2233, 2208,
- 2184, 2160, 2136, 2111, 2087, 2063, 2038, 2014,
- 1990, 1965, 1941, 1917, 1892, 1868, 1843, 1819,
- 1794, 1770, 1745, 1721, 1696, 1671, 1647, 1622,
- 1597, 1573, 1548, 1523, 1499, 1474, 1449, 1425,
- 1400, 1375, 1350, 1326, 1301, 1276, 1251, 1226,
- 1201, 1177, 1152, 1127, 1102, 1077, 1052, 1027,
- 1002, 977, 952, 927, 902, 877, 852, 827,
- 802, 777, 752, 727, 702, 677, 652, 627,
- 602, 577, 552, 527, 502, 477, 452, 427,
- 401, 376, 351, 326, 301, 276, 251, 226,
- 201, 175, 150, 125, 100, 75, 50, 25,
- };
diff --git a/navit/support/espeak/speak.c b/navit/support/espeak/speak.c
deleted file mode 100755
index ab33a867b..000000000
--- a/navit/support/espeak/speak.c
+++ /dev/null
@@ -1,898 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include "speech.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifndef PLATFORM_DOS
-#ifdef PLATFORM_WINDOWS
-#include <windows.h>
-#include <winreg.h>
-#else
-#include <unistd.h>
-#endif
-#endif
-
-#ifndef NEED_GETOPT
-#include <getopt.h>
-#endif
-#include <time.h>
-#include <signal.h>
-#include <locale.h>
-#include <sys/stat.h>
-
-#include "speak_lib.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-#include "translate.h"
-
-
-
-extern void Write4Bytes(FILE *f, int value);
-char path_home[N_PATH_HOME]; // this is the espeak-data directory
-
-char filetype[5];
-char wavefile[200];
-int (* uri_callback)(int, const char *, const char *) = NULL;
-int (* phoneme_callback)(const char *) = NULL;
-
-FILE *f_wave = NULL;
-int quiet = 0;
-unsigned int samples_total = 0;
-unsigned int samples_split = 0;
-unsigned int wavefile_count = 0;
-int end_of_sentence = 0;
-
-static const char *help_text =
-"\nspeak [options] [\"<words>\"]\n\n"
-"-f <text file> Text file to speak\n"
-"--stdin Read text input from stdin instead of a file\n\n"
-"If neither -f nor --stdin, <words> are spoken, or if none then text is\n"
-"spoken from stdin, each line separately.\n\n"
-"-a <integer>\n"
-"\t Amplitude, 0 to 200, default is 100\n"
-"-g <integer>\n"
-"\t Word gap. Pause between words, units of 10mS at the default speed\n"
-"-l <integer>\n"
-"\t Line length. If not zero (which is the default), consider\n"
-"\t lines less than this length as end-of-clause\n"
-"-p <integer>\n"
-"\t Pitch adjustment, 0 to 99, default is 50\n"
-"-s <integer>\n"
-"\t Speed in words per minute 80 to 390, default is 170\n"
-"-v <voice name>\n"
-"\t Use voice file of this name from espeak-data/voices\n"
-"-w <wave file name>\n"
-"\t Write output to this WAV file, rather than speaking it directly\n"
-"-b\t Input text encoding, 1=UTF8, 2=8 bit, 4=16 bit \n"
-"-m\t Interpret SSML markup, and ignore other < > tags\n"
-"-q\t Quiet, don't produce any speech (may be useful with -x)\n"
-"-x\t Write phoneme mnemonics to stdout\n"
-"-X\t Write phonemes mnemonics and translation trace to stdout\n"
-"-z\t No final sentence pause at the end of the text\n"
-"--stdout Write speech output to stdout\n"
-"--compile=<voice name>\n"
-"\t Compile the pronunciation rules and dictionary in the current\n"
-"\t directory. =<voice name> is optional and specifies which language\n"
-"--path=\"<path>\"\n"
-"\t Specifies the directory containing the espeak-data directory\n"
-"--phonout=\"<filename>\"\n"
-"\t Write output from -x -X commands and mbrola phoneme data to this file\n"
-"--punct=\"<characters>\"\n"
-"\t Speak the names of punctuation characters during speaking. If\n"
-"\t =<characters> is omitted, all punctuation is spoken.\n"
-"--split=\"<minutes>\"\n"
-"\t Starts a new WAV file every <minutes>. Used with -w\n"
-"--voices=<language>\n"
-"\t List the available voices for the specified language.\n"
-"\t If <language> is omitted, then list all voices.\n"
-"-k <integer>\n"
-"\t Indicate capital letters with: 1=sound, 2=the word \"capitals\",\n"
-"\t higher values = a pitch increase (try -k20).\n";
-
-
-void DisplayVoices(FILE *f_out, char *language);
-
-USHORT voice_pcnt[N_PEAKS+1][3];
-
-
-
-int GetFileLength(const char *filename)
-{//====================================
- struct stat statbuf;
-
- if(stat(filename,&statbuf) != 0)
- return(0);
-
- if((statbuf.st_mode & S_IFMT) == S_IFDIR)
-// if(S_ISDIR(statbuf.st_mode))
- return(-2); // a directory
-
- return(statbuf.st_size);
-} // end of GetFileLength
-
-
-char *Alloc(int size)
-{//==================
- char *p;
- if((p = (char *)malloc(size)) == NULL)
- fprintf(stderr,"Can't allocate memory\n");
- return(p);
-}
-
-void Free(void *ptr)
-{//=================
- if(ptr != NULL)
- free(ptr);
-}
-
-
-void DisplayVoices(FILE *f_out, char *language)
-{//============================================
- int ix;
- const char *p;
- int len;
- int count;
- int scores = 0;
- const espeak_VOICE *v;
- const char *lang_name;
- char age_buf[12];
- const espeak_VOICE **voices;
- espeak_VOICE voice_select;
-
- static char genders[4] = {' ','M','F',' '};
-
- if((language != NULL) && (language[0] != 0))
- {
- // display only voices for the specified language, in order of priority
- voice_select.languages = language;
- voice_select.age = 0;
- voice_select.gender = 0;
- voice_select.name = NULL;
- voices = espeak_ListVoices(&voice_select);
- scores = 1;
- }
- else
- {
- voices = espeak_ListVoices(NULL);
- }
-
- fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n");
-
- for(ix=0; (v = voices[ix]) != NULL; ix++)
- {
- count = 0;
- p = v->languages;
- while(*p != 0)
- {
- len = strlen(p+1);
- lang_name = p+1;
-
- if(v->age == 0)
- strcpy(age_buf," ");
- else
- sprintf(age_buf,"%3d",v->age);
-
- if(count==0)
- {
- fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ",
- p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier);
- }
- else
- {
- fprintf(f_out,"(%s %d)",lang_name,p[0]);
- }
- count++;
- p += len+2;
- }
-// if(scores)
-// fprintf(f_out,"%3d ",v->score);
- fputc('\n',f_out);
- }
-} // end of DisplayVoices
-
-
-
-
-static int OpenWaveFile(const char *path, int rate)
-//=================================================
-{
- // Set the length of 0x7ffff000 for --stdout
- // This will be changed to the correct length for -w (write to file)
- static unsigned char wave_hdr[44] = {
- 'R','I','F','F',0x24,0xf0,0xff,0x7f,'W','A','V','E','f','m','t',' ',
- 0x10,0,0,0,1,0,1,0, 9,0x3d,0,0,0x12,0x7a,0,0,
- 2,0,0x10,0,'d','a','t','a', 0x00,0xf0,0xff,0x7f};
-
- if(path == NULL)
- return(2);
-
- if(strcmp(path,"stdout")==0)
- f_wave = stdout;
- else
- f_wave = fopen(path,"wb");
-
- if(f_wave != NULL)
- {
- fwrite(wave_hdr,1,24,f_wave);
- Write4Bytes(f_wave,rate);
- Write4Bytes(f_wave,rate * 2);
- fwrite(&wave_hdr[32],1,12,f_wave);
- return(0);
- }
- return(1);
-} // end of OpenWaveFile
-
-
-
-
-static void CloseWaveFile()
-//=========================
-{
- unsigned int pos;
-
- if((f_wave == NULL) || (f_wave == stdout))
- return;
-
- fflush(f_wave);
- pos = ftell(f_wave);
-
- fseek(f_wave,4,SEEK_SET);
- Write4Bytes(f_wave,pos - 8);
-
- fseek(f_wave,40,SEEK_SET);
- Write4Bytes(f_wave,pos - 44);
-
-
- fclose(f_wave);
- f_wave = NULL;
-
-} // end of CloseWaveFile
-
-
-
-
-void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr)
-{//======================================================================================
-// Do nothing in the command-line version.
- if(type == 2)
- end_of_sentence = 1;
-} // end of MarkerEvent
-
-
-static int WavegenFile(void)
-{//=========================
- int finished;
- unsigned char wav_outbuf[512];
- char fname[210];
-
- out_ptr = out_start = wav_outbuf;
- out_end = wav_outbuf + sizeof(wav_outbuf);
-
- finished = WavegenFill(0);
-
- if(quiet)
- return(finished);
-
- if(f_wave == NULL)
- {
- sprintf(fname,"%s_%.2d%s",wavefile,++wavefile_count,filetype);
- if(OpenWaveFile(fname, samplerate) != 0)
- return(1);
- }
-
- if(end_of_sentence)
- {
- end_of_sentence = 0;
- if((samples_split > 0 ) && (samples_total > samples_split))
- {
- CloseWaveFile();
- samples_total = 0;
- }
- }
-
- if(f_wave != NULL)
- {
- samples_total += (out_ptr - wav_outbuf)/2;
- fwrite(wav_outbuf, 1, out_ptr - wav_outbuf, f_wave);
- }
- return(finished);
-} // end of WavegenFile
-
-
-
-static void init_path(char *argv0, char *path_specified)
-{//=====================================================
-
- if(path_specified)
- {
- sprintf(path_home,"%s/espeak-data",path_specified);
- return;
- }
-
-#ifdef PLATFORM_WINDOWS
- HKEY RegKey;
- unsigned long size;
- unsigned long var_type;
- char *p;
- char *env;
- unsigned char buf[sizeof(path_home)-12];
-
-#if 0
- if(((env = getenv("ESPEAK_DATA_PATH")) != NULL) && ((strlen(env)+12) < sizeof(path_home)))
- {
- sprintf(path_home,"%s\\espeak-data",env);
- if(GetFileLength(path_home) == -2)
- return; // an espeak-data directory exists in the directory specified by environment variable
- }
-#endif
-
- strcpy(path_home,argv0);
- if((p = strrchr(path_home,'\\')) != NULL)
- {
- strcpy(&p[1],"espeak-data");
- if(GetFileLength(path_home) == -2)
- return; // an espeak-data directory exists in the same directory as the espeak program
- }
-
- // otherwise, look in the Windows Registry
- buf[0] = 0;
- RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey);
- size = sizeof(buf);
- var_type = REG_SZ;
- RegQueryValueEx(RegKey, "path", 0, &var_type, buf, &size);
-
- sprintf(path_home,"%s\\espeak-data",buf);
-#else
-#ifdef PLATFORM_DOS
- strcpy(path_home,PATH_ESPEAK_DATA);
-#else
- char *env;
-#if 0
- if((env = getenv("ESPEAK_DATA_PATH")) != NULL)
- {
- snprintf(path_home,sizeof(path_home),"%s/espeak-data",env);
- if(GetFileLength(path_home) == -2)
- return; // an espeak-data directory exists
- }
-#endif
-
-#if 0
- snprintf(path_home,sizeof(path_home),"%s/espeak-data",getenv("HOME"));
- if(access(path_home,R_OK) != 0)
- {
- strcpy(path_home,PATH_ESPEAK_DATA);
- }
-#endif
-#endif
-#endif
-}
-
-
-static int initialise(void)
-{//========================
- int param;
- int result;
-
- // It seems that the wctype functions don't work until the locale has been set
- // to something other than the default "C". Then, not only Latin1 but also the
- // other characters give the correct results with iswalpha() etc.
-#ifdef PLATFORM_RISCOS
- setlocale(LC_CTYPE,"ISO8859-1");
-#else
-#if 0
- if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL)
- {
- if(setlocale(LC_CTYPE,"UTF-8") == NULL)
- setlocale(LC_CTYPE,"");
- }
-#endif
-#endif
-
-
- WavegenInit(22050,0); // 22050
- if((result = LoadPhData()) != 1)
- {
- if(result == -1)
- {
- fprintf(stderr,"Failed to load espeak-data\n");
- exit(1);
- }
- else
- fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home);
- }
- LoadConfig();
- SetVoiceStack(NULL);
- SynthesizeInit();
-
- for(param=0; param<N_SPEECH_PARAM; param++)
- param_stack[0].parameter[param] = param_defaults[param];
-
- return(0);
-}
-
-
-static void StopSpeak(int unused)
-{//==============================
-// signal(SIGINT,SIG_IGN);
- // DEBUG
-// printf("\n*** Interrupting speech output (use Ctrl-D to actually quit).\n");
- fflush(stdout);
- SpeakNextClause(NULL,NULL,5);
-// signal(SIGINT,StopSpeak);
-} // end of StopSpeak()
-
-#ifdef NEED_GETOPT
- struct option {
- char *name;
- int has_arg;
- int *flag;
- int val;
- };
- int optind;
- static int optional_argument;
- static const char *arg_opts = "abfgklpsvw"; // which options have arguments
- static char *opt_string="";
-#define no_argument 0
-#define required_argument 1
-#define optional_argument 2
-#endif
-
-int main (int argc, char **argv)
-//==============================
-{
- static struct option long_options[] =
- {
- /* These options set a flag. */
-// {"verbose", no_argument, &verbose_flag, 1},
-// {"brief", no_argument, &verbose_flag, 0},
-
- /* These options don't set a flag.
- We distinguish them by their indices. */
- {"help", no_argument, 0, 'h'},
- {"stdin", no_argument, 0, 0x100},
- {"compile-debug", optional_argument, 0, 0x101},
- {"compile", optional_argument, 0, 0x102},
- {"punct", optional_argument, 0, 0x103},
- {"voices", optional_argument, 0, 0x104},
- {"stdout", no_argument, 0, 0x105},
- {"split", optional_argument, 0, 0x106},
- {"path", required_argument, 0, 0x107},
- {"phonout", required_argument, 0, 0x108},
- {0, 0, 0, 0}
- };
-
- static const char *err_load = "Failed to read ";
-
- FILE *f_text=NULL;
- const char *p_text=NULL;
- char *data_path = NULL; // use default path for espeak-data
-
- int option_index = 0;
- int c;
- int value;
- int speed=170;
- int ix;
- char *optarg2;
- int amp = 100; // default
- int wordgap = 0;
- int speaking = 0;
- int flag_stdin = 0;
- int flag_compile = 0;
- int pitch_adjustment = 50;
- espeak_VOICE voice_select;
- char filename[200];
- char voicename[40];
- char dictname[40];
-
- voicename[0] = 0;
- mbrola_name[0] = 0;
- dictname[0] = 0;
- wavefile[0] = 0;
- filename[0] = 0;
- option_linelength = 0;
- option_phonemes = 0;
- option_waveout = 0;
- option_wordgap = 0;
- option_endpause = 1;
- option_phoneme_input = 1;
- option_multibyte = espeakCHARS_AUTO; // auto
- f_trans = stdout;
-
-#ifdef NEED_GETOPT
- optind = 1;
- opt_string = "";
- while(optind < argc)
- {
- int len;
- char *p;
-
- if((c = *opt_string) == 0)
- {
- opt_string = argv[optind];
- if(opt_string[0] != '-')
- break;
-
- optind++;
- opt_string++;
- c = *opt_string;
- }
- opt_string++;
- p = optarg2 = opt_string;
-
- if(c == '-')
- {
- opt_string="";
- for(ix=0; ;ix++)
- {
- if(long_options[ix].name == 0)
- break;
- len = strlen(long_options[ix].name);
- if(memcmp(long_options[ix].name,p,len)==0)
- {
- c = long_options[ix].val;
- optarg2 = NULL;
-
- if((long_options[ix].has_arg != 0) && (p[len]=='='))
- {
- optarg2 = &p[len+1];
- }
- break;
- }
- }
- }
- else
- if(strchr(arg_opts,c) != NULL)
- {
- opt_string="";
- if(optarg2[0]==0)
- {
- // the option's value is in the next argument
- optarg2 = argv[optind++];
- }
- }
-#else
- while(1)
- {
- c = getopt_long (argc, argv, "a:b:f:g:hk:l:p:qs:v:w:xXmz", // NOTE: also change arg_opts to indicate which commands have a numeric value
- long_options, &option_index);
-
- /* Detect the end of the options. */
- if (c == -1)
- break;
- optarg2 = optarg;
-#endif
-
- switch (c)
- {
- case 'b':
- // input character encoding, 8bit, 16bit, UTF8
- option_multibyte = espeakCHARS_8BIT;
- if((sscanf(optarg2,"%d",&value) == 1) && (value <= 4))
- option_multibyte= value;
- break;
-
- case 'h':
- printf("\nspeak text-to-speech: %s\n%s",version_string,help_text);
- exit(0);
- break;
-
- case 'k':
- option_capitals = atoi(optarg2);
- break;
-
- case 'x':
- option_phonemes = 1;
- break;
-
- case 'X':
- option_phonemes = 2;
- break;
-
- case 'm':
- option_ssml = 1;
- break;
-
- case 'p':
- pitch_adjustment = atoi(optarg2);
- if(pitch_adjustment > 99) pitch_adjustment = 99;
- break;
-
- case 'q':
- quiet = 1;
- break;
-
- case 'f':
- strncpy0(filename,optarg2,sizeof(filename));
- break;
-
- case 'l':
- value = 0;
- value = atoi(optarg2);
- option_linelength = value;
- break;
-
- case 'a':
- amp = atoi(optarg2);
- break;
-
- case 's':
- speed = atoi(optarg2);
- break;
-
- case 'g':
- wordgap = atoi(optarg2);
- break;
-
- case 'v':
- strncpy0(voicename,optarg2,sizeof(voicename));
- break;
-
- case 'w':
- option_waveout = 1;
- strncpy0(wavefile,optarg2,sizeof(wavefile));
- break;
-
- case 'z':
- option_endpause = 0;
- break;
-
- case 0x100: // --stdin
- flag_stdin = 1;
- break;
-
- case 0x105: // --stdout
- option_waveout = 1;
- strcpy(wavefile,"stdout");
- break;
-
- case 0x101: // --compile-debug
- case 0x102: // --compile
- if(optarg2 != NULL)
- strncpy0(voicename,optarg2,sizeof(voicename));
- flag_compile = c;
- break;
-
- case 0x103: // --punct
- option_punctuation = 1;
- if(optarg2 != NULL)
- {
- ix = 0;
- while((ix < N_PUNCTLIST) && ((option_punctlist[ix] = optarg2[ix]) != 0)) ix++;
- option_punctlist[N_PUNCTLIST-1] = 0;
- option_punctuation = 2;
- }
- break;
-
- case 0x104: // --voices
- init_path(argv[0],data_path);
- DisplayVoices(stdout,optarg2);
- exit(0);
-
- case 0x106: // -- split
- if(optarg2 == NULL)
- samples_split = 30; // default 30 minutes
- else
- samples_split = atoi(optarg2);
- break;
-
- case 0x107: // --path
- data_path = optarg2;
- break;
-
- case 0x108: // --phonout
- if((f_trans = fopen(optarg2,"w")) == NULL)
- {
- fprintf(stderr,"Can't write to: %s\n",optarg2);
- f_trans = stderr;
- }
- break;
-
- default:
- exit(0);
- }
- }
-
- init_path(argv[0],data_path);
- initialise();
-
-
- if(flag_compile)
- {
- LoadVoice(voicename,5);
-
-#ifdef PLATFORM_DOS
- char path_dsource[sizeof(path_home)+20];
- strcpy(path_dsource,path_home);
- path_dsource[strlen(path_home)-11] = 0; // remove "espeak-data" from the end
- strcat(path_dsource,"dictsource\\");
- CompileDictionary(path_dsource,dictionary_name,NULL,NULL, flag_compile & 0x1);
-#else
-#ifdef PLATFORM_WINDOWS
- char path_dsource[sizeof(path_home)+20];
- strcpy(path_dsource,path_home);
- path_dsource[strlen(path_home)-11] = 0; // remove "espeak-data" from the end
- strcat(path_dsource,"dictsource\\");
- CompileDictionary(path_dsource,dictionary_name,NULL,NULL, flag_compile & 0x1);
-#else
- CompileDictionary(NULL,dictionary_name,NULL,NULL, flag_compile & 0x1);
-#endif
-#endif
- exit(0);
- }
-
-
- if(voicename[0] == 0)
- strcpy(voicename,"default");
-
- if(SetVoiceByName(voicename) != EE_OK)
- {
- memset(&voice_select,0,sizeof(voice_select));
- voice_select.languages = voicename;
- if(SetVoiceByProperties(&voice_select) != EE_OK)
- {
- fprintf(stderr,"%svoice '%s'\n",err_load,voicename);
- exit(2);
- }
- }
-
- SetParameter(espeakRATE,speed,0);
- SetParameter(espeakVOLUME,amp,0);
- SetParameter(espeakCAPITALS,option_capitals,0);
- SetParameter(espeakPUNCTUATION,option_punctuation,0);
- SetParameter(espeakWORDGAP,wordgap,0);
-
- if(pitch_adjustment != 50)
- {
- SetParameter(espeakPITCH,pitch_adjustment,0);
- }
- DoVoiceChange(voice);
-
- if(filename[0]==0)
- {
- if((optind < argc) && (flag_stdin == 0))
- {
- // there's a non-option parameter, and no -f or --stdin
- // use it as text
- p_text = argv[optind];
- }
- else
- {
- f_text = stdin;
- if(flag_stdin == 0)
- option_linelength = -1; // single input lines on stdin
- }
- }
- else
- {
- f_text = fopen(filename,"r");
- }
-
- if((f_text == NULL) && (p_text == NULL))
- {
- fprintf(stderr,"%sfile '%s'\n",err_load,filename);
- exit(1);
- }
-
- if(option_waveout || quiet)
- {
- if(quiet)
- {
- // no sound output
- OpenWaveFile(NULL,samplerate);
- option_waveout = 1;
- }
- else
- {
- // write sound output to a WAV file
- samples_split = (samplerate * samples_split) * 60;
-
- if(samples_split)
- {
- // don't open the wav file until we start generating speech
- char *extn;
- extn = strrchr(wavefile,'.');
- if((extn != NULL) && ((wavefile + strlen(wavefile) - extn) <= 4))
- {
- strcpy(filetype,extn);
- *extn = 0;
- }
- }
- else
- if(OpenWaveFile(wavefile,samplerate) != 0)
- {
- fprintf(stderr,"Can't write to output file '%s'\n'",wavefile);
- exit(3);
- }
- }
-
- InitText(0);
- SpeakNextClause(f_text,p_text,0);
-
- ix = 1;
- for(;;)
- {
- if(WavegenFile() != 0)
- {
- if(ix == 0)
- break; // finished, wavegen command queue is empty
- }
-
- if(Generate(phoneme_list,&n_phoneme_list,1)==0)
- {
- ix = SpeakNextClause(NULL,NULL,1);
- }
- }
-
- CloseWaveFile();
- }
- else
- {
- // Silence on ^C or SIGINT
-// signal(SIGINT,StopSpeak);
-
- // output sound using portaudio
- WavegenInitSound();
-
- InitText(0);
- SpeakNextClause(f_text,p_text,0);
-
- if(option_quiet)
- {
- while(SpeakNextClause(NULL,NULL,1) != 0);
- return(0);
- }
-
-#ifdef USE_PORTAUDIO
- speaking = 1;
- while(speaking)
- {
- // NOTE: if nanosleep() isn't recognised on your system, try replacing
- // this by sleep(1);
-#ifdef PLATFORM_WINDOWS
- Sleep(300); // 0.3s
-#else
-#ifdef USE_NANOSLEEP
- struct timespec period;
- struct timespec remaining;
- period.tv_sec = 0;
- period.tv_nsec = 300000000; // 0.3 sec
- nanosleep(&period,&remaining);
-#else
- sleep(1);
-#endif
-#endif
- if(SynthOnTimer() != 0)
- speaking = 0;
- }
-#else
- fprintf(stderr,"-w option must be used because the program was built without a sound interface\n");
-#endif // USE_PORTAUDIO
- }
-
- if((f_trans != stdout) && (f_trans != stderr))
- fclose(f_trans); // needed for WinCe
- return(0);
-}
diff --git a/navit/support/espeak/speak_init.c b/navit/support/espeak/speak_init.c
deleted file mode 100644
index 06a34235f..000000000
--- a/navit/support/espeak/speak_init.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "../../plugin.h"
-
-void
-plugin_init(void)
-{
-}
diff --git a/navit/support/espeak/speak_lib.c b/navit/support/espeak/speak_lib.c
deleted file mode 100644
index 85c1b39a3..000000000
--- a/navit/support/espeak/speak_lib.c
+++ /dev/null
@@ -1,1156 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include "stdio.h"
-#include "ctype.h"
-#include "string.h"
-#include "stdlib.h"
-#include "wchar.h"
-#include "locale.h"
-#include <assert.h>
-#include <time.h>
-
-#include "speech.h"
-
-#include <sys/stat.h>
-#ifdef PLATFORM_WINDOWS
-#include <windows.h>
-#else
-#include <unistd.h>
-#endif
-
-#include "speak_lib.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-#include "translate.h"
-#include "debug.h"
-
-#include "fifo.h"
-#include "event.h"
-#include "wave.h"
-
-unsigned char *outbuf=NULL;
-extern espeak_VOICE voice_selected;
-
-espeak_EVENT *event_list=NULL;
-int event_list_ix=0;
-int n_event_list;
-long count_samples;
-void* my_audio=NULL;
-
-static unsigned int my_unique_identifier=0;
-static void* my_user_data=NULL;
-static espeak_AUDIO_OUTPUT my_mode=AUDIO_OUTPUT_SYNCHRONOUS;
-static int synchronous_mode = 1;
-t_espeak_callback* synth_callback = NULL;
-int (* uri_callback)(int, const char *, const char *) = NULL;
-int (* phoneme_callback)(const char *) = NULL;
-
-char path_home[N_PATH_HOME]; // this is the espeak-data directory
-
-
-#ifdef USE_ASYNC
-
-static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event)
-{//======================================================================
- ENTER("dispatch_audio");
-
- int a_wave_can_be_played = fifo_is_command_enabled();
-
-#ifdef DEBUG_ENABLED
- SHOW("*** dispatch_audio > uid=%d, [write=%p (%d bytes)], sample=%d, a_wave_can_be_played = %d\n",
- (event) ? event->unique_identifier : 0, wave_test_get_write_buffer(), 2*length,
- (event) ? event->sample : 0,
- a_wave_can_be_played);
-#endif
-
- switch(my_mode)
- {
- case AUDIO_OUTPUT_PLAYBACK:
- {
- if (outbuf && length && a_wave_can_be_played)
- {
- wave_write (my_audio, (char*)outbuf, 2*length);
- }
-
- while(a_wave_can_be_played) {
- // TBD: some event are filtered here but some insight might be given
- // TBD: in synthesise.cpp for avoiding to create WORDs with size=0.
- // TBD: For example sentence "or ALT)." returns three words
- // "or", "ALT" and "".
- // TBD: the last one has its size=0.
- if (event && (event->type == espeakEVENT_WORD) && (event->length==0))
- {
- break;
- }
- espeak_ERROR a_error = event_declare(event);
- if (a_error != EE_BUFFER_FULL)
- {
- break;
- }
- SHOW_TIME("dispatch_audio > EE_BUFFER_FULL\n");
- usleep(10000);
- a_wave_can_be_played = fifo_is_command_enabled();
- }
- }
- break;
-
- case AUDIO_OUTPUT_RETRIEVAL:
- if (synth_callback)
- {
- synth_callback(outbuf, length, event);
- }
- break;
-
- case AUDIO_OUTPUT_SYNCHRONOUS:
- case AUDIO_OUTPUT_SYNCH_PLAYBACK:
- break;
- }
-
- if (!a_wave_can_be_played)
- {
- SHOW_TIME("dispatch_audio > synth must be stopped!\n");
- }
-
- SHOW_TIME("LEAVE dispatch_audio\n");
-
- return (a_wave_can_be_played==0); // 1 = stop synthesis
-}
-
-
-
-static int create_events(short* outbuf, int length, espeak_EVENT* event, uint32_t the_write_pos)
-{//=====================================================================
- int finished;
- int i=0;
-
- // The audio data are written to the output device.
- // The list of events in event_list (index: event_list_ix) is read:
- // Each event is declared to the "event" object which stores them internally.
- // The event object is responsible of calling the external callback
- // as soon as the relevant audio sample is played.
-
- do
- { // for each event
- espeak_EVENT* event;
- if (event_list_ix == 0)
- {
- event = NULL;
- }
- else
- {
- event = event_list + i;
-#ifdef DEBUG_ENABLED
- SHOW("Synthesize: event->sample(%d) + %d = %d\n", event->sample, the_write_pos, event->sample + the_write_pos);
-#endif
- event->sample += the_write_pos;
- }
-#ifdef DEBUG_ENABLED
- SHOW("*** Synthesize: i=%d (event_list_ix=%d), length=%d\n",i,event_list_ix,length);
-#endif
- finished = dispatch_audio((short *)outbuf, length, event);
- length = 0; // the wave data are played once.
- i++;
- } while((i < event_list_ix) && !finished);
- return finished;
-}
-
-
-int sync_espeak_terminated_msg( uint unique_identifier, void* user_data)
-{//=====================================================================
- ENTER("sync_espeak_terminated_msg");
-
- int finished=0;
-
- memset(event_list, 0, 2*sizeof(espeak_EVENT));
-
- event_list[0].type = espeakEVENT_MSG_TERMINATED;
- event_list[0].unique_identifier = unique_identifier;
- event_list[0].user_data = user_data;
- event_list[1].type = espeakEVENT_LIST_TERMINATED;
- event_list[1].unique_identifier = unique_identifier;
- event_list[1].user_data = user_data;
-
- if (my_mode==AUDIO_OUTPUT_PLAYBACK)
- {
- while(1)
- {
- espeak_ERROR a_error = event_declare(event_list);
- if (a_error != EE_BUFFER_FULL)
- {
- break;
- }
- SHOW_TIME("sync_espeak_terminated_msg > EE_BUFFER_FULL\n");
- usleep(10000);
- }
- }
- else
- {
- if (synth_callback)
- {
- finished=synth_callback(NULL,0,event_list);
- }
- }
- return finished;
-}
-
-#endif
-
-
-static void select_output(espeak_AUDIO_OUTPUT output_type)
-{//=======================================================
- my_mode = output_type;
- my_audio = NULL;
- synchronous_mode = 1;
- option_waveout = 1; // inhibit portaudio callback from wavegen.cpp
-
- switch(my_mode)
- {
- case AUDIO_OUTPUT_PLAYBACK:
- synchronous_mode = 0;
-#ifdef USE_ASYNC
- wave_init();
- wave_set_callback_is_output_enabled( fifo_is_command_enabled);
- my_audio = wave_open("alsa");
- event_init();
-#endif
- break;
-
- case AUDIO_OUTPUT_RETRIEVAL:
- synchronous_mode = 0;
- break;
-
- case AUDIO_OUTPUT_SYNCHRONOUS:
- break;
-
- case AUDIO_OUTPUT_SYNCH_PLAYBACK:
- option_waveout = 0;
- WavegenInitSound();
- break;
- }
-} // end of select_output
-
-
-
-
-int GetFileLength(const char *filename)
-{//====================================
- struct stat statbuf;
-
- if(stat(filename,&statbuf) != 0)
- return(0);
-
- if((statbuf.st_mode & S_IFMT) == S_IFDIR)
- // if(S_ISDIR(statbuf.st_mode))
- return(-2); // a directory
-
- return(statbuf.st_size);
-} // end of GetFileLength
-
-
-char *Alloc(int size)
-{//==================
- char *p;
- if((p = (char *)malloc(size)) == NULL)
- fprintf(stderr,"Can't allocate memory\n"); // I was told that size+1 fixes a crash on 64-bit systems
- return(p);
-}
-
-void Free(void *ptr)
-{//=================
- if(ptr != NULL)
- free(ptr);
-}
-
-
-
-static void init_path(const char *path)
-{//====================================
-#ifdef PLATFORM_WINDOWS
- HKEY RegKey;
- unsigned long size;
- unsigned long var_type;
- char *env;
- unsigned char buf[sizeof(path_home)-13];
-
- if(path != NULL)
- {
- sprintf(path_home,"%s/espeak-data",path);
- return;
- }
-
- if((env = getenv("ESPEAK_DATA_PATH")) != NULL)
- {
- sprintf(path_home,"%s/espeak-data",env);
- if(GetFileLength(path_home) == -2)
- return; // an espeak-data directory exists
- }
-
- buf[0] = 0;
- RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Speech\\Voices\\Tokens\\eSpeak", 0, KEY_READ, &RegKey);
- size = sizeof(buf);
- var_type = REG_SZ;
- RegQueryValueExA(RegKey, "path", 0, &var_type, buf, &size);
-
- sprintf(path_home,"%s\\espeak-data",buf);
-
-#else
- char *env;
-
- if(path != NULL)
- {
- snprintf(path_home,sizeof(path_home),"%s/espeak-data",path);
- return;
- }
-
- // check for environment variable
- if((env = getenv("ESPEAK_DATA_PATH")) != NULL)
- {
- snprintf(path_home,sizeof(path_home),"%s/espeak-data",env);
- if(GetFileLength(path_home) == -2)
- return; // an espeak-data directory exists
- }
-
- snprintf(path_home,sizeof(path_home),"%s/espeak-data",getenv("HOME"));
- if(access(path_home,R_OK) != 0)
- {
- strcpy(path_home,PATH_ESPEAK_DATA);
- }
-#endif
-}
-
-static int initialise(void)
-{//========================
- int param;
- int result;
-
- LoadConfig();
- WavegenInit(22050,0); // 22050
- if((result = LoadPhData()) != 1)
- {
- if(result == -1)
- {
- fprintf(stderr,"Failed to load espeak-data\n");
- exit(1);
- }
- else
- fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home);
- }
-
- memset(&voice_selected,0,sizeof(voice_selected));
- SetVoiceStack(NULL);
- SynthesizeInit();
- InitNamedata();
-
- for(param=0; param<N_SPEECH_PARAM; param++)
- param_stack[0].parameter[param] = param_defaults[param];
-
- return(0);
-}
-
-
-static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text, int flags)
-{//========================================================================================
- // Fill the buffer with output sound
- int length;
- int finished = 0;
- int count_buffers = 0;
-#ifdef USE_ASYNC
- uint32_t a_write_pos=0;
-#endif
-
-#ifdef DEBUG_ENABLED
- ENTER("Synthesize");
- if (text)
- {
- SHOW("Synthesize > uid=%d, flags=%d, >>>text=%s<<<\n", unique_identifier, flags, text);
- }
-#endif
-
- if((outbuf==NULL) || (event_list==NULL))
- return(EE_INTERNAL_ERROR); // espeak_Initialize() has not been called
-
- option_multibyte = flags & 7;
- option_ssml = flags & espeakSSML;
- option_phoneme_input = flags & espeakPHONEMES;
- option_endpause = flags & espeakENDPAUSE;
-
- count_samples = 0;
-
-#ifdef USE_ASYNC
- if(my_mode == AUDIO_OUTPUT_PLAYBACK)
- {
- a_write_pos = wave_get_write_position(my_audio);
- }
-#endif
-
- if(translator == NULL)
- {
- SetVoiceByName("default");
- }
-
- SpeakNextClause(NULL,text,0);
-
- if(my_mode == AUDIO_OUTPUT_SYNCH_PLAYBACK)
- {
- for(;;)
- {
-#ifdef PLATFORM_WINDOWS
- Sleep(300); // 0.3s
-#else
-#ifdef USE_NANOSLEEP
- struct timespec period;
- struct timespec remaining;
- period.tv_sec = 0;
- period.tv_nsec = 300000000; // 0.3 sec
- nanosleep(&period,&remaining);
-#else
- sleep(1);
-#endif
-#endif
- if(SynthOnTimer() != 0)
- break;
- }
- return(EE_OK);
- }
-
- for(;;)
- {
-#ifdef DEBUG_ENABLED
- SHOW("Synthesize > %s\n","for (next)");
-#endif
- out_ptr = outbuf;
- out_end = &outbuf[outbuf_size];
- event_list_ix = 0;
- WavegenFill(0);
-
- length = (out_ptr - outbuf)/2;
- count_samples += length;
- event_list[event_list_ix].type = espeakEVENT_LIST_TERMINATED; // indicates end of event list
- event_list[event_list_ix].unique_identifier = my_unique_identifier;
- event_list[event_list_ix].user_data = my_user_data;
-
- count_buffers++;
- if (my_mode==AUDIO_OUTPUT_PLAYBACK)
- {
-#ifdef USE_ASYNC
- finished = create_events((short *)outbuf, length, event_list, a_write_pos);
- length = 0; // the wave data are played once.
-#endif
- }
- else
- {
- finished = synth_callback((short *)outbuf, length, event_list);
- }
- if(finished)
- {
- SpeakNextClause(NULL,0,2); // stop
- break;
- }
-
- if(Generate(phoneme_list,&n_phoneme_list,1)==0)
- {
- if(WcmdqUsed() == 0)
- {
- // don't process the next clause until the previous clause has finished generating speech.
- // This ensures that <audio> tag (which causes end-of-clause) is at a sound buffer boundary
-
- event_list[0].type = espeakEVENT_LIST_TERMINATED;
- event_list[0].unique_identifier = my_unique_identifier;
- event_list[0].user_data = my_user_data;
-
- if(SpeakNextClause(NULL,NULL,1)==0)
- {
-#ifdef USE_ASYNC
- if (my_mode==AUDIO_OUTPUT_PLAYBACK)
- {
- dispatch_audio(NULL, 0, NULL); // TBD: test case
- }
- else
- {
- synth_callback(NULL, 0, event_list); // NULL buffer ptr indicates end of data
- }
-#else
- synth_callback(NULL, 0, event_list); // NULL buffer ptr indicates end of data
-#endif
- break;
- }
- }
- }
- }
- return(EE_OK);
-} // end of Synthesize
-
-#ifdef DEBUG_ENABLED
-static const char* label[] = {
- "END_OF_EVENT_LIST",
- "WORD",
- "SENTENCE",
- "MARK",
- "PLAY",
- "END"};
-#endif
-
-
-void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr)
-{//======================================================================================
- // type: 1=word, 2=sentence, 3=named mark, 4=play audio, 5=end
- ENTER("MarkerEvent");
- espeak_EVENT *ep;
- double time;
-
- if((event_list == NULL) || (event_list_ix >= (n_event_list-2)))
- return;
-
- ep = &event_list[event_list_ix++];
- ep->type = (espeak_EVENT_TYPE)type;
- ep->unique_identifier = my_unique_identifier;
- ep->user_data = my_user_data;
- ep->text_position = char_position & 0xffffff;
- ep->length = char_position >> 24;
-
- time = ((double)(count_samples + mbrola_delay + (out_ptr - out_start)/2)*1000.0)/samplerate;
- ep->audio_position = (int)(time);
- ep->sample = (count_samples + mbrola_delay + (out_ptr - out_start)/2);
-
-#ifdef DEBUG_ENABLED
- SHOW("MarkerEvent > count_samples=%d, out_ptr=%x, out_start=0x%x\n",count_samples, out_ptr, out_start);
- SHOW("*** MarkerEvent > type=%s, uid=%d, text_pos=%d, length=%d, audio_position=%d, sample=%d\n",
- label[ep->type], ep->unique_identifier, ep->text_position, ep->length,
- ep->audio_position, ep->sample);
-#endif
-
- if((type == espeakEVENT_MARK) || (type == espeakEVENT_PLAY))
- ep->id.name = &namedata[value];
- else
- ep->id.number = value;
-} // end of MarkerEvent
-
-
-
-
-espeak_ERROR sync_espeak_Synth(unsigned int unique_identifier, const void *text, size_t size,
- unsigned int position, espeak_POSITION_TYPE position_type,
- unsigned int end_position, unsigned int flags, void* user_data)
-{//===========================================================================
-
-#ifdef DEBUG_ENABLED
- ENTER("sync_espeak_Synth");
- SHOW("sync_espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text);
-#endif
-
- espeak_ERROR aStatus;
-
- InitText(flags);
- my_unique_identifier = unique_identifier;
- my_user_data = user_data;
-
- switch(position_type)
- {
- case POS_CHARACTER:
- skip_characters = position;
- break;
-
- case POS_WORD:
- skip_words = position;
- break;
-
- case POS_SENTENCE:
- skip_sentences = position;
- break;
-
- }
- if(skip_characters || skip_words || skip_sentences)
- skipping_text = 1;
-
- end_character_position = end_position;
-
- aStatus = Synthesize(unique_identifier, text, flags);
- #ifdef USE_ASYNC
- wave_flush(my_audio);
- #endif
-
- SHOW_TIME("LEAVE sync_espeak_Synth");
- return aStatus;
-} // end of sync_espeak_Synth
-
-
-
-
-espeak_ERROR sync_espeak_Synth_Mark(unsigned int unique_identifier, const void *text, size_t size,
- const char *index_mark, unsigned int end_position,
- unsigned int flags, void* user_data)
-{//=========================================================================
- espeak_ERROR aStatus;
-
- InitText(flags);
-
- my_unique_identifier = unique_identifier;
- my_user_data = user_data;
-
- if(index_mark != NULL)
- {
- strncpy0(skip_marker, index_mark, sizeof(skip_marker));
- skipping_text = 1;
- }
-
- end_character_position = end_position;
-
-
- aStatus = Synthesize(unique_identifier, text, flags | espeakSSML);
- SHOW_TIME("LEAVE sync_espeak_Synth_Mark");
-
- return (aStatus);
-} // end of sync_espeak_Synth_Mark
-
-
-
-void sync_espeak_Key(const char *key)
-{//==================================
- // symbolic name, symbolicname_character - is there a system resource of symbolic names per language?
- int letter;
- int ix;
-
- ix = utf8_in(&letter,key);
- if(key[ix] == 0)
- {
- // a single character
- sync_espeak_Char(letter);
- return;
- }
-
- my_unique_identifier = 0;
- my_user_data = NULL;
- Synthesize(0, key,0); // speak key as a text string
-}
-
-
-void sync_espeak_Char(wchar_t character)
-{//=====================================
- // is there a system resource of character names per language?
- char buf[80];
- my_unique_identifier = 0;
- my_user_data = NULL;
-
- sprintf(buf,"<say-as interpret-as=\"tts:char\">&#%d;</say-as>",character);
- Synthesize(0, buf,espeakSSML);
-}
-
-
-
-void sync_espeak_SetPunctuationList(const wchar_t *punctlist)
-{//==========================================================
- // Set the list of punctuation which are spoken for "some".
- my_unique_identifier = 0;
- my_user_data = NULL;
-
- wcsncpy(option_punctlist, punctlist, N_PUNCTLIST);
- option_punctlist[N_PUNCTLIST-1] = 0;
-} // end of sync_espeak_SetPunctuationList
-
-
-
-
-#pragma GCC visibility push(default)
-
-
-ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback)
-{//======================================================================
- ENTER("espeak_SetSynthCallback");
- synth_callback = SynthCallback;
-#ifdef USE_ASYNC
- event_set_callback(synth_callback);
-#endif
-}
-
-ESPEAK_API void espeak_SetUriCallback(int (* UriCallback)(int, const char*, const char *))
-{//=======================================================================================
- ENTER("espeak_SetUriCallback");
- uri_callback = UriCallback;
-}
-
-
-ESPEAK_API void espeak_SetPhonemeCallback(int (* PhonemeCallback)(const char*))
-{//===========================================================================
- phoneme_callback = PhonemeCallback;
-}
-
-ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output_type, int buf_length, const char *path, int options)
-{//=============================================================================================================
-ENTER("espeak_Initialize");
- int param;
-
- // It seems that the wctype functions don't work until the locale has been set
- // to something other than the default "C". Then, not only Latin1 but also the
- // other characters give the correct results with iswalpha() etc.
-#ifdef PLATFORM_RISCOS
- setlocale(LC_CTYPE,"ISO8859-1");
-#else
- if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL)
- {
- if(setlocale(LC_CTYPE,"UTF-8") == NULL)
- setlocale(LC_CTYPE,"");
- }
-#endif
-
- init_path(path);
- initialise();
- select_output(output_type);
-
- // buflength is in mS, allocate 2 bytes per sample
- if(buf_length == 0)
- buf_length = 200;
- outbuf_size = (buf_length * samplerate)/500;
- outbuf = (unsigned char*)realloc(outbuf,outbuf_size);
- if((out_start = outbuf) == NULL)
- return(EE_INTERNAL_ERROR);
-
- // allocate space for event list. Allow 200 events per second.
- // Add a constant to allow for very small buf_length
- n_event_list = (buf_length*200)/1000 + 20;
- if((event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list)) == NULL)
- return(EE_INTERNAL_ERROR);
-
- option_phonemes = 0;
- option_phoneme_events = (options & 1);
-
- SetVoiceByName("default");
-
- for(param=0; param<N_SPEECH_PARAM; param++)
- param_stack[0].parameter[param] = param_defaults[param];
-
- SetParameter(espeakRATE,170,0);
- SetParameter(espeakVOLUME,100,0);
- SetParameter(espeakCAPITALS,option_capitals,0);
- SetParameter(espeakPUNCTUATION,option_punctuation,0);
- SetParameter(espeakWORDGAP,0,0);
- DoVoiceChange(voice);
-
-#ifdef USE_ASYNC
- fifo_init();
-#endif
-
- return(samplerate);
-}
-
-
-
-ESPEAK_API espeak_ERROR espeak_Synth(const void *text, size_t size,
- unsigned int position,
- espeak_POSITION_TYPE position_type,
- unsigned int end_position, unsigned int flags,
- unsigned int* unique_identifier, void* user_data)
-{//=====================================================================================
-#ifdef DEBUG_ENABLED
- ENTER("espeak_Synth");
- SHOW("espeak_Synth > position=%d, position_type=%d, end_position=%d, flags=%d, user_data=0x%x, text=%s\n", position, position_type, end_position, flags, user_data, text);
-#endif
-
- espeak_ERROR a_error=EE_INTERNAL_ERROR;
- static unsigned int temp_identifier;
-
- if (unique_identifier == NULL)
- {
- unique_identifier = &temp_identifier;
- }
- *unique_identifier = 0;
-
- if(synchronous_mode)
- {
- return(sync_espeak_Synth(0,text,size,position,position_type,end_position,flags,user_data));
- }
-
-#ifdef USE_ASYNC
- // Create the text command
- t_espeak_command* c1 = create_espeak_text(text, size, position, position_type, end_position, flags, user_data);
-
- // Retrieve the unique identifier
- *unique_identifier = c1->u.my_text.unique_identifier;
-
- // Create the "terminated msg" command (same uid)
- t_espeak_command* c2 = create_espeak_terminated_msg(*unique_identifier, user_data);
-
- // Try to add these 2 commands (single transaction)
- if (c1 && c2)
- {
- a_error = fifo_add_commands(c1, c2);
- if (a_error != EE_OK)
- {
- delete_espeak_command(c1);
- delete_espeak_command(c2);
- c1=c2=NULL;
- }
- }
- else
- {
- delete_espeak_command(c1);
- delete_espeak_command(c2);
- }
-
-#endif
- return a_error;
-} // end of espeak_Synth
-
-
-
-ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, size_t size,
- const char *index_mark,
- unsigned int end_position,
- unsigned int flags,
- unsigned int* unique_identifier,
- void* user_data)
-{//=========================================================================
-#ifdef DEBUG_ENABLED
- ENTER("espeak_Synth_Mark");
- SHOW("espeak_Synth_Mark > index_mark=%s, end_position=%d, flags=%d, text=%s\n", index_mark, end_position, flags, text);
-#endif
-
- espeak_ERROR a_error=EE_OK;
- static unsigned int temp_identifier;
-
- if (unique_identifier == NULL)
- {
- unique_identifier = &temp_identifier;
- }
- *unique_identifier = 0;
-
- if(synchronous_mode)
- {
- return(sync_espeak_Synth_Mark(0,text,size,index_mark,end_position,flags,user_data));
- }
-
-#ifdef USE_ASYNC
- // Create the mark command
- t_espeak_command* c1 = create_espeak_mark(text, size, index_mark, end_position,
- flags, user_data);
-
- // Retrieve the unique identifier
- *unique_identifier = c1->u.my_mark.unique_identifier;
-
- // Create the "terminated msg" command (same uid)
- t_espeak_command* c2 = create_espeak_terminated_msg(*unique_identifier, user_data);
-
- // Try to add these 2 commands (single transaction)
- if (c1 && c2)
- {
- a_error = fifo_add_commands(c1, c2);
- if (a_error != EE_OK)
- {
- delete_espeak_command(c1);
- delete_espeak_command(c2);
- c1=c2=NULL;
- }
- }
- else
- {
- delete_espeak_command(c1);
- delete_espeak_command(c2);
- }
-
-#endif
- return a_error;
-} // end of espeak_Synth_Mark
-
-
-
-ESPEAK_API espeak_ERROR espeak_Key(const char *key)
-{//================================================
- ENTER("espeak_Key");
- // symbolic name, symbolicname_character - is there a system resource of symbolicnames per language
-
- espeak_ERROR a_error = EE_OK;
-
- if(synchronous_mode)
- {
- sync_espeak_Key(key);
- return(EE_OK);
- }
-
-#ifdef USE_ASYNC
- t_espeak_command* c = create_espeak_key( key, NULL);
- a_error = fifo_add_command(c);
- if (a_error != EE_OK)
- {
- delete_espeak_command(c);
- }
-
-#endif
- return a_error;
-}
-
-
-ESPEAK_API espeak_ERROR espeak_Char(wchar_t character)
-{//===========================================
- ENTER("espeak_Char");
- // is there a system resource of character names per language?
-
-#ifdef USE_ASYNC
- espeak_ERROR a_error;
-
- if(synchronous_mode)
- {
- sync_espeak_Char(character);
- return(EE_OK);
- }
-
- t_espeak_command* c = create_espeak_char( character, NULL);
- a_error = fifo_add_command(c);
- if (a_error != EE_OK)
- {
- delete_espeak_command(c);
- }
- return a_error;
-#else
- sync_espeak_Char(character);
- return(EE_OK);
-#endif
-}
-
-
-ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name)
-{//============================================================
- ENTER("espeak_SetVoiceByName");
-
-//#ifdef USE_ASYNC
-// I don't think there's a need to queue change voice requests
-#ifdef deleted
- espeak_ERROR a_error;
-
- if(synchronous_mode)
- {
- return(SetVoiceByName(name));
- }
-
- t_espeak_command* c = create_espeak_voice_name(name);
- a_error = fifo_add_command(c);
- if (a_error != EE_OK)
- {
- delete_espeak_command(c);
- }
- return a_error;
-#else
- return(SetVoiceByName(name));
-#endif
-} // end of espeak_SetVoiceByName
-
-
-
-ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_selector)
-{//==============================================================================
- ENTER("espeak_SetVoiceByProperties");
-
-//#ifdef USE_ASYNC
-#ifdef deleted
- espeak_ERROR a_error;
-
- if(synchronous_mode)
- {
- return(SetVoiceByProperties(voice_selector));
- }
-
- t_espeak_command* c = create_espeak_voice_spec( voice_selector);
- a_error = fifo_add_command(c);
- if (a_error != EE_OK)
- {
- delete_espeak_command(c);
- }
- return a_error;
-#else
- return(SetVoiceByProperties(voice_selector));
-#endif
-} // end of espeak_SetVoiceByProperties
-
-
-ESPEAK_API int espeak_GetParameter(espeak_PARAMETER parameter, int current)
-{//========================================================================
- ENTER("espeak_GetParameter");
- // current: 0=default value, 1=current value
- if(current)
- {
- return(param_stack[0].parameter[parameter]);
- }
- else
- {
- return(param_defaults[parameter]);
- }
-} // end of espeak_GetParameter
-
-
-ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative)
-{//=============================================================================================
- ENTER("espeak_SetParameter");
-
-#ifdef USE_ASYNC
- espeak_ERROR a_error;
-
- if(synchronous_mode)
- {
- SetParameter(parameter,value,relative);
- return(EE_OK);
- }
-
- t_espeak_command* c = create_espeak_parameter(parameter, value, relative);
-
- a_error = fifo_add_command(c);
- if (a_error != EE_OK)
- {
- delete_espeak_command(c);
- }
- return a_error;
-#else
- SetParameter(parameter,value,relative);
- return(EE_OK);
-#endif
-}
-
-
-ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist)
-{//================================================================
- ENTER("espeak_SetPunctuationList");
- // Set the list of punctuation which are spoken for "some".
-
-#ifdef USE_ASYNC
- espeak_ERROR a_error;
-
- if(synchronous_mode)
- {
- sync_espeak_SetPunctuationList(punctlist);
- return(EE_OK);
- }
-
- t_espeak_command* c = create_espeak_punctuation_list( punctlist);
- a_error = fifo_add_command(c);
- if (a_error != EE_OK)
- {
- delete_espeak_command(c);
- }
- return a_error;
-#else
- sync_espeak_SetPunctuationList(punctlist);
- return(EE_OK);
-#endif
-} // end of espeak_SetPunctuationList
-
-
-ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream)
-{//============================================================
- ENTER("espeak_SetPhonemes");
- /* Controls the output of phoneme symbols for the text
- value=0 No phoneme output (default)
- value=1 Output the translated phoneme symbols for the text
- value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries)
- */
- option_phonemes = value;
- f_trans = stream;
- if(stream == NULL)
- f_trans = stderr;
-
-} // end of espeak_SetPhonemes
-
-
-ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags)
-{//=============================================================================
- ENTER("espeak_CompileDictionary");
- CompileDictionary(path, dictionary_name, log, NULL, flags);
-} // end of espeak_CompileDirectory
-
-
-ESPEAK_API espeak_ERROR espeak_Cancel(void)
-{//===============================
-#ifdef USE_ASYNC
- ENTER("espeak_Cancel");
- fifo_stop();
- event_clear_all();
-
- if(my_mode == AUDIO_OUTPUT_PLAYBACK)
- {
- wave_close(my_audio);
- }
- SHOW_TIME("espeak_Cancel > LEAVE");
-#endif
- embedded_value[EMBED_T] = 0; // reset echo for pronunciation announcements
- return EE_OK;
-} // end of espeak_Cancel
-
-
-ESPEAK_API int espeak_IsPlaying(void)
-{//==================================
-// ENTER("espeak_IsPlaying");
-#ifdef USE_ASYNC
- if((my_mode == AUDIO_OUTPUT_PLAYBACK) && wave_is_busy(my_audio))
- return(1);
-
- return(fifo_is_busy());
-#else
- return(0);
-#endif
-} // end of espeak_IsPlaying
-
-
-ESPEAK_API espeak_ERROR espeak_Synchronize(void)
-{//=============================================
-#ifdef USE_ASYNC
- SHOW_TIME("espeak_Synchronize > ENTER");
- while (espeak_IsPlaying())
- {
- usleep(20000);
- }
-#endif
- SHOW_TIME("espeak_Synchronize > LEAVE");
- return EE_OK;
-} // end of espeak_Synchronize
-
-
-extern void FreePhData(void);
-
-ESPEAK_API espeak_ERROR espeak_Terminate(void)
-{//===========================================
- ENTER("espeak_Terminate");
-#ifdef USE_ASYNC
- fifo_stop();
- fifo_terminate();
- event_terminate();
-
- if(my_mode == AUDIO_OUTPUT_PLAYBACK)
- {
- wave_close(my_audio);
- wave_terminate();
- }
-
-#endif
- Free(event_list);
- event_list = NULL;
- Free(outbuf);
- outbuf = NULL;
- FreePhData();
-
- return EE_OK;
-} // end of espeak_Terminate
-
-ESPEAK_API const char *espeak_Info(void)
-{//=======================================
- return(version_string);
-}
-
-#pragma GCC visibility pop
-
-
diff --git a/navit/support/espeak/speak_lib.h b/navit/support/espeak/speak_lib.h
deleted file mode 100644
index 25c24c173..000000000
--- a/navit/support/espeak/speak_lib.h
+++ /dev/null
@@ -1,601 +0,0 @@
-#ifndef SPEAK_LIB_H
-#define SPEAK_LIB_H
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-
-/*************************************************************/
-/* This is the header file for the library version of espeak */
-/* */
-/*************************************************************/
-
-#include <stdio.h>
-#include <wchar.h>
-#define ESPEAK_API_REVISION 5
-/*
-Revision 2
- Added parameter "options" to eSpeakInitialize()
-
-Revision 3
- Added espeakWORDGAP to espeak_PARAMETER
-
-Revision 4
- Added flags parameter to espeak_CompileDictionary()
-
-Revision 5
- Added espeakCHARS_16BIT
-*/
- /********************/
- /* Initialization */
- /********************/
-
-
-typedef enum {
- espeakEVENT_LIST_TERMINATED = 0, // Retrieval mode: terminates the event list.
- espeakEVENT_WORD = 1, // Start of word
- espeakEVENT_SENTENCE, // Start of sentence
- espeakEVENT_MARK, // Mark
- espeakEVENT_PLAY, // Audio element
- espeakEVENT_END, // End of sentence or clause
- espeakEVENT_MSG_TERMINATED, // End of message
- espeakEVENT_PHONEME // Phoneme, if enabled in espeak_Initialize()
-} espeak_EVENT_TYPE;
-
-
-
-typedef struct {
- espeak_EVENT_TYPE type;
- unsigned int unique_identifier; // message identifier (or 0 for key or character)
- int text_position; // the number of characters from the start of the text
- int length; // word length, in characters (for espeakEVENT_WORD)
- int audio_position; // the time in mS within the generated speech output data
- int sample; // sample id (internal use)
- void* user_data; // pointer supplied by the calling program
- union {
- int number; // used for WORD and SENTENCE events. For PHONEME events this is the phoneme mnemonic.
- const char *name; // used for MARK and PLAY events. UTF8 string
- } id;
-} espeak_EVENT;
-/*
- When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called.
-
-
- In RETRIEVAL mode, the callback function supplies to the calling program the audio data and an event list terminated by 0 (LIST_TERMINATED).
-
- In PLAYBACK mode, the callback function is called as soon as an event happens.
-
- For example suppose that the following message is supplied to espeak_Synth:
- "hello, hello."
-
-
- * Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function :
-
- ** Block 1:
- <audio data> +
- List of events: SENTENCE + WORD + LIST_TERMINATED
-
- ** Block 2:
- <audio data> +
- List of events: WORD + END + LIST_TERMINATED
-
- ** Block 3:
- no audio data
- List of events: MSG_TERMINATED + LIST_TERMINATED
-
-
- * Once processed in PLAYBACK mode, it could lead to 5 calls of the callback function:
-
- ** SENTENCE
- ** WORD (call when the sounds are actually played)
- ** WORD
- ** END (call when the end of sentence is actually played.)
- ** MSG_TERMINATED
-
-
- The MSG_TERMINATED event is the last event. It can inform the calling program to clear the user data related to the message.
- So if the synthesis must be stopped, the callback function is called for each pending message with the MSG_TERMINATED event.
-
- A MARK event indicates a <mark> element in the text.
- A PLAY event indicates an <audio> element in the text, for which the calling program should play the named sound file.
-*/
-
-
-
-typedef enum {
- POS_CHARACTER = 1,
- POS_WORD,
- POS_SENTENCE
-} espeak_POSITION_TYPE;
-
-
-typedef enum {
- /* PLAYBACK mode: plays the audio data, supplies events to the calling program*/
- AUDIO_OUTPUT_PLAYBACK,
-
- /* RETRIEVAL mode: supplies audio data and events to the calling program */
- AUDIO_OUTPUT_RETRIEVAL,
-
- /* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */
- AUDIO_OUTPUT_SYNCHRONOUS,
-
- /* Synchronous playback */
- AUDIO_OUTPUT_SYNCH_PLAYBACK
-
-} espeak_AUDIO_OUTPUT;
-
-
-typedef enum {
- EE_OK=0,
- EE_INTERNAL_ERROR=-1,
- EE_BUFFER_FULL=1,
- EE_NOT_FOUND=2
-} espeak_ERROR;
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options);
-/* Must be called before any synthesis functions are called.
- output: the audio data can either be played by eSpeak or passed back by the SynthCallback function.
-
- buflength: The length in mS of sound buffers passed to the SynthCallback function.
-
- path: The directory which contains the espeak-data directory, or NULL for the default location.
-
- options: bit 0: 1=allow espeakEVENT_PHONEME events.
-
-
- Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR).
-*/
-
-typedef int (t_espeak_callback)(short*, int, espeak_EVENT*);
-
-#ifdef __cplusplus
-extern "C"
-#endif
-void espeak_SetSynthCallback(t_espeak_callback* SynthCallback);
-/* Must be called before any synthesis functions are called.
- This specifies a function in the calling program which is called when a buffer of
- speech sound data has been produced.
-
-
- The callback function is of the form:
-
-int SynthCallback(short *wav, int numsamples, espeak_EVENT *events);
-
- wav: is the speech sound data which has been produced.
- NULL indicates that the synthesis has been completed.
-
- numsamples: is the number of entries in wav. This number may vary, may be less than
- the value implied by the buflength parameter given in espeak_Initialize, and may
- sometimes be zero (which does NOT indicate end of synthesis).
-
- events: an array of espeak_EVENT items which indicate word and sentence events, and
- also the occurance if <mark> and <audio> elements within the text. The list of
- events is terminated by an event of type = 0.
-
-
- Callback returns: 0=continue synthesis, 1=abort synthesis.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*));
-/* This function may be called before synthesis functions are used, in order to deal with
- <audio> tags. It specifies a callback function which is called when an <audio> element is
- encountered and allows the calling program to indicate whether the sound file which
- is specified in the <audio> element is available and is to be played.
-
- The callback function is of the form:
-
-int UriCallback(int type, const char *uri, const char *base);
-
- type: type of callback event. Currently only 1= <audio> element
-
- uri: the "src" attribute from the <audio> element
-
- base: the "xml:base" attribute (if any) from the <speak> element
-
- Return: 1=don't play the sound, but speak the text alternative.
- 0=place a PLAY event in the event list at the point where the <audio> element
- occurs. The calling program can then play the sound at that point.
-*/
-
-
- /********************/
- /* Synthesis */
- /********************/
-
-
-#define espeakCHARS_AUTO 0
-#define espeakCHARS_UTF8 1
-#define espeakCHARS_8BIT 2
-#define espeakCHARS_WCHAR 3
-#define espeakCHARS_16BIT 4
-
-#define espeakSSML 0x10
-#define espeakPHONEMES 0x100
-#define espeakENDPAUSE 0x1000
-#define espeakKEEP_NAMEDATA 0x2000
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_Synth(const void *text,
- size_t size,
- unsigned int position,
- espeak_POSITION_TYPE position_type,
- unsigned int end_position,
- unsigned int flags,
- unsigned int* unique_identifier,
- void* user_data);
-/* Synthesize speech for the specified text. The speech sound data is passed to the calling
- program in buffers by means of the callback function specified by espeak_SetSynthCallback(). The command is asynchronous: it is internally buffered and returns as soon as possible. If espeak_Initialize was previously called with AUDIO_OUTPUT_PLAYBACK as argument, the sound data are played by eSpeak.
-
- text: The text to be spoken, terminated by a zero character. It may be either 8-bit characters,
- wide characters (wchar_t), or UTF8 encoding. Which of these is determined by the "flags"
- parameter.
-
- size: Equal to (or greatrer than) the size of the text data, in bytes. This is used in order
- to allocate internal storage space for the text. This value is not used for
- AUDIO_OUTPUT_SYNCHRONOUS mode.
-
- position: The position in the text where speaking starts. Zero indicates speak from the
- start of the text.
-
- position_type: Determines whether "position" is a number of characters, words, or sentences.
- Values:
-
- end_position: If set, this gives a character position at which speaking will stop. A value
- of zero indicates no end position.
-
- flags: These may be OR'd together:
- Type of character codes, one of:
- espeakCHARS_UTF8 UTF8 encoding
- espeakCHARS_8BIT The 8 bit ISO-8859 character set for the particular language.
- espeakCHARS_AUTO 8 bit or UTF8 (this is the default)
- espeakCHARS_WCHAR Wide characters (wchar_t)
-
- espeakSSML Elements within < > are treated as SSML elements, or if not recognised are ignored.
-
- espeakPHONEMES Text within [[ ]] is treated as phonemes codes (in espeak's Hirshenbaum encoding).
-
- espeakENDPAUSE If set then a sentence pause is added at the end of the text. If not set then
- this pause is suppressed.
-
- unique_identifier: message identifier; helpful for identifying later
- data supplied to the callback.
-
- user_data: pointer which will be passed to the callback function.
-
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
- you may try after a while to call the function again.
- EE_INTERNAL_ERROR.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_Synth_Mark(const void *text,
- size_t size,
- const char *index_mark,
- unsigned int end_position,
- unsigned int flags,
- unsigned int* unique_identifier,
- void* user_data);
-/* Synthesize speech for the specified text. Similar to espeak_Synth() but the start position is
- specified by the name of a <mark> element in the text.
-
- index_mark: The "name" attribute of a <mark> element within the text which specified the
- point at which synthesis starts. UTF8 string.
-
- For the other parameters, see espeak_Synth()
-
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
- you may try after a while to call the function again.
- EE_INTERNAL_ERROR.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_Key(const char *key_name);
-/* Speak the name of a keyboard key.
- If key_name is a single character, it speaks the name of the character.
- Otherwise, it speaks key_name as a text string.
-
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
- you may try after a while to call the function again.
- EE_INTERNAL_ERROR.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_Char(wchar_t character);
-/* Speak the name of the given character
-
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
- you may try after a while to call the function again.
- EE_INTERNAL_ERROR.
-*/
-
-
-
-
- /***********************/
- /* Speech Parameters */
- /***********************/
-
-typedef enum {
- espeakSILENCE=0, /* internal use */
- espeakRATE=1,
- espeakVOLUME=2,
- espeakPITCH=3,
- espeakRANGE=4,
- espeakPUNCTUATION=5,
- espeakCAPITALS=6,
- espeakWORDGAP=7,
- espeakOPTIONS=8, // reserved for misc. options. not yet used
- espeakINTONATION=9,
-
- espeakRESERVED1=10,
- espeakRESERVED2=11,
- espeakEMPHASIS, /* internal use */
- espeakLINELENGTH, /* internal use */
- espeakVOICETYPE, // internal, 1=mbrola
- N_SPEECH_PARAM /* last enum */
-} espeak_PARAMETER;
-
-typedef enum {
- espeakPUNCT_NONE=0,
- espeakPUNCT_ALL=1,
- espeakPUNCT_SOME=2
-} espeak_PUNCT_TYPE;
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative);
-/* Sets the value of the specified parameter.
- relative=0 Sets the absolute value of the parameter.
- relative=1 Sets a relative value of the parameter.
-
- parameter:
- espeakRATE: speaking speed in word per minute.
-
- espeakVOLUME: volume in range 0-100 0=silence
-
- espeakPITCH: base pitch, range 0-100. 50=normal
-
- espeakRANGE: pitch range, range 0-100. 0-monotone, 50=normal
-
- espeakPUNCTUATION: which punctuation characters to announce:
- value in espeak_PUNCT_TYPE (none, all, some),
- see espeak_GetParameter() to specify which characters are announced.
-
- espeakCAPITALS: announce capital letters by:
- 0=none,
- 1=sound icon,
- 2=spelling,
- 3 or higher, by raising pitch. This values gives the amount in Hz by which the pitch
- of a word raised to indicate it has a capital letter.
-
- espeakWORDGAP: pause between words, units of 10mS (at the default speed)
-
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
- you may try after a while to call the function again.
- EE_INTERNAL_ERROR.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-int espeak_GetParameter(espeak_PARAMETER parameter, int current);
-/* current=0 Returns the default value of the specified parameter.
- current=1 Returns the current value of the specified parameter, as set by SetParameter()
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist);
-/* Specified a list of punctuation characters whose names are to be spoken when the
- value of the Punctuation parameter is set to "some".
-
- punctlist: A list of character codes, terminated by a zero character.
-
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
- you may try after a while to call the function again.
- EE_INTERNAL_ERROR.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-void espeak_SetPhonemeTrace(int value, FILE *stream);
-/* Controls the output of phoneme symbols for the text
- value=0 No phoneme output (default)
- value=1 Output the translated phoneme symbols for the text
- value=2 as (1), but also output a trace of how the translation was done (matching rules and list entries)
-
- stream output stream for the phoneme symbols (and trace). If stream=NULL then it uses stdout.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-void espeak_CompileDictionary(const char *path, FILE *log, int flags);
-/* Compile pronunciation dictionary for a language which corresponds to the currently
- selected voice. The required voice should be selected before calling this function.
-
- path: The directory which contains the language's '_rules' and '_list' files.
- 'path' should end with a path separator character ('/').
- log: Stream for error reports and statistics information. If log=NULL then stderr will be used.
-
- flags: Bit 0: include source line information for debug purposes (This is displayed with the
- -X command line option).
-*/
- /***********************/
- /* Voice Selection */
- /***********************/
-
-
-// voice table
-typedef struct {
- const char *name; // a given name for this voice. UTF8 string.
- const char *languages; // list of pairs of (byte) priority + (string) language (and dialect qualifier)
- const char *identifier; // the filename for this voice within espeak-data/voices
- unsigned char gender; // 0=none 1=male, 2=female,
- unsigned char age; // 0=not specified, or age in years
- unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties
- unsigned char xx1; // for internal use
- int score; // for internal use
- void *spare; // for internal use
-} espeak_VOICE;
-
-/* Note: The espeak_VOICE structure is used for two purposes:
- 1. To return the details of the available voices.
- 2. As a parameter to espeak_SetVoiceByProperties() in order to specify selection criteria.
-
- In (1), the "languages" field consists of a list of (UTF8) language names for which this voice
- may be used, each language name in the list is terminated by a zero byte and is also preceded by
- a single byte which gives a "priority" number. The list of languages is terminated by an
- additional zero byte.
-
- A language name consists of a language code, optionally followed by one or more qualifier (dialect)
- names separated by hyphens (eg. "en-uk"). A voice might, for example, have languages "en-uk" and
- "en". Even without "en" listed, voice would still be selected for the "en" language (because
- "en-uk" is related) but at a lower priority.
-
- The priority byte indicates how the voice is preferred for the language. A low number indicates a
- more preferred voice, a higher number indicates a less preferred voice.
-
- In (2), the "languages" field consists simply of a single (UTF8) language name, with no preceding
- priority byte.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec);
-/* Reads the voice files from espeak-data/voices and creates an array of espeak_VOICE pointers.
- The list is terminated by a NULL pointer
-
- If voice_spec is NULL then all voices are listed.
- If voice spec is give, then only the voices which are compatible with the voice_spec
- are listed, and they are listed in preference order.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_SetVoiceByName(const char *name);
-/* Searches for a voice with a matching "name" field. Language is not considered.
- "name" is a UTF8 string.
-
- Return: EE_OK: operation achieved
- EE_BUFFER_FULL: the command can not be buffered;
- you may try after a while to call the function again.
- EE_INTERNAL_ERROR.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec);
-/* An espeak_VOICE structure is used to pass criteria to select a voice. Any of the following
- fields may be set:
-
- name NULL, or a voice name
-
- languages NULL, or a single language string (with optional dialect), eg. "en-uk", or "en"
-
- gender 0=not specified, 1=male, 2=female
-
- age 0=not specified, or an age in years
-
- variant After a list of candidates is produced, scored and sorted, "variant" is used to index
- that list and choose a voice.
- variant=0 takes the top voice (i.e. best match). variant=1 takes the next voice, etc
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_VOICE *espeak_GetCurrentVoice(void);
-/* Returns the espeak_VOICE data for the currently selected voice.
- This is not affected by temporary voice changes caused by SSML elements such as <voice> and <s>
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_Cancel(void);
-/* Stop immediately synthesis and audio output of the current text. When this
- function returns, the audio output is fully stopped and the synthesizer is ready to
- synthesize a new message.
-
- Return: EE_OK: operation achieved
- EE_INTERNAL_ERROR.
-*/
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-int espeak_IsPlaying(void);
-/* Returns 1 if audio is played, 0 otherwise.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_Synchronize(void);
-/* This function returns when all data have been spoken.
- Return: EE_OK: operation achieved
- EE_INTERNAL_ERROR.
-*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-espeak_ERROR espeak_Terminate(void);
-/* last function to be called.
- Return: EE_OK: operation achieved
- EE_INTERNAL_ERROR.
-*/
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-const char *espeak_Info(void);
-/* Returns the version number string.
- The parameter is for future use, and should be set to NULL
-*/
-#endif
diff --git a/navit/support/espeak/speech.h b/navit/support/espeak/speech.h
deleted file mode 100755
index 9673b0c8b..000000000
--- a/navit/support/espeak/speech.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-
-#include <sys/types.h>
-
-// conditional compilation options
-#define INCLUDE_KLATT
-
-#if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN
-#define ARCH_BIG
-#endif
-
-/* #define PLATFORM_POSIX */
-#define PATHSEP '/'
-// USE_PORTAUDIO or USE_PULSEAUDIO are now defined in the makefile
-//#define USE_PORTAUDIO
-//#define USE_PULSEAUDIO
-#define USE_NANOSLEEP
-//#define ESPEAK_API extern "C"
-
-#ifdef LIBRARY
-#define USE_ASYNC
-//#define USE_MBROLA_LIB
-#endif
-
-#ifdef _ESPEAKEDIT
-#define USE_PORTAUDIO
-#define USE_ASYNC
-#define LOG_FRAMES // write keyframe info to log-espeakedit
-#endif
-
-// will look for espeak_data directory here, and also in user's home directory
-#ifndef PATH_ESPEAK_DATA
- #define PATH_ESPEAK_DATA "/usr/share/espeak-data"
-#endif
-
-typedef unsigned short USHORT;
-typedef unsigned char UCHAR;
-typedef double DOUBLEX;
-
-
-
-
-typedef struct {
- const char *mnem;
- int value;
-} MNEM_TAB;
-int LookupMnem(MNEM_TAB *table, char *string);
-
-
-#ifdef PLATFORM_WINDOWS
-#define N_PATH_HOME 220
-#define ESPEAK_API
-#else
-#define N_PATH_HOME 150
-#ifdef __cplusplus
-#define ESPEAK_API extern "C"
-#else
-#define ESPEAK_API
-#endif
-#endif
-
-extern char path_home[N_PATH_HOME]; // this is the espeak-data directory
-
-extern void strncpy0(char *to,const char *from, int size);
-int GetFileLength(const char *filename);
-char *Alloc(int size);
-void Free(void *ptr);
-
diff --git a/navit/support/espeak/synth_mbrola.c b/navit/support/espeak/synth_mbrola.c
deleted file mode 100755
index 1055f549f..000000000
--- a/navit/support/espeak/synth_mbrola.c
+++ /dev/null
@@ -1,760 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <wctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "translate.h"
-#include "voice.h"
-
-extern int Read4Bytes(FILE *f);
-extern void SetPitch2(voice_t *voice, int pitch1, int pitch2, int *pitch_base, int *pitch_range);
-
-#ifdef USE_MBROLA_LIB
-
-extern unsigned char *outbuf;
-
-#ifndef PLATFORM_WINDOWS
-
-#include "mbrolib.h"
-void * mb_handle;
-
-#else
-#include <windows.h>
-typedef void (WINAPI *PROCVV)(void);
-typedef void (WINAPI *PROCVI)(int);
-typedef void (WINAPI *PROCVF)(float);
-typedef int (WINAPI *PROCIV)();
-typedef int (WINAPI *PROCIC) (char *);
-typedef int (WINAPI *PROCISI)(short *,int);
-typedef char* (WINAPI *PROCVCI)(char *,int);
-
-PROCIC init_MBR;
-PROCIC write_MBR;
-PROCIV flush_MBR;
-PROCISI read_MBR;
-PROCVV close_MBR;
-PROCVV reset_MBR;
-PROCIV lastError_MBR;
-PROCVCI lastErrorStr_MBR;
-PROCVI setNoError_MBR;
-PROCVI setFreq_MBR;
-PROCVF setVolumeRatio_MBR;
-
-
-
-HINSTANCE hinstDllMBR = NULL;
-
-
-BOOL load_MBR()
-{
- if(hinstDllMBR != NULL)
- return TRUE; // already loaded
-
- if (!(hinstDllMBR=LoadLibraryA("mbrola.dll")))
- return FALSE;
- init_MBR =(PROCIC) GetProcAddress(hinstDllMBR,"init_MBR");
- write_MBR =(PROCIC) GetProcAddress(hinstDllMBR,"write_MBR");
- flush_MBR =(PROCIV) GetProcAddress(hinstDllMBR,"flush_MBR");
- read_MBR =(PROCISI) GetProcAddress(hinstDllMBR,"read_MBR");
- close_MBR =(PROCVV) GetProcAddress(hinstDllMBR,"close_MBR");
- reset_MBR =(PROCVV) GetProcAddress(hinstDllMBR,"reset_MBR");
- lastError_MBR =(PROCIV) GetProcAddress(hinstDllMBR,"lastError_MBR");
- lastErrorStr_MBR =(PROCVCI) GetProcAddress(hinstDllMBR,"lastErrorStr_MBR");
- setNoError_MBR =(PROCVI) GetProcAddress(hinstDllMBR,"setNoError_MBR");
- setVolumeRatio_MBR =(PROCVF) GetProcAddress(hinstDllMBR,"setVolumeRatio_MBR");
- return TRUE;
-}
-
-
-void unload_MBR()
-{
- if (hinstDllMBR)
- {
- FreeLibrary (hinstDllMBR);
- hinstDllMBR=NULL;
- }
-}
-
-#endif // windows
-#endif // USE_MBROLA_LIB
-
-
-static MBROLA_TAB *mbrola_tab = NULL;
-static int mbrola_control = 0;
-
-
-
-
-espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int srate)
-{//===================================================================================
-// Load a phoneme name translation table from espeak-data/mbrola
-
- int size;
- int ix;
- int *pw;
- FILE *f_in;
- char path[sizeof(path_home)+15];
-
- mbrola_name[0] = 0;
- mbrola_delay = 0;
-
- if(mbrola_voice == NULL)
- {
- samplerate = samplerate_native;
- SetParameter(espeakVOICETYPE,0,0);
- return(EE_OK);
- }
-
- sprintf(path,"%s/mbrola/%s",path_home,mbrola_voice);
-#ifdef USE_MBROLA_LIB
-#ifdef PLATFORM_WINDOWS
- if(load_MBR() == FALSE) // load mbrola.dll
- return(EE_INTERNAL_ERROR);
-
- if(init_MBR(path) != 0) // initialise the required mbrola voice
- return(EE_NOT_FOUND);
-
- setNoError_MBR(1); // don't stop on phoneme errors
-#else
- mb_handle = mbrolib_init(srate);
- mbrolib_parameter m_parameters;
-
- if(mb_handle == NULL)
- return(EE_INTERNAL_ERROR);
-
- MBROLIB_ERROR a_status = mbrolib_set_voice(mb_handle, mbrola_voice);
- if(a_status != MBROLIB_OK)
- return(EE_NOT_FOUND);
-#endif // not windows
-#endif // USE_MBROLA_LIB
-
- // read eSpeak's mbrola phoneme translation data, eg. en1_phtrans
- sprintf(path,"%s/mbrola_ph/%s",path_home,phtrans);
- size = GetFileLength(path);
- if((f_in = fopen(path,"r")) == NULL)
- return(EE_NOT_FOUND);
-
- if((mbrola_tab = (MBROLA_TAB *)realloc(mbrola_tab,size)) == NULL)
- {
- fclose(f_in);
- return(EE_INTERNAL_ERROR);
- }
-
- mbrola_control = Read4Bytes(f_in);
- pw = (int *)mbrola_tab;
- for(ix=4; ix<size; ix+=4)
- {
- *pw++ = Read4Bytes(f_in);
- }
- fread(mbrola_tab,size,1,f_in);
- fclose(f_in);
-
-
-#ifdef USE_MBROLA_LIB
-#ifdef PLATFORM_WINDOWS
- setVolumeRatio_MBR((float)(mbrola_control & 0xff) /16.0f);
-#else
- mbrolib_get_parameter(mb_handle,&m_parameters);
- m_parameters.ignore_error = 1;
- m_parameters.volume_ratio = (float)(mbrola_control & 0xff) /16.0;
- mbrolib_set_parameter(mb_handle,&m_parameters);
-#endif // not windows
-#endif // USE_MBROLA_LIB
-
- option_quiet = 1;
- samplerate = srate;
- if(srate == 22050)
- SetParameter(espeakVOICETYPE,0,0);
- else
- SetParameter(espeakVOICETYPE,1,0);
- strcpy(mbrola_name,mbrola_voice);
- mbrola_delay = 3800; // improve synchronization of events
- return(EE_OK);
-} // end of LoadMbrolaTable
-
-
-static int GetMbrName(PHONEME_LIST *plist, PHONEME_TAB *ph, PHONEME_TAB *ph_prev, PHONEME_TAB *ph_next, int *name2, int *split, int *control)
-{//==========================================================================================================================================
-// Look up a phoneme in the mbrola phoneme name translation table
-// It may give none, 1, or 2 mbrola phonemes
- int mnem = ph->mnemonic;
- MBROLA_TAB *pr;
- PHONEME_TAB *other_ph;
- int found = 0;
-
- // control
- // bit 0 skip the next phoneme
- // bit 1 match this and Previous phoneme
- // bit 2 only at the start of a word
- // bit 3 don't match two phonemes across a word boundary
-
- pr = mbrola_tab;
- while(pr->name != 0)
- {
- if(mnem == pr->name)
- {
- if(pr->next_phoneme == 0)
- found = 1;
- else
- if((pr->next_phoneme == ':') && (plist->synthflags & SFLAG_LENGTHEN))
- {
- found = 1;
- }
- else
- {
- if(pr->control & 2)
- other_ph = ph_prev;
- else
- if((pr->control & 8) && ((plist+1)->newword))
- other_ph = phoneme_tab[phPAUSE]; // don't match the next phoneme over a word boundary
- else
- other_ph = ph_next;
-
- if((pr->next_phoneme == other_ph->mnemonic) ||
- ((pr->next_phoneme == 2) && (other_ph->type == phVOWEL)) ||
- ((pr->next_phoneme == '_') && (other_ph->type == phPAUSE)))
- {
- found = 1;
- }
- }
-
- if((pr->control & 4) && (plist->newword == 0)) // only at start of word
- found = 0;
-
- if(found)
- {
- *name2 = pr->mbr_name2;
- *split = pr->percent;
- *control = pr->control;
- return(pr->mbr_name);
- }
- }
-
- pr++;
- }
- *name2=0;
- *split=0;
- *control=0;
- return(mnem);
-}
-
-
-static char *WritePitch(int env, int pitch1, int pitch2, int split, int final)
-{//===========================================================================
-// final=1: only give the final pitch value.
- int x;
- int ix;
- int pitch_base;
- int pitch_range;
- int p1,p2,p_end;
- unsigned char *pitch_env;
- int max = -1;
- int min = 999;
- int y_max=0;
- int y_min=0;
- int env100 = 80; // apply the pitch change only over this proportion of the mbrola phoneme(s)
- int y2;
- int y[4];
- int env_split;
- char buf[50];
- static char output[50];
-
- output[0] = 0;
- pitch_env = envelope_data[env];
-
-
- SetPitch2(voice, pitch1, pitch2, &pitch_base, &pitch_range);
-
-
- env_split = (split * 128)/100;
- if(env_split < 0)
- env_split = 0-env_split;
-
- // find max and min in the pitch envelope
- for(x=0; x<128; x++)
- {
- if(pitch_env[x] > max)
- {
- max = pitch_env[x];
- y_max = x;
- }
- if(pitch_env[x] < min)
- {
- min = pitch_env[x];
- y_min = x;
- }
- }
- // set an additional pitch point half way through the phoneme.
- // but look for a maximum or a minimum and use that instead
- y[2] = 64;
- if((y_max > 0) && (y_max < 127))
- {
- y[2] = y_max;
- }
- if((y_min > 0) && (y_min < 127))
- {
- y[2] = y_min;
- }
- y[1] = y[2] / 2;
- y[3] = y[2] + (127 - y[2])/2;
-
- // set initial pitch
- p1 = ((pitch_env[0]*pitch_range)>>8) + pitch_base; // Hz << 12
- p_end = ((pitch_env[127]*pitch_range)>>8) + pitch_base;
-
-
- if(split >= 0)
- {
- sprintf(buf," 0 %d",p1/4096);
- strcat(output,buf);
- }
-
- // don't use intermediate pitch points for linear rise and fall
- if(env > 1)
- {
- for(ix=1; ix<4; ix++)
- {
- p2 = ((pitch_env[y[ix]]*pitch_range)>>8) + pitch_base;
-
- if(split > 0)
- {
- y2 = (y[ix] * env100)/env_split;
- }
- else
- if(split < 0)
- {
- y2 = ((y[ix]-env_split) * env100)/env_split;
- }
- else
- {
- y2 = (y[ix] * env100)/128;
- }
- if((y2 > 0) && (y2 <= env100))
- {
- sprintf(buf," %d %d",y2,p2/4096);
- strcat(output,buf);
- }
- }
- }
-
- p_end = p_end/4096;
- if(split <= 0)
- {
- sprintf(buf," %d %d",env100,p_end);
- strcat(output,buf);
- }
- if(env100 < 100)
- {
- sprintf(buf," %d %d",100,p_end);
- strcat(output,buf);
- }
- strcat(output,"\n");
-
- if(final)
- sprintf(output,"\t100 %d\n",p_end);
- return(output);
-} // end of WritePitch
-
-
-#ifdef USE_MBROLA_LIB
-
-static void MbrolaMarker(int type, int char_posn, int length, int value)
-{//=====================================================================
-
- MarkerEvent(type,(char_posn & 0xffffff) | (length << 24),value,outbuf);
-
-}
-
-
-static void MbrolaEmbedded(int &embix, int sourceix)
-{//=================================================
- // There were embedded commands in the text at this point
- unsigned int word; // bit 7=last command for this word, bits 5,6 sign, bits 0-4 command
- unsigned int value;
- int command;
- int sign=0;
-
- do {
- word = embedded_list[embix++];
- value = word >> 8;
- command = word & 0x1f;
-
- if((word & 0x60) == 0x60)
- sign = -1;
- else
- if((word & 0x60) == 0x40)
- sign = 1;
-
- if(command < N_EMBEDDED_VALUES)
- {
- if(sign == 0)
- embedded_value[command] = value;
- else
- embedded_value[command] += (value * sign);
- }
-
- switch(command & 0x1f)
- {
- case EMBED_M: // named marker
- MbrolaMarker(espeakEVENT_MARK, (sourceix & 0x7ff) + clause_start_char, 0, value);
- break;
- }
- } while ((word & 0x80) == 0);
-}
-
-
-#ifdef PLATFORM_WINDOWS
-static int MbrolaSynth(char *p_mbrola)
-{//===================================
-// p_mbrola is a string of mbrola pho lines - Windows
- int len;
- int finished;
- int result=0;
-
- if(synth_callback == NULL)
- return(1);
-
- if(p_mbrola == NULL)
- flush_MBR();
- else
- result = write_MBR(p_mbrola);
-
-
- finished = 0;
- while(!finished && ((len = read_MBR((short *)outbuf, outbuf_size/2)) > 0))
- {
- out_ptr = outbuf + len*2;
-
- if(event_list)
- {
- event_list[event_list_ix].type = espeakEVENT_LIST_TERMINATED; // indicates end of event list
- event_list[event_list_ix].user_data = 0;
- }
- count_samples += len;
- finished = synth_callback((short *)outbuf, len, event_list);
- event_list_ix=0;
- }
-
- if(finished)
- {
- // cancelled by user, discard any unused mbrola speech
- flush_MBR();
- while((len = read_MBR((short *)outbuf, outbuf_size/2)) > 0);
- }
- return(finished);
-} // end of SynthMbrola
-#else
-
-static int MbrolaSynth(char *p_mbrola)
-{//===================================
-// p_mbrola is a string of mbrola pho lines - Linux
-
-// This is wrong
-// It must be called from WavegenFill()
-
- int len;
- int finished;
- int result=0;
-
- if(synth_callback == NULL)
- return(1);
-
- if(p_mbrola == NULL)
- mbrolib_flush(mb_handle);
- else
- result = mbrolib_write(mb_handle,p_mbrola,strlen(p_mbrola));
-
-
- finished = 0;
- while(!finished && (mbrolib_read(mb_handle, (short *)out_ptr, (out_end - out_ptr)/2, &len) == MBROLIB_OK))
- {
- if(len == 0)
- break;
-
- out_ptr += (len*2);
-
- if(event_list)
- {
- event_list[event_list_ix].type = espeakEVENT_LIST_TERMINATED; // indicates end of event list
- event_list[event_list_ix].user_data = 0;
- }
- count_samples += len;
- finished = synth_callback((short *)outbuf, len, event_list);
- event_list_ix=0;
- }
-
- if(finished)
- {
- // cancelled by user, discard any unused mbrola speech
- mbrolib_flush(mb_handle);
- while(mbrolib_read(mb_handle, (short *)outbuf, outbuf_size/2, &len) == MBROLIB_OK)
- {
- if(len == 0)
- break;
- }
- }
- return(finished);
-} // end of SynthMbrola
-#endif // not windows
-#endif // USE_MBROLA_LIB
-
-
-
-void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola)
-{//======================================================================
-// Generate a mbrola pho file
- unsigned int name;
- int phix;
- int len;
- int len1;
- PHONEME_TAB *ph;
- PHONEME_TAB *ph_next;
- PHONEME_TAB *ph_prev;
- PHONEME_LIST *p;
- PHONEME_LIST *next;
- PHONEME_LIST *prev;
- int pause = 0;
- int released;
- int name2;
- int control;
- int done;
- int len_percent;
- const char *final_pitch;
- char buf[80];
- char mbr_buf[120];
-
-#ifdef USE_MBROLA_LIB
- int embedded_ix=0;
- int word_count=0;
-
- event_list_ix = 0;
- out_ptr = outbuf;
-#ifdef PLATFORM_WINDOWS
- setNoError_MBR(1); // don't stop on phoneme errors
-#endif
-#else
-// fprintf(f_mbrola,";; v=%.2f\n",(float)(mbrola_control & 0xff)/16.0); // ;; v= has no effect on mbrola
-#endif
-
- for(phix=1; phix < n_phonemes; phix++)
- {
- mbr_buf[0] = 0;
-
- p = &plist[phix];
- next = &plist[phix+1];
- prev = &plist[phix-1];
- ph = p->ph;
- ph_prev = plist[phix-1].ph;
- ph_next = plist[phix+1].ph;
-
-#ifdef USE_MBROLA_LIB
- if(p->synthflags & SFLAG_EMBEDDED)
- {
- MbrolaEmbedded(embedded_ix, p->sourceix);
- }
- if(p->newword & 4)
- MbrolaMarker(espeakEVENT_SENTENCE, (p->sourceix & 0x7ff) + clause_start_char, 0, count_sentences);
-
- if(p->newword & 1)
- MbrolaMarker(espeakEVENT_WORD, (p->sourceix & 0x7ff) + clause_start_char, p->sourceix >> 11, clause_start_word + word_count++);
-#endif
-
- name = GetMbrName(p,ph,ph_prev,ph_next,&name2,&len_percent,&control);
- if(control & 1)
- phix++;
-
- if(name == 0)
- continue; // ignore this phoneme
-
- if((ph->type == phPAUSE) && (name == ph->mnemonic))
- {
- // a pause phoneme, which has not been changed by the translation
- name = '_';
- len = (p->length * speed.speed_factor1)/256;
-// if(len == 0) continue;
- if(len == 0)
- len = 1;
- }
- else
- len = (80 * speed.speed_factor2)/256;
-
-#ifdef USE_MBROLA_LIB
- MbrolaMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, ph->mnemonic);
-#endif
-
- sprintf(buf,"%s\t",WordToString(name));
- strcat(mbr_buf,buf);
-
- if(name2 == '_')
- {
- // add a pause after this phoneme
- pause = PauseLength(len_percent,0);
- name2 = 0;
- }
-
- done = 0;
- final_pitch = "";
-
- switch(ph->type)
- {
- case phVOWEL:
- len = ph->std_length;
- if(p->synthflags & SFLAG_LENGTHEN)
- len += phoneme_tab[phonLENGTHEN]->std_length; // phoneme was followed by an extra : symbol
-
- if(ph_next->type == phPAUSE)
- len += 50; // lengthen vowels before a pause
- len = (len * p->length)/256;
-
- if(name2 == 0)
- {
- sprintf(buf,"%d\t%s", len, WritePitch(p->env,p->pitch1,p->pitch2,0,0));
- strcat(mbr_buf,buf);
- }
- else
- {
- len1 = (len * len_percent)/100;
- sprintf(buf,"%d\t%s", len1, WritePitch(p->env,p->pitch1,p->pitch2,len_percent,0));
- strcat(mbr_buf,buf);
-
- sprintf(buf,"%s\t%d\t%s", WordToString(name2), len-len1, WritePitch(p->env,p->pitch1,p->pitch2,-len_percent,0));
- strcat(mbr_buf,buf);
- }
- done = 1;
- break;
-
- case phSTOP:
- released = 0;
- if(next->type==phVOWEL) released = 1;
- if(next->type==phLIQUID && !next->newword) released = 1;
-
- if(released)
- len = DoSample(p->ph,next->ph,2,0,-1);
- else
- len = DoSample(p->ph,phoneme_tab[phonPAUSE],2,0,-1);
- len = (len * 1000)/samplerate; // convert to mS
- len += PauseLength(p->prepause,1);
- break;
-
- case phVSTOP:
- len = (80 * speed.speed_factor2)/256;
- break;
-
- case phFRICATIVE:
- len = 0;
- if(p->synthflags & SFLAG_LENGTHEN)
- len = DoSample(ph,ph_next,2,p->length,-1); // play it twice for [s:] etc.
- len += DoSample(ph,ph_next,2,p->length,-1);
-
- len = (len * 1000)/samplerate; // convert to mS
- break;
-
- case phNASAL:
- if(next->type != phVOWEL)
- {
- len = DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,-1);
- len = (len * 1000)/samplerate;
- if(next->type == phPAUSE)
- len += 50;
- final_pitch = WritePitch(p->env,p->pitch1,p->pitch2,0,1);
- }
- break;
-
- case phLIQUID:
- if(next->type == phPAUSE)
- {
- len += 50;
- final_pitch = WritePitch(p->env,p->pitch1,p->pitch2,0,1);
- }
- break;
- }
-
- if(!done)
- {
- if(name2 != 0)
- {
- len1 = (len * len_percent)/100;
- sprintf(buf,"%d\n%s\t",len1,WordToString(name2));
- strcat(mbr_buf,buf);
- len -= len1;
- }
- sprintf(buf,"%d%s\n",len,final_pitch);
- strcat(mbr_buf,buf);
- }
-
- if(pause)
- {
- sprintf(buf,"_ \t%d\n",PauseLength(pause,0));
- strcat(mbr_buf,buf);
- pause = 0;
- }
-
- if(f_mbrola)
- {
- fwrite(mbr_buf,1,strlen(mbr_buf),f_mbrola); // write .pho to a file
- }
- else
- {
-#ifdef USE_MBROLA_LIB
- if(MbrolaSynth(mbr_buf) != 0)
- return;
-#endif
- }
- }
-
-#ifdef USE_MBROLA_LIB
- MbrolaSynth(NULL);
-#endif
-} // end of MbrolaTranslate
-
-
-#ifdef TEST_MBROLA
-
-static PHONEME_LIST mbrola_phlist;
-static int mbrola_n_ph;
-static int mbrola_phix;
-
-
-int MbrolaFill(int fill_zeros)
-{//===========================
-}
-
-int MbrolaGenerate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
-{//==================================================================
- if(resume == 0)
- {
- mbrola_phlist = phoneme_list;
- mbrola_n_ph = n_ph;
- mbrola_phix = 0;
- }
-
- resume(0); // finished phoneme list
-}
-#endif
diff --git a/navit/support/espeak/synthdata.c b/navit/support/espeak/synthdata.c
deleted file mode 100755
index 4f8234beb..000000000
--- a/navit/support/espeak/synthdata.c
+++ /dev/null
@@ -1,682 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <wctype.h>
-#include <string.h>
-
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-#include "translate.h"
-#include "wave.h"
-
-const char *version_string = "1.41.01 25.Aug.09";
-const int version_phdata = 0x014100;
-
-int option_device_number = -1;
-
-// copy the current phoneme table into here
-int n_phoneme_tab;
-int current_phoneme_table;
-PHONEME_TAB *phoneme_tab[N_PHONEME_TAB];
-unsigned char phoneme_tab_flags[N_PHONEME_TAB]; // bit 0: not inherited
-
-static unsigned int *phoneme_index=NULL;
-char *spects_data=NULL;
-unsigned char *wavefile_data=NULL;
-static unsigned char *phoneme_tab_data = NULL;
-
-int n_phoneme_tables;
-PHONEME_TAB_LIST phoneme_tab_list[N_PHONEME_TABS];
-int phoneme_tab_number = 0;
-
-int wavefile_ix; // a wavefile to play along with the synthesis
-int wavefile_amp;
-int wavefile_ix2;
-int wavefile_amp2;
-
-int seq_len_adjust;
-int vowel_transition[4];
-int vowel_transition0;
-int vowel_transition1;
-
-int FormantTransition2(frameref_t *seq, int *n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which);
-
-
-
-static char *ReadPhFile(void *ptr, const char *fname)
-{//==================================================
- FILE *f_in;
- char *p;
- unsigned int length;
- char buf[sizeof(path_home)+40];
-
- sprintf(buf,"%s%c%s",path_home,PATHSEP,fname);
- length = GetFileLength(buf);
-
- if((f_in = fopen(buf,"rb")) == NULL)
- {
- fprintf(stderr,"Can't read data file: '%s'\n",buf);
- return(NULL);
- }
-
- if(ptr != NULL)
- Free(ptr);
-
- if((p = Alloc(length)) == NULL)
- {
- fclose(f_in);
- return(NULL);
- }
- if(fread(p,1,length,f_in) != length)
- {
- fclose(f_in);
- return(NULL);
- }
-
- fclose(f_in);
- return(p);
-} // end of ReadPhFile
-
-
-int LoadPhData()
-{//=============
- int ix;
- int n_phonemes;
- int version;
- int result = 1;
- unsigned char *p;
-
- if((phoneme_tab_data = (unsigned char *)ReadPhFile((void *)(phoneme_tab_data),"phontab")) == NULL)
- return(-1);
- if((phoneme_index = (unsigned int *)ReadPhFile((void *)(phoneme_index),"phonindex")) == NULL)
- return(-1);
- if((spects_data = ReadPhFile((void *)(spects_data),"phondata")) == NULL)
- return(-1);
- wavefile_data = (unsigned char *)spects_data;
-
- // read the version number from the first 4 bytes of phondata
- version = 0;
- for(ix=0; ix<4; ix++)
- {
- version += (wavefile_data[ix] << (ix*8));
- }
-
- if(version != version_phdata)
- {
- result = version;
- }
-
- // set up phoneme tables
- p = phoneme_tab_data;
- n_phoneme_tables = p[0];
- p+=4;
-
- for(ix=0; ix<n_phoneme_tables; ix++)
- {
- n_phonemes = p[0];
- phoneme_tab_list[ix].n_phonemes = p[0];
- phoneme_tab_list[ix].includes = p[1];
- p += 4;
- memcpy(phoneme_tab_list[ix].name,p,N_PHONEME_TAB_NAME);
- p += N_PHONEME_TAB_NAME;
- phoneme_tab_list[ix].phoneme_tab_ptr = (PHONEME_TAB *)p;
- p += (n_phonemes * sizeof(PHONEME_TAB));
- }
-
- if(phoneme_tab_number >= n_phoneme_tables)
- phoneme_tab_number = 0;
-
- return(result);
-} // end of LoadPhData
-
-
-void FreePhData(void)
-{//==================
- Free(phoneme_tab_data);
- Free(phoneme_index);
- Free(spects_data);
- phoneme_tab_data=NULL;
- phoneme_index=NULL;
- spects_data=NULL;
-}
-
-
-int PhonemeCode(unsigned int mnem)
-{//===============================
- int ix;
-
- for(ix=0; ix<n_phoneme_tab; ix++)
- {
- if(phoneme_tab[ix] == NULL)
- continue;
- if(phoneme_tab[ix]->mnemonic == mnem)
- return(phoneme_tab[ix]->code);
- }
- return(0);
-}
-
-
-int LookupPhonemeString(const char *string)
-{//========================================
- int ix;
- unsigned char c;
- unsigned int mnem;
-
- // Pack up to 4 characters into a word
- mnem = 0;
- for(ix=0; ix<4; ix++)
- {
- if(string[ix]==0) break;
- c = string[ix];
- mnem |= (c << (ix*8));
- }
-
- return(PhonemeCode(mnem));
-}
-
-
-
-static unsigned int LookupSound2(int index, unsigned int other_phcode, int control)
-{//================================================================================
-// control=1 get formant transition data only
-
- unsigned int code;
- unsigned int value, value2;
-
- while((value = phoneme_index[index++]) != 0)
- {
- if((code = (value & 0xff)) == other_phcode)
- {
- while(((value2 = phoneme_index[index]) != 0) && ((value2 & 0xff) < 8))
- {
- switch(value2 & 0xff)
- {
- case 0:
- // next entry is a wavefile to be played along with the synthesis
- if(control==0)
- {
- wavefile_ix = value2 >> 8;
- }
- break;
- case 1:
- if(control==0)
- {
- seq_len_adjust = value2 >> 8;
- }
- break;
- case 2:
- if(control==0)
- {
- seq_len_adjust = value2 >> 8;
- seq_len_adjust = -seq_len_adjust;
- }
- break;
- case 3:
- if(control==0)
- {
- wavefile_amp = value2 >> 8;
- }
- break;
- case 4:
- // formant transition data, 2 words
- vowel_transition[0] = value2 >> 8;
- vowel_transition[1] = phoneme_index[index++ + 1];
- break;
- case 5:
- // formant transition data, 2 words
- vowel_transition[2] = value2 >> 8;
- vowel_transition[3] = phoneme_index[index++ + 1];
- break;
- }
- index++;
- }
- return(value >> 8);
- }
- else
- if((code == 4) || (code == 5))
- {
- // formant transition data, ignore next word of data
- index++;
- }
- }
- return(3); // not found
-} // end of LookupSound2
-
-
-unsigned int LookupSound(PHONEME_TAB *this_ph, PHONEME_TAB *other_ph, int which, int *match_level, int control)
-{//============================================================================================================
- // follows, 1 other_ph preceeds this_ph, 2 other_ph follows this_ph
- // control: 1= get formant transition data only
- int spect_list;
- int spect_list2;
- int s_list;
- unsigned char virtual_ph;
- int result;
- int level=0;
- unsigned int other_code;
- unsigned int other_virtual;
-
- if(control==0)
- {
- wavefile_ix = 0;
- wavefile_amp = 32;
- seq_len_adjust = 0;
- }
- memset(vowel_transition,0,sizeof(vowel_transition));
-
- other_code = other_ph->code;
- if(phoneme_tab[other_code]->type == phPAUSE)
- other_code = phonPAUSE_SHORT; // use this version of Pause for matching
-
- if(which==1)
- {
- spect_list = this_ph->after;
- virtual_ph = this_ph->start_type;
- spect_list2 = phoneme_tab[virtual_ph]->after;
- other_virtual = other_ph->end_type;
- }
- else
- {
- spect_list = this_ph->before;
- virtual_ph = this_ph->end_type;
- spect_list2 = phoneme_tab[virtual_ph]->before;
- other_virtual = other_ph->start_type;
- }
-
- result = 3;
- // look for ph1-ph2 combination
- if((s_list = spect_list) != 0)
- {
- if((result = LookupSound2(s_list,other_code,control)) != 3)
- {
- level = 2;
- }
- else
- if(other_virtual != 0)
- {
- if((result = LookupSound2(spect_list,other_virtual,control)) != 3)
- {
- level = 1;
- }
- }
- }
- // not found, look in a virtual phoneme if one is given for this phoneme
- if((result==3) && (virtual_ph != 0) && ((s_list = spect_list2) != 0))
- {
- if((result = LookupSound2(s_list,other_code,control)) != 3)
- {
- level = 1;
- }
- else
- if(other_virtual != 0)
- {
- if((result = LookupSound2(spect_list2,other_virtual,control)) != 3)
- {
- level = 1;
- }
- }
- }
-
- if(match_level != NULL)
- *match_level = level;
-
- if(result==0)
- return(0); // NULL was given in the phoneme source
-
- // note: values = 1 indicates use the default for this phoneme, even though we found a match
- // which set a secondary reference
- if(result >= 4)
- {
- // values 1-3 can be used for special codes
- // 1 = DFT from the phoneme source file
- return(result);
- }
-
- // no match found for other_ph, return the default
- return(LookupSound2(this_ph->spect,phonPAUSE,control));
-
-} // end of LookupSound
-
-
-
-frameref_t *LookupSpect(PHONEME_TAB *this_ph, PHONEME_TAB *prev_ph, PHONEME_TAB *next_ph,
- int which, int *match_level, int *n_frames, PHONEME_LIST *plist)
-{//=========================================================================================================
- int ix;
- int nf;
- int nf1;
- int seq_break;
- frameref_t *frames;
- int length1;
- int length_std;
- int length_factor;
- SPECT_SEQ *seq, *seq2;
- SPECT_SEQK *seqk, *seqk2;
- PHONEME_TAB *next2_ph;
- frame_t *frame;
- static frameref_t frames_buf[N_SEQ_FRAMES];
-
- PHONEME_TAB *other_ph;
- if(which == 1)
- other_ph = prev_ph;
- else
- other_ph = next_ph;
-
- if((ix = LookupSound(this_ph,other_ph,which,match_level,0)) < 4)
- return(NULL);
- seq = (SPECT_SEQ *)(&spects_data[ix]);
- seqk = (SPECT_SEQK *)seq;
- nf = seq->n_frames;
-
-
- if(nf >= N_SEQ_FRAMES)
- nf = N_SEQ_FRAMES - 1;
-
- seq_break = 0;
- length1 = 0;
-
- for(ix=0; ix<nf; ix++)
- {
- if(seq->frame[0].frflags & FRFLAG_KLATT)
- frame = &seqk->frame[ix];
- else
- frame = (frame_t *)&seq->frame[ix];
- frames_buf[ix].frame = frame;
- frames_buf[ix].frflags = frame->frflags;
- frames_buf[ix].length = frame->length;
- if(frame->frflags & FRFLAG_VOWEL_CENTRE)
- seq_break = ix;
- }
-
- frames = &frames_buf[0];
- if(seq_break > 0)
- {
- if(which==1)
- {
- nf = seq_break + 1;
- }
- else
- {
- frames = &frames_buf[seq_break]; // body of vowel, skip past initial frames
- nf -= seq_break;
- }
- }
-
- // do we need to modify a frame for blending with a consonant?
- if(this_ph->type == phVOWEL)
- {
- if((which==2) && ((frames[nf-1].frflags & FRFLAG_BREAK) == 0))
- {
- // lookup formant transition for the following phoneme
-
- if((*match_level == 0) || (next_ph->type == phNASAL))
- {
- LookupSound(next_ph,this_ph,1,NULL,1);
- seq_len_adjust += FormantTransition2(frames,&nf,vowel_transition[2],vowel_transition[3],next_ph,which);
- }
- else
- if(next_ph->phflags == phVOWEL2)
- {
- // not really a consonant, rather a coloured vowel
- if(LookupSound(next_ph,this_ph,1,NULL,1) == 0)
- {
- next2_ph = plist[2].ph;
- LookupSound(next2_ph,next_ph,1,NULL,1);
- seq_len_adjust += FormantTransition2(frames,&nf,vowel_transition[2],vowel_transition[3],next2_ph,which);
- }
- }
- }
- else
- {
- if(*match_level == 0)
- seq_len_adjust = FormantTransition2(frames,&nf,vowel_transition0,vowel_transition1,prev_ph,which);
- }
- }
-
- nf1 = nf - 1;
- for(ix=0; ix<nf1; ix++)
- length1 += frames[ix].length;
-
-
- if((wavefile_ix != 0) && ((wavefile_ix & 0x800000)==0))
- {
- // a secondary reference has been returned, which is not a wavefile
- // add these spectra to the main sequence
- seq2 = (SPECT_SEQ *)(&spects_data[wavefile_ix]);
- seqk2 = (SPECT_SEQK *)seq2;
-
- // first frame of the addition just sets the length of the last frame of the main seq
- nf--;
- for(ix=0; ix<seq2->n_frames; ix++)
- {
- if(seq2->frame[0].frflags & FRFLAG_KLATT)
- frame = &seqk2->frame[ix];
- else
- frame = (frame_t *)&seq2->frame[ix];
-
- frames[nf].length = frame->length;
- if(ix > 0)
- {
- frames[nf].frame = frame;
- frames[nf].frflags = frame->frflags;
- }
- nf++;
- }
- wavefile_ix = 0;
- }
-
- if((this_ph->type == phVOWEL) && (length1 > 0))
- {
- if(which==2)
- {
- // adjust the length of the main part to match the standard length specified for the vowel
- // less the front part of the vowel and any added suffix
-
- length_std = this_ph->std_length + seq_len_adjust - 45;
- if(length_std < 10)
- length_std = 10;
- if(plist->synthflags & SFLAG_LENGTHEN)
- length_std += phoneme_tab[phonLENGTHEN]->std_length; // phoneme was followed by an extra : symbol
-
-// can adjust vowel length for stressed syllables here
-
-
- length_factor = (length_std * 256)/ length1;
-
- for(ix=0; ix<nf1; ix++)
- {
- frames[ix].length = (frames[ix].length * length_factor)/256;
- }
- }
- else
- {
- // front of a vowel
- if(*match_level == 0)
- {
- // allow very short vowels to have shorter front parts
- if(this_ph->std_length < 130)
- frames[0].length = (frames[0].length * this_ph->std_length)/130;
- }
-
- if(seq_len_adjust != 0)
- {
- length_std = 0;
- for(ix=0; ix<nf1; ix++)
- {
- length_std += frames[ix].length;
- }
- length_factor = ((length_std + seq_len_adjust) * 256)/length_std;
- for(ix=0; ix<nf1; ix++)
- {
- frames[ix].length = (frames[ix].length * length_factor)/256;
- }
- }
- }
- }
-
- *n_frames = nf;
- return(frames);
-} // end of LookupSpect
-
-
-unsigned char *LookupEnvelope(int ix)
-{//================================
- if(ix==0)
- return(NULL);
- return((unsigned char *)&spects_data[phoneme_index[ix]]);
-}
-
-
-static void SetUpPhonemeTable(int number, int recursing)
-{//=====================================================
- int ix;
- int includes;
- int ph_code;
- PHONEME_TAB *phtab;
-
- if(recursing==0)
- {
- memset(phoneme_tab_flags,0,sizeof(phoneme_tab_flags));
- }
-
- if((includes = phoneme_tab_list[number].includes) > 0)
- {
- // recursively include base phoneme tables
- SetUpPhonemeTable(includes-1,1);
- }
-
- // now add the phonemes from this table
- phtab = phoneme_tab_list[number].phoneme_tab_ptr;
- for(ix=0; ix<phoneme_tab_list[number].n_phonemes; ix++)
- {
- ph_code = phtab[ix].code;
- phoneme_tab[ph_code] = &phtab[ix];
- if(ph_code > n_phoneme_tab)
- n_phoneme_tab = ph_code;
-
- if(recursing == 0)
- phoneme_tab_flags[ph_code] |= 1; // not inherited
- }
-} // end of SetUpPhonemeTable
-
-
-void SelectPhonemeTable(int number)
-{//================================
- n_phoneme_tab = 0;
- SetUpPhonemeTable(number,0); // recursively for included phoneme tables
- n_phoneme_tab++;
- current_phoneme_table = number;
-} // end of SelectPhonemeTable
-
-
-int LookupPhonemeTable(const char *name)
-{//=====================================
- int ix;
-
- for(ix=0; ix<n_phoneme_tables; ix++)
- {
- if(strcmp(name,phoneme_tab_list[ix].name)==0)
- {
- phoneme_tab_number = ix;
- break;
- }
- }
- if(ix == n_phoneme_tables)
- return(-1);
-
- return(ix);
-}
-
-
-int SelectPhonemeTableName(const char *name)
-{//=========================================
-// Look up a phoneme set by name, and select it if it exists
-// Returns the phoneme table number
- int ix;
-
- if((ix = LookupPhonemeTable(name)) == -1)
- return(-1);
-
- SelectPhonemeTable(ix);
- return(ix);
-} // end of DelectPhonemeTableName
-
-
-
-
-void LoadConfig(void)
-{//==================
-// Load configuration file, if one exists
- char buf[sizeof(path_home)+10];
- FILE *f;
- int ix;
- char c1;
- char *p;
- char string[200];
-
- for(ix=0; ix<N_SOUNDICON_SLOTS; ix++)
- {
- soundicon_tab[ix].filename = NULL;
- soundicon_tab[ix].data = NULL;
- }
-
- sprintf(buf,"%s%c%s",path_home,PATHSEP,"config");
- if((f = fopen(buf,"r"))==NULL)
- {
- return;
- }
-
- while(fgets(buf,sizeof(buf),f)!=NULL)
- {
- if(memcmp(buf,"tone",4)==0)
- {
- ReadTonePoints(&buf[5],tone_points);
- }
- else
- if(memcmp(buf,"pa_device",9)==0)
- {
- sscanf(&buf[7],"%d",&option_device_number);
- }
- else
- if(memcmp(buf,"soundicon",9)==0)
- {
- ix = sscanf(&buf[10],"_%c %s",&c1,string);
- if(ix==2)
- {
- soundicon_tab[n_soundicon_tab].name = c1;
- p = Alloc(strlen(string)+1);
- strcpy(p,string);
- soundicon_tab[n_soundicon_tab].filename = p;
- soundicon_tab[n_soundicon_tab++].length = 0;
- }
- }
- }
- fclose(f);
-} // end of LoadConfig
-
diff --git a/navit/support/espeak/synthesize.c b/navit/support/espeak/synthesize.c
deleted file mode 100755
index 3a48b1d72..000000000
--- a/navit/support/espeak/synthesize.c
+++ /dev/null
@@ -1,1658 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <wctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-#include "translate.h"
-
-
-extern FILE *f_log;
-static void SmoothSpect(void);
-
-
-// list of phonemes in a clause
-int n_phoneme_list=0;
-PHONEME_LIST phoneme_list[N_PHONEME_LIST];
-
-int mbrola_delay;
-char mbrola_name[20];
-
-SPEED_FACTORS speed;
-
-static int last_pitch_cmd;
-static int last_amp_cmd;
-static frame_t *last_frame;
-static int last_wcmdq;
-static int pitch_length;
-static int amp_length;
-static int modn_flags;
-
-static int syllable_start;
-static int syllable_end;
-static int syllable_centre;
-
-static voice_t *new_voice=NULL;
-
-int n_soundicon_tab=N_SOUNDICON_SLOTS;
-SOUND_ICON soundicon_tab[N_SOUNDICON_TAB];
-
-#define RMS_GLOTTAL1 35 // vowel before glottal stop
-#define RMS_START 28 // 28
-
-#define VOWEL_FRONT_LENGTH 50
-
-#define long(x) ((long)(x))
-
-// a dummy phoneme_list entry which looks like a pause
-static PHONEME_LIST next_pause;
-
-
-const char *WordToString(unsigned int word)
-{//========================================
-// Convert a phoneme mnemonic word into a string
- int ix;
- static char buf[5];
-
- for(ix=0; ix<3; ix++)
- buf[ix] = word >> (ix*8);
- buf[4] = 0;
- return(buf);
-}
-
-
-
-void SynthesizeInit()
-{//==================
- last_pitch_cmd = 0;
- last_amp_cmd = 0;
- last_frame = NULL;
- syllable_centre = -1;
-
- // initialise next_pause, a dummy phoneme_list entry
-// next_pause.ph = phoneme_tab[phonPAUSE]; // this must be done after voice selection
- next_pause.type = phPAUSE;
- next_pause.newword = 0;
-}
-
-
-
-static void EndAmplitude(void)
-{//===========================
- if(amp_length > 0)
- {
- if(wcmdq[last_amp_cmd][1] == 0)
- wcmdq[last_amp_cmd][1] = amp_length;
- amp_length = 0;
- }
-}
-
-
-
-static void EndPitch(int voice_break)
-{//==================================
- // posssible end of pitch envelope, fill in the length
- if((pitch_length > 0) && (last_pitch_cmd >= 0))
- {
- if(wcmdq[last_pitch_cmd][1] == 0)
- wcmdq[last_pitch_cmd][1] = pitch_length;
- pitch_length = 0;
- }
-
- if(voice_break)
- {
- last_wcmdq = -1;
- last_frame = NULL;
- syllable_end = wcmdq_tail;
- SmoothSpect();
- syllable_centre = -1;
- memset(vowel_transition,0,sizeof(vowel_transition));
- }
-} // end of Synthesize::EndPitch
-
-
-
-static void DoAmplitude(int amp, unsigned char *amp_env)
-{//=====================================================
- long *q;
-
- last_amp_cmd = wcmdq_tail;
- amp_length = 0; // total length of vowel with this amplitude envelope
-
- q = wcmdq[wcmdq_tail];
- q[0] = WCMD_AMPLITUDE;
- q[1] = 0; // fill in later from amp_length
- q[2] = (long)amp_env;
- q[3] = amp;
- WcmdqInc();
-} // end of Synthesize::DoAmplitude
-
-
-
-static void DoPitch(unsigned char *env, int pitch1, int pitch2)
-{//============================================================
- long *q;
-
- EndPitch(0);
-
- if(pitch1 == 1024)
- {
- // pitch was not set
- pitch1 = 24;
- pitch2 = 33;
- env = envelope_data[PITCHfall];
- }
- last_pitch_cmd = wcmdq_tail;
- pitch_length = 0; // total length of spect with this pitch envelope
-
- if(pitch2 < 0)
- pitch2 = 0;
-
- q = wcmdq[wcmdq_tail];
- q[0] = WCMD_PITCH;
- q[1] = 0; // length, fill in later from pitch_length
- q[2] = (long)env;
- q[3] = (pitch1 << 16) + pitch2;
- WcmdqInc();
-} // end of Synthesize::DoPitch
-
-
-
-int PauseLength(int pause, int control)
-{//====================================
- int len;
-
- if(control == 0)
- len = (pause * speed.speed_factor1)/256;
- else
- len = (pause * speed.speed_factor2)/256;
-
- if(len < 5) len = 5; // mS, limit the amount to which pauses can be shortened
- return(len);
-}
-
-
-static void DoPause(int length, int control)
-{//=========================================
-// control = 1, less shortening at fast speeds
- int len;
-
- len = PauseLength(length, control);
-
- len = (len * samplerate) / 1000; // convert from mS to number of samples
-
- EndPitch(1);
- wcmdq[wcmdq_tail][0] = WCMD_PAUSE;
- wcmdq[wcmdq_tail][1] = len;
- WcmdqInc();
- last_frame = NULL;
-} // end of Synthesize::DoPause
-
-
-extern int seq_len_adjust; // temporary fix to advance the start point for playing the wav sample
-
-
-static int DoSample2(int index, int which, int length_mod, int amp)
-{//================================================================
- int length;
- int length1;
- int format;
- int min_length;
- int start=0;
- long *q;
- unsigned char *p;
-
- index = index & 0x7fffff;
- p = &wavefile_data[index];
- format = p[2];
- length1 = (p[1] * 256);
- length1 += p[0]; // length in bytes
-
- if(seq_len_adjust > 0)
- {
- start = (seq_len_adjust * samplerate)/1000;
- if(format == 0)
- start *= 2;
- length1 -= start;
- index += start;
- }
-
-
- if(length_mod > 0)
- length = (length1 * length_mod) / 256;
- else
- length = length1;
-
-
- length = (length * speed.speed_factor2)/256;
- min_length = speed.min_sample_len;
- if(format==0)
- min_length *= 2;
-
- if(length < min_length)
- length = min_length;
-
- if(length > length1)
- length = length1; // don't exceed wavefile length
-
- if(format==0)
- length /= 2; // 2 byte samples
-
-
- index += 4;
-
- if(amp >= 0)
- {
- last_wcmdq = wcmdq_tail;
- q = wcmdq[wcmdq_tail];
- if(which & 0x100)
- q[0] = WCMD_WAVE2; // mix this with synthesised wave
- else
- q[0] = WCMD_WAVE;
- q[1] = length; // length in samples
- q[2] = long(&wavefile_data[index]);
- q[3] = format + (amp << 8);
- WcmdqInc();
- }
- return(length);
-} // end of Synthesize::DoSample2
-
-
-int DoSample(PHONEME_TAB *ph1, PHONEME_TAB *ph2, int which, int length_mod, int amp)
-{//====================== ==========================================================
- int index;
- int match_level;
- int amp2;
- int result;
-
- EndPitch(1);
- index = LookupSound(ph1,ph2,which & 0xff,&match_level,0);
- if((index & 0x800000) == 0)
- return(0); // not wavefile data
-
- amp2 = wavefile_amp;
- if(amp != 0)
- amp2 = (amp * wavefile_amp)/20;
-
- if(amp == -1)
- amp2 = amp;
-
- result = DoSample2(index,which,length_mod,amp2);
- last_frame = NULL;
- return(result);
-} // end of Synthesize::DoSample
-
-
-
-
-static frame_t *AllocFrame()
-{//=========================
- // Allocate a temporary spectrum frame for the wavegen queue. Use a pool which is big
- // enough to use a round-robin without checks.
- // Only needed for modifying spectra for blending to consonants
-
-#define N_FRAME_POOL N_WCMDQ
- static int ix=0;
- static frame_t frame_pool[N_FRAME_POOL];
-
- ix++;
- if(ix >= N_FRAME_POOL)
- ix = 0;
- return(&frame_pool[ix]);
-}
-
-
-static void set_frame_rms(frame_t *fr, int new_rms)
-{//=================================================
-// Each frame includes its RMS amplitude value, so to set a new
-// RMS just adjust the formant amplitudes by the appropriate ratio
-
- int x;
- int h;
- int ix;
-
- static const short sqrt_tab[200] = {
- 0, 64, 90,110,128,143,156,169,181,192,202,212,221,230,239,247,
- 256,263,271,278,286,293,300,306,313,320,326,332,338,344,350,356,
- 362,367,373,378,384,389,394,399,404,409,414,419,424,429,434,438,
- 443,448,452,457,461,465,470,474,478,483,487,491,495,499,503,507,
- 512,515,519,523,527,531,535,539,543,546,550,554,557,561,565,568,
- 572,576,579,583,586,590,593,596,600,603,607,610,613,617,620,623,
- 627,630,633,636,640,643,646,649,652,655,658,662,665,668,671,674,
- 677,680,683,686,689,692,695,698,701,704,706,709,712,715,718,721,
- 724,726,729,732,735,738,740,743,746,749,751,754,757,759,762,765,
- 768,770,773,775,778,781,783,786,789,791,794,796,799,801,804,807,
- 809,812,814,817,819,822,824,827,829,832,834,836,839,841,844,846,
- 849,851,853,856,858,861,863,865,868,870,872,875,877,879,882,884,
- 886,889,891,893,896,898,900,902};
-
- if(voice->klattv[0])
- {
- if(new_rms == -1)
- {
- fr->klattp[KLATT_AV] = 50;
- }
- return;
- }
-
- if(fr->rms == 0) return; // check for divide by zero
- x = (new_rms * 64)/fr->rms;
- if(x >= 200) x = 199;
-
- x = sqrt_tab[x]; // sqrt(new_rms/fr->rms)*0x200;
-
- for(ix=0; ix < 8; ix++)
- {
- h = fr->fheight[ix] * x;
- fr->fheight[ix] = h/0x200;
- }
-} /* end of set_frame_rms */
-
-
-
-static void formants_reduce_hf(frame_t *fr, int level)
-{//====================================================
-// change height of peaks 2 to 8, percentage
- int ix;
- int x;
-
- if(voice->klattv[0])
- return;
-
- for(ix=2; ix < 8; ix++)
- {
- x = fr->fheight[ix] * level;
- fr->fheight[ix] = x/100;
- }
-}
-
-
-static frame_t *CopyFrame(frame_t *frame1, int copy)
-{//=================================================
-// create a copy of the specified frame in temporary buffer
- frame_t *frame2;
-
- if((copy==0) && (frame1->frflags & FRFLAG_COPIED))
- {
- // this frame has already been copied in temporary rw memory
- return(frame1);
- }
-
- frame2 = AllocFrame();
- if(frame2 != NULL)
- {
- memcpy(frame2,frame1,sizeof(frame_t));
- frame2->length = 0;
- frame2->frflags |= FRFLAG_COPIED;
- }
- return(frame2);
-}
-
-
-static frame_t *DuplicateLastFrame(frameref_t *seq, int n_frames, int length)
-{//==========================================================================
- frame_t *fr;
-
- seq[n_frames-1].length = length;
- fr = CopyFrame(seq[n_frames-1].frame,1);
- seq[n_frames].frame = fr;
- seq[n_frames].length = 0;
- return fr;
-}
-
-
-static void AdjustFormants(frame_t *fr, int target, int min, int max, int f1_adj, int f3_adj, int hf_reduce, int flags)
-{//====================================================================================================================
- int x;
-
-//hf_reduce = 70; // ?? using fixed amount rather than the parameter??
-
- target = (target * voice->formant_factor)/256;
-
- x = (target - fr->ffreq[2]) / 2;
- if(x > max) x = max;
- if(x < min) x = min;
- fr->ffreq[2] += x;
- fr->ffreq[3] += f3_adj;
-
- if(flags & 0x20)
- {
- f3_adj = -f3_adj; //. reverse direction for f4,f5 change
- }
- fr->ffreq[4] += f3_adj;
- fr->ffreq[5] += f3_adj;
-
- if(f1_adj==1)
- {
- x = (235 - fr->ffreq[1]);
- if(x < -100) x = -100;
- if(x > -60) x = -60;
- fr->ffreq[1] += x;
- }
- if(f1_adj==2)
- {
- x = (235 - fr->ffreq[1]);
- if(x < -300) x = -300;
- if(x > -150) x = -150;
- fr->ffreq[1] += x;
- fr->ffreq[0] += x;
- }
- if(f1_adj==3)
- {
- x = (100 - fr->ffreq[1]);
- if(x < -400) x = -400;
- if(x > -300) x = -400;
- fr->ffreq[1] += x;
- fr->ffreq[0] += x;
- }
- formants_reduce_hf(fr,hf_reduce);
-}
-
-
-static int VowelCloseness(frame_t *fr)
-{//===================================
-// return a value 0-3 depending on the vowel's f1
- int f1;
-
- if((f1 = fr->ffreq[1]) < 300)
- return(3);
- if(f1 < 400)
- return(2);
- if(f1 < 500)
- return(1);
- return(0);
-}
-
-
-int FormantTransition2(frameref_t *seq, int *n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which)
-{//==============================================================================================================================
- int ix;
- int formant;
- int next_rms;
-
- int len;
- int rms;
- int f1;
- int f2;
- int f2_min;
- int f2_max;
- int f3_adj;
- int f3_amp;
- int flags;
- int vcolour;
-
-#define N_VCOLOUR 2
-// percentage change for each formant in 256ths
-static short vcolouring[N_VCOLOUR][5] = {
- {243,272,256,256,256}, // palatal consonant follows
- {256,256,240,240,240}, // retroflex
-};
-
- frame_t *fr = NULL;
-
- if(*n_frames < 2)
- return(0);
-
- len = (data1 & 0x3f) * 2;
- rms = (data1 >> 6) & 0x3f;
- flags = (data1 >> 12);
-
- f2 = (data2 & 0x3f) * 50;
- f2_min = (((data2 >> 6) & 0x1f) - 15) * 50;
- f2_max = (((data2 >> 11) & 0x1f) - 15) * 50;
- f3_adj = (((data2 >> 16) & 0x1f) - 15) * 50;
- f3_amp = ((data2 >> 21) & 0x1f) * 8;
- f1 = ((data2 >> 26) & 0x7);
- vcolour = (data2 >> 29);
-
-// fprintf(stderr,"FMT%d %3s %3d-%3d f1=%d f2=%4d %4d %4d f3=%4d %3d\n",
-// which,WordToString(other_ph->mnemonic),len,rms,f1,f2,f2_min,f2_max,f3_adj,f3_amp);
-
- if(other_ph->mnemonic == '?')
- flags |= 8;
-
- if(which == 1)
- {
- /* entry to vowel */
- fr = CopyFrame(seq[0].frame,0);
- seq[0].frame = fr;
- seq[0].length = VOWEL_FRONT_LENGTH;
- if(len > 0)
- seq[0].length = len;
- seq[0].frflags |= FRFLAG_LEN_MOD; // reduce length modification
- fr->frflags |= FRFLAG_LEN_MOD;
-
- next_rms = seq[1].frame->rms;
-
-if(voice->klattv[0])
-{
- fr->klattp[KLATT_AV] = 53; // reduce the amplituide of the start of a vowel
-}
- if(f2 != 0)
- {
- if(rms & 0x20)
- {
- set_frame_rms(fr,(next_rms * (rms & 0x1f))/30);
- }
- AdjustFormants(fr, f2, f2_min, f2_max, f1, f3_adj, f3_amp, flags);
-
- if((rms & 0x20) == 0)
- {
- set_frame_rms(fr,rms*2);
- }
- }
- else
- {
- if(flags & 8)
- set_frame_rms(fr,(next_rms*24)/32);
- else
- set_frame_rms(fr,RMS_START);
- }
-
- if(flags & 8)
- {
-// set_frame_rms(fr,next_rms - 5);
- modn_flags = 0x800 + (VowelCloseness(fr) << 8);
- }
- }
- else
- {
- // exit from vowel
- rms = rms*2;
- if((f2 != 0) || (flags != 0))
- {
-
- if(flags & 8)
- {
- fr = CopyFrame(seq[*n_frames-1].frame,0);
- seq[*n_frames-1].frame = fr;
- rms = RMS_GLOTTAL1;
-
- // degree of glottal-stop effect depends on closeness of vowel (indicated by f1 freq)
- modn_flags = 0x400 + (VowelCloseness(fr) << 8);
- }
- else
- {
- fr = DuplicateLastFrame(seq,(*n_frames)++,len);
- if(len > 36)
- seq_len_adjust += (len - 36);
-
- if(f2 != 0)
- {
- AdjustFormants(fr, f2, f2_min, f2_max, f1, f3_adj, f3_amp, flags);
- }
- }
-
- set_frame_rms(fr,rms);
-
- if((vcolour > 0) && (vcolour <= N_VCOLOUR))
- {
- for(ix=0; ix<*n_frames; ix++)
- {
- fr = CopyFrame(seq[ix].frame,0);
- seq[ix].frame = fr;
-
- for(formant=1; formant<=5; formant++)
- {
- int x;
- x = fr->ffreq[formant] * vcolouring[vcolour-1][formant-1];
- fr->ffreq[formant] = x / 256;
- }
- }
- }
- }
- }
-
- if(fr != NULL)
- {
- if(flags & 4)
- fr->frflags |= FRFLAG_FORMANT_RATE;
- if(flags & 2)
- fr->frflags |= FRFLAG_BREAK; // don't merge with next frame
- }
-
- if(flags & 0x40)
- DoPause(12,0); // add a short pause after the consonant
-
- if(flags & 16)
- return(len);
- return(0);
-} // end of FormantTransition2
-
-
-
-static void SmoothSpect(void)
-{//==========================
- // Limit the rate of frequence change of formants, to reduce chirping
-
- long *q;
- frame_t *frame;
- frame_t *frame2;
- frame_t *frame1;
- frame_t *frame_centre;
- int ix;
- int len;
- int pk;
- int modified;
- int allowed;
- int diff;
-
- if(syllable_start == syllable_end)
- return;
-
- if((syllable_centre < 0) || (syllable_centre == syllable_start))
- {
- syllable_start = syllable_end;
- return;
- }
-
- q = wcmdq[syllable_centre];
- frame_centre = (frame_t *)q[2];
-
- // backwards
- ix = syllable_centre -1;
- frame = frame2 = frame_centre;
- for(;;)
- {
- if(ix < 0) ix = N_WCMDQ-1;
- q = wcmdq[ix];
-
- if(q[0] == WCMD_PAUSE || q[0] == WCMD_WAVE)
- break;
-
- if(q[0] <= WCMD_SPECT2)
- {
- len = q[1] & 0xffff;
-
- frame1 = (frame_t *)q[3];
- if(frame1 == frame)
- {
- q[3] = (long)frame2;
- frame1 = frame2;
- }
- else
- break; // doesn't follow on from previous frame
-
- frame = frame2 = (frame_t *)q[2];
- modified = 0;
-
- if(frame->frflags & FRFLAG_BREAK)
- break;
-
- if(frame->frflags & FRFLAG_FORMANT_RATE)
- len = (len * 12)/10; // allow slightly greater rate of change for this frame (was 12/10)
-
- for(pk=0; pk<6; pk++)
- {
- int f1, f2;
-
- if((frame->frflags & FRFLAG_BREAK_LF) && (pk < 3))
- continue;
-
- f1 = frame1->ffreq[pk];
- f2 = frame->ffreq[pk];
-
- // backwards
- if((diff = f2 - f1) > 0)
- {
- allowed = f1*2 + f2;
- }
- else
- {
- allowed = f1 + f2*2;
- }
-
- // the allowed change is specified as percentage (%*10) of the frequency
- // take "frequency" as 1/3 from the lower freq
- allowed = (allowed * formant_rate[pk])/3000;
- allowed = (allowed * len)/256;
-
- if(diff > allowed)
- {
- if(modified == 0)
- {
- frame2 = CopyFrame(frame,0);
- modified = 1;
- }
- frame2->ffreq[pk] = frame1->ffreq[pk] + allowed;
- q[2] = (long)frame2;
- }
- else
- if(diff < -allowed)
- {
- if(modified == 0)
- {
- frame2 = CopyFrame(frame,0);
- modified = 1;
- }
- frame2->ffreq[pk] = frame1->ffreq[pk] - allowed;
- q[2] = (long)frame2;
- }
- }
- }
-
- if(ix == syllable_start)
- break;
- ix--;
- }
-
- // forwards
- ix = syllable_centre;
-
- frame = NULL;
- for(;;)
- {
- q = wcmdq[ix];
-
- if(q[0] == WCMD_PAUSE || q[0] == WCMD_WAVE)
- break;
-
- if(q[0] <= WCMD_SPECT2)
- {
-
- len = q[1] & 0xffff;
-
- frame1 = (frame_t *)q[2];
- if(frame != NULL)
- {
- if(frame1 == frame)
- {
- q[2] = (long)frame2;
- frame1 = frame2;
- }
- else
- break; // doesn't follow on from previous frame
- }
-
- frame = frame2 = (frame_t *)q[3];
- modified = 0;
-
- if(frame1->frflags & FRFLAG_BREAK)
- break;
-
- if(frame1->frflags & FRFLAG_FORMANT_RATE)
- len = (len *6)/5; // allow slightly greater rate of change for this frame
-
- for(pk=0; pk<6; pk++)
- {
- int f1, f2;
- f1 = frame1->ffreq[pk];
- f2 = frame->ffreq[pk];
-
- // forwards
- if((diff = f2 - f1) > 0)
- {
- allowed = f1*2 + f2;
- }
- else
- {
- allowed = f1 + f2*2;
- }
- allowed = (allowed * formant_rate[pk])/3000;
- allowed = (allowed * len)/256;
-
- if(diff > allowed)
- {
- if(modified == 0)
- {
- frame2 = CopyFrame(frame,0);
- modified = 1;
- }
- frame2->ffreq[pk] = frame1->ffreq[pk] + allowed;
- q[3] = (long)frame2;
- }
- else
- if(diff < -allowed)
- {
- if(modified == 0)
- {
- frame2 = CopyFrame(frame,0);
- modified = 1;
- }
- frame2->ffreq[pk] = frame1->ffreq[pk] - allowed;
- q[3] = (long)frame2;
- }
- }
- }
-
- ix++;
- if(ix >= N_WCMDQ) ix = 0;
- if(ix == syllable_end)
- break;
- }
-
- syllable_start = syllable_end;
-} // end of SmoothSpect
-
-
-static void StartSyllable(void)
-{//============================
- // start of syllable, if not already started
- if(syllable_end == syllable_start)
- syllable_end = wcmdq_tail;
-}
-
-
-int DoSpect(PHONEME_TAB *this_ph, PHONEME_TAB *prev_ph, PHONEME_TAB *next_ph,
- int which, PHONEME_LIST *plist, int modulation)
-{//===================================================================================
- // which 1 start of phoneme, 2 body and end
- // length_mod: 256 = 100%
- // modulation: -1 = don't write to wcmdq
-
- int n_frames;
- frameref_t *frames;
- int frameix;
- frame_t *frame1;
- frame_t *frame2;
- frame_t *fr;
- int ix;
- long *q;
- int len;
- int match_level;
- int frame_length;
- int frame1_length;
- int frame2_length;
- int length_factor;
- int length_mod;
- int total_len = 0;
- static int wave_flag = 0;
- int wcmd_spect = WCMD_SPECT;
-
- length_mod = plist->length;
- if(length_mod==0) length_mod=256;
-
-if(which==1)
-{
- // limit the shortening of sonorants before shortened (eg. unstressed vowels)
- if((this_ph->type==phLIQUID) || (prev_ph->type==phLIQUID) || (prev_ph->type==phNASAL))
- {
- if(length_mod < (len = translator->langopts.param[LOPT_SONORANT_MIN]))
- {
- length_mod = len;
- }
- }
-}
-
- modn_flags = 0;
- frames = LookupSpect(this_ph,prev_ph,next_ph,which,&match_level,&n_frames, plist);
- if(frames == NULL)
- return(0); // not found
-
- frame1 = frames[0].frame;
- frame1_length = frames[0].length;
- if(voice->klattv[0])
- wcmd_spect = WCMD_KLATT;
-
- if(wavefile_ix == 0)
- {
- if(wave_flag)
- {
- // cancel any wavefile that was playing previously
- wcmd_spect = WCMD_SPECT2;
- if(voice->klattv[0])
- wcmd_spect = WCMD_KLATT2;
- wave_flag = 0;
- }
- else
- {
- wcmd_spect = WCMD_SPECT;
- if(voice->klattv[0])
- wcmd_spect = WCMD_KLATT;
- }
- }
-
- if(last_frame != NULL)
- {
- if(((last_frame->length < 2) || (last_frame->frflags & FRFLAG_VOWEL_CENTRE))
- && !(last_frame->frflags & FRFLAG_BREAK))
- {
- // last frame of previous sequence was zero-length, replace with first of this sequence
- wcmdq[last_wcmdq][3] = (long)frame1;
-
- if(last_frame->frflags & FRFLAG_BREAK_LF)
- {
- // but flag indicates keep HF peaks in last segment
- fr = CopyFrame(frame1,1);
- for(ix=3; ix < 8; ix++)
- {
- if(ix < 7)
- fr->ffreq[ix] = last_frame->ffreq[ix];
- fr->fheight[ix] = last_frame->fheight[ix];
- }
- wcmdq[last_wcmdq][3] = (long)fr;
- }
- }
- }
-
- if((this_ph->type == phVOWEL) && (which == 2))
- {
- SmoothSpect(); // process previous syllable
-
- // remember the point in the output queue of the centre of the vowel
- syllable_centre = wcmdq_tail;
- }
-
- frame_length = frame1_length;
- for(frameix=1; frameix<n_frames; frameix++)
- {
- frame2 = frames[frameix].frame;
- frame2_length = frames[frameix].length;
-
- if((wavefile_ix != 0) && ((frame1->frflags & FRFLAG_DEFER_WAV)==0))
- {
- // there is a wave file to play along with this synthesis
- seq_len_adjust = 0;
- DoSample2(wavefile_ix,which+0x100,0,wavefile_amp);
- wave_flag = 1;
- wavefile_ix = 0;
- }
-
- length_factor = length_mod;
- if(frame1->frflags & FRFLAG_LEN_MOD) // reduce effect of length mod
- {
- length_factor = (length_mod*(256-speed.speed_factor3) + 256*speed.speed_factor3)/256;
- }
- len = (frame_length * samplerate)/1000;
- len = (len * length_factor)/256;
-
- if(modulation >= 0)
- {
- if(frame1->frflags & FRFLAG_MODULATE)
- {
- modulation = 6;
- }
- if((frameix == n_frames-1) && (modn_flags & 0xf00))
- modulation |= modn_flags; // before or after a glottal stop
- }
-
- pitch_length += len;
- amp_length += len;
-
- if(frame_length < 2)
- {
- last_frame = NULL;
- frame_length = frame2_length;
- frame1 = frame2;
- }
- else
- {
- last_wcmdq = wcmdq_tail;
-
- if(modulation >= 0)
- {
- q = wcmdq[wcmdq_tail];
- q[0] = wcmd_spect;
- q[1] = len + (modulation << 16);
- q[2] = long(frame1);
- q[3] = long(frame2);
-
- WcmdqInc();
- }
- last_frame = frame1 = frame2;
- frame_length = frame2_length;
- total_len += len;
- }
- }
- return(total_len);
-} // end of Synthesize::DoSpect
-
-
-static void DoMarker(int type, int char_posn, int length, int value)
-{//=================================================================
-// This could be used to return an index to the word currently being spoken
-// Type 1=word, 2=sentence, 3=named marker, 4=play audio, 5=end
- wcmdq[wcmdq_tail][0] = WCMD_MARKER;
- wcmdq[wcmdq_tail][1] = type;
- wcmdq[wcmdq_tail][2] = (char_posn & 0xffffff) | (length << 24);
- wcmdq[wcmdq_tail][3] = value;
- WcmdqInc();
-
-} // end of Synthesize::DoMarker
-
-
-void DoVoiceChange(voice_t *v)
-{//===========================
-// allocate memory for a copy of the voice data, and free it in wavegenfill()
- voice_t *v2;
-
- v2 = (voice_t *)malloc(sizeof(voice_t));
- memcpy(v2,v,sizeof(voice_t));
- wcmdq[wcmdq_tail][0] = WCMD_VOICE;
- wcmdq[wcmdq_tail][1] = (long)(v2);
- WcmdqInc();
-}
-
-
-static void DoEmbedded(int *embix, int sourceix)
-{//=============================================
- // There were embedded commands in the text at this point
- unsigned int word; // bit 7=last command for this word, bits 5,6 sign, bits 0-4 command
- unsigned int value;
- int command;
-
- do {
- word = embedded_list[(*embix)++];
- value = word >> 8;
- command = word & 0x7f;
-
- switch(command & 0x1f)
- {
- case EMBED_S: // speed
- SetEmbedded((command & 0x60) + EMBED_S2,value); // adjusts embedded_value[EMBED_S2]
- SetSpeed(2);
- break;
-
- case EMBED_I: // play dynamically loaded wav data (sound icon)
- if((int)value < n_soundicon_tab)
- {
- if(soundicon_tab[value].length != 0)
- {
- DoPause(10,0); // ensure a break in the speech
- wcmdq[wcmdq_tail][0] = WCMD_WAVE;
- wcmdq[wcmdq_tail][1] = soundicon_tab[value].length;
- wcmdq[wcmdq_tail][2] = (long)soundicon_tab[value].data + 44; // skip WAV header
- wcmdq[wcmdq_tail][3] = 0x1500; // 16 bit data, amp=21
- WcmdqInc();
- }
- }
- break;
-
- case EMBED_M: // named marker
- DoMarker(espeakEVENT_MARK, (sourceix & 0x7ff) + clause_start_char, 0, value);
- break;
-
- case EMBED_U: // play sound
- DoMarker(espeakEVENT_PLAY, count_characters+1, 0, value); // always occurs at end of clause
- break;
-
- default:
- DoPause(10,0); // ensure a break in the speech
- wcmdq[wcmdq_tail][0] = WCMD_EMBEDDED;
- wcmdq[wcmdq_tail][1] = command;
- wcmdq[wcmdq_tail][2] = value;
- WcmdqInc();
- break;
- }
- } while ((word & 0x80) == 0);
-}
-
-
-
-int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
-{//============================================================
- static int ix;
- static int embedded_ix;
- static int word_count;
- PHONEME_LIST *prev;
- PHONEME_LIST *next;
- PHONEME_LIST *next2;
- PHONEME_LIST *p;
- int released;
- int stress;
- int modulation;
- int pre_voiced;
- int free_min;
- unsigned char *pitch_env=NULL;
- unsigned char *amp_env;
- PHONEME_TAB *ph;
- PHONEME_TAB *prev_ph;
- static int sourceix=0;
-
-#ifdef TEST_MBROLA
- if(mbrola_name[0] != 0)
- return(MbrolaGenerate(phoneme_list,n_ph,resume));
-#endif
-
- if(option_quiet)
- return(0);
-
- if(resume == 0)
- {
- ix = 1;
- embedded_ix=0;
- word_count = 0;
- pitch_length = 0;
- amp_length = 0;
- last_frame = NULL;
- last_wcmdq = -1;
- syllable_start = wcmdq_tail;
- syllable_end = wcmdq_tail;
- syllable_centre = -1;
- last_pitch_cmd = -1;
- memset(vowel_transition,0,sizeof(vowel_transition));
- }
-
- while(ix < (*n_ph))
- {
- p = &phoneme_list[ix];
-
- if(p->type == phPAUSE)
- free_min = 5;
- else
- if(p->type != phVOWEL)
- free_min = 10; // we need less Q space for non-vowels, and we need to generate phonemes after a vowel so that the pitch_length is filled in
- else
- free_min = MIN_WCMDQ; // 22
-
- if(WcmdqFree() <= free_min)
- return(1); // wait
-
- prev = &phoneme_list[ix-1];
- next = &phoneme_list[ix+1];
- next2 = &phoneme_list[ix+2];
-
- if(p->synthflags & SFLAG_EMBEDDED)
- {
- DoEmbedded(&embedded_ix, p->sourceix);
- }
-
- if(p->newword)
- {
- if(translator->langopts.param[LOPT_WORD_MERGE] == 0)
- last_frame = NULL;
-
- sourceix = (p->sourceix & 0x7ff) + clause_start_char;
-
- if(p->newword & 4)
- DoMarker(espeakEVENT_SENTENCE, sourceix, 0, count_sentences); // start of sentence
-
-// if(p->newword & 2)
-// DoMarker(espeakEVENT_END, count_characters, 0, count_sentences); // end of clause
-
- if(p->newword & 1)
- DoMarker(espeakEVENT_WORD, sourceix, p->sourceix >> 11, clause_start_word + word_count++);
- }
-
- EndAmplitude();
-
- if(p->prepause > 0)
- DoPause(p->prepause,1);
-
- if(option_phoneme_events && (p->type != phVOWEL))
- {
- // Note, for vowels, do the phoneme event after the vowel-start
- DoMarker(espeakEVENT_PHONEME, sourceix, 0, p->ph->mnemonic);
- }
-
- switch(p->type)
- {
- case phPAUSE:
- DoPause(p->length,0);
- break;
-
- case phSTOP:
- released = 0;
- if(next->type==phVOWEL) released = 1;
- if(next->type==phLIQUID && !next->newword) released = 1;
-
- if(released)
- DoSample(p->ph,next->ph,2,0,0);
- else
- DoSample(p->ph,phoneme_tab[phonPAUSE],2,0,0);
- break;
-
- case phFRICATIVE:
- if(p->synthflags & SFLAG_LENGTHEN)
- DoSample(p->ph,next->ph,2,p->length,0); // play it twice for [s:] etc.
- DoSample(p->ph,next->ph,2,p->length,0);
- break;
-
- case phVSTOP:
- pre_voiced = 0;
- if(next->type==phVOWEL)
- {
- DoAmplitude(p->amp,NULL);
- DoPitch(envelope_data[p->env],p->pitch1,p->pitch2);
- pre_voiced = 1;
- }
- else
- if((next->type==phLIQUID) && !next->newword)
- {
- DoAmplitude(next->amp,NULL);
- DoPitch(envelope_data[next->env],next->pitch1,next->pitch2);
- pre_voiced = 1;
- }
- else
- {
- if(last_pitch_cmd < 0)
- {
- DoAmplitude(next->amp,NULL);
- DoPitch(envelope_data[p->env],p->pitch1,p->pitch2);
- }
- }
-
- if((prev->type==phVOWEL) || (prev->ph->phflags & phVOWEL2))
- {
- // a period of voicing before the release
- DoSpect(p->ph,phoneme_tab[phonSCHWA],next->ph,1,p,0);
- if(p->synthflags & SFLAG_LENGTHEN)
- {
- DoPause(20,0);
- DoSpect(p->ph,phoneme_tab[phonSCHWA],next->ph,1,p,0);
- }
- }
- else
- {
- if(p->synthflags & SFLAG_LENGTHEN)
- {
- DoPause(50,0);
- }
- }
-
- if(pre_voiced)
- {
- // followed by a vowel, or liquid + vowel
- StartSyllable();
- DoSpect(p->ph,prev->ph,next->ph,2,p,0);
- }
- else
- {
-// if((prev->type != phVOWEL) && ((prev->ph->phflags & phVOICED)==0) && ((next->ph->phflags & phVOICED)==0))
-// DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE_SHORT],2,p,0);
-// else
- DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,0);
-// DoSpect(p->ph,prev->ph,next->ph,2,p,0);
- }
- break;
-
- case phVFRICATIVE:
- if(next->type==phVOWEL)
- {
- DoAmplitude(p->amp,NULL);
- DoPitch(envelope_data[p->env],p->pitch1,p->pitch2);
- }
- else
- if(next->type==phLIQUID)
- {
- DoAmplitude(next->amp,NULL);
- DoPitch(envelope_data[next->env],next->pitch1,next->pitch2);
- }
- else
- {
- if(last_pitch_cmd < 0)
- {
- DoAmplitude(p->amp,NULL);
- DoPitch(envelope_data[p->env],p->pitch1,p->pitch2);
- }
- }
-
- if((next->type==phVOWEL) || ((next->type==phLIQUID)) && (next->newword==0)) // ?? test 14.Aug.2007
- {
- StartSyllable();
- if(p->synthflags & SFLAG_LENGTHEN)
- DoSpect(p->ph,prev->ph,next->ph,2,p,0);
- DoSpect(p->ph,prev->ph,next->ph,2,p,0);
- }
- else
- {
- if(p->synthflags & SFLAG_LENGTHEN)
- DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,0);
- DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,0);
- }
- break;
-
- case phNASAL:
- if(!(p->synthflags & SFLAG_SEQCONTINUE))
- {
- DoAmplitude(p->amp,NULL);
- DoPitch(envelope_data[p->env],p->pitch1,p->pitch2);
- }
-
- if(prev->type==phNASAL)
- {
- last_frame = NULL;
- }
-
- if(next->type==phVOWEL)
- {
- StartSyllable();
- DoSpect(p->ph,prev->ph,next->ph,1,p,0);
- }
- else
- if(prev->type==phVOWEL && (p->synthflags & SFLAG_SEQCONTINUE))
- {
- DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,0);
- }
- else
- {
- last_frame = NULL; // only for nasal ?
- if(next->type == phLIQUID)
- DoSpect(p->ph,prev->ph,phoneme_tab[phonSONORANT],2,p,0);
- else
- DoSpect(p->ph,prev->ph,phoneme_tab[phonPAUSE],2,p,0);
- last_frame = NULL;
- }
-
- break;
-
- case phLIQUID:
- modulation = 0;
- if(p->ph->phflags & phTRILL)
- modulation = 5;
-
- prev_ph = prev->ph;
-// if(p->newword)
-// prev_ph = phoneme_tab[phonPAUSE]; // pronounce fully at the start of a word
-
- if(!(p->synthflags & SFLAG_SEQCONTINUE))
- {
- DoAmplitude(p->amp,NULL);
- DoPitch(envelope_data[p->env],p->pitch1,p->pitch2);
- }
-
- if(prev->type==phNASAL)
- {
- last_frame = NULL;
- }
-
- if(next->type==phVOWEL)
- {
- StartSyllable();
- DoSpect(p->ph,prev_ph,next->ph,1,p,modulation); // (,)r
- }
- else
- if(prev->type==phVOWEL && (p->synthflags & SFLAG_SEQCONTINUE))
- {
- DoSpect(p->ph,prev_ph,next->ph,1,p,modulation);
- }
- else
- {
- DoSpect(p->ph,prev_ph,next->ph,1,p,modulation);
- }
-
- break;
-
- case phVOWEL:
- ph = p->ph;
- stress = p->stresslevel & 0xf;
-
- // vowel transition from the preceding phoneme
- vowel_transition0 = vowel_transition[0];
- vowel_transition1 = vowel_transition[1];
-
- pitch_env = envelope_data[p->env];
- amp_env = NULL;
- if(p->tone_ph != 0)
- {
- pitch_env = LookupEnvelope(phoneme_tab[p->tone_ph]->spect);
- amp_env = LookupEnvelope(phoneme_tab[p->tone_ph]->after);
- }
-
- StartSyllable();
-
- modulation = 2;
- if(stress <= 1)
- modulation = 1; // 16ths
- else
- if(stress >= 7)
- modulation = 3;
-
- if(prev->type == phVSTOP || prev->type == phVFRICATIVE)
- {
- DoAmplitude(p->amp,amp_env);
- DoPitch(pitch_env,p->pitch1,p->pitch2); // don't use prevocalic rising tone
- DoSpect(ph,prev->ph,next->ph,1,p,modulation);
- }
- else
- if(prev->type==phLIQUID || prev->type==phNASAL)
- {
- DoAmplitude(p->amp,amp_env);
- DoSpect(ph,prev->ph,next->ph,1,p,modulation); // continue with pre-vocalic rising tone
- DoPitch(pitch_env,p->pitch1,p->pitch2);
- }
- else
- {
- if(!(p->synthflags & SFLAG_SEQCONTINUE))
- {
- DoAmplitude(p->amp,amp_env);
- DoPitch(pitch_env,p->pitch1,p->pitch2);
- }
-
- DoSpect(ph,prev->ph,next->ph,1,p,modulation);
- }
-
- if(option_phoneme_events)
- {
- DoMarker(espeakEVENT_PHONEME, sourceix, 0, p->ph->mnemonic);
- }
-
- DoSpect(p->ph,prev->ph,next->ph,2,p,modulation);
-
- memset(vowel_transition,0,sizeof(vowel_transition));
- break;
- }
- ix++;
- }
- EndPitch(1);
- if(*n_ph > 0)
- {
- DoMarker(espeakEVENT_END, count_characters, 0, count_sentences); // end of clause
- *n_ph = 0;
- }
-
- return(0); // finished the phoneme list
-} // end of Generate
-
-
-
-
-static int timer_on = 0;
-static int paused = 0;
-
-int SynthOnTimer()
-{//===============
- if(!timer_on)
- {
- return(WavegenCloseSound());
- }
-
- do {
- if(WcmdqUsed() > 0)
- WavegenOpenSound();
-
- if(Generate(phoneme_list,&n_phoneme_list,1)==0)
- {
- SpeakNextClause(NULL,NULL,1);
- }
- } while(skipping_text);
-
- return(0);
-}
-
-
-int SynthStatus()
-{//==============
- return(timer_on | paused);
-}
-
-
-
-int SpeakNextClause(FILE *f_in, const void *text_in, int control)
-{//==============================================================
-// Speak text from file (f_in) or memory (text_in)
-// control 0: start
-// either f_in or text_in is set, the other must be NULL
-
-// The other calls have f_in and text_in = NULL
-// control 1: speak next text
-// 2: stop
-// 3: pause (toggle)
-// 4: is file being read (0=no, 1=yes)
-// 5: interrupt and flush current text.
-
- int clause_tone;
- char *voice_change;
- static FILE *f_text=NULL;
- static const void *p_text=NULL;
-
- if(control == 4)
- {
- if((f_text == NULL) && (p_text == NULL))
- return(0);
- else
- return(1);
- }
-
- if(control == 2)
- {
- // stop speaking
- timer_on = 0;
- p_text = NULL;
- if(f_text != NULL)
- {
- fclose(f_text);
- f_text=NULL;
- }
- n_phoneme_list = 0;
- WcmdqStop();
-
- embedded_value[EMBED_T] = 0;
- return(0);
- }
-
- if(control == 3)
- {
- // toggle pause
- if(paused == 0)
- {
- timer_on = 0;
- paused = 2;
- }
- else
- {
- WavegenOpenSound();
- timer_on = 1;
- paused = 0;
- Generate(phoneme_list,&n_phoneme_list,0); // re-start from beginning of clause
- }
- return(0);
- }
-
- if(control == 5)
- {
- // stop speaking, but continue looking for text
- n_phoneme_list = 0;
- WcmdqStop();
- return(0);
- }
-
- if((f_in != NULL) || (text_in != NULL))
- {
- f_text = f_in;
- p_text = text_in;
- timer_on = 1;
- paused = 0;
- }
-
- if((f_text==NULL) && (p_text==NULL))
- {
- skipping_text = 0;
- timer_on = 0;
- return(0);
- }
-
- if((f_text != NULL) && feof(f_text))
- {
- timer_on = 0;
- fclose(f_text);
- f_text=NULL;
- return(0);
- }
-
- if(current_phoneme_table != voice->phoneme_tab_ix)
- {
- SelectPhonemeTable(voice->phoneme_tab_ix);
- }
-
- // read the next clause from the input text file, translate it, and generate
- // entries in the wavegen command queue
- p_text = TranslateClause(translator, f_text, p_text, &clause_tone, &voice_change);
-
- CalcPitches(translator, clause_tone);
- CalcLengths(translator);
-
- GetTranslatedPhonemeString(translator->phon_out,sizeof(translator->phon_out));
- if(option_phonemes > 0)
- {
- fprintf(f_trans,"%s\n",translator->phon_out);
-
- if(!iswalpha(0x010d))
- {
- // check that c-caron is recognized as an alphabetic character
- fprintf(stderr,"Warning: Accented letters are not recognized, eg: U+010D\nSet LC_CTYPE to a UTF-8 locale\n");
- }
- }
- if(phoneme_callback != NULL)
- {
- phoneme_callback(translator->phon_out);
- }
-
-
- if(skipping_text)
- {
- n_phoneme_list = 0;
- return(1);
- }
-
- if(mbrola_name[0] != 0)
- {
-#ifdef USE_MBROLA_LIB
- MbrolaTranslate(phoneme_list,n_phoneme_list,NULL);
-#else
- {
- FILE *f_mbrola;
- if((f_mbrola = f_trans) == stderr)
- f_mbrola = stdout;
- MbrolaTranslate(phoneme_list,n_phoneme_list,f_mbrola);
- }
-#endif
- }
-
- Generate(phoneme_list,&n_phoneme_list,0);
- WavegenOpenSound();
-
- if(voice_change != NULL)
- {
- // voice change at the end of the clause (i.e. clause was terminated by a voice change)
- new_voice = LoadVoiceVariant(voice_change,0); // add a Voice instruction to wavegen at the end of the clause
- }
-
- if(new_voice)
- {
- // finished the current clause, now change the voice if there was an embedded
- // change voice command at the end of it (i.e. clause was broken at the change voice command)
- DoVoiceChange(voice);
- new_voice = NULL;
- }
-
- return(1);
-} // end of SpeakNextClause
-
diff --git a/navit/support/espeak/synthesize.h b/navit/support/espeak/synthesize.h
deleted file mode 100755
index 193b93297..000000000
--- a/navit/support/espeak/synthesize.h
+++ /dev/null
@@ -1,377 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-
-#define N_PHONEME_LIST 1000 // enough for source[N_TR_SOURCE] full of text, else it will truncate
-
-#define MAX_HARMONIC 400 // 400 * 50Hz = 20 kHz, more than enough
-#define N_SEQ_FRAMES 25 // max frames in a spectrum sequence (real max is ablut 8)
-#define STEPSIZE 64 // 2.9mS at 22 kHz sample rate
-
-#define PITCHfall 0
-#define PITCHrise 1
-
-// flags set for frames within a spectrum sequence
-#define FRFLAG_KLATT 0x01 // this frame includes extra data for Klatt synthesizer
-#define FRFLAG_VOWEL_CENTRE 0x02 // centre point of vowel
-#define FRFLAG_LEN_MOD 0x04 // reduce effect of length adjustment
-#define FRFLAG_BREAK_LF 0x08 // but keep f3 upwards
-#define FRFLAG_BREAK 0x10 // don't merge with next frame
-#define FRFLAG_BREAK_2 0x18 // FRFLAG_BREAK_LF or FRFLAG_BREAK
-#define FRFLAG_FORMANT_RATE 0x20 // Flag5 allow increased rate of change of formant freq
-#define FRFLAG_MODULATE 0x40 // Flag6 modulate amplitude of some cycles to give trill
-#define FRFLAG_DEFER_WAV 0x80 // Flag7 defer mixing WAV until the next frame
-#define FRFLAG_COPIED 0x8000 // This frame has been copied into temporary rw memory
-
-#define SFLAG_SEQCONTINUE 0x01 // a liquid or nasal after a vowel, but not followed by a vowel
-#define SFLAG_EMBEDDED 0x02 // there are embedded commands before this phoneme
-#define SFLAG_SYLLABLE 0x04 // vowel or syllabic consonant
-#define SFLAG_LENGTHEN 0x08 // lengthen symbol : included after this phoneme
-#define SFLAG_DICTIONARY 0x10 // the pronunciation of this word was listed in the xx_list dictionary
-#define SFLAG_SWITCHED_LANG 0x20 // this word uses phonemes from a different language
-#define SFLAG_PROMOTE_STRESS 0x40 // this unstressed word can be promoted to stressed
-
-// embedded command numbers
-#define EMBED_P 1 // pitch
-#define EMBED_S 2 // speed (used in setlengths)
-#define EMBED_A 3 // amplitude/volume
-#define EMBED_R 4 // pitch range/expression
-#define EMBED_H 5 // echo/reverberation
-#define EMBED_T 6 // different tone for announcing punctuation
-#define EMBED_I 7 // sound icon
-#define EMBED_S2 8 // speed (used in synthesize)
-#define EMBED_Y 9 // say-as commands
-#define EMBED_M 10 // mark name
-#define EMBED_U 11 // audio uri
-#define EMBED_B 12 // break
-#define EMBED_F 13 // emphasis
-
-#define N_EMBEDDED_VALUES 14
-extern int embedded_value[N_EMBEDDED_VALUES];
-extern int embedded_default[N_EMBEDDED_VALUES];
-
-
-#define N_PEAKS 9
-#define N_MARKERS 8
-
-#define N_KLATTP 10 // this affects the phoneme data file format
-#define N_KLATTP2 14 // used in vowel files, with extra parameters for future extensions
-
-#define KLATT_AV 0
-#define KLATT_FNZ 1 // nasal zero freq
-#define KLATT_Tilt 2
-#define KLATT_Aspr 3
-#define KLATT_Skew 4
-
-#define KLATT_Kopen 5
-#define KLATT_AVp 6
-#define KLATT_Fric 7
-#define KLATT_FricBP 8
-#define KLATT_Turb 9
-
-
-
-typedef struct { // 44 bytes
- short frflags;
- short ffreq[7];
- unsigned char length;
- unsigned char rms;
- unsigned char fheight[8];
- unsigned char fwidth[6]; // width/4 f0-5
- unsigned char fright[3]; // width/4 f0-2
- unsigned char bw[4]; // Klatt bandwidth BNZ /2, f1,f2,f3
- unsigned char klattp[5]; // AV, FNZ, Tilt, Aspr, Skew
- unsigned char klattp2[5]; // continuation of klattp[], Avp, Fric, FricBP, Turb
- unsigned char klatt_ap[7]; // Klatt parallel amplitude
- unsigned char klatt_bp[7]; // Klatt parallel bandwidth /2
-} frame_t; // with extra Klatt parameters for parallel resonators
-
-typedef struct { // 44 bytes
- short frflags;
- short ffreq[7];
- unsigned char length;
- unsigned char rms;
- unsigned char fheight[8];
- unsigned char fwidth[6]; // width/4 f0-5
- unsigned char fright[3]; // width/4 f0-2
- unsigned char bw[4]; // Klatt bandwidth BNZ /2, f1,f2,f3
- unsigned char klattp[5]; // AV, FNZ, Tilt, Aspr, Skew
-} frame_t2; // TESTING
-
-
-#ifdef deleted
-typedef struct {
- short frflags;
- unsigned char length;
- unsigned char rms;
- short ffreq[9];
- unsigned char fheight[9];
- unsigned char fwidth[6]; // width/4
- unsigned char fright[6]; // width/4
- unsigned char fwidth6, fright6;
- unsigned char klattp[N_KLATTP];
-} frame_t;
-
-typedef struct { // 43 bytes
- short frflags;
- unsigned char length;
- unsigned char rms;
- short ffreq[9];
- unsigned char fheight[9];
- unsigned char fwidth[6]; // width/4
- unsigned char fright[6]; // width/4
-} frame_t2; // the original, without Klatt additions, used for file "phondata"
-#endif
-
-
-
-// formant data used by wavegen
-typedef struct {
- int freq; // Hz<<16
- int height; // height<<15
- int left; // Hz<<16
- int right; // Hz<<16
- DOUBLEX freq1; // floating point versions of the above
- DOUBLEX height1;
- DOUBLEX left1;
- DOUBLEX right1;
- DOUBLEX freq_inc; // increment by this every 64 samples
- DOUBLEX height_inc;
- DOUBLEX left_inc;
- DOUBLEX right_inc;
-} wavegen_peaks_t;
-
-typedef struct {
-unsigned char *pitch_env;
-int pitch; // pitch Hz*256
-int pitch_ix; // index into pitch envelope (*256)
-int pitch_inc; // increment to pitch_ix
-int pitch_base; // Hz*256 low, before modified by envelope
-int pitch_range; // Hz*256 range of envelope
-
-unsigned char *mix_wavefile; // wave file to be added to synthesis
-int n_mix_wavefile; // length in bytes
-int mix_wave_scale; // 0=2 byte samples
-int mix_wave_amp;
-int mix_wavefile_ix;
-
-int amplitude;
-int amplitude_v;
-int prev_was_synth; // previous sound was synthesized (not a played wave or pause)
-} WGEN_DATA;
-
-
-typedef struct {
- double a;
- double b;
- double c;
- double x1;
- double x2;
-} RESONATOR;
-
-
-typedef struct {
- short length_total; // not used
- unsigned char n_frames;
- unsigned char flags;
- frame_t2 frame[N_SEQ_FRAMES]; // max. frames in a spectrum sequence
-} SPECT_SEQ; // sequence of espeak formant frames
-
-typedef struct {
- short length_total; // not used
- unsigned char n_frames;
- unsigned char flags;
- frame_t frame[N_SEQ_FRAMES]; // max. frames in a spectrum sequence
-} SPECT_SEQK; // sequence of klatt formants frames
-
-
-typedef struct {
- short length;
- short frflags;
- frame_t *frame;
-} frameref_t;
-
-
-typedef struct {
- PHONEME_TAB *ph;
- unsigned char env; // pitch envelope number
- unsigned char stresslevel;
- unsigned char type;
- unsigned char prepause;
- unsigned char amp;
- unsigned char tone_ph; // tone phoneme to use with this vowel
- unsigned char newword; // bit 0=start of word, bit 1=end of clause, bit 2=start of sentence
- unsigned char synthflags;
- short length; // length_mod
- short pitch1; // pitch, 0-4095 within the Voice's pitch range
- short pitch2;
- unsigned short sourceix; // ix into the original source text string, only set at the start of a word
-} PHONEME_LIST;
-
-
-typedef struct {
- int name;
- int length;
- char *data;
- char *filename;
-} SOUND_ICON;
-
-typedef struct {
- int name;
- unsigned int next_phoneme;
- int mbr_name;
- int mbr_name2;
- int percent; // percentage length of first component
- int control;
-} MBROLA_TAB;
-
-typedef struct {
- int speed_factor1;
- int speed_factor2;
- int speed_factor3;
- int min_sample_len;
- int fast_settings[8];
-} SPEED_FACTORS;
-
-
-// phoneme table
-extern PHONEME_TAB *phoneme_tab[N_PHONEME_TAB];
-
-// list of phonemes in a clause
-extern int n_phoneme_list;
-extern PHONEME_LIST phoneme_list[N_PHONEME_LIST];
-extern unsigned int embedded_list[];
-
-extern unsigned char env_fall[128];
-extern unsigned char env_rise[128];
-extern unsigned char env_frise[128];
-
-#define MAX_PITCH_VALUE 101
-extern unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1];
-
-// queue of commands for wavegen
-#define WCMD_KLATT 1
-#define WCMD_KLATT2 2
-#define WCMD_SPECT 3
-#define WCMD_SPECT2 4
-#define WCMD_PAUSE 5
-#define WCMD_WAVE 6
-#define WCMD_WAVE2 7
-#define WCMD_AMPLITUDE 8
-#define WCMD_PITCH 9
-#define WCMD_MARKER 10
-#define WCMD_VOICE 11
-#define WCMD_EMBEDDED 12
-
-
-#define N_WCMDQ 160
-#define MIN_WCMDQ 22 // need this many free entries before adding new phoneme
-
-extern long wcmdq[N_WCMDQ][4];
-extern int wcmdq_head;
-extern int wcmdq_tail;
-
-// from Wavegen file
-int WcmdqFree();
-void WcmdqStop();
-int WcmdqUsed();
-void WcmdqInc();
-int WavegenOpenSound();
-int WavegenCloseSound();
-int WavegenInitSound();
-void WavegenInit(int rate, int wavemult_fact);
-float polint(float xa[],float ya[],int n,float x);
-int WavegenFill(int fill_zeros);
-void MarkerEvent(int type, unsigned int char_position, int value, unsigned char *out_ptr);
-
-
-extern unsigned char *wavefile_data;
-extern int samplerate;
-extern int samplerate_native;
-
-extern int wavefile_ix;
-extern int wavefile_amp;
-extern int wavefile_ix2;
-extern int wavefile_amp2;
-extern int vowel_transition[4];
-extern int vowel_transition0, vowel_transition1;
-
-extern int mbrola_delay;
-extern char mbrola_name[20];
-
-// from synthdata file
-unsigned int LookupSound(PHONEME_TAB *ph1, PHONEME_TAB *ph2, int which, int *match_level, int control);
-frameref_t *LookupSpect(PHONEME_TAB *ph1, PHONEME_TAB *prev_ph, PHONEME_TAB *next_ph, int which, int *match_level, int *n_frames, PHONEME_LIST *plist);
-
-unsigned char *LookupEnvelope(int ix);
-int LoadPhData();
-
-void SynthesizeInit(void);
-int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume);
-void MakeWave2(PHONEME_LIST *p, int n_ph);
-int SynthOnTimer(void);
-int SpeakNextClause(FILE *f_text, const void *text_in, int control);
-int SynthStatus(void);
-void SetSpeed(int control);
-void SetEmbedded(int control, int value);
-void SelectPhonemeTable(int number);
-int SelectPhonemeTableName(const char *name);
-
-void Write4Bytes(FILE *f, int value);
-int Read4Bytes(FILE *f);
-int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *err_name,int flags);
-
-
-extern unsigned char *envelope_data[18];
-extern int formant_rate[]; // max rate of change of each formant
-extern SPEED_FACTORS speed;
-
-extern long count_samples;
-extern int outbuf_size;
-extern unsigned char *out_ptr;
-extern unsigned char *out_start;
-extern unsigned char *out_end;
-extern int event_list_ix;
-extern espeak_EVENT *event_list;
-extern t_espeak_callback* synth_callback;
-extern int option_log_frames;
-extern const char *version_string;
-extern const int version_phdata;
-
-#define N_SOUNDICON_TAB 80 // total entries in soundicon_tab
-#define N_SOUNDICON_SLOTS 4 // number of slots reserved for dynamic loading of audio files
-extern int n_soundicon_tab;
-extern SOUND_ICON soundicon_tab[N_SOUNDICON_TAB];
-
-espeak_ERROR SetVoiceByName(const char *name);
-espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector);
-espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int srate);
-void SetParameter(int parameter, int value, int relative);
-void MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, FILE *f_mbrola);
-//int MbrolaSynth(char *p_mbrola);
-int DoSample(PHONEME_TAB *ph1, PHONEME_TAB *ph2, int which, int length_mod, int amp);
-int DoSpect(PHONEME_TAB *this_ph, PHONEME_TAB *prev_ph, PHONEME_TAB *next_ph,
- int which, PHONEME_LIST *plist, int modulation);
-int PauseLength(int pause, int control);
-int LookupPhonemeTable(const char *name);
-
-void InitBreath(void);
-
-void KlattInit();
-int Wavegen_Klatt2(int length, int modulation, int resume, frame_t *fr1, frame_t *fr2);
diff --git a/navit/support/espeak/tr_languages.c b/navit/support/espeak/tr_languages.c
deleted file mode 100644
index 83d1c8041..000000000
--- a/navit/support/espeak/tr_languages.c
+++ /dev/null
@@ -1,1335 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <wctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <locale.h>
-
-#include <wctype.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "translate.h"
-
-
-
-#define L_qa 0x716100
-#define L_grc 0x677263 // grc Ancient Greek
-#define L_jbo 0x6a626f // jbo Lojban
-#define L_pap 0x706170 // pap Papiamento
-#define L_zhy 0x7a6879 // zhy
-
-// start of unicode pages for character sets
-#define OFFSET_GREEK 0x380
-#define OFFSET_CYRILLIC 0x420
-#define OFFSET_ARMENIAN 0x530
-#define OFFSET_DEVANAGARI 0x900
-#define OFFSET_BENGALI 0x980
-#define OFFSET_TAMIL 0xb80
-#define OFFSET_KANNADA 0xc80
-#define OFFSET_MALAYALAM 0xd00
-#define OFFSET_KOREAN 0x1100
-
-static void Translator_Russian(Translator *tr);
-
-static void SetLetterVowel(Translator *tr, int c)
-{//==============================================
- tr->letter_bits[c] = (tr->letter_bits[c] & 0x40) | 0x81; // keep value for group 6 (front vowels e,i,y)
-}
-
-static void ResetLetterBits(Translator *tr, int groups)
-{//====================================================
-// Clear all the specified groups
- unsigned int ix;
- unsigned int mask;
-
- mask = ~groups;
-
- for(ix=0; ix<sizeof(tr->letter_bits); ix++)
- {
- tr->letter_bits[ix] &= mask;
- }
-}
-
-static void SetLetterBits(Translator *tr, int group, const char *string)
-{//=====================================================================
- int bits;
- unsigned char c;
-
- bits = (1L << group);
- while((c = *string++) != 0)
- tr->letter_bits[c] |= bits;
-}
-
-static void SetLetterBitsRange(Translator *tr, int group, int first, int last)
-{//===========================================================================
- int bits;
- int ix;
-
- bits = (1L << group);
- for(ix=first; ix<=last; ix++)
- {
- tr->letter_bits[ix] |= bits;
- }
-}
-
-
-static Translator* NewTranslator(void)
-{//===================================
- Translator *tr;
- int ix;
- static const unsigned char stress_amps2[] = {17,17, 20,20, 20,22, 22,20 };
- static const short stress_lengths2[8] = {182,140, 220,220, 220,240, 260,280};
- static const wchar_t empty_wstring[1] = {0};
- static const wchar_t punct_in_word[2] = {'\'', 0}; // allow hyphen within words
-
- tr = (Translator *)Alloc(sizeof(Translator));
- if(tr == NULL)
- return(NULL);
-
- tr->charset_a0 = charsets[1]; // ISO-8859-1, this is for when the input is not utf8
- dictionary_name[0] = 0;
- tr->dict_condition=0;
- tr->data_dictrules = NULL; // language_1 translation rules file
- tr->data_dictlist = NULL; // language_2 dictionary lookup file
-
- tr->transpose_offset = 0;
-
- // only need lower case
- tr->letter_bits_offset = 0;
- memset(tr->letter_bits,0,sizeof(tr->letter_bits));
- memset(tr->letter_groups,0,sizeof(tr->letter_groups));
-
- // 0-5 sets of characters matched by A B C E F G in pronunciation rules
- // these may be set differently for different languages
- SetLetterBits(tr,0,"aeiou"); // A vowels, except y
- SetLetterBits(tr,1,"bcdfgjklmnpqstvxz"); // B hard consonants, excluding h,r,w
- SetLetterBits(tr,2,"bcdfghjklmnpqrstvwxz"); // C all consonants
- SetLetterBits(tr,3,"hlmnr"); // H 'soft' consonants
- SetLetterBits(tr,4,"cfhkpqstx"); // F voiceless consonants
- SetLetterBits(tr,5,"bdgjlmnrvwyz"); // G voiced
- SetLetterBits(tr,6,"eiy"); // Letter group Y, front vowels
- SetLetterBits(tr,7,"aeiouy"); // vowels, including y
-
-
- tr->char_plus_apostrophe = empty_wstring;
- tr->punct_within_word = punct_in_word;
-
- for(ix=0; ix<8; ix++)
- {
- tr->stress_amps[ix] = stress_amps2[ix];
- tr->stress_amps_r[ix] = stress_amps2[ix] - 1;
- tr->stress_lengths[ix] = stress_lengths2[ix];
- }
- memset(&(tr->langopts),0,sizeof(tr->langopts));
-
- tr->langopts.stress_rule = 2;
- tr->langopts.unstressed_wd1 = 1;
- tr->langopts.unstressed_wd2 = 3;
- tr->langopts.param[LOPT_SONORANT_MIN] = 95;
- tr->langopts.param[LOPT_MAXAMP_EOC] = 19;
- tr->langopts.param[LOPT_UNPRONOUNCABLE] = 's'; // don't count this character at start of word
- tr->langopts.max_initial_consonants = 3;
- tr->langopts.replace_chars = NULL;
- tr->langopts.ascii_language = ""; // Non-Latin alphabet languages, use this language to speak Latin words, default is English
-
- SetLengthMods(tr,201);
-// tr->langopts.length_mods = length_mods_en;
-// tr->langopts.length_mods0 = length_mods_en0;
-
- tr->langopts.long_stop = 100;
-
- tr->langopts.max_roman = 49;
- tr->langopts.thousands_sep = ',';
- tr->langopts.decimal_sep = '.';
-
- memcpy(tr->punct_to_tone, punctuation_to_tone, sizeof(tr->punct_to_tone));
-
- return(tr);
-}
-
-
-static const unsigned int replace_cyrillic_latin[] =
- {0x430,'a',
- 0x431,'b',
- 0x446,'c',
- 0x45b,0x107,
- 0x447,0x10d,
- 0x45f,'d'+(0x17e<<16),
- 0x455,'d'+('z'<<16),
- 0x434,'d',
- 0x452,0x111,
- 0x435,'e',
- 0x444,'f',
- 0x433,'g',
- 0x445,'h',
- 0x438,'i',
- 0x458,'j',
- 0x43a,'k',
- 0x459,'l'+('j'<<16),
- 0x43b,'l',
- 0x43c,'m',
- 0x45a,'n'+('j'<<16),
- 0x43d,'n',
- 0x43e,'o',
- 0x43f,'p',
- 0x440,'r',
- 0x441,'s',
- 0x448,0x161,
- 0x442,'t',
- 0x443,'u',
- 0x432,'v',
- 0x437,'z',
- 0x436,0x17e,
- 0x453,0x111,
- 0x45c,0x107,
-0}; // ѓ ѕ ќ
-
-
-void SetIndicLetters(Translator *tr)
-{//=================================
- // Set letter types for Indic scripts, Devanagari, Tamill, etc
- static const char dev_consonants2[] = {0x02,0x03,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f};
-
- memset(tr->letter_bits,0,sizeof(tr->letter_bits));
- SetLetterBitsRange(tr,LETTERGP_A,0x04,0x14); // vowel letters only
- SetLetterBitsRange(tr,LETTERGP_B,0x3e,0x4d); // vowel signs, and virama
-
- SetLetterBitsRange(tr,LETTERGP_C,0x15,0x39); // the main consonant range
- SetLetterBits(tr,LETTERGP_C,dev_consonants2); // + additional consonants
-
- SetLetterBitsRange(tr,LETTERGP_Y,0x04,0x14); // vowel letters
- SetLetterBitsRange(tr,LETTERGP_Y,0x3e,0x4c); // + vowel signs
-
- tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
-}
-
-void SetupTranslator(Translator *tr, const short *lengths, const unsigned char *amps)
-{//==================================================================================
- if(lengths != NULL)
- memcpy(tr->stress_lengths,lengths,sizeof(tr->stress_lengths));
- if(amps != NULL)
- memcpy(tr->stress_amps,amps,sizeof(tr->stress_amps));
-}
-
-
-Translator *SelectTranslator(const char *name)
-{//===========================================
- int name2 = 0;
- Translator *tr;
-
- static const unsigned char stress_amps_sk[8] = {17,17, 20,20, 20,22, 22,21 };
- static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210};
-
- // convert name string into a word of up to 4 characters, for the switch()
- while(*name != 0)
- name2 = (name2 << 8) + *name++;
-
- tr = NewTranslator();
-
- switch(name2)
- {
- case L('a','f'):
- {
- static const short stress_lengths_af[8] = {170,140, 220,220, 0, 0, 250,270};
- SetupTranslator(tr,stress_lengths_af,NULL);
-
- tr->langopts.stress_rule = 0;
- tr->langopts.vowel_pause = 0x30;
- tr->langopts.param[LOPT_DIERESES] = 1;
- tr->langopts.param[LOPT_PREFIXES] = 1;
- SetLetterVowel(tr,'y'); // add 'y' to vowels
-
- tr->langopts.numbers = 0x8d1 + NUM_ROMAN;
- tr->langopts.accents = 1;
- }
- break;
-
- case L('b','n'): // Bengali
- {
- static const short stress_lengths_bn[8] = {180, 180, 210, 210, 0, 0, 230, 240};
- static const unsigned char stress_amps_bn[8] = {18,18, 18,18, 20,20, 22,22 };
-
- SetupTranslator(tr,stress_lengths_bn,stress_amps_bn);
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
-
- tr->langopts.stress_rule = 0;
- tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
- tr->letter_bits_offset = OFFSET_BENGALI;
- SetIndicLetters(tr); // call this after setting OFFSET_BENGALI
- SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama
-
- tr->langopts.numbers = 0x1;
- tr->langopts.numbers2 = NUM2_100000;
- }
- break;
-
- case L('c','y'): // Welsh
- {
- static const short stress_lengths_cy[8] = {170,220, 180,180, 0, 0, 250,270};
- static const unsigned char stress_amps_cy[8] = {17,15, 18,18, 0,0, 22,20 }; // 'diminished' is used to mark a quieter, final unstressed syllable
-
- SetupTranslator(tr,stress_lengths_cy,stress_amps_cy);
-
- tr->charset_a0 = charsets[14]; // ISO-8859-14
-// tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
- tr->langopts.stress_rule = 2;
-// tr->langopts.intonation_group = 4;
-
- // 'diminished' is an unstressed final syllable
- tr->langopts.stress_flags = 0x6 | 0x10;
- tr->langopts.unstressed_wd1 = 0;
- tr->langopts.unstressed_wd2 = 2;
- tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels
-
- tr->langopts.numbers = 0x401;
-
- SetLetterVowel(tr,'w'); // add letter to vowels and remove from consonants
- SetLetterVowel(tr,'y');
- }
- break;
-
- case L('d','a'): // Danish
- {
- static const short stress_lengths_da[8] = {160,140, 200,200, 0,0, 220,210};
- SetupTranslator(tr,stress_lengths_da,NULL);
-
- tr->langopts.stress_rule = 0;
- SetLetterVowel(tr,'y');
- tr->langopts.numbers = 0x10c59;
- }
- break;
-
-
- case L('d','e'):
- {
- static const short stress_lengths_de[8] = {150,130, 200,200, 0, 0, 260,275};
- tr->langopts.stress_rule = 0;
- tr->langopts.word_gap = 0x8; // don't use linking phonemes
- tr->langopts.vowel_pause = 0x30;
- tr->langopts.param[LOPT_PREFIXES] = 1;
- memcpy(tr->stress_lengths,stress_lengths_de,sizeof(tr->stress_lengths));
-
- tr->langopts.numbers = 0x11419 + NUM_ROMAN;
- SetLetterVowel(tr,'y');
- }
- break;
-
- case L('e','n'):
- {
- static const short stress_lengths_en[8] = {182,140, 220,220, 0,0, 248,275};
- SetupTranslator(tr,stress_lengths_en,NULL);
-
- tr->langopts.stress_rule = 0;
- tr->langopts.numbers = 0x841 + NUM_ROMAN;
- tr->langopts.param[LOPT_COMBINE_WORDS] = 2; // allow "mc" to cmbine with the following word
- }
- break;
-
- case L('e','l'): // Greek
- case L_grc: // Ancient Greek
- {
- static const short stress_lengths_el[8] = {155, 180, 210, 210, 0, 0, 270, 300};
- static const unsigned char stress_amps_el[8] = {15,12, 20,20, 20,22, 22,21 }; // 'diminished' is used to mark a quieter, final unstressed syllable
-
- // character codes offset by 0x380
- static const char el_vowels[] = {0x10,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x35,0x37,0x39,0x3f,0x45,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0};
- static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι Ï… έ ή ί Ï
- static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0}; // θ κ ξ π ς σ τ φ χ
- static const char el_consonants[]={0x32,0x33,0x34,0x36,0x38,0x3a,0x3b,0x3c,0x3d,0x3e,0x40,0x41,0x42,0x43,0x44,0x46,0x47,0x48,0};
- static const wchar_t el_char_apostrophe[] = {0x3c3,0}; // σ
-
- SetupTranslator(tr,stress_lengths_el,stress_amps_el);
-
- tr->charset_a0 = charsets[7]; // ISO-8859-7
- tr->char_plus_apostrophe = el_char_apostrophe;
-
- tr->letter_bits_offset = OFFSET_GREEK;
- memset(tr->letter_bits,0,sizeof(tr->letter_bits));
- SetLetterBits(tr,LETTERGP_A,el_vowels);
- SetLetterBits(tr,LETTERGP_B,el_voiceless);
- SetLetterBits(tr,LETTERGP_C,el_consonants);
- SetLetterBits(tr,LETTERGP_Y,el_fvowels); // front vowels: ε η ι υ
-
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
- tr->langopts.stress_rule = 2;
- tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished
- tr->langopts.unstressed_wd1 = 0;
- tr->langopts.unstressed_wd2 = 2;
- tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels
-
- tr->langopts.numbers = 0x109;
- tr->langopts.numbers2 = 0x2; // variant form of numbers before thousands
-
- if(name2 == L_grc)
- {
- // ancient greek
- tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1;
- }
- }
- break;
-
- case L('e','o'):
- {
- static const short stress_lengths_eo[8] = {145, 145, 230, 170, 0, 0, 360, 370};
- static const unsigned char stress_amps_eo[] = {16,14, 20,20, 20,22, 22,21 };
- static const wchar_t eo_char_apostrophe[2] = {'l',0};
-
- SetupTranslator(tr,stress_lengths_eo,stress_amps_eo);
-
- tr->charset_a0 = charsets[3]; // ISO-8859-3
- tr->char_plus_apostrophe = eo_char_apostrophe;
-
- tr->langopts.word_gap = 1;
- tr->langopts.vowel_pause = 2;
- tr->langopts.stress_rule = 2;
- tr->langopts.stress_flags = 0x6 | 0x10;
- tr->langopts.unstressed_wd1 = 3;
- tr->langopts.unstressed_wd2 = 2;
-
- tr->langopts.numbers = 0x1409 + NUM_ROMAN;
- }
- break;
-
- case L('e','s'): // Spanish
- case L('c','a'): // Catalan
- case L_pap: // Papiamento
- {
- static const short stress_lengths_es[8] = {180, 210, 190, 190, 0, 0, 230, 260};
-// static const short stress_lengths_es[8] = {170, 200, 180, 180, 0, 0, 220, 250};
- static const unsigned char stress_amps_es[8] = {16,12, 18,18, 20,20, 20,20 }; // 'diminished' is used to mark a quieter, final unstressed syllable
- static const wchar_t ca_punct_within_word[] = {'\'',0xb7,0}; // ca: allow middle-dot within word
-
- SetupTranslator(tr,stress_lengths_es,stress_amps_es);
-
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
- tr->langopts.stress_rule = 2;
-
- // stress last syllable if it doesn't end in vowel or "s" or "n"
- // 'diminished' is an unstressed final syllable
- tr->langopts.stress_flags = 0x200 | 0x6 | 0x10;
- tr->langopts.unstressed_wd1 = 0;
- tr->langopts.unstressed_wd2 = 2;
- tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels
-
- tr->langopts.numbers = 0x529 + NUM_ROMAN + NUM_ROMAN_AFTER;
-
- if(name2 == L('c','a'))
- {
- tr->punct_within_word = ca_punct_within_word;
- tr->langopts.stress_flags = 0x200 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel
- }
- else
- if(name2 == L_pap)
- {
- tr->langopts.stress_flags = 0x100 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel
- }
- }
- break;
-
-
- case L('e','u'): // basque
- {
- static const short stress_lengths_eu[8] = {200, 200, 200, 200, 0, 0, 210, 230}; // very weak stress
- static const unsigned char stress_amps_eu[8] = {16,16, 18,18, 18,18, 18,18 };
- SetupTranslator(tr,stress_lengths_eu,stress_amps_eu);
- tr->langopts.stress_rule = 1; // ?? second syllable ??
- tr->langopts.numbers = 0x569 + NUM_VIGESIMAL;
- }
- break;
-
-
- case L('f','i'): // Finnish
- {
- static const unsigned char stress_amps_fi[8] = {18,16, 22,22, 20,22, 22,22 };
- static const short stress_lengths_fi[8] = {150,180, 200,200, 0,0, 210,250};
-
- SetupTranslator(tr,stress_lengths_fi,stress_amps_fi);
-
- tr->langopts.stress_rule = 0;
- tr->langopts.stress_flags = 0x56; // move secondary stress from light to a following heavy syllable
- tr->langopts.param[LOPT_IT_DOUBLING] = 1;
- tr->langopts.long_stop = 130;
-
- tr->langopts.numbers = 0x1009;
- SetLetterVowel(tr,'y');
-// tr->langopts.max_initial_consonants = 2; // BUT foreign words may have 3
- tr->langopts.spelling_stress = 1;
- tr->langopts.intonation_group = 3; // less intonation, don't raise pitch at comma
- }
- break;
-
-
- case L('f','r'): // french
- {
- static const short stress_lengths_fr[8] = {190, 170, 190, 200, 0, 0, 235, 240};
- static const unsigned char stress_amps_fr[8] = {18,16, 20,20, 20,22, 22,21 };
-
- SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
- tr->langopts.stress_rule = 3; // stress on final syllable
- tr->langopts.stress_flags = 0x0024; // don't use secondary stress
- tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables
-
- tr->langopts.numbers = 0x1509 + 0x8000 + (NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL);
- SetLetterVowel(tr,'y');
- }
- break;
-
-#ifdef deleted
- case L('g','a'): // Irish Gaelic
- {
- tr->langopts.stress_rule = 1;
- }
- break;
-#endif
-
- case L('h','i'): // Hindi
- case L('n','e'): // Nepali
- {
- static const short stress_lengths_hi[8] = {190, 190, 210, 210, 0, 0, 230, 250};
- static const unsigned char stress_amps_hi[8] = {17,14, 20,19, 20,22, 22,21 };
-
- SetupTranslator(tr,stress_lengths_hi,stress_amps_hi);
- tr->charset_a0 = charsets[19]; // ISCII
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
-
- tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable
- tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
- tr->langopts.numbers = 0x011;
- tr->langopts.numbers2 = NUM2_100000;
- tr->letter_bits_offset = OFFSET_DEVANAGARI;
- SetIndicLetters(tr);
- }
- break;
-
-
- case L('h','r'): // Croatian
- case L('b','s'): // Bosnian
- case L('s','r'): // Serbian
- {
- static const unsigned char stress_amps_hr[8] = {17,17, 20,20, 20,22, 22,21 };
- static const short stress_lengths_hr[8] = {180,160, 200,200, 0,0, 220,230};
- static const short stress_lengths_sr[8] = {160,150, 200,200, 0,0, 250,260};
-
- if(name2 == L('s','r'))
- SetupTranslator(tr,stress_lengths_sr,stress_amps_hr);
- else
- SetupTranslator(tr,stress_lengths_hr,stress_amps_hr);
- tr->charset_a0 = charsets[2]; // ISO-8859-2
-
- tr->langopts.stress_rule = 0;
- tr->langopts.stress_flags = 0x10;
- tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3;
- tr->langopts.max_initial_consonants = 5;
- tr->langopts.spelling_stress = 1;
- tr->langopts.accents = 1;
-
- tr->langopts.numbers = 0x140d + 0x4000 + NUM_ROMAN_UC;
- tr->langopts.numbers2 = 0x4a; // variant numbers before thousands,milliards
- tr->langopts.replace_chars = replace_cyrillic_latin;
-
- SetLetterVowel(tr,'y');
- SetLetterVowel(tr,'r');
- }
- break;
-
-
- case L('h','u'): // Hungarian
- {
- static const unsigned char stress_amps_hu[8] = {17,17, 19,19, 20,22, 22,21 };
- static const short stress_lengths_hu[8] = {185,195, 195,190, 0,0, 210,220};
-
- SetupTranslator(tr,stress_lengths_hu,stress_amps_hu);
- tr->charset_a0 = charsets[2]; // ISO-8859-2
-
- tr->langopts.vowel_pause = 0x20;
- tr->langopts.stress_rule = 0;
- tr->langopts.stress_flags = 0x8036;
- tr->langopts.unstressed_wd1 = 2;
-// tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x4; // don't propagate over word boundaries
- tr->langopts.param[LOPT_IT_DOUBLING] = 1;
- tr->langopts.param[LOPT_COMBINE_WORDS] = 99; // combine some prepositions with the following word
-
- tr->langopts.numbers = 0x1009 + 0xa000 + NUM_ROMAN + 0x10000;
- SetLetterVowel(tr,'y');
- tr->langopts.spelling_stress = 1;
-SetLengthMods(tr,3); // all equal
- }
- break;
-
- case L('h','y'): // Armenian
- {
- static const short stress_lengths_hy[8] = {250, 200, 250, 250, 0, 0, 250, 250};
- static const char hy_vowels[] = {0x31, 0x35, 0x37, 0x38, 0x3b, 0x48, 0x55, 0};
- static const char hy_consonants[] = {0x32,0x33,0x34,0x36,0x39,0x3a,0x3c,0x3d,0x3e,0x3f,
- 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0};
-
- SetupTranslator(tr,stress_lengths_hy,NULL);
- tr->langopts.stress_rule = 3; // default stress on final syllable
-
- tr->letter_bits_offset = OFFSET_ARMENIAN;
- memset(tr->letter_bits,0,sizeof(tr->letter_bits));
- SetLetterBits(tr,LETTERGP_A,hy_vowels);
- SetLetterBits(tr,LETTERGP_C,hy_consonants);
- tr->langopts.max_initial_consonants = 6;
- tr->langopts.numbers = 0x409;
-// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
- }
- break;
-
- case L('i','d'): // Indonesian
- {
- static const short stress_lengths_id[8] = {160, 200, 180, 180, 0, 0, 220, 240};
- static const unsigned char stress_amps_id[8] = {16,18, 18,18, 20,22, 22,21 };
-
- SetupTranslator(tr,stress_lengths_id,stress_amps_id);
- tr->langopts.stress_rule = 2;
- tr->langopts.numbers = 0x1009 + NUM_ROMAN;
- tr->langopts.stress_flags = 0x6 | 0x10;
- tr->langopts.accents = 2; // "capital" after letter name
- }
- break;
-
- case L('i','s'): // Icelandic
- {
- static const short stress_lengths_is[8] = {180,160, 200,200, 0,0, 240,250};
- static const wchar_t is_lettergroup_B[] = {'c','f','h','k','p','t','x',0xfe,0}; // voiceless conants, including 'þ' ?? 's'
-
- SetupTranslator(tr,stress_lengths_is,NULL);
- tr->langopts.stress_rule = 0;
- tr->langopts.stress_flags = 0x10;
- tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels
- tr->langopts.param[LOPT_REDUCE] = 2;
-
- ResetLetterBits(tr,0x18);
- SetLetterBits(tr,4,"kpst"); // Letter group F
- SetLetterBits(tr,3,"jvr"); // Letter group H
- tr->letter_groups[1] = is_lettergroup_B;
- SetLetterVowel(tr,'y');
- tr->langopts.numbers = 0x8e9;
- tr->langopts.numbers2 = 0x2;
- }
- break;
-
- case L('i','t'): // Italian
- {
- static const short stress_lengths_it[8] = {150, 140, 170, 170, 0, 0, 300, 330};
- static const unsigned char stress_amps_it[8] = {15,14, 19,19, 20,22, 22,20 };
-
- SetupTranslator(tr,stress_lengths_it,stress_amps_it);
-
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
- tr->langopts.stress_rule = 2;
- tr->langopts.stress_flags = 0x10 | 0x20000;
- tr->langopts.vowel_pause = 1;
- tr->langopts.unstressed_wd1 = 2;
- tr->langopts.unstressed_wd2 = 2;
- tr->langopts.param[LOPT_IT_LENGTHEN] = 2; // remove lengthen indicator from unstressed or non-penultimate syllables
- tr->langopts.param[LOPT_IT_DOUBLING] = 2; // double the first consonant if the previous word ends in a stressed vowel
- tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels
- tr->langopts.param[LOPT_REDUCE] = 1; // reduce vowels even if phonemes are specified in it_list
- tr->langopts.param[LOPT_ALT] = 2; // call ApplySpecialAttributes2() if a word has $alt or $alt2
- tr->langopts.numbers = 0x2709 + NUM_ROMAN;
- tr->langopts.accents = 2; // Say "Capital" after the letter.
- SetLetterVowel(tr,'y');
- }
- break;
-
- case L_jbo: // Lojban
- {
- static const short stress_lengths_jbo[8] = {145,145, 170,160, 0,0, 330,350};
- static const wchar_t jbo_punct_within_word[] = {'.',',','\'',0x2c8,0}; // allow period and comma within a word, also stress marker (from LOPT_CAPS_IN_WORD)
-
- SetupTranslator(tr,stress_lengths_jbo,NULL);
- tr->langopts.stress_rule = 2;
- tr->langopts.vowel_pause = 0x20c; // pause before a word which starts with a vowel, or after a word which ends in a consonant
-// tr->langopts.word_gap = 1;
- tr->punct_within_word = jbo_punct_within_word;
- tr->langopts.param[LOPT_CAPS_IN_WORD] = 2; // capitals indicate stressed syllables
- SetLetterVowel(tr,'y');
- }
- break;
-
- case L('k','o'): // Korean, TEST
- {
- static const char ko_ivowels[] = {0x63,0x64,0x67,0x68,0x6d,0x72,0x74,0x75,0}; // y and i vowels
- static const unsigned char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0}; // voiced consonants, l,m,n,N
-
- tr->letter_bits_offset = OFFSET_KOREAN;
- memset(tr->letter_bits,0,sizeof(tr->letter_bits));
- SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75);
- SetLetterBits(tr,LETTERGP_Y,ko_ivowels);
- SetLetterBits(tr,LETTERGP_G,(const char *)ko_voiced);
-
- tr->langopts.stress_rule = 8; // ?? 1st syllable if it is heavy, else 2nd syllable
- tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
- tr->langopts.numbers = 0x0401;
- }
- break;
-
- case L('k','u'): // Kurdish
- {
- static const unsigned char stress_amps_ku[8] = {18,18, 20,20, 20,22, 22,21 };
- static const short stress_lengths_ku[8] = {180,180, 190,180, 0,0, 230,240};
-
- SetupTranslator(tr,stress_lengths_ku,stress_amps_ku);
- tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5
-
- tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable
-
- tr->langopts.numbers = 0x100461;
- tr->langopts.max_initial_consonants = 2;
- }
- break;
-
- case L('l','a'): //Latin
- {
- tr->charset_a0 = charsets[4]; // ISO-8859-4, includes a,e,i,o,u-macron
- tr->langopts.stress_rule = 2;
- tr->langopts.stress_flags = 0x20;
- tr->langopts.unstressed_wd1 = 0;
- tr->langopts.unstressed_wd2 = 2;
- tr->langopts.param[LOPT_DIERESES] = 1;
- tr->langopts.numbers = 0x1 + NUM_ROMAN;
- tr->langopts.max_roman = 5000;
- }
- break;
-
- case L('l','v'): // latvian
- {
- static const unsigned char stress_amps_lv[8] = {17,13, 20,20, 20,22, 22,21 };
- static const short stress_lengths_lv[8] = {180,130, 210,210, 0,0, 210,210};
-
- SetupTranslator(tr,stress_lengths_lv,stress_amps_lv);
-
- tr->langopts.stress_rule = 0;
- tr->langopts.spelling_stress = 1;
- tr->charset_a0 = charsets[4]; // ISO-8859-4
- tr->langopts.numbers = 0x409 + 0x8000 + 0x10000;
- tr->langopts.stress_flags = 0x16 + 0x40000;
- }
- break;
-
- case L('m','k'): // Macedonian
- {
- static wchar_t vowels_cyrillic[] = {0x440, // also include 'Ñ€' [R]
- 0x430,0x435,0x438,0x439,0x43e,0x443,0x44b,0x44d,0x44e,0x44f,0x450,0x451,0x456,0x457,0x45d,0x45e,0};
- static const unsigned char stress_amps_mk[8] = {17,17, 20,20, 20,22, 22,21 };
- static const short stress_lengths_mk[8] = {180,160, 200,200, 0,0, 220,230};
-
- SetupTranslator(tr,stress_lengths_mk,stress_amps_mk);
- tr->charset_a0 = charsets[5]; // ISO-8859-5
- tr->letter_groups[0] = vowels_cyrillic;
-
- tr->langopts.stress_rule = 4; // antipenultimate
- tr->langopts.numbers = 0x0429 + 0x4000;
- tr->langopts.numbers2 = 0x8a; // variant numbers before thousands,milliards
- }
- break;
-
-
- case L('n','l'): // Dutch
- {
- static const short stress_lengths_nl[8] = {160,135, 210,210, 0, 0, 260,280};
-
- tr->langopts.stress_rule = 0;
- tr->langopts.vowel_pause = 1;
- tr->langopts.param[LOPT_DIERESES] = 1;
- tr->langopts.param[LOPT_PREFIXES] = 1;
- SetLetterVowel(tr,'y');
-
- tr->langopts.numbers = 0x11c19;
- memcpy(tr->stress_lengths,stress_lengths_nl,sizeof(tr->stress_lengths));
- }
- break;
-
- case L('n','o'): // Norwegian
- {
- static const short stress_lengths_no[8] = {160,140, 200,200, 0,0, 220,210};
-
- SetupTranslator(tr,stress_lengths_no,NULL);
- tr->langopts.stress_rule = 0;
- SetLetterVowel(tr,'y');
- tr->langopts.numbers = 0x11849;
- }
- break;
-
- case L('o','m'):
- {
- static const unsigned char stress_amps_om[] = {18,15, 20,20, 20,22, 22,22 };
- static const short stress_lengths_om[8] = {200,200, 200,200, 0,0, 200,200};
-
- SetupTranslator(tr,stress_lengths_om,stress_amps_om);
- tr->langopts.stress_rule = 2;
- tr->langopts.stress_flags = 0x16 + 0x80000;
- }
- break;
-
- case L('p','l'): // Polish
- {
- static const short stress_lengths_pl[8] = {160, 190, 175, 175, 0, 0, 200, 210};
- static const unsigned char stress_amps_pl[8] = {17,13, 19,19, 20,22, 22,21 }; // 'diminished' is used to mark a quieter, final unstressed syllable
-
- SetupTranslator(tr,stress_lengths_pl,stress_amps_pl);
-
- tr->charset_a0 = charsets[2]; // ISO-8859-2
- tr->langopts.stress_rule = 2;
- tr->langopts.stress_flags = 0x6; // mark unstressed final syllables as diminished
- tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x8;
- tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :)
- tr->langopts.numbers=0x1009 + 0x4000;
- tr->langopts.numbers2=0x40;
- tr->langopts.param[LOPT_COMBINE_WORDS] = 4 + 0x100; // combine 'nie' (marked with $alt2) with some 1-syllable (and 2-syllable) words (marked with $alt)
- SetLetterVowel(tr,'y');
- }
- break;
-
- case L('p','t'): // Portuguese
- {
- static const short stress_lengths_pt[8] = {180, 125, 210, 210, 0, 0, 270, 295};
- static const unsigned char stress_amps_pt[8] = {16,13, 19,19, 20,22, 22,21 }; // 'diminished' is used to mark a quieter, final unstressed syllable
-
- SetupTranslator(tr,stress_lengths_pt,stress_amps_pt);
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
-
- tr->langopts.stress_rule = 3; // stress on final syllable
- tr->langopts.stress_flags = 0x6 | 0x10 | 0x20000;
- tr->langopts.numbers = 0x069 + 0x4000 + NUM_ROMAN;
- SetLetterVowel(tr,'y');
- ResetLetterBits(tr,0x2);
- SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y
- }
- break;
-
- case L('r','o'): // Romanian
- {
- static const short stress_lengths_ro[8] = {170, 170, 180, 180, 0, 0, 240, 260};
- static const unsigned char stress_amps_ro[8] = {15,13, 18,18, 20,22, 22,21 };
-
- SetupTranslator(tr,stress_lengths_ro,stress_amps_ro);
-
- tr->langopts.stress_rule = 2;
- tr->langopts.stress_flags = 0x100 + 0x6;
-
- tr->charset_a0 = charsets[2]; // ISO-8859-2
- tr->langopts.numbers = 0x1029+0x6000 + NUM_ROMAN;
- tr->langopts.numbers2 = 0x1e; // variant numbers before all thousandplex
- }
- break;
-
- case L('r','u'): // Russian
- Translator_Russian(tr);
- break;
-
- case L('r','w'): // Kiryarwanda
- {
- tr->langopts.stress_rule = 2;
- tr->langopts.stress_flags = 0x16;
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
-
- tr->langopts.numbers = 0x61 + 0x100000 + 0x4000;
- tr->langopts.numbers2 = 0x200; // say "thousands" before its number
- }
- break;
-
- case L('s','k'): // Slovak
- case L('c','s'): // Czech
- {
- static const char *sk_voiced = "bdgjlmnrvwzaeiouy";
-
- SetupTranslator(tr,stress_lengths_sk,stress_amps_sk);
- tr->charset_a0 = charsets[2]; // ISO-8859-2
-
- tr->langopts.stress_rule = 0;
- tr->langopts.stress_flags = 0x16;
- tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3;
- tr->langopts.max_initial_consonants = 5;
- tr->langopts.spelling_stress = 1;
- tr->langopts.param[LOPT_COMBINE_WORDS] = 4; // combine some prepositions with the following word
-
- tr->langopts.numbers = 0x0401 + 0x4000 + NUM_ROMAN;
- tr->langopts.numbers2 = 0x100;
- tr->langopts.thousands_sep = 0; //no thousands separator
- tr->langopts.decimal_sep = ',';
-
- if(name2 == L('c','s'))
- {
- tr->langopts.numbers2 = 0x108; // variant numbers before milliards
- }
-
- SetLetterVowel(tr,'y');
- SetLetterVowel(tr,'r');
- ResetLetterBits(tr,0x20);
- SetLetterBits(tr,5,sk_voiced);
- }
- break;
-
- case L('s','q'): // Albanian
- {
- static const short stress_lengths_sq[8] = {150, 150, 180, 180, 0, 0, 300, 300};
- static const unsigned char stress_amps_sq[8] = {16,12, 16,16, 20,20, 21,19 };
-
- SetupTranslator(tr,stress_lengths_sq,stress_amps_sq);
-
- tr->langopts.stress_rule = 2;
- tr->langopts.stress_flags = 0x16 + 0x100;
- SetLetterVowel(tr,'y');
- tr->langopts.numbers = 0x69 + 0x8000;
- tr->langopts.accents = 2; // "capital" after letter name
- }
- break;
-
-
- case L('s','v'): // Swedish
- {
- static const unsigned char stress_amps_sv[] = {16,16, 20,20, 20,22, 22,21 };
- static const short stress_lengths_sv[8] = {160,135, 220,220, 0,0, 250,280};
- SetupTranslator(tr,stress_lengths_sv,stress_amps_sv);
-
- tr->langopts.stress_rule = 0;
- SetLetterVowel(tr,'y');
- tr->langopts.numbers = 0x1909;
- tr->langopts.accents = 1;
- }
- break;
-
- case L('s','w'): // Swahili
- {
- static const short stress_lengths_sw[8] = {160, 170, 200, 200, 0, 0, 320, 340};
- static const unsigned char stress_amps_sw[] = {16,12, 19,19, 20,22, 22,21 };
-
- SetupTranslator(tr,stress_lengths_sw,stress_amps_sw);
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
-
- tr->langopts.vowel_pause = 1;
- tr->langopts.stress_rule = 2;
- tr->langopts.stress_flags = 0x6 | 0x10;
-
- tr->langopts.numbers = 0x4e1;
- tr->langopts.numbers2 = NUM2_100000a;
- }
- break;
-
- case L('t','a'): // Tamil
- case L('m','l'): // Malayalam
- case L('k','n'): // Kannada
- case L('m','r'): // Marathi
- {
- static const short stress_lengths_ta[8] = {200, 200, 210, 210, 0, 0, 230, 230};
- static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 };
-
- SetupTranslator(tr,stress_lengths_ta,stress_amps_ta);
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
-
- tr->langopts.stress_rule = 0;
- tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
- tr->letter_bits_offset = OFFSET_TAMIL;
-
- if(name2 == L('m','r'))
- {
- tr->letter_bits_offset = OFFSET_DEVANAGARI;
- }
- else
- if(name2 == L('m','l'))
- {
- tr->letter_bits_offset = OFFSET_MALAYALAM;
- }
- else
- if(name2 == L('k','n'))
- {
- tr->letter_bits_offset = OFFSET_KANNADA;
- tr->langopts.numbers = 0x1;
- tr->langopts.numbers2 = NUM2_100000;
- }
- tr->langopts.param[LOPT_WORD_MERGE] = 1; // don't break vowels betwen words
- SetIndicLetters(tr); // call this after setting OFFSET_
- }
- break;
-
-#ifdef deleted
- case L('t','h'): // Thai
- {
- static const short stress_lengths_th[8] = {230,150, 230,230, 230,0, 230,250};
- static const unsigned char stress_amps_th[] = {22,16, 22,22, 22,22, 22,22 };
-
- SetupTranslator(tr,stress_lengths_th,stress_amps_th);
-
- tr->langopts.stress_rule = 0; // stress on final syllable of a "word"
- tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module)
- tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches()
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
-// tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping)
- tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word
- }
- break;
-#endif
-
- case L('t','r'): // Turkish
- {
- static const unsigned char stress_amps_tr[8] = {18,18, 20,20, 20,22, 22,21 };
- static const short stress_lengths_tr[8] = {190,190, 190,190, 0,0, 250,270};
-
- SetupTranslator(tr,stress_lengths_tr,stress_amps_tr);
- tr->charset_a0 = charsets[9]; // ISO-8859-9 - Latin5
-
- tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable
- tr->langopts.stress_flags = 0x20; //no automatic secondary stress
-
- tr->langopts.numbers = 0x1509 + 0x4000;
- tr->langopts.max_initial_consonants = 2;
- }
- break;
-
- case L('v','i'): // Vietnamese
- {
- static const short stress_lengths_vi[8] = {150, 150, 180, 180, 210, 230, 230, 240};
- static const unsigned char stress_amps_vi[] = {16,16, 16,16, 22,22, 22,22 };
- static wchar_t vowels_vi[] = {
- 0x61, 0xe0, 0xe1, 0x1ea3, 0xe3, 0x1ea1, // a
- 0x103, 0x1eb1, 0x1eaf, 0x1eb3, 0x1eb5, 0x1eb7, // ă
- 0xe2, 0x1ea7, 0x1ea5, 0x1ea9, 0x1eab, 0x1ead, // â
- 0x65, 0xe8, 0xe9, 0x1ebb, 0x1ebd, 0x1eb9, // e
- 0xea, 0x1ec1, 0x1ebf, 0x1ec3, 0x1ec5, 0x1ec7, // i
- 0x69, 0xec, 0xed, 0x1ec9, 0x129, 0x1ecb, // i
- 0x6f, 0xf2, 0xf3, 0x1ecf, 0xf5, 0x1ecd, // o
- 0xf4, 0x1ed3, 0x1ed1, 0x1ed5, 0x1ed7, 0x1ed9, // ô
- 0x1a1, 0x1edd, 0x1edb, 0x1edf, 0x1ee1, 0x1ee3, // Æ¡
- 0x75, 0xf9, 0xfa, 0x1ee7, 0x169, 0x1ee5, // u
- 0x1b0, 0x1eeb, 0x1ee9, 0x1eed, 0x1eef, 0x1ef1, // Æ°
- 0x79, 0x1ef3, 0xfd, 0x1ef7, 0x1ef9, 0x1e, 0 }; // y
-
- SetupTranslator(tr,stress_lengths_vi,stress_amps_vi);
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
-
- tr->langopts.stress_rule = 0;
- tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word
-// tr->langopts.vowel_pause = 4;
- tr->letter_groups[0] = vowels_vi;
- tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches()
- tr->langopts.unstressed_wd1 = 2;
- tr->langopts.numbers = 0x0049 + 0x8000;
-
- }
- break;
-
- case L('z','h'):
- case L_zhy:
- {
- static const short stress_lengths_zh[8] = {230,150, 230,230, 230,0, 240,250}; // 1=tone5. end-of-sentence, 6=tone 1&4, 7=tone 2&3
- static const unsigned char stress_amps_zh[] = {22,16, 22,22, 22,22, 22,22 };
-
- SetupTranslator(tr,stress_lengths_zh,stress_amps_zh);
-
- tr->langopts.stress_rule = 3; // stress on final syllable of a "word"
- tr->langopts.stress_flags = 2; // don't automatically set diminished stress (may be set in the intonation module)
- tr->langopts.vowel_pause = 0;
- tr->langopts.tone_language = 1; // Tone language, use CalcPitches_Tone() rather than CalcPitches()
- tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
- tr->langopts.tone_numbers = 1; // a number after letters indicates a tone number (eg. pinyin or jyutping)
- tr->langopts.ideographs = 1;
- tr->langopts.word_gap = 0x21; // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word
- if(name2 == L('z','h'))
- {
- tr->langopts.textmode = 1;
- tr->langopts.listx = 1; // compile zh_listx after zh_list
- }
- }
- break;
-
- default:
- tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
- break;
- }
-
- tr->translator_name = name2;
-
- if(tr->langopts.numbers & 0x8)
- {
- // use . and ; for thousands and decimal separators
- tr->langopts.thousands_sep = '.';
- tr->langopts.decimal_sep = ',';
- }
- if(tr->langopts.numbers & 0x4)
- {
- tr->langopts.thousands_sep = 0; // don't allow thousands separator, except space
- }
- return(tr);
-} // end of SelectTranslator
-
-
-
-//**********************************************************************************************************
-
-
-
-static void Translator_Russian(Translator *tr)
-{//===========================================
- static const unsigned char stress_amps_ru[] = {16,16, 18,18, 20,24, 24,22 };
- static const short stress_lengths_ru[8] = {150,140, 220,220, 0,0, 260,280};
-
-
- // character codes offset by 0x420
- static const char ru_vowels[] = {0x10,0x15,0x31,0x18,0x1e,0x23,0x2b,0x2d,0x2e,0x2f,0};
- static const char ru_consonants[] = {0x11,0x12,0x13,0x14,0x16,0x17,0x19,0x1a,0x1b,0x1c,0x1d,0x1f,0x20,0x21,0x22,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0};
- static const char ru_soft[] = {0x2c,0x19,0x27,0x29,0}; // letter group B [k ts; s;]
- static const char ru_hard[] = {0x2a,0x16,0x26,0x28,0}; // letter group H [S Z ts]
- static const char ru_nothard[] = {0x11,0x12,0x13,0x14,0x17,0x19,0x1a,0x1b,0x1c,0x1d,0x1f,0x20,0x21,0x22,0x24,0x25,0x27,0x29,0x2c,0};
- static const char ru_voiced[] = {0x11,0x12,0x13,0x14,0x16,0x17,0}; // letter group G (voiced obstruents)
- static const char ru_ivowels[] = {0x2c,0x15,0x31,0x18,0x2e,0x2f,0}; // letter group Y (iotated vowels & soft-sign)
-
- SetupTranslator(tr,stress_lengths_ru,stress_amps_ru);
-
- tr->charset_a0 = charsets[18]; // KOI8-R
- tr->transpose_offset = 0x42f; // convert cyrillic from unicode into range 0x01 to 0x22
- tr->transpose_min = 0x430;
- tr->transpose_max = 0x451;
-
- tr->letter_bits_offset = OFFSET_CYRILLIC;
- memset(tr->letter_bits,0,sizeof(tr->letter_bits));
- SetLetterBits(tr,0,ru_vowels);
- SetLetterBits(tr,1,ru_soft);
- SetLetterBits(tr,2,ru_consonants);
- SetLetterBits(tr,3,ru_hard);
- SetLetterBits(tr,4,ru_nothard);
- SetLetterBits(tr,5,ru_voiced);
- SetLetterBits(tr,6,ru_ivowels);
- SetLetterBits(tr,7,ru_vowels);
-
- tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432; // [v] don't count this character at start of word
- tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1;
- tr->langopts.param[LOPT_REDUCE] = 2;
- tr->langopts.stress_rule = 5;
- tr->langopts.stress_flags = 0x0020; // waas 0x1010
-
- tr->langopts.numbers = 0x0409;
- tr->langopts.numbers2 = 0xc2; // variant numbers before thousands
- tr->langopts.phoneme_change = 1;
- tr->langopts.testing = 2;
-
-} // end of Translator_Russian
-
-
-
-/*
-typedef struct {
- int flags;
- unsigned char stress; // stress level of this vowel
- unsigned char stress_highest; // the highest stress level of a vowel in this word
- unsigned char n_vowels; // number of vowels in the word
- unsigned char vowel_this; // syllable number of this vowel (counting from 1)
- unsigned char vowel_stressed; // syllable number of the highest stressed vowel
-} CHANGEPH;
-*/
-
-
-#define RUSSIAN2
-#ifdef RUSSIAN2
-
-int ChangePhonemes_ru(Translator *tr, PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch)
-{//=============================================================================================================
-// Called for each phoneme in the phoneme list, to allow a language to make changes
-// ph The current phoneme
-
- int variant;
- int vowelix;
- int stressed;
- int soft;
- PHONEME_TAB *prev, *next;
-
- if(ch->flags & 8)
- return(0); // full phoneme translation has already been given
- // Russian vowel softening and reduction rules
-
- if(ph->type == phVOWEL)
- {
- int prestressed = ch->vowel_stressed==ch->vowel_this+1; // the next vowel after this has the main stress
-
- #define N_VOWELS_RU 11
- static unsigned int vowels_ru[N_VOWELS_RU] = {'a','V','O','I',PH('I','#'),PH('E','#'),PH('E','2'),
-PH('V','#'),PH('I','3'),PH('I','2'),PH('E','3')};
-
-
- static unsigned int vowel_replace[N_VOWELS_RU][6] = {
- // stressed, soft, soft-stressed, j+stressed, j+soft, j+soft-stressed
- /*0*/ {'A', 'I', PH('j','a'), 'a', 'a', 'a'}, // a Uses 3,4,5 columns.
- /*1*/ {'A', 'V', PH('j','a'), 'a', 'V', 'a'}, // V Uses 3,4,5 columns.
- /*2*/ {'o', '8', '8', 'o', '8', '8'}, // O
- /*3*/ {'i', 'I', 'i', 'a', 'I', 'a'}, // I Uses 3,4,5 columns.
- /*4*/ {'i', PH('I','#'), 'i', 'i', PH('I','#'), 'i'}, // I#
- /*5*/ {'E', PH('E','#'), 'E', 'e', PH('E','#'), 'e'}, // E#
- /*6*/ {'E', PH('E','2'), 'E', 'e', PH('E','2'), 'e'}, // E2 Uses 3,4,5 columns.
- /*7*/ {PH('j','a'), 'V', PH('j','a'), 'A', 'V', 'A'}, // V#
- /*8*/ {PH('j','a'), 'I', PH('j','a'), 'e', 'I', 'e'}, // I3 Uses 3,4,5 columns.
- /*9*/ {'e', 'I', 'e', 'e', 'I', 'e'}, // I2
- /*10*/ {'e', PH('E', '2'), 'e', 'e', PH('E','2'), 'e'} // E3
- };
-
- prev = phoneme_tab[phlist[index-1].phcode];
- next = phoneme_tab[phlist[index+1].phcode];
-
- // lookup the vowel name to get an index into the vowel_replace[] table
- for(vowelix=0; vowelix<N_VOWELS_RU; vowelix++)
- {
- if(vowels_ru[vowelix] == ph->mnemonic)
- break;
- }
- if(vowelix == N_VOWELS_RU)
- return(0);
-
- if(prestressed)
- {
- if((vowelix==6)&&(prev->mnemonic=='j'))
- vowelix=8;
- if(vowelix==1)
- vowelix=0;
- if(vowelix==4)
- vowelix=3;
- if(vowelix==6)
- vowelix=5;
- if(vowelix==7)
- vowelix=8;
- if(vowelix==10)
- vowelix=9;
- }
- // do we need a variant of this vowel, depending on the stress and adjacent phonemes ?
- variant = -1;
- stressed = ch->flags & 2;
- soft=prev->phflags & phPALATAL;
-
- if (soft && stressed)
- variant = 2; else
- if (stressed)
- variant = 0; else
- if (soft)
- variant = 1;
- if(variant >= 0)
- {
- if(prev->mnemonic == 'j')
- variant += 3;
-
- phlist[index].phcode = PhonemeCode(vowel_replace[vowelix][variant]);
- }
- else
- {
- phlist[index].phcode = PhonemeCode(vowels_ru[vowelix]);
- }
- }
-
- return(0);
-}
-#else
-
-
-int ChangePhonemes_ru(Translator *tr, PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch)
-{//=============================================================================================================
-// Called for each phoneme in the phoneme list, to allow a language to make changes
-// flags: bit 0=1 last phoneme in a word
-// bit 1=1 this is the highest stressed vowel in the current word
-// bit 2=1 after the highest stressed vowel in the current word
-// bit 3=1 the phonemes were specified explicitly, or found from an entry in the xx_list dictionary
-// ph The current phoneme
-
- int variant;
- int vowelix;
- PHONEME_TAB *prev, *next;
-
- if(ch->flags & 8)
- return(0); // full phoneme translation has already been given
-
- // Russian vowel softening and reduction rules
- if(ph->type == phVOWEL)
- {
- #define N_VOWELS_RU 7
- static unsigned char vowels_ru[N_VOWELS_RU] = {'a','A','o','E','i','u','y'};
-
- // each line gives: soft, reduced, soft-reduced, post-tonic
- static unsigned short vowel_replace[N_VOWELS_RU][4] = {
- {'&', 'V', 'I', 'V'}, // a
- {'&', 'V', 'I', 'V'}, // A
- {'8', 'V', 'I', 'V'}, // o
- {'e', 'I', 'I', 'I'}, // E
- {'i', 'I', 'I', 'I'}, // i
- {'u'+('"'<<8), 'U', 'U', 'U'}, // u
- {'y', 'Y', 'Y', 'Y'}}; // y
-
- prev = phoneme_tab[phlist[index-1].phcode];
- next = phoneme_tab[phlist[index+1].phcode];
-
-if(prev->mnemonic == 'j')
- return(0);
-
- // lookup the vowel name to get an index into the vowel_replace[] table
- for(vowelix=0; vowelix<N_VOWELS_RU; vowelix++)
- {
- if(vowels_ru[vowelix] == ph->mnemonic)
- break;
- }
- if(vowelix == N_VOWELS_RU)
- return(0);
-
- // do we need a variant of this vowel, depending on the stress and adjacent phonemes ?
- variant = -1;
- if(ch->flags & 2)
- {
- // a stressed vowel
- if((prev->phflags & phPALATAL) && ((next->phflags & phPALATAL) || phoneme_tab[phlist[index+2].phcode]->mnemonic == ';'))
- {
- // between two palatal consonants, use the soft variant
- variant = 0;
- }
- }
- else
- {
- // an unstressed vowel
- if(prev->phflags & phPALATAL)
- {
- variant = 2; // unstressed soft
- }
- else
- if((ph->mnemonic == 'o') && ((prev->phflags & phPLACE) == phPLACE_pla))
- {
- variant = 2; // unstressed soft ([o] vowel following: ш ж
- }
- else
- if(ch->flags & 4)
- {
- variant = 3; // post tonic
- }
- else
- {
- variant = 1; // unstressed
- }
- }
- if(variant >= 0)
- {
- phlist[index].phcode = PhonemeCode(vowel_replace[vowelix][variant]);
- }
- }
-
- return(0);
-}
-#endif
-
diff --git a/navit/support/espeak/translate.c b/navit/support/espeak/translate.c
deleted file mode 100755
index 4891644cd..000000000
--- a/navit/support/espeak/translate.c
+++ /dev/null
@@ -1,2800 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <wctype.h>
-#include <wchar.h>
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-#include "translate.h"
-
-#define WORD_STRESS_CHAR '*'
-
-
-Translator *translator = NULL; // the main translator
-Translator *translator2 = NULL; // secondary translator for certain words
-static char translator2_language[20] = {0};
-
-FILE *f_trans = NULL; // phoneme output text
-int option_tone2 = 0;
-int option_tone_flags = 0; // bit 8=emphasize allcaps, bit 9=emphasize penultimate stress
-int option_phonemes = 0;
-int option_phoneme_events = 0;
-int option_quiet = 0;
-int option_endpause = 0; // suppress pause after end of text
-int option_capitals = 0;
-int option_punctuation = 0;
-int option_sayas = 0;
-static int option_sayas2 = 0; // used in translate_clause()
-static int option_emphasis = 0; // 0=normal, 1=normal, 2=weak, 3=moderate, 4=strong
-int option_ssml = 0;
-int option_phoneme_input = 0; // allow [[phonemes]] in input
-int option_phoneme_variants = 0; // 0= don't display phoneme variant mnemonics
-int option_wordgap = 0;
-
-static int count_sayas_digits;
-int skip_sentences;
-int skip_words;
-int skip_characters;
-char skip_marker[N_MARKER_LENGTH];
-int skipping_text; // waiting until word count, sentence count, or named marker is reached
-int end_character_position;
-int count_sentences;
-int count_words;
-int clause_start_char;
-int clause_start_word;
-int new_sentence;
-static int word_emphasis = 0; // set if emphasis level 3 or 4
-static int embedded_flag = 0; // there are embedded commands to be applied to the next phoneme, used in TranslateWord2()
-
-static int prev_clause_pause=0;
-static int max_clause_pause = 0;
-int pre_pause;
-
-
-// these were previously in translator class
-char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme codes
-int n_ph_list2;
-PHONEME_LIST2 ph_list2[N_PHONEME_LIST]; // first stage of text->phonemes
-
-
-
-wchar_t option_punctlist[N_PUNCTLIST]={0};
-char ctrl_embedded = '\001'; // to allow an alternative CTRL for embedded commands
-int option_multibyte=espeakCHARS_AUTO; // 0=auto, 1=utf8, 2=8bit, 3=wchar, 4=16bit
-
-// these are overridden by defaults set in the "speak" file
-int option_linelength = 0;
-
-#define N_EMBEDDED_LIST 250
-static int embedded_ix;
-static int embedded_read;
-unsigned int embedded_list[N_EMBEDDED_LIST];
-
-// the source text of a single clause (UTF8 bytes)
-#define N_TR_SOURCE 700
-static char source[N_TR_SOURCE+40]; // extra space for embedded command & voice change info at end
-
-int n_replace_phonemes;
-REPLACE_PHONEMES replace_phonemes[N_REPLACE_PHONEMES];
-
-
-// brackets, also 0x2014 to 0x021f which don't need to be in this list
-static const unsigned short brackets[] = {
-'(',')','[',']','{','}','<','>','"','\'','`',
-0xab,0xbb, // double angle brackets
-0x300a,0x300b, // double angle brackets (ideograph)
-0};
-
-// other characters which break a word, but don't produce a pause
-static const unsigned short breaks[] = {'_', 0};
-
-// treat these characters as spaces, in addition to iswspace()
-static const wchar_t chars_space[] = {0x2500,0}; // box drawing horiz
-
-
-// Translate character codes 0xA0 to 0xFF into their unicode values
-// ISO_8859_1 is set as default
-static const unsigned short ISO_8859_1[0x60] = {
- 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, // a0
- 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, // a8
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, // b0
- 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, // b8
- 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
- 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0
- 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, // d8
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
- 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0
- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, // f8
-};
-
-static const unsigned short ISO_8859_2[0x60] = {
- 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, // a0
- 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, // a8
- 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, // b0
- 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, // b8
- 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, // c0
- 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, // c8
- 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, // d0
- 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, // d8
- 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, // e0
- 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, // e8
- 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, // f0
- 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, // f8
-};
-
-static const unsigned short ISO_8859_3[0x60] = {
- 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7, // a0
- 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b, // a8
- 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, // b0
- 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c, // b8
- 0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7, // c0
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
- 0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, // d0
- 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, // d8
- 0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7, // e0
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
- 0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, // f0
- 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, // f8
-};
-
-static const unsigned short ISO_8859_4[0x60] = {
- 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, // a0
- 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, // a8
- 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, // b0
- 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, // b8
- 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, // c0
- 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, // c8
- 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0
- 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, // d8
- 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, // e0
- 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, // e8
- 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0
- 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, // f8
-};
-
-static const unsigned short ISO_8859_5[0x60] = {
- 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, // a0 Cyrillic
- 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, // a8
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, // b0
- 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, // b8
- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, // c0
- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, // c8
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, // d0
- 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, // d8
- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, // e0
- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, // e8
- 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, // f0
- 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, // f8
-};
-
-static const unsigned short ISO_8859_7[0x60] = {
- 0x00a0, 0x2018, 0x2019, 0x00a3, 0x20ac, 0x20af, 0x00a6, 0x00a7, // a0 Greek
- 0x00a8, 0x00a9, 0x037a, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015, // a8
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, // b0
- 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, // b8
- 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, // c0
- 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, // c8
- 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, // d0
- 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, // d8
- 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, // e0
- 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, // e8
- 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, // f0
- 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000, // f8
-};
-
-static const unsigned short ISO_8859_9[0x60] = {
- 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, // a0
- 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, // a8
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, // b0
- 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, // b8
- 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
- 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0
- 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, // d8
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
- 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0
- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, // f8
-};
-
-static const unsigned short ISO_8859_14[0x60] = {
- 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, // a0 Welsh
- 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, // a8
- 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, // b0
- 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, // b8
- 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
- 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, // d0
- 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, // d8
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
- 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, // f0
- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, // f8
-};
-
-static const unsigned short KOI8_R[0x60] = {
- 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, // a0 Russian
- 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, // a8
- 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, // b0
- 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9, // b8
- 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, // c0
- 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, // c8
- 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, // d0
- 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, // d8
- 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, // e0
- 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, // e8
- 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, // f0
- 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, // f8
-};
-
-static const unsigned short ISCII[0x60] = {
- 0x0020, 0x0901, 0x0902, 0x0903, 0x0905, 0x0906, 0x0907, 0x0908, // a0
- 0x0909, 0x090a, 0x090b, 0x090e, 0x090f, 0x0910, 0x090d, 0x0912, // a8
- 0x0913, 0x0914, 0x0911, 0x0915, 0x0916, 0x0917, 0x0918, 0x0919, // b0
- 0x091a, 0x091b, 0x091c, 0x091d, 0x091e, 0x091f, 0x0920, 0x0921, // b8
- 0x0922, 0x0923, 0x0924, 0x0925, 0x0926, 0x0927, 0x0928, 0x0929, // c0
- 0x092a, 0x092b, 0x092c, 0x092d, 0x092e, 0x092f, 0x095f, 0x0930, // c8
- 0x0931, 0x0932, 0x0933, 0x0934, 0x0935, 0x0936, 0x0937, 0x0938, // d0
- 0x0939, 0x0020, 0x093e, 0x093f, 0x0940, 0x0941, 0x0942, 0x0943, // d8
- 0x0946, 0x0947, 0x0948, 0x0945, 0x094a, 0x094b, 0x094c, 0x0949, // e0
- 0x094d, 0x093c, 0x0964, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, // e8
- 0x0020, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, // f0
- 0x0037, 0x0038, 0x0039, 0x20, 0x20, 0x20, 0x20, 0x20, // f8
-};
-
-const unsigned short *charsets[N_CHARSETS] = {
- ISO_8859_1,
- ISO_8859_1,
- ISO_8859_2,
- ISO_8859_3,
- ISO_8859_4,
- ISO_8859_5,
- ISO_8859_1,
- ISO_8859_7,
- ISO_8859_1,
- ISO_8859_9,
- ISO_8859_1,
- ISO_8859_1,
- ISO_8859_1,
- ISO_8859_1,
- ISO_8859_14,
- ISO_8859_1,
- ISO_8859_1,
- ISO_8859_1,
- KOI8_R, // 18
- ISCII };
-
-// Tables of the relative lengths of vowels, depending on the
-// type of the two phonemes that follow
-// indexes are the "length_mod" value for the following phonemes
-
-// use this table if vowel is not the last in the word
-static unsigned char length_mods_en[100] = {
-/* a , t s n d z r N <- next */
- 100,120,100,105,100,110,110,100, 95, 100, /* a <- next2 */
- 105,120,105,110,125,130,135,115,125, 100, /* , */
- 105,120, 75,100, 75,105,120, 85, 75, 100, /* t */
- 105,120, 85,105, 95,115,120,100, 95, 100, /* s */
- 110,120, 95,105,100,115,120,100,100, 100, /* n */
- 105,120,100,105, 95,115,120,110, 95, 100, /* d */
- 105,120,100,105,105,122,125,110,105, 100, /* z */
- 105,120,100,105,105,122,125,110,105, 100, /* r */
- 105,120, 95,105,100,115,120,110,100, 100, /* N */
- 100,120,100,100,100,100,100,100,100, 100 }; // SPARE
-
-// as above, but for the last syllable in a word
-static unsigned char length_mods_en0[100] = {
-/* a , t s n d z r N <- next */
- 100,150,100,105,110,115,110,110,110, 100, /* a <- next2 */
- 105,150,105,110,125,135,140,115,135, 100, /* , */
- 105,150, 90,105, 90,122,135,100, 90, 100, /* t */
- 105,150,100,105,100,122,135,100,100, 100, /* s */
- 105,150,100,105,105,115,135,110,105, 100, /* n */
- 105,150,100,105,105,122,130,120,125, 100, /* d */
- 105,150,100,105,110,122,125,115,110, 100, /* z */
- 105,150,100,105,105,122,135,120,105, 100, /* r */
- 105,150,100,105,105,115,135,110,105, 100, /* N */
- 100,100,100,100,100,100,100,100,100, 100 }; // SPARE
-
-
-static unsigned char length_mods_equal[100] = {
-/* a , t s n d z r N <- next */
- 110,110,110,110,110,110,110,110,110, 110, /* a <- next2 */
- 110,110,110,110,110,110,110,110,110, 110, /* , */
- 110,110,110,110,110,110,110,110,110, 110, /* t */
- 110,110,110,110,110,110,110,110,110, 110, /* s */
- 110,110,110,110,110,110,110,110,110, 110, /* n */
- 110,110,110,110,110,110,110,110,110, 110, /* d */
- 110,110,110,110,110,110,110,110,110, 110, /* z */
- 110,110,110,110,110,110,110,110,110, 110, /* r */
- 110,110,110,110,110,110,110,110,110, 110, /* N */
- 110,110,110,110,110,110,110,110,110, 110 }; // SPARE
-
-
-static unsigned char *length_mod_tabs[6] = {
- length_mods_en,
- length_mods_en, // 1
- length_mods_en0, // 2
- length_mods_equal, // 3
- length_mods_equal, // 4
- length_mods_equal // 5
- };
-
-
-void SetLengthMods(Translator *tr, int value)
-{//==========================================
- int value2;
-
- tr->langopts.length_mods0 = tr->langopts.length_mods = length_mod_tabs[value % 100];
- if((value2 = value / 100) != 0)
- {
- tr->langopts.length_mods0 = length_mod_tabs[value2];
- }
-}
-
-
-int IsAlpha(unsigned int c)
-{//========================
-// Replacement for iswalph() which also checks for some in-word symbols
-
- if(iswalpha(c))
- return(1);
-
- if((c >= 0x901) && (c <= 0xdf7))
- {
- // Indic scripts: Devanagari, Tamil, etc
- if((c & 0x7f) < 0x64)
- return(1);
- return(0);
- }
-
- if((c >= 0x300) && (c <= 0x36f))
- return(1); // combining accents
-
- if((c >= 0x1100) && (c <= 0x11ff))
- return(1); //Korean jamo
-
- if((c > 0x3040) && (c <= 0xa700))
- return(1); // Chinese/Japanese. Should never get here, but Mac OS 10.4's iswalpha seems to be broken, so just make sure
-
- return(0);
-}
-
-static int IsDigit09(unsigned int c)
-{//=========================
- if((c >= '0') && (c <= '9'))
- return(1);
- return(0);
-}
-
-int IsDigit(unsigned int c)
-{//========================
- if(iswdigit(c))
- return(1);
-
- if((c >= 0x966) && (c <= 0x96f))
- return(1);
-
- return(0);
-}
-
-int IsSpace(unsigned int c)
-{//========================
- if(c == 0)
- return(0);
- if(wcschr(chars_space,c))
- return(1);
- return(iswspace(c));
-}
-
-
-void DeleteTranslator(Translator *tr)
-{//==================================
- if(tr->data_dictlist != NULL)
- Free(tr->data_dictlist);
- Free(tr);
-}
-
-
-int lookupwchar(const unsigned short *list,int c)
-{//==============================================
-// Is the character c in the list ?
- int ix;
-
- for(ix=0; list[ix] != 0; ix++)
- {
- if(list[ix] == c)
- return(ix+1);
- }
- return(0);
-}
-
-int IsBracket(int c)
-{//=================
- if((c >= 0x2014) && (c <= 0x201f))
- return(1);
- return(lookupwchar(brackets,c));
-}
-
-
-int utf8_out(unsigned int c, char *buf)
-{//====================================
-// write a unicode character into a buffer as utf8
-// returns the number of bytes written
- int n_bytes;
- int j;
- int shift;
- static char unsigned code[4] = {0,0xc0,0xe0,0xf0};
-
- if(c < 0x80)
- {
- buf[0] = c;
- return(1);
- }
- if(c >= 0x110000)
- {
- buf[0] = ' '; // out of range character code
- return(1);
- }
- if(c < 0x0800)
- n_bytes = 1;
- else
- if(c < 0x10000)
- n_bytes = 2;
- else
- n_bytes = 3;
-
- shift = 6*n_bytes;
- buf[0] = code[n_bytes] | (c >> shift);
- for(j=0; j<n_bytes; j++)
- {
- shift -= 6;
- buf[j+1] = 0x80 + ((c >> shift) & 0x3f);
- }
- return(n_bytes+1);
-} // end of utf8_out
-
-
-int utf8_nbytes(const char *buf)
-{//=============================
-// Returns the number of bytes for the first UTF-8 character in buf
- unsigned char c = (unsigned char)buf[0];
- if(c < 0x80)
- return(1);
- if(c < 0xe0)
- return(2);
- if(c < 0xf0)
- return(3);
- return(4);
-}
-
-
-int utf8_in2(int *c, const char *buf, int backwards)
-{//=================================================
-// Read a unicode characater from a UTF8 string
-// Returns the number of UTF8 bytes used.
-// backwards: set if we are moving backwards through the UTF8 string
- int c1;
- int n_bytes;
- int ix;
- static const unsigned char mask[4] = {0xff,0x1f,0x0f,0x07};
-
- // find the start of the next/previous character
- while((*buf & 0xc0) == 0x80)
- {
- // skip over non-initial bytes of a multi-byte utf8 character
- if(backwards)
- buf--;
- else
- buf++;
- }
-
- n_bytes = 0;
-
- if((c1 = *buf++) & 0x80)
- {
- if((c1 & 0xe0) == 0xc0)
- n_bytes = 1;
- else
- if((c1 & 0xf0) == 0xe0)
- n_bytes = 2;
- else
- if((c1 & 0xf8) == 0xf0)
- n_bytes = 3;
-
- c1 &= mask[n_bytes];
- for(ix=0; ix<n_bytes; ix++)
- {
- c1 = (c1 << 6) + (*buf++ & 0x3f);
- }
- }
- *c = c1;
- return(n_bytes+1);
-}
-
-
-int utf8_in(int *c, const char *buf)
-{//=================================
-// Read a unicode characater from a UTF8 string
-// Returns the number of UTF8 bytes used.
- return(utf8_in2(c,buf,0));
-}
-
-
-char *strchr_w(const char *s, int c)
-{//=================================
-// return NULL for any non-ascii character
- if(c >= 0x80)
- return(NULL);
- return(strchr((char *)s,c)); // (char *) is needed for Borland compiler
-}
-
-
-
-
-int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab)
-{//===========================================================================
-// word1 is terminated by space (0x20) character
-
- int length;
- int word_length;
- int ix;
- int posn;
- int pfix;
- int n_chars;
- unsigned int dictionary_flags[2];
- unsigned int dictionary_flags2[2];
- int end_type=0;
- int prefix_type=0;
- char *wordx;
- char phonemes[N_WORD_PHONEMES];
- char *ph_limit;
- char *phonemes_ptr;
- char prefix_phonemes[N_WORD_PHONEMES];
- char end_phonemes[N_WORD_PHONEMES];
- char word_copy[N_WORD_BYTES];
- char prefix_chars[N_WORD_BYTES];
- int found=0;
- int end_flags;
- char c_temp; // save a character byte while we temporarily replace it with space
- int first_char;
- int last_char = 0;
- int unpron_length;
- int add_plural_suffix = 0;
- int prefix_flags = 0;
- int confirm_prefix;
- int spell_word;
- int stress_bits;
- int emphasize_allcaps = 0;
- int wflags = wtab->flags;
- int wmark = wtab->wmark;
-
- // translate these to get pronunciations of plural 's' suffix (different forms depending on
- // the preceding letter
- static char word_zz[4] = {0,'z','z',0};
- static char word_iz[4] = {0,'i','z',0};
- static char word_ss[4] = {0,'s','s',0};
-
- dictionary_flags[0] = 0;
- dictionary_flags[1] = 0;
- dictionary_flags2[0] = 0;
- dictionary_flags2[1] = 0;
- dictionary_skipwords = 0;
-
- prefix_phonemes[0] = 0;
- end_phonemes[0] = 0;
- ph_limit = &phonemes[N_WORD_PHONEMES];
-
- // count the length of the word
- wordx = word1;
- utf8_in(&first_char,wordx);
- word_length = 0;
- while((*wordx != 0) && (*wordx != ' '))
- {
- wordx += utf8_in(&last_char,wordx);
- word_length++;
- }
-
- // try an initial lookup in the dictionary list, we may find a pronunciation specified, or
- // we may just find some flags
- spell_word = 0;
- if(option_sayas == SAYAS_KEY)
- {
- if(word_length == 1)
- spell_word = 4;
- }
-
- if(option_sayas & 0x10)
- {
- // SAYAS_CHAR, SAYAS_GYLPH, or SAYAS_SINGLE_CHAR
- spell_word = option_sayas & 0xf; // 2,3,4
- }
- else
- {
- found = LookupDictList(tr, &word1, phonemes, dictionary_flags, FLAG_ALLOW_TEXTMODE, wtab); // the original word
- if(dictionary_flags[0] & FLAG_TEXTMODE)
- {
- first_char = word1[0];
- stress_bits = dictionary_flags[0] & 0x7f;
- found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, 0, wtab); // the text replacement
- if(dictionary_flags2[0]!=0)
- {
- dictionary_flags[0] = dictionary_flags2[0];
- dictionary_flags[1] = dictionary_flags2[1];
- if(stress_bits != 0)
- {
- // keep any stress information from the original word
- dictionary_flags[0] = (dictionary_flags[0] & ~0x7f) | stress_bits;
- }
- }
- }
- else
- if((found==0) && (dictionary_flags[0] & FLAG_SKIPWORDS))
- {
- // grouped words, but no translation. Join the words with hyphens.
- wordx = word1;
- ix = 0;
- while(ix < dictionary_skipwords)
- {
- if(*wordx == ' ')
- {
- *wordx = '-';
- ix++;
- }
- wordx++;
- }
- }
-
- // if textmode, LookupDictList() replaces word1 by the new text and returns found=0
-
- if(phonemes[0] == phonSWITCH)
- {
- // change to another language in order to translate this word
- strcpy(word_phonemes,phonemes);
- return(0);
- }
-
-if((wmark > 0) && (wmark < 8))
-{
- // the stressed syllable has been specified in the text (TESTING)
- dictionary_flags[0] = (dictionary_flags[0] & ~0xf) | wmark;
-}
-
- if(!found && (dictionary_flags[0] & FLAG_ABBREV))
- {
- // the word has $abbrev flag, but no pronunciation specified. Speak as individual letters
- spell_word = 1;
- }
-
- if(!found && iswdigit(first_char))
- {
- Lookup(tr,"_0lang",word_phonemes);
- if(word_phonemes[0] == phonSWITCH)
- return(0);
-
- found = TranslateNumber(tr,word1,phonemes,dictionary_flags,wflags);
- }
-
- if(!found & ((wflags & FLAG_UPPERS) != FLAG_FIRST_UPPER))
- {
- // either all upper or all lower case
-
- if((tr->langopts.numbers & NUM_ROMAN) || ((tr->langopts.numbers & NUM_ROMAN_UC) && (wflags & FLAG_ALL_UPPER)))
- {
- if((found = TranslateRoman(tr, word1, phonemes)) != 0)
- dictionary_flags[0] |= FLAG_ABBREV; // prevent emphasis if capitals
- }
- }
-
- if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha(first_char))
- {
- if((option_tone_flags & OPTION_EMPHASIZE_ALLCAPS) && !(dictionary_flags[0] & FLAG_ABBREV))
- {
- // emphasize words which are in capitals
- emphasize_allcaps = FLAG_EMPHASIZED;
- }
- else
- if(!found && !(dictionary_flags[0] & FLAG_SKIPWORDS) && (word_length<4) && (tr->clause_lower_count > 3)
- && (tr->clause_upper_count <= tr->clause_lower_count))
- {
- // An upper case word in a lower case clause. This could be an abbreviation.
- spell_word = 1;
- }
- }
- }
-
- if(spell_word > 0)
- {
- // Speak as individual letters
- wordx = word1;
- posn = 0;
- phonemes[0] = 0;
- end_type = 0;
-
- while(*wordx != ' ')
- {
- wordx += TranslateLetter(tr,wordx, phonemes,spell_word, word_length);
- posn++;
- if(phonemes[0] == phonSWITCH)
- {
- // change to another language in order to translate this word
- strcpy(word_phonemes,phonemes);
- if(word_length > 1)
- return(FLAG_SPELLWORD); // a mixture of languages, retranslate as individual letters, separated by spaces
- return(0);
- }
- }
- SetSpellingStress(tr,phonemes,spell_word,posn);
- }
- else
- if(found == 0)
- {
- // word's pronunciation is not given in the dictionary list, although
- // dictionary_flags may have ben set there
-
- posn = 0;
- length = 999;
- wordx = word1;
-
- while(((length < 3) && (length > 0))|| (word_length > 1 && Unpronouncable(tr,wordx)))
- {
- char *p;
- // This word looks "unpronouncable", so speak letters individually until we
- // find a remainder that we can pronounce.
- emphasize_allcaps = 0;
- wordx += TranslateLetter(tr,wordx,phonemes,0, word_length);
- posn++;
- if(phonemes[0] == phonSWITCH)
- {
- // change to another language in order to translate this word
- strcpy(word_phonemes,phonemes);
- if(strcmp(&phonemes[1],"en")==0)
- return(FLAG_SPELLWORD); // _^_en must have been set in TranslateLetter(), not *_rules
- return(0);
- }
-
- p = &wordx[word_length-3]; // this looks wrong. Doesn't consider multi-byte chars.
- if(memcmp(p,"'s ",3) == 0)
- {
- // remove a 's suffix and pronounce this separately (not as an individual letter)
- add_plural_suffix = 1;
- p[0] = ' ';
- p[1] = ' ';
- last_char = p[-1];
- }
-
- length=0;
- while(wordx[length] != ' ') length++;
- if(length > 0)
- wordx[-1] = ' '; // prevent this affecting the pronunciation of the pronuncable part
- }
- SetSpellingStress(tr,phonemes,0,posn);
-
- // anything left ?
- if(*wordx != ' ')
- {
- // Translate the stem
- unpron_length = strlen(phonemes);
- end_type = TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, end_phonemes, wflags, dictionary_flags);
-
- if(phonemes[0] == phonSWITCH)
- {
- // change to another language in order to translate this word
- strcpy(word_phonemes,phonemes);
- return(0);
- }
-
- if((phonemes[0] == 0) && (end_phonemes[0] == 0))
- {
- int wc;
- // characters not recognised, speak them individually
-
- utf8_in(&wc, wordx);
- if((word_length == 1) && IsAlpha(wc))
- {
- posn = 0;
- while((*wordx != ' ') && (*wordx != 0))
- {
- wordx += TranslateLetter(tr,wordx, phonemes, 4, word_length);
- posn++;
- if(phonemes[0] == phonSWITCH)
- {
- // change to another language in order to translate this word
- strcpy(word_phonemes,phonemes);
- return(0);
- }
- }
- SetSpellingStress(tr,phonemes,spell_word,posn);
- }
- }
-
- c_temp = wordx[-1];
-
- found = 0;
- confirm_prefix = 1;
- while(end_type & SUFX_P)
- {
- // Found a standard prefix, remove it and retranslate
-
- if(confirm_prefix && !(end_type & SUFX_B))
- {
- int end2;
- char phonemes2[N_WORD_PHONEMES];
- char end_phonemes2[N_WORD_PHONEMES];
-
- // remove any standard suffix and confirm that the prefix is still recognised
- phonemes2[0] = 0;
- end2 = TranslateRules(tr, wordx, phonemes2, N_WORD_PHONEMES, end_phonemes2, wflags|FLAG_NO_PREFIX|FLAG_NO_TRACE, dictionary_flags);
- if(end2)
- {
- RemoveEnding(tr, wordx, end2, word_copy);
- end_type = TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, end_phonemes, wflags|FLAG_NO_TRACE, dictionary_flags);
- memcpy(wordx,word_copy,strlen(word_copy));
- if((end_type & SUFX_P) == 0)
- {
- // after removing the suffix, the prefix is no longer recognised.
- // Keep the suffix, but don't use the prefix
- end_type = end2;
- strcpy(phonemes,phonemes2);
- strcpy(end_phonemes,end_phonemes2);
- if(option_phonemes == 2)
- {
- DecodePhonemes(end_phonemes,end_phonemes2);
- fprintf(f_trans," suffix [%s]\n\n",end_phonemes2);
- }
- }
- confirm_prefix = 0;
- continue;
- }
- }
-
- prefix_type = end_type;
-
- if(prefix_type & SUFX_V)
- {
- tr->expect_verb = 1; // use the verb form of the word
- }
-
- wordx[-1] = c_temp;
-
- if((prefix_type & SUFX_B) == 0)
- {
- for(ix=(prefix_type & 0xf); ix>0; ix--) // num. of characters to remove
- {
- wordx++;
- while((*wordx & 0xc0) == 0x80) wordx++; // for multibyte characters
- }
- }
- else
- {
- pfix = 1;
- prefix_chars[0] = 0;
- n_chars = prefix_type & 0x3f;
-
- for(ix=0; ix < n_chars; ix++) // num. of bytes to remove
- {
- prefix_chars[pfix++] = *wordx++;
-
- if((prefix_type & SUFX_B) && (ix == (n_chars-1)))
- {
- prefix_chars[pfix-1] = 0; // discard the last character of the prefix, this is the separator character
- }
- }
- prefix_chars[pfix] = 0;
- }
- c_temp = wordx[-1];
- wordx[-1] = ' ';
- confirm_prefix = 1;
-
- if(prefix_type & SUFX_B)
- {
-// SUFX_B is used for Turkish, tr_rules contains "(Pb£
- // retranslate the prefix part
- char *wordpf;
- char prefix_phonemes2[12];
-
- strncpy0(prefix_phonemes2,end_phonemes,sizeof(prefix_phonemes2));
- wordpf = &prefix_chars[1];
- found = LookupDictList(tr, &wordpf, phonemes, dictionary_flags, SUFX_P, wtab); // without prefix
- if(found == 0)
- {
- end_type = TranslateRules(tr, wordpf, phonemes, N_WORD_PHONEMES, end_phonemes, 0, dictionary_flags);
- sprintf(prefix_phonemes,"%s%s%s",phonemes,end_phonemes,prefix_phonemes2);
- }
- prefix_flags = 1;
- }
- else
- {
- strcat(prefix_phonemes,end_phonemes);
- }
- end_phonemes[0] = 0;
-
- end_type = 0;
- found = LookupDictList(tr, &wordx, phonemes, dictionary_flags2, SUFX_P, wtab); // without prefix
- if(dictionary_flags[0]==0)
- {
- dictionary_flags[0] = dictionary_flags2[0];
- dictionary_flags[1] = dictionary_flags2[1];
- }
- else
- prefix_flags = 1;
- if(found == 0)
- {
- end_type = TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, end_phonemes, 0, dictionary_flags);
-
- if(phonemes[0] == phonSWITCH)
- {
- // change to another language in order to translate this word
- wordx[-1] = c_temp;
- strcpy(word_phonemes,phonemes);
- return(0);
- }
- }
- }
-
- if((end_type != 0) && !(end_type & SUFX_P))
- {
-char phonemes2[N_WORD_PHONEMES];
-strcpy(phonemes2,phonemes);
-
- // The word has a standard ending, re-translate without this ending
- end_flags = RemoveEnding(tr, wordx, end_type, word_copy);
-
- phonemes_ptr = &phonemes[unpron_length];
- phonemes_ptr[0] = 0;
-
- if(prefix_phonemes[0] != 0)
- {
- // lookup the stem without the prefix removed
- wordx[-1] = c_temp;
- found = LookupDictList(tr, &word1, phonemes_ptr, dictionary_flags2, end_flags, wtab); // include prefix, but not suffix
- wordx[-1] = ' ';
- if(dictionary_flags[0]==0)
- {
- dictionary_flags[0] = dictionary_flags2[0];
- dictionary_flags[1] = dictionary_flags2[1];
- }
- if(found)
- prefix_phonemes[0] = 0; // matched whole word, don't need prefix now
-
- if((found==0) && (dictionary_flags2[0] != 0))
- prefix_flags = 1;
- }
- if(found == 0)
- {
- found = LookupDictList(tr, &wordx, phonemes_ptr, dictionary_flags2, end_flags, wtab); // without prefix and suffix
- if(phonemes_ptr[0] == phonSWITCH)
- {
- // change to another language in order to translate this word
- memcpy(wordx,word_copy,strlen(word_copy));
- strcpy(word_phonemes,phonemes_ptr);
- return(0);
- }
- if(dictionary_flags[0]==0)
- {
- dictionary_flags[0] = dictionary_flags2[0];
- dictionary_flags[1] = dictionary_flags2[1];
- }
- }
- if(found == 0)
- {
- if(end_type & SUFX_Q)
- {
- // don't retranslate, use the original lookup result
- strcpy(phonemes,phonemes2);
-
- // language specific changes
- ApplySpecialAttribute(tr,phonemes,dictionary_flags[0]);
- }
- else
- {
- if(end_flags & FLAG_SUFX)
- TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, NULL,wflags | FLAG_SUFFIX_REMOVED, dictionary_flags);
- else
- TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, NULL,wflags,dictionary_flags);
-
- if(phonemes[0] == phonSWITCH)
- {
- // change to another language in order to translate this word
- strcpy(word_phonemes,phonemes);
- memcpy(wordx,word_copy,strlen(word_copy));
- wordx[-1] = c_temp;
- return(0);
- }
- }
- }
-
- if((end_type & SUFX_T) == 0)
- {
- // the default is to add the suffix and then determine the word's stress pattern
- AppendPhonemes(tr,phonemes, N_WORD_PHONEMES, end_phonemes);
- end_phonemes[0] = 0;
- }
- }
- wordx[-1] = c_temp;
- }
- }
-
- if((add_plural_suffix) || (wflags & FLAG_HAS_PLURAL))
- {
- // s or 's suffix, append [s], [z] or [Iz] depending on previous letter
- if(last_char == 'f')
- TranslateRules(tr, &word_ss[1], phonemes, N_WORD_PHONEMES, NULL, 0, NULL);
- else
- if((last_char==0) || (strchr_w("hsx",last_char)==NULL))
- TranslateRules(tr, &word_zz[1], phonemes, N_WORD_PHONEMES, NULL, 0, NULL);
- else
- TranslateRules(tr, &word_iz[1], phonemes, N_WORD_PHONEMES, NULL, 0, NULL);
- }
-
- wflags |= emphasize_allcaps;
-
-
- /* determine stress pattern for this word */
- /******************************************/
- /* NOTE: this also adds a single PAUSE if the previous word ended
- in a primary stress, and this one starts with one */
- if(prefix_flags || (strchr(prefix_phonemes,phonSTRESS_P)!=NULL))
- {
- if((tr->langopts.param[LOPT_PREFIXES]) || (prefix_type & SUFX_T))
- {
- char *p;
- // German, keep a secondary stress on the stem
- SetWordStress(tr, phonemes, &dictionary_flags[0], 3, 0);
-
- // reduce all but the first primary stress
- ix=0;
- for(p=prefix_phonemes; *p != 0; p++)
- {
- if(*p == phonSTRESS_P)
- {
- if(ix==0)
- ix=1;
- else
- *p = phonSTRESS_3;
- }
- }
- strcpy(word_phonemes,prefix_phonemes);
- strcat(word_phonemes,phonemes);
- SetWordStress(tr, word_phonemes, &dictionary_flags[0], -1, 0);
- }
- else
- {
- // stress position affects the whole word, including prefix
- strcpy(word_phonemes,prefix_phonemes);
- strcat(word_phonemes,phonemes);
- SetWordStress(tr, word_phonemes, &dictionary_flags[0], -1, tr->prev_last_stress);
- }
- }
- else
- {
- if(prefix_phonemes[0] == 0)
- SetWordStress(tr, phonemes, &dictionary_flags[0], -1, tr->prev_last_stress);
- else
- SetWordStress(tr, phonemes, &dictionary_flags[0], -1, 0);
- strcpy(word_phonemes,prefix_phonemes);
- strcat(word_phonemes,phonemes);
- }
-
- if(end_phonemes[0] != 0)
- {
- // a suffix had the SUFX_T option set, add the suffix after the stress pattern has been determined
- strcat(word_phonemes,end_phonemes);
- }
-
- if(wflags & FLAG_LAST_WORD)
- {
- // don't use $brk pause before the last word of a sentence
- // (but allow it for emphasis, see below
- dictionary_flags[0] &= ~FLAG_PAUSE1;
- }
-
- if(wflags & FLAG_EMPHASIZED2)
- {
- // A word is indicated in the source text as stressed
- // Give it stress level 6 (for the intonation module)
- ChangeWordStress(tr,word_phonemes,6);
-
- if(wflags & FLAG_EMPHASIZED)
- dictionary_flags[0] |= FLAG_PAUSE1; // precede by short pause
- }
- else
- if(wtab[dictionary_skipwords].flags & FLAG_LAST_WORD)
- {
- // the word has attribute to stress or unstress when at end of clause
- if(dictionary_flags[0] & (FLAG_STRESS_END | FLAG_STRESS_END2))
- ChangeWordStress(tr,word_phonemes,4);
- else
- if(dictionary_flags[0] & FLAG_UNSTRESS_END)
- ChangeWordStress(tr,word_phonemes,3);
- }
-
- // dictionary flags for this word give a clue about which alternative pronunciations of
- // following words to use.
- if(end_type & SUFX_F)
- {
- // expect a verb form, with or without -s suffix
- tr->expect_verb = 2;
- tr->expect_verb_s = 2;
- }
-
- if(dictionary_flags[1] & FLAG_PASTF)
- {
- /* expect perfect tense in next two words */
- tr->expect_past = 3;
- tr->expect_verb = 0;
- tr->expect_noun = 0;
- }
- else
- if(dictionary_flags[1] & FLAG_VERBF)
- {
- /* expect a verb in the next word */
- tr->expect_verb = 2;
- tr->expect_verb_s = 0; /* verb won't have -s suffix */
- tr->expect_noun = 0;
- }
- else
- if(dictionary_flags[1] & FLAG_VERBSF)
- {
- // expect a verb, must have a -s suffix
- tr->expect_verb = 0;
- tr->expect_verb_s = 2;
- tr->expect_past = 0;
- tr->expect_noun = 0;
- }
- else
- if(dictionary_flags[1] & FLAG_NOUNF)
- {
- /* not expecting a verb next */
- tr->expect_noun = 2;
- tr->expect_verb = 0;
- tr->expect_verb_s = 0;
- tr->expect_past = 0;
- }
-
- if((wordx[0] != 0) && (!(dictionary_flags[1] & FLAG_VERB_EXT)))
- {
- if(tr->expect_verb > 0)
- tr->expect_verb--;
-
- if(tr->expect_verb_s > 0)
- tr->expect_verb_s--;
-
- if(tr->expect_noun >0)
- tr->expect_noun--;
-
- if(tr->expect_past > 0)
- tr->expect_past--;
- }
-
- if((word_length == 1) && iswalpha(first_char) && (first_char != 'i'))
- {
-// English Specific !!!!
- // any single letter before a dot is an abbreviation, except 'I'
- dictionary_flags[0] |= FLAG_DOT;
- }
-
- if((tr->langopts.param[LOPT_ALT] & 2) && ((dictionary_flags[0] & (FLAG_ALT_TRANS | FLAG_ALT2_TRANS)) != 0))
- {
- ApplySpecialAttribute2(tr,word_phonemes,dictionary_flags[0]);
- }
-
- return(dictionary_flags[0]);
-} // end of TranslateWord
-
-
-
-static void SetPlist2(PHONEME_LIST2 *p, unsigned char phcode)
-{//==========================================================
- p->phcode = phcode;
- p->stress = 0;
- p->tone_number = 0;
- p->synthflags = embedded_flag;
- p->sourceix = 0;
- embedded_flag = 0;
-}
-
-static int CountSyllables(unsigned char *phonemes)
-{//===============================================
- int count = 0;
- int phon;
- while((phon = *phonemes++) != 0)
- {
- if(phoneme_tab[phon]->type == phVOWEL)
- count++;
- }
- return(count);
-}
-
-
-int SetTranslator2(const char *new_language)
-{//=========================================
-// Set translator2 to a second language
- int new_phoneme_tab;
-
- if((new_phoneme_tab = SelectPhonemeTableName(new_language)) >= 0)
- {
- if((translator2 != NULL) && (strcmp(new_language,translator2_language) != 0))
- {
- // we already have an alternative translator, but not for the required language, delete it
- DeleteTranslator(translator2);
- translator2 = NULL;
- }
-
- if(translator2 == NULL)
- {
- translator2 = SelectTranslator(new_language);
- strcpy(translator2_language,new_language);
-
- if(LoadDictionary(translator2, new_language, 0) != 0)
- {
- SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
- new_phoneme_tab = -1;
- translator2_language[0] = 0;
- }
- }
- }
- return(new_phoneme_tab);
-} // end of SetTranslator2
-
-
-
-static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pause, int next_pause)
-{//=================================================================================================
- int flags=0;
- int stress;
- int next_stress;
- int next_tone=0;
- unsigned char *p;
- int srcix;
- int embedded_cmd;
- int value;
- int found_dict_flag;
- unsigned char ph_code;
- PHONEME_LIST2 *plist2;
- PHONEME_TAB *ph;
- int max_stress;
- int max_stress_ix=0;
- int prev_vowel = -1;
- int pitch_raised = 0;
- int switch_phonemes = -1;
- int first_phoneme = 1;
- int source_ix;
- int len;
- int ix;
- int sylimit; // max. number of syllables in a word to be combined with a preceding preposition
- const char *new_language;
- unsigned char bad_phoneme[4];
- int word_flags;
- int word_copy_len;
- char word_copy[N_WORD_BYTES+1];
-
- len = wtab->length;
- if(len > 31) len = 31;
- source_ix = (wtab->sourceix & 0x7ff) | (len << 11); // bits 0-10 sourceix, bits 11-15 word length
-
- word_flags = wtab[0].flags;
- if(word_flags & FLAG_EMBEDDED)
- {
- embedded_flag = SFLAG_EMBEDDED;
-
- do
- {
- embedded_cmd = embedded_list[embedded_read++];
- value = embedded_cmd >> 8;
-
- switch(embedded_cmd & 0x1f)
- {
- case EMBED_Y:
- option_sayas = value;
- break;
-
- case EMBED_F:
- option_emphasis = value;
- break;
-
- case EMBED_B:
- // break command
- if(value == 0)
- pre_pause = 0; // break=none
- else
- pre_pause += value;
- break;
- }
- } while((embedded_cmd & 0x80) == 0);
- }
-
- if(word[0] == 0)
- {
- // nothing to translate
- word_phonemes[0] = 0;
- return(0);
- }
-
- // after a $pause word attribute, ignore a $pause attribute on the next two words
- if(tr->prepause_timeout > 0)
- tr->prepause_timeout--;
-
- if((option_sayas & 0xf0) == 0x10)
- {
- if(!(word_flags & FLAG_FIRST_WORD))
- {
- // SAYAS_CHARS, SAYAS_GLYPHS, or SAYAS_SINGLECHARS. Pause between each word.
- pre_pause += 4;
- }
- }
-
- if(word_flags & FLAG_FIRST_UPPER)
- {
- if((option_capitals > 2) && (embedded_ix < N_EMBEDDED_LIST-6))
- {
- // indicate capital letter by raising pitch
- if(embedded_flag)
- embedded_list[embedded_ix-1] &= ~0x80; // already embedded command before this word, remove terminator
- if((pitch_raised = option_capitals) == 3)
- pitch_raised = 20; // default pitch raise for capitals
- embedded_list[embedded_ix++] = EMBED_P+0x40+0x80 + (pitch_raised << 8); // raise pitch
- embedded_flag = SFLAG_EMBEDDED;
- }
- }
-
- p = (unsigned char *)word_phonemes;
- if(word_flags & FLAG_PHONEMES)
- {
- // The input is in phoneme mnemonics, not language text
- int c1;
- char lang_name[12];
-
- if(memcmp(word,"_^_",3)==0)
- {
- // switch languages
- word+=3;
- for(ix=0;;)
- {
- c1 = *word++;
- if((c1==' ') || (c1==0))
- break;
- lang_name[ix++] = tolower(c1);
- }
- lang_name[ix] = 0;
-
- if((ix = LookupPhonemeTable(lang_name)) > 0)
- {
- SelectPhonemeTable(ix);
- word_phonemes[0] = phonSWITCH;
- word_phonemes[1] = ix;
- word_phonemes[2] = 0;
- }
- }
- else
- {
- EncodePhonemes(word,word_phonemes,bad_phoneme);
- }
- flags = FLAG_FOUND;
- }
- else
- {
- int c2;
- ix = 0;
- while(((c2 = word_copy[ix] = word[ix]) != ' ') && (c2 != 0) && (ix < N_WORD_BYTES)) ix++;
- word_copy_len = ix;
-
- flags = TranslateWord(translator, word, next_pause, wtab);
-
- if(flags & FLAG_SPELLWORD)
- {
- // re-translate the word as individual letters, separated by spaces
- memcpy(word, word_copy, word_copy_len);
- return(flags);
- }
-
- if((flags & FLAG_ALT2_TRANS) && ((sylimit = tr->langopts.param[LOPT_COMBINE_WORDS]) > 0))
- {
- char *p2;
- int ok = 1;
- int flags2;
- int c_word2;
- char ph_buf[N_WORD_PHONEMES];
-
- // LANG=cs,sk
- // combine a preposition with the following word
- p2 = word;
- while(*p2 != ' ') p2++;
-
- utf8_in(&c_word2, p2+1); // first character of the next word;
- if(!iswalpha(c_word2))
- {
- ok =0;
- }
-
- if(ok != 0)
- {
- if(sylimit & 0x100)
- {
- // only if the second word has $alt attribute
- strcpy(ph_buf,word_phonemes);
- flags2 = TranslateWord(translator, p2+1, 0, wtab+1);
- if((flags2 & FLAG_ALT_TRANS) == 0)
- {
- ok = 0;
- strcpy(word_phonemes,ph_buf);
- }
- }
-
- if((sylimit & 0x200) && ((wtab+1)->flags & FLAG_LAST_WORD))
- {
- // not if the next word is end-of-sentence
- ok = 0;
- }
- }
-
- if(ok)
- {
- *p2 = '-'; // replace next space by hyphen
- flags = TranslateWord(translator, word, next_pause, wtab); // translate the combined word
- if(CountSyllables(p) > (sylimit & 0xf))
- {
- // revert to separate words
- *p2 = ' ';
- flags = TranslateWord(translator, word, next_pause, wtab);
- }
- else
- {
- flags |= FLAG_SKIPWORDS;
- dictionary_skipwords = 1;
- }
- }
- }
-
- if(p[0] == phonSWITCH)
- {
- // this word uses a different language
- memcpy(word, word_copy, word_copy_len);
-
- new_language = (char *)(&p[1]);
- if(new_language[0]==0)
- new_language = "en";
-
- switch_phonemes = SetTranslator2(new_language);
-
- if(switch_phonemes >= 0)
- {
- // re-translate the word using the new translator
- flags = TranslateWord(translator2, word, next_pause, wtab);
-// strcpy((char *)p,translator2->word_phonemes);
- if(p[0] == phonSWITCH)
- {
- // the second translator doesn't want to process this word
- switch_phonemes = -1;
- }
- }
- if(switch_phonemes < 0)
- {
- // language code is not recognised or 2nd translator won't translate it
- p[0] = phonSCHWA; // just say something
- p[1] = phonSCHWA;
- p[2] = 0;
- }
- }
-
- if(!(word_flags & FLAG_HYPHEN))
- {
- if(flags & FLAG_PAUSE1)
- {
- if(pre_pause < 1)
- pre_pause = 1;
- }
- if((flags & FLAG_PREPAUSE) && ((word_flags && FLAG_LAST_WORD) == 0) && (tr->prepause_timeout == 0))
- {
- // the word is marked in the dictionary list with $pause
- if(pre_pause < 4) pre_pause = 4;
- tr->prepause_timeout = 3;
- }
- }
-
- if((option_emphasis >= 3) && (pre_pause < 1))
- pre_pause = 1;
- }
-
- plist2 = &ph_list2[n_ph_list2];
- stress = 0;
- next_stress = 0;
- srcix = 0;
- max_stress = -1;
-
- found_dict_flag = 0;
- if(flags & FLAG_FOUND)
- found_dict_flag = SFLAG_DICTIONARY;
-
- while((pre_pause > 0) && (n_ph_list2 < N_PHONEME_LIST-4))
- {
- // add pause phonemes here. Either because of punctuation (brackets or quotes) in the
- // text, or because the word is marked in the dictionary lookup as a conjunction
- if(pre_pause > 1)
- {
- SetPlist2(&ph_list2[n_ph_list2++],phonPAUSE);
- pre_pause -= 2;
- }
- else
- {
- SetPlist2(&ph_list2[n_ph_list2++],phonPAUSE_NOLINK);
- pre_pause--;
- }
- tr->end_stressed_vowel = 0; // forget about the previous word
- tr->prev_dict_flags = 0;
- }
-
- if((option_capitals==1) && (word_flags & FLAG_FIRST_UPPER))
- {
- SetPlist2(&ph_list2[n_ph_list2++],phonPAUSE_SHORT);
- SetPlist2(&ph_list2[n_ph_list2++],phonCAPITAL);
- if((word_flags & FLAG_ALL_UPPER) && IsAlpha(word[1]))
- {
- // word > 1 letter and all capitals
- SetPlist2(&ph_list2[n_ph_list2++],phonPAUSE_SHORT);
- SetPlist2(&ph_list2[n_ph_list2++],phonCAPITAL);
- }
- }
-
- if(switch_phonemes >= 0)
- {
- // this word uses a different phoneme table
- SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
- ph_list2[n_ph_list2++].tone_number = switch_phonemes; // temporary phoneme table number
- }
-
- // remove initial pause from a word if it follows a hyphen
- if((word_flags & FLAG_HYPHEN) && (phoneme_tab[*p]->type == phPAUSE))
- p++;
-
- while(((ph_code = *p++) != 0) && (n_ph_list2 < N_PHONEME_LIST-4))
- {
- if(ph_code == 255)
- continue; // unknown phoneme
-
- // Add the phonemes to the first stage phoneme list (ph_list2)
- ph = phoneme_tab[ph_code];
-
- if(ph_code == phonSWITCH)
- {
- ph_list2[n_ph_list2].phcode = ph_code;
- ph_list2[n_ph_list2].sourceix = 0;
- ph_list2[n_ph_list2].synthflags = embedded_flag;
- ph_list2[n_ph_list2++].tone_number = *p++;
- }
- else
- if(ph->type == phSTRESS)
- {
- // don't add stress phonemes codes to the list, but give their stress
- // value to the next vowel phoneme
- // std_length is used to hold stress number or (if >10) a tone number for a tone language
- if(ph->spect == 0)
- next_stress = ph->std_length;
- else
- {
- // for tone languages, the tone number for a syllable follows the vowel
- if(prev_vowel >= 0)
- {
- ph_list2[prev_vowel].tone_number = ph_code;
- }
- else
- {
- next_tone = ph_code; // no previous vowel, apply to the next vowel
- }
- }
- }
- else
- if(ph_code == phonSYLLABIC)
- {
- // mark the previous phoneme as a syllabic consonant
- prev_vowel = n_ph_list2-1;
- ph_list2[prev_vowel].synthflags |= SFLAG_SYLLABLE;
- ph_list2[prev_vowel].stress = next_stress;
- }
- else
- if(ph_code == phonLENGTHEN)
- {
- ph_list2[n_ph_list2-1].synthflags |= SFLAG_LENGTHEN;
- }
- else
- if(ph_code == phonEND_WORD)
- {
- // a || symbol in a phoneme string was used to indicate a word boundary
- // Don't add this phoneme to the list, but make sure the next phoneme has
- // a newword indication
- srcix = source_ix+1;
- }
- else
- if(ph_code == phonX1)
- {
- // a language specific action
- if(tr->langopts.param[LOPT_IT_DOUBLING])
- {
- flags |= FLAG_DOUBLING;
- }
- }
- else
- {
- ph_list2[n_ph_list2].phcode = ph_code;
- ph_list2[n_ph_list2].tone_number = 0;
- ph_list2[n_ph_list2].synthflags = embedded_flag | found_dict_flag;
- embedded_flag = 0;
- ph_list2[n_ph_list2].sourceix = srcix;
- srcix = 0;
-
- if(ph->type == phVOWEL)
- {
- stress = next_stress;
- next_stress = 0;
-
- if((prev_vowel >= 0) && (n_ph_list2-1) != prev_vowel)
- ph_list2[n_ph_list2-1].stress = stress; // set stress for previous consonant
-
- ph_list2[n_ph_list2].synthflags |= SFLAG_SYLLABLE;
- prev_vowel = n_ph_list2;
-
- if(stress > max_stress)
- {
- max_stress = stress;
- max_stress_ix = n_ph_list2;
- }
- if(next_tone != 0)
- {
- ph_list2[n_ph_list2].tone_number = next_tone;
- next_tone=0;
- }
- }
- else
- {
- if(first_phoneme && tr->langopts.param[LOPT_IT_DOUBLING])
- {
- if(((tr->prev_dict_flags & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) ||
- (tr->end_stressed_vowel && (tr->langopts.param[LOPT_IT_DOUBLING] & 2)))
- {
- // italian, double the initial consonant if the previous word ends with a
- // stressed vowel, or is marked with a flag
- ph_list2[n_ph_list2].synthflags |= SFLAG_LENGTHEN;
- }
- }
- }
-
- ph_list2[n_ph_list2].stress = stress;
- n_ph_list2++;
- first_phoneme = 0;
- }
- }
- // don't set new-word if there is a hyphen before it
- if((word_flags & FLAG_HYPHEN) == 0)
- {
- plist2->sourceix = source_ix;
- }
-
- tr->end_stressed_vowel = 0;
- if((stress >= 4) && (phoneme_tab[ph_list2[n_ph_list2-1].phcode]->type == phVOWEL))
- {
- tr->end_stressed_vowel = 1; // word ends with a stressed vowel
- }
-
- if(switch_phonemes >= 0)
- {
- // this word uses a different phoneme table, now switch back
- SelectPhonemeTable(voice->phoneme_tab_ix);
- SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
- ph_list2[n_ph_list2++].tone_number = voice->phoneme_tab_ix; // original phoneme table number
- }
-
-
- if(pitch_raised > 0)
- {
- embedded_list[embedded_ix++] = EMBED_P+0x60+0x80 + (pitch_raised << 8); // lower pitch
- SetPlist2(&ph_list2[n_ph_list2],phonPAUSE_SHORT);
- ph_list2[n_ph_list2++].synthflags = SFLAG_EMBEDDED;
- }
-
- if(flags & FLAG_STRESS_END2)
- {
- // this's word's stress could be increased later
- ph_list2[max_stress_ix].synthflags |= SFLAG_PROMOTE_STRESS;
- }
-
- tr->prev_dict_flags = flags;
- return(flags);
-} // end of TranslateWord2
-
-
-
-static int EmbeddedCommand(unsigned int *source_index)
-{//===================================================
- // An embedded command to change the pitch, volume, etc.
- // returns number of commands added to embedded_list
-
- // pitch,speed,amplitude,expression,reverb,tone,voice,sayas
- const char *commands = "PSARHTIVYMUBF";
- int value = -1;
- int sign = 0;
- unsigned char c;
- char *p;
- int cmd;
-
- c = source[*source_index];
- if(c == '+')
- {
- sign = 0x40;
- (*source_index)++;
- }
- else
- if(c == '-')
- {
- sign = 0x60;
- (*source_index)++;
- }
-
- if(isdigit(source[*source_index]))
- {
- value = atoi(&source[*source_index]);
- while(isdigit(source[*source_index]))
- source_index++;
- }
-
- c = source[(*source_index)++];
- if(embedded_ix >= (N_EMBEDDED_LIST - 2))
- return(0); // list is full
-
- if((p = strchr_w(commands,c)) == NULL)
- return(0);
- cmd = (p - commands)+1;
- if(value == -1)
- {
- value = embedded_default[cmd];
- sign = 0;
- }
-
- if(cmd == EMBED_Y)
- {
- option_sayas2 = value;
- count_sayas_digits = 0;
- }
- if(cmd == EMBED_F)
- {
- if(value >= 3)
- word_emphasis = FLAG_EMPHASIZED;
- else
- word_emphasis = 0;
- }
-
- embedded_list[embedded_ix++] = cmd + sign + (value << 8);
- return(1);
-} // end of EmbeddedCommand
-
-
-
-static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in, int *insert)
-{//=========================================================================================
- int ix;
- unsigned int word;
- unsigned int new_c, c2, c_lower;
- int upper_case = 0;
- static int ignore_next = 0;
- const unsigned int *replace_chars;
-
- if(ignore_next)
- {
- ignore_next = 0;
- return(8);
- }
- if(c == 0) return(0);
-
- if((replace_chars = tr->langopts.replace_chars) == NULL)
- return(c);
-
- // there is a list of character codes to be substituted with alternative codes
-
- if(iswupper(c_lower = c))
- {
- c_lower = towlower(c);
- upper_case = 1;
- }
-
- new_c = 0;
- for(ix=0; (word = replace_chars[ix]) != 0; ix+=2)
- {
- if(c_lower == (word & 0xffff))
- {
- if((word >> 16) == 0)
- {
- new_c = replace_chars[ix+1];
- break;
- }
- if((word >> 16) == (unsigned int)towlower(next_in))
- {
- new_c = replace_chars[ix+1];
- ignore_next = 1;
- break;
- }
- }
- }
-
- if(new_c == 0)
- return(c); // no substitution
-
- if(new_c & 0xffe00000)
- {
- // there is a second character to be inserted
- // don't convert the case of the second character unless the next letter is also upper case
- c2 = new_c >> 16;
- if(upper_case && iswupper(next_in))
- c2 = towupper(c2);
- *insert = c2;
- new_c &= 0xffff;
- }
-
- if(upper_case)
- new_c = towupper(new_c);
- return(new_c);
-
-}
-
-
-static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c, unsigned int next_in, int *insert)
-{//================================================================================================================
- // To allow language specific examination and replacement of characters
-
- int code;
- int initial;
- int medial;
- int final;
- int next2;
-
- static const unsigned char hangul_compatibility[0x34] = {
- 0, 0x00,0x01,0xaa,0x02,0xac,0xad,0x03,
- 0x04,0x05,0xb0,0xb1,0xb2,0xb3,0xb4,0xb4,
- 0xb6,0x06,0x07,0x08,0xb9,0x09,0x0a,0xbc,
- 0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x61,
- 0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,
- 0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,
- 0x72,0x73,0x74,0x75 };
-
- switch(tr->translator_name)
- {
- case L('a','f'):
- // look for 'n and replace by a special character (unicode: schwa)
-
- utf8_in(&next2, &ptr[1]);
-
- if(!iswalpha(prev_in))
- {
- if((c == '\'') && (next_in == 'n') && IsSpace(next2))
- {
- // n preceded by either apostrophe or U2019 "right single quotation mark"
- ptr[0] = ' '; // delete the n
- return(0x0259); // replace ' by unicode schwa character
- }
- }
- break;
-
- case L('k','o'):
- if(((code = c - 0xac00) >= 0) && (c <= 0xd7af))
- {
- // break a syllable hangul into 2 or 3 individual jamo
- initial = (code/28)/21;
- medial = (code/28) % 21;
- final = code % 28;
-
- if(initial == 11)
- {
- // null initial
- c = medial + 0x1161;
- if(final > 0)
- *insert = final + 0x11a7;
- }
- else
- {
- // extact the initial and insert the remainder with a null initial
- c = initial + 0x1100;
- *insert = (11*28*21) + (medial*28) + final + 0xac00;
- }
- return(c);
- }
- else
- if(((code = c - 0x3130) >= 0) && (code < 0x34))
- {
- // Hangul compatibility jamo
- return(hangul_compatibility[code] + 0x1100);
- }
- break;
- }
- return(SubstituteChar(tr,c,next_in,insert));
-}
-
-
-void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone_out, char **voice_change)
-{//==========================================================================================================
- int ix;
- int c;
- int cc;
- unsigned int source_index=0;
- unsigned int prev_source_index=0;
- int prev_in;
- int prev_out=' ';
- int prev_out2;
- int prev_in2=0;
- int next_in;
- int char_inserted=0;
- int clause_pause;
- int pre_pause_add=0;
- int word_mark = 0;
- int all_upper_case=FLAG_ALL_UPPER;
- int finished;
- int single_quoted;
- int phoneme_mode = 0;
- int dict_flags = 0; // returned from dictionary lookup
- int word_flags; // set here
- int next_word_flags;
- int embedded_count = 0;
- int letter_count = 0;
- int space_inserted = 0;
- int syllable_marked = 0;
- int decimal_sep_count = 0;
- char *word;
- char *p;
- int j, k;
- int n_digits;
- int charix_top=0;
-
- short charix[N_TR_SOURCE+4];
- WORD_TAB words[N_CLAUSE_WORDS];
- int word_count=0; // index into words
-
- char sbuf[N_TR_SOURCE];
-
- int terminator;
- int tone;
- int tone2;
-
- p_textinput = (unsigned char *)vp_input;
- p_wchar_input = (wchar_t *)vp_input;
-
- embedded_ix = 0;
- embedded_read = 0;
- option_phoneme_input &= ~2; // clear bit 1 (temporary indication)
- pre_pause = 0;
-
- if((clause_start_char = count_characters) < 0)
- clause_start_char = 0;
- clause_start_word = count_words + 1;
-
- for(ix=0; ix<N_TR_SOURCE; ix++)
- charix[ix] = 0;
- terminator = ReadClause(tr, f_text, source, charix, &charix_top, N_TR_SOURCE, &tone2);
-
- charix[charix_top+1] = 0;
- charix[charix_top+2] = 0x7fff;
- charix[charix_top+3] = 0;
-
- clause_pause = (terminator & 0xfff) * 10; // mS
- tone = (terminator >> 12) & 0xf;
- if(tone2 != 0)
- {
- // override the tone type
- tone = tone2;
- }
-
- for(p=source; *p != 0; p++)
- {
- if(!isspace2(*p))
- {
- break;
- }
- }
- if(*p == 0)
- {
- // No characters except spaces. This is not a sentence.
- // Don't add this pause, just make up the previous pause to this value;
- clause_pause -= max_clause_pause;
- if(clause_pause < 0)
- clause_pause = 0;
-
- terminator &= ~CLAUSE_BIT_SENTENCE; // clear sentence bit
- max_clause_pause += clause_pause;
- }
- else
- {
- max_clause_pause = clause_pause;
- }
-
- if(new_sentence)
- {
- count_sentences++;
- if(skip_sentences > 0)
- {
- skip_sentences--;
- if(skip_sentences == 0)
- skipping_text = 0;
- }
- }
-
- memset(&ph_list2[0],0,sizeof(ph_list2[0]));
- ph_list2[0].phcode = phonPAUSE_SHORT;
-
- n_ph_list2 = 1;
- tr->prev_last_stress = 0;
- tr->prepause_timeout = 0;
- tr->expect_verb=0;
- tr->expect_noun=0;
- tr->expect_past=0;
- tr->expect_verb_s=0;
- tr->phonemes_repeat_count = 0;
- tr->end_stressed_vowel=0;
- tr->prev_dict_flags = 0;
-
- word_count = 0;
- single_quoted = 0;
- word_flags = 0;
- next_word_flags = 0;
-
- sbuf[0] = 0;
- sbuf[1] = ' ';
- sbuf[2] = ' ';
- ix = 3;
- prev_in = ' ';
-
- words[0].start = ix;
- words[0].flags = 0;
- finished = 0;
-
- for(j=0; charix[j]==0; j++);
- words[0].sourceix = charix[j];
- k = 0;
- while(charix[j] != 0)
- {
- // count the number of characters (excluding multibyte continuation bytes)
- if(charix[j++] != -1)
- k++;
- }
- words[0].length = k;
-
- while(!finished && (ix < (int)sizeof(sbuf))&& (n_ph_list2 < N_PHONEME_LIST-4))
- {
- prev_out2 = prev_out;
- utf8_in2(&prev_out,&sbuf[ix-1],1); // prev_out = sbuf[ix-1];
-
- if(tr->langopts.tone_numbers && IsDigit09(prev_out) && IsAlpha(prev_out2))
- {
- // tone numbers can be part of a word, consider them as alphabetic
- prev_out = 'a';
- }
-
- if(prev_in2 != 0)
- {
- prev_in = prev_in2;
- prev_in2 = 0;
- }
- else
- if(source_index > 0)
- {
- utf8_in2(&prev_in,&source[source_index-1],1); // prev_in = source[source_index-1];
- }
-
- prev_source_index = source_index;
-
- if(char_inserted)
- {
- c = char_inserted;
- char_inserted = 0;
- }
- else
- {
- source_index += utf8_in(&cc,&source[source_index]); // cc = source[source_index++];
- c = cc;
- }
- utf8_in(&next_in,&source[source_index]);
-
- if((c == CTRL_EMBEDDED) || (c == ctrl_embedded))
- {
- // start of embedded command in the text
- int srcix = source_index-1;
-
- if(prev_in != ' ')
- {
- c = ' ';
- prev_in2 = c;
- source_index--;
- }
- else
- {
- embedded_count += EmbeddedCommand(&source_index);
- prev_in2 = prev_in;
- // replace the embedded command by spaces
- memset(&source[srcix],' ',source_index-srcix);
- source_index = srcix;
- continue;
- }
- }
-
- if(option_sayas2 == SAYAS_KEY)
- {
- if(((c == '_') || (c == '-')) && IsAlpha(prev_in))
- {
- c = ' ';
- }
- c = towlower2(c);
- }
-
- if(phoneme_mode)
- {
- all_upper_case = FLAG_PHONEMES;
-
- if((c == ']') && (next_in == ']'))
- {
- phoneme_mode = 0;
- source_index++;
- c = ' ';
- }
- }
- else
- if((option_sayas2 & 0xf0) == SAYAS_DIGITS)
- {
- if(iswdigit(c))
- {
- count_sayas_digits++;
- if(count_sayas_digits > (option_sayas2 & 0xf))
- {
- // break after the specified number of digits
- c = ' ';
- space_inserted = 1;
- count_sayas_digits = 0;
- }
- }
- else
- {
- count_sayas_digits = 0;
- if(iswdigit(prev_out))
- {
- c = ' ';
- space_inserted = 1;
- }
- }
- }
- else
- if((option_sayas2 & 0x30) == 0)
- {
- // speak as words
-
-#ifdef deleted
-if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(prev_out))
-{
- // TESTING, explicit indication of stressed syllable by /2 after the word
- word_mark = next_in-'0';
- source_index++;
- c = ' ';
-}
-#endif
- if((c == 0x92) || (c == 0xb4) || (c == 0x2019) || (c == 0x2032))
- c = '\''; // 'microsoft' quote or sexed closing single quote, or prime - possibly used as apostrophe
-
- if((c == '?') && IsAlpha(prev_out) && IsAlpha(next_in))
- {
- // ? between two letters may be a smart-quote replaced by ?
- c = '\'';
- }
-
- if(c == CHAR_EMPHASIS)
- {
- // this character is a marker that the previous word is the focus of the clause
- c = ' ';
- word_flags |= FLAG_FOCUS;
- }
-
- c = TranslateChar(tr, &source[source_index], prev_in,c, next_in, &char_inserted); // optional language specific function
- if(c == 8)
- continue; // ignore this character
-
- if(char_inserted)
- next_in = char_inserted;
-
- // allow certain punctuation within a word (usually only apostrophe)
- if(!IsAlpha(c) && !IsSpace(c) && (wcschr(tr->punct_within_word,c) == 0))
- {
- if(IsAlpha(prev_out))
- {
- if(tr->langopts.tone_numbers && IsDigit09(c) && !IsDigit09(next_in))
- {
- // allow a tone number as part of the word
- }
- else
- {
- c = ' '; // ensure we have an end-of-word terminator
- space_inserted = 1;
- }
- }
- }
-
- if(iswdigit(prev_out))
- {
- if(!iswdigit(c) && (c != '.') && (c != ','))
- {
- c = ' '; // terminate digit string with a space
- space_inserted = 1;
- }
- }
- else
- {
- if(prev_in != ',')
- {
- decimal_sep_count = 0;
- }
- }
-
- if((c == '[') && (next_in == '[') && option_phoneme_input)
- {
- phoneme_mode = FLAG_PHONEMES;
- source_index++;
- continue;
- }
-
- if(c == 0)
- {
- finished = 1;
- c = ' ';
- }
- else
- if(IsAlpha(c))
- {
- if(!IsAlpha(prev_out) || (tr->langopts.ideographs && ((c > 0x3040) || (prev_out > 0x3040))))
- {
- if(wcschr(tr->punct_within_word,prev_out) == 0)
- letter_count = 0; // don't reset count for an apostrophy within a word
-
- if((prev_out != ' ') && (wcschr(tr->punct_within_word,prev_out) == 0))
- {
- // start of word, insert space if not one there already
- c = ' ';
- space_inserted = 1;
- }
- else
- {
- if(iswupper(c))
- word_flags |= FLAG_FIRST_UPPER;
-
- if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in))
- {
- // word, following a number, but with a space between
- // Add an extra space, to distinguish "2 a" from "2a"
- sbuf[ix++] = ' ';
- words[word_count].start++;
- }
- }
- }
-
- letter_count++;
-
- if(iswupper(c))
- {
- c = towlower2(c);
-
- if((j = tr->langopts.param[LOPT_CAPS_IN_WORD]) > 0)
- {
- if((j == 2) && (syllable_marked == 0))
- {
- char_inserted = c;
- c = 0x2c8; // stress marker
- syllable_marked = 1;
- }
- }
- else
- {
- if(iswlower(prev_in))
- {
- c = ' '; // lower case followed by upper case, treat as new word
- space_inserted = 1;
- prev_in2 = c;
- }
- else
- if((c != ' ') && iswupper(prev_in) && iswlower(next_in) &&
- (memcmp(&source[source_index],"s ",2) != 0)) // ENGLISH specific plural
- {
- c = ' '; // change from upper to lower case, start new word at the last uppercase
- space_inserted = 1;
- prev_in2 = c;
- next_word_flags |= FLAG_NOSPACE;
- }
- }
- }
- else
- {
- if((all_upper_case) && (letter_count > 2))
- {
- if((c == 's') && (next_in==' '))
- {
- c = ' ';
- all_upper_case |= FLAG_HAS_PLURAL;
-
- if(sbuf[ix-1] == '\'')
- sbuf[ix-1] = ' ';
- }
- else
- all_upper_case = 0; // current word contains lower case letters, not "'s"
- }
- else
- all_upper_case = 0;
- }
- }
- else
- if(c=='-')
- {
- if(IsAlpha(prev_in) && IsAlpha(next_in))
- {
- // '-' between two letters is a hyphen, treat as a space
- word_flags |= FLAG_HYPHEN;
- words[word_count-1].flags |= FLAG_HYPHEN_AFTER;
- c = ' ';
- }
- else
- if((prev_in==' ') && (next_in==' '))
- {
- // ' - ' dash between two spaces, treat as pause
- c = ' ';
- pre_pause_add = 4;
- }
- else
- if(next_in=='-')
- {
- // double hyphen, treat as pause
- source_index++;
- c = ' ';
- pre_pause_add = 4;
- }
- else
- if((prev_out == ' ') && IsAlpha(sbuf[ix-2]) && !IsAlpha(prev_in))
- {
- // insert extra space between a word + space + hyphen, to distinguish 'a -2' from 'a-2'
- sbuf[ix++] = ' ';
- words[word_count].start++;
- }
- }
- else
- if(c == '\'')
- {
- if(iswalnum(prev_in) && IsAlpha(next_in))
- {
- // between two letters, consider apostrophe as part of the word
- single_quoted = 0;
- }
- else
- if((wcschr(tr->char_plus_apostrophe,prev_in) != 0) && (prev_out2 == ' '))
- {
- // consider single character plus apostrophe as a word
- single_quoted = 0;
- if(next_in == ' ')
- {
- source_index++; // skip following space
- }
- }
- else
- {
- if((prev_out == 's') && (single_quoted==0))
- {
- // looks like apostrophe after an 's'
- c = ' ';
- }
- else
- {
- if(IsSpace(prev_out))
- single_quoted = 1;
- else
- single_quoted = 0;
-
- pre_pause_add = 4; // single quote
- c = ' ';
- }
- }
- }
- else
-#ifdef deleted
-// Brackets are now recognised in TranslateRules()
- if(IsBracket(c))
- {
- pre_pause_add = 4;
- c = ' ';
- }
- else
-#endif
- if(lookupwchar(breaks,c) != 0)
- {
- c = ' '; // various characters to treat as space
- }
- else
- if(iswdigit(c))
- {
- if(tr->langopts.tone_numbers && IsAlpha(prev_out) && !IsDigit(next_in))
- {
- }
- else
- if((prev_out != ' ') && !iswdigit(prev_out))
- {
- if((prev_out != tr->langopts.decimal_sep) || ((decimal_sep_count > 0) && (tr->langopts.decimal_sep == ',')))
- {
- c = ' ';
- space_inserted = 1;
- }
- else
- {
- decimal_sep_count = 1;
- }
- }
- else
- if((prev_out == ' ') && IsAlpha(sbuf[ix-2]) && !IsAlpha(prev_in))
- {
- // insert extra space between a word and a number, to distinguish 'a 2' from 'a2'
- sbuf[ix++] = ' ';
- words[word_count].start++;
- }
- }
- }
-
- if(IsSpace(c))
- {
- if(prev_out == ' ')
- {
- continue; // multiple spaces
- }
-
- if(space_inserted)
- {
- words[word_count].length = source_index - words[word_count].sourceix;
- }
-
- // end of 'word'
- sbuf[ix++] = ' ';
-
- if((ix > words[word_count].start) && (word_count < N_CLAUSE_WORDS-1))
- {
- if(embedded_count > 0)
- {
- // there are embedded commands before this word
- embedded_list[embedded_ix-1] |= 0x80; // terminate list of commands for this word
- words[word_count].flags |= FLAG_EMBEDDED;
- embedded_count = 0;
- }
- words[word_count].pre_pause = pre_pause;
- words[word_count].flags |= (all_upper_case | word_flags | word_emphasis);
- words[word_count].wmark = word_mark;
-
- if(pre_pause > 0)
- {
- // insert an extra space before the word, to prevent influence from previous word across the pause
- for(j=ix; j>words[word_count].start; j--)
- {
- sbuf[j] = sbuf[j-1];
- }
- sbuf[j] = ' ';
- words[word_count].start++;
- ix++;
- }
-
- word_count++;
- words[word_count].start = ix;
- words[word_count].flags = 0;
-
- for(j=source_index; charix[j] <= 0; j++); // skip blanks
- words[word_count].sourceix = charix[j];
- k = 0;
- while(charix[j] != 0)
- {
- // count the number of characters (excluding multibyte continuation bytes)
- if(charix[j++] != -1)
- k++;
- }
- words[word_count].length = k;
-
- word_flags = next_word_flags;
- next_word_flags = 0;
- pre_pause = 0;
- word_mark = 0;
- all_upper_case = FLAG_ALL_UPPER;
- syllable_marked = 0;
- }
-
- if(space_inserted)
- {
- source_index = prev_source_index; // rewind to the previous character
- char_inserted = 0;
- space_inserted = 0;
- }
- }
- else
- {
- ix += utf8_out(c,&sbuf[ix]); // sbuf[ix++] = c;
- }
- if(pre_pause_add > pre_pause)
- pre_pause = pre_pause_add;
- pre_pause_add = 0;
- }
-
- if((word_count==0) && (embedded_count > 0))
- {
- // add a null 'word' to carry the embedded command flag
- embedded_list[embedded_ix-1] |= 0x80;
- words[word_count].flags |= FLAG_EMBEDDED;
- word_count = 1;
- }
-
- tr->clause_end = &sbuf[ix-1];
- sbuf[ix] = 0;
- words[0].pre_pause = 0; // don't add extra pause at beginning of clause
- words[word_count].pre_pause = 8;
- if(word_count > 0)
- words[word_count-1].flags |= FLAG_LAST_WORD;
- words[0].flags |= FLAG_FIRST_WORD;
-
- for(ix=0; ix<word_count; ix++)
- {
- int nx;
- int c_temp;
- char *pn;
- char *pw;
- static unsigned int break_numbers1 = 0x49249248;
- static unsigned int break_numbers2 = 0x24924aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
- static unsigned int break_numbers3 = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000
- unsigned int break_numbers;
- char number_buf[80];
-
- // start speaking at a specified word position in the text?
- count_words++;
- if(skip_words > 0)
- {
- skip_words--;
- if(skip_words == 0)
- skipping_text = 0;
- }
- if(skipping_text)
- continue;
-
-
- // digits should have been converted to Latin alphabet ('0' to '9')
- word = pw = &sbuf[words[ix].start];
-
- if(iswdigit(word[0]) && (tr->langopts.numbers2 & NUM2_100000))
- {
- // Languages with 100000 numbers. Remove thousands separators so that we can insert them again later
- pn = number_buf;
- while(pn < &number_buf[sizeof(number_buf)-3])
- {
- if(iswdigit(*pw))
- {
- *pn++ = *pw++;
- }
- else
- if((*pw == tr->langopts.thousands_sep) && (pw[1] == ' ') && iswdigit(pw[2]))
- {
- pw += 2;
- ix++; // skip "word"
- }
- else
- {
- nx = pw - word;
- memset(word,' ',nx);
- nx = pn - number_buf;
- memcpy(word,number_buf,nx);
- break;
- }
- }
- pw = word;
- }
-
- for(n_digits=0; iswdigit(word[n_digits]); n_digits++); // count consecutive digits
-
- if((n_digits > 4) && (word[0] != '0'))
- {
- // word is entirely digits, insert commas and break into 3 digit "words"
- number_buf[0] = ' ';
- pn = &number_buf[1];
- nx = n_digits;
-
- if((tr->langopts.numbers2 & NUM2_100000a) == NUM2_100000a)
- break_numbers = break_numbers3;
- else
- if(tr->langopts.numbers2 & NUM2_100000)
- break_numbers = break_numbers2;
- else
- break_numbers = break_numbers1;
-
- while(pn < &number_buf[sizeof(number_buf)-3])
- {
- if(!isdigit(c = *pw++) && (c != tr->langopts.decimal_sep))
- break;
-
- *pn++ = c;
- if((--nx > 0) && (break_numbers & (1 << nx)))
- {
- if(tr->langopts.thousands_sep != ' ')
- {
- *pn++ = tr->langopts.thousands_sep;
- }
- *pn++ = ' ';
- if(break_numbers & (1 << (nx-1)))
- {
- // the next group only has 1 digits (i.e. NUM2_10000), make it three
- *pn++ = '0';
- *pn++ = '0';
- }
- if(break_numbers & (1 << (nx-2)))
- {
- // the next group only has 2 digits (i.e. NUM2_10000), make it three
- *pn++ = '0';
- }
- }
- }
- word = pw;
-
- // include the next few characters, in case there are an ordinal indicator
- pn[0] = ' ';
- memcpy(pn+1, pw, 8);
- pn[8] = 0;
-
- for(pw = &number_buf[1]; pw < pn;)
- {
- dict_flags = TranslateWord2(tr, pw, &words[ix], words[ix].pre_pause,0 );
- while(*pw++ != ' ');
- words[ix].pre_pause = 0;
- words[ix].flags = 0;
- }
- }
- else
- {
- pre_pause = 0;
- dict_flags = TranslateWord2(tr, word, &words[ix], words[ix].pre_pause, words[ix+1].pre_pause);
-
- if(pre_pause > words[ix+1].pre_pause)
- {
- words[ix+1].pre_pause = pre_pause;
- pre_pause = 0;
- }
-
- if(dict_flags & FLAG_SPELLWORD)
- {
- // redo the word, speaking single letters
- for(pw = word; *pw != ' ';)
- {
- memset(number_buf,' ',9);
- nx = utf8_in(&c_temp, pw);
- memcpy(&number_buf[2],pw,nx);
- TranslateWord2(tr, &number_buf[2], &words[ix], 0, 0 );
- pw += nx;
- }
- }
-
- if((dict_flags & FLAG_DOT) && (ix == word_count-1) && (terminator == CLAUSE_PERIOD))
- {
- // probably an abbreviation such as Mr. or B. rather than end of sentence
- clause_pause = 10;
- tone = 4;
- }
- }
-
- if(dict_flags & FLAG_SKIPWORDS)
- {
- ix += dictionary_skipwords; // dictionary indicates skip next word(s)
- }
- }
-
- for(ix=0; ix<2; ix++)
- {
- // terminate the clause with 2 PAUSE phonemes
- PHONEME_LIST2 *p2;
- p2 = &ph_list2[n_ph_list2 + ix];
- p2->phcode = phonPAUSE;
- p2->stress = 0;
- p2->sourceix = source_index;
- p2->synthflags = 0;
- }
- n_ph_list2 += 2;
-
- if(count_words == 0)
- {
- clause_pause = 0;
- }
- if(Eof() && ((word_count == 0) || (option_endpause==0)))
- {
- clause_pause = 10;
- }
-
- MakePhonemeList(tr, clause_pause, new_sentence);
-
- if(embedded_count) // ???? is this needed
- {
- phoneme_list[n_phoneme_list-2].synthflags = SFLAG_EMBEDDED;
- embedded_list[embedded_ix-1] |= 0x80;
- }
-
-
- prev_clause_pause = clause_pause;
-
- *tone_out = tone;
-
- new_sentence = 0;
- if(terminator & CLAUSE_BIT_SENTENCE)
- {
- new_sentence = 1; // next clause is a new sentence
- }
-
-
- if(voice_change != NULL)
- {
- // return new voice name if an embedded voice change command terminated the clause
- if(terminator & CLAUSE_BIT_VOICE)
- *voice_change = &source[source_index];
- else
- *voice_change = NULL;
- }
-
- if(Eof() || (vp_input==NULL))
- return(NULL);
-
- if(option_multibyte == espeakCHARS_WCHAR)
- return((void *)p_wchar_input);
- else
- return((void *)p_textinput);
-} // end of TranslateClause
-
-
-
-
-
-void InitText(int control)
-{//=======================
- count_sentences = 0;
- count_words = 0;
- end_character_position = 0;
- skip_sentences = 0;
- skip_marker[0] = 0;
- skip_words = 0;
- skip_characters = 0;
- skipping_text = 0;
- new_sentence = 1;
-
- prev_clause_pause = 0;
-
- option_sayas = 0;
- option_sayas2 = 0;
- option_emphasis = 0;
- word_emphasis = 0;
- embedded_flag = 0;
-
- InitText2();
-
- if((control & espeakKEEP_NAMEDATA) == 0)
- {
- InitNamedata();
- }
-}
-
diff --git a/navit/support/espeak/translate.h b/navit/support/espeak/translate.h
deleted file mode 100755
index 0556bf280..000000000
--- a/navit/support/espeak/translate.h
+++ /dev/null
@@ -1,584 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-
-#define L(c1,c2) (c1<<8)+c2 // combine two characters into an integer for translator name
-
-#define CTRL_EMBEDDED 0x01 // control character at the start of an embedded command
-#define REPLACED_E 'E' // 'e' replaced by silent e
-
-#define N_WORD_PHONEMES 160 // max phonemes in a word
-#define N_WORD_BYTES 160 // max bytes for the UTF8 characters in a word
-#define N_CLAUSE_WORDS 300 // max words in a clause
-#define N_RULE_GROUP2 120 // max num of two-letter rule chains
-#define N_HASH_DICT 1024
-#define N_CHARSETS 20
-#define N_LETTER_GROUPS 26
-
-
-/* dictionary flags, word 1 */
-// bits 0-3 stressed syllable, bit 6=unstressed
-#define FLAG_SKIPWORDS 0x80
-#define FLAG_PREPAUSE 0x100
-
-#define FLAG_ONLY 0x200
-#define FLAG_ONLY_S 0x400
-#define BITNUM_FLAG_ONLY 9 // bit 9 is set
-#define BITNUM_FLAG_ONLY_S 10 // bit 10 is set
-
-#define FLAG_STRESS_END 0x800 /* full stress if at end of clause */
-#define FLAG_STRESS_END2 0x1000 /* full stress if at end of clause, or only followed by unstressed */
-#define FLAG_UNSTRESS_END 0x2000 /* reduce stress at end of clause */
-#define FLAG_ATEND 0x4000 /* use this pronunciation if at end of clause */
-#define FLAG_SPELLWORD 0x8000 // re-translate the word as individual letters, separated by spaces
-
-#define FLAG_DOT 0x10000 /* ignore '.' after word (abbreviation) */
-#define FLAG_ABBREV 0x20000 // spell as letters, even with a vowel, OR use specified pronunciation rather than split into letters
-#define FLAG_STEM 0x40000 // must have a suffix
-
-#define FLAG_DOUBLING 0x80000 // doubles the following consonant
-#define FLAG_ALT_TRANS 0x100000 // language specific
-#define FLAG_ALT2_TRANS 0x200000 // language specific
-
-#define FLAG_MAX3 0x08000000 // limit to 3 repeats
-#define FLAG_PAUSE1 0x10000000 // shorter prepause
-#define FLAG_TEXTMODE 0x20000000 // word translates to replacement text, not phonemes
-#define BITNUM_FLAG_TEXTMODE 29
-
-#define FLAG_FOUND_ATTRIBUTES 0x40000000 // word was found in the dictionary list (has attributes)
-#define FLAG_FOUND 0x80000000 // pronunciation was found in the dictionary list
-
-// dictionary flags, word 2
-#define FLAG_VERBF 0x1 /* verb follows */
-#define FLAG_VERBSF 0x2 /* verb follows, may have -s suffix */
-#define FLAG_NOUNF 0x4 /* noun follows */
-#define FLAG_PASTF 0x8 /* past tense follows */
-#define FLAG_VERB 0x10 /* pronunciation for verb */
-#define FLAG_NOUN 0x20 /* pronunciation for noun */
-#define FLAG_PAST 0x40 /* pronunciation for past tense */
-#define FLAG_VERB_EXT 0x100 /* extend the 'verb follows' */
-#define FLAG_CAPITAL 0x200 /* pronunciation if initial letter is upper case */
-#define FLAG_ALLCAPS 0x400 // only if the word is all capitals
-#define BITNUM_FLAG_ALLCAPS 0x2a
-#define FLAG_ACCENT 0x800 // character name is base-character name + accent name
-#define FLAG_HYPHENATED 0x1000 // multiple-words, but needs hyphen between parts 1 and 2
-#define BITNUM_FLAG_HYPHENATED 0x2c
-
-
-// wordflags, flags in source word
-#define FLAG_ALL_UPPER 0x1 /* no lower case letters in the word */
-#define FLAG_FIRST_UPPER 0x2 /* first letter is upper case */
-#define FLAG_UPPERS 0x3 // FLAG_ALL_UPPER | FLAG_FIRST_UPPER
-#define FLAG_HAS_PLURAL 0x4 /* upper-case word with s or 's lower-case ending */
-#define FLAG_PHONEMES 0x8 /* word is phonemes */
-#define FLAG_LAST_WORD 0x10 /* last word in clause */
-#define FLAG_EMBEDDED 0x40 /* word is preceded by embedded commands */
-#define FLAG_HYPHEN 0x80
-#define FLAG_NOSPACE 0x100 // word is not seperated from previous word by a space
-#define FLAG_FIRST_WORD 0x200 // first word in clause
-#define FLAG_FOCUS 0x400 // the focus word of a clause
-#define FLAG_EMPHASIZED 0x800
-#define FLAG_EMPHASIZED2 0xc00 // FLAG_FOCUS | FLAG_EMPHASIZED
-#define FLAG_DONT_SWITCH_TRANSLATOR 0x1000
-#define FLAG_SUFFIX_REMOVED 0x2000
-#define FLAG_HYPHEN_AFTER 0x4000
-
-#define FLAG_NO_TRACE 0x10000 // passed to TranslateRules() to suppress dictionary lookup printout
-#define FLAG_NO_PREFIX 0x20000
-
-// prefix/suffix flags (bits 8 to 14, bits 16 to 22) don't use 0x8000, 0x800000
-#define SUFX_E 0x0100 // e may have been added
-#define SUFX_I 0x0200 // y may have been changed to i
-#define SUFX_P 0x0400 // prefix
-#define SUFX_V 0x0800 // suffix means use the verb form pronunciation
-#define SUFX_D 0x1000 // previous letter may have been doubles
-#define SUFX_F 0x2000 // verb follows
-#define SUFX_Q 0x4000 // don't retranslate
-#define SUFX_T 0x10000 // don't affect the stress position in the stem
-#define SUFX_B 0x20000 // break, this character breaks the word into stem and suffix (used with SUFX_P)
-
-#define FLAG_ALLOW_TEXTMODE 0x02 // allow dictionary to translate to text rather than phonemes
-#define FLAG_SUFX 0x04
-#define FLAG_SUFX_S 0x08
-#define FLAG_SUFX_E_ADDED 0x10
-
-
-// codes in dictionary rules
-#define RULE_PRE 1
-#define RULE_POST 2
-#define RULE_PHONEMES 3
-#define RULE_PH_COMMON 4 // At start of rule. Its phoneme string is used by subsequent rules
-#define RULE_CONDITION 5 // followed by condition number (byte)
-#define RULE_GROUP_START 6
-#define RULE_GROUP_END 7
-#define RULE_LINENUM 8 // next 2 bytes give a line number, for debugging purposes
-
-#define RULE_SPACE 32 // ascii space
-#define RULE_SYLLABLE 9
-#define RULE_STRESSED 10
-#define RULE_DOUBLE 11
-#define RULE_INC_SCORE 12
-#define RULE_DEL_FWD 13
-#define RULE_ENDING 14
-#define RULE_DIGIT 15 // D digit
-#define RULE_NONALPHA 16 // Z non-alpha
-#define RULE_LETTERGP 17 // A B C H F G Y letter group number
-#define RULE_LETTERGP2 18 // L + letter group number
-#define RULE_CAPITAL 19 // word starts with a capital letter
-#define RULE_REPLACEMENTS 20 // section for character replacements
-#define RULE_NO_SUFFIX 24 // N
-#define RULE_NOTVOWEL 25 // K
-#define RULE_IFVERB 26 // V
-#define RULE_ALT1 28 // T word has $alt attribute
-#define RULE_NOVOWELS 29 // X no vowels up to word boundary
-#define RULE_SPELLING 31 // W while spelling letter-by-letter
-#define RULE_LAST_RULE 31
-
-#define LETTERGP_A 0
-#define LETTERGP_B 1
-#define LETTERGP_C 2
-#define LETTERGP_H 3
-#define LETTERGP_F 4
-#define LETTERGP_G 5
-#define LETTERGP_Y 6
-#define LETTERGP_VOWEL2 7
-
-
-// Punctuation types returned by ReadClause()
-// bits 0-7 pause x 10mS, bits 12-14 intonation type,
-// bit 19=sentence, bit 18=clause, bits 17=voice change
-// bit 16 used to distinguish otherwise identical types
-// bit 20= punctuation character can be inside a word (Armenian)
-#define CLAUSE_BIT_SENTENCE 0x80000
-#define CLAUSE_BIT_VOICE 0x20000
-#define PUNCT_IN_WORD 0x100000
-
-#define CLAUSE_NONE 0 + 0x04000
-#define CLAUSE_PARAGRAPH 70 + 0x80000
-#define CLAUSE_EOF 35 + 0x90000
-#define CLAUSE_VOICE 0 + 0x24000
-#define CLAUSE_PERIOD 35 + 0x80000
-#define CLAUSE_COMMA 20 + 0x41000
-#define CLAUSE_SHORTCOMMA 4 + 0x41000
-#define CLAUSE_SHORTFALL 4 + 0x40000
-#define CLAUSE_QUESTION 35 + 0x82000
-#define CLAUSE_EXCLAMATION 40 + 0x83000
-#define CLAUSE_COLON 30 + 0x40000
-#ifdef PLATFORM_RISCOS
-#define CLAUSE_SEMICOLON 30 + 0x40000
-#else
-#define CLAUSE_SEMICOLON 30 + 0x41000
-#endif
-
-#define SAYAS_CHARS 0x12
-#define SAYAS_GLYPHS 0x13
-#define SAYAS_SINGLE_CHARS 0x14
-#define SAYAS_KEY 0x24
-#define SAYAS_DIGITS 0x40 // + number of digits
-#define SAYAS_DIGITS1 0xc1
-
-#define CHAR_EMPHASIS 0x0530 // this is an unused character code
-
-// Rule:
-// [4] [match] [1 pre] [2 post] [3 phonemes] 0
-// match 1 pre 2 post 0 - use common phoneme string
-// match 1 pre 2 post 3 0 - empty phoneme string
-
-typedef const char * constcharptr;
-
-typedef struct {
- int points;
- const char *phonemes;
- int end_type;
- char *del_fwd;
-} MatchRecord;
-
-
-// used to mark words with the source[] buffer
-typedef struct{
- unsigned short start;
- unsigned short sourceix;
- unsigned short flags;
- unsigned char pre_pause;
- unsigned char wmark;
- unsigned char length;
-} WORD_TAB;
-
-// a clause translated into phoneme codes (first stage)
-typedef struct {
- unsigned char phcode;
- unsigned char stress;
- unsigned char tone_number;
- unsigned char synthflags;
- unsigned short sourceix;
-} PHONEME_LIST2;
-
-
-typedef struct {
- int type;
- int parameter[N_SPEECH_PARAM];
-} PARAM_STACK;
-
-extern PARAM_STACK param_stack[];
-extern const int param_defaults[N_SPEECH_PARAM];
-
-
-
-#define N_LOPTS 16
-#define LOPT_DIERESES 1
- // 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables
- // bit 4=0, if stress < 4, bit 4=1, if not the highest stress in the word
-#define LOPT_IT_LENGTHEN 2
-
- // 1=german
-#define LOPT_PREFIXES 3
-
- // non-zero, change voiced/unoiced to match last consonant in a cluster
- // bit 1=LANG=ru, don't propagate over [v]
- // bit 2=don't propagate acress word boundaries
- // bit 3=LANG=pl, propagate over liquids and nasals
-#define LOPT_REGRESSIVE_VOICING 4
-
- // 0=default, 1=no check, other allow this character as an extra initial letter (default is 's')
-#define LOPT_UNPRONOUNCABLE 5
-
- // select length_mods tables, (length_mod_tab) + (length_mod_tab0 * 100)
-#define LOPT_LENGTH_MODS 6
-
- // increase this to prevent sonorants being shortened before shortened (eg. unstressed) vowels
-#define LOPT_SONORANT_MIN 7
-
- // don't break vowels at word boundary
-#define LOPT_WORD_MERGE 8
-
- // max. amplitude for vowel at the end of a clause
-#define LOPT_MAXAMP_EOC 9
-
- // bit 0=reduce even if phonemes are specified in the **_list file
- // bit 1=don't reduce the strongest vowel in a word which is marked 'unstressed'
-#define LOPT_REDUCE 10
-
- // LANG=cs,sk combine some prepositions with the following word, if the combination has N or fewer syllables
- // bits 0-3 N syllables
- // bit 4=only if the second word has $alt attribute
- // bit 5=not if the second word is end-of-sentence
-#define LOPT_COMBINE_WORDS 11
-
- // change [t] when followed by unstressed vowel
-#define LOPT_REDUCE_T 12
-
- // 1 = allow capitals inside a word
- // 2 = stressed syllable is indicated by capitals
-#define LOPT_CAPS_IN_WORD 13
-
- // bit 0=Italian "syntactic doubling" of consoants in the word after a word marked with $double attribute
- // bit 1=also after a word which ends with a stressed vowel
-#define LOPT_IT_DOUBLING 14
-
- // Call ApplySpecialAttributes() if $alt or $alt2 is set for a word
-#define LOPT_ALT 15
-
-
-typedef struct {
-// bits0-2 separate words with (1=pause_vshort, 2=pause_short, 3=pause, 4=pause_long 5=[?] phonemme)
-// bit 3=don't use linking phoneme
-// bit4=longer pause before STOP, VSTOP,FRIC
-// bit5=length of a final vowel doesn't depend on the next phoneme
- int word_gap;
- int vowel_pause;
- int stress_rule; // 1=first syllable, 2=penultimate, 3=last
-
-// bit0=don't stress monosyllables, except at end of clause
-// bit1=don't set diminished stress,
-// bit2=mark unstressed final syllables as diminished
-// bit4=don't allow secondary stress on last syllable
-// bit5-don't use automatic secondary stress
-// bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish
-// bit8=stress last syllable if it doesn't end in a vowel
-// bit9=stress last syllable if it doesn't end in vowel or "s" or "n" LANG=Spanish
-// bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress
-// bit13= If there is only one syllable before the primary stress, give it a secondary stress
-// bit15= Give stress to the first unstressed syllable
-// bit16= Don't diminish consecutive syllables within a word.
-// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary"
-// bit18= don't lengthen short vowels more than long vowels at end-of-clause
-// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel
-
- int stress_flags;
- int unstressed_wd1; // stress for $u word of 1 syllable
- int unstressed_wd2; // stress for $u word of >1 syllable
- int param[N_LOPTS];
- unsigned char *length_mods;
- unsigned char *length_mods0;
-
-#define NUM_ROMAN 0x20000
-#define NUM_ROMAN_UC 0x40000
-#define NUM_NOPAUSE 0x80000
-#define NUM_ROMAN_AFTER 0x200000
-#define NUM_VIGESIMAL 0x400000
-
- // bits0-1=which numbers routine to use.
- // bit2= thousands separator must be space
- // bit3= , decimal separator, not .
- // bit4=use three-and-twenty rather than twenty-three
- // bit5='and' between tens and units
- // bit6=add "and" after hundred or thousand
- // bit7=don't have "and" both after hundreds and also between tens and units
- // bit8=only one primary stress in tens+units
- // bit9=only one vowel betwen tens and units
- // bit10=omit "one" before "hundred"
- // bit11=say 19** as nineteen hundred
- // bit12=allow space as thousands separator (in addition to langopts.thousands_sep)
- // bits13-15 post-decimal-digits 0=single digits, 1=(LANG=it) 2=(LANG=pl) 3=(LANG=ro)
- // bit16=dot after number indicates ordinal
- // bit17=recognize roman numbers
- // bit18=Roman numbers only if upper case
- // bit19=don't add pause after a number
- // bit20='and' before hundreds
- // bit21= say "roman" after the number, not before
- // bit22= vigesimal number, if tens are not found
- int numbers;
-
-#define NUM2_100000 0x800 // numbers for 100,000 and 10,000,000
-#define NUM2_100000a 0xc00 // numbers for 100,000 and 1,000,000
- // bits 1-4 use variant form of numbers before thousands,millions,etc.
- // bit6=(LANG=pl) two forms of plural, M or MA
- // bit7=(LANG-ru) use MB for 1 thousand, million, etc
- // bit8=(LANG=cs,sk) two forms of plural, M or MA
- // bit9=(LANG=rw) say "thousand" and "million" before its number, not after
- // bit10=(LANG=sw) special word for 100,000 and 1,000,000
- // bit11=(LANG=hi) special word for 100,000 and 10,000,000
- int numbers2;
-
- int max_roman;
- int thousands_sep;
- int decimal_sep;
-
- // bit 0, accent name before the letter name, bit 1 "capital" after letter name
- int accents;
-
- int tone_language; // 1=tone language
- int intonation_group;
- int long_stop; // extra mS pause for a lengthened stop
- int phoneme_change; // TEST, change phonemes, after translation
- char max_initial_consonants;
- char spelling_stress; // 0=default, 1=stress first letter
- char tone_numbers;
- char ideographs; // treat as separate words
- char textmode; // the meaning of FLAG_TEXTMODE is reversed (to save data when *_list file is compiled)
- int testing; // testing options: bit 1= specify stressed syllable in the form: "outdoor/2"
- int listx; // compile *_listx after *list
- const unsigned int *replace_chars; // characters to be substitutes
- const char *ascii_language; // switch to this language for Latin characters
-} LANGUAGE_OPTIONS;
-
-
-// a parameter of ChangePhonemes()
-typedef struct {
- int flags;
- unsigned char stress; // stress level of this vowel
- unsigned char stress_highest; // the highest stress level of a vowel in this word
- unsigned char n_vowels; // number of vowels in the word
- unsigned char vowel_this; // syllable number of this vowel (counting from 1)
- unsigned char vowel_stressed; // syllable number of the highest stressed vowel
-} CHANGEPH;
-
-
-
-#define NUM_SEP_DOT 0x0008 // . , for thousands and decimal separator
-#define NUM_SEP_SPACE 0x1000 // allow space as thousands separator (in addition to langopts.thousands_sep)
-#define NUM_DEC_IT 0x2000 // (LANG=it) speak post-decimal-point digits as a combined number not as single digits
-
-typedef struct Translator
-{//=============
-
- LANGUAGE_OPTIONS langopts;
- int translator_name;
- int transpose_offset;
- int transpose_max;
- int transpose_min;
-
- char phon_out[300];
- char phonemes_repeat[20];
- int phonemes_repeat_count;
-
- unsigned char stress_amps[8];
- unsigned char stress_amps_r[8];
- short stress_lengths[8];
- int dict_condition; // conditional apply some pronunciation rules and dict.lookups
- const unsigned short *charset_a0; // unicodes for characters 0xa0 to oxff
- const wchar_t *char_plus_apostrophe; // single chars + apostrophe treated as words
- const wchar_t *punct_within_word; // allow these punctuation characters within words
-
-// holds properties of characters: vowel, consonant, etc for pronunciation rules
- unsigned char letter_bits[256];
- int letter_bits_offset;
- const wchar_t *letter_groups[8];
-
- /* index1=option, index2 by 0=. 1=, 2=?, 3=! 4=none */
-#define INTONATION_TYPES 8
-#define PUNCT_INTONATIONS 6
- unsigned char punct_to_tone[INTONATION_TYPES][PUNCT_INTONATIONS];
-
- char *data_dictrules; // language_1 translation rules file
- char *data_dictlist; // language_2 dictionary lookup file
- char *dict_hashtab[N_HASH_DICT]; // hash table to index dictionary lookup file
- char *letterGroups[N_LETTER_GROUPS];
-
- // groups1 and groups2 are indexes into data_dictrules, set up by InitGroups()
- // the two-letter rules for each letter must be consecutive in the language_rules source
-
- char *groups1[256]; // translation rule lists, index by single letter
- char *groups2[N_RULE_GROUP2]; // translation rule lists, indexed by two-letter pairs
- unsigned int groups2_name[N_RULE_GROUP2]; // the two letter pairs for groups2[]
- int n_groups2; // number of groups2[] entries used
-
- unsigned char groups2_count[256]; // number of 2 letter groups for this initial letter
- unsigned char groups2_start[256]; // index into groups2
-
-
- int expect_verb;
- int expect_past; // expect past tense
- int expect_verb_s;
- int expect_noun;
- int prev_last_stress;
- char *clause_end;
-
- int word_vowel_count; // number of vowels so far
- int word_stressed_count; // number of vowels so far which could be stressed
-
- int clause_upper_count; // number of upper case letters in the clause
- int clause_lower_count; // number of lower case letters in the clause
-
- int prepause_timeout;
- int end_stressed_vowel; // word ends with stressed vowel
- int prev_dict_flags; // dictionary flags from previous word
-} Translator; // end of class Translator
-
-
-extern int option_tone2;
-#define OPTION_EMPHASIZE_ALLCAPS 0x100
-#define OPTION_EMPHASIZE_PENULTIMATE 0x200
-extern int option_tone_flags;
-extern int option_waveout;
-extern int option_quiet;
-extern int option_phonemes;
-extern int option_phoneme_events;
-extern int option_linelength; // treat lines shorter than this as end-of-clause
-extern int option_multibyte;
-extern int option_capitals;
-extern int option_punctuation;
-extern int option_endpause;
-extern int option_ssml;
-extern int option_phoneme_input; // allow [[phonemes]] in input text
-extern int option_phoneme_variants;
-extern int option_sayas;
-extern int option_wordgap;
-
-extern int count_characters;
-extern int count_words;
-extern int count_sentences;
-extern int skip_characters;
-extern int skip_words;
-extern int skip_sentences;
-extern int skipping_text;
-extern int end_character_position;
-extern int clause_start_char;
-extern int clause_start_word;
-extern char *namedata;
-extern int pre_pause;
-
-
-
-#define N_MARKER_LENGTH 50 // max.length of a mark name
-extern char skip_marker[N_MARKER_LENGTH];
-
-#define N_PUNCTLIST 60
-extern wchar_t option_punctlist[N_PUNCTLIST]; // which punctuation characters to announce
-extern unsigned char punctuation_to_tone[INTONATION_TYPES][PUNCT_INTONATIONS];
-
-extern struct Translator *translator;
-extern struct Translator *translator2;
-extern const unsigned short *charsets[N_CHARSETS];
-extern char dictionary_name[40];
-extern char ctrl_embedded; // to allow an alternative CTRL for embedded commands
-extern unsigned char *p_textinput;
-extern wchar_t *p_wchar_input;
-extern int dictionary_skipwords;
-
-extern int (* uri_callback)(int, const char *, const char *);
-extern int (* phoneme_callback)(const char *);
-extern void SetLengthMods(struct Translator *tr, int value);
-
-void LoadConfig(void);
-int TransposeAlphabet(char *text, int offset, int min, int max);
-int utf8_in(int *c, const char *buf);
-int utf8_in2(int *c, const char *buf, int backwards);
-int utf8_out(unsigned int c, char *buf);
-int utf8_nbytes(const char *buf);
-int lookupwchar(const unsigned short *list,int c);
-int Eof(void);
-char *strchr_w(const char *s, int c);
-int IsBracket(int c);
-void InitNamedata(void);
-void InitText(int flags);
-void InitText2(void);
-int IsDigit(unsigned int c);
-int IsAlpha(unsigned int c);
-int isspace2(unsigned int c);
-int towlower2(unsigned int c);
-void GetTranslatedPhonemeString(char *phon_out, int n_phon_out);
-
-struct Translator *SelectTranslator(const char *name);
-int SetTranslator2(const char *name);
-void DeleteTranslator(struct Translator *tr);
-int Lookup(struct Translator *tr, const char *word, char *ph_out);
-
-int TranslateNumber(Translator *tr, char *word1, char *ph_out, unsigned int *flags, int wflags);
-int TranslateRoman(Translator *tr, char *word, char *ph_out);
-
-void ChangeWordStress(Translator *tr, char *word, int new_stress);
-void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars);
-int TranslateLetter(Translator *tr, char *letter, char *phonemes, int control, int word_length);
-void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_buf);
-void LookupAccentedLetter(Translator *tr, unsigned int letter, char *ph_buf);
-
-int LoadDictionary(Translator *tr, const char *name, int no_error);
-int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *flags, int end_flags, WORD_TAB *wtab);
-
-void MakePhonemeList(Translator *tr, int post_pause, int new_sentence);
-int ChangePhonemes_ru(Translator *tr, PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch);
-void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags);
-void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags);
-void AppendPhonemes(Translator *tr, char *string, int size, const char *ph);
-
-void CalcLengths(Translator *tr);
-void CalcPitches(Translator *tr, int clause_tone);
-
-int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy);
-int Unpronouncable(Translator *tr, char *word);
-void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress);
-int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags);
-int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab);
-void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change);
-int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type);
-
-void SetVoiceStack(espeak_VOICE *v);
-
-extern FILE *f_trans; // for logging
diff --git a/navit/support/espeak/voice.h b/navit/support/espeak/voice.h
deleted file mode 100644
index ab69fa128..000000000
--- a/navit/support/espeak/voice.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-
-
-typedef struct {
- char v_name[40];
-
- int phoneme_tab_ix; // phoneme table number
- int pitch_base; // Hz<<12
- int pitch_range; // standard = 0x1000
-
- int speedf1;
- int speedf2;
- int speedf3;
-
- int flutter;
- int roughness;
- int echo_delay;
- int echo_amp;
- int n_harmonic_peaks; // highest formant which is formed from adding harmonics
- int peak_shape; // alternative shape for formant peaks (0=standard 1=squarer)
- int voicing; // 100% = 64, level of formant-synthesized sound
- int formant_factor; // adjust nominal formant frequencies by this because of the voice's pitch (256ths)
- int consonant_amp; // amplitude of unvoiced consonants
- int consonant_ampv; // amplitude of the noise component of voiced consonants
- int klattv[8];
-
- // parameters used by Wavegen
- short freq[N_PEAKS]; // 100% = 256
- short height[N_PEAKS]; // 100% = 256
- short width[N_PEAKS]; // 100% = 256
- short freqadd[N_PEAKS]; // Hz
-
- // copies without temporary adjustments from embedded commands
- short freq2[N_PEAKS]; // 100% = 256
- short height2[N_PEAKS]; // 100% = 256
- short width2[N_PEAKS]; // 100% = 256
-
- int breath[N_PEAKS]; // amount of breath for each formant. breath[0] indicates whether any are set.
- int breathw[N_PEAKS]; // width of each breath formant
-
- // This table provides the opportunity for tone control.
- // Adjustment of harmonic amplitudes, steps of 8Hz
- // value of 128 means no change
- #define N_TONE_ADJUST 1000
- unsigned char tone_adjust[N_TONE_ADJUST]; // 8Hz steps * 1000 = 8kHz
-
-} voice_t;
-
-// percentages shown to user, ix=N_PEAKS means ALL peaks
-extern USHORT voice_pcnt[N_PEAKS+1][3];
-
-
-extern voice_t *voice;
-extern int tone_points[12];
-
-const char *SelectVoice(espeak_VOICE *voice_select, int *found);
-espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name);
-voice_t *LoadVoice(const char *voice_name, int control);
-voice_t *LoadVoiceVariant(const char *voice_name, int variant);
-void DoVoiceChange(voice_t *v);
-void WavegenSetVoice(voice_t *v);
-void ReadTonePoints(char *string, int *tone_pts);
-
diff --git a/navit/support/espeak/voices.c b/navit/support/espeak/voices.c
deleted file mode 100755
index a7bd3f5a0..000000000
--- a/navit/support/espeak/voices.c
+++ /dev/null
@@ -1,1746 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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 see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-#include "stdio.h"
-#include "ctype.h"
-#include "wctype.h"
-#include "string.h"
-#include "stdlib.h"
-#include "speech.h"
-
-#ifdef PLATFORM_WINDOWS
-#include "windows.h"
-#else
-#ifdef PLATFORM_RISCOS
-#include "kernel.h"
-#else
-#include "dirent.h"
-#endif
-#endif
-
-#include "speak_lib.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-#include "translate.h"
-
-#define int(x) ((int)(x))
-#define double(x) ((double)(x))
-#define __cdecl
-
-MNEM_TAB genders [] = {
- {"unknown", 0},
- {"male", 1},
- {"female", 2},
- {NULL, 0 }};
-
-int tone_points[12] = {600,170, 1200,135, 2000,110, 3000,110, -1,0};
-//int tone_points[12] = {250,200, 400,170, 600,170, 1200,135, 2000,110, -1,0};
-
-// limit the rate of change for each formant number
-//static int formant_rate_22050[9] = {50, 104, 165, 230, 220, 220, 220, 220, 220}; // values for 22kHz sample rate
-//static int formant_rate_22050[9] = {240, 180, 180, 180, 180, 180, 180, 180, 180}; // values for 22kHz sample rate
-static int formant_rate_22050[9] = {240, 170, 170, 170, 170, 170, 170, 170, 170}; // values for 22kHz sample rate
-int formant_rate[9]; // values adjusted for actual sample rate
-
-
-
-#define DEFAULT_LANGUAGE_PRIORITY 5
-#define N_VOICES_LIST 150
-static int n_voices_list = 0;
-static espeak_VOICE *voices_list[N_VOICES_LIST];
-static int len_path_voices;
-
-espeak_VOICE voice_selected;
-
-
-enum {
- V_NAME = 1,
- V_LANGUAGE,
- V_GENDER,
- V_TRANSLATOR,
- V_PHONEMES,
- V_DICTIONARY,
-
-// these affect voice quality, are independent of language
- V_FORMANT,
- V_PITCH,
- V_ECHO,
- V_FLUTTER,
- V_ROUGHNESS,
- V_CLARITY,
- V_TONE,
- V_VOICING,
- V_BREATH,
- V_BREATHW,
-
-// these override defaults set by the translator
- V_WORDGAP,
- V_INTONATION,
- V_STRESSLENGTH,
- V_STRESSAMP,
- V_STRESSADD,
- V_DICTRULES,
- V_STRESSRULE,
- V_CHARSET,
- V_NUMBERS,
- V_OPTION,
-
- V_MBROLA,
- V_KLATT,
- V_FAST,
-
-// these need a phoneme table to have been specified
- V_REPLACE,
- V_CONSONANTS
-};
-
-
-
-typedef struct {
- const char *mnem;
- int data;
-} keywtab_t;
-
-static keywtab_t keyword_tab[] = {
- {"name", V_NAME},
- {"language", V_LANGUAGE},
- {"gender", V_GENDER},
-
- {"formant", V_FORMANT},
- {"pitch", V_PITCH},
- {"phonemes", V_PHONEMES},
- {"translator", V_TRANSLATOR},
- {"dictionary", V_DICTIONARY},
- {"stressLength", V_STRESSLENGTH},
- {"stressAmp", V_STRESSAMP},
- {"stressAdd", V_STRESSADD},
- {"intonation", V_INTONATION},
- {"dictrules", V_DICTRULES},
- {"stressrule", V_STRESSRULE},
- {"charset", V_CHARSET},
- {"replace", V_REPLACE},
- {"words", V_WORDGAP},
- {"echo", V_ECHO},
- {"flutter", V_FLUTTER},
- {"roughness", V_ROUGHNESS},
- {"clarity", V_CLARITY},
- {"tone", V_TONE},
- {"voicing", V_VOICING},
- {"breath", V_BREATH},
- {"breathw", V_BREATHW},
- {"numbers", V_NUMBERS},
- {"option", V_OPTION},
- {"mbrola", V_MBROLA},
- {"consonants", V_CONSONANTS},
- {"klatt", V_KLATT},
- {"fast_test", V_FAST},
-
- // these just set a value in langopts.param[]
- {"l_dieresis", 0x100+LOPT_DIERESES},
-// {"l_lengthen", 0x100+LOPT_IT_LENGTHEN},
- {"l_prefix", 0x100+LOPT_PREFIXES},
- {"l_regressive_v", 0x100+LOPT_REGRESSIVE_VOICING},
- {"l_unpronouncable", 0x100+LOPT_UNPRONOUNCABLE},
- {"l_sonorant_min", 0x100+LOPT_SONORANT_MIN},
- {"l_length_mods", 0x100+LOPT_LENGTH_MODS},
- {NULL, 0} };
-
-#define N_VOICE_VARIANTS 12
-const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0};
-const char variants_male[N_VOICE_VARIANTS] = {1,2,3,4,5,0};
-const char variants_female[N_VOICE_VARIANTS] = {11,12,13,14,0};
-const char *variant_lists[3] = {variants_either, variants_male, variants_female};
-
-static voice_t voicedata;
-voice_t *voice = &voicedata;
-
-
-static char *fgets_strip(char *buf, int size, FILE *f_in)
-{//======================================================
-// strip trailing spaces, and truncate lines at // comment
- int len;
- char *p;
-
- if(fgets(buf,size,f_in) == NULL)
- return(NULL);
-
- len = strlen(buf);
- while((--len > 0) && isspace(buf[len]))
- buf[len] = 0;
-
- if((p = strstr(buf,"//")) != NULL)
- *p = 0;
-
- return(buf);
-}
-
-
-static void SetToneAdjust(voice_t *voice, int *tone_pts)
-{//=====================================================
- int ix;
- int pt;
- int y;
- int freq1=0;
- int freq2;
- int height1 = tone_pts[1];
- int height2;
- double rate;
-
- for(pt=0; pt<12; pt+=2)
- {
- if(tone_pts[pt] == -1)
- {
- tone_pts[pt] = N_TONE_ADJUST*8;
- if(pt > 0)
- tone_pts[pt+1] = tone_pts[pt-1];
- }
- freq2 = tone_pts[pt] / 8; // 8Hz steps
- height2 = tone_pts[pt+1];
- if((freq2 - freq1) > 0)
- {
- rate = double(height2-height1)/(freq2-freq1);
-
- for(ix=freq1; ix<freq2; ix++)
- {
- y = height1 + int(rate * (ix-freq1));
- if(y > 255)
- y = 255;
- voice->tone_adjust[ix] = y;
- }
- }
- freq1 = freq2;
- height1 = height2;
- }
-}
-
-
-void ReadTonePoints(char *string, int *tone_pts)
-{//=============================================
-// tone_pts[] is int[12]
- int ix;
-
- for(ix=0; ix<12; ix++)
- tone_pts[ix] = -1;
-
- sscanf(string,"%d %d %d %d %d %d %d %d %d %d",
- &tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3],
- &tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7],
- &tone_pts[8],&tone_pts[9]);
-}
-
-
-
-
-static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*leafname)
-{//===================================================================================
-// Read a Voice file, allocate a VOICE_DATA and set data from the
-// file's language, gender, name lines
-
- char linebuf[120];
- char vname[80];
- char vgender[80];
- char vlanguage[80];
- char languages[300]; // allow space for several alternate language names and priorities
-
-
- unsigned int len;
- int langix = 0;
- int n_languages = 0;
- char *p;
- espeak_VOICE *voice_data;
- int priority;
- int age;
- int n_variants = 3; // default, number of variants of this voice before using another voice
- int gender;
-
-#ifdef PLATFORM_WINDOWS
- char fname_buf[sizeof(path_home)+15];
- if(memcmp(leafname,"mb-",3) == 0)
- {
- // check whether the mbrola speech data is present for this voice
- memcpy(vname,&leafname[3],3);
- vname[3] = 0;
- sprintf(fname_buf,"%s/mbrola/%s",path_home,vname);
-
- if(GetFileLength(fname_buf) <= 0)
- return(0);
- }
-#endif
-
- vname[0] = 0;
- vgender[0] = 0;
- age = 0;
-
- while(fgets_strip(linebuf,sizeof(linebuf),f_in) != NULL)
- {
- if(memcmp(linebuf,"name",4)==0)
- {
- p = &linebuf[4];
- while(isspace(*p)) p++;
- strncpy0(vname,p,sizeof(vname));
- }
- else
- if(memcmp(linebuf,"language",8)==0)
- {
- priority = DEFAULT_LANGUAGE_PRIORITY;
- vlanguage[0] = 0;
-
- sscanf(&linebuf[8],"%s %d",vlanguage,&priority);
- len = strlen(vlanguage) + 2;
- // check for space in languages[]
- if(len < (sizeof(languages)-langix-1))
- {
- languages[langix] = priority;
-
- strcpy(&languages[langix+1],vlanguage);
- langix += len;
- n_languages++;
- }
- }
- else
- if(memcmp(linebuf,"gender",6)==0)
- {
- sscanf(&linebuf[6],"%s %d",vgender,&age);
- }
- else
- if(memcmp(linebuf,"variants",8)==0)
- {
- sscanf(&linebuf[8],"%d",&n_variants);
- }
- }
- languages[langix++] = 0;
-
- gender = LookupMnem(genders,vgender);
-
- if(n_languages == 0)
- {
- return(NULL); // no language lines in the voice file
- }
-
- p = (char *)calloc(sizeof(espeak_VOICE) + langix + strlen(fname) + strlen(vname) + 3, 1);
- voice_data = (espeak_VOICE *)p;
- p = &p[sizeof(espeak_VOICE)];
-
- memcpy(p,languages,langix);
- voice_data->languages = p;
-
- strcpy(&p[langix],fname);
- voice_data->identifier = &p[langix];
- voice_data->name = &p[langix];
-
- if(vname[0] != 0)
- {
- langix += strlen(fname)+1;
- strcpy(&p[langix],vname);
- voice_data->name = &p[langix];
- }
-
- voice_data->age = age;
- voice_data->gender = gender;
- voice_data->variant = 0;
- voice_data->xx1 = n_variants;
- return(voice_data);
-} // end of ReadVoiceFile
-
-
-
-
-void VoiceReset(int tone_only)
-{//===========================
-// Set voice to the default values
-
- int pk;
- static unsigned char default_heights[N_PEAKS] = {128,128,120,120,110,110,128,128,128};
- static unsigned char default_widths[N_PEAKS] = {128,128,128,160,171,171,128,128,128};
-
- static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600};
-
- // default is: pitch 82,118
-// voice->pitch_base = 0x49000; // default, 73 << 12;
-// voice->pitch_range = 0x0f30; // default = 0x1000
- voice->pitch_base = 0x47000;
- voice->pitch_range = 3996;
-
- voice->formant_factor = 256;
-
- voice->echo_delay = 0;
- voice->echo_amp = 0;
- voice->flutter = 64;
- voice->n_harmonic_peaks = 5;
- voice->peak_shape = 0;
- voice->voicing = 64;
- voice->consonant_amp = 100;
- voice->consonant_ampv = 100;
- memset(voice->klattv,0,sizeof(voice->klattv));
- memset(speed.fast_settings,0,sizeof(speed.fast_settings));
-
-#ifdef PLATFORM_RISCOS
- voice->roughness = 1;
-#else
- voice->roughness = 2;
-#endif
-
- InitBreath();
- for(pk=0; pk<N_PEAKS; pk++)
- {
- voice->freq[pk] = 256;
- voice->height[pk] = default_heights[pk]*2;
- voice->width[pk] = default_widths[pk]*2;
- voice->breath[pk] = 0;
- voice->breathw[pk] = breath_widths[pk]; // default breath formant woidths
- voice->freqadd[pk] = 0;
-
- // adjust formant smoothing depending on sample rate
- formant_rate[pk] = (formant_rate_22050[pk] * 22050)/samplerate;
- }
- voice->height[2] = 240; // reduce F2 slightly
-
- // This table provides the opportunity for tone control.
- // Adjustment of harmonic amplitudes, steps of 8Hz
- // value of 128 means no change
-// memset(voice->tone_adjust,128,sizeof(voice->tone_adjust));
-SetToneAdjust(voice,tone_points);
-
- // default values of speed factors
- voice->speedf1 = 256;
- voice->speedf2 = 238;
- voice->speedf3 = 232;
-
- if(tone_only == 0)
- {
- n_replace_phonemes = 0;
- option_quiet = 0;
- LoadMbrolaTable(NULL,NULL,0);
- }
-} // end of VoiceReset
-
-
-static void VoiceFormant(char *p)
-{//==============================
- // Set parameters for a formant
- int ix;
- int formant;
- int freq = 100;
- int height = 100;
- int width = 100;
- int freqadd = 0;
-
- ix = sscanf(p,"%d %d %d %d %d",&formant,&freq,&height,&width,&freqadd);
- if(ix < 2)
- return;
-
- if((formant < 0) || (formant > 8))
- return;
-
- if(freq >= 0)
- voice->freq[formant] = int(freq * 2.56001);
- if(height >= 0)
- voice->height[formant] = int(height * 2.56001);
- if(width >= 0)
- voice->width[formant] = int(width * 2.56001);
- voice->freqadd[formant] = freqadd;
-}
-
-
-
-
-
-static void PhonemeReplacement(int type, char *p)
-{//==============================================
- int n;
- int phon;
- int flags = 0;
- char phon_string1[12];
- char phon_string2[12];
-
- strcpy(phon_string2,"NULL");
- n = sscanf(p,"%d %s %s",&flags,phon_string1,phon_string2);
- if((n < 2) || (n_replace_phonemes >= N_REPLACE_PHONEMES))
- return;
-
- if((phon = LookupPhonemeString(phon_string1)) == 0)
- return; // not recognised
-
- replace_phonemes[n_replace_phonemes].old_ph = phon;
- replace_phonemes[n_replace_phonemes].new_ph = LookupPhonemeString(phon_string2);
- replace_phonemes[n_replace_phonemes++].type = flags;
-} // end of PhonemeReplacement
-
-
-
-static int Read8Numbers(char *data_in,int *data)
-{//=============================================
-// Read 8 integer numbers
- return(sscanf(data_in,"%d %d %d %d %d %d %d %d",
- &data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7]));
-}
-
-
-voice_t *LoadVoice(const char *vname, int control)
-{//===============================================
-// control, bit 0 1= no_default
-// bit 1 1 = change tone only, not language
-// bit 2 1 = don't report error on LoadDictionary
-// bit 4 1 = vname = full path
-
- FILE *f_voice = NULL;
- keywtab_t *k;
- char *p;
- int key;
- int ix;
- int n;
- int value;
- int error = 0;
- int langix = 0;
- int tone_only = control & 2;
- int language_set = 0;
- int phonemes_set = 0;
- int stress_amps_set = 0;
- int stress_lengths_set = 0;
- int stress_add_set = 0;
- int conditional_rules = 0;
- LANGUAGE_OPTIONS *langopts = NULL;
-
- Translator *new_translator = NULL;
-
- char voicename[40];
- char language_name[40];
- char translator_name[40];
- char new_dictionary[40];
- char phonemes_name[40];
- const char *language_type;
- char buf[200];
- char path_voices[sizeof(path_home)+12];
- char langname[4];
-
- int stress_amps[8];
- int stress_lengths[8];
- int stress_add[8];
-
- int pitch1;
- int pitch2;
-
- static char voice_identifier[40]; // file name for voice_selected
- static char voice_name[40]; // voice name for voice_selected
- static char voice_languages[100]; // list of languages and priorities for voice_selected
-
- strcpy(voicename,vname);
- if(voicename[0]==0)
- strcpy(voicename,"default");
-
- if(control & 0x10)
- {
- strcpy(buf,vname);
- if(GetFileLength(buf) <= 0)
- return(NULL);
- }
- else
- {
- sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP);
- sprintf(buf,"%s%s",path_voices,voicename);
-
- if(GetFileLength(buf) <= 0)
- {
- // look for the voice in a sub-directory of the language name
- langname[0] = voicename[0];
- langname[1] = voicename[1];
- langname[2] = 0;
- sprintf(buf,"%s%s%c%s",path_voices,langname,PATHSEP,voicename);
-
- if(GetFileLength(buf) <= 0)
- {
- // look in "test" sub-directory
- sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename);
- }
- }
- }
-
- f_voice = fopen(buf,"r");
-
- language_type = "en"; // default
- if(f_voice == NULL)
- {
- if(control & 3)
- return(NULL); // can't open file
-
- if(SelectPhonemeTableName(voicename) >= 0)
- language_type = voicename;
- }
-
- if(!tone_only && (translator != NULL))
- {
- DeleteTranslator(translator);
- translator = NULL;
- }
-
- strcpy(translator_name,language_type);
- strcpy(new_dictionary,language_type);
- strcpy(phonemes_name,language_type);
-
-
- if(!tone_only)
- {
- voice = &voicedata;
- strncpy0(voice_identifier,vname,sizeof(voice_identifier));
- voice_name[0] = 0;
- voice_languages[0] = 0;
-
- voice_selected.identifier = voice_identifier;
- voice_selected.name = voice_name;
- voice_selected.languages = voice_languages;
- }
- else
- {
- // append the variant file name to the voice identifier
- if((p = strchr(voice_identifier,'+')) != NULL)
- *p = 0; // remove previous variant name
- sprintf(buf,"+%s",&vname[3]); // omit !v/ from the variant filename
- strcat(voice_identifier,buf);
- langopts = &translator->langopts;
- }
- VoiceReset(tone_only);
-
- if(!tone_only)
- SelectPhonemeTableName(phonemes_name); // set up phoneme_tab
-
-
- while((f_voice != NULL) && (fgets_strip(buf,sizeof(buf),f_voice) != NULL))
- {
- // isolate the attribute name
- for(p=buf; (*p != 0) && !isspace(*p); p++);
- *p++ = 0;
-
- if(buf[0] == 0) continue;
-
- key = 0;
- for(k=keyword_tab; k->mnem != NULL; k++)
- {
- if(strcmp(buf,k->mnem)==0)
- {
- key = k->data;
- break;
- }
- }
-
- switch(key)
- {
- case V_LANGUAGE:
- {
- unsigned int len;
- int priority;
-
- if(tone_only)
- break;
-
- priority = DEFAULT_LANGUAGE_PRIORITY;
- language_name[0] = 0;
-
- sscanf(p,"%s %d",language_name,&priority);
- if(strcmp(language_name,"variant") == 0)
- break;
-
- len = strlen(language_name) + 2;
- // check for space in languages[]
- if(len < (sizeof(voice_languages)-langix-1))
- {
- voice_languages[langix] = priority;
-
- strcpy(&voice_languages[langix+1],language_name);
- langix += len;
- }
-
- // only act on the first language line
- if(language_set == 0)
- {
- language_type = strtok(language_name,"-");
- language_set = 1;
- strcpy(translator_name,language_type);
- strcpy(new_dictionary,language_type);
- strcpy(phonemes_name,language_type);
- SelectPhonemeTableName(phonemes_name);
-
- if(new_translator != NULL)
- DeleteTranslator(new_translator);
-
- new_translator = SelectTranslator(translator_name);
- langopts = &new_translator->langopts;
- }
- }
- break;
-
- case V_NAME:
- if(tone_only == 0)
- {
- while(isspace(*p)) p++;
- strncpy0(voice_name,p,sizeof(voice_name));
- }
- break;
-
- case V_GENDER:
- {
- int age;
- char vgender[80];
- sscanf(p,"%s %d",vgender,&age);
- voice_selected.gender = LookupMnem(genders,vgender);
- voice_selected.age = age;
- }
- break;
-
- case V_TRANSLATOR:
- if(tone_only) break;
-
- sscanf(p,"%s",translator_name);
-
- if(new_translator != NULL)
- DeleteTranslator(new_translator);
-
- new_translator = SelectTranslator(translator_name);
- langopts = &new_translator->langopts;
- break;
-
- case V_DICTIONARY: // dictionary
- sscanf(p,"%s",new_dictionary);
- break;
-
- case V_PHONEMES: // phoneme table
- sscanf(p,"%s",phonemes_name);
- break;
-
- case V_FORMANT:
- VoiceFormant(p);
- break;
-
- case V_PITCH:
- {
- double factor;
- // default is pitch 82 118
- n = sscanf(p,"%d %d",&pitch1,&pitch2);
- voice->pitch_base = (pitch1 - 9) << 12;
- voice->pitch_range = (pitch2 - pitch1) * 108;
- factor = double(pitch1 - 82)/82;
- voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch
- }
- break;
-
- case V_STRESSLENGTH: // stressLength
- stress_lengths_set = Read8Numbers(p,stress_lengths);
- break;
-
- case V_STRESSAMP: // stressAmp
- stress_amps_set = Read8Numbers(p,stress_amps);
- break;
-
- case V_STRESSADD: // stressAdd
- stress_add_set = Read8Numbers(p,stress_add);
- break;
-
- case V_INTONATION: // intonation
- sscanf(p,"%d %d",&option_tone_flags,&option_tone2);
- if((option_tone_flags & 0xff) != 0)
- langopts->intonation_group = option_tone_flags & 0xff;
- break;
-
- case V_DICTRULES: // conditional dictionary rules and list entries
- while(*p != 0)
- {
- while(isspace(*p)) p++;
- n = -1;
- if(((n = atoi(p)) > 0) && (n < 32))
- {
- p++;
- conditional_rules |= (1 << n);
- }
- while(isalnum(*p)) p++;
- }
- break;
-
- case V_REPLACE:
- if(phonemes_set == 0)
- {
- // must set up a phoneme table before we can lookup phoneme mnemonics
- SelectPhonemeTableName(phonemes_name);
- phonemes_set = 1;
- }
- PhonemeReplacement(key,p);
- break;
-
- case V_WORDGAP: // words
- sscanf(p,"%d %d",&langopts->word_gap, &langopts->vowel_pause);
- break;
-
- case V_STRESSRULE:
- sscanf(p,"%d %d %d %d",&langopts->stress_rule,
- &langopts->stress_flags,
- &langopts->unstressed_wd1,
- &langopts->unstressed_wd2);
- break;
-
- case V_CHARSET:
- if((sscanf(p,"%d",&value)==1) && (value < N_CHARSETS))
- new_translator->charset_a0 = charsets[value];
- break;
-
- case V_NUMBERS:
- sscanf(p,"%d %d",&langopts->numbers,&langopts->numbers2);
- break;
-
- case V_OPTION:
- if(sscanf(p,"%d %d",&ix,&value) == 2)
- {
- if((ix >= 0) && (ix < N_LOPTS))
- langopts->param[ix] = value;
- }
- break;
-
- case V_ECHO:
- // echo. suggest: 135mS 11%
- value = 0;
- voice->echo_amp = 0;
- sscanf(p,"%d %d",&voice->echo_delay,&voice->echo_amp);
- break;
-
- case V_FLUTTER: // flutter
- if(sscanf(p,"%d",&value)==1)
- voice->flutter = value * 32;
- break;
-
- case V_ROUGHNESS: // roughness
- if(sscanf(p,"%d",&value)==1)
- voice->roughness = value;
- break;
-
- case V_CLARITY: // formantshape
- if(sscanf(p,"%d",&value)==1)
- {
- if(value > 4)
- {
- voice->peak_shape = 1; // squarer formant peaks
- value = 4;
- }
- voice->n_harmonic_peaks = 1+value;
- }
- break;
-
- case V_TONE:
- {
- int tone_data[12];
- ReadTonePoints(p,tone_data);
- SetToneAdjust(voice,tone_data);
- }
- break;
-
- case V_VOICING:
- if(sscanf(p,"%d",&value)==1)
- voice->voicing = (value * 64)/100;
- break;
-
- case V_BREATH:
- voice->breath[0] = Read8Numbers(p,&voice->breath[1]);
- for(ix=1; ix<8; ix++)
- {
- if(ix % 2)
- voice->breath[ix] = -voice->breath[ix];
- }
- break;
-
- case V_BREATHW:
- voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]);
- break;
-
- case V_CONSONANTS:
- value = sscanf(p,"%d %d",&voice->consonant_amp, &voice->consonant_ampv);
- break;
-
- case V_MBROLA:
- {
- int srate = 16000;
- char name[40];
- char phtrans[40];
-
- phtrans[0] = 0;
- sscanf(p,"%s %s %d",name,phtrans,&srate);
- LoadMbrolaTable(name,phtrans,srate);
- }
- break;
-
- case V_KLATT:
- voice->klattv[0] = 1; // default source: IMPULSIVE
- Read8Numbers(p,voice->klattv);
- voice->klattv[KLATT_Kopen] -= 40;
- break;
-
- case V_FAST:
- Read8Numbers(p,speed.fast_settings);
- SetSpeed(2);
- break;
-
- default:
- if((key & 0xff00) == 0x100)
- {
- sscanf(p,"%d",&langopts->param[key &0xff]);
- }
- else
- {
- fprintf(stderr,"Bad voice attribute: %s\n",buf);
- }
- break;
- }
- }
- if(f_voice != NULL)
- fclose(f_voice);
-
- if((new_translator == NULL) && (!tone_only))
- {
- // not set by language attribute
- new_translator = SelectTranslator(translator_name);
- }
-
- for(ix=0; ix<N_PEAKS; ix++)
- {
- voice->freq2[ix] = voice->freq[ix];
- voice->height2[ix] = voice->height[ix];
- voice->width2[ix] = voice->width[ix];
- }
-
- if(tone_only)
- {
- new_translator = translator;
- }
- else
- {
- if((ix = SelectPhonemeTableName(phonemes_name)) < 0)
- {
- fprintf(stderr,"Unknown phoneme table: '%s'\n",phonemes_name);
- }
- voice->phoneme_tab_ix = ix;
- error = LoadDictionary(new_translator, new_dictionary, control & 4);
- if(dictionary_name[0]==0)
- return(NULL); // no dictionary loaded
-
- new_translator->dict_condition = conditional_rules;
-
- voice_languages[langix] = 0;
- }
-
- langopts = &new_translator->langopts;
-
-
- if((value = langopts->param[LOPT_LENGTH_MODS]) != 0)
- {
- SetLengthMods(new_translator,value);
- }
-
- voice->width[0] = (voice->width[0] * 105)/100;
-
- if(!tone_only)
- {
- translator = new_translator;
- }
-
- // relative lengths of different stress syllables
- for(ix=0; ix<stress_lengths_set; ix++)
- {
- translator->stress_lengths[ix] = stress_lengths[ix];
- }
- for(ix=0; ix<stress_add_set; ix++)
- {
- translator->stress_lengths[ix] += stress_add[ix];
- }
- for(ix=0; ix<stress_amps_set; ix++)
- {
- translator->stress_amps[ix] = stress_amps[ix];
- translator->stress_amps_r[ix] = stress_amps[ix] -1;
- }
-
- return(voice);
-} // end of LoadVoice
-
-
-static char *ExtractVoiceVariantName(char *vname, int variant_num)
-{//===============================================================
-// Remove any voice variant suffix (name or number) from a voice name
-// Returns the voice variant name
-
- char *p;
- static char variant_name[20];
- char variant_prefix[5];
-
- variant_name[0] = 0;
- sprintf(variant_prefix,"!v%c",PATHSEP);
-
- if(vname != NULL)
- {
- if((p = strchr(vname,'+')) != NULL)
- {
- // The voice name has a +variant suffix
- *p++ = 0; // delete the suffix from the voice name
- if(isdigit(*p))
- {
- variant_num = atoi(p); // variant number
- }
- else
- {
- // voice variant name, not number
- strcpy(variant_name,variant_prefix);
- strncpy0(&variant_name[3],p,sizeof(variant_name)-3);
- }
- }
- }
-
- if(variant_num > 0)
- {
- if(variant_num < 10)
- sprintf(variant_name,"%sm%d",variant_prefix, variant_num); // male
- else
- sprintf(variant_name,"%sf%d",variant_prefix, variant_num-10); // female
- }
-
- return(variant_name);
-} // end of ExtractVoiceVariantName
-
-
-
-voice_t *LoadVoiceVariant(const char *vname, int variant_num)
-{//==========================================================
-// Load a voice file.
-// Also apply a voice variant if specified by "variant", or by "+number" or "+name" in the "vname"
-
- voice_t *v;
- char *variant_name;
- char buf[60];
-
- strncpy0(buf,vname,sizeof(buf));
- variant_name = ExtractVoiceVariantName(buf,variant_num);
-
- if((v = LoadVoice(buf,0)) == NULL)
- return(NULL);
-
- if(variant_name[0] != 0)
- {
- v = LoadVoice(variant_name,2);
- }
- return(v);
-}
-
-
-
-static int __cdecl VoiceNameSorter(const void *p1, const void *p2)
-{//=======================================================
- int ix;
- espeak_VOICE *v1 = *(espeak_VOICE **)p1;
- espeak_VOICE *v2 = *(espeak_VOICE **)p2;
-
-
- if((ix = strcmp(&v1->languages[1],&v2->languages[1])) != 0) // primary language name
- return(ix);
- if((ix = v1->languages[0] - v2->languages[0]) != 0) // priority number
- return(ix);
- return(strcmp(v1->name,v2->name));
-}
-
-
-static int __cdecl VoiceScoreSorter(const void *p1, const void *p2)
-{//========================================================
- int ix;
- espeak_VOICE *v1 = *(espeak_VOICE **)p1;
- espeak_VOICE *v2 = *(espeak_VOICE **)p2;
-
- if((ix = v2->score - v1->score) != 0)
- return(ix);
- return(strcmp(v1->name,v2->name));
-}
-
-
-static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int spec_n_parts, int spec_lang_len, espeak_VOICE *voice)
-{//=========================================================================================================================
- int ix;
- const char *p;
- int c1, c2;
- int language_priority;
- int n_parts;
- int matching;
- int matching_parts;
- int score = 0;
- int x;
- int ratio;
- int required_age;
- int diff;
-
- p = voice->languages; // list of languages+dialects for which this voice is suitable
-
- if(strcmp(spec_language,"mbrola")==0)
- {
- // only list mbrola voices
- if(memcmp(voice->identifier,"mb/",3) == 0)
- return(100);
- return(0);
- }
-
- if(spec_n_parts == 0)
- {
- score = 100;
- }
- else
- {
- if((*p == 0) && (strcmp(spec_language,"variants")==0))
- {
- // match on a voice with no languages if the required language is "variants"
- score = 100;
- }
-
- // compare the required language with each of the languages of this voice
- while(*p != 0)
- {
- language_priority = *p++;
-
- matching = 1;
- matching_parts = 0;
- n_parts = 1;
-
- for(ix=0; ; ix++)
- {
- if((ix >= spec_lang_len) || ((c1 = spec_language[ix]) == '-'))
- c1 = 0;
- if((c2 = p[ix]) == '-')
- c2 = 0;
-
- if(c1 != c2)
- {
- matching = 0;
- }
-
- if(p[ix] == '-')
- {
- n_parts++;
- if(matching)
- matching_parts++;
- }
- if(p[ix] == 0)
- break;
- }
- p += (ix+1);
- matching_parts += matching; // number of parts which match
-
- if(matching_parts == 0)
- continue; // no matching parts for this language
-
- x = 5;
- // reduce the score if not all parts of the required language match
- if((diff = (spec_n_parts - matching_parts)) > 0)
- x -= diff;
-
- // reduce score if the language is more specific than required
- if((diff = (n_parts - matching_parts)) > 0)
- x -= diff;
-
- x = x*100 - (language_priority * 2);
-
- if(x > score)
- score = x;
- }
- }
- if(score == 0)
- return(0);
-
- if(voice_spec->name != NULL)
- {
- if(strcmp(voice_spec->name,voice->name)==0)
- {
- // match on voice name
- score += 500;
- }
- else
- if(strcmp(voice_spec->name,voice->identifier)==0)
- {
- score += 400;
- }
- }
-
- if(((voice_spec->gender == 1) || (voice_spec->gender == 2)) &&
- ((voice->gender == 1) || (voice->gender == 2)))
- {
- if(voice_spec->gender == voice->gender)
- score += 50;
- else
- score -= 50;
- }
-
- if((voice_spec->age <= 12) && (voice->gender == 2) && (voice->age > 12))
- {
- score += 5; // give some preference for non-child female voice if a child is requested
- }
-
- if(voice->age != 0)
- {
- if(voice_spec->age == 0)
- required_age = 30;
- else
- required_age = voice_spec->age;
-
- ratio = (required_age*100)/voice->age;
- if(ratio < 100)
- ratio = 10000/ratio;
- ratio = (ratio - 100)/10; // 0=exact match, 10=out by factor of 2
- x = 5 - ratio;
- if(x > 0) x = 0;
-
- score = score + x;
-
- if(voice_spec->age > 0)
- score += 10; // required age specified, favour voices with a specified age (near it)
- }
- if(score < 1)
- score = 1;
- return(score);
-} // end of ScoreVoice
-
-
-static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int control)
-{//======================================================================================
-// control: bit0=1 include mbrola voices
- int ix;
- int score;
- int nv; // number of candidates
- int n_parts=0;
- int lang_len=0;
- espeak_VOICE *vp;
- char language[80];
-
- // count number of parts in the specified language
- if((voice_select->languages != NULL) && (voice_select->languages[0] != 0))
- {
- n_parts = 1;
- lang_len = strlen(voice_select->languages);
- for(ix=0; (ix<=lang_len) && ((unsigned)ix < sizeof(language)); ix++)
- {
- if((language[ix] = tolower(voice_select->languages[ix])) == '-')
- n_parts++;
- }
- }
- // select those voices which match the specified language
- nv = 0;
- for(ix=0; ix<n_voices_list; ix++)
- {
- vp = voices_list[ix];
-
- if(((control & 1) == 0) && (memcmp(vp->identifier,"mb/",3) == 0))
- continue;
-
- if((score = ScoreVoice(voice_select, language, n_parts, lang_len, voices_list[ix])) > 0)
- {
- voices[nv++] = vp;
- vp->score = score;
- }
- }
- voices[nv] = NULL; // list terminator
-
- if(nv==0)
- return(0);
-
- // sort the selected voices by their score
- qsort(voices,nv,sizeof(espeak_VOICE *),VoiceScoreSorter);
-
- return(nv);
-} // end of SetVoiceScores
-
-
-
-
-espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name)
-{//=====================================================================
- int ix;
- int match_fname = -1;
- int match_fname2 = -1;
- int match_name = -1;
- const char *id;
- int last_part_len;
- char last_part[41];
-
- if(voices == NULL)
- {
- if(n_voices_list == 0)
- espeak_ListVoices(NULL); // create the voices list
- voices = voices_list;
- }
-
- sprintf(last_part,"%c%s",PATHSEP,name);
- last_part_len = strlen(last_part);
-
- for(ix=0; voices[ix] != NULL; ix++)
- {
- if(strcmp(name,voices[ix]->name)==0)
- {
- match_name = ix; // found matching voice name
- break;
- }
- else
- if(strcmp(name,id = voices[ix]->identifier)==0)
- {
- match_fname = ix; // matching identifier, use this if no matching name
- }
- else
- if(strcmp(last_part,&id[strlen(id)-last_part_len])==0)
- {
- match_fname2 = ix;
- }
- }
-
- if(match_name < 0)
- {
- match_name = match_fname; // no matching name, try matching filename
- if(match_name < 0)
- match_name = match_fname2; // try matching just the last part of the filename
- }
-
- if(match_name < 0)
- return(NULL);
-
- return(voices[match_name]);
-} // end of SelectVoiceByName
-
-
-
-
-char const *SelectVoice(espeak_VOICE *voice_select, int *found)
-{//============================================================
-// Returns a path within espeak-voices, with a possible +variant suffix
-// variant is an output-only parameter
- int nv; // number of candidates
- int ix, ix2;
- int j;
- int n_variants;
- int variant_number;
- int gender;
- int skip;
- int aged=1;
- char *variant_name;
- const char *p, *p_start;
- espeak_VOICE *vp = NULL;
- espeak_VOICE *vp2;
- espeak_VOICE voice_select2;
- espeak_VOICE *voices[N_VOICES_LIST]; // list of candidates
- espeak_VOICE *voices2[N_VOICES_LIST+N_VOICE_VARIANTS];
- static espeak_VOICE voice_variants[N_VOICE_VARIANTS];
- static char voice_id[50];
-
- *found = 1;
- memcpy(&voice_select2,voice_select,sizeof(voice_select2));
-
- if(n_voices_list == 0)
- espeak_ListVoices(NULL); // create the voices list
-
- if((voice_select2.languages == NULL) || (voice_select2.languages[0] == 0))
- {
- // no language is specified. Get language from the named voice
- static char buf[60];
-
- if(voice_select2.name == NULL)
- {
- if((voice_select2.name = voice_select2.identifier) == NULL)
- voice_select2.name = "default";
- }
-
- strncpy0(buf,voice_select2.name,sizeof(buf));
- variant_name = ExtractVoiceVariantName(buf,0);
-
- vp = SelectVoiceByName(voices_list,buf);
- if(vp != NULL)
- {
- voice_select2.languages = &(vp->languages[1]);
-
- if((voice_select2.gender==0) && (voice_select2.age==0) && (voice_select2.variant==0))
- {
- if(variant_name[0] != 0)
- {
- sprintf(voice_id,"%s+%s",vp->identifier,&variant_name[3]); // omit the !v/ from variant_name
- return(voice_id);
- }
-
- return(vp->identifier);
- }
- }
- }
-
- // select and sort voices for the required language
- nv = SetVoiceScores(&voice_select2,voices,0);
-
- if(nv == 0)
- {
- // no matching voice, choose the default
- *found = 0;
- if((voices[0] = SelectVoiceByName(voices_list,"default")) != NULL)
- nv = 1;
- }
-
- gender = 0;
- if((voice_select2.gender == 2) || ((voice_select2.age > 0) && (voice_select2.age < 13)))
- gender = 2;
- else
- if(voice_select2.gender == 1)
- gender = 1;
-
-#define AGE_OLD 60
- if(voice_select2.age < AGE_OLD)
- aged = 0;
-
- p = p_start = variant_lists[gender];
- if(aged == 0)
- p++; // the first voice in the variants list is older
-
- // add variants for the top voices
- n_variants = 0;
- for(ix=0, ix2=0; ix<nv; ix++)
- {
- vp = voices[ix];
- // is the main voice the required gender?
- skip=0;
- if((gender != 0) && (vp->gender != gender))
- {
- skip=1;
- }
- if((ix2==0) && aged && (vp->age < AGE_OLD))
- {
- skip=1;
- }
- if(skip==0)
- {
- voices2[ix2++] = vp;
- }
-
- for(j=0; (j < vp->xx1) && (n_variants < N_VOICE_VARIANTS);)
- {
- if((variant_number = *p) == 0)
- {
- p = p_start;
- continue;
- }
-
- vp2 = &voice_variants[n_variants++]; // allocate space for voice variant
- memcpy(vp2,vp,sizeof(espeak_VOICE)); // copy from the original voice
- vp2->variant = variant_number;
- voices2[ix2++] = vp2;
- p++;
- j++;
- }
- }
- // add any more variants to the end of the list
- while((vp != NULL) && ((variant_number = *p++) != 0) && (n_variants < N_VOICE_VARIANTS))
- {
- vp2 = &voice_variants[n_variants++]; // allocate space for voice variant
- memcpy(vp2,vp,sizeof(espeak_VOICE)); // copy from the original voice
- vp2->variant = variant_number;
- voices2[ix2++] = vp2;
- }
-
- // index the sorted list by the required variant number
- vp = voices2[voice_select2.variant % ix2];
-
- if(vp->variant != 0)
- {
- variant_name = ExtractVoiceVariantName(NULL,vp->variant);
- sprintf(voice_id,"%s+%s",vp->identifier,&variant_name[3]);
- return(voice_id);
- }
-
- return(vp->identifier);
-} // end of SelectVoice
-
-
-
-static void GetVoices(const char *path)
-{//====================================
- FILE *f_voice;
- espeak_VOICE *voice_data;
- int ftype;
- char fname[sizeof(path_home)+100];
-
-#ifdef PLATFORM_RISCOS
- int len;
- int *type;
- char *p;
- _kernel_swi_regs regs;
- _kernel_oserror *error;
- char buf[80];
- char directory2[sizeof(path_home)+100];
-
- regs.r[0] = 10;
- regs.r[1] = (int)path;
- regs.r[2] = (int)buf;
- regs.r[3] = 1;
- regs.r[4] = 0;
- regs.r[5] = sizeof(buf);
- regs.r[6] = 0;
-
- while(regs.r[3] > 0)
- {
- error = _kernel_swi(0x0c+0x20000,&regs,&regs); /* OS_GBPB 10, read directory entries */
- if((error != NULL) || (regs.r[3] == 0))
- {
- break;
- }
- type = (int *)(&buf[16]);
- len = strlen(&buf[20]);
- sprintf(fname,"%s.%s",path,&buf[20]);
-
- if(*type == 2)
- {
- // a sub-directory
- GetVoices(fname);
- }
- else
- {
- // a regular line, add it to the voices list
- if((f_voice = fopen(fname,"r")) == NULL)
- continue;
-
- // pass voice file name within the voices directory
- voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, &buf[20]);
- fclose(f_voice);
-
- if(voice_data != NULL)
- {
- voices_list[n_voices_list++] = voice_data;
- }
- }
- }
-#else
-#ifdef PLATFORM_WINDOWS
- WIN32_FIND_DATAA FindFileData;
- HANDLE hFind = INVALID_HANDLE_VALUE;
-
-#undef UNICODE // we need FindFirstFileA() which takes an 8-bit c-string
- sprintf(fname,"%s\\*",path);
- hFind = FindFirstFileA(fname, &FindFileData);
- if(hFind == INVALID_HANDLE_VALUE)
- return;
-
- do {
- sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName);
-
- ftype = GetFileLength(fname);
-
- if((ftype == -2) && (FindFileData.cFileName[0] != '.'))
- {
- // a sub-sirectory
- GetVoices(fname);
- }
- else
- if(ftype > 0)
- {
- // a regular line, add it to the voices list
- if((f_voice = fopen(fname,"r")) == NULL)
- continue;
-
- // pass voice file name within the voices directory
- voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName);
- fclose(f_voice);
-
- if(voice_data != NULL)
- {
- voices_list[n_voices_list++] = voice_data;
- }
- }
- } while(FindNextFileA(hFind, &FindFileData) != 0);
- FindClose(hFind);
-
-#else
- DIR *dir;
- struct dirent *ent;
-
- if((dir = opendir((char *)path)) == NULL) // note: (char *) is needed for WINCE
- return;
-
- while((ent = readdir(dir)) != NULL)
- {
- if(n_voices_list >= (N_VOICES_LIST-2))
- break; // voices list is full
-
- sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name);
-
- ftype = GetFileLength(fname);
-
- if((ftype == -2) && (ent->d_name[0] != '.'))
- {
- // a sub-sirectory
- GetVoices(fname);
- }
- else
- if(ftype > 0)
- {
- // a regular line, add it to the voices list
- if((f_voice = fopen(fname,"r")) == NULL)
- continue;
-
- // pass voice file name within the voices directory
- voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, ent->d_name);
- fclose(f_voice);
-
- if(voice_data != NULL)
- {
- voices_list[n_voices_list++] = voice_data;
- }
- }
- }
- closedir(dir);
-#endif
-#endif
-} // end of GetVoices
-
-
-
-espeak_ERROR SetVoiceByName(const char *name)
-{//=========================================
- espeak_VOICE *v;
- espeak_VOICE voice_selector;
- char *variant_name;
- static char buf[60];
-
- strncpy0(buf,name,sizeof(buf));
- variant_name = ExtractVoiceVariantName(buf,0);
-
- memset(&voice_selector,0,sizeof(voice_selector));
-// voice_selector.name = buf;
- voice_selector.name = (char *)name; // include variant name in voice stack ??
-
- // first check for a voice with this filename
- // This may avoid the need to call espeak_ListVoices().
-
- if(LoadVoice(buf,1) != NULL)
- {
- if(variant_name[0] != 0)
- {
- LoadVoice(variant_name,2);
- }
-
- DoVoiceChange(voice);
- SetVoiceStack(&voice_selector);
- return(EE_OK);
- }
-
- if(n_voices_list == 0)
- espeak_ListVoices(NULL); // create the voices list
-
- if((v = SelectVoiceByName(voices_list,buf)) != NULL)
- {
- if(LoadVoice(v->identifier,0) != NULL)
- {
- if(variant_name[0] != 0)
- {
- LoadVoice(variant_name,2);
- }
- DoVoiceChange(voice);
- SetVoiceStack(&voice_selector);
- return(EE_OK);
- }
- }
- return(EE_INTERNAL_ERROR); // voice name not found
-} // end of SetVoiceByName
-
-
-
-espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector)
-{//============================================================
- const char *voice_id;
- int voice_found;
-
- voice_id = SelectVoice(voice_selector, &voice_found);
-
- if(voice_found == 0)
- return(EE_NOT_FOUND);
-
- LoadVoiceVariant(voice_id,0);
- DoVoiceChange(voice);
- SetVoiceStack(voice_selector);
-
- return(EE_OK);
-} // end of SetVoiceByProperties
-
-
-
-
-//=======================================================================
-// Library Interface Functions
-//=======================================================================
-#pragma GCC visibility push(default)
-
-
-const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec)
-{//========================================================================
-#ifndef PLATFORM_RISCOS
- int ix;
- int j;
- espeak_VOICE *v;
- static espeak_VOICE *voices[N_VOICES_LIST];
- char path_voices[sizeof(path_home)+12];
-
- // free previous voice list data
-
- for(ix=0; ix<n_voices_list; ix++)
- {
- if(voices_list[ix] != NULL)
- free(voices_list[ix]);
- }
- n_voices_list = 0;
-
- sprintf(path_voices,"%s%cvoices",path_home,PATHSEP);
- len_path_voices = strlen(path_voices)+1;
-
- GetVoices(path_voices);
- voices_list[n_voices_list] = NULL; // voices list terminator
-
- // sort the voices list
- qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *),VoiceNameSorter);
-
-
- if(voice_spec)
- {
- // select the voices which match the voice_spec, and sort them by preference
- SetVoiceScores(voice_spec,voices,1);
- }
- else
- {
- // list all: omit variant voices and mbrola voices
- j = 0;
- for(ix=0; (v = voices_list[ix]) != NULL; ix++)
- {
- if((v->languages[0] != 0) && (strcmp(&v->languages[1],"variant") != 0) && (memcmp(v->identifier,"mb/",3) != 0))
- {
- voices[j++] = v;
- }
- }
- voices[j] = NULL;
- }
- return((const espeak_VOICE **)voices);
-#endif
- return((const espeak_VOICE **)voices_list);
-} // end of espeak_ListVoices
-
-
-
-espeak_VOICE *espeak_GetCurrentVoice(void)
-{//==================================================
- return(&voice_selected);
-}
-
-#pragma GCC visibility pop
-
-
diff --git a/navit/support/espeak/wave.c b/navit/support/espeak/wave.c
deleted file mode 100755
index 364dcf577..000000000
--- a/navit/support/espeak/wave.c
+++ /dev/null
@@ -1,1112 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2007, Gilles Casse <gcasse@oralux.org> *
- * based on AudioIO.cc (Audacity-1.2.4b) and wavegen.cpp *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-
-#include "speech.h"
-
-#ifdef USE_ASYNC
-// This source file is only used for asynchronious modes
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <assert.h>
-#include <sys/time.h>
-#include <time.h>
-
-#include "portaudio.h"
-#ifndef PLATFORM_WINDOWS
-#include <unistd.h>
-#endif
-#include "wave.h"
-#include "debug.h"
-
-//<Definitions
-
-enum {ONE_BILLION=1000000000};
-
-#ifdef USE_PORTAUDIO
-
-#undef USE_PORTAUDIO
-// determine portaudio version by looking for a #define which is not in V18
-#ifdef paNeverDropInput
-#define USE_PORTAUDIO 19
-#else
-#define USE_PORTAUDIO 18
-#endif
-
-
-static t_wave_callback* my_callback_is_output_enabled=NULL;
-
-#define N_WAV_BUF 10
-#define SAMPLE_RATE 22050
-#define FRAMES_PER_BUFFER 512
-#define BUFFER_LENGTH (SAMPLE_RATE*2*sizeof(uint16_t))
-#define THRESHOLD (BUFFER_LENGTH/5)
-static char myBuffer[BUFFER_LENGTH];
-static char* myRead=NULL;
-static char* myWrite=NULL;
-static int out_channels=1;
-static int my_stream_could_start=0;
-
-static int mInCallbackFinishedState = false;
-#if (USE_PORTAUDIO == 18)
-static PortAudioStream *pa_stream=NULL;
-#endif
-#if (USE_PORTAUDIO == 19)
-static struct PaStreamParameters myOutputParameters;
-static PaStream *pa_stream=NULL;
-#endif
-
-static int userdata[4];
-static PaError pa_init_err=0;
-
-// time measurement
-// The read and write position audio stream in the audio stream are measured in ms.
-//
-// * When the stream is opened, myReadPosition and myWritePosition are cleared.
-// * myWritePosition is updated in wave_write.
-// * myReadPosition is updated in pa_callback (+ sample delay).
-
-static uint32_t myReadPosition = 0; // in ms
-static uint32_t myWritePosition = 0;
-
-//>
-//<init_buffer, get_used_mem
-
-static void init_buffer()
-{
- myWrite = myBuffer;
- myRead = myBuffer;
- memset(myBuffer,0,BUFFER_LENGTH);
- myReadPosition = myWritePosition = 0;
- SHOW("init_buffer > myRead=0x%x, myWrite=0x%x, BUFFER_LENGTH=0x%x, myReadPosition = myWritePosition = 0\n", (int)myRead, (int)myWrite, BUFFER_LENGTH);
-}
-
-static unsigned int get_used_mem()
-{
- char* aRead = myRead;
- char* aWrite = myWrite;
- unsigned int used = 0;
-
- assert ((aRead >= myBuffer)
- && (aRead <= myBuffer + BUFFER_LENGTH)
- && (aWrite >= myBuffer)
- && (aWrite <= myBuffer + BUFFER_LENGTH));
-
- if (aRead < aWrite)
- {
- used = aWrite - aRead;
- }
- else
- {
- used = aWrite + BUFFER_LENGTH - aRead;
- }
- SHOW("get_used_mem > %d\n", used);
-
- return used;
-}
-
-//>
-//<start stream
-
-static void start_stream()
-{
- PaError err;
- SHOW_TIME("start_stream");
-
- my_stream_could_start=0;
- mInCallbackFinishedState = false;
-
- err = Pa_StartStream(pa_stream);
- SHOW("start_stream > Pa_StartStream=%d (%s)\n", err, Pa_GetErrorText(err));
-
-#if USE_PORTAUDIO == 19
- if(err == paStreamIsNotStopped)
- {
- SHOW_TIME("start_stream > restart stream (begin)");
- // not sure why we need this, but PA v19 seems to need it
- err = Pa_StopStream(pa_stream);
- SHOW("start_stream > Pa_StopStream=%d (%s)\n", err, Pa_GetErrorText(err));
- err = Pa_StartStream(pa_stream);
- SHOW("start_stream > Pa_StartStream=%d (%s)\n", err, Pa_GetErrorText(err));
- SHOW_TIME("start_stream > restart stream (end)");
- }
-#endif
-}
-
-//>
-//<pa_callback
-
-/* This routine will be called by the PortAudio engine when audio is needed.
-** It may called at interrupt level on some machines so don't do anything
-** that could mess up the system like calling malloc() or free().
-*/
-#if USE_PORTAUDIO == 18
-static int pa_callback(void *inputBuffer, void *outputBuffer,
- unsigned long framesPerBuffer, PaTimestamp outTime, void *userData )
-#else
- static int pa_callback(const void *inputBuffer, void *outputBuffer,
- long unsigned int framesPerBuffer, const PaStreamCallbackTimeInfo *outTime,
- PaStreamCallbackFlags flags, void *userData )
-#endif
-{
- int aResult=0; // paContinue
- char* aWrite = myWrite;
- size_t n = out_channels*sizeof(uint16_t)*framesPerBuffer;
-
- myReadPosition += framesPerBuffer;
- SHOW("pa_callback > myReadPosition=%u, framesPerBuffer=%lu (n=0x%x) \n",(int)myReadPosition, framesPerBuffer, n);
-
- if (aWrite >= myRead)
- {
- if((size_t)(aWrite - myRead) >= n)
- {
- memcpy(outputBuffer, myRead, n);
- myRead += n;
- }
- else
- {
- SHOW_TIME("pa_callback > underflow");
- aResult=1; // paComplete;
- mInCallbackFinishedState = true;
- size_t aUsedMem=0;
- aUsedMem = (size_t)(aWrite - myRead);
- if (aUsedMem)
- {
- memcpy(outputBuffer, myRead, aUsedMem);
- }
- char* p = (char*)outputBuffer + aUsedMem;
- memset(p, 0, n - aUsedMem);
- // myReadPosition += aUsedMem/(out_channels*sizeof(uint16_t));
- myRead = aWrite;
- }
- }
- else // myRead > aWrite
- {
- if ((size_t)(myBuffer + BUFFER_LENGTH - myRead) >= n)
- {
- memcpy(outputBuffer, myRead, n);
- myRead += n;
- }
- else if ((size_t)(aWrite + BUFFER_LENGTH - myRead) >= n)
- {
- int aTopMem = myBuffer + BUFFER_LENGTH - myRead;
- if (aTopMem)
- {
- SHOW("pa_callback > myRead=0x%x, aTopMem=0x%x\n",(int)myRead, (int)aTopMem);
- memcpy(outputBuffer, myRead, aTopMem);
- }
- int aRest = n - aTopMem;
- if (aRest)
- {
- SHOW("pa_callback > myRead=0x%x, aRest=0x%x\n",(int)myRead, (int)aRest);
- char* p = (char*)outputBuffer + aTopMem;
- memcpy(p, myBuffer, aRest);
- }
- myRead = myBuffer + aRest;
- }
- else
- {
- SHOW_TIME("pa_callback > underflow");
- aResult=1; // paComplete;
-
- int aTopMem = myBuffer + BUFFER_LENGTH - myRead;
- if (aTopMem)
- {
- SHOW("pa_callback > myRead=0x%x, aTopMem=0x%x\n",(int)myRead, (int)aTopMem);
- memcpy(outputBuffer, myRead, aTopMem);
- }
- int aRest = aWrite - myBuffer;
- if (aRest)
- {
- SHOW("pa_callback > myRead=0x%x, aRest=0x%x\n",(int)myRead, (int)aRest);
- char* p = (char*)outputBuffer + aTopMem;
- memcpy(p, myBuffer, aRest);
- }
-
- size_t aUsedMem = aTopMem + aRest;
- char* p = (char*)outputBuffer + aUsedMem;
- memset(p, 0, n - aUsedMem);
- // myReadPosition += aUsedMem/(out_channels*sizeof(uint16_t));
- myRead = aWrite;
- }
- }
-
- SHOW("pa_callback > myRead=%x\n",(int)myRead);
-
-
- // #if USE_PORTAUDIO == 18
- // if(aBufferEmpty)
- // {
- // static int end_timer = 0;
- // if(end_timer == 0)
- // end_timer = 4;
- // if(end_timer > 0)
- // {
- // end_timer--;
- // if(end_timer == 0)
- // return(1);
- // }
- // }
- // return(0);
- // #else
-
-#ifdef ARCH_BIG
- {
- // BIG-ENDIAN, swap the order of bytes in each sound sample in the portaudio buffer
- int c;
- unsigned char *out_ptr;
- unsigned char *out_end;
- out_ptr = (unsigned char *)outputBuffer;
- out_end = out_ptr + framesPerBuffer*2 * out_channels;
- while(out_ptr < out_end)
- {
- c = out_ptr[0];
- out_ptr[0] = out_ptr[1];
- out_ptr[1] = c;
- out_ptr += 2;
- }
- }
-#endif
-
-
- return(aResult);
- //#endif
-
-} // end of WaveCallBack
-
-//>
-
-
-void wave_flush(void* theHandler)
-{
- ENTER("wave_flush");
-
- if (my_stream_could_start)
- {
-// #define buf 1024
-// static char a_buffer[buf*2];
-// memset(a_buffer,0,buf*2);
-// wave_write(theHandler, a_buffer, buf*2);
- start_stream();
- }
-}
-
-//<wave_open_sound
-
-static int wave_open_sound()
-{
- ENTER("wave_open_sound");
-
- PaError err=paNoError;
- PaError active;
-
-#if USE_PORTAUDIO == 18
- active = Pa_StreamActive(pa_stream);
-#else
- active = Pa_IsStreamActive(pa_stream);
-#endif
-
- if(active == 1)
- {
- SHOW_TIME("wave_open_sound > already active");
- return(0);
- }
- if(active < 0)
- {
- out_channels = 1;
-
-#if USE_PORTAUDIO == 18
- // err = Pa_OpenDefaultStream(&pa_stream,0,1,paInt16,SAMPLE_RATE,FRAMES_PER_BUFFER,N_WAV_BUF,pa_callback,(void *)userdata);
-
- PaDeviceID playbackDevice = Pa_GetDefaultOutputDeviceID();
-
- PaError err = Pa_OpenStream( &pa_stream,
- /* capture parameters */
- paNoDevice,
- 0,
- paInt16,
- NULL,
- /* playback parameters */
- playbackDevice,
- out_channels,
- paInt16,
- NULL,
- /* general parameters */
- SAMPLE_RATE, FRAMES_PER_BUFFER, 0,
- //paClipOff | paDitherOff,
- paNoFlag,
- pa_callback, (void *)userdata);
-
- SHOW("wave_open_sound > Pa_OpenDefaultStream(1): err=%d (%s)\n",err, Pa_GetErrorText(err));
-
- if(err == paInvalidChannelCount)
- {
- SHOW_TIME("wave_open_sound > try stereo");
- // failed to open with mono, try stereo
- out_channels = 2;
- // myOutputParameters.channelCount = out_channels;
- PaError err = Pa_OpenStream( &pa_stream,
- /* capture parameters */
- paNoDevice,
- 0,
- paInt16,
- NULL,
- /* playback parameters */
- playbackDevice,
- out_channels,
- paInt16,
- NULL,
- /* general parameters */
- SAMPLE_RATE, FRAMES_PER_BUFFER, 0,
- //paClipOff | paDitherOff,
- paNoFlag,
- pa_callback, (void *)userdata);
-// err = Pa_OpenDefaultStream(&pa_stream,0,2,paInt16,
-// SAMPLE_RATE,
-// FRAMES_PER_BUFFER,
-// N_WAV_BUF,pa_callback,(void *)userdata);
- SHOW("wave_open_sound > Pa_OpenDefaultStream(2): err=%d (%s)\n",err, Pa_GetErrorText(err));
- err=0; // avoid warning
- }
- mInCallbackFinishedState = false; // v18 only
-#else
- myOutputParameters.channelCount = out_channels;
- unsigned long framesPerBuffer = paFramesPerBufferUnspecified;
- err = Pa_OpenStream(
- &pa_stream,
- NULL, /* no input */
- &myOutputParameters,
- SAMPLE_RATE,
- framesPerBuffer,
- paNoFlag,
- // paClipOff | paDitherOff,
- pa_callback,
- (void *)userdata);
- if ((err!=paNoError)
- && (err!=paInvalidChannelCount)) //err==paUnanticipatedHostError
- {
- fprintf(stderr, "wave_open_sound > Pa_OpenStream : err=%d (%s)\n",err,Pa_GetErrorText(err));
- framesPerBuffer = FRAMES_PER_BUFFER;
- err = Pa_OpenStream(
- &pa_stream,
- NULL, /* no input */
- &myOutputParameters,
- SAMPLE_RATE,
- framesPerBuffer,
- paNoFlag,
- // paClipOff | paDitherOff,
- pa_callback,
- (void *)userdata);
- }
- if(err == paInvalidChannelCount)
- {
- SHOW_TIME("wave_open_sound > try stereo");
- // failed to open with mono, try stereo
- out_channels = 2;
- myOutputParameters.channelCount = out_channels;
- err = Pa_OpenStream(
- &pa_stream,
- NULL, /* no input */
- &myOutputParameters,
- SAMPLE_RATE,
- framesPerBuffer,
- paNoFlag,
- // paClipOff | paDitherOff,
- pa_callback,
- (void *)userdata);
-
- // err = Pa_OpenDefaultStream(&pa_stream,0,2,paInt16,(double)SAMPLE_RATE,FRAMES_PER_BUFFER,pa_callback,(void *)userdata);
- }
- mInCallbackFinishedState = false;
-#endif
- }
-
- SHOW("wave_open_sound > %s\n","LEAVE");
-
- return (err != paNoError);
-}
-
-//>
-//<select_device
-
-#if (USE_PORTAUDIO == 19)
-static void update_output_parameters(int selectedDevice, const PaDeviceInfo *deviceInfo)
-{
- // const PaDeviceInfo *pdi = Pa_GetDeviceInfo(i);
- myOutputParameters.device = selectedDevice;
- // myOutputParameters.channelCount = pdi->maxOutputChannels;
- myOutputParameters.channelCount = 1;
- myOutputParameters.sampleFormat = paInt16;
-
- // Latency greater than 100ms for avoiding glitches
- // (e.g. when moving a window in a graphical desktop)
- // deviceInfo = Pa_GetDeviceInfo(selectedDevice);
- if (deviceInfo)
- {
- double aLatency = deviceInfo->defaultLowOutputLatency;
- double aCoeff = round(0.100 / aLatency);
-// myOutputParameters.suggestedLatency = aCoeff * aLatency; // to avoid glitches ?
- myOutputParameters.suggestedLatency = aLatency; // for faster response ?
- SHOW("Device=%d, myOutputParameters.suggestedLatency=%f, aCoeff=%f\n",
- selectedDevice,
- myOutputParameters.suggestedLatency,
- aCoeff);
- }
- else
- {
- myOutputParameters.suggestedLatency = (double)0.1; // 100ms
- SHOW("Device=%d, myOutputParameters.suggestedLatency=%f (default)\n",
- selectedDevice,
- myOutputParameters.suggestedLatency);
- }
- //pdi->defaultLowOutputLatency;
-
- myOutputParameters.hostApiSpecificStreamInfo = NULL;
-}
-#endif
-
-static void select_device(const char* the_api)
-{
- ENTER("select_device");
-
-#if (USE_PORTAUDIO == 19)
- int numDevices = Pa_GetDeviceCount();
- if( numDevices < 0 )
- {
- SHOW( "ERROR: Pa_CountDevices returned 0x%x\n", numDevices );
- assert(0);
- }
-
- PaDeviceIndex i=0, selectedIndex=0, defaultAlsaIndex=numDevices;
- const PaDeviceInfo *deviceInfo=NULL;
- const PaDeviceInfo *selectedDeviceInfo=NULL;
-
- if(option_device_number >= 0)
- {
- selectedIndex = option_device_number;
- selectedDeviceInfo = Pa_GetDeviceInfo(selectedIndex);
- }
-
- if(selectedDeviceInfo == NULL)
- {
- for( i=0; i<numDevices; i++ )
- {
- deviceInfo = Pa_GetDeviceInfo( i );
-
- if (deviceInfo == NULL)
- {
- break;
- }
- const PaHostApiInfo *hostInfo = Pa_GetHostApiInfo( deviceInfo->hostApi );
-
- if (hostInfo && hostInfo->type == paALSA)
- {
- // Check (once) the default output device
- if (defaultAlsaIndex == numDevices)
- {
- defaultAlsaIndex = hostInfo->defaultOutputDevice;
- const PaDeviceInfo *deviceInfo = Pa_GetDeviceInfo( defaultAlsaIndex );
- update_output_parameters(defaultAlsaIndex, deviceInfo);
- if (Pa_IsFormatSupported(NULL, &myOutputParameters, SAMPLE_RATE) == 0)
- {
- SHOW( "select_device > ALSA (default), name=%s (#%d)\n", deviceInfo->name, defaultAlsaIndex);
- selectedIndex = defaultAlsaIndex;
- selectedDeviceInfo = deviceInfo;
- break;
- }
- }
-
- // if the default output device does not match,
- // look for the device with the highest number of output channels
- SHOW( "select_device > ALSA, i=%d (numDevices=%d)\n", i, numDevices);
-
- update_output_parameters(i, deviceInfo);
-
- if (Pa_IsFormatSupported(NULL, &myOutputParameters, SAMPLE_RATE) == 0)
- {
- SHOW( "select_device > ALSA, name=%s (#%d)\n", deviceInfo->name, i);
-
- if (!selectedDeviceInfo
- || (selectedDeviceInfo->maxOutputChannels < deviceInfo->maxOutputChannels))
- {
- selectedIndex = i;
- selectedDeviceInfo = deviceInfo;
- }
- }
- }
- }
- }
-
- if (selectedDeviceInfo)
- {
- update_output_parameters(selectedIndex, selectedDeviceInfo);
- }
- else
- {
- i = Pa_GetDefaultOutputDevice();
- deviceInfo = Pa_GetDeviceInfo( i );
- update_output_parameters(i, deviceInfo);
- }
-
-#endif
-}
-
-//>
-
-
-// int wave_Close(void* theHandler)
-// {
-// SHOW_TIME("WaveCloseSound");
-
-// // PaError active;
-
-// // check whether speaking has finished, and close the stream
-// if(pa_stream != NULL)
-// {
-// Pa_CloseStream(pa_stream);
-// pa_stream = NULL;
-// init_buffer();
-
-// // #if USE_PORTAUDIO == 18
-// // active = Pa_StreamActive(pa_stream);
-// // #else
-// // active = Pa_IsStreamActive(pa_stream);
-// // #endif
-// // if(active == 0)
-// // {
-// // SHOW_TIME("WaveCloseSound > ok, not active");
-// // Pa_CloseStream(pa_stream);
-// // pa_stream = NULL;
-// // return(1);
-// // }
-// }
-// return(0);
-// }
-
-//<wave_set_callback_is_output_enabled
-
-void wave_set_callback_is_output_enabled(t_wave_callback* cb)
-{
- my_callback_is_output_enabled = cb;
-}
-
-//>
-//<wave_init
-
-// TBD: the arg could be "alsa", "oss",...
-void wave_init()
-{
- ENTER("wave_init");
- PaError err;
-
- pa_stream = NULL;
- mInCallbackFinishedState = false;
- init_buffer();
-
- // PortAudio sound output library
- err = Pa_Initialize();
- pa_init_err = err;
- if(err != paNoError)
- {
- SHOW_TIME("wave_init > Failed to initialise the PortAudio sound");
- }
-}
-
-//>
-//<wave_open
-
-void* wave_open(const char* the_api)
-{
- ENTER("wave_open");
- static int once=0;
-
- // TBD: the_api (e.g. "alsa") is not used at the moment
- // select_device is called once
- if (!once)
- {
- select_device("alsa");
- once=1;
- }
- return((void*)1);
-}
-
-//>
-//<copyBuffer
-
-
-static size_t copyBuffer(char* dest, char* src, const size_t theSizeInBytes)
-{
- size_t bytes_written = 0;
- unsigned int i = 0;
- uint16_t* a_dest = NULL;
- uint16_t* a_src = NULL;
-
- if ((src != NULL) && dest != NULL)
- {
- // copy for one channel (mono)?
- if(out_channels==1)
- {
- SHOW("copyBuffer > 1 channel > memcpy %x (%d bytes)\n", (int)myWrite, theSizeInBytes);
- memcpy(dest, src, theSizeInBytes);
- bytes_written = theSizeInBytes;
- }
- else // copy for 2 channels (stereo)
- {
- SHOW("copyBuffer > 2 channels > memcpy %x (%d bytes)\n", (int)myWrite, theSizeInBytes);
- i = 0;
- a_dest = (uint16_t* )dest;
- a_src = (uint16_t* )src;
-
- for(i=0; i<theSizeInBytes/2; i++)
- {
- a_dest[2*i] = a_src[i];
- a_dest[2*i+1] = a_src[i];
- }
- bytes_written = 2*theSizeInBytes;
- } // end if(out_channels==1)
- } // end if ((src != NULL) && dest != NULL)
-
- return bytes_written;
-}
-
-//>
-//<wave_write
-
-size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize)
-{
- ENTER("wave_write");
- size_t bytes_written = 0;
- // space in ringbuffer for the sample needed: 1x mono channel but 2x for 1 stereo channel
- size_t bytes_to_write = (out_channels==1) ? theSize : theSize*2;
- my_stream_could_start = 0;
-
- if(pa_stream == NULL)
- {
- SHOW_TIME("wave_write > wave_open_sound\n");
- if (0 != wave_open_sound())
- {
- SHOW_TIME("wave_write > wave_open_sound fails!");
- return 0;
- }
- my_stream_could_start=1;
- }
- else if (!wave_is_busy(NULL))
- {
- my_stream_could_start = 1;
- }
- assert(BUFFER_LENGTH >= bytes_to_write);
-
- if (myWrite >= myBuffer + BUFFER_LENGTH)
- {
- myWrite = myBuffer;
- } // end if (myWrite >= myBuffer + BUFFER_LENGTH)
-
- size_t aTotalFreeMem=0;
- char* aRead = myRead;
- SHOW("wave_write > aRead=%x, myWrite=%x\n", (int)aRead, (int)myWrite);
-
- while (1)
- {
- if (my_callback_is_output_enabled && (0==my_callback_is_output_enabled()))
- {
- SHOW_TIME("wave_write > my_callback_is_output_enabled: no!");
- return 0;
- }
-
- aRead = myRead;
-
- // write pointer is before read pointer?
- if (myWrite >= aRead)
- {
- aTotalFreeMem = aRead + BUFFER_LENGTH - myWrite;
- }
- else // read pointer is before write pointer!
- {
- aTotalFreeMem = aRead - myWrite;
- } // end if (myWrite >= aRead)
-
- if (aTotalFreeMem>1)
- {
- // -1 because myWrite must be different of aRead
- // otherwise buffer would be considered as empty
- aTotalFreeMem -= 1;
- } // end if (aTotalFreeMem>1)
-
- if (aTotalFreeMem >= bytes_to_write)
- {
- break;
- } // end if (aTotalFreeMem >= bytes_to_write)
-
- //SHOW_TIME("wave_write > wait");
- SHOW("wave_write > wait: aTotalFreeMem=%d\n", aTotalFreeMem);
- SHOW("wave_write > aRead=%x, myWrite=%x\n", (int)aRead, (int)myWrite);
- usleep(10000);
- } // end while (1)
-
- aRead = myRead;
-
- // write pointer is ahead the read pointer?
- if (myWrite >= aRead)
- {
- SHOW_TIME("wave_write > myWrite >= aRead");
- // determine remaining free memory to the end of the ringbuffer
- size_t aFreeMem = myBuffer + BUFFER_LENGTH - myWrite;
- // is enough linear space available (regardless 1 or 2 channels)?
- if (aFreeMem >= bytes_to_write)
- {
- // copy direct - no wrap around at end of ringbuffer needed
- myWrite += copyBuffer(myWrite, theMono16BitsWaveBuffer, theSize);
- }
- else // not enough linear space available
- {
- // 2 channels (stereo)?
- if (out_channels == 2)
- {
- // copy with wrap around at the end of ringbuffer
- copyBuffer(myWrite, theMono16BitsWaveBuffer, aFreeMem/2);
- myWrite = myBuffer;
- myWrite += copyBuffer(myWrite, theMono16BitsWaveBuffer+aFreeMem/2, theSize - aFreeMem/2);
- }
- else // 1 channel (mono)
- {
- // copy with wrap around at the end of ringbuffer
- copyBuffer(myWrite, theMono16BitsWaveBuffer, aFreeMem);
- myWrite = myBuffer;
- myWrite += copyBuffer(myWrite, theMono16BitsWaveBuffer+aFreeMem, theSize - aFreeMem);
- } // end if (out_channels == 2)
- } // end if (aFreeMem >= bytes_to_write)
- } // if (myWrite >= aRead)
- else // read pointer is ahead the write pointer
- {
- SHOW_TIME("wave_write > myWrite <= aRead");
- myWrite += copyBuffer(myWrite, theMono16BitsWaveBuffer, theSize);
- } // end if (myWrite >= aRead)
-
- bytes_written = bytes_to_write;
- myWritePosition += theSize/sizeof(uint16_t); // add number of samples
-
- if (my_stream_could_start && (get_used_mem() >= out_channels * sizeof(uint16_t) * FRAMES_PER_BUFFER))
- {
- start_stream();
- } // end if (my_stream_could_start && (get_used_mem() >= out_channels * sizeof(uint16_t) * FRAMES_PER_BUFFER))
-
- SHOW_TIME("wave_write > LEAVE");
-
- return bytes_written;
-}
-
-//>
-//<wave_close
-
-int wave_close(void* theHandler)
-{
- SHOW_TIME("wave_close > ENTER");
-
- static int aStopStreamCount = 0;
-
-#if (USE_PORTAUDIO == 19)
- if( pa_stream == NULL )
- {
- SHOW_TIME("wave_close > LEAVE (NULL stream)");
- return 0;
- }
-
- if( Pa_IsStreamStopped( pa_stream ) )
- {
- SHOW_TIME("wave_close > LEAVE (stopped)");
- return 0;
- }
-#else
- if( pa_stream == NULL )
- {
- SHOW_TIME("wave_close > LEAVE (NULL stream)");
- return 0;
- }
-
- if( Pa_StreamActive( pa_stream ) == false && mInCallbackFinishedState == false )
- {
- SHOW_TIME("wave_close > LEAVE (not active)");
- return 0;
- }
-#endif
-
- // Avoid race condition by making sure this function only
- // gets called once at a time
- aStopStreamCount++;
- if (aStopStreamCount != 1)
- {
- SHOW_TIME("wave_close > LEAVE (stopStreamCount)");
- return 0;
- }
-
- // Comment from Audacity-1.2.4b adapted to the eSpeak context.
- //
- // We got here in one of two ways:
- //
- // 1. The calling program calls the espeak_Cancel function and we
- // therefore want to stop as quickly as possible.
- // So we use AbortStream(). If this is
- // the case the portaudio stream is still in the Running state
- // (see PortAudio state machine docs).
- //
- // 2. The callback told PortAudio to stop the stream since it had
- // reached the end of the selection.
- // The event polling thread discovered this by noticing that
- // wave_is_busy() returned false.
- // wave_is_busy() (which calls Pa_GetStreamActive()) will not return
- // false until all buffers have finished playing, so we can call
- // AbortStream without losing any samples. If this is the case
- // we are in the "callback finished state" (see PortAudio state
- // machine docs).
- //
- // The moral of the story: We can call AbortStream safely, without
- // losing samples.
- //
- // DMM: This doesn't seem to be true; it seems to be necessary to
- // call StopStream if the callback brought us here, and AbortStream
- // if the user brought us here.
- //
-
-#if (USE_PORTAUDIO == 19)
- if (pa_stream)
- {
- Pa_AbortStream( pa_stream );
- SHOW_TIME("wave_close > Pa_AbortStream (end)");
-
- Pa_CloseStream( pa_stream );
- SHOW_TIME("wave_close > Pa_CloseStream (end)");
- pa_stream = NULL;
- mInCallbackFinishedState = false;
- }
-#else
- if (pa_stream)
- {
- if (mInCallbackFinishedState)
- {
- Pa_StopStream( pa_stream );
- SHOW_TIME("wave_close > Pa_StopStream (end)");
- }
- else
- {
- Pa_AbortStream( pa_stream );
- SHOW_TIME("wave_close > Pa_AbortStream (end)");
- }
- Pa_CloseStream( pa_stream );
- SHOW_TIME("wave_close > Pa_CloseStream (end)");
-
- pa_stream = NULL;
- mInCallbackFinishedState = false;
- }
-#endif
- init_buffer();
-
- aStopStreamCount = 0; // last action
- SHOW_TIME("wave_close > LEAVE");
- return 0;
-}
-
-// int wave_close(void* theHandler)
-// {
-// ENTER("wave_close");
-
-// if(pa_stream != NULL)
-// {
-// PaError err = Pa_AbortStream(pa_stream);
-// SHOW_TIME("wave_close > Pa_AbortStream (end)");
-// SHOW("wave_close Pa_AbortStream > err=%d\n",err);
-// while(1)
-// {
-// PaError active;
-// #if USE_PORTAUDIO == 18
-// active = Pa_StreamActive(pa_stream);
-// #else
-// active = Pa_IsStreamActive(pa_stream);
-// #endif
-// if (active != 1)
-// {
-// break;
-// }
-// SHOW("wave_close > active=%d\n",err);
-// usleep(10000); /* sleep until playback has finished */
-// }
-// err = Pa_CloseStream( pa_stream );
-// SHOW_TIME("wave_close > Pa_CloseStream (end)");
-// SHOW("wave_close Pa_CloseStream > err=%d\n",err);
-// pa_stream = NULL;
-// init_buffer();
-// }
-// return 0;
-// }
-
-//>
-//<wave_is_busy
-
-int wave_is_busy(void* theHandler)
-{
- PaError active=0;
-
- SHOW_TIME("wave_is_busy");
-
- if (pa_stream)
- {
-#if USE_PORTAUDIO == 18
- active = Pa_StreamActive(pa_stream)
- && (mInCallbackFinishedState == false);
-#else
- active = Pa_IsStreamActive(pa_stream)
- && (mInCallbackFinishedState == false);
-#endif
- }
-
- SHOW("wave_is_busy: %d\n",active);
-
-
- return (active==1);
-}
-
-//>
-//<wave_terminate
-
-void wave_terminate()
-{
- ENTER("wave_terminate");
-
- Pa_Terminate();
-
-}
-
-//>
-//<wave_get_read_position, wave_get_write_position, wave_get_remaining_time
-
-uint32_t wave_get_read_position(void* theHandler)
-{
- SHOW("wave_get_read_position > myReadPosition=%u\n", myReadPosition);
- return myReadPosition;
-}
-
-uint32_t wave_get_write_position(void* theHandler)
-{
- SHOW("wave_get_write_position > myWritePosition=%u\n", myWritePosition);
- return myWritePosition;
-}
-
-int wave_get_remaining_time(uint32_t sample, uint32_t* time)
-{
- double a_time=0;
-
- if (!time || !pa_stream)
- {
- SHOW("event get_remaining_time> %s\n","audio device not available");
- return -1;
- }
-
- if (sample > myReadPosition)
- {
- // TBD: take in account time suplied by portaudio V18 API
- a_time = sample - myReadPosition;
- a_time = 0.5 + (a_time * 1000.0) / SAMPLE_RATE;
- }
- else
- {
- a_time = 0;
- }
-
- SHOW("wave_get_remaining_time > sample=%d, time=%d\n", sample, (uint32_t)a_time);
-
- *time = (uint32_t)a_time;
-
- return 0;
-}
-
-//>
-//<wave_test_get_write_buffer
-
-void *wave_test_get_write_buffer()
-{
- return myWrite;
-}
-
-
-#else
-// notdef USE_PORTAUDIO
-
-
-void wave_init() {}
-void* wave_open(const char* the_api) {return (void *)1;}
-size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;}
-int wave_close(void* theHandler) {return 0;}
-int wave_is_busy(void* theHandler) {return 0;}
-void wave_terminate() {}
-uint32_t wave_get_read_position(void* theHandler) {return 0;}
-uint32_t wave_get_write_position(void* theHandler) {return 0;}
-void wave_flush(void* theHandler) {}
-typedef int (t_wave_callback)(void);
-void wave_set_callback_is_output_enabled(t_wave_callback* cb) {}
-extern void* wave_test_get_write_buffer() {return NULL;}
-
-int wave_get_remaining_time(uint32_t sample, uint32_t* time)
-{
- if (!time) return(-1);
- *time = (uint32_t)0;
- return 0;
-}
-
-#endif // of USE_PORTAUDIO
-
-//>
-//<clock_gettime2, add_time_in_ms
-
-void clock_gettime2(struct timespec *ts)
-{
- struct timeval tv;
-
- if (!ts)
- {
- return;
- }
-
- assert (gettimeofday(&tv, NULL) != -1);
- ts->tv_sec = tv.tv_sec;
- ts->tv_nsec = tv.tv_usec*1000;
-}
-
-void add_time_in_ms(struct timespec *ts, int time_in_ms)
-{
- if (!ts)
- {
- return;
- }
-
- uint64_t t_ns = (uint64_t)ts->tv_nsec + 1000000 * (uint64_t)time_in_ms;
- while(t_ns >= ONE_BILLION)
- {
- SHOW("event > add_time_in_ms ns: %d sec %Lu nsec \n", ts->tv_sec, t_ns);
- ts->tv_sec += 1;
- t_ns -= ONE_BILLION;
- }
- ts->tv_nsec = (long int)t_ns;
-}
-
-
-#endif // USE_ASYNC
-
-//>
diff --git a/navit/support/espeak/wave.h b/navit/support/espeak/wave.h
deleted file mode 100644
index de8bf1ef8..000000000
--- a/navit/support/espeak/wave.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef WAVE_H
-#define WAVE_H
-
-#ifdef _MSC_VER
-
-typedef __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef __int64 int64_t;
-typedef unsigned __int32 uint64_t;
-
-#else
-#ifndef PLATFORM_DOS
-#include "stdint.h"
-#endif
-#endif
-
-extern int option_device_number;
-
-extern void wave_init();
-// TBD: the arg could be "alsa", "oss",...
-extern void* wave_open(const char* the_api);
-
-extern size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize);
-extern int wave_close(void* theHandler);
-extern void wave_flush(void* theHandler);
-extern int wave_is_busy(void* theHandler);
-extern void wave_terminate();
-extern uint32_t wave_get_read_position(void* theHandler);
-extern uint32_t wave_get_write_position(void* theHandler);
-
-// Supply the remaining time in ms before the sample is played
-// (or 0 if the event has been already played).
-// sample: sample identifier
-// time: supplied value in ms
-//
-// return 0 if ok or -1 otherwise (stream not opened).
-extern int wave_get_remaining_time(uint32_t sample, uint32_t* time);
-
-// set the callback which informs if the output is still enabled.
-// Helpful if a new sample is waiting for free space whereas sound must be stopped.
-typedef int (t_wave_callback)(void);
-extern void wave_set_callback_is_output_enabled(t_wave_callback* cb);
-
-
-// general functions
-extern void clock_gettime2(struct timespec *ts);
-extern void add_time_in_ms(struct timespec *ts, int time_in_ms);
-
-// for tests
-extern void *wave_test_get_write_buffer();
-
-#endif
diff --git a/navit/support/espeak/wave_pulse.c b/navit/support/espeak/wave_pulse.c
deleted file mode 100755
index d5fbc8c1e..000000000
--- a/navit/support/espeak/wave_pulse.c
+++ /dev/null
@@ -1,935 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2007, Gilles Casse <gcasse@oralux.org> *
- * eSpeak driver for PulseAudio *
- * based on the XMMS PulseAudio Plugin *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-// TBD:
-// * ARCH_BIG
-// * uint64? a_timing_info.read_index
-// * prebuf,... size?
-// * 0.9.6: pb pulse_free using tlength=8820 (max size never returned -> tlength=10000 ok, but higher drain).
-//
-#include "speech.h"
-
-#ifdef USE_ASYNC
-// This source file is only used for asynchronious modes
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#include <assert.h>
-#include <sys/time.h>
-#include <time.h>
-#include <pulse/pulseaudio.h>
-#include <pthread.h>
-
-#ifndef PLATFORM_WINDOWS
-#include <unistd.h>
-#endif
-#include "wave.h"
-#include "debug.h"
-
-//<Definitions
-
-enum {ONE_BILLION=1000000000};
-
-enum {
-// /* 100ms.
-// If a greater value is set (several seconds),
-// please update _pulse_timeout_start accordingly */
-// PULSE_TIMEOUT_IN_USEC = 100000,
-
- /* return value */
- PULSE_OK = 0,
- PULSE_ERROR = -1,
- PULSE_NO_CONNECTION = -2
-};
-
-#ifdef USE_PULSEAUDIO
-
-static t_wave_callback* my_callback_is_output_enabled=NULL;
-
-#define SAMPLE_RATE 22050
-#define ESPEAK_FORMAT PA_SAMPLE_S16LE
-#define ESPEAK_CHANNEL 1
-
-#define MAXLENGTH 132300
-#define TLENGTH 4410
-#define PREBUF 2200
-#define MINREQ 880
-#define FRAGSIZE 0
-
-static pthread_mutex_t pulse_mutex;
-
-static pa_context *context = NULL;
-static pa_stream *stream = NULL;
-static pa_threaded_mainloop *mainloop = NULL;
-
-static pa_cvolume volume;
-static int volume_valid = 0;
-
-static int do_trigger = 0;
-static uint64_t written = 0;
-static int time_offset_msec = 0;
-static int just_flushed = 0;
-
-static int connected = 0;
-
-#define CHECK_DEAD_GOTO(label, warn) do { \
-if (!mainloop || \
- !context || pa_context_get_state(context) != PA_CONTEXT_READY || \
- !stream || pa_stream_get_state(stream) != PA_STREAM_READY) { \
- if (warn) \
- SHOW("Connection died: %s\n", context ? pa_strerror(pa_context_errno(context)) : "NULL"); \
- goto label; \
- } \
-} while(0);
-
-#define CHECK_CONNECTED(retval) \
-do { \
- if (!connected) return retval; \
-} while (0);
-
-#define CHECK_CONNECTED_NO_RETVAL(id) \
- do { \
- if (!connected){ SHOW("CHECK_CONNECTED_NO_RETVAL: !pulse_connected\n", ""); return; } \
- } while (0);
-
-//>
-
-
-// static void display_timing_info(const pa_timing_info* the_time)
-// {
-// const struct timeval *tv=&(the_time->timestamp);
-
-// SHOW_TIME("ti>");
-// SHOW("ti> timestamp=%03d.%03dms\n",(int)(tv->tv_sec%1000), (int)(tv->tv_usec/1000));
-// SHOW("ti> synchronized_clocks=%d\n",the_time->synchronized_clocks);
-// SHOW("ti> sink_usec=%ld\n",the_time->sink_usec);
-// SHOW("ti> source_usec=%ld\n",the_time->source_usec);
-// SHOW("ti> transport=%ld\n",the_time->transport_usec);
-// SHOW("ti> playing=%d\n",the_time->playing);
-// SHOW("ti> write_index_corrupt=%d\n",the_time->write_index_corrupt);
-// SHOW("ti> write_index=0x%lx\n",the_time->write_index);
-// SHOW("ti> read_index_corrupt=%d\n",the_time->read_index_corrupt);
-// SHOW("ti> read_index=0x%lx\n",the_time->read_index);
-// }
-
-
-static void info_cb(struct pa_context *c, const struct pa_sink_input_info *i, int is_last, void *userdata) {
- ENTER(__FUNCTION__);
- assert(c);
-
- if (!i)
- return;
-
- volume = i->volume;
- volume_valid = 1;
-}
-
-static void subscribe_cb(struct pa_context *c, enum pa_subscription_event_type t, uint32_t index, void *userdata) {
- pa_operation *o;
- ENTER(__FUNCTION__);
-
- assert(c);
-
- if (!stream ||
- index != pa_stream_get_index(stream) ||
- (t != (PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE) &&
- t != (PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_NEW)))
- return;
-
- if (!(o = pa_context_get_sink_input_info(c, index, info_cb, NULL))) {
- SHOW("pa_context_get_sink_input_info() failed: %s\n", pa_strerror(pa_context_errno(c)));
- return;
- }
-
- pa_operation_unref(o);
-}
-
-static void context_state_cb(pa_context *c, void *userdata) {
- ENTER(__FUNCTION__);
- assert(c);
-
- switch (pa_context_get_state(c)) {
- case PA_CONTEXT_READY:
- case PA_CONTEXT_TERMINATED:
- case PA_CONTEXT_FAILED:
- pa_threaded_mainloop_signal(mainloop, 0);
- break;
-
- case PA_CONTEXT_UNCONNECTED:
- case PA_CONTEXT_CONNECTING:
- case PA_CONTEXT_AUTHORIZING:
- case PA_CONTEXT_SETTING_NAME:
- break;
- }
-}
-
-static void stream_state_cb(pa_stream *s, void * userdata) {
- ENTER(__FUNCTION__);
- assert(s);
-
- switch (pa_stream_get_state(s)) {
-
- case PA_STREAM_READY:
- case PA_STREAM_FAILED:
- case PA_STREAM_TERMINATED:
- pa_threaded_mainloop_signal(mainloop, 0);
- break;
-
- case PA_STREAM_UNCONNECTED:
- case PA_STREAM_CREATING:
- break;
- }
-}
-
-static void stream_success_cb(pa_stream *s, int success, void *userdata) {
- ENTER(__FUNCTION__);
- assert(s);
-
- if (userdata)
- *(int*) userdata = success;
-
- pa_threaded_mainloop_signal(mainloop, 0);
-}
-
-static void context_success_cb(pa_context *c, int success, void *userdata) {
- ENTER(__FUNCTION__);
- assert(c);
-
- if (userdata)
- *(int*) userdata = success;
-
- pa_threaded_mainloop_signal(mainloop, 0);
-}
-
-static void stream_request_cb(pa_stream *s, size_t length, void *userdata) {
- ENTER(__FUNCTION__);
- assert(s);
-
- pa_threaded_mainloop_signal(mainloop, 0);
-}
-
-static void stream_latency_update_cb(pa_stream *s, void *userdata) {
- // ENTER(__FUNCTION__);
- assert(s);
-
- pa_threaded_mainloop_signal(mainloop, 0);
-}
-
-static int pulse_free(void) {
- ENTER(__FUNCTION__);
- size_t l = 0;
- pa_operation *o = NULL;
-
- CHECK_CONNECTED(0);
-
- SHOW("pulse_free: %s (call)\n", "pa_threaded_main_loop_lock");
- pa_threaded_mainloop_lock(mainloop);
- CHECK_DEAD_GOTO(fail, 1);
-
- if ((l = pa_stream_writable_size(stream)) == (size_t) -1) {
- SHOW("pa_stream_writable_size() failed: %s", pa_strerror(pa_context_errno(context)));
- l = 0;
- goto fail;
- }
-
- SHOW("pulse_free: %s (ret=%d)\n", "pa_stream_writable_size", l);
-
- /* If this function is called twice with no pulse_write() call in
- * between this means we should trigger the playback */
- if (do_trigger) {
- int success = 0;
-
- SHOW("pulse_free: %s (call)\n", "pa_stream_trigger");
- if (!(o = pa_stream_trigger(stream, stream_success_cb, &success))) {
- SHOW("pa_stream_trigger() failed: %s", pa_strerror(pa_context_errno(context)));
- goto fail;
- }
-
- SHOW("pulse_free: %s (call)\n", "pa_threaded_main_loop");
- while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
- CHECK_DEAD_GOTO(fail, 1);
- pa_threaded_mainloop_wait(mainloop);
- }
- SHOW("pulse_free: %s (ret)\n", "pa_threaded_main_loop");
-
- if (!success)
- SHOW("pa_stream_trigger() failed: %s", pa_strerror(pa_context_errno(context)));
- }
-
-fail:
- SHOW("pulse_free: %s (call)\n", "pa_operation_unref");
- if (o)
- pa_operation_unref(o);
-
- SHOW("pulse_free: %s (call)\n", "pa_threaded_main_loop_unlock");
- pa_threaded_mainloop_unlock(mainloop);
-
- do_trigger = !!l;
- SHOW("pulse_free: %d (ret)\n", (int)l);
- return (int) l;
-}
-
-static int pulse_playing(const pa_timing_info *the_timing_info) {
- ENTER(__FUNCTION__);
- int r = 0;
- const pa_timing_info *i;
-
- assert(the_timing_info);
-
- CHECK_CONNECTED(0);
-
- pa_threaded_mainloop_lock(mainloop);
-
- for (;;) {
- CHECK_DEAD_GOTO(fail, 1);
-
- if ((i = pa_stream_get_timing_info(stream)))
- {
- break;
- }
- if (pa_context_errno(context) != PA_ERR_NODATA) {
- SHOW("pa_stream_get_timing_info() failed: %s", pa_strerror(pa_context_errno(context)));
- goto fail;
- }
-
- pa_threaded_mainloop_wait(mainloop);
- }
-
- r = i->playing;
- memcpy((void*)the_timing_info, (void*)i, sizeof(pa_timing_info));
-
- // display_timing_info(i);
-
-fail:
- pa_threaded_mainloop_unlock(mainloop);
-
- return r;
-}
-
-
-// static void pulse_flush(int time) {
-// ENTER(__FUNCTION__);
-// pa_operation *o = NULL;
-// int success = 0;
-
-// CHECK_CONNECTED();
-
-// pa_threaded_mainloop_lock(mainloop);
-// CHECK_DEAD_GOTO(fail, 1);
-
-// if (!(o = pa_stream_flush(stream, stream_success_cb, &success))) {
-// SHOW("pa_stream_flush() failed: %s", pa_strerror(pa_context_errno(context)));
-// goto fail;
-// }
-
-// while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
-// CHECK_DEAD_GOTO(fail, 1);
-// pa_threaded_mainloop_wait(mainloop);
-// }
-
-// if (!success)
-// SHOW("pa_stream_flush() failed: %s", pa_strerror(pa_context_errno(context)));
-
-// written = (uint64_t) (((double) time * pa_bytes_per_second(pa_stream_get_sample_spec(stream))) / 1000);
-// just_flushed = 1;
-// time_offset_msec = time;
-
-// fail:
-// if (o)
-// pa_operation_unref(o);
-
-// pa_threaded_mainloop_unlock(mainloop);
-// }
-
-
-static void pulse_write(void* ptr, int length) {
- ENTER(__FUNCTION__);
-
-
- SHOW("pulse_write > length=%d\n", length);
-
- CHECK_CONNECTED();
-
- pa_threaded_mainloop_lock(mainloop);
- CHECK_DEAD_GOTO(fail, 1);
-
- if (pa_stream_write(stream, ptr, length, NULL, PA_SEEK_RELATIVE, (pa_seek_mode_t)0) < 0) {
- SHOW("pa_stream_write() failed: %s", pa_strerror(pa_context_errno(context)));
- goto fail;
- }
-
- do_trigger = 0;
- written += length;
-
-fail:
-
- pa_threaded_mainloop_unlock(mainloop);
-}
-
-static int drain(void) {
- pa_operation *o = NULL;
- int success = 0;
- int ret = PULSE_ERROR;
-
- ENTER(__FUNCTION__);
-
- CHECK_CONNECTED(ret);
-
- pa_threaded_mainloop_lock(mainloop);
- CHECK_DEAD_GOTO(fail, 0);
-
- SHOW_TIME("pa_stream_drain (call)");
- if (!(o = pa_stream_drain(stream, stream_success_cb, &success))) {
- SHOW("pa_stream_drain() failed: %s\n", pa_strerror(pa_context_errno(context)));
- goto fail;
- }
-
- SHOW_TIME("pa_threaded_mainloop_wait (call)");
- while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
- CHECK_DEAD_GOTO(fail, 1);
- pa_threaded_mainloop_wait(mainloop);
- }
- SHOW_TIME("pa_threaded_mainloop_wait (ret)");
-
- if (!success) {
- SHOW("pa_stream_drain() failed: %s\n", pa_strerror(pa_context_errno(context)));
- }
- else {
- ret = PULSE_OK;
- }
-
-fail:
- SHOW_TIME("pa_operation_unref (call)");
- if (o)
- pa_operation_unref(o);
-
- pa_threaded_mainloop_unlock(mainloop);
- SHOW_TIME("drain (ret)");
-
- return ret;
-}
-
-
-static void pulse_close(void) {
-
- ENTER(__FUNCTION__);
-
- drain();
-
- connected = 0;
-
- if (mainloop)
- pa_threaded_mainloop_stop(mainloop);
-
- connected = 0;
-
- if (context) {
- SHOW_TIME("pa_context_disconnect (call)");
- pa_context_disconnect(context);
- pa_context_unref(context);
- context = NULL;
- }
-
- if (mainloop) {
- SHOW_TIME("pa_threaded_mainloop_free (call)");
- pa_threaded_mainloop_free(mainloop);
- mainloop = NULL;
- }
- SHOW_TIME("pulse_close (ret)");
-
-}
-
-
-static int pulse_open()
-{
- ENTER(__FUNCTION__);
- pa_sample_spec ss;
- pa_operation *o = NULL;
- int success;
- int ret = PULSE_ERROR;
-
- assert(!mainloop);
- assert(!context);
- assert(!stream);
- assert(!connected);
-
- pthread_mutex_init( &pulse_mutex, (const pthread_mutexattr_t *)NULL);
-
- ss.format = ESPEAK_FORMAT;
- ss.rate = SAMPLE_RATE;
- ss.channels = ESPEAK_CHANNEL;
-
- if (!pa_sample_spec_valid(&ss))
- return false;
-
-/* if (!volume_valid) { */
- pa_cvolume_reset(&volume, ss.channels);
- volume_valid = 1;
-/* } else if (volume.channels != ss.channels) */
-/* pa_cvolume_set(&volume, ss.channels, pa_cvolume_avg(&volume)); */
-
- SHOW_TIME("pa_threaded_mainloop_new (call)");
- if (!(mainloop = pa_threaded_mainloop_new())) {
- SHOW("Failed to allocate main loop\n","");
- goto fail;
- }
-
- pa_threaded_mainloop_lock(mainloop);
-
- SHOW_TIME("pa_context_new (call)");
- if (!(context = pa_context_new(pa_threaded_mainloop_get_api(mainloop), "eSpeak"))) {
- SHOW("Failed to allocate context\n","");
- goto unlock_and_fail;
- }
-
- pa_context_set_state_callback(context, context_state_cb, NULL);
- pa_context_set_subscribe_callback(context, subscribe_cb, NULL);
-
- SHOW_TIME("pa_context_connect (call)");
- if (pa_context_connect(context, NULL, (pa_context_flags_t)0, NULL) < 0) {
- SHOW("Failed to connect to server: %s", pa_strerror(pa_context_errno(context)));
- ret = PULSE_NO_CONNECTION;
- goto unlock_and_fail;
- }
-
- SHOW_TIME("pa_threaded_mainloop_start (call)");
- if (pa_threaded_mainloop_start(mainloop) < 0) {
- SHOW("Failed to start main loop","");
- goto unlock_and_fail;
- }
-
- /* Wait until the context is ready */
- SHOW_TIME("pa_threaded_mainloop_wait");
- pa_threaded_mainloop_wait(mainloop);
-
- if (pa_context_get_state(context) != PA_CONTEXT_READY) {
- SHOW("Failed to connect to server: %s", pa_strerror(pa_context_errno(context)));
- ret = PULSE_NO_CONNECTION;
- if (mainloop)
- pa_threaded_mainloop_stop(mainloop);
- goto unlock_and_fail;
- }
-
- SHOW_TIME("pa_stream_new");
- if (!(stream = pa_stream_new(context, "unknown", &ss, NULL))) {
- SHOW("Failed to create stream: %s", pa_strerror(pa_context_errno(context)));
- goto unlock_and_fail;
- }
-
- pa_stream_set_state_callback(stream, stream_state_cb, NULL);
- pa_stream_set_write_callback(stream, stream_request_cb, NULL);
- pa_stream_set_latency_update_callback(stream, stream_latency_update_cb, NULL);
-
-
-
- pa_buffer_attr a_attr;
-
- a_attr.maxlength = MAXLENGTH;
- a_attr.tlength = TLENGTH;
- a_attr.prebuf = PREBUF;
- a_attr.minreq = MINREQ;
- a_attr.fragsize = 0;
-
- SHOW_TIME("pa_connect_playback");
- if (pa_stream_connect_playback(stream, NULL, &a_attr, (pa_stream_flags_t)(PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE), &volume, NULL) < 0) {
- SHOW("Failed to connect stream: %s", pa_strerror(pa_context_errno(context)));
- goto unlock_and_fail;
- }
-
- /* Wait until the stream is ready */
- SHOW_TIME("pa_threaded_mainloop_wait");
- pa_threaded_mainloop_wait(mainloop);
-
- if (pa_stream_get_state(stream) != PA_STREAM_READY) {
- SHOW("Failed to connect stream: %s", pa_strerror(pa_context_errno(context)));
- goto unlock_and_fail;
- }
-
- /* Now subscribe to events */
- SHOW_TIME("pa_context_subscribe");
- if (!(o = pa_context_subscribe(context, PA_SUBSCRIPTION_MASK_SINK_INPUT, context_success_cb, &success))) {
- SHOW("pa_context_subscribe() failed: %s", pa_strerror(pa_context_errno(context)));
- goto unlock_and_fail;
- }
-
- success = 0;
- SHOW_TIME("pa_threaded_mainloop_wait");
- while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
- CHECK_DEAD_GOTO(fail, 1);
- pa_threaded_mainloop_wait(mainloop);
- }
-
- if (!success) {
- SHOW("pa_context_subscribe() failed: %s", pa_strerror(pa_context_errno(context)));
- goto unlock_and_fail;
- }
-
- pa_operation_unref(o);
-
- /* Now request the initial stream info */
- if (!(o = pa_context_get_sink_input_info(context, pa_stream_get_index(stream), info_cb, NULL))) {
- SHOW("pa_context_get_sink_input_info() failed: %s", pa_strerror(pa_context_errno(context)));
- goto unlock_and_fail;
- }
-
- SHOW_TIME("pa_threaded_mainloop_wait 2");
- while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
- CHECK_DEAD_GOTO(fail, 1);
- pa_threaded_mainloop_wait(mainloop);
- }
-
-/* if (!volume_valid) { */
-/* SHOW("pa_context_get_sink_input_info() failed: %s", pa_strerror(pa_context_errno(context))); */
-/* goto unlock_and_fail; */
-/* } */
-
- do_trigger = 0;
- written = 0;
- time_offset_msec = 0;
- just_flushed = 0;
- connected = 1;
- // volume_time_event = NULL;
-
- pa_threaded_mainloop_unlock(mainloop);
- SHOW_TIME("pulse_open (ret true)");
-
- // return true;
- return PULSE_OK;
-
-
-unlock_and_fail:
-
- if (o)
- pa_operation_unref(o);
-
- pa_threaded_mainloop_unlock(mainloop);
-
-fail:
-
- // pulse_close();
-
- if (ret == PULSE_NO_CONNECTION) {
- if (context) {
- SHOW_TIME("pa_context_disconnect (call)");
- pa_context_disconnect(context);
- pa_context_unref(context);
- context = NULL;
- }
-
- if (mainloop) {
- SHOW_TIME("pa_threaded_mainloop_free (call)");
- pa_threaded_mainloop_free(mainloop);
- mainloop = NULL;
- }
- }
- else {
- pulse_close();
- }
-
- SHOW_TIME("pulse_open (ret false)");
-
- return ret;
-
-}
-
-void wave_flush(void* theHandler)
-{
- ENTER("wave_flush");
-
-// if (my_stream_could_start)
-// {
-// // #define buf 1024
-// // static char a_buffer[buf*2];
-// // memset(a_buffer,0,buf*2);
-// // wave_write(theHandler, a_buffer, buf*2);
-// start_stream();
-// }
-}
-
-
-
-//<wave_set_callback_is_output_enabled
-
-void wave_set_callback_is_output_enabled(t_wave_callback* cb)
-{
- my_callback_is_output_enabled = cb;
-}
-
-//>
-//<wave_init
-
-void wave_init()
-{
- ENTER("wave_init");
-
- stream = NULL;
-
- pulse_open();
-}
-
-//>
-//<wave_open
-
-void* wave_open(const char* the_api)
-{
- ENTER("wave_open");
- return((void*)1);
-}
-
-//>
-//<wave_write
-
-size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize)
-{
- ENTER("wave_write");
- size_t bytes_to_write = theSize;
- char* aBuffer=theMono16BitsWaveBuffer;
-
- assert(stream);
-
- size_t aTotalFreeMem=0;
-
- pthread_mutex_lock(&pulse_mutex);
-
- while (1)
- {
- if (my_callback_is_output_enabled
- && (0==my_callback_is_output_enabled()))
- {
- SHOW_TIME("wave_write > my_callback_is_output_enabled: no!");
- theSize=0;
- goto terminate;
- }
-
- aTotalFreeMem = pulse_free();
- if (aTotalFreeMem >= bytes_to_write)
- {
- SHOW("wave_write > aTotalFreeMem(%d) >= bytes_to_write(%d)\n", aTotalFreeMem, bytes_to_write);
- break;
- }
-
- // TBD: check if really helpful
- if (aTotalFreeMem >= MAXLENGTH*2)
- {
- aTotalFreeMem = MAXLENGTH*2;
- }
-
- SHOW("wave_write > wait: aTotalFreeMem(%d) < bytes_to_write(%d)\n", aTotalFreeMem, bytes_to_write);
-
- // 500: threshold for avoiding too many calls to pulse_write
- if (aTotalFreeMem>500)
- {
- pulse_write(aBuffer, aTotalFreeMem);
- bytes_to_write -= aTotalFreeMem;
- aBuffer += aTotalFreeMem;
- }
-
- usleep(10000);
- }
-
- pulse_write(aBuffer, bytes_to_write);
-
- terminate:
- pthread_mutex_unlock(&pulse_mutex);
- SHOW("wave_write: theSize=%d", theSize);
- SHOW_TIME("wave_write > LEAVE");
- return theSize;
-}
-
-//>
-//<wave_close
-
-int wave_close(void* theHandler)
-{
- SHOW_TIME("wave_close > ENTER");
-
- int a_status = pthread_mutex_lock(&pulse_mutex);
- if (a_status) {
- SHOW("Error: pulse_mutex lock=%d (%s)\n", a_status, __FUNCTION__);
- return PULSE_ERROR;
- }
-
- drain();
-
- pthread_mutex_unlock(&pulse_mutex);
- SHOW_TIME("wave_close (ret)");
-
- return PULSE_OK;
-}
-
-//>
-//<wave_is_busy
-
-int wave_is_busy(void* theHandler)
-{
- SHOW_TIME("wave_is_busy");
-
- pa_timing_info a_timing_info;
- int active = pulse_playing(&a_timing_info);
- SHOW("wave_is_busy: %d\n",active);
- return active;
-}
-
-//>
-//<wave_terminate
-
-void wave_terminate()
-{
- ENTER("wave_terminate");
-
-// Pa_Terminate();
-
- int a_status;
- pthread_mutex_t* a_mutex = NULL;
- a_mutex = &pulse_mutex;
- a_status = pthread_mutex_lock(a_mutex);
-
- pulse_close();
-
- SHOW_TIME("unlock mutex");
- a_status = pthread_mutex_unlock(a_mutex);
- pthread_mutex_destroy(a_mutex);
-}
-
-//>
-//<wave_get_read_position, wave_get_write_position, wave_get_remaining_time
-
-uint32_t wave_get_read_position(void* theHandler)
-{
- pa_timing_info a_timing_info;
- pulse_playing(&a_timing_info);
- SHOW("wave_get_read_position > %lx\n", a_timing_info.read_index);
- return a_timing_info.read_index;
-}
-
-uint32_t wave_get_write_position(void* theHandler)
-{
- pa_timing_info a_timing_info;
- pulse_playing(&a_timing_info);
- SHOW("wave_get_read_position > %lx\n", a_timing_info.write_index);
- return a_timing_info.write_index;
-}
-
-int wave_get_remaining_time(uint32_t sample, uint32_t* time)
-{
- double a_time=0;
-
- if (!time || !stream)
- {
- SHOW("event get_remaining_time> %s\n","audio device not available");
- return -1;
- }
-
- pa_timing_info a_timing_info;
- pulse_playing(&a_timing_info);
-
- if (sample > a_timing_info.read_index)
- {
- // TBD: take in account time suplied by portaudio V18 API
- a_time = sample - a_timing_info.read_index;
- a_time = 0.5 + (a_time * 1000.0) / SAMPLE_RATE;
- }
- else
- {
- a_time = 0;
- }
-
- SHOW("wave_get_remaining_time > sample=%d, time=%d\n", sample, (uint32_t)a_time);
-
- *time = (uint32_t)a_time;
-
- return 0;
-}
-
-//>
-//<wave_test_get_write_buffer
-
-void *wave_test_get_write_buffer()
-{
- return NULL;
-}
-
-
-#else
-// notdef USE_PULSEAUDIO
-
-
-void wave_init() {}
-void* wave_open(const char* the_api) {return (void *)1;}
-size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;}
-int wave_close(void* theHandler) {return 0;}
-int wave_is_busy(void* theHandler) {return 0;}
-void wave_terminate() {}
-uint32_t wave_get_read_position(void* theHandler) {return 0;}
-uint32_t wave_get_write_position(void* theHandler) {return 0;}
-void wave_flush(void* theHandler) {}
-typedef int (t_wave_callback)(void);
-void wave_set_callback_is_output_enabled(t_wave_callback* cb) {}
-extern void* wave_test_get_write_buffer() {return NULL;}
-
-int wave_get_remaining_time(uint32_t sample, uint32_t* time)
-{
- if (!time) return(-1);
- *time = (uint32_t)0;
- return 0;
-}
-
-#endif // of USE_PORTAUDIO
-
-//>
-//<clock_gettime2, add_time_in_ms
-
-void clock_gettime2(struct timespec *ts)
-{
- struct timeval tv;
-
- if (!ts)
- {
- return;
- }
-
- assert (gettimeofday(&tv, NULL) != -1);
- ts->tv_sec = tv.tv_sec;
- ts->tv_nsec = tv.tv_usec*1000;
-}
-
-void add_time_in_ms(struct timespec *ts, int time_in_ms)
-{
- if (!ts)
- {
- return;
- }
-
- uint64_t t_ns = (uint64_t)ts->tv_nsec + 1000000 * (uint64_t)time_in_ms;
- while(t_ns >= ONE_BILLION)
- {
- SHOW("event > add_time_in_ms ns: %d sec %Lu nsec \n", ts->tv_sec, t_ns);
- ts->tv_sec += 1;
- t_ns -= ONE_BILLION;
- }
- ts->tv_nsec = (long int)t_ns;
-}
-
-
-#endif // USE_ASYNC
-
-//>
diff --git a/navit/support/espeak/wave_sada.c b/navit/support/espeak/wave_sada.c
deleted file mode 100755
index c69a4dc99..000000000
--- a/navit/support/espeak/wave_sada.c
+++ /dev/null
@@ -1,588 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2008, Sun Microsystems, Inc. *
- * eSpeak driver for Solaris Audio Device Architecture (SADA) *
- * Written by Willie Walker, based on the eSpeak PulseAudio driver *
- * from Gilles Casse *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 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., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-
-#include "speech.h"
-
-#ifdef USE_ASYNC
-// This source file is only used for asynchronious modes
-
-#include <errno.h>
-#include <string.h>
-#include <stropts.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/audioio.h>
-
-#include "wave.h"
-#include "debug.h"
-
-enum {ONE_BILLION=1000000000};
-#define SAMPLE_RATE 22050
-#define SAMPLE_SIZE 16
-
-#ifdef USE_SADA
-
-static t_wave_callback* my_callback_is_output_enabled=NULL;
-
-static const char *sun_audio_device = "/dev/audio";
-static int sun_audio_fd = -1;
-
-// The total number of 16-bit samples sent to be played via the
-// wave_write method.
-//
-static uint32_t total_samples_sent;
-
-// The total number of samples sent to be played via the wave_write
-// method, but which were never played because of a call to
-// wave_close.
-//
-static uint32_t total_samples_skipped;
-
-// The last known playing index after a call to wave_close.
-//
-static uint32_t last_play_position=0;
-
-//>
-// wave_init
-//
-// DESCRIPTION:
-//
-// initializes the audio subsytem.
-//
-// GLOBALS USED/MODIFIED:
-//
-// sun_audio_fd: modified to hold the file descriptor of the opened
-// audio device.
-//
-//<wave_init
-
-void wave_init() {
- ENTER("wave_init");
-
- audio_info_t ainfo;
- char *audio_device = NULL;
-
- audio_device = getenv("AUDIODEV");
- if (audio_device != NULL) {
- if ((sun_audio_fd = open(audio_device, O_WRONLY)) < 0) {
- SHOW("wave_init() could not open: %s (%d)\n",
- audio_device, sun_audio_fd);
- }
- }
-
- if (sun_audio_fd < 0) {
- if ((sun_audio_fd = open(sun_audio_device, O_WRONLY)) < 0) {
- SHOW("wave_init() could not open: %s (%d)\n",
- sun_audio_device, sun_audio_fd);
- }
- }
-
- SHOW("wave_init() sun_audio_fd: %d\n", sun_audio_fd);
-
- if (sun_audio_fd < 0) {
- return;
- }
-
- ioctl(sun_audio_fd, AUDIO_GETINFO, &ainfo);
- SHOW("wave_init() play buffer size: %d\n", ainfo.play.buffer_size);
- ainfo.play.encoding = AUDIO_ENCODING_LINEAR;
- ainfo.play.channels = 1;
- ainfo.play.sample_rate = SAMPLE_RATE;
- ainfo.play.precision = SAMPLE_SIZE;
-
- if (ioctl(sun_audio_fd, AUDIO_SETINFO, &ainfo) == -1) {
- SHOW("wave_init() failed to set audio params: %s\n", strerror(errno));
- close(sun_audio_fd);
- return;
- }
-}
-
-//>
-// wave_open
-//
-// DESCRIPTION:
-//
-// opens the audio subsystem given a specific API (e.g., "alsa",
-// "oss", ...). We ignore the_api and just return the sun_audio_fd we
-// opened in wave_init. This return value will be passed in as the
-// theHandler parameter in all other methods.
-//
-// PARAMETERS:
-//
-// the_api: "alsa", "oss" (ignored)
-//
-// GLOBALS USED/MODIFIED:
-//
-// sun_audio_fd: used as return value
-//
-// RETURNS:
-//
-// sun_audio_fd opened in wave_init, which is passed in as theHandler
-// parameter in all other methods
-//
-//<wave_open
-
-void* wave_open(const char* the_api)
-{
- ENTER("wave_open");
- return((void*) sun_audio_fd);
-}
-
-//>
-// wave_write
-//
-// DESCRIPTION:
-//
-// Meant to be asynchronous, it supplies the wave sample to the lower
-// audio layer and returns. The sample is played later on. [[[WDW -
-// we purposely do not open the audio device as non-blocking because
-// managing that would be a pain. So, we rely a lot upon fifo.cpp and
-// event.cpp to not overload us, allowing us to get away with a
-// blocking write. event.cpp:polling_thread in particular appears to
-// use get_remaining_time to prevent flooding.]]]
-//
-// PARAMETERS:
-//
-// theHandler: the audio device file descriptor
-// theMono16BitsWaveBuffer: the audio data
-// theSize: the number of bytes (not 16-bit samples)
-//
-// GLOBALS USED/MODIFIED:
-//
-// total_samples_sent: modified based upon 16-bit samples sent
-//
-// RETURNS:
-//
-// the number of bytes (not 16-bit samples) sent
-//
-//<wave_write
-
-size_t wave_write(void* theHandler,
- char* theMono16BitsWaveBuffer,
- size_t theSize)
-{
- size_t num;
- ENTER("wave_write");
- if (my_callback_is_output_enabled && (0==my_callback_is_output_enabled())) {
- SHOW_TIME("wave_write > my_callback_is_output_enabled: no!");
- return 0;
- }
-
-#if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN
- {
- // BIG-ENDIAN, swap the order of bytes in each sound sample
- int c;
- char *out_ptr;
- char *out_end;
- out_ptr = (char *)theMono16BitsWaveBuffer;
- out_end = out_ptr + theSize;
- while(out_ptr < out_end)
- {
- c = out_ptr[0];
- out_ptr[0] = out_ptr[1];
- out_ptr[1] = c;
- out_ptr += 2;
- }
- }
-#endif
-
- num = write((int) theHandler, theMono16BitsWaveBuffer, theSize);
-
- // Keep track of the total number of samples sent -- we use this in
- // wave_get_read_position and also use it to help calculate the
- // total_samples_skipped in wave_close.
- //
- total_samples_sent += num / 2;
-
- if (num < theSize) {
- SHOW("ERROR: wave_write only wrote %d of %d bytes\n", num, theSize);
- } else {
- SHOW("wave_write wrote %d bytes\n", theSize);
- }
-
- SHOW_TIME("wave_write > LEAVE");
- return num;
-}
-
-//>
-// wave_close
-//
-// DESCRIPTION:
-//
-// Does what SADA normally would call a flush, which means to cease
-// all audio production in progress and throw any remaining audio
-// away. [[[WDW - see comment in wave_flush.]]]
-//
-// PARAMETERS:
-//
-// theHandler: the audio device file descriptor
-//
-// GLOBALS USED/MODIFIED:
-//
-// last_play_position: modified to reflect play position the last time
-// this method was called
-// total_samples_sent: used to help calculate total_samples_skipped
-// total_samples_skipped: modified to hold the total number of 16-bit
-// samples sent to wave_write, but which were
-// never played
-// sun_audio_fd: used because some calls to wave_close seem to
-// pass a NULL for theHandler for some odd reason
-//
-// RETURNS:
-//
-// The result of the ioctl call (non-0 means failure)
-//
-//<wave_close
-
-int wave_close(void* theHandler)
-{
- int ret;
- audio_info_t ainfo;
- int audio_fd = (int) theHandler;
- if (!audio_fd) {
- audio_fd = sun_audio_fd;
- }
- ENTER("wave_close");
- // [[[WDW: maybe do a pause/resume ioctl???]]]
- ret = ioctl(audio_fd, I_FLUSH, FLUSHRW);
- ioctl(audio_fd, AUDIO_GETINFO, &ainfo);
-
- // Calculate the number of samples that won't get
- // played. We also keep track of the last_play_position
- // because wave_close can be called multiple times
- // before another call to wave_write.
- //
- if (last_play_position != ainfo.play.samples) {
- last_play_position = ainfo.play.samples;
- total_samples_skipped = total_samples_sent - last_play_position;
- }
- SHOW_TIME("wave_close > LEAVE");
- return ret;
-}
-
-//>
-// wave_is_busy
-//
-// DESCRIPTION:
-//
-// Returns a non-0 value if audio is being played.
-//
-// PARAMETERS:
-//
-// theHandler: the audio device file descriptor
-//
-// GLOBALS USED/MODIFIED:
-//
-// sun_audio_fd: used because some calls to wave_is_busy seem to
-// pass a NULL for theHandler for some odd reason
-//
-// RETURNS:
-//
-// A non-0 value if audio is being played
-//
-//<wave_is_busy
-
-int wave_is_busy(void* theHandler)
-{
- uint32_t time;
- wave_get_remaining_time(total_samples_sent - 1, &time);
- return time != 0;
-}
-
-//>
-// wave_terminate
-//
-// DESCRIPTION:
-//
-// Used to end our session with eSpeak.
-//
-// GLOBALS USED/MODIFIED:
-//
-// sun_audio_fd: modified - closed and set to -1
-//
-//<wave_terminate
-
-void wave_terminate()
-{
- ENTER("wave_terminate");
- close(sun_audio_fd);
- sun_audio_fd = -1;
- SHOW_TIME("wave_terminate > LEAVE");
-}
-
-//>
-// wave_flush
-//
-// DESCRIPTION:
-//
-// Appears to want to tell the audio subsystem to make sure it plays
-// the audio. In our case, the system is already doing this, so this
-// is basically a no-op. [[[WDW - if you do a drain, you block, so
-// don't do that. In addition the typical SADA notion of flush is
-// currently handled by wave_close. I think this is most likely just
-// terminology conflict between eSpeak and SADA.]]]
-//
-// PARAMETERS:
-//
-// theHandler: the audio device file descriptor
-//
-//<wave_flush
-
-void wave_flush(void* theHandler)
-{
- ENTER("wave_flush");
- //ioctl((int) theHandler, AUDIO_DRAIN, 0);
- SHOW_TIME("wave_flush > LEAVE");
-}
-
-//>
-// wave_set_callback_is_output_enabled
-//
-// DESCRIPTION:
-//
-// Sets the callback to call from wave_write before it sends data to
-// be played. It helps wave_write determine if the data should be
-// thrown away or not.
-//
-// PARAMETERS:
-//
-// cb: the callback to call from wave_write
-//
-//<wave_set_callback_is_output_enabled
-
-void wave_set_callback_is_output_enabled(t_wave_callback* cb)
-{
- my_callback_is_output_enabled = cb;
-}
-
-//>
-// wave_test_get_write_buffer
-//
-// DESCRIPTION:
-//
-// Unnecessary and is used for debug output from
-// speak_lib.cpp:dispatch_audio.
-//
-// RETURNS:
-//
-// NULL
-//
-//<wave_test_get_write_buffer
-
-void *wave_test_get_write_buffer()
-{
- return NULL;
-}
-
-//>
-// wave_get_read_position
-//
-// DESCRIPTION:
-//
-// Concerns the sample which is currently played by the audio layer,
-// where 'sample' is a small buffer of synthesized wave data,
-// identified so that the user callback could be called when the
-// 'sample' is really played. The identifier is returned by
-// wave_get_write_position. This method is unused.
-//
-// PARAMETERS:
-//
-// theHandler: the audio device file descriptor
-//
-// RETURNS:
-//
-// The total number of 16-bit samples played by the audio system
-// so far.
-//
-//<wave_get_read_position
-
-uint32_t wave_get_read_position(void* theHandler)
-{
- audio_info_t ainfo;
- ENTER("wave_get_read_position");
- ioctl((int) theHandler, AUDIO_GETINFO, &ainfo);
- SHOW("wave_get_read_position: %d\n", ainfo.play.samples);
- SHOW_TIME("wave_get_read_position > LEAVE");
- return ainfo.play.samples;
-}
-
-//>
-// wave_get_write_position
-//
-// DESCRIPTION:
-//
-// Returns an identifier for a new sample, where 'sample' is a small
-// buffer of synthesized wave data, identified so that the user
-// callback could be called when the 'sample' is really played. This
-// implementation views the audio as one long continuous stream of
-// 16-bit samples.
-//
-// PARAMETERS:
-//
-// theHandler: the audio device file descriptor
-//
-// GLOBALS USED/MODIFIED:
-//
-// total_samples_sent: used as the return value
-//
-// RETURNS:
-//
-// total_samples_sent, which is the index for the end of this long
-// continuous stream. [[[WDW: with a unit32_t managing 16-bit
-// samples at 22050Hz, we have about 54 hours of play time before
-// the index wraps back to 0. We don't handle that wrapping, so
-// the behavior after 54 hours of play time is undefined.]]]
-//
-//<wave_get_write_position
-
-uint32_t wave_get_write_position(void* theHandler)
-{
- ENTER("wave_get_write_position");
- SHOW("wave_get_write_position: %d\n", total_samples_sent);
- SHOW_TIME("wave_get_write_position > LEAVE");
- return total_samples_sent;
-}
-
-//>
-// wave_get_remaining_time
-//
-// DESCRIPTION:
-//
-// Returns the remaining time (in ms) before the sample is played.
-// The sample in this case is a return value from a previous call to
-// wave_get_write_position.
-//
-// PARAMETERS:
-//
-// sample: an index returned from wave_get_write_position representing
-// an index into the long continuous stream of 16-bit samples
-// time: a return value representing the delay in milliseconds until
-// sample is played. A value of 0 means the sample is either
-// currently being played or it has already been played.
-//
-// GLOBALS USED/MODIFIED:
-//
-// sun_audio_fd: used to determine total number of samples played by
-// the audio system
-// total_samples_skipped: used in remaining time calculation
-//
-// RETURNS:
-//
-// Time in milliseconds before the sample is played or 0 if the sample
-// is currently playing or has already been played.
-//
-//<wave_get_remaining_time
-
-int wave_get_remaining_time(uint32_t sample, uint32_t* time)
-{
- uint32_t a_time=0;
- uint32_t actual_index;
-
- audio_info_t ainfo;
- ENTER("wave_get_remaining_time");
- if (!time) {
- return(-1);
- SHOW_TIME("wave_get_remaining_time > LEAVE");
- }
-
- ioctl(sun_audio_fd, AUDIO_GETINFO, &ainfo);
-
- // See if this sample has already been played or is currently
- // playing.
- //
- actual_index = sample - total_samples_skipped;
- if ((sample < total_samples_skipped) ||
- (actual_index <= ainfo.play.samples)) {
- *time = 0;
- } else {
- a_time = ((actual_index - ainfo.play.samples) * 1000) / SAMPLE_RATE;
- *time = (uint32_t) a_time;
- }
- SHOW("wave_get_remaining_time for %d: %d\n", sample, *time);
- SHOW_TIME("wave_get_remaining_time > LEAVE");
- return 0;
-}
-
-#else
-// notdef USE_SADA
-
-void wave_init() {}
-void* wave_open(const char* the_api) {return (void *)1;}
-size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;}
-int wave_close(void* theHandler) {return 0;}
-int wave_is_busy(void* theHandler) {return 0;}
-void wave_terminate() {}
-uint32_t wave_get_read_position(void* theHandler) {return 0;}
-uint32_t wave_get_write_position(void* theHandler) {return 0;}
-void wave_flush(void* theHandler) {}
-typedef int (t_wave_callback)(void);
-void wave_set_callback_is_output_enabled(t_wave_callback* cb) {}
-extern void* wave_test_get_write_buffer() {return NULL;}
-
-int wave_get_remaining_time(uint32_t sample, uint32_t* time)
-{
- if (!time) return(-1);
- *time = (uint32_t)0;
- return 0;
-}
-
-#endif // of USE_PORTAUDIO
-
-//>
-//<clock_gettime2, add_time_in_ms
-
-void clock_gettime2(struct timespec *ts)
-{
- struct timeval tv;
-
- if (!ts)
- {
- return;
- }
-
- assert (gettimeofday(&tv, NULL) != -1);
- ts->tv_sec = tv.tv_sec;
- ts->tv_nsec = tv.tv_usec*1000;
-}
-
-void add_time_in_ms(struct timespec *ts, int time_in_ms)
-{
- if (!ts)
- {
- return;
- }
-
- uint64_t t_ns = (uint64_t)ts->tv_nsec + 1000000 * (uint64_t)time_in_ms;
- while(t_ns >= ONE_BILLION)
- {
- SHOW("event > add_time_in_ms ns: %d sec %Lu nsec \n", ts->tv_sec, t_ns);
- ts->tv_sec += 1;
- t_ns -= ONE_BILLION;
- }
- ts->tv_nsec = (long int)t_ns;
-}
-
-#endif // USE_ASYNC
-
-//>
diff --git a/navit/support/espeak/wavegen.c b/navit/support/espeak/wavegen.c
deleted file mode 100755
index a5467ca1e..000000000
--- a/navit/support/espeak/wavegen.c
+++ /dev/null
@@ -1,1941 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 to 2007 by Jonathan Duddington *
- * email: jonsd@users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see: *
- * <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-#include "StdAfx.h"
-
-// this version keeps wavemult window as a constant fraction
-// of the cycle length - but that spreads out the HF peaks too much
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-
-
-#include "speak_lib.h"
-#include "speech.h"
-#include "phoneme.h"
-#include "synthesize.h"
-#include "voice.h"
-
-//#undef INCLUDE_KLATT
-
-#ifdef USE_PORTAUDIO
-#include "portaudio.h"
-#undef USE_PORTAUDIO
-// determine portaudio version by looking for a #define which is not in V18
-#ifdef paNeverDropInput
-#define USE_PORTAUDIO 19
-#else
-#define USE_PORTAUDIO 18
-#endif
-#endif
-
-#define N_SINTAB 2048
-#include "sintab.h"
-
-
-#define PI 3.1415927
-#define PI2 6.283185307
-#define N_WAV_BUF 10
-
-voice_t *wvoice;
-
-FILE *f_log = NULL;
-int option_waveout = 0;
-static int option_harmonic1 = 10; // 10
-int option_log_frames = 0;
-static int flutter_amp = 64;
-
-static int general_amplitude = 60;
-static int consonant_amp = 26; // 24
-
-int embedded_value[N_EMBEDDED_VALUES];
-
-static int PHASE_INC_FACTOR;
-int samplerate = 0; // this is set by Wavegeninit()
-int samplerate_native=0;
-extern int option_device_number;
-extern int option_quiet;
-
-static wavegen_peaks_t peaks[N_PEAKS];
-static int peak_harmonic[N_PEAKS];
-static int peak_height[N_PEAKS];
-
-#define N_ECHO_BUF 5500 // max of 250mS at 22050 Hz
-static int echo_head;
-static int echo_tail;
-static int echo_length = 0; // period (in sample\) to ensure completion of echo at the end of speech, set in WavegenSetEcho()
-static int echo_amp = 0;
-static short echo_buf[N_ECHO_BUF];
-
-static int voicing;
-static RESONATOR rbreath[N_PEAKS];
-
-static int harm_sqrt_n = 0;
-
-
-#define N_LOWHARM 30
-static int harm_inc[N_LOWHARM]; // only for these harmonics do we interpolate amplitude between steps
-static int *harmspect;
-static int hswitch=0;
-static int hspect[2][MAX_HARMONIC]; // 2 copies, we interpolate between then
-static int max_hval=0;
-
-static int nsamples=0; // number to do
-static int modulation_type = 0;
-static int glottal_flag = 0;
-static int glottal_reduce = 0;
-
-
-WGEN_DATA wdata;
-
-static int amp_ix;
-static int amp_inc;
-static unsigned char *amplitude_env = NULL;
-
-static int samplecount=0; // number done
-static int samplecount_start=0; // count at start of this segment
-static int end_wave=0; // continue to end of wave cycle
-static int wavephase;
-static int phaseinc;
-static int cycle_samples; // number of samples in a cycle at current pitch
-static int cbytes;
-static int hf_factor;
-
-static double minus_pi_t;
-static double two_pi_t;
-
-
-unsigned char *out_ptr;
-unsigned char *out_start;
-unsigned char *out_end;
-int outbuf_size = 0;
-
-// the queue of operations passed to wavegen from sythesize
-long wcmdq[N_WCMDQ][4];
-int wcmdq_head=0;
-int wcmdq_tail=0;
-
-// pitch,speed,
-int embedded_default[N_EMBEDDED_VALUES] = {0,50,170,100,50, 0,0, 0,170,0,0,0,0,0};
-static int embedded_max[N_EMBEDDED_VALUES] = {0,0x7fff,600,300,99,99,99, 0,600,0,0,0,0,4};
-
-#define N_CALLBACK_IX N_WAV_BUF-2 // adjust this delay to match display with the currently spoken word
-int current_source_index=0;
-
-extern FILE *f_wave;
-
-#if (USE_PORTAUDIO == 18)
-static PortAudioStream *pa_stream=NULL;
-#endif
-#if (USE_PORTAUDIO == 19)
-static PaStream *pa_stream=NULL;
-#endif
-
-/* default pitch envelope, a steady fall */
-#define ENV_LEN 128
-
-#define int(x) (int)(x)
-/*
-unsigned char Pitch_env0[ENV_LEN] = {
- 255,253,251,249,247,245,243,241,239,237,235,233,231,229,227,225,
- 223,221,219,217,215,213,211,209,207,205,203,201,199,197,195,193,
- 191,189,187,185,183,181,179,177,175,173,171,169,167,165,163,161,
- 159,157,155,153,151,149,147,145,143,141,139,137,135,133,131,129,
- 127,125,123,121,119,117,115,113,111,109,107,105,103,101, 99, 97,
- 95, 93, 91, 89, 87, 85, 83, 81, 79, 77, 75, 73, 71, 69, 67, 65,
- 63, 61, 59, 57, 55, 53, 51, 49, 47, 45, 43, 41, 39, 37, 35, 33,
- 31, 29, 27, 25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1
-};
-*/
-
-/*
-unsigned char Pitch_long[ENV_LEN] = {
- 254,249,250,251,252,253,254,254, 255,255,255,255,254,254,253,252,
- 251,250,249,247,244,242,238,234, 230,225,221,217,213,209,206,203,
- 199,195,191,187,183,179,175,172, 168,165,162,159,156,153,150,148,
- 145,143,140,138,136,134,132,130, 128,126,123,120,117,114,111,107,
- 104,100,96,91, 86,82,77,73, 70,66,63,60, 58,55,53,51,
- 49,47,46,45, 43,42,40,38, 36,34,31,28, 26,24,22,20,
- 18,16,14,12, 11,10,9,8, 8,8,8,8, 9,8,8,8,
- 8,8,7,7, 6,6,6,5, 4,4,3,3, 2,1,1,0
-};
-*/
-
-// 1st index=roughness
-// 2nd index=modulation_type
-// value: bits 0-3 amplitude (16ths), bits 4-7 every n cycles
-#define N_ROUGHNESS 8
-static unsigned char modulation_tab[N_ROUGHNESS][8] = {
- {0, 0x00, 0x00, 0x00, 0, 0x46, 0xf2, 0x29},
- {0, 0x2f, 0x00, 0x2f, 0, 0x45, 0xf2, 0x29},
- {0, 0x2f, 0x00, 0x2e, 0, 0x45, 0xf2, 0x28},
- {0, 0x2e, 0x00, 0x2d, 0, 0x34, 0xf2, 0x28},
- {0, 0x2d, 0x2d, 0x2c, 0, 0x34, 0xf2, 0x28},
- {0, 0x2b, 0x2b, 0x2b, 0, 0x34, 0xf2, 0x28},
- {0, 0x2a, 0x2a, 0x2a, 0, 0x34, 0xf2, 0x28},
- {0, 0x29, 0x29, 0x29, 0, 0x34, 0xf2, 0x28},
-};
-
-// Flutter table, to add natural variations to the pitch
-#define N_FLUTTER 0x170
-static int Flutter_inc;
-static const unsigned char Flutter_tab[N_FLUTTER] = {
- 0x80, 0x9b, 0xb5, 0xcb, 0xdc, 0xe8, 0xed, 0xec,
- 0xe6, 0xdc, 0xce, 0xbf, 0xb0, 0xa3, 0x98, 0x90,
- 0x8c, 0x8b, 0x8c, 0x8f, 0x92, 0x94, 0x95, 0x92,
- 0x8c, 0x83, 0x78, 0x69, 0x59, 0x49, 0x3c, 0x31,
- 0x2a, 0x29, 0x2d, 0x36, 0x44, 0x56, 0x69, 0x7d,
- 0x8f, 0x9f, 0xaa, 0xb1, 0xb2, 0xad, 0xa4, 0x96,
- 0x87, 0x78, 0x69, 0x5c, 0x53, 0x4f, 0x4f, 0x55,
- 0x5e, 0x6b, 0x7a, 0x88, 0x96, 0xa2, 0xab, 0xb0,
-
- 0xb1, 0xae, 0xa8, 0xa0, 0x98, 0x91, 0x8b, 0x88,
- 0x89, 0x8d, 0x94, 0x9d, 0xa8, 0xb2, 0xbb, 0xc0,
- 0xc1, 0xbd, 0xb4, 0xa5, 0x92, 0x7c, 0x63, 0x4a,
- 0x32, 0x1e, 0x0e, 0x05, 0x02, 0x05, 0x0f, 0x1e,
- 0x30, 0x44, 0x59, 0x6d, 0x7f, 0x8c, 0x96, 0x9c,
- 0x9f, 0x9f, 0x9d, 0x9b, 0x99, 0x99, 0x9c, 0xa1,
- 0xa9, 0xb3, 0xbf, 0xca, 0xd5, 0xdc, 0xe0, 0xde,
- 0xd8, 0xcc, 0xbb, 0xa6, 0x8f, 0x77, 0x60, 0x4b,
-
- 0x3a, 0x2e, 0x28, 0x29, 0x2f, 0x3a, 0x48, 0x59,
- 0x6a, 0x7a, 0x86, 0x90, 0x94, 0x95, 0x91, 0x89,
- 0x80, 0x75, 0x6b, 0x62, 0x5c, 0x5a, 0x5c, 0x61,
- 0x69, 0x74, 0x80, 0x8a, 0x94, 0x9a, 0x9e, 0x9d,
- 0x98, 0x90, 0x86, 0x7c, 0x71, 0x68, 0x62, 0x60,
- 0x63, 0x6b, 0x78, 0x88, 0x9b, 0xaf, 0xc2, 0xd2,
- 0xdf, 0xe6, 0xe7, 0xe2, 0xd7, 0xc6, 0xb2, 0x9c,
- 0x84, 0x6f, 0x5b, 0x4b, 0x40, 0x39, 0x37, 0x38,
-
- 0x3d, 0x43, 0x4a, 0x50, 0x54, 0x56, 0x55, 0x52,
- 0x4d, 0x48, 0x42, 0x3f, 0x3e, 0x41, 0x49, 0x56,
- 0x67, 0x7c, 0x93, 0xab, 0xc3, 0xd9, 0xea, 0xf6,
- 0xfc, 0xfb, 0xf4, 0xe7, 0xd5, 0xc0, 0xaa, 0x94,
- 0x80, 0x71, 0x64, 0x5d, 0x5a, 0x5c, 0x61, 0x68,
- 0x70, 0x77, 0x7d, 0x7f, 0x7f, 0x7b, 0x74, 0x6b,
- 0x61, 0x57, 0x4e, 0x48, 0x46, 0x48, 0x4e, 0x59,
- 0x66, 0x75, 0x84, 0x93, 0x9f, 0xa7, 0xab, 0xaa,
-
- 0xa4, 0x99, 0x8b, 0x7b, 0x6a, 0x5b, 0x4e, 0x46,
- 0x43, 0x45, 0x4d, 0x5a, 0x6b, 0x7f, 0x92, 0xa6,
- 0xb8, 0xc5, 0xcf, 0xd3, 0xd2, 0xcd, 0xc4, 0xb9,
- 0xad, 0xa1, 0x96, 0x8e, 0x89, 0x87, 0x87, 0x8a,
- 0x8d, 0x91, 0x92, 0x91, 0x8c, 0x84, 0x78, 0x68,
- 0x55, 0x41, 0x2e, 0x1c, 0x0e, 0x05, 0x01, 0x05,
- 0x0f, 0x1f, 0x34, 0x4d, 0x68, 0x81, 0x9a, 0xb0,
- 0xc1, 0xcd, 0xd3, 0xd3, 0xd0, 0xc8, 0xbf, 0xb5,
-
- 0xab, 0xa4, 0x9f, 0x9c, 0x9d, 0xa0, 0xa5, 0xaa,
- 0xae, 0xb1, 0xb0, 0xab, 0xa3, 0x96, 0x87, 0x76,
- 0x63, 0x51, 0x42, 0x36, 0x2f, 0x2d, 0x31, 0x3a,
- 0x48, 0x59, 0x6b, 0x7e, 0x8e, 0x9c, 0xa6, 0xaa,
- 0xa9, 0xa3, 0x98, 0x8a, 0x7b, 0x6c, 0x5d, 0x52,
- 0x4a, 0x48, 0x4a, 0x50, 0x5a, 0x67, 0x75, 0x82
-};
-
-// waveform shape table for HF peaks, formants 6,7,8
-#define N_WAVEMULT 128
-static int wavemult_offset=0;
-static int wavemult_max=0;
-
-// the presets are for 22050 Hz sample rate.
-// A different rate will need to recalculate the presets in WavegenInit()
-static unsigned char wavemult[N_WAVEMULT] = {
- 0, 0, 0, 2, 3, 5, 8, 11, 14, 18, 22, 27, 32, 37, 43, 49,
- 55, 62, 69, 76, 83, 90, 98,105,113,121,128,136,144,152,159,166,
- 174,181,188,194,201,207,213,218,224,228,233,237,240,244,246,249,
- 251,252,253,253,253,253,252,251,249,246,244,240,237,233,228,224,
- 218,213,207,201,194,188,181,174,166,159,152,144,136,128,121,113,
- 105, 98, 90, 83, 76, 69, 62, 55, 49, 43, 37, 32, 27, 22, 18, 14,
- 11, 8, 5, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-
-
-// set from y = pow(2,x) * 128, x=-1 to 1
-unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1] = {
- 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 86, 87, 88,
- 89, 91, 92, 93, 94, 96, 97, 98,
- 100,101,103,104,105,107,108,110,
- 111,113,115,116,118,119,121,123,
- 124,126,128,130,132,133,135,137,
- 139,141,143,145,147,149,151,153,
- 155,158,160,162,164,167,169,171,
- 174,176,179,181,184,186,189,191,
- 194,197,199,202,205,208,211,214,
- 217,220,223,226,229,232,236,239,
- 242,246,249,252, 254,255 };
-
-int WavegenFill(int fill_zeros);
-
-
-#ifdef LOG_FRAMES
-static void LogMarker(int type, int value)
-{//=======================================
- if(option_log_frames == 0)
- return;
-
- if((type == espeakEVENT_PHONEME) || (type == espeakEVENT_SENTENCE))
- {
- f_log=fopen("log-espeakedit","a");
- if(f_log)
- {
- if(type == espeakEVENT_PHONEME)
- fprintf(f_log,"Phoneme [%s]\n",WordToString(value));
- else
- fprintf(f_log,"\n");
- fclose(f_log);
- f_log = NULL;
- }
- }
-}
-#endif
-
-void WcmdqStop()
-{//=============
- wcmdq_head = 0;
- wcmdq_tail = 0;
-#ifdef USE_PORTAUDIO
- Pa_AbortStream(pa_stream);
-#endif
-}
-
-
-int WcmdqFree()
-{//============
- int i;
- i = wcmdq_head - wcmdq_tail;
- if(i <= 0) i += N_WCMDQ;
- return(i);
-}
-
-int WcmdqUsed()
-{//============
- return(N_WCMDQ - WcmdqFree());
-}
-
-
-void WcmdqInc()
-{//============
- wcmdq_tail++;
- if(wcmdq_tail >= N_WCMDQ) wcmdq_tail=0;
-}
-
-static void WcmdqIncHead()
-{//=======================
- wcmdq_head++;
- if(wcmdq_head >= N_WCMDQ) wcmdq_head=0;
-}
-
-
-
-// data points from which to make the presets for pk_shape1 and pk_shape2
-#define PEAKSHAPEW 256
-static const float pk_shape_x[2][8] = {
- {0,-0.6f, 0.0f, 0.6f, 1.4f, 2.5f, 4.5f, 5.5f},
- {0,-0.6f, 0.0f, 0.6f, 1.4f, 2.0f, 4.5f, 5.5f }};
-static const float pk_shape_y[2][8] = {
- {0, 67, 81, 67, 31, 14, 0, -6} ,
- {0, 77, 81, 77, 31, 7, 0, -6 }};
-
-unsigned char pk_shape1[PEAKSHAPEW+1] = {
- 255,254,254,254,254,254,253,253,252,251,251,250,249,248,247,246,
- 245,244,242,241,239,238,236,234,233,231,229,227,225,223,220,218,
- 216,213,211,209,207,205,203,201,199,197,195,193,191,189,187,185,
- 183,180,178,176,173,171,169,166,164,161,159,156,154,151,148,146,
- 143,140,138,135,132,129,126,123,120,118,115,112,108,105,102, 99,
- 96, 95, 93, 91, 90, 88, 86, 85, 83, 82, 80, 79, 77, 76, 74, 73,
- 72, 70, 69, 68, 67, 66, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55,
- 55, 54, 53, 52, 52, 51, 50, 50, 49, 48, 48, 47, 47, 46, 46, 46,
- 45, 45, 45, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 44, 43,
- 42, 42, 41, 40, 40, 39, 38, 38, 37, 36, 36, 35, 35, 34, 33, 33,
- 32, 32, 31, 30, 30, 29, 29, 28, 28, 27, 26, 26, 25, 25, 24, 24,
- 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 18, 17, 17, 16,
- 16, 15, 15, 15, 14, 14, 13, 13, 13, 12, 12, 11, 11, 11, 10, 10,
- 10, 9, 9, 9, 8, 8, 8, 7, 7, 7, 7, 6, 6, 6, 5, 5,
- 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0 };
-
-static unsigned char pk_shape2[PEAKSHAPEW+1] = {
- 255,254,254,254,254,254,254,254,254,254,253,253,253,253,252,252,
- 252,251,251,251,250,250,249,249,248,248,247,247,246,245,245,244,
- 243,243,242,241,239,237,235,233,231,229,227,225,223,221,218,216,
- 213,211,208,205,203,200,197,194,191,187,184,181,178,174,171,167,
- 163,160,156,152,148,144,140,136,132,127,123,119,114,110,105,100,
- 96, 94, 91, 88, 86, 83, 81, 78, 76, 74, 71, 69, 66, 64, 62, 60,
- 57, 55, 53, 51, 49, 47, 44, 42, 40, 38, 36, 34, 32, 30, 29, 27,
- 25, 23, 21, 19, 18, 16, 14, 12, 11, 9, 7, 6, 4, 3, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0 };
-
-static unsigned char *pk_shape;
-
-
-static void WavegenInitPkData(int which)
-{//=====================================
-// this is only needed to set up the presets for pk_shape1 and pk_shape2
-// These have already been pre-calculated and preset
-#ifdef deleted
- int ix;
- int p;
- float x;
- float y[PEAKSHAPEW];
- float maxy=0;
-
- if(which==0)
- pk_shape = pk_shape1;
- else
- pk_shape = pk_shape2;
-
- p = 0;
- for(ix=0;ix<PEAKSHAPEW;ix++)
- {
- x = (4.5*ix)/PEAKSHAPEW;
- if(x >= pk_shape_x[which][p+3]) p++;
- y[ix] = polint(&pk_shape_x[which][p],&pk_shape_y[which][p],3,x);
- if(y[ix] > maxy) maxy = y[ix];
- }
- for(ix=0;ix<PEAKSHAPEW;ix++)
- {
- p = (int)(y[ix]*255/maxy);
- pk_shape[ix] = (p >= 0) ? p : 0;
- }
- pk_shape[PEAKSHAPEW]=0;
-#endif
-} // end of WavegenInitPkData
-
-
-
-#ifdef USE_PORTAUDIO
-// PortAudio interface
-
-static int userdata[4];
-static PaError pa_init_err=0;
-static int out_channels=1;
-
-#if USE_PORTAUDIO == 18
-static int WaveCallback(void *inputBuffer, void *outputBuffer,
- unsigned long framesPerBuffer, PaTimestamp outTime, void *userData )
-#else
-static int WaveCallback(const void *inputBuffer, void *outputBuffer,
- long unsigned int framesPerBuffer, const PaStreamCallbackTimeInfo *outTime,
- PaStreamCallbackFlags flags, void *userData )
-#endif
-{
- int ix;
- int result;
- unsigned char *p;
-
- out_ptr = out_start = (unsigned char *)outputBuffer;
- out_end = out_ptr + framesPerBuffer*2;
-
-#ifdef LIBRARY
- event_list_ix = 0;
-#endif
-
- result = WavegenFill(1);
-
-#ifdef LIBRARY
- count_samples += framesPerBuffer;
- if(synth_callback)
- {
- // synchronous-playback mode, allow the calling process to abort the speech
- event_list[event_list_ix].type = espeakEVENT_LIST_TERMINATED; // indicates end of event list
- event_list[event_list_ix].user_data = 0;
-
- if(synth_callback(NULL,0,event_list) == 1)
- {
- SpeakNextClause(NULL,NULL,2); // stop speaking
- result = 1;
- }
- }
-#endif
-
-#ifdef ARCH_BIG
- {
- // swap the order of bytes in each sound sample in the portaudio buffer
- int c;
- out_ptr = (unsigned char *)outputBuffer;
- out_end = out_ptr + framesPerBuffer*2;
- while(out_ptr < out_end)
- {
- c = out_ptr[0];
- out_ptr[0] = out_ptr[1];
- out_ptr[1] = c;
- out_ptr += 2;
- }
- }
-#endif
-
- if(out_channels == 2)
- {
- // sound output can only do stereo, not mono. Duplicate each sound sample to
- // produce 2 channels.
- out_ptr = (unsigned char *)outputBuffer;
- for(ix=framesPerBuffer-1; ix>=0; ix--)
- {
- p = &out_ptr[ix*4];
- p[3] = p[1] = out_ptr[ix*2 + 1];
- p[2] = p[0] = out_ptr[ix*2];
- }
- }
-
-#if USE_PORTAUDIO == 18
-#ifdef PLATFORM_WINDOWS
- return(result);
-#endif
- if(result != 0)
- {
- static int end_timer = 0;
- if(end_timer == 0)
- end_timer = 4;
- if(end_timer > 0)
- {
- end_timer--;
- if(end_timer == 0)
- return(1);
- }
- }
- return(0);
-#else
- return(result);
-#endif
-
-} // end of WaveCallBack
-
-
-#if USE_PORTAUDIO == 19
-/* This is a fixed version of Pa_OpenDefaultStream() for use if the version in portaudio V19
- is broken */
-
-static PaError Pa_OpenDefaultStream2( PaStream** stream,
- int inputChannelCount,
- int outputChannelCount,
- PaSampleFormat sampleFormat,
- double sampleRate,
- unsigned long framesPerBuffer,
- PaStreamCallback *streamCallback,
- void *userData )
-{
- PaError result;
- PaStreamParameters hostApiOutputParameters;
-
- if(option_device_number >= 0)
- hostApiOutputParameters.device = option_device_number;
- else
- hostApiOutputParameters.device = Pa_GetDefaultOutputDevice();
-
- if( hostApiOutputParameters.device == paNoDevice )
- return paDeviceUnavailable;
-
- hostApiOutputParameters.channelCount = outputChannelCount;
- hostApiOutputParameters.sampleFormat = sampleFormat;
- /* defaultHighOutputLatency is used below instead of
- defaultLowOutputLatency because it is more important for the default
- stream to work reliably than it is for it to work with the lowest
- latency.
- */
- hostApiOutputParameters.suggestedLatency =
- Pa_GetDeviceInfo( hostApiOutputParameters.device )->defaultHighOutputLatency;
- hostApiOutputParameters.hostApiSpecificStreamInfo = NULL;
-
- result = Pa_OpenStream(
- stream, NULL, &hostApiOutputParameters, sampleRate, framesPerBuffer, paNoFlag, streamCallback, userData );
-
- return(result);
-}
-#endif
-
-
-int WavegenOpenSound()
-{//===================
- PaError err, err2;
- PaError active;
-
- if(option_waveout || option_quiet)
- {
- // writing to WAV file, not to portaudio
- return(0);
- }
-
-#if USE_PORTAUDIO == 18
- active = Pa_StreamActive(pa_stream);
-#else
- active = Pa_IsStreamActive(pa_stream);
-#endif
-
- if(active == 1)
- return(0);
- if(active < 0)
- {
- out_channels = 1;
-
-#if USE_PORTAUDIO == 18
- err2 = Pa_OpenDefaultStream(&pa_stream,0,1,paInt16,samplerate,512,N_WAV_BUF,WaveCallback,(void *)userdata);
-
- if(err2 == paInvalidChannelCount)
- {
- // failed to open with mono, try stereo
- out_channels=2;
- err2 = Pa_OpenDefaultStream(&pa_stream,0,2,paInt16,samplerate,512,N_WAV_BUF,WaveCallback,(void *)userdata);
- }
-#else
- err2 = Pa_OpenDefaultStream2(&pa_stream,0,1,paInt16,(double)samplerate,512,WaveCallback,(void *)userdata);
-
- if(err2 == paInvalidChannelCount)
- {
- // failed to open with mono, try stereo
- out_channels=2;
- err2 = Pa_OpenDefaultStream(&pa_stream,0,2,paInt16,(double)samplerate,512,WaveCallback,(void *)userdata);
- }
-#endif
- }
- err = Pa_StartStream(pa_stream);
-
-#if USE_PORTAUDIO == 19
- if(err == paStreamIsNotStopped)
- {
- // not sure why we need this, but PA v19 seems to need it
- err = Pa_StopStream(pa_stream);
- err = Pa_StartStream(pa_stream);
- }
-#endif
-
- if(err != paNoError)
- {
- // exit speak if we can't open the sound device - this is OK if speak is being run for each utterance
- exit(2);
- }
-
- return(0);
-}
-
-
-
-int WavegenCloseSound()
-{//====================
- PaError active;
-
- // check whether speaking has finished, and close the stream
- if(pa_stream != NULL)
- {
-#if USE_PORTAUDIO == 18
- active = Pa_StreamActive(pa_stream);
-#else
- active = Pa_IsStreamActive(pa_stream);
-#endif
- if(WcmdqUsed() == 0) // also check that the queue is empty
- {
- if(active == 0)
- {
- Pa_CloseStream(pa_stream);
- pa_stream = NULL;
- return(1);
- }
- }
- else
- {
- WavegenOpenSound(); // still items in the queue, shouldn't be closed
- }
- }
- return(0);
-}
-
-
-int WavegenInitSound()
-{//===================
- PaError err;
-
- if(option_quiet)
- return(0);
-
- // PortAudio sound output library
- err = Pa_Initialize();
- pa_init_err = err;
- if(err != paNoError)
- {
- fprintf(stderr,"Failed to initialise the PortAudio sound\n");
- return(1);
- }
- return(0);
-}
-#else
-int WavegenOpenSound()
-{//===================
- return(0);
-}
-int WavegenCloseSound()
-{//====================
- return(0);
-}
-int WavegenInitSound()
-{//===================
- return(0);
-}
-#endif
-
-
-void WavegenInit(int rate, int wavemult_fact)
-{//==========================================
- int ix;
- double x;
-
- if(wavemult_fact == 0)
- wavemult_fact=60; // default
-
- wvoice = NULL;
- samplerate = samplerate_native = rate;
- PHASE_INC_FACTOR = 0x8000000 / samplerate; // assumes pitch is Hz*32
- Flutter_inc = (64 * samplerate)/rate;
- samplecount = 0;
- nsamples = 0;
- wavephase = 0x7fffffff;
- max_hval = 0;
-
- wdata.amplitude = 32;
- wdata.prev_was_synth = 0;
-
- for(ix=0; ix<N_EMBEDDED_VALUES; ix++)
- embedded_value[ix] = embedded_default[ix];
-
-
- // set up window to generate a spread of harmonics from a
- // single peak for HF peaks
- wavemult_max = (samplerate * wavemult_fact)/(256 * 50);
- if(wavemult_max > N_WAVEMULT) wavemult_max = N_WAVEMULT;
-
- wavemult_offset = wavemult_max/2;
-
- if(samplerate != 22050)
- {
- // wavemult table has preset values for 22050 Hz, we only need to
- // recalculate them if we have a different sample rate
- for(ix=0; ix<wavemult_max; ix++)
- {
- x = 127*(1.0 - cos(PI2*ix/wavemult_max));
- wavemult[ix] = (int)x;
- }
- }
-
- WavegenInitPkData(1);
- WavegenInitPkData(0);
- pk_shape = pk_shape2; // pk_shape2
-
-#ifdef INCLUDE_KLATT
- KlattInit();
-#endif
-
-#ifdef LOG_FRAMES
-remove("log-espeakedit");
-#endif
-} // end of WavegenInit
-
-
-int GetAmplitude(void)
-{//===================
- int amp;
-
- // normal, none, reduced, moderate, strong
- static const unsigned char amp_emphasis[5] = {16, 16, 10, 16, 22};
-
- amp = (embedded_value[EMBED_A])*55/100;
- general_amplitude = amp * amp_emphasis[embedded_value[EMBED_F]] / 16;
- return(general_amplitude);
-}
-
-
-static void WavegenSetEcho(void)
-{//=============================
- int delay;
- int amp;
-
- voicing = wvoice->voicing;
- delay = wvoice->echo_delay;
- amp = wvoice->echo_amp;
-
- if(delay >= N_ECHO_BUF)
- delay = N_ECHO_BUF-1;
- if(amp > 100)
- amp = 100;
-
- memset(echo_buf,0,sizeof(echo_buf));
- echo_tail = 0;
-
- if(embedded_value[EMBED_H] > 0)
- {
- // set echo from an embedded command in the text
- amp = embedded_value[EMBED_H];
- delay = 130;
- }
- if(embedded_value[EMBED_T] > 0)
- {
- // announcing punctuation
- amp = embedded_value[EMBED_T] * 8;
- delay = 60;
- }
-
- if(delay == 0)
- amp = 0;
-
- echo_head = (delay * samplerate)/1000;
- echo_length = echo_head; // ensure completion of echo at the end of speech. Use 1 delay period?
- if(amp == 0)
- echo_length = 0;
- if(amp > 20)
- echo_length = echo_head * 2; // perhaps allow 2 echo periods if the echo is loud.
-
- // echo_amp units are 1/256ths of the amplitude of the original sound.
- echo_amp = amp;
- // compensate (partially) for increase in amplitude due to echo
- general_amplitude = GetAmplitude();
- general_amplitude = ((general_amplitude * (500-amp))/500);
-} // end of WavegenSetEcho
-
-
-
-int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control)
-{//============================================================================
-// Calculate the amplitude of each harmonics from the formants
-// Only for formants 0 to 5
-
-// control 0=initial call, 1=every 64 cycles
-
- // pitch and freqs are Hz<<16
-
- int f;
- wavegen_peaks_t *p;
- int fp; // centre freq of peak
- int fhi; // high freq of peak
- int h; // harmonic number
- int pk;
- int hmax;
- int hmax_samplerate; // highest harmonic allowed for the samplerate
- int x;
- int ix;
- int h1;
-
-#ifdef SPECT_EDITOR
- if(harm_sqrt_n > 0)
- return(HarmToHarmspect(pitch,htab));
-#endif
-
- // initialise as much of *out as we will need
- if(wvoice == NULL)
- return(1);
- hmax = (peaks[wvoice->n_harmonic_peaks].freq + peaks[wvoice->n_harmonic_peaks].right)/pitch;
- if(hmax >= MAX_HARMONIC)
- hmax = MAX_HARMONIC-1;
-
- // restrict highest harmonic to half the samplerate
- hmax_samplerate = (((samplerate * 19)/40) << 16)/pitch; // only 95% of Nyquist freq
-// hmax_samplerate = (samplerate << 16)/(pitch*2);
-
- if(hmax > hmax_samplerate)
- hmax = hmax_samplerate;
-
- for(h=0;h<=hmax;h++)
- htab[h]=0;
-
- h=0;
- for(pk=0; pk<=wvoice->n_harmonic_peaks; pk++)
- {
- p = &peaks[pk];
- if((p->height == 0) || (fp = p->freq)==0)
- continue;
-
- fhi = p->freq + p->right;
- h = ((p->freq - p->left) / pitch) + 1;
- if(h <= 0) h = 1;
-
- for(f=pitch*h; f < fp; f+=pitch)
- {
- htab[h++] += pk_shape[(fp-f)/(p->left>>8)] * p->height;
- }
- for(; f < fhi; f+=pitch)
- {
- htab[h++] += pk_shape[(f-fp)/(p->right>>8)] * p->height;
- }
- }
-
-{
-int y;
-int h2;
- // increase bass
- y = peaks[1].height * 10; // addition as a multiple of 1/256s
- h2 = (1000<<16)/pitch; // decrease until 1000Hz
- if(h2 > 0)
- {
- x = y/h2;
- h = 1;
- while(y > 0)
- {
- htab[h++] += y;
- y -= x;
- }
- }
-}
-
- // find the nearest harmonic for HF peaks where we don't use shape
- for(; pk<N_PEAKS; pk++)
- {
- x = peaks[pk].height >> 14;
- peak_height[pk] = (x * x * 5)/2;
-
- // find the nearest harmonic for HF peaks where we don't use shape
- if(control == 0)
- {
- // set this initially, but make changes only at the quiet point
- peak_harmonic[pk] = peaks[pk].freq / pitch;
- }
- // only use harmonics up to half the samplerate
- if(peak_harmonic[pk] >= hmax_samplerate)
- peak_height[pk] = 0;
- }
-
- // convert from the square-rooted values
- f = 0;
- for(h=0; h<=hmax; h++, f+=pitch)
- {
- x = htab[h] >> 15;
- htab[h] = (x * x) >> 8;
-
- if((ix = (f >> 19)) < N_TONE_ADJUST)
- {
- htab[h] = (htab[h] * wvoice->tone_adjust[ix]) >> 13; // index tone_adjust with Hz/8
- }
- }
-
- // adjust the amplitude of the first harmonic, affects tonal quality
- h1 = htab[1] * option_harmonic1;
- htab[1] = h1/8;
-
-
- // calc intermediate increments of LF harmonics
- if(control & 1)
- {
- for(h=1; h<N_LOWHARM; h++)
- {
- harm_inc[h] = (htab[h] - harmspect[h]) >> 3;
- }
- }
-
- return(hmax); // highest harmonic number
-} // end of PeaksToHarmspect
-
-
-
-static void AdvanceParameters()
-{//============================
-// Called every 64 samples to increment the formant freq, height, and widths
-
- int x;
- int ix;
- static int Flutter_ix = 0;
-
- // advance the pitch
- wdata.pitch_ix += wdata.pitch_inc;
- if((ix = wdata.pitch_ix>>8) > 127) ix = 127;
- x = wdata.pitch_env[ix] * wdata.pitch_range;
- wdata.pitch = (x>>8) + wdata.pitch_base;
-
- amp_ix += amp_inc;
-
- /* add pitch flutter */
- if(Flutter_ix >= (N_FLUTTER*64))
- Flutter_ix = 0;
- x = ((int)(Flutter_tab[Flutter_ix >> 6])-0x80) * flutter_amp;
- Flutter_ix += Flutter_inc;
- wdata.pitch += x;
- if(wdata.pitch < 102400)
- wdata.pitch = 102400; // min pitch, 25 Hz (25 << 12)
-
- if(samplecount == samplecount_start)
- return;
-
- for(ix=0; ix <= wvoice->n_harmonic_peaks; ix++)
- {
- peaks[ix].freq1 += peaks[ix].freq_inc;
- peaks[ix].freq = (int)(peaks[ix].freq1);
- peaks[ix].height1 += peaks[ix].height_inc;
- if((peaks[ix].height = (int)(peaks[ix].height1)) < 0)
- peaks[ix].height = 0;
- peaks[ix].left1 += peaks[ix].left_inc;
- peaks[ix].left = (int)(peaks[ix].left1);
- if(ix < 3)
- {
- peaks[ix].right1 += peaks[ix].right_inc;
- peaks[ix].right = (int)(peaks[ix].right1);
- }
- else
- {
- peaks[ix].right = peaks[ix].left;
- }
- }
- for(;ix < 8; ix++)
- {
- // formants 6,7,8 don't have a width parameter
- if(ix < 7)
- {
- peaks[ix].freq1 += peaks[ix].freq_inc;
- peaks[ix].freq = (int)(peaks[ix].freq1);
- }
- peaks[ix].height1 += peaks[ix].height_inc;
- if((peaks[ix].height = (int)(peaks[ix].height1)) < 0)
- peaks[ix].height = 0;
- }
-
-#ifdef SPECT_EDITOR
- if(harm_sqrt_n != 0)
- {
- // We are generating from a harmonic spectrum at a given pitch, not from formant peaks
- for(ix=0; ix<harm_sqrt_n; ix++)
- harm_sqrt[ix] += harm_sqrt_inc[ix];
- }
-#endif
-} // end of AdvanceParameters
-
-
-#ifndef PLATFORM_RISCOS
-static double resonator(RESONATOR *r, double input)
-{//================================================
- double x;
-
- x = r->a * input + r->b * r->x1 + r->c * r->x2;
- r->x2 = r->x1;
- r->x1 = x;
-
- return x;
-}
-
-
-
-static void setresonator(RESONATOR *rp, int freq, int bwidth, int init)
-{//====================================================================
-// freq Frequency of resonator in Hz
-// bwidth Bandwidth of resonator in Hz
-// init Initialize internal data
-
- double x;
- double arg;
-
- if(init)
- {
- rp->x1 = 0;
- rp->x2 = 0;
- }
-
- // x = exp(-pi * bwidth * t)
- arg = minus_pi_t * bwidth;
- x = exp(arg);
-
- // c = -(x*x)
- rp->c = -(x * x);
-
- // b = x * 2*cos(2 pi * freq * t)
-
- arg = two_pi_t * freq;
- rp->b = x * cos(arg) * 2.0;
-
- // a = 1.0 - b - c
- rp->a = 1.0 - rp->b - rp->c;
-} // end if setresonator
-#endif
-
-
-void InitBreath(void)
-{//==================
-#ifndef PLATFORM_RISCOS
- int ix;
-
- minus_pi_t = -PI / samplerate;
- two_pi_t = -2.0 * minus_pi_t;
-
- for(ix=0; ix<N_PEAKS; ix++)
- {
- setresonator(&rbreath[ix],2000,200,1);
- }
-#endif
-} // end of InitBreath
-
-
-
-static void SetBreath()
-{//====================
-#ifndef PLATFORM_RISCOS
- int pk;
-
- if(wvoice->breath[0] == 0)
- return;
-
- for(pk=1; pk<N_PEAKS; pk++)
- {
- if(wvoice->breath[pk] != 0)
- {
- // breath[0] indicates that some breath formants are needed
- // set the freq from the current ynthesis formant and the width from the voice data
- setresonator(&rbreath[pk], peaks[pk].freq >> 16, wvoice->breathw[pk],0);
- }
- }
-#endif
-} // end of SetBreath
-
-
-static int ApplyBreath(void)
-{//=========================
- int value = 0;
-#ifndef PLATFORM_RISCOS
- int noise;
- int ix;
- int amp;
-
- // use two random numbers, for alternate formants
- noise = (rand() & 0x3fff) - 0x2000;
-
- for(ix=1; ix < N_PEAKS; ix++)
- {
- if((amp = wvoice->breath[ix]) != 0)
- {
- amp *= (peaks[ix].height >> 14);
- value += (int)(resonator(&rbreath[ix],noise) * amp);
- }
- }
-#endif
- return (value);
-}
-
-
-
-int Wavegen()
-{//==========
- unsigned short waveph;
- unsigned short theta;
- int total;
- int h;
- int ix;
- int z, z1, z2;
- int echo;
- int ov;
- static int maxh, maxh2;
- int pk;
- signed char c;
- int sample;
- int amp;
- int modn_amp, modn_period;
- static int agc = 256;
- static int h_switch_sign = 0;
- static int cycle_count = 0;
- static int amplitude2 = 0; // adjusted for pitch
-
- // continue until the output buffer is full, or
- // the required number of samples have been produced
-
- for(;;)
- {
- if((end_wave==0) && (samplecount==nsamples))
- return(0);
-
- if((samplecount & 0x3f) == 0)
- {
- // every 64 samples, adjust the parameters
- if(samplecount == 0)
- {
- hswitch = 0;
- harmspect = hspect[0];
- maxh2 = PeaksToHarmspect(peaks, wdata.pitch<<4, hspect[0], 0);
-
- // adjust amplitude to compensate for fewer harmonics at higher pitch
- amplitude2 = (wdata.amplitude * wdata.pitch)/(100 << 11);
-
- // switch sign of harmonics above about 900Hz, to reduce max peak amplitude
- h_switch_sign = 890 / (wdata.pitch >> 12);
- }
- else
- AdvanceParameters();
-
- // pitch is Hz<<12
- phaseinc = (wdata.pitch>>7) * PHASE_INC_FACTOR;
- cycle_samples = samplerate/(wdata.pitch >> 12); // sr/(pitch*2)
- hf_factor = wdata.pitch >> 11;
-
- maxh = maxh2;
- harmspect = hspect[hswitch];
- hswitch ^= 1;
- maxh2 = PeaksToHarmspect(peaks, wdata.pitch<<4, hspect[hswitch], 1);
-
- SetBreath();
- }
- else
- if((samplecount & 0x07) == 0)
- {
- for(h=1; h<N_LOWHARM && h<=maxh2 && h<=maxh; h++)
- {
- harmspect[h] += harm_inc[h];
- }
-
- // bring automctic gain control back towards unity
- if(agc < 256) agc++;
- }
-
- samplecount++;
-
- if(wavephase > 0)
- {
- wavephase += phaseinc;
- if(wavephase < 0)
- {
- // sign has changed, reached a quiet point in the waveform
- cbytes = wavemult_offset - (cycle_samples)/2;
- if(samplecount > nsamples)
- return(0);
-
- cycle_count++;
-
- for(pk=wvoice->n_harmonic_peaks+1; pk<N_PEAKS; pk++)
- {
- // find the nearest harmonic for HF peaks where we don't use shape
- peak_harmonic[pk] = peaks[pk].freq / (wdata.pitch*16);
- }
-
- // adjust amplitude to compensate for fewer harmonics at higher pitch
- amplitude2 = (wdata.amplitude * wdata.pitch)/(100 << 11);
-
- if(glottal_flag > 0)
- {
- if(glottal_flag == 3)
- {
- if((nsamples-samplecount) < (cycle_samples*2))
- {
- // Vowel before glottal-stop.
- // This is the start of the penultimate cycle, reduce its amplitude
- glottal_flag = 2;
- amplitude2 = (amplitude2 * glottal_reduce)/256;
- }
- }
- else
- if(glottal_flag == 4)
- {
- // Vowel following a glottal-stop.
- // This is the start of the second cycle, reduce its amplitude
- glottal_flag = 2;
- amplitude2 = (amplitude2 * glottal_reduce)/256;
- }
- else
- {
- glottal_flag--;
- }
- }
-
- if(amplitude_env != NULL)
- {
- // amplitude envelope is only used for creaky voice effect on certain vowels/tones
- if((ix = amp_ix>>8) > 127) ix = 127;
- amp = amplitude_env[ix];
- amplitude2 = (amplitude2 * amp)/128;
-// if(amp < 255)
-// modulation_type = 7;
- }
-
- // introduce roughness into the sound by reducing the amplitude of
- modn_period = 0;
- if(voice->roughness < N_ROUGHNESS)
- {
- modn_period = modulation_tab[voice->roughness][modulation_type];
- modn_amp = modn_period & 0xf;
- modn_period = modn_period >> 4;
- }
-
- if(modn_period != 0)
- {
- if(modn_period==0xf)
- {
- // just once */
- amplitude2 = (amplitude2 * modn_amp)/16;
- modulation_type = 0;
- }
- else
- {
- // reduce amplitude every [modn_period} cycles
- if((cycle_count % modn_period)==0)
- amplitude2 = (amplitude2 * modn_amp)/16;
- }
- }
- }
- }
- else
- {
- wavephase += phaseinc;
- }
- waveph = (unsigned short)(wavephase >> 16);
- total = 0;
-
- // apply HF peaks, formants 6,7,8
- // add a single harmonic and then spread this my multiplying by a
- // window. This is to reduce the processing power needed to add the
- // higher frequence harmonics.
- cbytes++;
- if(cbytes >=0 && cbytes<wavemult_max)
- {
- for(pk=wvoice->n_harmonic_peaks+1; pk<N_PEAKS; pk++)
- {
- theta = peak_harmonic[pk] * waveph;
- total += (long)sin_tab[theta >> 5] * peak_height[pk];
- }
-
- // spread the peaks by multiplying by a window
- total = (long)(total / hf_factor) * wavemult[cbytes];
- }
-
- // apply main peaks, formants 0 to 5
-#ifdef USE_ASSEMBLER_1
- // use an optimised routine for this loop, if available
- total += AddSineWaves(waveph, h_switch_sign, maxh, harmspect); // call an assembler code routine
-#else
- theta = waveph;
-
- for(h=1; h<=h_switch_sign; h++)
- {
- total += ((int)(sin_tab[theta >> 5]) * harmspect[h]);
- theta += waveph;
- }
- while(h<=maxh)
- {
- total -= ((int)(sin_tab[theta >> 5]) * harmspect[h]);
- theta += waveph;
- h++;
- }
-#endif
-
- if(voicing != 64)
- {
- total = (total >> 6) * voicing;
- }
-
-#ifndef PLATFORM_RISCOS
- if(wvoice->breath[0])
- {
- total += ApplyBreath();
- }
-#endif
-
- // mix with sampled wave if required
- z2 = 0;
- if(wdata.mix_wavefile_ix < wdata.n_mix_wavefile)
- {
- if(wdata.mix_wave_scale == 0)
- {
- // a 16 bit sample
- c = wdata.mix_wavefile[wdata.mix_wavefile_ix+1];
- sample = wdata.mix_wavefile[wdata.mix_wavefile_ix] + (c * 256);
- wdata.mix_wavefile_ix += 2;
- }
- else
- {
- // a 8 bit sample, scaled
- sample = (signed char)wdata.mix_wavefile[wdata.mix_wavefile_ix++] * wdata.mix_wave_scale;
- }
- z2 = (sample * wdata.amplitude_v) >> 10;
- z2 = (z2 * wdata.mix_wave_amp)/32;
- }
-
- z1 = z2 + (((total>>8) * amplitude2) >> 13);
-
- echo = (echo_buf[echo_tail++] * echo_amp);
- z1 += echo >> 8;
- if(echo_tail >= N_ECHO_BUF)
- echo_tail=0;
-
- z = (z1 * agc) >> 8;
-
- // check for overflow, 16bit signed samples
- if(z >= 32768)
- {
- ov = 8388608/z1 - 1; // 8388608 is 2^23, i.e. max value * 256
- if(ov < agc) agc = ov; // set agc to number of 1/256ths to multiply the sample by
- z = (z1 * agc) >> 8; // reduce sample by agc value to prevent overflow
- }
- else
- if(z <= -32768)
- {
- ov = -8388608/z1 - 1;
- if(ov < agc) agc = ov;
- z = (z1 * agc) >> 8;
- }
- *out_ptr++ = z;
- *out_ptr++ = z >> 8;
-
- echo_buf[echo_head++] = z;
- if(echo_head >= N_ECHO_BUF)
- echo_head = 0;
-
- if(out_ptr >= out_end)
- return(1);
- }
- return(0);
-} // end of Wavegen
-
-
-static int PlaySilence(int length, int resume)
-{//===========================================
- static int n_samples;
- int value=0;
-
- if(length == 0)
- return(0);
-
- nsamples = 0;
- samplecount = 0;
-
- if(resume==0)
- n_samples = length;
-
- while(n_samples-- > 0)
- {
- value = (echo_buf[echo_tail++] * echo_amp) >> 8;
-
- if(echo_tail >= N_ECHO_BUF)
- echo_tail = 0;
-
- *out_ptr++ = value;
- *out_ptr++ = value >> 8;
-
- echo_buf[echo_head++] = value;
- if(echo_head >= N_ECHO_BUF)
- echo_head = 0;
-
- if(out_ptr >= out_end)
- return(1);
- }
- return(0);
-} // end of PlaySilence
-
-
-
-static int PlayWave(int length, int resume, unsigned char *data, int scale, int amp)
-{//=================================================================================
- static int n_samples;
- static int ix=0;
- int value;
- signed char c;
-
- if(resume==0)
- {
- n_samples = length;
- ix = 0;
- }
-
- nsamples = 0;
- samplecount = 0;
-
- while(n_samples-- > 0)
- {
- if(scale == 0)
- {
- // 16 bits data
- c = data[ix+1];
- value = data[ix] + (c * 256);
- ix+=2;
- }
- else
- {
- // 8 bit data, shift by the specified scale factor
- value = (signed char)data[ix++] * scale;
- }
- value *= (consonant_amp * general_amplitude); // reduce strength of consonant
- value = value >> 10;
- value = (value * amp)/32;
-
- value += ((echo_buf[echo_tail++] * echo_amp) >> 8);
-
- if(value > 32767)
- value = 32768;
- else
- if(value < -32768)
- value = -32768;
-
- if(echo_tail >= N_ECHO_BUF)
- echo_tail = 0;
-
- out_ptr[0] = value;
- out_ptr[1] = value >> 8;
- out_ptr+=2;
-
- echo_buf[echo_head++] = (value*3)/4;
- if(echo_head >= N_ECHO_BUF)
- echo_head = 0;
-
- if(out_ptr >= out_end)
- return(1);
- }
- return(0);
-}
-
-
-static int SetWithRange0(int value, int max)
-{//=========================================
- if(value < 0)
- return(0);
- if(value > max)
- return(max);
- return(value);
-}
-
-
-void SetEmbedded(int control, int value)
-{//=====================================
- // there was an embedded command in the text at this point
- int sign=0;
- int command;
- int ix;
- int factor;
- int pitch_value;
-
- command = control & 0x1f;
- if((control & 0x60) == 0x60)
- sign = -1;
- else
- if((control & 0x60) == 0x40)
- sign = 1;
-
- if(command < N_EMBEDDED_VALUES)
- {
- if(sign == 0)
- embedded_value[command] = value;
- else
- embedded_value[command] += (value * sign);
- embedded_value[command] = SetWithRange0(embedded_value[command],embedded_max[command]);
- }
-
- switch(command)
- {
- case EMBED_T:
- WavegenSetEcho(); // and drop through to case P
- case EMBED_P:
- // adjust formants to give better results for a different voice pitch
- if((pitch_value = embedded_value[EMBED_P]) > MAX_PITCH_VALUE)
- pitch_value = MAX_PITCH_VALUE;
-
- factor = 256 + (25 * (pitch_value - 50))/50;
- for(ix=0; ix<=5; ix++)
- {
- wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256;
- }
- factor = embedded_value[EMBED_T]*3;
- wvoice->height[0] = (wvoice->height2[0] * (256 - factor*2))/256;
- wvoice->height[1] = (wvoice->height2[1] * (256 - factor))/256;
- break;
-
- case EMBED_A: // amplitude
- general_amplitude = GetAmplitude();
- break;
-
- case EMBED_F: // emphasiis
- general_amplitude = GetAmplitude();
- break;
-
- case EMBED_H:
- WavegenSetEcho();
- break;
- }
-}
-
-
-void WavegenSetVoice(voice_t *v)
-{//=============================
- static voice_t v2;
-
- memcpy(&v2,v,sizeof(v2));
- wvoice = &v2;
-
- if(v->peak_shape==0)
- pk_shape = pk_shape1;
- else
- pk_shape = pk_shape2;
-
- consonant_amp = (v->consonant_amp * 26) /100;
- if(samplerate <= 11000)
- {
- consonant_amp = consonant_amp*2; // emphasize consonants at low sample rates
- option_harmonic1 = 6;
- }
- WavegenSetEcho();
-}
-
-
-static void SetAmplitude(int length, unsigned char *amp_env, int value)
-{//====================================================================
- amp_ix = 0;
- if(length==0)
- amp_inc = 0;
- else
- amp_inc = (256 * ENV_LEN * STEPSIZE)/length;
-
- wdata.amplitude = (value * general_amplitude)/16;
- wdata.amplitude_v = (wdata.amplitude * wvoice->consonant_ampv * 15)/100; // for wave mixed with voiced sounds
-
- amplitude_env = amp_env;
-}
-
-
-void SetPitch2(voice_t *voice, int pitch1, int pitch2, int *pitch_base, int *pitch_range)
-{//======================================================================================
- int x;
- int base;
- int range;
- int pitch_value;
-
- if(pitch1 > pitch2)
- {
- x = pitch1; // swap values
- pitch1 = pitch2;
- pitch2 = x;
- }
-
- if((pitch_value = embedded_value[EMBED_P]) > MAX_PITCH_VALUE)
- pitch_value = MAX_PITCH_VALUE;
- pitch_value -= embedded_value[EMBED_T]; // adjust tone for announcing punctuation
- if(pitch_value < 0)
- pitch_value = 0;
-
- base = (voice->pitch_base * pitch_adjust_tab[pitch_value])/128;
- range = (voice->pitch_range * embedded_value[EMBED_R])/50;
-
- // compensate for change in pitch when the range is narrowed or widened
- base -= (range - voice->pitch_range)*18;
-
- *pitch_base = base + (pitch1 * range);
- *pitch_range = base + (pitch2 * range) - *pitch_base;
-}
-
-
-void SetPitch(int length, unsigned char *env, int pitch1, int pitch2)
-{//==================================================================
-// length in samples
-
-#ifdef LOG_FRAMES
-if(option_log_frames)
-{
- f_log=fopen("log-espeakedit","a");
- if(f_log != NULL)
- {
- fprintf(f_log," pitch %3d %3d %3dmS\n",pitch1,pitch2,(length*1000)/samplerate);
- fclose(f_log);
- f_log=NULL;
- }
-}
-#endif
- if((wdata.pitch_env = env)==NULL)
- wdata.pitch_env = env_fall; // default
-
- wdata.pitch_ix = 0;
- if(length==0)
- wdata.pitch_inc = 0;
- else
- wdata.pitch_inc = (256 * ENV_LEN * STEPSIZE)/length;
-
- SetPitch2(wvoice, pitch1, pitch2, &wdata.pitch_base, &wdata.pitch_range);
- // set initial pitch
- wdata.pitch = ((wdata.pitch_env[0] * wdata.pitch_range) >>8) + wdata.pitch_base; // Hz << 12
-
- flutter_amp = wvoice->flutter;
-
-} // end of SetPitch
-
-
-
-
-
-void SetSynth(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v)
-{//========================================================================
- int ix;
- DOUBLEX next;
- int length2;
- int length4;
- int qix;
- int cmd;
- static int glottal_reduce_tab1[4] = {0x30, 0x30, 0x40, 0x50}; // vowel before [?], amp * 1/256
-// static int glottal_reduce_tab1[4] = {0x30, 0x40, 0x50, 0x60}; // vowel before [?], amp * 1/256
- static int glottal_reduce_tab2[4] = {0x90, 0xa0, 0xb0, 0xc0}; // vowel after [?], amp * 1/256
-
-#ifdef LOG_FRAMES
-if(option_log_frames)
-{
- f_log=fopen("log-espeakedit","a");
- if(f_log != NULL)
- {
- fprintf(f_log,"%3dmS %3d %3d %4d %4d (%3d %3d %3d %3d) to %3d %3d %4d %4d (%3d %3d %3d %3d)\n",length*1000/samplerate,
- fr1->ffreq[0],fr1->ffreq[1],fr1->ffreq[2],fr1->ffreq[3], fr1->fheight[0],fr1->fheight[1],fr1->fheight[2],fr1->fheight[3],
- fr2->ffreq[0],fr2->ffreq[1],fr2->ffreq[2],fr2->ffreq[3], fr2->fheight[0],fr2->fheight[1],fr2->fheight[2],fr2->fheight[3] );
-
- fclose(f_log);
- f_log=NULL;
- }
-}
-#endif
-
- harm_sqrt_n = 0;
- end_wave = 1;
-
- // any additional information in the param1 ?
- modulation_type = modn & 0xff;
-
- glottal_flag = 0;
- if(modn & 0x400)
- {
- glottal_flag = 3; // before a glottal stop
- glottal_reduce = glottal_reduce_tab1[(modn >> 8) & 3];
- }
- if(modn & 0x800)
- {
- glottal_flag = 4; // after a glottal stop
- glottal_reduce = glottal_reduce_tab2[(modn >> 8) & 3];
- }
-
- for(qix=wcmdq_head+1;;qix++)
- {
- if(qix >= N_WCMDQ) qix = 0;
- if(qix == wcmdq_tail) break;
-
- cmd = wcmdq[qix][0];
- if(cmd==WCMD_SPECT)
- {
- end_wave = 0; // next wave generation is from another spectrum
- break;
- }
- if((cmd==WCMD_WAVE) || (cmd==WCMD_PAUSE))
- break; // next is not from spectrum, so continue until end of wave cycle
- }
-
- // round the length to a multiple of the stepsize
- length2 = (length + STEPSIZE/2) & ~0x3f;
- if(length2 == 0)
- length2 = STEPSIZE;
-
- // add this length to any left over from the previous synth
- samplecount_start = samplecount;
- nsamples += length2;
-
- length4 = length2/4;
-
- peaks[7].freq = (7800 * v->freq[7] + v->freqadd[7]*256) << 8;
- peaks[8].freq = (9000 * v->freq[8] + v->freqadd[8]*256) << 8;
-
- for(ix=0; ix < 8; ix++)
- {
- if(ix < 7)
- {
- peaks[ix].freq1 = (fr1->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8;
- peaks[ix].freq = (int)(peaks[ix].freq1);
- next = (fr2->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8;
- peaks[ix].freq_inc = ((next - peaks[ix].freq1) * (STEPSIZE/4)) / length4; // lower headroom for fixed point math
- }
-
- peaks[ix].height1 = (fr1->fheight[ix] * v->height[ix]) << 6;
- peaks[ix].height = (int)(peaks[ix].height1);
- next = (fr2->fheight[ix] * v->height[ix]) << 6;
- peaks[ix].height_inc = ((next - peaks[ix].height1) * STEPSIZE) / length2;
-
- if(ix <= wvoice->n_harmonic_peaks)
- {
- peaks[ix].left1 = (fr1->fwidth[ix] * v->width[ix]) << 10;
- peaks[ix].left = int(peaks[ix].left1);
- next = (fr2->fwidth[ix] * v->width[ix]) << 10;
- peaks[ix].left_inc = ((next - peaks[ix].left1) * STEPSIZE) / length2;
-
- if(ix < 3)
- {
- peaks[ix].right1 = (fr1->fright[ix] * v->width[ix]) << 10;
- peaks[ix].right = int(peaks[ix].right1);
- next = (fr2->fright[ix] * v->width[ix]) << 10;
- peaks[ix].right_inc = ((next - peaks[ix].right1) * STEPSIZE) / length2;
- }
- else
- {
- peaks[ix].right = peaks[ix].left;
- }
- }
- }
-} // end of SetSynth
-
-
-static int Wavegen2(int length, int modulation, int resume, frame_t *fr1, frame_t *fr2)
-{//====================================================================================
- if(resume==0)
- SetSynth(length, modulation, fr1, fr2, wvoice);
-
- return(Wavegen());
-}
-
-void Write4Bytes(FILE *f, int value)
-{//=================================
-// Write 4 bytes to a file, least significant first
- int ix;
-
- for(ix=0; ix<4; ix++)
- {
- fputc(value & 0xff,f);
- value = value >> 8;
- }
-}
-
-
-
-
-int WavegenFill(int fill_zeros)
-{//============================
-// Pick up next wavegen commands from the queue
-// return: 0 output buffer has been filled
-// return: 1 input command queue is now empty
-
- long *q;
- int length;
- int result;
- static int resume=0;
- static int echo_complete=0;
-
-#ifdef TEST_MBROLA
- if(mbrola_name[0] != 0)
- return(MbrolaFill(fill_zeros));
-#endif
-
- while(out_ptr < out_end)
- {
- if(WcmdqUsed() <= 0)
- {
- if(echo_complete > 0)
- {
- // continue to play silence until echo is completed
- resume = PlaySilence(echo_complete,resume);
- if(resume == 1)
- return(0); // not yet finished
- }
-
- if(fill_zeros)
- {
- while(out_ptr < out_end)
- *out_ptr++ = 0;
- }
- return(1); // queue empty, close sound channel
- }
-
- result = 0;
- q = wcmdq[wcmdq_head];
- length = q[1];
-
- switch(q[0])
- {
- case WCMD_PITCH:
- SetPitch(length,(unsigned char *)q[2],q[3] >> 16,q[3] & 0xffff);
- break;
-
- case WCMD_PAUSE:
- if(resume==0)
- {
- echo_complete -= length;
- }
- wdata.n_mix_wavefile = 0;
- wdata.prev_was_synth = 0;
- result = PlaySilence(length,resume);
- break;
-
- case WCMD_WAVE:
- echo_complete = echo_length;
- wdata.n_mix_wavefile = 0;
- wdata.prev_was_synth = 0;
- result = PlayWave(length,resume,(unsigned char*)q[2], q[3] & 0xff, q[3] >> 8);
- break;
-
- case WCMD_WAVE2:
- // wave file to be played at the same time as synthesis
- wdata.mix_wave_amp = q[3] >> 8;
- wdata.mix_wave_scale = q[3] & 0xff;
- if(wdata.mix_wave_scale == 0)
- wdata.n_mix_wavefile = length*2;
- else
- wdata.n_mix_wavefile = length;
- wdata.mix_wavefile_ix = 0;
- wdata.mix_wavefile = (unsigned char *)q[2];
- break;
-
- case WCMD_SPECT2: // as WCMD_SPECT but stop any concurrent wave file
- wdata.n_mix_wavefile = 0; // ... and drop through to WCMD_SPECT case
- case WCMD_SPECT:
- echo_complete = echo_length;
- result = Wavegen2(length & 0xffff,q[1] >> 16,resume,(frame_t *)q[2],(frame_t *)q[3]);
- break;
-
-#ifdef INCLUDE_KLATT
- case WCMD_KLATT2: // as WCMD_SPECT but stop any concurrent wave file
- wdata.n_mix_wavefile = 0; // ... and drop through to WCMD_SPECT case
- case WCMD_KLATT:
- echo_complete = echo_length;
- result = Wavegen_Klatt2(length & 0xffff,q[1] >> 16,resume,(frame_t *)q[2],(frame_t *)q[3]);
- break;
-#endif
-
- case WCMD_MARKER:
- MarkerEvent(q[1],q[2],q[3],out_ptr);
-#ifdef LOG_FRAMES
- LogMarker(q[1],q[3]);
-#endif
- if(q[1] == 1)
- {
- current_source_index = q[2] & 0xffffff;
- }
- break;
-
- case WCMD_AMPLITUDE:
- SetAmplitude(length,(unsigned char *)q[2],q[3]);
- break;
-
- case WCMD_VOICE:
- WavegenSetVoice((voice_t *)q[1]);
- free((voice_t *)q[1]);
- break;
-
- case WCMD_EMBEDDED:
- SetEmbedded(q[1],q[2]);
- break;
- }
-
- if(result==0)
- {
- WcmdqIncHead();
- resume=0;
- }
- else
- {
- resume=1;
- }
- }
-
- return(0);
-} // end of WavegenFill
-
-
diff --git a/navit/support/ezxml/CMakeLists.txt b/navit/support/ezxml/CMakeLists.txt
deleted file mode 100644
index d93ad0686..000000000
--- a/navit/support/ezxml/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-supportlib_add_library(support_ezxml ezxml.c ezxml_init.c )
diff --git a/navit/support/ezxml/ezxml.c b/navit/support/ezxml/ezxml.c
deleted file mode 100644
index 991268fd6..000000000
--- a/navit/support/ezxml/ezxml.c
+++ /dev/null
@@ -1,1022 +0,0 @@
-/* ezxml.c
- *
- * Copyright 2004-2006 Aaron Voisine <aaron@voisine.org>
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <string.h>
-#include <ctype.h>
-#include <glib.h>
-#include "config.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#ifndef EZXML_NOMMAP
-#include <sys/mman.h>
-#endif // EZXML_NOMMAP
-#include <sys/stat.h>
-#include "ezxml.h"
-#ifdef HAVE_API_WIN32_CE
-#include "libc.h"
-#endif
-
-#define EZXML_WS "\t\r\n " // whitespace
-#define EZXML_ERRL 128 // maximum error string length
-
-typedef struct ezxml_root *ezxml_root_t;
-struct ezxml_root { // additional data for the root tag
- struct ezxml xml; // is a super-struct built on top of ezxml struct
- ezxml_t cur; // current xml tree insertion point
- char *m; // original xml string
- size_t len; // length of allocated memory for mmap, -1 for malloc
- char *u; // UTF-8 conversion of string if original was UTF-16
- char *s; // start of work area
- char *e; // end of work area
- char **ent; // general entities (ampersand sequences)
- char ***attr; // default attributes
- char ***pi; // processing instructions
- short standalone; // non-zero if <?xml standalone="yes"?>
- char err[EZXML_ERRL]; // error string
-};
-
-char *EZXML_NIL[] = { NULL }; // empty, null terminated array of strings
-
-// returns the first child tag with the given name or NULL if not found
-ezxml_t ezxml_child(ezxml_t xml, const char *name)
-{
- xml = (xml) ? xml->child : NULL;
- while (xml && strcmp(name, xml->name)) xml = xml->sibling;
- return xml;
-}
-
-// returns the Nth tag with the same name in the same subsection or NULL if not
-// found
-ezxml_t ezxml_idx(ezxml_t xml, int idx)
-{
- for (; xml && idx; idx--) xml = xml->next;
- return xml;
-}
-
-// returns the value of the requested tag attribute or NULL if not found
-const char *ezxml_attr(ezxml_t xml, const char *attr)
-{
- int i = 0, j = 1;
- ezxml_root_t root = (ezxml_root_t)xml;
-
- if (! xml || ! xml->attr) return NULL;
- while (xml->attr[i] && strcmp(attr, xml->attr[i])) i += 2;
- if (xml->attr[i]) return xml->attr[i + 1]; // found attribute
-
- while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag
- for (i = 0; root->attr[i] && strcmp(xml->name, root->attr[i][0]); i++);
- if (! root->attr[i]) return NULL; // no matching default attributes
- while (root->attr[i][j] && strcmp(attr, root->attr[i][j])) j += 3;
- return (root->attr[i][j]) ? root->attr[i][j + 1] : NULL; // found default
-}
-
-// same as ezxml_get but takes an already initialized va_list
-ezxml_t ezxml_vget(ezxml_t xml, va_list ap)
-{
- char *name = va_arg(ap, char *);
- int idx = -1;
-
- if (name && *name) {
- idx = va_arg(ap, int);
- xml = ezxml_child(xml, name);
- }
- return (idx < 0) ? xml : ezxml_vget(ezxml_idx(xml, idx), ap);
-}
-
-// Traverses the xml tree to retrieve a specific subtag. Takes a variable
-// length list of tag names and indexes. The argument list must be terminated
-// by either an index of -1 or an empty string tag name. Example:
-// title = ezxml_get(library, "shelf", 0, "book", 2, "title", -1);
-// This retrieves the title of the 3rd book on the 1st shelf of library.
-// Returns NULL if not found.
-ezxml_t ezxml_get(ezxml_t xml, ...)
-{
- va_list ap;
- ezxml_t r;
-
- va_start(ap, xml);
- r = ezxml_vget(xml, ap);
- va_end(ap);
- return r;
-}
-
-// returns a null terminated array of processing instructions for the given
-// target
-const char **ezxml_pi(ezxml_t xml, const char *target)
-{
- ezxml_root_t root = (ezxml_root_t)xml;
- int i = 0;
-
- if (! root) return (const char **)EZXML_NIL;
- while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag
- while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; // find target
- return (const char **)((root->pi[i]) ? root->pi[i] + 1 : EZXML_NIL);
-}
-
-// set an error string and return root
-ezxml_t ezxml_err(ezxml_root_t root, char *s, const char *err, ...)
-{
- va_list ap;
- int line = 1;
- char *t, fmt[EZXML_ERRL];
-
- for (t = root->s; t < s; t++) if (*t == '\n') line++;
- g_snprintf(fmt, EZXML_ERRL, "[error near line %d]: %s", line, err);
-
- va_start(ap, err);
- g_vsnprintf(root->err, EZXML_ERRL, fmt, ap);
- va_end(ap);
-
- return &root->xml;
-}
-
-// Recursively decodes entity and character references and normalizes new lines
-// ent is a null terminated array of alternating entity names and values. set t
-// to '&' for general entity decoding, '%' for parameter entity decoding, 'c'
-// for cdata sections, ' ' for attribute normalization, or '*' for non-cdata
-// attribute normalization. Returns s, or if the decoded string is longer than
-// s, returns a malloced string that must be freed.
-char *ezxml_decode(char *s, char **ent, char t)
-{
- char *e, *r = s, *m = s;
- long b, c, d, l;
-
- for (; *s; s++) { // normalize line endings
- while (*s == '\r') {
- *(s++) = '\n';
- if (*s == '\n') memmove(s, (s + 1), strlen(s));
- }
- }
-
- for (s = r; ; ) {
- while (*s && *s != '&' && (*s != '%' || t != '%') && !isspace((unsigned char)(*s))) s++;
-
- if (! *s) break;
- else if (t != 'c' && ! strncmp(s, "&#", 2)) { // character reference
- if (s[2] == 'x') c = strtol(s + 3, &e, 16); // base 16
- else c = strtol(s + 2, &e, 10); // base 10
- if (! c || *e != ';') { s++; continue; } // not a character ref
-
- if (c < 0x80) *(s++) = c; // US-ASCII subset
- else { // multi-byte UTF-8 sequence
- for (b = 0, d = c; d; d /= 2) b++; // number of bits in c
- b = (b - 2) / 5; // number of bytes in payload
- *(s++) = (0xFF << (7 - b)) | (c >> (6 * b)); // head
- while (b) *(s++) = 0x80 | ((c >> (6 * --b)) & 0x3F); // payload
- }
-
- memmove(s, strchr(s, ';') + 1, strlen(strchr(s, ';')));
- }
- else if ((*s == '&' && (t == '&' || t == ' ' || t == '*')) ||
- (*s == '%' && t == '%')) { // entity reference
- for (b = 0; ent[b] && strncmp(s + 1, ent[b], strlen(ent[b]));
- b += 2); // find entity in entity list
-
- if (ent[b++]) { // found a match
- if ((c = strlen(ent[b])) - 1 > (e = strchr(s, ';')) - s) {
- l = (d = (s - r)) + c + strlen(e); // new length
- r = (r == m) ? strcpy(malloc(l), r) : realloc(r, l);
- e = strchr((s = r + d), ';'); // fix up pointers
- }
-
- memmove(s + c, e + 1, strlen(e)); // shift rest of string
- strncpy(s, ent[b], c); // copy in replacement text
- }
- else s++; // not a known entity
- }
- else if ((t == ' ' || t == '*') && isspace(*s)) *(s++) = ' ';
- else s++; // no decoding needed
- }
-
- if (t == '*') { // normalize spaces for non-cdata attributes
- for (s = r; *s; s++) {
- if ((l = strspn(s, " "))) memmove(s, s + l, strlen(s + l) + 1);
- while (*s && *s != ' ') s++;
- }
- if (--s >= r && *s == ' ') *s = '\0'; // trim any trailing space
- }
- return r;
-}
-
-// called when parser finds start of new tag
-void ezxml_open_tag(ezxml_root_t root, char *name, char **attr)
-{
- ezxml_t xml = root->cur;
-
- if (xml->name) xml = ezxml_add_child(xml, name, strlen(xml->txt));
- else xml->name = name; // first open tag
-
- xml->attr = attr;
- root->cur = xml; // update tag insertion point
-}
-
-// called when parser finds character content between open and closing tag
-void ezxml_char_content(ezxml_root_t root, char *s, size_t len, char t)
-{
- ezxml_t xml = root->cur;
- char *m = s;
- size_t l;
-
- if (! xml || ! xml->name || ! len) return; // sanity check
-
- s[len] = '\0'; // null terminate text (calling functions anticipate this)
- len = strlen(s = ezxml_decode(s, root->ent, t)) + 1;
-
- if (! *(xml->txt)) xml->txt = s; // initial character content
- else { // allocate our own memory and make a copy
- xml->txt = (xml->flags & EZXML_TXTM) // allocate some space
- ? realloc(xml->txt, (l = strlen(xml->txt)) + len)
- : strcpy(malloc((l = strlen(xml->txt)) + len), xml->txt);
- strcpy(xml->txt + l, s); // add new char content
- if (s != m) free(s); // free s if it was malloced by ezxml_decode()
- }
-
- if (xml->txt != m) ezxml_set_flag(xml, EZXML_TXTM);
-}
-
-// called when parser finds closing tag
-ezxml_t ezxml_close_tag(ezxml_root_t root, char *name, char *s)
-{
- if (! root->cur || ! root->cur->name || strcmp(name, root->cur->name))
- return ezxml_err(root, s, "unexpected closing tag </%s>", name);
-
- root->cur = root->cur->parent;
- return NULL;
-}
-
-// checks for circular entity references, returns non-zero if no circular
-// references are found, zero otherwise
-int ezxml_ent_ok(char *name, char *s, char **ent)
-{
- int i;
-
- for (; ; s++) {
- while (*s && *s != '&') s++; // find next entity reference
- if (! *s) return 1;
- if (! strncmp(s + 1, name, strlen(name))) return 0; // circular ref.
- for (i = 0; ent[i] && strncmp(ent[i], s + 1, strlen(ent[i])); i += 2);
- if (ent[i] && ! ezxml_ent_ok(name, ent[i + 1], ent)) return 0;
- }
-}
-
-// called when the parser finds a processing instruction
-void ezxml_proc_inst(ezxml_root_t root, char *s, size_t len)
-{
- int i = 0, j = 1;
- char *target = s;
-
- s[len] = '\0'; // null terminate instruction
- if (*(s += strcspn(s, EZXML_WS))) {
- *s = '\0'; // null terminate target
- s += strspn(s + 1, EZXML_WS) + 1; // skip whitespace after target
- }
-
- if (! strcmp(target, "xml")) { // <?xml ... ?>
- if ((s = strstr(s, "standalone")) && ! strncmp(s + strspn(s + 10,
- EZXML_WS "='\"") + 10, "yes", 3)) root->standalone = 1;
- return;
- }
-
- if (! root->pi[0]) *(root->pi = malloc(sizeof(char **))) = NULL; //first pi
-
- while (root->pi[i] && strcmp(target, root->pi[i][0])) i++; // find target
- if (! root->pi[i]) { // new target
- root->pi = realloc(root->pi, sizeof(char **) * (i + 2));
- root->pi[i] = malloc(sizeof(char *) * 3);
- root->pi[i][0] = target;
- root->pi[i][1] = (char *)(root->pi[i + 1] = NULL); // terminate pi list
- root->pi[i][2] = g_strdup(""); // empty document position list
- }
-
- while (root->pi[i][j]) j++; // find end of instruction list for this target
- root->pi[i] = realloc(root->pi[i], sizeof(char *) * (j + 3));
- root->pi[i][j + 2] = realloc(root->pi[i][j + 1], j + 1);
- strcpy(root->pi[i][j + 2] + j - 1, (root->xml.name) ? ">" : "<");
- root->pi[i][j + 1] = NULL; // null terminate pi list for this target
- root->pi[i][j] = s; // set instruction
-}
-
-// called when the parser finds an internal doctype subset
-short ezxml_internal_dtd(ezxml_root_t root, char *s, size_t len)
-{
- char q, *c, *t, *n = NULL, *v, **ent, **pe;
- int i, j;
-
- pe = memcpy(malloc(sizeof(EZXML_NIL)), EZXML_NIL, sizeof(EZXML_NIL));
-
- for (s[len] = '\0'; s; ) {
- while (*s && *s != '<' && *s != '%') s++; // find next declaration
-
- if (! *s) break;
- else if (! strncmp(s, "<!ENTITY", 8)) { // parse entity definitions
- c = s += strspn(s + 8, EZXML_WS) + 8; // skip white space separator
- n = s + strspn(s, EZXML_WS "%"); // find name
- *(s = n + strcspn(n, EZXML_WS)) = ';'; // append ; to name
-
- v = s + strspn(s + 1, EZXML_WS) + 1; // find value
- if ((q = *(v++)) != '"' && q != '\'') { // skip externals
- s = strchr(s, '>');
- continue;
- }
-
- for (i = 0, ent = (*c == '%') ? pe : root->ent; ent[i]; i++);
- ent = realloc(ent, (i + 3) * sizeof(char *)); // space for next ent
- if (*c == '%') pe = ent;
- else root->ent = ent;
-
- *(++s) = '\0'; // null terminate name
- if ((s = strchr(v, q))) *(s++) = '\0'; // null terminate value
- ent[i + 1] = ezxml_decode(v, pe, '%'); // set value
- ent[i + 2] = NULL; // null terminate entity list
- if (! ezxml_ent_ok(n, ent[i + 1], ent)) { // circular reference
- if (ent[i + 1] != v) free(ent[i + 1]);
- ezxml_err(root, v, "circular entity declaration &%s", n);
- break;
- }
- else ent[i] = n; // set entity name
- }
- else if (! strncmp(s, "<!ATTLIST", 9)) { // parse default attributes
- t = s + strspn(s + 9, EZXML_WS) + 9; // skip whitespace separator
- if (! *t) { ezxml_err(root, t, "unclosed <!ATTLIST"); break; }
- if (*(s = t + strcspn(t, EZXML_WS ">")) == '>') continue;
- else *s = '\0'; // null terminate tag name
- for (i = 0; root->attr[i] && strcmp(n, root->attr[i][0]); i++);
-
- while (*(n = ++s + strspn(s, EZXML_WS)) && *n != '>') {
- if (*(s = n + strcspn(n, EZXML_WS))) *s = '\0'; // attr name
- else { ezxml_err(root, t, "malformed <!ATTLIST"); break; }
-
- s += strspn(s + 1, EZXML_WS) + 1; // find next token
- c = (strncmp(s, "CDATA", 5)) ? "*" : " "; // is it cdata?
- if (! strncmp(s, "NOTATION", 8))
- s += strspn(s + 8, EZXML_WS) + 8;
- s = (*s == '(') ? strchr(s, ')') : s + strcspn(s, EZXML_WS);
- if (! s) { ezxml_err(root, t, "malformed <!ATTLIST"); break; }
-
- s += strspn(s, EZXML_WS ")"); // skip white space separator
- if (! strncmp(s, "#FIXED", 6))
- s += strspn(s + 6, EZXML_WS) + 6;
- if (*s == '#') { // no default value
- s += strcspn(s, EZXML_WS ">") - 1;
- if (*c == ' ') continue; // cdata is default, nothing to do
- v = NULL;
- }
- else if ((*s == '"' || *s == '\'') && // default value
- (s = strchr(v = s + 1, *s))) *s = '\0';
- else { ezxml_err(root, t, "malformed <!ATTLIST"); break; }
-
- if (! root->attr[i]) { // new tag name
- root->attr = (! i) ? malloc(2 * sizeof(char **))
- : realloc(root->attr,
- (i + 2) * sizeof(char **));
- root->attr[i] = malloc(2 * sizeof(char *));
- root->attr[i][0] = t; // set tag name
- root->attr[i][1] = (char *)(root->attr[i + 1] = NULL);
- }
-
- for (j = 1; root->attr[i][j]; j += 3); // find end of list
- root->attr[i] = realloc(root->attr[i],
- (j + 4) * sizeof(char *));
-
- root->attr[i][j + 3] = NULL; // null terminate list
- root->attr[i][j + 2] = c; // is it cdata?
- root->attr[i][j + 1] = (v) ? ezxml_decode(v, root->ent, *c)
- : NULL;
- root->attr[i][j] = n; // attribute name
- }
- }
- else if (! strncmp(s, "<!--", 4)) s = strstr(s + 4, "-->"); // comments
- else if (! strncmp(s, "<?", 2)) { // processing instructions
- if ((s = strstr(c = s + 2, "?>")))
- ezxml_proc_inst(root, c, s++ - c);
- }
- else if (*s == '<') s = strchr(s, '>'); // skip other declarations
- else if (*(s++) == '%' && ! root->standalone) break;
- }
-
- free(pe);
- return ! *root->err;
-}
-
-// Converts a UTF-16 string to UTF-8. Returns a new string that must be freed
-// or NULL if no conversion was needed.
-char *ezxml_str2utf8(char **s, size_t *len)
-{
- char *u;
- size_t l = 0, sl, max = *len;
- long c, d;
- int b, be = (**s == '\xFE') ? 1 : (**s == '\xFF') ? 0 : -1;
-
- if (be == -1) return NULL; // not UTF-16
-
- u = malloc(max);
- for (sl = 2; sl < *len - 1; sl += 2) {
- c = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF) //UTF-16BE
- : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF); //UTF-16LE
- if (c >= 0xD800 && c <= 0xDFFF && (sl += 2) < *len - 1) { // high-half
- d = (be) ? (((*s)[sl] & 0xFF) << 8) | ((*s)[sl + 1] & 0xFF)
- : (((*s)[sl + 1] & 0xFF) << 8) | ((*s)[sl] & 0xFF);
- c = (((c & 0x3FF) << 10) | (d & 0x3FF)) + 0x10000;
- }
-
- while (l + 6 > max) u = realloc(u, max += EZXML_BUFSIZE);
- if (c < 0x80) u[l++] = c; // US-ASCII subset
- else { // multi-byte UTF-8 sequence
- for (b = 0, d = c; d; d /= 2) b++; // bits in c
- b = (b - 2) / 5; // bytes in payload
- u[l++] = (0xFF << (7 - b)) | (c >> (6 * b)); // head
- while (b) u[l++] = 0x80 | ((c >> (6 * --b)) & 0x3F); // payload
- }
- }
- return *s = realloc(u, *len = l);
-}
-
-// frees a tag attribute list
-void ezxml_free_attr(char **attr) {
- int i = 0;
- char *m;
-
- if (! attr || attr == EZXML_NIL) return; // nothing to free
- while (attr[i]) i += 2; // find end of attribute list
- m = attr[i + 1]; // list of which names and values are malloced
- for (i = 0; m[i]; i++) {
- if (m[i] & EZXML_NAMEM) free(attr[i * 2]);
- if (m[i] & EZXML_TXTM) free(attr[(i * 2) + 1]);
- }
- free(m);
- free(attr);
-}
-
-// parse the given xml string and return an ezxml structure
-ezxml_t ezxml_parse_str(char *s, size_t len)
-{
- ezxml_root_t root = (ezxml_root_t)ezxml_new(NULL);
- char q, e, *d, **attr, **a = NULL; // initialize a to avoid compile warning
- int l, i, j;
-
- root->m = s;
- if (! len) return ezxml_err(root, NULL, "root tag missing");
- root->u = ezxml_str2utf8(&s, &len); // convert utf-16 to utf-8
- root->e = (root->s = s) + len; // record start and end of work area
-
- e = s[len - 1]; // save end char
- s[len - 1] = '\0'; // turn end char into null terminator
-
- while (*s && *s != '<') s++; // find first tag
- if (! *s) return ezxml_err(root, s, "root tag missing");
-
- for (; ; ) {
- attr = (char **)EZXML_NIL;
- d = ++s;
-
- if (isalpha(*s) || *s == '_' || *s == ':' || *s < '\0') { // new tag
- if (! root->cur)
- return ezxml_err(root, d, "markup outside of root element");
-
- s += strcspn(s, EZXML_WS "/>");
- while (isspace(*s)) *(s++) = '\0'; // null terminate tag name
-
- if (*s && *s != '/' && *s != '>') // find tag in default attr list
- for (i = 0; (a = root->attr[i]) && strcmp(a[0], d); i++);
-
- for (l = 0; *s && *s != '/' && *s != '>'; l += 2) { // new attrib
- attr = (l) ? realloc(attr, (l + 4) * sizeof(char *))
- : malloc(4 * sizeof(char *)); // allocate space
- attr[l + 3] = (l) ? realloc(attr[l + 1], (l / 2) + 2)
- : malloc(2); // mem for list of maloced vals
- strcpy(attr[l + 3] + (l / 2), " "); // value is not malloced
- attr[l + 2] = NULL; // null terminate list
- attr[l + 1] = ""; // temporary attribute value
- attr[l] = s; // set attribute name
-
- s += strcspn(s, EZXML_WS "=/>");
- if (*s == '=' || isspace(*s)) {
- *(s++) = '\0'; // null terminate tag attribute name
- q = *(s += strspn(s, EZXML_WS "="));
- if (q == '"' || q == '\'') { // attribute value
- attr[l + 1] = ++s;
- while (*s && *s != q) s++;
- if (*s) *(s++) = '\0'; // null terminate attribute val
- else {
- ezxml_free_attr(attr);
- return ezxml_err(root, d, "missing %c", q);
- }
-
- for (j = 1; a && a[j] && strcmp(a[j], attr[l]); j +=3);
- attr[l + 1] = ezxml_decode(attr[l + 1], root->ent, (a
- && a[j]) ? *a[j + 2] : ' ');
- if (attr[l + 1] < d || attr[l + 1] > s)
- attr[l + 3][l / 2] = EZXML_TXTM; // value malloced
- }
- }
- while (isspace(*s)) s++;
- }
-
- if (*s == '/') { // self closing tag
- *(s++) = '\0';
- if ((*s && *s != '>') || (! *s && e != '>')) {
- if (l) ezxml_free_attr(attr);
- return ezxml_err(root, d, "missing >");
- }
- ezxml_open_tag(root, d, attr);
- ezxml_close_tag(root, d, s);
- }
- else if ((q = *s) == '>' || (! *s && e == '>')) { // open tag
- *s = '\0'; // temporarily null terminate tag name
- ezxml_open_tag(root, d, attr);
- *s = q;
- }
- else {
- if (l) ezxml_free_attr(attr);
- return ezxml_err(root, d, "missing >");
- }
- }
- else if (*s == '/') { // close tag
- s += strcspn(d = s + 1, EZXML_WS ">") + 1;
- if (! (q = *s) && e != '>') return ezxml_err(root, d, "missing >");
- *s = '\0'; // temporarily null terminate tag name
- if (ezxml_close_tag(root, d, s)) return &root->xml;
- if (isspace(*s = q)) s += strspn(s, EZXML_WS);
- }
- else if (! strncmp(s, "!--", 3)) { // xml comment
- if (! (s = strstr(s + 3, "--")) || (*(s += 2) != '>' && *s) ||
- (! *s && e != '>')) return ezxml_err(root, d, "unclosed <!--");
- }
- else if (! strncmp(s, "![CDATA[", 8)) { // cdata
- if ((s = strstr(s, "]]>")))
- ezxml_char_content(root, d + 8, (s += 2) - d - 10, 'c');
- else return ezxml_err(root, d, "unclosed <![CDATA[");
- }
- else if (! strncmp(s, "!DOCTYPE", 8)) { // dtd
- for (l = 0; *s && ((! l && *s != '>') || (l && (*s != ']' ||
- *(s + strspn(s + 1, EZXML_WS) + 1) != '>')));
- l = (*s == '[') ? 1 : l) s += strcspn(s + 1, "[]>") + 1;
- if (! *s && e != '>')
- return ezxml_err(root, d, "unclosed <!DOCTYPE");
- d = (l) ? strchr(d, '[') + 1 : d;
- if (l && ! ezxml_internal_dtd(root, d, s++ - d)) return &root->xml;
- }
- else if (*s == '?') { // <?...?> processing instructions
- do { s = strchr(s, '?'); } while (s && *(++s) && *s != '>');
- if (! s || (! *s && e != '>'))
- return ezxml_err(root, d, "unclosed <?");
- else ezxml_proc_inst(root, d + 1, s - d - 2);
- }
- else return ezxml_err(root, d, "unexpected <");
-
- if (! s || ! *s) break;
- *s = '\0';
- d = ++s;
- if (*s && *s != '<') { // tag character content
- while (*s && *s != '<') s++;
- if (*s) ezxml_char_content(root, d, s - d, '&');
- else break;
- }
- else if (! *s) break;
- }
-
- if (! root->cur) return &root->xml;
- else if (! root->cur->name) return ezxml_err(root, d, "root tag missing");
- else return ezxml_err(root, d, "unclosed tag <%s>", root->cur->name);
-}
-
-// Wrapper for ezxml_parse_str() that accepts a file stream. Reads the entire
-// stream into memory and then parses it. For xml files, use ezxml_parse_file()
-// or ezxml_parse_fd()
-ezxml_t ezxml_parse_fp(FILE *fp)
-{
- ezxml_root_t root;
- size_t l, len = 0;
- char *s;
-
- if (! (s = malloc(EZXML_BUFSIZE))) return NULL;
- do {
- len += (l = fread((s + len), 1, EZXML_BUFSIZE, fp));
- if (l == EZXML_BUFSIZE) s = realloc(s, len + EZXML_BUFSIZE);
- } while (s && l == EZXML_BUFSIZE);
-
- if (! s) return NULL;
- root = (ezxml_root_t)ezxml_parse_str(s, len);
- root->len = -1; // so we know to free s in ezxml_free()
- return &root->xml;
-}
-
-// A wrapper for ezxml_parse_str() that accepts a file descriptor. First
-// attempts to mem map the file. Failing that, reads the file into memory.
-// Returns NULL on failure.
-ezxml_t ezxml_parse_fd(int fd)
-{
- ezxml_root_t root;
- struct stat st;
- size_t l;
- void *m;
-
- if (fd == -1) return NULL;
- fstat(fd, &st);
-
-#ifndef EZXML_NOMMAP
- l = (st.st_size + sysconf(_SC_PAGESIZE) - 1) & ~(sysconf(_SC_PAGESIZE) -1);
- if ((m = mmap(NULL, l, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0)) !=
- MAP_FAILED) {
- madvise(m, l, MADV_SEQUENTIAL); // optimize for sequential access
- root = (ezxml_root_t)ezxml_parse_str(m, st.st_size);
- madvise(m, root->len = l, MADV_NORMAL); // put it back to normal
- }
- else { // mmap failed, read file into memory
-#endif // EZXML_NOMMAP
- l = read(fd, m = malloc(st.st_size), st.st_size);
- root = (ezxml_root_t)ezxml_parse_str(m, l);
- root->len = -1; // so we know to free s in ezxml_free()
-#ifndef EZXML_NOMMAP
- }
-#endif // EZXML_NOMMAP
- return &root->xml;
-}
-
-// a wrapper for ezxml_parse_fd that accepts a file name
-ezxml_t ezxml_parse_file(const char *file)
-{
- int fd = open(file, O_RDONLY, 0);
- ezxml_t xml = ezxml_parse_fd(fd);
-
- if (fd >= 0) close(fd);
- return xml;
-}
-
-// Encodes ampersand sequences appending the results to *dst, reallocating *dst
-// if length excedes max. a is non-zero for attribute encoding. Returns *dst
-char *ezxml_ampencode(const char *s, size_t len, char **dst, size_t *dlen,
- size_t *max, short a)
-{
- const char *e;
-
- for (e = s + len; s != e; s++) {
- while (*dlen + 10 > *max) *dst = realloc(*dst, *max += EZXML_BUFSIZE);
-
- switch (*s) {
- case '\0': return *dst;
- case '&': *dlen += sprintf(*dst + *dlen, "&amp;"); break;
- case '<': *dlen += sprintf(*dst + *dlen, "&lt;"); break;
- case '>': *dlen += sprintf(*dst + *dlen, "&gt;"); break;
- case '"': *dlen += sprintf(*dst + *dlen, (a) ? "&quot;" : "\""); break;
- case '\n': *dlen += sprintf(*dst + *dlen, (a) ? "&#xA;" : "\n"); break;
- case '\t': *dlen += sprintf(*dst + *dlen, (a) ? "&#x9;" : "\t"); break;
- case '\r': *dlen += sprintf(*dst + *dlen, "&#xD;"); break;
- default: (*dst)[(*dlen)++] = *s;
- }
- }
- return *dst;
-}
-
-// Recursively converts each tag to xml appending it to *s. Reallocates *s if
-// its length excedes max. start is the location of the previous tag in the
-// parent tag's character content. Returns *s.
-char *ezxml_toxml_r(ezxml_t xml, char **s, size_t *len, size_t *max,
- size_t start, char ***attr)
-{
- int i, j;
- char *txt = (xml->parent) ? xml->parent->txt : "";
- size_t off = 0;
-
- // parent character content up to this tag
- *s = ezxml_ampencode(txt + start, xml->off - start, s, len, max, 0);
-
- while (*len + strlen(xml->name) + 4 > *max) // reallocate s
- *s = realloc(*s, *max += EZXML_BUFSIZE);
-
- *len += sprintf(*s + *len, "<%s", xml->name); // open tag
- for (i = 0; xml->attr[i]; i += 2) { // tag attributes
- if (ezxml_attr(xml, xml->attr[i]) != xml->attr[i + 1]) continue;
- while (*len + strlen(xml->attr[i]) + 7 > *max) // reallocate s
- *s = realloc(*s, *max += EZXML_BUFSIZE);
-
- *len += sprintf(*s + *len, " %s=\"", xml->attr[i]);
- ezxml_ampencode(xml->attr[i + 1], -1, s, len, max, 1);
- *len += sprintf(*s + *len, "\"");
- }
-
- for (i = 0; attr[i] && strcmp(attr[i][0], xml->name); i++);
- for (j = 1; attr[i] && attr[i][j]; j += 3) { // default attributes
- if (! attr[i][j + 1] || ezxml_attr(xml, attr[i][j]) != attr[i][j + 1])
- continue; // skip duplicates and non-values
- while (*len + strlen(attr[i][j]) + 7 > *max) // reallocate s
- *s = realloc(*s, *max += EZXML_BUFSIZE);
-
- *len += sprintf(*s + *len, " %s=\"", attr[i][j]);
- ezxml_ampencode(attr[i][j + 1], -1, s, len, max, 1);
- *len += sprintf(*s + *len, "\"");
- }
- *len += sprintf(*s + *len, ">");
-
- *s = (xml->child) ? ezxml_toxml_r(xml->child, s, len, max, 0, attr) //child
- : ezxml_ampencode(xml->txt, -1, s, len, max, 0); //data
-
- while (*len + strlen(xml->name) + 4 > *max) // reallocate s
- *s = realloc(*s, *max += EZXML_BUFSIZE);
-
- *len += sprintf(*s + *len, "</%s>", xml->name); // close tag
-
- while (txt[off] && off < xml->off) off++; // make sure off is within bounds
- return (xml->ordered) ? ezxml_toxml_r(xml->ordered, s, len, max, off, attr)
- : ezxml_ampencode(txt + off, -1, s, len, max, 0);
-}
-
-// Converts an ezxml structure back to xml. Returns a string of xml data that
-// must be freed.
-char *ezxml_toxml(ezxml_t xml)
-{
- ezxml_t p = (xml) ? xml->parent : NULL, o = (xml) ? xml->ordered : NULL;
- ezxml_root_t root = (ezxml_root_t)xml;
- size_t len = 0, max = EZXML_BUFSIZE;
- char *s = strcpy(malloc(max), ""), *t, *n;
- int i, j, k;
-
- if (! xml || ! xml->name) return realloc(s, len + 1);
- while (root->xml.parent) root = (ezxml_root_t)root->xml.parent; // root tag
-
- for (i = 0; ! p && root->pi[i]; i++) { // pre-root processing instructions
- for (k = 2; root->pi[i][k - 1]; k++);
- for (j = 1; (n = root->pi[i][j]); j++) {
- if (root->pi[i][k][j - 1] == '>') continue; // not pre-root
- while (len + strlen(t = root->pi[i][0]) + strlen(n) + 7 > max)
- s = realloc(s, max += EZXML_BUFSIZE);
- len += sprintf(s + len, "<?%s%s%s?>\n", t, *n ? " " : "", n);
- }
- }
-
- xml->parent = xml->ordered = NULL;
- s = ezxml_toxml_r(xml, &s, &len, &max, 0, root->attr);
- xml->parent = p;
- xml->ordered = o;
-
- for (i = 0; ! p && root->pi[i]; i++) { // post-root processing instructions
- for (k = 2; root->pi[i][k - 1]; k++);
- for (j = 1; (n = root->pi[i][j]); j++) {
- if (root->pi[i][k][j - 1] == '<') continue; // not post-root
- while (len + strlen(t = root->pi[i][0]) + strlen(n) + 7 > max)
- s = realloc(s, max += EZXML_BUFSIZE);
- len += sprintf(s + len, "\n<?%s%s%s?>", t, *n ? " " : "", n);
- }
- }
- return realloc(s, len + 1);
-}
-
-// free the memory allocated for the ezxml structure
-void ezxml_free(ezxml_t xml)
-{
- ezxml_root_t root = (ezxml_root_t)xml;
- int i, j;
- char **a, *s;
-
- if (! xml) return;
- ezxml_free(xml->child);
- ezxml_free(xml->ordered);
-
- if (! xml->parent) { // free root tag allocations
- for (i = 10; root->ent[i]; i += 2) // 0 - 9 are default entites (<>&"')
- if ((s = root->ent[i + 1]) < root->s || s > root->e) free(s);
- free(root->ent); // free list of general entities
-
- for (i = 0; (a = root->attr[i]); i++) {
- for (j = 1; a[j++]; j += 2) // free malloced attribute values
- if (a[j] && (a[j] < root->s || a[j] > root->e)) free(a[j]);
- free(a);
- }
- if (root->attr[0]) free(root->attr); // free default attribute list
-
- for (i = 0; root->pi[i]; i++) {
- for (j = 1; root->pi[i][j]; j++);
- free(root->pi[i][j + 1]);
- free(root->pi[i]);
- }
- if (root->pi[0]) free(root->pi); // free processing instructions
-
- if (root->len == -1) free(root->m); // malloced xml data
-#ifndef EZXML_NOMMAP
- else if (root->len) munmap(root->m, root->len); // mem mapped xml data
-#endif // EZXML_NOMMAP
- if (root->u) free(root->u); // utf8 conversion
- }
-
- ezxml_free_attr(xml->attr); // tag attributes
- if ((xml->flags & EZXML_TXTM)) free(xml->txt); // character content
- if ((xml->flags & EZXML_NAMEM)) free(xml->name); // tag name
- free(xml);
-}
-
-// return parser error message or empty string if none
-const char *ezxml_error(ezxml_t xml)
-{
- while (xml && xml->parent) xml = xml->parent; // find root tag
- return (xml) ? ((ezxml_root_t)xml)->err : "";
-}
-
-// returns a new empty ezxml structure with the given root tag name
-ezxml_t ezxml_new(const char *name)
-{
- static char *ent[] = { "lt;", "&#60;", "gt;", "&#62;", "quot;", "&#34;",
- "apos;", "&#39;", "amp;", "&#38;", NULL };
- ezxml_root_t root = (ezxml_root_t)memset(malloc(sizeof(struct ezxml_root)),
- '\0', sizeof(struct ezxml_root));
- root->xml.name = (char *)name;
- root->cur = &root->xml;
- strcpy(root->err, root->xml.txt = "");
- root->ent = memcpy(malloc(sizeof(ent)), ent, sizeof(ent));
- root->attr = root->pi = (char ***)(root->xml.attr = EZXML_NIL);
- return &root->xml;
-}
-
-// inserts an existing tag into an ezxml structure
-ezxml_t ezxml_insert(ezxml_t xml, ezxml_t dest, size_t off)
-{
- ezxml_t cur, prev, head;
-
- xml->next = xml->sibling = xml->ordered = NULL;
- xml->off = off;
- xml->parent = dest;
-
- if ((head = dest->child)) { // already have sub tags
- if (head->off <= off) { // not first subtag
- for (cur = head; cur->ordered && cur->ordered->off <= off;
- cur = cur->ordered);
- xml->ordered = cur->ordered;
- cur->ordered = xml;
- }
- else { // first subtag
- xml->ordered = head;
- dest->child = xml;
- }
-
- for (cur = head, prev = NULL; cur && strcmp(cur->name, xml->name);
- prev = cur, cur = cur->sibling); // find tag type
- if (cur && cur->off <= off) { // not first of type
- while (cur->next && cur->next->off <= off) cur = cur->next;
- xml->next = cur->next;
- cur->next = xml;
- }
- else { // first tag of this type
- if (prev && cur) prev->sibling = cur->sibling; // remove old first
- xml->next = cur; // old first tag is now next
- for (cur = head, prev = NULL; cur && cur->off <= off;
- prev = cur, cur = cur->sibling); // new sibling insert point
- xml->sibling = cur;
- if (prev) prev->sibling = xml;
- }
- }
- else dest->child = xml; // only sub tag
-
- return xml;
-}
-
-// Adds a child tag. off is the offset of the child tag relative to the start
-// of the parent tag's character content. Returns the child tag.
-ezxml_t ezxml_add_child(ezxml_t xml, const char *name, size_t off)
-{
- ezxml_t child;
-
- if (! xml) return NULL;
- child = (ezxml_t)memset(malloc(sizeof(struct ezxml)), '\0',
- sizeof(struct ezxml));
- child->name = (char *)name;
- child->attr = EZXML_NIL;
- child->txt = "";
-
- return ezxml_insert(child, xml, off);
-}
-
-// sets the character content for the given tag and returns the tag
-ezxml_t ezxml_set_txt(ezxml_t xml, const char *txt)
-{
- if (! xml) return NULL;
- if (xml->flags & EZXML_TXTM) free(xml->txt); // existing txt was malloced
- xml->flags &= ~EZXML_TXTM;
- xml->txt = (char *)txt;
- return xml;
-}
-
-// Sets the given tag attribute or adds a new attribute if not found. A value
-// of NULL will remove the specified attribute. Returns the tag given.
-ezxml_t ezxml_set_attr(ezxml_t xml, const char *name, const char *value)
-{
- int l = 0, c;
-
- if (! xml) return NULL;
- while (xml->attr[l] && strcmp(xml->attr[l], name)) l += 2;
- if (! xml->attr[l]) { // not found, add as new attribute
- if (! value) return xml; // nothing to do
- if (xml->attr == EZXML_NIL) { // first attribute
- xml->attr = malloc(4 * sizeof(char *));
- xml->attr[1] = g_strdup(""); // empty list of malloced names/vals
- }
- else xml->attr = realloc(xml->attr, (l + 4) * sizeof(char *));
-
- xml->attr[l] = (char *)name; // set attribute name
- xml->attr[l + 2] = NULL; // null terminate attribute list
- xml->attr[l + 3] = realloc(xml->attr[l + 1],
- (c = strlen(xml->attr[l + 1])) + 2);
- strcpy(xml->attr[l + 3] + c, " "); // set name/value as not malloced
- if (xml->flags & EZXML_DUP) xml->attr[l + 3][c] = EZXML_NAMEM;
- }
- else if (xml->flags & EZXML_DUP) free((char *)name); // name was strduped
-
- for (c = l; xml->attr[c]; c += 2); // find end of attribute list
- if (xml->attr[c + 1][l / 2] & EZXML_TXTM) free(xml->attr[l + 1]); //old val
- if (xml->flags & EZXML_DUP) xml->attr[c + 1][l / 2] |= EZXML_TXTM;
- else xml->attr[c + 1][l / 2] &= ~EZXML_TXTM;
-
- if (value) xml->attr[l + 1] = (char *)value; // set attribute value
- else { // remove attribute
- if (xml->attr[c + 1][l / 2] & EZXML_NAMEM) free(xml->attr[l]);
- memmove(xml->attr + l, xml->attr + l + 2, (c - l + 2) * sizeof(char*));
- xml->attr = realloc(xml->attr, (c + 2) * sizeof(char *));
- memmove(xml->attr[c + 1] + (l / 2), xml->attr[c + 1] + (l / 2) + 1,
- (c / 2) - (l / 2)); // fix list of which name/vals are malloced
- }
- xml->flags &= ~EZXML_DUP; // clear strdup() flag
- return xml;
-}
-
-// sets a flag for the given tag and returns the tag
-ezxml_t ezxml_set_flag(ezxml_t xml, short flag)
-{
- if (xml) xml->flags |= flag;
- return xml;
-}
-
-// removes a tag along with its subtags without freeing its memory
-ezxml_t ezxml_cut(ezxml_t xml)
-{
- ezxml_t cur;
-
- if (! xml) return NULL; // nothing to do
- if (xml->next) xml->next->sibling = xml->sibling; // patch sibling list
-
- if (xml->parent) { // not root tag
- cur = xml->parent->child; // find head of subtag list
- if (cur == xml) xml->parent->child = xml->ordered; // first subtag
- else { // not first subtag
- while (cur->ordered != xml) cur = cur->ordered;
- cur->ordered = cur->ordered->ordered; // patch ordered list
-
- cur = xml->parent->child; // go back to head of subtag list
- if (strcmp(cur->name, xml->name)) { // not in first sibling list
- while (strcmp(cur->sibling->name, xml->name))
- cur = cur->sibling;
- if (cur->sibling == xml) { // first of a sibling list
- cur->sibling = (xml->next) ? xml->next
- : cur->sibling->sibling;
- }
- else cur = cur->sibling; // not first of a sibling list
- }
-
- while (cur->next && cur->next != xml) cur = cur->next;
- if (cur->next) cur->next = cur->next->next; // patch next list
- }
- }
- xml->ordered = xml->sibling = xml->next = NULL;
- return xml;
-}
-
-#ifdef EZXML_TEST // test harness
-int main(int argc, char **argv)
-{
- ezxml_t xml;
- char *s;
- int i;
-
- if (argc != 2) return fprintf(stderr, "usage: %s xmlfile\n", argv[0]);
-
- xml = ezxml_parse_file(argv[1]);
- printf("%s\n", (s = ezxml_toxml(xml)));
- free(s);
- i = fprintf(stderr, "%s", ezxml_error(xml));
- ezxml_free(xml);
- return (i) ? 1 : 0;
-}
-#endif // EZXML_TEST
diff --git a/navit/support/ezxml/ezxml.h b/navit/support/ezxml/ezxml.h
deleted file mode 100644
index a0cb92ee5..000000000
--- a/navit/support/ezxml/ezxml.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/* ezxml.h
- *
- * Copyright 2004-2006 Aaron Voisine <aaron@voisine.org>
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef _EZXML_H
-#define _EZXML_H
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <fcntl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define EZXML_BUFSIZE 1024 // size of internal memory buffers
-#define EZXML_NAMEM 0x80 // name is malloced
-#define EZXML_TXTM 0x40 // txt is malloced
-#define EZXML_DUP 0x20 // attribute name and value are strduped
-
-typedef struct ezxml *ezxml_t;
-struct ezxml {
- char *name; // tag name
- char **attr; // tag attributes { name, value, name, value, ... NULL }
- char *txt; // tag character content, empty string if none
- size_t off; // tag offset from start of parent tag character content
- ezxml_t next; // next tag with same name in this section at this depth
- ezxml_t sibling; // next tag with different name in same section and depth
- ezxml_t ordered; // next tag, same section and depth, in original order
- ezxml_t child; // head of sub tag list, NULL if none
- ezxml_t parent; // parent tag, NULL if current tag is root tag
- short flags; // additional information
-};
-
-// Given a string of xml data and its length, parses it and creates an ezxml
-// structure. For efficiency, modifies the data by adding null terminators
-// and decoding ampersand sequences. If you don't want this, copy the data and
-// pass in the copy. Returns NULL on failure.
-ezxml_t ezxml_parse_str(char *s, size_t len);
-
-// A wrapper for ezxml_parse_str() that accepts a file descriptor. First
-// attempts to mem map the file. Failing that, reads the file into memory.
-// Returns NULL on failure.
-ezxml_t ezxml_parse_fd(int fd);
-
-// a wrapper for ezxml_parse_fd() that accepts a file name
-ezxml_t ezxml_parse_file(const char *file);
-
-// Wrapper for ezxml_parse_str() that accepts a file stream. Reads the entire
-// stream into memory and then parses it. For xml files, use ezxml_parse_file()
-// or ezxml_parse_fd()
-ezxml_t ezxml_parse_fp(FILE *fp);
-
-// returns the first child tag (one level deeper) with the given name or NULL
-// if not found
-ezxml_t ezxml_child(ezxml_t xml, const char *name);
-
-// returns the next tag of the same name in the same section and depth or NULL
-// if not found
-#define ezxml_next(xml) ((xml) ? xml->next : NULL)
-
-// Returns the Nth tag with the same name in the same section at the same depth
-// or NULL if not found. An index of 0 returns the tag given.
-ezxml_t ezxml_idx(ezxml_t xml, int idx);
-
-// returns the name of the given tag
-#define ezxml_name(xml) ((xml) ? xml->name : NULL)
-
-// returns the given tag's character content or empty string if none
-#define ezxml_txt(xml) ((xml) ? xml->txt : "")
-
-// returns the value of the requested tag attribute, or NULL if not found
-const char *ezxml_attr(ezxml_t xml, const char *attr);
-
-// Traverses the ezxml sturcture to retrieve a specific subtag. Takes a
-// variable length list of tag names and indexes. The argument list must be
-// terminated by either an index of -1 or an empty string tag name. Example:
-// title = ezxml_get(library, "shelf", 0, "book", 2, "title", -1);
-// This retrieves the title of the 3rd book on the 1st shelf of library.
-// Returns NULL if not found.
-ezxml_t ezxml_get(ezxml_t xml, ...);
-
-// Converts an ezxml structure back to xml. Returns a string of xml data that
-// must be freed.
-char *ezxml_toxml(ezxml_t xml);
-
-// returns a NULL terminated array of processing instructions for the given
-// target
-const char **ezxml_pi(ezxml_t xml, const char *target);
-
-// frees the memory allocated for an ezxml structure
-void ezxml_free(ezxml_t xml);
-
-// returns parser error message or empty string if none
-const char *ezxml_error(ezxml_t xml);
-
-// returns a new empty ezxml structure with the given root tag name
-ezxml_t ezxml_new(const char *name);
-
-// wrapper for ezxml_new() that strdup()s name
-#define ezxml_new_d(name) ezxml_set_flag(ezxml_new(strdup(name)), EZXML_NAMEM)
-
-// Adds a child tag. off is the offset of the child tag relative to the start
-// of the parent tag's character content. Returns the child tag.
-ezxml_t ezxml_add_child(ezxml_t xml, const char *name, size_t off);
-
-// wrapper for ezxml_add_child() that strdup()s name
-#define ezxml_add_child_d(xml, name, off) \
- ezxml_set_flag(ezxml_add_child(xml, strdup(name), off), EZXML_NAMEM)
-
-// sets the character content for the given tag and returns the tag
-ezxml_t ezxml_set_txt(ezxml_t xml, const char *txt);
-
-// wrapper for ezxml_set_txt() that strdup()s txt
-#define ezxml_set_txt_d(xml, txt) \
- ezxml_set_flag(ezxml_set_txt(xml, strdup(txt)), EZXML_TXTM)
-
-// Sets the given tag attribute or adds a new attribute if not found. A value
-// of NULL will remove the specified attribute. Returns the tag given.
-ezxml_t ezxml_set_attr(ezxml_t xml, const char *name, const char *value);
-
-// Wrapper for ezxml_set_attr() that strdup()s name/value. Value cannot be NULL
-#define ezxml_set_attr_d(xml, name, value) \
- ezxml_set_attr(ezxml_set_flag(xml, EZXML_DUP), g_strdup(name), strdup(value))
-
-// sets a flag for the given tag and returns the tag
-ezxml_t ezxml_set_flag(ezxml_t xml, short flag);
-
-// removes a tag along with its subtags without freeing its memory
-ezxml_t ezxml_cut(ezxml_t xml);
-
-// inserts an existing tag into an ezxml structure
-ezxml_t ezxml_insert(ezxml_t xml, ezxml_t dest, size_t off);
-
-// Moves an existing tag to become a subtag of dest at the given offset from
-// the start of dest's character content. Returns the moved tag.
-#define ezxml_move(xml, dest, off) ezxml_insert(ezxml_cut(xml), dest, off)
-
-// removes a tag along with all its subtags
-#define ezxml_remove(xml) ezxml_free(ezxml_cut(xml))
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _EZXML_H
diff --git a/navit/support/ezxml/ezxml_init.c b/navit/support/ezxml/ezxml_init.c
deleted file mode 100644
index 32be387da..000000000
--- a/navit/support/ezxml/ezxml_init.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "plugin.h"
-
-void
-plugin_init(void)
-{
-}
diff --git a/navit/support/gettext_intl/CMakeLists.txt b/navit/support/gettext_intl/CMakeLists.txt
deleted file mode 100644
index ab74f3f1c..000000000
--- a/navit/support/gettext_intl/CMakeLists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-add_definitions(-DLOCALE_ALIAS_PATH=LOCALEDIR -DIN_LIBINTL=1 -DHAVE_CONFIG_H=1 -DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DNO_XMALLOC -Dset_relocation_prefix=libintl_set_relocation_prefix -Drelocate=libintl_relocate -DDEPENDS_ON_LIBICONV=1 -DLIBDIR=\"${CMAKE_INSTALL_PREFIX}/${LIB_DIR}\")
-supportlib_add_library(support_gettext_intl bindtextdom.c dcgettext.c dcigettext.c dcngettext.c dgettext.c dngettext.c explodename.c finddomain.c gettext.c intl-compat.c l10nflist.c loadmsgcat.c localcharset.c localealias.c localename.c log.c ngettext.c osdep.c plural-exp.c plural.c printf-args.c printf.c relocatable.c textdomain.c vasnprintf.c)
-ADD_CUSTOM_TARGET(libintl.h DEPENDS libgnuintl.h COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/libgnuintl.h ${CMAKE_CURRENT_BINARY_DIR}/libintl.h)
-ADD_DEPENDENCIES(support_gettext_intl libintl.h)
diff --git a/navit/support/gettext_intl/ChangeLog b/navit/support/gettext_intl/ChangeLog
deleted file mode 100644
index 751291929..000000000
--- a/navit/support/gettext_intl/ChangeLog
+++ /dev/null
@@ -1,4 +0,0 @@
-2004-01-29 GNU <bug-gnu-gettext@gnu.org>
-
- * Version 0.14.1 released.
-
diff --git a/navit/support/gettext_intl/VERSION b/navit/support/gettext_intl/VERSION
deleted file mode 100644
index b4b846ca7..000000000
--- a/navit/support/gettext_intl/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-GNU gettext library from gettext-0.14.1
diff --git a/navit/support/gettext_intl/bindtextdom.c b/navit/support/gettext_intl/bindtextdom.c
deleted file mode 100644
index dcdc40085..000000000
--- a/navit/support/gettext_intl/bindtextdom.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/* Implementation of the bindtextdomain(3) function
- 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-#include "gettextP.h"
-
-#ifdef _LIBC
-/* We have to handle multi-threaded applications. */
-# include <bits/libc-lock.h>
-#else
-/* Provide dummy implementation if this is outside glibc. */
-# define __libc_rwlock_define(CLASS, NAME)
-# define __libc_rwlock_wrlock(NAME)
-# define __libc_rwlock_unlock(NAME)
-#endif
-
-/* The internal variables in the standalone libintl.a must have different
- names than the internal variables in GNU libc, otherwise programs
- using libintl.a cannot be linked statically. */
-#if !defined _LIBC
-# define _nl_default_dirname libintl_nl_default_dirname
-# define _nl_domain_bindings libintl_nl_domain_bindings
-#endif
-
-/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */
-#ifndef offsetof
-# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Contains the default location of the message catalogs. */
-extern const char _nl_default_dirname[];
-#ifdef _LIBC
-extern const char _nl_default_dirname_internal[] attribute_hidden;
-#else
-# define INTUSE(name) name
-#endif
-
-/* List with bindings of specific domains. */
-extern struct binding *_nl_domain_bindings;
-
-/* Lock variable to protect the global data in the gettext implementation. */
-__libc_rwlock_define (extern, _nl_state_lock attribute_hidden)
-
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define BINDTEXTDOMAIN __bindtextdomain
-# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset
-# ifndef strdup
-# define strdup(str) __strdup (str)
-# endif
-#else
-# define BINDTEXTDOMAIN libintl_bindtextdomain
-# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset
-#endif
-
-/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP
- to be used for the DOMAINNAME message catalog.
- If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not
- modified, only the current value is returned.
- If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither
- modified nor returned. */
-static void
-set_binding_values (const char *domainname,
- const char **dirnamep, const char **codesetp)
-{
- struct binding *binding;
- int modified;
-
- /* Some sanity checks. */
- if (domainname == NULL || domainname[0] == '\0')
- {
- if (dirnamep)
- *dirnamep = NULL;
- if (codesetp)
- *codesetp = NULL;
- return;
- }
-
- __libc_rwlock_wrlock (_nl_state_lock);
-
- modified = 0;
-
- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
- {
- int compare = strcmp (domainname, binding->domainname);
- if (compare == 0)
- /* We found it! */
- break;
- if (compare < 0)
- {
- /* It is not in the list. */
- binding = NULL;
- break;
- }
- }
-
- if (binding != NULL)
- {
- if (dirnamep)
- {
- const char *dirname = *dirnamep;
-
- if (dirname == NULL)
- /* The current binding has be to returned. */
- *dirnamep = binding->dirname;
- else
- {
- /* The domain is already bound. If the new value and the old
- one are equal we simply do nothing. Otherwise replace the
- old binding. */
- char *result = binding->dirname;
- if (strcmp (dirname, result) != 0)
- {
- if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
- result = (char *) INTUSE(_nl_default_dirname);
- else
- {
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (dirname);
-#else
- size_t len = strlen (dirname) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result != NULL, 1))
- memcpy (result, dirname, len);
-#endif
- }
-
- if (__builtin_expect (result != NULL, 1))
- {
- if (binding->dirname != INTUSE(_nl_default_dirname))
- free (binding->dirname);
-
- binding->dirname = result;
- modified = 1;
- }
- }
- *dirnamep = result;
- }
- }
-
- if (codesetp)
- {
- const char *codeset = *codesetp;
-
- if (codeset == NULL)
- /* The current binding has be to returned. */
- *codesetp = binding->codeset;
- else
- {
- /* The domain is already bound. If the new value and the old
- one are equal we simply do nothing. Otherwise replace the
- old binding. */
- char *result = binding->codeset;
- if (result == NULL || strcmp (codeset, result) != 0)
- {
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (codeset);
-#else
- size_t len = strlen (codeset) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result != NULL, 1))
- memcpy (result, codeset, len);
-#endif
-
- if (__builtin_expect (result != NULL, 1))
- {
- if (binding->codeset != NULL)
- free (binding->codeset);
-
- binding->codeset = result;
- binding->codeset_cntr++;
- modified = 1;
- }
- }
- *codesetp = result;
- }
- }
- }
- else if ((dirnamep == NULL || *dirnamep == NULL)
- && (codesetp == NULL || *codesetp == NULL))
- {
- /* Simply return the default values. */
- if (dirnamep)
- *dirnamep = INTUSE(_nl_default_dirname);
- if (codesetp)
- *codesetp = NULL;
- }
- else
- {
- /* We have to create a new binding. */
- size_t len = strlen (domainname) + 1;
- struct binding *new_binding =
- (struct binding *) malloc (offsetof (struct binding, domainname) + len);
-
- if (__builtin_expect (new_binding == NULL, 0))
- goto failed;
-
- memcpy (new_binding->domainname, domainname, len);
-
- if (dirnamep)
- {
- const char *dirname = *dirnamep;
-
- if (dirname == NULL)
- /* The default value. */
- dirname = INTUSE(_nl_default_dirname);
- else
- {
- if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
- dirname = INTUSE(_nl_default_dirname);
- else
- {
- char *result;
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (dirname);
- if (__builtin_expect (result == NULL, 0))
- goto failed_dirname;
-#else
- size_t len = strlen (dirname) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result == NULL, 0))
- goto failed_dirname;
- memcpy (result, dirname, len);
-#endif
- dirname = result;
- }
- }
- *dirnamep = dirname;
- new_binding->dirname = (char *) dirname;
- }
- else
- /* The default value. */
- new_binding->dirname = (char *) INTUSE(_nl_default_dirname);
-
- new_binding->codeset_cntr = 0;
-
- if (codesetp)
- {
- const char *codeset = *codesetp;
-
- if (codeset != NULL)
- {
- char *result;
-
-#if defined _LIBC || defined HAVE_STRDUP
- result = strdup (codeset);
- if (__builtin_expect (result == NULL, 0))
- goto failed_codeset;
-#else
- size_t len = strlen (codeset) + 1;
- result = (char *) malloc (len);
- if (__builtin_expect (result == NULL, 0))
- goto failed_codeset;
- memcpy (result, codeset, len);
-#endif
- codeset = result;
- new_binding->codeset_cntr++;
- }
- *codesetp = codeset;
- new_binding->codeset = (char *) codeset;
- }
- else
- new_binding->codeset = NULL;
-
- /* Now enqueue it. */
- if (_nl_domain_bindings == NULL
- || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
- {
- new_binding->next = _nl_domain_bindings;
- _nl_domain_bindings = new_binding;
- }
- else
- {
- binding = _nl_domain_bindings;
- while (binding->next != NULL
- && strcmp (domainname, binding->next->domainname) > 0)
- binding = binding->next;
-
- new_binding->next = binding->next;
- binding->next = new_binding;
- }
-
- modified = 1;
-
- /* Here we deal with memory allocation failures. */
- if (0)
- {
- failed_codeset:
- if (new_binding->dirname != INTUSE(_nl_default_dirname))
- free (new_binding->dirname);
- failed_dirname:
- free (new_binding);
- failed:
- if (dirnamep)
- *dirnamep = NULL;
- if (codesetp)
- *codesetp = NULL;
- }
- }
-
- /* If we modified any binding, we flush the caches. */
- if (modified)
- ++_nl_msg_cat_cntr;
-
- __libc_rwlock_unlock (_nl_state_lock);
-}
-
-/* Specify that the DOMAINNAME message catalog will be found
- in DIRNAME rather than in the system locale data base. */
-char *
-BINDTEXTDOMAIN (const char *domainname, const char *dirname)
-{
- set_binding_values (domainname, &dirname, NULL);
- return (char *) dirname;
-}
-
-/* Specify the character encoding in which the messages from the
- DOMAINNAME message catalog will be returned. */
-char *
-BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset)
-{
- set_binding_values (domainname, NULL, &codeset);
- return (char *) codeset;
-}
-
-#ifdef _LIBC
-/* Aliases for function names in GNU C Library. */
-weak_alias (__bindtextdomain, bindtextdomain);
-weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset);
-#endif
diff --git a/navit/support/gettext_intl/config.charset b/navit/support/gettext_intl/config.charset
deleted file mode 100755
index 43d45fb75..000000000
--- a/navit/support/gettext_intl/config.charset
+++ /dev/null
@@ -1,608 +0,0 @@
-#! /bin/sh
-# Output a system dependent table of character encoding aliases.
-#
-# Copyright (C) 2000-2004 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.
-#
-# The table consists of lines of the form
-# ALIAS CANONICAL
-#
-# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
-# ALIAS is compared in a case sensitive way.
-#
-# CANONICAL is the GNU canonical name for this character encoding.
-# It must be an encoding supported by libiconv. Support by GNU libc is
-# also desirable. CANONICAL is case insensitive. Usually an upper case
-# MIME charset name is preferred.
-# The current list of GNU canonical charset names is as follows.
-#
-# name MIME? used by which systems
-# ASCII, ANSI_X3.4-1968 glibc solaris freebsd darwin
-# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd darwin
-# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd darwin
-# ISO-8859-3 Y glibc solaris
-# ISO-8859-4 Y osf solaris freebsd darwin
-# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd darwin
-# ISO-8859-6 Y glibc aix hpux solaris
-# ISO-8859-7 Y glibc aix hpux irix osf solaris
-# ISO-8859-8 Y glibc aix hpux osf solaris
-# ISO-8859-9 Y glibc aix hpux irix osf solaris
-# ISO-8859-13 glibc
-# ISO-8859-14 glibc
-# ISO-8859-15 glibc aix osf solaris freebsd
-# KOI8-R Y glibc solaris freebsd darwin
-# KOI8-U Y glibc freebsd darwin
-# KOI8-T glibc
-# CP437 dos
-# CP775 dos
-# CP850 aix osf dos
-# CP852 dos
-# CP855 dos
-# CP856 aix
-# CP857 dos
-# CP861 dos
-# CP862 dos
-# CP864 dos
-# CP865 dos
-# CP866 freebsd darwin dos
-# CP869 dos
-# CP874 woe32 dos
-# CP922 aix
-# CP932 aix woe32 dos
-# CP943 aix
-# CP949 osf woe32 dos
-# CP950 woe32 dos
-# CP1046 aix
-# CP1124 aix
-# CP1125 dos
-# CP1129 aix
-# CP1250 woe32
-# CP1251 glibc solaris darwin woe32
-# CP1252 aix woe32
-# CP1253 woe32
-# CP1254 woe32
-# CP1255 glibc woe32
-# CP1256 woe32
-# CP1257 woe32
-# GB2312 Y glibc aix hpux irix solaris freebsd darwin
-# EUC-JP Y glibc aix hpux irix osf solaris freebsd darwin
-# EUC-KR Y glibc aix hpux irix osf solaris freebsd darwin
-# EUC-TW glibc aix hpux irix osf solaris
-# BIG5 Y glibc aix hpux osf solaris freebsd darwin
-# BIG5-HKSCS glibc solaris
-# GBK glibc aix osf solaris woe32 dos
-# GB18030 glibc solaris
-# SHIFT_JIS Y hpux osf solaris freebsd darwin
-# JOHAB glibc solaris woe32
-# TIS-620 glibc aix hpux osf solaris
-# VISCII Y glibc
-# TCVN5712-1 glibc
-# GEORGIAN-PS glibc
-# HP-ROMAN8 hpux
-# HP-ARABIC8 hpux
-# HP-GREEK8 hpux
-# HP-HEBREW8 hpux
-# HP-TURKISH8 hpux
-# HP-KANA8 hpux
-# DEC-KANJI osf
-# DEC-HANYU osf
-# UTF-8 Y glibc aix hpux osf solaris
-#
-# Note: Names which are not marked as being a MIME name should not be used in
-# Internet protocols for information interchange (mail, news, etc.).
-#
-# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
-# must understand both names and treat them as equivalent.
-#
-# The first argument passed to this file is the canonical host specification,
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-
-host="$1"
-os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
-echo "# This file contains a table of character encoding aliases,"
-echo "# suitable for operating system '${os}'."
-echo "# It was automatically generated from config.charset."
-# List of references, updated during installation:
-echo "# Packages using this file: "
-case "$os" in
- linux-gnulibc1*)
- # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "C ASCII"
- echo "POSIX ASCII"
- for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
- en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
- en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
- es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
- et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
- fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
- it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
- sv_FI sv_SE; do
- echo "$l ISO-8859-1"
- echo "$l.iso-8859-1 ISO-8859-1"
- echo "$l.iso-8859-15 ISO-8859-15"
- echo "$l.iso-8859-15@euro ISO-8859-15"
- echo "$l@euro ISO-8859-15"
- echo "$l.cp-437 CP437"
- echo "$l.cp-850 CP850"
- echo "$l.cp-1252 CP1252"
- echo "$l.cp-1252@euro CP1252"
- #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
- echo "$l.utf-8 UTF-8"
- echo "$l.utf-8@euro UTF-8"
- done
- for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
- sl_SI sr sr_CS sr_YU; do
- echo "$l ISO-8859-2"
- echo "$l.iso-8859-2 ISO-8859-2"
- echo "$l.cp-852 CP852"
- echo "$l.cp-1250 CP1250"
- echo "$l.utf-8 UTF-8"
- done
- for l in mk mk_MK ru ru_RU; do
- echo "$l ISO-8859-5"
- echo "$l.iso-8859-5 ISO-8859-5"
- echo "$l.koi8-r KOI8-R"
- echo "$l.cp-866 CP866"
- echo "$l.cp-1251 CP1251"
- echo "$l.utf-8 UTF-8"
- done
- for l in ar ar_SA; do
- echo "$l ISO-8859-6"
- echo "$l.iso-8859-6 ISO-8859-6"
- echo "$l.cp-864 CP864"
- #echo "$l.cp-868 CP868" # not a commonly used encoding
- echo "$l.cp-1256 CP1256"
- echo "$l.utf-8 UTF-8"
- done
- for l in el el_GR gr gr_GR; do
- echo "$l ISO-8859-7"
- echo "$l.iso-8859-7 ISO-8859-7"
- echo "$l.cp-869 CP869"
- echo "$l.cp-1253 CP1253"
- echo "$l.cp-1253@euro CP1253"
- echo "$l.utf-8 UTF-8"
- echo "$l.utf-8@euro UTF-8"
- done
- for l in he he_IL iw iw_IL; do
- echo "$l ISO-8859-8"
- echo "$l.iso-8859-8 ISO-8859-8"
- echo "$l.cp-862 CP862"
- echo "$l.cp-1255 CP1255"
- echo "$l.utf-8 UTF-8"
- done
- for l in tr tr_TR; do
- echo "$l ISO-8859-9"
- echo "$l.iso-8859-9 ISO-8859-9"
- echo "$l.cp-857 CP857"
- echo "$l.cp-1254 CP1254"
- echo "$l.utf-8 UTF-8"
- done
- for l in lt lt_LT lv lv_LV; do
- #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
- echo "$l ISO-8859-13"
- done
- for l in ru_UA uk uk_UA; do
- echo "$l KOI8-U"
- done
- for l in zh zh_CN; do
- #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
- echo "$l GB2312"
- done
- for l in ja ja_JP ja_JP.EUC; do
- echo "$l EUC-JP"
- done
- for l in ko ko_KR; do
- echo "$l EUC-KR"
- done
- for l in th th_TH; do
- echo "$l TIS-620"
- done
- for l in fa fa_IR; do
- #echo "$l ISIRI-3342" # a broken encoding
- echo "$l.utf-8 UTF-8"
- done
- ;;
- linux* | *-gnu*)
- # With glibc-2.1 or newer, we don't need any canonicalization,
- # because glibc has iconv and both glibc and libiconv support all
- # GNU canonical names directly. Therefore, the Makefile does not
- # need to install the alias file at all.
- # The following applies only to glibc-2.0.x and older libcs.
- echo "ISO_646.IRV:1983 ASCII"
- ;;
- aix*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-6 ISO-8859-6"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "IBM-850 CP850"
- echo "IBM-856 CP856"
- echo "IBM-921 ISO-8859-13"
- echo "IBM-922 CP922"
- echo "IBM-932 CP932"
- echo "IBM-943 CP943"
- echo "IBM-1046 CP1046"
- echo "IBM-1124 CP1124"
- echo "IBM-1129 CP1129"
- echo "IBM-1252 CP1252"
- echo "IBM-eucCN GB2312"
- echo "IBM-eucJP EUC-JP"
- echo "IBM-eucKR EUC-KR"
- echo "IBM-eucTW EUC-TW"
- echo "big5 BIG5"
- echo "GBK GBK"
- echo "TIS-620 TIS-620"
- echo "UTF-8 UTF-8"
- ;;
- hpux*)
- echo "iso88591 ISO-8859-1"
- echo "iso88592 ISO-8859-2"
- echo "iso88595 ISO-8859-5"
- echo "iso88596 ISO-8859-6"
- echo "iso88597 ISO-8859-7"
- echo "iso88598 ISO-8859-8"
- echo "iso88599 ISO-8859-9"
- echo "iso885915 ISO-8859-15"
- echo "roman8 HP-ROMAN8"
- echo "arabic8 HP-ARABIC8"
- echo "greek8 HP-GREEK8"
- echo "hebrew8 HP-HEBREW8"
- echo "turkish8 HP-TURKISH8"
- echo "kana8 HP-KANA8"
- echo "tis620 TIS-620"
- echo "big5 BIG5"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "hp15CN GB2312"
- #echo "ccdc ?" # what is this?
- echo "SJIS SHIFT_JIS"
- echo "utf8 UTF-8"
- ;;
- irix*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-9 ISO-8859-9"
- echo "eucCN GB2312"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- ;;
- osf*)
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "cp850 CP850"
- echo "big5 BIG5"
- echo "dechanyu DEC-HANYU"
- echo "dechanzi GB2312"
- echo "deckanji DEC-KANJI"
- echo "deckorean EUC-KR"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "GBK GBK"
- echo "KSC5601 CP949"
- echo "sdeckanji EUC-JP"
- echo "SJIS SHIFT_JIS"
- echo "TACTIS TIS-620"
- echo "UTF-8 UTF-8"
- ;;
- solaris*)
- echo "646 ASCII"
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-3 ISO-8859-3"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-6 ISO-8859-6"
- echo "ISO8859-7 ISO-8859-7"
- echo "ISO8859-8 ISO-8859-8"
- echo "ISO8859-9 ISO-8859-9"
- echo "ISO8859-15 ISO-8859-15"
- echo "koi8-r KOI8-R"
- echo "ansi-1251 CP1251"
- echo "BIG5 BIG5"
- echo "Big5-HKSCS BIG5-HKSCS"
- echo "gb2312 GB2312"
- echo "GBK GBK"
- echo "GB18030 GB18030"
- echo "cns11643 EUC-TW"
- echo "5601 EUC-KR"
- echo "ko_KR.johap92 JOHAB"
- echo "eucJP EUC-JP"
- echo "PCK SHIFT_JIS"
- echo "TIS620.2533 TIS-620"
- #echo "sun_eu_greek ?" # what is this?
- echo "UTF-8 UTF-8"
- ;;
- freebsd* | os2*)
- # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
- # reuse FreeBSD's locale data for OS/2.
- echo "C ASCII"
- echo "US-ASCII ASCII"
- for l in la_LN lt_LN; do
- echo "$l.ASCII ASCII"
- done
- for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
- fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
- lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
- echo "$l.ISO_8859-1 ISO-8859-1"
- echo "$l.DIS_8859-15 ISO-8859-15"
- done
- for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
- echo "$l.ISO_8859-2 ISO-8859-2"
- done
- for l in la_LN lt_LT; do
- echo "$l.ISO_8859-4 ISO-8859-4"
- done
- for l in ru_RU ru_SU; do
- echo "$l.KOI8-R KOI8-R"
- echo "$l.ISO_8859-5 ISO-8859-5"
- echo "$l.CP866 CP866"
- done
- echo "uk_UA.KOI8-U KOI8-U"
- echo "zh_TW.BIG5 BIG5"
- echo "zh_TW.Big5 BIG5"
- echo "zh_CN.EUC GB2312"
- echo "ja_JP.EUC EUC-JP"
- echo "ja_JP.SJIS SHIFT_JIS"
- echo "ja_JP.Shift_JIS SHIFT_JIS"
- echo "ko_KR.EUC EUC-KR"
- ;;
- netbsd*)
- echo "646 ASCII"
- echo "ISO8859-1 ISO-8859-1"
- echo "ISO8859-2 ISO-8859-2"
- echo "ISO8859-4 ISO-8859-4"
- echo "ISO8859-5 ISO-8859-5"
- echo "ISO8859-15 ISO-8859-15"
- echo "eucCN GB2312"
- echo "eucJP EUC-JP"
- echo "eucKR EUC-KR"
- echo "eucTW EUC-TW"
- echo "BIG5 BIG5"
- echo "SJIS SHIFT_JIS"
- ;;
- darwin*)
- # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "C ASCII"
- for l in en_AU en_CA en_GB en_US la_LN; do
- echo "$l.US-ASCII ASCII"
- done
- for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
- fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
- nl_NL no_NO pt_PT sv_SE; do
- echo "$l ISO-8859-1"
- echo "$l.ISO8859-1 ISO-8859-1"
- echo "$l.ISO8859-15 ISO-8859-15"
- done
- for l in la_LN; do
- echo "$l.ISO8859-1 ISO-8859-1"
- echo "$l.ISO8859-15 ISO-8859-15"
- done
- for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
- echo "$l.ISO8859-2 ISO-8859-2"
- done
- for l in la_LN lt_LT; do
- echo "$l.ISO8859-4 ISO-8859-4"
- done
- for l in ru_RU; do
- echo "$l.KOI8-R KOI8-R"
- echo "$l.ISO8859-5 ISO-8859-5"
- echo "$l.CP866 CP866"
- done
- for l in bg_BG; do
- echo "$l.CP1251 CP1251"
- done
- echo "uk_UA.KOI8-U KOI8-U"
- echo "zh_TW.BIG5 BIG5"
- echo "zh_TW.Big5 BIG5"
- echo "zh_CN.EUC GB2312"
- echo "ja_JP.EUC EUC-JP"
- echo "ja_JP.SJIS SHIFT_JIS"
- echo "ko_KR.EUC EUC-KR"
- ;;
- beos*)
- # BeOS has a single locale, and it has UTF-8 encoding.
- echo "* UTF-8"
- ;;
- msdosdjgpp*)
- # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
- # localcharset.c falls back to using the full locale name
- # from the environment variables.
- echo "#"
- echo "# The encodings given here may not all be correct."
- echo "# If you find that the encoding given for your language and"
- echo "# country is not the one your DOS machine actually uses, just"
- echo "# correct it in this file, and send a mail to"
- echo "# Juan Manuel Guerrero <st001906@hrz1.hrz.tu-darmstadt.de>"
- echo "# and Bruno Haible <bruno@clisp.org>."
- echo "#"
- echo "C ASCII"
- # ISO-8859-1 languages
- echo "ca CP850"
- echo "ca_ES CP850"
- echo "da CP865" # not CP850 ??
- echo "da_DK CP865" # not CP850 ??
- echo "de CP850"
- echo "de_AT CP850"
- echo "de_CH CP850"
- echo "de_DE CP850"
- echo "en CP850"
- echo "en_AU CP850" # not CP437 ??
- echo "en_CA CP850"
- echo "en_GB CP850"
- echo "en_NZ CP437"
- echo "en_US CP437"
- echo "en_ZA CP850" # not CP437 ??
- echo "es CP850"
- echo "es_AR CP850"
- echo "es_BO CP850"
- echo "es_CL CP850"
- echo "es_CO CP850"
- echo "es_CR CP850"
- echo "es_CU CP850"
- echo "es_DO CP850"
- echo "es_EC CP850"
- echo "es_ES CP850"
- echo "es_GT CP850"
- echo "es_HN CP850"
- echo "es_MX CP850"
- echo "es_NI CP850"
- echo "es_PA CP850"
- echo "es_PY CP850"
- echo "es_PE CP850"
- echo "es_SV CP850"
- echo "es_UY CP850"
- echo "es_VE CP850"
- echo "et CP850"
- echo "et_EE CP850"
- echo "eu CP850"
- echo "eu_ES CP850"
- echo "fi CP850"
- echo "fi_FI CP850"
- echo "fr CP850"
- echo "fr_BE CP850"
- echo "fr_CA CP850"
- echo "fr_CH CP850"
- echo "fr_FR CP850"
- echo "ga CP850"
- echo "ga_IE CP850"
- echo "gd CP850"
- echo "gd_GB CP850"
- echo "gl CP850"
- echo "gl_ES CP850"
- echo "id CP850" # not CP437 ??
- echo "id_ID CP850" # not CP437 ??
- echo "is CP861" # not CP850 ??
- echo "is_IS CP861" # not CP850 ??
- echo "it CP850"
- echo "it_CH CP850"
- echo "it_IT CP850"
- echo "lt CP775"
- echo "lt_LT CP775"
- echo "lv CP775"
- echo "lv_LV CP775"
- echo "nb CP865" # not CP850 ??
- echo "nb_NO CP865" # not CP850 ??
- echo "nl CP850"
- echo "nl_BE CP850"
- echo "nl_NL CP850"
- echo "nn CP865" # not CP850 ??
- echo "nn_NO CP865" # not CP850 ??
- echo "no CP865" # not CP850 ??
- echo "no_NO CP865" # not CP850 ??
- echo "pt CP850"
- echo "pt_BR CP850"
- echo "pt_PT CP850"
- echo "sv CP850"
- echo "sv_SE CP850"
- # ISO-8859-2 languages
- echo "cs CP852"
- echo "cs_CZ CP852"
- echo "hr CP852"
- echo "hr_HR CP852"
- echo "hu CP852"
- echo "hu_HU CP852"
- echo "pl CP852"
- echo "pl_PL CP852"
- echo "ro CP852"
- echo "ro_RO CP852"
- echo "sk CP852"
- echo "sk_SK CP852"
- echo "sl CP852"
- echo "sl_SI CP852"
- echo "sq CP852"
- echo "sq_AL CP852"
- echo "sr CP852" # CP852 or CP866 or CP855 ??
- echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
- echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
- # ISO-8859-3 languages
- echo "mt CP850"
- echo "mt_MT CP850"
- # ISO-8859-5 languages
- echo "be CP866"
- echo "be_BE CP866"
- echo "bg CP866" # not CP855 ??
- echo "bg_BG CP866" # not CP855 ??
- echo "mk CP866" # not CP855 ??
- echo "mk_MK CP866" # not CP855 ??
- echo "ru CP866"
- echo "ru_RU CP866"
- echo "uk CP1125"
- echo "uk_UA CP1125"
- # ISO-8859-6 languages
- echo "ar CP864"
- echo "ar_AE CP864"
- echo "ar_DZ CP864"
- echo "ar_EG CP864"
- echo "ar_IQ CP864"
- echo "ar_IR CP864"
- echo "ar_JO CP864"
- echo "ar_KW CP864"
- echo "ar_MA CP864"
- echo "ar_OM CP864"
- echo "ar_QA CP864"
- echo "ar_SA CP864"
- echo "ar_SY CP864"
- # ISO-8859-7 languages
- echo "el CP869"
- echo "el_GR CP869"
- # ISO-8859-8 languages
- echo "he CP862"
- echo "he_IL CP862"
- # ISO-8859-9 languages
- echo "tr CP857"
- echo "tr_TR CP857"
- # Japanese
- echo "ja CP932"
- echo "ja_JP CP932"
- # Chinese
- echo "zh_CN GBK"
- echo "zh_TW CP950" # not CP938 ??
- # Korean
- echo "kr CP949" # not CP934 ??
- echo "kr_KR CP949" # not CP934 ??
- # Thai
- echo "th CP874"
- echo "th_TH CP874"
- # Other
- echo "eo CP850"
- echo "eo_EO CP850"
- ;;
-esac
diff --git a/navit/support/gettext_intl/dcgettext.c b/navit/support/gettext_intl/dcgettext.c
deleted file mode 100644
index 850acdee9..000000000
--- a/navit/support/gettext_intl/dcgettext.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Implementation of the dcgettext(3) function.
- Copyright (C) 1995-1999, 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DCGETTEXT __dcgettext
-# define DCIGETTEXT __dcigettext
-#else
-# define DCGETTEXT libintl_dcgettext
-# define DCIGETTEXT libintl_dcigettext
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
-char *
-DCGETTEXT (const char *domainname, const char *msgid, int category)
-{
- return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-INTDEF(__dcgettext)
-weak_alias (__dcgettext, dcgettext);
-#endif
diff --git a/navit/support/gettext_intl/dcigettext.c b/navit/support/gettext_intl/dcigettext.c
deleted file mode 100644
index 9d4e3542e..000000000
--- a/navit/support/gettext_intl/dcigettext.c
+++ /dev/null
@@ -1,1220 +0,0 @@
-/* Implementation of the internal dcigettext function.
- Copyright (C) 1995-1999, 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. */
-
-/* Tell glibc's <string.h> to provide a prototype for mempcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-
-#ifdef __GNUC__
-# undef alloca
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# if defined HAVE_ALLOCA_H || defined _LIBC
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca
-char *alloca ();
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#include <errno.h>
-#ifndef errno
-extern int errno;
-#endif
-#ifndef __set_errno
-# define __set_errno(val) errno = (val)
-#endif
-
-#include <stddef.h>
-#include <string.h>
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#include <locale.h>
-
-#ifdef _LIBC
- /* Guess whether integer division by zero raises signal SIGFPE.
- Set to 1 only if you know for sure. In case of doubt, set to 0. */
-# if defined __alpha__ || defined __arm__ || defined __i386__ \
- || defined __m68k__ || defined __s390__
-# define INTDIV0_RAISES_SIGFPE 1
-# else
-# define INTDIV0_RAISES_SIGFPE 0
-# endif
-#endif
-#if !INTDIV0_RAISES_SIGFPE
-# include <signal.h>
-#endif
-
-#if defined HAVE_SYS_PARAM_H || defined _LIBC
-# include <sys/param.h>
-#endif
-
-#include "gettextP.h"
-#include "plural-exp.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-#include "hash-string.h"
-
-/* Thread safetyness. */
-#ifdef _LIBC
-# include <bits/libc-lock.h>
-#else
-/* Provide dummy implementation if this is outside glibc. */
-# define __libc_lock_define_initialized(CLASS, NAME)
-# define __libc_lock_lock(NAME)
-# define __libc_lock_unlock(NAME)
-# define __libc_rwlock_define_initialized(CLASS, NAME)
-# define __libc_rwlock_rdlock(NAME)
-# define __libc_rwlock_unlock(NAME)
-#endif
-
-/* Alignment of types. */
-#if defined __GNUC__ && __GNUC__ >= 2
-# define alignof(TYPE) __alignof__ (TYPE)
-#else
-# define alignof(TYPE) \
- ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2)
-#endif
-
-/* The internal variables in the standalone libintl.a must have different
- names than the internal variables in GNU libc, otherwise programs
- using libintl.a cannot be linked statically. */
-#if !defined _LIBC
-# define _nl_default_default_domain libintl_nl_default_default_domain
-# define _nl_current_default_domain libintl_nl_current_default_domain
-# define _nl_default_dirname libintl_nl_default_dirname
-# define _nl_domain_bindings libintl_nl_domain_bindings
-#endif
-
-/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */
-#ifndef offsetof
-# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions. This is required by the standard
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
-# define getcwd __getcwd
-# ifndef stpcpy
-# define stpcpy __stpcpy
-# endif
-# define tfind __tfind
-#else
-# if !defined HAVE_GETCWD
-char *getwd ();
-# define getcwd(buf, max) getwd (buf)
-# else
-# if VMS
-# define getcwd(buf, max) (getcwd) (buf, max, 0)
-# else
-char *getcwd ();
-# endif
-# endif
-# ifndef HAVE_STPCPY
-static char *stpcpy (char *dest, const char *src);
-# endif
-# ifndef HAVE_MEMPCPY
-static void *mempcpy (void *dest, const void *src, size_t n);
-# endif
-#endif
-
-/* Amount to increase buffer size by in each try. */
-#define PATH_INCR 32
-
-/* The following is from pathmax.h. */
-/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
- PATH_MAX but might cause redefinition warnings when sys/param.h is
- later included (as on MORE/BSD 4.3). */
-#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__)
-# include <limits.h>
-#endif
-
-#ifndef _POSIX_PATH_MAX
-# define _POSIX_PATH_MAX 255
-#endif
-
-#if !defined PATH_MAX && defined _PC_PATH_MAX
-# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
-#endif
-
-/* Don't include sys/param.h if it already has been. */
-#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
-# include <sys/param.h>
-#endif
-
-#if !defined PATH_MAX && defined MAXPATHLEN
-# define PATH_MAX MAXPATHLEN
-#endif
-
-#ifndef PATH_MAX
-# define PATH_MAX _POSIX_PATH_MAX
-#endif
-
-/* Pathname support.
- ISSLASH(C) tests whether C is a directory separator character.
- IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
- it may be concatenated to a directory pathname.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-# define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
- && (P)[1] == ':')
-# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
-# define IS_PATH_WITH_DIR(P) \
- (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
-#else
- /* Unix */
-# define ISSLASH(C) ((C) == '/')
-# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
-# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
-#endif
-
-/* This is the type used for the search tree where known translations
- are stored. */
-struct known_translation_t
-{
- /* Domain in which to search. */
- char *domainname;
-
- /* The category. */
- int category;
-
- /* State of the catalog counter at the point the string was found. */
- int counter;
-
- /* Catalog where the string was found. */
- struct loaded_l10nfile *domain;
-
- /* And finally the translation. */
- const char *translation;
- size_t translation_length;
-
- /* Pointer to the string in question. */
- char msgid[ZERO];
-};
-
-/* Root of the search tree with known translations. We can use this
- only if the system provides the `tsearch' function family. */
-#if defined HAVE_TSEARCH || defined _LIBC
-# include <search.h>
-
-static void *root;
-
-# ifdef _LIBC
-# define tsearch __tsearch
-# endif
-
-/* Function to compare two entries in the table of known translations. */
-static int
-transcmp (const void *p1, const void *p2)
-{
- const struct known_translation_t *s1;
- const struct known_translation_t *s2;
- int result;
-
- s1 = (const struct known_translation_t *) p1;
- s2 = (const struct known_translation_t *) p2;
-
- result = strcmp (s1->msgid, s2->msgid);
- if (result == 0)
- {
- result = strcmp (s1->domainname, s2->domainname);
- if (result == 0)
- /* We compare the category last (though this is the cheapest
- operation) since it is hopefully always the same (namely
- LC_MESSAGES). */
- result = s1->category - s2->category;
- }
-
- return result;
-}
-#endif
-
-#ifndef INTVARDEF
-# define INTVARDEF(name)
-#endif
-#ifndef INTUSE
-# define INTUSE(name) name
-#endif
-
-/* Name of the default domain used for gettext(3) prior any call to
- textdomain(3). The default value for this is "messages". */
-const char _nl_default_default_domain[] attribute_hidden = "messages";
-
-/* Value used as the default domain for gettext(3). */
-const char *_nl_current_default_domain attribute_hidden
- = _nl_default_default_domain;
-
-/* Contains the default location of the message catalogs. */
-#if defined __EMX__
-extern const char _nl_default_dirname[];
-#else
-const char _nl_default_dirname[] = LOCALEDIR;
-INTVARDEF (_nl_default_dirname)
-#endif
-
-/* List with bindings of specific domains created by bindtextdomain()
- calls. */
-struct binding *_nl_domain_bindings;
-
-/* Prototypes for local functions. */
-static char *plural_lookup (struct loaded_l10nfile *domain,
- unsigned long int n,
- const char *translation, size_t translation_len)
- internal_function;
-static const char *guess_category_value (int category,
- const char *categoryname)
- internal_function;
-#ifdef _LIBC
-# include "../locale/localeinfo.h"
-# define category_to_name(category) _nl_category_names[category]
-#else
-static const char *category_to_name (int category) internal_function;
-#endif
-
-
-/* For those loosing systems which don't have `alloca' we have to add
- some additional code emulating it. */
-#ifdef HAVE_ALLOCA
-/* Nothing has to be done. */
-# define freea(p) /* nothing */
-# define ADD_BLOCK(list, address) /* nothing */
-# define FREE_BLOCKS(list) /* nothing */
-#else
-struct block_list
-{
- void *address;
- struct block_list *next;
-};
-# define ADD_BLOCK(list, addr) \
- do { \
- struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
- /* If we cannot get a free block we cannot add the new element to \
- the list. */ \
- if (newp != NULL) { \
- newp->address = (addr); \
- newp->next = (list); \
- (list) = newp; \
- } \
- } while (0)
-# define FREE_BLOCKS(list) \
- do { \
- while (list != NULL) { \
- struct block_list *old = list; \
- list = list->next; \
- free (old->address); \
- free (old); \
- } \
- } while (0)
-# undef alloca
-# define alloca(size) (malloc (size))
-# define freea(p) free (p)
-#endif /* have alloca */
-
-
-#ifdef _LIBC
-/* List of blocks allocated for translations. */
-typedef struct transmem_list
-{
- struct transmem_list *next;
- char data[ZERO];
-} transmem_block_t;
-static struct transmem_list *transmem_list;
-#else
-typedef unsigned char transmem_block_t;
-#endif
-
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DCIGETTEXT __dcigettext
-#else
-# define DCIGETTEXT libintl_dcigettext
-#endif
-
-/* Lock variable to protect the global data in the gettext implementation. */
-#ifdef _LIBC
-__libc_rwlock_define_initialized (, _nl_state_lock attribute_hidden)
-#endif
-
-/* Checking whether the binaries runs SUID must be done and glibc provides
- easier methods therefore we make a difference here. */
-#ifdef _LIBC
-# define ENABLE_SECURE __libc_enable_secure
-# define DETERMINE_SECURE
-#else
-# ifndef HAVE_GETUID
-# define getuid() 0
-# endif
-# ifndef HAVE_GETGID
-# define getgid() 0
-# endif
-# ifndef HAVE_GETEUID
-# define geteuid() getuid()
-# endif
-# ifndef HAVE_GETEGID
-# define getegid() getgid()
-# endif
-static int enable_secure;
-# define ENABLE_SECURE (enable_secure == 1)
-# define DETERMINE_SECURE \
- if (enable_secure == 0) \
- { \
- if (getuid () != geteuid () || getgid () != getegid ()) \
- enable_secure = 1; \
- else \
- enable_secure = -1; \
- }
-#endif
-
-/* Get the function to evaluate the plural expression. */
-#include "eval-plural.h"
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current
- CATEGORY locale and, if PLURAL is nonzero, search over string
- depending on the plural form determined by N. */
-char *
-DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
- int plural, unsigned long int n, int category)
-{
-#ifndef HAVE_ALLOCA
- struct block_list *block_list = NULL;
-#endif
- struct loaded_l10nfile *domain;
- struct binding *binding;
- const char *categoryname;
- const char *categoryvalue;
- char *dirname, *xdomainname;
- char *single_locale;
- char *retval;
- size_t retlen;
- int saved_errno;
-#if defined HAVE_TSEARCH || defined _LIBC
- struct known_translation_t *search;
- struct known_translation_t **foundp = NULL;
- size_t msgid_len;
-#endif
- size_t domainname_len;
-
- /* If no real MSGID is given return NULL. */
- if (msgid1 == NULL)
- return NULL;
-
-#ifdef _LIBC
- if (category < 0 || category >= __LC_LAST || category == LC_ALL)
- /* Bogus. */
- return (plural == 0
- ? (char *) msgid1
- /* Use the Germanic plural rule. */
- : n == 1 ? (char *) msgid1 : (char *) msgid2);
-#endif
-
- __libc_rwlock_rdlock (_nl_state_lock);
-
- /* If DOMAINNAME is NULL, we are interested in the default domain. If
- CATEGORY is not LC_MESSAGES this might not make much sense but the
- definition left this undefined. */
- if (domainname == NULL)
- domainname = _nl_current_default_domain;
-
- /* OS/2 specific: backward compatibility with older libintl versions */
-#ifdef LC_MESSAGES_COMPAT
- if (category == LC_MESSAGES_COMPAT)
- category = LC_MESSAGES;
-#endif
-
-#if defined HAVE_TSEARCH || defined _LIBC
- msgid_len = strlen (msgid1) + 1;
-
- /* Try to find the translation among those which we found at
- some time. */
- search = (struct known_translation_t *)
- alloca (offsetof (struct known_translation_t, msgid) + msgid_len);
- memcpy (search->msgid, msgid1, msgid_len);
- search->domainname = (char *) domainname;
- search->category = category;
-
- foundp = (struct known_translation_t **) tfind (search, &root, transcmp);
- freea (search);
- if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr)
- {
- /* Now deal with plural. */
- if (plural)
- retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation,
- (*foundp)->translation_length);
- else
- retval = (char *) (*foundp)->translation;
-
- __libc_rwlock_unlock (_nl_state_lock);
- return retval;
- }
-#endif
-
- /* Preserve the `errno' value. */
- saved_errno = errno;
-
- /* See whether this is a SUID binary or not. */
- DETERMINE_SECURE;
-
- /* First find matching binding. */
- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
- {
- int compare = strcmp (domainname, binding->domainname);
- if (compare == 0)
- /* We found it! */
- break;
- if (compare < 0)
- {
- /* It is not in the list. */
- binding = NULL;
- break;
- }
- }
-
- if (binding == NULL)
- dirname = (char *) INTUSE(_nl_default_dirname);
- else if (IS_ABSOLUTE_PATH (binding->dirname))
- dirname = binding->dirname;
- else
- {
- /* We have a relative path. Make it absolute now. */
- size_t dirname_len = strlen (binding->dirname) + 1;
- size_t path_max;
- char *ret;
-
- path_max = (unsigned int) PATH_MAX;
- path_max += 2; /* The getcwd docs say to do this. */
-
- for (;;)
- {
- dirname = (char *) alloca (path_max + dirname_len);
- ADD_BLOCK (block_list, dirname);
-
- __set_errno (0);
- ret = getcwd (dirname, path_max);
- if (ret != NULL || errno != ERANGE)
- break;
-
- path_max += path_max / 2;
- path_max += PATH_INCR;
- }
-
- if (ret == NULL)
- /* We cannot get the current working directory. Don't signal an
- error but simply return the default string. */
- goto return_untranslated;
-
- stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
- }
-
- /* Now determine the symbolic name of CATEGORY and its value. */
- categoryname = category_to_name (category);
- categoryvalue = guess_category_value (category, categoryname);
-
- domainname_len = strlen (domainname);
- xdomainname = (char *) alloca (strlen (categoryname)
- + domainname_len + 5);
- ADD_BLOCK (block_list, xdomainname);
-
- stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
- domainname, domainname_len),
- ".mo");
-
- /* Creating working area. */
- single_locale = (char *) alloca (strlen (categoryvalue) + 1);
- ADD_BLOCK (block_list, single_locale);
-
-
- /* Search for the given string. This is a loop because we perhaps
- got an ordered list of languages to consider for the translation. */
- while (1)
- {
- /* Make CATEGORYVALUE point to the next element of the list. */
- while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
- ++categoryvalue;
- if (categoryvalue[0] == '\0')
- {
- /* The whole contents of CATEGORYVALUE has been searched but
- no valid entry has been found. We solve this situation
- by implicitly appending a "C" entry, i.e. no translation
- will take place. */
- single_locale[0] = 'C';
- single_locale[1] = '\0';
- }
- else
- {
- char *cp = single_locale;
- while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
- *cp++ = *categoryvalue++;
- *cp = '\0';
-
- /* When this is a SUID binary we must not allow accessing files
- outside the dedicated directories. */
- if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale))
- /* Ingore this entry. */
- continue;
- }
-
- /* If the current locale value is C (or POSIX) we don't load a
- domain. Return the MSGID. */
- if (strcmp (single_locale, "C") == 0
- || strcmp (single_locale, "POSIX") == 0)
- break;
-
- /* Find structure describing the message catalog matching the
- DOMAINNAME and CATEGORY. */
- domain = _nl_find_domain (dirname, single_locale, xdomainname, binding);
-
- if (domain != NULL)
- {
- retval = _nl_find_msg (domain, binding, msgid1, &retlen);
-
- if (retval == NULL)
- {
- int cnt;
-
- for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
- {
- retval = _nl_find_msg (domain->successor[cnt], binding,
- msgid1, &retlen);
-
- if (retval != NULL)
- {
- domain = domain->successor[cnt];
- break;
- }
- }
- }
-
- if (retval != NULL)
- {
- /* Found the translation of MSGID1 in domain DOMAIN:
- starting at RETVAL, RETLEN bytes. */
- FREE_BLOCKS (block_list);
-#if defined HAVE_TSEARCH || defined _LIBC
- if (foundp == NULL)
- {
- /* Create a new entry and add it to the search tree. */
- struct known_translation_t *newp;
-
- newp = (struct known_translation_t *)
- malloc (offsetof (struct known_translation_t, msgid)
- + msgid_len + domainname_len + 1);
- if (newp != NULL)
- {
- newp->domainname =
- mempcpy (newp->msgid, msgid1, msgid_len);
- memcpy (newp->domainname, domainname, domainname_len + 1);
- newp->category = category;
- newp->counter = _nl_msg_cat_cntr;
- newp->domain = domain;
- newp->translation = retval;
- newp->translation_length = retlen;
-
- /* Insert the entry in the search tree. */
- foundp = (struct known_translation_t **)
- tsearch (newp, &root, transcmp);
- if (foundp == NULL
- || __builtin_expect (*foundp != newp, 0))
- /* The insert failed. */
- free (newp);
- }
- }
- else
- {
- /* We can update the existing entry. */
- (*foundp)->counter = _nl_msg_cat_cntr;
- (*foundp)->domain = domain;
- (*foundp)->translation = retval;
- (*foundp)->translation_length = retlen;
- }
-#endif
- __set_errno (saved_errno);
-
- /* Now deal with plural. */
- if (plural)
- retval = plural_lookup (domain, n, retval, retlen);
-
- __libc_rwlock_unlock (_nl_state_lock);
- return retval;
- }
- }
- }
-
- return_untranslated:
- /* Return the untranslated MSGID. */
- FREE_BLOCKS (block_list);
- __libc_rwlock_unlock (_nl_state_lock);
-#ifndef _LIBC
- if (!ENABLE_SECURE)
- {
- extern void _nl_log_untranslated (const char *logfilename,
- const char *domainname,
- const char *msgid1, const char *msgid2,
- int plural);
- const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED");
-
- if (logfilename != NULL && logfilename[0] != '\0')
- _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural);
- }
-#endif
- __set_errno (saved_errno);
- return (plural == 0
- ? (char *) msgid1
- /* Use the Germanic plural rule. */
- : n == 1 ? (char *) msgid1 : (char *) msgid2);
-}
-
-
-char *
-internal_function
-_nl_find_msg (struct loaded_l10nfile *domain_file,
- struct binding *domainbinding, const char *msgid,
- size_t *lengthp)
-{
- struct loaded_domain *domain;
- nls_uint32 nstrings;
- size_t act;
- char *result;
- size_t resultlen;
-
- if (domain_file->decided == 0)
- _nl_load_domain (domain_file, domainbinding);
-
- if (domain_file->data == NULL)
- return NULL;
-
- domain = (struct loaded_domain *) domain_file->data;
-
- nstrings = domain->nstrings;
-
- /* Locate the MSGID and its translation. */
- if (domain->hash_tab != NULL)
- {
- /* Use the hashing table. */
- nls_uint32 len = strlen (msgid);
- nls_uint32 hash_val = hash_string (msgid);
- nls_uint32 idx = hash_val % domain->hash_size;
- nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-
- while (1)
- {
- nls_uint32 nstr =
- W (domain->must_swap_hash_tab, domain->hash_tab[idx]);
-
- if (nstr == 0)
- /* Hash table entry is empty. */
- return NULL;
-
- nstr--;
-
- /* Compare msgid with the original string at index nstr.
- We compare the lengths with >=, not ==, because plural entries
- are represented by strings with an embedded NUL. */
- if (nstr < nstrings
- ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len
- && (strcmp (msgid,
- domain->data + W (domain->must_swap,
- domain->orig_tab[nstr].offset))
- == 0)
- : domain->orig_sysdep_tab[nstr - nstrings].length > len
- && (strcmp (msgid,
- domain->orig_sysdep_tab[nstr - nstrings].pointer)
- == 0))
- {
- act = nstr;
- goto found;
- }
-
- if (idx >= domain->hash_size - incr)
- idx -= domain->hash_size - incr;
- else
- idx += incr;
- }
- /* NOTREACHED */
- }
- else
- {
- /* Try the default method: binary search in the sorted array of
- messages. */
- size_t top, bottom;
-
- bottom = 0;
- top = nstrings;
- while (bottom < top)
- {
- int cmp_val;
-
- act = (bottom + top) / 2;
- cmp_val = strcmp (msgid, (domain->data
- + W (domain->must_swap,
- domain->orig_tab[act].offset)));
- if (cmp_val < 0)
- top = act;
- else if (cmp_val > 0)
- bottom = act + 1;
- else
- goto found;
- }
- /* No translation was found. */
- return NULL;
- }
-
- found:
- /* The translation was found at index ACT. If we have to convert the
- string to use a different character set, this is the time. */
- if (act < nstrings)
- {
- result = (char *)
- (domain->data + W (domain->must_swap, domain->trans_tab[act].offset));
- resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1;
- }
- else
- {
- result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer;
- resultlen = domain->trans_sysdep_tab[act - nstrings].length;
- }
-
-#if defined _LIBC || HAVE_ICONV
- if (domain->codeset_cntr
- != (domainbinding != NULL ? domainbinding->codeset_cntr : 0))
- {
- /* The domain's codeset has changed through bind_textdomain_codeset()
- since the message catalog was initialized or last accessed. We
- have to reinitialize the converter. */
- _nl_free_domain_conv (domain);
- _nl_init_domain_conv (domain_file, domain, domainbinding);
- }
-
- if (
-# ifdef _LIBC
- domain->conv != (__gconv_t) -1
-# else
-# if HAVE_ICONV
- domain->conv != (iconv_t) -1
-# endif
-# endif
- )
- {
- /* We are supposed to do a conversion. First allocate an
- appropriate table with the same structure as the table
- of translations in the file, where we can put the pointers
- to the converted strings in.
- There is a slight complication with plural entries. They
- are represented by consecutive NUL terminated strings. We
- handle this case by converting RESULTLEN bytes, including
- NULs. */
-
- if (domain->conv_tab == NULL
- && ((domain->conv_tab =
- (char **) calloc (nstrings + domain->n_sysdep_strings,
- sizeof (char *)))
- == NULL))
- /* Mark that we didn't succeed allocating a table. */
- domain->conv_tab = (char **) -1;
-
- if (__builtin_expect (domain->conv_tab == (char **) -1, 0))
- /* Nothing we can do, no more memory. */
- goto converted;
-
- if (domain->conv_tab[act] == NULL)
- {
- /* We haven't used this string so far, so it is not
- translated yet. Do this now. */
- /* We use a bit more efficient memory handling.
- We allocate always larger blocks which get used over
- time. This is faster than many small allocations. */
- __libc_lock_define_initialized (static, lock)
-# define INITIAL_BLOCK_SIZE 4080
- static unsigned char *freemem;
- static size_t freemem_size;
-
- const unsigned char *inbuf;
- unsigned char *outbuf;
- int malloc_count;
-# ifndef _LIBC
- transmem_block_t *transmem_list = NULL;
-# endif
-
- __libc_lock_lock (lock);
-
- inbuf = (const unsigned char *) result;
- outbuf = freemem + sizeof (size_t);
-
- malloc_count = 0;
- while (1)
- {
- transmem_block_t *newmem;
-# ifdef _LIBC
- size_t non_reversible;
- int res;
-
- if (freemem_size < sizeof (size_t))
- goto resize_freemem;
-
- res = __gconv (domain->conv,
- &inbuf, inbuf + resultlen,
- &outbuf,
- outbuf + freemem_size - sizeof (size_t),
- &non_reversible);
-
- if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT)
- break;
-
- if (res != __GCONV_FULL_OUTPUT)
- {
- __libc_lock_unlock (lock);
- goto converted;
- }
-
- inbuf = result;
-# else
-# if HAVE_ICONV
- const char *inptr = (const char *) inbuf;
- size_t inleft = resultlen;
- char *outptr = (char *) outbuf;
- size_t outleft;
-
- if (freemem_size < sizeof (size_t))
- goto resize_freemem;
-
- outleft = freemem_size - sizeof (size_t);
- if (iconv (domain->conv,
- (ICONV_CONST char **) &inptr, &inleft,
- &outptr, &outleft)
- != (size_t) (-1))
- {
- outbuf = (unsigned char *) outptr;
- break;
- }
- if (errno != E2BIG)
- {
- __libc_lock_unlock (lock);
- goto converted;
- }
-# endif
-# endif
-
- resize_freemem:
- /* We must allocate a new buffer or resize the old one. */
- if (malloc_count > 0)
- {
- ++malloc_count;
- freemem_size = malloc_count * INITIAL_BLOCK_SIZE;
- newmem = (transmem_block_t *) realloc (transmem_list,
- freemem_size);
-# ifdef _LIBC
- if (newmem != NULL)
- transmem_list = transmem_list->next;
- else
- {
- struct transmem_list *old = transmem_list;
-
- transmem_list = transmem_list->next;
- free (old);
- }
-# endif
- }
- else
- {
- malloc_count = 1;
- freemem_size = INITIAL_BLOCK_SIZE;
- newmem = (transmem_block_t *) malloc (freemem_size);
- }
- if (__builtin_expect (newmem == NULL, 0))
- {
- freemem = NULL;
- freemem_size = 0;
- __libc_lock_unlock (lock);
- goto converted;
- }
-
-# ifdef _LIBC
- /* Add the block to the list of blocks we have to free
- at some point. */
- newmem->next = transmem_list;
- transmem_list = newmem;
-
- freemem = newmem->data;
- freemem_size -= offsetof (struct transmem_list, data);
-# else
- transmem_list = newmem;
- freemem = newmem;
-# endif
-
- outbuf = freemem + sizeof (size_t);
- }
-
- /* We have now in our buffer a converted string. Put this
- into the table of conversions. */
- *(size_t *) freemem = outbuf - freemem - sizeof (size_t);
- domain->conv_tab[act] = (char *) freemem;
- /* Shrink freemem, but keep it aligned. */
- freemem_size -= outbuf - freemem;
- freemem = outbuf;
- freemem += freemem_size & (alignof (size_t) - 1);
- freemem_size = freemem_size & ~ (alignof (size_t) - 1);
-
- __libc_lock_unlock (lock);
- }
-
- /* Now domain->conv_tab[act] contains the translation of all
- the plural variants. */
- result = domain->conv_tab[act] + sizeof (size_t);
- resultlen = *(size_t *) domain->conv_tab[act];
- }
-
- converted:
- /* The result string is converted. */
-
-#endif /* _LIBC || HAVE_ICONV */
-
- *lengthp = resultlen;
- return result;
-}
-
-
-/* Look up a plural variant. */
-static char *
-internal_function
-plural_lookup (struct loaded_l10nfile *domain, unsigned long int n,
- const char *translation, size_t translation_len)
-{
- struct loaded_domain *domaindata = (struct loaded_domain *) domain->data;
- unsigned long int index;
- const char *p;
-
- index = plural_eval (domaindata->plural, n);
- if (index >= domaindata->nplurals)
- /* This should never happen. It means the plural expression and the
- given maximum value do not match. */
- index = 0;
-
- /* Skip INDEX strings at TRANSLATION. */
- p = translation;
- while (index-- > 0)
- {
-#ifdef _LIBC
- p = __rawmemchr (p, '\0');
-#else
- p = strchr (p, '\0');
-#endif
- /* And skip over the NUL byte. */
- p++;
-
- if (p >= translation + translation_len)
- /* This should never happen. It means the plural expression
- evaluated to a value larger than the number of variants
- available for MSGID1. */
- return (char *) translation;
- }
- return (char *) p;
-}
-
-#ifndef _LIBC
-/* Return string representation of locale CATEGORY. */
-static const char *
-internal_function
-category_to_name (int category)
-{
- const char *retval;
-
- switch (category)
- {
-#ifdef LC_COLLATE
- case LC_COLLATE:
- retval = "LC_COLLATE";
- break;
-#endif
-#ifdef LC_CTYPE
- case LC_CTYPE:
- retval = "LC_CTYPE";
- break;
-#endif
-#ifdef LC_MONETARY
- case LC_MONETARY:
- retval = "LC_MONETARY";
- break;
-#endif
-#ifdef LC_NUMERIC
- case LC_NUMERIC:
- retval = "LC_NUMERIC";
- break;
-#endif
-#ifdef LC_TIME
- case LC_TIME:
- retval = "LC_TIME";
- break;
-#endif
-#ifdef LC_MESSAGES
- case LC_MESSAGES:
- retval = "LC_MESSAGES";
- break;
-#endif
-#ifdef LC_RESPONSE
- case LC_RESPONSE:
- retval = "LC_RESPONSE";
- break;
-#endif
-#ifdef LC_ALL
- case LC_ALL:
- /* This might not make sense but is perhaps better than any other
- value. */
- retval = "LC_ALL";
- break;
-#endif
- default:
- /* If you have a better idea for a default value let me know. */
- retval = "LC_XXX";
- }
-
- return retval;
-}
-#endif
-
-/* Guess value of current locale from value of the environment variables. */
-static const char *
-internal_function
-guess_category_value (int category, const char *categoryname)
-{
- const char *language;
- const char *retval;
-
- /* The highest priority value is the `LANGUAGE' environment
- variable. But we don't use the value if the currently selected
- locale is the C locale. This is a GNU extension. */
- language = getenv ("LANGUAGE");
- if (language != NULL && language[0] == '\0')
- language = NULL;
-
- /* We have to proceed with the POSIX methods of looking to `LC_ALL',
- `LC_xxx', and `LANG'. On some systems this can be done by the
- `setlocale' function itself. */
-#ifdef _LIBC
- retval = __current_locale_name (category);
-#else
- retval = _nl_locale_name (category, categoryname);
-#endif
-
- /* Ignore LANGUAGE if the locale is set to "C" because
- 1. "C" locale usually uses the ASCII encoding, and most international
- messages use non-ASCII characters. These characters get displayed
- as question marks (if using glibc's iconv()) or as invalid 8-bit
- characters (because other iconv()s refuse to convert most non-ASCII
- characters to ASCII). In any case, the output is ugly.
- 2. The precise output of some programs in the "C" locale is specified
- by POSIX and should not depend on environment variables like
- "LANGUAGE". We allow such programs to use gettext(). */
- return language != NULL && strcmp (retval, "C") != 0 ? language : retval;
-}
-
-/* @@ begin of epilog @@ */
-
-/* We don't want libintl.a to depend on any other library. So we
- avoid the non-standard function stpcpy. In GNU C Library this
- function is available, though. Also allow the symbol HAVE_STPCPY
- to be defined. */
-#if !_LIBC && !HAVE_STPCPY
-static char *
-stpcpy (char *dest, const char *src)
-{
- while ((*dest++ = *src++) != '\0')
- /* Do nothing. */ ;
- return dest - 1;
-}
-#endif
-
-#if !_LIBC && !HAVE_MEMPCPY
-static void *
-mempcpy (void *dest, const void *src, size_t n)
-{
- return (void *) ((char *) memcpy (dest, src, n) + n);
-}
-#endif
-
-
-#ifdef _LIBC
-/* If we want to free all resources we have to do some work at
- program's end. */
-libc_freeres_fn (free_mem)
-{
- void *old;
-
- while (_nl_domain_bindings != NULL)
- {
- struct binding *oldp = _nl_domain_bindings;
- _nl_domain_bindings = _nl_domain_bindings->next;
- if (oldp->dirname != INTUSE(_nl_default_dirname))
- /* Yes, this is a pointer comparison. */
- free (oldp->dirname);
- free (oldp->codeset);
- free (oldp);
- }
-
- if (_nl_current_default_domain != _nl_default_default_domain)
- /* Yes, again a pointer comparison. */
- free ((char *) _nl_current_default_domain);
-
- /* Remove the search tree with the known translations. */
- __tdestroy (root, free);
- root = NULL;
-
- while (transmem_list != NULL)
- {
- old = transmem_list;
- transmem_list = transmem_list->next;
- free (old);
- }
-}
-#endif
diff --git a/navit/support/gettext_intl/dcngettext.c b/navit/support/gettext_intl/dcngettext.c
deleted file mode 100644
index 48a3e09e0..000000000
--- a/navit/support/gettext_intl/dcngettext.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Implementation of the dcngettext(3) function.
- Copyright (C) 1995-1999, 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DCNGETTEXT __dcngettext
-# define DCIGETTEXT __dcigettext
-#else
-# define DCNGETTEXT libintl_dcngettext
-# define DCIGETTEXT libintl_dcigettext
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
-char *
-DCNGETTEXT (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n,
- int category)
-{
- return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__dcngettext, dcngettext);
-#endif
diff --git a/navit/support/gettext_intl/dgettext.c b/navit/support/gettext_intl/dgettext.c
deleted file mode 100644
index b64b0f5d3..000000000
--- a/navit/support/gettext_intl/dgettext.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Implementation of the dgettext(3) function.
- Copyright (C) 1995-1997, 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-
-#include <locale.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DGETTEXT __dgettext
-# define DCGETTEXT INTUSE(__dcgettext)
-#else
-# define DGETTEXT libintl_dgettext
-# define DCGETTEXT libintl_dcgettext
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog of the current
- LC_MESSAGES locale. */
-char *
-DGETTEXT (const char *domainname, const char *msgid)
-{
- return DCGETTEXT (domainname, msgid, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__dgettext, dgettext);
-#endif
diff --git a/navit/support/gettext_intl/dngettext.c b/navit/support/gettext_intl/dngettext.c
deleted file mode 100644
index 7815637f0..000000000
--- a/navit/support/gettext_intl/dngettext.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Implementation of the dngettext(3) function.
- Copyright (C) 1995-1997, 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-
-#include <locale.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define DNGETTEXT __dngettext
-# define DCNGETTEXT __dcngettext
-#else
-# define DNGETTEXT libintl_dngettext
-# define DCNGETTEXT libintl_dcngettext
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog of the current
- LC_MESSAGES locale and skip message according to the plural form. */
-char *
-DNGETTEXT (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__dngettext, dngettext);
-#endif
diff --git a/navit/support/gettext_intl/eval-plural.h b/navit/support/gettext_intl/eval-plural.h
deleted file mode 100644
index 01bd5af5f..000000000
--- a/navit/support/gettext_intl/eval-plural.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Plural expression evaluation.
- Copyright (C) 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. */
-
-#ifndef STATIC
-#define STATIC static
-#endif
-
-/* Evaluate the plural expression and return an index value. */
-STATIC
-unsigned long int
-internal_function
-plural_eval (struct expression *pexp, unsigned long int n)
-{
- switch (pexp->nargs)
- {
- case 0:
- switch (pexp->operation)
- {
- case var:
- return n;
- case num:
- return pexp->val.num;
- default:
- break;
- }
- /* NOTREACHED */
- break;
- case 1:
- {
- /* pexp->operation must be lnot. */
- unsigned long int arg = plural_eval (pexp->val.args[0], n);
- return ! arg;
- }
- case 2:
- {
- unsigned long int leftarg = plural_eval (pexp->val.args[0], n);
- if (pexp->operation == lor)
- return leftarg || plural_eval (pexp->val.args[1], n);
- else if (pexp->operation == land)
- return leftarg && plural_eval (pexp->val.args[1], n);
- else
- {
- unsigned long int rightarg = plural_eval (pexp->val.args[1], n);
-
- switch (pexp->operation)
- {
- case mult:
- return leftarg * rightarg;
- case divide:
-#if !INTDIV0_RAISES_SIGFPE
- if (rightarg == 0)
- raise (SIGFPE);
-#endif
- return leftarg / rightarg;
- case module:
-#if !INTDIV0_RAISES_SIGFPE
- if (rightarg == 0)
- raise (SIGFPE);
-#endif
- return leftarg % rightarg;
- case plus:
- return leftarg + rightarg;
- case minus:
- return leftarg - rightarg;
- case less_than:
- return leftarg < rightarg;
- case greater_than:
- return leftarg > rightarg;
- case less_or_equal:
- return leftarg <= rightarg;
- case greater_or_equal:
- return leftarg >= rightarg;
- case equal:
- return leftarg == rightarg;
- case not_equal:
- return leftarg != rightarg;
- default:
- break;
- }
- }
- /* NOTREACHED */
- break;
- }
- case 3:
- {
- /* pexp->operation must be qmop. */
- unsigned long int boolarg = plural_eval (pexp->val.args[0], n);
- return plural_eval (pexp->val.args[boolarg ? 1 : 2], n);
- }
- }
- /* NOTREACHED */
- return 0;
-}
diff --git a/navit/support/gettext_intl/explodename.c b/navit/support/gettext_intl/explodename.c
deleted file mode 100644
index 52c25e727..000000000
--- a/navit/support/gettext_intl/explodename.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Copyright (C) 1995-1998, 2000-2001, 2003 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
- 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-
-#include "loadinfo.h"
-
-/* On some strange systems still no definition of NULL is found. Sigh! */
-#ifndef NULL
-# if defined __STDC__ && __STDC__
-# define NULL ((void *) 0)
-# else
-# define NULL 0
-# endif
-#endif
-
-/* @@ end of prolog @@ */
-
-char *
-_nl_find_language (const char *name)
-{
- while (name[0] != '\0' && name[0] != '_' && name[0] != '@'
- && name[0] != '+' && name[0] != ',')
- ++name;
-
- return (char *) name;
-}
-
-
-int
-_nl_explode_name (char *name,
- const char **language, const char **modifier,
- const char **territory, const char **codeset,
- const char **normalized_codeset, const char **special,
- const char **sponsor, const char **revision)
-{
- enum { undecided, xpg, cen } syntax;
- char *cp;
- int mask;
-
- *modifier = NULL;
- *territory = NULL;
- *codeset = NULL;
- *normalized_codeset = NULL;
- *special = NULL;
- *sponsor = NULL;
- *revision = NULL;
-
- /* Now we determine the single parts of the locale name. First
- look for the language. Termination symbols are `_' and `@' if
- we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
- mask = 0;
- syntax = undecided;
- *language = cp = name;
- cp = _nl_find_language (*language);
-
- if (*language == cp)
- /* This does not make sense: language has to be specified. Use
- this entry as it is without exploding. Perhaps it is an alias. */
- cp = strchr (*language, '\0');
- else if (cp[0] == '_')
- {
- /* Next is the territory. */
- cp[0] = '\0';
- *territory = ++cp;
-
- while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
- && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
- ++cp;
-
- mask |= TERRITORY;
-
- if (cp[0] == '.')
- {
- /* Next is the codeset. */
- syntax = xpg;
- cp[0] = '\0';
- *codeset = ++cp;
-
- while (cp[0] != '\0' && cp[0] != '@')
- ++cp;
-
- mask |= XPG_CODESET;
-
- if (*codeset != cp && (*codeset)[0] != '\0')
- {
- *normalized_codeset = _nl_normalize_codeset (*codeset,
- cp - *codeset);
- if (strcmp (*codeset, *normalized_codeset) == 0)
- free ((char *) *normalized_codeset);
- else
- mask |= XPG_NORM_CODESET;
- }
- }
- }
-
- if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
- {
- /* Next is the modifier. */
- syntax = cp[0] == '@' ? xpg : cen;
- cp[0] = '\0';
- *modifier = ++cp;
-
- while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
- && cp[0] != ',' && cp[0] != '_')
- ++cp;
-
- mask |= XPG_MODIFIER | CEN_AUDIENCE;
- }
-
- if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
- {
- syntax = cen;
-
- if (cp[0] == '+')
- {
- /* Next is special application (CEN syntax). */
- cp[0] = '\0';
- *special = ++cp;
-
- while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
- ++cp;
-
- mask |= CEN_SPECIAL;
- }
-
- if (cp[0] == ',')
- {
- /* Next is sponsor (CEN syntax). */
- cp[0] = '\0';
- *sponsor = ++cp;
-
- while (cp[0] != '\0' && cp[0] != '_')
- ++cp;
-
- mask |= CEN_SPONSOR;
- }
-
- if (cp[0] == '_')
- {
- /* Next is revision (CEN syntax). */
- cp[0] = '\0';
- *revision = ++cp;
-
- mask |= CEN_REVISION;
- }
- }
-
- /* For CEN syntax values it might be important to have the
- separator character in the file name, not for XPG syntax. */
- if (syntax == xpg)
- {
- if (*territory != NULL && (*territory)[0] == '\0')
- mask &= ~TERRITORY;
-
- if (*codeset != NULL && (*codeset)[0] == '\0')
- mask &= ~XPG_CODESET;
-
- if (*modifier != NULL && (*modifier)[0] == '\0')
- mask &= ~XPG_MODIFIER;
- }
-
- return mask;
-}
diff --git a/navit/support/gettext_intl/finddomain.c b/navit/support/gettext_intl/finddomain.c
deleted file mode 100644
index 4992a8c9e..000000000
--- a/navit/support/gettext_intl/finddomain.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/* Handle list of needed message catalogs
- Copyright (C) 1995-1999, 2000-2001, 2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@gnu.org>, 1995.
-
- 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-/* List of already loaded domains. */
-static struct loaded_l10nfile *_nl_loaded_domains;
-
-
-/* Return a data structure describing the message catalog described by
- the DOMAINNAME and CATEGORY parameters with respect to the currently
- established bindings. */
-struct loaded_l10nfile *
-internal_function
-_nl_find_domain (const char *dirname, char *locale,
- const char *domainname, struct binding *domainbinding)
-{
- struct loaded_l10nfile *retval;
- const char *language;
- const char *modifier;
- const char *territory;
- const char *codeset;
- const char *normalized_codeset;
- const char *special;
- const char *sponsor;
- const char *revision;
- const char *alias_value;
- int mask;
-
- /* LOCALE can consist of up to four recognized parts for the XPG syntax:
-
- language[_territory[.codeset]][@modifier]
-
- and six parts for the CEN syntax:
-
- language[_territory][+audience][+special][,[sponsor][_revision]]
-
- Beside the first part all of them are allowed to be missing. If
- the full specified locale is not found, the less specific one are
- looked for. The various parts will be stripped off according to
- the following order:
- (1) revision
- (2) sponsor
- (3) special
- (4) codeset
- (5) normalized codeset
- (6) territory
- (7) audience/modifier
- */
-
- /* If we have already tested for this locale entry there has to
- be one data set in the list of loaded domains. */
- retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
- strlen (dirname) + 1, 0, locale, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, domainname, 0);
- if (retval != NULL)
- {
- /* We know something about this locale. */
- int cnt;
-
- if (retval->decided == 0)
- _nl_load_domain (retval, domainbinding);
-
- if (retval->data != NULL)
- return retval;
-
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
- {
- if (retval->successor[cnt]->decided == 0)
- _nl_load_domain (retval->successor[cnt], domainbinding);
-
- if (retval->successor[cnt]->data != NULL)
- break;
- }
- return cnt >= 0 ? retval : NULL;
- /* NOTREACHED */
- }
-
- /* See whether the locale value is an alias. If yes its value
- *overwrites* the alias name. No test for the original value is
- done. */
- alias_value = _nl_expand_alias (locale);
- if (alias_value != NULL)
- {
-#if defined _LIBC || defined HAVE_STRDUP
- locale = strdup (alias_value);
- if (locale == NULL)
- return NULL;
-#else
- size_t len = strlen (alias_value) + 1;
- locale = (char *) malloc (len);
- if (locale == NULL)
- return NULL;
-
- memcpy (locale, alias_value, len);
-#endif
- }
-
- /* Now we determine the single parts of the locale name. First
- look for the language. Termination symbols are `_' and `@' if
- we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
- mask = _nl_explode_name (locale, &language, &modifier, &territory,
- &codeset, &normalized_codeset, &special,
- &sponsor, &revision);
-
- /* Create all possible locale entries which might be interested in
- generalization. */
- retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
- strlen (dirname) + 1, mask, language, territory,
- codeset, normalized_codeset, modifier, special,
- sponsor, revision, domainname, 1);
- if (retval == NULL)
- /* This means we are out of core. */
- return NULL;
-
- if (retval->decided == 0)
- _nl_load_domain (retval, domainbinding);
- if (retval->data == NULL)
- {
- int cnt;
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
- {
- if (retval->successor[cnt]->decided == 0)
- _nl_load_domain (retval->successor[cnt], domainbinding);
- if (retval->successor[cnt]->data != NULL)
- break;
- }
- }
-
- /* The room for an alias was dynamically allocated. Free it now. */
- if (alias_value != NULL)
- free (locale);
-
- /* The space for normalized_codeset is dynamically allocated. Free it. */
- if (mask & XPG_NORM_CODESET)
- free ((void *) normalized_codeset);
-
- return retval;
-}
-
-
-#ifdef _LIBC
-libc_freeres_fn (free_mem)
-{
- struct loaded_l10nfile *runp = _nl_loaded_domains;
-
- while (runp != NULL)
- {
- struct loaded_l10nfile *here = runp;
- if (runp->data != NULL)
- _nl_unload_domain ((struct loaded_domain *) runp->data);
- runp = runp->next;
- free ((char *) here->filename);
- free (here);
- }
-}
-#endif
diff --git a/navit/support/gettext_intl/gettext.c b/navit/support/gettext_intl/gettext.c
deleted file mode 100644
index 92c42faa7..000000000
--- a/navit/support/gettext_intl/gettext.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Implementation of gettext(3) function.
- Copyright (C) 1995, 1997, 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define __need_NULL
-# include <stddef.h>
-#else
-# include <stdlib.h> /* Just for NULL. */
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define GETTEXT __gettext
-# define DCGETTEXT INTUSE(__dcgettext)
-#else
-# define GETTEXT libintl_gettext
-# define DCGETTEXT libintl_dcgettext
-#endif
-
-/* Look up MSGID in the current default message catalog for the current
- LC_MESSAGES locale. If not found, returns MSGID itself (the default
- text). */
-char *
-GETTEXT (const char *msgid)
-{
- return DCGETTEXT (NULL, msgid, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__gettext, gettext);
-#endif
diff --git a/navit/support/gettext_intl/gettextP.h b/navit/support/gettext_intl/gettextP.h
deleted file mode 100644
index ab9cc8c64..000000000
--- a/navit/support/gettext_intl/gettextP.h
+++ /dev/null
@@ -1,215 +0,0 @@
-/* Header describing internals of libintl library.
- Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@cygnus.com>, 1995.
-
- 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. */
-
-#ifndef _GETTEXTP_H
-#define _GETTEXTP_H
-
-#include <stddef.h> /* Get size_t. */
-
-#ifdef _LIBC
-# include "../iconv/gconv_int.h"
-#else
-# if HAVE_ICONV
-# include <iconv.h>
-# endif
-#endif
-
-#include "loadinfo.h"
-
-#include "gmo.h" /* Get nls_uint32. */
-
-/* @@ end of prolog @@ */
-
-#ifndef internal_function
-# define internal_function
-#endif
-
-#ifndef attribute_hidden
-# define attribute_hidden
-#endif
-
-/* Tell the compiler when a conditional or integer expression is
- almost always true or almost always false. */
-#ifndef HAVE_BUILTIN_EXPECT
-# define __builtin_expect(expr, val) (expr)
-#endif
-
-#ifndef W
-# define W(flag, data) ((flag) ? SWAP (data) : (data))
-#endif
-
-
-#ifdef _LIBC
-# include <byteswap.h>
-# define SWAP(i) bswap_32 (i)
-#else
-static nls_uint32
-SWAP (i)
- nls_uint32 i;
-{
- return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
-}
-#endif
-
-
-/* In-memory representation of system dependent string. */
-struct sysdep_string_desc
-{
- /* Length of addressed string, including the trailing NUL. */
- size_t length;
- /* Pointer to addressed string. */
- const char *pointer;
-};
-
-/* The representation of an opened message catalog. */
-struct loaded_domain
-{
- /* Pointer to memory containing the .mo file. */
- const char *data;
- /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */
- int use_mmap;
- /* Size of mmap()ed memory. */
- size_t mmap_size;
- /* 1 if the .mo file uses a different endianness than this machine. */
- int must_swap;
- /* Pointer to additional malloc()ed memory. */
- void *malloced;
-
- /* Number of static strings pairs. */
- nls_uint32 nstrings;
- /* Pointer to descriptors of original strings in the file. */
- const struct string_desc *orig_tab;
- /* Pointer to descriptors of translated strings in the file. */
- const struct string_desc *trans_tab;
-
- /* Number of system dependent strings pairs. */
- nls_uint32 n_sysdep_strings;
- /* Pointer to descriptors of original sysdep strings. */
- const struct sysdep_string_desc *orig_sysdep_tab;
- /* Pointer to descriptors of translated sysdep strings. */
- const struct sysdep_string_desc *trans_sysdep_tab;
-
- /* Size of hash table. */
- nls_uint32 hash_size;
- /* Pointer to hash table. */
- const nls_uint32 *hash_tab;
- /* 1 if the hash table uses a different endianness than this machine. */
- int must_swap_hash_tab;
-
- int codeset_cntr;
-#ifdef _LIBC
- __gconv_t conv;
-#else
-# if HAVE_ICONV
- iconv_t conv;
-# endif
-#endif
- char **conv_tab;
-
- struct expression *plural;
- unsigned long int nplurals;
-};
-
-/* We want to allocate a string at the end of the struct. But ISO C
- doesn't allow zero sized arrays. */
-#ifdef __GNUC__
-# define ZERO 0
-#else
-# define ZERO 1
-#endif
-
-/* A set of settings bound to a message domain. Used to store settings
- from bindtextdomain() and bind_textdomain_codeset(). */
-struct binding
-{
- struct binding *next;
- char *dirname;
- int codeset_cntr; /* Incremented each time codeset changes. */
- char *codeset;
- char domainname[ZERO];
-};
-
-/* A counter which is incremented each time some previous translations
- become invalid.
- This variable is part of the external ABI of the GNU libintl. */
-extern int _nl_msg_cat_cntr;
-
-#ifndef _LIBC
-const char *_nl_locale_name (int category, const char *categoryname);
-#endif
-
-struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale,
- const char *__domainname,
- struct binding *__domainbinding)
- internal_function;
-void _nl_load_domain (struct loaded_l10nfile *__domain,
- struct binding *__domainbinding)
- internal_function;
-void _nl_unload_domain (struct loaded_domain *__domain)
- internal_function;
-const char *_nl_init_domain_conv (struct loaded_l10nfile *__domain_file,
- struct loaded_domain *__domain,
- struct binding *__domainbinding)
- internal_function;
-void _nl_free_domain_conv (struct loaded_domain *__domain)
- internal_function;
-
-char *_nl_find_msg (struct loaded_l10nfile *domain_file,
- struct binding *domainbinding, const char *msgid,
- size_t *lengthp)
- internal_function;
-
-#ifdef _LIBC
-extern char *__gettext (const char *__msgid);
-extern char *__dgettext (const char *__domainname, const char *__msgid);
-extern char *__dcgettext (const char *__domainname, const char *__msgid,
- int __category);
-extern char *__ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n);
-extern char *__dngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int n);
-extern char *__dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category);
-extern char *__dcigettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- int __plural, unsigned long int __n,
- int __category);
-extern char *__textdomain (const char *__domainname);
-extern char *__bindtextdomain (const char *__domainname,
- const char *__dirname);
-extern char *__bind_textdomain_codeset (const char *__domainname,
- const char *__codeset);
-#else
-/* Declare the exported libintl_* functions, in a way that allows us to
- call them under their real name. */
-# undef _INTL_REDIRECT_INLINE
-# undef _INTL_REDIRECT_MACROS
-# define _INTL_REDIRECT_MACROS
-# include "libgnuintl.h"
-extern char *libintl_dcigettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- int __plural, unsigned long int __n,
- int __category);
-#endif
-
-/* @@ begin of epilog @@ */
-
-#endif /* gettextP.h */
diff --git a/navit/support/gettext_intl/gmo.h b/navit/support/gettext_intl/gmo.h
deleted file mode 100644
index e7c9cc14b..000000000
--- a/navit/support/gettext_intl/gmo.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/* Description of GNU message catalog format: general file layout.
- Copyright (C) 1995, 1997, 2000-2002, 2004 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. */
-
-#ifndef _GETTEXT_H
-#define _GETTEXT_H 1
-
-#include <limits.h>
-
-/* @@ end of prolog @@ */
-
-/* The magic number of the GNU message catalog format. */
-#define _MAGIC 0x950412de
-#define _MAGIC_SWAPPED 0xde120495
-
-/* Revision number of the currently used .mo (binary) file format. */
-#define MO_REVISION_NUMBER 0
-#define MO_REVISION_NUMBER_WITH_SYSDEP_I 1
-
-/* The following contortions are an attempt to use the C preprocessor
- to determine an unsigned integral type that is 32 bits wide. An
- alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
- as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work
- when cross-compiling. */
-
-#if __STDC__
-# define UINT_MAX_32_BITS 4294967295U
-#else
-# define UINT_MAX_32_BITS 0xFFFFFFFF
-#endif
-
-/* If UINT_MAX isn't defined, assume it's a 32-bit type.
- This should be valid for all systems GNU cares about because
- that doesn't include 16-bit systems, and only modern systems
- (that certainly have <limits.h>) have 64+-bit integral types. */
-
-#ifndef UINT_MAX
-# define UINT_MAX UINT_MAX_32_BITS
-#endif
-
-#if UINT_MAX == UINT_MAX_32_BITS
-typedef unsigned nls_uint32;
-#else
-# if USHRT_MAX == UINT_MAX_32_BITS
-typedef unsigned short nls_uint32;
-# else
-# if ULONG_MAX == UINT_MAX_32_BITS
-typedef unsigned long nls_uint32;
-# else
- /* The following line is intended to throw an error. Using #error is
- not portable enough. */
- "Cannot determine unsigned 32-bit data type."
-# endif
-# endif
-#endif
-
-
-/* Header for binary .mo file format. */
-struct mo_file_header
-{
- /* The magic number. */
- nls_uint32 magic;
- /* The revision number of the file format. */
- nls_uint32 revision;
-
- /* The following are only used in .mo files with major revision 0 or 1. */
-
- /* The number of strings pairs. */
- nls_uint32 nstrings;
- /* Offset of table with start offsets of original strings. */
- nls_uint32 orig_tab_offset;
- /* Offset of table with start offsets of translated strings. */
- nls_uint32 trans_tab_offset;
- /* Size of hash table. */
- nls_uint32 hash_tab_size;
- /* Offset of first hash table entry. */
- nls_uint32 hash_tab_offset;
-
- /* The following are only used in .mo files with minor revision >= 1. */
-
- /* The number of system dependent segments. */
- nls_uint32 n_sysdep_segments;
- /* Offset of table describing system dependent segments. */
- nls_uint32 sysdep_segments_offset;
- /* The number of system dependent strings pairs. */
- nls_uint32 n_sysdep_strings;
- /* Offset of table with start offsets of original sysdep strings. */
- nls_uint32 orig_sysdep_tab_offset;
- /* Offset of table with start offsets of translated sysdep strings. */
- nls_uint32 trans_sysdep_tab_offset;
-};
-
-/* Descriptor for static string contained in the binary .mo file. */
-struct string_desc
-{
- /* Length of addressed string, not including the trailing NUL. */
- nls_uint32 length;
- /* Offset of string in file. */
- nls_uint32 offset;
-};
-
-/* The following are only used in .mo files with minor revision >= 1. */
-
-/* Descriptor for system dependent string segment. */
-struct sysdep_segment
-{
- /* Length of addressed string, including the trailing NUL. */
- nls_uint32 length;
- /* Offset of string in file. */
- nls_uint32 offset;
-};
-
-/* Descriptor for system dependent string. */
-struct sysdep_string
-{
- /* Offset of static string segments in file. */
- nls_uint32 offset;
- /* Alternating sequence of static and system dependent segments.
- The last segment is a static segment, including the trailing NUL. */
- struct segment_pair
- {
- /* Size of static segment. */
- nls_uint32 segsize;
- /* Reference to system dependent string segment, or ~0 at the end. */
- nls_uint32 sysdepref;
- } segments[1];
-};
-
-/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF,
- regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */
-#define SEGMENTS_END ((nls_uint32) ~0)
-
-/* @@ begin of epilog @@ */
-
-#endif /* gettext.h */
diff --git a/navit/support/gettext_intl/hash-string.h b/navit/support/gettext_intl/hash-string.h
deleted file mode 100644
index eb3a6ae76..000000000
--- a/navit/support/gettext_intl/hash-string.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Description of GNU message catalog format: string hashing function.
- Copyright (C) 1995, 1997-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. */
-
-/* @@ end of prolog @@ */
-
-/* We assume to have `unsigned long int' value with at least 32 bits. */
-#define HASHWORDBITS 32
-
-
-/* Defines the so called `hashpjw' function by P.J. Weinberger
- [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
- 1986, 1987 Bell Telephone Laboratories, Inc.] */
-static unsigned long int
-hash_string (const char *str_param)
-{
- unsigned long int hval, g;
- const char *str = str_param;
-
- /* Compute the hash value for the given string. */
- hval = 0;
- while (*str != '\0')
- {
- hval <<= 4;
- hval += (unsigned char) *str++;
- g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
- if (g != 0)
- {
- hval ^= g >> (HASHWORDBITS - 8);
- hval ^= g;
- }
- }
- return hval;
-}
diff --git a/navit/support/gettext_intl/intl-compat.c b/navit/support/gettext_intl/intl-compat.c
deleted file mode 100644
index 96f9d955d..000000000
--- a/navit/support/gettext_intl/intl-compat.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
- Library.
- Copyright (C) 1995, 2000-2003 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gettextP.h"
-
-/* @@ end of prolog @@ */
-
-/* This file redirects the gettext functions (without prefix) to those
- defined in the included GNU libintl library (with "libintl_" prefix).
- It is compiled into libintl in order to make the AM_GNU_GETTEXT test
- of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which
- has the redirections primarily in the <libintl.h> include file.
- It is also compiled into libgnuintl so that libgnuintl.so can be used
- as LD_PRELOADable library on glibc systems, to provide the extra
- features that the functions in the libc don't have (namely, logging). */
-
-
-#undef gettext
-#undef dgettext
-#undef dcgettext
-#undef ngettext
-#undef dngettext
-#undef dcngettext
-#undef textdomain
-#undef bindtextdomain
-#undef bind_textdomain_codeset
-
-
-/* When building a DLL, we must export some functions. Note that because
- the functions are only defined for binary backward compatibility, we
- don't need to use __declspec(dllimport) in any case. */
-#if defined _MSC_VER && BUILDING_DLL
-# define DLL_EXPORTED __declspec(dllexport)
-#else
-# define DLL_EXPORTED
-#endif
-
-
-DLL_EXPORTED
-char *
-gettext (const char *msgid)
-{
- return libintl_gettext (msgid);
-}
-
-
-DLL_EXPORTED
-char *
-dgettext (const char *domainname, const char *msgid)
-{
- return libintl_dgettext (domainname, msgid);
-}
-
-
-DLL_EXPORTED
-char *
-dcgettext (const char *domainname, const char *msgid, int category)
-{
- return libintl_dcgettext (domainname, msgid, category);
-}
-
-
-DLL_EXPORTED
-char *
-ngettext (const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return libintl_ngettext (msgid1, msgid2, n);
-}
-
-
-DLL_EXPORTED
-char *
-dngettext (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return libintl_dngettext (domainname, msgid1, msgid2, n);
-}
-
-
-DLL_EXPORTED
-char *
-dcngettext (const char *domainname,
- const char *msgid1, const char *msgid2, unsigned long int n,
- int category)
-{
- return libintl_dcngettext (domainname, msgid1, msgid2, n, category);
-}
-
-
-DLL_EXPORTED
-char *
-textdomain (const char *domainname)
-{
- return libintl_textdomain (domainname);
-}
-
-
-DLL_EXPORTED
-char *
-bindtextdomain (const char *domainname, const char *dirname)
-{
- return libintl_bindtextdomain (domainname, dirname);
-}
-
-
-DLL_EXPORTED
-char *
-bind_textdomain_codeset (const char *domainname, const char *codeset)
-{
- return libintl_bind_textdomain_codeset (domainname, codeset);
-}
diff --git a/navit/support/gettext_intl/l10nflist.c b/navit/support/gettext_intl/l10nflist.c
deleted file mode 100644
index 7d4182ada..000000000
--- a/navit/support/gettext_intl/l10nflist.c
+++ /dev/null
@@ -1,421 +0,0 @@
-/* Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
- 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. */
-
-/* Tell glibc's <string.h> to provide a prototype for stpcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <string.h>
-
-#if defined _LIBC || defined HAVE_ARGZ_H
-# include <argz.h>
-#endif
-#include <ctype.h>
-#include <sys/types.h>
-#include <stdlib.h>
-
-#include "loadinfo.h"
-
-/* On some strange systems still no definition of NULL is found. Sigh! */
-#ifndef NULL
-# if defined __STDC__ && __STDC__
-# define NULL ((void *) 0)
-# else
-# define NULL 0
-# endif
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions. This is required by the standard
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
-# ifndef stpcpy
-# define stpcpy(dest, src) __stpcpy(dest, src)
-# endif
-#else
-# ifndef HAVE_STPCPY
-static char *stpcpy (char *dest, const char *src);
-# endif
-#endif
-
-/* Pathname support.
- ISSLASH(C) tests whether C is a directory separator character.
- IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
- it may be concatenated to a directory pathname.
- */
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-# define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
- && (P)[1] == ':')
-# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
-#else
- /* Unix */
-# define ISSLASH(C) ((C) == '/')
-# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
-#endif
-
-/* Define function which are usually not available. */
-
-#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
-/* Returns the number of strings in ARGZ. */
-static size_t
-argz_count__ (const char *argz, size_t len)
-{
- size_t count = 0;
- while (len > 0)
- {
- size_t part_len = strlen (argz);
- argz += part_len + 1;
- len -= part_len + 1;
- count++;
- }
- return count;
-}
-# undef __argz_count
-# define __argz_count(argz, len) argz_count__ (argz, len)
-#else
-# ifdef _LIBC
-# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len)
-# endif
-#endif /* !_LIBC && !HAVE___ARGZ_COUNT */
-
-#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
-/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
- except the last into the character SEP. */
-static void
-argz_stringify__ (char *argz, size_t len, int sep)
-{
- while (len > 0)
- {
- size_t part_len = strlen (argz);
- argz += part_len;
- len -= part_len + 1;
- if (len > 0)
- *argz++ = sep;
- }
-}
-# undef __argz_stringify
-# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
-#else
-# ifdef _LIBC
-# define __argz_stringify(argz, len, sep) \
- INTUSE(__argz_stringify) (argz, len, sep)
-# endif
-#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
-
-#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
-static char *
-argz_next__ (char *argz, size_t argz_len, const char *entry)
-{
- if (entry)
- {
- if (entry < argz + argz_len)
- entry = strchr (entry, '\0') + 1;
-
- return entry >= argz + argz_len ? NULL : (char *) entry;
- }
- else
- if (argz_len > 0)
- return argz;
- else
- return 0;
-}
-# undef __argz_next
-# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
-#endif /* !_LIBC && !HAVE___ARGZ_NEXT */
-
-
-/* Return number of bits set in X. */
-static int
-pop (int x)
-{
- /* We assume that no more than 16 bits are used. */
- x = ((x & ~0x5555) >> 1) + (x & 0x5555);
- x = ((x & ~0x3333) >> 2) + (x & 0x3333);
- x = ((x >> 4) + x) & 0x0f0f;
- x = ((x >> 8) + x) & 0xff;
-
- return x;
-}
-
-
-struct loaded_l10nfile *
-_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
- const char *dirlist, size_t dirlist_len,
- int mask, const char *language, const char *territory,
- const char *codeset, const char *normalized_codeset,
- const char *modifier, const char *special,
- const char *sponsor, const char *revision,
- const char *filename, int do_allocate)
-{
- char *abs_filename;
- struct loaded_l10nfile **lastp;
- struct loaded_l10nfile *retval;
- char *cp;
- size_t dirlist_count;
- size_t entries;
- int cnt;
-
- /* If LANGUAGE contains an absolute directory specification, we ignore
- DIRLIST. */
- if (IS_ABSOLUTE_PATH (language))
- dirlist_len = 0;
-
- /* Allocate room for the full file name. */
- abs_filename = (char *) malloc (dirlist_len
- + strlen (language)
- + ((mask & TERRITORY) != 0
- ? strlen (territory) + 1 : 0)
- + ((mask & XPG_CODESET) != 0
- ? strlen (codeset) + 1 : 0)
- + ((mask & XPG_NORM_CODESET) != 0
- ? strlen (normalized_codeset) + 1 : 0)
- + (((mask & XPG_MODIFIER) != 0
- || (mask & CEN_AUDIENCE) != 0)
- ? strlen (modifier) + 1 : 0)
- + ((mask & CEN_SPECIAL) != 0
- ? strlen (special) + 1 : 0)
- + (((mask & CEN_SPONSOR) != 0
- || (mask & CEN_REVISION) != 0)
- ? (1 + ((mask & CEN_SPONSOR) != 0
- ? strlen (sponsor) : 0)
- + ((mask & CEN_REVISION) != 0
- ? strlen (revision) + 1 : 0)) : 0)
- + 1 + strlen (filename) + 1);
-
- if (abs_filename == NULL)
- return NULL;
-
- /* Construct file name. */
- cp = abs_filename;
- if (dirlist_len > 0)
- {
- memcpy (cp, dirlist, dirlist_len);
- __argz_stringify (cp, dirlist_len, PATH_SEPARATOR);
- cp += dirlist_len;
- cp[-1] = '/';
- }
-
- cp = stpcpy (cp, language);
-
- if ((mask & TERRITORY) != 0)
- {
- *cp++ = '_';
- cp = stpcpy (cp, territory);
- }
- if ((mask & XPG_CODESET) != 0)
- {
- *cp++ = '.';
- cp = stpcpy (cp, codeset);
- }
- if ((mask & XPG_NORM_CODESET) != 0)
- {
- *cp++ = '.';
- cp = stpcpy (cp, normalized_codeset);
- }
- if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
- {
- /* This component can be part of both syntaces but has different
- leading characters. For CEN we use `+', else `@'. */
- *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
- cp = stpcpy (cp, modifier);
- }
- if ((mask & CEN_SPECIAL) != 0)
- {
- *cp++ = '+';
- cp = stpcpy (cp, special);
- }
- if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
- {
- *cp++ = ',';
- if ((mask & CEN_SPONSOR) != 0)
- cp = stpcpy (cp, sponsor);
- if ((mask & CEN_REVISION) != 0)
- {
- *cp++ = '_';
- cp = stpcpy (cp, revision);
- }
- }
-
- *cp++ = '/';
- stpcpy (cp, filename);
-
- /* Look in list of already loaded domains whether it is already
- available. */
- lastp = l10nfile_list;
- for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
- if (retval->filename != NULL)
- {
- int compare = strcmp (retval->filename, abs_filename);
- if (compare == 0)
- /* We found it! */
- break;
- if (compare < 0)
- {
- /* It's not in the list. */
- retval = NULL;
- break;
- }
-
- lastp = &retval->next;
- }
-
- if (retval != NULL || do_allocate == 0)
- {
- free (abs_filename);
- return retval;
- }
-
- dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1);
-
- /* Allocate a new loaded_l10nfile. */
- retval =
- (struct loaded_l10nfile *)
- malloc (sizeof (*retval)
- + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0))
- * sizeof (struct loaded_l10nfile *)));
- if (retval == NULL)
- return NULL;
-
- retval->filename = abs_filename;
-
- /* We set retval->data to NULL here; it is filled in later.
- Setting retval->decided to 1 here means that retval does not
- correspond to a real file (dirlist_count > 1) or is not worth
- looking up (if an unnormalized codeset was specified). */
- retval->decided = (dirlist_count > 1
- || ((mask & XPG_CODESET) != 0
- && (mask & XPG_NORM_CODESET) != 0));
- retval->data = NULL;
-
- retval->next = *lastp;
- *lastp = retval;
-
- entries = 0;
- /* Recurse to fill the inheritance list of RETVAL.
- If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL
- entry does not correspond to a real file; retval->filename contains
- colons. In this case we loop across all elements of DIRLIST and
- across all bit patterns dominated by MASK.
- If the DIRLIST is a single directory or entirely redundant (i.e.
- DIRLIST_COUNT == 1), we loop across all bit patterns dominated by
- MASK, excluding MASK itself.
- In either case, we loop down from MASK to 0. This has the effect
- that the extra bits in the locale name are dropped in this order:
- first the modifier, then the territory, then the codeset, then the
- normalized_codeset. */
- for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt)
- if ((cnt & ~mask) == 0
- && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
- && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
- {
- if (dirlist_count > 1)
- {
- /* Iterate over all elements of the DIRLIST. */
- char *dir = NULL;
-
- while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
- != NULL)
- retval->successor[entries++]
- = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1,
- cnt, language, territory, codeset,
- normalized_codeset, modifier, special,
- sponsor, revision, filename, 1);
- }
- else
- retval->successor[entries++]
- = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len,
- cnt, language, territory, codeset,
- normalized_codeset, modifier, special,
- sponsor, revision, filename, 1);
- }
- retval->successor[entries] = NULL;
-
- return retval;
-}
-
-/* Normalize codeset name. There is no standard for the codeset
- names. Normalization allows the user to use any of the common
- names. The return value is dynamically allocated and has to be
- freed by the caller. */
-const char *
-_nl_normalize_codeset (const char *codeset, size_t name_len)
-{
- int len = 0;
- int only_digit = 1;
- char *retval;
- char *wp;
- size_t cnt;
-
- for (cnt = 0; cnt < name_len; ++cnt)
- if (isalnum ((unsigned char) codeset[cnt]))
- {
- ++len;
-
- if (isalpha ((unsigned char) codeset[cnt]))
- only_digit = 0;
- }
-
- retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
-
- if (retval != NULL)
- {
- if (only_digit)
- wp = stpcpy (retval, "iso");
- else
- wp = retval;
-
- for (cnt = 0; cnt < name_len; ++cnt)
- if (isalpha ((unsigned char) codeset[cnt]))
- *wp++ = tolower ((unsigned char) codeset[cnt]);
- else if (isdigit ((unsigned char) codeset[cnt]))
- *wp++ = codeset[cnt];
-
- *wp = '\0';
- }
-
- return (const char *) retval;
-}
-
-
-/* @@ begin of epilog @@ */
-
-/* We don't want libintl.a to depend on any other library. So we
- avoid the non-standard function stpcpy. In GNU C Library this
- function is available, though. Also allow the symbol HAVE_STPCPY
- to be defined. */
-#if !_LIBC && !HAVE_STPCPY
-static char *
-stpcpy (char *dest, const char *src)
-{
- while ((*dest++ = *src++) != '\0')
- /* Do nothing. */ ;
- return dest - 1;
-}
-#endif
diff --git a/navit/support/gettext_intl/libgnuintl.h b/navit/support/gettext_intl/libgnuintl.h
deleted file mode 100644
index 87d234511..000000000
--- a/navit/support/gettext_intl/libgnuintl.h
+++ /dev/null
@@ -1,384 +0,0 @@
-/* Message catalogs for internationalization.
- Copyright (C) 1995-1997, 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. */
-
-#ifndef _LIBINTL_H
-#define _LIBINTL_H 1
-#include "config.h"
-
-#include <locale.h>
-
-/* The LC_MESSAGES locale category is the category used by the functions
- gettext() and dgettext(). It is specified in POSIX, but not in ANSI C.
- On systems that don't define it, use an arbitrary value instead.
- On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
- then includes <libintl.h> (i.e. this file!) and then only defines
- LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES
- in this case. */
-#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
-# define LC_MESSAGES 1729
-#endif
-
-/* We define an additional symbol to signal that we use the GNU
- implementation of gettext. */
-#define __USE_GNU_GETTEXT 1
-
-/* Provide information about the supported file formats. Returns the
- maximum minor revision number supported for a given major revision. */
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
- ((major) == 0 ? 1 : -1)
-
-/* Resolve a platform specific conflict on DJGPP. GNU gettext takes
- precedence over _conio_gettext. */
-#ifdef __DJGPP__
-# undef gettext
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* We redirect the functions to those prefixed with "libintl_". This is
- necessary, because some systems define gettext/textdomain/... in the C
- library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
- If we used the unprefixed names, there would be cases where the
- definition in the C library would override the one in the libintl.so
- shared library. Recall that on ELF systems, the symbols are looked
- up in the following order:
- 1. in the executable,
- 2. in the shared libraries specified on the link command line, in order,
- 3. in the dependencies of the shared libraries specified on the link
- command line,
- 4. in the dlopen()ed shared libraries, in the order in which they were
- dlopen()ed.
- The definition in the C library would override the one in libintl.so if
- either
- * -lc is given on the link command line and -lintl isn't, or
- * -lc is given on the link command line before -lintl, or
- * libintl.so is a dependency of a dlopen()ed shared library but not
- linked to the executable at link time.
- Since Solaris gettext() behaves differently than GNU gettext(), this
- would be unacceptable.
-
- The redirection happens by default through macros in C, so that &gettext
- is independent of the compilation unit, but through inline functions in
- C++, in order not to interfere with the name mangling of class fields or
- class methods called 'gettext'. */
-
-/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
- If he doesn't, we choose the method. A third possible method is
- _INTL_REDIRECT_ASM, supported only by GCC. */
-#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
-# if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
-# define _INTL_REDIRECT_ASM
-# else
-# ifdef __cplusplus
-# define _INTL_REDIRECT_INLINE
-# else
-# define _INTL_REDIRECT_MACROS
-# endif
-# endif
-#endif
-/* Auxiliary macros. */
-#ifdef _INTL_REDIRECT_ASM
-# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
-# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
-# define _INTL_STRINGIFY(prefix) #prefix
-#else
-# define _INTL_ASM(cname)
-#endif
-
-/* Look up MSGID in the current default message catalog for the current
- LC_MESSAGES locale. If not found, returns MSGID itself (the default
- text). */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_gettext (const char *__msgid);
-static inline char *gettext (const char *__msgid)
-{
- return libintl_gettext (__msgid);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define gettext libintl_gettext
-#endif
-extern char *gettext (const char *__msgid)
- _INTL_ASM (libintl_gettext);
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current
- LC_MESSAGES locale. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dgettext (const char *__domainname, const char *__msgid);
-static inline char *dgettext (const char *__domainname, const char *__msgid)
-{
- return libintl_dgettext (__domainname, __msgid);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dgettext libintl_dgettext
-#endif
-extern char *dgettext (const char *__domainname, const char *__msgid)
- _INTL_ASM (libintl_dgettext);
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
- int __category);
-static inline char *dcgettext (const char *__domainname, const char *__msgid,
- int __category)
-{
- return libintl_dcgettext (__domainname, __msgid, __category);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dcgettext libintl_dcgettext
-#endif
-extern char *dcgettext (const char *__domainname, const char *__msgid,
- int __category)
- _INTL_ASM (libintl_dcgettext);
-#endif
-
-
-/* Similar to `gettext' but select the plural form corresponding to the
- number N. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n);
-static inline char *ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n)
-{
- return libintl_ngettext (__msgid1, __msgid2, __n);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define ngettext libintl_ngettext
-#endif
-extern char *ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n)
- _INTL_ASM (libintl_ngettext);
-#endif
-
-/* Similar to `dgettext' but select the plural form corresponding to the
- number N. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
- const char *__msgid2, unsigned long int __n);
-static inline char *dngettext (const char *__domainname, const char *__msgid1,
- const char *__msgid2, unsigned long int __n)
-{
- return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dngettext libintl_dngettext
-#endif
-extern char *dngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n)
- _INTL_ASM (libintl_dngettext);
-#endif
-
-/* Similar to `dcgettext' but select the plural form corresponding to the
- number N. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category);
-static inline char *dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category)
-{
- return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dcngettext libintl_dcngettext
-#endif
-extern char *dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category)
- _INTL_ASM (libintl_dcngettext);
-#endif
-
-
-/* Set the current default message catalog to DOMAINNAME.
- If DOMAINNAME is null, return the current default.
- If DOMAINNAME is "", reset to the default of "messages". */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_textdomain (const char *__domainname);
-static inline char *textdomain (const char *__domainname)
-{
- return libintl_textdomain (__domainname);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define textdomain libintl_textdomain
-#endif
-extern char *textdomain (const char *__domainname)
- _INTL_ASM (libintl_textdomain);
-#endif
-
-/* Specify that the DOMAINNAME message catalog will be found
- in DIRNAME rather than in the system locale data base. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_bindtextdomain (const char *__domainname,
- const char *__dirname);
-static inline char *bindtextdomain (const char *__domainname,
- const char *__dirname)
-{
- return libintl_bindtextdomain (__domainname, __dirname);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define bindtextdomain libintl_bindtextdomain
-#endif
-extern char *bindtextdomain (const char *__domainname, const char *__dirname)
- _INTL_ASM (libintl_bindtextdomain);
-#endif
-
-/* Specify the character encoding in which the messages from the
- DOMAINNAME message catalog will be returned. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_bind_textdomain_codeset (const char *__domainname,
- const char *__codeset);
-static inline char *bind_textdomain_codeset (const char *__domainname,
- const char *__codeset)
-{
- return libintl_bind_textdomain_codeset (__domainname, __codeset);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define bind_textdomain_codeset libintl_bind_textdomain_codeset
-#endif
-extern char *bind_textdomain_codeset (const char *__domainname,
- const char *__codeset)
- _INTL_ASM (libintl_bind_textdomain_codeset);
-#endif
-
-
-/* Support for format strings with positions in *printf(), following the
- POSIX/XSI specification.
- Note: These replacements for the *printf() functions are visible only
- in source files that #include <libintl.h> or #include "gettext.h".
- Packages that use *printf() in source files that don't refer to _()
- or gettext() but for which the format string could be the return value
- of _() or gettext() need to add this #include. Oh well. */
-
-#if 1
-
-#include <stdio.h>
-#include <stddef.h>
-
-/* Get va_list. */
-#if __STDC__ || defined __cplusplus || defined _MSC_VER
-# include <stdarg.h>
-#else
-# include <varargs.h>
-#endif
-
-#undef fprintf
-#define fprintf libintl_fprintf
-extern int fprintf (FILE *, const char *, ...);
-#undef vfprintf
-#define vfprintf libintl_vfprintf
-extern int vfprintf (FILE *, const char *, va_list);
-
-#undef printf
-#define printf libintl_printf
-extern int printf (const char *, ...);
-#undef vprintf
-#define vprintf libintl_vprintf
-extern int vprintf (const char *, va_list);
-
-#undef sprintf
-#define sprintf libintl_sprintf
-extern int sprintf (char *, const char *, ...);
-#undef vsprintf
-#define vsprintf libintl_vsprintf
-extern int vsprintf (char *, const char *, va_list);
-
-#if HAVE_SNPRINTF
-
-#undef snprintf
-#define snprintf libintl_snprintf
-extern int snprintf (char *, size_t, const char *, ...);
-#undef vsnprintf
-#define vsnprintf libintl_vsnprintf
-extern int vsnprintf (char *, size_t, const char *, va_list);
-
-#endif
-
-#if HAVE_ASPRINTF
-
-#undef asprintf
-#define asprintf libintl_asprintf
-extern int asprintf (char **, const char *, ...);
-#undef vasprintf
-#define vasprintf libintl_vasprintf
-extern int vasprintf (char **, const char *, va_list);
-
-#endif
-
-#if HAVE_WPRINTF
-
-#undef fwprintf
-#define fwprintf libintl_fwprintf
-extern int fwprintf (FILE *, const wchar_t *, ...);
-#undef vfwprintf
-#define vfwprintf libintl_vfwprintf
-extern int vfwprintf (FILE *, const wchar_t *, va_list);
-
-#undef wprintf
-#define wprintf libintl_wprintf
-extern int wprintf (const wchar_t *, ...);
-#undef vwprintf
-#define vwprintf libintl_vwprintf
-extern int vwprintf (const wchar_t *, va_list);
-
-#undef swprintf
-#define swprintf libintl_swprintf
-extern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
-#undef vswprintf
-#define vswprintf libintl_vswprintf
-extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
-
-#endif
-
-#endif
-
-
-/* Support for relocatable packages. */
-
-/* Sets the original and the current installation prefix of the package.
- Relocation simply replaces a pathname starting with the original prefix
- by the corresponding pathname with the current prefix instead. Both
- prefixes should be directory names without trailing slash (i.e. use ""
- instead of "/"). */
-#define libintl_set_relocation_prefix libintl_set_relocation_prefix
-extern void
- libintl_set_relocation_prefix (const char *orig_prefix,
- const char *curr_prefix);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* libintl.h */
diff --git a/navit/support/gettext_intl/libgnuintl.h.in b/navit/support/gettext_intl/libgnuintl.h.in
deleted file mode 100644
index 3be7eb990..000000000
--- a/navit/support/gettext_intl/libgnuintl.h.in
+++ /dev/null
@@ -1,383 +0,0 @@
-/* Message catalogs for internationalization.
- Copyright (C) 1995-1997, 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. */
-
-#ifndef _LIBINTL_H
-#define _LIBINTL_H 1
-
-#include <locale.h>
-
-/* The LC_MESSAGES locale category is the category used by the functions
- gettext() and dgettext(). It is specified in POSIX, but not in ANSI C.
- On systems that don't define it, use an arbitrary value instead.
- On Solaris, <locale.h> defines __LOCALE_H (or _LOCALE_H in Solaris 2.5)
- then includes <libintl.h> (i.e. this file!) and then only defines
- LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES
- in this case. */
-#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun))
-# define LC_MESSAGES 1729
-#endif
-
-/* We define an additional symbol to signal that we use the GNU
- implementation of gettext. */
-#define __USE_GNU_GETTEXT 1
-
-/* Provide information about the supported file formats. Returns the
- maximum minor revision number supported for a given major revision. */
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \
- ((major) == 0 ? 1 : -1)
-
-/* Resolve a platform specific conflict on DJGPP. GNU gettext takes
- precedence over _conio_gettext. */
-#ifdef __DJGPP__
-# undef gettext
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* We redirect the functions to those prefixed with "libintl_". This is
- necessary, because some systems define gettext/textdomain/... in the C
- library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer).
- If we used the unprefixed names, there would be cases where the
- definition in the C library would override the one in the libintl.so
- shared library. Recall that on ELF systems, the symbols are looked
- up in the following order:
- 1. in the executable,
- 2. in the shared libraries specified on the link command line, in order,
- 3. in the dependencies of the shared libraries specified on the link
- command line,
- 4. in the dlopen()ed shared libraries, in the order in which they were
- dlopen()ed.
- The definition in the C library would override the one in libintl.so if
- either
- * -lc is given on the link command line and -lintl isn't, or
- * -lc is given on the link command line before -lintl, or
- * libintl.so is a dependency of a dlopen()ed shared library but not
- linked to the executable at link time.
- Since Solaris gettext() behaves differently than GNU gettext(), this
- would be unacceptable.
-
- The redirection happens by default through macros in C, so that &gettext
- is independent of the compilation unit, but through inline functions in
- C++, in order not to interfere with the name mangling of class fields or
- class methods called 'gettext'. */
-
-/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS.
- If he doesn't, we choose the method. A third possible method is
- _INTL_REDIRECT_ASM, supported only by GCC. */
-#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS)
-# if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus)
-# define _INTL_REDIRECT_ASM
-# else
-# ifdef __cplusplus
-# define _INTL_REDIRECT_INLINE
-# else
-# define _INTL_REDIRECT_MACROS
-# endif
-# endif
-#endif
-/* Auxiliary macros. */
-#ifdef _INTL_REDIRECT_ASM
-# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname))
-# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring
-# define _INTL_STRINGIFY(prefix) #prefix
-#else
-# define _INTL_ASM(cname)
-#endif
-
-/* Look up MSGID in the current default message catalog for the current
- LC_MESSAGES locale. If not found, returns MSGID itself (the default
- text). */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_gettext (const char *__msgid);
-static inline char *gettext (const char *__msgid)
-{
- return libintl_gettext (__msgid);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define gettext libintl_gettext
-#endif
-extern char *gettext (const char *__msgid)
- _INTL_ASM (libintl_gettext);
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current
- LC_MESSAGES locale. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dgettext (const char *__domainname, const char *__msgid);
-static inline char *dgettext (const char *__domainname, const char *__msgid)
-{
- return libintl_dgettext (__domainname, __msgid);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dgettext libintl_dgettext
-#endif
-extern char *dgettext (const char *__domainname, const char *__msgid)
- _INTL_ASM (libintl_dgettext);
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
- locale. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dcgettext (const char *__domainname, const char *__msgid,
- int __category);
-static inline char *dcgettext (const char *__domainname, const char *__msgid,
- int __category)
-{
- return libintl_dcgettext (__domainname, __msgid, __category);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dcgettext libintl_dcgettext
-#endif
-extern char *dcgettext (const char *__domainname, const char *__msgid,
- int __category)
- _INTL_ASM (libintl_dcgettext);
-#endif
-
-
-/* Similar to `gettext' but select the plural form corresponding to the
- number N. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n);
-static inline char *ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n)
-{
- return libintl_ngettext (__msgid1, __msgid2, __n);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define ngettext libintl_ngettext
-#endif
-extern char *ngettext (const char *__msgid1, const char *__msgid2,
- unsigned long int __n)
- _INTL_ASM (libintl_ngettext);
-#endif
-
-/* Similar to `dgettext' but select the plural form corresponding to the
- number N. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dngettext (const char *__domainname, const char *__msgid1,
- const char *__msgid2, unsigned long int __n);
-static inline char *dngettext (const char *__domainname, const char *__msgid1,
- const char *__msgid2, unsigned long int __n)
-{
- return libintl_dngettext (__domainname, __msgid1, __msgid2, __n);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dngettext libintl_dngettext
-#endif
-extern char *dngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n)
- _INTL_ASM (libintl_dngettext);
-#endif
-
-/* Similar to `dcgettext' but select the plural form corresponding to the
- number N. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category);
-static inline char *dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category)
-{
- return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define dcngettext libintl_dcngettext
-#endif
-extern char *dcngettext (const char *__domainname,
- const char *__msgid1, const char *__msgid2,
- unsigned long int __n, int __category)
- _INTL_ASM (libintl_dcngettext);
-#endif
-
-
-/* Set the current default message catalog to DOMAINNAME.
- If DOMAINNAME is null, return the current default.
- If DOMAINNAME is "", reset to the default of "messages". */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_textdomain (const char *__domainname);
-static inline char *textdomain (const char *__domainname)
-{
- return libintl_textdomain (__domainname);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define textdomain libintl_textdomain
-#endif
-extern char *textdomain (const char *__domainname)
- _INTL_ASM (libintl_textdomain);
-#endif
-
-/* Specify that the DOMAINNAME message catalog will be found
- in DIRNAME rather than in the system locale data base. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_bindtextdomain (const char *__domainname,
- const char *__dirname);
-static inline char *bindtextdomain (const char *__domainname,
- const char *__dirname)
-{
- return libintl_bindtextdomain (__domainname, __dirname);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define bindtextdomain libintl_bindtextdomain
-#endif
-extern char *bindtextdomain (const char *__domainname, const char *__dirname)
- _INTL_ASM (libintl_bindtextdomain);
-#endif
-
-/* Specify the character encoding in which the messages from the
- DOMAINNAME message catalog will be returned. */
-#ifdef _INTL_REDIRECT_INLINE
-extern char *libintl_bind_textdomain_codeset (const char *__domainname,
- const char *__codeset);
-static inline char *bind_textdomain_codeset (const char *__domainname,
- const char *__codeset)
-{
- return libintl_bind_textdomain_codeset (__domainname, __codeset);
-}
-#else
-#ifdef _INTL_REDIRECT_MACROS
-# define bind_textdomain_codeset libintl_bind_textdomain_codeset
-#endif
-extern char *bind_textdomain_codeset (const char *__domainname,
- const char *__codeset)
- _INTL_ASM (libintl_bind_textdomain_codeset);
-#endif
-
-
-/* Support for format strings with positions in *printf(), following the
- POSIX/XSI specification.
- Note: These replacements for the *printf() functions are visible only
- in source files that #include <libintl.h> or #include "gettext.h".
- Packages that use *printf() in source files that don't refer to _()
- or gettext() but for which the format string could be the return value
- of _() or gettext() need to add this #include. Oh well. */
-
-#if !@HAVE_POSIX_PRINTF@
-
-#include <stdio.h>
-#include <stddef.h>
-
-/* Get va_list. */
-#if __STDC__ || defined __cplusplus || defined _MSC_VER
-# include <stdarg.h>
-#else
-# include <varargs.h>
-#endif
-
-#undef fprintf
-#define fprintf libintl_fprintf
-extern int fprintf (FILE *, const char *, ...);
-#undef vfprintf
-#define vfprintf libintl_vfprintf
-extern int vfprintf (FILE *, const char *, va_list);
-
-#undef printf
-#define printf libintl_printf
-extern int printf (const char *, ...);
-#undef vprintf
-#define vprintf libintl_vprintf
-extern int vprintf (const char *, va_list);
-
-#undef sprintf
-#define sprintf libintl_sprintf
-extern int sprintf (char *, const char *, ...);
-#undef vsprintf
-#define vsprintf libintl_vsprintf
-extern int vsprintf (char *, const char *, va_list);
-
-#if @HAVE_SNPRINTF@
-
-#undef snprintf
-#define snprintf libintl_snprintf
-extern int snprintf (char *, size_t, const char *, ...);
-#undef vsnprintf
-#define vsnprintf libintl_vsnprintf
-extern int vsnprintf (char *, size_t, const char *, va_list);
-
-#endif
-
-#if @HAVE_ASPRINTF@
-
-#undef asprintf
-#define asprintf libintl_asprintf
-extern int asprintf (char **, const char *, ...);
-#undef vasprintf
-#define vasprintf libintl_vasprintf
-extern int vasprintf (char **, const char *, va_list);
-
-#endif
-
-#if @HAVE_WPRINTF@
-
-#undef fwprintf
-#define fwprintf libintl_fwprintf
-extern int fwprintf (FILE *, const wchar_t *, ...);
-#undef vfwprintf
-#define vfwprintf libintl_vfwprintf
-extern int vfwprintf (FILE *, const wchar_t *, va_list);
-
-#undef wprintf
-#define wprintf libintl_wprintf
-extern int wprintf (const wchar_t *, ...);
-#undef vwprintf
-#define vwprintf libintl_vwprintf
-extern int vwprintf (const wchar_t *, va_list);
-
-#undef swprintf
-#define swprintf libintl_swprintf
-extern int swprintf (wchar_t *, size_t, const wchar_t *, ...);
-#undef vswprintf
-#define vswprintf libintl_vswprintf
-extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list);
-
-#endif
-
-#endif
-
-
-/* Support for relocatable packages. */
-
-/* Sets the original and the current installation prefix of the package.
- Relocation simply replaces a pathname starting with the original prefix
- by the corresponding pathname with the current prefix instead. Both
- prefixes should be directory names without trailing slash (i.e. use ""
- instead of "/"). */
-#define libintl_set_relocation_prefix libintl_set_relocation_prefix
-extern void
- libintl_set_relocation_prefix (const char *orig_prefix,
- const char *curr_prefix);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* libintl.h */
diff --git a/navit/support/gettext_intl/loadinfo.h b/navit/support/gettext_intl/loadinfo.h
deleted file mode 100644
index 65e5ebd1f..000000000
--- a/navit/support/gettext_intl/loadinfo.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Copyright (C) 1996-1999, 2000-2003 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
- 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. */
-
-#ifndef _LOADINFO_H
-#define _LOADINFO_H 1
-
-/* Declarations of locale dependent catalog lookup functions.
- Implemented in
-
- localealias.c Possibly replace a locale name by another.
- explodename.c Split a locale name into its various fields.
- l10nflist.c Generate a list of filenames of possible message catalogs.
- finddomain.c Find and open the relevant message catalogs.
-
- The main function _nl_find_domain() in finddomain.c is declared
- in gettextP.h.
- */
-
-#ifndef internal_function
-# define internal_function
-#endif
-
-/* Tell the compiler when a conditional or integer expression is
- almost always true or almost always false. */
-#ifndef HAVE_BUILTIN_EXPECT
-# define __builtin_expect(expr, val) (expr)
-#endif
-
-/* Separator in PATH like lists of pathnames. */
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define PATH_SEPARATOR ';'
-#else
- /* Unix */
-# define PATH_SEPARATOR ':'
-#endif
-
-/* Encoding of locale name parts. */
-#define CEN_REVISION 1
-#define CEN_SPONSOR 2
-#define CEN_SPECIAL 4
-#define XPG_NORM_CODESET 8
-#define XPG_CODESET 16
-#define TERRITORY 32
-#define CEN_AUDIENCE 64
-#define XPG_MODIFIER 128
-
-#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
-#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
-
-
-struct loaded_l10nfile
-{
- const char *filename;
- int decided;
-
- const void *data;
-
- struct loaded_l10nfile *next;
- struct loaded_l10nfile *successor[1];
-};
-
-
-/* Normalize codeset name. There is no standard for the codeset
- names. Normalization allows the user to use any of the common
- names. The return value is dynamically allocated and has to be
- freed by the caller. */
-extern const char *_nl_normalize_codeset (const char *codeset,
- size_t name_len);
-
-/* Lookup a locale dependent file.
- *L10NFILE_LIST denotes a pool of lookup results of locale dependent
- files of the same kind, sorted in decreasing order of ->filename.
- DIRLIST and DIRLIST_LEN are an argz list of directories in which to
- look, containing at least one directory (i.e. DIRLIST_LEN > 0).
- MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER,
- SPECIAL, SPONSOR, REVISION are the pieces of the locale name, as
- produced by _nl_explode_name(). FILENAME is the filename suffix.
- The return value is the lookup result, either found in *L10NFILE_LIST,
- or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL.
- If the return value is non-NULL, it is added to *L10NFILE_LIST, and
- its ->next field denotes the chaining inside *L10NFILE_LIST, and
- furthermore its ->successor[] field contains a list of other lookup
- results from which this lookup result inherits. */
-extern struct loaded_l10nfile *
-_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list,
- const char *dirlist, size_t dirlist_len, int mask,
- const char *language, const char *territory,
- const char *codeset, const char *normalized_codeset,
- const char *modifier, const char *special,
- const char *sponsor, const char *revision,
- const char *filename, int do_allocate);
-
-/* Lookup the real locale name for a locale alias NAME, or NULL if
- NAME is not a locale alias (but possibly a real locale name).
- The return value is statically allocated and must not be freed. */
-extern const char *_nl_expand_alias (const char *name);
-
-/* Split a locale name NAME into its pieces: language, modifier,
- territory, codeset, special, sponsor, revision.
- NAME gets destructively modified: NUL bytes are inserted here and
- there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY,
- *CODESET, *SPECIAL, *SPONSOR, *REVISION gets assigned either a
- pointer into the old NAME string, or NULL. *NORMALIZED_CODESET
- gets assigned the expanded *CODESET, if it is different from *CODESET;
- this one is dynamically allocated and has to be freed by the caller.
- The return value is a bitmask, where each bit corresponds to one
- filled-in value:
- XPG_MODIFIER, CEN_AUDIENCE for *MODIFIER,
- TERRITORY for *TERRITORY,
- XPG_CODESET for *CODESET,
- XPG_NORM_CODESET for *NORMALIZED_CODESET,
- CEN_SPECIAL for *SPECIAL,
- CEN_SPONSOR for *SPONSOR,
- CEN_REVISION for *REVISION.
- */
-extern int _nl_explode_name (char *name, const char **language,
- const char **modifier, const char **territory,
- const char **codeset,
- const char **normalized_codeset,
- const char **special, const char **sponsor,
- const char **revision);
-
-/* Split a locale name NAME into a leading language part and all the
- rest. Return a pointer to the first character after the language,
- i.e. to the first byte of the rest. */
-extern char *_nl_find_language (const char *name);
-
-#endif /* loadinfo.h */
diff --git a/navit/support/gettext_intl/loadmsgcat.c b/navit/support/gettext_intl/loadmsgcat.c
deleted file mode 100644
index 55208667f..000000000
--- a/navit/support/gettext_intl/loadmsgcat.c
+++ /dev/null
@@ -1,1423 +0,0 @@
-/* Load needed message catalogs.
- Copyright (C) 1995-1999, 2000-2004 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. */
-
-/* Tell glibc's <string.h> to provide a prototype for mempcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifdef __GNUC__
-# undef alloca
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# if defined HAVE_ALLOCA_H || defined _LIBC
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca
-char *alloca ();
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#include <string.h>
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#ifdef _LIBC
-# include <langinfo.h>
-# include <locale.h>
-#endif
-
-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
- || (defined _LIBC && defined _POSIX_MAPPED_FILES)
-# include <sys/mman.h>
-# undef HAVE_MMAP
-# define HAVE_MMAP 1
-#else
-# undef HAVE_MMAP
-#endif
-
-#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC
-# include <stdint.h>
-#endif
-#if defined HAVE_INTTYPES_H || defined _LIBC
-# include <inttypes.h>
-#endif
-
-#include "gmo.h"
-#include "gettextP.h"
-#include "hash-string.h"
-#include "plural-exp.h"
-
-#ifdef _LIBC
-# include "../locale/localeinfo.h"
-#endif
-
-/* Provide fallback values for macros that ought to be defined in <inttypes.h>.
- Note that our fallback values need not be literal strings, because we don't
- use them with preprocessor string concatenation. */
-#if !defined PRId8 || PRI_MACROS_BROKEN
-# undef PRId8
-# define PRId8 "d"
-#endif
-#if !defined PRIi8 || PRI_MACROS_BROKEN
-# undef PRIi8
-# define PRIi8 "i"
-#endif
-#if !defined PRIo8 || PRI_MACROS_BROKEN
-# undef PRIo8
-# define PRIo8 "o"
-#endif
-#if !defined PRIu8 || PRI_MACROS_BROKEN
-# undef PRIu8
-# define PRIu8 "u"
-#endif
-#if !defined PRIx8 || PRI_MACROS_BROKEN
-# undef PRIx8
-# define PRIx8 "x"
-#endif
-#if !defined PRIX8 || PRI_MACROS_BROKEN
-# undef PRIX8
-# define PRIX8 "X"
-#endif
-#if !defined PRId16 || PRI_MACROS_BROKEN
-# undef PRId16
-# define PRId16 "d"
-#endif
-#if !defined PRIi16 || PRI_MACROS_BROKEN
-# undef PRIi16
-# define PRIi16 "i"
-#endif
-#if !defined PRIo16 || PRI_MACROS_BROKEN
-# undef PRIo16
-# define PRIo16 "o"
-#endif
-#if !defined PRIu16 || PRI_MACROS_BROKEN
-# undef PRIu16
-# define PRIu16 "u"
-#endif
-#if !defined PRIx16 || PRI_MACROS_BROKEN
-# undef PRIx16
-# define PRIx16 "x"
-#endif
-#if !defined PRIX16 || PRI_MACROS_BROKEN
-# undef PRIX16
-# define PRIX16 "X"
-#endif
-#if !defined PRId32 || PRI_MACROS_BROKEN
-# undef PRId32
-# define PRId32 "d"
-#endif
-#if !defined PRIi32 || PRI_MACROS_BROKEN
-# undef PRIi32
-# define PRIi32 "i"
-#endif
-#if !defined PRIo32 || PRI_MACROS_BROKEN
-# undef PRIo32
-# define PRIo32 "o"
-#endif
-#if !defined PRIu32 || PRI_MACROS_BROKEN
-# undef PRIu32
-# define PRIu32 "u"
-#endif
-#if !defined PRIx32 || PRI_MACROS_BROKEN
-# undef PRIx32
-# define PRIx32 "x"
-#endif
-#if !defined PRIX32 || PRI_MACROS_BROKEN
-# undef PRIX32
-# define PRIX32 "X"
-#endif
-#if !defined PRId64 || PRI_MACROS_BROKEN
-# undef PRId64
-# define PRId64 (sizeof (long) == 8 ? "ld" : "lld")
-#endif
-#if !defined PRIi64 || PRI_MACROS_BROKEN
-# undef PRIi64
-# define PRIi64 (sizeof (long) == 8 ? "li" : "lli")
-#endif
-#if !defined PRIo64 || PRI_MACROS_BROKEN
-# undef PRIo64
-# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo")
-#endif
-#if !defined PRIu64 || PRI_MACROS_BROKEN
-# undef PRIu64
-# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu")
-#endif
-#if !defined PRIx64 || PRI_MACROS_BROKEN
-# undef PRIx64
-# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx")
-#endif
-#if !defined PRIX64 || PRI_MACROS_BROKEN
-# undef PRIX64
-# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX")
-#endif
-#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN
-# undef PRIdLEAST8
-# define PRIdLEAST8 "d"
-#endif
-#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN
-# undef PRIiLEAST8
-# define PRIiLEAST8 "i"
-#endif
-#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN
-# undef PRIoLEAST8
-# define PRIoLEAST8 "o"
-#endif
-#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN
-# undef PRIuLEAST8
-# define PRIuLEAST8 "u"
-#endif
-#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN
-# undef PRIxLEAST8
-# define PRIxLEAST8 "x"
-#endif
-#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN
-# undef PRIXLEAST8
-# define PRIXLEAST8 "X"
-#endif
-#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN
-# undef PRIdLEAST16
-# define PRIdLEAST16 "d"
-#endif
-#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN
-# undef PRIiLEAST16
-# define PRIiLEAST16 "i"
-#endif
-#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN
-# undef PRIoLEAST16
-# define PRIoLEAST16 "o"
-#endif
-#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN
-# undef PRIuLEAST16
-# define PRIuLEAST16 "u"
-#endif
-#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN
-# undef PRIxLEAST16
-# define PRIxLEAST16 "x"
-#endif
-#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN
-# undef PRIXLEAST16
-# define PRIXLEAST16 "X"
-#endif
-#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN
-# undef PRIdLEAST32
-# define PRIdLEAST32 "d"
-#endif
-#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN
-# undef PRIiLEAST32
-# define PRIiLEAST32 "i"
-#endif
-#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN
-# undef PRIoLEAST32
-# define PRIoLEAST32 "o"
-#endif
-#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN
-# undef PRIuLEAST32
-# define PRIuLEAST32 "u"
-#endif
-#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN
-# undef PRIxLEAST32
-# define PRIxLEAST32 "x"
-#endif
-#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN
-# undef PRIXLEAST32
-# define PRIXLEAST32 "X"
-#endif
-#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN
-# undef PRIdLEAST64
-# define PRIdLEAST64 PRId64
-#endif
-#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN
-# undef PRIiLEAST64
-# define PRIiLEAST64 PRIi64
-#endif
-#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN
-# undef PRIoLEAST64
-# define PRIoLEAST64 PRIo64
-#endif
-#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN
-# undef PRIuLEAST64
-# define PRIuLEAST64 PRIu64
-#endif
-#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN
-# undef PRIxLEAST64
-# define PRIxLEAST64 PRIx64
-#endif
-#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN
-# undef PRIXLEAST64
-# define PRIXLEAST64 PRIX64
-#endif
-#if !defined PRIdFAST8 || PRI_MACROS_BROKEN
-# undef PRIdFAST8
-# define PRIdFAST8 "d"
-#endif
-#if !defined PRIiFAST8 || PRI_MACROS_BROKEN
-# undef PRIiFAST8
-# define PRIiFAST8 "i"
-#endif
-#if !defined PRIoFAST8 || PRI_MACROS_BROKEN
-# undef PRIoFAST8
-# define PRIoFAST8 "o"
-#endif
-#if !defined PRIuFAST8 || PRI_MACROS_BROKEN
-# undef PRIuFAST8
-# define PRIuFAST8 "u"
-#endif
-#if !defined PRIxFAST8 || PRI_MACROS_BROKEN
-# undef PRIxFAST8
-# define PRIxFAST8 "x"
-#endif
-#if !defined PRIXFAST8 || PRI_MACROS_BROKEN
-# undef PRIXFAST8
-# define PRIXFAST8 "X"
-#endif
-#if !defined PRIdFAST16 || PRI_MACROS_BROKEN
-# undef PRIdFAST16
-# define PRIdFAST16 "d"
-#endif
-#if !defined PRIiFAST16 || PRI_MACROS_BROKEN
-# undef PRIiFAST16
-# define PRIiFAST16 "i"
-#endif
-#if !defined PRIoFAST16 || PRI_MACROS_BROKEN
-# undef PRIoFAST16
-# define PRIoFAST16 "o"
-#endif
-#if !defined PRIuFAST16 || PRI_MACROS_BROKEN
-# undef PRIuFAST16
-# define PRIuFAST16 "u"
-#endif
-#if !defined PRIxFAST16 || PRI_MACROS_BROKEN
-# undef PRIxFAST16
-# define PRIxFAST16 "x"
-#endif
-#if !defined PRIXFAST16 || PRI_MACROS_BROKEN
-# undef PRIXFAST16
-# define PRIXFAST16 "X"
-#endif
-#if !defined PRIdFAST32 || PRI_MACROS_BROKEN
-# undef PRIdFAST32
-# define PRIdFAST32 "d"
-#endif
-#if !defined PRIiFAST32 || PRI_MACROS_BROKEN
-# undef PRIiFAST32
-# define PRIiFAST32 "i"
-#endif
-#if !defined PRIoFAST32 || PRI_MACROS_BROKEN
-# undef PRIoFAST32
-# define PRIoFAST32 "o"
-#endif
-#if !defined PRIuFAST32 || PRI_MACROS_BROKEN
-# undef PRIuFAST32
-# define PRIuFAST32 "u"
-#endif
-#if !defined PRIxFAST32 || PRI_MACROS_BROKEN
-# undef PRIxFAST32
-# define PRIxFAST32 "x"
-#endif
-#if !defined PRIXFAST32 || PRI_MACROS_BROKEN
-# undef PRIXFAST32
-# define PRIXFAST32 "X"
-#endif
-#if !defined PRIdFAST64 || PRI_MACROS_BROKEN
-# undef PRIdFAST64
-# define PRIdFAST64 PRId64
-#endif
-#if !defined PRIiFAST64 || PRI_MACROS_BROKEN
-# undef PRIiFAST64
-# define PRIiFAST64 PRIi64
-#endif
-#if !defined PRIoFAST64 || PRI_MACROS_BROKEN
-# undef PRIoFAST64
-# define PRIoFAST64 PRIo64
-#endif
-#if !defined PRIuFAST64 || PRI_MACROS_BROKEN
-# undef PRIuFAST64
-# define PRIuFAST64 PRIu64
-#endif
-#if !defined PRIxFAST64 || PRI_MACROS_BROKEN
-# undef PRIxFAST64
-# define PRIxFAST64 PRIx64
-#endif
-#if !defined PRIXFAST64 || PRI_MACROS_BROKEN
-# undef PRIXFAST64
-# define PRIXFAST64 PRIX64
-#endif
-#if !defined PRIdMAX || PRI_MACROS_BROKEN
-# undef PRIdMAX
-# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld")
-#endif
-#if !defined PRIiMAX || PRI_MACROS_BROKEN
-# undef PRIiMAX
-# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli")
-#endif
-#if !defined PRIoMAX || PRI_MACROS_BROKEN
-# undef PRIoMAX
-# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo")
-#endif
-#if !defined PRIuMAX || PRI_MACROS_BROKEN
-# undef PRIuMAX
-# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu")
-#endif
-#if !defined PRIxMAX || PRI_MACROS_BROKEN
-# undef PRIxMAX
-# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx")
-#endif
-#if !defined PRIXMAX || PRI_MACROS_BROKEN
-# undef PRIXMAX
-# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX")
-#endif
-#if !defined PRIdPTR || PRI_MACROS_BROKEN
-# undef PRIdPTR
-# define PRIdPTR \
- (sizeof (void *) == sizeof (long) ? "ld" : \
- sizeof (void *) == sizeof (int) ? "d" : \
- "lld")
-#endif
-#if !defined PRIiPTR || PRI_MACROS_BROKEN
-# undef PRIiPTR
-# define PRIiPTR \
- (sizeof (void *) == sizeof (long) ? "li" : \
- sizeof (void *) == sizeof (int) ? "i" : \
- "lli")
-#endif
-#if !defined PRIoPTR || PRI_MACROS_BROKEN
-# undef PRIoPTR
-# define PRIoPTR \
- (sizeof (void *) == sizeof (long) ? "lo" : \
- sizeof (void *) == sizeof (int) ? "o" : \
- "llo")
-#endif
-#if !defined PRIuPTR || PRI_MACROS_BROKEN
-# undef PRIuPTR
-# define PRIuPTR \
- (sizeof (void *) == sizeof (long) ? "lu" : \
- sizeof (void *) == sizeof (int) ? "u" : \
- "llu")
-#endif
-#if !defined PRIxPTR || PRI_MACROS_BROKEN
-# undef PRIxPTR
-# define PRIxPTR \
- (sizeof (void *) == sizeof (long) ? "lx" : \
- sizeof (void *) == sizeof (int) ? "x" : \
- "llx")
-#endif
-#if !defined PRIXPTR || PRI_MACROS_BROKEN
-# undef PRIXPTR
-# define PRIXPTR \
- (sizeof (void *) == sizeof (long) ? "lX" : \
- sizeof (void *) == sizeof (int) ? "X" : \
- "llX")
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ISO C functions. This is required by the standard
- because some ISO C functions will require linking with this object
- file and the name space must not be polluted. */
-# define open __open
-# define close __close
-# define read __read
-# define mmap __mmap
-# define munmap __munmap
-#endif
-
-/* For those losing systems which don't have `alloca' we have to add
- some additional code emulating it. */
-#ifdef HAVE_ALLOCA
-# define freea(p) /* nothing */
-#else
-# define alloca(n) malloc (n)
-# define freea(p) free (p)
-#endif
-
-/* For systems that distinguish between text and binary I/O.
- O_BINARY is usually declared in <fcntl.h>. */
-#if !defined O_BINARY && defined _O_BINARY
- /* For MSC-compatible compilers. */
-# define O_BINARY _O_BINARY
-# define O_TEXT _O_TEXT
-#endif
-#ifdef __BEOS__
- /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */
-# undef O_BINARY
-# undef O_TEXT
-#endif
-/* On reasonable systems, binary I/O is the default. */
-#ifndef O_BINARY
-# define O_BINARY 0
-#endif
-
-
-/* We need a sign, whether a new catalog was loaded, which can be associated
- with all translations. This is important if the translations are
- cached by one of GCC's features. */
-int _nl_msg_cat_cntr;
-
-
-/* Expand a system dependent string segment. Return NULL if unsupported. */
-static const char *
-get_sysdep_segment_value (const char *name)
-{
- /* Test for an ISO C 99 section 7.8.1 format string directive.
- Syntax:
- P R I { d | i | o | u | x | X }
- { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */
- /* We don't use a table of 14 times 6 'const char *' strings here, because
- data relocations cost startup time. */
- if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I')
- {
- if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u'
- || name[3] == 'x' || name[3] == 'X')
- {
- if (name[4] == '8' && name[5] == '\0')
- {
- if (name[3] == 'd')
- return PRId8;
- if (name[3] == 'i')
- return PRIi8;
- if (name[3] == 'o')
- return PRIo8;
- if (name[3] == 'u')
- return PRIu8;
- if (name[3] == 'x')
- return PRIx8;
- if (name[3] == 'X')
- return PRIX8;
- abort ();
- }
- if (name[4] == '1' && name[5] == '6' && name[6] == '\0')
- {
- if (name[3] == 'd')
- return PRId16;
- if (name[3] == 'i')
- return PRIi16;
- if (name[3] == 'o')
- return PRIo16;
- if (name[3] == 'u')
- return PRIu16;
- if (name[3] == 'x')
- return PRIx16;
- if (name[3] == 'X')
- return PRIX16;
- abort ();
- }
- if (name[4] == '3' && name[5] == '2' && name[6] == '\0')
- {
- if (name[3] == 'd')
- return PRId32;
- if (name[3] == 'i')
- return PRIi32;
- if (name[3] == 'o')
- return PRIo32;
- if (name[3] == 'u')
- return PRIu32;
- if (name[3] == 'x')
- return PRIx32;
- if (name[3] == 'X')
- return PRIX32;
- abort ();
- }
- if (name[4] == '6' && name[5] == '4' && name[6] == '\0')
- {
- if (name[3] == 'd')
- return PRId64;
- if (name[3] == 'i')
- return PRIi64;
- if (name[3] == 'o')
- return PRIo64;
- if (name[3] == 'u')
- return PRIu64;
- if (name[3] == 'x')
- return PRIx64;
- if (name[3] == 'X')
- return PRIX64;
- abort ();
- }
- if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A'
- && name[7] == 'S' && name[8] == 'T')
- {
- if (name[9] == '8' && name[10] == '\0')
- {
- if (name[3] == 'd')
- return PRIdLEAST8;
- if (name[3] == 'i')
- return PRIiLEAST8;
- if (name[3] == 'o')
- return PRIoLEAST8;
- if (name[3] == 'u')
- return PRIuLEAST8;
- if (name[3] == 'x')
- return PRIxLEAST8;
- if (name[3] == 'X')
- return PRIXLEAST8;
- abort ();
- }
- if (name[9] == '1' && name[10] == '6' && name[11] == '\0')
- {
- if (name[3] == 'd')
- return PRIdLEAST16;
- if (name[3] == 'i')
- return PRIiLEAST16;
- if (name[3] == 'o')
- return PRIoLEAST16;
- if (name[3] == 'u')
- return PRIuLEAST16;
- if (name[3] == 'x')
- return PRIxLEAST16;
- if (name[3] == 'X')
- return PRIXLEAST16;
- abort ();
- }
- if (name[9] == '3' && name[10] == '2' && name[11] == '\0')
- {
- if (name[3] == 'd')
- return PRIdLEAST32;
- if (name[3] == 'i')
- return PRIiLEAST32;
- if (name[3] == 'o')
- return PRIoLEAST32;
- if (name[3] == 'u')
- return PRIuLEAST32;
- if (name[3] == 'x')
- return PRIxLEAST32;
- if (name[3] == 'X')
- return PRIXLEAST32;
- abort ();
- }
- if (name[9] == '6' && name[10] == '4' && name[11] == '\0')
- {
- if (name[3] == 'd')
- return PRIdLEAST64;
- if (name[3] == 'i')
- return PRIiLEAST64;
- if (name[3] == 'o')
- return PRIoLEAST64;
- if (name[3] == 'u')
- return PRIuLEAST64;
- if (name[3] == 'x')
- return PRIxLEAST64;
- if (name[3] == 'X')
- return PRIXLEAST64;
- abort ();
- }
- }
- if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S'
- && name[7] == 'T')
- {
- if (name[8] == '8' && name[9] == '\0')
- {
- if (name[3] == 'd')
- return PRIdFAST8;
- if (name[3] == 'i')
- return PRIiFAST8;
- if (name[3] == 'o')
- return PRIoFAST8;
- if (name[3] == 'u')
- return PRIuFAST8;
- if (name[3] == 'x')
- return PRIxFAST8;
- if (name[3] == 'X')
- return PRIXFAST8;
- abort ();
- }
- if (name[8] == '1' && name[9] == '6' && name[10] == '\0')
- {
- if (name[3] == 'd')
- return PRIdFAST16;
- if (name[3] == 'i')
- return PRIiFAST16;
- if (name[3] == 'o')
- return PRIoFAST16;
- if (name[3] == 'u')
- return PRIuFAST16;
- if (name[3] == 'x')
- return PRIxFAST16;
- if (name[3] == 'X')
- return PRIXFAST16;
- abort ();
- }
- if (name[8] == '3' && name[9] == '2' && name[10] == '\0')
- {
- if (name[3] == 'd')
- return PRIdFAST32;
- if (name[3] == 'i')
- return PRIiFAST32;
- if (name[3] == 'o')
- return PRIoFAST32;
- if (name[3] == 'u')
- return PRIuFAST32;
- if (name[3] == 'x')
- return PRIxFAST32;
- if (name[3] == 'X')
- return PRIXFAST32;
- abort ();
- }
- if (name[8] == '6' && name[9] == '4' && name[10] == '\0')
- {
- if (name[3] == 'd')
- return PRIdFAST64;
- if (name[3] == 'i')
- return PRIiFAST64;
- if (name[3] == 'o')
- return PRIoFAST64;
- if (name[3] == 'u')
- return PRIuFAST64;
- if (name[3] == 'x')
- return PRIxFAST64;
- if (name[3] == 'X')
- return PRIXFAST64;
- abort ();
- }
- }
- if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X'
- && name[7] == '\0')
- {
- if (name[3] == 'd')
- return PRIdMAX;
- if (name[3] == 'i')
- return PRIiMAX;
- if (name[3] == 'o')
- return PRIoMAX;
- if (name[3] == 'u')
- return PRIuMAX;
- if (name[3] == 'x')
- return PRIxMAX;
- if (name[3] == 'X')
- return PRIXMAX;
- abort ();
- }
- if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R'
- && name[7] == '\0')
- {
- if (name[3] == 'd')
- return PRIdPTR;
- if (name[3] == 'i')
- return PRIiPTR;
- if (name[3] == 'o')
- return PRIoPTR;
- if (name[3] == 'u')
- return PRIuPTR;
- if (name[3] == 'x')
- return PRIxPTR;
- if (name[3] == 'X')
- return PRIXPTR;
- abort ();
- }
- }
- }
- /* Test for a glibc specific printf() format directive flag. */
- if (name[0] == 'I' && name[1] == '\0')
- {
-#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
- /* The 'I' flag, in numeric format directives, replaces ASCII digits
- with the 'outdigits' defined in the LC_CTYPE locale facet. This is
- used for Farsi (Persian) and maybe Arabic. */
- return "I";
-#else
- return "";
-#endif
- }
- /* Other system dependent strings are not valid. */
- return NULL;
-}
-
-/* Initialize the codeset dependent parts of an opened message catalog.
- Return the header entry. */
-const char *
-internal_function
-_nl_init_domain_conv (struct loaded_l10nfile *domain_file,
- struct loaded_domain *domain,
- struct binding *domainbinding)
-{
- /* Find out about the character set the file is encoded with.
- This can be found (in textual form) in the entry "". If this
- entry does not exist or if this does not contain the `charset='
- information, we will assume the charset matches the one the
- current locale and we don't have to perform any conversion. */
- char *nullentry;
- size_t nullentrylen;
-
- /* Preinitialize fields, to avoid recursion during _nl_find_msg. */
- domain->codeset_cntr =
- (domainbinding != NULL ? domainbinding->codeset_cntr : 0);
-#ifdef _LIBC
- domain->conv = (__gconv_t) -1;
-#else
-# if HAVE_ICONV
- domain->conv = (iconv_t) -1;
-# endif
-#endif
- domain->conv_tab = NULL;
-
- /* Get the header entry. */
- nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen);
-
- if (nullentry != NULL)
- {
-#if defined _LIBC || HAVE_ICONV
- const char *charsetstr;
-
- charsetstr = strstr (nullentry, "charset=");
- if (charsetstr != NULL)
- {
- size_t len;
- char *charset;
- const char *outcharset;
-
- charsetstr += strlen ("charset=");
- len = strcspn (charsetstr, " \t\n");
-
- charset = (char *) alloca (len + 1);
-# if defined _LIBC || HAVE_MEMPCPY
- *((char *) mempcpy (charset, charsetstr, len)) = '\0';
-# else
- memcpy (charset, charsetstr, len);
- charset[len] = '\0';
-# endif
-
- /* The output charset should normally be determined by the
- locale. But sometimes the locale is not used or not correctly
- set up, so we provide a possibility for the user to override
- this. Moreover, the value specified through
- bind_textdomain_codeset overrides both. */
- if (domainbinding != NULL && domainbinding->codeset != NULL)
- outcharset = domainbinding->codeset;
- else
- {
- outcharset = getenv ("OUTPUT_CHARSET");
- if (outcharset == NULL || outcharset[0] == '\0')
- {
-# ifdef _LIBC
- outcharset = _NL_CURRENT (LC_CTYPE, CODESET);
-# else
-# if HAVE_ICONV
- extern const char *locale_charset (void);
- outcharset = locale_charset ();
-# endif
-# endif
- }
- }
-
-# ifdef _LIBC
- /* We always want to use transliteration. */
- outcharset = norm_add_slashes (outcharset, "TRANSLIT");
- charset = norm_add_slashes (charset, NULL);
- if (__gconv_open (outcharset, charset, &domain->conv,
- GCONV_AVOID_NOCONV)
- != __GCONV_OK)
- domain->conv = (__gconv_t) -1;
-# else
-# if HAVE_ICONV
- /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
- we want to use transliteration. */
-# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \
- || _LIBICONV_VERSION >= 0x0105
- if (strchr (outcharset, '/') == NULL)
- {
- char *tmp;
-
- len = strlen (outcharset);
- tmp = (char *) alloca (len + 10 + 1);
- memcpy (tmp, outcharset, len);
- memcpy (tmp + len, "//TRANSLIT", 10 + 1);
- outcharset = tmp;
-
- domain->conv = iconv_open (outcharset, charset);
-
- freea (outcharset);
- }
- else
-# endif
- domain->conv = iconv_open (outcharset, charset);
-# endif
-# endif
-
- freea (charset);
- }
-#endif /* _LIBC || HAVE_ICONV */
- }
-
- return nullentry;
-}
-
-/* Frees the codeset dependent parts of an opened message catalog. */
-void
-internal_function
-_nl_free_domain_conv (struct loaded_domain *domain)
-{
- if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1)
- free (domain->conv_tab);
-
-#ifdef _LIBC
- if (domain->conv != (__gconv_t) -1)
- __gconv_close (domain->conv);
-#else
-# if HAVE_ICONV
- if (domain->conv != (iconv_t) -1)
- iconv_close (domain->conv);
-# endif
-#endif
-}
-
-/* Load the message catalogs specified by FILENAME. If it is no valid
- message catalog do nothing. */
-void
-internal_function
-_nl_load_domain (struct loaded_l10nfile *domain_file,
- struct binding *domainbinding)
-{
- int fd;
- size_t size;
-#ifdef _LIBC
- struct stat64 st;
-#else
- struct stat st;
-#endif
- struct mo_file_header *data = (struct mo_file_header *) -1;
- int use_mmap = 0;
- struct loaded_domain *domain;
- int revision;
- const char *nullentry;
-
- domain_file->decided = 1;
- domain_file->data = NULL;
-
- /* Note that it would be useless to store domainbinding in domain_file
- because domainbinding might be == NULL now but != NULL later (after
- a call to bind_textdomain_codeset). */
-
- /* If the record does not represent a valid locale the FILENAME
- might be NULL. This can happen when according to the given
- specification the locale file name is different for XPG and CEN
- syntax. */
- if (domain_file->filename == NULL)
- return;
-
- /* Try to open the addressed file. */
- fd = open (domain_file->filename, O_RDONLY | O_BINARY);
- if (fd == -1)
- return;
-
- /* We must know about the size of the file. */
- if (
-#ifdef _LIBC
- __builtin_expect (fstat64 (fd, &st) != 0, 0)
-#else
- __builtin_expect (fstat (fd, &st) != 0, 0)
-#endif
- || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)
- || __builtin_expect (size < sizeof (struct mo_file_header), 0))
- {
- /* Something went wrong. */
- close (fd);
- return;
- }
-
-#ifdef HAVE_MMAP
- /* Now we are ready to load the file. If mmap() is available we try
- this first. If not available or it failed we try to load it. */
- data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
- MAP_PRIVATE, fd, 0);
-
- if (__builtin_expect (data != (struct mo_file_header *) -1, 1))
- {
- /* mmap() call was successful. */
- close (fd);
- use_mmap = 1;
- }
-#endif
-
- /* If the data is not yet available (i.e. mmap'ed) we try to load
- it manually. */
- if (data == (struct mo_file_header *) -1)
- {
- size_t to_read;
- char *read_ptr;
-
- data = (struct mo_file_header *) malloc (size);
- if (data == NULL)
- return;
-
- to_read = size;
- read_ptr = (char *) data;
- do
- {
- long int nb = (long int) read (fd, read_ptr, to_read);
- if (nb <= 0)
- {
-#ifdef EINTR
- if (nb == -1 && errno == EINTR)
- continue;
-#endif
- close (fd);
- return;
- }
- read_ptr += nb;
- to_read -= nb;
- }
- while (to_read > 0);
-
- close (fd);
- }
-
- /* Using the magic number we can test whether it really is a message
- catalog file. */
- if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED,
- 0))
- {
- /* The magic number is wrong: not a message catalog file. */
-#ifdef HAVE_MMAP
- if (use_mmap)
- munmap ((caddr_t) data, size);
- else
-#endif
- free (data);
- return;
- }
-
- domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
- if (domain == NULL)
- return;
- domain_file->data = domain;
-
- domain->data = (char *) data;
- domain->use_mmap = use_mmap;
- domain->mmap_size = size;
- domain->must_swap = data->magic != _MAGIC;
- domain->malloced = NULL;
-
- /* Fill in the information about the available tables. */
- revision = W (domain->must_swap, data->revision);
- /* We support only the major revisions 0 and 1. */
- switch (revision >> 16)
- {
- case 0:
- case 1:
- domain->nstrings = W (domain->must_swap, data->nstrings);
- domain->orig_tab = (const struct string_desc *)
- ((char *) data + W (domain->must_swap, data->orig_tab_offset));
- domain->trans_tab = (const struct string_desc *)
- ((char *) data + W (domain->must_swap, data->trans_tab_offset));
- domain->hash_size = W (domain->must_swap, data->hash_tab_size);
- domain->hash_tab =
- (domain->hash_size > 2
- ? (const nls_uint32 *)
- ((char *) data + W (domain->must_swap, data->hash_tab_offset))
- : NULL);
- domain->must_swap_hash_tab = domain->must_swap;
-
- /* Now dispatch on the minor revision. */
- switch (revision & 0xffff)
- {
- case 0:
- domain->n_sysdep_strings = 0;
- domain->orig_sysdep_tab = NULL;
- domain->trans_sysdep_tab = NULL;
- break;
- case 1:
- default:
- {
- nls_uint32 n_sysdep_strings;
-
- if (domain->hash_tab == NULL)
- /* This is invalid. These minor revisions need a hash table. */
- goto invalid;
-
- n_sysdep_strings =
- W (domain->must_swap, data->n_sysdep_strings);
- if (n_sysdep_strings > 0)
- {
- nls_uint32 n_sysdep_segments;
- const struct sysdep_segment *sysdep_segments;
- const char **sysdep_segment_values;
- const nls_uint32 *orig_sysdep_tab;
- const nls_uint32 *trans_sysdep_tab;
- nls_uint32 n_inmem_sysdep_strings;
- size_t memneed;
- char *mem;
- struct sysdep_string_desc *inmem_orig_sysdep_tab;
- struct sysdep_string_desc *inmem_trans_sysdep_tab;
- nls_uint32 *inmem_hash_tab;
- unsigned int i, j;
-
- /* Get the values of the system dependent segments. */
- n_sysdep_segments =
- W (domain->must_swap, data->n_sysdep_segments);
- sysdep_segments = (const struct sysdep_segment *)
- ((char *) data
- + W (domain->must_swap, data->sysdep_segments_offset));
- sysdep_segment_values =
- alloca (n_sysdep_segments * sizeof (const char *));
- for (i = 0; i < n_sysdep_segments; i++)
- {
- const char *name =
- (char *) data
- + W (domain->must_swap, sysdep_segments[i].offset);
- nls_uint32 namelen =
- W (domain->must_swap, sysdep_segments[i].length);
-
- if (!(namelen > 0 && name[namelen - 1] == '\0'))
- {
- freea (sysdep_segment_values);
- goto invalid;
- }
-
- sysdep_segment_values[i] = get_sysdep_segment_value (name);
- }
-
- orig_sysdep_tab = (const nls_uint32 *)
- ((char *) data
- + W (domain->must_swap, data->orig_sysdep_tab_offset));
- trans_sysdep_tab = (const nls_uint32 *)
- ((char *) data
- + W (domain->must_swap, data->trans_sysdep_tab_offset));
-
- /* Compute the amount of additional memory needed for the
- system dependent strings and the augmented hash table.
- At the same time, also drop string pairs which refer to
- an undefined system dependent segment. */
- n_inmem_sysdep_strings = 0;
- memneed = domain->hash_size * sizeof (nls_uint32);
- for (i = 0; i < n_sysdep_strings; i++)
- {
- int valid = 1;
- size_t needs[2];
-
- for (j = 0; j < 2; j++)
- {
- const struct sysdep_string *sysdep_string =
- (const struct sysdep_string *)
- ((char *) data
- + W (domain->must_swap,
- j == 0
- ? orig_sysdep_tab[i]
- : trans_sysdep_tab[i]));
- size_t need = 0;
- const struct segment_pair *p = sysdep_string->segments;
-
- if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END)
- for (p = sysdep_string->segments;; p++)
- {
- nls_uint32 sysdepref;
-
- need += W (domain->must_swap, p->segsize);
-
- sysdepref = W (domain->must_swap, p->sysdepref);
- if (sysdepref == SEGMENTS_END)
- break;
-
- if (sysdepref >= n_sysdep_segments)
- {
- /* Invalid. */
- freea (sysdep_segment_values);
- goto invalid;
- }
-
- if (sysdep_segment_values[sysdepref] == NULL)
- {
- /* This particular string pair is invalid. */
- valid = 0;
- break;
- }
-
- need += strlen (sysdep_segment_values[sysdepref]);
- }
-
- needs[j] = need;
- if (!valid)
- break;
- }
-
- if (valid)
- {
- n_inmem_sysdep_strings++;
- memneed += needs[0] + needs[1];
- }
- }
- memneed += 2 * n_inmem_sysdep_strings
- * sizeof (struct sysdep_string_desc);
-
- if (n_inmem_sysdep_strings > 0)
- {
- unsigned int k;
-
- /* Allocate additional memory. */
- mem = (char *) malloc (memneed);
- if (mem == NULL)
- goto invalid;
-
- domain->malloced = mem;
- inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem;
- mem += n_inmem_sysdep_strings
- * sizeof (struct sysdep_string_desc);
- inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem;
- mem += n_inmem_sysdep_strings
- * sizeof (struct sysdep_string_desc);
- inmem_hash_tab = (nls_uint32 *) mem;
- mem += domain->hash_size * sizeof (nls_uint32);
-
- /* Compute the system dependent strings. */
- k = 0;
- for (i = 0; i < n_sysdep_strings; i++)
- {
- int valid = 1;
-
- for (j = 0; j < 2; j++)
- {
- const struct sysdep_string *sysdep_string =
- (const struct sysdep_string *)
- ((char *) data
- + W (domain->must_swap,
- j == 0
- ? orig_sysdep_tab[i]
- : trans_sysdep_tab[i]));
- const struct segment_pair *p =
- sysdep_string->segments;
-
- if (W (domain->must_swap, p->sysdepref)
- != SEGMENTS_END)
- for (p = sysdep_string->segments;; p++)
- {
- nls_uint32 sysdepref;
-
- sysdepref =
- W (domain->must_swap, p->sysdepref);
- if (sysdepref == SEGMENTS_END)
- break;
-
- if (sysdep_segment_values[sysdepref] == NULL)
- {
- /* This particular string pair is
- invalid. */
- valid = 0;
- break;
- }
- }
-
- if (!valid)
- break;
- }
-
- if (valid)
- {
- for (j = 0; j < 2; j++)
- {
- const struct sysdep_string *sysdep_string =
- (const struct sysdep_string *)
- ((char *) data
- + W (domain->must_swap,
- j == 0
- ? orig_sysdep_tab[i]
- : trans_sysdep_tab[i]));
- const char *static_segments =
- (char *) data
- + W (domain->must_swap, sysdep_string->offset);
- const struct segment_pair *p =
- sysdep_string->segments;
-
- /* Concatenate the segments, and fill
- inmem_orig_sysdep_tab[k] (for j == 0) and
- inmem_trans_sysdep_tab[k] (for j == 1). */
-
- struct sysdep_string_desc *inmem_tab_entry =
- (j == 0
- ? inmem_orig_sysdep_tab
- : inmem_trans_sysdep_tab)
- + k;
-
- if (W (domain->must_swap, p->sysdepref)
- == SEGMENTS_END)
- {
- /* Only one static segment. */
- inmem_tab_entry->length =
- W (domain->must_swap, p->segsize);
- inmem_tab_entry->pointer = static_segments;
- }
- else
- {
- inmem_tab_entry->pointer = mem;
-
- for (p = sysdep_string->segments;; p++)
- {
- nls_uint32 segsize =
- W (domain->must_swap, p->segsize);
- nls_uint32 sysdepref =
- W (domain->must_swap, p->sysdepref);
- size_t n;
-
- if (segsize > 0)
- {
- memcpy (mem, static_segments, segsize);
- mem += segsize;
- static_segments += segsize;
- }
-
- if (sysdepref == SEGMENTS_END)
- break;
-
- n = strlen (sysdep_segment_values[sysdepref]);
- memcpy (mem, sysdep_segment_values[sysdepref], n);
- mem += n;
- }
-
- inmem_tab_entry->length =
- mem - inmem_tab_entry->pointer;
- }
- }
-
- k++;
- }
- }
- if (k != n_inmem_sysdep_strings)
- abort ();
-
- /* Compute the augmented hash table. */
- for (i = 0; i < domain->hash_size; i++)
- inmem_hash_tab[i] =
- W (domain->must_swap_hash_tab, domain->hash_tab[i]);
- for (i = 0; i < n_inmem_sysdep_strings; i++)
- {
- const char *msgid = inmem_orig_sysdep_tab[i].pointer;
- nls_uint32 hash_val = hash_string (msgid);
- nls_uint32 idx = hash_val % domain->hash_size;
- nls_uint32 incr =
- 1 + (hash_val % (domain->hash_size - 2));
-
- for (;;)
- {
- if (inmem_hash_tab[idx] == 0)
- {
- /* Hash table entry is empty. Use it. */
- inmem_hash_tab[idx] = 1 + domain->nstrings + i;
- break;
- }
-
- if (idx >= domain->hash_size - incr)
- idx -= domain->hash_size - incr;
- else
- idx += incr;
- }
- }
-
- domain->n_sysdep_strings = n_inmem_sysdep_strings;
- domain->orig_sysdep_tab = inmem_orig_sysdep_tab;
- domain->trans_sysdep_tab = inmem_trans_sysdep_tab;
-
- domain->hash_tab = inmem_hash_tab;
- domain->must_swap_hash_tab = 0;
- }
- else
- {
- domain->n_sysdep_strings = 0;
- domain->orig_sysdep_tab = NULL;
- domain->trans_sysdep_tab = NULL;
- }
-
- freea (sysdep_segment_values);
- }
- else
- {
- domain->n_sysdep_strings = 0;
- domain->orig_sysdep_tab = NULL;
- domain->trans_sysdep_tab = NULL;
- }
- }
- break;
- }
- break;
- default:
- /* This is an invalid revision. */
- invalid:
- /* This is an invalid .mo file. */
- if (domain->malloced)
- free (domain->malloced);
-#ifdef HAVE_MMAP
- if (use_mmap)
- munmap ((caddr_t) data, size);
- else
-#endif
- free (data);
- free (domain);
- domain_file->data = NULL;
- return;
- }
-
- /* Now initialize the character set converter from the character set
- the file is encoded with (found in the header entry) to the domain's
- specified character set or the locale's character set. */
- nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding);
-
- /* Also look for a plural specification. */
- EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals);
-}
-
-
-#ifdef _LIBC
-void
-internal_function
-_nl_unload_domain (struct loaded_domain *domain)
-{
- if (domain->plural != &__gettext_germanic_plural)
- __gettext_free_exp (domain->plural);
-
- _nl_free_domain_conv (domain);
-
- if (domain->malloced)
- free (domain->malloced);
-
-# ifdef _POSIX_MAPPED_FILES
- if (domain->use_mmap)
- munmap ((caddr_t) domain->data, domain->mmap_size);
- else
-# endif /* _POSIX_MAPPED_FILES */
- free ((void *) domain->data);
-
- free (domain);
-}
-#endif
diff --git a/navit/support/gettext_intl/localcharset.c b/navit/support/gettext_intl/localcharset.c
deleted file mode 100644
index 4865f1037..000000000
--- a/navit/support/gettext_intl/localcharset.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/* Determine a canonical name for the current locale's character encoding.
-
- Copyright (C) 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. */
-
-/* Written by Bruno Haible <bruno@clisp.org>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* Specification. */
-#include "localcharset.h"
-
-#if HAVE_STDDEF_H
-# include <stddef.h>
-#endif
-
-#include <stdio.h>
-#if HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#if HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#if defined _WIN32 || defined __WIN32__
-# undef WIN32 /* avoid warning on mingw32 */
-# define WIN32
-#endif
-
-#if defined __EMX__
-/* Assume EMX program runs on OS/2, even if compiled under DOS. */
-# define OS2
-#endif
-
-#if !defined WIN32
-# if HAVE_LANGINFO_CODESET
-# include <langinfo.h>
-# else
-# if HAVE_SETLOCALE
-# include <locale.h>
-# endif
-# endif
-#elif defined WIN32
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-#endif
-#if defined OS2
-# define INCL_DOS
-# include <os2.h>
-#endif
-
-#if ENABLE_RELOCATABLE
-# include "relocatable.h"
-#else
-# define relocate(pathname) (pathname)
-#endif
-
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-#endif
-
-#ifndef DIRECTORY_SEPARATOR
-# define DIRECTORY_SEPARATOR '/'
-#endif
-
-#ifndef ISSLASH
-# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
-#endif
-
-#if HAVE_DECL_GETC_UNLOCKED
-# undef getc
-# define getc getc_unlocked
-#endif
-
-/* The following static variable is declared 'volatile' to avoid a
- possible multithread problem in the function get_charset_aliases. If we
- are running in a threaded environment, and if two threads initialize
- 'charset_aliases' simultaneously, both will produce the same value,
- and everything will be ok if the two assignments to 'charset_aliases'
- are atomic. But I don't know what will happen if the two assignments mix. */
-#if __STDC__ != 1
-# define volatile /* empty */
-#endif
-/* Pointer to the contents of the charset.alias file, if it has already been
- read, else NULL. Its format is:
- ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */
-static const char * volatile charset_aliases;
-
-/* Return a pointer to the contents of the charset.alias file. */
-static const char *
-get_charset_aliases ()
-{
- const char *cp;
-
- cp = charset_aliases;
- if (cp == NULL)
- {
-#if !(defined VMS || defined WIN32)
- FILE *fp;
- const char *dir = relocate (LIBDIR);
- const char *base = "charset.alias";
- char *file_name;
-
- /* Concatenate dir and base into freshly allocated file_name. */
- {
- size_t dir_len = strlen (dir);
- size_t base_len = strlen (base);
- int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
- file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
- if (file_name != NULL)
- {
- memcpy (file_name, dir, dir_len);
- if (add_slash)
- file_name[dir_len] = DIRECTORY_SEPARATOR;
- memcpy (file_name + dir_len + add_slash, base, base_len + 1);
- }
- }
-
- if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
- /* Out of memory or file not found, treat it as empty. */
- cp = "";
- else
- {
- /* Parse the file's contents. */
- int c;
- char buf1[50+1];
- char buf2[50+1];
- char *res_ptr = NULL;
- size_t res_size = 0;
- size_t l1, l2;
-
- for (;;)
- {
- c = getc (fp);
- if (c == EOF)
- break;
- if (c == '\n' || c == ' ' || c == '\t')
- continue;
- if (c == '#')
- {
- /* Skip comment, to end of line. */
- do
- c = getc (fp);
- while (!(c == EOF || c == '\n'));
- if (c == EOF)
- break;
- continue;
- }
- ungetc (c, fp);
- if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
- break;
- l1 = strlen (buf1);
- l2 = strlen (buf2);
- if (res_size == 0)
- {
- res_size = l1 + 1 + l2 + 1;
- res_ptr = (char *) malloc (res_size + 1);
- }
- else
- {
- res_size += l1 + 1 + l2 + 1;
- res_ptr = (char *) realloc (res_ptr, res_size + 1);
- }
- if (res_ptr == NULL)
- {
- /* Out of memory. */
- res_size = 0;
- break;
- }
- strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
- strcpy (res_ptr + res_size - (l2 + 1), buf2);
- }
- fclose (fp);
- if (res_size == 0)
- cp = "";
- else
- {
- *(res_ptr + res_size) = '\0';
- cp = res_ptr;
- }
- }
-
- if (file_name != NULL)
- free (file_name);
-
-#else
-
-# if defined VMS
- /* To avoid the troubles of an extra file charset.alias_vms in the
- sources of many GNU packages, simply inline the aliases here. */
- /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
- "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
- section 10.7 "Handling Different Character Sets". */
- cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
- "ISO8859-2" "\0" "ISO-8859-2" "\0"
- "ISO8859-5" "\0" "ISO-8859-5" "\0"
- "ISO8859-7" "\0" "ISO-8859-7" "\0"
- "ISO8859-8" "\0" "ISO-8859-8" "\0"
- "ISO8859-9" "\0" "ISO-8859-9" "\0"
- /* Japanese */
- "eucJP" "\0" "EUC-JP" "\0"
- "SJIS" "\0" "SHIFT_JIS" "\0"
- "DECKANJI" "\0" "DEC-KANJI" "\0"
- "SDECKANJI" "\0" "EUC-JP" "\0"
- /* Chinese */
- "eucTW" "\0" "EUC-TW" "\0"
- "DECHANYU" "\0" "DEC-HANYU" "\0"
- "DECHANZI" "\0" "GB2312" "\0"
- /* Korean */
- "DECKOREAN" "\0" "EUC-KR" "\0";
-# endif
-
-# if defined WIN32
- /* To avoid the troubles of installing a separate file in the same
- directory as the DLL and of retrieving the DLL's directory at
- runtime, simply inline the aliases here. */
-
- cp = "CP936" "\0" "GBK" "\0"
- "CP1361" "\0" "JOHAB" "\0"
- "CP20127" "\0" "ASCII" "\0"
- "CP20866" "\0" "KOI8-R" "\0"
- "CP21866" "\0" "KOI8-RU" "\0"
- "CP28591" "\0" "ISO-8859-1" "\0"
- "CP28592" "\0" "ISO-8859-2" "\0"
- "CP28593" "\0" "ISO-8859-3" "\0"
- "CP28594" "\0" "ISO-8859-4" "\0"
- "CP28595" "\0" "ISO-8859-5" "\0"
- "CP28596" "\0" "ISO-8859-6" "\0"
- "CP28597" "\0" "ISO-8859-7" "\0"
- "CP28598" "\0" "ISO-8859-8" "\0"
- "CP28599" "\0" "ISO-8859-9" "\0"
- "CP28605" "\0" "ISO-8859-15" "\0";
-# endif
-#endif
-
- charset_aliases = cp;
- }
-
- return cp;
-}
-
-/* Determine the current locale's character encoding, and canonicalize it
- into one of the canonical names listed in config.charset.
- The result must not be freed; it is statically allocated.
- If the canonical name cannot be determined, the result is a non-canonical
- name. */
-
-#ifdef STATIC
-STATIC
-#endif
-const char *
-locale_charset ()
-{
- const char *codeset;
- const char *aliases;
-
-#if !(defined WIN32 || defined OS2)
-
-# if HAVE_LANGINFO_CODESET
-
- /* Most systems support nl_langinfo (CODESET) nowadays. */
- codeset = nl_langinfo (CODESET);
-
-# else
-
- /* On old systems which lack it, use setlocale or getenv. */
- const char *locale = NULL;
-
- /* But most old systems don't have a complete set of locales. Some
- (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't
- use setlocale here; it would return "C" when it doesn't support the
- locale name the user has set. */
-# if HAVE_SETLOCALE && 0
- locale = setlocale (LC_CTYPE, NULL);
-# endif
- if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_ALL");
- if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_CTYPE");
- if (locale == NULL || locale[0] == '\0')
- locale = getenv ("LANG");
- }
- }
-
- /* On some old systems, one used to set locale = "iso8859_1". On others,
- you set it to "language_COUNTRY.charset". In any case, we resolve it
- through the charset.alias file. */
- codeset = locale;
-
-# endif
-
-#elif defined WIN32
-
- static char buf[2 + 10 + 1];
-
- /* Woe32 has a function returning the locale's codepage as a number. */
- sprintf (buf, "CP%u", GetACP ());
- codeset = buf;
-
-#elif defined OS2
-
- const char *locale;
- static char buf[2 + 10 + 1];
- ULONG cp[3];
- ULONG cplen;
-
- /* Allow user to override the codeset, as set in the operating system,
- with standard language environment variables. */
- locale = getenv ("LC_ALL");
- if (locale == NULL || locale[0] == '\0')
- {
- locale = getenv ("LC_CTYPE");
- if (locale == NULL || locale[0] == '\0')
- locale = getenv ("LANG");
- }
- if (locale != NULL && locale[0] != '\0')
- {
- /* If the locale name contains an encoding after the dot, return it. */
- const char *dot = strchr (locale, '.');
-
- if (dot != NULL)
- {
- const char *modifier;
-
- dot++;
- /* Look for the possible @... trailer and remove it, if any. */
- modifier = strchr (dot, '@');
- if (modifier == NULL)
- return dot;
- if (modifier - dot < sizeof (buf))
- {
- memcpy (buf, dot, modifier - dot);
- buf [modifier - dot] = '\0';
- return buf;
- }
- }
-
- /* Resolve through the charset.alias file. */
- codeset = locale;
- }
- else
- {
- /* OS/2 has a function returning the locale's codepage as a number. */
- if (DosQueryCp (sizeof (cp), cp, &cplen))
- codeset = "";
- else
- {
- sprintf (buf, "CP%u", cp[0]);
- codeset = buf;
- }
- }
-
-#endif
-
- if (codeset == NULL)
- /* The canonical name cannot be determined. */
- codeset = "";
-
- /* Resolve alias. */
- for (aliases = get_charset_aliases ();
- *aliases != '\0';
- aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
- if (strcmp (codeset, aliases) == 0
- || (aliases[0] == '*' && aliases[1] == '\0'))
- {
- codeset = aliases + strlen (aliases) + 1;
- break;
- }
-
- /* Don't return an empty string. GNU libc and GNU libiconv interpret
- the empty string as denoting "the locale's character encoding",
- thus GNU libiconv would call this function a second time. */
- if (codeset[0] == '\0')
- codeset = "ASCII";
-
- return codeset;
-}
diff --git a/navit/support/gettext_intl/localcharset.h b/navit/support/gettext_intl/localcharset.h
deleted file mode 100644
index 3b137e73c..000000000
--- a/navit/support/gettext_intl/localcharset.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Determine a canonical name for the current locale's character encoding.
- Copyright (C) 2000-2003 Free Software Foundation, Inc.
- This file is part of the GNU CHARSET Library.
-
- 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. */
-
-#ifndef _LOCALCHARSET_H
-#define _LOCALCHARSET_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Determine the current locale's character encoding, and canonicalize it
- into one of the canonical names listed in config.charset.
- The result must not be freed; it is statically allocated.
- If the canonical name cannot be determined, the result is a non-canonical
- name. */
-extern const char * locale_charset (void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _LOCALCHARSET_H */
diff --git a/navit/support/gettext_intl/locale.alias b/navit/support/gettext_intl/locale.alias
deleted file mode 100644
index bd6bb2562..000000000
--- a/navit/support/gettext_intl/locale.alias
+++ /dev/null
@@ -1,78 +0,0 @@
-# Locale name alias data base.
-# Copyright (C) 1996-2001,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.
-
-# The format of this file is the same as for the corresponding file of
-# the X Window System, which normally can be found in
-# /usr/lib/X11/locale/locale.alias
-# A single line contains two fields: an alias and a substitution value.
-# All entries are case independent.
-
-# Note: This file is far from being complete. If you have a value for
-# your own site which you think might be useful for others too, share
-# it with the rest of us. Send it using the `glibcbug' script to
-# bugs@gnu.org.
-
-# Packages using this file:
-
-bokmal nb_NO.ISO-8859-1
-bokmål nb_NO.ISO-8859-1
-catalan ca_ES.ISO-8859-1
-croatian hr_HR.ISO-8859-2
-czech cs_CZ.ISO-8859-2
-danish da_DK.ISO-8859-1
-dansk da_DK.ISO-8859-1
-deutsch de_DE.ISO-8859-1
-dutch nl_NL.ISO-8859-1
-eesti et_EE.ISO-8859-1
-estonian et_EE.ISO-8859-1
-finnish fi_FI.ISO-8859-1
-français fr_FR.ISO-8859-1
-french fr_FR.ISO-8859-1
-galego gl_ES.ISO-8859-1
-galician gl_ES.ISO-8859-1
-german de_DE.ISO-8859-1
-greek el_GR.ISO-8859-7
-hebrew he_IL.ISO-8859-8
-hrvatski hr_HR.ISO-8859-2
-hungarian hu_HU.ISO-8859-2
-icelandic is_IS.ISO-8859-1
-italian it_IT.ISO-8859-1
-japanese ja_JP.eucJP
-japanese.euc ja_JP.eucJP
-ja_JP ja_JP.eucJP
-ja_JP.ujis ja_JP.eucJP
-japanese.sjis ja_JP.SJIS
-korean ko_KR.eucKR
-korean.euc ko_KR.eucKR
-ko_KR ko_KR.eucKR
-lithuanian lt_LT.ISO-8859-13
-no_NO nb_NO.ISO-8859-1
-no_NO.ISO-8859-1 nb_NO.ISO-8859-1
-norwegian nb_NO.ISO-8859-1
-nynorsk nn_NO.ISO-8859-1
-polish pl_PL.ISO-8859-2
-portuguese pt_PT.ISO-8859-1
-romanian ro_RO.ISO-8859-2
-russian ru_RU.ISO-8859-5
-slovak sk_SK.ISO-8859-2
-slovene sl_SI.ISO-8859-2
-slovenian sl_SI.ISO-8859-2
-spanish es_ES.ISO-8859-1
-swedish sv_SE.ISO-8859-1
-thai th_TH.TIS-620
-turkish tr_TR.ISO-8859-9
diff --git a/navit/support/gettext_intl/localealias.c b/navit/support/gettext_intl/localealias.c
deleted file mode 100644
index ee27649af..000000000
--- a/navit/support/gettext_intl/localealias.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/* Handle aliases for locale names.
- Copyright (C) 1995-1999, 2000-2001, 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. */
-
-/* Tell glibc's <string.h> to provide a prototype for mempcpy().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-#include <stdlib.h>
-
-#include <ctype.h>
-#include <stdio.h>
-#if defined _LIBC || defined HAVE___FSETLOCKING
-# include <stdio_ext.h>
-#endif
-#include <sys/types.h>
-
-#ifdef __GNUC__
-# undef alloca
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# if defined HAVE_ALLOCA_H || defined _LIBC
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca
-char *alloca ();
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#include <string.h>
-
-#include "gettextP.h"
-
-#if ENABLE_RELOCATABLE
-# include "relocatable.h"
-#else
-# define relocate(pathname) (pathname)
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions. This is required by the standard
- because some ANSI C functions will require linking with this object
- file and the name space must not be polluted. */
-# define strcasecmp __strcasecmp
-
-# ifndef mempcpy
-# define mempcpy __mempcpy
-# endif
-# define HAVE_MEMPCPY 1
-# define HAVE___FSETLOCKING 1
-
-/* We need locking here since we can be called from different places. */
-# include <bits/libc-lock.h>
-
-__libc_lock_define_initialized (static, lock);
-#endif
-
-#ifndef internal_function
-# define internal_function
-#endif
-
-/* Some optimizations for glibc. */
-#ifdef _LIBC
-# define FEOF(fp) feof_unlocked (fp)
-# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp)
-#else
-# define FEOF(fp) feof (fp)
-# define FGETS(buf, n, fp) fgets (buf, n, fp)
-#endif
-
-/* For those losing systems which don't have `alloca' we have to add
- some additional code emulating it. */
-#ifdef HAVE_ALLOCA
-# define freea(p) /* nothing */
-#else
-# define alloca(n) malloc (n)
-# define freea(p) free (p)
-#endif
-
-#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED
-# undef fgets
-# define fgets(buf, len, s) fgets_unlocked (buf, len, s)
-#endif
-#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED
-# undef feof
-# define feof(s) feof_unlocked (s)
-#endif
-
-
-struct alias_map
-{
- const char *alias;
- const char *value;
-};
-
-
-#ifndef _LIBC
-# define libc_freeres_ptr(decl) decl
-#endif
-
-libc_freeres_ptr (static char *string_space);
-static size_t string_space_act;
-static size_t string_space_max;
-libc_freeres_ptr (static struct alias_map *map);
-static size_t nmap;
-static size_t maxmap;
-
-
-/* Prototypes for local functions. */
-static size_t read_alias_file (const char *fname, int fname_len)
- internal_function;
-static int extend_alias_table (void);
-static int alias_compare (const struct alias_map *map1,
- const struct alias_map *map2);
-
-
-const char *
-_nl_expand_alias (const char *name)
-{
- static const char *locale_alias_path;
- struct alias_map *retval;
- const char *result = NULL;
- size_t added;
-
-#ifdef _LIBC
- __libc_lock_lock (lock);
-#endif
-
- if (locale_alias_path == NULL)
- locale_alias_path = LOCALE_ALIAS_PATH;
-
- do
- {
- struct alias_map item;
-
- item.alias = name;
-
- if (nmap > 0)
- retval = (struct alias_map *) bsearch (&item, map, nmap,
- sizeof (struct alias_map),
- (int (*) (const void *,
- const void *)
- ) alias_compare);
- else
- retval = NULL;
-
- /* We really found an alias. Return the value. */
- if (retval != NULL)
- {
- result = retval->value;
- break;
- }
-
- /* Perhaps we can find another alias file. */
- added = 0;
- while (added == 0 && locale_alias_path[0] != '\0')
- {
- const char *start;
-
- while (locale_alias_path[0] == PATH_SEPARATOR)
- ++locale_alias_path;
- start = locale_alias_path;
-
- while (locale_alias_path[0] != '\0'
- && locale_alias_path[0] != PATH_SEPARATOR)
- ++locale_alias_path;
-
- if (start < locale_alias_path)
- added = read_alias_file (start, locale_alias_path - start);
- }
- }
- while (added != 0);
-
-#ifdef _LIBC
- __libc_lock_unlock (lock);
-#endif
-
- return result;
-}
-
-
-static size_t
-internal_function
-read_alias_file (const char *fname, int fname_len)
-{
- FILE *fp;
- char *full_fname;
- size_t added;
- static const char aliasfile[] = "/locale.alias";
-
- full_fname = (char *) alloca (fname_len + sizeof aliasfile);
-#ifdef HAVE_MEMPCPY
- mempcpy (mempcpy (full_fname, fname, fname_len),
- aliasfile, sizeof aliasfile);
-#else
- memcpy (full_fname, fname, fname_len);
- memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
-#endif
-
- fp = fopen (relocate (full_fname), "r");
- freea (full_fname);
- if (fp == NULL)
- return 0;
-
-#ifdef HAVE___FSETLOCKING
- /* No threads present. */
- __fsetlocking (fp, FSETLOCKING_BYCALLER);
-#endif
-
- added = 0;
- while (!FEOF (fp))
- {
- /* It is a reasonable approach to use a fix buffer here because
- a) we are only interested in the first two fields
- b) these fields must be usable as file names and so must not
- be that long
- We avoid a multi-kilobyte buffer here since this would use up
- stack space which we might not have if the program ran out of
- memory. */
- char buf[400];
- char *alias;
- char *value;
- char *cp;
-
- if (FGETS (buf, sizeof buf, fp) == NULL)
- /* EOF reached. */
- break;
-
- cp = buf;
- /* Ignore leading white space. */
- while (isspace ((unsigned char) cp[0]))
- ++cp;
-
- /* A leading '#' signals a comment line. */
- if (cp[0] != '\0' && cp[0] != '#')
- {
- alias = cp++;
- while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
- ++cp;
- /* Terminate alias name. */
- if (cp[0] != '\0')
- *cp++ = '\0';
-
- /* Now look for the beginning of the value. */
- while (isspace ((unsigned char) cp[0]))
- ++cp;
-
- if (cp[0] != '\0')
- {
- size_t alias_len;
- size_t value_len;
-
- value = cp++;
- while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
- ++cp;
- /* Terminate value. */
- if (cp[0] == '\n')
- {
- /* This has to be done to make the following test
- for the end of line possible. We are looking for
- the terminating '\n' which do not overwrite here. */
- *cp++ = '\0';
- *cp = '\n';
- }
- else if (cp[0] != '\0')
- *cp++ = '\0';
-
- if (nmap >= maxmap)
- if (__builtin_expect (extend_alias_table (), 0))
- return added;
-
- alias_len = strlen (alias) + 1;
- value_len = strlen (value) + 1;
-
- if (string_space_act + alias_len + value_len > string_space_max)
- {
- /* Increase size of memory pool. */
- size_t new_size = (string_space_max
- + (alias_len + value_len > 1024
- ? alias_len + value_len : 1024));
- char *new_pool = (char *) realloc (string_space, new_size);
- if (new_pool == NULL)
- return added;
-
- if (__builtin_expect (string_space != new_pool, 0))
- {
- size_t i;
-
- for (i = 0; i < nmap; i++)
- {
- map[i].alias += new_pool - string_space;
- map[i].value += new_pool - string_space;
- }
- }
-
- string_space = new_pool;
- string_space_max = new_size;
- }
-
- map[nmap].alias = memcpy (&string_space[string_space_act],
- alias, alias_len);
- string_space_act += alias_len;
-
- map[nmap].value = memcpy (&string_space[string_space_act],
- value, value_len);
- string_space_act += value_len;
-
- ++nmap;
- ++added;
- }
- }
-
- /* Possibly not the whole line fits into the buffer. Ignore
- the rest of the line. */
- while (strchr (buf, '\n') == NULL)
- if (FGETS (buf, sizeof buf, fp) == NULL)
- /* Make sure the inner loop will be left. The outer loop
- will exit at the `feof' test. */
- break;
- }
-
- /* Should we test for ferror()? I think we have to silently ignore
- errors. --drepper */
- fclose (fp);
-
- if (added > 0)
- qsort (map, nmap, sizeof (struct alias_map),
- (int (*) (const void *, const void *)) alias_compare);
-
- return added;
-}
-
-
-static int
-extend_alias_table ()
-{
- size_t new_size;
- struct alias_map *new_map;
-
- new_size = maxmap == 0 ? 100 : 2 * maxmap;
- new_map = (struct alias_map *) realloc (map, (new_size
- * sizeof (struct alias_map)));
- if (new_map == NULL)
- /* Simply don't extend: we don't have any more core. */
- return -1;
-
- map = new_map;
- maxmap = new_size;
- return 0;
-}
-
-
-static int
-alias_compare (const struct alias_map *map1, const struct alias_map *map2)
-{
-#if defined _LIBC || defined HAVE_STRCASECMP
- return strcasecmp (map1->alias, map2->alias);
-#else
- const unsigned char *p1 = (const unsigned char *) map1->alias;
- const unsigned char *p2 = (const unsigned char *) map2->alias;
- unsigned char c1, c2;
-
- if (p1 == p2)
- return 0;
-
- do
- {
- /* I know this seems to be odd but the tolower() function in
- some systems libc cannot handle nonalpha characters. */
- c1 = isupper (*p1) ? tolower (*p1) : *p1;
- c2 = isupper (*p2) ? tolower (*p2) : *p2;
- if (c1 == '\0')
- break;
- ++p1;
- ++p2;
- }
- while (c1 == c2);
-
- return c1 - c2;
-#endif
-}
diff --git a/navit/support/gettext_intl/localename.c b/navit/support/gettext_intl/localename.c
deleted file mode 100644
index 2706b0e46..000000000
--- a/navit/support/gettext_intl/localename.c
+++ /dev/null
@@ -1,1148 +0,0 @@
-/* Determine the current selected locale.
- Copyright (C) 1995-1999, 2000-2004 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. */
-
-/* Written by Ulrich Drepper <drepper@gnu.org>, 1995. */
-/* Win32 code written by Tor Lillqvist <tml@iki.fi>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <locale.h>
-
-#if defined _WIN32 || defined __WIN32__
-# undef WIN32 /* avoid warning on mingw32 */
-# define WIN32
-#endif
-
-#ifdef WIN32
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-/* List of language codes, sorted by value:
- 0x01 LANG_ARABIC
- 0x02 LANG_BULGARIAN
- 0x03 LANG_CATALAN
- 0x04 LANG_CHINESE
- 0x05 LANG_CZECH
- 0x06 LANG_DANISH
- 0x07 LANG_GERMAN
- 0x08 LANG_GREEK
- 0x09 LANG_ENGLISH
- 0x0a LANG_SPANISH
- 0x0b LANG_FINNISH
- 0x0c LANG_FRENCH
- 0x0d LANG_HEBREW
- 0x0e LANG_HUNGARIAN
- 0x0f LANG_ICELANDIC
- 0x10 LANG_ITALIAN
- 0x11 LANG_JAPANESE
- 0x12 LANG_KOREAN
- 0x13 LANG_DUTCH
- 0x14 LANG_NORWEGIAN
- 0x15 LANG_POLISH
- 0x16 LANG_PORTUGUESE
- 0x17 LANG_RHAETO_ROMANCE
- 0x18 LANG_ROMANIAN
- 0x19 LANG_RUSSIAN
- 0x1a LANG_CROATIAN == LANG_SERBIAN
- 0x1b LANG_SLOVAK
- 0x1c LANG_ALBANIAN
- 0x1d LANG_SWEDISH
- 0x1e LANG_THAI
- 0x1f LANG_TURKISH
- 0x20 LANG_URDU
- 0x21 LANG_INDONESIAN
- 0x22 LANG_UKRAINIAN
- 0x23 LANG_BELARUSIAN
- 0x24 LANG_SLOVENIAN
- 0x25 LANG_ESTONIAN
- 0x26 LANG_LATVIAN
- 0x27 LANG_LITHUANIAN
- 0x28 LANG_TAJIK
- 0x29 LANG_FARSI
- 0x2a LANG_VIETNAMESE
- 0x2b LANG_ARMENIAN
- 0x2c LANG_AZERI
- 0x2d LANG_BASQUE
- 0x2e LANG_SORBIAN
- 0x2f LANG_MACEDONIAN
- 0x30 LANG_SUTU
- 0x31 LANG_TSONGA
- 0x32 LANG_TSWANA
- 0x33 LANG_VENDA
- 0x34 LANG_XHOSA
- 0x35 LANG_ZULU
- 0x36 LANG_AFRIKAANS
- 0x37 LANG_GEORGIAN
- 0x38 LANG_FAEROESE
- 0x39 LANG_HINDI
- 0x3a LANG_MALTESE
- 0x3b LANG_SAAMI
- 0x3c LANG_GAELIC
- 0x3d LANG_YIDDISH
- 0x3e LANG_MALAY
- 0x3f LANG_KAZAK
- 0x40 LANG_KYRGYZ
- 0x41 LANG_SWAHILI
- 0x42 LANG_TURKMEN
- 0x43 LANG_UZBEK
- 0x44 LANG_TATAR
- 0x45 LANG_BENGALI
- 0x46 LANG_PUNJABI
- 0x47 LANG_GUJARATI
- 0x48 LANG_ORIYA
- 0x49 LANG_TAMIL
- 0x4a LANG_TELUGU
- 0x4b LANG_KANNADA
- 0x4c LANG_MALAYALAM
- 0x4d LANG_ASSAMESE
- 0x4e LANG_MARATHI
- 0x4f LANG_SANSKRIT
- 0x50 LANG_MONGOLIAN
- 0x51 LANG_TIBETAN
- 0x52 LANG_WELSH
- 0x53 LANG_CAMBODIAN
- 0x54 LANG_LAO
- 0x55 LANG_BURMESE
- 0x56 LANG_GALICIAN
- 0x57 LANG_KONKANI
- 0x58 LANG_MANIPURI
- 0x59 LANG_SINDHI
- 0x5a LANG_SYRIAC
- 0x5b LANG_SINHALESE
- 0x5c LANG_CHEROKEE
- 0x5d LANG_INUKTITUT
- 0x5e LANG_AMHARIC
- 0x5f LANG_TAMAZIGHT
- 0x60 LANG_KASHMIRI
- 0x61 LANG_NEPALI
- 0x62 LANG_FRISIAN
- 0x63 LANG_PASHTO
- 0x64 LANG_TAGALOG
- 0x65 LANG_DIVEHI
- 0x66 LANG_EDO
- 0x67 LANG_FULFULDE
- 0x68 LANG_HAUSA
- 0x69 LANG_IBIBIO
- 0x6a LANG_YORUBA
- 0x70 LANG_IGBO
- 0x71 LANG_KANURI
- 0x72 LANG_OROMO
- 0x73 LANG_TIGRINYA
- 0x74 LANG_GUARANI
- 0x75 LANG_HAWAIIAN
- 0x76 LANG_LATIN
- 0x77 LANG_SOMALI
- 0x78 LANG_YI
- 0x79 LANG_PAPIAMENTU
-*/
-/* Mingw headers don't have latest language and sublanguage codes. */
-# ifndef LANG_AFRIKAANS
-# define LANG_AFRIKAANS 0x36
-# endif
-# ifndef LANG_ALBANIAN
-# define LANG_ALBANIAN 0x1c
-# endif
-# ifndef LANG_AMHARIC
-# define LANG_AMHARIC 0x5e
-# endif
-# ifndef LANG_ARABIC
-# define LANG_ARABIC 0x01
-# endif
-# ifndef LANG_ARMENIAN
-# define LANG_ARMENIAN 0x2b
-# endif
-# ifndef LANG_ASSAMESE
-# define LANG_ASSAMESE 0x4d
-# endif
-# ifndef LANG_AZERI
-# define LANG_AZERI 0x2c
-# endif
-# ifndef LANG_BASQUE
-# define LANG_BASQUE 0x2d
-# endif
-# ifndef LANG_BELARUSIAN
-# define LANG_BELARUSIAN 0x23
-# endif
-# ifndef LANG_BENGALI
-# define LANG_BENGALI 0x45
-# endif
-# ifndef LANG_BURMESE
-# define LANG_BURMESE 0x55
-# endif
-# ifndef LANG_CAMBODIAN
-# define LANG_CAMBODIAN 0x53
-# endif
-# ifndef LANG_CATALAN
-# define LANG_CATALAN 0x03
-# endif
-# ifndef LANG_CHEROKEE
-# define LANG_CHEROKEE 0x5c
-# endif
-# ifndef LANG_DIVEHI
-# define LANG_DIVEHI 0x65
-# endif
-# ifndef LANG_EDO
-# define LANG_EDO 0x66
-# endif
-# ifndef LANG_ESTONIAN
-# define LANG_ESTONIAN 0x25
-# endif
-# ifndef LANG_FAEROESE
-# define LANG_FAEROESE 0x38
-# endif
-# ifndef LANG_FARSI
-# define LANG_FARSI 0x29
-# endif
-# ifndef LANG_FRISIAN
-# define LANG_FRISIAN 0x62
-# endif
-# ifndef LANG_FULFULDE
-# define LANG_FULFULDE 0x67
-# endif
-# ifndef LANG_GAELIC
-# define LANG_GAELIC 0x3c
-# endif
-# ifndef LANG_GALICIAN
-# define LANG_GALICIAN 0x56
-# endif
-# ifndef LANG_GEORGIAN
-# define LANG_GEORGIAN 0x37
-# endif
-# ifndef LANG_GUARANI
-# define LANG_GUARANI 0x74
-# endif
-# ifndef LANG_GUJARATI
-# define LANG_GUJARATI 0x47
-# endif
-# ifndef LANG_HAUSA
-# define LANG_HAUSA 0x68
-# endif
-# ifndef LANG_HAWAIIAN
-# define LANG_HAWAIIAN 0x75
-# endif
-# ifndef LANG_HEBREW
-# define LANG_HEBREW 0x0d
-# endif
-# ifndef LANG_HINDI
-# define LANG_HINDI 0x39
-# endif
-# ifndef LANG_IBIBIO
-# define LANG_IBIBIO 0x69
-# endif
-# ifndef LANG_IGBO
-# define LANG_IGBO 0x70
-# endif
-# ifndef LANG_INDONESIAN
-# define LANG_INDONESIAN 0x21
-# endif
-# ifndef LANG_INUKTITUT
-# define LANG_INUKTITUT 0x5d
-# endif
-# ifndef LANG_KANNADA
-# define LANG_KANNADA 0x4b
-# endif
-# ifndef LANG_KANURI
-# define LANG_KANURI 0x71
-# endif
-# ifndef LANG_KASHMIRI
-# define LANG_KASHMIRI 0x60
-# endif
-# ifndef LANG_KAZAK
-# define LANG_KAZAK 0x3f
-# endif
-# ifndef LANG_KONKANI
-# define LANG_KONKANI 0x57
-# endif
-# ifndef LANG_KYRGYZ
-# define LANG_KYRGYZ 0x40
-# endif
-# ifndef LANG_LAO
-# define LANG_LAO 0x54
-# endif
-# ifndef LANG_LATIN
-# define LANG_LATIN 0x76
-# endif
-# ifndef LANG_LATVIAN
-# define LANG_LATVIAN 0x26
-# endif
-# ifndef LANG_LITHUANIAN
-# define LANG_LITHUANIAN 0x27
-# endif
-# ifndef LANG_MACEDONIAN
-# define LANG_MACEDONIAN 0x2f
-# endif
-# ifndef LANG_MALAY
-# define LANG_MALAY 0x3e
-# endif
-# ifndef LANG_MALAYALAM
-# define LANG_MALAYALAM 0x4c
-# endif
-# ifndef LANG_MALTESE
-# define LANG_MALTESE 0x3a
-# endif
-# ifndef LANG_MANIPURI
-# define LANG_MANIPURI 0x58
-# endif
-# ifndef LANG_MARATHI
-# define LANG_MARATHI 0x4e
-# endif
-# ifndef LANG_MONGOLIAN
-# define LANG_MONGOLIAN 0x50
-# endif
-# ifndef LANG_NEPALI
-# define LANG_NEPALI 0x61
-# endif
-# ifndef LANG_ORIYA
-# define LANG_ORIYA 0x48
-# endif
-# ifndef LANG_OROMO
-# define LANG_OROMO 0x72
-# endif
-# ifndef LANG_PAPIAMENTU
-# define LANG_PAPIAMENTU 0x79
-# endif
-# ifndef LANG_PASHTO
-# define LANG_PASHTO 0x63
-# endif
-# ifndef LANG_PUNJABI
-# define LANG_PUNJABI 0x46
-# endif
-# ifndef LANG_RHAETO_ROMANCE
-# define LANG_RHAETO_ROMANCE 0x17
-# endif
-# ifndef LANG_SAAMI
-# define LANG_SAAMI 0x3b
-# endif
-# ifndef LANG_SANSKRIT
-# define LANG_SANSKRIT 0x4f
-# endif
-# ifndef LANG_SERBIAN
-# define LANG_SERBIAN 0x1a
-# endif
-# ifndef LANG_SINDHI
-# define LANG_SINDHI 0x59
-# endif
-# ifndef LANG_SINHALESE
-# define LANG_SINHALESE 0x5b
-# endif
-# ifndef LANG_SLOVAK
-# define LANG_SLOVAK 0x1b
-# endif
-# ifndef LANG_SOMALI
-# define LANG_SOMALI 0x77
-# endif
-# ifndef LANG_SORBIAN
-# define LANG_SORBIAN 0x2e
-# endif
-# ifndef LANG_SUTU
-# define LANG_SUTU 0x30
-# endif
-# ifndef LANG_SWAHILI
-# define LANG_SWAHILI 0x41
-# endif
-# ifndef LANG_SYRIAC
-# define LANG_SYRIAC 0x5a
-# endif
-# ifndef LANG_TAGALOG
-# define LANG_TAGALOG 0x64
-# endif
-# ifndef LANG_TAJIK
-# define LANG_TAJIK 0x28
-# endif
-# ifndef LANG_TAMAZIGHT
-# define LANG_TAMAZIGHT 0x5f
-# endif
-# ifndef LANG_TAMIL
-# define LANG_TAMIL 0x49
-# endif
-# ifndef LANG_TATAR
-# define LANG_TATAR 0x44
-# endif
-# ifndef LANG_TELUGU
-# define LANG_TELUGU 0x4a
-# endif
-# ifndef LANG_THAI
-# define LANG_THAI 0x1e
-# endif
-# ifndef LANG_TIBETAN
-# define LANG_TIBETAN 0x51
-# endif
-# ifndef LANG_TIGRINYA
-# define LANG_TIGRINYA 0x73
-# endif
-# ifndef LANG_TSONGA
-# define LANG_TSONGA 0x31
-# endif
-# ifndef LANG_TSWANA
-# define LANG_TSWANA 0x32
-# endif
-# ifndef LANG_TURKMEN
-# define LANG_TURKMEN 0x42
-# endif
-# ifndef LANG_UKRAINIAN
-# define LANG_UKRAINIAN 0x22
-# endif
-# ifndef LANG_URDU
-# define LANG_URDU 0x20
-# endif
-# ifndef LANG_UZBEK
-# define LANG_UZBEK 0x43
-# endif
-# ifndef LANG_VENDA
-# define LANG_VENDA 0x33
-# endif
-# ifndef LANG_VIETNAMESE
-# define LANG_VIETNAMESE 0x2a
-# endif
-# ifndef LANG_WELSH
-# define LANG_WELSH 0x52
-# endif
-# ifndef LANG_XHOSA
-# define LANG_XHOSA 0x34
-# endif
-# ifndef LANG_YI
-# define LANG_YI 0x78
-# endif
-# ifndef LANG_YIDDISH
-# define LANG_YIDDISH 0x3d
-# endif
-# ifndef LANG_YORUBA
-# define LANG_YORUBA 0x6a
-# endif
-# ifndef LANG_ZULU
-# define LANG_ZULU 0x35
-# endif
-# ifndef SUBLANG_ARABIC_SAUDI_ARABIA
-# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
-# endif
-# ifndef SUBLANG_ARABIC_IRAQ
-# define SUBLANG_ARABIC_IRAQ 0x02
-# endif
-# ifndef SUBLANG_ARABIC_EGYPT
-# define SUBLANG_ARABIC_EGYPT 0x03
-# endif
-# ifndef SUBLANG_ARABIC_LIBYA
-# define SUBLANG_ARABIC_LIBYA 0x04
-# endif
-# ifndef SUBLANG_ARABIC_ALGERIA
-# define SUBLANG_ARABIC_ALGERIA 0x05
-# endif
-# ifndef SUBLANG_ARABIC_MOROCCO
-# define SUBLANG_ARABIC_MOROCCO 0x06
-# endif
-# ifndef SUBLANG_ARABIC_TUNISIA
-# define SUBLANG_ARABIC_TUNISIA 0x07
-# endif
-# ifndef SUBLANG_ARABIC_OMAN
-# define SUBLANG_ARABIC_OMAN 0x08
-# endif
-# ifndef SUBLANG_ARABIC_YEMEN
-# define SUBLANG_ARABIC_YEMEN 0x09
-# endif
-# ifndef SUBLANG_ARABIC_SYRIA
-# define SUBLANG_ARABIC_SYRIA 0x0a
-# endif
-# ifndef SUBLANG_ARABIC_JORDAN
-# define SUBLANG_ARABIC_JORDAN 0x0b
-# endif
-# ifndef SUBLANG_ARABIC_LEBANON
-# define SUBLANG_ARABIC_LEBANON 0x0c
-# endif
-# ifndef SUBLANG_ARABIC_KUWAIT
-# define SUBLANG_ARABIC_KUWAIT 0x0d
-# endif
-# ifndef SUBLANG_ARABIC_UAE
-# define SUBLANG_ARABIC_UAE 0x0e
-# endif
-# ifndef SUBLANG_ARABIC_BAHRAIN
-# define SUBLANG_ARABIC_BAHRAIN 0x0f
-# endif
-# ifndef SUBLANG_ARABIC_QATAR
-# define SUBLANG_ARABIC_QATAR 0x10
-# endif
-# ifndef SUBLANG_AZERI_LATIN
-# define SUBLANG_AZERI_LATIN 0x01
-# endif
-# ifndef SUBLANG_AZERI_CYRILLIC
-# define SUBLANG_AZERI_CYRILLIC 0x02
-# endif
-# ifndef SUBLANG_BENGALI_INDIA
-# define SUBLANG_BENGALI_INDIA 0x00
-# endif
-# ifndef SUBLANG_BENGALI_BANGLADESH
-# define SUBLANG_BENGALI_BANGLADESH 0x01
-# endif
-# ifndef SUBLANG_CHINESE_MACAU
-# define SUBLANG_CHINESE_MACAU 0x05
-# endif
-# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA
-# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
-# endif
-# ifndef SUBLANG_ENGLISH_JAMAICA
-# define SUBLANG_ENGLISH_JAMAICA 0x08
-# endif
-# ifndef SUBLANG_ENGLISH_CARIBBEAN
-# define SUBLANG_ENGLISH_CARIBBEAN 0x09
-# endif
-# ifndef SUBLANG_ENGLISH_BELIZE
-# define SUBLANG_ENGLISH_BELIZE 0x0a
-# endif
-# ifndef SUBLANG_ENGLISH_TRINIDAD
-# define SUBLANG_ENGLISH_TRINIDAD 0x0b
-# endif
-# ifndef SUBLANG_ENGLISH_ZIMBABWE
-# define SUBLANG_ENGLISH_ZIMBABWE 0x0c
-# endif
-# ifndef SUBLANG_ENGLISH_PHILIPPINES
-# define SUBLANG_ENGLISH_PHILIPPINES 0x0d
-# endif
-# ifndef SUBLANG_ENGLISH_INDONESIA
-# define SUBLANG_ENGLISH_INDONESIA 0x0e
-# endif
-# ifndef SUBLANG_ENGLISH_HONGKONG
-# define SUBLANG_ENGLISH_HONGKONG 0x0f
-# endif
-# ifndef SUBLANG_ENGLISH_INDIA
-# define SUBLANG_ENGLISH_INDIA 0x10
-# endif
-# ifndef SUBLANG_ENGLISH_MALAYSIA
-# define SUBLANG_ENGLISH_MALAYSIA 0x11
-# endif
-# ifndef SUBLANG_ENGLISH_SINGAPORE
-# define SUBLANG_ENGLISH_SINGAPORE 0x12
-# endif
-# ifndef SUBLANG_FRENCH_LUXEMBOURG
-# define SUBLANG_FRENCH_LUXEMBOURG 0x05
-# endif
-# ifndef SUBLANG_FRENCH_MONACO
-# define SUBLANG_FRENCH_MONACO 0x06
-# endif
-# ifndef SUBLANG_FRENCH_WESTINDIES
-# define SUBLANG_FRENCH_WESTINDIES 0x07
-# endif
-# ifndef SUBLANG_FRENCH_REUNION
-# define SUBLANG_FRENCH_REUNION 0x08
-# endif
-# ifndef SUBLANG_FRENCH_CONGO
-# define SUBLANG_FRENCH_CONGO 0x09
-# endif
-# ifndef SUBLANG_FRENCH_SENEGAL
-# define SUBLANG_FRENCH_SENEGAL 0x0a
-# endif
-# ifndef SUBLANG_FRENCH_CAMEROON
-# define SUBLANG_FRENCH_CAMEROON 0x0b
-# endif
-# ifndef SUBLANG_FRENCH_COTEDIVOIRE
-# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c
-# endif
-# ifndef SUBLANG_FRENCH_MALI
-# define SUBLANG_FRENCH_MALI 0x0d
-# endif
-# ifndef SUBLANG_FRENCH_MOROCCO
-# define SUBLANG_FRENCH_MOROCCO 0x0e
-# endif
-# ifndef SUBLANG_FRENCH_HAITI
-# define SUBLANG_FRENCH_HAITI 0x0f
-# endif
-# ifndef SUBLANG_GERMAN_LUXEMBOURG
-# define SUBLANG_GERMAN_LUXEMBOURG 0x04
-# endif
-# ifndef SUBLANG_GERMAN_LIECHTENSTEIN
-# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
-# endif
-# ifndef SUBLANG_KASHMIRI_INDIA
-# define SUBLANG_KASHMIRI_INDIA 0x02
-# endif
-# ifndef SUBLANG_MALAY_MALAYSIA
-# define SUBLANG_MALAY_MALAYSIA 0x01
-# endif
-# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM
-# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
-# endif
-# ifndef SUBLANG_NEPALI_INDIA
-# define SUBLANG_NEPALI_INDIA 0x02
-# endif
-# ifndef SUBLANG_PUNJABI_INDIA
-# define SUBLANG_PUNJABI_INDIA 0x00
-# endif
-# ifndef SUBLANG_PUNJABI_PAKISTAN
-# define SUBLANG_PUNJABI_PAKISTAN 0x01
-# endif
-# ifndef SUBLANG_ROMANIAN_ROMANIA
-# define SUBLANG_ROMANIAN_ROMANIA 0x00
-# endif
-# ifndef SUBLANG_ROMANIAN_MOLDOVA
-# define SUBLANG_ROMANIAN_MOLDOVA 0x01
-# endif
-# ifndef SUBLANG_SERBIAN_LATIN
-# define SUBLANG_SERBIAN_LATIN 0x02
-# endif
-# ifndef SUBLANG_SERBIAN_CYRILLIC
-# define SUBLANG_SERBIAN_CYRILLIC 0x03
-# endif
-# ifndef SUBLANG_SINDHI_INDIA
-# define SUBLANG_SINDHI_INDIA 0x00
-# endif
-# ifndef SUBLANG_SINDHI_PAKISTAN
-# define SUBLANG_SINDHI_PAKISTAN 0x01
-# endif
-# ifndef SUBLANG_SPANISH_GUATEMALA
-# define SUBLANG_SPANISH_GUATEMALA 0x04
-# endif
-# ifndef SUBLANG_SPANISH_COSTA_RICA
-# define SUBLANG_SPANISH_COSTA_RICA 0x05
-# endif
-# ifndef SUBLANG_SPANISH_PANAMA
-# define SUBLANG_SPANISH_PANAMA 0x06
-# endif
-# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC
-# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
-# endif
-# ifndef SUBLANG_SPANISH_VENEZUELA
-# define SUBLANG_SPANISH_VENEZUELA 0x08
-# endif
-# ifndef SUBLANG_SPANISH_COLOMBIA
-# define SUBLANG_SPANISH_COLOMBIA 0x09
-# endif
-# ifndef SUBLANG_SPANISH_PERU
-# define SUBLANG_SPANISH_PERU 0x0a
-# endif
-# ifndef SUBLANG_SPANISH_ARGENTINA
-# define SUBLANG_SPANISH_ARGENTINA 0x0b
-# endif
-# ifndef SUBLANG_SPANISH_ECUADOR
-# define SUBLANG_SPANISH_ECUADOR 0x0c
-# endif
-# ifndef SUBLANG_SPANISH_CHILE
-# define SUBLANG_SPANISH_CHILE 0x0d
-# endif
-# ifndef SUBLANG_SPANISH_URUGUAY
-# define SUBLANG_SPANISH_URUGUAY 0x0e
-# endif
-# ifndef SUBLANG_SPANISH_PARAGUAY
-# define SUBLANG_SPANISH_PARAGUAY 0x0f
-# endif
-# ifndef SUBLANG_SPANISH_BOLIVIA
-# define SUBLANG_SPANISH_BOLIVIA 0x10
-# endif
-# ifndef SUBLANG_SPANISH_EL_SALVADOR
-# define SUBLANG_SPANISH_EL_SALVADOR 0x11
-# endif
-# ifndef SUBLANG_SPANISH_HONDURAS
-# define SUBLANG_SPANISH_HONDURAS 0x12
-# endif
-# ifndef SUBLANG_SPANISH_NICARAGUA
-# define SUBLANG_SPANISH_NICARAGUA 0x13
-# endif
-# ifndef SUBLANG_SPANISH_PUERTO_RICO
-# define SUBLANG_SPANISH_PUERTO_RICO 0x14
-# endif
-# ifndef SUBLANG_SWEDISH_FINLAND
-# define SUBLANG_SWEDISH_FINLAND 0x02
-# endif
-# ifndef SUBLANG_TAMAZIGHT_ARABIC
-# define SUBLANG_TAMAZIGHT_ARABIC 0x01
-# endif
-# ifndef SUBLANG_TAMAZIGHT_LATIN
-# define SUBLANG_TAMAZIGHT_LATIN 0x02
-# endif
-# ifndef SUBLANG_TIGRINYA_ETHIOPIA
-# define SUBLANG_TIGRINYA_ETHIOPIA 0x00
-# endif
-# ifndef SUBLANG_TIGRINYA_ERITREA
-# define SUBLANG_TIGRINYA_ERITREA 0x01
-# endif
-# ifndef SUBLANG_URDU_PAKISTAN
-# define SUBLANG_URDU_PAKISTAN 0x01
-# endif
-# ifndef SUBLANG_URDU_INDIA
-# define SUBLANG_URDU_INDIA 0x02
-# endif
-# ifndef SUBLANG_UZBEK_LATIN
-# define SUBLANG_UZBEK_LATIN 0x01
-# endif
-# ifndef SUBLANG_UZBEK_CYRILLIC
-# define SUBLANG_UZBEK_CYRILLIC 0x02
-# endif
-#endif
-
-/* XPG3 defines the result of 'setlocale (category, NULL)' as:
- "Directs 'setlocale()' to query 'category' and return the current
- setting of 'local'."
- However it does not specify the exact format. Neither do SUSV2 and
- ISO C 99. So we can use this feature only on selected systems (e.g.
- those using GNU C Library). */
-#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2)
-# define HAVE_LOCALE_NULL
-#endif
-
-/* Determine the current locale's name, and canonicalize it into XPG syntax
- language[_territory[.codeset]][@modifier]
- The codeset part in the result is not reliable; the locale_charset()
- should be used for codeset information instead.
- The result must not be freed; it is statically allocated. */
-
-const char *
-_nl_locale_name (int category, const char *categoryname)
-{
- const char *retval;
-
-#ifndef WIN32
-
- /* Use the POSIX methods of looking to 'LC_ALL', 'LC_xxx', and 'LANG'.
- On some systems this can be done by the 'setlocale' function itself. */
-# if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
- retval = setlocale (category, NULL);
-# else
- /* Setting of LC_ALL overwrites all other. */
- retval = getenv ("LC_ALL");
- if (retval == NULL || retval[0] == '\0')
- {
- /* Next comes the name of the desired category. */
- retval = getenv (categoryname);
- if (retval == NULL || retval[0] == '\0')
- {
- /* Last possibility is the LANG environment variable. */
- retval = getenv ("LANG");
- if (retval == NULL || retval[0] == '\0')
- /* We use C as the default domain. POSIX says this is
- implementation defined. */
- retval = "C";
- }
- }
-# endif
-
- return retval;
-
-#else /* WIN32 */
-
- /* Return an XPG style locale name language[_territory][@modifier].
- Don't even bother determining the codeset; it's not useful in this
- context, because message catalogs are not specific to a single
- codeset. */
-
- LCID lcid;
- LANGID langid;
- int primary, sub;
-
- /* Let the user override the system settings through environment
- variables, as on POSIX systems. */
- retval = getenv ("LC_ALL");
- if (retval != NULL && retval[0] != '\0')
- return retval;
- retval = getenv (categoryname);
- if (retval != NULL && retval[0] != '\0')
- return retval;
- retval = getenv ("LANG");
- if (retval != NULL && retval[0] != '\0')
- return retval;
-
- /* Use native Win32 API locale ID. */
- lcid = GetThreadLocale ();
-
- /* Strip off the sorting rules, keep only the language part. */
- langid = LANGIDFROMLCID (lcid);
-
- /* Split into language and territory part. */
- primary = PRIMARYLANGID (langid);
- sub = SUBLANGID (langid);
-
- /* Dispatch on language.
- See also http://www.unicode.org/unicode/onlinedat/languages.html .
- For details about languages, see http://www.ethnologue.com/ . */
- switch (primary)
- {
- case LANG_AFRIKAANS: return "af_ZA";
- case LANG_ALBANIAN: return "sq_AL";
- case LANG_AMHARIC: return "am_ET";
- case LANG_ARABIC:
- switch (sub)
- {
- case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA";
- case SUBLANG_ARABIC_IRAQ: return "ar_IQ";
- case SUBLANG_ARABIC_EGYPT: return "ar_EG";
- case SUBLANG_ARABIC_LIBYA: return "ar_LY";
- case SUBLANG_ARABIC_ALGERIA: return "ar_DZ";
- case SUBLANG_ARABIC_MOROCCO: return "ar_MA";
- case SUBLANG_ARABIC_TUNISIA: return "ar_TN";
- case SUBLANG_ARABIC_OMAN: return "ar_OM";
- case SUBLANG_ARABIC_YEMEN: return "ar_YE";
- case SUBLANG_ARABIC_SYRIA: return "ar_SY";
- case SUBLANG_ARABIC_JORDAN: return "ar_JO";
- case SUBLANG_ARABIC_LEBANON: return "ar_LB";
- case SUBLANG_ARABIC_KUWAIT: return "ar_KW";
- case SUBLANG_ARABIC_UAE: return "ar_AE";
- case SUBLANG_ARABIC_BAHRAIN: return "ar_BH";
- case SUBLANG_ARABIC_QATAR: return "ar_QA";
- }
- return "ar";
- case LANG_ARMENIAN: return "hy_AM";
- case LANG_ASSAMESE: return "as_IN";
- case LANG_AZERI:
- switch (sub)
- {
- /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */
- case SUBLANG_AZERI_LATIN: return "az_AZ@latin";
- case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic";
- }
- return "az";
- case LANG_BASQUE:
- return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */
- case LANG_BELARUSIAN: return "be_BY";
- case LANG_BENGALI:
- switch (sub)
- {
- case SUBLANG_BENGALI_INDIA: return "bn_IN";
-#if 0 /* FIXME */
- case SUBLANG_BENGALI_BANGLADESH: return "bn_BD";
-#endif
- }
- return "bn";
- case LANG_BULGARIAN: return "bg_BG";
- case LANG_BURMESE: return "my_MM";
- case LANG_CAMBODIAN: return "km_KH";
- case LANG_CATALAN: return "ca_ES";
- case LANG_CHEROKEE: return "chr_US";
- case LANG_CHINESE:
- switch (sub)
- {
- case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW";
- case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN";
- case SUBLANG_CHINESE_HONGKONG: return "zh_HK";
- case SUBLANG_CHINESE_SINGAPORE: return "zh_SG";
- case SUBLANG_CHINESE_MACAU: return "zh_MO";
- }
- return "zh";
- case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN
- * What used to be called Serbo-Croatian
- * should really now be two separate
- * languages because of political reasons.
- * (Says tml, who knows nothing about Serbian
- * or Croatian.)
- * (I can feel those flames coming already.)
- */
- switch (sub)
- {
- case SUBLANG_DEFAULT: return "hr_HR";
- case SUBLANG_SERBIAN_LATIN: return "sr_CS";
- case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic";
- }
- return "hr";
- case LANG_CZECH: return "cs_CZ";
- case LANG_DANISH: return "da_DK";
- case LANG_DIVEHI: return "dv_MV";
- case LANG_DUTCH:
- switch (sub)
- {
- case SUBLANG_DUTCH: return "nl_NL";
- case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE";
- }
- return "nl";
- case LANG_EDO: return "bin_NG";
- case LANG_ENGLISH:
- switch (sub)
- {
- /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought
- * English was the language spoken in England.
- * Oh well.
- */
- case SUBLANG_ENGLISH_US: return "en_US";
- case SUBLANG_ENGLISH_UK: return "en_GB";
- case SUBLANG_ENGLISH_AUS: return "en_AU";
- case SUBLANG_ENGLISH_CAN: return "en_CA";
- case SUBLANG_ENGLISH_NZ: return "en_NZ";
- case SUBLANG_ENGLISH_EIRE: return "en_IE";
- case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA";
- case SUBLANG_ENGLISH_JAMAICA: return "en_JM";
- case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */
- case SUBLANG_ENGLISH_BELIZE: return "en_BZ";
- case SUBLANG_ENGLISH_TRINIDAD: return "en_TT";
- case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW";
- case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH";
- case SUBLANG_ENGLISH_INDONESIA: return "en_ID";
- case SUBLANG_ENGLISH_HONGKONG: return "en_HK";
- case SUBLANG_ENGLISH_INDIA: return "en_IN";
- case SUBLANG_ENGLISH_MALAYSIA: return "en_MY";
- case SUBLANG_ENGLISH_SINGAPORE: return "en_SG";
- }
- return "en";
- case LANG_ESTONIAN: return "et_EE";
- case LANG_FAEROESE: return "fo_FO";
- case LANG_FARSI: return "fa_IR";
- case LANG_FINNISH: return "fi_FI";
- case LANG_FRENCH:
- switch (sub)
- {
- case SUBLANG_FRENCH: return "fr_FR";
- case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE";
- case SUBLANG_FRENCH_CANADIAN: return "fr_CA";
- case SUBLANG_FRENCH_SWISS: return "fr_CH";
- case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU";
- case SUBLANG_FRENCH_MONACO: return "fr_MC";
- case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */
- case SUBLANG_FRENCH_REUNION: return "fr_RE";
- case SUBLANG_FRENCH_CONGO: return "fr_CG";
- case SUBLANG_FRENCH_SENEGAL: return "fr_SN";
- case SUBLANG_FRENCH_CAMEROON: return "fr_CM";
- case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI";
- case SUBLANG_FRENCH_MALI: return "fr_ML";
- case SUBLANG_FRENCH_MOROCCO: return "fr_MA";
- case SUBLANG_FRENCH_HAITI: return "fr_HT";
- }
- return "fr";
- case LANG_FRISIAN: return "fy_NL";
- case LANG_FULFULDE:
- /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */
- return "ff_NG";
- case LANG_GAELIC:
- switch (sub)
- {
- case 0x01: /* SCOTTISH */ return "gd_GB";
- case 0x02: /* IRISH */ return "ga_IE";
- }
- return "C";
- case LANG_GALICIAN: return "gl_ES";
- case LANG_GEORGIAN: return "ka_GE";
- case LANG_GERMAN:
- switch (sub)
- {
- case SUBLANG_GERMAN: return "de_DE";
- case SUBLANG_GERMAN_SWISS: return "de_CH";
- case SUBLANG_GERMAN_AUSTRIAN: return "de_AT";
- case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU";
- case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI";
- }
- return "de";
- case LANG_GREEK: return "el_GR";
- case LANG_GUARANI: return "gn_PY";
- case LANG_GUJARATI: return "gu_IN";
- case LANG_HAUSA: return "ha_NG";
- case LANG_HAWAIIAN:
- /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers)
- or Hawaii Creole English ("cpe_US", 600000 speakers)? */
- return "cpe_US";
- case LANG_HEBREW: return "he_IL";
- case LANG_HINDI: return "hi_IN";
- case LANG_HUNGARIAN: return "hu_HU";
- case LANG_IBIBIO: return "nic_NG";
- case LANG_ICELANDIC: return "is_IS";
- case LANG_IGBO: return "ig_NG";
- case LANG_INDONESIAN: return "id_ID";
- case LANG_INUKTITUT: return "iu_CA";
- case LANG_ITALIAN:
- switch (sub)
- {
- case SUBLANG_ITALIAN: return "it_IT";
- case SUBLANG_ITALIAN_SWISS: return "it_CH";
- }
- return "it";
- case LANG_JAPANESE: return "ja_JP";
- case LANG_KANNADA: return "kn_IN";
- case LANG_KANURI: return "kr_NG";
- case LANG_KASHMIRI:
- switch (sub)
- {
- case SUBLANG_DEFAULT: return "ks_PK";
- case SUBLANG_KASHMIRI_INDIA: return "ks_IN";
- }
- return "ks";
- case LANG_KAZAK: return "kk_KZ";
- case LANG_KONKANI:
- /* FIXME: Adjust this when such locales appear on Unix. */
- return "kok_IN";
- case LANG_KOREAN: return "ko_KR";
- case LANG_KYRGYZ: return "ky_KG";
- case LANG_LAO: return "lo_LA";
- case LANG_LATIN: return "la_VA";
- case LANG_LATVIAN: return "lv_LV";
- case LANG_LITHUANIAN: return "lt_LT";
- case LANG_MACEDONIAN: return "mk_MK";
- case LANG_MALAY:
- switch (sub)
- {
- case SUBLANG_MALAY_MALAYSIA: return "ms_MY";
- case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN";
- }
- return "ms";
- case LANG_MALAYALAM: return "ml_IN";
- case LANG_MALTESE: return "mt_MT";
- case LANG_MANIPURI:
- /* FIXME: Adjust this when such locales appear on Unix. */
- return "mni_IN";
- case LANG_MARATHI: return "mr_IN";
- case LANG_MONGOLIAN:
- return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */
- case LANG_NEPALI:
- switch (sub)
- {
- case SUBLANG_DEFAULT: return "ne_NP";
- case SUBLANG_NEPALI_INDIA: return "ne_IN";
- }
- return "ne";
- case LANG_NORWEGIAN:
- switch (sub)
- {
- case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO";
- case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO";
- }
- return "no";
- case LANG_ORIYA: return "or_IN";
- case LANG_OROMO: return "om_ET";
- case LANG_PAPIAMENTU: return "pap_AN";
- case LANG_PASHTO:
- return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */
- case LANG_POLISH: return "pl_PL";
- case LANG_PORTUGUESE:
- switch (sub)
- {
- case SUBLANG_PORTUGUESE: return "pt_PT";
- /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT.
- Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */
- case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR";
- }
- return "pt";
- case LANG_PUNJABI:
- switch (sub)
- {
- case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */
-#if 0 /* FIXME */
- case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */
-#endif
- }
- return "pa";
- case LANG_RHAETO_ROMANCE: return "rm_CH";
- case LANG_ROMANIAN:
- switch (sub)
- {
- case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO";
-#if 0 /* FIXME */
- case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD";
-#endif
- }
- return "ro";
- case LANG_RUSSIAN:
- return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */
- case LANG_SAAMI: /* actually Northern Sami */ return "se_NO";
- case LANG_SANSKRIT: return "sa_IN";
- case LANG_SINDHI:
- switch (sub)
- {
- case SUBLANG_SINDHI_INDIA: return "sd_IN";
- case SUBLANG_SINDHI_PAKISTAN: return "sd_PK";
- }
- return "sd";
- case LANG_SINHALESE: return "si_LK";
- case LANG_SLOVAK: return "sk_SK";
- case LANG_SLOVENIAN: return "sl_SI";
- case LANG_SOMALI: return "so_SO";
- case LANG_SORBIAN:
- /* FIXME: Adjust this when such locales appear on Unix. */
- return "wen_DE";
- case LANG_SPANISH:
- switch (sub)
- {
- case SUBLANG_SPANISH: return "es_ES";
- case SUBLANG_SPANISH_MEXICAN: return "es_MX";
- case SUBLANG_SPANISH_MODERN:
- return "es_ES@modern"; /* not seen on Unix */
- case SUBLANG_SPANISH_GUATEMALA: return "es_GT";
- case SUBLANG_SPANISH_COSTA_RICA: return "es_CR";
- case SUBLANG_SPANISH_PANAMA: return "es_PA";
- case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO";
- case SUBLANG_SPANISH_VENEZUELA: return "es_VE";
- case SUBLANG_SPANISH_COLOMBIA: return "es_CO";
- case SUBLANG_SPANISH_PERU: return "es_PE";
- case SUBLANG_SPANISH_ARGENTINA: return "es_AR";
- case SUBLANG_SPANISH_ECUADOR: return "es_EC";
- case SUBLANG_SPANISH_CHILE: return "es_CL";
- case SUBLANG_SPANISH_URUGUAY: return "es_UY";
- case SUBLANG_SPANISH_PARAGUAY: return "es_PY";
- case SUBLANG_SPANISH_BOLIVIA: return "es_BO";
- case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV";
- case SUBLANG_SPANISH_HONDURAS: return "es_HN";
- case SUBLANG_SPANISH_NICARAGUA: return "es_NI";
- case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR";
- }
- return "es";
- case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */
- case LANG_SWAHILI: return "sw_KE";
- case LANG_SWEDISH:
- switch (sub)
- {
- case SUBLANG_DEFAULT: return "sv_SE";
- case SUBLANG_SWEDISH_FINLAND: return "sv_FI";
- }
- return "sv";
- case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */
- case LANG_TAGALOG: return "tl_PH";
- case LANG_TAJIK: return "tg_TJ";
- case LANG_TAMAZIGHT:
- switch (sub)
- {
- /* FIXME: Adjust this when Tamazight locales appear on Unix. */
- case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic";
- case SUBLANG_TAMAZIGHT_LATIN: return "ber_MA@latin";
- }
- return "ber_MA";
- case LANG_TAMIL:
- return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */
- case LANG_TATAR: return "tt_RU";
- case LANG_TELUGU: return "te_IN";
- case LANG_THAI: return "th_TH";
- case LANG_TIBETAN: return "bo_CN";
- case LANG_TIGRINYA:
- switch (sub)
- {
- case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET";
- case SUBLANG_TIGRINYA_ERITREA: return "ti_ER";
- }
- return "ti";
- case LANG_TSONGA: return "ts_ZA";
- case LANG_TSWANA: return "tn_BW";
- case LANG_TURKISH: return "tr_TR";
- case LANG_TURKMEN: return "tk_TM";
- case LANG_UKRAINIAN: return "uk_UA";
- case LANG_URDU:
- switch (sub)
- {
- case SUBLANG_URDU_PAKISTAN: return "ur_PK";
- case SUBLANG_URDU_INDIA: return "ur_IN";
- }
- return "ur";
- case LANG_UZBEK:
- switch (sub)
- {
- case SUBLANG_UZBEK_LATIN: return "uz_UZ";
- case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic";
- }
- return "uz";
- case LANG_VENDA: return "ve_ZA";
- case LANG_VIETNAMESE: return "vi_VN";
- case LANG_WELSH: return "cy_GB";
- case LANG_XHOSA: return "xh_ZA";
- case LANG_YI: return "sit_CN";
- case LANG_YIDDISH: return "yi_IL";
- case LANG_YORUBA: return "yo_NG";
- case LANG_ZULU: return "zu_ZA";
- default: return "C";
- }
-
-#endif
-}
diff --git a/navit/support/gettext_intl/log.c b/navit/support/gettext_intl/log.c
deleted file mode 100644
index cb6076e80..000000000
--- a/navit/support/gettext_intl/log.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Log file output.
- Copyright (C) 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. */
-
-/* Written by Bruno Haible <bruno@clisp.org>. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Print an ASCII string with quotes and escape sequences where needed. */
-static void
-print_escaped (FILE *stream, const char *str)
-{
- putc ('"', stream);
- for (; *str != '\0'; str++)
- if (*str == '\n')
- {
- fputs ("\\n\"", stream);
- if (str[1] == '\0')
- return;
- fputs ("\n\"", stream);
- }
- else
- {
- if (*str == '"' || *str == '\\')
- putc ('\\', stream);
- putc (*str, stream);
- }
- putc ('"', stream);
-}
-
-/* Add to the log file an entry denoting a failed translation. */
-void
-_nl_log_untranslated (const char *logfilename, const char *domainname,
- const char *msgid1, const char *msgid2, int plural)
-{
- static char *last_logfilename = NULL;
- static FILE *last_logfile = NULL;
- FILE *logfile;
-
- /* Can we reuse the last opened logfile? */
- if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0)
- {
- /* Close the last used logfile. */
- if (last_logfilename != NULL)
- {
- if (last_logfile != NULL)
- {
- fclose (last_logfile);
- last_logfile = NULL;
- }
- free (last_logfilename);
- last_logfilename = NULL;
- }
- /* Open the logfile. */
- last_logfilename = (char *) malloc (strlen (logfilename) + 1);
- if (last_logfilename == NULL)
- return;
- strcpy (last_logfilename, logfilename);
- last_logfile = fopen (logfilename, "a");
- if (last_logfile == NULL)
- return;
- }
- logfile = last_logfile;
-
- fprintf (logfile, "domain ");
- print_escaped (logfile, domainname);
- fprintf (logfile, "\nmsgid ");
- print_escaped (logfile, msgid1);
- if (plural)
- {
- fprintf (logfile, "\nmsgid_plural ");
- print_escaped (logfile, msgid2);
- fprintf (logfile, "\nmsgstr[0] \"\"\n");
- }
- else
- fprintf (logfile, "\nmsgstr \"\"\n");
- putc ('\n', logfile);
-}
diff --git a/navit/support/gettext_intl/ngettext.c b/navit/support/gettext_intl/ngettext.c
deleted file mode 100644
index e73e00c48..000000000
--- a/navit/support/gettext_intl/ngettext.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Implementation of ngettext(3) function.
- Copyright (C) 1995, 1997, 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define __need_NULL
-# include <stddef.h>
-#else
-# include <stdlib.h> /* Just for NULL. */
-#endif
-
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-
-#include <locale.h>
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define NGETTEXT __ngettext
-# define DCNGETTEXT __dcngettext
-#else
-# define NGETTEXT libintl_ngettext
-# define DCNGETTEXT libintl_dcngettext
-#endif
-
-/* Look up MSGID in the current default message catalog for the current
- LC_MESSAGES locale. If not found, returns MSGID itself (the default
- text). */
-char *
-NGETTEXT (const char *msgid1, const char *msgid2, unsigned long int n)
-{
- return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__ngettext, ngettext);
-#endif
diff --git a/navit/support/gettext_intl/os2compat.c b/navit/support/gettext_intl/os2compat.c
deleted file mode 100644
index c8dc33e7c..000000000
--- a/navit/support/gettext_intl/os2compat.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* OS/2 compatibility functions.
- Copyright (C) 2001-2002 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. */
-
-#define OS2_AWARE
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/param.h>
-
-/* A version of getenv() that works from DLLs */
-extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue);
-
-char *
-_nl_getenv (const char *name)
-{
- unsigned char *value;
- if (DosScanEnv (name, &value))
- return NULL;
- else
- return value;
-}
-
-/* A fixed size buffer. */
-char libintl_nl_default_dirname[MAXPATHLEN+1];
-
-char *_nlos2_libdir = NULL;
-char *_nlos2_localealiaspath = NULL;
-char *_nlos2_localedir = NULL;
-
-static __attribute__((constructor)) void
-nlos2_initialize ()
-{
- char *root = getenv ("UNIXROOT");
- char *gnulocaledir = getenv ("GNULOCALEDIR");
-
- _nlos2_libdir = gnulocaledir;
- if (!_nlos2_libdir)
- {
- if (root)
- {
- size_t sl = strlen (root);
- _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1);
- memcpy (_nlos2_libdir, root, sl);
- memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1);
- }
- else
- _nlos2_libdir = LIBDIR;
- }
-
- _nlos2_localealiaspath = gnulocaledir;
- if (!_nlos2_localealiaspath)
- {
- if (root)
- {
- size_t sl = strlen (root);
- _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1);
- memcpy (_nlos2_localealiaspath, root, sl);
- memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1);
- }
- else
- _nlos2_localealiaspath = LOCALE_ALIAS_PATH;
- }
-
- _nlos2_localedir = gnulocaledir;
- if (!_nlos2_localedir)
- {
- if (root)
- {
- size_t sl = strlen (root);
- _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1);
- memcpy (_nlos2_localedir, root, sl);
- memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1);
- }
- else
- _nlos2_localedir = LOCALEDIR;
- }
-
- if (strlen (_nlos2_localedir) <= MAXPATHLEN)
- strcpy (libintl_nl_default_dirname, _nlos2_localedir);
-}
diff --git a/navit/support/gettext_intl/os2compat.h b/navit/support/gettext_intl/os2compat.h
deleted file mode 100644
index 4f74e8c03..000000000
--- a/navit/support/gettext_intl/os2compat.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* OS/2 compatibility defines.
- This file is intended to be included from config.h
- Copyright (C) 2001-2002 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. */
-
-/* When included from os2compat.h we need all the original definitions */
-#ifndef OS2_AWARE
-
-#undef LIBDIR
-#define LIBDIR _nlos2_libdir
-extern char *_nlos2_libdir;
-
-#undef LOCALEDIR
-#define LOCALEDIR _nlos2_localedir
-extern char *_nlos2_localedir;
-
-#undef LOCALE_ALIAS_PATH
-#define LOCALE_ALIAS_PATH _nlos2_localealiaspath
-extern char *_nlos2_localealiaspath;
-
-#endif
-
-#undef HAVE_STRCASECMP
-#define HAVE_STRCASECMP 1
-#define strcasecmp stricmp
-#define strncasecmp strnicmp
-
-/* We have our own getenv() which works even if library is compiled as DLL */
-#define getenv _nl_getenv
-
-/* Older versions of gettext used -1 as the value of LC_MESSAGES */
-#define LC_MESSAGES_COMPAT (-1)
diff --git a/navit/support/gettext_intl/osdep.c b/navit/support/gettext_intl/osdep.c
deleted file mode 100644
index b37259838..000000000
--- a/navit/support/gettext_intl/osdep.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* OS dependent parts of libintl.
- Copyright (C) 2001-2002 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. */
-
-#if defined __EMX__
-# include "os2compat.c"
-#else
-/* Avoid AIX compiler warning. */
-typedef int dummy;
-#endif
diff --git a/navit/support/gettext_intl/plural-exp.c b/navit/support/gettext_intl/plural-exp.c
deleted file mode 100644
index 8c04e6426..000000000
--- a/navit/support/gettext_intl/plural-exp.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Expression parsing for plural form selection.
- Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-
- 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "plural-exp.h"
-
-#if (defined __GNUC__ && !defined __APPLE_CC__) \
- || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
-
-/* These structs are the constant expression for the germanic plural
- form determination. It represents the expression "n != 1". */
-static const struct expression plvar =
-{
- .nargs = 0,
- .operation = var,
-};
-static const struct expression plone =
-{
- .nargs = 0,
- .operation = num,
- .val =
- {
- .num = 1
- }
-};
-struct expression GERMANIC_PLURAL =
-{
- .nargs = 2,
- .operation = not_equal,
- .val =
- {
- .args =
- {
- [0] = (struct expression *) &plvar,
- [1] = (struct expression *) &plone
- }
- }
-};
-
-# define INIT_GERMANIC_PLURAL()
-
-#else
-
-/* For compilers without support for ISO C 99 struct/union initializers:
- Initialization at run-time. */
-
-static struct expression plvar;
-static struct expression plone;
-struct expression GERMANIC_PLURAL;
-
-static void
-init_germanic_plural ()
-{
- if (plone.val.num == 0)
- {
- plvar.nargs = 0;
- plvar.operation = var;
-
- plone.nargs = 0;
- plone.operation = num;
- plone.val.num = 1;
-
- GERMANIC_PLURAL.nargs = 2;
- GERMANIC_PLURAL.operation = not_equal;
- GERMANIC_PLURAL.val.args[0] = &plvar;
- GERMANIC_PLURAL.val.args[1] = &plone;
- }
-}
-
-# define INIT_GERMANIC_PLURAL() init_germanic_plural ()
-
-#endif
-
-void
-internal_function
-EXTRACT_PLURAL_EXPRESSION (const char *nullentry, struct expression **pluralp,
- unsigned long int *npluralsp)
-{
- if (nullentry != NULL)
- {
- const char *plural;
- const char *nplurals;
-
- plural = strstr (nullentry, "plural=");
- nplurals = strstr (nullentry, "nplurals=");
- if (plural == NULL || nplurals == NULL)
- goto no_plural;
- else
- {
- char *endp;
- unsigned long int n;
- struct parse_args args;
-
- /* First get the number. */
- nplurals += 9;
- while (*nplurals != '\0' && isspace ((unsigned char) *nplurals))
- ++nplurals;
- if (!(*nplurals >= '0' && *nplurals <= '9'))
- goto no_plural;
-#if defined HAVE_STRTOUL || defined _LIBC
- n = strtoul (nplurals, &endp, 10);
-#else
- for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++)
- n = n * 10 + (*endp - '0');
-#endif
- if (nplurals == endp)
- goto no_plural;
- *npluralsp = n;
-
- /* Due to the restrictions bison imposes onto the interface of the
- scanner function we have to put the input string and the result
- passed up from the parser into the same structure which address
- is passed down to the parser. */
- plural += 7;
- args.cp = plural;
- if (PLURAL_PARSE (&args) != 0)
- goto no_plural;
- *pluralp = args.res;
- }
- }
- else
- {
- /* By default we are using the Germanic form: singular form only
- for `one', the plural form otherwise. Yes, this is also what
- English is using since English is a Germanic language. */
- no_plural:
- INIT_GERMANIC_PLURAL ();
- *pluralp = &GERMANIC_PLURAL;
- *npluralsp = 2;
- }
-}
diff --git a/navit/support/gettext_intl/plural-exp.h b/navit/support/gettext_intl/plural-exp.h
deleted file mode 100644
index 49e2c5bfc..000000000
--- a/navit/support/gettext_intl/plural-exp.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Expression parsing and evaluation for plural form selection.
- Copyright (C) 2000-2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-
- 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. */
-
-#ifndef _PLURAL_EXP_H
-#define _PLURAL_EXP_H
-
-#ifndef internal_function
-# define internal_function
-#endif
-
-#ifndef attribute_hidden
-# define attribute_hidden
-#endif
-
-
-/* This is the representation of the expressions to determine the
- plural form. */
-struct expression
-{
- int nargs; /* Number of arguments. */
- enum operator
- {
- /* Without arguments: */
- var, /* The variable "n". */
- num, /* Decimal number. */
- /* Unary operators: */
- lnot, /* Logical NOT. */
- /* Binary operators: */
- mult, /* Multiplication. */
- divide, /* Division. */
- module, /* Modulo operation. */
- plus, /* Addition. */
- minus, /* Subtraction. */
- less_than, /* Comparison. */
- greater_than, /* Comparison. */
- less_or_equal, /* Comparison. */
- greater_or_equal, /* Comparison. */
- equal, /* Comparison for equality. */
- not_equal, /* Comparison for inequality. */
- land, /* Logical AND. */
- lor, /* Logical OR. */
- /* Ternary operators: */
- qmop /* Question mark operator. */
- } operation;
- union
- {
- unsigned long int num; /* Number value for `num'. */
- struct expression *args[3]; /* Up to three arguments. */
- } val;
-};
-
-/* This is the data structure to pass information to the parser and get
- the result in a thread-safe way. */
-struct parse_args
-{
- const char *cp;
- struct expression *res;
-};
-
-
-/* Names for the libintl functions are a problem. This source code is used
- 1. in the GNU C Library library,
- 2. in the GNU libintl library,
- 3. in the GNU gettext tools.
- The function names in each situation must be different, to allow for
- binary incompatible changes in 'struct expression'. Furthermore,
- 1. in the GNU C Library library, the names have a __ prefix,
- 2.+3. in the GNU libintl library and in the GNU gettext tools, the names
- must follow ANSI C and not start with __.
- So we have to distinguish the three cases. */
-#ifdef _LIBC
-# define FREE_EXPRESSION __gettext_free_exp
-# define PLURAL_PARSE __gettextparse
-# define GERMANIC_PLURAL __gettext_germanic_plural
-# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural
-#elif defined (IN_LIBINTL)
-# define FREE_EXPRESSION libintl_gettext_free_exp
-# define PLURAL_PARSE libintl_gettextparse
-# define GERMANIC_PLURAL libintl_gettext_germanic_plural
-# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural
-#else
-# define FREE_EXPRESSION free_plural_expression
-# define PLURAL_PARSE parse_plural_expression
-# define GERMANIC_PLURAL germanic_plural
-# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression
-#endif
-
-extern void FREE_EXPRESSION (struct expression *exp)
- internal_function;
-extern int PLURAL_PARSE (void *arg);
-extern struct expression GERMANIC_PLURAL attribute_hidden;
-extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry,
- struct expression **pluralp,
- unsigned long int *npluralsp)
- internal_function;
-
-#if !defined (_LIBC) && !defined (IN_LIBINTL)
-extern unsigned long int plural_eval (struct expression *pexp,
- unsigned long int n);
-#endif
-
-#endif /* _PLURAL_EXP_H */
diff --git a/navit/support/gettext_intl/plural.c b/navit/support/gettext_intl/plural.c
deleted file mode 100644
index 89f4b45ed..000000000
--- a/navit/support/gettext_intl/plural.c
+++ /dev/null
@@ -1,1490 +0,0 @@
-/* A Bison parser, made from plural.y
- by GNU bison 1.35. */
-
-#define YYBISON 1 /* Identify Bison output. */
-
-#define yyparse __gettextparse
-#define yylex __gettextlex
-#define yyerror __gettexterror
-#define yylval __gettextlval
-#define yychar __gettextchar
-#define yydebug __gettextdebug
-#define yynerrs __gettextnerrs
-# define EQUOP2 257
-# define CMPOP2 258
-# define ADDOP2 259
-# define MULOP2 260
-# define NUMBER 261
-
-#line 1 "plural.y"
-
-/* Expression parsing for plural form selection.
- Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-
- 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. */
-
-/* The bison generated parser uses alloca. AIX 3 forces us to put this
- declaration at the beginning of the file. The declaration in bison's
- skeleton file comes too late. This must come before <config.h>
- because <config.h> may include arbitrary system headers. */
-#if defined _AIX && !defined __GNUC__
- #pragma alloca
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include "plural-exp.h"
-
-/* The main function generated by the parser is called __gettextparse,
- but we want it to be called PLURAL_PARSE. */
-#ifndef _LIBC
-# define __gettextparse PLURAL_PARSE
-#endif
-
-#define YYLEX_PARAM &((struct parse_args *) arg)->cp
-#define YYPARSE_PARAM arg
-
-#line 49 "plural.y"
-#ifndef YYSTYPE
-typedef union {
- unsigned long int num;
- enum operator op;
- struct expression *exp;
-} yystype;
-# define YYSTYPE yystype
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-#line 55 "plural.y"
-
-/* Prototypes for local functions. */
-static int yylex (YYSTYPE *lval, const char **pexp);
-static void yyerror (const char *str);
-
-/* Allocation of expressions. */
-
-static struct expression *
-new_exp (int nargs, enum operator op, struct expression * const *args)
-{
- int i;
- struct expression *newp;
-
- /* If any of the argument could not be malloc'ed, just return NULL. */
- for (i = nargs - 1; i >= 0; i--)
- if (args[i] == NULL)
- goto fail;
-
- /* Allocate a new expression. */
- newp = (struct expression *) malloc (sizeof (*newp));
- if (newp != NULL)
- {
- newp->nargs = nargs;
- newp->operation = op;
- for (i = nargs - 1; i >= 0; i--)
- newp->val.args[i] = args[i];
- return newp;
- }
-
- fail:
- for (i = nargs - 1; i >= 0; i--)
- FREE_EXPRESSION (args[i]);
-
- return NULL;
-}
-
-static struct expression *
-new_exp_0 (enum operator op)
-{
- return new_exp (0, op, NULL);
-}
-
-static struct expression *
-new_exp_1 (enum operator op, struct expression *right)
-{
- struct expression *args[1];
-
- args[0] = right;
- return new_exp (1, op, args);
-}
-
-static struct expression *
-new_exp_2 (enum operator op, struct expression *left, struct expression *right)
-{
- struct expression *args[2];
-
- args[0] = left;
- args[1] = right;
- return new_exp (2, op, args);
-}
-
-static struct expression *
-new_exp_3 (enum operator op, struct expression *bexp,
- struct expression *tbranch, struct expression *fbranch)
-{
- struct expression *args[3];
-
- args[0] = bexp;
- args[1] = tbranch;
- args[2] = fbranch;
- return new_exp (3, op, args);
-}
-
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-
-
-#define YYFINAL 27
-#define YYFLAG -32768
-#define YYNTBASE 16
-
-/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
-#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18)
-
-/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
-static const char yytranslate[] =
-{
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 10, 2, 2, 2, 2, 5, 2,
- 14, 15, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 12, 2,
- 2, 2, 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 13, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 6, 7, 8,
- 9, 11
-};
-
-#if YYDEBUG
-static const short yyprhs[] =
-{
- 0, 0, 2, 8, 12, 16, 20, 24, 28, 32,
- 35, 37, 39
-};
-static const short yyrhs[] =
-{
- 17, 0, 17, 3, 17, 12, 17, 0, 17, 4,
- 17, 0, 17, 5, 17, 0, 17, 6, 17, 0,
- 17, 7, 17, 0, 17, 8, 17, 0, 17, 9,
- 17, 0, 10, 17, 0, 13, 0, 11, 0, 14,
- 17, 15, 0
-};
-
-#endif
-
-#if YYDEBUG
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const short yyrline[] =
-{
- 0, 150, 158, 162, 166, 170, 174, 178, 182, 186,
- 190, 194, 199
-};
-#endif
-
-
-#if (YYDEBUG) || defined YYERROR_VERBOSE
-
-/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
-static const char *const yytname[] =
-{
- "$", "error", "$undefined.", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2",
- "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'",
- "start", "exp", 0
-};
-#endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const short yyr1[] =
-{
- 0, 16, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const short yyr2[] =
-{
- 0, 1, 5, 3, 3, 3, 3, 3, 3, 2,
- 1, 1, 3
-};
-
-/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
- doesn't specify something else to do. Zero means the default is an
- error. */
-static const short yydefact[] =
-{
- 0, 0, 11, 10, 0, 1, 9, 0, 0, 0,
- 0, 0, 0, 0, 0, 12, 0, 3, 4, 5,
- 6, 7, 8, 0, 2, 0, 0, 0
-};
-
-static const short yydefgoto[] =
-{
- 25, 5
-};
-
-static const short yypact[] =
-{
- -9, -9,-32768,-32768, -9, 34,-32768, 11, -9, -9,
- -9, -9, -9, -9, -9,-32768, 24, 39, 43, 16,
- 26, -3,-32768, -9, 34, 21, 53,-32768
-};
-
-static const short yypgoto[] =
-{
- -32768, -1
-};
-
-
-#define YYLAST 53
-
-
-static const short yytable[] =
-{
- 6, 1, 2, 7, 3, 4, 14, 16, 17, 18,
- 19, 20, 21, 22, 8, 9, 10, 11, 12, 13,
- 14, 26, 24, 12, 13, 14, 15, 8, 9, 10,
- 11, 12, 13, 14, 13, 14, 23, 8, 9, 10,
- 11, 12, 13, 14, 10, 11, 12, 13, 14, 11,
- 12, 13, 14, 27
-};
-
-static const short yycheck[] =
-{
- 1, 10, 11, 4, 13, 14, 9, 8, 9, 10,
- 11, 12, 13, 14, 3, 4, 5, 6, 7, 8,
- 9, 0, 23, 7, 8, 9, 15, 3, 4, 5,
- 6, 7, 8, 9, 8, 9, 12, 3, 4, 5,
- 6, 7, 8, 9, 5, 6, 7, 8, 9, 6,
- 7, 8, 9, 0
-};
-#define YYPURE 1
-
-/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/local/share/bison/bison.simple"
-
-/* Skeleton output parser for bison,
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
- Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU 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 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., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
-
-/* This is the parser code that is written into each bison parser when
- the %semantic_parser declaration is not specified in the grammar.
- It was written by Richard Stallman by simplifying the hairy parser
- used when %semantic_parser is specified. */
-
-/* All symbols defined below should begin with yy or YY, to avoid
- infringing on user name space. This should be done even for local
- variables, as they might otherwise be expanded by user macros.
- There are some unavoidable exceptions within include files to
- define necessary library symbols; they are noted "INFRINGES ON
- USER NAME SPACE" below. */
-
-#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
-
-/* The parser invokes alloca or malloc; define the necessary symbols. */
-
-# if YYSTACK_USE_ALLOCA
-# define YYSTACK_ALLOC alloca
-# else
-# ifndef YYSTACK_USE_ALLOCA
-# if defined (alloca) || defined (_ALLOCA_H)
-# define YYSTACK_ALLOC alloca
-# else
-# ifdef __GNUC__
-# define YYSTACK_ALLOC __builtin_alloca
-# endif
-# endif
-# endif
-# endif
-
-# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-# else
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-# define YYSTACK_ALLOC malloc
-# define YYSTACK_FREE free
-# endif
-#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
-
-
-#if (! defined (yyoverflow) \
- && (! defined (__cplusplus) \
- || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member. */
-union yyalloc
-{
- short yyss;
- YYSTYPE yyvs;
-# if YYLSP_NEEDED
- YYLTYPE yyls;
-# endif
-};
-
-/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
- N elements. */
-# if YYLSP_NEEDED
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
- + 2 * YYSTACK_GAP_MAX)
-# else
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAX)
-# endif
-
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- register YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (0)
-# endif
-# endif
-
-/* Relocate STACK from its old location to the new one. The
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
- elements in the stack, and YYPTR gives the new location of the
- stack. Advance YYPTR to a properly aligned location for the next
- stack. */
-# define YYSTACK_RELOCATE(Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (0)
-
-#endif
-
-
-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-# define YYSIZE_T __SIZE_TYPE__
-#endif
-#if ! defined (YYSIZE_T) && defined (size_t)
-# define YYSIZE_T size_t
-#endif
-#if ! defined (YYSIZE_T)
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-#endif
-#if ! defined (YYSIZE_T)
-# define YYSIZE_T unsigned int
-#endif
-
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY -2
-#define YYEOF 0
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrlab1
-/* Like YYERROR except do call yyerror. This remains here temporarily
- to ease the transition to the new meaning of YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-#define YYFAIL goto yyerrlab
-#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yychar1 = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror ("syntax error: cannot back up"); \
- YYERROR; \
- } \
-while (0)
-
-#define YYTERROR 1
-#define YYERRCODE 256
-
-
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
- are run).
-
- When YYLLOC_DEFAULT is run, CURRENT is set the location of the
- first token. By default, to implement support for ranges, extend
- its range to the last symbol. */
-
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- Current.last_line = Rhs[N].last_line; \
- Current.last_column = Rhs[N].last_column;
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments. */
-
-#if YYPURE
-# if YYLSP_NEEDED
-# ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
-# else
-# define YYLEX yylex (&yylval, &yylloc)
-# endif
-# else /* !YYLSP_NEEDED */
-# ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, YYLEX_PARAM)
-# else
-# define YYLEX yylex (&yylval)
-# endif
-# endif /* !YYLSP_NEEDED */
-#else /* !YYPURE */
-# define YYLEX yylex ()
-#endif /* !YYPURE */
-
-
-/* Enable debugging if requested. */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-# define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (0)
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-#endif /* !YYDEBUG */
-
-/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
- if the built-in stack extension method is used).
-
- Do not make this value too large; the results are undefined if
- SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
- evaluated with infinite-precision integer arithmetic. */
-
-#if YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-#ifdef YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined (__GLIBC__) && defined (_STRING_H)
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-static YYSIZE_T
-# if defined (__STDC__) || defined (__cplusplus)
-yystrlen (const char *yystr)
-# else
-yystrlen (yystr)
- const char *yystr;
-# endif
-{
- register const char *yys = yystr;
-
- while (*yys++ != '\0')
- continue;
-
- return yys - yystr - 1;
-}
-# endif
-# endif
-
-# ifndef yystpcpy
-# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-static char *
-# if defined (__STDC__) || defined (__cplusplus)
-yystpcpy (char *yydest, const char *yysrc)
-# else
-yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-# endif
-{
- register char *yyd = yydest;
- register const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-#endif
-
-#line 315 "/usr/local/share/bison/bison.simple"
-
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
- into yyparse. The argument should have type void *.
- It should actually point to an object.
- Grammar actions can access the variable by casting it
- to the proper pointer type. */
-
-#ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-# define YYPARSE_PARAM_DECL
-# else
-# define YYPARSE_PARAM_ARG YYPARSE_PARAM
-# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-# endif
-#else /* !YYPARSE_PARAM */
-# define YYPARSE_PARAM_ARG
-# define YYPARSE_PARAM_DECL
-#endif /* !YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes. */
-#ifdef __GNUC__
-# ifdef YYPARSE_PARAM
-int yyparse (void *);
-# else
-int yyparse (void);
-# endif
-#endif
-
-/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
- variables are global, or local to YYPARSE. */
-
-#define YY_DECL_NON_LSP_VARIABLES \
-/* The lookahead symbol. */ \
-int yychar; \
- \
-/* The semantic value of the lookahead symbol. */ \
-YYSTYPE yylval; \
- \
-/* Number of parse errors so far. */ \
-int yynerrs;
-
-#if YYLSP_NEEDED
-# define YY_DECL_VARIABLES \
-YY_DECL_NON_LSP_VARIABLES \
- \
-/* Location data for the lookahead symbol. */ \
-YYLTYPE yylloc;
-#else
-# define YY_DECL_VARIABLES \
-YY_DECL_NON_LSP_VARIABLES
-#endif
-
-
-/* If nonreentrant, generate the variables here. */
-
-#if !YYPURE
-YY_DECL_VARIABLES
-#endif /* !YYPURE */
-
-int
-yyparse (YYPARSE_PARAM_ARG)
- YYPARSE_PARAM_DECL
-{
- /* If reentrant, generate the variables here. */
-#if YYPURE
- YY_DECL_VARIABLES
-#endif /* !YYPURE */
-
- register int yystate;
- register int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Lookahead token as an internal (translated) token number. */
- int yychar1 = 0;
-
- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
-
- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- short yyssa[YYINITDEPTH];
- short *yyss = yyssa;
- register short *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- register YYSTYPE *yyvsp;
-
-#if YYLSP_NEEDED
- /* The location stack. */
- YYLTYPE yylsa[YYINITDEPTH];
- YYLTYPE *yyls = yylsa;
- YYLTYPE *yylsp;
-#endif
-
-#if YYLSP_NEEDED
-# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
-#else
-# define YYPOPSTACK (yyvsp--, yyssp--)
-#endif
-
- YYSIZE_T yystacksize = YYINITDEPTH;
-
-
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;
-#if YYLSP_NEEDED
- YYLTYPE yyloc;
-#endif
-
- /* When reducing, the number of symbols on the RHS of the reduced
- rule. */
- int yylen;
-
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- yyssp = yyss;
- yyvsp = yyvs;
-#if YYLSP_NEEDED
- yylsp = yyls;
-#endif
- goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
-`------------------------------------------------------------*/
- yynewstate:
- /* In all cases, when you get here, the value and location stacks
- have just been pushed. so pushing a state here evens the stacks.
- */
- yyssp++;
-
- yysetstate:
- *yyssp = yystate;
-
- if (yyssp >= yyss + yystacksize - 1)
- {
- /* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
- {
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- YYSTYPE *yyvs1 = yyvs;
- short *yyss1 = yyss;
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. */
-# if YYLSP_NEEDED
- YYLTYPE *yyls1 = yyls;
- /* This used to be a conditional around just the two extra args,
- but that might be undefined if yyoverflow is a macro. */
- yyoverflow ("parser stack overflow",
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yyls1, yysize * sizeof (*yylsp),
- &yystacksize);
- yyls = yyls1;
-# else
- yyoverflow ("parser stack overflow",
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yystacksize);
-# endif
- yyss = yyss1;
- yyvs = yyvs1;
- }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyoverflowlab;
-# else
- /* Extend the stack our own way. */
- if (yystacksize >= YYMAXDEPTH)
- goto yyoverflowlab;
- yystacksize *= 2;
- if (yystacksize > YYMAXDEPTH)
- yystacksize = YYMAXDEPTH;
-
- {
- short *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyoverflowlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
-# if YYLSP_NEEDED
- YYSTACK_RELOCATE (yyls);
-# endif
-# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
- }
-# endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-#if YYLSP_NEEDED
- yylsp = yyls + yysize - 1;
-#endif
-
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
-
- if (yyssp >= yyss + yystacksize - 1)
- YYABORT;
- }
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- goto yybackup;
-
-
-/*-----------.
-| yybackup. |
-`-----------*/
-yybackup:
-
-/* Do appropriate processing given the current state. */
-/* Read a lookahead token if we need one and don't already have one. */
-/* yyresume: */
-
- /* First try to decide what to do without reference to lookahead token. */
-
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* yychar is either YYEMPTY or YYEOF
- or a valid token in external form. */
-
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = YYLEX;
- }
-
- /* Convert token to internal form (in yychar1) for indexing tables with */
-
- if (yychar <= 0) /* This means end of input. */
- {
- yychar1 = 0;
- yychar = YYEOF; /* Don't call YYLEX any more */
-
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yychar1 = YYTRANSLATE (yychar);
-
-#if YYDEBUG
- /* We have to keep this `#if YYDEBUG', since we use variables
- which are defined only if `YYDEBUG' is set. */
- if (yydebug)
- {
- YYFPRINTF (stderr, "Next token is %d (%s",
- yychar, yytname[yychar1]);
- /* Give the individual parser a way to print the precise
- meaning of a token, for further debugging info. */
-# ifdef YYPRINT
- YYPRINT (stderr, yychar, yylval);
-# endif
- YYFPRINTF (stderr, ")\n");
- }
-#endif
- }
-
- yyn += yychar1;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
- goto yydefault;
-
- yyn = yytable[yyn];
-
- /* yyn is what to do for this token type in this state.
- Negative => reduce, -yyn is rule number.
- Positive => shift, yyn is new state.
- New state is final state => don't bother to shift,
- just return success.
- 0, or most negative number => error. */
-
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrlab;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- /* Shift the lookahead token. */
- YYDPRINTF ((stderr, "Shifting token %d (%s), ",
- yychar, yytname[yychar1]));
-
- /* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
-
- *++yyvsp = yylval;
-#if YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state. |
-`-----------------------------------------------------------*/
-yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
- goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction. |
-`-----------------------------*/
-yyreduce:
- /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-
- /* If YYLEN is nonzero, implement the default value of the action:
- `$$ = $1'.
-
- Otherwise, the following line sets YYVAL to the semantic value of
- the lookahead token. This behavior is undocumented and Bison
- users should not rely upon it. Assigning to YYVAL
- unconditionally makes the parser a bit smaller, and it avoids a
- GCC warning that YYVAL may be used uninitialized. */
- yyval = yyvsp[1-yylen];
-
-#if YYLSP_NEEDED
- /* Similarly for the default location. Let the user run additional
- commands if for instance locations are ranges. */
- yyloc = yylsp[1-yylen];
- YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
-#endif
-
-#if YYDEBUG
- /* We have to keep this `#if YYDEBUG', since we use variables which
- are defined only if `YYDEBUG' is set. */
- if (yydebug)
- {
- int yyi;
-
- YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
- yyn, yyrline[yyn]);
-
- /* Print the symbols being reduced, and their result. */
- for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
- YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
- YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
- }
-#endif
-
- switch (yyn) {
-
-case 1:
-#line 151 "plural.y"
-{
- if (yyvsp[0].exp == NULL)
- YYABORT;
- ((struct parse_args *) arg)->res = yyvsp[0].exp;
- }
- break;
-case 2:
-#line 159 "plural.y"
-{
- yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 3:
-#line 163 "plural.y"
-{
- yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 4:
-#line 167 "plural.y"
-{
- yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 5:
-#line 171 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 6:
-#line 175 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 7:
-#line 179 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 8:
-#line 183 "plural.y"
-{
- yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
- }
- break;
-case 9:
-#line 187 "plural.y"
-{
- yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);
- }
- break;
-case 10:
-#line 191 "plural.y"
-{
- yyval.exp = new_exp_0 (var);
- }
- break;
-case 11:
-#line 195 "plural.y"
-{
- if ((yyval.exp = new_exp_0 (num)) != NULL)
- yyval.exp->val.num = yyvsp[0].num;
- }
- break;
-case 12:
-#line 200 "plural.y"
-{
- yyval.exp = yyvsp[-1].exp;
- }
- break;
-}
-
-#line 705 "/usr/local/share/bison/bison.simple"
-
-
- yyvsp -= yylen;
- yyssp -= yylen;
-#if YYLSP_NEEDED
- yylsp -= yylen;
-#endif
-
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
-
- *++yyvsp = yyval;
-#if YYLSP_NEEDED
- *++yylsp = yyloc;
-#endif
-
- /* Now `shift' the result of the reduction. Determine what state
- that goes to, based on the state we popped back to and the rule
- number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTBASE];
-
- goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus)
- {
- ++yynerrs;
-
-#ifdef YYERROR_VERBOSE
- yyn = yypact[yystate];
-
- if (yyn > YYFLAG && yyn < YYLAST)
- {
- YYSIZE_T yysize = 0;
- char *yymsg;
- int yyx, yycount;
-
- yycount = 0;
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
- if (yycheck[yyx + yyn] == yyx)
- yysize += yystrlen (yytname[yyx]) + 15, yycount++;
- yysize += yystrlen ("parse error, unexpected ") + 1;
- yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
- yymsg = (char *) YYSTACK_ALLOC (yysize);
- if (yymsg != 0)
- {
- char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
- yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
-
- if (yycount < 5)
- {
- yycount = 0;
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *));
- yyx++)
- if (yycheck[yyx + yyn] == yyx)
- {
- const char *yyq = ! yycount ? ", expecting " : " or ";
- yyp = yystpcpy (yyp, yyq);
- yyp = yystpcpy (yyp, yytname[yyx]);
- yycount++;
- }
- }
- yyerror (yymsg);
- YYSTACK_FREE (yymsg);
- }
- else
- yyerror ("parse error; also virtual memory exhausted");
- }
- else
-#endif /* defined (YYERROR_VERBOSE) */
- yyerror ("parse error");
- }
- goto yyerrlab1;
-
-
-/*--------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action |
-`--------------------------------------------------*/
-yyerrlab1:
- if (yyerrstatus == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- /* return failure if at end of input */
- if (yychar == YYEOF)
- YYABORT;
- YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
- yychar, yytname[yychar1]));
- yychar = YYEMPTY;
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
-
- yyerrstatus = 3; /* Each real token shifted decrements this */
-
- goto yyerrhandle;
-
-
-/*-------------------------------------------------------------------.
-| yyerrdefault -- current state does not do anything special for the |
-| error token. |
-`-------------------------------------------------------------------*/
-yyerrdefault:
-#if 0
- /* This is wrong; only states that explicitly want error tokens
- should shift them. */
-
- /* If its default is to accept any token, ok. Otherwise pop it. */
- yyn = yydefact[yystate];
- if (yyn)
- goto yydefault;
-#endif
-
-
-/*---------------------------------------------------------------.
-| yyerrpop -- pop the current state because it cannot handle the |
-| error token |
-`---------------------------------------------------------------*/
-yyerrpop:
- if (yyssp == yyss)
- YYABORT;
- yyvsp--;
- yystate = *--yyssp;
-#if YYLSP_NEEDED
- yylsp--;
-#endif
-
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "Error: state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
-
-/*--------------.
-| yyerrhandle. |
-`--------------*/
-yyerrhandle:
- yyn = yypact[yystate];
- if (yyn == YYFLAG)
- goto yyerrdefault;
-
- yyn += YYTERROR;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
- goto yyerrdefault;
-
- yyn = yytable[yyn];
- if (yyn < 0)
- {
- if (yyn == YYFLAG)
- goto yyerrpop;
- yyn = -yyn;
- goto yyreduce;
- }
- else if (yyn == 0)
- goto yyerrpop;
-
- if (yyn == YYFINAL)
- YYACCEPT;
-
- YYDPRINTF ((stderr, "Shifting error token, "));
-
- *++yyvsp = yylval;
-#if YYLSP_NEEDED
- *++yylsp = yylloc;
-#endif
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here. |
-`-------------------------------------*/
-yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here. |
-`-----------------------------------*/
-yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
-/*---------------------------------------------.
-| yyoverflowab -- parser overflow comes here. |
-`---------------------------------------------*/
-yyoverflowlab:
- yyerror ("parser stack overflow");
- yyresult = 2;
- /* Fall through. */
-
-yyreturn:
-#ifndef yyoverflow
- if (yyss != yyssa)
- YYSTACK_FREE (yyss);
-#endif
- return yyresult;
-}
-#line 205 "plural.y"
-
-
-void
-internal_function
-FREE_EXPRESSION (struct expression *exp)
-{
- if (exp == NULL)
- return;
-
- /* Handle the recursive case. */
- switch (exp->nargs)
- {
- case 3:
- FREE_EXPRESSION (exp->val.args[2]);
- /* FALLTHROUGH */
- case 2:
- FREE_EXPRESSION (exp->val.args[1]);
- /* FALLTHROUGH */
- case 1:
- FREE_EXPRESSION (exp->val.args[0]);
- /* FALLTHROUGH */
- default:
- break;
- }
-
- free (exp);
-}
-
-
-static int
-yylex (YYSTYPE *lval, const char **pexp)
-{
- const char *exp = *pexp;
- int result;
-
- while (1)
- {
- if (exp[0] == '\0')
- {
- *pexp = exp;
- return YYEOF;
- }
-
- if (exp[0] != ' ' && exp[0] != '\t')
- break;
-
- ++exp;
- }
-
- result = *exp++;
- switch (result)
- {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- {
- unsigned long int n = result - '0';
- while (exp[0] >= '0' && exp[0] <= '9')
- {
- n *= 10;
- n += exp[0] - '0';
- ++exp;
- }
- lval->num = n;
- result = NUMBER;
- }
- break;
-
- case '=':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = equal;
- result = EQUOP2;
- }
- else
- result = YYERRCODE;
- break;
-
- case '!':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = not_equal;
- result = EQUOP2;
- }
- break;
-
- case '&':
- case '|':
- if (exp[0] == result)
- ++exp;
- else
- result = YYERRCODE;
- break;
-
- case '<':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = less_or_equal;
- }
- else
- lval->op = less_than;
- result = CMPOP2;
- break;
-
- case '>':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = greater_or_equal;
- }
- else
- lval->op = greater_than;
- result = CMPOP2;
- break;
-
- case '*':
- lval->op = mult;
- result = MULOP2;
- break;
-
- case '/':
- lval->op = divide;
- result = MULOP2;
- break;
-
- case '%':
- lval->op = module;
- result = MULOP2;
- break;
-
- case '+':
- lval->op = plus;
- result = ADDOP2;
- break;
-
- case '-':
- lval->op = minus;
- result = ADDOP2;
- break;
-
- case 'n':
- case '?':
- case ':':
- case '(':
- case ')':
- /* Nothing, just return the character. */
- break;
-
- case ';':
- case '\n':
- case '\0':
- /* Be safe and let the user call this function again. */
- --exp;
- result = YYEOF;
- break;
-
- default:
- result = YYERRCODE;
-#if YYDEBUG != 0
- --exp;
-#endif
- break;
- }
-
- *pexp = exp;
-
- return result;
-}
-
-
-static void
-yyerror (const char *str)
-{
- /* Do nothing. We don't print error messages here. */
-}
diff --git a/navit/support/gettext_intl/plural.y b/navit/support/gettext_intl/plural.y
deleted file mode 100644
index 4d33bd7c7..000000000
--- a/navit/support/gettext_intl/plural.y
+++ /dev/null
@@ -1,381 +0,0 @@
-%{
-/* Expression parsing for plural form selection.
- Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
- Written by Ulrich Drepper <drepper@cygnus.com>, 2000.
-
- 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. */
-
-/* The bison generated parser uses alloca. AIX 3 forces us to put this
- declaration at the beginning of the file. The declaration in bison's
- skeleton file comes too late. This must come before <config.h>
- because <config.h> may include arbitrary system headers. */
-#if defined _AIX && !defined __GNUC__
- #pragma alloca
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include "plural-exp.h"
-
-/* The main function generated by the parser is called __gettextparse,
- but we want it to be called PLURAL_PARSE. */
-#ifndef _LIBC
-# define __gettextparse PLURAL_PARSE
-#endif
-
-#define YYLEX_PARAM &((struct parse_args *) arg)->cp
-#define YYPARSE_PARAM arg
-%}
-%pure_parser
-%expect 7
-
-%union {
- unsigned long int num;
- enum operator op;
- struct expression *exp;
-}
-
-%{
-/* Prototypes for local functions. */
-static int yylex (YYSTYPE *lval, const char **pexp);
-static void yyerror (const char *str);
-
-/* Allocation of expressions. */
-
-static struct expression *
-new_exp (int nargs, enum operator op, struct expression * const *args)
-{
- int i;
- struct expression *newp;
-
- /* If any of the argument could not be malloc'ed, just return NULL. */
- for (i = nargs - 1; i >= 0; i--)
- if (args[i] == NULL)
- goto fail;
-
- /* Allocate a new expression. */
- newp = (struct expression *) malloc (sizeof (*newp));
- if (newp != NULL)
- {
- newp->nargs = nargs;
- newp->operation = op;
- for (i = nargs - 1; i >= 0; i--)
- newp->val.args[i] = args[i];
- return newp;
- }
-
- fail:
- for (i = nargs - 1; i >= 0; i--)
- FREE_EXPRESSION (args[i]);
-
- return NULL;
-}
-
-static inline struct expression *
-new_exp_0 (enum operator op)
-{
- return new_exp (0, op, NULL);
-}
-
-static inline struct expression *
-new_exp_1 (enum operator op, struct expression *right)
-{
- struct expression *args[1];
-
- args[0] = right;
- return new_exp (1, op, args);
-}
-
-static struct expression *
-new_exp_2 (enum operator op, struct expression *left, struct expression *right)
-{
- struct expression *args[2];
-
- args[0] = left;
- args[1] = right;
- return new_exp (2, op, args);
-}
-
-static inline struct expression *
-new_exp_3 (enum operator op, struct expression *bexp,
- struct expression *tbranch, struct expression *fbranch)
-{
- struct expression *args[3];
-
- args[0] = bexp;
- args[1] = tbranch;
- args[2] = fbranch;
- return new_exp (3, op, args);
-}
-
-%}
-
-/* This declares that all operators have the same associativity and the
- precedence order as in C. See [Harbison, Steele: C, A Reference Manual].
- There is no unary minus and no bitwise operators.
- Operators with the same syntactic behaviour have been merged into a single
- token, to save space in the array generated by bison. */
-%right '?' /* ? */
-%left '|' /* || */
-%left '&' /* && */
-%left EQUOP2 /* == != */
-%left CMPOP2 /* < > <= >= */
-%left ADDOP2 /* + - */
-%left MULOP2 /* * / % */
-%right '!' /* ! */
-
-%token <op> EQUOP2 CMPOP2 ADDOP2 MULOP2
-%token <num> NUMBER
-%type <exp> exp
-
-%%
-
-start: exp
- {
- if ($1 == NULL)
- YYABORT;
- ((struct parse_args *) arg)->res = $1;
- }
- ;
-
-exp: exp '?' exp ':' exp
- {
- $$ = new_exp_3 (qmop, $1, $3, $5);
- }
- | exp '|' exp
- {
- $$ = new_exp_2 (lor, $1, $3);
- }
- | exp '&' exp
- {
- $$ = new_exp_2 (land, $1, $3);
- }
- | exp EQUOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | exp CMPOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | exp ADDOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | exp MULOP2 exp
- {
- $$ = new_exp_2 ($2, $1, $3);
- }
- | '!' exp
- {
- $$ = new_exp_1 (lnot, $2);
- }
- | 'n'
- {
- $$ = new_exp_0 (var);
- }
- | NUMBER
- {
- if (($$ = new_exp_0 (num)) != NULL)
- $$->val.num = $1;
- }
- | '(' exp ')'
- {
- $$ = $2;
- }
- ;
-
-%%
-
-void
-internal_function
-FREE_EXPRESSION (struct expression *exp)
-{
- if (exp == NULL)
- return;
-
- /* Handle the recursive case. */
- switch (exp->nargs)
- {
- case 3:
- FREE_EXPRESSION (exp->val.args[2]);
- /* FALLTHROUGH */
- case 2:
- FREE_EXPRESSION (exp->val.args[1]);
- /* FALLTHROUGH */
- case 1:
- FREE_EXPRESSION (exp->val.args[0]);
- /* FALLTHROUGH */
- default:
- break;
- }
-
- free (exp);
-}
-
-
-static int
-yylex (YYSTYPE *lval, const char **pexp)
-{
- const char *exp = *pexp;
- int result;
-
- while (1)
- {
- if (exp[0] == '\0')
- {
- *pexp = exp;
- return YYEOF;
- }
-
- if (exp[0] != ' ' && exp[0] != '\t')
- break;
-
- ++exp;
- }
-
- result = *exp++;
- switch (result)
- {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- {
- unsigned long int n = result - '0';
- while (exp[0] >= '0' && exp[0] <= '9')
- {
- n *= 10;
- n += exp[0] - '0';
- ++exp;
- }
- lval->num = n;
- result = NUMBER;
- }
- break;
-
- case '=':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = equal;
- result = EQUOP2;
- }
- else
- result = YYERRCODE;
- break;
-
- case '!':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = not_equal;
- result = EQUOP2;
- }
- break;
-
- case '&':
- case '|':
- if (exp[0] == result)
- ++exp;
- else
- result = YYERRCODE;
- break;
-
- case '<':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = less_or_equal;
- }
- else
- lval->op = less_than;
- result = CMPOP2;
- break;
-
- case '>':
- if (exp[0] == '=')
- {
- ++exp;
- lval->op = greater_or_equal;
- }
- else
- lval->op = greater_than;
- result = CMPOP2;
- break;
-
- case '*':
- lval->op = mult;
- result = MULOP2;
- break;
-
- case '/':
- lval->op = divide;
- result = MULOP2;
- break;
-
- case '%':
- lval->op = module;
- result = MULOP2;
- break;
-
- case '+':
- lval->op = plus;
- result = ADDOP2;
- break;
-
- case '-':
- lval->op = minus;
- result = ADDOP2;
- break;
-
- case 'n':
- case '?':
- case ':':
- case '(':
- case ')':
- /* Nothing, just return the character. */
- break;
-
- case ';':
- case '\n':
- case '\0':
- /* Be safe and let the user call this function again. */
- --exp;
- result = YYEOF;
- break;
-
- default:
- result = YYERRCODE;
-#if YYDEBUG != 0
- --exp;
-#endif
- break;
- }
-
- *pexp = exp;
-
- return result;
-}
-
-
-static void
-yyerror (const char *str)
-{
- /* Do nothing. We don't print error messages here. */
-}
diff --git a/navit/support/gettext_intl/printf-args.c b/navit/support/gettext_intl/printf-args.c
deleted file mode 100644
index f6f3219e7..000000000
--- a/navit/support/gettext_intl/printf-args.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Decomposed printf argument list.
- Copyright (C) 1999, 2002-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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* Specification. */
-#include "printf-args.h"
-
-#ifdef STATIC
-STATIC
-#endif
-int
-printf_fetchargs (va_list args, arguments *a)
-{
- size_t i;
- argument *ap;
-
- for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
- switch (ap->type)
- {
- case TYPE_SCHAR:
- ap->a.a_schar = va_arg (args, /*signed char*/ int);
- break;
- case TYPE_UCHAR:
- ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
- break;
- case TYPE_SHORT:
- ap->a.a_short = va_arg (args, /*short*/ int);
- break;
- case TYPE_USHORT:
- ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
- break;
- case TYPE_INT:
- ap->a.a_int = va_arg (args, int);
- break;
- case TYPE_UINT:
- ap->a.a_uint = va_arg (args, unsigned int);
- break;
- case TYPE_LONGINT:
- ap->a.a_longint = va_arg (args, long int);
- break;
- case TYPE_ULONGINT:
- ap->a.a_ulongint = va_arg (args, unsigned long int);
- break;
-#ifdef HAVE_LONG_LONG
- case TYPE_LONGLONGINT:
- ap->a.a_longlongint = va_arg (args, long long int);
- break;
- case TYPE_ULONGLONGINT:
- ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
- break;
-#endif
- case TYPE_DOUBLE:
- ap->a.a_double = va_arg (args, double);
- break;
-#ifdef HAVE_LONG_DOUBLE
- case TYPE_LONGDOUBLE:
- ap->a.a_longdouble = va_arg (args, long double);
- break;
-#endif
- case TYPE_CHAR:
- ap->a.a_char = va_arg (args, int);
- break;
-#ifdef HAVE_WINT_T
- case TYPE_WIDE_CHAR:
- ap->a.a_wide_char = va_arg (args, wint_t);
- break;
-#endif
- case TYPE_STRING:
- ap->a.a_string = va_arg (args, const char *);
- break;
-#ifdef HAVE_WCHAR_T
- case TYPE_WIDE_STRING:
- ap->a.a_wide_string = va_arg (args, const wchar_t *);
- break;
-#endif
- case TYPE_POINTER:
- ap->a.a_pointer = va_arg (args, void *);
- break;
- case TYPE_COUNT_SCHAR_POINTER:
- ap->a.a_count_schar_pointer = va_arg (args, signed char *);
- break;
- case TYPE_COUNT_SHORT_POINTER:
- ap->a.a_count_short_pointer = va_arg (args, short *);
- break;
- case TYPE_COUNT_INT_POINTER:
- ap->a.a_count_int_pointer = va_arg (args, int *);
- break;
- case TYPE_COUNT_LONGINT_POINTER:
- ap->a.a_count_longint_pointer = va_arg (args, long int *);
- break;
-#ifdef HAVE_LONG_LONG
- case TYPE_COUNT_LONGLONGINT_POINTER:
- ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
- break;
-#endif
- default:
- /* Unknown type. */
- return -1;
- }
- return 0;
-}
diff --git a/navit/support/gettext_intl/printf-args.h b/navit/support/gettext_intl/printf-args.h
deleted file mode 100644
index f11e64c04..000000000
--- a/navit/support/gettext_intl/printf-args.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Decomposed printf argument list.
- Copyright (C) 1999, 2002-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. */
-
-#ifndef _PRINTF_ARGS_H
-#define _PRINTF_ARGS_H
-
-/* Get size_t. */
-#include <stddef.h>
-
-/* Get wchar_t. */
-#ifdef HAVE_WCHAR_T
-# include <stddef.h>
-#endif
-
-/* Get wint_t. */
-#ifdef HAVE_WINT_T
-# include <wchar.h>
-#endif
-
-/* Get va_list. */
-#include <stdarg.h>
-
-
-/* Argument types */
-typedef enum
-{
- TYPE_NONE,
- TYPE_SCHAR,
- TYPE_UCHAR,
- TYPE_SHORT,
- TYPE_USHORT,
- TYPE_INT,
- TYPE_UINT,
- TYPE_LONGINT,
- TYPE_ULONGINT,
-#ifdef HAVE_LONG_LONG
- TYPE_LONGLONGINT,
- TYPE_ULONGLONGINT,
-#endif
- TYPE_DOUBLE,
-#ifdef HAVE_LONG_DOUBLE
- TYPE_LONGDOUBLE,
-#endif
- TYPE_CHAR,
-#ifdef HAVE_WINT_T
- TYPE_WIDE_CHAR,
-#endif
- TYPE_STRING,
-#ifdef HAVE_WCHAR_T
- TYPE_WIDE_STRING,
-#endif
- TYPE_POINTER,
- TYPE_COUNT_SCHAR_POINTER,
- TYPE_COUNT_SHORT_POINTER,
- TYPE_COUNT_INT_POINTER,
- TYPE_COUNT_LONGINT_POINTER
-#ifdef HAVE_LONG_LONG
-, TYPE_COUNT_LONGLONGINT_POINTER
-#endif
-} arg_type;
-
-/* Polymorphic argument */
-typedef struct
-{
- arg_type type;
- union
- {
- signed char a_schar;
- unsigned char a_uchar;
- short a_short;
- unsigned short a_ushort;
- int a_int;
- unsigned int a_uint;
- long int a_longint;
- unsigned long int a_ulongint;
-#ifdef HAVE_LONG_LONG
- long long int a_longlongint;
- unsigned long long int a_ulonglongint;
-#endif
- float a_float;
- double a_double;
-#ifdef HAVE_LONG_DOUBLE
- long double a_longdouble;
-#endif
- int a_char;
-#ifdef HAVE_WINT_T
- wint_t a_wide_char;
-#endif
- const char* a_string;
-#ifdef HAVE_WCHAR_T
- const wchar_t* a_wide_string;
-#endif
- void* a_pointer;
- signed char * a_count_schar_pointer;
- short * a_count_short_pointer;
- int * a_count_int_pointer;
- long int * a_count_longint_pointer;
-#ifdef HAVE_LONG_LONG
- long long int * a_count_longlongint_pointer;
-#endif
- }
- a;
-}
-argument;
-
-typedef struct
-{
- size_t count;
- argument *arg;
-}
-arguments;
-
-
-/* Fetch the arguments, putting them into a. */
-#ifdef STATIC
-STATIC
-#else
-extern
-#endif
-int printf_fetchargs (va_list args, arguments *a);
-
-#endif /* _PRINTF_ARGS_H */
diff --git a/navit/support/gettext_intl/printf-parse.c b/navit/support/gettext_intl/printf-parse.c
deleted file mode 100644
index d19f903d7..000000000
--- a/navit/support/gettext_intl/printf-parse.c
+++ /dev/null
@@ -1,537 +0,0 @@
-/* Formatted output to strings.
- Copyright (C) 1999-2000, 2002-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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* Specification. */
-#if WIDE_CHAR_VERSION
-# include "wprintf-parse.h"
-#else
-# include "printf-parse.h"
-#endif
-
-/* Get size_t, NULL. */
-#include <stddef.h>
-
-/* Get intmax_t. */
-#if HAVE_STDINT_H_WITH_UINTMAX
-# include <stdint.h>
-#endif
-#if HAVE_INTTYPES_H_WITH_UINTMAX
-# include <inttypes.h>
-#endif
-
-/* malloc(), realloc(), free(). */
-#include <stdlib.h>
-
-/* Checked size_t computations. */
-#include "xsize.h"
-
-#if WIDE_CHAR_VERSION
-# define PRINTF_PARSE wprintf_parse
-# define CHAR_T wchar_t
-# define DIRECTIVE wchar_t_directive
-# define DIRECTIVES wchar_t_directives
-#else
-# define PRINTF_PARSE printf_parse
-# define CHAR_T char
-# define DIRECTIVE char_directive
-# define DIRECTIVES char_directives
-#endif
-
-#ifdef STATIC
-STATIC
-#endif
-int
-PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
-{
- const CHAR_T *cp = format; /* pointer into format */
- size_t arg_posn = 0; /* number of regular arguments consumed */
- size_t d_allocated; /* allocated elements of d->dir */
- size_t a_allocated; /* allocated elements of a->arg */
- size_t max_width_length = 0;
- size_t max_precision_length = 0;
-
- d->count = 0;
- d_allocated = 1;
- d->dir = malloc (d_allocated * sizeof (DIRECTIVE));
- if (d->dir == NULL)
- /* Out of memory. */
- return -1;
-
- a->count = 0;
- a_allocated = 0;
- a->arg = NULL;
-
-#define REGISTER_ARG(_index_,_type_) \
- { \
- size_t n = (_index_); \
- if (n >= a_allocated) \
- { \
- size_t memory_size; \
- argument *memory; \
- \
- a_allocated = xtimes (a_allocated, 2); \
- if (a_allocated <= n) \
- a_allocated = xsum (n, 1); \
- memory_size = xtimes (a_allocated, sizeof (argument)); \
- if (size_overflow_p (memory_size)) \
- /* Overflow, would lead to out of memory. */ \
- goto error; \
- memory = (a->arg \
- ? realloc (a->arg, memory_size) \
- : malloc (memory_size)); \
- if (memory == NULL) \
- /* Out of memory. */ \
- goto error; \
- a->arg = memory; \
- } \
- while (a->count <= n) \
- a->arg[a->count++].type = TYPE_NONE; \
- if (a->arg[n].type == TYPE_NONE) \
- a->arg[n].type = (_type_); \
- else if (a->arg[n].type != (_type_)) \
- /* Ambiguous type for positional argument. */ \
- goto error; \
- }
-
- while (*cp != '\0')
- {
- CHAR_T c = *cp++;
- if (c == '%')
- {
- size_t arg_index = ARG_NONE;
- DIRECTIVE *dp = &d->dir[d->count];/* pointer to next directive */
-
- /* Initialize the next directive. */
- dp->dir_start = cp - 1;
- dp->flags = 0;
- dp->width_start = NULL;
- dp->width_end = NULL;
- dp->width_arg_index = ARG_NONE;
- dp->precision_start = NULL;
- dp->precision_end = NULL;
- dp->precision_arg_index = ARG_NONE;
- dp->arg_index = ARG_NONE;
-
- /* Test for positional argument. */
- if (*cp >= '0' && *cp <= '9')
- {
- const CHAR_T *np;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- ;
- if (*np == '$')
- {
- size_t n = 0;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- n = xsum (xtimes (n, 10), *np - '0');
- if (n == 0)
- /* Positional argument 0. */
- goto error;
- if (size_overflow_p (n))
- /* n too large, would lead to out of memory later. */
- goto error;
- arg_index = n - 1;
- cp = np + 1;
- }
- }
-
- /* Read the flags. */
- for (;;)
- {
- if (*cp == '\'')
- {
- dp->flags |= FLAG_GROUP;
- cp++;
- }
- else if (*cp == '-')
- {
- dp->flags |= FLAG_LEFT;
- cp++;
- }
- else if (*cp == '+')
- {
- dp->flags |= FLAG_SHOWSIGN;
- cp++;
- }
- else if (*cp == ' ')
- {
- dp->flags |= FLAG_SPACE;
- cp++;
- }
- else if (*cp == '#')
- {
- dp->flags |= FLAG_ALT;
- cp++;
- }
- else if (*cp == '0')
- {
- dp->flags |= FLAG_ZERO;
- cp++;
- }
- else
- break;
- }
-
- /* Parse the field width. */
- if (*cp == '*')
- {
- dp->width_start = cp;
- cp++;
- dp->width_end = cp;
- if (max_width_length < 1)
- max_width_length = 1;
-
- /* Test for positional argument. */
- if (*cp >= '0' && *cp <= '9')
- {
- const CHAR_T *np;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- ;
- if (*np == '$')
- {
- size_t n = 0;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- n = xsum (xtimes (n, 10), *np - '0');
- if (n == 0)
- /* Positional argument 0. */
- goto error;
- if (size_overflow_p (n))
- /* n too large, would lead to out of memory later. */
- goto error;
- dp->width_arg_index = n - 1;
- cp = np + 1;
- }
- }
- if (dp->width_arg_index == ARG_NONE)
- {
- dp->width_arg_index = arg_posn++;
- if (dp->width_arg_index == ARG_NONE)
- /* arg_posn wrapped around. */
- goto error;
- }
- REGISTER_ARG (dp->width_arg_index, TYPE_INT);
- }
- else if (*cp >= '0' && *cp <= '9')
- {
- size_t width_length;
-
- dp->width_start = cp;
- for (; *cp >= '0' && *cp <= '9'; cp++)
- ;
- dp->width_end = cp;
- width_length = dp->width_end - dp->width_start;
- if (max_width_length < width_length)
- max_width_length = width_length;
- }
-
- /* Parse the precision. */
- if (*cp == '.')
- {
- cp++;
- if (*cp == '*')
- {
- dp->precision_start = cp - 1;
- cp++;
- dp->precision_end = cp;
- if (max_precision_length < 2)
- max_precision_length = 2;
-
- /* Test for positional argument. */
- if (*cp >= '0' && *cp <= '9')
- {
- const CHAR_T *np;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- ;
- if (*np == '$')
- {
- size_t n = 0;
-
- for (np = cp; *np >= '0' && *np <= '9'; np++)
- n = xsum (xtimes (n, 10), *np - '0');
- if (n == 0)
- /* Positional argument 0. */
- goto error;
- if (size_overflow_p (n))
- /* n too large, would lead to out of memory
- later. */
- goto error;
- dp->precision_arg_index = n - 1;
- cp = np + 1;
- }
- }
- if (dp->precision_arg_index == ARG_NONE)
- {
- dp->precision_arg_index = arg_posn++;
- if (dp->precision_arg_index == ARG_NONE)
- /* arg_posn wrapped around. */
- goto error;
- }
- REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
- }
- else
- {
- size_t precision_length;
-
- dp->precision_start = cp - 1;
- for (; *cp >= '0' && *cp <= '9'; cp++)
- ;
- dp->precision_end = cp;
- precision_length = dp->precision_end - dp->precision_start;
- if (max_precision_length < precision_length)
- max_precision_length = precision_length;
- }
- }
-
- {
- arg_type type;
-
- /* Parse argument type/size specifiers. */
- {
- int flags = 0;
-
- for (;;)
- {
- if (*cp == 'h')
- {
- flags |= (1 << (flags & 1));
- cp++;
- }
- else if (*cp == 'L')
- {
- flags |= 4;
- cp++;
- }
- else if (*cp == 'l')
- {
- flags += 8;
- cp++;
- }
-#ifdef HAVE_INTMAX_T
- else if (*cp == 'j')
- {
- if (sizeof (intmax_t) > sizeof (long))
- {
- /* intmax_t = long long */
- flags += 16;
- }
- else if (sizeof (intmax_t) > sizeof (int))
- {
- /* intmax_t = long */
- flags += 8;
- }
- cp++;
- }
-#endif
- else if (*cp == 'z' || *cp == 'Z')
- {
- /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
- because the warning facility in gcc-2.95.2 understands
- only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */
- if (sizeof (size_t) > sizeof (long))
- {
- /* size_t = long long */
- flags += 16;
- }
- else if (sizeof (size_t) > sizeof (int))
- {
- /* size_t = long */
- flags += 8;
- }
- cp++;
- }
- else if (*cp == 't')
- {
- if (sizeof (ptrdiff_t) > sizeof (long))
- {
- /* ptrdiff_t = long long */
- flags += 16;
- }
- else if (sizeof (ptrdiff_t) > sizeof (int))
- {
- /* ptrdiff_t = long */
- flags += 8;
- }
- cp++;
- }
- else
- break;
- }
-
- /* Read the conversion character. */
- c = *cp++;
- switch (c)
- {
- case 'd': case 'i':
-#ifdef HAVE_LONG_LONG
- if (flags >= 16 || (flags & 4))
- type = TYPE_LONGLONGINT;
- else
-#endif
- if (flags >= 8)
- type = TYPE_LONGINT;
- else if (flags & 2)
- type = TYPE_SCHAR;
- else if (flags & 1)
- type = TYPE_SHORT;
- else
- type = TYPE_INT;
- break;
- case 'o': case 'u': case 'x': case 'X':
-#ifdef HAVE_LONG_LONG
- if (flags >= 16 || (flags & 4))
- type = TYPE_ULONGLONGINT;
- else
-#endif
- if (flags >= 8)
- type = TYPE_ULONGINT;
- else if (flags & 2)
- type = TYPE_UCHAR;
- else if (flags & 1)
- type = TYPE_USHORT;
- else
- type = TYPE_UINT;
- break;
- case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
- case 'a': case 'A':
-#ifdef HAVE_LONG_DOUBLE
- if (flags >= 16 || (flags & 4))
- type = TYPE_LONGDOUBLE;
- else
-#endif
- type = TYPE_DOUBLE;
- break;
- case 'c':
- if (flags >= 8)
-#ifdef HAVE_WINT_T
- type = TYPE_WIDE_CHAR;
-#else
- goto error;
-#endif
- else
- type = TYPE_CHAR;
- break;
-#ifdef HAVE_WINT_T
- case 'C':
- type = TYPE_WIDE_CHAR;
- c = 'c';
- break;
-#endif
- case 's':
- if (flags >= 8)
-#ifdef HAVE_WCHAR_T
- type = TYPE_WIDE_STRING;
-#else
- goto error;
-#endif
- else
- type = TYPE_STRING;
- break;
-#ifdef HAVE_WCHAR_T
- case 'S':
- type = TYPE_WIDE_STRING;
- c = 's';
- break;
-#endif
- case 'p':
- type = TYPE_POINTER;
- break;
- case 'n':
-#ifdef HAVE_LONG_LONG
- if (flags >= 16 || (flags & 4))
- type = TYPE_COUNT_LONGLONGINT_POINTER;
- else
-#endif
- if (flags >= 8)
- type = TYPE_COUNT_LONGINT_POINTER;
- else if (flags & 2)
- type = TYPE_COUNT_SCHAR_POINTER;
- else if (flags & 1)
- type = TYPE_COUNT_SHORT_POINTER;
- else
- type = TYPE_COUNT_INT_POINTER;
- break;
- case '%':
- type = TYPE_NONE;
- break;
- default:
- /* Unknown conversion character. */
- goto error;
- }
- }
-
- if (type != TYPE_NONE)
- {
- dp->arg_index = arg_index;
- if (dp->arg_index == ARG_NONE)
- {
- dp->arg_index = arg_posn++;
- if (dp->arg_index == ARG_NONE)
- /* arg_posn wrapped around. */
- goto error;
- }
- REGISTER_ARG (dp->arg_index, type);
- }
- dp->conversion = c;
- dp->dir_end = cp;
- }
-
- d->count++;
- if (d->count >= d_allocated)
- {
- size_t memory_size;
- DIRECTIVE *memory;
-
- d_allocated = xtimes (d_allocated, 2);
- memory_size = xtimes (d_allocated, sizeof (DIRECTIVE));
- if (size_overflow_p (memory_size))
- /* Overflow, would lead to out of memory. */
- goto error;
- memory = realloc (d->dir, memory_size);
- if (memory == NULL)
- /* Out of memory. */
- goto error;
- d->dir = memory;
- }
- }
- }
- d->dir[d->count].dir_start = cp;
-
- d->max_width_length = max_width_length;
- d->max_precision_length = max_precision_length;
- return 0;
-
-error:
- if (a->arg)
- free (a->arg);
- if (d->dir)
- free (d->dir);
- return -1;
-}
-
-#undef DIRECTIVES
-#undef DIRECTIVE
-#undef CHAR_T
-#undef PRINTF_PARSE
diff --git a/navit/support/gettext_intl/printf-parse.h b/navit/support/gettext_intl/printf-parse.h
deleted file mode 100644
index 8aec50e2a..000000000
--- a/navit/support/gettext_intl/printf-parse.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Parse printf format string.
- Copyright (C) 1999, 2002-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. */
-
-#ifndef _PRINTF_PARSE_H
-#define _PRINTF_PARSE_H
-
-#include "printf-args.h"
-
-
-/* Flags */
-#define FLAG_GROUP 1 /* ' flag */
-#define FLAG_LEFT 2 /* - flag */
-#define FLAG_SHOWSIGN 4 /* + flag */
-#define FLAG_SPACE 8 /* space flag */
-#define FLAG_ALT 16 /* # flag */
-#define FLAG_ZERO 32
-
-/* arg_index value indicating that no argument is consumed. */
-#define ARG_NONE (~(size_t)0)
-
-/* A parsed directive. */
-typedef struct
-{
- const char* dir_start;
- const char* dir_end;
- int flags;
- const char* width_start;
- const char* width_end;
- size_t width_arg_index;
- const char* precision_start;
- const char* precision_end;
- size_t precision_arg_index;
- char conversion; /* d i o u x X f e E g G c s p n U % but not C S */
- size_t arg_index;
-}
-char_directive;
-
-/* A parsed format string. */
-typedef struct
-{
- size_t count;
- char_directive *dir;
- size_t max_width_length;
- size_t max_precision_length;
-}
-char_directives;
-
-
-/* Parses the format string. Fills in the number N of directives, and fills
- in directives[0], ..., directives[N-1], and sets directives[N].dir_start
- to the end of the format string. Also fills in the arg_type fields of the
- arguments and the needed count of arguments. */
-#ifdef STATIC
-STATIC
-#else
-extern
-#endif
-int printf_parse (const char *format, char_directives *d, arguments *a);
-
-#endif /* _PRINTF_PARSE_H */
diff --git a/navit/support/gettext_intl/printf.c b/navit/support/gettext_intl/printf.c
deleted file mode 100644
index 8e5840137..000000000
--- a/navit/support/gettext_intl/printf.c
+++ /dev/null
@@ -1,373 +0,0 @@
-/* Formatted output to strings, using POSIX/XSI format strings with positions.
- Copyright (C) 2003 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno@clisp.org>, 2003.
-
- 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-
-#ifdef __GNUC__
-# undef alloca
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# if defined HAVE_ALLOCA_H || defined _LIBC
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca
-char *alloca ();
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#include <stdio.h>
-
-#if !HAVE_POSIX_PRINTF
-
-#include <string.h>
-
-/* When building a DLL, we must export some functions. Note that because
- the functions are only defined for binary backward compatibility, we
- don't need to use __declspec(dllimport) in any case. */
-#if defined _MSC_VER && BUILDING_DLL
-# define DLL_EXPORTED __declspec(dllexport)
-#else
-# define DLL_EXPORTED
-#endif
-
-#define STATIC static
-
-/* Define auxiliary functions declared in "printf-args.h". */
-#include "printf-args.c"
-
-/* Define auxiliary functions declared in "printf-parse.h". */
-#include "printf-parse.c"
-
-/* Define functions declared in "vasnprintf.h". */
-#define vasnprintf libintl_vasnprintf
-#include "vasnprintf.c"
-#if 0 /* not needed */
-#define asnprintf libintl_asnprintf
-#include "asnprintf.c"
-#endif
-
-DLL_EXPORTED
-int
-libintl_vfprintf (FILE *stream, const char *format, va_list args)
-{
- if (strchr (format, '$') == NULL)
- return vfprintf (stream, format, args);
- else
- {
- size_t length;
- char *result = libintl_vasnprintf (NULL, &length, format, args);
- int retval = -1;
- if (result != NULL)
- {
- if (fwrite (result, 1, length, stream) == length)
- retval = length;
- free (result);
- }
- return retval;
- }
-}
-
-DLL_EXPORTED
-int
-libintl_fprintf (FILE *stream, const char *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vfprintf (stream, format, args);
- va_end (args);
- return retval;
-}
-
-DLL_EXPORTED
-int
-libintl_vprintf (const char *format, va_list args)
-{
- return libintl_vfprintf (stdout, format, args);
-}
-
-DLL_EXPORTED
-int
-libintl_printf (const char *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vprintf (format, args);
- va_end (args);
- return retval;
-}
-
-DLL_EXPORTED
-int
-libintl_vsprintf (char *resultbuf, const char *format, va_list args)
-{
- if (strchr (format, '$') == NULL)
- return vsprintf (resultbuf, format, args);
- else
- {
- size_t length = (size_t) ~0 / (4 * sizeof (char));
- char *result = libintl_vasnprintf (resultbuf, &length, format, args);
- if (result != resultbuf)
- {
- free (result);
- return -1;
- }
- else
- return length;
- }
-}
-
-DLL_EXPORTED
-int
-libintl_sprintf (char *resultbuf, const char *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vsprintf (resultbuf, format, args);
- va_end (args);
- return retval;
-}
-
-#if HAVE_SNPRINTF
-
-# if HAVE_DECL__SNPRINTF
- /* Windows. */
-# define system_vsnprintf _vsnprintf
-# else
- /* Unix. */
-# define system_vsnprintf vsnprintf
-# endif
-
-DLL_EXPORTED
-int
-libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list args)
-{
- if (strchr (format, '$') == NULL)
- return system_vsnprintf (resultbuf, length, format, args);
- else
- {
- size_t maxlength = length;
- char *result = libintl_vasnprintf (resultbuf, &length, format, args);
- if (result != resultbuf)
- {
- if (maxlength > 0)
- {
- if (length < maxlength)
- abort ();
- memcpy (resultbuf, result, maxlength - 1);
- resultbuf[maxlength - 1] = '\0';
- }
- free (result);
- return -1;
- }
- else
- return length;
- }
-}
-
-DLL_EXPORTED
-int
-libintl_snprintf (char *resultbuf, size_t length, const char *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vsnprintf (resultbuf, length, format, args);
- va_end (args);
- return retval;
-}
-
-#endif
-
-#if HAVE_ASPRINTF
-
-DLL_EXPORTED
-int
-libintl_vasprintf (char **resultp, const char *format, va_list args)
-{
- size_t length;
- char *result = libintl_vasnprintf (NULL, &length, format, args);
- if (result == NULL)
- return -1;
- *resultp = result;
- return length;
-}
-
-DLL_EXPORTED
-int
-libintl_asprintf (char **resultp, const char *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vasprintf (resultp, format, args);
- va_end (args);
- return retval;
-}
-
-#endif
-
-#if HAVE_FWPRINTF
-
-#include <wchar.h>
-
-#define WIDE_CHAR_VERSION 1
-
-/* Define auxiliary functions declared in "wprintf-parse.h". */
-#include "printf-parse.c"
-
-/* Define functions declared in "vasnprintf.h". */
-#define vasnwprintf libintl_vasnwprintf
-#include "vasnprintf.c"
-#if 0 /* not needed */
-#define asnwprintf libintl_asnwprintf
-#include "asnprintf.c"
-#endif
-
-# if HAVE_DECL__SNWPRINTF
- /* Windows. */
-# define system_vswprintf _vsnwprintf
-# else
- /* Unix. */
-# define system_vswprintf vswprintf
-# endif
-
-DLL_EXPORTED
-int
-libintl_vfwprintf (FILE *stream, const wchar_t *format, va_list args)
-{
- if (wcschr (format, '$') == NULL)
- return vfwprintf (stream, format, args);
- else
- {
- size_t length;
- wchar_t *result = libintl_vasnwprintf (NULL, &length, format, args);
- int retval = -1;
- if (result != NULL)
- {
- size_t i;
- for (i = 0; i < length; i++)
- if (fputwc (result[i], stream) == WEOF)
- break;
- if (i == length)
- retval = length;
- free (result);
- }
- return retval;
- }
-}
-
-DLL_EXPORTED
-int
-libintl_fwprintf (FILE *stream, const wchar_t *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vfwprintf (stream, format, args);
- va_end (args);
- return retval;
-}
-
-DLL_EXPORTED
-int
-libintl_vwprintf (const wchar_t *format, va_list args)
-{
- return libintl_vfwprintf (stdout, format, args);
-}
-
-DLL_EXPORTED
-int
-libintl_wprintf (const wchar_t *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vwprintf (format, args);
- va_end (args);
- return retval;
-}
-
-DLL_EXPORTED
-int
-libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_list args)
-{
- if (wcschr (format, '$') == NULL)
- return system_vswprintf (resultbuf, length, format, args);
- else
- {
- size_t maxlength = length;
- wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args);
- if (result != resultbuf)
- {
- if (maxlength > 0)
- {
- if (length < maxlength)
- abort ();
- memcpy (resultbuf, result, (maxlength - 1) * sizeof (wchar_t));
- resultbuf[maxlength - 1] = 0;
- }
- free (result);
- return -1;
- }
- else
- return length;
- }
-}
-
-DLL_EXPORTED
-int
-libintl_swprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, ...)
-{
- va_list args;
- int retval;
-
- va_start (args, format);
- retval = libintl_vswprintf (resultbuf, length, format, args);
- va_end (args);
- return retval;
-}
-
-#endif
-
-#endif
diff --git a/navit/support/gettext_intl/ref-add.sin b/navit/support/gettext_intl/ref-add.sin
deleted file mode 100644
index 167374e3c..000000000
--- a/navit/support/gettext_intl/ref-add.sin
+++ /dev/null
@@ -1,31 +0,0 @@
-# Add this package to a list of references stored in a text file.
-#
-# Copyright (C) 2000 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.
-#
-# Written by Bruno Haible <haible@clisp.cons.org>.
-#
-/^# Packages using this file: / {
- s/# Packages using this file://
- ta
- :a
- s/ @PACKAGE@ / @PACKAGE@ /
- tb
- s/ $/ @PACKAGE@ /
- :b
- s/^/# Packages using this file:/
-}
diff --git a/navit/support/gettext_intl/ref-del.sin b/navit/support/gettext_intl/ref-del.sin
deleted file mode 100644
index 613cf37f3..000000000
--- a/navit/support/gettext_intl/ref-del.sin
+++ /dev/null
@@ -1,26 +0,0 @@
-# Remove this package from a list of references stored in a text file.
-#
-# Copyright (C) 2000 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.
-#
-# Written by Bruno Haible <haible@clisp.cons.org>.
-#
-/^# Packages using this file: / {
- s/# Packages using this file://
- s/ @PACKAGE@ / /
- s/^/# Packages using this file:/
-}
diff --git a/navit/support/gettext_intl/relocatable.c b/navit/support/gettext_intl/relocatable.c
deleted file mode 100644
index b49446f3c..000000000
--- a/navit/support/gettext_intl/relocatable.c
+++ /dev/null
@@ -1,449 +0,0 @@
-/* Provide relocatable packages.
- Copyright (C) 2003 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno@clisp.org>, 2003.
-
- 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. */
-
-
-/* Tell glibc's <stdio.h> to provide a prototype for getline().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-/* Specification. */
-#include "relocatable.h"
-
-#if ENABLE_RELOCATABLE
-
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef NO_XMALLOC
-# define xmalloc malloc
-#else
-# include "xalloc.h"
-#endif
-
-#if defined _WIN32 || defined __WIN32__
-# define WIN32_LEAN_AND_MEAN
-# include <windows.h>
-#endif
-
-#if DEPENDS_ON_LIBCHARSET
-# include <libcharset.h>
-#endif
-#if DEPENDS_ON_LIBICONV && HAVE_ICONV
-# include <iconv.h>
-#endif
-#if DEPENDS_ON_LIBINTL && USE_NATIVE_LANGUAGE_SUPPORT
-# include <libintl.h>
-#endif
-
-/* Faked cheap 'bool'. */
-#undef bool
-#undef false
-#undef true
-#define bool int
-#define false 0
-#define true 1
-
-/* Pathname support.
- ISSLASH(C) tests whether C is a directory separator character.
- IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
- */
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS */
-# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-# define HAS_DEVICE(P) \
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
- && (P)[1] == ':')
-# define IS_PATH_WITH_DIR(P) \
- (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
-# define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0)
-#else
- /* Unix */
-# define ISSLASH(C) ((C) == '/')
-# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
-# define FILESYSTEM_PREFIX_LEN(P) 0
-#endif
-
-/* Original installation prefix. */
-static char *orig_prefix;
-static size_t orig_prefix_len;
-/* Current installation prefix. */
-static char *curr_prefix;
-static size_t curr_prefix_len;
-/* These prefixes do not end in a slash. Anything that will be concatenated
- to them must start with a slash. */
-
-/* Sets the original and the current installation prefix of this module.
- Relocation simply replaces a pathname starting with the original prefix
- by the corresponding pathname with the current prefix instead. Both
- prefixes should be directory names without trailing slash (i.e. use ""
- instead of "/"). */
-static void
-set_this_relocation_prefix (const char *orig_prefix_arg,
- const char *curr_prefix_arg)
-{
- if (orig_prefix_arg != NULL && curr_prefix_arg != NULL
- /* Optimization: if orig_prefix and curr_prefix are equal, the
- relocation is a nop. */
- && strcmp (orig_prefix_arg, curr_prefix_arg) != 0)
- {
- /* Duplicate the argument strings. */
- char *memory;
-
- orig_prefix_len = strlen (orig_prefix_arg);
- curr_prefix_len = strlen (curr_prefix_arg);
- memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1);
-#ifdef NO_XMALLOC
- if (memory != NULL)
-#endif
- {
- memcpy (memory, orig_prefix_arg, orig_prefix_len + 1);
- orig_prefix = memory;
- memory += orig_prefix_len + 1;
- memcpy (memory, curr_prefix_arg, curr_prefix_len + 1);
- curr_prefix = memory;
- return;
- }
- }
- orig_prefix = NULL;
- curr_prefix = NULL;
- /* Don't worry about wasted memory here - this function is usually only
- called once. */
-}
-
-/* Sets the original and the current installation prefix of the package.
- Relocation simply replaces a pathname starting with the original prefix
- by the corresponding pathname with the current prefix instead. Both
- prefixes should be directory names without trailing slash (i.e. use ""
- instead of "/"). */
-void
-set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg)
-{
- set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-
- /* Now notify all dependent libraries. */
-#if DEPENDS_ON_LIBCHARSET
- libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-#endif
-#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109
- libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-#endif
-#if DEPENDS_ON_LIBINTL && USE_NATIVE_LANGUAGE_SUPPORT && defined libintl_set_relocation_prefix
- libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg);
-#endif
-}
-
-#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR)
-
-/* Convenience function:
- Computes the current installation prefix, based on the original
- installation prefix, the original installation directory of a particular
- file, and the current pathname of this file. Returns NULL upon failure. */
-#ifdef IN_LIBRARY
-#define compute_curr_prefix local_compute_curr_prefix
-static
-#endif
-const char *
-compute_curr_prefix (const char *orig_installprefix,
- const char *orig_installdir,
- const char *curr_pathname)
-{
- const char *curr_installdir;
- const char *rel_installdir;
-
- if (curr_pathname == NULL)
- return NULL;
-
- /* Determine the relative installation directory, relative to the prefix.
- This is simply the difference between orig_installprefix and
- orig_installdir. */
- if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix))
- != 0)
- /* Shouldn't happen - nothing should be installed outside $(prefix). */
- return NULL;
- rel_installdir = orig_installdir + strlen (orig_installprefix);
-
- /* Determine the current installation directory. */
- {
- const char *p_base = curr_pathname + FILESYSTEM_PREFIX_LEN (curr_pathname);
- const char *p = curr_pathname + strlen (curr_pathname);
- char *q;
-
- while (p > p_base)
- {
- p--;
- if (ISSLASH (*p))
- break;
- }
-
- q = (char *) xmalloc (p - curr_pathname + 1);
-#ifdef NO_XMALLOC
- if (q == NULL)
- return NULL;
-#endif
- memcpy (q, curr_pathname, p - curr_pathname);
- q[p - curr_pathname] = '\0';
- curr_installdir = q;
- }
-
- /* Compute the current installation prefix by removing the trailing
- rel_installdir from it. */
- {
- const char *rp = rel_installdir + strlen (rel_installdir);
- const char *cp = curr_installdir + strlen (curr_installdir);
- const char *cp_base =
- curr_installdir + FILESYSTEM_PREFIX_LEN (curr_installdir);
-
- while (rp > rel_installdir && cp > cp_base)
- {
- bool same = false;
- const char *rpi = rp;
- const char *cpi = cp;
-
- while (rpi > rel_installdir && cpi > cp_base)
- {
- rpi--;
- cpi--;
- if (ISSLASH (*rpi) || ISSLASH (*cpi))
- {
- if (ISSLASH (*rpi) && ISSLASH (*cpi))
- same = true;
- break;
- }
-#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
- /* Win32, OS/2, DOS - case insignificant filesystem */
- if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi)
- != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi))
- break;
-#else
- if (*rpi != *cpi)
- break;
-#endif
- }
- if (!same)
- break;
- /* The last pathname component was the same. opi and cpi now point
- to the slash before it. */
- rp = rpi;
- cp = cpi;
- }
-
- if (rp > rel_installdir)
- /* Unexpected: The curr_installdir does not end with rel_installdir. */
- return NULL;
-
- {
- size_t curr_prefix_len = cp - curr_installdir;
- char *curr_prefix;
-
- curr_prefix = (char *) xmalloc (curr_prefix_len + 1);
-#ifdef NO_XMALLOC
- if (curr_prefix == NULL)
- return NULL;
-#endif
- memcpy (curr_prefix, curr_installdir, curr_prefix_len);
- curr_prefix[curr_prefix_len] = '\0';
-
- return curr_prefix;
- }
- }
-}
-
-#endif /* !IN_LIBRARY || PIC */
-
-#if defined PIC && defined INSTALLDIR
-
-/* Full pathname of shared library, or NULL. */
-static char *shared_library_fullname;
-
-#if defined _WIN32 || defined __WIN32__
-
-/* Determine the full pathname of the shared library when it is loaded. */
-
-BOOL WINAPI
-DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved)
-{
- (void) reserved;
-
- if (event == DLL_PROCESS_ATTACH)
- {
- /* The DLL is being loaded into an application's address range. */
- static char location[MAX_PATH];
-
- if (!GetModuleFileName (module_handle, location, sizeof (location)))
- /* Shouldn't happen. */
- return FALSE;
-
- if (!IS_PATH_WITH_DIR (location))
- /* Shouldn't happen. */
- return FALSE;
-
- shared_library_fullname = strdup (location);
- }
-
- return TRUE;
-}
-
-#else /* Unix */
-
-static void
-find_shared_library_fullname ()
-{
-#if defined __linux__ && __GLIBC__ >= 2
- /* Linux has /proc/self/maps. glibc 2 has the getline() function. */
- FILE *fp;
-
- /* Open the current process' maps file. It describes one VMA per line. */
- fp = fopen ("/proc/self/maps", "r");
- if (fp)
- {
- unsigned long address = (unsigned long) &find_shared_library_fullname;
- for (;;)
- {
- unsigned long start, end;
- int c;
-
- if (fscanf (fp, "%lx-%lx", &start, &end) != 2)
- break;
- if (address >= start && address <= end - 1)
- {
- /* Found it. Now see if this line contains a filename. */
- while (c = getc (fp), c != EOF && c != '\n' && c != '/')
- continue;
- if (c == '/')
- {
- size_t size;
- int len;
-
- ungetc (c, fp);
- shared_library_fullname = NULL; size = 0;
- len = getline (&shared_library_fullname, &size, fp);
- if (len >= 0)
- {
- /* Success: filled shared_library_fullname. */
- if (len > 0 && shared_library_fullname[len - 1] == '\n')
- shared_library_fullname[len - 1] = '\0';
- }
- }
- break;
- }
- while (c = getc (fp), c != EOF && c != '\n')
- continue;
- }
- fclose (fp);
- }
-#endif
-}
-
-#endif /* WIN32 / Unix */
-
-/* Return the full pathname of the current shared library.
- Return NULL if unknown.
- Guaranteed to work only on Linux and Woe32. */
-static char *
-get_shared_library_fullname ()
-{
-#if !(defined _WIN32 || defined __WIN32__)
- static bool tried_find_shared_library_fullname;
- if (!tried_find_shared_library_fullname)
- {
- find_shared_library_fullname ();
- tried_find_shared_library_fullname = true;
- }
-#endif
- return shared_library_fullname;
-}
-
-#endif /* PIC */
-
-/* Returns the pathname, relocated according to the current installation
- directory. */
-const char *
-relocate (const char *pathname)
-{
-#if defined PIC && defined INSTALLDIR
- static int initialized;
-
- /* Initialization code for a shared library. */
- if (!initialized)
- {
- /* At this point, orig_prefix and curr_prefix likely have already been
- set through the main program's set_program_name_and_installdir
- function. This is sufficient in the case that the library has
- initially been installed in the same orig_prefix. But we can do
- better, to also cover the cases that 1. it has been installed
- in a different prefix before being moved to orig_prefix and (later)
- to curr_prefix, 2. unlike the program, it has not moved away from
- orig_prefix. */
- const char *orig_installprefix = INSTALLPREFIX;
- const char *orig_installdir = INSTALLDIR;
- const char *curr_prefix_better;
-
- curr_prefix_better =
- compute_curr_prefix (orig_installprefix, orig_installdir,
- get_shared_library_fullname ());
- if (curr_prefix_better == NULL)
- curr_prefix_better = curr_prefix;
-
- set_relocation_prefix (orig_installprefix, curr_prefix_better);
-
- initialized = 1;
- }
-#endif
-
- /* Note: It is not necessary to perform case insensitive comparison here,
- even for DOS-like filesystems, because the pathname argument was
- typically created from the same Makefile variable as orig_prefix came
- from. */
- if (orig_prefix != NULL && curr_prefix != NULL
- && strncmp (pathname, orig_prefix, orig_prefix_len) == 0)
- {
- if (pathname[orig_prefix_len] == '\0')
- /* pathname equals orig_prefix. */
- return curr_prefix;
- if (ISSLASH (pathname[orig_prefix_len]))
- {
- /* pathname starts with orig_prefix. */
- const char *pathname_tail = &pathname[orig_prefix_len];
- char *result =
- (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1);
-
-#ifdef NO_XMALLOC
- if (result != NULL)
-#endif
- {
- memcpy (result, curr_prefix, curr_prefix_len);
- strcpy (result + curr_prefix_len, pathname_tail);
- return result;
- }
- }
- }
- /* Nothing to relocate. */
- return pathname;
-}
-
-#endif
diff --git a/navit/support/gettext_intl/relocatable.h b/navit/support/gettext_intl/relocatable.h
deleted file mode 100644
index 48c5b71e2..000000000
--- a/navit/support/gettext_intl/relocatable.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Provide relocatable packages.
- Copyright (C) 2003 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno@clisp.org>, 2003.
-
- 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. */
-
-#ifndef _RELOCATABLE_H
-#define _RELOCATABLE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* This can be enabled through the configure --enable-relocatable option. */
-#if ENABLE_RELOCATABLE
-
-/* When building a DLL, we must export some functions. Note that because
- this is a private .h file, we don't need to use __declspec(dllimport)
- in any case. */
-#if defined _MSC_VER && BUILDING_DLL
-# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport)
-#else
-# define RELOCATABLE_DLL_EXPORTED
-#endif
-
-/* Sets the original and the current installation prefix of the package.
- Relocation simply replaces a pathname starting with the original prefix
- by the corresponding pathname with the current prefix instead. Both
- prefixes should be directory names without trailing slash (i.e. use ""
- instead of "/"). */
-extern RELOCATABLE_DLL_EXPORTED void
- set_relocation_prefix (const char *orig_prefix,
- const char *curr_prefix);
-
-/* Returns the pathname, relocated according to the current installation
- directory. */
-extern const char * relocate (const char *pathname);
-
-/* Memory management: relocate() leaks memory, because it has to construct
- a fresh pathname. If this is a problem because your program calls
- relocate() frequently, think about caching the result. */
-
-/* Convenience function:
- Computes the current installation prefix, based on the original
- installation prefix, the original installation directory of a particular
- file, and the current pathname of this file. Returns NULL upon failure. */
-extern const char * compute_curr_prefix (const char *orig_installprefix,
- const char *orig_installdir,
- const char *curr_pathname);
-
-#else
-
-/* By default, we use the hardwired pathnames. */
-#define relocate(pathname) (pathname)
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RELOCATABLE_H */
diff --git a/navit/support/gettext_intl/textdomain.c b/navit/support/gettext_intl/textdomain.c
deleted file mode 100644
index 8745a8435..000000000
--- a/navit/support/gettext_intl/textdomain.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Implementation of the textdomain(3) function.
- 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. */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgnuintl.h"
-#endif
-#include "gettextP.h"
-
-#ifdef _LIBC
-/* We have to handle multi-threaded applications. */
-# include <bits/libc-lock.h>
-#else
-/* Provide dummy implementation if this is outside glibc. */
-# define __libc_rwlock_define(CLASS, NAME)
-# define __libc_rwlock_wrlock(NAME)
-# define __libc_rwlock_unlock(NAME)
-#endif
-
-/* The internal variables in the standalone libintl.a must have different
- names than the internal variables in GNU libc, otherwise programs
- using libintl.a cannot be linked statically. */
-#if !defined _LIBC
-# define _nl_default_default_domain libintl_nl_default_default_domain
-# define _nl_current_default_domain libintl_nl_current_default_domain
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Name of the default text domain. */
-extern const char _nl_default_default_domain[] attribute_hidden;
-
-/* Default text domain in which entries for gettext(3) are to be found. */
-extern const char *_nl_current_default_domain attribute_hidden;
-
-
-/* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
-#ifdef _LIBC
-# define TEXTDOMAIN __textdomain
-# ifndef strdup
-# define strdup(str) __strdup (str)
-# endif
-#else
-# define TEXTDOMAIN libintl_textdomain
-#endif
-
-/* Lock variable to protect the global data in the gettext implementation. */
-__libc_rwlock_define (extern, _nl_state_lock attribute_hidden)
-
-/* Set the current default message catalog to DOMAINNAME.
- If DOMAINNAME is null, return the current default.
- If DOMAINNAME is "", reset to the default of "messages". */
-char *
-TEXTDOMAIN (const char *domainname)
-{
- char *new_domain;
- char *old_domain;
-
- /* A NULL pointer requests the current setting. */
- if (domainname == NULL)
- return (char *) _nl_current_default_domain;
-
- __libc_rwlock_wrlock (_nl_state_lock);
-
- old_domain = (char *) _nl_current_default_domain;
-
- /* If domain name is the null string set to default domain "messages". */
- if (domainname[0] == '\0'
- || strcmp (domainname, _nl_default_default_domain) == 0)
- {
- _nl_current_default_domain = _nl_default_default_domain;
- new_domain = (char *) _nl_current_default_domain;
- }
- else if (strcmp (domainname, old_domain) == 0)
- /* This can happen and people will use it to signal that some
- environment variable changed. */
- new_domain = old_domain;
- else
- {
- /* If the following malloc fails `_nl_current_default_domain'
- will be NULL. This value will be returned and so signals we
- are out of core. */
-#if defined _LIBC || defined HAVE_STRDUP
- new_domain = strdup (domainname);
-#else
- size_t len = strlen (domainname) + 1;
- new_domain = (char *) malloc (len);
- if (new_domain != NULL)
- memcpy (new_domain, domainname, len);
-#endif
-
- if (new_domain != NULL)
- _nl_current_default_domain = new_domain;
- }
-
- /* We use this possibility to signal a change of the loaded catalogs
- since this is most likely the case and there is no other easy we
- to do it. Do it only when the call was successful. */
- if (new_domain != NULL)
- {
- ++_nl_msg_cat_cntr;
-
- if (old_domain != new_domain && old_domain != _nl_default_default_domain)
- free (old_domain);
- }
-
- __libc_rwlock_unlock (_nl_state_lock);
-
- return new_domain;
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library. */
-weak_alias (__textdomain, textdomain);
-#endif
diff --git a/navit/support/gettext_intl/vasnprintf.c b/navit/support/gettext_intl/vasnprintf.c
deleted file mode 100644
index 6c201a4e5..000000000
--- a/navit/support/gettext_intl/vasnprintf.c
+++ /dev/null
@@ -1,897 +0,0 @@
-/* vsprintf with automatic memory allocation.
- Copyright (C) 1999, 2002-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. */
-
-/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
- This must come before <config.h> because <config.h> may include
- <features.h>, and once <features.h> has been included, it's too late. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-#ifndef IN_LIBINTL
-# include <alloca.h>
-#endif
-
-/* Specification. */
-#if WIDE_CHAR_VERSION
-# include "vasnwprintf.h"
-#else
-# include "vasnprintf.h"
-#endif
-
-#include <stdio.h> /* snprintf(), sprintf() */
-#include <stdlib.h> /* abort(), malloc(), realloc(), free() */
-#include <string.h> /* memcpy(), strlen() */
-#include <errno.h> /* errno */
-#include <limits.h> /* CHAR_BIT */
-#include <float.h> /* DBL_MAX_EXP, LDBL_MAX_EXP */
-#if WIDE_CHAR_VERSION
-# include "wprintf-parse.h"
-#else
-# include "printf-parse.h"
-#endif
-
-/* Checked size_t computations. */
-#include "xsize.h"
-
-#ifdef HAVE_WCHAR_T
-# ifdef HAVE_WCSLEN
-# define local_wcslen wcslen
-# else
- /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
- a dependency towards this library, here is a local substitute.
- Define this substitute only once, even if this file is included
- twice in the same compilation unit. */
-# ifndef local_wcslen_defined
-# define local_wcslen_defined 1
-static size_t
-local_wcslen (const wchar_t *s)
-{
- const wchar_t *ptr;
-
- for (ptr = s; *ptr != (wchar_t) 0; ptr++)
- ;
- return ptr - s;
-}
-# endif
-# endif
-#endif
-
-#if WIDE_CHAR_VERSION
-# define VASNPRINTF vasnwprintf
-# define CHAR_T wchar_t
-# define DIRECTIVE wchar_t_directive
-# define DIRECTIVES wchar_t_directives
-# define PRINTF_PARSE wprintf_parse
-# define USE_SNPRINTF 1
-# if HAVE_DECL__SNWPRINTF
- /* On Windows, the function swprintf() has a different signature than
- on Unix; we use the _snwprintf() function instead. */
-# define SNPRINTF _snwprintf
-# else
- /* Unix. */
-# define SNPRINTF swprintf
-# endif
-#else
-# define VASNPRINTF vasnprintf
-# define CHAR_T char
-# define DIRECTIVE char_directive
-# define DIRECTIVES char_directives
-# define PRINTF_PARSE printf_parse
-# define USE_SNPRINTF (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF)
-# if HAVE_DECL__SNPRINTF
- /* Windows. */
-# define SNPRINTF _snprintf
-# else
- /* Unix. */
-# define SNPRINTF snprintf
-# endif
-#endif
-
-CHAR_T *
-VASNPRINTF (CHAR_T *resultbuf, size_t *lengthp, const CHAR_T *format, va_list args)
-{
- DIRECTIVES d;
- arguments a;
-#ifdef _MSC_VER
-#ifndef _WIN32_WCE
- static int notFirstTime=0;
- if(!notFirstTime)
- {
- _set_printf_count_output( 1 );
- notFirstTime = 1;
- }
-#endif
-#endif
-
- if (PRINTF_PARSE (format, &d, &a) < 0)
- {
- errno = EINVAL;
- return NULL;
- }
-
-#define CLEANUP() \
- free (d.dir); \
- if (a.arg) \
- free (a.arg);
-
- if (printf_fetchargs (args, &a) < 0)
- {
- CLEANUP ();
- errno = EINVAL;
- return NULL;
- }
-
- {
- size_t buf_neededlength;
- CHAR_T *buf;
- CHAR_T *buf_malloced;
- const CHAR_T *cp;
- size_t i;
- DIRECTIVE *dp;
- /* Output string accumulator. */
- CHAR_T *result;
- size_t allocated;
- size_t length;
-
- /* Allocate a small buffer that will hold a directive passed to
- sprintf or snprintf. */
- buf_neededlength =
- xsum4 (7, d.max_width_length, d.max_precision_length, 6);
-#if HAVE_ALLOCA
- if (buf_neededlength < 4000 / sizeof (CHAR_T))
- {
- buf = (CHAR_T *) alloca (buf_neededlength * sizeof (CHAR_T));
- buf_malloced = NULL;
- }
- else
-#endif
- {
- size_t buf_memsize = xtimes (buf_neededlength, sizeof (CHAR_T));
- if (size_overflow_p (buf_memsize))
- goto out_of_memory_1;
- buf = (CHAR_T *) malloc (buf_memsize);
- if (buf == NULL)
- goto out_of_memory_1;
- buf_malloced = buf;
- }
-
- if (resultbuf != NULL)
- {
- result = resultbuf;
- allocated = *lengthp;
- }
- else
- {
- result = NULL;
- allocated = 0;
- }
- length = 0;
- /* Invariants:
- result is either == resultbuf or == NULL or malloc-allocated.
- If length > 0, then result != NULL. */
-
- /* Ensures that allocated >= needed. Aborts through a jump to
- out_of_memory if needed is SIZE_MAX or otherwise too big. */
-#define ENSURE_ALLOCATION(needed) \
- if ((needed) > allocated) \
- { \
- size_t memory_size; \
- CHAR_T *memory; \
- \
- allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \
- if ((needed) > allocated) \
- allocated = (needed); \
- memory_size = xtimes (allocated, sizeof (CHAR_T)); \
- if (size_overflow_p (memory_size)) \
- goto out_of_memory; \
- if (result == resultbuf || result == NULL) \
- memory = (CHAR_T *) malloc (memory_size); \
- else \
- memory = (CHAR_T *) realloc (result, memory_size); \
- if (memory == NULL) \
- goto out_of_memory; \
- if (result == resultbuf && length > 0) \
- memcpy (memory, result, length * sizeof (CHAR_T)); \
- result = memory; \
- }
-
- for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
- {
- if (cp != dp->dir_start)
- {
- size_t n = dp->dir_start - cp;
- size_t augmented_length = xsum (length, n);
-
- ENSURE_ALLOCATION (augmented_length);
- memcpy (result + length, cp, n * sizeof (CHAR_T));
- length = augmented_length;
- }
- if (i == d.count)
- break;
-
- /* Execute a single directive. */
- if (dp->conversion == '%')
- {
- size_t augmented_length;
-
- if (!(dp->arg_index == ARG_NONE))
- abort ();
- augmented_length = xsum (length, 1);
- ENSURE_ALLOCATION (augmented_length);
- result[length] = '%';
- length = augmented_length;
- }
- else
- {
- if (!(dp->arg_index != ARG_NONE))
- abort ();
-
- if (dp->conversion == 'n')
- {
- switch (a.arg[dp->arg_index].type)
- {
- case TYPE_COUNT_SCHAR_POINTER:
- *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
- break;
- case TYPE_COUNT_SHORT_POINTER:
- *a.arg[dp->arg_index].a.a_count_short_pointer = length;
- break;
- case TYPE_COUNT_INT_POINTER:
- *a.arg[dp->arg_index].a.a_count_int_pointer = length;
- break;
- case TYPE_COUNT_LONGINT_POINTER:
- *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
- break;
-#ifdef HAVE_LONG_LONG
- case TYPE_COUNT_LONGLONGINT_POINTER:
- *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length;
- break;
-#endif
- default:
- abort ();
- }
- }
- else
- {
- arg_type type = a.arg[dp->arg_index].type;
- CHAR_T *p;
- unsigned int prefix_count;
- int prefixes[2];
-#if !USE_SNPRINTF
- size_t tmp_length;
- CHAR_T tmpbuf[700];
- CHAR_T *tmp;
-
- /* Allocate a temporary buffer of sufficient size for calling
- sprintf. */
- {
- size_t width;
- size_t precision;
-
- width = 0;
- if (dp->width_start != dp->width_end)
- {
- if (dp->width_arg_index != ARG_NONE)
- {
- int arg;
-
- if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
- abort ();
- arg = a.arg[dp->width_arg_index].a.a_int;
- width = (arg < 0 ? (unsigned int) (-arg) : arg);
- }
- else
- {
- const CHAR_T *digitp = dp->width_start;
-
- do
- width = xsum (xtimes (width, 10), *digitp++ - '0');
- while (digitp != dp->width_end);
- }
- }
-
- precision = 6;
- if (dp->precision_start != dp->precision_end)
- {
- if (dp->precision_arg_index != ARG_NONE)
- {
- int arg;
-
- if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
- abort ();
- arg = a.arg[dp->precision_arg_index].a.a_int;
- precision = (arg < 0 ? 0 : arg);
- }
- else
- {
- const CHAR_T *digitp = dp->precision_start + 1;
-
- precision = 0;
- do
- precision = xsum (xtimes (precision, 10), *digitp++ - '0');
- while (digitp != dp->precision_end);
- }
- }
-
- switch (dp->conversion)
- {
-
- case 'd': case 'i': case 'u':
-# ifdef HAVE_LONG_LONG
- if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
- * 0.30103 /* binary -> decimal */
- * 2 /* estimate for FLAG_GROUP */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- else
-# endif
- if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long) * CHAR_BIT
- * 0.30103 /* binary -> decimal */
- * 2 /* estimate for FLAG_GROUP */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- else
- tmp_length =
- (unsigned int) (sizeof (unsigned int) * CHAR_BIT
- * 0.30103 /* binary -> decimal */
- * 2 /* estimate for FLAG_GROUP */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- break;
-
- case 'o':
-# ifdef HAVE_LONG_LONG
- if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
- * 0.333334 /* binary -> octal */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- else
-# endif
- if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long) * CHAR_BIT
- * 0.333334 /* binary -> octal */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- else
- tmp_length =
- (unsigned int) (sizeof (unsigned int) * CHAR_BIT
- * 0.333334 /* binary -> octal */
- )
- + 1 /* turn floor into ceil */
- + 1; /* account for leading sign */
- break;
-
- case 'x': case 'X':
-# ifdef HAVE_LONG_LONG
- if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
- * 0.25 /* binary -> hexadecimal */
- )
- + 1 /* turn floor into ceil */
- + 2; /* account for leading sign or alternate form */
- else
-# endif
- if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
- tmp_length =
- (unsigned int) (sizeof (unsigned long) * CHAR_BIT
- * 0.25 /* binary -> hexadecimal */
- )
- + 1 /* turn floor into ceil */
- + 2; /* account for leading sign or alternate form */
- else
- tmp_length =
- (unsigned int) (sizeof (unsigned int) * CHAR_BIT
- * 0.25 /* binary -> hexadecimal */
- )
- + 1 /* turn floor into ceil */
- + 2; /* account for leading sign or alternate form */
- break;
-
- case 'f': case 'F':
-# ifdef HAVE_LONG_DOUBLE
- if (type == TYPE_LONGDOUBLE)
- tmp_length =
- (unsigned int) (LDBL_MAX_EXP
- * 0.30103 /* binary -> decimal */
- * 2 /* estimate for FLAG_GROUP */
- )
- + 1 /* turn floor into ceil */
- + 10; /* sign, decimal point etc. */
- else
-# endif
- tmp_length =
- (unsigned int) (DBL_MAX_EXP
- * 0.30103 /* binary -> decimal */
- * 2 /* estimate for FLAG_GROUP */
- )
- + 1 /* turn floor into ceil */
- + 10; /* sign, decimal point etc. */
- tmp_length = xsum (tmp_length, precision);
- break;
-
- case 'e': case 'E': case 'g': case 'G':
- case 'a': case 'A':
- tmp_length =
- 12; /* sign, decimal point, exponent etc. */
- tmp_length = xsum (tmp_length, precision);
- break;
-
- case 'c':
-# if defined HAVE_WINT_T && !WIDE_CHAR_VERSION
- if (type == TYPE_WIDE_CHAR)
- tmp_length = MB_CUR_MAX;
- else
-# endif
- tmp_length = 1;
- break;
-
- case 's':
-# ifdef HAVE_WCHAR_T
- if (type == TYPE_WIDE_STRING)
- {
- tmp_length =
- local_wcslen (a.arg[dp->arg_index].a.a_wide_string);
-
-# if !WIDE_CHAR_VERSION
- tmp_length = xtimes (tmp_length, MB_CUR_MAX);
-# endif
- }
- else
-# endif
- tmp_length = strlen (a.arg[dp->arg_index].a.a_string);
- break;
-
- case 'p':
- tmp_length =
- (unsigned int) (sizeof (void *) * CHAR_BIT
- * 0.25 /* binary -> hexadecimal */
- )
- + 1 /* turn floor into ceil */
- + 2; /* account for leading 0x */
- break;
-
- default:
- abort ();
- }
-
- if (tmp_length < width)
- tmp_length = width;
-
- tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */
- }
-
- if (tmp_length <= sizeof (tmpbuf) / sizeof (CHAR_T))
- tmp = tmpbuf;
- else
- {
- size_t tmp_memsize = xtimes (tmp_length, sizeof (CHAR_T));
-
- if (size_overflow_p (tmp_memsize))
- /* Overflow, would lead to out of memory. */
- goto out_of_memory;
- tmp = (CHAR_T *) malloc (tmp_memsize);
- if (tmp == NULL)
- /* Out of memory. */
- goto out_of_memory;
- }
-#endif
-
- /* Construct the format string for calling snprintf or
- sprintf. */
- p = buf;
- *p++ = '%';
- if (dp->flags & FLAG_GROUP)
- *p++ = '\'';
- if (dp->flags & FLAG_LEFT)
- *p++ = '-';
- if (dp->flags & FLAG_SHOWSIGN)
- *p++ = '+';
- if (dp->flags & FLAG_SPACE)
- *p++ = ' ';
- if (dp->flags & FLAG_ALT)
- *p++ = '#';
- if (dp->flags & FLAG_ZERO)
- *p++ = '0';
- if (dp->width_start != dp->width_end)
- {
- size_t n = dp->width_end - dp->width_start;
- memcpy (p, dp->width_start, n * sizeof (CHAR_T));
- p += n;
- }
- if (dp->precision_start != dp->precision_end)
- {
- size_t n = dp->precision_end - dp->precision_start;
- memcpy (p, dp->precision_start, n * sizeof (CHAR_T));
- p += n;
- }
-
- switch (type)
- {
-#ifdef HAVE_LONG_LONG
- case TYPE_LONGLONGINT:
- case TYPE_ULONGLONGINT:
- *p++ = 'l';
- /*FALLTHROUGH*/
-#endif
- case TYPE_LONGINT:
- case TYPE_ULONGINT:
-#ifdef HAVE_WINT_T
- case TYPE_WIDE_CHAR:
-#endif
-#ifdef HAVE_WCHAR_T
- case TYPE_WIDE_STRING:
-#endif
- *p++ = 'l';
- break;
-#ifdef HAVE_LONG_DOUBLE
- case TYPE_LONGDOUBLE:
- *p++ = 'L';
- break;
-#endif
- default:
- break;
- }
- *p = dp->conversion;
-#if USE_SNPRINTF
- p[1] = '%';
- p[2] = 'n';
- p[3] = '\0';
-#else
- p[1] = '\0';
-#endif
-
- /* Construct the arguments for calling snprintf or sprintf. */
- prefix_count = 0;
- if (dp->width_arg_index != ARG_NONE)
- {
- if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
- abort ();
- prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int;
- }
- if (dp->precision_arg_index != ARG_NONE)
- {
- if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
- abort ();
- prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int;
- }
-
-#if USE_SNPRINTF
- /* Prepare checking whether snprintf returns the count
- via %n. */
- ENSURE_ALLOCATION (xsum (length, 1));
- result[length] = '\0';
-#endif
-
- for (;;)
- {
- size_t maxlen;
- int count;
- int retcount;
-
- maxlen = allocated - length;
- count = -1;
- retcount = 0;
-
-#if USE_SNPRINTF
-# define SNPRINTF_BUF(arg) \
- switch (prefix_count) \
- { \
- case 0: \
- retcount = SNPRINTF (result + length, maxlen, buf, \
- arg, &count); \
- break; \
- case 1: \
- retcount = SNPRINTF (result + length, maxlen, buf, \
- prefixes[0], arg, &count); \
- break; \
- case 2: \
- retcount = SNPRINTF (result + length, maxlen, buf, \
- prefixes[0], prefixes[1], arg, \
- &count); \
- break; \
- default: \
- abort (); \
- }
-#else
-# define SNPRINTF_BUF(arg) \
- switch (prefix_count) \
- { \
- case 0: \
- count = sprintf (tmp, buf, arg); \
- break; \
- case 1: \
- count = sprintf (tmp, buf, prefixes[0], arg); \
- break; \
- case 2: \
- count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
- arg); \
- break; \
- default: \
- abort (); \
- }
-#endif
-
- switch (type)
- {
- case TYPE_SCHAR:
- {
- int arg = a.arg[dp->arg_index].a.a_schar;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_UCHAR:
- {
- unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_SHORT:
- {
- int arg = a.arg[dp->arg_index].a.a_short;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_USHORT:
- {
- unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_INT:
- {
- int arg = a.arg[dp->arg_index].a.a_int;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_UINT:
- {
- unsigned int arg = a.arg[dp->arg_index].a.a_uint;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_LONGINT:
- {
- long int arg = a.arg[dp->arg_index].a.a_longint;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_ULONGINT:
- {
- unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint;
- SNPRINTF_BUF (arg);
- }
- break;
-#ifdef HAVE_LONG_LONG
- case TYPE_LONGLONGINT:
- {
- long long int arg = a.arg[dp->arg_index].a.a_longlongint;
- SNPRINTF_BUF (arg);
- }
- break;
- case TYPE_ULONGLONGINT:
- {
- unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint;
- SNPRINTF_BUF (arg);
- }
- break;
-#endif
- case TYPE_DOUBLE:
- {
- double arg = a.arg[dp->arg_index].a.a_double;
- SNPRINTF_BUF (arg);
- }
- break;
-#ifdef HAVE_LONG_DOUBLE
- case TYPE_LONGDOUBLE:
- {
- long double arg = a.arg[dp->arg_index].a.a_longdouble;
- SNPRINTF_BUF (arg);
- }
- break;
-#endif
- case TYPE_CHAR:
- {
- int arg = a.arg[dp->arg_index].a.a_char;
- SNPRINTF_BUF (arg);
- }
- break;
-#ifdef HAVE_WINT_T
- case TYPE_WIDE_CHAR:
- {
- wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
- SNPRINTF_BUF (arg);
- }
- break;
-#endif
- case TYPE_STRING:
- {
- const char *arg = a.arg[dp->arg_index].a.a_string;
- SNPRINTF_BUF (arg);
- }
- break;
-#ifdef HAVE_WCHAR_T
- case TYPE_WIDE_STRING:
- {
- const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
- SNPRINTF_BUF (arg);
- }
- break;
-#endif
- case TYPE_POINTER:
- {
- void *arg = a.arg[dp->arg_index].a.a_pointer;
- SNPRINTF_BUF (arg);
- }
- break;
- default:
- abort ();
- }
-
-#if USE_SNPRINTF
- /* Portability: Not all implementations of snprintf()
- are ISO C 99 compliant. Determine the number of
- bytes that snprintf() has produced or would have
- produced. */
- if (count >= 0)
- {
- /* Verify that snprintf() has NUL-terminated its
- result. */
- if (count < maxlen && result[length + count] != '\0')
- abort ();
- /* Portability hack. */
- if (retcount > count)
- count = retcount;
- }
- else
- {
- /* snprintf() doesn't understand the '%n'
- directive. */
- if (p[1] != '\0')
- {
- /* Don't use the '%n' directive; instead, look
- at the snprintf() return value. */
- p[1] = '\0';
- continue;
- }
- else
- {
- /* Look at the snprintf() return value. */
- if (retcount < 0)
- {
- /* HP-UX 10.20 snprintf() is doubly deficient:
- It doesn't understand the '%n' directive,
- *and* it returns -1 (rather than the length
- that would have been required) when the
- buffer is too small. */
- size_t bigger_need =
- xsum (xtimes (allocated, 2), 12);
- ENSURE_ALLOCATION (bigger_need);
- continue;
- }
- else
- count = retcount;
- }
- }
-#endif
-
- /* Attempt to handle failure. */
- if (count < 0)
- {
- if (!(result == resultbuf || result == NULL))
- free (result);
- if (buf_malloced != NULL)
- free (buf_malloced);
- CLEANUP ();
- errno = EINVAL;
- return NULL;
- }
-
-#if !USE_SNPRINTF
- if (count >= tmp_length)
- /* tmp_length was incorrectly calculated - fix the
- code above! */
- abort ();
-#endif
-
- /* Make room for the result. */
- if (count >= maxlen)
- {
- /* Need at least count bytes. But allocate
- proportionally, to avoid looping eternally if
- snprintf() reports a too small count. */
- size_t n =
- xmax (xsum (length, count), xtimes (allocated, 2));
-
- ENSURE_ALLOCATION (n);
-#if USE_SNPRINTF
- continue;
-#endif
- }
-
-#if USE_SNPRINTF
- /* The snprintf() result did fit. */
-#else
- /* Append the sprintf() result. */
- memcpy (result + length, tmp, count * sizeof (CHAR_T));
- if (tmp != tmpbuf)
- free (tmp);
-#endif
-
- length += count;
- break;
- }
- }
- }
- }
-
- /* Add the final NUL. */
- ENSURE_ALLOCATION (xsum (length, 1));
- result[length] = '\0';
-
- if (result != resultbuf && length + 1 < allocated)
- {
- /* Shrink the allocated memory if possible. */
- CHAR_T *memory;
-
- memory = (CHAR_T *) realloc (result, (length + 1) * sizeof (CHAR_T));
- if (memory != NULL)
- result = memory;
- }
-
- if (buf_malloced != NULL)
- free (buf_malloced);
- CLEANUP ();
- *lengthp = length;
- return result;
-
- out_of_memory:
- if (!(result == resultbuf || result == NULL))
- free (result);
- if (buf_malloced != NULL)
- free (buf_malloced);
- out_of_memory_1:
- CLEANUP ();
- errno = ENOMEM;
- return NULL;
- }
-}
-
-#undef SNPRINTF
-#undef USE_SNPRINTF
-#undef PRINTF_PARSE
-#undef DIRECTIVES
-#undef DIRECTIVE
-#undef CHAR_T
-#undef VASNPRINTF
diff --git a/navit/support/gettext_intl/vasnprintf.h b/navit/support/gettext_intl/vasnprintf.h
deleted file mode 100644
index 65f1bc13d..000000000
--- a/navit/support/gettext_intl/vasnprintf.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* vsprintf with automatic memory allocation.
- Copyright (C) 2002-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. */
-
-#ifndef _VASNPRINTF_H
-#define _VASNPRINTF_H
-
-/* Get va_list. */
-#include <stdarg.h>
-
-/* Get size_t. */
-#include <stddef.h>
-
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later. */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
-# define __attribute__(Spec) /* empty */
-# endif
-/* The __-protected variants of `format' and `printf' attributes
- are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
-# define __format__ format
-# define __printf__ printf
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Write formatted output to a string dynamically allocated with malloc().
- You can pass a preallocated buffer for the result in RESULTBUF and its
- size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
- If successful, return the address of the string (this may be = RESULTBUF
- if no dynamic memory allocation was necessary) and set *LENGTHP to the
- number of resulting bytes, excluding the trailing NUL. Upon error, set
- errno and return NULL. */
-extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
- __attribute__ ((__format__ (__printf__, 3, 4)));
-extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
- __attribute__ ((__format__ (__printf__, 3, 0)));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _VASNPRINTF_H */
diff --git a/navit/support/gettext_intl/vasnwprintf.h b/navit/support/gettext_intl/vasnwprintf.h
deleted file mode 100644
index d3cef4cbc..000000000
--- a/navit/support/gettext_intl/vasnwprintf.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* vswprintf with automatic memory allocation.
- Copyright (C) 2002-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. */
-
-#ifndef _VASNWPRINTF_H
-#define _VASNWPRINTF_H
-
-/* Get va_list. */
-#include <stdarg.h>
-
-/* Get wchar_t, size_t. */
-#include <stddef.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Write formatted output to a string dynamically allocated with malloc().
- You can pass a preallocated buffer for the result in RESULTBUF and its
- size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
- If successful, return the address of the string (this may be = RESULTBUF
- if no dynamic memory allocation was necessary) and set *LENGTHP to the
- number of resulting bytes, excluding the trailing NUL. Upon error, set
- errno and return NULL. */
-extern wchar_t * asnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, ...);
-extern wchar_t * vasnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, va_list args);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _VASNWPRINTF_H */
diff --git a/navit/support/gettext_intl/wprintf-parse.h b/navit/support/gettext_intl/wprintf-parse.h
deleted file mode 100644
index 24a2cfc28..000000000
--- a/navit/support/gettext_intl/wprintf-parse.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Parse printf format string.
- Copyright (C) 1999, 2002-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. */
-
-#ifndef _WPRINTF_PARSE_H
-#define _WPRINTF_PARSE_H
-
-#include "printf-args.h"
-
-
-/* Flags */
-#define FLAG_GROUP 1 /* ' flag */
-#define FLAG_LEFT 2 /* - flag */
-#define FLAG_SHOWSIGN 4 /* + flag */
-#define FLAG_SPACE 8 /* space flag */
-#define FLAG_ALT 16 /* # flag */
-#define FLAG_ZERO 32
-
-/* arg_index value indicating that no argument is consumed. */
-#define ARG_NONE (~(size_t)0)
-
-/* A parsed directive. */
-typedef struct
-{
- const wchar_t* dir_start;
- const wchar_t* dir_end;
- int flags;
- const wchar_t* width_start;
- const wchar_t* width_end;
- size_t width_arg_index;
- const wchar_t* precision_start;
- const wchar_t* precision_end;
- size_t precision_arg_index;
- wchar_t conversion; /* d i o u x X f e E g G c s p n U % but not C S */
- size_t arg_index;
-}
-wchar_t_directive;
-
-/* A parsed format string. */
-typedef struct
-{
- size_t count;
- wchar_t_directive *dir;
- size_t max_width_length;
- size_t max_precision_length;
-}
-wchar_t_directives;
-
-
-/* Parses the format string. Fills in the number N of directives, and fills
- in directives[0], ..., directives[N-1], and sets directives[N].dir_start
- to the end of the format string. Also fills in the arg_type fields of the
- arguments and the needed count of arguments. */
-#ifdef STATIC
-STATIC
-#else
-extern
-#endif
-int wprintf_parse (const wchar_t *format, wchar_t_directives *d, arguments *a);
-
-#endif /* _WPRINTF_PARSE_H */
diff --git a/navit/support/gettext_intl/xsize.h b/navit/support/gettext_intl/xsize.h
deleted file mode 100644
index f0bf71391..000000000
--- a/navit/support/gettext_intl/xsize.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* xsize.h -- Checked size_t computations.
-
- Copyright (C) 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. */
-
-#ifndef _XSIZE_H
-#define _XSIZE_H
-
-/* Get size_t. */
-#include <stddef.h>
-
-/* Get SIZE_MAX. */
-#include <limits.h>
-#if HAVE_STDINT_H
-# include <stdint.h>
-#endif
-
-/* The size of memory objects is often computed through expressions of
- type size_t. Example:
- void* p = malloc (header_size + n * element_size).
- These computations can lead to overflow. When this happens, malloc()
- returns a piece of memory that is way too small, and the program then
- crashes while attempting to fill the memory.
- To avoid this, the functions and macros in this file check for overflow.
- The convention is that SIZE_MAX represents overflow.
- malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc
- implementation that uses mmap --, it's recommended to use size_overflow_p()
- or size_in_bounds_p() before invoking malloc().
- The example thus becomes:
- size_t size = xsum (header_size, xtimes (n, element_size));
- void *p = (size_in_bounds_p (size) ? malloc (size) : NULL);
-*/
-
-/* Convert an arbitrary value >= 0 to type size_t. */
-#define xcast_size_t(N) \
- ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
-
-/* Sum of two sizes, with overflow check. */
-static size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum (size_t size1, size_t size2)
-{
- size_t sum = size1 + size2;
- return (sum >= size1 ? sum : SIZE_MAX);
-}
-
-/* Sum of three sizes, with overflow check. */
-static size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum3 (size_t size1, size_t size2, size_t size3)
-{
- return xsum (xsum (size1, size2), size3);
-}
-
-/* Sum of four sizes, with overflow check. */
-static size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
-{
- return xsum (xsum (xsum (size1, size2), size3), size4);
-}
-
-/* Maximum of two sizes, with overflow check. */
-static size_t
-#if __GNUC__ >= 3
-__attribute__ ((__pure__))
-#endif
-xmax (size_t size1, size_t size2)
-{
- /* No explicit check is needed here, because for any n:
- max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */
- return (size1 >= size2 ? size1 : size2);
-}
-
-/* Multiplication of a count with an element size, with overflow check.
- The count must be >= 0 and the element size must be > 0.
- This is a macro, not an inline function, so that it works correctly even
- when N is of a wider tupe and N > SIZE_MAX. */
-#define xtimes(N, ELSIZE) \
- ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
-
-/* Check for overflow. */
-#define size_overflow_p(SIZE) \
- ((SIZE) == SIZE_MAX)
-/* Check against overflow. */
-#define size_in_bounds_p(SIZE) \
- ((SIZE) != SIZE_MAX)
-
-#endif /* _XSIZE_H */
diff --git a/navit/support/glib/CMakeLists.txt b/navit/support/glib/CMakeLists.txt
deleted file mode 100644
index 322d5467e..000000000
--- a/navit/support/glib/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-supportlib_add_library(support_glib 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 gutf8.c gutils.c)
diff --git a/navit/support/glib/fake.c b/navit/support/glib/fake.c
deleted file mode 100644
index 2dfe75832..000000000
--- a/navit/support/glib/fake.c
+++ /dev/null
@@ -1,119 +0,0 @@
-#include "fake.h"
-
-#include <stdlib.h> /* posix_memalign() */
-#include <string.h>
-#include <errno.h>
-#include "gmem.h" /* gslice.h */
-#include "gthreadprivate.h"
-#include "glib.h"
-#include "galias.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h> /* sysconf() */
-#endif
-#ifdef G_OS_WIN32
-#include <windows.h>
-#include <process.h>
-#endif
-
-#include <stdio.h> /* fputs/fprintf */
-
-char* g_convert (const char *in,
- int len,
- const char *to_codeset,
- const char *from_codeset,
- int *bytes_read,
- int *bytes_written,
- void **error)
-{
- return g_strdup(in);
-}
-
-
-#if USE_POSIX_THREADS
-pthread_mutex_t* g_mutex_new_navit(void)
-{
- pthread_mutex_t *ret = malloc(sizeof(pthread_mutex_t));
- pthread_mutex_init(ret, NULL);
- return ret;
-}
-#else
-#if HAVE_API_WIN32_BASE
-CRITICAL_SECTION* g_mutex_new_navit(void)
-{
- CRITICAL_SECTION *ret = malloc(sizeof(CRITICAL_SECTION));
- InitializeCriticalSection(ret);
- return ret;
-}
-#endif
-#endif
-
-GPrivate
-g_private_new_navit ()
-{
-#if HAVE_API_WIN32_BASE
- int dwTlsIndex;
-
-#ifndef TLS_OUT_OF_INDEXES
-#define TLS_OUT_OF_INDEXES (-1)
-#endif
- if ((dwTlsIndex = TlsAlloc()) == TLS_OUT_OF_INDEXES)
- printf("TlsAlloc failed");
- printf("return dwTlsIndex = 0x%x\n",dwTlsIndex);
- return dwTlsIndex;
-#else
- pthread_key_t key;
- if (pthread_key_create(&key, NULL)) {
- fprintf(stderr,"pthread_key_create failed\n");
- }
- return key;
-#endif
-}
-
-/**
- * g_get_current_time:
- * @result: #GTimeVal structure in which to store current time.
- *
- * Equivalent to the UNIX gettimeofday() function, but portable.
- **/
-void
-g_get_current_time (GTimeVal *result)
-{
-#ifndef G_OS_WIN32
- struct timeval r;
-
- g_return_if_fail (result != NULL);
-
- /*this is required on alpha, there the timeval structs are int's
- not longs and a cast only would fail horribly*/
- gettimeofday (&r, NULL);
- result->tv_sec = r.tv_sec;
- result->tv_usec = r.tv_usec;
-#else
- FILETIME ft;
- guint64 time64;
-
- g_return_if_fail (result != NULL);
-
-#if defined(HAVE_API_WIN32_CE)
- GetCurrentFT(&ft);
-#else
- GetSystemTimeAsFileTime (&ft);
-#endif
- memmove (&time64, &ft, sizeof (FILETIME));
-
- /* Convert from 100s of nanoseconds since 1601-01-01
- * to Unix epoch. Yes, this is Y2038 unsafe.
- */
- time64 -= G_GINT64_CONSTANT (116444736000000000);
- time64 /= 10;
-
- result->tv_sec = time64 / 1000000;
- result->tv_usec = time64 % 1000000;
-#endif
-}
-
-// FIXME: should use real utf8-aware function
-gchar * g_utf8_casefold(const gchar *s, gssize len)
-{
- return g_ascii_strdown(s,len);
-}
diff --git a/navit/support/glib/fake.h b/navit/support/glib/fake.h
deleted file mode 100644
index ba9b17750..000000000
--- a/navit/support/glib/fake.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "config.h"
-#ifndef HAVE_API_WIN32_BASE
-#define USE_POSIX_THREADS 1
-#endif
-#if USE_POSIX_THREADS
-#include <pthread.h>
-#endif
-#include "debug.h"
-
-#define g_return_if_fail
-
-
-#if USE_POSIX_THREADS
-# define GMutex pthread_mutex_t
-# define g_mutex_new g_mutex_new_navit
-# define g_mutex_lock(lock) ((lock == NULL) ? 0 : pthread_mutex_lock(lock))
-# define g_mutex_unlock(lock) ((lock == NULL) ? 0 : pthread_mutex_unlock(lock))
-# define g_mutex_trylock(lock) (((lock == NULL) ? 0 : pthread_mutex_trylock(lock)) == 0)
-# define GPrivate pthread_key_t
-# define g_private_new(xd) g_private_new_navit()
-# define g_private_get(xd) pthread_getspecific(xd)
-# define g_private_set(a,b) pthread_setspecific(a, b)
-#else
-# if HAVE_API_WIN32_BASE
-# define GMutex CRITICAL_SECTION
-# define g_mutex_new g_mutex_new_navit
-# define g_mutex_lock(lock) (EnterCriticalSection(lock))
-# define g_mutex_unlock(lock) (LeaveCriticalSection(lock))
-# define g_mutex_trylock(lock) (TryEnterCriticalSection(lock))
-# define GPrivate int
-# define g_private_new(xd) g_private_new_navit()
-# define g_private_get(xd) TlsGetValue(xd)
-# define g_private_set(a,b) TlsSetValue(a, b)
-# endif
-#endif
-
-char* g_convert (const char *str,
- int len,
- const char *to_codeset,
- const char *from_codeset,
- int *bytes_read,
- int *bytes_written,
- void **error);
-#define G_LOCK_DEFINE_STATIC(name) //void
-#define G_LOCK(name) //void //g_mutex_lock (&G_LOCK_NAME (name))
-#define G_UNLOCK(name) //void //g_mutex_unlock (&G_LOCK_NAME (name))
-
-#define g_thread_supported() TRUE
-
-#define g_assert(expr) dbg_assert (expr)
diff --git a/navit/support/glib/galias.h b/navit/support/glib/galias.h
deleted file mode 100644
index e69de29bb..000000000
--- a/navit/support/glib/galias.h
+++ /dev/null
diff --git a/navit/support/glib/galiasdef.c b/navit/support/glib/galiasdef.c
deleted file mode 100644
index e69de29bb..000000000
--- a/navit/support/glib/galiasdef.c
+++ /dev/null
diff --git a/navit/support/glib/galloca.h b/navit/support/glib/galloca.h
deleted file mode 100644
index 356587ff6..000000000
--- a/navit/support/glib/galloca.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_ALLOCA_H__
-#define __G_ALLOCA_H__
-
-#include <glib/gtypes.h>
-
-#ifdef __GNUC__
-/* GCC does the right thing */
-# undef alloca
-# define alloca(size) __builtin_alloca (size)
-#elif defined (GLIB_HAVE_ALLOCA_H)
-/* a native and working alloca.h is there */
-# include <alloca.h>
-#else /* !__GNUC__ && !GLIB_HAVE_ALLOCA_H */
-# if defined(_MSC_VER) || defined(__DMC__)
-# include <malloc.h>
-# define alloca _alloca
-# else /* !_MSC_VER && !__DMC__ */
-# ifdef _AIX
-# pragma alloca
-# else /* !_AIX */
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-G_BEGIN_DECLS
-char *alloca ();
-G_END_DECLS
-# endif /* !alloca */
-# endif /* !_AIX */
-# endif /* !_MSC_VER && !__DMC__ */
-#endif /* !__GNUC__ && !GLIB_HAVE_ALLOCA_H */
-
-#define g_alloca(size) alloca (size)
-#define g_newa(struct_type, n_structs) ((struct_type*) g_alloca (sizeof (struct_type) * (gsize) (n_structs)))
-
-#endif /* __G_ALLOCA_H__ */
diff --git a/navit/support/glib/gatomic.c b/navit/support/glib/gatomic.c
deleted file mode 100644
index c881ec68e..000000000
--- a/navit/support/glib/gatomic.c
+++ /dev/null
@@ -1,946 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * g_atomic_*: atomic operations.
- * Copyright (C) 2003 Sebastian Wilhelmi
- * Copyright (C) 2007 Nokia Corporation
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-
-#if defined (G_ATOMIC_ARM)
-#include <sched.h>
-#endif
-
-#include "glib.h"
-#include "gthreadprivate.h"
-#include "galias.h"
-
-# if HAVE_API_WIN32_BASE
-#include <windows.h>
-#endif
-
-#if USE_POSIX_THREADS
-#include <pthread.h>
-#endif
-
-#if defined (__GNUC__)
-# if defined (G_ATOMIC_I486)
-/* Adapted from CVS version 1.10 of glibc's sysdeps/i386/i486/bits/atomic.h
- */
-gint
-g_atomic_int_exchange_and_add (volatile gint *atomic,
- gint val)
-{
- gint result;
-
- __asm__ __volatile__ ("lock; xaddl %0,%1"
- : "=r" (result), "=m" (*atomic)
- : "0" (val), "m" (*atomic));
- return result;
-}
-
-void
-g_atomic_int_add (volatile gint *atomic,
- gint val)
-{
- __asm__ __volatile__ ("lock; addl %1,%0"
- : "=m" (*atomic)
- : "ir" (val), "m" (*atomic));
-}
-
-gboolean
-g_atomic_int_compare_and_exchange (volatile gint *atomic,
- gint oldval,
- gint newval)
-{
- gint result;
-
- __asm__ __volatile__ ("lock; cmpxchgl %2, %1"
- : "=a" (result), "=m" (*atomic)
- : "r" (newval), "m" (*atomic), "0" (oldval));
-
- return result == oldval;
-}
-
-/* The same code as above, as on i386 gpointer is 32 bit as well.
- * Duplicating the code here seems more natural than casting the
- * arguments and calling the former function */
-
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gpointer result;
-
- __asm__ __volatile__ ("lock; cmpxchgl %2, %1"
- : "=a" (result), "=m" (*atomic)
- : "r" (newval), "m" (*atomic), "0" (oldval));
-
- return result == oldval;
-}
-
-# elif defined (G_ATOMIC_SPARCV9)
-/* Adapted from CVS version 1.3 of glibc's sysdeps/sparc/sparc64/bits/atomic.h
- */
-# define ATOMIC_INT_CMP_XCHG(atomic, oldval, newval) \
- ({ \
- gint __result; \
- __asm__ __volatile__ ("cas [%4], %2, %0" \
- : "=r" (__result), "=m" (*(atomic)) \
- : "r" (oldval), "m" (*(atomic)), "r" (atomic),\
- "0" (newval)); \
- __result == oldval; \
- })
-
-# if GLIB_SIZEOF_VOID_P == 4 /* 32-bit system */
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gpointer result;
- __asm__ __volatile__ ("cas [%4], %2, %0"
- : "=r" (result), "=m" (*atomic)
- : "r" (oldval), "m" (*atomic), "r" (atomic),
- "0" (newval));
- return result == oldval;
-}
-# elif GLIB_SIZEOF_VOID_P == 8 /* 64-bit system */
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gpointer result;
- gpointer *a = atomic;
- __asm__ __volatile__ ("casx [%4], %2, %0"
- : "=r" (result), "=m" (*a)
- : "r" (oldval), "m" (*a), "r" (a),
- "0" (newval));
- return result == oldval;
-}
-# else /* What's that */
-# error "Your system has an unsupported pointer size"
-# endif /* GLIB_SIZEOF_VOID_P */
-# define G_ATOMIC_MEMORY_BARRIER \
- __asm__ __volatile__ ("membar #LoadLoad | #LoadStore" \
- " | #StoreLoad | #StoreStore" : : : "memory")
-
-# elif defined (G_ATOMIC_ALPHA)
-/* Adapted from CVS version 1.3 of glibc's sysdeps/alpha/bits/atomic.h
- */
-# define ATOMIC_INT_CMP_XCHG(atomic, oldval, newval) \
- ({ \
- gint __result; \
- gint __prev; \
- __asm__ __volatile__ ( \
- " mb\n" \
- "1: ldl_l %0,%2\n" \
- " cmpeq %0,%3,%1\n" \
- " beq %1,2f\n" \
- " mov %4,%1\n" \
- " stl_c %1,%2\n" \
- " beq %1,1b\n" \
- " mb\n" \
- "2:" \
- : "=&r" (__prev), \
- "=&r" (__result) \
- : "m" (*(atomic)), \
- "Ir" (oldval), \
- "Ir" (newval) \
- : "memory"); \
- __result != 0; \
- })
-# if GLIB_SIZEOF_VOID_P == 4 /* 32-bit system */
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gint result;
- gpointer prev;
- __asm__ __volatile__ (
- " mb\n"
- "1: ldl_l %0,%2\n"
- " cmpeq %0,%3,%1\n"
- " beq %1,2f\n"
- " mov %4,%1\n"
- " stl_c %1,%2\n"
- " beq %1,1b\n"
- " mb\n"
- "2:"
- : "=&r" (prev),
- "=&r" (result)
- : "m" (*atomic),
- "Ir" (oldval),
- "Ir" (newval)
- : "memory");
- return result != 0;
-}
-# elif GLIB_SIZEOF_VOID_P == 8 /* 64-bit system */
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gint result;
- gpointer prev;
- __asm__ __volatile__ (
- " mb\n"
- "1: ldq_l %0,%2\n"
- " cmpeq %0,%3,%1\n"
- " beq %1,2f\n"
- " mov %4,%1\n"
- " stq_c %1,%2\n"
- " beq %1,1b\n"
- " mb\n"
- "2:"
- : "=&r" (prev),
- "=&r" (result)
- : "m" (*atomic),
- "Ir" (oldval),
- "Ir" (newval)
- : "memory");
- return result != 0;
-}
-# else /* What's that */
-# error "Your system has an unsupported pointer size"
-# endif /* GLIB_SIZEOF_VOID_P */
-# define G_ATOMIC_MEMORY_BARRIER __asm__ ("mb" : : : "memory")
-# elif defined (G_ATOMIC_X86_64)
-/* Adapted from CVS version 1.9 of glibc's sysdeps/x86_64/bits/atomic.h
- */
-gint
-g_atomic_int_exchange_and_add (volatile gint *atomic,
- gint val)
-{
- gint result;
-
- __asm__ __volatile__ ("lock; xaddl %0,%1"
- : "=r" (result), "=m" (*atomic)
- : "0" (val), "m" (*atomic));
- return result;
-}
-
-void
-g_atomic_int_add (volatile gint *atomic,
- gint val)
-{
- __asm__ __volatile__ ("lock; addl %1,%0"
- : "=m" (*atomic)
- : "ir" (val), "m" (*atomic));
-}
-
-gboolean
-g_atomic_int_compare_and_exchange (volatile gint *atomic,
- gint oldval,
- gint newval)
-{
- gint result;
-
- __asm__ __volatile__ ("lock; cmpxchgl %2, %1"
- : "=a" (result), "=m" (*atomic)
- : "r" (newval), "m" (*atomic), "0" (oldval));
-
- return result == oldval;
-}
-
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gpointer result;
-
- __asm__ __volatile__ ("lock; cmpxchgq %q2, %1"
- : "=a" (result), "=m" (*atomic)
- : "r" (newval), "m" (*atomic), "0" (oldval));
-
- return result == oldval;
-}
-
-# elif defined (G_ATOMIC_POWERPC)
-/* Adapted from CVS version 1.16 of glibc's sysdeps/powerpc/bits/atomic.h
- * and CVS version 1.4 of glibc's sysdeps/powerpc/powerpc32/bits/atomic.h
- * and CVS version 1.7 of glibc's sysdeps/powerpc/powerpc64/bits/atomic.h
- */
-# ifdef __OPTIMIZE__
-/* Non-optimizing compile bails on the following two asm statements
- * for reasons unknown to the author */
-gint
-g_atomic_int_exchange_and_add (volatile gint *atomic,
- gint val)
-{
- gint result, temp;
-#if ASM_NUMERIC_LABELS
- __asm__ __volatile__ ("1: lwarx %0,0,%3\n"
- " add %1,%0,%4\n"
- " stwcx. %1,0,%3\n"
- " bne- 1b"
- : "=&b" (result), "=&r" (temp), "=m" (*atomic)
- : "b" (atomic), "r" (val), "m" (*atomic)
- : "cr0", "memory");
-#else
- __asm__ __volatile__ (".Lieaa%=: lwarx %0,0,%3\n"
- " add %1,%0,%4\n"
- " stwcx. %1,0,%3\n"
- " bne- .Lieaa%="
- : "=&b" (result), "=&r" (temp), "=m" (*atomic)
- : "b" (atomic), "r" (val), "m" (*atomic)
- : "cr0", "memory");
-#endif
- return result;
-}
-
-/* The same as above, to save a function call repeated here */
-void
-g_atomic_int_add (volatile gint *atomic,
- gint val)
-{
- gint result, temp;
-#if ASM_NUMERIC_LABELS
- __asm__ __volatile__ ("1: lwarx %0,0,%3\n"
- " add %1,%0,%4\n"
- " stwcx. %1,0,%3\n"
- " bne- 1b"
- : "=&b" (result), "=&r" (temp), "=m" (*atomic)
- : "b" (atomic), "r" (val), "m" (*atomic)
- : "cr0", "memory");
-#else
- __asm__ __volatile__ (".Lia%=: lwarx %0,0,%3\n"
- " add %1,%0,%4\n"
- " stwcx. %1,0,%3\n"
- " bne- .Lia%="
- : "=&b" (result), "=&r" (temp), "=m" (*atomic)
- : "b" (atomic), "r" (val), "m" (*atomic)
- : "cr0", "memory");
-#endif
-}
-# else /* !__OPTIMIZE__ */
-gint
-g_atomic_int_exchange_and_add (volatile gint *atomic,
- gint val)
-{
- gint result;
- do
- result = *atomic;
- while (!g_atomic_int_compare_and_exchange (atomic, result, result + val));
-
- return result;
-}
-
-void
-g_atomic_int_add (volatile gint *atomic,
- gint val)
-{
- gint result;
- do
- result = *atomic;
- while (!g_atomic_int_compare_and_exchange (atomic, result, result + val));
-}
-# endif /* !__OPTIMIZE__ */
-
-# if GLIB_SIZEOF_VOID_P == 4 /* 32-bit system */
-gboolean
-g_atomic_int_compare_and_exchange (volatile gint *atomic,
- gint oldval,
- gint newval)
-{
- gint result;
-#if ASM_NUMERIC_LABELS
- __asm__ __volatile__ ("sync\n"
- "1: lwarx %0,0,%1\n"
- " subf. %0,%2,%0\n"
- " bne 2f\n"
- " stwcx. %3,0,%1\n"
- " bne- 1b\n"
- "2: isync"
- : "=&r" (result)
- : "b" (atomic), "r" (oldval), "r" (newval)
- : "cr0", "memory");
-#else
- __asm__ __volatile__ ("sync\n"
- ".L1icae%=: lwarx %0,0,%1\n"
- " subf. %0,%2,%0\n"
- " bne .L2icae%=\n"
- " stwcx. %3,0,%1\n"
- " bne- .L1icae%=\n"
- ".L2icae%=: isync"
- : "=&r" (result)
- : "b" (atomic), "r" (oldval), "r" (newval)
- : "cr0", "memory");
-#endif
- return result == 0;
-}
-
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gpointer result;
-#if ASM_NUMERIC_LABELS
- __asm__ __volatile__ ("sync\n"
- "1: lwarx %0,0,%1\n"
- " subf. %0,%2,%0\n"
- " bne 2f\n"
- " stwcx. %3,0,%1\n"
- " bne- 1b\n"
- "2: isync"
- : "=&r" (result)
- : "b" (atomic), "r" (oldval), "r" (newval)
- : "cr0", "memory");
-#else
- __asm__ __volatile__ ("sync\n"
- ".L1pcae%=: lwarx %0,0,%1\n"
- " subf. %0,%2,%0\n"
- " bne .L2pcae%=\n"
- " stwcx. %3,0,%1\n"
- " bne- .L1pcae%=\n"
- ".L2pcae%=: isync"
- : "=&r" (result)
- : "b" (atomic), "r" (oldval), "r" (newval)
- : "cr0", "memory");
-#endif
- return result == 0;
-}
-# elif GLIB_SIZEOF_VOID_P == 8 /* 64-bit system */
-gboolean
-g_atomic_int_compare_and_exchange (volatile gint *atomic,
- gint oldval,
- gint newval)
-{
- gpointer result;
-#if ASM_NUMERIC_LABELS
- __asm__ __volatile__ ("sync\n"
- "1: lwarx %0,0,%1\n"
- " extsw %0,%0\n"
- " subf. %0,%2,%0\n"
- " bne 2f\n"
- " stwcx. %3,0,%1\n"
- " bne- 1b\n"
- "2: isync"
- : "=&r" (result)
- : "b" (atomic), "r" (oldval), "r" (newval)
- : "cr0", "memory");
-#else
- __asm__ __volatile__ ("sync\n"
- ".L1icae%=: lwarx %0,0,%1\n"
- " extsw %0,%0\n"
- " subf. %0,%2,%0\n"
- " bne .L2icae%=\n"
- " stwcx. %3,0,%1\n"
- " bne- .L1icae%=\n"
- ".L2icae%=: isync"
- : "=&r" (result)
- : "b" (atomic), "r" (oldval), "r" (newval)
- : "cr0", "memory");
-#endif
- return result == 0;
-}
-
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gpointer result;
-#if ASM_NUMERIC_LABELS
- __asm__ __volatile__ ("sync\n"
- "1: ldarx %0,0,%1\n"
- " subf. %0,%2,%0\n"
- " bne 2f\n"
- " stdcx. %3,0,%1\n"
- " bne- 1b\n"
- "2: isync"
- : "=&r" (result)
- : "b" (atomic), "r" (oldval), "r" (newval)
- : "cr0", "memory");
-#else
- __asm__ __volatile__ ("sync\n"
- ".L1pcae%=: ldarx %0,0,%1\n"
- " subf. %0,%2,%0\n"
- " bne .L2pcae%=\n"
- " stdcx. %3,0,%1\n"
- " bne- .L1pcae%=\n"
- ".L2pcae%=: isync"
- : "=&r" (result)
- : "b" (atomic), "r" (oldval), "r" (newval)
- : "cr0", "memory");
-#endif
- return result == 0;
-}
-# else /* What's that */
-# error "Your system has an unsupported pointer size"
-# endif /* GLIB_SIZEOF_VOID_P */
-
-# define G_ATOMIC_MEMORY_BARRIER __asm__ ("sync" : : : "memory")
-
-# elif defined (G_ATOMIC_IA64)
-/* Adapted from CVS version 1.8 of glibc's sysdeps/ia64/bits/atomic.h
- */
-gint
-g_atomic_int_exchange_and_add (volatile gint *atomic,
- gint val)
-{
- return __sync_fetch_and_add (atomic, val);
-}
-
-void
-g_atomic_int_add (volatile gint *atomic,
- gint val)
-{
- __sync_fetch_and_add (atomic, val);
-}
-
-gboolean
-g_atomic_int_compare_and_exchange (volatile gint *atomic,
- gint oldval,
- gint newval)
-{
- return __sync_bool_compare_and_swap (atomic, oldval, newval);
-}
-
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- return __sync_bool_compare_and_swap ((long *)atomic,
- (long)oldval, (long)newval);
-}
-
-# define G_ATOMIC_MEMORY_BARRIER __sync_synchronize ()
-# elif defined (G_ATOMIC_S390)
-/* Adapted from glibc's sysdeps/s390/bits/atomic.h
- */
-# define ATOMIC_INT_CMP_XCHG(atomic, oldval, newval) \
- ({ \
- gint __result = oldval; \
- __asm__ __volatile__ ("cs %0, %2, %1" \
- : "+d" (__result), "=Q" (*(atomic)) \
- : "d" (newval), "m" (*(atomic)) : "cc" ); \
- __result == oldval; \
- })
-
-# if GLIB_SIZEOF_VOID_P == 4 /* 32-bit system */
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gpointer result = oldval;
- __asm__ __volatile__ ("cs %0, %2, %1"
- : "+d" (result), "=Q" (*(atomic))
- : "d" (newval), "m" (*(atomic)) : "cc" );
- return result == oldval;
-}
-# elif GLIB_SIZEOF_VOID_P == 8 /* 64-bit system */
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gpointer result = oldval;
- gpointer *a = atomic;
- __asm__ __volatile__ ("csg %0, %2, %1"
- : "+d" (result), "=Q" (*a)
- : "d" ((long)(newval)), "m" (*a) : "cc" );
- return result == oldval;
-}
-# else /* What's that */
-# error "Your system has an unsupported pointer size"
-# endif /* GLIB_SIZEOF_VOID_P */
-# elif defined (G_ATOMIC_ARM)
-static volatile int atomic_spin = 0;
-
-static int atomic_spin_trylock (void)
-{
- int result;
-
- asm volatile (
- "swp %0, %1, [%2]\n"
- : "=&r,&r" (result)
- : "r,0" (1), "r,r" (&atomic_spin)
- : "memory");
- if (result == 0)
- return 0;
- else
- return -1;
-}
-
-static void atomic_spin_lock (void)
-{
- while (atomic_spin_trylock())
- sched_yield();
-}
-
-static void atomic_spin_unlock (void)
-{
- atomic_spin = 0;
-}
-
-gint
-g_atomic_int_exchange_and_add (volatile gint *atomic,
- gint val)
-{
- gint result;
-
- atomic_spin_lock();
- result = *atomic;
- *atomic += val;
- atomic_spin_unlock();
-
- return result;
-}
-
-void
-g_atomic_int_add (volatile gint *atomic,
- gint val)
-{
- atomic_spin_lock();
- *atomic += val;
- atomic_spin_unlock();
-}
-
-gboolean
-g_atomic_int_compare_and_exchange (volatile gint *atomic,
- gint oldval,
- gint newval)
-{
- gboolean result;
-
- atomic_spin_lock();
- if (*atomic == oldval)
- {
- result = TRUE;
- *atomic = newval;
- }
- else
- result = FALSE;
- atomic_spin_unlock();
-
- return result;
-}
-
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gboolean result;
-
- atomic_spin_lock();
- if (*atomic == oldval)
- {
- result = TRUE;
- *atomic = newval;
- }
- else
- result = FALSE;
- atomic_spin_unlock();
-
- return result;
-}
-# elif defined(G_PLATFORM_WIN32)
-# define DEFINE_WITH_WIN32_INTERLOCKED
-# else
-# define DEFINE_WITH_MUTEXES
-# endif /* G_ATOMIC_IA64 */
-#else /* !__GNUC__ */
-# ifdef G_PLATFORM_WIN32
-# define DEFINE_WITH_WIN32_INTERLOCKED
-# else
-# define DEFINE_WITH_MUTEXES
-# endif
-#endif /* __GNUC__ */
-
-#ifdef DEFINE_WITH_WIN32_INTERLOCKED
-# include <windows.h>
-/* Following indicates that InterlockedCompareExchangePointer is
- * declared in winbase.h (included by windows.h) and needs to be
- * commented out if not true. It is defined iff WINVER > 0x0400,
- * which is usually correct but can be wrong if WINVER is set before
- * windows.h is included.
- */
-# if WINVER > 0x0400
-# define HAVE_INTERLOCKED_COMPARE_EXCHANGE_POINTER
-# endif
-
-gint32
-g_atomic_int_exchange_and_add (volatile gint32 *atomic,
- gint32 val)
-{
- return InterlockedExchangeAdd (atomic, val);
-}
-
-void
-g_atomic_int_add (volatile gint32 *atomic,
- gint32 val)
-{
- InterlockedExchangeAdd (atomic, val);
-}
-
-gboolean
-g_atomic_int_compare_and_exchange (volatile gint32 *atomic,
- gint32 oldval,
- gint32 newval)
-{
-#ifndef HAVE_INTERLOCKED_COMPARE_EXCHANGE_POINTER
- return (guint32) InterlockedCompareExchange ((PVOID*)atomic,
- (PVOID)newval,
- (PVOID)oldval) == oldval;
-#else
- return InterlockedCompareExchange (atomic,
- newval,
- oldval) == oldval;
-#endif
-}
-
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
-# ifdef HAVE_INTERLOCKED_COMPARE_EXCHANGE_POINTER
- return InterlockedCompareExchangePointer (atomic, newval, oldval) == oldval;
-# else
-# if GLIB_SIZEOF_VOID_P != 4 /* no 32-bit system */
-# error "InterlockedCompareExchangePointer needed"
-# else
- return InterlockedCompareExchange (atomic, newval, oldval) == oldval;
-# endif
-# endif
-}
-#endif /* DEFINE_WITH_WIN32_INTERLOCKED */
-
-#ifdef DEFINE_WITH_MUTEXES
-/* We have to use the slow, but safe locking method */
-static GMutex *g_atomic_mutex;
-
-gint
-g_atomic_int_exchange_and_add (volatile gint *atomic,
- gint val)
-{
- gint result;
-
- g_mutex_lock (g_atomic_mutex);
- result = *atomic;
- *atomic += val;
- g_mutex_unlock (g_atomic_mutex);
-
- return result;
-}
-
-
-void
-g_atomic_int_add (volatile gint *atomic,
- gint val)
-{
- g_mutex_lock (g_atomic_mutex);
- *atomic += val;
- g_mutex_unlock (g_atomic_mutex);
-}
-
-gboolean
-g_atomic_int_compare_and_exchange (volatile gint *atomic,
- gint oldval,
- gint newval)
-{
- gboolean result;
-
- g_mutex_lock (g_atomic_mutex);
- if (*atomic == oldval)
- {
- result = TRUE;
- *atomic = newval;
- }
- else
- result = FALSE;
- g_mutex_unlock (g_atomic_mutex);
-
- return result;
-}
-
-gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
- gpointer oldval,
- gpointer newval)
-{
- gboolean result;
-
- g_mutex_lock (g_atomic_mutex);
- if (*atomic == oldval)
- {
- result = TRUE;
- *atomic = newval;
- }
- else
- result = FALSE;
- g_mutex_unlock (g_atomic_mutex);
-
- return result;
-}
-
-#ifdef G_ATOMIC_OP_MEMORY_BARRIER_NEEDED
-gint
-g_atomic_int_get (volatile gint *atomic)
-{
- gint result;
-
- g_mutex_lock (g_atomic_mutex);
- result = *atomic;
- g_mutex_unlock (g_atomic_mutex);
-
- return result;
-}
-
-void
-g_atomic_int_set (volatile gint *atomic,
- gint newval)
-{
- g_mutex_lock (g_atomic_mutex);
- *atomic = newval;
- g_mutex_unlock (g_atomic_mutex);
-}
-
-gpointer
-g_atomic_pointer_get (volatile gpointer *atomic)
-{
- gpointer result;
-
- g_mutex_lock (g_atomic_mutex);
- result = *atomic;
- g_mutex_unlock (g_atomic_mutex);
-
- return result;
-}
-
-void
-g_atomic_pointer_set (volatile gpointer *atomic,
- gpointer newval)
-{
- g_mutex_lock (g_atomic_mutex);
- *atomic = newval;
- g_mutex_unlock (g_atomic_mutex);
-}
-#endif /* G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */
-#elif defined (G_ATOMIC_OP_MEMORY_BARRIER_NEEDED)
-gint
-g_atomic_int_get (volatile gint *atomic)
-{
- G_ATOMIC_MEMORY_BARRIER;
- return *atomic;
-}
-
-void
-g_atomic_int_set (volatile gint *atomic,
- gint newval)
-{
- *atomic = newval;
- G_ATOMIC_MEMORY_BARRIER;
-}
-
-gpointer
-g_atomic_pointer_get (volatile gpointer *atomic)
-{
- G_ATOMIC_MEMORY_BARRIER;
- return *atomic;
-}
-
-void
-g_atomic_pointer_set (volatile gpointer *atomic,
- gpointer newval)
-{
- *atomic = newval;
- G_ATOMIC_MEMORY_BARRIER;
-}
-#endif /* DEFINE_WITH_MUTEXES || G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */
-
-#ifdef ATOMIC_INT_CMP_XCHG
-gboolean
-g_atomic_int_compare_and_exchange (volatile gint *atomic,
- gint oldval,
- gint newval)
-{
- return ATOMIC_INT_CMP_XCHG (atomic, oldval, newval);
-}
-
-gint
-g_atomic_int_exchange_and_add (volatile gint *atomic,
- gint val)
-{
- gint result;
- do
- result = *atomic;
- while (!ATOMIC_INT_CMP_XCHG (atomic, result, result + val));
-
- return result;
-}
-
-void
-g_atomic_int_add (volatile gint *atomic,
- gint val)
-{
- gint result;
- do
- result = *atomic;
- while (!ATOMIC_INT_CMP_XCHG (atomic, result, result + val));
-}
-#endif /* ATOMIC_INT_CMP_XCHG */
-
-void
-_g_atomic_thread_init (void)
-{
-#ifdef DEFINE_WITH_MUTEXES
- g_atomic_mutex = g_mutex_new ();
-#endif /* DEFINE_WITH_MUTEXES */
-}
-
-#ifndef G_ATOMIC_OP_MEMORY_BARRIER_NEEDED
-gint
-(g_atomic_int_get) (volatile gint *atomic)
-{
- return g_atomic_int_get (atomic);
-}
-
-void
-(g_atomic_int_set) (volatile gint *atomic,
- gint newval)
-{
- g_atomic_int_set (atomic, newval);
-}
-
-gpointer
-(g_atomic_pointer_get) (volatile gpointer *atomic)
-{
- return g_atomic_pointer_get (atomic);
-}
-
-void
-(g_atomic_pointer_set) (volatile gpointer *atomic,
- gpointer newval)
-{
- g_atomic_pointer_set (atomic, newval);
-}
-#endif /* G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */
-
-#define __G_ATOMIC_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gerror.c b/navit/support/glib/gerror.c
deleted file mode 100644
index 34d8c2841..000000000
--- a/navit/support/glib/gerror.c
+++ /dev/null
@@ -1,381 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#include "config.h"
-
-#include "glib.h"
-#include "galias.h"
-
-
-static GError*
-g_error_new_valist (GQuark domain,
- gint code,
- const gchar *format,
- va_list args)
-{
- GError *error;
-
- error = g_slice_new (GError);
-
- error->domain = domain;
- error->code = code;
- error->message = g_strdup_vprintf (format, args);
-
- return error;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-/**
- * g_error_new:
- * @domain: error domain
- * @code: error code
- * @format: printf()-style format for error message
- * @Varargs: parameters for message format
- *
- * Creates a new #GError with the given @domain and @code,
- * and a message formatted with @format.
- *
- * Return value: a new #GError
- **/
-GError*
-g_error_new (GQuark domain,
- gint code,
- const gchar *format,
- ...)
-{
- GError* error;
- va_list args;
-
- g_return_val_if_fail (format != NULL, NULL);
- g_return_val_if_fail (domain != 0, NULL);
-
- va_start (args, format);
- error = g_error_new_valist (domain, code, format, args);
- va_end (args);
-
- return error;
-}
-
-/**
- * g_error_new_literal:
- * @domain: error domain
- * @code: error code
- * @message: error message
- *
- * Creates a new #GError; unlike g_error_new(), @message is not
- * a printf()-style format string. Use this
- * function if @message contains text you don't have control over,
- * that could include printf() escape sequences.
- *
- * Return value: a new #GError
- **/
-GError*
-g_error_new_literal (GQuark domain,
- gint code,
- const gchar *message)
-{
- GError* err;
-
- g_return_val_if_fail (message != NULL, NULL);
- g_return_val_if_fail (domain != 0, NULL);
-
- err = g_slice_new (GError);
-
- err->domain = domain;
- err->code = code;
- err->message = g_strdup (message);
-
- return err;
-}
-
-/**
- * g_error_free:
- * @error: a #GError
- *
- * Frees a #GError and associated resources.
- *
- **/
-void
-g_error_free (GError *error)
-{
- g_return_if_fail (error != NULL);
-
- g_free (error->message);
-
- g_slice_free (GError, error);
-}
-
-/**
- * g_error_copy:
- * @error: a #GError
- *
- * Makes a copy of @error.
- *
- * Return value: a new #GError
- **/
-GError*
-g_error_copy (const GError *error)
-{
- GError *copy;
-
- g_return_val_if_fail (error != NULL, NULL);
-
- copy = g_slice_new (GError);
-
- *copy = *error;
-
- copy->message = g_strdup (error->message);
-
- return copy;
-}
-
-/**
- * g_error_matches:
- * @error: a #GError
- * @domain: an error domain
- * @code: an error code
- *
- * Returns %TRUE if @error matches @domain and @code, %FALSE
- * otherwise.
- *
- * Return value: whether @error has @domain and @code
- **/
-gboolean
-g_error_matches (const GError *error,
- GQuark domain,
- gint code)
-{
- return error &&
- error->domain == domain &&
- error->code == code;
-}
-
-#define ERROR_OVERWRITTEN_WARNING "GError set over the top of a previous GError or uninitialized memory.\n" \
- "This indicates a bug in someone's code. You must ensure an error is NULL before it's set.\n" \
- "The overwriting error message was: %s"
-#endif /* NOT_NEEDED_FOR_NAVIT */
-
-/**
- * g_set_error:
- * @err: a return location for a #GError, or %NULL
- * @domain: error domain
- * @code: error code
- * @format: printf()-style format
- * @Varargs: args for @format
- *
- * Does nothing if @err is %NULL; if @err is non-%NULL, then *@err must
- * be %NULL. A new #GError is created and assigned to *@err.
- **/
-void
-g_set_error (GError **err,
- GQuark domain,
- gint code,
- const gchar *format,
- ...)
-{
- GError *new;
-
- va_list args;
-
- if (err == NULL)
- return;
-
- va_start (args, format);
- new = g_error_new_valist (domain, code, format, args);
- va_end (args);
-
- if (*err == NULL)
- *err = new;
-#if NOT_NEEDED_FOR_NAVIT
- else
- g_warning (ERROR_OVERWRITTEN_WARNING, new->message);
-#endif /* NOT_NEEDED_FOR_NAVIT */
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-/**
- * g_set_error_literal:
- * @err: a return location for a #GError, or %NULL
- * @domain: error domain
- * @code: error code
- * @message: error message
- *
- * Does nothing if @err is %NULL; if @err is non-%NULL, then *@err must
- * be %NULL. A new #GError is created and assigned to *@err.
- * Unlike g_set_error(), @message is not a printf()-style format string.
- * Use this function if @message contains text you don't have control over,
- * that could include printf() escape sequences.
- *
- * Since: 2.18
- **/
-void
-g_set_error_literal (GError **err,
- GQuark domain,
- gint code,
- const gchar *message)
-{
- GError *new;
-
- if (err == NULL)
- return;
-
- new = g_error_new_literal (domain, code, message);
- if (*err == NULL)
- *err = new;
- else
- g_warning (ERROR_OVERWRITTEN_WARNING, new->message);
-}
-
-/**
- * g_propagate_error:
- * @dest: error return location
- * @src: error to move into the return location
- *
- * If @dest is %NULL, free @src; otherwise, moves @src into *@dest.
- * The error variable @dest points to must be %NULL.
- **/
-void
-g_propagate_error (GError **dest,
- GError *src)
-{
- g_return_if_fail (src != NULL);
-
- if (dest == NULL)
- {
- if (src)
- g_error_free (src);
- return;
- }
- else
- {
- if (*dest != NULL)
- g_warning (ERROR_OVERWRITTEN_WARNING, src->message);
- else
- *dest = src;
- }
-}
-
-/**
- * g_clear_error:
- * @err: a #GError return location
- *
- * If @err is %NULL, does nothing. If @err is non-%NULL,
- * calls g_error_free() on *@err and sets *@err to %NULL.
- **/
-void
-g_clear_error (GError **err)
-{
- if (err && *err)
- {
- g_error_free (*err);
- *err = NULL;
- }
-}
-
-static void
-g_error_add_prefix (gchar **string,
- const gchar *format,
- va_list ap)
-{
- gchar *oldstring;
- gchar *prefix;
-
- prefix = g_strdup_vprintf (format, ap);
- oldstring = *string;
- *string = g_strconcat (prefix, oldstring, NULL);
- g_free (oldstring);
- g_free (prefix);
-}
-
-/**
- * g_prefix_error:
- * @err: a return location for a #GError, or %NULL
- * @format: printf()-style format string
- * @...: arguments to @format
- *
- * Formats a string according to @format and
- * prefix it to an existing error message. If
- * @err is %NULL (ie: no error variable) then do
- * nothing.
- *
- * If *@err is %NULL (ie: an error variable is
- * present but there is no error condition) then
- * also do nothing. Whether or not it makes
- * sense to take advantage of this feature is up
- * to you.
- *
- * Since: 2.16
- **/
-void
-g_prefix_error (GError **err,
- const gchar *format,
- ...)
-{
- if (err && *err)
- {
- va_list ap;
-
- va_start (ap, format);
- g_error_add_prefix (&(*err)->message, format, ap);
- va_end (ap);
- }
-}
-
-/**
- * g_propagate_prefixed_error:
- * @dest: error return location
- * @src: error to move into the return location
- * @format: printf()-style format string
- * @...: arguments to @format
- *
- * If @dest is %NULL, free @src; otherwise,
- * moves @src into *@dest. *@dest must be %NULL.
- * After the move, add a prefix as with
- * g_prefix_error().
- *
- * Since: 2.16
- **/
-void
-g_propagate_prefixed_error (GError **dest,
- GError *src,
- const gchar *format,
- ...)
-{
- g_propagate_error (dest, src);
-
- if (dest && *dest)
- {
- va_list ap;
-
- va_start (ap, format);
- g_error_add_prefix (&(*dest)->message, format, ap);
- va_end (ap);
- }
-}
-
-#endif /* NOT_NEEDED_FOR_NAVIT */
-#define __G_ERROR_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gerror.h b/navit/support/glib/gerror.h
deleted file mode 100644
index d3d42d59c..000000000
--- a/navit/support/glib/gerror.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* gerror.h - Error reporting system
- *
- * Copyright 2000 Red Hat, Inc.
- *
- * The Gnome Library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * The Gnome Library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the Gnome Library; see the file COPYING.LIB. If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_ERROR_H__
-#define __G_ERROR_H__
-
-#include <glib/gquark.h>
-
-G_BEGIN_DECLS
-
-typedef struct _GError GError;
-
-struct _GError
-{
- GQuark domain;
- gint code;
- gchar *message;
-};
-
-GError* g_error_new (GQuark domain,
- gint code,
- const gchar *format,
- ...) G_GNUC_PRINTF (3, 4);
-
-GError* g_error_new_literal (GQuark domain,
- gint code,
- const gchar *message);
-
-void g_error_free (GError *error);
-GError* g_error_copy (const GError *error);
-
-gboolean g_error_matches (const GError *error,
- GQuark domain,
- gint code);
-
-/* if (err) *err = g_error_new(domain, code, format, ...), also has
- * some sanity checks.
- */
-void g_set_error (GError **err,
- GQuark domain,
- gint code,
- const gchar *format,
- ...) G_GNUC_PRINTF (4, 5);
-
-void g_set_error_literal (GError **err,
- GQuark domain,
- gint code,
- const gchar *message);
-
-/* if (dest) *dest = src; also has some sanity checks.
- */
-void g_propagate_error (GError **dest,
- GError *src);
-
-/* if (err && *err) { g_error_free(*err); *err = NULL; } */
-void g_clear_error (GError **err);
-
-/* if (err) prefix the formatted string to the ->message */
-void g_prefix_error (GError **err,
- const gchar *format,
- ...) G_GNUC_PRINTF (2, 3);
-
-/* g_propagate_error then g_error_prefix on dest */
-void g_propagate_prefixed_error (GError **dest,
- GError *src,
- const gchar *format,
- ...) G_GNUC_PRINTF (3, 4);
-
-G_END_DECLS
-
-#endif /* __G_ERROR_H__ */
diff --git a/navit/support/glib/ghash.c b/navit/support/glib/ghash.c
deleted file mode 100644
index e00b4c4cc..000000000
--- a/navit/support/glib/ghash.c
+++ /dev/null
@@ -1,1202 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * MT safe
- */
-
-#include "config.h"
-
-#include "glib.h"
-#include "galias.h"
-
-
-#define HASH_TABLE_MIN_SIZE 11
-#define HASH_TABLE_MAX_SIZE 13845163
-
-
-typedef struct _GHashNode GHashNode;
-
-struct _GHashNode
-{
- gpointer key;
- gpointer value;
- GHashNode *next;
- guint key_hash;
-};
-
-struct _GHashTable
-{
- gint size;
- gint nnodes;
- GHashNode **nodes;
- GHashFunc hash_func;
- GEqualFunc key_equal_func;
- volatile gint ref_count;
-#ifndef G_DISABLE_ASSERT
- /*
- * Tracks the structure of the hash table, not its contents: is only
- * incremented when a node is added or removed (is not incremented
- * when the key or data of a node is modified).
- */
- int version;
-#endif
- GDestroyNotify key_destroy_func;
- GDestroyNotify value_destroy_func;
-};
-
-typedef struct
-{
- GHashTable *hash_table;
- GHashNode *prev_node;
- GHashNode *node;
- int position;
- gboolean pre_advanced;
- int version;
-} RealIter;
-
-/*
- * g_hash_table_lookup_node:
- * @hash_table: our #GHashTable
- * @key: the key to lookup against
- * @hash_return: optional key hash return location
- * Return value: a pointer to the described #GHashNode pointer
- *
- * Performs a lookup in the hash table. Virtually all hash operations
- * will use this function internally.
- *
- * This function first computes the hash value of the key using the
- * user's hash function.
- *
- * If an entry in the table matching @key is found then this function
- * returns a pointer to the pointer to that entry in the table. In
- * the case that the entry is at the head of a chain, this pointer
- * will be an item in the nodes[] array. In the case that the entry
- * is not at the head of a chain, this pointer will be the ->next
- * pointer on the node that preceeds it.
- *
- * In the case that no matching entry exists in the table, a pointer
- * to a %NULL pointer will be returned. To insert a item, this %NULL
- * pointer should be updated to point to the new #GHashNode.
- *
- * If @hash_return is a pass-by-reference parameter. If it is
- * non-%NULL then the computed hash value is returned. This is to
- * save insertions from having to compute the hash record again for
- * the new record.
- */
-static inline GHashNode **
-g_hash_table_lookup_node (GHashTable *hash_table,
- gconstpointer key,
- guint *hash_return)
-{
- GHashNode **node_ptr, *node;
- guint hash_value;
-
- hash_value = (* hash_table->hash_func) (key);
- node_ptr = &hash_table->nodes[hash_value % hash_table->size];
-
- if (hash_return)
- *hash_return = hash_value;
-
- /* Hash table lookup needs to be fast.
- * We therefore remove the extra conditional of testing
- * whether to call the key_equal_func or not from
- * the inner loop.
- *
- * Additional optimisation: first check if our full hash
- * values are equal so we can avoid calling the full-blown
- * key equality function in most cases.
- */
- if (hash_table->key_equal_func)
- {
- while ((node = *node_ptr))
- {
- if (node->key_hash == hash_value &&
- hash_table->key_equal_func (node->key, key))
- break;
-
- node_ptr = &(*node_ptr)->next;
- }
- }
- else
- {
- while ((node = *node_ptr))
- {
- if (node->key == key)
- break;
-
- node_ptr = &(*node_ptr)->next;
- }
- }
-
- return node_ptr;
-}
-
-/*
- * g_hash_table_remove_node:
- * @hash_table: our #GHashTable
- * @node_ptr_ptr: a pointer to the return value from
- * g_hash_table_lookup_node()
- * @notify: %TRUE if the destroy notify handlers are to be called
- *
- * Removes a node from the hash table and updates the node count. The
- * node is freed. No table resize is performed.
- *
- * If @notify is %TRUE then the destroy notify functions are called
- * for the key and value of the hash node.
- *
- * @node_ptr_ptr is a pass-by-reference in/out parameter. When the
- * function is called, it should point to the pointer to the node to
- * remove. This level of indirection is required so that the pointer
- * may be updated appropriately once the node has been removed.
- *
- * Before the function returns, the pointer at @node_ptr_ptr will be
- * updated to point to the position in the table that contains the
- * pointer to the "next" node in the chain. This makes this function
- * convenient to use from functions that iterate over the entire
- * table. If there is no further item in the chain then the
- * #GHashNode pointer will be %NULL (ie: **node_ptr_ptr == %NULL).
- *
- * Since the pointer in the table to the removed node is replaced with
- * either a pointer to the next node or a %NULL pointer as
- * appropriate, the pointer at the end of @node_ptr_ptr will never be
- * modified at all. Stay tuned. :)
- */
-static void
-g_hash_table_remove_node (GHashTable *hash_table,
- GHashNode ***node_ptr_ptr,
- gboolean notify)
-{
- GHashNode **node_ptr, *node;
-
- node_ptr = *node_ptr_ptr;
- node = *node_ptr;
-
- *node_ptr = node->next;
-
- if (notify && hash_table->key_destroy_func)
- hash_table->key_destroy_func (node->key);
-
- if (notify && hash_table->value_destroy_func)
- hash_table->value_destroy_func (node->value);
-
- g_slice_free (GHashNode, node);
-
- hash_table->nnodes--;
-}
-
-/*
- * g_hash_table_remove_all_nodes:
- * @hash_table: our #GHashTable
- * @notify: %TRUE if the destroy notify handlers are to be called
- *
- * Removes all nodes from the table. Since this may be a precursor to
- * freeing the table entirely, no resize is performed.
- *
- * If @notify is %TRUE then the destroy notify functions are called
- * for the key and value of the hash node.
- */
-static void
-g_hash_table_remove_all_nodes (GHashTable *hash_table,
- gboolean notify)
-{
- GHashNode **node_ptr;
- int i;
-
- for (i = 0; i < hash_table->size; i++)
- for (node_ptr = &hash_table->nodes[i]; *node_ptr != NULL;)
- g_hash_table_remove_node (hash_table, &node_ptr, notify);
-
- hash_table->nnodes = 0;
-}
-
-/*
- * g_hash_table_resize:
- * @hash_table: our #GHashTable
- *
- * Resizes the hash table to the optimal size based on the number of
- * nodes currently held. If you call this function then a resize will
- * occur, even if one does not need to occur. Use
- * g_hash_table_maybe_resize() instead.
- */
-static void
-g_hash_table_resize (GHashTable *hash_table)
-{
- GHashNode **new_nodes;
- GHashNode *node;
- GHashNode *next;
- guint hash_val;
- gint new_size;
- gint i;
-
- new_size = g_spaced_primes_closest (hash_table->nnodes);
- new_size = CLAMP (new_size, HASH_TABLE_MIN_SIZE, HASH_TABLE_MAX_SIZE);
-
- new_nodes = g_new0 (GHashNode*, new_size);
-
- for (i = 0; i < hash_table->size; i++)
- for (node = hash_table->nodes[i]; node; node = next)
- {
- next = node->next;
-
- hash_val = node->key_hash % new_size;
-
- node->next = new_nodes[hash_val];
- new_nodes[hash_val] = node;
- }
-
- g_free (hash_table->nodes);
- hash_table->nodes = new_nodes;
- hash_table->size = new_size;
-}
-
-/*
- * g_hash_table_maybe_resize:
- * @hash_table: our #GHashTable
- *
- * Resizes the hash table, if needed.
- *
- * Essentially, calls g_hash_table_resize() if the table has strayed
- * too far from its ideal size for its number of nodes.
- */
-static inline void
-g_hash_table_maybe_resize (GHashTable *hash_table)
-{
- gint nnodes = hash_table->nnodes;
- gint size = hash_table->size;
-
- if ((size >= 3 * nnodes && size > HASH_TABLE_MIN_SIZE) ||
- (3 * size <= nnodes && size < HASH_TABLE_MAX_SIZE))
- g_hash_table_resize (hash_table);
-}
-
-/**
- * g_hash_table_new:
- * @hash_func: a function to create a hash value from a key.
- * Hash values are used to determine where keys are stored within the
- * #GHashTable data structure. The g_direct_hash(), g_int_hash() and
- * g_str_hash() functions are provided for some common types of keys.
- * If hash_func is %NULL, g_direct_hash() is used.
- * @key_equal_func: a function to check two keys for equality. This is
- * used when looking up keys in the #GHashTable. The g_direct_equal(),
- * g_int_equal() and g_str_equal() functions are provided for the most
- * common types of keys. If @key_equal_func is %NULL, keys are compared
- * directly in a similar fashion to g_direct_equal(), but without the
- * overhead of a function call.
- *
- * Creates a new #GHashTable with a reference count of 1.
- *
- * Return value: a new #GHashTable.
- **/
-GHashTable*
-g_hash_table_new (GHashFunc hash_func,
- GEqualFunc key_equal_func)
-{
- return g_hash_table_new_full (hash_func, key_equal_func, NULL, NULL);
-}
-
-
-/**
- * g_hash_table_new_full:
- * @hash_func: a function to create a hash value from a key.
- * @key_equal_func: a function to check two keys for equality.
- * @key_destroy_func: a function to free the memory allocated for the key
- * used when removing the entry from the #GHashTable or %NULL if you
- * don't want to supply such a function.
- * @value_destroy_func: a function to free the memory allocated for the
- * value used when removing the entry from the #GHashTable or %NULL if
- * you don't want to supply such a function.
- *
- * Creates a new #GHashTable like g_hash_table_new() with a reference count
- * of 1 and allows to specify functions to free the memory allocated for the
- * key and value that get called when removing the entry from the #GHashTable.
- *
- * Return value: a new #GHashTable.
- **/
-GHashTable*
-g_hash_table_new_full (GHashFunc hash_func,
- GEqualFunc key_equal_func,
- GDestroyNotify key_destroy_func,
- GDestroyNotify value_destroy_func)
-{
- GHashTable *hash_table;
-
- hash_table = g_slice_new (GHashTable);
- hash_table->size = HASH_TABLE_MIN_SIZE;
- hash_table->nnodes = 0;
- hash_table->hash_func = hash_func ? hash_func : g_direct_hash;
- hash_table->key_equal_func = key_equal_func;
- hash_table->ref_count = 1;
-#ifndef G_DISABLE_ASSERT
- hash_table->version = 0;
-#endif
- hash_table->key_destroy_func = key_destroy_func;
- hash_table->value_destroy_func = value_destroy_func;
- hash_table->nodes = g_new0 (GHashNode*, hash_table->size);
-
- return hash_table;
-}
-
-/**
- * g_hash_table_iter_init:
- * @iter: an uninitialized #GHashTableIter.
- * @hash_table: a #GHashTable.
- *
- * Initializes a key/value pair iterator and associates it with
- * @hash_table. Modifying the hash table after calling this function
- * invalidates the returned iterator.
- * |[
- * GHashTableIter iter;
- * gpointer key, value;
- *
- * g_hash_table_iter_init (&iter, hash_table);
- * while (g_hash_table_iter_next (&iter, &key, &value))
- * {
- * /&ast; do something with key and value &ast;/
- * }
- * ]|
- *
- * Since: 2.16
- **/
-void
-g_hash_table_iter_init (GHashTableIter *iter,
- GHashTable *hash_table)
-{
- RealIter *ri = (RealIter *) iter;
-
- g_return_if_fail (iter != NULL);
- g_return_if_fail (hash_table != NULL);
-
- ri->hash_table = hash_table;
- ri->prev_node = NULL;
- ri->node = NULL;
- ri->position = -1;
- ri->pre_advanced = FALSE;
-#ifndef G_DISABLE_ASSERT
- ri->version = hash_table->version;
-#endif
-}
-
-/**
- * g_hash_table_iter_next:
- * @iter: an initialized #GHashTableIter.
- * @key: a location to store the key, or %NULL.
- * @value: a location to store the value, or %NULL.
- *
- * Advances @iter and retrieves the key and/or value that are now
- * pointed to as a result of this advancement. If %FALSE is returned,
- * @key and @value are not set, and the iterator becomes invalid.
- *
- * Return value: %FALSE if the end of the #GHashTable has been reached.
- *
- * Since: 2.16
- **/
-gboolean
-g_hash_table_iter_next (GHashTableIter *iter,
- gpointer *key,
- gpointer *value)
-{
- RealIter *ri = (RealIter *) iter;
-
- g_return_val_if_fail (iter != NULL, FALSE);
-#ifndef G_DISABLE_ASSERT
- g_return_val_if_fail (ri->version == ri->hash_table->version, FALSE);
-#endif
-
- if (ri->pre_advanced)
- {
- ri->pre_advanced = FALSE;
-
- if (ri->node == NULL)
- return FALSE;
- }
- else
- {
- if (ri->node != NULL)
- {
- ri->prev_node = ri->node;
- ri->node = ri->node->next;
- }
-
- while (ri->node == NULL)
- {
- ri->position++;
- if (ri->position >= ri->hash_table->size)
- return FALSE;
-
- ri->prev_node = NULL;
- ri->node = ri->hash_table->nodes[ri->position];
- }
- }
-
- if (key != NULL)
- *key = ri->node->key;
- if (value != NULL)
- *value = ri->node->value;
-
- return TRUE;
-}
-
-/**
- * g_hash_table_iter_get_hash_table:
- * @iter: an initialized #GHashTableIter.
- *
- * Returns the #GHashTable associated with @iter.
- *
- * Return value: the #GHashTable associated with @iter.
- *
- * Since: 2.16
- **/
-GHashTable *
-g_hash_table_iter_get_hash_table (GHashTableIter *iter)
-{
- g_return_val_if_fail (iter != NULL, NULL);
-
- return ((RealIter *) iter)->hash_table;
-}
-
-static void
-iter_remove_or_steal (RealIter *ri, gboolean notify)
-{
- GHashNode *prev;
- GHashNode *node;
- int position;
-
- g_return_if_fail (ri != NULL);
-#ifndef G_DISABLE_ASSERT
- g_return_if_fail (ri->version == ri->hash_table->version);
-#endif
- g_return_if_fail (ri->node != NULL);
-
- prev = ri->prev_node;
- node = ri->node;
- position = ri->position;
-
- /* pre-advance the iterator since we will remove the node */
-
- ri->node = ri->node->next;
- /* ri->prev_node is still the correct previous node */
-
- while (ri->node == NULL)
- {
- ri->position++;
- if (ri->position >= ri->hash_table->size)
- break;
-
- ri->prev_node = NULL;
- ri->node = ri->hash_table->nodes[ri->position];
- }
-
- ri->pre_advanced = TRUE;
-
- /* remove the node */
-
- if (prev != NULL)
- prev->next = node->next;
- else
- ri->hash_table->nodes[position] = node->next;
-
- if (notify)
- {
- if (ri->hash_table->key_destroy_func)
- ri->hash_table->key_destroy_func(node->key);
- if (ri->hash_table->value_destroy_func)
- ri->hash_table->value_destroy_func(node->value);
- }
-
- g_slice_free (GHashNode, node);
-
- ri->hash_table->nnodes--;
-
-#ifndef G_DISABLE_ASSERT
- ri->version++;
- ri->hash_table->version++;
-#endif
-}
-
-/**
- * g_hash_table_iter_remove():
- * @iter: an initialized #GHashTableIter.
- *
- * Removes the key/value pair currently pointed to by the iterator
- * from its associated #GHashTable. Can only be called after
- * g_hash_table_iter_next() returned %TRUE, and cannot be called more
- * than once for the same key/value pair.
- *
- * If the #GHashTable was created using g_hash_table_new_full(), the
- * key and value are freed using the supplied destroy functions, otherwise
- * you have to make sure that any dynamically allocated values are freed
- * yourself.
- *
- * Since: 2.16
- **/
-void
-g_hash_table_iter_remove (GHashTableIter *iter)
-{
- iter_remove_or_steal ((RealIter *) iter, TRUE);
-}
-
-/**
- * g_hash_table_iter_steal():
- * @iter: an initialized #GHashTableIter.
- *
- * Removes the key/value pair currently pointed to by the iterator
- * from its associated #GHashTable, without calling the key and value
- * destroy functions. Can only be called after
- * g_hash_table_iter_next() returned %TRUE, and cannot be called more
- * than once for the same key/value pair.
- *
- * Since: 2.16
- **/
-void
-g_hash_table_iter_steal (GHashTableIter *iter)
-{
- iter_remove_or_steal ((RealIter *) iter, FALSE);
-}
-
-
-/**
- * g_hash_table_ref:
- * @hash_table: a valid #GHashTable.
- *
- * Atomically increments the reference count of @hash_table by one.
- * This function is MT-safe and may be called from any thread.
- *
- * Return value: the passed in #GHashTable.
- *
- * Since: 2.10
- **/
-GHashTable*
-g_hash_table_ref (GHashTable *hash_table)
-{
- g_return_val_if_fail (hash_table != NULL, NULL);
- g_return_val_if_fail (hash_table->ref_count > 0, hash_table);
-
- g_atomic_int_add (&hash_table->ref_count, 1);
- return hash_table;
-}
-
-/**
- * g_hash_table_unref:
- * @hash_table: a valid #GHashTable.
- *
- * Atomically decrements the reference count of @hash_table by one.
- * If the reference count drops to 0, all keys and values will be
- * destroyed, and all memory allocated by the hash table is released.
- * This function is MT-safe and may be called from any thread.
- *
- * Since: 2.10
- **/
-void
-g_hash_table_unref (GHashTable *hash_table)
-{
- g_return_if_fail (hash_table != NULL);
- g_return_if_fail (hash_table->ref_count > 0);
-
- if (g_atomic_int_exchange_and_add (&hash_table->ref_count, -1) - 1 == 0)
- {
- g_hash_table_remove_all_nodes (hash_table, TRUE);
- g_free (hash_table->nodes);
- g_slice_free (GHashTable, hash_table);
- }
-}
-
-/**
- * g_hash_table_destroy:
- * @hash_table: a #GHashTable.
- *
- * Destroys all keys and values in the #GHashTable and decrements its
- * reference count by 1. If keys and/or values are dynamically allocated,
- * you should either free them first or create the #GHashTable with destroy
- * notifiers using g_hash_table_new_full(). In the latter case the destroy
- * functions you supplied will be called on all keys and values during the
- * destruction phase.
- **/
-void
-g_hash_table_destroy (GHashTable *hash_table)
-{
- g_return_if_fail (hash_table != NULL);
- g_return_if_fail (hash_table->ref_count > 0);
-
- g_hash_table_remove_all (hash_table);
- g_hash_table_unref (hash_table);
-}
-
-/**
- * g_hash_table_lookup:
- * @hash_table: a #GHashTable.
- * @key: the key to look up.
- *
- * Looks up a key in a #GHashTable. Note that this function cannot
- * distinguish between a key that is not present and one which is present
- * and has the value %NULL. If you need this distinction, use
- * g_hash_table_lookup_extended().
- *
- * Return value: the associated value, or %NULL if the key is not found.
- **/
-gpointer
-g_hash_table_lookup (GHashTable *hash_table,
- gconstpointer key)
-{
- GHashNode *node;
-
- g_return_val_if_fail (hash_table != NULL, NULL);
-
- node = *g_hash_table_lookup_node (hash_table, key, NULL);
-
- return node ? node->value : NULL;
-}
-
-/**
- * g_hash_table_lookup_extended:
- * @hash_table: a #GHashTable.
- * @lookup_key: the key to look up.
- * @orig_key: returns the original key.
- * @value: returns the value associated with the key.
- *
- * Looks up a key in the #GHashTable, returning the original key and the
- * associated value and a #gboolean which is %TRUE if the key was found. This
- * is useful if you need to free the memory allocated for the original key,
- * for example before calling g_hash_table_remove().
- *
- * Return value: %TRUE if the key was found in the #GHashTable.
- **/
-gboolean
-g_hash_table_lookup_extended (GHashTable *hash_table,
- gconstpointer lookup_key,
- gpointer *orig_key,
- gpointer *value)
-{
- GHashNode *node;
-
- g_return_val_if_fail (hash_table != NULL, FALSE);
-
- node = *g_hash_table_lookup_node (hash_table, lookup_key, NULL);
-
- if (node == NULL)
- return FALSE;
-
- if (orig_key)
- *orig_key = node->key;
-
- if (value)
- *value = node->value;
-
- return TRUE;
-}
-
-/*
- * g_hash_table_insert_internal:
- * @hash_table: our #GHashTable
- * @key: the key to insert
- * @value: the value to insert
- * @keep_new_key: if %TRUE and this key already exists in the table
- * then call the destroy notify function on the old key. If %FALSE
- * then call the destroy notify function on the new key.
- *
- * Implements the common logic for the g_hash_table_insert() and
- * g_hash_table_replace() functions.
- *
- * Do a lookup of @key. If it is found, replace it with the new
- * @value (and perhaps the new @key). If it is not found, create a
- * new node.
- */
-static void
-g_hash_table_insert_internal (GHashTable *hash_table,
- gpointer key,
- gpointer value,
- gboolean keep_new_key)
-{
- GHashNode **node_ptr, *node;
- guint key_hash;
-
- g_return_if_fail (hash_table != NULL);
- g_return_if_fail (hash_table->ref_count > 0);
-
- node_ptr = g_hash_table_lookup_node (hash_table, key, &key_hash);
-
- if ((node = *node_ptr))
- {
- if (keep_new_key)
- {
- if (hash_table->key_destroy_func)
- hash_table->key_destroy_func (node->key);
- node->key = key;
- }
- else
- {
- if (hash_table->key_destroy_func)
- hash_table->key_destroy_func (key);
- }
-
- if (hash_table->value_destroy_func)
- hash_table->value_destroy_func (node->value);
-
- node->value = value;
- }
- else
- {
- node = g_slice_new (GHashNode);
-
- node->key = key;
- node->value = value;
- node->key_hash = key_hash;
- node->next = NULL;
-
- *node_ptr = node;
- hash_table->nnodes++;
- g_hash_table_maybe_resize (hash_table);
-
-#ifndef G_DISABLE_ASSERT
- hash_table->version++;
-#endif
- }
-}
-
-/**
- * g_hash_table_insert:
- * @hash_table: a #GHashTable.
- * @key: a key to insert.
- * @value: the value to associate with the key.
- *
- * Inserts a new key and value into a #GHashTable.
- *
- * If the key already exists in the #GHashTable its current value is replaced
- * with the new value. If you supplied a @value_destroy_func when creating the
- * #GHashTable, the old value is freed using that function. If you supplied
- * a @key_destroy_func when creating the #GHashTable, the passed key is freed
- * using that function.
- **/
-void
-g_hash_table_insert (GHashTable *hash_table,
- gpointer key,
- gpointer value)
-{
- g_hash_table_insert_internal (hash_table, key, value, FALSE);
-}
-
-/**
- * g_hash_table_replace:
- * @hash_table: a #GHashTable.
- * @key: a key to insert.
- * @value: the value to associate with the key.
- *
- * Inserts a new key and value into a #GHashTable similar to
- * g_hash_table_insert(). The difference is that if the key already exists
- * in the #GHashTable, it gets replaced by the new key. If you supplied a
- * @value_destroy_func when creating the #GHashTable, the old value is freed
- * using that function. If you supplied a @key_destroy_func when creating the
- * #GHashTable, the old key is freed using that function.
- **/
-void
-g_hash_table_replace (GHashTable *hash_table,
- gpointer key,
- gpointer value)
-{
- g_hash_table_insert_internal (hash_table, key, value, TRUE);
-}
-
-/*
- * g_hash_table_remove_internal:
- * @hash_table: our #GHashTable
- * @key: the key to remove
- * @notify: %TRUE if the destroy notify handlers are to be called
- * Return value: %TRUE if a node was found and removed, else %FALSE
- *
- * Implements the common logic for the g_hash_table_remove() and
- * g_hash_table_steal() functions.
- *
- * Do a lookup of @key and remove it if it is found, calling the
- * destroy notify handlers only if @notify is %TRUE.
- */
-static gboolean
-g_hash_table_remove_internal (GHashTable *hash_table,
- gconstpointer key,
- gboolean notify)
-{
- GHashNode **node_ptr;
-
- g_return_val_if_fail (hash_table != NULL, FALSE);
-
- node_ptr = g_hash_table_lookup_node (hash_table, key, NULL);
- if (*node_ptr == NULL)
- return FALSE;
-
- g_hash_table_remove_node (hash_table, &node_ptr, notify);
- g_hash_table_maybe_resize (hash_table);
-
-#ifndef G_DISABLE_ASSERT
- hash_table->version++;
-#endif
-
- return TRUE;
-}
-
-/**
- * g_hash_table_remove:
- * @hash_table: a #GHashTable.
- * @key: the key to remove.
- *
- * Removes a key and its associated value from a #GHashTable.
- *
- * If the #GHashTable was created using g_hash_table_new_full(), the
- * key and value are freed using the supplied destroy functions, otherwise
- * you have to make sure that any dynamically allocated values are freed
- * yourself.
- *
- * Return value: %TRUE if the key was found and removed from the #GHashTable.
- **/
-gboolean
-g_hash_table_remove (GHashTable *hash_table,
- gconstpointer key)
-{
- return g_hash_table_remove_internal (hash_table, key, TRUE);
-}
-
-/**
- * g_hash_table_steal:
- * @hash_table: a #GHashTable.
- * @key: the key to remove.
- *
- * Removes a key and its associated value from a #GHashTable without
- * calling the key and value destroy functions.
- *
- * Return value: %TRUE if the key was found and removed from the #GHashTable.
- **/
-gboolean
-g_hash_table_steal (GHashTable *hash_table,
- gconstpointer key)
-{
- return g_hash_table_remove_internal (hash_table, key, FALSE);
-}
-
-/**
- * g_hash_table_remove_all:
- * @hash_table: a #GHashTable
- *
- * Removes all keys and their associated values from a #GHashTable.
- *
- * If the #GHashTable was created using g_hash_table_new_full(), the keys
- * and values are freed using the supplied destroy functions, otherwise you
- * have to make sure that any dynamically allocated values are freed
- * yourself.
- *
- * Since: 2.12
- **/
-void
-g_hash_table_remove_all (GHashTable *hash_table)
-{
- g_return_if_fail (hash_table != NULL);
-
-#ifndef G_DISABLE_ASSERT
- if (hash_table->nnodes != 0)
- hash_table->version++;
-#endif
-
- g_hash_table_remove_all_nodes (hash_table, TRUE);
- g_hash_table_maybe_resize (hash_table);
-}
-
-/**
- * g_hash_table_steal_all:
- * @hash_table: a #GHashTable.
- *
- * Removes all keys and their associated values from a #GHashTable
- * without calling the key and value destroy functions.
- *
- * Since: 2.12
- **/
-void
-g_hash_table_steal_all (GHashTable *hash_table)
-{
- g_return_if_fail (hash_table != NULL);
-
-#ifndef G_DISABLE_ASSERT
- if (hash_table->nnodes != 0)
- hash_table->version++;
-#endif
-
- g_hash_table_remove_all_nodes (hash_table, FALSE);
- g_hash_table_maybe_resize (hash_table);
-}
-
-/*
- * g_hash_table_foreach_remove_or_steal:
- * @hash_table: our #GHashTable
- * @func: the user's callback function
- * @user_data: data for @func
- * @notify: %TRUE if the destroy notify handlers are to be called
- *
- * Implements the common logic for g_hash_table_foreach_remove() and
- * g_hash_table_foreach_steal().
- *
- * Iterates over every node in the table, calling @func with the key
- * and value of the node (and @user_data). If @func returns %TRUE the
- * node is removed from the table.
- *
- * If @notify is true then the destroy notify handlers will be called
- * for each removed node.
- */
-static guint
-g_hash_table_foreach_remove_or_steal (GHashTable *hash_table,
- GHRFunc func,
- gpointer user_data,
- gboolean notify)
-{
- GHashNode *node, **node_ptr;
- guint deleted = 0;
- gint i;
-
- for (i = 0; i < hash_table->size; i++)
- for (node_ptr = &hash_table->nodes[i]; (node = *node_ptr) != NULL;)
- if ((* func) (node->key, node->value, user_data))
- {
- g_hash_table_remove_node (hash_table, &node_ptr, notify);
- deleted++;
- }
- else
- node_ptr = &node->next;
-
- g_hash_table_maybe_resize (hash_table);
-
-#ifndef G_DISABLE_ASSERT
- if (deleted > 0)
- hash_table->version++;
-#endif
-
- return deleted;
-}
-
-/**
- * g_hash_table_foreach_remove:
- * @hash_table: a #GHashTable.
- * @func: the function to call for each key/value pair.
- * @user_data: user data to pass to the function.
- *
- * Calls the given function for each key/value pair in the #GHashTable.
- * If the function returns %TRUE, then the key/value pair is removed from the
- * #GHashTable. If you supplied key or value destroy functions when creating
- * the #GHashTable, they are used to free the memory allocated for the removed
- * keys and values.
- *
- * See #GHashTableIterator for an alternative way to loop over the
- * key/value pairs in the hash table.
- *
- * Return value: the number of key/value pairs removed.
- **/
-guint
-g_hash_table_foreach_remove (GHashTable *hash_table,
- GHRFunc func,
- gpointer user_data)
-{
- g_return_val_if_fail (hash_table != NULL, 0);
- g_return_val_if_fail (func != NULL, 0);
-
- return g_hash_table_foreach_remove_or_steal (hash_table, func, user_data, TRUE);
-}
-
-/**
- * g_hash_table_foreach_steal:
- * @hash_table: a #GHashTable.
- * @func: the function to call for each key/value pair.
- * @user_data: user data to pass to the function.
- *
- * Calls the given function for each key/value pair in the #GHashTable.
- * If the function returns %TRUE, then the key/value pair is removed from the
- * #GHashTable, but no key or value destroy functions are called.
- *
- * See #GHashTableIterator for an alternative way to loop over the
- * key/value pairs in the hash table.
- *
- * Return value: the number of key/value pairs removed.
- **/
-guint
-g_hash_table_foreach_steal (GHashTable *hash_table,
- GHRFunc func,
- gpointer user_data)
-{
- g_return_val_if_fail (hash_table != NULL, 0);
- g_return_val_if_fail (func != NULL, 0);
-
- return g_hash_table_foreach_remove_or_steal (hash_table, func, user_data, FALSE);
-}
-
-/**
- * g_hash_table_foreach:
- * @hash_table: a #GHashTable.
- * @func: the function to call for each key/value pair.
- * @user_data: user data to pass to the function.
- *
- * Calls the given function for each of the key/value pairs in the
- * #GHashTable. The function is passed the key and value of each
- * pair, and the given @user_data parameter. The hash table may not
- * be modified while iterating over it (you can't add/remove
- * items). To remove all items matching a predicate, use
- * g_hash_table_foreach_remove().
- *
- * See g_hash_table_find() for performance caveats for linear
- * order searches in contrast to g_hash_table_lookup().
- **/
-void
-g_hash_table_foreach (GHashTable *hash_table,
- GHFunc func,
- gpointer user_data)
-{
- GHashNode *node;
- gint i;
-
- g_return_if_fail (hash_table != NULL);
- g_return_if_fail (func != NULL);
-
- for (i = 0; i < hash_table->size; i++)
- for (node = hash_table->nodes[i]; node; node = node->next)
- (* func) (node->key, node->value, user_data);
-}
-
-/**
- * g_hash_table_find:
- * @hash_table: a #GHashTable.
- * @predicate: function to test the key/value pairs for a certain property.
- * @user_data: user data to pass to the function.
- *
- * Calls the given function for key/value pairs in the #GHashTable until
- * @predicate returns %TRUE. The function is passed the key and value of
- * each pair, and the given @user_data parameter. The hash table may not
- * be modified while iterating over it (you can't add/remove items).
- *
- * Note, that hash tables are really only optimized for forward lookups,
- * i.e. g_hash_table_lookup().
- * So code that frequently issues g_hash_table_find() or
- * g_hash_table_foreach() (e.g. in the order of once per every entry in a
- * hash table) should probably be reworked to use additional or different
- * data structures for reverse lookups (keep in mind that an O(n) find/foreach
- * operation issued for all n values in a hash table ends up needing O(n*n)
- * operations).
- *
- * Return value: The value of the first key/value pair is returned, for which
- * func evaluates to %TRUE. If no pair with the requested property is found,
- * %NULL is returned.
- *
- * Since: 2.4
- **/
-gpointer
-g_hash_table_find (GHashTable *hash_table,
- GHRFunc predicate,
- gpointer user_data)
-{
- GHashNode *node;
- gint i;
-
- g_return_val_if_fail (hash_table != NULL, NULL);
- g_return_val_if_fail (predicate != NULL, NULL);
-
- for (i = 0; i < hash_table->size; i++)
- for (node = hash_table->nodes[i]; node; node = node->next)
- if (predicate (node->key, node->value, user_data))
- return node->value;
- return NULL;
-}
-
-/**
- * g_hash_table_size:
- * @hash_table: a #GHashTable.
- *
- * Returns the number of elements contained in the #GHashTable.
- *
- * Return value: the number of key/value pairs in the #GHashTable.
- **/
-guint
-g_hash_table_size (GHashTable *hash_table)
-{
- g_return_val_if_fail (hash_table != NULL, 0);
-
- return hash_table->nnodes;
-}
-
-/**
- * g_hash_table_get_keys:
- * @hash_table: a #GHashTable
- *
- * Retrieves every key inside @hash_table. The returned data is valid
- * until @hash_table is modified.
- *
- * Return value: a #GList containing all the keys inside the hash
- * table. The content of the list is owned by the hash table and
- * should not be modified or freed. Use g_list_free() when done
- * using the list.
- *
- * Since: 2.14
- */
-GList *
-g_hash_table_get_keys (GHashTable *hash_table)
-{
- GHashNode *node;
- gint i;
- GList *retval;
-
- g_return_val_if_fail (hash_table != NULL, NULL);
-
- retval = NULL;
- for (i = 0; i < hash_table->size; i++)
- for (node = hash_table->nodes[i]; node; node = node->next)
- retval = g_list_prepend (retval, node->key);
-
- return retval;
-}
-
-/**
- * g_hash_table_get_values:
- * @hash_table: a #GHashTable
- *
- * Retrieves every value inside @hash_table. The returned data is
- * valid until @hash_table is modified.
- *
- * Return value: a #GList containing all the values inside the hash
- * table. The content of the list is owned by the hash table and
- * should not be modified or freed. Use g_list_free() when done
- * using the list.
- *
- * Since: 2.14
- */
-GList *
-g_hash_table_get_values (GHashTable *hash_table)
-{
- GHashNode *node;
- gint i;
- GList *retval;
-
- g_return_val_if_fail (hash_table != NULL, NULL);
-
- retval = NULL;
- for (i = 0; i < hash_table->size; i++)
- for (node = hash_table->nodes[i]; node; node = node->next)
- retval = g_list_prepend (retval, node->value);
-
- return retval;
-}
-
-#define __G_HASH_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/ghash.h b/navit/support/glib/ghash.h
deleted file mode 100644
index afdd07297..000000000
--- a/navit/support/glib/ghash.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_HASH_H__
-#define __G_HASH_H__
-
-#include <glib/gtypes.h>
-#include <glib/glist.h>
-
-G_BEGIN_DECLS
-
-typedef struct _GHashTable GHashTable;
-
-typedef gboolean (*GHRFunc) (gpointer key,
- gpointer value,
- gpointer user_data);
-
-typedef struct _GHashTableIter GHashTableIter;
-
-struct _GHashTableIter
-{
- /*< private >*/
- gpointer dummy1;
- gpointer dummy2;
- gpointer dummy3;
- int dummy4;
- gboolean dummy5;
- gpointer dummy6;
-};
-
-/* Hash tables
- */
-GHashTable* g_hash_table_new (GHashFunc hash_func,
- GEqualFunc key_equal_func);
-GHashTable* g_hash_table_new_full (GHashFunc hash_func,
- GEqualFunc key_equal_func,
- GDestroyNotify key_destroy_func,
- GDestroyNotify value_destroy_func);
-void g_hash_table_destroy (GHashTable *hash_table);
-void g_hash_table_insert (GHashTable *hash_table,
- gpointer key,
- gpointer value);
-void g_hash_table_replace (GHashTable *hash_table,
- gpointer key,
- gpointer value);
-gboolean g_hash_table_remove (GHashTable *hash_table,
- gconstpointer key);
-void g_hash_table_remove_all (GHashTable *hash_table);
-gboolean g_hash_table_steal (GHashTable *hash_table,
- gconstpointer key);
-void g_hash_table_steal_all (GHashTable *hash_table);
-gpointer g_hash_table_lookup (GHashTable *hash_table,
- gconstpointer key);
-gboolean g_hash_table_lookup_extended (GHashTable *hash_table,
- gconstpointer lookup_key,
- gpointer *orig_key,
- gpointer *value);
-void g_hash_table_foreach (GHashTable *hash_table,
- GHFunc func,
- gpointer user_data);
-gpointer g_hash_table_find (GHashTable *hash_table,
- GHRFunc predicate,
- gpointer user_data);
-guint g_hash_table_foreach_remove (GHashTable *hash_table,
- GHRFunc func,
- gpointer user_data);
-guint g_hash_table_foreach_steal (GHashTable *hash_table,
- GHRFunc func,
- gpointer user_data);
-guint g_hash_table_size (GHashTable *hash_table);
-GList * g_hash_table_get_keys (GHashTable *hash_table);
-GList * g_hash_table_get_values (GHashTable *hash_table);
-
-void g_hash_table_iter_init (GHashTableIter *iter,
- GHashTable *hash_table);
-gboolean g_hash_table_iter_next (GHashTableIter *iter,
- gpointer *key,
- gpointer *value);
-GHashTable* g_hash_table_iter_get_hash_table (GHashTableIter *iter);
-void g_hash_table_iter_remove (GHashTableIter *iter);
-void g_hash_table_iter_steal (GHashTableIter *iter);
-
-/* keeping hash tables alive */
-GHashTable* g_hash_table_ref (GHashTable *hash_table);
-void g_hash_table_unref (GHashTable *hash_table);
-
-#ifndef G_DISABLE_DEPRECATED
-
-/* The following two functions are deprecated and will be removed in
- * the next major release. They do no good. */
-#define g_hash_table_freeze(hash_table) ((void)0)
-#define g_hash_table_thaw(hash_table) ((void)0)
-
-#endif /* G_DISABLE_DEPRECATED */
-
-/* Hash Functions
- */
-gboolean g_str_equal (gconstpointer v1,
- gconstpointer v2);
-guint g_str_hash (gconstpointer v);
-
-gboolean g_int_equal (gconstpointer v1,
- gconstpointer v2);
-guint g_int_hash (gconstpointer v);
-
-/* This "hash" function will just return the key's address as an
- * unsigned integer. Useful for hashing on plain addresses or
- * simple integer values.
- * Passing NULL into g_hash_table_new() as GHashFunc has the
- * same effect as passing g_direct_hash().
- */
-guint g_direct_hash (gconstpointer v) G_GNUC_CONST;
-gboolean g_direct_equal (gconstpointer v1,
- gconstpointer v2) G_GNUC_CONST;
-
-G_END_DECLS
-
-#endif /* __G_HASH_H__ */
diff --git a/navit/support/glib/glib.h b/navit/support/glib/glib.h
deleted file mode 100644
index cd8644521..000000000
--- a/navit/support/glib/glib.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef __G_LIB_H__
-#define __G_LIB_H__
-
-#define __GLIB_H_INSIDE__
-#include <glib/galloca.h>
-#include <glib/gerror.h>
-#include <glib/fake.h>
-#include <glib/ghash.h>
-#include <glib/gmessages.h>
-#include <glib/gstrfuncs.h>
-#include <glib/gunicode.h>
-#include <glib/gutils.h>
-
-#undef __GLIB_H_INSIDE__
-
-#endif /* __G_LIB_H__ */
diff --git a/navit/support/glib/glib_init.c b/navit/support/glib/glib_init.c
deleted file mode 100644
index 32be387da..000000000
--- a/navit/support/glib/glib_init.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "plugin.h"
-
-void
-plugin_init(void)
-{
-}
diff --git a/navit/support/glib/glibconfig.h b/navit/support/glib/glibconfig.h
deleted file mode 100644
index 6baa58873..000000000
--- a/navit/support/glib/glibconfig.h
+++ /dev/null
@@ -1,266 +0,0 @@
-/* glibconfig.h.win32.in Merged from two versions generated by configure for gcc and MSVC. */
-/* glibconfig.h
- *
- * This is a generated file. Please modify 'configure.in'
- */
-
-#ifndef __G_LIBCONFIG_H__
-#define __G_LIBCONFIG_H__
-
-#include <glib/gmacros.h>
-
-#include <limits.h>
-#include <float.h>
-#include "config.h"
-
-#ifdef HAVE_API_WIN32_BASE
-#include <libgnuintl.h>
-#endif
-
-G_BEGIN_DECLS
-
-#define G_MINFLOAT FLT_MIN
-#define G_MAXFLOAT FLT_MAX
-#define G_MINDOUBLE DBL_MIN
-#define G_MAXDOUBLE DBL_MAX
-#define G_MINSHORT SHRT_MIN
-#define G_MAXSHORT SHRT_MAX
-#define G_MAXUSHORT USHRT_MAX
-#define G_MININT INT_MIN
-#define G_MAXINT INT_MAX
-#define G_MAXUINT UINT_MAX
-#define G_MINLONG LONG_MIN
-#define G_MAXLONG LONG_MAX
-#define G_MAXULONG ULONG_MAX
-
-typedef signed char gint8;
-typedef unsigned char guint8;
-typedef signed short gint16;
-typedef unsigned short guint16;
-#define G_GINT16_MODIFIER "h"
-#define G_GINT16_FORMAT "hi"
-#define G_GUINT16_FORMAT "hu"
-typedef signed int gint32;
-typedef unsigned int guint32;
-#define G_GINT32_MODIFIER ""
-#define G_GINT32_FORMAT "i"
-#define G_GUINT32_FORMAT "u"
-#define G_HAVE_GINT64 1 /* deprecated, always true */
-
-#ifndef _MSC_VER
-G_GNUC_EXTENSION typedef signed long long gint64;
-G_GNUC_EXTENSION typedef unsigned long long guint64;
-#else /* _MSC_VER */
-typedef signed __int64 gint64;
-typedef unsigned __int64 guint64;
-#endif /* _MSC_VER */
-
-#ifndef _MSC_VER
-#define G_GINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##LL))
-#else /* _MSC_VER */
-#define G_GINT64_CONSTANT(val) (val##i64)
-#endif /* _MSC_VER */
-#ifndef _MSC_VER
-#define G_GUINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##ULL))
-#else /* _MSC_VER */
-#define G_GUINT64_CONSTANT(val) (val##Ui64)
-#endif /* _MSC_VER */
-#define G_GINT64_MODIFIER "I64"
-#define G_GINT64_FORMAT "I64i"
-#define G_GUINT64_FORMAT "I64u"
-
-#if defined(_WIN64) || defined(_M_X64) || defined(_M_AMD64)
-
-#define GLIB_SIZEOF_VOID_P 8
-#define GLIB_SIZEOF_LONG 4
-#define GLIB_SIZEOF_SIZE_T 8
-
-typedef signed long long gssize;
-typedef unsigned long long gsize;
-#define G_GSIZE_MODIFIER "I64"
-#define G_GSSIZE_FORMAT "I64d"
-#define G_GSIZE_FORMAT "I64u"
-
-#define G_MAXSIZE G_MAXUINT64
-#define G_MINSSIZE G_MININT64
-#define G_MAXSSIZE G_MAXINT64
-
-#else
-
-#define GLIB_SIZEOF_VOID_P 4
-#define GLIB_SIZEOF_LONG 4
-#define GLIB_SIZEOF_SIZE_T 4
-
-typedef signed int gssize;
-typedef unsigned int gsize;
-#define G_GSIZE_MODIFIER ""
-#define G_GSSIZE_FORMAT "i"
-#define G_GSIZE_FORMAT "u"
-
-#define G_MAXSIZE G_MAXUINT
-#define G_MINSSIZE G_MININT
-#define G_MAXSSIZE G_MAXINT
-
-#endif
-
-typedef gint64 goffset;
-#define G_MINOFFSET G_MININT64
-#define G_MAXOFFSET G_MAXINT64
-
-#ifndef _WIN64
-
-#define GPOINTER_TO_INT(p) ((gint) (p))
-#define GPOINTER_TO_UINT(p) ((guint) (p))
-
-#define GINT_TO_POINTER(i) ((gpointer) (i))
-#define GUINT_TO_POINTER(u) ((gpointer) (u))
-
-typedef signed int gintptr;
-typedef unsigned int guintptr;
-
-#else
-
-#define GPOINTER_TO_INT(p) ((gint) (gint64) (p))
-#define GPOINTER_TO_UINT(p) ((guint) (guint64) (p))
-
-#define GINT_TO_POINTER(i) ((gpointer) (gint64) (i))
-#define GUINT_TO_POINTER(u) ((gpointer) (guint64) (u))
-
-#ifndef _MSC_VER
-typedef signed long long gintptr;
-typedef unsigned long long guintptr;
-#else
-typedef signed __int64 gintptr;
-typedef unsigned __int64 guintptr;
-#endif
-
-#endif
-
-#ifdef NeXT /* @#%@! NeXTStep */
-# define g_ATEXIT(proc) (!atexit (proc))
-#else
-# define g_ATEXIT(proc) (atexit (proc))
-#endif
-
-#define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END
-
-#define GLIB_MAJOR_VERSION 2
-#define GLIB_MINOR_VERSION 18
-#define GLIB_MICRO_VERSION 1
-
-#ifdef HAVE_API_WIN32_BASE
-#define G_OS_WIN32
-#define G_PLATFORM_WIN32
-#endif
-
-
-#ifndef _MSC_VER
-#define G_VA_COPY va_copy
-#endif /* not _MSC_VER */
-
-#ifdef __cplusplus
-#define G_HAVE_INLINE 1
-#else /* !__cplusplus */
-#ifndef _MSC_VER
-#define G_HAVE_INLINE 1
-#endif /* _MSC_VER */
-#define G_HAVE___INLINE 1
-#if !defined(_MSC_VER) && !defined(__DMC__)
-#define G_HAVE___INLINE__ 1
-#endif /* !_MSC_VER and !__DMC__ */
-#endif /* !__cplusplus */
-
-#define G_CAN_INLINE 1
-
-#ifndef _MSC_VER
-#define G_HAVE_ISO_VARARGS 1
-
-/* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
- * is passed ISO vararg support is turned off, and there is no work
- * around to turn it on, so we unconditionally turn it off.
- */
-#if __GNUC__ == 2 && __GNUC_MINOR__ == 95
-# undef G_HAVE_ISO_VARARGS
-#endif
-
-#define G_HAVE_GNUC_VARARGS 1
-#else /* _MSC_VER */
-/* varargs macros available since msvc8 (vs2005) */
-# if _MSC_VER >= 1400
-# define G_HAVE_ISO_VARARGS 1
-# endif
-#endif /* not _MSC_VER */
-#define G_HAVE_GROWING_STACK 0
-
-#define G_GNUC_INTERNAL
-
-#define G_THREADS_ENABLED
-#define G_THREADS_IMPL_WIN32
-typedef struct _GMutex* GStaticMutex;
-#define G_STATIC_MUTEX_INIT NULL
-#define g_static_mutex_get_mutex(mutex) \
- (g_static_mutex_get_mutex_impl_shortcut (mutex))
-/* This represents a system thread as used by the implementation. An
- * alien implementaion, as loaded by g_thread_init can only count on
- * "sizeof (gpointer)" bytes to store their info. We however need more
- * for some of our native implementations. */
-typedef union _GSystemThread GSystemThread;
-union _GSystemThread
-{
-#ifndef _WIN64
- char data[4];
-#else
- char data[8];
-#endif
- double dummy_double;
- void *dummy_pointer;
- long dummy_long;
-};
-
-#define GINT16_TO_LE(val) ((gint16) (val))
-#define GUINT16_TO_LE(val) ((guint16) (val))
-#define GINT16_TO_BE(val) ((gint16) GUINT16_SWAP_LE_BE (val))
-#define GUINT16_TO_BE(val) (GUINT16_SWAP_LE_BE (val))
-#define GINT32_TO_LE(val) ((gint32) (val))
-#define GUINT32_TO_LE(val) ((guint32) (val))
-#define GINT32_TO_BE(val) ((gint32) GUINT32_SWAP_LE_BE (val))
-#define GUINT32_TO_BE(val) (GUINT32_SWAP_LE_BE (val))
-#define GINT64_TO_LE(val) ((gint64) (val))
-#define GUINT64_TO_LE(val) ((guint64) (val))
-#define GINT64_TO_BE(val) ((gint64) GUINT64_SWAP_LE_BE (val))
-#define GUINT64_TO_BE(val) (GUINT64_SWAP_LE_BE (val))
-#define GLONG_TO_LE(val) ((glong) GINT32_TO_LE (val))
-#define GULONG_TO_LE(val) ((gulong) GUINT32_TO_LE (val))
-#define GLONG_TO_BE(val) ((glong) GINT32_TO_BE (val))
-#define GULONG_TO_BE(val) ((gulong) GUINT32_TO_BE (val))
-#define GINT_TO_LE(val) ((gint) GINT32_TO_LE (val))
-#define GUINT_TO_LE(val) ((guint) GUINT32_TO_LE (val))
-#define GINT_TO_BE(val) ((gint) GINT32_TO_BE (val))
-#define GUINT_TO_BE(val) ((guint) GUINT32_TO_BE (val))
-#define G_BYTE_ORDER G_LITTLE_ENDIAN
-
-#define GLIB_SYSDEF_POLLIN =1
-#define GLIB_SYSDEF_POLLOUT =4
-#define GLIB_SYSDEF_POLLPRI =2
-#define GLIB_SYSDEF_POLLHUP =16
-#define GLIB_SYSDEF_POLLERR =8
-#define GLIB_SYSDEF_POLLNVAL =32
-
-#define G_MODULE_SUFFIX "dll"
-
-#define HAVE_GOOD_PRINTF
-#define NO_SYS_SIGLIST_DECL
-#define GLIB_STATIC_COMPILATION
-#define G_DISABLE_CHECKS
-/* A GPid is an abstraction for a process "handle". It is *not* an
- * abstraction for a process identifier in general. GPid is used in
- * GLib only for descendant processes spawned with the g_spawn*
- * functions. On POSIX there is no "process handle" concept as such,
- * but on Windows a GPid is a handle to a process, a kind of pointer,
- * not a process identifier.
- */
-typedef void * GPid;
-
-G_END_DECLS
-
-#endif /* GLIBCONFIG_H */
diff --git a/navit/support/glib/glibintl.h b/navit/support/glib/glibintl.h
deleted file mode 100644
index 13af202c8..000000000
--- a/navit/support/glib/glibintl.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef __GLIBINTL_H__
-#define __GLIBINTL_H__
-
-#if NOT_NEEDED_FOR_NAVIT
-#ifndef SIZEOF_CHAR
-#error "config.h must be included prior to glibintl.h"
-#endif
-#endif /* NOT_NEEDED_FOR_NAVIT */
-
-G_CONST_RETURN gchar *glib_gettext (const gchar *str);
-
-#ifdef USE_NATIVE_LANGUAGE_SUPPORT
-
-#include "navit_nls.h"
-#undef _
-#undef gettext_noop
-#undef _n
-
-#define _(String) glib_gettext(String)
-/* Split out this in the code, but keep it in the same domain for now */
-#define P_(String) glib_gettext(String)
-
-#ifdef gettext_noop
-#define N_(String) gettext_noop(String)
-#else
-#define N_(String) (String)
-#endif
-#else /* NLS is disabled */
-#define _(String) (String)
-#define N_(String) (String)
-#define P_(String) (String)
-#define textdomain(String) (String)
-#define gettext(String) (String)
-#define dgettext(Domain,String) (String)
-#define dcgettext(Domain,String,Type) (String)
-#define dngettext(Domain,String1,String2,N) ((N) == 1 ? (String1) : (String2))
-#define bindtextdomain(Domain,Directory) (Domain)
-#endif
-
-/* not really I18N-related, but also a string marker macro */
-#define I_(string) g_intern_static_string (string)
-
-#endif /* __GLIBINTL_H__ */
diff --git a/navit/support/glib/glist.c b/navit/support/glib/glist.c
deleted file mode 100644
index b607abd68..000000000
--- a/navit/support/glib/glist.c
+++ /dev/null
@@ -1,999 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * MT safe
- */
-
-#include "config.h"
-
-#include "glib.h"
-#include "galias.h"
-
-
-void g_list_push_allocator (gpointer dummy) { /* present for binary compat only */ }
-void g_list_pop_allocator (void) { /* present for binary compat only */ }
-
-#define _g_list_alloc() g_slice_new (GList)
-#define _g_list_alloc0() g_slice_new0 (GList)
-#define _g_list_free1(list) g_slice_free (GList, list)
-
-GList*
-g_list_alloc (void)
-{
- return _g_list_alloc0 ();
-}
-
-/**
- * g_list_free:
- * @list: a #GList
- *
- * Frees all of the memory used by a #GList.
- * The freed elements are returned to the slice allocator.
- *
- * <note><para>
- * If list elements contain dynamically-allocated memory,
- * they should be freed first.
- * </para></note>
- */
-void
-g_list_free (GList *list)
-{
- g_slice_free_chain (GList, list, next);
-}
-
-/**
- * g_list_free_1:
- * @list: a #GList element
- *
- * Frees one #GList element.
- * It is usually used after g_list_remove_link().
- */
-void
-g_list_free_1 (GList *list)
-{
- _g_list_free1 (list);
-}
-
-/**
- * g_list_append:
- * @list: a pointer to a #GList
- * @data: the data for the new element
- *
- * Adds a new element on to the end of the list.
- *
- * <note><para>
- * The return value is the new start of the list, which
- * may have changed, so make sure you store the new value.
- * </para></note>
- *
- * <note><para>
- * Note that g_list_append() has to traverse the entire list
- * to find the end, which is inefficient when adding multiple
- * elements. A common idiom to avoid the inefficiency is to prepend
- * the elements and reverse the list when all elements have been added.
- * </para></note>
- *
- * |[
- * /&ast; Notice that these are initialized to the empty list. &ast;/
- * GList *list = NULL, *number_list = NULL;
- *
- * /&ast; This is a list of strings. &ast;/
- * list = g_list_append (list, "first");
- * list = g_list_append (list, "second");
- *
- * /&ast; This is a list of integers. &ast;/
- * number_list = g_list_append (number_list, GINT_TO_POINTER (27));
- * number_list = g_list_append (number_list, GINT_TO_POINTER (14));
- * ]|
- *
- * Returns: the new start of the #GList
- */
-GList*
-g_list_append (GList *list,
- gpointer data)
-{
- GList *new_list;
- GList *last;
-
- new_list = _g_list_alloc ();
- new_list->data = data;
- new_list->next = NULL;
-
- if (list)
- {
- last = g_list_last (list);
- /* g_assert (last != NULL); */
- last->next = new_list;
- new_list->prev = last;
-
- return list;
- }
- else
- {
- new_list->prev = NULL;
- return new_list;
- }
-}
-
-/**
- * g_list_prepend:
- * @list: a pointer to a #GList
- * @data: the data for the new element
- *
- * Adds a new element on to the start of the list.
- *
- * <note><para>
- * The return value is the new start of the list, which
- * may have changed, so make sure you store the new value.
- * </para></note>
- *
- * |[
- * /&ast; Notice that it is initialized to the empty list. &ast;/
- * GList *list = NULL;
- * list = g_list_prepend (list, "last");
- * list = g_list_prepend (list, "first");
- * ]|
- *
- * Returns: the new start of the #GList
- */
-GList*
-g_list_prepend (GList *list,
- gpointer data)
-{
- GList *new_list;
-
- new_list = _g_list_alloc ();
- new_list->data = data;
- new_list->next = list;
-
- if (list)
- {
- new_list->prev = list->prev;
- if (list->prev)
- list->prev->next = new_list;
- list->prev = new_list;
- }
- else
- new_list->prev = NULL;
-
- return new_list;
-}
-
-/**
- * g_list_insert:
- * @list: a pointer to a #GList
- * @data: the data for the new element
- * @position: the position to insert the element. If this is
- * negative, or is larger than the number of elements in the
- * list, the new element is added on to the end of the list.
- *
- * Inserts a new element into the list at the given position.
- *
- * Returns: the new start of the #GList
- */
-GList*
-g_list_insert (GList *list,
- gpointer data,
- gint position)
-{
- GList *new_list;
- GList *tmp_list;
-
- if (position < 0)
- return g_list_append (list, data);
- else if (position == 0)
- return g_list_prepend (list, data);
-
- tmp_list = g_list_nth (list, position);
- if (!tmp_list)
- return g_list_append (list, data);
-
- new_list = _g_list_alloc ();
- new_list->data = data;
- new_list->prev = tmp_list->prev;
- if (tmp_list->prev)
- tmp_list->prev->next = new_list;
- new_list->next = tmp_list;
- tmp_list->prev = new_list;
-
- if (tmp_list == list)
- return new_list;
- else
- return list;
-}
-
-/**
- * g_list_insert_before:
- * @list: a pointer to a #GList
- * @sibling: the list element before which the new element
- * is inserted or %NULL to insert at the end of the list
- * @data: the data for the new element
- *
- * Inserts a new element into the list before the given position.
- *
- * Returns: the new start of the #GList
- */
-GList*
-g_list_insert_before (GList *list,
- GList *sibling,
- gpointer data)
-{
- if (!list)
- {
- list = g_list_alloc ();
- list->data = data;
- g_return_val_if_fail (sibling == NULL, list);
- return list;
- }
- else if (sibling)
- {
- GList *node;
-
- node = _g_list_alloc ();
- node->data = data;
- node->prev = sibling->prev;
- node->next = sibling;
- sibling->prev = node;
- if (node->prev)
- {
- node->prev->next = node;
- return list;
- }
- else
- {
- g_return_val_if_fail (sibling == list, node);
- return node;
- }
- }
- else
- {
- GList *last;
-
- last = list;
- while (last->next)
- last = last->next;
-
- last->next = _g_list_alloc ();
- last->next->data = data;
- last->next->prev = last;
- last->next->next = NULL;
-
- return list;
- }
-}
-
-/**
- * g_list_concat:
- * @list1: a #GList
- * @list2: the #GList to add to the end of the first #GList
- *
- * Adds the second #GList onto the end of the first #GList.
- * Note that the elements of the second #GList are not copied.
- * They are used directly.
- *
- * Returns: the start of the new #GList
- */
-GList *
-g_list_concat (GList *list1, GList *list2)
-{
- GList *tmp_list;
-
- if (list2)
- {
- tmp_list = g_list_last (list1);
- if (tmp_list)
- tmp_list->next = list2;
- else
- list1 = list2;
- list2->prev = tmp_list;
- }
-
- return list1;
-}
-
-/**
- * g_list_remove:
- * @list: a #GList
- * @data: the data of the element to remove
- *
- * Removes an element from a #GList.
- * If two elements contain the same data, only the first is removed.
- * If none of the elements contain the data, the #GList is unchanged.
- *
- * Returns: the new start of the #GList
- */
-GList*
-g_list_remove (GList *list,
- gconstpointer data)
-{
- GList *tmp;
-
- tmp = list;
- while (tmp)
- {
- if (tmp->data != data)
- tmp = tmp->next;
- else
- {
- if (tmp->prev)
- tmp->prev->next = tmp->next;
- if (tmp->next)
- tmp->next->prev = tmp->prev;
-
- if (list == tmp)
- list = list->next;
-
- _g_list_free1 (tmp);
-
- break;
- }
- }
- return list;
-}
-
-/**
- * g_list_remove_all:
- * @list: a #GList
- * @data: data to remove
- *
- * Removes all list nodes with data equal to @data.
- * Returns the new head of the list. Contrast with
- * g_list_remove() which removes only the first node
- * matching the given data.
- *
- * Returns: new head of @list
- */
-GList*
-g_list_remove_all (GList *list,
- gconstpointer data)
-{
- GList *tmp = list;
-
- while (tmp)
- {
- if (tmp->data != data)
- tmp = tmp->next;
- else
- {
- GList *next = tmp->next;
-
- if (tmp->prev)
- tmp->prev->next = next;
- else
- list = next;
- if (next)
- next->prev = tmp->prev;
-
- _g_list_free1 (tmp);
- tmp = next;
- }
- }
- return list;
-}
-
-static inline GList*
-_g_list_remove_link (GList *list,
- GList *link)
-{
- if (link)
- {
- if (link->prev)
- link->prev->next = link->next;
- if (link->next)
- link->next->prev = link->prev;
-
- if (link == list)
- list = list->next;
-
- link->next = NULL;
- link->prev = NULL;
- }
-
- return list;
-}
-
-/**
- * g_list_remove_link:
- * @list: a #GList
- * @llink: an element in the #GList
- *
- * Removes an element from a #GList, without freeing the element.
- * The removed element's prev and next links are set to %NULL, so
- * that it becomes a self-contained list with one element.
- *
- * Returns: the new start of the #GList, without the element
- */
-GList*
-g_list_remove_link (GList *list,
- GList *llink)
-{
- return _g_list_remove_link (list, llink);
-}
-
-/**
- * g_list_delete_link:
- * @list: a #GList
- * @link_: node to delete from @list
- *
- * Removes the node link_ from the list and frees it.
- * Compare this to g_list_remove_link() which removes the node
- * without freeing it.
- *
- * Returns: the new head of @list
- */
-GList*
-g_list_delete_link (GList *list,
- GList *link_)
-{
- list = _g_list_remove_link (list, link_);
- _g_list_free1 (link_);
-
- return list;
-}
-
-/**
- * g_list_copy:
- * @list: a #GList
- *
- * Copies a #GList.
- *
- * <note><para>
- * Note that this is a "shallow" copy. If the list elements
- * consist of pointers to data, the pointers are copied but
- * the actual data is not.
- * </para></note>
- *
- * Returns: a copy of @list
- */
-GList*
-g_list_copy (GList *list)
-{
- GList *new_list = NULL;
-
- if (list)
- {
- GList *last;
-
- new_list = _g_list_alloc ();
- new_list->data = list->data;
- new_list->prev = NULL;
- last = new_list;
- list = list->next;
- while (list)
- {
- last->next = _g_list_alloc ();
- last->next->prev = last;
- last = last->next;
- last->data = list->data;
- list = list->next;
- }
- last->next = NULL;
- }
-
- return new_list;
-}
-
-/**
- * g_list_reverse:
- * @list: a #GList
- *
- * Reverses a #GList.
- * It simply switches the next and prev pointers of each element.
- *
- * Returns: the start of the reversed #GList
- */
-GList*
-g_list_reverse (GList *list)
-{
- GList *last;
-
- last = NULL;
- while (list)
- {
- last = list;
- list = last->next;
- last->next = last->prev;
- last->prev = list;
- }
-
- return last;
-}
-
-/**
- * g_list_nth:
- * @list: a #GList
- * @n: the position of the element, counting from 0
- *
- * Gets the element at the given position in a #GList.
- *
- * Returns: the element, or %NULL if the position is off
- * the end of the #GList
- */
-GList*
-g_list_nth (GList *list,
- guint n)
-{
- while ((n-- > 0) && list)
- list = list->next;
-
- return list;
-}
-
-/**
- * g_list_nth_prev:
- * @list: a #GList
- * @n: the position of the element, counting from 0
- *
- * Gets the element @n places before @list.
- *
- * Returns: the element, or %NULL if the position is
- * off the end of the #GList
- */
-GList*
-g_list_nth_prev (GList *list,
- guint n)
-{
- while ((n-- > 0) && list)
- list = list->prev;
-
- return list;
-}
-
-/**
- * g_list_nth_data:
- * @list: a #GList
- * @n: the position of the element
- *
- * Gets the data of the element at the given position.
- *
- * Returns: the element's data, or %NULL if the position
- * is off the end of the #GList
- */
-gpointer
-g_list_nth_data (GList *list,
- guint n)
-{
- while ((n-- > 0) && list)
- list = list->next;
-
- return list ? list->data : NULL;
-}
-
-/**
- * g_list_find:
- * @list: a #GList
- * @data: the element data to find
- *
- * Finds the element in a #GList which
- * contains the given data.
- *
- * Returns: the found #GList element,
- * or %NULL if it is not found
- */
-GList*
-g_list_find (GList *list,
- gconstpointer data)
-{
- while (list)
- {
- if (list->data == data)
- break;
- list = list->next;
- }
-
- return list;
-}
-
-/**
- * g_list_find_custom:
- * @list: a #GList
- * @data: user data passed to the function
- * @func: the function to call for each element.
- * It should return 0 when the desired element is found
- *
- * Finds an element in a #GList, using a supplied function to
- * find the desired element. It iterates over the list, calling
- * the given function which should return 0 when the desired
- * element is found. The function takes two #gconstpointer arguments,
- * the #GList element's data as the first argument and the
- * given user data.
- *
- * Returns: the found #GList element, or %NULL if it is not found
- */
-GList*
-g_list_find_custom (GList *list,
- gconstpointer data,
- GCompareFunc func)
-{
- g_return_val_if_fail (func != NULL, list);
-
- while (list)
- {
- if (! func (list->data, data))
- return list;
- list = list->next;
- }
-
- return NULL;
-}
-
-
-/**
- * g_list_position:
- * @list: a #GList
- * @llink: an element in the #GList
- *
- * Gets the position of the given element
- * in the #GList (starting from 0).
- *
- * Returns: the position of the element in the #GList,
- * or -1 if the element is not found
- */
-gint
-g_list_position (GList *list,
- GList *llink)
-{
- gint i;
-
- i = 0;
- while (list)
- {
- if (list == llink)
- return i;
- i++;
- list = list->next;
- }
-
- return -1;
-}
-
-/**
- * g_list_index:
- * @list: a #GList
- * @data: the data to find
- *
- * Gets the position of the element containing
- * the given data (starting from 0).
- *
- * Returns: the index of the element containing the data,
- * or -1 if the data is not found
- */
-gint
-g_list_index (GList *list,
- gconstpointer data)
-{
- gint i;
-
- i = 0;
- while (list)
- {
- if (list->data == data)
- return i;
- i++;
- list = list->next;
- }
-
- return -1;
-}
-
-/**
- * g_list_last:
- * @list: a #GList
- *
- * Gets the last element in a #GList.
- *
- * Returns: the last element in the #GList,
- * or %NULL if the #GList has no elements
- */
-GList*
-g_list_last (GList *list)
-{
- if (list)
- {
- while (list->next)
- list = list->next;
- }
-
- return list;
-}
-
-/**
- * g_list_first:
- * @list: a #GList
- *
- * Gets the first element in a #GList.
- *
- * Returns: the first element in the #GList,
- * or %NULL if the #GList has no elements
- */
-GList*
-g_list_first (GList *list)
-{
- if (list)
- {
- while (list->prev)
- list = list->prev;
- }
-
- return list;
-}
-
-/**
- * g_list_length:
- * @list: a #GList
- *
- * Gets the number of elements in a #GList.
- *
- * <note><para>
- * This function iterates over the whole list to
- * count its elements.
- * </para></note>
- *
- * Returns: the number of elements in the #GList
- */
-guint
-g_list_length (GList *list)
-{
- guint length;
-
- length = 0;
- while (list)
- {
- length++;
- list = list->next;
- }
-
- return length;
-}
-
-/**
- * g_list_foreach:
- * @list: a #GList
- * @func: the function to call with each element's data
- * @user_data: user data to pass to the function
- *
- * Calls a function for each element of a #GList.
- */
-void
-g_list_foreach (GList *list,
- GFunc func,
- gpointer user_data)
-{
- while (list)
- {
- GList *next = list->next;
- (*func) (list->data, user_data);
- list = next;
- }
-}
-
-static GList*
-g_list_insert_sorted_real (GList *list,
- gpointer data,
- GFunc func,
- gpointer user_data)
-{
- GList *tmp_list = list;
- GList *new_list;
- gint cmp;
-
- g_return_val_if_fail (func != NULL, list);
-
- if (!list)
- {
- new_list = _g_list_alloc0 ();
- new_list->data = data;
- return new_list;
- }
-
- cmp = ((GCompareDataFunc) func) (data, tmp_list->data, user_data);
-
- while ((tmp_list->next) && (cmp > 0))
- {
- tmp_list = tmp_list->next;
-
- cmp = ((GCompareDataFunc) func) (data, tmp_list->data, user_data);
- }
-
- new_list = _g_list_alloc0 ();
- new_list->data = data;
-
- if ((!tmp_list->next) && (cmp > 0))
- {
- tmp_list->next = new_list;
- new_list->prev = tmp_list;
- return list;
- }
-
- if (tmp_list->prev)
- {
- tmp_list->prev->next = new_list;
- new_list->prev = tmp_list->prev;
- }
- new_list->next = tmp_list;
- tmp_list->prev = new_list;
-
- if (tmp_list == list)
- return new_list;
- else
- return list;
-}
-
-/**
- * g_list_insert_sorted:
- * @list: a pointer to a #GList
- * @data: the data for the new element
- * @func: the function to compare elements in the list. It should
- * return a number > 0 if the first parameter comes after the
- * second parameter in the sort order.
- *
- * Inserts a new element into the list, using the given comparison
- * function to determine its position.
- *
- * Returns: the new start of the #GList
- */
-GList*
-g_list_insert_sorted (GList *list,
- gpointer data,
- GCompareFunc func)
-{
- return g_list_insert_sorted_real (list, data, (GFunc) func, NULL);
-}
-
-/**
- * g_list_insert_sorted_with_data:
- * @list: a pointer to a #GList
- * @data: the data for the new element
- * @func: the function to compare elements in the list.
- * It should return a number > 0 if the first parameter
- * comes after the second parameter in the sort order.
- * @user_data: user data to pass to comparison function.
- *
- * Inserts a new element into the list, using the given comparison
- * function to determine its position.
- *
- * Returns: the new start of the #GList
- *
- * Since: 2.10
- */
-GList*
-g_list_insert_sorted_with_data (GList *list,
- gpointer data,
- GCompareDataFunc func,
- gpointer user_data)
-{
- return g_list_insert_sorted_real (list, data, (GFunc) func, user_data);
-}
-
-static GList *
-g_list_sort_merge (GList *l1,
- GList *l2,
- GFunc compare_func,
- gpointer user_data)
-{
- GList list, *l, *lprev;
- gint cmp;
-
- l = &list;
- lprev = NULL;
-
- while (l1 && l2)
- {
- cmp = ((GCompareDataFunc) compare_func) (l1->data, l2->data, user_data);
-
- if (cmp <= 0)
- {
- l->next = l1;
- l1 = l1->next;
- }
- else
- {
- l->next = l2;
- l2 = l2->next;
- }
- l = l->next;
- l->prev = lprev;
- lprev = l;
- }
- l->next = l1 ? l1 : l2;
- l->next->prev = l;
-
- return list.next;
-}
-
-static GList*
-g_list_sort_real (GList *list,
- GFunc compare_func,
- gpointer user_data)
-{
- GList *l1, *l2;
-
- if (!list)
- return NULL;
- if (!list->next)
- return list;
-
- l1 = list;
- l2 = list->next;
-
- while ((l2 = l2->next) != NULL)
- {
- if ((l2 = l2->next) == NULL)
- break;
- l1 = l1->next;
- }
- l2 = l1->next;
- l1->next = NULL;
-
- return g_list_sort_merge (g_list_sort_real (list, compare_func, user_data),
- g_list_sort_real (l2, compare_func, user_data),
- compare_func,
- user_data);
-}
-
-/**
- * g_list_sort:
- * @list: a #GList
- * @compare_func: the comparison function used to sort the #GList.
- * This function is passed the data from 2 elements of the #GList
- * and should return 0 if they are equal, a negative value if the
- * first element comes before the second, or a positive value if
- * the first element comes after the second.
- *
- * Sorts a #GList using the given comparison function.
- *
- * Returns: the start of the sorted #GList
- */
-GList *
-g_list_sort (GList *list,
- GCompareFunc compare_func)
-{
- return g_list_sort_real (list, (GFunc) compare_func, NULL);
-
-}
-
-/**
- * g_list_sort_with_data:
- * @list: a #GList
- * @compare_func: comparison function
- * @user_data: user data to pass to comparison function
- *
- * Like g_list_sort(), but the comparison function accepts
- * a user data argument.
- *
- * Returns: the new head of @list
- */
-GList *
-g_list_sort_with_data (GList *list,
- GCompareDataFunc compare_func,
- gpointer user_data)
-{
- return g_list_sort_real (list, (GFunc) compare_func, user_data);
-}
-
-#define __G_LIST_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/glist.h b/navit/support/glib/glist.h
deleted file mode 100644
index e74ed96f1..000000000
--- a/navit/support/glib/glist.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_LIST_H__
-#define __G_LIST_H__
-
-#include <glib/gmem.h>
-
-G_BEGIN_DECLS
-
-typedef struct _GList GList;
-
-struct _GList
-{
- gpointer data;
- GList *next;
- GList *prev;
-};
-
-/* Doubly linked lists
- */
-GList* g_list_alloc (void) G_GNUC_WARN_UNUSED_RESULT;
-void g_list_free (GList *list);
-void g_list_free_1 (GList *list);
-#define g_list_free1 g_list_free_1
-GList* g_list_append (GList *list,
- gpointer data) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_prepend (GList *list,
- gpointer data) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_insert (GList *list,
- gpointer data,
- gint position) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_insert_sorted (GList *list,
- gpointer data,
- GCompareFunc func) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_insert_sorted_with_data (GList *list,
- gpointer data,
- GCompareDataFunc func,
- gpointer user_data) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_insert_before (GList *list,
- GList *sibling,
- gpointer data) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_concat (GList *list1,
- GList *list2) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_remove (GList *list,
- gconstpointer data) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_remove_all (GList *list,
- gconstpointer data) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_remove_link (GList *list,
- GList *llink) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_delete_link (GList *list,
- GList *link_) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_reverse (GList *list) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_copy (GList *list) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_nth (GList *list,
- guint n);
-GList* g_list_nth_prev (GList *list,
- guint n);
-GList* g_list_find (GList *list,
- gconstpointer data);
-GList* g_list_find_custom (GList *list,
- gconstpointer data,
- GCompareFunc func);
-gint g_list_position (GList *list,
- GList *llink);
-gint g_list_index (GList *list,
- gconstpointer data);
-GList* g_list_last (GList *list);
-GList* g_list_first (GList *list);
-guint g_list_length (GList *list);
-void g_list_foreach (GList *list,
- GFunc func,
- gpointer user_data);
-GList* g_list_sort (GList *list,
- GCompareFunc compare_func) G_GNUC_WARN_UNUSED_RESULT;
-GList* g_list_sort_with_data (GList *list,
- GCompareDataFunc compare_func,
- gpointer user_data) G_GNUC_WARN_UNUSED_RESULT;
-gpointer g_list_nth_data (GList *list,
- guint n);
-
-
-#define g_list_previous(list) ((list) ? (((GList *)(list))->prev) : NULL)
-#define g_list_next(list) ((list) ? (((GList *)(list))->next) : NULL)
-
-#ifndef G_DISABLE_DEPRECATED
-void g_list_push_allocator (gpointer allocator);
-void g_list_pop_allocator (void);
-#endif
-
-G_END_DECLS
-
-#endif /* __G_LIST_H__ */
diff --git a/navit/support/glib/gmacros.h b/navit/support/glib/gmacros.h
deleted file mode 100644
index f87e932ce..000000000
--- a/navit/support/glib/gmacros.h
+++ /dev/null
@@ -1,273 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/* This file must not include any other glib header file and must thus
- * not refer to variables from glibconfig.h
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_MACROS_H__
-#define __G_MACROS_H__
-
-/* We include stddef.h to get the system's definition of NULL
- */
-#include <stddef.h>
-
-/* Here we provide G_GNUC_EXTENSION as an alias for __extension__,
- * where this is valid. This allows for warningless compilation of
- * "long long" types even in the presence of '-ansi -pedantic'.
- */
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
-# define G_GNUC_EXTENSION __extension__
-#else
-# define G_GNUC_EXTENSION
-#endif
-
-/* Provide macros to feature the GCC function attribute.
- */
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-#define G_GNUC_PURE \
- __attribute__((__pure__))
-#define G_GNUC_MALLOC \
- __attribute__((__malloc__))
-#else
-#define G_GNUC_PURE
-#define G_GNUC_MALLOC
-#endif
-
-#if __GNUC__ >= 4
-#define G_GNUC_NULL_TERMINATED __attribute__((__sentinel__))
-#else
-#define G_GNUC_NULL_TERMINATED
-#endif
-
-#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
-#define G_GNUC_ALLOC_SIZE(x) __attribute__((__alloc_size__(x)))
-#define G_GNUC_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y)))
-#else
-#define G_GNUC_ALLOC_SIZE(x)
-#define G_GNUC_ALLOC_SIZE2(x,y)
-#endif
-
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
-#define G_GNUC_PRINTF( format_idx, arg_idx ) \
- __attribute__((__format__ (__printf__, format_idx, arg_idx)))
-#define G_GNUC_SCANF( format_idx, arg_idx ) \
- __attribute__((__format__ (__scanf__, format_idx, arg_idx)))
-#define G_GNUC_FORMAT( arg_idx ) \
- __attribute__((__format_arg__ (arg_idx)))
-#define G_GNUC_NORETURN \
- __attribute__((__noreturn__))
-#define G_GNUC_CONST \
- __attribute__((__const__))
-#define G_GNUC_UNUSED \
- __attribute__((__unused__))
-#define G_GNUC_NO_INSTRUMENT \
- __attribute__((__no_instrument_function__))
-#else /* !__GNUC__ */
-#define G_GNUC_PRINTF( format_idx, arg_idx )
-#define G_GNUC_SCANF( format_idx, arg_idx )
-#define G_GNUC_FORMAT( arg_idx )
-#define G_GNUC_NORETURN
-#define G_GNUC_CONST
-#define G_GNUC_UNUSED
-#define G_GNUC_NO_INSTRUMENT
-#endif /* !__GNUC__ */
-
-#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
-#define G_GNUC_DEPRECATED \
- __attribute__((__deprecated__))
-#else
-#define G_GNUC_DEPRECATED
-#endif /* __GNUC__ */
-
-#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
-# define G_GNUC_MAY_ALIAS __attribute__((may_alias))
-#else
-# define G_GNUC_MAY_ALIAS
-#endif
-
-#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-#define G_GNUC_WARN_UNUSED_RESULT \
- __attribute__((warn_unused_result))
-#else
-#define G_GNUC_WARN_UNUSED_RESULT
-#endif /* __GNUC__ */
-
-#ifndef G_DISABLE_DEPRECATED
-/* Wrap the gcc __PRETTY_FUNCTION__ and __FUNCTION__ variables with
- * macros, so we can refer to them as strings unconditionally.
- * usage not-recommended since gcc-3.0
- */
-#if defined (__GNUC__) && (__GNUC__ < 3)
-#define G_GNUC_FUNCTION __FUNCTION__
-#define G_GNUC_PRETTY_FUNCTION __PRETTY_FUNCTION__
-#else /* !__GNUC__ */
-#define G_GNUC_FUNCTION ""
-#define G_GNUC_PRETTY_FUNCTION ""
-#endif /* !__GNUC__ */
-#endif /* !G_DISABLE_DEPRECATED */
-
-#define G_STRINGIFY(macro_or_string) G_STRINGIFY_ARG (macro_or_string)
-#define G_STRINGIFY_ARG(contents) #contents
-
-/* Provide a string identifying the current code position */
-#if defined(__GNUC__) && (__GNUC__ < 3) && !defined(__cplusplus)
-# define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) ":" __PRETTY_FUNCTION__ "()"
-#else
-# define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
-#endif
-
-/* Provide a string identifying the current function, non-concatenatable */
-#if defined (__GNUC__)
-# define G_STRFUNC ((const char*) (__PRETTY_FUNCTION__))
-#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 19901L
-# define G_STRFUNC ((const char*) (__func__))
-#else
-# define G_STRFUNC ((const char*) ("???"))
-#endif
-
-/* Guard C code in headers, while including them from C++ */
-#ifdef __cplusplus
-# define G_BEGIN_DECLS extern "C" {
-# define G_END_DECLS }
-#else
-# define G_BEGIN_DECLS
-# define G_END_DECLS
-#endif
-
-/* Provide definitions for some commonly used macros.
- * Some of them are only provided if they haven't already
- * been defined. It is assumed that if they are already
- * defined then the current definition is correct.
- */
-#ifndef NULL
-# ifdef __cplusplus
-# define NULL (0L)
-# else /* !__cplusplus */
-# define NULL ((void*) 0)
-# endif /* !__cplusplus */
-#endif
-
-#ifndef FALSE
-#define FALSE (0)
-#endif
-
-#ifndef TRUE
-#define TRUE (!FALSE)
-#endif
-
-#undef MAX
-#define MAX(a, b) (((a) > (b)) ? (a) : (b))
-
-#undef MIN
-#define MIN(a, b) (((a) < (b)) ? (a) : (b))
-
-#undef ABS
-#define ABS(a) (((a) < 0) ? -(a) : (a))
-
-#undef CLAMP
-#define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x)))
-
-/* Count the number of elements in an array. The array must be defined
- * as such; using this with a dynamically allocated array will give
- * incorrect results.
- */
-#define G_N_ELEMENTS(arr) (sizeof (arr) / sizeof ((arr)[0]))
-
-/* Macros by analogy to GINT_TO_POINTER, GPOINTER_TO_INT
- */
-#define GPOINTER_TO_SIZE(p) ((gsize) (p))
-#define GSIZE_TO_POINTER(s) ((gpointer) (gsize) (s))
-
-/* Provide convenience macros for handling structure
- * fields through their offsets.
- */
-
-#if defined(__GNUC__) && __GNUC__ >= 4
-# define G_STRUCT_OFFSET(struct_type, member) \
- ((glong) __builtin_offsetof (struct_type, member))
-#else
-# define G_STRUCT_OFFSET(struct_type, member) \
- ((glong) ((guint8*) &((struct_type*) 0)->member))
-#endif
-
-#define G_STRUCT_MEMBER_P(struct_p, struct_offset) \
- ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
-#define G_STRUCT_MEMBER(member_type, struct_p, struct_offset) \
- (*(member_type*) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))
-
-/* Provide simple macro statement wrappers:
- * G_STMT_START { statements; } G_STMT_END;
- * This can be used as a single statement, like:
- * if (x) G_STMT_START { ... } G_STMT_END; else ...
- * This intentionally does not use compiler extensions like GCC's '({...})' to
- * avoid portability issue or side effects when compiled with different compilers.
- */
-#if !(defined (G_STMT_START) && defined (G_STMT_END))
-# define G_STMT_START do
-# define G_STMT_END while (0)
-#endif
-
-/* Allow the app programmer to select whether or not return values
- * (usually char*) are const or not. Don't try using this feature for
- * functions with C++ linkage.
- */
-#ifdef G_DISABLE_CONST_RETURNS
-#define G_CONST_RETURN
-#else
-#define G_CONST_RETURN const
-#endif
-
-/*
- * The G_LIKELY and G_UNLIKELY macros let the programmer give hints to
- * the compiler about the expected result of an expression. Some compilers
- * can use this information for optimizations.
- *
- * The _G_BOOLEAN_EXPR macro is intended to trigger a gcc warning when
- * putting assignments in g_return_if_fail ().
- */
-#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__)
-#define _G_BOOLEAN_EXPR(expr) \
- __extension__ ({ \
- int _g_boolean_var_; \
- if (expr) \
- _g_boolean_var_ = 1; \
- else \
- _g_boolean_var_ = 0; \
- _g_boolean_var_; \
-})
-#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
-#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 0))
-#else
-#define G_LIKELY(expr) (expr)
-#define G_UNLIKELY(expr) (expr)
-#endif
-
-#endif /* __G_MACROS_H__ */
diff --git a/navit/support/glib/gmem.c b/navit/support/glib/gmem.c
deleted file mode 100644
index 2c6a00998..000000000
--- a/navit/support/glib/gmem.c
+++ /dev/null
@@ -1,742 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * MT safe
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <signal.h>
-
-#include "glib.h"
-#include "gthreadprivate.h"
-#include "galias.h"
-
-#define MEM_PROFILE_TABLE_SIZE 4096
-
-
-/* notes on macros:
- * having G_DISABLE_CHECKS defined disables use of glib_mem_profiler_table and
- * g_mem_profile().
- * REALLOC_0_WORKS is defined if g_realloc (NULL, x) works.
- * SANE_MALLOC_PROTOS is defined if the systems malloc() and friends functions
- * match the corresponding GLib prototypes, keep configure.in and gmem.h in sync here.
- * g_mem_gc_friendly is TRUE, freed memory should be 0-wiped.
- */
-
-/* --- prototypes --- */
-static gboolean g_mem_initialized = FALSE;
-static void g_mem_init_nomessage (void);
-
-
-/* --- malloc wrappers --- */
-#ifndef REALLOC_0_WORKS
-static gpointer
-standard_realloc (gpointer mem,
- gsize n_bytes)
-{
- if (!mem)
- return malloc (n_bytes);
- else
- return realloc (mem, n_bytes);
-}
-#endif /* !REALLOC_0_WORKS */
-
-#ifdef SANE_MALLOC_PROTOS
-# define standard_malloc malloc
-# ifdef REALLOC_0_WORKS
-# define standard_realloc realloc
-# endif /* REALLOC_0_WORKS */
-# define standard_free free
-# define standard_calloc calloc
-# define standard_try_malloc malloc
-# define standard_try_realloc realloc
-#else /* !SANE_MALLOC_PROTOS */
-static gpointer
-standard_malloc (gsize n_bytes)
-{
- return malloc (n_bytes);
-}
-# ifdef REALLOC_0_WORKS
-static gpointer
-standard_realloc (gpointer mem,
- gsize n_bytes)
-{
- return realloc (mem, n_bytes);
-}
-# endif /* REALLOC_0_WORKS */
-static void
-standard_free (gpointer mem)
-{
- free (mem);
-}
-static gpointer
-standard_calloc (gsize n_blocks,
- gsize n_bytes)
-{
- return calloc (n_blocks, n_bytes);
-}
-#define standard_try_malloc standard_malloc
-#define standard_try_realloc standard_realloc
-#endif /* !SANE_MALLOC_PROTOS */
-
-
-/* --- variables --- */
-static GMemVTable glib_mem_vtable = {
- standard_malloc,
- standard_realloc,
- standard_free,
- standard_calloc,
- standard_try_malloc,
- standard_try_realloc,
-};
-
-
-/* --- functions --- */
-gpointer
-g_malloc (gsize n_bytes)
-{
- if (G_UNLIKELY (!g_mem_initialized))
- g_mem_init_nomessage();
- if (G_LIKELY (n_bytes))
- {
- gpointer mem;
-
- mem = glib_mem_vtable.vmalloc (n_bytes);
- if (mem)
- return mem;
-
-#if NOT_NEEDED_FOR_NAVIT
- g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes",
- G_STRLOC, n_bytes);
-#endif /* NOT_NEEDED_FOR_NAVIT */
- }
-
- return NULL;
-}
-
-gpointer
-g_malloc0 (gsize n_bytes)
-{
- if (G_UNLIKELY (!g_mem_initialized))
- g_mem_init_nomessage();
- if (G_LIKELY (n_bytes))
- {
- gpointer mem;
-
- mem = glib_mem_vtable.vcalloc (1, n_bytes);
- if (mem)
- return mem;
-
-#if NOT_NEEDED_FOR_NAVIT
- g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes",
- G_STRLOC, n_bytes);
-#endif /* NOT_NEEDED_FOR_NAVIT */
- }
-
- return NULL;
-}
-
-gpointer
-g_realloc (gpointer mem,
- gsize n_bytes)
-{
- if (G_UNLIKELY (!g_mem_initialized))
- g_mem_init_nomessage();
- if (G_LIKELY (n_bytes))
- {
- mem = glib_mem_vtable.vrealloc (mem, n_bytes);
- if (mem)
- return mem;
-
-#if NOT_NEEDED_FOR_NAVIT
- g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes",
- G_STRLOC, n_bytes);
-#endif /* NOT_NEEDED_FOR_NAVIT */
- }
-
- if (mem)
- glib_mem_vtable.vfree (mem);
-
- return NULL;
-}
-
-void
-g_free (gpointer mem)
-{
- if (G_UNLIKELY (!g_mem_initialized))
- g_mem_init_nomessage();
- if (G_LIKELY (mem))
- glib_mem_vtable.vfree (mem);
-}
-
-gpointer
-g_try_malloc (gsize n_bytes)
-{
- if (G_UNLIKELY (!g_mem_initialized))
- g_mem_init_nomessage();
- if (G_LIKELY (n_bytes))
- return glib_mem_vtable.vtry_malloc (n_bytes);
- else
- return NULL;
-}
-
-gpointer
-g_try_malloc0 (gsize n_bytes)
-{
- gpointer mem;
-
- mem = g_try_malloc (n_bytes);
-
- if (mem)
- memset (mem, 0, n_bytes);
-
- return mem;
-}
-
-gpointer
-g_try_realloc (gpointer mem,
- gsize n_bytes)
-{
- if (G_UNLIKELY (!g_mem_initialized))
- g_mem_init_nomessage();
- if (G_LIKELY (n_bytes))
- return glib_mem_vtable.vtry_realloc (mem, n_bytes);
-
- if (mem)
- glib_mem_vtable.vfree (mem);
-
- return NULL;
-}
-
-static gpointer
-fallback_calloc (gsize n_blocks,
- gsize n_block_bytes)
-{
- gsize l = n_blocks * n_block_bytes;
- gpointer mem = glib_mem_vtable.vmalloc (l);
-
- if (mem)
- memset (mem, 0, l);
-
- return mem;
-}
-
-static gboolean vtable_set = FALSE;
-
-/**
- * g_mem_is_system_malloc
- *
- * Checks whether the allocator used by g_malloc() is the system's
- * malloc implementation. If it returns %TRUE memory allocated with
- * malloc() can be used interchangeable with memory allocated using g_malloc().
- * This function is useful for avoiding an extra copy of allocated memory returned
- * by a non-GLib-based API.
- *
- * A different allocator can be set using g_mem_set_vtable().
- *
- * Return value: if %TRUE, malloc() and g_malloc() can be mixed.
- **/
-gboolean
-g_mem_is_system_malloc (void)
-{
- return !vtable_set;
-}
-
-void
-g_mem_set_vtable (GMemVTable *vtable)
-{
- if (!vtable_set)
- {
- if (vtable->vmalloc && vtable->vrealloc && vtable->vfree)
- {
- glib_mem_vtable.vmalloc = vtable->vmalloc;
- glib_mem_vtable.vrealloc = vtable->vrealloc;
- glib_mem_vtable.vfree = vtable->vfree;
- glib_mem_vtable.vcalloc = vtable->vcalloc ? vtable->vcalloc : fallback_calloc;
- glib_mem_vtable.vtry_malloc = vtable->vtry_malloc ? vtable->vtry_malloc : glib_mem_vtable.vmalloc;
- glib_mem_vtable.vtry_realloc = vtable->vtry_realloc ? vtable->vtry_realloc : glib_mem_vtable.vrealloc;
- vtable_set = TRUE;
- }
-#if NOT_NEEDED_FOR_NAVIT
- else
- g_warning (G_STRLOC ": memory allocation vtable lacks one of malloc(), realloc() or free()");
-#endif /* NOT_NEEDED_FOR_NAVIT */
- }
-#if NOT_NEEDED_FOR_NAVIT
- else
- g_warning (G_STRLOC ": memory allocation vtable can only be set once at startup");
-#endif /* NOT_NEEDED_FOR_NAVIT */
-}
-
-
-/* --- memory profiling and checking --- */
-#ifdef G_DISABLE_CHECKS
-GMemVTable *glib_mem_profiler_table = &glib_mem_vtable;
-void
-g_mem_profile (void)
-{
-}
-#else /* !G_DISABLE_CHECKS */
-typedef enum {
- PROFILER_FREE = 0,
- PROFILER_ALLOC = 1,
- PROFILER_RELOC = 2,
- PROFILER_ZINIT = 4
-} ProfilerJob;
-static guint *profile_data = NULL;
-static gsize profile_allocs = 0;
-static gsize profile_zinit = 0;
-static gsize profile_frees = 0;
-static GMutex *gmem_profile_mutex = NULL;
-#ifdef G_ENABLE_DEBUG
-static volatile gsize g_trap_free_size = 0;
-static volatile gsize g_trap_realloc_size = 0;
-static volatile gsize g_trap_malloc_size = 0;
-#endif /* G_ENABLE_DEBUG */
-
-#define PROFILE_TABLE(f1,f2,f3) ( ( ((f3) << 2) | ((f2) << 1) | (f1) ) * (MEM_PROFILE_TABLE_SIZE + 1))
-
-static void
-profiler_log (ProfilerJob job,
- gsize n_bytes,
- gboolean success)
-{
- g_mutex_lock (gmem_profile_mutex);
- if (!profile_data)
- {
- profile_data = standard_calloc ((MEM_PROFILE_TABLE_SIZE + 1) * 8,
- sizeof (profile_data[0]));
- if (!profile_data) /* memory system kiddin' me, eh? */
- {
- g_mutex_unlock (gmem_profile_mutex);
- return;
- }
- }
-
- if (n_bytes < MEM_PROFILE_TABLE_SIZE)
- profile_data[n_bytes + PROFILE_TABLE ((job & PROFILER_ALLOC) != 0,
- (job & PROFILER_RELOC) != 0,
- success != 0)] += 1;
- else
- profile_data[MEM_PROFILE_TABLE_SIZE + PROFILE_TABLE ((job & PROFILER_ALLOC) != 0,
- (job & PROFILER_RELOC) != 0,
- success != 0)] += 1;
- if (success)
- {
- if (job & PROFILER_ALLOC)
- {
- profile_allocs += n_bytes;
- if (job & PROFILER_ZINIT)
- profile_zinit += n_bytes;
- }
- else
- profile_frees += n_bytes;
- }
- g_mutex_unlock (gmem_profile_mutex);
-}
-
-static void
-profile_print_locked (guint *local_data,
- gboolean success)
-{
- gboolean need_header = TRUE;
- guint i;
-
- for (i = 0; i <= MEM_PROFILE_TABLE_SIZE; i++)
- {
- glong t_malloc = local_data[i + PROFILE_TABLE (1, 0, success)];
- glong t_realloc = local_data[i + PROFILE_TABLE (1, 1, success)];
- glong t_free = local_data[i + PROFILE_TABLE (0, 0, success)];
- glong t_refree = local_data[i + PROFILE_TABLE (0, 1, success)];
-
- if (!t_malloc && !t_realloc && !t_free && !t_refree)
- continue;
- else if (need_header)
- {
- need_header = FALSE;
- g_print (" blocks of | allocated | freed | allocated | freed | n_bytes \n");
- g_print (" n_bytes | n_times by | n_times by | n_times by | n_times by | remaining \n");
- g_print (" | malloc() | free() | realloc() | realloc() | \n");
- g_print ("===========|============|============|============|============|===========\n");
- }
- if (i < MEM_PROFILE_TABLE_SIZE)
- g_print ("%10u | %10ld | %10ld | %10ld | %10ld |%+11ld\n",
- i, t_malloc, t_free, t_realloc, t_refree,
- (t_malloc - t_free + t_realloc - t_refree) * i);
- else if (i >= MEM_PROFILE_TABLE_SIZE)
- g_print (" >%6u | %10ld | %10ld | %10ld | %10ld | ***\n",
- i, t_malloc, t_free, t_realloc, t_refree);
- }
- if (need_header)
- g_print (" --- none ---\n");
-}
-
-void
-g_mem_profile (void)
-{
- guint local_data[(MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0])];
- gsize local_allocs;
- gsize local_zinit;
- gsize local_frees;
-
- if (G_UNLIKELY (!g_mem_initialized))
- g_mem_init_nomessage();
-
- g_mutex_lock (gmem_profile_mutex);
-
- local_allocs = profile_allocs;
- local_zinit = profile_zinit;
- local_frees = profile_frees;
-
- if (!profile_data)
- {
- g_mutex_unlock (gmem_profile_mutex);
- return;
- }
-
- memcpy (local_data, profile_data,
- (MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0]));
-
- g_mutex_unlock (gmem_profile_mutex);
-
- g_print ("GLib Memory statistics (successful operations):\n");
- profile_print_locked (local_data, TRUE);
- g_print ("GLib Memory statistics (failing operations):\n");
- profile_print_locked (local_data, FALSE);
- g_print ("Total bytes: allocated=%"G_GSIZE_FORMAT", "
- "zero-initialized=%"G_GSIZE_FORMAT" (%.2f%%), "
- "freed=%"G_GSIZE_FORMAT" (%.2f%%), "
- "remaining=%"G_GSIZE_FORMAT"\n",
- local_allocs,
- local_zinit,
- ((gdouble) local_zinit) / local_allocs * 100.0,
- local_frees,
- ((gdouble) local_frees) / local_allocs * 100.0,
- local_allocs - local_frees);
-}
-
-static gpointer
-profiler_try_malloc (gsize n_bytes)
-{
- gsize *p;
-
-#ifdef G_ENABLE_DEBUG
- if (g_trap_malloc_size == n_bytes)
- G_BREAKPOINT ();
-#endif /* G_ENABLE_DEBUG */
-
- p = standard_malloc (sizeof (gsize) * 2 + n_bytes);
-
- if (p)
- {
- p[0] = 0; /* free count */
- p[1] = n_bytes; /* length */
- profiler_log (PROFILER_ALLOC, n_bytes, TRUE);
- p += 2;
- }
- else
- profiler_log (PROFILER_ALLOC, n_bytes, FALSE);
-
- return p;
-}
-
-static gpointer
-profiler_malloc (gsize n_bytes)
-{
- gpointer mem = profiler_try_malloc (n_bytes);
-
- if (!mem)
- g_mem_profile ();
-
- return mem;
-}
-
-static gpointer
-profiler_calloc (gsize n_blocks,
- gsize n_block_bytes)
-{
- gsize l = n_blocks * n_block_bytes;
- gsize *p;
-
-#ifdef G_ENABLE_DEBUG
- if (g_trap_malloc_size == l)
- G_BREAKPOINT ();
-#endif /* G_ENABLE_DEBUG */
-
- p = standard_calloc (1, sizeof (gsize) * 2 + l);
-
- if (p)
- {
- p[0] = 0; /* free count */
- p[1] = l; /* length */
- profiler_log (PROFILER_ALLOC | PROFILER_ZINIT, l, TRUE);
- p += 2;
- }
- else
- {
- profiler_log (PROFILER_ALLOC | PROFILER_ZINIT, l, FALSE);
- g_mem_profile ();
- }
-
- return p;
-}
-
-static void
-profiler_free (gpointer mem)
-{
- gsize *p = mem;
-
- p -= 2;
- if (p[0]) /* free count */
- {
- g_warning ("free(%p): memory has been freed %"G_GSIZE_FORMAT" times already",
- p + 2, p[0]);
- profiler_log (PROFILER_FREE,
- p[1], /* length */
- FALSE);
- }
- else
- {
-#ifdef G_ENABLE_DEBUG
- if (g_trap_free_size == p[1])
- G_BREAKPOINT ();
-#endif /* G_ENABLE_DEBUG */
-
- profiler_log (PROFILER_FREE,
- p[1], /* length */
- TRUE);
- memset (p + 2, 0xaa, p[1]);
-
- /* for all those that miss standard_free (p); in this place, yes,
- * we do leak all memory when profiling, and that is intentional
- * to catch double frees. patch submissions are futile.
- */
- }
- p[0] += 1;
-}
-
-static gpointer
-profiler_try_realloc (gpointer mem,
- gsize n_bytes)
-{
- gsize *p = mem;
-
- p -= 2;
-
-#ifdef G_ENABLE_DEBUG
- if (g_trap_realloc_size == n_bytes)
- G_BREAKPOINT ();
-#endif /* G_ENABLE_DEBUG */
-
- if (mem && p[0]) /* free count */
- {
- g_warning ("realloc(%p, %"G_GSIZE_FORMAT"): "
- "memory has been freed %"G_GSIZE_FORMAT" times already",
- p + 2, (gsize) n_bytes, p[0]);
- profiler_log (PROFILER_ALLOC | PROFILER_RELOC, n_bytes, FALSE);
-
- return NULL;
- }
- else
- {
- p = standard_realloc (mem ? p : NULL, sizeof (gsize) * 2 + n_bytes);
-
- if (p)
- {
- if (mem)
- profiler_log (PROFILER_FREE | PROFILER_RELOC, p[1], TRUE);
- p[0] = 0;
- p[1] = n_bytes;
- profiler_log (PROFILER_ALLOC | PROFILER_RELOC, p[1], TRUE);
- p += 2;
- }
- else
- profiler_log (PROFILER_ALLOC | PROFILER_RELOC, n_bytes, FALSE);
-
- return p;
- }
-}
-
-static gpointer
-profiler_realloc (gpointer mem,
- gsize n_bytes)
-{
- mem = profiler_try_realloc (mem, n_bytes);
-
- if (!mem)
- g_mem_profile ();
-
- return mem;
-}
-
-static GMemVTable profiler_table = {
- profiler_malloc,
- profiler_realloc,
- profiler_free,
- profiler_calloc,
- profiler_try_malloc,
- profiler_try_realloc,
-};
-GMemVTable *glib_mem_profiler_table = &profiler_table;
-
-#endif /* !G_DISABLE_CHECKS */
-
-/* --- MemChunks --- */
-#ifndef G_ALLOC_AND_FREE
-typedef struct _GAllocator GAllocator;
-typedef struct _GMemChunk GMemChunk;
-#define G_ALLOC_ONLY 1
-#define G_ALLOC_AND_FREE 2
-#endif
-
-struct _GMemChunk {
- guint alloc_size; /* the size of an atom */
-};
-
-GMemChunk*
-g_mem_chunk_new (const gchar *name,
- gint atom_size,
- gsize area_size,
- gint type)
-{
- GMemChunk *mem_chunk;
- g_return_val_if_fail (atom_size > 0, NULL);
-
- mem_chunk = g_slice_new (GMemChunk);
- mem_chunk->alloc_size = atom_size;
- return mem_chunk;
-}
-
-void
-g_mem_chunk_destroy (GMemChunk *mem_chunk)
-{
- g_return_if_fail (mem_chunk != NULL);
-
- g_slice_free (GMemChunk, mem_chunk);
-}
-
-gpointer
-g_mem_chunk_alloc (GMemChunk *mem_chunk)
-{
- g_return_val_if_fail (mem_chunk != NULL, NULL);
-
- return g_slice_alloc (mem_chunk->alloc_size);
-}
-
-gpointer
-g_mem_chunk_alloc0 (GMemChunk *mem_chunk)
-{
- g_return_val_if_fail (mem_chunk != NULL, NULL);
-
- return g_slice_alloc0 (mem_chunk->alloc_size);
-}
-
-void
-g_mem_chunk_free (GMemChunk *mem_chunk,
- gpointer mem)
-{
- g_return_if_fail (mem_chunk != NULL);
-
- g_slice_free1 (mem_chunk->alloc_size, mem);
-}
-
-void g_mem_chunk_clean (GMemChunk *mem_chunk) {}
-void g_mem_chunk_reset (GMemChunk *mem_chunk) {}
-void g_mem_chunk_print (GMemChunk *mem_chunk) {}
-void g_mem_chunk_info (void) {}
-void g_blow_chunks (void) {}
-
-GAllocator*
-g_allocator_new (const gchar *name,
- guint n_preallocs)
-{
- static struct _GAllocator {
- gchar *name;
- guint16 n_preallocs;
- guint is_unused : 1;
- guint type : 4;
- GAllocator *last;
- GMemChunk *mem_chunk;
- gpointer free_list;
- } dummy = {
- "GAllocator is deprecated", 1, TRUE, 0, NULL, NULL, NULL,
- };
- /* some (broken) GAllocator uses depend on non-NULL allocators */
- return (void*) &dummy;
-}
-
-void
-g_allocator_free (GAllocator *allocator)
-{
-}
-
-#ifdef ENABLE_GC_FRIENDLY_DEFAULT
-gboolean g_mem_gc_friendly = TRUE;
-#else
-gboolean g_mem_gc_friendly = FALSE;
-#endif
-
-static void
-g_mem_init_nomessage (void)
-{
-#if NOT_NEEDED_FOR_NAVIT
- gchar buffer[1024];
- const gchar *val;
- const GDebugKey keys[] = {
- { "gc-friendly", 1 },
- };
- gint flags;
- if (g_mem_initialized)
- return;
- /* don't use g_malloc/g_message here */
- val = _g_getenv_nomalloc ("G_DEBUG", buffer);
- flags = !val ? 0 : g_parse_debug_string (val, keys, G_N_ELEMENTS (keys));
- if (flags & 1) /* gc-friendly */
- {
- g_mem_gc_friendly = TRUE;
- }
-#endif /* NOT_NEEDED_FOR_NAVIT */
- g_mem_initialized = TRUE;
-}
-
-void
-_g_mem_thread_init_noprivate_nomessage (void)
-{
- /* we may only create mutexes here, locking/
- * unlocking a mutex does not yet work.
- */
- g_mem_init_nomessage();
-#ifndef G_DISABLE_CHECKS
- gmem_profile_mutex = g_mutex_new ();
-#endif
-}
-
-#define __G_MEM_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gmem.h b/navit/support/glib/gmem.h
deleted file mode 100644
index d5779e3b2..000000000
--- a/navit/support/glib/gmem.h
+++ /dev/null
@@ -1,152 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_MEM_H__
-#define __G_MEM_H__
-
-#include <glib/gslice.h>
-#include <glib/gtypes.h>
-
-G_BEGIN_DECLS
-
-typedef struct _GMemVTable GMemVTable;
-
-
-#if GLIB_SIZEOF_VOID_P > GLIB_SIZEOF_LONG
-# define G_MEM_ALIGN GLIB_SIZEOF_VOID_P
-#else /* GLIB_SIZEOF_VOID_P <= GLIB_SIZEOF_LONG */
-# define G_MEM_ALIGN GLIB_SIZEOF_LONG
-#endif /* GLIB_SIZEOF_VOID_P <= GLIB_SIZEOF_LONG */
-
-
-/* Memory allocation functions
- */
-gpointer g_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
-gpointer g_malloc0 (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
-gpointer g_realloc (gpointer mem,
- gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT;
-void g_free (gpointer mem);
-gpointer g_try_malloc (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
-gpointer g_try_malloc0 (gsize n_bytes) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
-gpointer g_try_realloc (gpointer mem,
- gsize n_bytes) G_GNUC_WARN_UNUSED_RESULT;
-
-
-/* Convenience memory allocators
- */
-#define g_new(struct_type, n_structs) \
- ((struct_type *) g_malloc (((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
-#define g_new0(struct_type, n_structs) \
- ((struct_type *) g_malloc0 (((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
-#define g_renew(struct_type, mem, n_structs) \
- ((struct_type *) g_realloc ((mem), ((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
-
-#define g_try_new(struct_type, n_structs) \
- ((struct_type *) g_try_malloc (((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
-#define g_try_new0(struct_type, n_structs) \
- ((struct_type *) g_try_malloc0 (((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
-#define g_try_renew(struct_type, mem, n_structs) \
- ((struct_type *) g_try_realloc ((mem), ((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))
-
-
-/* Memory allocation virtualization for debugging purposes
- * g_mem_set_vtable() has to be the very first GLib function called
- * if being used
- */
-struct _GMemVTable
-{
- gpointer (*vmalloc) (gsize n_bytes);
- gpointer (*vrealloc) (gpointer mem,
- gsize n_bytes);
- void (*vfree) (gpointer mem);
- /* optional; set to NULL if not used ! */
- gpointer (*vcalloc) (gsize n_blocks,
- gsize n_block_bytes);
- gpointer (*vtry_malloc) (gsize n_bytes);
- gpointer (*vtry_realloc) (gpointer mem,
- gsize n_bytes);
-};
-void g_mem_set_vtable (GMemVTable *vtable);
-gboolean g_mem_is_system_malloc (void);
-
-GLIB_VAR gboolean g_mem_gc_friendly;
-
-/* Memory profiler and checker, has to be enabled via g_mem_set_vtable()
- */
-GLIB_VAR GMemVTable *glib_mem_profiler_table;
-void g_mem_profile (void);
-
-
-/* deprecated memchunks and allocators */
-#if !defined (G_DISABLE_DEPRECATED) || defined (GTK_COMPILATION) || defined (GDK_COMPILATION)
-typedef struct _GAllocator GAllocator;
-typedef struct _GMemChunk GMemChunk;
-#define g_mem_chunk_create(type, pre_alloc, alloc_type) ( \
- g_mem_chunk_new (#type " mem chunks (" #pre_alloc ")", \
- sizeof (type), \
- sizeof (type) * (pre_alloc), \
- (alloc_type)) \
-)
-#define g_chunk_new(type, chunk) ( \
- (type *) g_mem_chunk_alloc (chunk) \
-)
-#define g_chunk_new0(type, chunk) ( \
- (type *) g_mem_chunk_alloc0 (chunk) \
-)
-#define g_chunk_free(mem, mem_chunk) G_STMT_START { \
- g_mem_chunk_free ((mem_chunk), (mem)); \
-} G_STMT_END
-#define G_ALLOC_ONLY 1
-#define G_ALLOC_AND_FREE 2
-GMemChunk* g_mem_chunk_new (const gchar *name,
- gint atom_size,
- gsize area_size,
- gint type);
-void g_mem_chunk_destroy (GMemChunk *mem_chunk);
-gpointer g_mem_chunk_alloc (GMemChunk *mem_chunk);
-gpointer g_mem_chunk_alloc0 (GMemChunk *mem_chunk);
-void g_mem_chunk_free (GMemChunk *mem_chunk,
- gpointer mem);
-void g_mem_chunk_clean (GMemChunk *mem_chunk);
-void g_mem_chunk_reset (GMemChunk *mem_chunk);
-void g_mem_chunk_print (GMemChunk *mem_chunk);
-void g_mem_chunk_info (void);
-void g_blow_chunks (void);
-GAllocator*g_allocator_new (const gchar *name,
- guint n_preallocs);
-void g_allocator_free (GAllocator *allocator);
-#define G_ALLOCATOR_LIST (1)
-#define G_ALLOCATOR_SLIST (2)
-#define G_ALLOCATOR_NODE (3)
-#endif /* G_DISABLE_DEPRECATED */
-
-G_END_DECLS
-
-#endif /* __G_MEM_H__ */
diff --git a/navit/support/glib/gmessages.c b/navit/support/glib/gmessages.c
deleted file mode 100644
index 548a412c4..000000000
--- a/navit/support/glib/gmessages.c
+++ /dev/null
@@ -1,1126 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * MT safe
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <signal.h>
-#include <locale.h>
-#include <errno.h>
-
-#include "glib.h"
-#if NOT_NEEDED_FOR_NAVIT
-#include "gdebug.h"
-#endif /* NOT_NEEDED_FOR_NAVIT */
-#include "gprintfint.h"
-#include "gthreadprivate.h"
-#include "galias.h"
-#include "config.h"
-
-#if NOT_NEEDED_FOR_NAVIT
-#ifdef G_OS_WIN32
-#include <process.h> /* For getpid() */
-#include <io.h>
-# define STRICT /* Strict typing, please */
-# define _WIN32_WINDOWS 0x0401 /* to get IsDebuggerPresent */
-# include <windows.h>
-# undef STRICT
-#endif
-
-/* --- structures --- */
-typedef struct _GLogDomain GLogDomain;
-typedef struct _GLogHandler GLogHandler;
-struct _GLogDomain
-{
- gchar *log_domain;
- GLogLevelFlags fatal_mask;
- GLogHandler *handlers;
- GLogDomain *next;
-};
-struct _GLogHandler
-{
- guint id;
- GLogLevelFlags log_level;
- GLogFunc log_func;
- gpointer data;
- GLogHandler *next;
-};
-
-
-/* --- variables --- */
-static GMutex *g_messages_lock = NULL;
-static GLogDomain *g_log_domains = NULL;
-static GLogLevelFlags g_log_always_fatal = G_LOG_FATAL_MASK;
-static GPrintFunc glib_print_func = NULL;
-static GPrintFunc glib_printerr_func = NULL;
-static GPrivate *g_log_depth = NULL;
-static GLogLevelFlags g_log_msg_prefix = G_LOG_LEVEL_ERROR | G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_DEBUG;
-static GLogFunc default_log_func = g_log_default_handler;
-static gpointer default_log_data = NULL;
-
-/* --- functions --- */
-#ifdef G_OS_WIN32
-# define STRICT
-# include <windows.h>
-# undef STRICT
-static gboolean win32_keep_fatal_message = FALSE;
-
-/* This default message will usually be overwritten. */
-/* Yes, a fixed size buffer is bad. So sue me. But g_error() is never
- * called with huge strings, is it?
- */
-static gchar fatal_msg_buf[1000] = "Unspecified fatal error encountered, aborting.";
-static gchar *fatal_msg_ptr = fatal_msg_buf;
-
-#undef write
-static inline int
-dowrite (int fd,
- const void *buf,
- unsigned int len)
-{
- if (win32_keep_fatal_message)
- {
- memcpy (fatal_msg_ptr, buf, len);
- fatal_msg_ptr += len;
- *fatal_msg_ptr = 0;
- return len;
- }
-
- write (fd, buf, len);
-
- return len;
-}
-#define write(fd, buf, len) dowrite(fd, buf, len)
-
-#endif
-
-static void
-write_string (int fd,
- const gchar *string)
-{
- write (fd, string, strlen (string));
-}
-
-static void
-g_messages_prefixed_init (void)
-{
- static gboolean initialized = FALSE;
-
- if (!initialized)
- {
- const gchar *val;
-
- initialized = TRUE;
- val = g_getenv ("G_MESSAGES_PREFIXED");
-
- if (val)
- {
- const GDebugKey keys[] = {
- { "error", G_LOG_LEVEL_ERROR },
- { "critical", G_LOG_LEVEL_CRITICAL },
- { "warning", G_LOG_LEVEL_WARNING },
- { "message", G_LOG_LEVEL_MESSAGE },
- { "info", G_LOG_LEVEL_INFO },
- { "debug", G_LOG_LEVEL_DEBUG }
- };
-
- g_log_msg_prefix = g_parse_debug_string (val, keys, G_N_ELEMENTS (keys));
- }
- }
-}
-
-static GLogDomain*
-g_log_find_domain_L (const gchar *log_domain)
-{
- register GLogDomain *domain;
-
- domain = g_log_domains;
- while (domain)
- {
- if (strcmp (domain->log_domain, log_domain) == 0)
- return domain;
- domain = domain->next;
- }
- return NULL;
-}
-
-static GLogDomain*
-g_log_domain_new_L (const gchar *log_domain)
-{
- register GLogDomain *domain;
-
- domain = g_new (GLogDomain, 1);
- domain->log_domain = g_strdup (log_domain);
- domain->fatal_mask = G_LOG_FATAL_MASK;
- domain->handlers = NULL;
-
- domain->next = g_log_domains;
- g_log_domains = domain;
-
- return domain;
-}
-
-static void
-g_log_domain_check_free_L (GLogDomain *domain)
-{
- if (domain->fatal_mask == G_LOG_FATAL_MASK &&
- domain->handlers == NULL)
- {
- register GLogDomain *last, *work;
-
- last = NULL;
-
- work = g_log_domains;
- while (work)
- {
- if (work == domain)
- {
- if (last)
- last->next = domain->next;
- else
- g_log_domains = domain->next;
- g_free (domain->log_domain);
- g_free (domain);
- break;
- }
- last = work;
- work = last->next;
- }
- }
-}
-
-static GLogFunc
-g_log_domain_get_handler_L (GLogDomain *domain,
- GLogLevelFlags log_level,
- gpointer *data)
-{
- if (domain && log_level)
- {
- register GLogHandler *handler;
-
- handler = domain->handlers;
- while (handler)
- {
- if ((handler->log_level & log_level) == log_level)
- {
- *data = handler->data;
- return handler->log_func;
- }
- handler = handler->next;
- }
- }
-
- *data = default_log_data;
- return default_log_func;
-}
-
-GLogLevelFlags
-g_log_set_always_fatal (GLogLevelFlags fatal_mask)
-{
- GLogLevelFlags old_mask;
-
- /* restrict the global mask to levels that are known to glib
- * since this setting applies to all domains
- */
- fatal_mask &= (1 << G_LOG_LEVEL_USER_SHIFT) - 1;
- /* force errors to be fatal */
- fatal_mask |= G_LOG_LEVEL_ERROR;
- /* remove bogus flag */
- fatal_mask &= ~G_LOG_FLAG_FATAL;
-
- g_mutex_lock (g_messages_lock);
- old_mask = g_log_always_fatal;
- g_log_always_fatal = fatal_mask;
- g_mutex_unlock (g_messages_lock);
-
- return old_mask;
-}
-
-GLogLevelFlags
-g_log_set_fatal_mask (const gchar *log_domain,
- GLogLevelFlags fatal_mask)
-{
- GLogLevelFlags old_flags;
- register GLogDomain *domain;
-
- if (!log_domain)
- log_domain = "";
-
- /* force errors to be fatal */
- fatal_mask |= G_LOG_LEVEL_ERROR;
- /* remove bogus flag */
- fatal_mask &= ~G_LOG_FLAG_FATAL;
-
- g_mutex_lock (g_messages_lock);
-
- domain = g_log_find_domain_L (log_domain);
- if (!domain)
- domain = g_log_domain_new_L (log_domain);
- old_flags = domain->fatal_mask;
-
- domain->fatal_mask = fatal_mask;
- g_log_domain_check_free_L (domain);
-
- g_mutex_unlock (g_messages_lock);
-
- return old_flags;
-}
-
-guint
-g_log_set_handler (const gchar *log_domain,
- GLogLevelFlags log_levels,
- GLogFunc log_func,
- gpointer user_data)
-{
- static guint handler_id = 0;
- GLogDomain *domain;
- GLogHandler *handler;
-
- g_return_val_if_fail ((log_levels & G_LOG_LEVEL_MASK) != 0, 0);
- g_return_val_if_fail (log_func != NULL, 0);
-
- if (!log_domain)
- log_domain = "";
-
- handler = g_new (GLogHandler, 1);
-
- g_mutex_lock (g_messages_lock);
-
- domain = g_log_find_domain_L (log_domain);
- if (!domain)
- domain = g_log_domain_new_L (log_domain);
-
- handler->id = ++handler_id;
- handler->log_level = log_levels;
- handler->log_func = log_func;
- handler->data = user_data;
- handler->next = domain->handlers;
- domain->handlers = handler;
-
- g_mutex_unlock (g_messages_lock);
-
- return handler_id;
-}
-
-GLogFunc
-g_log_set_default_handler (GLogFunc log_func,
- gpointer user_data)
-{
- GLogFunc old_log_func;
-
- g_mutex_lock (g_messages_lock);
- old_log_func = default_log_func;
- default_log_func = log_func;
- default_log_data = user_data;
- g_mutex_unlock (g_messages_lock);
-
- return old_log_func;
-}
-
-void
-g_log_remove_handler (const gchar *log_domain,
- guint handler_id)
-{
- register GLogDomain *domain;
-
- g_return_if_fail (handler_id > 0);
-
- if (!log_domain)
- log_domain = "";
-
- g_mutex_lock (g_messages_lock);
- domain = g_log_find_domain_L (log_domain);
- if (domain)
- {
- GLogHandler *work, *last;
-
- last = NULL;
- work = domain->handlers;
- while (work)
- {
- if (work->id == handler_id)
- {
- if (last)
- last->next = work->next;
- else
- domain->handlers = work->next;
- g_log_domain_check_free_L (domain);
- g_mutex_unlock (g_messages_lock);
- g_free (work);
- return;
- }
- last = work;
- work = last->next;
- }
- }
- g_mutex_unlock (g_messages_lock);
- g_warning ("%s: could not find handler with id `%d' for domain \"%s\"",
- G_STRLOC, handler_id, log_domain);
-}
-
-void
-g_logv (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *format,
- va_list args1)
-{
- gboolean was_fatal = (log_level & G_LOG_FLAG_FATAL) != 0;
- gboolean was_recursion = (log_level & G_LOG_FLAG_RECURSION) != 0;
- gint i;
-
- log_level &= G_LOG_LEVEL_MASK;
- if (!log_level)
- return;
-
- for (i = g_bit_nth_msf (log_level, -1); i >= 0; i = g_bit_nth_msf (log_level, i))
- {
- register GLogLevelFlags test_level;
-
- test_level = 1 << i;
- if (log_level & test_level)
- {
- guint depth = GPOINTER_TO_UINT (g_private_get (g_log_depth));
- GLogDomain *domain;
- GLogFunc log_func;
- GLogLevelFlags domain_fatal_mask;
- gpointer data = NULL;
-
- if (was_fatal)
- test_level |= G_LOG_FLAG_FATAL;
- if (was_recursion)
- test_level |= G_LOG_FLAG_RECURSION;
-
- /* check recursion and lookup handler */
- g_mutex_lock (g_messages_lock);
- domain = g_log_find_domain_L (log_domain ? log_domain : "");
- if (depth)
- test_level |= G_LOG_FLAG_RECURSION;
- depth++;
- domain_fatal_mask = domain ? domain->fatal_mask : G_LOG_FATAL_MASK;
- if ((domain_fatal_mask | g_log_always_fatal) & test_level)
- test_level |= G_LOG_FLAG_FATAL;
- if (test_level & G_LOG_FLAG_RECURSION)
- log_func = _g_log_fallback_handler;
- else
- log_func = g_log_domain_get_handler_L (domain, test_level, &data);
- domain = NULL;
- g_mutex_unlock (g_messages_lock);
-
- g_private_set (g_log_depth, GUINT_TO_POINTER (depth));
-
- /* had to defer debug initialization until we can keep track of recursion */
- if (!(test_level & G_LOG_FLAG_RECURSION) && !_g_debug_initialized)
- {
- GLogLevelFlags orig_test_level = test_level;
-
- _g_debug_init ();
- if ((domain_fatal_mask | g_log_always_fatal) & test_level)
- test_level |= G_LOG_FLAG_FATAL;
- if (test_level != orig_test_level)
- {
- /* need a relookup, not nice, but not too bad either */
- g_mutex_lock (g_messages_lock);
- domain = g_log_find_domain_L (log_domain ? log_domain : "");
- log_func = g_log_domain_get_handler_L (domain, test_level, &data);
- domain = NULL;
- g_mutex_unlock (g_messages_lock);
- }
- }
-
- if (test_level & G_LOG_FLAG_RECURSION)
- {
- /* we use a stack buffer of fixed size, since we're likely
- * in an out-of-memory situation
- */
- gchar buffer[1025];
- gint size;
- size = _g_vsnprintf (buffer, 1024, format, args1);
-
- log_func (log_domain, test_level, buffer, data);
- }
- else
- {
- gchar *msg = g_strdup_vprintf (format, args1);
-
- log_func (log_domain, test_level, msg, data);
-
- g_free (msg);
- }
-
- if (test_level & G_LOG_FLAG_FATAL)
- {
-#ifdef G_OS_WIN32
- gchar *locale_msg = g_locale_from_utf8 (fatal_msg_buf, -1, NULL, NULL, NULL);
-
- MessageBox (NULL, locale_msg, NULL,
- MB_ICONERROR|MB_SETFOREGROUND);
- if (IsDebuggerPresent () && !(test_level & G_LOG_FLAG_RECURSION))
- G_BREAKPOINT ();
- else
- abort ();
-#else
-#if defined (G_ENABLE_DEBUG) && defined (SIGTRAP)
- if (!(test_level & G_LOG_FLAG_RECURSION))
- G_BREAKPOINT ();
- else
- abort ();
-#else /* !G_ENABLE_DEBUG || !SIGTRAP */
- abort ();
-#endif /* !G_ENABLE_DEBUG || !SIGTRAP */
-#endif /* !G_OS_WIN32 */
- }
-
- depth--;
- g_private_set (g_log_depth, GUINT_TO_POINTER (depth));
- }
- }
-}
-
-void
-g_log (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *format,
- ...)
-{
- va_list args;
-
- va_start (args, format);
- g_logv (log_domain, log_level, format, args);
- va_end (args);
-}
-
-void
-g_return_if_fail_warning (const char *log_domain,
- const char *pretty_function,
- const char *expression)
-{
- /*
- * Omit the prefix used by the PLT-reduction
- * technique used in GTK+.
- */
- if (g_str_has_prefix (pretty_function, "IA__"))
- pretty_function += 4;
- g_log (log_domain,
- G_LOG_LEVEL_CRITICAL,
- "%s: assertion `%s' failed",
- pretty_function,
- expression);
-}
-
-void
-g_warn_message (const char *domain,
- const char *file,
- int line,
- const char *func,
- const char *warnexpr)
-{
- char *s, lstr[32];
- g_snprintf (lstr, 32, "%d", line);
- if (warnexpr)
- s = g_strconcat ("(", file, ":", lstr, "):",
- func, func[0] ? ":" : "",
- " runtime check failed: (", warnexpr, ")", NULL);
- else
- s = g_strconcat ("(", file, ":", lstr, "):",
- func, func[0] ? ":" : "",
- " ", "code should not be reached", NULL);
- g_log (domain, G_LOG_LEVEL_WARNING, "%s", s);
- g_free (s);
-}
-
-void
-g_assert_warning (const char *log_domain,
- const char *file,
- const int line,
- const char *pretty_function,
- const char *expression)
-{
- /*
- * Omit the prefix used by the PLT-reduction
- * technique used in GTK+.
- */
- if (g_str_has_prefix (pretty_function, "IA__"))
- pretty_function += 4;
- g_log (log_domain,
- G_LOG_LEVEL_ERROR,
- expression
- ? "file %s: line %d (%s): assertion failed: (%s)"
- : "file %s: line %d (%s): should not be reached",
- file,
- line,
- pretty_function,
- expression);
- abort ();
-}
-
-#define CHAR_IS_SAFE(wc) (!((wc < 0x20 && wc != '\t' && wc != '\n' && wc != '\r') || \
- (wc == 0x7f) || \
- (wc >= 0x80 && wc < 0xa0)))
-
-static gchar*
-strdup_convert (const gchar *string,
- const gchar *charset)
-{
- if (!g_utf8_validate (string, -1, NULL))
- {
- GString *gstring = g_string_new ("[Invalid UTF-8] ");
- guchar *p;
-
- for (p = (guchar *)string; *p; p++)
- {
- if (CHAR_IS_SAFE(*p) &&
- !(*p == '\r' && *(p + 1) != '\n') &&
- *p < 0x80)
- g_string_append_c (gstring, *p);
- else
- g_string_append_printf (gstring, "\\x%02x", (guint)(guchar)*p);
- }
-
- return g_string_free (gstring, FALSE);
- }
- else
- {
- GError *err = NULL;
-
- gchar *result = g_convert_with_fallback (string, -1, charset, "UTF-8", "?", NULL, NULL, &err);
- if (result)
- return result;
- else
- {
- /* Not thread-safe, but doesn't matter if we print the warning twice
- */
- static gboolean warned = FALSE;
- if (!warned)
- {
- warned = TRUE;
- _g_fprintf (stderr, "GLib: Cannot convert message: %s\n", err->message);
- }
- g_error_free (err);
-
- return g_strdup (string);
- }
- }
-}
-
-/* For a radix of 8 we need at most 3 output bytes for 1 input
- * byte. Additionally we might need up to 2 output bytes for the
- * readix prefix and 1 byte for the trailing NULL.
- */
-#define FORMAT_UNSIGNED_BUFSIZE ((GLIB_SIZEOF_LONG * 3) + 3)
-
-static void
-format_unsigned (gchar *buf,
- gulong num,
- guint radix)
-{
- gulong tmp;
- gchar c;
- gint i, n;
-
- /* we may not call _any_ GLib functions here (or macros like g_return_if_fail()) */
-
- if (radix != 8 && radix != 10 && radix != 16)
- {
- *buf = '\000';
- return;
- }
-
- if (!num)
- {
- *buf++ = '0';
- *buf = '\000';
- return;
- }
-
- if (radix == 16)
- {
- *buf++ = '0';
- *buf++ = 'x';
- }
- else if (radix == 8)
- {
- *buf++ = '0';
- }
-
- n = 0;
- tmp = num;
- while (tmp)
- {
- tmp /= radix;
- n++;
- }
-
- i = n;
-
- /* Again we can't use g_assert; actually this check should _never_ fail. */
- if (n > FORMAT_UNSIGNED_BUFSIZE - 3)
- {
- *buf = '\000';
- return;
- }
-
- while (num)
- {
- i--;
- c = (num % radix);
- if (c < 10)
- buf[i] = c + '0';
- else
- buf[i] = c + 'a' - 10;
- num /= radix;
- }
-
- buf[n] = '\000';
-}
-
-/* string size big enough to hold level prefix */
-#define STRING_BUFFER_SIZE (FORMAT_UNSIGNED_BUFSIZE + 32)
-
-#define ALERT_LEVELS (G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING)
-
-static int
-mklevel_prefix (gchar level_prefix[STRING_BUFFER_SIZE],
- GLogLevelFlags log_level)
-{
- gboolean to_stdout = TRUE;
-
- /* we may not call _any_ GLib functions here */
-
- switch (log_level & G_LOG_LEVEL_MASK)
- {
- case G_LOG_LEVEL_ERROR:
- strcpy (level_prefix, "ERROR");
- to_stdout = FALSE;
- break;
- case G_LOG_LEVEL_CRITICAL:
- strcpy (level_prefix, "CRITICAL");
- to_stdout = FALSE;
- break;
- case G_LOG_LEVEL_WARNING:
- strcpy (level_prefix, "WARNING");
- to_stdout = FALSE;
- break;
- case G_LOG_LEVEL_MESSAGE:
- strcpy (level_prefix, "Message");
- to_stdout = FALSE;
- break;
- case G_LOG_LEVEL_INFO:
- strcpy (level_prefix, "INFO");
- break;
- case G_LOG_LEVEL_DEBUG:
- strcpy (level_prefix, "DEBUG");
- break;
- default:
- if (log_level)
- {
- strcpy (level_prefix, "LOG-");
- format_unsigned (level_prefix + 4, log_level & G_LOG_LEVEL_MASK, 16);
- }
- else
- strcpy (level_prefix, "LOG");
- break;
- }
- if (log_level & G_LOG_FLAG_RECURSION)
- strcat (level_prefix, " (recursed)");
- if (log_level & ALERT_LEVELS)
- strcat (level_prefix, " **");
-
-#ifdef G_OS_WIN32
- win32_keep_fatal_message = (log_level & G_LOG_FLAG_FATAL) != 0;
-#endif
- return to_stdout ? 1 : 2;
-}
-
-void
-_g_log_fallback_handler (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *message,
- gpointer unused_data)
-{
- gchar level_prefix[STRING_BUFFER_SIZE];
-#ifndef G_OS_WIN32
- gchar pid_string[FORMAT_UNSIGNED_BUFSIZE];
-#endif
- gboolean is_fatal = (log_level & G_LOG_FLAG_FATAL) != 0;
- int fd;
-
- /* we can not call _any_ GLib functions in this fallback handler,
- * which is why we skip UTF-8 conversion, etc.
- * since we either recursed or ran out of memory, we're in a pretty
- * pathologic situation anyways, what we can do is giving the
- * the process ID unconditionally however.
- */
-
- fd = mklevel_prefix (level_prefix, log_level);
- if (!message)
- message = "(NULL) message";
-
-#ifndef G_OS_WIN32
- format_unsigned (pid_string, getpid (), 10);
-#endif
-
- if (log_domain)
- write_string (fd, "\n");
- else
- write_string (fd, "\n** ");
-
-#ifndef G_OS_WIN32
- write_string (fd, "(process:");
- write_string (fd, pid_string);
- write_string (fd, "): ");
-#endif
-
- if (log_domain)
- {
- write_string (fd, log_domain);
- write_string (fd, "-");
- }
- write_string (fd, level_prefix);
- write_string (fd, ": ");
- write_string (fd, message);
- if (is_fatal)
- write_string (fd, "\naborting...\n");
- else
- write_string (fd, "\n");
-}
-
-static void
-escape_string (GString *string)
-{
- const char *p = string->str;
- gunichar wc;
-
- while (p < string->str + string->len)
- {
- gboolean safe;
-
- wc = g_utf8_get_char_validated (p, -1);
- if (wc == (gunichar)-1 || wc == (gunichar)-2)
- {
- gchar *tmp;
- guint pos;
-
- pos = p - string->str;
-
- /* Emit invalid UTF-8 as hex escapes
- */
- tmp = g_strdup_printf ("\\x%02x", (guint)(guchar)*p);
- g_string_erase (string, pos, 1);
- g_string_insert (string, pos, tmp);
-
- p = string->str + (pos + 4); /* Skip over escape sequence */
-
- g_free (tmp);
- continue;
- }
- if (wc == '\r')
- {
- safe = *(p + 1) == '\n';
- }
- else
- {
- safe = CHAR_IS_SAFE (wc);
- }
-
- if (!safe)
- {
- gchar *tmp;
- guint pos;
-
- pos = p - string->str;
-
- /* Largest char we escape is 0x0a, so we don't have to worry
- * about 8-digit \Uxxxxyyyy
- */
- tmp = g_strdup_printf ("\\u%04x", wc);
- g_string_erase (string, pos, g_utf8_next_char (p) - p);
- g_string_insert (string, pos, tmp);
- g_free (tmp);
-
- p = string->str + (pos + 6); /* Skip over escape sequence */
- }
- else
- p = g_utf8_next_char (p);
- }
-}
-
-void
-g_log_default_handler (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *message,
- gpointer unused_data)
-{
- gboolean is_fatal = (log_level & G_LOG_FLAG_FATAL) != 0;
- gchar level_prefix[STRING_BUFFER_SIZE], *string;
- GString *gstring;
- int fd;
-
- /* we can be called externally with recursion for whatever reason */
- if (log_level & G_LOG_FLAG_RECURSION)
- {
- _g_log_fallback_handler (log_domain, log_level, message, unused_data);
- return;
- }
-
- g_messages_prefixed_init ();
-
- fd = mklevel_prefix (level_prefix, log_level);
-
- gstring = g_string_new (NULL);
- if (log_level & ALERT_LEVELS)
- g_string_append (gstring, "\n");
- if (!log_domain)
- g_string_append (gstring, "** ");
-
- if ((g_log_msg_prefix & log_level) == log_level)
- {
- const gchar *prg_name = g_get_prgname ();
-
- if (!prg_name)
- g_string_append_printf (gstring, "(process:%lu): ", (gulong)getpid ());
- else
- g_string_append_printf (gstring, "(%s:%lu): ", prg_name, (gulong)getpid ());
- }
-
- if (log_domain)
- {
- g_string_append (gstring, log_domain);
- g_string_append_c (gstring, '-');
- }
- g_string_append (gstring, level_prefix);
-
- g_string_append (gstring, ": ");
- if (!message)
- g_string_append (gstring, "(NULL) message");
- else
- {
- GString *msg;
- const gchar *charset;
-
- msg = g_string_new (message);
- escape_string (msg);
-
- if (g_get_charset (&charset))
- g_string_append (gstring, msg->str); /* charset is UTF-8 already */
- else
- {
- string = strdup_convert (msg->str, charset);
- g_string_append (gstring, string);
- g_free (string);
- }
-
- g_string_free (msg, TRUE);
- }
- if (is_fatal)
- g_string_append (gstring, "\naborting...\n");
- else
- g_string_append (gstring, "\n");
-
- string = g_string_free (gstring, FALSE);
-
- write_string (fd, string);
- g_free (string);
-}
-
-GPrintFunc
-g_set_print_handler (GPrintFunc func)
-{
- GPrintFunc old_print_func;
-
- g_mutex_lock (g_messages_lock);
- old_print_func = glib_print_func;
- glib_print_func = func;
- g_mutex_unlock (g_messages_lock);
-
- return old_print_func;
-}
-
-void
-g_print (const gchar *format,
- ...)
-{
- va_list args;
- gchar *string;
- GPrintFunc local_glib_print_func;
-
- g_return_if_fail (format != NULL);
-
- va_start (args, format);
- string = g_strdup_vprintf (format, args);
- va_end (args);
-
- g_mutex_lock (g_messages_lock);
- local_glib_print_func = glib_print_func;
- g_mutex_unlock (g_messages_lock);
-
- if (local_glib_print_func)
- local_glib_print_func (string);
- else
- {
- const gchar *charset;
-
- if (g_get_charset (&charset))
- fputs (string, stdout); /* charset is UTF-8 already */
- else
- {
- gchar *lstring = strdup_convert (string, charset);
-
- fputs (lstring, stdout);
- g_free (lstring);
- }
- fflush (stdout);
- }
- g_free (string);
-}
-
-GPrintFunc
-g_set_printerr_handler (GPrintFunc func)
-{
- GPrintFunc old_printerr_func;
-
- g_mutex_lock (g_messages_lock);
- old_printerr_func = glib_printerr_func;
- glib_printerr_func = func;
- g_mutex_unlock (g_messages_lock);
-
- return old_printerr_func;
-}
-
-void
-g_printerr (const gchar *format,
- ...)
-{
- va_list args;
- gchar *string;
- GPrintFunc local_glib_printerr_func;
-
- g_return_if_fail (format != NULL);
-
- va_start (args, format);
- string = g_strdup_vprintf (format, args);
- va_end (args);
-
- g_mutex_lock (g_messages_lock);
- local_glib_printerr_func = glib_printerr_func;
- g_mutex_unlock (g_messages_lock);
-
- if (local_glib_printerr_func)
- local_glib_printerr_func (string);
- else
- {
- const gchar *charset;
-
- if (g_get_charset (&charset))
- fputs (string, stderr); /* charset is UTF-8 already */
- else
- {
- gchar *lstring = strdup_convert (string, charset);
-
- fputs (lstring, stderr);
- g_free (lstring);
- }
- fflush (stderr);
- }
- g_free (string);
-}
-
-#endif /* NOT_NEEDED_FOR_NAVIT */
-gsize
-g_printf_string_upper_bound (const gchar *format,
- va_list args)
-{
-#ifdef HAVE_API_WIN32_BASE
- gchar c[16384];
- return _g_vsnprintf (c, 16384, format, args) + 1;
-#else
- gchar c;
- return _g_vsnprintf (&c, 1, format, args) + 1;
-#endif
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-void
-_g_messages_thread_init_nomessage (void)
-{
- g_messages_lock = g_mutex_new ();
- g_log_depth = g_private_new (NULL);
- g_messages_prefixed_init ();
- _g_debug_init ();
-}
-
-gboolean _g_debug_initialized = FALSE;
-guint _g_debug_flags = 0;
-
-void
-_g_debug_init (void)
-{
- const gchar *val;
-
- _g_debug_initialized = TRUE;
-
- val = g_getenv ("G_DEBUG");
- if (val != NULL)
- {
- const GDebugKey keys[] = {
- {"fatal_warnings", G_DEBUG_FATAL_WARNINGS},
- {"fatal_criticals", G_DEBUG_FATAL_CRITICALS}
- };
-
- _g_debug_flags = g_parse_debug_string (val, keys, G_N_ELEMENTS (keys));
- }
-
- if (_g_debug_flags & G_DEBUG_FATAL_WARNINGS)
- {
- GLogLevelFlags fatal_mask;
-
- fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
- fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL;
- g_log_set_always_fatal (fatal_mask);
- }
-
- if (_g_debug_flags & G_DEBUG_FATAL_CRITICALS)
- {
- GLogLevelFlags fatal_mask;
-
- fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
- fatal_mask |= G_LOG_LEVEL_CRITICAL;
- g_log_set_always_fatal (fatal_mask);
- }
-}
-#endif /* NOT_NEEDED_FOR_NAVIT */
-
-#define __G_MESSAGES_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gmessages.h b/navit/support/glib/gmessages.h
deleted file mode 100644
index af5a826f8..000000000
--- a/navit/support/glib/gmessages.h
+++ /dev/null
@@ -1,341 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_MESSAGES_H__
-#define __G_MESSAGES_H__
-
-#include <stdarg.h>
-#include <glib/gtypes.h>
-#include <glib/gmacros.h>
-
-/* Suppress warnings when GCC is in -pedantic mode and not -std=c99
- */
-#if (__GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
-#pragma GCC system_header
-#endif
-
-G_BEGIN_DECLS
-
-/* calculate a string size, guaranteed to fit format + args.
- */
-gsize g_printf_string_upper_bound (const gchar* format,
- va_list args);
-
-/* Log level shift offset for user defined
- * log levels (0-7 are used by GLib).
- */
-#define G_LOG_LEVEL_USER_SHIFT (8)
-
-/* Glib log levels and flags.
- */
-typedef enum
-{
- /* log flags */
- G_LOG_FLAG_RECURSION = 1 << 0,
- G_LOG_FLAG_FATAL = 1 << 1,
-
- /* GLib log levels */
- G_LOG_LEVEL_ERROR = 1 << 2, /* always fatal */
- G_LOG_LEVEL_CRITICAL = 1 << 3,
- G_LOG_LEVEL_WARNING = 1 << 4,
- G_LOG_LEVEL_MESSAGE = 1 << 5,
- G_LOG_LEVEL_INFO = 1 << 6,
- G_LOG_LEVEL_DEBUG = 1 << 7,
-
- G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL)
-} GLogLevelFlags;
-
-/* GLib log levels that are considered fatal by default */
-#define G_LOG_FATAL_MASK (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR)
-
-typedef void (*GLogFunc) (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *message,
- gpointer user_data);
-
-/* Logging mechanism
- */
-guint g_log_set_handler (const gchar *log_domain,
- GLogLevelFlags log_levels,
- GLogFunc log_func,
- gpointer user_data);
-void g_log_remove_handler (const gchar *log_domain,
- guint handler_id);
-void g_log_default_handler (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *message,
- gpointer unused_data);
-GLogFunc g_log_set_default_handler (GLogFunc log_func,
- gpointer user_data);
-void g_log (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *format,
- ...) G_GNUC_PRINTF (3, 4);
-void g_logv (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *format,
- va_list args);
-GLogLevelFlags g_log_set_fatal_mask (const gchar *log_domain,
- GLogLevelFlags fatal_mask);
-GLogLevelFlags g_log_set_always_fatal (GLogLevelFlags fatal_mask);
-
-/* internal */
-G_GNUC_INTERNAL void _g_log_fallback_handler (const gchar *log_domain,
- GLogLevelFlags log_level,
- const gchar *message,
- gpointer unused_data);
-
-/* Internal functions, used to implement the following macros */
-void g_return_if_fail_warning (const char *log_domain,
- const char *pretty_function,
- const char *expression);
-void g_warn_message (const char *domain,
- const char *file,
- int line,
- const char *func,
- const char *warnexpr);
-#ifndef G_DISABLE_DEPRECATED
-void g_assert_warning (const char *log_domain,
- const char *file,
- const int line,
- const char *pretty_function,
- const char *expression) G_GNUC_NORETURN;
-#endif /* !G_DISABLE_DEPRECATED */
-
-
-#ifndef G_LOG_DOMAIN
-#define G_LOG_DOMAIN ((gchar*) 0)
-#endif /* G_LOG_DOMAIN */
-#ifdef G_HAVE_ISO_VARARGS
-/* for(;;); so that GCC knows that control doesn't go past g_error() */
-#define g_error(...) G_STMT_START { \
- g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_ERROR, \
- __VA_ARGS__); \
- for (;;); \
- } G_STMT_END
-
-#define g_message(...) g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_MESSAGE, \
- __VA_ARGS__)
-#define g_critical(...) g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_CRITICAL, \
- __VA_ARGS__)
-#define g_warning(...) g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_WARNING, \
- __VA_ARGS__)
-#define g_debug(...) g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_DEBUG, \
- __VA_ARGS__)
-#elif defined(G_HAVE_GNUC_VARARGS)
-#define g_error(format...) G_STMT_START { \
- g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_ERROR, \
- format); \
- for (;;); \
- } G_STMT_END
-
-#define g_message(format...) g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_MESSAGE, \
- format)
-#define g_critical(format...) g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_CRITICAL, \
- format)
-#define g_warning(format...) g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_WARNING, \
- format)
-#define g_debug(format...) g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_DEBUG, \
- format)
-#else /* no varargs macros */
-static void
-g_error (const gchar *format,
- ...)
-{
- va_list args;
- va_start (args, format);
- g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, format, args);
- va_end (args);
-
- for(;;);
-}
-static void
-g_message (const gchar *format,
- ...)
-{
- va_list args;
- va_start (args, format);
- g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, format, args);
- va_end (args);
-}
-static void
-g_critical (const gchar *format,
- ...)
-{
- va_list args;
- va_start (args, format);
- g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, format, args);
- va_end (args);
-}
-static void
-g_warning (const gchar *format,
- ...)
-{
- va_list args;
- va_start (args, format);
- g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, format, args);
- va_end (args);
-}
-static void
-g_debug (const gchar *format,
- ...)
-{
- va_list args;
- va_start (args, format);
- g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format, args);
- va_end (args);
-}
-#endif /* !__GNUC__ */
-
-typedef void (*GPrintFunc) (const gchar *string);
-void g_print (const gchar *format,
- ...) G_GNUC_PRINTF (1, 2);
-GPrintFunc g_set_print_handler (GPrintFunc func);
-void g_printerr (const gchar *format,
- ...) G_GNUC_PRINTF (1, 2);
-GPrintFunc g_set_printerr_handler (GPrintFunc func);
-
-
-/* Provide macros for graceful error handling.
- * The "return" macros will return from the current function.
- * Two different definitions are given for the macros in
- * order to support gcc's __PRETTY_FUNCTION__ capability.
- */
-
-#define g_warn_if_reached() do { g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } while (0)
-#define g_warn_if_fail(expr) do { if G_LIKELY (expr) ; else \
- g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, #expr); } while (0)
-
-#ifdef G_DISABLE_CHECKS
-
-#define g_return_if_fail(expr) G_STMT_START{ (void)0; }G_STMT_END
-#define g_return_val_if_fail(expr,val) G_STMT_START{ (void)0; }G_STMT_END
-#define g_return_if_reached() G_STMT_START{ return; }G_STMT_END
-#define g_return_val_if_reached(val) G_STMT_START{ return (val); }G_STMT_END
-
-#else /* !G_DISABLE_CHECKS */
-
-#ifdef __GNUC__
-
-#define g_return_if_fail(expr) G_STMT_START{ \
- if G_LIKELY(expr) { } else \
- { \
- g_return_if_fail_warning (G_LOG_DOMAIN, \
- __PRETTY_FUNCTION__, \
- #expr); \
- return; \
- }; }G_STMT_END
-
-#define g_return_val_if_fail(expr,val) G_STMT_START{ \
- if G_LIKELY(expr) { } else \
- { \
- g_return_if_fail_warning (G_LOG_DOMAIN, \
- __PRETTY_FUNCTION__, \
- #expr); \
- return (val); \
- }; }G_STMT_END
-
-#define g_return_if_reached() G_STMT_START{ \
- g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_CRITICAL, \
- "file %s: line %d (%s): should not be reached", \
- __FILE__, \
- __LINE__, \
- __PRETTY_FUNCTION__); \
- return; }G_STMT_END
-
-#define g_return_val_if_reached(val) G_STMT_START{ \
- g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_CRITICAL, \
- "file %s: line %d (%s): should not be reached", \
- __FILE__, \
- __LINE__, \
- __PRETTY_FUNCTION__); \
- return (val); }G_STMT_END
-
-#else /* !__GNUC__ */
-
-#define g_return_if_fail(expr) G_STMT_START{ \
- if (expr) { } else \
- { \
- g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_CRITICAL, \
- "file %s: line %d: assertion `%s' failed", \
- __FILE__, \
- __LINE__, \
- #expr); \
- return; \
- }; }G_STMT_END
-
-#define g_return_val_if_fail(expr, val) G_STMT_START{ \
- if (expr) { } else \
- { \
- g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_CRITICAL, \
- "file %s: line %d: assertion `%s' failed", \
- __FILE__, \
- __LINE__, \
- #expr); \
- return (val); \
- }; }G_STMT_END
-
-#define g_return_if_reached() G_STMT_START{ \
- g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_CRITICAL, \
- "file %s: line %d: should not be reached", \
- __FILE__, \
- __LINE__); \
- return; }G_STMT_END
-
-#define g_return_val_if_reached(val) G_STMT_START{ \
- g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_CRITICAL, \
- "file %s: line %d: should not be reached", \
- __FILE__, \
- __LINE__); \
- return (val); }G_STMT_END
-
-#endif /* !__GNUC__ */
-
-#endif /* !G_DISABLE_CHECKS */
-
-G_END_DECLS
-
-#endif /* __G_MESSAGES_H__ */
diff --git a/navit/support/glib/gprimes.c b/navit/support/glib/gprimes.c
deleted file mode 100644
index 7beca710c..000000000
--- a/navit/support/glib/gprimes.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * MT safe
- */
-
-#include "config.h"
-
-#include "glib.h"
-#include "galias.h"
-
-
-static const guint g_primes[] =
-{
- 11,
- 19,
- 37,
- 73,
- 109,
- 163,
- 251,
- 367,
- 557,
- 823,
- 1237,
- 1861,
- 2777,
- 4177,
- 6247,
- 9371,
- 14057,
- 21089,
- 31627,
- 47431,
- 71143,
- 106721,
- 160073,
- 240101,
- 360163,
- 540217,
- 810343,
- 1215497,
- 1823231,
- 2734867,
- 4102283,
- 6153409,
- 9230113,
- 13845163,
-};
-
-static const guint g_nprimes = sizeof (g_primes) / sizeof (g_primes[0]);
-
-guint
-g_spaced_primes_closest (guint num)
-{
- gint i;
-
- for (i = 0; i < g_nprimes; i++)
- if (g_primes[i] > num)
- return g_primes[i];
-
- return g_primes[g_nprimes - 1];
-}
-
-#define __G_PRIMES_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gprintf.c b/navit/support/glib/gprintf.c
deleted file mode 100644
index 6cbb214d5..000000000
--- a/navit/support/glib/gprintf.c
+++ /dev/null
@@ -1,342 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997, 2002 Peter Mattis, Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-
-#define _GNU_SOURCE /* For vasprintf */
-
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "glib.h"
-#include "gprintf.h"
-#include "gprintfint.h"
-
-#include "galias.h"
-
-/**
- * g_printf:
- * @format: a standard printf() format string, but notice
- * <link linkend="string-precision">string precision pitfalls</link>.
- * @Varargs: the arguments to insert in the output.
- *
- * An implementation of the standard printf() function which supports
- * positional parameters, as specified in the Single Unix Specification.
- *
- * Returns: the number of bytes printed.
- *
- * Since: 2.2
- **/
-gint
-g_printf (gchar const *format,
- ...)
-{
- va_list args;
- gint retval;
-
- va_start (args, format);
- retval = g_vprintf (format, args);
- va_end (args);
-
- return retval;
-}
-
-/**
- * g_fprintf:
- * @file: the stream to write to.
- * @format: a standard printf() format string, but notice
- * <link linkend="string-precision">string precision pitfalls</link>.
- * @Varargs: the arguments to insert in the output.
- *
- * An implementation of the standard fprintf() function which supports
- * positional parameters, as specified in the Single Unix Specification.
- *
- * Returns: the number of bytes printed.
- *
- * Since: 2.2
- **/
-gint
-g_fprintf (FILE *file,
- gchar const *format,
- ...)
-{
- va_list args;
- gint retval;
-
- va_start (args, format);
- retval = g_vfprintf (file, format, args);
- va_end (args);
-
- return retval;
-}
-
-/**
- * g_sprintf:
- * @string: A pointer to a memory buffer to contain the resulting string. It
- * is up to the caller to ensure that the allocated buffer is large
- * enough to hold the formatted result
- * @format: a standard printf() format string, but notice
- * <link linkend="string-precision">string precision pitfalls</link>.
- * @Varargs: the arguments to insert in the output.
- *
- * An implementation of the standard sprintf() function which supports
- * positional parameters, as specified in the Single Unix Specification.
- *
- * Returns: the number of bytes printed.
- *
- * Since: 2.2
- **/
-gint
-g_sprintf (gchar *string,
- gchar const *format,
- ...)
-{
- va_list args;
- gint retval;
-
- va_start (args, format);
- retval = g_vsprintf (string, format, args);
- va_end (args);
-
- return retval;
-}
-
-/**
- * g_snprintf:
- * @string: the buffer to hold the output.
- * @n: the maximum number of bytes to produce (including the
- * terminating nul character).
- * @format: a standard printf() format string, but notice
- * <link linkend="string-precision">string precision pitfalls</link>.
- * @Varargs: the arguments to insert in the output.
- *
- * A safer form of the standard sprintf() function. The output is guaranteed
- * to not exceed @n characters (including the terminating nul character), so
- * it is easy to ensure that a buffer overflow cannot occur.
- *
- * See also g_strdup_printf().
- *
- * In versions of GLib prior to 1.2.3, this function may return -1 if the
- * output was truncated, and the truncated string may not be nul-terminated.
- * In versions prior to 1.3.12, this function returns the length of the output
- * string.
- *
- * The return value of g_snprintf() conforms to the snprintf()
- * function as standardized in ISO C99. Note that this is different from
- * traditional snprintf(), which returns the length of the output string.
- *
- * The format string may contain positional parameters, as specified in
- * the Single Unix Specification.
- *
- * Returns: the number of bytes which would be produced if the buffer
- * was large enough.
- **/
-gint
-g_snprintf (gchar *string,
- gulong n,
- gchar const *format,
- ...)
-{
- va_list args;
- gint retval;
-
- va_start (args, format);
- retval = g_vsnprintf (string, n, format, args);
- va_end (args);
-
- return retval;
-}
-
-/**
- * g_vprintf:
- * @format: a standard printf() format string, but notice
- * <link linkend="string-precision">string precision pitfalls</link>.
- * @args: the list of arguments to insert in the output.
- *
- * An implementation of the standard vprintf() function which supports
- * positional parameters, as specified in the Single Unix Specification.
- *
- * Returns: the number of bytes printed.
- *
- * Since: 2.2
- **/
-gint
-g_vprintf (gchar const *format,
- va_list args)
-{
- g_return_val_if_fail (format != NULL, -1);
-
- return _g_vprintf (format, args);
-}
-
-/**
- * g_vfprintf:
- * @file: the stream to write to.
- * @format: a standard printf() format string, but notice
- * <link linkend="string-precision">string precision pitfalls</link>.
- * @args: the list of arguments to insert in the output.
- *
- * An implementation of the standard fprintf() function which supports
- * positional parameters, as specified in the Single Unix Specification.
- *
- * Returns: the number of bytes printed.
- *
- * Since: 2.2
- **/
-gint
-g_vfprintf (FILE *file,
- gchar const *format,
- va_list args)
-{
- g_return_val_if_fail (format != NULL, -1);
-
- return _g_vfprintf (file, format, args);
-}
-
-/**
- * g_vsprintf:
- * @string: the buffer to hold the output.
- * @format: a standard printf() format string, but notice
- * <link linkend="string-precision">string precision pitfalls</link>.
- * @args: the list of arguments to insert in the output.
- *
- * An implementation of the standard vsprintf() function which supports
- * positional parameters, as specified in the Single Unix Specification.
- *
- * Returns: the number of bytes printed.
- *
- * Since: 2.2
- **/
-gint
-g_vsprintf (gchar *string,
- gchar const *format,
- va_list args)
-{
- g_return_val_if_fail (string != NULL, -1);
- g_return_val_if_fail (format != NULL, -1);
-
- return _g_vsprintf (string, format, args);
-}
-
-/**
- * g_vsnprintf:
- * @string: the buffer to hold the output.
- * @n: the maximum number of bytes to produce (including the
- * terminating nul character).
- * @format: a standard printf() format string, but notice
- * <link linkend="string-precision">string precision pitfalls</link>.
- * @args: the list of arguments to insert in the output.
- *
- * A safer form of the standard vsprintf() function. The output is guaranteed
- * to not exceed @n characters (including the terminating nul character), so
- * it is easy to ensure that a buffer overflow cannot occur.
- *
- * See also g_strdup_vprintf().
- *
- * In versions of GLib prior to 1.2.3, this function may return -1 if the
- * output was truncated, and the truncated string may not be nul-terminated.
- * In versions prior to 1.3.12, this function returns the length of the output
- * string.
- *
- * The return value of g_vsnprintf() conforms to the vsnprintf() function
- * as standardized in ISO C99. Note that this is different from traditional
- * vsnprintf(), which returns the length of the output string.
- *
- * The format string may contain positional parameters, as specified in
- * the Single Unix Specification.
- *
- * Returns: the number of bytes which would be produced if the buffer
- * was large enough.
- */
-gint
-g_vsnprintf (gchar *string,
- gulong n,
- gchar const *format,
- va_list args)
-{
- g_return_val_if_fail (n == 0 || string != NULL, -1);
- g_return_val_if_fail (format != NULL, -1);
-
- return _g_vsnprintf (string, n, format, args);
-}
-
-/**
- * g_vasprintf:
- * @string: the return location for the newly-allocated string.
- * @format: a standard printf() format string, but notice
- * <link linkend="string-precision">string precision pitfalls</link>.
- * @args: the list of arguments to insert in the output.
- *
- * An implementation of the GNU vasprintf() function which supports
- * positional parameters, as specified in the Single Unix Specification.
- * This function is similar to g_vsprintf(), except that it allocates a
- * string to hold the output, instead of putting the output in a buffer
- * you allocate in advance.
- *
- * Returns: the number of bytes printed.
- *
- * Since: 2.4
- **/
-gint
-g_vasprintf (gchar **string,
- gchar const *format,
- va_list args)
-{
- gint len;
- g_return_val_if_fail (string != NULL, -1);
-
-#if !defined(HAVE_GOOD_PRINTF)
-
- len = _g_gnulib_vasprintf (string, format, args);
- if (len < 0)
- *string = NULL;
-
-#elif defined (HAVE_VASPRINTF)
-
- len = vasprintf (string, format, args);
- if (len < 0)
- *string = NULL;
- else if (!g_mem_is_system_malloc ())
- {
- /* vasprintf returns malloc-allocated memory */
- gchar *string1 = g_strndup (*string, len);
- free (*string);
- *string = string1;
- }
-
-#else
-
- {
- va_list args2;
-
- G_VA_COPY (args2, args);
-
- *string = g_new (gchar, g_printf_string_upper_bound (format, args));
-
- len = _g_vsprintf (*string, format, args2);
- va_end (args2);
- }
-#endif
-
- return len;
-}
-
-#define __G_PRINTF_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gprintf.h b/navit/support/glib/gprintf.h
deleted file mode 100644
index d96870fb4..000000000
--- a/navit/support/glib/gprintf.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997, 2002 Peter Mattis, Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __G_PRINTF_H__
-#define __G_PRINTF_H__
-
-#include <glib.h>
-#include <stdio.h>
-#include <stdarg.h>
-
-G_BEGIN_DECLS
-
-gint g_printf (gchar const *format,
- ...) G_GNUC_PRINTF (1, 2);
-gint g_fprintf (FILE *file,
- gchar const *format,
- ...) G_GNUC_PRINTF (2, 3);
-gint g_sprintf (gchar *string,
- gchar const *format,
- ...) G_GNUC_PRINTF (2, 3);
-
-gint g_vprintf (gchar const *format,
- va_list args);
-gint g_vfprintf (FILE *file,
- gchar const *format,
- va_list args);
-gint g_vsprintf (gchar *string,
- gchar const *format,
- va_list args);
-gint g_vasprintf (gchar **string,
- gchar const *format,
- va_list args);
-
-G_END_DECLS
-
-#endif /* __G_PRINTF_H__ */
diff --git a/navit/support/glib/gprintfint.h b/navit/support/glib/gprintfint.h
deleted file mode 100644
index 917856acd..000000000
--- a/navit/support/glib/gprintfint.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 2002. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef __G_PRINTFINT_H__
-#define __G_PRINTFINT_H__
-#ifdef HAVE_API_WIN32_BASE
-#include <glibintl.h>
-#endif
-#ifdef HAVE_API_WIN32_CE
-#include "libc.h"
-#endif
-
-#ifdef HAVE_GOOD_PRINTF
-
-#define _g_printf printf
-#define _g_fprintf fprintf
-#define _g_sprintf sprintf
-#ifdef _MSC_VER
-#define _g_snprintf _snprintf
-#else
-#define _g_snprintf snprintf
-#endif
-
-#define _g_vprintf vprintf
-#define _g_vfprintf vfprintf
-#define _g_vsprintf vsprintf
-#define _g_vsnprintf vsnprintf
-
-#else
-
-#include "gnulib/printf.h"
-
-#define _g_printf _g_gnulib_printf
-#define _g_fprintf _g_gnulib_fprintf
-#define _g_sprintf _g_gnulib_sprintf
-#define _g_snprintf _g_gnulib_snprintf
-
-#define _g_vprintf _g_gnulib_vprintf
-#define _g_vfprintf _g_gnulib_vfprintf
-#define _g_vsprintf _g_gnulib_vsprintf
-#define _g_vsnprintf _g_gnulib_vsnprintf
-
-#endif
-
-#endif /* __G_PRINTF_H__ */
-
diff --git a/navit/support/glib/gquark.h b/navit/support/glib/gquark.h
deleted file mode 100644
index a0cbe2fd7..000000000
--- a/navit/support/glib/gquark.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_QUARK_H__
-#define __G_QUARK_H__
-
-#include <glib/gtypes.h>
-
-G_BEGIN_DECLS
-
-typedef guint32 GQuark;
-
-/* Quarks (string<->id association)
- */
-GQuark g_quark_try_string (const gchar *string);
-GQuark g_quark_from_static_string (const gchar *string);
-GQuark g_quark_from_string (const gchar *string);
-G_CONST_RETURN gchar* g_quark_to_string (GQuark quark) G_GNUC_CONST;
-
-G_CONST_RETURN gchar* g_intern_string (const gchar *string);
-G_CONST_RETURN gchar* g_intern_static_string (const gchar *string);
-
-G_END_DECLS
-
-#endif /* __G_QUARK_H__ */
diff --git a/navit/support/glib/gslice.c b/navit/support/glib/gslice.c
deleted file mode 100644
index 29165bc5a..000000000
--- a/navit/support/glib/gslice.c
+++ /dev/null
@@ -1,1496 +0,0 @@
-/* GLIB sliced memory - fast concurrent memory chunk allocator
- * Copyright (C) 2005 Tim Janik
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-/* MT safe */
-
-#include "config.h"
-
-#if defined HAVE_POSIX_MEMALIGN && defined POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS
-# define HAVE_COMPLIANT_POSIX_MEMALIGN 1
-#endif
-
-#ifdef HAVE_COMPLIANT_POSIX_MEMALIGN
-#define _XOPEN_SOURCE 600 /* posix_memalign() */
-#endif
-#include <stdlib.h> /* posix_memalign() */
-#include <string.h>
-#include <errno.h>
-#include "gmem.h" /* gslice.h */
-#include "gthreadprivate.h"
-#include "glib.h"
-#include "galias.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h> /* sysconf() */
-#endif
-#ifdef G_OS_WIN32
-#include <windows.h>
-#include <process.h>
-#endif
-
-#include <stdio.h> /* fputs/fprintf */
-
-
-/* the GSlice allocator is split up into 4 layers, roughly modelled after the slab
- * allocator and magazine extensions as outlined in:
- * + [Bonwick94] Jeff Bonwick, The slab allocator: An object-caching kernel
- * memory allocator. USENIX 1994, http://citeseer.ist.psu.edu/bonwick94slab.html
- * + [Bonwick01] Bonwick and Jonathan Adams, Magazines and vmem: Extending the
- * slab allocator to many cpu's and arbitrary resources.
- * USENIX 2001, http://citeseer.ist.psu.edu/bonwick01magazines.html
- * the layers are:
- * - the thread magazines. for each (aligned) chunk size, a magazine (a list)
- * of recently freed and soon to be allocated chunks is maintained per thread.
- * this way, most alloc/free requests can be quickly satisfied from per-thread
- * free lists which only require one g_private_get() call to retrive the
- * thread handle.
- * - the magazine cache. allocating and freeing chunks to/from threads only
- * occours at magazine sizes from a global depot of magazines. the depot
- * maintaines a 15 second working set of allocated magazines, so full
- * magazines are not allocated and released too often.
- * the chunk size dependent magazine sizes automatically adapt (within limits,
- * see [3]) to lock contention to properly scale performance across a variety
- * of SMP systems.
- * - the slab allocator. this allocator allocates slabs (blocks of memory) close
- * to the system page size or multiples thereof which have to be page aligned.
- * the blocks are divided into smaller chunks which are used to satisfy
- * allocations from the upper layers. the space provided by the reminder of
- * the chunk size division is used for cache colorization (random distribution
- * of chunk addresses) to improve processor cache utilization. multiple slabs
- * with the same chunk size are kept in a partially sorted ring to allow O(1)
- * freeing and allocation of chunks (as long as the allocation of an entirely
- * new slab can be avoided).
- * - the page allocator. on most modern systems, posix_memalign(3) or
- * memalign(3) should be available, so this is used to allocate blocks with
- * system page size based alignments and sizes or multiples thereof.
- * if no memalign variant is provided, valloc() is used instead and
- * block sizes are limited to the system page size (no multiples thereof).
- * as a fallback, on system without even valloc(), a malloc(3)-based page
- * allocator with alloc-only behaviour is used.
- *
- * NOTES:
- * [1] some systems memalign(3) implementations may rely on boundary tagging for
- * the handed out memory chunks. to avoid excessive page-wise fragmentation,
- * we reserve 2 * sizeof (void*) per block size for the systems memalign(3),
- * specified in NATIVE_MALLOC_PADDING.
- * [2] using the slab allocator alone already provides for a fast and efficient
- * allocator, it doesn't properly scale beyond single-threaded uses though.
- * also, the slab allocator implements eager free(3)-ing, i.e. does not
- * provide any form of caching or working set maintenance. so if used alone,
- * it's vulnerable to trashing for sequences of balanced (alloc, free) pairs
- * at certain thresholds.
- * [3] magazine sizes are bound by an implementation specific minimum size and
- * a chunk size specific maximum to limit magazine storage sizes to roughly
- * 16KB.
- * [4] allocating ca. 8 chunks per block/page keeps a good balance between
- * external and internal fragmentation (<= 12.5%). [Bonwick94]
- */
-
-/* --- macros and constants --- */
-#define LARGEALIGNMENT (256)
-#define P2ALIGNMENT (2 * sizeof (gsize)) /* fits 2 pointers (assumed to be 2 * GLIB_SIZEOF_SIZE_T below) */
-#define ALIGN(size, base) ((base) * (gsize) (((size) + (base) - 1) / (base)))
-#define NATIVE_MALLOC_PADDING 0 /* per-page padding left for native malloc(3) see [1] */
-#define SLAB_INFO_SIZE P2ALIGN (sizeof (SlabInfo) + NATIVE_MALLOC_PADDING)
-#define MAX_MAGAZINE_SIZE (256) /* see [3] and allocator_get_magazine_threshold() for this */
-#define MIN_MAGAZINE_SIZE (4)
-#define MAX_STAMP_COUNTER (7) /* distributes the load of gettimeofday() */
-#define MAX_SLAB_CHUNK_SIZE(al) (((al)->max_page_size - SLAB_INFO_SIZE) / 8) /* we want at last 8 chunks per page, see [4] */
-#define MAX_SLAB_INDEX(al) (SLAB_INDEX (al, MAX_SLAB_CHUNK_SIZE (al)) + 1)
-#define SLAB_INDEX(al, asize) ((asize) / P2ALIGNMENT - 1) /* asize must be P2ALIGNMENT aligned */
-#define SLAB_CHUNK_SIZE(al, ix) (((ix) + 1) * P2ALIGNMENT)
-#define SLAB_BPAGE_SIZE(al,csz) (8 * (csz) + SLAB_INFO_SIZE)
-
-/* optimized version of ALIGN (size, P2ALIGNMENT) */
-#if GLIB_SIZEOF_SIZE_T * 2 == 8 /* P2ALIGNMENT */
-#define P2ALIGN(size) (((size) + 0x7) & ~(gsize) 0x7)
-#elif GLIB_SIZEOF_SIZE_T * 2 == 16 /* P2ALIGNMENT */
-#define P2ALIGN(size) (((size) + 0xf) & ~(gsize) 0xf)
-#else
-#define P2ALIGN(size) ALIGN (size, P2ALIGNMENT)
-#endif
-
-/* special helpers to avoid gmessage.c dependency */
-static void mem_error (const char *format, ...) G_GNUC_PRINTF (1,2);
-#define mem_assert(cond) do { if (G_LIKELY (cond)) ; else mem_error ("assertion failed: %s", #cond); } while (0)
-
-/* --- structures --- */
-typedef struct _ChunkLink ChunkLink;
-typedef struct _SlabInfo SlabInfo;
-typedef struct _CachedMagazine CachedMagazine;
-struct _ChunkLink {
- ChunkLink *next;
- ChunkLink *data;
-};
-struct _SlabInfo {
- ChunkLink *chunks;
- guint n_allocated;
- SlabInfo *next, *prev;
-};
-typedef struct {
- ChunkLink *chunks;
- gsize count; /* approximative chunks list length */
-} Magazine;
-typedef struct {
- Magazine *magazine1; /* array of MAX_SLAB_INDEX (allocator) */
- Magazine *magazine2; /* array of MAX_SLAB_INDEX (allocator) */
-} ThreadMemory;
-typedef struct {
- gboolean always_malloc;
- gboolean bypass_magazines;
- gboolean debug_blocks;
- gsize working_set_msecs;
- guint color_increment;
-} SliceConfig;
-typedef struct {
- /* const after initialization */
- gsize min_page_size, max_page_size;
- SliceConfig config;
- gsize max_slab_chunk_size_for_magazine_cache;
- /* magazine cache */
- GMutex *magazine_mutex;
- ChunkLink **magazines; /* array of MAX_SLAB_INDEX (allocator) */
- guint *contention_counters; /* array of MAX_SLAB_INDEX (allocator) */
- gint mutex_counter;
- guint stamp_counter;
- guint last_stamp;
- /* slab allocator */
- GMutex *slab_mutex;
- SlabInfo **slab_stack; /* array of MAX_SLAB_INDEX (allocator) */
- guint color_accu;
-} Allocator;
-
-/* --- g-slice prototypes --- */
-static gpointer slab_allocator_alloc_chunk (gsize chunk_size);
-static void slab_allocator_free_chunk (gsize chunk_size,
- gpointer mem);
-static void private_thread_memory_cleanup (gpointer data);
-static gpointer allocator_memalign (gsize alignment,
- gsize memsize);
-static void allocator_memfree (gsize memsize,
- gpointer mem);
-static inline void magazine_cache_update_stamp (void);
-static inline gsize allocator_get_magazine_threshold (Allocator *allocator,
- guint ix);
-
-/* --- g-slice memory checker --- */
-static void smc_notify_alloc (void *pointer,
- size_t size);
-static int smc_notify_free (void *pointer,
- size_t size);
-
-/* --- variables --- */
-static GPrivate *private_thread_memory = NULL;
-static gsize sys_page_size = 0;
-static gsize sys_valignment = ((32*1024*1024));
-static guint8 *virtual_mem = 0;
-static Allocator allocator[1] = { { 0, }, };
-static SliceConfig slice_config = {
- FALSE, /* always_malloc */
- FALSE, /* bypass_magazines */
- FALSE, /* debug_blocks */
- 15 * 1000, /* working_set_msecs */
- 1, /* color increment, alt: 0x7fffffff */
-};
-static GMutex *smc_tree_mutex = NULL; /* mutex for G_SLICE=debug-blocks */
-
-/* --- auxillary funcitons --- */
-void
-g_slice_set_config (GSliceConfig ckey,
- gint64 value)
-{
- g_return_if_fail (sys_page_size == 0);
- switch (ckey)
- {
- case G_SLICE_CONFIG_ALWAYS_MALLOC:
- slice_config.always_malloc = value != 0;
- break;
- case G_SLICE_CONFIG_BYPASS_MAGAZINES:
- slice_config.bypass_magazines = value != 0;
- break;
- case G_SLICE_CONFIG_WORKING_SET_MSECS:
- slice_config.working_set_msecs = value;
- break;
- case G_SLICE_CONFIG_COLOR_INCREMENT:
- slice_config.color_increment = value;
- default: ;
- }
-}
-
-gint64
-g_slice_get_config (GSliceConfig ckey)
-{
- switch (ckey)
- {
- case G_SLICE_CONFIG_ALWAYS_MALLOC:
- return slice_config.always_malloc;
- case G_SLICE_CONFIG_BYPASS_MAGAZINES:
- return slice_config.bypass_magazines;
- case G_SLICE_CONFIG_WORKING_SET_MSECS:
- return slice_config.working_set_msecs;
- case G_SLICE_CONFIG_CHUNK_SIZES:
- return MAX_SLAB_INDEX (allocator);
- case G_SLICE_CONFIG_COLOR_INCREMENT:
- return slice_config.color_increment;
- default:
- return 0;
- }
-}
-
-gint64*
-g_slice_get_config_state (GSliceConfig ckey,
- gint64 address,
- guint *n_values)
-{
- guint i = 0;
- g_return_val_if_fail (n_values != NULL, NULL);
- *n_values = 0;
- switch (ckey)
- {
- gint64 array[64];
- case G_SLICE_CONFIG_CONTENTION_COUNTER:
- array[i++] = SLAB_CHUNK_SIZE (allocator, address);
- array[i++] = allocator->contention_counters[address];
- array[i++] = allocator_get_magazine_threshold (allocator, address);
- *n_values = i;
- return g_memdup (array, sizeof (array[0]) * *n_values);
- default:
- return NULL;
- }
-}
-
-static void
-slice_config_init (SliceConfig *config)
-{
- /* don't use g_malloc/g_message here */
-#if NOT_NEEDED_FOR_NAVIT
- gchar buffer[1024];
- const gchar *val = _g_getenv_nomalloc ("G_SLICE", buffer);
- const GDebugKey keys[] = {
- { "always-malloc", 1 << 0 },
- { "debug-blocks", 1 << 1 },
- };
- gint flags = !val ? 0 : g_parse_debug_string (val, keys, G_N_ELEMENTS (keys));
-#endif
- *config = slice_config;
-#if NOT_NEEDED_FOR_NAVIT
- if (flags & (1 << 0)) /* always-malloc */
- config->always_malloc = TRUE;
- if (flags & (1 << 1)) /* debug-blocks */
- config->debug_blocks = TRUE;
-#endif
-}
-
-static void
-g_slice_init_nomessage (void)
-{
- /* we may not use g_error() or friends here */
- mem_assert (sys_page_size == 0);
- mem_assert (MIN_MAGAZINE_SIZE >= 4);
-
-#ifdef G_OS_WIN32
- {
- SYSTEM_INFO system_info;
- GetSystemInfo (&system_info);
- sys_page_size = system_info.dwPageSize;
- virtual_mem = VirtualAlloc (NULL, sys_valignment, MEM_RESERVE, PAGE_NOACCESS);
-// sys_valignment = system_info.dwAllocationGranularity;
- //sys_valignment = 2*1024*1024 + sys_page_size;
- printf("SPAGE_SIZE: %d, SVALIGN:%d\n", sys_page_size, sys_valignment);
- }
-#else
- sys_page_size = sysconf (_SC_PAGESIZE); /* = sysconf (_SC_PAGE_SIZE); = getpagesize(); */
- sys_valignment = sys_page_size;
-#endif
- mem_assert (sys_page_size >= 2 * LARGEALIGNMENT);
- mem_assert ((sys_page_size & (sys_page_size - 1)) == 0);
- slice_config_init (&allocator->config);
- allocator->min_page_size = sys_page_size;
-#if HAVE_COMPLIANT_POSIX_MEMALIGN || HAVE_MEMALIGN
- /* allow allocation of pages up to 8KB (with 8KB alignment).
- * this is useful because many medium to large sized structures
- * fit less than 8 times (see [4]) into 4KB pages.
- * we allow very small page sizes here, to reduce wastage in
- * threads if only small allocations are required (this does
- * bear the risk of incresing allocation times and fragmentation
- * though).
- */
- allocator->min_page_size = MAX (allocator->min_page_size, 4096);
- allocator->max_page_size = MAX (allocator->min_page_size, 8192);
- allocator->min_page_size = MIN (allocator->min_page_size, 128);
-#else
- /* we can only align to system page size */
- allocator->max_page_size = sys_page_size;
-#endif
- allocator->magazine_mutex = NULL; /* _g_slice_thread_init_nomessage() */
- allocator->magazines = g_new0 (ChunkLink*, MAX_SLAB_INDEX (allocator));
- allocator->contention_counters = g_new0 (guint, MAX_SLAB_INDEX (allocator));
- allocator->mutex_counter = 0;
- allocator->stamp_counter = MAX_STAMP_COUNTER; /* force initial update */
- allocator->last_stamp = 0;
- allocator->slab_mutex = NULL; /* _g_slice_thread_init_nomessage() */
- allocator->slab_stack = g_new0 (SlabInfo*, MAX_SLAB_INDEX (allocator));
- allocator->color_accu = 0;
- magazine_cache_update_stamp();
- /* values cached for performance reasons */
- allocator->max_slab_chunk_size_for_magazine_cache = MAX_SLAB_CHUNK_SIZE (allocator);
- if (allocator->config.always_malloc || allocator->config.bypass_magazines)
- allocator->max_slab_chunk_size_for_magazine_cache = 0; /* non-optimized cases */
- /* at this point, g_mem_gc_friendly() should be initialized, this
- * should have been accomplished by the above g_malloc/g_new calls
- */
-}
-
-static inline guint
-allocator_categorize (gsize aligned_chunk_size)
-{
- /* speed up the likely path */
- if (G_LIKELY (aligned_chunk_size && aligned_chunk_size <= allocator->max_slab_chunk_size_for_magazine_cache))
- return 1; /* use magazine cache */
-
- /* the above will fail (max_slab_chunk_size_for_magazine_cache == 0) if the
- * allocator is still uninitialized, or if we are not configured to use the
- * magazine cache.
- */
- if (!sys_page_size)
- g_slice_init_nomessage ();
- if (!allocator->config.always_malloc &&
- aligned_chunk_size &&
- aligned_chunk_size <= MAX_SLAB_CHUNK_SIZE (allocator))
- {
- if (allocator->config.bypass_magazines)
- return 2; /* use slab allocator, see [2] */
- return 1; /* use magazine cache */
- }
- return 0; /* use malloc() */
-}
-
-void
-_g_slice_thread_init_nomessage (void)
-{
- /* we may not use g_error() or friends here */
- if (!sys_page_size)
- g_slice_init_nomessage();
- else
- {
- /* g_slice_init_nomessage() has been called already, probably due
- * to a g_slice_alloc1() before g_thread_init().
- */
- }
- private_thread_memory = g_private_new (private_thread_memory_cleanup);
- allocator->magazine_mutex = g_mutex_new();
- allocator->slab_mutex = g_mutex_new();
- if (allocator->config.debug_blocks)
- smc_tree_mutex = g_mutex_new();
-}
-
-static inline void
-g_mutex_lock_a (GMutex *mutex,
- guint *contention_counter)
-{
- gboolean contention = FALSE;
- if (!g_mutex_trylock (mutex))
- {
- g_mutex_lock (mutex);
- contention = TRUE;
- }
- if (contention)
- {
- allocator->mutex_counter++;
- if (allocator->mutex_counter >= 1) /* quickly adapt to contention */
- {
- allocator->mutex_counter = 0;
- *contention_counter = MIN (*contention_counter + 1, MAX_MAGAZINE_SIZE);
- }
- }
- else /* !contention */
- {
- allocator->mutex_counter--;
- if (allocator->mutex_counter < -11) /* moderately recover magazine sizes */
- {
- allocator->mutex_counter = 0;
- *contention_counter = MAX (*contention_counter, 1) - 1;
- }
- }
-}
-
-static inline ThreadMemory*
-thread_memory_from_self (void)
-{
- ThreadMemory *tmem = g_private_get (private_thread_memory);
- if (G_UNLIKELY (!tmem))
- {
- static ThreadMemory *single_thread_memory = NULL; /* remember single-thread info for multi-threaded case */
- if (single_thread_memory && g_thread_supported ())
- {
- g_mutex_lock (allocator->slab_mutex);
- if (single_thread_memory)
- {
- /* GSlice has been used before g_thread_init(), and now
- * we are running threaded. to cope with it, use the saved
- * thread memory structure from when we weren't threaded.
- */
- tmem = single_thread_memory;
- single_thread_memory = NULL; /* slab_mutex protected when multi-threaded */
- }
- g_mutex_unlock (allocator->slab_mutex);
- }
- if (!tmem)
- {
- const guint n_magazines = MAX_SLAB_INDEX (allocator);
- tmem = g_malloc0 (sizeof (ThreadMemory) + sizeof (Magazine) * 2 * n_magazines);
- tmem->magazine1 = (Magazine*) (tmem + 1);
- tmem->magazine2 = &tmem->magazine1[n_magazines];
- }
- /* g_private_get/g_private_set works in the single-threaded xor the multi-
- * threaded case. but not *across* g_thread_init(), after multi-thread
- * initialization it returns NULL for previously set single-thread data.
- */
- g_private_set (private_thread_memory, tmem);
- /* save single-thread thread memory structure, in case we need to
- * pick it up again after multi-thread initialization happened.
- */
- if (!single_thread_memory && !g_thread_supported ())
- single_thread_memory = tmem; /* no slab_mutex created yet */
- }
- return tmem;
-}
-
-static inline ChunkLink*
-magazine_chain_pop_head (ChunkLink **magazine_chunks)
-{
- /* magazine chains are linked via ChunkLink->next.
- * each ChunkLink->data of the toplevel chain may point to a subchain,
- * linked via ChunkLink->next. ChunkLink->data of the subchains just
- * contains uninitialized junk.
- */
- ChunkLink *chunk = (*magazine_chunks)->data;
- if (G_UNLIKELY (chunk))
- {
- /* allocating from freed list */
- (*magazine_chunks)->data = chunk->next;
- }
- else
- {
- chunk = *magazine_chunks;
- *magazine_chunks = chunk->next;
- }
- return chunk;
-}
-
-#if 0 /* useful for debugging */
-static guint
-magazine_count (ChunkLink *head)
-{
- guint count = 0;
- if (!head)
- return 0;
- while (head)
- {
- ChunkLink *child = head->data;
- count += 1;
- for (child = head->data; child; child = child->next)
- count += 1;
- head = head->next;
- }
- return count;
-}
-#endif
-
-static inline gsize
-allocator_get_magazine_threshold (Allocator *allocator,
- guint ix)
-{
- /* the magazine size calculated here has a lower bound of MIN_MAGAZINE_SIZE,
- * which is required by the implementation. also, for moderately sized chunks
- * (say >= 64 bytes), magazine sizes shouldn't be much smaller then the number
- * of chunks available per page/2 to avoid excessive traffic in the magazine
- * cache for small to medium sized structures.
- * the upper bound of the magazine size is effectively provided by
- * MAX_MAGAZINE_SIZE. for larger chunks, this number is scaled down so that
- * the content of a single magazine doesn't exceed ca. 16KB.
- */
- gsize chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
- guint threshold = MAX (MIN_MAGAZINE_SIZE, allocator->max_page_size / MAX (5 * chunk_size, 5 * 32));
- guint contention_counter = allocator->contention_counters[ix];
- if (G_UNLIKELY (contention_counter)) /* single CPU bias */
- {
- /* adapt contention counter thresholds to chunk sizes */
- contention_counter = contention_counter * 64 / chunk_size;
- threshold = MAX (threshold, contention_counter);
- }
- return threshold;
-}
-
-/* --- magazine cache --- */
-static inline void
-magazine_cache_update_stamp (void)
-{
- if (allocator->stamp_counter >= MAX_STAMP_COUNTER)
- {
- GTimeVal tv;
- g_get_current_time (&tv);
- allocator->last_stamp = tv.tv_sec * 1000 + tv.tv_usec / 1000; /* milli seconds */
- allocator->stamp_counter = 0;
- }
- else
- allocator->stamp_counter++;
-}
-
-static inline ChunkLink*
-magazine_chain_prepare_fields (ChunkLink *magazine_chunks)
-{
- ChunkLink *chunk1;
- ChunkLink *chunk2;
- ChunkLink *chunk3;
- ChunkLink *chunk4;
- /* checked upon initialization: mem_assert (MIN_MAGAZINE_SIZE >= 4); */
- /* ensure a magazine with at least 4 unused data pointers */
- chunk1 = magazine_chain_pop_head (&magazine_chunks);
- chunk2 = magazine_chain_pop_head (&magazine_chunks);
- chunk3 = magazine_chain_pop_head (&magazine_chunks);
- chunk4 = magazine_chain_pop_head (&magazine_chunks);
- chunk4->next = magazine_chunks;
- chunk3->next = chunk4;
- chunk2->next = chunk3;
- chunk1->next = chunk2;
- return chunk1;
-}
-
-/* access the first 3 fields of a specially prepared magazine chain */
-#define magazine_chain_prev(mc) ((mc)->data)
-#define magazine_chain_stamp(mc) ((mc)->next->data)
-#define magazine_chain_uint_stamp(mc) GPOINTER_TO_UINT ((mc)->next->data)
-#define magazine_chain_next(mc) ((mc)->next->next->data)
-#define magazine_chain_count(mc) ((mc)->next->next->next->data)
-
-static void
-magazine_cache_trim (Allocator *allocator,
- guint ix,
- guint stamp)
-{
- /* g_mutex_lock (allocator->mutex); done by caller */
- /* trim magazine cache from tail */
- ChunkLink *current = magazine_chain_prev (allocator->magazines[ix]);
- ChunkLink *trash = NULL;
- while (ABS (stamp - magazine_chain_uint_stamp (current)) >= allocator->config.working_set_msecs)
- {
- /* unlink */
- ChunkLink *prev = magazine_chain_prev (current);
- ChunkLink *next = magazine_chain_next (current);
- magazine_chain_next (prev) = next;
- magazine_chain_prev (next) = prev;
- /* clear special fields, put on trash stack */
- magazine_chain_next (current) = NULL;
- magazine_chain_count (current) = NULL;
- magazine_chain_stamp (current) = NULL;
- magazine_chain_prev (current) = trash;
- trash = current;
- /* fixup list head if required */
- if (current == allocator->magazines[ix])
- {
- allocator->magazines[ix] = NULL;
- break;
- }
- current = prev;
- }
- g_mutex_unlock (allocator->magazine_mutex);
- /* free trash */
- if (trash)
- {
- const gsize chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
- g_mutex_lock (allocator->slab_mutex);
- while (trash)
- {
- current = trash;
- trash = magazine_chain_prev (current);
- magazine_chain_prev (current) = NULL; /* clear special field */
- while (current)
- {
- ChunkLink *chunk = magazine_chain_pop_head (&current);
- slab_allocator_free_chunk (chunk_size, chunk);
- }
- }
- g_mutex_unlock (allocator->slab_mutex);
- }
-}
-
-static void
-magazine_cache_push_magazine (guint ix,
- ChunkLink *magazine_chunks,
- gsize count) /* must be >= MIN_MAGAZINE_SIZE */
-{
- ChunkLink *current = magazine_chain_prepare_fields (magazine_chunks);
- ChunkLink *next, *prev;
- g_mutex_lock (allocator->magazine_mutex);
- /* add magazine at head */
- next = allocator->magazines[ix];
- if (next)
- prev = magazine_chain_prev (next);
- else
- next = prev = current;
- magazine_chain_next (prev) = current;
- magazine_chain_prev (next) = current;
- magazine_chain_prev (current) = prev;
- magazine_chain_next (current) = next;
- magazine_chain_count (current) = (gpointer) count;
- /* stamp magazine */
- magazine_cache_update_stamp();
- magazine_chain_stamp (current) = GUINT_TO_POINTER (allocator->last_stamp);
- allocator->magazines[ix] = current;
- /* free old magazines beyond a certain threshold */
- magazine_cache_trim (allocator, ix, allocator->last_stamp);
- /* g_mutex_unlock (allocator->mutex); was done by magazine_cache_trim() */
-}
-
-static ChunkLink*
-magazine_cache_pop_magazine (guint ix,
- gsize *countp)
-{
- g_mutex_lock_a (allocator->magazine_mutex, &allocator->contention_counters[ix]);
- if (!allocator->magazines[ix])
- {
- guint magazine_threshold = allocator_get_magazine_threshold (allocator, ix);
- gsize i, chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
- ChunkLink *chunk, *head;
- g_mutex_unlock (allocator->magazine_mutex);
- g_mutex_lock (allocator->slab_mutex);
- head = slab_allocator_alloc_chunk (chunk_size);
- head->data = NULL;
- chunk = head;
- for (i = 1; i < magazine_threshold; i++)
- {
- chunk->next = slab_allocator_alloc_chunk (chunk_size);
- chunk = chunk->next;
- chunk->data = NULL;
- }
- chunk->next = NULL;
- g_mutex_unlock (allocator->slab_mutex);
- *countp = i;
- return head;
- }
- else
- {
- ChunkLink *current = allocator->magazines[ix];
- ChunkLink *prev = magazine_chain_prev (current);
- ChunkLink *next = magazine_chain_next (current);
- /* unlink */
- magazine_chain_next (prev) = next;
- magazine_chain_prev (next) = prev;
- allocator->magazines[ix] = next == current ? NULL : next;
- g_mutex_unlock (allocator->magazine_mutex);
- /* clear special fields and hand out */
- *countp = (gsize) magazine_chain_count (current);
- magazine_chain_prev (current) = NULL;
- magazine_chain_next (current) = NULL;
- magazine_chain_count (current) = NULL;
- magazine_chain_stamp (current) = NULL;
- return current;
- }
-}
-
-/* --- thread magazines --- */
-static void
-private_thread_memory_cleanup (gpointer data)
-{
- ThreadMemory *tmem = data;
- const guint n_magazines = MAX_SLAB_INDEX (allocator);
- guint ix;
- for (ix = 0; ix < n_magazines; ix++)
- {
- Magazine *mags[2];
- guint j;
- mags[0] = &tmem->magazine1[ix];
- mags[1] = &tmem->magazine2[ix];
- for (j = 0; j < 2; j++)
- {
- Magazine *mag = mags[j];
- if (mag->count >= MIN_MAGAZINE_SIZE)
- magazine_cache_push_magazine (ix, mag->chunks, mag->count);
- else
- {
- const gsize chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
- g_mutex_lock (allocator->slab_mutex);
- while (mag->chunks)
- {
- ChunkLink *chunk = magazine_chain_pop_head (&mag->chunks);
- slab_allocator_free_chunk (chunk_size, chunk);
- }
- g_mutex_unlock (allocator->slab_mutex);
- }
- }
- }
- g_free (tmem);
-}
-
-static void
-thread_memory_magazine1_reload (ThreadMemory *tmem,
- guint ix)
-{
- Magazine *mag = &tmem->magazine1[ix];
- mem_assert (mag->chunks == NULL); /* ensure that we may reset mag->count */
- mag->count = 0;
- mag->chunks = magazine_cache_pop_magazine (ix, &mag->count);
-}
-
-static void
-thread_memory_magazine2_unload (ThreadMemory *tmem,
- guint ix)
-{
- Magazine *mag = &tmem->magazine2[ix];
- magazine_cache_push_magazine (ix, mag->chunks, mag->count);
- mag->chunks = NULL;
- mag->count = 0;
-}
-
-static inline void
-thread_memory_swap_magazines (ThreadMemory *tmem,
- guint ix)
-{
- Magazine xmag = tmem->magazine1[ix];
- tmem->magazine1[ix] = tmem->magazine2[ix];
- tmem->magazine2[ix] = xmag;
-}
-
-static inline gboolean
-thread_memory_magazine1_is_empty (ThreadMemory *tmem,
- guint ix)
-{
- return tmem->magazine1[ix].chunks == NULL;
-}
-
-static inline gboolean
-thread_memory_magazine2_is_full (ThreadMemory *tmem,
- guint ix)
-{
- return tmem->magazine2[ix].count >= allocator_get_magazine_threshold (allocator, ix);
-}
-
-static inline gpointer
-thread_memory_magazine1_alloc (ThreadMemory *tmem,
- guint ix)
-{
- Magazine *mag = &tmem->magazine1[ix];
- ChunkLink *chunk = magazine_chain_pop_head (&mag->chunks);
- if (G_LIKELY (mag->count > 0))
- mag->count--;
- return chunk;
-}
-
-static inline void
-thread_memory_magazine2_free (ThreadMemory *tmem,
- guint ix,
- gpointer mem)
-{
- Magazine *mag = &tmem->magazine2[ix];
- ChunkLink *chunk = mem;
- chunk->data = NULL;
- chunk->next = mag->chunks;
- mag->chunks = chunk;
- mag->count++;
-}
-
-/* --- API functions --- */
-gpointer
-g_slice_alloc (gsize mem_size)
-{
- gsize chunk_size;
- gpointer mem;
- guint acat;
- chunk_size = P2ALIGN (mem_size);
- acat = allocator_categorize (chunk_size);
- if (G_LIKELY (acat == 1)) /* allocate through magazine layer */
- {
- ThreadMemory *tmem = thread_memory_from_self();
- guint ix = SLAB_INDEX (allocator, chunk_size);
- if (G_UNLIKELY (thread_memory_magazine1_is_empty (tmem, ix)))
- {
- thread_memory_swap_magazines (tmem, ix);
- if (G_UNLIKELY (thread_memory_magazine1_is_empty (tmem, ix)))
- thread_memory_magazine1_reload (tmem, ix);
- }
- mem = thread_memory_magazine1_alloc (tmem, ix);
- }
- else if (acat == 2) /* allocate through slab allocator */
- {
- g_mutex_lock (allocator->slab_mutex);
- mem = slab_allocator_alloc_chunk (chunk_size);
- g_mutex_unlock (allocator->slab_mutex);
- }
- else /* delegate to system malloc */
- mem = g_malloc (mem_size);
- if (G_UNLIKELY (allocator->config.debug_blocks))
- smc_notify_alloc (mem, mem_size);
- return mem;
-}
-
-gpointer
-g_slice_alloc0 (gsize mem_size)
-{
- gpointer mem = g_slice_alloc (mem_size);
- if (mem)
- memset (mem, 0, mem_size);
- return mem;
-}
-
-gpointer
-g_slice_copy (gsize mem_size,
- gconstpointer mem_block)
-{
- gpointer mem = g_slice_alloc (mem_size);
- if (mem)
- memcpy (mem, mem_block, mem_size);
- return mem;
-}
-
-void
-g_slice_free1 (gsize mem_size,
- gpointer mem_block)
-{
- gsize chunk_size = P2ALIGN (mem_size);
- guint acat = allocator_categorize (chunk_size);
- if (G_UNLIKELY (!mem_block))
- return;
- if (G_UNLIKELY (allocator->config.debug_blocks) &&
- !smc_notify_free (mem_block, mem_size))
- abort();
- if (G_LIKELY (acat == 1)) /* allocate through magazine layer */
- {
- ThreadMemory *tmem = thread_memory_from_self();
- guint ix = SLAB_INDEX (allocator, chunk_size);
- if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
- {
- thread_memory_swap_magazines (tmem, ix);
- if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
- thread_memory_magazine2_unload (tmem, ix);
- }
- if (G_UNLIKELY (g_mem_gc_friendly))
- memset (mem_block, 0, chunk_size);
- thread_memory_magazine2_free (tmem, ix, mem_block);
- }
- else if (acat == 2) /* allocate through slab allocator */
- {
- if (G_UNLIKELY (g_mem_gc_friendly))
- memset (mem_block, 0, chunk_size);
- g_mutex_lock (allocator->slab_mutex);
- slab_allocator_free_chunk (chunk_size, mem_block);
- g_mutex_unlock (allocator->slab_mutex);
- }
- else /* delegate to system malloc */
- {
- if (G_UNLIKELY (g_mem_gc_friendly))
- memset (mem_block, 0, mem_size);
- g_free (mem_block);
- }
-}
-
-void
-g_slice_free_chain_with_offset (gsize mem_size,
- gpointer mem_chain,
- gsize next_offset)
-{
- gpointer slice = mem_chain;
- /* while the thread magazines and the magazine cache are implemented so that
- * they can easily be extended to allow for free lists containing more free
- * lists for the first level nodes, which would allow O(1) freeing in this
- * function, the benefit of such an extension is questionable, because:
- * - the magazine size counts will become mere lower bounds which confuses
- * the code adapting to lock contention;
- * - freeing a single node to the thread magazines is very fast, so this
- * O(list_length) operation is multiplied by a fairly small factor;
- * - memory usage histograms on larger applications seem to indicate that
- * the amount of released multi node lists is negligible in comparison
- * to single node releases.
- * - the major performance bottle neck, namely g_private_get() or
- * g_mutex_lock()/g_mutex_unlock() has already been moved out of the
- * inner loop for freeing chained slices.
- */
- gsize chunk_size = P2ALIGN (mem_size);
- guint acat = allocator_categorize (chunk_size);
- if (G_LIKELY (acat == 1)) /* allocate through magazine layer */
- {
- ThreadMemory *tmem = thread_memory_from_self();
- guint ix = SLAB_INDEX (allocator, chunk_size);
- while (slice)
- {
- guint8 *current = slice;
- slice = *(gpointer*) (current + next_offset);
- if (G_UNLIKELY (allocator->config.debug_blocks) &&
- !smc_notify_free (current, mem_size))
- abort();
- if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
- {
- thread_memory_swap_magazines (tmem, ix);
- if (G_UNLIKELY (thread_memory_magazine2_is_full (tmem, ix)))
- thread_memory_magazine2_unload (tmem, ix);
- }
- if (G_UNLIKELY (g_mem_gc_friendly))
- memset (current, 0, chunk_size);
- thread_memory_magazine2_free (tmem, ix, current);
- }
- }
- else if (acat == 2) /* allocate through slab allocator */
- {
- g_mutex_lock (allocator->slab_mutex);
- while (slice)
- {
- guint8 *current = slice;
- slice = *(gpointer*) (current + next_offset);
- if (G_UNLIKELY (allocator->config.debug_blocks) &&
- !smc_notify_free (current, mem_size))
- abort();
- if (G_UNLIKELY (g_mem_gc_friendly))
- memset (current, 0, chunk_size);
- slab_allocator_free_chunk (chunk_size, current);
- }
- g_mutex_unlock (allocator->slab_mutex);
- }
- else /* delegate to system malloc */
- while (slice)
- {
- guint8 *current = slice;
- slice = *(gpointer*) (current + next_offset);
- if (G_UNLIKELY (allocator->config.debug_blocks) &&
- !smc_notify_free (current, mem_size))
- abort();
- if (G_UNLIKELY (g_mem_gc_friendly))
- memset (current, 0, mem_size);
- g_free (current);
- }
-}
-
-/* --- single page allocator --- */
-static void
-allocator_slab_stack_push (Allocator *allocator,
- guint ix,
- SlabInfo *sinfo)
-{
- /* insert slab at slab ring head */
- if (!allocator->slab_stack[ix])
- {
- sinfo->next = sinfo;
- sinfo->prev = sinfo;
- }
- else
- {
- SlabInfo *next = allocator->slab_stack[ix], *prev = next->prev;
- next->prev = sinfo;
- prev->next = sinfo;
- sinfo->next = next;
- sinfo->prev = prev;
- }
- allocator->slab_stack[ix] = sinfo;
-}
-
-static gsize
-allocator_aligned_page_size (Allocator *allocator,
- gsize n_bytes)
-{
- gsize val = 1 << g_bit_storage (n_bytes - 1);
- val = MAX (val, allocator->min_page_size);
- return val;
-}
-
-static void
-allocator_add_slab (Allocator *allocator,
- guint ix,
- gsize chunk_size)
-{
- ChunkLink *chunk;
- SlabInfo *sinfo;
- gsize addr, padding, n_chunks, color = 0;
- gsize page_size = allocator_aligned_page_size (allocator, SLAB_BPAGE_SIZE (allocator, chunk_size));
- /* allocate 1 page for the chunks and the slab */
- gpointer aligned_memory = allocator_memalign (page_size, page_size - NATIVE_MALLOC_PADDING);
- guint8 *mem = aligned_memory;
- guint i;
- if (!mem)
- {
- const gchar *syserr = "unknown error";
-#if HAVE_STRERROR
- syserr = strerror (errno);
-#endif
- mem_error ("failed to allocate %u bytes (alignment: %u): %s\n",
- (guint) (page_size - NATIVE_MALLOC_PADDING), (guint) page_size, syserr);
- }
- /* mask page adress */
- addr = ((gsize) mem / page_size) * page_size;
- /* assert alignment */
- mem_assert (aligned_memory == (gpointer) addr);
- /* basic slab info setup */
- sinfo = (SlabInfo*) (mem + page_size - SLAB_INFO_SIZE);
- sinfo->n_allocated = 0;
- sinfo->chunks = NULL;
- /* figure cache colorization */
- n_chunks = ((guint8*) sinfo - mem) / chunk_size;
- padding = ((guint8*) sinfo - mem) - n_chunks * chunk_size;
- if (padding)
- {
- color = (allocator->color_accu * P2ALIGNMENT) % padding;
- allocator->color_accu += allocator->config.color_increment;
- }
- /* add chunks to free list */
- chunk = (ChunkLink*) (mem + color);
- sinfo->chunks = chunk;
- for (i = 0; i < n_chunks - 1; i++)
- {
- chunk->next = (ChunkLink*) ((guint8*) chunk + chunk_size);
- chunk = chunk->next;
- }
- chunk->next = NULL; /* last chunk */
- /* add slab to slab ring */
- allocator_slab_stack_push (allocator, ix, sinfo);
-}
-
-static gpointer
-slab_allocator_alloc_chunk (gsize chunk_size)
-{
- ChunkLink *chunk;
- guint ix = SLAB_INDEX (allocator, chunk_size);
- /* ensure non-empty slab */
- if (!allocator->slab_stack[ix] || !allocator->slab_stack[ix]->chunks)
- allocator_add_slab (allocator, ix, chunk_size);
- /* allocate chunk */
- chunk = allocator->slab_stack[ix]->chunks;
- allocator->slab_stack[ix]->chunks = chunk->next;
- allocator->slab_stack[ix]->n_allocated++;
- /* rotate empty slabs */
- if (!allocator->slab_stack[ix]->chunks)
- allocator->slab_stack[ix] = allocator->slab_stack[ix]->next;
- return chunk;
-}
-
-static void
-slab_allocator_free_chunk (gsize chunk_size,
- gpointer mem)
-{
- ChunkLink *chunk;
- gboolean was_empty;
- guint ix = SLAB_INDEX (allocator, chunk_size);
- gsize page_size = allocator_aligned_page_size (allocator, SLAB_BPAGE_SIZE (allocator, chunk_size));
- gsize addr = ((gsize) mem / page_size) * page_size;
- /* mask page adress */
- guint8 *page = (guint8*) addr;
- SlabInfo *sinfo = (SlabInfo*) (page + page_size - SLAB_INFO_SIZE);
- /* assert valid chunk count */
- mem_assert (sinfo->n_allocated > 0);
- /* add chunk to free list */
- was_empty = sinfo->chunks == NULL;
- chunk = (ChunkLink*) mem;
- chunk->next = sinfo->chunks;
- sinfo->chunks = chunk;
- sinfo->n_allocated--;
- /* keep slab ring partially sorted, empty slabs at end */
- if (was_empty)
- {
- /* unlink slab */
- SlabInfo *next = sinfo->next, *prev = sinfo->prev;
- next->prev = prev;
- prev->next = next;
- if (allocator->slab_stack[ix] == sinfo)
- allocator->slab_stack[ix] = next == sinfo ? NULL : next;
- /* insert slab at head */
- allocator_slab_stack_push (allocator, ix, sinfo);
- }
- /* eagerly free complete unused slabs */
- if (!sinfo->n_allocated)
- {
- /* unlink slab */
- SlabInfo *next = sinfo->next, *prev = sinfo->prev;
- next->prev = prev;
- prev->next = next;
- if (allocator->slab_stack[ix] == sinfo)
- allocator->slab_stack[ix] = next == sinfo ? NULL : next;
- /* free slab */
- allocator_memfree (page_size, page);
- }
-}
-
-/* --- memalign implementation --- */
-#ifdef HAVE_MALLOC_H
-#include <malloc.h> /* memalign() */
-#endif
-
-/* from config.h:
- * define HAVE_POSIX_MEMALIGN 1 // if free(posix_memalign(3)) works, <stdlib.h>
- * define HAVE_COMPLIANT_POSIX_MEMALIGN 1 // if free(posix_memalign(3)) works for sizes != 2^n, <stdlib.h>
- * define HAVE_MEMALIGN 1 // if free(memalign(3)) works, <malloc.h>
- * define HAVE_VALLOC 1 // if free(valloc(3)) works, <stdlib.h> or <malloc.h>
- * if none is provided, we implement malloc(3)-based alloc-only page alignment
- */
-
-#if !(HAVE_COMPLIANT_POSIX_MEMALIGN || HAVE_MEMALIGN || HAVE_VALLOC)
-static GTrashStack *compat_valloc_trash = NULL;
-#endif
-
-static gpointer
-allocator_memalign (gsize alignment,
- gsize memsize)
-{
- gpointer aligned_memory = NULL;
- gint err = ENOMEM;
-#if HAVE_COMPLIANT_POSIX_MEMALIGN
- err = posix_memalign (&aligned_memory, alignment, memsize);
-#elif HAVE_MEMALIGN
- errno = 0;
- aligned_memory = memalign (alignment, memsize);
- err = errno;
-#elif HAVE_VALLOC
- errno = 0;
- aligned_memory = valloc (memsize);
- err = errno;
-#else
- /* simplistic non-freeing page allocator */
- mem_assert (alignment == sys_page_size);
- mem_assert (memsize <= sys_page_size);
- if (!compat_valloc_trash)
-#ifdef G_OS_WIN32
- {
- aligned_memory = VirtualAlloc (virtual_mem, sys_page_size, MEM_COMMIT, PAGE_READWRITE);
- virtual_mem += sys_page_size;
- }
- else
-#else
- {
-
- const guint n_pages = 16;
- guint8 *mem = malloc (n_pages * sys_page_size);
- err = errno;
- if (mem)
- {
- gint i = n_pages;
- guint8 *amem = (guint8*) ALIGN ((gsize) mem, sys_page_size);
- if (amem != mem)
- i--; /* mem wasn't page aligned */
- while (--i >= 0)
- g_trash_stack_push (&compat_valloc_trash, amem + i * sys_page_size);
- }
- }
-#endif
- aligned_memory = g_trash_stack_pop (&compat_valloc_trash);
-#endif
- if (!aligned_memory)
- errno = err;
- return aligned_memory;
-}
-
-static void
-allocator_memfree (gsize memsize,
- gpointer mem)
-{
-#if HAVE_COMPLIANT_POSIX_MEMALIGN || HAVE_MEMALIGN || HAVE_VALLOC
- free (mem);
-#else
- mem_assert (memsize <= sys_page_size);
- g_trash_stack_push (&compat_valloc_trash, mem);
-#endif
-}
-
-static void
-mem_error (const char *format,
- ...)
-{
- const char *pname;
- va_list args;
- /* at least, put out "MEMORY-ERROR", in case we segfault during the rest of the function */
- fputs ("\n***MEMORY-ERROR***: ", stderr);
- pname = g_get_prgname();
- fprintf (stderr, "%s: GSlice: ", pname ? pname : "");
- va_start (args, format);
- vfprintf (stderr, format, args);
- va_end (args);
- fputs ("\n", stderr);
- abort();
- _exit (1);
-}
-
-/* --- g-slice memory checker tree --- */
-typedef size_t SmcKType; /* key type */
-typedef size_t SmcVType; /* value type */
-typedef struct {
- SmcKType key;
- SmcVType value;
-} SmcEntry;
-static void smc_tree_insert (SmcKType key,
- SmcVType value);
-static gboolean smc_tree_lookup (SmcKType key,
- SmcVType *value_p);
-static gboolean smc_tree_remove (SmcKType key);
-
-
-/* --- g-slice memory checker implementation --- */
-static void
-smc_notify_alloc (void *pointer,
- size_t size)
-{
- size_t adress = (size_t) pointer;
- if (pointer)
- smc_tree_insert (adress, size);
-}
-
-#if 0
-static void
-smc_notify_ignore (void *pointer)
-{
- size_t adress = (size_t) pointer;
- if (pointer)
- smc_tree_remove (adress);
-}
-#endif
-
-static int
-smc_notify_free (void *pointer,
- size_t size)
-{
- size_t adress = (size_t) pointer;
- SmcVType real_size;
- gboolean found_one;
-
- if (!pointer)
- return 1; /* ignore */
- found_one = smc_tree_lookup (adress, &real_size);
- if (!found_one)
- {
- fprintf (stderr, "GSlice: MemChecker: attempt to release non-allocated block: %p size=%" G_GSIZE_FORMAT "\n", pointer, size);
- return 0;
- }
- if (real_size != size && (real_size || size))
- {
- fprintf (stderr, "GSlice: MemChecker: attempt to release block with invalid size: %p size=%" G_GSIZE_FORMAT " invalid-size=%" G_GSIZE_FORMAT "\n", pointer, real_size, size);
- return 0;
- }
- if (!smc_tree_remove (adress))
- {
- fprintf (stderr, "GSlice: MemChecker: attempt to release non-allocated block: %p size=%" G_GSIZE_FORMAT "\n", pointer, size);
- return 0;
- }
- return 1; /* all fine */
-}
-
-/* --- g-slice memory checker tree implementation --- */
-#define SMC_TRUNK_COUNT (4093 /* 16381 */) /* prime, to distribute trunk collisions (big, allocated just once) */
-#define SMC_BRANCH_COUNT (511) /* prime, to distribute branch collisions */
-#define SMC_TRUNK_EXTENT (SMC_BRANCH_COUNT * 2039) /* key adress space per trunk, should distribute uniformly across BRANCH_COUNT */
-#define SMC_TRUNK_HASH(k) ((k / SMC_TRUNK_EXTENT) % SMC_TRUNK_COUNT) /* generate new trunk hash per megabyte (roughly) */
-#define SMC_BRANCH_HASH(k) (k % SMC_BRANCH_COUNT)
-
-typedef struct {
- SmcEntry *entries;
- unsigned int n_entries;
-} SmcBranch;
-
-static SmcBranch **smc_tree_root = NULL;
-
-static void
-smc_tree_abort (int errval)
-{
- const char *syserr = "unknown error";
-#if HAVE_STRERROR
- syserr = strerror (errval);
-#endif
- mem_error ("MemChecker: failure in debugging tree: %s", syserr);
-}
-
-static inline SmcEntry*
-smc_tree_branch_grow_L (SmcBranch *branch,
- unsigned int index)
-{
- unsigned int old_size = branch->n_entries * sizeof (branch->entries[0]);
- unsigned int new_size = old_size + sizeof (branch->entries[0]);
- SmcEntry *entry;
- mem_assert (index <= branch->n_entries);
- branch->entries = (SmcEntry*) realloc (branch->entries, new_size);
- if (!branch->entries)
- smc_tree_abort (errno);
- entry = branch->entries + index;
- g_memmove (entry + 1, entry, (branch->n_entries - index) * sizeof (entry[0]));
- branch->n_entries += 1;
- return entry;
-}
-
-static inline SmcEntry*
-smc_tree_branch_lookup_nearest_L (SmcBranch *branch,
- SmcKType key)
-{
- unsigned int n_nodes = branch->n_entries, offs = 0;
- SmcEntry *check = branch->entries;
- int cmp = 0;
- while (offs < n_nodes)
- {
- unsigned int i = (offs + n_nodes) >> 1;
- check = branch->entries + i;
- cmp = key < check->key ? -1 : key != check->key;
- if (cmp == 0)
- return check; /* return exact match */
- else if (cmp < 0)
- n_nodes = i;
- else /* (cmp > 0) */
- offs = i + 1;
- }
- /* check points at last mismatch, cmp > 0 indicates greater key */
- return cmp > 0 ? check + 1 : check; /* return insertion position for inexact match */
-}
-
-static void
-smc_tree_insert (SmcKType key,
- SmcVType value)
-{
- unsigned int ix0, ix1;
- SmcEntry *entry;
-
- g_mutex_lock (smc_tree_mutex);
- ix0 = SMC_TRUNK_HASH (key);
- ix1 = SMC_BRANCH_HASH (key);
- if (!smc_tree_root)
- {
- smc_tree_root = calloc (SMC_TRUNK_COUNT, sizeof (smc_tree_root[0]));
- if (!smc_tree_root)
- smc_tree_abort (errno);
- }
- if (!smc_tree_root[ix0])
- {
- smc_tree_root[ix0] = calloc (SMC_BRANCH_COUNT, sizeof (smc_tree_root[0][0]));
- if (!smc_tree_root[ix0])
- smc_tree_abort (errno);
- }
- entry = smc_tree_branch_lookup_nearest_L (&smc_tree_root[ix0][ix1], key);
- if (!entry || /* need create */
- entry >= smc_tree_root[ix0][ix1].entries + smc_tree_root[ix0][ix1].n_entries || /* need append */
- entry->key != key) /* need insert */
- entry = smc_tree_branch_grow_L (&smc_tree_root[ix0][ix1], entry - smc_tree_root[ix0][ix1].entries);
- entry->key = key;
- entry->value = value;
- g_mutex_unlock (smc_tree_mutex);
-}
-
-static gboolean
-smc_tree_lookup (SmcKType key,
- SmcVType *value_p)
-{
- SmcEntry *entry = NULL;
- unsigned int ix0 = SMC_TRUNK_HASH (key), ix1 = SMC_BRANCH_HASH (key);
- gboolean found_one = FALSE;
- *value_p = 0;
- g_mutex_lock (smc_tree_mutex);
- if (smc_tree_root && smc_tree_root[ix0])
- {
- entry = smc_tree_branch_lookup_nearest_L (&smc_tree_root[ix0][ix1], key);
- if (entry &&
- entry < smc_tree_root[ix0][ix1].entries + smc_tree_root[ix0][ix1].n_entries &&
- entry->key == key)
- {
- found_one = TRUE;
- *value_p = entry->value;
- }
- }
- g_mutex_unlock (smc_tree_mutex);
- return found_one;
-}
-
-static gboolean
-smc_tree_remove (SmcKType key)
-{
- unsigned int ix0 = SMC_TRUNK_HASH (key), ix1 = SMC_BRANCH_HASH (key);
- gboolean found_one = FALSE;
- g_mutex_lock (smc_tree_mutex);
- if (smc_tree_root && smc_tree_root[ix0])
- {
- SmcEntry *entry = smc_tree_branch_lookup_nearest_L (&smc_tree_root[ix0][ix1], key);
- if (entry &&
- entry < smc_tree_root[ix0][ix1].entries + smc_tree_root[ix0][ix1].n_entries &&
- entry->key == key)
- {
- unsigned int i = entry - smc_tree_root[ix0][ix1].entries;
- smc_tree_root[ix0][ix1].n_entries -= 1;
- g_memmove (entry, entry + 1, (smc_tree_root[ix0][ix1].n_entries - i) * sizeof (entry[0]));
- if (!smc_tree_root[ix0][ix1].n_entries)
- {
- /* avoid useless pressure on the memory system */
- free (smc_tree_root[ix0][ix1].entries);
- smc_tree_root[ix0][ix1].entries = NULL;
- }
- found_one = TRUE;
- }
- }
- g_mutex_unlock (smc_tree_mutex);
- return found_one;
-}
-
-#ifdef G_ENABLE_DEBUG
-void
-g_slice_debug_tree_statistics (void)
-{
- g_mutex_lock (smc_tree_mutex);
- if (smc_tree_root)
- {
- unsigned int i, j, t = 0, o = 0, b = 0, su = 0, ex = 0, en = 4294967295u;
- double tf, bf;
- for (i = 0; i < SMC_TRUNK_COUNT; i++)
- if (smc_tree_root[i])
- {
- t++;
- for (j = 0; j < SMC_BRANCH_COUNT; j++)
- if (smc_tree_root[i][j].n_entries)
- {
- b++;
- su += smc_tree_root[i][j].n_entries;
- en = MIN (en, smc_tree_root[i][j].n_entries);
- ex = MAX (ex, smc_tree_root[i][j].n_entries);
- }
- else if (smc_tree_root[i][j].entries)
- o++; /* formerly used, now empty */
- }
- en = b ? en : 0;
- tf = MAX (t, 1.0); /* max(1) to be a valid divisor */
- bf = MAX (b, 1.0); /* max(1) to be a valid divisor */
- fprintf (stderr, "GSlice: MemChecker: %u trunks, %u branches, %u old branches\n", t, b, o);
- fprintf (stderr, "GSlice: MemChecker: %f branches per trunk, %.2f%% utilization\n",
- b / tf,
- 100.0 - (SMC_BRANCH_COUNT - b / tf) / (0.01 * SMC_BRANCH_COUNT));
- fprintf (stderr, "GSlice: MemChecker: %f entries per branch, %u minimum, %u maximum\n",
- su / bf, en, ex);
- }
- else
- fprintf (stderr, "GSlice: MemChecker: root=NULL\n");
- g_mutex_unlock (smc_tree_mutex);
-
- /* sample statistics (beast + GSLice + 24h scripted core & GUI activity):
- * PID %CPU %MEM VSZ RSS COMMAND
- * 8887 30.3 45.8 456068 414856 beast-0.7.1 empty.bse
- * $ cat /proc/8887/statm # total-program-size resident-set-size shared-pages text/code data/stack library dirty-pages
- * 114017 103714 2354 344 0 108676 0
- * $ cat /proc/8887/status
- * Name: beast-0.7.1
- * VmSize: 456068 kB
- * VmLck: 0 kB
- * VmRSS: 414856 kB
- * VmData: 434620 kB
- * VmStk: 84 kB
- * VmExe: 1376 kB
- * VmLib: 13036 kB
- * VmPTE: 456 kB
- * Threads: 3
- * (gdb) print g_slice_debug_tree_statistics ()
- * GSlice: MemChecker: 422 trunks, 213068 branches, 0 old branches
- * GSlice: MemChecker: 504.900474 branches per trunk, 98.81% utilization
- * GSlice: MemChecker: 4.965039 entries per branch, 1 minimum, 37 maximum
- */
-}
-#endif /* G_ENABLE_DEBUG */
-
-#define __G_SLICE_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gslice.h b/navit/support/glib/gslice.h
deleted file mode 100644
index f9cc64426..000000000
--- a/navit/support/glib/gslice.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* GLIB sliced memory - fast threaded memory chunk allocator
- * Copyright (C) 2005 Tim Janik
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_SLICE_H__
-#define __G_SLICE_H__
-
-#ifndef __G_MEM_H__
-#error Include <glib.h> instead of <gslice.h>
-#endif
-
-#include <glib/gtypes.h>
-
-G_BEGIN_DECLS
-
-/* slices - fast allocation/release of small memory blocks
- */
-gpointer g_slice_alloc (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
-gpointer g_slice_alloc0 (gsize block_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
-gpointer g_slice_copy (gsize block_size,
- gconstpointer mem_block) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(1);
-void g_slice_free1 (gsize block_size,
- gpointer mem_block);
-void g_slice_free_chain_with_offset (gsize block_size,
- gpointer mem_chain,
- gsize next_offset);
-#define g_slice_new(type) ((type*) g_slice_alloc (sizeof (type)))
-#define g_slice_new0(type) ((type*) g_slice_alloc0 (sizeof (type)))
-/* MemoryBlockType *
- * g_slice_dup (MemoryBlockType,
- * MemoryBlockType *mem_block);
- * g_slice_free (MemoryBlockType,
- * MemoryBlockType *mem_block);
- * g_slice_free_chain (MemoryBlockType,
- * MemoryBlockType *first_chain_block,
- * memory_block_next_field);
- * pseudo prototypes for the macro
- * definitions following below.
- */
-
-/* we go through extra hoops to ensure type safety */
-#define g_slice_dup(type, mem) \
- (1 ? (type*) g_slice_copy (sizeof (type), (mem)) \
- : ((void) ((type*) 0 == (mem)), (type*) 0))
-#define g_slice_free(type, mem) do { \
- if (1) g_slice_free1 (sizeof (type), (mem)); \
- else (void) ((type*) 0 == (mem)); \
-} while (0)
-#define g_slice_free_chain(type, mem_chain, next) do { \
- if (1) g_slice_free_chain_with_offset (sizeof (type), \
- (mem_chain), G_STRUCT_OFFSET (type, next)); \
- else (void) ((type*) 0 == (mem_chain)); \
-} while (0)
-
-
-/* --- internal debugging API --- */
-typedef enum {
- G_SLICE_CONFIG_ALWAYS_MALLOC = 1,
- G_SLICE_CONFIG_BYPASS_MAGAZINES,
- G_SLICE_CONFIG_WORKING_SET_MSECS,
- G_SLICE_CONFIG_COLOR_INCREMENT,
- G_SLICE_CONFIG_CHUNK_SIZES,
- G_SLICE_CONFIG_CONTENTION_COUNTER
-} GSliceConfig;
-void g_slice_set_config (GSliceConfig ckey, gint64 value);
-gint64 g_slice_get_config (GSliceConfig ckey);
-gint64* g_slice_get_config_state (GSliceConfig ckey, gint64 address, guint *n_values);
-
-G_END_DECLS
-
-#endif /* __G_SLICE_H__ */
diff --git a/navit/support/glib/gslist.c b/navit/support/glib/gslist.c
deleted file mode 100644
index 0be54aaa2..000000000
--- a/navit/support/glib/gslist.c
+++ /dev/null
@@ -1,1088 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * MT safe
- */
-
-#include "config.h"
-
-#include "glib.h"
-#include "gslist.h"
-
-
-/**
- * SECTION:linked_lists_single
- * @title: Singly-Linked Lists
- * @short_description: linked lists containing integer values or
- * pointers to data, limited to iterating over the
- * list in one direction
- *
- * The #GSList structure and its associated functions provide a
- * standard singly-linked list data structure.
- *
- * Each element in the list contains a piece of data, together with a
- * pointer which links to the next element in the list. Using this
- * pointer it is possible to move through the list in one direction
- * only (unlike the <link
- * linkend="glib-Doubly-Linked-lists">Doubly-Linked Lists</link> which
- * allow movement in both directions).
- *
- * The data contained in each element can be either integer values, by
- * using one of the <link linkend="glib-Type-Conversion-Macros">Type
- * Conversion Macros</link>, or simply pointers to any type of data.
- *
- * List elements are allocated from the <link
- * linkend="glib-Memory-Slices">slice allocator</link>, which is more
- * efficient than allocating elements individually.
- *
- * Note that most of the #GSList functions expect to be passed a
- * pointer to the first element in the list. The functions which insert
- * elements return the new start of the list, which may have changed.
- *
- * There is no function to create a #GSList. %NULL is considered to be
- * the empty list so you simply set a #GSList* to %NULL.
- *
- * To add elements, use g_slist_append(), g_slist_prepend(),
- * g_slist_insert() and g_slist_insert_sorted().
- *
- * To remove elements, use g_slist_remove().
- *
- * To find elements in the list use g_slist_last(), g_slist_next(),
- * g_slist_nth(), g_slist_nth_data(), g_slist_find() and
- * g_slist_find_custom().
- *
- * To find the index of an element use g_slist_position() and
- * g_slist_index().
- *
- * To call a function for each element in the list use
- * g_slist_foreach().
- *
- * To free the entire list, use g_slist_free().
- **/
-
-/**
- * GSList:
- * @data: holds the element's data, which can be a pointer to any kind
- * of data, or any integer value using the <link
- * linkend="glib-Type-Conversion-Macros">Type Conversion
- * Macros</link>.
- * @next: contains the link to the next element in the list.
- *
- * The #GSList struct is used for each element in the singly-linked
- * list.
- **/
-
-/**
- * g_slist_next:
- * @slist: an element in a #GSList.
- * @Returns: the next element, or %NULL if there are no more elements.
- *
- * A convenience macro to get the next element in a #GSList.
- **/
-
-
-/**
- * g_slist_push_allocator:
- * @dummy: the #GAllocator to use when allocating #GSList elements.
- *
- * Sets the allocator to use to allocate #GSList elements. Use
- * g_slist_pop_allocator() to restore the previous allocator.
- *
- * Note that this function is not available if GLib has been compiled
- * with <option>--disable-mem-pools</option>
- *
- * Deprecated: 2.10: It does nothing, since #GSList has been converted
- * to the <link linkend="glib-Memory-Slices">slice
- * allocator</link>
- **/
-void g_slist_push_allocator (gpointer dummy) { /* present for binary compat only */ }
-
-/**
- * g_slist_pop_allocator:
- *
- * Restores the previous #GAllocator, used when allocating #GSList
- * elements.
- *
- * Note that this function is not available if GLib has been compiled
- * with <option>--disable-mem-pools</option>
- *
- * Deprecated: 2.10: It does nothing, since #GSList has been converted
- * to the <link linkend="glib-Memory-Slices">slice
- * allocator</link>
- **/
-void g_slist_pop_allocator (void) { /* present for binary compat only */ }
-
-#define _g_slist_alloc0() g_slice_new0 (GSList)
-#define _g_slist_alloc() g_slice_new (GSList)
-#define _g_slist_free1(slist) g_slice_free (GSList, slist)
-
-/**
- * g_slist_alloc:
- * @Returns: a pointer to the newly-allocated #GSList element.
- *
- * Allocates space for one #GSList element. It is called by the
- * g_slist_append(), g_slist_prepend(), g_slist_insert() and
- * g_slist_insert_sorted() functions and so is rarely used on its own.
- **/
-GSList*
-g_slist_alloc (void)
-{
- return _g_slist_alloc0 ();
-}
-
-/**
- * g_slist_free:
- * @list: a #GSList
- *
- * Frees all of the memory used by a #GSList.
- * The freed elements are returned to the slice allocator.
- *
- * <note><para>
- * If list elements contain dynamically-allocated memory,
- * you should either use g_slist_free_full() or free them manually
- * first.
- * </para></note>
- */
-void
-g_slist_free (GSList *list)
-{
- g_slice_free_chain (GSList, list, next);
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-/**
- * g_slist_free_1:
- * @list: a #GSList element
- *
- * Frees one #GSList element.
- * It is usually used after g_slist_remove_link().
- */
-/**
- * g_slist_free1:
- *
- * A macro which does the same as g_slist_free_1().
- *
- * Since: 2.10
- **/
-void
-g_slist_free_1 (GSList *list)
-{
- _g_slist_free1 (list);
-}
-
-/**
- * g_slist_free_full:
- * @list: a pointer to a #GSList
- * @free_func: the function to be called to free each element's data
- *
- * Convenience method, which frees all the memory used by a #GSList, and
- * calls the specified destroy function on every element's data.
- *
- * Since: 2.28
- **/
-void
-g_slist_free_full (GSList *list,
- GDestroyNotify free_func)
-{
- g_slist_foreach (list, (GFunc) free_func, NULL);
- g_slist_free (list);
-}
-
-/**
- * g_slist_append:
- * @list: a #GSList
- * @data: the data for the new element
- *
- * Adds a new element on to the end of the list.
- *
- * <note><para>
- * The return value is the new start of the list, which may
- * have changed, so make sure you store the new value.
- * </para></note>
- *
- * <note><para>
- * Note that g_slist_append() has to traverse the entire list
- * to find the end, which is inefficient when adding multiple
- * elements. A common idiom to avoid the inefficiency is to prepend
- * the elements and reverse the list when all elements have been added.
- * </para></note>
- *
- * |[
- * /&ast; Notice that these are initialized to the empty list. &ast;/
- * GSList *list = NULL, *number_list = NULL;
- *
- * /&ast; This is a list of strings. &ast;/
- * list = g_slist_append (list, "first");
- * list = g_slist_append (list, "second");
- *
- * /&ast; This is a list of integers. &ast;/
- * number_list = g_slist_append (number_list, GINT_TO_POINTER (27));
- * number_list = g_slist_append (number_list, GINT_TO_POINTER (14));
- * ]|
- *
- * Returns: the new start of the #GSList
- */
-GSList*
-g_slist_append (GSList *list,
- gpointer data)
-{
- GSList *new_list;
- GSList *last;
-
- new_list = _g_slist_alloc ();
- new_list->data = data;
- new_list->next = NULL;
-
- if (list)
- {
- last = g_slist_last (list);
- /* g_assert (last != NULL); */
- last->next = new_list;
-
- return list;
- }
- else
- return new_list;
-}
-#endif
-
-/**
- * g_slist_prepend:
- * @list: a #GSList
- * @data: the data for the new element
- *
- * Adds a new element on to the start of the list.
- *
- * <note><para>
- * The return value is the new start of the list, which
- * may have changed, so make sure you store the new value.
- * </para></note>
- *
- * |[
- * /&ast; Notice that it is initialized to the empty list. &ast;/
- * GSList *list = NULL;
- * list = g_slist_prepend (list, "last");
- * list = g_slist_prepend (list, "first");
- * ]|
- *
- * Returns: the new start of the #GSList
- */
-GSList*
-g_slist_prepend (GSList *list,
- gpointer data)
-{
- GSList *new_list;
-
- new_list = _g_slist_alloc ();
- new_list->data = data;
- new_list->next = list;
-
- return new_list;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-/**
- * g_slist_insert:
- * @list: a #GSList
- * @data: the data for the new element
- * @position: the position to insert the element.
- * If this is negative, or is larger than the number
- * of elements in the list, the new element is added on
- * to the end of the list.
- *
- * Inserts a new element into the list at the given position.
- *
- * Returns: the new start of the #GSList
- */
-GSList*
-g_slist_insert (GSList *list,
- gpointer data,
- gint position)
-{
- GSList *prev_list;
- GSList *tmp_list;
- GSList *new_list;
-
- if (position < 0)
- return g_slist_append (list, data);
- else if (position == 0)
- return g_slist_prepend (list, data);
-
- new_list = _g_slist_alloc ();
- new_list->data = data;
-
- if (!list)
- {
- new_list->next = NULL;
- return new_list;
- }
-
- prev_list = NULL;
- tmp_list = list;
-
- while ((position-- > 0) && tmp_list)
- {
- prev_list = tmp_list;
- tmp_list = tmp_list->next;
- }
-
- if (prev_list)
- {
- new_list->next = prev_list->next;
- prev_list->next = new_list;
- }
- else
- {
- new_list->next = list;
- list = new_list;
- }
-
- return list;
-}
-
-
-/**
- * g_slist_insert_before:
- * @slist: a #GSList
- * @sibling: node to insert @data before
- * @data: data to put in the newly-inserted node
- *
- * Inserts a node before @sibling containing @data.
- *
- * Returns: the new head of the list.
- */
-GSList*
-g_slist_insert_before (GSList *slist,
- GSList *sibling,
- gpointer data)
-{
- if (!slist)
- {
- slist = _g_slist_alloc ();
- slist->data = data;
- slist->next = NULL;
- g_return_val_if_fail (sibling == NULL, slist);
- return slist;
- }
- else
- {
- GSList *node, *last = NULL;
-
- for (node = slist; node; last = node, node = last->next)
- if (node == sibling)
- break;
- if (!last)
- {
- node = _g_slist_alloc ();
- node->data = data;
- node->next = slist;
-
- return node;
- }
- else
- {
- node = _g_slist_alloc ();
- node->data = data;
- node->next = last->next;
- last->next = node;
-
- return slist;
- }
- }
-}
-
-
-/**
- * g_slist_concat:
- * @list1: a #GSList
- * @list2: the #GSList to add to the end of the first #GSList
- *
- * Adds the second #GSList onto the end of the first #GSList.
- * Note that the elements of the second #GSList are not copied.
- * They are used directly.
- *
- * Returns: the start of the new #GSList
- */
-GSList *
-g_slist_concat (GSList *list1, GSList *list2)
-{
- if (list2)
- {
- if (list1)
- g_slist_last (list1)->next = list2;
- else
- list1 = list2;
- }
-
- return list1;
-}
-
-/**
- * g_slist_remove:
- * @list: a #GSList
- * @data: the data of the element to remove
- *
- * Removes an element from a #GSList.
- * If two elements contain the same data, only the first is removed.
- * If none of the elements contain the data, the #GSList is unchanged.
- *
- * Returns: the new start of the #GSList
- */
-GSList*
-g_slist_remove (GSList *list,
- gconstpointer data)
-{
- GSList *tmp, *prev = NULL;
-
- tmp = list;
- while (tmp)
- {
- if (tmp->data == data)
- {
- if (prev)
- prev->next = tmp->next;
- else
- list = tmp->next;
-
- g_slist_free_1 (tmp);
- break;
- }
- prev = tmp;
- tmp = prev->next;
- }
-
- return list;
-}
-
-/**
- * g_slist_remove_all:
- * @list: a #GSList
- * @data: data to remove
- *
- * Removes all list nodes with data equal to @data.
- * Returns the new head of the list. Contrast with
- * g_slist_remove() which removes only the first node
- * matching the given data.
- *
- * Returns: new head of @list
- */
-GSList*
-g_slist_remove_all (GSList *list,
- gconstpointer data)
-{
- GSList *tmp, *prev = NULL;
-
- tmp = list;
- while (tmp)
- {
- if (tmp->data == data)
- {
- GSList *next = tmp->next;
-
- if (prev)
- prev->next = next;
- else
- list = next;
-
- g_slist_free_1 (tmp);
- tmp = next;
- }
- else
- {
- prev = tmp;
- tmp = prev->next;
- }
- }
-
- return list;
-}
-
-static inline GSList*
-_g_slist_remove_link (GSList *list,
- GSList *link)
-{
- GSList *tmp;
- GSList *prev;
-
- prev = NULL;
- tmp = list;
-
- while (tmp)
- {
- if (tmp == link)
- {
- if (prev)
- prev->next = tmp->next;
- if (list == tmp)
- list = list->next;
-
- tmp->next = NULL;
- break;
- }
-
- prev = tmp;
- tmp = tmp->next;
- }
-
- return list;
-}
-
-/**
- * g_slist_remove_link:
- * @list: a #GSList
- * @link_: an element in the #GSList
- *
- * Removes an element from a #GSList, without
- * freeing the element. The removed element's next
- * link is set to %NULL, so that it becomes a
- * self-contained list with one element.
- *
- * Returns: the new start of the #GSList, without the element
- */
-GSList*
-g_slist_remove_link (GSList *list,
- GSList *link_)
-{
- return _g_slist_remove_link (list, link_);
-}
-
-/**
- * g_slist_delete_link:
- * @list: a #GSList
- * @link_: node to delete
- *
- * Removes the node link_ from the list and frees it.
- * Compare this to g_slist_remove_link() which removes the node
- * without freeing it.
- *
- * Returns: the new head of @list
- */
-GSList*
-g_slist_delete_link (GSList *list,
- GSList *link_)
-{
- list = _g_slist_remove_link (list, link_);
- _g_slist_free1 (link_);
-
- return list;
-}
-
-/**
- * g_slist_copy:
- * @list: a #GSList
- *
- * Copies a #GSList.
- *
- * <note><para>
- * Note that this is a "shallow" copy. If the list elements
- * consist of pointers to data, the pointers are copied but
- * the actual data isn't.
- * </para></note>
- *
- * Returns: a copy of @list
- */
-GSList*
-g_slist_copy (GSList *list)
-{
- GSList *new_list = NULL;
-
- if (list)
- {
- GSList *last;
-
- new_list = _g_slist_alloc ();
- new_list->data = list->data;
- last = new_list;
- list = list->next;
- while (list)
- {
- last->next = _g_slist_alloc ();
- last = last->next;
- last->data = list->data;
- list = list->next;
- }
- last->next = NULL;
- }
-
- return new_list;
-}
-
-/**
- * g_slist_reverse:
- * @list: a #GSList
- *
- * Reverses a #GSList.
- *
- * Returns: the start of the reversed #GSList
- */
-GSList*
-g_slist_reverse (GSList *list)
-{
- GSList *prev = NULL;
-
- while (list)
- {
- GSList *next = list->next;
-
- list->next = prev;
-
- prev = list;
- list = next;
- }
-
- return prev;
-}
-
-/**
- * g_slist_nth:
- * @list: a #GSList
- * @n: the position of the element, counting from 0
- *
- * Gets the element at the given position in a #GSList.
- *
- * Returns: the element, or %NULL if the position is off
- * the end of the #GSList
- */
-GSList*
-g_slist_nth (GSList *list,
- guint n)
-{
- while (n-- > 0 && list)
- list = list->next;
-
- return list;
-}
-
-/**
- * g_slist_nth_data:
- * @list: a #GSList
- * @n: the position of the element
- *
- * Gets the data of the element at the given position.
- *
- * Returns: the element's data, or %NULL if the position
- * is off the end of the #GSList
- */
-gpointer
-g_slist_nth_data (GSList *list,
- guint n)
-{
- while (n-- > 0 && list)
- list = list->next;
-
- return list ? list->data : NULL;
-}
-
-/**
- * g_slist_find:
- * @list: a #GSList
- * @data: the element data to find
- *
- * Finds the element in a #GSList which
- * contains the given data.
- *
- * Returns: the found #GSList element,
- * or %NULL if it is not found
- */
-GSList*
-g_slist_find (GSList *list,
- gconstpointer data)
-{
- while (list)
- {
- if (list->data == data)
- break;
- list = list->next;
- }
-
- return list;
-}
-
-/**
- * g_slist_find_custom:
- * @list: a #GSList
- * @data: user data passed to the function
- * @func: the function to call for each element.
- * It should return 0 when the desired element is found
- *
- * Finds an element in a #GSList, using a supplied function to
- * find the desired element. It iterates over the list, calling
- * the given function which should return 0 when the desired
- * element is found. The function takes two #gconstpointer arguments,
- * the #GSList element's data as the first argument and the
- * given user data.
- *
- * Returns: the found #GSList element, or %NULL if it is not found
- */
-GSList*
-g_slist_find_custom (GSList *list,
- gconstpointer data,
- GCompareFunc func)
-{
- g_return_val_if_fail (func != NULL, list);
-
- while (list)
- {
- if (! func (list->data, data))
- return list;
- list = list->next;
- }
-
- return NULL;
-}
-
-/**
- * g_slist_position:
- * @list: a #GSList
- * @llink: an element in the #GSList
- *
- * Gets the position of the given element
- * in the #GSList (starting from 0).
- *
- * Returns: the position of the element in the #GSList,
- * or -1 if the element is not found
- */
-gint
-g_slist_position (GSList *list,
- GSList *llink)
-{
- gint i;
-
- i = 0;
- while (list)
- {
- if (list == llink)
- return i;
- i++;
- list = list->next;
- }
-
- return -1;
-}
-
-/**
- * g_slist_index:
- * @list: a #GSList
- * @data: the data to find
- *
- * Gets the position of the element containing
- * the given data (starting from 0).
- *
- * Returns: the index of the element containing the data,
- * or -1 if the data is not found
- */
-gint
-g_slist_index (GSList *list,
- gconstpointer data)
-{
- gint i;
-
- i = 0;
- while (list)
- {
- if (list->data == data)
- return i;
- i++;
- list = list->next;
- }
-
- return -1;
-}
-
-/**
- * g_slist_last:
- * @list: a #GSList
- *
- * Gets the last element in a #GSList.
- *
- * <note><para>
- * This function iterates over the whole list.
- * </para></note>
- *
- * Returns: the last element in the #GSList,
- * or %NULL if the #GSList has no elements
- */
-GSList*
-g_slist_last (GSList *list)
-{
- if (list)
- {
- while (list->next)
- list = list->next;
- }
-
- return list;
-}
-
-/**
- * g_slist_length:
- * @list: a #GSList
- *
- * Gets the number of elements in a #GSList.
- *
- * <note><para>
- * This function iterates over the whole list to
- * count its elements.
- * </para></note>
- *
- * Returns: the number of elements in the #GSList
- */
-guint
-g_slist_length (GSList *list)
-{
- guint length;
-
- length = 0;
- while (list)
- {
- length++;
- list = list->next;
- }
-
- return length;
-}
-
-/**
- * g_slist_foreach:
- * @list: a #GSList
- * @func: the function to call with each element's data
- * @user_data: user data to pass to the function
- *
- * Calls a function for each element of a #GSList.
- */
-void
-g_slist_foreach (GSList *list,
- GFunc func,
- gpointer user_data)
-{
- while (list)
- {
- GSList *next = list->next;
- (*func) (list->data, user_data);
- list = next;
- }
-}
-
-static GSList*
-g_slist_insert_sorted_real (GSList *list,
- gpointer data,
- GFunc func,
- gpointer user_data)
-{
- GSList *tmp_list = list;
- GSList *prev_list = NULL;
- GSList *new_list;
- gint cmp;
-
- g_return_val_if_fail (func != NULL, list);
-
- if (!list)
- {
- new_list = _g_slist_alloc ();
- new_list->data = data;
- new_list->next = NULL;
- return new_list;
- }
-
- cmp = ((GCompareDataFunc) func) (data, tmp_list->data, user_data);
-
- while ((tmp_list->next) && (cmp > 0))
- {
- prev_list = tmp_list;
- tmp_list = tmp_list->next;
-
- cmp = ((GCompareDataFunc) func) (data, tmp_list->data, user_data);
- }
-
- new_list = _g_slist_alloc ();
- new_list->data = data;
-
- if ((!tmp_list->next) && (cmp > 0))
- {
- tmp_list->next = new_list;
- new_list->next = NULL;
- return list;
- }
-
- if (prev_list)
- {
- prev_list->next = new_list;
- new_list->next = tmp_list;
- return list;
- }
- else
- {
- new_list->next = list;
- return new_list;
- }
-}
-
-/**
- * g_slist_insert_sorted:
- * @list: a #GSList
- * @data: the data for the new element
- * @func: the function to compare elements in the list.
- * It should return a number > 0 if the first parameter
- * comes after the second parameter in the sort order.
- *
- * Inserts a new element into the list, using the given
- * comparison function to determine its position.
- *
- * Returns: the new start of the #GSList
- */
-GSList*
-g_slist_insert_sorted (GSList *list,
- gpointer data,
- GCompareFunc func)
-{
- return g_slist_insert_sorted_real (list, data, (GFunc) func, NULL);
-}
-
-/**
- * g_slist_insert_sorted_with_data:
- * @list: a #GSList
- * @data: the data for the new element
- * @func: the function to compare elements in the list.
- * It should return a number > 0 if the first parameter
- * comes after the second parameter in the sort order.
- * @user_data: data to pass to comparison function
- *
- * Inserts a new element into the list, using the given
- * comparison function to determine its position.
- *
- * Returns: the new start of the #GSList
- *
- * Since: 2.10
- */
-GSList*
-g_slist_insert_sorted_with_data (GSList *list,
- gpointer data,
- GCompareDataFunc func,
- gpointer user_data)
-{
- return g_slist_insert_sorted_real (list, data, (GFunc) func, user_data);
-}
-
-static GSList *
-g_slist_sort_merge (GSList *l1,
- GSList *l2,
- GFunc compare_func,
- gpointer user_data)
-{
- GSList list, *l;
- gint cmp;
-
- l=&list;
-
- while (l1 && l2)
- {
- cmp = ((GCompareDataFunc) compare_func) (l1->data, l2->data, user_data);
-
- if (cmp <= 0)
- {
- l=l->next=l1;
- l1=l1->next;
- }
- else
- {
- l=l->next=l2;
- l2=l2->next;
- }
- }
- l->next= l1 ? l1 : l2;
-
- return list.next;
-}
-
-static GSList *
-g_slist_sort_real (GSList *list,
- GFunc compare_func,
- gpointer user_data)
-{
- GSList *l1, *l2;
-
- if (!list)
- return NULL;
- if (!list->next)
- return list;
-
- l1 = list;
- l2 = list->next;
-
- while ((l2 = l2->next) != NULL)
- {
- if ((l2 = l2->next) == NULL)
- break;
- l1=l1->next;
- }
- l2 = l1->next;
- l1->next = NULL;
-
- return g_slist_sort_merge (g_slist_sort_real (list, compare_func, user_data),
- g_slist_sort_real (l2, compare_func, user_data),
- compare_func,
- user_data);
-}
-
-/**
- * g_slist_sort:
- * @list: a #GSList
- * @compare_func: the comparison function used to sort the #GSList.
- * This function is passed the data from 2 elements of the #GSList
- * and should return 0 if they are equal, a negative value if the
- * first element comes before the second, or a positive value if
- * the first element comes after the second.
- *
- * Sorts a #GSList using the given comparison function.
- *
- * Returns: the start of the sorted #GSList
- */
-GSList *
-g_slist_sort (GSList *list,
- GCompareFunc compare_func)
-{
- return g_slist_sort_real (list, (GFunc) compare_func, NULL);
-}
-
-/**
- * g_slist_sort_with_data:
- * @list: a #GSList
- * @compare_func: comparison function
- * @user_data: data to pass to comparison function
- *
- * Like g_slist_sort(), but the sort function accepts a user data argument.
- *
- * Returns: new head of the list
- */
-GSList *
-g_slist_sort_with_data (GSList *list,
- GCompareDataFunc compare_func,
- gpointer user_data)
-{
- return g_slist_sort_real (list, (GFunc) compare_func, user_data);
-}
-#endif
diff --git a/navit/support/glib/gslist.h b/navit/support/glib/gslist.h
deleted file mode 100644
index 89c76a88c..000000000
--- a/navit/support/glib/gslist.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_SLIST_H__
-#define __G_SLIST_H__
-
-/* #include <glib/gmem.h> */
-
-G_BEGIN_DECLS
-
-typedef struct _GSList GSList;
-
-struct _GSList
-{
- gpointer data;
- GSList *next;
-};
-
-/* Singly linked lists
- */
-GSList* g_slist_alloc (void) G_GNUC_WARN_UNUSED_RESULT;
-void g_slist_free (GSList *list);
-void g_slist_free_1 (GSList *list);
-#define g_slist_free1 g_slist_free_1
-void g_slist_free_full (GSList *list,
- GDestroyNotify free_func);
-GSList* g_slist_append (GSList *list,
- gpointer data) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_prepend (GSList *list,
- gpointer data) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_insert (GSList *list,
- gpointer data,
- gint position) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_insert_sorted (GSList *list,
- gpointer data,
- GCompareFunc func) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_insert_sorted_with_data (GSList *list,
- gpointer data,
- GCompareDataFunc func,
- gpointer user_data) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_insert_before (GSList *slist,
- GSList *sibling,
- gpointer data) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_concat (GSList *list1,
- GSList *list2) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_remove (GSList *list,
- gconstpointer data) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_remove_all (GSList *list,
- gconstpointer data) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_remove_link (GSList *list,
- GSList *link_) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_delete_link (GSList *list,
- GSList *link_) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_reverse (GSList *list) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_copy (GSList *list) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_nth (GSList *list,
- guint n);
-GSList* g_slist_find (GSList *list,
- gconstpointer data);
-GSList* g_slist_find_custom (GSList *list,
- gconstpointer data,
- GCompareFunc func);
-gint g_slist_position (GSList *list,
- GSList *llink);
-gint g_slist_index (GSList *list,
- gconstpointer data);
-GSList* g_slist_last (GSList *list);
-guint g_slist_length (GSList *list);
-void g_slist_foreach (GSList *list,
- GFunc func,
- gpointer user_data);
-GSList* g_slist_sort (GSList *list,
- GCompareFunc compare_func) G_GNUC_WARN_UNUSED_RESULT;
-GSList* g_slist_sort_with_data (GSList *list,
- GCompareDataFunc compare_func,
- gpointer user_data) G_GNUC_WARN_UNUSED_RESULT;
-gpointer g_slist_nth_data (GSList *list,
- guint n);
-
-#define g_slist_next(slist) ((slist) ? (((GSList *)(slist))->next) : NULL)
-
-#ifndef G_DISABLE_DEPRECATED
-void g_slist_push_allocator (gpointer dummy);
-void g_slist_pop_allocator (void);
-#endif
-
-G_END_DECLS
-
-#endif /* __G_SLIST_H__ */
diff --git a/navit/support/glib/gstrfuncs.c b/navit/support/glib/gstrfuncs.c
deleted file mode 100644
index 29b539b70..000000000
--- a/navit/support/glib/gstrfuncs.c
+++ /dev/null
@@ -1,3133 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * MT safe
- */
-
-#include "config.h"
-
-#define _GNU_SOURCE /* For stpcpy */
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <locale.h>
-#include <errno.h>
-#include <ctype.h> /* For tolower() */
-#if !defined (HAVE_STRSIGNAL) || !defined(NO_SYS_SIGLIST_DECL)
-#include <signal.h>
-#endif
-
-#include "glib.h"
-#include "gprintf.h"
-#include "gprintfint.h"
-#include "glibintl.h"
-
-#include "galias.h"
-#include "gslist.h"
-
-#ifdef G_OS_WIN32
-#include <windows.h>
-#endif
-
-/* do not include <unistd.h> in this place since it
- * interferes with g_strsignal() on some OSes
- */
-
-static const guint16 ascii_table_data[256] = {
- 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004,
- 0x004, 0x104, 0x104, 0x004, 0x104, 0x104, 0x004, 0x004,
- 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004,
- 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004,
- 0x140, 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x0d0,
- 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x0d0,
- 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459, 0x459,
- 0x459, 0x459, 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x0d0,
- 0x0d0, 0x653, 0x653, 0x653, 0x653, 0x653, 0x653, 0x253,
- 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253,
- 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253, 0x253,
- 0x253, 0x253, 0x253, 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x0d0,
- 0x0d0, 0x473, 0x473, 0x473, 0x473, 0x473, 0x473, 0x073,
- 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073,
- 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073,
- 0x073, 0x073, 0x073, 0x0d0, 0x0d0, 0x0d0, 0x0d0, 0x004
- /* the upper 128 are all zeroes */
-};
-
-const guint16 * const g_ascii_table = ascii_table_data;
-
-gchar*
-g_strdup (const gchar *str)
-{
- gchar *new_str;
- gsize length;
-
- if (str)
- {
- length = strlen (str) + 1;
- new_str = g_new (char, length);
- memcpy (new_str, str, length);
- }
- else
- new_str = NULL;
-
- return new_str;
-}
-
-gpointer
-g_memdup (gconstpointer mem,
- guint byte_size)
-{
- gpointer new_mem;
-
- if (mem)
- {
- new_mem = g_malloc (byte_size);
- memcpy (new_mem, mem, byte_size);
- }
- else
- new_mem = NULL;
-
- return new_mem;
-}
-
-/**
- * g_strndup:
- * @str: the string to duplicate
- * @n: the maximum number of bytes to copy from @str
- *
- * Duplicates the first @n bytes of a string, returning a newly-allocated
- * buffer @n + 1 bytes long which will always be nul-terminated.
- * If @str is less than @n bytes long the buffer is padded with nuls.
- * If @str is %NULL it returns %NULL.
- * The returned value should be freed when no longer needed.
- *
- * <note><para>
- * To copy a number of characters from a UTF-8 encoded string, use
- * g_utf8_strncpy() instead.
- * </para></note>
- *
- * Returns: a newly-allocated buffer containing the first @n bytes
- * of @str, nul-terminated
- */
-gchar*
-g_strndup (const gchar *str,
- gsize n)
-{
- gchar *new_str;
-
- if (str)
- {
- new_str = g_new (gchar, n + 1);
- strncpy (new_str, str, n);
- new_str[n] = '\0';
- }
- else
- new_str = NULL;
-
- return new_str;
-}
-
-/**
- * g_strnfill:
- * @length: the length of the new string
- * @fill_char: the byte to fill the string with
- *
- * Creates a new string @length bytes long filled with @fill_char.
- * The returned string should be freed when no longer needed.
- *
- * Returns: a newly-allocated string filled the @fill_char
- */
-gchar*
-g_strnfill (gsize length,
- gchar fill_char)
-{
- gchar *str;
-
- str = g_new (gchar, length + 1);
- memset (str, (guchar)fill_char, length);
- str[length] = '\0';
-
- return str;
-}
-
-/**
- * g_stpcpy:
- * @dest: destination buffer.
- * @src: source string.
- *
- * Copies a nul-terminated string into the dest buffer, include the
- * trailing nul, and return a pointer to the trailing nul byte.
- * This is useful for concatenating multiple strings together
- * without having to repeatedly scan for the end.
- *
- * Return value: a pointer to trailing nul byte.
- **/
-gchar *
-g_stpcpy (gchar *dest,
- const gchar *src)
-{
-#ifdef HAVE_STPCPY
- g_return_val_if_fail (dest != NULL, NULL);
- g_return_val_if_fail (src != NULL, NULL);
- return stpcpy (dest, src);
-#else
- register gchar *d = dest;
- register const gchar *s = src;
-
- g_return_val_if_fail (dest != NULL, NULL);
- g_return_val_if_fail (src != NULL, NULL);
- do
- *d++ = *s;
- while (*s++ != '\0');
-
- return d - 1;
-#endif
-}
-
-gchar*
-g_strdup_vprintf (const gchar *format,
- va_list args)
-{
- gchar *string = NULL;
-
- g_vasprintf (&string, format, args);
-
- return string;
-}
-
-gchar*
-g_strdup_printf (const gchar *format,
- ...)
-{
- gchar *buffer;
- va_list args;
-
- va_start (args, format);
- buffer = g_strdup_vprintf (format, args);
- va_end (args);
-
- return buffer;
-}
-
-gchar*
-g_strconcat (const gchar *string1, ...)
-{
- gsize l;
- va_list args;
- gchar *s;
- gchar *concat;
- gchar *ptr;
-
- if (!string1)
- return NULL;
-
- l = 1 + strlen (string1);
- va_start (args, string1);
- s = va_arg (args, gchar*);
- while (s)
- {
- l += strlen (s);
- s = va_arg (args, gchar*);
- }
- va_end (args);
-
- concat = g_new (gchar, l);
- ptr = concat;
-
- ptr = g_stpcpy (ptr, string1);
- va_start (args, string1);
- s = va_arg (args, gchar*);
- while (s)
- {
- ptr = g_stpcpy (ptr, s);
- s = va_arg (args, gchar*);
- }
- va_end (args);
-
- return concat;
-}
-
-/**
- * g_strtod:
- * @nptr: the string to convert to a numeric value.
- * @endptr: if non-%NULL, it returns the character after
- * the last character used in the conversion.
- *
- * Converts a string to a #gdouble value.
- * It calls the standard strtod() function to handle the conversion, but
- * if the string is not completely converted it attempts the conversion
- * again with g_ascii_strtod(), and returns the best match.
- *
- * This function should seldomly be used. The normal situation when reading
- * numbers not for human consumption is to use g_ascii_strtod(). Only when
- * you know that you must expect both locale formatted and C formatted numbers
- * should you use this. Make sure that you don't pass strings such as comma
- * separated lists of values, since the commas may be interpreted as a decimal
- * point in some locales, causing unexpected results.
- *
- * Return value: the #gdouble value.
- **/
-gdouble
-g_strtod (const gchar *nptr,
- gchar **endptr)
-{
- gchar *fail_pos_1;
- gchar *fail_pos_2;
- gdouble val_1;
- gdouble val_2 = 0;
-
- g_return_val_if_fail (nptr != NULL, 0);
-
- fail_pos_1 = NULL;
- fail_pos_2 = NULL;
-
- val_1 = strtod (nptr, &fail_pos_1);
-
- if (fail_pos_1 && fail_pos_1[0] != 0)
- val_2 = g_ascii_strtod (nptr, &fail_pos_2);
-
- if (!fail_pos_1 || fail_pos_1[0] == 0 || fail_pos_1 >= fail_pos_2)
- {
- if (endptr)
- *endptr = fail_pos_1;
- return val_1;
- }
- else
- {
- if (endptr)
- *endptr = fail_pos_2;
- return val_2;
- }
-}
-
-/**
- * g_ascii_strtod:
- * @nptr: the string to convert to a numeric value.
- * @endptr: if non-%NULL, it returns the character after
- * the last character used in the conversion.
- *
- * Converts a string to a #gdouble value.
- *
- * This function behaves like the standard strtod() function
- * does in the C locale. It does this without actually changing
- * the current locale, since that would not be thread-safe.
- * A limitation of the implementation is that this function
- * will still accept localized versions of infinities and NANs.
- *
- * This function is typically used when reading configuration
- * files or other non-user input that should be locale independent.
- * To handle input from the user you should normally use the
- * locale-sensitive system strtod() function.
- *
- * To convert from a #gdouble to a string in a locale-insensitive
- * way, use g_ascii_dtostr().
- *
- * If the correct value would cause overflow, plus or minus %HUGE_VAL
- * is returned (according to the sign of the value), and %ERANGE is
- * stored in %errno. If the correct value would cause underflow,
- * zero is returned and %ERANGE is stored in %errno.
- *
- * This function resets %errno before calling strtod() so that
- * you can reliably detect overflow and underflow.
- *
- * Return value: the #gdouble value.
- **/
-gdouble
-g_ascii_strtod (const gchar *nptr,
- gchar **endptr)
-{
- gchar *fail_pos;
- gdouble val;
- struct lconv *locale_data;
- const char *decimal_point;
- int decimal_point_len;
- const char *p, *decimal_point_pos;
- const char *end = NULL; /* Silence gcc */
- int strtod_errno;
-
- g_return_val_if_fail (nptr != NULL, 0);
-
- fail_pos = NULL;
-
-#ifdef HAVE_API_ANDROID
- decimal_point = ".";
- decimal_point_len = 1;
-#else
- locale_data = localeconv ();
- decimal_point = locale_data->decimal_point;
- decimal_point_len = strlen (decimal_point);
-#endif
-
-#if NOT_NEEDED_FOR_NAVIT
- g_assert (decimal_point_len != 0);
-#endif /* NOT_NEEDED_FOR_NAVIT */
-
- decimal_point_pos = NULL;
- end = NULL;
-
- if (decimal_point[0] != '.' ||
- decimal_point[1] != 0)
- {
- p = nptr;
- /* Skip leading space */
- while (g_ascii_isspace (*p))
- p++;
-
- /* Skip leading optional sign */
- if (*p == '+' || *p == '-')
- p++;
-
- if (p[0] == '0' &&
- (p[1] == 'x' || p[1] == 'X'))
- {
- p += 2;
- /* HEX - find the (optional) decimal point */
-
- while (g_ascii_isxdigit (*p))
- p++;
-
- if (*p == '.')
- decimal_point_pos = p++;
-
- while (g_ascii_isxdigit (*p))
- p++;
-
- if (*p == 'p' || *p == 'P')
- p++;
- if (*p == '+' || *p == '-')
- p++;
- while (g_ascii_isdigit (*p))
- p++;
-
- end = p;
- }
- else if (g_ascii_isdigit (*p) || *p == '.')
- {
- while (g_ascii_isdigit (*p))
- p++;
-
- if (*p == '.')
- decimal_point_pos = p++;
-
- while (g_ascii_isdigit (*p))
- p++;
-
- if (*p == 'e' || *p == 'E')
- p++;
- if (*p == '+' || *p == '-')
- p++;
- while (g_ascii_isdigit (*p))
- p++;
-
- end = p;
- }
- /* For the other cases, we need not convert the decimal point */
- }
-
- if (decimal_point_pos)
- {
- char *copy, *c;
-
- /* We need to convert the '.' to the locale specific decimal point */
- copy = g_malloc (end - nptr + 1 + decimal_point_len);
-
- c = copy;
- memcpy (c, nptr, decimal_point_pos - nptr);
- c += decimal_point_pos - nptr;
- memcpy (c, decimal_point, decimal_point_len);
- c += decimal_point_len;
- memcpy (c, decimal_point_pos + 1, end - (decimal_point_pos + 1));
- c += end - (decimal_point_pos + 1);
- *c = 0;
-
- errno = 0;
- val = strtod (copy, &fail_pos);
- strtod_errno = errno;
-
- if (fail_pos)
- {
- if (fail_pos - copy > decimal_point_pos - nptr)
- fail_pos = (char *)nptr + (fail_pos - copy) - (decimal_point_len - 1);
- else
- fail_pos = (char *)nptr + (fail_pos - copy);
- }
-
- g_free (copy);
-
- }
- else if (end)
- {
- char *copy;
-
- copy = g_malloc (end - (char *)nptr + 1);
- memcpy (copy, nptr, end - nptr);
- *(copy + (end - (char *)nptr)) = 0;
-
- errno = 0;
- val = strtod (copy, &fail_pos);
- strtod_errno = errno;
-
- if (fail_pos)
- {
- fail_pos = (char *)nptr + (fail_pos - copy);
- }
-
- g_free (copy);
- }
- else
- {
- errno = 0;
- val = strtod (nptr, &fail_pos);
- strtod_errno = errno;
- }
-
- if (endptr)
- *endptr = fail_pos;
-
- errno = strtod_errno;
-
- return val;
-}
-
-
-/**
- * g_ascii_dtostr:
- * @buffer: A buffer to place the resulting string in
- * @buf_len: The length of the buffer.
- * @d: The #gdouble to convert
- *
- * Converts a #gdouble to a string, using the '.' as
- * decimal point.
- *
- * This functions generates enough precision that converting
- * the string back using g_ascii_strtod() gives the same machine-number
- * (on machines with IEEE compatible 64bit doubles). It is
- * guaranteed that the size of the resulting string will never
- * be larger than @G_ASCII_DTOSTR_BUF_SIZE bytes.
- *
- * Return value: The pointer to the buffer with the converted string.
- **/
-gchar *
-g_ascii_dtostr (gchar *buffer,
- gint buf_len,
- gdouble d)
-{
- return g_ascii_formatd (buffer, buf_len, "%.17g", d);
-}
-
-/**
- * g_ascii_formatd:
- * @buffer: A buffer to place the resulting string in
- * @buf_len: The length of the buffer.
- * @format: The printf()-style format to use for the
- * code to use for converting.
- * @d: The #gdouble to convert
- *
- * Converts a #gdouble to a string, using the '.' as
- * decimal point. To format the number you pass in
- * a printf()-style format string. Allowed conversion
- * specifiers are 'e', 'E', 'f', 'F', 'g' and 'G'.
- *
- * If you just want to want to serialize the value into a
- * string, use g_ascii_dtostr().
- *
- * Return value: The pointer to the buffer with the converted string.
- **/
-gchar *
-g_ascii_formatd (gchar *buffer,
- gint buf_len,
- const gchar *format,
- gdouble d)
-{
- struct lconv *locale_data;
- const char *decimal_point;
- int decimal_point_len;
- gchar *p;
- int rest_len;
- gchar format_char;
-
- g_return_val_if_fail (buffer != NULL, NULL);
- g_return_val_if_fail (format[0] == '%', NULL);
- g_return_val_if_fail (strpbrk (format + 1, "'l%") == NULL, NULL);
-
- format_char = format[strlen (format) - 1];
-
- g_return_val_if_fail (format_char == 'e' || format_char == 'E' ||
- format_char == 'f' || format_char == 'F' ||
- format_char == 'g' || format_char == 'G',
- NULL);
-
- if (format[0] != '%')
- return NULL;
-
- if (strpbrk (format + 1, "'l%"))
- return NULL;
-
- if (!(format_char == 'e' || format_char == 'E' ||
- format_char == 'f' || format_char == 'F' ||
- format_char == 'g' || format_char == 'G'))
- return NULL;
-
-
- _g_snprintf (buffer, buf_len, format, d);
-
-#ifdef HAVE_API_ANDROID
- decimal_point = ".";
- decimal_point_len = 1;
-#else
- locale_data = localeconv ();
- decimal_point = locale_data->decimal_point;
- decimal_point_len = strlen (decimal_point);
-#endif
-
-#if NOT_NEEDED_FOR_NAVIT
- g_assert (decimal_point_len != 0);
-#endif /* NOT_NEEDED_FOR_NAVIT */
-
- if (decimal_point[0] != '.' ||
- decimal_point[1] != 0)
- {
- p = buffer;
-
- while (g_ascii_isspace (*p))
- p++;
-
- if (*p == '+' || *p == '-')
- p++;
-
- while (isdigit ((guchar)*p))
- p++;
-
- if (strncmp (p, decimal_point, decimal_point_len) == 0)
- {
- *p = '.';
- p++;
- if (decimal_point_len > 1)
- {
- rest_len = strlen (p + (decimal_point_len-1));
- memmove (p, p + (decimal_point_len-1), rest_len);
- p[rest_len] = 0;
- }
- }
- }
-
- return buffer;
-}
-
-static guint64
-g_parse_long_long (const gchar *nptr,
- const gchar **endptr,
- guint base,
- gboolean *negative)
-{
- /* this code is based on on the strtol(3) code from GNU libc released under
- * the GNU Lesser General Public License.
- *
- * Copyright (C) 1991,92,94,95,96,97,98,99,2000,01,02
- * Free Software Foundation, Inc.
- */
-#define ISSPACE(c) ((c) == ' ' || (c) == '\f' || (c) == '\n' || \
- (c) == '\r' || (c) == '\t' || (c) == '\v')
-#define ISUPPER(c) ((c) >= 'A' && (c) <= 'Z')
-#define ISLOWER(c) ((c) >= 'a' && (c) <= 'z')
-#define ISALPHA(c) (ISUPPER (c) || ISLOWER (c))
-#define TOUPPER(c) (ISLOWER (c) ? (c) - 'a' + 'A' : (c))
-#define TOLOWER(c) (ISUPPER (c) ? (c) - 'A' + 'a' : (c))
- gboolean overflow;
- guint64 cutoff;
- guint64 cutlim;
- guint64 ui64;
- const gchar *s, *save;
- guchar c;
-
- g_return_val_if_fail (nptr != NULL, 0);
-
- *negative = FALSE;
- if (base == 1 || base > 36)
- {
- errno = EINVAL;
- if (endptr)
- *endptr = nptr;
- return 0;
- }
-
- save = s = nptr;
-
- /* Skip white space. */
- while (ISSPACE (*s))
- ++s;
-
- if (G_UNLIKELY (!*s))
- goto noconv;
-
- /* Check for a sign. */
- if (*s == '-')
- {
- *negative = TRUE;
- ++s;
- }
- else if (*s == '+')
- ++s;
-
- /* Recognize number prefix and if BASE is zero, figure it out ourselves. */
- if (*s == '0')
- {
- if ((base == 0 || base == 16) && TOUPPER (s[1]) == 'X')
- {
- s += 2;
- base = 16;
- }
- else if (base == 0)
- base = 8;
- }
- else if (base == 0)
- base = 10;
-
- /* Save the pointer so we can check later if anything happened. */
- save = s;
- cutoff = G_MAXUINT64 / base;
- cutlim = G_MAXUINT64 % base;
-
- overflow = FALSE;
- ui64 = 0;
- c = *s;
- for (; c; c = *++s)
- {
- if (c >= '0' && c <= '9')
- c -= '0';
- else if (ISALPHA (c))
- c = TOUPPER (c) - 'A' + 10;
- else
- break;
- if (c >= base)
- break;
- /* Check for overflow. */
- if (ui64 > cutoff || (ui64 == cutoff && c > cutlim))
- overflow = TRUE;
- else
- {
- ui64 *= base;
- ui64 += c;
- }
- }
-
- /* Check if anything actually happened. */
- if (s == save)
- goto noconv;
-
- /* Store in ENDPTR the address of one character
- past the last character we converted. */
- if (endptr)
- *endptr = s;
-
- if (G_UNLIKELY (overflow))
- {
- errno = ERANGE;
- return G_MAXUINT64;
- }
-
- return ui64;
-
- noconv:
- /* We must handle a special case here: the base is 0 or 16 and the
- first two characters are '0' and 'x', but the rest are no
- hexadecimal digits. This is no error case. We return 0 and
- ENDPTR points to the `x`. */
- if (endptr)
- {
- if (save - nptr >= 2 && TOUPPER (save[-1]) == 'X'
- && save[-2] == '0')
- *endptr = &save[-1];
- else
- /* There was no number to convert. */
- *endptr = nptr;
- }
- return 0;
-}
-
-/**
- * g_ascii_strtoull:
- * @nptr: the string to convert to a numeric value.
- * @endptr: if non-%NULL, it returns the character after
- * the last character used in the conversion.
- * @base: to be used for the conversion, 2..36 or 0
- *
- * Converts a string to a #guint64 value.
- * This function behaves like the standard strtoull() function
- * does in the C locale. It does this without actually
- * changing the current locale, since that would not be
- * thread-safe.
- *
- * This function is typically used when reading configuration
- * files or other non-user input that should be locale independent.
- * To handle input from the user you should normally use the
- * locale-sensitive system strtoull() function.
- *
- * If the correct value would cause overflow, %G_MAXUINT64
- * is returned, and %ERANGE is stored in %errno. If the base is
- * outside the valid range, zero is returned, and %EINVAL is stored
- * in %errno. If the string conversion fails, zero is returned, and
- * @endptr returns @nptr (if @endptr is non-%NULL).
- *
- * Return value: the #guint64 value or zero on error.
- *
- * Since: 2.2
- **/
-guint64
-g_ascii_strtoull (const gchar *nptr,
- gchar **endptr,
- guint base)
-{
- gboolean negative;
- guint64 result;
-
- result = g_parse_long_long (nptr, (const gchar **) endptr, base, &negative);
-
- /* Return the result of the appropriate sign. */
- return negative ? -result : result;
-}
-
-/**
- * g_ascii_strtoll:
- * @nptr: the string to convert to a numeric value.
- * @endptr: if non-%NULL, it returns the character after
- * the last character used in the conversion.
- * @base: to be used for the conversion, 2..36 or 0
- *
- * Converts a string to a #gint64 value.
- * This function behaves like the standard strtoll() function
- * does in the C locale. It does this without actually
- * changing the current locale, since that would not be
- * thread-safe.
- *
- * This function is typically used when reading configuration
- * files or other non-user input that should be locale independent.
- * To handle input from the user you should normally use the
- * locale-sensitive system strtoll() function.
- *
- * If the correct value would cause overflow, %G_MAXINT64 or %G_MININT64
- * is returned, and %ERANGE is stored in %errno. If the base is
- * outside the valid range, zero is returned, and %EINVAL is stored
- * in %errno. If the string conversion fails, zero is returned, and
- * @endptr returns @nptr (if @endptr is non-%NULL).
- *
- * Return value: the #gint64 value or zero on error.
- *
- * Since: 2.12
- **/
-gint64
-g_ascii_strtoll (const gchar *nptr,
- gchar **endptr,
- guint base)
-{
- gboolean negative;
- guint64 result;
-
- result = g_parse_long_long (nptr, (const gchar **) endptr, base, &negative);
-
- if (negative && result > (guint64) G_MININT64)
- {
- errno = ERANGE;
- return G_MININT64;
- }
- else if (!negative && result > (guint64) G_MAXINT64)
- {
- errno = ERANGE;
- return G_MAXINT64;
- }
- else if (negative)
- return - (gint64) result;
- else
- return (gint64) result;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-G_CONST_RETURN gchar*
-g_strerror (gint errnum)
-{
- static GStaticPrivate msg_private = G_STATIC_PRIVATE_INIT;
- char *msg;
- int saved_errno = errno;
-
-#ifdef HAVE_STRERROR
- const char *msg_locale;
-
- msg_locale = strerror (errnum);
- if (g_get_charset (NULL))
- {
- errno = saved_errno;
- return msg_locale;
- }
- else
- {
- gchar *msg_utf8 = g_locale_to_utf8 (msg_locale, -1, NULL, NULL, NULL);
- if (msg_utf8)
- {
- /* Stick in the quark table so that we can return a static result
- */
- GQuark msg_quark = g_quark_from_string (msg_utf8);
- g_free (msg_utf8);
-
- msg_utf8 = (gchar *) g_quark_to_string (msg_quark);
- errno = saved_errno;
- return msg_utf8;
- }
- }
-#elif NO_SYS_ERRLIST
- switch (errnum)
- {
-#ifdef E2BIG
- case E2BIG: return "argument list too long";
-#endif
-#ifdef EACCES
- case EACCES: return "permission denied";
-#endif
-#ifdef EADDRINUSE
- case EADDRINUSE: return "address already in use";
-#endif
-#ifdef EADDRNOTAVAIL
- case EADDRNOTAVAIL: return "can't assign requested address";
-#endif
-#ifdef EADV
- case EADV: return "advertise error";
-#endif
-#ifdef EAFNOSUPPORT
- case EAFNOSUPPORT: return "address family not supported by protocol family";
-#endif
-#ifdef EAGAIN
- case EAGAIN: return "try again";
-#endif
-#ifdef EALIGN
- case EALIGN: return "EALIGN";
-#endif
-#ifdef EALREADY
- case EALREADY: return "operation already in progress";
-#endif
-#ifdef EBADE
- case EBADE: return "bad exchange descriptor";
-#endif
-#ifdef EBADF
- case EBADF: return "bad file number";
-#endif
-#ifdef EBADFD
- case EBADFD: return "file descriptor in bad state";
-#endif
-#ifdef EBADMSG
- case EBADMSG: return "not a data message";
-#endif
-#ifdef EBADR
- case EBADR: return "bad request descriptor";
-#endif
-#ifdef EBADRPC
- case EBADRPC: return "RPC structure is bad";
-#endif
-#ifdef EBADRQC
- case EBADRQC: return "bad request code";
-#endif
-#ifdef EBADSLT
- case EBADSLT: return "invalid slot";
-#endif
-#ifdef EBFONT
- case EBFONT: return "bad font file format";
-#endif
-#ifdef EBUSY
- case EBUSY: return "mount device busy";
-#endif
-#ifdef ECHILD
- case ECHILD: return "no children";
-#endif
-#ifdef ECHRNG
- case ECHRNG: return "channel number out of range";
-#endif
-#ifdef ECOMM
- case ECOMM: return "communication error on send";
-#endif
-#ifdef ECONNABORTED
- case ECONNABORTED: return "software caused connection abort";
-#endif
-#ifdef ECONNREFUSED
- case ECONNREFUSED: return "connection refused";
-#endif
-#ifdef ECONNRESET
- case ECONNRESET: return "connection reset by peer";
-#endif
-#if defined(EDEADLK) && (!defined(EWOULDBLOCK) || (EDEADLK != EWOULDBLOCK))
- case EDEADLK: return "resource deadlock avoided";
-#endif
-#ifdef EDEADLOCK
- case EDEADLOCK: return "resource deadlock avoided";
-#endif
-#ifdef EDESTADDRREQ
- case EDESTADDRREQ: return "destination address required";
-#endif
-#ifdef EDIRTY
- case EDIRTY: return "mounting a dirty fs w/o force";
-#endif
-#ifdef EDOM
- case EDOM: return "math argument out of range";
-#endif
-#ifdef EDOTDOT
- case EDOTDOT: return "cross mount point";
-#endif
-#ifdef EDQUOT
- case EDQUOT: return "disk quota exceeded";
-#endif
-#ifdef EDUPPKG
- case EDUPPKG: return "duplicate package name";
-#endif
-#ifdef EEXIST
- case EEXIST: return "file already exists";
-#endif
-#ifdef EFAULT
- case EFAULT: return "bad address in system call argument";
-#endif
-#ifdef EFBIG
- case EFBIG: return "file too large";
-#endif
-#ifdef EHOSTDOWN
- case EHOSTDOWN: return "host is down";
-#endif
-#ifdef EHOSTUNREACH
- case EHOSTUNREACH: return "host is unreachable";
-#endif
-#ifdef EIDRM
- case EIDRM: return "identifier removed";
-#endif
-#ifdef EINIT
- case EINIT: return "initialization error";
-#endif
-#ifdef EINPROGRESS
- case EINPROGRESS: return "operation now in progress";
-#endif
-#ifdef EINTR
- case EINTR: return "interrupted system call";
-#endif
-#ifdef EINVAL
- case EINVAL: return "invalid argument";
-#endif
-#ifdef EIO
- case EIO: return "I/O error";
-#endif
-#ifdef EISCONN
- case EISCONN: return "socket is already connected";
-#endif
-#ifdef EISDIR
- case EISDIR: return "is a directory";
-#endif
-#ifdef EISNAME
- case EISNAM: return "is a name file";
-#endif
-#ifdef ELBIN
- case ELBIN: return "ELBIN";
-#endif
-#ifdef EL2HLT
- case EL2HLT: return "level 2 halted";
-#endif
-#ifdef EL2NSYNC
- case EL2NSYNC: return "level 2 not synchronized";
-#endif
-#ifdef EL3HLT
- case EL3HLT: return "level 3 halted";
-#endif
-#ifdef EL3RST
- case EL3RST: return "level 3 reset";
-#endif
-#ifdef ELIBACC
- case ELIBACC: return "can not access a needed shared library";
-#endif
-#ifdef ELIBBAD
- case ELIBBAD: return "accessing a corrupted shared library";
-#endif
-#ifdef ELIBEXEC
- case ELIBEXEC: return "can not exec a shared library directly";
-#endif
-#ifdef ELIBMAX
- case ELIBMAX: return "attempting to link in more shared libraries than system limit";
-#endif
-#ifdef ELIBSCN
- case ELIBSCN: return ".lib section in a.out corrupted";
-#endif
-#ifdef ELNRNG
- case ELNRNG: return "link number out of range";
-#endif
-#ifdef ELOOP
- case ELOOP: return "too many levels of symbolic links";
-#endif
-#ifdef EMFILE
- case EMFILE: return "too many open files";
-#endif
-#ifdef EMLINK
- case EMLINK: return "too many links";
-#endif
-#ifdef EMSGSIZE
- case EMSGSIZE: return "message too long";
-#endif
-#ifdef EMULTIHOP
- case EMULTIHOP: return "multihop attempted";
-#endif
-#ifdef ENAMETOOLONG
- case ENAMETOOLONG: return "file name too long";
-#endif
-#ifdef ENAVAIL
- case ENAVAIL: return "not available";
-#endif
-#ifdef ENET
- case ENET: return "ENET";
-#endif
-#ifdef ENETDOWN
- case ENETDOWN: return "network is down";
-#endif
-#ifdef ENETRESET
- case ENETRESET: return "network dropped connection on reset";
-#endif
-#ifdef ENETUNREACH
- case ENETUNREACH: return "network is unreachable";
-#endif
-#ifdef ENFILE
- case ENFILE: return "file table overflow";
-#endif
-#ifdef ENOANO
- case ENOANO: return "anode table overflow";
-#endif
-#if defined(ENOBUFS) && (!defined(ENOSR) || (ENOBUFS != ENOSR))
- case ENOBUFS: return "no buffer space available";
-#endif
-#ifdef ENOCSI
- case ENOCSI: return "no CSI structure available";
-#endif
-#ifdef ENODATA
- case ENODATA: return "no data available";
-#endif
-#ifdef ENODEV
- case ENODEV: return "no such device";
-#endif
-#ifdef ENOENT
- case ENOENT: return "no such file or directory";
-#endif
-#ifdef ENOEXEC
- case ENOEXEC: return "exec format error";
-#endif
-#ifdef ENOLCK
- case ENOLCK: return "no locks available";
-#endif
-#ifdef ENOLINK
- case ENOLINK: return "link has be severed";
-#endif
-#ifdef ENOMEM
- case ENOMEM: return "not enough memory";
-#endif
-#ifdef ENOMSG
- case ENOMSG: return "no message of desired type";
-#endif
-#ifdef ENONET
- case ENONET: return "machine is not on the network";
-#endif
-#ifdef ENOPKG
- case ENOPKG: return "package not installed";
-#endif
-#ifdef ENOPROTOOPT
- case ENOPROTOOPT: return "bad proocol option";
-#endif
-#ifdef ENOSPC
- case ENOSPC: return "no space left on device";
-#endif
-#ifdef ENOSR
- case ENOSR: return "out of stream resources";
-#endif
-#ifdef ENOSTR
- case ENOSTR: return "not a stream device";
-#endif
-#ifdef ENOSYM
- case ENOSYM: return "unresolved symbol name";
-#endif
-#ifdef ENOSYS
- case ENOSYS: return "function not implemented";
-#endif
-#ifdef ENOTBLK
- case ENOTBLK: return "block device required";
-#endif
-#ifdef ENOTCONN
- case ENOTCONN: return "socket is not connected";
-#endif
-#ifdef ENOTDIR
- case ENOTDIR: return "not a directory";
-#endif
-#ifdef ENOTEMPTY
- case ENOTEMPTY: return "directory not empty";
-#endif
-#ifdef ENOTNAM
- case ENOTNAM: return "not a name file";
-#endif
-#ifdef ENOTSOCK
- case ENOTSOCK: return "socket operation on non-socket";
-#endif
-#ifdef ENOTTY
- case ENOTTY: return "inappropriate device for ioctl";
-#endif
-#ifdef ENOTUNIQ
- case ENOTUNIQ: return "name not unique on network";
-#endif
-#ifdef ENXIO
- case ENXIO: return "no such device or address";
-#endif
-#ifdef EOPNOTSUPP
- case EOPNOTSUPP: return "operation not supported on socket";
-#endif
-#ifdef EPERM
- case EPERM: return "not owner";
-#endif
-#ifdef EPFNOSUPPORT
- case EPFNOSUPPORT: return "protocol family not supported";
-#endif
-#ifdef EPIPE
- case EPIPE: return "broken pipe";
-#endif
-#ifdef EPROCLIM
- case EPROCLIM: return "too many processes";
-#endif
-#ifdef EPROCUNAVAIL
- case EPROCUNAVAIL: return "bad procedure for program";
-#endif
-#ifdef EPROGMISMATCH
- case EPROGMISMATCH: return "program version wrong";
-#endif
-#ifdef EPROGUNAVAIL
- case EPROGUNAVAIL: return "RPC program not available";
-#endif
-#ifdef EPROTO
- case EPROTO: return "protocol error";
-#endif
-#ifdef EPROTONOSUPPORT
- case EPROTONOSUPPORT: return "protocol not suppored";
-#endif
-#ifdef EPROTOTYPE
- case EPROTOTYPE: return "protocol wrong type for socket";
-#endif
-#ifdef ERANGE
- case ERANGE: return "math result unrepresentable";
-#endif
-#if defined(EREFUSED) && (!defined(ECONNREFUSED) || (EREFUSED != ECONNREFUSED))
- case EREFUSED: return "EREFUSED";
-#endif
-#ifdef EREMCHG
- case EREMCHG: return "remote address changed";
-#endif
-#ifdef EREMDEV
- case EREMDEV: return "remote device";
-#endif
-#ifdef EREMOTE
- case EREMOTE: return "pathname hit remote file system";
-#endif
-#ifdef EREMOTEIO
- case EREMOTEIO: return "remote i/o error";
-#endif
-#ifdef EREMOTERELEASE
- case EREMOTERELEASE: return "EREMOTERELEASE";
-#endif
-#ifdef EROFS
- case EROFS: return "read-only file system";
-#endif
-#ifdef ERPCMISMATCH
- case ERPCMISMATCH: return "RPC version is wrong";
-#endif
-#ifdef ERREMOTE
- case ERREMOTE: return "object is remote";
-#endif
-#ifdef ESHUTDOWN
- case ESHUTDOWN: return "can't send afer socket shutdown";
-#endif
-#ifdef ESOCKTNOSUPPORT
- case ESOCKTNOSUPPORT: return "socket type not supported";
-#endif
-#ifdef ESPIPE
- case ESPIPE: return "invalid seek";
-#endif
-#ifdef ESRCH
- case ESRCH: return "no such process";
-#endif
-#ifdef ESRMNT
- case ESRMNT: return "srmount error";
-#endif
-#ifdef ESTALE
- case ESTALE: return "stale remote file handle";
-#endif
-#ifdef ESUCCESS
- case ESUCCESS: return "Error 0";
-#endif
-#ifdef ETIME
- case ETIME: return "timer expired";
-#endif
-#ifdef ETIMEDOUT
- case ETIMEDOUT: return "connection timed out";
-#endif
-#ifdef ETOOMANYREFS
- case ETOOMANYREFS: return "too many references: can't splice";
-#endif
-#ifdef ETXTBSY
- case ETXTBSY: return "text file or pseudo-device busy";
-#endif
-#ifdef EUCLEAN
- case EUCLEAN: return "structure needs cleaning";
-#endif
-#ifdef EUNATCH
- case EUNATCH: return "protocol driver not attached";
-#endif
-#ifdef EUSERS
- case EUSERS: return "too many users";
-#endif
-#ifdef EVERSION
- case EVERSION: return "version mismatch";
-#endif
-#if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN))
- case EWOULDBLOCK: return "operation would block";
-#endif
-#ifdef EXDEV
- case EXDEV: return "cross-domain link";
-#endif
-#ifdef EXFULL
- case EXFULL: return "message tables full";
-#endif
- }
-#else /* NO_SYS_ERRLIST */
-#if NOT_NEEDED_FOR_NAVIT
- extern int sys_nerr;
- extern char *sys_errlist[];
-
- if ((errnum > 0) && (errnum <= sys_nerr))
- return sys_errlist [errnum];
-#else /* NOT_NEEDED_FOR_NAVIT */
- return NULL;
-#endif /* NOT_NEEDED_FOR_NAVIT */
-#endif /* NO_SYS_ERRLIST */
-
- msg = g_static_private_get (&msg_private);
- if (!msg)
- {
- msg = g_new (gchar, 64);
- g_static_private_set (&msg_private, msg, g_free);
- }
-
- _g_sprintf (msg, "unknown error (%d)", errnum);
-
- errno = saved_errno;
- return msg;
-}
-
-G_CONST_RETURN gchar*
-g_strsignal (gint signum)
-{
- static GStaticPrivate msg_private = G_STATIC_PRIVATE_INIT;
- char *msg;
-
-#ifdef HAVE_STRSIGNAL
- const char *msg_locale;
-
-#if defined(G_OS_BEOS) || defined(G_WITH_CYGWIN)
-extern const char *strsignal(int);
-#else
- /* this is declared differently (const) in string.h on BeOS */
- extern char *strsignal (int sig);
-#endif /* !G_OS_BEOS && !G_WITH_CYGWIN */
- msg_locale = strsignal (signum);
- if (g_get_charset (NULL))
- return msg_locale;
- else
- {
- gchar *msg_utf8 = g_locale_to_utf8 (msg_locale, -1, NULL, NULL, NULL);
- if (msg_utf8)
- {
- /* Stick in the quark table so that we can return a static result
- */
- GQuark msg_quark = g_quark_from_string (msg_utf8);
- g_free (msg_utf8);
-
- return g_quark_to_string (msg_quark);
- }
- }
-#elif NO_SYS_SIGLIST
- switch (signum)
- {
-#ifdef SIGHUP
- case SIGHUP: return "Hangup";
-#endif
-#ifdef SIGINT
- case SIGINT: return "Interrupt";
-#endif
-#ifdef SIGQUIT
- case SIGQUIT: return "Quit";
-#endif
-#ifdef SIGILL
- case SIGILL: return "Illegal instruction";
-#endif
-#ifdef SIGTRAP
- case SIGTRAP: return "Trace/breakpoint trap";
-#endif
-#ifdef SIGABRT
- case SIGABRT: return "IOT trap/Abort";
-#endif
-#ifdef SIGBUS
- case SIGBUS: return "Bus error";
-#endif
-#ifdef SIGFPE
- case SIGFPE: return "Floating point exception";
-#endif
-#ifdef SIGKILL
- case SIGKILL: return "Killed";
-#endif
-#ifdef SIGUSR1
- case SIGUSR1: return "User defined signal 1";
-#endif
-#ifdef SIGSEGV
- case SIGSEGV: return "Segmentation fault";
-#endif
-#ifdef SIGUSR2
- case SIGUSR2: return "User defined signal 2";
-#endif
-#ifdef SIGPIPE
- case SIGPIPE: return "Broken pipe";
-#endif
-#ifdef SIGALRM
- case SIGALRM: return "Alarm clock";
-#endif
-#ifdef SIGTERM
- case SIGTERM: return "Terminated";
-#endif
-#ifdef SIGSTKFLT
- case SIGSTKFLT: return "Stack fault";
-#endif
-#ifdef SIGCHLD
- case SIGCHLD: return "Child exited";
-#endif
-#ifdef SIGCONT
- case SIGCONT: return "Continued";
-#endif
-#ifdef SIGSTOP
- case SIGSTOP: return "Stopped (signal)";
-#endif
-#ifdef SIGTSTP
- case SIGTSTP: return "Stopped";
-#endif
-#ifdef SIGTTIN
- case SIGTTIN: return "Stopped (tty input)";
-#endif
-#ifdef SIGTTOU
- case SIGTTOU: return "Stopped (tty output)";
-#endif
-#ifdef SIGURG
- case SIGURG: return "Urgent condition";
-#endif
-#ifdef SIGXCPU
- case SIGXCPU: return "CPU time limit exceeded";
-#endif
-#ifdef SIGXFSZ
- case SIGXFSZ: return "File size limit exceeded";
-#endif
-#ifdef SIGVTALRM
- case SIGVTALRM: return "Virtual time alarm";
-#endif
-#ifdef SIGPROF
- case SIGPROF: return "Profile signal";
-#endif
-#ifdef SIGWINCH
- case SIGWINCH: return "Window size changed";
-#endif
-#ifdef SIGIO
- case SIGIO: return "Possible I/O";
-#endif
-#ifdef SIGPWR
- case SIGPWR: return "Power failure";
-#endif
-#ifdef SIGUNUSED
- case SIGUNUSED: return "Unused signal";
-#endif
- }
-#else /* NO_SYS_SIGLIST */
-
-#if NOT_NEEDED_FOR_NAVIT
-#ifdef NO_SYS_SIGLIST_DECL
- extern char *sys_siglist[]; /*(see Tue Jan 19 00:44:24 1999 in changelog)*/
-#endif
-
- return (char*) /* this function should return const --josh */ sys_siglist [signum];
-#else /* NOT_NEEDED_FOR_NAVIT */
- return NULL;
-#endif /* NOT_NEEDED_FOR_NAVIT */
-#endif /* NO_SYS_SIGLIST */
-
- msg = g_static_private_get (&msg_private);
- if (!msg)
- {
- msg = g_new (gchar, 64);
- g_static_private_set (&msg_private, msg, g_free);
- }
-
- _g_sprintf (msg, "unknown signal (%d)", signum);
-
- return msg;
-}
-#endif /* NOT_NEEDED_FOR_NAVIT */
-
-/* Functions g_strlcpy and g_strlcat were originally developed by
- * Todd C. Miller <Todd.Miller@courtesan.com> to simplify writing secure code.
- * See ftp://ftp.openbsd.org/pub/OpenBSD/src/lib/libc/string/strlcpy.3
- * for more information.
- */
-
-#ifdef HAVE_STRLCPY
-/* Use the native ones, if available; they might be implemented in assembly */
-gsize
-g_strlcpy (gchar *dest,
- const gchar *src,
- gsize dest_size)
-{
- g_return_val_if_fail (dest != NULL, 0);
- g_return_val_if_fail (src != NULL, 0);
-
- return strlcpy (dest, src, dest_size);
-}
-
-gsize
-g_strlcat (gchar *dest,
- const gchar *src,
- gsize dest_size)
-{
- g_return_val_if_fail (dest != NULL, 0);
- g_return_val_if_fail (src != NULL, 0);
-
- return strlcat (dest, src, dest_size);
-}
-
-#else /* ! HAVE_STRLCPY */
-/* g_strlcpy
- *
- * Copy string src to buffer dest (of buffer size dest_size). At most
- * dest_size-1 characters will be copied. Always NUL terminates
- * (unless dest_size == 0). This function does NOT allocate memory.
- * Unlike strncpy, this function doesn't pad dest (so it's often faster).
- * Returns size of attempted result, strlen(src),
- * so if retval >= dest_size, truncation occurred.
- */
-gsize
-g_strlcpy (gchar *dest,
- const gchar *src,
- gsize dest_size)
-{
- register gchar *d = dest;
- register const gchar *s = src;
- register gsize n = dest_size;
-
- g_return_val_if_fail (dest != NULL, 0);
- g_return_val_if_fail (src != NULL, 0);
-
- /* Copy as many bytes as will fit */
- if (n != 0 && --n != 0)
- do
- {
- register gchar c = *s++;
-
- *d++ = c;
- if (c == 0)
- break;
- }
- while (--n != 0);
-
- /* If not enough room in dest, add NUL and traverse rest of src */
- if (n == 0)
- {
- if (dest_size != 0)
- *d = 0;
- while (*s++)
- ;
- }
-
- return s - src - 1; /* count does not include NUL */
-}
-
-/* g_strlcat
- *
- * Appends string src to buffer dest (of buffer size dest_size).
- * At most dest_size-1 characters will be copied.
- * Unlike strncat, dest_size is the full size of dest, not the space left over.
- * This function does NOT allocate memory.
- * This always NUL terminates (unless siz == 0 or there were no NUL characters
- * in the dest_size characters of dest to start with).
- * Returns size of attempted result, which is
- * MIN (dest_size, strlen (original dest)) + strlen (src),
- * so if retval >= dest_size, truncation occurred.
- */
-gsize
-g_strlcat (gchar *dest,
- const gchar *src,
- gsize dest_size)
-{
- register gchar *d = dest;
- register const gchar *s = src;
- register gsize bytes_left = dest_size;
- gsize dlength; /* Logically, MIN (strlen (d), dest_size) */
-
- g_return_val_if_fail (dest != NULL, 0);
- g_return_val_if_fail (src != NULL, 0);
-
- /* Find the end of dst and adjust bytes left but don't go past end */
- while (*d != 0 && bytes_left-- != 0)
- d++;
- dlength = d - dest;
- bytes_left = dest_size - dlength;
-
- if (bytes_left == 0)
- return dlength + strlen (s);
-
- while (*s != 0)
- {
- if (bytes_left != 1)
- {
- *d++ = *s;
- bytes_left--;
- }
- s++;
- }
- *d = 0;
-
- return dlength + (s - src); /* count does not include NUL */
-}
-#endif /* ! HAVE_STRLCPY */
-
-/**
- * g_ascii_strdown:
- * @str: a string.
- * @len: length of @str in bytes, or -1 if @str is nul-terminated.
- *
- * Converts all upper case ASCII letters to lower case ASCII letters.
- *
- * Return value: a newly-allocated string, with all the upper case
- * characters in @str converted to lower case, with
- * semantics that exactly match g_ascii_tolower(). (Note
- * that this is unlike the old g_strdown(), which modified
- * the string in place.)
- **/
-gchar*
-g_ascii_strdown (const gchar *str,
- gssize len)
-{
- gchar *result, *s;
-
- g_return_val_if_fail (str != NULL, NULL);
-
- if (len < 0)
- len = strlen (str);
-
- result = g_strndup (str, len);
- for (s = result; *s; s++)
- *s = g_ascii_tolower (*s);
-
- return result;
-}
-
-/**
- * g_ascii_strup:
- * @str: a string.
- * @len: length of @str in bytes, or -1 if @str is nul-terminated.
- *
- * Converts all lower case ASCII letters to upper case ASCII letters.
- *
- * Return value: a newly allocated string, with all the lower case
- * characters in @str converted to upper case, with
- * semantics that exactly match g_ascii_toupper(). (Note
- * that this is unlike the old g_strup(), which modified
- * the string in place.)
- **/
-gchar*
-g_ascii_strup (const gchar *str,
- gssize len)
-{
- gchar *result, *s;
-
- g_return_val_if_fail (str != NULL, NULL);
-
- if (len < 0)
- len = strlen (str);
-
- result = g_strndup (str, len);
- for (s = result; *s; s++)
- *s = g_ascii_toupper (*s);
-
- return result;
-}
-
-/**
- * g_strdown:
- * @string: the string to convert.
- *
- * Converts a string to lower case.
- *
- * Return value: the string
- *
- * Deprecated:2.2: This function is totally broken for the reasons discussed
- * in the g_strncasecmp() docs - use g_ascii_strdown() or g_utf8_strdown()
- * instead.
- **/
-gchar*
-g_strdown (gchar *string)
-{
- register guchar *s;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- s = (guchar *) string;
-
- while (*s)
- {
- if (isupper (*s))
- *s = tolower (*s);
- s++;
- }
-
- return (gchar *) string;
-}
-
-/**
- * g_strup:
- * @string: the string to convert.
- *
- * Converts a string to upper case.
- *
- * Return value: the string
- *
- * Deprecated:2.2: This function is totally broken for the reasons discussed
- * in the g_strncasecmp() docs - use g_ascii_strup() or g_utf8_strup() instead.
- **/
-gchar*
-g_strup (gchar *string)
-{
- register guchar *s;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- s = (guchar *) string;
-
- while (*s)
- {
- if (islower (*s))
- *s = toupper (*s);
- s++;
- }
-
- return (gchar *) string;
-}
-
-gchar*
-g_strreverse (gchar *string)
-{
- g_return_val_if_fail (string != NULL, NULL);
-
- if (*string)
- {
- register gchar *h, *t;
-
- h = string;
- t = string + strlen (string) - 1;
-
- while (h < t)
- {
- register gchar c;
-
- c = *h;
- *h = *t;
- h++;
- *t = c;
- t--;
- }
- }
-
- return string;
-}
-
-/**
- * g_ascii_tolower:
- * @c: any character.
- *
- * Convert a character to ASCII lower case.
- *
- * Unlike the standard C library tolower() function, this only
- * recognizes standard ASCII letters and ignores the locale, returning
- * all non-ASCII characters unchanged, even if they are lower case
- * letters in a particular character set. Also unlike the standard
- * library function, this takes and returns a char, not an int, so
- * don't call it on %EOF but no need to worry about casting to #guchar
- * before passing a possibly non-ASCII character in.
- *
- * Return value: the result of converting @c to lower case.
- * If @c is not an ASCII upper case letter,
- * @c is returned unchanged.
- **/
-gchar
-g_ascii_tolower (gchar c)
-{
- return g_ascii_isupper (c) ? c - 'A' + 'a' : c;
-}
-
-/**
- * g_ascii_toupper:
- * @c: any character.
- *
- * Convert a character to ASCII upper case.
- *
- * Unlike the standard C library toupper() function, this only
- * recognizes standard ASCII letters and ignores the locale, returning
- * all non-ASCII characters unchanged, even if they are upper case
- * letters in a particular character set. Also unlike the standard
- * library function, this takes and returns a char, not an int, so
- * don't call it on %EOF but no need to worry about casting to #guchar
- * before passing a possibly non-ASCII character in.
- *
- * Return value: the result of converting @c to upper case.
- * If @c is not an ASCII lower case letter,
- * @c is returned unchanged.
- **/
-gchar
-g_ascii_toupper (gchar c)
-{
- return g_ascii_islower (c) ? c - 'a' + 'A' : c;
-}
-
-/**
- * g_ascii_digit_value:
- * @c: an ASCII character.
- *
- * Determines the numeric value of a character as a decimal
- * digit. Differs from g_unichar_digit_value() because it takes
- * a char, so there's no worry about sign extension if characters
- * are signed.
- *
- * Return value: If @c is a decimal digit (according to
- * g_ascii_isdigit()), its numeric value. Otherwise, -1.
- **/
-int
-g_ascii_digit_value (gchar c)
-{
- if (g_ascii_isdigit (c))
- return c - '0';
- return -1;
-}
-
-/**
- * g_ascii_xdigit_value:
- * @c: an ASCII character.
- *
- * Determines the numeric value of a character as a hexidecimal
- * digit. Differs from g_unichar_xdigit_value() because it takes
- * a char, so there's no worry about sign extension if characters
- * are signed.
- *
- * Return value: If @c is a hex digit (according to
- * g_ascii_isxdigit()), its numeric value. Otherwise, -1.
- **/
-int
-g_ascii_xdigit_value (gchar c)
-{
- if (c >= 'A' && c <= 'F')
- return c - 'A' + 10;
- if (c >= 'a' && c <= 'f')
- return c - 'a' + 10;
- return g_ascii_digit_value (c);
-}
-
-/**
- * g_ascii_strcasecmp:
- * @s1: string to compare with @s2.
- * @s2: string to compare with @s1.
- *
- * Compare two strings, ignoring the case of ASCII characters.
- *
- * Unlike the BSD strcasecmp() function, this only recognizes standard
- * ASCII letters and ignores the locale, treating all non-ASCII
- * bytes as if they are not letters.
- *
- * This function should be used only on strings that are known to be
- * in encodings where the bytes corresponding to ASCII letters always
- * represent themselves. This includes UTF-8 and the ISO-8859-*
- * charsets, but not for instance double-byte encodings like the
- * Windows Codepage 932, where the trailing bytes of double-byte
- * characters include all ASCII letters. If you compare two CP932
- * strings using this function, you will get false matches.
- *
- * Return value: 0 if the strings match, a negative value if @s1 &lt; @s2,
- * or a positive value if @s1 &gt; @s2.
- **/
-gint
-g_ascii_strcasecmp (const gchar *s1,
- const gchar *s2)
-{
- gint c1, c2;
-
- g_return_val_if_fail (s1 != NULL, 0);
- g_return_val_if_fail (s2 != NULL, 0);
-
- while (*s1 && *s2)
- {
- c1 = (gint)(guchar) TOLOWER (*s1);
- c2 = (gint)(guchar) TOLOWER (*s2);
- if (c1 != c2)
- return (c1 - c2);
- s1++; s2++;
- }
-
- return (((gint)(guchar) *s1) - ((gint)(guchar) *s2));
-}
-
-/**
- * g_ascii_strncasecmp:
- * @s1: string to compare with @s2.
- * @s2: string to compare with @s1.
- * @n: number of characters to compare.
- *
- * Compare @s1 and @s2, ignoring the case of ASCII characters and any
- * characters after the first @n in each string.
- *
- * Unlike the BSD strcasecmp() function, this only recognizes standard
- * ASCII letters and ignores the locale, treating all non-ASCII
- * characters as if they are not letters.
- *
- * The same warning as in g_ascii_strcasecmp() applies: Use this
- * function only on strings known to be in encodings where bytes
- * corresponding to ASCII letters always represent themselves.
- *
- * Return value: 0 if the strings match, a negative value if @s1 &lt; @s2,
- * or a positive value if @s1 &gt; @s2.
- **/
-gint
-g_ascii_strncasecmp (const gchar *s1,
- const gchar *s2,
- gsize n)
-{
- gint c1, c2;
-
- g_return_val_if_fail (s1 != NULL, 0);
- g_return_val_if_fail (s2 != NULL, 0);
-
- while (n && *s1 && *s2)
- {
- n -= 1;
- c1 = (gint)(guchar) TOLOWER (*s1);
- c2 = (gint)(guchar) TOLOWER (*s2);
- if (c1 != c2)
- return (c1 - c2);
- s1++; s2++;
- }
-
- if (n)
- return (((gint) (guchar) *s1) - ((gint) (guchar) *s2));
- else
- return 0;
-}
-
-/**
- * g_strcasecmp:
- * @s1: a string.
- * @s2: a string to compare with @s1.
- *
- * A case-insensitive string comparison, corresponding to the standard
- * strcasecmp() function on platforms which support it.
- *
- * Return value: 0 if the strings match, a negative value if @s1 &lt; @s2,
- * or a positive value if @s1 &gt; @s2.
- *
- * Deprecated:2.2: See g_strncasecmp() for a discussion of why this function
- * is deprecated and how to replace it.
- **/
-gint
-g_strcasecmp (const gchar *s1,
- const gchar *s2)
-{
-#ifdef HAVE_STRCASECMP
- g_return_val_if_fail (s1 != NULL, 0);
- g_return_val_if_fail (s2 != NULL, 0);
-
- return strcasecmp (s1, s2);
-#else
- gint c1, c2;
-
- g_return_val_if_fail (s1 != NULL, 0);
- g_return_val_if_fail (s2 != NULL, 0);
-
- while (*s1 && *s2)
- {
- /* According to A. Cox, some platforms have islower's that
- * don't work right on non-uppercase
- */
- c1 = isupper ((guchar)*s1) ? tolower ((guchar)*s1) : *s1;
- c2 = isupper ((guchar)*s2) ? tolower ((guchar)*s2) : *s2;
- if (c1 != c2)
- return (c1 - c2);
- s1++; s2++;
- }
-
- return (((gint)(guchar) *s1) - ((gint)(guchar) *s2));
-#endif
-}
-
-/**
- * g_strncasecmp:
- * @s1: a string.
- * @s2: a string to compare with @s1.
- * @n: the maximum number of characters to compare.
- *
- * A case-insensitive string comparison, corresponding to the standard
- * strncasecmp() function on platforms which support it.
- * It is similar to g_strcasecmp() except it only compares the first @n
- * characters of the strings.
- *
- * Return value: 0 if the strings match, a negative value if @s1 &lt; @s2,
- * or a positive value if @s1 &gt; @s2.
- *
- * Deprecated:2.2: The problem with g_strncasecmp() is that it does the
- * comparison by calling toupper()/tolower(). These functions are
- * locale-specific and operate on single bytes. However, it is impossible
- * to handle things correctly from an I18N standpoint by operating on
- * bytes, since characters may be multibyte. Thus g_strncasecmp() is
- * broken if your string is guaranteed to be ASCII, since it's
- * locale-sensitive, and it's broken if your string is localized, since
- * it doesn't work on many encodings at all, including UTF-8, EUC-JP,
- * etc.
- *
- * There are therefore two replacement functions: g_ascii_strncasecmp(),
- * which only works on ASCII and is not locale-sensitive, and
- * g_utf8_casefold(), which is good for case-insensitive sorting of UTF-8.
- **/
-gint
-g_strncasecmp (const gchar *s1,
- const gchar *s2,
- guint n)
-{
-#ifdef HAVE_STRNCASECMP
- return strncasecmp (s1, s2, n);
-#else
- gint c1, c2;
-
- g_return_val_if_fail (s1 != NULL, 0);
- g_return_val_if_fail (s2 != NULL, 0);
-
- while (n && *s1 && *s2)
- {
- n -= 1;
- /* According to A. Cox, some platforms have islower's that
- * don't work right on non-uppercase
- */
- c1 = isupper ((guchar)*s1) ? tolower ((guchar)*s1) : *s1;
- c2 = isupper ((guchar)*s2) ? tolower ((guchar)*s2) : *s2;
- if (c1 != c2)
- return (c1 - c2);
- s1++; s2++;
- }
-
- if (n)
- return (((gint) (guchar) *s1) - ((gint) (guchar) *s2));
- else
- return 0;
-#endif
-}
-
-gchar*
-g_strdelimit (gchar *string,
- const gchar *delimiters,
- gchar new_delim)
-{
- register gchar *c;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- if (!delimiters)
- delimiters = G_STR_DELIMITERS;
-
- for (c = string; *c; c++)
- {
- if (strchr (delimiters, *c))
- *c = new_delim;
- }
-
- return string;
-}
-
-gchar*
-g_strcanon (gchar *string,
- const gchar *valid_chars,
- gchar substitutor)
-{
- register gchar *c;
-
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (valid_chars != NULL, NULL);
-
- for (c = string; *c; c++)
- {
- if (!strchr (valid_chars, *c))
- *c = substitutor;
- }
-
- return string;
-}
-
-gchar*
-g_strcompress (const gchar *source)
-{
- const gchar *p = source, *octal;
- gchar *dest = g_malloc (strlen (source) + 1);
- gchar *q = dest;
-
- while (*p)
- {
- if (*p == '\\')
- {
- p++;
- switch (*p)
- {
- case '\0':
-#if NOT_NEEDED_FOR_NAVIT
- g_warning ("g_strcompress: trailing \\");
-#endif /* NOT_NEEDED_FOR_NAVIT */
- goto out;
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7':
- *q = 0;
- octal = p;
- while ((p < octal + 3) && (*p >= '0') && (*p <= '7'))
- {
- *q = (*q * 8) + (*p - '0');
- p++;
- }
- q++;
- p--;
- break;
- case 'b':
- *q++ = '\b';
- break;
- case 'f':
- *q++ = '\f';
- break;
- case 'n':
- *q++ = '\n';
- break;
- case 'r':
- *q++ = '\r';
- break;
- case 't':
- *q++ = '\t';
- break;
- default: /* Also handles \" and \\ */
- *q++ = *p;
- break;
- }
- }
- else
- *q++ = *p;
- p++;
- }
-out:
- *q = 0;
-
- return dest;
-}
-
-gchar *
-g_strescape (const gchar *source,
- const gchar *exceptions)
-{
- const guchar *p;
- gchar *dest;
- gchar *q;
- guchar excmap[256];
-
- g_return_val_if_fail (source != NULL, NULL);
-
- p = (guchar *) source;
- /* Each source byte needs maximally four destination chars (\777) */
- q = dest = g_malloc (strlen (source) * 4 + 1);
-
- memset (excmap, 0, 256);
- if (exceptions)
- {
- guchar *e = (guchar *) exceptions;
-
- while (*e)
- {
- excmap[*e] = 1;
- e++;
- }
- }
-
- while (*p)
- {
- if (excmap[*p])
- *q++ = *p;
- else
- {
- switch (*p)
- {
- case '\b':
- *q++ = '\\';
- *q++ = 'b';
- break;
- case '\f':
- *q++ = '\\';
- *q++ = 'f';
- break;
- case '\n':
- *q++ = '\\';
- *q++ = 'n';
- break;
- case '\r':
- *q++ = '\\';
- *q++ = 'r';
- break;
- case '\t':
- *q++ = '\\';
- *q++ = 't';
- break;
- case '\\':
- *q++ = '\\';
- *q++ = '\\';
- break;
- case '"':
- *q++ = '\\';
- *q++ = '"';
- break;
- default:
- if ((*p < ' ') || (*p >= 0177))
- {
- *q++ = '\\';
- *q++ = '0' + (((*p) >> 6) & 07);
- *q++ = '0' + (((*p) >> 3) & 07);
- *q++ = '0' + ((*p) & 07);
- }
- else
- *q++ = *p;
- break;
- }
- }
- p++;
- }
- *q = 0;
- return dest;
-}
-
-gchar*
-g_strchug (gchar *string)
-{
- guchar *start;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- for (start = (guchar*) string; *start && g_ascii_isspace (*start); start++)
- ;
-
- g_memmove (string, start, strlen ((gchar *) start) + 1);
-
- return string;
-}
-
-gchar*
-g_strchomp (gchar *string)
-{
- gsize len;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- len = strlen (string);
- while (len--)
- {
- if (g_ascii_isspace ((guchar) string[len]))
- string[len] = '\0';
- else
- break;
- }
-
- return string;
-}
-
-/**
- * g_strsplit:
- * @string: a string to split.
- * @delimiter: a string which specifies the places at which to split the string.
- * The delimiter is not included in any of the resulting strings, unless
- * @max_tokens is reached.
- * @max_tokens: the maximum number of pieces to split @string into. If this is
- * less than 1, the string is split completely.
- *
- * Splits a string into a maximum of @max_tokens pieces, using the given
- * @delimiter. If @max_tokens is reached, the remainder of @string is appended
- * to the last token.
- *
- * As a special case, the result of splitting the empty string "" is an empty
- * vector, not a vector containing a single string. The reason for this
- * special case is that being able to represent a empty vector is typically
- * more useful than consistent handling of empty elements. If you do need
- * to represent empty elements, you'll need to check for the empty string
- * before calling g_strsplit().
- *
- * Return value: a newly-allocated %NULL-terminated array of strings. Use
- * g_strfreev() to free it.
- **/
-gchar**
-g_strsplit (const gchar *string,
- const gchar *delimiter,
- gint max_tokens)
-{
- GSList *string_list = NULL, *slist;
- gchar **str_array, *s;
- guint n = 0;
- const gchar *remainder;
-
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (delimiter != NULL, NULL);
- g_return_val_if_fail (delimiter[0] != '\0', NULL);
-
- if (max_tokens < 1)
- max_tokens = G_MAXINT;
-
- remainder = string;
- s = strstr (remainder, delimiter);
- if (s)
- {
- gsize delimiter_len = strlen (delimiter);
-
- while (--max_tokens && s)
- {
- gsize len;
-
- len = s - remainder;
- string_list = g_slist_prepend (string_list,
- g_strndup (remainder, len));
- n++;
- remainder = s + delimiter_len;
- s = strstr (remainder, delimiter);
- }
- }
- if (*string)
- {
- n++;
- string_list = g_slist_prepend (string_list, g_strdup (remainder));
- }
-
- str_array = g_new (gchar*, n + 1);
-
- str_array[n--] = NULL;
- for (slist = string_list; slist; slist = slist->next)
- str_array[n--] = slist->data;
-
- g_slist_free (string_list);
-
- return str_array;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-/**
- * g_strsplit_set:
- * @string: The string to be tokenized
- * @delimiters: A nul-terminated string containing bytes that are used
- * to split the string.
- * @max_tokens: The maximum number of tokens to split @string into.
- * If this is less than 1, the string is split completely
- *
- * Splits @string into a number of tokens not containing any of the characters
- * in @delimiter. A token is the (possibly empty) longest string that does not
- * contain any of the characters in @delimiters. If @max_tokens is reached, the
- * remainder is appended to the last token.
- *
- * For example the result of g_strsplit_set ("abc:def/ghi", ":/", -1) is a
- * %NULL-terminated vector containing the three strings "abc", "def",
- * and "ghi".
- *
- * The result if g_strsplit_set (":def/ghi:", ":/", -1) is a %NULL-terminated
- * vector containing the four strings "", "def", "ghi", and "".
- *
- * As a special case, the result of splitting the empty string "" is an empty
- * vector, not a vector containing a single string. The reason for this
- * special case is that being able to represent a empty vector is typically
- * more useful than consistent handling of empty elements. If you do need
- * to represent empty elements, you'll need to check for the empty string
- * before calling g_strsplit_set().
- *
- * Note that this function works on bytes not characters, so it can't be used
- * to delimit UTF-8 strings for anything but ASCII characters.
- *
- * Return value: a newly-allocated %NULL-terminated array of strings. Use
- * g_strfreev() to free it.
- *
- * Since: 2.4
- **/
-gchar **
-g_strsplit_set (const gchar *string,
- const gchar *delimiters,
- gint max_tokens)
-{
- gboolean delim_table[256];
- GSList *tokens, *list;
- gint n_tokens;
- const gchar *s;
- const gchar *current;
- gchar *token;
- gchar **result;
-
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (delimiters != NULL, NULL);
-
- if (max_tokens < 1)
- max_tokens = G_MAXINT;
-
- if (*string == '\0')
- {
- result = g_new (char *, 1);
- result[0] = NULL;
- return result;
- }
-
- memset (delim_table, FALSE, sizeof (delim_table));
- for (s = delimiters; *s != '\0'; ++s)
- delim_table[*(guchar *)s] = TRUE;
-
- tokens = NULL;
- n_tokens = 0;
-
- s = current = string;
- while (*s != '\0')
- {
- if (delim_table[*(guchar *)s] && n_tokens + 1 < max_tokens)
- {
- gchar *token;
-
- token = g_strndup (current, s - current);
- tokens = g_slist_prepend (tokens, token);
- ++n_tokens;
-
- current = s + 1;
- }
-
- ++s;
- }
-
- token = g_strndup (current, s - current);
- tokens = g_slist_prepend (tokens, token);
- ++n_tokens;
-
- result = g_new (gchar *, n_tokens + 1);
-
- result[n_tokens] = NULL;
- for (list = tokens; list != NULL; list = list->next)
- result[--n_tokens] = list->data;
-
- g_slist_free (tokens);
-
- return result;
-}
-#endif /* NOT_NEEDED_FOR_NAVIT */
-
-/**
- * g_strfreev:
- * @str_array: a %NULL-terminated array of strings to free.
-
- * Frees a %NULL-terminated array of strings, and the array itself.
- * If called on a %NULL value, g_strfreev() simply returns.
- **/
-void
-g_strfreev (gchar **str_array)
-{
- if (str_array)
- {
- int i;
-
- for (i = 0; str_array[i] != NULL; i++)
- g_free (str_array[i]);
-
- g_free (str_array);
- }
-}
-
-/**
- * g_strdupv:
- * @str_array: %NULL-terminated array of strings.
- *
- * Copies %NULL-terminated array of strings. The copy is a deep copy;
- * the new array should be freed by first freeing each string, then
- * the array itself. g_strfreev() does this for you. If called
- * on a %NULL value, g_strdupv() simply returns %NULL.
- *
- * Return value: a new %NULL-terminated array of strings.
- **/
-gchar**
-g_strdupv (gchar **str_array)
-{
- if (str_array)
- {
- gint i;
- gchar **retval;
-
- i = 0;
- while (str_array[i])
- ++i;
-
- retval = g_new (gchar*, i + 1);
-
- i = 0;
- while (str_array[i])
- {
- retval[i] = g_strdup (str_array[i]);
- ++i;
- }
- retval[i] = NULL;
-
- return retval;
- }
- else
- return NULL;
-}
-
-gchar*
-g_strjoinv (const gchar *separator,
- gchar **str_array)
-{
- gchar *string;
- gchar *ptr;
-
- g_return_val_if_fail (str_array != NULL, NULL);
-
- if (separator == NULL)
- separator = "";
-
- if (*str_array)
- {
- gint i;
- gsize len;
- gsize separator_len;
-
- separator_len = strlen (separator);
- /* First part, getting length */
- len = 1 + strlen (str_array[0]);
- for (i = 1; str_array[i] != NULL; i++)
- len += strlen (str_array[i]);
- len += separator_len * (i - 1);
-
- /* Second part, building string */
- string = g_new (gchar, len);
- ptr = g_stpcpy (string, *str_array);
- for (i = 1; str_array[i] != NULL; i++)
- {
- ptr = g_stpcpy (ptr, separator);
- ptr = g_stpcpy (ptr, str_array[i]);
- }
- }
- else
- string = g_strdup ("");
-
- return string;
-}
-
-gchar*
-g_strjoin (const gchar *separator,
- ...)
-{
- gchar *string, *s;
- va_list args;
- gsize len;
- gsize separator_len;
- gchar *ptr;
-
- if (separator == NULL)
- separator = "";
-
- separator_len = strlen (separator);
-
- va_start (args, separator);
-
- s = va_arg (args, gchar*);
-
- if (s)
- {
- /* First part, getting length */
- len = 1 + strlen (s);
-
- s = va_arg (args, gchar*);
- while (s)
- {
- len += separator_len + strlen (s);
- s = va_arg (args, gchar*);
- }
- va_end (args);
-
- /* Second part, building string */
- string = g_new (gchar, len);
-
- va_start (args, separator);
-
- s = va_arg (args, gchar*);
- ptr = g_stpcpy (string, s);
-
- s = va_arg (args, gchar*);
- while (s)
- {
- ptr = g_stpcpy (ptr, separator);
- ptr = g_stpcpy (ptr, s);
- s = va_arg (args, gchar*);
- }
- }
- else
- string = g_strdup ("");
-
- va_end (args);
-
- return string;
-}
-
-/**
- * g_strstr_len:
- * @haystack: a string.
- * @haystack_len: the maximum length of @haystack. Note that -1 is
- * a valid length, if @haystack is nul-terminated, meaning it will
- * search through the whole string.
- * @needle: the string to search for.
- *
- * Searches the string @haystack for the first occurrence
- * of the string @needle, limiting the length of the search
- * to @haystack_len.
- *
- * Return value: a pointer to the found occurrence, or
- * %NULL if not found.
- **/
-gchar *
-g_strstr_len (const gchar *haystack,
- gssize haystack_len,
- const gchar *needle)
-{
- g_return_val_if_fail (haystack != NULL, NULL);
- g_return_val_if_fail (needle != NULL, NULL);
-
- if (haystack_len < 0)
- return strstr (haystack, needle);
- else
- {
- const gchar *p = haystack;
- gsize needle_len = strlen (needle);
- const gchar *end;
- gsize i;
-
- if (needle_len == 0)
- return (gchar *)haystack;
-
- if (haystack_len < needle_len)
- return NULL;
-
- end = haystack + haystack_len - needle_len;
-
- while (p <= end && *p)
- {
- for (i = 0; i < needle_len; i++)
- if (p[i] != needle[i])
- goto next;
-
- return (gchar *)p;
-
- next:
- p++;
- }
-
- return NULL;
- }
-}
-
-/**
- * g_strrstr:
- * @haystack: a nul-terminated string.
- * @needle: the nul-terminated string to search for.
- *
- * Searches the string @haystack for the last occurrence
- * of the string @needle.
- *
- * Return value: a pointer to the found occurrence, or
- * %NULL if not found.
- **/
-gchar *
-g_strrstr (const gchar *haystack,
- const gchar *needle)
-{
- gsize i;
- gsize needle_len;
- gsize haystack_len;
- const gchar *p;
-
- g_return_val_if_fail (haystack != NULL, NULL);
- g_return_val_if_fail (needle != NULL, NULL);
-
- needle_len = strlen (needle);
- haystack_len = strlen (haystack);
-
- if (needle_len == 0)
- return (gchar *)haystack;
-
- if (haystack_len < needle_len)
- return NULL;
-
- p = haystack + haystack_len - needle_len;
-
- while (p >= haystack)
- {
- for (i = 0; i < needle_len; i++)
- if (p[i] != needle[i])
- goto next;
-
- return (gchar *)p;
-
- next:
- p--;
- }
-
- return NULL;
-}
-
-/**
- * g_strrstr_len:
- * @haystack: a nul-terminated string.
- * @haystack_len: the maximum length of @haystack.
- * @needle: the nul-terminated string to search for.
- *
- * Searches the string @haystack for the last occurrence
- * of the string @needle, limiting the length of the search
- * to @haystack_len.
- *
- * Return value: a pointer to the found occurrence, or
- * %NULL if not found.
- **/
-gchar *
-g_strrstr_len (const gchar *haystack,
- gssize haystack_len,
- const gchar *needle)
-{
- g_return_val_if_fail (haystack != NULL, NULL);
- g_return_val_if_fail (needle != NULL, NULL);
-
- if (haystack_len < 0)
- return g_strrstr (haystack, needle);
- else
- {
- gsize needle_len = strlen (needle);
- const gchar *haystack_max = haystack + haystack_len;
- const gchar *p = haystack;
- gsize i;
-
- while (p < haystack_max && *p)
- p++;
-
- if (p < haystack + needle_len)
- return NULL;
-
- p -= needle_len;
-
- while (p >= haystack)
- {
- for (i = 0; i < needle_len; i++)
- if (p[i] != needle[i])
- goto next;
-
- return (gchar *)p;
-
- next:
- p--;
- }
-
- return NULL;
- }
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-/**
- * g_str_has_suffix:
- * @str: a nul-terminated string.
- * @suffix: the nul-terminated suffix to look for.
- *
- * Looks whether the string @str ends with @suffix.
- *
- * Return value: %TRUE if @str end with @suffix, %FALSE otherwise.
- *
- * Since: 2.2
- **/
-gboolean
-g_str_has_suffix (const gchar *str,
- const gchar *suffix)
-{
- int str_len;
- int suffix_len;
-
- g_return_val_if_fail (str != NULL, FALSE);
- g_return_val_if_fail (suffix != NULL, FALSE);
-
- str_len = strlen (str);
- suffix_len = strlen (suffix);
-
- if (str_len < suffix_len)
- return FALSE;
-
- return strcmp (str + str_len - suffix_len, suffix) == 0;
-}
-
-/**
- * g_str_has_prefix:
- * @str: a nul-terminated string.
- * @prefix: the nul-terminated prefix to look for.
- *
- * Looks whether the string @str begins with @prefix.
- *
- * Return value: %TRUE if @str begins with @prefix, %FALSE otherwise.
- *
- * Since: 2.2
- **/
-gboolean
-g_str_has_prefix (const gchar *str,
- const gchar *prefix)
-{
- int str_len;
- int prefix_len;
-
- g_return_val_if_fail (str != NULL, FALSE);
- g_return_val_if_fail (prefix != NULL, FALSE);
-
- str_len = strlen (str);
- prefix_len = strlen (prefix);
-
- if (str_len < prefix_len)
- return FALSE;
-
- return strncmp (str, prefix, prefix_len) == 0;
-}
-
-
-/**
- * g_strip_context:
- * @msgid: a string
- * @msgval: another string
- *
- * An auxiliary function for gettext() support (see Q_()).
- *
- * Return value: @msgval, unless @msgval is identical to @msgid and contains
- * a '|' character, in which case a pointer to the substring of msgid after
- * the first '|' character is returned.
- *
- * Since: 2.4
- **/
-G_CONST_RETURN gchar *
-g_strip_context (const gchar *msgid,
- const gchar *msgval)
-{
- if (msgval == msgid)
- {
- const char *c = strchr (msgid, '|');
- if (c != NULL)
- return c + 1;
- }
-
- return msgval;
-}
-#endif
-
-
-/**
- * g_strv_length:
- * @str_array: a %NULL-terminated array of strings.
- *
- * Returns the length of the given %NULL-terminated
- * string array @str_array.
- *
- * Return value: length of @str_array.
- *
- * Since: 2.6
- **/
-guint
-g_strv_length (gchar **str_array)
-{
- guint i = 0;
-
- g_return_val_if_fail (str_array != NULL, 0);
-
- while (str_array[i])
- ++i;
-
- return i;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-/**
- * g_dpgettext:
- * @domain: the translation domain to use, or %NULL to use
- * the domain set with textdomain()
- * @msgctxtid: a combined message context and message id, separated
- * by a \004 character
- * @msgidoffset: the offset of the message id in @msgctxid
- *
- * This function is a variant of g_dgettext() which supports
- * a disambiguating message context. GNU gettext uses the
- * '\004' character to separate the message context and
- * message id in @msgctxtid.
- * If 0 is passed as @msgidoffset, this function will fall back to
- * trying to use the deprecated convention of using "|" as a separation
- * character.
- *
- * This uses g_dgettext() internally. See that functions for differences
- * with dgettext() proper.
- *
- * Applications should normally not use this function directly,
- * but use the C_() macro for translations with context.
- *
- * Returns: The translated string
- *
- * Since: 2.16
- */
-G_CONST_RETURN gchar *
-g_dpgettext (const gchar *domain,
- const gchar *msgctxtid,
- gsize msgidoffset)
-{
- const gchar *translation;
- gchar *sep;
-
- translation = g_dgettext (domain, msgctxtid);
-
- if (translation == msgctxtid)
- {
- if (msgidoffset > 0)
- return msgctxtid + msgidoffset;
-
- sep = strchr (msgctxtid, '|');
-
- if (sep)
- {
- /* try with '\004' instead of '|', in case
- * xgettext -kQ_:1g was used
- */
- gchar *tmp = g_alloca (strlen (msgctxtid) + 1);
- strcpy (tmp, msgctxtid);
- tmp[sep - msgctxtid] = '\004';
-
- translation = g_dgettext (domain, tmp);
-
- if (translation == tmp)
- return sep + 1;
- }
- }
-
- return translation;
-}
-
-/* This function is taken from gettext.h
- * GNU gettext uses '\004' to separate context and msgid in .mo files.
- */
-/**
- * g_dpgettext2:
- * @domain: the translation domain to use, or %NULL to use
- * the domain set with textdomain()
- * @context: the message context
- * @msgid: the message
- *
- * This function is a variant of g_dgettext() which supports
- * a disambiguating message context. GNU gettext uses the
- * '\004' character to separate the message context and
- * message id in @msgctxtid.
- *
- * This uses g_dgettext() internally. See that functions for differences
- * with dgettext() proper.
- *
- * This function differs from C_() in that it is not a macro and
- * thus you may use non-string-literals as context and msgid arguments.
- *
- * Returns: The translated string
- *
- * Since: 2.18
- */
-G_CONST_RETURN char *
-g_dpgettext2 (const char *domain,
- const char *msgctxt,
- const char *msgid)
-{
- size_t msgctxt_len = strlen (msgctxt) + 1;
- size_t msgid_len = strlen (msgid) + 1;
- const char *translation;
- char* msg_ctxt_id;
-
- msg_ctxt_id = g_alloca (msgctxt_len + msgid_len);
-
- memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
- msg_ctxt_id[msgctxt_len - 1] = '\004';
- memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
-
- translation = g_dgettext (domain, msg_ctxt_id);
-
- if (translation == msg_ctxt_id)
- {
- /* try the old way of doing message contexts, too */
- msg_ctxt_id[msgctxt_len - 1] = '|';
- translation = g_dgettext (domain, msg_ctxt_id);
-
- if (translation == msg_ctxt_id)
- return msgid;
- }
-
- return translation;
-}
-
-static gboolean
-_g_dgettext_should_translate (void)
-{
- static gsize translate = 0;
- enum {
- SHOULD_TRANSLATE = 1,
- SHOULD_NOT_TRANSLATE = 2
- };
-
- if (G_UNLIKELY (g_once_init_enter (&translate)))
- {
- gboolean should_translate = TRUE;
-
- const char *default_domain = textdomain (NULL);
- const char *translator_comment = gettext ("");
-#ifndef G_OS_WIN32
- const char *translate_locale = setlocale (LC_MESSAGES, NULL);
-#else
- const char *translate_locale = g_win32_getlocale ();
-#endif
- /* We should NOT translate only if all the following hold:
- * - user has called textdomain() and set textdomain to non-default
- * - default domain has no translations
- * - locale does not start with "en_" and is not "C"
- *
- * Rationale:
- * - If text domain is still the default domain, maybe user calls
- * it later. Continue with old behavior of translating.
- * - If locale starts with "en_", we can continue using the
- * translations even if the app doesn't have translations for
- * this locale. That is, en_UK and en_CA for example.
- * - If locale is "C", maybe user calls setlocale(LC_ALL,"") later.
- * Continue with old behavior of translating.
- */
- if (0 != strcmp (default_domain, "messages") &&
- '\0' == *translator_comment &&
- 0 != strncmp (translate_locale, "en_", 3) &&
- 0 != strcmp (translate_locale, "C"))
- should_translate = FALSE;
-
- g_once_init_leave (&translate,
- should_translate ?
- SHOULD_TRANSLATE :
- SHOULD_NOT_TRANSLATE);
- }
-
- return translate == SHOULD_TRANSLATE;
-}
-
-/**
- * g_dgettext:
- * @domain: the translation domain to use, or %NULL to use
- * the domain set with textdomain()
- * @msgid: message to translate
- *
- * This function is a wrapper of dgettext() which does not translate
- * the message if the default domain as set with textdomain() has no
- * translations for the current locale.
- *
- * The advantage of using this function over dgettext() proper is that
- * libraries using this function (like GTK+) will not use translations
- * if the application using the library does not have translations for
- * the current locale. This results in a consistent English-only
- * interface instead of one having partial translations. For this
- * feature to work, the call to textdomain() and setlocale() should
- * precede any g_dgettext() invocations. For GTK+, it means calling
- * textdomain() before gtk_init or its variants.
- *
- * This function disables translations if and only if upon its first
- * call all the following conditions hold:
- * <itemizedlist>
- * <listitem>@domain is not %NULL</listitem>
- * <listitem>textdomain() has been called to set a default text domain</listitem>
- * <listitem>there is no translations available for the default text domain
- * and the current locale</listitem>
- * <listitem>current locale is not "C" or any English locales (those
- * starting with "en_")</listitem>
- * </itemizedlist>
- *
- * Note that this behavior may not be desired for example if an application
- * has its untranslated messages in a language other than English. In those
- * cases the application should call textdomain() after initializing GTK+.
- *
- * Applications should normally not use this function directly,
- * but use the _() macro for translations.
- *
- * Returns: The translated string
- *
- * Since: 2.18
- */
-G_CONST_RETURN gchar *
-g_dgettext (const gchar *domain,
- const gchar *msgid)
-{
- if (domain && G_UNLIKELY (!_g_dgettext_should_translate ()))
- return msgid;
-
- return dgettext (domain, msgid);
-}
-
-/**
- * g_dngettext:
- * @domain: the translation domain to use, or %NULL to use
- * the domain set with textdomain()
- * @msgid: message to translate
- * @msgid_plural: plural form of the message
- * @n: the quantity for which translation is needed
- *
- * This function is a wrapper of dngettext() which does not translate
- * the message if the default domain as set with textdomain() has no
- * translations for the current locale.
- *
- * See g_dgettext() for details of how this differs from dngettext()
- * proper.
- *
- * Returns: The translated string
- *
- * Since: 2.18
- */
-G_CONST_RETURN gchar *
-g_dngettext (const gchar *domain,
- const gchar *msgid,
- const gchar *msgid_plural,
- gulong n)
-{
- if (domain && G_UNLIKELY (!_g_dgettext_should_translate ()))
- return n == 1 ? msgid : msgid_plural;
-
- return dngettext (domain, msgid, msgid_plural, n);
-}
-
-#endif /* NOT_NEEDED_FOR_NAVIT */
-
-#define __G_STRFUNCS_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gstrfuncs.h b/navit/support/glib/gstrfuncs.h
deleted file mode 100644
index ee291f80f..000000000
--- a/navit/support/glib/gstrfuncs.h
+++ /dev/null
@@ -1,266 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_STRFUNCS_H__
-#define __G_STRFUNCS_H__
-
-#include <stdarg.h>
-#include <glib/gtypes.h>
-
-G_BEGIN_DECLS
-
-/* Functions like the ones in <ctype.h> that are not affected by locale. */
-typedef enum {
- G_ASCII_ALNUM = 1 << 0,
- G_ASCII_ALPHA = 1 << 1,
- G_ASCII_CNTRL = 1 << 2,
- G_ASCII_DIGIT = 1 << 3,
- G_ASCII_GRAPH = 1 << 4,
- G_ASCII_LOWER = 1 << 5,
- G_ASCII_PRINT = 1 << 6,
- G_ASCII_PUNCT = 1 << 7,
- G_ASCII_SPACE = 1 << 8,
- G_ASCII_UPPER = 1 << 9,
- G_ASCII_XDIGIT = 1 << 10
-} GAsciiType;
-
-GLIB_VAR const guint16 * const g_ascii_table;
-
-#define g_ascii_isalnum(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_ALNUM) != 0)
-
-#define g_ascii_isalpha(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_ALPHA) != 0)
-
-#define g_ascii_iscntrl(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_CNTRL) != 0)
-
-#define g_ascii_isdigit(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_DIGIT) != 0)
-
-#define g_ascii_isgraph(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_GRAPH) != 0)
-
-#define g_ascii_islower(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_LOWER) != 0)
-
-#define g_ascii_isprint(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_PRINT) != 0)
-
-#define g_ascii_ispunct(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_PUNCT) != 0)
-
-#define g_ascii_isspace(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_SPACE) != 0)
-
-#define g_ascii_isupper(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_UPPER) != 0)
-
-#define g_ascii_isxdigit(c) \
- ((g_ascii_table[(guchar) (c)] & G_ASCII_XDIGIT) != 0)
-
-gchar g_ascii_tolower (gchar c) G_GNUC_CONST;
-gchar g_ascii_toupper (gchar c) G_GNUC_CONST;
-
-gint g_ascii_digit_value (gchar c) G_GNUC_CONST;
-gint g_ascii_xdigit_value (gchar c) G_GNUC_CONST;
-
-/* String utility functions that modify a string argument or
- * return a constant string that must not be freed.
- */
-#define G_STR_DELIMITERS "_-|> <."
-gchar* g_strdelimit (gchar *string,
- const gchar *delimiters,
- gchar new_delimiter);
-gchar* g_strcanon (gchar *string,
- const gchar *valid_chars,
- gchar substitutor);
-G_CONST_RETURN gchar* g_strerror (gint errnum) G_GNUC_CONST;
-G_CONST_RETURN gchar* g_strsignal (gint signum) G_GNUC_CONST;
-gchar* g_strreverse (gchar *string);
-gsize g_strlcpy (gchar *dest,
- const gchar *src,
- gsize dest_size);
-gsize g_strlcat (gchar *dest,
- const gchar *src,
- gsize dest_size);
-gchar * g_strstr_len (const gchar *haystack,
- gssize haystack_len,
- const gchar *needle);
-gchar * g_strrstr (const gchar *haystack,
- const gchar *needle);
-gchar * g_strrstr_len (const gchar *haystack,
- gssize haystack_len,
- const gchar *needle);
-
-gboolean g_str_has_suffix (const gchar *str,
- const gchar *suffix);
-gboolean g_str_has_prefix (const gchar *str,
- const gchar *prefix);
-
-/* String to/from double conversion functions */
-
-gdouble g_strtod (const gchar *nptr,
- gchar **endptr);
-gdouble g_ascii_strtod (const gchar *nptr,
- gchar **endptr);
-guint64 g_ascii_strtoull (const gchar *nptr,
- gchar **endptr,
- guint base);
-gint64 g_ascii_strtoll (const gchar *nptr,
- gchar **endptr,
- guint base);
-/* 29 bytes should enough for all possible values that
- * g_ascii_dtostr can produce.
- * Then add 10 for good measure */
-#define G_ASCII_DTOSTR_BUF_SIZE (29 + 10)
-gchar * g_ascii_dtostr (gchar *buffer,
- gint buf_len,
- gdouble d);
-gchar * g_ascii_formatd (gchar *buffer,
- gint buf_len,
- const gchar *format,
- gdouble d);
-
-/* removes leading spaces */
-gchar* g_strchug (gchar *string);
-/* removes trailing spaces */
-gchar* g_strchomp (gchar *string);
-/* removes leading & trailing spaces */
-#define g_strstrip( string ) g_strchomp (g_strchug (string))
-
-gint g_ascii_strcasecmp (const gchar *s1,
- const gchar *s2);
-gint g_ascii_strncasecmp (const gchar *s1,
- const gchar *s2,
- gsize n);
-gchar* g_ascii_strdown (const gchar *str,
- gssize len) G_GNUC_MALLOC;
-gchar* g_ascii_strup (const gchar *str,
- gssize len) G_GNUC_MALLOC;
-
-#ifndef G_DISABLE_DEPRECATED
-
-/* The following four functions are deprecated and will be removed in
- * the next major release. They use the locale-specific tolower and
- * toupper, which is almost never the right thing.
- */
-
-gint g_strcasecmp (const gchar *s1,
- const gchar *s2);
-gint g_strncasecmp (const gchar *s1,
- const gchar *s2,
- guint n);
-gchar* g_strdown (gchar *string);
-gchar* g_strup (gchar *string);
-
-#endif /* G_DISABLE_DEPRECATED */
-
-/* String utility functions that return a newly allocated string which
- * ought to be freed with g_free from the caller at some point.
- */
-gchar* g_strdup (const gchar *str) G_GNUC_MALLOC;
-gchar* g_strdup_printf (const gchar *format,
- ...) G_GNUC_PRINTF (1, 2) G_GNUC_MALLOC;
-gchar* g_strdup_vprintf (const gchar *format,
- va_list args) G_GNUC_MALLOC;
-gchar* g_strndup (const gchar *str,
- gsize n) G_GNUC_MALLOC;
-gchar* g_strnfill (gsize length,
- gchar fill_char) G_GNUC_MALLOC;
-gchar* g_strconcat (const gchar *string1,
- ...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
-gchar* g_strjoin (const gchar *separator,
- ...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
-
-/* Make a copy of a string interpreting C string -style escape
- * sequences. Inverse of g_strescape. The recognized sequences are \b
- * \f \n \r \t \\ \" and the octal format.
- */
-gchar* g_strcompress (const gchar *source) G_GNUC_MALLOC;
-
-/* Copy a string escaping nonprintable characters like in C strings.
- * Inverse of g_strcompress. The exceptions parameter, if non-NULL, points
- * to a string containing characters that are not to be escaped.
- *
- * Deprecated API: gchar* g_strescape (const gchar *source);
- * Luckily this function wasn't used much, using NULL as second parameter
- * provides mostly identical semantics.
- */
-gchar* g_strescape (const gchar *source,
- const gchar *exceptions) G_GNUC_MALLOC;
-
-gpointer g_memdup (gconstpointer mem,
- guint byte_size) G_GNUC_MALLOC G_GNUC_ALLOC_SIZE(2);
-
-/* NULL terminated string arrays.
- * g_strsplit(), g_strsplit_set() split up string into max_tokens tokens
- * at delim and return a newly allocated string array.
- * g_strjoinv() concatenates all of str_array's strings, sliding in an
- * optional separator, the returned string is newly allocated.
- * g_strfreev() frees the array itself and all of its strings.
- * g_strdupv() copies a NULL-terminated array of strings
- * g_strv_length() returns the length of a NULL-terminated array of strings
- */
-gchar** g_strsplit (const gchar *string,
- const gchar *delimiter,
- gint max_tokens) G_GNUC_MALLOC;
-gchar ** g_strsplit_set (const gchar *string,
- const gchar *delimiters,
- gint max_tokens) G_GNUC_MALLOC;
-gchar* g_strjoinv (const gchar *separator,
- gchar **str_array) G_GNUC_MALLOC;
-void g_strfreev (gchar **str_array);
-gchar** g_strdupv (gchar **str_array) G_GNUC_MALLOC;
-guint g_strv_length (gchar **str_array);
-
-gchar* g_stpcpy (gchar *dest,
- const char *src);
-
-G_CONST_RETURN gchar *g_strip_context (const gchar *msgid,
- const gchar *msgval) G_GNUC_FORMAT(1);
-
-G_CONST_RETURN gchar *g_dgettext (const gchar *domain,
- const gchar *msgid) G_GNUC_FORMAT(2);
-
-G_CONST_RETURN gchar *g_dngettext (const gchar *domain,
- const gchar *msgid,
- const gchar *msgid_plural,
- gulong n) G_GNUC_FORMAT(3);
-G_CONST_RETURN gchar *g_dpgettext (const gchar *domain,
- const gchar *msgctxtid,
- gsize msgidoffset) G_GNUC_FORMAT(2);
-G_CONST_RETURN gchar *g_dpgettext2 (const gchar *domain,
- const gchar *context,
- const gchar *msgid) G_GNUC_FORMAT(3);
-
-G_END_DECLS
-
-#endif /* __G_STRFUNCS_H__ */
diff --git a/navit/support/glib/gstring.c b/navit/support/glib/gstring.c
deleted file mode 100644
index 9a7bb6a95..000000000
--- a/navit/support/glib/gstring.c
+++ /dev/null
@@ -1,1488 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * MT safe
- */
-
-#include "config.h"
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "glib.h"
-#include "gprintf.h"
-
-#include "galias.h"
-
-#if NOT_NEEDED_FOR_NAVIT
-struct _GStringChunk
-{
- GHashTable *const_table;
- GSList *storage_list;
- gsize storage_next;
- gsize this_size;
- gsize default_size;
-};
-#endif /* NOT_NEEDED_FOR_NAVIT */
-
-/* Hash Functions.
- */
-
-/**
- * g_str_equal:
- * @v1: a key
- * @v2: a key to compare with @v1
- *
- * Compares two strings for byte-by-byte equality and returns %TRUE
- * if they are equal. It can be passed to g_hash_table_new() as the
- * @key_equal_func parameter, when using strings as keys in a #GHashTable.
- *
- * Returns: %TRUE if the two keys match
- */
-gboolean
-g_str_equal (gconstpointer v1,
- gconstpointer v2)
-{
- const gchar *string1 = v1;
- const gchar *string2 = v2;
-
- return strcmp (string1, string2) == 0;
-}
-
-/**
- * g_str_hash:
- * @v: a string key
- *
- * Converts a string to a hash value.
- * It can be passed to g_hash_table_new() as the @hash_func
- * parameter, when using strings as keys in a #GHashTable.
- *
- * Returns: a hash value corresponding to the key
- */
-guint
-g_str_hash (gconstpointer v)
-{
- /* 31 bit hash function */
- const signed char *p = v;
- guint32 h = *p;
-
- if (h)
- for (p += 1; *p != '\0'; p++)
- h = (h << 5) - h + *p;
-
- return h;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-#define MY_MAXSIZE ((gsize)-1)
-
-static inline gsize
-nearest_power (gsize base, gsize num)
-{
- if (num > MY_MAXSIZE / 2)
- {
- return MY_MAXSIZE;
- }
- else
- {
- gsize n = base;
-
- while (n < num)
- n <<= 1;
-
- return n;
- }
-}
-
-/* String Chunks.
- */
-
-/**
- * g_string_chunk_new:
- * @size: the default size of the blocks of memory which are
- * allocated to store the strings. If a particular string
- * is larger than this default size, a larger block of
- * memory will be allocated for it.
- *
- * Creates a new #GStringChunk.
- *
- * Returns: a new #GStringChunk
- */
-GStringChunk*
-g_string_chunk_new (gsize size)
-{
- GStringChunk *new_chunk = g_new (GStringChunk, 1);
- gsize actual_size = 1;
-
- actual_size = nearest_power (1, size);
-
- new_chunk->const_table = NULL;
- new_chunk->storage_list = NULL;
- new_chunk->storage_next = actual_size;
- new_chunk->default_size = actual_size;
- new_chunk->this_size = actual_size;
-
- return new_chunk;
-}
-
-/**
- * g_string_chunk_free:
- * @chunk: a #GStringChunk
- *
- * Frees all memory allocated by the #GStringChunk.
- * After calling g_string_chunk_free() it is not safe to
- * access any of the strings which were contained within it.
- */
-void
-g_string_chunk_free (GStringChunk *chunk)
-{
- GSList *tmp_list;
-
- g_return_if_fail (chunk != NULL);
-
- if (chunk->storage_list)
- {
- for (tmp_list = chunk->storage_list; tmp_list; tmp_list = tmp_list->next)
- g_free (tmp_list->data);
-
- g_slist_free (chunk->storage_list);
- }
-
- if (chunk->const_table)
- g_hash_table_destroy (chunk->const_table);
-
- g_free (chunk);
-}
-
-/**
- * g_string_chunk_clear:
- * @chunk: a #GStringChunk
- *
- * Frees all strings contained within the #GStringChunk.
- * After calling g_string_chunk_clear() it is not safe to
- * access any of the strings which were contained within it.
- *
- * Since: 2.14
- */
-void
-g_string_chunk_clear (GStringChunk *chunk)
-{
- GSList *tmp_list;
-
- g_return_if_fail (chunk != NULL);
-
- if (chunk->storage_list)
- {
- for (tmp_list = chunk->storage_list; tmp_list; tmp_list = tmp_list->next)
- g_free (tmp_list->data);
-
- g_slist_free (chunk->storage_list);
-
- chunk->storage_list = NULL;
- chunk->storage_next = chunk->default_size;
- chunk->this_size = chunk->default_size;
- }
-
- if (chunk->const_table)
- g_hash_table_remove_all (chunk->const_table);
-}
-
-/**
- * g_string_chunk_insert:
- * @chunk: a #GStringChunk
- * @string: the string to add
- *
- * Adds a copy of @string to the #GStringChunk.
- * It returns a pointer to the new copy of the string
- * in the #GStringChunk. The characters in the string
- * can be changed, if necessary, though you should not
- * change anything after the end of the string.
- *
- * Unlike g_string_chunk_insert_const(), this function
- * does not check for duplicates. Also strings added
- * with g_string_chunk_insert() will not be searched
- * by g_string_chunk_insert_const() when looking for
- * duplicates.
- *
- * Returns: a pointer to the copy of @string within
- * the #GStringChunk
- */
-gchar*
-g_string_chunk_insert (GStringChunk *chunk,
- const gchar *string)
-{
- g_return_val_if_fail (chunk != NULL, NULL);
-
- return g_string_chunk_insert_len (chunk, string, -1);
-}
-
-/**
- * g_string_chunk_insert_const:
- * @chunk: a #GStringChunk
- * @string: the string to add
- *
- * Adds a copy of @string to the #GStringChunk, unless the same
- * string has already been added to the #GStringChunk with
- * g_string_chunk_insert_const().
- *
- * This function is useful if you need to copy a large number
- * of strings but do not want to waste space storing duplicates.
- * But you must remember that there may be several pointers to
- * the same string, and so any changes made to the strings
- * should be done very carefully.
- *
- * Note that g_string_chunk_insert_const() will not return a
- * pointer to a string added with g_string_chunk_insert(), even
- * if they do match.
- *
- * Returns: a pointer to the new or existing copy of @string
- * within the #GStringChunk
- */
-gchar*
-g_string_chunk_insert_const (GStringChunk *chunk,
- const gchar *string)
-{
- char* lookup;
-
- g_return_val_if_fail (chunk != NULL, NULL);
-
- if (!chunk->const_table)
- chunk->const_table = g_hash_table_new (g_str_hash, g_str_equal);
-
- lookup = (char*) g_hash_table_lookup (chunk->const_table, (gchar *)string);
-
- if (!lookup)
- {
- lookup = g_string_chunk_insert (chunk, string);
- g_hash_table_insert (chunk->const_table, lookup, lookup);
- }
-
- return lookup;
-}
-
-/**
- * g_string_chunk_insert_len:
- * @chunk: a #GStringChunk
- * @string: bytes to insert
- * @len: number of bytes of @string to insert, or -1 to insert a
- * nul-terminated string
- *
- * Adds a copy of the first @len bytes of @string to the #GStringChunk.
- * The copy is nul-terminated.
- *
- * Since this function does not stop at nul bytes, it is the caller's
- * responsibility to ensure that @string has at least @len addressable
- * bytes.
- *
- * The characters in the returned string can be changed, if necessary,
- * though you should not change anything after the end of the string.
- *
- * Return value: a pointer to the copy of @string within the #GStringChunk
- *
- * Since: 2.4
- **/
-gchar*
-g_string_chunk_insert_len (GStringChunk *chunk,
- const gchar *string,
- gssize len)
-{
- gssize size;
- gchar* pos;
-
- g_return_val_if_fail (chunk != NULL, NULL);
-
- if (len < 0)
- size = strlen (string);
- else
- size = len;
-
- if ((chunk->storage_next + size + 1) > chunk->this_size)
- {
- gsize new_size = nearest_power (chunk->default_size, size + 1);
-
- chunk->storage_list = g_slist_prepend (chunk->storage_list,
- g_new (gchar, new_size));
-
- chunk->this_size = new_size;
- chunk->storage_next = 0;
- }
-
- pos = ((gchar *) chunk->storage_list->data) + chunk->storage_next;
-
- *(pos + size) = '\0';
-
- strncpy (pos, string, size);
- if (len > 0)
- size = strlen (pos);
-
- chunk->storage_next += size + 1;
-
- return pos;
-}
-
-/* Strings.
- */
-static void
-g_string_maybe_expand (GString* string,
- gsize len)
-{
- if (string->len + len >= string->allocated_len)
- {
- string->allocated_len = nearest_power (1, string->len + len + 1);
- string->str = g_realloc (string->str, string->allocated_len);
- }
-}
-
-/**
- * g_string_sized_new:
- * @dfl_size: the default size of the space allocated to
- * hold the string
- *
- * Creates a new #GString, with enough space for @dfl_size
- * bytes. This is useful if you are going to add a lot of
- * text to the string and don't want it to be reallocated
- * too often.
- *
- * Returns: the new #GString
- */
-GString*
-g_string_sized_new (gsize dfl_size)
-{
- GString *string = g_slice_new (GString);
-
- string->allocated_len = 0;
- string->len = 0;
- string->str = NULL;
-
- g_string_maybe_expand (string, MAX (dfl_size, 2));
- string->str[0] = 0;
-
- return string;
-}
-
-/**
- * g_string_new:
- * @init: the initial text to copy into the string
- *
- * Creates a new #GString, initialized with the given string.
- *
- * Returns: the new #GString
- */
-GString*
-g_string_new (const gchar *init)
-{
- GString *string;
-
- if (init == NULL || *init == '\0')
- string = g_string_sized_new (2);
- else
- {
- gint len;
-
- len = strlen (init);
- string = g_string_sized_new (len + 2);
-
- g_string_append_len (string, init, len);
- }
-
- return string;
-}
-
-/**
- * g_string_new_len:
- * @init: initial contents of the string
- * @len: length of @init to use
- *
- * Creates a new #GString with @len bytes of the @init buffer.
- * Because a length is provided, @init need not be nul-terminated,
- * and can contain embedded nul bytes.
- *
- * Since this function does not stop at nul bytes, it is the caller's
- * responsibility to ensure that @init has at least @len addressable
- * bytes.
- *
- * Returns: a new #GString
- */
-GString*
-g_string_new_len (const gchar *init,
- gssize len)
-{
- GString *string;
-
- if (len < 0)
- return g_string_new (init);
- else
- {
- string = g_string_sized_new (len);
-
- if (init)
- g_string_append_len (string, init, len);
-
- return string;
- }
-}
-
-/**
- * g_string_free:
- * @string: a #GString
- * @free_segment: if %TRUE the actual character data is freed as well
- *
- * Frees the memory allocated for the #GString.
- * If @free_segment is %TRUE it also frees the character data.
- *
- * Returns: the character data of @string
- * (i.e. %NULL if @free_segment is %TRUE)
- */
-gchar*
-g_string_free (GString *string,
- gboolean free_segment)
-{
- gchar *segment;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- if (free_segment)
- {
- g_free (string->str);
- segment = NULL;
- }
- else
- segment = string->str;
-
- g_slice_free (GString, string);
-
- return segment;
-}
-
-/**
- * g_string_equal:
- * @v: a #GString
- * @v2: another #GString
- *
- * Compares two strings for equality, returning %TRUE if they are equal.
- * For use with #GHashTable.
- *
- * Returns: %TRUE if they strings are the same length and contain the
- * same bytes
- */
-gboolean
-g_string_equal (const GString *v,
- const GString *v2)
-{
- gchar *p, *q;
- GString *string1 = (GString *) v;
- GString *string2 = (GString *) v2;
- gsize i = string1->len;
-
- if (i != string2->len)
- return FALSE;
-
- p = string1->str;
- q = string2->str;
- while (i)
- {
- if (*p != *q)
- return FALSE;
- p++;
- q++;
- i--;
- }
- return TRUE;
-}
-
-/**
- * g_string_hash:
- * @str: a string to hash
- *
- * Creates a hash code for @str; for use with #GHashTable.
- *
- * Returns: hash code for @str
- */
-/* 31 bit hash function */
-guint
-g_string_hash (const GString *str)
-{
- const gchar *p = str->str;
- gsize n = str->len;
- guint h = 0;
-
- while (n--)
- {
- h = (h << 5) - h + *p;
- p++;
- }
-
- return h;
-}
-
-/**
- * g_string_assign:
- * @string: the destination #GString. Its current contents
- * are destroyed.
- * @rval: the string to copy into @string
- *
- * Copies the bytes from a string into a #GString,
- * destroying any previous contents. It is rather like
- * the standard strcpy() function, except that you do not
- * have to worry about having enough space to copy the string.
- *
- * Returns: @string
- */
-GString*
-g_string_assign (GString *string,
- const gchar *rval)
-{
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (rval != NULL, string);
-
- /* Make sure assigning to itself doesn't corrupt the string. */
- if (string->str != rval)
- {
- /* Assigning from substring should be ok since g_string_truncate
- does not realloc. */
- g_string_truncate (string, 0);
- g_string_append (string, rval);
- }
-
- return string;
-}
-
-/**
- * g_string_truncate:
- * @string: a #GString
- * @len: the new size of @string
- *
- * Cuts off the end of the GString, leaving the first @len bytes.
- *
- * Returns: @string
- */
-GString*
-g_string_truncate (GString *string,
- gsize len)
-{
- g_return_val_if_fail (string != NULL, NULL);
-
- string->len = MIN (len, string->len);
- string->str[string->len] = 0;
-
- return string;
-}
-
-/**
- * g_string_set_size:
- * @string: a #GString
- * @len: the new length
- *
- * Sets the length of a #GString. If the length is less than
- * the current length, the string will be truncated. If the
- * length is greater than the current length, the contents
- * of the newly added area are undefined. (However, as
- * always, string->str[string->len] will be a nul byte.)
- *
- * Return value: @string
- **/
-GString*
-g_string_set_size (GString *string,
- gsize len)
-{
- g_return_val_if_fail (string != NULL, NULL);
-
- if (len >= string->allocated_len)
- g_string_maybe_expand (string, len - string->len);
-
- string->len = len;
- string->str[len] = 0;
-
- return string;
-}
-
-/**
- * g_string_insert_len:
- * @string: a #GString
- * @pos: position in @string where insertion should
- * happen, or -1 for at the end
- * @val: bytes to insert
- * @len: number of bytes of @val to insert
- *
- * Inserts @len bytes of @val into @string at @pos.
- * Because @len is provided, @val may contain embedded
- * nuls and need not be nul-terminated. If @pos is -1,
- * bytes are inserted at the end of the string.
- *
- * Since this function does not stop at nul bytes, it is
- * the caller's responsibility to ensure that @val has at
- * least @len addressable bytes.
- *
- * Returns: @string
- */
-GString*
-g_string_insert_len (GString *string,
- gssize pos,
- const gchar *val,
- gssize len)
-{
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (val != NULL, string);
-
- if (len < 0)
- len = strlen (val);
-
- if (pos < 0)
- pos = string->len;
- else
- g_return_val_if_fail (pos <= string->len, string);
-
- /* Check whether val represents a substring of string. This test
- probably violates chapter and verse of the C standards, since
- ">=" and "<=" are only valid when val really is a substring.
- In practice, it will work on modern archs. */
- if (val >= string->str && val <= string->str + string->len)
- {
- gsize offset = val - string->str;
- gsize precount = 0;
-
- g_string_maybe_expand (string, len);
- val = string->str + offset;
- /* At this point, val is valid again. */
-
- /* Open up space where we are going to insert. */
- if (pos < string->len)
- g_memmove (string->str + pos + len, string->str + pos, string->len - pos);
-
- /* Move the source part before the gap, if any. */
- if (offset < pos)
- {
- precount = MIN (len, pos - offset);
- memcpy (string->str + pos, val, precount);
- }
-
- /* Move the source part after the gap, if any. */
- if (len > precount)
- memcpy (string->str + pos + precount,
- val + /* Already moved: */ precount + /* Space opened up: */ len,
- len - precount);
- }
- else
- {
- g_string_maybe_expand (string, len);
-
- /* If we aren't appending at the end, move a hunk
- * of the old string to the end, opening up space
- */
- if (pos < string->len)
- g_memmove (string->str + pos + len, string->str + pos, string->len - pos);
-
- /* insert the new string */
- if (len == 1)
- string->str[pos] = *val;
- else
- memcpy (string->str + pos, val, len);
- }
-
- string->len += len;
-
- string->str[string->len] = 0;
-
- return string;
-}
-
-#define SUB_DELIM_CHARS "!$&'()*+,;="
-
-static gboolean
-is_valid (char c, const char *reserved_chars_allowed)
-{
- if (g_ascii_isalnum (c) ||
- c == '-' ||
- c == '.' ||
- c == '_' ||
- c == '~')
- return TRUE;
-
- if (reserved_chars_allowed &&
- strchr (reserved_chars_allowed, c) != NULL)
- return TRUE;
-
- return FALSE;
-}
-
-static gboolean
-gunichar_ok (gunichar c)
-{
- return
- (c != (gunichar) -2) &&
- (c != (gunichar) -1);
-}
-
-/**
- * g_string_append_uri_escaped:
- * @string: a #GString
- * @unescaped: a string
- * @reserved_chars_allowed: a string of reserved characters allowed to be used
- * @allow_utf8: set %TRUE if the escaped string may include UTF8 characters
- *
- * Appends @unescaped to @string, escaped any characters that
- * are reserved in URIs using URI-style escape sequences.
- *
- * Returns: @string
- *
- * Since: 2.16
- **/
-GString *
-g_string_append_uri_escaped (GString *string,
- const char *unescaped,
- const char *reserved_chars_allowed,
- gboolean allow_utf8)
-{
- unsigned char c;
- const char *end;
- static const gchar hex[16] = "0123456789ABCDEF";
-
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (unescaped != NULL, NULL);
-
- end = unescaped + strlen (unescaped);
-
- while ((c = *unescaped) != 0)
- {
- if (c >= 0x80 && allow_utf8 &&
- gunichar_ok (g_utf8_get_char_validated (unescaped, end - unescaped)))
- {
- int len = g_utf8_skip [c];
- g_string_append_len (string, unescaped, len);
- unescaped += len;
- }
- else if (is_valid (c, reserved_chars_allowed))
- {
- g_string_append_c (string, c);
- unescaped++;
- }
- else
- {
- g_string_append_c (string, '%');
- g_string_append_c (string, hex[((guchar)c) >> 4]);
- g_string_append_c (string, hex[((guchar)c) & 0xf]);
- unescaped++;
- }
- }
-
- return string;
-}
-
-/**
- * g_string_append:
- * @string: a #GString
- * @val: the string to append onto the end of @string
- *
- * Adds a string onto the end of a #GString, expanding
- * it if necessary.
- *
- * Returns: @string
- */
-GString*
-g_string_append (GString *string,
- const gchar *val)
-{
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (val != NULL, string);
-
- return g_string_insert_len (string, -1, val, -1);
-}
-
-/**
- * g_string_append_len:
- * @string: a #GString
- * @val: bytes to append
- * @len: number of bytes of @val to use
- *
- * Appends @len bytes of @val to @string. Because @len is
- * provided, @val may contain embedded nuls and need not
- * be nul-terminated.
- *
- * Since this function does not stop at nul bytes, it is
- * the caller's responsibility to ensure that @val has at
- * least @len addressable bytes.
- *
- * Returns: @string
- */
-GString*
-g_string_append_len (GString *string,
- const gchar *val,
- gssize len)
-{
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (val != NULL, string);
-
- return g_string_insert_len (string, -1, val, len);
-}
-
-/**
- * g_string_append_c:
- * @string: a #GString
- * @c: the byte to append onto the end of @string
- *
- * Adds a byte onto the end of a #GString, expanding
- * it if necessary.
- *
- * Returns: @string
- */
-#undef g_string_append_c
-GString*
-g_string_append_c (GString *string,
- gchar c)
-{
- g_return_val_if_fail (string != NULL, NULL);
-
- return g_string_insert_c (string, -1, c);
-}
-
-/**
- * g_string_append_unichar:
- * @string: a #GString
- * @wc: a Unicode character
- *
- * Converts a Unicode character into UTF-8, and appends it
- * to the string.
- *
- * Return value: @string
- **/
-GString*
-g_string_append_unichar (GString *string,
- gunichar wc)
-{
- g_return_val_if_fail (string != NULL, NULL);
-
- return g_string_insert_unichar (string, -1, wc);
-}
-
-/**
- * g_string_prepend:
- * @string: a #GString
- * @val: the string to prepend on the start of @string
- *
- * Adds a string on to the start of a #GString,
- * expanding it if necessary.
- *
- * Returns: @string
- */
-GString*
-g_string_prepend (GString *string,
- const gchar *val)
-{
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (val != NULL, string);
-
- return g_string_insert_len (string, 0, val, -1);
-}
-
-/**
- * g_string_prepend_len:
- * @string: a #GString
- * @val: bytes to prepend
- * @len: number of bytes in @val to prepend
- *
- * Prepends @len bytes of @val to @string.
- * Because @len is provided, @val may contain
- * embedded nuls and need not be nul-terminated.
- *
- * Since this function does not stop at nul bytes,
- * it is the caller's responsibility to ensure that
- * @val has at least @len addressable bytes.
- *
- * Returns: @string
- */
-GString*
-g_string_prepend_len (GString *string,
- const gchar *val,
- gssize len)
-{
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (val != NULL, string);
-
- return g_string_insert_len (string, 0, val, len);
-}
-
-/**
- * g_string_prepend_c:
- * @string: a #GString
- * @c: the byte to prepend on the start of the #GString
- *
- * Adds a byte onto the start of a #GString,
- * expanding it if necessary.
- *
- * Returns: @string
- */
-GString*
-g_string_prepend_c (GString *string,
- gchar c)
-{
- g_return_val_if_fail (string != NULL, NULL);
-
- return g_string_insert_c (string, 0, c);
-}
-
-/**
- * g_string_prepend_unichar:
- * @string: a #GString
- * @wc: a Unicode character
- *
- * Converts a Unicode character into UTF-8, and prepends it
- * to the string.
- *
- * Return value: @string
- **/
-GString*
-g_string_prepend_unichar (GString *string,
- gunichar wc)
-{
- g_return_val_if_fail (string != NULL, NULL);
-
- return g_string_insert_unichar (string, 0, wc);
-}
-
-/**
- * g_string_insert:
- * @string: a #GString
- * @pos: the position to insert the copy of the string
- * @val: the string to insert
- *
- * Inserts a copy of a string into a #GString,
- * expanding it if necessary.
- *
- * Returns: @string
- */
-GString*
-g_string_insert (GString *string,
- gssize pos,
- const gchar *val)
-{
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (val != NULL, string);
- if (pos >= 0)
- g_return_val_if_fail (pos <= string->len, string);
-
- return g_string_insert_len (string, pos, val, -1);
-}
-
-/**
- * g_string_insert_c:
- * @string: a #GString
- * @pos: the position to insert the byte
- * @c: the byte to insert
- *
- * Inserts a byte into a #GString, expanding it if necessary.
- *
- * Returns: @string
- */
-GString*
-g_string_insert_c (GString *string,
- gssize pos,
- gchar c)
-{
- g_return_val_if_fail (string != NULL, NULL);
-
- g_string_maybe_expand (string, 1);
-
- if (pos < 0)
- pos = string->len;
- else
- g_return_val_if_fail (pos <= string->len, string);
-
- /* If not just an append, move the old stuff */
- if (pos < string->len)
- g_memmove (string->str + pos + 1, string->str + pos, string->len - pos);
-
- string->str[pos] = c;
-
- string->len += 1;
-
- string->str[string->len] = 0;
-
- return string;
-}
-
-/**
- * g_string_insert_unichar:
- * @string: a #GString
- * @pos: the position at which to insert character, or -1 to
- * append at the end of the string
- * @wc: a Unicode character
- *
- * Converts a Unicode character into UTF-8, and insert it
- * into the string at the given position.
- *
- * Return value: @string
- **/
-GString*
-g_string_insert_unichar (GString *string,
- gssize pos,
- gunichar wc)
-{
- gint charlen, first, i;
- gchar *dest;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- /* Code copied from g_unichar_to_utf() */
- if (wc < 0x80)
- {
- first = 0;
- charlen = 1;
- }
- else if (wc < 0x800)
- {
- first = 0xc0;
- charlen = 2;
- }
- else if (wc < 0x10000)
- {
- first = 0xe0;
- charlen = 3;
- }
- else if (wc < 0x200000)
- {
- first = 0xf0;
- charlen = 4;
- }
- else if (wc < 0x4000000)
- {
- first = 0xf8;
- charlen = 5;
- }
- else
- {
- first = 0xfc;
- charlen = 6;
- }
- /* End of copied code */
-
- g_string_maybe_expand (string, charlen);
-
- if (pos < 0)
- pos = string->len;
- else
- g_return_val_if_fail (pos <= string->len, string);
-
- /* If not just an append, move the old stuff */
- if (pos < string->len)
- g_memmove (string->str + pos + charlen, string->str + pos, string->len - pos);
-
- dest = string->str + pos;
- /* Code copied from g_unichar_to_utf() */
- for (i = charlen - 1; i > 0; --i)
- {
- dest[i] = (wc & 0x3f) | 0x80;
- wc >>= 6;
- }
- dest[0] = wc | first;
- /* End of copied code */
-
- string->len += charlen;
-
- string->str[string->len] = 0;
-
- return string;
-}
-
-/**
- * g_string_overwrite:
- * @string: a #GString
- * @pos: the position at which to start overwriting
- * @val: the string that will overwrite the @string starting at @pos
- *
- * Overwrites part of a string, lengthening it if necessary.
- *
- * Return value: @string
- *
- * Since: 2.14
- **/
-GString *
-g_string_overwrite (GString *string,
- gsize pos,
- const gchar *val)
-{
- g_return_val_if_fail (val != NULL, string);
- return g_string_overwrite_len (string, pos, val, strlen (val));
-}
-
-/**
- * g_string_overwrite_len:
- * @string: a #GString
- * @pos: the position at which to start overwriting
- * @val: the string that will overwrite the @string starting at @pos
- * @len: the number of bytes to write from @val
- *
- * Overwrites part of a string, lengthening it if necessary.
- * This function will work with embedded nuls.
- *
- * Return value: @string
- *
- * Since: 2.14
- **/
-GString *
-g_string_overwrite_len (GString *string,
- gsize pos,
- const gchar *val,
- gssize len)
-{
- gsize end;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- if (!len)
- return string;
-
- g_return_val_if_fail (val != NULL, string);
- g_return_val_if_fail (pos <= string->len, string);
-
- if (len < 0)
- len = strlen (val);
-
- end = pos + len;
-
- if (end > string->len)
- g_string_maybe_expand (string, end - string->len);
-
- memcpy (string->str + pos, val, len);
-
- if (end > string->len)
- {
- string->str[end] = '\0';
- string->len = end;
- }
-
- return string;
-}
-
-/**
- * g_string_erase:
- * @string: a #GString
- * @pos: the position of the content to remove
- * @len: the number of bytes to remove, or -1 to remove all
- * following bytes
- *
- * Removes @len bytes from a #GString, starting at position @pos.
- * The rest of the #GString is shifted down to fill the gap.
- *
- * Returns: @string
- */
-GString*
-g_string_erase (GString *string,
- gssize pos,
- gssize len)
-{
- g_return_val_if_fail (string != NULL, NULL);
- g_return_val_if_fail (pos >= 0, string);
- g_return_val_if_fail (pos <= string->len, string);
-
- if (len < 0)
- len = string->len - pos;
- else
- {
- g_return_val_if_fail (pos + len <= string->len, string);
-
- if (pos + len < string->len)
- g_memmove (string->str + pos, string->str + pos + len, string->len - (pos + len));
- }
-
- string->len -= len;
-
- string->str[string->len] = 0;
-
- return string;
-}
-
-/**
- * g_string_ascii_down:
- * @string: a GString
- *
- * Converts all upper case ASCII letters to lower case ASCII letters.
- *
- * Return value: passed-in @string pointer, with all the upper case
- * characters converted to lower case in place, with
- * semantics that exactly match g_ascii_tolower().
- **/
-GString*
-g_string_ascii_down (GString *string)
-{
- gchar *s;
- gint n;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- n = string->len;
- s = string->str;
-
- while (n)
- {
- *s = g_ascii_tolower (*s);
- s++;
- n--;
- }
-
- return string;
-}
-
-/**
- * g_string_ascii_up:
- * @string: a GString
- *
- * Converts all lower case ASCII letters to upper case ASCII letters.
- *
- * Return value: passed-in @string pointer, with all the lower case
- * characters converted to upper case in place, with
- * semantics that exactly match g_ascii_toupper().
- **/
-GString*
-g_string_ascii_up (GString *string)
-{
- gchar *s;
- gint n;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- n = string->len;
- s = string->str;
-
- while (n)
- {
- *s = g_ascii_toupper (*s);
- s++;
- n--;
- }
-
- return string;
-}
-
-/**
- * g_string_down:
- * @string: a #GString
- *
- * Converts a #GString to lowercase.
- *
- * Returns: the #GString.
- *
- * Deprecated:2.2: This function uses the locale-specific
- * tolower() function, which is almost never the right thing.
- * Use g_string_ascii_down() or g_utf8_strdown() instead.
- */
-GString*
-g_string_down (GString *string)
-{
- guchar *s;
- glong n;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- n = string->len;
- s = (guchar *) string->str;
-
- while (n)
- {
- if (isupper (*s))
- *s = tolower (*s);
- s++;
- n--;
- }
-
- return string;
-}
-
-/**
- * g_string_up:
- * @string: a #GString
- *
- * Converts a #GString to uppercase.
- *
- * Return value: @string
- *
- * Deprecated:2.2: This function uses the locale-specific
- * toupper() function, which is almost never the right thing.
- * Use g_string_ascii_up() or g_utf8_strup() instead.
- **/
-GString*
-g_string_up (GString *string)
-{
- guchar *s;
- glong n;
-
- g_return_val_if_fail (string != NULL, NULL);
-
- n = string->len;
- s = (guchar *) string->str;
-
- while (n)
- {
- if (islower (*s))
- *s = toupper (*s);
- s++;
- n--;
- }
-
- return string;
-}
-
-/**
- * g_string_append_vprintf:
- * @string: a #GString
- * @format: the string format. See the printf() documentation
- * @args: the list of arguments to insert in the output
- *
- * Appends a formatted string onto the end of a #GString.
- * This function is similar to g_string_append_printf()
- * except that the arguments to the format string are passed
- * as a va_list.
- *
- * Since: 2.14
- */
-void
-g_string_append_vprintf (GString *string,
- const gchar *format,
- va_list args)
-{
- gchar *buf;
- gint len;
-
- g_return_if_fail (string != NULL);
- g_return_if_fail (format != NULL);
-
- len = g_vasprintf (&buf, format, args);
-
- if (len >= 0)
- {
- g_string_maybe_expand (string, len);
- memcpy (string->str + string->len, buf, len + 1);
- string->len += len;
- g_free (buf);
- }
-}
-
-/**
- * g_string_vprintf:
- * @string: a #GString
- * @format: the string format. See the printf() documentation
- * @args: the parameters to insert into the format string
- *
- * Writes a formatted string into a #GString.
- * This function is similar to g_string_printf() except that
- * the arguments to the format string are passed as a va_list.
- *
- * Since: 2.14
- */
-void
-g_string_vprintf (GString *string,
- const gchar *format,
- va_list args)
-{
- g_string_truncate (string, 0);
- g_string_append_vprintf (string, format, args);
-}
-
-/**
- * g_string_sprintf:
- * @string: a #GString
- * @format: the string format. See the sprintf() documentation
- * @Varargs: the parameters to insert into the format string
- *
- * Writes a formatted string into a #GString.
- * This is similar to the standard sprintf() function,
- * except that the #GString buffer automatically expands
- * to contain the results. The previous contents of the
- * #GString are destroyed.
- *
- * Deprecated: This function has been renamed to g_string_printf().
- */
-
-/**
- * g_string_printf:
- * @string: a #GString
- * @format: the string format. See the printf() documentation
- * @Varargs: the parameters to insert into the format string
- *
- * Writes a formatted string into a #GString.
- * This is similar to the standard sprintf() function,
- * except that the #GString buffer automatically expands
- * to contain the results. The previous contents of the
- * #GString are destroyed.
- */
-void
-g_string_printf (GString *string,
- const gchar *format,
- ...)
-{
- va_list args;
-
- g_string_truncate (string, 0);
-
- va_start (args, format);
- g_string_append_vprintf (string, format, args);
- va_end (args);
-}
-
-/**
- * g_string_sprintfa:
- * @string: a #GString
- * @format: the string format. See the sprintf() documentation
- * @Varargs: the parameters to insert into the format string
- *
- * Appends a formatted string onto the end of a #GString.
- * This function is similar to g_string_sprintf() except that
- * the text is appended to the #GString.
- *
- * Deprecated: This function has been renamed to g_string_append_printf()
- */
-
-/**
- * g_string_append_printf:
- * @string: a #GString
- * @format: the string format. See the printf() documentation
- * @Varargs: the parameters to insert into the format string
- *
- * Appends a formatted string onto the end of a #GString.
- * This function is similar to g_string_printf() except
- * that the text is appended to the #GString.
- */
-void
-g_string_append_printf (GString *string,
- const gchar *format,
- ...)
-{
- va_list args;
-
- va_start (args, format);
- g_string_append_vprintf (string, format, args);
- va_end (args);
-}
-
-#endif /* NOT_NEEDED_FOR_NAVIT */
-#define __G_STRING_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gthreadprivate.h b/navit/support/glib/gthreadprivate.h
deleted file mode 100644
index c9b5fa50d..000000000
--- a/navit/support/glib/gthreadprivate.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- *
- * gthreadprivate.h - GLib internal thread system related declarations.
- *
- * Copyright (C) 2003 Sebastian Wilhelmi
- *
- * The Gnome Library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * The Gnome Library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the Gnome Library; see the file COPYING.LIB. If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __G_THREADPRIVATE_H__
-#define __G_THREADPRIVATE_H__
-
-G_BEGIN_DECLS
-
-/* System thread identifier comparision and assignment */
-#if GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P
-# define g_system_thread_equal_simple(thread1, thread2) \
- ((thread1).dummy_pointer == (thread2).dummy_pointer)
-# define g_system_thread_assign(dest, src) \
- ((dest).dummy_pointer = (src).dummy_pointer)
-#else /* GLIB_SIZEOF_SYSTEM_THREAD != SIZEOF_VOID_P */
-# define g_system_thread_equal_simple(thread1, thread2) \
- (memcmp (&(thread1), &(thread2), GLIB_SIZEOF_SYSTEM_THREAD) == 0)
-# define g_system_thread_assign(dest, src) \
- (memcpy (&(dest), &(src), GLIB_SIZEOF_SYSTEM_THREAD))
-#endif /* GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P */
-
-#define g_system_thread_equal(thread1, thread2) \
- (g_thread_functions_for_glib_use.thread_equal ? \
- g_thread_functions_for_glib_use.thread_equal (&(thread1), &(thread2)) :\
- g_system_thread_equal_simple((thread1), (thread2)))
-
-/* Is called from gthread/gthread-impl.c */
-void g_thread_init_glib (void);
-
-/* base initializers, may only use g_mutex_new(), g_cond_new() */
-G_GNUC_INTERNAL void _g_mem_thread_init_noprivate_nomessage (void);
-/* initializers that may also use g_private_new() */
-G_GNUC_INTERNAL void _g_slice_thread_init_nomessage (void);
-G_GNUC_INTERNAL void _g_messages_thread_init_nomessage (void);
-
-/* full fledged initializers */
-G_GNUC_INTERNAL void _g_convert_thread_init (void);
-G_GNUC_INTERNAL void _g_rand_thread_init (void);
-G_GNUC_INTERNAL void _g_main_thread_init (void);
-G_GNUC_INTERNAL void _g_atomic_thread_init (void);
-G_GNUC_INTERNAL void _g_utils_thread_init (void);
-
-#ifdef G_OS_WIN32
-G_GNUC_INTERNAL void _g_win32_thread_init (void);
-#endif /* G_OS_WIN32 */
-
-G_END_DECLS
-
-#endif /* __G_THREADPRIVATE_H__ */
diff --git a/navit/support/glib/gtypes.h b/navit/support/glib/gtypes.h
deleted file mode 100644
index 3ac98fd4a..000000000
--- a/navit/support/glib/gtypes.h
+++ /dev/null
@@ -1,432 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_TYPES_H__
-#define __G_TYPES_H__
-
-#include <glibconfig.h>
-
-G_BEGIN_DECLS
-
-/* Provide type definitions for commonly used types.
- * These are useful because a "gint8" can be adjusted
- * to be 1 byte (8 bits) on all platforms. Similarly and
- * more importantly, "gint32" can be adjusted to be
- * 4 bytes (32 bits) on all platforms.
- */
-
-typedef char gchar;
-typedef short gshort;
-typedef long glong;
-typedef int gint;
-typedef gint gboolean;
-
-typedef unsigned char guchar;
-typedef unsigned short gushort;
-typedef unsigned long gulong;
-typedef unsigned int guint;
-
-typedef float gfloat;
-typedef double gdouble;
-
-/* Define min and max constants for the fixed size numerical types */
-#define G_MININT8 ((gint8) 0x80)
-#define G_MAXINT8 ((gint8) 0x7f)
-#define G_MAXUINT8 ((guint8) 0xff)
-
-#define G_MININT16 ((gint16) 0x8000)
-#define G_MAXINT16 ((gint16) 0x7fff)
-#define G_MAXUINT16 ((guint16) 0xffff)
-
-#define G_MININT32 ((gint32) 0x80000000)
-#define G_MAXINT32 ((gint32) 0x7fffffff)
-#define G_MAXUINT32 ((guint32) 0xffffffff)
-
-#define G_MININT64 ((gint64) G_GINT64_CONSTANT(0x8000000000000000))
-#define G_MAXINT64 G_GINT64_CONSTANT(0x7fffffffffffffff)
-#define G_MAXUINT64 G_GINT64_CONSTANT(0xffffffffffffffffU)
-
-typedef void* gpointer;
-typedef const void *gconstpointer;
-
-typedef gint (*GCompareFunc) (gconstpointer a,
- gconstpointer b);
-typedef gint (*GCompareDataFunc) (gconstpointer a,
- gconstpointer b,
- gpointer user_data);
-typedef gboolean (*GEqualFunc) (gconstpointer a,
- gconstpointer b);
-typedef void (*GDestroyNotify) (gpointer data);
-typedef void (*GFunc) (gpointer data,
- gpointer user_data);
-typedef guint (*GHashFunc) (gconstpointer key);
-typedef void (*GHFunc) (gpointer key,
- gpointer value,
- gpointer user_data);
-typedef void (*GFreeFunc) (gpointer data);
-typedef const gchar * (*GTranslateFunc) (const gchar *str,
- gpointer data);
-
-
-/* Define some mathematical constants that aren't available
- * symbolically in some strict ISO C implementations.
- *
- * Note that the large number of digits used in these definitions
- * doesn't imply that GLib or current computers in general would be
- * able to handle floating point numbers with an accuracy like this.
- * It's mostly an exercise in futility and future proofing. For
- * extended precision floating point support, look somewhere else
- * than GLib.
- */
-#define G_E 2.7182818284590452353602874713526624977572470937000
-#define G_LN2 0.69314718055994530941723212145817656807550013436026
-#define G_LN10 2.3025850929940456840179914546843642076011014886288
-#define G_PI 3.1415926535897932384626433832795028841971693993751
-#define G_PI_2 1.5707963267948966192313216916397514420985846996876
-#define G_PI_4 0.78539816339744830961566084581987572104929234984378
-#define G_SQRT2 1.4142135623730950488016887242096980785696718753769
-
-/* Portable endian checks and conversions
- *
- * glibconfig.h defines G_BYTE_ORDER which expands to one of
- * the below macros.
- */
-#define G_LITTLE_ENDIAN 1234
-#define G_BIG_ENDIAN 4321
-#define G_PDP_ENDIAN 3412 /* unused, need specific PDP check */
-
-
-/* Basic bit swapping functions
- */
-#define GUINT16_SWAP_LE_BE_CONSTANT(val) ((guint16) ( \
- (guint16) ((guint16) (val) >> 8) | \
- (guint16) ((guint16) (val) << 8)))
-
-#define GUINT32_SWAP_LE_BE_CONSTANT(val) ((guint32) ( \
- (((guint32) (val) & (guint32) 0x000000ffU) << 24) | \
- (((guint32) (val) & (guint32) 0x0000ff00U) << 8) | \
- (((guint32) (val) & (guint32) 0x00ff0000U) >> 8) | \
- (((guint32) (val) & (guint32) 0xff000000U) >> 24)))
-
-#define GUINT64_SWAP_LE_BE_CONSTANT(val) ((guint64) ( \
- (((guint64) (val) & \
- (guint64) G_GINT64_CONSTANT (0x00000000000000ffU)) << 56) | \
- (((guint64) (val) & \
- (guint64) G_GINT64_CONSTANT (0x000000000000ff00U)) << 40) | \
- (((guint64) (val) & \
- (guint64) G_GINT64_CONSTANT (0x0000000000ff0000U)) << 24) | \
- (((guint64) (val) & \
- (guint64) G_GINT64_CONSTANT (0x00000000ff000000U)) << 8) | \
- (((guint64) (val) & \
- (guint64) G_GINT64_CONSTANT (0x000000ff00000000U)) >> 8) | \
- (((guint64) (val) & \
- (guint64) G_GINT64_CONSTANT (0x0000ff0000000000U)) >> 24) | \
- (((guint64) (val) & \
- (guint64) G_GINT64_CONSTANT (0x00ff000000000000U)) >> 40) | \
- (((guint64) (val) & \
- (guint64) G_GINT64_CONSTANT (0xff00000000000000U)) >> 56)))
-
-/* Arch specific stuff for speed
- */
-#if defined (__GNUC__) && (__GNUC__ >= 2) && defined (__OPTIMIZE__)
-# if defined (__i386__)
-# define GUINT16_SWAP_LE_BE_IA32(val) \
- (__extension__ \
- ({ register guint16 __v, __x = ((guint16) (val)); \
- if (__builtin_constant_p (__x)) \
- __v = GUINT16_SWAP_LE_BE_CONSTANT (__x); \
- else \
- __asm__ ("rorw $8, %w0" \
- : "=r" (__v) \
- : "0" (__x) \
- : "cc"); \
- __v; }))
-# if !defined (__i486__) && !defined (__i586__) \
- && !defined (__pentium__) && !defined (__i686__) \
- && !defined (__pentiumpro__) && !defined (__pentium4__)
-# define GUINT32_SWAP_LE_BE_IA32(val) \
- (__extension__ \
- ({ register guint32 __v, __x = ((guint32) (val)); \
- if (__builtin_constant_p (__x)) \
- __v = GUINT32_SWAP_LE_BE_CONSTANT (__x); \
- else \
- __asm__ ("rorw $8, %w0\n\t" \
- "rorl $16, %0\n\t" \
- "rorw $8, %w0" \
- : "=r" (__v) \
- : "0" (__x) \
- : "cc"); \
- __v; }))
-# else /* 486 and higher has bswap */
-# define GUINT32_SWAP_LE_BE_IA32(val) \
- (__extension__ \
- ({ register guint32 __v, __x = ((guint32) (val)); \
- if (__builtin_constant_p (__x)) \
- __v = GUINT32_SWAP_LE_BE_CONSTANT (__x); \
- else \
- __asm__ ("bswap %0" \
- : "=r" (__v) \
- : "0" (__x)); \
- __v; }))
-# endif /* processor specific 32-bit stuff */
-# define GUINT64_SWAP_LE_BE_IA32(val) \
- (__extension__ \
- ({ union { guint64 __ll; \
- guint32 __l[2]; } __w, __r; \
- __w.__ll = ((guint64) (val)); \
- if (__builtin_constant_p (__w.__ll)) \
- __r.__ll = GUINT64_SWAP_LE_BE_CONSTANT (__w.__ll); \
- else \
- { \
- __r.__l[0] = GUINT32_SWAP_LE_BE (__w.__l[1]); \
- __r.__l[1] = GUINT32_SWAP_LE_BE (__w.__l[0]); \
- } \
- __r.__ll; }))
- /* Possibly just use the constant version and let gcc figure it out? */
-# define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_IA32 (val))
-# define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA32 (val))
-# define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA32 (val))
-# elif defined (__ia64__)
-# define GUINT16_SWAP_LE_BE_IA64(val) \
- (__extension__ \
- ({ register guint16 __v, __x = ((guint16) (val)); \
- if (__builtin_constant_p (__x)) \
- __v = GUINT16_SWAP_LE_BE_CONSTANT (__x); \
- else \
- __asm__ __volatile__ ("shl %0 = %1, 48 ;;" \
- "mux1 %0 = %0, @rev ;;" \
- : "=r" (__v) \
- : "r" (__x)); \
- __v; }))
-# define GUINT32_SWAP_LE_BE_IA64(val) \
- (__extension__ \
- ({ register guint32 __v, __x = ((guint32) (val)); \
- if (__builtin_constant_p (__x)) \
- __v = GUINT32_SWAP_LE_BE_CONSTANT (__x); \
- else \
- __asm__ __volatile__ ("shl %0 = %1, 32 ;;" \
- "mux1 %0 = %0, @rev ;;" \
- : "=r" (__v) \
- : "r" (__x)); \
- __v; }))
-# define GUINT64_SWAP_LE_BE_IA64(val) \
- (__extension__ \
- ({ register guint64 __v, __x = ((guint64) (val)); \
- if (__builtin_constant_p (__x)) \
- __v = GUINT64_SWAP_LE_BE_CONSTANT (__x); \
- else \
- __asm__ __volatile__ ("mux1 %0 = %1, @rev ;;" \
- : "=r" (__v) \
- : "r" (__x)); \
- __v; }))
-# define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_IA64 (val))
-# define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA64 (val))
-# define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA64 (val))
-# elif defined (__x86_64__)
-# define GUINT32_SWAP_LE_BE_X86_64(val) \
- (__extension__ \
- ({ register guint32 __v, __x = ((guint32) (val)); \
- if (__builtin_constant_p (__x)) \
- __v = GUINT32_SWAP_LE_BE_CONSTANT (__x); \
- else \
- __asm__ ("bswapl %0" \
- : "=r" (__v) \
- : "0" (__x)); \
- __v; }))
-# define GUINT64_SWAP_LE_BE_X86_64(val) \
- (__extension__ \
- ({ register guint64 __v, __x = ((guint64) (val)); \
- if (__builtin_constant_p (__x)) \
- __v = GUINT64_SWAP_LE_BE_CONSTANT (__x); \
- else \
- __asm__ ("bswapq %0" \
- : "=r" (__v) \
- : "0" (__x)); \
- __v; }))
- /* gcc seems to figure out optimal code for this on its own */
-# define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
-# define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_X86_64 (val))
-# define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_X86_64 (val))
-# else /* generic gcc */
-# define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
-# define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val))
-# define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT (val))
-# endif
-#else /* generic */
-# define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
-# define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val))
-# define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT (val))
-#endif /* generic */
-
-#define GUINT16_SWAP_LE_PDP(val) ((guint16) (val))
-#define GUINT16_SWAP_BE_PDP(val) (GUINT16_SWAP_LE_BE (val))
-#define GUINT32_SWAP_LE_PDP(val) ((guint32) ( \
- (((guint32) (val) & (guint32) 0x0000ffffU) << 16) | \
- (((guint32) (val) & (guint32) 0xffff0000U) >> 16)))
-#define GUINT32_SWAP_BE_PDP(val) ((guint32) ( \
- (((guint32) (val) & (guint32) 0x00ff00ffU) << 8) | \
- (((guint32) (val) & (guint32) 0xff00ff00U) >> 8)))
-
-/* The G*_TO_?E() macros are defined in glibconfig.h.
- * The transformation is symmetric, so the FROM just maps to the TO.
- */
-#define GINT16_FROM_LE(val) (GINT16_TO_LE (val))
-#define GUINT16_FROM_LE(val) (GUINT16_TO_LE (val))
-#define GINT16_FROM_BE(val) (GINT16_TO_BE (val))
-#define GUINT16_FROM_BE(val) (GUINT16_TO_BE (val))
-#define GINT32_FROM_LE(val) (GINT32_TO_LE (val))
-#define GUINT32_FROM_LE(val) (GUINT32_TO_LE (val))
-#define GINT32_FROM_BE(val) (GINT32_TO_BE (val))
-#define GUINT32_FROM_BE(val) (GUINT32_TO_BE (val))
-
-#define GINT64_FROM_LE(val) (GINT64_TO_LE (val))
-#define GUINT64_FROM_LE(val) (GUINT64_TO_LE (val))
-#define GINT64_FROM_BE(val) (GINT64_TO_BE (val))
-#define GUINT64_FROM_BE(val) (GUINT64_TO_BE (val))
-
-#define GLONG_FROM_LE(val) (GLONG_TO_LE (val))
-#define GULONG_FROM_LE(val) (GULONG_TO_LE (val))
-#define GLONG_FROM_BE(val) (GLONG_TO_BE (val))
-#define GULONG_FROM_BE(val) (GULONG_TO_BE (val))
-
-#define GINT_FROM_LE(val) (GINT_TO_LE (val))
-#define GUINT_FROM_LE(val) (GUINT_TO_LE (val))
-#define GINT_FROM_BE(val) (GINT_TO_BE (val))
-#define GUINT_FROM_BE(val) (GUINT_TO_BE (val))
-
-
-/* Portable versions of host-network order stuff
- */
-#define g_ntohl(val) (GUINT32_FROM_BE (val))
-#define g_ntohs(val) (GUINT16_FROM_BE (val))
-#define g_htonl(val) (GUINT32_TO_BE (val))
-#define g_htons(val) (GUINT16_TO_BE (val))
-
-/* IEEE Standard 754 Single Precision Storage Format (gfloat):
- *
- * 31 30 23 22 0
- * +--------+---------------+---------------+
- * | s 1bit | e[30:23] 8bit | f[22:0] 23bit |
- * +--------+---------------+---------------+
- * B0------------------->B1------->B2-->B3-->
- *
- * IEEE Standard 754 Double Precision Storage Format (gdouble):
- *
- * 63 62 52 51 32 31 0
- * +--------+----------------+----------------+ +---------------+
- * | s 1bit | e[62:52] 11bit | f[51:32] 20bit | | f[31:0] 32bit |
- * +--------+----------------+----------------+ +---------------+
- * B0--------------->B1---------->B2--->B3----> B4->B5->B6->B7->
- */
-/* subtract from biased_exponent to form base2 exponent (normal numbers) */
-typedef union _GDoubleIEEE754 GDoubleIEEE754;
-typedef union _GFloatIEEE754 GFloatIEEE754;
-#define G_IEEE754_FLOAT_BIAS (127)
-#define G_IEEE754_DOUBLE_BIAS (1023)
-/* multiply with base2 exponent to get base10 exponent (normal numbers) */
-#define G_LOG_2_BASE_10 (0.30102999566398119521)
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-union _GFloatIEEE754
-{
- gfloat v_float;
- struct {
- guint mantissa : 23;
- guint biased_exponent : 8;
- guint sign : 1;
- } mpn;
-};
-union _GDoubleIEEE754
-{
- gdouble v_double;
- struct {
- guint mantissa_low : 32;
- guint mantissa_high : 20;
- guint biased_exponent : 11;
- guint sign : 1;
- } mpn;
-};
-#elif G_BYTE_ORDER == G_BIG_ENDIAN
-union _GFloatIEEE754
-{
- gfloat v_float;
- struct {
- guint sign : 1;
- guint biased_exponent : 8;
- guint mantissa : 23;
- } mpn;
-};
-union _GDoubleIEEE754
-{
- gdouble v_double;
- struct {
- guint sign : 1;
- guint biased_exponent : 11;
- guint mantissa_high : 20;
- guint mantissa_low : 32;
- } mpn;
-};
-#else /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */
-#error unknown ENDIAN type
-#endif /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */
-
-typedef struct _GTimeVal GTimeVal;
-
-struct _GTimeVal
-{
- glong tv_sec;
- glong tv_usec;
-};
-
-G_END_DECLS
-
-/* We prefix variable declarations so they can
- * properly get exported in Windows DLLs.
- */
-#ifndef GLIB_VAR
-# ifdef G_PLATFORM_WIN32
-# ifdef GLIB_STATIC_COMPILATION
-# define GLIB_VAR extern
-# else /* !GLIB_STATIC_COMPILATION */
-# ifdef GLIB_COMPILATION
-# ifdef DLL_EXPORT
-# define GLIB_VAR __declspec(dllexport)
-# else /* !DLL_EXPORT */
-# define GLIB_VAR extern
-# endif /* !DLL_EXPORT */
-# else /* !GLIB_COMPILATION */
-# define GLIB_VAR extern __declspec(dllimport)
-# endif /* !GLIB_COMPILATION */
-# endif /* !GLIB_STATIC_COMPILATION */
-# else /* !G_PLATFORM_WIN32 */
-# define GLIB_VAR extern
-# endif /* !G_PLATFORM_WIN32 */
-#endif /* GLIB_VAR */
-
-#endif /* __G_TYPES_H__ */
diff --git a/navit/support/glib/gunicode.h b/navit/support/glib/gunicode.h
deleted file mode 100644
index 78b259e44..000000000
--- a/navit/support/glib/gunicode.h
+++ /dev/null
@@ -1,404 +0,0 @@
-/* gunicode.h - Unicode manipulation functions
- *
- * Copyright (C) 1999, 2000 Tom Tromey
- * Copyright 2000, 2005 Red Hat, Inc.
- *
- * The Gnome Library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * The Gnome Library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the Gnome Library; see the file COPYING.LIB. If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_UNICODE_H__
-#define __G_UNICODE_H__
-
-#include <glib/gerror.h>
-#include <glib/gtypes.h>
-
-G_BEGIN_DECLS
-
-typedef guint32 gunichar;
-typedef guint16 gunichar2;
-
-/* These are the possible character classifications.
- * See http://www.unicode.org/Public/UNIDATA/UCD.html#General_Category_Values
- */
-typedef enum
-{
- G_UNICODE_CONTROL,
- G_UNICODE_FORMAT,
- G_UNICODE_UNASSIGNED,
- G_UNICODE_PRIVATE_USE,
- G_UNICODE_SURROGATE,
- G_UNICODE_LOWERCASE_LETTER,
- G_UNICODE_MODIFIER_LETTER,
- G_UNICODE_OTHER_LETTER,
- G_UNICODE_TITLECASE_LETTER,
- G_UNICODE_UPPERCASE_LETTER,
- G_UNICODE_COMBINING_MARK,
- G_UNICODE_ENCLOSING_MARK,
- G_UNICODE_NON_SPACING_MARK,
- G_UNICODE_DECIMAL_NUMBER,
- G_UNICODE_LETTER_NUMBER,
- G_UNICODE_OTHER_NUMBER,
- G_UNICODE_CONNECT_PUNCTUATION,
- G_UNICODE_DASH_PUNCTUATION,
- G_UNICODE_CLOSE_PUNCTUATION,
- G_UNICODE_FINAL_PUNCTUATION,
- G_UNICODE_INITIAL_PUNCTUATION,
- G_UNICODE_OTHER_PUNCTUATION,
- G_UNICODE_OPEN_PUNCTUATION,
- G_UNICODE_CURRENCY_SYMBOL,
- G_UNICODE_MODIFIER_SYMBOL,
- G_UNICODE_MATH_SYMBOL,
- G_UNICODE_OTHER_SYMBOL,
- G_UNICODE_LINE_SEPARATOR,
- G_UNICODE_PARAGRAPH_SEPARATOR,
- G_UNICODE_SPACE_SEPARATOR
-} GUnicodeType;
-
-/* These are the possible line break classifications.
- * Note that new types may be added in the future.
- * Implementations may regard unknown values like G_UNICODE_BREAK_UNKNOWN
- * See http://www.unicode.org/unicode/reports/tr14/
- */
-typedef enum
-{
- G_UNICODE_BREAK_MANDATORY,
- G_UNICODE_BREAK_CARRIAGE_RETURN,
- G_UNICODE_BREAK_LINE_FEED,
- G_UNICODE_BREAK_COMBINING_MARK,
- G_UNICODE_BREAK_SURROGATE,
- G_UNICODE_BREAK_ZERO_WIDTH_SPACE,
- G_UNICODE_BREAK_INSEPARABLE,
- G_UNICODE_BREAK_NON_BREAKING_GLUE,
- G_UNICODE_BREAK_CONTINGENT,
- G_UNICODE_BREAK_SPACE,
- G_UNICODE_BREAK_AFTER,
- G_UNICODE_BREAK_BEFORE,
- G_UNICODE_BREAK_BEFORE_AND_AFTER,
- G_UNICODE_BREAK_HYPHEN,
- G_UNICODE_BREAK_NON_STARTER,
- G_UNICODE_BREAK_OPEN_PUNCTUATION,
- G_UNICODE_BREAK_CLOSE_PUNCTUATION,
- G_UNICODE_BREAK_QUOTATION,
- G_UNICODE_BREAK_EXCLAMATION,
- G_UNICODE_BREAK_IDEOGRAPHIC,
- G_UNICODE_BREAK_NUMERIC,
- G_UNICODE_BREAK_INFIX_SEPARATOR,
- G_UNICODE_BREAK_SYMBOL,
- G_UNICODE_BREAK_ALPHABETIC,
- G_UNICODE_BREAK_PREFIX,
- G_UNICODE_BREAK_POSTFIX,
- G_UNICODE_BREAK_COMPLEX_CONTEXT,
- G_UNICODE_BREAK_AMBIGUOUS,
- G_UNICODE_BREAK_UNKNOWN,
- G_UNICODE_BREAK_NEXT_LINE,
- G_UNICODE_BREAK_WORD_JOINER,
- G_UNICODE_BREAK_HANGUL_L_JAMO,
- G_UNICODE_BREAK_HANGUL_V_JAMO,
- G_UNICODE_BREAK_HANGUL_T_JAMO,
- G_UNICODE_BREAK_HANGUL_LV_SYLLABLE,
- G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE
-} GUnicodeBreakType;
-
-typedef enum
-{ /* ISO 15924 code */
- G_UNICODE_SCRIPT_INVALID_CODE = -1,
- G_UNICODE_SCRIPT_COMMON = 0, /* Zyyy */
- G_UNICODE_SCRIPT_INHERITED, /* Qaai */
- G_UNICODE_SCRIPT_ARABIC, /* Arab */
- G_UNICODE_SCRIPT_ARMENIAN, /* Armn */
- G_UNICODE_SCRIPT_BENGALI, /* Beng */
- G_UNICODE_SCRIPT_BOPOMOFO, /* Bopo */
- G_UNICODE_SCRIPT_CHEROKEE, /* Cher */
- G_UNICODE_SCRIPT_COPTIC, /* Qaac */
- G_UNICODE_SCRIPT_CYRILLIC, /* Cyrl (Cyrs) */
- G_UNICODE_SCRIPT_DESERET, /* Dsrt */
- G_UNICODE_SCRIPT_DEVANAGARI, /* Deva */
- G_UNICODE_SCRIPT_ETHIOPIC, /* Ethi */
- G_UNICODE_SCRIPT_GEORGIAN, /* Geor (Geon, Geoa) */
- G_UNICODE_SCRIPT_GOTHIC, /* Goth */
- G_UNICODE_SCRIPT_GREEK, /* Grek */
- G_UNICODE_SCRIPT_GUJARATI, /* Gujr */
- G_UNICODE_SCRIPT_GURMUKHI, /* Guru */
- G_UNICODE_SCRIPT_HAN, /* Hani */
- G_UNICODE_SCRIPT_HANGUL, /* Hang */
- G_UNICODE_SCRIPT_HEBREW, /* Hebr */
- G_UNICODE_SCRIPT_HIRAGANA, /* Hira */
- G_UNICODE_SCRIPT_KANNADA, /* Knda */
- G_UNICODE_SCRIPT_KATAKANA, /* Kana */
- G_UNICODE_SCRIPT_KHMER, /* Khmr */
- G_UNICODE_SCRIPT_LAO, /* Laoo */
- G_UNICODE_SCRIPT_LATIN, /* Latn (Latf, Latg) */
- G_UNICODE_SCRIPT_MALAYALAM, /* Mlym */
- G_UNICODE_SCRIPT_MONGOLIAN, /* Mong */
- G_UNICODE_SCRIPT_MYANMAR, /* Mymr */
- G_UNICODE_SCRIPT_OGHAM, /* Ogam */
- G_UNICODE_SCRIPT_OLD_ITALIC, /* Ital */
- G_UNICODE_SCRIPT_ORIYA, /* Orya */
- G_UNICODE_SCRIPT_RUNIC, /* Runr */
- G_UNICODE_SCRIPT_SINHALA, /* Sinh */
- G_UNICODE_SCRIPT_SYRIAC, /* Syrc (Syrj, Syrn, Syre) */
- G_UNICODE_SCRIPT_TAMIL, /* Taml */
- G_UNICODE_SCRIPT_TELUGU, /* Telu */
- G_UNICODE_SCRIPT_THAANA, /* Thaa */
- G_UNICODE_SCRIPT_THAI, /* Thai */
- G_UNICODE_SCRIPT_TIBETAN, /* Tibt */
- G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, /* Cans */
- G_UNICODE_SCRIPT_YI, /* Yiii */
- G_UNICODE_SCRIPT_TAGALOG, /* Tglg */
- G_UNICODE_SCRIPT_HANUNOO, /* Hano */
- G_UNICODE_SCRIPT_BUHID, /* Buhd */
- G_UNICODE_SCRIPT_TAGBANWA, /* Tagb */
-
- /* Unicode-4.0 additions */
- G_UNICODE_SCRIPT_BRAILLE, /* Brai */
- G_UNICODE_SCRIPT_CYPRIOT, /* Cprt */
- G_UNICODE_SCRIPT_LIMBU, /* Limb */
- G_UNICODE_SCRIPT_OSMANYA, /* Osma */
- G_UNICODE_SCRIPT_SHAVIAN, /* Shaw */
- G_UNICODE_SCRIPT_LINEAR_B, /* Linb */
- G_UNICODE_SCRIPT_TAI_LE, /* Tale */
- G_UNICODE_SCRIPT_UGARITIC, /* Ugar */
-
- /* Unicode-4.1 additions */
- G_UNICODE_SCRIPT_NEW_TAI_LUE, /* Talu */
- G_UNICODE_SCRIPT_BUGINESE, /* Bugi */
- G_UNICODE_SCRIPT_GLAGOLITIC, /* Glag */
- G_UNICODE_SCRIPT_TIFINAGH, /* Tfng */
- G_UNICODE_SCRIPT_SYLOTI_NAGRI, /* Sylo */
- G_UNICODE_SCRIPT_OLD_PERSIAN, /* Xpeo */
- G_UNICODE_SCRIPT_KHAROSHTHI, /* Khar */
-
- /* Unicode-5.0 additions */
- G_UNICODE_SCRIPT_UNKNOWN, /* Zzzz */
- G_UNICODE_SCRIPT_BALINESE, /* Bali */
- G_UNICODE_SCRIPT_CUNEIFORM, /* Xsux */
- G_UNICODE_SCRIPT_PHOENICIAN, /* Phnx */
- G_UNICODE_SCRIPT_PHAGS_PA, /* Phag */
- G_UNICODE_SCRIPT_NKO, /* Nkoo */
-
- /* Unicode-5.1 additions */
- G_UNICODE_SCRIPT_KAYAH_LI, /* Kali */
- G_UNICODE_SCRIPT_LEPCHA, /* Lepc */
- G_UNICODE_SCRIPT_REJANG, /* Rjng */
- G_UNICODE_SCRIPT_SUNDANESE, /* Sund */
- G_UNICODE_SCRIPT_SAURASHTRA, /* Saur */
- G_UNICODE_SCRIPT_CHAM, /* Cham */
- G_UNICODE_SCRIPT_OL_CHIKI, /* Olck */
- G_UNICODE_SCRIPT_VAI, /* Vaii */
- G_UNICODE_SCRIPT_CARIAN, /* Cari */
- G_UNICODE_SCRIPT_LYCIAN, /* Lyci */
- G_UNICODE_SCRIPT_LYDIAN /* Lydi */
-} GUnicodeScript;
-
-/* Returns TRUE if current locale uses UTF-8 charset. If CHARSET is
- * not null, sets *CHARSET to the name of the current locale's
- * charset. This value is statically allocated, and should be copied
- * in case the locale's charset will be changed later using setlocale()
- * or in some other way.
- */
-gboolean g_get_charset (G_CONST_RETURN char **charset);
-
-/* These are all analogs of the <ctype.h> functions.
- */
-gboolean g_unichar_isalnum (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_isalpha (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_iscntrl (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_isdigit (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_isgraph (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_islower (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_isprint (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_ispunct (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_isspace (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_isupper (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_isxdigit (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_istitle (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_isdefined (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_iswide (gunichar c) G_GNUC_CONST;
-gboolean g_unichar_iswide_cjk(gunichar c) G_GNUC_CONST;
-gboolean g_unichar_iszerowidth(gunichar c) G_GNUC_CONST;
-gboolean g_unichar_ismark (gunichar c) G_GNUC_CONST;
-
-/* More <ctype.h> functions. These convert between the three cases.
- * See the Unicode book to understand title case. */
-gunichar g_unichar_toupper (gunichar c) G_GNUC_CONST;
-gunichar g_unichar_tolower (gunichar c) G_GNUC_CONST;
-gunichar g_unichar_totitle (gunichar c) G_GNUC_CONST;
-
-/* If C is a digit (according to `g_unichar_isdigit'), then return its
- numeric value. Otherwise return -1. */
-gint g_unichar_digit_value (gunichar c) G_GNUC_CONST;
-
-gint g_unichar_xdigit_value (gunichar c) G_GNUC_CONST;
-
-/* Return the Unicode character type of a given character. */
-GUnicodeType g_unichar_type (gunichar c) G_GNUC_CONST;
-
-/* Return the line break property for a given character */
-GUnicodeBreakType g_unichar_break_type (gunichar c) G_GNUC_CONST;
-
-/* Returns the combining class for a given character */
-gint g_unichar_combining_class (gunichar uc) G_GNUC_CONST;
-
-
-/* Compute canonical ordering of a string in-place. This rearranges
- decomposed characters in the string according to their combining
- classes. See the Unicode manual for more information. */
-void g_unicode_canonical_ordering (gunichar *string,
- gsize len);
-
-/* Compute canonical decomposition of a character. Returns g_malloc()d
- string of Unicode characters. RESULT_LEN is set to the resulting
- length of the string. */
-gunichar *g_unicode_canonical_decomposition (gunichar ch,
- gsize *result_len) G_GNUC_MALLOC;
-
-/* Array of skip-bytes-per-initial character.
- */
-GLIB_VAR const gchar * const g_utf8_skip;
-
-#define g_utf8_next_char(p) (char *)((p) + g_utf8_skip[*(const guchar *)(p)])
-
-gunichar g_utf8_get_char (const gchar *p) G_GNUC_PURE;
-gunichar g_utf8_get_char_validated (const gchar *p,
- gssize max_len) G_GNUC_PURE;
-
-gchar* g_utf8_offset_to_pointer (const gchar *str,
- glong offset) G_GNUC_PURE;
-glong g_utf8_pointer_to_offset (const gchar *str,
- const gchar *pos) G_GNUC_PURE;
-gchar* g_utf8_prev_char (const gchar *p) G_GNUC_PURE;
-gchar* g_utf8_find_next_char (const gchar *p,
- const gchar *end) G_GNUC_PURE;
-gchar* g_utf8_find_prev_char (const gchar *str,
- const gchar *p) G_GNUC_PURE;
-
-glong g_utf8_strlen (const gchar *p,
- gssize max) G_GNUC_PURE;
-
-/* Copies n characters from src to dest */
-gchar* g_utf8_strncpy (gchar *dest,
- const gchar *src,
- gsize n);
-
-/* Find the UTF-8 character corresponding to ch, in string p. These
- functions are equivalants to strchr and strrchr */
-gchar* g_utf8_strchr (const gchar *p,
- gssize len,
- gunichar c);
-gchar* g_utf8_strrchr (const gchar *p,
- gssize len,
- gunichar c);
-gchar* g_utf8_strreverse (const gchar *str,
- gssize len);
-
-gunichar2 *g_utf8_to_utf16 (const gchar *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error) G_GNUC_MALLOC;
-gunichar * g_utf8_to_ucs4 (const gchar *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error) G_GNUC_MALLOC;
-gunichar * g_utf8_to_ucs4_fast (const gchar *str,
- glong len,
- glong *items_written) G_GNUC_MALLOC;
-gunichar * g_utf16_to_ucs4 (const gunichar2 *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error) G_GNUC_MALLOC;
-gchar* g_utf16_to_utf8 (const gunichar2 *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error) G_GNUC_MALLOC;
-gunichar2 *g_ucs4_to_utf16 (const gunichar *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error) G_GNUC_MALLOC;
-gchar* g_ucs4_to_utf8 (const gunichar *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error) G_GNUC_MALLOC;
-
-/* Convert a single character into UTF-8. outbuf must have at
- * least 6 bytes of space. Returns the number of bytes in the
- * result.
- */
-gint g_unichar_to_utf8 (gunichar c,
- gchar *outbuf);
-
-/* Validate a UTF8 string, return TRUE if valid, put pointer to
- * first invalid char in **end
- */
-
-gboolean g_utf8_validate (const gchar *str,
- gssize max_len,
- const gchar **end);
-
-/* Validate a Unicode character */
-gboolean g_unichar_validate (gunichar ch) G_GNUC_CONST;
-
-gchar *g_utf8_strup (const gchar *str,
- gssize len) G_GNUC_MALLOC;
-gchar *g_utf8_strdown (const gchar *str,
- gssize len) G_GNUC_MALLOC;
-gchar *g_utf8_casefold (const gchar *str,
- gssize len) G_GNUC_MALLOC;
-
-typedef enum {
- G_NORMALIZE_DEFAULT,
- G_NORMALIZE_NFD = G_NORMALIZE_DEFAULT,
- G_NORMALIZE_DEFAULT_COMPOSE,
- G_NORMALIZE_NFC = G_NORMALIZE_DEFAULT_COMPOSE,
- G_NORMALIZE_ALL,
- G_NORMALIZE_NFKD = G_NORMALIZE_ALL,
- G_NORMALIZE_ALL_COMPOSE,
- G_NORMALIZE_NFKC = G_NORMALIZE_ALL_COMPOSE
-} GNormalizeMode;
-
-gchar *g_utf8_normalize (const gchar *str,
- gssize len,
- GNormalizeMode mode) G_GNUC_MALLOC;
-
-gint g_utf8_collate (const gchar *str1,
- const gchar *str2) G_GNUC_PURE;
-gchar *g_utf8_collate_key (const gchar *str,
- gssize len) G_GNUC_MALLOC;
-gchar *g_utf8_collate_key_for_filename (const gchar *str,
- gssize len) G_GNUC_MALLOC;
-
-gboolean g_unichar_get_mirror_char (gunichar ch,
- gunichar *mirrored_ch);
-
-GUnicodeScript g_unichar_get_script (gunichar ch) G_GNUC_CONST;
-
-
-/* private */
-
-gchar *_g_utf8_make_valid (const gchar *name);
-
-G_END_DECLS
-
-#endif /* __G_UNICODE_H__ */
diff --git a/navit/support/glib/gutf8.c b/navit/support/glib/gutf8.c
deleted file mode 100644
index d6cd83bbf..000000000
--- a/navit/support/glib/gutf8.c
+++ /dev/null
@@ -1,1891 +0,0 @@
-/* gutf8.c - Operations on UTF-8 strings.
- *
- * Copyright (C) 1999 Tom Tromey
- * Copyright (C) 2000 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#ifdef HAVE_CODESET
-#include <langinfo.h>
-#endif
-#include <string.h>
-
-#include "glib.h"
-
-#ifdef G_PLATFORM_WIN32
-#include <stdio.h>
-#define STRICT
-#include <windows.h>
-#undef STRICT
-#endif
-
-#ifdef NOT_NEEDED_FOR_NAVIT
-#include "libcharset/libcharset.h"
-
-#include "glibintl.h"
-#include "galias.h"
-#endif
-
-#define UTF8_COMPUTE(Char, Mask, Len) \
- if (Char < 128) \
- { \
- Len = 1; \
- Mask = 0x7f; \
- } \
- else if ((Char & 0xe0) == 0xc0) \
- { \
- Len = 2; \
- Mask = 0x1f; \
- } \
- else if ((Char & 0xf0) == 0xe0) \
- { \
- Len = 3; \
- Mask = 0x0f; \
- } \
- else if ((Char & 0xf8) == 0xf0) \
- { \
- Len = 4; \
- Mask = 0x07; \
- } \
- else if ((Char & 0xfc) == 0xf8) \
- { \
- Len = 5; \
- Mask = 0x03; \
- } \
- else if ((Char & 0xfe) == 0xfc) \
- { \
- Len = 6; \
- Mask = 0x01; \
- } \
- else \
- Len = -1;
-
-#define UTF8_LENGTH(Char) \
- ((Char) < 0x80 ? 1 : \
- ((Char) < 0x800 ? 2 : \
- ((Char) < 0x10000 ? 3 : \
- ((Char) < 0x200000 ? 4 : \
- ((Char) < 0x4000000 ? 5 : 6)))))
-
-
-#define UTF8_GET(Result, Chars, Count, Mask, Len) \
- (Result) = (Chars)[0] & (Mask); \
- for ((Count) = 1; (Count) < (Len); ++(Count)) \
- { \
- if (((Chars)[(Count)] & 0xc0) != 0x80) \
- { \
- (Result) = -1; \
- break; \
- } \
- (Result) <<= 6; \
- (Result) |= ((Chars)[(Count)] & 0x3f); \
- }
-
-#define UNICODE_VALID(Char) \
- ((Char) < 0x110000 && \
- (((Char) & 0xFFFFF800) != 0xD800) && \
- ((Char) < 0xFDD0 || (Char) > 0xFDEF) && \
- ((Char) & 0xFFFE) != 0xFFFE)
-
-
-static const gchar utf8_skip_data[256] = {
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
- 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1
-};
-
-const gchar * const g_utf8_skip = utf8_skip_data;
-
-/**
- * g_utf8_find_prev_char:
- * @str: pointer to the beginning of a UTF-8 encoded string
- * @p: pointer to some position within @str
- *
- * Given a position @p with a UTF-8 encoded string @str, find the start
- * of the previous UTF-8 character starting before @p. Returns %NULL if no
- * UTF-8 characters are present in @str before @p.
- *
- * @p does not have to be at the beginning of a UTF-8 character. No check
- * is made to see if the character found is actually valid other than
- * it starts with an appropriate byte.
- *
- * Return value: a pointer to the found character or %NULL.
- **/
-gchar *
-g_utf8_find_prev_char (const char *str,
- const char *p)
-{
- for (--p; p >= str; --p)
- {
- if ((*p & 0xc0) != 0x80)
- return (gchar *)p;
- }
- return NULL;
-}
-
-/**
- * g_utf8_find_next_char:
- * @p: a pointer to a position within a UTF-8 encoded string
- * @end: a pointer to the byte following the end of the string,
- * or %NULL to indicate that the string is nul-terminated.
- *
- * Finds the start of the next UTF-8 character in the string after @p.
- *
- * @p does not have to be at the beginning of a UTF-8 character. No check
- * is made to see if the character found is actually valid other than
- * it starts with an appropriate byte.
- *
- * Return value: a pointer to the found character or %NULL
- **/
-gchar *
-g_utf8_find_next_char (const gchar *p,
- const gchar *end)
-{
- if (*p)
- {
- if (end)
- for (++p; p < end && (*p & 0xc0) == 0x80; ++p)
- ;
- else
- for (++p; (*p & 0xc0) == 0x80; ++p)
- ;
- }
- return (p == end) ? NULL : (gchar *)p;
-}
-
-/**
- * g_utf8_prev_char:
- * @p: a pointer to a position within a UTF-8 encoded string
- *
- * Finds the previous UTF-8 character in the string before @p.
- *
- * @p does not have to be at the beginning of a UTF-8 character. No check
- * is made to see if the character found is actually valid other than
- * it starts with an appropriate byte. If @p might be the first
- * character of the string, you must use g_utf8_find_prev_char() instead.
- *
- * Return value: a pointer to the found character.
- **/
-gchar *
-g_utf8_prev_char (const gchar *p)
-{
- while (TRUE)
- {
- p--;
- if ((*p & 0xc0) != 0x80)
- return (gchar *)p;
- }
-}
-
-/**
- * g_utf8_strlen:
- * @p: pointer to the start of a UTF-8 encoded string.
- * @max: the maximum number of bytes to examine. If @max
- * is less than 0, then the string is assumed to be
- * nul-terminated. If @max is 0, @p will not be examined and
- * may be %NULL.
- *
- * Returns the length of the string in characters.
- *
- * Return value: the length of the string in characters
- **/
-glong
-g_utf8_strlen (const gchar *p,
- gssize max)
-{
- glong len = 0;
- const gchar *start = p;
- g_return_val_if_fail (p != NULL || max == 0, 0);
-
- if (max < 0)
- {
- while (*p)
- {
- p = g_utf8_next_char (p);
- ++len;
- }
- }
- else
- {
- if (max == 0 || !*p)
- return 0;
-
- p = g_utf8_next_char (p);
-
- while (p - start < max && *p)
- {
- ++len;
- p = g_utf8_next_char (p);
- }
-
- /* only do the last len increment if we got a complete
- * char (don't count partial chars)
- */
- if (p - start <= max)
- ++len;
- }
-
- return len;
-}
-
-/**
- * g_utf8_get_char:
- * @p: a pointer to Unicode character encoded as UTF-8
- *
- * Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
- * If @p does not point to a valid UTF-8 encoded character, results are
- * undefined. If you are not sure that the bytes are complete
- * valid Unicode characters, you should use g_utf8_get_char_validated()
- * instead.
- *
- * Return value: the resulting character
- **/
-gunichar
-g_utf8_get_char (const gchar *p)
-{
- int i, mask = 0, len;
- gunichar result;
- unsigned char c = (unsigned char) *p;
-
- UTF8_COMPUTE (c, mask, len);
- if (len == -1)
- return (gunichar)-1;
- UTF8_GET (result, p, i, mask, len);
-
- return result;
-}
-
-
-/**
- * g_utf8_offset_to_pointer:
- * @str: a UTF-8 encoded string
- * @offset: a character offset within @str
- *
- * Converts from an integer character offset to a pointer to a position
- * within the string.
- *
- * Since 2.10, this function allows to pass a negative @offset to
- * step backwards. It is usually worth stepping backwards from the end
- * instead of forwards if @offset is in the last fourth of the string,
- * since moving forward is about 3 times faster than moving backward.
- *
- * Return value: the resulting pointer
- **/
-gchar *
-g_utf8_offset_to_pointer (const gchar *str,
- glong offset)
-{
- const gchar *s = str;
-
- if (offset > 0)
- while (offset--)
- s = g_utf8_next_char (s);
- else
- {
- const char *s1;
-
- /* This nice technique for fast backwards stepping
- * through a UTF-8 string was dubbed "stutter stepping"
- * by its inventor, Larry Ewing.
- */
- while (offset)
- {
- s1 = s;
- s += offset;
- while ((*s & 0xc0) == 0x80)
- s--;
-
- offset += g_utf8_pointer_to_offset (s, s1);
- }
- }
-
- return (gchar *)s;
-}
-
-/**
- * g_utf8_pointer_to_offset:
- * @str: a UTF-8 encoded string
- * @pos: a pointer to a position within @str
- *
- * Converts from a pointer to position within a string to a integer
- * character offset.
- *
- * Since 2.10, this function allows @pos to be before @str, and returns
- * a negative offset in this case.
- *
- * Return value: the resulting character offset
- **/
-glong
-g_utf8_pointer_to_offset (const gchar *str,
- const gchar *pos)
-{
- const gchar *s = str;
- glong offset = 0;
-
- if (pos < str)
- offset = - g_utf8_pointer_to_offset (pos, str);
- else
- while (s < pos)
- {
- s = g_utf8_next_char (s);
- offset++;
- }
-
- return offset;
-}
-
-
-/**
- * g_utf8_strncpy:
- * @dest: buffer to fill with characters from @src
- * @src: UTF-8 encoded string
- * @n: character count
- *
- * Like the standard C strncpy() function, but
- * copies a given number of characters instead of a given number of
- * bytes. The @src string must be valid UTF-8 encoded text.
- * (Use g_utf8_validate() on all text before trying to use UTF-8
- * utility functions with it.)
- *
- * Return value: @dest
- **/
-gchar *
-g_utf8_strncpy (gchar *dest,
- const gchar *src,
- gsize n)
-{
- const gchar *s = src;
- while (n && *s)
- {
- s = g_utf8_next_char(s);
- n--;
- }
- strncpy(dest, src, s - src);
- dest[s - src] = 0;
- return dest;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-G_LOCK_DEFINE_STATIC (aliases);
-
-static GHashTable *
-get_alias_hash (void)
-{
- static GHashTable *alias_hash = NULL;
- const char *aliases;
-
- G_LOCK (aliases);
-
- if (!alias_hash)
- {
- alias_hash = g_hash_table_new (g_str_hash, g_str_equal);
-
- aliases = _g_locale_get_charset_aliases ();
- while (*aliases != '\0')
- {
- const char *canonical;
- const char *alias;
- const char **alias_array;
- int count = 0;
-
- alias = aliases;
- aliases += strlen (aliases) + 1;
- canonical = aliases;
- aliases += strlen (aliases) + 1;
-
- alias_array = g_hash_table_lookup (alias_hash, canonical);
- if (alias_array)
- {
- while (alias_array[count])
- count++;
- }
-
- alias_array = g_renew (const char *, alias_array, count + 2);
- alias_array[count] = alias;
- alias_array[count + 1] = NULL;
-
- g_hash_table_insert (alias_hash, (char *)canonical, alias_array);
- }
- }
-
- G_UNLOCK (aliases);
-
- return alias_hash;
-}
-
-/* As an abuse of the alias table, the following routines gets
- * the charsets that are aliases for the canonical name.
- */
-G_GNUC_INTERNAL const char **
-_g_charset_get_aliases (const char *canonical_name)
-{
- GHashTable *alias_hash = get_alias_hash ();
-
- return g_hash_table_lookup (alias_hash, canonical_name);
-}
-
-static gboolean
-g_utf8_get_charset_internal (const char *raw_data,
- const char **a)
-{
- const char *charset = getenv("CHARSET");
-
- if (charset && *charset)
- {
- *a = charset;
-
- if (charset && strstr (charset, "UTF-8"))
- return TRUE;
- else
- return FALSE;
- }
-
- /* The libcharset code tries to be thread-safe without
- * a lock, but has a memory leak and a missing memory
- * barrier, so we lock for it
- */
- G_LOCK (aliases);
- charset = _g_locale_charset_unalias (raw_data);
- G_UNLOCK (aliases);
-
- if (charset && *charset)
- {
- *a = charset;
-
- if (charset && strstr (charset, "UTF-8"))
- return TRUE;
- else
- return FALSE;
- }
-
- /* Assume this for compatibility at present. */
- *a = "US-ASCII";
-
- return FALSE;
-}
-
-typedef struct _GCharsetCache GCharsetCache;
-
-struct _GCharsetCache {
- gboolean is_utf8;
- gchar *raw;
- gchar *charset;
-};
-
-static void
-charset_cache_free (gpointer data)
-{
- GCharsetCache *cache = data;
- g_free (cache->raw);
- g_free (cache->charset);
- g_free (cache);
-}
-
-/**
- * g_get_charset:
- * @charset: return location for character set name
- *
- * Obtains the character set for the <link linkend="setlocale">current
- * locale</link>; you might use this character set as an argument to
- * g_convert(), to convert from the current locale's encoding to some
- * other encoding. (Frequently g_locale_to_utf8() and g_locale_from_utf8()
- * are nice shortcuts, though.)
- *
- * On Windows the character set returned by this function is the
- * so-called system default ANSI code-page. That is the character set
- * used by the "narrow" versions of C library and Win32 functions that
- * handle file names. It might be different from the character set
- * used by the C library's current locale.
- *
- * The return value is %TRUE if the locale's encoding is UTF-8, in that
- * case you can perhaps avoid calling g_convert().
- *
- * The string returned in @charset is not allocated, and should not be
- * freed.
- *
- * Return value: %TRUE if the returned charset is UTF-8
- **/
-gboolean
-g_get_charset (G_CONST_RETURN char **charset)
-{
- static GStaticPrivate cache_private = G_STATIC_PRIVATE_INIT;
- GCharsetCache *cache = g_static_private_get (&cache_private);
- const gchar *raw;
-
- if (!cache)
- {
- cache = g_new0 (GCharsetCache, 1);
- g_static_private_set (&cache_private, cache, charset_cache_free);
- }
-
- raw = _g_locale_charset_raw ();
-
- if (!(cache->raw && strcmp (cache->raw, raw) == 0))
- {
- const gchar *new_charset;
-
- g_free (cache->raw);
- g_free (cache->charset);
- cache->raw = g_strdup (raw);
- cache->is_utf8 = g_utf8_get_charset_internal (raw, &new_charset);
- cache->charset = g_strdup (new_charset);
- }
-
- if (charset)
- *charset = cache->charset;
-
- return cache->is_utf8;
-}
-#endif
-
-/* unicode_strchr */
-
-/**
- * g_unichar_to_utf8:
- * @c: a Unicode character code
- * @outbuf: output buffer, must have at least 6 bytes of space.
- * If %NULL, the length will be computed and returned
- * and nothing will be written to @outbuf.
- *
- * Converts a single character to UTF-8.
- *
- * Return value: number of bytes written
- **/
-int
-g_unichar_to_utf8 (gunichar c,
- gchar *outbuf)
-{
- /* If this gets modified, also update the copy in g_string_insert_unichar() */
- guint len = 0;
- int first;
- int i;
-
- if (c < 0x80)
- {
- first = 0;
- len = 1;
- }
- else if (c < 0x800)
- {
- first = 0xc0;
- len = 2;
- }
- else if (c < 0x10000)
- {
- first = 0xe0;
- len = 3;
- }
- else if (c < 0x200000)
- {
- first = 0xf0;
- len = 4;
- }
- else if (c < 0x4000000)
- {
- first = 0xf8;
- len = 5;
- }
- else
- {
- first = 0xfc;
- len = 6;
- }
-
- if (outbuf)
- {
- for (i = len - 1; i > 0; --i)
- {
- outbuf[i] = (c & 0x3f) | 0x80;
- c >>= 6;
- }
- outbuf[0] = c | first;
- }
-
- return len;
-}
-
-/**
- * g_utf8_strchr:
- * @p: a nul-terminated UTF-8 encoded string
- * @len: the maximum length of @p
- * @c: a Unicode character
- *
- * Finds the leftmost occurrence of the given Unicode character
- * in a UTF-8 encoded string, while limiting the search to @len bytes.
- * If @len is -1, allow unbounded search.
- *
- * Return value: %NULL if the string does not contain the character,
- * otherwise, a pointer to the start of the leftmost occurrence of
- * the character in the string.
- **/
-gchar *
-g_utf8_strchr (const char *p,
- gssize len,
- gunichar c)
-{
- gchar ch[10];
-
- gint charlen = g_unichar_to_utf8 (c, ch);
- ch[charlen] = '\0';
-
- return g_strstr_len (p, len, ch);
-}
-
-
-/**
- * g_utf8_strrchr:
- * @p: a nul-terminated UTF-8 encoded string
- * @len: the maximum length of @p
- * @c: a Unicode character
- *
- * Find the rightmost occurrence of the given Unicode character
- * in a UTF-8 encoded string, while limiting the search to @len bytes.
- * If @len is -1, allow unbounded search.
- *
- * Return value: %NULL if the string does not contain the character,
- * otherwise, a pointer to the start of the rightmost occurrence of the
- * character in the string.
- **/
-gchar *
-g_utf8_strrchr (const char *p,
- gssize len,
- gunichar c)
-{
- gchar ch[10];
-
- gint charlen = g_unichar_to_utf8 (c, ch);
- ch[charlen] = '\0';
-
- return g_strrstr_len (p, len, ch);
-}
-
-
-/* Like g_utf8_get_char, but take a maximum length
- * and return (gunichar)-2 on incomplete trailing character
- */
-static inline gunichar
-g_utf8_get_char_extended (const gchar *p,
- gssize max_len)
-{
- guint i, len;
- gunichar wc = (guchar) *p;
-
- if (wc < 0x80)
- {
- return wc;
- }
- else if (wc < 0xc0)
- {
- return (gunichar)-1;
- }
- else if (wc < 0xe0)
- {
- len = 2;
- wc &= 0x1f;
- }
- else if (wc < 0xf0)
- {
- len = 3;
- wc &= 0x0f;
- }
- else if (wc < 0xf8)
- {
- len = 4;
- wc &= 0x07;
- }
- else if (wc < 0xfc)
- {
- len = 5;
- wc &= 0x03;
- }
- else if (wc < 0xfe)
- {
- len = 6;
- wc &= 0x01;
- }
- else
- {
- return (gunichar)-1;
- }
-
- if (max_len >= 0 && len > max_len)
- {
- for (i = 1; i < max_len; i++)
- {
- if ((((guchar *)p)[i] & 0xc0) != 0x80)
- return (gunichar)-1;
- }
- return (gunichar)-2;
- }
-
- for (i = 1; i < len; ++i)
- {
- gunichar ch = ((guchar *)p)[i];
-
- if ((ch & 0xc0) != 0x80)
- {
- if (ch)
- return (gunichar)-1;
- else
- return (gunichar)-2;
- }
-
- wc <<= 6;
- wc |= (ch & 0x3f);
- }
-
- if (UTF8_LENGTH(wc) != len)
- return (gunichar)-1;
-
- return wc;
-}
-
-/**
- * g_utf8_get_char_validated:
- * @p: a pointer to Unicode character encoded as UTF-8
- * @max_len: the maximum number of bytes to read, or -1, for no maximum or
- * if @p is nul-terminated
- *
- * Convert a sequence of bytes encoded as UTF-8 to a Unicode character.
- * This function checks for incomplete characters, for invalid characters
- * such as characters that are out of the range of Unicode, and for
- * overlong encodings of valid characters.
- *
- * Return value: the resulting character. If @p points to a partial
- * sequence at the end of a string that could begin a valid
- * character (or if @max_len is zero), returns (gunichar)-2;
- * otherwise, if @p does not point to a valid UTF-8 encoded
- * Unicode character, returns (gunichar)-1.
- **/
-gunichar
-g_utf8_get_char_validated (const gchar *p,
- gssize max_len)
-{
- gunichar result;
-
- if (max_len == 0)
- return (gunichar)-2;
-
- result = g_utf8_get_char_extended (p, max_len);
-
- if (result & 0x80000000)
- return result;
- else if (!UNICODE_VALID (result))
- return (gunichar)-1;
- else
- return result;
-}
-
-/**
- * g_utf8_to_ucs4_fast:
- * @str: a UTF-8 encoded string
- * @len: the maximum length of @str to use, in bytes. If @len < 0,
- * then the string is nul-terminated.
- * @items_written: location to store the number of characters in the
- * result, or %NULL.
- *
- * Convert a string from UTF-8 to a 32-bit fixed width
- * representation as UCS-4, assuming valid UTF-8 input.
- * This function is roughly twice as fast as g_utf8_to_ucs4()
- * but does no error checking on the input.
- *
- * Return value: a pointer to a newly allocated UCS-4 string.
- * This value must be freed with g_free().
- **/
-gunichar *
-g_utf8_to_ucs4_fast (const gchar *str,
- glong len,
- glong *items_written)
-{
- gint j, charlen;
- gunichar *result;
- gint n_chars, i;
- const gchar *p;
-
- g_return_val_if_fail (str != NULL, NULL);
-
- p = str;
- n_chars = 0;
- if (len < 0)
- {
- while (*p)
- {
- p = g_utf8_next_char (p);
- ++n_chars;
- }
- }
- else
- {
- while (p < str + len && *p)
- {
- p = g_utf8_next_char (p);
- ++n_chars;
- }
- }
-
- result = g_new (gunichar, n_chars + 1);
-
- p = str;
- for (i=0; i < n_chars; i++)
- {
- gunichar wc = ((unsigned char *)p)[0];
-
- if (wc < 0x80)
- {
- result[i] = wc;
- p++;
- }
- else
- {
- if (wc < 0xe0)
- {
- charlen = 2;
- wc &= 0x1f;
- }
- else if (wc < 0xf0)
- {
- charlen = 3;
- wc &= 0x0f;
- }
- else if (wc < 0xf8)
- {
- charlen = 4;
- wc &= 0x07;
- }
- else if (wc < 0xfc)
- {
- charlen = 5;
- wc &= 0x03;
- }
- else
- {
- charlen = 6;
- wc &= 0x01;
- }
-
- for (j = 1; j < charlen; j++)
- {
- wc <<= 6;
- wc |= ((unsigned char *)p)[j] & 0x3f;
- }
-
- result[i] = wc;
- p += charlen;
- }
- }
- result[i] = 0;
-
- if (items_written)
- *items_written = i;
-
- return result;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-/**
- * g_utf8_to_ucs4:
- * @str: a UTF-8 encoded string
- * @len: the maximum length of @str to use, in bytes. If @len < 0,
- * then the string is nul-terminated.
- * @items_read: location to store number of bytes read, or %NULL.
- * If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
- * returned in case @str contains a trailing partial
- * character. If an error occurs then the index of the
- * invalid input is stored here.
- * @items_written: location to store number of characters written or %NULL.
- * The value here stored does not include the trailing 0
- * character.
- * @error: location to store the error occuring, or %NULL to ignore
- * errors. Any of the errors in #GConvertError other than
- * %G_CONVERT_ERROR_NO_CONVERSION may occur.
- *
- * Convert a string from UTF-8 to a 32-bit fixed width
- * representation as UCS-4. A trailing 0 will be added to the
- * string after the converted text.
- *
- * Return value: a pointer to a newly allocated UCS-4 string.
- * This value must be freed with g_free(). If an
- * error occurs, %NULL will be returned and
- * @error set.
- **/
-gunichar *
-g_utf8_to_ucs4 (const gchar *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error)
-{
- gunichar *result = NULL;
- gint n_chars, i;
- const gchar *in;
-
- in = str;
- n_chars = 0;
- while ((len < 0 || str + len - in > 0) && *in)
- {
- gunichar wc = g_utf8_get_char_extended (in, len < 0 ? 6 : str + len - in);
- if (wc & 0x80000000)
- {
- if (wc == (gunichar)-2)
- {
- if (items_read)
- break;
- else
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_PARTIAL_INPUT,
- _("Partial character sequence at end of input"));
- }
- else
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
- _("Invalid byte sequence in conversion input"));
-
- goto err_out;
- }
-
- n_chars++;
-
- in = g_utf8_next_char (in);
- }
-
- result = g_new (gunichar, n_chars + 1);
-
- in = str;
- for (i=0; i < n_chars; i++)
- {
- result[i] = g_utf8_get_char (in);
- in = g_utf8_next_char (in);
- }
- result[i] = 0;
-
- if (items_written)
- *items_written = n_chars;
-
- err_out:
- if (items_read)
- *items_read = in - str;
-
- return result;
-}
-
-/**
- * g_ucs4_to_utf8:
- * @str: a UCS-4 encoded string
- * @len: the maximum length (number of characters) of @str to use.
- * If @len < 0, then the string is nul-terminated.
- * @items_read: location to store number of characters read, or %NULL.
- * @items_written: location to store number of bytes written or %NULL.
- * The value here stored does not include the trailing 0
- * byte.
- * @error: location to store the error occuring, or %NULL to ignore
- * errors. Any of the errors in #GConvertError other than
- * %G_CONVERT_ERROR_NO_CONVERSION may occur.
- *
- * Convert a string from a 32-bit fixed width representation as UCS-4.
- * to UTF-8. The result will be terminated with a 0 byte.
- *
- * Return value: a pointer to a newly allocated UTF-8 string.
- * This value must be freed with g_free(). If an
- * error occurs, %NULL will be returned and
- * @error set. In that case, @items_read will be
- * set to the position of the first invalid input
- * character.
- **/
-gchar *
-g_ucs4_to_utf8 (const gunichar *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error)
-{
- gint result_length;
- gchar *result = NULL;
- gchar *p;
- gint i;
-
- result_length = 0;
- for (i = 0; len < 0 || i < len ; i++)
- {
- if (!str[i])
- break;
-
- if (str[i] >= 0x80000000)
- {
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
- _("Character out of range for UTF-8"));
- goto err_out;
- }
-
- result_length += UTF8_LENGTH (str[i]);
- }
-
- result = g_malloc (result_length + 1);
- p = result;
-
- i = 0;
- while (p < result + result_length)
- p += g_unichar_to_utf8 (str[i++], p);
-
- *p = '\0';
-
- if (items_written)
- *items_written = p - result;
-
- err_out:
- if (items_read)
- *items_read = i;
-
- return result;
-}
-#endif
-#define SURROGATE_VALUE(h,l) (((h) - 0xd800) * 0x400 + (l) - 0xdc00 + 0x10000)
-
-/**
- * g_utf16_to_utf8:
- * @str: a UTF-16 encoded string
- * @len: the maximum length (number of <type>gunichar2</type>) of @str to use.
- * If @len < 0, then the string is nul-terminated.
- * @items_read: location to store number of words read, or %NULL.
- * If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
- * returned in case @str contains a trailing partial
- * character. If an error occurs then the index of the
- * invalid input is stored here.
- * @items_written: location to store number of bytes written, or %NULL.
- * The value stored here does not include the trailing
- * 0 byte.
- * @error: location to store the error occuring, or %NULL to ignore
- * errors. Any of the errors in #GConvertError other than
- * %G_CONVERT_ERROR_NO_CONVERSION may occur.
- *
- * Convert a string from UTF-16 to UTF-8. The result will be
- * terminated with a 0 byte.
- *
- * Note that the input is expected to be already in native endianness,
- * an initial byte-order-mark character is not handled specially.
- * g_convert() can be used to convert a byte buffer of UTF-16 data of
- * ambiguous endianess.
- *
- * Return value: a pointer to a newly allocated UTF-8 string.
- * This value must be freed with g_free(). If an
- * error occurs, %NULL will be returned and
- * @error set.
- **/
-gchar *
-g_utf16_to_utf8 (const gunichar2 *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error)
-{
- /* This function and g_utf16_to_ucs4 are almost exactly identical - The lines that differ
- * are marked.
- */
- const gunichar2 *in;
- gchar *out;
- gchar *result = NULL;
- gint n_bytes;
- gunichar high_surrogate;
-
- g_return_val_if_fail (str != NULL, NULL);
-
- n_bytes = 0;
- in = str;
- high_surrogate = 0;
- while ((len < 0 || in - str < len) && *in)
- {
- gunichar2 c = *in;
- gunichar wc;
-
- if (c >= 0xdc00 && c < 0xe000) /* low surrogate */
- {
- if (high_surrogate)
- {
- wc = SURROGATE_VALUE (high_surrogate, c);
- high_surrogate = 0;
- }
- else
- {
-#if NOT_NEEDED_FOR_NAVIT
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
- _("Invalid sequence in conversion input"));
-#endif
- goto err_out;
- }
- }
- else
- {
- if (high_surrogate)
- {
-#if NOT_NEEDED_FOR_NAVIT
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
- _("Invalid sequence in conversion input"));
-#endif
- goto err_out;
- }
-
- if (c >= 0xd800 && c < 0xdc00) /* high surrogate */
- {
- high_surrogate = c;
- goto next1;
- }
- else
- wc = c;
- }
-
- /********** DIFFERENT for UTF8/UCS4 **********/
- n_bytes += UTF8_LENGTH (wc);
-
- next1:
- in++;
- }
-
- if (high_surrogate && !items_read)
- {
-#if NOT_NEEDED_FOR_NAVIT
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_PARTIAL_INPUT,
- _("Partial character sequence at end of input"));
-#endif
- goto err_out;
- }
-
- /* At this point, everything is valid, and we just need to convert
- */
- /********** DIFFERENT for UTF8/UCS4 **********/
- result = g_malloc (n_bytes + 1);
-
- high_surrogate = 0;
- out = result;
- in = str;
- while (out < result + n_bytes)
- {
- gunichar2 c = *in;
- gunichar wc;
-
- if (c >= 0xdc00 && c < 0xe000) /* low surrogate */
- {
- wc = SURROGATE_VALUE (high_surrogate, c);
- high_surrogate = 0;
- }
- else if (c >= 0xd800 && c < 0xdc00) /* high surrogate */
- {
- high_surrogate = c;
- goto next2;
- }
- else
- wc = c;
-
- /********** DIFFERENT for UTF8/UCS4 **********/
- out += g_unichar_to_utf8 (wc, out);
-
- next2:
- in++;
- }
-
- /********** DIFFERENT for UTF8/UCS4 **********/
- *out = '\0';
-
- if (items_written)
- /********** DIFFERENT for UTF8/UCS4 **********/
- *items_written = out - result;
-
- err_out:
- if (items_read)
- *items_read = in - str;
-
- return result;
-}
-
-/**
- * g_utf16_to_ucs4:
- * @str: a UTF-16 encoded string
- * @len: the maximum length (number of <type>gunichar2</type>) of @str to use.
- * If @len < 0, then the string is nul-terminated.
- * @items_read: location to store number of words read, or %NULL.
- * If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
- * returned in case @str contains a trailing partial
- * character. If an error occurs then the index of the
- * invalid input is stored here.
- * @items_written: location to store number of characters written, or %NULL.
- * The value stored here does not include the trailing
- * 0 character.
- * @error: location to store the error occuring, or %NULL to ignore
- * errors. Any of the errors in #GConvertError other than
- * %G_CONVERT_ERROR_NO_CONVERSION may occur.
- *
- * Convert a string from UTF-16 to UCS-4. The result will be
- * nul-terminated.
- *
- * Return value: a pointer to a newly allocated UCS-4 string.
- * This value must be freed with g_free(). If an
- * error occurs, %NULL will be returned and
- * @error set.
- **/
-gunichar *
-g_utf16_to_ucs4 (const gunichar2 *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error)
-{
- const gunichar2 *in;
- gchar *out;
- gchar *result = NULL;
- gint n_bytes;
- gunichar high_surrogate;
-
- g_return_val_if_fail (str != NULL, NULL);
-
- n_bytes = 0;
- in = str;
- high_surrogate = 0;
- while ((len < 0 || in - str < len) && *in)
- {
- gunichar2 c = *in;
- gunichar wc;
-
- if (c >= 0xdc00 && c < 0xe000) /* low surrogate */
- {
- if (high_surrogate)
- {
- wc = SURROGATE_VALUE (high_surrogate, c);
- high_surrogate = 0;
- }
- else
- {
-#if NOT_NEEDED_FOR_NAVIT
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
- _("Invalid sequence in conversion input"));
-#endif
- goto err_out;
- }
- }
- else
- {
- if (high_surrogate)
- {
-#if NOT_NEEDED_FOR_NAVIT
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
- _("Invalid sequence in conversion input"));
-#endif
- goto err_out;
- }
-
- if (c >= 0xd800 && c < 0xdc00) /* high surrogate */
- {
- high_surrogate = c;
- goto next1;
- }
- else
- wc = c;
- }
-
- /********** DIFFERENT for UTF8/UCS4 **********/
- n_bytes += sizeof (gunichar);
-
- next1:
- in++;
- }
-
- if (high_surrogate && !items_read)
- {
-#if NOT_NEEDED_FOR_NAVIT
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_PARTIAL_INPUT,
- _("Partial character sequence at end of input"));
-#endif
- goto err_out;
- }
-
- /* At this point, everything is valid, and we just need to convert
- */
- /********** DIFFERENT for UTF8/UCS4 **********/
- result = g_malloc (n_bytes + 4);
-
- high_surrogate = 0;
- out = result;
- in = str;
- while (out < result + n_bytes)
- {
- gunichar2 c = *in;
- gunichar wc;
-
- if (c >= 0xdc00 && c < 0xe000) /* low surrogate */
- {
- wc = SURROGATE_VALUE (high_surrogate, c);
- high_surrogate = 0;
- }
- else if (c >= 0xd800 && c < 0xdc00) /* high surrogate */
- {
- high_surrogate = c;
- goto next2;
- }
- else
- wc = c;
-
- /********** DIFFERENT for UTF8/UCS4 **********/
- *(gunichar *)out = wc;
- out += sizeof (gunichar);
-
- next2:
- in++;
- }
-
- /********** DIFFERENT for UTF8/UCS4 **********/
- *(gunichar *)out = 0;
-
- if (items_written)
- /********** DIFFERENT for UTF8/UCS4 **********/
- *items_written = (out - result) / sizeof (gunichar);
-
- err_out:
- if (items_read)
- *items_read = in - str;
-
- return (gunichar *)result;
-}
-
-/**
- * g_utf8_to_utf16:
- * @str: a UTF-8 encoded string
- * @len: the maximum length (number of characters) of @str to use.
- * If @len < 0, then the string is nul-terminated.
- * @items_read: location to store number of bytes read, or %NULL.
- * If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
- * returned in case @str contains a trailing partial
- * character. If an error occurs then the index of the
- * invalid input is stored here.
- * @items_written: location to store number of <type>gunichar2</type> written,
- * or %NULL.
- * The value stored here does not include the trailing 0.
- * @error: location to store the error occuring, or %NULL to ignore
- * errors. Any of the errors in #GConvertError other than
- * %G_CONVERT_ERROR_NO_CONVERSION may occur.
- *
- * Convert a string from UTF-8 to UTF-16. A 0 character will be
- * added to the result after the converted text.
- *
- * Return value: a pointer to a newly allocated UTF-16 string.
- * This value must be freed with g_free(). If an
- * error occurs, %NULL will be returned and
- * @error set.
- **/
-gunichar2 *
-g_utf8_to_utf16 (const gchar *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error)
-{
- gunichar2 *result = NULL;
- gint n16;
- const gchar *in;
- gint i;
-
- g_return_val_if_fail (str != NULL, NULL);
-
- in = str;
- n16 = 0;
- while ((len < 0 || str + len - in > 0) && *in)
- {
- gunichar wc = g_utf8_get_char_extended (in, len < 0 ? 6 : str + len - in);
- if (wc & 0x80000000)
- {
- if (wc == (gunichar)-2)
- {
- if (items_read)
- break;
-#if NOT_NEEDED_FOR_NAVIT
- else
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_PARTIAL_INPUT,
- _("Partial character sequence at end of input"));
-#endif
- }
-#if NOT_NEEDED_FOR_NAVIT
- else
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
- _("Invalid byte sequence in conversion input"));
-#endif
- goto err_out;
- }
-
- if (wc < 0xd800)
- n16 += 1;
- else if (wc < 0xe000)
- {
-#if NOT_NEEDED_FOR_NAVIT
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
- _("Invalid sequence in conversion input"));
-#endif
-
- goto err_out;
- }
- else if (wc < 0x10000)
- n16 += 1;
- else if (wc < 0x110000)
- n16 += 2;
- else
- {
-#if NOT_NEEDED_FOR_NAVIT
-// g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
-// _("Character out of range for UTF-16"));
-#endif
-
- goto err_out;
- }
-
- in = g_utf8_next_char (in);
- }
-
- result = g_new (gunichar2, n16 + 1);
-
- in = str;
- for (i = 0; i < n16;)
- {
- gunichar wc = g_utf8_get_char (in);
-
- if (wc < 0x10000)
- {
- result[i++] = wc;
- }
- else
- {
- result[i++] = (wc - 0x10000) / 0x400 + 0xd800;
- result[i++] = (wc - 0x10000) % 0x400 + 0xdc00;
- }
-
- in = g_utf8_next_char (in);
- }
-
- result[i] = 0;
-
- if (items_written)
- *items_written = n16;
-
- err_out:
- if (items_read)
- *items_read = in - str;
-
- return result;
-}
-
-/**
- * g_ucs4_to_utf16:
- * @str: a UCS-4 encoded string
- * @len: the maximum length (number of characters) of @str to use.
- * If @len < 0, then the string is nul-terminated.
- * @items_read: location to store number of bytes read, or %NULL.
- * If an error occurs then the index of the invalid input
- * is stored here.
- * @items_written: location to store number of <type>gunichar2</type>
- * written, or %NULL. The value stored here does not
- * include the trailing 0.
- * @error: location to store the error occuring, or %NULL to ignore
- * errors. Any of the errors in #GConvertError other than
- * %G_CONVERT_ERROR_NO_CONVERSION may occur.
- *
- * Convert a string from UCS-4 to UTF-16. A 0 character will be
- * added to the result after the converted text.
- *
- * Return value: a pointer to a newly allocated UTF-16 string.
- * This value must be freed with g_free(). If an
- * error occurs, %NULL will be returned and
- * @error set.
- **/
-gunichar2 *
-g_ucs4_to_utf16 (const gunichar *str,
- glong len,
- glong *items_read,
- glong *items_written,
- GError **error)
-{
- gunichar2 *result = NULL;
- gint n16;
- gint i, j;
-
- n16 = 0;
- i = 0;
- while ((len < 0 || i < len) && str[i])
- {
- gunichar wc = str[i];
-
- if (wc < 0xd800)
- n16 += 1;
- else if (wc < 0xe000)
- {
-#if NOT_NEEDED_FOR_NAVIT
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
- _("Invalid sequence in conversion input"));
-#endif
-
- goto err_out;
- }
- else if (wc < 0x10000)
- n16 += 1;
- else if (wc < 0x110000)
- n16 += 2;
- else
- {
-#if NOT_NEEDED_FOR_NAVIT
- g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
- _("Character out of range for UTF-16"));
-#endif
-
- goto err_out;
- }
-
- i++;
- }
-
- result = g_new (gunichar2, n16 + 1);
-
- for (i = 0, j = 0; j < n16; i++)
- {
- gunichar wc = str[i];
-
- if (wc < 0x10000)
- {
- result[j++] = wc;
- }
- else
- {
- result[j++] = (wc - 0x10000) / 0x400 + 0xd800;
- result[j++] = (wc - 0x10000) % 0x400 + 0xdc00;
- }
- }
- result[j] = 0;
-
- if (items_written)
- *items_written = n16;
-
- err_out:
- if (items_read)
- *items_read = i;
-
- return result;
-}
-
-#define CONTINUATION_CHAR \
- G_STMT_START { \
- if ((*(guchar *)p & 0xc0) != 0x80) /* 10xxxxxx */ \
- goto error; \
- val <<= 6; \
- val |= (*(guchar *)p) & 0x3f; \
- } G_STMT_END
-
-static const gchar *
-fast_validate (const char *str)
-
-{
- gunichar val = 0;
- gunichar min = 0;
- const gchar *p;
-
- for (p = str; *p; p++)
- {
- if (*(guchar *)p < 128)
- /* done */;
- else
- {
- const gchar *last;
-
- last = p;
- if ((*(guchar *)p & 0xe0) == 0xc0) /* 110xxxxx */
- {
- if (G_UNLIKELY ((*(guchar *)p & 0x1e) == 0))
- goto error;
- p++;
- if (G_UNLIKELY ((*(guchar *)p & 0xc0) != 0x80)) /* 10xxxxxx */
- goto error;
- }
- else
- {
- if ((*(guchar *)p & 0xf0) == 0xe0) /* 1110xxxx */
- {
- min = (1 << 11);
- val = *(guchar *)p & 0x0f;
- goto TWO_REMAINING;
- }
- else if ((*(guchar *)p & 0xf8) == 0xf0) /* 11110xxx */
- {
- min = (1 << 16);
- val = *(guchar *)p & 0x07;
- }
- else
- goto error;
-
- p++;
- CONTINUATION_CHAR;
- TWO_REMAINING:
- p++;
- CONTINUATION_CHAR;
- p++;
- CONTINUATION_CHAR;
-
- if (G_UNLIKELY (val < min))
- goto error;
-
- if (G_UNLIKELY (!UNICODE_VALID(val)))
- goto error;
- }
-
- continue;
-
- error:
- return last;
- }
- }
-
- return p;
-}
-
-static const gchar *
-fast_validate_len (const char *str,
- gssize max_len)
-
-{
- gunichar val = 0;
- gunichar min = 0;
- const gchar *p;
-
- g_assert (max_len >= 0);
-
- for (p = str; ((p - str) < max_len) && *p; p++)
- {
- if (*(guchar *)p < 128)
- /* done */;
- else
- {
- const gchar *last;
-
- last = p;
- if ((*(guchar *)p & 0xe0) == 0xc0) /* 110xxxxx */
- {
- if (G_UNLIKELY (max_len - (p - str) < 2))
- goto error;
-
- if (G_UNLIKELY ((*(guchar *)p & 0x1e) == 0))
- goto error;
- p++;
- if (G_UNLIKELY ((*(guchar *)p & 0xc0) != 0x80)) /* 10xxxxxx */
- goto error;
- }
- else
- {
- if ((*(guchar *)p & 0xf0) == 0xe0) /* 1110xxxx */
- {
- if (G_UNLIKELY (max_len - (p - str) < 3))
- goto error;
-
- min = (1 << 11);
- val = *(guchar *)p & 0x0f;
- goto TWO_REMAINING;
- }
- else if ((*(guchar *)p & 0xf8) == 0xf0) /* 11110xxx */
- {
- if (G_UNLIKELY (max_len - (p - str) < 4))
- goto error;
-
- min = (1 << 16);
- val = *(guchar *)p & 0x07;
- }
- else
- goto error;
-
- p++;
- CONTINUATION_CHAR;
- TWO_REMAINING:
- p++;
- CONTINUATION_CHAR;
- p++;
- CONTINUATION_CHAR;
-
- if (G_UNLIKELY (val < min))
- goto error;
- if (G_UNLIKELY (!UNICODE_VALID(val)))
- goto error;
- }
-
- continue;
-
- error:
- return last;
- }
- }
-
- return p;
-}
-
-/**
- * g_utf8_validate:
- * @str: a pointer to character data
- * @max_len: max bytes to validate, or -1 to go until NUL
- * @end: return location for end of valid data
- *
- * Validates UTF-8 encoded text. @str is the text to validate;
- * if @str is nul-terminated, then @max_len can be -1, otherwise
- * @max_len should be the number of bytes to validate.
- * If @end is non-%NULL, then the end of the valid range
- * will be stored there (i.e. the start of the first invalid
- * character if some bytes were invalid, or the end of the text
- * being validated otherwise).
- *
- * Note that g_utf8_validate() returns %FALSE if @max_len is
- * positive and NUL is met before @max_len bytes have been read.
- *
- * Returns %TRUE if all of @str was valid. Many GLib and GTK+
- * routines <emphasis>require</emphasis> valid UTF-8 as input;
- * so data read from a file or the network should be checked
- * with g_utf8_validate() before doing anything else with it.
- *
- * Return value: %TRUE if the text was valid UTF-8
- **/
-gboolean
-g_utf8_validate (const char *str,
- gssize max_len,
- const gchar **end)
-
-{
- const gchar *p;
-
- if (max_len < 0)
- p = fast_validate (str);
- else
- p = fast_validate_len (str, max_len);
-
- if (end)
- *end = p;
-
- if ((max_len >= 0 && p != str + max_len) ||
- (max_len < 0 && *p != '\0'))
- return FALSE;
- else
- return TRUE;
-}
-
-/**
- * g_unichar_validate:
- * @ch: a Unicode character
- *
- * Checks whether @ch is a valid Unicode character. Some possible
- * integer values of @ch will not be valid. 0 is considered a valid
- * character, though it's normally a string terminator.
- *
- * Return value: %TRUE if @ch is a valid Unicode character
- **/
-gboolean
-g_unichar_validate (gunichar ch)
-{
- return UNICODE_VALID (ch);
-}
-
-/**
- * g_utf8_strreverse:
- * @str: a UTF-8 encoded string
- * @len: the maximum length of @str to use, in bytes. If @len < 0,
- * then the string is nul-terminated.
- *
- * Reverses a UTF-8 string. @str must be valid UTF-8 encoded text.
- * (Use g_utf8_validate() on all text before trying to use UTF-8
- * utility functions with it.)
- *
- * This function is intended for programmatic uses of reversed strings.
- * It pays no attention to decomposed characters, combining marks, byte
- * order marks, directional indicators (LRM, LRO, etc) and similar
- * characters which might need special handling when reversing a string
- * for display purposes.
- *
- * Note that unlike g_strreverse(), this function returns
- * newly-allocated memory, which should be freed with g_free() when
- * no longer needed.
- *
- * Returns: a newly-allocated string which is the reverse of @str.
- *
- * Since: 2.2
- */
-gchar *
-g_utf8_strreverse (const gchar *str,
- gssize len)
-{
- gchar *r, *result;
- const gchar *p;
-
- if (len < 0)
- len = strlen (str);
-
- result = g_new (gchar, len + 1);
- r = result + len;
- p = str;
- while (r > result)
- {
- gchar *m, skip = g_utf8_skip[*(guchar*) p];
- r -= skip;
- for (m = r; skip; skip--)
- *m++ = *p++;
- }
- result[len] = 0;
-
- return result;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-
-gchar *
-_g_utf8_make_valid (const gchar *name)
-{
- GString *string;
- const gchar *remainder, *invalid;
- gint remaining_bytes, valid_bytes;
-
- string = NULL;
- remainder = name;
- remaining_bytes = strlen (name);
-
- while (remaining_bytes != 0)
- {
- if (g_utf8_validate (remainder, remaining_bytes, &invalid))
- break;
- valid_bytes = invalid - remainder;
-
- if (string == NULL)
- string = g_string_sized_new (remaining_bytes);
-
- g_string_append_len (string, remainder, valid_bytes);
- /* append U+FFFD REPLACEMENT CHARACTER */
- g_string_append (string, "\357\277\275");
-
- remaining_bytes -= valid_bytes + 1;
- remainder = invalid + 1;
- }
-
- if (string == NULL)
- return g_strdup (name);
-
- g_string_append (string, remainder);
-
- g_assert (g_utf8_validate (string->str, -1, NULL));
-
- return g_string_free (string, FALSE);
-}
-#endif
-
-#define __G_UTF8_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gutils.c b/navit/support/glib/gutils.c
deleted file mode 100644
index 6d3fda447..000000000
--- a/navit/support/glib/gutils.c
+++ /dev/null
@@ -1,3420 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1998 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * MT safe for the unix part, FIXME: make the win32 part MT safe as well.
- */
-
-#include "config.h"
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <stdarg.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <locale.h>
-#include <string.h>
-#include <ctype.h> /* For tolower() */
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef HAVE_PWD_H
-#include <pwd.h>
-#endif
-#include <sys/types.h>
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#ifdef HAVE_CRT_EXTERNS_H
-#include <crt_externs.h> /* for _NSGetEnviron */
-#endif
-
-/* implement gutils's inline functions
- */
-#define G_IMPLEMENT_INLINES 1
-#define __G_UTILS_C__
-#include "glib.h"
-#include "gprintfint.h"
-#include "gthreadprivate.h"
-#include "glibintl.h"
-#include "galias.h"
-
-#ifdef MAXPATHLEN
-#define G_PATH_LENGTH MAXPATHLEN
-#elif defined (PATH_MAX)
-#define G_PATH_LENGTH PATH_MAX
-#elif defined (_PC_PATH_MAX)
-#define G_PATH_LENGTH sysconf(_PC_PATH_MAX)
-#else
-#define G_PATH_LENGTH 2048
-#endif
-
-#ifdef G_PLATFORM_WIN32
-# define STRICT /* Strict typing, please */
-# include <windows.h>
-# undef STRICT
-# ifndef GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
-# define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 2
-# define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 4
-# endif
-# include <lmcons.h> /* For UNLEN */
-#endif /* G_PLATFORM_WIN32 */
-
-#ifdef G_OS_WIN32
-#if NOT_NEEDED_FOR_NAVIT
-# include <direct.h>
-#endif /* NOT_NEEDED_FOR_NAVIT */
-# include <shlobj.h>
- /* older SDK (e.g. msvc 5.0) does not have these*/
-# ifndef CSIDL_MYMUSIC
-# define CSIDL_MYMUSIC 13
-# endif
-# ifndef CSIDL_MYVIDEO
-# define CSIDL_MYVIDEO 14
-# endif
-# ifndef CSIDL_INTERNET_CACHE
-# define CSIDL_INTERNET_CACHE 32
-# endif
-# ifndef CSIDL_COMMON_APPDATA
-# define CSIDL_COMMON_APPDATA 35
-# endif
-# ifndef CSIDL_MYPICTURES
-# define CSIDL_MYPICTURES 0x27
-# endif
-# ifndef CSIDL_COMMON_DOCUMENTS
-# define CSIDL_COMMON_DOCUMENTS 46
-# endif
-# ifndef CSIDL_PROFILE
-# define CSIDL_PROFILE 40
-# endif
-# include <process.h>
-#endif
-
-#ifdef HAVE_CARBON
-#include <CoreServices/CoreServices.h>
-#endif
-
-#ifdef HAVE_CODESET
-#include <langinfo.h>
-#endif
-
-#ifdef HAVE_BIND_TEXTDOMAIN_CODESET
-#include <libintl.h>
-#endif
-
-#if NOT_NEEDED_FOR_NAVIT
-const guint glib_major_version = GLIB_MAJOR_VERSION;
-const guint glib_minor_version = GLIB_MINOR_VERSION;
-const guint glib_micro_version = GLIB_MICRO_VERSION;
-const guint glib_interface_age = GLIB_INTERFACE_AGE;
-const guint glib_binary_age = GLIB_BINARY_AGE;
-
-#ifdef G_PLATFORM_WIN32
-
-static HMODULE glib_dll = NULL;
-
-#ifdef DLL_EXPORT
-
-BOOL WINAPI
-DllMain (HINSTANCE hinstDLL,
- DWORD fdwReason,
- LPVOID lpvReserved)
-{
- if (fdwReason == DLL_PROCESS_ATTACH)
- glib_dll = hinstDLL;
-
- return TRUE;
-}
-
-#endif
-
-gchar *
-_glib_get_installation_directory (void)
-{
-#ifdef DLL_EXPORT
- if (glib_dll == NULL)
- return NULL;
-#endif
- /* In a static build of GLib just use the application's .exe file's
- * installation directory...
- */
- return g_win32_get_package_installation_directory_of_module (glib_dll);
-}
-
-#endif
-
-/**
- * glib_check_version:
- * @required_major: the required major version.
- * @required_minor: the required minor version.
- * @required_micro: the required micro version.
- *
- * Checks that the GLib library in use is compatible with the
- * given version. Generally you would pass in the constants
- * #GLIB_MAJOR_VERSION, #GLIB_MINOR_VERSION, #GLIB_MICRO_VERSION
- * as the three arguments to this function; that produces
- * a check that the library in use is compatible with
- * the version of GLib the application or module was compiled
- * against.
- *
- * Compatibility is defined by two things: first the version
- * of the running library is newer than the version
- * @required_major.required_minor.@required_micro. Second
- * the running library must be binary compatible with the
- * version @required_major.required_minor.@required_micro
- * (same major version.)
- *
- * Return value: %NULL if the GLib library is compatible with the
- * given version, or a string describing the version mismatch.
- * The returned string is owned by GLib and must not be modified
- * or freed.
- *
- * Since: 2.6
- **/
-const gchar *
-glib_check_version (guint required_major,
- guint required_minor,
- guint required_micro)
-{
- gint glib_effective_micro = 100 * GLIB_MINOR_VERSION + GLIB_MICRO_VERSION;
- gint required_effective_micro = 100 * required_minor + required_micro;
-
- if (required_major > GLIB_MAJOR_VERSION)
- return "GLib version too old (major mismatch)";
- if (required_major < GLIB_MAJOR_VERSION)
- return "GLib version too new (major mismatch)";
- if (required_effective_micro < glib_effective_micro - GLIB_BINARY_AGE)
- return "GLib version too new (micro mismatch)";
- if (required_effective_micro > glib_effective_micro)
- return "GLib version too old (micro mismatch)";
- return NULL;
-}
-
-#if !defined (HAVE_MEMMOVE) && !defined (HAVE_WORKING_BCOPY)
-/**
- * g_memmove:
- * @dest: the destination address to copy the bytes to.
- * @src: the source address to copy the bytes from.
- * @len: the number of bytes to copy.
- *
- * Copies a block of memory @len bytes long, from @src to @dest.
- * The source and destination areas may overlap.
- *
- * In order to use this function, you must include
- * <filename>string.h</filename> yourself, because this macro will
- * typically simply resolve to memmove() and GLib does not include
- * <filename>string.h</filename> for you.
- */
-void
-g_memmove (gpointer dest,
- gconstpointer src,
- gulong len)
-{
- gchar* destptr = dest;
- const gchar* srcptr = src;
- if (src + len < dest || dest + len < src)
- {
- bcopy (src, dest, len);
- return;
- }
- else if (dest <= src)
- {
- while (len--)
- *(destptr++) = *(srcptr++);
- }
- else
- {
- destptr += len;
- srcptr += len;
- while (len--)
- *(--destptr) = *(--srcptr);
- }
-}
-#endif /* !HAVE_MEMMOVE && !HAVE_WORKING_BCOPY */
-
-#ifdef G_OS_WIN32
-#undef g_atexit
-#endif
-
-/**
- * g_atexit:
- * @func: the function to call on normal program termination.
- *
- * Specifies a function to be called at normal program termination.
- *
- * Since GLib 2.8.2, on Windows g_atexit() actually is a preprocessor
- * macro that maps to a call to the atexit() function in the C
- * library. This means that in case the code that calls g_atexit(),
- * i.e. atexit(), is in a DLL, the function will be called when the
- * DLL is detached from the program. This typically makes more sense
- * than that the function is called when the GLib DLL is detached,
- * which happened earlier when g_atexit() was a function in the GLib
- * DLL.
- *
- * The behaviour of atexit() in the context of dynamically loaded
- * modules is not formally specified and varies wildly.
- *
- * On POSIX systems, calling g_atexit() (or atexit()) in a dynamically
- * loaded module which is unloaded before the program terminates might
- * well cause a crash at program exit.
- *
- * Some POSIX systems implement atexit() like Windows, and have each
- * dynamically loaded module maintain an own atexit chain that is
- * called when the module is unloaded.
- *
- * On other POSIX systems, before a dynamically loaded module is
- * unloaded, the registered atexit functions (if any) residing in that
- * module are called, regardless where the code that registered them
- * resided. This is presumably the most robust approach.
- *
- * As can be seen from the above, for portability it's best to avoid
- * calling g_atexit() (or atexit()) except in the main executable of a
- * program.
- */
-void
-g_atexit (GVoidFunc func)
-{
- gint result;
- const gchar *error = NULL;
-
- /* keep this in sync with glib.h */
-
-#ifdef G_NATIVE_ATEXIT
- result = ATEXIT (func);
- if (result)
- error = g_strerror (errno);
-#elif defined (HAVE_ATEXIT)
-# ifdef NeXT /* @#%@! NeXTStep */
- result = !atexit ((void (*)(void)) func);
- if (result)
- error = g_strerror (errno);
-# else
- result = atexit ((void (*)(void)) func);
- if (result)
- error = g_strerror (errno);
-# endif /* NeXT */
-#elif defined (HAVE_ON_EXIT)
- result = on_exit ((void (*)(int, void *)) func, NULL);
- if (result)
- error = g_strerror (errno);
-#else
- result = 0;
- error = "no implementation";
-#endif /* G_NATIVE_ATEXIT */
-
- if (error)
- g_error ("Could not register atexit() function: %s", error);
-}
-
-/* Based on execvp() from GNU Libc.
- * Some of this code is cut-and-pasted into gspawn.c
- */
-
-static gchar*
-my_strchrnul (const gchar *str,
- gchar c)
-{
- gchar *p = (gchar*)str;
- while (*p && (*p != c))
- ++p;
-
- return p;
-}
-
-#ifdef G_OS_WIN32
-
-static gchar *inner_find_program_in_path (const gchar *program);
-
-gchar*
-g_find_program_in_path (const gchar *program)
-{
- const gchar *last_dot = strrchr (program, '.');
-
- if (last_dot == NULL ||
- strchr (last_dot, '\\') != NULL ||
- strchr (last_dot, '/') != NULL)
- {
- const gint program_length = strlen (program);
- gchar *pathext = g_build_path (";",
- ".exe;.cmd;.bat;.com",
- g_getenv ("PATHEXT"),
- NULL);
- gchar *p;
- gchar *decorated_program;
- gchar *retval;
-
- p = pathext;
- do
- {
- gchar *q = my_strchrnul (p, ';');
-
- decorated_program = g_malloc (program_length + (q-p) + 1);
- memcpy (decorated_program, program, program_length);
- memcpy (decorated_program+program_length, p, q-p);
- decorated_program [program_length + (q-p)] = '\0';
-
- retval = inner_find_program_in_path (decorated_program);
- g_free (decorated_program);
-
- if (retval != NULL)
- {
- g_free (pathext);
- return retval;
- }
- p = q;
- } while (*p++ != '\0');
- g_free (pathext);
- return NULL;
- }
- else
- return inner_find_program_in_path (program);
-}
-
-#endif
-
-/**
- * g_find_program_in_path:
- * @program: a program name in the GLib file name encoding
- *
- * Locates the first executable named @program in the user's path, in the
- * same way that execvp() would locate it. Returns an allocated string
- * with the absolute path name, or %NULL if the program is not found in
- * the path. If @program is already an absolute path, returns a copy of
- * @program if @program exists and is executable, and %NULL otherwise.
- *
- * On Windows, if @program does not have a file type suffix, tries
- * with the suffixes .exe, .cmd, .bat and .com, and the suffixes in
- * the <envar>PATHEXT</envar> environment variable.
- *
- * On Windows, it looks for the file in the same way as CreateProcess()
- * would. This means first in the directory where the executing
- * program was loaded from, then in the current directory, then in the
- * Windows 32-bit system directory, then in the Windows directory, and
- * finally in the directories in the <envar>PATH</envar> environment
- * variable. If the program is found, the return value contains the
- * full name including the type suffix.
- *
- * Return value: absolute path, or %NULL
- **/
-#ifdef G_OS_WIN32
-static gchar *
-inner_find_program_in_path (const gchar *program)
-#else
-gchar*
-g_find_program_in_path (const gchar *program)
-#endif
-{
- const gchar *path, *p;
- gchar *name, *freeme;
-#ifdef G_OS_WIN32
- const gchar *path_copy;
- gchar *filename = NULL, *appdir = NULL;
- gchar *sysdir = NULL, *windir = NULL;
- int n;
- wchar_t wfilename[MAXPATHLEN], wsysdir[MAXPATHLEN],
- wwindir[MAXPATHLEN];
-#endif
- gsize len;
- gsize pathlen;
-
- g_return_val_if_fail (program != NULL, NULL);
-
- /* If it is an absolute path, or a relative path including subdirectories,
- * don't look in PATH.
- */
- if (g_path_is_absolute (program)
- || strchr (program, G_DIR_SEPARATOR) != NULL
-#ifdef G_OS_WIN32
- || strchr (program, '/') != NULL
-#endif
- )
- {
- if (g_file_test (program, G_FILE_TEST_IS_EXECUTABLE) &&
- !g_file_test (program, G_FILE_TEST_IS_DIR))
- return g_strdup (program);
- else
- return NULL;
- }
-
- path = g_getenv ("PATH");
-#if defined(G_OS_UNIX) || defined(G_OS_BEOS)
- if (path == NULL)
- {
- /* There is no `PATH' in the environment. The default
- * search path in GNU libc is the current directory followed by
- * the path `confstr' returns for `_CS_PATH'.
- */
-
- /* In GLib we put . last, for security, and don't use the
- * unportable confstr(); UNIX98 does not actually specify
- * what to search if PATH is unset. POSIX may, dunno.
- */
-
- path = "/bin:/usr/bin:.";
- }
-#else
- n = GetModuleFileNameW (NULL, wfilename, MAXPATHLEN);
- if (n > 0 && n < MAXPATHLEN)
- filename = g_utf16_to_utf8 (wfilename, -1, NULL, NULL, NULL);
-
- n = GetSystemDirectoryW (wsysdir, MAXPATHLEN);
- if (n > 0 && n < MAXPATHLEN)
- sysdir = g_utf16_to_utf8 (wsysdir, -1, NULL, NULL, NULL);
-
- n = GetWindowsDirectoryW (wwindir, MAXPATHLEN);
- if (n > 0 && n < MAXPATHLEN)
- windir = g_utf16_to_utf8 (wwindir, -1, NULL, NULL, NULL);
-
- if (filename)
- {
- appdir = g_path_get_dirname (filename);
- g_free (filename);
- }
-
- path = g_strdup (path);
-
- if (windir)
- {
- const gchar *tem = path;
- path = g_strconcat (windir, ";", path, NULL);
- g_free ((gchar *) tem);
- g_free (windir);
- }
-
- if (sysdir)
- {
- const gchar *tem = path;
- path = g_strconcat (sysdir, ";", path, NULL);
- g_free ((gchar *) tem);
- g_free (sysdir);
- }
-
- {
- const gchar *tem = path;
- path = g_strconcat (".;", path, NULL);
- g_free ((gchar *) tem);
- }
-
- if (appdir)
- {
- const gchar *tem = path;
- path = g_strconcat (appdir, ";", path, NULL);
- g_free ((gchar *) tem);
- g_free (appdir);
- }
-
- path_copy = path;
-#endif
-
- len = strlen (program) + 1;
- pathlen = strlen (path);
- freeme = name = g_malloc (pathlen + len + 1);
-
- /* Copy the file name at the top, including '\0' */
- memcpy (name + pathlen + 1, program, len);
- name = name + pathlen;
- /* And add the slash before the filename */
- *name = G_DIR_SEPARATOR;
-
- p = path;
- do
- {
- char *startp;
-
- path = p;
- p = my_strchrnul (path, G_SEARCHPATH_SEPARATOR);
-
- if (p == path)
- /* Two adjacent colons, or a colon at the beginning or the end
- * of `PATH' means to search the current directory.
- */
- startp = name + 1;
- else
- startp = memcpy (name - (p - path), path, p - path);
-
- if (g_file_test (startp, G_FILE_TEST_IS_EXECUTABLE) &&
- !g_file_test (startp, G_FILE_TEST_IS_DIR))
- {
- gchar *ret;
- ret = g_strdup (startp);
- g_free (freeme);
-#ifdef G_OS_WIN32
- g_free ((gchar *) path_copy);
-#endif
- return ret;
- }
- }
- while (*p++ != '\0');
-
- g_free (freeme);
-#ifdef G_OS_WIN32
- g_free ((gchar *) path_copy);
-#endif
-
- return NULL;
-}
-
-static gboolean
-debug_key_matches (const gchar *key,
- const gchar *token,
- guint length)
-{
- for (; length; length--, key++, token++)
- {
- char k = (*key == '_') ? '-' : tolower (*key );
- char t = (*token == '_') ? '-' : tolower (*token);
-
- if (k != t)
- return FALSE;
- }
-
- return *key == '\0';
-}
-
-/**
- * g_parse_debug_string:
- * @string: a list of debug options separated by colons, spaces, or
- * commas; or the string "all" to set all flags, or %NULL.
- * @keys: pointer to an array of #GDebugKey which associate
- * strings with bit flags.
- * @nkeys: the number of #GDebugKey<!-- -->s in the array.
- *
- * Parses a string containing debugging options
- * into a %guint containing bit flags. This is used
- * within GDK and GTK+ to parse the debug options passed on the
- * command line or through environment variables.
- *
- * Returns: the combined set of bit flags.
- */
-guint
-g_parse_debug_string (const gchar *string,
- const GDebugKey *keys,
- guint nkeys)
-{
- guint i;
- guint result = 0;
-
- if (string == NULL)
- return 0;
-
- /* this function is used by gmem.c/gslice.c initialization code,
- * so introducing malloc dependencies here would require adaptions
- * of those code portions.
- */
-
- if (!g_ascii_strcasecmp (string, "all"))
- {
- for (i=0; i<nkeys; i++)
- result |= keys[i].value;
- }
- else
- {
- const gchar *p = string;
- const gchar *q;
-
- while (*p)
- {
- q = strpbrk (p, ":;, \t");
- if (!q)
- q = p + strlen(p);
-
- for (i = 0; i < nkeys; i++)
- if (debug_key_matches (keys[i].key, p, q - p))
- result |= keys[i].value;
-
- p = q;
- if (*p)
- p++;
- }
- }
-
- return result;
-}
-
-/**
- * g_basename:
- * @file_name: the name of the file.
- *
- * Gets the name of the file without any leading directory components.
- * It returns a pointer into the given file name string.
- *
- * Return value: the name of the file without any leading directory components.
- *
- * Deprecated:2.2: Use g_path_get_basename() instead, but notice that
- * g_path_get_basename() allocates new memory for the returned string, unlike
- * this function which returns a pointer into the argument.
- **/
-G_CONST_RETURN gchar*
-g_basename (const gchar *file_name)
-{
- register gchar *base;
-
- g_return_val_if_fail (file_name != NULL, NULL);
-
- base = strrchr (file_name, G_DIR_SEPARATOR);
-
-#ifdef G_OS_WIN32
- {
- gchar *q = strrchr (file_name, '/');
- if (base == NULL || (q != NULL && q > base))
- base = q;
- }
-#endif
-
- if (base)
- return base + 1;
-
-#ifdef G_OS_WIN32
- if (g_ascii_isalpha (file_name[0]) && file_name[1] == ':')
- return (gchar*) file_name + 2;
-#endif /* G_OS_WIN32 */
-
- return (gchar*) file_name;
-}
-#endif
-
-/**
- * g_path_get_basename:
- * @file_name: the name of the file.
- *
- * Gets the last component of the filename. If @file_name ends with a
- * directory separator it gets the component before the last slash. If
- * @file_name consists only of directory separators (and on Windows,
- * possibly a drive letter), a single separator is returned. If
- * @file_name is empty, it gets ".".
- *
- * Return value: a newly allocated string containing the last component of
- * the filename.
- */
-gchar*
-g_path_get_basename (const gchar *file_name)
-{
- register gssize base;
- register gssize last_nonslash;
- gsize len;
- gchar *retval;
-
- g_return_val_if_fail (file_name != NULL, NULL);
-
- if (file_name[0] == '\0')
- /* empty string */
- return g_strdup (".");
-
- last_nonslash = strlen (file_name) - 1;
-
- while (last_nonslash >= 0 && G_IS_DIR_SEPARATOR (file_name [last_nonslash]))
- last_nonslash--;
-
- if (last_nonslash == -1)
- /* string only containing slashes */
- return g_strdup (G_DIR_SEPARATOR_S);
-
-#ifdef G_OS_WIN32
- if (last_nonslash == 1 && g_ascii_isalpha (file_name[0]) && file_name[1] == ':')
- /* string only containing slashes and a drive */
- return g_strdup (G_DIR_SEPARATOR_S);
-#endif /* G_OS_WIN32 */
-
- base = last_nonslash;
-
- while (base >=0 && !G_IS_DIR_SEPARATOR (file_name [base]))
- base--;
-
-#ifdef G_OS_WIN32
- if (base == -1 && g_ascii_isalpha (file_name[0]) && file_name[1] == ':')
- base = 1;
-#endif /* G_OS_WIN32 */
-
- len = last_nonslash - base;
- retval = g_malloc (len + 1);
- memcpy (retval, file_name + base + 1, len);
- retval [len] = '\0';
- return retval;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-/**
- * g_path_is_absolute:
- * @file_name: a file name.
- *
- * Returns %TRUE if the given @file_name is an absolute file name,
- * i.e. it contains a full path from the root directory such as "/usr/local"
- * on UNIX or "C:\windows" on Windows systems.
- *
- * Returns: %TRUE if @file_name is an absolute path.
- */
-gboolean
-g_path_is_absolute (const gchar *file_name)
-{
- g_return_val_if_fail (file_name != NULL, FALSE);
-
- if (G_IS_DIR_SEPARATOR (file_name[0]))
- return TRUE;
-
-#ifdef G_OS_WIN32
- /* Recognize drive letter on native Windows */
- if (g_ascii_isalpha (file_name[0]) &&
- file_name[1] == ':' && G_IS_DIR_SEPARATOR (file_name[2]))
- return TRUE;
-#endif /* G_OS_WIN32 */
-
- return FALSE;
-}
-
-/**
- * g_path_skip_root:
- * @file_name: a file name.
- *
- * Returns a pointer into @file_name after the root component, i.e. after
- * the "/" in UNIX or "C:\" under Windows. If @file_name is not an absolute
- * path it returns %NULL.
- *
- * Returns: a pointer into @file_name after the root component.
- */
-G_CONST_RETURN gchar*
-g_path_skip_root (const gchar *file_name)
-{
- g_return_val_if_fail (file_name != NULL, NULL);
-
-#ifdef G_PLATFORM_WIN32
- /* Skip \\server\share or //server/share */
- if (G_IS_DIR_SEPARATOR (file_name[0]) &&
- G_IS_DIR_SEPARATOR (file_name[1]) &&
- file_name[2] &&
- !G_IS_DIR_SEPARATOR (file_name[2]))
- {
- gchar *p;
-
- p = strchr (file_name + 2, G_DIR_SEPARATOR);
-#ifdef G_OS_WIN32
- {
- gchar *q = strchr (file_name + 2, '/');
- if (p == NULL || (q != NULL && q < p))
- p = q;
- }
-#endif
- if (p &&
- p > file_name + 2 &&
- p[1])
- {
- file_name = p + 1;
-
- while (file_name[0] && !G_IS_DIR_SEPARATOR (file_name[0]))
- file_name++;
-
- /* Possibly skip a backslash after the share name */
- if (G_IS_DIR_SEPARATOR (file_name[0]))
- file_name++;
-
- return (gchar *)file_name;
- }
- }
-#endif
-
- /* Skip initial slashes */
- if (G_IS_DIR_SEPARATOR (file_name[0]))
- {
- while (G_IS_DIR_SEPARATOR (file_name[0]))
- file_name++;
- return (gchar *)file_name;
- }
-
-#ifdef G_OS_WIN32
- /* Skip X:\ */
- if (g_ascii_isalpha (file_name[0]) && file_name[1] == ':' && G_IS_DIR_SEPARATOR (file_name[2]))
- return (gchar *)file_name + 3;
-#endif
-
- return NULL;
-}
-
-/**
- * g_path_get_dirname:
- * @file_name: the name of the file.
- *
- * Gets the directory components of a file name. If the file name has no
- * directory components "." is returned. The returned string should be
- * freed when no longer needed.
- *
- * Returns: the directory components of the file.
- */
-gchar*
-g_path_get_dirname (const gchar *file_name)
-{
- register gchar *base;
- register gsize len;
-
- g_return_val_if_fail (file_name != NULL, NULL);
-
- base = strrchr (file_name, G_DIR_SEPARATOR);
-#ifdef G_OS_WIN32
- {
- gchar *q = strrchr (file_name, '/');
- if (base == NULL || (q != NULL && q > base))
- base = q;
- }
-#endif
- if (!base)
- {
-#ifdef G_OS_WIN32
- if (g_ascii_isalpha (file_name[0]) && file_name[1] == ':')
- {
- gchar drive_colon_dot[4];
-
- drive_colon_dot[0] = file_name[0];
- drive_colon_dot[1] = ':';
- drive_colon_dot[2] = '.';
- drive_colon_dot[3] = '\0';
-
- return g_strdup (drive_colon_dot);
- }
-#endif
- return g_strdup (".");
- }
-
- while (base > file_name && G_IS_DIR_SEPARATOR (*base))
- base--;
-
-#ifdef G_OS_WIN32
- /* base points to the char before the last slash.
- *
- * In case file_name is the root of a drive (X:\) or a child of the
- * root of a drive (X:\foo), include the slash.
- *
- * In case file_name is the root share of an UNC path
- * (\\server\share), add a slash, returning \\server\share\ .
- *
- * In case file_name is a direct child of a share in an UNC path
- * (\\server\share\foo), include the slash after the share name,
- * returning \\server\share\ .
- */
- if (base == file_name + 1 && g_ascii_isalpha (file_name[0]) && file_name[1] == ':')
- base++;
- else if (G_IS_DIR_SEPARATOR (file_name[0]) &&
- G_IS_DIR_SEPARATOR (file_name[1]) &&
- file_name[2] &&
- !G_IS_DIR_SEPARATOR (file_name[2]) &&
- base >= file_name + 2)
- {
- const gchar *p = file_name + 2;
- while (*p && !G_IS_DIR_SEPARATOR (*p))
- p++;
- if (p == base + 1)
- {
- len = (guint) strlen (file_name) + 1;
- base = g_new (gchar, len + 1);
- strcpy (base, file_name);
- base[len-1] = G_DIR_SEPARATOR;
- base[len] = 0;
- return base;
- }
- if (G_IS_DIR_SEPARATOR (*p))
- {
- p++;
- while (*p && !G_IS_DIR_SEPARATOR (*p))
- p++;
- if (p == base + 1)
- base++;
- }
- }
-#endif
-
- len = (guint) 1 + base - file_name;
-
- base = g_new (gchar, len + 1);
- g_memmove (base, file_name, len);
- base[len] = 0;
-
- return base;
-}
-
-/**
- * g_get_current_dir:
- *
- * Gets the current directory.
- * The returned string should be freed when no longer needed. The encoding
- * of the returned string is system defined. On Windows, it is always UTF-8.
- *
- * Returns: the current directory.
- */
-gchar*
-g_get_current_dir (void)
-{
-#ifdef G_OS_WIN32
-
- gchar *dir = NULL;
- wchar_t dummy[2], *wdir;
- int len;
-
- len = GetCurrentDirectoryW (2, dummy);
- wdir = g_new (wchar_t, len);
-
- if (GetCurrentDirectoryW (len, wdir) == len - 1)
- dir = g_utf16_to_utf8 (wdir, -1, NULL, NULL, NULL);
-
- g_free (wdir);
-
- if (dir == NULL)
- dir = g_strdup ("\\");
-
- return dir;
-
-#else
-
- gchar *buffer = NULL;
- gchar *dir = NULL;
- static gulong max_len = 0;
-
- if (max_len == 0)
- max_len = (G_PATH_LENGTH == -1) ? 2048 : G_PATH_LENGTH;
-
- /* We don't use getcwd(3) on SUNOS, because, it does a popen("pwd")
- * and, if that wasn't bad enough, hangs in doing so.
- */
-#if (defined (sun) && !defined (__SVR4)) || !defined(HAVE_GETCWD)
- buffer = g_new (gchar, max_len + 1);
- *buffer = 0;
- dir = getwd (buffer);
-#else /* !sun || !HAVE_GETCWD */
- while (max_len < G_MAXULONG / 2)
- {
- g_free (buffer);
- buffer = g_new (gchar, max_len + 1);
- *buffer = 0;
- dir = getcwd (buffer, max_len);
-
- if (dir || errno != ERANGE)
- break;
-
- max_len *= 2;
- }
-#endif /* !sun || !HAVE_GETCWD */
-
- if (!dir || !*buffer)
- {
- /* hm, should we g_error() out here?
- * this can happen if e.g. "./" has mode \0000
- */
- buffer[0] = G_DIR_SEPARATOR;
- buffer[1] = 0;
- }
-
- dir = g_strdup (buffer);
- g_free (buffer);
-
- return dir;
-#endif /* !Win32 */
-}
-
-/**
- * g_getenv:
- * @variable: the environment variable to get, in the GLib file name encoding.
- *
- * Returns the value of an environment variable. The name and value
- * are in the GLib file name encoding. On UNIX, this means the actual
- * bytes which might or might not be in some consistent character set
- * and encoding. On Windows, it is in UTF-8. On Windows, in case the
- * environment variable's value contains references to other
- * environment variables, they are expanded.
- *
- * Return value: the value of the environment variable, or %NULL if
- * the environment variable is not found. The returned string may be
- * overwritten by the next call to g_getenv(), g_setenv() or
- * g_unsetenv().
- **/
-G_CONST_RETURN gchar*
-g_getenv (const gchar *variable)
-{
-#ifndef G_OS_WIN32
-
- g_return_val_if_fail (variable != NULL, NULL);
-
- return getenv (variable);
-
-#else /* G_OS_WIN32 */
-
- GQuark quark;
- gchar *value;
- wchar_t dummy[2], *wname, *wvalue;
- int len;
-
- g_return_val_if_fail (variable != NULL, NULL);
- g_return_val_if_fail (g_utf8_validate (variable, -1, NULL), NULL);
-
- /* On Windows NT, it is relatively typical that environment
- * variables contain references to other environment variables. If
- * so, use ExpandEnvironmentStrings(). (In an ideal world, such
- * environment variables would be stored in the Registry as
- * REG_EXPAND_SZ type values, and would then get automatically
- * expanded before a program sees them. But there is broken software
- * that stores environment variables as REG_SZ values even if they
- * contain references to other environment variables.)
- */
-
- wname = g_utf8_to_utf16 (variable, -1, NULL, NULL, NULL);
-
- len = GetEnvironmentVariableW (wname, dummy, 2);
-
- if (len == 0)
- {
- g_free (wname);
- return NULL;
- }
- else if (len == 1)
- len = 2;
-
- wvalue = g_new (wchar_t, len);
-
- if (GetEnvironmentVariableW (wname, wvalue, len) != len - 1)
- {
- g_free (wname);
- g_free (wvalue);
- return NULL;
- }
-
- if (wcschr (wvalue, L'%') != NULL)
- {
- wchar_t *tem = wvalue;
-
- len = ExpandEnvironmentStringsW (wvalue, dummy, 2);
-
- if (len > 0)
- {
- wvalue = g_new (wchar_t, len);
-
- if (ExpandEnvironmentStringsW (tem, wvalue, len) != len)
- {
- g_free (wvalue);
- wvalue = tem;
- }
- else
- g_free (tem);
- }
- }
-
- value = g_utf16_to_utf8 (wvalue, -1, NULL, NULL, NULL);
-
- g_free (wname);
- g_free (wvalue);
-
- quark = g_quark_from_string (value);
- g_free (value);
-
- return g_quark_to_string (quark);
-
-#endif /* G_OS_WIN32 */
-}
-
-/* _g_getenv_nomalloc
- * this function does a getenv() without doing any kind of allocation
- * through glib. it's suitable for chars <= 127 only (both, for the
- * variable name and the contents) and for contents < 1024 chars in
- * length. also, it aliases "" to a NULL return value.
- **/
-const gchar*
-_g_getenv_nomalloc (const gchar *variable,
- gchar buffer[1024])
-{
- const gchar *retval = getenv (variable);
- if (retval && retval[0])
- {
- gint l = strlen (retval);
- if (l < 1024)
- {
- strncpy (buffer, retval, l);
- buffer[l] = 0;
- return buffer;
- }
- }
- return NULL;
-}
-
-/**
- * g_setenv:
- * @variable: the environment variable to set, must not contain '='.
- * @value: the value for to set the variable to.
- * @overwrite: whether to change the variable if it already exists.
- *
- * Sets an environment variable. Both the variable's name and value
- * should be in the GLib file name encoding. On UNIX, this means that
- * they can be any sequence of bytes. On Windows, they should be in
- * UTF-8.
- *
- * Note that on some systems, when variables are overwritten, the memory
- * used for the previous variables and its value isn't reclaimed.
- *
- * Returns: %FALSE if the environment variable couldn't be set.
- *
- * Since: 2.4
- */
-gboolean
-g_setenv (const gchar *variable,
- const gchar *value,
- gboolean overwrite)
-{
-#ifndef G_OS_WIN32
-
- gint result;
-#ifndef HAVE_SETENV
- gchar *string;
-#endif
-
- g_return_val_if_fail (variable != NULL, FALSE);
- g_return_val_if_fail (strchr (variable, '=') == NULL, FALSE);
-
-#ifdef HAVE_SETENV
- result = setenv (variable, value, overwrite);
-#else
- if (!overwrite && getenv (variable) != NULL)
- return TRUE;
-
- /* This results in a leak when you overwrite existing
- * settings. It would be fairly easy to fix this by keeping
- * our own parallel array or hash table.
- */
- string = g_strconcat (variable, "=", value, NULL);
- result = putenv (string);
-#endif
- return result == 0;
-
-#else /* G_OS_WIN32 */
-
- gboolean retval;
- wchar_t *wname, *wvalue, *wassignment;
- gchar *tem;
-
- g_return_val_if_fail (variable != NULL, FALSE);
- g_return_val_if_fail (strchr (variable, '=') == NULL, FALSE);
- g_return_val_if_fail (g_utf8_validate (variable, -1, NULL), FALSE);
- g_return_val_if_fail (g_utf8_validate (value, -1, NULL), FALSE);
-
- if (!overwrite && g_getenv (variable) != NULL)
- return TRUE;
-
- /* We want to (if possible) set both the environment variable copy
- * kept by the C runtime and the one kept by the system.
- *
- * We can't use only the C runtime's putenv or _wputenv() as that
- * won't work for arbitrary Unicode strings in a "non-Unicode" app
- * (with main() and not wmain()). In a "main()" app the C runtime
- * initializes the C runtime's environment table by converting the
- * real (wide char) environment variables to system codepage, thus
- * breaking those that aren't representable in the system codepage.
- *
- * As the C runtime's putenv() will also set the system copy, we do
- * the putenv() first, then call SetEnvironmentValueW ourselves.
- */
-
- wname = g_utf8_to_utf16 (variable, -1, NULL, NULL, NULL);
- wvalue = g_utf8_to_utf16 (value, -1, NULL, NULL, NULL);
- tem = g_strconcat (variable, "=", value, NULL);
- wassignment = g_utf8_to_utf16 (tem, -1, NULL, NULL, NULL);
-
- g_free (tem);
- _wputenv (wassignment);
- g_free (wassignment);
-
- retval = (SetEnvironmentVariableW (wname, wvalue) != 0);
-
- g_free (wname);
- g_free (wvalue);
-
- return retval;
-
-#endif /* G_OS_WIN32 */
-}
-
-#ifdef HAVE__NSGETENVIRON
-#define environ (*_NSGetEnviron())
-#elif !defined(G_OS_WIN32)
-
-/* According to the Single Unix Specification, environ is not in
- * any system header, although unistd.h often declares it.
- */
-extern char **environ;
-#endif
-
-/**
- * g_unsetenv:
- * @variable: the environment variable to remove, must not contain '='.
- *
- * Removes an environment variable from the environment.
- *
- * Note that on some systems, when variables are overwritten, the memory
- * used for the previous variables and its value isn't reclaimed.
- * Furthermore, this function can't be guaranteed to operate in a
- * threadsafe way.
- *
- * Since: 2.4
- **/
-void
-g_unsetenv (const gchar *variable)
-{
-#ifndef G_OS_WIN32
-
-#ifdef HAVE_UNSETENV
- g_return_if_fail (variable != NULL);
- g_return_if_fail (strchr (variable, '=') == NULL);
-
- unsetenv (variable);
-#else /* !HAVE_UNSETENV */
- int len;
- gchar **e, **f;
-
- g_return_if_fail (variable != NULL);
- g_return_if_fail (strchr (variable, '=') == NULL);
-
- len = strlen (variable);
-
- /* Mess directly with the environ array.
- * This seems to be the only portable way to do this.
- *
- * Note that we remove *all* environment entries for
- * the variable name, not just the first.
- */
- e = f = environ;
- while (*e != NULL)
- {
- if (strncmp (*e, variable, len) != 0 || (*e)[len] != '=')
- {
- *f = *e;
- f++;
- }
- e++;
- }
- *f = NULL;
-#endif /* !HAVE_UNSETENV */
-
-#else /* G_OS_WIN32 */
-
- wchar_t *wname, *wassignment;
- gchar *tem;
-
- g_return_if_fail (variable != NULL);
- g_return_if_fail (strchr (variable, '=') == NULL);
- g_return_if_fail (g_utf8_validate (variable, -1, NULL));
-
- wname = g_utf8_to_utf16 (variable, -1, NULL, NULL, NULL);
- tem = g_strconcat (variable, "=", NULL);
- wassignment = g_utf8_to_utf16 (tem, -1, NULL, NULL, NULL);
-
- g_free (tem);
- _wputenv (wassignment);
- g_free (wassignment);
-
- SetEnvironmentVariableW (wname, NULL);
-
- g_free (wname);
-
-#endif /* G_OS_WIN32 */
-}
-
-/**
- * g_listenv:
- *
- * Gets the names of all variables set in the environment.
- *
- * Returns: a %NULL-terminated list of strings which must be freed
- * with g_strfreev().
- *
- * Programs that want to be portable to Windows should typically use
- * this function and g_getenv() instead of using the environ array
- * from the C library directly. On Windows, the strings in the environ
- * array are in system codepage encoding, while in most of the typical
- * use cases for environment variables in GLib-using programs you want
- * the UTF-8 encoding that this function and g_getenv() provide.
- *
- * Since: 2.8
- */
-gchar **
-g_listenv (void)
-{
-#ifndef G_OS_WIN32
- gchar **result, *eq;
- gint len, i, j;
-
- len = g_strv_length (environ);
- result = g_new0 (gchar *, len + 1);
-
- j = 0;
- for (i = 0; i < len; i++)
- {
- eq = strchr (environ[i], '=');
- if (eq)
- result[j++] = g_strndup (environ[i], eq - environ[i]);
- }
-
- result[j] = NULL;
-
- return result;
-#else
- gchar **result, *eq;
- gint len = 0, j;
- wchar_t *p, *q;
-
- p = (wchar_t *) GetEnvironmentStringsW ();
- if (p != NULL)
- {
- q = p;
- while (*q)
- {
- q += wcslen (q) + 1;
- len++;
- }
- }
- result = g_new0 (gchar *, len + 1);
-
- j = 0;
- q = p;
- while (*q)
- {
- result[j] = g_utf16_to_utf8 (q, -1, NULL, NULL, NULL);
- if (result[j] != NULL)
- {
- eq = strchr (result[j], '=');
- if (eq && eq > result[j])
- {
- *eq = '\0';
- j++;
- }
- else
- g_free (result[j]);
- }
- q += wcslen (q) + 1;
- }
- result[j] = NULL;
- FreeEnvironmentStringsW (p);
-
- return result;
-#endif
-}
-
-G_LOCK_DEFINE_STATIC (g_utils_global);
-
-static gchar *g_tmp_dir = NULL;
-static gchar *g_user_name = NULL;
-static gchar *g_real_name = NULL;
-static gchar *g_home_dir = NULL;
-static gchar *g_host_name = NULL;
-
-#ifdef G_OS_WIN32
-/* System codepage versions of the above, kept at file level so that they,
- * too, are produced only once.
- */
-static gchar *g_tmp_dir_cp = NULL;
-static gchar *g_user_name_cp = NULL;
-static gchar *g_real_name_cp = NULL;
-static gchar *g_home_dir_cp = NULL;
-#endif
-
-static gchar *g_user_data_dir = NULL;
-static gchar **g_system_data_dirs = NULL;
-static gchar *g_user_cache_dir = NULL;
-static gchar *g_user_config_dir = NULL;
-static gchar **g_system_config_dirs = NULL;
-
-static gchar **g_user_special_dirs = NULL;
-
-/* fifteen minutes of fame for everybody */
-#define G_USER_DIRS_EXPIRE 15 * 60
-
-#ifdef G_OS_WIN32
-
-static gchar *
-get_special_folder (int csidl)
-{
- wchar_t path[MAX_PATH+1];
- HRESULT hr;
- LPITEMIDLIST pidl = NULL;
- BOOL b;
- gchar *retval = NULL;
-
- hr = SHGetSpecialFolderLocation (NULL, csidl, &pidl);
- if (hr == S_OK)
- {
- b = SHGetPathFromIDListW (pidl, path);
- if (b)
- retval = g_utf16_to_utf8 (path, -1, NULL, NULL, NULL);
- CoTaskMemFree (pidl);
- }
- return retval;
-}
-
-static char *
-get_windows_directory_root (void)
-{
- wchar_t wwindowsdir[MAX_PATH];
-
- if (GetWindowsDirectoryW (wwindowsdir, G_N_ELEMENTS (wwindowsdir)))
- {
- /* Usually X:\Windows, but in terminal server environments
- * might be an UNC path, AFAIK.
- */
- char *windowsdir = g_utf16_to_utf8 (wwindowsdir, -1, NULL, NULL, NULL);
- char *p;
-
- if (windowsdir == NULL)
- return g_strdup ("C:\\");
-
- p = (char *) g_path_skip_root (windowsdir);
- if (G_IS_DIR_SEPARATOR (p[-1]) && p[-2] != ':')
- p--;
- *p = '\0';
- return windowsdir;
- }
- else
- return g_strdup ("C:\\");
-}
-
-#endif
-
-/* HOLDS: g_utils_global_lock */
-static void
-g_get_any_init_do (void)
-{
- gchar hostname[100];
-
- g_tmp_dir = g_strdup (g_getenv ("TMPDIR"));
- if (!g_tmp_dir)
- g_tmp_dir = g_strdup (g_getenv ("TMP"));
- if (!g_tmp_dir)
- g_tmp_dir = g_strdup (g_getenv ("TEMP"));
-
-#ifdef G_OS_WIN32
- if (!g_tmp_dir)
- g_tmp_dir = get_windows_directory_root ();
-#else
-#ifdef P_tmpdir
- if (!g_tmp_dir)
- {
- gsize k;
- g_tmp_dir = g_strdup (P_tmpdir);
- k = strlen (g_tmp_dir);
- if (k > 1 && G_IS_DIR_SEPARATOR (g_tmp_dir[k - 1]))
- g_tmp_dir[k - 1] = '\0';
- }
-#endif
-
- if (!g_tmp_dir)
- {
- g_tmp_dir = g_strdup ("/tmp");
- }
-#endif /* !G_OS_WIN32 */
-
-#ifdef G_OS_WIN32
- /* We check $HOME first for Win32, though it is a last resort for Unix
- * where we prefer the results of getpwuid().
- */
- g_home_dir = g_strdup (g_getenv ("HOME"));
-
- /* Only believe HOME if it is an absolute path and exists */
- if (g_home_dir)
- {
- if (!(g_path_is_absolute (g_home_dir) &&
- g_file_test (g_home_dir, G_FILE_TEST_IS_DIR)))
- {
- g_free (g_home_dir);
- g_home_dir = NULL;
- }
- }
-
- /* In case HOME is Unix-style (it happens), convert it to
- * Windows style.
- */
- if (g_home_dir)
- {
- gchar *p;
- while ((p = strchr (g_home_dir, '/')) != NULL)
- *p = '\\';
- }
-
- if (!g_home_dir)
- {
- /* USERPROFILE is probably the closest equivalent to $HOME? */
- if (g_getenv ("USERPROFILE") != NULL)
- g_home_dir = g_strdup (g_getenv ("USERPROFILE"));
- }
-
- if (!g_home_dir)
- g_home_dir = get_special_folder (CSIDL_PROFILE);
-
- if (!g_home_dir)
- g_home_dir = get_windows_directory_root ();
-#endif /* G_OS_WIN32 */
-
-#ifdef HAVE_PWD_H
- {
- struct passwd *pw = NULL;
- gpointer buffer = NULL;
- gint error;
- gchar *logname;
-
-# if defined (HAVE_POSIX_GETPWUID_R) || defined (HAVE_NONPOSIX_GETPWUID_R)
- struct passwd pwd;
-# ifdef _SC_GETPW_R_SIZE_MAX
- /* This reurns the maximum length */
- glong bufsize = sysconf (_SC_GETPW_R_SIZE_MAX);
-
- if (bufsize < 0)
- bufsize = 64;
-# else /* _SC_GETPW_R_SIZE_MAX */
- glong bufsize = 64;
-# endif /* _SC_GETPW_R_SIZE_MAX */
-
- logname = (gchar *) g_getenv ("LOGNAME");
-
- do
- {
- g_free (buffer);
- /* we allocate 6 extra bytes to work around a bug in
- * Mac OS < 10.3. See #156446
- */
- buffer = g_malloc (bufsize + 6);
- errno = 0;
-
-# ifdef HAVE_POSIX_GETPWUID_R
- if (logname) {
- error = getpwnam_r (logname, &pwd, buffer, bufsize, &pw);
- if (!pw || (pw->pw_uid != getuid ())) {
- /* LOGNAME is lying, fall back to looking up the uid */
- error = getpwuid_r (getuid (), &pwd, buffer, bufsize, &pw);
- }
- } else {
- error = getpwuid_r (getuid (), &pwd, buffer, bufsize, &pw);
- }
- error = error < 0 ? errno : error;
-# else /* HAVE_NONPOSIX_GETPWUID_R */
- /* HPUX 11 falls into the HAVE_POSIX_GETPWUID_R case */
-# if defined(_AIX) || defined(__hpux)
- error = getpwuid_r (getuid (), &pwd, buffer, bufsize);
- pw = error == 0 ? &pwd : NULL;
-# else /* !_AIX */
- if (logname) {
- pw = getpwnam_r (logname, &pwd, buffer, bufsize);
- if (!pw || (pw->pw_uid != getuid ())) {
- /* LOGNAME is lying, fall back to looking up the uid */
- pw = getpwuid_r (getuid (), &pwd, buffer, bufsize);
- }
- } else {
- pw = getpwuid_r (getuid (), &pwd, buffer, bufsize);
- }
- error = pw ? 0 : errno;
-# endif /* !_AIX */
-# endif /* HAVE_NONPOSIX_GETPWUID_R */
-
- if (!pw)
- {
- /* we bail out prematurely if the user id can't be found
- * (should be pretty rare case actually), or if the buffer
- * should be sufficiently big and lookups are still not
- * successfull.
- */
- if (error == 0 || error == ENOENT)
- {
- g_warning ("getpwuid_r(): failed due to unknown user id (%lu)",
- (gulong) getuid ());
- break;
- }
- if (bufsize > 32 * 1024)
- {
- g_warning ("getpwuid_r(): failed due to: %s.",
- g_strerror (error));
- break;
- }
-
- bufsize *= 2;
- }
- }
- while (!pw);
-# endif /* HAVE_POSIX_GETPWUID_R || HAVE_NONPOSIX_GETPWUID_R */
-
- if (!pw)
- {
- setpwent ();
- pw = getpwuid (getuid ());
- endpwent ();
- }
- if (pw)
- {
- g_user_name = g_strdup (pw->pw_name);
-
- if (pw->pw_gecos && *pw->pw_gecos != '\0')
- {
- gchar **gecos_fields;
- gchar **name_parts;
-
- /* split the gecos field and substitute '&' */
- gecos_fields = g_strsplit (pw->pw_gecos, ",", 0);
- name_parts = g_strsplit (gecos_fields[0], "&", 0);
- pw->pw_name[0] = g_ascii_toupper (pw->pw_name[0]);
- g_real_name = g_strjoinv (pw->pw_name, name_parts);
- g_strfreev (gecos_fields);
- g_strfreev (name_parts);
- }
-
- if (!g_home_dir)
- g_home_dir = g_strdup (pw->pw_dir);
- }
- g_free (buffer);
- }
-
-#else /* !HAVE_PWD_H */
-
-#ifdef G_OS_WIN32
- {
- guint len = UNLEN+1;
- wchar_t buffer[UNLEN+1];
-
- if (GetUserNameW (buffer, (LPDWORD) &len))
- {
- g_user_name = g_utf16_to_utf8 (buffer, -1, NULL, NULL, NULL);
- g_real_name = g_strdup (g_user_name);
- }
- }
-#endif /* G_OS_WIN32 */
-
-#endif /* !HAVE_PWD_H */
-
-#ifndef G_OS_WIN32
- if (!g_home_dir)
- g_home_dir = g_strdup (g_getenv ("HOME"));
-#endif
-
-#ifdef __EMX__
- /* change '\\' in %HOME% to '/' */
- g_strdelimit (g_home_dir, "\\",'/');
-#endif
- if (!g_user_name)
- g_user_name = g_strdup ("somebody");
- if (!g_real_name)
- g_real_name = g_strdup ("Unknown");
-
- {
-#ifndef G_OS_WIN32
- gboolean hostname_fail = (gethostname (hostname, sizeof (hostname)) == -1);
-#else
- DWORD size = sizeof (hostname);
- gboolean hostname_fail = (!GetComputerName (hostname, &size));
-#endif
- g_host_name = g_strdup (hostname_fail ? "localhost" : hostname);
- }
-
-#ifdef G_OS_WIN32
- g_tmp_dir_cp = g_locale_from_utf8 (g_tmp_dir, -1, NULL, NULL, NULL);
- g_user_name_cp = g_locale_from_utf8 (g_user_name, -1, NULL, NULL, NULL);
- g_real_name_cp = g_locale_from_utf8 (g_real_name, -1, NULL, NULL, NULL);
-
- if (!g_tmp_dir_cp)
- g_tmp_dir_cp = g_strdup ("\\");
- if (!g_user_name_cp)
- g_user_name_cp = g_strdup ("somebody");
- if (!g_real_name_cp)
- g_real_name_cp = g_strdup ("Unknown");
-
- /* home_dir might be NULL, unlike tmp_dir, user_name and
- * real_name.
- */
- if (g_home_dir)
- g_home_dir_cp = g_locale_from_utf8 (g_home_dir, -1, NULL, NULL, NULL);
- else
- g_home_dir_cp = NULL;
-#endif /* G_OS_WIN32 */
-}
-
-static inline void
-g_get_any_init (void)
-{
- if (!g_tmp_dir)
- g_get_any_init_do ();
-}
-
-static inline void
-g_get_any_init_locked (void)
-{
- G_LOCK (g_utils_global);
- g_get_any_init ();
- G_UNLOCK (g_utils_global);
-}
-
-
-/**
- * g_get_user_name:
- *
- * Gets the user name of the current user. The encoding of the returned
- * string is system-defined. On UNIX, it might be the preferred file name
- * encoding, or something else, and there is no guarantee that it is even
- * consistent on a machine. On Windows, it is always UTF-8.
- *
- * Returns: the user name of the current user.
- */
-G_CONST_RETURN gchar*
-g_get_user_name (void)
-{
- g_get_any_init_locked ();
- return g_user_name;
-}
-
-/**
- * g_get_real_name:
- *
- * Gets the real name of the user. This usually comes from the user's entry
- * in the <filename>passwd</filename> file. The encoding of the returned
- * string is system-defined. (On Windows, it is, however, always UTF-8.)
- * If the real user name cannot be determined, the string "Unknown" is
- * returned.
- *
- * Returns: the user's real name.
- */
-G_CONST_RETURN gchar*
-g_get_real_name (void)
-{
- g_get_any_init_locked ();
- return g_real_name;
-}
-
-/**
- * g_get_home_dir:
- *
- * Gets the current user's home directory as defined in the
- * password database.
- *
- * Note that in contrast to traditional UNIX tools, this function
- * prefers <filename>passwd</filename> entries over the <envar>HOME</envar>
- * environment variable.
- *
- * One of the reasons for this decision is that applications in many
- * cases need special handling to deal with the case where
- * <envar>HOME</envar> is
- * <simplelist>
- * <member>Not owned by the user</member>
- * <member>Not writeable</member>
- * <member>Not even readable</member>
- * </simplelist>
- * Since applications are in general <emphasis>not</emphasis> written
- * to deal with these situations it was considered better to make
- * g_get_home_dir() not pay attention to <envar>HOME</envar> and to
- * return the real home directory for the user. If applications
- * want to pay attention to <envar>HOME</envar>, they can do:
- * |[
- * const char *homedir = g_getenv ("HOME");
- * if (!homedir)
- * homedir = g_get_home_dir (<!-- -->);
- * ]|
- *
- * Returns: the current user's home directory
- */
-G_CONST_RETURN gchar*
-g_get_home_dir (void)
-{
- g_get_any_init_locked ();
- return g_home_dir;
-}
-
-/**
- * g_get_tmp_dir:
- *
- * Gets the directory to use for temporary files. This is found from
- * inspecting the environment variables <envar>TMPDIR</envar>,
- * <envar>TMP</envar>, and <envar>TEMP</envar> in that order. If none
- * of those are defined "/tmp" is returned on UNIX and "C:\" on Windows.
- * The encoding of the returned string is system-defined. On Windows,
- * it is always UTF-8. The return value is never %NULL.
- *
- * Returns: the directory to use for temporary files.
- */
-G_CONST_RETURN gchar*
-g_get_tmp_dir (void)
-{
- g_get_any_init_locked ();
- return g_tmp_dir;
-}
-
-/**
- * g_get_host_name:
- *
- * Return a name for the machine.
- *
- * The returned name is not necessarily a fully-qualified domain name,
- * or even present in DNS or some other name service at all. It need
- * not even be unique on your local network or site, but usually it
- * is. Callers should not rely on the return value having any specific
- * properties like uniqueness for security purposes. Even if the name
- * of the machine is changed while an application is running, the
- * return value from this function does not change. The returned
- * string is owned by GLib and should not be modified or freed. If no
- * name can be determined, a default fixed string "localhost" is
- * returned.
- *
- * Returns: the host name of the machine.
- *
- * Since: 2.8
- */
-const gchar *
-g_get_host_name (void)
-{
- g_get_any_init_locked ();
- return g_host_name;
-}
-#endif
-
-G_LOCK_DEFINE_STATIC (g_prgname);
-static gchar *g_prgname = NULL;
-
-/**
- * g_get_prgname:
- *
- * Gets the name of the program. This name should <emphasis>not</emphasis>
- * be localized, contrast with g_get_application_name().
- * (If you are using GDK or GTK+ the program name is set in gdk_init(),
- * which is called by gtk_init(). The program name is found by taking
- * the last component of <literal>argv[0]</literal>.)
- *
- * Returns: the name of the program. The returned string belongs
- * to GLib and must not be modified or freed.
- */
-gchar*
-g_get_prgname (void)
-{
- gchar* retval =NULL;
-
-// G_LOCK (g_prgname);
-//#ifdef G_OS_WIN32
-// if (g_prgname == NULL)
-// {
-// static gboolean beenhere = FALSE;
-//
-// if (!beenhere)
-// {
-// gchar *utf8_buf = NULL;
-// wchar_t buf[MAX_PATH+1];
-//
-// beenhere = TRUE;
-// if (GetModuleFileNameW (GetModuleHandle (NULL),
-// buf, G_N_ELEMENTS (buf)) > 0)
-// utf8_buf = g_utf16_to_utf8 (buf, -1, NULL, NULL, NULL);
-//
-// if (utf8_buf)
-// {
-// g_prgname = g_path_get_basename (utf8_buf);
-// g_free (utf8_buf);
-// }
-// }
-// }
-//#endif
-// retval = g_prgname;
-// G_UNLOCK (g_prgname);
-//
- return retval;
-}
-
-/**
- * g_set_prgname:
- * @prgname: the name of the program.
- *
- * Sets the name of the program. This name should <emphasis>not</emphasis>
- * be localized, contrast with g_set_application_name(). Note that for
- * thread-safety reasons this function can only be called once.
- */
-void
-g_set_prgname (const gchar *prgname)
-{
- G_LOCK (g_prgname);
- g_free (g_prgname);
- g_prgname = g_strdup (prgname);
- G_UNLOCK (g_prgname);
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-G_LOCK_DEFINE_STATIC (g_application_name);
-static gchar *g_application_name = NULL;
-
-/**
- * g_get_application_name:
- *
- * Gets a human-readable name for the application, as set by
- * g_set_application_name(). This name should be localized if
- * possible, and is intended for display to the user. Contrast with
- * g_get_prgname(), which gets a non-localized name. If
- * g_set_application_name() has not been called, returns the result of
- * g_get_prgname() (which may be %NULL if g_set_prgname() has also not
- * been called).
- *
- * Return value: human-readable application name. may return %NULL
- *
- * Since: 2.2
- **/
-G_CONST_RETURN gchar*
-g_get_application_name (void)
-{
- gchar* retval;
-
- G_LOCK (g_application_name);
- retval = g_application_name;
- G_UNLOCK (g_application_name);
-
- if (retval == NULL)
- return g_get_prgname ();
-
- return retval;
-}
-
-/**
- * g_set_application_name:
- * @application_name: localized name of the application
- *
- * Sets a human-readable name for the application. This name should be
- * localized if possible, and is intended for display to the user.
- * Contrast with g_set_prgname(), which sets a non-localized name.
- * g_set_prgname() will be called automatically by gtk_init(),
- * but g_set_application_name() will not.
- *
- * Note that for thread safety reasons, this function can only
- * be called once.
- *
- * The application name will be used in contexts such as error messages,
- * or when displaying an application's name in the task list.
- *
- * Since: 2.2
- **/
-void
-g_set_application_name (const gchar *application_name)
-{
- gboolean already_set = FALSE;
-
- G_LOCK (g_application_name);
- if (g_application_name)
- already_set = TRUE;
- else
- g_application_name = g_strdup (application_name);
- G_UNLOCK (g_application_name);
-
- if (already_set)
- g_warning ("g_set_application() name called multiple times");
-}
-
-/**
- * g_get_user_data_dir:
- *
- * Returns a base directory in which to access application data such
- * as icons that is customized for a particular user.
- *
- * On UNIX platforms this is determined using the mechanisms described in
- * the <ulink url="http://www.freedesktop.org/Standards/basedir-spec">
- * XDG Base Directory Specification</ulink>
- *
- * Return value: a string owned by GLib that must not be modified
- * or freed.
- * Since: 2.6
- **/
-G_CONST_RETURN gchar*
-g_get_user_data_dir (void)
-{
- gchar *data_dir;
-
- G_LOCK (g_utils_global);
-
- if (!g_user_data_dir)
- {
-#ifdef G_OS_WIN32
- data_dir = get_special_folder (CSIDL_PERSONAL);
-#else
- data_dir = (gchar *) g_getenv ("XDG_DATA_HOME");
-
- if (data_dir && data_dir[0])
- data_dir = g_strdup (data_dir);
-#endif
- if (!data_dir || !data_dir[0])
- {
- g_get_any_init ();
-
- if (g_home_dir)
- data_dir = g_build_filename (g_home_dir, ".local",
- "share", NULL);
- else
- data_dir = g_build_filename (g_tmp_dir, g_user_name, ".local",
- "share", NULL);
- }
-
- g_user_data_dir = data_dir;
- }
- else
- data_dir = g_user_data_dir;
-
- G_UNLOCK (g_utils_global);
-
- return data_dir;
-}
-
-static void
-g_init_user_config_dir (void)
-{
- gchar *config_dir;
-
- if (!g_user_config_dir)
- {
-#ifdef G_OS_WIN32
- config_dir = get_special_folder (CSIDL_APPDATA);
-#else
- config_dir = (gchar *) g_getenv ("XDG_CONFIG_HOME");
-
- if (config_dir && config_dir[0])
- config_dir = g_strdup (config_dir);
-#endif
- if (!config_dir || !config_dir[0])
- {
- g_get_any_init ();
-
- if (g_home_dir)
- config_dir = g_build_filename (g_home_dir, ".config", NULL);
- else
- config_dir = g_build_filename (g_tmp_dir, g_user_name, ".config", NULL);
- }
-
- g_user_config_dir = config_dir;
- }
-}
-
-/**
- * g_get_user_config_dir:
- *
- * Returns a base directory in which to store user-specific application
- * configuration information such as user preferences and settings.
- *
- * On UNIX platforms this is determined using the mechanisms described in
- * the <ulink url="http://www.freedesktop.org/Standards/basedir-spec">
- * XDG Base Directory Specification</ulink>
- *
- * Return value: a string owned by GLib that must not be modified
- * or freed.
- * Since: 2.6
- **/
-G_CONST_RETURN gchar*
-g_get_user_config_dir (void)
-{
- G_LOCK (g_utils_global);
-
- g_init_user_config_dir ();
-
- G_UNLOCK (g_utils_global);
-
- return g_user_config_dir;
-}
-
-/**
- * g_get_user_cache_dir:
- *
- * Returns a base directory in which to store non-essential, cached
- * data specific to particular user.
- *
- * On UNIX platforms this is determined using the mechanisms described in
- * the <ulink url="http://www.freedesktop.org/Standards/basedir-spec">
- * XDG Base Directory Specification</ulink>
- *
- * Return value: a string owned by GLib that must not be modified
- * or freed.
- * Since: 2.6
- **/
-G_CONST_RETURN gchar*
-g_get_user_cache_dir (void)
-{
- gchar *cache_dir;
-
- G_LOCK (g_utils_global);
-
- if (!g_user_cache_dir)
- {
-#ifdef G_OS_WIN32
- cache_dir = get_special_folder (CSIDL_INTERNET_CACHE); /* XXX correct? */
-#else
- cache_dir = (gchar *) g_getenv ("XDG_CACHE_HOME");
-
- if (cache_dir && cache_dir[0])
- cache_dir = g_strdup (cache_dir);
-#endif
- if (!cache_dir || !cache_dir[0])
- {
- g_get_any_init ();
-
- if (g_home_dir)
- cache_dir = g_build_filename (g_home_dir, ".cache", NULL);
- else
- cache_dir = g_build_filename (g_tmp_dir, g_user_name, ".cache", NULL);
- }
- g_user_cache_dir = cache_dir;
- }
- else
- cache_dir = g_user_cache_dir;
-
- G_UNLOCK (g_utils_global);
-
- return cache_dir;
-}
-
-#ifdef HAVE_CARBON
-
-static gchar *
-find_folder (OSType type)
-{
- gchar *filename = NULL;
- FSRef found;
-
- if (FSFindFolder (kUserDomain, type, kDontCreateFolder, &found) == noErr)
- {
- CFURLRef url = CFURLCreateFromFSRef (kCFAllocatorSystemDefault, &found);
-
- if (url)
- {
- CFStringRef path = CFURLCopyFileSystemPath (url, kCFURLPOSIXPathStyle);
-
- if (path)
- {
- filename = g_strdup (CFStringGetCStringPtr (path, kCFStringEncodingUTF8));
-
- if (! filename)
- {
- filename = g_new0 (gchar, CFStringGetLength (path) * 3 + 1);
-
- CFStringGetCString (path, filename,
- CFStringGetLength (path) * 3 + 1,
- kCFStringEncodingUTF8);
- }
-
- CFRelease (path);
- }
-
- CFRelease (url);
- }
- }
-
- return filename;
-}
-
-static void
-load_user_special_dirs (void)
-{
- g_user_special_dirs[G_USER_DIRECTORY_DESKTOP] = find_folder (kDesktopFolderType);
- g_user_special_dirs[G_USER_DIRECTORY_DOCUMENTS] = find_folder (kDocumentsFolderType);
- g_user_special_dirs[G_USER_DIRECTORY_DOWNLOAD] = find_folder (kDesktopFolderType); /* XXX correct ? */
- g_user_special_dirs[G_USER_DIRECTORY_MUSIC] = find_folder (kMusicDocumentsFolderType);
- g_user_special_dirs[G_USER_DIRECTORY_PICTURES] = find_folder (kPictureDocumentsFolderType);
- g_user_special_dirs[G_USER_DIRECTORY_PUBLIC_SHARE] = NULL;
- g_user_special_dirs[G_USER_DIRECTORY_TEMPLATES] = NULL;
- g_user_special_dirs[G_USER_DIRECTORY_VIDEOS] = find_folder (kMovieDocumentsFolderType);
-}
-
-#endif /* HAVE_CARBON */
-
-#if defined(G_OS_WIN32)
-static void
-load_user_special_dirs (void)
-{
- typedef HRESULT (WINAPI *t_SHGetKnownFolderPath) (const GUID *rfid,
- DWORD dwFlags,
- HANDLE hToken,
- PWSTR *ppszPath);
- t_SHGetKnownFolderPath p_SHGetKnownFolderPath;
- static const GUID FOLDERID_Downloads =
- { 0x374de290, 0x123f, 0x4565, { 0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b } };
- static const GUID FOLDERID_Public =
- { 0xDFDF76A2, 0xC82A, 0x4D63, { 0x90, 0x6A, 0x56, 0x44, 0xAC, 0x45, 0x73, 0x85 } };
- wchar_t *wcp;
-
- p_SHGetKnownFolderPath = (t_SHGetKnownFolderPath) GetProcAddress (LoadLibrary ("shell32.dll"),
- "SHGetKnownFolderPath");
-
- g_user_special_dirs[G_USER_DIRECTORY_DESKTOP] = get_special_folder (CSIDL_DESKTOPDIRECTORY);
- g_user_special_dirs[G_USER_DIRECTORY_DOCUMENTS] = get_special_folder (CSIDL_PERSONAL);
-
- if (p_SHGetKnownFolderPath == NULL)
- {
- g_user_special_dirs[G_USER_DIRECTORY_DOWNLOAD] = get_special_folder (CSIDL_DESKTOPDIRECTORY);
- }
- else
- {
- wcp = NULL;
- (*p_SHGetKnownFolderPath) (&FOLDERID_Downloads, 0, NULL, &wcp);
- g_user_special_dirs[G_USER_DIRECTORY_DOWNLOAD] = g_utf16_to_utf8 (wcp, -1, NULL, NULL, NULL);
- if (g_user_special_dirs[G_USER_DIRECTORY_DOWNLOAD] == NULL)
- g_user_special_dirs[G_USER_DIRECTORY_DOWNLOAD] = get_special_folder (CSIDL_DESKTOPDIRECTORY);
- CoTaskMemFree (wcp);
- }
-
- g_user_special_dirs[G_USER_DIRECTORY_MUSIC] = get_special_folder (CSIDL_MYMUSIC);
- g_user_special_dirs[G_USER_DIRECTORY_PICTURES] = get_special_folder (CSIDL_MYPICTURES);
-
- if (p_SHGetKnownFolderPath == NULL)
- {
- /* XXX */
- g_user_special_dirs[G_USER_DIRECTORY_PUBLIC_SHARE] = get_special_folder (CSIDL_COMMON_DOCUMENTS);
- }
- else
- {
- wcp = NULL;
- (*p_SHGetKnownFolderPath) (&FOLDERID_Public, 0, NULL, &wcp);
- g_user_special_dirs[G_USER_DIRECTORY_PUBLIC_SHARE] = g_utf16_to_utf8 (wcp, -1, NULL, NULL, NULL);
- if (g_user_special_dirs[G_USER_DIRECTORY_PUBLIC_SHARE] == NULL)
- g_user_special_dirs[G_USER_DIRECTORY_PUBLIC_SHARE] = get_special_folder (CSIDL_COMMON_DOCUMENTS);
- CoTaskMemFree (wcp);
- }
-
- g_user_special_dirs[G_USER_DIRECTORY_TEMPLATES] = get_special_folder (CSIDL_TEMPLATES);
- g_user_special_dirs[G_USER_DIRECTORY_VIDEOS] = get_special_folder (CSIDL_MYVIDEO);
-}
-#endif /* G_OS_WIN32 */
-
-static void g_init_user_config_dir (void);
-
-#if defined(G_OS_UNIX) && !defined(HAVE_CARBON)
-
-/* adapted from xdg-user-dir-lookup.c
- *
- * Copyright (C) 2007 Red Hat Inc.
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-static void
-load_user_special_dirs (void)
-{
- gchar *config_file;
- gchar *data;
- gchar **lines;
- gint n_lines, i;
-
- g_init_user_config_dir ();
- config_file = g_build_filename (g_user_config_dir,
- "user-dirs.dirs",
- NULL);
-
- if (!g_file_get_contents (config_file, &data, NULL, NULL))
- {
- g_free (config_file);
- return;
- }
-
- lines = g_strsplit (data, "\n", -1);
- n_lines = g_strv_length (lines);
- g_free (data);
-
- for (i = 0; i < n_lines; i++)
- {
- gchar *buffer = lines[i];
- gchar *d, *p;
- gint len;
- gboolean is_relative = FALSE;
- GUserDirectory directory;
-
- /* Remove newline at end */
- len = strlen (buffer);
- if (len > 0 && buffer[len - 1] == '\n')
- buffer[len - 1] = 0;
-
- p = buffer;
- while (*p == ' ' || *p == '\t')
- p++;
-
- if (strncmp (p, "XDG_DESKTOP_DIR", strlen ("XDG_DESKTOP_DIR")) == 0)
- {
- directory = G_USER_DIRECTORY_DESKTOP;
- p += strlen ("XDG_DESKTOP_DIR");
- }
- else if (strncmp (p, "XDG_DOCUMENTS_DIR", strlen ("XDG_DOCUMENTS_DIR")) == 0)
- {
- directory = G_USER_DIRECTORY_DOCUMENTS;
- p += strlen ("XDG_DOCUMENTS_DIR");
- }
- else if (strncmp (p, "XDG_DOWNLOAD_DIR", strlen ("XDG_DOWNLOAD_DIR")) == 0)
- {
- directory = G_USER_DIRECTORY_DOWNLOAD;
- p += strlen ("XDG_DOWNLOAD_DIR");
- }
- else if (strncmp (p, "XDG_MUSIC_DIR", strlen ("XDG_MUSIC_DIR")) == 0)
- {
- directory = G_USER_DIRECTORY_MUSIC;
- p += strlen ("XDG_MUSIC_DIR");
- }
- else if (strncmp (p, "XDG_PICTURES_DIR", strlen ("XDG_PICTURES_DIR")) == 0)
- {
- directory = G_USER_DIRECTORY_PICTURES;
- p += strlen ("XDG_PICTURES_DIR");
- }
- else if (strncmp (p, "XDG_PUBLICSHARE_DIR", strlen ("XDG_PUBLICSHARE_DIR")) == 0)
- {
- directory = G_USER_DIRECTORY_PUBLIC_SHARE;
- p += strlen ("XDG_PUBLICSHARE_DIR");
- }
- else if (strncmp (p, "XDG_TEMPLATES_DIR", strlen ("XDG_TEMPLATES_DIR")) == 0)
- {
- directory = G_USER_DIRECTORY_TEMPLATES;
- p += strlen ("XDG_TEMPLATES_DIR");
- }
- else if (strncmp (p, "XDG_VIDEOS_DIR", strlen ("XDG_VIDEOS_DIR")) == 0)
- {
- directory = G_USER_DIRECTORY_VIDEOS;
- p += strlen ("XDG_VIDEOS_DIR");
- }
- else
- continue;
-
- while (*p == ' ' || *p == '\t')
- p++;
-
- if (*p != '=')
- continue;
- p++;
-
- while (*p == ' ' || *p == '\t')
- p++;
-
- if (*p != '"')
- continue;
- p++;
-
- if (strncmp (p, "$HOME", 5) == 0)
- {
- p += 5;
- is_relative = TRUE;
- }
- else if (*p != '/')
- continue;
-
- d = strrchr (p, '"');
- if (!d)
- continue;
- *d = 0;
-
- d = p;
-
- /* remove trailing slashes */
- len = strlen (d);
- if (d[len - 1] == '/')
- d[len - 1] = 0;
-
- if (is_relative)
- {
- g_get_any_init ();
- g_user_special_dirs[directory] = g_build_filename (g_home_dir, d, NULL);
- }
- else
- g_user_special_dirs[directory] = g_strdup (d);
- }
-
- g_strfreev (lines);
- g_free (config_file);
-}
-
-#endif /* G_OS_UNIX && !HAVE_CARBON */
-
-/**
- * g_get_user_special_dir:
- * @directory: the logical id of special directory
- *
- * Returns the full path of a special directory using its logical id.
- *
- * On Unix this is done using the XDG special user directories.
- * For compatibility with existing practise, %G_USER_DIRECTORY_DESKTOP
- * falls back to <filename>$HOME/Desktop</filename> when XDG special
- * user directories have not been set up.
- *
- * Depending on the platform, the user might be able to change the path
- * of the special directory without requiring the session to restart; GLib
- * will not reflect any change once the special directories are loaded.
- *
- * Return value: the path to the specified special directory, or %NULL
- * if the logical id was not found. The returned string is owned by
- * GLib and should not be modified or freed.
- *
- * Since: 2.14
- */
-G_CONST_RETURN gchar *
-g_get_user_special_dir (GUserDirectory directory)
-{
- g_return_val_if_fail (directory >= G_USER_DIRECTORY_DESKTOP &&
- directory < G_USER_N_DIRECTORIES, NULL);
-
- G_LOCK (g_utils_global);
-
- if (G_UNLIKELY (g_user_special_dirs == NULL))
- {
- g_user_special_dirs = g_new0 (gchar *, G_USER_N_DIRECTORIES);
-
- load_user_special_dirs ();
-
- /* Special-case desktop for historical compatibility */
- if (g_user_special_dirs[G_USER_DIRECTORY_DESKTOP] == NULL)
- {
- g_get_any_init ();
-
- g_user_special_dirs[G_USER_DIRECTORY_DESKTOP] =
- g_build_filename (g_home_dir, "Desktop", NULL);
- }
- }
-
- G_UNLOCK (g_utils_global);
-
- return g_user_special_dirs[directory];
-}
-
-#ifdef G_OS_WIN32
-
-#undef g_get_system_data_dirs
-
-static HMODULE
-get_module_for_address (gconstpointer address)
-{
- /* Holds the g_utils_global lock */
-
- static gboolean beenhere = FALSE;
- typedef BOOL (WINAPI *t_GetModuleHandleExA) (DWORD, LPCTSTR, HMODULE *);
- static t_GetModuleHandleExA p_GetModuleHandleExA = NULL;
- HMODULE hmodule = NULL;
-
- if (!address)
- return NULL;
-
- if (!beenhere)
- {
- p_GetModuleHandleExA =
- (t_GetModuleHandleExA) GetProcAddress (LoadLibrary ("kernel32.dll"),
- "GetModuleHandleExA");
- beenhere = TRUE;
- }
-
- if (p_GetModuleHandleExA == NULL ||
- !(*p_GetModuleHandleExA) (GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT |
- GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
- address, &hmodule))
- {
- MEMORY_BASIC_INFORMATION mbi;
- VirtualQuery (address, &mbi, sizeof (mbi));
- hmodule = (HMODULE) mbi.AllocationBase;
- }
-
- return hmodule;
-}
-
-static gchar *
-get_module_share_dir (gconstpointer address)
-{
- HMODULE hmodule;
- gchar *filename;
- gchar *retval;
-
- hmodule = get_module_for_address (address);
- if (hmodule == NULL)
- return NULL;
-
- filename = g_win32_get_package_installation_directory_of_module (hmodule);
- retval = g_build_filename (filename, "share", NULL);
- g_free (filename);
-
- return retval;
-}
-
-G_CONST_RETURN gchar * G_CONST_RETURN *
-g_win32_get_system_data_dirs_for_module (gconstpointer address)
-{
- GArray *data_dirs;
- HMODULE hmodule;
- static GHashTable *per_module_data_dirs = NULL;
- gchar **retval;
- gchar *p;
- gchar *exe_root;
-
- if (address)
- {
- G_LOCK (g_utils_global);
- hmodule = get_module_for_address (address);
- if (hmodule != NULL)
- {
- if (per_module_data_dirs == NULL)
- per_module_data_dirs = g_hash_table_new (NULL, NULL);
- else
- {
- retval = g_hash_table_lookup (per_module_data_dirs, hmodule);
-
- if (retval != NULL)
- {
- G_UNLOCK (g_utils_global);
- return (G_CONST_RETURN gchar * G_CONST_RETURN *) retval;
- }
- }
- }
- }
-
- data_dirs = g_array_new (TRUE, TRUE, sizeof (char *));
-
- /* Documents and Settings\All Users\Application Data */
- p = get_special_folder (CSIDL_COMMON_APPDATA);
- if (p)
- g_array_append_val (data_dirs, p);
-
- /* Documents and Settings\All Users\Documents */
- p = get_special_folder (CSIDL_COMMON_DOCUMENTS);
- if (p)
- g_array_append_val (data_dirs, p);
-
- /* Using the above subfolders of Documents and Settings perhaps
- * makes sense from a Windows perspective.
- *
- * But looking at the actual use cases of this function in GTK+
- * and GNOME software, what we really want is the "share"
- * subdirectory of the installation directory for the package
- * our caller is a part of.
- *
- * The address parameter, if non-NULL, points to a function in the
- * calling module. Use that to determine that module's installation
- * folder, and use its "share" subfolder.
- *
- * Additionally, also use the "share" subfolder of the installation
- * locations of GLib and the .exe file being run.
- *
- * To guard against none of the above being what is really wanted,
- * callers of this function should have Win32-specific code to look
- * up their installation folder themselves, and handle a subfolder
- * "share" of it in the same way as the folders returned from this
- * function.
- */
-
- p = get_module_share_dir (address);
- if (p)
- g_array_append_val (data_dirs, p);
-
- if (glib_dll != NULL)
- {
- gchar *glib_root = g_win32_get_package_installation_directory_of_module (glib_dll);
- p = g_build_filename (glib_root, "share", NULL);
- if (p)
- g_array_append_val (data_dirs, p);
- g_free (glib_root);
- }
-
- exe_root = g_win32_get_package_installation_directory_of_module (NULL);
- p = g_build_filename (exe_root, "share", NULL);
- if (p)
- g_array_append_val (data_dirs, p);
- g_free (exe_root);
-
- retval = (gchar **) g_array_free (data_dirs, FALSE);
-
- if (address)
- {
- if (hmodule != NULL)
- g_hash_table_insert (per_module_data_dirs, hmodule, retval);
- G_UNLOCK (g_utils_global);
- }
-
- return (G_CONST_RETURN gchar * G_CONST_RETURN *) retval;
-}
-
-#endif
-
-/**
- * g_get_system_data_dirs:
- *
- * Returns an ordered list of base directories in which to access
- * system-wide application data.
- *
- * On UNIX platforms this is determined using the mechanisms described in
- * the <ulink url="http://www.freedesktop.org/Standards/basedir-spec">
- * XDG Base Directory Specification</ulink>
- *
- * On Windows the first elements in the list are the Application Data
- * and Documents folders for All Users. (These can be determined only
- * on Windows 2000 or later and are not present in the list on other
- * Windows versions.) See documentation for CSIDL_COMMON_APPDATA and
- * CSIDL_COMMON_DOCUMENTS.
- *
- * Then follows the "share" subfolder in the installation folder for
- * the package containing the DLL that calls this function, if it can
- * be determined.
- *
- * Finally the list contains the "share" subfolder in the installation
- * folder for GLib, and in the installation folder for the package the
- * application's .exe file belongs to.
- *
- * The installation folders above are determined by looking up the
- * folder where the module (DLL or EXE) in question is located. If the
- * folder's name is "bin", its parent is used, otherwise the folder
- * itself.
- *
- * Note that on Windows the returned list can vary depending on where
- * this function is called.
- *
- * Return value: a %NULL-terminated array of strings owned by GLib that must
- * not be modified or freed.
- * Since: 2.6
- **/
-G_CONST_RETURN gchar * G_CONST_RETURN *
-g_get_system_data_dirs (void)
-{
- gchar **data_dir_vector;
-
- G_LOCK (g_utils_global);
-
- if (!g_system_data_dirs)
- {
-#ifdef G_OS_WIN32
- data_dir_vector = (gchar **) g_win32_get_system_data_dirs_for_module (NULL);
-#else
- gchar *data_dirs = (gchar *) g_getenv ("XDG_DATA_DIRS");
-
- if (!data_dirs || !data_dirs[0])
- data_dirs = "/usr/local/share/:/usr/share/";
-
- data_dir_vector = g_strsplit (data_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
-#endif
-
- g_system_data_dirs = data_dir_vector;
- }
- else
- data_dir_vector = g_system_data_dirs;
-
- G_UNLOCK (g_utils_global);
-
- return (G_CONST_RETURN gchar * G_CONST_RETURN *) data_dir_vector;
-}
-
-/**
- * g_get_system_config_dirs:
- *
- * Returns an ordered list of base directories in which to access
- * system-wide configuration information.
- *
- * On UNIX platforms this is determined using the mechanisms described in
- * the <ulink url="http://www.freedesktop.org/Standards/basedir-spec">
- * XDG Base Directory Specification</ulink>
- *
- * Return value: a %NULL-terminated array of strings owned by GLib that must
- * not be modified or freed.
- * Since: 2.6
- **/
-G_CONST_RETURN gchar * G_CONST_RETURN *
-g_get_system_config_dirs (void)
-{
- gchar *conf_dirs, **conf_dir_vector;
-
- G_LOCK (g_utils_global);
-
- if (!g_system_config_dirs)
- {
-#ifdef G_OS_WIN32
- conf_dirs = get_special_folder (CSIDL_COMMON_APPDATA);
- if (conf_dirs)
- {
- conf_dir_vector = g_strsplit (conf_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
- g_free (conf_dirs);
- }
- else
- {
- /* Return empty list */
- conf_dir_vector = g_strsplit ("", G_SEARCHPATH_SEPARATOR_S, 0);
- }
-#else
- conf_dirs = (gchar *) g_getenv ("XDG_CONFIG_DIRS");
-
- if (!conf_dirs || !conf_dirs[0])
- conf_dirs = "/etc/xdg";
-
- conf_dir_vector = g_strsplit (conf_dirs, G_SEARCHPATH_SEPARATOR_S, 0);
-#endif
-
- g_system_config_dirs = conf_dir_vector;
- }
- else
- conf_dir_vector = g_system_config_dirs;
- G_UNLOCK (g_utils_global);
-
- return (G_CONST_RETURN gchar * G_CONST_RETURN *) conf_dir_vector;
-}
-
-#ifndef G_OS_WIN32
-
-static GHashTable *alias_table = NULL;
-
-/* read an alias file for the locales */
-static void
-read_aliases (gchar *file)
-{
- FILE *fp;
- char buf[256];
-
- if (!alias_table)
- alias_table = g_hash_table_new (g_str_hash, g_str_equal);
- fp = fopen (file,"r");
- if (!fp)
- return;
- while (fgets (buf, 256, fp))
- {
- char *p, *q;
-
- g_strstrip (buf);
-
- /* Line is a comment */
- if ((buf[0] == '#') || (buf[0] == '\0'))
- continue;
-
- /* Reads first column */
- for (p = buf, q = NULL; *p; p++) {
- if ((*p == '\t') || (*p == ' ') || (*p == ':')) {
- *p = '\0';
- q = p+1;
- while ((*q == '\t') || (*q == ' ')) {
- q++;
- }
- break;
- }
- }
- /* The line only had one column */
- if (!q || *q == '\0')
- continue;
-
- /* Read second column */
- for (p = q; *p; p++) {
- if ((*p == '\t') || (*p == ' ')) {
- *p = '\0';
- break;
- }
- }
-
- /* Add to alias table if necessary */
- if (!g_hash_table_lookup (alias_table, buf)) {
- g_hash_table_insert (alias_table, g_strdup (buf), g_strdup (q));
- }
- }
- fclose (fp);
-}
-
-#endif
-
-static char *
-unalias_lang (char *lang)
-{
-#ifndef G_OS_WIN32
- char *p;
- int i;
-
- if (!alias_table)
- read_aliases ("/usr/share/locale/locale.alias");
-
- i = 0;
- while ((p = g_hash_table_lookup (alias_table, lang)) && (strcmp (p, lang) != 0))
- {
- lang = p;
- if (i++ == 30)
- {
- static gboolean said_before = FALSE;
- if (!said_before)
- g_warning ("Too many alias levels for a locale, "
- "may indicate a loop");
- said_before = TRUE;
- return lang;
- }
- }
-#endif
- return lang;
-}
-
-/* Mask for components of locale spec. The ordering here is from
- * least significant to most significant
- */
-enum
-{
- COMPONENT_CODESET = 1 << 0,
- COMPONENT_TERRITORY = 1 << 1,
- COMPONENT_MODIFIER = 1 << 2
-};
-
-/* Break an X/Open style locale specification into components
- */
-static guint
-explode_locale (const gchar *locale,
- gchar **language,
- gchar **territory,
- gchar **codeset,
- gchar **modifier)
-{
- const gchar *uscore_pos;
- const gchar *at_pos;
- const gchar *dot_pos;
-
- guint mask = 0;
-
- uscore_pos = strchr (locale, '_');
- dot_pos = strchr (uscore_pos ? uscore_pos : locale, '.');
- at_pos = strchr (dot_pos ? dot_pos : (uscore_pos ? uscore_pos : locale), '@');
-
- if (at_pos)
- {
- mask |= COMPONENT_MODIFIER;
- *modifier = g_strdup (at_pos);
- }
- else
- at_pos = locale + strlen (locale);
-
- if (dot_pos)
- {
- mask |= COMPONENT_CODESET;
- *codeset = g_strndup (dot_pos, at_pos - dot_pos);
- }
- else
- dot_pos = at_pos;
-
- if (uscore_pos)
- {
- mask |= COMPONENT_TERRITORY;
- *territory = g_strndup (uscore_pos, dot_pos - uscore_pos);
- }
- else
- uscore_pos = dot_pos;
-
- *language = g_strndup (locale, uscore_pos - locale);
-
- return mask;
-}
-
-/*
- * Compute all interesting variants for a given locale name -
- * by stripping off different components of the value.
- *
- * For simplicity, we assume that the locale is in
- * X/Open format: language[_territory][.codeset][@modifier]
- *
- * TODO: Extend this to handle the CEN format (see the GNUlibc docs)
- * as well. We could just copy the code from glibc wholesale
- * but it is big, ugly, and complicated, so I'm reluctant
- * to do so when this should handle 99% of the time...
- */
-GSList *
-_g_compute_locale_variants (const gchar *locale)
-{
- GSList *retval = NULL;
-
- gchar *language = NULL;
- gchar *territory = NULL;
- gchar *codeset = NULL;
- gchar *modifier = NULL;
-
- guint mask;
- guint i;
-
- g_return_val_if_fail (locale != NULL, NULL);
-
- mask = explode_locale (locale, &language, &territory, &codeset, &modifier);
-
- /* Iterate through all possible combinations, from least attractive
- * to most attractive.
- */
- for (i = 0; i <= mask; i++)
- if ((i & ~mask) == 0)
- {
- gchar *val = g_strconcat (language,
- (i & COMPONENT_TERRITORY) ? territory : "",
- (i & COMPONENT_CODESET) ? codeset : "",
- (i & COMPONENT_MODIFIER) ? modifier : "",
- NULL);
- retval = g_slist_prepend (retval, val);
- }
-
- g_free (language);
- if (mask & COMPONENT_CODESET)
- g_free (codeset);
- if (mask & COMPONENT_TERRITORY)
- g_free (territory);
- if (mask & COMPONENT_MODIFIER)
- g_free (modifier);
-
- return retval;
-}
-
-/* The following is (partly) taken from the gettext package.
- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. */
-
-static const gchar *
-guess_category_value (const gchar *category_name)
-{
- const gchar *retval;
-
- /* The highest priority value is the `LANGUAGE' environment
- variable. This is a GNU extension. */
- retval = g_getenv ("LANGUAGE");
- if ((retval != NULL) && (retval[0] != '\0'))
- return retval;
-
- /* `LANGUAGE' is not set. So we have to proceed with the POSIX
- methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some
- systems this can be done by the `setlocale' function itself. */
-
- /* Setting of LC_ALL overwrites all other. */
- retval = g_getenv ("LC_ALL");
- if ((retval != NULL) && (retval[0] != '\0'))
- return retval;
-
- /* Next comes the name of the desired category. */
- retval = g_getenv (category_name);
- if ((retval != NULL) && (retval[0] != '\0'))
- return retval;
-
- /* Last possibility is the LANG environment variable. */
- retval = g_getenv ("LANG");
- if ((retval != NULL) && (retval[0] != '\0'))
- return retval;
-
-#ifdef G_PLATFORM_WIN32
- /* g_win32_getlocale() first checks for LC_ALL, LC_MESSAGES and
- * LANG, which we already did above. Oh well. The main point of
- * calling g_win32_getlocale() is to get the thread's locale as used
- * by Windows and the Microsoft C runtime (in the "English_United
- * States" format) translated into the Unixish format.
- */
- retval = g_win32_getlocale ();
- if ((retval != NULL) && (retval[0] != '\0'))
- return retval;
-#endif
-
- return NULL;
-}
-
-typedef struct _GLanguageNamesCache GLanguageNamesCache;
-
-struct _GLanguageNamesCache {
- gchar *languages;
- gchar **language_names;
-};
-
-static void
-language_names_cache_free (gpointer data)
-{
- GLanguageNamesCache *cache = data;
- g_free (cache->languages);
- g_strfreev (cache->language_names);
- g_free (cache);
-}
-
-/**
- * g_get_language_names:
- *
- * Computes a list of applicable locale names, which can be used to
- * e.g. construct locale-dependent filenames or search paths. The returned
- * list is sorted from most desirable to least desirable and always contains
- * the default locale "C".
- *
- * For example, if LANGUAGE=de:en_US, then the returned list is
- * "de", "en_US", "en", "C".
- *
- * This function consults the environment variables <envar>LANGUAGE</envar>,
- * <envar>LC_ALL</envar>, <envar>LC_MESSAGES</envar> and <envar>LANG</envar>
- * to find the list of locales specified by the user.
- *
- * Return value: a %NULL-terminated array of strings owned by GLib
- * that must not be modified or freed.
- *
- * Since: 2.6
- **/
-G_CONST_RETURN gchar * G_CONST_RETURN *
-g_get_language_names (void)
-{
- static GStaticPrivate cache_private = G_STATIC_PRIVATE_INIT;
- GLanguageNamesCache *cache = g_static_private_get (&cache_private);
- const gchar *value;
-
- if (!cache)
- {
- cache = g_new0 (GLanguageNamesCache, 1);
- g_static_private_set (&cache_private, cache, language_names_cache_free);
- }
-
- value = guess_category_value ("LC_MESSAGES");
- if (!value)
- value = "C";
-
- if (!(cache->languages && strcmp (cache->languages, value) == 0))
- {
- gchar **languages;
- gchar **alist, **a;
- GSList *list, *l;
- gint i;
-
- g_free (cache->languages);
- g_strfreev (cache->language_names);
- cache->languages = g_strdup (value);
-
- alist = g_strsplit (value, ":", 0);
- list = NULL;
- for (a = alist; *a; a++)
- {
- gchar *b = unalias_lang (*a);
- list = g_slist_concat (list, _g_compute_locale_variants (b));
- }
- g_strfreev (alist);
- list = g_slist_append (list, g_strdup ("C"));
-
- cache->language_names = languages = g_new (gchar *, g_slist_length (list) + 1);
- for (l = list, i = 0; l; l = l->next, i++)
- languages[i] = l->data;
- languages[i] = NULL;
-
- g_slist_free (list);
- }
-
- return (G_CONST_RETURN gchar * G_CONST_RETURN *) cache->language_names;
-}
-
-#endif /* NOT_NEEDED_FOR_NAVIT */
-/**
- * g_direct_hash:
- * @v: a #gpointer key
- *
- * Converts a gpointer to a hash value.
- * It can be passed to g_hash_table_new() as the @hash_func parameter,
- * when using pointers as keys in a #GHashTable.
- *
- * Returns: a hash value corresponding to the key.
- */
-guint
-g_direct_hash (gconstpointer v)
-{
- return GPOINTER_TO_UINT (v);
-}
-
-/**
- * g_direct_equal:
- * @v1: a key.
- * @v2: a key to compare with @v1.
- *
- * Compares two #gpointer arguments and returns %TRUE if they are equal.
- * It can be passed to g_hash_table_new() as the @key_equal_func
- * parameter, when using pointers as keys in a #GHashTable.
- *
- * Returns: %TRUE if the two keys match.
- */
-gboolean
-g_direct_equal (gconstpointer v1,
- gconstpointer v2)
-{
- return v1 == v2;
-}
-
-/**
- * g_int_equal:
- * @v1: a pointer to a #gint key.
- * @v2: a pointer to a #gint key to compare with @v1.
- *
- * Compares the two #gint values being pointed to and returns
- * %TRUE if they are equal.
- * It can be passed to g_hash_table_new() as the @key_equal_func
- * parameter, when using pointers to integers as keys in a #GHashTable.
- *
- * Returns: %TRUE if the two keys match.
- */
-gboolean
-g_int_equal (gconstpointer v1,
- gconstpointer v2)
-{
- return *((const gint*) v1) == *((const gint*) v2);
-}
-
-/**
- * g_int_hash:
- * @v: a pointer to a #gint key
- *
- * Converts a pointer to a #gint to a hash value.
- * It can be passed to g_hash_table_new() as the @hash_func parameter,
- * when using pointers to integers values as keys in a #GHashTable.
- *
- * Returns: a hash value corresponding to the key.
- */
-guint
-g_int_hash (gconstpointer v)
-{
- return *(const gint*) v;
-}
-
-#if NOT_NEEDED_FOR_NAVIT
-/**
- * g_nullify_pointer:
- * @nullify_location: the memory address of the pointer.
- *
- * Set the pointer at the specified location to %NULL.
- **/
-void
-g_nullify_pointer (gpointer *nullify_location)
-{
- g_return_if_fail (nullify_location != NULL);
-
- *nullify_location = NULL;
-}
-
-/**
- * g_get_codeset:
- *
- * Get the codeset for the current locale.
- *
- * Return value: a newly allocated string containing the name
- * of the codeset. This string must be freed with g_free().
- **/
-gchar *
-g_get_codeset (void)
-{
- const gchar *charset;
-
- g_get_charset (&charset);
-
- return g_strdup (charset);
-}
-
-/* This is called from g_thread_init(). It's used to
- * initialize some static data in a threadsafe way.
- */
-void
-_g_utils_thread_init (void)
-{
- g_get_language_names ();
-}
-
-#ifdef G_OS_WIN32
-
-/**
- * _glib_get_locale_dir:
- *
- * Return the path to the share\locale or lib\locale subfolder of the
- * GLib installation folder. The path is in the system codepage. We
- * have to use system codepage as bindtextdomain() doesn't have a
- * UTF-8 interface.
- */
-static gchar *
-_glib_get_locale_dir (void)
-{
- gchar *install_dir = NULL, *locale_dir;
- gchar *retval = NULL;
-
- if (glib_dll != NULL)
- install_dir = g_win32_get_package_installation_directory_of_module (glib_dll);
-
- if (install_dir)
- {
- /*
- * Append "/share/locale" or "/lib/locale" depending on whether
- * autoconfigury detected GNU gettext or not.
- */
- const char *p = GLIB_LOCALE_DIR + strlen (GLIB_LOCALE_DIR);
- while (*--p != '/')
- ;
- while (*--p != '/')
- ;
-
- locale_dir = g_build_filename (install_dir, p, NULL);
-
- retval = g_win32_locale_filename_from_utf8 (locale_dir);
-
- g_free (install_dir);
- g_free (locale_dir);
- }
-
- if (retval)
- return retval;
- else
- return g_strdup ("");
-}
-
-#undef GLIB_LOCALE_DIR
-
-#endif /* G_OS_WIN32 */
-
-/**
- * glib_gettext:
- * @str: The string to be translated
- *
- * Returns the translated string from the glib translations.
- * This is an internal function and should only be used by
- * the internals of glib (such as libgio).
- *
- * Returns: the transation of @str to the current locale
- */
-G_CONST_RETURN gchar *
-glib_gettext (const gchar *str)
-{
- static gboolean _glib_gettext_initialized = FALSE;
-
- if (!_glib_gettext_initialized)
- {
-#ifdef G_OS_WIN32
- gchar *tmp = _glib_get_locale_dir ();
- bindtextdomain (GETTEXT_PACKAGE, tmp);
- g_free (tmp);
-#else
- bindtextdomain (GETTEXT_PACKAGE, GLIB_LOCALE_DIR);
-#endif
-# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-# endif
- _glib_gettext_initialized = TRUE;
- }
-
- return g_dgettext (GETTEXT_PACKAGE, str);
-}
-
-#if defined (G_OS_WIN32) && !defined (_WIN64)
-
-/* Binary compatibility versions. Not for newly compiled code. */
-
-#undef g_find_program_in_path
-
-gchar*
-g_find_program_in_path (const gchar *program)
-{
- gchar *utf8_program = g_locale_to_utf8 (program, -1, NULL, NULL, NULL);
- gchar *utf8_retval = g_find_program_in_path_utf8 (utf8_program);
- gchar *retval;
-
- g_free (utf8_program);
- if (utf8_retval == NULL)
- return NULL;
- retval = g_locale_from_utf8 (utf8_retval, -1, NULL, NULL, NULL);
- g_free (utf8_retval);
-
- return retval;
-}
-
-#undef g_get_current_dir
-
-gchar*
-g_get_current_dir (void)
-{
- gchar *utf8_dir = g_get_current_dir_utf8 ();
- gchar *dir = g_locale_from_utf8 (utf8_dir, -1, NULL, NULL, NULL);
- g_free (utf8_dir);
- return dir;
-}
-
-#undef g_getenv
-
-G_CONST_RETURN gchar*
-g_getenv (const gchar *variable)
-{
- gchar *utf8_variable = g_locale_to_utf8 (variable, -1, NULL, NULL, NULL);
- const gchar *utf8_value = g_getenv_utf8 (utf8_variable);
- gchar *value;
- GQuark quark;
-
- g_free (utf8_variable);
- if (!utf8_value)
- return NULL;
- value = g_locale_from_utf8 (utf8_value, -1, NULL, NULL, NULL);
- quark = g_quark_from_string (value);
- g_free (value);
-
- return g_quark_to_string (quark);
-}
-
-#undef g_setenv
-
-gboolean
-g_setenv (const gchar *variable,
- const gchar *value,
- gboolean overwrite)
-{
- gchar *utf8_variable = g_locale_to_utf8 (variable, -1, NULL, NULL, NULL);
- gchar *utf8_value = g_locale_to_utf8 (value, -1, NULL, NULL, NULL);
- gboolean retval = g_setenv_utf8 (utf8_variable, utf8_value, overwrite);
-
- g_free (utf8_variable);
- g_free (utf8_value);
-
- return retval;
-}
-
-#undef g_unsetenv
-
-void
-g_unsetenv (const gchar *variable)
-{
- gchar *utf8_variable = g_locale_to_utf8 (variable, -1, NULL, NULL, NULL);
-
- g_unsetenv_utf8 (utf8_variable);
-
- g_free (utf8_variable);
-}
-
-#undef g_get_user_name
-
-G_CONST_RETURN gchar*
-g_get_user_name (void)
-{
- g_get_any_init_locked ();
- return g_user_name_cp;
-}
-
-#undef g_get_real_name
-
-G_CONST_RETURN gchar*
-g_get_real_name (void)
-{
- g_get_any_init_locked ();
- return g_real_name_cp;
-}
-
-#undef g_get_home_dir
-
-G_CONST_RETURN gchar*
-g_get_home_dir (void)
-{
- g_get_any_init_locked ();
- return g_home_dir_cp;
-}
-
-#undef g_get_tmp_dir
-
-G_CONST_RETURN gchar*
-g_get_tmp_dir (void)
-{
- g_get_any_init_locked ();
- return g_tmp_dir_cp;
-}
-
-#endif
-#endif /* NOT_NEEDED_FOR_NAVIT */
-
-#define __G_UTILS_C__
-#include "galiasdef.c"
diff --git a/navit/support/glib/gutils.h b/navit/support/glib/gutils.h
deleted file mode 100755
index e1f382027..000000000
--- a/navit/support/glib/gutils.h
+++ /dev/null
@@ -1,490 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
-#error "Only <glib.h> can be included directly."
-#endif
-
-#ifndef __G_UTILS_H__
-#define __G_UTILS_H__
-
-#include <glib/gtypes.h>
-#include <stdarg.h>
-
-G_BEGIN_DECLS
-
-#ifdef G_OS_WIN32
-
-/* On Win32, the canonical directory separator is the backslash, and
- * the search path separator is the semicolon. Note that also the
- * (forward) slash works as directory separator.
- */
-#define G_DIR_SEPARATOR '\\'
-#define G_DIR_SEPARATOR_S "\\"
-#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
-#define G_SEARCHPATH_SEPARATOR ';'
-#define G_SEARCHPATH_SEPARATOR_S ";"
-
-#else /* !G_OS_WIN32 */
-
-/* Unix */
-
-#define G_DIR_SEPARATOR '/'
-#define G_DIR_SEPARATOR_S "/"
-#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR)
-#define G_SEARCHPATH_SEPARATOR ':'
-#define G_SEARCHPATH_SEPARATOR_S ":"
-
-#endif /* !G_OS_WIN32 */
-
-/* Define G_VA_COPY() to do the right thing for copying va_list variables.
- * glibconfig.h may have already defined G_VA_COPY as va_copy or __va_copy.
- */
-#if !defined (G_VA_COPY)
-# if defined (__GNUC__) && defined (__PPC__) && (defined (_CALL_SYSV) || defined (_WIN32))
-# define G_VA_COPY(ap1, ap2) (*(ap1) = *(ap2))
-# elif defined (G_VA_COPY_AS_ARRAY)
-# define G_VA_COPY(ap1, ap2) g_memmove ((ap1), (ap2), sizeof (va_list))
-# else /* va_list is a pointer */
-# define G_VA_COPY(ap1, ap2) ((ap1) = (ap2))
-# endif /* va_list is a pointer */
-#endif /* !G_VA_COPY */
-
-/* inlining hassle. for compilers that don't allow the `inline' keyword,
- * mostly because of strict ANSI C compliance or dumbness, we try to fall
- * back to either `__inline__' or `__inline'.
- * G_CAN_INLINE is defined in glibconfig.h if the compiler seems to be
- * actually *capable* to do function inlining, in which case inline
- * function bodies do make sense. we also define G_INLINE_FUNC to properly
- * export the function prototypes if no inlining can be performed.
- * inline function bodies have to be special cased with G_CAN_INLINE and a
- * .c file specific macro to allow one compiled instance with extern linkage
- * of the functions by defining G_IMPLEMENT_INLINES and the .c file macro.
- */
-#if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__)
-# undef inline
-# define inline __inline__
-#elif !defined (G_HAVE_INLINE)
-# undef inline
-# if defined (G_HAVE___INLINE__)
-# define inline __inline__
-# elif defined (G_HAVE___INLINE)
-# define inline __inline
-# else /* !inline && !__inline__ && !__inline */
-# define inline /* don't inline, then */
-# endif
-#endif
-#ifdef G_IMPLEMENT_INLINES
-# define G_INLINE_FUNC
-# undef G_CAN_INLINE
-#elif defined (__GNUC__)
-# define G_INLINE_FUNC static __inline __attribute__ ((unused))
-#elif defined (G_CAN_INLINE)
-# define G_INLINE_FUNC static inline
-#else /* can't inline */
-# define G_INLINE_FUNC
-#endif /* !G_INLINE_FUNC */
-
-/* Retrive static string info
- */
-#ifdef G_OS_WIN32
-#define g_get_user_name g_get_user_name_utf8
-#define g_get_real_name g_get_real_name_utf8
-#define g_get_home_dir g_get_home_dir_utf8
-#define g_get_tmp_dir g_get_tmp_dir_utf8
-#endif
-
-G_CONST_RETURN gchar* g_get_user_name (void);
-G_CONST_RETURN gchar* g_get_real_name (void);
-G_CONST_RETURN gchar* g_get_home_dir (void);
-G_CONST_RETURN gchar* g_get_tmp_dir (void);
-G_CONST_RETURN gchar* g_get_host_name (void);
-gchar* g_get_prgname (void);
-void g_set_prgname (const gchar *prgname);
-G_CONST_RETURN gchar* g_get_application_name (void);
-void g_set_application_name (const gchar *application_name);
-
-void g_reload_user_special_dirs_cache (void);
-G_CONST_RETURN gchar* g_get_user_data_dir (void);
-G_CONST_RETURN gchar* g_get_user_config_dir (void);
-G_CONST_RETURN gchar* g_get_user_cache_dir (void);
-G_CONST_RETURN gchar* G_CONST_RETURN * g_get_system_data_dirs (void);
-
-#ifdef G_OS_WIN32
-/* This functions is not part of the public GLib API */
-G_CONST_RETURN gchar* G_CONST_RETURN * g_win32_get_system_data_dirs_for_module (void (*address_of_function)(void));
-#endif
-
-#if defined (G_OS_WIN32) && defined (G_CAN_INLINE) && !defined (__cplusplus)
-/* This function is not part of the public GLib API either. Just call
- * g_get_system_data_dirs() in your code, never mind that that is
- * actually a macro and you will in fact call this inline function.
- */
-static inline G_CONST_RETURN gchar * G_CONST_RETURN *
-_g_win32_get_system_data_dirs (void)
-{
- return g_win32_get_system_data_dirs_for_module ((void (*)(void)) &_g_win32_get_system_data_dirs);
-}
-#define g_get_system_data_dirs _g_win32_get_system_data_dirs
-#endif
-
-G_CONST_RETURN gchar* G_CONST_RETURN * g_get_system_config_dirs (void);
-
-G_CONST_RETURN gchar* G_CONST_RETURN * g_get_language_names (void);
-
-/**
- * GUserDirectory:
- * @G_USER_DIRECTORY_DESKTOP: the user's Desktop directory
- * @G_USER_DIRECTORY_DOCUMENTS: the user's Documents directory
- * @G_USER_DIRECTORY_DOWNLOAD: the user's Downloads directory
- * @G_USER_DIRECTORY_MUSIC: the user's Music directory
- * @G_USER_DIRECTORY_PICTURES: the user's Pictures directory
- * @G_USER_DIRECTORY_PUBLIC_SHARE: the user's shared directory
- * @G_USER_DIRECTORY_TEMPLATES: the user's Templates directory
- * @G_USER_DIRECTORY_VIDEOS: the user's Movies directory
- * @G_USER_N_DIRECTORIES: the number of enum values
- *
- * These are logical ids for special directories which are defined
- * depending on the platform used. You should use g_get_user_special_dir()
- * to retrieve the full path associated to the logical id.
- *
- * The #GUserDirectory enumeration can be extended at later date. Not
- * every platform has a directory for every logical id in this
- * enumeration.
- *
- * Since: 2.14
- */
-typedef enum {
- G_USER_DIRECTORY_DESKTOP,
- G_USER_DIRECTORY_DOCUMENTS,
- G_USER_DIRECTORY_DOWNLOAD,
- G_USER_DIRECTORY_MUSIC,
- G_USER_DIRECTORY_PICTURES,
- G_USER_DIRECTORY_PUBLIC_SHARE,
- G_USER_DIRECTORY_TEMPLATES,
- G_USER_DIRECTORY_VIDEOS,
-
- G_USER_N_DIRECTORIES
-} GUserDirectory;
-
-G_CONST_RETURN gchar* g_get_user_special_dir (GUserDirectory directory);
-
-typedef struct _GDebugKey GDebugKey;
-struct _GDebugKey
-{
- const gchar *key;
- guint value;
-};
-
-/* Miscellaneous utility functions
- */
-guint g_parse_debug_string (const gchar *string,
- const GDebugKey *keys,
- guint nkeys);
-
-gint g_snprintf (gchar *string,
- gulong n,
- gchar const *format,
- ...) G_GNUC_PRINTF (3, 4);
-gint g_vsnprintf (gchar *string,
- gulong n,
- gchar const *format,
- va_list args);
-
-/* Check if a file name is an absolute path */
-gboolean g_path_is_absolute (const gchar *file_name);
-
-/* In case of absolute paths, skip the root part */
-G_CONST_RETURN gchar* g_path_skip_root (const gchar *file_name);
-
-#ifndef G_DISABLE_DEPRECATED
-
-/* These two functions are deprecated and will be removed in the next
- * major release of GLib. Use g_path_get_dirname/g_path_get_basename
- * instead. Whatch out! The string returned by g_path_get_basename
- * must be g_freed, while the string returned by g_basename must not.*/
-G_CONST_RETURN gchar* g_basename (const gchar *file_name);
-#define g_dirname g_path_get_dirname
-
-#endif /* G_DISABLE_DEPRECATED */
-
-#ifdef G_OS_WIN32
-#define g_get_current_dir g_get_current_dir_utf8
-#endif
-
-/* The returned strings are newly allocated with g_malloc() */
-gchar* g_get_current_dir (void);
-gchar* g_path_get_basename (const gchar *file_name) G_GNUC_MALLOC;
-gchar* g_path_get_dirname (const gchar *file_name) G_GNUC_MALLOC;
-
-/* Set the pointer at the specified location to NULL */
-void g_nullify_pointer (gpointer *nullify_location);
-
-/* return the environment string for the variable. The returned memory
- * must not be freed. */
-#ifdef G_OS_WIN32
-#define g_getenv g_getenv_utf8
-#define g_setenv g_setenv_utf8
-#define g_unsetenv g_unsetenv_utf8
-#define g_find_program_in_path g_find_program_in_path_utf8
-#endif
-
-G_CONST_RETURN gchar* g_getenv (const gchar *variable);
-gboolean g_setenv (const gchar *variable,
- const gchar *value,
- gboolean overwrite);
-void g_unsetenv (const gchar *variable);
-gchar** g_listenv (void);
-
-/* private */
-const gchar* _g_getenv_nomalloc (const gchar *variable,
- gchar buffer[1024]);
-
-/* we try to provide a useful equivalent for ATEXIT if it is
- * not defined, but use is actually abandoned. people should
- * use g_atexit() instead.
- */
-typedef void (*GVoidFunc) (void);
-#ifndef ATEXIT
-# define ATEXIT(proc) g_ATEXIT(proc)
-#else
-# define G_NATIVE_ATEXIT
-#endif /* ATEXIT */
-/* we use a GLib function as a replacement for ATEXIT, so
- * the programmer is not required to check the return value
- * (if there is any in the implementation) and doesn't encounter
- * missing include files.
- */
-void g_atexit (GVoidFunc func);
-
-#ifdef G_OS_WIN32
-/* It's a bad idea to wrap atexit() on Windows. If the GLib DLL calls
- * atexit(), the function will be called when the GLib DLL is detached
- * from the program, which is not what the caller wants. The caller
- * wants the function to be called when it *itself* exits (or is
- * detached, in case the caller, too, is a DLL).
- */
-#if (defined(__MINGW_H) && !defined(_STDLIB_H_)) || (defined(_MSC_VER) && !defined(_INC_STDLIB))
-int atexit (void (*)(void));
-#endif
-#define g_atexit(func) atexit(func)
-#endif
-
-/* Look for an executable in PATH, following execvp() rules */
-gchar* g_find_program_in_path (const gchar *program);
-
-/* Bit tests
- */
-G_INLINE_FUNC gint g_bit_nth_lsf (gulong mask,
- gint nth_bit) G_GNUC_CONST;
-G_INLINE_FUNC gint g_bit_nth_msf (gulong mask,
- gint nth_bit) G_GNUC_CONST;
-G_INLINE_FUNC guint g_bit_storage (gulong number) G_GNUC_CONST;
-
-/* Trash Stacks
- * elements need to be >= sizeof (gpointer)
- */
-typedef struct _GTrashStack GTrashStack;
-struct _GTrashStack
-{
- GTrashStack *next;
-};
-
-G_INLINE_FUNC void g_trash_stack_push (GTrashStack **stack_p,
- gpointer data_p);
-G_INLINE_FUNC gpointer g_trash_stack_pop (GTrashStack **stack_p);
-G_INLINE_FUNC gpointer g_trash_stack_peek (GTrashStack **stack_p);
-G_INLINE_FUNC guint g_trash_stack_height (GTrashStack **stack_p);
-
-/* inline function implementations
- */
-#if defined (G_CAN_INLINE) || defined (__G_UTILS_C__)
-G_INLINE_FUNC gint
-g_bit_nth_lsf (gulong mask,
- gint nth_bit)
-{
- if (G_UNLIKELY (nth_bit < -1))
- nth_bit = -1;
- while (nth_bit < ((GLIB_SIZEOF_LONG * 8) - 1))
- {
- nth_bit++;
- if (mask & (1UL << nth_bit))
- return nth_bit;
- }
- return -1;
-}
-G_INLINE_FUNC gint
-g_bit_nth_msf (gulong mask,
- gint nth_bit)
-{
- if (nth_bit < 0 || G_UNLIKELY (nth_bit > GLIB_SIZEOF_LONG * 8))
- nth_bit = GLIB_SIZEOF_LONG * 8;
- while (nth_bit > 0)
- {
- nth_bit--;
- if (mask & (1UL << nth_bit))
- return nth_bit;
- }
- return -1;
-}
-G_INLINE_FUNC guint
-g_bit_storage (gulong number)
-{
-#if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__) && !defined(__ARM_ARCH_4T__)
- return G_LIKELY (number) ?
- ((GLIB_SIZEOF_LONG * 8 - 1) ^ __builtin_clzl(number)) + 1 : 1;
-#else
- register guint n_bits = 0;
-
- do
- {
- n_bits++;
- number >>= 1;
- }
- while (number);
- return n_bits;
-#endif
-}
-G_INLINE_FUNC void
-g_trash_stack_push (GTrashStack **stack_p,
- gpointer data_p)
-{
- GTrashStack *data = (GTrashStack *) data_p;
-
- data->next = *stack_p;
- *stack_p = data;
-}
-G_INLINE_FUNC gpointer
-g_trash_stack_pop (GTrashStack **stack_p)
-{
- GTrashStack *data;
-
- data = *stack_p;
- if (data)
- {
- *stack_p = data->next;
- /* NULLify private pointer here, most platforms store NULL as
- * subsequent 0 bytes
- */
- data->next = NULL;
- }
-
- return data;
-}
-G_INLINE_FUNC gpointer
-g_trash_stack_peek (GTrashStack **stack_p)
-{
- GTrashStack *data;
-
- data = *stack_p;
-
- return data;
-}
-G_INLINE_FUNC guint
-g_trash_stack_height (GTrashStack **stack_p)
-{
- GTrashStack *data;
- guint i = 0;
-
- for (data = *stack_p; data; data = data->next)
- i++;
-
- return i;
-}
-#endif /* G_CAN_INLINE || __G_UTILS_C__ */
-
-/* Glib version.
- * we prefix variable declarations so they can
- * properly get exported in windows dlls.
- */
-GLIB_VAR const guint glib_major_version;
-GLIB_VAR const guint glib_minor_version;
-GLIB_VAR const guint glib_micro_version;
-GLIB_VAR const guint glib_interface_age;
-GLIB_VAR const guint glib_binary_age;
-
-const gchar * glib_check_version (guint required_major,
- guint required_minor,
- guint required_micro);
-
-#define GLIB_CHECK_VERSION(major,minor,micro) \
- (GLIB_MAJOR_VERSION > (major) || \
- (GLIB_MAJOR_VERSION == (major) && GLIB_MINOR_VERSION > (minor)) || \
- (GLIB_MAJOR_VERSION == (major) && GLIB_MINOR_VERSION == (minor) && \
- GLIB_MICRO_VERSION >= (micro)))
-
-G_END_DECLS
-
-#ifndef G_DISABLE_DEPRECATED
-
-/*
- * This macro is deprecated. This DllMain() is too complex. It is
- * recommended to write an explicit minimal DLlMain() that just saves
- * the handle to the DLL and then use that handle instead, for
- * instance passing it to
- * g_win32_get_package_installation_directory_of_module().
- *
- * On Windows, this macro defines a DllMain function that stores the
- * actual DLL name that the code being compiled will be included in.
- * STATIC should be empty or 'static'. DLL_NAME is the name of the
- * (pointer to the) char array where the DLL name will be stored. If
- * this is used, you must also include <windows.h>. If you need a more complex
- * DLL entry point function, you cannot use this.
- *
- * On non-Windows platforms, expands to nothing.
- */
-
-#ifndef G_PLATFORM_WIN32
-# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name)
-#else
-# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name) \
-static char *dll_name; \
- \
-BOOL WINAPI \
-DllMain (HINSTANCE hinstDLL, \
- DWORD fdwReason, \
- LPVOID lpvReserved) \
-{ \
- wchar_t wcbfr[1000]; \
- char *tem; \
- switch (fdwReason) \
- { \
- case DLL_PROCESS_ATTACH: \
- GetModuleFileNameW ((HMODULE) hinstDLL, wcbfr, G_N_ELEMENTS (wcbfr)); \
- tem = g_utf16_to_utf8 (wcbfr, -1, NULL, NULL, NULL); \
- dll_name = g_path_get_basename (tem); \
- g_free (tem); \
- break; \
- } \
- \
- return TRUE; \
-}
-
-#endif /* !G_DISABLE_DEPRECATED */
-
-#endif /* G_PLATFORM_WIN32 */
-
-#endif /* __G_UTILS_H__ */
diff --git a/navit/support/libc/CMakeLists.txt b/navit/support/libc/CMakeLists.txt
deleted file mode 100644
index 9a91d41b6..000000000
--- a/navit/support/libc/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-supportlib_add_library(support_libc libc.c libc_init.c unlink.c rename.c time.c open.c abort.c mkdir.c lseek.c stat.c close.c chsize.c read.c write.c strcasecmp.c localtime.c gmtime.c mktime.c timeutil.c calloc.c bsearch.c)
diff --git a/navit/support/libc/_mingw.h b/navit/support/libc/_mingw.h
deleted file mode 100644
index 977334d1a..000000000
--- a/navit/support/libc/_mingw.h
+++ /dev/null
@@ -1,304 +0,0 @@
-#ifndef __MINGW_H
-/*
- * _mingw.h
- *
- * Mingw specific macros included by ALL include files.
- *
- * This file is part of the Mingw32 package.
- *
- * Contributors:
- * Created by Mumit Khan <khan@xraylith.wisc.edu>
- *
- * THIS SOFTWARE IS NOT COPYRIGHTED
- *
- * This source code is offered for use in the public domain. You may
- * use, modify or distribute it freely.
- *
- * This code is distributed in the hope that it will be useful but
- * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- * DISCLAIMED. This includes but is not limited to warranties of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- */
-#define __MINGW_H
-
-#define __MINGW32_VERSION 3.16
-#define __MINGW32_MAJOR_VERSION 3
-#define __MINGW32_MINOR_VERSION 16
-#define __MINGW32_PATCHLEVEL 0
-
-#if __GNUC__ >= 3
-#pragma GCC system_header
-#endif
-
-/* These are defined by the user (or the compiler)
- to specify how identifiers are imported from a DLL.
-
- __DECLSPEC_SUPPORTED Defined if dllimport attribute is supported.
- __MINGW_IMPORT The attribute definition to specify imported
- variables/functions.
- _CRTIMP As above. For MS compatibility.
- __MINGW32_VERSION Runtime version.
- __MINGW32_MAJOR_VERSION Runtime major version.
- __MINGW32_MINOR_VERSION Runtime minor version.
- __MINGW32_BUILD_DATE Runtime build date.
-
- Macros to enable MinGW features which deviate from standard MSVC
- compatible behaviour; these may be specified directly in user code,
- activated implicitly, (e.g. by specifying _POSIX_C_SOURCE or such),
- or by inclusion in __MINGW_FEATURES__:
-
- __USE_MINGW_ANSI_STDIO Select a more ANSI C99 compatible
- implementation of printf() and friends.
-
- Other macros:
-
- __int64 define to be long long. Using a typedef
- doesn't work for "unsigned __int64"
-
- All headers should include this first, and then use __DECLSPEC_SUPPORTED
- to choose between the old ``__imp__name'' style or __MINGW_IMPORT
- style declarations. */
-
-
-/* Manifest definitions identifying the flag bits, controlling activation
- * of MinGW features, as specified by the user in __MINGW_FEATURES__.
- */
-#define __MINGW_ANSI_STDIO__ 0x0000000000000001ULL
-/*
- * The following three are not yet formally supported; they are
- * included here, to document anticipated future usage.
- */
-#define __MINGW_LC_EXTENSIONS__ 0x0000000000000050ULL
-#define __MINGW_LC_MESSAGES__ 0x0000000000000010ULL
-#define __MINGW_LC_ENVVARS__ 0x0000000000000040ULL
-
-/* Try to avoid problems with outdated checks for GCC __attribute__ support. */
-#undef __attribute__
-
-#if defined (__PCC__)
-# undef __DECLSPEC_SUPPORTED
-# ifndef __MINGW_IMPORT
-# define __MINGW_IMPORT extern
-# endif
-# ifndef _CRTIMP
-# define _CRTIMP
-# endif
-# ifndef __cdecl
-# define __cdecl _Pragma("cdecl")
-# endif
-# ifndef __stdcall
-# define __stdcall _Pragma("stdcall")
-# endif
-# ifndef __int64
-# define __int64 long long
-# endif
-# ifndef __int32
-# define __int32 long
-# endif
-# ifndef __int16
-# define __int16 short
-# endif
-# ifndef __int8
-# define __int8 char
-# endif
-# ifndef __small
-# define __small char
-# endif
-# ifndef __hyper
-# define __hyper long long
-# endif
-# ifndef __volatile__
-# define __volatile__ volatile
-# endif
-# ifndef __restrict__
-# define __restrict__ restrict
-# endif
-# define NONAMELESSUNION
-#elif defined(__GNUC__)
-# ifdef __declspec
-# ifndef __MINGW_IMPORT
- /* Note the extern. This is needed to work around GCC's
- limitations in handling dllimport attribute. */
-# define __MINGW_IMPORT extern __attribute__ ((__dllimport__))
-# endif
-# ifndef _CRTIMP
-# ifdef __USE_CRTIMP
-# define _CRTIMP __attribute__ ((dllimport))
-# else
-# define _CRTIMP
-# endif
-# endif
-# define __DECLSPEC_SUPPORTED
-# else /* __declspec */
-# undef __DECLSPEC_SUPPORTED
-# undef __MINGW_IMPORT
-# ifndef _CRTIMP
-# define _CRTIMP
-# endif
-# endif /* __declspec */
-/*
- * The next two defines can cause problems if user code adds the
- * __cdecl attribute like so:
- * void __attribute__ ((__cdecl)) foo(void);
- */
-# ifndef __cdecl
-# define __cdecl __attribute__ ((__cdecl__))
-# endif
-# ifndef __stdcall
-# define __stdcall __attribute__ ((__stdcall__))
-# endif
-# ifndef __int64
-# define __int64 long long
-# endif
-# ifndef __int32
-# define __int32 long
-# endif
-# ifndef __int16
-# define __int16 short
-# endif
-# ifndef __int8
-# define __int8 char
-# endif
-# ifndef __small
-# define __small char
-# endif
-# ifndef __hyper
-# define __hyper long long
-# endif
-#else /* ! __GNUC__ && ! __PCC__ */
-# ifndef __MINGW_IMPORT
-# define __MINGW_IMPORT __declspec(dllimport)
-# endif
-# ifndef _CRTIMP
-# define _CRTIMP __declspec(dllimport)
-# endif
-# define __DECLSPEC_SUPPORTED
-# define __attribute__(x) /* nothing */
-#endif
-
-#if defined (__GNUC__) && defined (__GNUC_MINOR__)
-#define __MINGW_GNUC_PREREQ(major, minor) \
- (__GNUC__ > (major) \
- || (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
-#else
-#define __MINGW_GNUC_PREREQ(major, minor) 0
-#endif
-
-#ifdef __cplusplus
-# define __CRT_INLINE inline
-#else
-# if __GNUC_STDC_INLINE__
-# define __CRT_INLINE extern inline __attribute__((__gnu_inline__))
-# else
-# ifdef __COREDLL__
- /* There isn't any out-of-line version of most of
- these functions in coredll.dll, so we need this for -O0,
- or for -fno-inline. This is still problematic if the user
- tries t o take the address of these functions. We will slowly
- add out-of-line copies as those cases are found.
- Note: We can't use static inline here, as most of these functions
- will be declared elsew here with external linkage, and gcc will
- barf on that. */
-# define __CRT_INLINE extern __inline__ __attribute__((__always_inline__))
-# else
-# define __CRT_INLINE
-# endif
-# endif
-#endif
-
-#ifdef __cplusplus
-# define __UNUSED_PARAM(x)
-#else
-# ifdef __GNUC__
-# define __UNUSED_PARAM(x) x __attribute__ ((__unused__))
-# else
-# define __UNUSED_PARAM(x) x
-# endif
-#endif
-
-#ifdef __GNUC__
-#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
-#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
-#else
-#define __MINGW_ATTRIB_NORETURN
-#define __MINGW_ATTRIB_CONST
-#endif
-
-#if __MINGW_GNUC_PREREQ (3, 0)
-#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
-#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
-#else
-#define __MINGW_ATTRIB_MALLOC
-#define __MINGW_ATTRIB_PURE
-#endif
-
-/* Attribute `nonnull' was valid as of gcc 3.3. We don't use GCC's
- variadiac macro facility, because variadic macros cause syntax
- errors with --traditional-cpp. */
-#if __MINGW_GNUC_PREREQ (3, 3)
-#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
-#else
-#define __MINGW_ATTRIB_NONNULL(arg)
-#endif /* GNUC >= 3.3 */
-
-#if defined(UNDER_CE) && defined(__arm__)
-/* ARM Windows CE is not underscored. */
-# define __U(SYM) _ ## SYM
-# define __IMP(S) __imp_ ## S
-#elif defined(UNDER_CE) && defined(i386)
-/* i386 Windows CE versions are underscored. */
-# define __U(SYM) SYM
-# define __IMP(S) _imp__ ## S
-#else
-/* Desktop i386 Windows versions are underscored. */
-# define __U(SYM) SYM
-# define __IMP(S) _imp__ ## S
-#endif
-
-#if __MINGW_GNUC_PREREQ (3, 1)
-#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
-#else
-#define __MINGW_ATTRIB_DEPRECATED
-#endif /* GNUC >= 3.1 */
-
-#if __MINGW_GNUC_PREREQ (3, 3)
-#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
-#else
-#define __MINGW_NOTHROW
-#endif /* GNUC >= 3.3 */
-
-
-/* TODO: Mark (almost) all CRT functions as __MINGW_NOTHROW. This will
-allow GCC to optimize away some EH unwind code, at least in DW2 case. */
-
-#if defined __MSVCRT__ && !defined (__MSVCRT_VERSION__)
-/* High byte is the major version, low byte is the minor. */
-# define __MSVCRT_VERSION__ 0x0600
-#endif
-
-/* Activation of MinGW specific extended features:
- */
-#ifndef __USE_MINGW_ANSI_STDIO
-/*
- * If user didn't specify it explicitly...
- */
-# if defined __STRICT_ANSI__ || defined _ISOC99_SOURCE \
- || defined _POSIX_SOURCE || defined _POSIX_C_SOURCE \
- || defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED \
- || defined _GNU_SOURCE || defined _BSD_SOURCE \
- || defined _SVID_SOURCE
- /*
- * but where any of these source code qualifiers are specified,
- * then assume ANSI I/O standards are preferred over Microsoft's...
- */
-# define __USE_MINGW_ANSI_STDIO 1
-# else
- /*
- * otherwise use whatever __MINGW_FEATURES__ specifies...
- */
-# define __USE_MINGW_ANSI_STDIO (__MINGW_FEATURES__ & __MINGW_ANSI_STDIO__)
-# endif
-#endif
-
-#endif /* __MINGW_H */
diff --git a/navit/support/libc/abort.c b/navit/support/libc/abort.c
deleted file mode 100644
index 11d405c5b..000000000
--- a/navit/support/libc/abort.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <windows.h>
-
-/* Only needed on Windows CE. */
-
-void abort(void)
-{
- TerminateProcess (GetCurrentProcess(), 1);
- while (1); /* Kill 'noreturn function does return' warning. */
-}
diff --git a/navit/support/libc/bsearch.c b/navit/support/libc/bsearch.c
deleted file mode 100644
index 2708688ce..000000000
--- a/navit/support/libc/bsearch.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*-
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* <wince> */
-
-/* bsearch is in both stdlib.h and search.h. We include both
- to catch possible differences. */
-#include <stdlib.h>
-/* #include <search.h> */
-#include <stdint.h>
-
-/* </wince> */
-
-
-/*
- * Perform a binary search.
- *
- * The code below is a bit sneaky. After a comparison fails, we
- * divide the work in half by moving either left or right. If lim
- * is odd, moving left simply involves halving lim: e.g., when lim
- * is 5 we look at item 2, so we change lim to 2 so that we will
- * look at items 0 & 1. If lim is even, the same applies. If lim
- * is odd, moving right again involes halving lim, this time moving
- * the base up one item past p: e.g., when lim is 5 we change base
- * to item 3 and make lim 2 so that we will look at items 3 and 4.
- * If lim is even, however, we have to shrink it by one before
- * halving: e.g., when lim is 4, we still looked at item 2, so we
- * have to make lim 3, then halve, obtaining 1, so that we will only
- * look at item 3.
- */
-void *
-bsearch(key, base0, nmemb, size, compar)
- const void *key;
- const void *base0;
- size_t nmemb;
- size_t size;
- int (*compar)(const void *, const void *);
-{
- const char *base = base0;
- size_t lim;
- int cmp;
- const void *p;
-
- for (lim = nmemb; lim != 0; lim >>= 1) {
- p = base + (lim >> 1) * size;
- cmp = (*compar)(key, p);
- if (cmp == 0)
- return ((void *)(unsigned int *)p);
- if (cmp > 0) { /* key > p: move right */
- base = (const char *)p + size;
- lim--;
- } /* else move left */
- }
- return (NULL);
-}
diff --git a/navit/support/libc/calloc.c b/navit/support/libc/calloc.c
deleted file mode 100644
index 147ea73a4..000000000
--- a/navit/support/libc/calloc.c
+++ /dev/null
@@ -1,8 +0,0 @@
-void *
-calloc(int nelem, int size)
-{
- void *ret=malloc(nelem*size);
- if (ret)
- memset(ret, 0, nelem*size);
- return ret;
-}
diff --git a/navit/support/libc/chsize.c b/navit/support/libc/chsize.c
deleted file mode 100644
index 778949a46..000000000
--- a/navit/support/libc/chsize.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * chsize.c: _chsize and chsize implementations for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public
- * Domain. This file is a part of the mingw32ce package. No
- * warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> 24 Jun 2007
- *
- */
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-int
-_chsize (int fd, long size)
-{
- DWORD cur;
- DWORD new;
- HANDLE h;
- BOOL ret;
-
- h = (HANDLE) fd;
- if (h == INVALID_HANDLE_VALUE)
- {
- SetLastError (ERROR_INVALID_PARAMETER);
- return -1;
- }
-
- cur = SetFilePointer (h, 0, NULL, FILE_CURRENT);
- if (cur == 0xffffffff)
- return -1;
-
- /* Move to where we want it. */
- new = SetFilePointer (h, size, NULL, FILE_BEGIN);
- if (new == 0xffffffff)
- return -1;
-
- /* And commit it as eof, effectivelly growing or shrinking. */
- ret = SetEndOfFile (h);
-
- SetFilePointer (h, cur, NULL, FILE_BEGIN);
-
- return ret ? 0 : -1;
-}
-
-int
-chsize (int fd, long size)
-{
- return _chsize (fd, size);
-}
diff --git a/navit/support/libc/close.c b/navit/support/libc/close.c
deleted file mode 100644
index 3b04734ce..000000000
--- a/navit/support/libc/close.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * close.c: close implementation for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-
-#include <windows.h>
-#include <unistd.h>
-
-int
-_close (int fildes)
-{
- if (CloseHandle ((HANDLE) fildes))
- return 0;
- return -1;
-}
-
-int
-close (int fildes)
-{
- return _close (fildes);
-}
diff --git a/navit/support/libc/errno.h b/navit/support/libc/errno.h
deleted file mode 100644
index 9b7104e89..000000000
--- a/navit/support/libc/errno.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * errno.h
- * included from mingw32ce/../errno.h
- */
-
-#ifndef _ERRNO_2_H_
-#define _ERRNO_2_H_
-
-#ifndef RC_INVOKED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int errno;
-int* _errno(void);
-char *strerror(int num);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* Not RC_INVOKED */
-
-
-#define EPERM 1 /* Operation not permitted */
-#define ENOFILE 2 /* No such file or directory */
-#define ENOENT 2
-#define ESRCH 3 /* No such process */
-#define EINTR 4 /* Interrupted function call */
-#define EIO 5 /* Input/output error */
-#define ENXIO 6 /* No such device or address */
-#define E2BIG 7 /* Arg list too long */
-#define ENOEXEC 8 /* Exec format error */
-#define EBADF 9 /* Bad file descriptor */
-#define ECHILD 10 /* No child processes */
-#define EAGAIN 11 /* Resource temporarily unavailable */
-#define ENOMEM 12 /* Not enough space */
-#define EACCES 13 /* Permission denied */
-#define EFAULT 14 /* Bad address */
-/* 15 - Unknown Error */
-#define EBUSY 16 /* strerror reports "Resource device" */
-#define EEXIST 17 /* File exists */
-#define EXDEV 18 /* Improper link (cross-device link?) */
-#define ENODEV 19 /* No such device */
-#define ENOTDIR 20 /* Not a directory */
-#define EISDIR 21 /* Is a directory */
-#define EINVAL 22 /* Invalid argument */
-#define ENFILE 23 /* Too many open files in system */
-#define EMFILE 24 /* Too many open files */
-#define ENOTTY 25 /* Inappropriate I/O control operation */
-/* 26 - Unknown Error */
-#define EFBIG 27 /* File too large */
-#define ENOSPC 28 /* No space left on device */
-#define ESPIPE 29 /* Invalid seek (seek on a pipe?) */
-#define EROFS 30 /* Read-only file system */
-#define EMLINK 31 /* Too many links */
-#define EPIPE 32 /* Broken pipe */
-#define EDOM 33 /* Domain error (math functions) */
-#define ERANGE 34 /* Result too large (possibly too small) */
-/* 35 - Unknown Error */
-#define EDEADLOCK 36 /* Resource deadlock avoided (non-Cyg) */
-#define EDEADLK 36
-/* 37 - Unknown Error */
-#define ENAMETOOLONG 38 /* Filename too long (91 in Cyg?) */
-#define ENOLCK 39 /* No locks available (46 in Cyg?) */
-#define ENOSYS 40 /* Function not implemented (88 in Cyg?) */
-#define ENOTEMPTY 41 /* Directory not empty (90 in Cyg?) */
-#define EILSEQ 42 /* Illegal byte sequence */
-
-#endif /* Not _ERRNO_2_H_ */
-
diff --git a/navit/support/libc/fcntl.h b/navit/support/libc/fcntl.h
deleted file mode 100644
index 9bff9352a..000000000
--- a/navit/support/libc/fcntl.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * fcntl.h
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Access constants for _open. Note that the permissions constants are
- * in sys/stat.h (ick).
- *
- */
-#ifndef _FCNTL_H_
-#define _FCNTL_H_
-
-/* All the headers include this file. */
-#include <_mingw.h>
-
-/*
- * It appears that fcntl.h should include io.h for compatibility...
- */
-#include <io.h>
-
-/* Specifiy one of these flags to define the access mode. */
-#define _O_RDONLY 0
-#define _O_WRONLY 1
-#define _O_RDWR 2
-
-/* Mask for access mode bits in the _open flags. */
-#define _O_ACCMODE (_O_RDONLY|_O_WRONLY|_O_RDWR)
-
-#define _O_APPEND 0x0008 /* Writes will add to the end of the file. */
-
-#define _O_RANDOM 0x0010
-#define _O_SEQUENTIAL 0x0020
-#define _O_TEMPORARY 0x0040 /* Make the file dissappear after closing.
- * WARNING: Even if not created by _open! */
-#define _O_NOINHERIT 0x0080
-
-#define _O_CREAT 0x0100 /* Create the file if it does not exist. */
-#define _O_TRUNC 0x0200 /* Truncate the file if it does exist. */
-#define _O_EXCL 0x0400 /* Open only if the file does not exist. */
-
-#define _O_SHORT_LIVED 0x1000
-
-/* NOTE: Text is the default even if the given _O_TEXT bit is not on. */
-#define _O_TEXT 0x4000 /* CR-LF in file becomes LF in memory. */
-#define _O_BINARY 0x8000 /* Input and output is not translated. */
-#define _O_RAW _O_BINARY
-
-#if (__MSVCRT_VERSION__ >= 0x0800)
-#define _O_WTEXT 0x10000
-#define _O_U16TEXT 0x20000
-#define _O_U8TEXT 0x40000
-#endif
-
-#ifndef _NO_OLDNAMES
-
-/* POSIX/Non-ANSI names for increased portability */
-#define O_RDONLY _O_RDONLY
-#define O_WRONLY _O_WRONLY
-#define O_RDWR _O_RDWR
-#define O_ACCMODE _O_ACCMODE
-#define O_APPEND _O_APPEND
-#define O_CREAT _O_CREAT
-#define O_TRUNC _O_TRUNC
-#define O_EXCL _O_EXCL
-#define O_TEXT _O_TEXT
-#define O_BINARY _O_BINARY
-#define O_TEMPORARY _O_TEMPORARY
-#define O_NOINHERIT _O_NOINHERIT
-#define O_SEQUENTIAL _O_SEQUENTIAL
-#define O_RANDOM _O_RANDOM
-
-#endif /* Not _NO_OLDNAMES */
-
-#endif /* Not _FCNTL_H_ */
diff --git a/navit/support/libc/getopt.h b/navit/support/libc/getopt.h
deleted file mode 100644
index 406bbf594..000000000
--- a/navit/support/libc/getopt.h
+++ /dev/null
@@ -1,111 +0,0 @@
-#ifndef __GETOPT_H__
-/*
- * getopt.h
- *
- * $Id: getopt.h,v 1.4 2009/01/04 17:35:36 keithmarshall Exp $
- *
- * Defines constants and function prototypes required to implement
- * the `getopt', `getopt_long' and `getopt_long_only' APIs.
- *
- * This file is part of the MinGW32 package set.
- *
- * Contributed by Keith Marshall <keithmarshall@users.sourceforge.net>
- *
- *
- * THIS SOFTWARE IS NOT COPYRIGHTED
- *
- * This source code is offered for use in the public domain. You may
- * use, modify or distribute it freely.
- *
- * This code is distributed in the hope that it will be useful but
- * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- * DISCLAIMED. This includes but is not limited to warranties of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Revision: 1.4 $
- * $Author: keithmarshall $
- * $Date: 2009/01/04 17:35:36 $
- *
- */
-#define __GETOPT_H__
-
-/* All the headers include this file. */
-#include <_mingw.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int optind; /* index of first non-option in argv */
-extern int optopt; /* single option character, as parsed */
-extern int opterr; /* flag to enable built-in diagnostics... */
- /* (user may set to zero, to suppress) */
-
-extern char *optarg; /* pointer to argument of current option */
-
-extern int getopt( int, char * const [], const char * );
-
-#ifdef _BSD_SOURCE
-/*
- * BSD adds the non-standard `optreset' feature, for reinitialisation
- * of `getopt' parsing. We support this feature, for applications which
- * proclaim their BSD heritage, before including this header; however,
- * to maintain portability, developers are advised to avoid it.
- */
-# define optreset __mingw_optreset
-
-extern int optreset;
-#endif
-#ifdef __cplusplus
-}
-#endif
-/*
- * POSIX requires the `getopt' API to be specified in `unistd.h';
- * thus, `unistd.h' includes this header. However, we do not want
- * to expose the `getopt_long' or `getopt_long_only' APIs, when
- * included in this manner. Thus, close the standard __GETOPT_H__
- * declarations block, and open an additional __GETOPT_LONG_H__
- * specific block, only when *not* __UNISTD_H_SOURCED__, in which
- * to declare the extended API.
- */
-#endif /* !defined(__GETOPT_H__) */
-#if !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__)
-#define __GETOPT_LONG_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct option /* specification for a long form option... */
-{
- const char *name; /* option name, without leading hyphens */
- int has_arg; /* does it take an argument? */
- int *flag; /* where to save its status, or NULL */
- int val; /* its associated status value */
-};
-
-enum /* permitted values for its `has_arg' field... */
-{
- no_argument = 0, /* option never takes an argument */
- required_argument, /* option always requires an argument */
- optional_argument /* option may take an argument */
-};
-
-extern int getopt_long( int, char * const [], const char *, const struct option *, int * );
-extern int getopt_long_only( int, char * const [], const char *, const struct option *, int * );
-/*
- * Previous MinGW implementation had...
- */
-#ifndef HAVE_DECL_GETOPT
-/*
- * ...for the long form API only; keep this for compatibility.
- */
-# define HAVE_DECL_GETOPT 1
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__) */
-/* $RCSfile: getopt.h,v $Revision: 1.4 $: end of file */
diff --git a/navit/support/libc/gmtime.c b/navit/support/libc/gmtime.c
deleted file mode 100644
index aa33e0906..000000000
--- a/navit/support/libc/gmtime.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * gmtime.c: gmtime implementation for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-
-#include "timeutil.h"
-
-struct tm *
-gmtime(const time_t *t)
-{
- FILETIME f;
- SYSTEMTIME s;
- static struct tm tms;
-
- __time_t_to_FILETIME (*t, &f);
- FileTimeToSystemTime (&f, &s);
- __SYSTEMTIME_to_tm (&s, &tms);
- return &tms;
-}
diff --git a/navit/support/libc/io.h b/navit/support/libc/io.h
deleted file mode 100644
index 9c3da7c5d..000000000
--- a/navit/support/libc/io.h
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * io.h
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * System level I/O functions and types.
- *
- */
-#ifndef _IO_H_
-#define _IO_H_
-
-/* All the headers include this file. */
-#include <_mingw.h>
-
-/* MSVC's io.h contains the stuff from dir.h, so I will too.
- * NOTE: This also defines off_t, the file offset type, through
- * an inclusion of sys/types.h */
-
-#include <sys/types.h> /* To get time_t. */
-
-/*
- * Attributes of files as returned by _findfirst et al.
- */
-#define _A_NORMAL 0x00000000
-#define _A_RDONLY 0x00000001
-#define _A_HIDDEN 0x00000002
-#define _A_SYSTEM 0x00000004
-#define _A_VOLID 0x00000008
-#define _A_SUBDIR 0x00000010
-#define _A_ARCH 0x00000020
-
-
-#ifndef RC_INVOKED
-
-#ifndef _INTPTR_T_DEFINED
-#define _INTPTR_T_DEFINED
-#ifdef _WIN64
- typedef __int64 intptr_t;
-#else
- typedef int intptr_t;
-#endif
-#endif
-
-#ifndef _FSIZE_T_DEFINED
-typedef unsigned long _fsize_t;
-#define _FSIZE_T_DEFINED
-#endif
-
-/*
- * The maximum length of a file name. You should use GetVolumeInformation
- * instead of this constant. But hey, this works.
- * Also defined in stdio.h.
- */
-#ifndef FILENAME_MAX
-#define FILENAME_MAX (260)
-#endif
-
-/*
- * The following structure is filled in by _findfirst or _findnext when
- * they succeed in finding a match.
- */
-#ifndef _FINDDATA_T_DEFINED
-struct _finddata_t
-{
- unsigned attrib; /* Attributes, see constants above. */
- time_t time_create;
- time_t time_access; /* always midnight local time */
- time_t time_write;
- _fsize_t size;
- char name[FILENAME_MAX]; /* may include spaces. */
-};
-
-#ifndef __COREDLL__
-
-struct _finddatai64_t {
- unsigned attrib;
- time_t time_create;
- time_t time_access;
- time_t time_write;
- __int64 size;
- char name[FILENAME_MAX];
-};
-
-#if __MSVCRT_VERSION__ >= 0x0601
-struct __finddata64_t {
- unsigned attrib;
- __time64_t time_create;
- __time64_t time_access;
- __time64_t time_write;
-/* 8 bytes are returned so it can't be _fsize_t */
- __int64 size;
- char name[FILENAME_MAX];
-};
-#endif
-
-#endif
-
-#define _FINDDATA_T_DEFINED
-#endif /* _FINDDATA_T_DEFINED */
-
-#ifndef _WFINDDATA_T_DEFINED
-struct _wfinddata_t {
- unsigned attrib;
- time_t time_create; /* -1 for FAT file systems */
- time_t time_access; /* -1 for FAT file systems */
- time_t time_write;
- _fsize_t size;
- wchar_t name[FILENAME_MAX]; /* may include spaces. */
-};
-
-#ifndef __COREDLL__
-
-struct _wfinddatai64_t {
- unsigned attrib;
- time_t time_create;
- time_t time_access;
- time_t time_write;
- __int64 size;
- wchar_t name[FILENAME_MAX];
-};
-
-#if __MSVCRT_VERSION__ >= 0x0601
-struct __wfinddata64_t {
- unsigned attrib;
- __time64_t time_create;
- __time64_t time_access;
- __time64_t time_write;
-/* 8 bytes are returned so it can't be _fsize_t */
- __int64 size;
- wchar_t name[FILENAME_MAX];
-};
-#endif
-
-#endif /* __COREDLL__ */
-
-#define _WFINDDATA_T_DEFINED
-#endif
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Functions for searching for files. _findfirst returns -1 if no match
- * is found. Otherwise it returns a handle to be used in _findnext and
- * _findclose calls. _findnext also returns -1 if no match could be found,
- * and 0 if a match was found. Call _findclose when you are finished.
- */
-/* FIXME: Should these all use intptr_t, as per recent MSDN docs? */
-_CRTIMP long __cdecl __MINGW_NOTHROW _findfirst (const char*, struct _finddata_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _findnext (long, struct _finddata_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _findclose (long);
-
-#ifndef UNDER_CE
-_CRTIMP int __cdecl __MINGW_NOTHROW _chdir (const char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW _getcwd (char*, int);
-_CRTIMP char* __cdecl __MINGW_NOTHROW _mktemp (char*);
-#endif
-_CRTIMP int __cdecl __MINGW_NOTHROW _mkdir (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _rmdir (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _chmod (const char*, int);
-
-#ifdef __MSVCRT__
-_CRTIMP __int64 __cdecl __MINGW_NOTHROW _filelengthi64(int);
-_CRTIMP long __cdecl __MINGW_NOTHROW _findfirsti64(const char*, struct _finddatai64_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _findnexti64(long, struct _finddatai64_t*);
-_CRTIMP __int64 __cdecl __MINGW_NOTHROW _lseeki64(int, __int64, int);
-_CRTIMP __int64 __cdecl __MINGW_NOTHROW _telli64(int);
-/* These require newer versions of msvcrt.dll (6.1 or higher). */
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findfirst64(const char*, struct __finddata64_t*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _findnext64(intptr_t, struct __finddata64_t*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
-#ifndef __NO_MINGW_LFS
-__CRT_INLINE off64_t lseek64 (int, off64_t, int);
-__CRT_INLINE off64_t lseek64 (int fd, off64_t offset, int whence)
-{
- return _lseeki64(fd, (__int64) offset, whence);
-}
-#endif
-
-#endif /* __MSVCRT__ */
-
-#ifndef _NO_OLDNAMES
-
-#ifndef _UWIN
-#ifndef UNDER_CE
-_CRTIMP int __cdecl __MINGW_NOTHROW chdir (const char*);
-_CRTIMP char* __cdecl __MINGW_NOTHROW getcwd (char*, int);
-_CRTIMP char* __cdecl __MINGW_NOTHROW mktemp (char*);
-#endif
-_CRTIMP int __cdecl __MINGW_NOTHROW mkdir (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW rmdir (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW chmod (const char*, int);
-#endif /* _UWIN */
-
-#endif /* Not _NO_OLDNAMES */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* Not RC_INVOKED */
-
-/* TODO: Maximum number of open handles has not been tested, I just set
- * it the same as FOPEN_MAX. */
-#define HANDLE_MAX FOPEN_MAX
-
-/* Some defines for _access nAccessMode (MS doesn't define them, but
- * it doesn't seem to hurt to add them). */
-#define F_OK 0 /* Check for file existence */
-/* Well maybe it does hurt. On newer versions of MSVCRT, an access mode
- of 1 causes invalid parameter error. */
-#define X_OK 1 /* MS access() doesn't check for execute permission. */
-#define W_OK 2 /* Check for write permission */
-#define R_OK 4 /* Check for read permission */
-
-#ifndef RC_INVOKED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _access (const char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _chsize (int, long);
-_CRTIMP int __cdecl __MINGW_NOTHROW _close (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _commit(int);
-
-/* NOTE: The only significant bit in unPermissions appears to be bit 7 (0x80),
- * the "owner write permission" bit (on FAT). */
-_CRTIMP int __cdecl __MINGW_NOTHROW _creat (const char*, int);
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _dup (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _dup2 (int, int);
-_CRTIMP long __cdecl __MINGW_NOTHROW _filelength (int);
-_CRTIMP long __cdecl __MINGW_NOTHROW _get_osfhandle (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _isatty (int);
-
-/* In a very odd turn of events this function is excluded from those
- * files which define _STREAM_COMPAT. This is required in order to
- * build GNU libio because of a conflict with _eof in streambuf.h
- * line 107. Actually I might just be able to change the name of
- * the enum member in streambuf.h... we'll see. TODO */
-#ifndef _STREAM_COMPAT
-_CRTIMP int __cdecl __MINGW_NOTHROW _eof (int);
-#endif
-
-/* LK_... locking commands defined in sys/locking.h. */
-_CRTIMP int __cdecl __MINGW_NOTHROW _locking (int, int, long);
-
-_CRTIMP long __cdecl __MINGW_NOTHROW _lseek (int, long, int);
-
-/* Optional third argument is unsigned unPermissions. */
-_CRTIMP int __cdecl __MINGW_NOTHROW _open (const char*, int, ...);
-
-#ifndef __COREDLL__
-_CRTIMP int __cdecl __MINGW_NOTHROW _open_osfhandle (long, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _pipe (int *, unsigned int, int);
-#endif /* __COREDLL__ */
-_CRTIMP int __cdecl __MINGW_NOTHROW _read (int, void*, unsigned int);
-#ifndef __COREDLL__
-_CRTIMP int __cdecl __MINGW_NOTHROW _setmode (int, int);
-/* MS puts remove & rename (but not wide versions) in io.h as well
- as in stdio.h. */
-_CRTIMP int __cdecl __MINGW_NOTHROW remove (const char*);
-#endif
-_CRTIMP int __cdecl __MINGW_NOTHROW rename (const char*, const char*);
-#ifndef __COREDLL__
-/* SH_... flags for nShFlags defined in share.h
- * Optional fourth argument is unsigned unPermissions */
-_CRTIMP int __cdecl __MINGW_NOTHROW _sopen (const char*, int, int, ...);
-
-_CRTIMP long __cdecl __MINGW_NOTHROW _tell (int);
-/* Should umask be in sys/stat.h and/or sys/types.h instead? */
-_CRTIMP int __cdecl __MINGW_NOTHROW _umask (int);
-#endif /* __COREDLL__ */
-_CRTIMP int __cdecl __MINGW_NOTHROW _unlink (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _write (int, const void*, unsigned int);
-
-/* Wide character versions. Also declared in wchar.h. */
-/* Not in crtdll.dll */
-#if !defined (_WIO_DEFINED)
-#if defined (__MSVCRT__)
-_CRTIMP int __cdecl __MINGW_NOTHROW _waccess(const wchar_t*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wchmod(const wchar_t*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wcreat(const wchar_t*, int);
-#endif
-#if defined (__MSVCRT__) || defined (__COREDLL__)
-_CRTIMP long __cdecl __MINGW_NOTHROW _wfindfirst(const wchar_t*, struct _wfinddata_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnext(long, struct _wfinddata_t *);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wopen(const wchar_t*, int, ...);
-#endif
-#if defined (__MSVCRT__)
-_CRTIMP int __cdecl __MINGW_NOTHROW _wunlink(const wchar_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wsopen(const wchar_t*, int, int, ...);
-_CRTIMP wchar_t * __cdecl __MINGW_NOTHROW _wmktemp(wchar_t*);
-_CRTIMP long __cdecl __MINGW_NOTHROW _wfindfirsti64(const wchar_t*, struct _wfinddatai64_t*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wfindnexti64(long, struct _wfinddatai64_t*);
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindfirst64(const wchar_t*, struct __wfinddata64_t*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _wfindnext64(intptr_t, struct __wfinddata64_t*);
-#endif
-#endif /* defined (__MSVCRT__) */
-#define _WIO_DEFINED
-#endif /* _WIO_DEFINED */
-
-#ifndef _NO_OLDNAMES
-/*
- * Non-underscored versions of non-ANSI functions to improve portability.
- * These functions live in libmoldname.a.
- */
-
-#ifndef _UWIN
-_CRTIMP int __cdecl __MINGW_NOTHROW access (const char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW chsize (int, long );
-_CRTIMP int __cdecl __MINGW_NOTHROW close (int);
-#ifndef __COREDLL__
-_CRTIMP int __cdecl __MINGW_NOTHROW creat (const char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW dup (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW dup2 (int, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW eof (int);
-_CRTIMP long __cdecl __MINGW_NOTHROW filelength (int);
-#endif /* __COREDLL__ */
-_CRTIMP int __cdecl __MINGW_NOTHROW isatty (int);
-_CRTIMP long __cdecl __MINGW_NOTHROW lseek (int, long, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW open (const char*, int, ...);
-_CRTIMP int __cdecl __MINGW_NOTHROW read (int, void*, unsigned int);
-#ifndef __COREDLL__
-_CRTIMP int __cdecl __MINGW_NOTHROW setmode (int, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW sopen (const char*, int, int, ...);
-_CRTIMP long __cdecl __MINGW_NOTHROW tell (int);
-_CRTIMP int __cdecl __MINGW_NOTHROW umask (int);
-#endif /* __COREDLL__ */
-_CRTIMP int __cdecl __MINGW_NOTHROW unlink (const char*);
-_CRTIMP int __cdecl __MINGW_NOTHROW write (int, const void*, unsigned int);
-#endif /* _UWIN */
-
-#ifdef __USE_MINGW_ACCESS
-/* Old versions of MSVCRT access() just ignored X_OK, while the version
- shipped with Vista, returns an error code. This will restore the
- old behaviour */
-static inline int __mingw_access (const char* __fname, int __mode)
- { return _access (__fname, __mode & ~X_OK); }
-#define access(__f,__m) __mingw_access (__f, __m)
-#endif
-
-/* Wide character versions. Also declared in wchar.h. */
-/* Where do these live? Not in libmoldname.a nor in libmsvcrt.a */
-#if 0
-int waccess(const wchar_t *, int);
-int wchmod(const wchar_t *, int);
-int wcreat(const wchar_t *, int);
-long wfindfirst(wchar_t *, struct _wfinddata_t *);
-int wfindnext(long, struct _wfinddata_t *);
-int wunlink(const wchar_t *);
-int wrename(const wchar_t *, const wchar_t *);
-int wopen(const wchar_t *, int, ...);
-int wsopen(const wchar_t *, int, int, ...);
-wchar_t * wmktemp(wchar_t *);
-#endif
-
-#endif /* Not _NO_OLDNAMES */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* Not RC_INVOKED */
-
-#endif /* _IO_H_ not defined */
diff --git a/navit/support/libc/libc.c b/navit/support/libc/libc.c
deleted file mode 100644
index a71f32994..000000000
--- a/navit/support/libc/libc.c
+++ /dev/null
@@ -1,254 +0,0 @@
-#include "locale.h"
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef PLATFORM_WINDOWS
-#include "windows.h"
-#endif
-
-int errno;
-
-#define MAXENV 32
-static char *envnames[MAXENV];
-static char *envvars[MAXENV];
-
-static void cleanup_libc(void)
-#ifndef _MSC_VER
-__attribute__((destructor))
-#endif
-;
-static void cleanup_libc(void)
-{
- int i;
- for (i=0; i <MAXENV; i++) {
- if (envnames[i])
- free(envnames[i]);
- if (envvars[i])
- free(envvars[i]);
- }
-}
-
-char *
-getenv(const char *name)
-{
- int i;
- for (i=0; i < MAXENV; i++) {
- if (envnames[i] && !strcmp(envnames[i], name))
- return envvars[i];
- }
- return NULL;
-}
-
-int
-setenv(const char *name, const char *value, int overwrite)
-{
- int i;
- char *val;
- for (i=0; i < MAXENV; i++) {
- if (envnames[i] && !strcmp(envnames[i], name)) {
- if (overwrite) {
- val = g_strdup(value);
- if (!val)
- return -1;
- if (envvars[i])
- free(envvars[i]);
- envvars[i] = val;
- }
- return 0;
- }
- }
- for (i=0; i < MAXENV; i++) {
- if (!envnames[i]) {
- envnames[i] = g_strdup(name);
- envvars[i] = g_strdup(value);
- if (!envnames[i] || !envvars[i]) {
- if (envnames[i])
- free(envnames[i]);
- if (envvars[i])
- free(envvars[i]);
- envnames[i] = NULL;
- envvars[i] = NULL;
- return -1;
- }
- return 0;
- }
- }
- return -1;
-}
-
-int unsetenv(const char *name)
-{
- int i;
- for (i=0; i < MAXENV; i++) {
- if (envnames[i] && !strcmp(envnames[i], name)) {
- free(envnames[i]);
- envnames[i] = NULL;
- if (envvars[i])
- free(envvars[i]);
- envvars[i] = NULL;
- }
- }
- return 0;
-}
-
-char *
-getcwd(char *buf, int size)
-{
- return "dummy";
-}
-
-char *
-getwd(char *buf)
-{
- return "dummy";
-}
-
-char *strtok_r(char *str, const char *delim, char **saveptr)
-{
- return strtok(str, delim);
-}
-
-void
-perror(const char *x)
-{
-}
-
-void
-raise(int signal)
-{
-}
-
-void *
-popen(void)
-{
- return 0;
-}
-
-int pclose(FILE *stream)
-{
- return 0;
-}
-
-void
-rewind(void)
-{
-}
-
-int
-GetThreadLocale(void)
-{
- return 0;
-}
-
-int signal(int signum, int handler)
-{
- return 0;
-}
-
-char * setlocale ( int category, const char * locale )
-{
- return 0;
-}
-
-static struct lconv localedata={"."};
-
-struct lconv *
-localeconv(void)
-{
- return &localedata;
-}
-
-unsigned int
-alarm(unsigned int seconds)
-{
- return 0;
-}
-
-char *
-strerror(int num)
-{
- return "unknown";
-}
-
-#ifdef _MSC_VER
-
-size_t strftime (char *s, size_t maxsize, const char *format, const struct tm *tp)
-{
- return 0;
-}
-
-__int64 _lseeki64(int FileHandle, __int64 Offset, int Origin)
-{
- return 0;
-}
-
-int * _get_osfhandle(int FileHandle)
-{
- return 0;
-}
-
-#ifdef _MSC_VER
-
-HANDLE FindFirstFileA(char* pFileName, LPWIN32_FIND_DATAA pFindFileData)
-{
- HANDLE hRetVal = INVALID_HANDLE_VALUE;
- WIN32_FIND_DATAW wFindFileData;
- wchar_t wFileName[MAX_PATH];
-
- if (MultiByteToWideChar(CP_UTF8, MB_PRECOMPOSED, pFileName, -1, wFileName, MAX_PATH) != 0)
- {
- hRetVal = FindFirstFileW(wFileName, &wFindFileData);
-
- pFindFileData->dwFileAttributes = wFindFileData.dwFileAttributes;
- pFindFileData->ftCreationTime = wFindFileData.ftCreationTime;
- pFindFileData->ftLastAccessTime = wFindFileData.ftLastAccessTime;
- pFindFileData->ftLastWriteTime = wFindFileData.ftLastWriteTime;
- pFindFileData->nFileSizeHigh = wFindFileData.nFileSizeHigh;
- pFindFileData->nFileSizeLow = wFindFileData.nFileSizeLow;
-
- if (WideCharToMultiByte(CP_UTF8, WC_SEPCHARS, wFileName, -1, pFindFileData->cFileName, MAX_PATH, NULL, NULL) == 0)
- {
- hRetVal = INVALID_HANDLE_VALUE;
- }
- }
-
- return hRetVal;
-}
-
-BOOL FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA pFindFileData)
-{
- BOOL boRetVal = FALSE;
- WIN32_FIND_DATAW wFindFileData;
-
- wFindFileData.dwFileAttributes = pFindFileData->dwFileAttributes;
- wFindFileData.ftCreationTime = pFindFileData->ftCreationTime;
- wFindFileData.ftLastAccessTime = pFindFileData->ftLastAccessTime;
- wFindFileData.ftLastWriteTime = pFindFileData->ftLastWriteTime;
- wFindFileData.nFileSizeHigh = pFindFileData->nFileSizeHigh;
- wFindFileData.nFileSizeLow = pFindFileData->nFileSizeLow;
-
- if (MultiByteToWideChar(CP_UTF8, MB_PRECOMPOSED, pFindFileData->cFileName, -1, wFindFileData.cFileName, MAX_PATH) != 0)
- {
- boRetVal = FindNextFileW(hFindFile, &wFindFileData);
-
- pFindFileData->dwFileAttributes = wFindFileData.dwFileAttributes;
- pFindFileData->ftCreationTime = wFindFileData.ftCreationTime;
- pFindFileData->ftLastAccessTime = wFindFileData.ftLastAccessTime;
- pFindFileData->ftLastWriteTime = wFindFileData.ftLastWriteTime;
- pFindFileData->nFileSizeHigh = wFindFileData.nFileSizeHigh;
- pFindFileData->nFileSizeLow = wFindFileData.nFileSizeLow;
-
- if (WideCharToMultiByte(CP_UTF8, WC_SEPCHARS, wFindFileData.cFileName, -1, pFindFileData->cFileName, MAX_PATH, NULL, NULL) == 0)
- {
- boRetVal = FALSE;
- }
- }
-
- return boRetVal;
-}
-
-#endif
-
-#endif
diff --git a/navit/support/libc/libc.h b/navit/support/libc/libc.h
deleted file mode 100644
index 4125fa735..000000000
--- a/navit/support/libc/libc.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef _SUPPORT_LIBC_H
-#define _SUPPORT_LIBC_H 1
-
-
-void *popen(const char *command, const char *type);
-
-int pclose(void *stream);
-
-char* getenv (const char*);
-
-int setenv(const char *name, const char *value, int overwrite);
-
-void raise(int signal);
-
-char * setlocale ( int category, const char * locale );
-
-struct lconv *localeconv(void);
-
-int signal(int signum, void *handler);
-
-#ifdef _MSC_VER
-
-#define GetWindowLongPtr GetWindowLong
-#define SetWindowLongPtr SetWindowLong
-
-#define DWLP_MSGRESULT 0
-#define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT)
-#define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC)
-
-struct tm *localtime (const time_t *t);
-
-size_t strftime (char *s, size_t maxsize, const char *format, const struct tm *tp);
-
-#define mkdir _mkdir
-#define open _open
-#define close _close
-#define read _read
-#define write _write
-#define lseek _lseek
-#define vsnprintf _vsnprintf
-
-#else
-
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#endif
-
-
-#endif
diff --git a/navit/support/libc/libc_init.c b/navit/support/libc/libc_init.c
deleted file mode 100644
index 32be387da..000000000
--- a/navit/support/libc/libc_init.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "plugin.h"
-
-void
-plugin_init(void)
-{
-}
diff --git a/navit/support/libc/locale.h b/navit/support/libc/locale.h
deleted file mode 100644
index 320c3ac2d..000000000
--- a/navit/support/libc/locale.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef _LOCALE_H
-#define _LOCALE_H 1
-
-#ifndef SUBLANG_BENGALI_BANGLADESH
-#define SUBLANG_BENGALI_BANGLADESH 0x02
-#endif
-#ifndef SUBLANG_PUNJABI_PAKISTAN
-#define SUBLANG_PUNJABI_PAKISTAN 0x02
-#endif
-#ifndef SUBLANG_ROMANIAN_MOLDOVA
-#define SUBLANG_ROMANIAN_MOLDOVA 0x02
-#endif
-struct lconv {
- char *decimal_point;
-};
-
-#define LC_ALL 1
-#define LC_NUMERIC 2
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif
-#endif
diff --git a/navit/support/libc/localtime.c b/navit/support/libc/localtime.c
deleted file mode 100644
index 245b51c5a..000000000
--- a/navit/support/libc/localtime.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * localtime.c: localtime implementation for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-
-#include "timeutil.h"
-
-struct tm *
-localtime(const time_t *timer)
-{
- SYSTEMTIME ss, ls, s;
- FILETIME sf, lf, f;
- long long t, diff;
-
- static struct tm tms;
-
- GetSystemTime (&ss);
- GetLocalTime (&ls);
-
- SystemTimeToFileTime (&ss, &sf);
- SystemTimeToFileTime (&ls, &lf);
-
- diff = __FILETIME_to_ll (&sf) - __FILETIME_to_ll (&lf);
-
- __time_t_to_FILETIME (*timer, &f);
- t = __FILETIME_to_ll (&f) - diff;
- __ll_to_FILETIME (t, &f);
- FileTimeToSystemTime (&f, &s);
- __SYSTEMTIME_to_tm (&s, &tms);
-
- return &tms;
-}
diff --git a/navit/support/libc/lseek.c b/navit/support/libc/lseek.c
deleted file mode 100644
index 4600c0d11..000000000
--- a/navit/support/libc/lseek.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * lseek.c: lseek implementation for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-
-#include <windows.h>
-#include <unistd.h>
-
-long
-_lseek (int fildes, long offset, int whence)
-{
- DWORD mode;
- switch (whence)
- {
- case SEEK_SET:
- mode = FILE_BEGIN;
- break;
- case SEEK_CUR:
- mode = FILE_CURRENT;
- break;
- case SEEK_END:
- mode = FILE_END;
- break;
- default:
- /* Specify an invalid mode so SetFilePointer catches it. */
- mode = (DWORD)-1;
- }
- return (long) SetFilePointer ((HANDLE) fildes, offset, NULL, mode);
-}
-
-long
-lseek (int fildes, long offset, int whence)
-{
- return _lseek (fildes, offset, whence);
-}
diff --git a/navit/support/libc/math.h b/navit/support/libc/math.h
deleted file mode 100644
index e85a89455..000000000
--- a/navit/support/libc/math.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#define M_E 2.7182818284590452354
-#define M_LOG2E 1.4426950408889634074
-#define M_LOG10E 0.43429448190325182765
-#define M_LN2 0.69314718055994530942
-#define M_LN10 2.30258509299404568402
-#define M_PI 3.14159265358979323846
-#define M_PI_2 1.57079632679489661923
-#define M_PI_4 0.78539816339744830962
-#define M_1_PI 0.31830988618379067154
-#define M_2_PI 0.63661977236758134308
-#define M_2_SQRTPI 1.12837916709551257390
-#define M_SQRT2 1.41421356237309504880
-#define M_SQRT1_2 0.70710678118654752440
diff --git a/navit/support/libc/mkdir.c b/navit/support/libc/mkdir.c
deleted file mode 100644
index ae8d21d85..000000000
--- a/navit/support/libc/mkdir.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * mkdir.c: mkdir implementation for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public
- * Domain. This file is a part of the mingw32ce package. No
- * warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> 24 Jun 2007
- *
- */
-
-#include <windows.h>
-#include <io.h>
-
-int
-_mkdir (const char *dirname)
-{
- wchar_t dirnamew[MAX_PATH];
- mbstowcs (dirnamew, dirname, MAX_PATH);
- if (!CreateDirectoryW (dirnamew, NULL))
- return -1;
- return 0;
-}
-
-int
-mkdir (const char *dirname)
-{
- return _mkdir (dirname);
-}
diff --git a/navit/support/libc/mktime.c b/navit/support/libc/mktime.c
deleted file mode 100644
index bd34fbf61..000000000
--- a/navit/support/libc/mktime.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * mktime.c: mktime implementation for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-
-#include "timeutil.h"
-
-time_t
-mktime (struct tm *pt)
-{
- SYSTEMTIME ss, ls, s;
- FILETIME sf, lf, f;
- long long diff;
-
- GetSystemTime (&ss);
- GetLocalTime (&ls);
- SystemTimeToFileTime (&ss, &sf);
- SystemTimeToFileTime (&ls, &lf);
-
- diff = __FILETIME_to_ll (&lf) - __FILETIME_to_ll (&sf);
- diff /= _onesec_in100ns;
-
- __tm_to_SYSTEMTIME (pt, &s);
- SystemTimeToFileTime (&s, &f);
- return __FILETIME_to_time_t (&f) - (time_t)diff;
-}
diff --git a/navit/support/libc/open.c b/navit/support/libc/open.c
deleted file mode 100644
index 210281706..000000000
--- a/navit/support/libc/open.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * open.c: open, _open and_wopen implementations for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-
-#include <windows.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-static int
-vwopen (const wchar_t *wpath, int oflag, va_list ap)
-{
- DWORD fileaccess;
- DWORD fileshare;
- DWORD filecreate;
- DWORD fileattrib;
- HANDLE hnd;
-
- switch (oflag & (O_RDONLY | O_WRONLY | O_RDWR))
- {
- case O_RDONLY:
- fileaccess = GENERIC_READ;
- break;
- case O_WRONLY:
- fileaccess = GENERIC_WRITE;
- break;
- case O_RDWR:
- fileaccess = GENERIC_READ | GENERIC_WRITE;
- break;
- default:
- return -1;
- }
-
- switch (oflag & (O_CREAT | O_EXCL | O_TRUNC))
- {
- case 0:
- case O_EXCL: /* ignore EXCL w/o CREAT */
- filecreate = OPEN_EXISTING;
- break;
- case O_CREAT:
- filecreate = OPEN_ALWAYS;
- break;
- case O_CREAT | O_EXCL:
- case O_CREAT | O_TRUNC | O_EXCL:
- filecreate = CREATE_NEW;
- break;
-
- case O_TRUNC:
- case O_TRUNC | O_EXCL: /* ignore EXCL w/o CREAT */
- filecreate = TRUNCATE_EXISTING;
- break;
- case O_CREAT | O_TRUNC:
- filecreate = CREATE_ALWAYS;
- break;
- default:
- /* this can't happen ... all cases are covered */
- return -1;
- }
-
- fileshare = 0;
- if (oflag & O_CREAT)
- {
- int pmode = va_arg (ap, int);
- if ((pmode & S_IREAD) == S_IREAD)
- fileshare |= FILE_SHARE_READ;
- if ((pmode & S_IWRITE) == S_IWRITE)
- fileshare |= FILE_SHARE_WRITE;
- }
-
- fileattrib = FILE_ATTRIBUTE_NORMAL;
-
- hnd = CreateFileW (wpath, fileaccess, fileshare, NULL, filecreate,
- fileattrib, NULL);
- if (hnd == INVALID_HANDLE_VALUE)
- return -1;
-
- if (oflag & O_APPEND)
- SetFilePointer (hnd, 0, NULL, FILE_END);
-
- return (int) hnd;
-}
-
-static int
-vopen (const char *path, int oflag, va_list ap)
-{
- wchar_t wpath[MAX_PATH];
-
- size_t path_len = strlen (path);
- if (path_len >= MAX_PATH)
- return -1;
-
- mbstowcs (wpath, path, path_len + 1);
-
- return vwopen (wpath, oflag, ap);
-}
-
-int
-_open (const char *path, int oflag, ...)
-{
- va_list ap;
- int ret;
- va_start (ap, oflag);
- ret = vopen (path, oflag, ap);
- va_end (ap);
- return ret;
-}
-
-int
-open (const char *path, int oflag, ...)
-{
- va_list ap;
- int ret;
- va_start (ap, oflag);
- ret = vopen (path, oflag, ap);
- va_end (ap);
- return ret;
-}
-
-int
-_wopen (const wchar_t *path, int oflag, ...)
-{
- va_list ap;
- int ret;
- va_start (ap, oflag);
- ret = vwopen (path, oflag, ap);
- va_end (ap);
- return ret;
-}
diff --git a/navit/support/libc/process.h b/navit/support/libc/process.h
deleted file mode 100644
index ecd67a555..000000000
--- a/navit/support/libc/process.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * process.h
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Function calls for spawning child processes.
- *
- */
-
-#ifndef _PROCESS_H_
-#define _PROCESS_H_
-#if 0
-
-/* All the headers include this file. */
-#include <_mingw.h>
-
-#include <sys/types.h> /* For _pid_t and pid_t. */
-#include <stdint.h> /* For intptr_t. */
-/*
- * Constants for cwait actions.
- * Obsolete for Win32.
- */
-#define _WAIT_CHILD 0
-#define _WAIT_GRANDCHILD 1
-
-#ifndef _NO_OLDNAMES
-#define WAIT_CHILD _WAIT_CHILD
-#define WAIT_GRANDCHILD _WAIT_GRANDCHILD
-#endif /* Not _NO_OLDNAMES */
-
-/*
- * Mode constants for spawn functions.
- */
-#define _P_WAIT 0
-#define _P_NOWAIT 1
-#define _P_OVERLAY 2
-#define _OLD_P_OVERLAY _P_OVERLAY
-#define _P_NOWAITO 3
-#define _P_DETACH 4
-
-#ifndef _NO_OLDNAMES
-#define P_WAIT _P_WAIT
-#define P_NOWAIT _P_NOWAIT
-#define P_OVERLAY _P_OVERLAY
-#define OLD_P_OVERLAY _OLD_P_OVERLAY
-#define P_NOWAITO _P_NOWAITO
-#define P_DETACH _P_DETACH
-#endif /* Not _NO_OLDNAMES */
-
-
-#ifndef RC_INVOKED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef __COREDLL__
-
-_CRTIMP void __cdecl __MINGW_NOTHROW _cexit(void);
-_CRTIMP void __cdecl __MINGW_NOTHROW _c_exit(void);
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _cwait (int*, _pid_t, int);
-
-_CRTIMP _pid_t __cdecl __MINGW_NOTHROW _getpid(void);
-
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execl (const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execle (const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execlp (const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execlpe (const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execv (const char*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execve (const char*, const char* const*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execvp (const char*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _execvpe (const char*, const char* const*, const char* const*);
-
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnl (int, const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnle (int, const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnlp (int, const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnlpe (int, const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnv (int, const char*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnve (int, const char*, const char* const*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnvp (int, const char*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW _spawnvpe (int, const char*, const char* const*, const char* const*);
-
-#endif /* !__COREDLL__*/
-
-/*
- * The functions _beginthreadex and _endthreadex are not provided by CRTDLL.
- * They are provided by MSVCRT.
- *
- * NOTE: Apparently _endthread calls CloseHandle on the handle of the thread,
- * making for race conditions if you are not careful. Basically you have to
- * make sure that no-one is going to do *anything* with the thread handle
- * after the thread calls _endthread or returns from the thread function.
- *
- * NOTE: No old names for these functions. Use the underscore.
- */
-#if defined (__MSVCRT__) || defined (__CRTDLL__)
-_CRTIMP unsigned long __cdecl __MINGW_NOTHROW
- _beginthread (void (*)(void *), unsigned, void*);
-_CRTIMP void __cdecl __MINGW_NOTHROW _endthread (void);
-#endif
-
-#ifdef __MSVCRT__
-_CRTIMP unsigned long __cdecl __MINGW_NOTHROW
- _beginthreadex (void *, unsigned, unsigned (__stdcall *) (void *),
- void*, unsigned, unsigned*);
-_CRTIMP void __cdecl __MINGW_NOTHROW _endthreadex (unsigned);
-#endif
-
-
-#ifndef _NO_OLDNAMES
-#ifndef __COREDLL__
-/*
- * Functions without the leading underscore, for portability. These functions
- * live in liboldnames.a.
- */
-_CRTIMP int __cdecl __MINGW_NOTHROW cwait (int*, pid_t, int);
-_CRTIMP pid_t __cdecl __MINGW_NOTHROW getpid (void);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execl (const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execle (const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execlp (const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execlpe (const char*, const char*,...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execv (const char*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execve (const char*, const char* const*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execvp (const char*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execvpe (const char*, const char* const*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnl (int, const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnle (int, const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnlp (int, const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnlpe (int, const char*, const char*, ...);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnv (int, const char*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnve (int, const char*, const char* const*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnvp (int, const char*, const char* const*);
-_CRTIMP intptr_t __cdecl __MINGW_NOTHROW spawnvpe (int, const char*, const char* const*, const char* const*);
-#endif /* Not __COREDLL__ */
-
-#endif /* Not _NO_OLDNAMES */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* Not RC_INVOKED */
-#endif
-
-#endif /* _PROCESS_H_ not defined */
diff --git a/navit/support/libc/read.c b/navit/support/libc/read.c
deleted file mode 100644
index 8ce99d8ff..000000000
--- a/navit/support/libc/read.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * read.c: read and _read implementations for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-
-#include <windows.h>
-#include <unistd.h>
-
-int
-_read (int fildes, void *buf, unsigned int bufsize)
-{
- DWORD NumberOfBytesRead;
- if (bufsize > 0x7fffffff)
- bufsize = 0x7fffffff;
- if (!ReadFile ((HANDLE) fildes, buf, bufsize, &NumberOfBytesRead, NULL))
- return -1;
- return (int) NumberOfBytesRead;
-}
-
-int
-read (int fildes, void *buf, unsigned int bufsize)
-{
- return _read (fildes, buf, bufsize);
-}
diff --git a/navit/support/libc/rename.c b/navit/support/libc/rename.c
deleted file mode 100644
index 23ca19630..000000000
--- a/navit/support/libc/rename.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * rename.c: rename implementation for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-
-#include <windows.h>
-
-/* We return an error if the TO file already exists,
- like the Windows NT/9x 'rename' does. */
-
-int
-rename (const char* from, const char* to)
-{
- wchar_t fromw[MAX_PATH + 1];
- wchar_t tow[MAX_PATH + 1];
- mbstowcs (fromw, from, MAX_PATH);
- mbstowcs (tow, to, MAX_PATH);
- if (MoveFileW (fromw, tow))
- return 0;
- return -1;
-}
diff --git a/navit/support/libc/signal.h b/navit/support/libc/signal.h
deleted file mode 100644
index 18b65399b..000000000
--- a/navit/support/libc/signal.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#define SIGFPE 8
-#define SIGSEGV 11
diff --git a/navit/support/libc/stat.c b/navit/support/libc/stat.c
deleted file mode 100644
index 586dcf714..000000000
--- a/navit/support/libc/stat.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * stat.c: _stat, stat and fstat implementations for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> 10 Feb 2007
- *
- */
-
-#include <windows.h>
-#include <time.h>
-#include <fcntl.h>
-#include <io.h>
-#include <sys/stat.h>
-#include <stdio.h>
-#include "debug.h"
-
-#include "timeutil.h"
-
-struct stat_file_info_t
-{
- DWORD dwFileAttributes;
- FILETIME ftLastWriteTime;
- FILETIME ftCreationTime;
- FILETIME ftLastAccessTime;
- DWORD nFileSizeLow;
-};
-
-#define COPY_MEMBER(DEST, SRC, MEMBER) \
- do { \
- (DEST)->MEMBER = (SRC)->MEMBER; \
- } while (0)
-
-#define TO_STAT_FILE_INFO(DEST, SRC) \
- do { \
- COPY_MEMBER (DEST, SRC, dwFileAttributes); \
- COPY_MEMBER (DEST, SRC, ftLastWriteTime); \
- COPY_MEMBER (DEST, SRC, ftCreationTime); \
- COPY_MEMBER (DEST, SRC, ftLastAccessTime); \
- COPY_MEMBER (DEST, SRC, nFileSizeLow); \
- } while (0)
-
-static int
-__stat_by_file_info (struct stat_file_info_t *fi, struct _stat *st, int exec)
-{
- int permission = _S_IREAD;
-
- memset (st, 0, sizeof (*st));
-
- st->st_size = fi->nFileSizeLow;
- st->st_mode = _S_IFREG;
-
- if((fi->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
- st->st_mode = _S_IFDIR | _S_IEXEC;
- else if (exec)
- permission |= _S_IEXEC;
-
- if((fi->dwFileAttributes & FILE_ATTRIBUTE_READONLY) == 0)
- permission |= _S_IWRITE;
-
- st->st_mode |= permission | (permission >> 3) | (permission >> 6);
-
- st->st_nlink = 1; /* always 1? */
- st->st_rdev = 1; /* Where to get drive info? */
- st->st_ino = 0; /* always 0 on Windows */
-
- st->st_mtime = __FILETIME_to_time_t (&fi->ftLastWriteTime);
- st->st_ctime = __FILETIME_to_time_t (&fi->ftCreationTime);
- st->st_atime = __FILETIME_to_time_t (&fi->ftLastAccessTime);
-
- /* Looks like the code below is never triggered.
- Windows CE always only keeps the LastWriteTime, and
- copies it to the CreationTime and LastAccessTime fields. */
- if (st->st_ctime == 0)
- st->st_ctime = st->st_mtime;
- if (st->st_atime == 0)
- {
- /* On XP, at least, the st_atime is always set to the same as
- the st_mtime, except the hour/min/sec == 00:00:00. */
- SYSTEMTIME s;
- FILETIME f = fi->ftLastWriteTime;
- FileTimeToSystemTime (&f, &s);
- s.wHour = 0; s.wMinute = 0;
- s.wSecond = 0; s.wMilliseconds = 0;
- SystemTimeToFileTime (&s, &f);
- st->st_atime = __FILETIME_to_time_t (&f);
- /* st->st_atime = st->st_mtime; */
- }
- return 0;
-}
-
-int
-_fstat (int fd, struct _stat *st)
-{
- BY_HANDLE_FILE_INFORMATION fi;
- struct stat_file_info_t sfi;
-
- if (!GetFileInformationByHandle ((HANDLE) fd, &fi))
- return -1;
- TO_STAT_FILE_INFO (&sfi, &fi);
- return __stat_by_file_info (&sfi, st, 0);
-}
-
-int
-fstat (int fd, struct stat *st)
-{
- return _fstat (fd, (struct _stat *)st);
-}
-
-int
-_stat (const char *path, struct _stat *st)
-{
- WIN32_FIND_DATAW fd;
- HANDLE h;
- int ret;
- struct stat_file_info_t sfi;
- wchar_t pathw[MAX_PATH + 1];
- size_t len;
- int exec;
-
- dbg(lvl_debug,"path=%s\n",path);
- mbstowcs (pathw, path, MAX_PATH);
- dbg(lvl_debug,"wide path=%S\n",pathw);
- if((h = FindFirstFileW (pathw, &fd)) == INVALID_HANDLE_VALUE)
- {
- DWORD dwError = GetLastError ();
- dbg(lvl_error,"no file\n");
- if(dwError == ERROR_NO_MORE_FILES)
- /* Convert error to something more sensible. */
- SetLastError (ERROR_FILE_NOT_FOUND);
- return -1;
- }
-
- TO_STAT_FILE_INFO (&sfi, &fd);
-
- len = strlen (path);
- exec = (len >= 4
- && strcasecmp (path + len - 4, ".exe") == 0);
- ret = __stat_by_file_info (&sfi, st, exec);
- dbg(lvl_debug,"ret=%d\n",ret);
- FindClose (h);
- return ret;
-}
-
-int
-stat (const char *path, struct stat *st)
-{
- return _stat (path, (struct _stat *)st);
-}
diff --git a/navit/support/libc/strcasecmp.c b/navit/support/libc/strcasecmp.c
deleted file mode 100644
index a238e22f2..000000000
--- a/navit/support/libc/strcasecmp.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * strcasecmp.c
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Oldnames from ANSI header string.h
- *
- * Some wrapper functions for those old name functions whose appropriate
- * equivalents are not simply underscore prefixed.
- *
- */
-
-#include <string.h>
-
-int
-strcasecmp (const char *sz1, const char *sz2)
-{
- return _stricmp (sz1, sz2);
-}
-
diff --git a/navit/support/libc/sys/stat.h b/navit/support/libc/sys/stat.h
deleted file mode 100644
index 3bd462714..000000000
--- a/navit/support/libc/sys/stat.h
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * stat.h
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Symbolic constants for opening and creating files, also stat, fstat and
- * chmod functions.
- *
- */
-
-#ifndef _STAT_H_
-#define _STAT_H_
-
-/* All the headers include this file. */
-#include <_mingw.h>
-
-#define __need_size_t
-#define __need_wchar_t
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
-
-#include <sys/types.h>
-
-/*
- * Constants for the stat st_mode member.
- */
-#define _S_IFIFO 0x1000 /* FIFO */
-#define _S_IFCHR 0x2000 /* Character */
-#define _S_IFBLK 0x3000 /* Block: Is this ever set under w32? */
-#define _S_IFDIR 0x4000 /* Directory */
-#define _S_IFREG 0x8000 /* Regular */
-
-#define _S_IFMT 0xF000 /* File type mask */
-
-#define _S_IEXEC 0x0040
-#define _S_IWRITE 0x0080
-#define _S_IREAD 0x0100
-
-#define _S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC)
-#define _S_IXUSR _S_IEXEC
-#define _S_IWUSR _S_IWRITE
-#define _S_IRUSR _S_IREAD
-
-#define _S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
-#define _S_ISFIFO(m) (((m) & _S_IFMT) == _S_IFIFO)
-#define _S_ISCHR(m) (((m) & _S_IFMT) == _S_IFCHR)
-#define _S_ISBLK(m) (((m) & _S_IFMT) == _S_IFBLK)
-#define _S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
-
-#ifndef _NO_OLDNAMES
-
-#define S_IFIFO _S_IFIFO
-#define S_IFCHR _S_IFCHR
-#define S_IFBLK _S_IFBLK
-#define S_IFDIR _S_IFDIR
-#define S_IFREG _S_IFREG
-#define S_IFMT _S_IFMT
-#define S_IEXEC _S_IEXEC
-#define S_IWRITE _S_IWRITE
-#define S_IREAD _S_IREAD
-#define S_IRWXU _S_IRWXU
-#define S_IXUSR _S_IXUSR
-#define S_IWUSR _S_IWUSR
-#define S_IRUSR _S_IRUSR
-
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
-#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
-#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
-#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-
-#endif /* Not _NO_OLDNAMES */
-
-#ifndef RC_INVOKED
-
-#ifndef _STAT_DEFINED
-/*
- * The structure manipulated and returned by stat and fstat.
- *
- * NOTE: If called on a directory the values in the time fields are not only
- * invalid, they will cause localtime et. al. to return NULL. And calling
- * asctime with a NULL pointer causes an Invalid Page Fault. So watch it!
- */
-struct _stat
-{
- _dev_t st_dev; /* Equivalent to drive number 0=A 1=B ... */
- _ino_t st_ino; /* Always zero ? */
- _mode_t st_mode; /* See above constants */
- short st_nlink; /* Number of links. */
- short st_uid; /* User: Maybe significant on NT ? */
- short st_gid; /* Group: Ditto */
- _dev_t st_rdev; /* Seems useless (not even filled in) */
- _off_t st_size; /* File size in bytes */
- time_t st_atime; /* Accessed date (always 00:00 hrs local
- * on FAT) */
- time_t st_mtime; /* Modified time */
- time_t st_ctime; /* Creation time */
-};
-
-#ifndef _NO_OLDNAMES
-/* NOTE: Must be the same as _stat above. */
-struct stat
-{
- dev_t st_dev; /* Equivalent to drive number 0=A 1=B ... */
- ino_t st_ino; /* Always zero ? */
- mode_t st_mode; /* See above constants */
- short st_nlink; /* Number of links. */
- short st_uid; /* User: Maybe significant on NT ? */
- short st_gid; /* Group: Ditto */
- dev_t st_rdev; /* Seems useless (not even filled in) */
- off_t st_size; /* File size in bytes */
- time_t st_atime; /* Accessed date (always 00:00 hrs local
- * on FAT) */
- time_t st_mtime; /* Modified time */
- time_t st_ctime; /* Creation time */
-};
-#endif /* _NO_OLDNAMES */
-
-#if defined (__MSVCRT__)
-struct _stati64 {
- _dev_t st_dev;
- _ino_t st_ino;
- _mode_t st_mode;
- short st_nlink;
- short st_uid;
- short st_gid;
- _dev_t st_rdev;
- __int64 st_size;
- time_t st_atime;
- time_t st_mtime;
- time_t st_ctime;
-};
-#if __MSVCRT_VERSION__ >= 0x0601
-struct __stat64
-{
- _dev_t st_dev;
- _ino_t st_ino;
- _mode_t st_mode;
- short st_nlink;
- short st_uid;
- short st_gid;
- _dev_t st_rdev;
- __int64 st_size;
- __time64_t st_atime;
- __time64_t st_mtime;
- __time64_t st_ctime;
-};
-#endif /* __MSVCRT_VERSION__ */
-#endif /* __MSVCRT__ */
-#define _STAT_DEFINED
-#endif /* _STAT_DEFINED */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_CRTIMP int __cdecl __MINGW_NOTHROW _fstat (int, struct _stat*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _chmod (const char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW _stat (const char*, struct _stat*);
-
-#ifndef _NO_OLDNAMES
-
-/* These functions live in liboldnames.a. */
-_CRTIMP int __cdecl __MINGW_NOTHROW fstat (int, struct stat*);
-_CRTIMP int __cdecl __MINGW_NOTHROW chmod (const char*, int);
-_CRTIMP int __cdecl __MINGW_NOTHROW stat (const char*, struct stat*);
-
-#endif /* Not _NO_OLDNAMES */
-
-#if defined (__MSVCRT__)
-_CRTIMP int __cdecl __MINGW_NOTHROW _fstati64(int, struct _stati64 *);
-_CRTIMP int __cdecl __MINGW_NOTHROW _stati64(const char *, struct _stati64 *);
-/* These require newer versions of msvcrt.dll (6.10 or higher). */
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP int __cdecl __MINGW_NOTHROW _fstat64 (int, struct __stat64*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _stat64 (const char*, struct __stat64*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
-#if !defined ( _WSTAT_DEFINED) /* also declared in wchar.h */
-_CRTIMP int __cdecl __MINGW_NOTHROW _wstat(const wchar_t*, struct _stat*);
-_CRTIMP int __cdecl __MINGW_NOTHROW _wstati64 (const wchar_t*, struct _stati64*);
-#if __MSVCRT_VERSION__ >= 0x0601
-_CRTIMP int __cdecl __MINGW_NOTHROW _wstat64 (const wchar_t*, struct __stat64*);
-#endif /* __MSVCRT_VERSION__ >= 0x0601 */
-#define _WSTAT_DEFINED
-#endif /* _WSTAT_DEFIND */
-#endif /* __MSVCRT__ */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* Not RC_INVOKED */
-
-#endif /* Not _STAT_H_ */
diff --git a/navit/support/libc/sys/time.h b/navit/support/libc/sys/time.h
deleted file mode 100644
index 871da3f1b..000000000
--- a/navit/support/libc/sys/time.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef _SYS_TIME_H_
-#define _SYS_TIME_H_
-#include <time.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef _TIMEVAL_DEFINED /* also in winsock[2].h */
-#define _TIMEVAL_DEFINED
-struct timeval {
- long tv_sec;
- long tv_usec;
-};
-#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
-#define timercmp(tvp, uvp, cmp) \
- (((tvp)->tv_sec != (uvp)->tv_sec) ? \
- ((tvp)->tv_sec cmp (uvp)->tv_sec) : \
- ((tvp)->tv_usec cmp (uvp)->tv_usec))
-#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
-#endif /* _TIMEVAL_DEFINED */
-
-/* Provided for compatibility with code that assumes that
- the presence of gettimeofday function implies a definition
- of struct timezone. */
-#ifndef _TIMEZONE_DEFINED
-struct timezone
-{
- int tz_minuteswest; /* of Greenwich */
- int tz_dsttime; /* type of dst correction to apply */
-};
-#define _TIMEZONE_DEFINED
-#endif
-
-/*
- Implementation as per:
- The Open Group Base Specifications, Issue 6
- IEEE Std 1003.1, 2004 Edition
-
- The timezone pointer arg is ignored. Errors are ignored.
-*/
-
-#if 0
-#define __restrict__
-int __cdecl __MINGW_NOTHROW gettimeofday(struct timeval *__restrict__,
- void *__restrict__ /* tzp (unused) */);
-#else
-int gettimeofday(struct timeval *, void *);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _SYS_TIME_H_ */
diff --git a/navit/support/libc/sys/types.h b/navit/support/libc/sys/types.h
deleted file mode 100644
index ed25e5270..000000000
--- a/navit/support/libc/sys/types.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * types.h
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * The definition of constants, data types and global variables.
- *
- */
-
-#ifndef _TYPES_H_
-#define _TYPES_H_
-
-/* All the headers include this file. */
-#include <_mingw.h>
-
-#define __need_wchar_t
-#define __need_size_t
-#define __need_ptrdiff_t
-#ifndef RC_INVOKED
-#include <stddef.h>
-#endif /* Not RC_INVOKED */
-
-#ifndef RC_INVOKED
-
-#ifndef _TIME_T_DEFINED
-typedef long time_t;
-#define _TIME_T_DEFINED
-#endif
-
-#ifndef _TIME64_T_DEFINED
-typedef __int64 __time64_t;
-#define _TIME64_T_DEFINED
-#endif
-
-#ifndef _OFF_T_
-#define _OFF_T_
-typedef long _off_t;
-
-#ifndef _NO_OLDNAMES
-typedef _off_t off_t;
-#endif
-#endif /* Not _OFF_T_ */
-
-
-#ifndef _DEV_T_
-#define _DEV_T_
-#ifdef __MSVCRT__
-typedef unsigned int _dev_t;
-#else
-typedef short _dev_t;
-#endif
-
-#ifndef _NO_OLDNAMES
-typedef _dev_t dev_t;
-#endif
-#endif /* Not _DEV_T_ */
-
-
-#ifndef _INO_T_
-#define _INO_T_
-typedef short _ino_t;
-
-#ifndef _NO_OLDNAMES
-typedef _ino_t ino_t;
-#endif
-#endif /* Not _INO_T_ */
-
-
-#ifndef _PID_T_
-#define _PID_T_
-typedef int _pid_t;
-
-#ifndef _NO_OLDNAMES
-typedef _pid_t pid_t;
-#endif
-#endif /* Not _PID_T_ */
-
-
-#ifndef _MODE_T_
-#define _MODE_T_
-typedef unsigned short _mode_t;
-
-#ifndef _NO_OLDNAMES
-typedef _mode_t mode_t;
-#endif
-#endif /* Not _MODE_T_ */
-
-
-#ifndef _SIGSET_T_
-#define _SIGSET_T_
-typedef int _sigset_t;
-
-#ifndef _NO_OLDNAMES
-typedef _sigset_t sigset_t;
-#endif
-#endif /* Not _SIGSET_T_ */
-
-#ifndef _SSIZE_T_
-#define _SSIZE_T_
-typedef long _ssize_t;
-
-#ifndef _NO_OLDNAMES
-typedef _ssize_t ssize_t;
-#endif
-#endif /* Not _SSIZE_T_ */
-
-#ifndef _FPOS64_T_
-#define _FPOS64_T_
-typedef long long fpos64_t;
-#endif
-
-#ifndef _OFF64_T_
-#define _OFF64_T_
-typedef long long off64_t;
-#endif
-
-#if !defined __NO_ISOCEXT
-typedef unsigned int useconds_t;
-#endif /* Not __NO_ISOCEXT */
-
-#endif /* Not RC_INVOKED */
-
-#endif /* Not _TYPES_H_ */
diff --git a/navit/support/libc/time.c b/navit/support/libc/time.c
deleted file mode 100644
index b167d5e30..000000000
--- a/navit/support/libc/time.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * time.c: time implementation for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-
-#include "timeutil.h"
-
-time_t
-time (time_t *timer)
-{
- SYSTEMTIME s;
- FILETIME f;
- time_t t;
-
- if (timer == NULL)
- timer = &t;
-
- GetSystemTime (&s);
- SystemTimeToFileTime (&s, &f);
- *timer = __FILETIME_to_time_t (&f);
- return *timer;
-}
diff --git a/navit/support/libc/timeutil.c b/navit/support/libc/timeutil.c
deleted file mode 100644
index 433bbbb58..000000000
--- a/navit/support/libc/timeutil.c
+++ /dev/null
@@ -1,126 +0,0 @@
-#include "timeutil.h"
-
-/* Originally based on code found in the Ruby WinCE support, which
- had the following notice: */
-
-/* start original header */
-
-/***************************************************************
- time.c
-
- author : uema2
- date : Nov 30, 2002
-
- You can freely use, copy, modify, and redistribute
- the whole contents.
-***************************************************************/
-
-/* end original header */
-
-/* Note: The original filename was: wince/time_wce.c */
-
-/* Adapted to mingw32ce by Pedro Alves <pedro_alves@portugalmail.pt>
- 10 Feb 2007 - Initial revision. */
-
-#define DELTA_EPOCH 116444736000000000LL
-
-#if 0
-how_to_calc_delta_epoch ()
-{
- FILETIME f1601, f1970;
- __FILETIME_from_Year (1601, &f1601);
- __FILETIME_from_Year (1970, &f1970);
- DELTA_EPOCH = __FILETIME_to_ll (&f1970) - __FILETIME_to_ll (&f1601);
-}
-#endif
-
-long long
-__FILETIME_to_ll (const FILETIME *f)
-{
- long long t;
- t = (long long)f->dwHighDateTime << 32;
- t |= f->dwLowDateTime;
- return t;
-}
-
-void
-__ll_to_FILETIME (long long t, FILETIME* f)
-{
- f->dwHighDateTime = (DWORD)((t >> 32) & 0x00000000FFFFFFFF);
- f->dwLowDateTime = (DWORD)(t & 0x00000000FFFFFFFF);
-}
-
-void
-__tm_to_SYSTEMTIME (struct tm *t, SYSTEMTIME *s)
-{
- s->wYear = t->tm_year + 1900;
- s->wMonth = t->tm_mon + 1;
- s->wDayOfWeek = t->tm_wday;
- s->wDay = t->tm_mday;
- s->wHour = t->tm_hour;
- s->wMinute = t->tm_min;
- s->wSecond = t->tm_sec;
- s->wMilliseconds = 0;
-}
-
-static void
-__FILETIME_from_Year (WORD year, FILETIME *f)
-{
- SYSTEMTIME s = {0};
-
- s.wYear = year;
- s.wMonth = 1;
- s.wDayOfWeek = 1;
- s.wDay = 1;
-
- SystemTimeToFileTime (&s, f);
-}
-
-static int
-__Yday_from_SYSTEMTIME (const SYSTEMTIME *s)
-{
- long long t;
- FILETIME f1, f2;
-
- __FILETIME_from_Year (s->wYear, &f1);
- SystemTimeToFileTime (s, &f2);
-
- t = __FILETIME_to_ll (&f2) - __FILETIME_to_ll (&f1);
-
- return ((t / _onesec_in100ns) / (60 * 60 * 24));
-}
-
-void
-__SYSTEMTIME_to_tm (SYSTEMTIME *s, struct tm *tm)
-{
- tm->tm_year = s->wYear - 1900;
- tm->tm_mon = s->wMonth- 1;
- tm->tm_wday = s->wDayOfWeek;
- tm->tm_mday = s->wDay;
- tm->tm_yday = __Yday_from_SYSTEMTIME (s);
- tm->tm_hour = s->wHour;
- tm->tm_min = s->wMinute;
- tm->tm_sec = s->wSecond;
- tm->tm_isdst = 0;
-}
-
-time_t
-__FILETIME_to_time_t (const FILETIME* f)
-{
- long long t;
- t = __FILETIME_to_ll (f);
- t -= DELTA_EPOCH;
- return (time_t)(t / _onesec_in100ns);
-}
-
-void
-__time_t_to_FILETIME (time_t t, FILETIME *f)
-{
- long long time;
-
- time = t;
- time *= _onesec_in100ns;
- time += DELTA_EPOCH;
-
- __ll_to_FILETIME (time, f);
-}
diff --git a/navit/support/libc/timeutil.h b/navit/support/libc/timeutil.h
deleted file mode 100644
index 9e5f70886..000000000
--- a/navit/support/libc/timeutil.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef __TIMEUTIL_H
-#define __TIMEUTIL_H
-
-#include <windows.h>
-#include <sys/time.h>
-#include <_mingw.h>
-
-#define _onesec_in100ns 10000000LL
-
-extern long long __FILETIME_to_ll (const FILETIME *f);
-extern void __ll_to_FILETIME (long long t, FILETIME* f);
-extern void __tm_to_SYSTEMTIME (struct tm *, SYSTEMTIME *);
-extern void __SYSTEMTIME_to_tm (SYSTEMTIME *, struct tm *);
-extern time_t __FILETIME_to_time_t (const FILETIME *);
-extern void __time_t_to_FILETIME (time_t, FILETIME *);
-
-#endif
diff --git a/navit/support/libc/unistd.h b/navit/support/libc/unistd.h
deleted file mode 100644
index d1a435168..000000000
--- a/navit/support/libc/unistd.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef _UNISTD_H
-/*
- * This file is part of the Mingw32 package.
- *
- * unistd.h maps (roughly) to io.h
- * Other headers included by unistd.h may be selectively processed;
- * __UNISTD_H_SOURCED__ enables such selective processing.
- */
-#define _UNISTD_H
-#define __UNISTD_H_SOURCED__ 1
-
-#include <io.h>
-#include <process.h>
-#include <getopt.h>
-
-/* These are also defined in stdio.h. */
-#ifndef SEEK_SET
-#define SEEK_SET 0
-#endif
-
-#ifndef SEEK_CUR
-#define SEEK_CUR 1
-#endif
-
-#ifndef SEEK_END
-#define SEEK_END 2
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if !defined __NO_ISOCEXT
-#include <sys/types.h> /* For useconds_t. */
-
-int __cdecl __MINGW_NOTHROW usleep(useconds_t useconds);
-#endif /* Not __NO_ISOCEXT */
-
-/* This is defined as a real library function to allow autoconf
- to verify its existence. */
-int ftruncate(int, off_t);
-
-#ifdef __cplusplus
-}
-#endif
-
-#undef __UNISTD_H_SOURCED__
-#endif /* _UNISTD_H */
diff --git a/navit/support/libc/unlink.c b/navit/support/libc/unlink.c
deleted file mode 100644
index 9e3f9b582..000000000
--- a/navit/support/libc/unlink.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * unlink.c: unlink and _unlink implementations for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-
-#include <stdio.h>
-#include <windows.h>
-
-int
-_unlink (const char *file)
-{
- wchar_t wfile[MAX_PATH];
- size_t conv = mbstowcs (wfile, file, MAX_PATH);
- if (conv > 0 && conv < MAX_PATH && DeleteFileW (wfile))
- return 0;
- return -1;
-}
-
-int
-unlink (const char *file)
-{
- return _unlink (file);
-}
diff --git a/navit/support/libc/write.c b/navit/support/libc/write.c
deleted file mode 100644
index b9521aefc..000000000
--- a/navit/support/libc/write.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * write.c: write and _write implementations for WinCE.
- *
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is a part of the mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within the package.
- *
- * Written by Pedro Alves <pedro_alves@portugalmail.pt> Feb 2007
- *
- */
-#include <windows.h>
-#include <unistd.h>
-
-int
-_write (int fildes, const void *buf, unsigned int bufsize)
-{
- DWORD NumberOfBytesWritten;
- if (bufsize > 0x7fffffff)
- bufsize = 0x7fffffff;
- if (!WriteFile ((HANDLE) fildes, buf, bufsize, &NumberOfBytesWritten, NULL))
- return -1;
- return (int) NumberOfBytesWritten;
-}
-
-int
-write (int fildes, const void *buf, unsigned int bufsize)
-{
- return _write (fildes, buf, bufsize);
-}
diff --git a/navit/support/libpng/CMakeLists.txt b/navit/support/libpng/CMakeLists.txt
deleted file mode 100644
index 3aa3362be..000000000
--- a/navit/support/libpng/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-supportlib_add_library(support_libpng png.c pngerror.c pngget.c pngmem.c pngread.c pngrio.c pngrtran.c pngrutil.c pngset.c pngtrans.c libpng_init.c)
-
diff --git a/navit/support/libpng/libpng_init.c b/navit/support/libpng/libpng_init.c
deleted file mode 100644
index 32be387da..000000000
--- a/navit/support/libpng/libpng_init.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "plugin.h"
-
-void
-plugin_init(void)
-{
-}
diff --git a/navit/support/libpng/png.c b/navit/support/libpng/png.c
deleted file mode 100644
index e1c066690..000000000
--- a/navit/support/libpng/png.c
+++ /dev/null
@@ -1,912 +0,0 @@
-
-/* png.c - location for general purpose libpng functions
- *
- * Last changed in libpng 1.2.34 [December 18, 2008]
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2008 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- */
-
-#define PNG_INTERNAL
-#define PNG_NO_EXTERN
-#include "png.h"
-
-/* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_2_36 Your_png_h_is_not_version_1_2_36;
-
-/* Version information for C files. This had better match the version
- * string defined in png.h. */
-
-#ifdef PNG_USE_GLOBAL_ARRAYS
-/* png_libpng_ver was changed to a function in version 1.0.5c */
-PNG_CONST char png_libpng_ver[18] = PNG_LIBPNG_VER_STRING;
-
-#ifdef PNG_READ_SUPPORTED
-
-/* png_sig was changed to a function in version 1.0.5c */
-/* Place to hold the signature string for a PNG file. */
-PNG_CONST png_byte FARDATA png_sig[8] = {137, 80, 78, 71, 13, 10, 26, 10};
-#endif /* PNG_READ_SUPPORTED */
-
-/* Invoke global declarations for constant strings for known chunk types */
-PNG_IHDR;
-PNG_IDAT;
-PNG_IEND;
-PNG_PLTE;
-PNG_bKGD;
-PNG_cHRM;
-PNG_gAMA;
-PNG_hIST;
-PNG_iCCP;
-PNG_iTXt;
-PNG_oFFs;
-PNG_pCAL;
-PNG_sCAL;
-PNG_pHYs;
-PNG_sBIT;
-PNG_sPLT;
-PNG_sRGB;
-PNG_tEXt;
-PNG_tIME;
-PNG_tRNS;
-PNG_zTXt;
-
-#ifdef PNG_READ_SUPPORTED
-/* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
-
-/* start of interlace block */
-PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0};
-
-/* offset to next interlace block */
-PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1};
-
-/* start of interlace block in the y direction */
-PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1};
-
-/* offset to next interlace block in the y direction */
-PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2};
-
-/* Height of interlace block. This is not currently used - if you need
- * it, uncomment it here and in png.h
-PNG_CONST int FARDATA png_pass_height[] = {8, 8, 4, 4, 2, 2, 1};
-*/
-
-/* Mask to determine which pixels are valid in a pass */
-PNG_CONST int FARDATA png_pass_mask[] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
-
-/* Mask to determine which pixels to overwrite while displaying */
-PNG_CONST int FARDATA png_pass_dsp_mask[]
- = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff};
-
-#endif /* PNG_READ_SUPPORTED */
-#endif /* PNG_USE_GLOBAL_ARRAYS */
-
-/* Tells libpng that we have already handled the first "num_bytes" bytes
- * of the PNG file signature. If the PNG data is embedded into another
- * stream we can set num_bytes = 8 so that libpng will not attempt to read
- * or write any of the magic bytes before it starts on the IHDR.
- */
-
-#ifdef PNG_READ_SUPPORTED
-void PNGAPI
-png_set_sig_bytes(png_structp png_ptr, int num_bytes)
-{
- if (png_ptr == NULL) return;
- png_debug(1, "in png_set_sig_bytes");
- if (num_bytes > 8)
- png_error(png_ptr, "Too many bytes for PNG signature.");
-
- png_ptr->sig_bytes = (png_byte)(num_bytes < 0 ? 0 : num_bytes);
-}
-
-/* Checks whether the supplied bytes match the PNG signature. We allow
- * checking less than the full 8-byte signature so that those apps that
- * already read the first few bytes of a file to determine the file type
- * can simply check the remaining bytes for extra assurance. Returns
- * an integer less than, equal to, or greater than zero if sig is found,
- * respectively, to be less than, to match, or be greater than the correct
- * PNG signature (this is the same behaviour as strcmp, memcmp, etc).
- */
-int PNGAPI
-png_sig_cmp(png_bytep sig, png_size_t start, png_size_t num_to_check)
-{
- png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
- if (num_to_check > 8)
- num_to_check = 8;
- else if (num_to_check < 1)
- return (-1);
-
- if (start > 7)
- return (-1);
-
- if (start + num_to_check > 8)
- num_to_check = 8 - start;
-
- return ((int)(png_memcmp(&sig[start], &png_signature[start], num_to_check)));
-}
-
-#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
-/* (Obsolete) function to check signature bytes. It does not allow one
- * to check a partial signature. This function might be removed in the
- * future - use png_sig_cmp(). Returns true (nonzero) if the file is PNG.
- */
-int PNGAPI
-png_check_sig(png_bytep sig, int num)
-{
- return ((int)!png_sig_cmp(sig, (png_size_t)0, (png_size_t)num));
-}
-#endif
-#endif /* PNG_READ_SUPPORTED */
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-/* Function to allocate memory for zlib and clear it to 0. */
-#ifdef PNG_1_0_X
-voidpf PNGAPI
-#else
-voidpf /* private */
-#endif
-png_zalloc(voidpf png_ptr, uInt items, uInt size)
-{
- png_voidp ptr;
- png_structp p=(png_structp)png_ptr;
- png_uint_32 save_flags=p->flags;
- png_uint_32 num_bytes;
-
- if (png_ptr == NULL) return (NULL);
- if (items > PNG_UINT_32_MAX/size)
- {
- png_warning (p, "Potential overflow in png_zalloc()");
- return (NULL);
- }
- num_bytes = (png_uint_32)items * size;
-
- p->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
- ptr = (png_voidp)png_malloc((png_structp)png_ptr, num_bytes);
- p->flags=save_flags;
-
-#if defined(PNG_1_0_X) && !defined(PNG_NO_ZALLOC_ZERO)
- if (ptr == NULL)
- return ((voidpf)ptr);
-
- if (num_bytes > (png_uint_32)0x8000L)
- {
- png_memset(ptr, 0, (png_size_t)0x8000L);
- png_memset((png_bytep)ptr + (png_size_t)0x8000L, 0,
- (png_size_t)(num_bytes - (png_uint_32)0x8000L));
- }
- else
- {
- png_memset(ptr, 0, (png_size_t)num_bytes);
- }
-#endif
- return ((voidpf)ptr);
-}
-
-/* function to free memory for zlib */
-#ifdef PNG_1_0_X
-void PNGAPI
-#else
-void /* private */
-#endif
-png_zfree(voidpf png_ptr, voidpf ptr)
-{
- png_free((png_structp)png_ptr, (png_voidp)ptr);
-}
-
-/* Reset the CRC variable to 32 bits of 1's. Care must be taken
- * in case CRC is > 32 bits to leave the top bits 0.
- */
-void /* PRIVATE */
-png_reset_crc(png_structp png_ptr)
-{
- png_ptr->crc = crc32(0, Z_NULL, 0);
-}
-
-/* Calculate the CRC over a section of data. We can only pass as
- * much data to this routine as the largest single buffer size. We
- * also check that this data will actually be used before going to the
- * trouble of calculating it.
- */
-void /* PRIVATE */
-png_calculate_crc(png_structp png_ptr, png_bytep ptr, png_size_t length)
-{
- int need_crc = 1;
-
- if (png_ptr->chunk_name[0] & 0x20) /* ancillary */
- {
- if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) ==
- (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN))
- need_crc = 0;
- }
- else /* critical */
- {
- if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE)
- need_crc = 0;
- }
-
- if (need_crc)
- png_ptr->crc = crc32(png_ptr->crc, ptr, (uInt)length);
-}
-
-/* Allocate the memory for an info_struct for the application. We don't
- * really need the png_ptr, but it could potentially be useful in the
- * future. This should be used in favour of malloc(png_sizeof(png_info))
- * and png_info_init() so that applications that want to use a shared
- * libpng don't have to be recompiled if png_info changes size.
- */
-png_infop PNGAPI
-png_create_info_struct(png_structp png_ptr)
-{
- png_infop info_ptr;
-
- png_debug(1, "in png_create_info_struct");
- if (png_ptr == NULL) return (NULL);
-#ifdef PNG_USER_MEM_SUPPORTED
- info_ptr = (png_infop)png_create_struct_2(PNG_STRUCT_INFO,
- png_ptr->malloc_fn, png_ptr->mem_ptr);
-#else
- info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
-#endif
- if (info_ptr != NULL)
- png_info_init_3(&info_ptr, png_sizeof(png_info));
-
- return (info_ptr);
-}
-
-/* This function frees the memory associated with a single info struct.
- * Normally, one would use either png_destroy_read_struct() or
- * png_destroy_write_struct() to free an info struct, but this may be
- * useful for some applications.
- */
-void PNGAPI
-png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr)
-{
- png_infop info_ptr = NULL;
- if (png_ptr == NULL) return;
-
- png_debug(1, "in png_destroy_info_struct");
- if (info_ptr_ptr != NULL)
- info_ptr = *info_ptr_ptr;
-
- if (info_ptr != NULL)
- {
- png_info_destroy(png_ptr, info_ptr);
-
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)info_ptr, png_ptr->free_fn,
- png_ptr->mem_ptr);
-#else
- png_destroy_struct((png_voidp)info_ptr);
-#endif
- *info_ptr_ptr = NULL;
- }
-}
-
-/* Initialize the info structure. This is now an internal function (0.89)
- * and applications using it are urged to use png_create_info_struct()
- * instead.
- */
-#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
-#undef png_info_init
-void PNGAPI
-png_info_init(png_infop info_ptr)
-{
- /* We only come here via pre-1.0.12-compiled applications */
- png_info_init_3(&info_ptr, 0);
-}
-#endif
-
-void PNGAPI
-png_info_init_3(png_infopp ptr_ptr, png_size_t png_info_struct_size)
-{
- png_infop info_ptr = *ptr_ptr;
-
- if (info_ptr == NULL) return;
-
- png_debug(1, "in png_info_init_3");
-
- if (png_sizeof(png_info) > png_info_struct_size)
- {
- png_destroy_struct(info_ptr);
- info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
- *ptr_ptr = info_ptr;
- }
-
- /* set everything to 0 */
- png_memset(info_ptr, 0, png_sizeof(png_info));
-}
-
-#ifdef PNG_FREE_ME_SUPPORTED
-void PNGAPI
-png_data_freer(png_structp png_ptr, png_infop info_ptr,
- int freer, png_uint_32 mask)
-{
- png_debug(1, "in png_data_freer");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
- if (freer == PNG_DESTROY_WILL_FREE_DATA)
- info_ptr->free_me |= mask;
- else if (freer == PNG_USER_WILL_FREE_DATA)
- info_ptr->free_me &= ~mask;
- else
- png_warning(png_ptr,
- "Unknown freer parameter in png_data_freer.");
-}
-#endif
-
-void PNGAPI
-png_free_data(png_structp png_ptr, png_infop info_ptr, png_uint_32 mask,
- int num)
-{
- png_debug(1, "in png_free_data");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
-#if defined(PNG_TEXT_SUPPORTED)
-/* free text item num or (if num == -1) all text items */
-#ifdef PNG_FREE_ME_SUPPORTED
-if ((mask & PNG_FREE_TEXT) & info_ptr->free_me)
-#else
-if (mask & PNG_FREE_TEXT)
-#endif
-{
- if (num != -1)
- {
- if (info_ptr->text && info_ptr->text[num].key)
- {
- png_free(png_ptr, info_ptr->text[num].key);
- info_ptr->text[num].key = NULL;
- }
- }
- else
- {
- int i;
- for (i = 0; i < info_ptr->num_text; i++)
- png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, i);
- png_free(png_ptr, info_ptr->text);
- info_ptr->text = NULL;
- info_ptr->num_text=0;
- }
-}
-#endif
-
-#if defined(PNG_tRNS_SUPPORTED)
-/* free any tRNS entry */
-#ifdef PNG_FREE_ME_SUPPORTED
-if ((mask & PNG_FREE_TRNS) & info_ptr->free_me)
-#else
-if ((mask & PNG_FREE_TRNS) && (png_ptr->flags & PNG_FLAG_FREE_TRNS))
-#endif
-{
- png_free(png_ptr, info_ptr->trans);
- info_ptr->trans = NULL;
- info_ptr->valid &= ~PNG_INFO_tRNS;
-#ifndef PNG_FREE_ME_SUPPORTED
- png_ptr->flags &= ~PNG_FLAG_FREE_TRNS;
-#endif
-}
-#endif
-
-#if defined(PNG_sCAL_SUPPORTED)
-/* free any sCAL entry */
-#ifdef PNG_FREE_ME_SUPPORTED
-if ((mask & PNG_FREE_SCAL) & info_ptr->free_me)
-#else
-if (mask & PNG_FREE_SCAL)
-#endif
-{
-#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
- png_free(png_ptr, info_ptr->scal_s_width);
- png_free(png_ptr, info_ptr->scal_s_height);
- info_ptr->scal_s_width = NULL;
- info_ptr->scal_s_height = NULL;
-#endif
- info_ptr->valid &= ~PNG_INFO_sCAL;
-}
-#endif
-
-#if defined(PNG_pCAL_SUPPORTED)
-/* free any pCAL entry */
-#ifdef PNG_FREE_ME_SUPPORTED
-if ((mask & PNG_FREE_PCAL) & info_ptr->free_me)
-#else
-if (mask & PNG_FREE_PCAL)
-#endif
-{
- png_free(png_ptr, info_ptr->pcal_purpose);
- png_free(png_ptr, info_ptr->pcal_units);
- info_ptr->pcal_purpose = NULL;
- info_ptr->pcal_units = NULL;
- if (info_ptr->pcal_params != NULL)
- {
- int i;
- for (i = 0; i < (int)info_ptr->pcal_nparams; i++)
- {
- png_free(png_ptr, info_ptr->pcal_params[i]);
- info_ptr->pcal_params[i]=NULL;
- }
- png_free(png_ptr, info_ptr->pcal_params);
- info_ptr->pcal_params = NULL;
- }
- info_ptr->valid &= ~PNG_INFO_pCAL;
-}
-#endif
-
-#if defined(PNG_iCCP_SUPPORTED)
-/* free any iCCP entry */
-#ifdef PNG_FREE_ME_SUPPORTED
-if ((mask & PNG_FREE_ICCP) & info_ptr->free_me)
-#else
-if (mask & PNG_FREE_ICCP)
-#endif
-{
- png_free(png_ptr, info_ptr->iccp_name);
- png_free(png_ptr, info_ptr->iccp_profile);
- info_ptr->iccp_name = NULL;
- info_ptr->iccp_profile = NULL;
- info_ptr->valid &= ~PNG_INFO_iCCP;
-}
-#endif
-
-#if defined(PNG_sPLT_SUPPORTED)
-/* free a given sPLT entry, or (if num == -1) all sPLT entries */
-#ifdef PNG_FREE_ME_SUPPORTED
-if ((mask & PNG_FREE_SPLT) & info_ptr->free_me)
-#else
-if (mask & PNG_FREE_SPLT)
-#endif
-{
- if (num != -1)
- {
- if (info_ptr->splt_palettes)
- {
- png_free(png_ptr, info_ptr->splt_palettes[num].name);
- png_free(png_ptr, info_ptr->splt_palettes[num].entries);
- info_ptr->splt_palettes[num].name = NULL;
- info_ptr->splt_palettes[num].entries = NULL;
- }
- }
- else
- {
- if (info_ptr->splt_palettes_num)
- {
- int i;
- for (i = 0; i < (int)info_ptr->splt_palettes_num; i++)
- png_free_data(png_ptr, info_ptr, PNG_FREE_SPLT, i);
-
- png_free(png_ptr, info_ptr->splt_palettes);
- info_ptr->splt_palettes = NULL;
- info_ptr->splt_palettes_num = 0;
- }
- info_ptr->valid &= ~PNG_INFO_sPLT;
- }
-}
-#endif
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
- if (png_ptr->unknown_chunk.data)
- {
- png_free(png_ptr, png_ptr->unknown_chunk.data);
- png_ptr->unknown_chunk.data = NULL;
- }
-
-#ifdef PNG_FREE_ME_SUPPORTED
-if ((mask & PNG_FREE_UNKN) & info_ptr->free_me)
-#else
-if (mask & PNG_FREE_UNKN)
-#endif
-{
- if (num != -1)
- {
- if (info_ptr->unknown_chunks)
- {
- png_free(png_ptr, info_ptr->unknown_chunks[num].data);
- info_ptr->unknown_chunks[num].data = NULL;
- }
- }
- else
- {
- int i;
-
- if (info_ptr->unknown_chunks_num)
- {
- for (i = 0; i < (int)info_ptr->unknown_chunks_num; i++)
- png_free_data(png_ptr, info_ptr, PNG_FREE_UNKN, i);
-
- png_free(png_ptr, info_ptr->unknown_chunks);
- info_ptr->unknown_chunks = NULL;
- info_ptr->unknown_chunks_num = 0;
- }
- }
-}
-#endif
-
-#if defined(PNG_hIST_SUPPORTED)
-/* free any hIST entry */
-#ifdef PNG_FREE_ME_SUPPORTED
-if ((mask & PNG_FREE_HIST) & info_ptr->free_me)
-#else
-if ((mask & PNG_FREE_HIST) && (png_ptr->flags & PNG_FLAG_FREE_HIST))
-#endif
-{
- png_free(png_ptr, info_ptr->hist);
- info_ptr->hist = NULL;
- info_ptr->valid &= ~PNG_INFO_hIST;
-#ifndef PNG_FREE_ME_SUPPORTED
- png_ptr->flags &= ~PNG_FLAG_FREE_HIST;
-#endif
-}
-#endif
-
-/* free any PLTE entry that was internally allocated */
-#ifdef PNG_FREE_ME_SUPPORTED
-if ((mask & PNG_FREE_PLTE) & info_ptr->free_me)
-#else
-if ((mask & PNG_FREE_PLTE) && (png_ptr->flags & PNG_FLAG_FREE_PLTE))
-#endif
-{
- png_zfree(png_ptr, info_ptr->palette);
- info_ptr->palette = NULL;
- info_ptr->valid &= ~PNG_INFO_PLTE;
-#ifndef PNG_FREE_ME_SUPPORTED
- png_ptr->flags &= ~PNG_FLAG_FREE_PLTE;
-#endif
- info_ptr->num_palette = 0;
-}
-
-#if defined(PNG_INFO_IMAGE_SUPPORTED)
-/* free any image bits attached to the info structure */
-#ifdef PNG_FREE_ME_SUPPORTED
-if ((mask & PNG_FREE_ROWS) & info_ptr->free_me)
-#else
-if (mask & PNG_FREE_ROWS)
-#endif
-{
- if (info_ptr->row_pointers)
- {
- int row;
- for (row = 0; row < (int)info_ptr->height; row++)
- {
- png_free(png_ptr, info_ptr->row_pointers[row]);
- info_ptr->row_pointers[row]=NULL;
- }
- png_free(png_ptr, info_ptr->row_pointers);
- info_ptr->row_pointers=NULL;
- }
- info_ptr->valid &= ~PNG_INFO_IDAT;
-}
-#endif
-
-#ifdef PNG_FREE_ME_SUPPORTED
- if (num == -1)
- info_ptr->free_me &= ~mask;
- else
- info_ptr->free_me &= ~(mask & ~PNG_FREE_MUL);
-#endif
-}
-
-/* This is an internal routine to free any memory that the info struct is
- * pointing to before re-using it or freeing the struct itself. Recall
- * that png_free() checks for NULL pointers for us.
- */
-void /* PRIVATE */
-png_info_destroy(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_info_destroy");
-
- png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1);
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
- if (png_ptr->num_chunk_list)
- {
- png_free(png_ptr, png_ptr->chunk_list);
- png_ptr->chunk_list=NULL;
- png_ptr->num_chunk_list = 0;
- }
-#endif
-
- png_info_init_3(&info_ptr, png_sizeof(png_info));
-}
-#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
-
-/* This function returns a pointer to the io_ptr associated with the user
- * functions. The application should free any memory associated with this
- * pointer before png_write_destroy() or png_read_destroy() are called.
- */
-png_voidp PNGAPI
-png_get_io_ptr(png_structp png_ptr)
-{
- if (png_ptr == NULL) return (NULL);
- return (png_ptr->io_ptr);
-}
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-#if !defined(PNG_NO_STDIO)
-/* Initialize the default input/output functions for the PNG file. If you
- * use your own read or write routines, you can call either png_set_read_fn()
- * or png_set_write_fn() instead of png_init_io(). If you have defined
- * PNG_NO_STDIO, you must use a function of your own because "FILE *" isn't
- * necessarily available.
- */
-void PNGAPI
-png_init_io(png_structp png_ptr, png_FILE_p fp)
-{
- png_debug(1, "in png_init_io");
- if (png_ptr == NULL) return;
- png_ptr->io_ptr = (png_voidp)fp;
-}
-#endif
-
-#if defined(PNG_TIME_RFC1123_SUPPORTED)
-/* Convert the supplied time into an RFC 1123 string suitable for use in
- * a "Creation Time" or other text-based time string.
- */
-png_charp PNGAPI
-png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
-{
- static PNG_CONST char short_months[12][4] =
- {"Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
-
- if (png_ptr == NULL) return (NULL);
- if (png_ptr->time_buffer == NULL)
- {
- png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29*
- png_sizeof(char)));
- }
-
-#if defined(_WIN32_WCE)
- {
- wchar_t time_buf[29];
- wsprintf(time_buf, TEXT("%d %S %d %02d:%02d:%02d +0000"),
- ptime->day % 32, short_months[(ptime->month - 1) % 12],
- ptime->year, ptime->hour % 24, ptime->minute % 60,
- ptime->second % 61);
- WideCharToMultiByte(CP_ACP, 0, time_buf, -1, png_ptr->time_buffer, 29,
- NULL, NULL);
- }
-#else
-#ifdef USE_FAR_KEYWORD
- {
- char near_time_buf[29];
- png_snprintf6(near_time_buf, 29, "%d %s %d %02d:%02d:%02d +0000",
- ptime->day % 32, short_months[(ptime->month - 1) % 12],
- ptime->year, ptime->hour % 24, ptime->minute % 60,
- ptime->second % 61);
- png_memcpy(png_ptr->time_buffer, near_time_buf,
- 29*png_sizeof(char));
- }
-#else
- png_snprintf6(png_ptr->time_buffer, 29, "%d %s %d %02d:%02d:%02d +0000",
- ptime->day % 32, short_months[(ptime->month - 1) % 12],
- ptime->year, ptime->hour % 24, ptime->minute % 60,
- ptime->second % 61);
-#endif
-#endif /* _WIN32_WCE */
- return ((png_charp)png_ptr->time_buffer);
-}
-#endif /* PNG_TIME_RFC1123_SUPPORTED */
-
-#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
-
-png_charp PNGAPI
-png_get_copyright(png_structp png_ptr)
-{
- png_ptr = png_ptr; /* silence compiler warning about unused png_ptr */
- return ((png_charp) "\n libpng version 1.2.36 - May 7, 2009\n\
- Copyright (c) 1998-2008 Glenn Randers-Pehrson\n\
- Copyright (c) 1996-1997 Andreas Dilger\n\
- Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
-}
-
-/* The following return the library version as a short string in the
- * format 1.0.0 through 99.99.99zz. To get the version of *.h files
- * used with your application, print out PNG_LIBPNG_VER_STRING, which
- * is defined in png.h.
- * Note: now there is no difference between png_get_libpng_ver() and
- * png_get_header_ver(). Due to the version_nn_nn_nn typedef guard,
- * it is guaranteed that png.c uses the correct version of png.h.
- */
-png_charp PNGAPI
-png_get_libpng_ver(png_structp png_ptr)
-{
- /* Version of *.c files used when building libpng */
- png_ptr = png_ptr; /* silence compiler warning about unused png_ptr */
- return ((png_charp) PNG_LIBPNG_VER_STRING);
-}
-
-png_charp PNGAPI
-png_get_header_ver(png_structp png_ptr)
-{
- /* Version of *.h files used when building libpng */
- png_ptr = png_ptr; /* silence compiler warning about unused png_ptr */
- return ((png_charp) PNG_LIBPNG_VER_STRING);
-}
-
-png_charp PNGAPI
-png_get_header_version(png_structp png_ptr)
-{
- /* Returns longer string containing both version and date */
- png_ptr = png_ptr; /* silence compiler warning about unused png_ptr */
- return ((png_charp) PNG_HEADER_VERSION_STRING
-#ifndef PNG_READ_SUPPORTED
- " (NO READ SUPPORT)"
-#endif
- "\n");
-}
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-int PNGAPI
-png_handle_as_unknown(png_structp png_ptr, png_bytep chunk_name)
-{
- /* check chunk_name and return "keep" value if it's on the list, else 0 */
- int i;
- png_bytep p;
- if (png_ptr == NULL || chunk_name == NULL || png_ptr->num_chunk_list<=0)
- return 0;
- p = png_ptr->chunk_list + png_ptr->num_chunk_list*5 - 5;
- for (i = png_ptr->num_chunk_list; i; i--, p -= 5)
- if (!png_memcmp(chunk_name, p, 4))
- return ((int)*(p + 4));
- return 0;
-}
-#endif
-
-/* This function, added to libpng-1.0.6g, is untested. */
-int PNGAPI
-png_reset_zstream(png_structp png_ptr)
-{
- if (png_ptr == NULL) return Z_STREAM_ERROR;
- return (inflateReset(&png_ptr->zstream));
-}
-#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
-
-/* This function was added to libpng-1.0.7 */
-png_uint_32 PNGAPI
-png_access_version_number(void)
-{
- /* Version of *.c files used when building libpng */
- return((png_uint_32) PNG_LIBPNG_VER);
-}
-
-
-#if defined(PNG_READ_SUPPORTED) && defined(PNG_ASSEMBLER_CODE_SUPPORTED)
-#if !defined(PNG_1_0_X)
-/* this function was added to libpng 1.2.0 */
-int PNGAPI
-png_mmx_support(void)
-{
- /* obsolete, to be removed from libpng-1.4.0 */
- return -1;
-}
-#endif /* PNG_1_0_X */
-#endif /* PNG_READ_SUPPORTED && PNG_ASSEMBLER_CODE_SUPPORTED */
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-#ifdef PNG_SIZE_T
-/* Added at libpng version 1.2.6 */
- PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size));
-png_size_t PNGAPI
-png_convert_size(size_t size)
-{
- if (size > (png_size_t)-1)
- PNG_ABORT(); /* We haven't got access to png_ptr, so no png_error() */
- return ((png_size_t)size);
-}
-#endif /* PNG_SIZE_T */
-
-/* Added at libpng version 1.2.34 and 1.4.0 (moved from pngset.c) */
-#if defined(PNG_cHRM_SUPPORTED)
-#if !defined(PNG_NO_CHECK_cHRM)
-
-/*
- Multiply two 32-bit numbers, V1 and V2, using 32-bit
- arithmetic, to produce a 64 bit result in the HI/LO words.
-
- A B
- x C D
- ------
- AD || BD
-AC || CB || 0
-
- where A and B are the high and low 16-bit words of V1,
- C and D are the 16-bit words of V2, AD is the product of
- A and D, and X || Y is (X << 16) + Y.
-*/
-
-void png_64bit_product (long v1, long v2, unsigned long *hi_product,
- unsigned long *lo_product)
-{
- int a, b, c, d;
- long lo, hi, x, y;
-
- a = (v1 >> 16) & 0xffff;
- b = v1 & 0xffff;
- c = (v2 >> 16) & 0xffff;
- d = v2 & 0xffff;
-
- lo = b * d; /* BD */
- x = a * d + c * b; /* AD + CB */
- y = ((lo >> 16) & 0xffff) + x;
-
- lo = (lo & 0xffff) | ((y & 0xffff) << 16);
- hi = (y >> 16) & 0xffff;
-
- hi += a * c; /* AC */
-
- *hi_product = (unsigned long)hi;
- *lo_product = (unsigned long)lo;
-}
-int /* private */
-png_check_cHRM_fixed(png_structp png_ptr,
- png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x,
- png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y,
- png_fixed_point blue_x, png_fixed_point blue_y)
-{
- int ret = 1;
- unsigned long xy_hi,xy_lo,yx_hi,yx_lo;
-
- png_debug(1, "in function png_check_cHRM_fixed");
- if (png_ptr == NULL)
- return 0;
-
- if (white_x < 0 || white_y <= 0 ||
- red_x < 0 || red_y < 0 ||
- green_x < 0 || green_y < 0 ||
- blue_x < 0 || blue_y < 0)
- {
- png_warning(png_ptr,
- "Ignoring attempt to set negative chromaticity value");
- ret = 0;
- }
- if (white_x > (png_fixed_point) PNG_UINT_31_MAX ||
- white_y > (png_fixed_point) PNG_UINT_31_MAX ||
- red_x > (png_fixed_point) PNG_UINT_31_MAX ||
- red_y > (png_fixed_point) PNG_UINT_31_MAX ||
- green_x > (png_fixed_point) PNG_UINT_31_MAX ||
- green_y > (png_fixed_point) PNG_UINT_31_MAX ||
- blue_x > (png_fixed_point) PNG_UINT_31_MAX ||
- blue_y > (png_fixed_point) PNG_UINT_31_MAX )
- {
- png_warning(png_ptr,
- "Ignoring attempt to set chromaticity value exceeding 21474.83");
- ret = 0;
- }
- if (white_x > 100000L - white_y)
- {
- png_warning(png_ptr, "Invalid cHRM white point");
- ret = 0;
- }
- if (red_x > 100000L - red_y)
- {
- png_warning(png_ptr, "Invalid cHRM red point");
- ret = 0;
- }
- if (green_x > 100000L - green_y)
- {
- png_warning(png_ptr, "Invalid cHRM green point");
- ret = 0;
- }
- if (blue_x > 100000L - blue_y)
- {
- png_warning(png_ptr, "Invalid cHRM blue point");
- ret = 0;
- }
-
- png_64bit_product(green_x - red_x, blue_y - red_y, &xy_hi, &xy_lo);
- png_64bit_product(green_y - red_y, blue_x - red_x, &yx_hi, &yx_lo);
-
- if (xy_hi == yx_hi && xy_lo == yx_lo)
- {
- png_warning(png_ptr,
- "Ignoring attempt to set cHRM RGB triangle with zero area");
- ret = 0;
- }
-
- return ret;
-}
-#endif /* NO_PNG_CHECK_cHRM */
-#endif /* PNG_cHRM_SUPPORTED */
-#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
diff --git a/navit/support/libpng/png.h b/navit/support/libpng/png.h
deleted file mode 100644
index 267677ad6..000000000
--- a/navit/support/libpng/png.h
+++ /dev/null
@@ -1,3682 +0,0 @@
-/* png.h - header file for PNG reference library
- *
- * libpng version 1.2.36 - May 7, 2009
- * Copyright (c) 1998-2009 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * Authors and maintainers:
- * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
- * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
- * libpng versions 0.97, January 1998, through 1.2.36 - May 7, 2009: Glenn
- * See also "Contributing Authors", below.
- *
- * Note about libpng version numbers:
- *
- * Due to various miscommunications, unforeseen code incompatibilities
- * and occasional factors outside the authors' control, version numbering
- * on the library has not always been consistent and straightforward.
- * The following table summarizes matters since version 0.89c, which was
- * the first widely used release:
- *
- * source png.h png.h shared-lib
- * version string int version
- * ------- ------ ----- ----------
- * 0.89c "1.0 beta 3" 0.89 89 1.0.89
- * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90]
- * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95]
- * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96]
- * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97]
- * 0.97c 0.97 97 2.0.97
- * 0.98 0.98 98 2.0.98
- * 0.99 0.99 98 2.0.99
- * 0.99a-m 0.99 99 2.0.99
- * 1.00 1.00 100 2.1.0 [100 should be 10000]
- * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000]
- * 1.0.1 png.h string is 10001 2.1.0
- * 1.0.1a-e identical to the 10002 from here on, the shared library
- * 1.0.2 source version) 10002 is 2.V where V is the source code
- * 1.0.2a-b 10003 version, except as noted.
- * 1.0.3 10003
- * 1.0.3a-d 10004
- * 1.0.4 10004
- * 1.0.4a-f 10005
- * 1.0.5 (+ 2 patches) 10005
- * 1.0.5a-d 10006
- * 1.0.5e-r 10100 (not source compatible)
- * 1.0.5s-v 10006 (not binary compatible)
- * 1.0.6 (+ 3 patches) 10006 (still binary incompatible)
- * 1.0.6d-f 10007 (still binary incompatible)
- * 1.0.6g 10007
- * 1.0.6h 10007 10.6h (testing xy.z so-numbering)
- * 1.0.6i 10007 10.6i
- * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0)
- * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible)
- * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible)
- * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible)
- * 1.0.7 1 10007 (still compatible)
- * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4
- * 1.0.8rc1 1 10008 2.1.0.8rc1
- * 1.0.8 1 10008 2.1.0.8
- * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6
- * 1.0.9rc1 1 10009 2.1.0.9rc1
- * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10
- * 1.0.9rc2 1 10009 2.1.0.9rc2
- * 1.0.9 1 10009 2.1.0.9
- * 1.0.10beta1 1 10010 2.1.0.10beta1
- * 1.0.10rc1 1 10010 2.1.0.10rc1
- * 1.0.10 1 10010 2.1.0.10
- * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3
- * 1.0.11rc1 1 10011 2.1.0.11rc1
- * 1.0.11 1 10011 2.1.0.11
- * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2
- * 1.0.12rc1 2 10012 2.1.0.12rc1
- * 1.0.12 2 10012 2.1.0.12
- * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned)
- * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2
- * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5
- * 1.2.0rc1 3 10200 3.1.2.0rc1
- * 1.2.0 3 10200 3.1.2.0
- * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4
- * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2
- * 1.2.1 3 10201 3.1.2.1
- * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6
- * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1
- * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1
- * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1
- * 1.0.13 10 10013 10.so.0.1.0.13
- * 1.2.2 12 10202 12.so.0.1.2.2
- * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6
- * 1.2.3 12 10203 12.so.0.1.2.3
- * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3
- * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1
- * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1
- * 1.0.14 10 10014 10.so.0.1.0.14
- * 1.2.4 13 10204 12.so.0.1.2.4
- * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2
- * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3
- * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3
- * 1.0.15 10 10015 10.so.0.1.0.15
- * 1.2.5 13 10205 12.so.0.1.2.5
- * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4
- * 1.0.16 10 10016 10.so.0.1.0.16
- * 1.2.6 13 10206 12.so.0.1.2.6
- * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2
- * 1.0.17rc1 10 10017 10.so.0.1.0.17rc1
- * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1
- * 1.0.17 10 10017 10.so.0.1.0.17
- * 1.2.7 13 10207 12.so.0.1.2.7
- * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5
- * 1.0.18rc1-5 10 10018 10.so.0.1.0.18rc1-5
- * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5
- * 1.0.18 10 10018 10.so.0.1.0.18
- * 1.2.8 13 10208 12.so.0.1.2.8
- * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3
- * 1.2.9beta4-11 13 10209 12.so.0.9[.0]
- * 1.2.9rc1 13 10209 12.so.0.9[.0]
- * 1.2.9 13 10209 12.so.0.9[.0]
- * 1.2.10beta1-8 13 10210 12.so.0.10[.0]
- * 1.2.10rc1-3 13 10210 12.so.0.10[.0]
- * 1.2.10 13 10210 12.so.0.10[.0]
- * 1.2.11beta1-4 13 10211 12.so.0.11[.0]
- * 1.0.19rc1-5 10 10019 10.so.0.19[.0]
- * 1.2.11rc1-5 13 10211 12.so.0.11[.0]
- * 1.0.19 10 10019 10.so.0.19[.0]
- * 1.2.11 13 10211 12.so.0.11[.0]
- * 1.0.20 10 10020 10.so.0.20[.0]
- * 1.2.12 13 10212 12.so.0.12[.0]
- * 1.2.13beta1 13 10213 12.so.0.13[.0]
- * 1.0.21 10 10021 10.so.0.21[.0]
- * 1.2.13 13 10213 12.so.0.13[.0]
- * 1.2.14beta1-2 13 10214 12.so.0.14[.0]
- * 1.0.22rc1 10 10022 10.so.0.22[.0]
- * 1.2.14rc1 13 10214 12.so.0.14[.0]
- * 1.0.22 10 10022 10.so.0.22[.0]
- * 1.2.14 13 10214 12.so.0.14[.0]
- * 1.2.15beta1-6 13 10215 12.so.0.15[.0]
- * 1.0.23rc1-5 10 10023 10.so.0.23[.0]
- * 1.2.15rc1-5 13 10215 12.so.0.15[.0]
- * 1.0.23 10 10023 10.so.0.23[.0]
- * 1.2.15 13 10215 12.so.0.15[.0]
- * 1.2.16beta1-2 13 10216 12.so.0.16[.0]
- * 1.2.16rc1 13 10216 12.so.0.16[.0]
- * 1.0.24 10 10024 10.so.0.24[.0]
- * 1.2.16 13 10216 12.so.0.16[.0]
- * 1.2.17beta1-2 13 10217 12.so.0.17[.0]
- * 1.0.25rc1 10 10025 10.so.0.25[.0]
- * 1.2.17rc1-3 13 10217 12.so.0.17[.0]
- * 1.0.25 10 10025 10.so.0.25[.0]
- * 1.2.17 13 10217 12.so.0.17[.0]
- * 1.0.26 10 10026 10.so.0.26[.0]
- * 1.2.18 13 10218 12.so.0.18[.0]
- * 1.2.19beta1-31 13 10219 12.so.0.19[.0]
- * 1.0.27rc1-6 10 10027 10.so.0.27[.0]
- * 1.2.19rc1-6 13 10219 12.so.0.19[.0]
- * 1.0.27 10 10027 10.so.0.27[.0]
- * 1.2.19 13 10219 12.so.0.19[.0]
- * 1.2.20beta01-04 13 10220 12.so.0.20[.0]
- * 1.0.28rc1-6 10 10028 10.so.0.28[.0]
- * 1.2.20rc1-6 13 10220 12.so.0.20[.0]
- * 1.0.28 10 10028 10.so.0.28[.0]
- * 1.2.20 13 10220 12.so.0.20[.0]
- * 1.2.21beta1-2 13 10221 12.so.0.21[.0]
- * 1.2.21rc1-3 13 10221 12.so.0.21[.0]
- * 1.0.29 10 10029 10.so.0.29[.0]
- * 1.2.21 13 10221 12.so.0.21[.0]
- * 1.2.22beta1-4 13 10222 12.so.0.22[.0]
- * 1.0.30rc1 10 10030 10.so.0.30[.0]
- * 1.2.22rc1 13 10222 12.so.0.22[.0]
- * 1.0.30 10 10030 10.so.0.30[.0]
- * 1.2.22 13 10222 12.so.0.22[.0]
- * 1.2.23beta01-05 13 10223 12.so.0.23[.0]
- * 1.2.23rc01 13 10223 12.so.0.23[.0]
- * 1.2.23 13 10223 12.so.0.23[.0]
- * 1.2.24beta01-02 13 10224 12.so.0.24[.0]
- * 1.2.24rc01 13 10224 12.so.0.24[.0]
- * 1.2.24 13 10224 12.so.0.24[.0]
- * 1.2.25beta01-06 13 10225 12.so.0.25[.0]
- * 1.2.25rc01-02 13 10225 12.so.0.25[.0]
- * 1.0.31 10 10031 10.so.0.31[.0]
- * 1.2.25 13 10225 12.so.0.25[.0]
- * 1.2.26beta01-06 13 10226 12.so.0.26[.0]
- * 1.2.26rc01 13 10226 12.so.0.26[.0]
- * 1.2.26 13 10226 12.so.0.26[.0]
- * 1.0.32 10 10032 10.so.0.32[.0]
- * 1.2.27beta01-06 13 10227 12.so.0.27[.0]
- * 1.2.27rc01 13 10227 12.so.0.27[.0]
- * 1.0.33 10 10033 10.so.0.33[.0]
- * 1.2.27 13 10227 12.so.0.27[.0]
- * 1.0.34 10 10034 10.so.0.34[.0]
- * 1.2.28 13 10228 12.so.0.28[.0]
- * 1.2.29beta01-03 13 10229 12.so.0.29[.0]
- * 1.2.29rc01 13 10229 12.so.0.29[.0]
- * 1.0.35 10 10035 10.so.0.35[.0]
- * 1.2.29 13 10229 12.so.0.29[.0]
- * 1.0.37 10 10037 10.so.0.37[.0]
- * 1.2.30beta01-04 13 10230 12.so.0.30[.0]
- * 1.0.38rc01-08 10 10038 10.so.0.38[.0]
- * 1.2.30rc01-08 13 10230 12.so.0.30[.0]
- * 1.0.38 10 10038 10.so.0.38[.0]
- * 1.2.30 13 10230 12.so.0.30[.0]
- * 1.0.39rc01-03 10 10039 10.so.0.39[.0]
- * 1.2.31rc01-03 13 10231 12.so.0.31[.0]
- * 1.0.39 10 10039 10.so.0.39[.0]
- * 1.2.31 13 10231 12.so.0.31[.0]
- * 1.2.32beta01-02 13 10232 12.so.0.32[.0]
- * 1.0.40rc01 10 10040 10.so.0.40[.0]
- * 1.2.32rc01 13 10232 12.so.0.32[.0]
- * 1.0.40 10 10040 10.so.0.40[.0]
- * 1.2.32 13 10232 12.so.0.32[.0]
- * 1.2.33beta01-02 13 10233 12.so.0.33[.0]
- * 1.2.33rc01-02 13 10233 12.so.0.33[.0]
- * 1.0.41rc01 10 10041 10.so.0.41[.0]
- * 1.2.33 13 10233 12.so.0.33[.0]
- * 1.0.41 10 10041 10.so.0.41[.0]
- * 1.2.34beta01-07 13 10234 12.so.0.34[.0]
- * 1.0.42rc01 10 10042 10.so.0.42[.0]
- * 1.2.34rc01 13 10234 12.so.0.34[.0]
- * 1.0.42 10 10042 10.so.0.42[.0]
- * 1.2.34 13 10234 12.so.0.34[.0]
- * 1.2.35beta01-03 13 10235 12.so.0.35[.0]
- * 1.0.43rc01-02 10 10043 10.so.0.43[.0]
- * 1.2.35rc01-02 13 10235 12.so.0.35[.0]
- * 1.0.43 10 10043 10.so.0.43[.0]
- * 1.2.35 13 10235 12.so.0.35[.0]
- * 1.2.36beta01-05 13 10236 12.so.0.36[.0]
- * 1.2.36rc01 13 10236 12.so.0.36[.0]
- * 1.0.44 10 10044 10.so.0.44[.0]
- * 1.2.36 13 10236 12.so.0.36[.0]
- *
- * Henceforth the source version will match the shared-library major
- * and minor numbers; the shared-library major version number will be
- * used for changes in backward compatibility, as it is intended. The
- * PNG_LIBPNG_VER macro, which is not used within libpng but is available
- * for applications, is an unsigned integer of the form xyyzz corresponding
- * to the source version x.y.z (leading zeros in y and z). Beta versions
- * were given the previous public release number plus a letter, until
- * version 1.0.6j; from then on they were given the upcoming public
- * release number plus "betaNN" or "rcNN".
- *
- * Binary incompatibility exists only when applications make direct access
- * to the info_ptr or png_ptr members through png.h, and the compiled
- * application is loaded with a different version of the library.
- *
- * DLLNUM will change each time there are forward or backward changes
- * in binary compatibility (e.g., when a new feature is added).
- *
- * See libpng.txt or libpng.3 for more information. The PNG specification
- * is available as a W3C Recommendation and as an ISO Specification,
- * <http://www.w3.org/TR/2003/REC-PNG-20031110/
- */
-
-/*
- * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
- *
- * If you modify libpng you may insert additional notices immediately following
- * this sentence.
- *
- * libpng versions 1.2.6, August 15, 2004, through 1.2.36, May 7, 2009, are
- * Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are
- * distributed according to the same disclaimer and license as libpng-1.2.5
- * with the following individual added to the list of Contributing Authors:
- *
- * Cosmin Truta
- *
- * libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are
- * Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
- * distributed according to the same disclaimer and license as libpng-1.0.6
- * with the following individuals added to the list of Contributing Authors:
- *
- * Simon-Pierre Cadieux
- * Eric S. Raymond
- * Gilles Vollant
- *
- * and with the following additions to the disclaimer:
- *
- * There is no warranty against interference with your enjoyment of the
- * library or against infringement. There is no warranty that our
- * efforts or the library will fulfill any of your particular purposes
- * or needs. This library is provided with all faults, and the entire
- * risk of satisfactory quality, performance, accuracy, and effort is with
- * the user.
- *
- * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
- * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are
- * distributed according to the same disclaimer and license as libpng-0.96,
- * with the following individuals added to the list of Contributing Authors:
- *
- * Tom Lane
- * Glenn Randers-Pehrson
- * Willem van Schaik
- *
- * libpng versions 0.89, June 1996, through 0.96, May 1997, are
- * Copyright (c) 1996, 1997 Andreas Dilger
- * Distributed according to the same disclaimer and license as libpng-0.88,
- * with the following individuals added to the list of Contributing Authors:
- *
- * John Bowler
- * Kevin Bracey
- * Sam Bushell
- * Magnus Holmgren
- * Greg Roelofs
- * Tom Tanner
- *
- * libpng versions 0.5, May 1995, through 0.88, January 1996, are
- * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
- *
- * For the purposes of this copyright and license, "Contributing Authors"
- * is defined as the following set of individuals:
- *
- * Andreas Dilger
- * Dave Martindale
- * Guy Eric Schalnat
- * Paul Schmidt
- * Tim Wegner
- *
- * The PNG Reference Library is supplied "AS IS". The Contributing Authors
- * and Group 42, Inc. disclaim all warranties, expressed or implied,
- * including, without limitation, the warranties of merchantability and of
- * fitness for any purpose. The Contributing Authors and Group 42, Inc.
- * assume no liability for direct, indirect, incidental, special, exemplary,
- * or consequential damages, which may result from the use of the PNG
- * Reference Library, even if advised of the possibility of such damage.
- *
- * Permission is hereby granted to use, copy, modify, and distribute this
- * source code, or portions hereof, for any purpose, without fee, subject
- * to the following restrictions:
- *
- * 1. The origin of this source code must not be misrepresented.
- *
- * 2. Altered versions must be plainly marked as such and
- * must not be misrepresented as being the original source.
- *
- * 3. This Copyright notice may not be removed or altered from
- * any source or altered source distribution.
- *
- * The Contributing Authors and Group 42, Inc. specifically permit, without
- * fee, and encourage the use of this source code as a component to
- * supporting the PNG file format in commercial products. If you use this
- * source code in a product, acknowledgment is not required but would be
- * appreciated.
- */
-
-/*
- * A "png_get_copyright" function is available, for convenient use in "about"
- * boxes and the like:
- *
- * printf("%s",png_get_copyright(NULL));
- *
- * Also, the PNG logo (in PNG format, of course) is supplied in the
- * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
- */
-
-/*
- * Libpng is OSI Certified Open Source Software. OSI Certified is a
- * certification mark of the Open Source Initiative.
- */
-
-/*
- * The contributing authors would like to thank all those who helped
- * with testing, bug fixes, and patience. This wouldn't have been
- * possible without all of you.
- *
- * Thanks to Frank J. T. Wojcik for helping with the documentation.
- */
-
-/*
- * Y2K compliance in libpng:
- * =========================
- *
- * May 7, 2009
- *
- * Since the PNG Development group is an ad-hoc body, we can't make
- * an official declaration.
- *
- * This is your unofficial assurance that libpng from version 0.71 and
- * upward through 1.2.36 are Y2K compliant. It is my belief that earlier
- * versions were also Y2K compliant.
- *
- * Libpng only has three year fields. One is a 2-byte unsigned integer
- * that will hold years up to 65535. The other two hold the date in text
- * format, and will hold years up to 9999.
- *
- * The integer is
- * "png_uint_16 year" in png_time_struct.
- *
- * The strings are
- * "png_charp time_buffer" in png_struct and
- * "near_time_buffer", which is a local character string in png.c.
- *
- * There are seven time-related functions:
- * png.c: png_convert_to_rfc_1123() in png.c
- * (formerly png_convert_to_rfc_1152() in error)
- * png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c
- * png_convert_from_time_t() in pngwrite.c
- * png_get_tIME() in pngget.c
- * png_handle_tIME() in pngrutil.c, called in pngread.c
- * png_set_tIME() in pngset.c
- * png_write_tIME() in pngwutil.c, called in pngwrite.c
- *
- * All handle dates properly in a Y2K environment. The
- * png_convert_from_time_t() function calls gmtime() to convert from system
- * clock time, which returns (year - 1900), which we properly convert to
- * the full 4-digit year. There is a possibility that applications using
- * libpng are not passing 4-digit years into the png_convert_to_rfc_1123()
- * function, or that they are incorrectly passing only a 2-digit year
- * instead of "year - 1900" into the png_convert_from_struct_tm() function,
- * but this is not under our control. The libpng documentation has always
- * stated that it works with 4-digit years, and the APIs have been
- * documented as such.
- *
- * The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned
- * integer to hold the year, and can hold years as large as 65535.
- *
- * zlib, upon which libpng depends, is also Y2K compliant. It contains
- * no date-related code.
- *
- * Glenn Randers-Pehrson
- * libpng maintainer
- * PNG Development Group
- */
-
-#ifndef PNG_H
-#define PNG_H
-
-/* This is not the place to learn how to use libpng. The file libpng.txt
- * describes how to use libpng, and the file example.c summarizes it
- * with some code on which to build. This file is useful for looking
- * at the actual function definitions and structure components.
- */
-
-/* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.2.36"
-#define PNG_HEADER_VERSION_STRING \
- " libpng version 1.2.36 - May 7, 2009\n"
-
-#define PNG_LIBPNG_VER_SONUM 0
-#define PNG_LIBPNG_VER_DLLNUM 13
-
-/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
-#define PNG_LIBPNG_VER_MAJOR 1
-#define PNG_LIBPNG_VER_MINOR 2
-#define PNG_LIBPNG_VER_RELEASE 36
-/* This should match the numeric part of the final component of
- * PNG_LIBPNG_VER_STRING, omitting any leading zero: */
-
-#define PNG_LIBPNG_VER_BUILD 0
-
-/* Release Status */
-#define PNG_LIBPNG_BUILD_ALPHA 1
-#define PNG_LIBPNG_BUILD_BETA 2
-#define PNG_LIBPNG_BUILD_RC 3
-#define PNG_LIBPNG_BUILD_STABLE 4
-#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7
-
-/* Release-Specific Flags */
-#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with
- PNG_LIBPNG_BUILD_STABLE only */
-#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with
- PNG_LIBPNG_BUILD_SPECIAL */
-#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
- PNG_LIBPNG_BUILD_PRIVATE */
-
-#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE
-
-/* Careful here. At one time, Guy wanted to use 082, but that would be octal.
- * We must not include leading zeros.
- * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
- * version 1.0.0 was mis-numbered 100 instead of 10000). From
- * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release */
-#define PNG_LIBPNG_VER 10236 /* 1.2.36 */
-
-#ifndef PNG_VERSION_INFO_ONLY
-/* include the compression library's header */
-#include "zlib.h"
-#endif
-
-/* include all user configurable info, including optional assembler routines */
-#include "pngconf.h"
-
-/*
- * Added at libpng-1.2.8 */
-/* Ref MSDN: Private as priority over Special
- * VS_FF_PRIVATEBUILD File *was not* built using standard release
- * procedures. If this value is given, the StringFileInfo block must
- * contain a PrivateBuild string.
- *
- * VS_FF_SPECIALBUILD File *was* built by the original company using
- * standard release procedures but is a variation of the standard
- * file of the same version number. If this value is given, the
- * StringFileInfo block must contain a SpecialBuild string.
- */
-
-#if defined(PNG_USER_PRIVATEBUILD)
-# define PNG_LIBPNG_BUILD_TYPE \
- (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE)
-#else
-# if defined(PNG_LIBPNG_SPECIALBUILD)
-# define PNG_LIBPNG_BUILD_TYPE \
- (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL)
-# else
-# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE)
-# endif
-#endif
-
-#ifndef PNG_VERSION_INFO_ONLY
-
-/* Inhibit C++ name-mangling for libpng functions but not for system calls. */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* This file is arranged in several sections. The first section contains
- * structure and type definitions. The second section contains the external
- * library functions, while the third has the internal library functions,
- * which applications aren't expected to use directly.
- */
-
-#ifndef PNG_NO_TYPECAST_NULL
-#define int_p_NULL (int *)NULL
-#define png_bytep_NULL (png_bytep)NULL
-#define png_bytepp_NULL (png_bytepp)NULL
-#define png_doublep_NULL (png_doublep)NULL
-#define png_error_ptr_NULL (png_error_ptr)NULL
-#define png_flush_ptr_NULL (png_flush_ptr)NULL
-#define png_free_ptr_NULL (png_free_ptr)NULL
-#define png_infopp_NULL (png_infopp)NULL
-#define png_malloc_ptr_NULL (png_malloc_ptr)NULL
-#define png_read_status_ptr_NULL (png_read_status_ptr)NULL
-#define png_rw_ptr_NULL (png_rw_ptr)NULL
-#define png_structp_NULL (png_structp)NULL
-#define png_uint_16p_NULL (png_uint_16p)NULL
-#define png_voidp_NULL (png_voidp)NULL
-#define png_write_status_ptr_NULL (png_write_status_ptr)NULL
-#else
-#define int_p_NULL NULL
-#define png_bytep_NULL NULL
-#define png_bytepp_NULL NULL
-#define png_doublep_NULL NULL
-#define png_error_ptr_NULL NULL
-#define png_flush_ptr_NULL NULL
-#define png_free_ptr_NULL NULL
-#define png_infopp_NULL NULL
-#define png_malloc_ptr_NULL NULL
-#define png_read_status_ptr_NULL NULL
-#define png_rw_ptr_NULL NULL
-#define png_structp_NULL NULL
-#define png_uint_16p_NULL NULL
-#define png_voidp_NULL NULL
-#define png_write_status_ptr_NULL NULL
-#endif
-
-/* variables declared in png.c - only it needs to define PNG_NO_EXTERN */
-#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
-/* Version information for C files, stored in png.c. This had better match
- * the version above.
- */
-#ifdef PNG_USE_GLOBAL_ARRAYS
-PNG_EXPORT_VAR (PNG_CONST char) png_libpng_ver[18];
- /* need room for 99.99.99beta99z */
-#else
-#define png_libpng_ver png_get_header_ver(NULL)
-#endif
-
-#ifdef PNG_USE_GLOBAL_ARRAYS
-/* This was removed in version 1.0.5c */
-/* Structures to facilitate easy interlacing. See png.c for more details */
-PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_start[7];
-PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_inc[7];
-PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_ystart[7];
-PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_yinc[7];
-PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_mask[7];
-PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_dsp_mask[7];
-/* This isn't currently used. If you need it, see png.c for more details.
-PNG_EXPORT_VAR (PNG_CONST int FARDATA) png_pass_height[7];
-*/
-#endif
-
-#endif /* PNG_NO_EXTERN */
-
-/* Three color definitions. The order of the red, green, and blue, (and the
- * exact size) is not important, although the size of the fields need to
- * be png_byte or png_uint_16 (as defined below).
- */
-typedef struct png_color_struct
-{
- png_byte red;
- png_byte green;
- png_byte blue;
-} png_color;
-typedef png_color FAR * png_colorp;
-typedef png_color FAR * FAR * png_colorpp;
-
-typedef struct png_color_16_struct
-{
- png_byte index; /* used for palette files */
- png_uint_16 red; /* for use in red green blue files */
- png_uint_16 green;
- png_uint_16 blue;
- png_uint_16 gray; /* for use in grayscale files */
-} png_color_16;
-typedef png_color_16 FAR * png_color_16p;
-typedef png_color_16 FAR * FAR * png_color_16pp;
-
-typedef struct png_color_8_struct
-{
- png_byte red; /* for use in red green blue files */
- png_byte green;
- png_byte blue;
- png_byte gray; /* for use in grayscale files */
- png_byte alpha; /* for alpha channel files */
-} png_color_8;
-typedef png_color_8 FAR * png_color_8p;
-typedef png_color_8 FAR * FAR * png_color_8pp;
-
-/*
- * The following two structures are used for the in-core representation
- * of sPLT chunks.
- */
-typedef struct png_sPLT_entry_struct
-{
- png_uint_16 red;
- png_uint_16 green;
- png_uint_16 blue;
- png_uint_16 alpha;
- png_uint_16 frequency;
-} png_sPLT_entry;
-typedef png_sPLT_entry FAR * png_sPLT_entryp;
-typedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp;
-
-/* When the depth of the sPLT palette is 8 bits, the color and alpha samples
- * occupy the LSB of their respective members, and the MSB of each member
- * is zero-filled. The frequency member always occupies the full 16 bits.
- */
-
-typedef struct png_sPLT_struct
-{
- png_charp name; /* palette name */
- png_byte depth; /* depth of palette samples */
- png_sPLT_entryp entries; /* palette entries */
- png_int_32 nentries; /* number of palette entries */
-} png_sPLT_t;
-typedef png_sPLT_t FAR * png_sPLT_tp;
-typedef png_sPLT_t FAR * FAR * png_sPLT_tpp;
-
-#ifdef PNG_TEXT_SUPPORTED
-/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file,
- * and whether that contents is compressed or not. The "key" field
- * points to a regular zero-terminated C string. The "text", "lang", and
- * "lang_key" fields can be regular C strings, empty strings, or NULL pointers.
- * However, the * structure returned by png_get_text() will always contain
- * regular zero-terminated C strings (possibly empty), never NULL pointers,
- * so they can be safely used in printf() and other string-handling functions.
- */
-typedef struct png_text_struct
-{
- int compression; /* compression value:
- -1: tEXt, none
- 0: zTXt, deflate
- 1: iTXt, none
- 2: iTXt, deflate */
- png_charp key; /* keyword, 1-79 character description of "text" */
- png_charp text; /* comment, may be an empty string (ie "")
- or a NULL pointer */
- png_size_t text_length; /* length of the text string */
-#ifdef PNG_iTXt_SUPPORTED
- png_size_t itxt_length; /* length of the itxt string */
- png_charp lang; /* language code, 0-79 characters
- or a NULL pointer */
- png_charp lang_key; /* keyword translated UTF-8 string, 0 or more
- chars or a NULL pointer */
-#endif
-} png_text;
-typedef png_text FAR * png_textp;
-typedef png_text FAR * FAR * png_textpp;
-#endif
-
-/* Supported compression types for text in PNG files (tEXt, and zTXt).
- * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */
-#define PNG_TEXT_COMPRESSION_NONE_WR -3
-#define PNG_TEXT_COMPRESSION_zTXt_WR -2
-#define PNG_TEXT_COMPRESSION_NONE -1
-#define PNG_TEXT_COMPRESSION_zTXt 0
-#define PNG_ITXT_COMPRESSION_NONE 1
-#define PNG_ITXT_COMPRESSION_zTXt 2
-#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */
-
-/* png_time is a way to hold the time in an machine independent way.
- * Two conversions are provided, both from time_t and struct tm. There
- * is no portable way to convert to either of these structures, as far
- * as I know. If you know of a portable way, send it to me. As a side
- * note - PNG has always been Year 2000 compliant!
- */
-typedef struct png_time_struct
-{
- png_uint_16 year; /* full year, as in, 1995 */
- png_byte month; /* month of year, 1 - 12 */
- png_byte day; /* day of month, 1 - 31 */
- png_byte hour; /* hour of day, 0 - 23 */
- png_byte minute; /* minute of hour, 0 - 59 */
- png_byte second; /* second of minute, 0 - 60 (for leap seconds) */
-} png_time;
-typedef png_time FAR * png_timep;
-typedef png_time FAR * FAR * png_timepp;
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
-/* png_unknown_chunk is a structure to hold queued chunks for which there is
- * no specific support. The idea is that we can use this to queue
- * up private chunks for output even though the library doesn't actually
- * know about their semantics.
- */
-#define PNG_CHUNK_NAME_LENGTH 5
-typedef struct png_unknown_chunk_t
-{
- png_byte name[PNG_CHUNK_NAME_LENGTH];
- png_byte *data;
- png_size_t size;
-
- /* libpng-using applications should NOT directly modify this byte. */
- png_byte location; /* mode of operation at read time */
-}
-png_unknown_chunk;
-typedef png_unknown_chunk FAR * png_unknown_chunkp;
-typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp;
-#endif
-
-/* png_info is a structure that holds the information in a PNG file so
- * that the application can find out the characteristics of the image.
- * If you are reading the file, this structure will tell you what is
- * in the PNG file. If you are writing the file, fill in the information
- * you want to put into the PNG file, then call png_write_info().
- * The names chosen should be very close to the PNG specification, so
- * consult that document for information about the meaning of each field.
- *
- * With libpng < 0.95, it was only possible to directly set and read the
- * the values in the png_info_struct, which meant that the contents and
- * order of the values had to remain fixed. With libpng 0.95 and later,
- * however, there are now functions that abstract the contents of
- * png_info_struct from the application, so this makes it easier to use
- * libpng with dynamic libraries, and even makes it possible to use
- * libraries that don't have all of the libpng ancillary chunk-handing
- * functionality.
- *
- * In any case, the order of the parameters in png_info_struct should NOT
- * be changed for as long as possible to keep compatibility with applications
- * that use the old direct-access method with png_info_struct.
- *
- * The following members may have allocated storage attached that should be
- * cleaned up before the structure is discarded: palette, trans, text,
- * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile,
- * splt_palettes, scal_unit, row_pointers, and unknowns. By default, these
- * are automatically freed when the info structure is deallocated, if they were
- * allocated internally by libpng. This behavior can be changed by means
- * of the png_data_freer() function.
- *
- * More allocation details: all the chunk-reading functions that
- * change these members go through the corresponding png_set_*
- * functions. A function to clear these members is available: see
- * png_free_data(). The png_set_* functions do not depend on being
- * able to point info structure members to any of the storage they are
- * passed (they make their own copies), EXCEPT that the png_set_text
- * functions use the same storage passed to them in the text_ptr or
- * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns
- * functions do not make their own copies.
- */
-typedef struct png_info_struct
-{
- /* the following are necessary for every PNG file */
- png_uint_32 width; /* width of image in pixels (from IHDR) */
- png_uint_32 height; /* height of image in pixels (from IHDR) */
- png_uint_32 valid; /* valid chunk data (see PNG_INFO_ below) */
- png_uint_32 rowbytes; /* bytes needed to hold an untransformed row */
- png_colorp palette; /* array of color values (valid & PNG_INFO_PLTE) */
- png_uint_16 num_palette; /* number of color entries in "palette" (PLTE) */
- png_uint_16 num_trans; /* number of transparent palette color (tRNS) */
- png_byte bit_depth; /* 1, 2, 4, 8, or 16 bits/channel (from IHDR) */
- png_byte color_type; /* see PNG_COLOR_TYPE_ below (from IHDR) */
- /* The following three should have been named *_method not *_type */
- png_byte compression_type; /* must be PNG_COMPRESSION_TYPE_BASE (IHDR) */
- png_byte filter_type; /* must be PNG_FILTER_TYPE_BASE (from IHDR) */
- png_byte interlace_type; /* One of PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
-
- /* The following is informational only on read, and not used on writes. */
- png_byte channels; /* number of data channels per pixel (1, 2, 3, 4) */
- png_byte pixel_depth; /* number of bits per pixel */
- png_byte spare_byte; /* to align the data, and for future use */
- png_byte signature[8]; /* magic bytes read by libpng from start of file */
-
- /* The rest of the data is optional. If you are reading, check the
- * valid field to see if the information in these are valid. If you
- * are writing, set the valid field to those chunks you want written,
- * and initialize the appropriate fields below.
- */
-
-#if defined(PNG_gAMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED)
- /* The gAMA chunk describes the gamma characteristics of the system
- * on which the image was created, normally in the range [1.0, 2.5].
- * Data is valid if (valid & PNG_INFO_gAMA) is non-zero.
- */
- float gamma; /* gamma value of image, if (valid & PNG_INFO_gAMA) */
-#endif
-
-#if defined(PNG_sRGB_SUPPORTED)
- /* GR-P, 0.96a */
- /* Data valid if (valid & PNG_INFO_sRGB) non-zero. */
- png_byte srgb_intent; /* sRGB rendering intent [0, 1, 2, or 3] */
-#endif
-
-#if defined(PNG_TEXT_SUPPORTED)
- /* The tEXt, and zTXt chunks contain human-readable textual data in
- * uncompressed, compressed, and optionally compressed forms, respectively.
- * The data in "text" is an array of pointers to uncompressed,
- * null-terminated C strings. Each chunk has a keyword that describes the
- * textual data contained in that chunk. Keywords are not required to be
- * unique, and the text string may be empty. Any number of text chunks may
- * be in an image.
- */
- int num_text; /* number of comments read/to write */
- int max_text; /* current size of text array */
- png_textp text; /* array of comments read/to write */
-#endif /* PNG_TEXT_SUPPORTED */
-
-#if defined(PNG_tIME_SUPPORTED)
- /* The tIME chunk holds the last time the displayed image data was
- * modified. See the png_time struct for the contents of this struct.
- */
- png_time mod_time;
-#endif
-
-#if defined(PNG_sBIT_SUPPORTED)
- /* The sBIT chunk specifies the number of significant high-order bits
- * in the pixel data. Values are in the range [1, bit_depth], and are
- * only specified for the channels in the pixel data. The contents of
- * the low-order bits is not specified. Data is valid if
- * (valid & PNG_INFO_sBIT) is non-zero.
- */
- png_color_8 sig_bit; /* significant bits in color channels */
-#endif
-
-#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \
-defined(PNG_READ_BACKGROUND_SUPPORTED)
- /* The tRNS chunk supplies transparency data for paletted images and
- * other image types that don't need a full alpha channel. There are
- * "num_trans" transparency values for a paletted image, stored in the
- * same order as the palette colors, starting from index 0. Values
- * for the data are in the range [0, 255], ranging from fully transparent
- * to fully opaque, respectively. For non-paletted images, there is a
- * single color specified that should be treated as fully transparent.
- * Data is valid if (valid & PNG_INFO_tRNS) is non-zero.
- */
- png_bytep trans; /* transparent values for paletted image */
- png_color_16 trans_values; /* transparent color for non-palette image */
-#endif
-
-#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- /* The bKGD chunk gives the suggested image background color if the
- * display program does not have its own background color and the image
- * is needs to composited onto a background before display. The colors
- * in "background" are normally in the same color space/depth as the
- * pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero.
- */
- png_color_16 background;
-#endif
-
-#if defined(PNG_oFFs_SUPPORTED)
- /* The oFFs chunk gives the offset in "offset_unit_type" units rightwards
- * and downwards from the top-left corner of the display, page, or other
- * application-specific co-ordinate space. See the PNG_OFFSET_ defines
- * below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero.
- */
- png_int_32 x_offset; /* x offset on page */
- png_int_32 y_offset; /* y offset on page */
- png_byte offset_unit_type; /* offset units type */
-#endif
-
-#if defined(PNG_pHYs_SUPPORTED)
- /* The pHYs chunk gives the physical pixel density of the image for
- * display or printing in "phys_unit_type" units (see PNG_RESOLUTION_
- * defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero.
- */
- png_uint_32 x_pixels_per_unit; /* horizontal pixel density */
- png_uint_32 y_pixels_per_unit; /* vertical pixel density */
- png_byte phys_unit_type; /* resolution type (see PNG_RESOLUTION_ below) */
-#endif
-
-#if defined(PNG_hIST_SUPPORTED)
- /* The hIST chunk contains the relative frequency or importance of the
- * various palette entries, so that a viewer can intelligently select a
- * reduced-color palette, if required. Data is an array of "num_palette"
- * values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST)
- * is non-zero.
- */
- png_uint_16p hist;
-#endif
-
-#ifdef PNG_cHRM_SUPPORTED
- /* The cHRM chunk describes the CIE color characteristics of the monitor
- * on which the PNG was created. This data allows the viewer to do gamut
- * mapping of the input image to ensure that the viewer sees the same
- * colors in the image as the creator. Values are in the range
- * [0.0, 0.8]. Data valid if (valid & PNG_INFO_cHRM) non-zero.
- */
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- float x_white;
- float y_white;
- float x_red;
- float y_red;
- float x_green;
- float y_green;
- float x_blue;
- float y_blue;
-#endif
-#endif
-
-#if defined(PNG_pCAL_SUPPORTED)
- /* The pCAL chunk describes a transformation between the stored pixel
- * values and original physical data values used to create the image.
- * The integer range [0, 2^bit_depth - 1] maps to the floating-point
- * range given by [pcal_X0, pcal_X1], and are further transformed by a
- * (possibly non-linear) transformation function given by "pcal_type"
- * and "pcal_params" into "pcal_units". Please see the PNG_EQUATION_
- * defines below, and the PNG-Group's PNG extensions document for a
- * complete description of the transformations and how they should be
- * implemented, and for a description of the ASCII parameter strings.
- * Data values are valid if (valid & PNG_INFO_pCAL) non-zero.
- */
- png_charp pcal_purpose; /* pCAL chunk description string */
- png_int_32 pcal_X0; /* minimum value */
- png_int_32 pcal_X1; /* maximum value */
- png_charp pcal_units; /* Latin-1 string giving physical units */
- png_charpp pcal_params; /* ASCII strings containing parameter values */
- png_byte pcal_type; /* equation type (see PNG_EQUATION_ below) */
- png_byte pcal_nparams; /* number of parameters given in pcal_params */
-#endif
-
-/* New members added in libpng-1.0.6 */
-#ifdef PNG_FREE_ME_SUPPORTED
- png_uint_32 free_me; /* flags items libpng is responsible for freeing */
-#endif
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
- /* storage for unknown chunks that the library doesn't recognize. */
- png_unknown_chunkp unknown_chunks;
- png_size_t unknown_chunks_num;
-#endif
-
-#if defined(PNG_iCCP_SUPPORTED)
- /* iCCP chunk data. */
- png_charp iccp_name; /* profile name */
- png_charp iccp_profile; /* International Color Consortium profile data */
- /* Note to maintainer: should be png_bytep */
- png_uint_32 iccp_proflen; /* ICC profile data length */
- png_byte iccp_compression; /* Always zero */
-#endif
-
-#if defined(PNG_sPLT_SUPPORTED)
- /* data on sPLT chunks (there may be more than one). */
- png_sPLT_tp splt_palettes;
- png_uint_32 splt_palettes_num;
-#endif
-
-#if defined(PNG_sCAL_SUPPORTED)
- /* The sCAL chunk describes the actual physical dimensions of the
- * subject matter of the graphic. The chunk contains a unit specification
- * a byte value, and two ASCII strings representing floating-point
- * values. The values are width and height corresponsing to one pixel
- * in the image. This external representation is converted to double
- * here. Data values are valid if (valid & PNG_INFO_sCAL) is non-zero.
- */
- png_byte scal_unit; /* unit of physical scale */
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- double scal_pixel_width; /* width of one pixel */
- double scal_pixel_height; /* height of one pixel */
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
- png_charp scal_s_width; /* string containing height */
- png_charp scal_s_height; /* string containing width */
-#endif
-#endif
-
-#if defined(PNG_INFO_IMAGE_SUPPORTED)
- /* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS) non-zero */
- /* Data valid if (valid & PNG_INFO_IDAT) non-zero */
- png_bytepp row_pointers; /* the image bits */
-#endif
-
-#if defined(PNG_FIXED_POINT_SUPPORTED) && defined(PNG_gAMA_SUPPORTED)
- png_fixed_point int_gamma; /* gamma of image, if (valid & PNG_INFO_gAMA) */
-#endif
-
-#if defined(PNG_cHRM_SUPPORTED) && defined(PNG_FIXED_POINT_SUPPORTED)
- png_fixed_point int_x_white;
- png_fixed_point int_y_white;
- png_fixed_point int_x_red;
- png_fixed_point int_y_red;
- png_fixed_point int_x_green;
- png_fixed_point int_y_green;
- png_fixed_point int_x_blue;
- png_fixed_point int_y_blue;
-#endif
-
-} png_info;
-
-typedef png_info FAR * png_infop;
-typedef png_info FAR * FAR * png_infopp;
-
-/* Maximum positive integer used in PNG is (2^31)-1 */
-#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL)
-#define PNG_UINT_32_MAX ((png_uint_32)(-1))
-#define PNG_SIZE_MAX ((png_size_t)(-1))
-#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
-/* PNG_MAX_UINT is deprecated; use PNG_UINT_31_MAX instead. */
-#define PNG_MAX_UINT PNG_UINT_31_MAX
-#endif
-
-/* These describe the color_type field in png_info. */
-/* color type masks */
-#define PNG_COLOR_MASK_PALETTE 1
-#define PNG_COLOR_MASK_COLOR 2
-#define PNG_COLOR_MASK_ALPHA 4
-
-/* color types. Note that not all combinations are legal */
-#define PNG_COLOR_TYPE_GRAY 0
-#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE)
-#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR)
-#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA)
-#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA)
-/* aliases */
-#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA
-#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA
-
-/* This is for compression type. PNG 1.0-1.2 only define the single type. */
-#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */
-#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE
-
-/* This is for filter type. PNG 1.0-1.2 only define the single type. */
-#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */
-#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */
-#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE
-
-/* These are for the interlacing type. These values should NOT be changed. */
-#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */
-#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */
-#define PNG_INTERLACE_LAST 2 /* Not a valid value */
-
-/* These are for the oFFs chunk. These values should NOT be changed. */
-#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */
-#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */
-#define PNG_OFFSET_LAST 2 /* Not a valid value */
-
-/* These are for the pCAL chunk. These values should NOT be changed. */
-#define PNG_EQUATION_LINEAR 0 /* Linear transformation */
-#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */
-#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */
-#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */
-#define PNG_EQUATION_LAST 4 /* Not a valid value */
-
-/* These are for the sCAL chunk. These values should NOT be changed. */
-#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */
-#define PNG_SCALE_METER 1 /* meters per pixel */
-#define PNG_SCALE_RADIAN 2 /* radians per pixel */
-#define PNG_SCALE_LAST 3 /* Not a valid value */
-
-/* These are for the pHYs chunk. These values should NOT be changed. */
-#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */
-#define PNG_RESOLUTION_METER 1 /* pixels/meter */
-#define PNG_RESOLUTION_LAST 2 /* Not a valid value */
-
-/* These are for the sRGB chunk. These values should NOT be changed. */
-#define PNG_sRGB_INTENT_PERCEPTUAL 0
-#define PNG_sRGB_INTENT_RELATIVE 1
-#define PNG_sRGB_INTENT_SATURATION 2
-#define PNG_sRGB_INTENT_ABSOLUTE 3
-#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */
-
-/* This is for text chunks */
-#define PNG_KEYWORD_MAX_LENGTH 79
-
-/* Maximum number of entries in PLTE/sPLT/tRNS arrays */
-#define PNG_MAX_PALETTE_LENGTH 256
-
-/* These determine if an ancillary chunk's data has been successfully read
- * from the PNG header, or if the application has filled in the corresponding
- * data in the info_struct to be written into the output file. The values
- * of the PNG_INFO_<chunk> defines should NOT be changed.
- */
-#define PNG_INFO_gAMA 0x0001
-#define PNG_INFO_sBIT 0x0002
-#define PNG_INFO_cHRM 0x0004
-#define PNG_INFO_PLTE 0x0008
-#define PNG_INFO_tRNS 0x0010
-#define PNG_INFO_bKGD 0x0020
-#define PNG_INFO_hIST 0x0040
-#define PNG_INFO_pHYs 0x0080
-#define PNG_INFO_oFFs 0x0100
-#define PNG_INFO_tIME 0x0200
-#define PNG_INFO_pCAL 0x0400
-#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */
-#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */
-#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */
-#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */
-#define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */
-
-/* This is used for the transformation routines, as some of them
- * change these values for the row. It also should enable using
- * the routines for other purposes.
- */
-typedef struct png_row_info_struct
-{
- png_uint_32 width; /* width of row */
- png_uint_32 rowbytes; /* number of bytes in row */
- png_byte color_type; /* color type of row */
- png_byte bit_depth; /* bit depth of row */
- png_byte channels; /* number of channels (1, 2, 3, or 4) */
- png_byte pixel_depth; /* bits per pixel (depth * channels) */
-} png_row_info;
-
-typedef png_row_info FAR * png_row_infop;
-typedef png_row_info FAR * FAR * png_row_infopp;
-
-/* These are the function types for the I/O functions and for the functions
- * that allow the user to override the default I/O functions with his or her
- * own. The png_error_ptr type should match that of user-supplied warning
- * and error functions, while the png_rw_ptr type should match that of the
- * user read/write data functions.
- */
-typedef struct png_struct_def png_struct;
-typedef png_struct FAR * png_structp;
-
-typedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp));
-typedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t));
-typedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp));
-typedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32,
- int));
-typedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32,
- int));
-
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-typedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp, png_infop));
-typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop));
-typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep,
- png_uint_32, int));
-#endif
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_LEGACY_SUPPORTED)
-typedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp,
- png_row_infop, png_bytep));
-#endif
-
-#if defined(PNG_USER_CHUNKS_SUPPORTED)
-typedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp, png_unknown_chunkp));
-#endif
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
-typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp));
-#endif
-
-/* Transform masks for the high-level interface */
-#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */
-#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */
-#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */
-#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */
-#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */
-#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */
-#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */
-#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */
-#define PNG_TRANSFORM_BGR 0x0080 /* read and write */
-#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */
-#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */
-#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */
-#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* WRITE only, deprecated */
-/* Added to libpng-1.2.34 */
-#define PNG_TRANSFORM_STRIP_FILLER_BEFORE 0x0800 /* WRITE only */
-#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* WRITE only */
-
-/* Flags for MNG supported features */
-#define PNG_FLAG_MNG_EMPTY_PLTE 0x01
-#define PNG_FLAG_MNG_FILTER_64 0x04
-#define PNG_ALL_MNG_FEATURES 0x05
-
-typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_size_t));
-typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp));
-
-/* The structure that holds the information to read and write PNG files.
- * The only people who need to care about what is inside of this are the
- * people who will be modifying the library for their own special needs.
- * It should NOT be accessed directly by an application, except to store
- * the jmp_buf.
- */
-
-struct png_struct_def
-{
-#ifdef PNG_SETJMP_SUPPORTED
- jmp_buf jmpbuf; /* used in png_error */
-#endif
- png_error_ptr error_fn; /* function for printing errors and aborting */
- png_error_ptr warning_fn; /* function for printing warnings */
- png_voidp error_ptr; /* user supplied struct for error functions */
- png_rw_ptr write_data_fn; /* function for writing output data */
- png_rw_ptr read_data_fn; /* function for reading input data */
- png_voidp io_ptr; /* ptr to application struct for I/O functions */
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
- png_user_transform_ptr read_user_transform_fn; /* user read transform */
-#endif
-
-#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
- png_user_transform_ptr write_user_transform_fn; /* user write transform */
-#endif
-
-/* These were added in libpng-1.0.2 */
-#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
- png_voidp user_transform_ptr; /* user supplied struct for user transform */
- png_byte user_transform_depth; /* bit depth of user transformed pixels */
- png_byte user_transform_channels; /* channels in user transformed pixels */
-#endif
-#endif
-
- png_uint_32 mode; /* tells us where we are in the PNG file */
- png_uint_32 flags; /* flags indicating various things to libpng */
- png_uint_32 transformations; /* which transformations to perform */
-
- z_stream zstream; /* pointer to decompression structure (below) */
- png_bytep zbuf; /* buffer for zlib */
- png_size_t zbuf_size; /* size of zbuf */
- int zlib_level; /* holds zlib compression level */
- int zlib_method; /* holds zlib compression method */
- int zlib_window_bits; /* holds zlib compression window bits */
- int zlib_mem_level; /* holds zlib compression memory level */
- int zlib_strategy; /* holds zlib compression strategy */
-
- png_uint_32 width; /* width of image in pixels */
- png_uint_32 height; /* height of image in pixels */
- png_uint_32 num_rows; /* number of rows in current pass */
- png_uint_32 usr_width; /* width of row at start of write */
- png_uint_32 rowbytes; /* size of row in bytes */
- png_uint_32 irowbytes; /* size of current interlaced row in bytes */
- png_uint_32 iwidth; /* width of current interlaced row in pixels */
- png_uint_32 row_number; /* current row in interlace pass */
- png_bytep prev_row; /* buffer to save previous (unfiltered) row */
- png_bytep row_buf; /* buffer to save current (unfiltered) row */
-#ifndef PNG_NO_WRITE_FILTER
- png_bytep sub_row; /* buffer to save "sub" row when filtering */
- png_bytep up_row; /* buffer to save "up" row when filtering */
- png_bytep avg_row; /* buffer to save "avg" row when filtering */
- png_bytep paeth_row; /* buffer to save "Paeth" row when filtering */
-#endif
- png_row_info row_info; /* used for transformation routines */
-
- png_uint_32 idat_size; /* current IDAT size for read */
- png_uint_32 crc; /* current chunk CRC value */
- png_colorp palette; /* palette from the input file */
- png_uint_16 num_palette; /* number of color entries in palette */
- png_uint_16 num_trans; /* number of transparency values */
- png_byte chunk_name[5]; /* null-terminated name of current chunk */
- png_byte compression; /* file compression type (always 0) */
- png_byte filter; /* file filter type (always 0) */
- png_byte interlaced; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
- png_byte pass; /* current interlace pass (0 - 6) */
- png_byte do_filter; /* row filter flags (see PNG_FILTER_ below ) */
- png_byte color_type; /* color type of file */
- png_byte bit_depth; /* bit depth of file */
- png_byte usr_bit_depth; /* bit depth of users row */
- png_byte pixel_depth; /* number of bits per pixel */
- png_byte channels; /* number of channels in file */
- png_byte usr_channels; /* channels at start of write */
- png_byte sig_bytes; /* magic bytes read/written from start of file */
-
-#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
-#ifdef PNG_LEGACY_SUPPORTED
- png_byte filler; /* filler byte for pixel expansion */
-#else
- png_uint_16 filler; /* filler bytes for pixel expansion */
-#endif
-#endif
-
-#if defined(PNG_bKGD_SUPPORTED)
- png_byte background_gamma_type;
-# ifdef PNG_FLOATING_POINT_SUPPORTED
- float background_gamma;
-# endif
- png_color_16 background; /* background color in screen gamma space */
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- png_color_16 background_1; /* background normalized to gamma 1.0 */
-#endif
-#endif /* PNG_bKGD_SUPPORTED */
-
-#if defined(PNG_WRITE_FLUSH_SUPPORTED)
- png_flush_ptr output_flush_fn;/* Function for flushing output */
- png_uint_32 flush_dist; /* how many rows apart to flush, 0 - no flush */
- png_uint_32 flush_rows; /* number of rows written since last flush */
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- int gamma_shift; /* number of "insignificant" bits 16-bit gamma */
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- float gamma; /* file gamma value */
- float screen_gamma; /* screen gamma value (display_exponent) */
-#endif
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- png_bytep gamma_table; /* gamma table for 8-bit depth files */
- png_bytep gamma_from_1; /* converts from 1.0 to screen */
- png_bytep gamma_to_1; /* converts from file to 1.0 */
- png_uint_16pp gamma_16_table; /* gamma table for 16-bit depth files */
- png_uint_16pp gamma_16_from_1; /* converts from 1.0 to screen */
- png_uint_16pp gamma_16_to_1; /* converts from file to 1.0 */
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED)
- png_color_8 sig_bit; /* significant bits in each available channel */
-#endif
-
-#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
- png_color_8 shift; /* shift for significant bit tranformation */
-#endif
-
-#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
- || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- png_bytep trans; /* transparency values for paletted files */
- png_color_16 trans_values; /* transparency values for non-paletted files */
-#endif
-
- png_read_status_ptr read_row_fn; /* called after each row is decoded */
- png_write_status_ptr write_row_fn; /* called after each row is encoded */
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
- png_progressive_info_ptr info_fn; /* called after header data fully read */
- png_progressive_row_ptr row_fn; /* called after each prog. row is decoded */
- png_progressive_end_ptr end_fn; /* called after image is complete */
- png_bytep save_buffer_ptr; /* current location in save_buffer */
- png_bytep save_buffer; /* buffer for previously read data */
- png_bytep current_buffer_ptr; /* current location in current_buffer */
- png_bytep current_buffer; /* buffer for recently used data */
- png_uint_32 push_length; /* size of current input chunk */
- png_uint_32 skip_length; /* bytes to skip in input data */
- png_size_t save_buffer_size; /* amount of data now in save_buffer */
- png_size_t save_buffer_max; /* total size of save_buffer */
- png_size_t buffer_size; /* total amount of available input data */
- png_size_t current_buffer_size; /* amount of data now in current_buffer */
- int process_mode; /* what push library is currently doing */
- int cur_palette; /* current push library palette index */
-
-# if defined(PNG_TEXT_SUPPORTED)
- png_size_t current_text_size; /* current size of text input data */
- png_size_t current_text_left; /* how much text left to read in input */
- png_charp current_text; /* current text chunk buffer */
- png_charp current_text_ptr; /* current location in current_text */
-# endif /* PNG_TEXT_SUPPORTED */
-#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
-
-#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
-/* for the Borland special 64K segment handler */
- png_bytepp offset_table_ptr;
- png_bytep offset_table;
- png_uint_16 offset_table_number;
- png_uint_16 offset_table_count;
- png_uint_16 offset_table_count_free;
-#endif
-
-#if defined(PNG_READ_DITHER_SUPPORTED)
- png_bytep palette_lookup; /* lookup table for dithering */
- png_bytep dither_index; /* index translation for palette files */
-#endif
-
-#if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_hIST_SUPPORTED)
- png_uint_16p hist; /* histogram */
-#endif
-
-#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)
- png_byte heuristic_method; /* heuristic for row filter selection */
- png_byte num_prev_filters; /* number of weights for previous rows */
- png_bytep prev_filters; /* filter type(s) of previous row(s) */
- png_uint_16p filter_weights; /* weight(s) for previous line(s) */
- png_uint_16p inv_filter_weights; /* 1/weight(s) for previous line(s) */
- png_uint_16p filter_costs; /* relative filter calculation cost */
- png_uint_16p inv_filter_costs; /* 1/relative filter calculation cost */
-#endif
-
-#if defined(PNG_TIME_RFC1123_SUPPORTED)
- png_charp time_buffer; /* String to hold RFC 1123 time text */
-#endif
-
-/* New members added in libpng-1.0.6 */
-
-#ifdef PNG_FREE_ME_SUPPORTED
- png_uint_32 free_me; /* flags items libpng is responsible for freeing */
-#endif
-
-#if defined(PNG_USER_CHUNKS_SUPPORTED)
- png_voidp user_chunk_ptr;
- png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */
-#endif
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
- int num_chunk_list;
- png_bytep chunk_list;
-#endif
-
-/* New members added in libpng-1.0.3 */
-#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
- png_byte rgb_to_gray_status;
- /* These were changed from png_byte in libpng-1.0.6 */
- png_uint_16 rgb_to_gray_red_coeff;
- png_uint_16 rgb_to_gray_green_coeff;
- png_uint_16 rgb_to_gray_blue_coeff;
-#endif
-
-/* New member added in libpng-1.0.4 (renamed in 1.0.9) */
-#if defined(PNG_MNG_FEATURES_SUPPORTED) || \
- defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
- defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
-/* changed from png_byte to png_uint_32 at version 1.2.0 */
-#ifdef PNG_1_0_X
- png_byte mng_features_permitted;
-#else
- png_uint_32 mng_features_permitted;
-#endif /* PNG_1_0_X */
-#endif
-
-/* New member added in libpng-1.0.7 */
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- png_fixed_point int_gamma;
-#endif
-
-/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */
-#if defined(PNG_MNG_FEATURES_SUPPORTED)
- png_byte filter_type;
-#endif
-
-#if defined(PNG_1_0_X)
-/* New member added in libpng-1.0.10, ifdef'ed out in 1.2.0 */
- png_uint_32 row_buf_size;
-#endif
-
-/* New members added in libpng-1.2.0 */
-#if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
-# if !defined(PNG_1_0_X)
-# if defined(PNG_MMX_CODE_SUPPORTED)
- png_byte mmx_bitdepth_threshold;
- png_uint_32 mmx_rowbytes_threshold;
-# endif
- png_uint_32 asm_flags;
-# endif
-#endif
-
-/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */
-#ifdef PNG_USER_MEM_SUPPORTED
- png_voidp mem_ptr; /* user supplied struct for mem functions */
- png_malloc_ptr malloc_fn; /* function for allocating memory */
- png_free_ptr free_fn; /* function for freeing memory */
-#endif
-
-/* New member added in libpng-1.0.13 and 1.2.0 */
- png_bytep big_row_buf; /* buffer to save current (unfiltered) row */
-
-#if defined(PNG_READ_DITHER_SUPPORTED)
-/* The following three members were added at version 1.0.14 and 1.2.4 */
- png_bytep dither_sort; /* working sort array */
- png_bytep index_to_palette; /* where the original index currently is */
- /* in the palette */
- png_bytep palette_to_index; /* which original index points to this */
- /* palette color */
-#endif
-
-/* New members added in libpng-1.0.16 and 1.2.6 */
- png_byte compression_type;
-
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
- png_uint_32 user_width_max;
- png_uint_32 user_height_max;
-#endif
-
-/* New member added in libpng-1.0.25 and 1.2.17 */
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
- /* storage for unknown chunk that the library doesn't recognize. */
- png_unknown_chunk unknown_chunk;
-#endif
-
-/* New members added in libpng-1.2.26 */
- png_uint_32 old_big_row_buf_size, old_prev_row_size;
-
-/* New member added in libpng-1.2.30 */
- png_charp chunkdata; /* buffer for reading chunk data */
-
-};
-
-
-/* This triggers a compiler error in png.c, if png.c and png.h
- * do not agree upon the version number.
- */
-typedef png_structp version_1_2_36;
-
-typedef png_struct FAR * FAR * png_structpp;
-
-/* Here are the function definitions most commonly used. This is not
- * the place to find out how to use libpng. See libpng.txt for the
- * full explanation, see example.c for the summary. This just provides
- * a simple one line description of the use of each function.
- */
-
-/* Returns the version number of the library */
-extern PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void));
-
-/* Tell lib we have already handled the first <num_bytes> magic bytes.
- * Handling more than 8 bytes from the beginning of the file is an error.
- */
-extern PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr,
- int num_bytes));
-
-/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a
- * PNG file. Returns zero if the supplied bytes match the 8-byte PNG
- * signature, and non-zero otherwise. Having num_to_check == 0 or
- * start > 7 will always fail (ie return non-zero).
- */
-extern PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start,
- png_size_t num_to_check));
-
-/* Simple signature checking function. This is the same as calling
- * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n).
- */
-extern PNG_EXPORT(int,png_check_sig) PNGARG((png_bytep sig, int num));
-
-/* Allocate and initialize png_ptr struct for reading, and any other memory. */
-extern PNG_EXPORT(png_structp,png_create_read_struct)
- PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn));
-
-/* Allocate and initialize png_ptr struct for writing, and any other memory */
-extern PNG_EXPORT(png_structp,png_create_write_struct)
- PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn));
-
-#ifdef PNG_WRITE_SUPPORTED
-extern PNG_EXPORT(png_uint_32,png_get_compression_buffer_size)
- PNGARG((png_structp png_ptr));
-#endif
-
-#ifdef PNG_WRITE_SUPPORTED
-extern PNG_EXPORT(void,png_set_compression_buffer_size)
- PNGARG((png_structp png_ptr, png_uint_32 size));
-#endif
-
-/* Reset the compression stream */
-extern PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr));
-
-/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */
-#ifdef PNG_USER_MEM_SUPPORTED
-extern PNG_EXPORT(png_structp,png_create_read_struct_2)
- PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
- png_malloc_ptr malloc_fn, png_free_ptr free_fn));
-extern PNG_EXPORT(png_structp,png_create_write_struct_2)
- PNGARG((png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
- png_malloc_ptr malloc_fn, png_free_ptr free_fn));
-#endif
-
-/* Write a PNG chunk - size, type, (optional) data, CRC. */
-extern PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr,
- png_bytep chunk_name, png_bytep data, png_size_t length));
-
-/* Write the start of a PNG chunk - length and chunk name. */
-extern PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr,
- png_bytep chunk_name, png_uint_32 length));
-
-/* Write the data of a PNG chunk started with png_write_chunk_start(). */
-extern PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr,
- png_bytep data, png_size_t length));
-
-/* Finish a chunk started with png_write_chunk_start() (includes CRC). */
-extern PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr));
-
-/* Allocate and initialize the info structure */
-extern PNG_EXPORT(png_infop,png_create_info_struct)
- PNGARG((png_structp png_ptr));
-
-#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
-/* Initialize the info structure (old interface - DEPRECATED) */
-extern PNG_EXPORT(void,png_info_init) PNGARG((png_infop info_ptr));
-#undef png_info_init
-#define png_info_init(info_ptr) png_info_init_3(&info_ptr,\
- png_sizeof(png_info));
-#endif
-
-extern PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr,
- png_size_t png_info_struct_size));
-
-/* Writes all the PNG information before the image. */
-extern PNG_EXPORT(void,png_write_info_before_PLTE) PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-extern PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-/* read the information before the actual image data. */
-extern PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-#endif
-
-#if defined(PNG_TIME_RFC1123_SUPPORTED)
-extern PNG_EXPORT(png_charp,png_convert_to_rfc1123)
- PNGARG((png_structp png_ptr, png_timep ptime));
-#endif
-
-#if !defined(_WIN32_WCE)
-/* "time.h" functions are not supported on WindowsCE */
-#if defined(PNG_WRITE_tIME_SUPPORTED)
-/* convert from a struct tm to png_time */
-extern PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime,
- struct tm FAR * ttime));
-
-/* convert from time_t to png_time. Uses gmtime() */
-extern PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime,
- time_t ttime));
-#endif /* PNG_WRITE_tIME_SUPPORTED */
-#endif /* _WIN32_WCE */
-
-#if defined(PNG_READ_EXPAND_SUPPORTED)
-/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */
-extern PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr));
-#if !defined(PNG_1_0_X)
-extern PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp
- png_ptr));
-#endif
-extern PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr));
-extern PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr));
-#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
-/* Deprecated */
-extern PNG_EXPORT(void,png_set_gray_1_2_4_to_8) PNGARG((png_structp png_ptr));
-#endif
-#endif
-
-#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
-/* Use blue, green, red order for pixels. */
-extern PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
-/* Expand the grayscale to 24-bit RGB if necessary. */
-extern PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
-/* Reduce RGB to grayscale. */
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr,
- int error_action, double red, double green ));
-#endif
-extern PNG_EXPORT(void,png_set_rgb_to_gray_fixed) PNGARG((png_structp png_ptr,
- int error_action, png_fixed_point red, png_fixed_point green ));
-extern PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_structp
- png_ptr));
-#endif
-
-extern PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth,
- png_colorp palette));
-
-#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
-extern PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
- defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
-extern PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
- defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
-extern PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
-/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */
-extern PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr,
- png_uint_32 filler, int flags));
-/* The values of the PNG_FILLER_ defines should NOT be changed */
-#define PNG_FILLER_BEFORE 0
-#define PNG_FILLER_AFTER 1
-/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */
-#if !defined(PNG_1_0_X)
-extern PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr,
- png_uint_32 filler, int flags));
-#endif
-#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */
-
-#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
-/* Swap bytes in 16-bit depth files. */
-extern PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
-/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */
-extern PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
-/* Swap packing order of pixels in bytes. */
-extern PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
-/* Converts files to legal bit depths. */
-extern PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr,
- png_color_8p true_bits));
-#endif
-
-#if defined(PNG_READ_INTERLACING_SUPPORTED) || \
- defined(PNG_WRITE_INTERLACING_SUPPORTED)
-/* Have the code handle the interlacing. Returns the number of passes. */
-extern PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
-/* Invert monochrome files */
-extern PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
-/* Handle alpha and tRNS by replacing with a background color. */
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr,
- png_color_16p background_color, int background_gamma_code,
- int need_expand, double background_gamma));
-#endif
-#define PNG_BACKGROUND_GAMMA_UNKNOWN 0
-#define PNG_BACKGROUND_GAMMA_SCREEN 1
-#define PNG_BACKGROUND_GAMMA_FILE 2
-#define PNG_BACKGROUND_GAMMA_UNIQUE 3
-#endif
-
-#if defined(PNG_READ_16_TO_8_SUPPORTED)
-/* strip the second byte of information from a 16-bit depth file. */
-extern PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_DITHER_SUPPORTED)
-/* Turn on dithering, and reduce the palette to the number of colors available. */
-extern PNG_EXPORT(void,png_set_dither) PNGARG((png_structp png_ptr,
- png_colorp palette, int num_palette, int maximum_colors,
- png_uint_16p histogram, int full_dither));
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED)
-/* Handle gamma correction. Screen_gamma=(display_exponent) */
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr,
- double screen_gamma, double default_file_gamma));
-#endif
-#endif
-
-#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
-#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
- defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
-/* Permit or disallow empty PLTE (0: not permitted, 1: permitted) */
-/* Deprecated and will be removed. Use png_permit_mng_features() instead. */
-extern PNG_EXPORT(void,png_permit_empty_plte) PNGARG((png_structp png_ptr,
- int empty_plte_permitted));
-#endif
-#endif
-
-#if defined(PNG_WRITE_FLUSH_SUPPORTED)
-/* Set how many lines between output flushes - 0 for no flushing */
-extern PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows));
-/* Flush the current PNG output buffer */
-extern PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr));
-#endif
-
-/* optional update palette with requested transformations */
-extern PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr));
-
-/* optional call to update the users info structure */
-extern PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-/* read one or more rows of image data. */
-extern PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr,
- png_bytepp row, png_bytepp display_row, png_uint_32 num_rows));
-#endif
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-/* read a row of data. */
-extern PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr,
- png_bytep row,
- png_bytep display_row));
-#endif
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-/* read the whole image into memory at once. */
-extern PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr,
- png_bytepp image));
-#endif
-
-/* write a row of image data */
-extern PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr,
- png_bytep row));
-
-/* write a few rows of image data */
-extern PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr,
- png_bytepp row, png_uint_32 num_rows));
-
-/* write the image data */
-extern PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr,
- png_bytepp image));
-
-/* writes the end of the PNG file. */
-extern PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-/* read the end of the PNG file. */
-extern PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-#endif
-
-/* free any memory associated with the png_info_struct */
-extern PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr,
- png_infopp info_ptr_ptr));
-
-/* free any memory associated with the png_struct and the png_info_structs */
-extern PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp
- png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr));
-
-/* free all memory used by the read (old method - NOT DLL EXPORTED) */
-extern void png_read_destroy PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_infop end_info_ptr));
-
-/* free any memory associated with the png_struct and the png_info_structs */
-extern PNG_EXPORT(void,png_destroy_write_struct)
- PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr));
-
-/* free any memory used in png_ptr struct (old method - NOT DLL EXPORTED) */
-extern void png_write_destroy PNGARG((png_structp png_ptr));
-
-/* set the libpng method of handling chunk CRC errors */
-extern PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr,
- int crit_action, int ancil_action));
-
-/* Values for png_set_crc_action() to say how to handle CRC errors in
- * ancillary and critical chunks, and whether to use the data contained
- * therein. Note that it is impossible to "discard" data in a critical
- * chunk. For versions prior to 0.90, the action was always error/quit,
- * whereas in version 0.90 and later, the action for CRC errors in ancillary
- * chunks is warn/discard. These values should NOT be changed.
- *
- * value action:critical action:ancillary
- */
-#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */
-#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */
-#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */
-#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */
-#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */
-#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */
-
-/* These functions give the user control over the scan-line filtering in
- * libpng and the compression methods used by zlib. These functions are
- * mainly useful for testing, as the defaults should work with most users.
- * Those users who are tight on memory or want faster performance at the
- * expense of compression can modify them. See the compression library
- * header file (zlib.h) for an explination of the compression functions.
- */
-
-/* set the filtering method(s) used by libpng. Currently, the only valid
- * value for "method" is 0.
- */
-extern PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method,
- int filters));
-
-/* Flags for png_set_filter() to say which filters to use. The flags
- * are chosen so that they don't conflict with real filter types
- * below, in case they are supplied instead of the #defined constants.
- * These values should NOT be changed.
- */
-#define PNG_NO_FILTERS 0x00
-#define PNG_FILTER_NONE 0x08
-#define PNG_FILTER_SUB 0x10
-#define PNG_FILTER_UP 0x20
-#define PNG_FILTER_AVG 0x40
-#define PNG_FILTER_PAETH 0x80
-#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \
- PNG_FILTER_AVG | PNG_FILTER_PAETH)
-
-/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now.
- * These defines should NOT be changed.
- */
-#define PNG_FILTER_VALUE_NONE 0
-#define PNG_FILTER_VALUE_SUB 1
-#define PNG_FILTER_VALUE_UP 2
-#define PNG_FILTER_VALUE_AVG 3
-#define PNG_FILTER_VALUE_PAETH 4
-#define PNG_FILTER_VALUE_LAST 5
-
-#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) /* EXPERIMENTAL */
-/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_
- * defines, either the default (minimum-sum-of-absolute-differences), or
- * the experimental method (weighted-minimum-sum-of-absolute-differences).
- *
- * Weights are factors >= 1.0, indicating how important it is to keep the
- * filter type consistent between rows. Larger numbers mean the current
- * filter is that many times as likely to be the same as the "num_weights"
- * previous filters. This is cumulative for each previous row with a weight.
- * There needs to be "num_weights" values in "filter_weights", or it can be
- * NULL if the weights aren't being specified. Weights have no influence on
- * the selection of the first row filter. Well chosen weights can (in theory)
- * improve the compression for a given image.
- *
- * Costs are factors >= 1.0 indicating the relative decoding costs of a
- * filter type. Higher costs indicate more decoding expense, and are
- * therefore less likely to be selected over a filter with lower computational
- * costs. There needs to be a value in "filter_costs" for each valid filter
- * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't
- * setting the costs. Costs try to improve the speed of decompression without
- * unduly increasing the compressed image size.
- *
- * A negative weight or cost indicates the default value is to be used, and
- * values in the range [0.0, 1.0) indicate the value is to remain unchanged.
- * The default values for both weights and costs are currently 1.0, but may
- * change if good general weighting/cost heuristics can be found. If both
- * the weights and costs are set to 1.0, this degenerates the WEIGHTED method
- * to the UNWEIGHTED method, but with added encoding time/computation.
- */
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr,
- int heuristic_method, int num_weights, png_doublep filter_weights,
- png_doublep filter_costs));
-#endif
-#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */
-
-/* Heuristic used for row filter selection. These defines should NOT be
- * changed.
- */
-#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */
-#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */
-#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */
-#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */
-
-/* Set the library compression level. Currently, valid values range from
- * 0 - 9, corresponding directly to the zlib compression levels 0 - 9
- * (0 - no compression, 9 - "maximal" compression). Note that tests have
- * shown that zlib compression levels 3-6 usually perform as well as level 9
- * for PNG images, and do considerably fewer caclulations. In the future,
- * these values may not correspond directly to the zlib compression levels.
- */
-extern PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr,
- int level));
-
-extern PNG_EXPORT(void,png_set_compression_mem_level)
- PNGARG((png_structp png_ptr, int mem_level));
-
-extern PNG_EXPORT(void,png_set_compression_strategy)
- PNGARG((png_structp png_ptr, int strategy));
-
-extern PNG_EXPORT(void,png_set_compression_window_bits)
- PNGARG((png_structp png_ptr, int window_bits));
-
-extern PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr,
- int method));
-
-/* These next functions are called for input/output, memory, and error
- * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c,
- * and call standard C I/O routines such as fread(), fwrite(), and
- * fprintf(). These functions can be made to use other I/O routines
- * at run time for those applications that need to handle I/O in a
- * different manner by calling png_set_???_fn(). See libpng.txt for
- * more information.
- */
-
-#if !defined(PNG_NO_STDIO)
-/* Initialize the input/output for the PNG file to the default functions. */
-extern PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, png_FILE_p fp));
-#endif
-
-/* Replace the (error and abort), and warning functions with user
- * supplied functions. If no messages are to be printed you must still
- * write and use replacement functions. The replacement error_fn should
- * still do a longjmp to the last setjmp location if you are using this
- * method of error handling. If error_fn or warning_fn is NULL, the
- * default function will be used.
- */
-
-extern PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr,
- png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn));
-
-/* Return the user pointer associated with the error functions */
-extern PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr));
-
-/* Replace the default data output functions with a user supplied one(s).
- * If buffered output is not used, then output_flush_fn can be set to NULL.
- * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time
- * output_flush_fn will be ignored (and thus can be NULL).
- * It is probably a mistake to use NULL for output_flush_fn if
- * write_data_fn is not also NULL unless you have built libpng with
- * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's
- * default flush function, which uses the standard *FILE structure, will
- * be used.
- */
-extern PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr,
- png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn));
-
-/* Replace the default data input function with a user supplied one. */
-extern PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr,
- png_voidp io_ptr, png_rw_ptr read_data_fn));
-
-/* Return the user pointer associated with the I/O functions */
-extern PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr));
-
-extern PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr,
- png_read_status_ptr read_row_fn));
-
-extern PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr,
- png_write_status_ptr write_row_fn));
-
-#ifdef PNG_USER_MEM_SUPPORTED
-/* Replace the default memory allocation functions with user supplied one(s). */
-extern PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr,
- png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn));
-/* Return the user pointer associated with the memory functions */
-extern PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_structp png_ptr));
-#endif
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_LEGACY_SUPPORTED)
-extern PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp
- png_ptr, png_user_transform_ptr read_user_transform_fn));
-#endif
-
-#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_LEGACY_SUPPORTED)
-extern PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp
- png_ptr, png_user_transform_ptr write_user_transform_fn));
-#endif
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_LEGACY_SUPPORTED)
-extern PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp
- png_ptr, png_voidp user_transform_ptr, int user_transform_depth,
- int user_transform_channels));
-/* Return the user pointer associated with the user transform functions */
-extern PNG_EXPORT(png_voidp,png_get_user_transform_ptr)
- PNGARG((png_structp png_ptr));
-#endif
-
-#ifdef PNG_USER_CHUNKS_SUPPORTED
-extern PNG_EXPORT(void,png_set_read_user_chunk_fn) PNGARG((png_structp png_ptr,
- png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn));
-extern PNG_EXPORT(png_voidp,png_get_user_chunk_ptr) PNGARG((png_structp
- png_ptr));
-#endif
-
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-/* Sets the function callbacks for the push reader, and a pointer to a
- * user-defined structure available to the callback functions.
- */
-extern PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr,
- png_voidp progressive_ptr,
- png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
- png_progressive_end_ptr end_fn));
-
-/* returns the user pointer associated with the push read functions */
-extern PNG_EXPORT(png_voidp,png_get_progressive_ptr)
- PNGARG((png_structp png_ptr));
-
-/* function to be called when data becomes available */
-extern PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_bytep buffer, png_size_t buffer_size));
-
-/* function that combines rows. Not very much different than the
- * png_combine_row() call. Is this even used?????
- */
-extern PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr,
- png_bytep old_row, png_bytep new_row));
-#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
-
-extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr,
- png_uint_32 size));
-
-#if defined(PNG_1_0_X)
-# define png_malloc_warn png_malloc
-#else
-/* Added at libpng version 1.2.4 */
-extern PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr,
- png_uint_32 size));
-#endif
-
-/* frees a pointer allocated by png_malloc() */
-extern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr));
-
-#if defined(PNG_1_0_X)
-/* Function to allocate memory for zlib. */
-extern PNG_EXPORT(voidpf,png_zalloc) PNGARG((voidpf png_ptr, uInt items,
- uInt size));
-
-/* Function to free memory for zlib */
-extern PNG_EXPORT(void,png_zfree) PNGARG((voidpf png_ptr, voidpf ptr));
-#endif
-
-/* Free data that was allocated internally */
-extern PNG_EXPORT(void,png_free_data) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_32 free_me, int num));
-#ifdef PNG_FREE_ME_SUPPORTED
-/* Reassign responsibility for freeing existing data, whether allocated
- * by libpng or by the application */
-extern PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr,
- png_infop info_ptr, int freer, png_uint_32 mask));
-#endif
-/* assignments for png_data_freer */
-#define PNG_DESTROY_WILL_FREE_DATA 1
-#define PNG_SET_WILL_FREE_DATA 1
-#define PNG_USER_WILL_FREE_DATA 2
-/* Flags for png_ptr->free_me and info_ptr->free_me */
-#define PNG_FREE_HIST 0x0008
-#define PNG_FREE_ICCP 0x0010
-#define PNG_FREE_SPLT 0x0020
-#define PNG_FREE_ROWS 0x0040
-#define PNG_FREE_PCAL 0x0080
-#define PNG_FREE_SCAL 0x0100
-#define PNG_FREE_UNKN 0x0200
-#define PNG_FREE_LIST 0x0400
-#define PNG_FREE_PLTE 0x1000
-#define PNG_FREE_TRNS 0x2000
-#define PNG_FREE_TEXT 0x4000
-#define PNG_FREE_ALL 0x7fff
-#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */
-
-#ifdef PNG_USER_MEM_SUPPORTED
-extern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr,
- png_uint_32 size));
-extern PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr,
- png_voidp ptr));
-#endif
-
-extern PNG_EXPORT(png_voidp,png_memcpy_check) PNGARG((png_structp png_ptr,
- png_voidp s1, png_voidp s2, png_uint_32 size));
-
-extern PNG_EXPORT(png_voidp,png_memset_check) PNGARG((png_structp png_ptr,
- png_voidp s1, int value, png_uint_32 size));
-
-#if defined(USE_FAR_KEYWORD) /* memory model conversion function */
-extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr,
- int check));
-#endif /* USE_FAR_KEYWORD */
-
-#ifndef PNG_NO_ERROR_TEXT
-/* Fatal error in PNG image of libpng - can't continue */
-extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr,
- png_const_charp error_message));
-
-/* The same, but the chunk name is prepended to the error string. */
-extern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr,
- png_const_charp error_message));
-#else
-/* Fatal error in PNG image of libpng - can't continue */
-extern PNG_EXPORT(void,png_err) PNGARG((png_structp png_ptr));
-#endif
-
-#ifndef PNG_NO_WARNINGS
-/* Non-fatal error in libpng. Can continue, but may have a problem. */
-extern PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr,
- png_const_charp warning_message));
-
-#ifdef PNG_READ_SUPPORTED
-/* Non-fatal error in libpng, chunk name is prepended to message. */
-extern PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr,
- png_const_charp warning_message));
-#endif /* PNG_READ_SUPPORTED */
-#endif /* PNG_NO_WARNINGS */
-
-/* The png_set_<chunk> functions are for storing values in the png_info_struct.
- * Similarly, the png_get_<chunk> calls are used to read values from the
- * png_info_struct, either storing the parameters in the passed variables, or
- * setting pointers into the png_info_struct where the data is stored. The
- * png_get_<chunk> functions return a non-zero value if the data was available
- * in info_ptr, or return zero and do not change any of the parameters if the
- * data was not available.
- *
- * These functions should be used instead of directly accessing png_info
- * to avoid problems with future changes in the size and internal layout of
- * png_info_struct.
- */
-/* Returns "flag" if chunk data is valid in info_ptr. */
-extern PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr,
-png_infop info_ptr, png_uint_32 flag));
-
-/* Returns number of bytes needed to hold a transformed row. */
-extern PNG_EXPORT(png_uint_32,png_get_rowbytes) PNGARG((png_structp png_ptr,
-png_infop info_ptr));
-
-#if defined(PNG_INFO_IMAGE_SUPPORTED)
-/* Returns row_pointers, which is an array of pointers to scanlines that was
-returned from png_read_png(). */
-extern PNG_EXPORT(png_bytepp,png_get_rows) PNGARG((png_structp png_ptr,
-png_infop info_ptr));
-/* Set row_pointers, which is an array of pointers to scanlines for use
-by png_write_png(). */
-extern PNG_EXPORT(void,png_set_rows) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_bytepp row_pointers));
-#endif
-
-/* Returns number of color channels in image. */
-extern PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr,
-png_infop info_ptr));
-
-#ifdef PNG_EASY_ACCESS_SUPPORTED
-/* Returns image width in pixels. */
-extern PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-
-/* Returns image height in pixels. */
-extern PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-
-/* Returns image bit_depth. */
-extern PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-
-/* Returns image color_type. */
-extern PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-
-/* Returns image filter_type. */
-extern PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-
-/* Returns image interlace_type. */
-extern PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-
-/* Returns image compression_type. */
-extern PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-
-/* Returns image resolution in pixels per meter, from pHYs chunk data. */
-extern PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-extern PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-extern PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-
-/* Returns pixel aspect ratio, computed from pHYs chunk data. */
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-#endif
-
-/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */
-extern PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-extern PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-extern PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-extern PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_structp
-png_ptr, png_infop info_ptr));
-
-#endif /* PNG_EASY_ACCESS_SUPPORTED */
-
-/* Returns pointer to signature string read from PNG header */
-extern PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr,
-png_infop info_ptr));
-
-#if defined(PNG_bKGD_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_color_16p *background));
-#endif
-
-#if defined(PNG_bKGD_SUPPORTED)
-extern PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_color_16p background));
-#endif
-
-#if defined(PNG_cHRM_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr,
- png_infop info_ptr, double *white_x, double *white_y, double *red_x,
- double *red_y, double *green_x, double *green_y, double *blue_x,
- double *blue_y));
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
-extern PNG_EXPORT(png_uint_32,png_get_cHRM_fixed) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_fixed_point *int_white_x, png_fixed_point
- *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y,
- png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point
- *int_blue_x, png_fixed_point *int_blue_y));
-#endif
-#endif
-
-#if defined(PNG_cHRM_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr,
- png_infop info_ptr, double white_x, double white_y, double red_x,
- double red_y, double green_x, double green_y, double blue_x, double blue_y));
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
-extern PNG_EXPORT(void,png_set_cHRM_fixed) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_fixed_point int_white_x, png_fixed_point int_white_y,
- png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point
- int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x,
- png_fixed_point int_blue_y));
-#endif
-#endif
-
-#if defined(PNG_gAMA_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr,
- png_infop info_ptr, double *file_gamma));
-#endif
-extern PNG_EXPORT(png_uint_32,png_get_gAMA_fixed) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_fixed_point *int_file_gamma));
-#endif
-
-#if defined(PNG_gAMA_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr,
- png_infop info_ptr, double file_gamma));
-#endif
-extern PNG_EXPORT(void,png_set_gAMA_fixed) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_fixed_point int_file_gamma));
-#endif
-
-#if defined(PNG_hIST_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_16p *hist));
-#endif
-
-#if defined(PNG_hIST_SUPPORTED)
-extern PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_16p hist));
-#endif
-
-extern PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_32 *width, png_uint_32 *height,
- int *bit_depth, int *color_type, int *interlace_method,
- int *compression_method, int *filter_method));
-
-extern PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth,
- int color_type, int interlace_method, int compression_method,
- int filter_method));
-
-#if defined(PNG_oFFs_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_int_32 *offset_x, png_int_32 *offset_y,
- int *unit_type));
-#endif
-
-#if defined(PNG_oFFs_SUPPORTED)
-extern PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_int_32 offset_x, png_int_32 offset_y,
- int unit_type));
-#endif
-
-#if defined(PNG_pCAL_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1,
- int *type, int *nparams, png_charp *units, png_charpp *params));
-#endif
-
-#if defined(PNG_pCAL_SUPPORTED)
-extern PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1,
- int type, int nparams, png_charp units, png_charpp params));
-#endif
-
-#if defined(PNG_pHYs_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
-#endif
-
-#if defined(PNG_pHYs_SUPPORTED)
-extern PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type));
-#endif
-
-extern PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_colorp *palette, int *num_palette));
-
-extern PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_colorp palette, int num_palette));
-
-#if defined(PNG_sBIT_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_color_8p *sig_bit));
-#endif
-
-#if defined(PNG_sBIT_SUPPORTED)
-extern PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_color_8p sig_bit));
-#endif
-
-#if defined(PNG_sRGB_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr,
- png_infop info_ptr, int *intent));
-#endif
-
-#if defined(PNG_sRGB_SUPPORTED)
-extern PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr,
- png_infop info_ptr, int intent));
-extern PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr,
- png_infop info_ptr, int intent));
-#endif
-
-#if defined(PNG_iCCP_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_charpp name, int *compression_type,
- png_charpp profile, png_uint_32 *proflen));
- /* Note to maintainer: profile should be png_bytepp */
-#endif
-
-#if defined(PNG_iCCP_SUPPORTED)
-extern PNG_EXPORT(void,png_set_iCCP) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_charp name, int compression_type,
- png_charp profile, png_uint_32 proflen));
- /* Note to maintainer: profile should be png_bytep */
-#endif
-
-#if defined(PNG_sPLT_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_sPLT) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_sPLT_tpp entries));
-#endif
-
-#if defined(PNG_sPLT_SUPPORTED)
-extern PNG_EXPORT(void,png_set_sPLT) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_sPLT_tp entries, int nentries));
-#endif
-
-#if defined(PNG_TEXT_SUPPORTED)
-/* png_get_text also returns the number of text chunks in *num_text */
-extern PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_textp *text_ptr, int *num_text));
-#endif
-
-/*
- * Note while png_set_text() will accept a structure whose text,
- * language, and translated keywords are NULL pointers, the structure
- * returned by png_get_text will always contain regular
- * zero-terminated C strings. They might be empty strings but
- * they will never be NULL pointers.
- */
-
-#if defined(PNG_TEXT_SUPPORTED)
-extern PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_textp text_ptr, int num_text));
-#endif
-
-#if defined(PNG_tIME_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_timep *mod_time));
-#endif
-
-#if defined(PNG_tIME_SUPPORTED)
-extern PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_timep mod_time));
-#endif
-
-#if defined(PNG_tRNS_SUPPORTED)
-extern PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_bytep *trans, int *num_trans,
- png_color_16p *trans_values));
-#endif
-
-#if defined(PNG_tRNS_SUPPORTED)
-extern PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_bytep trans, int num_trans,
- png_color_16p trans_values));
-#endif
-
-#if defined(PNG_tRNS_SUPPORTED)
-#endif
-
-#if defined(PNG_sCAL_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(png_uint_32,png_get_sCAL) PNGARG((png_structp png_ptr,
- png_infop info_ptr, int *unit, double *width, double *height));
-#else
-#ifdef PNG_FIXED_POINT_SUPPORTED
-extern PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_structp png_ptr,
- png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight));
-#endif
-#endif
-#endif /* PNG_sCAL_SUPPORTED */
-
-#if defined(PNG_sCAL_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-extern PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr,
- png_infop info_ptr, int unit, double width, double height));
-#else
-#ifdef PNG_FIXED_POINT_SUPPORTED
-extern PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr,
- png_infop info_ptr, int unit, png_charp swidth, png_charp sheight));
-#endif
-#endif
-#endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
-/* provide a list of chunks and how they are to be handled, if the built-in
- handling or default unknown chunk handling is not desired. Any chunks not
- listed will be handled in the default manner. The IHDR and IEND chunks
- must not be listed.
- keep = 0: follow default behaviour
- = 1: do not keep
- = 2: keep only if safe-to-copy
- = 3: keep even if unsafe-to-copy
-*/
-extern PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp
- png_ptr, int keep, png_bytep chunk_list, int num_chunks));
-extern PNG_EXPORT(void, png_set_unknown_chunks) PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns));
-extern PNG_EXPORT(void, png_set_unknown_chunk_location)
- PNGARG((png_structp png_ptr, png_infop info_ptr, int chunk, int location));
-extern PNG_EXPORT(png_uint_32,png_get_unknown_chunks) PNGARG((png_structp
- png_ptr, png_infop info_ptr, png_unknown_chunkpp entries));
-#endif
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-PNG_EXPORT(int,png_handle_as_unknown) PNGARG((png_structp png_ptr, png_bytep
- chunk_name));
-#endif
-
-/* Png_free_data() will turn off the "valid" flag for anything it frees.
- If you need to turn it off for a chunk that your application has freed,
- you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); */
-extern PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr,
- png_infop info_ptr, int mask));
-
-#if defined(PNG_INFO_IMAGE_SUPPORTED)
-/* The "params" pointer is currently not used and is for future expansion. */
-extern PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr,
- png_infop info_ptr,
- int transforms,
- png_voidp params));
-extern PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr,
- png_infop info_ptr,
- int transforms,
- png_voidp params));
-#endif
-
-/* Define PNG_DEBUG at compile time for debugging information. Higher
- * numbers for PNG_DEBUG mean more debugging information. This has
- * only been added since version 0.95 so it is not implemented throughout
- * libpng yet, but more support will be added as needed.
- */
-#ifdef PNG_DEBUG
-#if (PNG_DEBUG > 0)
-#if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER)
-#include <crtdbg.h>
-#if (PNG_DEBUG > 1)
-#ifndef _DEBUG
-# define _DEBUG
-#endif
-#ifndef png_debug
-#define png_debug(l,m) _RPT0(_CRT_WARN,m PNG_STRING_NEWLINE)
-#endif
-#ifndef png_debug1
-#define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m PNG_STRING_NEWLINE,p1)
-#endif
-#ifndef png_debug2
-#define png_debug2(l,m,p1,p2) _RPT2(_CRT_WARN,m PNG_STRING_NEWLINE,p1,p2)
-#endif
-#endif
-#else /* PNG_DEBUG_FILE || !_MSC_VER */
-#ifndef PNG_DEBUG_FILE
-#define PNG_DEBUG_FILE stderr
-#endif /* PNG_DEBUG_FILE */
-
-#if (PNG_DEBUG > 1)
-/* Note: ["%s"m PNG_STRING_NEWLINE] probably does not work on
- * non-ISO compilers */
-# ifdef __STDC__
-# ifndef png_debug
-# define png_debug(l,m) \
- { \
- int num_tabs=l; \
- fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
- (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":"")))); \
- }
-# endif
-# ifndef png_debug1
-# define png_debug1(l,m,p1) \
- { \
- int num_tabs=l; \
- fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
- (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1); \
- }
-# endif
-# ifndef png_debug2
-# define png_debug2(l,m,p1,p2) \
- { \
- int num_tabs=l; \
- fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \
- (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1,p2); \
- }
-# endif
-# else /* __STDC __ */
-# ifndef png_debug
-# define png_debug(l,m) \
- { \
- int num_tabs=l; \
- char format[256]; \
- snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
- (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
- m,PNG_STRING_NEWLINE); \
- fprintf(PNG_DEBUG_FILE,format); \
- }
-# endif
-# ifndef png_debug1
-# define png_debug1(l,m,p1) \
- { \
- int num_tabs=l; \
- char format[256]; \
- snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
- (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
- m,PNG_STRING_NEWLINE); \
- fprintf(PNG_DEBUG_FILE,format,p1); \
- }
-# endif
-# ifndef png_debug2
-# define png_debug2(l,m,p1,p2) \
- { \
- int num_tabs=l; \
- char format[256]; \
- snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \
- (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \
- m,PNG_STRING_NEWLINE); \
- fprintf(PNG_DEBUG_FILE,format,p1,p2); \
- }
-# endif
-# endif /* __STDC __ */
-#endif /* (PNG_DEBUG > 1) */
-
-#endif /* _MSC_VER */
-#endif /* (PNG_DEBUG > 0) */
-#endif /* PNG_DEBUG */
-#ifndef png_debug
-#define png_debug(l, m)
-#endif
-#ifndef png_debug1
-#define png_debug1(l, m, p1)
-#endif
-#ifndef png_debug2
-#define png_debug2(l, m, p1, p2)
-#endif
-
-extern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr));
-extern PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr));
-extern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr));
-extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr));
-
-#ifdef PNG_MNG_FEATURES_SUPPORTED
-extern PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp
- png_ptr, png_uint_32 mng_features_permitted));
-#endif
-
-/* For use in png_set_keep_unknown, added to version 1.2.6 */
-#define PNG_HANDLE_CHUNK_AS_DEFAULT 0
-#define PNG_HANDLE_CHUNK_NEVER 1
-#define PNG_HANDLE_CHUNK_IF_SAFE 2
-#define PNG_HANDLE_CHUNK_ALWAYS 3
-
-/* Added to version 1.2.0 */
-#if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
-#if defined(PNG_MMX_CODE_SUPPORTED)
-#define PNG_ASM_FLAG_MMX_SUPPORT_COMPILED 0x01 /* not user-settable */
-#define PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU 0x02 /* not user-settable */
-#define PNG_ASM_FLAG_MMX_READ_COMBINE_ROW 0x04
-#define PNG_ASM_FLAG_MMX_READ_INTERLACE 0x08
-#define PNG_ASM_FLAG_MMX_READ_FILTER_SUB 0x10
-#define PNG_ASM_FLAG_MMX_READ_FILTER_UP 0x20
-#define PNG_ASM_FLAG_MMX_READ_FILTER_AVG 0x40
-#define PNG_ASM_FLAG_MMX_READ_FILTER_PAETH 0x80
-#define PNG_ASM_FLAGS_INITIALIZED 0x80000000 /* not user-settable */
-
-#define PNG_MMX_READ_FLAGS ( PNG_ASM_FLAG_MMX_READ_COMBINE_ROW \
- | PNG_ASM_FLAG_MMX_READ_INTERLACE \
- | PNG_ASM_FLAG_MMX_READ_FILTER_SUB \
- | PNG_ASM_FLAG_MMX_READ_FILTER_UP \
- | PNG_ASM_FLAG_MMX_READ_FILTER_AVG \
- | PNG_ASM_FLAG_MMX_READ_FILTER_PAETH )
-#define PNG_MMX_WRITE_FLAGS ( 0 )
-
-#define PNG_MMX_FLAGS ( PNG_ASM_FLAG_MMX_SUPPORT_COMPILED \
- | PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU \
- | PNG_MMX_READ_FLAGS \
- | PNG_MMX_WRITE_FLAGS )
-
-#define PNG_SELECT_READ 1
-#define PNG_SELECT_WRITE 2
-#endif /* PNG_MMX_CODE_SUPPORTED */
-
-#if !defined(PNG_1_0_X)
-/* pngget.c */
-extern PNG_EXPORT(png_uint_32,png_get_mmx_flagmask)
- PNGARG((int flag_select, int *compilerID));
-
-/* pngget.c */
-extern PNG_EXPORT(png_uint_32,png_get_asm_flagmask)
- PNGARG((int flag_select));
-
-/* pngget.c */
-extern PNG_EXPORT(png_uint_32,png_get_asm_flags)
- PNGARG((png_structp png_ptr));
-
-/* pngget.c */
-extern PNG_EXPORT(png_byte,png_get_mmx_bitdepth_threshold)
- PNGARG((png_structp png_ptr));
-
-/* pngget.c */
-extern PNG_EXPORT(png_uint_32,png_get_mmx_rowbytes_threshold)
- PNGARG((png_structp png_ptr));
-
-/* pngset.c */
-extern PNG_EXPORT(void,png_set_asm_flags)
- PNGARG((png_structp png_ptr, png_uint_32 asm_flags));
-
-/* pngset.c */
-extern PNG_EXPORT(void,png_set_mmx_thresholds)
- PNGARG((png_structp png_ptr, png_byte mmx_bitdepth_threshold,
- png_uint_32 mmx_rowbytes_threshold));
-
-#endif /* PNG_1_0_X */
-
-#if !defined(PNG_1_0_X)
-/* png.c, pnggccrd.c, or pngvcrd.c */
-extern PNG_EXPORT(int,png_mmx_support) PNGARG((void));
-#endif /* PNG_1_0_X */
-#endif /* PNG_ASSEMBLER_CODE_SUPPORTED */
-
-/* Strip the prepended error numbers ("#nnn ") from error and warning
- * messages before passing them to the error or warning handler. */
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
-extern PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp
- png_ptr, png_uint_32 strip_mode));
-#endif
-
-/* Added at libpng-1.2.6 */
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
-extern PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp
- png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max));
-extern PNG_EXPORT(png_uint_32,png_get_user_width_max) PNGARG((png_structp
- png_ptr));
-extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp
- png_ptr));
-#endif
-
-
-/* Maintainer: Put new public prototypes here ^, in libpng.3, and project defs */
-
-#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
-/* With these routines we avoid an integer divide, which will be slower on
- * most machines. However, it does take more operations than the corresponding
- * divide method, so it may be slower on a few RISC systems. There are two
- * shifts (by 8 or 16 bits) and an addition, versus a single integer divide.
- *
- * Note that the rounding factors are NOT supposed to be the same! 128 and
- * 32768 are correct for the NODIV code; 127 and 32767 are correct for the
- * standard method.
- *
- * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ]
- */
-
- /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */
-
-# define png_composite(composite, fg, alpha, bg) \
- { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) * (png_uint_16)(alpha) \
- + (png_uint_16)(bg)*(png_uint_16)(255 - \
- (png_uint_16)(alpha)) + (png_uint_16)128); \
- (composite) = (png_byte)((temp + (temp >> 8)) >> 8); }
-
-# define png_composite_16(composite, fg, alpha, bg) \
- { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) * (png_uint_32)(alpha) \
- + (png_uint_32)(bg)*(png_uint_32)(65535L - \
- (png_uint_32)(alpha)) + (png_uint_32)32768L); \
- (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); }
-
-#else /* standard method using integer division */
-
-# define png_composite(composite, fg, alpha, bg) \
- (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \
- (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \
- (png_uint_16)127) / 255)
-
-# define png_composite_16(composite, fg, alpha, bg) \
- (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \
- (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \
- (png_uint_32)32767) / (png_uint_32)65535L)
-
-#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */
-
-/* Inline macros to do direct reads of bytes from the input buffer. These
- * require that you are using an architecture that uses PNG byte ordering
- * (MSB first) and supports unaligned data storage. I think that PowerPC
- * in big-endian mode and 680x0 are the only ones that will support this.
- * The x86 line of processors definitely do not. The png_get_int_32()
- * routine also assumes we are using two's complement format for negative
- * values, which is almost certainly true.
- */
-#if defined(PNG_READ_BIG_ENDIAN_SUPPORTED)
-# define png_get_uint_32(buf) ( *((png_uint_32p) (buf)))
-# define png_get_uint_16(buf) ( *((png_uint_16p) (buf)))
-# define png_get_int_32(buf) ( *((png_int_32p) (buf)))
-#else
-extern PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf));
-extern PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf));
-extern PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf));
-#endif /* !PNG_READ_BIG_ENDIAN_SUPPORTED */
-extern PNG_EXPORT(png_uint_32,png_get_uint_31)
- PNGARG((png_structp png_ptr, png_bytep buf));
-/* No png_get_int_16 -- may be added if there's a real need for it. */
-
-/* Place a 32-bit number into a buffer in PNG byte order (big-endian).
- */
-extern PNG_EXPORT(void,png_save_uint_32)
- PNGARG((png_bytep buf, png_uint_32 i));
-extern PNG_EXPORT(void,png_save_int_32)
- PNGARG((png_bytep buf, png_int_32 i));
-
-/* Place a 16-bit number into a buffer in PNG byte order.
- * The parameter is declared unsigned int, not png_uint_16,
- * just to avoid potential problems on pre-ANSI C compilers.
- */
-extern PNG_EXPORT(void,png_save_uint_16)
- PNGARG((png_bytep buf, unsigned int i));
-/* No png_save_int_16 -- may be added if there's a real need for it. */
-
-/* ************************************************************************* */
-
-/* These next functions are used internally in the code. They generally
- * shouldn't be used unless you are writing code to add or replace some
- * functionality in libpng. More information about most functions can
- * be found in the files where the functions are located.
- */
-
-
-/* Various modes of operation, that are visible to applications because
- * they are used for unknown chunk location.
- */
-#define PNG_HAVE_IHDR 0x01
-#define PNG_HAVE_PLTE 0x02
-#define PNG_HAVE_IDAT 0x04
-#define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */
-#define PNG_HAVE_IEND 0x10
-
-#if defined(PNG_INTERNAL)
-
-/* More modes of operation. Note that after an init, mode is set to
- * zero automatically when the structure is created.
- */
-#define PNG_HAVE_gAMA 0x20
-#define PNG_HAVE_cHRM 0x40
-#define PNG_HAVE_sRGB 0x80
-#define PNG_HAVE_CHUNK_HEADER 0x100
-#define PNG_WROTE_tIME 0x200
-#define PNG_WROTE_INFO_BEFORE_PLTE 0x400
-#define PNG_BACKGROUND_IS_GRAY 0x800
-#define PNG_HAVE_PNG_SIGNATURE 0x1000
-#define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */
-
-/* flags for the transformations the PNG library does on the image data */
-#define PNG_BGR 0x0001
-#define PNG_INTERLACE 0x0002
-#define PNG_PACK 0x0004
-#define PNG_SHIFT 0x0008
-#define PNG_SWAP_BYTES 0x0010
-#define PNG_INVERT_MONO 0x0020
-#define PNG_DITHER 0x0040
-#define PNG_BACKGROUND 0x0080
-#define PNG_BACKGROUND_EXPAND 0x0100
- /* 0x0200 unused */
-#define PNG_16_TO_8 0x0400
-#define PNG_RGBA 0x0800
-#define PNG_EXPAND 0x1000
-#define PNG_GAMMA 0x2000
-#define PNG_GRAY_TO_RGB 0x4000
-#define PNG_FILLER 0x8000L
-#define PNG_PACKSWAP 0x10000L
-#define PNG_SWAP_ALPHA 0x20000L
-#define PNG_STRIP_ALPHA 0x40000L
-#define PNG_INVERT_ALPHA 0x80000L
-#define PNG_USER_TRANSFORM 0x100000L
-#define PNG_RGB_TO_GRAY_ERR 0x200000L
-#define PNG_RGB_TO_GRAY_WARN 0x400000L
-#define PNG_RGB_TO_GRAY 0x600000L /* two bits, RGB_TO_GRAY_ERR|WARN */
- /* 0x800000L Unused */
-#define PNG_ADD_ALPHA 0x1000000L /* Added to libpng-1.2.7 */
-#define PNG_EXPAND_tRNS 0x2000000L /* Added to libpng-1.2.9 */
- /* 0x4000000L unused */
- /* 0x8000000L unused */
- /* 0x10000000L unused */
- /* 0x20000000L unused */
- /* 0x40000000L unused */
-
-/* flags for png_create_struct */
-#define PNG_STRUCT_PNG 0x0001
-#define PNG_STRUCT_INFO 0x0002
-
-/* Scaling factor for filter heuristic weighting calculations */
-#define PNG_WEIGHT_SHIFT 8
-#define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT))
-#define PNG_COST_SHIFT 3
-#define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT))
-
-/* flags for the png_ptr->flags rather than declaring a byte for each one */
-#define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001
-#define PNG_FLAG_ZLIB_CUSTOM_LEVEL 0x0002
-#define PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL 0x0004
-#define PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS 0x0008
-#define PNG_FLAG_ZLIB_CUSTOM_METHOD 0x0010
-#define PNG_FLAG_ZLIB_FINISHED 0x0020
-#define PNG_FLAG_ROW_INIT 0x0040
-#define PNG_FLAG_FILLER_AFTER 0x0080
-#define PNG_FLAG_CRC_ANCILLARY_USE 0x0100
-#define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200
-#define PNG_FLAG_CRC_CRITICAL_USE 0x0400
-#define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800
-#define PNG_FLAG_FREE_PLTE 0x1000
-#define PNG_FLAG_FREE_TRNS 0x2000
-#define PNG_FLAG_FREE_HIST 0x4000
-#define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000L
-#define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000L
-#define PNG_FLAG_LIBRARY_MISMATCH 0x20000L
-#define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000L
-#define PNG_FLAG_STRIP_ERROR_TEXT 0x80000L
-#define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000L
-#define PNG_FLAG_ADD_ALPHA 0x200000L /* Added to libpng-1.2.8 */
-#define PNG_FLAG_STRIP_ALPHA 0x400000L /* Added to libpng-1.2.8 */
- /* 0x800000L unused */
- /* 0x1000000L unused */
- /* 0x2000000L unused */
- /* 0x4000000L unused */
- /* 0x8000000L unused */
- /* 0x10000000L unused */
- /* 0x20000000L unused */
- /* 0x40000000L unused */
-
-#define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \
- PNG_FLAG_CRC_ANCILLARY_NOWARN)
-
-#define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \
- PNG_FLAG_CRC_CRITICAL_IGNORE)
-
-#define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \
- PNG_FLAG_CRC_CRITICAL_MASK)
-
-/* save typing and make code easier to understand */
-
-#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \
- abs((int)((c1).green) - (int)((c2).green)) + \
- abs((int)((c1).blue) - (int)((c2).blue)))
-
-/* Added to libpng-1.2.6 JB */
-#define PNG_ROWBYTES(pixel_bits, width) \
- ((pixel_bits) >= 8 ? \
- ((width) * (((png_uint_32)(pixel_bits)) >> 3)) : \
- (( ((width) * ((png_uint_32)(pixel_bits))) + 7) >> 3) )
-
-/* PNG_OUT_OF_RANGE returns true if value is outside the range
- ideal-delta..ideal+delta. Each argument is evaluated twice.
- "ideal" and "delta" should be constants, normally simple
- integers, "value" a variable. Added to libpng-1.2.6 JB */
-#define PNG_OUT_OF_RANGE(value, ideal, delta) \
- ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) )
-
-/* variables declared in png.c - only it needs to define PNG_NO_EXTERN */
-#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
-/* place to hold the signature string for a PNG file. */
-#ifdef PNG_USE_GLOBAL_ARRAYS
- PNG_EXPORT_VAR (PNG_CONST png_byte FARDATA) png_sig[8];
-#else
-#endif
-#endif /* PNG_NO_EXTERN */
-
-/* Constant strings for known chunk types. If you need to add a chunk,
- * define the name here, and add an invocation of the macro in png.c and
- * wherever it's needed.
- */
-#define PNG_IHDR png_byte png_IHDR[5] = { 73, 72, 68, 82, '\0'}
-#define PNG_IDAT png_byte png_IDAT[5] = { 73, 68, 65, 84, '\0'}
-#define PNG_IEND png_byte png_IEND[5] = { 73, 69, 78, 68, '\0'}
-#define PNG_PLTE png_byte png_PLTE[5] = { 80, 76, 84, 69, '\0'}
-#define PNG_bKGD png_byte png_bKGD[5] = { 98, 75, 71, 68, '\0'}
-#define PNG_cHRM png_byte png_cHRM[5] = { 99, 72, 82, 77, '\0'}
-#define PNG_gAMA png_byte png_gAMA[5] = {103, 65, 77, 65, '\0'}
-#define PNG_hIST png_byte png_hIST[5] = {104, 73, 83, 84, '\0'}
-#define PNG_iCCP png_byte png_iCCP[5] = {105, 67, 67, 80, '\0'}
-#define PNG_iTXt png_byte png_iTXt[5] = {105, 84, 88, 116, '\0'}
-#define PNG_oFFs png_byte png_oFFs[5] = {111, 70, 70, 115, '\0'}
-#define PNG_pCAL png_byte png_pCAL[5] = {112, 67, 65, 76, '\0'}
-#define PNG_sCAL png_byte png_sCAL[5] = {115, 67, 65, 76, '\0'}
-#define PNG_pHYs png_byte png_pHYs[5] = {112, 72, 89, 115, '\0'}
-#define PNG_sBIT png_byte png_sBIT[5] = {115, 66, 73, 84, '\0'}
-#define PNG_sPLT png_byte png_sPLT[5] = {115, 80, 76, 84, '\0'}
-#define PNG_sRGB png_byte png_sRGB[5] = {115, 82, 71, 66, '\0'}
-#define PNG_tEXt png_byte png_tEXt[5] = {116, 69, 88, 116, '\0'}
-#define PNG_tIME png_byte png_tIME[5] = {116, 73, 77, 69, '\0'}
-#define PNG_tRNS png_byte png_tRNS[5] = {116, 82, 78, 83, '\0'}
-#define PNG_zTXt png_byte png_zTXt[5] = {122, 84, 88, 116, '\0'}
-
-#ifdef PNG_USE_GLOBAL_ARRAYS
-PNG_EXPORT_VAR (png_byte FARDATA) png_IHDR[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_IDAT[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_IEND[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_PLTE[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_bKGD[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_cHRM[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_gAMA[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_hIST[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_iCCP[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_iTXt[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_oFFs[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_pCAL[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_sCAL[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_pHYs[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_sBIT[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_sPLT[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_sRGB[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_tEXt[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_tIME[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_tRNS[5];
-PNG_EXPORT_VAR (png_byte FARDATA) png_zTXt[5];
-#endif /* PNG_USE_GLOBAL_ARRAYS */
-
-#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
-/* Initialize png_ptr struct for reading, and allocate any other memory.
- * (old interface - DEPRECATED - use png_create_read_struct instead).
- */
-extern PNG_EXPORT(void,png_read_init) PNGARG((png_structp png_ptr));
-#undef png_read_init
-#define png_read_init(png_ptr) png_read_init_3(&png_ptr, \
- PNG_LIBPNG_VER_STRING, png_sizeof(png_struct));
-#endif
-
-extern PNG_EXPORT(void,png_read_init_3) PNGARG((png_structpp ptr_ptr,
- png_const_charp user_png_ver, png_size_t png_struct_size));
-#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
-extern PNG_EXPORT(void,png_read_init_2) PNGARG((png_structp png_ptr,
- png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
- png_info_size));
-#endif
-
-#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
-/* Initialize png_ptr struct for writing, and allocate any other memory.
- * (old interface - DEPRECATED - use png_create_write_struct instead).
- */
-extern PNG_EXPORT(void,png_write_init) PNGARG((png_structp png_ptr));
-#undef png_write_init
-#define png_write_init(png_ptr) png_write_init_3(&png_ptr, \
- PNG_LIBPNG_VER_STRING, png_sizeof(png_struct));
-#endif
-
-extern PNG_EXPORT(void,png_write_init_3) PNGARG((png_structpp ptr_ptr,
- png_const_charp user_png_ver, png_size_t png_struct_size));
-extern PNG_EXPORT(void,png_write_init_2) PNGARG((png_structp png_ptr,
- png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
- png_info_size));
-
-/* Allocate memory for an internal libpng struct */
-PNG_EXTERN png_voidp png_create_struct PNGARG((int type));
-
-/* Free memory from internal libpng struct */
-PNG_EXTERN void png_destroy_struct PNGARG((png_voidp struct_ptr));
-
-PNG_EXTERN png_voidp png_create_struct_2 PNGARG((int type, png_malloc_ptr
- malloc_fn, png_voidp mem_ptr));
-PNG_EXTERN void png_destroy_struct_2 PNGARG((png_voidp struct_ptr,
- png_free_ptr free_fn, png_voidp mem_ptr));
-
-/* Free any memory that info_ptr points to and reset struct. */
-PNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-
-#ifndef PNG_1_0_X
-/* Function to allocate memory for zlib. */
-PNG_EXTERN voidpf png_zalloc PNGARG((voidpf png_ptr, uInt items, uInt size));
-
-/* Function to free memory for zlib */
-PNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr));
-
-#ifdef PNG_SIZE_T
-/* Function to convert a sizeof an item to png_sizeof item */
- PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size));
-#endif
-
-/* Next four functions are used internally as callbacks. PNGAPI is required
- * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3. */
-
-PNG_EXTERN void PNGAPI png_default_read_data PNGARG((png_structp png_ptr,
- png_bytep data, png_size_t length));
-
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-PNG_EXTERN void PNGAPI png_push_fill_buffer PNGARG((png_structp png_ptr,
- png_bytep buffer, png_size_t length));
-#endif
-
-PNG_EXTERN void PNGAPI png_default_write_data PNGARG((png_structp png_ptr,
- png_bytep data, png_size_t length));
-
-#if defined(PNG_WRITE_FLUSH_SUPPORTED)
-#if !defined(PNG_NO_STDIO)
-PNG_EXTERN void PNGAPI png_default_flush PNGARG((png_structp png_ptr));
-#endif
-#endif
-#else /* PNG_1_0_X */
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-PNG_EXTERN void png_push_fill_buffer PNGARG((png_structp png_ptr,
- png_bytep buffer, png_size_t length));
-#endif
-#endif /* PNG_1_0_X */
-
-/* Reset the CRC variable */
-PNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr));
-
-/* Write the "data" buffer to whatever output you are using. */
-PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, png_bytep data,
- png_size_t length));
-
-/* Read data from whatever input you are using into the "data" buffer */
-PNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data,
- png_size_t length));
-
-/* Read bytes into buf, and update png_ptr->crc */
-PNG_EXTERN void png_crc_read PNGARG((png_structp png_ptr, png_bytep buf,
- png_size_t length));
-
-/* Decompress data in a chunk that uses compression */
-#if defined(PNG_zTXt_SUPPORTED) || defined(PNG_iTXt_SUPPORTED) || \
- defined(PNG_iCCP_SUPPORTED) || defined(PNG_sPLT_SUPPORTED)
-PNG_EXTERN void png_decompress_chunk PNGARG((png_structp png_ptr,
- int comp_type, png_size_t chunklength,
- png_size_t prefix_length, png_size_t *data_length));
-#endif
-
-/* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */
-PNG_EXTERN int png_crc_finish PNGARG((png_structp png_ptr, png_uint_32 skip));
-
-/* Read the CRC from the file and compare it to the libpng calculated CRC */
-PNG_EXTERN int png_crc_error PNGARG((png_structp png_ptr));
-
-/* Calculate the CRC over a section of data. Note that we are only
- * passing a maximum of 64K on systems that have this as a memory limit,
- * since this is the maximum buffer size we can specify.
- */
-PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, png_bytep ptr,
- png_size_t length));
-
-#if defined(PNG_WRITE_FLUSH_SUPPORTED)
-PNG_EXTERN void png_flush PNGARG((png_structp png_ptr));
-#endif
-
-/* simple function to write the signature */
-PNG_EXTERN void png_write_sig PNGARG((png_structp png_ptr));
-
-/* write various chunks */
-
-/* Write the IHDR chunk, and update the png_struct with the necessary
- * information.
- */
-PNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width,
- png_uint_32 height,
- int bit_depth, int color_type, int compression_method, int filter_method,
- int interlace_method));
-
-PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, png_colorp palette,
- png_uint_32 num_pal));
-
-PNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data,
- png_size_t length));
-
-PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr));
-
-#if defined(PNG_WRITE_gAMA_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma));
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
-PNG_EXTERN void png_write_gAMA_fixed PNGARG((png_structp png_ptr, png_fixed_point
- file_gamma));
-#endif
-#endif
-
-#if defined(PNG_WRITE_sBIT_SUPPORTED)
-PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, png_color_8p sbit,
- int color_type));
-#endif
-
-#if defined(PNG_WRITE_cHRM_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-PNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr,
- double white_x, double white_y,
- double red_x, double red_y, double green_x, double green_y,
- double blue_x, double blue_y));
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
-PNG_EXTERN void png_write_cHRM_fixed PNGARG((png_structp png_ptr,
- png_fixed_point int_white_x, png_fixed_point int_white_y,
- png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point
- int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x,
- png_fixed_point int_blue_y));
-#endif
-#endif
-
-#if defined(PNG_WRITE_sRGB_SUPPORTED)
-PNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr,
- int intent));
-#endif
-
-#if defined(PNG_WRITE_iCCP_SUPPORTED)
-PNG_EXTERN void png_write_iCCP PNGARG((png_structp png_ptr,
- png_charp name, int compression_type,
- png_charp profile, int proflen));
- /* Note to maintainer: profile should be png_bytep */
-#endif
-
-#if defined(PNG_WRITE_sPLT_SUPPORTED)
-PNG_EXTERN void png_write_sPLT PNGARG((png_structp png_ptr,
- png_sPLT_tp palette));
-#endif
-
-#if defined(PNG_WRITE_tRNS_SUPPORTED)
-PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, png_bytep trans,
- png_color_16p values, int number, int color_type));
-#endif
-
-#if defined(PNG_WRITE_bKGD_SUPPORTED)
-PNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr,
- png_color_16p values, int color_type));
-#endif
-
-#if defined(PNG_WRITE_hIST_SUPPORTED)
-PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist,
- int num_hist));
-#endif
-
-#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \
- defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
-PNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr,
- png_charp key, png_charpp new_key));
-#endif
-
-#if defined(PNG_WRITE_tEXt_SUPPORTED)
-PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_charp key,
- png_charp text, png_size_t text_len));
-#endif
-
-#if defined(PNG_WRITE_zTXt_SUPPORTED)
-PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_charp key,
- png_charp text, png_size_t text_len, int compression));
-#endif
-
-#if defined(PNG_WRITE_iTXt_SUPPORTED)
-PNG_EXTERN void png_write_iTXt PNGARG((png_structp png_ptr,
- int compression, png_charp key, png_charp lang, png_charp lang_key,
- png_charp text));
-#endif
-
-#if defined(PNG_TEXT_SUPPORTED) /* Added at version 1.0.14 and 1.2.4 */
-PNG_EXTERN int png_set_text_2 PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_textp text_ptr, int num_text));
-#endif
-
-#if defined(PNG_WRITE_oFFs_SUPPORTED)
-PNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr,
- png_int_32 x_offset, png_int_32 y_offset, int unit_type));
-#endif
-
-#if defined(PNG_WRITE_pCAL_SUPPORTED)
-PNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose,
- png_int_32 X0, png_int_32 X1, int type, int nparams,
- png_charp units, png_charpp params));
-#endif
-
-#if defined(PNG_WRITE_pHYs_SUPPORTED)
-PNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr,
- png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit,
- int unit_type));
-#endif
-
-#if defined(PNG_WRITE_tIME_SUPPORTED)
-PNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr,
- png_timep mod_time));
-#endif
-
-#if defined(PNG_WRITE_sCAL_SUPPORTED)
-#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO)
-PNG_EXTERN void png_write_sCAL PNGARG((png_structp png_ptr,
- int unit, double width, double height));
-#else
-#ifdef PNG_FIXED_POINT_SUPPORTED
-PNG_EXTERN void png_write_sCAL_s PNGARG((png_structp png_ptr,
- int unit, png_charp width, png_charp height));
-#endif
-#endif
-#endif
-
-/* Called when finished processing a row of data */
-PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr));
-
-/* Internal use only. Called before first row of data */
-PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr));
-
-#if defined(PNG_READ_GAMMA_SUPPORTED)
-PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr));
-#endif
-
-/* combine a row of data, dealing with alpha, etc. if requested */
-PNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row,
- int mask));
-
-#if defined(PNG_READ_INTERLACING_SUPPORTED)
-/* expand an interlaced row */
-/* OLD pre-1.0.9 interface:
-PNG_EXTERN void png_do_read_interlace PNGARG((png_row_infop row_info,
- png_bytep row, int pass, png_uint_32 transformations));
- */
-PNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr));
-#endif
-
-/* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */
-
-#if defined(PNG_WRITE_INTERLACING_SUPPORTED)
-/* grab pixels out of a row for an interlaced pass */
-PNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info,
- png_bytep row, int pass));
-#endif
-
-/* unfilter a row */
-PNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr,
- png_row_infop row_info, png_bytep row, png_bytep prev_row, int filter));
-
-/* Choose the best filter to use and filter the row data */
-PNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr,
- png_row_infop row_info));
-
-/* Write out the filtered row. */
-PNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr,
- png_bytep filtered_row));
-/* finish a row while reading, dealing with interlacing passes, etc. */
-PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr));
-
-/* initialize the row buffers, etc. */
-PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr));
-/* optional call to update the users info structure */
-PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-
-/* these are the functions that do the transformations */
-#if defined(PNG_READ_FILLER_SUPPORTED)
-PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info,
- png_bytep row, png_uint_32 filler, png_uint_32 flags));
-#endif
-
-#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED)
-PNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info,
- png_bytep row));
-#endif
-
-#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
-PNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info,
- png_bytep row));
-#endif
-
-#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
-PNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info,
- png_bytep row));
-#endif
-
-#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
-PNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info,
- png_bytep row));
-#endif
-
-#if defined(PNG_WRITE_FILLER_SUPPORTED) || \
- defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
-PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info,
- png_bytep row, png_uint_32 flags));
-#endif
-
-#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
-PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, png_bytep row));
-#endif
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED)
-PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, png_bytep row));
-#endif
-
-#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
-PNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, png_row_infop
- row_info, png_bytep row));
-#endif
-
-#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
-PNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info,
- png_bytep row));
-#endif
-
-#if defined(PNG_READ_PACK_SUPPORTED)
-PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, png_bytep row));
-#endif
-
-#if defined(PNG_READ_SHIFT_SUPPORTED)
-PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row,
- png_color_8p sig_bits));
-#endif
-
-#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
-PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, png_bytep row));
-#endif
-
-#if defined(PNG_READ_16_TO_8_SUPPORTED)
-PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, png_bytep row));
-#endif
-
-#if defined(PNG_READ_DITHER_SUPPORTED)
-PNG_EXTERN void png_do_dither PNGARG((png_row_infop row_info,
- png_bytep row, png_bytep palette_lookup, png_bytep dither_lookup));
-
-# if defined(PNG_CORRECT_PALETTE_SUPPORTED)
-PNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr,
- png_colorp palette, int num_palette));
-# endif
-#endif
-
-#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
-PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, png_bytep row));
-#endif
-
-#if defined(PNG_WRITE_PACK_SUPPORTED)
-PNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info,
- png_bytep row, png_uint_32 bit_depth));
-#endif
-
-#if defined(PNG_WRITE_SHIFT_SUPPORTED)
-PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, png_bytep row,
- png_color_8p bit_depth));
-#endif
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
-#if defined(PNG_READ_GAMMA_SUPPORTED)
-PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row,
- png_color_16p trans_values, png_color_16p background,
- png_color_16p background_1,
- png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1,
- png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1,
- png_uint_16pp gamma_16_to_1, int gamma_shift));
-#else
-PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row,
- png_color_16p trans_values, png_color_16p background));
-#endif
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED)
-PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, png_bytep row,
- png_bytep gamma_table, png_uint_16pp gamma_16_table,
- int gamma_shift));
-#endif
-
-#if defined(PNG_READ_EXPAND_SUPPORTED)
-PNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info,
- png_bytep row, png_colorp palette, png_bytep trans, int num_trans));
-PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info,
- png_bytep row, png_color_16p trans_value));
-#endif
-
-/* The following decodes the appropriate chunks, and does error correction,
- * then calls the appropriate callback for the chunk if it is valid.
- */
-
-/* decode the IHDR chunk */
-PNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-PNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-PNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-
-#if defined(PNG_READ_bKGD_SUPPORTED)
-PNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_cHRM_SUPPORTED)
-PNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_gAMA_SUPPORTED)
-PNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_hIST_SUPPORTED)
-PNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_iCCP_SUPPORTED)
-extern void png_handle_iCCP PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif /* PNG_READ_iCCP_SUPPORTED */
-
-#if defined(PNG_READ_iTXt_SUPPORTED)
-PNG_EXTERN void png_handle_iTXt PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_oFFs_SUPPORTED)
-PNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_pCAL_SUPPORTED)
-PNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_pHYs_SUPPORTED)
-PNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_sBIT_SUPPORTED)
-PNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_sCAL_SUPPORTED)
-PNG_EXTERN void png_handle_sCAL PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_sPLT_SUPPORTED)
-extern void png_handle_sPLT PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif /* PNG_READ_sPLT_SUPPORTED */
-
-#if defined(PNG_READ_sRGB_SUPPORTED)
-PNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_tEXt_SUPPORTED)
-PNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_tIME_SUPPORTED)
-PNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_tRNS_SUPPORTED)
-PNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-#if defined(PNG_READ_zTXt_SUPPORTED)
-PNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr,
- png_uint_32 length));
-#endif
-
-PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_32 length));
-
-PNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr,
- png_bytep chunk_name));
-
-/* handle the transformations for reading and writing */
-PNG_EXTERN void png_do_read_transformations PNGARG((png_structp png_ptr));
-PNG_EXTERN void png_do_write_transformations PNGARG((png_structp png_ptr));
-
-PNG_EXTERN void png_init_read_transformations PNGARG((png_structp png_ptr));
-
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr));
-PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr,
- png_uint_32 length));
-PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr));
-PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr));
-PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr,
- png_bytep buffer, png_size_t buffer_length));
-PNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr));
-PNG_EXTERN void png_process_IDAT_data PNGARG((png_structp png_ptr,
- png_bytep buffer, png_size_t buffer_length));
-PNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr));
-PNG_EXTERN void png_push_handle_unknown PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_32 length));
-PNG_EXTERN void png_push_have_info PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-PNG_EXTERN void png_push_have_end PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-PNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr, png_bytep row));
-PNG_EXTERN void png_push_read_end PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-PNG_EXTERN void png_process_some_data PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-PNG_EXTERN void png_read_push_finish_row PNGARG((png_structp png_ptr));
-#if defined(PNG_READ_tEXt_SUPPORTED)
-PNG_EXTERN void png_push_handle_tEXt PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_32 length));
-PNG_EXTERN void png_push_read_tEXt PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-#endif
-#if defined(PNG_READ_zTXt_SUPPORTED)
-PNG_EXTERN void png_push_handle_zTXt PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_32 length));
-PNG_EXTERN void png_push_read_zTXt PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-#endif
-#if defined(PNG_READ_iTXt_SUPPORTED)
-PNG_EXTERN void png_push_handle_iTXt PNGARG((png_structp png_ptr,
- png_infop info_ptr, png_uint_32 length));
-PNG_EXTERN void png_push_read_iTXt PNGARG((png_structp png_ptr,
- png_infop info_ptr));
-#endif
-
-#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
-
-#ifdef PNG_MNG_FEATURES_SUPPORTED
-PNG_EXTERN void png_do_read_intrapixel PNGARG((png_row_infop row_info,
- png_bytep row));
-PNG_EXTERN void png_do_write_intrapixel PNGARG((png_row_infop row_info,
- png_bytep row));
-#endif
-
-#if defined(PNG_ASSEMBLER_CODE_SUPPORTED)
-#if defined(PNG_MMX_CODE_SUPPORTED)
-/* png.c */ /* PRIVATE */
-PNG_EXTERN void png_init_mmx_flags PNGARG((png_structp png_ptr));
-#endif
-#endif
-
-#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)
-PNG_EXTERN png_uint_32 png_get_pixels_per_inch PNGARG((png_structp png_ptr,
-png_infop info_ptr));
-
-PNG_EXTERN png_uint_32 png_get_x_pixels_per_inch PNGARG((png_structp png_ptr,
-png_infop info_ptr));
-
-PNG_EXTERN png_uint_32 png_get_y_pixels_per_inch PNGARG((png_structp png_ptr,
-png_infop info_ptr));
-
-PNG_EXTERN float png_get_x_offset_inches PNGARG((png_structp png_ptr,
-png_infop info_ptr));
-
-PNG_EXTERN float png_get_y_offset_inches PNGARG((png_structp png_ptr,
-png_infop info_ptr));
-
-#if defined(PNG_pHYs_SUPPORTED)
-PNG_EXTERN png_uint_32 png_get_pHYs_dpi PNGARG((png_structp png_ptr,
-png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type));
-#endif /* PNG_pHYs_SUPPORTED */
-#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */
-
-/* Read the chunk header (length + type name) */
-PNG_EXTERN png_uint_32 png_read_chunk_header PNGARG((png_structp png_ptr));
-
-/* Added at libpng version 1.2.34 */
-#if defined(PNG_cHRM_SUPPORTED)
-PNG_EXTERN int png_check_cHRM_fixed PNGARG((png_structp png_ptr,
- png_fixed_point int_white_x, png_fixed_point int_white_y,
- png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point
- int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x,
- png_fixed_point int_blue_y));
-#endif
-
-/* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */
-
-#endif /* PNG_INTERNAL */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* PNG_VERSION_INFO_ONLY */
-/* do not put anything past this line */
-#endif /* PNG_H */
diff --git a/navit/support/libpng/pngconf.h b/navit/support/libpng/pngconf.h
deleted file mode 100644
index f5e5c59c8..000000000
--- a/navit/support/libpng/pngconf.h
+++ /dev/null
@@ -1,1496 +0,0 @@
-
-/* pngconf.h - machine configurable file for libpng
- *
- * libpng version 1.2.36 - May 7, 2009
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2009 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- */
-
-/* Any machine specific code is near the front of this file, so if you
- * are configuring libpng for a machine, you may want to read the section
- * starting here down to where it starts to typedef png_color, png_text,
- * and png_info.
- */
-
-#ifndef PNGCONF_H
-#define PNGCONF_H
-
-#define PNG_1_2_X
-
-/*
- * PNG_USER_CONFIG has to be defined on the compiler command line. This
- * includes the resource compiler for Windows DLL configurations.
- */
-#ifdef PNG_USER_CONFIG
-# ifndef PNG_USER_PRIVATEBUILD
-# define PNG_USER_PRIVATEBUILD
-# endif
-#include "pngusr.h"
-#endif
-
-/* PNG_CONFIGURE_LIBPNG is set by the "configure" script. */
-#ifdef PNG_CONFIGURE_LIBPNG
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#endif
-
-/*
- * Added at libpng-1.2.8
- *
- * If you create a private DLL you need to define in "pngusr.h" the followings:
- * #define PNG_USER_PRIVATEBUILD <Describes by whom and why this version of
- * the DLL was built>
- * e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons."
- * #define PNG_USER_DLLFNAME_POSTFIX <two-letter postfix that serve to
- * distinguish your DLL from those of the official release. These
- * correspond to the trailing letters that come after the version
- * number and must match your private DLL name>
- * e.g. // private DLL "libpng13gx.dll"
- * #define PNG_USER_DLLFNAME_POSTFIX "gx"
- *
- * The following macros are also at your disposal if you want to complete the
- * DLL VERSIONINFO structure.
- * - PNG_USER_VERSIONINFO_COMMENTS
- * - PNG_USER_VERSIONINFO_COMPANYNAME
- * - PNG_USER_VERSIONINFO_LEGALTRADEMARKS
- */
-
-#ifdef __STDC__
-#ifdef SPECIALBUILD
-# pragma message("PNG_LIBPNG_SPECIALBUILD (and deprecated SPECIALBUILD)\
- are now LIBPNG reserved macros. Use PNG_USER_PRIVATEBUILD instead.")
-#endif
-
-#ifdef PRIVATEBUILD
-# pragma message("PRIVATEBUILD is deprecated.\
- Use PNG_USER_PRIVATEBUILD instead.")
-# define PNG_USER_PRIVATEBUILD PRIVATEBUILD
-#endif
-#endif /* __STDC__ */
-
-#ifndef PNG_VERSION_INFO_ONLY
-
-/* End of material added to libpng-1.2.8 */
-
-/* Added at libpng-1.2.19, removed at libpng-1.2.20 because it caused trouble
- Restored at libpng-1.2.21 */
-#if !defined(PNG_NO_WARN_UNINITIALIZED_ROW) && \
- !defined(PNG_WARN_UNINITIALIZED_ROW)
-# define PNG_WARN_UNINITIALIZED_ROW 1
-#endif
-/* End of material added at libpng-1.2.19/1.2.21 */
-
-/* This is the size of the compression buffer, and thus the size of
- * an IDAT chunk. Make this whatever size you feel is best for your
- * machine. One of these will be allocated per png_struct. When this
- * is full, it writes the data to the disk, and does some other
- * calculations. Making this an extremely small size will slow
- * the library down, but you may want to experiment to determine
- * where it becomes significant, if you are concerned with memory
- * usage. Note that zlib allocates at least 32Kb also. For readers,
- * this describes the size of the buffer available to read the data in.
- * Unless this gets smaller than the size of a row (compressed),
- * it should not make much difference how big this is.
- */
-
-#ifndef PNG_ZBUF_SIZE
-# define PNG_ZBUF_SIZE 8192
-#endif
-
-/* Enable if you want a write-only libpng */
-
-#ifndef PNG_NO_READ_SUPPORTED
-# define PNG_READ_SUPPORTED
-#endif
-
-/* Enable if you want a read-only libpng */
-
-#ifndef PNG_NO_WRITE_SUPPORTED
-# define PNG_WRITE_SUPPORTED
-#endif
-
-/* Enabled by default in 1.2.0. You can disable this if you don't need to
- support PNGs that are embedded in MNG datastreams */
-#if !defined(PNG_1_0_X) && !defined(PNG_NO_MNG_FEATURES)
-# ifndef PNG_MNG_FEATURES_SUPPORTED
-# define PNG_MNG_FEATURES_SUPPORTED
-# endif
-#endif
-
-#ifndef PNG_NO_FLOATING_POINT_SUPPORTED
-# ifndef PNG_FLOATING_POINT_SUPPORTED
-# define PNG_FLOATING_POINT_SUPPORTED
-# endif
-#endif
-
-/* If you are running on a machine where you cannot allocate more
- * than 64K of memory at once, uncomment this. While libpng will not
- * normally need that much memory in a chunk (unless you load up a very
- * large file), zlib needs to know how big of a chunk it can use, and
- * libpng thus makes sure to check any memory allocation to verify it
- * will fit into memory.
-#define PNG_MAX_MALLOC_64K
- */
-#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K)
-# define PNG_MAX_MALLOC_64K
-#endif
-
-/* Special munging to support doing things the 'cygwin' way:
- * 'Normal' png-on-win32 defines/defaults:
- * PNG_BUILD_DLL -- building dll
- * PNG_USE_DLL -- building an application, linking to dll
- * (no define) -- building static library, or building an
- * application and linking to the static lib
- * 'Cygwin' defines/defaults:
- * PNG_BUILD_DLL -- (ignored) building the dll
- * (no define) -- (ignored) building an application, linking to the dll
- * PNG_STATIC -- (ignored) building the static lib, or building an
- * application that links to the static lib.
- * ALL_STATIC -- (ignored) building various static libs, or building an
- * application that links to the static libs.
- * Thus,
- * a cygwin user should define either PNG_BUILD_DLL or PNG_STATIC, and
- * this bit of #ifdefs will define the 'correct' config variables based on
- * that. If a cygwin user *wants* to define 'PNG_USE_DLL' that's okay, but
- * unnecessary.
- *
- * Also, the precedence order is:
- * ALL_STATIC (since we can't #undef something outside our namespace)
- * PNG_BUILD_DLL
- * PNG_STATIC
- * (nothing) == PNG_USE_DLL
- *
- * CYGWIN (2002-01-20): The preceding is now obsolete. With the advent
- * of auto-import in binutils, we no longer need to worry about
- * __declspec(dllexport) / __declspec(dllimport) and friends. Therefore,
- * we don't need to worry about PNG_STATIC or ALL_STATIC when it comes
- * to __declspec() stuff. However, we DO need to worry about
- * PNG_BUILD_DLL and PNG_STATIC because those change some defaults
- * such as CONSOLE_IO and whether GLOBAL_ARRAYS are allowed.
- */
-#if defined(__CYGWIN__)
-# if defined(ALL_STATIC)
-# if defined(PNG_BUILD_DLL)
-# undef PNG_BUILD_DLL
-# endif
-# if defined(PNG_USE_DLL)
-# undef PNG_USE_DLL
-# endif
-# if defined(PNG_DLL)
-# undef PNG_DLL
-# endif
-# if !defined(PNG_STATIC)
-# define PNG_STATIC
-# endif
-# else
-# if defined (PNG_BUILD_DLL)
-# if defined(PNG_STATIC)
-# undef PNG_STATIC
-# endif
-# if defined(PNG_USE_DLL)
-# undef PNG_USE_DLL
-# endif
-# if !defined(PNG_DLL)
-# define PNG_DLL
-# endif
-# else
-# if defined(PNG_STATIC)
-# if defined(PNG_USE_DLL)
-# undef PNG_USE_DLL
-# endif
-# if defined(PNG_DLL)
-# undef PNG_DLL
-# endif
-# else
-# if !defined(PNG_USE_DLL)
-# define PNG_USE_DLL
-# endif
-# if !defined(PNG_DLL)
-# define PNG_DLL
-# endif
-# endif
-# endif
-# endif
-#endif
-
-/* This protects us against compilers that run on a windowing system
- * and thus don't have or would rather us not use the stdio types:
- * stdin, stdout, and stderr. The only one currently used is stderr
- * in png_error() and png_warning(). #defining PNG_NO_CONSOLE_IO will
- * prevent these from being compiled and used. #defining PNG_NO_STDIO
- * will also prevent these, plus will prevent the entire set of stdio
- * macros and functions (FILE *, printf, etc.) from being compiled and used,
- * unless (PNG_DEBUG > 0) has been #defined.
- *
- * #define PNG_NO_CONSOLE_IO
- * #define PNG_NO_STDIO
- */
-
-#if defined(_WIN32_WCE)
-# include <windows.h>
- /* Console I/O functions are not supported on WindowsCE */
-# define PNG_NO_CONSOLE_IO
- /* abort() may not be supported on some/all Windows CE platforms */
-# define PNG_ABORT() exit(-1)
-# ifdef PNG_DEBUG
-# undef PNG_DEBUG
-# endif
-#endif
-
-#ifdef PNG_BUILD_DLL
-# ifndef PNG_CONSOLE_IO_SUPPORTED
-# ifndef PNG_NO_CONSOLE_IO
-# define PNG_NO_CONSOLE_IO
-# endif
-# endif
-#endif
-
-# ifdef PNG_NO_STDIO
-# ifndef PNG_NO_CONSOLE_IO
-# define PNG_NO_CONSOLE_IO
-# endif
-# ifdef PNG_DEBUG
-# if (PNG_DEBUG > 0)
-# include <stdio.h>
-# endif
-# endif
-# else
-# if !defined(_WIN32_WCE)
-/* "stdio.h" functions are not supported on WindowsCE */
-# include <stdio.h>
-# endif
-# endif
-
-/* This macro protects us against machines that don't have function
- * prototypes (ie K&R style headers). If your compiler does not handle
- * function prototypes, define this macro and use the included ansi2knr.
- * I've always been able to use _NO_PROTO as the indicator, but you may
- * need to drag the empty declaration out in front of here, or change the
- * ifdef to suit your own needs.
- */
-#ifndef PNGARG
-
-#ifdef OF /* zlib prototype munger */
-# define PNGARG(arglist) OF(arglist)
-#else
-
-#ifdef _NO_PROTO
-# define PNGARG(arglist) ()
-# ifndef PNG_TYPECAST_NULL
-# define PNG_TYPECAST_NULL
-# endif
-#else
-# define PNGARG(arglist) arglist
-#endif /* _NO_PROTO */
-
-
-#endif /* OF */
-
-#endif /* PNGARG */
-
-/* Try to determine if we are compiling on a Mac. Note that testing for
- * just __MWERKS__ is not good enough, because the Codewarrior is now used
- * on non-Mac platforms.
- */
-#ifndef MACOS
-# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \
- defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC)
-# define MACOS
-# endif
-#endif
-
-/* enough people need this for various reasons to include it here */
-#if !defined(MACOS) && !defined(RISCOS) && !defined(_WIN32_WCE)
-# include <sys/types.h>
-#endif
-
-#if !defined(PNG_SETJMP_NOT_SUPPORTED) && !defined(PNG_NO_SETJMP_SUPPORTED)
-# define PNG_SETJMP_SUPPORTED
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
-/* This is an attempt to force a single setjmp behaviour on Linux. If
- * the X config stuff didn't define _BSD_SOURCE we wouldn't need this.
- *
- * You can bypass this test if you know that your application uses exactly
- * the same setjmp.h that was included when libpng was built. Only define
- * PNG_SKIP_SETJMP_CHECK while building your application, prior to the
- * application's '#include "png.h"'. Don't define PNG_SKIP_SETJMP_CHECK
- * while building a separate libpng library for general use.
- */
-
-# ifndef PNG_SKIP_SETJMP_CHECK
-# ifdef __linux__
-# ifdef _BSD_SOURCE
-# define PNG_SAVE_BSD_SOURCE
-# undef _BSD_SOURCE
-# endif
-# ifdef _SETJMP_H
- /* If you encounter a compiler error here, see the explanation
- * near the end of INSTALL.
- */
- __pngconf.h__ in libpng already includes setjmp.h;
- __dont__ include it again.;
-# endif
-# endif /* __linux__ */
-# endif /* PNG_SKIP_SETJMP_CHECK */
-
- /* include setjmp.h for error handling */
-# include <setjmp.h>
-
-# ifdef __linux__
-# ifdef PNG_SAVE_BSD_SOURCE
-# ifndef _BSD_SOURCE
-# define _BSD_SOURCE
-# endif
-# undef PNG_SAVE_BSD_SOURCE
-# endif
-# endif /* __linux__ */
-#endif /* PNG_SETJMP_SUPPORTED */
-
-#ifdef BSD
-# include <strings.h>
-#else
-# include <string.h>
-#endif
-
-/* Other defines for things like memory and the like can go here. */
-#ifdef PNG_INTERNAL
-
-#include <stdlib.h>
-
-/* The functions exported by PNG_EXTERN are PNG_INTERNAL functions, which
- * aren't usually used outside the library (as far as I know), so it is
- * debatable if they should be exported at all. In the future, when it is
- * possible to have run-time registry of chunk-handling functions, some of
- * these will be made available again.
-#define PNG_EXTERN extern
- */
-#define PNG_EXTERN
-
-/* Other defines specific to compilers can go here. Try to keep
- * them inside an appropriate ifdef/endif pair for portability.
- */
-
-#if defined(PNG_FLOATING_POINT_SUPPORTED)
-# if defined(MACOS)
- /* We need to check that <math.h> hasn't already been included earlier
- * as it seems it doesn't agree with <fp.h>, yet we should really use
- * <fp.h> if possible.
- */
-# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__)
-# include <fp.h>
-# endif
-# else
-# include <math.h>
-# endif
-# if defined(_AMIGA) && defined(__SASC) && defined(_M68881)
- /* Amiga SAS/C: We must include builtin FPU functions when compiling using
- * MATH=68881
- */
-# include <m68881.h>
-# endif
-#endif
-
-/* Codewarrior on NT has linking problems without this. */
-#if (defined(__MWERKS__) && defined(WIN32)) || defined(__STDC__)
-# define PNG_ALWAYS_EXTERN
-#endif
-
-/* This provides the non-ANSI (far) memory allocation routines. */
-#if defined(__TURBOC__) && defined(__MSDOS__)
-# include <mem.h>
-# include <alloc.h>
-#endif
-
-/* I have no idea why is this necessary... */
-#if defined(_MSC_VER) && (defined(WIN32) || defined(_Windows) || \
- defined(_WINDOWS) || defined(_WIN32) || defined(__WIN32__))
-# include <malloc.h>
-#endif
-
-/* This controls how fine the dithering gets. As this allocates
- * a largish chunk of memory (32K), those who are not as concerned
- * with dithering quality can decrease some or all of these.
- */
-#ifndef PNG_DITHER_RED_BITS
-# define PNG_DITHER_RED_BITS 5
-#endif
-#ifndef PNG_DITHER_GREEN_BITS
-# define PNG_DITHER_GREEN_BITS 5
-#endif
-#ifndef PNG_DITHER_BLUE_BITS
-# define PNG_DITHER_BLUE_BITS 5
-#endif
-
-/* This controls how fine the gamma correction becomes when you
- * are only interested in 8 bits anyway. Increasing this value
- * results in more memory being used, and more pow() functions
- * being called to fill in the gamma tables. Don't set this value
- * less then 8, and even that may not work (I haven't tested it).
- */
-
-#ifndef PNG_MAX_GAMMA_8
-# define PNG_MAX_GAMMA_8 11
-#endif
-
-/* This controls how much a difference in gamma we can tolerate before
- * we actually start doing gamma conversion.
- */
-#ifndef PNG_GAMMA_THRESHOLD
-# define PNG_GAMMA_THRESHOLD 0.05
-#endif
-
-#endif /* PNG_INTERNAL */
-
-/* The following uses const char * instead of char * for error
- * and warning message functions, so some compilers won't complain.
- * If you do not want to use const, define PNG_NO_CONST here.
- */
-
-#ifndef PNG_NO_CONST
-# define PNG_CONST const
-#else
-# define PNG_CONST
-#endif
-
-/* The following defines give you the ability to remove code from the
- * library that you will not be using. I wish I could figure out how to
- * automate this, but I can't do that without making it seriously hard
- * on the users. So if you are not using an ability, change the #define
- * to and #undef, and that part of the library will not be compiled. If
- * your linker can't find a function, you may want to make sure the
- * ability is defined here. Some of these depend upon some others being
- * defined. I haven't figured out all the interactions here, so you may
- * have to experiment awhile to get everything to compile. If you are
- * creating or using a shared library, you probably shouldn't touch this,
- * as it will affect the size of the structures, and this will cause bad
- * things to happen if the library and/or application ever change.
- */
-
-/* Any features you will not be using can be undef'ed here */
-
-/* GR-P, 0.96a: Set "*TRANSFORMS_SUPPORTED as default but allow user
- * to turn it off with "*TRANSFORMS_NOT_SUPPORTED" or *PNG_NO_*_TRANSFORMS
- * on the compile line, then pick and choose which ones to define without
- * having to edit this file. It is safe to use the *TRANSFORMS_NOT_SUPPORTED
- * if you only want to have a png-compliant reader/writer but don't need
- * any of the extra transformations. This saves about 80 kbytes in a
- * typical installation of the library. (PNG_NO_* form added in version
- * 1.0.1c, for consistency)
- */
-
-/* The size of the png_text structure changed in libpng-1.0.6 when
- * iTXt support was added. iTXt support was turned off by default through
- * libpng-1.2.x, to support old apps that malloc the png_text structure
- * instead of calling png_set_text() and letting libpng malloc it. It
- * was turned on by default in libpng-1.3.0.
- */
-
-#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
-# ifndef PNG_NO_iTXt_SUPPORTED
-# define PNG_NO_iTXt_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_iTXt
-# define PNG_NO_READ_iTXt
-# endif
-# ifndef PNG_NO_WRITE_iTXt
-# define PNG_NO_WRITE_iTXt
-# endif
-#endif
-
-#if !defined(PNG_NO_iTXt_SUPPORTED)
-# if !defined(PNG_READ_iTXt_SUPPORTED) && !defined(PNG_NO_READ_iTXt)
-# define PNG_READ_iTXt
-# endif
-# if !defined(PNG_WRITE_iTXt_SUPPORTED) && !defined(PNG_NO_WRITE_iTXt)
-# define PNG_WRITE_iTXt
-# endif
-#endif
-
-/* The following support, added after version 1.0.0, can be turned off here en
- * masse by defining PNG_LEGACY_SUPPORTED in case you need binary compatibility
- * with old applications that require the length of png_struct and png_info
- * to remain unchanged.
- */
-
-#ifdef PNG_LEGACY_SUPPORTED
-# define PNG_NO_FREE_ME
-# define PNG_NO_READ_UNKNOWN_CHUNKS
-# define PNG_NO_WRITE_UNKNOWN_CHUNKS
-# define PNG_NO_READ_USER_CHUNKS
-# define PNG_NO_READ_iCCP
-# define PNG_NO_WRITE_iCCP
-# define PNG_NO_READ_iTXt
-# define PNG_NO_WRITE_iTXt
-# define PNG_NO_READ_sCAL
-# define PNG_NO_WRITE_sCAL
-# define PNG_NO_READ_sPLT
-# define PNG_NO_WRITE_sPLT
-# define PNG_NO_INFO_IMAGE
-# define PNG_NO_READ_RGB_TO_GRAY
-# define PNG_NO_READ_USER_TRANSFORM
-# define PNG_NO_WRITE_USER_TRANSFORM
-# define PNG_NO_USER_MEM
-# define PNG_NO_READ_EMPTY_PLTE
-# define PNG_NO_MNG_FEATURES
-# define PNG_NO_FIXED_POINT_SUPPORTED
-#endif
-
-/* Ignore attempt to turn off both floating and fixed point support */
-#if !defined(PNG_FLOATING_POINT_SUPPORTED) || \
- !defined(PNG_NO_FIXED_POINT_SUPPORTED)
-# define PNG_FIXED_POINT_SUPPORTED
-#endif
-
-#ifndef PNG_NO_FREE_ME
-# define PNG_FREE_ME_SUPPORTED
-#endif
-
-#if defined(PNG_READ_SUPPORTED)
-
-#if !defined(PNG_READ_TRANSFORMS_NOT_SUPPORTED) && \
- !defined(PNG_NO_READ_TRANSFORMS)
-# define PNG_READ_TRANSFORMS_SUPPORTED
-#endif
-
-#ifdef PNG_READ_TRANSFORMS_SUPPORTED
-# ifndef PNG_NO_READ_EXPAND
-# define PNG_READ_EXPAND_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_SHIFT
-# define PNG_READ_SHIFT_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_PACK
-# define PNG_READ_PACK_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_BGR
-# define PNG_READ_BGR_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_SWAP
-# define PNG_READ_SWAP_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_PACKSWAP
-# define PNG_READ_PACKSWAP_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_INVERT
-# define PNG_READ_INVERT_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_DITHER
-# define PNG_READ_DITHER_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_BACKGROUND
-# define PNG_READ_BACKGROUND_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_16_TO_8
-# define PNG_READ_16_TO_8_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_FILLER
-# define PNG_READ_FILLER_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_GAMMA
-# define PNG_READ_GAMMA_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_GRAY_TO_RGB
-# define PNG_READ_GRAY_TO_RGB_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_SWAP_ALPHA
-# define PNG_READ_SWAP_ALPHA_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_INVERT_ALPHA
-# define PNG_READ_INVERT_ALPHA_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_STRIP_ALPHA
-# define PNG_READ_STRIP_ALPHA_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_USER_TRANSFORM
-# define PNG_READ_USER_TRANSFORM_SUPPORTED
-# endif
-# ifndef PNG_NO_READ_RGB_TO_GRAY
-# define PNG_READ_RGB_TO_GRAY_SUPPORTED
-# endif
-#endif /* PNG_READ_TRANSFORMS_SUPPORTED */
-
-#if !defined(PNG_NO_PROGRESSIVE_READ) && \
- !defined(PNG_PROGRESSIVE_READ_SUPPORTED) /* if you don't do progressive */
-# define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */
-#endif /* about interlacing capability! You'll */
- /* still have interlacing unless you change the following line: */
-
-#define PNG_READ_INTERLACING_SUPPORTED /* required in PNG-compliant decoders */
-
-#ifndef PNG_NO_READ_COMPOSITE_NODIV
-# ifndef PNG_NO_READ_COMPOSITED_NODIV /* libpng-1.0.x misspelling */
-# define PNG_READ_COMPOSITE_NODIV_SUPPORTED /* well tested on Intel, SGI */
-# endif
-#endif
-
-#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
-/* Deprecated, will be removed from version 2.0.0.
- Use PNG_MNG_FEATURES_SUPPORTED instead. */
-#ifndef PNG_NO_READ_EMPTY_PLTE
-# define PNG_READ_EMPTY_PLTE_SUPPORTED
-#endif
-#endif
-
-#endif /* PNG_READ_SUPPORTED */
-
-#if defined(PNG_WRITE_SUPPORTED)
-
-# if !defined(PNG_WRITE_TRANSFORMS_NOT_SUPPORTED) && \
- !defined(PNG_NO_WRITE_TRANSFORMS)
-# define PNG_WRITE_TRANSFORMS_SUPPORTED
-#endif
-
-#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED
-# ifndef PNG_NO_WRITE_SHIFT
-# define PNG_WRITE_SHIFT_SUPPORTED
-# endif
-# ifndef PNG_NO_WRITE_PACK
-# define PNG_WRITE_PACK_SUPPORTED
-# endif
-# ifndef PNG_NO_WRITE_BGR
-# define PNG_WRITE_BGR_SUPPORTED
-# endif
-# ifndef PNG_NO_WRITE_SWAP
-# define PNG_WRITE_SWAP_SUPPORTED
-# endif
-# ifndef PNG_NO_WRITE_PACKSWAP
-# define PNG_WRITE_PACKSWAP_SUPPORTED
-# endif
-# ifndef PNG_NO_WRITE_INVERT
-# define PNG_WRITE_INVERT_SUPPORTED
-# endif
-# ifndef PNG_NO_WRITE_FILLER
-# define PNG_WRITE_FILLER_SUPPORTED /* same as WRITE_STRIP_ALPHA */
-# endif
-# ifndef PNG_NO_WRITE_SWAP_ALPHA
-# define PNG_WRITE_SWAP_ALPHA_SUPPORTED
-# endif
-# ifndef PNG_NO_WRITE_INVERT_ALPHA
-# define PNG_WRITE_INVERT_ALPHA_SUPPORTED
-# endif
-# ifndef PNG_NO_WRITE_USER_TRANSFORM
-# define PNG_WRITE_USER_TRANSFORM_SUPPORTED
-# endif
-#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */
-
-#if !defined(PNG_NO_WRITE_INTERLACING_SUPPORTED) && \
- !defined(PNG_WRITE_INTERLACING_SUPPORTED)
-#define PNG_WRITE_INTERLACING_SUPPORTED /* not required for PNG-compliant
- encoders, but can cause trouble
- if left undefined */
-#endif
-
-#if !defined(PNG_NO_WRITE_WEIGHTED_FILTER) && \
- !defined(PNG_WRITE_WEIGHTED_FILTER) && \
- defined(PNG_FLOATING_POINT_SUPPORTED)
-# define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
-#endif
-
-#ifndef PNG_NO_WRITE_FLUSH
-# define PNG_WRITE_FLUSH_SUPPORTED
-#endif
-
-#if defined(PNG_1_0_X) || defined (PNG_1_2_X)
-/* Deprecated, see PNG_MNG_FEATURES_SUPPORTED, above */
-#ifndef PNG_NO_WRITE_EMPTY_PLTE
-# define PNG_WRITE_EMPTY_PLTE_SUPPORTED
-#endif
-#endif
-
-#endif /* PNG_WRITE_SUPPORTED */
-
-#ifndef PNG_1_0_X
-# ifndef PNG_NO_ERROR_NUMBERS
-# define PNG_ERROR_NUMBERS_SUPPORTED
-# endif
-#endif /* PNG_1_0_X */
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
-# ifndef PNG_NO_USER_TRANSFORM_PTR
-# define PNG_USER_TRANSFORM_PTR_SUPPORTED
-# endif
-#endif
-
-#ifndef PNG_NO_STDIO
-# define PNG_TIME_RFC1123_SUPPORTED
-#endif
-
-/* This adds extra functions in pngget.c for accessing data from the
- * info pointer (added in version 0.99)
- * png_get_image_width()
- * png_get_image_height()
- * png_get_bit_depth()
- * png_get_color_type()
- * png_get_compression_type()
- * png_get_filter_type()
- * png_get_interlace_type()
- * png_get_pixel_aspect_ratio()
- * png_get_pixels_per_meter()
- * png_get_x_offset_pixels()
- * png_get_y_offset_pixels()
- * png_get_x_offset_microns()
- * png_get_y_offset_microns()
- */
-#if !defined(PNG_NO_EASY_ACCESS) && !defined(PNG_EASY_ACCESS_SUPPORTED)
-# define PNG_EASY_ACCESS_SUPPORTED
-#endif
-
-/* PNG_ASSEMBLER_CODE was enabled by default in version 1.2.0
- * and removed from version 1.2.20. The following will be removed
- * from libpng-1.4.0
-*/
-
-#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_OPTIMIZED_CODE)
-# ifndef PNG_OPTIMIZED_CODE_SUPPORTED
-# define PNG_OPTIMIZED_CODE_SUPPORTED
-# endif
-#endif
-
-#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_ASSEMBLER_CODE)
-# ifndef PNG_ASSEMBLER_CODE_SUPPORTED
-# define PNG_ASSEMBLER_CODE_SUPPORTED
-# endif
-
-# if defined(__GNUC__) && defined(__x86_64__) && (__GNUC__ < 4)
- /* work around 64-bit gcc compiler bugs in gcc-3.x */
-# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
-# define PNG_NO_MMX_CODE
-# endif
-# endif
-
-# if defined(__APPLE__)
-# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
-# define PNG_NO_MMX_CODE
-# endif
-# endif
-
-# if (defined(__MWERKS__) && ((__MWERKS__ < 0x0900) || macintosh))
-# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
-# define PNG_NO_MMX_CODE
-# endif
-# endif
-
-# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE)
-# define PNG_MMX_CODE_SUPPORTED
-# endif
-
-#endif
-/* end of obsolete code to be removed from libpng-1.4.0 */
-
-#if !defined(PNG_1_0_X)
-#if !defined(PNG_NO_USER_MEM) && !defined(PNG_USER_MEM_SUPPORTED)
-# define PNG_USER_MEM_SUPPORTED
-#endif
-#endif /* PNG_1_0_X */
-
-/* Added at libpng-1.2.6 */
-#if !defined(PNG_1_0_X)
-#ifndef PNG_SET_USER_LIMITS_SUPPORTED
-#if !defined(PNG_NO_SET_USER_LIMITS) && !defined(PNG_SET_USER_LIMITS_SUPPORTED)
-# define PNG_SET_USER_LIMITS_SUPPORTED
-#endif
-#endif
-#endif /* PNG_1_0_X */
-
-/* Added at libpng-1.0.16 and 1.2.6. To accept all valid PNGS no matter
- * how large, set these limits to 0x7fffffffL
- */
-#ifndef PNG_USER_WIDTH_MAX
-# define PNG_USER_WIDTH_MAX 1000000L
-#endif
-#ifndef PNG_USER_HEIGHT_MAX
-# define PNG_USER_HEIGHT_MAX 1000000L
-#endif
-
-/* Added at libpng-1.2.34 and 1.4.0 */
-#ifndef PNG_STRING_NEWLINE
-#define PNG_STRING_NEWLINE "\n"
-#endif
-
-/* These are currently experimental features, define them if you want */
-
-/* very little testing */
-/*
-#ifdef PNG_READ_SUPPORTED
-# ifndef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED
-# define PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED
-# endif
-#endif
-*/
-
-/* This is only for PowerPC big-endian and 680x0 systems */
-/* some testing */
-/*
-#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED
-# define PNG_READ_BIG_ENDIAN_SUPPORTED
-#endif
-*/
-
-/* Buggy compilers (e.g., gcc 2.7.2.2) need this */
-/*
-#define PNG_NO_POINTER_INDEXING
-*/
-
-/* These functions are turned off by default, as they will be phased out. */
-/*
-#define PNG_USELESS_TESTS_SUPPORTED
-#define PNG_CORRECT_PALETTE_SUPPORTED
-*/
-
-/* Any chunks you are not interested in, you can undef here. The
- * ones that allocate memory may be expecially important (hIST,
- * tEXt, zTXt, tRNS, pCAL). Others will just save time and make png_info
- * a bit smaller.
- */
-
-#if defined(PNG_READ_SUPPORTED) && \
- !defined(PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \
- !defined(PNG_NO_READ_ANCILLARY_CHUNKS)
-# define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED
-#endif
-
-#if defined(PNG_WRITE_SUPPORTED) && \
- !defined(PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \
- !defined(PNG_NO_WRITE_ANCILLARY_CHUNKS)
-# define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED
-#endif
-
-#ifdef PNG_READ_ANCILLARY_CHUNKS_SUPPORTED
-
-#ifdef PNG_NO_READ_TEXT
-# define PNG_NO_READ_iTXt
-# define PNG_NO_READ_tEXt
-# define PNG_NO_READ_zTXt
-#endif
-#ifndef PNG_NO_READ_bKGD
-# define PNG_READ_bKGD_SUPPORTED
-# define PNG_bKGD_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_cHRM
-# define PNG_READ_cHRM_SUPPORTED
-# define PNG_cHRM_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_gAMA
-# define PNG_READ_gAMA_SUPPORTED
-# define PNG_gAMA_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_hIST
-# define PNG_READ_hIST_SUPPORTED
-# define PNG_hIST_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_iCCP
-# define PNG_READ_iCCP_SUPPORTED
-# define PNG_iCCP_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_iTXt
-# ifndef PNG_READ_iTXt_SUPPORTED
-# define PNG_READ_iTXt_SUPPORTED
-# endif
-# ifndef PNG_iTXt_SUPPORTED
-# define PNG_iTXt_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_READ_oFFs
-# define PNG_READ_oFFs_SUPPORTED
-# define PNG_oFFs_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_pCAL
-# define PNG_READ_pCAL_SUPPORTED
-# define PNG_pCAL_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_sCAL
-# define PNG_READ_sCAL_SUPPORTED
-# define PNG_sCAL_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_pHYs
-# define PNG_READ_pHYs_SUPPORTED
-# define PNG_pHYs_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_sBIT
-# define PNG_READ_sBIT_SUPPORTED
-# define PNG_sBIT_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_sPLT
-# define PNG_READ_sPLT_SUPPORTED
-# define PNG_sPLT_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_sRGB
-# define PNG_READ_sRGB_SUPPORTED
-# define PNG_sRGB_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_tEXt
-# define PNG_READ_tEXt_SUPPORTED
-# define PNG_tEXt_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_tIME
-# define PNG_READ_tIME_SUPPORTED
-# define PNG_tIME_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_tRNS
-# define PNG_READ_tRNS_SUPPORTED
-# define PNG_tRNS_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_zTXt
-# define PNG_READ_zTXt_SUPPORTED
-# define PNG_zTXt_SUPPORTED
-#endif
-#ifndef PNG_NO_READ_UNKNOWN_CHUNKS
-# define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
-# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED
-# define PNG_UNKNOWN_CHUNKS_SUPPORTED
-# endif
-# ifndef PNG_NO_HANDLE_AS_UNKNOWN
-# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-# endif
-#endif
-#if !defined(PNG_NO_READ_USER_CHUNKS) && \
- defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
-# define PNG_READ_USER_CHUNKS_SUPPORTED
-# define PNG_USER_CHUNKS_SUPPORTED
-# ifdef PNG_NO_READ_UNKNOWN_CHUNKS
-# undef PNG_NO_READ_UNKNOWN_CHUNKS
-# endif
-# ifdef PNG_NO_HANDLE_AS_UNKNOWN
-# undef PNG_NO_HANDLE_AS_UNKNOWN
-# endif
-#endif
-#ifndef PNG_NO_READ_OPT_PLTE
-# define PNG_READ_OPT_PLTE_SUPPORTED /* only affects support of the */
-#endif /* optional PLTE chunk in RGB and RGBA images */
-#if defined(PNG_READ_iTXt_SUPPORTED) || defined(PNG_READ_tEXt_SUPPORTED) || \
- defined(PNG_READ_zTXt_SUPPORTED)
-# define PNG_READ_TEXT_SUPPORTED
-# define PNG_TEXT_SUPPORTED
-#endif
-
-#endif /* PNG_READ_ANCILLARY_CHUNKS_SUPPORTED */
-
-#ifdef PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED
-
-#ifdef PNG_NO_WRITE_TEXT
-# define PNG_NO_WRITE_iTXt
-# define PNG_NO_WRITE_tEXt
-# define PNG_NO_WRITE_zTXt
-#endif
-#ifndef PNG_NO_WRITE_bKGD
-# define PNG_WRITE_bKGD_SUPPORTED
-# ifndef PNG_bKGD_SUPPORTED
-# define PNG_bKGD_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_cHRM
-# define PNG_WRITE_cHRM_SUPPORTED
-# ifndef PNG_cHRM_SUPPORTED
-# define PNG_cHRM_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_gAMA
-# define PNG_WRITE_gAMA_SUPPORTED
-# ifndef PNG_gAMA_SUPPORTED
-# define PNG_gAMA_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_hIST
-# define PNG_WRITE_hIST_SUPPORTED
-# ifndef PNG_hIST_SUPPORTED
-# define PNG_hIST_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_iCCP
-# define PNG_WRITE_iCCP_SUPPORTED
-# ifndef PNG_iCCP_SUPPORTED
-# define PNG_iCCP_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_iTXt
-# ifndef PNG_WRITE_iTXt_SUPPORTED
-# define PNG_WRITE_iTXt_SUPPORTED
-# endif
-# ifndef PNG_iTXt_SUPPORTED
-# define PNG_iTXt_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_oFFs
-# define PNG_WRITE_oFFs_SUPPORTED
-# ifndef PNG_oFFs_SUPPORTED
-# define PNG_oFFs_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_pCAL
-# define PNG_WRITE_pCAL_SUPPORTED
-# ifndef PNG_pCAL_SUPPORTED
-# define PNG_pCAL_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_sCAL
-# define PNG_WRITE_sCAL_SUPPORTED
-# ifndef PNG_sCAL_SUPPORTED
-# define PNG_sCAL_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_pHYs
-# define PNG_WRITE_pHYs_SUPPORTED
-# ifndef PNG_pHYs_SUPPORTED
-# define PNG_pHYs_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_sBIT
-# define PNG_WRITE_sBIT_SUPPORTED
-# ifndef PNG_sBIT_SUPPORTED
-# define PNG_sBIT_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_sPLT
-# define PNG_WRITE_sPLT_SUPPORTED
-# ifndef PNG_sPLT_SUPPORTED
-# define PNG_sPLT_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_sRGB
-# define PNG_WRITE_sRGB_SUPPORTED
-# ifndef PNG_sRGB_SUPPORTED
-# define PNG_sRGB_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_tEXt
-# define PNG_WRITE_tEXt_SUPPORTED
-# ifndef PNG_tEXt_SUPPORTED
-# define PNG_tEXt_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_tIME
-# define PNG_WRITE_tIME_SUPPORTED
-# ifndef PNG_tIME_SUPPORTED
-# define PNG_tIME_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_tRNS
-# define PNG_WRITE_tRNS_SUPPORTED
-# ifndef PNG_tRNS_SUPPORTED
-# define PNG_tRNS_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_zTXt
-# define PNG_WRITE_zTXt_SUPPORTED
-# ifndef PNG_zTXt_SUPPORTED
-# define PNG_zTXt_SUPPORTED
-# endif
-#endif
-#ifndef PNG_NO_WRITE_UNKNOWN_CHUNKS
-# define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
-# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED
-# define PNG_UNKNOWN_CHUNKS_SUPPORTED
-# endif
-# ifndef PNG_NO_HANDLE_AS_UNKNOWN
-# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-# endif
-# endif
-#endif
-#if defined(PNG_WRITE_iTXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \
- defined(PNG_WRITE_zTXt_SUPPORTED)
-# define PNG_WRITE_TEXT_SUPPORTED
-# ifndef PNG_TEXT_SUPPORTED
-# define PNG_TEXT_SUPPORTED
-# endif
-#endif
-
-#endif /* PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED */
-
-/* Turn this off to disable png_read_png() and
- * png_write_png() and leave the row_pointers member
- * out of the info structure.
- */
-#ifndef PNG_NO_INFO_IMAGE
-# define PNG_INFO_IMAGE_SUPPORTED
-#endif
-
-/* need the time information for reading tIME chunks */
-#if defined(PNG_tIME_SUPPORTED)
-# if !defined(_WIN32_WCE)
- /* "time.h" functions are not supported on WindowsCE */
-# include <time.h>
-# endif
-#endif
-
-/* Some typedefs to get us started. These should be safe on most of the
- * common platforms. The typedefs should be at least as large as the
- * numbers suggest (a png_uint_32 must be at least 32 bits long), but they
- * don't have to be exactly that size. Some compilers dislike passing
- * unsigned shorts as function parameters, so you may be better off using
- * unsigned int for png_uint_16. Likewise, for 64-bit systems, you may
- * want to have unsigned int for png_uint_32 instead of unsigned long.
- */
-
-typedef unsigned long png_uint_32;
-typedef long png_int_32;
-typedef unsigned short png_uint_16;
-typedef short png_int_16;
-typedef unsigned char png_byte;
-
-/* This is usually size_t. It is typedef'ed just in case you need it to
- change (I'm not sure if you will or not, so I thought I'd be safe) */
-#ifdef PNG_SIZE_T
- typedef PNG_SIZE_T png_size_t;
-# define png_sizeof(x) png_convert_size(sizeof(x))
-#else
- typedef size_t png_size_t;
-# define png_sizeof(x) sizeof(x)
-#endif
-
-/* The following is needed for medium model support. It cannot be in the
- * PNG_INTERNAL section. Needs modification for other compilers besides
- * MSC. Model independent support declares all arrays and pointers to be
- * large using the far keyword. The zlib version used must also support
- * model independent data. As of version zlib 1.0.4, the necessary changes
- * have been made in zlib. The USE_FAR_KEYWORD define triggers other
- * changes that are needed. (Tim Wegner)
- */
-
-/* Separate compiler dependencies (problem here is that zlib.h always
- defines FAR. (SJT) */
-#ifdef __BORLANDC__
-# if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__)
-# define LDATA 1
-# else
-# define LDATA 0
-# endif
- /* GRR: why is Cygwin in here? Cygwin is not Borland C... */
-# if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__)
-# define PNG_MAX_MALLOC_64K
-# if (LDATA != 1)
-# ifndef FAR
-# define FAR __far
-# endif
-# define USE_FAR_KEYWORD
-# endif /* LDATA != 1 */
- /* Possibly useful for moving data out of default segment.
- * Uncomment it if you want. Could also define FARDATA as
- * const if your compiler supports it. (SJT)
-# define FARDATA FAR
- */
-# endif /* __WIN32__, __FLAT__, __CYGWIN__ */
-#endif /* __BORLANDC__ */
-
-
-/* Suggest testing for specific compiler first before testing for
- * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM,
- * making reliance oncertain keywords suspect. (SJT)
- */
-
-/* MSC Medium model */
-#if defined(FAR)
-# if defined(M_I86MM)
-# define USE_FAR_KEYWORD
-# define FARDATA FAR
-# include <dos.h>
-# endif
-#endif
-
-/* SJT: default case */
-#ifndef FAR
-# define FAR
-#endif
-
-/* At this point FAR is always defined */
-#ifndef FARDATA
-# define FARDATA
-#endif
-
-/* Typedef for floating-point numbers that are converted
- to fixed-point with a multiple of 100,000, e.g., int_gamma */
-typedef png_int_32 png_fixed_point;
-
-/* Add typedefs for pointers */
-typedef void FAR * png_voidp;
-typedef png_byte FAR * png_bytep;
-typedef png_uint_32 FAR * png_uint_32p;
-typedef png_int_32 FAR * png_int_32p;
-typedef png_uint_16 FAR * png_uint_16p;
-typedef png_int_16 FAR * png_int_16p;
-typedef PNG_CONST char FAR * png_const_charp;
-typedef char FAR * png_charp;
-typedef png_fixed_point FAR * png_fixed_point_p;
-
-#ifndef PNG_NO_STDIO
-#if defined(_WIN32_WCE)
-typedef HANDLE png_FILE_p;
-#else
-typedef FILE * png_FILE_p;
-#endif
-#endif
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-typedef double FAR * png_doublep;
-#endif
-
-/* Pointers to pointers; i.e. arrays */
-typedef png_byte FAR * FAR * png_bytepp;
-typedef png_uint_32 FAR * FAR * png_uint_32pp;
-typedef png_int_32 FAR * FAR * png_int_32pp;
-typedef png_uint_16 FAR * FAR * png_uint_16pp;
-typedef png_int_16 FAR * FAR * png_int_16pp;
-typedef PNG_CONST char FAR * FAR * png_const_charpp;
-typedef char FAR * FAR * png_charpp;
-typedef png_fixed_point FAR * FAR * png_fixed_point_pp;
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-typedef double FAR * FAR * png_doublepp;
-#endif
-
-/* Pointers to pointers to pointers; i.e., pointer to array */
-typedef char FAR * FAR * FAR * png_charppp;
-
-#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
-/* SPC - Is this stuff deprecated? */
-/* It'll be removed as of libpng-1.3.0 - GR-P */
-/* libpng typedefs for types in zlib. If zlib changes
- * or another compression library is used, then change these.
- * Eliminates need to change all the source files.
- */
-typedef charf * png_zcharp;
-typedef charf * FAR * png_zcharpp;
-typedef z_stream FAR * png_zstreamp;
-#endif /* (PNG_1_0_X) || defined(PNG_1_2_X) */
-
-/*
- * Define PNG_BUILD_DLL if the module being built is a Windows
- * LIBPNG DLL.
- *
- * Define PNG_USE_DLL if you want to *link* to the Windows LIBPNG DLL.
- * It is equivalent to Microsoft predefined macro _DLL that is
- * automatically defined when you compile using the share
- * version of the CRT (C Run-Time library)
- *
- * The cygwin mods make this behavior a little different:
- * Define PNG_BUILD_DLL if you are building a dll for use with cygwin
- * Define PNG_STATIC if you are building a static library for use with cygwin,
- * -or- if you are building an application that you want to link to the
- * static library.
- * PNG_USE_DLL is defined by default (no user action needed) unless one of
- * the other flags is defined.
- */
-
-#if !defined(PNG_DLL) && (defined(PNG_BUILD_DLL) || defined(PNG_USE_DLL))
-# define PNG_DLL
-#endif
-/* If CYGWIN, then disallow GLOBAL ARRAYS unless building a static lib.
- * When building a static lib, default to no GLOBAL ARRAYS, but allow
- * command-line override
- */
-#if defined(__CYGWIN__)
-# if !defined(PNG_STATIC)
-# if defined(PNG_USE_GLOBAL_ARRAYS)
-# undef PNG_USE_GLOBAL_ARRAYS
-# endif
-# if !defined(PNG_USE_LOCAL_ARRAYS)
-# define PNG_USE_LOCAL_ARRAYS
-# endif
-# else
-# if defined(PNG_USE_LOCAL_ARRAYS) || defined(PNG_NO_GLOBAL_ARRAYS)
-# if defined(PNG_USE_GLOBAL_ARRAYS)
-# undef PNG_USE_GLOBAL_ARRAYS
-# endif
-# endif
-# endif
-# if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS)
-# define PNG_USE_LOCAL_ARRAYS
-# endif
-#endif
-
-/* Do not use global arrays (helps with building DLL's)
- * They are no longer used in libpng itself, since version 1.0.5c,
- * but might be required for some pre-1.0.5c applications.
- */
-#if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS)
-# if defined(PNG_NO_GLOBAL_ARRAYS) || \
- (defined(__GNUC__) && defined(PNG_DLL)) || defined(_MSC_VER)
-# define PNG_USE_LOCAL_ARRAYS
-# else
-# define PNG_USE_GLOBAL_ARRAYS
-# endif
-#endif
-
-#if defined(__CYGWIN__)
-# undef PNGAPI
-# define PNGAPI __cdecl
-# undef PNG_IMPEXP
-# define PNG_IMPEXP
-#endif
-
-/* If you define PNGAPI, e.g., with compiler option "-DPNGAPI=__stdcall",
- * you may get warnings regarding the linkage of png_zalloc and png_zfree.
- * Don't ignore those warnings; you must also reset the default calling
- * convention in your compiler to match your PNGAPI, and you must build
- * zlib and your applications the same way you build libpng.
- */
-
-#if defined(__MINGW32__) && !defined(PNG_MODULEDEF)
-# ifndef PNG_NO_MODULEDEF
-# define PNG_NO_MODULEDEF
-# endif
-#endif
-
-#if !defined(PNG_IMPEXP) && defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF)
-# define PNG_IMPEXP
-#endif
-
-#if defined(PNG_DLL) || defined(_DLL) || defined(__DLL__ ) || \
- (( defined(_Windows) || defined(_WINDOWS) || \
- defined(WIN32) || defined(_WIN32) || defined(__WIN32__) ))
-
-# ifndef PNGAPI
-# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800))
-# define PNGAPI __cdecl
-# else
-# define PNGAPI _cdecl
-# endif
-# endif
-
-# if !defined(PNG_IMPEXP) && (!defined(PNG_DLL) || \
- 0 /* WINCOMPILER_WITH_NO_SUPPORT_FOR_DECLIMPEXP */)
-# define PNG_IMPEXP
-# endif
-
-# if !defined(PNG_IMPEXP)
-
-# define PNG_EXPORT_TYPE1(type,symbol) PNG_IMPEXP type PNGAPI symbol
-# define PNG_EXPORT_TYPE2(type,symbol) type PNG_IMPEXP PNGAPI symbol
-
- /* Borland/Microsoft */
-# if defined(_MSC_VER) || defined(__BORLANDC__)
-# if (_MSC_VER >= 800) || (__BORLANDC__ >= 0x500)
-# define PNG_EXPORT PNG_EXPORT_TYPE1
-# else
-# define PNG_EXPORT PNG_EXPORT_TYPE2
-# if defined(PNG_BUILD_DLL)
-# define PNG_IMPEXP __export
-# else
-# define PNG_IMPEXP /*__import */ /* doesn't exist AFAIK in
- VC++ */
-# endif /* Exists in Borland C++ for
- C++ classes (== huge) */
-# endif
-# endif
-
-# if !defined(PNG_IMPEXP)
-# if defined(PNG_BUILD_DLL)
-# define PNG_IMPEXP __declspec(dllexport)
-# else
-# define PNG_IMPEXP __declspec(dllimport)
-# endif
-# endif
-# endif /* PNG_IMPEXP */
-#else /* !(DLL || non-cygwin WINDOWS) */
-# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
-# ifndef PNGAPI
-# define PNGAPI _System
-# endif
-# else
-# if 0 /* ... other platforms, with other meanings */
-# endif
-# endif
-#endif
-
-#ifndef PNGAPI
-# define PNGAPI
-#endif
-#ifndef PNG_IMPEXP
-# define PNG_IMPEXP
-#endif
-
-#ifdef PNG_BUILDSYMS
-# ifndef PNG_EXPORT
-# define PNG_EXPORT(type,symbol) PNG_FUNCTION_EXPORT symbol END
-# endif
-# ifdef PNG_USE_GLOBAL_ARRAYS
-# ifndef PNG_EXPORT_VAR
-# define PNG_EXPORT_VAR(type) PNG_DATA_EXPORT
-# endif
-# endif
-#endif
-
-#ifndef PNG_EXPORT
-# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol
-#endif
-
-#ifdef PNG_USE_GLOBAL_ARRAYS
-# ifndef PNG_EXPORT_VAR
-# define PNG_EXPORT_VAR(type) extern PNG_IMPEXP type
-# endif
-#endif
-
-/* User may want to use these so they are not in PNG_INTERNAL. Any library
- * functions that are passed far data must be model independent.
- */
-
-#ifndef PNG_ABORT
-# define PNG_ABORT() abort()
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
-# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf)
-#else
-# define png_jmpbuf(png_ptr) \
- (LIBPNG_WAS_COMPILED_WITH__PNG_SETJMP_NOT_SUPPORTED)
-#endif
-
-#if defined(USE_FAR_KEYWORD) /* memory model independent fns */
-/* use this to make far-to-near assignments */
-# define CHECK 1
-# define NOCHECK 0
-# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK))
-# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK))
-# define png_snprintf _fsnprintf /* Added to v 1.2.19 */
-# define png_strlen _fstrlen
-# define png_memcmp _fmemcmp /* SJT: added */
-# define png_memcpy _fmemcpy
-# define png_memset _fmemset
-#else /* use the usual functions */
-# define CVT_PTR(ptr) (ptr)
-# define CVT_PTR_NOCHECK(ptr) (ptr)
-# ifndef PNG_NO_SNPRINTF
-# ifdef _MSC_VER
-# define png_snprintf _snprintf /* Added to v 1.2.19 */
-# define png_snprintf2 _snprintf
-# define png_snprintf6 _snprintf
-# else
-# define png_snprintf snprintf /* Added to v 1.2.19 */
-# define png_snprintf2 snprintf
-# define png_snprintf6 snprintf
-# endif
-# else
- /* You don't have or don't want to use snprintf(). Caution: Using
- * sprintf instead of snprintf exposes your application to accidental
- * or malevolent buffer overflows. If you don't have snprintf()
- * as a general rule you should provide one (you can get one from
- * Portable OpenSSH). */
-# define png_snprintf(s1,n,fmt,x1) sprintf(s1,fmt,x1)
-# define png_snprintf2(s1,n,fmt,x1,x2) sprintf(s1,fmt,x1,x2)
-# define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \
- sprintf(s1,fmt,x1,x2,x3,x4,x5,x6)
-# endif
-# define png_strlen strlen
-# define png_memcmp memcmp /* SJT: added */
-# define png_memcpy memcpy
-# define png_memset memset
-#endif
-/* End of memory model independent support */
-
-/* Just a little check that someone hasn't tried to define something
- * contradictory.
- */
-#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K)
-# undef PNG_ZBUF_SIZE
-# define PNG_ZBUF_SIZE 65536L
-#endif
-
-/* Added at libpng-1.2.8 */
-#endif /* PNG_VERSION_INFO_ONLY */
-
-#endif /* PNGCONF_H */
diff --git a/navit/support/libpng/pngerror.c b/navit/support/libpng/pngerror.c
deleted file mode 100644
index b85ee1165..000000000
--- a/navit/support/libpng/pngerror.c
+++ /dev/null
@@ -1,359 +0,0 @@
-
-/* pngerror.c - stub functions for i/o and memory allocation
- *
- * Last changed in libpng 1.2.36 [May 7, 2009]
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2009 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This file provides a location for all error handling. Users who
- * need special error handling are expected to write replacement functions
- * and use png_set_error_fn() to use those functions. See the instructions
- * at each function.
- */
-
-#define PNG_INTERNAL
-#include "png.h"
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-
-static void /* PRIVATE */
-png_default_error PNGARG((png_structp png_ptr,
- png_const_charp error_message));
-#ifndef PNG_NO_WARNINGS
-static void /* PRIVATE */
-png_default_warning PNGARG((png_structp png_ptr,
- png_const_charp warning_message));
-#endif /* PNG_NO_WARNINGS */
-
-/* This function is called whenever there is a fatal error. This function
- * should not be changed. If there is a need to handle errors differently,
- * you should supply a replacement error function and use png_set_error_fn()
- * to replace the error function at run-time.
- */
-#ifndef PNG_NO_ERROR_TEXT
-void PNGAPI
-png_error(png_structp png_ptr, png_const_charp error_message)
-{
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- char msg[16];
- if (png_ptr != NULL)
- {
- if (png_ptr->flags&
- (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
- {
- if (*error_message == '#')
- {
- /* Strip "#nnnn " from beginning of error message. */
- int offset;
- for (offset = 1; offset<15; offset++)
- if (error_message[offset] == ' ')
- break;
- if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
- {
- int i;
- for (i = 0; i < offset - 1; i++)
- msg[i] = error_message[i + 1];
- msg[i - 1] = '\0';
- error_message = msg;
- }
- else
- error_message += offset;
- }
- else
- {
- if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT)
- {
- msg[0] = '0';
- msg[1] = '\0';
- error_message = msg;
- }
- }
- }
- }
-#endif
- if (png_ptr != NULL && png_ptr->error_fn != NULL)
- (*(png_ptr->error_fn))(png_ptr, error_message);
-
- /* If the custom handler doesn't exist, or if it returns,
- use the default handler, which will not return. */
- png_default_error(png_ptr, error_message);
-}
-#else
-void PNGAPI
-png_err(png_structp png_ptr)
-{
- if (png_ptr != NULL && png_ptr->error_fn != NULL)
- (*(png_ptr->error_fn))(png_ptr, '\0');
-
- /* If the custom handler doesn't exist, or if it returns,
- use the default handler, which will not return. */
- png_default_error(png_ptr, '\0');
-}
-#endif /* PNG_NO_ERROR_TEXT */
-
-#ifndef PNG_NO_WARNINGS
-/* This function is called whenever there is a non-fatal error. This function
- * should not be changed. If there is a need to handle warnings differently,
- * you should supply a replacement warning function and use
- * png_set_error_fn() to replace the warning function at run-time.
- */
-void PNGAPI
-png_warning(png_structp png_ptr, png_const_charp warning_message)
-{
- int offset = 0;
- if (png_ptr != NULL)
- {
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- if (png_ptr->flags&
- (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))
-#endif
- {
- if (*warning_message == '#')
- {
- for (offset = 1; offset < 15; offset++)
- if (warning_message[offset] == ' ')
- break;
- }
- }
- }
- if (png_ptr != NULL && png_ptr->warning_fn != NULL)
- (*(png_ptr->warning_fn))(png_ptr, warning_message + offset);
- else
- png_default_warning(png_ptr, warning_message + offset);
-}
-#endif /* PNG_NO_WARNINGS */
-
-
-/* These utilities are used internally to build an error message that relates
- * to the current chunk. The chunk name comes from png_ptr->chunk_name,
- * this is used to prefix the message. The message is limited in length
- * to 63 bytes, the name characters are output as hex digits wrapped in []
- * if the character is invalid.
- */
-#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97))
-static PNG_CONST char png_digit[16] = {
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
- 'A', 'B', 'C', 'D', 'E', 'F'
-};
-
-#define PNG_MAX_ERROR_TEXT 64
-
-#if !defined(PNG_NO_WARNINGS) || !defined(PNG_NO_ERROR_TEXT)
-static void /* PRIVATE */
-png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp
- error_message)
-{
- int iout = 0, iin = 0;
-
- while (iin < 4)
- {
- int c = png_ptr->chunk_name[iin++];
- if (isnonalpha(c))
- {
- buffer[iout++] = '[';
- buffer[iout++] = png_digit[(c & 0xf0) >> 4];
- buffer[iout++] = png_digit[c & 0x0f];
- buffer[iout++] = ']';
- }
- else
- {
- buffer[iout++] = (png_byte)c;
- }
- }
-
- if (error_message == NULL)
- buffer[iout] = '\0';
- else
- {
- buffer[iout++] = ':';
- buffer[iout++] = ' ';
- png_memcpy(buffer + iout, error_message, PNG_MAX_ERROR_TEXT);
- buffer[iout + PNG_MAX_ERROR_TEXT - 1] = '\0';
- }
-}
-
-#ifdef PNG_READ_SUPPORTED
-void PNGAPI
-png_chunk_error(png_structp png_ptr, png_const_charp error_message)
-{
- char msg[18+PNG_MAX_ERROR_TEXT];
- if (png_ptr == NULL)
- png_error(png_ptr, error_message);
- else
- {
- png_format_buffer(png_ptr, msg, error_message);
- png_error(png_ptr, msg);
- }
-}
-#endif /* PNG_READ_SUPPORTED */
-#endif /* !defined(PNG_NO_WARNINGS) || !defined(PNG_NO_ERROR_TEXT) */
-
-#ifndef PNG_NO_WARNINGS
-void PNGAPI
-png_chunk_warning(png_structp png_ptr, png_const_charp warning_message)
-{
- char msg[18+PNG_MAX_ERROR_TEXT];
- if (png_ptr == NULL)
- png_warning(png_ptr, warning_message);
- else
- {
- png_format_buffer(png_ptr, msg, warning_message);
- png_warning(png_ptr, msg);
- }
-}
-#endif /* PNG_NO_WARNINGS */
-
-
-/* This is the default error handling function. Note that replacements for
- * this function MUST NOT RETURN, or the program will likely crash. This
- * function is used by default, or if the program supplies NULL for the
- * error function pointer in png_set_error_fn().
- */
-static void /* PRIVATE */
-png_default_error(png_structp png_ptr, png_const_charp error_message)
-{
-#ifndef PNG_NO_CONSOLE_IO
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- if (*error_message == '#')
- {
- /* Strip "#nnnn " from beginning of error message. */
- int offset;
- char error_number[16];
- for (offset = 0; offset<15; offset++)
- {
- error_number[offset] = error_message[offset + 1];
- if (error_message[offset] == ' ')
- break;
- }
- if ((offset > 1) && (offset < 15))
- {
- error_number[offset - 1] = '\0';
- fprintf(stderr, "libpng error no. %s: %s",
- error_number, error_message + offset + 1);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
- else
- fprintf(stderr, "libpng error: %s, offset=%d",
- error_message, offset);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
- else
-#endif
- {
- fprintf(stderr, "libpng error: %s", error_message);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
- if (png_ptr)
- {
-# ifdef USE_FAR_KEYWORD
- {
- jmp_buf jmpbuf;
- png_memcpy(jmpbuf, png_ptr->jmpbuf, png_sizeof(jmp_buf));
- longjmp(jmpbuf, 1);
- }
-# else
- longjmp(png_ptr->jmpbuf, 1);
-# endif
- }
-#else
- PNG_ABORT();
-#endif
-#ifdef PNG_NO_CONSOLE_IO
- error_message = error_message; /* make compiler happy */
-#endif
-}
-
-#ifndef PNG_NO_WARNINGS
-/* This function is called when there is a warning, but the library thinks
- * it can continue anyway. Replacement functions don't have to do anything
- * here if you don't want them to. In the default configuration, png_ptr is
- * not used, but it is passed in case it may be useful.
- */
-static void /* PRIVATE */
-png_default_warning(png_structp png_ptr, png_const_charp warning_message)
-{
-#ifndef PNG_NO_CONSOLE_IO
-# ifdef PNG_ERROR_NUMBERS_SUPPORTED
- if (*warning_message == '#')
- {
- int offset;
- char warning_number[16];
- for (offset = 0; offset < 15; offset++)
- {
- warning_number[offset] = warning_message[offset + 1];
- if (warning_message[offset] == ' ')
- break;
- }
- if ((offset > 1) && (offset < 15))
- {
- warning_number[offset + 1] = '\0';
- fprintf(stderr, "libpng warning no. %s: %s",
- warning_number, warning_message + offset);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
- else
- {
- fprintf(stderr, "libpng warning: %s",
- warning_message);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
- }
- else
-# endif
- {
- fprintf(stderr, "libpng warning: %s", warning_message);
- fprintf(stderr, PNG_STRING_NEWLINE);
- }
-#else
- warning_message = warning_message; /* make compiler happy */
-#endif
- png_ptr = png_ptr; /* make compiler happy */
-}
-#endif /* PNG_NO_WARNINGS */
-
-/* This function is called when the application wants to use another method
- * of handling errors and warnings. Note that the error function MUST NOT
- * return to the calling routine or serious problems will occur. The return
- * method used in the default routine calls longjmp(png_ptr->jmpbuf, 1)
- */
-void PNGAPI
-png_set_error_fn(png_structp png_ptr, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warning_fn)
-{
- if (png_ptr == NULL)
- return;
- png_ptr->error_ptr = error_ptr;
- png_ptr->error_fn = error_fn;
- png_ptr->warning_fn = warning_fn;
-}
-
-
-/* This function returns a pointer to the error_ptr associated with the user
- * functions. The application should free any memory associated with this
- * pointer before png_write_destroy and png_read_destroy are called.
- */
-png_voidp PNGAPI
-png_get_error_ptr(png_structp png_ptr)
-{
- if (png_ptr == NULL)
- return NULL;
- return ((png_voidp)png_ptr->error_ptr);
-}
-
-
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
-void PNGAPI
-png_set_strip_error_numbers(png_structp png_ptr, png_uint_32 strip_mode)
-{
- if (png_ptr != NULL)
- {
- png_ptr->flags &=
- ((~(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode);
- }
-}
-#endif
-#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/navit/support/libpng/pngget.c b/navit/support/libpng/pngget.c
deleted file mode 100644
index 3b2b64600..000000000
--- a/navit/support/libpng/pngget.c
+++ /dev/null
@@ -1,900 +0,0 @@
-
-/* pngget.c - retrieval of values from info struct
- *
- * Last changed in libpng 1.2.30 [August 15, 2008]
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2008 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- */
-
-#define PNG_INTERNAL
-#include "png.h"
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-
-png_uint_32 PNGAPI
-png_get_valid(png_structp png_ptr, png_infop info_ptr, png_uint_32 flag)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return(info_ptr->valid & flag);
- else
- return(0);
-}
-
-png_uint_32 PNGAPI
-png_get_rowbytes(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return(info_ptr->rowbytes);
- else
- return(0);
-}
-
-#if defined(PNG_INFO_IMAGE_SUPPORTED)
-png_bytepp PNGAPI
-png_get_rows(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return(info_ptr->row_pointers);
- else
- return(0);
-}
-#endif
-
-#ifdef PNG_EASY_ACCESS_SUPPORTED
-/* easy access to info, added in libpng-0.99 */
-png_uint_32 PNGAPI
-png_get_image_width(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- {
- return info_ptr->width;
- }
- return (0);
-}
-
-png_uint_32 PNGAPI
-png_get_image_height(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- {
- return info_ptr->height;
- }
- return (0);
-}
-
-png_byte PNGAPI
-png_get_bit_depth(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- {
- return info_ptr->bit_depth;
- }
- return (0);
-}
-
-png_byte PNGAPI
-png_get_color_type(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- {
- return info_ptr->color_type;
- }
- return (0);
-}
-
-png_byte PNGAPI
-png_get_filter_type(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- {
- return info_ptr->filter_type;
- }
- return (0);
-}
-
-png_byte PNGAPI
-png_get_interlace_type(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- {
- return info_ptr->interlace_type;
- }
- return (0);
-}
-
-png_byte PNGAPI
-png_get_compression_type(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- {
- return info_ptr->compression_type;
- }
- return (0);
-}
-
-png_uint_32 PNGAPI
-png_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
-#if defined(PNG_pHYs_SUPPORTED)
- if (info_ptr->valid & PNG_INFO_pHYs)
- {
- png_debug1(1, "in %s retrieval function", "png_get_x_pixels_per_meter");
- if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
- return (0);
- else return (info_ptr->x_pixels_per_unit);
- }
-#else
- return (0);
-#endif
- return (0);
-}
-
-png_uint_32 PNGAPI
-png_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
-#if defined(PNG_pHYs_SUPPORTED)
- if (info_ptr->valid & PNG_INFO_pHYs)
- {
- png_debug1(1, "in %s retrieval function", "png_get_y_pixels_per_meter");
- if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER)
- return (0);
- else return (info_ptr->y_pixels_per_unit);
- }
-#else
- return (0);
-#endif
- return (0);
-}
-
-png_uint_32 PNGAPI
-png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
-#if defined(PNG_pHYs_SUPPORTED)
- if (info_ptr->valid & PNG_INFO_pHYs)
- {
- png_debug1(1, "in %s retrieval function", "png_get_pixels_per_meter");
- if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER ||
- info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit)
- return (0);
- else return (info_ptr->x_pixels_per_unit);
- }
-#else
- return (0);
-#endif
- return (0);
-}
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-float PNGAPI
-png_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr)
- {
- if (png_ptr != NULL && info_ptr != NULL)
-#if defined(PNG_pHYs_SUPPORTED)
- if (info_ptr->valid & PNG_INFO_pHYs)
- {
- png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio");
- if (info_ptr->x_pixels_per_unit == 0)
- return ((float)0.0);
- else
- return ((float)((float)info_ptr->y_pixels_per_unit
- /(float)info_ptr->x_pixels_per_unit));
- }
-#else
- return (0.0);
-#endif
- return ((float)0.0);
-}
-#endif
-
-png_int_32 PNGAPI
-png_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
-#if defined(PNG_oFFs_SUPPORTED)
- if (info_ptr->valid & PNG_INFO_oFFs)
- {
- png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
- if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
- return (0);
- else return (info_ptr->x_offset);
- }
-#else
- return (0);
-#endif
- return (0);
-}
-
-png_int_32 PNGAPI
-png_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
-#if defined(PNG_oFFs_SUPPORTED)
- if (info_ptr->valid & PNG_INFO_oFFs)
- {
- png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
- if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER)
- return (0);
- else return (info_ptr->y_offset);
- }
-#else
- return (0);
-#endif
- return (0);
-}
-
-png_int_32 PNGAPI
-png_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
-#if defined(PNG_oFFs_SUPPORTED)
- if (info_ptr->valid & PNG_INFO_oFFs)
- {
- png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns");
- if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
- return (0);
- else return (info_ptr->x_offset);
- }
-#else
- return (0);
-#endif
- return (0);
-}
-
-png_int_32 PNGAPI
-png_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
-#if defined(PNG_oFFs_SUPPORTED)
- if (info_ptr->valid & PNG_INFO_oFFs)
- {
- png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns");
- if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL)
- return (0);
- else return (info_ptr->y_offset);
- }
-#else
- return (0);
-#endif
- return (0);
-}
-
-#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
-{
- return ((png_uint_32)((float)png_get_pixels_per_meter(png_ptr, info_ptr)
- *.0254 +.5));
-}
-
-png_uint_32 PNGAPI
-png_get_x_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
-{
- return ((png_uint_32)((float)png_get_x_pixels_per_meter(png_ptr, info_ptr)
- *.0254 +.5));
-}
-
-png_uint_32 PNGAPI
-png_get_y_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
-{
- return ((png_uint_32)((float)png_get_y_pixels_per_meter(png_ptr, info_ptr)
- *.0254 +.5));
-}
-
-float PNGAPI
-png_get_x_offset_inches(png_structp png_ptr, png_infop info_ptr)
-{
- return ((float)png_get_x_offset_microns(png_ptr, info_ptr)
- *.00003937);
-}
-
-float PNGAPI
-png_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr)
-{
- return ((float)png_get_y_offset_microns(png_ptr, info_ptr)
- *.00003937);
-}
-
-#if defined(PNG_pHYs_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr,
- png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)
-{
- png_uint_32 retval = 0;
-
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
- {
- png_debug1(1, "in %s retrieval function", "pHYs");
- if (res_x != NULL)
- {
- *res_x = info_ptr->x_pixels_per_unit;
- retval |= PNG_INFO_pHYs;
- }
- if (res_y != NULL)
- {
- *res_y = info_ptr->y_pixels_per_unit;
- retval |= PNG_INFO_pHYs;
- }
- if (unit_type != NULL)
- {
- *unit_type = (int)info_ptr->phys_unit_type;
- retval |= PNG_INFO_pHYs;
- if (*unit_type == 1)
- {
- if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50);
- if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50);
- }
- }
- }
- return (retval);
-}
-#endif /* PNG_pHYs_SUPPORTED */
-#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */
-
-/* png_get_channels really belongs in here, too, but it's been around longer */
-
-#endif /* PNG_EASY_ACCESS_SUPPORTED */
-
-png_byte PNGAPI
-png_get_channels(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return(info_ptr->channels);
- else
- return (0);
-}
-
-png_bytep PNGAPI
-png_get_signature(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr != NULL && info_ptr != NULL)
- return(info_ptr->signature);
- else
- return (NULL);
-}
-
-#if defined(PNG_bKGD_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_bKGD(png_structp png_ptr, png_infop info_ptr,
- png_color_16p *background)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD)
- && background != NULL)
- {
- png_debug1(1, "in %s retrieval function", "bKGD");
- *background = &(info_ptr->background);
- return (PNG_INFO_bKGD);
- }
- return (0);
-}
-#endif
-
-#if defined(PNG_cHRM_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_cHRM(png_structp png_ptr, png_infop info_ptr,
- double *white_x, double *white_y, double *red_x, double *red_y,
- double *green_x, double *green_y, double *blue_x, double *blue_y)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
- {
- png_debug1(1, "in %s retrieval function", "cHRM");
- if (white_x != NULL)
- *white_x = (double)info_ptr->x_white;
- if (white_y != NULL)
- *white_y = (double)info_ptr->y_white;
- if (red_x != NULL)
- *red_x = (double)info_ptr->x_red;
- if (red_y != NULL)
- *red_y = (double)info_ptr->y_red;
- if (green_x != NULL)
- *green_x = (double)info_ptr->x_green;
- if (green_y != NULL)
- *green_y = (double)info_ptr->y_green;
- if (blue_x != NULL)
- *blue_x = (double)info_ptr->x_blue;
- if (blue_y != NULL)
- *blue_y = (double)info_ptr->y_blue;
- return (PNG_INFO_cHRM);
- }
- return (0);
-}
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
- png_fixed_point *white_x, png_fixed_point *white_y, png_fixed_point *red_x,
- png_fixed_point *red_y, png_fixed_point *green_x, png_fixed_point *green_y,
- png_fixed_point *blue_x, png_fixed_point *blue_y)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
- {
- png_debug1(1, "in %s retrieval function", "cHRM");
- if (white_x != NULL)
- *white_x = info_ptr->int_x_white;
- if (white_y != NULL)
- *white_y = info_ptr->int_y_white;
- if (red_x != NULL)
- *red_x = info_ptr->int_x_red;
- if (red_y != NULL)
- *red_y = info_ptr->int_y_red;
- if (green_x != NULL)
- *green_x = info_ptr->int_x_green;
- if (green_y != NULL)
- *green_y = info_ptr->int_y_green;
- if (blue_x != NULL)
- *blue_x = info_ptr->int_x_blue;
- if (blue_y != NULL)
- *blue_y = info_ptr->int_y_blue;
- return (PNG_INFO_cHRM);
- }
- return (0);
-}
-#endif
-#endif
-
-#if defined(PNG_gAMA_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_gAMA(png_structp png_ptr, png_infop info_ptr, double *file_gamma)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
- && file_gamma != NULL)
- {
- png_debug1(1, "in %s retrieval function", "gAMA");
- *file_gamma = (double)info_ptr->gamma;
- return (PNG_INFO_gAMA);
- }
- return (0);
-}
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_gAMA_fixed(png_structp png_ptr, png_infop info_ptr,
- png_fixed_point *int_file_gamma)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
- && int_file_gamma != NULL)
- {
- png_debug1(1, "in %s retrieval function", "gAMA");
- *int_file_gamma = info_ptr->int_gamma;
- return (PNG_INFO_gAMA);
- }
- return (0);
-}
-#endif
-#endif
-
-#if defined(PNG_sRGB_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_sRGB(png_structp png_ptr, png_infop info_ptr, int *file_srgb_intent)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB)
- && file_srgb_intent != NULL)
- {
- png_debug1(1, "in %s retrieval function", "sRGB");
- *file_srgb_intent = (int)info_ptr->srgb_intent;
- return (PNG_INFO_sRGB);
- }
- return (0);
-}
-#endif
-
-#if defined(PNG_iCCP_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_iCCP(png_structp png_ptr, png_infop info_ptr,
- png_charpp name, int *compression_type,
- png_charpp profile, png_uint_32 *proflen)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP)
- && name != NULL && profile != NULL && proflen != NULL)
- {
- png_debug1(1, "in %s retrieval function", "iCCP");
- *name = info_ptr->iccp_name;
- *profile = info_ptr->iccp_profile;
- /* compression_type is a dummy so the API won't have to change
- if we introduce multiple compression types later. */
- *proflen = (int)info_ptr->iccp_proflen;
- *compression_type = (int)info_ptr->iccp_compression;
- return (PNG_INFO_iCCP);
- }
- return (0);
-}
-#endif
-
-#if defined(PNG_sPLT_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_sPLT(png_structp png_ptr, png_infop info_ptr,
- png_sPLT_tpp spalettes)
-{
- if (png_ptr != NULL && info_ptr != NULL && spalettes != NULL)
- {
- *spalettes = info_ptr->splt_palettes;
- return ((png_uint_32)info_ptr->splt_palettes_num);
- }
- return (0);
-}
-#endif
-
-#if defined(PNG_hIST_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p *hist)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST)
- && hist != NULL)
- {
- png_debug1(1, "in %s retrieval function", "hIST");
- *hist = info_ptr->hist;
- return (PNG_INFO_hIST);
- }
- return (0);
-}
-#endif
-
-png_uint_32 PNGAPI
-png_get_IHDR(png_structp png_ptr, png_infop info_ptr,
- png_uint_32 *width, png_uint_32 *height, int *bit_depth,
- int *color_type, int *interlace_type, int *compression_type,
- int *filter_type)
-
-{
- if (png_ptr != NULL && info_ptr != NULL && width != NULL && height != NULL &&
- bit_depth != NULL && color_type != NULL)
- {
- png_debug1(1, "in %s retrieval function", "IHDR");
- *width = info_ptr->width;
- *height = info_ptr->height;
- *bit_depth = info_ptr->bit_depth;
- if (info_ptr->bit_depth < 1 || info_ptr->bit_depth > 16)
- png_error(png_ptr, "Invalid bit depth");
- *color_type = info_ptr->color_type;
- if (info_ptr->color_type > 6)
- png_error(png_ptr, "Invalid color type");
- if (compression_type != NULL)
- *compression_type = info_ptr->compression_type;
- if (filter_type != NULL)
- *filter_type = info_ptr->filter_type;
- if (interlace_type != NULL)
- *interlace_type = info_ptr->interlace_type;
-
- /* check for potential overflow of rowbytes */
- if (*width == 0 || *width > PNG_UINT_31_MAX)
- png_error(png_ptr, "Invalid image width");
- if (*height == 0 || *height > PNG_UINT_31_MAX)
- png_error(png_ptr, "Invalid image height");
- if (info_ptr->width > (PNG_UINT_32_MAX
- >> 3) /* 8-byte RGBA pixels */
- - 64 /* bigrowbuf hack */
- - 1 /* filter byte */
- - 7*8 /* rounding of width to multiple of 8 pixels */
- - 8) /* extra max_pixel_depth pad */
- {
- png_warning(png_ptr,
- "Width too large for libpng to process image data.");
- }
- return (1);
- }
- return (0);
-}
-
-#if defined(PNG_oFFs_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_oFFs(png_structp png_ptr, png_infop info_ptr,
- png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)
- && offset_x != NULL && offset_y != NULL && unit_type != NULL)
- {
- png_debug1(1, "in %s retrieval function", "oFFs");
- *offset_x = info_ptr->x_offset;
- *offset_y = info_ptr->y_offset;
- *unit_type = (int)info_ptr->offset_unit_type;
- return (PNG_INFO_oFFs);
- }
- return (0);
-}
-#endif
-
-#if defined(PNG_pCAL_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_pCAL(png_structp png_ptr, png_infop info_ptr,
- png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams,
- png_charp *units, png_charpp *params)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL)
- && purpose != NULL && X0 != NULL && X1 != NULL && type != NULL &&
- nparams != NULL && units != NULL && params != NULL)
- {
- png_debug1(1, "in %s retrieval function", "pCAL");
- *purpose = info_ptr->pcal_purpose;
- *X0 = info_ptr->pcal_X0;
- *X1 = info_ptr->pcal_X1;
- *type = (int)info_ptr->pcal_type;
- *nparams = (int)info_ptr->pcal_nparams;
- *units = info_ptr->pcal_units;
- *params = info_ptr->pcal_params;
- return (PNG_INFO_pCAL);
- }
- return (0);
-}
-#endif
-
-#if defined(PNG_sCAL_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_sCAL(png_structp png_ptr, png_infop info_ptr,
- int *unit, double *width, double *height)
-{
- if (png_ptr != NULL && info_ptr != NULL &&
- (info_ptr->valid & PNG_INFO_sCAL))
- {
- *unit = info_ptr->scal_unit;
- *width = info_ptr->scal_pixel_width;
- *height = info_ptr->scal_pixel_height;
- return (PNG_INFO_sCAL);
- }
- return(0);
-}
-#else
-#ifdef PNG_FIXED_POINT_SUPPORTED
-png_uint_32 PNGAPI
-png_get_sCAL_s(png_structp png_ptr, png_infop info_ptr,
- int *unit, png_charpp width, png_charpp height)
-{
- if (png_ptr != NULL && info_ptr != NULL &&
- (info_ptr->valid & PNG_INFO_sCAL))
- {
- *unit = info_ptr->scal_unit;
- *width = info_ptr->scal_s_width;
- *height = info_ptr->scal_s_height;
- return (PNG_INFO_sCAL);
- }
- return(0);
-}
-#endif
-#endif
-#endif
-
-#if defined(PNG_pHYs_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_pHYs(png_structp png_ptr, png_infop info_ptr,
- png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)
-{
- png_uint_32 retval = 0;
-
- if (png_ptr != NULL && info_ptr != NULL &&
- (info_ptr->valid & PNG_INFO_pHYs))
- {
- png_debug1(1, "in %s retrieval function", "pHYs");
- if (res_x != NULL)
- {
- *res_x = info_ptr->x_pixels_per_unit;
- retval |= PNG_INFO_pHYs;
- }
- if (res_y != NULL)
- {
- *res_y = info_ptr->y_pixels_per_unit;
- retval |= PNG_INFO_pHYs;
- }
- if (unit_type != NULL)
- {
- *unit_type = (int)info_ptr->phys_unit_type;
- retval |= PNG_INFO_pHYs;
- }
- }
- return (retval);
-}
-#endif
-
-png_uint_32 PNGAPI
-png_get_PLTE(png_structp png_ptr, png_infop info_ptr, png_colorp *palette,
- int *num_palette)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_PLTE)
- && palette != NULL)
- {
- png_debug1(1, "in %s retrieval function", "PLTE");
- *palette = info_ptr->palette;
- *num_palette = info_ptr->num_palette;
- png_debug1(3, "num_palette = %d", *num_palette);
- return (PNG_INFO_PLTE);
- }
- return (0);
-}
-
-#if defined(PNG_sBIT_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_sBIT(png_structp png_ptr, png_infop info_ptr, png_color_8p *sig_bit)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT)
- && sig_bit != NULL)
- {
- png_debug1(1, "in %s retrieval function", "sBIT");
- *sig_bit = &(info_ptr->sig_bit);
- return (PNG_INFO_sBIT);
- }
- return (0);
-}
-#endif
-
-#if defined(PNG_TEXT_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_text(png_structp png_ptr, png_infop info_ptr, png_textp *text_ptr,
- int *num_text)
-{
- if (png_ptr != NULL && info_ptr != NULL && info_ptr->num_text > 0)
- {
- png_debug1(1, "in %s retrieval function",
- (png_ptr->chunk_name[0] == '\0' ? "text"
- : (png_const_charp)png_ptr->chunk_name));
- if (text_ptr != NULL)
- *text_ptr = info_ptr->text;
- if (num_text != NULL)
- *num_text = info_ptr->num_text;
- return ((png_uint_32)info_ptr->num_text);
- }
- if (num_text != NULL)
- *num_text = 0;
- return(0);
-}
-#endif
-
-#if defined(PNG_tIME_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_tIME(png_structp png_ptr, png_infop info_ptr, png_timep *mod_time)
-{
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME)
- && mod_time != NULL)
- {
- png_debug1(1, "in %s retrieval function", "tIME");
- *mod_time = &(info_ptr->mod_time);
- return (PNG_INFO_tIME);
- }
- return (0);
-}
-#endif
-
-#if defined(PNG_tRNS_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_tRNS(png_structp png_ptr, png_infop info_ptr,
- png_bytep *trans, int *num_trans, png_color_16p *trans_values)
-{
- png_uint_32 retval = 0;
- if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS))
- {
- png_debug1(1, "in %s retrieval function", "tRNS");
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (trans != NULL)
- {
- *trans = info_ptr->trans;
- retval |= PNG_INFO_tRNS;
- }
- if (trans_values != NULL)
- *trans_values = &(info_ptr->trans_values);
- }
- else /* if (info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) */
- {
- if (trans_values != NULL)
- {
- *trans_values = &(info_ptr->trans_values);
- retval |= PNG_INFO_tRNS;
- }
- if (trans != NULL)
- *trans = NULL;
- }
- if (num_trans != NULL)
- {
- *num_trans = info_ptr->num_trans;
- retval |= PNG_INFO_tRNS;
- }
- }
- return (retval);
-}
-#endif
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
-png_uint_32 PNGAPI
-png_get_unknown_chunks(png_structp png_ptr, png_infop info_ptr,
- png_unknown_chunkpp unknowns)
-{
- if (png_ptr != NULL && info_ptr != NULL && unknowns != NULL)
- {
- *unknowns = info_ptr->unknown_chunks;
- return ((png_uint_32)info_ptr->unknown_chunks_num);
- }
- return (0);
-}
-#endif
-
-#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
-png_byte PNGAPI
-png_get_rgb_to_gray_status (png_structp png_ptr)
-{
- return (png_byte)(png_ptr? png_ptr->rgb_to_gray_status : 0);
-}
-#endif
-
-#if defined(PNG_USER_CHUNKS_SUPPORTED)
-png_voidp PNGAPI
-png_get_user_chunk_ptr(png_structp png_ptr)
-{
- return (png_ptr? png_ptr->user_chunk_ptr : NULL);
-}
-#endif
-
-#ifdef PNG_WRITE_SUPPORTED
-png_uint_32 PNGAPI
-png_get_compression_buffer_size(png_structp png_ptr)
-{
- return (png_uint_32)(png_ptr? png_ptr->zbuf_size : 0L);
-}
-#endif
-
-#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
-#ifndef PNG_1_0_X
-/* this function was added to libpng 1.2.0 and should exist by default */
-png_uint_32 PNGAPI
-png_get_asm_flags (png_structp png_ptr)
-{
- /* obsolete, to be removed from libpng-1.4.0 */
- return (png_ptr? 0L: 0L);
-}
-
-/* this function was added to libpng 1.2.0 and should exist by default */
-png_uint_32 PNGAPI
-png_get_asm_flagmask (int flag_select)
-{
- /* obsolete, to be removed from libpng-1.4.0 */
- flag_select=flag_select;
- return 0L;
-}
-
- /* GRR: could add this: && defined(PNG_MMX_CODE_SUPPORTED) */
-/* this function was added to libpng 1.2.0 */
-png_uint_32 PNGAPI
-png_get_mmx_flagmask (int flag_select, int *compilerID)
-{
- /* obsolete, to be removed from libpng-1.4.0 */
- flag_select=flag_select;
- *compilerID = -1; /* unknown (i.e., no asm/MMX code compiled) */
- return 0L;
-}
-
-/* this function was added to libpng 1.2.0 */
-png_byte PNGAPI
-png_get_mmx_bitdepth_threshold (png_structp png_ptr)
-{
- /* obsolete, to be removed from libpng-1.4.0 */
- return (png_ptr? 0: 0);
-}
-
-/* this function was added to libpng 1.2.0 */
-png_uint_32 PNGAPI
-png_get_mmx_rowbytes_threshold (png_structp png_ptr)
-{
- /* obsolete, to be removed from libpng-1.4.0 */
- return (png_ptr? 0L: 0L);
-}
-#endif /* ?PNG_1_0_X */
-#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
-
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
-/* These functions were added to libpng 1.2.6 */
-png_uint_32 PNGAPI
-png_get_user_width_max (png_structp png_ptr)
-{
- return (png_ptr? png_ptr->user_width_max : 0);
-}
-png_uint_32 PNGAPI
-png_get_user_height_max (png_structp png_ptr)
-{
- return (png_ptr? png_ptr->user_height_max : 0);
-}
-#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
-
-
-#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/navit/support/libpng/pngm2pnm.c b/navit/support/libpng/pngm2pnm.c
deleted file mode 100644
index 010870a76..000000000
--- a/navit/support/libpng/pngm2pnm.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
- * png2pnm.c --- conversion from PNG-file to PGM/PPM-file
- * copyright (C) 1999 by Willem van Schaik <willem@schaik.com>
- *
- * version 1.0 - 1999.10.15 - First version.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear in
- * supporting documentation. This software is provided "as is" without
- * express or implied warranty.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef __TURBOC__
-#include <mem.h>
-#include <fcntl.h>
-#endif
-
-#ifndef BOOL
-#define BOOL unsigned char
-#endif
-#ifndef TRUE
-#define TRUE (BOOL) 1
-#endif
-#ifndef FALSE
-#define FALSE (BOOL) 0
-#endif
-
-#ifdef __TURBOC__
-#define STDIN 0
-#define STDOUT 1
-#define STDERR 2
-#endif
-
-/* to make png2pnm verbose so we can find problems (needs to be before png.h) */
-#ifndef PNG_DEBUG
-#define PNG_DEBUG 0
-#endif
-
-#include "png.h"
-
-/* Define png_jmpbuf() in case we are using a pre-1.0.6 version of libpng */
-#ifndef png_jmpbuf
-# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf)
-#endif
-
-/* function prototypes */
-
-int main (int argc, char *argv[]);
-void usage ();
-BOOL png2pnm (FILE *png_file, FILE *pnm_file, FILE *alpha_file, BOOL raw, BOOL alpha);
-
-/*
- * main
- */
-
-int main(int argc, char *argv[])
-{
- FILE *fp_rd = stdin;
- FILE *fp_wr = stdout;
- FILE *fp_al = NULL;
- BOOL raw = TRUE;
- BOOL alpha = FALSE;
- int argi;
-
- for (argi = 1; argi < argc; argi++)
- {
- if (argv[argi][0] == '-')
- {
- switch (argv[argi][1])
- {
- case 'n':
- raw = FALSE;
- break;
- case 'r':
- raw = TRUE;
- break;
- case 'a':
- alpha = TRUE;
- argi++;
- if ((fp_al = fopen (argv[argi], "wb")) == NULL)
- {
- fprintf (stderr, "PNM2PNG\n");
- fprintf (stderr, "Error: can not create alpha-channel file %s\n", argv[argi]);
- exit (1);
- }
- break;
- case 'h':
- case '?':
- usage();
- exit(0);
- break;
- default:
- fprintf (stderr, "PNG2PNM\n");
- fprintf (stderr, "Error: unknown option %s\n", argv[argi]);
- usage();
- exit(1);
- break;
- } /* end switch */
- }
- else if (fp_rd == stdin)
- {
- if ((fp_rd = fopen (argv[argi], "rb")) == NULL)
- {
- fprintf (stderr, "PNG2PNM\n");
- fprintf (stderr, "Error: file %s does not exist\n", argv[argi]);
- exit (1);
- }
- }
- else if (fp_wr == stdout)
- {
- if ((fp_wr = fopen (argv[argi], "wb")) == NULL)
- {
- fprintf (stderr, "PNG2PNM\n");
- fprintf (stderr, "Error: can not create file %s\n", argv[argi]);
- exit (1);
- }
- }
- else
- {
- fprintf (stderr, "PNG2PNM\n");
- fprintf (stderr, "Error: too many parameters\n");
- usage();
- exit(1);
- }
- } /* end for */
-
-#ifdef __TURBOC__
- /* set stdin/stdout if required to binary */
- if (fp_rd == stdin)
- {
- setmode (STDIN, O_BINARY);
- }
- if ((raw) && (fp_wr == stdout))
- {
- setmode (STDOUT, O_BINARY);
- }
-#endif
-
- /* call the conversion program itself */
- if (png2pnm (fp_rd, fp_wr, fp_al, raw, alpha) == FALSE)
- {
- fprintf (stderr, "PNG2PNM\n");
- fprintf (stderr, "Error: unsuccessful convertion of PNG-image\n");
- exit(1);
- }
-
- /* close input file */
- fclose (fp_rd);
- /* close output file */
- fclose (fp_wr);
- /* close alpha file */
- if (alpha)
- fclose (fp_al);
-
- return 0;
-}
-
-/*
- * usage
- */
-
-void usage()
-{
- fprintf (stderr, "PNG2PNM\n");
- fprintf (stderr, " by Willem van Schaik, 1999\n");
-#ifdef __TURBOC__
- fprintf (stderr, " for Turbo-C and Borland-C compilers\n");
-#else
- fprintf (stderr, " for Linux (and Unix) compilers\n");
-#endif
- fprintf (stderr, "Usage: png2pnm [options] <file>.png [<file>.pnm]\n");
- fprintf (stderr, " or: ... | png2pnm [options]\n");
- fprintf (stderr, "Options:\n");
- fprintf (stderr, " -r[aw] write pnm-file in binary format (P4/P5/P6) (default)\n");
- fprintf (stderr, " -n[oraw] write pnm-file in ascii format (P1/P2/P3)\n");
- fprintf (stderr, " -a[lpha] <file>.pgm write PNG alpha channel as pgm-file\n");
- fprintf (stderr, " -h | -? print this help-information\n");
-}
-
-/*
- * png2pnm
- */
-
-BOOL png2pnm (FILE *png_file, FILE *pnm_file, FILE *alpha_file, BOOL raw, BOOL alpha)
-{
- png_struct *png_ptr = NULL;
- png_info *info_ptr = NULL;
- png_byte buf[8];
- png_byte *png_pixels = NULL;
- png_byte **row_pointers = NULL;
- png_byte *pix_ptr = NULL;
- png_uint_32 row_bytes;
-
- png_uint_32 width;
- png_uint_32 height;
- int bit_depth;
- int channels;
- int color_type;
- int alpha_present;
- int row, col;
- int ret;
- int i;
- long dep_16;
-
- /* read and check signature in PNG file */
- ret = fread (buf, 1, 8, png_file);
- if (ret != 8)
- return FALSE;
-
- ret = png_check_sig (buf, 8);
- if (!ret)
- return FALSE;
-
- /* create png and info structures */
-
- png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING,
- NULL, NULL, NULL);
- if (!png_ptr)
- return FALSE; /* out of memory */
-
- info_ptr = png_create_info_struct (png_ptr);
- if (!info_ptr)
- {
- png_destroy_read_struct (&png_ptr, NULL, NULL);
- return FALSE; /* out of memory */
- }
-
- if (setjmp (png_jmpbuf(png_ptr)))
- {
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- return FALSE;
- }
-
- /* set up the input control for C streams */
- png_init_io (png_ptr, png_file);
- png_set_sig_bytes (png_ptr, 8); /* we already read the 8 signature bytes */
-
- /* read the file information */
- png_read_info (png_ptr, info_ptr);
-
- /* get size and bit-depth of the PNG-image */
- png_get_IHDR (png_ptr, info_ptr,
- &width, &height, &bit_depth, &color_type,
- NULL, NULL, NULL);
-
- /* set-up the transformations */
-
- /* transform paletted images into full-color rgb */
- if (color_type == PNG_COLOR_TYPE_PALETTE)
- png_set_expand (png_ptr);
- /* expand images to bit-depth 8 (only applicable for grayscale images) */
- if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
- png_set_expand (png_ptr);
- /* transform transparency maps into full alpha-channel */
- if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS))
- png_set_expand (png_ptr);
-
-#ifdef NJET
- /* downgrade 16-bit images to 8 bit */
- if (bit_depth == 16)
- png_set_strip_16 (png_ptr);
- /* transform grayscale images into full-color */
- if (color_type == PNG_COLOR_TYPE_GRAY ||
- color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- png_set_gray_to_rgb (png_ptr);
- /* only if file has a file gamma, we do a correction */
- if (png_get_gAMA (png_ptr, info_ptr, &file_gamma))
- png_set_gamma (png_ptr, (double) 2.2, file_gamma);
-#endif
-
- /* all transformations have been registered; now update info_ptr data,
- * get rowbytes and channels, and allocate image memory */
-
- png_read_update_info (png_ptr, info_ptr);
-
- /* get the new color-type and bit-depth (after expansion/stripping) */
- png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
- NULL, NULL, NULL);
-
- /* check for 16-bit files */
- if (bit_depth == 16)
- {
- raw = FALSE;
-#ifdef __TURBOC__
- pnm_file->flags &= ~((unsigned) _F_BIN);
-#endif
- }
-
- /* calculate new number of channels and store alpha-presence */
- if (color_type == PNG_COLOR_TYPE_GRAY)
- channels = 1;
- else if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- channels = 2;
- else if (color_type == PNG_COLOR_TYPE_RGB)
- channels = 3;
- else if (color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- channels = 4;
- else
- channels = 0; /* should never happen */
- alpha_present = (channels - 1) % 2;
-
- /* check if alpha is expected to be present in file */
- if (alpha && !alpha_present)
- {
- fprintf (stderr, "PNG2PNM\n");
- fprintf (stderr, "Error: PNG-file doesn't contain alpha channel\n");
- exit (1);
- }
-
- /* row_bytes is the width x number of channels x (bit-depth / 8) */
- row_bytes = png_get_rowbytes (png_ptr, info_ptr);
-
- if ((png_pixels = (png_byte *) malloc (row_bytes * height * sizeof (png_byte))) == NULL) {
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- return FALSE;
- }
-
- if ((row_pointers = (png_byte **) malloc (height * sizeof (png_bytep))) == NULL)
- {
- png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
- free (png_pixels);
- png_pixels = NULL;
- return FALSE;
- }
-
- /* set the individual row_pointers to point at the correct offsets */
- for (i = 0; i < (height); i++)
- row_pointers[i] = png_pixels + i * row_bytes;
-
- /* now we can go ahead and just read the whole image */
- png_read_image (png_ptr, row_pointers);
-
- /* read rest of file, and get additional chunks in info_ptr - REQUIRED */
- png_read_end (png_ptr, info_ptr);
-
- /* clean up after the read, and free any memory allocated - REQUIRED */
- png_destroy_read_struct (&png_ptr, &info_ptr, (png_infopp) NULL);
-
- /* write header of PNM file */
-
- if ((color_type == PNG_COLOR_TYPE_GRAY) ||
- (color_type == PNG_COLOR_TYPE_GRAY_ALPHA))
- {
- fprintf (pnm_file, "%s\n", (raw) ? "P5" : "P2");
- fprintf (pnm_file, "%d %d\n", (int) width, (int) height);
- fprintf (pnm_file, "%ld\n", ((1L << (int) bit_depth) - 1L));
- }
- else if ((color_type == PNG_COLOR_TYPE_RGB) ||
- (color_type == PNG_COLOR_TYPE_RGB_ALPHA))
- {
- fprintf (pnm_file, "%s\n", (raw) ? "P6" : "P3");
- fprintf (pnm_file, "%d %d\n", (int) width, (int) height);
- fprintf (pnm_file, "%ld\n", ((1L << (int) bit_depth) - 1L));
- }
-
- /* write header of PGM file with alpha channel */
-
- if ((alpha) &&
- ((color_type == PNG_COLOR_TYPE_GRAY_ALPHA) ||
- (color_type == PNG_COLOR_TYPE_RGB_ALPHA)))
- {
- fprintf (alpha_file, "%s\n", (raw) ? "P5" : "P2");
- fprintf (alpha_file, "%d %d\n", (int) width, (int) height);
- fprintf (alpha_file, "%ld\n", ((1L << (int) bit_depth) - 1L));
- }
-
- /* write data to PNM file */
- pix_ptr = png_pixels;
-
- for (row = 0; row < height; row++)
- {
- for (col = 0; col < width; col++)
- {
- for (i = 0; i < (channels - alpha_present); i++)
- {
- if (raw)
- fputc ((int) *pix_ptr++ , pnm_file);
- else
- if (bit_depth == 16){
- dep_16 = (long) *pix_ptr++;
- fprintf (pnm_file, "%ld ", (dep_16 << 8) + ((long) *pix_ptr++));
- }
- else
- fprintf (pnm_file, "%ld ", (long) *pix_ptr++);
- }
- if (alpha_present)
- {
- if (!alpha)
- {
- pix_ptr++; /* alpha */
- if (bit_depth == 16)
- pix_ptr++;
- }
- else /* output alpha-channel as pgm file */
- {
- if (raw)
- fputc ((int) *pix_ptr++ , alpha_file);
- else
- if (bit_depth == 16){
- dep_16 = (long) *pix_ptr++;
- fprintf (alpha_file, "%ld ", (dep_16 << 8) + (long) *pix_ptr++);
- }
- else
- fprintf (alpha_file, "%ld ", (long) *pix_ptr++);
- }
- } /* if alpha_present */
-
- if (!raw)
- if (col % 4 == 3)
- fprintf (pnm_file, "\n");
- } /* end for col */
-
- if (!raw)
- if (col % 4 != 0)
- fprintf (pnm_file, "\n");
- } /* end for row */
-
- if (row_pointers != (unsigned char**) NULL)
- free (row_pointers);
- if (png_pixels != (unsigned char*) NULL)
- free (png_pixels);
-
- return TRUE;
-
-} /* end of source */
-
diff --git a/navit/support/libpng/pngmem.c b/navit/support/libpng/pngmem.c
deleted file mode 100644
index f3394d780..000000000
--- a/navit/support/libpng/pngmem.c
+++ /dev/null
@@ -1,610 +0,0 @@
-
-/* pngmem.c - stub functions for memory allocation
- *
- * Last changed in libpng 1.2.30 [August 15, 2008]
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2008 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This file provides a location for all memory allocation. Users who
- * need special memory handling are expected to supply replacement
- * functions for png_malloc() and png_free(), and to use
- * png_create_read_struct_2() and png_create_write_struct_2() to
- * identify the replacement functions.
- */
-
-#define PNG_INTERNAL
-#include "png.h"
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-
-/* Borland DOS special memory handler */
-#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
-/* if you change this, be sure to change the one in png.h also */
-
-/* Allocate memory for a png_struct. The malloc and memset can be replaced
- by a single call to calloc() if this is thought to improve performance. */
-png_voidp /* PRIVATE */
-png_create_struct(int type)
-{
-#ifdef PNG_USER_MEM_SUPPORTED
- return (png_create_struct_2(type, png_malloc_ptr_NULL, png_voidp_NULL));
-}
-
-/* Alternate version of png_create_struct, for use with user-defined malloc. */
-png_voidp /* PRIVATE */
-png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)
-{
-#endif /* PNG_USER_MEM_SUPPORTED */
- png_size_t size;
- png_voidp struct_ptr;
-
- if (type == PNG_STRUCT_INFO)
- size = png_sizeof(png_info);
- else if (type == PNG_STRUCT_PNG)
- size = png_sizeof(png_struct);
- else
- return (png_get_copyright(NULL));
-
-#ifdef PNG_USER_MEM_SUPPORTED
- if (malloc_fn != NULL)
- {
- png_struct dummy_struct;
- png_structp png_ptr = &dummy_struct;
- png_ptr->mem_ptr=mem_ptr;
- struct_ptr = (*(malloc_fn))(png_ptr, (png_uint_32)size);
- }
- else
-#endif /* PNG_USER_MEM_SUPPORTED */
- struct_ptr = (png_voidp)farmalloc(size);
- if (struct_ptr != NULL)
- png_memset(struct_ptr, 0, size);
- return (struct_ptr);
-}
-
-/* Free memory allocated by a png_create_struct() call */
-void /* PRIVATE */
-png_destroy_struct(png_voidp struct_ptr)
-{
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2(struct_ptr, png_free_ptr_NULL, png_voidp_NULL);
-}
-
-/* Free memory allocated by a png_create_struct() call */
-void /* PRIVATE */
-png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
- png_voidp mem_ptr)
-{
-#endif
- if (struct_ptr != NULL)
- {
-#ifdef PNG_USER_MEM_SUPPORTED
- if (free_fn != NULL)
- {
- png_struct dummy_struct;
- png_structp png_ptr = &dummy_struct;
- png_ptr->mem_ptr=mem_ptr;
- (*(free_fn))(png_ptr, struct_ptr);
- return;
- }
-#endif /* PNG_USER_MEM_SUPPORTED */
- farfree (struct_ptr);
- }
-}
-
-/* Allocate memory. For reasonable files, size should never exceed
- * 64K. However, zlib may allocate more then 64K if you don't tell
- * it not to. See zconf.h and png.h for more information. zlib does
- * need to allocate exactly 64K, so whatever you call here must
- * have the ability to do that.
- *
- * Borland seems to have a problem in DOS mode for exactly 64K.
- * It gives you a segment with an offset of 8 (perhaps to store its
- * memory stuff). zlib doesn't like this at all, so we have to
- * detect and deal with it. This code should not be needed in
- * Windows or OS/2 modes, and only in 16 bit mode. This code has
- * been updated by Alexander Lehmann for version 0.89 to waste less
- * memory.
- *
- * Note that we can't use png_size_t for the "size" declaration,
- * since on some systems a png_size_t is a 16-bit quantity, and as a
- * result, we would be truncating potentially larger memory requests
- * (which should cause a fatal error) and introducing major problems.
- */
-
-png_voidp PNGAPI
-png_malloc(png_structp png_ptr, png_uint_32 size)
-{
- png_voidp ret;
-
- if (png_ptr == NULL || size == 0)
- return (NULL);
-
-#ifdef PNG_USER_MEM_SUPPORTED
- if (png_ptr->malloc_fn != NULL)
- ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
- else
- ret = (png_malloc_default(png_ptr, size));
- if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out of memory!");
- return (ret);
-}
-
-png_voidp PNGAPI
-png_malloc_default(png_structp png_ptr, png_uint_32 size)
-{
- png_voidp ret;
-#endif /* PNG_USER_MEM_SUPPORTED */
-
- if (png_ptr == NULL || size == 0)
- return (NULL);
-
-#ifdef PNG_MAX_MALLOC_64K
- if (size > (png_uint_32)65536L)
- {
- png_warning(png_ptr, "Cannot Allocate > 64K");
- ret = NULL;
- }
- else
-#endif
-
- if (size != (size_t)size)
- ret = NULL;
- else if (size == (png_uint_32)65536L)
- {
- if (png_ptr->offset_table == NULL)
- {
- /* try to see if we need to do any of this fancy stuff */
- ret = farmalloc(size);
- if (ret == NULL || ((png_size_t)ret & 0xffff))
- {
- int num_blocks;
- png_uint_32 total_size;
- png_bytep table;
- int i;
- png_byte huge * hptr;
-
- if (ret != NULL)
- {
- farfree(ret);
- ret = NULL;
- }
-
- if (png_ptr->zlib_window_bits > 14)
- num_blocks = (int)(1 << (png_ptr->zlib_window_bits - 14));
- else
- num_blocks = 1;
- if (png_ptr->zlib_mem_level >= 7)
- num_blocks += (int)(1 << (png_ptr->zlib_mem_level - 7));
- else
- num_blocks++;
-
- total_size = ((png_uint_32)65536L) * (png_uint_32)num_blocks+16;
-
- table = farmalloc(total_size);
-
- if (table == NULL)
- {
-#ifndef PNG_USER_MEM_SUPPORTED
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out Of Memory."); /* Note "O" and "M" */
- else
- png_warning(png_ptr, "Out Of Memory.");
-#endif
- return (NULL);
- }
-
- if ((png_size_t)table & 0xfff0)
- {
-#ifndef PNG_USER_MEM_SUPPORTED
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr,
- "Farmalloc didn't return normalized pointer");
- else
- png_warning(png_ptr,
- "Farmalloc didn't return normalized pointer");
-#endif
- return (NULL);
- }
-
- png_ptr->offset_table = table;
- png_ptr->offset_table_ptr = farmalloc(num_blocks *
- png_sizeof(png_bytep));
-
- if (png_ptr->offset_table_ptr == NULL)
- {
-#ifndef PNG_USER_MEM_SUPPORTED
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out Of memory."); /* Note "O" and "M" */
- else
- png_warning(png_ptr, "Out Of memory.");
-#endif
- return (NULL);
- }
-
- hptr = (png_byte huge *)table;
- if ((png_size_t)hptr & 0xf)
- {
- hptr = (png_byte huge *)((long)(hptr) & 0xfffffff0L);
- hptr = hptr + 16L; /* "hptr += 16L" fails on Turbo C++ 3.0 */
- }
- for (i = 0; i < num_blocks; i++)
- {
- png_ptr->offset_table_ptr[i] = (png_bytep)hptr;
- hptr = hptr + (png_uint_32)65536L; /* "+=" fails on TC++3.0 */
- }
-
- png_ptr->offset_table_number = num_blocks;
- png_ptr->offset_table_count = 0;
- png_ptr->offset_table_count_free = 0;
- }
- }
-
- if (png_ptr->offset_table_count >= png_ptr->offset_table_number)
- {
-#ifndef PNG_USER_MEM_SUPPORTED
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out of Memory."); /* Note "o" and "M" */
- else
- png_warning(png_ptr, "Out of Memory.");
-#endif
- return (NULL);
- }
-
- ret = png_ptr->offset_table_ptr[png_ptr->offset_table_count++];
- }
- else
- ret = farmalloc(size);
-
-#ifndef PNG_USER_MEM_SUPPORTED
- if (ret == NULL)
- {
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out of memory."); /* Note "o" and "m" */
- else
- png_warning(png_ptr, "Out of memory."); /* Note "o" and "m" */
- }
-#endif
-
- return (ret);
-}
-
-/* free a pointer allocated by png_malloc(). In the default
- configuration, png_ptr is not used, but is passed in case it
- is needed. If ptr is NULL, return without taking any action. */
-
-void PNGAPI
-png_free(png_structp png_ptr, png_voidp ptr)
-{
- if (png_ptr == NULL || ptr == NULL)
- return;
-
-#ifdef PNG_USER_MEM_SUPPORTED
- if (png_ptr->free_fn != NULL)
- {
- (*(png_ptr->free_fn))(png_ptr, ptr);
- return;
- }
- else png_free_default(png_ptr, ptr);
-}
-
-void PNGAPI
-png_free_default(png_structp png_ptr, png_voidp ptr)
-{
-#endif /* PNG_USER_MEM_SUPPORTED */
-
- if (png_ptr == NULL || ptr == NULL) return;
-
- if (png_ptr->offset_table != NULL)
- {
- int i;
-
- for (i = 0; i < png_ptr->offset_table_count; i++)
- {
- if (ptr == png_ptr->offset_table_ptr[i])
- {
- ptr = NULL;
- png_ptr->offset_table_count_free++;
- break;
- }
- }
- if (png_ptr->offset_table_count_free == png_ptr->offset_table_count)
- {
- farfree(png_ptr->offset_table);
- farfree(png_ptr->offset_table_ptr);
- png_ptr->offset_table = NULL;
- png_ptr->offset_table_ptr = NULL;
- }
- }
-
- if (ptr != NULL)
- {
- farfree(ptr);
- }
-}
-
-#else /* Not the Borland DOS special memory handler */
-
-/* Allocate memory for a png_struct or a png_info. The malloc and
- memset can be replaced by a single call to calloc() if this is thought
- to improve performance noticably. */
-png_voidp /* PRIVATE */
-png_create_struct(int type)
-{
-#ifdef PNG_USER_MEM_SUPPORTED
- return (png_create_struct_2(type, png_malloc_ptr_NULL, png_voidp_NULL));
-}
-
-/* Allocate memory for a png_struct or a png_info. The malloc and
- memset can be replaced by a single call to calloc() if this is thought
- to improve performance noticably. */
-png_voidp /* PRIVATE */
-png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr)
-{
-#endif /* PNG_USER_MEM_SUPPORTED */
- png_size_t size;
- png_voidp struct_ptr;
-
- if (type == PNG_STRUCT_INFO)
- size = png_sizeof(png_info);
- else if (type == PNG_STRUCT_PNG)
- size = png_sizeof(png_struct);
- else
- return (NULL);
-
-#ifdef PNG_USER_MEM_SUPPORTED
- if (malloc_fn != NULL)
- {
- png_struct dummy_struct;
- png_structp png_ptr = &dummy_struct;
- png_ptr->mem_ptr=mem_ptr;
- struct_ptr = (*(malloc_fn))(png_ptr, size);
- if (struct_ptr != NULL)
- png_memset(struct_ptr, 0, size);
- return (struct_ptr);
- }
-#endif /* PNG_USER_MEM_SUPPORTED */
-
-#if defined(__TURBOC__) && !defined(__FLAT__)
- struct_ptr = (png_voidp)farmalloc(size);
-#else
-# if defined(_MSC_VER) && defined(MAXSEG_64K)
- struct_ptr = (png_voidp)halloc(size, 1);
-# else
- struct_ptr = (png_voidp)malloc(size);
-# endif
-#endif
- if (struct_ptr != NULL)
- png_memset(struct_ptr, 0, size);
-
- return (struct_ptr);
-}
-
-
-/* Free memory allocated by a png_create_struct() call */
-void /* PRIVATE */
-png_destroy_struct(png_voidp struct_ptr)
-{
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2(struct_ptr, png_free_ptr_NULL, png_voidp_NULL);
-}
-
-/* Free memory allocated by a png_create_struct() call */
-void /* PRIVATE */
-png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn,
- png_voidp mem_ptr)
-{
-#endif /* PNG_USER_MEM_SUPPORTED */
- if (struct_ptr != NULL)
- {
-#ifdef PNG_USER_MEM_SUPPORTED
- if (free_fn != NULL)
- {
- png_struct dummy_struct;
- png_structp png_ptr = &dummy_struct;
- png_ptr->mem_ptr=mem_ptr;
- (*(free_fn))(png_ptr, struct_ptr);
- return;
- }
-#endif /* PNG_USER_MEM_SUPPORTED */
-#if defined(__TURBOC__) && !defined(__FLAT__)
- farfree(struct_ptr);
-#else
-# if defined(_MSC_VER) && defined(MAXSEG_64K)
- hfree(struct_ptr);
-# else
- free(struct_ptr);
-# endif
-#endif
- }
-}
-
-/* Allocate memory. For reasonable files, size should never exceed
- 64K. However, zlib may allocate more then 64K if you don't tell
- it not to. See zconf.h and png.h for more information. zlib does
- need to allocate exactly 64K, so whatever you call here must
- have the ability to do that. */
-
-
-png_voidp PNGAPI
-png_malloc(png_structp png_ptr, png_uint_32 size)
-{
- png_voidp ret;
-
-#ifdef PNG_USER_MEM_SUPPORTED
- if (png_ptr == NULL || size == 0)
- return (NULL);
-
- if (png_ptr->malloc_fn != NULL)
- ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
- else
- ret = (png_malloc_default(png_ptr, size));
- if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out of Memory!");
- return (ret);
-}
-
-png_voidp PNGAPI
-png_malloc_default(png_structp png_ptr, png_uint_32 size)
-{
- png_voidp ret;
-#endif /* PNG_USER_MEM_SUPPORTED */
-
- if (png_ptr == NULL || size == 0)
- return (NULL);
-
-#ifdef PNG_MAX_MALLOC_64K
- if (size > (png_uint_32)65536L)
- {
-#ifndef PNG_USER_MEM_SUPPORTED
- if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Cannot Allocate > 64K");
- else
-#endif
- return NULL;
- }
-#endif
-
- /* Check for overflow */
-#if defined(__TURBOC__) && !defined(__FLAT__)
- if (size != (unsigned long)size)
- ret = NULL;
- else
- ret = farmalloc(size);
-#else
-# if defined(_MSC_VER) && defined(MAXSEG_64K)
- if (size != (unsigned long)size)
- ret = NULL;
- else
- ret = halloc(size, 1);
-# else
- if (size != (size_t)size)
- ret = NULL;
- else
- ret = malloc((size_t)size);
-# endif
-#endif
-
-#ifndef PNG_USER_MEM_SUPPORTED
- if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
- png_error(png_ptr, "Out of Memory");
-#endif
-
- return (ret);
-}
-
-/* Free a pointer allocated by png_malloc(). If ptr is NULL, return
- without taking any action. */
-void PNGAPI
-png_free(png_structp png_ptr, png_voidp ptr)
-{
- if (png_ptr == NULL || ptr == NULL)
- return;
-
-#ifdef PNG_USER_MEM_SUPPORTED
- if (png_ptr->free_fn != NULL)
- {
- (*(png_ptr->free_fn))(png_ptr, ptr);
- return;
- }
- else png_free_default(png_ptr, ptr);
-}
-void PNGAPI
-png_free_default(png_structp png_ptr, png_voidp ptr)
-{
- if (png_ptr == NULL || ptr == NULL)
- return;
-
-#endif /* PNG_USER_MEM_SUPPORTED */
-
-#if defined(__TURBOC__) && !defined(__FLAT__)
- farfree(ptr);
-#else
-# if defined(_MSC_VER) && defined(MAXSEG_64K)
- hfree(ptr);
-# else
- free(ptr);
-# endif
-#endif
-}
-
-#endif /* Not Borland DOS special memory handler */
-
-#if defined(PNG_1_0_X)
-# define png_malloc_warn png_malloc
-#else
-/* This function was added at libpng version 1.2.3. The png_malloc_warn()
- * function will set up png_malloc() to issue a png_warning and return NULL
- * instead of issuing a png_error, if it fails to allocate the requested
- * memory.
- */
-png_voidp PNGAPI
-png_malloc_warn(png_structp png_ptr, png_uint_32 size)
-{
- png_voidp ptr;
- png_uint_32 save_flags;
- if (png_ptr == NULL) return (NULL);
-
- save_flags = png_ptr->flags;
- png_ptr->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
- ptr = (png_voidp)png_malloc((png_structp)png_ptr, size);
- png_ptr->flags=save_flags;
- return(ptr);
-}
-#endif
-
-png_voidp PNGAPI
-png_memcpy_check (png_structp png_ptr, png_voidp s1, png_voidp s2,
- png_uint_32 length)
-{
- png_size_t size;
-
- size = (png_size_t)length;
- if ((png_uint_32)size != length)
- png_error(png_ptr, "Overflow in png_memcpy_check.");
-
- return(png_memcpy (s1, s2, size));
-}
-
-png_voidp PNGAPI
-png_memset_check (png_structp png_ptr, png_voidp s1, int value,
- png_uint_32 length)
-{
- png_size_t size;
-
- size = (png_size_t)length;
- if ((png_uint_32)size != length)
- png_error(png_ptr, "Overflow in png_memset_check.");
-
- return (png_memset (s1, value, size));
-
-}
-
-#ifdef PNG_USER_MEM_SUPPORTED
-/* This function is called when the application wants to use another method
- * of allocating and freeing memory.
- */
-void PNGAPI
-png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
- malloc_fn, png_free_ptr free_fn)
-{
- if (png_ptr != NULL)
- {
- png_ptr->mem_ptr = mem_ptr;
- png_ptr->malloc_fn = malloc_fn;
- png_ptr->free_fn = free_fn;
- }
-}
-
-/* This function returns a pointer to the mem_ptr associated with the user
- * functions. The application should free any memory associated with this
- * pointer before png_write_destroy and png_read_destroy are called.
- */
-png_voidp PNGAPI
-png_get_mem_ptr(png_structp png_ptr)
-{
- if (png_ptr == NULL) return (NULL);
- return ((png_voidp)png_ptr->mem_ptr);
-}
-#endif /* PNG_USER_MEM_SUPPORTED */
-#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/navit/support/libpng/pngread.c b/navit/support/libpng/pngread.c
deleted file mode 100644
index 8e9c0cb74..000000000
--- a/navit/support/libpng/pngread.c
+++ /dev/null
@@ -1,1459 +0,0 @@
-
-/* pngread.c - read a PNG file
- *
- * Last changed in libpng 1.2.35 [February 14, 2009]
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2009 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This file contains routines that an application calls directly to
- * read a PNG file or stream.
- */
-
-#define PNG_INTERNAL
-#include "png.h"
-#if defined(PNG_READ_SUPPORTED)
-
-/* Create a PNG structure for reading, and allocate any memory needed. */
-png_structp PNGAPI
-png_create_read_struct(png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn)
-{
-
-#ifdef PNG_USER_MEM_SUPPORTED
- return (png_create_read_struct_2(user_png_ver, error_ptr, error_fn,
- warn_fn, png_voidp_NULL, png_malloc_ptr_NULL, png_free_ptr_NULL));
-}
-
-/* Alternate create PNG structure for reading, and allocate any memory needed. */
-png_structp PNGAPI
-png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
- png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
- png_malloc_ptr malloc_fn, png_free_ptr free_fn)
-{
-#endif /* PNG_USER_MEM_SUPPORTED */
-
-#ifdef PNG_SETJMP_SUPPORTED
- volatile
-#endif
- png_structp png_ptr;
-
-#ifdef PNG_SETJMP_SUPPORTED
-#ifdef USE_FAR_KEYWORD
- jmp_buf jmpbuf;
-#endif
-#endif
-
- int i;
-
- png_debug(1, "in png_create_read_struct");
-#ifdef PNG_USER_MEM_SUPPORTED
- png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
- (png_malloc_ptr)malloc_fn, (png_voidp)mem_ptr);
-#else
- png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
-#endif
- if (png_ptr == NULL)
- return (NULL);
-
- /* added at libpng-1.2.6 */
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
- png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
- png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
-#ifdef USE_FAR_KEYWORD
- if (setjmp(jmpbuf))
-#else
- if (setjmp(png_ptr->jmpbuf))
-#endif
- {
- png_free(png_ptr, png_ptr->zbuf);
- png_ptr->zbuf = NULL;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)png_ptr,
- (png_free_ptr)free_fn, (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)png_ptr);
-#endif
- return (NULL);
- }
-#ifdef USE_FAR_KEYWORD
- png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf));
-#endif
-#endif
-
-#ifdef PNG_USER_MEM_SUPPORTED
- png_set_mem_fn(png_ptr, mem_ptr, malloc_fn, free_fn);
-#endif
-
- png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
-
- if (user_png_ver)
- {
- i = 0;
- do
- {
- if (user_png_ver[i] != png_libpng_ver[i])
- png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
- } while (png_libpng_ver[i++]);
- }
- else
- png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
-
-
- if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
- {
- /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so
- * we must recompile any applications that use any older library version.
- * For versions after libpng 1.0, we will be compatible, so we need
- * only check the first digit.
- */
- if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||
- (user_png_ver[0] == '1' && user_png_ver[2] != png_libpng_ver[2]) ||
- (user_png_ver[0] == '0' && user_png_ver[2] < '9'))
- {
-#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
- char msg[80];
- if (user_png_ver)
- {
- png_snprintf(msg, 80,
- "Application was compiled with png.h from libpng-%.20s",
- user_png_ver);
- png_warning(png_ptr, msg);
- }
- png_snprintf(msg, 80,
- "Application is running with png.c from libpng-%.20s",
- png_libpng_ver);
- png_warning(png_ptr, msg);
-#endif
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- png_ptr->flags = 0;
-#endif
- png_error(png_ptr,
- "Incompatible libpng version in application and library");
- }
- }
-
- /* initialize zbuf - compression buffer */
- png_ptr->zbuf_size = PNG_ZBUF_SIZE;
- png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)png_ptr->zbuf_size);
- png_ptr->zstream.zalloc = png_zalloc;
- png_ptr->zstream.zfree = png_zfree;
- png_ptr->zstream.opaque = (voidpf)png_ptr;
-
- switch (inflateInit(&png_ptr->zstream))
- {
- case Z_OK: /* Do nothing */ break;
- case Z_MEM_ERROR:
- case Z_STREAM_ERROR: png_error(png_ptr, "zlib memory error"); break;
- case Z_VERSION_ERROR: png_error(png_ptr, "zlib version error"); break;
- default: png_error(png_ptr, "Unknown zlib error");
- }
-
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
-
- png_set_read_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL);
-
-#ifdef PNG_SETJMP_SUPPORTED
-/* Applications that neglect to set up their own setjmp() and then encounter
- a png_error() will longjmp here. Since the jmpbuf is then meaningless we
- abort instead of returning. */
-#ifdef USE_FAR_KEYWORD
- if (setjmp(jmpbuf))
- PNG_ABORT();
- png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf));
-#else
- if (setjmp(png_ptr->jmpbuf))
- PNG_ABORT();
-#endif
-#endif
- return (png_ptr);
-}
-
-#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
-/* Initialize PNG structure for reading, and allocate any memory needed.
- This interface is deprecated in favour of the png_create_read_struct(),
- and it will disappear as of libpng-1.3.0. */
-#undef png_read_init
-void PNGAPI
-png_read_init(png_structp png_ptr)
-{
- /* We only come here via pre-1.0.7-compiled applications */
- png_read_init_2(png_ptr, "1.0.6 or earlier", 0, 0);
-}
-
-void PNGAPI
-png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
- png_size_t png_struct_size, png_size_t png_info_size)
-{
- /* We only come here via pre-1.0.12-compiled applications */
- if (png_ptr == NULL) return;
-#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
- if (png_sizeof(png_struct) > png_struct_size ||
- png_sizeof(png_info) > png_info_size)
- {
- char msg[80];
- png_ptr->warning_fn = NULL;
- if (user_png_ver)
- {
- png_snprintf(msg, 80,
- "Application was compiled with png.h from libpng-%.20s",
- user_png_ver);
- png_warning(png_ptr, msg);
- }
- png_snprintf(msg, 80,
- "Application is running with png.c from libpng-%.20s",
- png_libpng_ver);
- png_warning(png_ptr, msg);
- }
-#endif
- if (png_sizeof(png_struct) > png_struct_size)
- {
- png_ptr->error_fn = NULL;
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- png_ptr->flags = 0;
-#endif
- png_error(png_ptr,
- "The png struct allocated by the application for reading is too small.");
- }
- if (png_sizeof(png_info) > png_info_size)
- {
- png_ptr->error_fn = NULL;
-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
- png_ptr->flags = 0;
-#endif
- png_error(png_ptr,
- "The info struct allocated by application for reading is too small.");
- }
- png_read_init_3(&png_ptr, user_png_ver, png_struct_size);
-}
-#endif /* PNG_1_0_X || PNG_1_2_X */
-
-void PNGAPI
-png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver,
- png_size_t png_struct_size)
-{
-#ifdef PNG_SETJMP_SUPPORTED
- jmp_buf tmp_jmp; /* to save current jump buffer */
-#endif
-
- int i = 0;
-
- png_structp png_ptr=*ptr_ptr;
-
- if (png_ptr == NULL) return;
-
- do
- {
- if (user_png_ver[i] != png_libpng_ver[i])
- {
-#ifdef PNG_LEGACY_SUPPORTED
- png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
-#else
- png_ptr->warning_fn = NULL;
- png_warning(png_ptr,
- "Application uses deprecated png_read_init() and should be recompiled.");
- break;
-#endif
- }
- } while (png_libpng_ver[i++]);
-
- png_debug(1, "in png_read_init_3");
-
-#ifdef PNG_SETJMP_SUPPORTED
- /* save jump buffer and error functions */
- png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
-#endif
-
- if (png_sizeof(png_struct) > png_struct_size)
- {
- png_destroy_struct(png_ptr);
- *ptr_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
- png_ptr = *ptr_ptr;
- }
-
- /* reset all variables to 0 */
- png_memset(png_ptr, 0, png_sizeof(png_struct));
-
-#ifdef PNG_SETJMP_SUPPORTED
- /* restore jump buffer */
- png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
-#endif
-
- /* added at libpng-1.2.6 */
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
- png_ptr->user_width_max=PNG_USER_WIDTH_MAX;
- png_ptr->user_height_max=PNG_USER_HEIGHT_MAX;
-#endif
-
- /* initialize zbuf - compression buffer */
- png_ptr->zbuf_size = PNG_ZBUF_SIZE;
- png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)png_ptr->zbuf_size);
- png_ptr->zstream.zalloc = png_zalloc;
- png_ptr->zstream.zfree = png_zfree;
- png_ptr->zstream.opaque = (voidpf)png_ptr;
-
- switch (inflateInit(&png_ptr->zstream))
- {
- case Z_OK: /* Do nothing */ break;
- case Z_MEM_ERROR:
- case Z_STREAM_ERROR: png_error(png_ptr, "zlib memory"); break;
- case Z_VERSION_ERROR: png_error(png_ptr, "zlib version"); break;
- default: png_error(png_ptr, "Unknown zlib error");
- }
-
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
-
- png_set_read_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL);
-}
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-/* Read the information before the actual image data. This has been
- * changed in v0.90 to allow reading a file that already has the magic
- * bytes read from the stream. You can tell libpng how many bytes have
- * been read from the beginning of the stream (up to the maximum of 8)
- * via png_set_sig_bytes(), and we will only check the remaining bytes
- * here. The application can then have access to the signature bytes we
- * read if it is determined that this isn't a valid PNG file.
- */
-void PNGAPI
-png_read_info(png_structp png_ptr, png_infop info_ptr)
-{
- if (png_ptr == NULL || info_ptr == NULL) return;
- png_debug(1, "in png_read_info");
- /* If we haven't checked all of the PNG signature bytes, do so now. */
- if (png_ptr->sig_bytes < 8)
- {
- png_size_t num_checked = png_ptr->sig_bytes,
- num_to_check = 8 - num_checked;
-
- png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check);
- png_ptr->sig_bytes = 8;
-
- if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check))
- {
- if (num_checked < 4 &&
- png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4))
- png_error(png_ptr, "Not a PNG file");
- else
- png_error(png_ptr, "PNG file corrupted by ASCII conversion");
- }
- if (num_checked < 3)
- png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
- }
-
- for (;;)
- {
-#ifdef PNG_USE_LOCAL_ARRAYS
- PNG_CONST PNG_IHDR;
- PNG_CONST PNG_IDAT;
- PNG_CONST PNG_IEND;
- PNG_CONST PNG_PLTE;
-#if defined(PNG_READ_bKGD_SUPPORTED)
- PNG_CONST PNG_bKGD;
-#endif
-#if defined(PNG_READ_cHRM_SUPPORTED)
- PNG_CONST PNG_cHRM;
-#endif
-#if defined(PNG_READ_gAMA_SUPPORTED)
- PNG_CONST PNG_gAMA;
-#endif
-#if defined(PNG_READ_hIST_SUPPORTED)
- PNG_CONST PNG_hIST;
-#endif
-#if defined(PNG_READ_iCCP_SUPPORTED)
- PNG_CONST PNG_iCCP;
-#endif
-#if defined(PNG_READ_iTXt_SUPPORTED)
- PNG_CONST PNG_iTXt;
-#endif
-#if defined(PNG_READ_oFFs_SUPPORTED)
- PNG_CONST PNG_oFFs;
-#endif
-#if defined(PNG_READ_pCAL_SUPPORTED)
- PNG_CONST PNG_pCAL;
-#endif
-#if defined(PNG_READ_pHYs_SUPPORTED)
- PNG_CONST PNG_pHYs;
-#endif
-#if defined(PNG_READ_sBIT_SUPPORTED)
- PNG_CONST PNG_sBIT;
-#endif
-#if defined(PNG_READ_sCAL_SUPPORTED)
- PNG_CONST PNG_sCAL;
-#endif
-#if defined(PNG_READ_sPLT_SUPPORTED)
- PNG_CONST PNG_sPLT;
-#endif
-#if defined(PNG_READ_sRGB_SUPPORTED)
- PNG_CONST PNG_sRGB;
-#endif
-#if defined(PNG_READ_tEXt_SUPPORTED)
- PNG_CONST PNG_tEXt;
-#endif
-#if defined(PNG_READ_tIME_SUPPORTED)
- PNG_CONST PNG_tIME;
-#endif
-#if defined(PNG_READ_tRNS_SUPPORTED)
- PNG_CONST PNG_tRNS;
-#endif
-#if defined(PNG_READ_zTXt_SUPPORTED)
- PNG_CONST PNG_zTXt;
-#endif
-#endif /* PNG_USE_LOCAL_ARRAYS */
- png_uint_32 length = png_read_chunk_header(png_ptr);
- PNG_CONST png_bytep chunk_name = png_ptr->chunk_name;
-
- /* This should be a binary subdivision search or a hash for
- * matching the chunk name rather than a linear search.
- */
- if (!png_memcmp(chunk_name, png_IDAT, 4))
- if (png_ptr->mode & PNG_AFTER_IDAT)
- png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
-
- if (!png_memcmp(chunk_name, png_IHDR, 4))
- png_handle_IHDR(png_ptr, info_ptr, length);
- else if (!png_memcmp(chunk_name, png_IEND, 4))
- png_handle_IEND(png_ptr, info_ptr, length);
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
- else if (png_handle_as_unknown(png_ptr, chunk_name))
- {
- if (!png_memcmp(chunk_name, png_IDAT, 4))
- png_ptr->mode |= PNG_HAVE_IDAT;
- png_handle_unknown(png_ptr, info_ptr, length);
- if (!png_memcmp(chunk_name, png_PLTE, 4))
- png_ptr->mode |= PNG_HAVE_PLTE;
- else if (!png_memcmp(chunk_name, png_IDAT, 4))
- {
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before IDAT");
- else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
- !(png_ptr->mode & PNG_HAVE_PLTE))
- png_error(png_ptr, "Missing PLTE before IDAT");
- break;
- }
- }
-#endif
- else if (!png_memcmp(chunk_name, png_PLTE, 4))
- png_handle_PLTE(png_ptr, info_ptr, length);
- else if (!png_memcmp(chunk_name, png_IDAT, 4))
- {
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before IDAT");
- else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
- !(png_ptr->mode & PNG_HAVE_PLTE))
- png_error(png_ptr, "Missing PLTE before IDAT");
-
- png_ptr->idat_size = length;
- png_ptr->mode |= PNG_HAVE_IDAT;
- break;
- }
-#if defined(PNG_READ_bKGD_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_bKGD, 4))
- png_handle_bKGD(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_cHRM_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_cHRM, 4))
- png_handle_cHRM(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_gAMA_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_gAMA, 4))
- png_handle_gAMA(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_hIST_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_hIST, 4))
- png_handle_hIST(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_oFFs_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_oFFs, 4))
- png_handle_oFFs(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_pCAL_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_pCAL, 4))
- png_handle_pCAL(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_sCAL_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_sCAL, 4))
- png_handle_sCAL(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_pHYs_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_pHYs, 4))
- png_handle_pHYs(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_sBIT_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_sBIT, 4))
- png_handle_sBIT(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_sRGB_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_sRGB, 4))
- png_handle_sRGB(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_iCCP_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_iCCP, 4))
- png_handle_iCCP(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_sPLT_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_sPLT, 4))
- png_handle_sPLT(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_tEXt_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_tEXt, 4))
- png_handle_tEXt(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_tIME_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_tIME, 4))
- png_handle_tIME(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_tRNS_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_tRNS, 4))
- png_handle_tRNS(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_zTXt_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_zTXt, 4))
- png_handle_zTXt(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_iTXt_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_iTXt, 4))
- png_handle_iTXt(png_ptr, info_ptr, length);
-#endif
- else
- png_handle_unknown(png_ptr, info_ptr, length);
- }
-}
-#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
-
-/* optional call to update the users info_ptr structure */
-void PNGAPI
-png_read_update_info(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_read_update_info");
- if (png_ptr == NULL) return;
- if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
- png_read_start_row(png_ptr);
- else
- png_warning(png_ptr,
- "Ignoring extra png_read_update_info() call; row buffer not reallocated");
- png_read_transform_info(png_ptr, info_ptr);
-}
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-/* Initialize palette, background, etc, after transformations
- * are set, but before any reading takes place. This allows
- * the user to obtain a gamma-corrected palette, for example.
- * If the user doesn't call this, we will do it ourselves.
- */
-void PNGAPI
-png_start_read_image(png_structp png_ptr)
-{
- png_debug(1, "in png_start_read_image");
- if (png_ptr == NULL) return;
- if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
- png_read_start_row(png_ptr);
-}
-#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-void PNGAPI
-png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
-{
-#ifdef PNG_USE_LOCAL_ARRAYS
- PNG_CONST PNG_IDAT;
- PNG_CONST int png_pass_dsp_mask[7] = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55,
- 0xff};
- PNG_CONST int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff};
-#endif
- int ret;
- if (png_ptr == NULL) return;
- png_debug2(1, "in png_read_row (row %lu, pass %d)",
- png_ptr->row_number, png_ptr->pass);
- if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
- png_read_start_row(png_ptr);
- if (png_ptr->row_number == 0 && png_ptr->pass == 0)
- {
- /* check for transforms that have been set but were defined out */
-#if defined(PNG_WRITE_INVERT_SUPPORTED) && !defined(PNG_READ_INVERT_SUPPORTED)
- if (png_ptr->transformations & PNG_INVERT_MONO)
- png_warning(png_ptr, "PNG_READ_INVERT_SUPPORTED is not defined.");
-#endif
-#if defined(PNG_WRITE_FILLER_SUPPORTED) && !defined(PNG_READ_FILLER_SUPPORTED)
- if (png_ptr->transformations & PNG_FILLER)
- png_warning(png_ptr, "PNG_READ_FILLER_SUPPORTED is not defined.");
-#endif
-#if defined(PNG_WRITE_PACKSWAP_SUPPORTED) && !defined(PNG_READ_PACKSWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_PACKSWAP)
- png_warning(png_ptr, "PNG_READ_PACKSWAP_SUPPORTED is not defined.");
-#endif
-#if defined(PNG_WRITE_PACK_SUPPORTED) && !defined(PNG_READ_PACK_SUPPORTED)
- if (png_ptr->transformations & PNG_PACK)
- png_warning(png_ptr, "PNG_READ_PACK_SUPPORTED is not defined.");
-#endif
-#if defined(PNG_WRITE_SHIFT_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED)
- if (png_ptr->transformations & PNG_SHIFT)
- png_warning(png_ptr, "PNG_READ_SHIFT_SUPPORTED is not defined.");
-#endif
-#if defined(PNG_WRITE_BGR_SUPPORTED) && !defined(PNG_READ_BGR_SUPPORTED)
- if (png_ptr->transformations & PNG_BGR)
- png_warning(png_ptr, "PNG_READ_BGR_SUPPORTED is not defined.");
-#endif
-#if defined(PNG_WRITE_SWAP_SUPPORTED) && !defined(PNG_READ_SWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_SWAP_BYTES)
- png_warning(png_ptr, "PNG_READ_SWAP_SUPPORTED is not defined.");
-#endif
- }
-
-#if defined(PNG_READ_INTERLACING_SUPPORTED)
- /* if interlaced and we do not need a new row, combine row and return */
- if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE))
- {
- switch (png_ptr->pass)
- {
- case 0:
- if (png_ptr->row_number & 0x07)
- {
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
- png_read_finish_row(png_ptr);
- return;
- }
- break;
- case 1:
- if ((png_ptr->row_number & 0x07) || png_ptr->width < 5)
- {
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
- png_read_finish_row(png_ptr);
- return;
- }
- break;
- case 2:
- if ((png_ptr->row_number & 0x07) != 4)
- {
- if (dsp_row != NULL && (png_ptr->row_number & 4))
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
- png_read_finish_row(png_ptr);
- return;
- }
- break;
- case 3:
- if ((png_ptr->row_number & 3) || png_ptr->width < 3)
- {
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
- png_read_finish_row(png_ptr);
- return;
- }
- break;
- case 4:
- if ((png_ptr->row_number & 3) != 2)
- {
- if (dsp_row != NULL && (png_ptr->row_number & 2))
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
- png_read_finish_row(png_ptr);
- return;
- }
- break;
- case 5:
- if ((png_ptr->row_number & 1) || png_ptr->width < 2)
- {
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
- png_read_finish_row(png_ptr);
- return;
- }
- break;
- case 6:
- if (!(png_ptr->row_number & 1))
- {
- png_read_finish_row(png_ptr);
- return;
- }
- break;
- }
- }
-#endif
-
- if (!(png_ptr->mode & PNG_HAVE_IDAT))
- png_error(png_ptr, "Invalid attempt to read row data");
-
- png_ptr->zstream.next_out = png_ptr->row_buf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes;
- do
- {
- if (!(png_ptr->zstream.avail_in))
- {
- while (!png_ptr->idat_size)
- {
- png_crc_finish(png_ptr, 0);
-
- png_ptr->idat_size = png_read_chunk_header(png_ptr);
- if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
- png_error(png_ptr, "Not enough image data");
- }
- png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size;
- png_ptr->zstream.next_in = png_ptr->zbuf;
- if (png_ptr->zbuf_size > png_ptr->idat_size)
- png_ptr->zstream.avail_in = (uInt)png_ptr->idat_size;
- png_crc_read(png_ptr, png_ptr->zbuf,
- (png_size_t)png_ptr->zstream.avail_in);
- png_ptr->idat_size -= png_ptr->zstream.avail_in;
- }
- ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
- if (ret == Z_STREAM_END)
- {
- if (png_ptr->zstream.avail_out || png_ptr->zstream.avail_in ||
- png_ptr->idat_size)
- png_error(png_ptr, "Extra compressed data");
- png_ptr->mode |= PNG_AFTER_IDAT;
- png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
- break;
- }
- if (ret != Z_OK)
- png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg :
- "Decompression error");
-
- } while (png_ptr->zstream.avail_out);
-
- png_ptr->row_info.color_type = png_ptr->color_type;
- png_ptr->row_info.width = png_ptr->iwidth;
- png_ptr->row_info.channels = png_ptr->channels;
- png_ptr->row_info.bit_depth = png_ptr->bit_depth;
- png_ptr->row_info.pixel_depth = png_ptr->pixel_depth;
- png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
- png_ptr->row_info.width);
-
- if (png_ptr->row_buf[0])
- png_read_filter_row(png_ptr, &(png_ptr->row_info),
- png_ptr->row_buf + 1, png_ptr->prev_row + 1,
- (int)(png_ptr->row_buf[0]));
-
- png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf,
- png_ptr->rowbytes + 1);
-
-#if defined(PNG_MNG_FEATURES_SUPPORTED)
- if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
- (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING))
- {
- /* Intrapixel differencing */
- png_do_read_intrapixel(&(png_ptr->row_info), png_ptr->row_buf + 1);
- }
-#endif
-
-
- if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
- png_do_read_transformations(png_ptr);
-
-#if defined(PNG_READ_INTERLACING_SUPPORTED)
- /* blow up interlaced rows to full size */
- if (png_ptr->interlaced &&
- (png_ptr->transformations & PNG_INTERLACE))
- {
- if (png_ptr->pass < 6)
-/* old interface (pre-1.0.9):
- png_do_read_interlace(&(png_ptr->row_info),
- png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations);
- */
- png_do_read_interlace(png_ptr);
-
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row,
- png_pass_dsp_mask[png_ptr->pass]);
- if (row != NULL)
- png_combine_row(png_ptr, row,
- png_pass_mask[png_ptr->pass]);
- }
- else
-#endif
- {
- if (row != NULL)
- png_combine_row(png_ptr, row, 0xff);
- if (dsp_row != NULL)
- png_combine_row(png_ptr, dsp_row, 0xff);
- }
- png_read_finish_row(png_ptr);
-
- if (png_ptr->read_row_fn != NULL)
- (*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);
-}
-#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-/* Read one or more rows of image data. If the image is interlaced,
- * and png_set_interlace_handling() has been called, the rows need to
- * contain the contents of the rows from the previous pass. If the
- * image has alpha or transparency, and png_handle_alpha()[*] has been
- * called, the rows contents must be initialized to the contents of the
- * screen.
- *
- * "row" holds the actual image, and pixels are placed in it
- * as they arrive. If the image is displayed after each pass, it will
- * appear to "sparkle" in. "display_row" can be used to display a
- * "chunky" progressive image, with finer detail added as it becomes
- * available. If you do not want this "chunky" display, you may pass
- * NULL for display_row. If you do not want the sparkle display, and
- * you have not called png_handle_alpha(), you may pass NULL for rows.
- * If you have called png_handle_alpha(), and the image has either an
- * alpha channel or a transparency chunk, you must provide a buffer for
- * rows. In this case, you do not have to provide a display_row buffer
- * also, but you may. If the image is not interlaced, or if you have
- * not called png_set_interlace_handling(), the display_row buffer will
- * be ignored, so pass NULL to it.
- *
- * [*] png_handle_alpha() does not exist yet, as of this version of libpng
- */
-
-void PNGAPI
-png_read_rows(png_structp png_ptr, png_bytepp row,
- png_bytepp display_row, png_uint_32 num_rows)
-{
- png_uint_32 i;
- png_bytepp rp;
- png_bytepp dp;
-
- png_debug(1, "in png_read_rows");
- if (png_ptr == NULL) return;
- rp = row;
- dp = display_row;
- if (rp != NULL && dp != NULL)
- for (i = 0; i < num_rows; i++)
- {
- png_bytep rptr = *rp++;
- png_bytep dptr = *dp++;
-
- png_read_row(png_ptr, rptr, dptr);
- }
- else if (rp != NULL)
- for (i = 0; i < num_rows; i++)
- {
- png_bytep rptr = *rp;
- png_read_row(png_ptr, rptr, png_bytep_NULL);
- rp++;
- }
- else if (dp != NULL)
- for (i = 0; i < num_rows; i++)
- {
- png_bytep dptr = *dp;
- png_read_row(png_ptr, png_bytep_NULL, dptr);
- dp++;
- }
-}
-#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-/* Read the entire image. If the image has an alpha channel or a tRNS
- * chunk, and you have called png_handle_alpha()[*], you will need to
- * initialize the image to the current image that PNG will be overlaying.
- * We set the num_rows again here, in case it was incorrectly set in
- * png_read_start_row() by a call to png_read_update_info() or
- * png_start_read_image() if png_set_interlace_handling() wasn't called
- * prior to either of these functions like it should have been. You can
- * only call this function once. If you desire to have an image for
- * each pass of a interlaced image, use png_read_rows() instead.
- *
- * [*] png_handle_alpha() does not exist yet, as of this version of libpng
- */
-void PNGAPI
-png_read_image(png_structp png_ptr, png_bytepp image)
-{
- png_uint_32 i, image_height;
- int pass, j;
- png_bytepp rp;
-
- png_debug(1, "in png_read_image");
- if (png_ptr == NULL) return;
-
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- pass = png_set_interlace_handling(png_ptr);
-#else
- if (png_ptr->interlaced)
- png_error(png_ptr,
- "Cannot read interlaced image -- interlace handler disabled.");
- pass = 1;
-#endif
-
-
- image_height=png_ptr->height;
- png_ptr->num_rows = image_height; /* Make sure this is set correctly */
-
- for (j = 0; j < pass; j++)
- {
- rp = image;
- for (i = 0; i < image_height; i++)
- {
- png_read_row(png_ptr, *rp, png_bytep_NULL);
- rp++;
- }
- }
-}
-#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-/* Read the end of the PNG file. Will not read past the end of the
- * file, will verify the end is accurate, and will read any comments
- * or time information at the end of the file, if info is not NULL.
- */
-void PNGAPI
-png_read_end(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_read_end");
- if (png_ptr == NULL) return;
- png_crc_finish(png_ptr, 0); /* Finish off CRC from last IDAT chunk */
-
- do
- {
-#ifdef PNG_USE_LOCAL_ARRAYS
- PNG_CONST PNG_IHDR;
- PNG_CONST PNG_IDAT;
- PNG_CONST PNG_IEND;
- PNG_CONST PNG_PLTE;
-#if defined(PNG_READ_bKGD_SUPPORTED)
- PNG_CONST PNG_bKGD;
-#endif
-#if defined(PNG_READ_cHRM_SUPPORTED)
- PNG_CONST PNG_cHRM;
-#endif
-#if defined(PNG_READ_gAMA_SUPPORTED)
- PNG_CONST PNG_gAMA;
-#endif
-#if defined(PNG_READ_hIST_SUPPORTED)
- PNG_CONST PNG_hIST;
-#endif
-#if defined(PNG_READ_iCCP_SUPPORTED)
- PNG_CONST PNG_iCCP;
-#endif
-#if defined(PNG_READ_iTXt_SUPPORTED)
- PNG_CONST PNG_iTXt;
-#endif
-#if defined(PNG_READ_oFFs_SUPPORTED)
- PNG_CONST PNG_oFFs;
-#endif
-#if defined(PNG_READ_pCAL_SUPPORTED)
- PNG_CONST PNG_pCAL;
-#endif
-#if defined(PNG_READ_pHYs_SUPPORTED)
- PNG_CONST PNG_pHYs;
-#endif
-#if defined(PNG_READ_sBIT_SUPPORTED)
- PNG_CONST PNG_sBIT;
-#endif
-#if defined(PNG_READ_sCAL_SUPPORTED)
- PNG_CONST PNG_sCAL;
-#endif
-#if defined(PNG_READ_sPLT_SUPPORTED)
- PNG_CONST PNG_sPLT;
-#endif
-#if defined(PNG_READ_sRGB_SUPPORTED)
- PNG_CONST PNG_sRGB;
-#endif
-#if defined(PNG_READ_tEXt_SUPPORTED)
- PNG_CONST PNG_tEXt;
-#endif
-#if defined(PNG_READ_tIME_SUPPORTED)
- PNG_CONST PNG_tIME;
-#endif
-#if defined(PNG_READ_tRNS_SUPPORTED)
- PNG_CONST PNG_tRNS;
-#endif
-#if defined(PNG_READ_zTXt_SUPPORTED)
- PNG_CONST PNG_zTXt;
-#endif
-#endif /* PNG_USE_LOCAL_ARRAYS */
- png_uint_32 length = png_read_chunk_header(png_ptr);
- PNG_CONST png_bytep chunk_name = png_ptr->chunk_name;
-
- if (!png_memcmp(chunk_name, png_IHDR, 4))
- png_handle_IHDR(png_ptr, info_ptr, length);
- else if (!png_memcmp(chunk_name, png_IEND, 4))
- png_handle_IEND(png_ptr, info_ptr, length);
-#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
- else if (png_handle_as_unknown(png_ptr, chunk_name))
- {
- if (!png_memcmp(chunk_name, png_IDAT, 4))
- {
- if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
- png_error(png_ptr, "Too many IDAT's found");
- }
- png_handle_unknown(png_ptr, info_ptr, length);
- if (!png_memcmp(chunk_name, png_PLTE, 4))
- png_ptr->mode |= PNG_HAVE_PLTE;
- }
-#endif
- else if (!png_memcmp(chunk_name, png_IDAT, 4))
- {
- /* Zero length IDATs are legal after the last IDAT has been
- * read, but not after other chunks have been read.
- */
- if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
- png_error(png_ptr, "Too many IDAT's found");
- png_crc_finish(png_ptr, length);
- }
- else if (!png_memcmp(chunk_name, png_PLTE, 4))
- png_handle_PLTE(png_ptr, info_ptr, length);
-#if defined(PNG_READ_bKGD_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_bKGD, 4))
- png_handle_bKGD(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_cHRM_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_cHRM, 4))
- png_handle_cHRM(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_gAMA_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_gAMA, 4))
- png_handle_gAMA(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_hIST_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_hIST, 4))
- png_handle_hIST(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_oFFs_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_oFFs, 4))
- png_handle_oFFs(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_pCAL_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_pCAL, 4))
- png_handle_pCAL(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_sCAL_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_sCAL, 4))
- png_handle_sCAL(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_pHYs_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_pHYs, 4))
- png_handle_pHYs(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_sBIT_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_sBIT, 4))
- png_handle_sBIT(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_sRGB_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_sRGB, 4))
- png_handle_sRGB(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_iCCP_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_iCCP, 4))
- png_handle_iCCP(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_sPLT_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_sPLT, 4))
- png_handle_sPLT(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_tEXt_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_tEXt, 4))
- png_handle_tEXt(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_tIME_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_tIME, 4))
- png_handle_tIME(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_tRNS_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_tRNS, 4))
- png_handle_tRNS(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_zTXt_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_zTXt, 4))
- png_handle_zTXt(png_ptr, info_ptr, length);
-#endif
-#if defined(PNG_READ_iTXt_SUPPORTED)
- else if (!png_memcmp(chunk_name, png_iTXt, 4))
- png_handle_iTXt(png_ptr, info_ptr, length);
-#endif
- else
- png_handle_unknown(png_ptr, info_ptr, length);
- } while (!(png_ptr->mode & PNG_HAVE_IEND));
-}
-#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
-
-/* free all memory used by the read */
-void PNGAPI
-png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
- png_infopp end_info_ptr_ptr)
-{
- png_structp png_ptr = NULL;
- png_infop info_ptr = NULL, end_info_ptr = NULL;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_free_ptr free_fn = NULL;
- png_voidp mem_ptr = NULL;
-#endif
-
- png_debug(1, "in png_destroy_read_struct");
- if (png_ptr_ptr != NULL)
- png_ptr = *png_ptr_ptr;
- if (png_ptr == NULL)
- return;
-
-#ifdef PNG_USER_MEM_SUPPORTED
- free_fn = png_ptr->free_fn;
- mem_ptr = png_ptr->mem_ptr;
-#endif
-
- if (info_ptr_ptr != NULL)
- info_ptr = *info_ptr_ptr;
-
- if (end_info_ptr_ptr != NULL)
- end_info_ptr = *end_info_ptr_ptr;
-
- png_read_destroy(png_ptr, info_ptr, end_info_ptr);
-
- if (info_ptr != NULL)
- {
-#if defined(PNG_TEXT_SUPPORTED)
- png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, -1);
-#endif
-
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)info_ptr, (png_free_ptr)free_fn,
- (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)info_ptr);
-#endif
- *info_ptr_ptr = NULL;
- }
-
- if (end_info_ptr != NULL)
- {
-#if defined(PNG_READ_TEXT_SUPPORTED)
- png_free_data(png_ptr, end_info_ptr, PNG_FREE_TEXT, -1);
-#endif
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)end_info_ptr, (png_free_ptr)free_fn,
- (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)end_info_ptr);
-#endif
- *end_info_ptr_ptr = NULL;
- }
-
- if (png_ptr != NULL)
- {
-#ifdef PNG_USER_MEM_SUPPORTED
- png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn,
- (png_voidp)mem_ptr);
-#else
- png_destroy_struct((png_voidp)png_ptr);
-#endif
- *png_ptr_ptr = NULL;
- }
-}
-
-/* free all memory used by the read (old method) */
-void /* PRIVATE */
-png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr)
-{
-#ifdef PNG_SETJMP_SUPPORTED
- jmp_buf tmp_jmp;
-#endif
- png_error_ptr error_fn;
- png_error_ptr warning_fn;
- png_voidp error_ptr;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_free_ptr free_fn;
-#endif
-
- png_debug(1, "in png_read_destroy");
- if (info_ptr != NULL)
- png_info_destroy(png_ptr, info_ptr);
-
- if (end_info_ptr != NULL)
- png_info_destroy(png_ptr, end_info_ptr);
-
- png_free(png_ptr, png_ptr->zbuf);
- png_free(png_ptr, png_ptr->big_row_buf);
- png_free(png_ptr, png_ptr->prev_row);
- png_free(png_ptr, png_ptr->chunkdata);
-#if defined(PNG_READ_DITHER_SUPPORTED)
- png_free(png_ptr, png_ptr->palette_lookup);
- png_free(png_ptr, png_ptr->dither_index);
-#endif
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- png_free(png_ptr, png_ptr->gamma_table);
-#endif
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
- png_free(png_ptr, png_ptr->gamma_from_1);
- png_free(png_ptr, png_ptr->gamma_to_1);
-#endif
-#ifdef PNG_FREE_ME_SUPPORTED
- if (png_ptr->free_me & PNG_FREE_PLTE)
- png_zfree(png_ptr, png_ptr->palette);
- png_ptr->free_me &= ~PNG_FREE_PLTE;
-#else
- if (png_ptr->flags & PNG_FLAG_FREE_PLTE)
- png_zfree(png_ptr, png_ptr->palette);
- png_ptr->flags &= ~PNG_FLAG_FREE_PLTE;
-#endif
-#if defined(PNG_tRNS_SUPPORTED) || \
- defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
-#ifdef PNG_FREE_ME_SUPPORTED
- if (png_ptr->free_me & PNG_FREE_TRNS)
- png_free(png_ptr, png_ptr->trans);
- png_ptr->free_me &= ~PNG_FREE_TRNS;
-#else
- if (png_ptr->flags & PNG_FLAG_FREE_TRNS)
- png_free(png_ptr, png_ptr->trans);
- png_ptr->flags &= ~PNG_FLAG_FREE_TRNS;
-#endif
-#endif
-#if defined(PNG_READ_hIST_SUPPORTED)
-#ifdef PNG_FREE_ME_SUPPORTED
- if (png_ptr->free_me & PNG_FREE_HIST)
- png_free(png_ptr, png_ptr->hist);
- png_ptr->free_me &= ~PNG_FREE_HIST;
-#else
- if (png_ptr->flags & PNG_FLAG_FREE_HIST)
- png_free(png_ptr, png_ptr->hist);
- png_ptr->flags &= ~PNG_FLAG_FREE_HIST;
-#endif
-#endif
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (png_ptr->gamma_16_table != NULL)
- {
- int i;
- int istop = (1 << (8 - png_ptr->gamma_shift));
- for (i = 0; i < istop; i++)
- {
- png_free(png_ptr, png_ptr->gamma_16_table[i]);
- }
- png_free(png_ptr, png_ptr->gamma_16_table);
- }
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->gamma_16_from_1 != NULL)
- {
- int i;
- int istop = (1 << (8 - png_ptr->gamma_shift));
- for (i = 0; i < istop; i++)
- {
- png_free(png_ptr, png_ptr->gamma_16_from_1[i]);
- }
- png_free(png_ptr, png_ptr->gamma_16_from_1);
- }
- if (png_ptr->gamma_16_to_1 != NULL)
- {
- int i;
- int istop = (1 << (8 - png_ptr->gamma_shift));
- for (i = 0; i < istop; i++)
- {
- png_free(png_ptr, png_ptr->gamma_16_to_1[i]);
- }
- png_free(png_ptr, png_ptr->gamma_16_to_1);
- }
-#endif
-#endif
-#if defined(PNG_TIME_RFC1123_SUPPORTED)
- png_free(png_ptr, png_ptr->time_buffer);
-#endif
-
- inflateEnd(&png_ptr->zstream);
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
- png_free(png_ptr, png_ptr->save_buffer);
-#endif
-
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-#ifdef PNG_TEXT_SUPPORTED
- png_free(png_ptr, png_ptr->current_text);
-#endif /* PNG_TEXT_SUPPORTED */
-#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
-
- /* Save the important info out of the png_struct, in case it is
- * being used again.
- */
-#ifdef PNG_SETJMP_SUPPORTED
- png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf));
-#endif
-
- error_fn = png_ptr->error_fn;
- warning_fn = png_ptr->warning_fn;
- error_ptr = png_ptr->error_ptr;
-#ifdef PNG_USER_MEM_SUPPORTED
- free_fn = png_ptr->free_fn;
-#endif
-
- png_memset(png_ptr, 0, png_sizeof(png_struct));
-
- png_ptr->error_fn = error_fn;
- png_ptr->warning_fn = warning_fn;
- png_ptr->error_ptr = error_ptr;
-#ifdef PNG_USER_MEM_SUPPORTED
- png_ptr->free_fn = free_fn;
-#endif
-
-#ifdef PNG_SETJMP_SUPPORTED
- png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf));
-#endif
-
-}
-
-void PNGAPI
-png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn)
-{
- if (png_ptr == NULL) return;
- png_ptr->read_row_fn = read_row_fn;
-}
-
-
-#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
-#if defined(PNG_INFO_IMAGE_SUPPORTED)
-void PNGAPI
-png_read_png(png_structp png_ptr, png_infop info_ptr,
- int transforms,
- voidp params)
-{
- int row;
-
- if (png_ptr == NULL) return;
-#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
- /* invert the alpha channel from opacity to transparency
- */
- if (transforms & PNG_TRANSFORM_INVERT_ALPHA)
- png_set_invert_alpha(png_ptr);
-#endif
-
- /* png_read_info() gives us all of the information from the
- * PNG file before the first IDAT (image data chunk).
- */
- png_read_info(png_ptr, info_ptr);
- if (info_ptr->height > PNG_UINT_32_MAX/png_sizeof(png_bytep))
- png_error(png_ptr, "Image is too high to process with png_read_png()");
-
- /* -------------- image transformations start here ------------------- */
-
-#if defined(PNG_READ_16_TO_8_SUPPORTED)
- /* tell libpng to strip 16 bit/color files down to 8 bits per color
- */
- if (transforms & PNG_TRANSFORM_STRIP_16)
- png_set_strip_16(png_ptr);
-#endif
-
-#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
- /* Strip alpha bytes from the input data without combining with
- * the background (not recommended).
- */
- if (transforms & PNG_TRANSFORM_STRIP_ALPHA)
- png_set_strip_alpha(png_ptr);
-#endif
-
-#if defined(PNG_READ_PACK_SUPPORTED) && !defined(PNG_READ_EXPAND_SUPPORTED)
- /* Extract multiple pixels with bit depths of 1, 2, or 4 from a single
- * byte into separate bytes (useful for paletted and grayscale images).
- */
- if (transforms & PNG_TRANSFORM_PACKING)
- png_set_packing(png_ptr);
-#endif
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)
- /* Change the order of packed pixels to least significant bit first
- * (not useful if you are using png_set_packing).
- */
- if (transforms & PNG_TRANSFORM_PACKSWAP)
- png_set_packswap(png_ptr);
-#endif
-
-#if defined(PNG_READ_EXPAND_SUPPORTED)
- /* Expand paletted colors into true RGB triplets
- * Expand grayscale images to full 8 bits from 1, 2, or 4 bits/pixel
- * Expand paletted or RGB images with transparency to full alpha
- * channels so the data will be available as RGBA quartets.
- */
- if (transforms & PNG_TRANSFORM_EXPAND)
- if ((png_ptr->bit_depth < 8) ||
- (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ||
- (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)))
- png_set_expand(png_ptr);
-#endif
-
- /* We don't handle background color or gamma transformation or dithering.
- */
-
-#if defined(PNG_READ_INVERT_SUPPORTED)
- /* invert monochrome files to have 0 as white and 1 as black
- */
- if (transforms & PNG_TRANSFORM_INVERT_MONO)
- png_set_invert_mono(png_ptr);
-#endif
-
-#if defined(PNG_READ_SHIFT_SUPPORTED)
- /* If you want to shift the pixel values from the range [0,255] or
- * [0,65535] to the original [0,7] or [0,31], or whatever range the
- * colors were originally in:
- */
- if ((transforms & PNG_TRANSFORM_SHIFT)
- && png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT))
- {
- png_color_8p sig_bit;
-
- png_get_sBIT(png_ptr, info_ptr, &sig_bit);
- png_set_shift(png_ptr, sig_bit);
- }
-#endif
-
-#if defined(PNG_READ_BGR_SUPPORTED)
- /* flip the RGB pixels to BGR (or RGBA to BGRA)
- */
- if (transforms & PNG_TRANSFORM_BGR)
- png_set_bgr(png_ptr);
-#endif
-
-#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED)
- /* swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR)
- */
- if (transforms & PNG_TRANSFORM_SWAP_ALPHA)
- png_set_swap_alpha(png_ptr);
-#endif
-
-#if defined(PNG_READ_SWAP_SUPPORTED)
- /* swap bytes of 16 bit files to least significant byte first
- */
- if (transforms & PNG_TRANSFORM_SWAP_ENDIAN)
- png_set_swap(png_ptr);
-#endif
-
- /* We don't handle adding filler bytes */
-
- /* Optional call to gamma correct and add the background to the palette
- * and update info structure. REQUIRED if you are expecting libpng to
- * update the palette for you (i.e., you selected such a transform above).
- */
- png_read_update_info(png_ptr, info_ptr);
-
- /* -------------- image transformations end here ------------------- */
-
-#ifdef PNG_FREE_ME_SUPPORTED
- png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
-#endif
- if (info_ptr->row_pointers == NULL)
- {
- info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr,
- info_ptr->height * png_sizeof(png_bytep));
- png_memset(info_ptr->row_pointers, 0, info_ptr->height
- * png_sizeof(png_bytep));
-#ifdef PNG_FREE_ME_SUPPORTED
- info_ptr->free_me |= PNG_FREE_ROWS;
-#endif
- for (row = 0; row < (int)info_ptr->height; row++)
- info_ptr->row_pointers[row] = (png_bytep)png_malloc(png_ptr,
- png_get_rowbytes(png_ptr, info_ptr));
- }
-
- png_read_image(png_ptr, info_ptr->row_pointers);
- info_ptr->valid |= PNG_INFO_IDAT;
-
- /* read rest of file, and get additional chunks in info_ptr - REQUIRED */
- png_read_end(png_ptr, info_ptr);
-
- transforms = transforms; /* quiet compiler warnings */
- params = params;
-
-}
-#endif /* PNG_INFO_IMAGE_SUPPORTED */
-#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */
-#endif /* PNG_READ_SUPPORTED */
diff --git a/navit/support/libpng/pngrio.c b/navit/support/libpng/pngrio.c
deleted file mode 100644
index 44a99e2a2..000000000
--- a/navit/support/libpng/pngrio.c
+++ /dev/null
@@ -1,168 +0,0 @@
-
-/* pngrio.c - functions for data input
- *
- * Last changed in libpng 1.2.36 [May 7, 2009]
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2009 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This file provides a location for all input. Users who need
- * special handling are expected to write a function that has the same
- * arguments as this and performs a similar function, but that possibly
- * has a different input method. Note that you shouldn't change this
- * function, but rather write a replacement function and then make
- * libpng use it at run time with png_set_read_fn(...).
- */
-
-#define PNG_INTERNAL
-#include "png.h"
-#if defined(PNG_READ_SUPPORTED)
-
-/* Read the data from whatever input you are using. The default routine
- reads from a file pointer. Note that this routine sometimes gets called
- with very small lengths, so you should implement some kind of simple
- buffering if you are using unbuffered reads. This should never be asked
- to read more then 64K on a 16 bit machine. */
-void /* PRIVATE */
-png_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
-{
- png_debug1(4, "reading %d bytes", (int)length);
- if (png_ptr->read_data_fn != NULL)
- (*(png_ptr->read_data_fn))(png_ptr, data, length);
- else
- png_error(png_ptr, "Call to NULL read function");
-}
-
-#if !defined(PNG_NO_STDIO)
-/* This is the function that does the actual reading of data. If you are
- not reading from a standard C stream, you should create a replacement
- read_data function and use it at run time with png_set_read_fn(), rather
- than changing the library. */
-#ifndef USE_FAR_KEYWORD
-void PNGAPI
-png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
-{
- png_size_t check;
-
- if (png_ptr == NULL) return;
- /* fread() returns 0 on error, so it is OK to store this in a png_size_t
- * instead of an int, which is what fread() actually returns.
- */
-#if 0 /* defined(_WIN32_WCE) */
- if ( !ReadFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )
- check = 0;
-#else
- check = (png_size_t)fread(data, (png_size_t)1, length,
- (png_FILE_p)png_ptr->io_ptr);
-#endif
-
- if (check != length)
- png_error(png_ptr, "Read Error");
-}
-#else
-/* this is the model-independent version. Since the standard I/O library
- can't handle far buffers in the medium and small models, we have to copy
- the data.
-*/
-
-#define NEAR_BUF_SIZE 1024
-#define MIN(a,b) (a <= b ? a : b)
-
-static void PNGAPI
-png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
-{
- int check;
- png_byte *n_data;
- png_FILE_p io_ptr;
-
- if (png_ptr == NULL) return;
- /* Check if data really is near. If so, use usual code. */
- n_data = (png_byte *)CVT_PTR_NOCHECK(data);
- io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
- if ((png_bytep)n_data == data)
- {
-#if 0 /* defined(_WIN32_WCE) */
- if ( !ReadFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) )
- check = 0;
-#else
- check = fread(n_data, 1, length, io_ptr);
-#endif
- }
- else
- {
- png_byte buf[NEAR_BUF_SIZE];
- png_size_t read, remaining, err;
- check = 0;
- remaining = length;
- do
- {
- read = MIN(NEAR_BUF_SIZE, remaining);
-#if 0 /* defined(_WIN32_WCE) */
- if ( !ReadFile((HANDLE)(io_ptr), buf, read, &err, NULL) )
- err = 0;
-#else
- err = fread(buf, (png_size_t)1, read, io_ptr);
-#endif
- png_memcpy(data, buf, read); /* copy far buffer to near buffer */
- if (err != read)
- break;
- else
- check += err;
- data += read;
- remaining -= read;
- }
- while (remaining != 0);
- }
- if ((png_uint_32)check != (png_uint_32)length)
- png_error(png_ptr, "read Error");
-}
-#endif
-#endif
-
-/* This function allows the application to supply a new input function
- for libpng if standard C streams aren't being used.
-
- This function takes as its arguments:
- png_ptr - pointer to a png input data structure
- io_ptr - pointer to user supplied structure containing info about
- the input functions. May be NULL.
- read_data_fn - pointer to a new input function that takes as its
- arguments a pointer to a png_struct, a pointer to
- a location where input data can be stored, and a 32-bit
- unsigned int that is the number of bytes to be read.
- To exit and output any fatal error messages the new write
- function should call png_error(png_ptr, "Error msg").
- May be NULL, in which case libpng's default function will
- be used. */
-void PNGAPI
-png_set_read_fn(png_structp png_ptr, png_voidp io_ptr,
- png_rw_ptr read_data_fn)
-{
- if (png_ptr == NULL) return;
- png_ptr->io_ptr = io_ptr;
-
-#if !defined(PNG_NO_STDIO)
- if (read_data_fn != NULL)
- png_ptr->read_data_fn = read_data_fn;
- else
- png_ptr->read_data_fn = png_default_read_data;
-#else
- png_ptr->read_data_fn = read_data_fn;
-#endif
-
- /* It is an error to write to a read device */
- if (png_ptr->write_data_fn != NULL)
- {
- png_ptr->write_data_fn = NULL;
- png_warning(png_ptr,
- "It's an error to set both read_data_fn and write_data_fn in the ");
- png_warning(png_ptr,
- "same structure. Resetting write_data_fn to NULL.");
- }
-
-#if defined(PNG_WRITE_FLUSH_SUPPORTED)
- png_ptr->output_flush_fn = NULL;
-#endif
-}
-#endif /* PNG_READ_SUPPORTED */
diff --git a/navit/support/libpng/pngrtran.c b/navit/support/libpng/pngrtran.c
deleted file mode 100644
index d7dd8e77a..000000000
--- a/navit/support/libpng/pngrtran.c
+++ /dev/null
@@ -1,4296 +0,0 @@
-
-/* pngrtran.c - transforms the data in a row for PNG readers
- *
- * Last changed in libpng 1.2.35 [February 14, 2009]
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2009 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This file contains functions optionally called by an application
- * in order to tell libpng how to handle data when reading a PNG.
- * Transformations that are used in both reading and writing are
- * in pngtrans.c.
- */
-
-#define PNG_INTERNAL
-#include "png.h"
-#if defined(PNG_READ_SUPPORTED)
-
-/* Set the action on getting a CRC error for an ancillary or critical chunk. */
-void PNGAPI
-png_set_crc_action(png_structp png_ptr, int crit_action, int ancil_action)
-{
- png_debug(1, "in png_set_crc_action");
- /* Tell libpng how we react to CRC errors in critical chunks */
- if (png_ptr == NULL) return;
- switch (crit_action)
- {
- case PNG_CRC_NO_CHANGE: /* leave setting as is */
- break;
- case PNG_CRC_WARN_USE: /* warn/use data */
- png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
- png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE;
- break;
- case PNG_CRC_QUIET_USE: /* quiet/use data */
- png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
- png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE |
- PNG_FLAG_CRC_CRITICAL_IGNORE;
- break;
- case PNG_CRC_WARN_DISCARD: /* not a valid action for critical data */
- png_warning(png_ptr,
- "Can't discard critical data on CRC error.");
- case PNG_CRC_ERROR_QUIT: /* error/quit */
- case PNG_CRC_DEFAULT:
- default:
- png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK;
- break;
- }
-
- switch (ancil_action)
- {
- case PNG_CRC_NO_CHANGE: /* leave setting as is */
- break;
- case PNG_CRC_WARN_USE: /* warn/use data */
- png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
- png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE;
- break;
- case PNG_CRC_QUIET_USE: /* quiet/use data */
- png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
- png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE |
- PNG_FLAG_CRC_ANCILLARY_NOWARN;
- break;
- case PNG_CRC_ERROR_QUIT: /* error/quit */
- png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
- png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_NOWARN;
- break;
- case PNG_CRC_WARN_DISCARD: /* warn/discard data */
- case PNG_CRC_DEFAULT:
- default:
- png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK;
- break;
- }
-}
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED) && \
- defined(PNG_FLOATING_POINT_SUPPORTED)
-/* handle alpha and tRNS via a background color */
-void PNGAPI
-png_set_background(png_structp png_ptr,
- png_color_16p background_color, int background_gamma_code,
- int need_expand, double background_gamma)
-{
- png_debug(1, "in png_set_background");
- if (png_ptr == NULL) return;
- if (background_gamma_code == PNG_BACKGROUND_GAMMA_UNKNOWN)
- {
- png_warning(png_ptr, "Application must supply a known background gamma");
- return;
- }
-
- png_ptr->transformations |= PNG_BACKGROUND;
- png_memcpy(&(png_ptr->background), background_color,
- png_sizeof(png_color_16));
- png_ptr->background_gamma = (float)background_gamma;
- png_ptr->background_gamma_type = (png_byte)(background_gamma_code);
- png_ptr->transformations |= (need_expand ? PNG_BACKGROUND_EXPAND : 0);
-}
-#endif
-
-#if defined(PNG_READ_16_TO_8_SUPPORTED)
-/* strip 16 bit depth files to 8 bit depth */
-void PNGAPI
-png_set_strip_16(png_structp png_ptr)
-{
- png_debug(1, "in png_set_strip_16");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= PNG_16_TO_8;
-}
-#endif
-
-#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
-void PNGAPI
-png_set_strip_alpha(png_structp png_ptr)
-{
- png_debug(1, "in png_set_strip_alpha");
- if (png_ptr == NULL) return;
- png_ptr->flags |= PNG_FLAG_STRIP_ALPHA;
-}
-#endif
-
-#if defined(PNG_READ_DITHER_SUPPORTED)
-/* Dither file to 8 bit. Supply a palette, the current number
- * of elements in the palette, the maximum number of elements
- * allowed, and a histogram if possible. If the current number
- * of colors is greater then the maximum number, the palette will be
- * modified to fit in the maximum number. "full_dither" indicates
- * whether we need a dithering cube set up for RGB images, or if we
- * simply are reducing the number of colors in a paletted image.
- */
-
-typedef struct png_dsort_struct
-{
- struct png_dsort_struct FAR * next;
- png_byte left;
- png_byte right;
-} png_dsort;
-typedef png_dsort FAR * png_dsortp;
-typedef png_dsort FAR * FAR * png_dsortpp;
-
-void PNGAPI
-png_set_dither(png_structp png_ptr, png_colorp palette,
- int num_palette, int maximum_colors, png_uint_16p histogram,
- int full_dither)
-{
- png_debug(1, "in png_set_dither");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= PNG_DITHER;
-
- if (!full_dither)
- {
- int i;
-
- png_ptr->dither_index = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)(num_palette * png_sizeof(png_byte)));
- for (i = 0; i < num_palette; i++)
- png_ptr->dither_index[i] = (png_byte)i;
- }
-
- if (num_palette > maximum_colors)
- {
- if (histogram != NULL)
- {
- /* This is easy enough, just throw out the least used colors.
- Perhaps not the best solution, but good enough. */
-
- int i;
-
- /* initialize an array to sort colors */
- png_ptr->dither_sort = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)(num_palette * png_sizeof(png_byte)));
-
- /* initialize the dither_sort array */
- for (i = 0; i < num_palette; i++)
- png_ptr->dither_sort[i] = (png_byte)i;
-
- /* Find the least used palette entries by starting a
- bubble sort, and running it until we have sorted
- out enough colors. Note that we don't care about
- sorting all the colors, just finding which are
- least used. */
-
- for (i = num_palette - 1; i >= maximum_colors; i--)
- {
- int done; /* to stop early if the list is pre-sorted */
- int j;
-
- done = 1;
- for (j = 0; j < i; j++)
- {
- if (histogram[png_ptr->dither_sort[j]]
- < histogram[png_ptr->dither_sort[j + 1]])
- {
- png_byte t;
-
- t = png_ptr->dither_sort[j];
- png_ptr->dither_sort[j] = png_ptr->dither_sort[j + 1];
- png_ptr->dither_sort[j + 1] = t;
- done = 0;
- }
- }
- if (done)
- break;
- }
-
- /* swap the palette around, and set up a table, if necessary */
- if (full_dither)
- {
- int j = num_palette;
-
- /* put all the useful colors within the max, but don't
- move the others */
- for (i = 0; i < maximum_colors; i++)
- {
- if ((int)png_ptr->dither_sort[i] >= maximum_colors)
- {
- do
- j--;
- while ((int)png_ptr->dither_sort[j] >= maximum_colors);
- palette[i] = palette[j];
- }
- }
- }
- else
- {
- int j = num_palette;
-
- /* move all the used colors inside the max limit, and
- develop a translation table */
- for (i = 0; i < maximum_colors; i++)
- {
- /* only move the colors we need to */
- if ((int)png_ptr->dither_sort[i] >= maximum_colors)
- {
- png_color tmp_color;
-
- do
- j--;
- while ((int)png_ptr->dither_sort[j] >= maximum_colors);
-
- tmp_color = palette[j];
- palette[j] = palette[i];
- palette[i] = tmp_color;
- /* indicate where the color went */
- png_ptr->dither_index[j] = (png_byte)i;
- png_ptr->dither_index[i] = (png_byte)j;
- }
- }
-
- /* find closest color for those colors we are not using */
- for (i = 0; i < num_palette; i++)
- {
- if ((int)png_ptr->dither_index[i] >= maximum_colors)
- {
- int min_d, k, min_k, d_index;
-
- /* find the closest color to one we threw out */
- d_index = png_ptr->dither_index[i];
- min_d = PNG_COLOR_DIST(palette[d_index], palette[0]);
- for (k = 1, min_k = 0; k < maximum_colors; k++)
- {
- int d;
-
- d = PNG_COLOR_DIST(palette[d_index], palette[k]);
-
- if (d < min_d)
- {
- min_d = d;
- min_k = k;
- }
- }
- /* point to closest color */
- png_ptr->dither_index[i] = (png_byte)min_k;
- }
- }
- }
- png_free(png_ptr, png_ptr->dither_sort);
- png_ptr->dither_sort = NULL;
- }
- else
- {
- /* This is much harder to do simply (and quickly). Perhaps
- we need to go through a median cut routine, but those
- don't always behave themselves with only a few colors
- as input. So we will just find the closest two colors,
- and throw out one of them (chosen somewhat randomly).
- [We don't understand this at all, so if someone wants to
- work on improving it, be our guest - AED, GRP]
- */
- int i;
- int max_d;
- int num_new_palette;
- png_dsortp t;
- png_dsortpp hash;
-
- t = NULL;
-
- /* initialize palette index arrays */
- png_ptr->index_to_palette = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)(num_palette * png_sizeof(png_byte)));
- png_ptr->palette_to_index = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)(num_palette * png_sizeof(png_byte)));
-
- /* initialize the sort array */
- for (i = 0; i < num_palette; i++)
- {
- png_ptr->index_to_palette[i] = (png_byte)i;
- png_ptr->palette_to_index[i] = (png_byte)i;
- }
-
- hash = (png_dsortpp)png_malloc(png_ptr, (png_uint_32)(769 *
- png_sizeof(png_dsortp)));
- png_memset(hash, 0, 769 * png_sizeof(png_dsortp));
-
- num_new_palette = num_palette;
-
- /* initial wild guess at how far apart the farthest pixel
- pair we will be eliminating will be. Larger
- numbers mean more areas will be allocated, Smaller
- numbers run the risk of not saving enough data, and
- having to do this all over again.
-
- I have not done extensive checking on this number.
- */
- max_d = 96;
-
- while (num_new_palette > maximum_colors)
- {
- for (i = 0; i < num_new_palette - 1; i++)
- {
- int j;
-
- for (j = i + 1; j < num_new_palette; j++)
- {
- int d;
-
- d = PNG_COLOR_DIST(palette[i], palette[j]);
-
- if (d <= max_d)
- {
-
- t = (png_dsortp)png_malloc_warn(png_ptr,
- (png_uint_32)(png_sizeof(png_dsort)));
- if (t == NULL)
- break;
- t->next = hash[d];
- t->left = (png_byte)i;
- t->right = (png_byte)j;
- hash[d] = t;
- }
- }
- if (t == NULL)
- break;
- }
-
- if (t != NULL)
- for (i = 0; i <= max_d; i++)
- {
- if (hash[i] != NULL)
- {
- png_dsortp p;
-
- for (p = hash[i]; p; p = p->next)
- {
- if ((int)png_ptr->index_to_palette[p->left]
- < num_new_palette &&
- (int)png_ptr->index_to_palette[p->right]
- < num_new_palette)
- {
- int j, next_j;
-
- if (num_new_palette & 0x01)
- {
- j = p->left;
- next_j = p->right;
- }
- else
- {
- j = p->right;
- next_j = p->left;
- }
-
- num_new_palette--;
- palette[png_ptr->index_to_palette[j]]
- = palette[num_new_palette];
- if (!full_dither)
- {
- int k;
-
- for (k = 0; k < num_palette; k++)
- {
- if (png_ptr->dither_index[k] ==
- png_ptr->index_to_palette[j])
- png_ptr->dither_index[k] =
- png_ptr->index_to_palette[next_j];
- if ((int)png_ptr->dither_index[k] ==
- num_new_palette)
- png_ptr->dither_index[k] =
- png_ptr->index_to_palette[j];
- }
- }
-
- png_ptr->index_to_palette[png_ptr->palette_to_index
- [num_new_palette]] = png_ptr->index_to_palette[j];
- png_ptr->palette_to_index[png_ptr->index_to_palette[j]]
- = png_ptr->palette_to_index[num_new_palette];
-
- png_ptr->index_to_palette[j] = (png_byte)num_new_palette;
- png_ptr->palette_to_index[num_new_palette] = (png_byte)j;
- }
- if (num_new_palette <= maximum_colors)
- break;
- }
- if (num_new_palette <= maximum_colors)
- break;
- }
- }
-
- for (i = 0; i < 769; i++)
- {
- if (hash[i] != NULL)
- {
- png_dsortp p = hash[i];
- while (p)
- {
- t = p->next;
- png_free(png_ptr, p);
- p = t;
- }
- }
- hash[i] = 0;
- }
- max_d += 96;
- }
- png_free(png_ptr, hash);
- png_free(png_ptr, png_ptr->palette_to_index);
- png_free(png_ptr, png_ptr->index_to_palette);
- png_ptr->palette_to_index = NULL;
- png_ptr->index_to_palette = NULL;
- }
- num_palette = maximum_colors;
- }
- if (png_ptr->palette == NULL)
- {
- png_ptr->palette = palette;
- }
- png_ptr->num_palette = (png_uint_16)num_palette;
-
- if (full_dither)
- {
- int i;
- png_bytep distance;
- int total_bits = PNG_DITHER_RED_BITS + PNG_DITHER_GREEN_BITS +
- PNG_DITHER_BLUE_BITS;
- int num_red = (1 << PNG_DITHER_RED_BITS);
- int num_green = (1 << PNG_DITHER_GREEN_BITS);
- int num_blue = (1 << PNG_DITHER_BLUE_BITS);
- png_size_t num_entries = ((png_size_t)1 << total_bits);
- png_ptr->palette_lookup = (png_bytep )png_malloc(png_ptr,
- (png_uint_32)(num_entries * png_sizeof(png_byte)));
- png_memset(png_ptr->palette_lookup, 0, num_entries *
- png_sizeof(png_byte));
-
- distance = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_entries *
- png_sizeof(png_byte)));
-
- png_memset(distance, 0xff, num_entries * png_sizeof(png_byte));
-
- for (i = 0; i < num_palette; i++)
- {
- int ir, ig, ib;
- int r = (palette[i].red >> (8 - PNG_DITHER_RED_BITS));
- int g = (palette[i].green >> (8 - PNG_DITHER_GREEN_BITS));
- int b = (palette[i].blue >> (8 - PNG_DITHER_BLUE_BITS));
-
- for (ir = 0; ir < num_red; ir++)
- {
- /* int dr = abs(ir - r); */
- int dr = ((ir > r) ? ir - r : r - ir);
- int index_r = (ir << (PNG_DITHER_BLUE_BITS + PNG_DITHER_GREEN_BITS));
-
- for (ig = 0; ig < num_green; ig++)
- {
- /* int dg = abs(ig - g); */
- int dg = ((ig > g) ? ig - g : g - ig);
- int dt = dr + dg;
- int dm = ((dr > dg) ? dr : dg);
- int index_g = index_r | (ig << PNG_DITHER_BLUE_BITS);
-
- for (ib = 0; ib < num_blue; ib++)
- {
- int d_index = index_g | ib;
- /* int db = abs(ib - b); */
- int db = ((ib > b) ? ib - b : b - ib);
- int dmax = ((dm > db) ? dm : db);
- int d = dmax + dt + db;
-
- if (d < (int)distance[d_index])
- {
- distance[d_index] = (png_byte)d;
- png_ptr->palette_lookup[d_index] = (png_byte)i;
- }
- }
- }
- }
- }
-
- png_free(png_ptr, distance);
- }
-}
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED)
-/* Transform the image from the file_gamma to the screen_gamma. We
- * only do transformations on images where the file_gamma and screen_gamma
- * are not close reciprocals, otherwise it slows things down slightly, and
- * also needlessly introduces small errors.
- *
- * We will turn off gamma transformation later if no semitransparent entries
- * are present in the tRNS array for palette images. We can't do it here
- * because we don't necessarily have the tRNS chunk yet.
- */
-void PNGAPI
-png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma)
-{
- png_debug(1, "in png_set_gamma");
- if (png_ptr == NULL) return;
- if ((fabs(scrn_gamma * file_gamma - 1.0) > PNG_GAMMA_THRESHOLD) ||
- (png_ptr->color_type & PNG_COLOR_MASK_ALPHA) ||
- (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE))
- png_ptr->transformations |= PNG_GAMMA;
- png_ptr->gamma = (float)file_gamma;
- png_ptr->screen_gamma = (float)scrn_gamma;
-}
-#endif
-
-#if defined(PNG_READ_EXPAND_SUPPORTED)
-/* Expand paletted images to RGB, expand grayscale images of
- * less than 8-bit depth to 8-bit depth, and expand tRNS chunks
- * to alpha channels.
- */
-void PNGAPI
-png_set_expand(png_structp png_ptr)
-{
- png_debug(1, "in png_set_expand");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
- png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
-}
-
-/* GRR 19990627: the following three functions currently are identical
- * to png_set_expand(). However, it is entirely reasonable that someone
- * might wish to expand an indexed image to RGB but *not* expand a single,
- * fully transparent palette entry to a full alpha channel--perhaps instead
- * convert tRNS to the grayscale/RGB format (16-bit RGB value), or replace
- * the transparent color with a particular RGB value, or drop tRNS entirely.
- * IOW, a future version of the library may make the transformations flag
- * a bit more fine-grained, with separate bits for each of these three
- * functions.
- *
- * More to the point, these functions make it obvious what libpng will be
- * doing, whereas "expand" can (and does) mean any number of things.
- *
- * GRP 20060307: In libpng-1.4.0, png_set_gray_1_2_4_to_8() was modified
- * to expand only the sample depth but not to expand the tRNS to alpha.
- */
-
-/* Expand paletted images to RGB. */
-void PNGAPI
-png_set_palette_to_rgb(png_structp png_ptr)
-{
- png_debug(1, "in png_set_palette_to_rgb");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
- png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
-}
-
-#if !defined(PNG_1_0_X)
-/* Expand grayscale images of less than 8-bit depth to 8 bits. */
-void PNGAPI
-png_set_expand_gray_1_2_4_to_8(png_structp png_ptr)
-{
- png_debug(1, "in png_set_expand_gray_1_2_4_to_8");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= PNG_EXPAND;
- png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
-}
-#endif
-
-#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
-/* Expand grayscale images of less than 8-bit depth to 8 bits. */
-/* Deprecated as of libpng-1.2.9 */
-void PNGAPI
-png_set_gray_1_2_4_to_8(png_structp png_ptr)
-{
- png_debug(1, "in png_set_gray_1_2_4_to_8");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
-}
-#endif
-
-
-/* Expand tRNS chunks to alpha channels. */
-void PNGAPI
-png_set_tRNS_to_alpha(png_structp png_ptr)
-{
- png_debug(1, "in png_set_tRNS_to_alpha");
- png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS);
- png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
-}
-#endif /* defined(PNG_READ_EXPAND_SUPPORTED) */
-
-#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
-void PNGAPI
-png_set_gray_to_rgb(png_structp png_ptr)
-{
- png_debug(1, "in png_set_gray_to_rgb");
- png_ptr->transformations |= PNG_GRAY_TO_RGB;
- png_ptr->flags &= ~PNG_FLAG_ROW_INIT;
-}
-#endif
-
-#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
-#if defined(PNG_FLOATING_POINT_SUPPORTED)
-/* Convert a RGB image to a grayscale of the same width. This allows us,
- * for example, to convert a 24 bpp RGB image into an 8 bpp grayscale image.
- */
-
-void PNGAPI
-png_set_rgb_to_gray(png_structp png_ptr, int error_action, double red,
- double green)
-{
- int red_fixed = (int)((float)red*100000.0 + 0.5);
- int green_fixed = (int)((float)green*100000.0 + 0.5);
- if (png_ptr == NULL) return;
- png_set_rgb_to_gray_fixed(png_ptr, error_action, red_fixed, green_fixed);
-}
-#endif
-
-void PNGAPI
-png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action,
- png_fixed_point red, png_fixed_point green)
-{
- png_debug(1, "in png_set_rgb_to_gray");
- if (png_ptr == NULL) return;
- switch(error_action)
- {
- case 1: png_ptr->transformations |= PNG_RGB_TO_GRAY;
- break;
- case 2: png_ptr->transformations |= PNG_RGB_TO_GRAY_WARN;
- break;
- case 3: png_ptr->transformations |= PNG_RGB_TO_GRAY_ERR;
- }
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
-#if defined(PNG_READ_EXPAND_SUPPORTED)
- png_ptr->transformations |= PNG_EXPAND;
-#else
- {
- png_warning(png_ptr,
- "Cannot do RGB_TO_GRAY without EXPAND_SUPPORTED.");
- png_ptr->transformations &= ~PNG_RGB_TO_GRAY;
- }
-#endif
- {
- png_uint_16 red_int, green_int;
- if (red < 0 || green < 0)
- {
- red_int = 6968; /* .212671 * 32768 + .5 */
- green_int = 23434; /* .715160 * 32768 + .5 */
- }
- else if (red + green < 100000L)
- {
- red_int = (png_uint_16)(((png_uint_32)red*32768L)/100000L);
- green_int = (png_uint_16)(((png_uint_32)green*32768L)/100000L);
- }
- else
- {
- png_warning(png_ptr, "ignoring out of range rgb_to_gray coefficients");
- red_int = 6968;
- green_int = 23434;
- }
- png_ptr->rgb_to_gray_red_coeff = red_int;
- png_ptr->rgb_to_gray_green_coeff = green_int;
- png_ptr->rgb_to_gray_blue_coeff =
- (png_uint_16)(32768 - red_int - green_int);
- }
-}
-#endif
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_LEGACY_SUPPORTED)
-void PNGAPI
-png_set_read_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
- read_user_transform_fn)
-{
- png_debug(1, "in png_set_read_user_transform_fn");
- if (png_ptr == NULL) return;
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
- png_ptr->transformations |= PNG_USER_TRANSFORM;
- png_ptr->read_user_transform_fn = read_user_transform_fn;
-#endif
-#ifdef PNG_LEGACY_SUPPORTED
- if (read_user_transform_fn)
- png_warning(png_ptr,
- "This version of libpng does not support user transforms");
-#endif
-}
-#endif
-
-/* Initialize everything needed for the read. This includes modifying
- * the palette.
- */
-void /* PRIVATE */
-png_init_read_transformations(png_structp png_ptr)
-{
- png_debug(1, "in png_init_read_transformations");
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- if (png_ptr != NULL)
-#endif
- {
-#if defined(PNG_READ_BACKGROUND_SUPPORTED) || defined(PNG_READ_SHIFT_SUPPORTED) \
- || defined(PNG_READ_GAMMA_SUPPORTED)
- int color_type = png_ptr->color_type;
-#endif
-
-#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED)
-
-#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
- /* Detect gray background and attempt to enable optimization
- * for gray --> RGB case */
- /* Note: if PNG_BACKGROUND_EXPAND is set and color_type is either RGB or
- * RGB_ALPHA (in which case need_expand is superfluous anyway), the
- * background color might actually be gray yet not be flagged as such.
- * This is not a problem for the current code, which uses
- * PNG_BACKGROUND_IS_GRAY only to decide when to do the
- * png_do_gray_to_rgb() transformation.
- */
- if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
- !(color_type & PNG_COLOR_MASK_COLOR))
- {
- png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
- } else if ((png_ptr->transformations & PNG_BACKGROUND) &&
- !(png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
- (png_ptr->transformations & PNG_GRAY_TO_RGB) &&
- png_ptr->background.red == png_ptr->background.green &&
- png_ptr->background.red == png_ptr->background.blue)
- {
- png_ptr->mode |= PNG_BACKGROUND_IS_GRAY;
- png_ptr->background.gray = png_ptr->background.red;
- }
-#endif
-
- if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) &&
- (png_ptr->transformations & PNG_EXPAND))
- {
- if (!(color_type & PNG_COLOR_MASK_COLOR)) /* i.e., GRAY or GRAY_ALPHA */
- {
- /* expand background and tRNS chunks */
- switch (png_ptr->bit_depth)
- {
- case 1:
- png_ptr->background.gray *= (png_uint_16)0xff;
- png_ptr->background.red = png_ptr->background.green
- = png_ptr->background.blue = png_ptr->background.gray;
- if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
- {
- png_ptr->trans_values.gray *= (png_uint_16)0xff;
- png_ptr->trans_values.red = png_ptr->trans_values.green
- = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
- }
- break;
- case 2:
- png_ptr->background.gray *= (png_uint_16)0x55;
- png_ptr->background.red = png_ptr->background.green
- = png_ptr->background.blue = png_ptr->background.gray;
- if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
- {
- png_ptr->trans_values.gray *= (png_uint_16)0x55;
- png_ptr->trans_values.red = png_ptr->trans_values.green
- = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
- }
- break;
- case 4:
- png_ptr->background.gray *= (png_uint_16)0x11;
- png_ptr->background.red = png_ptr->background.green
- = png_ptr->background.blue = png_ptr->background.gray;
- if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
- {
- png_ptr->trans_values.gray *= (png_uint_16)0x11;
- png_ptr->trans_values.red = png_ptr->trans_values.green
- = png_ptr->trans_values.blue = png_ptr->trans_values.gray;
- }
- break;
- case 8:
- case 16:
- png_ptr->background.red = png_ptr->background.green
- = png_ptr->background.blue = png_ptr->background.gray;
- break;
- }
- }
- else if (color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_ptr->background.red =
- png_ptr->palette[png_ptr->background.index].red;
- png_ptr->background.green =
- png_ptr->palette[png_ptr->background.index].green;
- png_ptr->background.blue =
- png_ptr->palette[png_ptr->background.index].blue;
-
-#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
- if (png_ptr->transformations & PNG_INVERT_ALPHA)
- {
-#if defined(PNG_READ_EXPAND_SUPPORTED)
- if (!(png_ptr->transformations & PNG_EXPAND_tRNS))
-#endif
- {
- /* invert the alpha channel (in tRNS) unless the pixels are
- going to be expanded, in which case leave it for later */
- int i, istop;
- istop=(int)png_ptr->num_trans;
- for (i=0; i<istop; i++)
- png_ptr->trans[i] = (png_byte)(255 - png_ptr->trans[i]);
- }
- }
-#endif
-
- }
- }
-#endif
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED)
- png_ptr->background_1 = png_ptr->background;
-#endif
-#if defined(PNG_READ_GAMMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED)
-
- if ((color_type == PNG_COLOR_TYPE_PALETTE && png_ptr->num_trans != 0)
- && (fabs(png_ptr->screen_gamma * png_ptr->gamma - 1.0)
- < PNG_GAMMA_THRESHOLD))
- {
- int i, k;
- k=0;
- for (i=0; i<png_ptr->num_trans; i++)
- {
- if (png_ptr->trans[i] != 0 && png_ptr->trans[i] != 0xff)
- k=1; /* partial transparency is present */
- }
- if (k == 0)
- png_ptr->transformations &= ~PNG_GAMMA;
- }
-
- if ((png_ptr->transformations & (PNG_GAMMA | PNG_RGB_TO_GRAY)) &&
- png_ptr->gamma != 0.0)
- {
- png_build_gamma_table(png_ptr);
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->transformations & PNG_BACKGROUND)
- {
- if (color_type == PNG_COLOR_TYPE_PALETTE)
- {
- /* could skip if no transparency and
- */
- png_color back, back_1;
- png_colorp palette = png_ptr->palette;
- int num_palette = png_ptr->num_palette;
- int i;
- if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE)
- {
- back.red = png_ptr->gamma_table[png_ptr->background.red];
- back.green = png_ptr->gamma_table[png_ptr->background.green];
- back.blue = png_ptr->gamma_table[png_ptr->background.blue];
-
- back_1.red = png_ptr->gamma_to_1[png_ptr->background.red];
- back_1.green = png_ptr->gamma_to_1[png_ptr->background.green];
- back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue];
- }
- else
- {
- double g, gs;
-
- switch (png_ptr->background_gamma_type)
- {
- case PNG_BACKGROUND_GAMMA_SCREEN:
- g = (png_ptr->screen_gamma);
- gs = 1.0;
- break;
- case PNG_BACKGROUND_GAMMA_FILE:
- g = 1.0 / (png_ptr->gamma);
- gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
- break;
- case PNG_BACKGROUND_GAMMA_UNIQUE:
- g = 1.0 / (png_ptr->background_gamma);
- gs = 1.0 / (png_ptr->background_gamma *
- png_ptr->screen_gamma);
- break;
- default:
- g = 1.0; /* back_1 */
- gs = 1.0; /* back */
- }
-
- if ( fabs(gs - 1.0) < PNG_GAMMA_THRESHOLD)
- {
- back.red = (png_byte)png_ptr->background.red;
- back.green = (png_byte)png_ptr->background.green;
- back.blue = (png_byte)png_ptr->background.blue;
- }
- else
- {
- back.red = (png_byte)(pow(
- (double)png_ptr->background.red/255, gs) * 255.0 + .5);
- back.green = (png_byte)(pow(
- (double)png_ptr->background.green/255, gs) * 255.0 + .5);
- back.blue = (png_byte)(pow(
- (double)png_ptr->background.blue/255, gs) * 255.0 + .5);
- }
-
- back_1.red = (png_byte)(pow(
- (double)png_ptr->background.red/255, g) * 255.0 + .5);
- back_1.green = (png_byte)(pow(
- (double)png_ptr->background.green/255, g) * 255.0 + .5);
- back_1.blue = (png_byte)(pow(
- (double)png_ptr->background.blue/255, g) * 255.0 + .5);
- }
- for (i = 0; i < num_palette; i++)
- {
- if (i < (int)png_ptr->num_trans && png_ptr->trans[i] != 0xff)
- {
- if (png_ptr->trans[i] == 0)
- {
- palette[i] = back;
- }
- else /* if (png_ptr->trans[i] != 0xff) */
- {
- png_byte v, w;
-
- v = png_ptr->gamma_to_1[palette[i].red];
- png_composite(w, v, png_ptr->trans[i], back_1.red);
- palette[i].red = png_ptr->gamma_from_1[w];
-
- v = png_ptr->gamma_to_1[palette[i].green];
- png_composite(w, v, png_ptr->trans[i], back_1.green);
- palette[i].green = png_ptr->gamma_from_1[w];
-
- v = png_ptr->gamma_to_1[palette[i].blue];
- png_composite(w, v, png_ptr->trans[i], back_1.blue);
- palette[i].blue = png_ptr->gamma_from_1[w];
- }
- }
- else
- {
- palette[i].red = png_ptr->gamma_table[palette[i].red];
- palette[i].green = png_ptr->gamma_table[palette[i].green];
- palette[i].blue = png_ptr->gamma_table[palette[i].blue];
- }
- }
- /* Prevent the transformations being done again, and make sure
- * that the now spurious alpha channel is stripped - the code
- * has just reduced background composition and gamma correction
- * to a simple alpha channel strip.
- */
- png_ptr->transformations &= ~PNG_BACKGROUND;
- png_ptr->transformations &= ~PNG_GAMMA;
- png_ptr->transformations |= PNG_STRIP_ALPHA;
- }
- /* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN) */
- else
- /* color_type != PNG_COLOR_TYPE_PALETTE */
- {
- double m = (double)(((png_uint_32)1 << png_ptr->bit_depth) - 1);
- double g = 1.0;
- double gs = 1.0;
-
- switch (png_ptr->background_gamma_type)
- {
- case PNG_BACKGROUND_GAMMA_SCREEN:
- g = (png_ptr->screen_gamma);
- gs = 1.0;
- break;
- case PNG_BACKGROUND_GAMMA_FILE:
- g = 1.0 / (png_ptr->gamma);
- gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
- break;
- case PNG_BACKGROUND_GAMMA_UNIQUE:
- g = 1.0 / (png_ptr->background_gamma);
- gs = 1.0 / (png_ptr->background_gamma *
- png_ptr->screen_gamma);
- break;
- }
-
- png_ptr->background_1.gray = (png_uint_16)(pow(
- (double)png_ptr->background.gray / m, g) * m + .5);
- png_ptr->background.gray = (png_uint_16)(pow(
- (double)png_ptr->background.gray / m, gs) * m + .5);
-
- if ((png_ptr->background.red != png_ptr->background.green) ||
- (png_ptr->background.red != png_ptr->background.blue) ||
- (png_ptr->background.red != png_ptr->background.gray))
- {
- /* RGB or RGBA with color background */
- png_ptr->background_1.red = (png_uint_16)(pow(
- (double)png_ptr->background.red / m, g) * m + .5);
- png_ptr->background_1.green = (png_uint_16)(pow(
- (double)png_ptr->background.green / m, g) * m + .5);
- png_ptr->background_1.blue = (png_uint_16)(pow(
- (double)png_ptr->background.blue / m, g) * m + .5);
- png_ptr->background.red = (png_uint_16)(pow(
- (double)png_ptr->background.red / m, gs) * m + .5);
- png_ptr->background.green = (png_uint_16)(pow(
- (double)png_ptr->background.green / m, gs) * m + .5);
- png_ptr->background.blue = (png_uint_16)(pow(
- (double)png_ptr->background.blue / m, gs) * m + .5);
- }
- else
- {
- /* GRAY, GRAY ALPHA, RGB, or RGBA with gray background */
- png_ptr->background_1.red = png_ptr->background_1.green
- = png_ptr->background_1.blue = png_ptr->background_1.gray;
- png_ptr->background.red = png_ptr->background.green
- = png_ptr->background.blue = png_ptr->background.gray;
- }
- }
- }
- else
- /* transformation does not include PNG_BACKGROUND */
-#endif /* PNG_READ_BACKGROUND_SUPPORTED */
- if (color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_colorp palette = png_ptr->palette;
- int num_palette = png_ptr->num_palette;
- int i;
-
- for (i = 0; i < num_palette; i++)
- {
- palette[i].red = png_ptr->gamma_table[palette[i].red];
- palette[i].green = png_ptr->gamma_table[palette[i].green];
- palette[i].blue = png_ptr->gamma_table[palette[i].blue];
- }
-
- /* Done the gamma correction. */
- png_ptr->transformations &= ~PNG_GAMMA;
- }
- }
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
- else
-#endif
-#endif /* PNG_READ_GAMMA_SUPPORTED && PNG_FLOATING_POINT_SUPPORTED */
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
- /* No GAMMA transformation */
- if ((png_ptr->transformations & PNG_BACKGROUND) &&
- (color_type == PNG_COLOR_TYPE_PALETTE))
- {
- int i;
- int istop = (int)png_ptr->num_trans;
- png_color back;
- png_colorp palette = png_ptr->palette;
-
- back.red = (png_byte)png_ptr->background.red;
- back.green = (png_byte)png_ptr->background.green;
- back.blue = (png_byte)png_ptr->background.blue;
-
- for (i = 0; i < istop; i++)
- {
- if (png_ptr->trans[i] == 0)
- {
- palette[i] = back;
- }
- else if (png_ptr->trans[i] != 0xff)
- {
- /* The png_composite() macro is defined in png.h */
- png_composite(palette[i].red, palette[i].red,
- png_ptr->trans[i], back.red);
- png_composite(palette[i].green, palette[i].green,
- png_ptr->trans[i], back.green);
- png_composite(palette[i].blue, palette[i].blue,
- png_ptr->trans[i], back.blue);
- }
- }
-
- /* Handled alpha, still need to strip the channel. */
- png_ptr->transformations &= ~PNG_BACKGROUND;
- png_ptr->transformations |= PNG_STRIP_ALPHA;
- }
-#endif /* PNG_READ_BACKGROUND_SUPPORTED */
-
-#if defined(PNG_READ_SHIFT_SUPPORTED)
- if ((png_ptr->transformations & PNG_SHIFT) &&
- (color_type == PNG_COLOR_TYPE_PALETTE))
- {
- png_uint_16 i;
- png_uint_16 istop = png_ptr->num_palette;
- int sr = 8 - png_ptr->sig_bit.red;
- int sg = 8 - png_ptr->sig_bit.green;
- int sb = 8 - png_ptr->sig_bit.blue;
-
- if (sr < 0 || sr > 8)
- sr = 0;
- if (sg < 0 || sg > 8)
- sg = 0;
- if (sb < 0 || sb > 8)
- sb = 0;
- for (i = 0; i < istop; i++)
- {
- png_ptr->palette[i].red >>= sr;
- png_ptr->palette[i].green >>= sg;
- png_ptr->palette[i].blue >>= sb;
- }
- }
-#endif /* PNG_READ_SHIFT_SUPPORTED */
- }
-#if !defined(PNG_READ_GAMMA_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED) \
- && !defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr)
- return;
-#endif
-}
-
-/* Modify the info structure to reflect the transformations. The
- * info should be updated so a PNG file could be written with it,
- * assuming the transformations result in valid PNG data.
- */
-void /* PRIVATE */
-png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
-{
- png_debug(1, "in png_read_transform_info");
-#if defined(PNG_READ_EXPAND_SUPPORTED)
- if (png_ptr->transformations & PNG_EXPAND)
- {
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (png_ptr->num_trans &&
- (png_ptr->transformations & PNG_EXPAND_tRNS))
- info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
- else
- info_ptr->color_type = PNG_COLOR_TYPE_RGB;
- info_ptr->bit_depth = 8;
- info_ptr->num_trans = 0;
- }
- else
- {
- if (png_ptr->num_trans)
- {
- if (png_ptr->transformations & PNG_EXPAND_tRNS)
- info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
-#if 0 /* Removed from libpng-1.2.27 */
- else
- info_ptr->color_type |= PNG_COLOR_MASK_COLOR;
-#endif
- }
- if (info_ptr->bit_depth < 8)
- info_ptr->bit_depth = 8;
- info_ptr->num_trans = 0;
- }
- }
-#endif
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->transformations & PNG_BACKGROUND)
- {
- info_ptr->color_type &= ~PNG_COLOR_MASK_ALPHA;
- info_ptr->num_trans = 0;
- info_ptr->background = png_ptr->background;
- }
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (png_ptr->transformations & PNG_GAMMA)
- {
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- info_ptr->gamma = png_ptr->gamma;
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
- info_ptr->int_gamma = png_ptr->int_gamma;
-#endif
- }
-#endif
-
-#if defined(PNG_READ_16_TO_8_SUPPORTED)
- if ((png_ptr->transformations & PNG_16_TO_8) && (info_ptr->bit_depth == 16))
- info_ptr->bit_depth = 8;
-#endif
-
-#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
- if (png_ptr->transformations & PNG_GRAY_TO_RGB)
- info_ptr->color_type |= PNG_COLOR_MASK_COLOR;
-#endif
-
-#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
- if (png_ptr->transformations & PNG_RGB_TO_GRAY)
- info_ptr->color_type &= ~PNG_COLOR_MASK_COLOR;
-#endif
-
-#if defined(PNG_READ_DITHER_SUPPORTED)
- if (png_ptr->transformations & PNG_DITHER)
- {
- if (((info_ptr->color_type == PNG_COLOR_TYPE_RGB) ||
- (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)) &&
- png_ptr->palette_lookup && info_ptr->bit_depth == 8)
- {
- info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
- }
- }
-#endif
-
-#if defined(PNG_READ_PACK_SUPPORTED)
- if ((png_ptr->transformations & PNG_PACK) && (info_ptr->bit_depth < 8))
- info_ptr->bit_depth = 8;
-#endif
-
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- info_ptr->channels = 1;
- else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR)
- info_ptr->channels = 3;
- else
- info_ptr->channels = 1;
-
-#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
- if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)
- info_ptr->color_type &= ~PNG_COLOR_MASK_ALPHA;
-#endif
-
- if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA)
- info_ptr->channels++;
-
-#if defined(PNG_READ_FILLER_SUPPORTED)
- /* STRIP_ALPHA and FILLER allowed: MASK_ALPHA bit stripped above */
- if ((png_ptr->transformations & PNG_FILLER) &&
- ((info_ptr->color_type == PNG_COLOR_TYPE_RGB) ||
- (info_ptr->color_type == PNG_COLOR_TYPE_GRAY)))
- {
- info_ptr->channels++;
- /* if adding a true alpha channel not just filler */
-#if !defined(PNG_1_0_X)
- if (png_ptr->transformations & PNG_ADD_ALPHA)
- info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
-#endif
- }
-#endif
-
-#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) && \
-defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
- if (png_ptr->transformations & PNG_USER_TRANSFORM)
- {
- if (info_ptr->bit_depth < png_ptr->user_transform_depth)
- info_ptr->bit_depth = png_ptr->user_transform_depth;
- if (info_ptr->channels < png_ptr->user_transform_channels)
- info_ptr->channels = png_ptr->user_transform_channels;
- }
-#endif
-
- info_ptr->pixel_depth = (png_byte)(info_ptr->channels *
- info_ptr->bit_depth);
-
- info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, info_ptr->width);
-
-#if !defined(PNG_READ_EXPAND_SUPPORTED)
- if (png_ptr)
- return;
-#endif
-}
-
-/* Transform the row. The order of transformations is significant,
- * and is very touchy. If you add a transformation, take care to
- * decide how it fits in with the other transformations here.
- */
-void /* PRIVATE */
-png_do_read_transformations(png_structp png_ptr)
-{
- png_debug(1, "in png_do_read_transformations");
- if (png_ptr->row_buf == NULL)
- {
-#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
- char msg[50];
-
- png_snprintf2(msg, 50,
- "NULL row buffer for row %ld, pass %d", (long)png_ptr->row_number,
- png_ptr->pass);
- png_error(png_ptr, msg);
-#else
- png_error(png_ptr, "NULL row buffer");
-#endif
- }
-#ifdef PNG_WARN_UNINITIALIZED_ROW
- if (!(png_ptr->flags & PNG_FLAG_ROW_INIT))
- /* Application has failed to call either png_read_start_image()
- * or png_read_update_info() after setting transforms that expand
- * pixels. This check added to libpng-1.2.19 */
-#if (PNG_WARN_UNINITIALIZED_ROW==1)
- png_error(png_ptr, "Uninitialized row");
-#else
- png_warning(png_ptr, "Uninitialized row");
-#endif
-#endif
-
-#if defined(PNG_READ_EXPAND_SUPPORTED)
- if (png_ptr->transformations & PNG_EXPAND)
- {
- if (png_ptr->row_info.color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_do_expand_palette(&(png_ptr->row_info), png_ptr->row_buf + 1,
- png_ptr->palette, png_ptr->trans, png_ptr->num_trans);
- }
- else
- {
- if (png_ptr->num_trans &&
- (png_ptr->transformations & PNG_EXPAND_tRNS))
- png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1,
- &(png_ptr->trans_values));
- else
- png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1,
- NULL);
- }
- }
-#endif
-
-#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
- if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)
- png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
- PNG_FLAG_FILLER_AFTER | (png_ptr->flags & PNG_FLAG_STRIP_ALPHA));
-#endif
-
-#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
- if (png_ptr->transformations & PNG_RGB_TO_GRAY)
- {
- int rgb_error =
- png_do_rgb_to_gray(png_ptr, &(png_ptr->row_info), png_ptr->row_buf + 1);
- if (rgb_error)
- {
- png_ptr->rgb_to_gray_status=1;
- if ((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
- PNG_RGB_TO_GRAY_WARN)
- png_warning(png_ptr, "png_do_rgb_to_gray found nongray pixel");
- if ((png_ptr->transformations & PNG_RGB_TO_GRAY) ==
- PNG_RGB_TO_GRAY_ERR)
- png_error(png_ptr, "png_do_rgb_to_gray found nongray pixel");
- }
- }
-#endif
-
-/*
-From Andreas Dilger e-mail to png-implement, 26 March 1998:
-
- In most cases, the "simple transparency" should be done prior to doing
- gray-to-RGB, or you will have to test 3x as many bytes to check if a
- pixel is transparent. You would also need to make sure that the
- transparency information is upgraded to RGB.
-
- To summarize, the current flow is:
- - Gray + simple transparency -> compare 1 or 2 gray bytes and composite
- with background "in place" if transparent,
- convert to RGB if necessary
- - Gray + alpha -> composite with gray background and remove alpha bytes,
- convert to RGB if necessary
-
- To support RGB backgrounds for gray images we need:
- - Gray + simple transparency -> convert to RGB + simple transparency, compare
- 3 or 6 bytes and composite with background
- "in place" if transparent (3x compare/pixel
- compared to doing composite with gray bkgrnd)
- - Gray + alpha -> convert to RGB + alpha, composite with background and
- remove alpha bytes (3x float operations/pixel
- compared with composite on gray background)
-
- Greg's change will do this. The reason it wasn't done before is for
- performance, as this increases the per-pixel operations. If we would check
- in advance if the background was gray or RGB, and position the gray-to-RGB
- transform appropriately, then it would save a lot of work/time.
- */
-
-#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
- /* if gray -> RGB, do so now only if background is non-gray; else do later
- * for performance reasons */
- if ((png_ptr->transformations & PNG_GRAY_TO_RGB) &&
- !(png_ptr->mode & PNG_BACKGROUND_IS_GRAY))
- png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
- if ((png_ptr->transformations & PNG_BACKGROUND) &&
- ((png_ptr->num_trans != 0 ) ||
- (png_ptr->color_type & PNG_COLOR_MASK_ALPHA)))
- png_do_background(&(png_ptr->row_info), png_ptr->row_buf + 1,
- &(png_ptr->trans_values), &(png_ptr->background)
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- , &(png_ptr->background_1),
- png_ptr->gamma_table, png_ptr->gamma_from_1,
- png_ptr->gamma_to_1, png_ptr->gamma_16_table,
- png_ptr->gamma_16_from_1, png_ptr->gamma_16_to_1,
- png_ptr->gamma_shift
-#endif
-);
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if ((png_ptr->transformations & PNG_GAMMA) &&
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
- !((png_ptr->transformations & PNG_BACKGROUND) &&
- ((png_ptr->num_trans != 0) ||
- (png_ptr->color_type & PNG_COLOR_MASK_ALPHA))) &&
-#endif
- (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE))
- png_do_gamma(&(png_ptr->row_info), png_ptr->row_buf + 1,
- png_ptr->gamma_table, png_ptr->gamma_16_table,
- png_ptr->gamma_shift);
-#endif
-
-#if defined(PNG_READ_16_TO_8_SUPPORTED)
- if (png_ptr->transformations & PNG_16_TO_8)
- png_do_chop(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#if defined(PNG_READ_DITHER_SUPPORTED)
- if (png_ptr->transformations & PNG_DITHER)
- {
- png_do_dither((png_row_infop)&(png_ptr->row_info), png_ptr->row_buf + 1,
- png_ptr->palette_lookup, png_ptr->dither_index);
- if (png_ptr->row_info.rowbytes == (png_uint_32)0)
- png_error(png_ptr, "png_do_dither returned rowbytes=0");
- }
-#endif
-
-#if defined(PNG_READ_INVERT_SUPPORTED)
- if (png_ptr->transformations & PNG_INVERT_MONO)
- png_do_invert(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#if defined(PNG_READ_SHIFT_SUPPORTED)
- if (png_ptr->transformations & PNG_SHIFT)
- png_do_unshift(&(png_ptr->row_info), png_ptr->row_buf + 1,
- &(png_ptr->shift));
-#endif
-
-#if defined(PNG_READ_PACK_SUPPORTED)
- if (png_ptr->transformations & PNG_PACK)
- png_do_unpack(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#if defined(PNG_READ_BGR_SUPPORTED)
- if (png_ptr->transformations & PNG_BGR)
- png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_PACKSWAP)
- png_do_packswap(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
- /* if gray -> RGB, do so now only if we did not do so above */
- if ((png_ptr->transformations & PNG_GRAY_TO_RGB) &&
- (png_ptr->mode & PNG_BACKGROUND_IS_GRAY))
- png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#if defined(PNG_READ_FILLER_SUPPORTED)
- if (png_ptr->transformations & PNG_FILLER)
- png_do_read_filler(&(png_ptr->row_info), png_ptr->row_buf + 1,
- (png_uint_32)png_ptr->filler, png_ptr->flags);
-#endif
-
-#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
- if (png_ptr->transformations & PNG_INVERT_ALPHA)
- png_do_read_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED)
- if (png_ptr->transformations & PNG_SWAP_ALPHA)
- png_do_read_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#if defined(PNG_READ_SWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_SWAP_BYTES)
- png_do_swap(&(png_ptr->row_info), png_ptr->row_buf + 1);
-#endif
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
- if (png_ptr->transformations & PNG_USER_TRANSFORM)
- {
- if (png_ptr->read_user_transform_fn != NULL)
- (*(png_ptr->read_user_transform_fn)) /* user read transform function */
- (png_ptr, /* png_ptr */
- &(png_ptr->row_info), /* row_info: */
- /* png_uint_32 width; width of row */
- /* png_uint_32 rowbytes; number of bytes in row */
- /* png_byte color_type; color type of pixels */
- /* png_byte bit_depth; bit depth of samples */
- /* png_byte channels; number of channels (1-4) */
- /* png_byte pixel_depth; bits per pixel (depth*channels) */
- png_ptr->row_buf + 1); /* start of pixel data for row */
-#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
- if (png_ptr->user_transform_depth)
- png_ptr->row_info.bit_depth = png_ptr->user_transform_depth;
- if (png_ptr->user_transform_channels)
- png_ptr->row_info.channels = png_ptr->user_transform_channels;
-#endif
- png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth *
- png_ptr->row_info.channels);
- png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
- png_ptr->row_info.width);
- }
-#endif
-
-}
-
-#if defined(PNG_READ_PACK_SUPPORTED)
-/* Unpack pixels of 1, 2, or 4 bits per pixel into 1 byte per pixel,
- * without changing the actual values. Thus, if you had a row with
- * a bit depth of 1, you would end up with bytes that only contained
- * the numbers 0 or 1. If you would rather they contain 0 and 255, use
- * png_do_shift() after this.
- */
-void /* PRIVATE */
-png_do_unpack(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_unpack");
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- if (row != NULL && row_info != NULL && row_info->bit_depth < 8)
-#else
- if (row_info->bit_depth < 8)
-#endif
- {
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
-
- switch (row_info->bit_depth)
- {
- case 1:
- {
- png_bytep sp = row + (png_size_t)((row_width - 1) >> 3);
- png_bytep dp = row + (png_size_t)row_width - 1;
- png_uint_32 shift = 7 - (int)((row_width + 7) & 0x07);
- for (i = 0; i < row_width; i++)
- {
- *dp = (png_byte)((*sp >> shift) & 0x01);
- if (shift == 7)
- {
- shift = 0;
- sp--;
- }
- else
- shift++;
-
- dp--;
- }
- break;
- }
- case 2:
- {
-
- png_bytep sp = row + (png_size_t)((row_width - 1) >> 2);
- png_bytep dp = row + (png_size_t)row_width - 1;
- png_uint_32 shift = (int)((3 - ((row_width + 3) & 0x03)) << 1);
- for (i = 0; i < row_width; i++)
- {
- *dp = (png_byte)((*sp >> shift) & 0x03);
- if (shift == 6)
- {
- shift = 0;
- sp--;
- }
- else
- shift += 2;
-
- dp--;
- }
- break;
- }
- case 4:
- {
- png_bytep sp = row + (png_size_t)((row_width - 1) >> 1);
- png_bytep dp = row + (png_size_t)row_width - 1;
- png_uint_32 shift = (int)((1 - ((row_width + 1) & 0x01)) << 2);
- for (i = 0; i < row_width; i++)
- {
- *dp = (png_byte)((*sp >> shift) & 0x0f);
- if (shift == 4)
- {
- shift = 0;
- sp--;
- }
- else
- shift = 4;
-
- dp--;
- }
- break;
- }
- }
- row_info->bit_depth = 8;
- row_info->pixel_depth = (png_byte)(8 * row_info->channels);
- row_info->rowbytes = row_width * row_info->channels;
- }
-}
-#endif
-
-#if defined(PNG_READ_SHIFT_SUPPORTED)
-/* Reverse the effects of png_do_shift. This routine merely shifts the
- * pixels back to their significant bits values. Thus, if you have
- * a row of bit depth 8, but only 5 are significant, this will shift
- * the values back to 0 through 31.
- */
-void /* PRIVATE */
-png_do_unshift(png_row_infop row_info, png_bytep row, png_color_8p sig_bits)
-{
- png_debug(1, "in png_do_unshift");
- if (
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL && sig_bits != NULL &&
-#endif
- row_info->color_type != PNG_COLOR_TYPE_PALETTE)
- {
- int shift[4];
- int channels = 0;
- int c;
- png_uint_16 value = 0;
- png_uint_32 row_width = row_info->width;
-
- if (row_info->color_type & PNG_COLOR_MASK_COLOR)
- {
- shift[channels++] = row_info->bit_depth - sig_bits->red;
- shift[channels++] = row_info->bit_depth - sig_bits->green;
- shift[channels++] = row_info->bit_depth - sig_bits->blue;
- }
- else
- {
- shift[channels++] = row_info->bit_depth - sig_bits->gray;
- }
- if (row_info->color_type & PNG_COLOR_MASK_ALPHA)
- {
- shift[channels++] = row_info->bit_depth - sig_bits->alpha;
- }
-
- for (c = 0; c < channels; c++)
- {
- if (shift[c] <= 0)
- shift[c] = 0;
- else
- value = 1;
- }
-
- if (!value)
- return;
-
- switch (row_info->bit_depth)
- {
- case 2:
- {
- png_bytep bp;
- png_uint_32 i;
- png_uint_32 istop = row_info->rowbytes;
-
- for (bp = row, i = 0; i < istop; i++)
- {
- *bp >>= 1;
- *bp++ &= 0x55;
- }
- break;
- }
- case 4:
- {
- png_bytep bp = row;
- png_uint_32 i;
- png_uint_32 istop = row_info->rowbytes;
- png_byte mask = (png_byte)((((int)0xf0 >> shift[0]) & (int)0xf0) |
- (png_byte)((int)0xf >> shift[0]));
-
- for (i = 0; i < istop; i++)
- {
- *bp >>= shift[0];
- *bp++ &= mask;
- }
- break;
- }
- case 8:
- {
- png_bytep bp = row;
- png_uint_32 i;
- png_uint_32 istop = row_width * channels;
-
- for (i = 0; i < istop; i++)
- {
- *bp++ >>= shift[i%channels];
- }
- break;
- }
- case 16:
- {
- png_bytep bp = row;
- png_uint_32 i;
- png_uint_32 istop = channels * row_width;
-
- for (i = 0; i < istop; i++)
- {
- value = (png_uint_16)((*bp << 8) + *(bp + 1));
- value >>= shift[i%channels];
- *bp++ = (png_byte)(value >> 8);
- *bp++ = (png_byte)(value & 0xff);
- }
- break;
- }
- }
- }
-}
-#endif
-
-#if defined(PNG_READ_16_TO_8_SUPPORTED)
-/* chop rows of bit depth 16 down to 8 */
-void /* PRIVATE */
-png_do_chop(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_chop");
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- if (row != NULL && row_info != NULL && row_info->bit_depth == 16)
-#else
- if (row_info->bit_depth == 16)
-#endif
- {
- png_bytep sp = row;
- png_bytep dp = row;
- png_uint_32 i;
- png_uint_32 istop = row_info->width * row_info->channels;
-
- for (i = 0; i<istop; i++, sp += 2, dp++)
- {
-#if defined(PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED)
- /* This does a more accurate scaling of the 16-bit color
- * value, rather than a simple low-byte truncation.
- *
- * What the ideal calculation should be:
- * *dp = (((((png_uint_32)(*sp) << 8) |
- * (png_uint_32)(*(sp + 1))) * 255 + 127) / (png_uint_32)65535L;
- *
- * GRR: no, I think this is what it really should be:
- * *dp = (((((png_uint_32)(*sp) << 8) |
- * (png_uint_32)(*(sp + 1))) + 128L) / (png_uint_32)257L;
- *
- * GRR: here's the exact calculation with shifts:
- * temp = (((png_uint_32)(*sp) << 8) | (png_uint_32)(*(sp + 1))) + 128L;
- * *dp = (temp - (temp >> 8)) >> 8;
- *
- * Approximate calculation with shift/add instead of multiply/divide:
- * *dp = ((((png_uint_32)(*sp) << 8) |
- * (png_uint_32)((int)(*(sp + 1)) - *sp)) + 128) >> 8;
- *
- * What we actually do to avoid extra shifting and conversion:
- */
-
- *dp = *sp + ((((int)(*(sp + 1)) - *sp) > 128) ? 1 : 0);
-#else
- /* Simply discard the low order byte */
- *dp = *sp;
-#endif
- }
- row_info->bit_depth = 8;
- row_info->pixel_depth = (png_byte)(8 * row_info->channels);
- row_info->rowbytes = row_info->width * row_info->channels;
- }
-}
-#endif
-
-#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED)
-void /* PRIVATE */
-png_do_read_swap_alpha(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_read_swap_alpha");
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- if (row != NULL && row_info != NULL)
-#endif
- {
- png_uint_32 row_width = row_info->width;
- if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- /* This converts from RGBA to ARGB */
- if (row_info->bit_depth == 8)
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_byte save;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- save = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = save;
- }
- }
- /* This converts from RRGGBBAA to AARRGGBB */
- else
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_byte save[2];
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- save[0] = *(--sp);
- save[1] = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = save[0];
- *(--dp) = save[1];
- }
- }
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- /* This converts from GA to AG */
- if (row_info->bit_depth == 8)
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_byte save;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- save = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = save;
- }
- }
- /* This converts from GGAA to AAGG */
- else
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_byte save[2];
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- save[0] = *(--sp);
- save[1] = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = save[0];
- *(--dp) = save[1];
- }
- }
- }
- }
-}
-#endif
-
-#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
-void /* PRIVATE */
-png_do_read_invert_alpha(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_read_invert_alpha");
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- if (row != NULL && row_info != NULL)
-#endif
- {
- png_uint_32 row_width = row_info->width;
- if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- /* This inverts the alpha channel in RGBA */
- if (row_info->bit_depth == 8)
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = (png_byte)(255 - *(--sp));
-
-/* This does nothing:
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- We can replace it with:
-*/
- sp-=3;
- dp=sp;
- }
- }
- /* This inverts the alpha channel in RRGGBBAA */
- else
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = (png_byte)(255 - *(--sp));
- *(--dp) = (png_byte)(255 - *(--sp));
-
-/* This does nothing:
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- We can replace it with:
-*/
- sp-=6;
- dp=sp;
- }
- }
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- /* This inverts the alpha channel in GA */
- if (row_info->bit_depth == 8)
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = (png_byte)(255 - *(--sp));
- *(--dp) = *(--sp);
- }
- }
- /* This inverts the alpha channel in GGAA */
- else
- {
- png_bytep sp = row + row_info->rowbytes;
- png_bytep dp = sp;
- png_uint_32 i;
-
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = (png_byte)(255 - *(--sp));
- *(--dp) = (png_byte)(255 - *(--sp));
-/*
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
-*/
- sp-=2;
- dp=sp;
- }
- }
- }
- }
-}
-#endif
-
-#if defined(PNG_READ_FILLER_SUPPORTED)
-/* Add filler channel if we have RGB color */
-void /* PRIVATE */
-png_do_read_filler(png_row_infop row_info, png_bytep row,
- png_uint_32 filler, png_uint_32 flags)
-{
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- png_byte hi_filler = (png_byte)((filler>>8) & 0xff);
- png_byte lo_filler = (png_byte)(filler & 0xff);
-
- png_debug(1, "in png_do_read_filler");
- if (
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL &&
-#endif
- row_info->color_type == PNG_COLOR_TYPE_GRAY)
- {
- if (row_info->bit_depth == 8)
- {
- /* This changes the data from G to GX */
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- png_bytep sp = row + (png_size_t)row_width;
- png_bytep dp = sp + (png_size_t)row_width;
- for (i = 1; i < row_width; i++)
- {
- *(--dp) = lo_filler;
- *(--dp) = *(--sp);
- }
- *(--dp) = lo_filler;
- row_info->channels = 2;
- row_info->pixel_depth = 16;
- row_info->rowbytes = row_width * 2;
- }
- /* This changes the data from G to XG */
- else
- {
- png_bytep sp = row + (png_size_t)row_width;
- png_bytep dp = sp + (png_size_t)row_width;
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = *(--sp);
- *(--dp) = lo_filler;
- }
- row_info->channels = 2;
- row_info->pixel_depth = 16;
- row_info->rowbytes = row_width * 2;
- }
- }
- else if (row_info->bit_depth == 16)
- {
- /* This changes the data from GG to GGXX */
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- png_bytep sp = row + (png_size_t)row_width * 2;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 1; i < row_width; i++)
- {
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- }
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- row_info->channels = 2;
- row_info->pixel_depth = 32;
- row_info->rowbytes = row_width * 4;
- }
- /* This changes the data from GG to XXGG */
- else
- {
- png_bytep sp = row + (png_size_t)row_width * 2;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- }
- row_info->channels = 2;
- row_info->pixel_depth = 32;
- row_info->rowbytes = row_width * 4;
- }
- }
- } /* COLOR_TYPE == GRAY */
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- {
- if (row_info->bit_depth == 8)
- {
- /* This changes the data from RGB to RGBX */
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- png_bytep sp = row + (png_size_t)row_width * 3;
- png_bytep dp = sp + (png_size_t)row_width;
- for (i = 1; i < row_width; i++)
- {
- *(--dp) = lo_filler;
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- }
- *(--dp) = lo_filler;
- row_info->channels = 4;
- row_info->pixel_depth = 32;
- row_info->rowbytes = row_width * 4;
- }
- /* This changes the data from RGB to XRGB */
- else
- {
- png_bytep sp = row + (png_size_t)row_width * 3;
- png_bytep dp = sp + (png_size_t)row_width;
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = lo_filler;
- }
- row_info->channels = 4;
- row_info->pixel_depth = 32;
- row_info->rowbytes = row_width * 4;
- }
- }
- else if (row_info->bit_depth == 16)
- {
- /* This changes the data from RRGGBB to RRGGBBXX */
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- png_bytep sp = row + (png_size_t)row_width * 6;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 1; i < row_width; i++)
- {
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- }
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- row_info->channels = 4;
- row_info->pixel_depth = 64;
- row_info->rowbytes = row_width * 8;
- }
- /* This changes the data from RRGGBB to XXRRGGBB */
- else
- {
- png_bytep sp = row + (png_size_t)row_width * 6;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 0; i < row_width; i++)
- {
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = *(--sp);
- *(--dp) = hi_filler;
- *(--dp) = lo_filler;
- }
- row_info->channels = 4;
- row_info->pixel_depth = 64;
- row_info->rowbytes = row_width * 8;
- }
- }
- } /* COLOR_TYPE == RGB */
-}
-#endif
-
-#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
-/* expand grayscale files to RGB, with or without alpha */
-void /* PRIVATE */
-png_do_gray_to_rgb(png_row_infop row_info, png_bytep row)
-{
- png_uint_32 i;
- png_uint_32 row_width = row_info->width;
-
- png_debug(1, "in png_do_gray_to_rgb");
- if (row_info->bit_depth >= 8 &&
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL &&
-#endif
- !(row_info->color_type & PNG_COLOR_MASK_COLOR))
- {
- if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
- {
- if (row_info->bit_depth == 8)
- {
- png_bytep sp = row + (png_size_t)row_width - 1;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 0; i < row_width; i++)
- {
- *(dp--) = *sp;
- *(dp--) = *sp;
- *(dp--) = *(sp--);
- }
- }
- else
- {
- png_bytep sp = row + (png_size_t)row_width * 2 - 1;
- png_bytep dp = sp + (png_size_t)row_width * 4;
- for (i = 0; i < row_width; i++)
- {
- *(dp--) = *sp;
- *(dp--) = *(sp - 1);
- *(dp--) = *sp;
- *(dp--) = *(sp - 1);
- *(dp--) = *(sp--);
- *(dp--) = *(sp--);
- }
- }
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- if (row_info->bit_depth == 8)
- {
- png_bytep sp = row + (png_size_t)row_width * 2 - 1;
- png_bytep dp = sp + (png_size_t)row_width * 2;
- for (i = 0; i < row_width; i++)
- {
- *(dp--) = *(sp--);
- *(dp--) = *sp;
- *(dp--) = *sp;
- *(dp--) = *(sp--);
- }
- }
- else
- {
- png_bytep sp = row + (png_size_t)row_width * 4 - 1;
- png_bytep dp = sp + (png_size_t)row_width * 4;
- for (i = 0; i < row_width; i++)
- {
- *(dp--) = *(sp--);
- *(dp--) = *(sp--);
- *(dp--) = *sp;
- *(dp--) = *(sp - 1);
- *(dp--) = *sp;
- *(dp--) = *(sp - 1);
- *(dp--) = *(sp--);
- *(dp--) = *(sp--);
- }
- }
- }
- row_info->channels += (png_byte)2;
- row_info->color_type |= PNG_COLOR_MASK_COLOR;
- row_info->pixel_depth = (png_byte)(row_info->channels *
- row_info->bit_depth);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
-}
-#endif
-
-#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
-/* reduce RGB files to grayscale, with or without alpha
- * using the equation given in Poynton's ColorFAQ at
- * <http://www.inforamp.net/~poynton/> (THIS LINK IS DEAD June 2008)
- * New link:
- * <http://www.poynton.com/notes/colour_and_gamma/>
- * Charles Poynton poynton at poynton.com
- *
- * Y = 0.212671 * R + 0.715160 * G + 0.072169 * B
- *
- * We approximate this with
- *
- * Y = 0.21268 * R + 0.7151 * G + 0.07217 * B
- *
- * which can be expressed with integers as
- *
- * Y = (6969 * R + 23434 * G + 2365 * B)/32768
- *
- * The calculation is to be done in a linear colorspace.
- *
- * Other integer coefficents can be used via png_set_rgb_to_gray().
- */
-int /* PRIVATE */
-png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
-
-{
- png_uint_32 i;
-
- png_uint_32 row_width = row_info->width;
- int rgb_error = 0;
-
- png_debug(1, "in png_do_rgb_to_gray");
- if (
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL &&
-#endif
- (row_info->color_type & PNG_COLOR_MASK_COLOR))
- {
- png_uint_32 rc = png_ptr->rgb_to_gray_red_coeff;
- png_uint_32 gc = png_ptr->rgb_to_gray_green_coeff;
- png_uint_32 bc = png_ptr->rgb_to_gray_blue_coeff;
-
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- {
- if (row_info->bit_depth == 8)
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL)
- {
- png_bytep sp = row;
- png_bytep dp = row;
-
- for (i = 0; i < row_width; i++)
- {
- png_byte red = png_ptr->gamma_to_1[*(sp++)];
- png_byte green = png_ptr->gamma_to_1[*(sp++)];
- png_byte blue = png_ptr->gamma_to_1[*(sp++)];
- if (red != green || red != blue)
- {
- rgb_error |= 1;
- *(dp++) = png_ptr->gamma_from_1[
- (rc*red + gc*green + bc*blue)>>15];
- }
- else
- *(dp++) = *(sp - 1);
- }
- }
- else
-#endif
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_byte red = *(sp++);
- png_byte green = *(sp++);
- png_byte blue = *(sp++);
- if (red != green || red != blue)
- {
- rgb_error |= 1;
- *(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15);
- }
- else
- *(dp++) = *(sp - 1);
- }
- }
- }
-
- else /* RGB bit_depth == 16 */
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->gamma_16_to_1 != NULL &&
- png_ptr->gamma_16_from_1 != NULL)
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 red, green, blue, w;
-
- red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
- green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
- blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
-
- if (red == green && red == blue)
- w = red;
- else
- {
- png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >>
- png_ptr->gamma_shift][red>>8];
- png_uint_16 green_1 = png_ptr->gamma_16_to_1[(green&0xff) >>
- png_ptr->gamma_shift][green>>8];
- png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff) >>
- png_ptr->gamma_shift][blue>>8];
- png_uint_16 gray16 = (png_uint_16)((rc*red_1 + gc*green_1
- + bc*blue_1)>>15);
- w = png_ptr->gamma_16_from_1[(gray16&0xff) >>
- png_ptr->gamma_shift][gray16 >> 8];
- rgb_error |= 1;
- }
-
- *(dp++) = (png_byte)((w>>8) & 0xff);
- *(dp++) = (png_byte)(w & 0xff);
- }
- }
- else
-#endif
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 red, green, blue, gray16;
-
- red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
- green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
- blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
-
- if (red != green || red != blue)
- rgb_error |= 1;
- gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15);
- *(dp++) = (png_byte)((gray16>>8) & 0xff);
- *(dp++) = (png_byte)(gray16 & 0xff);
- }
- }
- }
- }
- if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- if (row_info->bit_depth == 8)
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL)
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_byte red = png_ptr->gamma_to_1[*(sp++)];
- png_byte green = png_ptr->gamma_to_1[*(sp++)];
- png_byte blue = png_ptr->gamma_to_1[*(sp++)];
- if (red != green || red != blue)
- rgb_error |= 1;
- *(dp++) = png_ptr->gamma_from_1
- [(rc*red + gc*green + bc*blue)>>15];
- *(dp++) = *(sp++); /* alpha */
- }
- }
- else
-#endif
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_byte red = *(sp++);
- png_byte green = *(sp++);
- png_byte blue = *(sp++);
- if (red != green || red != blue)
- rgb_error |= 1;
- *(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15);
- *(dp++) = *(sp++); /* alpha */
- }
- }
- }
- else /* RGBA bit_depth == 16 */
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->gamma_16_to_1 != NULL &&
- png_ptr->gamma_16_from_1 != NULL)
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 red, green, blue, w;
-
- red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
- green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
- blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2;
-
- if (red == green && red == blue)
- w = red;
- else
- {
- png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >>
- png_ptr->gamma_shift][red>>8];
- png_uint_16 green_1 = png_ptr->gamma_16_to_1[(green&0xff) >>
- png_ptr->gamma_shift][green>>8];
- png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff) >>
- png_ptr->gamma_shift][blue>>8];
- png_uint_16 gray16 = (png_uint_16)((rc * red_1
- + gc * green_1 + bc * blue_1)>>15);
- w = png_ptr->gamma_16_from_1[(gray16&0xff) >>
- png_ptr->gamma_shift][gray16 >> 8];
- rgb_error |= 1;
- }
-
- *(dp++) = (png_byte)((w>>8) & 0xff);
- *(dp++) = (png_byte)(w & 0xff);
- *(dp++) = *(sp++); /* alpha */
- *(dp++) = *(sp++);
- }
- }
- else
-#endif
- {
- png_bytep sp = row;
- png_bytep dp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 red, green, blue, gray16;
- red = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
- green = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
- blue = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2;
- if (red != green || red != blue)
- rgb_error |= 1;
- gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15);
- *(dp++) = (png_byte)((gray16>>8) & 0xff);
- *(dp++) = (png_byte)(gray16 & 0xff);
- *(dp++) = *(sp++); /* alpha */
- *(dp++) = *(sp++);
- }
- }
- }
- }
- row_info->channels -= (png_byte)2;
- row_info->color_type &= ~PNG_COLOR_MASK_COLOR;
- row_info->pixel_depth = (png_byte)(row_info->channels *
- row_info->bit_depth);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
- return rgb_error;
-}
-#endif
-
-/* Build a grayscale palette. Palette is assumed to be 1 << bit_depth
- * large of png_color. This lets grayscale images be treated as
- * paletted. Most useful for gamma correction and simplification
- * of code.
- */
-void PNGAPI
-png_build_grayscale_palette(int bit_depth, png_colorp palette)
-{
- int num_palette;
- int color_inc;
- int i;
- int v;
-
- png_debug(1, "in png_do_build_grayscale_palette");
- if (palette == NULL)
- return;
-
- switch (bit_depth)
- {
- case 1:
- num_palette = 2;
- color_inc = 0xff;
- break;
- case 2:
- num_palette = 4;
- color_inc = 0x55;
- break;
- case 4:
- num_palette = 16;
- color_inc = 0x11;
- break;
- case 8:
- num_palette = 256;
- color_inc = 1;
- break;
- default:
- num_palette = 0;
- color_inc = 0;
- break;
- }
-
- for (i = 0, v = 0; i < num_palette; i++, v += color_inc)
- {
- palette[i].red = (png_byte)v;
- palette[i].green = (png_byte)v;
- palette[i].blue = (png_byte)v;
- }
-}
-
-/* This function is currently unused. Do we really need it? */
-#if defined(PNG_READ_DITHER_SUPPORTED) && defined(PNG_CORRECT_PALETTE_SUPPORTED)
-void /* PRIVATE */
-png_correct_palette(png_structp png_ptr, png_colorp palette,
- int num_palette)
-{
- png_debug(1, "in png_correct_palette");
-#if defined(PNG_READ_BACKGROUND_SUPPORTED) && \
- defined(PNG_READ_GAMMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED)
- if (png_ptr->transformations & (PNG_GAMMA | PNG_BACKGROUND))
- {
- png_color back, back_1;
-
- if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE)
- {
- back.red = png_ptr->gamma_table[png_ptr->background.red];
- back.green = png_ptr->gamma_table[png_ptr->background.green];
- back.blue = png_ptr->gamma_table[png_ptr->background.blue];
-
- back_1.red = png_ptr->gamma_to_1[png_ptr->background.red];
- back_1.green = png_ptr->gamma_to_1[png_ptr->background.green];
- back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue];
- }
- else
- {
- double g;
-
- g = 1.0 / (png_ptr->background_gamma * png_ptr->screen_gamma);
-
- if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_SCREEN ||
- fabs(g - 1.0) < PNG_GAMMA_THRESHOLD)
- {
- back.red = png_ptr->background.red;
- back.green = png_ptr->background.green;
- back.blue = png_ptr->background.blue;
- }
- else
- {
- back.red =
- (png_byte)(pow((double)png_ptr->background.red/255, g) *
- 255.0 + 0.5);
- back.green =
- (png_byte)(pow((double)png_ptr->background.green/255, g) *
- 255.0 + 0.5);
- back.blue =
- (png_byte)(pow((double)png_ptr->background.blue/255, g) *
- 255.0 + 0.5);
- }
-
- g = 1.0 / png_ptr->background_gamma;
-
- back_1.red =
- (png_byte)(pow((double)png_ptr->background.red/255, g) *
- 255.0 + 0.5);
- back_1.green =
- (png_byte)(pow((double)png_ptr->background.green/255, g) *
- 255.0 + 0.5);
- back_1.blue =
- (png_byte)(pow((double)png_ptr->background.blue/255, g) *
- 255.0 + 0.5);
- }
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_uint_32 i;
-
- for (i = 0; i < (png_uint_32)num_palette; i++)
- {
- if (i < png_ptr->num_trans && png_ptr->trans[i] == 0)
- {
- palette[i] = back;
- }
- else if (i < png_ptr->num_trans && png_ptr->trans[i] != 0xff)
- {
- png_byte v, w;
-
- v = png_ptr->gamma_to_1[png_ptr->palette[i].red];
- png_composite(w, v, png_ptr->trans[i], back_1.red);
- palette[i].red = png_ptr->gamma_from_1[w];
-
- v = png_ptr->gamma_to_1[png_ptr->palette[i].green];
- png_composite(w, v, png_ptr->trans[i], back_1.green);
- palette[i].green = png_ptr->gamma_from_1[w];
-
- v = png_ptr->gamma_to_1[png_ptr->palette[i].blue];
- png_composite(w, v, png_ptr->trans[i], back_1.blue);
- palette[i].blue = png_ptr->gamma_from_1[w];
- }
- else
- {
- palette[i].red = png_ptr->gamma_table[palette[i].red];
- palette[i].green = png_ptr->gamma_table[palette[i].green];
- palette[i].blue = png_ptr->gamma_table[palette[i].blue];
- }
- }
- }
- else
- {
- int i;
-
- for (i = 0; i < num_palette; i++)
- {
- if (palette[i].red == (png_byte)png_ptr->trans_values.gray)
- {
- palette[i] = back;
- }
- else
- {
- palette[i].red = png_ptr->gamma_table[palette[i].red];
- palette[i].green = png_ptr->gamma_table[palette[i].green];
- palette[i].blue = png_ptr->gamma_table[palette[i].blue];
- }
- }
- }
- }
- else
-#endif
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (png_ptr->transformations & PNG_GAMMA)
- {
- int i;
-
- for (i = 0; i < num_palette; i++)
- {
- palette[i].red = png_ptr->gamma_table[palette[i].red];
- palette[i].green = png_ptr->gamma_table[palette[i].green];
- palette[i].blue = png_ptr->gamma_table[palette[i].blue];
- }
- }
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
- else
-#endif
-#endif
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
- if (png_ptr->transformations & PNG_BACKGROUND)
- {
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_color back;
-
- back.red = (png_byte)png_ptr->background.red;
- back.green = (png_byte)png_ptr->background.green;
- back.blue = (png_byte)png_ptr->background.blue;
-
- for (i = 0; i < (int)png_ptr->num_trans; i++)
- {
- if (png_ptr->trans[i] == 0)
- {
- palette[i].red = back.red;
- palette[i].green = back.green;
- palette[i].blue = back.blue;
- }
- else if (png_ptr->trans[i] != 0xff)
- {
- png_composite(palette[i].red, png_ptr->palette[i].red,
- png_ptr->trans[i], back.red);
- png_composite(palette[i].green, png_ptr->palette[i].green,
- png_ptr->trans[i], back.green);
- png_composite(palette[i].blue, png_ptr->palette[i].blue,
- png_ptr->trans[i], back.blue);
- }
- }
- }
- else /* assume grayscale palette (what else could it be?) */
- {
- int i;
-
- for (i = 0; i < num_palette; i++)
- {
- if (i == (png_byte)png_ptr->trans_values.gray)
- {
- palette[i].red = (png_byte)png_ptr->background.red;
- palette[i].green = (png_byte)png_ptr->background.green;
- palette[i].blue = (png_byte)png_ptr->background.blue;
- }
- }
- }
- }
-#endif
-}
-#endif
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED)
-/* Replace any alpha or transparency with the supplied background color.
- * "background" is already in the screen gamma, while "background_1" is
- * at a gamma of 1.0. Paletted files have already been taken care of.
- */
-void /* PRIVATE */
-png_do_background(png_row_infop row_info, png_bytep row,
- png_color_16p trans_values, png_color_16p background
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- , png_color_16p background_1,
- png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1,
- png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1,
- png_uint_16pp gamma_16_to_1, int gamma_shift
-#endif
- )
-{
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
- int shift;
-
- png_debug(1, "in png_do_background");
- if (background != NULL &&
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL &&
-#endif
- (!(row_info->color_type & PNG_COLOR_MASK_ALPHA) ||
- (row_info->color_type != PNG_COLOR_TYPE_PALETTE && trans_values)))
- {
- switch (row_info->color_type)
- {
- case PNG_COLOR_TYPE_GRAY:
- {
- switch (row_info->bit_depth)
- {
- case 1:
- {
- sp = row;
- shift = 7;
- for (i = 0; i < row_width; i++)
- {
- if ((png_uint_16)((*sp >> shift) & 0x01)
- == trans_values->gray)
- {
- *sp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff);
- *sp |= (png_byte)(background->gray << shift);
- }
- if (!shift)
- {
- shift = 7;
- sp++;
- }
- else
- shift--;
- }
- break;
- }
- case 2:
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (gamma_table != NULL)
- {
- sp = row;
- shift = 6;
- for (i = 0; i < row_width; i++)
- {
- if ((png_uint_16)((*sp >> shift) & 0x03)
- == trans_values->gray)
- {
- *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
- *sp |= (png_byte)(background->gray << shift);
- }
- else
- {
- png_byte p = (png_byte)((*sp >> shift) & 0x03);
- png_byte g = (png_byte)((gamma_table [p | (p << 2) |
- (p << 4) | (p << 6)] >> 6) & 0x03);
- *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
- *sp |= (png_byte)(g << shift);
- }
- if (!shift)
- {
- shift = 6;
- sp++;
- }
- else
- shift -= 2;
- }
- }
- else
-#endif
- {
- sp = row;
- shift = 6;
- for (i = 0; i < row_width; i++)
- {
- if ((png_uint_16)((*sp >> shift) & 0x03)
- == trans_values->gray)
- {
- *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
- *sp |= (png_byte)(background->gray << shift);
- }
- if (!shift)
- {
- shift = 6;
- sp++;
- }
- else
- shift -= 2;
- }
- }
- break;
- }
- case 4:
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (gamma_table != NULL)
- {
- sp = row;
- shift = 4;
- for (i = 0; i < row_width; i++)
- {
- if ((png_uint_16)((*sp >> shift) & 0x0f)
- == trans_values->gray)
- {
- *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
- *sp |= (png_byte)(background->gray << shift);
- }
- else
- {
- png_byte p = (png_byte)((*sp >> shift) & 0x0f);
- png_byte g = (png_byte)((gamma_table[p |
- (p << 4)] >> 4) & 0x0f);
- *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
- *sp |= (png_byte)(g << shift);
- }
- if (!shift)
- {
- shift = 4;
- sp++;
- }
- else
- shift -= 4;
- }
- }
- else
-#endif
- {
- sp = row;
- shift = 4;
- for (i = 0; i < row_width; i++)
- {
- if ((png_uint_16)((*sp >> shift) & 0x0f)
- == trans_values->gray)
- {
- *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
- *sp |= (png_byte)(background->gray << shift);
- }
- if (!shift)
- {
- shift = 4;
- sp++;
- }
- else
- shift -= 4;
- }
- }
- break;
- }
- case 8:
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (gamma_table != NULL)
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp++)
- {
- if (*sp == trans_values->gray)
- {
- *sp = (png_byte)background->gray;
- }
- else
- {
- *sp = gamma_table[*sp];
- }
- }
- }
- else
-#endif
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp++)
- {
- if (*sp == trans_values->gray)
- {
- *sp = (png_byte)background->gray;
- }
- }
- }
- break;
- }
- case 16:
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (gamma_16 != NULL)
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 2)
- {
- png_uint_16 v;
-
- v = (png_uint_16)(((*sp) << 8) + *(sp + 1));
- if (v == trans_values->gray)
- {
- /* background is already in screen gamma */
- *sp = (png_byte)((background->gray >> 8) & 0xff);
- *(sp + 1) = (png_byte)(background->gray & 0xff);
- }
- else
- {
- v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- }
- }
- }
- else
-#endif
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 2)
- {
- png_uint_16 v;
-
- v = (png_uint_16)(((*sp) << 8) + *(sp + 1));
- if (v == trans_values->gray)
- {
- *sp = (png_byte)((background->gray >> 8) & 0xff);
- *(sp + 1) = (png_byte)(background->gray & 0xff);
- }
- }
- }
- break;
- }
- }
- break;
- }
- case PNG_COLOR_TYPE_RGB:
- {
- if (row_info->bit_depth == 8)
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (gamma_table != NULL)
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 3)
- {
- if (*sp == trans_values->red &&
- *(sp + 1) == trans_values->green &&
- *(sp + 2) == trans_values->blue)
- {
- *sp = (png_byte)background->red;
- *(sp + 1) = (png_byte)background->green;
- *(sp + 2) = (png_byte)background->blue;
- }
- else
- {
- *sp = gamma_table[*sp];
- *(sp + 1) = gamma_table[*(sp + 1)];
- *(sp + 2) = gamma_table[*(sp + 2)];
- }
- }
- }
- else
-#endif
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 3)
- {
- if (*sp == trans_values->red &&
- *(sp + 1) == trans_values->green &&
- *(sp + 2) == trans_values->blue)
- {
- *sp = (png_byte)background->red;
- *(sp + 1) = (png_byte)background->green;
- *(sp + 2) = (png_byte)background->blue;
- }
- }
- }
- }
- else /* if (row_info->bit_depth == 16) */
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (gamma_16 != NULL)
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 6)
- {
- png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1));
- png_uint_16 g = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3));
- png_uint_16 b = (png_uint_16)(((*(sp+4)) << 8) + *(sp+5));
- if (r == trans_values->red && g == trans_values->green &&
- b == trans_values->blue)
- {
- /* background is already in screen gamma */
- *sp = (png_byte)((background->red >> 8) & 0xff);
- *(sp + 1) = (png_byte)(background->red & 0xff);
- *(sp + 2) = (png_byte)((background->green >> 8) & 0xff);
- *(sp + 3) = (png_byte)(background->green & 0xff);
- *(sp + 4) = (png_byte)((background->blue >> 8) & 0xff);
- *(sp + 5) = (png_byte)(background->blue & 0xff);
- }
- else
- {
- png_uint_16 v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)];
- *(sp + 2) = (png_byte)((v >> 8) & 0xff);
- *(sp + 3) = (png_byte)(v & 0xff);
- v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)];
- *(sp + 4) = (png_byte)((v >> 8) & 0xff);
- *(sp + 5) = (png_byte)(v & 0xff);
- }
- }
- }
- else
-#endif
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp += 6)
- {
- png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp+1));
- png_uint_16 g = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3));
- png_uint_16 b = (png_uint_16)(((*(sp+4)) << 8) + *(sp+5));
-
- if (r == trans_values->red && g == trans_values->green &&
- b == trans_values->blue)
- {
- *sp = (png_byte)((background->red >> 8) & 0xff);
- *(sp + 1) = (png_byte)(background->red & 0xff);
- *(sp + 2) = (png_byte)((background->green >> 8) & 0xff);
- *(sp + 3) = (png_byte)(background->green & 0xff);
- *(sp + 4) = (png_byte)((background->blue >> 8) & 0xff);
- *(sp + 5) = (png_byte)(background->blue & 0xff);
- }
- }
- }
- }
- break;
- }
- case PNG_COLOR_TYPE_GRAY_ALPHA:
- {
- if (row_info->bit_depth == 8)
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (gamma_to_1 != NULL && gamma_from_1 != NULL &&
- gamma_table != NULL)
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 2, dp++)
- {
- png_uint_16 a = *(sp + 1);
-
- if (a == 0xff)
- {
- *dp = gamma_table[*sp];
- }
- else if (a == 0)
- {
- /* background is already in screen gamma */
- *dp = (png_byte)background->gray;
- }
- else
- {
- png_byte v, w;
-
- v = gamma_to_1[*sp];
- png_composite(w, v, a, background_1->gray);
- *dp = gamma_from_1[w];
- }
- }
- }
- else
-#endif
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 2, dp++)
- {
- png_byte a = *(sp + 1);
-
- if (a == 0xff)
- {
- *dp = *sp;
- }
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- else if (a == 0)
- {
- *dp = (png_byte)background->gray;
- }
- else
- {
- png_composite(*dp, *sp, a, background_1->gray);
- }
-#else
- *dp = (png_byte)background->gray;
-#endif
- }
- }
- }
- else /* if (png_ptr->bit_depth == 16) */
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (gamma_16 != NULL && gamma_16_from_1 != NULL &&
- gamma_16_to_1 != NULL)
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 4, dp += 2)
- {
- png_uint_16 a = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3));
-
- if (a == (png_uint_16)0xffff)
- {
- png_uint_16 v;
-
- v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
- *dp = (png_byte)((v >> 8) & 0xff);
- *(dp + 1) = (png_byte)(v & 0xff);
- }
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- else if (a == 0)
-#else
- else
-#endif
- {
- /* background is already in screen gamma */
- *dp = (png_byte)((background->gray >> 8) & 0xff);
- *(dp + 1) = (png_byte)(background->gray & 0xff);
- }
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- else
- {
- png_uint_16 g, v, w;
-
- g = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp];
- png_composite_16(v, g, a, background_1->gray);
- w = gamma_16_from_1[(v&0xff) >> gamma_shift][v >> 8];
- *dp = (png_byte)((w >> 8) & 0xff);
- *(dp + 1) = (png_byte)(w & 0xff);
- }
-#endif
- }
- }
- else
-#endif
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 4, dp += 2)
- {
- png_uint_16 a = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3));
- if (a == (png_uint_16)0xffff)
- {
- png_memcpy(dp, sp, 2);
- }
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- else if (a == 0)
-#else
- else
-#endif
- {
- *dp = (png_byte)((background->gray >> 8) & 0xff);
- *(dp + 1) = (png_byte)(background->gray & 0xff);
- }
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- else
- {
- png_uint_16 g, v;
-
- g = (png_uint_16)(((*sp) << 8) + *(sp + 1));
- png_composite_16(v, g, a, background_1->gray);
- *dp = (png_byte)((v >> 8) & 0xff);
- *(dp + 1) = (png_byte)(v & 0xff);
- }
-#endif
- }
- }
- }
- break;
- }
- case PNG_COLOR_TYPE_RGB_ALPHA:
- {
- if (row_info->bit_depth == 8)
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (gamma_to_1 != NULL && gamma_from_1 != NULL &&
- gamma_table != NULL)
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 4, dp += 3)
- {
- png_byte a = *(sp + 3);
-
- if (a == 0xff)
- {
- *dp = gamma_table[*sp];
- *(dp + 1) = gamma_table[*(sp + 1)];
- *(dp + 2) = gamma_table[*(sp + 2)];
- }
- else if (a == 0)
- {
- /* background is already in screen gamma */
- *dp = (png_byte)background->red;
- *(dp + 1) = (png_byte)background->green;
- *(dp + 2) = (png_byte)background->blue;
- }
- else
- {
- png_byte v, w;
-
- v = gamma_to_1[*sp];
- png_composite(w, v, a, background_1->red);
- *dp = gamma_from_1[w];
- v = gamma_to_1[*(sp + 1)];
- png_composite(w, v, a, background_1->green);
- *(dp + 1) = gamma_from_1[w];
- v = gamma_to_1[*(sp + 2)];
- png_composite(w, v, a, background_1->blue);
- *(dp + 2) = gamma_from_1[w];
- }
- }
- }
- else
-#endif
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 4, dp += 3)
- {
- png_byte a = *(sp + 3);
-
- if (a == 0xff)
- {
- *dp = *sp;
- *(dp + 1) = *(sp + 1);
- *(dp + 2) = *(sp + 2);
- }
- else if (a == 0)
- {
- *dp = (png_byte)background->red;
- *(dp + 1) = (png_byte)background->green;
- *(dp + 2) = (png_byte)background->blue;
- }
- else
- {
- png_composite(*dp, *sp, a, background->red);
- png_composite(*(dp + 1), *(sp + 1), a,
- background->green);
- png_composite(*(dp + 2), *(sp + 2), a,
- background->blue);
- }
- }
- }
- }
- else /* if (row_info->bit_depth == 16) */
- {
-#if defined(PNG_READ_GAMMA_SUPPORTED)
- if (gamma_16 != NULL && gamma_16_from_1 != NULL &&
- gamma_16_to_1 != NULL)
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 8, dp += 6)
- {
- png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6))
- << 8) + (png_uint_16)(*(sp + 7)));
- if (a == (png_uint_16)0xffff)
- {
- png_uint_16 v;
-
- v = gamma_16[*(sp + 1) >> gamma_shift][*sp];
- *dp = (png_byte)((v >> 8) & 0xff);
- *(dp + 1) = (png_byte)(v & 0xff);
- v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)];
- *(dp + 2) = (png_byte)((v >> 8) & 0xff);
- *(dp + 3) = (png_byte)(v & 0xff);
- v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)];
- *(dp + 4) = (png_byte)((v >> 8) & 0xff);
- *(dp + 5) = (png_byte)(v & 0xff);
- }
- else if (a == 0)
- {
- /* background is already in screen gamma */
- *dp = (png_byte)((background->red >> 8) & 0xff);
- *(dp + 1) = (png_byte)(background->red & 0xff);
- *(dp + 2) = (png_byte)((background->green >> 8) & 0xff);
- *(dp + 3) = (png_byte)(background->green & 0xff);
- *(dp + 4) = (png_byte)((background->blue >> 8) & 0xff);
- *(dp + 5) = (png_byte)(background->blue & 0xff);
- }
- else
- {
- png_uint_16 v, w, x;
-
- v = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp];
- png_composite_16(w, v, a, background_1->red);
- x = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> 8];
- *dp = (png_byte)((x >> 8) & 0xff);
- *(dp + 1) = (png_byte)(x & 0xff);
- v = gamma_16_to_1[*(sp + 3) >> gamma_shift][*(sp + 2)];
- png_composite_16(w, v, a, background_1->green);
- x = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> 8];
- *(dp + 2) = (png_byte)((x >> 8) & 0xff);
- *(dp + 3) = (png_byte)(x & 0xff);
- v = gamma_16_to_1[*(sp + 5) >> gamma_shift][*(sp + 4)];
- png_composite_16(w, v, a, background_1->blue);
- x = gamma_16_from_1[(w & 0xff) >> gamma_shift][w >> 8];
- *(dp + 4) = (png_byte)((x >> 8) & 0xff);
- *(dp + 5) = (png_byte)(x & 0xff);
- }
- }
- }
- else
-#endif
- {
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++, sp += 8, dp += 6)
- {
- png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6))
- << 8) + (png_uint_16)(*(sp + 7)));
- if (a == (png_uint_16)0xffff)
- {
- png_memcpy(dp, sp, 6);
- }
- else if (a == 0)
- {
- *dp = (png_byte)((background->red >> 8) & 0xff);
- *(dp + 1) = (png_byte)(background->red & 0xff);
- *(dp + 2) = (png_byte)((background->green >> 8) & 0xff);
- *(dp + 3) = (png_byte)(background->green & 0xff);
- *(dp + 4) = (png_byte)((background->blue >> 8) & 0xff);
- *(dp + 5) = (png_byte)(background->blue & 0xff);
- }
- else
- {
- png_uint_16 v;
-
- png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1));
- png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8)
- + *(sp + 3));
- png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8)
- + *(sp + 5));
-
- png_composite_16(v, r, a, background->red);
- *dp = (png_byte)((v >> 8) & 0xff);
- *(dp + 1) = (png_byte)(v & 0xff);
- png_composite_16(v, g, a, background->green);
- *(dp + 2) = (png_byte)((v >> 8) & 0xff);
- *(dp + 3) = (png_byte)(v & 0xff);
- png_composite_16(v, b, a, background->blue);
- *(dp + 4) = (png_byte)((v >> 8) & 0xff);
- *(dp + 5) = (png_byte)(v & 0xff);
- }
- }
- }
- }
- break;
- }
- }
-
- if (row_info->color_type & PNG_COLOR_MASK_ALPHA)
- {
- row_info->color_type &= ~PNG_COLOR_MASK_ALPHA;
- row_info->channels--;
- row_info->pixel_depth = (png_byte)(row_info->channels *
- row_info->bit_depth);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
- }
-}
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED)
-/* Gamma correct the image, avoiding the alpha channel. Make sure
- * you do this after you deal with the transparency issue on grayscale
- * or RGB images. If your bit depth is 8, use gamma_table, if it
- * is 16, use gamma_16_table and gamma_shift. Build these with
- * build_gamma_table().
- */
-void /* PRIVATE */
-png_do_gamma(png_row_infop row_info, png_bytep row,
- png_bytep gamma_table, png_uint_16pp gamma_16_table,
- int gamma_shift)
-{
- png_bytep sp;
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
-
- png_debug(1, "in png_do_gamma");
- if (
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL &&
-#endif
- ((row_info->bit_depth <= 8 && gamma_table != NULL) ||
- (row_info->bit_depth == 16 && gamma_16_table != NULL)))
- {
- switch (row_info->color_type)
- {
- case PNG_COLOR_TYPE_RGB:
- {
- if (row_info->bit_depth == 8)
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- *sp = gamma_table[*sp];
- sp++;
- *sp = gamma_table[*sp];
- sp++;
- *sp = gamma_table[*sp];
- sp++;
- }
- }
- else /* if (row_info->bit_depth == 16) */
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 v;
-
- v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
- v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
- v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
- }
- }
- break;
- }
- case PNG_COLOR_TYPE_RGB_ALPHA:
- {
- if (row_info->bit_depth == 8)
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- *sp = gamma_table[*sp];
- sp++;
- *sp = gamma_table[*sp];
- sp++;
- *sp = gamma_table[*sp];
- sp++;
- sp++;
- }
- }
- else /* if (row_info->bit_depth == 16) */
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
- v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
- v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 4;
- }
- }
- break;
- }
- case PNG_COLOR_TYPE_GRAY_ALPHA:
- {
- if (row_info->bit_depth == 8)
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- *sp = gamma_table[*sp];
- sp += 2;
- }
- }
- else /* if (row_info->bit_depth == 16) */
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 4;
- }
- }
- break;
- }
- case PNG_COLOR_TYPE_GRAY:
- {
- if (row_info->bit_depth == 2)
- {
- sp = row;
- for (i = 0; i < row_width; i += 4)
- {
- int a = *sp & 0xc0;
- int b = *sp & 0x30;
- int c = *sp & 0x0c;
- int d = *sp & 0x03;
-
- *sp = (png_byte)(
- ((((int)gamma_table[a|(a>>2)|(a>>4)|(a>>6)]) ) & 0xc0)|
- ((((int)gamma_table[(b<<2)|b|(b>>2)|(b>>4)])>>2) & 0x30)|
- ((((int)gamma_table[(c<<4)|(c<<2)|c|(c>>2)])>>4) & 0x0c)|
- ((((int)gamma_table[(d<<6)|(d<<4)|(d<<2)|d])>>6) ));
- sp++;
- }
- }
- if (row_info->bit_depth == 4)
- {
- sp = row;
- for (i = 0; i < row_width; i += 2)
- {
- int msb = *sp & 0xf0;
- int lsb = *sp & 0x0f;
-
- *sp = (png_byte)((((int)gamma_table[msb | (msb >> 4)]) & 0xf0)
- | (((int)gamma_table[(lsb << 4) | lsb]) >> 4));
- sp++;
- }
- }
- else if (row_info->bit_depth == 8)
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- *sp = gamma_table[*sp];
- sp++;
- }
- }
- else if (row_info->bit_depth == 16)
- {
- sp = row;
- for (i = 0; i < row_width; i++)
- {
- png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp];
- *sp = (png_byte)((v >> 8) & 0xff);
- *(sp + 1) = (png_byte)(v & 0xff);
- sp += 2;
- }
- }
- break;
- }
- }
- }
-}
-#endif
-
-#if defined(PNG_READ_EXPAND_SUPPORTED)
-/* Expands a palette row to an RGB or RGBA row depending
- * upon whether you supply trans and num_trans.
- */
-void /* PRIVATE */
-png_do_expand_palette(png_row_infop row_info, png_bytep row,
- png_colorp palette, png_bytep trans, int num_trans)
-{
- int shift, value;
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
-
- png_debug(1, "in png_do_expand_palette");
- if (
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL &&
-#endif
- row_info->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (row_info->bit_depth < 8)
- {
- switch (row_info->bit_depth)
- {
- case 1:
- {
- sp = row + (png_size_t)((row_width - 1) >> 3);
- dp = row + (png_size_t)row_width - 1;
- shift = 7 - (int)((row_width + 7) & 0x07);
- for (i = 0; i < row_width; i++)
- {
- if ((*sp >> shift) & 0x01)
- *dp = 1;
- else
- *dp = 0;
- if (shift == 7)
- {
- shift = 0;
- sp--;
- }
- else
- shift++;
-
- dp--;
- }
- break;
- }
- case 2:
- {
- sp = row + (png_size_t)((row_width - 1) >> 2);
- dp = row + (png_size_t)row_width - 1;
- shift = (int)((3 - ((row_width + 3) & 0x03)) << 1);
- for (i = 0; i < row_width; i++)
- {
- value = (*sp >> shift) & 0x03;
- *dp = (png_byte)value;
- if (shift == 6)
- {
- shift = 0;
- sp--;
- }
- else
- shift += 2;
-
- dp--;
- }
- break;
- }
- case 4:
- {
- sp = row + (png_size_t)((row_width - 1) >> 1);
- dp = row + (png_size_t)row_width - 1;
- shift = (int)((row_width & 0x01) << 2);
- for (i = 0; i < row_width; i++)
- {
- value = (*sp >> shift) & 0x0f;
- *dp = (png_byte)value;
- if (shift == 4)
- {
- shift = 0;
- sp--;
- }
- else
- shift += 4;
-
- dp--;
- }
- break;
- }
- }
- row_info->bit_depth = 8;
- row_info->pixel_depth = 8;
- row_info->rowbytes = row_width;
- }
- switch (row_info->bit_depth)
- {
- case 8:
- {
- if (trans != NULL)
- {
- sp = row + (png_size_t)row_width - 1;
- dp = row + (png_size_t)(row_width << 2) - 1;
-
- for (i = 0; i < row_width; i++)
- {
- if ((int)(*sp) >= num_trans)
- *dp-- = 0xff;
- else
- *dp-- = trans[*sp];
- *dp-- = palette[*sp].blue;
- *dp-- = palette[*sp].green;
- *dp-- = palette[*sp].red;
- sp--;
- }
- row_info->bit_depth = 8;
- row_info->pixel_depth = 32;
- row_info->rowbytes = row_width * 4;
- row_info->color_type = 6;
- row_info->channels = 4;
- }
- else
- {
- sp = row + (png_size_t)row_width - 1;
- dp = row + (png_size_t)(row_width * 3) - 1;
-
- for (i = 0; i < row_width; i++)
- {
- *dp-- = palette[*sp].blue;
- *dp-- = palette[*sp].green;
- *dp-- = palette[*sp].red;
- sp--;
- }
- row_info->bit_depth = 8;
- row_info->pixel_depth = 24;
- row_info->rowbytes = row_width * 3;
- row_info->color_type = 2;
- row_info->channels = 3;
- }
- break;
- }
- }
- }
-}
-
-/* If the bit depth < 8, it is expanded to 8. Also, if the already
- * expanded transparency value is supplied, an alpha channel is built.
- */
-void /* PRIVATE */
-png_do_expand(png_row_infop row_info, png_bytep row,
- png_color_16p trans_value)
-{
- int shift, value;
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
-
- png_debug(1, "in png_do_expand");
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- if (row != NULL && row_info != NULL)
-#endif
- {
- if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
- {
- png_uint_16 gray = (png_uint_16)(trans_value ? trans_value->gray : 0);
-
- if (row_info->bit_depth < 8)
- {
- switch (row_info->bit_depth)
- {
- case 1:
- {
- gray = (png_uint_16)((gray&0x01)*0xff);
- sp = row + (png_size_t)((row_width - 1) >> 3);
- dp = row + (png_size_t)row_width - 1;
- shift = 7 - (int)((row_width + 7) & 0x07);
- for (i = 0; i < row_width; i++)
- {
- if ((*sp >> shift) & 0x01)
- *dp = 0xff;
- else
- *dp = 0;
- if (shift == 7)
- {
- shift = 0;
- sp--;
- }
- else
- shift++;
-
- dp--;
- }
- break;
- }
- case 2:
- {
- gray = (png_uint_16)((gray&0x03)*0x55);
- sp = row + (png_size_t)((row_width - 1) >> 2);
- dp = row + (png_size_t)row_width - 1;
- shift = (int)((3 - ((row_width + 3) & 0x03)) << 1);
- for (i = 0; i < row_width; i++)
- {
- value = (*sp >> shift) & 0x03;
- *dp = (png_byte)(value | (value << 2) | (value << 4) |
- (value << 6));
- if (shift == 6)
- {
- shift = 0;
- sp--;
- }
- else
- shift += 2;
-
- dp--;
- }
- break;
- }
- case 4:
- {
- gray = (png_uint_16)((gray&0x0f)*0x11);
- sp = row + (png_size_t)((row_width - 1) >> 1);
- dp = row + (png_size_t)row_width - 1;
- shift = (int)((1 - ((row_width + 1) & 0x01)) << 2);
- for (i = 0; i < row_width; i++)
- {
- value = (*sp >> shift) & 0x0f;
- *dp = (png_byte)(value | (value << 4));
- if (shift == 4)
- {
- shift = 0;
- sp--;
- }
- else
- shift = 4;
-
- dp--;
- }
- break;
- }
- }
- row_info->bit_depth = 8;
- row_info->pixel_depth = 8;
- row_info->rowbytes = row_width;
- }
-
- if (trans_value != NULL)
- {
- if (row_info->bit_depth == 8)
- {
- gray = gray & 0xff;
- sp = row + (png_size_t)row_width - 1;
- dp = row + (png_size_t)(row_width << 1) - 1;
- for (i = 0; i < row_width; i++)
- {
- if (*sp == gray)
- *dp-- = 0;
- else
- *dp-- = 0xff;
- *dp-- = *sp--;
- }
- }
- else if (row_info->bit_depth == 16)
- {
- png_byte gray_high = (gray >> 8) & 0xff;
- png_byte gray_low = gray & 0xff;
- sp = row + row_info->rowbytes - 1;
- dp = row + (row_info->rowbytes << 1) - 1;
- for (i = 0; i < row_width; i++)
- {
- if (*(sp - 1) == gray_high && *(sp) == gray_low)
- {
- *dp-- = 0;
- *dp-- = 0;
- }
- else
- {
- *dp-- = 0xff;
- *dp-- = 0xff;
- }
- *dp-- = *sp--;
- *dp-- = *sp--;
- }
- }
- row_info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
- row_info->channels = 2;
- row_info->pixel_depth = (png_byte)(row_info->bit_depth << 1);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth,
- row_width);
- }
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB && trans_value)
- {
- if (row_info->bit_depth == 8)
- {
- png_byte red = trans_value->red & 0xff;
- png_byte green = trans_value->green & 0xff;
- png_byte blue = trans_value->blue & 0xff;
- sp = row + (png_size_t)row_info->rowbytes - 1;
- dp = row + (png_size_t)(row_width << 2) - 1;
- for (i = 0; i < row_width; i++)
- {
- if (*(sp - 2) == red && *(sp - 1) == green && *(sp) == blue)
- *dp-- = 0;
- else
- *dp-- = 0xff;
- *dp-- = *sp--;
- *dp-- = *sp--;
- *dp-- = *sp--;
- }
- }
- else if (row_info->bit_depth == 16)
- {
- png_byte red_high = (trans_value->red >> 8) & 0xff;
- png_byte green_high = (trans_value->green >> 8) & 0xff;
- png_byte blue_high = (trans_value->blue >> 8) & 0xff;
- png_byte red_low = trans_value->red & 0xff;
- png_byte green_low = trans_value->green & 0xff;
- png_byte blue_low = trans_value->blue & 0xff;
- sp = row + row_info->rowbytes - 1;
- dp = row + (png_size_t)(row_width << 3) - 1;
- for (i = 0; i < row_width; i++)
- {
- if (*(sp - 5) == red_high &&
- *(sp - 4) == red_low &&
- *(sp - 3) == green_high &&
- *(sp - 2) == green_low &&
- *(sp - 1) == blue_high &&
- *(sp ) == blue_low)
- {
- *dp-- = 0;
- *dp-- = 0;
- }
- else
- {
- *dp-- = 0xff;
- *dp-- = 0xff;
- }
- *dp-- = *sp--;
- *dp-- = *sp--;
- *dp-- = *sp--;
- *dp-- = *sp--;
- *dp-- = *sp--;
- *dp-- = *sp--;
- }
- }
- row_info->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
- row_info->channels = 4;
- row_info->pixel_depth = (png_byte)(row_info->bit_depth << 2);
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
- }
-}
-#endif
-
-#if defined(PNG_READ_DITHER_SUPPORTED)
-void /* PRIVATE */
-png_do_dither(png_row_infop row_info, png_bytep row,
- png_bytep palette_lookup, png_bytep dither_lookup)
-{
- png_bytep sp, dp;
- png_uint_32 i;
- png_uint_32 row_width=row_info->width;
-
- png_debug(1, "in png_do_dither");
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- if (row != NULL && row_info != NULL)
-#endif
- {
- if (row_info->color_type == PNG_COLOR_TYPE_RGB &&
- palette_lookup && row_info->bit_depth == 8)
- {
- int r, g, b, p;
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++)
- {
- r = *sp++;
- g = *sp++;
- b = *sp++;
-
- /* this looks real messy, but the compiler will reduce
- it down to a reasonable formula. For example, with
- 5 bits per color, we get:
- p = (((r >> 3) & 0x1f) << 10) |
- (((g >> 3) & 0x1f) << 5) |
- ((b >> 3) & 0x1f);
- */
- p = (((r >> (8 - PNG_DITHER_RED_BITS)) &
- ((1 << PNG_DITHER_RED_BITS) - 1)) <<
- (PNG_DITHER_GREEN_BITS + PNG_DITHER_BLUE_BITS)) |
- (((g >> (8 - PNG_DITHER_GREEN_BITS)) &
- ((1 << PNG_DITHER_GREEN_BITS) - 1)) <<
- (PNG_DITHER_BLUE_BITS)) |
- ((b >> (8 - PNG_DITHER_BLUE_BITS)) &
- ((1 << PNG_DITHER_BLUE_BITS) - 1));
-
- *dp++ = palette_lookup[p];
- }
- row_info->color_type = PNG_COLOR_TYPE_PALETTE;
- row_info->channels = 1;
- row_info->pixel_depth = row_info->bit_depth;
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
- palette_lookup != NULL && row_info->bit_depth == 8)
- {
- int r, g, b, p;
- sp = row;
- dp = row;
- for (i = 0; i < row_width; i++)
- {
- r = *sp++;
- g = *sp++;
- b = *sp++;
- sp++;
-
- p = (((r >> (8 - PNG_DITHER_RED_BITS)) &
- ((1 << PNG_DITHER_RED_BITS) - 1)) <<
- (PNG_DITHER_GREEN_BITS + PNG_DITHER_BLUE_BITS)) |
- (((g >> (8 - PNG_DITHER_GREEN_BITS)) &
- ((1 << PNG_DITHER_GREEN_BITS) - 1)) <<
- (PNG_DITHER_BLUE_BITS)) |
- ((b >> (8 - PNG_DITHER_BLUE_BITS)) &
- ((1 << PNG_DITHER_BLUE_BITS) - 1));
-
- *dp++ = palette_lookup[p];
- }
- row_info->color_type = PNG_COLOR_TYPE_PALETTE;
- row_info->channels = 1;
- row_info->pixel_depth = row_info->bit_depth;
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width);
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_PALETTE &&
- dither_lookup && row_info->bit_depth == 8)
- {
- sp = row;
- for (i = 0; i < row_width; i++, sp++)
- {
- *sp = dither_lookup[*sp];
- }
- }
- }
-}
-#endif
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-#if defined(PNG_READ_GAMMA_SUPPORTED)
-static PNG_CONST int png_gamma_shift[] =
- {0x10, 0x21, 0x42, 0x84, 0x110, 0x248, 0x550, 0xff0, 0x00};
-
-/* We build the 8- or 16-bit gamma tables here. Note that for 16-bit
- * tables, we don't make a full table if we are reducing to 8-bit in
- * the future. Note also how the gamma_16 tables are segmented so that
- * we don't need to allocate > 64K chunks for a full 16-bit table.
- */
-void /* PRIVATE */
-png_build_gamma_table(png_structp png_ptr)
-{
- png_debug(1, "in png_build_gamma_table");
-
- if (png_ptr->bit_depth <= 8)
- {
- int i;
- double g;
-
- if (png_ptr->screen_gamma > .000001)
- g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
- else
- g = 1.0;
-
- png_ptr->gamma_table = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)256);
-
- for (i = 0; i < 256; i++)
- {
- png_ptr->gamma_table[i] = (png_byte)(pow((double)i / 255.0,
- g) * 255.0 + .5);
- }
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
- defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
- if (png_ptr->transformations & ((PNG_BACKGROUND) | PNG_RGB_TO_GRAY))
- {
-
- g = 1.0 / (png_ptr->gamma);
-
- png_ptr->gamma_to_1 = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)256);
-
- for (i = 0; i < 256; i++)
- {
- png_ptr->gamma_to_1[i] = (png_byte)(pow((double)i / 255.0,
- g) * 255.0 + .5);
- }
-
-
- png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)256);
-
- if (png_ptr->screen_gamma > 0.000001)
- g = 1.0 / png_ptr->screen_gamma;
- else
- g = png_ptr->gamma; /* probably doing rgb_to_gray */
-
- for (i = 0; i < 256; i++)
- {
- png_ptr->gamma_from_1[i] = (png_byte)(pow((double)i / 255.0,
- g) * 255.0 + .5);
-
- }
- }
-#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_RGB_TO_GRAY_SUPPORTED */
- }
- else
- {
- double g;
- int i, j, shift, num;
- int sig_bit;
- png_uint_32 ig;
-
- if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
- {
- sig_bit = (int)png_ptr->sig_bit.red;
- if ((int)png_ptr->sig_bit.green > sig_bit)
- sig_bit = png_ptr->sig_bit.green;
- if ((int)png_ptr->sig_bit.blue > sig_bit)
- sig_bit = png_ptr->sig_bit.blue;
- }
- else
- {
- sig_bit = (int)png_ptr->sig_bit.gray;
- }
-
- if (sig_bit > 0)
- shift = 16 - sig_bit;
- else
- shift = 0;
-
- if (png_ptr->transformations & PNG_16_TO_8)
- {
- if (shift < (16 - PNG_MAX_GAMMA_8))
- shift = (16 - PNG_MAX_GAMMA_8);
- }
-
- if (shift > 8)
- shift = 8;
- if (shift < 0)
- shift = 0;
-
- png_ptr->gamma_shift = (png_byte)shift;
-
- num = (1 << (8 - shift));
-
- if (png_ptr->screen_gamma > .000001)
- g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma);
- else
- g = 1.0;
-
- png_ptr->gamma_16_table = (png_uint_16pp)png_malloc(png_ptr,
- (png_uint_32)(num * png_sizeof(png_uint_16p)));
- png_memset(png_ptr->gamma_16_table, 0, num * png_sizeof(png_uint_16p));
-
- if (png_ptr->transformations & (PNG_16_TO_8 | PNG_BACKGROUND))
- {
- double fin, fout;
- png_uint_32 last, max;
-
- for (i = 0; i < num; i++)
- {
- png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(256 * png_sizeof(png_uint_16)));
- }
-
- g = 1.0 / g;
- last = 0;
- for (i = 0; i < 256; i++)
- {
- fout = ((double)i + 0.5) / 256.0;
- fin = pow(fout, g);
- max = (png_uint_32)(fin * (double)((png_uint_32)num << 8));
- while (last <= max)
- {
- png_ptr->gamma_16_table[(int)(last & (0xff >> shift))]
- [(int)(last >> (8 - shift))] = (png_uint_16)(
- (png_uint_16)i | ((png_uint_16)i << 8));
- last++;
- }
- }
- while (last < ((png_uint_32)num << 8))
- {
- png_ptr->gamma_16_table[(int)(last & (0xff >> shift))]
- [(int)(last >> (8 - shift))] = (png_uint_16)65535L;
- last++;
- }
- }
- else
- {
- for (i = 0; i < num; i++)
- {
- png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(256 * png_sizeof(png_uint_16)));
-
- ig = (((png_uint_32)i * (png_uint_32)png_gamma_shift[shift]) >> 4);
- for (j = 0; j < 256; j++)
- {
- png_ptr->gamma_16_table[i][j] =
- (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
- 65535.0, g) * 65535.0 + .5);
- }
- }
- }
-
-#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \
- defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
- if (png_ptr->transformations & (PNG_BACKGROUND | PNG_RGB_TO_GRAY))
- {
-
- g = 1.0 / (png_ptr->gamma);
-
- png_ptr->gamma_16_to_1 = (png_uint_16pp)png_malloc(png_ptr,
- (png_uint_32)(num * png_sizeof(png_uint_16p )));
- png_memset(png_ptr->gamma_16_to_1, 0, num * png_sizeof(png_uint_16p));
-
- for (i = 0; i < num; i++)
- {
- png_ptr->gamma_16_to_1[i] = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(256 * png_sizeof(png_uint_16)));
-
- ig = (((png_uint_32)i *
- (png_uint_32)png_gamma_shift[shift]) >> 4);
- for (j = 0; j < 256; j++)
- {
- png_ptr->gamma_16_to_1[i][j] =
- (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
- 65535.0, g) * 65535.0 + .5);
- }
- }
-
- if (png_ptr->screen_gamma > 0.000001)
- g = 1.0 / png_ptr->screen_gamma;
- else
- g = png_ptr->gamma; /* probably doing rgb_to_gray */
-
- png_ptr->gamma_16_from_1 = (png_uint_16pp)png_malloc(png_ptr,
- (png_uint_32)(num * png_sizeof(png_uint_16p)));
- png_memset(png_ptr->gamma_16_from_1, 0,
- num * png_sizeof(png_uint_16p));
-
- for (i = 0; i < num; i++)
- {
- png_ptr->gamma_16_from_1[i] = (png_uint_16p)png_malloc(png_ptr,
- (png_uint_32)(256 * png_sizeof(png_uint_16)));
-
- ig = (((png_uint_32)i *
- (png_uint_32)png_gamma_shift[shift]) >> 4);
- for (j = 0; j < 256; j++)
- {
- png_ptr->gamma_16_from_1[i][j] =
- (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) /
- 65535.0, g) * 65535.0 + .5);
- }
- }
- }
-#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_RGB_TO_GRAY_SUPPORTED */
- }
-}
-#endif
-/* To do: install integer version of png_build_gamma_table here */
-#endif
-
-#if defined(PNG_MNG_FEATURES_SUPPORTED)
-/* undoes intrapixel differencing */
-void /* PRIVATE */
-png_do_read_intrapixel(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_read_intrapixel");
- if (
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL &&
-#endif
- (row_info->color_type & PNG_COLOR_MASK_COLOR))
- {
- int bytes_per_pixel;
- png_uint_32 row_width = row_info->width;
- if (row_info->bit_depth == 8)
- {
- png_bytep rp;
- png_uint_32 i;
-
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- bytes_per_pixel = 3;
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- bytes_per_pixel = 4;
- else
- return;
-
- for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
- {
- *(rp) = (png_byte)((256 + *rp + *(rp+1))&0xff);
- *(rp+2) = (png_byte)((256 + *(rp+2) + *(rp+1))&0xff);
- }
- }
- else if (row_info->bit_depth == 16)
- {
- png_bytep rp;
- png_uint_32 i;
-
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- bytes_per_pixel = 6;
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- bytes_per_pixel = 8;
- else
- return;
-
- for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel)
- {
- png_uint_32 s0 = (*(rp ) << 8) | *(rp + 1);
- png_uint_32 s1 = (*(rp + 2) << 8) | *(rp + 3);
- png_uint_32 s2 = (*(rp + 4) << 8) | *(rp + 5);
- png_uint_32 red = (png_uint_32)((s0 + s1 + 65536L) & 0xffffL);
- png_uint_32 blue = (png_uint_32)((s2 + s1 + 65536L) & 0xffffL);
- *(rp ) = (png_byte)((red >> 8) & 0xff);
- *(rp+1) = (png_byte)(red & 0xff);
- *(rp+4) = (png_byte)((blue >> 8) & 0xff);
- *(rp+5) = (png_byte)(blue & 0xff);
- }
- }
- }
-}
-#endif /* PNG_MNG_FEATURES_SUPPORTED */
-#endif /* PNG_READ_SUPPORTED */
diff --git a/navit/support/libpng/pngrutil.c b/navit/support/libpng/pngrutil.c
deleted file mode 100644
index f6f98598f..000000000
--- a/navit/support/libpng/pngrutil.c
+++ /dev/null
@@ -1,3223 +0,0 @@
-
-/* pngrutil.c - utilities to read a PNG file
- *
- * Last changed in libpng 1.2.36 [May 7, 2009]
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2009 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * This file contains routines that are only called from within
- * libpng itself during the course of reading an image.
- */
-
-#define PNG_INTERNAL
-#include "png.h"
-#if defined(PNG_READ_SUPPORTED)
-
-#if defined(_WIN32_WCE) && (_WIN32_WCE<0x500)
-# define WIN32_WCE_OLD
-#endif
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-# if defined(WIN32_WCE_OLD)
-/* strtod() function is not supported on WindowsCE */
-__inline double png_strtod(png_structp png_ptr, PNG_CONST char *nptr, char **endptr)
-{
- double result = 0;
- int len;
- wchar_t *str, *end;
-
- len = MultiByteToWideChar(CP_ACP, 0, nptr, -1, NULL, 0);
- str = (wchar_t *)png_malloc(png_ptr, len * png_sizeof(wchar_t));
- if ( NULL != str )
- {
- MultiByteToWideChar(CP_ACP, 0, nptr, -1, str, len);
- result = wcstod(str, &end);
- len = WideCharToMultiByte(CP_ACP, 0, end, -1, NULL, 0, NULL, NULL);
- *endptr = (char *)nptr + (png_strlen(nptr) - len + 1);
- png_free(png_ptr, str);
- }
- return result;
-}
-# else
-# define png_strtod(p,a,b) strtod(a,b)
-# endif
-#endif
-
-png_uint_32 PNGAPI
-png_get_uint_31(png_structp png_ptr, png_bytep buf)
-{
-#ifdef PNG_READ_BIG_ENDIAN_SUPPORTED
- png_uint_32 i = png_get_uint_32(buf);
-#else
- /* Avoid an extra function call by inlining the result. */
- png_uint_32 i = ((png_uint_32)(*buf) << 24) +
- ((png_uint_32)(*(buf + 1)) << 16) +
- ((png_uint_32)(*(buf + 2)) << 8) +
- (png_uint_32)(*(buf + 3));
-#endif
- if (i > PNG_UINT_31_MAX)
- png_error(png_ptr, "PNG unsigned integer out of range.");
- return (i);
-}
-#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED
-/* Grab an unsigned 32-bit integer from a buffer in big-endian format. */
-png_uint_32 PNGAPI
-png_get_uint_32(png_bytep buf)
-{
- png_uint_32 i = ((png_uint_32)(*buf) << 24) +
- ((png_uint_32)(*(buf + 1)) << 16) +
- ((png_uint_32)(*(buf + 2)) << 8) +
- (png_uint_32)(*(buf + 3));
-
- return (i);
-}
-
-/* Grab a signed 32-bit integer from a buffer in big-endian format. The
- * data is stored in the PNG file in two's complement format, and it is
- * assumed that the machine format for signed integers is the same. */
-png_int_32 PNGAPI
-png_get_int_32(png_bytep buf)
-{
- png_int_32 i = ((png_int_32)(*buf) << 24) +
- ((png_int_32)(*(buf + 1)) << 16) +
- ((png_int_32)(*(buf + 2)) << 8) +
- (png_int_32)(*(buf + 3));
-
- return (i);
-}
-
-/* Grab an unsigned 16-bit integer from a buffer in big-endian format. */
-png_uint_16 PNGAPI
-png_get_uint_16(png_bytep buf)
-{
- png_uint_16 i = (png_uint_16)(((png_uint_16)(*buf) << 8) +
- (png_uint_16)(*(buf + 1)));
-
- return (i);
-}
-#endif /* PNG_READ_BIG_ENDIAN_SUPPORTED */
-
-/* Read the chunk header (length + type name).
- * Put the type name into png_ptr->chunk_name, and return the length.
- */
-png_uint_32 /* PRIVATE */
-png_read_chunk_header(png_structp png_ptr)
-{
- png_byte buf[8];
- png_uint_32 length;
-
- /* read the length and the chunk name */
- png_read_data(png_ptr, buf, 8);
- length = png_get_uint_31(png_ptr, buf);
-
- /* put the chunk name into png_ptr->chunk_name */
- png_memcpy(png_ptr->chunk_name, buf + 4, 4);
-
- png_debug2(0, "Reading %s chunk, length = %lu",
- png_ptr->chunk_name, length);
-
- /* reset the crc and run it over the chunk name */
- png_reset_crc(png_ptr);
- png_calculate_crc(png_ptr, png_ptr->chunk_name, 4);
-
- /* check to see if chunk name is valid */
- png_check_chunk_name(png_ptr, png_ptr->chunk_name);
-
- return length;
-}
-
-/* Read data, and (optionally) run it through the CRC. */
-void /* PRIVATE */
-png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
-{
- if (png_ptr == NULL) return;
- png_read_data(png_ptr, buf, length);
- png_calculate_crc(png_ptr, buf, length);
-}
-
-/* Optionally skip data and then check the CRC. Depending on whether we
- are reading a ancillary or critical chunk, and how the program has set
- things up, we may calculate the CRC on the data and print a message.
- Returns '1' if there was a CRC error, '0' otherwise. */
-int /* PRIVATE */
-png_crc_finish(png_structp png_ptr, png_uint_32 skip)
-{
- png_size_t i;
- png_size_t istop = png_ptr->zbuf_size;
-
- for (i = (png_size_t)skip; i > istop; i -= istop)
- {
- png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
- }
- if (i)
- {
- png_crc_read(png_ptr, png_ptr->zbuf, i);
- }
-
- if (png_crc_error(png_ptr))
- {
- if (((png_ptr->chunk_name[0] & 0x20) && /* Ancillary */
- !(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) ||
- (!(png_ptr->chunk_name[0] & 0x20) && /* Critical */
- (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_USE)))
- {
- png_chunk_warning(png_ptr, "CRC error");
- }
- else
- {
- png_chunk_error(png_ptr, "CRC error");
- }
- return (1);
- }
-
- return (0);
-}
-
-/* Compare the CRC stored in the PNG file with that calculated by libpng from
- the data it has read thus far. */
-int /* PRIVATE */
-png_crc_error(png_structp png_ptr)
-{
- png_byte crc_bytes[4];
- png_uint_32 crc;
- int need_crc = 1;
-
- if (png_ptr->chunk_name[0] & 0x20) /* ancillary */
- {
- if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) ==
- (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN))
- need_crc = 0;
- }
- else /* critical */
- {
- if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE)
- need_crc = 0;
- }
-
- png_read_data(png_ptr, crc_bytes, 4);
-
- if (need_crc)
- {
- crc = png_get_uint_32(crc_bytes);
- return ((int)(crc != png_ptr->crc));
- }
- else
- return (0);
-}
-
-#if defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_READ_iTXt_SUPPORTED) || \
- defined(PNG_READ_iCCP_SUPPORTED)
-/*
- * Decompress trailing data in a chunk. The assumption is that chunkdata
- * points at an allocated area holding the contents of a chunk with a
- * trailing compressed part. What we get back is an allocated area
- * holding the original prefix part and an uncompressed version of the
- * trailing part (the malloc area passed in is freed).
- */
-void /* PRIVATE */
-png_decompress_chunk(png_structp png_ptr, int comp_type,
- png_size_t chunklength,
- png_size_t prefix_size, png_size_t *newlength)
-{
- static PNG_CONST char msg[] = "Error decoding compressed text";
- png_charp text;
- png_size_t text_size;
-
- if (comp_type == PNG_COMPRESSION_TYPE_BASE)
- {
- int ret = Z_OK;
- png_ptr->zstream.next_in = (png_bytep)(png_ptr->chunkdata + prefix_size);
- png_ptr->zstream.avail_in = (uInt)(chunklength - prefix_size);
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
-
- text_size = 0;
- text = NULL;
-
- while (png_ptr->zstream.avail_in)
- {
- ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
- if (ret != Z_OK && ret != Z_STREAM_END)
- {
- if (png_ptr->zstream.msg != NULL)
- png_warning(png_ptr, png_ptr->zstream.msg);
- else
- png_warning(png_ptr, msg);
- inflateReset(&png_ptr->zstream);
- png_ptr->zstream.avail_in = 0;
-
- if (text == NULL)
- {
- text_size = prefix_size + png_sizeof(msg) + 1;
- text = (png_charp)png_malloc_warn(png_ptr, text_size);
- if (text == NULL)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_error(png_ptr, "Not enough memory to decompress chunk");
- }
- png_memcpy(text, png_ptr->chunkdata, prefix_size);
- }
-
- text[text_size - 1] = 0x00;
-
- /* Copy what we can of the error message into the text chunk */
- text_size = (png_size_t)(chunklength -
- (text - png_ptr->chunkdata) - 1);
- if (text_size > png_sizeof(msg))
- text_size = png_sizeof(msg);
- png_memcpy(text + prefix_size, msg, text_size);
- break;
- }
- if (!png_ptr->zstream.avail_out || ret == Z_STREAM_END)
- {
- if (text == NULL)
- {
- text_size = prefix_size +
- png_ptr->zbuf_size - png_ptr->zstream.avail_out;
- text = (png_charp)png_malloc_warn(png_ptr, text_size + 1);
- if (text == NULL)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_error(png_ptr,
- "Not enough memory to decompress chunk.");
- }
- png_memcpy(text + prefix_size, png_ptr->zbuf,
- text_size - prefix_size);
- png_memcpy(text, png_ptr->chunkdata, prefix_size);
- *(text + text_size) = 0x00;
- }
- else
- {
- png_charp tmp;
-
- tmp = text;
- text = (png_charp)png_malloc_warn(png_ptr,
- (png_uint_32)(text_size +
- png_ptr->zbuf_size - png_ptr->zstream.avail_out + 1));
- if (text == NULL)
- {
- png_free(png_ptr, tmp);
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_error(png_ptr,
- "Not enough memory to decompress chunk..");
- }
- png_memcpy(text, tmp, text_size);
- png_free(png_ptr, tmp);
- png_memcpy(text + text_size, png_ptr->zbuf,
- (png_ptr->zbuf_size - png_ptr->zstream.avail_out));
- text_size += png_ptr->zbuf_size - png_ptr->zstream.avail_out;
- *(text + text_size) = 0x00;
- }
- if (ret == Z_STREAM_END)
- break;
- else
- {
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
- }
- }
- }
- if (ret != Z_STREAM_END)
- {
-#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
- char umsg[52];
-
- if (ret == Z_BUF_ERROR)
- png_snprintf(umsg, 52,
- "Buffer error in compressed datastream in %s chunk",
- png_ptr->chunk_name);
- else if (ret == Z_DATA_ERROR)
- png_snprintf(umsg, 52,
- "Data error in compressed datastream in %s chunk",
- png_ptr->chunk_name);
- else
- png_snprintf(umsg, 52,
- "Incomplete compressed datastream in %s chunk",
- png_ptr->chunk_name);
- png_warning(png_ptr, umsg);
-#else
- png_warning(png_ptr,
- "Incomplete compressed datastream in chunk other than IDAT");
-#endif
- text_size = prefix_size;
- if (text == NULL)
- {
- text = (png_charp)png_malloc_warn(png_ptr, text_size+1);
- if (text == NULL)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_error(png_ptr, "Not enough memory for text.");
- }
- png_memcpy(text, png_ptr->chunkdata, prefix_size);
- }
- *(text + text_size) = 0x00;
- }
-
- inflateReset(&png_ptr->zstream);
- png_ptr->zstream.avail_in = 0;
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = text;
- *newlength=text_size;
- }
- else /* if (comp_type != PNG_COMPRESSION_TYPE_BASE) */
- {
-#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE)
- char umsg[50];
-
- png_snprintf(umsg, 50, "Unknown zTXt compression type %d", comp_type);
- png_warning(png_ptr, umsg);
-#else
- png_warning(png_ptr, "Unknown zTXt compression type");
-#endif
-
- *(png_ptr->chunkdata + prefix_size) = 0x00;
- *newlength = prefix_size;
- }
-}
-#endif
-
-/* read and check the IDHR chunk */
-void /* PRIVATE */
-png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte buf[13];
- png_uint_32 width, height;
- int bit_depth, color_type, compression_type, filter_type;
- int interlace_type;
-
- png_debug(1, "in png_handle_IHDR");
-
- if (png_ptr->mode & PNG_HAVE_IHDR)
- png_error(png_ptr, "Out of place IHDR");
-
- /* check the length */
- if (length != 13)
- png_error(png_ptr, "Invalid IHDR chunk");
-
- png_ptr->mode |= PNG_HAVE_IHDR;
-
- png_crc_read(png_ptr, buf, 13);
- png_crc_finish(png_ptr, 0);
-
- width = png_get_uint_31(png_ptr, buf);
- height = png_get_uint_31(png_ptr, buf + 4);
- bit_depth = buf[8];
- color_type = buf[9];
- compression_type = buf[10];
- filter_type = buf[11];
- interlace_type = buf[12];
-
- /* set internal variables */
- png_ptr->width = width;
- png_ptr->height = height;
- png_ptr->bit_depth = (png_byte)bit_depth;
- png_ptr->interlaced = (png_byte)interlace_type;
- png_ptr->color_type = (png_byte)color_type;
-#if defined(PNG_MNG_FEATURES_SUPPORTED)
- png_ptr->filter_type = (png_byte)filter_type;
-#endif
- png_ptr->compression_type = (png_byte)compression_type;
-
- /* find number of channels */
- switch (png_ptr->color_type)
- {
- case PNG_COLOR_TYPE_GRAY:
- case PNG_COLOR_TYPE_PALETTE:
- png_ptr->channels = 1;
- break;
- case PNG_COLOR_TYPE_RGB:
- png_ptr->channels = 3;
- break;
- case PNG_COLOR_TYPE_GRAY_ALPHA:
- png_ptr->channels = 2;
- break;
- case PNG_COLOR_TYPE_RGB_ALPHA:
- png_ptr->channels = 4;
- break;
- }
-
- /* set up other useful info */
- png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth *
- png_ptr->channels);
- png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->width);
- png_debug1(3, "bit_depth = %d", png_ptr->bit_depth);
- png_debug1(3, "channels = %d", png_ptr->channels);
- png_debug1(3, "rowbytes = %lu", png_ptr->rowbytes);
- png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth,
- color_type, interlace_type, compression_type, filter_type);
-}
-
-/* read and check the palette */
-void /* PRIVATE */
-png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_color palette[PNG_MAX_PALETTE_LENGTH];
- int num, i;
-#ifndef PNG_NO_POINTER_INDEXING
- png_colorp pal_ptr;
-#endif
-
- png_debug(1, "in png_handle_PLTE");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before PLTE");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid PLTE after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- png_error(png_ptr, "Duplicate PLTE chunk");
-
- png_ptr->mode |= PNG_HAVE_PLTE;
-
- if (!(png_ptr->color_type&PNG_COLOR_MASK_COLOR))
- {
- png_warning(png_ptr,
- "Ignoring PLTE chunk in grayscale PNG");
- png_crc_finish(png_ptr, length);
- return;
- }
-#if !defined(PNG_READ_OPT_PLTE_SUPPORTED)
- if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)
- {
- png_crc_finish(png_ptr, length);
- return;
- }
-#endif
-
- if (length > 3*PNG_MAX_PALETTE_LENGTH || length % 3)
- {
- if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)
- {
- png_warning(png_ptr, "Invalid palette chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
- else
- {
- png_error(png_ptr, "Invalid palette chunk");
- }
- }
-
- num = (int)length / 3;
-
-#ifndef PNG_NO_POINTER_INDEXING
- for (i = 0, pal_ptr = palette; i < num; i++, pal_ptr++)
- {
- png_byte buf[3];
-
- png_crc_read(png_ptr, buf, 3);
- pal_ptr->red = buf[0];
- pal_ptr->green = buf[1];
- pal_ptr->blue = buf[2];
- }
-#else
- for (i = 0; i < num; i++)
- {
- png_byte buf[3];
-
- png_crc_read(png_ptr, buf, 3);
- /* don't depend upon png_color being any order */
- palette[i].red = buf[0];
- palette[i].green = buf[1];
- palette[i].blue = buf[2];
- }
-#endif
-
- /* If we actually NEED the PLTE chunk (ie for a paletted image), we do
- whatever the normal CRC configuration tells us. However, if we
- have an RGB image, the PLTE can be considered ancillary, so
- we will act as though it is. */
-#if !defined(PNG_READ_OPT_PLTE_SUPPORTED)
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
-#endif
- {
- png_crc_finish(png_ptr, 0);
- }
-#if !defined(PNG_READ_OPT_PLTE_SUPPORTED)
- else if (png_crc_error(png_ptr)) /* Only if we have a CRC error */
- {
- /* If we don't want to use the data from an ancillary chunk,
- we have two options: an error abort, or a warning and we
- ignore the data in this chunk (which should be OK, since
- it's considered ancillary for a RGB or RGBA image). */
- if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_USE))
- {
- if (png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)
- {
- png_chunk_error(png_ptr, "CRC error");
- }
- else
- {
- png_chunk_warning(png_ptr, "CRC error");
- return;
- }
- }
- /* Otherwise, we (optionally) emit a warning and use the chunk. */
- else if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN))
- {
- png_chunk_warning(png_ptr, "CRC error");
- }
- }
-#endif
-
- png_set_PLTE(png_ptr, info_ptr, palette, num);
-
-#if defined(PNG_READ_tRNS_SUPPORTED)
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS))
- {
- if (png_ptr->num_trans > (png_uint_16)num)
- {
- png_warning(png_ptr, "Truncating incorrect tRNS chunk length");
- png_ptr->num_trans = (png_uint_16)num;
- }
- if (info_ptr->num_trans > (png_uint_16)num)
- {
- png_warning(png_ptr, "Truncating incorrect info tRNS chunk length");
- info_ptr->num_trans = (png_uint_16)num;
- }
- }
- }
-#endif
-
-}
-
-void /* PRIVATE */
-png_handle_IEND(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_debug(1, "in png_handle_IEND");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR) || !(png_ptr->mode & PNG_HAVE_IDAT))
- {
- png_error(png_ptr, "No image in file");
- }
-
- png_ptr->mode |= (PNG_AFTER_IDAT | PNG_HAVE_IEND);
-
- if (length != 0)
- {
- png_warning(png_ptr, "Incorrect IEND chunk length");
- }
- png_crc_finish(png_ptr, length);
-
- info_ptr = info_ptr; /* quiet compiler warnings about unused info_ptr */
-}
-
-#if defined(PNG_READ_gAMA_SUPPORTED)
-void /* PRIVATE */
-png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_fixed_point igamma;
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- float file_gamma;
-#endif
- png_byte buf[4];
-
- png_debug(1, "in png_handle_gAMA");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before gAMA");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid gAMA after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- /* Should be an error, but we can cope with it */
- png_warning(png_ptr, "Out of place gAMA chunk");
-
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
-#if defined(PNG_READ_sRGB_SUPPORTED)
- && !(info_ptr->valid & PNG_INFO_sRGB)
-#endif
- )
- {
- png_warning(png_ptr, "Duplicate gAMA chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length != 4)
- {
- png_warning(png_ptr, "Incorrect gAMA chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 4);
- if (png_crc_finish(png_ptr, 0))
- return;
-
- igamma = (png_fixed_point)png_get_uint_32(buf);
- /* check for zero gamma */
- if (igamma == 0)
- {
- png_warning(png_ptr,
- "Ignoring gAMA chunk with gamma=0");
- return;
- }
-
-#if defined(PNG_READ_sRGB_SUPPORTED)
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB))
- if (PNG_OUT_OF_RANGE(igamma, 45500L, 500))
- {
- png_warning(png_ptr,
- "Ignoring incorrect gAMA value when sRGB is also present");
-#ifndef PNG_NO_CONSOLE_IO
- fprintf(stderr, "gamma = (%d/100000)", (int)igamma);
-#endif
- return;
- }
-#endif /* PNG_READ_sRGB_SUPPORTED */
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- file_gamma = (float)igamma / (float)100000.0;
-# ifdef PNG_READ_GAMMA_SUPPORTED
- png_ptr->gamma = file_gamma;
-# endif
- png_set_gAMA(png_ptr, info_ptr, file_gamma);
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
- png_set_gAMA_fixed(png_ptr, info_ptr, igamma);
-#endif
-}
-#endif
-
-#if defined(PNG_READ_sBIT_SUPPORTED)
-void /* PRIVATE */
-png_handle_sBIT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_size_t truelen;
- png_byte buf[4];
-
- png_debug(1, "in png_handle_sBIT");
-
- buf[0] = buf[1] = buf[2] = buf[3] = 0;
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before sBIT");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid sBIT after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- {
- /* Should be an error, but we can cope with it */
- png_warning(png_ptr, "Out of place sBIT chunk");
- }
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT))
- {
- png_warning(png_ptr, "Duplicate sBIT chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- truelen = 3;
- else
- truelen = (png_size_t)png_ptr->channels;
-
- if (length != truelen || length > 4)
- {
- png_warning(png_ptr, "Incorrect sBIT chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, truelen);
- if (png_crc_finish(png_ptr, 0))
- return;
-
- if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
- {
- png_ptr->sig_bit.red = buf[0];
- png_ptr->sig_bit.green = buf[1];
- png_ptr->sig_bit.blue = buf[2];
- png_ptr->sig_bit.alpha = buf[3];
- }
- else
- {
- png_ptr->sig_bit.gray = buf[0];
- png_ptr->sig_bit.red = buf[0];
- png_ptr->sig_bit.green = buf[0];
- png_ptr->sig_bit.blue = buf[0];
- png_ptr->sig_bit.alpha = buf[1];
- }
- png_set_sBIT(png_ptr, info_ptr, &(png_ptr->sig_bit));
-}
-#endif
-
-#if defined(PNG_READ_cHRM_SUPPORTED)
-void /* PRIVATE */
-png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte buf[32];
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y;
-#endif
- png_fixed_point int_x_white, int_y_white, int_x_red, int_y_red, int_x_green,
- int_y_green, int_x_blue, int_y_blue;
-
- png_uint_32 uint_x, uint_y;
-
- png_debug(1, "in png_handle_cHRM");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before cHRM");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid cHRM after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- /* Should be an error, but we can cope with it */
- png_warning(png_ptr, "Missing PLTE before cHRM");
-
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)
-#if defined(PNG_READ_sRGB_SUPPORTED)
- && !(info_ptr->valid & PNG_INFO_sRGB)
-#endif
- )
- {
- png_warning(png_ptr, "Duplicate cHRM chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length != 32)
- {
- png_warning(png_ptr, "Incorrect cHRM chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 32);
- if (png_crc_finish(png_ptr, 0))
- return;
-
- uint_x = png_get_uint_32(buf);
- uint_y = png_get_uint_32(buf + 4);
- int_x_white = (png_fixed_point)uint_x;
- int_y_white = (png_fixed_point)uint_y;
-
- uint_x = png_get_uint_32(buf + 8);
- uint_y = png_get_uint_32(buf + 12);
- int_x_red = (png_fixed_point)uint_x;
- int_y_red = (png_fixed_point)uint_y;
-
- uint_x = png_get_uint_32(buf + 16);
- uint_y = png_get_uint_32(buf + 20);
- int_x_green = (png_fixed_point)uint_x;
- int_y_green = (png_fixed_point)uint_y;
-
- uint_x = png_get_uint_32(buf + 24);
- uint_y = png_get_uint_32(buf + 28);
- int_x_blue = (png_fixed_point)uint_x;
- int_y_blue = (png_fixed_point)uint_y;
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- white_x = (float)int_x_white / (float)100000.0;
- white_y = (float)int_y_white / (float)100000.0;
- red_x = (float)int_x_red / (float)100000.0;
- red_y = (float)int_y_red / (float)100000.0;
- green_x = (float)int_x_green / (float)100000.0;
- green_y = (float)int_y_green / (float)100000.0;
- blue_x = (float)int_x_blue / (float)100000.0;
- blue_y = (float)int_y_blue / (float)100000.0;
-#endif
-
-#if defined(PNG_READ_sRGB_SUPPORTED)
- if ((info_ptr != NULL) && (info_ptr->valid & PNG_INFO_sRGB))
- {
- if (PNG_OUT_OF_RANGE(int_x_white, 31270, 1000) ||
- PNG_OUT_OF_RANGE(int_y_white, 32900, 1000) ||
- PNG_OUT_OF_RANGE(int_x_red, 64000L, 1000) ||
- PNG_OUT_OF_RANGE(int_y_red, 33000, 1000) ||
- PNG_OUT_OF_RANGE(int_x_green, 30000, 1000) ||
- PNG_OUT_OF_RANGE(int_y_green, 60000L, 1000) ||
- PNG_OUT_OF_RANGE(int_x_blue, 15000, 1000) ||
- PNG_OUT_OF_RANGE(int_y_blue, 6000, 1000))
- {
- png_warning(png_ptr,
- "Ignoring incorrect cHRM value when sRGB is also present");
-#ifndef PNG_NO_CONSOLE_IO
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- fprintf(stderr, "wx=%f, wy=%f, rx=%f, ry=%f\n",
- white_x, white_y, red_x, red_y);
- fprintf(stderr, "gx=%f, gy=%f, bx=%f, by=%f\n",
- green_x, green_y, blue_x, blue_y);
-#else
- fprintf(stderr, "wx=%ld, wy=%ld, rx=%ld, ry=%ld\n",
- int_x_white, int_y_white, int_x_red, int_y_red);
- fprintf(stderr, "gx=%ld, gy=%ld, bx=%ld, by=%ld\n",
- int_x_green, int_y_green, int_x_blue, int_y_blue);
-#endif
-#endif /* PNG_NO_CONSOLE_IO */
- }
- return;
- }
-#endif /* PNG_READ_sRGB_SUPPORTED */
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- png_set_cHRM(png_ptr, info_ptr,
- white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y);
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
- png_set_cHRM_fixed(png_ptr, info_ptr,
- int_x_white, int_y_white, int_x_red, int_y_red, int_x_green,
- int_y_green, int_x_blue, int_y_blue);
-#endif
-}
-#endif
-
-#if defined(PNG_READ_sRGB_SUPPORTED)
-void /* PRIVATE */
-png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- int intent;
- png_byte buf[1];
-
- png_debug(1, "in png_handle_sRGB");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before sRGB");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid sRGB after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- /* Should be an error, but we can cope with it */
- png_warning(png_ptr, "Out of place sRGB chunk");
-
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB))
- {
- png_warning(png_ptr, "Duplicate sRGB chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length != 1)
- {
- png_warning(png_ptr, "Incorrect sRGB chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 1);
- if (png_crc_finish(png_ptr, 0))
- return;
-
- intent = buf[0];
- /* check for bad intent */
- if (intent >= PNG_sRGB_INTENT_LAST)
- {
- png_warning(png_ptr, "Unknown sRGB intent");
- return;
- }
-
-#if defined(PNG_READ_gAMA_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED)
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA))
- {
- png_fixed_point igamma;
-#ifdef PNG_FIXED_POINT_SUPPORTED
- igamma=info_ptr->int_gamma;
-#else
-# ifdef PNG_FLOATING_POINT_SUPPORTED
- igamma=(png_fixed_point)(info_ptr->gamma * 100000.);
-# endif
-#endif
- if (PNG_OUT_OF_RANGE(igamma, 45500L, 500))
- {
- png_warning(png_ptr,
- "Ignoring incorrect gAMA value when sRGB is also present");
-#ifndef PNG_NO_CONSOLE_IO
-# ifdef PNG_FIXED_POINT_SUPPORTED
- fprintf(stderr, "incorrect gamma=(%d/100000)\n",
- (int)png_ptr->int_gamma);
-# else
-# ifdef PNG_FLOATING_POINT_SUPPORTED
- fprintf(stderr, "incorrect gamma=%f\n", png_ptr->gamma);
-# endif
-# endif
-#endif
- }
- }
-#endif /* PNG_READ_gAMA_SUPPORTED */
-
-#ifdef PNG_READ_cHRM_SUPPORTED
-#ifdef PNG_FIXED_POINT_SUPPORTED
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM))
- if (PNG_OUT_OF_RANGE(info_ptr->int_x_white, 31270, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->int_y_white, 32900, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->int_x_red, 64000L, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->int_y_red, 33000, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->int_x_green, 30000, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->int_y_green, 60000L, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->int_x_blue, 15000, 1000) ||
- PNG_OUT_OF_RANGE(info_ptr->int_y_blue, 6000, 1000))
- {
- png_warning(png_ptr,
- "Ignoring incorrect cHRM value when sRGB is also present");
- }
-#endif /* PNG_FIXED_POINT_SUPPORTED */
-#endif /* PNG_READ_cHRM_SUPPORTED */
-
- png_set_sRGB_gAMA_and_cHRM(png_ptr, info_ptr, intent);
-}
-#endif /* PNG_READ_sRGB_SUPPORTED */
-
-#if defined(PNG_READ_iCCP_SUPPORTED)
-void /* PRIVATE */
-png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-/* Note: this does not properly handle chunks that are > 64K under DOS */
-{
- png_byte compression_type;
- png_bytep pC;
- png_charp profile;
- png_uint_32 skip = 0;
- png_uint_32 profile_size, profile_length;
- png_size_t slength, prefix_length, data_length;
-
- png_debug(1, "in png_handle_iCCP");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before iCCP");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid iCCP after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (png_ptr->mode & PNG_HAVE_PLTE)
- /* Should be an error, but we can cope with it */
- png_warning(png_ptr, "Out of place iCCP chunk");
-
- if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP))
- {
- png_warning(png_ptr, "Duplicate iCCP chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
-#ifdef PNG_MAX_MALLOC_64K
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "iCCP chunk too large to fit in memory");
- skip = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = (png_charp)png_malloc(png_ptr, length + 1);
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, skip))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00;
-
- for (profile = png_ptr->chunkdata; *profile; profile++)
- /* empty loop to find end of name */ ;
-
- ++profile;
-
- /* there should be at least one zero (the compression type byte)
- following the separator, and we should be on it */
- if ( profile >= png_ptr->chunkdata + slength - 1)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "Malformed iCCP chunk");
- return;
- }
-
- /* compression_type should always be zero */
- compression_type = *profile++;
- if (compression_type)
- {
- png_warning(png_ptr, "Ignoring nonzero compression type in iCCP chunk");
- compression_type = 0x00; /* Reset it to zero (libpng-1.0.6 through 1.0.8
- wrote nonzero) */
- }
-
- prefix_length = profile - png_ptr->chunkdata;
- png_decompress_chunk(png_ptr, compression_type,
- slength, prefix_length, &data_length);
-
- profile_length = data_length - prefix_length;
-
- if ( prefix_length > data_length || profile_length < 4)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "Profile size field missing from iCCP chunk");
- return;
- }
-
- /* Check the profile_size recorded in the first 32 bits of the ICC profile */
- pC = (png_bytep)(png_ptr->chunkdata + prefix_length);
- profile_size = ((*(pC ))<<24) |
- ((*(pC + 1))<<16) |
- ((*(pC + 2))<< 8) |
- ((*(pC + 3)) );
-
- if (profile_size < profile_length)
- profile_length = profile_size;
-
- if (profile_size > profile_length)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "Ignoring truncated iCCP profile.");
- return;
- }
-
- png_set_iCCP(png_ptr, info_ptr, png_ptr->chunkdata,
- compression_type, png_ptr->chunkdata + prefix_length, profile_length);
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
-}
-#endif /* PNG_READ_iCCP_SUPPORTED */
-
-#if defined(PNG_READ_sPLT_SUPPORTED)
-void /* PRIVATE */
-png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-/* Note: this does not properly handle chunks that are > 64K under DOS */
-{
- png_bytep entry_start;
- png_sPLT_t new_palette;
-#ifdef PNG_NO_POINTER_INDEXING
- png_sPLT_entryp pp;
-#endif
- int data_length, entry_size, i;
- png_uint_32 skip = 0;
- png_size_t slength;
-
- png_debug(1, "in png_handle_sPLT");
-
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before sPLT");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid sPLT after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
-
-#ifdef PNG_MAX_MALLOC_64K
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "sPLT chunk too large to fit in memory");
- skip = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = (png_charp)png_malloc(png_ptr, length + 1);
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, skip))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00;
-
- for (entry_start = (png_bytep)png_ptr->chunkdata; *entry_start; entry_start++)
- /* empty loop to find end of name */ ;
- ++entry_start;
-
- /* a sample depth should follow the separator, and we should be on it */
- if (entry_start > (png_bytep)png_ptr->chunkdata + slength - 2)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "malformed sPLT chunk");
- return;
- }
-
- new_palette.depth = *entry_start++;
- entry_size = (new_palette.depth == 8 ? 6 : 10);
- data_length = (slength - (entry_start - (png_bytep)png_ptr->chunkdata));
-
- /* integrity-check the data length */
- if (data_length % entry_size)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "sPLT chunk has bad length");
- return;
- }
-
- new_palette.nentries = (png_int_32) ( data_length / entry_size);
- if ((png_uint_32) new_palette.nentries >
- (png_uint_32) (PNG_SIZE_MAX / png_sizeof(png_sPLT_entry)))
- {
- png_warning(png_ptr, "sPLT chunk too long");
- return;
- }
- new_palette.entries = (png_sPLT_entryp)png_malloc_warn(
- png_ptr, new_palette.nentries * png_sizeof(png_sPLT_entry));
- if (new_palette.entries == NULL)
- {
- png_warning(png_ptr, "sPLT chunk requires too much memory");
- return;
- }
-
-#ifndef PNG_NO_POINTER_INDEXING
- for (i = 0; i < new_palette.nentries; i++)
- {
- png_sPLT_entryp pp = new_palette.entries + i;
-
- if (new_palette.depth == 8)
- {
- pp->red = *entry_start++;
- pp->green = *entry_start++;
- pp->blue = *entry_start++;
- pp->alpha = *entry_start++;
- }
- else
- {
- pp->red = png_get_uint_16(entry_start); entry_start += 2;
- pp->green = png_get_uint_16(entry_start); entry_start += 2;
- pp->blue = png_get_uint_16(entry_start); entry_start += 2;
- pp->alpha = png_get_uint_16(entry_start); entry_start += 2;
- }
- pp->frequency = png_get_uint_16(entry_start); entry_start += 2;
- }
-#else
- pp = new_palette.entries;
- for (i = 0; i < new_palette.nentries; i++)
- {
-
- if (new_palette.depth == 8)
- {
- pp[i].red = *entry_start++;
- pp[i].green = *entry_start++;
- pp[i].blue = *entry_start++;
- pp[i].alpha = *entry_start++;
- }
- else
- {
- pp[i].red = png_get_uint_16(entry_start); entry_start += 2;
- pp[i].green = png_get_uint_16(entry_start); entry_start += 2;
- pp[i].blue = png_get_uint_16(entry_start); entry_start += 2;
- pp[i].alpha = png_get_uint_16(entry_start); entry_start += 2;
- }
- pp->frequency = png_get_uint_16(entry_start); entry_start += 2;
- }
-#endif
-
- /* discard all chunk data except the name and stash that */
- new_palette.name = png_ptr->chunkdata;
-
- png_set_sPLT(png_ptr, info_ptr, &new_palette, 1);
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_free(png_ptr, new_palette.entries);
-}
-#endif /* PNG_READ_sPLT_SUPPORTED */
-
-#if defined(PNG_READ_tRNS_SUPPORTED)
-void /* PRIVATE */
-png_handle_tRNS(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte readbuf[PNG_MAX_PALETTE_LENGTH];
-
- png_debug(1, "in png_handle_tRNS");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before tRNS");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid tRNS after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS))
- {
- png_warning(png_ptr, "Duplicate tRNS chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY)
- {
- png_byte buf[2];
-
- if (length != 2)
- {
- png_warning(png_ptr, "Incorrect tRNS chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 2);
- png_ptr->num_trans = 1;
- png_ptr->trans_values.gray = png_get_uint_16(buf);
- }
- else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
- {
- png_byte buf[6];
-
- if (length != 6)
- {
- png_warning(png_ptr, "Incorrect tRNS chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
- png_crc_read(png_ptr, buf, (png_size_t)length);
- png_ptr->num_trans = 1;
- png_ptr->trans_values.red = png_get_uint_16(buf);
- png_ptr->trans_values.green = png_get_uint_16(buf + 2);
- png_ptr->trans_values.blue = png_get_uint_16(buf + 4);
- }
- else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (!(png_ptr->mode & PNG_HAVE_PLTE))
- {
- /* Should be an error, but we can cope with it. */
- png_warning(png_ptr, "Missing PLTE before tRNS");
- }
- if (length > (png_uint_32)png_ptr->num_palette ||
- length > PNG_MAX_PALETTE_LENGTH)
- {
- png_warning(png_ptr, "Incorrect tRNS chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
- if (length == 0)
- {
- png_warning(png_ptr, "Zero length tRNS chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
- png_crc_read(png_ptr, readbuf, (png_size_t)length);
- png_ptr->num_trans = (png_uint_16)length;
- }
- else
- {
- png_warning(png_ptr, "tRNS chunk not allowed with alpha channel");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (png_crc_finish(png_ptr, 0))
- {
- png_ptr->num_trans = 0;
- return;
- }
-
- png_set_tRNS(png_ptr, info_ptr, readbuf, png_ptr->num_trans,
- &(png_ptr->trans_values));
-}
-#endif
-
-#if defined(PNG_READ_bKGD_SUPPORTED)
-void /* PRIVATE */
-png_handle_bKGD(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_size_t truelen;
- png_byte buf[6];
-
- png_debug(1, "in png_handle_bKGD");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before bKGD");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid bKGD after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
- !(png_ptr->mode & PNG_HAVE_PLTE))
- {
- png_warning(png_ptr, "Missing PLTE before bKGD");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD))
- {
- png_warning(png_ptr, "Duplicate bKGD chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- truelen = 1;
- else if (png_ptr->color_type & PNG_COLOR_MASK_COLOR)
- truelen = 6;
- else
- truelen = 2;
-
- if (length != truelen)
- {
- png_warning(png_ptr, "Incorrect bKGD chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, truelen);
- if (png_crc_finish(png_ptr, 0))
- return;
-
- /* We convert the index value into RGB components so that we can allow
- * arbitrary RGB values for background when we have transparency, and
- * so it is easy to determine the RGB values of the background color
- * from the info_ptr struct. */
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- png_ptr->background.index = buf[0];
- if (info_ptr && info_ptr->num_palette)
- {
- if (buf[0] >= info_ptr->num_palette)
- {
- png_warning(png_ptr, "Incorrect bKGD chunk index value");
- return;
- }
- png_ptr->background.red =
- (png_uint_16)png_ptr->palette[buf[0]].red;
- png_ptr->background.green =
- (png_uint_16)png_ptr->palette[buf[0]].green;
- png_ptr->background.blue =
- (png_uint_16)png_ptr->palette[buf[0]].blue;
- }
- }
- else if (!(png_ptr->color_type & PNG_COLOR_MASK_COLOR)) /* GRAY */
- {
- png_ptr->background.red =
- png_ptr->background.green =
- png_ptr->background.blue =
- png_ptr->background.gray = png_get_uint_16(buf);
- }
- else
- {
- png_ptr->background.red = png_get_uint_16(buf);
- png_ptr->background.green = png_get_uint_16(buf + 2);
- png_ptr->background.blue = png_get_uint_16(buf + 4);
- }
-
- png_set_bKGD(png_ptr, info_ptr, &(png_ptr->background));
-}
-#endif
-
-#if defined(PNG_READ_hIST_SUPPORTED)
-void /* PRIVATE */
-png_handle_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- unsigned int num, i;
- png_uint_16 readbuf[PNG_MAX_PALETTE_LENGTH];
-
- png_debug(1, "in png_handle_hIST");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before hIST");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid hIST after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (!(png_ptr->mode & PNG_HAVE_PLTE))
- {
- png_warning(png_ptr, "Missing PLTE before hIST");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST))
- {
- png_warning(png_ptr, "Duplicate hIST chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- num = length / 2 ;
- if (num != (unsigned int) png_ptr->num_palette || num >
- (unsigned int) PNG_MAX_PALETTE_LENGTH)
- {
- png_warning(png_ptr, "Incorrect hIST chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- for (i = 0; i < num; i++)
- {
- png_byte buf[2];
-
- png_crc_read(png_ptr, buf, 2);
- readbuf[i] = png_get_uint_16(buf);
- }
-
- if (png_crc_finish(png_ptr, 0))
- return;
-
- png_set_hIST(png_ptr, info_ptr, readbuf);
-}
-#endif
-
-#if defined(PNG_READ_pHYs_SUPPORTED)
-void /* PRIVATE */
-png_handle_pHYs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte buf[9];
- png_uint_32 res_x, res_y;
- int unit_type;
-
- png_debug(1, "in png_handle_pHYs");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before pHYs");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid pHYs after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs))
- {
- png_warning(png_ptr, "Duplicate pHYs chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length != 9)
- {
- png_warning(png_ptr, "Incorrect pHYs chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 9);
- if (png_crc_finish(png_ptr, 0))
- return;
-
- res_x = png_get_uint_32(buf);
- res_y = png_get_uint_32(buf + 4);
- unit_type = buf[8];
- png_set_pHYs(png_ptr, info_ptr, res_x, res_y, unit_type);
-}
-#endif
-
-#if defined(PNG_READ_oFFs_SUPPORTED)
-void /* PRIVATE */
-png_handle_oFFs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte buf[9];
- png_int_32 offset_x, offset_y;
- int unit_type;
-
- png_debug(1, "in png_handle_oFFs");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before oFFs");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid oFFs after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs))
- {
- png_warning(png_ptr, "Duplicate oFFs chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (length != 9)
- {
- png_warning(png_ptr, "Incorrect oFFs chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 9);
- if (png_crc_finish(png_ptr, 0))
- return;
-
- offset_x = png_get_int_32(buf);
- offset_y = png_get_int_32(buf + 4);
- unit_type = buf[8];
- png_set_oFFs(png_ptr, info_ptr, offset_x, offset_y, unit_type);
-}
-#endif
-
-#if defined(PNG_READ_pCAL_SUPPORTED)
-/* read the pCAL chunk (described in the PNG Extensions document) */
-void /* PRIVATE */
-png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_int_32 X0, X1;
- png_byte type, nparams;
- png_charp buf, units, endptr;
- png_charpp params;
- png_size_t slength;
- int i;
-
- png_debug(1, "in png_handle_pCAL");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before pCAL");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid pCAL after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL))
- {
- png_warning(png_ptr, "Duplicate pCAL chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_debug1(2, "Allocating and reading pCAL chunk data (%lu bytes)",
- length + 1);
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
- if (png_ptr->chunkdata == NULL)
- {
- png_warning(png_ptr, "No memory for pCAL purpose.");
- return;
- }
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, 0))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00; /* null terminate the last string */
-
- png_debug(3, "Finding end of pCAL purpose string");
- for (buf = png_ptr->chunkdata; *buf; buf++)
- /* empty loop */ ;
-
- endptr = png_ptr->chunkdata + slength;
-
- /* We need to have at least 12 bytes after the purpose string
- in order to get the parameter information. */
- if (endptr <= buf + 12)
- {
- png_warning(png_ptr, "Invalid pCAL data");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_debug(3, "Reading pCAL X0, X1, type, nparams, and units");
- X0 = png_get_int_32((png_bytep)buf+1);
- X1 = png_get_int_32((png_bytep)buf+5);
- type = buf[9];
- nparams = buf[10];
- units = buf + 11;
-
- png_debug(3, "Checking pCAL equation type and number of parameters");
- /* Check that we have the right number of parameters for known
- equation types. */
- if ((type == PNG_EQUATION_LINEAR && nparams != 2) ||
- (type == PNG_EQUATION_BASE_E && nparams != 3) ||
- (type == PNG_EQUATION_ARBITRARY && nparams != 3) ||
- (type == PNG_EQUATION_HYPERBOLIC && nparams != 4))
- {
- png_warning(png_ptr, "Invalid pCAL parameters for equation type");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
- else if (type >= PNG_EQUATION_LAST)
- {
- png_warning(png_ptr, "Unrecognized equation type for pCAL chunk");
- }
-
- for (buf = units; *buf; buf++)
- /* Empty loop to move past the units string. */ ;
-
- png_debug(3, "Allocating pCAL parameters array");
- params = (png_charpp)png_malloc_warn(png_ptr,
- (png_uint_32)(nparams * png_sizeof(png_charp))) ;
- if (params == NULL)
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_warning(png_ptr, "No memory for pCAL params.");
- return;
- }
-
- /* Get pointers to the start of each parameter string. */
- for (i = 0; i < (int)nparams; i++)
- {
- buf++; /* Skip the null string terminator from previous parameter. */
-
- png_debug1(3, "Reading pCAL parameter %d", i);
- for (params[i] = buf; buf <= endptr && *buf != 0x00; buf++)
- /* Empty loop to move past each parameter string */ ;
-
- /* Make sure we haven't run out of data yet */
- if (buf > endptr)
- {
- png_warning(png_ptr, "Invalid pCAL data");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_free(png_ptr, params);
- return;
- }
- }
-
- png_set_pCAL(png_ptr, info_ptr, png_ptr->chunkdata, X0, X1, type, nparams,
- units, params);
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_free(png_ptr, params);
-}
-#endif
-
-#if defined(PNG_READ_sCAL_SUPPORTED)
-/* read the sCAL chunk */
-void /* PRIVATE */
-png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_charp ep;
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- double width, height;
- png_charp vp;
-#else
-#ifdef PNG_FIXED_POINT_SUPPORTED
- png_charp swidth, sheight;
-#endif
-#endif
- png_size_t slength;
-
- png_debug(1, "in png_handle_sCAL");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before sCAL");
- else if (png_ptr->mode & PNG_HAVE_IDAT)
- {
- png_warning(png_ptr, "Invalid sCAL after IDAT");
- png_crc_finish(png_ptr, length);
- return;
- }
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sCAL))
- {
- png_warning(png_ptr, "Duplicate sCAL chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_debug1(2, "Allocating and reading sCAL chunk data (%lu bytes)",
- length + 1);
- png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
- if (png_ptr->chunkdata == NULL)
- {
- png_warning(png_ptr, "Out of memory while processing sCAL chunk");
- return;
- }
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, 0))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00; /* null terminate the last string */
-
- ep = png_ptr->chunkdata + 1; /* skip unit byte */
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- width = png_strtod(png_ptr, ep, &vp);
- if (*vp)
- {
- png_warning(png_ptr, "malformed width string in sCAL chunk");
- return;
- }
-#else
-#ifdef PNG_FIXED_POINT_SUPPORTED
- swidth = (png_charp)png_malloc_warn(png_ptr, png_strlen(ep) + 1);
- if (swidth == NULL)
- {
- png_warning(png_ptr, "Out of memory while processing sCAL chunk width");
- return;
- }
- png_memcpy(swidth, ep, (png_size_t)png_strlen(ep));
-#endif
-#endif
-
- for (ep = png_ptr->chunkdata; *ep; ep++)
- /* empty loop */ ;
- ep++;
-
- if (png_ptr->chunkdata + slength < ep)
- {
- png_warning(png_ptr, "Truncated sCAL chunk");
-#if defined(PNG_FIXED_POINT_SUPPORTED) && \
- !defined(PNG_FLOATING_POINT_SUPPORTED)
- png_free(png_ptr, swidth);
-#endif
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- height = png_strtod(png_ptr, ep, &vp);
- if (*vp)
- {
- png_warning(png_ptr, "malformed height string in sCAL chunk");
- return;
- }
-#else
-#ifdef PNG_FIXED_POINT_SUPPORTED
- sheight = (png_charp)png_malloc_warn(png_ptr, png_strlen(ep) + 1);
- if (sheight == NULL)
- {
- png_warning(png_ptr, "Out of memory while processing sCAL chunk height");
- return;
- }
- png_memcpy(sheight, ep, (png_size_t)png_strlen(ep));
-#endif
-#endif
-
- if (png_ptr->chunkdata + slength < ep
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- || width <= 0. || height <= 0.
-#endif
- )
- {
- png_warning(png_ptr, "Invalid sCAL data");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
-#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
- png_free(png_ptr, swidth);
- png_free(png_ptr, sheight);
-#endif
- return;
- }
-
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- png_set_sCAL(png_ptr, info_ptr, png_ptr->chunkdata[0], width, height);
-#else
-#ifdef PNG_FIXED_POINT_SUPPORTED
- png_set_sCAL_s(png_ptr, info_ptr, png_ptr->chunkdata[0], swidth, sheight);
-#endif
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
-#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED)
- png_free(png_ptr, swidth);
- png_free(png_ptr, sheight);
-#endif
-}
-#endif
-
-#if defined(PNG_READ_tIME_SUPPORTED)
-void /* PRIVATE */
-png_handle_tIME(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_byte buf[7];
- png_time mod_time;
-
- png_debug(1, "in png_handle_tIME");
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Out of place tIME chunk");
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME))
- {
- png_warning(png_ptr, "Duplicate tIME chunk");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- png_ptr->mode |= PNG_AFTER_IDAT;
-
- if (length != 7)
- {
- png_warning(png_ptr, "Incorrect tIME chunk length");
- png_crc_finish(png_ptr, length);
- return;
- }
-
- png_crc_read(png_ptr, buf, 7);
- if (png_crc_finish(png_ptr, 0))
- return;
-
- mod_time.second = buf[6];
- mod_time.minute = buf[5];
- mod_time.hour = buf[4];
- mod_time.day = buf[3];
- mod_time.month = buf[2];
- mod_time.year = png_get_uint_16(buf);
-
- png_set_tIME(png_ptr, info_ptr, &mod_time);
-}
-#endif
-
-#if defined(PNG_READ_tEXt_SUPPORTED)
-/* Note: this does not properly handle chunks that are > 64K under DOS */
-void /* PRIVATE */
-png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_textp text_ptr;
- png_charp key;
- png_charp text;
- png_uint_32 skip = 0;
- png_size_t slength;
- int ret;
-
- png_debug(1, "in png_handle_tEXt");
-
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before tEXt");
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- png_ptr->mode |= PNG_AFTER_IDAT;
-
-#ifdef PNG_MAX_MALLOC_64K
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "tEXt chunk too large to fit in memory");
- skip = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
-
- png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
- if (png_ptr->chunkdata == NULL)
- {
- png_warning(png_ptr, "No memory to process text chunk.");
- return;
- }
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
-
- if (png_crc_finish(png_ptr, skip))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- key = png_ptr->chunkdata;
-
- key[slength] = 0x00;
-
- for (text = key; *text; text++)
- /* empty loop to find end of key */ ;
-
- if (text != key + slength)
- text++;
-
- text_ptr = (png_textp)png_malloc_warn(png_ptr,
- (png_uint_32)png_sizeof(png_text));
- if (text_ptr == NULL)
- {
- png_warning(png_ptr, "Not enough memory to process text chunk.");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
- text_ptr->compression = PNG_TEXT_COMPRESSION_NONE;
- text_ptr->key = key;
-#ifdef PNG_iTXt_SUPPORTED
- text_ptr->lang = NULL;
- text_ptr->lang_key = NULL;
- text_ptr->itxt_length = 0;
-#endif
- text_ptr->text = text;
- text_ptr->text_length = png_strlen(text);
-
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- png_free(png_ptr, text_ptr);
- if (ret)
- png_warning(png_ptr, "Insufficient memory to process text chunk.");
-}
-#endif
-
-#if defined(PNG_READ_zTXt_SUPPORTED)
-/* note: this does not correctly handle chunks that are > 64K under DOS */
-void /* PRIVATE */
-png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_textp text_ptr;
- png_charp text;
- int comp_type;
- int ret;
- png_size_t slength, prefix_len, data_len;
-
- png_debug(1, "in png_handle_zTXt");
-
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before zTXt");
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- png_ptr->mode |= PNG_AFTER_IDAT;
-
-#ifdef PNG_MAX_MALLOC_64K
- /* We will no doubt have problems with chunks even half this size, but
- there is no hard and fast rule to tell us where to stop. */
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "zTXt chunk too large to fit in memory");
- png_crc_finish(png_ptr, length);
- return;
- }
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
- if (png_ptr->chunkdata == NULL)
- {
- png_warning(png_ptr, "Out of memory processing zTXt chunk.");
- return;
- }
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
- if (png_crc_finish(png_ptr, 0))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00;
-
- for (text = png_ptr->chunkdata; *text; text++)
- /* empty loop */ ;
-
- /* zTXt must have some text after the chunkdataword */
- if (text >= png_ptr->chunkdata + slength - 2)
- {
- png_warning(png_ptr, "Truncated zTXt chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
- else
- {
- comp_type = *(++text);
- if (comp_type != PNG_TEXT_COMPRESSION_zTXt)
- {
- png_warning(png_ptr, "Unknown compression type in zTXt chunk");
- comp_type = PNG_TEXT_COMPRESSION_zTXt;
- }
- text++; /* skip the compression_method byte */
- }
- prefix_len = text - png_ptr->chunkdata;
-
- png_decompress_chunk(png_ptr, comp_type,
- (png_size_t)length, prefix_len, &data_len);
-
- text_ptr = (png_textp)png_malloc_warn(png_ptr,
- (png_uint_32)png_sizeof(png_text));
- if (text_ptr == NULL)
- {
- png_warning(png_ptr, "Not enough memory to process zTXt chunk.");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
- text_ptr->compression = comp_type;
- text_ptr->key = png_ptr->chunkdata;
-#ifdef PNG_iTXt_SUPPORTED
- text_ptr->lang = NULL;
- text_ptr->lang_key = NULL;
- text_ptr->itxt_length = 0;
-#endif
- text_ptr->text = png_ptr->chunkdata + prefix_len;
- text_ptr->text_length = data_len;
-
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
-
- png_free(png_ptr, text_ptr);
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- if (ret)
- png_error(png_ptr, "Insufficient memory to store zTXt chunk.");
-}
-#endif
-
-#if defined(PNG_READ_iTXt_SUPPORTED)
-/* note: this does not correctly handle chunks that are > 64K under DOS */
-void /* PRIVATE */
-png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_textp text_ptr;
- png_charp key, lang, text, lang_key;
- int comp_flag;
- int comp_type = 0;
- int ret;
- png_size_t slength, prefix_len, data_len;
-
- png_debug(1, "in png_handle_iTXt");
-
-
- if (!(png_ptr->mode & PNG_HAVE_IHDR))
- png_error(png_ptr, "Missing IHDR before iTXt");
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- png_ptr->mode |= PNG_AFTER_IDAT;
-
-#ifdef PNG_MAX_MALLOC_64K
- /* We will no doubt have problems with chunks even half this size, but
- there is no hard and fast rule to tell us where to stop. */
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "iTXt chunk too large to fit in memory");
- png_crc_finish(png_ptr, length);
- return;
- }
-#endif
-
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
- if (png_ptr->chunkdata == NULL)
- {
- png_warning(png_ptr, "No memory to process iTXt chunk.");
- return;
- }
- slength = (png_size_t)length;
- png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength);
- if (png_crc_finish(png_ptr, 0))
- {
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- png_ptr->chunkdata[slength] = 0x00;
-
- for (lang = png_ptr->chunkdata; *lang; lang++)
- /* empty loop */ ;
- lang++; /* skip NUL separator */
-
- /* iTXt must have a language tag (possibly empty), two compression bytes,
- translated keyword (possibly empty), and possibly some text after the
- keyword */
-
- if (lang >= png_ptr->chunkdata + slength - 3)
- {
- png_warning(png_ptr, "Truncated iTXt chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
- else
- {
- comp_flag = *lang++;
- comp_type = *lang++;
- }
-
- for (lang_key = lang; *lang_key; lang_key++)
- /* empty loop */ ;
- lang_key++; /* skip NUL separator */
-
- if (lang_key >= png_ptr->chunkdata + slength)
- {
- png_warning(png_ptr, "Truncated iTXt chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- for (text = lang_key; *text; text++)
- /* empty loop */ ;
- text++; /* skip NUL separator */
- if (text >= png_ptr->chunkdata + slength)
- {
- png_warning(png_ptr, "Malformed iTXt chunk");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
-
- prefix_len = text - png_ptr->chunkdata;
-
- key=png_ptr->chunkdata;
- if (comp_flag)
- png_decompress_chunk(png_ptr, comp_type,
- (size_t)length, prefix_len, &data_len);
- else
- data_len = png_strlen(png_ptr->chunkdata + prefix_len);
- text_ptr = (png_textp)png_malloc_warn(png_ptr,
- (png_uint_32)png_sizeof(png_text));
- if (text_ptr == NULL)
- {
- png_warning(png_ptr, "Not enough memory to process iTXt chunk.");
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- return;
- }
- text_ptr->compression = (int)comp_flag + 1;
- text_ptr->lang_key = png_ptr->chunkdata + (lang_key - key);
- text_ptr->lang = png_ptr->chunkdata + (lang - key);
- text_ptr->itxt_length = data_len;
- text_ptr->text_length = 0;
- text_ptr->key = png_ptr->chunkdata;
- text_ptr->text = png_ptr->chunkdata + prefix_len;
-
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1);
-
- png_free(png_ptr, text_ptr);
- png_free(png_ptr, png_ptr->chunkdata);
- png_ptr->chunkdata = NULL;
- if (ret)
- png_error(png_ptr, "Insufficient memory to store iTXt chunk.");
-}
-#endif
-
-/* This function is called when we haven't found a handler for a
- chunk. If there isn't a problem with the chunk itself (ie bad
- chunk name, CRC, or a critical chunk), the chunk is silently ignored
- -- unless the PNG_FLAG_UNKNOWN_CHUNKS_SUPPORTED flag is on in which
- case it will be saved away to be written out later. */
-void /* PRIVATE */
-png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
-{
- png_uint_32 skip = 0;
-
- png_debug(1, "in png_handle_unknown");
-
-
- if (png_ptr->mode & PNG_HAVE_IDAT)
- {
-#ifdef PNG_USE_LOCAL_ARRAYS
- PNG_CONST PNG_IDAT;
-#endif
- if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) /* not an IDAT */
- png_ptr->mode |= PNG_AFTER_IDAT;
- }
-
- if (!(png_ptr->chunk_name[0] & 0x20))
- {
-#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
- if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
- PNG_HANDLE_CHUNK_ALWAYS
-#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
- && png_ptr->read_user_chunk_fn == NULL
-#endif
- )
-#endif
- png_chunk_error(png_ptr, "unknown critical chunk");
- }
-
-#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
- if ((png_ptr->flags & PNG_FLAG_KEEP_UNKNOWN_CHUNKS) ||
- (png_ptr->read_user_chunk_fn != NULL))
- {
-#ifdef PNG_MAX_MALLOC_64K
- if (length > (png_uint_32)65535L)
- {
- png_warning(png_ptr, "unknown chunk too large to fit in memory");
- skip = length - (png_uint_32)65535L;
- length = (png_uint_32)65535L;
- }
-#endif
- png_memcpy((png_charp)png_ptr->unknown_chunk.name,
- (png_charp)png_ptr->chunk_name,
- png_sizeof(png_ptr->unknown_chunk.name));
- png_ptr->unknown_chunk.name[png_sizeof(png_ptr->unknown_chunk.name)-1] = '\0';
- png_ptr->unknown_chunk.size = (png_size_t)length;
- if (length == 0)
- png_ptr->unknown_chunk.data = NULL;
- else
- {
- png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr, length);
- png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length);
- }
-#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
- if (png_ptr->read_user_chunk_fn != NULL)
- {
- /* callback to user unknown chunk handler */
- int ret;
- ret = (*(png_ptr->read_user_chunk_fn))
- (png_ptr, &png_ptr->unknown_chunk);
- if (ret < 0)
- png_chunk_error(png_ptr, "error in user chunk");
- if (ret == 0)
- {
- if (!(png_ptr->chunk_name[0] & 0x20))
- if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) !=
- PNG_HANDLE_CHUNK_ALWAYS)
- png_chunk_error(png_ptr, "unknown critical chunk");
- png_set_unknown_chunks(png_ptr, info_ptr,
- &png_ptr->unknown_chunk, 1);
- }
- }
- else
-#endif
- png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1);
- png_free(png_ptr, png_ptr->unknown_chunk.data);
- png_ptr->unknown_chunk.data = NULL;
- }
- else
-#endif
- skip = length;
-
- png_crc_finish(png_ptr, skip);
-
-#if !defined(PNG_READ_USER_CHUNKS_SUPPORTED)
- info_ptr = info_ptr; /* quiet compiler warnings about unused info_ptr */
-#endif
-}
-
-/* This function is called to verify that a chunk name is valid.
- This function can't have the "critical chunk check" incorporated
- into it, since in the future we will need to be able to call user
- functions to handle unknown critical chunks after we check that
- the chunk name itself is valid. */
-
-#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97))
-
-void /* PRIVATE */
-png_check_chunk_name(png_structp png_ptr, png_bytep chunk_name)
-{
- png_debug(1, "in png_check_chunk_name");
- if (isnonalpha(chunk_name[0]) || isnonalpha(chunk_name[1]) ||
- isnonalpha(chunk_name[2]) || isnonalpha(chunk_name[3]))
- {
- png_chunk_error(png_ptr, "invalid chunk type");
- }
-}
-
-/* Combines the row recently read in with the existing pixels in the
- row. This routine takes care of alpha and transparency if requested.
- This routine also handles the two methods of progressive display
- of interlaced images, depending on the mask value.
- The mask value describes which pixels are to be combined with
- the row. The pattern always repeats every 8 pixels, so just 8
- bits are needed. A one indicates the pixel is to be combined,
- a zero indicates the pixel is to be skipped. This is in addition
- to any alpha or transparency value associated with the pixel. If
- you want all pixels to be combined, pass 0xff (255) in mask. */
-
-void /* PRIVATE */
-png_combine_row(png_structp png_ptr, png_bytep row, int mask)
-{
- png_debug(1, "in png_combine_row");
- if (mask == 0xff)
- {
- png_memcpy(row, png_ptr->row_buf + 1,
- PNG_ROWBYTES(png_ptr->row_info.pixel_depth, png_ptr->width));
- }
- else
- {
- switch (png_ptr->row_info.pixel_depth)
- {
- case 1:
- {
- png_bytep sp = png_ptr->row_buf + 1;
- png_bytep dp = row;
- int s_inc, s_start, s_end;
- int m = 0x80;
- int shift;
- png_uint_32 i;
- png_uint_32 row_width = png_ptr->width;
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_PACKSWAP)
- {
- s_start = 0;
- s_end = 7;
- s_inc = 1;
- }
- else
-#endif
- {
- s_start = 7;
- s_end = 0;
- s_inc = -1;
- }
-
- shift = s_start;
-
- for (i = 0; i < row_width; i++)
- {
- if (m & mask)
- {
- int value;
-
- value = (*sp >> shift) & 0x01;
- *dp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff);
- *dp |= (png_byte)(value << shift);
- }
-
- if (shift == s_end)
- {
- shift = s_start;
- sp++;
- dp++;
- }
- else
- shift += s_inc;
-
- if (m == 1)
- m = 0x80;
- else
- m >>= 1;
- }
- break;
- }
- case 2:
- {
- png_bytep sp = png_ptr->row_buf + 1;
- png_bytep dp = row;
- int s_start, s_end, s_inc;
- int m = 0x80;
- int shift;
- png_uint_32 i;
- png_uint_32 row_width = png_ptr->width;
- int value;
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_PACKSWAP)
- {
- s_start = 0;
- s_end = 6;
- s_inc = 2;
- }
- else
-#endif
- {
- s_start = 6;
- s_end = 0;
- s_inc = -2;
- }
-
- shift = s_start;
-
- for (i = 0; i < row_width; i++)
- {
- if (m & mask)
- {
- value = (*sp >> shift) & 0x03;
- *dp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);
- *dp |= (png_byte)(value << shift);
- }
-
- if (shift == s_end)
- {
- shift = s_start;
- sp++;
- dp++;
- }
- else
- shift += s_inc;
- if (m == 1)
- m = 0x80;
- else
- m >>= 1;
- }
- break;
- }
- case 4:
- {
- png_bytep sp = png_ptr->row_buf + 1;
- png_bytep dp = row;
- int s_start, s_end, s_inc;
- int m = 0x80;
- int shift;
- png_uint_32 i;
- png_uint_32 row_width = png_ptr->width;
- int value;
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)
- if (png_ptr->transformations & PNG_PACKSWAP)
- {
- s_start = 0;
- s_end = 4;
- s_inc = 4;
- }
- else
-#endif
- {
- s_start = 4;
- s_end = 0;
- s_inc = -4;
- }
- shift = s_start;
-
- for (i = 0; i < row_width; i++)
- {
- if (m & mask)
- {
- value = (*sp >> shift) & 0xf;
- *dp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);
- *dp |= (png_byte)(value << shift);
- }
-
- if (shift == s_end)
- {
- shift = s_start;
- sp++;
- dp++;
- }
- else
- shift += s_inc;
- if (m == 1)
- m = 0x80;
- else
- m >>= 1;
- }
- break;
- }
- default:
- {
- png_bytep sp = png_ptr->row_buf + 1;
- png_bytep dp = row;
- png_size_t pixel_bytes = (png_ptr->row_info.pixel_depth >> 3);
- png_uint_32 i;
- png_uint_32 row_width = png_ptr->width;
- png_byte m = 0x80;
-
-
- for (i = 0; i < row_width; i++)
- {
- if (m & mask)
- {
- png_memcpy(dp, sp, pixel_bytes);
- }
-
- sp += pixel_bytes;
- dp += pixel_bytes;
-
- if (m == 1)
- m = 0x80;
- else
- m >>= 1;
- }
- break;
- }
- }
- }
-}
-
-#ifdef PNG_READ_INTERLACING_SUPPORTED
-/* OLD pre-1.0.9 interface:
-void png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass,
- png_uint_32 transformations)
- */
-void /* PRIVATE */
-png_do_read_interlace(png_structp png_ptr)
-{
- png_row_infop row_info = &(png_ptr->row_info);
- png_bytep row = png_ptr->row_buf + 1;
- int pass = png_ptr->pass;
- png_uint_32 transformations = png_ptr->transformations;
-#ifdef PNG_USE_LOCAL_ARRAYS
- /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
- /* offset to next interlace block */
- PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
-#endif
-
- png_debug(1, "in png_do_read_interlace");
- if (row != NULL && row_info != NULL)
- {
- png_uint_32 final_width;
-
- final_width = row_info->width * png_pass_inc[pass];
-
- switch (row_info->pixel_depth)
- {
- case 1:
- {
- png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 3);
- png_bytep dp = row + (png_size_t)((final_width - 1) >> 3);
- int sshift, dshift;
- int s_start, s_end, s_inc;
- int jstop = png_pass_inc[pass];
- png_byte v;
- png_uint_32 i;
- int j;
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)
- if (transformations & PNG_PACKSWAP)
- {
- sshift = (int)((row_info->width + 7) & 0x07);
- dshift = (int)((final_width + 7) & 0x07);
- s_start = 7;
- s_end = 0;
- s_inc = -1;
- }
- else
-#endif
- {
- sshift = 7 - (int)((row_info->width + 7) & 0x07);
- dshift = 7 - (int)((final_width + 7) & 0x07);
- s_start = 0;
- s_end = 7;
- s_inc = 1;
- }
-
- for (i = 0; i < row_info->width; i++)
- {
- v = (png_byte)((*sp >> sshift) & 0x01);
- for (j = 0; j < jstop; j++)
- {
- *dp &= (png_byte)((0x7f7f >> (7 - dshift)) & 0xff);
- *dp |= (png_byte)(v << dshift);
- if (dshift == s_end)
- {
- dshift = s_start;
- dp--;
- }
- else
- dshift += s_inc;
- }
- if (sshift == s_end)
- {
- sshift = s_start;
- sp--;
- }
- else
- sshift += s_inc;
- }
- break;
- }
- case 2:
- {
- png_bytep sp = row + (png_uint_32)((row_info->width - 1) >> 2);
- png_bytep dp = row + (png_uint_32)((final_width - 1) >> 2);
- int sshift, dshift;
- int s_start, s_end, s_inc;
- int jstop = png_pass_inc[pass];
- png_uint_32 i;
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)
- if (transformations & PNG_PACKSWAP)
- {
- sshift = (int)(((row_info->width + 3) & 0x03) << 1);
- dshift = (int)(((final_width + 3) & 0x03) << 1);
- s_start = 6;
- s_end = 0;
- s_inc = -2;
- }
- else
-#endif
- {
- sshift = (int)((3 - ((row_info->width + 3) & 0x03)) << 1);
- dshift = (int)((3 - ((final_width + 3) & 0x03)) << 1);
- s_start = 0;
- s_end = 6;
- s_inc = 2;
- }
-
- for (i = 0; i < row_info->width; i++)
- {
- png_byte v;
- int j;
-
- v = (png_byte)((*sp >> sshift) & 0x03);
- for (j = 0; j < jstop; j++)
- {
- *dp &= (png_byte)((0x3f3f >> (6 - dshift)) & 0xff);
- *dp |= (png_byte)(v << dshift);
- if (dshift == s_end)
- {
- dshift = s_start;
- dp--;
- }
- else
- dshift += s_inc;
- }
- if (sshift == s_end)
- {
- sshift = s_start;
- sp--;
- }
- else
- sshift += s_inc;
- }
- break;
- }
- case 4:
- {
- png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 1);
- png_bytep dp = row + (png_size_t)((final_width - 1) >> 1);
- int sshift, dshift;
- int s_start, s_end, s_inc;
- png_uint_32 i;
- int jstop = png_pass_inc[pass];
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)
- if (transformations & PNG_PACKSWAP)
- {
- sshift = (int)(((row_info->width + 1) & 0x01) << 2);
- dshift = (int)(((final_width + 1) & 0x01) << 2);
- s_start = 4;
- s_end = 0;
- s_inc = -4;
- }
- else
-#endif
- {
- sshift = (int)((1 - ((row_info->width + 1) & 0x01)) << 2);
- dshift = (int)((1 - ((final_width + 1) & 0x01)) << 2);
- s_start = 0;
- s_end = 4;
- s_inc = 4;
- }
-
- for (i = 0; i < row_info->width; i++)
- {
- png_byte v = (png_byte)((*sp >> sshift) & 0xf);
- int j;
-
- for (j = 0; j < jstop; j++)
- {
- *dp &= (png_byte)((0xf0f >> (4 - dshift)) & 0xff);
- *dp |= (png_byte)(v << dshift);
- if (dshift == s_end)
- {
- dshift = s_start;
- dp--;
- }
- else
- dshift += s_inc;
- }
- if (sshift == s_end)
- {
- sshift = s_start;
- sp--;
- }
- else
- sshift += s_inc;
- }
- break;
- }
- default:
- {
- png_size_t pixel_bytes = (row_info->pixel_depth >> 3);
- png_bytep sp = row + (png_size_t)(row_info->width - 1) * pixel_bytes;
- png_bytep dp = row + (png_size_t)(final_width - 1) * pixel_bytes;
-
- int jstop = png_pass_inc[pass];
- png_uint_32 i;
-
- for (i = 0; i < row_info->width; i++)
- {
- png_byte v[8];
- int j;
-
- png_memcpy(v, sp, pixel_bytes);
- for (j = 0; j < jstop; j++)
- {
- png_memcpy(dp, v, pixel_bytes);
- dp -= pixel_bytes;
- }
- sp -= pixel_bytes;
- }
- break;
- }
- }
- row_info->width = final_width;
- row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, final_width);
- }
-#if !defined(PNG_READ_PACKSWAP_SUPPORTED)
- transformations = transformations; /* silence compiler warning */
-#endif
-}
-#endif /* PNG_READ_INTERLACING_SUPPORTED */
-
-void /* PRIVATE */
-png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row,
- png_bytep prev_row, int filter)
-{
- png_debug(1, "in png_read_filter_row");
- png_debug2(2, "row = %lu, filter = %d", png_ptr->row_number, filter);
- switch (filter)
- {
- case PNG_FILTER_VALUE_NONE:
- break;
- case PNG_FILTER_VALUE_SUB:
- {
- png_uint_32 i;
- png_uint_32 istop = row_info->rowbytes;
- png_uint_32 bpp = (row_info->pixel_depth + 7) >> 3;
- png_bytep rp = row + bpp;
- png_bytep lp = row;
-
- for (i = bpp; i < istop; i++)
- {
- *rp = (png_byte)(((int)(*rp) + (int)(*lp++)) & 0xff);
- rp++;
- }
- break;
- }
- case PNG_FILTER_VALUE_UP:
- {
- png_uint_32 i;
- png_uint_32 istop = row_info->rowbytes;
- png_bytep rp = row;
- png_bytep pp = prev_row;
-
- for (i = 0; i < istop; i++)
- {
- *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff);
- rp++;
- }
- break;
- }
- case PNG_FILTER_VALUE_AVG:
- {
- png_uint_32 i;
- png_bytep rp = row;
- png_bytep pp = prev_row;
- png_bytep lp = row;
- png_uint_32 bpp = (row_info->pixel_depth + 7) >> 3;
- png_uint_32 istop = row_info->rowbytes - bpp;
-
- for (i = 0; i < bpp; i++)
- {
- *rp = (png_byte)(((int)(*rp) +
- ((int)(*pp++) / 2 )) & 0xff);
- rp++;
- }
-
- for (i = 0; i < istop; i++)
- {
- *rp = (png_byte)(((int)(*rp) +
- (int)(*pp++ + *lp++) / 2 ) & 0xff);
- rp++;
- }
- break;
- }
- case PNG_FILTER_VALUE_PAETH:
- {
- png_uint_32 i;
- png_bytep rp = row;
- png_bytep pp = prev_row;
- png_bytep lp = row;
- png_bytep cp = prev_row;
- png_uint_32 bpp = (row_info->pixel_depth + 7) >> 3;
- png_uint_32 istop=row_info->rowbytes - bpp;
-
- for (i = 0; i < bpp; i++)
- {
- *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff);
- rp++;
- }
-
- for (i = 0; i < istop; i++) /* use leftover rp,pp */
- {
- int a, b, c, pa, pb, pc, p;
-
- a = *lp++;
- b = *pp++;
- c = *cp++;
-
- p = b - c;
- pc = a - c;
-
-#ifdef PNG_USE_ABS
- pa = abs(p);
- pb = abs(pc);
- pc = abs(p + pc);
-#else
- pa = p < 0 ? -p : p;
- pb = pc < 0 ? -pc : pc;
- pc = (p + pc) < 0 ? -(p + pc) : p + pc;
-#endif
-
- /*
- if (pa <= pb && pa <= pc)
- p = a;
- else if (pb <= pc)
- p = b;
- else
- p = c;
- */
-
- p = (pa <= pb && pa <= pc) ? a : (pb <= pc) ? b : c;
-
- *rp = (png_byte)(((int)(*rp) + p) & 0xff);
- rp++;
- }
- break;
- }
- default:
- png_warning(png_ptr, "Ignoring bad adaptive filter type");
- *row = 0;
- break;
- }
-}
-
-void /* PRIVATE */
-png_read_finish_row(png_structp png_ptr)
-{
-#ifdef PNG_USE_LOCAL_ARRAYS
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
-
- /* start of interlace block */
- PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
-
- /* offset to next interlace block */
- PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
-
- /* start of interlace block in the y direction */
- PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
-
- /* offset to next interlace block in the y direction */
- PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
-#endif /* PNG_READ_INTERLACING_SUPPORTED */
-#endif
-
- png_debug(1, "in png_read_finish_row");
- png_ptr->row_number++;
- if (png_ptr->row_number < png_ptr->num_rows)
- return;
-
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- if (png_ptr->interlaced)
- {
- png_ptr->row_number = 0;
- png_memset_check(png_ptr, png_ptr->prev_row, 0,
- png_ptr->rowbytes + 1);
- do
- {
- png_ptr->pass++;
- if (png_ptr->pass >= 7)
- break;
- png_ptr->iwidth = (png_ptr->width +
- png_pass_inc[png_ptr->pass] - 1 -
- png_pass_start[png_ptr->pass]) /
- png_pass_inc[png_ptr->pass];
-
- png_ptr->irowbytes = PNG_ROWBYTES(png_ptr->pixel_depth,
- png_ptr->iwidth) + 1;
-
- if (!(png_ptr->transformations & PNG_INTERLACE))
- {
- png_ptr->num_rows = (png_ptr->height +
- png_pass_yinc[png_ptr->pass] - 1 -
- png_pass_ystart[png_ptr->pass]) /
- png_pass_yinc[png_ptr->pass];
- if (!(png_ptr->num_rows))
- continue;
- }
- else /* if (png_ptr->transformations & PNG_INTERLACE) */
- break;
- } while (png_ptr->iwidth == 0);
-
- if (png_ptr->pass < 7)
- return;
- }
-#endif /* PNG_READ_INTERLACING_SUPPORTED */
-
- if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
- {
-#ifdef PNG_USE_LOCAL_ARRAYS
- PNG_CONST PNG_IDAT;
-#endif
- char extra;
- int ret;
-
- png_ptr->zstream.next_out = (Byte *)&extra;
- png_ptr->zstream.avail_out = (uInt)1;
- for (;;)
- {
- if (!(png_ptr->zstream.avail_in))
- {
- while (!png_ptr->idat_size)
- {
- png_byte chunk_length[4];
-
- png_crc_finish(png_ptr, 0);
-
- png_read_data(png_ptr, chunk_length, 4);
- png_ptr->idat_size = png_get_uint_31(png_ptr, chunk_length);
- png_reset_crc(png_ptr);
- png_crc_read(png_ptr, png_ptr->chunk_name, 4);
- if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
- png_error(png_ptr, "Not enough image data");
-
- }
- png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size;
- png_ptr->zstream.next_in = png_ptr->zbuf;
- if (png_ptr->zbuf_size > png_ptr->idat_size)
- png_ptr->zstream.avail_in = (uInt)png_ptr->idat_size;
- png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zstream.avail_in);
- png_ptr->idat_size -= png_ptr->zstream.avail_in;
- }
- ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH);
- if (ret == Z_STREAM_END)
- {
- if (!(png_ptr->zstream.avail_out) || png_ptr->zstream.avail_in ||
- png_ptr->idat_size)
- png_warning(png_ptr, "Extra compressed data");
- png_ptr->mode |= PNG_AFTER_IDAT;
- png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
- break;
- }
- if (ret != Z_OK)
- png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg :
- "Decompression Error");
-
- if (!(png_ptr->zstream.avail_out))
- {
- png_warning(png_ptr, "Extra compressed data.");
- png_ptr->mode |= PNG_AFTER_IDAT;
- png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
- break;
- }
-
- }
- png_ptr->zstream.avail_out = 0;
- }
-
- if (png_ptr->idat_size || png_ptr->zstream.avail_in)
- png_warning(png_ptr, "Extra compression data");
-
- inflateReset(&png_ptr->zstream);
-
- png_ptr->mode |= PNG_AFTER_IDAT;
-}
-
-void /* PRIVATE */
-png_read_start_row(png_structp png_ptr)
-{
-#ifdef PNG_USE_LOCAL_ARRAYS
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- /* arrays to facilitate easy interlacing - use pass (0 - 6) as index */
-
- /* start of interlace block */
- PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
-
- /* offset to next interlace block */
- PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
-
- /* start of interlace block in the y direction */
- PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
-
- /* offset to next interlace block in the y direction */
- PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
-#endif
-#endif
-
- int max_pixel_depth;
- png_size_t row_bytes;
-
- png_debug(1, "in png_read_start_row");
- png_ptr->zstream.avail_in = 0;
- png_init_read_transformations(png_ptr);
-#ifdef PNG_READ_INTERLACING_SUPPORTED
- if (png_ptr->interlaced)
- {
- if (!(png_ptr->transformations & PNG_INTERLACE))
- png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 -
- png_pass_ystart[0]) / png_pass_yinc[0];
- else
- png_ptr->num_rows = png_ptr->height;
-
- png_ptr->iwidth = (png_ptr->width +
- png_pass_inc[png_ptr->pass] - 1 -
- png_pass_start[png_ptr->pass]) /
- png_pass_inc[png_ptr->pass];
-
- png_ptr->irowbytes =
- PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->iwidth) + 1;
- }
- else
-#endif /* PNG_READ_INTERLACING_SUPPORTED */
- {
- png_ptr->num_rows = png_ptr->height;
- png_ptr->iwidth = png_ptr->width;
- png_ptr->irowbytes = png_ptr->rowbytes + 1;
- }
- max_pixel_depth = png_ptr->pixel_depth;
-
-#if defined(PNG_READ_PACK_SUPPORTED)
- if ((png_ptr->transformations & PNG_PACK) && png_ptr->bit_depth < 8)
- max_pixel_depth = 8;
-#endif
-
-#if defined(PNG_READ_EXPAND_SUPPORTED)
- if (png_ptr->transformations & PNG_EXPAND)
- {
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- {
- if (png_ptr->num_trans)
- max_pixel_depth = 32;
- else
- max_pixel_depth = 24;
- }
- else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY)
- {
- if (max_pixel_depth < 8)
- max_pixel_depth = 8;
- if (png_ptr->num_trans)
- max_pixel_depth *= 2;
- }
- else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
- {
- if (png_ptr->num_trans)
- {
- max_pixel_depth *= 4;
- max_pixel_depth /= 3;
- }
- }
- }
-#endif
-
-#if defined(PNG_READ_FILLER_SUPPORTED)
- if (png_ptr->transformations & (PNG_FILLER))
- {
- if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- max_pixel_depth = 32;
- else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY)
- {
- if (max_pixel_depth <= 8)
- max_pixel_depth = 16;
- else
- max_pixel_depth = 32;
- }
- else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
- {
- if (max_pixel_depth <= 32)
- max_pixel_depth = 32;
- else
- max_pixel_depth = 64;
- }
- }
-#endif
-
-#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
- if (png_ptr->transformations & PNG_GRAY_TO_RGB)
- {
- if (
-#if defined(PNG_READ_EXPAND_SUPPORTED)
- (png_ptr->num_trans && (png_ptr->transformations & PNG_EXPAND)) ||
-#endif
-#if defined(PNG_READ_FILLER_SUPPORTED)
- (png_ptr->transformations & (PNG_FILLER)) ||
-#endif
- png_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- {
- if (max_pixel_depth <= 16)
- max_pixel_depth = 32;
- else
- max_pixel_depth = 64;
- }
- else
- {
- if (max_pixel_depth <= 8)
- {
- if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- max_pixel_depth = 32;
- else
- max_pixel_depth = 24;
- }
- else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- max_pixel_depth = 64;
- else
- max_pixel_depth = 48;
- }
- }
-#endif
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) && \
-defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
- if (png_ptr->transformations & PNG_USER_TRANSFORM)
- {
- int user_pixel_depth = png_ptr->user_transform_depth*
- png_ptr->user_transform_channels;
- if (user_pixel_depth > max_pixel_depth)
- max_pixel_depth=user_pixel_depth;
- }
-#endif
-
- /* align the width on the next larger 8 pixels. Mainly used
- for interlacing */
- row_bytes = ((png_ptr->width + 7) & ~((png_uint_32)7));
- /* calculate the maximum bytes needed, adding a byte and a pixel
- for safety's sake */
- row_bytes = PNG_ROWBYTES(max_pixel_depth, row_bytes) +
- 1 + ((max_pixel_depth + 7) >> 3);
-#ifdef PNG_MAX_MALLOC_64K
- if (row_bytes > (png_uint_32)65536L)
- png_error(png_ptr, "This image requires a row greater than 64KB");
-#endif
-
- if (row_bytes + 64 > png_ptr->old_big_row_buf_size)
- {
- png_free(png_ptr, png_ptr->big_row_buf);
- png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes + 64);
- if (png_ptr->interlaced)
- png_memset(png_ptr->big_row_buf, 0, png_ptr->rowbytes + 64);
- png_ptr->row_buf = png_ptr->big_row_buf + 32;
- png_ptr->old_big_row_buf_size = row_bytes + 64;
- }
-
-#ifdef PNG_MAX_MALLOC_64K
- if ((png_uint_32)png_ptr->rowbytes + 1 > (png_uint_32)65536L)
- png_error(png_ptr, "This image requires a row greater than 64KB");
-#endif
- if ((png_uint_32)png_ptr->rowbytes > (png_uint_32)(PNG_SIZE_MAX - 1))
- png_error(png_ptr, "Row has too many bytes to allocate in memory.");
-
- if (png_ptr->rowbytes+1 > png_ptr->old_prev_row_size)
- {
- png_free(png_ptr, png_ptr->prev_row);
- png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)(
- png_ptr->rowbytes + 1));
- png_ptr->old_prev_row_size = png_ptr->rowbytes+1;
- }
-
- png_memset_check(png_ptr, png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
-
- png_debug1(3, "width = %lu,", png_ptr->width);
- png_debug1(3, "height = %lu,", png_ptr->height);
- png_debug1(3, "iwidth = %lu,", png_ptr->iwidth);
- png_debug1(3, "num_rows = %lu,", png_ptr->num_rows);
- png_debug1(3, "rowbytes = %lu,", png_ptr->rowbytes);
- png_debug1(3, "irowbytes = %lu", png_ptr->irowbytes);
-
- png_ptr->flags |= PNG_FLAG_ROW_INIT;
-}
-#endif /* PNG_READ_SUPPORTED */
diff --git a/navit/support/libpng/pngset.c b/navit/support/libpng/pngset.c
deleted file mode 100644
index 9aa29f12e..000000000
--- a/navit/support/libpng/pngset.c
+++ /dev/null
@@ -1,1253 +0,0 @@
-
-/* pngset.c - storage of image information into info struct
- *
- * Last changed in libpng 1.2.36 [May 7, 2009]
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2009 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- *
- * The functions here are used during reads to store data from the file
- * into the info struct, and during writes to store application data
- * into the info struct for writing into the file. This abstracts the
- * info struct and allows us to change the structure in the future.
- */
-
-#define PNG_INTERNAL
-#include "png.h"
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-
-#if defined(PNG_bKGD_SUPPORTED)
-void PNGAPI
-png_set_bKGD(png_structp png_ptr, png_infop info_ptr, png_color_16p background)
-{
- png_debug1(1, "in %s storage function", "bKGD");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- png_memcpy(&(info_ptr->background), background, png_sizeof(png_color_16));
- info_ptr->valid |= PNG_INFO_bKGD;
-}
-#endif
-
-#if defined(PNG_cHRM_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-void PNGAPI
-png_set_cHRM(png_structp png_ptr, png_infop info_ptr,
- double white_x, double white_y, double red_x, double red_y,
- double green_x, double green_y, double blue_x, double blue_y)
-{
- png_debug1(1, "in %s storage function", "cHRM");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- info_ptr->x_white = (float)white_x;
- info_ptr->y_white = (float)white_y;
- info_ptr->x_red = (float)red_x;
- info_ptr->y_red = (float)red_y;
- info_ptr->x_green = (float)green_x;
- info_ptr->y_green = (float)green_y;
- info_ptr->x_blue = (float)blue_x;
- info_ptr->y_blue = (float)blue_y;
-#ifdef PNG_FIXED_POINT_SUPPORTED
- info_ptr->int_x_white = (png_fixed_point)(white_x*100000.+0.5);
- info_ptr->int_y_white = (png_fixed_point)(white_y*100000.+0.5);
- info_ptr->int_x_red = (png_fixed_point)( red_x*100000.+0.5);
- info_ptr->int_y_red = (png_fixed_point)( red_y*100000.+0.5);
- info_ptr->int_x_green = (png_fixed_point)(green_x*100000.+0.5);
- info_ptr->int_y_green = (png_fixed_point)(green_y*100000.+0.5);
- info_ptr->int_x_blue = (png_fixed_point)( blue_x*100000.+0.5);
- info_ptr->int_y_blue = (png_fixed_point)( blue_y*100000.+0.5);
-#endif
- info_ptr->valid |= PNG_INFO_cHRM;
-}
-#endif /* PNG_FLOATING_POINT_SUPPORTED */
-
-#ifdef PNG_FIXED_POINT_SUPPORTED
-void PNGAPI
-png_set_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
- png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x,
- png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y,
- png_fixed_point blue_x, png_fixed_point blue_y)
-{
- png_debug1(1, "in %s storage function", "cHRM fixed");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
-#if !defined(PNG_NO_CHECK_cHRM)
- if (png_check_cHRM_fixed(png_ptr,
- white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y))
-#endif
- {
- info_ptr->int_x_white = white_x;
- info_ptr->int_y_white = white_y;
- info_ptr->int_x_red = red_x;
- info_ptr->int_y_red = red_y;
- info_ptr->int_x_green = green_x;
- info_ptr->int_y_green = green_y;
- info_ptr->int_x_blue = blue_x;
- info_ptr->int_y_blue = blue_y;
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- info_ptr->x_white = (float)(white_x/100000.);
- info_ptr->y_white = (float)(white_y/100000.);
- info_ptr->x_red = (float)( red_x/100000.);
- info_ptr->y_red = (float)( red_y/100000.);
- info_ptr->x_green = (float)(green_x/100000.);
- info_ptr->y_green = (float)(green_y/100000.);
- info_ptr->x_blue = (float)( blue_x/100000.);
- info_ptr->y_blue = (float)( blue_y/100000.);
-#endif
- info_ptr->valid |= PNG_INFO_cHRM;
- }
-}
-#endif /* PNG_FIXED_POINT_SUPPORTED */
-#endif /* PNG_cHRM_SUPPORTED */
-
-#if defined(PNG_gAMA_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-void PNGAPI
-png_set_gAMA(png_structp png_ptr, png_infop info_ptr, double file_gamma)
-{
- double png_gamma;
- png_debug1(1, "in %s storage function", "gAMA");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- /* Check for overflow */
- if (file_gamma > 21474.83)
- {
- png_warning(png_ptr, "Limiting gamma to 21474.83");
- png_gamma=21474.83;
- }
- else
- png_gamma = file_gamma;
- info_ptr->gamma = (float)png_gamma;
-#ifdef PNG_FIXED_POINT_SUPPORTED
- info_ptr->int_gamma = (int)(png_gamma*100000.+.5);
-#endif
- info_ptr->valid |= PNG_INFO_gAMA;
- if (png_gamma == 0.0)
- png_warning(png_ptr, "Setting gamma=0");
-}
-#endif
-void PNGAPI
-png_set_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point
- int_gamma)
-{
- png_fixed_point png_gamma;
-
- png_debug1(1, "in %s storage function", "gAMA");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- if (int_gamma > (png_fixed_point) PNG_UINT_31_MAX)
- {
- png_warning(png_ptr, "Limiting gamma to 21474.83");
- png_gamma=PNG_UINT_31_MAX;
- }
- else
- {
- if (int_gamma < 0)
- {
- png_warning(png_ptr, "Setting negative gamma to zero");
- png_gamma = 0;
- }
- else
- png_gamma = int_gamma;
- }
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- info_ptr->gamma = (float)(png_gamma/100000.);
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
- info_ptr->int_gamma = png_gamma;
-#endif
- info_ptr->valid |= PNG_INFO_gAMA;
- if (png_gamma == 0)
- png_warning(png_ptr, "Setting gamma=0");
-}
-#endif
-
-#if defined(PNG_hIST_SUPPORTED)
-void PNGAPI
-png_set_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p hist)
-{
- int i;
-
- png_debug1(1, "in %s storage function", "hIST");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
- if (info_ptr->num_palette == 0 || info_ptr->num_palette
- > PNG_MAX_PALETTE_LENGTH)
- {
- png_warning(png_ptr,
- "Invalid palette size, hIST allocation skipped.");
- return;
- }
-
-#ifdef PNG_FREE_ME_SUPPORTED
- png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0);
-#endif
- /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in version
- 1.2.1 */
- png_ptr->hist = (png_uint_16p)png_malloc_warn(png_ptr,
- (png_uint_32)(PNG_MAX_PALETTE_LENGTH * png_sizeof(png_uint_16)));
- if (png_ptr->hist == NULL)
- {
- png_warning(png_ptr, "Insufficient memory for hIST chunk data.");
- return;
- }
-
- for (i = 0; i < info_ptr->num_palette; i++)
- png_ptr->hist[i] = hist[i];
- info_ptr->hist = png_ptr->hist;
- info_ptr->valid |= PNG_INFO_hIST;
-
-#ifdef PNG_FREE_ME_SUPPORTED
- info_ptr->free_me |= PNG_FREE_HIST;
-#else
- png_ptr->flags |= PNG_FLAG_FREE_HIST;
-#endif
-}
-#endif
-
-void PNGAPI
-png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
- png_uint_32 width, png_uint_32 height, int bit_depth,
- int color_type, int interlace_type, int compression_type,
- int filter_type)
-{
- png_debug1(1, "in %s storage function", "IHDR");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- /* check for width and height valid values */
- if (width == 0 || height == 0)
- png_error(png_ptr, "Image width or height is zero in IHDR");
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
- if (width > png_ptr->user_width_max || height > png_ptr->user_height_max)
- png_error(png_ptr, "image size exceeds user limits in IHDR");
-#else
- if (width > PNG_USER_WIDTH_MAX || height > PNG_USER_HEIGHT_MAX)
- png_error(png_ptr, "image size exceeds user limits in IHDR");
-#endif
- if (width > PNG_UINT_31_MAX || height > PNG_UINT_31_MAX)
- png_error(png_ptr, "Invalid image size in IHDR");
- if ( width > (PNG_UINT_32_MAX
- >> 3) /* 8-byte RGBA pixels */
- - 64 /* bigrowbuf hack */
- - 1 /* filter byte */
- - 7*8 /* rounding of width to multiple of 8 pixels */
- - 8) /* extra max_pixel_depth pad */
- png_warning(png_ptr, "Width is too large for libpng to process pixels");
-
- /* check other values */
- if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 &&
- bit_depth != 8 && bit_depth != 16)
- png_error(png_ptr, "Invalid bit depth in IHDR");
-
- if (color_type < 0 || color_type == 1 ||
- color_type == 5 || color_type > 6)
- png_error(png_ptr, "Invalid color type in IHDR");
-
- if (((color_type == PNG_COLOR_TYPE_PALETTE) && bit_depth > 8) ||
- ((color_type == PNG_COLOR_TYPE_RGB ||
- color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
- color_type == PNG_COLOR_TYPE_RGB_ALPHA) && bit_depth < 8))
- png_error(png_ptr, "Invalid color type/bit depth combination in IHDR");
-
- if (interlace_type >= PNG_INTERLACE_LAST)
- png_error(png_ptr, "Unknown interlace method in IHDR");
-
- if (compression_type != PNG_COMPRESSION_TYPE_BASE)
- png_error(png_ptr, "Unknown compression method in IHDR");
-
-#if defined(PNG_MNG_FEATURES_SUPPORTED)
- /* Accept filter_method 64 (intrapixel differencing) only if
- * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and
- * 2. Libpng did not read a PNG signature (this filter_method is only
- * used in PNG datastreams that are embedded in MNG datastreams) and
- * 3. The application called png_permit_mng_features with a mask that
- * included PNG_FLAG_MNG_FILTER_64 and
- * 4. The filter_method is 64 and
- * 5. The color_type is RGB or RGBA
- */
- if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&png_ptr->mng_features_permitted)
- png_warning(png_ptr, "MNG features are not allowed in a PNG datastream");
- if (filter_type != PNG_FILTER_TYPE_BASE)
- {
- if (!((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
- (filter_type == PNG_INTRAPIXEL_DIFFERENCING) &&
- ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) &&
- (color_type == PNG_COLOR_TYPE_RGB ||
- color_type == PNG_COLOR_TYPE_RGB_ALPHA)))
- png_error(png_ptr, "Unknown filter method in IHDR");
- if (png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)
- png_warning(png_ptr, "Invalid filter method in IHDR");
- }
-#else
- if (filter_type != PNG_FILTER_TYPE_BASE)
- png_error(png_ptr, "Unknown filter method in IHDR");
-#endif
-
- info_ptr->width = width;
- info_ptr->height = height;
- info_ptr->bit_depth = (png_byte)bit_depth;
- info_ptr->color_type =(png_byte) color_type;
- info_ptr->compression_type = (png_byte)compression_type;
- info_ptr->filter_type = (png_byte)filter_type;
- info_ptr->interlace_type = (png_byte)interlace_type;
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- info_ptr->channels = 1;
- else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR)
- info_ptr->channels = 3;
- else
- info_ptr->channels = 1;
- if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA)
- info_ptr->channels++;
- info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth);
-
- /* check for potential overflow */
- if (width > (PNG_UINT_32_MAX
- >> 3) /* 8-byte RGBA pixels */
- - 64 /* bigrowbuf hack */
- - 1 /* filter byte */
- - 7*8 /* rounding of width to multiple of 8 pixels */
- - 8) /* extra max_pixel_depth pad */
- info_ptr->rowbytes = (png_size_t)0;
- else
- info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width);
-}
-
-#if defined(PNG_oFFs_SUPPORTED)
-void PNGAPI
-png_set_oFFs(png_structp png_ptr, png_infop info_ptr,
- png_int_32 offset_x, png_int_32 offset_y, int unit_type)
-{
- png_debug1(1, "in %s storage function", "oFFs");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- info_ptr->x_offset = offset_x;
- info_ptr->y_offset = offset_y;
- info_ptr->offset_unit_type = (png_byte)unit_type;
- info_ptr->valid |= PNG_INFO_oFFs;
-}
-#endif
-
-#if defined(PNG_pCAL_SUPPORTED)
-void PNGAPI
-png_set_pCAL(png_structp png_ptr, png_infop info_ptr,
- png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams,
- png_charp units, png_charpp params)
-{
- png_uint_32 length;
- int i;
-
- png_debug1(1, "in %s storage function", "pCAL");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- length = png_strlen(purpose) + 1;
- png_debug1(3, "allocating purpose for info (%lu bytes)",
- (unsigned long)length);
- info_ptr->pcal_purpose = (png_charp)png_malloc_warn(png_ptr, length);
- if (info_ptr->pcal_purpose == NULL)
- {
- png_warning(png_ptr, "Insufficient memory for pCAL purpose.");
- return;
- }
- png_memcpy(info_ptr->pcal_purpose, purpose, (png_size_t)length);
-
- png_debug(3, "storing X0, X1, type, and nparams in info");
- info_ptr->pcal_X0 = X0;
- info_ptr->pcal_X1 = X1;
- info_ptr->pcal_type = (png_byte)type;
- info_ptr->pcal_nparams = (png_byte)nparams;
-
- length = png_strlen(units) + 1;
- png_debug1(3, "allocating units for info (%lu bytes)",
- (unsigned long)length);
- info_ptr->pcal_units = (png_charp)png_malloc_warn(png_ptr, length);
- if (info_ptr->pcal_units == NULL)
- {
- png_warning(png_ptr, "Insufficient memory for pCAL units.");
- return;
- }
- png_memcpy(info_ptr->pcal_units, units, (png_size_t)length);
-
- info_ptr->pcal_params = (png_charpp)png_malloc_warn(png_ptr,
- (png_uint_32)((nparams + 1) * png_sizeof(png_charp)));
- if (info_ptr->pcal_params == NULL)
- {
- png_warning(png_ptr, "Insufficient memory for pCAL params.");
- return;
- }
-
- png_memset(info_ptr->pcal_params, 0, (nparams + 1) * png_sizeof(png_charp));
-
- for (i = 0; i < nparams; i++)
- {
- length = png_strlen(params[i]) + 1;
- png_debug2(3, "allocating parameter %d for info (%lu bytes)", i,
- (unsigned long)length);
- info_ptr->pcal_params[i] = (png_charp)png_malloc_warn(png_ptr, length);
- if (info_ptr->pcal_params[i] == NULL)
- {
- png_warning(png_ptr, "Insufficient memory for pCAL parameter.");
- return;
- }
- png_memcpy(info_ptr->pcal_params[i], params[i], (png_size_t)length);
- }
-
- info_ptr->valid |= PNG_INFO_pCAL;
-#ifdef PNG_FREE_ME_SUPPORTED
- info_ptr->free_me |= PNG_FREE_PCAL;
-#endif
-}
-#endif
-
-#if defined(PNG_READ_sCAL_SUPPORTED) || defined(PNG_WRITE_sCAL_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-void PNGAPI
-png_set_sCAL(png_structp png_ptr, png_infop info_ptr,
- int unit, double width, double height)
-{
- png_debug1(1, "in %s storage function", "sCAL");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- info_ptr->scal_unit = (png_byte)unit;
- info_ptr->scal_pixel_width = width;
- info_ptr->scal_pixel_height = height;
-
- info_ptr->valid |= PNG_INFO_sCAL;
-}
-#else
-#ifdef PNG_FIXED_POINT_SUPPORTED
-void PNGAPI
-png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
- int unit, png_charp swidth, png_charp sheight)
-{
- png_uint_32 length;
-
- png_debug1(1, "in %s storage function", "sCAL");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- info_ptr->scal_unit = (png_byte)unit;
-
- length = png_strlen(swidth) + 1;
- png_debug1(3, "allocating unit for info (%u bytes)",
- (unsigned int)length);
- info_ptr->scal_s_width = (png_charp)png_malloc_warn(png_ptr, length);
- if (info_ptr->scal_s_width == NULL)
- {
- png_warning(png_ptr,
- "Memory allocation failed while processing sCAL.");
- return;
- }
- png_memcpy(info_ptr->scal_s_width, swidth, (png_size_t)length);
-
- length = png_strlen(sheight) + 1;
- png_debug1(3, "allocating unit for info (%u bytes)",
- (unsigned int)length);
- info_ptr->scal_s_height = (png_charp)png_malloc_warn(png_ptr, length);
- if (info_ptr->scal_s_height == NULL)
- {
- png_free (png_ptr, info_ptr->scal_s_width);
- info_ptr->scal_s_width = NULL;
- png_warning(png_ptr,
- "Memory allocation failed while processing sCAL.");
- return;
- }
- png_memcpy(info_ptr->scal_s_height, sheight, (png_size_t)length);
- info_ptr->valid |= PNG_INFO_sCAL;
-#ifdef PNG_FREE_ME_SUPPORTED
- info_ptr->free_me |= PNG_FREE_SCAL;
-#endif
-}
-#endif
-#endif
-#endif
-
-#if defined(PNG_pHYs_SUPPORTED)
-void PNGAPI
-png_set_pHYs(png_structp png_ptr, png_infop info_ptr,
- png_uint_32 res_x, png_uint_32 res_y, int unit_type)
-{
- png_debug1(1, "in %s storage function", "pHYs");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- info_ptr->x_pixels_per_unit = res_x;
- info_ptr->y_pixels_per_unit = res_y;
- info_ptr->phys_unit_type = (png_byte)unit_type;
- info_ptr->valid |= PNG_INFO_pHYs;
-}
-#endif
-
-void PNGAPI
-png_set_PLTE(png_structp png_ptr, png_infop info_ptr,
- png_colorp palette, int num_palette)
-{
-
- png_debug1(1, "in %s storage function", "PLTE");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- if (num_palette < 0 || num_palette > PNG_MAX_PALETTE_LENGTH)
- {
- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
- png_error(png_ptr, "Invalid palette length");
- else
- {
- png_warning(png_ptr, "Invalid palette length");
- return;
- }
- }
-
- /*
- * It may not actually be necessary to set png_ptr->palette here;
- * we do it for backward compatibility with the way the png_handle_tRNS
- * function used to do the allocation.
- */
-#ifdef PNG_FREE_ME_SUPPORTED
- png_free_data(png_ptr, info_ptr, PNG_FREE_PLTE, 0);
-#endif
-
- /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead
- of num_palette entries,
- in case of an invalid PNG file that has too-large sample values. */
- png_ptr->palette = (png_colorp)png_malloc(png_ptr,
- PNG_MAX_PALETTE_LENGTH * png_sizeof(png_color));
- png_memset(png_ptr->palette, 0, PNG_MAX_PALETTE_LENGTH *
- png_sizeof(png_color));
- png_memcpy(png_ptr->palette, palette, num_palette * png_sizeof(png_color));
- info_ptr->palette = png_ptr->palette;
- info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette;
-
-#ifdef PNG_FREE_ME_SUPPORTED
- info_ptr->free_me |= PNG_FREE_PLTE;
-#else
- png_ptr->flags |= PNG_FLAG_FREE_PLTE;
-#endif
-
- info_ptr->valid |= PNG_INFO_PLTE;
-}
-
-#if defined(PNG_sBIT_SUPPORTED)
-void PNGAPI
-png_set_sBIT(png_structp png_ptr, png_infop info_ptr,
- png_color_8p sig_bit)
-{
- png_debug1(1, "in %s storage function", "sBIT");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- png_memcpy(&(info_ptr->sig_bit), sig_bit, png_sizeof(png_color_8));
- info_ptr->valid |= PNG_INFO_sBIT;
-}
-#endif
-
-#if defined(PNG_sRGB_SUPPORTED)
-void PNGAPI
-png_set_sRGB(png_structp png_ptr, png_infop info_ptr, int intent)
-{
- png_debug1(1, "in %s storage function", "sRGB");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- info_ptr->srgb_intent = (png_byte)intent;
- info_ptr->valid |= PNG_INFO_sRGB;
-}
-
-void PNGAPI
-png_set_sRGB_gAMA_and_cHRM(png_structp png_ptr, png_infop info_ptr,
- int intent)
-{
-#if defined(PNG_gAMA_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- float file_gamma;
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
- png_fixed_point int_file_gamma;
-#endif
-#endif
-#if defined(PNG_cHRM_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y;
-#endif
- png_fixed_point int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
- int_green_y, int_blue_x, int_blue_y;
-#endif
- png_debug1(1, "in %s storage function", "sRGB_gAMA_and_cHRM");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- png_set_sRGB(png_ptr, info_ptr, intent);
-
-#if defined(PNG_gAMA_SUPPORTED)
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- file_gamma = (float).45455;
- png_set_gAMA(png_ptr, info_ptr, file_gamma);
-#endif
-#ifdef PNG_FIXED_POINT_SUPPORTED
- int_file_gamma = 45455L;
- png_set_gAMA_fixed(png_ptr, info_ptr, int_file_gamma);
-#endif
-#endif
-
-#if defined(PNG_cHRM_SUPPORTED)
- int_white_x = 31270L;
- int_white_y = 32900L;
- int_red_x = 64000L;
- int_red_y = 33000L;
- int_green_x = 30000L;
- int_green_y = 60000L;
- int_blue_x = 15000L;
- int_blue_y = 6000L;
-
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- white_x = (float).3127;
- white_y = (float).3290;
- red_x = (float).64;
- red_y = (float).33;
- green_x = (float).30;
- green_y = (float).60;
- blue_x = (float).15;
- blue_y = (float).06;
-#endif
-
-#if !defined(PNG_NO_CHECK_cHRM)
- if (png_check_cHRM_fixed(png_ptr,
- int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
- int_green_y, int_blue_x, int_blue_y))
-#endif
- {
-#ifdef PNG_FIXED_POINT_SUPPORTED
- png_set_cHRM_fixed(png_ptr, info_ptr,
- int_white_x, int_white_y, int_red_x, int_red_y, int_green_x,
- int_green_y, int_blue_x, int_blue_y);
-#endif
-#ifdef PNG_FLOATING_POINT_SUPPORTED
- png_set_cHRM(png_ptr, info_ptr,
- white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y);
-#endif
- }
-#endif /* cHRM */
-}
-#endif /* sRGB */
-
-
-#if defined(PNG_iCCP_SUPPORTED)
-void PNGAPI
-png_set_iCCP(png_structp png_ptr, png_infop info_ptr,
- png_charp name, int compression_type,
- png_charp profile, png_uint_32 proflen)
-{
- png_charp new_iccp_name;
- png_charp new_iccp_profile;
- png_uint_32 length;
-
- png_debug1(1, "in %s storage function", "iCCP");
- if (png_ptr == NULL || info_ptr == NULL || name == NULL || profile == NULL)
- return;
-
- length = png_strlen(name)+1;
- new_iccp_name = (png_charp)png_malloc_warn(png_ptr, length);
- if (new_iccp_name == NULL)
- {
- png_warning(png_ptr, "Insufficient memory to process iCCP chunk.");
- return;
- }
- png_memcpy(new_iccp_name, name, length);
- new_iccp_profile = (png_charp)png_malloc_warn(png_ptr, proflen);
- if (new_iccp_profile == NULL)
- {
- png_free (png_ptr, new_iccp_name);
- png_warning(png_ptr,
- "Insufficient memory to process iCCP profile.");
- return;
- }
- png_memcpy(new_iccp_profile, profile, (png_size_t)proflen);
-
- png_free_data(png_ptr, info_ptr, PNG_FREE_ICCP, 0);
-
- info_ptr->iccp_proflen = proflen;
- info_ptr->iccp_name = new_iccp_name;
- info_ptr->iccp_profile = new_iccp_profile;
- /* Compression is always zero but is here so the API and info structure
- * does not have to change if we introduce multiple compression types */
- info_ptr->iccp_compression = (png_byte)compression_type;
-#ifdef PNG_FREE_ME_SUPPORTED
- info_ptr->free_me |= PNG_FREE_ICCP;
-#endif
- info_ptr->valid |= PNG_INFO_iCCP;
-}
-#endif
-
-#if defined(PNG_TEXT_SUPPORTED)
-void PNGAPI
-png_set_text(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
- int num_text)
-{
- int ret;
- ret = png_set_text_2(png_ptr, info_ptr, text_ptr, num_text);
- if (ret)
- png_error(png_ptr, "Insufficient memory to store text");
-}
-
-int /* PRIVATE */
-png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
- int num_text)
-{
- int i;
-
- png_debug1(1, "in %s storage function", (png_ptr->chunk_name[0] == '\0' ?
- "text" : (png_const_charp)png_ptr->chunk_name));
-
- if (png_ptr == NULL || info_ptr == NULL || num_text == 0)
- return(0);
-
- /* Make sure we have enough space in the "text" array in info_struct
- * to hold all of the incoming text_ptr objects.
- */
- if (info_ptr->num_text + num_text > info_ptr->max_text)
- {
- if (info_ptr->text != NULL)
- {
- png_textp old_text;
- int old_max;
-
- old_max = info_ptr->max_text;
- info_ptr->max_text = info_ptr->num_text + num_text + 8;
- old_text = info_ptr->text;
- info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
- (png_uint_32)(info_ptr->max_text * png_sizeof(png_text)));
- if (info_ptr->text == NULL)
- {
- png_free(png_ptr, old_text);
- return(1);
- }
- png_memcpy(info_ptr->text, old_text, (png_size_t)(old_max *
- png_sizeof(png_text)));
- png_free(png_ptr, old_text);
- }
- else
- {
- info_ptr->max_text = num_text + 8;
- info_ptr->num_text = 0;
- info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
- (png_uint_32)(info_ptr->max_text * png_sizeof(png_text)));
- if (info_ptr->text == NULL)
- return(1);
-#ifdef PNG_FREE_ME_SUPPORTED
- info_ptr->free_me |= PNG_FREE_TEXT;
-#endif
- }
- png_debug1(3, "allocated %d entries for info_ptr->text",
- info_ptr->max_text);
- }
- for (i = 0; i < num_text; i++)
- {
- png_size_t text_length, key_len;
- png_size_t lang_len, lang_key_len;
- png_textp textp = &(info_ptr->text[info_ptr->num_text]);
-
- if (text_ptr[i].key == NULL)
- continue;
-
- key_len = png_strlen(text_ptr[i].key);
-
- if (text_ptr[i].compression <= 0)
- {
- lang_len = 0;
- lang_key_len = 0;
- }
- else
-#ifdef PNG_iTXt_SUPPORTED
- {
- /* set iTXt data */
- if (text_ptr[i].lang != NULL)
- lang_len = png_strlen(text_ptr[i].lang);
- else
- lang_len = 0;
- if (text_ptr[i].lang_key != NULL)
- lang_key_len = png_strlen(text_ptr[i].lang_key);
- else
- lang_key_len = 0;
- }
-#else
- {
- png_warning(png_ptr, "iTXt chunk not supported.");
- continue;
- }
-#endif
-
- if (text_ptr[i].text == NULL || text_ptr[i].text[0] == '\0')
- {
- text_length = 0;
-#ifdef PNG_iTXt_SUPPORTED
- if (text_ptr[i].compression > 0)
- textp->compression = PNG_ITXT_COMPRESSION_NONE;
- else
-#endif
- textp->compression = PNG_TEXT_COMPRESSION_NONE;
- }
- else
- {
- text_length = png_strlen(text_ptr[i].text);
- textp->compression = text_ptr[i].compression;
- }
-
- textp->key = (png_charp)png_malloc_warn(png_ptr,
- (png_uint_32)
- (key_len + text_length + lang_len + lang_key_len + 4));
- if (textp->key == NULL)
- return(1);
- png_debug2(2, "Allocated %lu bytes at %x in png_set_text",
- (png_uint_32)
- (key_len + lang_len + lang_key_len + text_length + 4),
- (int)textp->key);
-
- png_memcpy(textp->key, text_ptr[i].key,
- (png_size_t)(key_len));
- *(textp->key + key_len) = '\0';
-#ifdef PNG_iTXt_SUPPORTED
- if (text_ptr[i].compression > 0)
- {
- textp->lang = textp->key + key_len + 1;
- png_memcpy(textp->lang, text_ptr[i].lang, lang_len);
- *(textp->lang + lang_len) = '\0';
- textp->lang_key = textp->lang + lang_len + 1;
- png_memcpy(textp->lang_key, text_ptr[i].lang_key, lang_key_len);
- *(textp->lang_key + lang_key_len) = '\0';
- textp->text = textp->lang_key + lang_key_len + 1;
- }
- else
-#endif
- {
-#ifdef PNG_iTXt_SUPPORTED
- textp->lang=NULL;
- textp->lang_key=NULL;
-#endif
- textp->text = textp->key + key_len + 1;
- }
- if (text_length)
- png_memcpy(textp->text, text_ptr[i].text,
- (png_size_t)(text_length));
- *(textp->text + text_length) = '\0';
-
-#ifdef PNG_iTXt_SUPPORTED
- if (textp->compression > 0)
- {
- textp->text_length = 0;
- textp->itxt_length = text_length;
- }
- else
-#endif
- {
- textp->text_length = text_length;
-#ifdef PNG_iTXt_SUPPORTED
- textp->itxt_length = 0;
-#endif
- }
- info_ptr->num_text++;
- png_debug1(3, "transferred text chunk %d", info_ptr->num_text);
- }
- return(0);
-}
-#endif
-
-#if defined(PNG_tIME_SUPPORTED)
-void PNGAPI
-png_set_tIME(png_structp png_ptr, png_infop info_ptr, png_timep mod_time)
-{
- png_debug1(1, "in %s storage function", "tIME");
- if (png_ptr == NULL || info_ptr == NULL ||
- (png_ptr->mode & PNG_WROTE_tIME))
- return;
-
- png_memcpy(&(info_ptr->mod_time), mod_time, png_sizeof(png_time));
- info_ptr->valid |= PNG_INFO_tIME;
-}
-#endif
-
-#if defined(PNG_tRNS_SUPPORTED)
-void PNGAPI
-png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
- png_bytep trans, int num_trans, png_color_16p trans_values)
-{
- png_debug1(1, "in %s storage function", "tRNS");
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- if (trans != NULL)
- {
- /*
- * It may not actually be necessary to set png_ptr->trans here;
- * we do it for backward compatibility with the way the png_handle_tRNS
- * function used to do the allocation.
- */
-
-#ifdef PNG_FREE_ME_SUPPORTED
- png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
-#endif
-
- /* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
- png_ptr->trans = info_ptr->trans = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)PNG_MAX_PALETTE_LENGTH);
- if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH)
- png_memcpy(info_ptr->trans, trans, (png_size_t)num_trans);
- }
-
- if (trans_values != NULL)
- {
- int sample_max = (1 << info_ptr->bit_depth);
- if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY &&
- (int)trans_values->gray > sample_max) ||
- (info_ptr->color_type == PNG_COLOR_TYPE_RGB &&
- ((int)trans_values->red > sample_max ||
- (int)trans_values->green > sample_max ||
- (int)trans_values->blue > sample_max)))
- png_warning(png_ptr,
- "tRNS chunk has out-of-range samples for bit_depth");
- png_memcpy(&(info_ptr->trans_values), trans_values,
- png_sizeof(png_color_16));
- if (num_trans == 0)
- num_trans = 1;
- }
-
- info_ptr->num_trans = (png_uint_16)num_trans;
- if (num_trans != 0)
- {
- info_ptr->valid |= PNG_INFO_tRNS;
-#ifdef PNG_FREE_ME_SUPPORTED
- info_ptr->free_me |= PNG_FREE_TRNS;
-#else
- png_ptr->flags |= PNG_FLAG_FREE_TRNS;
-#endif
- }
-}
-#endif
-
-#if defined(PNG_sPLT_SUPPORTED)
-void PNGAPI
-png_set_sPLT(png_structp png_ptr,
- png_infop info_ptr, png_sPLT_tp entries, int nentries)
-/*
- * entries - array of png_sPLT_t structures
- * to be added to the list of palettes
- * in the info structure.
- * nentries - number of palette structures to be
- * added.
- */
-{
- png_sPLT_tp np;
- int i;
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- np = (png_sPLT_tp)png_malloc_warn(png_ptr,
- (info_ptr->splt_palettes_num + nentries) *
- (png_uint_32)png_sizeof(png_sPLT_t));
- if (np == NULL)
- {
- png_warning(png_ptr, "No memory for sPLT palettes.");
- return;
- }
-
- png_memcpy(np, info_ptr->splt_palettes,
- info_ptr->splt_palettes_num * png_sizeof(png_sPLT_t));
- png_free(png_ptr, info_ptr->splt_palettes);
- info_ptr->splt_palettes=NULL;
-
- for (i = 0; i < nentries; i++)
- {
- png_sPLT_tp to = np + info_ptr->splt_palettes_num + i;
- png_sPLT_tp from = entries + i;
- png_uint_32 length;
-
- length = png_strlen(from->name) + 1;
- to->name = (png_charp)png_malloc_warn(png_ptr, length);
- if (to->name == NULL)
- {
- png_warning(png_ptr,
- "Out of memory while processing sPLT chunk");
- continue;
- }
- png_memcpy(to->name, from->name, length);
- to->entries = (png_sPLT_entryp)png_malloc_warn(png_ptr,
- (png_uint_32)(from->nentries * png_sizeof(png_sPLT_entry)));
- if (to->entries == NULL)
- {
- png_warning(png_ptr,
- "Out of memory while processing sPLT chunk");
- png_free(png_ptr, to->name);
- to->name = NULL;
- continue;
- }
- png_memcpy(to->entries, from->entries,
- from->nentries * png_sizeof(png_sPLT_entry));
- to->nentries = from->nentries;
- to->depth = from->depth;
- }
-
- info_ptr->splt_palettes = np;
- info_ptr->splt_palettes_num += nentries;
- info_ptr->valid |= PNG_INFO_sPLT;
-#ifdef PNG_FREE_ME_SUPPORTED
- info_ptr->free_me |= PNG_FREE_SPLT;
-#endif
-}
-#endif /* PNG_sPLT_SUPPORTED */
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
-void PNGAPI
-png_set_unknown_chunks(png_structp png_ptr,
- png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)
-{
- png_unknown_chunkp np;
- int i;
-
- if (png_ptr == NULL || info_ptr == NULL || num_unknowns == 0)
- return;
-
- np = (png_unknown_chunkp)png_malloc_warn(png_ptr,
- (png_uint_32)((info_ptr->unknown_chunks_num + num_unknowns) *
- png_sizeof(png_unknown_chunk)));
- if (np == NULL)
- {
- png_warning(png_ptr,
- "Out of memory while processing unknown chunk.");
- return;
- }
-
- png_memcpy(np, info_ptr->unknown_chunks,
- info_ptr->unknown_chunks_num * png_sizeof(png_unknown_chunk));
- png_free(png_ptr, info_ptr->unknown_chunks);
- info_ptr->unknown_chunks=NULL;
-
- for (i = 0; i < num_unknowns; i++)
- {
- png_unknown_chunkp to = np + info_ptr->unknown_chunks_num + i;
- png_unknown_chunkp from = unknowns + i;
-
- png_memcpy((png_charp)to->name,
- (png_charp)from->name,
- png_sizeof(from->name));
- to->name[png_sizeof(to->name)-1] = '\0';
- to->size = from->size;
- /* note our location in the read or write sequence */
- to->location = (png_byte)(png_ptr->mode & 0xff);
-
- if (from->size == 0)
- to->data=NULL;
- else
- {
- to->data = (png_bytep)png_malloc_warn(png_ptr,
- (png_uint_32)from->size);
- if (to->data == NULL)
- {
- png_warning(png_ptr,
- "Out of memory while processing unknown chunk.");
- to->size = 0;
- }
- else
- png_memcpy(to->data, from->data, from->size);
- }
- }
-
- info_ptr->unknown_chunks = np;
- info_ptr->unknown_chunks_num += num_unknowns;
-#ifdef PNG_FREE_ME_SUPPORTED
- info_ptr->free_me |= PNG_FREE_UNKN;
-#endif
-}
-void PNGAPI
-png_set_unknown_chunk_location(png_structp png_ptr, png_infop info_ptr,
- int chunk, int location)
-{
- if (png_ptr != NULL && info_ptr != NULL && chunk >= 0 && chunk <
- (int)info_ptr->unknown_chunks_num)
- info_ptr->unknown_chunks[chunk].location = (png_byte)location;
-}
-#endif
-
-#if defined(PNG_1_0_X) || defined(PNG_1_2_X)
-#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
- defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
-void PNGAPI
-png_permit_empty_plte (png_structp png_ptr, int empty_plte_permitted)
-{
- /* This function is deprecated in favor of png_permit_mng_features()
- and will be removed from libpng-1.3.0 */
- png_debug(1, "in png_permit_empty_plte, DEPRECATED.");
- if (png_ptr == NULL)
- return;
- png_ptr->mng_features_permitted = (png_byte)
- ((png_ptr->mng_features_permitted & (~PNG_FLAG_MNG_EMPTY_PLTE)) |
- ((empty_plte_permitted & PNG_FLAG_MNG_EMPTY_PLTE)));
-}
-#endif
-#endif
-
-#if defined(PNG_MNG_FEATURES_SUPPORTED)
-png_uint_32 PNGAPI
-png_permit_mng_features (png_structp png_ptr, png_uint_32 mng_features)
-{
- png_debug(1, "in png_permit_mng_features");
- if (png_ptr == NULL)
- return (png_uint_32)0;
- png_ptr->mng_features_permitted =
- (png_byte)(mng_features & PNG_ALL_MNG_FEATURES);
- return (png_uint_32)png_ptr->mng_features_permitted;
-}
-#endif
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
-void PNGAPI
-png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_bytep
- chunk_list, int num_chunks)
-{
- png_bytep new_list, p;
- int i, old_num_chunks;
- if (png_ptr == NULL)
- return;
- if (num_chunks == 0)
- {
- if (keep == PNG_HANDLE_CHUNK_ALWAYS || keep == PNG_HANDLE_CHUNK_IF_SAFE)
- png_ptr->flags |= PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
- else
- png_ptr->flags &= ~PNG_FLAG_KEEP_UNKNOWN_CHUNKS;
-
- if (keep == PNG_HANDLE_CHUNK_ALWAYS)
- png_ptr->flags |= PNG_FLAG_KEEP_UNSAFE_CHUNKS;
- else
- png_ptr->flags &= ~PNG_FLAG_KEEP_UNSAFE_CHUNKS;
- return;
- }
- if (chunk_list == NULL)
- return;
- old_num_chunks = png_ptr->num_chunk_list;
- new_list=(png_bytep)png_malloc(png_ptr,
- (png_uint_32)
- (5*(num_chunks + old_num_chunks)));
- if (png_ptr->chunk_list != NULL)
- {
- png_memcpy(new_list, png_ptr->chunk_list,
- (png_size_t)(5*old_num_chunks));
- png_free(png_ptr, png_ptr->chunk_list);
- png_ptr->chunk_list=NULL;
- }
- png_memcpy(new_list + 5*old_num_chunks, chunk_list,
- (png_size_t)(5*num_chunks));
- for (p = new_list + 5*old_num_chunks + 4, i = 0; i<num_chunks; i++, p += 5)
- *p=(png_byte)keep;
- png_ptr->num_chunk_list = old_num_chunks + num_chunks;
- png_ptr->chunk_list = new_list;
-#ifdef PNG_FREE_ME_SUPPORTED
- png_ptr->free_me |= PNG_FREE_LIST;
-#endif
-}
-#endif
-
-#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
-void PNGAPI
-png_set_read_user_chunk_fn(png_structp png_ptr, png_voidp user_chunk_ptr,
- png_user_chunk_ptr read_user_chunk_fn)
-{
- png_debug(1, "in png_set_read_user_chunk_fn");
- if (png_ptr == NULL)
- return;
- png_ptr->read_user_chunk_fn = read_user_chunk_fn;
- png_ptr->user_chunk_ptr = user_chunk_ptr;
-}
-#endif
-
-#if defined(PNG_INFO_IMAGE_SUPPORTED)
-void PNGAPI
-png_set_rows(png_structp png_ptr, png_infop info_ptr, png_bytepp row_pointers)
-{
- png_debug1(1, "in %s storage function", "rows");
-
- if (png_ptr == NULL || info_ptr == NULL)
- return;
-
- if (info_ptr->row_pointers && (info_ptr->row_pointers != row_pointers))
- png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
- info_ptr->row_pointers = row_pointers;
- if (row_pointers)
- info_ptr->valid |= PNG_INFO_IDAT;
-}
-#endif
-
-#ifdef PNG_WRITE_SUPPORTED
-void PNGAPI
-png_set_compression_buffer_size(png_structp png_ptr,
- png_uint_32 size)
-{
- if (png_ptr == NULL)
- return;
- png_free(png_ptr, png_ptr->zbuf);
- png_ptr->zbuf_size = (png_size_t)size;
- png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, size);
- png_ptr->zstream.next_out = png_ptr->zbuf;
- png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
-}
-#endif
-
-void PNGAPI
-png_set_invalid(png_structp png_ptr, png_infop info_ptr, int mask)
-{
- if (png_ptr && info_ptr)
- info_ptr->valid &= ~mask;
-}
-
-
-#ifndef PNG_1_0_X
-#ifdef PNG_ASSEMBLER_CODE_SUPPORTED
-/* function was added to libpng 1.2.0 and should always exist by default */
-void PNGAPI
-png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags)
-{
-/* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */
- if (png_ptr != NULL)
- png_ptr->asm_flags = 0;
- asm_flags = asm_flags; /* Quiet the compiler */
-}
-
-/* this function was added to libpng 1.2.0 */
-void PNGAPI
-png_set_mmx_thresholds (png_structp png_ptr,
- png_byte mmx_bitdepth_threshold,
- png_uint_32 mmx_rowbytes_threshold)
-{
-/* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */
- if (png_ptr == NULL)
- return;
- /* Quiet the compiler */
- mmx_bitdepth_threshold = mmx_bitdepth_threshold;
- mmx_rowbytes_threshold = mmx_rowbytes_threshold;
-}
-#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */
-
-#ifdef PNG_SET_USER_LIMITS_SUPPORTED
-/* this function was added to libpng 1.2.6 */
-void PNGAPI
-png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max,
- png_uint_32 user_height_max)
-{
- /* Images with dimensions larger than these limits will be
- * rejected by png_set_IHDR(). To accept any PNG datastream
- * regardless of dimensions, set both limits to 0x7ffffffL.
- */
- if (png_ptr == NULL) return;
- png_ptr->user_width_max = user_width_max;
- png_ptr->user_height_max = user_height_max;
-}
-#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
-
-#endif /* ?PNG_1_0_X */
-#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/navit/support/libpng/pngtrans.c b/navit/support/libpng/pngtrans.c
deleted file mode 100644
index f92f4b02d..000000000
--- a/navit/support/libpng/pngtrans.c
+++ /dev/null
@@ -1,662 +0,0 @@
-
-/* pngtrans.c - transforms the data in a row (used by both readers and writers)
- *
- * Last changed in libpng 1.2.30 [August 15, 2008]
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 1998-2008 Glenn Randers-Pehrson
- * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
- * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
- */
-
-#define PNG_INTERNAL
-#include "png.h"
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-
-#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
-/* turn on BGR-to-RGB mapping */
-void PNGAPI
-png_set_bgr(png_structp png_ptr)
-{
- png_debug(1, "in png_set_bgr");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= PNG_BGR;
-}
-#endif
-
-#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
-/* turn on 16 bit byte swapping */
-void PNGAPI
-png_set_swap(png_structp png_ptr)
-{
- png_debug(1, "in png_set_swap");
- if (png_ptr == NULL) return;
- if (png_ptr->bit_depth == 16)
- png_ptr->transformations |= PNG_SWAP_BYTES;
-}
-#endif
-
-#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
-/* turn on pixel packing */
-void PNGAPI
-png_set_packing(png_structp png_ptr)
-{
- png_debug(1, "in png_set_packing");
- if (png_ptr == NULL) return;
- if (png_ptr->bit_depth < 8)
- {
- png_ptr->transformations |= PNG_PACK;
- png_ptr->usr_bit_depth = 8;
- }
-}
-#endif
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
-/* turn on packed pixel swapping */
-void PNGAPI
-png_set_packswap(png_structp png_ptr)
-{
- png_debug(1, "in png_set_packswap");
- if (png_ptr == NULL) return;
- if (png_ptr->bit_depth < 8)
- png_ptr->transformations |= PNG_PACKSWAP;
-}
-#endif
-
-#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
-void PNGAPI
-png_set_shift(png_structp png_ptr, png_color_8p true_bits)
-{
- png_debug(1, "in png_set_shift");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= PNG_SHIFT;
- png_ptr->shift = *true_bits;
-}
-#endif
-
-#if defined(PNG_READ_INTERLACING_SUPPORTED) || \
- defined(PNG_WRITE_INTERLACING_SUPPORTED)
-int PNGAPI
-png_set_interlace_handling(png_structp png_ptr)
-{
- png_debug(1, "in png_set_interlace handling");
- if (png_ptr && png_ptr->interlaced)
- {
- png_ptr->transformations |= PNG_INTERLACE;
- return (7);
- }
-
- return (1);
-}
-#endif
-
-#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
-/* Add a filler byte on read, or remove a filler or alpha byte on write.
- * The filler type has changed in v0.95 to allow future 2-byte fillers
- * for 48-bit input data, as well as to avoid problems with some compilers
- * that don't like bytes as parameters.
- */
-void PNGAPI
-png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc)
-{
- png_debug(1, "in png_set_filler");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= PNG_FILLER;
- png_ptr->filler = (png_byte)filler;
- if (filler_loc == PNG_FILLER_AFTER)
- png_ptr->flags |= PNG_FLAG_FILLER_AFTER;
- else
- png_ptr->flags &= ~PNG_FLAG_FILLER_AFTER;
-
- /* This should probably go in the "do_read_filler" routine.
- * I attempted to do that in libpng-1.0.1a but that caused problems
- * so I restored it in libpng-1.0.2a
- */
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_RGB)
- {
- png_ptr->usr_channels = 4;
- }
-
- /* Also I added this in libpng-1.0.2a (what happens when we expand
- * a less-than-8-bit grayscale to GA? */
-
- if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY && png_ptr->bit_depth >= 8)
- {
- png_ptr->usr_channels = 2;
- }
-}
-
-#if !defined(PNG_1_0_X)
-/* Added to libpng-1.2.7 */
-void PNGAPI
-png_set_add_alpha(png_structp png_ptr, png_uint_32 filler, int filler_loc)
-{
- png_debug(1, "in png_set_add_alpha");
- if (png_ptr == NULL) return;
- png_set_filler(png_ptr, filler, filler_loc);
- png_ptr->transformations |= PNG_ADD_ALPHA;
-}
-#endif
-
-#endif
-
-#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
- defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
-void PNGAPI
-png_set_swap_alpha(png_structp png_ptr)
-{
- png_debug(1, "in png_set_swap_alpha");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= PNG_SWAP_ALPHA;
-}
-#endif
-
-#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
- defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
-void PNGAPI
-png_set_invert_alpha(png_structp png_ptr)
-{
- png_debug(1, "in png_set_invert_alpha");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= PNG_INVERT_ALPHA;
-}
-#endif
-
-#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
-void PNGAPI
-png_set_invert_mono(png_structp png_ptr)
-{
- png_debug(1, "in png_set_invert_mono");
- if (png_ptr == NULL) return;
- png_ptr->transformations |= PNG_INVERT_MONO;
-}
-
-/* invert monochrome grayscale data */
-void /* PRIVATE */
-png_do_invert(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_invert");
- /* This test removed from libpng version 1.0.13 and 1.2.0:
- * if (row_info->bit_depth == 1 &&
- */
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- if (row == NULL || row_info == NULL)
- return;
-#endif
- if (row_info->color_type == PNG_COLOR_TYPE_GRAY)
- {
- png_bytep rp = row;
- png_uint_32 i;
- png_uint_32 istop = row_info->rowbytes;
-
- for (i = 0; i < istop; i++)
- {
- *rp = (png_byte)(~(*rp));
- rp++;
- }
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA &&
- row_info->bit_depth == 8)
- {
- png_bytep rp = row;
- png_uint_32 i;
- png_uint_32 istop = row_info->rowbytes;
-
- for (i = 0; i < istop; i+=2)
- {
- *rp = (png_byte)(~(*rp));
- rp+=2;
- }
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA &&
- row_info->bit_depth == 16)
- {
- png_bytep rp = row;
- png_uint_32 i;
- png_uint_32 istop = row_info->rowbytes;
-
- for (i = 0; i < istop; i+=4)
- {
- *rp = (png_byte)(~(*rp));
- *(rp+1) = (png_byte)(~(*(rp+1)));
- rp+=4;
- }
- }
-}
-#endif
-
-#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
-/* swaps byte order on 16 bit depth images */
-void /* PRIVATE */
-png_do_swap(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_swap");
- if (
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL &&
-#endif
- row_info->bit_depth == 16)
- {
- png_bytep rp = row;
- png_uint_32 i;
- png_uint_32 istop= row_info->width * row_info->channels;
-
- for (i = 0; i < istop; i++, rp += 2)
- {
- png_byte t = *rp;
- *rp = *(rp + 1);
- *(rp + 1) = t;
- }
- }
-}
-#endif
-
-#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
-static PNG_CONST png_byte onebppswaptable[256] = {
- 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,
- 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,
- 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,
- 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8,
- 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4,
- 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,
- 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC,
- 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC,
- 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,
- 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2,
- 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA,
- 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,
- 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6,
- 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6,
- 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,
- 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE,
- 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1,
- 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,
- 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9,
- 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9,
- 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,
- 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5,
- 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED,
- 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,
- 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3,
- 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3,
- 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,
- 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB,
- 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7,
- 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,
- 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF,
- 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF
-};
-
-static PNG_CONST png_byte twobppswaptable[256] = {
- 0x00, 0x40, 0x80, 0xC0, 0x10, 0x50, 0x90, 0xD0,
- 0x20, 0x60, 0xA0, 0xE0, 0x30, 0x70, 0xB0, 0xF0,
- 0x04, 0x44, 0x84, 0xC4, 0x14, 0x54, 0x94, 0xD4,
- 0x24, 0x64, 0xA4, 0xE4, 0x34, 0x74, 0xB4, 0xF4,
- 0x08, 0x48, 0x88, 0xC8, 0x18, 0x58, 0x98, 0xD8,
- 0x28, 0x68, 0xA8, 0xE8, 0x38, 0x78, 0xB8, 0xF8,
- 0x0C, 0x4C, 0x8C, 0xCC, 0x1C, 0x5C, 0x9C, 0xDC,
- 0x2C, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC,
- 0x01, 0x41, 0x81, 0xC1, 0x11, 0x51, 0x91, 0xD1,
- 0x21, 0x61, 0xA1, 0xE1, 0x31, 0x71, 0xB1, 0xF1,
- 0x05, 0x45, 0x85, 0xC5, 0x15, 0x55, 0x95, 0xD5,
- 0x25, 0x65, 0xA5, 0xE5, 0x35, 0x75, 0xB5, 0xF5,
- 0x09, 0x49, 0x89, 0xC9, 0x19, 0x59, 0x99, 0xD9,
- 0x29, 0x69, 0xA9, 0xE9, 0x39, 0x79, 0xB9, 0xF9,
- 0x0D, 0x4D, 0x8D, 0xCD, 0x1D, 0x5D, 0x9D, 0xDD,
- 0x2D, 0x6D, 0xAD, 0xED, 0x3D, 0x7D, 0xBD, 0xFD,
- 0x02, 0x42, 0x82, 0xC2, 0x12, 0x52, 0x92, 0xD2,
- 0x22, 0x62, 0xA2, 0xE2, 0x32, 0x72, 0xB2, 0xF2,
- 0x06, 0x46, 0x86, 0xC6, 0x16, 0x56, 0x96, 0xD6,
- 0x26, 0x66, 0xA6, 0xE6, 0x36, 0x76, 0xB6, 0xF6,
- 0x0A, 0x4A, 0x8A, 0xCA, 0x1A, 0x5A, 0x9A, 0xDA,
- 0x2A, 0x6A, 0xAA, 0xEA, 0x3A, 0x7A, 0xBA, 0xFA,
- 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xDE,
- 0x2E, 0x6E, 0xAE, 0xEE, 0x3E, 0x7E, 0xBE, 0xFE,
- 0x03, 0x43, 0x83, 0xC3, 0x13, 0x53, 0x93, 0xD3,
- 0x23, 0x63, 0xA3, 0xE3, 0x33, 0x73, 0xB3, 0xF3,
- 0x07, 0x47, 0x87, 0xC7, 0x17, 0x57, 0x97, 0xD7,
- 0x27, 0x67, 0xA7, 0xE7, 0x37, 0x77, 0xB7, 0xF7,
- 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x5B, 0x9B, 0xDB,
- 0x2B, 0x6B, 0xAB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB,
- 0x0F, 0x4F, 0x8F, 0xCF, 0x1F, 0x5F, 0x9F, 0xDF,
- 0x2F, 0x6F, 0xAF, 0xEF, 0x3F, 0x7F, 0xBF, 0xFF
-};
-
-static PNG_CONST png_byte fourbppswaptable[256] = {
- 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
- 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0,
- 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71,
- 0x81, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1,
- 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72,
- 0x82, 0x92, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0xF2,
- 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73,
- 0x83, 0x93, 0xA3, 0xB3, 0xC3, 0xD3, 0xE3, 0xF3,
- 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74,
- 0x84, 0x94, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4,
- 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75,
- 0x85, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xE5, 0xF5,
- 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76,
- 0x86, 0x96, 0xA6, 0xB6, 0xC6, 0xD6, 0xE6, 0xF6,
- 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77,
- 0x87, 0x97, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7,
- 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78,
- 0x88, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8,
- 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79,
- 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9,
- 0x0A, 0x1A, 0x2A, 0x3A, 0x4A, 0x5A, 0x6A, 0x7A,
- 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA,
- 0x0B, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B,
- 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xDB, 0xEB, 0xFB,
- 0x0C, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C,
- 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xDC, 0xEC, 0xFC,
- 0x0D, 0x1D, 0x2D, 0x3D, 0x4D, 0x5D, 0x6D, 0x7D,
- 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD,
- 0x0E, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E,
- 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE,
- 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F,
- 0x8F, 0x9F, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF
-};
-
-/* swaps pixel packing order within bytes */
-void /* PRIVATE */
-png_do_packswap(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_packswap");
- if (
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL &&
-#endif
- row_info->bit_depth < 8)
- {
- png_bytep rp, end, table;
-
- end = row + row_info->rowbytes;
-
- if (row_info->bit_depth == 1)
- table = (png_bytep)onebppswaptable;
- else if (row_info->bit_depth == 2)
- table = (png_bytep)twobppswaptable;
- else if (row_info->bit_depth == 4)
- table = (png_bytep)fourbppswaptable;
- else
- return;
-
- for (rp = row; rp < end; rp++)
- *rp = table[*rp];
- }
-}
-#endif /* PNG_READ_PACKSWAP_SUPPORTED or PNG_WRITE_PACKSWAP_SUPPORTED */
-
-#if defined(PNG_WRITE_FILLER_SUPPORTED) || \
- defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
-/* remove filler or alpha byte(s) */
-void /* PRIVATE */
-png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
-{
- png_debug(1, "in png_do_strip_filler");
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- if (row != NULL && row_info != NULL)
-#endif
- {
- png_bytep sp=row;
- png_bytep dp=row;
- png_uint_32 row_width=row_info->width;
- png_uint_32 i;
-
- if ((row_info->color_type == PNG_COLOR_TYPE_RGB ||
- (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
- (flags & PNG_FLAG_STRIP_ALPHA))) &&
- row_info->channels == 4)
- {
- if (row_info->bit_depth == 8)
- {
- /* This converts from RGBX or RGBA to RGB */
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- dp+=3; sp+=4;
- for (i = 1; i < row_width; i++)
- {
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- sp++;
- }
- }
- /* This converts from XRGB or ARGB to RGB */
- else
- {
- for (i = 0; i < row_width; i++)
- {
- sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- }
- }
- row_info->pixel_depth = 24;
- row_info->rowbytes = row_width * 3;
- }
- else /* if (row_info->bit_depth == 16) */
- {
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- /* This converts from RRGGBBXX or RRGGBBAA to RRGGBB */
- sp += 8; dp += 6;
- for (i = 1; i < row_width; i++)
- {
- /* This could be (although png_memcpy is probably slower):
- png_memcpy(dp, sp, 6);
- sp += 8;
- dp += 6;
- */
-
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- sp += 2;
- }
- }
- else
- {
- /* This converts from XXRRGGBB or AARRGGBB to RRGGBB */
- for (i = 0; i < row_width; i++)
- {
- /* This could be (although png_memcpy is probably slower):
- png_memcpy(dp, sp, 6);
- sp += 8;
- dp += 6;
- */
-
- sp+=2;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- *dp++ = *sp++;
- }
- }
- row_info->pixel_depth = 48;
- row_info->rowbytes = row_width * 6;
- }
- row_info->channels = 3;
- }
- else if ((row_info->color_type == PNG_COLOR_TYPE_GRAY ||
- (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA &&
- (flags & PNG_FLAG_STRIP_ALPHA))) &&
- row_info->channels == 2)
- {
- if (row_info->bit_depth == 8)
- {
- /* This converts from GX or GA to G */
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- for (i = 0; i < row_width; i++)
- {
- *dp++ = *sp++;
- sp++;
- }
- }
- /* This converts from XG or AG to G */
- else
- {
- for (i = 0; i < row_width; i++)
- {
- sp++;
- *dp++ = *sp++;
- }
- }
- row_info->pixel_depth = 8;
- row_info->rowbytes = row_width;
- }
- else /* if (row_info->bit_depth == 16) */
- {
- if (flags & PNG_FLAG_FILLER_AFTER)
- {
- /* This converts from GGXX or GGAA to GG */
- sp += 4; dp += 2;
- for (i = 1; i < row_width; i++)
- {
- *dp++ = *sp++;
- *dp++ = *sp++;
- sp += 2;
- }
- }
- else
- {
- /* This converts from XXGG or AAGG to GG */
- for (i = 0; i < row_width; i++)
- {
- sp += 2;
- *dp++ = *sp++;
- *dp++ = *sp++;
- }
- }
- row_info->pixel_depth = 16;
- row_info->rowbytes = row_width * 2;
- }
- row_info->channels = 1;
- }
- if (flags & PNG_FLAG_STRIP_ALPHA)
- row_info->color_type &= ~PNG_COLOR_MASK_ALPHA;
- }
-}
-#endif
-
-#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
-/* swaps red and blue bytes within a pixel */
-void /* PRIVATE */
-png_do_bgr(png_row_infop row_info, png_bytep row)
-{
- png_debug(1, "in png_do_bgr");
- if (
-#if defined(PNG_USELESS_TESTS_SUPPORTED)
- row != NULL && row_info != NULL &&
-#endif
- (row_info->color_type & PNG_COLOR_MASK_COLOR))
- {
- png_uint_32 row_width = row_info->width;
- if (row_info->bit_depth == 8)
- {
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- {
- png_bytep rp;
- png_uint_32 i;
-
- for (i = 0, rp = row; i < row_width; i++, rp += 3)
- {
- png_byte save = *rp;
- *rp = *(rp + 2);
- *(rp + 2) = save;
- }
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- png_bytep rp;
- png_uint_32 i;
-
- for (i = 0, rp = row; i < row_width; i++, rp += 4)
- {
- png_byte save = *rp;
- *rp = *(rp + 2);
- *(rp + 2) = save;
- }
- }
- }
- else if (row_info->bit_depth == 16)
- {
- if (row_info->color_type == PNG_COLOR_TYPE_RGB)
- {
- png_bytep rp;
- png_uint_32 i;
-
- for (i = 0, rp = row; i < row_width; i++, rp += 6)
- {
- png_byte save = *rp;
- *rp = *(rp + 4);
- *(rp + 4) = save;
- save = *(rp + 1);
- *(rp + 1) = *(rp + 5);
- *(rp + 5) = save;
- }
- }
- else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
- {
- png_bytep rp;
- png_uint_32 i;
-
- for (i = 0, rp = row; i < row_width; i++, rp += 8)
- {
- png_byte save = *rp;
- *rp = *(rp + 4);
- *(rp + 4) = save;
- save = *(rp + 1);
- *(rp + 1) = *(rp + 5);
- *(rp + 5) = save;
- }
- }
- }
- }
-}
-#endif /* PNG_READ_BGR_SUPPORTED or PNG_WRITE_BGR_SUPPORTED */
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
- defined(PNG_LEGACY_SUPPORTED)
-void PNGAPI
-png_set_user_transform_info(png_structp png_ptr, png_voidp
- user_transform_ptr, int user_transform_depth, int user_transform_channels)
-{
- png_debug(1, "in png_set_user_transform_info");
- if (png_ptr == NULL) return;
-#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
- png_ptr->user_transform_ptr = user_transform_ptr;
- png_ptr->user_transform_depth = (png_byte)user_transform_depth;
- png_ptr->user_transform_channels = (png_byte)user_transform_channels;
-#else
- if (user_transform_ptr || user_transform_depth || user_transform_channels)
- png_warning(png_ptr,
- "This version of libpng does not support user transform info");
-#endif
-}
-#endif
-
-/* This function returns a pointer to the user_transform_ptr associated with
- * the user transform functions. The application should free any memory
- * associated with this pointer before png_write_destroy and png_read_destroy
- * are called.
- */
-png_voidp PNGAPI
-png_get_user_transform_ptr(png_structp png_ptr)
-{
- if (png_ptr == NULL) return (NULL);
-#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
- return ((png_voidp)png_ptr->user_transform_ptr);
-#else
- return (NULL);
-#endif
-}
-#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/navit/support/shapefile/CMakeLists.txt b/navit/support/shapefile/CMakeLists.txt
deleted file mode 100644
index 03c964329..000000000
--- a/navit/support/shapefile/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-supportlib_add_library(support_shapefile dbfopen.c shpopen.c shptree.c)
diff --git a/navit/support/shapefile/dbfopen.c b/navit/support/shapefile/dbfopen.c
deleted file mode 100644
index 148e593a4..000000000
--- a/navit/support/shapefile/dbfopen.c
+++ /dev/null
@@ -1,2405 +0,0 @@
-/******************************************************************************
- * $Id: dbfopen.c,v 1.92 2016-12-05 18:44:08 erouault Exp $
- *
- * Project: Shapelib
- * Purpose: Implementation of .dbf access API documented in dbf_api.html.
- * Author: Frank Warmerdam, warmerdam@pobox.com
- *
- ******************************************************************************
- * Copyright (c) 1999, Frank Warmerdam
- * Copyright (c) 2012-2013, Even Rouault <even dot rouault at mines-paris dot org>
- *
- * This software is available under the following "MIT Style" license,
- * or at the option of the licensee under the LGPL (see COPYING). This
- * option is discussed in more detail in shapelib.html.
- *
- * --
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log: dbfopen.c,v $
- * Revision 1.92 2016-12-05 18:44:08 erouault
- * * dbfopen.c, shapefil.h: write DBF end-of-file character 0x1A by default.
- * This behaviour can be controlled with the DBFSetWriteEndOfFileChar()
- * function.
- *
- * Revision 1.91 2016-12-05 12:44:05 erouault
- * * Major overhaul of Makefile build system to use autoconf/automake.
- *
- * * Warning fixes in contrib/
- *
- * Revision 1.90 2016-12-04 15:30:15 erouault
- * * shpopen.c, dbfopen.c, shptree.c, shapefil.h: resync with
- * GDAL Shapefile driver. Mostly cleanups. SHPObject and DBFInfo
- * structures extended with new members. New functions:
- * DBFSetLastModifiedDate, SHPOpenLLEx, SHPRestoreSHX,
- * SHPSetFastModeReadObject
- *
- * * sbnsearch.c: new file to implement original ESRI .sbn spatial
- * index reading. (no write support). New functions:
- * SBNOpenDiskTree, SBNCloseDiskTree, SBNSearchDiskTree,
- * SBNSearchDiskTreeInteger, SBNSearchFreeIds
- *
- * * Makefile, makefile.vc, CMakeLists.txt, shapelib.def: updates
- * with new file and symbols.
- *
- * * commit: helper script to cvs commit
- *
- * Revision 1.89 2011-07-24 05:59:25 fwarmerdam
- * minimize use of CPLError in favor of SAHooks.Error()
- *
- * Revision 1.88 2011-05-13 17:35:17 fwarmerdam
- * added DBFReorderFields() and DBFAlterFields() functions (from Even)
- *
- * Revision 1.87 2011-05-07 22:41:02 fwarmerdam
- * ensure pending record is flushed when adding a native field (GDAL #4073)
- *
- * Revision 1.86 2011-04-17 15:15:29 fwarmerdam
- * Removed unused variable.
- *
- * Revision 1.85 2010-12-06 16:09:34 fwarmerdam
- * fix buffer read overrun fetching code page (bug 2276)
- *
- * Revision 1.84 2009-10-29 19:59:48 fwarmerdam
- * avoid crash on truncated header (gdal #3093)
- *
- * Revision 1.83 2008/11/12 14:28:15 fwarmerdam
- * DBFCreateField() now works on files with records
- *
- * Revision 1.82 2008/11/11 17:47:09 fwarmerdam
- * added DBFDeleteField() function
- *
- * Revision 1.81 2008/01/03 17:48:13 bram
- * in DBFCreate, use default code page LDID/87 (= 0x57, ANSI)
- * instead of LDID/3. This seems to be the same as what ESRI
- * would be doing by default.
- *
- * Revision 1.80 2007/12/30 14:36:39 fwarmerdam
- * avoid syntax issue with last comment.
- *
- * Revision 1.79 2007/12/30 14:35:48 fwarmerdam
- * Avoid char* / unsigned char* warnings.
- *
- * Revision 1.78 2007/12/18 18:28:07 bram
- * - create hook for client specific atof (bugzilla ticket 1615)
- * - check for NULL handle before closing cpCPG file, and close after reading.
- *
- * Revision 1.77 2007/12/15 20:25:21 bram
- * dbfopen.c now reads the Code Page information from the DBF file, and exports
- * this information as a string through the DBFGetCodePage function. This is
- * either the number from the LDID header field ("LDID/<number>") or as the
- * content of an accompanying .CPG file. When creating a DBF file, the code can
- * be set using DBFCreateEx.
- *
- * Revision 1.76 2007/12/12 22:21:32 bram
- * DBFClose: check for NULL psDBF handle before trying to close it.
- *
- * Revision 1.75 2007/12/06 13:58:19 fwarmerdam
- * make sure file offset calculations are done in as SAOffset
- *
- * Revision 1.74 2007/12/06 07:00:25 fwarmerdam
- * dbfopen now using SAHooks for fileio
- *
- * Revision 1.73 2007/09/03 19:48:11 fwarmerdam
- * move DBFReadAttribute() static dDoubleField into dbfinfo
- *
- * Revision 1.72 2007/09/03 19:34:06 fwarmerdam
- * Avoid use of static tuple buffer in DBFReadTuple()
- *
- * Revision 1.71 2006/06/22 14:37:18 fwarmerdam
- * avoid memory leak if dbfopen fread fails
- *
- * Revision 1.70 2006/06/17 17:47:05 fwarmerdam
- * use calloc() for dbfinfo in DBFCreate
- *
- * Revision 1.69 2006/06/17 15:34:32 fwarmerdam
- * disallow creating fields wider than 255
- *
- * Revision 1.68 2006/06/17 15:12:40 fwarmerdam
- * Fixed C++ style comments.
- *
- * Revision 1.67 2006/06/17 00:24:53 fwarmerdam
- * Don't treat non-zero decimals values as high order byte for length
- * for strings. It causes serious corruption for some files.
- * http://bugzilla.remotesensing.org/show_bug.cgi?id=1202
- *
- * Revision 1.66 2006/03/29 18:26:20 fwarmerdam
- * fixed bug with size of pachfieldtype in dbfcloneempty
- *
- * Revision 1.65 2006/02/15 01:14:30 fwarmerdam
- * added DBFAddNativeFieldType
- *
- * Revision 1.64 2006/02/09 00:29:04 fwarmerdam
- * Changed to put spaces into string fields that are NULL as
- * per http://bugzilla.maptools.org/show_bug.cgi?id=316.
- *
- * Revision 1.63 2006/01/25 15:35:43 fwarmerdam
- * check success on DBFFlushRecord
- *
- * Revision 1.62 2006/01/10 16:28:03 fwarmerdam
- * Fixed typo in CPLError.
- *
- * Revision 1.61 2006/01/10 16:26:29 fwarmerdam
- * Push loading record buffer into DBFLoadRecord.
- * Implement CPL error reporting if USE_CPL defined.
- *
- * Revision 1.60 2006/01/05 01:27:27 fwarmerdam
- * added dbf deletion mark/fetch
- *
- * Revision 1.59 2005/03/14 15:20:28 fwarmerdam
- * Fixed last change.
- *
- * Revision 1.58 2005/03/14 15:18:54 fwarmerdam
- * Treat very wide fields with no decimals as double. This is
- * more than 32bit integer fields.
- *
- * Revision 1.57 2005/02/10 20:16:54 fwarmerdam
- * Make the pszStringField buffer for DBFReadAttribute() static char [256]
- * as per bug 306.
- *
- * Revision 1.56 2005/02/10 20:07:56 fwarmerdam
- * Fixed bug 305 in DBFCloneEmpty() - header length problem.
- *
- * Revision 1.55 2004/09/26 20:23:46 fwarmerdam
- * avoid warnings with rcsid and signed/unsigned stuff
- *
- * Revision 1.54 2004/09/15 16:26:10 fwarmerdam
- * Treat all blank numeric fields as null too.
- */
-
-#include "shapefil.h"
-
-#include <math.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <string.h>
-
-#ifdef USE_CPL
-#include "cpl_string.h"
-#else
-
-#if defined(_MSC_VER)
-# if _MSC_VER < 1900
-# define snprintf _snprintf
-# endif
-#elif defined(WIN32) || defined(_WIN32)
-# ifndef snprintf
-# define snprintf _snprintf
-# endif
-#endif
-
-#define CPLsprintf sprintf
-#define CPLsnprintf snprintf
-#endif
-
-SHP_CVSID("$Id: dbfopen.c,v 1.92 2016-12-05 18:44:08 erouault Exp $")
-
-#ifndef FALSE
-# define FALSE 0
-# define TRUE 1
-#endif
-
-/* File header size */
-#define XBASE_FILEHDR_SZ 32
-
-#define HEADER_RECORD_TERMINATOR 0x0D
-
-/* See http://www.manmrk.net/tutorials/database/xbase/dbf.html */
-#define END_OF_FILE_CHARACTER 0x1A
-
-#ifdef USE_CPL
-CPL_INLINE static void CPL_IGNORE_RET_VAL_INT(CPL_UNUSED int unused) {}
-#else
-#define CPL_IGNORE_RET_VAL_INT(x) x
-#endif
-
-/************************************************************************/
-/* SfRealloc() */
-/* */
-/* A realloc cover function that will access a NULL pointer as */
-/* a valid input. */
-/************************************************************************/
-
-static void * SfRealloc( void * pMem, int nNewSize )
-
-{
- if( pMem == NULL )
- return( (void *) malloc(nNewSize) );
- else
- return( (void *) realloc(pMem,nNewSize) );
-}
-
-/************************************************************************/
-/* DBFWriteHeader() */
-/* */
-/* This is called to write out the file header, and field */
-/* descriptions before writing any actual data records. This */
-/* also computes all the DBFDataSet field offset/size/decimals */
-/* and so forth values. */
-/************************************************************************/
-
-static void DBFWriteHeader(DBFHandle psDBF)
-
-{
- unsigned char abyHeader[XBASE_FILEHDR_SZ] = { 0 };
-
- if( !psDBF->bNoHeader )
- return;
-
- psDBF->bNoHeader = FALSE;
-
-/* -------------------------------------------------------------------- */
-/* Initialize the file header information. */
-/* -------------------------------------------------------------------- */
- abyHeader[0] = 0x03; /* memo field? - just copying */
-
- /* write out update date */
- abyHeader[1] = (unsigned char) psDBF->nUpdateYearSince1900;
- abyHeader[2] = (unsigned char) psDBF->nUpdateMonth;
- abyHeader[3] = (unsigned char) psDBF->nUpdateDay;
-
- /* record count preset at zero */
-
- abyHeader[8] = (unsigned char) (psDBF->nHeaderLength % 256);
- abyHeader[9] = (unsigned char) (psDBF->nHeaderLength / 256);
-
- abyHeader[10] = (unsigned char) (psDBF->nRecordLength % 256);
- abyHeader[11] = (unsigned char) (psDBF->nRecordLength / 256);
-
- abyHeader[29] = (unsigned char) (psDBF->iLanguageDriver);
-
-/* -------------------------------------------------------------------- */
-/* Write the initial 32 byte file header, and all the field */
-/* descriptions. */
-/* -------------------------------------------------------------------- */
- psDBF->sHooks.FSeek( psDBF->fp, 0, 0 );
- psDBF->sHooks.FWrite( abyHeader, XBASE_FILEHDR_SZ, 1, psDBF->fp );
- psDBF->sHooks.FWrite( psDBF->pszHeader, XBASE_FLDHDR_SZ, psDBF->nFields,
- psDBF->fp );
-
-/* -------------------------------------------------------------------- */
-/* Write out the newline character if there is room for it. */
-/* -------------------------------------------------------------------- */
- if( psDBF->nHeaderLength > XBASE_FLDHDR_SZ*psDBF->nFields +
- XBASE_FLDHDR_SZ )
- {
- char cNewline;
-
- cNewline = HEADER_RECORD_TERMINATOR;
- psDBF->sHooks.FWrite( &cNewline, 1, 1, psDBF->fp );
- }
-
-/* -------------------------------------------------------------------- */
-/* If the file is new, add a EOF character. */
-/* -------------------------------------------------------------------- */
- if( psDBF->nRecords == 0 && psDBF->bWriteEndOfFileChar )
- {
- char ch = END_OF_FILE_CHARACTER;
-
- psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp );
- }
-}
-
-/************************************************************************/
-/* DBFFlushRecord() */
-/* */
-/* Write out the current record if there is one. */
-/************************************************************************/
-
-static int DBFFlushRecord( DBFHandle psDBF )
-
-{
- SAOffset nRecordOffset;
-
- if( psDBF->bCurrentRecordModified && psDBF->nCurrentRecord > -1 )
- {
- psDBF->bCurrentRecordModified = FALSE;
-
- nRecordOffset =
- psDBF->nRecordLength * (SAOffset) psDBF->nCurrentRecord
- + psDBF->nHeaderLength;
-
- if( psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 ) != 0
- || psDBF->sHooks.FWrite( psDBF->pszCurrentRecord,
- psDBF->nRecordLength,
- 1, psDBF->fp ) != 1 )
- {
- char szMessage[128];
- snprintf( szMessage, sizeof(szMessage), "Failure writing DBF record %d.",
- psDBF->nCurrentRecord );
- psDBF->sHooks.Error( szMessage );
- return FALSE;
- }
-
- if( psDBF->nCurrentRecord == psDBF->nRecords - 1 )
- {
- if( psDBF->bWriteEndOfFileChar )
- {
- char ch = END_OF_FILE_CHARACTER;
- psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp );
- }
- }
- }
-
- return TRUE;
-}
-
-/************************************************************************/
-/* DBFLoadRecord() */
-/************************************************************************/
-
-static int DBFLoadRecord( DBFHandle psDBF, int iRecord )
-
-{
- if( psDBF->nCurrentRecord != iRecord )
- {
- SAOffset nRecordOffset;
-
- if( !DBFFlushRecord( psDBF ) )
- return FALSE;
-
- nRecordOffset =
- psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength;
-
- if( psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, SEEK_SET ) != 0 )
- {
- char szMessage[128];
- snprintf( szMessage, sizeof(szMessage), "fseek(%ld) failed on DBF file.",
- (long) nRecordOffset );
- psDBF->sHooks.Error( szMessage );
- return FALSE;
- }
-
- if( psDBF->sHooks.FRead( psDBF->pszCurrentRecord,
- psDBF->nRecordLength, 1, psDBF->fp ) != 1 )
- {
- char szMessage[128];
- snprintf( szMessage, sizeof(szMessage), "fread(%d) failed on DBF file.",
- psDBF->nRecordLength );
- psDBF->sHooks.Error( szMessage );
- return FALSE;
- }
-
- psDBF->nCurrentRecord = iRecord;
- }
-
- return TRUE;
-}
-
-/************************************************************************/
-/* DBFUpdateHeader() */
-/************************************************************************/
-
-void SHPAPI_CALL
-DBFUpdateHeader( DBFHandle psDBF )
-
-{
- unsigned char abyFileHeader[XBASE_FILEHDR_SZ];
-
- if( psDBF->bNoHeader )
- DBFWriteHeader( psDBF );
-
- if( !DBFFlushRecord( psDBF ) )
- return;
-
- psDBF->sHooks.FSeek( psDBF->fp, 0, 0 );
- psDBF->sHooks.FRead( abyFileHeader, sizeof(abyFileHeader), 1, psDBF->fp );
-
- abyFileHeader[1] = (unsigned char) psDBF->nUpdateYearSince1900;
- abyFileHeader[2] = (unsigned char) psDBF->nUpdateMonth;
- abyFileHeader[3] = (unsigned char) psDBF->nUpdateDay;
- abyFileHeader[4] = (unsigned char) (psDBF->nRecords % 256);
- abyFileHeader[5] = (unsigned char) ((psDBF->nRecords/256) % 256);
- abyFileHeader[6] = (unsigned char) ((psDBF->nRecords/(256*256)) % 256);
- abyFileHeader[7] = (unsigned char) ((psDBF->nRecords/(256*256*256)) % 256);
-
- psDBF->sHooks.FSeek( psDBF->fp, 0, 0 );
- psDBF->sHooks.FWrite( abyFileHeader, sizeof(abyFileHeader), 1, psDBF->fp );
-
- psDBF->sHooks.FFlush( psDBF->fp );
-}
-
-/************************************************************************/
-/* DBFSetLastModifiedDate() */
-/************************************************************************/
-
-void SHPAPI_CALL
-DBFSetLastModifiedDate( DBFHandle psDBF, int nYYSince1900, int nMM, int nDD )
-{
- psDBF->nUpdateYearSince1900 = nYYSince1900;
- psDBF->nUpdateMonth = nMM;
- psDBF->nUpdateDay = nDD;
-}
-
-/************************************************************************/
-/* DBFOpen() */
-/* */
-/* Open a .dbf file. */
-/************************************************************************/
-
-DBFHandle SHPAPI_CALL
-DBFOpen( const char * pszFilename, const char * pszAccess )
-
-{
- SAHooks sHooks;
-
- SASetupDefaultHooks( &sHooks );
-
- return DBFOpenLL( pszFilename, pszAccess, &sHooks );
-}
-
-/************************************************************************/
-/* DBFOpen() */
-/* */
-/* Open a .dbf file. */
-/************************************************************************/
-
-DBFHandle SHPAPI_CALL
-DBFOpenLL( const char * pszFilename, const char * pszAccess, SAHooks *psHooks )
-
-{
- DBFHandle psDBF;
- SAFile pfCPG;
- unsigned char *pabyBuf;
- int nFields, nHeadLen, iField, i;
- char *pszBasename, *pszFullname;
- int nBufSize = 500;
- size_t nFullnameLen;
-
-/* -------------------------------------------------------------------- */
-/* We only allow the access strings "rb" and "r+". */
-/* -------------------------------------------------------------------- */
- if( strcmp(pszAccess,"r") != 0 && strcmp(pszAccess,"r+") != 0
- && strcmp(pszAccess,"rb") != 0 && strcmp(pszAccess,"rb+") != 0
- && strcmp(pszAccess,"r+b") != 0 )
- return( NULL );
-
- if( strcmp(pszAccess,"r") == 0 )
- pszAccess = "rb";
-
- if( strcmp(pszAccess,"r+") == 0 )
- pszAccess = "rb+";
-
-/* -------------------------------------------------------------------- */
-/* Compute the base (layer) name. If there is any extension */
-/* on the passed in filename we will strip it off. */
-/* -------------------------------------------------------------------- */
- pszBasename = (char *) malloc(strlen(pszFilename)+5);
- strcpy( pszBasename, pszFilename );
- for( i = (int)strlen(pszBasename)-1;
- i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'
- && pszBasename[i] != '\\';
- i-- ) {}
-
- if( pszBasename[i] == '.' )
- pszBasename[i] = '\0';
-
- nFullnameLen = strlen(pszBasename) + 5;
- pszFullname = (char *) malloc(nFullnameLen);
- snprintf( pszFullname, nFullnameLen, "%s.dbf", pszBasename );
-
- psDBF = (DBFHandle) calloc( 1, sizeof(DBFInfo) );
- psDBF->fp = psHooks->FOpen( pszFullname, pszAccess );
- memcpy( &(psDBF->sHooks), psHooks, sizeof(SAHooks) );
-
- if( psDBF->fp == NULL )
- {
- snprintf( pszFullname, nFullnameLen, "%s.DBF", pszBasename );
- psDBF->fp = psDBF->sHooks.FOpen(pszFullname, pszAccess );
- }
-
- snprintf( pszFullname, nFullnameLen, "%s.cpg", pszBasename );
- pfCPG = psHooks->FOpen( pszFullname, "r" );
- if( pfCPG == NULL )
- {
- snprintf( pszFullname, nFullnameLen, "%s.CPG", pszBasename );
- pfCPG = psHooks->FOpen( pszFullname, "r" );
- }
-
- free( pszBasename );
- free( pszFullname );
-
- if( psDBF->fp == NULL )
- {
- free( psDBF );
- if( pfCPG ) psHooks->FClose( pfCPG );
- return( NULL );
- }
-
- psDBF->bNoHeader = FALSE;
- psDBF->nCurrentRecord = -1;
- psDBF->bCurrentRecordModified = FALSE;
-
-/* -------------------------------------------------------------------- */
-/* Read Table Header info */
-/* -------------------------------------------------------------------- */
- pabyBuf = (unsigned char *) malloc(nBufSize);
- if( psDBF->sHooks.FRead( pabyBuf, XBASE_FILEHDR_SZ, 1, psDBF->fp ) != 1 )
- {
- psDBF->sHooks.FClose( psDBF->fp );
- if( pfCPG ) psDBF->sHooks.FClose( pfCPG );
- free( pabyBuf );
- free( psDBF );
- return NULL;
- }
-
- DBFSetLastModifiedDate(psDBF, pabyBuf[1], pabyBuf[2], pabyBuf[3]);
-
- psDBF->nRecords =
- pabyBuf[4] + pabyBuf[5]*256 + pabyBuf[6]*256*256 + (pabyBuf[7] & 0x7f) *256*256*256;
-
- psDBF->nHeaderLength = nHeadLen = pabyBuf[8] + pabyBuf[9]*256;
- psDBF->nRecordLength = pabyBuf[10] + pabyBuf[11]*256;
- psDBF->iLanguageDriver = pabyBuf[29];
-
- if (psDBF->nRecordLength == 0 || nHeadLen < XBASE_FILEHDR_SZ)
- {
- psDBF->sHooks.FClose( psDBF->fp );
- if( pfCPG ) psDBF->sHooks.FClose( pfCPG );
- free( pabyBuf );
- free( psDBF );
- return NULL;
- }
-
- psDBF->nFields = nFields = (nHeadLen - XBASE_FILEHDR_SZ) / XBASE_FLDHDR_SZ;
-
- psDBF->pszCurrentRecord = (char *) malloc(psDBF->nRecordLength);
-
-/* -------------------------------------------------------------------- */
-/* Figure out the code page from the LDID and CPG */
-/* -------------------------------------------------------------------- */
-
- psDBF->pszCodePage = NULL;
- if( pfCPG )
- {
- size_t n;
- memset( pabyBuf, 0, nBufSize);
- psDBF->sHooks.FRead( pabyBuf, nBufSize - 1, 1, pfCPG );
- n = strcspn( (char *) pabyBuf, "\n\r" );
- if( n > 0 )
- {
- pabyBuf[n] = '\0';
- psDBF->pszCodePage = (char *) malloc(n + 1);
- memcpy( psDBF->pszCodePage, pabyBuf, n + 1 );
- }
- psDBF->sHooks.FClose( pfCPG );
- }
- if( psDBF->pszCodePage == NULL && pabyBuf[29] != 0 )
- {
- snprintf( (char *) pabyBuf, nBufSize, "LDID/%d", psDBF->iLanguageDriver );
- psDBF->pszCodePage = (char *) malloc(strlen((char*)pabyBuf) + 1);
- strcpy( psDBF->pszCodePage, (char *) pabyBuf );
- }
-
-/* -------------------------------------------------------------------- */
-/* Read in Field Definitions */
-/* -------------------------------------------------------------------- */
-
- pabyBuf = (unsigned char *) SfRealloc(pabyBuf,nHeadLen);
- psDBF->pszHeader = (char *) pabyBuf;
-
- psDBF->sHooks.FSeek( psDBF->fp, XBASE_FILEHDR_SZ, 0 );
- if( psDBF->sHooks.FRead( pabyBuf, nHeadLen-XBASE_FILEHDR_SZ, 1,
- psDBF->fp ) != 1 )
- {
- psDBF->sHooks.FClose( psDBF->fp );
- free( pabyBuf );
- free( psDBF->pszCurrentRecord );
- free( psDBF );
- return NULL;
- }
-
- psDBF->panFieldOffset = (int *) malloc(sizeof(int) * nFields);
- psDBF->panFieldSize = (int *) malloc(sizeof(int) * nFields);
- psDBF->panFieldDecimals = (int *) malloc(sizeof(int) * nFields);
- psDBF->pachFieldType = (char *) malloc(sizeof(char) * nFields);
-
- for( iField = 0; iField < nFields; iField++ )
- {
- unsigned char *pabyFInfo;
-
- pabyFInfo = pabyBuf+iField*XBASE_FLDHDR_SZ;
-
- if( pabyFInfo[11] == 'N' || pabyFInfo[11] == 'F' )
- {
- psDBF->panFieldSize[iField] = pabyFInfo[16];
- psDBF->panFieldDecimals[iField] = pabyFInfo[17];
- }
- else
- {
- psDBF->panFieldSize[iField] = pabyFInfo[16];
- psDBF->panFieldDecimals[iField] = 0;
-
-/*
-** The following seemed to be used sometimes to handle files with long
-** string fields, but in other cases (such as bug 1202) the decimals field
-** just seems to indicate some sort of preferred formatting, not very
-** wide fields. So I have disabled this code. FrankW.
- psDBF->panFieldSize[iField] = pabyFInfo[16] + pabyFInfo[17]*256;
- psDBF->panFieldDecimals[iField] = 0;
-*/
- }
-
- psDBF->pachFieldType[iField] = (char) pabyFInfo[11];
- if( iField == 0 )
- psDBF->panFieldOffset[iField] = 1;
- else
- psDBF->panFieldOffset[iField] =
- psDBF->panFieldOffset[iField-1] + psDBF->panFieldSize[iField-1];
- }
-
- DBFSetWriteEndOfFileChar( psDBF, TRUE );
-
- return( psDBF );
-}
-
-/************************************************************************/
-/* DBFClose() */
-/************************************************************************/
-
-void SHPAPI_CALL
-DBFClose(DBFHandle psDBF)
-{
- if( psDBF == NULL )
- return;
-
-/* -------------------------------------------------------------------- */
-/* Write out header if not already written. */
-/* -------------------------------------------------------------------- */
- if( psDBF->bNoHeader )
- DBFWriteHeader( psDBF );
-
- CPL_IGNORE_RET_VAL_INT(DBFFlushRecord( psDBF ));
-
-/* -------------------------------------------------------------------- */
-/* Update last access date, and number of records if we have */
-/* write access. */
-/* -------------------------------------------------------------------- */
- if( psDBF->bUpdated )
- DBFUpdateHeader( psDBF );
-
-/* -------------------------------------------------------------------- */
-/* Close, and free resources. */
-/* -------------------------------------------------------------------- */
- psDBF->sHooks.FClose( psDBF->fp );
-
- if( psDBF->panFieldOffset != NULL )
- {
- free( psDBF->panFieldOffset );
- free( psDBF->panFieldSize );
- free( psDBF->panFieldDecimals );
- free( psDBF->pachFieldType );
- }
-
- if( psDBF->pszWorkField != NULL )
- free( psDBF->pszWorkField );
-
- free( psDBF->pszHeader );
- free( psDBF->pszCurrentRecord );
- free( psDBF->pszCodePage );
-
- free( psDBF );
-}
-
-/************************************************************************/
-/* DBFCreate() */
-/* */
-/* Create a new .dbf file with default code page LDID/87 (0x57) */
-/************************************************************************/
-
-DBFHandle SHPAPI_CALL
-DBFCreate( const char * pszFilename )
-
-{
- return DBFCreateEx( pszFilename, "LDID/87" ); // 0x57
-}
-
-/************************************************************************/
-/* DBFCreateEx() */
-/* */
-/* Create a new .dbf file. */
-/************************************************************************/
-
-DBFHandle SHPAPI_CALL
-DBFCreateEx( const char * pszFilename, const char* pszCodePage )
-
-{
- SAHooks sHooks;
-
- SASetupDefaultHooks( &sHooks );
-
- return DBFCreateLL( pszFilename, pszCodePage , &sHooks );
-}
-
-/************************************************************************/
-/* DBFCreate() */
-/* */
-/* Create a new .dbf file. */
-/************************************************************************/
-
-DBFHandle SHPAPI_CALL
-DBFCreateLL( const char * pszFilename, const char * pszCodePage, SAHooks *psHooks )
-
-{
- DBFHandle psDBF;
- SAFile fp;
- char *pszFullname, *pszBasename;
- int i, ldid = -1;
- char chZero = '\0';
- size_t nFullnameLen;
-
-/* -------------------------------------------------------------------- */
-/* Compute the base (layer) name. If there is any extension */
-/* on the passed in filename we will strip it off. */
-/* -------------------------------------------------------------------- */
- pszBasename = (char *) malloc(strlen(pszFilename)+5);
- strcpy( pszBasename, pszFilename );
- for( i = (int)strlen(pszBasename)-1;
- i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'
- && pszBasename[i] != '\\';
- i-- ) {}
-
- if( pszBasename[i] == '.' )
- pszBasename[i] = '\0';
-
- nFullnameLen = strlen(pszBasename) + 5;
- pszFullname = (char *) malloc(nFullnameLen);
- snprintf( pszFullname, nFullnameLen, "%s.dbf", pszBasename );
-
-/* -------------------------------------------------------------------- */
-/* Create the file. */
-/* -------------------------------------------------------------------- */
- fp = psHooks->FOpen( pszFullname, "wb" );
- if( fp == NULL )
- {
- free( pszBasename );
- free( pszFullname );
- return( NULL );
- }
-
- psHooks->FWrite( &chZero, 1, 1, fp );
- psHooks->FClose( fp );
-
- fp = psHooks->FOpen( pszFullname, "rb+" );
- if( fp == NULL )
- {
- free( pszBasename );
- free( pszFullname );
- return( NULL );
- }
-
- snprintf( pszFullname, nFullnameLen, "%s.cpg", pszBasename );
- if( pszCodePage != NULL )
- {
- if( strncmp( pszCodePage, "LDID/", 5 ) == 0 )
- {
- ldid = atoi( pszCodePage + 5 );
- if( ldid > 255 )
- ldid = -1; // don't use 0 to indicate out of range as LDID/0 is a valid one
- }
- if( ldid < 0 )
- {
- SAFile fpCPG = psHooks->FOpen( pszFullname, "w" );
- psHooks->FWrite( (char*) pszCodePage, strlen(pszCodePage), 1, fpCPG );
- psHooks->FClose( fpCPG );
- }
- }
- if( pszCodePage == NULL || ldid >= 0 )
- {
- psHooks->Remove( pszFullname );
- }
-
- free( pszBasename );
- free( pszFullname );
-
-/* -------------------------------------------------------------------- */
-/* Create the info structure. */
-/* -------------------------------------------------------------------- */
- psDBF = (DBFHandle) calloc(1,sizeof(DBFInfo));
-
- memcpy( &(psDBF->sHooks), psHooks, sizeof(SAHooks) );
- psDBF->fp = fp;
- psDBF->nRecords = 0;
- psDBF->nFields = 0;
- psDBF->nRecordLength = 1;
- psDBF->nHeaderLength = XBASE_FILEHDR_SZ + 1; /* + 1 for HEADER_RECORD_TERMINATOR */
-
- psDBF->panFieldOffset = NULL;
- psDBF->panFieldSize = NULL;
- psDBF->panFieldDecimals = NULL;
- psDBF->pachFieldType = NULL;
- psDBF->pszHeader = NULL;
-
- psDBF->nCurrentRecord = -1;
- psDBF->bCurrentRecordModified = FALSE;
- psDBF->pszCurrentRecord = NULL;
-
- psDBF->bNoHeader = TRUE;
-
- psDBF->iLanguageDriver = ldid > 0 ? ldid : 0;
- psDBF->pszCodePage = NULL;
- if( pszCodePage )
- {
- psDBF->pszCodePage = (char * ) malloc( strlen(pszCodePage) + 1 );
- strcpy( psDBF->pszCodePage, pszCodePage );
- }
- DBFSetLastModifiedDate(psDBF, 95, 7, 26); /* dummy date */
-
- DBFSetWriteEndOfFileChar(psDBF, TRUE);
-
- return( psDBF );
-}
-
-/************************************************************************/
-/* DBFAddField() */
-/* */
-/* Add a field to a newly created .dbf or to an existing one */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFAddField(DBFHandle psDBF, const char * pszFieldName,
- DBFFieldType eType, int nWidth, int nDecimals )
-
-{
- char chNativeType = 'C';
-
- if( eType == FTLogical )
- chNativeType = 'L';
- else if( eType == FTString )
- chNativeType = 'C';
- else
- chNativeType = 'N';
-
- return DBFAddNativeFieldType( psDBF, pszFieldName, chNativeType,
- nWidth, nDecimals );
-}
-
-/************************************************************************/
-/* DBFGetNullCharacter() */
-/************************************************************************/
-
-static char DBFGetNullCharacter(char chType)
-{
- switch (chType)
- {
- case 'N':
- case 'F':
- return '*';
- case 'D':
- return '0';
- case 'L':
- return '?';
- default:
- return ' ';
- }
-}
-
-/************************************************************************/
-/* DBFAddField() */
-/* */
-/* Add a field to a newly created .dbf file before any records */
-/* are written. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFAddNativeFieldType(DBFHandle psDBF, const char * pszFieldName,
- char chType, int nWidth, int nDecimals )
-
-{
- char *pszFInfo;
- int i;
- int nOldRecordLength, nOldHeaderLength;
- char *pszRecord;
- char chFieldFill;
- SAOffset nRecordOffset;
-
- /* make sure that everything is written in .dbf */
- if( !DBFFlushRecord( psDBF ) )
- return -1;
-
- if( psDBF->nHeaderLength + XBASE_FLDHDR_SZ > 65535 )
- {
- char szMessage[128];
- snprintf( szMessage, sizeof(szMessage),
- "Cannot add field %s. Header length limit reached "
- "(max 65535 bytes, 2046 fields).",
- pszFieldName );
- psDBF->sHooks.Error( szMessage );
- return -1;
- }
-
-/* -------------------------------------------------------------------- */
-/* Do some checking to ensure we can add records to this file. */
-/* -------------------------------------------------------------------- */
- if( nWidth < 1 )
- return -1;
-
- if( nWidth > XBASE_FLD_MAX_WIDTH )
- nWidth = XBASE_FLD_MAX_WIDTH;
-
- if( psDBF->nRecordLength + nWidth > 65535 )
- {
- char szMessage[128];
- snprintf( szMessage, sizeof(szMessage),
- "Cannot add field %s. Record length limit reached "
- "(max 65535 bytes).",
- pszFieldName );
- psDBF->sHooks.Error( szMessage );
- return -1;
- }
-
- nOldRecordLength = psDBF->nRecordLength;
- nOldHeaderLength = psDBF->nHeaderLength;
-
-/* -------------------------------------------------------------------- */
-/* SfRealloc all the arrays larger to hold the additional field */
-/* information. */
-/* -------------------------------------------------------------------- */
- psDBF->nFields++;
-
- psDBF->panFieldOffset = (int *)
- SfRealloc( psDBF->panFieldOffset, sizeof(int) * psDBF->nFields );
-
- psDBF->panFieldSize = (int *)
- SfRealloc( psDBF->panFieldSize, sizeof(int) * psDBF->nFields );
-
- psDBF->panFieldDecimals = (int *)
- SfRealloc( psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields );
-
- psDBF->pachFieldType = (char *)
- SfRealloc( psDBF->pachFieldType, sizeof(char) * psDBF->nFields );
-
-/* -------------------------------------------------------------------- */
-/* Assign the new field information fields. */
-/* -------------------------------------------------------------------- */
- psDBF->panFieldOffset[psDBF->nFields-1] = psDBF->nRecordLength;
- psDBF->nRecordLength += nWidth;
- psDBF->panFieldSize[psDBF->nFields-1] = nWidth;
- psDBF->panFieldDecimals[psDBF->nFields-1] = nDecimals;
- psDBF->pachFieldType[psDBF->nFields-1] = chType;
-
-/* -------------------------------------------------------------------- */
-/* Extend the required header information. */
-/* -------------------------------------------------------------------- */
- psDBF->nHeaderLength += XBASE_FLDHDR_SZ;
- psDBF->bUpdated = FALSE;
-
- psDBF->pszHeader = (char *) SfRealloc(psDBF->pszHeader,
- psDBF->nFields*XBASE_FLDHDR_SZ);
-
- pszFInfo = psDBF->pszHeader + XBASE_FLDHDR_SZ * (psDBF->nFields-1);
-
- for( i = 0; i < XBASE_FLDHDR_SZ; i++ )
- pszFInfo[i] = '\0';
-
- strncpy( pszFInfo, pszFieldName, XBASE_FLDNAME_LEN_WRITE );
-
- pszFInfo[11] = psDBF->pachFieldType[psDBF->nFields-1];
-
- if( chType == 'C' )
- {
- pszFInfo[16] = (unsigned char) (nWidth % 256);
- pszFInfo[17] = (unsigned char) (nWidth / 256);
- }
- else
- {
- pszFInfo[16] = (unsigned char) nWidth;
- pszFInfo[17] = (unsigned char) nDecimals;
- }
-
-/* -------------------------------------------------------------------- */
-/* Make the current record buffer appropriately larger. */
-/* -------------------------------------------------------------------- */
- psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord,
- psDBF->nRecordLength);
-
- /* we're done if dealing with new .dbf */
- if( psDBF->bNoHeader )
- return( psDBF->nFields - 1 );
-
-/* -------------------------------------------------------------------- */
-/* For existing .dbf file, shift records */
-/* -------------------------------------------------------------------- */
-
- /* alloc record */
- pszRecord = (char *) malloc(sizeof(char) * psDBF->nRecordLength);
-
- chFieldFill = DBFGetNullCharacter(chType);
-
- for (i = psDBF->nRecords-1; i >= 0; --i)
- {
- nRecordOffset = nOldRecordLength * (SAOffset) i + nOldHeaderLength;
-
- /* load record */
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FRead( pszRecord, nOldRecordLength, 1, psDBF->fp );
-
- /* set new field's value to NULL */
- memset(pszRecord + nOldRecordLength, chFieldFill, nWidth);
-
- nRecordOffset = psDBF->nRecordLength * (SAOffset) i + psDBF->nHeaderLength;
-
- /* move record to the new place*/
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FWrite( pszRecord, psDBF->nRecordLength, 1, psDBF->fp );
- }
-
- if( psDBF->bWriteEndOfFileChar )
- {
- char ch = END_OF_FILE_CHARACTER;
-
- nRecordOffset =
- psDBF->nRecordLength * (SAOffset) psDBF->nRecords + psDBF->nHeaderLength;
-
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp );
- }
-
- /* free record */
- free(pszRecord);
-
- /* force update of header with new header, record length and new field */
- psDBF->bNoHeader = TRUE;
- DBFUpdateHeader( psDBF );
-
- psDBF->nCurrentRecord = -1;
- psDBF->bCurrentRecordModified = FALSE;
- psDBF->bUpdated = TRUE;
-
- return( psDBF->nFields-1 );
-}
-
-/************************************************************************/
-/* DBFReadAttribute() */
-/* */
-/* Read one of the attribute fields of a record. */
-/************************************************************************/
-
-static void *DBFReadAttribute(DBFHandle psDBF, int hEntity, int iField,
- char chReqType )
-
-{
- unsigned char *pabyRec;
- void *pReturnField = NULL;
-
-/* -------------------------------------------------------------------- */
-/* Verify selection. */
-/* -------------------------------------------------------------------- */
- if( hEntity < 0 || hEntity >= psDBF->nRecords )
- return( NULL );
-
- if( iField < 0 || iField >= psDBF->nFields )
- return( NULL );
-
-/* -------------------------------------------------------------------- */
-/* Have we read the record? */
-/* -------------------------------------------------------------------- */
- if( !DBFLoadRecord( psDBF, hEntity ) )
- return NULL;
-
- pabyRec = (unsigned char *) psDBF->pszCurrentRecord;
-
-/* -------------------------------------------------------------------- */
-/* Ensure we have room to extract the target field. */
-/* -------------------------------------------------------------------- */
- if( psDBF->panFieldSize[iField] >= psDBF->nWorkFieldLength )
- {
- psDBF->nWorkFieldLength = psDBF->panFieldSize[iField] + 100;
- if( psDBF->pszWorkField == NULL )
- psDBF->pszWorkField = (char *) malloc(psDBF->nWorkFieldLength);
- else
- psDBF->pszWorkField = (char *) realloc(psDBF->pszWorkField,
- psDBF->nWorkFieldLength);
- }
-
-/* -------------------------------------------------------------------- */
-/* Extract the requested field. */
-/* -------------------------------------------------------------------- */
- memcpy( psDBF->pszWorkField,
- ((const char *) pabyRec) + psDBF->panFieldOffset[iField],
- psDBF->panFieldSize[iField] );
- psDBF->pszWorkField[psDBF->panFieldSize[iField]] = '\0';
-
- pReturnField = psDBF->pszWorkField;
-
-/* -------------------------------------------------------------------- */
-/* Decode the field. */
-/* -------------------------------------------------------------------- */
- if( chReqType == 'I' )
- {
- psDBF->fieldValue.nIntField = atoi(psDBF->pszWorkField);
-
- pReturnField = &(psDBF->fieldValue.nIntField);
- }
- else if( chReqType == 'N' )
- {
- psDBF->fieldValue.dfDoubleField = psDBF->sHooks.Atof(psDBF->pszWorkField);
-
- pReturnField = &(psDBF->fieldValue.dfDoubleField);
- }
-
-/* -------------------------------------------------------------------- */
-/* Should we trim white space off the string attribute value? */
-/* -------------------------------------------------------------------- */
-#ifdef TRIM_DBF_WHITESPACE
- else
- {
- char *pchSrc, *pchDst;
-
- pchDst = pchSrc = psDBF->pszWorkField;
- while( *pchSrc == ' ' )
- pchSrc++;
-
- while( *pchSrc != '\0' )
- *(pchDst++) = *(pchSrc++);
- *pchDst = '\0';
-
- while( pchDst != psDBF->pszWorkField && *(--pchDst) == ' ' )
- *pchDst = '\0';
- }
-#endif
-
- return( pReturnField );
-}
-
-/************************************************************************/
-/* DBFReadIntAttribute() */
-/* */
-/* Read an integer attribute. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFReadIntegerAttribute( DBFHandle psDBF, int iRecord, int iField )
-
-{
- int *pnValue;
-
- pnValue = (int *) DBFReadAttribute( psDBF, iRecord, iField, 'I' );
-
- if( pnValue == NULL )
- return 0;
- else
- return( *pnValue );
-}
-
-/************************************************************************/
-/* DBFReadDoubleAttribute() */
-/* */
-/* Read a double attribute. */
-/************************************************************************/
-
-double SHPAPI_CALL
-DBFReadDoubleAttribute( DBFHandle psDBF, int iRecord, int iField )
-
-{
- double *pdValue;
-
- pdValue = (double *) DBFReadAttribute( psDBF, iRecord, iField, 'N' );
-
- if( pdValue == NULL )
- return 0.0;
- else
- return( *pdValue );
-}
-
-/************************************************************************/
-/* DBFReadStringAttribute() */
-/* */
-/* Read a string attribute. */
-/************************************************************************/
-
-const char SHPAPI_CALL1(*)
-DBFReadStringAttribute( DBFHandle psDBF, int iRecord, int iField )
-
-{
- return( (const char *) DBFReadAttribute( psDBF, iRecord, iField, 'C' ) );
-}
-
-/************************************************************************/
-/* DBFReadLogicalAttribute() */
-/* */
-/* Read a logical attribute. */
-/************************************************************************/
-
-const char SHPAPI_CALL1(*)
-DBFReadLogicalAttribute( DBFHandle psDBF, int iRecord, int iField )
-
-{
- return( (const char *) DBFReadAttribute( psDBF, iRecord, iField, 'L' ) );
-}
-
-
-/************************************************************************/
-/* DBFIsValueNULL() */
-/* */
-/* Return TRUE if the passed string is NULL. */
-/************************************************************************/
-
-static int DBFIsValueNULL( char chType, const char* pszValue )
-{
- int i;
-
- if( pszValue == NULL )
- return TRUE;
-
- switch(chType)
- {
- case 'N':
- case 'F':
- /*
- ** We accept all asterisks or all blanks as NULL
- ** though according to the spec I think it should be all
- ** asterisks.
- */
- if( pszValue[0] == '*' )
- return TRUE;
-
- for( i = 0; pszValue[i] != '\0'; i++ )
- {
- if( pszValue[i] != ' ' )
- return FALSE;
- }
- return TRUE;
-
- case 'D':
- /* NULL date fields have value "00000000" */
- return strncmp(pszValue,"00000000",8) == 0;
-
- case 'L':
- /* NULL boolean fields have value "?" */
- return pszValue[0] == '?';
-
- default:
- /* empty string fields are considered NULL */
- return strlen(pszValue) == 0;
- }
-}
-
-/************************************************************************/
-/* DBFIsAttributeNULL() */
-/* */
-/* Return TRUE if value for field is NULL. */
-/* */
-/* Contributed by Jim Matthews. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFIsAttributeNULL( DBFHandle psDBF, int iRecord, int iField )
-
-{
- const char *pszValue;
-
- pszValue = DBFReadStringAttribute( psDBF, iRecord, iField );
-
- if( pszValue == NULL )
- return TRUE;
-
- return DBFIsValueNULL( psDBF->pachFieldType[iField], pszValue );
-}
-
-/************************************************************************/
-/* DBFGetFieldCount() */
-/* */
-/* Return the number of fields in this table. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFGetFieldCount( DBFHandle psDBF )
-
-{
- return( psDBF->nFields );
-}
-
-/************************************************************************/
-/* DBFGetRecordCount() */
-/* */
-/* Return the number of records in this table. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFGetRecordCount( DBFHandle psDBF )
-
-{
- return( psDBF->nRecords );
-}
-
-/************************************************************************/
-/* DBFGetFieldInfo() */
-/* */
-/* Return any requested information about the field. */
-/* pszFieldName must be at least XBASE_FLDNAME_LEN_READ+1 (=12) */
-/* bytes long. */
-/************************************************************************/
-
-DBFFieldType SHPAPI_CALL
-DBFGetFieldInfo( DBFHandle psDBF, int iField, char * pszFieldName,
- int * pnWidth, int * pnDecimals )
-
-{
- if( iField < 0 || iField >= psDBF->nFields )
- return( FTInvalid );
-
- if( pnWidth != NULL )
- *pnWidth = psDBF->panFieldSize[iField];
-
- if( pnDecimals != NULL )
- *pnDecimals = psDBF->panFieldDecimals[iField];
-
- if( pszFieldName != NULL )
- {
- int i;
-
- strncpy( pszFieldName, (char *) psDBF->pszHeader+iField*XBASE_FLDHDR_SZ,
- XBASE_FLDNAME_LEN_READ );
- pszFieldName[XBASE_FLDNAME_LEN_READ] = '\0';
- for( i = XBASE_FLDNAME_LEN_READ - 1; i > 0 && pszFieldName[i] == ' '; i-- )
- pszFieldName[i] = '\0';
- }
-
- if ( psDBF->pachFieldType[iField] == 'L' )
- return( FTLogical);
-
- else if( psDBF->pachFieldType[iField] == 'N'
- || psDBF->pachFieldType[iField] == 'F' )
- {
- if( psDBF->panFieldDecimals[iField] > 0
- || psDBF->panFieldSize[iField] >= 10 )
- return( FTDouble );
- else
- return( FTInteger );
- }
- else
- {
- return( FTString );
- }
-}
-
-/************************************************************************/
-/* DBFWriteAttribute() */
-/* */
-/* Write an attribute record to the file. */
-/************************************************************************/
-
-static int DBFWriteAttribute(DBFHandle psDBF, int hEntity, int iField,
- void * pValue )
-
-{
- int i, j, nRetResult = TRUE;
- unsigned char *pabyRec;
- char szSField[XBASE_FLD_MAX_WIDTH+1], szFormat[20];
-
-/* -------------------------------------------------------------------- */
-/* Is this a valid record? */
-/* -------------------------------------------------------------------- */
- if( hEntity < 0 || hEntity > psDBF->nRecords )
- return( FALSE );
-
- if( psDBF->bNoHeader )
- DBFWriteHeader(psDBF);
-
-/* -------------------------------------------------------------------- */
-/* Is this a brand new record? */
-/* -------------------------------------------------------------------- */
- if( hEntity == psDBF->nRecords )
- {
- if( !DBFFlushRecord( psDBF ) )
- return FALSE;
-
- psDBF->nRecords++;
- for( i = 0; i < psDBF->nRecordLength; i++ )
- psDBF->pszCurrentRecord[i] = ' ';
-
- psDBF->nCurrentRecord = hEntity;
- }
-
-/* -------------------------------------------------------------------- */
-/* Is this an existing record, but different than the last one */
-/* we accessed? */
-/* -------------------------------------------------------------------- */
- if( !DBFLoadRecord( psDBF, hEntity ) )
- return FALSE;
-
- pabyRec = (unsigned char *) psDBF->pszCurrentRecord;
-
- psDBF->bCurrentRecordModified = TRUE;
- psDBF->bUpdated = TRUE;
-
-/* -------------------------------------------------------------------- */
-/* Translate NULL value to valid DBF file representation. */
-/* */
-/* Contributed by Jim Matthews. */
-/* -------------------------------------------------------------------- */
- if( pValue == NULL )
- {
- memset( (char *) (pabyRec+psDBF->panFieldOffset[iField]),
- DBFGetNullCharacter(psDBF->pachFieldType[iField]),
- psDBF->panFieldSize[iField] );
- return TRUE;
- }
-
-/* -------------------------------------------------------------------- */
-/* Assign all the record fields. */
-/* -------------------------------------------------------------------- */
- switch( psDBF->pachFieldType[iField] )
- {
- case 'D':
- case 'N':
- case 'F':
- {
- int nWidth = psDBF->panFieldSize[iField];
-
- if( (int) sizeof(szSField)-2 < nWidth )
- nWidth = sizeof(szSField)-2;
-
- snprintf( szFormat, sizeof(szFormat), "%%%d.%df",
- nWidth, psDBF->panFieldDecimals[iField] );
- CPLsnprintf(szSField, sizeof(szSField), szFormat, *((double *) pValue) );
- if( (int) strlen(szSField) > psDBF->panFieldSize[iField] )
- {
- szSField[psDBF->panFieldSize[iField]] = '\0';
- nRetResult = FALSE;
- }
- strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]),
- szSField, strlen(szSField) );
- break;
- }
-
- case 'L':
- if (psDBF->panFieldSize[iField] >= 1 &&
- (*(char*)pValue == 'F' || *(char*)pValue == 'T'))
- *(pabyRec+psDBF->panFieldOffset[iField]) = *(char*)pValue;
- break;
-
- default:
- if( (int) strlen((char *) pValue) > psDBF->panFieldSize[iField] )
- {
- j = psDBF->panFieldSize[iField];
- nRetResult = FALSE;
- }
- else
- {
- memset( pabyRec+psDBF->panFieldOffset[iField], ' ',
- psDBF->panFieldSize[iField] );
- j = (int)strlen((char *) pValue);
- }
-
- strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]),
- (char *) pValue, j );
- break;
- }
-
- return( nRetResult );
-}
-
-/************************************************************************/
-/* DBFWriteAttributeDirectly() */
-/* */
-/* Write an attribute record to the file, but without any */
-/* reformatting based on type. The provided buffer is written */
-/* as is to the field position in the record. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFWriteAttributeDirectly(DBFHandle psDBF, int hEntity, int iField,
- void * pValue )
-
-{
- int i, j;
- unsigned char *pabyRec;
-
-/* -------------------------------------------------------------------- */
-/* Is this a valid record? */
-/* -------------------------------------------------------------------- */
- if( hEntity < 0 || hEntity > psDBF->nRecords )
- return( FALSE );
-
- if( psDBF->bNoHeader )
- DBFWriteHeader(psDBF);
-
-/* -------------------------------------------------------------------- */
-/* Is this a brand new record? */
-/* -------------------------------------------------------------------- */
- if( hEntity == psDBF->nRecords )
- {
- if( !DBFFlushRecord( psDBF ) )
- return FALSE;
-
- psDBF->nRecords++;
- for( i = 0; i < psDBF->nRecordLength; i++ )
- psDBF->pszCurrentRecord[i] = ' ';
-
- psDBF->nCurrentRecord = hEntity;
- }
-
-/* -------------------------------------------------------------------- */
-/* Is this an existing record, but different than the last one */
-/* we accessed? */
-/* -------------------------------------------------------------------- */
- if( !DBFLoadRecord( psDBF, hEntity ) )
- return FALSE;
-
- pabyRec = (unsigned char *) psDBF->pszCurrentRecord;
-
-/* -------------------------------------------------------------------- */
-/* Assign all the record fields. */
-/* -------------------------------------------------------------------- */
- if( (int)strlen((char *) pValue) > psDBF->panFieldSize[iField] )
- j = psDBF->panFieldSize[iField];
- else
- {
- memset( pabyRec+psDBF->panFieldOffset[iField], ' ',
- psDBF->panFieldSize[iField] );
- j = (int)strlen((char *) pValue);
- }
-
- strncpy((char *) (pabyRec+psDBF->panFieldOffset[iField]),
- (char *) pValue, j );
-
- psDBF->bCurrentRecordModified = TRUE;
- psDBF->bUpdated = TRUE;
-
- return( TRUE );
-}
-
-/************************************************************************/
-/* DBFWriteDoubleAttribute() */
-/* */
-/* Write a double attribute. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFWriteDoubleAttribute( DBFHandle psDBF, int iRecord, int iField,
- double dValue )
-
-{
- return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) &dValue ) );
-}
-
-/************************************************************************/
-/* DBFWriteIntegerAttribute() */
-/* */
-/* Write a integer attribute. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFWriteIntegerAttribute( DBFHandle psDBF, int iRecord, int iField,
- int nValue )
-
-{
- double dValue = nValue;
-
- return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) &dValue ) );
-}
-
-/************************************************************************/
-/* DBFWriteStringAttribute() */
-/* */
-/* Write a string attribute. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFWriteStringAttribute( DBFHandle psDBF, int iRecord, int iField,
- const char * pszValue )
-
-{
- return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) pszValue ) );
-}
-
-/************************************************************************/
-/* DBFWriteNULLAttribute() */
-/* */
-/* Write a string attribute. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFWriteNULLAttribute( DBFHandle psDBF, int iRecord, int iField )
-
-{
- return( DBFWriteAttribute( psDBF, iRecord, iField, NULL ) );
-}
-
-/************************************************************************/
-/* DBFWriteLogicalAttribute() */
-/* */
-/* Write a logical attribute. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFWriteLogicalAttribute( DBFHandle psDBF, int iRecord, int iField,
- const char lValue)
-
-{
- return( DBFWriteAttribute( psDBF, iRecord, iField, (void *) (&lValue) ) );
-}
-
-/************************************************************************/
-/* DBFWriteTuple() */
-/* */
-/* Write an attribute record to the file. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFWriteTuple(DBFHandle psDBF, int hEntity, void * pRawTuple )
-
-{
- int i;
- unsigned char *pabyRec;
-
-/* -------------------------------------------------------------------- */
-/* Is this a valid record? */
-/* -------------------------------------------------------------------- */
- if( hEntity < 0 || hEntity > psDBF->nRecords )
- return( FALSE );
-
- if( psDBF->bNoHeader )
- DBFWriteHeader(psDBF);
-
-/* -------------------------------------------------------------------- */
-/* Is this a brand new record? */
-/* -------------------------------------------------------------------- */
- if( hEntity == psDBF->nRecords )
- {
- if( !DBFFlushRecord( psDBF ) )
- return FALSE;
-
- psDBF->nRecords++;
- for( i = 0; i < psDBF->nRecordLength; i++ )
- psDBF->pszCurrentRecord[i] = ' ';
-
- psDBF->nCurrentRecord = hEntity;
- }
-
-/* -------------------------------------------------------------------- */
-/* Is this an existing record, but different than the last one */
-/* we accessed? */
-/* -------------------------------------------------------------------- */
- if( !DBFLoadRecord( psDBF, hEntity ) )
- return FALSE;
-
- pabyRec = (unsigned char *) psDBF->pszCurrentRecord;
-
- memcpy ( pabyRec, pRawTuple, psDBF->nRecordLength );
-
- psDBF->bCurrentRecordModified = TRUE;
- psDBF->bUpdated = TRUE;
-
- return( TRUE );
-}
-
-/************************************************************************/
-/* DBFReadTuple() */
-/* */
-/* Read a complete record. Note that the result is only valid */
-/* till the next record read for any reason. */
-/************************************************************************/
-
-const char SHPAPI_CALL1(*)
-DBFReadTuple(DBFHandle psDBF, int hEntity )
-
-{
- if( hEntity < 0 || hEntity >= psDBF->nRecords )
- return( NULL );
-
- if( !DBFLoadRecord( psDBF, hEntity ) )
- return NULL;
-
- return (const char *) psDBF->pszCurrentRecord;
-}
-
-/************************************************************************/
-/* DBFCloneEmpty() */
-/* */
-/* Read one of the attribute fields of a record. */
-/************************************************************************/
-
-DBFHandle SHPAPI_CALL
-DBFCloneEmpty(DBFHandle psDBF, const char * pszFilename )
-{
- DBFHandle newDBF;
-
- newDBF = DBFCreateEx ( pszFilename, psDBF->pszCodePage );
- if ( newDBF == NULL ) return ( NULL );
-
- newDBF->nFields = psDBF->nFields;
- newDBF->nRecordLength = psDBF->nRecordLength;
- newDBF->nHeaderLength = psDBF->nHeaderLength;
-
- if( psDBF->pszHeader )
- {
- newDBF->pszHeader = (char *) malloc ( XBASE_FLDHDR_SZ * psDBF->nFields );
- memcpy ( newDBF->pszHeader, psDBF->pszHeader, XBASE_FLDHDR_SZ * psDBF->nFields );
- }
-
- newDBF->panFieldOffset = (int *) malloc ( sizeof(int) * psDBF->nFields );
- memcpy ( newDBF->panFieldOffset, psDBF->panFieldOffset, sizeof(int) * psDBF->nFields );
- newDBF->panFieldSize = (int *) malloc ( sizeof(int) * psDBF->nFields );
- memcpy ( newDBF->panFieldSize, psDBF->panFieldSize, sizeof(int) * psDBF->nFields );
- newDBF->panFieldDecimals = (int *) malloc ( sizeof(int) * psDBF->nFields );
- memcpy ( newDBF->panFieldDecimals, psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields );
- newDBF->pachFieldType = (char *) malloc ( sizeof(char) * psDBF->nFields );
- memcpy ( newDBF->pachFieldType, psDBF->pachFieldType, sizeof(char)*psDBF->nFields );
-
- newDBF->bNoHeader = TRUE;
- newDBF->bUpdated = TRUE;
- newDBF->bWriteEndOfFileChar = psDBF->bWriteEndOfFileChar;
-
- DBFWriteHeader ( newDBF );
- DBFClose ( newDBF );
-
- newDBF = DBFOpen ( pszFilename, "rb+" );
- newDBF->bWriteEndOfFileChar = psDBF->bWriteEndOfFileChar;
-
- return ( newDBF );
-}
-
-/************************************************************************/
-/* DBFGetNativeFieldType() */
-/* */
-/* Return the DBase field type for the specified field. */
-/* */
-/* Value can be one of: 'C' (String), 'D' (Date), 'F' (Float), */
-/* 'N' (Numeric, with or without decimal), */
-/* 'L' (Logical), */
-/* 'M' (Memo: 10 digits .DBT block ptr) */
-/************************************************************************/
-
-char SHPAPI_CALL
-DBFGetNativeFieldType( DBFHandle psDBF, int iField )
-
-{
- if( iField >=0 && iField < psDBF->nFields )
- return psDBF->pachFieldType[iField];
-
- return ' ';
-}
-
-/************************************************************************/
-/* str_to_upper() */
-/************************************************************************/
-
-static void str_to_upper (char *string)
-{
- int len;
- int i = -1;
-
- len = (int)strlen (string);
-
- while (++i < len)
- if (isalpha(string[i]) && islower(string[i]))
- string[i] = (char) toupper ((int)string[i]);
-}
-
-/************************************************************************/
-/* DBFGetFieldIndex() */
-/* */
-/* Get the index number for a field in a .dbf file. */
-/* */
-/* Contributed by Jim Matthews. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFGetFieldIndex(DBFHandle psDBF, const char *pszFieldName)
-
-{
- char name[XBASE_FLDNAME_LEN_READ+1],
- name1[XBASE_FLDNAME_LEN_READ+1],
- name2[XBASE_FLDNAME_LEN_READ+1];
- int i;
-
- strncpy(name1, pszFieldName,XBASE_FLDNAME_LEN_READ);
- name1[XBASE_FLDNAME_LEN_READ] = '\0';
- str_to_upper(name1);
-
- for( i = 0; i < DBFGetFieldCount(psDBF); i++ )
- {
- DBFGetFieldInfo( psDBF, i, name, NULL, NULL );
- strncpy(name2,name,XBASE_FLDNAME_LEN_READ);
- name2[XBASE_FLDNAME_LEN_READ] = '\0';
- str_to_upper(name2);
-
- if(!strcmp(name1,name2))
- return(i);
- }
- return(-1);
-}
-
-/************************************************************************/
-/* DBFIsRecordDeleted() */
-/* */
-/* Returns TRUE if the indicated record is deleted, otherwise */
-/* it returns FALSE. */
-/************************************************************************/
-
-int SHPAPI_CALL DBFIsRecordDeleted( DBFHandle psDBF, int iShape )
-
-{
-/* -------------------------------------------------------------------- */
-/* Verify selection. */
-/* -------------------------------------------------------------------- */
- if( iShape < 0 || iShape >= psDBF->nRecords )
- return TRUE;
-
-/* -------------------------------------------------------------------- */
-/* Have we read the record? */
-/* -------------------------------------------------------------------- */
- if( !DBFLoadRecord( psDBF, iShape ) )
- return FALSE;
-
-/* -------------------------------------------------------------------- */
-/* '*' means deleted. */
-/* -------------------------------------------------------------------- */
- return psDBF->pszCurrentRecord[0] == '*';
-}
-
-/************************************************************************/
-/* DBFMarkRecordDeleted() */
-/************************************************************************/
-
-int SHPAPI_CALL DBFMarkRecordDeleted( DBFHandle psDBF, int iShape,
- int bIsDeleted )
-
-{
- char chNewFlag;
-
-/* -------------------------------------------------------------------- */
-/* Verify selection. */
-/* -------------------------------------------------------------------- */
- if( iShape < 0 || iShape >= psDBF->nRecords )
- return FALSE;
-
-/* -------------------------------------------------------------------- */
-/* Is this an existing record, but different than the last one */
-/* we accessed? */
-/* -------------------------------------------------------------------- */
- if( !DBFLoadRecord( psDBF, iShape ) )
- return FALSE;
-
-/* -------------------------------------------------------------------- */
-/* Assign value, marking record as dirty if it changes. */
-/* -------------------------------------------------------------------- */
- if( bIsDeleted )
- chNewFlag = '*';
- else
- chNewFlag = ' ';
-
- if( psDBF->pszCurrentRecord[0] != chNewFlag )
- {
- psDBF->bCurrentRecordModified = TRUE;
- psDBF->bUpdated = TRUE;
- psDBF->pszCurrentRecord[0] = chNewFlag;
- }
-
- return TRUE;
-}
-
-/************************************************************************/
-/* DBFGetCodePage */
-/************************************************************************/
-
-const char SHPAPI_CALL1(*)
-DBFGetCodePage(DBFHandle psDBF )
-{
- if( psDBF == NULL )
- return NULL;
- return psDBF->pszCodePage;
-}
-
-/************************************************************************/
-/* DBFDeleteField() */
-/* */
-/* Remove a field from a .dbf file */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFDeleteField(DBFHandle psDBF, int iField)
-{
- int nOldRecordLength, nOldHeaderLength;
- int nDeletedFieldOffset, nDeletedFieldSize;
- SAOffset nRecordOffset;
- char* pszRecord;
- int i, iRecord;
-
- if (iField < 0 || iField >= psDBF->nFields)
- return FALSE;
-
- /* make sure that everything is written in .dbf */
- if( !DBFFlushRecord( psDBF ) )
- return FALSE;
-
- /* get information about field to be deleted */
- nOldRecordLength = psDBF->nRecordLength;
- nOldHeaderLength = psDBF->nHeaderLength;
- nDeletedFieldOffset = psDBF->panFieldOffset[iField];
- nDeletedFieldSize = psDBF->panFieldSize[iField];
-
- /* update fields info */
- for (i = iField + 1; i < psDBF->nFields; i++)
- {
- psDBF->panFieldOffset[i-1] = psDBF->panFieldOffset[i] - nDeletedFieldSize;
- psDBF->panFieldSize[i-1] = psDBF->panFieldSize[i];
- psDBF->panFieldDecimals[i-1] = psDBF->panFieldDecimals[i];
- psDBF->pachFieldType[i-1] = psDBF->pachFieldType[i];
- }
-
- /* resize fields arrays */
- psDBF->nFields--;
-
- psDBF->panFieldOffset = (int *)
- SfRealloc( psDBF->panFieldOffset, sizeof(int) * psDBF->nFields );
-
- psDBF->panFieldSize = (int *)
- SfRealloc( psDBF->panFieldSize, sizeof(int) * psDBF->nFields );
-
- psDBF->panFieldDecimals = (int *)
- SfRealloc( psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields );
-
- psDBF->pachFieldType = (char *)
- SfRealloc( psDBF->pachFieldType, sizeof(char) * psDBF->nFields );
-
- /* update header information */
- psDBF->nHeaderLength -= XBASE_FLDHDR_SZ;
- psDBF->nRecordLength -= nDeletedFieldSize;
-
- /* overwrite field information in header */
- memmove(psDBF->pszHeader + iField*XBASE_FLDHDR_SZ,
- psDBF->pszHeader + (iField+1)*XBASE_FLDHDR_SZ,
- sizeof(char) * (psDBF->nFields - iField)*XBASE_FLDHDR_SZ);
-
- psDBF->pszHeader = (char *) SfRealloc(psDBF->pszHeader,
- psDBF->nFields*XBASE_FLDHDR_SZ);
-
- /* update size of current record appropriately */
- psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord,
- psDBF->nRecordLength);
-
- /* we're done if we're dealing with not yet created .dbf */
- if ( psDBF->bNoHeader && psDBF->nRecords == 0 )
- return TRUE;
-
- /* force update of header with new header and record length */
- psDBF->bNoHeader = TRUE;
- DBFUpdateHeader( psDBF );
-
- /* alloc record */
- pszRecord = (char *) malloc(sizeof(char) * nOldRecordLength);
-
- /* shift records to their new positions */
- for (iRecord = 0; iRecord < psDBF->nRecords; iRecord++)
- {
- nRecordOffset =
- nOldRecordLength * (SAOffset) iRecord + nOldHeaderLength;
-
- /* load record */
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FRead( pszRecord, nOldRecordLength, 1, psDBF->fp );
-
- nRecordOffset =
- psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength;
-
- /* move record in two steps */
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FWrite( pszRecord, nDeletedFieldOffset, 1, psDBF->fp );
- psDBF->sHooks.FWrite( pszRecord + nDeletedFieldOffset + nDeletedFieldSize,
- nOldRecordLength - nDeletedFieldOffset - nDeletedFieldSize,
- 1, psDBF->fp );
-
- }
-
- if( psDBF->bWriteEndOfFileChar )
- {
- char ch = END_OF_FILE_CHARACTER;
- psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp );
- }
-
- /* TODO: truncate file */
-
- /* free record */
- free(pszRecord);
-
- psDBF->nCurrentRecord = -1;
- psDBF->bCurrentRecordModified = FALSE;
- psDBF->bUpdated = TRUE;
-
- return TRUE;
-}
-
-/************************************************************************/
-/* DBFReorderFields() */
-/* */
-/* Reorder the fields of a .dbf file */
-/* */
-/* panMap must be exactly psDBF->nFields long and be a permutation */
-/* of [0, psDBF->nFields-1]. This assumption will not be asserted in the*/
-/* code of DBFReorderFields. */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFReorderFields( DBFHandle psDBF, int* panMap )
-{
- SAOffset nRecordOffset;
- int i, iRecord;
- int *panFieldOffsetNew;
- int *panFieldSizeNew;
- int *panFieldDecimalsNew;
- char *pachFieldTypeNew;
- char *pszHeaderNew;
- char *pszRecord;
- char *pszRecordNew;
-
- if ( psDBF->nFields == 0 )
- return TRUE;
-
- /* make sure that everything is written in .dbf */
- if( !DBFFlushRecord( psDBF ) )
- return FALSE;
-
- /* a simple malloc() would be enough, but calloc() helps clang static analyzer */
- panFieldOffsetNew = (int *) calloc(sizeof(int), psDBF->nFields);
- panFieldSizeNew = (int *) calloc(sizeof(int), psDBF->nFields);
- panFieldDecimalsNew = (int *) calloc(sizeof(int), psDBF->nFields);
- pachFieldTypeNew = (char *) calloc(sizeof(char), psDBF->nFields);
- pszHeaderNew = (char*) malloc(sizeof(char) * XBASE_FLDHDR_SZ *
- psDBF->nFields);
-
- /* shuffle fields definitions */
- for(i=0; i < psDBF->nFields; i++)
- {
- panFieldSizeNew[i] = psDBF->panFieldSize[panMap[i]];
- panFieldDecimalsNew[i] = psDBF->panFieldDecimals[panMap[i]];
- pachFieldTypeNew[i] = psDBF->pachFieldType[panMap[i]];
- memcpy(pszHeaderNew + i * XBASE_FLDHDR_SZ,
- psDBF->pszHeader + panMap[i] * XBASE_FLDHDR_SZ, XBASE_FLDHDR_SZ);
- }
- panFieldOffsetNew[0] = 1;
- for(i=1; i < psDBF->nFields; i++)
- {
- panFieldOffsetNew[i] = panFieldOffsetNew[i - 1] + panFieldSizeNew[i - 1];
- }
-
- free(psDBF->pszHeader);
- psDBF->pszHeader = pszHeaderNew;
-
- /* we're done if we're dealing with not yet created .dbf */
- if ( !(psDBF->bNoHeader && psDBF->nRecords == 0) )
- {
- /* force update of header with new header and record length */
- psDBF->bNoHeader = TRUE;
- DBFUpdateHeader( psDBF );
-
- /* alloc record */
- pszRecord = (char *) malloc(sizeof(char) * psDBF->nRecordLength);
- pszRecordNew = (char *) malloc(sizeof(char) * psDBF->nRecordLength);
-
- /* shuffle fields in records */
- for (iRecord = 0; iRecord < psDBF->nRecords; iRecord++)
- {
- nRecordOffset =
- psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength;
-
- /* load record */
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FRead( pszRecord, psDBF->nRecordLength, 1, psDBF->fp );
-
- pszRecordNew[0] = pszRecord[0];
-
- for(i=0; i < psDBF->nFields; i++)
- {
- memcpy(pszRecordNew + panFieldOffsetNew[i],
- pszRecord + psDBF->panFieldOffset[panMap[i]],
- psDBF->panFieldSize[panMap[i]]);
- }
-
- /* write record */
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FWrite( pszRecordNew, psDBF->nRecordLength, 1, psDBF->fp );
- }
-
- /* free record */
- free(pszRecord);
- free(pszRecordNew);
- }
-
- free(psDBF->panFieldOffset);
- free(psDBF->panFieldSize);
- free(psDBF->panFieldDecimals);
- free(psDBF->pachFieldType);
-
- psDBF->panFieldOffset = panFieldOffsetNew;
- psDBF->panFieldSize = panFieldSizeNew;
- psDBF->panFieldDecimals =panFieldDecimalsNew;
- psDBF->pachFieldType = pachFieldTypeNew;
-
- psDBF->nCurrentRecord = -1;
- psDBF->bCurrentRecordModified = FALSE;
- psDBF->bUpdated = TRUE;
-
- return TRUE;
-}
-
-
-/************************************************************************/
-/* DBFAlterFieldDefn() */
-/* */
-/* Alter a field definition in a .dbf file */
-/************************************************************************/
-
-int SHPAPI_CALL
-DBFAlterFieldDefn( DBFHandle psDBF, int iField, const char * pszFieldName,
- char chType, int nWidth, int nDecimals )
-{
- int i;
- int iRecord;
- int nOffset;
- int nOldWidth;
- int nOldRecordLength;
- SAOffset nRecordOffset;
- char* pszFInfo;
- char chOldType;
- int bIsNULL;
- char chFieldFill;
-
- if (iField < 0 || iField >= psDBF->nFields)
- return FALSE;
-
- /* make sure that everything is written in .dbf */
- if( !DBFFlushRecord( psDBF ) )
- return FALSE;
-
- chFieldFill = DBFGetNullCharacter(chType);
-
- chOldType = psDBF->pachFieldType[iField];
- nOffset = psDBF->panFieldOffset[iField];
- nOldWidth = psDBF->panFieldSize[iField];
- nOldRecordLength = psDBF->nRecordLength;
-
-/* -------------------------------------------------------------------- */
-/* Do some checking to ensure we can add records to this file. */
-/* -------------------------------------------------------------------- */
- if( nWidth < 1 )
- return -1;
-
- if( nWidth > XBASE_FLD_MAX_WIDTH )
- nWidth = XBASE_FLD_MAX_WIDTH;
-
-/* -------------------------------------------------------------------- */
-/* Assign the new field information fields. */
-/* -------------------------------------------------------------------- */
- psDBF->panFieldSize[iField] = nWidth;
- psDBF->panFieldDecimals[iField] = nDecimals;
- psDBF->pachFieldType[iField] = chType;
-
-/* -------------------------------------------------------------------- */
-/* Update the header information. */
-/* -------------------------------------------------------------------- */
- pszFInfo = psDBF->pszHeader + XBASE_FLDHDR_SZ * iField;
-
- for( i = 0; i < XBASE_FLDHDR_SZ; i++ )
- pszFInfo[i] = '\0';
-
- strncpy( pszFInfo, pszFieldName, XBASE_FLDNAME_LEN_WRITE );
-
- pszFInfo[11] = psDBF->pachFieldType[iField];
-
- if( chType == 'C' )
- {
- pszFInfo[16] = (unsigned char) (nWidth % 256);
- pszFInfo[17] = (unsigned char) (nWidth / 256);
- }
- else
- {
- pszFInfo[16] = (unsigned char) nWidth;
- pszFInfo[17] = (unsigned char) nDecimals;
- }
-
-/* -------------------------------------------------------------------- */
-/* Update offsets */
-/* -------------------------------------------------------------------- */
- if (nWidth != nOldWidth)
- {
- for (i = iField + 1; i < psDBF->nFields; i++)
- psDBF->panFieldOffset[i] += nWidth - nOldWidth;
- psDBF->nRecordLength += nWidth - nOldWidth;
-
- psDBF->pszCurrentRecord = (char *) SfRealloc(psDBF->pszCurrentRecord,
- psDBF->nRecordLength);
- }
-
- /* we're done if we're dealing with not yet created .dbf */
- if ( psDBF->bNoHeader && psDBF->nRecords == 0 )
- return TRUE;
-
- /* force update of header with new header and record length */
- psDBF->bNoHeader = TRUE;
- DBFUpdateHeader( psDBF );
-
- if (nWidth < nOldWidth || (nWidth == nOldWidth && chType != chOldType))
- {
- char* pszRecord = (char *) malloc(sizeof(char) * nOldRecordLength);
- char* pszOldField = (char *) malloc(sizeof(char) * (nOldWidth + 1));
-
- /* cppcheck-suppress uninitdata */
- pszOldField[nOldWidth] = 0;
-
- /* move records to their new positions */
- for (iRecord = 0; iRecord < psDBF->nRecords; iRecord++)
- {
- nRecordOffset =
- nOldRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength;
-
- /* load record */
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FRead( pszRecord, nOldRecordLength, 1, psDBF->fp );
-
- memcpy(pszOldField, pszRecord + nOffset, nOldWidth);
- bIsNULL = DBFIsValueNULL( chOldType, pszOldField );
-
- if (nWidth != nOldWidth)
- {
- if ((chOldType == 'N' || chOldType == 'F') && pszOldField[0] == ' ')
- {
- /* Strip leading spaces when truncating a numeric field */
- memmove( pszRecord + nOffset,
- pszRecord + nOffset + nOldWidth - nWidth,
- nWidth );
- }
- if (nOffset + nOldWidth < nOldRecordLength)
- {
- memmove( pszRecord + nOffset + nWidth,
- pszRecord + nOffset + nOldWidth,
- nOldRecordLength - (nOffset + nOldWidth));
- }
- }
-
- /* Convert null value to the appropriate value of the new type */
- if (bIsNULL)
- {
- memset( pszRecord + nOffset, chFieldFill, nWidth);
- }
-
- nRecordOffset =
- psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength;
-
- /* write record */
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FWrite( pszRecord, psDBF->nRecordLength, 1, psDBF->fp );
- }
-
- if( psDBF->bWriteEndOfFileChar )
- {
- char ch = END_OF_FILE_CHARACTER;
-
- nRecordOffset =
- psDBF->nRecordLength * (SAOffset) psDBF->nRecords + psDBF->nHeaderLength;
-
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp );
- }
- /* TODO: truncate file */
-
- free(pszRecord);
- free(pszOldField);
- }
- else if (nWidth > nOldWidth)
- {
- char* pszRecord = (char *) malloc(sizeof(char) * psDBF->nRecordLength);
- char* pszOldField = (char *) malloc(sizeof(char) * (nOldWidth + 1));
-
- /* cppcheck-suppress uninitdata */
- pszOldField[nOldWidth] = 0;
-
- /* move records to their new positions */
- for (iRecord = psDBF->nRecords - 1; iRecord >= 0; iRecord--)
- {
- nRecordOffset =
- nOldRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength;
-
- /* load record */
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FRead( pszRecord, nOldRecordLength, 1, psDBF->fp );
-
- memcpy(pszOldField, pszRecord + nOffset, nOldWidth);
- bIsNULL = DBFIsValueNULL( chOldType, pszOldField );
-
- if (nOffset + nOldWidth < nOldRecordLength)
- {
- memmove( pszRecord + nOffset + nWidth,
- pszRecord + nOffset + nOldWidth,
- nOldRecordLength - (nOffset + nOldWidth));
- }
-
- /* Convert null value to the appropriate value of the new type */
- if (bIsNULL)
- {
- memset( pszRecord + nOffset, chFieldFill, nWidth);
- }
- else
- {
- if ((chOldType == 'N' || chOldType == 'F'))
- {
- /* Add leading spaces when expanding a numeric field */
- memmove( pszRecord + nOffset + nWidth - nOldWidth,
- pszRecord + nOffset, nOldWidth );
- memset( pszRecord + nOffset, ' ', nWidth - nOldWidth );
- }
- else
- {
- /* Add trailing spaces */
- memset(pszRecord + nOffset + nOldWidth, ' ', nWidth - nOldWidth);
- }
- }
-
- nRecordOffset =
- psDBF->nRecordLength * (SAOffset) iRecord + psDBF->nHeaderLength;
-
- /* write record */
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FWrite( pszRecord, psDBF->nRecordLength, 1, psDBF->fp );
- }
-
- if( psDBF->bWriteEndOfFileChar )
- {
- char ch = END_OF_FILE_CHARACTER;
-
- nRecordOffset =
- psDBF->nRecordLength * (SAOffset) psDBF->nRecords + psDBF->nHeaderLength;
-
- psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, 0 );
- psDBF->sHooks.FWrite( &ch, 1, 1, psDBF->fp );
- }
-
- free(pszRecord);
- free(pszOldField);
- }
-
- psDBF->nCurrentRecord = -1;
- psDBF->bCurrentRecordModified = FALSE;
- psDBF->bUpdated = TRUE;
-
- return TRUE;
-}
-
-/************************************************************************/
-/* DBFSetWriteEndOfFileChar() */
-/************************************************************************/
-
-void SHPAPI_CALL DBFSetWriteEndOfFileChar( DBFHandle psDBF, int bWriteFlag )
-{
- psDBF->bWriteEndOfFileChar = bWriteFlag;
-}
diff --git a/navit/support/shapefile/shapefil.h b/navit/support/shapefile/shapefil.h
deleted file mode 100644
index 08c645996..000000000
--- a/navit/support/shapefile/shapefil.h
+++ /dev/null
@@ -1,747 +0,0 @@
-#ifndef SHAPEFILE_H_INCLUDED
-#define SHAPEFILE_H_INCLUDED
-
-/******************************************************************************
- * $Id: shapefil.h,v 1.55 2016-12-05 18:44:08 erouault Exp $
- *
- * Project: Shapelib
- * Purpose: Primary include file for Shapelib.
- * Author: Frank Warmerdam, warmerdam@pobox.com
- *
- ******************************************************************************
- * Copyright (c) 1999, Frank Warmerdam
- * Copyright (c) 2012-2016, Even Rouault <even dot rouault at mines-paris dot org>
- *
- * This software is available under the following "MIT Style" license,
- * or at the option of the licensee under the LGPL (see COPYING). This
- * option is discussed in more detail in shapelib.html.
- *
- * --
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log: shapefil.h,v $
- * Revision 1.55 2016-12-05 18:44:08 erouault
- * * dbfopen.c, shapefil.h: write DBF end-of-file character 0x1A by default.
- * This behaviour can be controlled with the DBFSetWriteEndOfFileChar()
- * function.
- *
- * Revision 1.54 2016-12-05 12:44:05 erouault
- * * Major overhaul of Makefile build system to use autoconf/automake.
- *
- * * Warning fixes in contrib/
- *
- * Revision 1.53 2016-12-04 15:30:15 erouault
- * * shpopen.c, dbfopen.c, shptree.c, shapefil.h: resync with
- * GDAL Shapefile driver. Mostly cleanups. SHPObject and DBFInfo
- * structures extended with new members. New functions:
- * DBFSetLastModifiedDate, SHPOpenLLEx, SHPRestoreSHX,
- * SHPSetFastModeReadObject
- *
- * * sbnsearch.c: new file to implement original ESRI .sbn spatial
- * index reading. (no write support). New functions:
- * SBNOpenDiskTree, SBNCloseDiskTree, SBNSearchDiskTree,
- * SBNSearchDiskTreeInteger, SBNSearchFreeIds
- *
- * * Makefile, makefile.vc, CMakeLists.txt, shapelib.def: updates
- * with new file and symbols.
- *
- * * commit: helper script to cvs commit
- *
- * Revision 1.52 2011-12-11 22:26:46 fwarmerdam
- * upgrade .qix access code to use SAHooks (gdal #3365)
- *
- * Revision 1.51 2011-07-24 05:59:25 fwarmerdam
- * minimize use of CPLError in favor of SAHooks.Error()
- *
- * Revision 1.50 2011-05-13 17:35:17 fwarmerdam
- * added DBFReorderFields() and DBFAlterFields() functions (from Even)
- *
- * Revision 1.49 2011-04-16 14:38:21 fwarmerdam
- * avoid warnings with gcc on SHP_CVSID
- *
- * Revision 1.48 2010-08-27 23:42:52 fwarmerdam
- * add SHPAPI_CALL attribute in code
- *
- * Revision 1.47 2010-01-28 11:34:34 fwarmerdam
- * handle the shape file length limits more gracefully (#3236)
- *
- * Revision 1.46 2008-11-12 14:28:15 fwarmerdam
- * DBFCreateField() now works on files with records
- *
- * Revision 1.45 2008/11/11 17:47:10 fwarmerdam
- * added DBFDeleteField() function
- *
- * Revision 1.44 2008/01/16 20:05:19 bram
- * Add file hooks that accept UTF-8 encoded filenames on some platforms. Use SASetupUtf8Hooks
- * tosetup the hooks and check SHPAPI_UTF8_HOOKS for its availability. Currently, this
- * is only available on the Windows platform that decodes the UTF-8 filenames to wide
- * character strings and feeds them to _wfopen and _wremove.
- *
- * Revision 1.43 2008/01/10 16:35:30 fwarmerdam
- * avoid _ prefix on #defined symbols (bug 1840)
- *
- * Revision 1.42 2007/12/18 18:28:14 bram
- * - create hook for client specific atof (bugzilla ticket 1615)
- * - check for NULL handle before closing cpCPG file, and close after reading.
- *
- * Revision 1.41 2007/12/15 20:25:32 bram
- * dbfopen.c now reads the Code Page information from the DBF file, and exports
- * this information as a string through the DBFGetCodePage function. This is
- * either the number from the LDID header field ("LDID/<number>") or as the
- * content of an accompanying .CPG file. When creating a DBF file, the code can
- * be set using DBFCreateEx.
- *
- * Revision 1.40 2007/12/06 07:00:25 fwarmerdam
- * dbfopen now using SAHooks for fileio
- *
- * Revision 1.39 2007/12/04 20:37:56 fwarmerdam
- * preliminary implementation of hooks api for io and errors
- *
- * Revision 1.38 2007/11/21 22:39:56 fwarmerdam
- * close shx file in readonly mode (GDAL #1956)
- *
- * Revision 1.37 2007/10/27 03:31:14 fwarmerdam
- * limit default depth of tree to 12 levels (gdal ticket #1594)
- *
- * Revision 1.36 2007/09/10 23:33:15 fwarmerdam
- * Upstreamed support for visibility flag in SHPAPI_CALL for the needs
- * of GDAL (gdal ticket #1810).
- *
- * Revision 1.35 2007/09/03 19:48:10 fwarmerdam
- * move DBFReadAttribute() static dDoubleField into dbfinfo
- *
- * Revision 1.34 2006/06/17 15:33:32 fwarmerdam
- * added pszWorkField - bug 1202 (rso)
- *
- * Revision 1.33 2006/02/15 01:14:30 fwarmerdam
- * added DBFAddNativeFieldType
- *
- * Revision 1.32 2006/01/26 15:07:32 fwarmerdam
- * add bMeasureIsUsed flag from Craig Bruce: Bug 1249
- *
- * Revision 1.31 2006/01/05 01:27:27 fwarmerdam
- * added dbf deletion mark/fetch
- *
- * Revision 1.30 2005/01/03 22:30:13 fwarmerdam
- * added support for saved quadtrees
- *
- * Revision 1.29 2004/09/26 20:09:35 fwarmerdam
- * avoid rcsid warnings
- *
- * Revision 1.28 2003/12/29 06:02:18 fwarmerdam
- * added cpl_error.h option
- *
- * Revision 1.27 2003/04/21 18:30:37 warmerda
- * added header write/update public methods
- *
- * Revision 1.26 2002/09/29 00:00:08 warmerda
- * added FTLogical and logical attribute read/write calls
- *
- * Revision 1.25 2002/05/07 13:46:30 warmerda
- * added DBFWriteAttributeDirectly().
- *
- * Revision 1.24 2002/04/10 16:59:54 warmerda
- * added SHPRewindObject
- *
- * Revision 1.23 2002/01/15 14:36:07 warmerda
- * updated email address
- *
- * Revision 1.22 2002/01/15 14:32:00 warmerda
- * try to improve SHPAPI_CALL docs
- */
-
-#include <stdio.h>
-
-#ifdef USE_DBMALLOC
-#include <dbmalloc.h>
-#endif
-
-#ifdef USE_CPL
-#include "cpl_conv.h"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/************************************************************************/
-/* Configuration options. */
-/************************************************************************/
-
-/* -------------------------------------------------------------------- */
-/* Should the DBFReadStringAttribute() strip leading and */
-/* trailing white space? */
-/* -------------------------------------------------------------------- */
-#define TRIM_DBF_WHITESPACE
-
-/* -------------------------------------------------------------------- */
-/* Should we write measure values to the Multipatch object? */
-/* Reportedly ArcView crashes if we do write it, so for now it */
-/* is disabled. */
-/* -------------------------------------------------------------------- */
-#define DISABLE_MULTIPATCH_MEASURE
-
-/* -------------------------------------------------------------------- */
-/* SHPAPI_CALL */
-/* */
-/* The following two macros are present to allow forcing */
-/* various calling conventions on the Shapelib API. */
-/* */
-/* To force __stdcall conventions (needed to call Shapelib */
-/* from Visual Basic and/or Dephi I believe) the makefile could */
-/* be modified to define: */
-/* */
-/* /DSHPAPI_CALL=__stdcall */
-/* */
-/* If it is desired to force export of the Shapelib API without */
-/* using the shapelib.def file, use the following definition. */
-/* */
-/* /DSHAPELIB_DLLEXPORT */
-/* */
-/* To get both at once it will be necessary to hack this */
-/* include file to define: */
-/* */
-/* #define SHPAPI_CALL __declspec(dllexport) __stdcall */
-/* #define SHPAPI_CALL1 __declspec(dllexport) * __stdcall */
-/* */
-/* The complexity of the situation is partly caused by the */
-/* peculiar requirement of Visual C++ that __stdcall appear */
-/* after any "*"'s in the return value of a function while the */
-/* __declspec(dllexport) must appear before them. */
-/* -------------------------------------------------------------------- */
-
-#ifdef SHAPELIB_DLLEXPORT
-# define SHPAPI_CALL __declspec(dllexport)
-# define SHPAPI_CALL1(x) __declspec(dllexport) x
-#endif
-
-#ifndef SHPAPI_CALL
-# if defined(USE_GCC_VISIBILITY_FLAG)
-# define SHPAPI_CALL __attribute__ ((visibility("default")))
-# define SHPAPI_CALL1(x) __attribute__ ((visibility("default"))) x
-# else
-# define SHPAPI_CALL
-# endif
-#endif
-
-#ifndef SHPAPI_CALL1
-# define SHPAPI_CALL1(x) x SHPAPI_CALL
-#endif
-
-/* -------------------------------------------------------------------- */
-/* Macros for controlling CVSID and ensuring they don't appear */
-/* as unreferenced variables resulting in lots of warnings. */
-/* -------------------------------------------------------------------- */
-#ifndef DISABLE_CVSID
-# if defined(__GNUC__) && __GNUC__ >= 4
-# define SHP_CVSID(string) static const char cpl_cvsid[] __attribute__((used)) = string;
-# else
-# define SHP_CVSID(string) static const char cpl_cvsid[] = string; \
-static const char *cvsid_aw() { return( cvsid_aw() ? NULL : cpl_cvsid ); }
-# endif
-#else
-# define SHP_CVSID(string)
-#endif
-
-/* -------------------------------------------------------------------- */
-/* On some platforms, additional file IO hooks are defined that */
-/* UTF-8 encoded filenames Unicode filenames */
-/* -------------------------------------------------------------------- */
-#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
-# define SHPAPI_WINDOWS
-# define SHPAPI_UTF8_HOOKS
-#endif
-
-/* -------------------------------------------------------------------- */
-/* IO/Error hook functions. */
-/* -------------------------------------------------------------------- */
-typedef int *SAFile;
-
-#ifndef SAOffset
-typedef unsigned long SAOffset;
-#endif
-
-typedef struct {
- SAFile (*FOpen) ( const char *filename, const char *access);
- SAOffset (*FRead) ( void *p, SAOffset size, SAOffset nmemb, SAFile file);
- SAOffset (*FWrite)( void *p, SAOffset size, SAOffset nmemb, SAFile file);
- SAOffset (*FSeek) ( SAFile file, SAOffset offset, int whence );
- SAOffset (*FTell) ( SAFile file );
- int (*FFlush)( SAFile file );
- int (*FClose)( SAFile file );
- int (*Remove) ( const char *filename );
-
- void (*Error) ( const char *message );
- double (*Atof) ( const char *str );
-} SAHooks;
-
-void SHPAPI_CALL SASetupDefaultHooks( SAHooks *psHooks );
-#ifdef SHPAPI_UTF8_HOOKS
-void SHPAPI_CALL SASetupUtf8Hooks( SAHooks *psHooks );
-#endif
-
-/************************************************************************/
-/* SHP Support. */
-/************************************************************************/
-typedef struct tagSHPObject SHPObject;
-
-typedef struct
-{
- SAHooks sHooks;
-
- SAFile fpSHP;
- SAFile fpSHX;
-
- int nShapeType; /* SHPT_* */
-
- unsigned int nFileSize; /* SHP file */
-
- int nRecords;
- int nMaxRecords;
- unsigned int*panRecOffset;
- unsigned int *panRecSize;
-
- double adBoundsMin[4];
- double adBoundsMax[4];
-
- int bUpdated;
-
- unsigned char *pabyRec;
- int nBufSize;
-
- int bFastModeReadObject;
- unsigned char *pabyObjectBuf;
- int nObjectBufSize;
- SHPObject* psCachedObject;
-} SHPInfo;
-
-typedef SHPInfo * SHPHandle;
-
-/* -------------------------------------------------------------------- */
-/* Shape types (nSHPType) */
-/* -------------------------------------------------------------------- */
-#define SHPT_NULL 0
-#define SHPT_POINT 1
-#define SHPT_ARC 3
-#define SHPT_POLYGON 5
-#define SHPT_MULTIPOINT 8
-#define SHPT_POINTZ 11
-#define SHPT_ARCZ 13
-#define SHPT_POLYGONZ 15
-#define SHPT_MULTIPOINTZ 18
-#define SHPT_POINTM 21
-#define SHPT_ARCM 23
-#define SHPT_POLYGONM 25
-#define SHPT_MULTIPOINTM 28
-#define SHPT_MULTIPATCH 31
-
-/* -------------------------------------------------------------------- */
-/* Part types - everything but SHPT_MULTIPATCH just uses */
-/* SHPP_RING. */
-/* -------------------------------------------------------------------- */
-
-#define SHPP_TRISTRIP 0
-#define SHPP_TRIFAN 1
-#define SHPP_OUTERRING 2
-#define SHPP_INNERRING 3
-#define SHPP_FIRSTRING 4
-#define SHPP_RING 5
-
-/* -------------------------------------------------------------------- */
-/* SHPObject - represents on shape (without attributes) read */
-/* from the .shp file. */
-/* -------------------------------------------------------------------- */
-struct tagSHPObject
-{
- int nSHPType;
-
- int nShapeId; /* -1 is unknown/unassigned */
-
- int nParts;
- int *panPartStart;
- int *panPartType;
-
- int nVertices;
- double *padfX;
- double *padfY;
- double *padfZ;
- double *padfM;
-
- double dfXMin;
- double dfYMin;
- double dfZMin;
- double dfMMin;
-
- double dfXMax;
- double dfYMax;
- double dfZMax;
- double dfMMax;
-
- int bMeasureIsUsed;
- int bFastModeReadObject;
-};
-
-/* -------------------------------------------------------------------- */
-/* SHP API Prototypes */
-/* -------------------------------------------------------------------- */
-
-/* If pszAccess is read-only, the fpSHX field of the returned structure */
-/* will be NULL as it is not necessary to keep the SHX file open */
-SHPHandle SHPAPI_CALL
- SHPOpen( const char * pszShapeFile, const char * pszAccess );
-SHPHandle SHPAPI_CALL
- SHPOpenLL( const char *pszShapeFile, const char *pszAccess,
- SAHooks *psHooks );
-SHPHandle SHPAPI_CALL
- SHPOpenLLEx( const char *pszShapeFile, const char *pszAccess,
- SAHooks *psHooks, int bRestoreSHX );
-
-int SHPAPI_CALL
- SHPRestoreSHX( const char *pszShapeFile, const char *pszAccess,
- SAHooks *psHooks );
-
-/* If setting bFastMode = TRUE, the content of SHPReadObject() is owned by the SHPHandle. */
-/* So you cannot have 2 valid instances of SHPReadObject() simultaneously. */
-/* The SHPObject padfZ and padfM members may be NULL depending on the geometry */
-/* type. It is illegal to free at hand any of the pointer members of the SHPObject structure */
-void SHPAPI_CALL SHPSetFastModeReadObject( SHPHandle hSHP, int bFastMode );
-
-SHPHandle SHPAPI_CALL
- SHPCreate( const char * pszShapeFile, int nShapeType );
-SHPHandle SHPAPI_CALL
- SHPCreateLL( const char * pszShapeFile, int nShapeType,
- SAHooks *psHooks );
-void SHPAPI_CALL
- SHPGetInfo( SHPHandle hSHP, int * pnEntities, int * pnShapeType,
- double * padfMinBound, double * padfMaxBound );
-
-SHPObject SHPAPI_CALL1(*)
- SHPReadObject( SHPHandle hSHP, int iShape );
-int SHPAPI_CALL
- SHPWriteObject( SHPHandle hSHP, int iShape, SHPObject * psObject );
-
-void SHPAPI_CALL
- SHPDestroyObject( SHPObject * psObject );
-void SHPAPI_CALL
- SHPComputeExtents( SHPObject * psObject );
-SHPObject SHPAPI_CALL1(*)
- SHPCreateObject( int nSHPType, int nShapeId, int nParts,
- const int * panPartStart, const int * panPartType,
- int nVertices,
- const double * padfX, const double * padfY,
- const double * padfZ, const double * padfM );
-SHPObject SHPAPI_CALL1(*)
- SHPCreateSimpleObject( int nSHPType, int nVertices,
- const double * padfX,
- const double * padfY,
- const double * padfZ );
-
-int SHPAPI_CALL
- SHPRewindObject( SHPHandle hSHP, SHPObject * psObject );
-
-void SHPAPI_CALL SHPClose( SHPHandle hSHP );
-void SHPAPI_CALL SHPWriteHeader( SHPHandle hSHP );
-
-const char SHPAPI_CALL1(*)
- SHPTypeName( int nSHPType );
-const char SHPAPI_CALL1(*)
- SHPPartTypeName( int nPartType );
-
-/* -------------------------------------------------------------------- */
-/* Shape quadtree indexing API. */
-/* -------------------------------------------------------------------- */
-
-/* this can be two or four for binary or quad tree */
-#define MAX_SUBNODE 4
-
-/* upper limit of tree levels for automatic estimation */
-#define MAX_DEFAULT_TREE_DEPTH 12
-
-typedef struct shape_tree_node
-{
- /* region covered by this node */
- double adfBoundsMin[4];
- double adfBoundsMax[4];
-
- /* list of shapes stored at this node. The papsShapeObj pointers
- or the whole list can be NULL */
- int nShapeCount;
- int *panShapeIds;
- SHPObject **papsShapeObj;
-
- int nSubNodes;
- struct shape_tree_node *apsSubNode[MAX_SUBNODE];
-
-} SHPTreeNode;
-
-typedef struct
-{
- SHPHandle hSHP;
-
- int nMaxDepth;
- int nDimension;
- int nTotalCount;
-
- SHPTreeNode *psRoot;
-} SHPTree;
-
-SHPTree SHPAPI_CALL1(*)
- SHPCreateTree( SHPHandle hSHP, int nDimension, int nMaxDepth,
- double *padfBoundsMin, double *padfBoundsMax );
-void SHPAPI_CALL
- SHPDestroyTree( SHPTree * hTree );
-
-int SHPAPI_CALL
- SHPWriteTree( SHPTree *hTree, const char * pszFilename );
-
-int SHPAPI_CALL
- SHPTreeAddShapeId( SHPTree * hTree, SHPObject * psObject );
-int SHPAPI_CALL
- SHPTreeRemoveShapeId( SHPTree * hTree, int nShapeId );
-
-void SHPAPI_CALL
- SHPTreeTrimExtraNodes( SHPTree * hTree );
-
-int SHPAPI_CALL1(*)
- SHPTreeFindLikelyShapes( SHPTree * hTree,
- double * padfBoundsMin,
- double * padfBoundsMax,
- int * );
-int SHPAPI_CALL
- SHPCheckBoundsOverlap( double *, double *, double *, double *, int );
-
-int SHPAPI_CALL1(*)
-SHPSearchDiskTree( FILE *fp,
- double *padfBoundsMin, double *padfBoundsMax,
- int *pnShapeCount );
-
-typedef struct SHPDiskTreeInfo* SHPTreeDiskHandle;
-
-SHPTreeDiskHandle SHPAPI_CALL
- SHPOpenDiskTree( const char* pszQIXFilename,
- SAHooks *psHooks );
-
-void SHPAPI_CALL
- SHPCloseDiskTree( SHPTreeDiskHandle hDiskTree );
-
-int SHPAPI_CALL1(*)
-SHPSearchDiskTreeEx( SHPTreeDiskHandle hDiskTree,
- double *padfBoundsMin, double *padfBoundsMax,
- int *pnShapeCount );
-
-int SHPAPI_CALL
- SHPWriteTreeLL(SHPTree *hTree, const char *pszFilename, SAHooks *psHooks );
-
-/* -------------------------------------------------------------------- */
-/* SBN Search API */
-/* -------------------------------------------------------------------- */
-
-typedef struct SBNSearchInfo* SBNSearchHandle;
-
-SBNSearchHandle SHPAPI_CALL
- SBNOpenDiskTree( const char* pszSBNFilename,
- SAHooks *psHooks );
-
-void SHPAPI_CALL
- SBNCloseDiskTree( SBNSearchHandle hSBN );
-
-int SHPAPI_CALL1(*)
-SBNSearchDiskTree( SBNSearchHandle hSBN,
- double *padfBoundsMin, double *padfBoundsMax,
- int *pnShapeCount );
-
-int SHPAPI_CALL1(*)
-SBNSearchDiskTreeInteger( SBNSearchHandle hSBN,
- int bMinX, int bMinY, int bMaxX, int bMaxY,
- int *pnShapeCount );
-
-void SHPAPI_CALL SBNSearchFreeIds( int* panShapeId );
-
-/************************************************************************/
-/* DBF Support. */
-/************************************************************************/
-typedef struct
-{
- SAHooks sHooks;
-
- SAFile fp;
-
- int nRecords;
-
- int nRecordLength; /* Must fit on uint16 */
- int nHeaderLength; /* File header length (32) + field
- descriptor length + spare space.
- Must fit on uint16 */
- int nFields;
- int *panFieldOffset;
- int *panFieldSize;
- int *panFieldDecimals;
- char *pachFieldType;
-
- char *pszHeader; /* Field descriptors */
-
- int nCurrentRecord;
- int bCurrentRecordModified;
- char *pszCurrentRecord;
-
- int nWorkFieldLength;
- char *pszWorkField;
-
- int bNoHeader;
- int bUpdated;
-
- union
- {
- double dfDoubleField;
- int nIntField;
- } fieldValue;
-
- int iLanguageDriver;
- char *pszCodePage;
-
- int nUpdateYearSince1900; /* 0-255 */
- int nUpdateMonth; /* 1-12 */
- int nUpdateDay; /* 1-31 */
-
- int bWriteEndOfFileChar; /* defaults to TRUE */
-} DBFInfo;
-
-typedef DBFInfo * DBFHandle;
-
-typedef enum {
- FTString,
- FTInteger,
- FTDouble,
- FTLogical,
- FTInvalid
-} DBFFieldType;
-
-/* Field descriptor/header size */
-#define XBASE_FLDHDR_SZ 32
-/* Shapelib read up to 11 characters, even if only 10 should normally be used */
-#define XBASE_FLDNAME_LEN_READ 11
-/* On writing, we limit to 10 characters */
-#define XBASE_FLDNAME_LEN_WRITE 10
-/* Normally only 254 characters should be used. We tolerate 255 historically */
-#define XBASE_FLD_MAX_WIDTH 255
-
-DBFHandle SHPAPI_CALL
- DBFOpen( const char * pszDBFFile, const char * pszAccess );
-DBFHandle SHPAPI_CALL
- DBFOpenLL( const char * pszDBFFile, const char * pszAccess,
- SAHooks *psHooks );
-DBFHandle SHPAPI_CALL
- DBFCreate( const char * pszDBFFile );
-DBFHandle SHPAPI_CALL
- DBFCreateEx( const char * pszDBFFile, const char * pszCodePage );
-DBFHandle SHPAPI_CALL
- DBFCreateLL( const char * pszDBFFile, const char * pszCodePage, SAHooks *psHooks );
-
-int SHPAPI_CALL
- DBFGetFieldCount( DBFHandle psDBF );
-int SHPAPI_CALL
- DBFGetRecordCount( DBFHandle psDBF );
-int SHPAPI_CALL
- DBFAddField( DBFHandle hDBF, const char * pszFieldName,
- DBFFieldType eType, int nWidth, int nDecimals );
-
-int SHPAPI_CALL
- DBFAddNativeFieldType( DBFHandle hDBF, const char * pszFieldName,
- char chType, int nWidth, int nDecimals );
-
-int SHPAPI_CALL
- DBFDeleteField( DBFHandle hDBF, int iField );
-
-int SHPAPI_CALL
- DBFReorderFields( DBFHandle psDBF, int* panMap );
-
-int SHPAPI_CALL
- DBFAlterFieldDefn( DBFHandle psDBF, int iField, const char * pszFieldName,
- char chType, int nWidth, int nDecimals );
-
-DBFFieldType SHPAPI_CALL
- DBFGetFieldInfo( DBFHandle psDBF, int iField,
- char * pszFieldName, int * pnWidth, int * pnDecimals );
-
-int SHPAPI_CALL
- DBFGetFieldIndex(DBFHandle psDBF, const char *pszFieldName);
-
-int SHPAPI_CALL
- DBFReadIntegerAttribute( DBFHandle hDBF, int iShape, int iField );
-double SHPAPI_CALL
- DBFReadDoubleAttribute( DBFHandle hDBF, int iShape, int iField );
-const char SHPAPI_CALL1(*)
- DBFReadStringAttribute( DBFHandle hDBF, int iShape, int iField );
-const char SHPAPI_CALL1(*)
- DBFReadLogicalAttribute( DBFHandle hDBF, int iShape, int iField );
-int SHPAPI_CALL
- DBFIsAttributeNULL( DBFHandle hDBF, int iShape, int iField );
-
-int SHPAPI_CALL
- DBFWriteIntegerAttribute( DBFHandle hDBF, int iShape, int iField,
- int nFieldValue );
-int SHPAPI_CALL
- DBFWriteDoubleAttribute( DBFHandle hDBF, int iShape, int iField,
- double dFieldValue );
-int SHPAPI_CALL
- DBFWriteStringAttribute( DBFHandle hDBF, int iShape, int iField,
- const char * pszFieldValue );
-int SHPAPI_CALL
- DBFWriteNULLAttribute( DBFHandle hDBF, int iShape, int iField );
-
-int SHPAPI_CALL
- DBFWriteLogicalAttribute( DBFHandle hDBF, int iShape, int iField,
- const char lFieldValue);
-int SHPAPI_CALL
- DBFWriteAttributeDirectly(DBFHandle psDBF, int hEntity, int iField,
- void * pValue );
-const char SHPAPI_CALL1(*)
- DBFReadTuple(DBFHandle psDBF, int hEntity );
-int SHPAPI_CALL
- DBFWriteTuple(DBFHandle psDBF, int hEntity, void * pRawTuple );
-
-int SHPAPI_CALL DBFIsRecordDeleted( DBFHandle psDBF, int iShape );
-int SHPAPI_CALL DBFMarkRecordDeleted( DBFHandle psDBF, int iShape,
- int bIsDeleted );
-
-DBFHandle SHPAPI_CALL
- DBFCloneEmpty(DBFHandle psDBF, const char * pszFilename );
-
-void SHPAPI_CALL
- DBFClose( DBFHandle hDBF );
-void SHPAPI_CALL
- DBFUpdateHeader( DBFHandle hDBF );
-char SHPAPI_CALL
- DBFGetNativeFieldType( DBFHandle hDBF, int iField );
-
-const char SHPAPI_CALL1(*)
- DBFGetCodePage(DBFHandle psDBF );
-
-void SHPAPI_CALL
- DBFSetLastModifiedDate( DBFHandle psDBF, int nYYSince1900, int nMM, int nDD );
-
-void SHPAPI_CALL DBFSetWriteEndOfFileChar( DBFHandle psDBF, int bWriteFlag );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ndef SHAPEFILE_H_INCLUDED */
diff --git a/navit/support/shapefile/shpopen.c b/navit/support/shapefile/shpopen.c
deleted file mode 100644
index 2ace6843b..000000000
--- a/navit/support/shapefile/shpopen.c
+++ /dev/null
@@ -1,3030 +0,0 @@
-/******************************************************************************
- * $Id: shpopen.c,v 1.75 2016-12-05 12:44:05 erouault Exp $
- *
- * Project: Shapelib
- * Purpose: Implementation of core Shapefile read/write functions.
- * Author: Frank Warmerdam, warmerdam@pobox.com
- *
- ******************************************************************************
- * Copyright (c) 1999, 2001, Frank Warmerdam
- * Copyright (c) 2011-2013, Even Rouault <even dot rouault at mines-paris dot org>
- *
- * This software is available under the following "MIT Style" license,
- * or at the option of the licensee under the LGPL (see COPYING). This
- * option is discussed in more detail in shapelib.html.
- *
- * --
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log: shpopen.c,v $
- * Revision 1.75 2016-12-05 12:44:05 erouault
- * * Major overhaul of Makefile build system to use autoconf/automake.
- *
- * * Warning fixes in contrib/
- *
- * Revision 1.74 2016-12-04 15:30:15 erouault
- * * shpopen.c, dbfopen.c, shptree.c, shapefil.h: resync with
- * GDAL Shapefile driver. Mostly cleanups. SHPObject and DBFInfo
- * structures extended with new members. New functions:
- * DBFSetLastModifiedDate, SHPOpenLLEx, SHPRestoreSHX,
- * SHPSetFastModeReadObject
- *
- * * sbnsearch.c: new file to implement original ESRI .sbn spatial
- * index reading. (no write support). New functions:
- * SBNOpenDiskTree, SBNCloseDiskTree, SBNSearchDiskTree,
- * SBNSearchDiskTreeInteger, SBNSearchFreeIds
- *
- * * Makefile, makefile.vc, CMakeLists.txt, shapelib.def: updates
- * with new file and symbols.
- *
- * * commit: helper script to cvs commit
- *
- * Revision 1.73 2012-01-24 22:33:01 fwarmerdam
- * fix memory leak on failure to open .shp (gdal #4410)
- *
- * Revision 1.72 2011-12-11 22:45:28 fwarmerdam
- * fix failure return from SHPOpenLL.
- *
- * Revision 1.71 2011-09-15 03:33:58 fwarmerdam
- * fix missing cast (#2344)
- *
- * Revision 1.70 2011-07-24 05:59:25 fwarmerdam
- * minimize use of CPLError in favor of SAHooks.Error()
- *
- * Revision 1.69 2011-07-24 03:24:22 fwarmerdam
- * fix memory leaks in error cases creating shapefiles (#2061)
- *
- * Revision 1.68 2010-08-27 23:42:52 fwarmerdam
- * add SHPAPI_CALL attribute in code
- *
- * Revision 1.67 2010-07-01 08:15:48 fwarmerdam
- * do not error out on an object with zero vertices
- *
- * Revision 1.66 2010-07-01 07:58:57 fwarmerdam
- * minor cleanup of error handling
- *
- * Revision 1.65 2010-07-01 07:27:13 fwarmerdam
- * white space formatting adjustments
- *
- * Revision 1.64 2010-01-28 11:34:34 fwarmerdam
- * handle the shape file length limits more gracefully (#3236)
- *
- * Revision 1.63 2010-01-28 04:04:40 fwarmerdam
- * improve numerical accuracy of SHPRewind() algs (gdal #3363)
- *
- * Revision 1.62 2010-01-17 05:34:13 fwarmerdam
- * Remove asserts on x/y being null (#2148).
- *
- * Revision 1.61 2010-01-16 05:07:42 fwarmerdam
- * allow 0/nulls in shpcreateobject (#2148)
- *
- * Revision 1.60 2009-09-17 20:50:02 bram
- * on Win32, define snprintf as alias to _snprintf
- *
- * Revision 1.59 2008-03-14 05:25:31 fwarmerdam
- * Correct crash on buggy geometries (gdal #2218)
- *
- * Revision 1.58 2008/01/08 23:28:26 bram
- * on line 2095, use a float instead of a double to avoid a compiler warning
- *
- * Revision 1.57 2007/12/06 07:00:25 fwarmerdam
- * dbfopen now using SAHooks for fileio
- *
- * Revision 1.56 2007/12/04 20:37:56 fwarmerdam
- * preliminary implementation of hooks api for io and errors
- *
- * Revision 1.55 2007/11/21 22:39:56 fwarmerdam
- * close shx file in readonly mode (GDAL #1956)
- *
- * Revision 1.54 2007/11/15 00:12:47 mloskot
- * Backported recent changes from GDAL (Ticket #1415) to Shapelib.
- *
- * Revision 1.53 2007/11/14 22:31:08 fwarmerdam
- * checks after mallocs to detect for corrupted/voluntary broken shapefiles.
- * http://trac.osgeo.org/gdal/ticket/1991
- *
- * Revision 1.52 2007/06/21 15:58:33 fwarmerdam
- * fix for SHPRewindObject when rings touch at one vertex (gdal #976)
- *
- * Revision 1.51 2006/09/04 15:24:01 fwarmerdam
- * Fixed up log message for 1.49.
- *
- * Revision 1.50 2006/09/04 15:21:39 fwarmerdam
- * fix of last fix
- *
- * Revision 1.49 2006/09/04 15:21:00 fwarmerdam
- * MLoskot: Added stronger test of Shapefile reading failures, e.g. truncated
- * files. The problem was discovered by Tim Sutton and reported here
- * https://svn.qgis.org/trac/ticket/200
- *
- * Revision 1.48 2006/01/26 15:07:32 fwarmerdam
- * add bMeasureIsUsed flag from Craig Bruce: Bug 1249
- *
- * Revision 1.47 2006/01/04 20:07:23 fwarmerdam
- * In SHPWriteObject() make sure that the record length is updated
- * when rewriting an existing record.
- *
- * Revision 1.46 2005/02/11 17:17:46 fwarmerdam
- * added panPartStart[0] validation
- *
- * Revision 1.45 2004/09/26 20:09:48 fwarmerdam
- * const correctness changes
- *
- * Revision 1.44 2003/12/29 00:18:39 fwarmerdam
- * added error checking for failed IO and optional CPL error reporting
- *
- * Revision 1.43 2003/12/01 16:20:08 warmerda
- * be careful of zero vertex shapes
- *
- * Revision 1.42 2003/12/01 14:58:27 warmerda
- * added degenerate object check in SHPRewindObject()
- *
- * Revision 1.41 2003/07/08 15:22:43 warmerda
- * avoid warning
- *
- * Revision 1.40 2003/04/21 18:30:37 warmerda
- * added header write/update public methods
- *
- * Revision 1.39 2002/08/26 06:46:56 warmerda
- * avoid c++ comments
- *
- * Revision 1.38 2002/05/07 16:43:39 warmerda
- * Removed debugging printf.
- *
- * Revision 1.37 2002/04/10 17:35:22 warmerda
- * fixed bug in ring reversal code
- *
- * Revision 1.36 2002/04/10 16:59:54 warmerda
- * added SHPRewindObject
- *
- * Revision 1.35 2001/12/07 15:10:44 warmerda
- * fix if .shx fails to open
- *
- * Revision 1.34 2001/11/01 16:29:55 warmerda
- * move pabyRec into SHPInfo for thread safety
- *
- * Revision 1.33 2001/07/03 12:18:15 warmerda
- * Improved cleanup if SHX not found, provided by Riccardo Cohen.
- *
- * Revision 1.32 2001/06/22 01:58:07 warmerda
- * be more careful about establishing initial bounds in face of NULL shapes
- *
- * Revision 1.31 2001/05/31 19:35:29 warmerda
- * added support for writing null shapes
- *
- * Revision 1.30 2001/05/28 12:46:29 warmerda
- * Add some checking on reasonableness of record count when opening.
- *
- * Revision 1.29 2001/05/23 13:36:52 warmerda
- * added use of SHPAPI_CALL
- *
- * Revision 1.28 2001/02/06 22:25:06 warmerda
- * fixed memory leaks when SHPOpen() fails
- *
- * Revision 1.27 2000/07/18 15:21:33 warmerda
- * added better enforcement of -1 for append in SHPWriteObject
- *
- * Revision 1.26 2000/02/16 16:03:51 warmerda
- * added null shape support
- *
- * Revision 1.25 1999/12/15 13:47:07 warmerda
- * Fixed record size settings in .shp file (was 4 words too long)
- * Added stdlib.h.
- *
- * Revision 1.24 1999/11/05 14:12:04 warmerda
- * updated license terms
- *
- * Revision 1.23 1999/07/27 00:53:46 warmerda
- * added support for rewriting shapes
- *
- * Revision 1.22 1999/06/11 19:19:11 warmerda
- * Cleanup pabyRec static buffer on SHPClose().
- *
- * Revision 1.21 1999/06/02 14:57:56 kshih
- * Remove unused variables
- *
- * Revision 1.20 1999/04/19 21:04:17 warmerda
- * Fixed syntax error.
- *
- * Revision 1.19 1999/04/19 21:01:57 warmerda
- * Force access string to binary in SHPOpen().
- *
- * Revision 1.18 1999/04/01 18:48:07 warmerda
- * Try upper case extensions if lower case doesn't work.
- *
- * Revision 1.17 1998/12/31 15:29:39 warmerda
- * Disable writing measure values to multipatch objects if
- * DISABLE_MULTIPATCH_MEASURE is defined.
- *
- * Revision 1.16 1998/12/16 05:14:33 warmerda
- * Added support to write MULTIPATCH. Fixed reading Z coordinate of
- * MULTIPATCH. Fixed record size written for all feature types.
- *
- * Revision 1.15 1998/12/03 16:35:29 warmerda
- * r+b is proper binary access string, not rb+.
- *
- * Revision 1.14 1998/12/03 15:47:56 warmerda
- * Fixed setting of nVertices in SHPCreateObject().
- *
- * Revision 1.13 1998/12/03 15:33:54 warmerda
- * Made SHPCalculateExtents() separately callable.
- *
- * Revision 1.12 1998/11/11 20:01:50 warmerda
- * Fixed bug writing ArcM/Z, and PolygonM/Z for big endian machines.
- *
- * Revision 1.11 1998/11/09 20:56:44 warmerda
- * Fixed up handling of file wide bounds.
- *
- * Revision 1.10 1998/11/09 20:18:51 warmerda
- * Converted to support 3D shapefiles, and use of SHPObject.
- *
- * Revision 1.9 1998/02/24 15:09:05 warmerda
- * Fixed memory leak.
- *
- * Revision 1.8 1997/12/04 15:40:29 warmerda
- * Fixed byte swapping of record number, and record length fields in the
- * .shp file.
- *
- * Revision 1.7 1995/10/21 03:15:58 warmerda
- * Added support for binary file access, the magic cookie 9997
- * and tried to improve the int32 selection logic for 16bit systems.
- *
- * Revision 1.6 1995/09/04 04:19:41 warmerda
- * Added fix for file bounds.
- *
- * Revision 1.5 1995/08/25 15:16:44 warmerda
- * Fixed a couple of problems with big endian systems ... one with bounds
- * and the other with multipart polygons.
- *
- * Revision 1.4 1995/08/24 18:10:17 warmerda
- * Switch to use SfRealloc() to avoid problems with pre-ANSI realloc()
- * functions (such as on the Sun).
- *
- * Revision 1.3 1995/08/23 02:23:15 warmerda
- * Added support for reading bounds, and fixed up problems in setting the
- * file wide bounds.
- *
- * Revision 1.2 1995/08/04 03:16:57 warmerda
- * Added header.
- *
- */
-
-#include "shapefil.h"
-
-#include <math.h>
-#include <limits.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-
-SHP_CVSID("$Id: shpopen.c,v 1.75 2016-12-05 12:44:05 erouault Exp $")
-
-typedef unsigned char uchar;
-
-#if UINT_MAX == 65535
-typedef unsigned long int32;
-#else
-typedef unsigned int int32;
-#endif
-
-#ifndef FALSE
-# define FALSE 0
-# define TRUE 1
-#endif
-
-#define ByteCopy( a, b, c ) memcpy( b, a, c )
-#ifndef MAX
-# define MIN(a,b) ((a<b) ? a : b)
-# define MAX(a,b) ((a>b) ? a : b)
-#endif
-
-#ifndef USE_CPL
-#if defined(_MSC_VER)
-# if _MSC_VER < 1900
-# define snprintf _snprintf
-# endif
-#elif defined(WIN32) || defined(_WIN32)
-# ifndef snprintf
-# define snprintf _snprintf
-# endif
-#endif
-#endif
-
-#ifndef CPL_UNUSED
-#if defined(__GNUC__) && __GNUC__ >= 4
-# define CPL_UNUSED __attribute((__unused__))
-#else
-# define CPL_UNUSED
-#endif
-#endif
-
-#if defined(CPL_LSB)
-#define bBigEndian FALSE
-#elif defined(CPL_MSB)
-#define bBigEndian TRUE
-#else
-static int bBigEndian;
-#endif
-
-/************************************************************************/
-/* SwapWord() */
-/* */
-/* Swap a 2, 4 or 8 byte word. */
-/************************************************************************/
-
-static void SwapWord( int length, void * wordP )
-
-{
- int i;
- uchar temp;
-
- for( i=0; i < length/2; i++ )
- {
- temp = ((uchar *) wordP)[i];
- ((uchar *)wordP)[i] = ((uchar *) wordP)[length-i-1];
- ((uchar *) wordP)[length-i-1] = temp;
- }
-}
-
-/************************************************************************/
-/* SfRealloc() */
-/* */
-/* A realloc cover function that will access a NULL pointer as */
-/* a valid input. */
-/************************************************************************/
-
-static void * SfRealloc( void * pMem, int nNewSize )
-
-{
- if( pMem == NULL )
- return( (void *) malloc(nNewSize) );
- else
- return( (void *) realloc(pMem,nNewSize) );
-}
-
-/************************************************************************/
-/* SHPWriteHeader() */
-/* */
-/* Write out a header for the .shp and .shx files as well as the */
-/* contents of the index (.shx) file. */
-/************************************************************************/
-
-void SHPAPI_CALL SHPWriteHeader( SHPHandle psSHP )
-
-{
- uchar abyHeader[100] = { 0 };
- int i;
- int32 i32;
- double dValue;
- int32 *panSHX;
-
- if (psSHP->fpSHX == NULL)
- {
- psSHP->sHooks.Error( "SHPWriteHeader failed : SHX file is closed");
- return;
- }
-
-/* -------------------------------------------------------------------- */
-/* Prepare header block for .shp file. */
-/* -------------------------------------------------------------------- */
-
- abyHeader[2] = 0x27; /* magic cookie */
- abyHeader[3] = 0x0a;
-
- i32 = psSHP->nFileSize/2; /* file size */
- ByteCopy( &i32, abyHeader+24, 4 );
- if( !bBigEndian ) SwapWord( 4, abyHeader+24 );
-
- i32 = 1000; /* version */
- ByteCopy( &i32, abyHeader+28, 4 );
- if( bBigEndian ) SwapWord( 4, abyHeader+28 );
-
- i32 = psSHP->nShapeType; /* shape type */
- ByteCopy( &i32, abyHeader+32, 4 );
- if( bBigEndian ) SwapWord( 4, abyHeader+32 );
-
- dValue = psSHP->adBoundsMin[0]; /* set bounds */
- ByteCopy( &dValue, abyHeader+36, 8 );
- if( bBigEndian ) SwapWord( 8, abyHeader+36 );
-
- dValue = psSHP->adBoundsMin[1];
- ByteCopy( &dValue, abyHeader+44, 8 );
- if( bBigEndian ) SwapWord( 8, abyHeader+44 );
-
- dValue = psSHP->adBoundsMax[0];
- ByteCopy( &dValue, abyHeader+52, 8 );
- if( bBigEndian ) SwapWord( 8, abyHeader+52 );
-
- dValue = psSHP->adBoundsMax[1];
- ByteCopy( &dValue, abyHeader+60, 8 );
- if( bBigEndian ) SwapWord( 8, abyHeader+60 );
-
- dValue = psSHP->adBoundsMin[2]; /* z */
- ByteCopy( &dValue, abyHeader+68, 8 );
- if( bBigEndian ) SwapWord( 8, abyHeader+68 );
-
- dValue = psSHP->adBoundsMax[2];
- ByteCopy( &dValue, abyHeader+76, 8 );
- if( bBigEndian ) SwapWord( 8, abyHeader+76 );
-
- dValue = psSHP->adBoundsMin[3]; /* m */
- ByteCopy( &dValue, abyHeader+84, 8 );
- if( bBigEndian ) SwapWord( 8, abyHeader+84 );
-
- dValue = psSHP->adBoundsMax[3];
- ByteCopy( &dValue, abyHeader+92, 8 );
- if( bBigEndian ) SwapWord( 8, abyHeader+92 );
-
-/* -------------------------------------------------------------------- */
-/* Write .shp file header. */
-/* -------------------------------------------------------------------- */
- if( psSHP->sHooks.FSeek( psSHP->fpSHP, 0, 0 ) != 0
- || psSHP->sHooks.FWrite( abyHeader, 100, 1, psSHP->fpSHP ) != 1 )
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Failure writing .shp header: %s", strerror(errno) );
- psSHP->sHooks.Error( szError );
- return;
- }
-
-/* -------------------------------------------------------------------- */
-/* Prepare, and write .shx file header. */
-/* -------------------------------------------------------------------- */
- i32 = (psSHP->nRecords * 2 * sizeof(int32) + 100)/2; /* file size */
- ByteCopy( &i32, abyHeader+24, 4 );
- if( !bBigEndian ) SwapWord( 4, abyHeader+24 );
-
- if( psSHP->sHooks.FSeek( psSHP->fpSHX, 0, 0 ) != 0
- || psSHP->sHooks.FWrite( abyHeader, 100, 1, psSHP->fpSHX ) != 1 )
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Failure writing .shx header: %s", strerror(errno) );
- psSHP->sHooks.Error( szError );
-
- return;
- }
-
-/* -------------------------------------------------------------------- */
-/* Write out the .shx contents. */
-/* -------------------------------------------------------------------- */
- panSHX = (int32 *) malloc(sizeof(int32) * 2 * psSHP->nRecords);
- if( panSHX == NULL )
- {
- psSHP->sHooks.Error( "Failure allocatin panSHX" );
- return;
- }
-
- for( i = 0; i < psSHP->nRecords; i++ )
- {
- panSHX[i*2 ] = psSHP->panRecOffset[i]/2;
- panSHX[i*2+1] = psSHP->panRecSize[i]/2;
- if( !bBigEndian ) SwapWord( 4, panSHX+i*2 );
- if( !bBigEndian ) SwapWord( 4, panSHX+i*2+1 );
- }
-
- if( (int)psSHP->sHooks.FWrite( panSHX, sizeof(int32)*2, psSHP->nRecords, psSHP->fpSHX )
- != psSHP->nRecords )
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Failure writing .shx contents: %s", strerror(errno) );
- psSHP->sHooks.Error( szError );
- }
-
- free( panSHX );
-
-/* -------------------------------------------------------------------- */
-/* Flush to disk. */
-/* -------------------------------------------------------------------- */
- psSHP->sHooks.FFlush( psSHP->fpSHP );
- psSHP->sHooks.FFlush( psSHP->fpSHX );
-}
-
-/************************************************************************/
-/* SHPOpen() */
-/************************************************************************/
-
-SHPHandle SHPAPI_CALL
-SHPOpen( const char * pszLayer, const char * pszAccess )
-
-{
- SAHooks sHooks;
-
- SASetupDefaultHooks( &sHooks );
-
- return SHPOpenLL( pszLayer, pszAccess, &sHooks );
-}
-
-/************************************************************************/
-/* SHPOpen() */
-/* */
-/* Open the .shp and .shx files based on the basename of the */
-/* files or either file name. */
-/************************************************************************/
-
-SHPHandle SHPAPI_CALL
-SHPOpenLL( const char * pszLayer, const char * pszAccess, SAHooks *psHooks )
-
-{
- char *pszFullname, *pszBasename;
- SHPHandle psSHP;
-
- uchar *pabyBuf;
- int i;
- double dValue;
- int bLazySHXLoading = FALSE;
- size_t nFullnameLen;
-
-/* -------------------------------------------------------------------- */
-/* Ensure the access string is one of the legal ones. We */
-/* ensure the result string indicates binary to avoid common */
-/* problems on Windows. */
-/* -------------------------------------------------------------------- */
- if( strcmp(pszAccess,"rb+") == 0 || strcmp(pszAccess,"r+b") == 0
- || strcmp(pszAccess,"r+") == 0 )
- pszAccess = "r+b";
- else
- {
- bLazySHXLoading = strchr(pszAccess, 'l') != NULL;
- pszAccess = "rb";
- }
-
-/* -------------------------------------------------------------------- */
-/* Establish the byte order on this machine. */
-/* -------------------------------------------------------------------- */
-#if !defined(bBigEndian)
- i = 1;
- if( *((uchar *) &i) == 1 )
- bBigEndian = FALSE;
- else
- bBigEndian = TRUE;
-#endif
-
-/* -------------------------------------------------------------------- */
-/* Initialize the info structure. */
-/* -------------------------------------------------------------------- */
- psSHP = (SHPHandle) calloc(sizeof(SHPInfo),1);
-
- psSHP->bUpdated = FALSE;
- memcpy( &(psSHP->sHooks), psHooks, sizeof(SAHooks) );
-
-/* -------------------------------------------------------------------- */
-/* Compute the base (layer) name. If there is any extension */
-/* on the passed in filename we will strip it off. */
-/* -------------------------------------------------------------------- */
- pszBasename = (char *) malloc(strlen(pszLayer)+5);
- strcpy( pszBasename, pszLayer );
- for( i = (int)strlen(pszBasename)-1;
- i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'
- && pszBasename[i] != '\\';
- i-- ) {}
-
- if( pszBasename[i] == '.' )
- pszBasename[i] = '\0';
-
-/* -------------------------------------------------------------------- */
-/* Open the .shp and .shx files. Note that files pulled from */
-/* a PC to Unix with upper case filenames won't work! */
-/* -------------------------------------------------------------------- */
- nFullnameLen = strlen(pszBasename) + 5;
- pszFullname = (char *) malloc(nFullnameLen);
- snprintf( pszFullname, nFullnameLen, "%s.shp", pszBasename ) ;
- psSHP->fpSHP = psSHP->sHooks.FOpen(pszFullname, pszAccess );
- if( psSHP->fpSHP == NULL )
- {
- snprintf( pszFullname, nFullnameLen, "%s.SHP", pszBasename );
- psSHP->fpSHP = psSHP->sHooks.FOpen(pszFullname, pszAccess );
- }
-
- if( psSHP->fpSHP == NULL )
- {
- size_t nMessageLen = strlen(pszBasename)*2+256;
- char *pszMessage = (char *) malloc(nMessageLen);
- snprintf( pszMessage, nMessageLen, "Unable to open %s.shp or %s.SHP.",
- pszBasename, pszBasename );
- psHooks->Error( pszMessage );
- free( pszMessage );
-
- free( psSHP );
- free( pszBasename );
- free( pszFullname );
-
- return NULL;
- }
-
- snprintf( pszFullname, nFullnameLen, "%s.shx", pszBasename );
- psSHP->fpSHX = psSHP->sHooks.FOpen(pszFullname, pszAccess );
- if( psSHP->fpSHX == NULL )
- {
- snprintf( pszFullname, nFullnameLen, "%s.SHX", pszBasename );
- psSHP->fpSHX = psSHP->sHooks.FOpen(pszFullname, pszAccess );
- }
-
- if( psSHP->fpSHX == NULL )
- {
- size_t nMessageLen = strlen(pszBasename)*2+256;
- char *pszMessage = (char *) malloc(nMessageLen);
- snprintf( pszMessage, nMessageLen, "Unable to open %s.shx or %s.SHX."
- "Try --config SHAPE_RESTORE_SHX true to restore or create it",
- pszBasename, pszBasename );
- psHooks->Error( pszMessage );
- free( pszMessage );
-
- psSHP->sHooks.FClose( psSHP->fpSHP );
- free( psSHP );
- free( pszBasename );
- free( pszFullname );
- return( NULL );
- }
-
- free( pszFullname );
- free( pszBasename );
-
-/* -------------------------------------------------------------------- */
-/* Read the file size from the SHP file. */
-/* -------------------------------------------------------------------- */
- pabyBuf = (uchar *) malloc(100);
- psSHP->sHooks.FRead( pabyBuf, 100, 1, psSHP->fpSHP );
-
- psSHP->nFileSize = ((unsigned int)pabyBuf[24] * 256 * 256 * 256
- + (unsigned int)pabyBuf[25] * 256 * 256
- + (unsigned int)pabyBuf[26] * 256
- + (unsigned int)pabyBuf[27]);
- if( psSHP->nFileSize < 0xFFFFFFFFU / 2 )
- psSHP->nFileSize *= 2;
- else
- psSHP->nFileSize = 0xFFFFFFFEU;
-
-/* -------------------------------------------------------------------- */
-/* Read SHX file Header info */
-/* -------------------------------------------------------------------- */
- if( psSHP->sHooks.FRead( pabyBuf, 100, 1, psSHP->fpSHX ) != 1
- || pabyBuf[0] != 0
- || pabyBuf[1] != 0
- || pabyBuf[2] != 0x27
- || (pabyBuf[3] != 0x0a && pabyBuf[3] != 0x0d) )
- {
- psSHP->sHooks.Error( ".shx file is unreadable, or corrupt." );
- psSHP->sHooks.FClose( psSHP->fpSHP );
- psSHP->sHooks.FClose( psSHP->fpSHX );
- free( psSHP );
-
- return( NULL );
- }
-
- psSHP->nRecords = pabyBuf[27] + pabyBuf[26] * 256
- + pabyBuf[25] * 256 * 256 + (pabyBuf[24] & 0x7F) * 256 * 256 * 256;
- psSHP->nRecords = (psSHP->nRecords - 50) / 4;
-
- psSHP->nShapeType = pabyBuf[32];
-
- if( psSHP->nRecords < 0 || psSHP->nRecords > 256000000 )
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Record count in .shp header is %d, which seems\n"
- "unreasonable. Assuming header is corrupt.",
- psSHP->nRecords );
- psSHP->sHooks.Error( szError );
- psSHP->sHooks.FClose( psSHP->fpSHP );
- psSHP->sHooks.FClose( psSHP->fpSHX );
- free( psSHP );
- free(pabyBuf);
-
- return( NULL );
- }
-
- /* If a lot of records are advertized, check that the file is big enough */
- /* to hold them */
- if( psSHP->nRecords >= 1024 * 1024 )
- {
- SAOffset nFileSize;
- psSHP->sHooks.FSeek( psSHP->fpSHX, 0, 2 );
- nFileSize = psSHP->sHooks.FTell( psSHP->fpSHX );
- if( nFileSize > 100 &&
- nFileSize/2 < (SAOffset)(psSHP->nRecords * 4 + 50) )
- {
- psSHP->nRecords = (int)((nFileSize - 100) / 8);
- }
- psSHP->sHooks.FSeek( psSHP->fpSHX, 100, 0 );
- }
-
-/* -------------------------------------------------------------------- */
-/* Read the bounds. */
-/* -------------------------------------------------------------------- */
- if( bBigEndian ) SwapWord( 8, pabyBuf+36 );
- memcpy( &dValue, pabyBuf+36, 8 );
- psSHP->adBoundsMin[0] = dValue;
-
- if( bBigEndian ) SwapWord( 8, pabyBuf+44 );
- memcpy( &dValue, pabyBuf+44, 8 );
- psSHP->adBoundsMin[1] = dValue;
-
- if( bBigEndian ) SwapWord( 8, pabyBuf+52 );
- memcpy( &dValue, pabyBuf+52, 8 );
- psSHP->adBoundsMax[0] = dValue;
-
- if( bBigEndian ) SwapWord( 8, pabyBuf+60 );
- memcpy( &dValue, pabyBuf+60, 8 );
- psSHP->adBoundsMax[1] = dValue;
-
- if( bBigEndian ) SwapWord( 8, pabyBuf+68 ); /* z */
- memcpy( &dValue, pabyBuf+68, 8 );
- psSHP->adBoundsMin[2] = dValue;
-
- if( bBigEndian ) SwapWord( 8, pabyBuf+76 );
- memcpy( &dValue, pabyBuf+76, 8 );
- psSHP->adBoundsMax[2] = dValue;
-
- if( bBigEndian ) SwapWord( 8, pabyBuf+84 ); /* z */
- memcpy( &dValue, pabyBuf+84, 8 );
- psSHP->adBoundsMin[3] = dValue;
-
- if( bBigEndian ) SwapWord( 8, pabyBuf+92 );
- memcpy( &dValue, pabyBuf+92, 8 );
- psSHP->adBoundsMax[3] = dValue;
-
- free( pabyBuf );
-
-/* -------------------------------------------------------------------- */
-/* Read the .shx file to get the offsets to each record in */
-/* the .shp file. */
-/* -------------------------------------------------------------------- */
- psSHP->nMaxRecords = psSHP->nRecords;
-
- psSHP->panRecOffset = (unsigned int *)
- malloc(sizeof(unsigned int) * MAX(1,psSHP->nMaxRecords) );
- psSHP->panRecSize = (unsigned int *)
- malloc(sizeof(unsigned int) * MAX(1,psSHP->nMaxRecords) );
- if( bLazySHXLoading )
- pabyBuf = NULL;
- else
- pabyBuf = (uchar *) malloc(8 * MAX(1,psSHP->nRecords) );
-
- if (psSHP->panRecOffset == NULL ||
- psSHP->panRecSize == NULL ||
- (!bLazySHXLoading && pabyBuf == NULL))
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Not enough memory to allocate requested memory (nRecords=%d).\n"
- "Probably broken SHP file",
- psSHP->nRecords );
- psSHP->sHooks.Error( szError );
- psSHP->sHooks.FClose( psSHP->fpSHP );
- psSHP->sHooks.FClose( psSHP->fpSHX );
- if (psSHP->panRecOffset) free( psSHP->panRecOffset );
- if (psSHP->panRecSize) free( psSHP->panRecSize );
- if (pabyBuf) free( pabyBuf );
- free( psSHP );
- return( NULL );
- }
-
- if( bLazySHXLoading )
- {
- memset(psSHP->panRecOffset, 0, sizeof(unsigned int) * MAX(1,psSHP->nMaxRecords) );
- memset(psSHP->panRecSize, 0, sizeof(unsigned int) * MAX(1,psSHP->nMaxRecords) );
- return( psSHP );
- }
-
- if( (int) psSHP->sHooks.FRead( pabyBuf, 8, psSHP->nRecords, psSHP->fpSHX )
- != psSHP->nRecords )
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Failed to read all values for %d records in .shx file: %s.",
- psSHP->nRecords, strerror(errno) );
- psSHP->sHooks.Error( szError );
-
- /* SHX is short or unreadable for some reason. */
- psSHP->sHooks.FClose( psSHP->fpSHP );
- psSHP->sHooks.FClose( psSHP->fpSHX );
- free( psSHP->panRecOffset );
- free( psSHP->panRecSize );
- free( pabyBuf );
- free( psSHP );
-
- return( NULL );
- }
-
- /* In read-only mode, we can close the SHX now */
- if (strcmp(pszAccess, "rb") == 0)
- {
- psSHP->sHooks.FClose( psSHP->fpSHX );
- psSHP->fpSHX = NULL;
- }
-
- for( i = 0; i < psSHP->nRecords; i++ )
- {
- unsigned int nOffset, nLength;
-
- memcpy( &nOffset, pabyBuf + i * 8, 4 );
- if( !bBigEndian ) SwapWord( 4, &nOffset );
-
- memcpy( &nLength, pabyBuf + i * 8 + 4, 4 );
- if( !bBigEndian ) SwapWord( 4, &nLength );
-
- if( nOffset > (unsigned int)INT_MAX )
- {
- char str[128];
- snprintf( str, sizeof(str),
- "Invalid offset for entity %d", i);
-
- psSHP->sHooks.Error( str );
- SHPClose(psSHP);
- free( pabyBuf );
- return NULL;
- }
- if( nLength > (unsigned int)(INT_MAX / 2 - 4) )
- {
- char str[128];
- snprintf( str, sizeof(str),
- "Invalid length for entity %d", i);
-
- psSHP->sHooks.Error( str );
- SHPClose(psSHP);
- free( pabyBuf );
- return NULL;
- }
- psSHP->panRecOffset[i] = nOffset*2;
- psSHP->panRecSize[i] = nLength*2;
- }
- free( pabyBuf );
-
- return( psSHP );
-}
-
-/************************************************************************/
-/* SHPOpenLLEx() */
-/* */
-/* Open the .shp and .shx files based on the basename of the */
-/* files or either file name. It generally invokes SHPRestoreSHX() */
-/* in case when bRestoreSHX equals true. */
-/************************************************************************/
-
-SHPHandle SHPAPI_CALL
-SHPOpenLLEx( const char * pszLayer, const char * pszAccess, SAHooks *psHooks,
- int bRestoreSHX )
-
-{
- if ( !bRestoreSHX ) return SHPOpenLL ( pszLayer, pszAccess, psHooks );
- else
- {
- if ( SHPRestoreSHX ( pszLayer, pszAccess, psHooks ) )
- {
- return SHPOpenLL ( pszLayer, pszAccess, psHooks );
- }
- }
-
- return( NULL );
-}
-
-/************************************************************************/
-/* SHPRestoreSHX() */
-/* */
-/* Restore .SHX file using associated .SHP file. */
-/* */
-/************************************************************************/
-
-int SHPAPI_CALL
-SHPRestoreSHX ( const char * pszLayer, const char * pszAccess, SAHooks *psHooks )
-
-{
- char *pszFullname, *pszBasename;
- SAFile fpSHP, fpSHX;
-
-
- uchar *pabyBuf;
- int i;
- size_t nFullnameLen;
- unsigned int nSHPFilesize;
-
- size_t nMessageLen;
- char *pszMessage;
-
- unsigned int nCurrentRecordOffset = 0;
- unsigned int nCurrentSHPOffset = 100;
- size_t nRealSHXContentSize = 100;
-
- const char pszSHXAccess[] = "w+b";
- char *pabySHXHeader;
- char abyReadedRecord[8];
- unsigned int niRecord = 0;
- unsigned int nRecordLength = 0;
- unsigned int nRecordOffset = 50;
-
-/* -------------------------------------------------------------------- */
-/* Ensure the access string is one of the legal ones. We */
-/* ensure the result string indicates binary to avoid common */
-/* problems on Windows. */
-/* -------------------------------------------------------------------- */
- if( strcmp(pszAccess,"rb+") == 0 || strcmp(pszAccess,"r+b") == 0
- || strcmp(pszAccess,"r+") == 0 )
- pszAccess = "r+b";
- else
- {
- pszAccess = "rb";
- }
-
-/* -------------------------------------------------------------------- */
-/* Establish the byte order on this machine. */
-/* -------------------------------------------------------------------- */
-#if !defined(bBigEndian)
- i = 1;
- if( *((uchar *) &i) == 1 )
- bBigEndian = FALSE;
- else
- bBigEndian = TRUE;
-#endif
-
-/* -------------------------------------------------------------------- */
-/* Compute the base (layer) name. If there is any extension */
-/* on the passed in filename we will strip it off. */
-/* -------------------------------------------------------------------- */
- pszBasename = (char *) malloc(strlen(pszLayer)+5);
- strcpy( pszBasename, pszLayer );
- for( i = (int)strlen(pszBasename)-1;
- i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'
- && pszBasename[i] != '\\';
- i-- ) {}
-
- if( pszBasename[i] == '.' )
- pszBasename[i] = '\0';
-
-/* -------------------------------------------------------------------- */
-/* Open the .shp file. Note that files pulled from */
-/* a PC to Unix with upper case filenames won't work! */
-/* -------------------------------------------------------------------- */
- nFullnameLen = strlen(pszBasename) + 5;
- pszFullname = (char *) malloc(nFullnameLen);
- snprintf( pszFullname, nFullnameLen, "%s.shp", pszBasename ) ;
- fpSHP = psHooks->FOpen(pszFullname, pszAccess );
- if( fpSHP == NULL )
- {
- snprintf( pszFullname, nFullnameLen, "%s.SHP", pszBasename );
- fpSHP = psHooks->FOpen(pszFullname, pszAccess );
- }
-
- if( fpSHP == NULL )
- {
- nMessageLen = strlen(pszBasename)*2+256;
- pszMessage = (char *) malloc(nMessageLen);
- snprintf( pszMessage, nMessageLen, "Unable to open %s.shp or %s.SHP.",
- pszBasename, pszBasename );
- psHooks->Error( pszMessage );
- free( pszMessage );
-
- free( pszBasename );
- free( pszFullname );
-
- return( 0 );
- }
-
-/* -------------------------------------------------------------------- */
-/* Read the file size from the SHP file. */
-/* -------------------------------------------------------------------- */
- pabyBuf = (uchar *) malloc(100);
- psHooks->FRead( pabyBuf, 100, 1, fpSHP );
-
- nSHPFilesize = ((unsigned int)pabyBuf[24] * 256 * 256 * 256
- + (unsigned int)pabyBuf[25] * 256 * 256
- + (unsigned int)pabyBuf[26] * 256
- + (unsigned int)pabyBuf[27]);
- if( nSHPFilesize < 0xFFFFFFFFU / 2 )
- nSHPFilesize *= 2;
- else
- nSHPFilesize = 0xFFFFFFFEU;
-
- snprintf( pszFullname, nFullnameLen, "%s.shx", pszBasename );
- fpSHX = psHooks->FOpen( pszFullname, pszSHXAccess );
-
- if( fpSHX == NULL )
- {
- nMessageLen = strlen( pszBasename ) * 2 + 256;
- pszMessage = (char *) malloc( nMessageLen );
- snprintf( pszMessage, nMessageLen, "Error opening file %s.shx for writing",
- pszBasename );
- psHooks->Error( pszMessage );
- free( pszMessage );
-
- psHooks->FClose( fpSHX );
-
- free( pabyBuf );
- free( pszBasename );
- free( pszFullname );
-
- return( 0 );
- }
-
-/* -------------------------------------------------------------------- */
-/* Open SHX and create it using SHP file content. */
-/* -------------------------------------------------------------------- */
- psHooks->FSeek( fpSHP, 100, 0 );
- pabySHXHeader = (char *) malloc ( 100 );
- memcpy( pabySHXHeader, pabyBuf, 100 );
- psHooks->FWrite( pabySHXHeader, 100, 1, fpSHX );
-
- while( nCurrentSHPOffset < nSHPFilesize )
- {
- if( psHooks->FRead( &niRecord, 4, 1, fpSHP ) == 1 &&
- psHooks->FRead( &nRecordLength, 4, 1, fpSHP ) == 1)
- {
- if( !bBigEndian ) SwapWord( 4, &nRecordOffset );
- memcpy( abyReadedRecord, &nRecordOffset, 4 );
- memcpy( abyReadedRecord + 4, &nRecordLength, 4 );
-
- psHooks->FWrite( abyReadedRecord, 8, 1, fpSHX );
-
- if ( !bBigEndian ) SwapWord( 4, &nRecordOffset );
- if ( !bBigEndian ) SwapWord( 4, &nRecordLength );
- nRecordOffset += nRecordLength + 4;
- nCurrentRecordOffset += 8;
- nCurrentSHPOffset += 8 + nRecordLength * 2;
-
- psHooks->FSeek( fpSHP, nCurrentSHPOffset, 0 );
- nRealSHXContentSize += 8;
- }
- else
- {
- nMessageLen = strlen( pszBasename ) * 2 + 256;
- pszMessage = (char *) malloc( nMessageLen );
- snprintf( pszMessage, nMessageLen, "Error parsing .shp to restore .shx" );
- psHooks->Error( pszMessage );
- free( pszMessage );
-
- psHooks->FClose( fpSHX );
- psHooks->FClose( fpSHP );
-
- free( pabySHXHeader );
- free( pszBasename );
- free( pszFullname );
-
- return( 0 );
- }
- }
-
- nRealSHXContentSize /= 2; // Bytes counted -> WORDs
- if( !bBigEndian ) SwapWord( 4, &nRealSHXContentSize );
- psHooks->FSeek( fpSHX, 24, 0 );
- psHooks->FWrite( &nRealSHXContentSize, 4, 1, fpSHX );
-
- psHooks->FClose( fpSHP );
- psHooks->FClose( fpSHX );
-
- free ( pabyBuf );
- free ( pszFullname );
- free ( pszBasename );
- free ( pabySHXHeader );
-
- return( 1 );
-}
-
-/************************************************************************/
-/* SHPClose() */
-/* */
-/* Close the .shp and .shx files. */
-/************************************************************************/
-
-void SHPAPI_CALL
-SHPClose(SHPHandle psSHP )
-
-{
- if( psSHP == NULL )
- return;
-
-/* -------------------------------------------------------------------- */
-/* Update the header if we have modified anything. */
-/* -------------------------------------------------------------------- */
- if( psSHP->bUpdated )
- SHPWriteHeader( psSHP );
-
-/* -------------------------------------------------------------------- */
-/* Free all resources, and close files. */
-/* -------------------------------------------------------------------- */
- free( psSHP->panRecOffset );
- free( psSHP->panRecSize );
-
- if ( psSHP->fpSHX != NULL)
- psSHP->sHooks.FClose( psSHP->fpSHX );
- psSHP->sHooks.FClose( psSHP->fpSHP );
-
- if( psSHP->pabyRec != NULL )
- {
- free( psSHP->pabyRec );
- }
-
- if( psSHP->pabyObjectBuf != NULL )
- {
- free( psSHP->pabyObjectBuf );
- }
- if( psSHP->psCachedObject != NULL )
- {
- free( psSHP->psCachedObject );
- }
-
- free( psSHP );
-}
-
-/************************************************************************/
-/* SHPSetFastModeReadObject() */
-/************************************************************************/
-
-/* If setting bFastMode = TRUE, the content of SHPReadObject() is owned by the SHPHandle. */
-/* So you cannot have 2 valid instances of SHPReadObject() simultaneously. */
-/* The SHPObject padfZ and padfM members may be NULL depending on the geometry */
-/* type. It is illegal to free at hand any of the pointer members of the SHPObject structure */
-void SHPAPI_CALL SHPSetFastModeReadObject( SHPHandle hSHP, int bFastMode )
-{
- if( bFastMode )
- {
- if( hSHP->psCachedObject == NULL )
- {
- hSHP->psCachedObject = (SHPObject*) calloc(1, sizeof(SHPObject));
- assert( hSHP->psCachedObject != NULL );
- }
- }
-
- hSHP->bFastModeReadObject = bFastMode;
-}
-
-/************************************************************************/
-/* SHPGetInfo() */
-/* */
-/* Fetch general information about the shape file. */
-/************************************************************************/
-
-void SHPAPI_CALL
-SHPGetInfo(SHPHandle psSHP, int * pnEntities, int * pnShapeType,
- double * padfMinBound, double * padfMaxBound )
-
-{
- int i;
-
- if( psSHP == NULL )
- return;
-
- if( pnEntities != NULL )
- *pnEntities = psSHP->nRecords;
-
- if( pnShapeType != NULL )
- *pnShapeType = psSHP->nShapeType;
-
- for( i = 0; i < 4; i++ )
- {
- if( padfMinBound != NULL )
- padfMinBound[i] = psSHP->adBoundsMin[i];
- if( padfMaxBound != NULL )
- padfMaxBound[i] = psSHP->adBoundsMax[i];
- }
-}
-
-/************************************************************************/
-/* SHPCreate() */
-/* */
-/* Create a new shape file and return a handle to the open */
-/* shape file with read/write access. */
-/************************************************************************/
-
-SHPHandle SHPAPI_CALL
-SHPCreate( const char * pszLayer, int nShapeType )
-
-{
- SAHooks sHooks;
-
- SASetupDefaultHooks( &sHooks );
-
- return SHPCreateLL( pszLayer, nShapeType, &sHooks );
-}
-
-/************************************************************************/
-/* SHPCreate() */
-/* */
-/* Create a new shape file and return a handle to the open */
-/* shape file with read/write access. */
-/************************************************************************/
-
-SHPHandle SHPAPI_CALL
-SHPCreateLL( const char * pszLayer, int nShapeType, SAHooks *psHooks )
-
-{
- char *pszBasename = NULL, *pszFullname = NULL;
- int i;
- SAFile fpSHP = NULL, fpSHX = NULL;
- uchar abyHeader[100];
- int32 i32;
- double dValue;
- size_t nFullnameLen;
-
-/* -------------------------------------------------------------------- */
-/* Establish the byte order on this system. */
-/* -------------------------------------------------------------------- */
-#if !defined(bBigEndian)
- i = 1;
- if( *((uchar *) &i) == 1 )
- bBigEndian = FALSE;
- else
- bBigEndian = TRUE;
-#endif
-
-/* -------------------------------------------------------------------- */
-/* Compute the base (layer) name. If there is any extension */
-/* on the passed in filename we will strip it off. */
-/* -------------------------------------------------------------------- */
- pszBasename = (char *) malloc(strlen(pszLayer)+5);
- strcpy( pszBasename, pszLayer );
- for( i = (int)strlen(pszBasename)-1;
- i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'
- && pszBasename[i] != '\\';
- i-- ) {}
-
- if( pszBasename[i] == '.' )
- pszBasename[i] = '\0';
-
-/* -------------------------------------------------------------------- */
-/* Open the two files so we can write their headers. */
-/* -------------------------------------------------------------------- */
- nFullnameLen = strlen(pszBasename) + 5;
- pszFullname = (char *) malloc(nFullnameLen);
- snprintf( pszFullname, nFullnameLen, "%s.shp", pszBasename );
- fpSHP = psHooks->FOpen(pszFullname, "wb" );
- if( fpSHP == NULL )
- {
- psHooks->Error( "Failed to create file .shp file." );
- goto error;
- }
-
- snprintf( pszFullname, nFullnameLen, "%s.shx", pszBasename );
- fpSHX = psHooks->FOpen(pszFullname, "wb" );
- if( fpSHX == NULL )
- {
- psHooks->Error( "Failed to create file .shx file." );
- goto error;
- }
-
- free( pszFullname ); pszFullname = NULL;
- free( pszBasename ); pszBasename = NULL;
-
-/* -------------------------------------------------------------------- */
-/* Prepare header block for .shp file. */
-/* -------------------------------------------------------------------- */
- memset( abyHeader, 0, sizeof(abyHeader) );
-
- abyHeader[2] = 0x27; /* magic cookie */
- abyHeader[3] = 0x0a;
-
- i32 = 50; /* file size */
- ByteCopy( &i32, abyHeader+24, 4 );
- if( !bBigEndian ) SwapWord( 4, abyHeader+24 );
-
- i32 = 1000; /* version */
- ByteCopy( &i32, abyHeader+28, 4 );
- if( bBigEndian ) SwapWord( 4, abyHeader+28 );
-
- i32 = nShapeType; /* shape type */
- ByteCopy( &i32, abyHeader+32, 4 );
- if( bBigEndian ) SwapWord( 4, abyHeader+32 );
-
- dValue = 0.0; /* set bounds */
- ByteCopy( &dValue, abyHeader+36, 8 );
- ByteCopy( &dValue, abyHeader+44, 8 );
- ByteCopy( &dValue, abyHeader+52, 8 );
- ByteCopy( &dValue, abyHeader+60, 8 );
-
-/* -------------------------------------------------------------------- */
-/* Write .shp file header. */
-/* -------------------------------------------------------------------- */
- if( psHooks->FWrite( abyHeader, 100, 1, fpSHP ) != 1 )
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Failed to write .shp header: %s", strerror(errno) );
- psHooks->Error( szError );
-
- goto error;
- }
-
-/* -------------------------------------------------------------------- */
-/* Prepare, and write .shx file header. */
-/* -------------------------------------------------------------------- */
- i32 = 50; /* file size */
- ByteCopy( &i32, abyHeader+24, 4 );
- if( !bBigEndian ) SwapWord( 4, abyHeader+24 );
-
- if( psHooks->FWrite( abyHeader, 100, 1, fpSHX ) != 1 )
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Failure writing .shx header: %s", strerror(errno) );
- psHooks->Error( szError );
-
- goto error;
- }
-
-/* -------------------------------------------------------------------- */
-/* Close the files, and then open them as regular existing files. */
-/* -------------------------------------------------------------------- */
- psHooks->FClose( fpSHP );
- psHooks->FClose( fpSHX );
-
- return( SHPOpenLL( pszLayer, "r+b", psHooks ) );
-
-error:
- if (pszFullname) free(pszFullname);
- if (pszBasename) free(pszBasename);
- if (fpSHP) psHooks->FClose( fpSHP );
- if (fpSHX) psHooks->FClose( fpSHX );
- return NULL;
-}
-
-/************************************************************************/
-/* _SHPSetBounds() */
-/* */
-/* Compute a bounds rectangle for a shape, and set it into the */
-/* indicated location in the record. */
-/************************************************************************/
-
-static void _SHPSetBounds( uchar * pabyRec, SHPObject * psShape )
-
-{
- ByteCopy( &(psShape->dfXMin), pabyRec + 0, 8 );
- ByteCopy( &(psShape->dfYMin), pabyRec + 8, 8 );
- ByteCopy( &(psShape->dfXMax), pabyRec + 16, 8 );
- ByteCopy( &(psShape->dfYMax), pabyRec + 24, 8 );
-
- if( bBigEndian )
- {
- SwapWord( 8, pabyRec + 0 );
- SwapWord( 8, pabyRec + 8 );
- SwapWord( 8, pabyRec + 16 );
- SwapWord( 8, pabyRec + 24 );
- }
-}
-
-/************************************************************************/
-/* SHPComputeExtents() */
-/* */
-/* Recompute the extents of a shape. Automatically done by */
-/* SHPCreateObject(). */
-/************************************************************************/
-
-void SHPAPI_CALL
-SHPComputeExtents( SHPObject * psObject )
-
-{
- int i;
-
-/* -------------------------------------------------------------------- */
-/* Build extents for this object. */
-/* -------------------------------------------------------------------- */
- if( psObject->nVertices > 0 )
- {
- psObject->dfXMin = psObject->dfXMax = psObject->padfX[0];
- psObject->dfYMin = psObject->dfYMax = psObject->padfY[0];
- psObject->dfZMin = psObject->dfZMax = psObject->padfZ[0];
- psObject->dfMMin = psObject->dfMMax = psObject->padfM[0];
- }
-
- for( i = 0; i < psObject->nVertices; i++ )
- {
- psObject->dfXMin = MIN(psObject->dfXMin, psObject->padfX[i]);
- psObject->dfYMin = MIN(psObject->dfYMin, psObject->padfY[i]);
- psObject->dfZMin = MIN(psObject->dfZMin, psObject->padfZ[i]);
- psObject->dfMMin = MIN(psObject->dfMMin, psObject->padfM[i]);
-
- psObject->dfXMax = MAX(psObject->dfXMax, psObject->padfX[i]);
- psObject->dfYMax = MAX(psObject->dfYMax, psObject->padfY[i]);
- psObject->dfZMax = MAX(psObject->dfZMax, psObject->padfZ[i]);
- psObject->dfMMax = MAX(psObject->dfMMax, psObject->padfM[i]);
- }
-}
-
-/************************************************************************/
-/* SHPCreateObject() */
-/* */
-/* Create a shape object. It should be freed with */
-/* SHPDestroyObject(). */
-/************************************************************************/
-
-SHPObject SHPAPI_CALL1(*)
-SHPCreateObject( int nSHPType, int nShapeId, int nParts,
- const int * panPartStart, const int * panPartType,
- int nVertices, const double *padfX, const double *padfY,
- const double * padfZ, const double * padfM )
-
-{
- SHPObject *psObject;
- int i, bHasM, bHasZ;
-
- psObject = (SHPObject *) calloc(1,sizeof(SHPObject));
- psObject->nSHPType = nSHPType;
- psObject->nShapeId = nShapeId;
- psObject->bMeasureIsUsed = FALSE;
-
-/* -------------------------------------------------------------------- */
-/* Establish whether this shape type has M, and Z values. */
-/* -------------------------------------------------------------------- */
- if( nSHPType == SHPT_ARCM
- || nSHPType == SHPT_POINTM
- || nSHPType == SHPT_POLYGONM
- || nSHPType == SHPT_MULTIPOINTM )
- {
- bHasM = TRUE;
- bHasZ = FALSE;
- }
- else if( nSHPType == SHPT_ARCZ
- || nSHPType == SHPT_POINTZ
- || nSHPType == SHPT_POLYGONZ
- || nSHPType == SHPT_MULTIPOINTZ
- || nSHPType == SHPT_MULTIPATCH )
- {
- bHasM = TRUE;
- bHasZ = TRUE;
- }
- else
- {
- bHasM = FALSE;
- bHasZ = FALSE;
- }
-
-/* -------------------------------------------------------------------- */
-/* Capture parts. Note that part type is optional, and */
-/* defaults to ring. */
-/* -------------------------------------------------------------------- */
- if( nSHPType == SHPT_ARC || nSHPType == SHPT_POLYGON
- || nSHPType == SHPT_ARCM || nSHPType == SHPT_POLYGONM
- || nSHPType == SHPT_ARCZ || nSHPType == SHPT_POLYGONZ
- || nSHPType == SHPT_MULTIPATCH )
- {
- psObject->nParts = MAX(1,nParts);
-
- psObject->panPartStart = (int *)
- calloc(sizeof(int), psObject->nParts);
- psObject->panPartType = (int *)
- malloc(sizeof(int) * psObject->nParts);
-
- psObject->panPartStart[0] = 0;
- psObject->panPartType[0] = SHPP_RING;
-
- for( i = 0; i < nParts; i++ )
- {
- if( panPartStart != NULL )
- psObject->panPartStart[i] = panPartStart[i];
-
- if( panPartType != NULL )
- psObject->panPartType[i] = panPartType[i];
- else
- psObject->panPartType[i] = SHPP_RING;
- }
-
- if( psObject->panPartStart[0] != 0 )
- psObject->panPartStart[0] = 0;
- }
-
-/* -------------------------------------------------------------------- */
-/* Capture vertices. Note that X, Y, Z and M are optional. */
-/* -------------------------------------------------------------------- */
- if( nVertices > 0 )
- {
- psObject->padfX = (double *) calloc(sizeof(double),nVertices);
- psObject->padfY = (double *) calloc(sizeof(double),nVertices);
- psObject->padfZ = (double *) calloc(sizeof(double),nVertices);
- psObject->padfM = (double *) calloc(sizeof(double),nVertices);
-
- for( i = 0; i < nVertices; i++ )
- {
- if( padfX != NULL )
- psObject->padfX[i] = padfX[i];
- if( padfY != NULL )
- psObject->padfY[i] = padfY[i];
- if( padfZ != NULL && bHasZ )
- psObject->padfZ[i] = padfZ[i];
- if( padfM != NULL && bHasM )
- psObject->padfM[i] = padfM[i];
- }
- if( padfM != NULL && bHasM )
- psObject->bMeasureIsUsed = TRUE;
- }
-
-/* -------------------------------------------------------------------- */
-/* Compute the extents. */
-/* -------------------------------------------------------------------- */
- psObject->nVertices = nVertices;
- SHPComputeExtents( psObject );
-
- return( psObject );
-}
-
-/************************************************************************/
-/* SHPCreateSimpleObject() */
-/* */
-/* Create a simple (common) shape object. Destroy with */
-/* SHPDestroyObject(). */
-/************************************************************************/
-
-SHPObject SHPAPI_CALL1(*)
-SHPCreateSimpleObject( int nSHPType, int nVertices,
- const double * padfX, const double * padfY,
- const double * padfZ )
-
-{
- return( SHPCreateObject( nSHPType, -1, 0, NULL, NULL,
- nVertices, padfX, padfY, padfZ, NULL ) );
-}
-
-/************************************************************************/
-/* SHPWriteObject() */
-/* */
-/* Write out the vertices of a new structure. Note that it is */
-/* only possible to write vertices at the end of the file. */
-/************************************************************************/
-
-int SHPAPI_CALL
-SHPWriteObject(SHPHandle psSHP, int nShapeId, SHPObject * psObject )
-
-{
- unsigned int nRecordOffset, nRecordSize=0;
- int i;
- uchar *pabyRec;
- int32 i32;
- int bExtendFile = FALSE;
-
- psSHP->bUpdated = TRUE;
-
-/* -------------------------------------------------------------------- */
-/* Ensure that shape object matches the type of the file it is */
-/* being written to. */
-/* -------------------------------------------------------------------- */
- assert( psObject->nSHPType == psSHP->nShapeType
- || psObject->nSHPType == SHPT_NULL );
-
-/* -------------------------------------------------------------------- */
-/* Ensure that -1 is used for appends. Either blow an */
-/* assertion, or if they are disabled, set the shapeid to -1 */
-/* for appends. */
-/* -------------------------------------------------------------------- */
- assert( nShapeId == -1
- || (nShapeId >= 0 && nShapeId < psSHP->nRecords) );
-
- if( nShapeId != -1 && nShapeId >= psSHP->nRecords )
- nShapeId = -1;
-
-/* -------------------------------------------------------------------- */
-/* Add the new entity to the in memory index. */
-/* -------------------------------------------------------------------- */
- if( nShapeId == -1 && psSHP->nRecords+1 > psSHP->nMaxRecords )
- {
- int nNewMaxRecords = psSHP->nMaxRecords + psSHP->nMaxRecords / 3 + 100;
- unsigned int* panRecOffsetNew;
- unsigned int* panRecSizeNew;
-
- panRecOffsetNew = (unsigned int *)
- SfRealloc(psSHP->panRecOffset,sizeof(unsigned int) * nNewMaxRecords );
- if( panRecOffsetNew == NULL )
- return -1;
- psSHP->panRecOffset = panRecOffsetNew;
-
- panRecSizeNew = (unsigned int *)
- SfRealloc(psSHP->panRecSize,sizeof(unsigned int) * nNewMaxRecords );
- if( panRecSizeNew == NULL )
- return -1;
- psSHP->panRecSize = panRecSizeNew;
-
- psSHP->nMaxRecords = nNewMaxRecords;
- }
-
-/* -------------------------------------------------------------------- */
-/* Initialize record. */
-/* -------------------------------------------------------------------- */
- pabyRec = (uchar *) malloc(psObject->nVertices * 4 * sizeof(double)
- + psObject->nParts * 8 + 128);
- if( pabyRec == NULL )
- return -1;
-
-/* -------------------------------------------------------------------- */
-/* Extract vertices for a Polygon or Arc. */
-/* -------------------------------------------------------------------- */
- if( psObject->nSHPType == SHPT_POLYGON
- || psObject->nSHPType == SHPT_POLYGONZ
- || psObject->nSHPType == SHPT_POLYGONM
- || psObject->nSHPType == SHPT_ARC
- || psObject->nSHPType == SHPT_ARCZ
- || psObject->nSHPType == SHPT_ARCM
- || psObject->nSHPType == SHPT_MULTIPATCH )
- {
- int32 nPoints, nParts;
-
- nPoints = psObject->nVertices;
- nParts = psObject->nParts;
-
- _SHPSetBounds( pabyRec + 12, psObject );
-
- if( bBigEndian ) SwapWord( 4, &nPoints );
- if( bBigEndian ) SwapWord( 4, &nParts );
-
- ByteCopy( &nPoints, pabyRec + 40 + 8, 4 );
- ByteCopy( &nParts, pabyRec + 36 + 8, 4 );
-
- nRecordSize = 52;
-
- /*
- * Write part start positions.
- */
- ByteCopy( psObject->panPartStart, pabyRec + 44 + 8,
- 4 * psObject->nParts );
- for( i = 0; i < psObject->nParts; i++ )
- {
- if( bBigEndian ) SwapWord( 4, pabyRec + 44 + 8 + 4*i );
- nRecordSize += 4;
- }
-
- /*
- * Write multipatch part types if needed.
- */
- if( psObject->nSHPType == SHPT_MULTIPATCH )
- {
- memcpy( pabyRec + nRecordSize, psObject->panPartType,
- 4*psObject->nParts );
- for( i = 0; i < psObject->nParts; i++ )
- {
- if( bBigEndian ) SwapWord( 4, pabyRec + nRecordSize );
- nRecordSize += 4;
- }
- }
-
- /*
- * Write the (x,y) vertex values.
- */
- for( i = 0; i < psObject->nVertices; i++ )
- {
- ByteCopy( psObject->padfX + i, pabyRec + nRecordSize, 8 );
- ByteCopy( psObject->padfY + i, pabyRec + nRecordSize + 8, 8 );
-
- if( bBigEndian )
- SwapWord( 8, pabyRec + nRecordSize );
-
- if( bBigEndian )
- SwapWord( 8, pabyRec + nRecordSize + 8 );
-
- nRecordSize += 2 * 8;
- }
-
- /*
- * Write the Z coordinates (if any).
- */
- if( psObject->nSHPType == SHPT_POLYGONZ
- || psObject->nSHPType == SHPT_ARCZ
- || psObject->nSHPType == SHPT_MULTIPATCH )
- {
- ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
-
- ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
-
- for( i = 0; i < psObject->nVertices; i++ )
- {
- ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
- }
- }
-
- /*
- * Write the M values, if any.
- */
- if( psObject->bMeasureIsUsed
- && (psObject->nSHPType == SHPT_POLYGONM
- || psObject->nSHPType == SHPT_ARCM
-#ifndef DISABLE_MULTIPATCH_MEASURE
- || psObject->nSHPType == SHPT_MULTIPATCH
-#endif
- || psObject->nSHPType == SHPT_POLYGONZ
- || psObject->nSHPType == SHPT_ARCZ) )
- {
- ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
-
- ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
-
- for( i = 0; i < psObject->nVertices; i++ )
- {
- ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
- }
- }
- }
-
-/* -------------------------------------------------------------------- */
-/* Extract vertices for a MultiPoint. */
-/* -------------------------------------------------------------------- */
- else if( psObject->nSHPType == SHPT_MULTIPOINT
- || psObject->nSHPType == SHPT_MULTIPOINTZ
- || psObject->nSHPType == SHPT_MULTIPOINTM )
- {
- int32 nPoints;
-
- nPoints = psObject->nVertices;
-
- _SHPSetBounds( pabyRec + 12, psObject );
-
- if( bBigEndian ) SwapWord( 4, &nPoints );
- ByteCopy( &nPoints, pabyRec + 44, 4 );
-
- for( i = 0; i < psObject->nVertices; i++ )
- {
- ByteCopy( psObject->padfX + i, pabyRec + 48 + i*16, 8 );
- ByteCopy( psObject->padfY + i, pabyRec + 48 + i*16 + 8, 8 );
-
- if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 );
- if( bBigEndian ) SwapWord( 8, pabyRec + 48 + i*16 + 8 );
- }
-
- nRecordSize = 48 + 16 * psObject->nVertices;
-
- if( psObject->nSHPType == SHPT_MULTIPOINTZ )
- {
- ByteCopy( &(psObject->dfZMin), pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
-
- ByteCopy( &(psObject->dfZMax), pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
-
- for( i = 0; i < psObject->nVertices; i++ )
- {
- ByteCopy( psObject->padfZ + i, pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
- }
- }
-
- if( psObject->bMeasureIsUsed
- && (psObject->nSHPType == SHPT_MULTIPOINTZ
- || psObject->nSHPType == SHPT_MULTIPOINTM) )
- {
- ByteCopy( &(psObject->dfMMin), pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
-
- ByteCopy( &(psObject->dfMMax), pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
-
- for( i = 0; i < psObject->nVertices; i++ )
- {
- ByteCopy( psObject->padfM + i, pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
- }
- }
- }
-
-/* -------------------------------------------------------------------- */
-/* Write point. */
-/* -------------------------------------------------------------------- */
- else if( psObject->nSHPType == SHPT_POINT
- || psObject->nSHPType == SHPT_POINTZ
- || psObject->nSHPType == SHPT_POINTM )
- {
- ByteCopy( psObject->padfX, pabyRec + 12, 8 );
- ByteCopy( psObject->padfY, pabyRec + 20, 8 );
-
- if( bBigEndian ) SwapWord( 8, pabyRec + 12 );
- if( bBigEndian ) SwapWord( 8, pabyRec + 20 );
-
- nRecordSize = 28;
-
- if( psObject->nSHPType == SHPT_POINTZ )
- {
- ByteCopy( psObject->padfZ, pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
- }
-
- if( psObject->bMeasureIsUsed
- && (psObject->nSHPType == SHPT_POINTZ
- || psObject->nSHPType == SHPT_POINTM) )
- {
- ByteCopy( psObject->padfM, pabyRec + nRecordSize, 8 );
- if( bBigEndian ) SwapWord( 8, pabyRec + nRecordSize );
- nRecordSize += 8;
- }
- }
-
-/* -------------------------------------------------------------------- */
-/* Not much to do for null geometries. */
-/* -------------------------------------------------------------------- */
- else if( psObject->nSHPType == SHPT_NULL )
- {
- nRecordSize = 12;
- }
-
- else
- {
- /* unknown type */
- assert( FALSE );
- }
-
-/* -------------------------------------------------------------------- */
-/* Establish where we are going to put this record. If we are */
-/* rewriting and existing record, and it will fit, then put it */
-/* back where the original came from. Otherwise write at the end. */
-/* -------------------------------------------------------------------- */
- if( nShapeId == -1 || psSHP->panRecSize[nShapeId] < nRecordSize-8 )
- {
- unsigned int nExpectedSize = psSHP->nFileSize + nRecordSize;
- if( nExpectedSize < psSHP->nFileSize ) // due to unsigned int overflow
- {
- char str[128];
- snprintf( str, sizeof(str), "Failed to write shape object. "
- "File size cannot reach %u + %u.",
- psSHP->nFileSize, nRecordSize );
- psSHP->sHooks.Error( str );
- free( pabyRec );
- return -1;
- }
-
- bExtendFile = TRUE;
- nRecordOffset = psSHP->nFileSize;
- }
- else
- {
- nRecordOffset = psSHP->panRecOffset[nShapeId];
- }
-
-/* -------------------------------------------------------------------- */
-/* Set the shape type, record number, and record size. */
-/* -------------------------------------------------------------------- */
- i32 = (nShapeId < 0) ? psSHP->nRecords+1 : nShapeId+1; /* record # */
- if( !bBigEndian ) SwapWord( 4, &i32 );
- ByteCopy( &i32, pabyRec, 4 );
-
- i32 = (nRecordSize-8)/2; /* record size */
- if( !bBigEndian ) SwapWord( 4, &i32 );
- ByteCopy( &i32, pabyRec + 4, 4 );
-
- i32 = psObject->nSHPType; /* shape type */
- if( bBigEndian ) SwapWord( 4, &i32 );
- ByteCopy( &i32, pabyRec + 8, 4 );
-
-/* -------------------------------------------------------------------- */
-/* Write out record. */
-/* -------------------------------------------------------------------- */
- if( psSHP->sHooks.FSeek( psSHP->fpSHP, nRecordOffset, 0 ) != 0 )
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Error in psSHP->sHooks.FSeek() while writing object to .shp file: %s",
- strerror(errno) );
- psSHP->sHooks.Error( szError );
-
- free( pabyRec );
- return -1;
- }
- if( psSHP->sHooks.FWrite( pabyRec, nRecordSize, 1, psSHP->fpSHP ) < 1 )
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Error in psSHP->sHooks.FWrite() while writing object of %u bytes to .shp file: %s",
- nRecordSize, strerror(errno) );
- psSHP->sHooks.Error( szError );
-
- free( pabyRec );
- return -1;
- }
-
- free( pabyRec );
-
- if( bExtendFile )
- {
- if( nShapeId == -1 )
- nShapeId = psSHP->nRecords++;
-
- psSHP->panRecOffset[nShapeId] = psSHP->nFileSize;
- psSHP->nFileSize += nRecordSize;
- }
- psSHP->panRecSize[nShapeId] = nRecordSize-8;
-
-/* -------------------------------------------------------------------- */
-/* Expand file wide bounds based on this shape. */
-/* -------------------------------------------------------------------- */
- if( psSHP->adBoundsMin[0] == 0.0
- && psSHP->adBoundsMax[0] == 0.0
- && psSHP->adBoundsMin[1] == 0.0
- && psSHP->adBoundsMax[1] == 0.0 )
- {
- if( psObject->nSHPType == SHPT_NULL || psObject->nVertices == 0 )
- {
- psSHP->adBoundsMin[0] = psSHP->adBoundsMax[0] = 0.0;
- psSHP->adBoundsMin[1] = psSHP->adBoundsMax[1] = 0.0;
- psSHP->adBoundsMin[2] = psSHP->adBoundsMax[2] = 0.0;
- psSHP->adBoundsMin[3] = psSHP->adBoundsMax[3] = 0.0;
- }
- else
- {
- psSHP->adBoundsMin[0] = psSHP->adBoundsMax[0] = psObject->padfX[0];
- psSHP->adBoundsMin[1] = psSHP->adBoundsMax[1] = psObject->padfY[0];
- psSHP->adBoundsMin[2] = psSHP->adBoundsMax[2] = psObject->padfZ ? psObject->padfZ[0] : 0.0;
- psSHP->adBoundsMin[3] = psSHP->adBoundsMax[3] = psObject->padfM ? psObject->padfM[0] : 0.0;
- }
- }
-
- for( i = 0; i < psObject->nVertices; i++ )
- {
- psSHP->adBoundsMin[0] = MIN(psSHP->adBoundsMin[0],psObject->padfX[i]);
- psSHP->adBoundsMin[1] = MIN(psSHP->adBoundsMin[1],psObject->padfY[i]);
- psSHP->adBoundsMax[0] = MAX(psSHP->adBoundsMax[0],psObject->padfX[i]);
- psSHP->adBoundsMax[1] = MAX(psSHP->adBoundsMax[1],psObject->padfY[i]);
- if( psObject->padfZ )
- {
- psSHP->adBoundsMin[2] = MIN(psSHP->adBoundsMin[2],psObject->padfZ[i]);
- psSHP->adBoundsMax[2] = MAX(psSHP->adBoundsMax[2],psObject->padfZ[i]);
- }
- if( psObject->padfM )
- {
- psSHP->adBoundsMin[3] = MIN(psSHP->adBoundsMin[3],psObject->padfM[i]);
- psSHP->adBoundsMax[3] = MAX(psSHP->adBoundsMax[3],psObject->padfM[i]);
- }
- }
-
- return( nShapeId );
-}
-
-/************************************************************************/
-/* SHPAllocBuffer() */
-/************************************************************************/
-
-static void* SHPAllocBuffer(unsigned char** pBuffer, int nSize)
-{
- unsigned char* pRet;
-
- if( pBuffer == NULL )
- return calloc(1, nSize);
-
- pRet = *pBuffer;
- if( pRet == NULL )
- return NULL;
-
- (*pBuffer) += nSize;
- return pRet;
-}
-
-/************************************************************************/
-/* SHPReallocObjectBufIfNecessary() */
-/************************************************************************/
-
-static unsigned char* SHPReallocObjectBufIfNecessary ( SHPHandle psSHP,
- int nObjectBufSize )
-{
- unsigned char* pBuffer;
- if( nObjectBufSize == 0 )
- {
- nObjectBufSize = 4 * sizeof(double);
- }
- if( nObjectBufSize > psSHP->nObjectBufSize )
- {
- pBuffer = (unsigned char*) realloc( psSHP->pabyObjectBuf, nObjectBufSize );
- if( pBuffer != NULL )
- {
- psSHP->pabyObjectBuf = pBuffer;
- psSHP->nObjectBufSize = nObjectBufSize;
- }
- }
- else
- pBuffer = psSHP->pabyObjectBuf;
- return pBuffer;
-}
-
-/************************************************************************/
-/* SHPReadObject() */
-/* */
-/* Read the vertices, parts, and other non-attribute information */
-/* for one shape. */
-/************************************************************************/
-
-SHPObject SHPAPI_CALL1(*)
-SHPReadObject( SHPHandle psSHP, int hEntity )
-
-{
- int nEntitySize, nRequiredSize;
- SHPObject *psShape;
- char szErrorMsg[128];
- int nSHPType;
- int nBytesRead;
-
-/* -------------------------------------------------------------------- */
-/* Validate the record/entity number. */
-/* -------------------------------------------------------------------- */
- if( hEntity < 0 || hEntity >= psSHP->nRecords )
- return( NULL );
-
-/* -------------------------------------------------------------------- */
-/* Read offset/length from SHX loading if necessary. */
-/* -------------------------------------------------------------------- */
- if( psSHP->panRecOffset[hEntity] == 0 && psSHP->fpSHX != NULL )
- {
- unsigned int nOffset, nLength;
-
- if( psSHP->sHooks.FSeek( psSHP->fpSHX, 100 + 8 * hEntity, 0 ) != 0 ||
- psSHP->sHooks.FRead( &nOffset, 1, 4, psSHP->fpSHX ) != 4 ||
- psSHP->sHooks.FRead( &nLength, 1, 4, psSHP->fpSHX ) != 4 )
- {
- char str[128];
- snprintf( str, sizeof(str),
- "Error in fseek()/fread() reading object from .shx file at offset %d",
- 100 + 8 * hEntity);
-
- psSHP->sHooks.Error( str );
- return NULL;
- }
- if( !bBigEndian ) SwapWord( 4, &nOffset );
- if( !bBigEndian ) SwapWord( 4, &nLength );
-
- if( nOffset > (unsigned int)INT_MAX )
- {
- char str[128];
- snprintf( str, sizeof(str),
- "Invalid offset for entity %d", hEntity);
-
- psSHP->sHooks.Error( str );
- return NULL;
- }
- if( nLength > (unsigned int)(INT_MAX / 2 - 4) )
- {
- char str[128];
- snprintf( str, sizeof(str),
- "Invalid length for entity %d", hEntity);
-
- psSHP->sHooks.Error( str );
- return NULL;
- }
-
- psSHP->panRecOffset[hEntity] = nOffset*2;
- psSHP->panRecSize[hEntity] = nLength*2;
- }
-
-/* -------------------------------------------------------------------- */
-/* Ensure our record buffer is large enough. */
-/* -------------------------------------------------------------------- */
- nEntitySize = psSHP->panRecSize[hEntity]+8;
- if( nEntitySize > psSHP->nBufSize )
- {
- uchar* pabyRecNew;
- int nNewBufSize = nEntitySize;
- if( nNewBufSize < INT_MAX - nNewBufSize / 3 )
- nNewBufSize += nNewBufSize / 3;
- else
- nNewBufSize = INT_MAX;
-
- /* Before allocating too much memory, check that the file is big enough */
- if( nEntitySize >= 10 * 1024 * 1024 &&
- (psSHP->panRecOffset[hEntity] >= psSHP->nFileSize ||
- (unsigned int)nEntitySize > psSHP->nFileSize - psSHP->panRecOffset[hEntity]) )
- {
- /* We do as is we didn't trust the file size in the header */
- SAOffset nFileSize;
- psSHP->sHooks.FSeek( psSHP->fpSHP, 0, 2 );
- nFileSize = psSHP->sHooks.FTell(psSHP->fpSHP);
- if( nFileSize >= 0xFFFFFFFFU )
- psSHP->nFileSize = 0xFFFFFFFFU;
- else
- psSHP->nFileSize = (unsigned int)nFileSize;
-
- if( psSHP->panRecOffset[hEntity] >= psSHP->nFileSize ||
- (unsigned int)nEntitySize > psSHP->nFileSize - psSHP->panRecOffset[hEntity] )
- {
- char str[128];
- snprintf( str, sizeof(str),
- "Error in fread() reading object of size %d at offset %u from .shp file",
- nEntitySize, psSHP->panRecOffset[hEntity] );
-
- psSHP->sHooks.Error( str );
- return NULL;
- }
- }
-
- pabyRecNew = (uchar *) SfRealloc(psSHP->pabyRec,nNewBufSize);
- if (pabyRecNew == NULL)
- {
- char szError[200];
-
- snprintf( szError, sizeof(szError),
- "Not enough memory to allocate requested memory (nNewBufSize=%d). "
- "Probably broken SHP file", nNewBufSize);
- psSHP->sHooks.Error( szError );
- return NULL;
- }
-
- /* Only set new buffer size after successful alloc */
- psSHP->pabyRec = pabyRecNew;
- psSHP->nBufSize = nNewBufSize;
- }
-
- /* In case we were not able to reallocate the buffer on a previous step */
- if (psSHP->pabyRec == NULL)
- {
- return NULL;
- }
-
-/* -------------------------------------------------------------------- */
-/* Read the record. */
-/* -------------------------------------------------------------------- */
- if( psSHP->sHooks.FSeek( psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0 ) != 0 )
- {
- /*
- * TODO - mloskot: Consider detailed diagnostics of shape file,
- * for example to detect if file is truncated.
- */
- char str[128];
- snprintf( str, sizeof(str),
- "Error in fseek() reading object from .shp file at offset %u",
- psSHP->panRecOffset[hEntity]);
-
- psSHP->sHooks.Error( str );
- return NULL;
- }
-
- nBytesRead = (int)psSHP->sHooks.FRead( psSHP->pabyRec, 1, nEntitySize, psSHP->fpSHP );
-
- /* Special case for a shapefile whose .shx content length field is not equal */
- /* to the content length field of the .shp, which is a violation of "The */
- /* content length stored in the index record is the same as the value stored in the main */
- /* file record header." (http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf, page 24) */
- /* Actually in that case the .shx content length is equal to the .shp content length + */
- /* 4 (16 bit words), representing the 8 bytes of the record header... */
- if( nBytesRead >= 8 && nBytesRead == nEntitySize - 8 )
- {
- /* Do a sanity check */
- int nSHPContentLength;
- memcpy( &nSHPContentLength, psSHP->pabyRec + 4, 4 );
- if( !bBigEndian ) SwapWord( 4, &(nSHPContentLength) );
- if( nSHPContentLength < 0 ||
- nSHPContentLength > INT_MAX / 2 - 4 ||
- 2 * nSHPContentLength + 8 != nBytesRead )
- {
- char str[128];
- snprintf( str, sizeof(str),
- "Sanity check failed when trying to recover from inconsistent .shx/.shp with shape %d",
- hEntity );
-
- psSHP->sHooks.Error( str );
- return NULL;
- }
- }
- else if( nBytesRead != nEntitySize )
- {
- /*
- * TODO - mloskot: Consider detailed diagnostics of shape file,
- * for example to detect if file is truncated.
- */
- char str[128];
- snprintf( str, sizeof(str),
- "Error in fread() reading object of size %d at offset %u from .shp file",
- nEntitySize, psSHP->panRecOffset[hEntity] );
-
- psSHP->sHooks.Error( str );
- return NULL;
- }
-
- if ( 8 + 4 > nEntitySize )
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Corrupted .shp file : shape %d : nEntitySize = %d",
- hEntity, nEntitySize);
- psSHP->sHooks.Error( szErrorMsg );
- return NULL;
- }
- memcpy( &nSHPType, psSHP->pabyRec + 8, 4 );
-
- if( bBigEndian ) SwapWord( 4, &(nSHPType) );
-
-/* -------------------------------------------------------------------- */
-/* Allocate and minimally initialize the object. */
-/* -------------------------------------------------------------------- */
- if( psSHP->bFastModeReadObject )
- {
- if( psSHP->psCachedObject->bFastModeReadObject )
- {
- psSHP->sHooks.Error( "Invalid read pattern in fast read mode. "
- "SHPDestroyObject() should be called." );
- return NULL;
- }
-
- psShape = psSHP->psCachedObject;
- memset(psShape, 0, sizeof(SHPObject));
- }
- else
- psShape = (SHPObject *) calloc(1,sizeof(SHPObject));
- psShape->nShapeId = hEntity;
- psShape->nSHPType = nSHPType;
- psShape->bMeasureIsUsed = FALSE;
- psShape->bFastModeReadObject = psSHP->bFastModeReadObject;
-
-/* ==================================================================== */
-/* Extract vertices for a Polygon or Arc. */
-/* ==================================================================== */
- if( psShape->nSHPType == SHPT_POLYGON || psShape->nSHPType == SHPT_ARC
- || psShape->nSHPType == SHPT_POLYGONZ
- || psShape->nSHPType == SHPT_POLYGONM
- || psShape->nSHPType == SHPT_ARCZ
- || psShape->nSHPType == SHPT_ARCM
- || psShape->nSHPType == SHPT_MULTIPATCH )
- {
- int32 nPoints, nParts;
- int i, nOffset;
- unsigned char* pBuffer = NULL;
- unsigned char** ppBuffer = NULL;
-
- if ( 40 + 8 + 4 > nEntitySize )
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Corrupted .shp file : shape %d : nEntitySize = %d",
- hEntity, nEntitySize);
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
-/* -------------------------------------------------------------------- */
-/* Get the X/Y bounds. */
-/* -------------------------------------------------------------------- */
- memcpy( &(psShape->dfXMin), psSHP->pabyRec + 8 + 4, 8 );
- memcpy( &(psShape->dfYMin), psSHP->pabyRec + 8 + 12, 8 );
- memcpy( &(psShape->dfXMax), psSHP->pabyRec + 8 + 20, 8 );
- memcpy( &(psShape->dfYMax), psSHP->pabyRec + 8 + 28, 8 );
-
- if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) );
- if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) );
- if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) );
- if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) );
-
-/* -------------------------------------------------------------------- */
-/* Extract part/point count, and build vertex and part arrays */
-/* to proper size. */
-/* -------------------------------------------------------------------- */
- memcpy( &nPoints, psSHP->pabyRec + 40 + 8, 4 );
- memcpy( &nParts, psSHP->pabyRec + 36 + 8, 4 );
-
- if( bBigEndian ) SwapWord( 4, &nPoints );
- if( bBigEndian ) SwapWord( 4, &nParts );
-
- /* nPoints and nParts are unsigned */
- if (/* nPoints < 0 || nParts < 0 || */
- nPoints > 50 * 1000 * 1000 || nParts > 10 * 1000 * 1000)
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Corrupted .shp file : shape %d, nPoints=%u, nParts=%u.",
- hEntity, nPoints, nParts);
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
-
- /* With the previous checks on nPoints and nParts, */
- /* we should not overflow here and after */
- /* since 50 M * (16 + 8 + 8) = 1 600 MB */
- nRequiredSize = 44 + 8 + 4 * nParts + 16 * nPoints;
- if ( psShape->nSHPType == SHPT_POLYGONZ
- || psShape->nSHPType == SHPT_ARCZ
- || psShape->nSHPType == SHPT_MULTIPATCH )
- {
- nRequiredSize += 16 + 8 * nPoints;
- }
- if( psShape->nSHPType == SHPT_MULTIPATCH )
- {
- nRequiredSize += 4 * nParts;
- }
- if (nRequiredSize > nEntitySize)
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Corrupted .shp file : shape %d, nPoints=%u, nParts=%u, nEntitySize=%d.",
- hEntity, nPoints, nParts, nEntitySize);
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
-
- if( psShape->bFastModeReadObject )
- {
- int nObjectBufSize = 4 * sizeof(double) * nPoints + 2 * sizeof(int) * nParts;
- pBuffer = SHPReallocObjectBufIfNecessary(psSHP, nObjectBufSize);
- ppBuffer = &pBuffer;
- }
-
- psShape->nVertices = nPoints;
- psShape->padfX = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints);
- psShape->padfY = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints);
- psShape->padfZ = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints);
- psShape->padfM = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints);
-
- psShape->nParts = nParts;
- psShape->panPartStart = (int *) SHPAllocBuffer(ppBuffer, nParts * sizeof(int));
- psShape->panPartType = (int *) SHPAllocBuffer(ppBuffer, nParts * sizeof(int));
-
- if (psShape->padfX == NULL ||
- psShape->padfY == NULL ||
- psShape->padfZ == NULL ||
- psShape->padfM == NULL ||
- psShape->panPartStart == NULL ||
- psShape->panPartType == NULL)
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Not enough memory to allocate requested memory (nPoints=%u, nParts=%u) for shape %d. "
- "Probably broken SHP file", nPoints, nParts, hEntity );
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
-
- for( i = 0; (int32)i < nParts; i++ )
- psShape->panPartType[i] = SHPP_RING;
-
-/* -------------------------------------------------------------------- */
-/* Copy out the part array from the record. */
-/* -------------------------------------------------------------------- */
- memcpy( psShape->panPartStart, psSHP->pabyRec + 44 + 8, 4 * nParts );
- for( i = 0; (int32)i < nParts; i++ )
- {
- if( bBigEndian ) SwapWord( 4, psShape->panPartStart+i );
-
- /* We check that the offset is inside the vertex array */
- if (psShape->panPartStart[i] < 0
- || (psShape->panPartStart[i] >= psShape->nVertices
- && psShape->nVertices > 0)
- || (psShape->panPartStart[i] > 0 && psShape->nVertices == 0) )
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Corrupted .shp file : shape %d : panPartStart[%d] = %d, nVertices = %d",
- hEntity, i, psShape->panPartStart[i], psShape->nVertices);
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
- if (i > 0 && psShape->panPartStart[i] <= psShape->panPartStart[i-1])
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Corrupted .shp file : shape %d : panPartStart[%d] = %d, panPartStart[%d] = %d",
- hEntity, i, psShape->panPartStart[i], i - 1, psShape->panPartStart[i - 1]);
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
- }
-
- nOffset = 44 + 8 + 4*nParts;
-
-/* -------------------------------------------------------------------- */
-/* If this is a multipatch, we will also have parts types. */
-/* -------------------------------------------------------------------- */
- if( psShape->nSHPType == SHPT_MULTIPATCH )
- {
- memcpy( psShape->panPartType, psSHP->pabyRec + nOffset, 4*nParts );
- for( i = 0; (int32)i < nParts; i++ )
- {
- if( bBigEndian ) SwapWord( 4, psShape->panPartType+i );
- }
-
- nOffset += 4*nParts;
- }
-
-/* -------------------------------------------------------------------- */
-/* Copy out the vertices from the record. */
-/* -------------------------------------------------------------------- */
- for( i = 0; (int32)i < nPoints; i++ )
- {
- memcpy(psShape->padfX + i,
- psSHP->pabyRec + nOffset + i * 16,
- 8 );
-
- memcpy(psShape->padfY + i,
- psSHP->pabyRec + nOffset + i * 16 + 8,
- 8 );
-
- if( bBigEndian ) SwapWord( 8, psShape->padfX + i );
- if( bBigEndian ) SwapWord( 8, psShape->padfY + i );
- }
-
- nOffset += 16*nPoints;
-
-/* -------------------------------------------------------------------- */
-/* If we have a Z coordinate, collect that now. */
-/* -------------------------------------------------------------------- */
- if( psShape->nSHPType == SHPT_POLYGONZ
- || psShape->nSHPType == SHPT_ARCZ
- || psShape->nSHPType == SHPT_MULTIPATCH )
- {
- memcpy( &(psShape->dfZMin), psSHP->pabyRec + nOffset, 8 );
- memcpy( &(psShape->dfZMax), psSHP->pabyRec + nOffset + 8, 8 );
-
- if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) );
- if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) );
-
- for( i = 0; (int32)i < nPoints; i++ )
- {
- memcpy( psShape->padfZ + i,
- psSHP->pabyRec + nOffset + 16 + i*8, 8 );
- if( bBigEndian ) SwapWord( 8, psShape->padfZ + i );
- }
-
- nOffset += 16 + 8*nPoints;
- }
- else if( psShape->bFastModeReadObject )
- {
- psShape->padfZ = NULL;
- }
-
-/* -------------------------------------------------------------------- */
-/* If we have a M measure value, then read it now. We assume */
-/* that the measure can be present for any shape if the size is */
-/* big enough, but really it will only occur for the Z shapes */
-/* (options), and the M shapes. */
-/* -------------------------------------------------------------------- */
- if( nEntitySize >= (int)(nOffset + 16 + 8*nPoints) )
- {
- memcpy( &(psShape->dfMMin), psSHP->pabyRec + nOffset, 8 );
- memcpy( &(psShape->dfMMax), psSHP->pabyRec + nOffset + 8, 8 );
-
- if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) );
- if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) );
-
- for( i = 0; (int32)i < nPoints; i++ )
- {
- memcpy( psShape->padfM + i,
- psSHP->pabyRec + nOffset + 16 + i*8, 8 );
- if( bBigEndian ) SwapWord( 8, psShape->padfM + i );
- }
- psShape->bMeasureIsUsed = TRUE;
- }
- else if( psShape->bFastModeReadObject )
- {
- psShape->padfM = NULL;
- }
- }
-
-/* ==================================================================== */
-/* Extract vertices for a MultiPoint. */
-/* ==================================================================== */
- else if( psShape->nSHPType == SHPT_MULTIPOINT
- || psShape->nSHPType == SHPT_MULTIPOINTM
- || psShape->nSHPType == SHPT_MULTIPOINTZ )
- {
- int32 nPoints;
- int i, nOffset;
- unsigned char* pBuffer = NULL;
- unsigned char** ppBuffer = NULL;
-
- if ( 44 + 4 > nEntitySize )
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Corrupted .shp file : shape %d : nEntitySize = %d",
- hEntity, nEntitySize);
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
- memcpy( &nPoints, psSHP->pabyRec + 44, 4 );
-
- if( bBigEndian ) SwapWord( 4, &nPoints );
-
- /* nPoints is unsigned */
- if (/* nPoints < 0 || */ nPoints > 50 * 1000 * 1000)
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Corrupted .shp file : shape %d : nPoints = %u",
- hEntity, nPoints);
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
-
- nRequiredSize = 48 + nPoints * 16;
- if( psShape->nSHPType == SHPT_MULTIPOINTZ )
- {
- nRequiredSize += 16 + nPoints * 8;
- }
- if (nRequiredSize > nEntitySize)
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Corrupted .shp file : shape %d : nPoints = %u, nEntitySize = %d",
- hEntity, nPoints, nEntitySize);
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
-
- if( psShape->bFastModeReadObject )
- {
- int nObjectBufSize = 4 * sizeof(double) * nPoints;
- pBuffer = SHPReallocObjectBufIfNecessary(psSHP, nObjectBufSize);
- ppBuffer = &pBuffer;
- }
-
- psShape->nVertices = nPoints;
-
- psShape->padfX = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints);
- psShape->padfY = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints);
- psShape->padfZ = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints);
- psShape->padfM = (double *) SHPAllocBuffer(ppBuffer, sizeof(double) * nPoints);
-
- if (psShape->padfX == NULL ||
- psShape->padfY == NULL ||
- psShape->padfZ == NULL ||
- psShape->padfM == NULL)
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Not enough memory to allocate requested memory (nPoints=%u) for shape %d. "
- "Probably broken SHP file", nPoints, hEntity );
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
-
- for( i = 0; (int32)i < nPoints; i++ )
- {
- memcpy(psShape->padfX+i, psSHP->pabyRec + 48 + 16 * i, 8 );
- memcpy(psShape->padfY+i, psSHP->pabyRec + 48 + 16 * i + 8, 8 );
-
- if( bBigEndian ) SwapWord( 8, psShape->padfX + i );
- if( bBigEndian ) SwapWord( 8, psShape->padfY + i );
- }
-
- nOffset = 48 + 16*nPoints;
-
-/* -------------------------------------------------------------------- */
-/* Get the X/Y bounds. */
-/* -------------------------------------------------------------------- */
- memcpy( &(psShape->dfXMin), psSHP->pabyRec + 8 + 4, 8 );
- memcpy( &(psShape->dfYMin), psSHP->pabyRec + 8 + 12, 8 );
- memcpy( &(psShape->dfXMax), psSHP->pabyRec + 8 + 20, 8 );
- memcpy( &(psShape->dfYMax), psSHP->pabyRec + 8 + 28, 8 );
-
- if( bBigEndian ) SwapWord( 8, &(psShape->dfXMin) );
- if( bBigEndian ) SwapWord( 8, &(psShape->dfYMin) );
- if( bBigEndian ) SwapWord( 8, &(psShape->dfXMax) );
- if( bBigEndian ) SwapWord( 8, &(psShape->dfYMax) );
-
-/* -------------------------------------------------------------------- */
-/* If we have a Z coordinate, collect that now. */
-/* -------------------------------------------------------------------- */
- if( psShape->nSHPType == SHPT_MULTIPOINTZ )
- {
- memcpy( &(psShape->dfZMin), psSHP->pabyRec + nOffset, 8 );
- memcpy( &(psShape->dfZMax), psSHP->pabyRec + nOffset + 8, 8 );
-
- if( bBigEndian ) SwapWord( 8, &(psShape->dfZMin) );
- if( bBigEndian ) SwapWord( 8, &(psShape->dfZMax) );
-
- for( i = 0; (int32)i < nPoints; i++ )
- {
- memcpy( psShape->padfZ + i,
- psSHP->pabyRec + nOffset + 16 + i*8, 8 );
- if( bBigEndian ) SwapWord( 8, psShape->padfZ + i );
- }
-
- nOffset += 16 + 8*nPoints;
- }
- else if( psShape->bFastModeReadObject )
- psShape->padfZ = NULL;
-
-/* -------------------------------------------------------------------- */
-/* If we have a M measure value, then read it now. We assume */
-/* that the measure can be present for any shape if the size is */
-/* big enough, but really it will only occur for the Z shapes */
-/* (options), and the M shapes. */
-/* -------------------------------------------------------------------- */
- if( nEntitySize >= (int)(nOffset + 16 + 8*nPoints) )
- {
- memcpy( &(psShape->dfMMin), psSHP->pabyRec + nOffset, 8 );
- memcpy( &(psShape->dfMMax), psSHP->pabyRec + nOffset + 8, 8 );
-
- if( bBigEndian ) SwapWord( 8, &(psShape->dfMMin) );
- if( bBigEndian ) SwapWord( 8, &(psShape->dfMMax) );
-
- for( i = 0; (int32)i < nPoints; i++ )
- {
- memcpy( psShape->padfM + i,
- psSHP->pabyRec + nOffset + 16 + i*8, 8 );
- if( bBigEndian ) SwapWord( 8, psShape->padfM + i );
- }
- psShape->bMeasureIsUsed = TRUE;
- }
- else if( psShape->bFastModeReadObject )
- psShape->padfM = NULL;
- }
-
-/* ==================================================================== */
-/* Extract vertices for a point. */
-/* ==================================================================== */
- else if( psShape->nSHPType == SHPT_POINT
- || psShape->nSHPType == SHPT_POINTM
- || psShape->nSHPType == SHPT_POINTZ )
- {
- int nOffset;
-
- psShape->nVertices = 1;
- if( psShape->bFastModeReadObject )
- {
- psShape->padfX = &(psShape->dfXMin);
- psShape->padfY = &(psShape->dfYMin);
- psShape->padfZ = &(psShape->dfZMin);
- psShape->padfM = &(psShape->dfMMin);
- psShape->padfZ[0] = 0.0;
- psShape->padfM[0] = 0.0;
- }
- else
- {
- psShape->padfX = (double *) calloc(1,sizeof(double));
- psShape->padfY = (double *) calloc(1,sizeof(double));
- psShape->padfZ = (double *) calloc(1,sizeof(double));
- psShape->padfM = (double *) calloc(1,sizeof(double));
- }
-
- if (20 + 8 + (( psShape->nSHPType == SHPT_POINTZ ) ? 8 : 0)> nEntitySize)
- {
- snprintf(szErrorMsg, sizeof(szErrorMsg),
- "Corrupted .shp file : shape %d : nEntitySize = %d",
- hEntity, nEntitySize);
- psSHP->sHooks.Error( szErrorMsg );
- SHPDestroyObject(psShape);
- return NULL;
- }
- memcpy( psShape->padfX, psSHP->pabyRec + 12, 8 );
- memcpy( psShape->padfY, psSHP->pabyRec + 20, 8 );
-
- if( bBigEndian ) SwapWord( 8, psShape->padfX );
- if( bBigEndian ) SwapWord( 8, psShape->padfY );
-
- nOffset = 20 + 8;
-
-/* -------------------------------------------------------------------- */
-/* If we have a Z coordinate, collect that now. */
-/* -------------------------------------------------------------------- */
- if( psShape->nSHPType == SHPT_POINTZ )
- {
- memcpy( psShape->padfZ, psSHP->pabyRec + nOffset, 8 );
-
- if( bBigEndian ) SwapWord( 8, psShape->padfZ );
-
- nOffset += 8;
- }
-
-/* -------------------------------------------------------------------- */
-/* If we have a M measure value, then read it now. We assume */
-/* that the measure can be present for any shape if the size is */
-/* big enough, but really it will only occur for the Z shapes */
-/* (options), and the M shapes. */
-/* -------------------------------------------------------------------- */
- if( nEntitySize >= nOffset + 8 )
- {
- memcpy( psShape->padfM, psSHP->pabyRec + nOffset, 8 );
-
- if( bBigEndian ) SwapWord( 8, psShape->padfM );
- psShape->bMeasureIsUsed = TRUE;
- }
-
-/* -------------------------------------------------------------------- */
-/* Since no extents are supplied in the record, we will apply */
-/* them from the single vertex. */
-/* -------------------------------------------------------------------- */
- psShape->dfXMin = psShape->dfXMax = psShape->padfX[0];
- psShape->dfYMin = psShape->dfYMax = psShape->padfY[0];
- psShape->dfZMin = psShape->dfZMax = psShape->padfZ[0];
- psShape->dfMMin = psShape->dfMMax = psShape->padfM[0];
- }
-
- return( psShape );
-}
-
-/************************************************************************/
-/* SHPTypeName() */
-/************************************************************************/
-
-const char SHPAPI_CALL1(*)
-SHPTypeName( int nSHPType )
-
-{
- switch( nSHPType )
- {
- case SHPT_NULL:
- return "NullShape";
-
- case SHPT_POINT:
- return "Point";
-
- case SHPT_ARC:
- return "Arc";
-
- case SHPT_POLYGON:
- return "Polygon";
-
- case SHPT_MULTIPOINT:
- return "MultiPoint";
-
- case SHPT_POINTZ:
- return "PointZ";
-
- case SHPT_ARCZ:
- return "ArcZ";
-
- case SHPT_POLYGONZ:
- return "PolygonZ";
-
- case SHPT_MULTIPOINTZ:
- return "MultiPointZ";
-
- case SHPT_POINTM:
- return "PointM";
-
- case SHPT_ARCM:
- return "ArcM";
-
- case SHPT_POLYGONM:
- return "PolygonM";
-
- case SHPT_MULTIPOINTM:
- return "MultiPointM";
-
- case SHPT_MULTIPATCH:
- return "MultiPatch";
-
- default:
- return "UnknownShapeType";
- }
-}
-
-/************************************************************************/
-/* SHPPartTypeName() */
-/************************************************************************/
-
-const char SHPAPI_CALL1(*)
-SHPPartTypeName( int nPartType )
-
-{
- switch( nPartType )
- {
- case SHPP_TRISTRIP:
- return "TriangleStrip";
-
- case SHPP_TRIFAN:
- return "TriangleFan";
-
- case SHPP_OUTERRING:
- return "OuterRing";
-
- case SHPP_INNERRING:
- return "InnerRing";
-
- case SHPP_FIRSTRING:
- return "FirstRing";
-
- case SHPP_RING:
- return "Ring";
-
- default:
- return "UnknownPartType";
- }
-}
-
-/************************************************************************/
-/* SHPDestroyObject() */
-/************************************************************************/
-
-void SHPAPI_CALL
-SHPDestroyObject( SHPObject * psShape )
-
-{
- if( psShape == NULL )
- return;
-
- if( psShape->bFastModeReadObject )
- {
- psShape->bFastModeReadObject = FALSE;
- return;
- }
-
- if( psShape->padfX != NULL )
- free( psShape->padfX );
- if( psShape->padfY != NULL )
- free( psShape->padfY );
- if( psShape->padfZ != NULL )
- free( psShape->padfZ );
- if( psShape->padfM != NULL )
- free( psShape->padfM );
-
- if( psShape->panPartStart != NULL )
- free( psShape->panPartStart );
- if( psShape->panPartType != NULL )
- free( psShape->panPartType );
-
- free( psShape );
-}
-
-/************************************************************************/
-/* SHPRewindObject() */
-/* */
-/* Reset the winding of polygon objects to adhere to the */
-/* specification. */
-/************************************************************************/
-
-int SHPAPI_CALL
-SHPRewindObject( CPL_UNUSED SHPHandle hSHP,
- SHPObject * psObject )
-{
- int iOpRing, bAltered = 0;
-
-/* -------------------------------------------------------------------- */
-/* Do nothing if this is not a polygon object. */
-/* -------------------------------------------------------------------- */
- if( psObject->nSHPType != SHPT_POLYGON
- && psObject->nSHPType != SHPT_POLYGONZ
- && psObject->nSHPType != SHPT_POLYGONM )
- return 0;
-
- if( psObject->nVertices == 0 || psObject->nParts == 0 )
- return 0;
-
-/* -------------------------------------------------------------------- */
-/* Process each of the rings. */
-/* -------------------------------------------------------------------- */
- for( iOpRing = 0; iOpRing < psObject->nParts; iOpRing++ )
- {
- int bInner, iVert, nVertCount, nVertStart, iCheckRing;
- double dfSum, dfTestX, dfTestY;
-
-/* -------------------------------------------------------------------- */
-/* Determine if this ring is an inner ring or an outer ring */
-/* relative to all the other rings. For now we assume the */
-/* first ring is outer and all others are inner, but eventually */
-/* we need to fix this to handle multiple island polygons and */
-/* unordered sets of rings. */
-/* */
-/* -------------------------------------------------------------------- */
-
- /* Use point in the middle of segment to avoid testing
- * common points of rings.
- */
- dfTestX = ( psObject->padfX[psObject->panPartStart[iOpRing]]
- + psObject->padfX[psObject->panPartStart[iOpRing] + 1] ) / 2;
- dfTestY = ( psObject->padfY[psObject->panPartStart[iOpRing]]
- + psObject->padfY[psObject->panPartStart[iOpRing] + 1] ) / 2;
-
- bInner = FALSE;
- for( iCheckRing = 0; iCheckRing < psObject->nParts; iCheckRing++ )
- {
- int iEdge;
-
- if( iCheckRing == iOpRing )
- continue;
-
- nVertStart = psObject->panPartStart[iCheckRing];
-
- if( iCheckRing == psObject->nParts-1 )
- nVertCount = psObject->nVertices
- - psObject->panPartStart[iCheckRing];
- else
- nVertCount = psObject->panPartStart[iCheckRing+1]
- - psObject->panPartStart[iCheckRing];
-
- for( iEdge = 0; iEdge < nVertCount; iEdge++ )
- {
- int iNext;
-
- if( iEdge < nVertCount-1 )
- iNext = iEdge+1;
- else
- iNext = 0;
-
- /* Rule #1:
- * Test whether the edge 'straddles' the horizontal ray from the test point (dfTestY,dfTestY)
- * The rule #1 also excludes edges colinear with the ray.
- */
- if ( ( psObject->padfY[iEdge+nVertStart] < dfTestY
- && dfTestY <= psObject->padfY[iNext+nVertStart] )
- || ( psObject->padfY[iNext+nVertStart] < dfTestY
- && dfTestY <= psObject->padfY[iEdge+nVertStart] ) )
- {
- /* Rule #2:
- * Test if edge-ray intersection is on the right from the test point (dfTestY,dfTestY)
- */
- double const intersect =
- ( psObject->padfX[iEdge+nVertStart]
- + ( dfTestY - psObject->padfY[iEdge+nVertStart] )
- / ( psObject->padfY[iNext+nVertStart] - psObject->padfY[iEdge+nVertStart] )
- * ( psObject->padfX[iNext+nVertStart] - psObject->padfX[iEdge+nVertStart] ) );
-
- if (intersect < dfTestX)
- {
- bInner = !bInner;
- }
- }
- }
- } /* for iCheckRing */
-
-/* -------------------------------------------------------------------- */
-/* Determine the current order of this ring so we will know if */
-/* it has to be reversed. */
-/* -------------------------------------------------------------------- */
- nVertStart = psObject->panPartStart[iOpRing];
-
- if( iOpRing == psObject->nParts-1 )
- nVertCount = psObject->nVertices - psObject->panPartStart[iOpRing];
- else
- nVertCount = psObject->panPartStart[iOpRing+1]
- - psObject->panPartStart[iOpRing];
-
- if (nVertCount < 2)
- continue;
-
- dfSum = psObject->padfX[nVertStart] * (psObject->padfY[nVertStart+1] - psObject->padfY[nVertStart+nVertCount-1]);
- for( iVert = nVertStart + 1; iVert < nVertStart+nVertCount-1; iVert++ )
- {
- dfSum += psObject->padfX[iVert] * (psObject->padfY[iVert+1] - psObject->padfY[iVert-1]);
- }
-
- dfSum += psObject->padfX[iVert] * (psObject->padfY[nVertStart] - psObject->padfY[iVert-1]);
-
-/* -------------------------------------------------------------------- */
-/* Reverse if necessary. */
-/* -------------------------------------------------------------------- */
- if( (dfSum < 0.0 && bInner) || (dfSum > 0.0 && !bInner) )
- {
- int i;
-
- bAltered++;
- for( i = 0; i < nVertCount/2; i++ )
- {
- double dfSaved;
-
- /* Swap X */
- dfSaved = psObject->padfX[nVertStart+i];
- psObject->padfX[nVertStart+i] =
- psObject->padfX[nVertStart+nVertCount-i-1];
- psObject->padfX[nVertStart+nVertCount-i-1] = dfSaved;
-
- /* Swap Y */
- dfSaved = psObject->padfY[nVertStart+i];
- psObject->padfY[nVertStart+i] =
- psObject->padfY[nVertStart+nVertCount-i-1];
- psObject->padfY[nVertStart+nVertCount-i-1] = dfSaved;
-
- /* Swap Z */
- if( psObject->padfZ )
- {
- dfSaved = psObject->padfZ[nVertStart+i];
- psObject->padfZ[nVertStart+i] =
- psObject->padfZ[nVertStart+nVertCount-i-1];
- psObject->padfZ[nVertStart+nVertCount-i-1] = dfSaved;
- }
-
- /* Swap M */
- if( psObject->padfM )
- {
- dfSaved = psObject->padfM[nVertStart+i];
- psObject->padfM[nVertStart+i] =
- psObject->padfM[nVertStart+nVertCount-i-1];
- psObject->padfM[nVertStart+nVertCount-i-1] = dfSaved;
- }
- }
- }
- }
-
- return bAltered;
-}
diff --git a/navit/support/shapefile/shptree.c b/navit/support/shapefile/shptree.c
deleted file mode 100644
index d81533c95..000000000
--- a/navit/support/shapefile/shptree.c
+++ /dev/null
@@ -1,1266 +0,0 @@
-/******************************************************************************
- * $Id: shptree.c,v 1.19 2016-12-05 12:44:06 erouault Exp $
- *
- * Project: Shapelib
- * Purpose: Implementation of quadtree building and searching functions.
- * Author: Frank Warmerdam, warmerdam@pobox.com
- *
- ******************************************************************************
- * Copyright (c) 1999, Frank Warmerdam
- * Copyright (c) 2012, Even Rouault <even dot rouault at mines-paris dot org>
- *
- * This software is available under the following "MIT Style" license,
- * or at the option of the licensee under the LGPL (see COPYING). This
- * option is discussed in more detail in shapelib.html.
- *
- * --
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- ******************************************************************************
- *
- * $Log: shptree.c,v $
- * Revision 1.19 2016-12-05 12:44:06 erouault
- * * Major overhaul of Makefile build system to use autoconf/automake.
- *
- * * Warning fixes in contrib/
- *
- * Revision 1.18 2016-12-04 15:30:15 erouault
- * * shpopen.c, dbfopen.c, shptree.c, shapefil.h: resync with
- * GDAL Shapefile driver. Mostly cleanups. SHPObject and DBFInfo
- * structures extended with new members. New functions:
- * DBFSetLastModifiedDate, SHPOpenLLEx, SHPRestoreSHX,
- * SHPSetFastModeReadObject
- *
- * * sbnsearch.c: new file to implement original ESRI .sbn spatial
- * index reading. (no write support). New functions:
- * SBNOpenDiskTree, SBNCloseDiskTree, SBNSearchDiskTree,
- * SBNSearchDiskTreeInteger, SBNSearchFreeIds
- *
- * * Makefile, makefile.vc, CMakeLists.txt, shapelib.def: updates
- * with new file and symbols.
- *
- * * commit: helper script to cvs commit
- *
- * Revision 1.17 2012-01-27 21:09:26 fwarmerdam
- * optimize .qix output (gdal #4472)
- *
- * Revision 1.16 2011-12-11 22:26:46 fwarmerdam
- * upgrade .qix access code to use SAHooks (gdal #3365)
- *
- * Revision 1.15 2011-07-24 05:59:25 fwarmerdam
- * minimize use of CPLError in favor of SAHooks.Error()
- *
- * Revision 1.14 2010-08-27 23:43:27 fwarmerdam
- * add SHPAPI_CALL attribute in code
- *
- * Revision 1.13 2010-06-29 05:50:15 fwarmerdam
- * fix sign of Z/M comparisons in SHPCheckObjectContained (#2223)
- *
- * Revision 1.12 2008-11-12 15:39:50 fwarmerdam
- * improve safety in face of buggy .shp file.
- *
- * Revision 1.11 2007/10/27 03:31:14 fwarmerdam
- * limit default depth of tree to 12 levels (gdal ticket #1594)
- *
- * Revision 1.10 2005/01/03 22:30:13 fwarmerdam
- * added support for saved quadtrees
- *
- * Revision 1.9 2003/01/28 15:53:41 warmerda
- * Avoid build warnings.
- *
- * Revision 1.8 2002/05/07 13:07:45 warmerda
- * use qsort() - patch from Bernhard Herzog
- *
- * Revision 1.7 2002/01/15 14:36:07 warmerda
- * updated email address
- *
- * Revision 1.6 2001/05/23 13:36:52 warmerda
- * added use of SHPAPI_CALL
- *
- * Revision 1.5 1999/11/05 14:12:05 warmerda
- * updated license terms
- *
- * Revision 1.4 1999/06/02 18:24:21 warmerda
- * added trimming code
- *
- * Revision 1.3 1999/06/02 17:56:12 warmerda
- * added quad'' subnode support for trees
- *
- * Revision 1.2 1999/05/18 19:11:11 warmerda
- * Added example searching capability
- *
- * Revision 1.1 1999/05/18 17:49:20 warmerda
- * New
- *
- */
-
-#include "shapefil.h"
-
-#include <math.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-
-#ifdef USE_CPL
-#include "cpl_error.h"
-#endif
-
-SHP_CVSID("$Id: shptree.c,v 1.19 2016-12-05 12:44:06 erouault Exp $")
-
-#ifndef TRUE
-# define TRUE 1
-# define FALSE 0
-#endif
-
-static int bBigEndian = 0;
-
-
-/* -------------------------------------------------------------------- */
-/* If the following is 0.5, nodes will be split in half. If it */
-/* is 0.6 then each subnode will contain 60% of the parent */
-/* node, with 20% representing overlap. This can be help to */
-/* prevent small objects on a boundary from shifting too high */
-/* up the tree. */
-/* -------------------------------------------------------------------- */
-
-#define SHP_SPLIT_RATIO 0.55
-
-/************************************************************************/
-/* SfRealloc() */
-/* */
-/* A realloc cover function that will access a NULL pointer as */
-/* a valid input. */
-/************************************************************************/
-
-static void * SfRealloc( void * pMem, int nNewSize )
-
-{
- if( pMem == NULL )
- return( (void *) malloc(nNewSize) );
- else
- return( (void *) realloc(pMem,nNewSize) );
-}
-
-/************************************************************************/
-/* SHPTreeNodeInit() */
-/* */
-/* Initialize a tree node. */
-/************************************************************************/
-
-static SHPTreeNode *SHPTreeNodeCreate( double * padfBoundsMin,
- double * padfBoundsMax )
-
-{
- SHPTreeNode *psTreeNode;
-
- psTreeNode = (SHPTreeNode *) malloc(sizeof(SHPTreeNode));
- if( NULL == psTreeNode )
- return NULL;
-
- psTreeNode->nShapeCount = 0;
- psTreeNode->panShapeIds = NULL;
- psTreeNode->papsShapeObj = NULL;
-
- psTreeNode->nSubNodes = 0;
-
- if( padfBoundsMin != NULL )
- memcpy( psTreeNode->adfBoundsMin, padfBoundsMin, sizeof(double) * 4 );
-
- if( padfBoundsMax != NULL )
- memcpy( psTreeNode->adfBoundsMax, padfBoundsMax, sizeof(double) * 4 );
-
- return psTreeNode;
-}
-
-
-/************************************************************************/
-/* SHPCreateTree() */
-/************************************************************************/
-
-SHPTree SHPAPI_CALL1(*)
- SHPCreateTree( SHPHandle hSHP, int nDimension, int nMaxDepth,
- double *padfBoundsMin, double *padfBoundsMax )
-
-{
- SHPTree *psTree;
-
- if( padfBoundsMin == NULL && hSHP == NULL )
- return NULL;
-
-/* -------------------------------------------------------------------- */
-/* Allocate the tree object */
-/* -------------------------------------------------------------------- */
- psTree = (SHPTree *) malloc(sizeof(SHPTree));
- if( NULL == psTree )
- {
- return NULL;
- }
-
- psTree->hSHP = hSHP;
- psTree->nMaxDepth = nMaxDepth;
- psTree->nDimension = nDimension;
- psTree->nTotalCount = 0;
-
-/* -------------------------------------------------------------------- */
-/* If no max depth was defined, try to select a reasonable one */
-/* that implies approximately 8 shapes per node. */
-/* -------------------------------------------------------------------- */
- if( psTree->nMaxDepth == 0 && hSHP != NULL )
- {
- int nMaxNodeCount = 1;
- int nShapeCount;
-
- SHPGetInfo( hSHP, &nShapeCount, NULL, NULL, NULL );
- while( nMaxNodeCount*4 < nShapeCount )
- {
- psTree->nMaxDepth += 1;
- nMaxNodeCount = nMaxNodeCount * 2;
- }
-
-#ifdef USE_CPL
- CPLDebug( "Shape",
- "Estimated spatial index tree depth: %d",
- psTree->nMaxDepth );
-#endif
-
- /* NOTE: Due to problems with memory allocation for deep trees,
- * automatically estimated depth is limited up to 12 levels.
- * See Ticket #1594 for detailed discussion.
- */
- if( psTree->nMaxDepth > MAX_DEFAULT_TREE_DEPTH )
- {
- psTree->nMaxDepth = MAX_DEFAULT_TREE_DEPTH;
-
-#ifdef USE_CPL
- CPLDebug( "Shape",
- "Falling back to max number of allowed index tree levels (%d).",
- MAX_DEFAULT_TREE_DEPTH );
-#endif
- }
- }
-
-/* -------------------------------------------------------------------- */
-/* Allocate the root node. */
-/* -------------------------------------------------------------------- */
- psTree->psRoot = SHPTreeNodeCreate( padfBoundsMin, padfBoundsMax );
- if( NULL == psTree->psRoot )
- {
- free( psTree );
- return NULL;
- }
-
-/* -------------------------------------------------------------------- */
-/* Assign the bounds to the root node. If none are passed in, */
-/* use the bounds of the provided file otherwise the create */
-/* function will have already set the bounds. */
-/* -------------------------------------------------------------------- */
- if( padfBoundsMin == NULL )
- {
- SHPGetInfo( hSHP, NULL, NULL,
- psTree->psRoot->adfBoundsMin,
- psTree->psRoot->adfBoundsMax );
- }
-
-/* -------------------------------------------------------------------- */
-/* If we have a file, insert all it's shapes into the tree. */
-/* -------------------------------------------------------------------- */
- if( hSHP != NULL )
- {
- int iShape, nShapeCount;
-
- SHPGetInfo( hSHP, &nShapeCount, NULL, NULL, NULL );
-
- for( iShape = 0; iShape < nShapeCount; iShape++ )
- {
- SHPObject *psShape;
-
- psShape = SHPReadObject( hSHP, iShape );
- if( psShape != NULL )
- {
- SHPTreeAddShapeId( psTree, psShape );
- SHPDestroyObject( psShape );
- }
- }
- }
-
- return psTree;
-}
-
-/************************************************************************/
-/* SHPDestroyTreeNode() */
-/************************************************************************/
-
-static void SHPDestroyTreeNode( SHPTreeNode * psTreeNode )
-
-{
- int i;
-
- assert( NULL != psTreeNode );
-
- for( i = 0; i < psTreeNode->nSubNodes; i++ )
- {
- if( psTreeNode->apsSubNode[i] != NULL )
- SHPDestroyTreeNode( psTreeNode->apsSubNode[i] );
- }
-
- if( psTreeNode->panShapeIds != NULL )
- free( psTreeNode->panShapeIds );
-
- if( psTreeNode->papsShapeObj != NULL )
- {
- for( i = 0; i < psTreeNode->nShapeCount; i++ )
- {
- if( psTreeNode->papsShapeObj[i] != NULL )
- SHPDestroyObject( psTreeNode->papsShapeObj[i] );
- }
-
- free( psTreeNode->papsShapeObj );
- }
-
- free( psTreeNode );
-}
-
-/************************************************************************/
-/* SHPDestroyTree() */
-/************************************************************************/
-
-void SHPAPI_CALL
-SHPDestroyTree( SHPTree * psTree )
-
-{
- SHPDestroyTreeNode( psTree->psRoot );
- free( psTree );
-}
-
-/************************************************************************/
-/* SHPCheckBoundsOverlap() */
-/* */
-/* Do the given boxes overlap at all? */
-/************************************************************************/
-
-int SHPAPI_CALL
-SHPCheckBoundsOverlap( double * padfBox1Min, double * padfBox1Max,
- double * padfBox2Min, double * padfBox2Max,
- int nDimension )
-
-{
- int iDim;
-
- for( iDim = 0; iDim < nDimension; iDim++ )
- {
- if( padfBox2Max[iDim] < padfBox1Min[iDim] )
- return FALSE;
-
- if( padfBox1Max[iDim] < padfBox2Min[iDim] )
- return FALSE;
- }
-
- return TRUE;
-}
-
-/************************************************************************/
-/* SHPCheckObjectContained() */
-/* */
-/* Does the given shape fit within the indicated extents? */
-/************************************************************************/
-
-static int SHPCheckObjectContained( SHPObject * psObject, int nDimension,
- double * padfBoundsMin, double * padfBoundsMax )
-
-{
- if( psObject->dfXMin < padfBoundsMin[0]
- || psObject->dfXMax > padfBoundsMax[0] )
- return FALSE;
-
- if( psObject->dfYMin < padfBoundsMin[1]
- || psObject->dfYMax > padfBoundsMax[1] )
- return FALSE;
-
- if( nDimension == 2 )
- return TRUE;
-
- if( psObject->dfZMin < padfBoundsMin[2]
- || psObject->dfZMax > padfBoundsMax[2] )
- return FALSE;
-
- if( nDimension == 3 )
- return TRUE;
-
- if( psObject->dfMMin < padfBoundsMin[3]
- || psObject->dfMMax > padfBoundsMax[3] )
- return FALSE;
-
- return TRUE;
-}
-
-/************************************************************************/
-/* SHPTreeSplitBounds() */
-/* */
-/* Split a region into two subregion evenly, cutting along the */
-/* longest dimension. */
-/************************************************************************/
-
-static void
-SHPTreeSplitBounds( double *padfBoundsMinIn, double *padfBoundsMaxIn,
- double *padfBoundsMin1, double * padfBoundsMax1,
- double *padfBoundsMin2, double * padfBoundsMax2 )
-
-{
-/* -------------------------------------------------------------------- */
-/* The output bounds will be very similar to the input bounds, */
-/* so just copy over to start. */
-/* -------------------------------------------------------------------- */
- memcpy( padfBoundsMin1, padfBoundsMinIn, sizeof(double) * 4 );
- memcpy( padfBoundsMax1, padfBoundsMaxIn, sizeof(double) * 4 );
- memcpy( padfBoundsMin2, padfBoundsMinIn, sizeof(double) * 4 );
- memcpy( padfBoundsMax2, padfBoundsMaxIn, sizeof(double) * 4 );
-
-/* -------------------------------------------------------------------- */
-/* Split in X direction. */
-/* -------------------------------------------------------------------- */
- if( (padfBoundsMaxIn[0] - padfBoundsMinIn[0])
- > (padfBoundsMaxIn[1] - padfBoundsMinIn[1]) )
- {
- double dfRange = padfBoundsMaxIn[0] - padfBoundsMinIn[0];
-
- padfBoundsMax1[0] = padfBoundsMinIn[0] + dfRange * SHP_SPLIT_RATIO;
- padfBoundsMin2[0] = padfBoundsMaxIn[0] - dfRange * SHP_SPLIT_RATIO;
- }
-
-/* -------------------------------------------------------------------- */
-/* Otherwise split in Y direction. */
-/* -------------------------------------------------------------------- */
- else
- {
- double dfRange = padfBoundsMaxIn[1] - padfBoundsMinIn[1];
-
- padfBoundsMax1[1] = padfBoundsMinIn[1] + dfRange * SHP_SPLIT_RATIO;
- padfBoundsMin2[1] = padfBoundsMaxIn[1] - dfRange * SHP_SPLIT_RATIO;
- }
-}
-
-/************************************************************************/
-/* SHPTreeNodeAddShapeId() */
-/************************************************************************/
-
-static int
-SHPTreeNodeAddShapeId( SHPTreeNode * psTreeNode, SHPObject * psObject,
- int nMaxDepth, int nDimension )
-
-{
- int i;
-
-/* -------------------------------------------------------------------- */
-/* If there are subnodes, then consider whether this object */
-/* will fit in them. */
-/* -------------------------------------------------------------------- */
- if( nMaxDepth > 1 && psTreeNode->nSubNodes > 0 )
- {
- for( i = 0; i < psTreeNode->nSubNodes; i++ )
- {
- if( SHPCheckObjectContained(psObject, nDimension,
- psTreeNode->apsSubNode[i]->adfBoundsMin,
- psTreeNode->apsSubNode[i]->adfBoundsMax))
- {
- return SHPTreeNodeAddShapeId( psTreeNode->apsSubNode[i],
- psObject, nMaxDepth-1,
- nDimension );
- }
- }
- }
-
-/* -------------------------------------------------------------------- */
-/* Otherwise, consider creating four subnodes if could fit into */
-/* them, and adding to the appropriate subnode. */
-/* -------------------------------------------------------------------- */
-#if MAX_SUBNODE == 4
- else if( nMaxDepth > 1 && psTreeNode->nSubNodes == 0 )
- {
- double adfBoundsMinH1[4], adfBoundsMaxH1[4];
- double adfBoundsMinH2[4], adfBoundsMaxH2[4];
- double adfBoundsMin1[4], adfBoundsMax1[4];
- double adfBoundsMin2[4], adfBoundsMax2[4];
- double adfBoundsMin3[4], adfBoundsMax3[4];
- double adfBoundsMin4[4], adfBoundsMax4[4];
-
- SHPTreeSplitBounds( psTreeNode->adfBoundsMin,
- psTreeNode->adfBoundsMax,
- adfBoundsMinH1, adfBoundsMaxH1,
- adfBoundsMinH2, adfBoundsMaxH2 );
-
- SHPTreeSplitBounds( adfBoundsMinH1, adfBoundsMaxH1,
- adfBoundsMin1, adfBoundsMax1,
- adfBoundsMin2, adfBoundsMax2 );
-
- SHPTreeSplitBounds( adfBoundsMinH2, adfBoundsMaxH2,
- adfBoundsMin3, adfBoundsMax3,
- adfBoundsMin4, adfBoundsMax4 );
-
- if( SHPCheckObjectContained(psObject, nDimension,
- adfBoundsMin1, adfBoundsMax1)
- || SHPCheckObjectContained(psObject, nDimension,
- adfBoundsMin2, adfBoundsMax2)
- || SHPCheckObjectContained(psObject, nDimension,
- adfBoundsMin3, adfBoundsMax3)
- || SHPCheckObjectContained(psObject, nDimension,
- adfBoundsMin4, adfBoundsMax4) )
- {
- psTreeNode->nSubNodes = 4;
- psTreeNode->apsSubNode[0] = SHPTreeNodeCreate( adfBoundsMin1,
- adfBoundsMax1 );
- psTreeNode->apsSubNode[1] = SHPTreeNodeCreate( adfBoundsMin2,
- adfBoundsMax2 );
- psTreeNode->apsSubNode[2] = SHPTreeNodeCreate( adfBoundsMin3,
- adfBoundsMax3 );
- psTreeNode->apsSubNode[3] = SHPTreeNodeCreate( adfBoundsMin4,
- adfBoundsMax4 );
-
- /* recurse back on this node now that it has subnodes */
- return( SHPTreeNodeAddShapeId( psTreeNode, psObject,
- nMaxDepth, nDimension ) );
- }
- }
-#endif /* MAX_SUBNODE == 4 */
-
-/* -------------------------------------------------------------------- */
-/* Otherwise, consider creating two subnodes if could fit into */
-/* them, and adding to the appropriate subnode. */
-/* -------------------------------------------------------------------- */
-#if MAX_SUBNODE == 2
- else if( nMaxDepth > 1 && psTreeNode->nSubNodes == 0 )
- {
- double adfBoundsMin1[4], adfBoundsMax1[4];
- double adfBoundsMin2[4], adfBoundsMax2[4];
-
- SHPTreeSplitBounds( psTreeNode->adfBoundsMin, psTreeNode->adfBoundsMax,
- adfBoundsMin1, adfBoundsMax1,
- adfBoundsMin2, adfBoundsMax2 );
-
- if( SHPCheckObjectContained(psObject, nDimension,
- adfBoundsMin1, adfBoundsMax1))
- {
- psTreeNode->nSubNodes = 2;
- psTreeNode->apsSubNode[0] = SHPTreeNodeCreate( adfBoundsMin1,
- adfBoundsMax1 );
- psTreeNode->apsSubNode[1] = SHPTreeNodeCreate( adfBoundsMin2,
- adfBoundsMax2 );
-
- return( SHPTreeNodeAddShapeId( psTreeNode->apsSubNode[0], psObject,
- nMaxDepth - 1, nDimension ) );
- }
- else if( SHPCheckObjectContained(psObject, nDimension,
- adfBoundsMin2, adfBoundsMax2) )
- {
- psTreeNode->nSubNodes = 2;
- psTreeNode->apsSubNode[0] = SHPTreeNodeCreate( adfBoundsMin1,
- adfBoundsMax1 );
- psTreeNode->apsSubNode[1] = SHPTreeNodeCreate( adfBoundsMin2,
- adfBoundsMax2 );
-
- return( SHPTreeNodeAddShapeId( psTreeNode->apsSubNode[1], psObject,
- nMaxDepth - 1, nDimension ) );
- }
- }
-#endif /* MAX_SUBNODE == 2 */
-
-/* -------------------------------------------------------------------- */
-/* If none of that worked, just add it to this nodes list. */
-/* -------------------------------------------------------------------- */
- psTreeNode->nShapeCount++;
-
- psTreeNode->panShapeIds = (int *)
- SfRealloc( psTreeNode->panShapeIds,
- sizeof(int) * psTreeNode->nShapeCount );
- psTreeNode->panShapeIds[psTreeNode->nShapeCount-1] = psObject->nShapeId;
-
- if( psTreeNode->papsShapeObj != NULL )
- {
- psTreeNode->papsShapeObj = (SHPObject **)
- SfRealloc( psTreeNode->papsShapeObj,
- sizeof(void *) * psTreeNode->nShapeCount );
- psTreeNode->papsShapeObj[psTreeNode->nShapeCount-1] = NULL;
- }
-
- return TRUE;
-}
-
-/************************************************************************/
-/* SHPTreeAddShapeId() */
-/* */
-/* Add a shape to the tree, but don't keep a pointer to the */
-/* object data, just keep the shapeid. */
-/************************************************************************/
-
-int SHPAPI_CALL
-SHPTreeAddShapeId( SHPTree * psTree, SHPObject * psObject )
-
-{
- psTree->nTotalCount++;
-
- return( SHPTreeNodeAddShapeId( psTree->psRoot, psObject,
- psTree->nMaxDepth, psTree->nDimension ) );
-}
-
-/************************************************************************/
-/* SHPTreeCollectShapesIds() */
-/* */
-/* Work function implementing SHPTreeFindLikelyShapes() on a */
-/* tree node by tree node basis. */
-/************************************************************************/
-
-static void
-SHPTreeCollectShapeIds( SHPTree *hTree, SHPTreeNode * psTreeNode,
- double * padfBoundsMin, double * padfBoundsMax,
- int * pnShapeCount, int * pnMaxShapes,
- int ** ppanShapeList )
-
-{
- int i;
-
-/* -------------------------------------------------------------------- */
-/* Does this node overlap the area of interest at all? If not, */
-/* return without adding to the list at all. */
-/* -------------------------------------------------------------------- */
- if( !SHPCheckBoundsOverlap( psTreeNode->adfBoundsMin,
- psTreeNode->adfBoundsMax,
- padfBoundsMin,
- padfBoundsMax,
- hTree->nDimension ) )
- return;
-
-/* -------------------------------------------------------------------- */
-/* Grow the list to hold the shapes on this node. */
-/* -------------------------------------------------------------------- */
- if( *pnShapeCount + psTreeNode->nShapeCount > *pnMaxShapes )
- {
- *pnMaxShapes = (*pnShapeCount + psTreeNode->nShapeCount) * 2 + 20;
- *ppanShapeList = (int *)
- SfRealloc(*ppanShapeList,sizeof(int) * *pnMaxShapes);
- }
-
-/* -------------------------------------------------------------------- */
-/* Add the local nodes shapeids to the list. */
-/* -------------------------------------------------------------------- */
- for( i = 0; i < psTreeNode->nShapeCount; i++ )
- {
- (*ppanShapeList)[(*pnShapeCount)++] = psTreeNode->panShapeIds[i];
- }
-
-/* -------------------------------------------------------------------- */
-/* Recurse to subnodes if they exist. */
-/* -------------------------------------------------------------------- */
- for( i = 0; i < psTreeNode->nSubNodes; i++ )
- {
- if( psTreeNode->apsSubNode[i] != NULL )
- SHPTreeCollectShapeIds( hTree, psTreeNode->apsSubNode[i],
- padfBoundsMin, padfBoundsMax,
- pnShapeCount, pnMaxShapes,
- ppanShapeList );
- }
-}
-
-/************************************************************************/
-/* SHPTreeFindLikelyShapes() */
-/* */
-/* Find all shapes within tree nodes for which the tree node */
-/* bounding box overlaps the search box. The return value is */
-/* an array of shapeids terminated by a -1. The shapeids will */
-/* be in order, as hopefully this will result in faster (more */
-/* sequential) reading from the file. */
-/************************************************************************/
-
-/* helper for qsort */
-static int
-compare_ints( const void * a, const void * b)
-{
- return (*(int*)a) - (*(int*)b);
-}
-
-int SHPAPI_CALL1(*)
-SHPTreeFindLikelyShapes( SHPTree * hTree,
- double * padfBoundsMin, double * padfBoundsMax,
- int * pnShapeCount )
-
-{
- int *panShapeList=NULL, nMaxShapes = 0;
-
-/* -------------------------------------------------------------------- */
-/* Perform the search by recursive descent. */
-/* -------------------------------------------------------------------- */
- *pnShapeCount = 0;
-
- SHPTreeCollectShapeIds( hTree, hTree->psRoot,
- padfBoundsMin, padfBoundsMax,
- pnShapeCount, &nMaxShapes,
- &panShapeList );
-
-/* -------------------------------------------------------------------- */
-/* Sort the id array */
-/* -------------------------------------------------------------------- */
-
- if( panShapeList != NULL )
- qsort(panShapeList, *pnShapeCount, sizeof(int), compare_ints);
-
- return panShapeList;
-}
-
-/************************************************************************/
-/* SHPTreeNodeTrim() */
-/* */
-/* This is the recursive version of SHPTreeTrimExtraNodes() that */
-/* walks the tree cleaning it up. */
-/************************************************************************/
-
-static int SHPTreeNodeTrim( SHPTreeNode * psTreeNode )
-
-{
- int i;
-
-/* -------------------------------------------------------------------- */
-/* Trim subtrees, and free subnodes that come back empty. */
-/* -------------------------------------------------------------------- */
- for( i = 0; i < psTreeNode->nSubNodes; i++ )
- {
- if( SHPTreeNodeTrim( psTreeNode->apsSubNode[i] ) )
- {
- SHPDestroyTreeNode( psTreeNode->apsSubNode[i] );
-
- psTreeNode->apsSubNode[i] =
- psTreeNode->apsSubNode[psTreeNode->nSubNodes-1];
-
- psTreeNode->nSubNodes--;
-
- i--; /* process the new occupant of this subnode entry */
- }
- }
-
-/* -------------------------------------------------------------------- */
-/* If the current node has 1 subnode and no shapes, promote that */
-/* subnode to the current node position. */
-/* -------------------------------------------------------------------- */
- if( psTreeNode->nSubNodes == 1 && psTreeNode->nShapeCount == 0)
- {
- SHPTreeNode* psSubNode = psTreeNode->apsSubNode[0];
-
- memcpy(psTreeNode->adfBoundsMin, psSubNode->adfBoundsMin,
- sizeof(psSubNode->adfBoundsMin));
- memcpy(psTreeNode->adfBoundsMax, psSubNode->adfBoundsMax,
- sizeof(psSubNode->adfBoundsMax));
- psTreeNode->nShapeCount = psSubNode->nShapeCount;
- assert(psTreeNode->panShapeIds == NULL);
- psTreeNode->panShapeIds = psSubNode->panShapeIds;
- assert(psTreeNode->papsShapeObj == NULL);
- psTreeNode->papsShapeObj = psSubNode->papsShapeObj;
- psTreeNode->nSubNodes = psSubNode->nSubNodes;
- for( i = 0; i < psSubNode->nSubNodes; i++ )
- psTreeNode->apsSubNode[i] = psSubNode->apsSubNode[i];
- free(psSubNode);
- }
-
-/* -------------------------------------------------------------------- */
-/* We should be trimmed if we have no subnodes, and no shapes. */
-/* -------------------------------------------------------------------- */
- return( psTreeNode->nSubNodes == 0 && psTreeNode->nShapeCount == 0 );
-}
-
-/************************************************************************/
-/* SHPTreeTrimExtraNodes() */
-/* */
-/* Trim empty nodes from the tree. Note that we never trim an */
-/* empty root node. */
-/************************************************************************/
-
-void SHPAPI_CALL
-SHPTreeTrimExtraNodes( SHPTree * hTree )
-
-{
- SHPTreeNodeTrim( hTree->psRoot );
-}
-
-/************************************************************************/
-/* SwapWord() */
-/* */
-/* Swap a 2, 4 or 8 byte word. */
-/************************************************************************/
-
-static void SwapWord( int length, void * wordP )
-
-{
- int i;
- unsigned char temp;
-
- for( i=0; i < length/2; i++ )
- {
- temp = ((unsigned char *) wordP)[i];
- ((unsigned char *)wordP)[i] = ((unsigned char *) wordP)[length-i-1];
- ((unsigned char *) wordP)[length-i-1] = temp;
- }
-}
-
-
-struct SHPDiskTreeInfo
-{
- SAHooks sHooks;
- SAFile fpQIX;
-};
-
-/************************************************************************/
-/* SHPOpenDiskTree() */
-/************************************************************************/
-
-SHPTreeDiskHandle SHPOpenDiskTree( const char* pszQIXFilename,
- SAHooks *psHooks )
-{
- SHPTreeDiskHandle hDiskTree;
-
- hDiskTree = (SHPTreeDiskHandle) calloc(sizeof(struct SHPDiskTreeInfo),1);
-
- if (psHooks == NULL)
- SASetupDefaultHooks( &(hDiskTree->sHooks) );
- else
- memcpy( &(hDiskTree->sHooks), psHooks, sizeof(SAHooks) );
-
- hDiskTree->fpQIX = hDiskTree->sHooks.FOpen(pszQIXFilename, "rb");
- if (hDiskTree->fpQIX == NULL)
- {
- free(hDiskTree);
- return NULL;
- }
-
- return hDiskTree;
-}
-
-/***********************************************************************/
-/* SHPCloseDiskTree() */
-/************************************************************************/
-
-void SHPCloseDiskTree( SHPTreeDiskHandle hDiskTree )
-{
- if (hDiskTree == NULL)
- return;
-
- hDiskTree->sHooks.FClose(hDiskTree->fpQIX);
- free(hDiskTree);
-}
-
-/************************************************************************/
-/* SHPSearchDiskTreeNode() */
-/************************************************************************/
-
-static int
-SHPSearchDiskTreeNode( SHPTreeDiskHandle hDiskTree, double *padfBoundsMin, double *padfBoundsMax,
- int **ppanResultBuffer, int *pnBufferMax,
- int *pnResultCount, int bNeedSwap, int nRecLevel )
-
-{
- unsigned int i;
- unsigned int offset;
- unsigned int numshapes, numsubnodes;
- double adfNodeBoundsMin[2], adfNodeBoundsMax[2];
- int nFReadAcc;
-
-/* -------------------------------------------------------------------- */
-/* Read and unswap first part of node info. */
-/* -------------------------------------------------------------------- */
- nFReadAcc = (int)hDiskTree->sHooks.FRead( &offset, 4, 1, hDiskTree->fpQIX );
- if ( bNeedSwap ) SwapWord ( 4, &offset );
-
- nFReadAcc += (int)hDiskTree->sHooks.FRead( adfNodeBoundsMin, sizeof(double), 2, hDiskTree->fpQIX );
- nFReadAcc += (int)hDiskTree->sHooks.FRead( adfNodeBoundsMax, sizeof(double), 2, hDiskTree->fpQIX );
- if ( bNeedSwap )
- {
- SwapWord( 8, adfNodeBoundsMin + 0 );
- SwapWord( 8, adfNodeBoundsMin + 1 );
- SwapWord( 8, adfNodeBoundsMax + 0 );
- SwapWord( 8, adfNodeBoundsMax + 1 );
- }
-
- nFReadAcc += (int)hDiskTree->sHooks.FRead( &numshapes, 4, 1, hDiskTree->fpQIX );
- if ( bNeedSwap ) SwapWord ( 4, &numshapes );
-
- /* Check that we could read all previous values */
- if( nFReadAcc != 1 + 2 + 2 + 1 )
- {
- hDiskTree->sHooks.Error("I/O error");
- return FALSE;
- }
-
- /* Sanity checks to avoid int overflows in later computation */
- if( offset > INT_MAX - sizeof(int) )
- {
- hDiskTree->sHooks.Error("Invalid value for offset");
- return FALSE;
- }
-
- if( numshapes > (INT_MAX - offset - sizeof(int)) / sizeof(int) ||
- numshapes > INT_MAX / sizeof(int) - *pnResultCount )
- {
- hDiskTree->sHooks.Error("Invalid value for numshapes");
- return FALSE;
- }
-
-/* -------------------------------------------------------------------- */
-/* If we don't overlap this node at all, we can just fseek() */
-/* pass this node info and all subnodes. */
-/* -------------------------------------------------------------------- */
- if( !SHPCheckBoundsOverlap( adfNodeBoundsMin, adfNodeBoundsMax,
- padfBoundsMin, padfBoundsMax, 2 ) )
- {
- offset += numshapes*sizeof(int) + sizeof(int);
- hDiskTree->sHooks.FSeek(hDiskTree->fpQIX, offset, SEEK_CUR);
- return TRUE;
- }
-
-/* -------------------------------------------------------------------- */
-/* Add all the shapeids at this node to our list. */
-/* -------------------------------------------------------------------- */
- if(numshapes > 0)
- {
- if( *pnResultCount + numshapes > (unsigned int)*pnBufferMax )
- {
- int* pNewBuffer;
-
- *pnBufferMax = (*pnResultCount + numshapes + 100) * 5 / 4;
-
- if( (size_t)*pnBufferMax > INT_MAX / sizeof(int) )
- *pnBufferMax = *pnResultCount + numshapes;
-
- pNewBuffer = (int *)
- SfRealloc( *ppanResultBuffer, *pnBufferMax * sizeof(int) );
-
- if( pNewBuffer == NULL )
- {
- hDiskTree->sHooks.Error("Out of memory error");
- return FALSE;
- }
-
- *ppanResultBuffer = pNewBuffer;
- }
-
- if( hDiskTree->sHooks.FRead( *ppanResultBuffer + *pnResultCount,
- sizeof(int), numshapes, hDiskTree->fpQIX ) != numshapes )
- {
- hDiskTree->sHooks.Error("I/O error");
- return FALSE;
- }
-
- if (bNeedSwap )
- {
- for( i=0; i<numshapes; i++ )
- SwapWord( 4, *ppanResultBuffer + *pnResultCount + i );
- }
-
- *pnResultCount += numshapes;
- }
-
-/* -------------------------------------------------------------------- */
-/* Process the subnodes. */
-/* -------------------------------------------------------------------- */
- if( hDiskTree->sHooks.FRead( &numsubnodes, 4, 1, hDiskTree->fpQIX ) != 1 )
- {
- hDiskTree->sHooks.Error("I/O error");
- return FALSE;
- }
- if ( bNeedSwap ) SwapWord ( 4, &numsubnodes );
- if( numsubnodes > 0 && nRecLevel == 32 )
- {
- hDiskTree->sHooks.Error("Shape tree is too deep");
- return FALSE;
- }
-
- for(i=0; i<numsubnodes; i++)
- {
- if( !SHPSearchDiskTreeNode( hDiskTree, padfBoundsMin, padfBoundsMax,
- ppanResultBuffer, pnBufferMax,
- pnResultCount, bNeedSwap, nRecLevel + 1 ) )
- return FALSE;
- }
-
- return TRUE;
-}
-
-/************************************************************************/
-/* SHPTreeReadLibc() */
-/************************************************************************/
-
-static
-SAOffset SHPTreeReadLibc( void *p, SAOffset size, SAOffset nmemb, SAFile file )
-
-{
- return (SAOffset) fread( p, (size_t) size, (size_t) nmemb,
- (FILE *) file );
-}
-
-/************************************************************************/
-/* SHPTreeSeekLibc() */
-/************************************************************************/
-
-static
-SAOffset SHPTreeSeekLibc( SAFile file, SAOffset offset, int whence )
-
-{
- return (SAOffset) fseek( (FILE *) file, (long) offset, whence );
-}
-
-/************************************************************************/
-/* SHPSearchDiskTree() */
-/************************************************************************/
-
-int SHPAPI_CALL1(*)
-SHPSearchDiskTree( FILE *fp,
- double *padfBoundsMin, double *padfBoundsMax,
- int *pnShapeCount )
-{
- struct SHPDiskTreeInfo sDiskTree;
- memset(&sDiskTree.sHooks, 0, sizeof(sDiskTree.sHooks));
-
- /* We do not use SASetupDefaultHooks() because the FILE* */
- /* is a libc FILE* */
- sDiskTree.sHooks.FSeek = SHPTreeSeekLibc;
- sDiskTree.sHooks.FRead = SHPTreeReadLibc;
-
- sDiskTree.fpQIX = (SAFile)fp;
-
- return SHPSearchDiskTreeEx( &sDiskTree, padfBoundsMin, padfBoundsMax,
- pnShapeCount );
-}
-
-/***********************************************************************/
-/* SHPSearchDiskTreeEx() */
-/************************************************************************/
-
-int* SHPSearchDiskTreeEx( SHPTreeDiskHandle hDiskTree,
- double *padfBoundsMin, double *padfBoundsMax,
- int *pnShapeCount )
-
-{
- int i, bNeedSwap, nBufferMax = 0;
- unsigned char abyBuf[16];
- int *panResultBuffer = NULL;
-
- *pnShapeCount = 0;
-
-/* -------------------------------------------------------------------- */
-/* Establish the byte order on this machine. */
-/* -------------------------------------------------------------------- */
- i = 1;
- if( *((unsigned char *) &i) == 1 )
- bBigEndian = FALSE;
- else
- bBigEndian = TRUE;
-
-/* -------------------------------------------------------------------- */
-/* Read the header. */
-/* -------------------------------------------------------------------- */
- hDiskTree->sHooks.FSeek( hDiskTree->fpQIX, 0, SEEK_SET );
- hDiskTree->sHooks.FRead( abyBuf, 16, 1, hDiskTree->fpQIX );
-
- if( memcmp( abyBuf, "SQT", 3 ) != 0 )
- return NULL;
-
- if( (abyBuf[3] == 2 && bBigEndian)
- || (abyBuf[3] == 1 && !bBigEndian) )
- bNeedSwap = FALSE;
- else
- bNeedSwap = TRUE;
-
-/* -------------------------------------------------------------------- */
-/* Search through root node and it's descendants. */
-/* -------------------------------------------------------------------- */
- if( !SHPSearchDiskTreeNode( hDiskTree, padfBoundsMin, padfBoundsMax,
- &panResultBuffer, &nBufferMax,
- pnShapeCount, bNeedSwap, 0 ) )
- {
- if( panResultBuffer != NULL )
- free( panResultBuffer );
- *pnShapeCount = 0;
- return NULL;
- }
-/* -------------------------------------------------------------------- */
-/* Sort the id array */
-/* -------------------------------------------------------------------- */
-
- /* To distinguish between empty intersection from error case */
- if( panResultBuffer == NULL )
- panResultBuffer = (int*) calloc(1, sizeof(int));
- else
- qsort(panResultBuffer, *pnShapeCount, sizeof(int), compare_ints);
-
-
- return panResultBuffer;
-}
-
-/************************************************************************/
-/* SHPGetSubNodeOffset() */
-/* */
-/* Determine how big all the subnodes of this node (and their */
-/* children) will be. This will allow disk based searchers to */
-/* seek past them all efficiently. */
-/************************************************************************/
-
-static int SHPGetSubNodeOffset( SHPTreeNode *node)
-{
- int i;
- int offset=0;
-
- for(i=0; i<node->nSubNodes; i++ )
- {
- if(node->apsSubNode[i])
- {
- offset += 4*sizeof(double)
- + (node->apsSubNode[i]->nShapeCount+3)*sizeof(int);
- offset += SHPGetSubNodeOffset(node->apsSubNode[i]);
- }
- }
-
- return(offset);
-}
-
-/************************************************************************/
-/* SHPWriteTreeNode() */
-/************************************************************************/
-
-static void SHPWriteTreeNode( SAFile fp, SHPTreeNode *node, SAHooks* psHooks)
-{
- int i,j;
- int offset;
- unsigned char *pabyRec = NULL;
- assert( NULL != node );
-
- offset = SHPGetSubNodeOffset(node);
-
- pabyRec = (unsigned char *)
- malloc(sizeof(double) * 4
- + (3 * sizeof(int)) + (node->nShapeCount * sizeof(int)) );
- if( NULL == pabyRec )
- {
-#ifdef USE_CPL
- CPLError( CE_Fatal, CPLE_OutOfMemory, "Memory allocation failure");
-#endif
- assert( 0 );
- return;
- }
-
- memcpy( pabyRec, &offset, 4);
-
- /* minx, miny, maxx, maxy */
- memcpy( pabyRec+ 4, node->adfBoundsMin+0, sizeof(double) );
- memcpy( pabyRec+12, node->adfBoundsMin+1, sizeof(double) );
- memcpy( pabyRec+20, node->adfBoundsMax+0, sizeof(double) );
- memcpy( pabyRec+28, node->adfBoundsMax+1, sizeof(double) );
-
- memcpy( pabyRec+36, &node->nShapeCount, 4);
- j = node->nShapeCount * sizeof(int);
- if( j )
- memcpy( pabyRec+40, node->panShapeIds, j);
- memcpy( pabyRec+j+40, &node->nSubNodes, 4);
-
- psHooks->FWrite( pabyRec, 44+j, 1, fp );
- free (pabyRec);
-
- for(i=0; i<node->nSubNodes; i++ )
- {
- if(node->apsSubNode[i])
- SHPWriteTreeNode( fp, node->apsSubNode[i], psHooks);
- }
-}
-
-/************************************************************************/
-/* SHPWriteTree() */
-/************************************************************************/
-
-int SHPAPI_CALL SHPWriteTree(SHPTree *tree, const char *filename )
-{
- SAHooks sHooks;
-
- SASetupDefaultHooks( &sHooks );
-
- return SHPWriteTreeLL(tree, filename, &sHooks);
-}
-
-/************************************************************************/
-/* SHPWriteTreeLL() */
-/************************************************************************/
-
-int SHPWriteTreeLL(SHPTree *tree, const char *filename, SAHooks* psHooks )
-{
- char signature[4] = "SQT";
- int i;
- char abyBuf[32];
- SAFile fp;
-
- SAHooks sHooks;
- if (psHooks == NULL)
- {
- SASetupDefaultHooks( &sHooks );
- psHooks = &sHooks;
- }
-
-/* -------------------------------------------------------------------- */
-/* Open the output file. */
-/* -------------------------------------------------------------------- */
- fp = psHooks->FOpen(filename, "wb");
- if( fp == NULL )
- {
- return FALSE;
- }
-
-/* -------------------------------------------------------------------- */
-/* Establish the byte order on this machine. */
-/* -------------------------------------------------------------------- */
- i = 1;
- if( *((unsigned char *) &i) == 1 )
- bBigEndian = FALSE;
- else
- bBigEndian = TRUE;
-
-/* -------------------------------------------------------------------- */
-/* Write the header. */
-/* -------------------------------------------------------------------- */
- memcpy( abyBuf+0, signature, 3 );
-
- if( bBigEndian )
- abyBuf[3] = 2; /* New MSB */
- else
- abyBuf[3] = 1; /* New LSB */
-
- abyBuf[4] = 1; /* version */
- abyBuf[5] = 0; /* next 3 reserved */
- abyBuf[6] = 0;
- abyBuf[7] = 0;
-
- psHooks->FWrite( abyBuf, 8, 1, fp );
-
- psHooks->FWrite( &(tree->nTotalCount), 4, 1, fp );
-
- /* write maxdepth */
-
- psHooks->FWrite( &(tree->nMaxDepth), 4, 1, fp );
-
-/* -------------------------------------------------------------------- */
-/* Write all the nodes "in order". */
-/* -------------------------------------------------------------------- */
-
- SHPWriteTreeNode( fp, tree->psRoot, psHooks );
-
- psHooks->FClose( fp );
-
- return TRUE;
-}
diff --git a/navit/support/win32/CMakeLists.txt b/navit/support/win32/CMakeLists.txt
deleted file mode 100644
index 244084762..000000000
--- a/navit/support/win32/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-supportlib_add_library(support_win32 mmap.c win32_init.c ConvertUTF.c serial_io.c addwinsock.c)
-
diff --git a/navit/support/win32/ConvertUTF.c b/navit/support/win32/ConvertUTF.c
deleted file mode 100644
index 9b3deebd6..000000000
--- a/navit/support/win32/ConvertUTF.c
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
- * Copyright 2001-2004 Unicode, Inc.
- *
- * Disclaimer
- *
- * This source code is provided as is by Unicode, Inc. No claims are
- * made as to fitness for any particular purpose. No warranties of any
- * kind are expressed or implied. The recipient agrees to determine
- * applicability of information provided. If this file has been
- * purchased on magnetic or optical media from Unicode, Inc., the
- * sole remedy for any claim will be exchange of defective media
- * within 90 days of receipt.
- *
- * Limitations on Rights to Redistribute This Code
- *
- * Unicode, Inc. hereby grants the right to freely use the information
- * supplied in this file in the creation of products supporting the
- * Unicode Standard, and to make copies of this file in any form
- * for internal or external distribution as long as this notice
- * remains attached.
- */
-
-/* ---------------------------------------------------------------------
-
- Conversions between UTF32, UTF-16, and UTF-8. Source code file.
- Author: Mark E. Davis, 1994.
- Rev History: Rick McGowan, fixes & updates May 2001.
- Sept 2001: fixed const & error conditions per
- mods suggested by S. Parent & A. Lillich.
- June 2002: Tim Dodd added detection and handling of incomplete
- source sequences, enhanced error detection, added casts
- to eliminate compiler warnings.
- July 2003: slight mods to back out aggressive FFFE detection.
- Jan 2004: updated switches in from-UTF8 conversions.
- Oct 2004: updated to use UNI_MAX_LEGAL_UTF32 in UTF-32 conversions.
-
- See the header file "ConvertUTF.h" for complete documentation.
-
------------------------------------------------------------------------- */
-
-
-#include "ConvertUTF.h"
-#ifdef CVTUTF_DEBUG
-#include <stdio.h>
-#endif
-
-static const int halfShift = 10; /* used for shifting by 10 bits */
-
-static const UTF32 halfBase = 0x0010000UL;
-static const UTF32 halfMask = 0x3FFUL;
-
-#define UNI_SUR_HIGH_START (UTF32)0xD800
-#define UNI_SUR_HIGH_END (UTF32)0xDBFF
-#define UNI_SUR_LOW_START (UTF32)0xDC00
-#define UNI_SUR_LOW_END (UTF32)0xDFFF
-#define false 0
-#define true 1
-
-/* --------------------------------------------------------------------- */
-
-ConversionResult ConvertUTF32toUTF16 (
- const UTF32** sourceStart, const UTF32* sourceEnd,
- UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) {
- ConversionResult result = conversionOK;
- const UTF32* source = *sourceStart;
- UTF16* target = *targetStart;
- while (source < sourceEnd) {
- UTF32 ch;
- if (target >= targetEnd) {
- result = targetExhausted; break;
- }
- ch = *source++;
- if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */
- /* UTF-16 surrogate values are illegal in UTF-32; 0xffff or 0xfffe are both reserved values */
- if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
- if (flags == strictConversion) {
- --source; /* return to the illegal value itself */
- result = sourceIllegal;
- break;
- } else {
- *target++ = UNI_REPLACEMENT_CHAR;
- }
- } else {
- *target++ = (UTF16)ch; /* normal case */
- }
- } else if (ch > UNI_MAX_LEGAL_UTF32) {
- if (flags == strictConversion) {
- result = sourceIllegal;
- } else {
- *target++ = UNI_REPLACEMENT_CHAR;
- }
- } else {
- /* target is a character in range 0xFFFF - 0x10FFFF. */
- if (target + 1 >= targetEnd) {
- --source; /* Back up source pointer! */
- result = targetExhausted; break;
- }
- ch -= halfBase;
- *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START);
- *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START);
- }
- }
- *sourceStart = source;
- *targetStart = target;
- return result;
-}
-
-/* --------------------------------------------------------------------- */
-
-ConversionResult ConvertUTF16toUTF32 (
- const UTF16** sourceStart, const UTF16* sourceEnd,
- UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) {
- ConversionResult result = conversionOK;
- const UTF16* source = *sourceStart;
- UTF32* target = *targetStart;
- UTF32 ch, ch2;
- while (source < sourceEnd) {
- const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */
- ch = *source++;
- /* If we have a surrogate pair, convert to UTF32 first. */
- if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) {
- /* If the 16 bits following the high surrogate are in the source buffer... */
- if (source < sourceEnd) {
- ch2 = *source;
- /* If it's a low surrogate, convert to UTF32. */
- if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) {
- ch = ((ch - UNI_SUR_HIGH_START) << halfShift)
- + (ch2 - UNI_SUR_LOW_START) + halfBase;
- ++source;
- } else if (flags == strictConversion) { /* it's an unpaired high surrogate */
- --source; /* return to the illegal value itself */
- result = sourceIllegal;
- break;
- }
- } else { /* We don't have the 16 bits following the high surrogate. */
- --source; /* return to the high surrogate */
- result = sourceExhausted;
- break;
- }
- } else if (flags == strictConversion) {
- /* UTF-16 surrogate values are illegal in UTF-32 */
- if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) {
- --source; /* return to the illegal value itself */
- result = sourceIllegal;
- break;
- }
- }
- if (target >= targetEnd) {
- source = oldSource; /* Back up source pointer! */
- result = targetExhausted; break;
- }
- *target++ = ch;
- }
- *sourceStart = source;
- *targetStart = target;
-#ifdef CVTUTF_DEBUG
-if (result == sourceIllegal) {
- fprintf(stderr, "ConvertUTF16toUTF32 illegal seq 0x%04x,%04x\n", ch, ch2);
- fflush(stderr);
-}
-#endif
- return result;
-}
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Index into the table below with the first byte of a UTF-8 sequence to
- * get the number of trailing bytes that are supposed to follow it.
- * Note that *legal* UTF-8 values can't have 4 or 5-bytes. The table is
- * left as-is for anyone who may want to do such conversion, which was
- * allowed in earlier algorithms.
- */
-static const char trailingBytesForUTF8[256] = {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
-};
-
-/*
- * Magic values subtracted from a buffer value during UTF8 conversion.
- * This table contains as many values as there might be trailing bytes
- * in a UTF-8 sequence.
- */
-static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL,
- 0x03C82080UL, 0xFA082080UL, 0x82082080UL };
-
-/*
- * Once the bits are split out into bytes of UTF-8, this is a mask OR-ed
- * into the first byte, depending on how many bytes follow. There are
- * as many entries in this table as there are UTF-8 sequence types.
- * (I.e., one byte sequence, two byte... etc.). Remember that sequencs
- * for *legal* UTF-8 will be 4 or fewer bytes total.
- */
-static const UTF8 firstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };
-
-/* --------------------------------------------------------------------- */
-
-/* The interface converts a whole buffer to avoid function-call overhead.
- * Constants have been gathered. Loops & conditionals have been removed as
- * much as possible for efficiency, in favor of drop-through switches.
- * (See "Note A" at the bottom of the file for equivalent code.)
- * If your compiler supports it, the "isLegalUTF8" call can be turned
- * into an inline function.
- */
-
-/* --------------------------------------------------------------------- */
-
-ConversionResult ConvertUTF16toUTF8 (
- const UTF16** sourceStart, const UTF16* sourceEnd,
- UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) {
- ConversionResult result = conversionOK;
- const UTF16* source = *sourceStart;
- UTF8* target = *targetStart;
- while (source < sourceEnd) {
- UTF32 ch;
- unsigned short bytesToWrite = 0;
- const UTF32 byteMask = 0xBF;
- const UTF32 byteMark = 0x80;
- const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */
- ch = *source++;
- /* If we have a surrogate pair, convert to UTF32 first. */
- if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) {
- /* If the 16 bits following the high surrogate are in the source buffer... */
- if (source < sourceEnd) {
- UTF32 ch2 = *source;
- /* If it's a low surrogate, convert to UTF32. */
- if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) {
- ch = ((ch - UNI_SUR_HIGH_START) << halfShift)
- + (ch2 - UNI_SUR_LOW_START) + halfBase;
- ++source;
- } else if (flags == strictConversion) { /* it's an unpaired high surrogate */
- --source; /* return to the illegal value itself */
- result = sourceIllegal;
- break;
- }
- } else { /* We don't have the 16 bits following the high surrogate. */
- --source; /* return to the high surrogate */
- result = sourceExhausted;
- break;
- }
- } else if (flags == strictConversion) {
- /* UTF-16 surrogate values are illegal in UTF-32 */
- if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) {
- --source; /* return to the illegal value itself */
- result = sourceIllegal;
- break;
- }
- }
- /* Figure out how many bytes the result will require */
- if (ch < (UTF32)0x80) { bytesToWrite = 1;
- } else if (ch < (UTF32)0x800) { bytesToWrite = 2;
- } else if (ch < (UTF32)0x10000) { bytesToWrite = 3;
- } else if (ch < (UTF32)0x110000) { bytesToWrite = 4;
- } else { bytesToWrite = 3;
- ch = UNI_REPLACEMENT_CHAR;
- }
-
- target += bytesToWrite;
- if (target > targetEnd) {
- source = oldSource; /* Back up source pointer! */
- target -= bytesToWrite; result = targetExhausted; break;
- }
- switch (bytesToWrite) { /* note: everything falls through. */
- case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
- case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
- case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
- case 1: *--target = (UTF8)(ch | firstByteMark[bytesToWrite]);
- }
- target += bytesToWrite;
- }
- *sourceStart = source;
- *targetStart = target;
- return result;
-}
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Utility routine to tell whether a sequence of bytes is legal UTF-8.
- * This must be called with the length pre-determined by the first byte.
- * If not calling this from ConvertUTF8to*, then the length can be set by:
- * length = trailingBytesForUTF8[*source]+1;
- * and the sequence is illegal right away if there aren't that many bytes
- * available.
- * If presented with a length > 4, this returns false. The Unicode
- * definition of UTF-8 goes up to 4-byte sequences.
- */
-
-static Boolean isLegalUTF8(const UTF8 *source, int length) {
- UTF8 a;
- const UTF8 *srcptr = source+length;
- switch (length) {
- default: return false;
- /* Everything else falls through when "true"... */
- case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
- case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
- case 2: if ((a = (*--srcptr)) > 0xBF) return false;
-
- switch (*source) {
- /* no fall-through in this inner switch */
- case 0xE0: if (a < 0xA0) return false; break;
- case 0xED: if (a > 0x9F) return false; break;
- case 0xF0: if (a < 0x90) return false; break;
- case 0xF4: if (a > 0x8F) return false; break;
- default: if (a < 0x80) return false;
- }
-
- case 1: if (*source >= 0x80 && *source < 0xC2) return false;
- }
- if (*source > 0xF4) return false;
- return true;
-}
-
-/* --------------------------------------------------------------------- */
-
-/*
- * Exported function to return whether a UTF-8 sequence is legal or not.
- * This is not used here; it's just exported.
- */
-Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd) {
- int length = trailingBytesForUTF8[*source]+1;
- if (source+length > sourceEnd) {
- return false;
- }
- return isLegalUTF8(source, length);
-}
-
-/* --------------------------------------------------------------------- */
-
-ConversionResult ConvertUTF8toUTF16 (
- const UTF8** sourceStart, const UTF8* sourceEnd,
- UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) {
- ConversionResult result = conversionOK;
- const UTF8* source = *sourceStart;
- UTF16* target = *targetStart;
- while (source < sourceEnd) {
- UTF32 ch = 0;
- unsigned short extraBytesToRead = trailingBytesForUTF8[*source];
- if (source + extraBytesToRead >= sourceEnd) {
- result = sourceExhausted; break;
- }
- /* Do this check whether lenient or strict */
- if (! isLegalUTF8(source, extraBytesToRead+1)) {
- result = sourceIllegal;
- break;
- }
- /*
- * The cases all fall through. See "Note A" below.
- */
- switch (extraBytesToRead) {
- case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
- case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
- case 3: ch += *source++; ch <<= 6;
- case 2: ch += *source++; ch <<= 6;
- case 1: ch += *source++; ch <<= 6;
- case 0: ch += *source++;
- }
- ch -= offsetsFromUTF8[extraBytesToRead];
-
- if (target >= targetEnd) {
- source -= (extraBytesToRead+1); /* Back up source pointer! */
- result = targetExhausted; break;
- }
- if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */
- /* UTF-16 surrogate values are illegal in UTF-32 */
- if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
- if (flags == strictConversion) {
- source -= (extraBytesToRead+1); /* return to the illegal value itself */
- result = sourceIllegal;
- break;
- } else {
- *target++ = UNI_REPLACEMENT_CHAR;
- }
- } else {
- *target++ = (UTF16)ch; /* normal case */
- }
- } else if (ch > UNI_MAX_UTF16) {
- if (flags == strictConversion) {
- result = sourceIllegal;
- source -= (extraBytesToRead+1); /* return to the start */
- break; /* Bail out; shouldn't continue */
- } else {
- *target++ = UNI_REPLACEMENT_CHAR;
- }
- } else {
- /* target is a character in range 0xFFFF - 0x10FFFF. */
- if (target + 1 >= targetEnd) {
- source -= (extraBytesToRead+1); /* Back up source pointer! */
- result = targetExhausted; break;
- }
- ch -= halfBase;
- *target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START);
- *target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START);
- }
- }
- *sourceStart = source;
- *targetStart = target;
- return result;
-}
-
-/* --------------------------------------------------------------------- */
-
-ConversionResult ConvertUTF32toUTF8 (
- const UTF32** sourceStart, const UTF32* sourceEnd,
- UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) {
- ConversionResult result = conversionOK;
- const UTF32* source = *sourceStart;
- UTF8* target = *targetStart;
- while (source < sourceEnd) {
- UTF32 ch;
- unsigned short bytesToWrite = 0;
- const UTF32 byteMask = 0xBF;
- const UTF32 byteMark = 0x80;
- ch = *source++;
- if (flags == strictConversion ) {
- /* UTF-16 surrogate values are illegal in UTF-32 */
- if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
- --source; /* return to the illegal value itself */
- result = sourceIllegal;
- break;
- }
- }
- /*
- * Figure out how many bytes the result will require. Turn any
- * illegally large UTF32 things (> Plane 17) into replacement chars.
- */
- if (ch < (UTF32)0x80) { bytesToWrite = 1;
- } else if (ch < (UTF32)0x800) { bytesToWrite = 2;
- } else if (ch < (UTF32)0x10000) { bytesToWrite = 3;
- } else if (ch <= UNI_MAX_LEGAL_UTF32) { bytesToWrite = 4;
- } else { bytesToWrite = 3;
- ch = UNI_REPLACEMENT_CHAR;
- result = sourceIllegal;
- }
-
- target += bytesToWrite;
- if (target > targetEnd) {
- --source; /* Back up source pointer! */
- target -= bytesToWrite; result = targetExhausted; break;
- }
- switch (bytesToWrite) { /* note: everything falls through. */
- case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
- case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
- case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
- case 1: *--target = (UTF8) (ch | firstByteMark[bytesToWrite]);
- }
- target += bytesToWrite;
- }
- *sourceStart = source;
- *targetStart = target;
- return result;
-}
-
-/* --------------------------------------------------------------------- */
-
-ConversionResult ConvertUTF8toUTF32 (
- const UTF8** sourceStart, const UTF8* sourceEnd,
- UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) {
- ConversionResult result = conversionOK;
- const UTF8* source = *sourceStart;
- UTF32* target = *targetStart;
- while (source < sourceEnd) {
- UTF32 ch = 0;
- unsigned short extraBytesToRead = trailingBytesForUTF8[*source];
- if (source + extraBytesToRead >= sourceEnd) {
- result = sourceExhausted; break;
- }
- /* Do this check whether lenient or strict */
- if (! isLegalUTF8(source, extraBytesToRead+1)) {
- result = sourceIllegal;
- break;
- }
- /*
- * The cases all fall through. See "Note A" below.
- */
- switch (extraBytesToRead) {
- case 5: ch += *source++; ch <<= 6;
- case 4: ch += *source++; ch <<= 6;
- case 3: ch += *source++; ch <<= 6;
- case 2: ch += *source++; ch <<= 6;
- case 1: ch += *source++; ch <<= 6;
- case 0: ch += *source++;
- }
- ch -= offsetsFromUTF8[extraBytesToRead];
-
- if (target >= targetEnd) {
- source -= (extraBytesToRead+1); /* Back up the source pointer! */
- result = targetExhausted; break;
- }
- if (ch <= UNI_MAX_LEGAL_UTF32) {
- /*
- * UTF-16 surrogate values are illegal in UTF-32, and anything
- * over Plane 17 (> 0x10FFFF) is illegal.
- */
- if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
- if (flags == strictConversion) {
- source -= (extraBytesToRead+1); /* return to the illegal value itself */
- result = sourceIllegal;
- break;
- } else {
- *target++ = UNI_REPLACEMENT_CHAR;
- }
- } else {
- *target++ = ch;
- }
- } else { /* i.e., ch > UNI_MAX_LEGAL_UTF32 */
- result = sourceIllegal;
- *target++ = UNI_REPLACEMENT_CHAR;
- }
- }
- *sourceStart = source;
- *targetStart = target;
- return result;
-}
-
-/* ---------------------------------------------------------------------
-
- Note A.
- The fall-through switches in UTF-8 reading code save a
- temp variable, some decrements & conditionals. The switches
- are equivalent to the following loop:
- {
- int tmpBytesToRead = extraBytesToRead+1;
- do {
- ch += *source++;
- --tmpBytesToRead;
- if (tmpBytesToRead) ch <<= 6;
- } while (tmpBytesToRead > 0);
- }
- In UTF-8 writing code, the switches on "bytesToWrite" are
- similarly unrolled loops.
-
- --------------------------------------------------------------------- */
diff --git a/navit/support/win32/ConvertUTF.h b/navit/support/win32/ConvertUTF.h
deleted file mode 100644
index e26491536..000000000
--- a/navit/support/win32/ConvertUTF.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright 2001-2004 Unicode, Inc.
- *
- * Disclaimer
- *
- * This source code is provided as is by Unicode, Inc. No claims are
- * made as to fitness for any particular purpose. No warranties of any
- * kind are expressed or implied. The recipient agrees to determine
- * applicability of information provided. If this file has been
- * purchased on magnetic or optical media from Unicode, Inc., the
- * sole remedy for any claim will be exchange of defective media
- * within 90 days of receipt.
- *
- * Limitations on Rights to Redistribute This Code
- *
- * Unicode, Inc. hereby grants the right to freely use the information
- * supplied in this file in the creation of products supporting the
- * Unicode Standard, and to make copies of this file in any form
- * for internal or external distribution as long as this notice
- * remains attached.
- */
-
-/* ---------------------------------------------------------------------
-
- Conversions between UTF32, UTF-16, and UTF-8. Header file.
-
- Several funtions are included here, forming a complete set of
- conversions between the three formats. UTF-7 is not included
- here, but is handled in a separate source file.
-
- Each of these routines takes pointers to input buffers and output
- buffers. The input buffers are const.
-
- Each routine converts the text between *sourceStart and sourceEnd,
- putting the result into the buffer between *targetStart and
- targetEnd. Note: the end pointers are *after* the last item: e.g.
- *(sourceEnd - 1) is the last item.
-
- The return result indicates whether the conversion was successful,
- and if not, whether the problem was in the source or target buffers.
- (Only the first encountered problem is indicated.)
-
- After the conversion, *sourceStart and *targetStart are both
- updated to point to the end of last text successfully converted in
- the respective buffers.
-
- Input parameters:
- sourceStart - pointer to a pointer to the source buffer.
- The contents of this are modified on return so that
- it points at the next thing to be converted.
- targetStart - similarly, pointer to pointer to the target buffer.
- sourceEnd, targetEnd - respectively pointers to the ends of the
- two buffers, for overflow checking only.
-
- These conversion functions take a ConversionFlags argument. When this
- flag is set to strict, both irregular sequences and isolated surrogates
- will cause an error. When the flag is set to lenient, both irregular
- sequences and isolated surrogates are converted.
-
- Whether the flag is strict or lenient, all illegal sequences will cause
- an error return. This includes sequences such as: <F4 90 80 80>, <C0 80>,
- or <A0> in UTF-8, and values above 0x10FFFF in UTF-32. Conformant code
- must check for illegal sequences.
-
- When the flag is set to lenient, characters over 0x10FFFF are converted
- to the replacement character; otherwise (when the flag is set to strict)
- they constitute an error.
-
- Output parameters:
- The value "sourceIllegal" is returned from some routines if the input
- sequence is malformed. When "sourceIllegal" is returned, the source
- value will point to the illegal value that caused the problem. E.g.,
- in UTF-8 when a sequence is malformed, it points to the start of the
- malformed sequence.
-
- Author: Mark E. Davis, 1994.
- Rev History: Rick McGowan, fixes & updates May 2001.
- Fixes & updates, Sept 2001.
-
------------------------------------------------------------------------- */
-
-/* ---------------------------------------------------------------------
- The following 4 definitions are compiler-specific.
- The C standard does not guarantee that wchar_t has at least
- 16 bits, so wchar_t is no less portable than unsigned short!
- All should be unsigned values to avoid sign extension during
- bit mask & shift operations.
------------------------------------------------------------------------- */
-
-typedef unsigned long UTF32; /* at least 32 bits */
-typedef unsigned short UTF16; /* at least 16 bits */
-typedef unsigned char UTF8; /* typically 8 bits */
-typedef unsigned char Boolean; /* 0 or 1 */
-
-/* Some fundamental constants */
-#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD
-#define UNI_MAX_BMP (UTF32)0x0000FFFF
-#define UNI_MAX_UTF16 (UTF32)0x0010FFFF
-#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF
-#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF
-
-typedef enum {
- conversionOK, /* conversion successful */
- sourceExhausted, /* partial character in source, but hit end */
- targetExhausted, /* insuff. room in target for conversion */
- sourceIllegal /* source sequence is illegal/malformed */
-} ConversionResult;
-
-typedef enum {
- strictConversion = 0,
- lenientConversion
-} ConversionFlags;
-
-/* This is for C++ and does no harm in C */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-ConversionResult ConvertUTF8toUTF16 (
- const UTF8** sourceStart, const UTF8* sourceEnd,
- UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags);
-
-ConversionResult ConvertUTF16toUTF8 (
- const UTF16** sourceStart, const UTF16* sourceEnd,
- UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags);
-
-ConversionResult ConvertUTF8toUTF32 (
- const UTF8** sourceStart, const UTF8* sourceEnd,
- UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags);
-
-ConversionResult ConvertUTF32toUTF8 (
- const UTF32** sourceStart, const UTF32* sourceEnd,
- UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags);
-
-ConversionResult ConvertUTF16toUTF32 (
- const UTF16** sourceStart, const UTF16* sourceEnd,
- UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags);
-
-ConversionResult ConvertUTF32toUTF16 (
- const UTF32** sourceStart, const UTF32* sourceEnd,
- UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags);
-
-Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd);
-
-#ifdef __cplusplus
-}
-#endif
-
-/* --------------------------------------------------------------------- */
diff --git a/navit/support/win32/X11/XF86keysym.h b/navit/support/win32/X11/XF86keysym.h
deleted file mode 100644
index ff4980457..000000000
--- a/navit/support/win32/X11/XF86keysym.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/* $XFree86: xc/include/XF86keysym.h,v 1.16 2003/02/11 02:51:10 dawes Exp $ */
-
-/*
- * XFree86 vendor specific keysyms.
- *
- * The XFree86 keysym range is 0x10080001 - 0x1008FFFF.
- *
- * When adding new entries, the xc/lib/XKeysymDB file should also be
- * updated to make the new entries visible to Xlib.
- */
-
-/*
- * ModeLock
- *
- * This one is old, and not really used any more since XKB offers this
- * functionality.
- */
-
-#define XF86XK_ModeLock 0x1008FF01 /* Mode Switch Lock */
-
-/*
- * Note, 0x1008FF02 - 0x1008FF0F are free and should be used for misc new
- * keysyms that don't fit into any of the groups below.
- *
- * 0x1008FF64, 0x1008FF6F, 0x1008FF71, 0x1008FF83 are no longer used,
- * and should be used first for new keysyms.
- *
- * Check in keysymdef.h for generic symbols before adding new XFree86-specific
- * symbols here.
- */
-
-
-/*
- * Keys found on some "Internet" keyboards.
- */
-#define XF86XK_Standby 0x1008FF10
-#define XF86XK_AudioLowerVolume 0x1008FF11
-#define XF86XK_AudioMute 0x1008FF12
-#define XF86XK_AudioRaiseVolume 0x1008FF13
-#define XF86XK_AudioPlay 0x1008FF14
-#define XF86XK_AudioStop 0x1008FF15
-#define XF86XK_AudioPrev 0x1008FF16
-#define XF86XK_AudioNext 0x1008FF17
-#define XF86XK_HomePage 0x1008FF18
-#define XF86XK_Mail 0x1008FF19
-#define XF86XK_Start 0x1008FF1A
-#define XF86XK_Search 0x1008FF1B
-#define XF86XK_AudioRecord 0x1008FF1C
-
-/* These are sometimes found on PDA's (e.g. Palm, PocketPC or elsewhere) */
-#define XF86XK_Calculator 0x1008FF1D
-#define XF86XK_Memo 0x1008FF1E
-#define XF86XK_ToDoList 0x1008FF1F
-#define XF86XK_Calendar 0x1008FF20
-#define XF86XK_PowerDown 0x1008FF21
-#define XF86XK_ContrastAdjust 0x1008FF22
-#define XF86XK_RockerUp 0x1008FF23
-#define XF86XK_RockerDown 0x1008FF24
-#define XF86XK_RockerEnter 0x1008FF25
-
-/* Some more "Internet" keyboard symbols */
-#define XF86XK_Back 0x1008FF26
-#define XF86XK_Forward 0x1008FF27
-#define XF86XK_Stop 0x1008FF28
-#define XF86XK_Refresh 0x1008FF29
-#define XF86XK_PowerOff 0x1008FF2A
-#define XF86XK_WakeUp 0x1008FF2B
-#define XF86XK_Eject 0x1008FF2C
-#define XF86XK_ScreenSaver 0x1008FF2D
-#define XF86XK_WWW 0x1008FF2E
-#define XF86XK_Sleep 0x1008FF2F
-#define XF86XK_Favorites 0x1008FF30
-#define XF86XK_AudioPause 0x1008FF31
-#define XF86XK_AudioMedia 0x1008FF32
-#define XF86XK_MyComputer 0x1008FF33
-#define XF86XK_VendorHome 0x1008FF34
-#define XF86XK_LightBulb 0x1008FF35
-#define XF86XK_Shop 0x1008FF36
-#define XF86XK_History 0x1008FF37
-#define XF86XK_OpenURL 0x1008FF38
-#define XF86XK_AddFavorite 0x1008FF39
-#define XF86XK_HotLinks 0x1008FF3A
-#define XF86XK_BrightnessAdjust 0x1008FF3B
-#define XF86XK_Finance 0x1008FF3C
-#define XF86XK_Community 0x1008FF3D
-#define XF86XK_AudioRewind 0x1008FF3E
-#define XF86XK_XF86BackForward 0x1008FF3F
-#define XF86XK_Launch0 0x1008FF40
-#define XF86XK_Launch1 0x1008FF41
-#define XF86XK_Launch2 0x1008FF42
-#define XF86XK_Launch3 0x1008FF43
-#define XF86XK_Launch4 0x1008FF44
-#define XF86XK_Launch5 0x1008FF45
-#define XF86XK_Launch6 0x1008FF46
-#define XF86XK_Launch7 0x1008FF47
-#define XF86XK_Launch8 0x1008FF48
-#define XF86XK_Launch9 0x1008FF49
-#define XF86XK_LaunchA 0x1008FF4A
-#define XF86XK_LaunchB 0x1008FF4B
-#define XF86XK_LaunchC 0x1008FF4C
-#define XF86XK_LaunchD 0x1008FF4D
-#define XF86XK_LaunchE 0x1008FF4E
-#define XF86XK_LaunchF 0x1008FF4F
-
-#define XF86XK_ApplicationLeft 0x1008FF50
-#define XF86XK_ApplicationRight 0x1008FF51
-#define XF86XK_Book 0x1008FF52
-#define XF86XK_CD 0x1008FF53
-#define XF86XK_Calculater 0x1008FF54
-#define XF86XK_Clear 0x1008FF55
-#define XF86XK_Close 0x1008FF56
-#define XF86XK_Copy 0x1008FF57
-#define XF86XK_Cut 0x1008FF58
-#define XF86XK_Display 0x1008FF59
-#define XF86XK_DOS 0x1008FF5A
-#define XF86XK_Documents 0x1008FF5B
-#define XF86XK_Excel 0x1008FF5C
-#define XF86XK_Explorer 0x1008FF5D
-#define XF86XK_Game 0x1008FF5E
-#define XF86XK_Go 0x1008FF5F
-#define XF86XK_iTouch 0x1008FF60
-#define XF86XK_LogOff 0x1008FF61
-#define XF86XK_Market 0x1008FF62
-#define XF86XK_Meeting 0x1008FF63
-#define XF86XK_MenuKB 0x1008FF65
-#define XF86XK_MenuPB 0x1008FF66
-#define XF86XK_MySites 0x1008FF67
-#define XF86XK_New 0x1008FF68
-#define XF86XK_News 0x1008FF69
-#define XF86XK_OfficeHome 0x1008FF6A
-#define XF86XK_Open 0x1008FF6B
-#define XF86XK_Option 0x1008FF6C
-#define XF86XK_Paste 0x1008FF6D
-#define XF86XK_Phone 0x1008FF6E
-#define XF86XK_Q 0x1008FF70
-#define XF86XK_Reply 0x1008FF72
-#define XF86XK_Reload 0x1008FF73
-#define XF86XK_RotateWindows 0x1008FF74
-#define XF86XK_RotationPB 0x1008FF75
-#define XF86XK_RotationKB 0x1008FF76
-#define XF86XK_Save 0x1008FF77
-#define XF86XK_ScrollUp 0x1008FF78
-#define XF86XK_ScrollDown 0x1008FF79
-#define XF86XK_ScrollClick 0x1008FF7A
-#define XF86XK_Send 0x1008FF7B
-#define XF86XK_Spell 0x1008FF7C
-#define XF86XK_SplitScreen 0x1008FF7D
-#define XF86XK_Support 0x1008FF7E
-#define XF86XK_TaskPane 0x1008FF7F
-#define XF86XK_Terminal 0x1008FF80
-#define XF86XK_Tools 0x1008FF81
-#define XF86XK_Travel 0x1008FF82
-#define XF86XK_UserPB 0x1008FF84
-#define XF86XK_User1KB 0x1008FF85
-#define XF86XK_User2KB 0x1008FF86
-#define XF86XK_Video 0x1008FF87
-#define XF86XK_WheelButton 0x1008FF88
-#define XF86XK_Word 0x1008FF89
-#define XF86XK_Xfer 0x1008FF8A
-#define XF86XK_ZoomIn 0x1008FF8B
-#define XF86XK_ZoomOut 0x1008FF8C
-
-#define XF86XK_Away 0x1008FF8D
-#define XF86XK_Messenger 0x1008FF8E
-#define XF86XK_WebCam 0x1008FF8F
-#define XF86XK_MailForward 0x1008FF90
-#define XF86XK_Pictures 0x1008FF91
-#define XF86XK_Music 0x1008FF92
-
-/* Keys for special action keys (hot keys) */
-#define XF86XK_Switch_VT_1 0x1008FE01
-#define XF86XK_Switch_VT_2 0x1008FE02
-#define XF86XK_Switch_VT_3 0x1008FE03
-#define XF86XK_Switch_VT_4 0x1008FE04
-#define XF86XK_Switch_VT_5 0x1008FE05
-#define XF86XK_Switch_VT_6 0x1008FE06
-#define XF86XK_Switch_VT_7 0x1008FE07
-#define XF86XK_Switch_VT_8 0x1008FE08
-#define XF86XK_Switch_VT_9 0x1008FE09
-#define XF86XK_Switch_VT_10 0x1008FE0A
-#define XF86XK_Switch_VT_11 0x1008FE0B
-#define XF86XK_Switch_VT_12 0x1008FE0C
-
-#define XF86XK_Ungrab 0x1008FE20
-#define XF86XK_ClearGrab 0x1008FE21
-#define XF86XK_Next_VMode 0x1008FE22
-#define XF86XK_Prev_VMode 0x1008FE23
-
-
diff --git a/navit/support/win32/addwinsock.c b/navit/support/win32/addwinsock.c
deleted file mode 100644
index 63ae968d5..000000000
--- a/navit/support/win32/addwinsock.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "addwinsock.h"
-
-int inet_aton(const char *cp, struct in_addr *inp)
-{
- unsigned long addr = inet_addr(cp);
- inp->S_un.S_addr = addr;
- return addr != -1;
-}
diff --git a/navit/support/win32/addwinsock.h b/navit/support/win32/addwinsock.h
deleted file mode 100644
index 49dfdc0cb..000000000
--- a/navit/support/win32/addwinsock.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef ADD_WINSOCK
-#define ADD_WINSOCK
-
-#include <winsock2.h>
-
-int inet_aton(const char *cp, struct in_addr *inp);
-
-#endif
diff --git a/navit/support/win32/mmap.c b/navit/support/win32/mmap.c
deleted file mode 100644
index 008ffa66f..000000000
--- a/navit/support/win32/mmap.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <windows.h>
-#include "sys/mman.h"
-
-void * mmap_readonly_win32( const char* name, long* map_handle_ptr, long* map_file_ptr )
-{
- void * mapped_ptr = NULL;
-#if defined(__CEGCC__)
-
- wchar_t filename[MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, strlen(name), 0, 0)];
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, strlen(name), filename, wcslen(filename)) ;
-
- HANDLE hFile = CreateFile (filename, GENERIC_READ, FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
-#else
- HANDLE hFile = CreateFile (name, GENERIC_READ, FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
-#endif
- *map_file_ptr = (long)hFile;
- *map_handle_ptr = 0;
-
- if ( hFile != HFILE_ERROR )
- {
- HANDLE hMapping = CreateFileMapping( (HANDLE)hFile, NULL, PAGE_READONLY, 0, 0, NULL);
- mapped_ptr = MapViewOfFile(hMapping, FILE_MAP_READ, 0 , 0, 0 );
- *map_handle_ptr = (long)hMapping;
- }
-
- return mapped_ptr;
-}
-
-void mmap_unmap_win32( void* mem_ptr, long map_handle, long map_file )
-{
- if ( mem_ptr != NULL )
- {
- UnmapViewOfFile( mem_ptr );
- }
- if ( map_handle != 0)
- {
- CloseHandle( (HANDLE)map_handle );
- }
- if ( map_file != 0 )
- {
- CloseHandle( (HANDLE)map_file );
- }
-}
diff --git a/navit/support/win32/serial_io.c b/navit/support/win32/serial_io.c
deleted file mode 100644
index 2eba8ece1..000000000
--- a/navit/support/win32/serial_io.c
+++ /dev/null
@@ -1,166 +0,0 @@
-#include <stdio.h>
-#include <windows.h>
-#include <glib.h>
-#include "serial_io.h"
-#include "debug.h"
-
-//***************************************************************************
-/** @fn int serial_io_init( const char* port, const char* strsettings )
-*****************************************************************************
-* @b Description: initialise a serial port communication
-*****************************************************************************
-* @param port : port name
-* example 'COM7'
-* @param strsettings : port settings
-* example ; 'baud=115200 parity=N data=8 stop=1'
-*****************************************************************************
-* @return file descriptor
-* -1 if error
-*****************************************************************************
-**/
-int serial_io_init( const char* port, const char* strsettings )
-{
- HANDLE hCom = NULL;
- DCB dcb;
- COMMTIMEOUTS sCT;
-
- char strport[16];
- g_snprintf( strport, sizeof( strport ), "\\\\.\\%s", port );
-
- hCom = CreateFile(
- strport,
- GENERIC_WRITE | GENERIC_READ,
- 0,
- 0,
- OPEN_EXISTING,
- 0,
- NULL);
-
- if (hCom == INVALID_HANDLE_VALUE)
- {
- LPVOID lpMsgBuf;
-
- FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (LPTSTR) &lpMsgBuf,
- 0,
- NULL
- );
- dbg(lvl_warning, "return (fd) : '-1' : serial_io_init error : '%s'\n", lpMsgBuf);
-
- LocalFree( lpMsgBuf ); // Free the buffer.
- return -1;
- }
-
- ZeroMemory(&dcb, sizeof(DCB));
-
- GetCommState(hCom, &dcb);
-
- BuildCommDCB( strsettings, &dcb);
-
- SetupComm(hCom, 4096, 4096);
-
- SetCommState(hCom, &dcb);
-
- memset(&sCT, 0, sizeof(sCT));
- sCT.ReadTotalTimeoutConstant = 10;
-
- SetCommTimeouts(hCom, &sCT);
-
- dbg(lvl_debug, "serial_io_init return (fd) : '%d'\n", (int)hCom);
-
- return (int)hCom;
-}
-
-//***************************************************************************
-/** @fn int serial_io_read( int fd, char * buffer, int buffer_size )
-*****************************************************************************
-* @b Description: Read bytes on the serial port
-*****************************************************************************
-* @param fd : file descriptor
-* @param buffer : buffer for data
-* @param buffer_size : size in byte of the buffer
-*****************************************************************************
-* @return number of bytes read
-*****************************************************************************
-* @remarks buffer must be allocated by the caller
-*****************************************************************************
-**/
-int serial_io_read( int fd, char * buffer, int buffer_size )
-{
- DWORD dwBytesIn = 0;
- dbg(lvl_debug, "serial_io_read fd = %d buffer_size = %d\n", fd, buffer_size);
-
-
- if (fd <= 0)
- {
- dbg(lvl_debug, "serial_io_read return (dwBytesIn) : '0'\n");
- *buffer = 0;
- return 0;
- }
-
- ReadFile( (HANDLE)fd, buffer, buffer_size - 1, &dwBytesIn, NULL);
-
- if (dwBytesIn >= 0)
- {
- buffer[dwBytesIn] = 0;
- }
- else
- {
- dwBytesIn = 0;
- buffer[0] = 0;
- }
- if (dwBytesIn > 0)
- {
- dbg(lvl_debug,"GPS < %s\n",buffer );
- }
- buffer[buffer_size - 1] = 0;
-
- dbg(lvl_info, "serial_io_read return (dwBytesIn) : '%d'\n", dwBytesIn);
- return dwBytesIn;
-}
-
-//***************************************************************************
-/** @fn int serial_io_write(int fd, const char * buffer)
-*****************************************************************************
-* @b Description: Write bytes on the serial port
-*****************************************************************************
-* @param fd : file descriptor
-* @param buffer : data buffer (null terminated)
-*****************************************************************************
-* @return number of bytes written
-*****************************************************************************
-**/
-int serial_io_write(int fd, const char * buffer)
-{
- DWORD dwBytesOut = 0;
- dbg(lvl_debug, "serial_io_write fd = %d buffer = '%s'\n",fd, buffer);
-
-
- WriteFile((HANDLE)fd, buffer, strlen(buffer), &dwBytesOut, NULL);
-
- return dwBytesOut;
-}
-
-//***************************************************************************
-/** @fn void serial_io_shutdown(int fd )
-*****************************************************************************
-* @b Description: Terminate serial communication
-*****************************************************************************
-* @param fd : file descriptor
-*****************************************************************************
-**/
-void serial_io_shutdown(int fd )
-{
- dbg(lvl_debug, "serial_io_shutdown fd = %d\n",fd);
-
- if (fd > 0)
- {
- CloseHandle((HANDLE)fd);
- }
-}
diff --git a/navit/support/win32/serial_io.h b/navit/support/win32/serial_io.h
deleted file mode 100644
index 0526a217a..000000000
--- a/navit/support/win32/serial_io.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef SERIAL_IO_H_INCLUDED
-#define SERIAL_IO_H_INCLUDED
-
-int serial_io_init( const char* port, const char* strsettings );
-int serial_io_read(int fd, char * buffer, int buffer_size );
-int serial_io_write(int fd, const char * buffer);
-void serial_io_shutdown(int fd );
-typedef unsigned int speed_t;
-
-#define B0 0000000
-#define B50 0000001
-#define B75 0000002
-#define B110 0000003
-#define B134 0000004
-#define B150 0000005
-#define B200 0000006
-#define B300 0000007
-#define B600 0000010
-#define B1200 0000011
-#define B1800 0000012
-#define B2400 0000013
-#define B4800 0000014
-#define B9600 0000015
-#define B19200 0000016
-#define B38400 0000017
-#define B57600 0010001
-#define B115200 0010002
-#define B230400 0010003
-#define B460800 0010004
-#define B500000 0010005
-#define B576000 0010006
-#define B921600 0010007
-#define B1000000 0010010
-#define B1152000 0010011
-#define B1500000 0010012
-#define B2000000 0010013
-#define B2500000 0010014
-#define B3000000 0010015
-#define B3500000 0010016
-#define B4000000 0010017
-
-#endif
diff --git a/navit/support/win32/stdint.h b/navit/support/win32/stdint.h
deleted file mode 100644
index 785a6398f..000000000
--- a/navit/support/win32/stdint.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef _MSC_VER
-#include_next <stdint.h>
-#else
-typedef signed char int8_t;
-typedef unsigned char uint8_t;
-typedef short int16_t;
-typedef unsigned short uint16_t;
-typedef int int32_t;
-typedef unsigned uint32_t;
-typedef long long int64_t;
-typedef unsigned long long uint64_t;
-typedef unsigned long long uintmax_t;
-#endif /* _MSC_VER */
diff --git a/navit/support/win32/sys/mman.h b/navit/support/win32/sys/mman.h
deleted file mode 100644
index 37e59b9ec..000000000
--- a/navit/support/win32/sys/mman.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef _WIN32_MMAN_H_INCLUDED
-#define _WIN32_MMAN_H_INCLUDED
-
-void * mmap_readonly_win32( const char* name, long* map_handle_ptr, long* map_file_ptr );
-void mmap_unmap_win32( void* mem_ptr, long map_handle, long map_file );
-
-#endif /* !_WIN32_MMAN_H_INCLUDED */
-
diff --git a/navit/support/win32/win32_init.c b/navit/support/win32/win32_init.c
deleted file mode 100644
index 32be387da..000000000
--- a/navit/support/win32/win32_init.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "plugin.h"
-
-void
-plugin_init(void)
-{
-}
diff --git a/navit/support/wordexp/CMakeLists.txt b/navit/support/wordexp/CMakeLists.txt
deleted file mode 100644
index 650c9d1de..000000000
--- a/navit/support/wordexp/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-supportlib_add_library(support_wordexp wordexp.c wordexp_init.c glob.c)
diff --git a/navit/support/wordexp/glob.c b/navit/support/wordexp/glob.c
deleted file mode 100644
index 8337367dd..000000000
--- a/navit/support/wordexp/glob.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/**
- * 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.
- */
-
-/*
- * @file glob.c
- */
-
-#include <config.h>
-
-#ifndef HAVE_GLOB
-#if defined _WIN32 || defined _WIN32_WCE
-#include <windows.h>
-#include "glob.h"
-
-/*
- * @brief searches for all the pathnames matching pattern according to the rules
- * which is similar to the rules used by common shells.
- * here: expanding of ´*´ and ´?´ only in filenames
- * @param pattern: no tilde expansion or parameter substitution is done.
- * @param flags: not supported here
- * @param errfunc: not supported here
- * @param pglob: struct with array containing the matched files/directories
- * @return FALSE on error.
- */
-int glob(const char *pattern, int flags,
- int (*errfunc)(const char *epath, int eerrno),
- glob_t *pglob)
-{
- char *pathend,
- *filename;
- int pathlen;
- HANDLE hFiles;
-#ifndef UNICODE
- WIN32_FIND_DATA xFindData;
- hFiles = FindFirstFile (pattern, &xFindData);
-#else
- int len = strlen(pattern) * sizeof(wchar_t*);
- wchar_t *pathname = malloc(len);
- WIN32_FIND_DATAW xFindData;
- mbstowcs (pathname, pattern, len);
- hFiles = FindFirstFile (pathname, &xFindData);
-#endif
-
- if(hFiles == INVALID_HANDLE_VALUE)
- {
- return 1;
- }
- /* store the path information */
- pathend = max (strrchr (pattern, '\\'), strrchr (pattern, '/'));
- pathlen = pathend ? (pathend - pattern + 1) : 0;
-
- /* glob */
- pglob->gl_pathc = 0; /* number of founded files */
- pglob->gl_offs = 0; /* not needed */
- pglob->gl_pathv = malloc(sizeof(char*)); /* list of file names */
-
- do
- {
- pglob->gl_pathc++;
- pglob->gl_pathv = realloc (pglob->gl_pathv, pglob->gl_pathc * sizeof(char*));
-#ifndef UNICODE
- filename = xFindData.cFileName;
-#else
- len = wcslen(xFindData.cFileName) * sizeof(char*);
- filename = malloc (len);
- wcstombs (filename, xFindData.cFileName, len);
-#endif
- pglob->gl_pathv[pglob->gl_pathc - 1] = malloc ((pathlen + strlen (filename) + 1) * sizeof(char*));
- strncpy (pglob->gl_pathv[pglob->gl_pathc - 1], pattern, pathlen);
- // strcpy (pglob->gl_pathv[pglob->gl_pathc - 1] + pathlen - 1, filename);
- // The above line should be uncommented later. Currently, the blow line needs to be in use.
- // If not, navit on WinCE / Win32 cannot "find" the maps and bookmarks folder
- strcpy (pglob->gl_pathv[pglob->gl_pathc - 1] + pathlen, filename);
- } while (FindNextFile (hFiles, &xFindData));
-
- FindClose(hFiles);
- return 0;
-}
-#else
-
-#include <dirent.h>
-#include <string.h>
-#include <fnmatch.h>
-#include "debug.h"
-#include "glob.h"
-
-static int
-glob_requires_match(const char *pattern, int flags)
-{
- for (;;) {
- switch (*pattern++) {
- case '\0':
- return 0;
- case '?':
- case '*':
- case '[':
- return 1;
- case '\\':
- if (!*pattern++)
- return 0;
- }
- }
- return 0;
-}
-
-static int
-glob_recursive(const char *path1, const char *path2, const char *pattern, int flags, int (*errfunc) (const char *epath, int eerrno), glob_t *pglob)
-{
- const char *next;
- char *fname,*path=malloc(strlen(path1)+strlen(path2)+2);
- int flen;
- strcpy(path, path1);
- if (path1[0] && path2[0] && (path1[1] != '\0' || path1[0] != '/'))
- strcat(path, "/");
- strcat(path, path2);
- if (!strlen(pattern)) {
- dbg(lvl_debug,"found %s\n",path);
- pglob->gl_pathv=realloc(pglob->gl_pathv, (pglob->gl_pathc+1)*sizeof(char *));
- if (!pglob->gl_pathv) {
- pglob->gl_pathc=0;
- return GLOB_NOSPACE;
- }
- pglob->gl_pathv[pglob->gl_pathc++]=path;
- return 0;
- }
- dbg(lvl_debug,"searching for %s in %s\n",pattern,path);
- flen=strcspn(pattern,"/");
- next=pattern+flen;
- if (*next == '/')
- next++;
- fname=malloc(flen+1);
- strncpy(fname, pattern, flen);
- fname[flen]='\0';
- if (glob_requires_match(fname, 0)) {
- DIR *dh;
- struct dirent *de;
- dbg(lvl_debug,"in dir %s search for %s\n",path,fname);
- dh=opendir(path);
- if (dh) {
- while ((de=readdir(dh))) {
- if (fnmatch(fname,de->d_name,0) == 0) {
- glob_recursive(path, de->d_name, next, flags, errfunc, pglob);
- }
- }
- closedir(dh);
- }
- } else {
- glob_recursive(path, fname, next, flags, errfunc, pglob);
- }
- free(fname);
- free(path);
- return 0;
-}
-
-int
-glob(const char *pattern, int flags, int (*errfunc) (const char *epath, int eerrno), glob_t *pglob)
-{
- pglob->gl_pathc=0;
- pglob->gl_pathv=NULL;
- if (pattern[0] == '/')
- return glob_recursive("/", "", pattern+1, flags, errfunc, pglob);
- else
- return glob_recursive("", "", pattern, flags, errfunc, pglob);
-}
-
-#endif /* _WIN32 || _WIN32_WCE */
-
-void globfree(glob_t *pglob)
-{
- int i;
-
- for (i=0; i < pglob->gl_pathc; i++)
- {
- free (pglob->gl_pathv[i]);
- }
- free (pglob->gl_pathv);
- pglob->gl_pathc = 0;
-}
-
-#endif /* HAVE_GLOB */
diff --git a/navit/support/wordexp/glob.h b/navit/support/wordexp/glob.h
deleted file mode 100644
index d36ac29e6..000000000
--- a/navit/support/wordexp/glob.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef _GLOB_H_
-#define _GLOB_H_
-
-#ifndef HAVE_GLOB
-
-typedef struct {
- size_t gl_pathc; /* count of file names */
- char **gl_pathv; /* list of file names */
- size_t gl_offs; /* slots to reserve in gl_pathv */
-} glob_t;
-
-int glob(const char *pattern, int flags, int (*errfunc)(const char *epath, int eerrno), glob_t *pglob);
-void globfree(glob_t *pglob);
-
-#define GLOB_NOSPACE 1
-
-#endif
-
-#endif /* _GLOB_H_ */
diff --git a/navit/support/wordexp/wordexp.c b/navit/support/wordexp/wordexp.c
deleted file mode 100644
index 6b080d1f7..000000000
--- a/navit/support/wordexp/wordexp.c
+++ /dev/null
@@ -1,136 +0,0 @@
-
-#include <config.h>
-
-#include <sys/types.h>
-#include <assert.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifndef _MSC_VER
-#include <unistd.h>
-#endif /* _MSC_VER */
-#include "wordexp.h"
-#include "glob.h"
-#include <glib.h>
-
-
-static int
-is_valid_variable_char(char c, int pos)
-{
- if ( (pos && c >= '0' && c <= '9') ||
- c == '_' ||
- (c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z'))
- return 1;
- return 0;
-}
-
-/*
- * @brief replace all names of $NAME ${NAME}
- * with the corresponding environment variable
- * @ param in: the string to be checked
- * @ return the expanded string or a copy of the existing string
- * must be free() by the calling function
-*/
-static char *
-expand_variables(const char *in)
-{
- char *var,*pos,*ret=g_strdup(in);
- char *val,*str;
- pos=ret;
- while ((var=strchr(pos, '$'))) {
- char *name,*begin=var+1;
- int npos=0,bpos=0,slen,elen;
- *var='\0';
- if (var[1] == '{') {
- begin++;
- while (begin[npos]) {
- bpos=npos;
- if (begin[npos++] == '}')
- break;
- }
- } else {
- while (is_valid_variable_char(begin[npos],npos))
- npos++;
- bpos=npos;
- }
- name=g_strdup(begin);
- name[bpos]='\0';
- val=getenv(name);
- free(name);
- if (! val)
- val="";
- slen=strlen(ret)+strlen(val);
- elen=strlen(begin+npos);
- str=malloc(slen+elen+1);
- strcpy(str,ret);
- strcat(str,val);
- strcat(str,begin+npos);
- free(ret);
- ret=str;
- pos=ret+slen;
- }
- return ret;
-}
-
-/*
- * @brief minimal realization of wordexp according to IEEE standard
- * shall perform word expansion as described in the Shell
- * expansion of ´$NAME´ or ´${NAME}´
- * expansion of ´*´ and ´?´
- * @param words: pointer to a string containing one or more words to be expanded
- * but here only one word supported
- */
-int
-wordexp(const char *words, wordexp_t *we, int flags)
-{
- int i;
- int error = 0;
- char *words_expanded;
- glob_t pglob;
-
- assert(we != NULL);
- assert(words != NULL);
-
- /* expansion of ´$NAME´ or ´${NAME}´ */
- words_expanded=expand_variables(words);
- /* expansion of ´*´, ´?´ */
- error=glob(words_expanded, 0, NULL, &pglob);
- if (!error)
- {
- /* copy the content of struct of glob into struct of wordexp */
- we->we_wordc = pglob.gl_pathc;
- we->we_offs = pglob.gl_offs;
- we->we_wordv = malloc(we->we_wordc * sizeof(char*));
- for (i=0; i<we->we_wordc; i++)
- {
- we->we_wordv[i] = g_strdup(pglob.gl_pathv[i]);
- }
- globfree(&pglob);
- free(words_expanded);
- }
- else
- {
- we->we_wordc = 1;
- we->we_wordv = malloc(sizeof(char*));
- we->we_wordv[0] = words_expanded;
- }
-
-
- return error;
-}
-
-
-void wordfree(wordexp_t *we)
-{
- int i;
-
- for (i=0; i < we->we_wordc; i++)
- {
- free (we->we_wordv[i]);
- }
-
- free (we->we_wordv);
- we->we_wordc = 0;
-}
diff --git a/navit/support/wordexp/wordexp.h b/navit/support/wordexp/wordexp.h
deleted file mode 100644
index ad18c7854..000000000
--- a/navit/support/wordexp/wordexp.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef _WORDEXP_H_
-#define _WORDEXP_H_
-
-
-typedef struct {
- size_t we_wordc; /* count of words matched */
- char **we_wordv; /* pointer to list of words */
- size_t we_offs; /* slots to reserve in we_wordv */
- /* following are internals */
- char *we_strings; /* storage for wordv strings */
- size_t we_nbytes; /* size of we_strings */
-} wordexp_t;
-
-/*
- * Flags for wordexp().
- */
-#define WRDE_APPEND 0x1 /* append to previously generated */
-#define WRDE_DOOFFS 0x2 /* we_offs member is valid */
-#define WRDE_NOCMD 0x4 /* disallow command substitution */
-#define WRDE_REUSE 0x8 /* reuse wordexp_t */
-#define WRDE_SHOWERR 0x10 /* don't redirect stderr to /dev/null */
-#define WRDE_UNDEF 0x20 /* disallow undefined shell vars */
-
-/*
- * Return values from wordexp().
- */
-#define WRDE_BADCHAR 1 /* unquoted special character */
-#define WRDE_BADVAL 2 /* undefined variable */
-#define WRDE_CMDSUB 3 /* command substitution not allowed */
-#define WRDE_NOSPACE 4 /* no memory for result */
-#if (_XOPEN_SOURCE - 0) >= 4 || defined(_NETBSD_SOURCE)
-#define WRDE_NOSYS 5 /* obsolete, reserved */
-#endif
-#define WRDE_SYNTAX 6 /* shell syntax error */
-#define WRDE_ERRNO 7 /* other errors see errno */
-
-void wordfree(wordexp_t *);
-int wordexp(const char * words, wordexp_t * we, int flags);
-
-
-#endif /* !_WORDEXP_H_ */
-
diff --git a/navit/support/wordexp/wordexp_init.c b/navit/support/wordexp/wordexp_init.c
deleted file mode 100644
index 32be387da..000000000
--- a/navit/support/wordexp/wordexp_init.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "plugin.h"
-
-void
-plugin_init(void)
-{
-}
diff --git a/navit/support/xgetopt/CMakeLists.txt b/navit/support/xgetopt/CMakeLists.txt
deleted file mode 100644
index 98a333f82..000000000
--- a/navit/support/xgetopt/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-supportlib_add_library(support_xgetopt XGetopt.c getopt_long.c)
-
diff --git a/navit/support/xgetopt/XGetopt.c b/navit/support/xgetopt/XGetopt.c
deleted file mode 100644
index d6174d826..000000000
--- a/navit/support/xgetopt/XGetopt.c
+++ /dev/null
@@ -1,216 +0,0 @@
-// XGetopt.cpp Version 1.2
-//
-// Author: Hans Dietrich
-// hdietrich2@hotmail.com
-//
-// Description:
-// XGetopt.cpp implements getopt(), a function to parse command lines.
-//
-// History
-// Version 1.2 - 2003 May 17
-// - Added Unicode support
-//
-// Version 1.1 - 2002 March 10
-// - Added example to XGetopt.cpp module header
-//
-// This software is released into the public domain.
-// You are free to use it in any way you like.
-//
-// This software is provided "as is" with no expressed
-// or implied warranty. I accept no liability for any
-// damage or loss of business that this software may cause.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-// if you are not using precompiled headers then include these lines:
-#include <windows.h>
-#include <stdio.h>
-///////////////////////////////////////////////////////////////////////////////
-
-
-#include "XGetopt.h"
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// X G e t o p t . c p p
-//
-//
-// NAME
-// getopt -- parse command line options
-//
-// SYNOPSIS
-// int getopt(int argc, char *argv[], char *optstring)
-//
-// extern char *optarg;
-// extern int optind;
-//
-// DESCRIPTION
-// The getopt() function parses the command line arguments. Its
-// arguments argc and argv are the argument count and array as
-// passed into the application on program invocation. In the case
-// of Visual C++ programs, argc and argv are available via the
-// variables __argc and __argv (double underscores), respectively.
-// getopt returns the next option letter in argv that matches a
-// letter in optstring. (Note: Unicode programs should use
-// __targv instead of __argv. Also, all character and string
-// literals should be enclosed in _T( ) ).
-//
-// optstring is a string of recognized option letters; if a letter
-// is followed by a colon, the option is expected to have an argument
-// that may or may not be separated from it by white space. optarg
-// is set to point to the start of the option argument on return from
-// getopt.
-//
-// Option letters may be combined, e.g., "-ab" is equivalent to
-// "-a -b". Option letters are case sensitive.
-//
-// getopt places in the external variable optind the argv index
-// of the next argument to be processed. optind is initialized
-// to 0 before the first call to getopt.
-//
-// When all options have been processed (i.e., up to the first
-// non-option argument), getopt returns EOF, optarg will point
-// to the argument, and optind will be set to the argv index of
-// the argument. If there are no non-option arguments, optarg
-// will be set to NULL.
-//
-// The special option "--" may be used to delimit the end of the
-// options; EOF will be returned, and "--" (and everything after it)
-// will be skipped.
-//
-// RETURN VALUE
-// For option letters contained in the string optstring, getopt
-// will return the option letter. getopt returns a question mark (?)
-// when it encounters an option letter not included in optstring.
-// EOF is returned when processing is finished.
-//
-// BUGS
-// 1) Long options are not supported.
-// 2) The GNU double-colon extension is not supported.
-// 3) The environment variable POSIXLY_CORRECT is not supported.
-// 4) The + syntax is not supported.
-// 5) The automatic permutation of arguments is not supported.
-// 6) This implementation of getopt() returns EOF if an error is
-// encountered, instead of -1 as the latest standard requires.
-//
-// EXAMPLE
-// BOOL CMyApp::ProcessCommandLine(int argc, char *argv[])
-// {
-// int c;
-//
-// while ((c = getopt(argc, argv, "aBn:")) != EOF)
-// {
-// switch (c)
-// {
-// case 'a':
-// TRACE("option a\n");
-// //
-// // set some flag here
-// //
-// break;
-//
-// case 'B':
-// TRACE( "option B\n");
-// //
-// // set some other flag here
-// //
-// break;
-//
-// case 'n':
-// TRACE("option n: value=%d\n", atoi(optarg));
-// //
-// // do something with value here
-// //
-// break;
-//
-// case '?':
-// TRACE("ERROR: illegal option %s\n", argv[optind-1]);
-// return FALSE;
-// break;
-//
-// default:
-// TRACE("WARNING: no handler for option %c\n", c);
-// return FALSE;
-// break;
-// }
-// }
-// //
-// // check for non-option args here
-// //
-// return TRUE;
-// }
-//
-///////////////////////////////////////////////////////////////////////////////
-
-char *optarg; // global argument pointer
-int optind = 0; // global argv index
-
-int getopt(int argc, char *argv[], char *optstring)
-{
- static char *next = NULL;
- char c;
- char *cp;
-
- if (optind == 0)
- next = NULL;
-
- optarg = NULL;
-
- if (next == NULL || *next == '\0')
- {
- if (optind == 0)
- optind++;
-
- if (optind >= argc || argv[optind][0] != '-' || argv[optind][1] == '\0')
- {
- optarg = NULL;
- if (optind < argc)
- optarg = argv[optind];
- return EOF;
- }
-
- if (strcmp(argv[optind], "--") == 0)
- {
- optind++;
- optarg = NULL;
- if (optind < argc)
- optarg = argv[optind];
- return EOF;
- }
-
- next = argv[optind];
- next++; // skip past -
- optind++;
- }
-
- c = *next++;
- cp = strchr(optstring, c);
-
- if (cp == NULL || c == ':')
- return '?';
-
- cp++;
- if (*cp == ':')
- {
- if (*next != '\0')
- {
- optarg = next;
- next = NULL;
- }
- else if (optind < argc)
- {
- optarg = argv[optind];
- optind++;
- }
- else
- {
- return '?';
- }
- }
-
- return c;
-}
diff --git a/navit/support/xgetopt/XGetopt.h b/navit/support/xgetopt/XGetopt.h
deleted file mode 100644
index b975026c1..000000000
--- a/navit/support/xgetopt/XGetopt.h
+++ /dev/null
@@ -1,29 +0,0 @@
-// XGetopt.h Version 1.2
-//
-// Author: Hans Dietrich
-// hdietrich2@hotmail.com
-//
-// This software is released into the public domain.
-// You are free to use it in any way you like.
-//
-// This software is provided "as is" with no expressed
-// or implied warranty. I accept no liability for any
-// damage or loss of business that this software may cause.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#ifndef XGETOPT_H
-#define XGETOPT_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int optind, opterr;
-extern char *optarg;
-
-int getopt(int argc, char *argv[], char *optstring);
-#ifdef __cplusplus
-}
-#endif
-#endif //XGETOPT_H
diff --git a/navit/support/xgetopt/getopt_long.c b/navit/support/xgetopt/getopt_long.c
deleted file mode 100644
index b5cce831c..000000000
--- a/navit/support/xgetopt/getopt_long.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * getopt_long() -- long options parser
- *
- * Portions Copyright (c) 1987, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Portions Copyright (c) 2003
- * PostgreSQL Global Development Group
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * src/port/getopt_long.c
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include "getopt_long.h"
-
-int opterr;
-int optopt;
-
-#define BADCH '?'
-#define BADARG ':'
-#define EMSG ""
-
-
-/*
- * getopt_long
- * Parse argc/argv argument vector, with long options.
- *
- * This implementation does not use optreset. Instead, we guarantee that
- * it can be restarted on a new argv array after a previous call returned -1,
- * if the caller resets optind to 1 before the first call of the new series.
- * (Internally, this means we must be sure to reset "place" to EMSG before
- * returning -1.)
- */
-int
-getopt_long(int argc, char *const argv[],
- const char *optstring,
- const struct option * longopts, int *longindex)
-{
- static char *place = EMSG; /* option letter processing */
- char *oli; /* option letter list index */
-
- /* getopt initialises optind to 1, but XGetopt defines it as 0 which breaks getopt_long */
- if(optind == 0)
- optind=1;
-
- if (!*place)
- { /* update scanning pointer */
- if (optind >= argc)
- {
- place = EMSG;
- return -1;
- }
-
- place = argv[optind];
-
- if (place[0] != '-')
- {
- place = EMSG;
- return -1;
- }
-
- place++;
-
- if (place[0] && place[0] == '-' && place[1] == '\0')
- { /* found "--" */
- ++optind;
- place = EMSG;
- return -1;
- }
-
- if (place[0] && place[0] == '-' && place[1])
- {
- /* long option */
- size_t namelen;
- int i;
-
- place++;
-
- namelen = strcspn(place, "=");
- for (i = 0; longopts[i].name != NULL; i++)
- {
- if (strlen(longopts[i].name) == namelen
- && strncmp(place, longopts[i].name, namelen) == 0)
- {
- if (longopts[i].has_arg)
- {
- if (place[namelen] == '=')
- optarg = place + namelen + 1;
- else if (optind < argc - 1)
- {
- optind++;
- optarg = argv[optind];
- }
- else
- {
- if (optstring[0] == ':')
- return BADARG;
- if (opterr)
- fprintf(stderr,
- "%s: option requires an argument -- %s\n",
- argv[0], place);
- place = EMSG;
- optind++;
- return BADCH;
- }
- }
- else
- {
- optarg = NULL;
- if (place[namelen] != 0)
- {
- /* XXX error? */
- }
- }
-
- optind++;
-
- if (longindex)
- *longindex = i;
-
- place = EMSG;
-
- if (longopts[i].flag == NULL)
- return longopts[i].val;
- else
- {
- *longopts[i].flag = longopts[i].val;
- return 0;
- }
- }
- }
-
- if (opterr && optstring[0] != ':')
- fprintf(stderr,
- "%s: illegal option -- %s\n", argv[0], place);
- place = EMSG;
- optind++;
- return BADCH;
- }
- }
-
- /* short option */
- optopt = (int) *place++;
-
- oli = strchr(optstring, optopt);
- if (!oli)
- {
- if (!*place)
- ++optind;
- if (opterr && *optstring != ':')
- fprintf(stderr,
- "%s: illegal option -- %c\n", argv[0], optopt);
- return BADCH;
- }
-
- if (oli[1] != ':')
- { /* don't need argument */
- optarg = NULL;
- if (!*place)
- ++optind;
- }
- else
- { /* need an argument */
- if (*place) /* no white space */
- optarg = place;
- else if (argc <= ++optind)
- { /* no arg */
- place = EMSG;
- if (*optstring == ':')
- return BADARG;
- if (opterr)
- fprintf(stderr,
- "%s: option requires an argument -- %c\n",
- argv[0], optopt);
- return BADCH;
- }
- else
- /* white space */
- optarg = argv[optind];
- place = EMSG;
- ++optind;
- }
- return optopt;
-}
diff --git a/navit/support/xgetopt/getopt_long.h b/navit/support/xgetopt/getopt_long.h
deleted file mode 100644
index 5d16ca4b1..000000000
--- a/navit/support/xgetopt/getopt_long.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Portions Copyright (c) 1987, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Portions Copyright (c) 2003-2011, PostgreSQL Global Development Group
- *
- * src/include/getopt_long.h
- */
-#ifndef GETOPT_LONG_H
-#define GETOPT_LONG_H
-
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
-/* These are picked up from the system's getopt() facility. */
-extern int opterr;
-extern int optind;
-extern int optopt;
-extern char *optarg;
-
-#ifndef HAVE_STRUCT_OPTION
-
-struct option
-{
- const char *name;
- int has_arg;
- int *flag;
- int val;
-};
-
-#define no_argument 0
-#define required_argument 1
-#endif
-
-#ifndef HAVE_GETOPT_LONG
-
-extern int getopt_long(int argc, char *const argv[],
- const char *optstring,
- const struct option * longopts, int *longindex);
-#endif
-
-#endif /* GETOPT_LONG_H */
diff --git a/navit/support/zlib/CMakeLists.txt b/navit/support/zlib/CMakeLists.txt
deleted file mode 100644
index 66d30198c..000000000
--- a/navit/support/zlib/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-supportlib_add_library(support_zlib adler32.c crc32.c infback.c inffast.c inflate.c inftrees.c zutil.c zlib_init.c)
diff --git a/navit/support/zlib/adler32.c b/navit/support/zlib/adler32.c
deleted file mode 100644
index 007ba2627..000000000
--- a/navit/support/zlib/adler32.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* adler32.c -- compute the Adler-32 checksum of a data stream
- * Copyright (C) 1995-2004 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#define ZLIB_INTERNAL
-#include "zlib.h"
-
-#define BASE 65521UL /* largest prime smaller than 65536 */
-#define NMAX 5552
-/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
-
-#define DO1(buf,i) {adler += (buf)[i]; sum2 += adler;}
-#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
-#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
-#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
-#define DO16(buf) DO8(buf,0); DO8(buf,8);
-
-/* use NO_DIVIDE if your processor does not do division in hardware */
-#ifdef NO_DIVIDE
-# define MOD(a) \
- do { \
- if (a >= (BASE << 16)) a -= (BASE << 16); \
- if (a >= (BASE << 15)) a -= (BASE << 15); \
- if (a >= (BASE << 14)) a -= (BASE << 14); \
- if (a >= (BASE << 13)) a -= (BASE << 13); \
- if (a >= (BASE << 12)) a -= (BASE << 12); \
- if (a >= (BASE << 11)) a -= (BASE << 11); \
- if (a >= (BASE << 10)) a -= (BASE << 10); \
- if (a >= (BASE << 9)) a -= (BASE << 9); \
- if (a >= (BASE << 8)) a -= (BASE << 8); \
- if (a >= (BASE << 7)) a -= (BASE << 7); \
- if (a >= (BASE << 6)) a -= (BASE << 6); \
- if (a >= (BASE << 5)) a -= (BASE << 5); \
- if (a >= (BASE << 4)) a -= (BASE << 4); \
- if (a >= (BASE << 3)) a -= (BASE << 3); \
- if (a >= (BASE << 2)) a -= (BASE << 2); \
- if (a >= (BASE << 1)) a -= (BASE << 1); \
- if (a >= BASE) a -= BASE; \
- } while (0)
-# define MOD4(a) \
- do { \
- if (a >= (BASE << 4)) a -= (BASE << 4); \
- if (a >= (BASE << 3)) a -= (BASE << 3); \
- if (a >= (BASE << 2)) a -= (BASE << 2); \
- if (a >= (BASE << 1)) a -= (BASE << 1); \
- if (a >= BASE) a -= BASE; \
- } while (0)
-#else
-# define MOD(a) a %= BASE
-# define MOD4(a) a %= BASE
-#endif
-
-/* ========================================================================= */
-uLong ZEXPORT adler32(adler, buf, len)
- uLong adler;
- const Bytef *buf;
- uInt len;
-{
- unsigned long sum2;
- unsigned n;
-
- /* split Adler-32 into component sums */
- sum2 = (adler >> 16) & 0xffff;
- adler &= 0xffff;
-
- /* in case user likes doing a byte at a time, keep it fast */
- if (len == 1) {
- adler += buf[0];
- if (adler >= BASE)
- adler -= BASE;
- sum2 += adler;
- if (sum2 >= BASE)
- sum2 -= BASE;
- return adler | (sum2 << 16);
- }
-
- /* initial Adler-32 value (deferred check for len == 1 speed) */
- if (buf == Z_NULL)
- return 1L;
-
- /* in case short lengths are provided, keep it somewhat fast */
- if (len < 16) {
- while (len--) {
- adler += *buf++;
- sum2 += adler;
- }
- if (adler >= BASE)
- adler -= BASE;
- MOD4(sum2); /* only added so many BASE's */
- return adler | (sum2 << 16);
- }
-
- /* do length NMAX blocks -- requires just one modulo operation */
- while (len >= NMAX) {
- len -= NMAX;
- n = NMAX / 16; /* NMAX is divisible by 16 */
- do {
- DO16(buf); /* 16 sums unrolled */
- buf += 16;
- } while (--n);
- MOD(adler);
- MOD(sum2);
- }
-
- /* do remaining bytes (less than NMAX, still just one modulo) */
- if (len) { /* avoid modulos if none remaining */
- while (len >= 16) {
- len -= 16;
- DO16(buf);
- buf += 16;
- }
- while (len--) {
- adler += *buf++;
- sum2 += adler;
- }
- MOD(adler);
- MOD(sum2);
- }
-
- /* return recombined sums */
- return adler | (sum2 << 16);
-}
-
-/* ========================================================================= */
-uLong ZEXPORT adler32_combine(adler1, adler2, len2)
- uLong adler1;
- uLong adler2;
- z_off_t len2;
-{
- unsigned long sum1;
- unsigned long sum2;
- unsigned rem;
-
- /* the derivation of this formula is left as an exercise for the reader */
- rem = (unsigned)(len2 % BASE);
- sum1 = adler1 & 0xffff;
- sum2 = rem * sum1;
- MOD(sum2);
- sum1 += (adler2 & 0xffff) + BASE - 1;
- sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;
- if (sum1 > BASE) sum1 -= BASE;
- if (sum1 > BASE) sum1 -= BASE;
- if (sum2 > (BASE << 1)) sum2 -= (BASE << 1);
- if (sum2 > BASE) sum2 -= BASE;
- return sum1 | (sum2 << 16);
-}
diff --git a/navit/support/zlib/crc32.c b/navit/support/zlib/crc32.c
deleted file mode 100644
index f658a9ef5..000000000
--- a/navit/support/zlib/crc32.c
+++ /dev/null
@@ -1,423 +0,0 @@
-/* crc32.c -- compute the CRC-32 of a data stream
- * Copyright (C) 1995-2005 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
- * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
- * tables for updating the shift register in one step with three exclusive-ors
- * instead of four steps with four exclusive-ors. This results in about a
- * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
- */
-
-/* @(#) $Id$ */
-
-/*
- Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
- protection on the static variables used to control the first-use generation
- of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
- first call get_crc_table() to initialize the tables before allowing more than
- one thread to use crc32().
- */
-
-#ifdef MAKECRCH
-# include <stdio.h>
-# ifndef DYNAMIC_CRC_TABLE
-# define DYNAMIC_CRC_TABLE
-# endif /* !DYNAMIC_CRC_TABLE */
-#endif /* MAKECRCH */
-
-#include "zutil.h" /* for STDC and FAR definitions */
-
-#define local static
-
-/* Find a four-byte integer type for crc32_little() and crc32_big(). */
-#ifndef NOBYFOUR
-# ifdef STDC /* need ANSI C limits.h to determine sizes */
-# include <limits.h>
-# define BYFOUR
-# if (UINT_MAX == 0xffffffffUL)
- typedef unsigned int u4;
-# else
-# if (ULONG_MAX == 0xffffffffUL)
- typedef unsigned long u4;
-# else
-# if (USHRT_MAX == 0xffffffffUL)
- typedef unsigned short u4;
-# else
-# undef BYFOUR /* can't find a four-byte integer type! */
-# endif
-# endif
-# endif
-# endif /* STDC */
-#endif /* !NOBYFOUR */
-
-/* Definitions for doing the crc four data bytes at a time. */
-#ifdef BYFOUR
-# define REV(w) (((w)>>24)+(((w)>>8)&0xff00)+ \
- (((w)&0xff00)<<8)+(((w)&0xff)<<24))
- local unsigned long crc32_little OF((unsigned long,
- const unsigned char FAR *, unsigned));
- local unsigned long crc32_big OF((unsigned long,
- const unsigned char FAR *, unsigned));
-# define TBLS 8
-#else
-# define TBLS 1
-#endif /* BYFOUR */
-
-/* Local functions for crc concatenation */
-local unsigned long gf2_matrix_times OF((unsigned long *mat,
- unsigned long vec));
-local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
-
-#ifdef DYNAMIC_CRC_TABLE
-
-local volatile int crc_table_empty = 1;
-local unsigned long FAR crc_table[TBLS][256];
-local void make_crc_table OF((void));
-#ifdef MAKECRCH
- local void write_table OF((FILE *, const unsigned long FAR *));
-#endif /* MAKECRCH */
-/*
- Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
- x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
-
- Polynomials over GF(2) are represented in binary, one bit per coefficient,
- with the lowest powers in the most significant bit. Then adding polynomials
- is just exclusive-or, and multiplying a polynomial by x is a right shift by
- one. If we call the above polynomial p, and represent a byte as the
- polynomial q, also with the lowest power in the most significant bit (so the
- byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
- where a mod b means the remainder after dividing a by b.
-
- This calculation is done using the shift-register method of multiplying and
- taking the remainder. The register is initialized to zero, and for each
- incoming bit, x^32 is added mod p to the register if the bit is a one (where
- x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
- x (which is shifting right by one and adding x^32 mod p if the bit shifted
- out is a one). We start with the highest power (least significant bit) of
- q and repeat for all eight bits of q.
-
- The first table is simply the CRC of all possible eight bit values. This is
- all the information needed to generate CRCs on data a byte at a time for all
- combinations of CRC register values and incoming bytes. The remaining tables
- allow for word-at-a-time CRC calculation for both big-endian and little-
- endian machines, where a word is four bytes.
-*/
-local void make_crc_table()
-{
- unsigned long c;
- int n, k;
- unsigned long poly; /* polynomial exclusive-or pattern */
- /* terms of polynomial defining this crc (except x^32): */
- static volatile int first = 1; /* flag to limit concurrent making */
- static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
-
- /* See if another task is already doing this (not thread-safe, but better
- than nothing -- significantly reduces duration of vulnerability in
- case the advice about DYNAMIC_CRC_TABLE is ignored) */
- if (first) {
- first = 0;
-
- /* make exclusive-or pattern from polynomial (0xedb88320UL) */
- poly = 0UL;
- for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
- poly |= 1UL << (31 - p[n]);
-
- /* generate a crc for every 8-bit value */
- for (n = 0; n < 256; n++) {
- c = (unsigned long)n;
- for (k = 0; k < 8; k++)
- c = c & 1 ? poly ^ (c >> 1) : c >> 1;
- crc_table[0][n] = c;
- }
-
-#ifdef BYFOUR
- /* generate crc for each value followed by one, two, and three zeros,
- and then the byte reversal of those as well as the first table */
- for (n = 0; n < 256; n++) {
- c = crc_table[0][n];
- crc_table[4][n] = REV(c);
- for (k = 1; k < 4; k++) {
- c = crc_table[0][c & 0xff] ^ (c >> 8);
- crc_table[k][n] = c;
- crc_table[k + 4][n] = REV(c);
- }
- }
-#endif /* BYFOUR */
-
- crc_table_empty = 0;
- }
- else { /* not first */
- /* wait for the other guy to finish (not efficient, but rare) */
- while (crc_table_empty)
- ;
- }
-
-#ifdef MAKECRCH
- /* write out CRC tables to crc32.h */
- {
- FILE *out;
-
- out = fopen("crc32.h", "w");
- if (out == NULL) return;
- fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
- fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
- fprintf(out, "local const unsigned long FAR ");
- fprintf(out, "crc_table[TBLS][256] =\n{\n {\n");
- write_table(out, crc_table[0]);
-# ifdef BYFOUR
- fprintf(out, "#ifdef BYFOUR\n");
- for (k = 1; k < 8; k++) {
- fprintf(out, " },\n {\n");
- write_table(out, crc_table[k]);
- }
- fprintf(out, "#endif\n");
-# endif /* BYFOUR */
- fprintf(out, " }\n};\n");
- fclose(out);
- }
-#endif /* MAKECRCH */
-}
-
-#ifdef MAKECRCH
-local void write_table(out, table)
- FILE *out;
- const unsigned long FAR *table;
-{
- int n;
-
- for (n = 0; n < 256; n++)
- fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", table[n],
- n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
-}
-#endif /* MAKECRCH */
-
-#else /* !DYNAMIC_CRC_TABLE */
-/* ========================================================================
- * Tables of CRC-32s of all single-byte values, made by make_crc_table().
- */
-#include "crc32.h"
-#endif /* DYNAMIC_CRC_TABLE */
-
-/* =========================================================================
- * This function can be used by asm versions of crc32()
- */
-const unsigned long FAR * ZEXPORT get_crc_table()
-{
-#ifdef DYNAMIC_CRC_TABLE
- if (crc_table_empty)
- make_crc_table();
-#endif /* DYNAMIC_CRC_TABLE */
- return (const unsigned long FAR *)crc_table;
-}
-
-/* ========================================================================= */
-#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
-#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
-
-/* ========================================================================= */
-unsigned long ZEXPORT crc32(crc, buf, len)
- unsigned long crc;
- const unsigned char FAR *buf;
- unsigned len;
-{
- if (buf == Z_NULL) return 0UL;
-
-#ifdef DYNAMIC_CRC_TABLE
- if (crc_table_empty)
- make_crc_table();
-#endif /* DYNAMIC_CRC_TABLE */
-
-#ifdef BYFOUR
- if (sizeof(void *) == sizeof(ptrdiff_t)) {
- u4 endian;
-
- endian = 1;
- if (*((unsigned char *)(&endian)))
- return crc32_little(crc, buf, len);
- else
- return crc32_big(crc, buf, len);
- }
-#endif /* BYFOUR */
- crc = crc ^ 0xffffffffUL;
- while (len >= 8) {
- DO8;
- len -= 8;
- }
- if (len) do {
- DO1;
- } while (--len);
- return crc ^ 0xffffffffUL;
-}
-
-#ifdef BYFOUR
-
-/* ========================================================================= */
-#define DOLIT4 c ^= *buf4++; \
- c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
- crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
-#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
-
-/* ========================================================================= */
-local unsigned long crc32_little(crc, buf, len)
- unsigned long crc;
- const unsigned char FAR *buf;
- unsigned len;
-{
- register u4 c;
- register const u4 FAR *buf4;
-
- c = (u4)crc;
- c = ~c;
- while (len && ((ptrdiff_t)buf & 3)) {
- c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
- len--;
- }
-
- buf4 = (const u4 FAR *)(const void FAR *)buf;
- while (len >= 32) {
- DOLIT32;
- len -= 32;
- }
- while (len >= 4) {
- DOLIT4;
- len -= 4;
- }
- buf = (const unsigned char FAR *)buf4;
-
- if (len) do {
- c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
- } while (--len);
- c = ~c;
- return (unsigned long)c;
-}
-
-/* ========================================================================= */
-#define DOBIG4 c ^= *++buf4; \
- c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
- crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
-#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
-
-/* ========================================================================= */
-local unsigned long crc32_big(crc, buf, len)
- unsigned long crc;
- const unsigned char FAR *buf;
- unsigned len;
-{
- register u4 c;
- register const u4 FAR *buf4;
-
- c = REV((u4)crc);
- c = ~c;
- while (len && ((ptrdiff_t)buf & 3)) {
- c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
- len--;
- }
-
- buf4 = (const u4 FAR *)(const void FAR *)buf;
- buf4--;
- while (len >= 32) {
- DOBIG32;
- len -= 32;
- }
- while (len >= 4) {
- DOBIG4;
- len -= 4;
- }
- buf4++;
- buf = (const unsigned char FAR *)buf4;
-
- if (len) do {
- c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
- } while (--len);
- c = ~c;
- return (unsigned long)(REV(c));
-}
-
-#endif /* BYFOUR */
-
-#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */
-
-/* ========================================================================= */
-local unsigned long gf2_matrix_times(mat, vec)
- unsigned long *mat;
- unsigned long vec;
-{
- unsigned long sum;
-
- sum = 0;
- while (vec) {
- if (vec & 1)
- sum ^= *mat;
- vec >>= 1;
- mat++;
- }
- return sum;
-}
-
-/* ========================================================================= */
-local void gf2_matrix_square(square, mat)
- unsigned long *square;
- unsigned long *mat;
-{
- int n;
-
- for (n = 0; n < GF2_DIM; n++)
- square[n] = gf2_matrix_times(mat, mat[n]);
-}
-
-/* ========================================================================= */
-uLong ZEXPORT crc32_combine(crc1, crc2, len2)
- uLong crc1;
- uLong crc2;
- z_off_t len2;
-{
- int n;
- unsigned long row;
- unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */
- unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */
-
- /* degenerate case */
- if (len2 == 0)
- return crc1;
-
- /* put operator for one zero bit in odd */
- odd[0] = 0xedb88320L; /* CRC-32 polynomial */
- row = 1;
- for (n = 1; n < GF2_DIM; n++) {
- odd[n] = row;
- row <<= 1;
- }
-
- /* put operator for two zero bits in even */
- gf2_matrix_square(even, odd);
-
- /* put operator for four zero bits in odd */
- gf2_matrix_square(odd, even);
-
- /* apply len2 zeros to crc1 (first square will put the operator for one
- zero byte, eight zero bits, in even) */
- do {
- /* apply zeros operator for this bit of len2 */
- gf2_matrix_square(even, odd);
- if (len2 & 1)
- crc1 = gf2_matrix_times(even, crc1);
- len2 >>= 1;
-
- /* if no more bits set, then done */
- if (len2 == 0)
- break;
-
- /* another iteration of the loop with odd and even swapped */
- gf2_matrix_square(odd, even);
- if (len2 & 1)
- crc1 = gf2_matrix_times(odd, crc1);
- len2 >>= 1;
-
- /* if no more bits set, then done */
- } while (len2 != 0);
-
- /* return combined crc */
- crc1 ^= crc2;
- return crc1;
-}
diff --git a/navit/support/zlib/crc32.h b/navit/support/zlib/crc32.h
deleted file mode 100644
index 8053b6117..000000000
--- a/navit/support/zlib/crc32.h
+++ /dev/null
@@ -1,441 +0,0 @@
-/* crc32.h -- tables for rapid CRC calculation
- * Generated automatically by crc32.c
- */
-
-local const unsigned long FAR crc_table[TBLS][256] =
-{
- {
- 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
- 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
- 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
- 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
- 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
- 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
- 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
- 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
- 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
- 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
- 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
- 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
- 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
- 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
- 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
- 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
- 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
- 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
- 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
- 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
- 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
- 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
- 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
- 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
- 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
- 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
- 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
- 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
- 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
- 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
- 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
- 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
- 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
- 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
- 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
- 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
- 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
- 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
- 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
- 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
- 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
- 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
- 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
- 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
- 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
- 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
- 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
- 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
- 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
- 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
- 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
- 0x2d02ef8dUL
-#ifdef BYFOUR
- },
- {
- 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
- 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
- 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
- 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
- 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
- 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
- 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
- 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
- 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
- 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
- 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
- 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
- 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
- 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
- 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
- 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
- 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
- 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
- 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
- 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
- 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
- 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
- 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
- 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
- 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
- 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
- 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
- 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
- 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
- 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
- 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
- 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
- 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
- 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
- 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
- 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
- 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
- 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
- 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
- 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
- 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
- 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
- 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
- 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
- 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
- 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
- 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
- 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
- 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
- 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
- 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
- 0x9324fd72UL
- },
- {
- 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
- 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
- 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
- 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
- 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
- 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
- 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
- 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
- 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
- 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
- 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
- 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
- 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
- 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
- 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
- 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
- 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
- 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
- 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
- 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
- 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
- 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
- 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
- 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
- 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
- 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
- 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
- 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
- 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
- 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
- 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
- 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
- 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
- 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
- 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
- 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
- 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
- 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
- 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
- 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
- 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
- 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
- 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
- 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
- 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
- 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
- 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
- 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
- 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
- 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
- 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
- 0xbe9834edUL
- },
- {
- 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
- 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
- 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
- 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
- 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
- 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
- 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
- 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
- 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
- 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
- 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
- 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
- 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
- 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
- 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
- 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
- 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
- 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
- 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
- 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
- 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
- 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
- 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
- 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
- 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
- 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
- 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
- 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
- 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
- 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
- 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
- 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
- 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
- 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
- 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
- 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
- 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
- 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
- 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
- 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
- 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
- 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
- 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
- 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
- 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
- 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
- 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
- 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
- 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
- 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
- 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
- 0xde0506f1UL
- },
- {
- 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
- 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
- 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
- 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
- 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
- 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
- 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
- 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
- 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
- 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
- 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
- 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
- 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
- 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
- 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
- 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
- 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
- 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
- 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
- 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
- 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
- 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
- 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
- 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
- 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
- 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
- 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
- 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
- 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
- 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
- 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
- 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
- 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
- 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
- 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
- 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
- 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
- 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
- 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
- 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
- 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
- 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
- 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
- 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
- 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
- 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
- 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
- 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
- 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
- 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
- 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
- 0x8def022dUL
- },
- {
- 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
- 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
- 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
- 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
- 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
- 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
- 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
- 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
- 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
- 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
- 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
- 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
- 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
- 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
- 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
- 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
- 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
- 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
- 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
- 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
- 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
- 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
- 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
- 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
- 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
- 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
- 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
- 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
- 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
- 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
- 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
- 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
- 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
- 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
- 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
- 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
- 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
- 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
- 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
- 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
- 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
- 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
- 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
- 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
- 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
- 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
- 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
- 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
- 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
- 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
- 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
- 0x72fd2493UL
- },
- {
- 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
- 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
- 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
- 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
- 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
- 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
- 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
- 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
- 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
- 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
- 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
- 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
- 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
- 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
- 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
- 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
- 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
- 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
- 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
- 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
- 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
- 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
- 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
- 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
- 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
- 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
- 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
- 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
- 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
- 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
- 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
- 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
- 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
- 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
- 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
- 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
- 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
- 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
- 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
- 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
- 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
- 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
- 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
- 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
- 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
- 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
- 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
- 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
- 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
- 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
- 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
- 0xed3498beUL
- },
- {
- 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
- 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
- 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
- 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
- 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
- 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
- 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
- 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
- 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
- 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
- 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
- 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
- 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
- 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
- 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
- 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
- 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
- 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
- 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
- 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
- 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
- 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
- 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
- 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
- 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
- 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
- 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
- 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
- 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
- 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
- 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
- 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
- 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
- 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
- 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
- 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
- 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
- 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
- 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
- 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
- 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
- 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
- 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
- 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
- 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
- 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
- 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
- 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
- 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
- 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
- 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
- 0xf10605deUL
-#endif
- }
-};
diff --git a/navit/support/zlib/infback.c b/navit/support/zlib/infback.c
deleted file mode 100644
index 455dbc9ee..000000000
--- a/navit/support/zlib/infback.c
+++ /dev/null
@@ -1,623 +0,0 @@
-/* infback.c -- inflate using a call-back interface
- * Copyright (C) 1995-2005 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
- This code is largely copied from inflate.c. Normally either infback.o or
- inflate.o would be linked into an application--not both. The interface
- with inffast.c is retained so that optimized assembler-coded versions of
- inflate_fast() can be used with either inflate.c or infback.c.
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-/* function prototypes */
-local void fixedtables OF((struct inflate_state FAR *state));
-
-/*
- strm provides memory allocation functions in zalloc and zfree, or
- Z_NULL to use the library memory allocation functions.
-
- windowBits is in the range 8..15, and window is a user-supplied
- window and output buffer that is 2**windowBits bytes.
- */
-int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size)
-z_streamp strm;
-int windowBits;
-unsigned char FAR *window;
-const char *version;
-int stream_size;
-{
- struct inflate_state FAR *state;
-
- if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
- stream_size != (int)(sizeof(z_stream)))
- return Z_VERSION_ERROR;
- if (strm == Z_NULL || window == Z_NULL ||
- windowBits < 8 || windowBits > 15)
- return Z_STREAM_ERROR;
- strm->msg = Z_NULL; /* in case we return an error */
- if (strm->zalloc == (alloc_func)0) {
- strm->zalloc = zcalloc;
- strm->opaque = (voidpf)0;
- }
- if (strm->zfree == (free_func)0) strm->zfree = zcfree;
- state = (struct inflate_state FAR *)ZALLOC(strm, 1,
- sizeof(struct inflate_state));
- if (state == Z_NULL) return Z_MEM_ERROR;
- Tracev((stderr, "inflate: allocated\n"));
- strm->state = (struct internal_state FAR *)state;
- state->dmax = 32768U;
- state->wbits = windowBits;
- state->wsize = 1U << windowBits;
- state->window = window;
- state->write = 0;
- state->whave = 0;
- return Z_OK;
-}
-
-/*
- Return state with length and distance decoding tables and index sizes set to
- fixed code decoding. Normally this returns fixed tables from inffixed.h.
- If BUILDFIXED is defined, then instead this routine builds the tables the
- first time it's called, and returns those tables the first time and
- thereafter. This reduces the size of the code by about 2K bytes, in
- exchange for a little execution time. However, BUILDFIXED should not be
- used for threaded applications, since the rewriting of the tables and virgin
- may not be thread-safe.
- */
-local void fixedtables(state)
-struct inflate_state FAR *state;
-{
-#ifdef BUILDFIXED
- static int virgin = 1;
- static code *lenfix, *distfix;
- static code fixed[544];
-
- /* build fixed huffman tables if first call (may not be thread safe) */
- if (virgin) {
- unsigned sym, bits;
- static code *next;
-
- /* literal/length table */
- sym = 0;
- while (sym < 144) state->lens[sym++] = 8;
- while (sym < 256) state->lens[sym++] = 9;
- while (sym < 280) state->lens[sym++] = 7;
- while (sym < 288) state->lens[sym++] = 8;
- next = fixed;
- lenfix = next;
- bits = 9;
- inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);
-
- /* distance table */
- sym = 0;
- while (sym < 32) state->lens[sym++] = 5;
- distfix = next;
- bits = 5;
- inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);
-
- /* do this just once */
- virgin = 0;
- }
-#else /* !BUILDFIXED */
-# include "inffixed.h"
-#endif /* BUILDFIXED */
- state->lencode = lenfix;
- state->lenbits = 9;
- state->distcode = distfix;
- state->distbits = 5;
-}
-
-/* Macros for inflateBack(): */
-
-/* Load returned state from inflate_fast() */
-#define LOAD() \
- do { \
- put = strm->next_out; \
- left = strm->avail_out; \
- next = strm->next_in; \
- have = strm->avail_in; \
- hold = state->hold; \
- bits = state->bits; \
- } while (0)
-
-/* Set state from registers for inflate_fast() */
-#define RESTORE() \
- do { \
- strm->next_out = put; \
- strm->avail_out = left; \
- strm->next_in = next; \
- strm->avail_in = have; \
- state->hold = hold; \
- state->bits = bits; \
- } while (0)
-
-/* Clear the input bit accumulator */
-#define INITBITS() \
- do { \
- hold = 0; \
- bits = 0; \
- } while (0)
-
-/* Assure that some input is available. If input is requested, but denied,
- then return a Z_BUF_ERROR from inflateBack(). */
-#define PULL() \
- do { \
- if (have == 0) { \
- have = in(in_desc, &next); \
- if (have == 0) { \
- next = Z_NULL; \
- ret = Z_BUF_ERROR; \
- goto inf_leave; \
- } \
- } \
- } while (0)
-
-/* Get a byte of input into the bit accumulator, or return from inflateBack()
- with an error if there is no input available. */
-#define PULLBYTE() \
- do { \
- PULL(); \
- have--; \
- hold += (unsigned long)(*next++) << bits; \
- bits += 8; \
- } while (0)
-
-/* Assure that there are at least n bits in the bit accumulator. If there is
- not enough available input to do that, then return from inflateBack() with
- an error. */
-#define NEEDBITS(n) \
- do { \
- while (bits < (unsigned)(n)) \
- PULLBYTE(); \
- } while (0)
-
-/* Return the low n bits of the bit accumulator (n < 16) */
-#define BITS(n) \
- ((unsigned)hold & ((1U << (n)) - 1))
-
-/* Remove n bits from the bit accumulator */
-#define DROPBITS(n) \
- do { \
- hold >>= (n); \
- bits -= (unsigned)(n); \
- } while (0)
-
-/* Remove zero to seven bits as needed to go to a byte boundary */
-#define BYTEBITS() \
- do { \
- hold >>= bits & 7; \
- bits -= bits & 7; \
- } while (0)
-
-/* Assure that some output space is available, by writing out the window
- if it's full. If the write fails, return from inflateBack() with a
- Z_BUF_ERROR. */
-#define ROOM() \
- do { \
- if (left == 0) { \
- put = state->window; \
- left = state->wsize; \
- state->whave = left; \
- if (out(out_desc, put, left)) { \
- ret = Z_BUF_ERROR; \
- goto inf_leave; \
- } \
- } \
- } while (0)
-
-/*
- strm provides the memory allocation functions and window buffer on input,
- and provides information on the unused input on return. For Z_DATA_ERROR
- returns, strm will also provide an error message.
-
- in() and out() are the call-back input and output functions. When
- inflateBack() needs more input, it calls in(). When inflateBack() has
- filled the window with output, or when it completes with data in the
- window, it calls out() to write out the data. The application must not
- change the provided input until in() is called again or inflateBack()
- returns. The application must not change the window/output buffer until
- inflateBack() returns.
-
- in() and out() are called with a descriptor parameter provided in the
- inflateBack() call. This parameter can be a structure that provides the
- information required to do the read or write, as well as accumulated
- information on the input and output such as totals and check values.
-
- in() should return zero on failure. out() should return non-zero on
- failure. If either in() or out() fails, than inflateBack() returns a
- Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it
- was in() or out() that caused in the error. Otherwise, inflateBack()
- returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format
- error, or Z_MEM_ERROR if it could not allocate memory for the state.
- inflateBack() can also return Z_STREAM_ERROR if the input parameters
- are not correct, i.e. strm is Z_NULL or the state was not initialized.
- */
-int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc)
-z_streamp strm;
-in_func in;
-void FAR *in_desc;
-out_func out;
-void FAR *out_desc;
-{
- struct inflate_state FAR *state;
- unsigned char FAR *next; /* next input */
- unsigned char FAR *put; /* next output */
- unsigned have, left; /* available input and output */
- unsigned long hold; /* bit buffer */
- unsigned bits; /* bits in bit buffer */
- unsigned copy; /* number of stored or match bytes to copy */
- unsigned char FAR *from; /* where to copy match bytes from */
- code this; /* current decoding table entry */
- code last; /* parent table entry */
- unsigned len; /* length to copy for repeats, bits to drop */
- int ret; /* return code */
- static const unsigned short order[19] = /* permutation of code lengths */
- {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
-
- /* Check that the strm exists and that the state was initialized */
- if (strm == Z_NULL || strm->state == Z_NULL)
- return Z_STREAM_ERROR;
- state = (struct inflate_state FAR *)strm->state;
-
- /* Reset the state */
- strm->msg = Z_NULL;
- state->mode = TYPE;
- state->last = 0;
- state->whave = 0;
- next = strm->next_in;
- have = next != Z_NULL ? strm->avail_in : 0;
- hold = 0;
- bits = 0;
- put = state->window;
- left = state->wsize;
-
- /* Inflate until end of block marked as last */
- for (;;)
- switch (state->mode) {
- case TYPE:
- /* determine and dispatch block type */
- if (state->last) {
- BYTEBITS();
- state->mode = DONE;
- break;
- }
- NEEDBITS(3);
- state->last = BITS(1);
- DROPBITS(1);
- switch (BITS(2)) {
- case 0: /* stored block */
- Tracev((stderr, "inflate: stored block%s\n",
- state->last ? " (last)" : ""));
- state->mode = STORED;
- break;
- case 1: /* fixed block */
- fixedtables(state);
- Tracev((stderr, "inflate: fixed codes block%s\n",
- state->last ? " (last)" : ""));
- state->mode = LEN; /* decode codes */
- break;
- case 2: /* dynamic block */
- Tracev((stderr, "inflate: dynamic codes block%s\n",
- state->last ? " (last)" : ""));
- state->mode = TABLE;
- break;
- case 3:
- strm->msg = (char *)"invalid block type";
- state->mode = BAD;
- }
- DROPBITS(2);
- break;
-
- case STORED:
- /* get and verify stored block length */
- BYTEBITS(); /* go to byte boundary */
- NEEDBITS(32);
- if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) {
- strm->msg = (char *)"invalid stored block lengths";
- state->mode = BAD;
- break;
- }
- state->length = (unsigned)hold & 0xffff;
- Tracev((stderr, "inflate: stored length %u\n",
- state->length));
- INITBITS();
-
- /* copy stored block from input to output */
- while (state->length != 0) {
- copy = state->length;
- PULL();
- ROOM();
- if (copy > have) copy = have;
- if (copy > left) copy = left;
- zmemcpy(put, next, copy);
- have -= copy;
- next += copy;
- left -= copy;
- put += copy;
- state->length -= copy;
- }
- Tracev((stderr, "inflate: stored end\n"));
- state->mode = TYPE;
- break;
-
- case TABLE:
- /* get dynamic table entries descriptor */
- NEEDBITS(14);
- state->nlen = BITS(5) + 257;
- DROPBITS(5);
- state->ndist = BITS(5) + 1;
- DROPBITS(5);
- state->ncode = BITS(4) + 4;
- DROPBITS(4);
-#ifndef PKZIP_BUG_WORKAROUND
- if (state->nlen > 286 || state->ndist > 30) {
- strm->msg = (char *)"too many length or distance symbols";
- state->mode = BAD;
- break;
- }
-#endif
- Tracev((stderr, "inflate: table sizes ok\n"));
-
- /* get code length code lengths (not a typo) */
- state->have = 0;
- while (state->have < state->ncode) {
- NEEDBITS(3);
- state->lens[order[state->have++]] = (unsigned short)BITS(3);
- DROPBITS(3);
- }
- while (state->have < 19)
- state->lens[order[state->have++]] = 0;
- state->next = state->codes;
- state->lencode = (code const FAR *)(state->next);
- state->lenbits = 7;
- ret = inflate_table(CODES, state->lens, 19, &(state->next),
- &(state->lenbits), state->work);
- if (ret) {
- strm->msg = (char *)"invalid code lengths set";
- state->mode = BAD;
- break;
- }
- Tracev((stderr, "inflate: code lengths ok\n"));
-
- /* get length and distance code code lengths */
- state->have = 0;
- while (state->have < state->nlen + state->ndist) {
- for (;;) {
- this = state->lencode[BITS(state->lenbits)];
- if ((unsigned)(this.bits) <= bits) break;
- PULLBYTE();
- }
- if (this.val < 16) {
- NEEDBITS(this.bits);
- DROPBITS(this.bits);
- state->lens[state->have++] = this.val;
- }
- else {
- if (this.val == 16) {
- NEEDBITS(this.bits + 2);
- DROPBITS(this.bits);
- if (state->have == 0) {
- strm->msg = (char *)"invalid bit length repeat";
- state->mode = BAD;
- break;
- }
- len = (unsigned)(state->lens[state->have - 1]);
- copy = 3 + BITS(2);
- DROPBITS(2);
- }
- else if (this.val == 17) {
- NEEDBITS(this.bits + 3);
- DROPBITS(this.bits);
- len = 0;
- copy = 3 + BITS(3);
- DROPBITS(3);
- }
- else {
- NEEDBITS(this.bits + 7);
- DROPBITS(this.bits);
- len = 0;
- copy = 11 + BITS(7);
- DROPBITS(7);
- }
- if (state->have + copy > state->nlen + state->ndist) {
- strm->msg = (char *)"invalid bit length repeat";
- state->mode = BAD;
- break;
- }
- while (copy--)
- state->lens[state->have++] = (unsigned short)len;
- }
- }
-
- /* handle error breaks in while */
- if (state->mode == BAD) break;
-
- /* build code tables */
- state->next = state->codes;
- state->lencode = (code const FAR *)(state->next);
- state->lenbits = 9;
- ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
- &(state->lenbits), state->work);
- if (ret) {
- strm->msg = (char *)"invalid literal/lengths set";
- state->mode = BAD;
- break;
- }
- state->distcode = (code const FAR *)(state->next);
- state->distbits = 6;
- ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
- &(state->next), &(state->distbits), state->work);
- if (ret) {
- strm->msg = (char *)"invalid distances set";
- state->mode = BAD;
- break;
- }
- Tracev((stderr, "inflate: codes ok\n"));
- state->mode = LEN;
-
- case LEN:
- /* use inflate_fast() if we have enough input and output */
- if (have >= 6 && left >= 258) {
- RESTORE();
- if (state->whave < state->wsize)
- state->whave = state->wsize - left;
- inflate_fast(strm, state->wsize);
- LOAD();
- break;
- }
-
- /* get a literal, length, or end-of-block code */
- for (;;) {
- this = state->lencode[BITS(state->lenbits)];
- if ((unsigned)(this.bits) <= bits) break;
- PULLBYTE();
- }
- if (this.op && (this.op & 0xf0) == 0) {
- last = this;
- for (;;) {
- this = state->lencode[last.val +
- (BITS(last.bits + last.op) >> last.bits)];
- if ((unsigned)(last.bits + this.bits) <= bits) break;
- PULLBYTE();
- }
- DROPBITS(last.bits);
- }
- DROPBITS(this.bits);
- state->length = (unsigned)this.val;
-
- /* process literal */
- if (this.op == 0) {
- Tracevv((stderr, this.val >= 0x20 && this.val < 0x7f ?
- "inflate: literal '%c'\n" :
- "inflate: literal 0x%02x\n", this.val));
- ROOM();
- *put++ = (unsigned char)(state->length);
- left--;
- state->mode = LEN;
- break;
- }
-
- /* process end of block */
- if (this.op & 32) {
- Tracevv((stderr, "inflate: end of block\n"));
- state->mode = TYPE;
- break;
- }
-
- /* invalid code */
- if (this.op & 64) {
- strm->msg = (char *)"invalid literal/length code";
- state->mode = BAD;
- break;
- }
-
- /* length code -- get extra bits, if any */
- state->extra = (unsigned)(this.op) & 15;
- if (state->extra != 0) {
- NEEDBITS(state->extra);
- state->length += BITS(state->extra);
- DROPBITS(state->extra);
- }
- Tracevv((stderr, "inflate: length %u\n", state->length));
-
- /* get distance code */
- for (;;) {
- this = state->distcode[BITS(state->distbits)];
- if ((unsigned)(this.bits) <= bits) break;
- PULLBYTE();
- }
- if ((this.op & 0xf0) == 0) {
- last = this;
- for (;;) {
- this = state->distcode[last.val +
- (BITS(last.bits + last.op) >> last.bits)];
- if ((unsigned)(last.bits + this.bits) <= bits) break;
- PULLBYTE();
- }
- DROPBITS(last.bits);
- }
- DROPBITS(this.bits);
- if (this.op & 64) {
- strm->msg = (char *)"invalid distance code";
- state->mode = BAD;
- break;
- }
- state->offset = (unsigned)this.val;
-
- /* get distance extra bits, if any */
- state->extra = (unsigned)(this.op) & 15;
- if (state->extra != 0) {
- NEEDBITS(state->extra);
- state->offset += BITS(state->extra);
- DROPBITS(state->extra);
- }
- if (state->offset > state->wsize - (state->whave < state->wsize ?
- left : 0)) {
- strm->msg = (char *)"invalid distance too far back";
- state->mode = BAD;
- break;
- }
- Tracevv((stderr, "inflate: distance %u\n", state->offset));
-
- /* copy match from window to output */
- do {
- ROOM();
- copy = state->wsize - state->offset;
- if (copy < left) {
- from = put + copy;
- copy = left - copy;
- }
- else {
- from = put - state->offset;
- copy = left;
- }
- if (copy > state->length) copy = state->length;
- state->length -= copy;
- left -= copy;
- do {
- *put++ = *from++;
- } while (--copy);
- } while (state->length != 0);
- break;
-
- case DONE:
- /* inflate stream terminated properly -- write leftover output */
- ret = Z_STREAM_END;
- if (left < state->wsize) {
- if (out(out_desc, state->window, state->wsize - left))
- ret = Z_BUF_ERROR;
- }
- goto inf_leave;
-
- case BAD:
- ret = Z_DATA_ERROR;
- goto inf_leave;
-
- default: /* can't happen, but makes compilers happy */
- ret = Z_STREAM_ERROR;
- goto inf_leave;
- }
-
- /* Return unused input */
- inf_leave:
- strm->next_in = next;
- strm->avail_in = have;
- return ret;
-}
-
-int ZEXPORT inflateBackEnd(strm)
-z_streamp strm;
-{
- if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
- return Z_STREAM_ERROR;
- ZFREE(strm, strm->state);
- strm->state = Z_NULL;
- Tracev((stderr, "inflate: end\n"));
- return Z_OK;
-}
diff --git a/navit/support/zlib/inffast.c b/navit/support/zlib/inffast.c
deleted file mode 100644
index bbee92ed1..000000000
--- a/navit/support/zlib/inffast.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/* inffast.c -- fast decoding
- * Copyright (C) 1995-2004 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-#ifndef ASMINF
-
-/* Allow machine dependent optimization for post-increment or pre-increment.
- Based on testing to date,
- Pre-increment preferred for:
- - PowerPC G3 (Adler)
- - MIPS R5000 (Randers-Pehrson)
- Post-increment preferred for:
- - none
- No measurable difference:
- - Pentium III (Anderson)
- - M68060 (Nikl)
- */
-#ifdef POSTINC
-# define OFF 0
-# define PUP(a) *(a)++
-#else
-# define OFF 1
-# define PUP(a) *++(a)
-#endif
-
-/*
- Decode literal, length, and distance codes and write out the resulting
- literal and match bytes until either not enough input or output is
- available, an end-of-block is encountered, or a data error is encountered.
- When large enough input and output buffers are supplied to inflate(), for
- example, a 16K input buffer and a 64K output buffer, more than 95% of the
- inflate execution time is spent in this routine.
-
- Entry assumptions:
-
- state->mode == LEN
- strm->avail_in >= 6
- strm->avail_out >= 258
- start >= strm->avail_out
- state->bits < 8
-
- On return, state->mode is one of:
-
- LEN -- ran out of enough output space or enough available input
- TYPE -- reached end of block code, inflate() to interpret next block
- BAD -- error in block data
-
- Notes:
-
- - The maximum input bits used by a length/distance pair is 15 bits for the
- length code, 5 bits for the length extra, 15 bits for the distance code,
- and 13 bits for the distance extra. This totals 48 bits, or six bytes.
- Therefore if strm->avail_in >= 6, then there is enough input to avoid
- checking for available input while decoding.
-
- - The maximum bytes that a single length/distance pair can output is 258
- bytes, which is the maximum length that can be coded. inflate_fast()
- requires strm->avail_out >= 258 for each loop to avoid checking for
- output space.
- */
-void inflate_fast(strm, start)
-z_streamp strm;
-unsigned start; /* inflate()'s starting value for strm->avail_out */
-{
- struct inflate_state FAR *state;
- unsigned char FAR *in; /* local strm->next_in */
- unsigned char FAR *last; /* while in < last, enough input available */
- unsigned char FAR *out; /* local strm->next_out */
- unsigned char FAR *beg; /* inflate()'s initial strm->next_out */
- unsigned char FAR *end; /* while out < end, enough space available */
-#ifdef INFLATE_STRICT
- unsigned dmax; /* maximum distance from zlib header */
-#endif
- unsigned wsize; /* window size or zero if not using window */
- unsigned whave; /* valid bytes in the window */
- unsigned write; /* window write index */
- unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */
- unsigned long hold; /* local strm->hold */
- unsigned bits; /* local strm->bits */
- code const FAR *lcode; /* local strm->lencode */
- code const FAR *dcode; /* local strm->distcode */
- unsigned lmask; /* mask for first level of length codes */
- unsigned dmask; /* mask for first level of distance codes */
- code this; /* retrieved table entry */
- unsigned op; /* code bits, operation, extra bits, or */
- /* window position, window bytes to copy */
- unsigned len; /* match length, unused bytes */
- unsigned dist; /* match distance */
- unsigned char FAR *from; /* where to copy match from */
-
- /* copy state to local variables */
- state = (struct inflate_state FAR *)strm->state;
- in = strm->next_in - OFF;
- last = in + (strm->avail_in - 5);
- out = strm->next_out - OFF;
- beg = out - (start - strm->avail_out);
- end = out + (strm->avail_out - 257);
-#ifdef INFLATE_STRICT
- dmax = state->dmax;
-#endif
- wsize = state->wsize;
- whave = state->whave;
- write = state->write;
- window = state->window;
- hold = state->hold;
- bits = state->bits;
- lcode = state->lencode;
- dcode = state->distcode;
- lmask = (1U << state->lenbits) - 1;
- dmask = (1U << state->distbits) - 1;
-
- /* decode literals and length/distances until end-of-block or not enough
- input data or output space */
- do {
- if (bits < 15) {
- hold += (unsigned long)(PUP(in)) << bits;
- bits += 8;
- hold += (unsigned long)(PUP(in)) << bits;
- bits += 8;
- }
- this = lcode[hold & lmask];
- dolen:
- op = (unsigned)(this.bits);
- hold >>= op;
- bits -= op;
- op = (unsigned)(this.op);
- if (op == 0) { /* literal */
- Tracevv((stderr, this.val >= 0x20 && this.val < 0x7f ?
- "inflate: literal '%c'\n" :
- "inflate: literal 0x%02x\n", this.val));
- PUP(out) = (unsigned char)(this.val);
- }
- else if (op & 16) { /* length base */
- len = (unsigned)(this.val);
- op &= 15; /* number of extra bits */
- if (op) {
- if (bits < op) {
- hold += (unsigned long)(PUP(in)) << bits;
- bits += 8;
- }
- len += (unsigned)hold & ((1U << op) - 1);
- hold >>= op;
- bits -= op;
- }
- Tracevv((stderr, "inflate: length %u\n", len));
- if (bits < 15) {
- hold += (unsigned long)(PUP(in)) << bits;
- bits += 8;
- hold += (unsigned long)(PUP(in)) << bits;
- bits += 8;
- }
- this = dcode[hold & dmask];
- dodist:
- op = (unsigned)(this.bits);
- hold >>= op;
- bits -= op;
- op = (unsigned)(this.op);
- if (op & 16) { /* distance base */
- dist = (unsigned)(this.val);
- op &= 15; /* number of extra bits */
- if (bits < op) {
- hold += (unsigned long)(PUP(in)) << bits;
- bits += 8;
- if (bits < op) {
- hold += (unsigned long)(PUP(in)) << bits;
- bits += 8;
- }
- }
- dist += (unsigned)hold & ((1U << op) - 1);
-#ifdef INFLATE_STRICT
- if (dist > dmax) {
- strm->msg = (char *)"invalid distance too far back";
- state->mode = BAD;
- break;
- }
-#endif
- hold >>= op;
- bits -= op;
- Tracevv((stderr, "inflate: distance %u\n", dist));
- op = (unsigned)(out - beg); /* max distance in output */
- if (dist > op) { /* see if copy from window */
- op = dist - op; /* distance back in window */
- if (op > whave) {
- strm->msg = (char *)"invalid distance too far back";
- state->mode = BAD;
- break;
- }
- from = window - OFF;
- if (write == 0) { /* very common case */
- from += wsize - op;
- if (op < len) { /* some from window */
- len -= op;
- do {
- PUP(out) = PUP(from);
- } while (--op);
- from = out - dist; /* rest from output */
- }
- }
- else if (write < op) { /* wrap around window */
- from += wsize + write - op;
- op -= write;
- if (op < len) { /* some from end of window */
- len -= op;
- do {
- PUP(out) = PUP(from);
- } while (--op);
- from = window - OFF;
- if (write < len) { /* some from start of window */
- op = write;
- len -= op;
- do {
- PUP(out) = PUP(from);
- } while (--op);
- from = out - dist; /* rest from output */
- }
- }
- }
- else { /* contiguous in window */
- from += write - op;
- if (op < len) { /* some from window */
- len -= op;
- do {
- PUP(out) = PUP(from);
- } while (--op);
- from = out - dist; /* rest from output */
- }
- }
- while (len > 2) {
- PUP(out) = PUP(from);
- PUP(out) = PUP(from);
- PUP(out) = PUP(from);
- len -= 3;
- }
- if (len) {
- PUP(out) = PUP(from);
- if (len > 1)
- PUP(out) = PUP(from);
- }
- }
- else {
- from = out - dist; /* copy direct from output */
- do { /* minimum length is three */
- PUP(out) = PUP(from);
- PUP(out) = PUP(from);
- PUP(out) = PUP(from);
- len -= 3;
- } while (len > 2);
- if (len) {
- PUP(out) = PUP(from);
- if (len > 1)
- PUP(out) = PUP(from);
- }
- }
- }
- else if ((op & 64) == 0) { /* 2nd level distance code */
- this = dcode[this.val + (hold & ((1U << op) - 1))];
- goto dodist;
- }
- else {
- strm->msg = (char *)"invalid distance code";
- state->mode = BAD;
- break;
- }
- }
- else if ((op & 64) == 0) { /* 2nd level length code */
- this = lcode[this.val + (hold & ((1U << op) - 1))];
- goto dolen;
- }
- else if (op & 32) { /* end-of-block */
- Tracevv((stderr, "inflate: end of block\n"));
- state->mode = TYPE;
- break;
- }
- else {
- strm->msg = (char *)"invalid literal/length code";
- state->mode = BAD;
- break;
- }
- } while (in < last && out < end);
-
- /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
- len = bits >> 3;
- in -= len;
- bits -= len << 3;
- hold &= (1U << bits) - 1;
-
- /* update state and return */
- strm->next_in = in + OFF;
- strm->next_out = out + OFF;
- strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last));
- strm->avail_out = (unsigned)(out < end ?
- 257 + (end - out) : 257 - (out - end));
- state->hold = hold;
- state->bits = bits;
- return;
-}
-
-/*
- inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe):
- - Using bit fields for code structure
- - Different op definition to avoid & for extra bits (do & for table bits)
- - Three separate decoding do-loops for direct, window, and write == 0
- - Special case for distance > 1 copies to do overlapped load and store copy
- - Explicit branch predictions (based on measured branch probabilities)
- - Deferring match copy and interspersed it with decoding subsequent codes
- - Swapping literal/length else
- - Swapping window/direct else
- - Larger unrolled copy loops (three is about right)
- - Moving len -= 3 statement into middle of loop
- */
-
-#endif /* !ASMINF */
diff --git a/navit/support/zlib/inffast.h b/navit/support/zlib/inffast.h
deleted file mode 100644
index 1e88d2d97..000000000
--- a/navit/support/zlib/inffast.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* inffast.h -- header to use inffast.c
- * Copyright (C) 1995-2003 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-void inflate_fast OF((z_streamp strm, unsigned start));
diff --git a/navit/support/zlib/inffixed.h b/navit/support/zlib/inffixed.h
deleted file mode 100644
index 75ed4b597..000000000
--- a/navit/support/zlib/inffixed.h
+++ /dev/null
@@ -1,94 +0,0 @@
- /* inffixed.h -- table for decoding fixed codes
- * Generated automatically by makefixed().
- */
-
- /* WARNING: this file should *not* be used by applications. It
- is part of the implementation of the compression library and
- is subject to change. Applications should only use zlib.h.
- */
-
- static const code lenfix[512] = {
- {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48},
- {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128},
- {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59},
- {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176},
- {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20},
- {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100},
- {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8},
- {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216},
- {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76},
- {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114},
- {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},
- {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148},
- {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42},
- {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86},
- {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15},
- {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236},
- {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62},
- {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142},
- {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31},
- {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162},
- {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25},
- {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105},
- {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4},
- {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202},
- {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69},
- {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125},
- {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13},
- {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195},
- {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35},
- {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91},
- {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19},
- {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246},
- {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55},
- {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135},
- {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99},
- {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190},
- {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16},
- {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96},
- {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6},
- {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209},
- {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},
- {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116},
- {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4},
- {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153},
- {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44},
- {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82},
- {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11},
- {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229},
- {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58},
- {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138},
- {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51},
- {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173},
- {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30},
- {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110},
- {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0},
- {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195},
- {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65},
- {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121},
- {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},
- {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258},
- {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37},
- {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93},
- {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23},
- {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251},
- {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51},
- {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131},
- {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67},
- {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183},
- {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23},
- {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103},
- {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9},
- {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223},
- {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79},
- {0,9,255}
- };
-
- static const code distfix[32] = {
- {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025},
- {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193},
- {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385},
- {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577},
- {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073},
- {22,5,193},{64,5,0}
- };
diff --git a/navit/support/zlib/inflate.c b/navit/support/zlib/inflate.c
deleted file mode 100644
index 792fdee8e..000000000
--- a/navit/support/zlib/inflate.c
+++ /dev/null
@@ -1,1368 +0,0 @@
-/* inflate.c -- zlib decompression
- * Copyright (C) 1995-2005 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
- * Change history:
- *
- * 1.2.beta0 24 Nov 2002
- * - First version -- complete rewrite of inflate to simplify code, avoid
- * creation of window when not needed, minimize use of window when it is
- * needed, make inffast.c even faster, implement gzip decoding, and to
- * improve code readability and style over the previous zlib inflate code
- *
- * 1.2.beta1 25 Nov 2002
- * - Use pointers for available input and output checking in inffast.c
- * - Remove input and output counters in inffast.c
- * - Change inffast.c entry and loop from avail_in >= 7 to >= 6
- * - Remove unnecessary second byte pull from length extra in inffast.c
- * - Unroll direct copy to three copies per loop in inffast.c
- *
- * 1.2.beta2 4 Dec 2002
- * - Change external routine names to reduce potential conflicts
- * - Correct filename to inffixed.h for fixed tables in inflate.c
- * - Make hbuf[] unsigned char to match parameter type in inflate.c
- * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset)
- * to avoid negation problem on Alphas (64 bit) in inflate.c
- *
- * 1.2.beta3 22 Dec 2002
- * - Add comments on state->bits assertion in inffast.c
- * - Add comments on op field in inftrees.h
- * - Fix bug in reuse of allocated window after inflateReset()
- * - Remove bit fields--back to byte structure for speed
- * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths
- * - Change post-increments to pre-increments in inflate_fast(), PPC biased?
- * - Add compile time option, POSTINC, to use post-increments instead (Intel?)
- * - Make MATCH copy in inflate() much faster for when inflate_fast() not used
- * - Use local copies of stream next and avail values, as well as local bit
- * buffer and bit count in inflate()--for speed when inflate_fast() not used
- *
- * 1.2.beta4 1 Jan 2003
- * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings
- * - Move a comment on output buffer sizes from inffast.c to inflate.c
- * - Add comments in inffast.c to introduce the inflate_fast() routine
- * - Rearrange window copies in inflate_fast() for speed and simplification
- * - Unroll last copy for window match in inflate_fast()
- * - Use local copies of window variables in inflate_fast() for speed
- * - Pull out common write == 0 case for speed in inflate_fast()
- * - Make op and len in inflate_fast() unsigned for consistency
- * - Add FAR to lcode and dcode declarations in inflate_fast()
- * - Simplified bad distance check in inflate_fast()
- * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new
- * source file infback.c to provide a call-back interface to inflate for
- * programs like gzip and unzip -- uses window as output buffer to avoid
- * window copying
- *
- * 1.2.beta5 1 Jan 2003
- * - Improved inflateBack() interface to allow the caller to provide initial
- * input in strm.
- * - Fixed stored blocks bug in inflateBack()
- *
- * 1.2.beta6 4 Jan 2003
- * - Added comments in inffast.c on effectiveness of POSTINC
- * - Typecasting all around to reduce compiler warnings
- * - Changed loops from while (1) or do {} while (1) to for (;;), again to
- * make compilers happy
- * - Changed type of window in inflateBackInit() to unsigned char *
- *
- * 1.2.beta7 27 Jan 2003
- * - Changed many types to unsigned or unsigned short to avoid warnings
- * - Added inflateCopy() function
- *
- * 1.2.0 9 Mar 2003
- * - Changed inflateBack() interface to provide separate opaque descriptors
- * for the in() and out() functions
- * - Changed inflateBack() argument and in_func typedef to swap the length
- * and buffer address return values for the input function
- * - Check next_in and next_out for Z_NULL on entry to inflate()
- *
- * The history for versions after 1.2.0 are in ChangeLog in zlib distribution.
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-#ifdef MAKEFIXED
-# ifndef BUILDFIXED
-# define BUILDFIXED
-# endif
-#endif
-
-/* function prototypes */
-local void fixedtables OF((struct inflate_state FAR *state));
-local int updatewindow OF((z_streamp strm, unsigned out));
-#ifdef BUILDFIXED
- void makefixed OF((void));
-#endif
-local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf,
- unsigned len));
-
-int ZEXPORT inflateReset(strm)
-z_streamp strm;
-{
- struct inflate_state FAR *state;
-
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
- state = (struct inflate_state FAR *)strm->state;
- strm->total_in = strm->total_out = state->total = 0;
- strm->msg = Z_NULL;
- strm->adler = 1; /* to support ill-conceived Java test suite */
- state->mode = HEAD;
- state->last = 0;
- state->havedict = 0;
- state->dmax = 32768U;
- state->head = Z_NULL;
- state->wsize = 0;
- state->whave = 0;
- state->write = 0;
- state->hold = 0;
- state->bits = 0;
- state->lencode = state->distcode = state->next = state->codes;
- Tracev((stderr, "inflate: reset\n"));
- return Z_OK;
-}
-
-int ZEXPORT inflatePrime(strm, bits, value)
-z_streamp strm;
-int bits;
-int value;
-{
- struct inflate_state FAR *state;
-
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
- state = (struct inflate_state FAR *)strm->state;
- if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR;
- value &= (1L << bits) - 1;
- state->hold += value << state->bits;
- state->bits += bits;
- return Z_OK;
-}
-
-int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
-z_streamp strm;
-int windowBits;
-const char *version;
-int stream_size;
-{
- struct inflate_state FAR *state;
-
- if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
- stream_size != (int)(sizeof(z_stream)))
- return Z_VERSION_ERROR;
- if (strm == Z_NULL) return Z_STREAM_ERROR;
- strm->msg = Z_NULL; /* in case we return an error */
- if (strm->zalloc == (alloc_func)0) {
- strm->zalloc = zcalloc;
- strm->opaque = (voidpf)0;
- }
- if (strm->zfree == (free_func)0) strm->zfree = zcfree;
- state = (struct inflate_state FAR *)
- ZALLOC(strm, 1, sizeof(struct inflate_state));
- if (state == Z_NULL) return Z_MEM_ERROR;
- Tracev((stderr, "inflate: allocated\n"));
- strm->state = (struct internal_state FAR *)state;
- if (windowBits < 0) {
- state->wrap = 0;
- windowBits = -windowBits;
- }
- else {
- state->wrap = (windowBits >> 4) + 1;
-#ifdef GUNZIP
- if (windowBits < 48) windowBits &= 15;
-#endif
- }
- if (windowBits < 8 || windowBits > 15) {
- ZFREE(strm, state);
- strm->state = Z_NULL;
- return Z_STREAM_ERROR;
- }
- state->wbits = (unsigned)windowBits;
- state->window = Z_NULL;
- return inflateReset(strm);
-}
-
-int ZEXPORT inflateInit_(strm, version, stream_size)
-z_streamp strm;
-const char *version;
-int stream_size;
-{
- return inflateInit2_(strm, DEF_WBITS, version, stream_size);
-}
-
-/*
- Return state with length and distance decoding tables and index sizes set to
- fixed code decoding. Normally this returns fixed tables from inffixed.h.
- If BUILDFIXED is defined, then instead this routine builds the tables the
- first time it's called, and returns those tables the first time and
- thereafter. This reduces the size of the code by about 2K bytes, in
- exchange for a little execution time. However, BUILDFIXED should not be
- used for threaded applications, since the rewriting of the tables and virgin
- may not be thread-safe.
- */
-local void fixedtables(state)
-struct inflate_state FAR *state;
-{
-#ifdef BUILDFIXED
- static int virgin = 1;
- static code *lenfix, *distfix;
- static code fixed[544];
-
- /* build fixed huffman tables if first call (may not be thread safe) */
- if (virgin) {
- unsigned sym, bits;
- static code *next;
-
- /* literal/length table */
- sym = 0;
- while (sym < 144) state->lens[sym++] = 8;
- while (sym < 256) state->lens[sym++] = 9;
- while (sym < 280) state->lens[sym++] = 7;
- while (sym < 288) state->lens[sym++] = 8;
- next = fixed;
- lenfix = next;
- bits = 9;
- inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);
-
- /* distance table */
- sym = 0;
- while (sym < 32) state->lens[sym++] = 5;
- distfix = next;
- bits = 5;
- inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);
-
- /* do this just once */
- virgin = 0;
- }
-#else /* !BUILDFIXED */
-# include "inffixed.h"
-#endif /* BUILDFIXED */
- state->lencode = lenfix;
- state->lenbits = 9;
- state->distcode = distfix;
- state->distbits = 5;
-}
-
-#ifdef MAKEFIXED
-#include <stdio.h>
-
-/*
- Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also
- defines BUILDFIXED, so the tables are built on the fly. makefixed() writes
- those tables to stdout, which would be piped to inffixed.h. A small program
- can simply call makefixed to do this:
-
- void makefixed(void);
-
- int main(void)
- {
- makefixed();
- return 0;
- }
-
- Then that can be linked with zlib built with MAKEFIXED defined and run:
-
- a.out > inffixed.h
- */
-void makefixed()
-{
- unsigned low, size;
- struct inflate_state state;
-
- fixedtables(&state);
- puts(" /* inffixed.h -- table for decoding fixed codes");
- puts(" * Generated automatically by makefixed().");
- puts(" */");
- puts("");
- puts(" /* WARNING: this file should *not* be used by applications.");
- puts(" It is part of the implementation of this library and is");
- puts(" subject to change. Applications should only use zlib.h.");
- puts(" */");
- puts("");
- size = 1U << 9;
- printf(" static const code lenfix[%u] = {", size);
- low = 0;
- for (;;) {
- if ((low % 7) == 0) printf("\n ");
- printf("{%u,%u,%d}", state.lencode[low].op, state.lencode[low].bits,
- state.lencode[low].val);
- if (++low == size) break;
- putchar(',');
- }
- puts("\n };");
- size = 1U << 5;
- printf("\n static const code distfix[%u] = {", size);
- low = 0;
- for (;;) {
- if ((low % 6) == 0) printf("\n ");
- printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits,
- state.distcode[low].val);
- if (++low == size) break;
- putchar(',');
- }
- puts("\n };");
-}
-#endif /* MAKEFIXED */
-
-/*
- Update the window with the last wsize (normally 32K) bytes written before
- returning. If window does not exist yet, create it. This is only called
- when a window is already in use, or when output has been written during this
- inflate call, but the end of the deflate stream has not been reached yet.
- It is also called to create a window for dictionary data when a dictionary
- is loaded.
-
- Providing output buffers larger than 32K to inflate() should provide a speed
- advantage, since only the last 32K of output is copied to the sliding window
- upon return from inflate(), and since all distances after the first 32K of
- output will fall in the output data, making match copies simpler and faster.
- The advantage may be dependent on the size of the processor's data caches.
- */
-local int updatewindow(strm, out)
-z_streamp strm;
-unsigned out;
-{
- struct inflate_state FAR *state;
- unsigned copy, dist;
-
- state = (struct inflate_state FAR *)strm->state;
-
- /* if it hasn't been done already, allocate space for the window */
- if (state->window == Z_NULL) {
- state->window = (unsigned char FAR *)
- ZALLOC(strm, 1U << state->wbits,
- sizeof(unsigned char));
- if (state->window == Z_NULL) return 1;
- }
-
- /* if window not in use yet, initialize */
- if (state->wsize == 0) {
- state->wsize = 1U << state->wbits;
- state->write = 0;
- state->whave = 0;
- }
-
- /* copy state->wsize or less output bytes into the circular window */
- copy = out - strm->avail_out;
- if (copy >= state->wsize) {
- zmemcpy(state->window, strm->next_out - state->wsize, state->wsize);
- state->write = 0;
- state->whave = state->wsize;
- }
- else {
- dist = state->wsize - state->write;
- if (dist > copy) dist = copy;
- zmemcpy(state->window + state->write, strm->next_out - copy, dist);
- copy -= dist;
- if (copy) {
- zmemcpy(state->window, strm->next_out - copy, copy);
- state->write = copy;
- state->whave = state->wsize;
- }
- else {
- state->write += dist;
- if (state->write == state->wsize) state->write = 0;
- if (state->whave < state->wsize) state->whave += dist;
- }
- }
- return 0;
-}
-
-/* Macros for inflate(): */
-
-/* check function to use adler32() for zlib or crc32() for gzip */
-#ifdef GUNZIP
-# define UPDATE(check, buf, len) \
- (state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
-#else
-# define UPDATE(check, buf, len) adler32(check, buf, len)
-#endif
-
-/* check macros for header crc */
-#ifdef GUNZIP
-# define CRC2(check, word) \
- do { \
- hbuf[0] = (unsigned char)(word); \
- hbuf[1] = (unsigned char)((word) >> 8); \
- check = crc32(check, hbuf, 2); \
- } while (0)
-
-# define CRC4(check, word) \
- do { \
- hbuf[0] = (unsigned char)(word); \
- hbuf[1] = (unsigned char)((word) >> 8); \
- hbuf[2] = (unsigned char)((word) >> 16); \
- hbuf[3] = (unsigned char)((word) >> 24); \
- check = crc32(check, hbuf, 4); \
- } while (0)
-#endif
-
-/* Load registers with state in inflate() for speed */
-#define LOAD() \
- do { \
- put = strm->next_out; \
- left = strm->avail_out; \
- next = strm->next_in; \
- have = strm->avail_in; \
- hold = state->hold; \
- bits = state->bits; \
- } while (0)
-
-/* Restore state from registers in inflate() */
-#define RESTORE() \
- do { \
- strm->next_out = put; \
- strm->avail_out = left; \
- strm->next_in = next; \
- strm->avail_in = have; \
- state->hold = hold; \
- state->bits = bits; \
- } while (0)
-
-/* Clear the input bit accumulator */
-#define INITBITS() \
- do { \
- hold = 0; \
- bits = 0; \
- } while (0)
-
-/* Get a byte of input into the bit accumulator, or return from inflate()
- if there is no input available. */
-#define PULLBYTE() \
- do { \
- if (have == 0) goto inf_leave; \
- have--; \
- hold += (unsigned long)(*next++) << bits; \
- bits += 8; \
- } while (0)
-
-/* Assure that there are at least n bits in the bit accumulator. If there is
- not enough available input to do that, then return from inflate(). */
-#define NEEDBITS(n) \
- do { \
- while (bits < (unsigned)(n)) \
- PULLBYTE(); \
- } while (0)
-
-/* Return the low n bits of the bit accumulator (n < 16) */
-#define BITS(n) \
- ((unsigned)hold & ((1U << (n)) - 1))
-
-/* Remove n bits from the bit accumulator */
-#define DROPBITS(n) \
- do { \
- hold >>= (n); \
- bits -= (unsigned)(n); \
- } while (0)
-
-/* Remove zero to seven bits as needed to go to a byte boundary */
-#define BYTEBITS() \
- do { \
- hold >>= bits & 7; \
- bits -= bits & 7; \
- } while (0)
-
-/* Reverse the bytes in a 32-bit value */
-#define REVERSE(q) \
- ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \
- (((q) & 0xff00) << 8) + (((q) & 0xff) << 24))
-
-/*
- inflate() uses a state machine to process as much input data and generate as
- much output data as possible before returning. The state machine is
- structured roughly as follows:
-
- for (;;) switch (state) {
- ...
- case STATEn:
- if (not enough input data or output space to make progress)
- return;
- ... make progress ...
- state = STATEm;
- break;
- ...
- }
-
- so when inflate() is called again, the same case is attempted again, and
- if the appropriate resources are provided, the machine proceeds to the
- next state. The NEEDBITS() macro is usually the way the state evaluates
- whether it can proceed or should return. NEEDBITS() does the return if
- the requested bits are not available. The typical use of the BITS macros
- is:
-
- NEEDBITS(n);
- ... do something with BITS(n) ...
- DROPBITS(n);
-
- where NEEDBITS(n) either returns from inflate() if there isn't enough
- input left to load n bits into the accumulator, or it continues. BITS(n)
- gives the low n bits in the accumulator. When done, DROPBITS(n) drops
- the low n bits off the accumulator. INITBITS() clears the accumulator
- and sets the number of available bits to zero. BYTEBITS() discards just
- enough bits to put the accumulator on a byte boundary. After BYTEBITS()
- and a NEEDBITS(8), then BITS(8) would return the next byte in the stream.
-
- NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return
- if there is no input available. The decoding of variable length codes uses
- PULLBYTE() directly in order to pull just enough bytes to decode the next
- code, and no more.
-
- Some states loop until they get enough input, making sure that enough
- state information is maintained to continue the loop where it left off
- if NEEDBITS() returns in the loop. For example, want, need, and keep
- would all have to actually be part of the saved state in case NEEDBITS()
- returns:
-
- case STATEw:
- while (want < need) {
- NEEDBITS(n);
- keep[want++] = BITS(n);
- DROPBITS(n);
- }
- state = STATEx;
- case STATEx:
-
- As shown above, if the next state is also the next case, then the break
- is omitted.
-
- A state may also return if there is not enough output space available to
- complete that state. Those states are copying stored data, writing a
- literal byte, and copying a matching string.
-
- When returning, a "goto inf_leave" is used to update the total counters,
- update the check value, and determine whether any progress has been made
- during that inflate() call in order to return the proper return code.
- Progress is defined as a change in either strm->avail_in or strm->avail_out.
- When there is a window, goto inf_leave will update the window with the last
- output written. If a goto inf_leave occurs in the middle of decompression
- and there is no window currently, goto inf_leave will create one and copy
- output to the window for the next call of inflate().
-
- In this implementation, the flush parameter of inflate() only affects the
- return code (per zlib.h). inflate() always writes as much as possible to
- strm->next_out, given the space available and the provided input--the effect
- documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers
- the allocation of and copying into a sliding window until necessary, which
- provides the effect documented in zlib.h for Z_FINISH when the entire input
- stream available. So the only thing the flush parameter actually does is:
- when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it
- will return Z_BUF_ERROR if it has not reached the end of the stream.
- */
-
-int ZEXPORT inflate(strm, flush)
-z_streamp strm;
-int flush;
-{
- struct inflate_state FAR *state;
- unsigned char FAR *next; /* next input */
- unsigned char FAR *put; /* next output */
- unsigned have, left; /* available input and output */
- unsigned long hold; /* bit buffer */
- unsigned bits; /* bits in bit buffer */
- unsigned in, out; /* save starting available input and output */
- unsigned copy; /* number of stored or match bytes to copy */
- unsigned char FAR *from; /* where to copy match bytes from */
- code this; /* current decoding table entry */
- code last; /* parent table entry */
- unsigned len; /* length to copy for repeats, bits to drop */
- int ret; /* return code */
-#ifdef GUNZIP
- unsigned char hbuf[4]; /* buffer for gzip header crc calculation */
-#endif
- static const unsigned short order[19] = /* permutation of code lengths */
- {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
-
- if (strm == Z_NULL || strm->state == Z_NULL || strm->next_out == Z_NULL ||
- (strm->next_in == Z_NULL && strm->avail_in != 0))
- return Z_STREAM_ERROR;
-
- state = (struct inflate_state FAR *)strm->state;
- if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */
- LOAD();
- in = have;
- out = left;
- ret = Z_OK;
- for (;;)
- switch (state->mode) {
- case HEAD:
- if (state->wrap == 0) {
- state->mode = TYPEDO;
- break;
- }
- NEEDBITS(16);
-#ifdef GUNZIP
- if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */
- state->check = crc32(0L, Z_NULL, 0);
- CRC2(state->check, hold);
- INITBITS();
- state->mode = FLAGS;
- break;
- }
- state->flags = 0; /* expect zlib header */
- if (state->head != Z_NULL)
- state->head->done = -1;
- if (!(state->wrap & 1) || /* check if zlib header allowed */
-#else
- if (
-#endif
- ((BITS(8) << 8) + (hold >> 8)) % 31) {
- strm->msg = (char *)"incorrect header check";
- state->mode = BAD;
- break;
- }
- if (BITS(4) != Z_DEFLATED) {
- strm->msg = (char *)"unknown compression method";
- state->mode = BAD;
- break;
- }
- DROPBITS(4);
- len = BITS(4) + 8;
- if (len > state->wbits) {
- strm->msg = (char *)"invalid window size";
- state->mode = BAD;
- break;
- }
- state->dmax = 1U << len;
- Tracev((stderr, "inflate: zlib header ok\n"));
- strm->adler = state->check = adler32(0L, Z_NULL, 0);
- state->mode = hold & 0x200 ? DICTID : TYPE;
- INITBITS();
- break;
-#ifdef GUNZIP
- case FLAGS:
- NEEDBITS(16);
- state->flags = (int)(hold);
- if ((state->flags & 0xff) != Z_DEFLATED) {
- strm->msg = (char *)"unknown compression method";
- state->mode = BAD;
- break;
- }
- if (state->flags & 0xe000) {
- strm->msg = (char *)"unknown header flags set";
- state->mode = BAD;
- break;
- }
- if (state->head != Z_NULL)
- state->head->text = (int)((hold >> 8) & 1);
- if (state->flags & 0x0200) CRC2(state->check, hold);
- INITBITS();
- state->mode = TIME;
- case TIME:
- NEEDBITS(32);
- if (state->head != Z_NULL)
- state->head->time = hold;
- if (state->flags & 0x0200) CRC4(state->check, hold);
- INITBITS();
- state->mode = OS;
- case OS:
- NEEDBITS(16);
- if (state->head != Z_NULL) {
- state->head->xflags = (int)(hold & 0xff);
- state->head->os = (int)(hold >> 8);
- }
- if (state->flags & 0x0200) CRC2(state->check, hold);
- INITBITS();
- state->mode = EXLEN;
- case EXLEN:
- if (state->flags & 0x0400) {
- NEEDBITS(16);
- state->length = (unsigned)(hold);
- if (state->head != Z_NULL)
- state->head->extra_len = (unsigned)hold;
- if (state->flags & 0x0200) CRC2(state->check, hold);
- INITBITS();
- }
- else if (state->head != Z_NULL)
- state->head->extra = Z_NULL;
- state->mode = EXTRA;
- case EXTRA:
- if (state->flags & 0x0400) {
- copy = state->length;
- if (copy > have) copy = have;
- if (copy) {
- if (state->head != Z_NULL &&
- state->head->extra != Z_NULL) {
- len = state->head->extra_len - state->length;
- zmemcpy(state->head->extra + len, next,
- len + copy > state->head->extra_max ?
- state->head->extra_max - len : copy);
- }
- if (state->flags & 0x0200)
- state->check = crc32(state->check, next, copy);
- have -= copy;
- next += copy;
- state->length -= copy;
- }
- if (state->length) goto inf_leave;
- }
- state->length = 0;
- state->mode = NAME;
- case NAME:
- if (state->flags & 0x0800) {
- if (have == 0) goto inf_leave;
- copy = 0;
- do {
- len = (unsigned)(next[copy++]);
- if (state->head != Z_NULL &&
- state->head->name != Z_NULL &&
- state->length < state->head->name_max)
- state->head->name[state->length++] = len;
- } while (len && copy < have);
- if (state->flags & 0x0200)
- state->check = crc32(state->check, next, copy);
- have -= copy;
- next += copy;
- if (len) goto inf_leave;
- }
- else if (state->head != Z_NULL)
- state->head->name = Z_NULL;
- state->length = 0;
- state->mode = COMMENT;
- case COMMENT:
- if (state->flags & 0x1000) {
- if (have == 0) goto inf_leave;
- copy = 0;
- do {
- len = (unsigned)(next[copy++]);
- if (state->head != Z_NULL &&
- state->head->comment != Z_NULL &&
- state->length < state->head->comm_max)
- state->head->comment[state->length++] = len;
- } while (len && copy < have);
- if (state->flags & 0x0200)
- state->check = crc32(state->check, next, copy);
- have -= copy;
- next += copy;
- if (len) goto inf_leave;
- }
- else if (state->head != Z_NULL)
- state->head->comment = Z_NULL;
- state->mode = HCRC;
- case HCRC:
- if (state->flags & 0x0200) {
- NEEDBITS(16);
- if (hold != (state->check & 0xffff)) {
- strm->msg = (char *)"header crc mismatch";
- state->mode = BAD;
- break;
- }
- INITBITS();
- }
- if (state->head != Z_NULL) {
- state->head->hcrc = (int)((state->flags >> 9) & 1);
- state->head->done = 1;
- }
- strm->adler = state->check = crc32(0L, Z_NULL, 0);
- state->mode = TYPE;
- break;
-#endif
- case DICTID:
- NEEDBITS(32);
- strm->adler = state->check = REVERSE(hold);
- INITBITS();
- state->mode = DICT;
- case DICT:
- if (state->havedict == 0) {
- RESTORE();
- return Z_NEED_DICT;
- }
- strm->adler = state->check = adler32(0L, Z_NULL, 0);
- state->mode = TYPE;
- case TYPE:
- if (flush == Z_BLOCK) goto inf_leave;
- case TYPEDO:
- if (state->last) {
- BYTEBITS();
- state->mode = CHECK;
- break;
- }
- NEEDBITS(3);
- state->last = BITS(1);
- DROPBITS(1);
- switch (BITS(2)) {
- case 0: /* stored block */
- Tracev((stderr, "inflate: stored block%s\n",
- state->last ? " (last)" : ""));
- state->mode = STORED;
- break;
- case 1: /* fixed block */
- fixedtables(state);
- Tracev((stderr, "inflate: fixed codes block%s\n",
- state->last ? " (last)" : ""));
- state->mode = LEN; /* decode codes */
- break;
- case 2: /* dynamic block */
- Tracev((stderr, "inflate: dynamic codes block%s\n",
- state->last ? " (last)" : ""));
- state->mode = TABLE;
- break;
- case 3:
- strm->msg = (char *)"invalid block type";
- state->mode = BAD;
- }
- DROPBITS(2);
- break;
- case STORED:
- BYTEBITS(); /* go to byte boundary */
- NEEDBITS(32);
- if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) {
- strm->msg = (char *)"invalid stored block lengths";
- state->mode = BAD;
- break;
- }
- state->length = (unsigned)hold & 0xffff;
- Tracev((stderr, "inflate: stored length %u\n",
- state->length));
- INITBITS();
- state->mode = COPY;
- case COPY:
- copy = state->length;
- if (copy) {
- if (copy > have) copy = have;
- if (copy > left) copy = left;
- if (copy == 0) goto inf_leave;
- zmemcpy(put, next, copy);
- have -= copy;
- next += copy;
- left -= copy;
- put += copy;
- state->length -= copy;
- break;
- }
- Tracev((stderr, "inflate: stored end\n"));
- state->mode = TYPE;
- break;
- case TABLE:
- NEEDBITS(14);
- state->nlen = BITS(5) + 257;
- DROPBITS(5);
- state->ndist = BITS(5) + 1;
- DROPBITS(5);
- state->ncode = BITS(4) + 4;
- DROPBITS(4);
-#ifndef PKZIP_BUG_WORKAROUND
- if (state->nlen > 286 || state->ndist > 30) {
- strm->msg = (char *)"too many length or distance symbols";
- state->mode = BAD;
- break;
- }
-#endif
- Tracev((stderr, "inflate: table sizes ok\n"));
- state->have = 0;
- state->mode = LENLENS;
- case LENLENS:
- while (state->have < state->ncode) {
- NEEDBITS(3);
- state->lens[order[state->have++]] = (unsigned short)BITS(3);
- DROPBITS(3);
- }
- while (state->have < 19)
- state->lens[order[state->have++]] = 0;
- state->next = state->codes;
- state->lencode = (code const FAR *)(state->next);
- state->lenbits = 7;
- ret = inflate_table(CODES, state->lens, 19, &(state->next),
- &(state->lenbits), state->work);
- if (ret) {
- strm->msg = (char *)"invalid code lengths set";
- state->mode = BAD;
- break;
- }
- Tracev((stderr, "inflate: code lengths ok\n"));
- state->have = 0;
- state->mode = CODELENS;
- case CODELENS:
- while (state->have < state->nlen + state->ndist) {
- for (;;) {
- this = state->lencode[BITS(state->lenbits)];
- if ((unsigned)(this.bits) <= bits) break;
- PULLBYTE();
- }
- if (this.val < 16) {
- NEEDBITS(this.bits);
- DROPBITS(this.bits);
- state->lens[state->have++] = this.val;
- }
- else {
- if (this.val == 16) {
- NEEDBITS(this.bits + 2);
- DROPBITS(this.bits);
- if (state->have == 0) {
- strm->msg = (char *)"invalid bit length repeat";
- state->mode = BAD;
- break;
- }
- len = state->lens[state->have - 1];
- copy = 3 + BITS(2);
- DROPBITS(2);
- }
- else if (this.val == 17) {
- NEEDBITS(this.bits + 3);
- DROPBITS(this.bits);
- len = 0;
- copy = 3 + BITS(3);
- DROPBITS(3);
- }
- else {
- NEEDBITS(this.bits + 7);
- DROPBITS(this.bits);
- len = 0;
- copy = 11 + BITS(7);
- DROPBITS(7);
- }
- if (state->have + copy > state->nlen + state->ndist) {
- strm->msg = (char *)"invalid bit length repeat";
- state->mode = BAD;
- break;
- }
- while (copy--)
- state->lens[state->have++] = (unsigned short)len;
- }
- }
-
- /* handle error breaks in while */
- if (state->mode == BAD) break;
-
- /* build code tables */
- state->next = state->codes;
- state->lencode = (code const FAR *)(state->next);
- state->lenbits = 9;
- ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
- &(state->lenbits), state->work);
- if (ret) {
- strm->msg = (char *)"invalid literal/lengths set";
- state->mode = BAD;
- break;
- }
- state->distcode = (code const FAR *)(state->next);
- state->distbits = 6;
- ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
- &(state->next), &(state->distbits), state->work);
- if (ret) {
- strm->msg = (char *)"invalid distances set";
- state->mode = BAD;
- break;
- }
- Tracev((stderr, "inflate: codes ok\n"));
- state->mode = LEN;
- case LEN:
- if (have >= 6 && left >= 258) {
- RESTORE();
- inflate_fast(strm, out);
- LOAD();
- break;
- }
- for (;;) {
- this = state->lencode[BITS(state->lenbits)];
- if ((unsigned)(this.bits) <= bits) break;
- PULLBYTE();
- }
- if (this.op && (this.op & 0xf0) == 0) {
- last = this;
- for (;;) {
- this = state->lencode[last.val +
- (BITS(last.bits + last.op) >> last.bits)];
- if ((unsigned)(last.bits + this.bits) <= bits) break;
- PULLBYTE();
- }
- DROPBITS(last.bits);
- }
- DROPBITS(this.bits);
- state->length = (unsigned)this.val;
- if ((int)(this.op) == 0) {
- Tracevv((stderr, this.val >= 0x20 && this.val < 0x7f ?
- "inflate: literal '%c'\n" :
- "inflate: literal 0x%02x\n", this.val));
- state->mode = LIT;
- break;
- }
- if (this.op & 32) {
- Tracevv((stderr, "inflate: end of block\n"));
- state->mode = TYPE;
- break;
- }
- if (this.op & 64) {
- strm->msg = (char *)"invalid literal/length code";
- state->mode = BAD;
- break;
- }
- state->extra = (unsigned)(this.op) & 15;
- state->mode = LENEXT;
- case LENEXT:
- if (state->extra) {
- NEEDBITS(state->extra);
- state->length += BITS(state->extra);
- DROPBITS(state->extra);
- }
- Tracevv((stderr, "inflate: length %u\n", state->length));
- state->mode = DIST;
- case DIST:
- for (;;) {
- this = state->distcode[BITS(state->distbits)];
- if ((unsigned)(this.bits) <= bits) break;
- PULLBYTE();
- }
- if ((this.op & 0xf0) == 0) {
- last = this;
- for (;;) {
- this = state->distcode[last.val +
- (BITS(last.bits + last.op) >> last.bits)];
- if ((unsigned)(last.bits + this.bits) <= bits) break;
- PULLBYTE();
- }
- DROPBITS(last.bits);
- }
- DROPBITS(this.bits);
- if (this.op & 64) {
- strm->msg = (char *)"invalid distance code";
- state->mode = BAD;
- break;
- }
- state->offset = (unsigned)this.val;
- state->extra = (unsigned)(this.op) & 15;
- state->mode = DISTEXT;
- case DISTEXT:
- if (state->extra) {
- NEEDBITS(state->extra);
- state->offset += BITS(state->extra);
- DROPBITS(state->extra);
- }
-#ifdef INFLATE_STRICT
- if (state->offset > state->dmax) {
- strm->msg = (char *)"invalid distance too far back";
- state->mode = BAD;
- break;
- }
-#endif
- if (state->offset > state->whave + out - left) {
- strm->msg = (char *)"invalid distance too far back";
- state->mode = BAD;
- break;
- }
- Tracevv((stderr, "inflate: distance %u\n", state->offset));
- state->mode = MATCH;
- case MATCH:
- if (left == 0) goto inf_leave;
- copy = out - left;
- if (state->offset > copy) { /* copy from window */
- copy = state->offset - copy;
- if (copy > state->write) {
- copy -= state->write;
- from = state->window + (state->wsize - copy);
- }
- else
- from = state->window + (state->write - copy);
- if (copy > state->length) copy = state->length;
- }
- else { /* copy from output */
- from = put - state->offset;
- copy = state->length;
- }
- if (copy > left) copy = left;
- left -= copy;
- state->length -= copy;
- do {
- *put++ = *from++;
- } while (--copy);
- if (state->length == 0) state->mode = LEN;
- break;
- case LIT:
- if (left == 0) goto inf_leave;
- *put++ = (unsigned char)(state->length);
- left--;
- state->mode = LEN;
- break;
- case CHECK:
- if (state->wrap) {
- NEEDBITS(32);
- out -= left;
- strm->total_out += out;
- state->total += out;
- if (out)
- strm->adler = state->check =
- UPDATE(state->check, put - out, out);
- out = left;
- if ((
-#ifdef GUNZIP
- state->flags ? hold :
-#endif
- REVERSE(hold)) != state->check) {
- strm->msg = (char *)"incorrect data check";
- state->mode = BAD;
- break;
- }
- INITBITS();
- Tracev((stderr, "inflate: check matches trailer\n"));
- }
-#ifdef GUNZIP
- state->mode = LENGTH;
- case LENGTH:
- if (state->wrap && state->flags) {
- NEEDBITS(32);
- if (hold != (state->total & 0xffffffffUL)) {
- strm->msg = (char *)"incorrect length check";
- state->mode = BAD;
- break;
- }
- INITBITS();
- Tracev((stderr, "inflate: length matches trailer\n"));
- }
-#endif
- state->mode = DONE;
- case DONE:
- ret = Z_STREAM_END;
- goto inf_leave;
- case BAD:
- ret = Z_DATA_ERROR;
- goto inf_leave;
- case MEM:
- return Z_MEM_ERROR;
- case SYNC:
- default:
- return Z_STREAM_ERROR;
- }
-
- /*
- Return from inflate(), updating the total counts and the check value.
- If there was no progress during the inflate() call, return a buffer
- error. Call updatewindow() to create and/or update the window state.
- Note: a memory error from inflate() is non-recoverable.
- */
- inf_leave:
- RESTORE();
- if (state->wsize || (state->mode < CHECK && out != strm->avail_out))
- if (updatewindow(strm, out)) {
- state->mode = MEM;
- return Z_MEM_ERROR;
- }
- in -= strm->avail_in;
- out -= strm->avail_out;
- strm->total_in += in;
- strm->total_out += out;
- state->total += out;
- if (state->wrap && out)
- strm->adler = state->check =
- UPDATE(state->check, strm->next_out - out, out);
- strm->data_type = state->bits + (state->last ? 64 : 0) +
- (state->mode == TYPE ? 128 : 0);
- if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK)
- ret = Z_BUF_ERROR;
- return ret;
-}
-
-int ZEXPORT inflateEnd(strm)
-z_streamp strm;
-{
- struct inflate_state FAR *state;
- if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
- return Z_STREAM_ERROR;
- state = (struct inflate_state FAR *)strm->state;
- if (state->window != Z_NULL) ZFREE(strm, state->window);
- ZFREE(strm, strm->state);
- strm->state = Z_NULL;
- Tracev((stderr, "inflate: end\n"));
- return Z_OK;
-}
-
-int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)
-z_streamp strm;
-const Bytef *dictionary;
-uInt dictLength;
-{
- struct inflate_state FAR *state;
- unsigned long id;
-
- /* check state */
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
- state = (struct inflate_state FAR *)strm->state;
- if (state->wrap != 0 && state->mode != DICT)
- return Z_STREAM_ERROR;
-
- /* check for correct dictionary id */
- if (state->mode == DICT) {
- id = adler32(0L, Z_NULL, 0);
- id = adler32(id, dictionary, dictLength);
- if (id != state->check)
- return Z_DATA_ERROR;
- }
-
- /* copy dictionary to window */
- if (updatewindow(strm, strm->avail_out)) {
- state->mode = MEM;
- return Z_MEM_ERROR;
- }
- if (dictLength > state->wsize) {
- zmemcpy(state->window, dictionary + dictLength - state->wsize,
- state->wsize);
- state->whave = state->wsize;
- }
- else {
- zmemcpy(state->window + state->wsize - dictLength, dictionary,
- dictLength);
- state->whave = dictLength;
- }
- state->havedict = 1;
- Tracev((stderr, "inflate: dictionary set\n"));
- return Z_OK;
-}
-
-int ZEXPORT inflateGetHeader(strm, head)
-z_streamp strm;
-gz_headerp head;
-{
- struct inflate_state FAR *state;
-
- /* check state */
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
- state = (struct inflate_state FAR *)strm->state;
- if ((state->wrap & 2) == 0) return Z_STREAM_ERROR;
-
- /* save header structure */
- state->head = head;
- head->done = 0;
- return Z_OK;
-}
-
-/*
- Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found
- or when out of input. When called, *have is the number of pattern bytes
- found in order so far, in 0..3. On return *have is updated to the new
- state. If on return *have equals four, then the pattern was found and the
- return value is how many bytes were read including the last byte of the
- pattern. If *have is less than four, then the pattern has not been found
- yet and the return value is len. In the latter case, syncsearch() can be
- called again with more data and the *have state. *have is initialized to
- zero for the first call.
- */
-local unsigned syncsearch(have, buf, len)
-unsigned FAR *have;
-unsigned char FAR *buf;
-unsigned len;
-{
- unsigned got;
- unsigned next;
-
- got = *have;
- next = 0;
- while (next < len && got < 4) {
- if ((int)(buf[next]) == (got < 2 ? 0 : 0xff))
- got++;
- else if (buf[next])
- got = 0;
- else
- got = 4 - got;
- next++;
- }
- *have = got;
- return next;
-}
-
-int ZEXPORT inflateSync(strm)
-z_streamp strm;
-{
- unsigned len; /* number of bytes to look at or looked at */
- unsigned long in, out; /* temporary to save total_in and total_out */
- unsigned char buf[4]; /* to restore bit buffer to byte string */
- struct inflate_state FAR *state;
-
- /* check parameters */
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
- state = (struct inflate_state FAR *)strm->state;
- if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR;
-
- /* if first time, start search in bit buffer */
- if (state->mode != SYNC) {
- state->mode = SYNC;
- state->hold <<= state->bits & 7;
- state->bits -= state->bits & 7;
- len = 0;
- while (state->bits >= 8) {
- buf[len++] = (unsigned char)(state->hold);
- state->hold >>= 8;
- state->bits -= 8;
- }
- state->have = 0;
- syncsearch(&(state->have), buf, len);
- }
-
- /* search available input */
- len = syncsearch(&(state->have), strm->next_in, strm->avail_in);
- strm->avail_in -= len;
- strm->next_in += len;
- strm->total_in += len;
-
- /* return no joy or set up to restart inflate() on a new block */
- if (state->have != 4) return Z_DATA_ERROR;
- in = strm->total_in; out = strm->total_out;
- inflateReset(strm);
- strm->total_in = in; strm->total_out = out;
- state->mode = TYPE;
- return Z_OK;
-}
-
-/*
- Returns true if inflate is currently at the end of a block generated by
- Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP
- implementation to provide an additional safety check. PPP uses
- Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored
- block. When decompressing, PPP checks that at the end of input packet,
- inflate is waiting for these length bytes.
- */
-int ZEXPORT inflateSyncPoint(strm)
-z_streamp strm;
-{
- struct inflate_state FAR *state;
-
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
- state = (struct inflate_state FAR *)strm->state;
- return state->mode == STORED && state->bits == 0;
-}
-
-int ZEXPORT inflateCopy(dest, source)
-z_streamp dest;
-z_streamp source;
-{
- struct inflate_state FAR *state;
- struct inflate_state FAR *copy;
- unsigned char FAR *window;
- unsigned wsize;
-
- /* check input */
- if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL ||
- source->zalloc == (alloc_func)0 || source->zfree == (free_func)0)
- return Z_STREAM_ERROR;
- state = (struct inflate_state FAR *)source->state;
-
- /* allocate space */
- copy = (struct inflate_state FAR *)
- ZALLOC(source, 1, sizeof(struct inflate_state));
- if (copy == Z_NULL) return Z_MEM_ERROR;
- window = Z_NULL;
- if (state->window != Z_NULL) {
- window = (unsigned char FAR *)
- ZALLOC(source, 1U << state->wbits, sizeof(unsigned char));
- if (window == Z_NULL) {
- ZFREE(source, copy);
- return Z_MEM_ERROR;
- }
- }
-
- /* copy state */
- zmemcpy(dest, source, sizeof(z_stream));
- zmemcpy(copy, state, sizeof(struct inflate_state));
- if (state->lencode >= state->codes &&
- state->lencode <= state->codes + ENOUGH - 1) {
- copy->lencode = copy->codes + (state->lencode - state->codes);
- copy->distcode = copy->codes + (state->distcode - state->codes);
- }
- copy->next = copy->codes + (state->next - state->codes);
- if (window != Z_NULL) {
- wsize = 1U << state->wbits;
- zmemcpy(window, state->window, wsize);
- }
- copy->window = window;
- dest->state = (struct internal_state FAR *)copy;
- return Z_OK;
-}
diff --git a/navit/support/zlib/inflate.h b/navit/support/zlib/inflate.h
deleted file mode 100644
index 07bd3e78a..000000000
--- a/navit/support/zlib/inflate.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* inflate.h -- internal inflate state definition
- * Copyright (C) 1995-2004 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-/* define NO_GZIP when compiling if you want to disable gzip header and
- trailer decoding by inflate(). NO_GZIP would be used to avoid linking in
- the crc code when it is not needed. For shared libraries, gzip decoding
- should be left enabled. */
-#ifndef NO_GZIP
-# define GUNZIP
-#endif
-
-/* Possible inflate modes between inflate() calls */
-typedef enum {
- HEAD, /* i: waiting for magic header */
- FLAGS, /* i: waiting for method and flags (gzip) */
- TIME, /* i: waiting for modification time (gzip) */
- OS, /* i: waiting for extra flags and operating system (gzip) */
- EXLEN, /* i: waiting for extra length (gzip) */
- EXTRA, /* i: waiting for extra bytes (gzip) */
- NAME, /* i: waiting for end of file name (gzip) */
- COMMENT, /* i: waiting for end of comment (gzip) */
- HCRC, /* i: waiting for header crc (gzip) */
- DICTID, /* i: waiting for dictionary check value */
- DICT, /* waiting for inflateSetDictionary() call */
- TYPE, /* i: waiting for type bits, including last-flag bit */
- TYPEDO, /* i: same, but skip check to exit inflate on new block */
- STORED, /* i: waiting for stored size (length and complement) */
- COPY, /* i/o: waiting for input or output to copy stored block */
- TABLE, /* i: waiting for dynamic block table lengths */
- LENLENS, /* i: waiting for code length code lengths */
- CODELENS, /* i: waiting for length/lit and distance code lengths */
- LEN, /* i: waiting for length/lit code */
- LENEXT, /* i: waiting for length extra bits */
- DIST, /* i: waiting for distance code */
- DISTEXT, /* i: waiting for distance extra bits */
- MATCH, /* o: waiting for output space to copy string */
- LIT, /* o: waiting for output space to write literal */
- CHECK, /* i: waiting for 32-bit check value */
- LENGTH, /* i: waiting for 32-bit length (gzip) */
- DONE, /* finished check, done -- remain here until reset */
- BAD, /* got a data error -- remain here until reset */
- MEM, /* got an inflate() memory error -- remain here until reset */
- SYNC /* looking for synchronization bytes to restart inflate() */
-} inflate_mode;
-
-/*
- State transitions between above modes -
-
- (most modes can go to the BAD or MEM mode -- not shown for clarity)
-
- Process header:
- HEAD -> (gzip) or (zlib)
- (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME
- NAME -> COMMENT -> HCRC -> TYPE
- (zlib) -> DICTID or TYPE
- DICTID -> DICT -> TYPE
- Read deflate blocks:
- TYPE -> STORED or TABLE or LEN or CHECK
- STORED -> COPY -> TYPE
- TABLE -> LENLENS -> CODELENS -> LEN
- Read deflate codes:
- LEN -> LENEXT or LIT or TYPE
- LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
- LIT -> LEN
- Process trailer:
- CHECK -> LENGTH -> DONE
- */
-
-/* state maintained between inflate() calls. Approximately 7K bytes. */
-struct inflate_state {
- inflate_mode mode; /* current inflate mode */
- int last; /* true if processing last block */
- int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
- int havedict; /* true if dictionary provided */
- int flags; /* gzip header method and flags (0 if zlib) */
- unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */
- unsigned long check; /* protected copy of check value */
- unsigned long total; /* protected copy of output count */
- gz_headerp head; /* where to save gzip header information */
- /* sliding window */
- unsigned wbits; /* log base 2 of requested window size */
- unsigned wsize; /* window size or zero if not using window */
- unsigned whave; /* valid bytes in the window */
- unsigned write; /* window write index */
- unsigned char FAR *window; /* allocated sliding window, if needed */
- /* bit accumulator */
- unsigned long hold; /* input bit accumulator */
- unsigned bits; /* number of bits in "in" */
- /* for string and stored block copying */
- unsigned length; /* literal or length of data to copy */
- unsigned offset; /* distance back to copy string from */
- /* for table and code decoding */
- unsigned extra; /* extra bits needed */
- /* fixed and dynamic code tables */
- code const FAR *lencode; /* starting table for length/literal codes */
- code const FAR *distcode; /* starting table for distance codes */
- unsigned lenbits; /* index bits for lencode */
- unsigned distbits; /* index bits for distcode */
- /* dynamic table building */
- unsigned ncode; /* number of code length code lengths */
- unsigned nlen; /* number of length code lengths */
- unsigned ndist; /* number of distance code lengths */
- unsigned have; /* number of code lengths in lens[] */
- code FAR *next; /* next available space in codes[] */
- unsigned short lens[320]; /* temporary storage for code lengths */
- unsigned short work[288]; /* work area for code table building */
- code codes[ENOUGH]; /* space for code tables */
-};
diff --git a/navit/support/zlib/inftrees.c b/navit/support/zlib/inftrees.c
deleted file mode 100644
index 8a9c13ff0..000000000
--- a/navit/support/zlib/inftrees.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2005 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-
-#define MAXBITS 15
-
-const char inflate_copyright[] =
- " inflate 1.2.3 Copyright 1995-2005 Mark Adler ";
-/*
- If you use the zlib library in a product, an acknowledgment is welcome
- in the documentation of your product. If for some reason you cannot
- include such an acknowledgment, I would appreciate that you keep this
- copyright string in the executable of your product.
- */
-
-/*
- Build a set of tables to decode the provided canonical Huffman code.
- The code lengths are lens[0..codes-1]. The result starts at *table,
- whose indices are 0..2^bits-1. work is a writable array of at least
- lens shorts, which is used as a work area. type is the type of code
- to be generated, CODES, LENS, or DISTS. On return, zero is success,
- -1 is an invalid code, and +1 means that ENOUGH isn't enough. table
- on return points to the next available entry's address. bits is the
- requested root table index bits, and on return it is the actual root
- table index bits. It will differ if the request is greater than the
- longest code or if it is less than the shortest code.
- */
-int inflate_table(type, lens, codes, table, bits, work)
-codetype type;
-unsigned short FAR *lens;
-unsigned codes;
-code FAR * FAR *table;
-unsigned FAR *bits;
-unsigned short FAR *work;
-{
- unsigned len; /* a code's length in bits */
- unsigned sym; /* index of code symbols */
- unsigned min, max; /* minimum and maximum code lengths */
- unsigned root; /* number of index bits for root table */
- unsigned curr; /* number of index bits for current table */
- unsigned drop; /* code bits to drop for sub-table */
- int left; /* number of prefix codes available */
- unsigned used; /* code entries in table used */
- unsigned huff; /* Huffman code */
- unsigned incr; /* for incrementing code, index */
- unsigned fill; /* index for replicating entries */
- unsigned low; /* low bits for current root entry */
- unsigned mask; /* mask for low root bits */
- code this; /* table entry for duplication */
- code FAR *next; /* next available space in table */
- const unsigned short FAR *base; /* base value table to use */
- const unsigned short FAR *extra; /* extra bits table to use */
- int end; /* use base and extra for symbol > end */
- unsigned short count[MAXBITS+1]; /* number of codes of each length */
- unsigned short offs[MAXBITS+1]; /* offsets in table for each length */
- static const unsigned short lbase[31] = { /* Length codes 257..285 base */
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
- 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
- static const unsigned short lext[31] = { /* Length codes 257..285 extra */
- 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 201, 196};
- static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
- 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
- 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
- 8193, 12289, 16385, 24577, 0, 0};
- static const unsigned short dext[32] = { /* Distance codes 0..29 extra */
- 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
- 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
- 28, 28, 29, 29, 64, 64};
-
- /*
- Process a set of code lengths to create a canonical Huffman code. The
- code lengths are lens[0..codes-1]. Each length corresponds to the
- symbols 0..codes-1. The Huffman code is generated by first sorting the
- symbols by length from short to long, and retaining the symbol order
- for codes with equal lengths. Then the code starts with all zero bits
- for the first code of the shortest length, and the codes are integer
- increments for the same length, and zeros are appended as the length
- increases. For the deflate format, these bits are stored backwards
- from their more natural integer increment ordering, and so when the
- decoding tables are built in the large loop below, the integer codes
- are incremented backwards.
-
- This routine assumes, but does not check, that all of the entries in
- lens[] are in the range 0..MAXBITS. The caller must assure this.
- 1..MAXBITS is interpreted as that code length. zero means that that
- symbol does not occur in this code.
-
- The codes are sorted by computing a count of codes for each length,
- creating from that a table of starting indices for each length in the
- sorted table, and then entering the symbols in order in the sorted
- table. The sorted table is work[], with that space being provided by
- the caller.
-
- The length counts are used for other purposes as well, i.e. finding
- the minimum and maximum length codes, determining if there are any
- codes at all, checking for a valid set of lengths, and looking ahead
- at length counts to determine sub-table sizes when building the
- decoding tables.
- */
-
- /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
- for (len = 0; len <= MAXBITS; len++)
- count[len] = 0;
- for (sym = 0; sym < codes; sym++)
- count[lens[sym]]++;
-
- /* bound code lengths, force root to be within code lengths */
- root = *bits;
- for (max = MAXBITS; max >= 1; max--)
- if (count[max] != 0) break;
- if (root > max) root = max;
- if (max == 0) { /* no symbols to code at all */
- this.op = (unsigned char)64; /* invalid code marker */
- this.bits = (unsigned char)1;
- this.val = (unsigned short)0;
- *(*table)++ = this; /* make a table to force an error */
- *(*table)++ = this;
- *bits = 1;
- return 0; /* no symbols, but wait for decoding to report error */
- }
- for (min = 1; min <= MAXBITS; min++)
- if (count[min] != 0) break;
- if (root < min) root = min;
-
- /* check for an over-subscribed or incomplete set of lengths */
- left = 1;
- for (len = 1; len <= MAXBITS; len++) {
- left <<= 1;
- left -= count[len];
- if (left < 0) return -1; /* over-subscribed */
- }
- if (left > 0 && (type == CODES || max != 1))
- return -1; /* incomplete set */
-
- /* generate offsets into symbol table for each length for sorting */
- offs[1] = 0;
- for (len = 1; len < MAXBITS; len++)
- offs[len + 1] = offs[len] + count[len];
-
- /* sort symbols by length, by symbol order within each length */
- for (sym = 0; sym < codes; sym++)
- if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym;
-
- /*
- Create and fill in decoding tables. In this loop, the table being
- filled is at next and has curr index bits. The code being used is huff
- with length len. That code is converted to an index by dropping drop
- bits off of the bottom. For codes where len is less than drop + curr,
- those top drop + curr - len bits are incremented through all values to
- fill the table with replicated entries.
-
- root is the number of index bits for the root table. When len exceeds
- root, sub-tables are created pointed to by the root entry with an index
- of the low root bits of huff. This is saved in low to check for when a
- new sub-table should be started. drop is zero when the root table is
- being filled, and drop is root when sub-tables are being filled.
-
- When a new sub-table is needed, it is necessary to look ahead in the
- code lengths to determine what size sub-table is needed. The length
- counts are used for this, and so count[] is decremented as codes are
- entered in the tables.
-
- used keeps track of how many table entries have been allocated from the
- provided *table space. It is checked when a LENS table is being made
- against the space in *table, ENOUGH, minus the maximum space needed by
- the worst case distance code, MAXD. This should never happen, but the
- sufficiency of ENOUGH has not been proven exhaustively, hence the check.
- This assumes that when type == LENS, bits == 9.
-
- sym increments through all symbols, and the loop terminates when
- all codes of length max, i.e. all codes, have been processed. This
- routine permits incomplete codes, so another loop after this one fills
- in the rest of the decoding tables with invalid code markers.
- */
-
- /* set up for code type */
- switch (type) {
- case CODES:
- base = extra = work; /* dummy value--not used */
- end = 19;
- break;
- case LENS:
- base = lbase;
- base -= 257;
- extra = lext;
- extra -= 257;
- end = 256;
- break;
- default: /* DISTS */
- base = dbase;
- extra = dext;
- end = -1;
- }
-
- /* initialize state for loop */
- huff = 0; /* starting code */
- sym = 0; /* starting code symbol */
- len = min; /* starting code length */
- next = *table; /* current table to fill in */
- curr = root; /* current table index bits */
- drop = 0; /* current bits to drop from code for index */
- low = (unsigned)(-1); /* trigger new sub-table when len > root */
- used = 1U << root; /* use root table entries */
- mask = used - 1; /* mask for comparing low */
-
- /* check available table space */
- if (type == LENS && used >= ENOUGH - MAXD)
- return 1;
-
- /* process all codes and make table entries */
- for (;;) {
- /* create table entry */
- this.bits = (unsigned char)(len - drop);
- if ((int)(work[sym]) < end) {
- this.op = (unsigned char)0;
- this.val = work[sym];
- }
- else if ((int)(work[sym]) > end) {
- this.op = (unsigned char)(extra[work[sym]]);
- this.val = base[work[sym]];
- }
- else {
- this.op = (unsigned char)(32 + 64); /* end of block */
- this.val = 0;
- }
-
- /* replicate for those indices with low len bits equal to huff */
- incr = 1U << (len - drop);
- fill = 1U << curr;
- min = fill; /* save offset to next table */
- do {
- fill -= incr;
- next[(huff >> drop) + fill] = this;
- } while (fill != 0);
-
- /* backwards increment the len-bit code huff */
- incr = 1U << (len - 1);
- while (huff & incr)
- incr >>= 1;
- if (incr != 0) {
- huff &= incr - 1;
- huff += incr;
- }
- else
- huff = 0;
-
- /* go to next symbol, update count, len */
- sym++;
- if (--(count[len]) == 0) {
- if (len == max) break;
- len = lens[work[sym]];
- }
-
- /* create new sub-table if needed */
- if (len > root && (huff & mask) != low) {
- /* if first time, transition to sub-tables */
- if (drop == 0)
- drop = root;
-
- /* increment past last table */
- next += min; /* here min is 1 << curr */
-
- /* determine length of next table */
- curr = len - drop;
- left = (int)(1 << curr);
- while (curr + drop < max) {
- left -= count[curr + drop];
- if (left <= 0) break;
- curr++;
- left <<= 1;
- }
-
- /* check for enough space */
- used += 1U << curr;
- if (type == LENS && used >= ENOUGH - MAXD)
- return 1;
-
- /* point entry in root table to sub-table */
- low = huff & mask;
- (*table)[low].op = (unsigned char)curr;
- (*table)[low].bits = (unsigned char)root;
- (*table)[low].val = (unsigned short)(next - *table);
- }
- }
-
- /*
- Fill in rest of table for incomplete codes. This loop is similar to the
- loop above in incrementing huff for table indices. It is assumed that
- len is equal to curr + drop, so there is no loop needed to increment
- through high index bits. When the current sub-table is filled, the loop
- drops back to the root table to fill in any remaining entries there.
- */
- this.op = (unsigned char)64; /* invalid code marker */
- this.bits = (unsigned char)(len - drop);
- this.val = (unsigned short)0;
- while (huff != 0) {
- /* when done with sub-table, drop back to root table */
- if (drop != 0 && (huff & mask) != low) {
- drop = 0;
- len = root;
- next = *table;
- this.bits = (unsigned char)len;
- }
-
- /* put invalid code marker in table */
- next[huff >> drop] = this;
-
- /* backwards increment the len-bit code huff */
- incr = 1U << (len - 1);
- while (huff & incr)
- incr >>= 1;
- if (incr != 0) {
- huff &= incr - 1;
- huff += incr;
- }
- else
- huff = 0;
- }
-
- /* set return parameters */
- *table += used;
- *bits = root;
- return 0;
-}
diff --git a/navit/support/zlib/inftrees.h b/navit/support/zlib/inftrees.h
deleted file mode 100644
index b1104c87e..000000000
--- a/navit/support/zlib/inftrees.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* inftrees.h -- header to use inftrees.c
- * Copyright (C) 1995-2005 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-/* Structure for decoding tables. Each entry provides either the
- information needed to do the operation requested by the code that
- indexed that table entry, or it provides a pointer to another
- table that indexes more bits of the code. op indicates whether
- the entry is a pointer to another table, a literal, a length or
- distance, an end-of-block, or an invalid code. For a table
- pointer, the low four bits of op is the number of index bits of
- that table. For a length or distance, the low four bits of op
- is the number of extra bits to get after the code. bits is
- the number of bits in this code or part of the code to drop off
- of the bit buffer. val is the actual byte to output in the case
- of a literal, the base length or distance, or the offset from
- the current table to the next table. Each entry is four bytes. */
-typedef struct {
- unsigned char op; /* operation, extra bits, table bits */
- unsigned char bits; /* bits in this part of the code */
- unsigned short val; /* offset in table or code value */
-} code;
-
-/* op values as set by inflate_table():
- 00000000 - literal
- 0000tttt - table link, tttt != 0 is the number of table index bits
- 0001eeee - length or distance, eeee is the number of extra bits
- 01100000 - end of block
- 01000000 - invalid code
- */
-
-/* Maximum size of dynamic tree. The maximum found in a long but non-
- exhaustive search was 1444 code structures (852 for length/literals
- and 592 for distances, the latter actually the result of an
- exhaustive search). The true maximum is not known, but the value
- below is more than safe. */
-#define ENOUGH 2048
-#define MAXD 592
-
-/* Type of code to build for inftable() */
-typedef enum {
- CODES,
- LENS,
- DISTS
-} codetype;
-
-extern int inflate_table OF((codetype type, unsigned short FAR *lens,
- unsigned codes, code FAR * FAR *table,
- unsigned FAR *bits, unsigned short FAR *work));
diff --git a/navit/support/zlib/zconf.h b/navit/support/zlib/zconf.h
deleted file mode 100644
index 03a9431c8..000000000
--- a/navit/support/zlib/zconf.h
+++ /dev/null
@@ -1,332 +0,0 @@
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#ifndef ZCONF_H
-#define ZCONF_H
-
-/*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
- */
-#ifdef Z_PREFIX
-# define deflateInit_ z_deflateInit_
-# define deflate z_deflate
-# define deflateEnd z_deflateEnd
-# define inflateInit_ z_inflateInit_
-# define inflate z_inflate
-# define inflateEnd z_inflateEnd
-# define deflateInit2_ z_deflateInit2_
-# define deflateSetDictionary z_deflateSetDictionary
-# define deflateCopy z_deflateCopy
-# define deflateReset z_deflateReset
-# define deflateParams z_deflateParams
-# define deflateBound z_deflateBound
-# define deflatePrime z_deflatePrime
-# define inflateInit2_ z_inflateInit2_
-# define inflateSetDictionary z_inflateSetDictionary
-# define inflateSync z_inflateSync
-# define inflateSyncPoint z_inflateSyncPoint
-# define inflateCopy z_inflateCopy
-# define inflateReset z_inflateReset
-# define inflateBack z_inflateBack
-# define inflateBackEnd z_inflateBackEnd
-# define compress z_compress
-# define compress2 z_compress2
-# define compressBound z_compressBound
-# define uncompress z_uncompress
-# define adler32 z_adler32
-# define crc32 z_crc32
-# define get_crc_table z_get_crc_table
-# define zError z_zError
-
-# define alloc_func z_alloc_func
-# define free_func z_free_func
-# define in_func z_in_func
-# define out_func z_out_func
-# define Byte z_Byte
-# define uInt z_uInt
-# define uLong z_uLong
-# define Bytef z_Bytef
-# define charf z_charf
-# define intf z_intf
-# define uIntf z_uIntf
-# define uLongf z_uLongf
-# define voidpf z_voidpf
-# define voidp z_voidp
-#endif
-
-#if defined(__MSDOS__) && !defined(MSDOS)
-# define MSDOS
-#endif
-#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
-# define OS2
-#endif
-#if defined(_WINDOWS) && !defined(WINDOWS)
-# define WINDOWS
-#endif
-#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
-# ifndef WIN32
-# define WIN32
-# endif
-#endif
-#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
-# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
-# ifndef SYS16BIT
-# define SYS16BIT
-# endif
-# endif
-#endif
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- */
-#ifdef SYS16BIT
-# define MAXSEG_64K
-#endif
-#ifdef MSDOS
-# define UNALIGNED_OK
-#endif
-
-#ifdef __STDC_VERSION__
-# ifndef STDC
-# define STDC
-# endif
-# if __STDC_VERSION__ >= 199901L
-# ifndef STDC99
-# define STDC99
-# endif
-# endif
-#endif
-#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
-# define STDC
-#endif
-#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
-# define STDC
-#endif
-#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
-# define STDC
-#endif
-#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
-# define STDC
-#endif
-
-#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */
-# define STDC
-#endif
-
-#ifndef STDC
-# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-# define const /* note: need a more gentle solution here */
-# endif
-#endif
-
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
-# define NO_DUMMY_DECL
-#endif
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-# ifdef MAXSEG_64K
-# define MAX_MEM_LEVEL 8
-# else
-# define MAX_MEM_LEVEL 9
-# endif
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2.
- * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
- * created by gzip. (Files created by minigzip can still be extracted by
- * gzip.)
- */
-#ifndef MAX_WBITS
-# define MAX_WBITS 15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
- (1 << (windowBits+2)) + (1 << (memLevel+9))
- that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
- make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
- The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
- /* Type declarations */
-
-#ifndef OF /* function prototypes */
-# ifdef STDC
-# define OF(args) args
-# else
-# define OF(args) ()
-# endif
-#endif
-
-/* The following definitions for FAR are needed only for MSDOS mixed
- * model programming (small or medium model with some far allocations).
- * This was tested only with MSC; for other MSDOS compilers you may have
- * to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
- * just define FAR to be empty.
- */
-#ifdef SYS16BIT
-# if defined(M_I86SM) || defined(M_I86MM)
- /* MSC small or medium model */
-# define SMALL_MEDIUM
-# ifdef _MSC_VER
-# define FAR _far
-# else
-# define FAR far
-# endif
-# endif
-# if (defined(__SMALL__) || defined(__MEDIUM__))
- /* Turbo C small or medium model */
-# define SMALL_MEDIUM
-# ifdef __BORLANDC__
-# define FAR _far
-# else
-# define FAR far
-# endif
-# endif
-#endif
-
-#if defined(WINDOWS) || defined(WIN32)
- /* If building or using zlib as a DLL, define ZLIB_DLL.
- * This is not mandatory, but it offers a little performance increase.
- */
-# ifdef ZLIB_DLL
-# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
-# ifdef ZLIB_INTERNAL
-# define ZEXTERN extern __declspec(dllexport)
-# else
-# define ZEXTERN extern __declspec(dllimport)
-# endif
-# endif
-# endif /* ZLIB_DLL */
- /* If building or using zlib with the WINAPI/WINAPIV calling convention,
- * define ZLIB_WINAPI.
- * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
- */
-# ifdef ZLIB_WINAPI
-# ifdef FAR
-# undef FAR
-# endif
-# include <windows.h>
- /* No need for _export, use ZLIB.DEF instead. */
- /* For complete Windows compatibility, use WINAPI, not __stdcall. */
-# define ZEXPORT WINAPI
-# ifdef WIN32
-# define ZEXPORTVA WINAPIV
-# else
-# define ZEXPORTVA FAR CDECL
-# endif
-# endif
-#endif
-
-#if defined (__BEOS__)
-# ifdef ZLIB_DLL
-# ifdef ZLIB_INTERNAL
-# define ZEXPORT __declspec(dllexport)
-# define ZEXPORTVA __declspec(dllexport)
-# else
-# define ZEXPORT __declspec(dllimport)
-# define ZEXPORTVA __declspec(dllimport)
-# endif
-# endif
-#endif
-
-#ifndef ZEXTERN
-# define ZEXTERN extern
-#endif
-#ifndef ZEXPORT
-# define ZEXPORT
-#endif
-#ifndef ZEXPORTVA
-# define ZEXPORTVA
-#endif
-
-#ifndef FAR
-# define FAR
-#endif
-
-#if !defined(__MACTYPES__)
-typedef unsigned char Byte; /* 8 bits */
-#endif
-typedef unsigned int uInt; /* 16 bits or more */
-typedef unsigned long uLong; /* 32 bits or more */
-
-#ifdef SMALL_MEDIUM
- /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
-# define Bytef Byte FAR
-#else
- typedef Byte FAR Bytef;
-#endif
-typedef char FAR charf;
-typedef int FAR intf;
-typedef uInt FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
- typedef void const *voidpc;
- typedef void FAR *voidpf;
- typedef void *voidp;
-#else
- typedef Byte const *voidpc;
- typedef Byte FAR *voidpf;
- typedef Byte *voidp;
-#endif
-
-#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */
-# include <sys/types.h> /* for off_t */
-# include <unistd.h> /* for SEEK_* and off_t */
-# ifdef VMS
-# include <unixio.h> /* for off_t */
-# endif
-# define z_off_t off_t
-#endif
-#ifndef SEEK_SET
-# define SEEK_SET 0 /* Seek from beginning of file. */
-# define SEEK_CUR 1 /* Seek from current position. */
-# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
-#endif
-#ifndef z_off_t
-# define z_off_t long
-#endif
-
-#if defined(__OS400__)
-# define NO_vsnprintf
-#endif
-
-#if defined(__MVS__)
-# define NO_vsnprintf
-# ifdef FAR
-# undef FAR
-# endif
-#endif
-
-/* MVS linker does not support external names larger than 8 bytes */
-#if defined(__MVS__)
-# pragma map(deflateInit_,"DEIN")
-# pragma map(deflateInit2_,"DEIN2")
-# pragma map(deflateEnd,"DEEND")
-# pragma map(deflateBound,"DEBND")
-# pragma map(inflateInit_,"ININ")
-# pragma map(inflateInit2_,"ININ2")
-# pragma map(inflateEnd,"INEND")
-# pragma map(inflateSync,"INSY")
-# pragma map(inflateSetDictionary,"INSEDI")
-# pragma map(compressBound,"CMBND")
-# pragma map(inflate_table,"INTABL")
-# pragma map(inflate_fast,"INFA")
-# pragma map(inflate_copyright,"INCOPY")
-#endif
-
-#endif /* ZCONF_H */
diff --git a/navit/support/zlib/zlib.h b/navit/support/zlib/zlib.h
deleted file mode 100644
index 022817927..000000000
--- a/navit/support/zlib/zlib.h
+++ /dev/null
@@ -1,1357 +0,0 @@
-/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.3, July 18th, 2005
-
- Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- jloup@gzip.org madler@alumni.caltech.edu
-
-
- The data format used by the zlib library is described by RFCs (Request for
- Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
- (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
-*/
-
-#ifndef ZLIB_H
-#define ZLIB_H
-
-#include "zconf.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ZLIB_VERSION "1.2.3"
-#define ZLIB_VERNUM 0x1230
-
-/*
- The 'zlib' compression library provides in-memory compression and
- decompression functions, including integrity checks of the uncompressed
- data. This version of the library supports only one compression method
- (deflation) but other algorithms will be added later and will have the same
- stream interface.
-
- Compression can be done in a single step if the buffers are large
- enough (for example if an input file is mmap'ed), or can be done by
- repeated calls of the compression function. In the latter case, the
- application must provide more input and/or consume the output
- (providing more output space) before each call.
-
- The compressed data format used by default by the in-memory functions is
- the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
- around a deflate stream, which is itself documented in RFC 1951.
-
- The library also supports reading and writing files in gzip (.gz) format
- with an interface similar to that of stdio using the functions that start
- with "gz". The gzip format is different from the zlib format. gzip is a
- gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
-
- This library can optionally read and write gzip streams in memory as well.
-
- The zlib format was designed to be compact and fast for use in memory
- and on communications channels. The gzip format was designed for single-
- file compression on file systems, has a larger header than zlib to maintain
- directory information, and uses a different, slower check method than zlib.
-
- The library does not install any signal handler. The decoder checks
- the consistency of the compressed data, so the library should never
- crash even in case of corrupted input.
-*/
-
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void (*free_func) OF((voidpf opaque, voidpf address));
-
-struct internal_state;
-
-typedef struct z_stream_s {
- Bytef *next_in; /* next input byte */
- uInt avail_in; /* number of bytes available at next_in */
- uLong total_in; /* total nb of input bytes read so far */
-
- Bytef *next_out; /* next output byte should be put there */
- uInt avail_out; /* remaining free space at next_out */
- uLong total_out; /* total nb of bytes output so far */
-
- char *msg; /* last error message, NULL if no error */
- struct internal_state FAR *state; /* not visible by applications */
-
- alloc_func zalloc; /* used to allocate the internal state */
- free_func zfree; /* used to free the internal state */
- voidpf opaque; /* private data object passed to zalloc and zfree */
-
- int data_type; /* best guess about the data type: binary or text */
- uLong adler; /* adler32 value of the uncompressed data */
- uLong reserved; /* reserved for future use */
-} z_stream;
-
-typedef z_stream FAR *z_streamp;
-
-/*
- gzip header information passed to and from zlib routines. See RFC 1952
- for more details on the meanings of these fields.
-*/
-typedef struct gz_header_s {
- int text; /* true if compressed data believed to be text */
- uLong time; /* modification time */
- int xflags; /* extra flags (not used when writing a gzip file) */
- int os; /* operating system */
- Bytef *extra; /* pointer to extra field or Z_NULL if none */
- uInt extra_len; /* extra field length (valid if extra != Z_NULL) */
- uInt extra_max; /* space at extra (only when reading header) */
- Bytef *name; /* pointer to zero-terminated file name or Z_NULL */
- uInt name_max; /* space at name (only when reading header) */
- Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */
- uInt comm_max; /* space at comment (only when reading header) */
- int hcrc; /* true if there was or will be a header crc */
- int done; /* true when done reading gzip header (not used
- when writing a gzip file) */
-} gz_header;
-
-typedef gz_header FAR *gz_headerp;
-
-/*
- The application must update next_in and avail_in when avail_in has
- dropped to zero. It must update next_out and avail_out when avail_out
- has dropped to zero. The application must initialize zalloc, zfree and
- opaque before calling the init function. All other fields are set by the
- compression library and must not be updated by the application.
-
- The opaque value provided by the application will be passed as the first
- parameter for calls of zalloc and zfree. This can be useful for custom
- memory management. The compression library attaches no meaning to the
- opaque value.
-
- zalloc must return Z_NULL if there is not enough memory for the object.
- If zlib is used in a multi-threaded application, zalloc and zfree must be
- thread safe.
-
- On 16-bit systems, the functions zalloc and zfree must be able to allocate
- exactly 65536 bytes, but will not be required to allocate more than this
- if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
- pointers returned by zalloc for objects of exactly 65536 bytes *must*
- have their offset normalized to zero. The default allocation function
- provided by this library ensures this (see zutil.c). To reduce memory
- requirements and avoid any allocation of 64K objects, at the expense of
- compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
-
- The fields total_in and total_out can be used for statistics or
- progress reports. After compression, total_in holds the total size of
- the uncompressed data and may be saved for use in the decompressor
- (particularly if the decompressor wants to decompress everything in
- a single step).
-*/
-
- /* constants */
-
-#define Z_NO_FLUSH 0
-#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
-#define Z_SYNC_FLUSH 2
-#define Z_FULL_FLUSH 3
-#define Z_FINISH 4
-#define Z_BLOCK 5
-/* Allowed flush values; see deflate() and inflate() below for details */
-
-#define Z_OK 0
-#define Z_STREAM_END 1
-#define Z_NEED_DICT 2
-#define Z_ERRNO (-1)
-#define Z_STREAM_ERROR (-2)
-#define Z_DATA_ERROR (-3)
-#define Z_MEM_ERROR (-4)
-#define Z_BUF_ERROR (-5)
-#define Z_VERSION_ERROR (-6)
-/* Return codes for the compression/decompression functions. Negative
- * values are errors, positive values are used for special but normal events.
- */
-
-#define Z_NO_COMPRESSION 0
-#define Z_BEST_SPEED 1
-#define Z_BEST_COMPRESSION 9
-#define Z_DEFAULT_COMPRESSION (-1)
-/* compression levels */
-
-#define Z_FILTERED 1
-#define Z_HUFFMAN_ONLY 2
-#define Z_RLE 3
-#define Z_FIXED 4
-#define Z_DEFAULT_STRATEGY 0
-/* compression strategy; see deflateInit2() below for details */
-
-#define Z_BINARY 0
-#define Z_TEXT 1
-#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */
-#define Z_UNKNOWN 2
-/* Possible values of the data_type field (though see inflate()) */
-
-#define Z_DEFLATED 8
-/* The deflate compression method (the only one supported in this version) */
-
-#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
-
-#define zlib_version zlibVersion()
-/* for compatibility with versions < 1.0.2 */
-
- /* basic functions */
-
-ZEXTERN const char * ZEXPORT zlibVersion OF((void));
-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
- If the first character differs, the library code actually used is
- not compatible with the zlib.h header file used by the application.
- This check is automatically made by deflateInit and inflateInit.
- */
-
-/*
-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
-
- Initializes the internal stream state for compression. The fields
- zalloc, zfree and opaque must be initialized before by the caller.
- If zalloc and zfree are set to Z_NULL, deflateInit updates them to
- use default allocation functions.
-
- The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
- 1 gives best speed, 9 gives best compression, 0 gives no compression at
- all (the input data is simply copied a block at a time).
- Z_DEFAULT_COMPRESSION requests a default compromise between speed and
- compression (currently equivalent to level 6).
-
- deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if level is not a valid compression level,
- Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
- with the version assumed by the caller (ZLIB_VERSION).
- msg is set to null if there is no error message. deflateInit does not
- perform any compression: this will be done by deflate().
-*/
-
-
-ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
-/*
- deflate compresses as much data as possible, and stops when the input
- buffer becomes empty or the output buffer becomes full. It may introduce some
- output latency (reading input without producing any output) except when
- forced to flush.
-
- The detailed semantics are as follows. deflate performs one or both of the
- following actions:
-
- - Compress more input starting at next_in and update next_in and avail_in
- accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in and avail_in are updated and
- processing will resume at this point for the next call of deflate().
-
- - Provide more output starting at next_out and update next_out and avail_out
- accordingly. This action is forced if the parameter flush is non zero.
- Forcing flush frequently degrades the compression ratio, so this parameter
- should be set only when necessary (in interactive applications).
- Some output may be provided even if flush is not set.
-
- Before the call of deflate(), the application should ensure that at least
- one of the actions is possible, by providing more input and/or consuming
- more output, and updating avail_in or avail_out accordingly; avail_out
- should never be zero before the call. The application can consume the
- compressed output when it wants, for example when the output buffer is full
- (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
- and with zero avail_out, it must be called again after making room in the
- output buffer because there might be more output pending.
-
- Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
- decide how much data to accumualte before producing output, in order to
- maximize compression.
-
- If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
- flushed to the output buffer and the output is aligned on a byte boundary, so
- that the decompressor can get all input data available so far. (In particular
- avail_in is zero after the call if enough output space has been provided
- before the call.) Flushing may degrade compression for some compression
- algorithms and so it should be used only when necessary.
-
- If flush is set to Z_FULL_FLUSH, all output is flushed as with
- Z_SYNC_FLUSH, and the compression state is reset so that decompression can
- restart from this point if previous compressed data has been damaged or if
- random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
- compression.
-
- If deflate returns with avail_out == 0, this function must be called again
- with the same value of the flush parameter and more output space (updated
- avail_out), until the flush is complete (deflate returns with non-zero
- avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
- avail_out is greater than six to avoid repeated flush markers due to
- avail_out == 0 on return.
-
- If the parameter flush is set to Z_FINISH, pending input is processed,
- pending output is flushed and deflate returns with Z_STREAM_END if there
- was enough output space; if deflate returns with Z_OK, this function must be
- called again with Z_FINISH and more output space (updated avail_out) but no
- more input data, until it returns with Z_STREAM_END or an error. After
- deflate has returned Z_STREAM_END, the only possible operations on the
- stream are deflateReset or deflateEnd.
-
- Z_FINISH can be used immediately after deflateInit if all the compression
- is to be done in a single step. In this case, avail_out must be at least
- the value returned by deflateBound (see below). If deflate does not return
- Z_STREAM_END, then it must be called again as described above.
-
- deflate() sets strm->adler to the adler32 checksum of all input read
- so far (that is, total_in bytes).
-
- deflate() may update strm->data_type if it can make a good guess about
- the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
- binary. This field is only for information purposes and does not affect
- the compression algorithm in any manner.
-
- deflate() returns Z_OK if some progress has been made (more input
- processed or more output produced), Z_STREAM_END if all input has been
- consumed and all output has been produced (only when flush is set to
- Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
- if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
- (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
- fatal, and deflate() can be called again with more input and more output
- space to continue compressing.
-*/
-
-
-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
-/*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any
- pending output.
-
- deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
- stream state was inconsistent, Z_DATA_ERROR if the stream was freed
- prematurely (some input or output was discarded). In the error case,
- msg may be set but then points to a static string (which must not be
- deallocated).
-*/
-
-
-/*
-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
-
- Initializes the internal stream state for decompression. The fields
- next_in, avail_in, zalloc, zfree and opaque must be initialized before by
- the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
- value depends on the compression method), inflateInit determines the
- compression method from the zlib header and allocates all data structures
- accordingly; otherwise the allocation will be deferred to the first call of
- inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to
- use default allocation functions.
-
- inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
- memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
- version assumed by the caller. msg is set to null if there is no error
- message. inflateInit does not perform any decompression apart from reading
- the zlib header if present: this will be done by inflate(). (So next_in and
- avail_in may be modified, but next_out and avail_out are unchanged.)
-*/
-
-
-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
-/*
- inflate decompresses as much data as possible, and stops when the input
- buffer becomes empty or the output buffer becomes full. It may introduce
- some output latency (reading input without producing any output) except when
- forced to flush.
-
- The detailed semantics are as follows. inflate performs one or both of the
- following actions:
-
- - Decompress more input starting at next_in and update next_in and avail_in
- accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in is updated and processing
- will resume at this point for the next call of inflate().
-
- - Provide more output starting at next_out and update next_out and avail_out
- accordingly. inflate() provides as much output as possible, until there
- is no more input data or no more space in the output buffer (see below
- about the flush parameter).
-
- Before the call of inflate(), the application should ensure that at least
- one of the actions is possible, by providing more input and/or consuming
- more output, and updating the next_* and avail_* values accordingly.
- The application can consume the uncompressed output when it wants, for
- example when the output buffer is full (avail_out == 0), or after each
- call of inflate(). If inflate returns Z_OK and with zero avail_out, it
- must be called again after making room in the output buffer because there
- might be more output pending.
-
- The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
- Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
- output as possible to the output buffer. Z_BLOCK requests that inflate() stop
- if and when it gets to the next deflate block boundary. When decoding the
- zlib or gzip format, this will cause inflate() to return immediately after
- the header and before the first block. When doing a raw inflate, inflate()
- will go ahead and process the first block, and will return when it gets to
- the end of that block, or when it runs out of data.
-
- The Z_BLOCK option assists in appending to or combining deflate streams.
- Also to assist in this, on return inflate() will set strm->data_type to the
- number of unused bits in the last byte taken from strm->next_in, plus 64
- if inflate() is currently decoding the last block in the deflate stream,
- plus 128 if inflate() returned immediately after decoding an end-of-block
- code or decoding the complete header up to just before the first byte of the
- deflate stream. The end-of-block will not be indicated until all of the
- uncompressed data from that block has been written to strm->next_out. The
- number of unused bits may in general be greater than seven, except when
- bit 7 of data_type is set, in which case the number of unused bits will be
- less than eight.
-
- inflate() should normally be called until it returns Z_STREAM_END or an
- error. However if all decompression is to be performed in a single step
- (a single call of inflate), the parameter flush should be set to
- Z_FINISH. In this case all pending input is processed and all pending
- output is flushed; avail_out must be large enough to hold all the
- uncompressed data. (The size of the uncompressed data may have been saved
- by the compressor for this purpose.) The next operation on this stream must
- be inflateEnd to deallocate the decompression state. The use of Z_FINISH
- is never required, but can be used to inform inflate that a faster approach
- may be used for the single inflate() call.
-
- In this implementation, inflate() always flushes as much output as
- possible to the output buffer, and always uses the faster approach on the
- first call. So the only effect of the flush parameter in this implementation
- is on the return value of inflate(), as noted below, or when it returns early
- because Z_BLOCK is used.
-
- If a preset dictionary is needed after this call (see inflateSetDictionary
- below), inflate sets strm->adler to the adler32 checksum of the dictionary
- chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
- strm->adler to the adler32 checksum of all output produced so far (that is,
- total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
- below. At the end of the stream, inflate() checks that its computed adler32
- checksum is equal to that saved by the compressor and returns Z_STREAM_END
- only if the checksum is correct.
-
- inflate() will decompress and check either zlib-wrapped or gzip-wrapped
- deflate data. The header type is detected automatically. Any information
- contained in the gzip header is not retained, so applications that need that
- information should instead use raw inflate, see inflateInit2() below, or
- inflateBack() and perform their own processing of the gzip header and
- trailer.
-
- inflate() returns Z_OK if some progress has been made (more input processed
- or more output produced), Z_STREAM_END if the end of the compressed data has
- been reached and all uncompressed output has been produced, Z_NEED_DICT if a
- preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
- corrupted (input stream not conforming to the zlib format or incorrect check
- value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
- if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
- Z_BUF_ERROR if no progress is possible or if there was not enough room in the
- output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
- inflate() can be called again with more input and more output space to
- continue decompressing. If Z_DATA_ERROR is returned, the application may then
- call inflateSync() to look for a good compression block if a partial recovery
- of the data is desired.
-*/
-
-
-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
-/*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any
- pending output.
-
- inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
- was inconsistent. In the error case, msg may be set but then points to a
- static string (which must not be deallocated).
-*/
-
- /* Advanced functions */
-
-/*
- The following functions are needed only in some special applications.
-*/
-
-/*
-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
- int level,
- int method,
- int windowBits,
- int memLevel,
- int strategy));
-
- This is another version of deflateInit with more compression options. The
- fields next_in, zalloc, zfree and opaque must be initialized before by
- the caller.
-
- The method parameter is the compression method. It must be Z_DEFLATED in
- this version of the library.
-
- The windowBits parameter is the base two logarithm of the window size
- (the size of the history buffer). It should be in the range 8..15 for this
- version of the library. Larger values of this parameter result in better
- compression at the expense of memory usage. The default value is 15 if
- deflateInit is used instead.
-
- windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
- determines the window size. deflate() will then generate raw deflate data
- with no zlib header or trailer, and will not compute an adler32 check value.
-
- windowBits can also be greater than 15 for optional gzip encoding. Add
- 16 to windowBits to write a simple gzip header and trailer around the
- compressed data instead of a zlib wrapper. The gzip header will have no
- file name, no extra data, no comment, no modification time (set to zero),
- no header crc, and the operating system will be set to 255 (unknown). If a
- gzip stream is being written, strm->adler is a crc32 instead of an adler32.
-
- The memLevel parameter specifies how much memory should be allocated
- for the internal compression state. memLevel=1 uses minimum memory but
- is slow and reduces compression ratio; memLevel=9 uses maximum memory
- for optimal speed. The default value is 8. See zconf.h for total memory
- usage as a function of windowBits and memLevel.
-
- The strategy parameter is used to tune the compression algorithm. Use the
- value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
- filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
- string match), or Z_RLE to limit match distances to one (run-length
- encoding). Filtered data consists mostly of small values with a somewhat
- random distribution. In this case, the compression algorithm is tuned to
- compress them better. The effect of Z_FILTERED is to force more Huffman
- coding and less string matching; it is somewhat intermediate between
- Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
- Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
- parameter only affects the compression ratio but not the correctness of the
- compressed output even if it is not set appropriately. Z_FIXED prevents the
- use of dynamic Huffman codes, allowing for a simpler decoder for special
- applications.
-
- deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
- memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
- method). msg is set to null if there is no error message. deflateInit2 does
- not perform any compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength));
-/*
- Initializes the compression dictionary from the given byte sequence
- without producing any compressed output. This function must be called
- immediately after deflateInit, deflateInit2 or deflateReset, before any
- call of deflate. The compressor and decompressor must use exactly the same
- dictionary (see inflateSetDictionary).
-
- The dictionary should consist of strings (byte sequences) that are likely
- to be encountered later in the data to be compressed, with the most commonly
- used strings preferably put towards the end of the dictionary. Using a
- dictionary is most useful when the data to be compressed is short and can be
- predicted with good accuracy; the data can then be compressed better than
- with the default empty dictionary.
-
- Depending on the size of the compression data structures selected by
- deflateInit or deflateInit2, a part of the dictionary may in effect be
- discarded, for example if the dictionary is larger than the window size in
- deflate or deflate2. Thus the strings most likely to be useful should be
- put at the end of the dictionary, not at the front. In addition, the
- current implementation of deflate will use at most the window size minus
- 262 bytes of the provided dictionary.
-
- Upon return of this function, strm->adler is set to the adler32 value
- of the dictionary; the decompressor may later use this value to determine
- which dictionary has been used by the compressor. (The adler32 value
- applies to the whole dictionary even if only a subset of the dictionary is
- actually used by the compressor.) If a raw deflate was requested, then the
- adler32 value is not computed and strm->adler is not set.
-
- deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
- parameter is invalid (such as NULL dictionary) or the stream state is
- inconsistent (for example if deflate has already been called for this stream
- or if the compression method is bsort). deflateSetDictionary does not
- perform any compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
- z_streamp source));
-/*
- Sets the destination stream as a complete copy of the source stream.
-
- This function can be useful when several compression strategies will be
- tried, for example when there are several ways of pre-processing the input
- data with a filter. The streams that will be discarded should then be freed
- by calling deflateEnd. Note that deflateCopy duplicates the internal
- compression state which can be quite large, so this strategy is slow and
- can consume lots of memory.
-
- deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
- (such as zalloc being NULL). msg is left unchanged in both source and
- destination.
-*/
-
-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
-/*
- This function is equivalent to deflateEnd followed by deflateInit,
- but does not free and reallocate all the internal compression state.
- The stream will keep the same compression level and any other attributes
- that may have been set by deflateInit2.
-
- deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
- int level,
- int strategy));
-/*
- Dynamically update the compression level and compression strategy. The
- interpretation of level and strategy is as in deflateInit2. This can be
- used to switch between compression and straight copy of the input data, or
- to switch to a different kind of input data requiring a different
- strategy. If the compression level is changed, the input available so far
- is compressed with the old level (and may be flushed); the new level will
- take effect only at the next call of deflate().
-
- Before the call of deflateParams, the stream state must be set as for
- a call of deflate(), since the currently available input may have to
- be compressed and flushed. In particular, strm->avail_out must be non-zero.
-
- deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
- stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
- if strm->avail_out was zero.
-*/
-
-ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
- int good_length,
- int max_lazy,
- int nice_length,
- int max_chain));
-/*
- Fine tune deflate's internal compression parameters. This should only be
- used by someone who understands the algorithm used by zlib's deflate for
- searching for the best matching string, and even then only by the most
- fanatic optimizer trying to squeeze out the last compressed bit for their
- specific input data. Read the deflate.c source code for the meaning of the
- max_lazy, good_length, nice_length, and max_chain parameters.
-
- deflateTune() can be called after deflateInit() or deflateInit2(), and
- returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
- */
-
-ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
- uLong sourceLen));
-/*
- deflateBound() returns an upper bound on the compressed size after
- deflation of sourceLen bytes. It must be called after deflateInit()
- or deflateInit2(). This would be used to allocate an output buffer
- for deflation in a single pass, and so would be called before deflate().
-*/
-
-ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
- int bits,
- int value));
-/*
- deflatePrime() inserts bits in the deflate output stream. The intent
- is that this function is used to start off the deflate output with the
- bits leftover from a previous deflate stream when appending to it. As such,
- this function can only be used for raw deflate, and must be used before the
- first deflate() call after a deflateInit2() or deflateReset(). bits must be
- less than or equal to 16, and that many of the least significant bits of
- value will be inserted in the output.
-
- deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
- gz_headerp head));
-/*
- deflateSetHeader() provides gzip header information for when a gzip
- stream is requested by deflateInit2(). deflateSetHeader() may be called
- after deflateInit2() or deflateReset() and before the first call of
- deflate(). The text, time, os, extra field, name, and comment information
- in the provided gz_header structure are written to the gzip header (xflag is
- ignored -- the extra flags are set according to the compression level). The
- caller must assure that, if not Z_NULL, name and comment are terminated with
- a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
- available there. If hcrc is true, a gzip header crc is included. Note that
- the current versions of the command-line version of gzip (up through version
- 1.3.x) do not support header crc's, and will report that it is a "multi-part
- gzip file" and give up.
-
- If deflateSetHeader is not used, the default gzip header has text false,
- the time set to zero, and os set to 255, with no extra, name, or comment
- fields. The gzip header is returned to the default state by deflateReset().
-
- deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
- int windowBits));
-
- This is another version of inflateInit with an extra parameter. The
- fields next_in, avail_in, zalloc, zfree and opaque must be initialized
- before by the caller.
-
- The windowBits parameter is the base two logarithm of the maximum window
- size (the size of the history buffer). It should be in the range 8..15 for
- this version of the library. The default value is 15 if inflateInit is used
- instead. windowBits must be greater than or equal to the windowBits value
- provided to deflateInit2() while compressing, or it must be equal to 15 if
- deflateInit2() was not used. If a compressed stream with a larger window
- size is given as input, inflate() will return with the error code
- Z_DATA_ERROR instead of trying to allocate a larger window.
-
- windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
- determines the window size. inflate() will then process raw deflate data,
- not looking for a zlib or gzip header, not generating a check value, and not
- looking for any check values for comparison at the end of the stream. This
- is for use with other formats that use the deflate compressed data format
- such as zip. Those formats provide their own check values. If a custom
- format is developed using the raw deflate format for compressed data, it is
- recommended that a check value such as an adler32 or a crc32 be applied to
- the uncompressed data as is done in the zlib, gzip, and zip formats. For
- most applications, the zlib format should be used as is. Note that comments
- above on the use in deflateInit2() applies to the magnitude of windowBits.
-
- windowBits can also be greater than 15 for optional gzip decoding. Add
- 32 to windowBits to enable zlib and gzip decoding with automatic header
- detection, or add 16 to decode only the gzip format (the zlib format will
- return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is
- a crc32 instead of an adler32.
-
- inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
- memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
- is set to null if there is no error message. inflateInit2 does not perform
- any decompression apart from reading the zlib header if present: this will
- be done by inflate(). (So next_in and avail_in may be modified, but next_out
- and avail_out are unchanged.)
-*/
-
-ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength));
-/*
- Initializes the decompression dictionary from the given uncompressed byte
- sequence. This function must be called immediately after a call of inflate,
- if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
- can be determined from the adler32 value returned by that call of inflate.
- The compressor and decompressor must use exactly the same dictionary (see
- deflateSetDictionary). For raw inflate, this function can be called
- immediately after inflateInit2() or inflateReset() and before any call of
- inflate() to set the dictionary. The application must insure that the
- dictionary that was used for compression is provided.
-
- inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
- parameter is invalid (such as NULL dictionary) or the stream state is
- inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
- expected one (incorrect adler32 value). inflateSetDictionary does not
- perform any decompression: this will be done by subsequent calls of
- inflate().
-*/
-
-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
-/*
- Skips invalid compressed data until a full flush point (see above the
- description of deflate with Z_FULL_FLUSH) can be found, or until all
- available input is skipped. No output is provided.
-
- inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
- if no more input was provided, Z_DATA_ERROR if no flush point has been found,
- or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
- case, the application may save the current current value of total_in which
- indicates where valid compressed data was found. In the error case, the
- application may repeatedly call inflateSync, providing more input each time,
- until success or end of the input data.
-*/
-
-ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
- z_streamp source));
-/*
- Sets the destination stream as a complete copy of the source stream.
-
- This function can be useful when randomly accessing a large stream. The
- first pass through the stream can periodically record the inflate state,
- allowing restarting inflate at those points when randomly accessing the
- stream.
-
- inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
- (such as zalloc being NULL). msg is left unchanged in both source and
- destination.
-*/
-
-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
-/*
- This function is equivalent to inflateEnd followed by inflateInit,
- but does not free and reallocate all the internal decompression state.
- The stream will keep attributes that may have been set by inflateInit2.
-
- inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
- int bits,
- int value));
-/*
- This function inserts bits in the inflate input stream. The intent is
- that this function is used to start inflating at a bit position in the
- middle of a byte. The provided bits will be used before any bytes are used
- from next_in. This function should only be used with raw inflate, and
- should be used before the first inflate() call after inflateInit2() or
- inflateReset(). bits must be less than or equal to 16, and that many of the
- least significant bits of value will be inserted in the input.
-
- inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
- gz_headerp head));
-/*
- inflateGetHeader() requests that gzip header information be stored in the
- provided gz_header structure. inflateGetHeader() may be called after
- inflateInit2() or inflateReset(), and before the first call of inflate().
- As inflate() processes the gzip stream, head->done is zero until the header
- is completed, at which time head->done is set to one. If a zlib stream is
- being decoded, then head->done is set to -1 to indicate that there will be
- no gzip header information forthcoming. Note that Z_BLOCK can be used to
- force inflate() to return immediately after header processing is complete
- and before any actual data is decompressed.
-
- The text, time, xflags, and os fields are filled in with the gzip header
- contents. hcrc is set to true if there is a header CRC. (The header CRC
- was valid if done is set to one.) If extra is not Z_NULL, then extra_max
- contains the maximum number of bytes to write to extra. Once done is true,
- extra_len contains the actual extra field length, and extra contains the
- extra field, or that field truncated if extra_max is less than extra_len.
- If name is not Z_NULL, then up to name_max characters are written there,
- terminated with a zero unless the length is greater than name_max. If
- comment is not Z_NULL, then up to comm_max characters are written there,
- terminated with a zero unless the length is greater than comm_max. When
- any of extra, name, or comment are not Z_NULL and the respective field is
- not present in the header, then that field is set to Z_NULL to signal its
- absence. This allows the use of deflateSetHeader() with the returned
- structure to duplicate the header. However if those fields are set to
- allocated memory, then the application will need to save those pointers
- elsewhere so that they can be eventually freed.
-
- If inflateGetHeader is not used, then the header information is simply
- discarded. The header is always checked for validity, including the header
- CRC if present. inflateReset() will reset the process to discard the header
- information. The application would need to call inflateGetHeader() again to
- retrieve the header from the next gzip stream.
-
- inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
- unsigned char FAR *window));
-
- Initialize the internal stream state for decompression using inflateBack()
- calls. The fields zalloc, zfree and opaque in strm must be initialized
- before the call. If zalloc and zfree are Z_NULL, then the default library-
- derived memory allocation routines are used. windowBits is the base two
- logarithm of the window size, in the range 8..15. window is a caller
- supplied buffer of that size. Except for special applications where it is
- assured that deflate was used with small window sizes, windowBits must be 15
- and a 32K byte window must be supplied to be able to decompress general
- deflate streams.
-
- See inflateBack() for the usage of these routines.
-
- inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
- the paramaters are invalid, Z_MEM_ERROR if the internal state could not
- be allocated, or Z_VERSION_ERROR if the version of the library does not
- match the version of the header file.
-*/
-
-typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
-typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
-
-ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
- in_func in, void FAR *in_desc,
- out_func out, void FAR *out_desc));
-/*
- inflateBack() does a raw inflate with a single call using a call-back
- interface for input and output. This is more efficient than inflate() for
- file i/o applications in that it avoids copying between the output and the
- sliding window by simply making the window itself the output buffer. This
- function trusts the application to not change the output buffer passed by
- the output function, at least until inflateBack() returns.
-
- inflateBackInit() must be called first to allocate the internal state
- and to initialize the state with the user-provided window buffer.
- inflateBack() may then be used multiple times to inflate a complete, raw
- deflate stream with each call. inflateBackEnd() is then called to free
- the allocated state.
-
- A raw deflate stream is one with no zlib or gzip header or trailer.
- This routine would normally be used in a utility that reads zip or gzip
- files and writes out uncompressed files. The utility would decode the
- header and process the trailer on its own, hence this routine expects
- only the raw deflate stream to decompress. This is different from the
- normal behavior of inflate(), which expects either a zlib or gzip header and
- trailer around the deflate stream.
-
- inflateBack() uses two subroutines supplied by the caller that are then
- called by inflateBack() for input and output. inflateBack() calls those
- routines until it reads a complete deflate stream and writes out all of the
- uncompressed data, or until it encounters an error. The function's
- parameters and return types are defined above in the in_func and out_func
- typedefs. inflateBack() will call in(in_desc, &buf) which should return the
- number of bytes of provided input, and a pointer to that input in buf. If
- there is no input available, in() must return zero--buf is ignored in that
- case--and inflateBack() will return a buffer error. inflateBack() will call
- out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out()
- should return zero on success, or non-zero on failure. If out() returns
- non-zero, inflateBack() will return with an error. Neither in() nor out()
- are permitted to change the contents of the window provided to
- inflateBackInit(), which is also the buffer that out() uses to write from.
- The length written by out() will be at most the window size. Any non-zero
- amount of input may be provided by in().
-
- For convenience, inflateBack() can be provided input on the first call by
- setting strm->next_in and strm->avail_in. If that input is exhausted, then
- in() will be called. Therefore strm->next_in must be initialized before
- calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called
- immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in
- must also be initialized, and then if strm->avail_in is not zero, input will
- initially be taken from strm->next_in[0 .. strm->avail_in - 1].
-
- The in_desc and out_desc parameters of inflateBack() is passed as the
- first parameter of in() and out() respectively when they are called. These
- descriptors can be optionally used to pass any information that the caller-
- supplied in() and out() functions need to do their job.
-
- On return, inflateBack() will set strm->next_in and strm->avail_in to
- pass back any unused input that was provided by the last in() call. The
- return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
- if in() or out() returned an error, Z_DATA_ERROR if there was a format
- error in the deflate stream (in which case strm->msg is set to indicate the
- nature of the error), or Z_STREAM_ERROR if the stream was not properly
- initialized. In the case of Z_BUF_ERROR, an input or output error can be
- distinguished using strm->next_in which will be Z_NULL only if in() returned
- an error. If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to
- out() returning non-zero. (in() will always be called before out(), so
- strm->next_in is assured to be defined if out() returns non-zero.) Note
- that inflateBack() cannot return Z_OK.
-*/
-
-ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
-/*
- All memory allocated by inflateBackInit() is freed.
-
- inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream
- state was inconsistent.
-*/
-
-ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
-/* Return flags indicating compile-time options.
-
- Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
- 1.0: size of uInt
- 3.2: size of uLong
- 5.4: size of voidpf (pointer)
- 7.6: size of z_off_t
-
- Compiler, assembler, and debug options:
- 8: DEBUG
- 9: ASMV or ASMINF -- use ASM code
- 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
- 11: 0 (reserved)
-
- One-time table building (smaller code, but not thread-safe if true):
- 12: BUILDFIXED -- build static block decoding tables when needed
- 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
- 14,15: 0 (reserved)
-
- Library content (indicates missing functionality):
- 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
- deflate code when not needed)
- 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
- and decode gzip streams (to avoid linking crc code)
- 18-19: 0 (reserved)
-
- Operation variations (changes in library functionality):
- 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
- 21: FASTEST -- deflate algorithm with only one, lowest compression level
- 22,23: 0 (reserved)
-
- The sprintf variant used by gzprintf (zero is best):
- 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
- 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
- 26: 0 = returns value, 1 = void -- 1 means inferred string length returned
-
- Remainder:
- 27-31: 0 (reserved)
- */
-
-
- /* utility functions */
-
-/*
- The following utility functions are implemented on top of the
- basic stream-oriented functions. To simplify the interface, some
- default options are assumed (compression level and memory usage,
- standard memory allocation functions). The source code of these
- utility functions can easily be modified if you need special options.
-*/
-
-ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen));
-/*
- Compresses the source buffer into the destination buffer. sourceLen is
- the byte length of the source buffer. Upon entry, destLen is the total
- size of the destination buffer, which must be at least the value returned
- by compressBound(sourceLen). Upon exit, destLen is the actual size of the
- compressed buffer.
- This function can be used to compress a whole file at once if the
- input file is mmap'ed.
- compress returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer.
-*/
-
-ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen,
- int level));
-/*
- Compresses the source buffer into the destination buffer. The level
- parameter has the same meaning as in deflateInit. sourceLen is the byte
- length of the source buffer. Upon entry, destLen is the total size of the
- destination buffer, which must be at least the value returned by
- compressBound(sourceLen). Upon exit, destLen is the actual size of the
- compressed buffer.
-
- compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
- memory, Z_BUF_ERROR if there was not enough room in the output buffer,
- Z_STREAM_ERROR if the level parameter is invalid.
-*/
-
-ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
-/*
- compressBound() returns an upper bound on the compressed size after
- compress() or compress2() on sourceLen bytes. It would be used before
- a compress() or compress2() call to allocate the destination buffer.
-*/
-
-ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen));
-/*
- Decompresses the source buffer into the destination buffer. sourceLen is
- the byte length of the source buffer. Upon entry, destLen is the total
- size of the destination buffer, which must be large enough to hold the
- entire uncompressed data. (The size of the uncompressed data must have
- been saved previously by the compressor and transmitted to the decompressor
- by some mechanism outside the scope of this compression library.)
- Upon exit, destLen is the actual size of the compressed buffer.
- This function can be used to decompress a whole file at once if the
- input file is mmap'ed.
-
- uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.
-*/
-
-
-typedef voidp gzFile;
-
-ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
-/*
- Opens a gzip (.gz) file for reading or writing. The mode parameter
- is as in fopen ("rb" or "wb") but can also include a compression level
- ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
- Huffman only compression as in "wb1h", or 'R' for run-length encoding
- as in "wb1R". (See the description of deflateInit2 for more information
- about the strategy parameter.)
-
- gzopen can be used to read a file which is not in gzip format; in this
- case gzread will directly read from the file without decompression.
-
- gzopen returns NULL if the file could not be opened or if there was
- insufficient memory to allocate the (de)compression state; errno
- can be checked to distinguish the two cases (if errno is zero, the
- zlib error is Z_MEM_ERROR). */
-
-ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
-/*
- gzdopen() associates a gzFile with the file descriptor fd. File
- descriptors are obtained from calls like open, dup, creat, pipe or
- fileno (in the file has been previously opened with fopen).
- The mode parameter is as in gzopen.
- The next call of gzclose on the returned gzFile will also close the
- file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
- descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
- gzdopen returns NULL if there was insufficient memory to allocate
- the (de)compression state.
-*/
-
-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
-/*
- Dynamically update the compression level or strategy. See the description
- of deflateInit2 for the meaning of these parameters.
- gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
- opened for writing.
-*/
-
-ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
-/*
- Reads the given number of uncompressed bytes from the compressed file.
- If the input file was not in gzip format, gzread copies the given number
- of bytes into the buffer.
- gzread returns the number of uncompressed bytes actually read (0 for
- end of file, -1 for error). */
-
-ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
- voidpc buf, unsigned len));
-/*
- Writes the given number of uncompressed bytes into the compressed file.
- gzwrite returns the number of uncompressed bytes actually written
- (0 in case of error).
-*/
-
-ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
-/*
- Converts, formats, and writes the args to the compressed file under
- control of the format string, as in fprintf. gzprintf returns the number of
- uncompressed bytes actually written (0 in case of error). The number of
- uncompressed bytes written is limited to 4095. The caller should assure that
- this limit is not exceeded. If it is exceeded, then gzprintf() will return
- return an error (0) with nothing written. In this case, there may also be a
- buffer overflow with unpredictable consequences, which is possible only if
- zlib was compiled with the insecure functions sprintf() or vsprintf()
- because the secure snprintf() or vsnprintf() functions were not available.
-*/
-
-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
-/*
- Writes the given null-terminated string to the compressed file, excluding
- the terminating null character.
- gzputs returns the number of characters written, or -1 in case of error.
-*/
-
-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
-/*
- Reads bytes from the compressed file until len-1 characters are read, or
- a newline character is read and transferred to buf, or an end-of-file
- condition is encountered. The string is then terminated with a null
- character.
- gzgets returns buf, or Z_NULL in case of error.
-*/
-
-ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
-/*
- Writes c, converted to an unsigned char, into the compressed file.
- gzputc returns the value that was written, or -1 in case of error.
-*/
-
-ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
-/*
- Reads one byte from the compressed file. gzgetc returns this byte
- or -1 in case of end of file or error.
-*/
-
-ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
-/*
- Push one character back onto the stream to be read again later.
- Only one character of push-back is allowed. gzungetc() returns the
- character pushed, or -1 on failure. gzungetc() will fail if a
- character has been pushed but not read yet, or if c is -1. The pushed
- character will be discarded if the stream is repositioned with gzseek()
- or gzrewind().
-*/
-
-ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
-/*
- Flushes all pending output into the compressed file. The parameter
- flush is as in the deflate() function. The return value is the zlib
- error number (see function gzerror below). gzflush returns Z_OK if
- the flush parameter is Z_FINISH and all output could be flushed.
- gzflush should be called only when strictly necessary because it can
- degrade compression.
-*/
-
-ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
- z_off_t offset, int whence));
-/*
- Sets the starting position for the next gzread or gzwrite on the
- given compressed file. The offset represents a number of bytes in the
- uncompressed data stream. The whence parameter is defined as in lseek(2);
- the value SEEK_END is not supported.
- If the file is opened for reading, this function is emulated but can be
- extremely slow. If the file is opened for writing, only forward seeks are
- supported; gzseek then compresses a sequence of zeroes up to the new
- starting position.
-
- gzseek returns the resulting offset location as measured in bytes from
- the beginning of the uncompressed stream, or -1 in case of error, in
- particular if the file is opened for writing and the new starting position
- would be before the current position.
-*/
-
-ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
-/*
- Rewinds the given file. This function is supported only for reading.
-
- gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
-*/
-
-ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
-/*
- Returns the starting position for the next gzread or gzwrite on the
- given compressed file. This position represents a number of bytes in the
- uncompressed data stream.
-
- gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
-*/
-
-ZEXTERN int ZEXPORT gzeof OF((gzFile file));
-/*
- Returns 1 when EOF has previously been detected reading the given
- input stream, otherwise zero.
-*/
-
-ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
-/*
- Returns 1 if file is being read directly without decompression, otherwise
- zero.
-*/
-
-ZEXTERN int ZEXPORT gzclose OF((gzFile file));
-/*
- Flushes all pending output if necessary, closes the compressed file
- and deallocates all the (de)compression state. The return value is the zlib
- error number (see function gzerror below).
-*/
-
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
-/*
- Returns the error message for the last error which occurred on the
- given compressed file. errnum is set to zlib error number. If an
- error occurred in the file system and not in the compression library,
- errnum is set to Z_ERRNO and the application may consult errno
- to get the exact error code.
-*/
-
-ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
-/*
- Clears the error and end-of-file flags for file. This is analogous to the
- clearerr() function in stdio. This is useful for continuing to read a gzip
- file that is being written concurrently.
-*/
-
- /* checksum functions */
-
-/*
- These functions are not related to compression but are exported
- anyway because they might be useful in applications using the
- compression library.
-*/
-
-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-/*
- Update a running Adler-32 checksum with the bytes buf[0..len-1] and
- return the updated checksum. If buf is NULL, this function returns
- the required initial value for the checksum.
- An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
- much faster. Usage example:
-
- uLong adler = adler32(0L, Z_NULL, 0);
-
- while (read_buffer(buffer, length) != EOF) {
- adler = adler32(adler, buffer, length);
- }
- if (adler != original_adler) error();
-*/
-
-ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
- z_off_t len2));
-/*
- Combine two Adler-32 checksums into one. For two sequences of bytes, seq1
- and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
- each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of
- seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
-*/
-
-ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
-/*
- Update a running CRC-32 with the bytes buf[0..len-1] and return the
- updated CRC-32. If buf is NULL, this function returns the required initial
- value for the for the crc. Pre- and post-conditioning (one's complement) is
- performed within this function so it shouldn't be done by the application.
- Usage example:
-
- uLong crc = crc32(0L, Z_NULL, 0);
-
- while (read_buffer(buffer, length) != EOF) {
- crc = crc32(crc, buffer, length);
- }
- if (crc != original_crc) error();
-*/
-
-ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
-
-/*
- Combine two CRC-32 check values into one. For two sequences of bytes,
- seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
- calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32
- check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
- len2.
-*/
-
-
- /* various hacks, don't look :) */
-
-/* deflateInit and inflateInit are macros to allow checking the zlib version
- * and the compiler's view of z_stream:
- */
-ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
- const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
- const char *version, int stream_size));
-ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
- int windowBits, int memLevel,
- int strategy, const char *version,
- int stream_size));
-ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
- const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
- unsigned char FAR *window,
- const char *version,
- int stream_size));
-#define deflateInit(strm, level) \
- deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit(strm) \
- inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
- deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
- (strategy), ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit2(strm, windowBits) \
- inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-#define inflateBackInit(strm, windowBits, window) \
- inflateBackInit_((strm), (windowBits), (window), \
- ZLIB_VERSION, sizeof(z_stream))
-
-
-#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
- struct internal_state {int dummy;}; /* hack for buggy compilers */
-#endif
-
-ZEXTERN const char * ZEXPORT zError OF((int));
-ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z));
-ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ZLIB_H */
diff --git a/navit/support/zlib/zlib_init.c b/navit/support/zlib/zlib_init.c
deleted file mode 100644
index 32be387da..000000000
--- a/navit/support/zlib/zlib_init.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "plugin.h"
-
-void
-plugin_init(void)
-{
-}
diff --git a/navit/support/zlib/zutil.c b/navit/support/zlib/zutil.c
deleted file mode 100644
index d55f5948a..000000000
--- a/navit/support/zlib/zutil.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/* zutil.c -- target dependent utility functions for the compression library
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#include "zutil.h"
-
-#ifndef NO_DUMMY_DECL
-struct internal_state {int dummy;}; /* for buggy compilers */
-#endif
-
-const char * const z_errmsg[10] = {
-"need dictionary", /* Z_NEED_DICT 2 */
-"stream end", /* Z_STREAM_END 1 */
-"", /* Z_OK 0 */
-"file error", /* Z_ERRNO (-1) */
-"stream error", /* Z_STREAM_ERROR (-2) */
-"data error", /* Z_DATA_ERROR (-3) */
-"insufficient memory", /* Z_MEM_ERROR (-4) */
-"buffer error", /* Z_BUF_ERROR (-5) */
-"incompatible version",/* Z_VERSION_ERROR (-6) */
-""};
-
-
-const char * ZEXPORT zlibVersion()
-{
- return ZLIB_VERSION;
-}
-
-uLong ZEXPORT zlibCompileFlags()
-{
- uLong flags;
-
- flags = 0;
- switch (sizeof(uInt)) {
- case 2: break;
- case 4: flags += 1; break;
- case 8: flags += 2; break;
- default: flags += 3;
- }
- switch (sizeof(uLong)) {
- case 2: break;
- case 4: flags += 1 << 2; break;
- case 8: flags += 2 << 2; break;
- default: flags += 3 << 2;
- }
- switch (sizeof(voidpf)) {
- case 2: break;
- case 4: flags += 1 << 4; break;
- case 8: flags += 2 << 4; break;
- default: flags += 3 << 4;
- }
- switch (sizeof(z_off_t)) {
- case 2: break;
- case 4: flags += 1 << 6; break;
- case 8: flags += 2 << 6; break;
- default: flags += 3 << 6;
- }
-#ifdef DEBUG
- flags += 1 << 8;
-#endif
-#if defined(ASMV) || defined(ASMINF)
- flags += 1 << 9;
-#endif
-#ifdef ZLIB_WINAPI
- flags += 1 << 10;
-#endif
-#ifdef BUILDFIXED
- flags += 1 << 12;
-#endif
-#ifdef DYNAMIC_CRC_TABLE
- flags += 1 << 13;
-#endif
-#ifdef NO_GZCOMPRESS
- flags += 1L << 16;
-#endif
-#ifdef NO_GZIP
- flags += 1L << 17;
-#endif
-#ifdef PKZIP_BUG_WORKAROUND
- flags += 1L << 20;
-#endif
-#ifdef FASTEST
- flags += 1L << 21;
-#endif
-#ifdef STDC
-# ifdef NO_vsnprintf
- flags += 1L << 25;
-# ifdef HAS_vsprintf_void
- flags += 1L << 26;
-# endif
-# else
-# ifdef HAS_vsnprintf_void
- flags += 1L << 26;
-# endif
-# endif
-#else
- flags += 1L << 24;
-# ifdef NO_snprintf
- flags += 1L << 25;
-# ifdef HAS_sprintf_void
- flags += 1L << 26;
-# endif
-# else
-# ifdef HAS_snprintf_void
- flags += 1L << 26;
-# endif
-# endif
-#endif
- return flags;
-}
-
-#ifdef DEBUG
-
-# ifndef verbose
-# define verbose 0
-# endif
-int z_verbose = verbose;
-
-void z_error (m)
- char *m;
-{
- fprintf(stderr, "%s\n", m);
- exit(1);
-}
-#endif
-
-/* exported to allow conversion of error code to string for compress() and
- * uncompress()
- */
-const char * ZEXPORT zError(err)
- int err;
-{
- return ERR_MSG(err);
-}
-
-#if defined(_WIN32_WCE)
- /* The Microsoft C Run-Time Library for Windows CE doesn't have
- * errno. We define it as a global variable to simplify porting.
- * Its value is always 0 and should not be used.
- */
- int errno = 0;
-#endif
-
-#ifndef HAVE_MEMCPY
-
-void zmemcpy(dest, source, len)
- Bytef* dest;
- const Bytef* source;
- uInt len;
-{
- if (len == 0) return;
- do {
- *dest++ = *source++; /* ??? to be unrolled */
- } while (--len != 0);
-}
-
-int zmemcmp(s1, s2, len)
- const Bytef* s1;
- const Bytef* s2;
- uInt len;
-{
- uInt j;
-
- for (j = 0; j < len; j++) {
- if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
- }
- return 0;
-}
-
-void zmemzero(dest, len)
- Bytef* dest;
- uInt len;
-{
- if (len == 0) return;
- do {
- *dest++ = 0; /* ??? to be unrolled */
- } while (--len != 0);
-}
-#endif
-
-
-#ifdef SYS16BIT
-
-#ifdef __TURBOC__
-/* Turbo C in 16-bit mode */
-
-# define MY_ZCALLOC
-
-/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
- * and farmalloc(64K) returns a pointer with an offset of 8, so we
- * must fix the pointer. Warning: the pointer must be put back to its
- * original form in order to free it, use zcfree().
- */
-
-#define MAX_PTR 10
-/* 10*64K = 640K */
-
-local int next_ptr = 0;
-
-typedef struct ptr_table_s {
- voidpf org_ptr;
- voidpf new_ptr;
-} ptr_table;
-
-local ptr_table table[MAX_PTR];
-/* This table is used to remember the original form of pointers
- * to large buffers (64K). Such pointers are normalized with a zero offset.
- * Since MSDOS is not a preemptive multitasking OS, this table is not
- * protected from concurrent access. This hack doesn't work anyway on
- * a protected system like OS/2. Use Microsoft C instead.
- */
-
-voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
-{
- voidpf buf = opaque; /* just to make some compilers happy */
- ulg bsize = (ulg)items*size;
-
- /* If we allocate less than 65520 bytes, we assume that farmalloc
- * will return a usable pointer which doesn't have to be normalized.
- */
- if (bsize < 65520L) {
- buf = farmalloc(bsize);
- if (*(ush*)&buf != 0) return buf;
- } else {
- buf = farmalloc(bsize + 16L);
- }
- if (buf == NULL || next_ptr >= MAX_PTR) return NULL;
- table[next_ptr].org_ptr = buf;
-
- /* Normalize the pointer to seg:0 */
- *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4;
- *(ush*)&buf = 0;
- table[next_ptr++].new_ptr = buf;
- return buf;
-}
-
-void zcfree (voidpf opaque, voidpf ptr)
-{
- int n;
- if (*(ush*)&ptr != 0) { /* object < 64K */
- farfree(ptr);
- return;
- }
- /* Find the original pointer */
- for (n = 0; n < next_ptr; n++) {
- if (ptr != table[n].new_ptr) continue;
-
- farfree(table[n].org_ptr);
- while (++n < next_ptr) {
- table[n-1] = table[n];
- }
- next_ptr--;
- return;
- }
- ptr = opaque; /* just to make some compilers happy */
- Assert(0, "zcfree: ptr not found");
-}
-
-#endif /* __TURBOC__ */
-
-
-#ifdef M_I86
-/* Microsoft C in 16-bit mode */
-
-# define MY_ZCALLOC
-
-#if (!defined(_MSC_VER) || (_MSC_VER <= 600))
-# define _halloc halloc
-# define _hfree hfree
-#endif
-
-voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
-{
- if (opaque) opaque = 0; /* to make compiler happy */
- return _halloc((long)items, size);
-}
-
-void zcfree (voidpf opaque, voidpf ptr)
-{
- if (opaque) opaque = 0; /* to make compiler happy */
- _hfree(ptr);
-}
-
-#endif /* M_I86 */
-
-#endif /* SYS16BIT */
-
-
-#ifndef MY_ZCALLOC /* Any system without a special alloc function */
-
-#ifndef STDC
-extern voidp malloc OF((uInt size));
-extern voidp calloc OF((uInt items, uInt size));
-extern void free OF((voidpf ptr));
-#endif
-
-voidpf zcalloc (opaque, items, size)
- voidpf opaque;
- unsigned items;
- unsigned size;
-{
- if (opaque) items += size - size; /* make compiler happy */
- return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
- (voidpf)calloc(items, size);
-}
-
-void zcfree (opaque, ptr)
- voidpf opaque;
- voidpf ptr;
-{
- free(ptr);
- if (opaque) return; /* make compiler happy */
-}
-
-#endif /* MY_ZCALLOC */
diff --git a/navit/support/zlib/zutil.h b/navit/support/zlib/zutil.h
deleted file mode 100644
index 6cca50b99..000000000
--- a/navit/support/zlib/zutil.h
+++ /dev/null
@@ -1,269 +0,0 @@
-/* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-/* @(#) $Id$ */
-
-#ifndef ZUTIL_H
-#define ZUTIL_H
-
-#define ZLIB_INTERNAL
-#include "zlib.h"
-
-#ifdef STDC
-# ifndef _WIN32_WCE
-# include <stddef.h>
-# endif
-# include <string.h>
-# include <stdlib.h>
-#endif
-#ifdef NO_ERRNO_H
-# ifdef _WIN32_WCE
- /* The Microsoft C Run-Time Library for Windows CE doesn't have
- * errno. We define it as a global variable to simplify porting.
- * Its value is always 0 and should not be used. We rename it to
- * avoid conflict with other libraries that use the same workaround.
- */
-# define errno z_errno
-# endif
- extern int errno;
-#else
-# ifndef _WIN32_WCE
-# include <errno.h>
-# endif
-#endif
-
-#ifndef local
-# define local static
-#endif
-/* compile with -Dlocal if your debugger can't find static symbols */
-
-typedef unsigned char uch;
-typedef uch FAR uchf;
-typedef unsigned short ush;
-typedef ush FAR ushf;
-typedef unsigned long ulg;
-
-extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
-/* (size given to avoid silly warnings with Visual C++) */
-
-#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
-
-#define ERR_RETURN(strm,err) \
- return (strm->msg = (char*)ERR_MSG(err), (err))
-/* To be used only when the state is known to be valid */
-
- /* common constants */
-
-#ifndef DEF_WBITS
-# define DEF_WBITS MAX_WBITS
-#endif
-/* default windowBits for decompression. MAX_WBITS is for compression only */
-
-#if MAX_MEM_LEVEL >= 8
-# define DEF_MEM_LEVEL 8
-#else
-# define DEF_MEM_LEVEL MAX_MEM_LEVEL
-#endif
-/* default memLevel */
-
-#define STORED_BLOCK 0
-#define STATIC_TREES 1
-#define DYN_TREES 2
-/* The three kinds of block type */
-
-#define MIN_MATCH 3
-#define MAX_MATCH 258
-/* The minimum and maximum match lengths */
-
-#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
-
- /* target dependencies */
-
-#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
-# define OS_CODE 0x00
-# if defined(__TURBOC__) || defined(__BORLANDC__)
-# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
- /* Allow compilation with ANSI keywords only enabled */
- void _Cdecl farfree( void *block );
- void *_Cdecl farmalloc( unsigned long nbytes );
-# else
-# include <alloc.h>
-# endif
-# else /* MSC or DJGPP */
-# include <malloc.h>
-# endif
-#endif
-
-#ifdef AMIGA
-# define OS_CODE 0x01
-#endif
-
-#if defined(VAXC) || defined(VMS)
-# define OS_CODE 0x02
-# define F_OPEN(name, mode) \
- fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
-#endif
-
-#if defined(ATARI) || defined(atarist)
-# define OS_CODE 0x05
-#endif
-
-#ifdef OS2
-# define OS_CODE 0x06
-# ifdef M_I86
- #include <malloc.h>
-# endif
-#endif
-
-#if defined(MACOS) || defined(TARGET_OS_MAC)
-# define OS_CODE 0x07
-# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
-# include <unix.h> /* for fdopen */
-# else
-# ifndef fdopen
-# define fdopen(fd,mode) NULL /* No fdopen() */
-# endif
-# endif
-#endif
-
-#ifdef TOPS20
-# define OS_CODE 0x0a
-#endif
-
-#ifdef WIN32
-# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */
-# define OS_CODE 0x0b
-# endif
-#endif
-
-#ifdef __50SERIES /* Prime/PRIMOS */
-# define OS_CODE 0x0f
-#endif
-
-#if defined(_BEOS_) || defined(RISCOS)
-# define fdopen(fd,mode) NULL /* No fdopen() */
-#endif
-
-#if (defined(_MSC_VER) && (_MSC_VER > 600)) || defined(__MINGW32__)
-# if defined(_WIN32_WCE)
-# define fdopen(fd,mode) NULL /* No fdopen() */
-# ifndef _PTRDIFF_T_DEFINED
- typedef int ptrdiff_t;
-# define _PTRDIFF_T_DEFINED
-# endif
-# else
-# define fdopen(fd,type) _fdopen(fd,type)
-# endif
-#endif
-
- /* common defaults */
-
-#ifndef OS_CODE
-# define OS_CODE 0x03 /* assume Unix */
-#endif
-
-#ifndef F_OPEN
-# define F_OPEN(name, mode) fopen((name), (mode))
-#endif
-
- /* functions */
-
-#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
-# ifndef HAVE_VSNPRINTF
-# define HAVE_VSNPRINTF
-# endif
-#endif
-#if defined(__CYGWIN__)
-# ifndef HAVE_VSNPRINTF
-# define HAVE_VSNPRINTF
-# endif
-#endif
-#ifndef HAVE_VSNPRINTF
-# ifdef MSDOS
- /* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
- but for now we just assume it doesn't. */
-# define NO_vsnprintf
-# endif
-# ifdef __TURBOC__
-# define NO_vsnprintf
-# endif
-# ifdef WIN32
- /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
-# if !defined(vsnprintf) && !defined(NO_vsnprintf)
-# define vsnprintf _vsnprintf
-# endif
-# endif
-# ifdef __SASC
-# define NO_vsnprintf
-# endif
-#endif
-#ifdef VMS
-# define NO_vsnprintf
-#endif
-
-#if defined(pyr)
-# define NO_MEMCPY
-#endif
-#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
- /* Use our own functions for small and medium model with MSC <= 5.0.
- * You may have to use the same strategy for Borland C (untested).
- * The __SC__ check is for Symantec.
- */
-# define NO_MEMCPY
-#endif
-#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
-# define HAVE_MEMCPY
-#endif
-#ifdef HAVE_MEMCPY
-# ifdef SMALL_MEDIUM /* MSDOS small or medium model */
-# define zmemcpy _fmemcpy
-# define zmemcmp _fmemcmp
-# define zmemzero(dest, len) _fmemset(dest, 0, len)
-# else
-# define zmemcpy memcpy
-# define zmemcmp memcmp
-# define zmemzero(dest, len) memset(dest, 0, len)
-# endif
-#else
- extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
- extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
- extern void zmemzero OF((Bytef* dest, uInt len));
-#endif
-
-/* Diagnostic functions */
-#ifdef DEBUG
-# include <stdio.h>
- extern int z_verbose;
- extern void z_error OF((char *m));
-# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
-# define Trace(x) {if (z_verbose>=0) fprintf x ;}
-# define Tracev(x) {if (z_verbose>0) fprintf x ;}
-# define Tracevv(x) {if (z_verbose>1) fprintf x ;}
-# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
-# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
-#else
-# define Assert(cond,msg)
-# define Trace(x)
-# define Tracev(x)
-# define Tracevv(x)
-# define Tracec(c,x)
-# define Tracecv(c,x)
-#endif
-
-
-voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
-void zcfree OF((voidpf opaque, voidpf ptr));
-
-#define ZALLOC(strm, items, size) \
- (*((strm)->zalloc))((strm)->opaque, (items), (size))
-#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
-#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
-
-#endif /* ZUTIL_H */
diff --git a/navit/tools/asc2navit b/navit/tools/asc2navit
deleted file mode 100755
index 77ba4ad15..000000000
--- a/navit/tools/asc2navit
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use warnings;
-use Getopt::Long qw(:config permute);
-use Data::Dumper;
-use Benchmark;
-
-sub show_help;
-sub preprocess_filelist;
-sub open_outputhandle;
-sub process_file;
-sub run;
-
-my $amenity = "point_unkn";
-my $write_osm = 0;
-my %files = ();
-my $filename = "onebigfile";
-my $poicount = 0;
-
-
-GetOptions ('a|amenity=s' => \$amenity,
- 'x|write-osm!' => \$write_osm,
- 'h|?|help!' => \&show_help,
- 'O|output-file=s' => \$filename,
- '<>' => \&preprocess_filelist);
-
-
-# when no file is given...
-show_help() if (keys %files == 0);
-
-# determine filename
-determine_filename();
-
-# open the pipe for the output...
-my $pipe = open_outputhandle();
-
-# ...feed the pipe...
-run();
-
-# ...and close it properly
-close $pipe;
-
-###############################################################################
-###############################################################################
-###############################################################################
-
-sub show_help {
- print "parses one (or multiple) .asc-file(s) (mainly used by poiwarner) and\n";
- print "merges the result into one navit binary mapfile. requires maptool (when -x is not set)\n";
- print "usage: $0 [OPTION] OUT in1.asc [in2.asc [...]]\n";
- print " creates one big file called onebigfile\n";
- print "usage: $0 [OPTION] IN.asc\n";
- print " creates a file called IN.asc.bin / .osm\n\n";
- print " -h, --help shows this help\n";
- print " -x, --write-osm write in osm's xml format instead of navit's\n";
- print " -a, --amenity=NAME sets the amenity to NAME. default is point_unk\n";
- print " you can use -a several times for different types of pois\n";
- print " e.g.: $0 -a tec_common speedcamdb1 speedcamdb2 -a poi_biergarten boozestation1 boozestation2\n";
- print " -O, --output-file=OUT write the output to OUT. default for multiple files ist onebigfile\n";
- exit 0;
-}
-
-sub preprocess_filelist {
- my ($filename) = @_;
- push (@{$files{$amenity}}, @_);
-
-}
-
-sub open_outputhandle() {
- # open the pipe to maptool...
- if (!$write_osm) {
- open $pipe, "| maptool $filename" or die $!;
- } else {
- # or a filehandle
- open $pipe, ">$filename" or die $!;
- }
- return $pipe;
-}
-
-sub process_file {
- my ($file) = @_;
- my $filehandle;
- print "$0 processing $file...\n";
- open ($filehandle, "<$file") or next $!;
- # for every line in the file...
- while (<$filehandle>) {
- # ...check if it's a valid record...
- m/([0-9\.\-]*), ([0-9\.\-]*), "\[([0-9]*).*/ or next;
- my ($lon, $lat, $id) = ($1, $2, $3);
- # ...and write it into the handle then
- print $pipe " <node id=\"-$id\" visible=\"true\" lon=\"$lon\" lat=\"$lat\">\n";
- print $pipe " <tag k=\"name\" v=\"\" />\n";
- print $pipe " <tag k=\"amenity\" v=\"$amenity\" />\n";
- print $pipe " </node>\n";
- $poicount++;
- }
-}
-
-sub determine_filename {
- my $filecount = 0;
- foreach my $amenity (keys %files) {
- $filecount += $#{$files{$amenity}} + 1;
- }
-
- # when it's only one file and no output file has been given...
- if ($filecount == 1 && $filename eq "") {
- my $onefile = $files{(keys %files)[0]}[0];
- # ...generate a new one from the given filename
- $filename = "$onefile.bin";
- $filename = "$onefile.xml" if ($write_osm);
- }
-
- print "$0 writing output to $filename\n";
-}
-
-sub run {
- # write osm header
- print $pipe '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
- print $pipe '<osm version="0.5">' . "\n";
-
- # set the amenity and
- my @amenities = keys %files;
- while (my $amenity = shift @amenities) {
- foreach my $file (@{$files{$amenity}}) {
- process_file($file);
- }
- }
-
- # close the osm file
- print $pipe '</osm>';
- # and show up some stats
- print "$0 processed $poicount poi's\n";
-}
-
diff --git a/navit/tools/cleanattr.sh b/navit/tools/cleanattr.sh
deleted file mode 100755
index 22e561f66..000000000
--- a/navit/tools/cleanattr.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-# This script scans the navit sources for attributes that
-# remained in attr_def.h but are no longer used.
-
-ATTRFILE=attr_def.h
-TMPDIR=/tmp
-
-if [ ! -f ./navit.c ] ; then
- echo "Please execute this script from navit's source folder."
- exit 1;
-fi
-
-TMPFILE=$TMPDIR/navit-cleanattr.tmp
-TMPFILE2=$TMPDIR/navit-cleanattr.tmp2
-
-if [ -f $TMPFILE ] ; then
- echo "Temporary file $TMPFILE already exists."
- echo "Please don't run this tool twice at the same time. If you are sure that no other instance of this tool is running, remove the file."
- exit 1;
-fi
-
-touch $TMPFILE
-if [ $? -ne 0 ] ; then
- echo "Could not write to temporary file $TEMPFILE."
- echo "Please make sure you have write access to the temporary directory."
- exit 1;
-fi
-
-
-ATTRLIST=`grep 'ATTR(.*)' $ATTRFILE | sed 's#^ATTR(##' | sed 's#).*##'`
-
-cp $ATTRFILE $TMPFILE
-
-for ATTRNAME in $ATTRLIST ; do
- ATTR="attr_$ATTRNAME"
-
- grep -rI $ATTR ./* > /dev/null
-
- if [ $? -ne 0 ] ; then
- echo "Unused attribute: $ATTR"
- grep -v "ATTR($ATTRNAME)" $TMPFILE > $TMPFILE2
- mv $TMPFILE2 $TMPFILE
- fi
-done
-
-echo "==== Creating patch ===="
-diff -U 3 $ATTRFILE $TMPFILE
-
-rm $TMPFILE
diff --git a/navit/tools/gpx2navit_txt/AUTHORS b/navit/tools/gpx2navit_txt/AUTHORS
deleted file mode 100644
index 06a46c26d..000000000
--- a/navit/tools/gpx2navit_txt/AUTHORS
+++ /dev/null
@@ -1,9 +0,0 @@
-AUTHORS
-========
-Toshihiro Hiraoka <washitoshi at yahoo.co.jp>
- maintainer
-Petter Reinholdtsen <pere at hungry.com>
- bug fix, debian package and advices
-
-bodenseepingu bodenseepingu at user.sourceforge.net
- for modifications towards gpx2navit_txt
diff --git a/navit/tools/gpx2navit_txt/COPYING b/navit/tools/gpx2navit_txt/COPYING
deleted file mode 100644
index 514d6c73f..000000000
--- a/navit/tools/gpx2navit_txt/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place - Suite 330, Boston, MA 02111 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, 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 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., 59 Temple Place - Suite 330, Boston, MA 02111 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/navit/tools/gpx2navit_txt/ChangeLog b/navit/tools/gpx2navit_txt/ChangeLog
deleted file mode 100644
index 431aa18be..000000000
--- a/navit/tools/gpx2navit_txt/ChangeLog
+++ /dev/null
@@ -1,21 +0,0 @@
-0.1 new version gpx2navit_txt
-
-0.69
- by Petter Reinholdsen
- - Add configure option "--enable-coverage".
- - Add few check targets.
- - Patch for compile warning in DBFWriteAttribute().
- - Patch for compile warning in createParseData().
- by Toshihiro Hiraoka
- - Bug (Debian Bug #292514: Segfaults when called only with -v) fix
- - Delete few unused functions from utils.c
-
-0.68-1
-======
- by Petter Reinholdtsen
- - New debian package gpx2shp_0.68-1_i386.deb.
- - Update debian releted files.
- debian/watch, control, changelog
- - Delete src/configure.ac.
- - Delete libz check entry from configure.ac.
-
diff --git a/navit/tools/gpx2navit_txt/INSTALL b/navit/tools/gpx2navit_txt/INSTALL
deleted file mode 100644
index b5dbb9e31..000000000
--- a/navit/tools/gpx2navit_txt/INSTALL
+++ /dev/null
@@ -1,17 +0,0 @@
-Requirements
-==============
-- proj >ver4.0
-- expat >ver2.0
-- gpsbabel If you want to convert from GPS to shp directory but the
- future is not stable yet.
-
-Installation
-==============
-It's not special. Just type below like others.
-
- ./configure
- make
- su
- make install
-
-gpx2navit_txt image will be at /usr/local/bin.
diff --git a/navit/tools/gpx2navit_txt/NEWS b/navit/tools/gpx2navit_txt/NEWS
deleted file mode 100644
index 7bd167323..000000000
--- a/navit/tools/gpx2navit_txt/NEWS
+++ /dev/null
@@ -1,64 +0,0 @@
-0.69
-====
- by Petter Reinholdtsen
- - Add compile check options
- - Compile warning fixes
- by Toshihiro Hiraoka
- - Bug fix
-
-0.68-1
-======
- by Petter Reinholdtsen
- - Add debian files
- by Susumu Murakami
- - RPM package for Vine 3.1
-
-0.68
-====
- by Toshihiro Hiraoka
- - Change XML parser from libxml2 to expat for big file support
- - Remake almost all strucutes.
- - Rewrite almost all sources.
- - Add three path check options --min-points, --min-length and
- --min-time to reduce the noise.
- - Add -b, --basix-columns option
- - Add -g, --gpxline option
- - Add -f, --fast option
- - README
- - AUTHORS
- - Change comment style to javadoc style.
- - Structures flow
- - Error code
-
-0.65-1
-======
- by Petter Reinholdtsen
- - Add some debian missing files.
- - Added config.sub and config.guess.
- - debian package available now!
-
- by Toshihiro Hiraoka
- - Stop to use strange version number.
-
-0.65a
-=====
- by Petter Reinholdtsen
- - Add configure script etc.
- - Get rid of some warnings about loosing the 'const'-ness of the
- variable.
- - Remove unused include <math.h>.
- - Add include to find prototype for geod_set().
- - Fix handling of output filename, to make sure it handles
- './foo.gpx' (used to give random filename).
- - Correct the prototype of closeFiles().
- - Add files in debian/ to make debian package. This is just a
- framework, and need more work. The package description and a lot
- of the support files are from the dh-make package, and should be
- edited or removed. To build the package, run debuild from the
- devscripts package.
- - Solve some memory leaks and complaints.
-
- by Toshihiro Hiraoka
- - Restruct directory
- - Add many prototypes etc.
-
diff --git a/navit/tools/gpx2navit_txt/README b/navit/tools/gpx2navit_txt/README
deleted file mode 100644
index ecb3f995f..000000000
--- a/navit/tools/gpx2navit_txt/README
+++ /dev/null
@@ -1,122 +0,0 @@
-==============
-gpx2navit_txt README
-==============
-bodenseepingu
-4/01/2008
-
-What's This
-===========
- gpx2navit_txt is a converter from GPX file to Navit Text map format
-
-For gpx2navit_txt was the original code from gpx2shp used and modified.
-This is a output of Metro Manila Transit Map Project by JOCV (Japan
-Overseas Cooperation Volunteers) program of JICA (Japan International
-Cooperation Agency in 2004. It is provided you on GPL2.
-
-Compilation/Installation
-========================
-run ./autogen.sh && ./configure && make
-run make install if you want the binary to be installed in your system.
-run make uninstall to wipe everything related.
-
-How to Use
-==========
-- Basic
- There are three types of data on GPX that are waypoint, trkpoint and
-route. gpx2navit_txt converts the data to navit file(s)
-Please try to convert a sample file "pinatest2.gpx" in this archive.
-
- prompt> gpx2navit_txt pinatest2.gpx
- prompt> ls
- pinatest2.gpx (source gpx)
- pinatest2_meta.txt (meta data may be there)
-
- You can convert only a certain type of data like only waypoint or
-track point using option '-w' (waypoint), '-t' (trackpoint) or '-r'
-(route).
-
- prompt> gpx2navit_txt -r pinatest2.gpx
-
-- Convert path data to points and etc
- As default, track point and route data is converted as a arc data but
-you can convert it other ways using option '-p'(convert as point) and
-'-e' (as edge). The edge file has '_edg' in the filename and the point
-file has '_pnt' in the filename.
-
- prompt> gpx2navit_txt -p -e pinatest2.gpx
-
-- Statistics
- If you add '-s' option you can see a conversion summery.
-
- prompt> gpx2navit_txt -s pinatest2.gpx
- Track Points:
- track count: 4
- point count: 658
- total length: 156565.627989
- unconverted: 0( 0.00%)
- Routes:
- route count: 1
- point count: 323
- total length: 9258.618971
- unconverted: 0( 0.00%)
- Waypoints:
- point count: 118
-
-- Noise reduction
- gpx2navit_txt has several thresholds to reduct the noise path data. The
-value can set as '--min-points', '--min-length' and '--min-time'. Please
-try a example below.
-
- prompt> gpx2navit_txt --min-points 6 -s pinatest2.gpx
- gpx2navit_txt:../pinatest3.gpx:3962 track was not converted because of
- less then 6 points. (<- this path is not converted because the path
- has only 5 points)
- Track Points:
- track count: 3
- point count: 653
- total length: 156439.490642
- unconverted: 1(25.00%)
- Routes:
- route count: 1
- point count: 323
- total length: 9258.618971
- unconverted: 0( 0.00%)
- Waypoints:
- point count: 118
-
-
-- Length and time units
- You can choose any length related units that are supported by proj4
-for attribute table using
- '--length-unit' (for length column, default: m),
- '--time-unit' (for time column, default: sec),
- '--speed-length-unit' (for speed column, default: km),
- '--speed-time-unit' (for speed column, default: hour) and
- '--length-ellipsoid' (for length calculation, default: UGS84).
- You can see the supported units by 'geod -lu' and 'geod -le' command.
- Supported time unit are 'sec', 'min', 'hour' and 'day'.
-
-- Other futures
- There are other futures in gpx2navit_txt. Please check the option list using
-
- gpx2navit_txt --help
-
-Problem or Suggestion
-=====================
-Please let me know about your opinion in English by e-mail.
- bodenseepingu at users.sourceforge.net
- navit on sourceforge.net
- http://gpx2shp.sourceforge.jp/ for original gpx2shp
- todo for gpx2navit_txt
-
-Acknowledgments
-===============
-NEDA (National Economic and Development Authority) Region IV-B office
- My generous counter part
-Yoshio Tanaka
- My project leader gpx2shp
-Petter Reinholdtsen
- Many support to develop this
-Frank Warmerdam and the team
- shapelib and proj4
-bodenseepingu for modifications towards navit
diff --git a/navit/tools/gpx2navit_txt/TODO b/navit/tools/gpx2navit_txt/TODO
deleted file mode 100644
index de50135f8..000000000
--- a/navit/tools/gpx2navit_txt/TODO
+++ /dev/null
@@ -1 +0,0 @@
-....to be filled
diff --git a/navit/tools/gpx2navit_txt/autogen.sh b/navit/tools/gpx2navit_txt/autogen.sh
deleted file mode 100755
index ba84850ab..000000000
--- a/navit/tools/gpx2navit_txt/autogen.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-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 --force --install -I m4
diff --git a/navit/tools/gpx2navit_txt/config.guess b/navit/tools/gpx2navit_txt/config.guess
deleted file mode 100644
index 822947132..000000000
--- a/navit/tools/gpx2navit_txt/config.guess
+++ /dev/null
@@ -1,1453 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-
-timestamp='2004-11-12'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, 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
-# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
- --version | -v )
- echo "$version" ; exit 0 ;;
- --help | --h* | -h )
- echo "$usage"; exit 0 ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit 0 ;;
- amd64:OpenBSD:*:*)
- echo x86_64-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- cats:OpenBSD:*:*)
- echo arm-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- luna88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvmeppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mips64-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- *:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:MirBSD:*:*)
- echo powerppc-unknown-mirbsd${UNAME_RELEASE}
- exit 0 ;;
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit 0 ;;
- alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
- # OSF/1 and Tru64 systems produced since 1995. I hope that
- # covers most systems running today. This code pipes the CPU
- # types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
- "EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
- "EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
- "LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
- "EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
- "EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
- "EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
- "EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
- "EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
- "EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
- "EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
- "EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
- "EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
- "EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit 0 ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit 0;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit 0 ;;
- *:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit 0 ;;
- *:OS400:*:*)
- echo powerpc-ibm-os400
- exit 0 ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit 0 ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit 0 ;;
- DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit 0 ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7 && exit 0 ;;
- esac ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit 0 ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit 0 ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit 0 ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c \
- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && exit 0
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit 0 ;;
- Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit 0 ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit 0 ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit 0 ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit 0 ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit 0 ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit 0 ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit 0 ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit 0 ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit 0 ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit 0 ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit 0 ;;
- *:AIX:*:[45])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit 0 ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit 0 ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit 0 ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit 0 ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit 0 ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
- then
- # avoid double evaluation of $set_cc_for_build
- test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
- then
- HP_ARCH="hppa2.0w"
- else
- HP_ARCH="hppa64"
- fi
- fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit 0 ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit 0 ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit 0 ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit 0 ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit 0 ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit 0 ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- *:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
- i*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
- x86:Interix*:[34]*)
- echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
- exit 0 ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit 0 ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit 0 ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit 0 ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- *:GNU:*:*)
- # the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
- exit 0 ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit 0 ;;
- arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- cris:Linux:*:*)
- echo cris-axis-linux-gnu
- exit 0 ;;
- crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
- exit 0 ;;
- frv:Linux:*:*)
- echo frv-unknown-linux-gnu
- exit 0 ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
- ;;
- mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips64
- #undef mips64el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
- ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit 0 ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit 0 ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit 0 ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
- esac
- exit 0 ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit 0 ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
- exit 0 ;;
- sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
- exit 0 ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
- coff-i386)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit 0 ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit 0 ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #ifdef __INTEL_COMPILER
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
- ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit 0 ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit 0 ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit 0 ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit 0 ;;
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit 0 ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit 0 ;;
- i*86:*:5:[78]*)
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit 0 ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit 0 ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit 0 ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit 0 ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit 0 ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit 0 ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit 0 ;;
- M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit 0 ;;
- M68*:*:R3V[5678]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3${OS_REL} && exit 0
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit 0 ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit 0 ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit 0 ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit 0 ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit 0 ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit 0 ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit 0 ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
- exit 0 ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- *86) UNAME_PROCESSOR=i686 ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit 0 ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit 0 ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit 0 ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit 0 ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit 0 ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = "386"; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit 0 ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit 0 ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit 0 ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit 0 ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit 0 ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit 0 ;;
- SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
- exit 0 ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms && exit 0 ;;
- I*) echo ia64-dec-vms && exit 0 ;;
- V*) echo vax-dec-vms && exit 0 ;;
- esac ;;
- *:XENIX:*:SysV)
- echo i386-pc-xenix
- exit 0 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit 0 ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- c34*)
- echo c34-convex-bsd
- exit 0 ;;
- c38*)
- echo c38-convex-bsd
- exit 0 ;;
- c4*)
- echo c4-convex-bsd
- exit 0 ;;
- esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
- ftp://ftp.gnu.org/pub/gnu/config/
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/navit/tools/gpx2navit_txt/config.sub b/navit/tools/gpx2navit_txt/config.sub
deleted file mode 100644
index 0f84ac2c5..000000000
--- a/navit/tools/gpx2navit_txt/config.sub
+++ /dev/null
@@ -1,1566 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-
-timestamp='2004-11-30'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, 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 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., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
- --version | -v )
- echo "$version" ; exit 0 ;;
- --help | --h* | -h )
- echo "$usage"; exit 0 ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit 0;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
- kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
- os=
- basic_machine=$1
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
- | c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | m32r | m32rle | m68000 | m68k | m88k | mcore \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64vr | mips64vrel \
- | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | msp430 \
- | ns16k | ns32k \
- | openrisc | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
- | pyramid \
- | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
- | strongarm \
- | tahoe | thumb | tic4x | tic80 | tron \
- | v850 | v850e \
- | we32k \
- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
- | z8k)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
- # Motorola 68HC11/12.
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* \
- | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | mcore-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | msp430-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
- | pyramid-* \
- | romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tron-* \
- | v850-* | v850e-* | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa-* \
- | ymp-* \
- | z8k-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16c)
- basic_machine=cr16c-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- mingw32)
- basic_machine=i386-pc
- os=-mingw32
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- or32 | or32-*)
- basic_machine=or32-unknown
- os=-coff
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
- sei)
- basic_machine=mips-sei
- os=-seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tic54x | c54x*)
- basic_machine=tic54x-unknown
- os=-coff
- ;;
- tic55x | c55x*)
- basic_machine=tic55x-unknown
- os=-coff
- ;;
- tic6x | c6x*)
- basic_machine=tic6x-unknown
- os=-coff
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparc | sparcv8 | sparcv9 | sparcv9b)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto-qnx*)
- ;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -os400*)
- os=-os400
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -syllable*)
- os=-syllable
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -tpf*)
- os=-tpf
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -aros*)
- os=-aros
- ;;
- -kaos*)
- os=-kaos
- ;;
- -zvmoe)
- os=-zvmoe
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-ibm)
- os=-aix
- ;;
- *-knuth)
- os=-mmixware
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -tpf*)
- vendor=ibm
- ;;
- -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/navit/tools/gpx2navit_txt/configure.ac b/navit/tools/gpx2navit_txt/configure.ac
deleted file mode 100644
index c34753222..000000000
--- a/navit/tools/gpx2navit_txt/configure.ac
+++ /dev/null
@@ -1,47 +0,0 @@
-# -*- Autoconf -*-
-# Process this file with autoconf to produce a configure script.
-
-AC_PREREQ(2.57)
-AC_INIT(gpx2shp, 0.69, kogame at gmail.com)
-AM_INIT_AUTOMAKE(gpx2shp, 0.69)
-AC_CONFIG_SRCDIR(src/main.c)
-AM_CONFIG_HEADER(src/config.h)
-
-# Checks for programs.
-AC_PROG_CC
-AC_PROG_MAKE_SET
-
-# Ask GCC to give us heaps of warnings
-if eval "test x$GCC = xyes"; then
- CFLAGS="$CFLAGS -W -Wall -Wcast-align -Wcast-qual"
- CFLAGS="$CFLAGS -Wmissing-declarations -Wmissing-prototypes"
- CFLAGS="$CFLAGS -Wstrict-prototypes -Wpointer-arith -Wreturn-type"
- AC_SUBST(CFLAGS)
-fi
-
-AC_ARG_ENABLE(coverage,
-[ --enable-coverage compile with coverage testing enabled],
- CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage")
-
-# Checks for libraries.
-AC_CHECK_LIB(proj, pj_param)
-AC_CHECK_LIB(proj, pj_init, [], [ echo "Error you need lib proj4" && exit -1])
-AC_CHECK_LIB(expat, XML_SetUserData)
-AC_CHECK_LIB(m, cos)
-
-# Checks for header files.
-AC_HEADER_STDC
-AC_CHECK_HEADERS(limits.h stdlib.h string.h unistd.h)
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_STRUCT_TM
-
-# Checks for library functions.
-AC_FUNC_MALLOC
-AC_FUNC_MKTIME
-AC_FUNC_REALLOC
-AC_CHECK_FUNCS(memset sqrt)
-
-AC_CONFIG_FILES(Makefile src/Makefile man/Makefile)
-AC_OUTPUT
diff --git a/navit/tools/gpx2navit_txt/depcomp b/navit/tools/gpx2navit_txt/depcomp
deleted file mode 100755
index 807b991f4..000000000
--- a/navit/tools/gpx2navit_txt/depcomp
+++ /dev/null
@@ -1,423 +0,0 @@
-#! /bin/sh
-
-# depcomp - compile a program generating dependencies as side-effects
-# Copyright 1999, 2000 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU 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 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
- echo "depcomp: Variables source, object and depmode must be set" 1>&2
- exit 1
-fi
-# `libtool' can also be set to `yes' or `no'.
-
-if test -z "$depfile"; then
- base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
- dir=`echo "$object" | sed 's,/.*$,/,'`
- if test "$dir" = "$object"; then
- dir=
- fi
- # FIXME: should be _deps on DOS.
- depfile="$dir.deps/$base"
-fi
-
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Some modes work just like other modes, but use different flags. We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write. Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
- # HP compiler uses -M and no extra arg.
- gccflag=-M
- depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want. Yay! Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff. Hmm.
- "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- mv "$tmpdepfile" "$depfile"
- ;;
-
-gcc)
-## There are various ways to get dependency output from gcc. Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-## up in a subdir. Having to rename by hand is ugly.
-## (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say).
-## - Using -M directly means running the compiler twice (even worse
-## than renaming).
- if test -z "$gccflag"; then
- gccflag=-MD,
- fi
- "$@" -Wp,"$gccflag$tmpdepfile"
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
- sed -e 's/^[^:]*: / /' \
- -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header). We avoid this by adding
-## dummy dependencies for each header file. Too bad gcc doesn't do
-## this for us directly.
- tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'. On the theory
-## that the space means something, we add a space to the output as
-## well.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
-
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like `#:fec' to the end of the
- # dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> $depfile
- echo >> $depfile
-
- # The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> $depfile
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-aix)
- # The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. This file always lives in the current directory.
- # Also, the AIX compiler puts `$object:' at the start of each line;
- # $object doesn't have directory information.
- stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
- tmpdepfile="$stripped.u"
- outname="$stripped.o"
- if test "$libtool" = yes; then
- "$@" -Wc,-M
- else
- "$@" -M
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile"
- exit $stat
- fi
-
- if test -f "$tmpdepfile"; then
- # Each line is of the form `foo.o: dependent.h'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
- sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
- else
- # The sourcefile does not contain any dependencies, so just
- # store a dummy comment line, to avoid errors with the Makefile
- # "include basename.Plo" scheme.
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in `foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
- if test "$libtool" = yes; then
- tmpdepfile1="$dir.libs/$base.lo.d"
- tmpdepfile2="$dir.libs/$base.d"
- "$@" -Wc,-MD
- else
- tmpdepfile1="$dir$base.o.d"
- tmpdepfile2="$dir$base.d"
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2"
- exit $stat
- fi
-
- if test -f "$tmpdepfile1"; then
- tmpdepfile="$tmpdepfile1"
- else
- tmpdepfile="$tmpdepfile2"
- fi
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
- # That's a space and a tab in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile"
- ;;
-
-#nosideeffect)
- # This comment above is used by automake to tell side-effect
- # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
- # Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout, regardless of -o.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'. We will use -o /dev/null later,
- # however we can't do the remplacement now because
- # `-o $object' might simply not be used
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- test -z "$dashmflag" && dashmflag=-M
- "$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-dashXmstdout)
- # This case only exists to satisfy depend.m4. It is never actually
- # run, as this mode is specially recognized in the preamble.
- exit 1
- ;;
-
-makedepend)
- "$@" || exit $?
- # X makedepend
- shift
- cleared=no
- for arg in "$@"; do
- case $cleared in
- no)
- set ""; shift
- cleared=yes ;;
- esac
- case "$arg" in
- -D*|-I*)
- set fnord "$@" "$arg"; shift ;;
- -*)
- ;;
- *)
- set fnord "$@" "$arg"; shift ;;
- esac
- done
- obj_suffix="`echo $object | sed 's/^.*\././'`"
- touch "$tmpdepfile"
- ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile" "$tmpdepfile".bak
- ;;
-
-cpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test $1 != '--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove `-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- "$@" -E |
- sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
- sed '$ s: \\$::' > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- cat < "$tmpdepfile" >> "$depfile"
- sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvisualcpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout, regardless of -o,
- # because we must use -o when running libtool.
- "$@" || exit $?
- IFS=" "
- for arg
- do
- case "$arg" in
- "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
- esac
- done
- "$@" -E |
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
- echo " " >> "$depfile"
- . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-none)
- exec "$@"
- ;;
-
-*)
- echo "Unknown depmode $depmode" 1>&2
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/navit/tools/gpx2navit_txt/develop/structures.gif b/navit/tools/gpx2navit_txt/develop/structures.gif
deleted file mode 100644
index ba0c18aba..000000000
--- a/navit/tools/gpx2navit_txt/develop/structures.gif
+++ /dev/null
Binary files differ
diff --git a/navit/tools/gpx2navit_txt/install-sh b/navit/tools/gpx2navit_txt/install-sh
deleted file mode 100755
index 11870f1b0..000000000
--- a/navit/tools/gpx2navit_txt/install-sh
+++ /dev/null
@@ -1,251 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- :
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- chmodcmd=""
- else
- instcmd=$mkdirprog
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f "$src" ] || [ -d "$src" ]
- then
- :
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- :
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- :
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
- '
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- :
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- :
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
diff --git a/navit/tools/gpx2navit_txt/man/gpx2navit_txt.1 b/navit/tools/gpx2navit_txt/man/gpx2navit_txt.1
deleted file mode 100644
index c04165efb..000000000
--- a/navit/tools/gpx2navit_txt/man/gpx2navit_txt.1
+++ /dev/null
@@ -1,106 +0,0 @@
-.\"
-.TH "gpx2navit_txt" "1" "0.1" "bodenseepingu" ""
-.SH "NAME"
-gpx2navit_txt \- Convert GPX files to navit txt files
-.SH "SYNOPSIS"
-gpx2navit_txt [options] [\-o output file] gpxfile
-.SH "DESCRIPTION"
-gpx2navit_txt is a converter from GPX file to navit txt file
-The original gpx2shp was used for that program.
-This is a output of Metro Manila Transit Map Project by JOCV (Japan Overseas Cooperation Volunteers) program of JICA (Japan International Cooperation Agency) in 2004. It is provided you on GPL2.
-.SH "OPTIONS"
-.TP
-.B \-o, \-\-output
-Sets output basename. The default is (source file name) \- (extention name)
-.TP
-.B \-w, \-\-waypoints
-Converts only waypoints data from a gpx file.
-.TP
-.B \-t, \-\-trackpoints
-Converts only trackpoints data from a gpx file.
-.TP
-.B \-r, \-\-routes
-Converts only routes data from a gpx file.
-.TP
-.B \-a, \-\-all
-Converts all types of data from a gpx file.(default)
-.TP
-.B \-e, \-\-as\-edge
-Makes a separated output by each edges.
-.TP
-.B \-p, \-\-as\-point
-Makes a separated output by each points.
-.TP
-.B \-s, \-\-stats
-Shows simple statistics of the outputs.
-.TP
-.B \-b, \-\-basic\-columns
-Stores only basic data as attribures to reduce memory and storage usage. (ele, name, cmt, type, time, fix, sym and number).
-.TP
-.B \-L, \-\-no\-length
-Removes length column from a waypoint or trackpoint attribute table.
-.TP
-.B \-S, \-\-no\-speed
-Removes speed column from a waypoint or trackpoint attribute table.
-.TP
-.B \-T, \-\-no\-time
-Removes time column from an attribute table.
-.TP
-.B \-g, \-\-gpxline
-Adds line number of GPX file as attribures.
-.TP
-.B \-f, \-\-fast
-Make it faster without any checks.
-.TP
-.B \-3, \-\-3d
-Converts data using 3d format. (It's not compatible for Arcview 3.x.)
-.TP
-.B \-\-min\-points
-Sets path minimum points to convert for noise reduction. Default is 2.
-.TP
-.B \-\-min\-length
-Sets path minimum length to convert for noise reduction. Default is 0.
-.TP
-.B \-\-min\-time
-Sets path minimum time period to convert for noise reduction. Default is 0.
-.TP
-.B \-\-length\-unit
-Sets length unit from m,km,feet,mi and etc. The default is m. You can see the unit list from "geod \-lu" command.
-.TP
-.B \-\-time\-unit
-Sets time unit. The default is sec. You can set from day, hour, min and sec.
-.TP
-.B \-\-speed\-length\-unit
-Sets length unit for speed. The default is km. You can see the unit list from "geod \-lu" command.
-.TP
-.B \-\-speed\-time\-unit
-Sets time unit for speed calulation. Default is hour. You can set from day, hour, min and sec.
-.TP
-.B \-\-length\-ellipsoid
-Sets length ellipsoid like UGS84, clrk66. The default is UGS84. You can see the unit list from "geod \-le" command.
-.TP
-.B \-\-no\-speed-check
-Disables checking the track speed to be non-zero.
-.TP
-.B \-v, \-\-verbose
-Gives many messages.
-.TP
-.B \-\-version
-Shows version.
-.TP
-.B \-h, \-\-help
-Shows this list.
-.SH "AUTHORS"
-Toshihiro Hiraoka
-.br
-Petter Reinholdtsen
-
-.SH "BUGS or OPINIONS"
-Please e\-mail your bugs or opinions to
-.br
-washitoshi at yahoo.co.jp
-
-.SH "SEE ALSO"
-gpx2shp / gps2shp homepage
-.br
-http://gpx2shp.sourceforge.jp
diff --git a/navit/tools/gpx2navit_txt/missing b/navit/tools/gpx2navit_txt/missing
deleted file mode 100755
index 6a37006e8..000000000
--- a/navit/tools/gpx2navit_txt/missing
+++ /dev/null
@@ -1,336 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU 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 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
-fi
-
-run=:
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
- configure_ac=configure.ac
-else
- configure_ac=configure.in
-fi
-
-case "$1" in
---run)
- # Try to run requested program, and just exit if it succeeds.
- run=
- shift
- "$@" && exit 0
- ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
-
- -h|--h|--he|--hel|--help)
- echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
- -h, --help display this help and exit
- -v, --version output version information and exit
- --run try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
- aclocal touch file \`aclocal.m4'
- autoconf touch file \`configure'
- autoheader touch file \`config.h.in'
- automake touch all \`Makefile.in' files
- bison create \`y.tab.[ch]', if possible, from existing .[ch]
- flex create \`lex.yy.c', if possible, from existing .c
- help2man touch the output file
- lex create \`lex.yy.c', if possible, from existing .c
- makeinfo touch the output file
- tar try tar, gnutar, gtar, then tar without non-portable flags
- yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
- ;;
-
- -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing 0.4 - GNU automake"
- ;;
-
- -*)
- echo 1>&2 "$0: Unknown \`$1' option"
- echo 1>&2 "Try \`$0 --help' for more information"
- exit 1
- ;;
-
- aclocal*)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`acinclude.m4' or \`${configure_ac}'. You might want
- to install the \`Automake' and \`Perl' packages. Grab them from
- any GNU archive site."
- touch aclocal.m4
- ;;
-
- autoconf)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`${configure_ac}'. You might want to install the
- \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
- archive site."
- touch configure
- ;;
-
- autoheader)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`acconfig.h' or \`${configure_ac}'. You might want
- to install the \`Autoconf' and \`GNU m4' packages. Grab them
- from any GNU archive site."
- files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
- test -z "$files" && files="config.h"
- touch_files=
- for f in $files; do
- case "$f" in
- *:*) touch_files="$touch_files "`echo "$f" |
- sed -e 's/^[^:]*://' -e 's/:.*//'`;;
- *) touch_files="$touch_files $f.in";;
- esac
- done
- touch $touch_files
- ;;
-
- automake*)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
- You might want to install the \`Automake' and \`Perl' packages.
- Grab them from any GNU archive site."
- find . -type f -name Makefile.am -print |
- sed 's/\.am$/.in/' |
- while read f; do touch "$f"; done
- ;;
-
- autom4te)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
- proper tools for further handling them.
- You can get \`$1Help2man' as part of \`Autoconf' from any GNU
- archive site."
-
- file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
- test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
- if test -f "$file"; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo "#! /bin/sh"
- echo "# Created by GNU Automake missing as a replacement of"
- echo "# $ $@"
- echo "exit 0"
- chmod +x $file
- exit 1
- fi
- ;;
-
- bison|yacc)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a \`.y' file. You may need the \`Bison' package
- in order for those modifications to take effect. You can get
- \`Bison' from any GNU archive site."
- rm -f y.tab.c y.tab.h
- if [ $# -ne 1 ]; then
- eval LASTARG="\${$#}"
- case "$LASTARG" in
- *.y)
- SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" y.tab.c
- fi
- SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" y.tab.h
- fi
- ;;
- esac
- fi
- if [ ! -f y.tab.h ]; then
- echo >y.tab.h
- fi
- if [ ! -f y.tab.c ]; then
- echo 'main() { return 0; }' >y.tab.c
- fi
- ;;
-
- lex|flex)
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a \`.l' file. You may need the \`Flex' package
- in order for those modifications to take effect. You can get
- \`Flex' from any GNU archive site."
- rm -f lex.yy.c
- if [ $# -ne 1 ]; then
- eval LASTARG="\${$#}"
- case "$LASTARG" in
- *.l)
- SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
- if [ -f "$SRCFILE" ]; then
- cp "$SRCFILE" lex.yy.c
- fi
- ;;
- esac
- fi
- if [ ! -f lex.yy.c ]; then
- echo 'main() { return 0; }' >lex.yy.c
- fi
- ;;
-
- help2man)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a dependency of a manual page. You may need the
- \`Help2man' package in order for those modifications to take
- effect. You can get \`Help2man' from any GNU archive site."
-
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
- fi
- if [ -f "$file" ]; then
- touch $file
- else
- test -z "$file" || exec >$file
- echo ".ab help2man is required to generate this page"
- exit 1
- fi
- ;;
-
- makeinfo)
- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
- # We have makeinfo, but it failed.
- exit 1
- fi
-
- echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
- you modified a \`.texi' or \`.texinfo' file, or any other file
- indirectly affecting the aspect of the manual. The spurious
- call might also be the consequence of using a buggy \`make' (AIX,
- DU, IRIX). You might want to install the \`Texinfo' package or
- the \`GNU make' package. Grab either from any GNU archive site."
- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
- if test -z "$file"; then
- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
- fi
- touch $file
- ;;
-
- tar)
- shift
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- fi
-
- # We have already tried tar in the generic part.
- # Look for gnutar/gtar before invocation to avoid ugly error
- # messages.
- if (gnutar --version > /dev/null 2>&1); then
- gnutar "$@" && exit 0
- fi
- if (gtar --version > /dev/null 2>&1); then
- gtar "$@" && exit 0
- fi
- firstarg="$1"
- if shift; then
- case "$firstarg" in
- *o*)
- firstarg=`echo "$firstarg" | sed s/o//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- case "$firstarg" in
- *h*)
- firstarg=`echo "$firstarg" | sed s/h//`
- tar "$firstarg" "$@" && exit 0
- ;;
- esac
- fi
-
- echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
- You may want to install GNU tar or Free paxutils, or check the
- command line arguments."
- exit 1
- ;;
-
- *)
- echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
- proper tools for further handling them. Check the \`README' file,
- it often tells you about the needed prerequirements for installing
- this package. You may also peek at any GNU archive site, in case
- some other package would contain this missing \`$1' program."
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/navit/tools/gpx2navit_txt/mkinstalldirs b/navit/tools/gpx2navit_txt/mkinstalldirs
deleted file mode 100755
index 8ab885ec9..000000000
--- a/navit/tools/gpx2navit_txt/mkinstalldirs
+++ /dev/null
@@ -1,99 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-errstatus=0
-dirmode=""
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case "${1}" in
- -h | --help | --h* ) # -h for help
- echo "${usage}" 1>&2; exit 0 ;;
- -m ) # -m PERM arg
- shift
- test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
- dirmode="${1}"
- shift ;;
- -- ) shift; break ;; # stop option processing
- -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option
- * ) break ;; # first non-opt arg
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
-0) exit 0 ;;
-esac
-
-case $dirmode in
-'')
- if mkdir -p -- . 2>/dev/null; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- fi ;;
-*)
- if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- fi ;;
-esac
-
-for file
-do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
-
- pathcomp=
- for d
- do
- pathcomp="$pathcomp$d"
- case "$pathcomp" in
- -* ) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
-
- lasterr=""
- chmod "$dirmode" "$pathcomp" || lasterr=$?
-
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
- fi
-
- pathcomp="$pathcomp/"
- done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 3
-# End:
-# mkinstalldirs ends here
diff --git a/navit/tools/gpx2navit_txt/pinatest2.gpx b/navit/tools/gpx2navit_txt/pinatest2.gpx
deleted file mode 100644
index 3d99f4064..000000000
--- a/navit/tools/gpx2navit_txt/pinatest2.gpx
+++ /dev/null
@@ -1,4790 +0,0 @@
-<?xml version="1.0"?>
-<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="Toshihiro Hiraoka" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
- <metadata>
-<name>Manila to Mt. Pinatubo</name>
-<copyright>Toshihiro Hiraoka</copyright>
-<author>Toshihiro Hiraoka</author>
-<keyword>Manila Mt. Pinatubo gpx2shp</keyword>
-<link>http://gpx2shp.sourceforge.jp</link>
-<description>This is test data for gpx2shp.</description>
- <time>2004-12-29T08:23:55Z</time>
- </metadata>
-<trk>
-<name>07-SEP-04</name>
-<number>1</number>
-<trkseg>
-<trkpt lat="14.585381" lon="121.056118">
-<ele>42.916016</ele>
-<time>2004-09-06T15:35:56Z</time>
-</trkpt>
-<trkpt lat="14.595809" lon="121.059465">
-<ele>48.203369</ele>
-<time>2004-09-06T15:37:14Z</time>
-</trkpt>
-<trkpt lat="14.598942" lon="121.059852">
-<ele>49.645264</ele>
-<time>2004-09-06T15:37:39Z</time>
-</trkpt>
-<trkpt lat="14.602568" lon="121.058972">
-<ele>51.567871</ele>
-<time>2004-09-06T15:38:06Z</time>
-</trkpt>
-<trkpt lat="14.604285" lon="121.058199">
-<ele>48.683960</ele>
-<time>2004-09-06T15:38:21Z</time>
-</trkpt>
-<trkpt lat="14.606109" lon="121.057341">
-<ele>51.087158</ele>
-<time>2004-09-06T15:38:38Z</time>
-</trkpt>
-<trkpt lat="14.608727" lon="121.056161">
-<ele>46.280640</ele>
-<time>2004-09-06T15:39:01Z</time>
-</trkpt>
-<trkpt lat="14.610808" lon="121.055152">
-<ele>52.529175</ele>
-<time>2004-09-06T15:39:18Z</time>
-</trkpt>
-<trkpt lat="14.630678" lon="121.046162">
-<ele>39.551270</ele>
-<time>2004-09-06T15:42:59Z</time>
-</trkpt>
-<trkpt lat="14.632244" lon="121.045668">
-<ele>47.241821</ele>
-<time>2004-09-06T15:43:45Z</time>
-</trkpt>
-<trkpt lat="14.632373" lon="121.046140">
-<ele>46.280640</ele>
-<time>2004-09-06T15:43:53Z</time>
-</trkpt>
-<trkpt lat="14.633574" lon="121.046312">
-<ele>48.683960</ele>
-<time>2004-09-06T15:44:40Z</time>
-</trkpt>
-<trkpt lat="14.637222" lon="121.042707">
-<ele>69.352295</ele>
-<time>2004-09-07T06:03:25Z</time>
-</trkpt>
-<trkpt lat="14.637179" lon="121.042664">
-<ele>54.451782</ele>
-<time>2004-09-07T06:05:36Z</time>
-</trkpt>
-<trkpt lat="14.637437" lon="121.042578">
-<ele>53.009766</ele>
-<time>2004-09-07T06:05:57Z</time>
-</trkpt>
-<trkpt lat="14.637587" lon="121.042728">
-<ele>52.529175</ele>
-<time>2004-09-07T06:06:14Z</time>
-</trkpt>
-<trkpt lat="14.638424" lon="121.044037">
-<ele>52.048584</ele>
-<time>2004-09-07T06:08:18Z</time>
-</trkpt>
-<trkpt lat="14.638982" lon="121.044188">
-<ele>50.125977</ele>
-<time>2004-09-07T06:09:31Z</time>
-</trkpt>
-<trkpt lat="14.640076" lon="121.043093">
-<ele>48.203369</ele>
-<time>2004-09-07T06:10:47Z</time>
-</trkpt>
-<trkpt lat="14.640591" lon="121.043158">
-<ele>49.645264</ele>
-<time>2004-09-07T06:12:27Z</time>
-</trkpt>
-<trkpt lat="14.639797" lon="121.043286">
-<ele>48.683960</ele>
-<time>2004-09-07T06:16:48Z</time>
-</trkpt>
-<trkpt lat="14.639003" lon="121.043801">
-<ele>50.606567</ele>
-<time>2004-09-07T06:18:13Z</time>
-</trkpt>
-<trkpt lat="14.638467" lon="121.043994">
-<ele>48.683960</ele>
-<time>2004-09-07T06:19:05Z</time>
-</trkpt>
-<trkpt lat="14.637415" lon="121.042600">
-<ele>52.529175</ele>
-<time>2004-09-07T06:21:33Z</time>
-</trkpt>
-<trkpt lat="14.636300" lon="121.043329">
-<ele>53.490479</ele>
-<time>2004-09-07T06:23:19Z</time>
-</trkpt>
-<trkpt lat="14.633617" lon="121.046076">
-<ele>48.203369</ele>
-<time>2004-09-07T09:36:53Z</time>
-</trkpt>
-<trkpt lat="14.633617" lon="121.046526">
-<ele>49.645264</ele>
-<time>2004-09-07T09:37:26Z</time>
-</trkpt>
-<trkpt lat="14.634218" lon="121.046612">
-<ele>50.125977</ele>
-<time>2004-09-07T09:38:15Z</time>
-</trkpt>
-<trkpt lat="14.634390" lon="121.045625">
-<ele>47.241821</ele>
-<time>2004-09-07T09:39:43Z</time>
-</trkpt>
-<trkpt lat="14.633360" lon="121.045196">
-<ele>44.838623</ele>
-<time>2004-09-07T09:41:07Z</time>
-</trkpt>
-<trkpt lat="14.632695" lon="121.044123">
-<ele>47.241821</ele>
-<time>2004-09-07T09:43:22Z</time>
-</trkpt>
-<trkpt lat="14.624047" lon="121.049724">
-<ele>34.264160</ele>
-<time>2004-09-07T12:47:09Z</time>
-</trkpt>
-<trkpt lat="14.623339" lon="121.049616">
-<ele>25.131714</ele>
-<time>2004-09-07T12:51:01Z</time>
-</trkpt>
-<trkpt lat="14.629004" lon="121.047277">
-<ele>25.131714</ele>
-<time>2004-09-07T12:51:05Z</time>
-</trkpt>
-<trkpt lat="14.629219" lon="121.046762">
-<ele>25.612305</ele>
-<time>2004-09-07T12:51:13Z</time>
-</trkpt>
-<trkpt lat="14.632995" lon="121.045239">
-<ele>39.551270</ele>
-<time>2004-09-07T12:51:52Z</time>
-</trkpt>
-<trkpt lat="14.636257" lon="121.043308">
-<ele>34.264160</ele>
-<time>2004-09-07T12:52:26Z</time>
-</trkpt>
-<trkpt lat="14.645784" lon="121.036763">
-<ele>34.264160</ele>
-<time>2004-09-07T12:54:07Z</time>
-</trkpt>
-<trkpt lat="14.651492" lon="121.033201">
-<ele>28.015503</ele>
-<time>2004-09-07T12:55:29Z</time>
-</trkpt>
-<trkpt lat="14.651191" lon="121.033094">
-<ele>28.496216</ele>
-<time>2004-09-07T12:56:22Z</time>
-</trkpt>
-<trkpt lat="14.655526" lon="121.030240">
-<ele>26.092896</ele>
-<time>2004-09-07T12:59:59Z</time>
-</trkpt>
-<trkpt lat="14.656255" lon="121.028244">
-<ele>25.612305</ele>
-<time>2004-09-07T13:01:05Z</time>
-</trkpt>
-<trkpt lat="14.656920" lon="121.028695">
-<ele>26.573608</ele>
-<time>2004-09-07T13:01:27Z</time>
-</trkpt>
-<trkpt lat="14.656448" lon="121.027966">
-<ele>26.573608</ele>
-<time>2004-09-07T13:06:14Z</time>
-</trkpt>
-<trkpt lat="14.656942" lon="121.025476">
-<ele>24.170288</ele>
-<time>2004-09-07T13:06:59Z</time>
-</trkpt>
-<trkpt lat="14.657843" lon="121.020477">
-<ele>15.037720</ele>
-<time>2004-09-07T13:09:56Z</time>
-</trkpt>
-<trkpt lat="14.658144" lon="121.020391">
-<ele>15.518433</ele>
-<time>2004-09-07T13:10:00Z</time>
-</trkpt>
-<trkpt lat="14.657779" lon="121.020477">
-<ele>15.999023</ele>
-<time>2004-09-07T13:10:22Z</time>
-</trkpt>
-<trkpt lat="14.657822" lon="121.019275">
-<ele>9.269897</ele>
-<time>2004-09-07T13:12:39Z</time>
-</trkpt>
-<trkpt lat="14.657586" lon="121.009920">
-<ele>17.441162</ele>
-<time>2004-09-07T13:14:54Z</time>
-</trkpt>
-<trkpt lat="14.657156" lon="120.984557">
-<ele>13.595825</ele>
-<time>2004-09-07T13:18:26Z</time>
-</trkpt>
-<trkpt lat="14.657350" lon="120.983698">
-<ele>13.115112</ele>
-<time>2004-09-07T13:18:44Z</time>
-</trkpt>
-<trkpt lat="14.655440" lon="120.984449">
-<ele>13.595825</ele>
-<time>2004-09-07T13:19:43Z</time>
-</trkpt>
-<trkpt lat="14.655933" lon="120.983613">
-<ele>15.518433</ele>
-<time>2004-09-07T13:31:26Z</time>
-</trkpt>
-<trkpt lat="14.655633" lon="120.983505">
-<ele>13.115112</ele>
-<time>2004-09-07T13:31:56Z</time>
-</trkpt>
-<trkpt lat="14.655633" lon="120.983484">
-<ele>5.905273</ele>
-<time>2004-09-07T13:32:07Z</time>
-</trkpt>
-<trkpt lat="14.655912" lon="120.983698">
-<ele>6.385864</ele>
-<time>2004-09-07T13:35:30Z</time>
-</trkpt>
-<trkpt lat="14.655762" lon="120.983140">
-<ele>8.308594</ele>
-<time>2004-09-07T13:38:04Z</time>
-</trkpt>
-<trkpt lat="14.655590" lon="120.981896">
-<ele>5.424561</ele>
-<time>2004-09-07T13:39:07Z</time>
-</trkpt>
-<trkpt lat="14.656706" lon="120.981231">
-<ele>4.943848</ele>
-<time>2004-09-07T13:39:08Z</time>
-</trkpt>
-<trkpt lat="14.657135" lon="120.982304">
-<ele>11.192505</ele>
-<time>2004-09-07T13:39:24Z</time>
-</trkpt>
-<trkpt lat="14.657028" lon="120.983655">
-<ele>12.634399</ele>
-<time>2004-09-07T13:39:50Z</time>
-</trkpt>
-<trkpt lat="14.656749" lon="120.984600">
-<ele>11.673218</ele>
-<time>2004-09-07T13:40:21Z</time>
-</trkpt>
-<trkpt lat="14.657006" lon="120.989149">
-<ele>15.999023</ele>
-<time>2004-09-07T13:41:24Z</time>
-</trkpt>
-<trkpt lat="14.657071" lon="120.990865">
-<ele>12.153809</ele>
-<time>2004-09-07T13:41:47Z</time>
-</trkpt>
-<trkpt lat="14.657114" lon="120.993268">
-<ele>21.286377</ele>
-<time>2004-09-07T13:42:04Z</time>
-</trkpt>
-<trkpt lat="14.657199" lon="120.999985">
-<ele>17.441162</ele>
-<time>2004-09-07T13:43:09Z</time>
-</trkpt>
-<trkpt lat="14.657092" lon="121.000950">
-<ele>15.518433</ele>
-<time>2004-09-07T13:43:24Z</time>
-</trkpt>
-<trkpt lat="14.656620" lon="121.000907">
-<ele>14.557007</ele>
-<time>2004-09-07T13:43:32Z</time>
-</trkpt>
-<trkpt lat="14.656234" lon="121.000628">
-<ele>12.634399</ele>
-<time>2004-09-07T13:43:43Z</time>
-</trkpt>
-<trkpt lat="14.656298" lon="121.000242">
-<ele>13.115112</ele>
-<time>2004-09-07T13:44:05Z</time>
-</trkpt>
-<trkpt lat="14.657629" lon="121.000350">
-<ele>11.192505</ele>
-<time>2004-09-07T13:44:42Z</time>
-</trkpt>
-<trkpt lat="14.666641" lon="121.000328">
-<ele>22.247559</ele>
-<time>2004-09-07T13:48:40Z</time>
-</trkpt>
-<trkpt lat="14.667950" lon="121.000371">
-<ele>20.324951</ele>
-<time>2004-09-07T13:48:56Z</time>
-</trkpt>
-<trkpt lat="14.671898" lon="121.000693">
-<ele>27.534912</ele>
-<time>2004-09-07T13:52:48Z</time>
-</trkpt>
-<trkpt lat="14.678614" lon="121.000371">
-<ele>11.673218</ele>
-<time>2004-09-07T13:54:13Z</time>
-</trkpt>
-<trkpt lat="14.687476" lon="121.000907">
-<ele>10.711792</ele>
-<time>2004-09-07T13:55:15Z</time>
-</trkpt>
-<trkpt lat="14.689107" lon="121.000950">
-<ele>17.921753</ele>
-<time>2004-09-07T13:55:34Z</time>
-</trkpt>
-<trkpt lat="14.694450" lon="121.000178">
-<ele>15.037720</ele>
-<time>2004-09-07T13:56:30Z</time>
-</trkpt>
-<trkpt lat="14.702561" lon="120.996058">
-<ele>18.883057</ele>
-<time>2004-09-07T13:57:48Z</time>
-</trkpt>
-<trkpt lat="14.708569" lon="120.992861">
-<ele>10.231201</ele>
-<time>2004-09-07T13:58:45Z</time>
-</trkpt>
-<trkpt lat="14.716787" lon="120.988290">
-<ele>24.170288</ele>
-<time>2004-09-07T13:59:54Z</time>
-</trkpt>
-<trkpt lat="14.719920" lon="120.986595">
-<ele>12.153809</ele>
-<time>2004-09-07T14:00:19Z</time>
-</trkpt>
-<trkpt lat="14.722559" lon="120.985200">
-<ele>14.557007</ele>
-<time>2004-09-07T14:00:40Z</time>
-</trkpt>
-<trkpt lat="14.726958" lon="120.982926">
-<ele>14.076416</ele>
-<time>2004-09-07T14:01:07Z</time>
-</trkpt>
-<trkpt lat="14.730091" lon="120.981209">
-<ele>11.192505</ele>
-<time>2004-09-07T14:01:27Z</time>
-</trkpt>
-<trkpt lat="14.749510" lon="120.970716">
-<ele>22.728271</ele>
-<time>2004-09-07T14:03:10Z</time>
-</trkpt>
-<trkpt lat="14.754295" lon="120.968163">
-<ele>10.711792</ele>
-<time>2004-09-07T14:03:36Z</time>
-</trkpt>
-<trkpt lat="14.762986" lon="120.963421">
-<ele>22.247559</ele>
-<time>2004-09-07T14:04:31Z</time>
-</trkpt>
-<trkpt lat="14.771633" lon="120.958786">
-<ele>10.711792</ele>
-<time>2004-09-07T14:05:15Z</time>
-</trkpt>
-<trkpt lat="14.787319" lon="120.950353">
-<ele>22.247559</ele>
-<time>2004-09-07T14:06:46Z</time>
-</trkpt>
-<trkpt lat="14.797447" lon="120.944839">
-<ele>10.231201</ele>
-<time>2004-09-07T14:07:39Z</time>
-</trkpt>
-<trkpt lat="14.799614" lon="120.943723">
-<ele>8.308594</ele>
-<time>2004-09-07T14:07:52Z</time>
-</trkpt>
-<trkpt lat="14.802597" lon="120.943186">
-<ele>8.308594</ele>
-<time>2004-09-07T14:08:12Z</time>
-</trkpt>
-<trkpt lat="14.803669" lon="120.942543">
-<ele>9.750610</ele>
-<time>2004-09-07T14:08:20Z</time>
-</trkpt>
-<trkpt lat="14.805365" lon="120.940611">
-<ele>9.269897</ele>
-<time>2004-09-07T14:08:36Z</time>
-</trkpt>
-<trkpt lat="14.808626" lon="120.938745">
-<ele>13.595825</ele>
-<time>2004-09-07T14:08:56Z</time>
-</trkpt>
-<trkpt lat="14.815836" lon="120.934582">
-<ele>7.827881</ele>
-<time>2004-09-07T14:09:39Z</time>
-</trkpt>
-<trkpt lat="14.817102" lon="120.933187">
-<ele>7.827881</ele>
-<time>2004-09-07T14:09:51Z</time>
-</trkpt>
-<trkpt lat="14.818990" lon="120.929883">
-<ele>7.347168</ele>
-<time>2004-09-07T14:10:14Z</time>
-</trkpt>
-<trkpt lat="14.826264" lon="120.916150">
-<ele>14.076416</ele>
-<time>2004-09-07T14:11:29Z</time>
-</trkpt>
-<trkpt lat="14.831479" lon="120.906429">
-<ele>7.827881</ele>
-<time>2004-09-07T14:12:22Z</time>
-</trkpt>
-<trkpt lat="14.833839" lon="120.902760">
-<ele>10.711792</ele>
-<time>2004-09-07T14:12:51Z</time>
-</trkpt>
-<trkpt lat="14.833324" lon="120.899284">
-<ele>15.037720</ele>
-<time>2004-09-07T14:13:15Z</time>
-</trkpt>
-<trkpt lat="14.833410" lon="120.889478">
-<ele>16.479736</ele>
-<time>2004-09-07T14:14:01Z</time>
-</trkpt>
-<trkpt lat="14.836650" lon="120.872955">
-<ele>17.441162</ele>
-<time>2004-09-07T14:15:13Z</time>
-</trkpt>
-<trkpt lat="14.837337" lon="120.867591">
-<ele>9.269897</ele>
-<time>2004-09-07T14:18:15Z</time>
-</trkpt>
-<trkpt lat="14.837852" lon="120.866561">
-<ele>8.308594</ele>
-<time>2004-09-07T14:18:38Z</time>
-</trkpt>
-<trkpt lat="14.839118" lon="120.860767">
-<ele>9.269897</ele>
-<time>2004-09-07T14:20:34Z</time>
-</trkpt>
-<trkpt lat="14.839053" lon="120.860360">
-<ele>9.269897</ele>
-<time>2004-09-07T14:21:15Z</time>
-</trkpt>
-<trkpt lat="14.838860" lon="120.860660">
-<ele>10.231201</ele>
-<time>2004-09-07T14:21:30Z</time>
-</trkpt>
-<trkpt lat="14.838710" lon="120.861325">
-<ele>9.269897</ele>
-<time>2004-09-07T14:21:42Z</time>
-</trkpt>
-<trkpt lat="14.837701" lon="120.861926">
-<ele>12.153809</ele>
-<time>2004-09-07T14:22:02Z</time>
-</trkpt>
-<trkpt lat="14.837379" lon="120.862892">
-<ele>13.115112</ele>
-<time>2004-09-07T14:22:36Z</time>
-</trkpt>
-<trkpt lat="14.838173" lon="120.862656">
-<ele>16.479736</ele>
-<time>2004-09-07T14:23:19Z</time>
-</trkpt>
-<trkpt lat="14.845898" lon="120.859780">
-<ele>8.308594</ele>
-<time>2004-09-07T14:25:33Z</time>
-</trkpt>
-<trkpt lat="14.847894" lon="120.859609">
-<ele>13.115112</ele>
-<time>2004-09-07T14:26:00Z</time>
-</trkpt>
-<trkpt lat="14.853001" lon="120.860939">
-<ele>15.037720</ele>
-<time>2004-09-07T14:26:40Z</time>
-</trkpt>
-<trkpt lat="14.853837" lon="120.861003">
-<ele>9.750610</ele>
-<time>2004-09-07T14:26:52Z</time>
-</trkpt>
-<trkpt lat="14.856155" lon="120.859973">
-<ele>14.557007</ele>
-<time>2004-09-07T14:27:36Z</time>
-</trkpt>
-<trkpt lat="14.860318" lon="120.858858">
-<ele>10.231201</ele>
-<time>2004-09-07T14:28:17Z</time>
-</trkpt>
-<trkpt lat="14.861755" lon="120.858729">
-<ele>17.921753</ele>
-<time>2004-09-07T14:28:38Z</time>
-</trkpt>
-<trkpt lat="14.863901" lon="120.859437">
-<ele>8.789185</ele>
-<time>2004-09-07T14:29:22Z</time>
-</trkpt>
-<trkpt lat="14.862356" lon="120.859716">
-<ele>12.153809</ele>
-<time>2004-09-07T14:30:04Z</time>
-</trkpt>
-<trkpt lat="14.864266" lon="120.856261">
-<ele>18.402344</ele>
-<time>2004-09-07T14:30:35Z</time>
-</trkpt>
-<trkpt lat="14.867806" lon="120.851369">
-<ele>21.286377</ele>
-<time>2004-09-07T14:31:06Z</time>
-</trkpt>
-<trkpt lat="14.872677" lon="120.845790">
-<ele>20.324951</ele>
-<time>2004-09-07T14:31:39Z</time>
-</trkpt>
-<trkpt lat="14.878299" lon="120.840554">
-<ele>19.844360</ele>
-<time>2004-09-07T14:32:16Z</time>
-</trkpt>
-<trkpt lat="14.880359" lon="120.838838">
-<ele>25.131714</ele>
-<time>2004-09-07T14:32:28Z</time>
-</trkpt>
-<trkpt lat="14.888406" lon="120.832958">
-<ele>19.844360</ele>
-<time>2004-09-07T14:33:14Z</time>
-</trkpt>
-<trkpt lat="14.894006" lon="120.829332">
-<ele>22.728271</ele>
-<time>2004-09-07T14:33:46Z</time>
-</trkpt>
-<trkpt lat="14.902847" lon="120.822079">
-<ele>23.689575</ele>
-<time>2004-09-07T14:34:36Z</time>
-</trkpt>
-<trkpt lat="14.906366" lon="120.818989">
-<ele>15.999023</ele>
-<time>2004-09-07T14:35:03Z</time>
-</trkpt>
-<trkpt lat="14.908404" lon="120.818152">
-<ele>9.269897</ele>
-<time>2004-09-07T14:36:31Z</time>
-</trkpt>
-<trkpt lat="14.904649" lon="120.776439">
-<ele>13.115112</ele>
-<time>2004-09-07T14:45:12Z</time>
-</trkpt>
-<trkpt lat="14.905465" lon="120.773413">
-<ele>9.269897</ele>
-<time>2004-09-07T14:46:20Z</time>
-</trkpt>
-<trkpt lat="14.907653" lon="120.767405">
-<ele>13.115112</ele>
-<time>2004-09-07T14:47:30Z</time>
-</trkpt>
-<trkpt lat="14.908297" lon="120.766890">
-<ele>10.711792</ele>
-<time>2004-09-07T14:47:48Z</time>
-</trkpt>
-<trkpt lat="14.909606" lon="120.766697">
-<ele>14.076416</ele>
-<time>2004-09-07T14:48:16Z</time>
-</trkpt>
-<trkpt lat="14.911773" lon="120.766611">
-<ele>8.789185</ele>
-<time>2004-09-07T14:49:01Z</time>
-</trkpt>
-<trkpt lat="14.920807" lon="120.765774">
-<ele>12.153809</ele>
-<time>2004-09-07T14:51:39Z</time>
-</trkpt>
-<trkpt lat="14.928145" lon="120.764079">
-<ele>18.883057</ele>
-<time>2004-09-07T14:52:47Z</time>
-</trkpt>
-<trkpt lat="14.932373" lon="120.762062">
-<ele>16.960449</ele>
-<time>2004-09-07T14:53:18Z</time>
-</trkpt>
-<trkpt lat="14.934025" lon="120.760860">
-<ele>16.960449</ele>
-<time>2004-09-07T14:53:35Z</time>
-</trkpt>
-<trkpt lat="14.934497" lon="120.759938">
-<ele>15.037720</ele>
-<time>2004-09-07T14:53:48Z</time>
-</trkpt>
-<trkpt lat="14.935355" lon="120.758286">
-<ele>16.479736</ele>
-<time>2004-09-07T14:54:24Z</time>
-</trkpt>
-<trkpt lat="14.935892" lon="120.757234">
-<ele>13.595825</ele>
-<time>2004-09-07T14:55:05Z</time>
-</trkpt>
-<trkpt lat="14.936578" lon="120.756419">
-<ele>16.960449</ele>
-<time>2004-09-07T14:55:34Z</time>
-</trkpt>
-<trkpt lat="14.938166" lon="120.755861">
-<ele>17.441162</ele>
-<time>2004-09-07T14:55:49Z</time>
-</trkpt>
-<trkpt lat="14.948165" lon="120.758972">
-<ele>13.595825</ele>
-<time>2004-09-07T14:57:10Z</time>
-</trkpt>
-<trkpt lat="14.949260" lon="120.758865">
-<ele>10.711792</ele>
-<time>2004-09-07T14:57:25Z</time>
-</trkpt>
-<trkpt lat="14.965503" lon="120.757878">
-<ele>19.363770</ele>
-<time>2004-09-07T15:00:36Z</time>
-</trkpt>
-<trkpt lat="14.969988" lon="120.757577">
-<ele>15.037720</ele>
-<time>2004-09-07T15:01:05Z</time>
-</trkpt>
-<trkpt lat="14.972456" lon="120.756633">
-<ele>15.518433</ele>
-<time>2004-09-07T15:01:24Z</time>
-</trkpt>
-<trkpt lat="14.972885" lon="120.756462">
-<ele>13.595825</ele>
-<time>2004-09-07T15:01:28Z</time>
-</trkpt>
-<trkpt lat="14.977026" lon="120.754616">
-<ele>17.921753</ele>
-<time>2004-09-07T15:02:06Z</time>
-</trkpt>
-<trkpt lat="14.978828" lon="120.753822">
-<ele>10.231201</ele>
-<time>2004-09-07T15:02:30Z</time>
-</trkpt>
-<trkpt lat="14.984064" lon="120.751483">
-<ele>13.595825</ele>
-<time>2004-09-07T15:03:45Z</time>
-</trkpt>
-<trkpt lat="14.985566" lon="120.750132">
-<ele>15.999023</ele>
-<time>2004-09-07T15:04:00Z</time>
-</trkpt>
-<trkpt lat="14.987884" lon="120.747600">
-<ele>12.634399</ele>
-<time>2004-09-07T15:04:54Z</time>
-</trkpt>
-<trkpt lat="14.988506" lon="120.748243">
-<ele>13.115112</ele>
-<time>2004-09-07T15:05:16Z</time>
-</trkpt>
-<trkpt lat="14.989879" lon="120.749488">
-<ele>20.805664</ele>
-<time>2004-09-07T15:05:43Z</time>
-</trkpt>
-<trkpt lat="14.990823" lon="120.750260">
-<ele>17.921753</ele>
-<time>2004-09-07T15:06:02Z</time>
-</trkpt>
-<trkpt lat="14.991982" lon="120.749295">
-<ele>14.076416</ele>
-<time>2004-09-07T15:06:36Z</time>
-</trkpt>
-<trkpt lat="15.002947" lon="120.742192">
-<ele>31.380127</ele>
-<time>2004-09-07T15:07:54Z</time>
-</trkpt>
-<trkpt lat="15.010028" lon="120.736871">
-<ele>29.457520</ele>
-<time>2004-09-07T15:08:36Z</time>
-</trkpt>
-<trkpt lat="15.016336" lon="120.731528">
-<ele>30.899536</ele>
-<time>2004-09-07T15:09:11Z</time>
-</trkpt>
-<trkpt lat="15.020499" lon="120.727558">
-<ele>31.380127</ele>
-<time>2004-09-07T15:09:34Z</time>
-</trkpt>
-<trkpt lat="15.027838" lon="120.719898">
-<ele>25.131714</ele>
-<time>2004-09-07T15:10:29Z</time>
-</trkpt>
-<trkpt lat="15.039017" lon="120.705822">
-<ele>34.264160</ele>
-<time>2004-09-07T15:11:42Z</time>
-</trkpt>
-<trkpt lat="15.046914" lon="120.697410">
-<ele>27.054321</ele>
-<time>2004-09-07T15:12:27Z</time>
-</trkpt>
-<trkpt lat="15.049381" lon="120.695136">
-<ele>20.324951</ele>
-<time>2004-09-07T15:12:44Z</time>
-</trkpt>
-<trkpt lat="15.051098" lon="120.693870">
-<ele>16.960449</ele>
-<time>2004-09-07T15:13:03Z</time>
-</trkpt>
-<trkpt lat="15.051613" lon="120.693891">
-<ele>18.402344</ele>
-<time>2004-09-07T15:13:09Z</time>
-</trkpt>
-<trkpt lat="15.051506" lon="120.695093">
-<ele>15.518433</ele>
-<time>2004-09-07T15:13:28Z</time>
-</trkpt>
-<trkpt lat="15.050840" lon="120.695887">
-<ele>14.557007</ele>
-<time>2004-09-07T15:14:27Z</time>
-</trkpt>
-<trkpt lat="15.050454" lon="120.695908">
-<ele>15.999023</ele>
-<time>2004-09-07T15:14:55Z</time>
-</trkpt>
-<trkpt lat="15.049403" lon="120.694900">
-<ele>22.728271</ele>
-<time>2004-09-07T15:15:33Z</time>
-</trkpt>
-<trkpt lat="15.046442" lon="120.691445">
-<ele>22.247559</ele>
-<time>2004-09-07T15:16:50Z</time>
-</trkpt>
-<trkpt lat="15.042257" lon="120.684750">
-<ele>25.131714</ele>
-<time>2004-09-07T15:17:38Z</time>
-</trkpt>
-<trkpt lat="15.040562" lon="120.682325">
-<ele>15.999023</ele>
-<time>2004-09-07T15:18:05Z</time>
-</trkpt>
-<trkpt lat="15.039082" lon="120.680845">
-<ele>23.689575</ele>
-<time>2004-09-07T15:19:25Z</time>
-</trkpt>
-<trkpt lat="15.038245" lon="120.680051">
-<ele>17.921753</ele>
-<time>2004-09-07T15:19:40Z</time>
-</trkpt>
-<trkpt lat="15.038095" lon="120.679793">
-<ele>17.921753</ele>
-<time>2004-09-07T15:21:17Z</time>
-</trkpt>
-<trkpt lat="15.036163" lon="120.678570">
-<ele>26.092896</ele>
-<time>2004-09-07T15:21:44Z</time>
-</trkpt>
-<trkpt lat="15.027580" lon="120.673742">
-<ele>21.286377</ele>
-<time>2004-09-07T15:23:02Z</time>
-</trkpt>
-<trkpt lat="15.024319" lon="120.671489">
-<ele>19.363770</ele>
-<time>2004-09-07T15:23:41Z</time>
-</trkpt>
-<trkpt lat="15.020478" lon="120.668035">
-<ele>28.015503</ele>
-<time>2004-09-07T15:24:55Z</time>
-</trkpt>
-<trkpt lat="15.018547" lon="120.665781">
-<ele>31.380127</ele>
-<time>2004-09-07T15:25:11Z</time>
-</trkpt>
-<trkpt lat="15.014706" lon="120.660696">
-<ele>24.170288</ele>
-<time>2004-09-07T15:25:53Z</time>
-</trkpt>
-<trkpt lat="15.011380" lon="120.656211">
-<ele>35.706055</ele>
-<time>2004-09-07T15:26:34Z</time>
-</trkpt>
-<trkpt lat="14.997926" lon="120.639024">
-<ele>30.899536</ele>
-<time>2004-09-07T15:28:46Z</time>
-</trkpt>
-<trkpt lat="14.993334" lon="120.633316">
-<ele>18.402344</ele>
-<time>2004-09-07T15:29:47Z</time>
-</trkpt>
-<trkpt lat="14.988334" lon="120.627201">
-<ele>25.612305</ele>
-<time>2004-09-07T15:30:58Z</time>
-</trkpt>
-<trkpt lat="14.986897" lon="120.625398">
-<ele>13.595825</ele>
-<time>2004-09-07T15:31:23Z</time>
-</trkpt>
-<trkpt lat="14.984944" lon="120.623016">
-<ele>16.960449</ele>
-<time>2004-09-07T15:31:58Z</time>
-</trkpt>
-<trkpt lat="14.984772" lon="120.622716">
-<ele>15.999023</ele>
-<time>2004-09-07T15:33:17Z</time>
-</trkpt>
-<trkpt lat="14.983528" lon="120.623167">
-<ele>15.037720</ele>
-<time>2004-09-07T15:33:57Z</time>
-</trkpt>
-<trkpt lat="14.976103" lon="120.627544">
-<ele>20.324951</ele>
-<time>2004-09-07T15:35:09Z</time>
-</trkpt>
-<trkpt lat="14.968400" lon="120.632050">
-<ele>16.960449</ele>
-<time>2004-09-07T15:36:48Z</time>
-</trkpt>
-<trkpt lat="14.968143" lon="120.632329">
-<ele>14.557007</ele>
-<time>2004-09-07T15:37:01Z</time>
-</trkpt>
-<trkpt lat="14.970181" lon="120.634131">
-<ele>14.076416</ele>
-<time>2004-09-07T15:37:42Z</time>
-</trkpt>
-<trkpt lat="14.969666" lon="120.634646">
-<ele>15.037720</ele>
-<time>2004-09-07T15:37:59Z</time>
-</trkpt>
-<trkpt lat="14.966791" lon="120.632479">
-<ele>15.037720</ele>
-<time>2004-09-07T15:39:05Z</time>
-</trkpt>
-<trkpt lat="14.966061" lon="120.633101">
-<ele>14.076416</ele>
-<time>2004-09-07T15:39:20Z</time>
-</trkpt>
-<trkpt lat="14.965847" lon="120.632651">
-<ele>13.595825</ele>
-<time>2004-09-07T15:40:09Z</time>
-</trkpt>
-<trkpt lat="14.964538" lon="120.630612">
-<ele>16.479736</ele>
-<time>2004-09-07T15:40:37Z</time>
-</trkpt>
-<trkpt lat="14.964087" lon="120.629411">
-<ele>15.999023</ele>
-<time>2004-09-07T15:40:50Z</time>
-</trkpt>
-<trkpt lat="14.964130" lon="120.628166">
-<ele>16.479736</ele>
-<time>2004-09-07T15:41:05Z</time>
-</trkpt>
-<trkpt lat="14.965310" lon="120.624433">
-<ele>18.883057</ele>
-<time>2004-09-07T15:41:37Z</time>
-</trkpt>
-<trkpt lat="14.966726" lon="120.622780">
-<ele>19.844360</ele>
-<time>2004-09-07T15:41:53Z</time>
-</trkpt>
-<trkpt lat="14.968765" lon="120.620978">
-<ele>21.766968</ele>
-<time>2004-09-07T15:42:11Z</time>
-</trkpt>
-<trkpt lat="14.969687" lon="120.620055">
-<ele>20.324951</ele>
-<time>2004-09-07T15:42:20Z</time>
-</trkpt>
-<trkpt lat="14.970138" lon="120.618939">
-<ele>17.921753</ele>
-<time>2004-09-07T15:42:29Z</time>
-</trkpt>
-<trkpt lat="14.970138" lon="120.618703">
-<ele>15.999023</ele>
-<time>2004-09-07T15:42:32Z</time>
-</trkpt>
-<trkpt lat="14.969366" lon="120.617223">
-<ele>18.402344</ele>
-<time>2004-09-07T15:42:51Z</time>
-</trkpt>
-<trkpt lat="14.967628" lon="120.614820">
-<ele>19.844360</ele>
-<time>2004-09-07T15:43:15Z</time>
-</trkpt>
-<trkpt lat="14.967284" lon="120.614026">
-<ele>14.076416</ele>
-<time>2004-09-07T15:43:31Z</time>
-</trkpt>
-<trkpt lat="14.965761" lon="120.611258">
-<ele>17.921753</ele>
-<time>2004-09-07T15:45:03Z</time>
-</trkpt>
-<trkpt lat="14.964902" lon="120.610592">
-<ele>19.363770</ele>
-<time>2004-09-07T15:45:12Z</time>
-</trkpt>
-<trkpt lat="14.963551" lon="120.610206">
-<ele>20.805664</ele>
-<time>2004-09-07T15:45:22Z</time>
-</trkpt>
-<trkpt lat="14.961598" lon="120.609798">
-<ele>14.076416</ele>
-<time>2004-09-07T15:45:52Z</time>
-</trkpt>
-<trkpt lat="14.959388" lon="120.609198">
-<ele>20.324951</ele>
-<time>2004-09-07T15:46:39Z</time>
-</trkpt>
-<trkpt lat="14.957714" lon="120.608404">
-<ele>13.595825</ele>
-<time>2004-09-07T15:47:39Z</time>
-</trkpt>
-<trkpt lat="14.956083" lon="120.607502">
-<ele>17.921753</ele>
-<time>2004-09-07T15:48:04Z</time>
-</trkpt>
-<trkpt lat="14.953079" lon="120.604520">
-<ele>21.286377</ele>
-<time>2004-09-07T15:48:38Z</time>
-</trkpt>
-<trkpt lat="14.950418" lon="120.601280">
-<ele>14.076416</ele>
-<time>2004-09-07T15:49:24Z</time>
-</trkpt>
-<trkpt lat="14.947844" lon="120.597610">
-<ele>21.286377</ele>
-<time>2004-09-07T15:50:05Z</time>
-</trkpt>
-<trkpt lat="14.946878" lon="120.596902">
-<ele>17.921753</ele>
-<time>2004-09-07T15:50:15Z</time>
-</trkpt>
-<trkpt lat="14.945741" lon="120.596859">
-<ele>19.363770</ele>
-<time>2004-09-07T15:50:24Z</time>
-</trkpt>
-<trkpt lat="14.944882" lon="120.597246">
-<ele>14.557007</ele>
-<time>2004-09-07T15:50:42Z</time>
-</trkpt>
-<trkpt lat="14.943552" lon="120.597653">
-<ele>17.921753</ele>
-<time>2004-09-07T15:51:34Z</time>
-</trkpt>
-<trkpt lat="14.942050" lon="120.597546">
-<ele>20.324951</ele>
-<time>2004-09-07T15:51:46Z</time>
-</trkpt>
-<trkpt lat="14.939368" lon="120.596216">
-<ele>14.557007</ele>
-<time>2004-09-07T15:52:19Z</time>
-</trkpt>
-<trkpt lat="14.929519" lon="120.591066">
-<ele>20.805664</ele>
-<time>2004-09-07T15:54:35Z</time>
-</trkpt>
-<trkpt lat="14.928167" lon="120.589843">
-<ele>22.728271</ele>
-<time>2004-09-07T15:54:47Z</time>
-</trkpt>
-<trkpt lat="14.923275" lon="120.582397">
-<ele>15.037720</ele>
-<time>2004-09-07T15:56:01Z</time>
-</trkpt>
-<trkpt lat="14.915378" lon="120.570059">
-<ele>24.651001</ele>
-<time>2004-09-07T15:59:05Z</time>
-</trkpt>
-<trkpt lat="14.912031" lon="120.564802">
-<ele>15.518433</ele>
-<time>2004-09-07T16:00:07Z</time>
-</trkpt>
-<trkpt lat="14.876862" lon="120.509870">
-<ele>32.822266</ele>
-<time>2004-09-07T16:07:31Z</time>
-</trkpt>
-<trkpt lat="14.853859" lon="120.474057">
-<ele>17.921753</ele>
-<time>2004-09-07T16:11:57Z</time>
-</trkpt>
-<trkpt lat="14.854009" lon="120.473478">
-<ele>17.441162</ele>
-<time>2004-09-07T16:12:07Z</time>
-</trkpt>
-<trkpt lat="14.859738" lon="120.471246">
-<ele>24.651001</ele>
-<time>2004-09-07T16:12:51Z</time>
-</trkpt>
-<trkpt lat="14.869137" lon="120.467620">
-<ele>16.479736</ele>
-<time>2004-09-07T16:14:12Z</time>
-</trkpt>
-<trkpt lat="14.870489" lon="120.466933">
-<ele>17.441162</ele>
-<time>2004-09-07T16:14:44Z</time>
-</trkpt>
-<trkpt lat="14.869673" lon="120.463951">
-<ele>23.208984</ele>
-<time>2004-09-07T16:15:12Z</time>
-</trkpt>
-<trkpt lat="14.868343" lon="120.459852">
-<ele>24.170288</ele>
-<time>2004-09-07T16:15:41Z</time>
-</trkpt>
-<trkpt lat="14.867785" lon="120.458200">
-<ele>17.921753</ele>
-<time>2004-09-07T16:16:05Z</time>
-</trkpt>
-<trkpt lat="14.866691" lon="120.454788">
-<ele>26.092896</ele>
-<time>2004-09-07T16:16:39Z</time>
-</trkpt>
-<trkpt lat="14.864802" lon="120.448909">
-<ele>19.363770</ele>
-<time>2004-09-07T16:17:22Z</time>
-</trkpt>
-<trkpt lat="14.863622" lon="120.445240">
-<ele>27.534912</ele>
-<time>2004-09-07T16:17:56Z</time>
-</trkpt>
-<trkpt lat="14.862678" lon="120.442729">
-<ele>28.976929</ele>
-<time>2004-09-07T16:18:12Z</time>
-</trkpt>
-<trkpt lat="14.861240" lon="120.440433">
-<ele>31.860718</ele>
-<time>2004-09-07T16:18:27Z</time>
-</trkpt>
-<trkpt lat="14.858644" lon="120.436506">
-<ele>29.457520</ele>
-<time>2004-09-07T16:18:52Z</time>
-</trkpt>
-<trkpt lat="14.857228" lon="120.434361">
-<ele>33.783447</ele>
-<time>2004-09-07T16:19:07Z</time>
-</trkpt>
-<trkpt lat="14.846971" lon="120.420542">
-<ele>29.457520</ele>
-<time>2004-09-07T16:20:43Z</time>
-</trkpt>
-<trkpt lat="14.846563" lon="120.419362">
-<ele>29.457520</ele>
-<time>2004-09-07T16:20:52Z</time>
-</trkpt>
-<trkpt lat="14.847507" lon="120.413740">
-<ele>31.860718</ele>
-<time>2004-09-07T16:21:25Z</time>
-</trkpt>
-<trkpt lat="14.846048" lon="120.406015">
-<ele>37.148071</ele>
-<time>2004-09-07T16:22:10Z</time>
-</trkpt>
-<trkpt lat="14.845533" lon="120.402646">
-<ele>41.473999</ele>
-<time>2004-09-07T16:22:35Z</time>
-</trkpt>
-<trkpt lat="14.845469" lon="120.401359">
-<ele>35.225464</ele>
-<time>2004-09-07T16:22:45Z</time>
-</trkpt>
-<trkpt lat="14.848516" lon="120.401444">
-<ele>31.380127</ele>
-<time>2004-09-07T16:22:52Z</time>
-</trkpt>
-<trkpt lat="14.848065" lon="120.398333">
-<ele>27.054321</ele>
-<time>2004-09-07T16:23:39Z</time>
-</trkpt>
-<trkpt lat="14.847851" lon="120.394514">
-<ele>34.744873</ele>
-<time>2004-09-07T16:24:23Z</time>
-</trkpt>
-<trkpt lat="14.850490" lon="120.390844">
-<ele>36.186768</ele>
-<time>2004-09-07T16:24:53Z</time>
-</trkpt>
-<trkpt lat="14.849482" lon="120.388377">
-<ele>46.761230</ele>
-<time>2004-09-07T16:25:15Z</time>
-</trkpt>
-<trkpt lat="14.849696" lon="120.387089">
-<ele>49.645264</ele>
-<time>2004-09-07T16:25:27Z</time>
-</trkpt>
-<trkpt lat="14.850962" lon="120.386596">
-<ele>46.761230</ele>
-<time>2004-09-07T16:25:37Z</time>
-</trkpt>
-<trkpt lat="14.851627" lon="120.385909">
-<ele>42.435425</ele>
-<time>2004-09-07T16:25:44Z</time>
-</trkpt>
-<trkpt lat="14.851649" lon="120.385158">
-<ele>41.473999</ele>
-<time>2004-09-07T16:25:50Z</time>
-</trkpt>
-<trkpt lat="14.850833" lon="120.383635">
-<ele>40.032104</ele>
-<time>2004-09-07T16:26:02Z</time>
-</trkpt>
-<trkpt lat="14.851005" lon="120.383141">
-<ele>36.186768</ele>
-<time>2004-09-07T16:26:59Z</time>
-</trkpt>
-<trkpt lat="14.853323" lon="120.379772">
-<ele>51.087158</ele>
-<time>2004-09-07T16:27:44Z</time>
-</trkpt>
-<trkpt lat="14.851863" lon="120.376725">
-<ele>44.358032</ele>
-<time>2004-09-07T16:28:25Z</time>
-</trkpt>
-<trkpt lat="14.851499" lon="120.374644">
-<ele>54.932373</ele>
-<time>2004-09-07T16:29:01Z</time>
-</trkpt>
-<trkpt lat="14.854825" lon="120.365160">
-<ele>76.081421</ele>
-<time>2004-09-07T16:30:31Z</time>
-</trkpt>
-<trkpt lat="14.849653" lon="120.365310">
-<ele>75.600830</ele>
-<time>2004-09-07T16:30:39Z</time>
-</trkpt>
-<trkpt lat="14.847744" lon="120.364966">
-<ele>75.120239</ele>
-<time>2004-09-07T16:30:47Z</time>
-</trkpt>
-<trkpt lat="14.847314" lon="120.364301">
-<ele>71.755493</ele>
-<time>2004-09-07T16:30:54Z</time>
-</trkpt>
-<trkpt lat="14.846799" lon="120.363443">
-<ele>75.600830</ele>
-<time>2004-09-07T16:31:03Z</time>
-</trkpt>
-<trkpt lat="14.846177" lon="120.359645">
-<ele>87.136597</ele>
-<time>2004-09-07T16:31:33Z</time>
-</trkpt>
-<trkpt lat="14.845490" lon="120.358572">
-<ele>90.981934</ele>
-<time>2004-09-07T16:31:42Z</time>
-</trkpt>
-<trkpt lat="14.845276" lon="120.357971">
-<ele>95.307739</ele>
-<time>2004-09-07T16:31:47Z</time>
-</trkpt>
-<trkpt lat="14.845641" lon="120.356576">
-<ele>102.517700</ele>
-<time>2004-09-07T16:31:59Z</time>
-</trkpt>
-<trkpt lat="14.846349" lon="120.355546">
-<ele>107.324341</ele>
-<time>2004-09-07T16:32:09Z</time>
-</trkpt>
-<trkpt lat="14.847121" lon="120.354195">
-<ele>111.169556</ele>
-<time>2004-09-07T16:32:20Z</time>
-</trkpt>
-<trkpt lat="14.847422" lon="120.349817">
-<ele>137.605835</ele>
-<time>2004-09-07T16:32:57Z</time>
-</trkpt>
-<trkpt lat="14.847078" lon="120.348916">
-<ele>143.373657</ele>
-<time>2004-09-07T16:33:07Z</time>
-</trkpt>
-<trkpt lat="14.845684" lon="120.347843">
-<ele>152.025757</ele>
-<time>2004-09-07T16:33:49Z</time>
-</trkpt>
-<trkpt lat="14.845233" lon="120.346255">
-<ele>153.467651</ele>
-<time>2004-09-07T16:34:06Z</time>
-</trkpt>
-<trkpt lat="14.845126" lon="120.345354">
-<ele>150.103027</ele>
-<time>2004-09-07T16:34:15Z</time>
-</trkpt>
-<trkpt lat="14.845576" lon="120.344346">
-<ele>142.893066</ele>
-<time>2004-09-07T16:34:28Z</time>
-</trkpt>
-<trkpt lat="14.847250" lon="120.344667">
-<ele>136.163940</ele>
-<time>2004-09-07T16:34:49Z</time>
-</trkpt>
-<trkpt lat="14.847572" lon="120.344367">
-<ele>132.799316</ele>
-<time>2004-09-07T16:34:56Z</time>
-</trkpt>
-<trkpt lat="14.847400" lon="120.343659">
-<ele>129.915283</ele>
-<time>2004-09-07T16:35:06Z</time>
-</trkpt>
-<trkpt lat="14.847314" lon="120.343444">
-<ele>127.031372</ele>
-<time>2004-09-07T16:35:09Z</time>
-</trkpt>
-<trkpt lat="14.847314" lon="120.342844">
-<ele>126.069946</ele>
-<time>2004-09-07T16:35:16Z</time>
-</trkpt>
-<trkpt lat="14.847507" lon="120.341578">
-<ele>115.495605</ele>
-<time>2004-09-07T16:35:35Z</time>
-</trkpt>
-<trkpt lat="14.848623" lon="120.340140">
-<ele>103.479004</ele>
-<time>2004-09-07T16:36:10Z</time>
-</trkpt>
-<trkpt lat="14.847229" lon="120.340869">
-<ele>90.501343</ele>
-<time>2004-09-07T16:36:36Z</time>
-</trkpt>
-<trkpt lat="14.845684" lon="120.340719">
-<ele>78.484741</ele>
-<time>2004-09-07T16:36:59Z</time>
-</trkpt>
-<trkpt lat="14.845448" lon="120.339904">
-<ele>75.600830</ele>
-<time>2004-09-07T16:37:08Z</time>
-</trkpt>
-<trkpt lat="14.845555" lon="120.339410">
-<ele>69.832886</ele>
-<time>2004-09-07T16:37:13Z</time>
-</trkpt>
-<trkpt lat="14.848194" lon="120.338616">
-<ele>74.639526</ele>
-<time>2004-09-07T16:37:41Z</time>
-</trkpt>
-<trkpt lat="14.848945" lon="120.337994">
-<ele>81.849365</ele>
-<time>2004-09-07T16:37:52Z</time>
-</trkpt>
-<trkpt lat="14.847980" lon="120.335376">
-<ele>84.733398</ele>
-<time>2004-09-07T16:38:15Z</time>
-</trkpt>
-<trkpt lat="14.848237" lon="120.335033">
-<ele>84.733398</ele>
-<time>2004-09-07T16:38:20Z</time>
-</trkpt>
-<trkpt lat="14.849718" lon="120.335119">
-<ele>91.462524</ele>
-<time>2004-09-07T16:38:36Z</time>
-</trkpt>
-<trkpt lat="14.851413" lon="120.333982">
-<ele>100.114502</ele>
-<time>2004-09-07T16:38:55Z</time>
-</trkpt>
-<trkpt lat="14.852507" lon="120.334175">
-<ele>103.959717</ele>
-<time>2004-09-07T16:39:20Z</time>
-</trkpt>
-<trkpt lat="14.851542" lon="120.333402">
-<ele>113.572998</ele>
-<time>2004-09-07T16:39:46Z</time>
-</trkpt>
-<trkpt lat="14.850254" lon="120.332909">
-<ele>121.263550</ele>
-<time>2004-09-07T16:40:01Z</time>
-</trkpt>
-<trkpt lat="14.849782" lon="120.332179">
-<ele>122.224731</ele>
-<time>2004-09-07T16:40:10Z</time>
-</trkpt>
-<trkpt lat="14.850469" lon="120.329626">
-<ele>131.837891</ele>
-<time>2004-09-07T16:40:34Z</time>
-</trkpt>
-<trkpt lat="14.850318" lon="120.327802">
-<ele>139.528442</ele>
-<time>2004-09-07T16:40:58Z</time>
-</trkpt>
-<trkpt lat="14.849954" lon="120.326729">
-<ele>141.451050</ele>
-<time>2004-09-07T16:41:15Z</time>
-</trkpt>
-<trkpt lat="14.849675" lon="120.325935">
-<ele>141.451050</ele>
-<time>2004-09-07T16:41:29Z</time>
-</trkpt>
-<trkpt lat="14.848645" lon="120.325484">
-<ele>134.721924</ele>
-<time>2004-09-07T16:41:51Z</time>
-</trkpt>
-<trkpt lat="14.849095" lon="120.323918">
-<ele>123.186157</ele>
-<time>2004-09-07T16:42:15Z</time>
-</trkpt>
-<trkpt lat="14.848623" lon="120.323725">
-<ele>119.340820</ele>
-<time>2004-09-07T16:42:23Z</time>
-</trkpt>
-<trkpt lat="14.847229" lon="120.324862">
-<ele>110.688843</ele>
-<time>2004-09-07T16:42:46Z</time>
-</trkpt>
-<trkpt lat="14.846435" lon="120.324969">
-<ele>105.882446</ele>
-<time>2004-09-07T16:42:58Z</time>
-</trkpt>
-<trkpt lat="14.845984" lon="120.324025">
-<ele>98.191895</ele>
-<time>2004-09-07T16:43:10Z</time>
-</trkpt>
-<trkpt lat="14.845963" lon="120.323038">
-<ele>90.981934</ele>
-<time>2004-09-07T16:43:22Z</time>
-</trkpt>
-<trkpt lat="14.846306" lon="120.322587">
-<ele>87.136597</ele>
-<time>2004-09-07T16:43:29Z</time>
-</trkpt>
-<trkpt lat="14.846585" lon="120.322394">
-<ele>85.694580</ele>
-<time>2004-09-07T16:43:34Z</time>
-</trkpt>
-<trkpt lat="14.847400" lon="120.322394">
-<ele>79.446045</ele>
-<time>2004-09-07T16:43:46Z</time>
-</trkpt>
-<trkpt lat="14.848194" lon="120.322373">
-<ele>76.081421</ele>
-<time>2004-09-07T16:43:57Z</time>
-</trkpt>
-<trkpt lat="14.847958" lon="120.321000">
-<ele>67.910278</ele>
-<time>2004-09-07T16:44:14Z</time>
-</trkpt>
-<trkpt lat="14.848216" lon="120.319304">
-<ele>61.181030</ele>
-<time>2004-09-07T16:44:39Z</time>
-</trkpt>
-<trkpt lat="14.848859" lon="120.318768">
-<ele>56.855103</ele>
-<time>2004-09-07T16:44:53Z</time>
-</trkpt>
-<trkpt lat="14.848816" lon="120.318296">
-<ele>54.932373</ele>
-<time>2004-09-07T16:45:01Z</time>
-</trkpt>
-<trkpt lat="14.848688" lon="120.317116">
-<ele>46.280640</ele>
-<time>2004-09-07T16:45:35Z</time>
-</trkpt>
-<trkpt lat="14.849052" lon="120.316386">
-<ele>45.799927</ele>
-<time>2004-09-07T16:45:47Z</time>
-</trkpt>
-<trkpt lat="14.849117" lon="120.314691">
-<ele>38.109375</ele>
-<time>2004-09-07T16:46:07Z</time>
-</trkpt>
-<trkpt lat="14.848709" lon="120.313275">
-<ele>31.860718</ele>
-<time>2004-09-07T16:46:25Z</time>
-</trkpt>
-<trkpt lat="14.848258" lon="120.307438">
-<ele>26.092896</ele>
-<time>2004-09-07T16:47:29Z</time>
-</trkpt>
-<trkpt lat="14.850082" lon="120.303125">
-<ele>28.976929</ele>
-<time>2004-09-07T16:48:11Z</time>
-</trkpt>
-<trkpt lat="14.849954" lon="120.300765">
-<ele>27.054321</ele>
-<time>2004-09-07T16:48:31Z</time>
-</trkpt>
-<trkpt lat="14.846971" lon="120.295444">
-<ele>30.418823</ele>
-<time>2004-09-07T16:49:20Z</time>
-</trkpt>
-<trkpt lat="14.846756" lon="120.292568">
-<ele>27.054321</ele>
-<time>2004-09-07T16:49:42Z</time>
-</trkpt>
-<trkpt lat="14.843323" lon="120.288556">
-<ele>23.689575</ele>
-<time>2004-09-07T16:50:26Z</time>
-</trkpt>
-<trkpt lat="14.842551" lon="120.288255">
-<ele>23.689575</ele>
-<time>2004-09-07T16:50:29Z</time>
-</trkpt>
-<trkpt lat="14.841328" lon="120.286925">
-<ele>23.689575</ele>
-<time>2004-09-07T16:50:43Z</time>
-</trkpt>
-<trkpt lat="14.839911" lon="120.285337">
-<ele>18.883057</ele>
-<time>2004-09-07T16:51:00Z</time>
-</trkpt>
-<trkpt lat="14.840298" lon="120.285788">
-<ele>19.844360</ele>
-<time>2004-09-07T16:51:28Z</time>
-</trkpt>
-<trkpt lat="14.840491" lon="120.285079">
-<ele>18.883057</ele>
-<time>2004-09-07T16:51:50Z</time>
-</trkpt>
-<trkpt lat="14.839718" lon="120.284178">
-<ele>17.441162</ele>
-<time>2004-09-07T16:55:42Z</time>
-</trkpt>
-<trkpt lat="14.975588" lon="120.155540">
-<ele>29.938110</ele>
-<time>2004-09-08T02:02:19Z</time>
-</trkpt>
-<trkpt lat="14.975159" lon="120.157127">
-<ele>36.186768</ele>
-<time>2004-09-08T02:47:04Z</time>
-</trkpt>
-<trkpt lat="14.975181" lon="120.157149">
-<ele>42.916016</ele>
-<time>2004-09-08T02:47:26Z</time>
-</trkpt>
-<trkpt lat="14.975867" lon="120.169616">
-<ele>50.606567</ele>
-<time>2004-09-08T02:55:08Z</time>
-</trkpt>
-<trkpt lat="14.975502" lon="120.174830">
-<ele>54.451782</ele>
-<time>2004-09-08T02:56:01Z</time>
-</trkpt>
-<trkpt lat="14.979751" lon="120.190022">
-<ele>60.700317</ele>
-<time>2004-09-08T02:58:47Z</time>
-</trkpt>
-<trkpt lat="14.980502" lon="120.193992">
-<ele>63.103638</ele>
-<time>2004-09-08T03:02:22Z</time>
-</trkpt>
-<trkpt lat="14.980674" lon="120.196137">
-<ele>77.042847</ele>
-<time>2004-09-08T03:16:27Z</time>
-</trkpt>
-<trkpt lat="14.982047" lon="120.196846">
-<ele>65.026367</ele>
-<time>2004-09-08T03:18:11Z</time>
-</trkpt>
-<trkpt lat="14.984407" lon="120.199678">
-<ele>68.871582</ele>
-<time>2004-09-08T03:22:57Z</time>
-</trkpt>
-<trkpt lat="14.985566" lon="120.200622">
-<ele>68.871582</ele>
-<time>2004-09-08T03:25:05Z</time>
-</trkpt>
-<trkpt lat="14.988184" lon="120.202982">
-<ele>75.600830</ele>
-<time>2004-09-08T03:34:23Z</time>
-</trkpt>
-<trkpt lat="14.992883" lon="120.206931">
-<ele>79.926636</ele>
-<time>2004-09-08T03:43:48Z</time>
-</trkpt>
-<trkpt lat="14.996316" lon="120.209484">
-<ele>82.810791</ele>
-<time>2004-09-08T03:51:12Z</time>
-</trkpt>
-<trkpt lat="14.997883" lon="120.209827">
-<ele>84.252686</ele>
-<time>2004-09-08T03:55:15Z</time>
-</trkpt>
-<trkpt lat="14.998097" lon="120.210900">
-<ele>85.213989</ele>
-<time>2004-09-08T03:58:17Z</time>
-</trkpt>
-<trkpt lat="14.999664" lon="120.212381">
-<ele>85.213989</ele>
-<time>2004-09-08T04:01:25Z</time>
-</trkpt>
-<trkpt lat="15.003011" lon="120.213647">
-<ele>87.136597</ele>
-<time>2004-09-08T04:07:25Z</time>
-</trkpt>
-<trkpt lat="15.006766" lon="120.216758">
-<ele>91.943237</ele>
-<time>2004-09-08T04:16:18Z</time>
-</trkpt>
-<trkpt lat="15.009899" lon="120.217338">
-<ele>95.788452</ele>
-<time>2004-09-08T04:20:50Z</time>
-</trkpt>
-<trkpt lat="15.012367" lon="120.219333">
-<ele>94.827148</ele>
-<time>2004-09-08T04:24:59Z</time>
-</trkpt>
-<trkpt lat="15.013268" lon="120.221393">
-<ele>95.307739</ele>
-<time>2004-09-08T04:27:52Z</time>
-</trkpt>
-<trkpt lat="15.013804" lon="120.221758">
-<ele>94.827148</ele>
-<time>2004-09-08T04:28:46Z</time>
-</trkpt>
-<trkpt lat="15.014405" lon="120.222144">
-<ele>92.904541</ele>
-<time>2004-09-08T04:29:57Z</time>
-</trkpt>
-<trkpt lat="15.014727" lon="120.222208">
-<ele>90.981934</ele>
-<time>2004-09-08T04:30:42Z</time>
-</trkpt>
-<trkpt lat="15.014770" lon="120.222445">
-<ele>86.656006</ele>
-<time>2004-09-08T04:31:03Z</time>
-</trkpt>
-<trkpt lat="15.014749" lon="120.222487">
-<ele>93.385132</ele>
-<time>2004-09-08T04:31:09Z</time>
-</trkpt>
-<trkpt lat="15.014877" lon="120.223088">
-<ele>90.501343</ele>
-<time>2004-09-08T04:32:14Z</time>
-</trkpt>
-<trkpt lat="15.015070" lon="120.223367">
-<ele>90.501343</ele>
-<time>2004-09-08T04:32:47Z</time>
-</trkpt>
-<trkpt lat="15.016572" lon="120.224397">
-<ele>93.865845</ele>
-<time>2004-09-08T04:46:16Z</time>
-</trkpt>
-<trkpt lat="15.019448" lon="120.225148">
-<ele>92.423950</ele>
-<time>2004-09-08T04:51:28Z</time>
-</trkpt>
-<trkpt lat="15.021250" lon="120.226822">
-<ele>94.827148</ele>
-<time>2004-09-08T04:55:35Z</time>
-</trkpt>
-<trkpt lat="15.022924" lon="120.227702">
-<ele>98.191895</ele>
-<time>2004-09-08T04:58:14Z</time>
-</trkpt>
-<trkpt lat="15.024319" lon="120.227852">
-<ele>100.114502</ele>
-<time>2004-09-08T05:01:58Z</time>
-</trkpt>
-<trkpt lat="15.025413" lon="120.228431">
-<ele>98.672485</ele>
-<time>2004-09-08T05:05:57Z</time>
-</trkpt>
-<trkpt lat="15.028589" lon="120.228946">
-<ele>105.882446</ele>
-<time>2004-09-08T05:12:08Z</time>
-</trkpt>
-<trkpt lat="15.029683" lon="120.229611">
-<ele>108.766235</ele>
-<time>2004-09-08T05:15:30Z</time>
-</trkpt>
-<trkpt lat="15.031443" lon="120.230169">
-<ele>110.208252</ele>
-<time>2004-09-08T05:18:16Z</time>
-</trkpt>
-<trkpt lat="15.032752" lon="120.231757">
-<ele>117.418213</ele>
-<time>2004-09-08T05:22:13Z</time>
-</trkpt>
-<trkpt lat="15.033288" lon="120.233452">
-<ele>119.821411</ele>
-<time>2004-09-08T05:25:00Z</time>
-</trkpt>
-<trkpt lat="15.034060" lon="120.234547">
-<ele>124.628052</ele>
-<time>2004-09-08T05:26:57Z</time>
-</trkpt>
-<trkpt lat="15.034661" lon="120.235448">
-<ele>122.224731</ele>
-<time>2004-09-08T05:28:32Z</time>
-</trkpt>
-<trkpt lat="15.034940" lon="120.236714">
-<ele>129.434692</ele>
-<time>2004-09-08T05:31:45Z</time>
-</trkpt>
-<trkpt lat="15.035219" lon="120.236328">
-<ele>129.915283</ele>
-<time>2004-09-08T05:32:35Z</time>
-</trkpt>
-<trkpt lat="15.037129" lon="120.236349">
-<ele>154.909546</ele>
-<time>2004-09-08T06:40:26Z</time>
-</trkpt>
-<trkpt lat="15.037301" lon="120.236542">
-<ele>144.815796</ele>
-<time>2004-09-08T06:43:49Z</time>
-</trkpt>
-<trkpt lat="15.037901" lon="120.236928">
-<ele>152.506348</ele>
-<time>2004-09-08T06:46:06Z</time>
-</trkpt>
-<trkpt lat="15.038202" lon="120.237036">
-<ele>156.351563</ele>
-<time>2004-09-08T06:48:26Z</time>
-</trkpt>
-<trkpt lat="15.038309" lon="120.237186">
-<ele>157.793579</ele>
-<time>2004-09-08T06:48:47Z</time>
-</trkpt>
-<trkpt lat="15.042386" lon="120.246134">
-<ele>185.191162</ele>
-<time>2004-09-08T07:16:13Z</time>
-</trkpt>
-<trkpt lat="15.043287" lon="120.254095">
-<ele>204.417480</ele>
-<time>2004-09-08T07:37:30Z</time>
-</trkpt>
-<trkpt lat="15.043287" lon="120.254095">
-<ele>209.224121</ele>
-<time>2004-09-08T07:37:31Z</time>
-</trkpt>
-</trkseg>
-</trk>
-<trk>
- <name>08-SEP-04</name>
-<number>2</number>
-<trkseg>
-<trkpt lat="15.043309" lon="120.254095">
-<ele>206.340088</ele>
-<time>2004-09-08T07:39:34Z</time>
-</trkpt>
-<trkpt lat="15.043309" lon="120.254095">
-<ele>209.704834</ele>
-<time>2004-09-08T07:39:38Z</time>
-</trkpt>
-<trkpt lat="15.043330" lon="120.254717">
-<ele>210.666016</ele>
-<time>2004-09-08T07:41:08Z</time>
-</trkpt>
-<trkpt lat="15.043309" lon="120.254695">
-<ele>210.185425</ele>
-<time>2004-09-08T07:41:21Z</time>
-</trkpt>
-<trkpt lat="15.043201" lon="120.253429">
-<ele>207.301392</ele>
-<time>2004-09-08T07:43:06Z</time>
-</trkpt>
-<trkpt lat="15.043116" lon="120.253193">
-<ele>207.301392</ele>
-<time>2004-09-08T07:43:27Z</time>
-</trkpt>
-<trkpt lat="15.043073" lon="120.252485">
-<ele>205.378784</ele>
-<time>2004-09-08T07:45:17Z</time>
-</trkpt>
-<trkpt lat="15.043008" lon="120.251842">
-<ele>202.014282</ele>
-<time>2004-09-08T07:46:09Z</time>
-</trkpt>
-<trkpt lat="15.042858" lon="120.249889">
-<ele>195.765625</ele>
-<time>2004-09-08T07:48:50Z</time>
-</trkpt>
-<trkpt lat="15.042708" lon="120.249052">
-<ele>191.439575</ele>
-<time>2004-09-08T07:49:59Z</time>
-</trkpt>
-<trkpt lat="15.042601" lon="120.248537">
-<ele>190.478394</ele>
-<time>2004-09-08T07:50:41Z</time>
-</trkpt>
-<trkpt lat="15.042558" lon="120.247958">
-<ele>188.075073</ele>
-<time>2004-09-08T07:51:27Z</time>
-</trkpt>
-<trkpt lat="15.042579" lon="120.247872">
-<ele>188.555786</ele>
-<time>2004-09-08T07:51:46Z</time>
-</trkpt>
-<trkpt lat="15.042558" lon="120.247378">
-<ele>187.113770</ele>
-<time>2004-09-08T07:52:44Z</time>
-</trkpt>
-<trkpt lat="15.042408" lon="120.246606">
-<ele>185.191162</ele>
-<time>2004-09-08T07:54:58Z</time>
-</trkpt>
-<trkpt lat="15.042365" lon="120.246305">
-<ele>185.671753</ele>
-<time>2004-09-08T07:55:23Z</time>
-</trkpt>
-<trkpt lat="15.042236" lon="120.245962">
-<ele>184.710571</ele>
-<time>2004-09-08T07:56:05Z</time>
-</trkpt>
-<trkpt lat="15.042171" lon="120.245984">
-<ele>184.710571</ele>
-<time>2004-09-08T07:56:23Z</time>
-</trkpt>
-<trkpt lat="15.042236" lon="120.245941">
-<ele>184.710571</ele>
-<time>2004-09-08T07:57:01Z</time>
-</trkpt>
-<trkpt lat="15.042150" lon="120.245748">
-<ele>183.749023</ele>
-<time>2004-09-08T07:57:20Z</time>
-</trkpt>
-<trkpt lat="15.041893" lon="120.245233">
-<ele>182.307129</ele>
-<time>2004-09-08T07:58:05Z</time>
-</trkpt>
-<trkpt lat="15.041807" lon="120.245147">
-<ele>182.307129</ele>
-<time>2004-09-08T07:58:23Z</time>
-</trkpt>
-<trkpt lat="15.041785" lon="120.245018">
-<ele>180.865234</ele>
-<time>2004-09-08T07:58:42Z</time>
-</trkpt>
-<trkpt lat="15.041528" lon="120.244396">
-<ele>179.903809</ele>
-<time>2004-09-08T08:00:10Z</time>
-</trkpt>
-<trkpt lat="15.041463" lon="120.244160">
-<ele>179.423218</ele>
-<time>2004-09-08T08:00:31Z</time>
-</trkpt>
-<trkpt lat="15.041399" lon="120.243988">
-<ele>178.461914</ele>
-<time>2004-09-08T08:00:46Z</time>
-</trkpt>
-<trkpt lat="15.041378" lon="120.243838">
-<ele>178.942627</ele>
-<time>2004-09-08T08:02:01Z</time>
-</trkpt>
-<trkpt lat="15.041356" lon="120.243838">
-<ele>178.942627</ele>
-<time>2004-09-08T08:02:20Z</time>
-</trkpt>
-<trkpt lat="15.041313" lon="120.243623">
-<ele>177.981201</ele>
-<time>2004-09-08T08:03:02Z</time>
-</trkpt>
-<trkpt lat="15.041227" lon="120.243387">
-<ele>177.981201</ele>
-<time>2004-09-08T08:03:27Z</time>
-</trkpt>
-<trkpt lat="15.041227" lon="120.243387">
-<ele>176.539307</ele>
-<time>2004-09-08T08:03:37Z</time>
-</trkpt>
-<trkpt lat="15.040991" lon="120.243044">
-<ele>177.981201</ele>
-<time>2004-09-08T08:04:37Z</time>
-</trkpt>
-<trkpt lat="15.040519" lon="120.241756">
-<ele>177.020020</ele>
-<time>2004-09-08T08:06:26Z</time>
-</trkpt>
-<trkpt lat="15.040219" lon="120.241263">
-<ele>176.058594</ele>
-<time>2004-09-08T08:08:06Z</time>
-</trkpt>
-<trkpt lat="15.040004" lon="120.240855">
-<ele>174.135864</ele>
-<time>2004-09-08T08:09:00Z</time>
-</trkpt>
-<trkpt lat="15.039854" lon="120.240426">
-<ele>174.616577</ele>
-<time>2004-09-08T08:10:08Z</time>
-</trkpt>
-<trkpt lat="15.039704" lon="120.240104">
-<ele>174.135864</ele>
-<time>2004-09-08T08:10:37Z</time>
-</trkpt>
-<trkpt lat="15.039532" lon="120.239868">
-<ele>173.655273</ele>
-<time>2004-09-08T08:11:01Z</time>
-</trkpt>
-<trkpt lat="15.039361" lon="120.239718">
-<ele>173.174683</ele>
-<time>2004-09-08T08:11:20Z</time>
-</trkpt>
-<trkpt lat="15.039318" lon="120.239675">
-<ele>173.174683</ele>
-<time>2004-09-08T08:11:41Z</time>
-</trkpt>
-<trkpt lat="15.039318" lon="120.239697">
-<ele>173.174683</ele>
-<time>2004-09-08T08:12:08Z</time>
-</trkpt>
-<trkpt lat="15.039210" lon="120.239546">
-<ele>171.732666</ele>
-<time>2004-09-08T08:12:25Z</time>
-</trkpt>
-<trkpt lat="15.038974" lon="120.238903">
-<ele>169.810059</ele>
-<time>2004-09-08T08:15:01Z</time>
-</trkpt>
-<trkpt lat="15.038953" lon="120.238860">
-<ele>169.810059</ele>
-<time>2004-09-08T08:15:17Z</time>
-</trkpt>
-<trkpt lat="15.038974" lon="120.238903">
-<ele>169.810059</ele>
-<time>2004-09-08T08:15:54Z</time>
-</trkpt>
-<trkpt lat="15.038996" lon="120.238903">
-<ele>170.771362</ele>
-<time>2004-09-08T08:17:00Z</time>
-</trkpt>
-<trkpt lat="15.038996" lon="120.238860">
-<ele>170.290649</ele>
-<time>2004-09-08T08:17:28Z</time>
-</trkpt>
-<trkpt lat="15.038910" lon="120.238709">
-<ele>169.329468</ele>
-<time>2004-09-08T08:17:44Z</time>
-</trkpt>
-<trkpt lat="15.038910" lon="120.238731">
-<ele>168.848755</ele>
-<time>2004-09-08T08:18:11Z</time>
-</trkpt>
-<trkpt lat="15.038803" lon="120.238473">
-<ele>168.368042</ele>
-<time>2004-09-08T08:18:48Z</time>
-</trkpt>
-<trkpt lat="15.038781" lon="120.238452">
-<ele>167.406738</ele>
-<time>2004-09-08T08:19:07Z</time>
-</trkpt>
-<trkpt lat="15.038717" lon="120.238216">
-<ele>167.406738</ele>
-<time>2004-09-08T08:20:20Z</time>
-</trkpt>
-<trkpt lat="15.038610" lon="120.237958">
-<ele>165.964722</ele>
-<time>2004-09-08T08:21:16Z</time>
-</trkpt>
-<trkpt lat="15.038588" lon="120.237873">
-<ele>165.003418</ele>
-<time>2004-09-08T08:21:34Z</time>
-</trkpt>
-<trkpt lat="15.038524" lon="120.237808">
-<ele>164.042114</ele>
-<time>2004-09-08T08:21:59Z</time>
-</trkpt>
-<trkpt lat="15.038524" lon="120.237765">
-<ele>164.522705</ele>
-<time>2004-09-08T08:22:02Z</time>
-</trkpt>
-<trkpt lat="15.038395" lon="120.237443">
-<ele>159.716187</ele>
-<time>2004-09-08T08:23:54Z</time>
-</trkpt>
-<trkpt lat="15.038395" lon="120.237422">
-<ele>161.158203</ele>
-<time>2004-09-08T08:24:39Z</time>
-</trkpt>
-<trkpt lat="15.038245" lon="120.237143">
-<ele>157.793579</ele>
-<time>2004-09-08T08:25:25Z</time>
-</trkpt>
-<trkpt lat="15.038266" lon="120.237100">
-<ele>157.793579</ele>
-<time>2004-09-08T08:26:41Z</time>
-</trkpt>
-<trkpt lat="15.038116" lon="120.237014">
-<ele>155.870972</ele>
-<time>2004-09-08T08:27:30Z</time>
-</trkpt>
-<trkpt lat="15.038073" lon="120.236971">
-<ele>155.870972</ele>
-<time>2004-09-08T08:27:48Z</time>
-</trkpt>
-<trkpt lat="15.037880" lon="120.236821">
-<ele>152.025757</ele>
-<time>2004-09-08T08:30:37Z</time>
-</trkpt>
-<trkpt lat="15.037816" lon="120.236778">
-<ele>152.506348</ele>
-<time>2004-09-08T08:32:19Z</time>
-</trkpt>
-<trkpt lat="15.037816" lon="120.236735">
-<ele>152.025757</ele>
-<time>2004-09-08T08:32:55Z</time>
-</trkpt>
-<trkpt lat="15.037730" lon="120.236671">
-<ele>151.064209</ele>
-<time>2004-09-08T08:33:07Z</time>
-</trkpt>
-<trkpt lat="15.037601" lon="120.236564">
-<ele>147.699707</ele>
-<time>2004-09-08T08:33:57Z</time>
-</trkpt>
-<trkpt lat="15.037301" lon="120.236349">
-<ele>146.257813</ele>
-<time>2004-09-08T08:35:52Z</time>
-</trkpt>
-<trkpt lat="15.036914" lon="120.236156">
-<ele>138.086548</ele>
-<time>2004-09-08T08:36:31Z</time>
-</trkpt>
-<trkpt lat="15.036635" lon="120.235705">
-<ele>135.202515</ele>
-<time>2004-09-08T08:38:06Z</time>
-</trkpt>
-<trkpt lat="15.036550" lon="120.235684">
-<ele>134.721924</ele>
-<time>2004-09-08T08:38:14Z</time>
-</trkpt>
-<trkpt lat="15.036356" lon="120.235813">
-<ele>133.760498</ele>
-<time>2004-09-08T08:38:34Z</time>
-</trkpt>
-<trkpt lat="15.036142" lon="120.235791">
-<ele>133.279907</ele>
-<time>2004-09-08T08:38:52Z</time>
-</trkpt>
-<trkpt lat="15.035906" lon="120.235727">
-<ele>131.357300</ele>
-<time>2004-09-08T08:40:00Z</time>
-</trkpt>
-<trkpt lat="15.035605" lon="120.235856">
-<ele>130.395996</ele>
-<time>2004-09-08T08:40:28Z</time>
-</trkpt>
-<trkpt lat="15.035155" lon="120.235834">
-<ele>131.357300</ele>
-<time>2004-09-08T08:41:23Z</time>
-</trkpt>
-<trkpt lat="15.035005" lon="120.235856">
-<ele>130.876709</ele>
-<time>2004-09-08T08:42:18Z</time>
-</trkpt>
-<trkpt lat="15.034962" lon="120.235898">
-<ele>131.357300</ele>
-<time>2004-09-08T08:42:36Z</time>
-</trkpt>
-<trkpt lat="15.034962" lon="120.235963">
-<ele>131.837891</ele>
-<time>2004-09-08T08:43:03Z</time>
-</trkpt>
-<trkpt lat="15.034962" lon="120.236156">
-<ele>131.837891</ele>
-<time>2004-09-08T08:43:19Z</time>
-</trkpt>
-<trkpt lat="15.034833" lon="120.236285">
-<ele>131.357300</ele>
-<time>2004-09-08T08:43:34Z</time>
-</trkpt>
-<trkpt lat="15.034919" lon="120.236650">
-<ele>133.760498</ele>
-<time>2004-09-08T08:45:14Z</time>
-</trkpt>
-<trkpt lat="15.034833" lon="120.236778">
-<ele>134.241211</ele>
-<time>2004-09-08T08:46:43Z</time>
-</trkpt>
-<trkpt lat="15.035090" lon="120.236928">
-<ele>135.683105</ele>
-<time>2004-09-08T08:47:40Z</time>
-</trkpt>
-<trkpt lat="15.035133" lon="120.237014">
-<ele>136.644653</ele>
-<time>2004-09-08T08:47:59Z</time>
-</trkpt>
-<trkpt lat="15.035133" lon="120.237014">
-<ele>135.202515</ele>
-<time>2004-09-08T08:48:15Z</time>
-</trkpt>
-<trkpt lat="15.035176" lon="120.237207">
-<ele>137.125244</ele>
-<time>2004-09-08T08:48:35Z</time>
-</trkpt>
-<trkpt lat="15.035155" lon="120.237207">
-<ele>136.644653</ele>
-<time>2004-09-08T08:49:29Z</time>
-</trkpt>
-<trkpt lat="15.035155" lon="120.237186">
-<ele>135.683105</ele>
-<time>2004-09-08T08:49:31Z</time>
-</trkpt>
-<trkpt lat="15.035112" lon="120.237143">
-<ele>134.241211</ele>
-<time>2004-09-08T08:49:36Z</time>
-</trkpt>
-<trkpt lat="15.034854" lon="120.236864">
-<ele>127.031372</ele>
-<time>2004-09-08T09:46:50Z</time>
-</trkpt>
-<trkpt lat="15.034811" lon="120.236864">
-<ele>124.147339</ele>
-<time>2004-09-08T09:47:29Z</time>
-</trkpt>
-<trkpt lat="15.034811" lon="120.236864">
-<ele>116.937500</ele>
-<time>2004-09-08T09:47:39Z</time>
-</trkpt>
-<trkpt lat="15.034790" lon="120.236864">
-<ele>114.053589</ele>
-<time>2004-09-08T09:47:54Z</time>
-</trkpt>
-</trkseg>
-</trk>
-<trk>
- <name>08-SEP-04 02</name>
-<number>3</number>
-<trkseg>
-<trkpt lat="15.043309" lon="120.254095">
-<ele>206.340088</ele>
-<time>2004-09-08T07:39:34Z</time>
-</trkpt>
-<trkpt lat="15.043309" lon="120.254095">
-<ele>209.704834</ele>
-<time>2004-09-08T07:39:38Z</time>
-</trkpt>
-<trkpt lat="15.043330" lon="120.254717">
-<ele>210.666016</ele>
-<time>2004-09-08T07:41:08Z</time>
-</trkpt>
-<trkpt lat="15.043309" lon="120.254695">
-<ele>210.185425</ele>
-<time>2004-09-08T07:41:21Z</time>
-</trkpt>
-<trkpt lat="15.043201" lon="120.253429">
-<ele>207.301392</ele>
-<time>2004-09-08T07:43:06Z</time>
-</trkpt>
-<trkpt lat="15.043116" lon="120.253193">
-<ele>207.301392</ele>
-<time>2004-09-08T07:43:27Z</time>
-</trkpt>
-<trkpt lat="15.043073" lon="120.252485">
-<ele>205.378784</ele>
-<time>2004-09-08T07:45:17Z</time>
-</trkpt>
-<trkpt lat="15.043008" lon="120.251842">
-<ele>202.014282</ele>
-<time>2004-09-08T07:46:09Z</time>
-</trkpt>
-<trkpt lat="15.042858" lon="120.249889">
-<ele>195.765625</ele>
-<time>2004-09-08T07:48:50Z</time>
-</trkpt>
-<trkpt lat="15.042708" lon="120.249052">
-<ele>191.439575</ele>
-<time>2004-09-08T07:49:59Z</time>
-</trkpt>
-<trkpt lat="15.042601" lon="120.248537">
-<ele>190.478394</ele>
-<time>2004-09-08T07:50:41Z</time>
-</trkpt>
-<trkpt lat="15.042558" lon="120.247958">
-<ele>188.075073</ele>
-<time>2004-09-08T07:51:27Z</time>
-</trkpt>
-<trkpt lat="15.042579" lon="120.247872">
-<ele>188.555786</ele>
-<time>2004-09-08T07:51:46Z</time>
-</trkpt>
-<trkpt lat="15.042558" lon="120.247378">
-<ele>187.113770</ele>
-<time>2004-09-08T07:52:44Z</time>
-</trkpt>
-<trkpt lat="15.042408" lon="120.246606">
-<ele>185.191162</ele>
-<time>2004-09-08T07:54:58Z</time>
-</trkpt>
-<trkpt lat="15.042365" lon="120.246305">
-<ele>185.671753</ele>
-<time>2004-09-08T07:55:23Z</time>
-</trkpt>
-<trkpt lat="15.042236" lon="120.245962">
-<ele>184.710571</ele>
-<time>2004-09-08T07:56:05Z</time>
-</trkpt>
-<trkpt lat="15.042171" lon="120.245984">
-<ele>184.710571</ele>
-<time>2004-09-08T07:56:23Z</time>
-</trkpt>
-<trkpt lat="15.042236" lon="120.245941">
-<ele>184.710571</ele>
-<time>2004-09-08T07:57:01Z</time>
-</trkpt>
-<trkpt lat="15.042150" lon="120.245748">
-<ele>183.749023</ele>
-<time>2004-09-08T07:57:20Z</time>
-</trkpt>
-<trkpt lat="15.041893" lon="120.245233">
-<ele>182.307129</ele>
-<time>2004-09-08T07:58:05Z</time>
-</trkpt>
-<trkpt lat="15.041807" lon="120.245147">
-<ele>182.307129</ele>
-<time>2004-09-08T07:58:23Z</time>
-</trkpt>
-<trkpt lat="15.041785" lon="120.245018">
-<ele>180.865234</ele>
-<time>2004-09-08T07:58:42Z</time>
-</trkpt>
-<trkpt lat="15.041528" lon="120.244396">
-<ele>179.903809</ele>
-<time>2004-09-08T08:00:10Z</time>
-</trkpt>
-<trkpt lat="15.041463" lon="120.244160">
-<ele>179.423218</ele>
-<time>2004-09-08T08:00:31Z</time>
-</trkpt>
-<trkpt lat="15.041399" lon="120.243988">
-<ele>178.461914</ele>
-<time>2004-09-08T08:00:46Z</time>
-</trkpt>
-<trkpt lat="15.041378" lon="120.243838">
-<ele>178.942627</ele>
-<time>2004-09-08T08:02:01Z</time>
-</trkpt>
-<trkpt lat="15.041356" lon="120.243838">
-<ele>178.942627</ele>
-<time>2004-09-08T08:02:20Z</time>
-</trkpt>
-<trkpt lat="15.041313" lon="120.243623">
-<ele>177.981201</ele>
-<time>2004-09-08T08:03:02Z</time>
-</trkpt>
-<trkpt lat="15.041227" lon="120.243387">
-<ele>177.981201</ele>
-<time>2004-09-08T08:03:27Z</time>
-</trkpt>
-<trkpt lat="15.041227" lon="120.243387">
-<ele>176.539307</ele>
-<time>2004-09-08T08:03:37Z</time>
-</trkpt>
-<trkpt lat="15.040991" lon="120.243044">
-<ele>177.981201</ele>
-<time>2004-09-08T08:04:37Z</time>
-</trkpt>
-<trkpt lat="15.040519" lon="120.241756">
-<ele>177.020020</ele>
-<time>2004-09-08T08:06:26Z</time>
-</trkpt>
-<trkpt lat="15.040219" lon="120.241263">
-<ele>176.058594</ele>
-<time>2004-09-08T08:08:06Z</time>
-</trkpt>
-<trkpt lat="15.040004" lon="120.240855">
-<ele>174.135864</ele>
-<time>2004-09-08T08:09:00Z</time>
-</trkpt>
-<trkpt lat="15.039854" lon="120.240426">
-<ele>174.616577</ele>
-<time>2004-09-08T08:10:08Z</time>
-</trkpt>
-<trkpt lat="15.039704" lon="120.240104">
-<ele>174.135864</ele>
-<time>2004-09-08T08:10:37Z</time>
-</trkpt>
-<trkpt lat="15.039532" lon="120.239868">
-<ele>173.655273</ele>
-<time>2004-09-08T08:11:01Z</time>
-</trkpt>
-<trkpt lat="15.039361" lon="120.239718">
-<ele>173.174683</ele>
-<time>2004-09-08T08:11:20Z</time>
-</trkpt>
-<trkpt lat="15.039318" lon="120.239675">
-<ele>173.174683</ele>
-<time>2004-09-08T08:11:41Z</time>
-</trkpt>
-<trkpt lat="15.039318" lon="120.239697">
-<ele>173.174683</ele>
-<time>2004-09-08T08:12:08Z</time>
-</trkpt>
-<trkpt lat="15.039210" lon="120.239546">
-<ele>171.732666</ele>
-<time>2004-09-08T08:12:25Z</time>
-</trkpt>
-<trkpt lat="15.038974" lon="120.238903">
-<ele>169.810059</ele>
-<time>2004-09-08T08:15:01Z</time>
-</trkpt>
-<trkpt lat="15.038953" lon="120.238860">
-<ele>169.810059</ele>
-<time>2004-09-08T08:15:17Z</time>
-</trkpt>
-<trkpt lat="15.038974" lon="120.238903">
-<ele>169.810059</ele>
-<time>2004-09-08T08:15:54Z</time>
-</trkpt>
-<trkpt lat="15.038996" lon="120.238903">
-<ele>170.771362</ele>
-<time>2004-09-08T08:17:00Z</time>
-</trkpt>
-<trkpt lat="15.038996" lon="120.238860">
-<ele>170.290649</ele>
-<time>2004-09-08T08:17:28Z</time>
-</trkpt>
-<trkpt lat="15.038910" lon="120.238709">
-<ele>169.329468</ele>
-<time>2004-09-08T08:17:44Z</time>
-</trkpt>
-<trkpt lat="15.038910" lon="120.238731">
-<ele>168.848755</ele>
-<time>2004-09-08T08:18:11Z</time>
-</trkpt>
-<trkpt lat="15.038803" lon="120.238473">
-<ele>168.368042</ele>
-<time>2004-09-08T08:18:48Z</time>
-</trkpt>
-<trkpt lat="15.038781" lon="120.238452">
-<ele>167.406738</ele>
-<time>2004-09-08T08:19:07Z</time>
-</trkpt>
-<trkpt lat="15.038717" lon="120.238216">
-<ele>167.406738</ele>
-<time>2004-09-08T08:20:20Z</time>
-</trkpt>
-<trkpt lat="15.038610" lon="120.237958">
-<ele>165.964722</ele>
-<time>2004-09-08T08:21:16Z</time>
-</trkpt>
-<trkpt lat="15.038588" lon="120.237873">
-<ele>165.003418</ele>
-<time>2004-09-08T08:21:34Z</time>
-</trkpt>
-<trkpt lat="15.038524" lon="120.237808">
-<ele>164.042114</ele>
-<time>2004-09-08T08:21:59Z</time>
-</trkpt>
-<trkpt lat="15.038524" lon="120.237765">
-<ele>164.522705</ele>
-<time>2004-09-08T08:22:02Z</time>
-</trkpt>
-<trkpt lat="15.038395" lon="120.237443">
-<ele>159.716187</ele>
-<time>2004-09-08T08:23:54Z</time>
-</trkpt>
-<trkpt lat="15.038395" lon="120.237422">
-<ele>161.158203</ele>
-<time>2004-09-08T08:24:39Z</time>
-</trkpt>
-<trkpt lat="15.038245" lon="120.237143">
-<ele>157.793579</ele>
-<time>2004-09-08T08:25:25Z</time>
-</trkpt>
-<trkpt lat="15.038266" lon="120.237100">
-<ele>157.793579</ele>
-<time>2004-09-08T08:26:41Z</time>
-</trkpt>
-<trkpt lat="15.038116" lon="120.237014">
-<ele>155.870972</ele>
-<time>2004-09-08T08:27:30Z</time>
-</trkpt>
-<trkpt lat="15.038073" lon="120.236971">
-<ele>155.870972</ele>
-<time>2004-09-08T08:27:48Z</time>
-</trkpt>
-<trkpt lat="15.037880" lon="120.236821">
-<ele>152.025757</ele>
-<time>2004-09-08T08:30:37Z</time>
-</trkpt>
-<trkpt lat="15.037816" lon="120.236778">
-<ele>152.506348</ele>
-<time>2004-09-08T08:32:19Z</time>
-</trkpt>
-<trkpt lat="15.037816" lon="120.236735">
-<ele>152.025757</ele>
-<time>2004-09-08T08:32:55Z</time>
-</trkpt>
-<trkpt lat="15.037730" lon="120.236671">
-<ele>151.064209</ele>
-<time>2004-09-08T08:33:07Z</time>
-</trkpt>
-<trkpt lat="15.037601" lon="120.236564">
-<ele>147.699707</ele>
-<time>2004-09-08T08:33:57Z</time>
-</trkpt>
-<trkpt lat="15.037301" lon="120.236349">
-<ele>146.257813</ele>
-<time>2004-09-08T08:35:52Z</time>
-</trkpt>
-<trkpt lat="15.036914" lon="120.236156">
-<ele>138.086548</ele>
-<time>2004-09-08T08:36:31Z</time>
-</trkpt>
-<trkpt lat="15.036635" lon="120.235705">
-<ele>135.202515</ele>
-<time>2004-09-08T08:38:06Z</time>
-</trkpt>
-<trkpt lat="15.036550" lon="120.235684">
-<ele>134.721924</ele>
-<time>2004-09-08T08:38:14Z</time>
-</trkpt>
-<trkpt lat="15.036356" lon="120.235813">
-<ele>133.760498</ele>
-<time>2004-09-08T08:38:34Z</time>
-</trkpt>
-<trkpt lat="15.036142" lon="120.235791">
-<ele>133.279907</ele>
-<time>2004-09-08T08:38:52Z</time>
-</trkpt>
-<trkpt lat="15.035906" lon="120.235727">
-<ele>131.357300</ele>
-<time>2004-09-08T08:40:00Z</time>
-</trkpt>
-<trkpt lat="15.035605" lon="120.235856">
-<ele>130.395996</ele>
-<time>2004-09-08T08:40:28Z</time>
-</trkpt>
-<trkpt lat="15.035155" lon="120.235834">
-<ele>131.357300</ele>
-<time>2004-09-08T08:41:23Z</time>
-</trkpt>
-<trkpt lat="15.035005" lon="120.235856">
-<ele>130.876709</ele>
-<time>2004-09-08T08:42:18Z</time>
-</trkpt>
-<trkpt lat="15.034962" lon="120.235898">
-<ele>131.357300</ele>
-<time>2004-09-08T08:42:36Z</time>
-</trkpt>
-<trkpt lat="15.034962" lon="120.235963">
-<ele>131.837891</ele>
-<time>2004-09-08T08:43:03Z</time>
-</trkpt>
-<trkpt lat="15.034962" lon="120.236156">
-<ele>131.837891</ele>
-<time>2004-09-08T08:43:19Z</time>
-</trkpt>
-<trkpt lat="15.034833" lon="120.236285">
-<ele>131.357300</ele>
-<time>2004-09-08T08:43:34Z</time>
-</trkpt>
-<trkpt lat="15.034919" lon="120.236650">
-<ele>133.760498</ele>
-<time>2004-09-08T08:45:14Z</time>
-</trkpt>
-<trkpt lat="15.034833" lon="120.236778">
-<ele>134.241211</ele>
-<time>2004-09-08T08:46:43Z</time>
-</trkpt>
-<trkpt lat="15.035090" lon="120.236928">
-<ele>135.683105</ele>
-<time>2004-09-08T08:47:40Z</time>
-</trkpt>
-<trkpt lat="15.035133" lon="120.237014">
-<ele>136.644653</ele>
-<time>2004-09-08T08:47:59Z</time>
-</trkpt>
-<trkpt lat="15.035133" lon="120.237014">
-<ele>135.202515</ele>
-<time>2004-09-08T08:48:15Z</time>
-</trkpt>
-<trkpt lat="15.035176" lon="120.237207">
-<ele>137.125244</ele>
-<time>2004-09-08T08:48:35Z</time>
-</trkpt>
-<trkpt lat="15.035155" lon="120.237207">
-<ele>136.644653</ele>
-<time>2004-09-08T08:49:29Z</time>
-</trkpt>
-<trkpt lat="15.035155" lon="120.237186">
-<ele>135.683105</ele>
-<time>2004-09-08T08:49:31Z</time>
-</trkpt>
-<trkpt lat="15.035112" lon="120.237143">
-<ele>134.241211</ele>
-<time>2004-09-08T08:49:36Z</time>
-</trkpt>
-<trkpt lat="15.034854" lon="120.236864">
-<ele>127.031372</ele>
-<time>2004-09-08T09:46:50Z</time>
-</trkpt>
-<trkpt lat="15.034811" lon="120.236864">
-<ele>124.147339</ele>
-<time>2004-09-08T09:47:29Z</time>
-</trkpt>
-<trkpt lat="15.034811" lon="120.236864">
-<ele>120.302124</ele>
-<time>2004-09-08T09:47:33Z</time>
-</trkpt>
-<trkpt lat="15.034811" lon="120.236864">
-<ele>116.937500</ele>
-<time>2004-09-08T09:47:39Z</time>
-</trkpt>
-<trkpt lat="15.034790" lon="120.236864">
-<ele>114.053589</ele>
-<time>2004-09-08T09:47:54Z</time>
-</trkpt>
-<trkpt lat="15.034726" lon="120.236886">
-<ele>116.937500</ele>
-<time>2004-09-08T09:50:48Z</time>
-</trkpt>
-<trkpt lat="15.034769" lon="120.237293">
-<ele>108.766235</ele>
-<time>2004-09-08T11:47:25Z</time>
-</trkpt>
-<trkpt lat="15.034769" lon="120.237143">
-<ele>106.843628</ele>
-<time>2004-09-08T11:48:25Z</time>
-</trkpt>
-<trkpt lat="15.037408" lon="120.236907">
-<ele>119.821411</ele>
-<time>2004-09-09T01:02:30Z</time>
-</trkpt>
-<trkpt lat="15.037322" lon="120.236564">
-<ele>116.937500</ele>
-<time>2004-09-09T01:03:19Z</time>
-</trkpt>
-<trkpt lat="15.037301" lon="120.236542">
-<ele>119.821411</ele>
-<time>2004-09-09T01:05:55Z</time>
-</trkpt>
-<trkpt lat="15.037386" lon="120.236542">
-<ele>121.263550</ele>
-<time>2004-09-09T01:07:13Z</time>
-</trkpt>
-<trkpt lat="15.037987" lon="120.236993">
-<ele>128.473389</ele>
-<time>2004-09-09T01:08:39Z</time>
-</trkpt>
-<trkpt lat="15.038223" lon="120.237036">
-<ele>132.318604</ele>
-<time>2004-09-09T01:09:29Z</time>
-</trkpt>
-<trkpt lat="15.038331" lon="120.237207">
-<ele>133.279907</ele>
-<time>2004-09-09T01:09:49Z</time>
-</trkpt>
-<trkpt lat="15.038416" lon="120.237422">
-<ele>135.683105</ele>
-<time>2004-09-09T01:10:20Z</time>
-</trkpt>
-<trkpt lat="15.038331" lon="120.237443">
-<ele>137.125244</ele>
-<time>2004-09-09T01:11:08Z</time>
-</trkpt>
-<trkpt lat="15.038438" lon="120.237551">
-<ele>138.567261</ele>
-<time>2004-09-09T01:11:26Z</time>
-</trkpt>
-<trkpt lat="15.038481" lon="120.237658">
-<ele>140.970459</ele>
-<time>2004-09-09T01:11:46Z</time>
-</trkpt>
-<trkpt lat="15.038674" lon="120.238087">
-<ele>143.854370</ele>
-<time>2004-09-09T01:12:53Z</time>
-</trkpt>
-<trkpt lat="15.038910" lon="120.238709">
-<ele>147.699707</ele>
-<time>2004-09-09T01:14:41Z</time>
-</trkpt>
-<trkpt lat="15.039103" lon="120.239267">
-<ele>149.622314</ele>
-<time>2004-09-09T01:17:19Z</time>
-</trkpt>
-<trkpt lat="15.039232" lon="120.239482">
-<ele>151.064209</ele>
-<time>2004-09-09T01:17:59Z</time>
-</trkpt>
-<trkpt lat="15.039275" lon="120.239503">
-<ele>151.544922</ele>
-<time>2004-09-09T01:18:04Z</time>
-</trkpt>
-<trkpt lat="15.039382" lon="120.239654">
-<ele>152.986938</ele>
-<time>2004-09-09T01:18:27Z</time>
-</trkpt>
-<trkpt lat="15.039768" lon="120.240061">
-<ele>152.986938</ele>
-<time>2004-09-09T01:19:29Z</time>
-</trkpt>
-<trkpt lat="15.039897" lon="120.240319">
-<ele>153.467651</ele>
-<time>2004-09-09T01:19:55Z</time>
-</trkpt>
-<trkpt lat="15.039918" lon="120.240490">
-<ele>153.948364</ele>
-<time>2004-09-09T01:20:16Z</time>
-</trkpt>
-<trkpt lat="15.039961" lon="120.240662">
-<ele>155.390259</ele>
-<time>2004-09-09T01:20:37Z</time>
-</trkpt>
-<trkpt lat="15.040133" lon="120.241091">
-<ele>155.390259</ele>
-<time>2004-09-09T01:21:21Z</time>
-</trkpt>
-<trkpt lat="15.040326" lon="120.241477">
-<ele>158.274170</ele>
-<time>2004-09-09T01:22:26Z</time>
-</trkpt>
-<trkpt lat="15.040412" lon="120.241606">
-<ele>159.235474</ele>
-<time>2004-09-09T01:22:44Z</time>
-</trkpt>
-<trkpt lat="15.040519" lon="120.241714">
-<ele>159.716187</ele>
-<time>2004-09-09T01:23:03Z</time>
-</trkpt>
-<trkpt lat="15.040519" lon="120.241756">
-<ele>159.716187</ele>
-<time>2004-09-09T01:23:08Z</time>
-</trkpt>
-<trkpt lat="15.040584" lon="120.241842">
-<ele>160.196899</ele>
-<time>2004-09-09T01:23:18Z</time>
-</trkpt>
-<trkpt lat="15.040755" lon="120.242379">
-<ele>161.638916</ele>
-<time>2004-09-09T01:24:16Z</time>
-</trkpt>
-<trkpt lat="15.041056" lon="120.243108">
-<ele>162.600098</ele>
-<time>2004-09-09T01:25:28Z</time>
-</trkpt>
-<trkpt lat="15.041249" lon="120.243409">
-<ele>161.638916</ele>
-<time>2004-09-09T01:26:03Z</time>
-</trkpt>
-<trkpt lat="15.041292" lon="120.243537">
-<ele>161.638916</ele>
-<time>2004-09-09T01:26:42Z</time>
-</trkpt>
-<trkpt lat="15.041420" lon="120.244009">
-<ele>162.600098</ele>
-<time>2004-09-09T01:27:35Z</time>
-</trkpt>
-<trkpt lat="15.041807" lon="120.245061">
-<ele>167.887329</ele>
-<time>2004-09-09T01:29:46Z</time>
-</trkpt>
-<trkpt lat="15.042279" lon="120.245941">
-<ele>171.252075</ele>
-<time>2004-09-09T01:31:31Z</time>
-</trkpt>
-<trkpt lat="15.042279" lon="120.245962">
-<ele>170.290649</ele>
-<time>2004-09-09T01:31:46Z</time>
-</trkpt>
-<trkpt lat="15.042408" lon="120.246327">
-<ele>173.174683</ele>
-<time>2004-09-09T01:33:59Z</time>
-</trkpt>
-<trkpt lat="15.042472" lon="120.246863">
-<ele>174.616577</ele>
-<time>2004-09-09T01:34:56Z</time>
-</trkpt>
-<trkpt lat="15.042515" lon="120.246992">
-<ele>174.616577</ele>
-<time>2004-09-09T01:35:12Z</time>
-</trkpt>
-<trkpt lat="15.042579" lon="120.247314">
-<ele>176.539307</ele>
-<time>2004-09-09T01:36:56Z</time>
-</trkpt>
-<trkpt lat="15.042622" lon="120.248365">
-<ele>180.384521</ele>
-<time>2004-09-09T01:38:29Z</time>
-</trkpt>
-<trkpt lat="15.042622" lon="120.248516">
-<ele>179.903809</ele>
-<time>2004-09-09T01:38:47Z</time>
-</trkpt>
-<trkpt lat="15.042751" lon="120.249267">
-<ele>182.307129</ele>
-<time>2004-09-09T01:40:00Z</time>
-</trkpt>
-<trkpt lat="15.042794" lon="120.249438">
-<ele>184.229858</ele>
-<time>2004-09-09T01:40:17Z</time>
-</trkpt>
-<trkpt lat="15.042837" lon="120.249653">
-<ele>183.749023</ele>
-<time>2004-09-09T01:40:37Z</time>
-</trkpt>
-<trkpt lat="15.043008" lon="120.251262">
-<ele>189.997681</ele>
-<time>2004-09-09T01:43:08Z</time>
-</trkpt>
-<trkpt lat="15.043094" lon="120.252550">
-<ele>197.207520</ele>
-<time>2004-09-09T01:45:04Z</time>
-</trkpt>
-<trkpt lat="15.043287" lon="120.254116">
-<ele>202.975464</ele>
-<time>2004-09-09T01:48:23Z</time>
-</trkpt>
-<trkpt lat="15.044446" lon="120.254309">
-<ele>203.936890</ele>
-<time>2004-09-09T01:52:20Z</time>
-</trkpt>
-<trkpt lat="15.043266" lon="120.254395">
-<ele>203.936890</ele>
-<time>2004-09-09T01:52:27Z</time>
-</trkpt>
-<trkpt lat="15.043287" lon="120.254674">
-<ele>203.936890</ele>
-<time>2004-09-09T01:52:49Z</time>
-</trkpt>
-<trkpt lat="15.043309" lon="120.254931">
-<ele>204.898071</ele>
-<time>2004-09-09T01:53:10Z</time>
-</trkpt>
-<trkpt lat="15.043352" lon="120.255082">
-<ele>206.340088</ele>
-<time>2004-09-09T01:53:27Z</time>
-</trkpt>
-<trkpt lat="15.043416" lon="120.255103">
-<ele>206.340088</ele>
-<time>2004-09-09T01:53:39Z</time>
-</trkpt>
-<trkpt lat="15.043416" lon="120.255103">
-<ele>202.014282</ele>
-<time>2004-09-09T01:53:52Z</time>
-</trkpt>
-<trkpt lat="15.043437" lon="120.255103">
-<ele>205.859497</ele>
-<time>2004-09-09T01:53:54Z</time>
-</trkpt>
-<trkpt lat="15.043437" lon="120.255082">
-<ele>206.340088</ele>
-<time>2004-09-09T01:53:55Z</time>
-</trkpt>
-<trkpt lat="15.043652" lon="120.255039">
-<ele>205.859497</ele>
-<time>2004-09-09T01:54:15Z</time>
-</trkpt>
-<trkpt lat="15.044425" lon="120.254910">
-<ele>206.820679</ele>
-<time>2004-09-09T01:55:24Z</time>
-</trkpt>
-<trkpt lat="15.044682" lon="120.254889">
-<ele>210.185425</ele>
-<time>2004-09-09T01:55:52Z</time>
-</trkpt>
-<trkpt lat="15.044682" lon="120.254910">
-<ele>210.185425</ele>
-<time>2004-09-09T01:56:23Z</time>
-</trkpt>
-<trkpt lat="15.044639" lon="120.254910">
-<ele>209.704834</ele>
-<time>2004-09-09T01:56:51Z</time>
-</trkpt>
-</trkseg>
-</trk>
-<rte>
- <name>10-SEP-04</name>
-<number>4</number>
-<rtept lat="15.044639" lon="120.254910">
-<ele>209.704834</ele>
-<time>2004-09-09T01:57:08Z</time>
-</rtept>
-<rtept lat="15.044446" lon="120.254910">
-<ele>206.340088</ele>
-<time>2004-09-09T01:57:48Z</time>
-</rtept>
-<rtept lat="15.044231" lon="120.254931">
-<ele>206.340088</ele>
-<time>2004-09-09T01:58:07Z</time>
-</rtept>
-<rtept lat="15.043373" lon="120.255103">
-<ele>207.782104</ele>
-<time>2004-09-09T01:59:24Z</time>
-</rtept>
-<rtept lat="15.043330" lon="120.255060">
-<ele>206.820679</ele>
-<time>2004-09-09T01:59:31Z</time>
-</rtept>
-<rtept lat="15.043309" lon="120.254738">
-<ele>205.859497</ele>
-<time>2004-09-09T01:59:57Z</time>
-</rtept>
-<rtept lat="15.043244" lon="120.254374">
-<ele>206.340088</ele>
-<time>2004-09-09T02:00:51Z</time>
-</rtept>
-<rtept lat="15.043180" lon="120.253386">
-<ele>203.456177</ele>
-<time>2004-09-09T02:02:25Z</time>
-</rtept>
-<rtept lat="15.043094" lon="120.253150">
-<ele>202.975464</ele>
-<time>2004-09-09T02:02:45Z</time>
-</rtept>
-<rtept lat="15.043094" lon="120.252850">
-<ele>201.533569</ele>
-<time>2004-09-09T02:03:07Z</time>
-</rtept>
-<rtept lat="15.043051" lon="120.252550">
-<ele>201.533569</ele>
-<time>2004-09-09T02:03:29Z</time>
-</rtept>
-<rtept lat="15.043051" lon="120.252228">
-<ele>199.610840</ele>
-<time>2004-09-09T02:03:53Z</time>
-</rtept>
-<rtept lat="15.042944" lon="120.251219">
-<ele>195.765625</ele>
-<time>2004-09-09T02:05:15Z</time>
-</rtept>
-<rtept lat="15.042880" lon="120.250597">
-<ele>194.323730</ele>
-<time>2004-09-09T02:06:13Z</time>
-</rtept>
-<rtept lat="15.042880" lon="120.250340">
-<ele>193.843018</ele>
-<time>2004-09-09T02:06:34Z</time>
-</rtept>
-<rtept lat="15.042815" lon="120.249782">
-<ele>190.478394</ele>
-<time>2004-09-09T02:07:16Z</time>
-</rtept>
-<rtept lat="15.042622" lon="120.248687">
-<ele>186.152466</ele>
-<time>2004-09-09T02:08:40Z</time>
-</rtept>
-<rtept lat="15.042579" lon="120.248451">
-<ele>185.671753</ele>
-<time>2004-09-09T02:08:59Z</time>
-</rtept>
-<rtept lat="15.042558" lon="120.247850">
-<ele>183.749023</ele>
-<time>2004-09-09T02:09:44Z</time>
-</rtept>
-<rtept lat="15.042515" lon="120.247207">
-<ele>182.787842</ele>
-<time>2004-09-09T02:10:33Z</time>
-</rtept>
-<rtept lat="15.042365" lon="120.246348">
-<ele>181.345825</ele>
-<time>2004-09-09T02:11:44Z</time>
-</rtept>
-<rtept lat="15.042107" lon="120.245705">
-<ele>179.423218</ele>
-<time>2004-09-09T02:12:40Z</time>
-</rtept>
-<rtept lat="15.042000" lon="120.245490">
-<ele>178.461914</ele>
-<time>2004-09-09T02:12:59Z</time>
-</rtept>
-<rtept lat="15.041893" lon="120.245275">
-<ele>177.981201</ele>
-<time>2004-09-09T02:13:18Z</time>
-</rtept>
-<rtept lat="15.041764" lon="120.245061">
-<ele>176.539307</ele>
-<time>2004-09-09T02:13:38Z</time>
-</rtept>
-<rtept lat="15.041635" lon="120.244761">
-<ele>175.577881</ele>
-<time>2004-09-09T02:14:01Z</time>
-</rtept>
-<rtept lat="15.041399" lon="120.244117">
-<ele>175.577881</ele>
-<time>2004-09-09T02:15:03Z</time>
-</rtept>
-<rtept lat="15.041206" lon="120.243430">
-<ele>175.577881</ele>
-<time>2004-09-09T02:16:02Z</time>
-</rtept>
-<rtept lat="15.041034" lon="120.243173">
-<ele>175.577881</ele>
-<time>2004-09-09T02:16:24Z</time>
-</rtept>
-<rtept lat="15.040863" lon="120.242808">
-<ele>174.616577</ele>
-<time>2004-09-09T02:17:06Z</time>
-</rtept>
-<rtept lat="15.040798" lon="120.242572">
-<ele>174.135864</ele>
-<time>2004-09-09T02:17:26Z</time>
-</rtept>
-<rtept lat="15.040691" lon="120.242336">
-<ele>174.135864</ele>
-<time>2004-09-09T02:17:50Z</time>
-</rtept>
-<rtept lat="15.040627" lon="120.242164">
-<ele>173.655273</ele>
-<time>2004-09-09T02:18:23Z</time>
-</rtept>
-<rtept lat="15.040562" lon="120.241885">
-<ele>173.174683</ele>
-<time>2004-09-09T02:18:45Z</time>
-</rtept>
-<rtept lat="15.040412" lon="120.241649">
-<ele>173.655273</ele>
-<time>2004-09-09T02:19:07Z</time>
-</rtept>
-<rtept lat="15.040219" lon="120.241306">
-<ele>172.213257</ele>
-<time>2004-09-09T02:19:40Z</time>
-</rtept>
-<rtept lat="15.040240" lon="120.241263">
-<ele>171.732666</ele>
-<time>2004-09-09T02:25:56Z</time>
-</rtept>
-<rtept lat="15.040219" lon="120.241263">
-<ele>171.252075</ele>
-<time>2004-09-09T02:26:48Z</time>
-</rtept>
-<rtept lat="15.040219" lon="120.241241">
-<ele>172.693970</ele>
-<time>2004-09-09T02:27:16Z</time>
-</rtept>
-<rtept lat="15.040305" lon="120.241241">
-<ele>172.213257</ele>
-<time>2004-09-09T02:27:32Z</time>
-</rtept>
-<rtept lat="15.040176" lon="120.241263">
-<ele>171.252075</ele>
-<time>2004-09-09T02:30:30Z</time>
-</rtept>
-<rtept lat="15.040176" lon="120.241220">
-<ele>170.771362</ele>
-<time>2004-09-09T02:31:16Z</time>
-</rtept>
-<rtept lat="15.040047" lon="120.240963">
-<ele>169.810059</ele>
-<time>2004-09-09T02:31:39Z</time>
-</rtept>
-<rtept lat="15.039940" lon="120.240748">
-<ele>170.290649</ele>
-<time>2004-09-09T02:31:59Z</time>
-</rtept>
-<rtept lat="15.039768" lon="120.240233">
-<ele>169.810059</ele>
-<time>2004-09-09T02:32:44Z</time>
-</rtept>
-<rtept lat="15.039575" lon="120.239954">
-<ele>169.329468</ele>
-<time>2004-09-09T02:33:10Z</time>
-</rtept>
-<rtept lat="15.039339" lon="120.239739">
-<ele>168.368042</ele>
-<time>2004-09-09T02:33:34Z</time>
-</rtept>
-<rtept lat="15.039189" lon="120.239654">
-<ele>168.368042</ele>
-<time>2004-09-09T02:34:06Z</time>
-</rtept>
-<rtept lat="15.038867" lon="120.239525">
-<ele>164.522705</ele>
-<time>2004-09-09T02:34:40Z</time>
-</rtept>
-<rtept lat="15.038416" lon="120.239267">
-<ele>162.119507</ele>
-<time>2004-09-09T02:35:26Z</time>
-</rtept>
-<rtept lat="15.038202" lon="120.239096">
-<ele>160.677490</ele>
-<time>2004-09-09T02:35:49Z</time>
-</rtept>
-<rtept lat="15.038009" lon="120.238881">
-<ele>160.677490</ele>
-<time>2004-09-09T02:36:11Z</time>
-</rtept>
-<rtept lat="15.037751" lon="120.238602">
-<ele>158.274170</ele>
-<time>2004-09-09T02:36:38Z</time>
-</rtept>
-<rtept lat="15.037537" lon="120.238409">
-<ele>157.793579</ele>
-<time>2004-09-09T02:36:59Z</time>
-</rtept>
-<rtept lat="15.036936" lon="120.238109">
-<ele>152.506348</ele>
-<time>2004-09-09T02:37:52Z</time>
-</rtept>
-<rtept lat="15.036571" lon="120.237894">
-<ele>152.025757</ele>
-<time>2004-09-09T02:38:44Z</time>
-</rtept>
-<rtept lat="15.036399" lon="120.237722">
-<ele>148.661011</ele>
-<time>2004-09-09T02:39:08Z</time>
-</rtept>
-<rtept lat="15.036056" lon="120.237486">
-<ele>147.218994</ele>
-<time>2004-09-09T02:39:40Z</time>
-</rtept>
-<rtept lat="15.035348" lon="120.237379">
-<ele>138.567261</ele>
-<time>2004-09-09T02:40:39Z</time>
-</rtept>
-<rtept lat="15.035241" lon="120.237207">
-<ele>136.644653</ele>
-<time>2004-09-09T02:41:17Z</time>
-</rtept>
-<rtept lat="15.035241" lon="120.237207">
-<ele>133.279907</ele>
-<time>2004-09-09T02:41:20Z</time>
-</rtept>
-<rtept lat="15.035241" lon="120.237207">
-<ele>137.605835</ele>
-<time>2004-09-09T02:41:21Z</time>
-</rtept>
-<rtept lat="15.035241" lon="120.237207">
-<ele>134.241211</ele>
-<time>2004-09-09T02:41:22Z</time>
-</rtept>
-<rtept lat="15.035241" lon="120.237186">
-<ele>136.644653</ele>
-<time>2004-09-09T02:41:36Z</time>
-</rtept>
-<rtept lat="15.035563" lon="120.236864">
-<ele>135.683105</ele>
-<time>2004-09-09T02:42:31Z</time>
-</rtept>
-<rtept lat="15.035756" lon="120.236499">
-<ele>132.799316</ele>
-<time>2004-09-09T02:43:04Z</time>
-</rtept>
-<rtept lat="15.036013" lon="120.235684">
-<ele>129.915283</ele>
-<time>2004-09-09T02:44:37Z</time>
-</rtept>
-<rtept lat="15.036056" lon="120.235620">
-<ele>130.395996</ele>
-<time>2004-09-09T02:44:52Z</time>
-</rtept>
-<rtept lat="15.036035" lon="120.235662">
-<ele>131.357300</ele>
-<time>2004-09-09T02:44:58Z</time>
-</rtept>
-<rtept lat="15.035992" lon="120.235791">
-<ele>129.434692</ele>
-<time>2004-09-09T02:45:12Z</time>
-</rtept>
-<rtept lat="15.036013" lon="120.235813">
-<ele>129.434692</ele>
-<time>2004-09-09T02:45:17Z</time>
-</rtept>
-<rtept lat="15.038309" lon="120.235984">
-<ele>147.699707</ele>
-<time>2004-09-09T03:40:20Z</time>
-</rtept>
-<rtept lat="15.037258" lon="120.236478">
-<ele>144.335205</ele>
-<time>2004-09-09T03:41:06Z</time>
-</rtept>
-<rtept lat="15.037000" lon="120.236435">
-<ele>139.047852</ele>
-<time>2004-09-09T03:41:50Z</time>
-</rtept>
-<rtept lat="15.037000" lon="120.236413">
-<ele>139.528442</ele>
-<time>2004-09-09T03:42:03Z</time>
-</rtept>
-<rtept lat="15.036936" lon="120.236413">
-<ele>140.009155</ele>
-<time>2004-09-09T03:42:24Z</time>
-</rtept>
-<rtept lat="15.036786" lon="120.236371">
-<ele>139.528442</ele>
-<time>2004-09-09T03:42:39Z</time>
-</rtept>
-<rtept lat="15.036635" lon="120.236349">
-<ele>140.970459</ele>
-<time>2004-09-09T03:42:55Z</time>
-</rtept>
-<rtept lat="15.036592" lon="120.236349">
-<ele>139.528442</ele>
-<time>2004-09-09T03:43:14Z</time>
-</rtept>
-<rtept lat="15.036592" lon="120.236371">
-<ele>141.451050</ele>
-<time>2004-09-09T03:43:28Z</time>
-</rtept>
-<rtept lat="15.036378" lon="120.236242">
-<ele>135.202515</ele>
-<time>2004-09-09T03:44:01Z</time>
-</rtept>
-<rtept lat="15.036378" lon="120.236242">
-<ele>133.279907</ele>
-<time>2004-09-09T03:44:06Z</time>
-</rtept>
-<rtept lat="15.036356" lon="120.236177">
-<ele>132.318604</ele>
-<time>2004-09-09T03:44:16Z</time>
-</rtept>
-<rtept lat="15.036249" lon="120.236135">
-<ele>135.202515</ele>
-<time>2004-09-09T03:44:41Z</time>
-</rtept>
-<rtept lat="15.036249" lon="120.236199">
-<ele>136.644653</ele>
-<time>2004-09-09T03:45:01Z</time>
-</rtept>
-<rtept lat="15.036206" lon="120.236263">
-<ele>139.528442</ele>
-<time>2004-09-09T03:45:40Z</time>
-</rtept>
-<rtept lat="15.036206" lon="120.236328">
-<ele>142.893066</ele>
-<time>2004-09-09T03:46:08Z</time>
-</rtept>
-<rtept lat="15.036228" lon="120.236392">
-<ele>141.931763</ele>
-<time>2004-09-09T03:46:26Z</time>
-</rtept>
-<rtept lat="15.036271" lon="120.236392">
-<ele>140.970459</ele>
-<time>2004-09-09T03:46:38Z</time>
-</rtept>
-<rtept lat="15.036271" lon="120.236413">
-<ele>140.489868</ele>
-<time>2004-09-09T03:46:43Z</time>
-</rtept>
-<rtept lat="15.036249" lon="120.236456">
-<ele>141.451050</ele>
-<time>2004-09-09T03:47:02Z</time>
-</rtept>
-<rtept lat="15.036206" lon="120.236456">
-<ele>141.451050</ele>
-<time>2004-09-09T03:47:21Z</time>
-</rtept>
-<rtept lat="15.036206" lon="120.236478">
-<ele>141.931763</ele>
-<time>2004-09-09T03:47:22Z</time>
-</rtept>
-<rtept lat="15.036077" lon="120.236499">
-<ele>141.931763</ele>
-<time>2004-09-09T03:47:43Z</time>
-</rtept>
-<rtept lat="15.035927" lon="120.236542">
-<ele>136.163940</ele>
-<time>2004-09-09T03:48:13Z</time>
-</rtept>
-<rtept lat="15.035691" lon="120.236542">
-<ele>133.279907</ele>
-<time>2004-09-09T03:48:35Z</time>
-</rtept>
-<rtept lat="15.035434" lon="120.236456">
-<ele>130.876709</ele>
-<time>2004-09-09T03:49:25Z</time>
-</rtept>
-<rtept lat="15.035348" lon="120.236499">
-<ele>131.357300</ele>
-<time>2004-09-09T03:49:42Z</time>
-</rtept>
-<rtept lat="15.035219" lon="120.236499">
-<ele>130.876709</ele>
-<time>2004-09-09T03:50:05Z</time>
-</rtept>
-<rtept lat="15.035219" lon="120.236478">
-<ele>130.395996</ele>
-<time>2004-09-09T03:50:59Z</time>
-</rtept>
-<rtept lat="15.034747" lon="120.235770">
-<ele>130.876709</ele>
-<time>2004-09-09T03:51:15Z</time>
-</rtept>
-<rtept lat="15.034897" lon="120.236521">
-<ele>130.876709</ele>
-<time>2004-09-09T03:51:18Z</time>
-</rtept>
-<rtept lat="15.034919" lon="120.237143">
-<ele>134.241211</ele>
-<time>2004-09-09T03:52:59Z</time>
-</rtept>
-<rtept lat="15.034897" lon="120.237036">
-<ele>134.241211</ele>
-<time>2004-09-09T03:53:21Z</time>
-</rtept>
-<rtept lat="15.034811" lon="120.235405">
-<ele>123.666748</ele>
-<time>2004-09-09T23:03:55Z</time>
-</rtept>
-<rtept lat="15.034854" lon="120.235384">
-<ele>120.782837</ele>
-<time>2004-09-09T23:04:11Z</time>
-</rtept>
-<rtept lat="15.034811" lon="120.235426">
-<ele>117.418213</ele>
-<time>2004-09-09T23:04:18Z</time>
-</rtept>
-<rtept lat="15.034726" lon="120.235405">
-<ele>115.014893</ele>
-<time>2004-09-09T23:04:24Z</time>
-</rtept>
-<rtept lat="15.034575" lon="120.235362">
-<ele>112.611572</ele>
-<time>2004-09-09T23:04:40Z</time>
-</rtept>
-<rtept lat="15.034533" lon="120.235298">
-<ele>113.092285</ele>
-<time>2004-09-09T23:04:48Z</time>
-</rtept>
-<rtept lat="15.034468" lon="120.235019">
-<ele>112.611572</ele>
-<time>2004-09-09T23:05:12Z</time>
-</rtept>
-<rtept lat="15.034339" lon="120.234783">
-<ele>113.572998</ele>
-<time>2004-09-09T23:05:30Z</time>
-</rtept>
-<rtept lat="15.034168" lon="120.234590">
-<ele>115.014893</ele>
-<time>2004-09-09T23:05:51Z</time>
-</rtept>
-<rtept lat="15.034039" lon="120.234461">
-<ele>115.014893</ele>
-<time>2004-09-09T23:06:05Z</time>
-</rtept>
-<rtept lat="15.033846" lon="120.233989">
-<ele>113.572998</ele>
-<time>2004-09-09T23:06:45Z</time>
-</rtept>
-<rtept lat="15.033395" lon="120.233603">
-<ele>112.611572</ele>
-<time>2004-09-09T23:07:30Z</time>
-</rtept>
-<rtept lat="15.033288" lon="120.233409">
-<ele>111.650269</ele>
-<time>2004-09-09T23:07:47Z</time>
-</rtept>
-<rtept lat="15.033159" lon="120.233173">
-<ele>111.650269</ele>
-<time>2004-09-09T23:08:07Z</time>
-</rtept>
-<rtept lat="15.033138" lon="120.232766">
-<ele>112.130981</ele>
-<time>2004-09-09T23:08:40Z</time>
-</rtept>
-<rtept lat="15.032988" lon="120.232229">
-<ele>110.688843</ele>
-<time>2004-09-09T23:09:20Z</time>
-</rtept>
-<rtept lat="15.032730" lon="120.231693">
-<ele>109.246948</ele>
-<time>2004-09-09T23:10:03Z</time>
-</rtept>
-<rtept lat="15.032258" lon="120.231113">
-<ele>107.324341</ele>
-<time>2004-09-09T23:11:04Z</time>
-</rtept>
-<rtept lat="15.032001" lon="120.230727">
-<ele>104.921021</ele>
-<time>2004-09-09T23:11:43Z</time>
-</rtept>
-<rtept lat="15.031657" lon="120.230405">
-<ele>102.517700</ele>
-<time>2004-09-09T23:12:21Z</time>
-</rtept>
-<rtept lat="15.031507" lon="120.230212">
-<ele>102.037109</ele>
-<time>2004-09-09T23:12:40Z</time>
-</rtept>
-<rtept lat="15.031357" lon="120.230105">
-<ele>102.517700</ele>
-<time>2004-09-09T23:12:56Z</time>
-</rtept>
-<rtept lat="15.030606" lon="120.229740">
-<ele>100.595093</ele>
-<time>2004-09-09T23:14:06Z</time>
-</rtept>
-<rtept lat="15.029833" lon="120.229611">
-<ele>101.556396</ele>
-<time>2004-09-09T23:15:16Z</time>
-</rtept>
-<rtept lat="15.029318" lon="120.229418">
-<ele>100.114502</ele>
-<time>2004-09-09T23:15:56Z</time>
-</rtept>
-<rtept lat="15.029104" lon="120.229397">
-<ele>99.153076</ele>
-<time>2004-09-09T23:16:15Z</time>
-</rtept>
-<rtept lat="15.028782" lon="120.229247">
-<ele>99.633789</ele>
-<time>2004-09-09T23:16:44Z</time>
-</rtept>
-<rtept lat="15.028546" lon="120.229204">
-<ele>98.672485</ele>
-<time>2004-09-09T23:17:01Z</time>
-</rtept>
-<rtept lat="15.028288" lon="120.229268">
-<ele>98.191895</ele>
-<time>2004-09-09T23:17:21Z</time>
-</rtept>
-<rtept lat="15.028245" lon="120.229268">
-<ele>97.711182</ele>
-<time>2004-09-09T23:17:26Z</time>
-</rtept>
-<rtept lat="15.028181" lon="120.229225">
-<ele>97.230469</ele>
-<time>2004-09-09T23:17:41Z</time>
-</rtept>
-<rtept lat="15.028074" lon="120.229096">
-<ele>97.711182</ele>
-<time>2004-09-09T23:18:08Z</time>
-</rtept>
-<rtept lat="15.027966" lon="120.229053">
-<ele>97.230469</ele>
-<time>2004-09-09T23:18:22Z</time>
-</rtept>
-<rtept lat="15.027838" lon="120.229011">
-<ele>96.749878</ele>
-<time>2004-09-09T23:18:33Z</time>
-</rtept>
-<rtept lat="15.027494" lon="120.228989">
-<ele>96.749878</ele>
-<time>2004-09-09T23:19:09Z</time>
-</rtept>
-<rtept lat="15.027344" lon="120.228946">
-<ele>96.269287</ele>
-<time>2004-09-09T23:19:20Z</time>
-</rtept>
-<rtept lat="15.027194" lon="120.228732">
-<ele>96.269287</ele>
-<time>2004-09-09T23:19:40Z</time>
-</rtept>
-<rtept lat="15.026979" lon="120.228624">
-<ele>96.749878</ele>
-<time>2004-09-09T23:20:00Z</time>
-</rtept>
-<rtept lat="15.026743" lon="120.228646">
-<ele>95.307739</ele>
-<time>2004-09-09T23:20:29Z</time>
-</rtept>
-<rtept lat="15.026507" lon="120.228624">
-<ele>93.865845</ele>
-<time>2004-09-09T23:21:03Z</time>
-</rtept>
-<rtept lat="15.026164" lon="120.228517">
-<ele>94.827148</ele>
-<time>2004-09-09T23:21:49Z</time>
-</rtept>
-<rtept lat="15.025692" lon="120.228496">
-<ele>94.346558</ele>
-<time>2004-09-09T23:22:23Z</time>
-</rtept>
-<rtept lat="15.025198" lon="120.228345">
-<ele>93.865845</ele>
-<time>2004-09-09T23:23:01Z</time>
-</rtept>
-<rtept lat="15.024984" lon="120.228324">
-<ele>94.346558</ele>
-<time>2004-09-09T23:23:17Z</time>
-</rtept>
-<rtept lat="15.024705" lon="120.228260">
-<ele>93.385132</ele>
-<time>2004-09-09T23:23:38Z</time>
-</rtept>
-<rtept lat="15.024126" lon="120.228002">
-<ele>93.865845</ele>
-<time>2004-09-09T23:24:22Z</time>
-</rtept>
-<rtept lat="15.024061" lon="120.227959">
-<ele>94.346558</ele>
-<time>2004-09-09T23:24:28Z</time>
-</rtept>
-<rtept lat="15.023997" lon="120.227852">
-<ele>93.865845</ele>
-<time>2004-09-09T23:24:37Z</time>
-</rtept>
-<rtept lat="15.023718" lon="120.227787">
-<ele>93.385132</ele>
-<time>2004-09-09T23:24:59Z</time>
-</rtept>
-<rtept lat="15.023460" lon="120.227787">
-<ele>92.904541</ele>
-<time>2004-09-09T23:25:18Z</time>
-</rtept>
-<rtept lat="15.023332" lon="120.227787">
-<ele>92.904541</ele>
-<time>2004-09-09T23:25:28Z</time>
-</rtept>
-<rtept lat="15.023053" lon="120.227723">
-<ele>92.904541</ele>
-<time>2004-09-09T23:25:49Z</time>
-</rtept>
-<rtept lat="15.022838" lon="120.227616">
-<ele>91.943237</ele>
-<time>2004-09-09T23:26:07Z</time>
-</rtept>
-<rtept lat="15.022345" lon="120.227230">
-<ele>90.501343</ele>
-<time>2004-09-09T23:26:51Z</time>
-</rtept>
-<rtept lat="15.021808" lon="120.226994">
-<ele>90.020630</ele>
-<time>2004-09-09T23:27:34Z</time>
-</rtept>
-<rtept lat="15.021508" lon="120.226843">
-<ele>89.059326</ele>
-<time>2004-09-09T23:27:57Z</time>
-</rtept>
-<rtept lat="15.021207" lon="120.226758">
-<ele>90.020630</ele>
-<time>2004-09-09T23:28:19Z</time>
-</rtept>
-<rtept lat="15.020885" lon="120.226307">
-<ele>88.578735</ele>
-<time>2004-09-09T23:29:02Z</time>
-</rtept>
-<rtept lat="15.020757" lon="120.226200">
-<ele>90.020630</ele>
-<time>2004-09-09T23:29:16Z</time>
-</rtept>
-<rtept lat="15.020392" lon="120.225964">
-<ele>88.578735</ele>
-<time>2004-09-09T23:29:51Z</time>
-</rtept>
-<rtept lat="15.020263" lon="120.225770">
-<ele>88.578735</ele>
-<time>2004-09-09T23:30:21Z</time>
-</rtept>
-<rtept lat="15.019898" lon="120.225384">
-<ele>86.656006</ele>
-<time>2004-09-09T23:31:00Z</time>
-</rtept>
-<rtept lat="15.019598" lon="120.225148">
-<ele>87.136597</ele>
-<time>2004-09-09T23:31:38Z</time>
-</rtept>
-<rtept lat="15.019362" lon="120.224891">
-<ele>87.617188</ele>
-<time>2004-09-09T23:32:28Z</time>
-</rtept>
-<rtept lat="15.019104" lon="120.224805">
-<ele>88.098022</ele>
-<time>2004-09-09T23:33:04Z</time>
-</rtept>
-<rtept lat="15.018568" lon="120.224719">
-<ele>87.136597</ele>
-<time>2004-09-09T23:33:44Z</time>
-</rtept>
-<rtept lat="15.018375" lon="120.224633">
-<ele>87.136597</ele>
-<time>2004-09-09T23:34:00Z</time>
-</rtept>
-<rtept lat="15.018311" lon="120.224633">
-<ele>86.175293</ele>
-<time>2004-09-09T23:34:05Z</time>
-</rtept>
-<rtept lat="15.017774" lon="120.224655">
-<ele>89.059326</ele>
-<time>2004-09-09T23:34:46Z</time>
-</rtept>
-<rtept lat="15.017409" lon="120.224504">
-<ele>86.175293</ele>
-<time>2004-09-09T23:35:19Z</time>
-</rtept>
-<rtept lat="15.016787" lon="120.224462">
-<ele>86.175293</ele>
-<time>2004-09-09T23:36:10Z</time>
-</rtept>
-<rtept lat="15.016615" lon="120.224419">
-<ele>85.213989</ele>
-<time>2004-09-09T23:36:59Z</time>
-</rtept>
-<rtept lat="15.016315" lon="120.224097">
-<ele>84.733398</ele>
-<time>2004-09-09T23:37:39Z</time>
-</rtept>
-<rtept lat="15.015972" lon="120.223818">
-<ele>83.771973</ele>
-<time>2004-09-09T23:38:14Z</time>
-</rtept>
-<rtept lat="15.015736" lon="120.223689">
-<ele>83.771973</ele>
-<time>2004-09-09T23:38:46Z</time>
-</rtept>
-<rtept lat="15.015564" lon="120.223625">
-<ele>84.733398</ele>
-<time>2004-09-09T23:39:31Z</time>
-</rtept>
-<rtept lat="15.015500" lon="120.223625">
-<ele>84.252686</ele>
-<time>2004-09-09T23:39:46Z</time>
-</rtept>
-<rtept lat="15.015435" lon="120.223582">
-<ele>84.733398</ele>
-<time>2004-09-09T23:39:58Z</time>
-</rtept>
-<rtept lat="15.015113" lon="120.223346">
-<ele>84.733398</ele>
-<time>2004-09-09T23:40:35Z</time>
-</rtept>
-<rtept lat="15.015006" lon="120.223174">
-<ele>85.694580</ele>
-<time>2004-09-09T23:40:51Z</time>
-</rtept>
-<rtept lat="15.014813" lon="120.222766">
-<ele>83.771973</ele>
-<time>2004-09-09T23:41:31Z</time>
-</rtept>
-<rtept lat="15.014770" lon="120.222487">
-<ele>84.252686</ele>
-<time>2004-09-09T23:41:53Z</time>
-</rtept>
-<rtept lat="15.014749" lon="120.222337">
-<ele>82.810791</ele>
-<time>2004-09-09T23:42:14Z</time>
-</rtept>
-<rtept lat="15.014641" lon="120.221930">
-<ele>84.733398</ele>
-<time>2004-09-09T23:42:49Z</time>
-</rtept>
-<rtept lat="15.014448" lon="120.222015">
-<ele>85.694580</ele>
-<time>2004-09-09T23:43:06Z</time>
-</rtept>
-<rtept lat="15.014427" lon="120.222230">
-<ele>86.175293</ele>
-<time>2004-09-09T23:43:22Z</time>
-</rtept>
-<rtept lat="15.014319" lon="120.222273">
-<ele>86.175293</ele>
-<time>2004-09-09T23:43:35Z</time>
-</rtept>
-<rtept lat="15.014277" lon="120.222251">
-<ele>86.656006</ele>
-<time>2004-09-09T23:43:39Z</time>
-</rtept>
-<rtept lat="15.014148" lon="120.222101">
-<ele>86.175293</ele>
-<time>2004-09-09T23:43:58Z</time>
-</rtept>
-<rtept lat="15.013912" lon="120.221908">
-<ele>87.617188</ele>
-<time>2004-09-09T23:44:39Z</time>
-</rtept>
-<rtept lat="15.013826" lon="120.221736">
-<ele>89.539917</ele>
-<time>2004-09-09T23:44:57Z</time>
-</rtept>
-<rtept lat="15.013268" lon="120.221350">
-<ele>90.020630</ele>
-<time>2004-09-09T23:45:51Z</time>
-</rtept>
-<rtept lat="15.013075" lon="120.220857">
-<ele>90.501343</ele>
-<time>2004-09-09T23:46:40Z</time>
-</rtept>
-<rtept lat="15.013011" lon="120.220599">
-<ele>90.981934</ele>
-<time>2004-09-09T23:47:01Z</time>
-</rtept>
-<rtept lat="15.012753" lon="120.220063">
-<ele>90.501343</ele>
-<time>2004-09-09T23:47:45Z</time>
-</rtept>
-<rtept lat="15.012732" lon="120.219998">
-<ele>90.981934</ele>
-<time>2004-09-09T23:47:59Z</time>
-</rtept>
-<rtept lat="15.012753" lon="120.219870">
-<ele>91.462524</ele>
-<time>2004-09-09T23:48:36Z</time>
-</rtept>
-<rtept lat="15.012560" lon="120.219569">
-<ele>90.501343</ele>
-<time>2004-09-09T23:49:00Z</time>
-</rtept>
-<rtept lat="15.012496" lon="120.219419">
-<ele>90.501343</ele>
-<time>2004-09-09T23:49:20Z</time>
-</rtept>
-<rtept lat="15.012045" lon="120.219097">
-<ele>90.501343</ele>
-<time>2004-09-09T23:50:19Z</time>
-</rtept>
-<rtept lat="15.011959" lon="120.218990">
-<ele>90.501343</ele>
-<time>2004-09-09T23:50:32Z</time>
-</rtept>
-<rtept lat="15.011873" lon="120.218925">
-<ele>90.501343</ele>
-<time>2004-09-09T23:50:45Z</time>
-</rtept>
-<rtept lat="15.011809" lon="120.218818">
-<ele>90.020630</ele>
-<time>2004-09-09T23:51:07Z</time>
-</rtept>
-<rtept lat="15.011337" lon="120.218518">
-<ele>90.501343</ele>
-<time>2004-09-09T23:51:50Z</time>
-</rtept>
-<rtept lat="15.010564" lon="120.218046">
-<ele>89.059326</ele>
-<time>2004-09-09T23:52:56Z</time>
-</rtept>
-<rtept lat="15.010328" lon="120.217874">
-<ele>90.020630</ele>
-<time>2004-09-09T23:53:17Z</time>
-</rtept>
-<rtept lat="15.010200" lon="120.217595">
-<ele>89.059326</ele>
-<time>2004-09-09T23:53:39Z</time>
-</rtept>
-<rtept lat="15.009985" lon="120.217359">
-<ele>89.059326</ele>
-<time>2004-09-09T23:54:03Z</time>
-</rtept>
-<rtept lat="15.009727" lon="120.217230">
-<ele>90.501343</ele>
-<time>2004-09-09T23:54:26Z</time>
-</rtept>
-<rtept lat="15.009470" lon="120.217187">
-<ele>90.501343</ele>
-<time>2004-09-09T23:54:44Z</time>
-</rtept>
-<rtept lat="15.008826" lon="120.217102">
-<ele>89.539917</ele>
-<time>2004-09-09T23:55:30Z</time>
-</rtept>
-<rtept lat="15.008633" lon="120.216951">
-<ele>89.059326</ele>
-<time>2004-09-09T23:55:49Z</time>
-</rtept>
-<rtept lat="15.008333" lon="120.216887">
-<ele>89.059326</ele>
-<time>2004-09-09T23:56:11Z</time>
-</rtept>
-<rtept lat="15.007989" lon="120.216844">
-<ele>88.578735</ele>
-<time>2004-09-09T23:56:37Z</time>
-</rtept>
-<rtept lat="15.007753" lon="120.216908">
-<ele>88.578735</ele>
-<time>2004-09-09T23:56:55Z</time>
-</rtept>
-<rtept lat="15.007582" lon="120.217016">
-<ele>87.136597</ele>
-<time>2004-09-09T23:57:16Z</time>
-</rtept>
-<rtept lat="15.007303" lon="120.216908">
-<ele>86.175293</ele>
-<time>2004-09-09T23:57:43Z</time>
-</rtept>
-<rtept lat="15.007174" lon="120.216930">
-<ele>86.175293</ele>
-<time>2004-09-09T23:57:53Z</time>
-</rtept>
-<rtept lat="15.007110" lon="120.216908">
-<ele>82.330078</ele>
-<time>2004-09-09T23:58:03Z</time>
-</rtept>
-<rtept lat="15.007110" lon="120.216908">
-<ele>86.656006</ele>
-<time>2004-09-09T23:58:04Z</time>
-</rtept>
-<rtept lat="15.006959" lon="120.216823">
-<ele>87.136597</ele>
-<time>2004-09-09T23:58:20Z</time>
-</rtept>
-<rtept lat="15.006723" lon="120.216715">
-<ele>86.656006</ele>
-<time>2004-09-09T23:58:38Z</time>
-</rtept>
-<rtept lat="15.005844" lon="120.216072">
-<ele>86.656006</ele>
-<time>2004-09-09T23:59:58Z</time>
-</rtept>
-<rtept lat="15.005565" lon="120.215921">
-<ele>86.175293</ele>
-<time>2004-09-10T00:00:20Z</time>
-</rtept>
-<rtept lat="15.005350" lon="120.215750">
-<ele>86.175293</ele>
-<time>2004-09-10T00:00:40Z</time>
-</rtept>
-<rtept lat="15.004535" lon="120.214999">
-<ele>84.733398</ele>
-<time>2004-09-10T00:02:00Z</time>
-</rtept>
-<rtept lat="15.004320" lon="120.214849">
-<ele>84.733398</ele>
-<time>2004-09-10T00:02:19Z</time>
-</rtept>
-<rtept lat="15.004084" lon="120.214591">
-<ele>84.252686</ele>
-<time>2004-09-10T00:02:43Z</time>
-</rtept>
-<rtept lat="15.003977" lon="120.214527">
-<ele>84.733398</ele>
-<time>2004-09-10T00:02:58Z</time>
-</rtept>
-<rtept lat="15.003741" lon="120.214269">
-<ele>84.252686</ele>
-<time>2004-09-10T00:03:38Z</time>
-</rtept>
-<rtept lat="15.003526" lon="120.214097">
-<ele>84.252686</ele>
-<time>2004-09-10T00:04:15Z</time>
-</rtept>
-<rtept lat="15.003312" lon="120.213926">
-<ele>83.291382</ele>
-<time>2004-09-10T00:04:34Z</time>
-</rtept>
-<rtept lat="15.003161" lon="120.213754">
-<ele>83.291382</ele>
-<time>2004-09-10T00:04:57Z</time>
-</rtept>
-<rtept lat="15.003119" lon="120.213711">
-<ele>81.849365</ele>
-<time>2004-09-10T00:05:13Z</time>
-</rtept>
-<rtept lat="15.003011" lon="120.213647">
-<ele>82.330078</ele>
-<time>2004-09-10T00:05:41Z</time>
-</rtept>
-<rtept lat="15.002711" lon="120.213583">
-<ele>81.849365</ele>
-<time>2004-09-10T00:06:15Z</time>
-</rtept>
-<rtept lat="15.002153" lon="120.213432">
-<ele>84.252686</ele>
-<time>2004-09-10T00:07:12Z</time>
-</rtept>
-<rtept lat="15.001574" lon="120.213132">
-<ele>83.291382</ele>
-<time>2004-09-10T00:08:06Z</time>
-</rtept>
-<rtept lat="15.001295" lon="120.213025">
-<ele>82.810791</ele>
-<time>2004-09-10T00:08:28Z</time>
-</rtept>
-<rtept lat="15.001037" lon="120.212917">
-<ele>83.291382</ele>
-<time>2004-09-10T00:08:49Z</time>
-</rtept>
-<rtept lat="15.000801" lon="120.212767">
-<ele>84.733398</ele>
-<time>2004-09-10T00:09:08Z</time>
-</rtept>
-<rtept lat="15.000222" lon="120.212553">
-<ele>84.252686</ele>
-<time>2004-09-10T00:09:55Z</time>
-</rtept>
-<rtept lat="14.999964" lon="120.212510">
-<ele>83.771973</ele>
-<time>2004-09-10T00:10:14Z</time>
-</rtept>
-<rtept lat="14.999514" lon="120.212274">
-<ele>83.291382</ele>
-<time>2004-09-10T00:10:50Z</time>
-</rtept>
-<rtept lat="14.999342" lon="120.212102">
-<ele>83.291382</ele>
-<time>2004-09-10T00:11:08Z</time>
-</rtept>
-<rtept lat="14.999213" lon="120.211952">
-<ele>84.252686</ele>
-<time>2004-09-10T00:11:23Z</time>
-</rtept>
-<rtept lat="14.998977" lon="120.211802">
-<ele>83.771973</ele>
-<time>2004-09-10T00:11:42Z</time>
-</rtept>
-<rtept lat="14.998548" lon="120.211329">
-<ele>81.368774</ele>
-<time>2004-09-10T00:12:27Z</time>
-</rtept>
-<rtept lat="14.998097" lon="120.210857">
-<ele>80.888184</ele>
-<time>2004-09-10T00:13:16Z</time>
-</rtept>
-<rtept lat="14.998033" lon="120.210342">
-<ele>80.407471</ele>
-<time>2004-09-10T00:13:59Z</time>
-</rtept>
-<rtept lat="14.998012" lon="120.210364">
-<ele>80.888184</ele>
-<time>2004-09-10T00:14:06Z</time>
-</rtept>
-<rtept lat="14.998033" lon="120.210321">
-<ele>81.849365</ele>
-<time>2004-09-10T00:14:09Z</time>
-</rtept>
-<rtept lat="14.997904" lon="120.210106">
-<ele>79.926636</ele>
-<time>2004-09-10T00:14:28Z</time>
-</rtept>
-<rtept lat="14.997904" lon="120.209849">
-<ele>80.407471</ele>
-<time>2004-09-10T00:14:47Z</time>
-</rtept>
-<rtept lat="14.997411" lon="120.209699">
-<ele>78.484741</ele>
-<time>2004-09-10T00:16:12Z</time>
-</rtept>
-<rtept lat="14.997218" lon="120.209720">
-<ele>78.484741</ele>
-<time>2004-09-10T00:16:45Z</time>
-</rtept>
-<rtept lat="14.997110" lon="120.209699">
-<ele>78.004028</ele>
-<time>2004-09-10T00:17:02Z</time>
-</rtept>
-<rtept lat="14.996939" lon="120.209613">
-<ele>78.484741</ele>
-<time>2004-09-10T00:17:23Z</time>
-</rtept>
-<rtept lat="14.996789" lon="120.209484">
-<ele>78.484741</ele>
-<time>2004-09-10T00:17:41Z</time>
-</rtept>
-<rtept lat="14.996338" lon="120.209270">
-<ele>78.004028</ele>
-<time>2004-09-10T00:18:37Z</time>
-</rtept>
-<rtept lat="14.996037" lon="120.209205">
-<ele>78.004028</ele>
-<time>2004-09-10T00:19:23Z</time>
-</rtept>
-<rtept lat="14.995866" lon="120.209119">
-<ele>78.484741</ele>
-<time>2004-09-10T00:19:39Z</time>
-</rtept>
-<rtept lat="14.995244" lon="120.208712">
-<ele>77.523438</ele>
-<time>2004-09-10T00:20:55Z</time>
-</rtept>
-<rtept lat="14.995179" lon="120.208626">
-<ele>77.523438</ele>
-<time>2004-09-10T00:21:05Z</time>
-</rtept>
-<rtept lat="14.994943" lon="120.208454">
-<ele>78.004028</ele>
-<time>2004-09-10T00:21:25Z</time>
-</rtept>
-<rtept lat="14.994450" lon="120.208089">
-<ele>77.523438</ele>
-<time>2004-09-10T00:22:14Z</time>
-</rtept>
-<rtept lat="14.994278" lon="120.207918">
-<ele>77.523438</ele>
-<time>2004-09-10T00:22:34Z</time>
-</rtept>
-<rtept lat="14.994106" lon="120.207832">
-<ele>77.042847</ele>
-<time>2004-09-10T00:23:11Z</time>
-</rtept>
-<rtept lat="14.993935" lon="120.207703">
-<ele>76.562134</ele>
-<time>2004-09-10T00:23:29Z</time>
-</rtept>
-<rtept lat="14.993763" lon="120.207574">
-<ele>77.042847</ele>
-<time>2004-09-10T00:23:48Z</time>
-</rtept>
-<rtept lat="14.993613" lon="120.207381">
-<ele>77.042847</ele>
-<time>2004-09-10T00:24:08Z</time>
-</rtept>
-<rtept lat="14.992926" lon="120.206866">
-<ele>77.042847</ele>
-<time>2004-09-10T00:25:19Z</time>
-</rtept>
-<rtept lat="14.991510" lon="120.205643">
-<ele>76.562134</ele>
-<time>2004-09-10T00:27:46Z</time>
-</rtept>
-<rtept lat="14.991081" lon="120.205407">
-<ele>77.042847</ele>
-<time>2004-09-10T00:28:27Z</time>
-</rtept>
-<rtept lat="14.990845" lon="120.205214">
-<ele>77.523438</ele>
-<time>2004-09-10T00:28:50Z</time>
-</rtept>
-<rtept lat="14.990609" lon="120.204999">
-<ele>78.484741</ele>
-<time>2004-09-10T00:29:14Z</time>
-</rtept>
-<rtept lat="14.990137" lon="120.204592">
-<ele>78.004028</ele>
-<time>2004-09-10T00:30:01Z</time>
-</rtept>
-<rtept lat="14.989836" lon="120.204377">
-<ele>77.042847</ele>
-<time>2004-09-10T00:30:28Z</time>
-</rtept>
-<rtept lat="14.989343" lon="120.203991">
-<ele>76.562134</ele>
-<time>2004-09-10T00:31:16Z</time>
-</rtept>
-<rtept lat="14.989171" lon="120.203819">
-<ele>76.562134</ele>
-<time>2004-09-10T00:31:37Z</time>
-</rtept>
-<rtept lat="14.988956" lon="120.203669">
-<ele>76.562134</ele>
-<time>2004-09-10T00:32:11Z</time>
-</rtept>
-<rtept lat="14.988849" lon="120.203540">
-<ele>76.562134</ele>
-<time>2004-09-10T00:32:34Z</time>
-</rtept>
-<rtept lat="14.988613" lon="120.203326">
-<ele>76.562134</ele>
-<time>2004-09-10T00:33:07Z</time>
-</rtept>
-<rtept lat="14.988506" lon="120.203218">
-<ele>77.042847</ele>
-<time>2004-09-10T00:33:25Z</time>
-</rtept>
-<rtept lat="14.987991" lon="120.202768">
-<ele>76.081421</ele>
-<time>2004-09-10T00:34:25Z</time>
-</rtept>
-<rtept lat="14.987819" lon="120.202553">
-<ele>76.081421</ele>
-<time>2004-09-10T00:34:48Z</time>
-</rtept>
-<rtept lat="14.987476" lon="120.202274">
-<ele>76.562134</ele>
-<time>2004-09-10T00:35:33Z</time>
-</rtept>
-<rtept lat="14.987390" lon="120.202167">
-<ele>75.600830</ele>
-<time>2004-09-10T00:36:03Z</time>
-</rtept>
-<rtept lat="14.987111" lon="120.201952">
-<ele>76.562134</ele>
-<time>2004-09-10T00:36:41Z</time>
-</rtept>
-<rtept lat="14.986811" lon="120.201631">
-<ele>76.562134</ele>
-<time>2004-09-10T00:37:31Z</time>
-</rtept>
-<rtept lat="14.986575" lon="120.201459">
-<ele>75.600830</ele>
-<time>2004-09-10T00:37:54Z</time>
-</rtept>
-<rtept lat="14.986339" lon="120.201244">
-<ele>76.081421</ele>
-<time>2004-09-10T00:38:19Z</time>
-</rtept>
-<rtept lat="14.986081" lon="120.201073">
-<ele>76.562134</ele>
-<time>2004-09-10T00:38:42Z</time>
-</rtept>
-<rtept lat="14.985824" lon="120.200880">
-<ele>76.081421</ele>
-<time>2004-09-10T00:39:08Z</time>
-</rtept>
-<rtept lat="14.985631" lon="120.200665">
-<ele>75.600830</ele>
-<time>2004-09-10T00:39:30Z</time>
-</rtept>
-<rtept lat="14.985437" lon="120.200472">
-<ele>75.600830</ele>
-<time>2004-09-10T00:39:51Z</time>
-</rtept>
-<rtept lat="14.985223" lon="120.200322">
-<ele>74.639526</ele>
-<time>2004-09-10T00:40:14Z</time>
-</rtept>
-<rtept lat="14.984837" lon="120.200064">
-<ele>75.120239</ele>
-<time>2004-09-10T00:40:50Z</time>
-</rtept>
-<rtept lat="14.984622" lon="120.199828">
-<ele>74.639526</ele>
-<time>2004-09-10T00:41:16Z</time>
-</rtept>
-<rtept lat="14.984386" lon="120.199656">
-<ele>74.639526</ele>
-<time>2004-09-10T00:41:39Z</time>
-</rtept>
-<rtept lat="14.984043" lon="120.199227">
-<ele>74.639526</ele>
-<time>2004-09-10T00:42:37Z</time>
-</rtept>
-<rtept lat="14.983699" lon="120.198841">
-<ele>75.120239</ele>
-<time>2004-09-10T00:43:15Z</time>
-</rtept>
-<rtept lat="14.983227" lon="120.198219">
-<ele>75.120239</ele>
-<time>2004-09-10T00:44:20Z</time>
-</rtept>
-<rtept lat="14.982927" lon="120.197918">
-<ele>75.120239</ele>
-<time>2004-09-10T00:44:51Z</time>
-</rtept>
-<rtept lat="14.982777" lon="120.197725">
-<ele>75.120239</ele>
-<time>2004-09-10T00:45:12Z</time>
-</rtept>
-<rtept lat="14.982412" lon="120.197339">
-<ele>75.120239</ele>
-<time>2004-09-10T00:45:53Z</time>
-</rtept>
-<rtept lat="14.982133" lon="120.196931">
-<ele>75.120239</ele>
-<time>2004-09-10T00:46:32Z</time>
-</rtept>
-<rtept lat="14.981983" lon="120.196760">
-<ele>74.639526</ele>
-<time>2004-09-10T00:46:48Z</time>
-</rtept>
-<rtept lat="14.981897" lon="120.196695">
-<ele>75.120239</ele>
-<time>2004-09-10T00:46:58Z</time>
-</rtept>
-<rtept lat="14.981790" lon="120.196545">
-<ele>75.120239</ele>
-<time>2004-09-10T00:47:12Z</time>
-</rtept>
-<rtept lat="14.981382" lon="120.196288">
-<ele>80.888184</ele>
-<time>2004-09-10T00:48:04Z</time>
-</rtept>
-<rtept lat="14.981360" lon="120.196052">
-<ele>78.965454</ele>
-<time>2004-09-10T00:48:22Z</time>
-</rtept>
-<rtept lat="14.981382" lon="120.195816">
-<ele>77.042847</ele>
-<time>2004-09-10T00:48:41Z</time>
-</rtept>
-<rtept lat="14.981403" lon="120.195601">
-<ele>74.158813</ele>
-<time>2004-09-10T00:48:57Z</time>
-</rtept>
-<rtept lat="14.981253" lon="120.195408">
-<ele>71.755493</ele>
-<time>2004-09-10T00:49:16Z</time>
-</rtept>
-<rtept lat="14.980974" lon="120.195022">
-<ele>71.274902</ele>
-<time>2004-09-10T00:49:53Z</time>
-</rtept>
-<rtept lat="14.980781" lon="120.194528">
-<ele>69.832886</ele>
-<time>2004-09-10T00:50:34Z</time>
-</rtept>
-<rtept lat="14.980609" lon="120.193799">
-<ele>69.832886</ele>
-<time>2004-09-10T00:51:33Z</time>
-</rtept>
-<rtept lat="14.980567" lon="120.193627">
-<ele>68.871582</ele>
-<time>2004-09-10T00:51:48Z</time>
-</rtept>
-</rte>
-<trk>
- <name>Only 5 points</name>
-<number>7</number>
-<trkseg>
-<trkpt lat="14.907889" lon="120.558472">
-<ele>28.976929</ele>
-<time>2004-09-10T08:35:38Z</time>
-</trkpt>
-<trkpt lat="14.907975" lon="120.558579">
-<ele>28.976929</ele>
-<time>2004-09-10T08:35:55Z</time>
-</trkpt>
-<trkpt lat="14.908168" lon="120.558879">
-<ele>28.496216</ele>
-<time>2004-09-10T08:36:11Z</time>
-</trkpt>
-<trkpt lat="14.908383" lon="120.559223">
-<ele>28.496216</ele>
-<time>2004-09-10T08:36:32Z</time>
-</trkpt>
-<trkpt lat="14.908597" lon="120.559545">
-<ele>28.015503</ele>
-<time>2004-09-10T08:36:43Z</time>
-</trkpt>
-</trkseg>
-</trk>
-<wpt lat="14.636015547" lon="121.043382715">
- <ele>45.307495</ele>
- <name>001</name>
- <cmt>001</cmt>
- <desc>001</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="14.637198653" lon="121.042653322">
- <ele>50.594727</ele>
- <name>002</name>
- <cmt>002</cmt>
- <desc>002</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="14.640581002" lon="121.043165457">
- <ele>46.989868</ele>
- <name>003</name>
- <cmt>003</cmt>
- <desc>003</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="14.975596117" lon="120.155537082">
- <ele>38.097656</ele>
- <name>004</name>
- <cmt>004</cmt>
- <desc>004</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.037303017" lon="120.236538453">
- <ele>147.687134</ele>
- <name>005</name>
- <cmt>005</cmt>
- <desc>005</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.037305867" lon="120.236548427">
- <ele>145.043579</ele>
- <name>006</name>
- <cmt>006</cmt>
- <desc>006</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038105585" lon="120.237012533">
- <ele>160.905151</ele>
- <name>007</name>
- <cmt>007</cmt>
- <desc>007</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038478328" lon="120.237643858">
- <ele>165.231079</ele>
- <name>008</name>
- <cmt>008</cmt>
- <desc>008</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038991300" lon="120.238984879">
- <ele>173.882935</ele>
- <name>009</name>
- <cmt>009</cmt>
- <desc>009</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.039099846" lon="120.239190236">
- <ele>166.192383</ele>
- <name>010</name>
- <cmt>010</cmt>
- <desc>010</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.040223943" lon="120.241263332">
- <ele>175.324829</ele>
- <name>011</name>
- <cmt>011</cmt>
- <desc>011</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.042621084" lon="120.247956365">
- <ele>186.860474</ele>
- <name>012</name>
- <cmt>012</cmt>
- <desc>012</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.043179905" lon="120.253084749">
- <ele>208.730347</ele>
- <name>013</name>
- <cmt>013</cmt>
- <desc>013</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.043297336" lon="120.254095523">
- <ele>211.374023</ele>
- <name>014</name>
- <cmt>014</cmt>
- <desc>014</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.043296246" lon="120.254105665">
- <ele>213.296631</ele>
- <name>015</name>
- <cmt>015</cmt>
- <desc>015</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.042568864" lon="120.247880174">
- <ele>189.984863</ele>
- <name>016</name>
- <cmt>016</cmt>
- <desc>016</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.042486135" lon="120.246971911">
- <ele>187.100830</ele>
- <name>017</name>
- <cmt>017</cmt>
- <desc>017</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.042233923" lon="120.245966502">
- <ele>185.418579</ele>
- <name>018</name>
- <cmt>018</cmt>
- <desc>018</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.041693626" lon="120.244808039">
- <ele>181.092651</ele>
- <name>019</name>
- <cmt>019</cmt>
- <desc>019</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.041558258" lon="120.244476954">
- <ele>179.410400</ele>
- <name>020</name>
- <cmt>020</cmt>
- <desc>020</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.041360026" lon="120.243841019">
- <ele>178.689453</ele>
- <name>021</name>
- <cmt>021</cmt>
- <desc>021</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.040351683" lon="120.241488637">
- <ele>176.526489</ele>
- <name>022</name>
- <cmt>022</cmt>
- <desc>022</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.040215813" lon="120.241269115">
- <ele>177.247437</ele>
- <name>023</name>
- <cmt>023</cmt>
- <desc>023</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.039894953" lon="120.240607113">
- <ele>173.161987</ele>
- <name>024</name>
- <cmt>024</cmt>
- <desc>024</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.039318446" lon="120.239687199">
- <ele>170.277832</ele>
- <name>025</name>
- <cmt>025</cmt>
- <desc>025</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.039147874" lon="120.239404980">
- <ele>170.037598</ele>
- <name>026</name>
- <cmt>026</cmt>
- <desc>026</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.039016195" lon="120.239027124">
- <ele>169.797241</ele>
- <name>027</name>
- <cmt>027</cmt>
- <desc>027</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038951570" lon="120.238857307">
- <ele>169.316650</ele>
- <name>028</name>
- <cmt>028</cmt>
- <desc>028</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038922066" lon="120.238720765">
- <ele>169.076294</ele>
- <name>029</name>
- <cmt>029</cmt>
- <desc>029</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038786530" lon="120.238445755">
- <ele>164.510010</ele>
- <name>030</name>
- <cmt>030</cmt>
- <desc>030</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038752332" lon="120.238321787">
- <ele>164.750366</ele>
- <name>031</name>
- <cmt>031</cmt>
- <desc>031</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038600871" lon="120.237971172">
- <ele>166.432617</ele>
- <name>032</name>
- <cmt>032</cmt>
- <desc>032</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038484363" lon="120.237681828">
- <ele>165.711670</ele>
- <name>033</name>
- <cmt>033</cmt>
- <desc>033</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038389480" lon="120.237437915">
- <ele>162.106812</ele>
- <name>034</name>
- <cmt>034</cmt>
- <desc>034</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038236845" lon="120.237119906">
- <ele>157.300293</ele>
- <name>035</name>
- <cmt>035</cmt>
- <desc>035</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038081110" lon="120.236975150">
- <ele>154.175903</ele>
- <name>036</name>
- <cmt>036</cmt>
- <desc>036</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.037884219" lon="120.236842548">
- <ele>152.253296</ele>
- <name>037</name>
- <cmt>037</cmt>
- <desc>037</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.037822025" lon="120.236781947">
- <ele>152.734009</ele>
- <name>038</name>
- <cmt>038</cmt>
- <desc>038</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.037694452" lon="120.236648759">
- <ele>148.167847</ele>
- <name>039</name>
- <cmt>039</cmt>
- <desc>039</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.037404103" lon="120.236415155">
- <ele>142.880615</ele>
- <name>040</name>
- <cmt>040</cmt>
- <desc>040</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.036643613" lon="120.235724067">
- <ele>131.344849</ele>
- <name>041</name>
- <cmt>041</cmt>
- <desc>041</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.035957471" lon="120.235749800">
- <ele>131.585205</ele>
- <name>042</name>
- <cmt>042</cmt>
- <desc>042</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.035150293" lon="120.235839151">
- <ele>126.057617</ele>
- <name>043</name>
- <cmt>043</cmt>
- <desc>043</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.034987517" lon="120.235854574">
- <ele>126.297974</ele>
- <name>044</name>
- <cmt>044</cmt>
- <desc>044</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.034929262" lon="120.235940237">
- <ele>127.499634</ele>
- <name>045</name>
- <cmt>045</cmt>
- <desc>045</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.034842342" lon="120.236292612">
- <ele>128.701294</ele>
- <name>046</name>
- <cmt>046</cmt>
- <desc>046</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.034868326" lon="120.236495705">
- <ele>131.585205</ele>
- <name>047</name>
- <cmt>047</cmt>
- <desc>047</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.034914091" lon="120.236638952">
- <ele>130.623901</ele>
- <name>048</name>
- <cmt>048</cmt>
- <desc>048</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.034842929" lon="120.236782283">
- <ele>130.623901</ele>
- <name>049</name>
- <cmt>049</cmt>
- <desc>049</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.035138307" lon="120.237012701">
- <ele>130.143188</ele>
- <name>050</name>
- <cmt>050</cmt>
- <desc>050</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.035181055" lon="120.237215459">
- <ele>133.507812</ele>
- <name>051</name>
- <cmt>051</cmt>
- <desc>051</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.037302515" lon="120.236531328">
- <ele>142.640259</ele>
- <name>052</name>
- <cmt>052</cmt>
- <desc>052</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038081612" lon="120.237016557">
- <ele>153.214600</ele>
- <name>053</name>
- <cmt>053</cmt>
- <desc>053</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.038484028" lon="120.237650061">
- <ele>160.184204</ele>
- <name>054</name>
- <cmt>054</cmt>
- <desc>054</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.039010160" lon="120.239003822">
- <ele>167.874634</ele>
- <name>055</name>
- <cmt>055</cmt>
- <desc>055</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.040213466" lon="120.241269115">
- <ele>174.363525</ele>
- <name>056</name>
- <cmt>056</cmt>
- <desc>056</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.043153167" lon="120.253080474">
- <ele>210.893311</ele>
- <name>057</name>
- <cmt>057</cmt>
- <desc>057</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.043287948" lon="120.254115807">
- <ele>214.017578</ele>
- <name>058</name>
- <cmt>058</cmt>
- <desc>058</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.043408228" lon="120.255108811">
- <ele>210.652954</ele>
- <name>059</name>
- <cmt>059</cmt>
- <desc>059</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.044677416" lon="120.254899012">
- <ele>216.180542</ele>
- <name>060</name>
- <cmt>060</cmt>
- <desc>060</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.043236231" lon="120.254365504">
- <ele>210.893311</ele>
- <name>061</name>
- <cmt>061</cmt>
- <desc>061</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.039282907" lon="120.239687199">
- <ele>169.797241</ele>
- <name>062</name>
- <cmt>062</cmt>
- <desc>062</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.036760792" lon="120.238004448">
- <ele>154.175903</ele>
- <name>063</name>
- <cmt>063</cmt>
- <desc>063</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.035345173" lon="120.237376308">
- <ele>137.593262</ele>
- <name>064</name>
- <cmt>064</cmt>
- <desc>064</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.035234699" lon="120.237213951">
- <ele>134.709473</ele>
- <name>065</name>
- <cmt>065</cmt>
- <desc>065</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.035907766" lon="120.235997736">
- <ele>126.297974</ele>
- <name>066</name>
- <cmt>066</cmt>
- <desc>066</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.035970211" lon="120.235796738">
- <ele>126.538330</ele>
- <name>067</name>
- <cmt>067</cmt>
- <desc>067</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.037343334" lon="120.236459579">
- <ele>144.803223</ele>
- <name>068</name>
- <cmt>068</cmt>
- <desc>068</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.037007639" lon="120.236442396">
- <ele>141.919312</ele>
- <name>069</name>
- <cmt>069</cmt>
- <desc>069</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.036581503" lon="120.236358577">
- <ele>139.515869</ele>
- <name>070</name>
- <cmt>070</cmt>
- <desc>070</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.036247736" lon="120.236462262">
- <ele>143.361206</ele>
- <name>071</name>
- <cmt>071</cmt>
- <desc>071</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.035688411" lon="120.236551194">
- <ele>134.469116</ele>
- <name>072</name>
- <cmt>072</cmt>
- <desc>072</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.035237549" lon="120.236503417">
- <ele>134.228760</ele>
- <name>073</name>
- <cmt>073</cmt>
- <desc>073</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.034895400" lon="120.236642389">
- <ele>135.430420</ele>
- <name>074</name>
- <cmt>074</cmt>
- <desc>074</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.034930268" lon="120.237154271">
- <ele>135.430420</ele>
- <name>075</name>
- <cmt>075</cmt>
- <desc>075</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.034847539" lon="120.235381918">
- <ele>96.978027</ele>
- <name>076</name>
- <cmt>076</cmt>
- <desc>076</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.034693647" lon="120.235394575">
- <ele>112.359009</ele>
- <name>077</name>
- <cmt>077</cmt>
- <desc>077</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.032701520" lon="120.231625903">
- <ele>114.281616</ele>
- <name>078</name>
- <cmt>078</cmt>
- <desc>078</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.031369971" lon="120.230112802">
- <ele>111.157349</ele>
- <name>079</name>
- <cmt>079</cmt>
- <desc>079</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.031269640" lon="120.230063936">
- <ele>110.436401</ele>
- <name>080</name>
- <cmt>080</cmt>
- <desc>080</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.029314896" lon="120.229415931">
- <ele>105.629761</ele>
- <name>081</name>
- <cmt>081</cmt>
- <desc>081</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.028247628" lon="120.229260782">
- <ele>103.226440</ele>
- <name>082</name>
- <cmt>082</cmt>
- <desc>082</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.027997931" lon="120.229063304">
- <ele>101.784546</ele>
- <name>083</name>
- <cmt>083</cmt>
- <desc>083</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.026977602" lon="120.228622919">
- <ele>102.986084</ele>
- <name>084</name>
- <cmt>084</cmt>
- <desc>084</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.026555741" lon="120.228640521">
- <ele>101.784546</ele>
- <name>085</name>
- <cmt>085</cmt>
- <desc>085</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.021198532" lon="120.226751072">
- <ele>93.853760</ele>
- <name>086</name>
- <cmt>086</cmt>
- <desc>086</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.020887312" lon="120.226317560">
- <ele>95.295654</ele>
- <name>087</name>
- <cmt>087</cmt>
- <desc>087</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.020824028" lon="120.226252014">
- <ele>95.055420</ele>
- <name>088</name>
- <cmt>088</cmt>
- <desc>088</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.020084241" lon="120.225583892">
- <ele>87.845459</ele>
- <name>089</name>
- <cmt>089</cmt>
- <desc>089</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.019395584" lon="120.224903030">
- <ele>92.892456</ele>
- <name>090</name>
- <cmt>090</cmt>
- <desc>090</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.017774021" lon="120.224660626">
- <ele>92.892456</ele>
- <name>091</name>
- <cmt>091</cmt>
- <desc>091</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.017061057" lon="120.224452335">
- <ele>90.489136</ele>
- <name>092</name>
- <cmt>092</cmt>
- <desc>092</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.016638860" lon="120.224422915">
- <ele>85.682495</ele>
- <name>093</name>
- <cmt>093</cmt>
- <desc>093</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.016528722" lon="120.224321326">
- <ele>86.884155</ele>
- <name>094</name>
- <cmt>094</cmt>
- <desc>094</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.016059754" lon="120.223885886">
- <ele>88.566528</ele>
- <name>095</name>
- <cmt>095</cmt>
- <desc>095</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.015040850" lon="120.223270738">
- <ele>87.605103</ele>
- <name>096</name>
- <cmt>096</cmt>
- <desc>096</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.014152871" lon="120.222094171">
- <ele>89.287476</ele>
- <name>097</name>
- <cmt>097</cmt>
- <desc>097</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.013247039" lon="120.221332423">
- <ele>92.652100</ele>
- <name>098</name>
- <cmt>098</cmt>
- <desc>098</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.012727026" lon="120.220021661">
- <ele>91.450317</ele>
- <name>099</name>
- <cmt>099</cmt>
- <desc>099</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.012746723" lon="120.219879504">
- <ele>91.450317</ele>
- <name>100</name>
- <cmt>100</cmt>
- <desc>100</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.012489315" lon="120.219430067">
- <ele>91.690674</ele>
- <name>101</name>
- <cmt>101</cmt>
- <desc>101</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.012095952" lon="120.219129324">
- <ele>91.450317</ele>
- <name>102</name>
- <cmt>102</cmt>
- <desc>102</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.011870563" lon="120.218922459">
- <ele>91.690674</ele>
- <name>103</name>
- <cmt>103</cmt>
- <desc>103</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.007610880" lon="120.216987077">
- <ele>88.566528</ele>
- <name>104</name>
- <cmt>104</cmt>
- <desc>104</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.007109391" lon="120.216904096">
- <ele>87.364868</ele>
- <name>105</name>
- <cmt>105</cmt>
- <desc>105</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.003595361" lon="120.214147121">
- <ele>85.682495</ele>
- <name>106</name>
- <cmt>106</cmt>
- <desc>106</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="15.002421224" lon="120.213506240">
- <ele>83.279297</ele>
- <name>107</name>
- <cmt>107</cmt>
- <desc>107</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="14.998089289" lon="120.210867617">
- <ele>79.674438</ele>
- <name>108</name>
- <cmt>108</cmt>
- <desc>108</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="14.997864654" lon="120.209834045">
- <ele>84.480957</ele>
- <name>109</name>
- <cmt>109</cmt>
- <desc>109</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="14.981388599" lon="120.196274891">
- <ele>84.721313</ele>
- <name>110</name>
- <cmt>110</cmt>
- <desc>110</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="14.474465596" lon="120.917379661">
- <ele>5.172729</ele>
- <name>111</name>
- <cmt>111</cmt>
- <desc>111</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="14.942621375" lon="120.938029736">
- <ele>28.965332</ele>
- <name>112</name>
- <cmt>112</cmt>
- <desc>112</desc>
- <sym>Residence</sym>
-</wpt>
-<wpt lat="12.255321192" lon="124.379444299">
- <ele>21.995728</ele>
- <name>113</name>
- <cmt>113</cmt>
- <desc>113</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="38.855549991" lon="-94.799016668">
- <ele>325.049072</ele>
- <name>GARMIN</name>
- <cmt>GARMIN</cmt>
- <desc>GARMIN</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="50.982883293" lon="-1.463899976">
- <ele>35.934692</ele>
- <name>GRMEUR</name>
- <cmt>GRMEUR</cmt>
- <desc>GRMEUR</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="33.330189949" lon="-111.946110008">
- <ele>361.098145</ele>
- <name>GRMPHX</name>
- <cmt>GRMPHX</cmt>
- <desc>GRMPHX</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="25.061783362" lon="121.640266674">
- <ele>38.097656</ele>
- <name>GRMTWN</name>
- <cmt>GRMTWN</cmt>
- <desc>GRMTWN</desc>
- <sym>Flag</sym>
-</wpt>
-<wpt lat="14.636060139" lon="121.043607602">
- <ele>8.296997</ele>
- <name>NEDA4</name>
- <cmt>NEDA4</cmt>
- <desc>NEDA4</desc>
- <sym>Residence</sym>
-</wpt>
-</gpx>
diff --git a/navit/tools/gpx2navit_txt/src/config.h.in b/navit/tools/gpx2navit_txt/src/config.h.in
deleted file mode 100644
index 724d6f656..000000000
--- a/navit/tools/gpx2navit_txt/src/config.h.in
+++ /dev/null
@@ -1,99 +0,0 @@
-/* src/config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define to 1 if you have the `alarm' function. */
-#undef HAVE_ALARM
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `expat' library (-lexpat). */
-#undef HAVE_LIBEXPAT
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define to 1 if you have the `proj' library (-lproj). */
-#undef HAVE_LIBPROJ
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
- to 0 otherwise. */
-#undef HAVE_MALLOC
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `memset' function. */
-#undef HAVE_MEMSET
-
-/* Define to 1 if your system has a GNU libc compatible `realloc' function,
- and to 0 otherwise. */
-#undef HAVE_REALLOC
-
-/* Define to 1 if you have the `sqrt' function. */
-#undef HAVE_SQRT
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-#undef TM_IN_SYS_TIME
-
-/* Version number of package */
-#undef VERSION
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to rpl_malloc if the replacement function should be used. */
-#undef malloc
-
-/* Define to rpl_realloc if the replacement function should be used. */
-#undef realloc
diff --git a/navit/tools/gpx2navit_txt/src/elementControl.c b/navit/tools/gpx2navit_txt/src/elementControl.c
deleted file mode 100644
index 924e10803..000000000
--- a/navit/tools/gpx2navit_txt/src/elementControl.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/**
- * 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 "gpx2navit_txt.h"
-
-void startElementControl(parsedata * pdata, const char *element,
- const char **attr);
-void endElementControl(parsedata * pdata, const char *element);
-
-/*
- * This method controls tag start event.
- * It corrects attributes.
- */
-void
-startElementControl(parsedata * pdata, const char *element,
- const char **attr)
-{
- int i;
- static int isFirstTrk = 1;
- static int isFirstRte = 1;
- static int isFirstPathpt = 1;
- for (i = 0; attr[i]; i += 2) {
- if (!strcmp(attr[i], "lon")) {
- pdata->attr->lon = atof(attr[i + 1]);
- }
- if (!strcmp(attr[i], "lat")) {
- pdata->attr->lat = atof(attr[i + 1]);
- }
- if (!strcmp(attr[i], "minlon")) {
- pdata->attr->minlon = atof(attr[i + 1]);
- }
- if (!strcmp(attr[i], "minlat")) {
- pdata->attr->minlat = atof(attr[i + 1]);
- }
- if (!strcmp(attr[i], "maxlon")) {
- pdata->attr->maxlon = atof(attr[i + 1]);
- }
- if (!strcmp(attr[i], "maxlat")) {
- pdata->attr->maxlat = atof(attr[i + 1]);
- }
- if (!strcmp(attr[i], "author")) {
- strcpy(pdata->attr->author, attr[i + 1]);
- }
- }
- if (pdata->prop->parseTrk) {
- if (!strcmp(element, "trk")) {
- if (isFirstTrk) {
- isFirstTrk = 0;
- }
- }
- if (!strcmp(element, "trkseg")) {
- isFirstPathpt = 1;
- }
- if (!strcmp(element, "trkpt")) {
- if (isFirstPathpt) {
- initPathAttr(pdata->pattr, pdata->attr);
- isFirstPathpt = 0;
- }
- }
- }
- if (pdata->prop->parseRte) {
- if (!strcmp(element, "rte")) {
- if (isFirstRte) {
- isFirstRte = 0;
- isFirstPathpt = 1;
- }
- }
- if (!strcmp(element, "rtept")) {
- if (isFirstPathpt) {
- initPathAttr(pdata->pattr, pdata->attr);
- isFirstPathpt = 0;
- }
- }
- }
-}
-
-/**
- * This method is kicked by tag end event.
- * It corrects char elements when the element tag has some data,
- * then start to convert when tag is top level tag like <wpt>.
- */
-void endElementControl(parsedata * pdata, const char *element)
-{
- static int isFirstWpt = 1;
- static int isFirstTrkAsPoint = 1;
- static int isFirstRteAsPoint = 1;
- /* common elements */
- if (!strcmp(element, "name")) {
- strcpy(pdata->attr->name, pdata->databuf);
- }
- if (!strcmp(element, "cmt")) {
- strcpy(pdata->attr->cmt, pdata->databuf);
- }
- if (!strcmp(element, "desc")) {
- strcpy(pdata->attr->desc, pdata->databuf);
- }
- if (!strcmp(element, "src")) {
- strcpy(pdata->attr->src, pdata->databuf);
- }
- if (!strcmp(element, "link")) {
- strcpy(pdata->attr->link, pdata->databuf);
- }
- if (!strcmp(element, "type")) {
- strcpy(pdata->attr->type, pdata->databuf);
- }
- /* waypoint and metadata elements */
- if (!strcmp(element, "time")) {
- strcpy(pdata->attr->time, pdata->databuf);
- }
- /* route and track point elements */
- if (!strcmp(element, "number")) {
- pdata->attr->number = atoi(pdata->databuf);
- }
- /* waypoint elements */
- if (!strcmp(element, "ele")) {
- pdata->attr->ele = atof(pdata->databuf);
- }
- if (!strcmp(element, "magvar")) {
- pdata->attr->magvar = atof(pdata->databuf);
- }
- if (!strcmp(element, "geoidheight")) {
- pdata->attr->geoidheight = atof(pdata->databuf);
- }
- if (!strcmp(element, "sym")) {
- strcpy(pdata->attr->sym, pdata->databuf);
- }
- if (!strcmp(element, "fix")) {
- strcpy(pdata->attr->fix, pdata->databuf);
- }
- if (!strcmp(element, "sat")) {
- pdata->attr->sat = atoi(pdata->databuf);
- }
- if (!strcmp(element, "hdop")) {
- pdata->attr->hdop = atof(pdata->databuf);
- }
- if (!strcmp(element, "vdop")) {
- pdata->attr->vdop = atof(pdata->databuf);
- }
- if (!strcmp(element, "pdop")) {
- pdata->attr->pdop = atof(pdata->databuf);
- }
- if (!strcmp(element, "ageofdgpsdata")) {
- pdata->attr->ageofdgpsdata = atof(pdata->databuf);
- }
- /* metadata elements */
- if (!strcmp(element, "author")) {
- strcpy(pdata->attr->author, pdata->databuf);
- }
- if (!strcmp(element, "keywords")) {
- strcpy(pdata->attr->keywords, pdata->databuf);
- }
- if (!strcmp(element, "copyright")) {
- strcpy(pdata->attr->copyright, pdata->databuf);
- }
- if (!strcmp(element, "year")) {
- pdata->attr->year = atoi(pdata->databuf);
- }
- if (!strcmp(element, "license")) {
- strcpy(pdata->attr->license, pdata->databuf);
- }
- if (!strcmp(element, "bounds")) {
- /* none */
- }
- /* top elements */
- /* set waypoint data */
- if (!strcmp(element, "wpt")) {
- if (pdata->prop->parseWpt) {
- if (isFirstWpt) {
- isFirstWpt = 0;
- }
- //todo
- if (DEBUG) {
- fprintf(stderr,"\neectrl wpt %s %s",
- pdata->attr->desc,pdata->attr->name);
- }
- setWpt(pdata);
- wipeAttr(pdata->attr);
- }
- }
- /* set trackpoint data */
- if (!strcmp(element, "trkpt")) {
- if (pdata->prop->parseTrk) {
- setPathData(pdata->pattr, pdata->attr);
- if (!pdata->prop->isFast)
- setPathInterval(pdata);
- }
- /* set trackpoint data as point */
- if (pdata->prop->isPoint) {
- if (isFirstTrkAsPoint) {
- isFirstTrkAsPoint = 0;
- }
- setWpt(pdata);
- }
- wipeAttr(pdata->attr);
- }
- /* write trackpoint */
- if (!strcmp(element, "trkseg")) {
- if (pdata->prop->parseTrk) {
- setPath( pdata);
- }
- }
- /* set route data */
- if (!strcmp(element, "rtept")) {
- if (pdata->prop->parseRte) {
- setPathData(pdata->pattr, pdata->attr);
- if (!pdata->prop->isFast)
- setPathInterval(pdata);
- }
- /* set route data as point */
- if (pdata->prop->isPoint) {
- if (isFirstRteAsPoint) {
- isFirstRteAsPoint = 0;
- }
- setWpt( pdata);
- }
- wipeAttr(pdata->attr);
- }
- /* write route */
- if (!strcmp(element, "rte")) {
- if (pdata->prop->parseRte) {
- setPath( pdata);
- }
- }
- if (!strcmp(element, "metadata")) {
- setMetadata(pdata);
- wipeAttr(pdata->attr);
- }
- pdata->bufptr = NULL; //reset bufptr now
-}
diff --git a/navit/tools/gpx2navit_txt/src/emess.h b/navit/tools/gpx2navit_txt/src/emess.h
deleted file mode 100644
index 7c0375bdc..000000000
--- a/navit/tools/gpx2navit_txt/src/emess.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * 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.
- */
-
-/* Error message processing header file */
-#ifndef EMESS_H
-#define EMESS_H
-
-#ifndef lint
-/*static char EMESS_H_ID[] = "@(#)emess.h 4.1 93/03/08 GIE REL";*/
-#endif
-
-struct EMESS {
- char *File_name, /* input file name */
- *Prog_name; /* name of program */
- int File_line; /* approximate line read
- where error occured */
-};
-
-#ifdef EMESS_ROUTINE /* use type */
-/* for emess procedure */
-struct EMESS emess_dat = { (char *)0, (char *)0, 0 };
-
-#ifdef sun /* Archaic SunOs 4.1.1, etc. */
-extern char *sys_errlist[];
-#define strerror(n) (sys_errlist[n])
-#endif
-
-#else /* for for calling procedures */
-
-extern struct EMESS emess_dat;
-void emess(int, char *, ...);
-
-#endif /* use type */
-
-#endif /* end EMESS_H */
diff --git a/navit/tools/gpx2navit_txt/src/errorcode.h b/navit/tools/gpx2navit_txt/src/errorcode.h
deleted file mode 100644
index f12d6cffd..000000000
--- a/navit/tools/gpx2navit_txt/src/errorcode.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * 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.
- */
-
-#ifndef ERRORCODE_H
-#define ERRORCODE_H
-
-/* os level */
-#define ERR_OUTOFMEMORY 11
-#define ERR_CANNOTOPEN 12
-#define ERR_CREATEFILE 13
-#define ERR_READERROR 14
-#define ERR_FREEFAILED 15
-/* option */
-#define ERR_NOARGS 21
-#define ERR_WRONGOPTION 22
-#define ERR_OPTIONCONFRICT 23
-/* parser */
-#define ERR_ISNOTGPX 31
-#define ERR_PARSEERROR 32
-/* unit */
-#define ERR_ELLPSUNIT 41
-#define ERR_LENGTHUNIT 42
-#define ERR_TIMEUNIT 43
-
-#endif /* ERRORCODE_H */
diff --git a/navit/tools/gpx2navit_txt/src/geod_for.c b/navit/tools/gpx2navit_txt/src/geod_for.c
deleted file mode 100644
index ebff3bcb4..000000000
--- a/navit/tools/gpx2navit_txt/src/geod_for.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/**
- * 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.
- */
-
-#ifndef lint
-static const char SCCSID[] =
- "@(#)geod_for.c 4.6 95/09/23 GIE REL";
-#endif
-# include "projects.h"
-# include "geodesic.h"
-# define MERI_TOL 1e-9
-static double th1, costh1, sinth1, sina12, cosa12, M, N, c1, c2, D, P, s1;
-static int merid, signS;
-void geod_pre(void)
-{
- al12 = adjlon(al12); /* reduce to +- 0-PI */
- signS = fabs(al12) > HALFPI ? 1 : 0;
- th1 = ellipse ? atan(onef * tan(phi1)) : phi1;
- costh1 = cos(th1);
- sinth1 = sin(th1);
- if ((merid = fabs(sina12 = sin(al12)) < MERI_TOL)) {
- sina12 = 0.;
- cosa12 = fabs(al12) < HALFPI ? 1. : -1.;
- M = 0.;
- } else {
- cosa12 = cos(al12);
- M = costh1 * sina12;
- }
- N = costh1 * cosa12;
- if (ellipse) {
- if (merid) {
- c1 = 0.;
- c2 = f4;
- D = 1. - c2;
- D *= D;
- P = c2 / D;
- } else {
- c1 = geod_f * M;
- c2 = f4 * (1. - M * M);
- D = (1. - c2) * (1. - c2 - c1 * M);
- P = (1. + .5 * c1 * M) * c2 / D;
- }
- }
- if (merid)
- s1 = HALFPI - th1;
- else {
- s1 = (fabs(M) >= 1.) ? 0. : acos(M);
- s1 = sinth1 / sin(s1);
- s1 = (fabs(s1) >= 1.) ? 0. : acos(s1);
- }
-}
-void geod_for(void)
-{
- double d, sind, u, V, X, ds, cosds, sinds, ss = 0, de;
-
- if (ellipse) {
- d = geod_S / (D * geod_a);
- if (signS)
- d = -d;
- u = 2. * (s1 - d);
- V = cos(u + d);
- X = c2 * c2 * (sind = sin(d)) * cos(d) * (2. * V * V - 1.);
- ds = d + X - 2. * P * V * (1. - 2. * P * cos(u)) * sind;
- ss = s1 + s1 - ds;
- } else {
- ds = geod_S / geod_a;
- if (signS)
- ds = -ds;
- }
- cosds = cos(ds);
- sinds = sin(ds);
- if (signS)
- sinds = -sinds;
- al21 = N * cosds - sinth1 * sinds;
- if (merid) {
- phi2 = atan(tan(HALFPI + s1 - ds) / onef);
- if (al21 > 0.) {
- al21 = PI;
- if (signS)
- de = PI;
- else {
- phi2 = -phi2;
- de = 0.;
- }
- } else {
- al21 = 0.;
- if (signS) {
- phi2 = -phi2;
- de = 0;
- } else
- de = PI;
- }
- } else {
- al21 = atan(M / al21);
- if (al21 > 0)
- al21 += PI;
- if (al12 < 0.)
- al21 -= PI;
- al21 = adjlon(al21);
- phi2 = atan(-(sinth1 * cosds + N * sinds) * sin(al21) /
- (ellipse ? onef * M : M));
- de = atan2(sinds * sina12,
- (costh1 * cosds - sinth1 * sinds * cosa12));
- if (ellipse) {
- if (signS)
- de += c1 * ((1. - c2) * ds + c2 * sinds * cos(ss));
- else
- de -= c1 * ((1. - c2) * ds - c2 * sinds * cos(ss));
- }
- }
- lam2 = adjlon(lam1 + de);
-}
diff --git a/navit/tools/gpx2navit_txt/src/geod_inv.c b/navit/tools/gpx2navit_txt/src/geod_inv.c
deleted file mode 100644
index a54128256..000000000
--- a/navit/tools/gpx2navit_txt/src/geod_inv.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * 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.
- */
-
-#ifndef lint
-static const char SCCSID[] =
- "@(#)geod_inv.c 4.5 95/09/23 GIE REL";
-#endif
-# include "projects.h"
-# include "geodesic.h"
-# define DTOL 1e-12
-void geod_inv(void)
-{
- double th1,
- th2,
- thm,
- dthm,
- dlamm,
- dlam,
- sindlamm,
- costhm,
- sinthm,
- cosdthm,
- sindthm, L, E, cosd, d, X, Y, T, sind, tandlammp, u, v, D, A, B;
-
- if (ellipse) {
- th1 = atan(onef * tan(phi1));
- th2 = atan(onef * tan(phi2));
- } else {
- th1 = phi1;
- th2 = phi2;
- }
- thm = .5 * (th1 + th2);
- dthm = .5 * (th2 - th1);
- dlamm = .5 * (dlam = adjlon(lam2 - lam1));
- if (fabs(dlam) < DTOL && fabs(dthm) < DTOL) {
- al12 = al21 = geod_S = 0.;
- return;
- }
- sindlamm = sin(dlamm);
- costhm = cos(thm);
- sinthm = sin(thm);
- cosdthm = cos(dthm);
- sindthm = sin(dthm);
- L = sindthm * sindthm + (cosdthm * cosdthm - sinthm * sinthm)
- * sindlamm * sindlamm;
- d = acos(cosd = 1 - L - L);
- if (ellipse) {
- E = cosd + cosd;
- sind = sin(d);
- Y = sinthm * cosdthm;
- Y *= (Y + Y) / (1. - L);
- T = sindthm * costhm;
- T *= (T + T) / L;
- X = Y + T;
- Y -= T;
- T = d / sind;
- D = 4. * T * T;
- A = D * E;
- B = D + D;
- geod_S = geod_a * sind * (T - f4 * (T * X - Y) +
- f64 * (X * (A + (T - .5 * (A - E)) * X) -
- Y * (B + E * Y) + D * X * Y));
- tandlammp = tan(.5 * (dlam - .25 * (Y + Y - E * (4. - X)) *
- (f2 * T + f64 * (32. * T - (20. * T - A)
- * X - (B +
- 4.) * Y)) *
- tan(dlam)));
- } else {
- geod_S = geod_a * d;
- tandlammp = tan(dlamm);
- }
- u = atan2(sindthm, (tandlammp * costhm));
- v = atan2(cosdthm, (tandlammp * sinthm));
- al12 = adjlon(TWOPI + v - u);
- al21 = adjlon(TWOPI - v - u);
-}
diff --git a/navit/tools/gpx2navit_txt/src/geod_set.c b/navit/tools/gpx2navit_txt/src/geod_set.c
deleted file mode 100644
index 4dc4b1d79..000000000
--- a/navit/tools/gpx2navit_txt/src/geod_set.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * 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.
- */
-
-#ifndef lint
-/*
- * static const char SCCSID[]="@(#)geod_set.c 4.8 95/09/23 GIE REL";
- */
-#endif
-
-#define _IN_GEOD_SET
-
-#include <string.h>
-#include "projects.h"
-#include "geodesic.h"
-#include "emess.h"
-void geod_set(int argc, char **argv)
-{
- paralist *start = 0, *curr = NULL; /* added NULL */
- double es;
- char *name;
- int i;
-
-/*
- * put arguments into internal linked list
- */
- if (argc <= 0)
- emess(1, "no arguments in initialization list");
- for (i = 0; i < argc; ++i)
- if (i)
- curr = curr->next = pj_mkparam(argv[i]);
- else
- start = curr = pj_mkparam(argv[i]);
-/*
- * set elliptical parameters
- */
- if (pj_ell_set(start, &geod_a, &es))
- emess(1, "ellipse setup failure");
-/*
- * set units
- */
- if ((name = pj_param(start, "sunits").s)) { /* added parentheses */
- char *s;
-
- for (i = 0; (s = pj_units[i].id) && strcmp(name, s); ++i);
- if (!s)
- emess(1, "%s unknown unit conversion id", name);
- fr_meter = 1. / (to_meter = atof(pj_units[i].to_meter));
- } else
- to_meter = fr_meter = 1.;
- if ((ellipse = es != 0.)) { /* added parentheses */
- onef = sqrt(1. - es);
- geod_f = 1 - onef;
- f2 = geod_f / 2;
- f4 = geod_f / 4;
- f64 = geod_f * geod_f / 64;
- } else {
- onef = 1.;
- geod_f = f2 = f4 = f64 = 0.;
- }
-/*
- * check if line or arc mode
- */
- if (pj_param(start, "tlat_1").i) {
- double del_S;
-#undef f
- phi1 = pj_param(start, "rlat_1").f;
- lam1 = pj_param(start, "rlon_1").f;
- if (pj_param(start, "tlat_2").i) {
- phi2 = pj_param(start, "rlat_2").f;
- lam2 = pj_param(start, "rlon_2").f;
- geod_inv();
- geod_pre();
- } else if ((geod_S = pj_param(start, "dS").f)) { /* added
- * parentheses
- */
- al12 = pj_param(start, "rA").f;
- geod_pre();
- geod_for();
- } else
- emess(1, "incomplete geodesic/arc info");
- if ((n_alpha = pj_param(start, "in_A").i) > 0) {
- if (!(del_alpha = pj_param(start, "rdel_A").f))
- emess(1, "del azimuth == 0");
- } else if ((del_S = fabs(pj_param(start, "ddel_S").f))) { /* added
- * parentheses
- */
- n_S = geod_S / del_S + .5;
- } else if ((n_S = pj_param(start, "in_S").i) <= 0)
- emess(1, "no interval divisor selected");
- }
-/*
- * free up linked list
- */
- for (; start; start = curr) {
- curr = start->next;
- pj_dalloc(start);
- }
-}
diff --git a/navit/tools/gpx2navit_txt/src/geodesic.h b/navit/tools/gpx2navit_txt/src/geodesic.h
deleted file mode 100644
index 5f818c37a..000000000
--- a/navit/tools/gpx2navit_txt/src/geodesic.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * 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.
- */
-
-#ifndef lint
-/*static char GEODESIC_H_ID[] = "@(#)geodesic.h 4.3 95/08/19 GIE REL"; */
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef _IN_GEOD_SET
-# define GEOD_EXTERN extern
-#else
-# define GEOD_EXTERN
-#endif
-
-GEOD_EXTERN struct geodesic {
- double A;
- double LAM1, PHI1, ALPHA12;
- double LAM2, PHI2, ALPHA21;
- double DIST;
- double ONEF, FLAT, FLAT2, FLAT4, FLAT64;
- int ELLIPSE;
-} GEODESIC;
-
-# define geod_a GEODESIC.A
-# define lam1 GEODESIC.LAM1
-# define phi1 GEODESIC.PHI1
-# define al12 GEODESIC.ALPHA12
-# define lam2 GEODESIC.LAM2
-# define phi2 GEODESIC.PHI2
-# define al21 GEODESIC.ALPHA21
-# define geod_S GEODESIC.DIST
-# define geod_f GEODESIC.FLAT
-# define onef GEODESIC.ONEF
-# define f2 GEODESIC.FLAT2
-# define f4 GEODESIC.FLAT4
-# define ff2 GEODESIC.FLAT4
-# define f64 GEODESIC.FLAT64
-# define ellipse GEODESIC.ELLIPSE
-
-
-GEOD_EXTERN int n_alpha, n_S;
-GEOD_EXTERN double to_meter, fr_meter, del_alpha;
-
-void geod_set(int, char **);
-void geod_for(void);
-void geod_pre(void);
-void geod_inv(void);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/navit/tools/gpx2navit_txt/src/gpx2navit_txt.h b/navit/tools/gpx2navit_txt/src/gpx2navit_txt.h
deleted file mode 100644
index 038ca8605..000000000
--- a/navit/tools/gpx2navit_txt/src/gpx2navit_txt.h
+++ /dev/null
@@ -1,293 +0,0 @@
-/**
- * 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.
- */
-
-#ifndef GPX2SHP_H_INCLUDED
-#define GPX2SHP_H_INCLUDED
-
-#define PROG gpx2navit_txt
-#define FILENAMELENGTH 255 /* 255 is max length for dbf string column */
-#define COMMENTLENGTH 255 /* 255 is max length for dbf string column */
-#define NAMELENGTH 32
-#define TIMELENGTH 32
-#define TYPELENGTH 16
-#define BUFFSIZE 8192
-#define DATABUFSIZE 16
-#define failToWriteAttr(S, T) failToWriteAttrRep((S), (T),__FILE__, __LINE__ )
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <libgen.h>
-#include <getopt.h>
-#include <time.h>
-#include <assert.h>
-#include <expat.h>
-#include "errorcode.h"
-//#include "shapefil.h"
-
-
-#define DEBUG 0
-/**
- * make xml parent and child list
- */
-typedef struct parent {
- char *name; /** element name */
- struct parent *parentptr;
- /** parent pointer */
-} parent;
-
-/**
- * set attribute columns on/off
- */
-typedef struct g2scolumns {
-/**
- * each member corresponds to attribute column of attribute table
- */
- int name;
- int cmt;
- int desc;
- int src;
- int link;
- int type;
- int time;
- int number;
- int ele;
- int magvar;
- int geoidheight;
- int sym;
- int fix;
- int sat;
- int hdop;
- int vdop;
- int pdop;
- int ageofdgpsdata;
- int dgpsid;
- int length;
- int interval;
- int speed;
- int points;
- int gpxline;
-} g2scolumns;
-
-/**
- * store each path attribute values for trackpoint and route.
- */
-typedef struct pathattr {
- char name[NAMELENGTH];
- char cmt[COMMENTLENGTH];
- char desc[COMMENTLENGTH];
- char src[COMMENTLENGTH];
- char link[FILENAMELENGTH];
- int number;
- char type[TYPELENGTH];
- double length;
- double interval;
- double speed;
- /*
- double *x;
- double *y;
- double *z;
- */
- double *point;
- int count;
-} pathattr;
-
-/**
- * store each point attribute values.
- */
-typedef struct g2sattr {
-/**
- * the structure cames from GPX1.1 format
- */
- double lon;
- double lat;
- double minlon;
- double minlat;
- double maxlon;
- double maxlat;
- char name[NAMELENGTH];
- char cmt[COMMENTLENGTH];
- char desc[COMMENTLENGTH];
- char src[COMMENTLENGTH];
- char link[FILENAMELENGTH];
- char type[TYPELENGTH];
- char time[TIMELENGTH];
- int number;
- double ele;
- double magvar;
- double geoidheight;
- char sym[NAMELENGTH];
- char fix[NAMELENGTH];
- int sat;
- double hdop;
- double vdop;
- double pdop;
- double ageofdgpsdata;
- int dgpsid;
- char author[NAMELENGTH];
- char keywords[NAMELENGTH];
- char copyright[NAMELENGTH];
- int year;
- char license[NAMELENGTH];
-} g2sattr;
-
-/**
- * statistics structure
- */
-typedef struct g2sstats {
- int trkpoints; /** track point total count */
- int trkcount; /** track path total count */
- double trklength; /** track total length */
- int rtepoints; /** route point total count */
- int rtecount; /** route path totol count */
- double rtelength; /** route total length */
- int wptpoints; /** way point total count */
- int trkunconverted; /** unconverted track path count */
- int rteunconverted; /** unconverted route path count */
-} g2sstats;
-
-/**
- * cluster of all dbfhandles
- */
-//typedef struct dbfhandles {
-// DBFHandle trk; /** for track */
-// DBFHandle wpt; /** for waypoint */
-// DBFHandle rte; /** for route */
-// DBFHandle trk_edg; /** for track each edge */
-// DBFHandle trk_pnt; /** for track each point */
-// DBFHandle rte_edg; /** for route each edge */
-// DBFHandle rte_pnt; /** for route each point */
-//} dbfhandles;
-
-/**
- * cluster of all shphandles
- */
-//typedef struct shphandles {
-// SHPHandle trk; /** for track */
-// SHPHandle wpt; /** for waypoint */
-// SHPHandle rte; /** for route */
-// SHPHandle trk_edg; /** for track each edge */
-// SHPHandle trk_pnt; /** for track each point */
-// SHPHandle rte_edg; /** for route each edge */
-// SHPHandle rte_pnt; /** for route each point */
-//} shphandles;
-
-/**
- * propaties structure for gpx2navit_txt
- */
-typedef struct g2sprop {
- int parseWpt; /** convert waypoint data or not */
- int parseTrk; /** convert track data or not */
- int parseRte; /** convert route data or not */
- int is3d; /** using 3D mode */
- int isEdge; /** convert path data as each separated path */
- int isPoint; /** convert path data as point */
- int isFast; /** fast mode that skips path check */
- int needsStats; /** shows statistics at last */
- int minpoints; /** minimum points to convert as a path */
- int minlength; /** minimum length to convert as a path */
- int mintime; /** minimum time to convert as a path */
- int verbose; /** verbose mode on/off */
- char *sourcefile; /** source .gpx file */
- char *output; /** output file base name */
- char *ellipsoid; /** ellipsoid type to calculate length */
- char *lengthUnit; /** length unit for attributes*/
- double length2meter;/** meter value of lenght unit */
- char *timeUnit; /** time unit for attributes */
- double time2sec; /** value to convert time unit to second */
- char *speedLengthUnit;
- /** lenght unit to calculate speed*/
- double speed2meter; /** meter value of speedLengthUnit */
- char *speedTimeUnit;/** time unit to calculate speed */
- int speed2sec; /** value to convert speedTimeUnit to seconde */
- g2sstats *stats; /** convert statistics */
- g2scolumns *cols; /** attribute table column switch */
- int nospeedcheck; /** disables track check for speed to be non-zero */
-} g2sprop;
-
-/**
- * userdata structure between expat methods
- */
-typedef struct parsedata {
- int depth; /** xml path depth */
- char *databuf; /** character buffer in tags */
- char *bufptr; /** pointer to databuf to add '\0' to databuf */
- int failed; /** xml parse failed flag */
- int failedid; /** xml parse failed id */
- XML_Parser parser; /** xml parser itself*/
- parent *parent; /** pointer to parent node */
- parent *current; /** pointer to current node */
- FILE *fp; /** File handle to write out data points*/
-// shphandles *shps; /** .shp file cluster that is used in this program */
-// dbfhandles *dbfs; /** .dbf file cluster that is used in this program */
- g2sattr *attr; /** each point attributes */
- pathattr *pattr; /** each path attributes */
- g2sprop *prop; /** propaties for this program */
-} parsedata;
-
-/* utils.c */
-void checkEllpsUnit(char *unit);
-double checkLengthUnit(char *unit);
-int checkTimeUnit(char *unit);
-double getTimeInterval(char *_t, char *t);
-double getSpeed(double length, double ti, double to_meter, int to_sec);
-double getDistance(double _x, double _y, double x, double y);
-//void closeShpFiles(shphandles * shps);
-//void closeDbfFiles(dbfhandles * dbfs);
-void *myMallocRep(size_t size, const char *fileName, int line);
-
-/* misc.c */
-void failToWriteAttrRep(int iShape, int col, char *file, int line);
-void showStats(g2sprop * prop);
-void wipePathAttr(pathattr * pattr);
-pathattr *createPathAttr(void);
-void wipeAttr(g2sattr * attr);
-void setColsDefault(g2scolumns * cols);
-g2scolumns *createCols(void);
-g2sattr *createAttr(void);
-g2sprop *createProp(void);
-void closeProp(g2sprop * prop);
-//shphandles *createShps(void);
-//dbfhandles *createDbfs(void);
-parsedata *createParsedata(XML_Parser parser, g2sprop * prop);
-void closeParsedata(parsedata * pdata);
-
-/* parser.c */
-void parseMain(g2sprop * pr);
-
-/* elementControl.c */
-void startElementControl(parsedata * pdata, const char *element,
- const char **attr);
-void endElementControl(parsedata * pdata, const char *element);
-
-/* setwpt.c */
-void setWpt( parsedata * pdata);
-
-/* setpath.c */
-void initPathAttr(pathattr * pattr, g2sattr * attr);
-void setPathInterval(parsedata *pdata);
-void setPathData(pathattr * parrt, g2sattr * attr);
-void setPath( parsedata * pdata);
-
-/* setmetadata.c */
-void setMetadata(parsedata * pdata);
-
-#endif
diff --git a/navit/tools/gpx2navit_txt/src/main.c b/navit/tools/gpx2navit_txt/src/main.c
deleted file mode 100644
index e244957fc..000000000
--- a/navit/tools/gpx2navit_txt/src/main.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/**
- * 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 "gpx2navit_txt.h"
-#include "geodesic.h"
-
-void version(void);
-void usage(char **argv);
-void setDefault(g2sprop * prop);
-void setOptions(int argc, char **argv, g2sprop * prop);
-
-/**
- * Shows a version
- */
-void version(void)
-{
- fprintf(stdout, "gpx2navit_txt 0.1\n");
- fprintf(stdout, "\n");
- fprintf(stdout, "by Toshihiro Hiraoka\n");
- fprintf(stdout, " Petter Reinholdtsen\n");
-}
-
-/**
- * Shows a usage message
- */
-void usage(char **argv)
-{
- fprintf(stdout, "Usage: %s gpxfile [options] [-o output basename]\n",
- argv[0]);
- fprintf(stdout,
- "-o, --output Sets output basename. The default is (source file\n");
- fprintf(stdout, " name) - (extention name)\n");
- fprintf
- (stdout,
- "-w, --waypoints Converts only waypoints data from a gpx file.\n");
- fprintf(stdout,
- "-t, --trackpoints Converts only trackpoints data from a gpx file.\n");
- fprintf(stdout,
- "-r, --routes Converts only routes data from a gpx file.\n");
- fprintf(stdout,
- "-a, --all Converts all types of data from a gpx file.(default)\n");
- fprintf(stdout,
- "-e, --as-edge Makes a separated output by each edges.\n");
- fprintf(stdout,
- "-p, --as-point Makes a separated output by each points.\n");
- fprintf(stdout,
- "-s, --stats Shows simple statistics of the outputs.\n");
- fprintf(stdout,
- "-b, --basic-columns Stores only basic data as attribures to \n");
- fprintf(stdout,
- " reduce memory and storage usage.\n");
- fprintf(stdout,
- " (ele, name, cmt, type, time, fix, sym and number).\n");
- fprintf(stdout,
- "-L, --no-length Removes length column from a waypoint or trackpoint\n");
- fprintf(stdout, " attribute table.\n");
- fprintf
- (stdout,
- "-S, --no-speed Removes speed column from a waypoint or trackpoint\n");
- fprintf(stdout, " attribute table.\n");
- fprintf
- (stdout,
- "-T, --no-time Removes time column from an attribute table.\n");
- fprintf(stdout,
- "-g, --gpxline Adds line number of GPX file as attribures.\n");
- fprintf
- (stdout,
- "-f, --fast Make it faster without any checks.\n");
- fprintf(stdout,
- "-3, --3d Converts data using 3d format. (It's not compatible\n");
- fprintf(stdout, " for Arcview 3.x.)\n");
- fprintf(stdout,
- " --min-points Sets path minimum points to convert for noise reduction.\n");
- fprintf(stdout, " Default is 2.\n");
- fprintf(stdout,
- " --min-length Sets path minimum length to convert for noise reduction.\n");
- fprintf(stdout, " Default is 0.\n");
- fprintf(stdout,
- " --min-time Sets path minimum time period to convert for noise\n");
- fprintf(stdout, " reduction.\n");
- fprintf(stdout, " Default is 0.\n");
- fprintf(stdout,
- " --length-unit Sets length unit from m,km,feet,mi and etc.\n");
- fprintf(stdout, " The default is m.\n");
- fprintf(stdout,
- " You can see the unit list from \"geod -lu\" command.\n");
- fprintf
- (stdout,
- " --time-unit Sets time unit. The default is sec.\n");
- fprintf(stdout,
- " You can set from day, hour, min and sec.\n");
- fprintf(stdout,
- " --speed-length-unit Sets length unit for speed.\n");
- fprintf(stdout, " The default is km.\n");
- fprintf(stdout,
- " You can see the unit list from \"geod -lu\" command.\n");
- fprintf(stdout,
- " --speed-time-unit Sets time unit for speed calulation. Default is hour.\n");
- fprintf(stdout,
- " You can set from day, hour, min and sec.\n");
- fprintf(stdout,
- " --length-ellipsoid Sets length ellipsoid like UGS84, clrk66. The default is\n");
- fprintf(stdout, " UGS84.\n");
- fprintf
- (stdout,
- " You can see the unit list from \"geod -le\" command.\n");
- fprintf(stdout,
- " --no-speed-check Disables track check for speed to be non-zero.\n");
- fprintf(stdout, "-v, --verbose Gives many messages.\n");
- fprintf(stdout, " --version Shows version.\n");
- fprintf(stdout, "-h, --help Shows this list.\n");
-}
-
-/**
- * Sets default values to the properties when there is no user setting.
- */
-void setDefault(g2sprop * prop)
-{
- char *pargv[2];
- int pargc = 2;
- char *ellps;
- /* if there are no options like -p,-w,-e, sets as -a */
- if (!(prop->parseWpt | prop->parseTrk | prop->parseRte)) {
- prop->parseWpt = 1;
- prop->parseTrk = 1;
- prop->parseRte = 1;
- }
- /* if there is no output setting, sets it as [sourcefile name] - ".gpx" */
- if (prop->output == NULL) {
- char *dot = strrchr(prop->sourcefile, '.');
- prop->output =
- (char *) malloc(sizeof(char) * strlen(prop->sourcefile) + 1);
- if (0 == strcmp(dot, ".gpx")) {
- int len = dot - prop->sourcefile;
- strncpy(prop->output, prop->sourcefile, len);
- prop->output[len] = 0;
- } else {
- fprintf(stderr,
- "The source file doesn't have .gpx extension.\n");
- exit(ERR_ISNOTGPX);
- }
- }
- /* sets ellipsoid "WGS84" */
- if (prop->ellipsoid == NULL) {
- prop->ellipsoid = (char *) malloc(sizeof(char) * 7);
- strcpy(prop->ellipsoid, "WGS84");
- }
- /* sets lengthUnit "m" */
- if (prop->lengthUnit == NULL) {
- prop->lengthUnit = (char *) malloc(sizeof(char) * 2);
- strcpy(prop->lengthUnit, "m");
- }
- /* sets timeUnit "sec" */
- if (prop->timeUnit == NULL) {
- prop->timeUnit = (char *) malloc(sizeof(char) * 4);
- strcpy(prop->timeUnit, "sec");
- }
- /* sets speedLengthUnit "km" */
- if (prop->speedLengthUnit == NULL) {
- prop->speedLengthUnit = (char *) malloc(sizeof(char) * 3);
- strcpy(prop->speedLengthUnit, "km");
- }
- /* sets speedTimeUnit "hour" */
- if (prop->speedTimeUnit == NULL) {
- prop->speedTimeUnit = (char *) malloc(sizeof(char) * 5);
- strcpy(prop->speedTimeUnit, "hour");
- }
- /* sets ellipsoid setting to geod* programs */
- ellps = malloc(sizeof(char) * (strlen(prop->ellipsoid) + 8));
- strcpy(ellps, "+ellps=");
- strcat(ellps, prop->ellipsoid);
- pargv[0] = ellps;
- pargv[1] = prop->lengthUnit;
- checkEllpsUnit(prop->ellipsoid);
- prop->length2meter = checkLengthUnit(prop->lengthUnit);
- prop->time2sec = checkTimeUnit(prop->timeUnit);
- prop->speed2meter = checkLengthUnit(prop->speedLengthUnit);
- prop->speed2sec = checkTimeUnit(prop->speedTimeUnit);
- geod_set(pargc, pargv);
- if (prop->verbose) {
- printf("source filename:\t%s\n", prop->sourcefile);
- printf("output file base name:\t%s\n", prop->output);
- }
- free(ellps);
-}
-
-/**
- * Set options from command arguments
- */
-void setOptions(int argc, char **argv, g2sprop * prop)
-{
- int result;
- /* option struct for getopt_long */
- struct option const long_options[] = {
- {"waypoints", no_argument, 0, 'w'},
- {"trackpoints", no_argument, 0, 't'},
- {"routes", no_argument, 0, 'r'},
- {"output", required_argument, 0, 'o'},
- {"as-edge", no_argument, 0, 'e'},
- {"as-point", no_argument, 0, 'p'},
- {"min-points", required_argument, 0, 'P'},
- {"min-length", required_argument, 0, 'l'},
- {"min-time", required_argument, 0, 'm'},
- {"stats", no_argument, 0, 's'},
- {"basic-columns", no_argument, 0, 'b'},
- {"fast", no_argument, 0, 'f'},
- {"length-unit", required_argument, 0, '4'},
- {"time-unit", required_argument, 0, '8'},
- {"length-ellipsoid", required_argument, 0, '7'},
- {"speed-length-unit", required_argument, 0, '5'},
- {"speed-time-unit", required_argument, 0, '6'},
- {"no-speed", no_argument, 0, 'S'},
- {"no-length", no_argument, 0, 'L'},
- {"no-time", no_argument, 0, 'T'},
- {"verbose", no_argument, 0, 'v'},
- {"gpxline", no_argument, 0, 'g'},
- {"all", no_argument, 0, 'a'},
- {"no-speed-check", no_argument, 0, '9'},
- {"version", no_argument, 0, 'V'},
- {"help", no_argument, 0, '?'},
- {0, no_argument, 0, '0'},
- };
- if (argc <= 1) {
- fprintf(stderr, "There is no argument.\n");
- usage(argv);
- exit(ERR_NOARGS);
- }
- /* set option attributes */
- while ((result =
- getopt_long(argc, argv, "3wtrao:epfP:l:m:bS4:5:6:7:8:LTSsvg09",
- long_options, NULL)) != -1) {
- switch (result) {
- case '3': /* 3d output */
- prop->is3d = 1;
- break;
- case 'w': /* converts only waypoint */
- prop->parseWpt = 1;
- break;
- case 't': /* converts only trackpoint */
- prop->parseTrk = 1;
- break;
- case 'r': /* converts only route */
- prop->parseRte = 1;
- break;
- case 'a': /* converts all */
- prop->parseWpt = 1;
- prop->parseTrk = 1;
- prop->parseRte = 1;
- break;
- case 'o': /* sets basename of output file */
- prop->output =
- (char *) malloc(sizeof(char) * strlen(optarg) + 1);
- strcpy(prop->output, optarg);
- break;
- case 'e': /* make output by each edges */
- if (prop->isEdge) {
- fprintf(stderr, "option -e cannot use with -f\n");
- exit(ERR_OPTIONCONFRICT);
- }
- prop->isEdge = 1;
- break;
- case 'p': /* make output by each edges */
- prop->isPoint = 1;
- break;
- case 'f': /* make it faster */
- if (prop->isEdge) {
- fprintf(stderr, "option -f cannot use with -e\n");
- exit(ERR_OPTIONCONFRICT);
- }
- prop->isFast = 1;
- prop->cols->desc = 0;
- prop->cols->src = 0;
- prop->cols->link = 0;
- prop->cols->magvar = 0;
- prop->cols->geoidheight = 0;
- prop->cols->sat = 0;
- prop->cols->hdop = 0;
- prop->cols->vdop = 0;
- prop->cols->pdop = 0;
- prop->cols->ageofdgpsdata = 0;
- prop->cols->dgpsid = 0;
- prop->cols->length = 0;
- prop->cols->interval = 0;
- prop->cols->speed = 0;
- break;
- case 'P': /* sets minimun points as a path */
- prop->minpoints = atoi(optarg);
- break;
- case 'l': /* sets minimun length as a path */
- prop->minlength = atoi(optarg);
- break;
- case 'm': /* sets minimun time as a path */
- prop->mintime = atoi(optarg);
- break;
- case 'b': /* use only some columns */
- prop->cols->desc = 0;
- prop->cols->src = 0;
- prop->cols->link = 0;
- prop->cols->magvar = 0;
- prop->cols->geoidheight = 0;
- prop->cols->sat = 0;
- prop->cols->hdop = 0;
- prop->cols->vdop = 0;
- prop->cols->pdop = 0;
- prop->cols->ageofdgpsdata = 0;
- prop->cols->dgpsid = 0;
- prop->cols->length = 0;
- prop->cols->interval = 0;
- prop->cols->speed = 0;
- break;
- case 'S': /* doesn't make speed column */
- prop->cols->speed = 0;
- break;
- case '4': /* sets length unit */
- prop->lengthUnit = malloc(sizeof(char) * (strlen(optarg) + 1));
- strcpy(prop->lengthUnit, optarg);
- break;
- case '5': /* sets length unit for calculating speed */
- prop->speedLengthUnit =
- malloc(sizeof(char) * (strlen(optarg) + 1));
- strcpy(prop->speedLengthUnit, optarg);
- break;
- case '6': /* sets time unit for calculating speed */
- prop->speedTimeUnit =
- malloc(sizeof(char) * (strlen(optarg) + 1));
- strcpy(prop->speedTimeUnit, optarg);
- break;
- case '7': /* sets ellipsoid for calculating length */
- prop->ellipsoid = malloc(sizeof(char) * (strlen(optarg) + 1));
- strcpy(prop->ellipsoid, optarg);
- break;
- case '8': /* sets time unit */
- prop->timeUnit = malloc(sizeof(char) * (strlen(optarg) + 1));
- strcpy(prop->timeUnit, optarg);
- break;
- case '9': /* disables speed check */
- prop->nospeedcheck=1;
- break;
- case 'L': /* doesn't make length column */
- prop->cols->length = 0;
- break;
- case 'T': /* doesn't make time column */
- prop->cols->interval = 0;
- break;
- case 's': /* shows source file stats */
- prop->needsStats = 1;
- break;
- case 'v': /* verbose mode */
- prop->verbose = 1;
- break;
- case 'V': /* shows version */
- version();
- exit(EXIT_SUCCESS);
- break;
- case 'g': /* adds gpx line number column */
- prop->cols->gpxline = 1;
- break;
- case ':':
- usage(argv);
- exit(ERR_WRONGOPTION);
- break;
- case '0':
- usage(argv);
- exit(ERR_WRONGOPTION);
- break;
- default:
- usage(argv);
- exit(ERR_WRONGOPTION);
- break;
- }
- }
- /* gets a source file name */
- if(argv[optind] == NULL) {
- fprintf(stderr, "There is no gpxfile description.\n");
- usage(argv);
- exit(ERR_WRONGOPTION);
- }
- prop->sourcefile = malloc(sizeof(char) * (strlen(argv[optind]) + 1));
- /** @note needs to change here to support
- * a several files convertion */
- strcpy(prop->sourcefile, argv[optind]);
- setDefault(prop);
-}
-
-/**
- * Main
- */
-int main(int argc, char **argv)
-{
- g2sprop *prop;
- prop = createProp();
- setOptions(argc, argv, prop);
- parseMain(prop);
- if (prop->needsStats)
- showStats(prop);
- closeProp(prop);
- return (0);
-}
diff --git a/navit/tools/gpx2navit_txt/src/misc.c b/navit/tools/gpx2navit_txt/src/misc.c
deleted file mode 100644
index fc272e8cb..000000000
--- a/navit/tools/gpx2navit_txt/src/misc.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/**
- * 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 "gpx2navit_txt.h"
-
-void failToWriteAttrRep(int iShape, int col, char *file, int line);
-void showStats(g2sprop * prop);
-void wipePathAttr(pathattr * pattr);
-pathattr *createPathAttr(void);
-void wipeAttr(g2sattr * attr);
-void setColsDefault(g2scolumns * cols);
-g2scolumns *createCols(void);
-g2sattr *createAttr(void);
-g2sprop *createProp(void);
-void closeProp(g2sprop * prop);
-//shphandles *createShps(void);
-//dbfhandles *createDbfs(void);
-parsedata *createParsedata(XML_Parser parser, g2sprop * prop);
-void closeParsedata(parsedata * pdata);
-
-/**
- * message when fail to write attribute
- */
-void failToWriteAttrRep(int iShape, int col, char *file, int line)
-{
- printf("Fail to write a attribute at %s:%i. shapeid:%i col:%i\n", file,
- line, iShape, col);
-}
-
-/**
- * shows short statistics
- */
-void showStats(g2sprop * prop)
-{
- g2sstats *stats = prop->stats;
- double ratio;
- if (prop->needsStats) {
- if (prop->parseTrk) {
- if (stats->trkunconverted != 0) {
- ratio =
- (double) stats->trkunconverted / (stats->trkcount +
- stats->
- trkunconverted) *
- 100;
- } else {
- ratio = 0;
- }
- printf("Track Points:\n");
- printf("\ttrack count:\t%i\n", stats->trkcount);
- printf("\tpoint count:\t%i\n", stats->trkpoints);
- if (!prop->isFast) {
- printf("\ttotal length:\t%f\n", stats->trklength);
- printf("\tunconverted:\t%i(%5.2f%%)\n",
- stats->trkunconverted, ratio);
- }
- }
- if (prop->parseRte) {
- if (stats->rteunconverted != 0) {
- ratio =
- (double) stats->rteunconverted / (stats->rtecount +
- stats->
- rteunconverted) *
- 100;
- } else {
- ratio = 0;
- }
- printf("Routes:\n");
- printf("\troute count:\t%i\n", stats->rtecount);
- printf("\tpoint count:\t%i\n", stats->rtepoints);
- if (!prop->isFast) {
- printf("\ttotal length:\t%f\n", stats->rtelength);
- printf("\tunconverted:\t%i(%5.2f%%)\n",
- stats->rteunconverted, ratio);
- }
- }
- if (prop->parseWpt) {
- printf("Waypoints:\n");
- printf("\tpoint count:\t%i\n", stats->wptpoints);
- }
- }
-}
-
-/**
- * clears a path attribute structure
- */
-void wipePathAttr(pathattr * pattr)
-{
- pattr->name[0] = '\0';
- pattr->cmt[0] = '\0';
- pattr->desc[0] = '\0';
- pattr->src[0] = '\0';
- pattr->link[0] = '\0';
- pattr->number = 0;
- pattr->type[0] = '\0';
- pattr->length = 0;
- pattr->interval = 0;
- pattr->speed = 0;
- //pattr->point = NULL;
- pattr->count = 0;
-}
-
-/**
- * creates a new path attribute
- */
-pathattr *createPathAttr(void)
-{
- pathattr *pattr;
- pattr = (pathattr *) malloc(sizeof(pathattr));
- wipePathAttr(pattr);
- return pattr;
-}
-
-/**
- * clears a element attribute structure
- */
-void wipeAttr(g2sattr * attr)
-{
- attr->lon = 0;
- attr->lat = 0;
- attr->minlon = 0;
- attr->minlat = 0;
- attr->maxlon = 0;
- attr->maxlat = 0;
- attr->name[0] = '\0';
- attr->cmt[0] = '\0';
- attr->desc[0] = '\0';
- attr->src[0] = '\0';
- attr->link[0] = '\0';
- attr->type[0] = '\0';
- attr->time[0] = '\0';
- attr->number = 0;
- attr->ele = 0;
- attr->magvar = 0;
- attr->geoidheight = 0;
- attr->sym[0] = '\0';
- attr->fix[0] = '\0';
- attr->sat = 0;
- attr->hdop = 0;
- attr->vdop = 0;
- attr->pdop = 0;
- attr->ageofdgpsdata = 0;
- attr->dgpsid = 0;
- attr->author[0] = '\0';
- attr->keywords[0] = '\0';
- attr->copyright[0] = '\0';
- attr->year = 0;
- attr->license[0] = '\0';
- attr->minlat = 0;
- attr->minlon = 0;
- attr->maxlat = 0;
- attr->maxlon = 0;
-}
-
-/**
- * sets default values to a column properties.
- */
-void setColsDefault(g2scolumns * cols)
-{
- cols->name = 1;
- cols->cmt = 1;
- cols->desc = 1;
- cols->src = 1;
- cols->link = 1;
- cols->type = 1;
- cols->time = 1;
- cols->number = 1;
- cols->ele = 1;
- cols->magvar = 1;
- cols->geoidheight = 1;
- cols->sym = 1;
- cols->fix = 1;
- cols->sat = 1;
- cols->hdop = 1;
- cols->vdop = 1;
- cols->pdop = 1;
- cols->ageofdgpsdata = 1;
- cols->dgpsid = 1;
- cols->length = 1;
- cols->interval = 1;
- cols->speed = 1;
- cols->points = 1;
- cols->gpxline = 0;
-}
-
-/**
- * creates a column structure
- */
-g2scolumns *createCols(void)
-{
- g2scolumns *cols;
- cols = (g2scolumns *) malloc(sizeof(g2scolumns));
- setColsDefault(cols);
- return cols;
-}
-
-/**
- * creates a element attribute structure.
- */
-g2sattr *createAttr(void)
-{
- g2sattr *attr;
- attr = (g2sattr *) malloc(sizeof(g2sattr));
- wipeAttr(attr);
- return attr;
-}
-
-/**
- * creates a properties structure for gpx2shp
- */
-g2sprop *createProp(void)
-{
- g2sprop *prop;
- g2sstats *stats;
- g2scolumns *cols;
- prop = malloc(sizeof(g2sprop));
- stats = malloc(sizeof(g2sstats));
- cols = createCols();
- prop->stats = stats;
- prop->parseWpt = 0;
- prop->parseTrk = 0;
- prop->parseRte = 0;
- prop->minpoints = 2;
- prop->minlength = 0;
- prop->mintime = 0;
- prop->is3d = 0;
- prop->isEdge = 0;
- prop->isPoint = 0;
- prop->isFast = 0;
- prop->needsStats = 0;
- prop->verbose = 0;
- prop->output = NULL;
- prop->ellipsoid = NULL;
- prop->lengthUnit = NULL;
- prop->speedLengthUnit = NULL;
- prop->speedTimeUnit = NULL;
- prop->timeUnit = NULL;
- prop->stats->trkcount = 0;
- prop->stats->trkpoints = 0;
- prop->stats->trklength = 0;
- prop->stats->trkunconverted = 0;
- prop->stats->rtecount = 0;
- prop->stats->rtepoints = 0;
- prop->stats->rtelength = 0;
- prop->stats->rteunconverted = 0;
- prop->stats->wptpoints = 0;
- prop->cols = cols;
- return prop;
-}
-
-/**
- * close and free a propertires structure
- */
-void closeProp(g2sprop * prop)
-{
- free(prop->stats);
- free(prop->sourcefile);
- free(prop->ellipsoid);
- free(prop->timeUnit);
- free(prop->speedLengthUnit);
- free(prop->speedTimeUnit);
- free(prop->lengthUnit);
- free(prop->output);
- free(prop->cols);
- free(prop);
-}
-
-/**
- * creates a shapehandles structure
- */
-//shphandles *createShps(void)
-//{
-// shphandles *shps;
-// shps = malloc(sizeof(shphandles));
-// shps->trk = NULL;
-// shps->wpt = NULL;
-// shps->rte = NULL;
-// shps->trk_edg = NULL;
-// shps->rte_edg = NULL;
-// shps->trk_pnt = NULL;
-// shps->rte_pnt = NULL;
-// return shps;
-//}
-
-/**
- * creates a dbfhandles structure
- */
-/* dbfhandles *createDbfs(void)
-{
- dbfhandles *dbfs;
- dbfs = malloc(sizeof(dbfhandles));
- dbfs->trk = NULL;
- dbfs->wpt = NULL;
- dbfs->rte = NULL;
- dbfs->trk_edg = NULL;
- dbfs->rte_edg = NULL;
- dbfs->trk_pnt = NULL;
- dbfs->rte_pnt = NULL;
- return dbfs;
-} */
-
-/**
- * creates a parse structure
- */
-parsedata *createParsedata(XML_Parser parser, g2sprop * prop)
-{
- parsedata *pdata = (parsedata *) malloc(sizeof(parsedata));
- pdata->fp = NULL;
- //shphandles *shps = createShps();
- //dbfhandles *dbfs = createDbfs();
- pathattr *pattr = createPathAttr();
- g2sattr *attr = createAttr();
- parent *p = (parent *) malloc(sizeof(parent));
- parent *c = (parent *) malloc(sizeof(parent));
- p->name = NULL;
- p->parentptr = NULL;
- c->name = "root";
- c->parentptr = p;
- pdata->depth = 0;
- pdata->databuf = malloc(sizeof(char) * DATABUFSIZE);
- pdata->bufptr = NULL;
- pdata->failed = 0;
- pdata->failedid = 0;
- pdata->parser = parser;
- pdata->parent = p;
- pdata->current = c;
- //pdata->shps = shps;
- //pdata->dbfs = dbfs;
- pdata->prop = prop;
- pdata->pattr = pattr;
- pdata->attr = attr;
- return pdata;
-}
-
-/*
- * close and free resoures
- */
-void closeParsedata(parsedata * pdata)
-{
- //free(pdata->shps);
- //free(pdata->dbfs);
- free(pdata->parent);
- free(pdata->current);
- free(pdata->databuf);
- free(pdata->attr);
- free(pdata->pattr);
- free(pdata);
-}
diff --git a/navit/tools/gpx2navit_txt/src/parser.c b/navit/tools/gpx2navit_txt/src/parser.c
deleted file mode 100644
index dc62d71f1..000000000
--- a/navit/tools/gpx2navit_txt/src/parser.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/**
- * 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 "gpx2navit_txt.h"
-
-void charHandle(void *userdata, const XML_Char * data, int length);
-void startElement(void *userdata, const char *element, const char **attr);
-void endElement(void *userdata, const char *element);
-void parseMain(g2sprop * prop);
-
-/**
- * a handler to parse charctor data on expat
- */
-void charHandle(void *userdata, const XML_Char * data, int length)
-{
- static int bufsize = DATABUFSIZE;
- static int string_length = 0;
- int new_length;
- static int begin_copy = 0;
- int i;
- parsedata *pdata = (parsedata *) userdata;
- if (pdata->bufptr == NULL) {
- //start of buffer -->pdata->bufptr set to 0 at endelement
- string_length = 0;
- begin_copy = 0; //begin to copy after first space
- pdata->bufptr= pdata->databuf;
- }
- new_length = string_length + length + 1; //additonal 0
- if (bufsize < new_length) {
- pdata->databuf =
- realloc(pdata->databuf, new_length);
- bufsize = new_length;
- //because of realloc the pointer may have changed
- pdata->bufptr = pdata->databuf + string_length;
- }
- // because expat calls this routine several times on special chars
- // we need to do following
- // --concat strings until reset (bufptr set to NULL)
- // --filter out blank chars at begin of string
- for (i=0; i<length;i++) {
- if (begin_copy || !isspace(data[i])) {
- *pdata->bufptr = data[i];
- pdata->bufptr++;
- string_length ++;
- begin_copy = 1;
- if (DEBUG) fprintf(stderr,"%c",data[i]);
- }
- }
- *pdata->bufptr = '\0';
-}
-
-/**
- * a handler when a element starts
- */
-void startElement(void *userdata, const char *element, const char **attr)
-{
- parsedata *pdata = (parsedata *) userdata;
- pdata->parent = pdata->current;
- pdata->current = malloc(sizeof(parent));
- pdata->current->name = malloc(sizeof(char) * (strlen(element) + 1));
- strcpy(pdata->current->name, element);
- pdata->current->parentptr = pdata->parent;
- startElementControl(pdata, element, attr);
- if (pdata->prop->verbose) {
- int i;
- for (i = 0; i < pdata->depth; i++)
- printf(" ");
- printf("<%s>: ", element);
- for (i = 0; attr[i]; i += 2) {
- printf(" %s='%s'", attr[i], attr[i + 1]);
- }
- printf("\n");
- }
- pdata->depth++;
-}
-
-/**
- * a handler when a element ends
- */
-void endElement(void *userdata, const char *element)
-{
- parsedata *pdata = (parsedata *) userdata;
- endElementControl(pdata, element);
- pdata->depth--;
- if (pdata->prop->verbose) {
- int i;
- for (i = 0; i < pdata->depth; i++)
- printf(" ");
- printf("</%s>:%s\n ", element,pdata->parent->name);
- }
- free(pdata->current->name);
- free(pdata->current);
- pdata->current = pdata->parent;
- pdata->parent = pdata->parent->parentptr;
-}
-
-void parseMain(g2sprop * prop)
-{
- FILE *fp;
- char buff[BUFFSIZE];
- XML_Parser parser;
- parsedata *pdata;
- fp = fopen(prop->sourcefile, "r");
- if (fp == NULL) {
- fprintf(stderr, "Cannot open gpx file: %s\n", prop->sourcefile);
- exit(ERR_CANNOTOPEN);
- }
- parser = XML_ParserCreate(NULL);
- if (!parser) {
- fprintf(stderr, "Couldn't allocate memory for parser\n");
- exit(ERR_OUTOFMEMORY);
- }
- pdata = createParsedata(parser, prop);
-
- char *output_wpt =
- (char *) malloc(sizeof(char) * (strlen(pdata->prop->output) + 9));
- strcpy(output_wpt, pdata->prop->output);
- strcat(output_wpt, "_nav.txt");
- pdata->fp = fopen(output_wpt,"w");
- if (pdata->fp == NULL)
- {
- //todo
- fprintf(stderr,"Failure opening File %s for writing",output_wpt);
- exit(1);
- }
- free(output_wpt);
- XML_SetUserData(parser, pdata);
- XML_SetElementHandler(parser, startElement, endElement);
- XML_SetCharacterDataHandler(parser, charHandle);
- for (;;) {
- int done;
- int len;
- fgets(buff, BUFFSIZE, fp);
- len = (int) strlen(buff);
- if (ferror(fp)) {
- fprintf(stderr, "Read error file: %s\n", prop->sourcefile);
- exit(ERR_READERROR);
- }
- done = feof(fp);
- if (done)
- break;
- if (!XML_Parse(parser, buff, len, done)) {
- fprintf(stderr, "Parse error at line %d:\n%s\n",
- XML_GetCurrentLineNumber(parser),
- XML_ErrorString(XML_GetErrorCode(parser)));
- exit(ERR_PARSEERROR);
- }
- }
- fclose(pdata->fp); //close out file
- closeParsedata(pdata);
-}
diff --git a/navit/tools/gpx2navit_txt/src/setmeta.c b/navit/tools/gpx2navit_txt/src/setmeta.c
deleted file mode 100644
index 86a22f70b..000000000
--- a/navit/tools/gpx2navit_txt/src/setmeta.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * 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 "gpx2navit_txt.h"
-
-/**
- * store gpx metadata into text file
- */
-void setMetadata(parsedata * pdata)
-{
- g2sprop *prop = pdata->prop;
- g2sattr *attr = pdata->attr;
- FILE *metafile;
- char *output = malloc(sizeof(char) * (strlen(prop->output) + 10));
- strcpy(output, prop->output);
- strcat(output, "_meta.txt");
- metafile = fopen(output, "w");
- if (metafile == NULL) {
- fprintf(stderr, "Cannot create file: %s\n", output);
- exit(ERR_CREATEFILE);
- }
- if (attr->name) {
- fprintf(metafile, "name\t%s\n", attr->name);
- }
- if (attr->desc) {
- fprintf(metafile, "description\t%s\n", attr->desc);
- }
- if (attr->author) {
- fprintf(metafile, "author\t%s\n", attr->author);
- }
- if (attr->copyright) {
- fprintf(metafile, "copyright\t%s\n", attr->copyright);
- }
- if (attr->link) {
- fprintf(metafile, "link\t%s\n", attr->link);
- }
- if (attr->time) {
- fprintf(metafile, "time\t%s\n", attr->time);
- }
- if (attr->keywords) {
- fprintf(metafile, "keywords\t%s\n", attr->keywords);
- }
- if (attr->minlat) {
- fprintf(metafile, "min latitude\t%f\n", attr->minlat);
- }
- if (attr->minlon) {
- fprintf(metafile, "min longitude\t%f\n", attr->minlon);
- }
- if (attr->maxlat) {
- fprintf(metafile, "max latitude\t%f\n", attr->maxlat);
- }
- if (attr->maxlon) {
- fprintf(metafile, "max longitude\t%f\n", attr->maxlon);
- }
- fclose(metafile);
- free(output);
-}
diff --git a/navit/tools/gpx2navit_txt/src/setpath.c b/navit/tools/gpx2navit_txt/src/setpath.c
deleted file mode 100644
index 3642415a8..000000000
--- a/navit/tools/gpx2navit_txt/src/setpath.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * 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 "gpx2navit_txt.h"
-
-void initPathAttr(pathattr * pattr, g2sattr * attr);
-void setEdge(parsedata * pdata, double _x, double _y, double _z,
- double length, double interval, double speed);
-void setPathInterval(parsedata * pdata);
-void setPathData(pathattr * pattr, g2sattr * attr);
-void countUnconverted(parsedata * pdata);
-void countPath(parsedata * pdata);
-int checkPath(parsedata * pdata);
-void setPath( parsedata * pdata);
-
-
-
-/**
- * initialize a path attribute
- */
-void initPathAttr(pathattr * pattr, g2sattr * attr)
-{
- strcpy(pattr->name, attr->name);
- strcpy(pattr->cmt, attr->cmt);
- strcpy(pattr->desc, attr->desc);
- strcpy(pattr->src, attr->src);
- strcpy(pattr->link, attr->link);
- pattr->number = attr->number;
- strcpy(pattr->type, attr->type);
- pattr->length = 0;
- pattr->interval = 0;
- pattr->speed = 0;
- pattr->count = 0;
- pattr->point = NULL;
-}
-
-
-/**
- * set edge data and store it
- */
-void setEdge(parsedata * pdata, double _x, double _y, double _z,
- double length, double interval, double speed)
-{
- pathattr *pattr = pdata->pattr;
- static int isFirstTrkAsEdge = 1;
- static int isFirstRteAsEdge = 1;
- double x[2], y[2], z[2];
- double _length, _interval, _speed;
- if (!strcmp(pdata->current->name, "trkpt")) {
- if (isFirstTrkAsEdge) {
- isFirstTrkAsEdge = 0;
- }
- } else {
- if (isFirstRteAsEdge) {
- isFirstRteAsEdge = 0;
- }
- }
- _length = pattr->length;
- _interval = pattr->interval;
- _speed = pattr->speed;
- pattr->length = length;
- pattr->interval = interval;
- pattr->speed = speed;
- x[0] = _x;
- y[0] = _y;
- z[0] = _z;
- x[1] = pdata->attr->lon;
- y[1] = pdata->attr->lat;
- z[1] = pdata->attr->ele;
- if (pdata->prop->is3d) {
- } else {
- }
- pattr->length = _length;
- pattr->interval = _interval;
- pattr->speed = _speed;
-}
-
-/**
- * sets interval data between two track points
- */
-void setPathInterval(parsedata * pdata)
-{
- pathattr *pattr = pdata->pattr;
- g2sattr *attr = pdata->attr;
- g2sprop *prop = pdata->prop;
- static char _t[TIMELENGTH];
- double intvl = 0;
- static double _x, _y, _z;
- double leng = 0;
- double spd;
- if (pattr->count == 1) {
- strcpy(_t, attr->time);
- } else {
- /* time interval */
- intvl = getTimeInterval(_t, attr->time);
- pattr->interval = pattr->interval + intvl;
- strcpy(_t, attr->time);
- /* length interval */
- leng = getDistance(_x, _y, attr->lon, attr->lat);
- pattr->length = pattr->length + leng;
- /* interval speed */
- spd = getSpeed(leng, intvl, prop->speed2meter, prop->speed2sec);
- /* sets edge data */
- if (prop->isEdge) {
- setEdge(pdata, _x, _y, _z, leng, intvl, spd);
- }
- }
- _x = attr->lon;
- _y = attr->lat;
- _z = attr->ele;
-}
-
-/**
- * sets each track point data in array.
- */
-void setPathData(pathattr * pattr, g2sattr * attr)
-{
- const int reallocsize = 100;
- if (pattr->count == 0) {
- pattr->point = malloc(sizeof(double) * 3 * reallocsize);
- }
- if ((pattr->count % reallocsize) == 0) {
- pattr->point = realloc(pattr->point,
- sizeof(double) * 3 * (pattr->count +
- reallocsize));
- }
- pattr->point[pattr->count * 3] = attr->lon;
- pattr->point[pattr->count * 3 + 1] = attr->lat;
- pattr->point[pattr->count * 3 + 2] = attr->ele;
- pattr->count++;
-}
-
-/**
- * counts paths that wasn't converted
- */
-void countUnconverted(parsedata * pdata)
-{
- g2sstats *stats = pdata->prop->stats;
- if (!strcmp(pdata->current->name, "trkseg"))
- stats->trkunconverted++;
- else
- stats->rteunconverted++;
-}
-
-/**
- * counts paths
- */
-void countPath(parsedata * pdata)
-{
- g2sstats *stats = pdata->prop->stats;
- pathattr *pattr = pdata->pattr;
- if (!strcmp(pdata->current->name, "trkseg")) {
- stats->trkcount++;
- stats->trklength += pattr->length;
- stats->trkpoints += pattr->count;
- } else {
- stats->rtecount++;
- stats->rtelength += pattr->length;
- stats->rtepoints += pattr->count;
- }
-}
-
-int checkPath(parsedata * pdata)
-{
- pathattr *pattr = pdata->pattr;
- g2sprop *prop = pdata->prop;
- /* check point count. */
- if (pattr->count < prop->minpoints) {
- fprintf
- (stderr,
- "gpx2navit_txt:%s:%i track was not converted because of less then %d points. \n",
- prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser),
- prop->minpoints);
- countUnconverted(pdata);
- return 0;
- /* check path length */
- } else if (pattr->length < prop->minlength * prop->length2meter) {
- fprintf
- (stderr,
- "gpx2navit_txt:%s:%i track was not converted because it is shorter than %dm.\n",
- prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser),
- prop->minlength);
- countUnconverted(pdata);
- return 0;
- /* check path time */
- } else if (pattr->interval < prop->mintime * prop->time2sec) {
- fprintf
- (stderr,
- "gpx2navit_txt:%s:%i track was not converted because it is shorter than %d sed.\n",
- prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser),
- prop->mintime);
- countUnconverted(pdata);
- return 0;
- /* check path speed */
- } else if (!prop->nospeedcheck && pattr->speed == .0) {
- fprintf
- (stderr,
- "gpx2navit_txt:%s:%i track was not converted because no move recorded. Use --no-speed-check option to bypass this check.\n",
- prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser));
- countUnconverted(pdata);
- return 0;
- }
- return 1;
-}
-
-/**
- * saves path data into files.
- */
-void setPath( parsedata * pdata)
-{
- pathattr *pattr = pdata->pattr;
- g2sprop *prop = pdata->prop;
- int isOk = 0;
- pattr->speed =
- getSpeed(pattr->length, pattr->interval, prop->speed2meter,
- prop->speed2sec);
- if (prop->isFast) {
- isOk = 1;
- } else {
- isOk = checkPath(pdata);
- }
- if (isOk) {
- double x[pattr->count];
- double y[pattr->count];
- double z[pattr->count];
- int i;
- fprintf(pdata->fp,"type=track label=\"%s\" desc=\"%s\" type=\"%s\"\ length=\"%5.3f\" count=\"%5d\"\n"
- ,pdata->pattr->name,pdata->pattr->desc,
- pdata->pattr->type,pdata->pattr->length,
- pdata->pattr->count);
-
- for (i = 0; i < pattr->count; i++) {
- x[i] = pattr->point[i * 3];
- y[i] = pattr->point[i * 3 + 1];
- z[i] = pattr->point[i * 3 + 2];
- fprintf(pdata->fp,"%3.6f %4.6f\n",x[i],y[i]);
- }
- if (pdata->prop->is3d) {
- } else {
- }
- countPath(pdata);
- }
- free(pattr->point);
-}
diff --git a/navit/tools/gpx2navit_txt/src/setwpt.c b/navit/tools/gpx2navit_txt/src/setwpt.c
deleted file mode 100644
index 3fc04f71b..000000000
--- a/navit/tools/gpx2navit_txt/src/setwpt.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * 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 "gpx2navit_txt.h"
-
-void setWpt(parsedata * pdata);
-
-/**
- * save point objects in *_wpt or *_pnt file
- */
-void setWpt( parsedata * pdata)
-{
- double x[1], y[1], z[1];
- x[0] = pdata->attr->lon;
- y[0] = pdata->attr->lat;
- z[0] = pdata->attr->ele;
- if (pdata->prop->is3d) {
- //nothing at the moment
- } else {
- //do not know if i will change something here
- }
- // Write attributes to file first line waypoint-info, second line coords
- char poi_type[20]="poi_attraction";
- if (!strcmp(pdata->attr->type,"Geocache|Traditional Cache"))
- strcpy(poi_type,"poi_gc_tradi");
- if (!strcmp(pdata->attr->type,"Geocache|Multi-cache"))
- strcpy(poi_type,"poi_gc_multi");
- if (!strcmp(pdata->attr->type,"Geocache|Unknown Cache"))
- strcpy(poi_type,"poi_gc_mystery");
- if (!strcmp(pdata->attr->type,"Geocache|Event Cache"))
- strcpy(poi_type,"poi_gc_event");
- if (!strcmp(pdata->attr->type,"Geocache")) //for OC
- strcpy(poi_type,"poi_gc_tradi");
- if (!strcmp(pdata->attr->type,"Waypoint|Parking Area"))
- strcpy(poi_type,"poi_car_parking");
- if (!strcmp(pdata->attr->type,"Waypoint|Question to Answer"))
- strcpy(poi_type,"poi_gc_question");
- if (!strcmp(pdata->attr->type,"Waypoint|Reference Point"))
- strcpy(poi_type,"poi_gc_reference");
- if (!strcmp(pdata->attr->type,"Waypoint|Stages of a Multicache"))
- strcpy(poi_type,"poi_gc_stages");
-
- //generate the file
- fprintf(pdata->fp,"type=%s label=\"%s\" description=\"%s\" gc_type=\"%s\"\n",
- poi_type,pdata->attr->name,pdata->attr->desc,pdata->attr->type);
- fprintf(pdata->fp,"%3.6f %4.6f\n",x[0],y[0]);
-
- //writeWptAttribute(hDBF, pdata, iShape);
- if (!strcmp(pdata->current->name, "wpt")) {
- pdata->prop->stats->wptpoints++;
- }
- return;
-}
-
-
diff --git a/navit/tools/gpx2navit_txt/src/utils.c b/navit/tools/gpx2navit_txt/src/utils.c
deleted file mode 100644
index 4a215fd9d..000000000
--- a/navit/tools/gpx2navit_txt/src/utils.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/**
- * 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 "gpx2navit_txt.h"
-#include "projects.h"
-#include "geodesic.h"
-
-double getDistanceCore(char *p1, char *l1, char *p2, char *l2);
-void checkEllpsUnit(char *unit);
-double checkLengthUnit(char *unit);
-int checkTimeUnit(char *unit);
-double getTimeInterval(char *_t, char *t);
-double getSpeed(double length, double ti, double to_meter, int to_sec);
-double getDistance(double _x, double _y, double x, double y);
-// todo void closeShpFiles(shphandles * shps);
-// todo void closeDbfFiles(dbfhandles * dbfs);
-void *myMallocRep(size_t size, const char *fileName, int line);
-
-void checkEllpsUnit(char *unit)
-{
-/*
- * checks ellipse unit can be used by proj4
- */
- int isOK = 0;
- struct PJ_ELLPS *el; /* project.h of proj4 */
- for (el = pj_ellps; el->id; ++el) {
- if (!strcmp(el->id, unit)) {
- isOK = 1;
- }
- }
- if (!isOK) {
- fputs
- ("The ellipse argument is not correct or supported by libproj\n",
- stderr);
- fputs("You can choose the argument from a list below.\n\n",
- stderr);
- for (el = pj_ellps; el->id; el++) {
- printf("%10s\t%s\n", el->id, el->name);
- }
- exit(ERR_ELLPSUNIT);
- }
-}
-
-double checkLengthUnit(char *unit)
-{
-/*
- * checks length unit can be used by proj4
- * then returns unit value to meter
- */
- int isOK = 0;
- double to_meter = 0;
- struct PJ_UNITS *ut; /* project.h of proj4 */
- for (ut = pj_units; ut->id; ut++) {
- if (!strcmp(ut->id, unit)) {
- isOK = 1;
- to_meter = atof(ut->to_meter);
- }
- }
- if (!isOK) {
- fputs
- ("The length unit argument is not correct or supported by libproj.\n",
- stderr);
- fputs("You can choose the argument from a list below.\n\n",
- stderr);
- for (ut = pj_units; ut->id; ut++) {
- printf("%s\t%s\n", ut->id, ut->name);
- }
- exit(ERR_LENGTHUNIT);
- }
- return to_meter;
-}
-
-int checkTimeUnit(char *unit)
-{
- char *u[8] = { "sec", "s", "min", "m", "hour", "h", "day", "d" };
- int p[8] = { 1, 1, 60, 60, 3600, 3600, 86400, 86400 };
- int i, to_sec = 0;
- for (i = 0; i < 8; i++) {
- if (!strcmp(u[i], unit)) {
- to_sec = p[i];
- }
- }
- if (!to_sec) {
- fputs("The time unit argument is not correct.\n", stderr);
- fputs("You can choose the argument from sec, min, hour or day.\n",
- stderr);
- exit(ERR_TIMEUNIT);
- }
- return to_sec;
-}
-
-double getTimeInterval(char *_t, char *t)
-{
-/*
- * Returns a time interval between _t and t.
- * The arguments should be "YYYY-MM-DDThh:mm:ssZ" (xml schema
- * datetime format without time zone) format.
- */
- double ti;
- struct tm _tt;
- struct tm tt;
- time_t _tmt, tmt;
- memset(&_tt, 0, sizeof(_tt));
- memset(&tt, 0, sizeof(tt));
- sscanf(_t, "%d-%d-%dT%d:%d:%dZ", &_tt.tm_year, &_tt.tm_mon,
- &_tt.tm_mday, &_tt.tm_hour, &_tt.tm_min, &_tt.tm_sec);
- _tt.tm_year -= 1900;
- _tt.tm_mon -= 1;
- sscanf(t, "%d-%d-%dT%d:%d:%d", &tt.tm_year, &tt.tm_mon, &tt.tm_mday,
- &tt.tm_hour, &tt.tm_min, &tt.tm_sec);
- tt.tm_year -= 1900;
- tt.tm_mon -= 1;
- _tmt = mktime(&_tt);
- tmt = mktime(&tt);
- ti = difftime(tmt, _tmt);
- return ti;
-}
-
-double getSpeed(double length, double ti, double to_meter, int to_sec)
-{
-/*
- * Culculates speed from length and time.
- */
- double speed;
- if (!length || !ti)
- speed = 0;
- else
- speed = (length / to_meter) / (ti / to_sec);
- return speed;
-}
-
-double getDistanceCore(char *p1, char *l1, char *p2, char *l2)
-{
- /*
- * Culculates a geodesic length between two points
- * using geod_*.c
- */
- phi1 = dmstor(p1, &p1);
- lam1 = dmstor(l1, &l1);
- phi2 = dmstor(p2, &p2);
- lam2 = dmstor(l2, &l2);
- geod_inv();
- return geod_S;
-}
-
-double getDistance(double _x, double _y, double x, double y)
-{
- /*
- * Culculates a geodesic length between two points
- */
- double length;
- char p1[17], l1[17], p2[17], l2[17];
- sprintf(p1, "%f", _x);
- sprintf(l1, "%f", _y);
- sprintf(p2, "%f", x);
- sprintf(l2, "%f", y);
- length = getDistanceCore(p1, l1, p2, l2);
- return length;
-}
-
-//todo void closeShpFiles(shphandles * shps)
-//{
- /*
- * Closes all SHP files if they opened
- */
-// if (shps->wpt)
-// SHPClose(shps->wpt);
-// if (shps->trk)
-// SHPClose(shps->trk);
-// if (shps->trk_edg)
-// SHPClose(shps->trk_edg);
-// if (shps->trk_pnt)
-// SHPClose(shps->trk_pnt);
-// if (shps->rte)
-// SHPClose(shps->rte);
-// if (shps->rte_edg)
-// SHPClose(shps->rte_edg);
-// if (shps->rte_pnt)
-// SHPClose(shps->rte_pnt);
-//}
-
-//todo void closeDbfFiles(dbfhandles * dbfs)
-//{
- /*
- * Closes all DBF files if they opened
- */
-// if (dbfs->wpt)
-// DBFClose(dbfs->wpt);
-// if (dbfs->trk)
-// DBFClose(dbfs->trk);
-// if (dbfs->trk_edg)
-// DBFClose(dbfs->trk_edg);
-// if (dbfs->trk_pnt)
-// DBFClose(dbfs->trk_pnt);
-// if (dbfs->rte)
-// DBFClose(dbfs->rte);
-// if (dbfs->rte_edg)
-// DBFClose(dbfs->rte_edg);
-// if (dbfs->rte_pnt)
-// DBFClose(dbfs->rte_pnt);
-//}
-
diff --git a/navit/tools/latlon2bookmark/Makefile b/navit/tools/latlon2bookmark/Makefile
deleted file mode 100644
index f62cc0bc4..000000000
--- a/navit/tools/latlon2bookmark/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-all:
- gcc -l m -o latlon2bookmark latlon2bookmark.c
-
-clean:
- rm -f latlon2bookmark
diff --git a/navit/tools/latlon2bookmark/latlon2bookmark.c b/navit/tools/latlon2bookmark/latlon2bookmark.c
deleted file mode 100644
index 9f0eff79a..000000000
--- a/navit/tools/latlon2bookmark/latlon2bookmark.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2009 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.
- */
-
-/**
- * this program is free software, please use it as you like.
- * i am not a programmer, so please have this code reviewed
- * to make sure it has nog bugs or ill side efects.
- * use at your own risk
- * compile it with: gcc -l m -o latlon2bookmark latlon2bookmark.c
- * Credits for this work goes to edje in #navit
-**/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-int main( int argc, char **argv )
-{
- char description[256];
- char lngsign[10];
- char latsign[10];
- float lat;
- float lng;
- long intlat;
- long intlng;
- int i;
- int n;
-
- if ( argc < 4 )
- {
- printf("\n");
- printf("This program converts a lat/lon coordinates pair\n");
- printf("into a bookmark you can use with navit.\n");
- printf("This program expects 3 arguments in the following order:\n");
- printf("Lat, Lon and a description\n");
- printf("and will print a bookmark.\n");
- printf("for example: latlon2bookmark 51.980344 4.358005 this is my house \n");
- printf("\n");
- return 1;
- }
-
- lat=atof(argv[1]);
- lng=atof(argv[2]);
-
- /* concatenate all parts of the description string */
- strcpy(description, argv[3]);
- n=0;
- for (i=4; i < argc; i++)
- {
- /* add spaces between the parts of the description */
- if ( i < argc )
- {
- strcat(description, " ");
- }
- strcat(description, argv[i]);
- n=n+1;
- }
-
- if ( lat < -90 )
- {
- printf("\n");
- printf("The first argument must be the lattitude\n");
- printf("and can't be smaller then -90 (southpole)\n");
- printf("\n");
- return 2;
- }
-
- if ( lat > 90 )
- {
- printf("\n");
- printf("The first argument must be the lattitude\n");
- printf("and can't be bigger then 90 (northpole)\n");
- printf("\n");
- return 3;
- }
-
- if ( lng < -180 )
- {
- printf("\n");
- printf("The second argument must be the longitude\n");
- printf("and can't be smaller then -180 (oposite the 0 meridian)\n");
- printf("\n");
- return 4;
- }
-
- if ( lng > 180 )
- {
- printf("\n");
- printf("The first argument must be the longitude\n");
- printf("and can't be bigger then 180 (oposite the 0 meridian)\n");
- printf("\n");
- return 5;
- }
-
- /* convert the longitude to an integer */
- intlng=lng*6371000.0*M_PI/180;
-
- /* aparently if inlng < 0 , inlng needs to be inverted and a - sign used in the output */
- strcpy(lngsign, "0x");
- if ( intlng < 0)
- {
- intlng=(intlng ^ 0xffffffff);
- strcpy(lngsign, "-0x");
- }
-
- /* and the same for the latitude */
- intlat=log(tan(M_PI_4+lat*M_PI/360))*6371000.0;
-
- /* aparently if inlat < 0 , inlat needs to be inverted and a - sign used in the output */
- strcpy(latsign, "0x");
- if ( intlat < 0)
- {
- intlat=(intlat ^ 0xffffffff);
- strcpy(latsign, "-0x");
- }
-
- /* print the bookmark */
- fprintf(stderr,"\n");
- fprintf(stdout,"mg:%s%x %s%x type=bookmark label=\"%s\"\n",lngsign,intlng,latsign,intlat,description);
- fprintf(stderr,"\n");
-
- return 0;
-}
diff --git a/navit/track.c b/navit/track.c
deleted file mode 100644
index 5c16e4261..000000000
--- a/navit/track.c
+++ /dev/null
@@ -1,1231 +0,0 @@
-/**
- * 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 <string.h>
-#include <time.h>
-#include <math.h>
-#include "item.h"
-#include "attr.h"
-#include "track.h"
-#include "xmlconfig.h"
-#include "debug.h"
-#include "transform.h"
-#include "coord.h"
-#include "route.h"
-#include "projection.h"
-#include "map.h"
-#include "mapset.h"
-#include "plugin.h"
-#include "vehicleprofile.h"
-#include "vehicle.h"
-#include "roadprofile.h"
-#include "util.h"
-#include "config.h"
-#include "callback.h"
-
-struct object_func tracking_func;
-
-struct tracking_line
-{
- struct street_data *street;
- struct tracking_line *next;
- int angle[0];
-};
-
-
-/**
- * @brief Conatins a list of previous speeds
- *
- * This structure is used to hold a list of previously reported
- * speeds. This data is used by the CDF.
- */
-struct cdf_speed {
- struct cdf_speed *next;
- int speed;
- time_t time;
-};
-
-/**
- * @brief Contains data for the CDF
- *
- * This structure holds all data needed by the
- * cumulative displacement filter.
- */
-struct cdf_data {
- int extrapolating;
- int available;
- int first_pos;
- int poscount;
- int hist_size;
- struct cdf_speed *speed_hist;
- struct pcoord *pos_hist;
- int *dir_hist;
- double last_dist;
- struct pcoord last_out;
- int last_dir;
-};
-
-struct tracking {
- NAVIT_OBJECT
- struct callback_list *callback_list;
- struct mapset *ms;
- struct route *rt;
- struct map *map;
- struct vehicle *vehicle;
- struct vehicleprofile *vehicleprofile;
- struct coord last_updated;
- struct tracking_line *lines;
- struct tracking_line *curr_line;
- int pos;
- struct coord curr[2], curr_in, curr_out;
- int curr_angle;
- struct coord last[2], last_in, last_out;
- struct cdf_data cdf;
- struct attr *attr;
- int valid;
- int time;
- double direction, direction_matched;
- double speed;
- int coord_geo_valid;
- struct coord_geo coord_geo;
- enum projection pro;
- int street_direction;
- int no_gps;
- int tunnel;
- int angle_pref;
- int connected_pref;
- int nostop_pref;
- int offroad_limit_pref;
- int route_pref;
- int overspeed_pref;
- int overspeed_percent_pref;
- int tunnel_extrapolation;
-};
-
-
-
-
-static void
-tracking_init_cdf(struct cdf_data *cdf, int hist_size)
-{
- cdf->extrapolating = 0;
- cdf->available = 0;
- cdf->poscount = 0;
- cdf->last_dist = 0;
- cdf->hist_size = hist_size;
-
- cdf->pos_hist = g_new0(struct pcoord, hist_size);
- cdf->dir_hist = g_new0(int, hist_size);
-}
-
-// Variables for finetuning the CDF
-
-// Minimum average speed
-#define CDF_MINAVG 1.f
-// Maximum average speed
-#define CDF_MAXAVG 6.f // only ~ 20 km/h
- // We need a low value here because otherwise we would extrapolate whenever we are not accelerating
-
-// Mininum distance (square of it..), below which we ignore gps updates
-#define CDF_MINDIST 49 // 7 meters, I guess this value has to be changed for pedestrians.
-
-#if 0
-static void
-tracking_process_cdf(struct cdf_data *cdf, struct pcoord *pin, struct pcoord *pout, int dirin, int *dirout, int cur_speed, time_t fixtime)
-{
- struct cdf_speed *speed,*sc,*sl;
- double speed_avg;
- int speed_num,i;
-
- if (cdf->hist_size == 0) {
- dbg(lvl_warning,"No CDF.\n");
- *pout = *pin;
- *dirout = dirin;
- return;
- }
-
- speed = g_new0(struct cdf_speed, 1);
- speed->speed = cur_speed;
- speed->time = fixtime;
-
- speed->next = cdf->speed_hist;
- cdf->speed_hist = speed;
-
- sc = speed;
- sl = NULL;
- speed_num = 0;
- speed_avg = 0;
- while (sc && ((fixtime - speed->time) < 4)) { // FIXME static maxtime
- speed_num++;
- speed_avg += sc->speed;
- sl = sc;
- sc = sc->next;
- }
-
- speed_avg /= (double)speed_num;
-
- if (sl) {
- sl->next = NULL;
- }
-
- while (sc) {
- sl = sc->next;
- g_free(sc);
- sc = sl;
- }
-
- if (speed_avg < CDF_MINAVG) {
- speed_avg = CDF_MINAVG;
- } else if (speed_avg > CDF_MAXAVG) {
- speed_avg = CDF_MAXAVG;
- }
-
-
- if (cur_speed >= speed_avg) {
- if (cdf->extrapolating) {
- cdf->poscount = 0;
- cdf->extrapolating = 0;
- }
-
- cdf->first_pos--;
- if (cdf->first_pos < 0) {
- cdf->first_pos = cdf->hist_size - 1;
- }
-
- if (cdf->poscount < cdf->hist_size) {
- cdf->poscount++;
- }
-
- cdf->pos_hist[cdf->first_pos] = *pin;
- cdf->dir_hist[cdf->first_pos] = dirin;
-
- *pout = *pin;
- *dirout = dirin;
- } else if (cdf->poscount > 0) {
-
- double mx,my; // Average position's x and y values
- double sx,sy; // Support vector
- double dx,dy; // Difference between average and current position
- double len; // Length of support vector
- double dist;
-
- mx = my = 0;
- sx = sy = 0;
-
- for (i = 0; i < cdf->poscount; i++) {
- mx += (double)cdf->pos_hist[((cdf->first_pos + i) % cdf->hist_size)].x / cdf->poscount;
- my += (double)cdf->pos_hist[((cdf->first_pos + i) % cdf->hist_size)].y / cdf->poscount;
-
-
- if (i != 0) {
- sx += cdf->pos_hist[((cdf->first_pos + i) % cdf->hist_size)].x - cdf->pos_hist[((cdf->first_pos + i - 1) % cdf->hist_size)].x;
- sy += cdf->pos_hist[((cdf->first_pos + i) % cdf->hist_size)].y - cdf->pos_hist[((cdf->first_pos + i - 1) % cdf->hist_size)].y;
- }
-
- }
-
- if (cdf->poscount > 1) {
- // Normalize the support vector
- len = sqrt(sx * sx + sy * sy);
- sx /= len;
- sy /= len;
-
- // Calculate the new direction
- *dirout = (int)rint(atan(sx / sy) / M_PI * 180 + 180);
- } else {
- // If we only have one position, we can't use differences of positions, but we have to use the reported
- // direction of that position
- sx = sin((double)cdf->dir_hist[cdf->first_pos] / 180 * M_PI);
- sy = cos((double)cdf->dir_hist[cdf->first_pos] / 180 * M_PI);
- *dirout = cdf->dir_hist[cdf->first_pos];
- }
-
-
- dx = pin->x - mx;
- dy = pin->y - my;
- dist = dx * sx + dy * sy;
-
- if (cdf->extrapolating && (dist < cdf->last_dist)) {
- dist = cdf->last_dist;
- }
-
- cdf->last_dist = dist;
- cdf->extrapolating = 1;
-
- pout->x = (int)rint(mx + sx * dist);
- pout->y = (int)rint(my + sy * dist);
- pout->pro = pin->pro;
-
- } else {
- // We should extrapolate, but don't have an old position available
- *pout = *pin;
- *dirout = dirin;
- }
-
- if (cdf->available) {
- int dx,dy;
-
- dx = pout->x - cdf->last_out.x;
- dy = pout->y - cdf->last_out.y;
-
- if ((dx*dx + dy*dy) < CDF_MINDIST) {
- *pout = cdf->last_out;
- *dirout = cdf->last_dir;
- }
- }
-
- cdf->last_out = *pout;
- cdf->last_dir = *dirout;
-
- cdf->available = 1;
-}
-#endif
-
-int
-tracking_get_angle(struct tracking *tr)
-{
- return tr->curr_angle;
-}
-
-struct coord *
-tracking_get_pos(struct tracking *tr)
-{
- return &tr->curr_out;
-}
-
-int
-tracking_get_street_direction(struct tracking *tr)
-{
- return tr->street_direction;
-}
-
-int
-tracking_get_segment_pos(struct tracking *tr)
-{
- return tr->pos;
-}
-
-struct street_data *
-tracking_get_street_data(struct tracking *tr)
-{
- if (tr->curr_line)
- return tr->curr_line->street;
- return NULL;
-}
-
-int
-tracking_get_attr(struct tracking *_this, enum attr_type type, struct attr *attr, struct attr_iter *attr_iter)
-{
- struct item *item;
- struct map_rect *mr;
- struct tracking_line *tl;
-
- int result=0;
- dbg(lvl_debug,"enter %s\n",attr_to_name(type));
- if (_this->attr) {
- attr_free(_this->attr);
- _this->attr=NULL;
- }
- attr->type=type;
- switch (type) {
- case attr_position_valid:
- attr->u.num=_this->valid;
- return 1;
- case attr_position_direction:
- attr->u.numd=&_this->direction;
- return 1;
- case attr_position_direction_matched:
- attr->u.numd=&_this->direction_matched;
- return 1;
- case attr_position_speed:
- attr->u.numd=&_this->speed;
- return 1;
- case attr_directed:
- attr->u.num=_this->street_direction;
- return 1;
- case attr_position_coord_geo:
- if (!_this->coord_geo_valid) {
- struct coord c;
- c.x=_this->curr_out.x;
- c.y=_this->curr_out.y;
- transform_to_geo(_this->pro, &c, &_this->coord_geo);
- _this->coord_geo_valid=1;
- }
- attr->u.coord_geo=&_this->coord_geo;
- return 1;
- case attr_current_item:
- if (! _this->curr_line || ! _this->curr_line->street)
- return 0;
- attr->u.item=&_this->curr_line->street->item;
- return 1;
- case attr_street_count:
- attr->u.num=0;
- tl=_this->lines;
- while (tl) {
- attr->u.num++;
- tl=tl->next;
- }
- return 1;
- default:
- if (! _this->curr_line || ! _this->curr_line->street)
- return 0;
- item=&_this->curr_line->street->item;
- mr=map_rect_new(item->map,NULL);
- item=map_rect_get_item_byid(mr, item->id_hi, item->id_lo);
- if (item_attr_get(item, type, attr)) {
- _this->attr=attr_dup(attr);
- *attr=*_this->attr;
- result=1;
- }
- map_rect_destroy(mr);
- return result;
- }
-}
-
-struct item *
-tracking_get_current_item(struct tracking *_this)
-{
- if (! _this->curr_line || ! _this->curr_line->street)
- return NULL;
- return &_this->curr_line->street->item;
-}
-
-int *
-tracking_get_current_flags(struct tracking *_this)
-{
- if (! _this->curr_line || ! _this->curr_line->street)
- return NULL;
- return &_this->curr_line->street->flags;
-}
-
-static void
-tracking_get_angles(struct tracking_line *tl)
-{
- int i;
- struct street_data *sd=tl->street;
- for (i = 0 ; i < sd->count-1 ; i++)
- tl->angle[i]=transform_get_angle_delta(&sd->c[i], &sd->c[i+1], 0);
-}
-
-static int
-street_data_within_selection(struct street_data *sd, struct map_selection *sel)
-{
- struct coord_rect r;
- struct map_selection *curr;
- int i;
-
- if (!sel)
- return 1;
- r.lu=sd->c[0];
- r.rl=sd->c[0];
- for (i = 1 ; i < sd->count ; i++) {
- if (r.lu.x > sd->c[i].x)
- r.lu.x=sd->c[i].x;
- if (r.rl.x < sd->c[i].x)
- r.rl.x=sd->c[i].x;
- if (r.rl.y > sd->c[i].y)
- r.rl.y=sd->c[i].y;
- if (r.lu.y < sd->c[i].y)
- r.lu.y=sd->c[i].y;
- }
- curr=sel;
- while (curr) {
- struct coord_rect *sr=&curr->u.c_rect;
- if (r.lu.x <= sr->rl.x && r.rl.x >= sr->lu.x &&
- r.lu.y >= sr->rl.y && r.rl.y <= sr->lu.y)
- return 1;
- curr=curr->next;
- }
- return 0;
-}
-
-
-static void
-tracking_doupdate_lines(struct tracking *tr, struct coord *pc, enum projection pro)
-{
- int max_dist=1000;
- struct map_selection *sel;
- struct mapset_handle *h;
- struct map *m;
- struct map_rect *mr;
- struct item *item;
- struct street_data *street;
- struct tracking_line *tl;
- struct coord_geo g;
- struct coord cc;
-
- dbg(lvl_debug,"enter\n");
- h=mapset_open(tr->ms);
- while ((m=mapset_next(h,2))) {
- cc.x = pc->x;
- cc.y = pc->y;
- if (map_projection(m) != pro) {
- transform_to_geo(pro, &cc, &g);
- transform_from_geo(map_projection(m), &g, &cc);
- }
- sel = route_rect(18, &cc, &cc, 0, max_dist);
- mr=map_rect_new(m, sel);
- if (!mr)
- continue;
- while ((item=map_rect_get_item(mr))) {
- if (item_get_default_flags(item->type)) {
- street=street_get_data(item);
- if (street_data_within_selection(street, sel)) {
- tl=g_malloc(sizeof(struct tracking_line)+(street->count-1)*sizeof(int));
- tl->street=street;
- tracking_get_angles(tl);
- tl->next=tr->lines;
- tr->lines=tl;
- } else
- street_data_free(street);
- }
- }
- map_selection_destroy(sel);
- map_rect_destroy(mr);
- }
- mapset_close(h);
- dbg(lvl_debug, "exit\n");
-}
-
-
-void
-tracking_flush(struct tracking *tr)
-{
- struct tracking_line *tl=tr->lines,*next;
- dbg(lvl_debug,"enter(tr=%p)\n", tr);
-
- while (tl) {
- next=tl->next;
- street_data_free(tl->street);
- g_free(tl);
- tl=next;
- }
- tr->lines=NULL;
- tr->curr_line = NULL;
-}
-
-static int
-tracking_angle_diff(int a1, int a2, int full)
-{
- int ret=(a1-a2)%full;
- if (ret > full/2)
- ret-=full;
- if (ret < -full/2)
- ret+=full;
- return ret;
-}
-
-static int
-tracking_angle_abs_diff(int a1, int a2, int full)
-{
- int ret=tracking_angle_diff(a1, a2, full);
- if (ret < 0)
- ret=-ret;
- return ret;
-}
-
-static int
-tracking_angle_delta(struct tracking *tr, int vehicle_angle, int street_angle, int flags)
-{
- int full=180,ret=360,fwd=0,rev=0;
- struct vehicleprofile *profile=tr->vehicleprofile;
-
- if (profile) {
- fwd=((flags & profile->flags_forward_mask) == profile->flags);
- rev=((flags & profile->flags_reverse_mask) == profile->flags);
- }
- if (fwd || rev) {
- if (!fwd || !rev) {
- full=360;
- if (rev)
- street_angle=(street_angle+180)%360;
- }
- ret=tracking_angle_abs_diff(vehicle_angle, street_angle, full);
- }
- return ret*ret;
-}
-
-static int
-tracking_is_connected(struct tracking *tr, struct coord *c1, struct coord *c2)
-{
- if (c1[0].x == c2[0].x && c1[0].y == c2[0].y)
- return 0;
- if (c1[0].x == c2[1].x && c1[0].y == c2[1].y)
- return 0;
- if (c1[1].x == c2[0].x && c1[1].y == c2[0].y)
- return 0;
- if (c1[1].x == c2[1].x && c1[1].y == c2[1].y)
- return 0;
- return tr->connected_pref;
-}
-
-static int
-tracking_is_no_stop(struct tracking *tr, struct coord *c1, struct coord *c2)
-{
- if (c1->x == c2->x && c1->y == c2->y)
- return tr->nostop_pref;
- return 0;
-}
-
-static int
-tracking_is_on_route(struct tracking *tr, struct route *rt, struct item *item)
-{
-#ifdef USE_ROUTING
- if (! rt)
- return 0;
- if (route_contains(rt, item))
- return 0;
- return tr->route_pref;
-#else
- return 0;
-#endif
-}
-
-static int
-tracking_value(struct tracking *tr, struct tracking_line *t, int offset, struct coord *lpnt, int min, int flags)
-{
- int value=0;
- struct street_data *sd=t->street;
- dbg(lvl_info, "%d: (0x%x,0x%x)-(0x%x,0x%x)\n", offset, sd->c[offset].x, sd->c[offset].y, sd->c[offset+1].x, sd->c[offset+1].y);
- if (flags & 1) {
- struct coord c1, c2, cp;
- c1.x = sd->c[offset].x;
- c1.y = sd->c[offset].y;
- c2.x = sd->c[offset+1].x;
- c2.y = sd->c[offset+1].y;
- cp.x = tr->curr_in.x;
- cp.y = tr->curr_in.y;
- value+=transform_distance_line_sq(&c1, &c2, &cp, lpnt);
- }
- if (value >= min)
- return value;
- if (flags & 2)
- value += tracking_angle_delta(tr, tr->curr_angle, t->angle[offset], sd->flags)*tr->angle_pref>>4;
- if (value >= min)
- return value;
- if ((flags & 4) && tr->connected_pref)
- value += tracking_is_connected(tr, tr->last, &sd->c[offset]);
- if ((flags & 8) && tr->nostop_pref)
- value += tracking_is_no_stop(tr, lpnt, &tr->last_out);
- if (value >= min)
- return value;
- if ((flags & 16) && tr->route_pref)
- value += tracking_is_on_route(tr, tr->rt, &sd->item);
- if ((flags & 32) && tr->overspeed_percent_pref && tr->overspeed_pref ) {
- struct roadprofile *roadprofile=g_hash_table_lookup(tr->vehicleprofile->roadprofile_hash, (void *)t->street->item.type);
- if (roadprofile && tr->speed > roadprofile->speed * tr->overspeed_percent_pref/ 100)
- value += tr->overspeed_pref;
- }
- if ((flags & 64) && !!(sd->flags & AF_UNDERGROUND) != tr->no_gps)
- value+=200;
- return value;
-}
-
-
-/**
- * @brief Processes a position update.
- *
- * @param tr The {@code struct tracking} which will receive the position update
- * @param v The vehicle whose position has changed
- * @param vehicleprofile The vehicle profile to use
- * @param pro The projection to use for transformations
- */
-void
-tracking_update(struct tracking *tr, struct vehicle *v, struct vehicleprofile *vehicleprofile, enum projection pro)
-{
- struct tracking_line *t;
- int i,value,min,time;
- struct coord lpnt;
- struct coord cin;
- struct attr valid,speed_attr,direction_attr,coord_geo,lag,time_attr,static_speed,static_distance;
- double speed, direction;
- if (v)
- tr->vehicle=v;
- if (vehicleprofile)
- tr->vehicleprofile=vehicleprofile;
-
- if (! tr->vehicle)
- return;
- if (!vehicle_get_attr(tr->vehicle, attr_position_valid, &valid, NULL))
- valid.u.num=attr_position_valid_valid;
- if (valid.u.num == attr_position_valid_invalid) {
- tr->valid=valid.u.num;
- return;
- }
- if (!vehicle_get_attr(tr->vehicle, attr_position_speed, &speed_attr, NULL) ||
- !vehicle_get_attr(tr->vehicle, attr_position_direction, &direction_attr, NULL) ||
- !vehicle_get_attr(tr->vehicle, attr_position_coord_geo, &coord_geo, NULL) ||
- !vehicle_get_attr(tr->vehicle, attr_position_time_iso8601, &time_attr, NULL)) {
- dbg(lvl_error,"failed to get position data %d %d %d %d\n",
- vehicle_get_attr(tr->vehicle, attr_position_speed, &speed_attr, NULL),
- vehicle_get_attr(tr->vehicle, attr_position_direction, &direction_attr, NULL),
- vehicle_get_attr(tr->vehicle, attr_position_coord_geo, &coord_geo, NULL),
- vehicle_get_attr(tr->vehicle, attr_position_time_iso8601, &time_attr, NULL));
- return;
- }
- if (tr->tunnel_extrapolation) {
- struct attr fix_type;
- if (!vehicle_get_attr(tr->vehicle, attr_position_fix_type, &fix_type, NULL))
- fix_type.u.num=2;
- if (fix_type.u.num) {
- tr->no_gps=0;
- tr->tunnel=0;
- } else
- tr->no_gps=1;
- }
- if (!vehicleprofile_get_attr(vehicleprofile,attr_static_speed,&static_speed,NULL) || !vehicleprofile_get_attr(vehicleprofile,attr_static_distance,&static_distance,NULL)) {
- static_speed.u.num=3;
- static_distance.u.num=10;
- dbg(lvl_debug,"Using defaults for static position detection\n");
- }
- dbg(lvl_info,"Static speed: %ld, static distance: %ld\n",static_speed.u.num, static_distance.u.num);
- time=iso8601_to_secs(time_attr.u.str);
- speed=*speed_attr.u.numd;
- direction=*direction_attr.u.numd;
- tr->valid=attr_position_valid_valid;
- transform_from_geo(pro, coord_geo.u.coord_geo, &tr->curr_in);
- if ((speed < static_speed.u.num && transform_distance(pro, &tr->last_in, &tr->curr_in) < static_distance.u.num )) {
- dbg(lvl_debug,"static speed %f coord 0x%x,0x%x vs 0x%x,0x%x\n",speed,tr->last_in.x,tr->last_in.y, tr->curr_in.x, tr->curr_in.y);
- tr->valid=attr_position_valid_static;
- tr->speed=0;
- return;
- }
- if (tr->tunnel) {
- tr->curr_in=tr->curr_out;
- dbg(lvl_debug,"tunnel extrapolation speed %f dir %f\n",tr->speed,tr->direction);
- dbg(lvl_debug,"old 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y);
- speed=tr->speed;
- direction=tr->curr_line->angle[tr->pos];
- transform_project(pro, &tr->curr_in, tr->speed*tr->tunnel_extrapolation/36, tr->direction, &tr->curr_in);
- dbg(lvl_debug,"new 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y);
- } else if (vehicle_get_attr(tr->vehicle, attr_lag, &lag, NULL) && lag.u.num > 0) {
- double espeed;
- int edirection;
- if (time-tr->time == 1) {
- dbg(lvl_debug,"extrapolating speed from %f and %f (%f)\n",tr->speed, speed, speed-tr->speed);
- espeed=speed+(speed-tr->speed)*lag.u.num/10;
- dbg(lvl_debug,"extrapolating angle from %f and %f (%d)\n",tr->direction, direction, tracking_angle_diff(direction,tr->direction,360));
- edirection=direction+tracking_angle_diff(direction,tr->direction,360)*lag.u.num/10;
- } else {
- dbg(lvl_debug,"no speed and direction extrapolation\n");
- espeed=speed;
- edirection=direction;
- }
- dbg(lvl_debug,"lag %ld speed %f direction %d\n",lag.u.num,espeed,edirection);
- dbg(lvl_debug,"old 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y);
- transform_project(pro, &tr->curr_in, espeed*lag.u.num/36, edirection, &tr->curr_in);
- dbg(lvl_debug,"new 0x%x,0x%x\n",tr->curr_in.x, tr->curr_in.y);
- }
- tr->time=time;
- tr->pro=pro;
-#if 0
-
- tracking_process_cdf(&tr->cdf, pc, &pcf, angle, &anglef, speed, fixtime);
-#endif
- tr->curr_angle=tr->direction=direction;
- tr->speed=speed;
- tr->last_in=tr->curr_in;
- tr->last_out=tr->curr_out;
- tr->last[0]=tr->curr[0];
- tr->last[1]=tr->curr[1];
- if (!tr->lines || transform_distance(pro, &tr->last_updated, &tr->curr_in) > 500) {
- dbg(lvl_debug, "update\n");
- tracking_flush(tr);
- tracking_doupdate_lines(tr, &tr->curr_in, pro);
- tr->last_updated=tr->curr_in;
- dbg(lvl_debug,"update end\n");
- }
-
- tr->street_direction=0;
- t=tr->lines;
- tr->curr_line=NULL;
- min=INT_MAX/2;
- while (t) {
- struct street_data *sd=t->street;
- for (i = 0; i < sd->count-1 ; i++) {
- value=tracking_value(tr,t,i,&lpnt,min,-1);
- if (value < min) {
- struct coord lpnt_tmp;
- int angle_delta=tracking_angle_abs_diff(tr->curr_angle, t->angle[i], 360);
- tr->curr_line=t;
- tr->pos=i;
- tr->curr[0]=sd->c[i];
- tr->curr[1]=sd->c[i+1];
- tr->direction_matched=t->angle[i];
- dbg(lvl_debug,"lpnt.x=0x%x,lpnt.y=0x%x pos=%d %d+%d+%d+%d=%d\n", lpnt.x, lpnt.y, i,
- transform_distance_line_sq(&sd->c[i], &sd->c[i+1], &cin, &lpnt_tmp),
- tracking_angle_delta(tr, tr->curr_angle, t->angle[i], 0)*tr->angle_pref,
- tracking_is_connected(tr, tr->last, &sd->c[i]) ? tr->connected_pref : 0,
- lpnt.x == tr->last_out.x && lpnt.y == tr->last_out.y ? tr->nostop_pref : 0,
- value
- );
- tr->curr_out.x=lpnt.x;
- tr->curr_out.y=lpnt.y;
- tr->coord_geo_valid=0;
- if (angle_delta < 70)
- tr->street_direction=1;
- else if (angle_delta > 110)
- tr->street_direction=-1;
- else
- tr->street_direction=0;
- min=value;
- }
- }
- t=t->next;
- }
- dbg(lvl_debug,"tr->curr_line=%p min=%d\n", tr->curr_line, min);
- if (!tr->curr_line || min > tr->offroad_limit_pref) {
- tr->curr_out=tr->curr_in;
- tr->coord_geo_valid=0;
- tr->street_direction=0;
- }
- if (tr->curr_line && (tr->curr_line->street->flags & AF_UNDERGROUND)) {
- if (tr->no_gps)
- tr->tunnel=1;
- } else if (tr->tunnel) {
- tr->speed=0;
- }
- dbg(lvl_debug,"found 0x%x,0x%x\n", tr->curr_out.x, tr->curr_out.y);
- callback_list_call_attr_0(tr->callback_list, attr_position_coord_geo);
-}
-
-static int
-tracking_set_attr_do(struct tracking *tr, struct attr *attr, int initial)
-{
- switch (attr->type) {
- case attr_angle_pref:
- tr->angle_pref=attr->u.num;
- return 1;
- case attr_connected_pref:
- tr->connected_pref=attr->u.num;
- return 1;
- case attr_nostop_pref:
- tr->nostop_pref=attr->u.num;
- return 1;
- case attr_offroad_limit_pref:
- tr->offroad_limit_pref=attr->u.num;
- return 1;
- case attr_route_pref:
- tr->route_pref=attr->u.num;
- return 1;
- case attr_overspeed_pref:
- tr->overspeed_pref=attr->u.num;
- return 1;
- case attr_overspeed_percent_pref:
- tr->overspeed_percent_pref=attr->u.num;
- return 1;
- case attr_tunnel_extrapolation:
- tr->tunnel_extrapolation=attr->u.num;
- return 1;
- default:
- return 0;
- }
-}
-
-int
-tracking_set_attr(struct tracking *tr, struct attr *attr)
-{
- return tracking_set_attr_do(tr, attr, 0);
-}
-
-int
-tracking_add_attr(struct tracking *this_, struct attr *attr)
-{
- switch (attr->type) {
- case attr_callback:
- callback_list_add(this_->callback_list, attr->u.callback);
- return 1;
- default:
- return 0;
- }
-}
-
-int
-tracking_remove_attr(struct tracking *this_, struct attr *attr)
-{
- switch (attr->type) {
- case attr_callback:
- callback_list_remove(this_->callback_list, attr->u.callback);
- return 1;
- default:
- return 0;
- }
-}
-
-struct object_func tracking_func = {
- attr_trackingo,
- (object_func_new)tracking_new,
- (object_func_get_attr)tracking_get_attr,
- (object_func_iter_new)NULL,
- (object_func_iter_destroy)NULL,
- (object_func_set_attr)tracking_set_attr,
- (object_func_add_attr)tracking_add_attr,
- (object_func_remove_attr)tracking_remove_attr,
- (object_func_init)tracking_init,
- (object_func_destroy)tracking_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
-
-
-struct tracking *
-tracking_new(struct attr *parent, struct attr **attrs)
-{
- struct tracking *this=g_new0(struct tracking, 1);
- struct attr hist_size;
- this->func=&tracking_func;
- navit_object_ref((struct navit_object *)this);
- this->angle_pref=10;
- this->connected_pref=10;
- this->nostop_pref=10;
- this->offroad_limit_pref=5000;
- this->route_pref=300;
- this->callback_list=callback_list_new();
-
-
- if (! attr_generic_get_attr(attrs, NULL, attr_cdf_histsize, &hist_size, NULL)) {
- hist_size.u.num = 0;
- }
- if (attrs) {
- for (;*attrs; attrs++)
- tracking_set_attr_do(this, *attrs, 1);
- }
-
- tracking_init_cdf(&this->cdf, hist_size.u.num);
-
- return this;
-}
-
-void
-tracking_set_mapset(struct tracking *this, struct mapset *ms)
-{
- this->ms=ms;
-}
-
-void
-tracking_set_route(struct tracking *this, struct route *rt)
-{
- this->rt=rt;
-}
-
-void
-tracking_destroy(struct tracking *tr)
-{
- if (tr->attr)
- attr_free(tr->attr);
- tracking_flush(tr);
- callback_list_destroy(tr->callback_list);
- g_free(tr);
-}
-
-struct map *
-tracking_get_map(struct tracking *this_)
-{
- struct attr *attrs[5];
- struct attr type,navigation,data,description;
- type.type=attr_type;
- type.u.str="tracking";
- navigation.type=attr_trackingo;
- navigation.u.tracking=this_;
- data.type=attr_data;
- data.u.str="";
- description.type=attr_description;
- description.u.str="Tracking";
-
- attrs[0]=&type;
- attrs[1]=&navigation;
- attrs[2]=&data;
- attrs[3]=&description;
- attrs[4]=NULL;
- if (! this_->map)
- this_->map=map_new(NULL, attrs);
- return this_->map;
-}
-
-
-struct map_priv {
- struct tracking *tracking;
-};
-
-struct map_rect_priv {
- struct tracking *tracking;
- struct item item;
- struct tracking_line *curr,*next;
- int coord;
- enum attr_type attr_next;
- int ccount;
- int debug_idx;
- char *str;
-};
-
-static void
-tracking_map_item_coord_rewind(void *priv_data)
-{
- struct map_rect_priv *this=priv_data;
- this->ccount=0;
-}
-
-static int
-tracking_map_item_coord_get(void *priv_data, struct coord *c, int count)
-{
- struct map_rect_priv *this=priv_data;
- enum projection pro;
- int ret=0;
- dbg(lvl_debug,"enter\n");
- while (this->ccount < 2 && count > 0) {
- pro = map_projection(this->curr->street->item.map);
- if (projection_mg != pro) {
- transform_from_to(&this->curr->street->c[this->ccount+this->coord],
- pro,
- c ,projection_mg);
- } else
- *c=this->curr->street->c[this->ccount+this->coord];
- dbg(lvl_debug,"coord %d 0x%x,0x%x\n",this->ccount,c->x,c->y);
- this->ccount++;
- ret++;
- c++;
- count--;
- }
- return ret;
-}
-
-static void
-tracking_map_item_attr_rewind(void *priv_data)
-{
- struct map_rect_priv *this_=priv_data;
- this_->debug_idx=0;
- this_->attr_next=attr_debug;
-}
-
-static int
-tracking_map_item_attr_get(void *priv_data, enum attr_type attr_type, struct attr *attr)
-{
- struct map_rect_priv *this_=priv_data;
- struct coord lpnt,*c;
- struct tracking *tr=this_->tracking;
- int value;
- attr->type=attr_type;
-
- if (this_->str) {
- g_free(this_->str);
- this_->str=NULL;
- }
-
- switch(attr_type) {
- case attr_debug:
- switch(this_->debug_idx) {
- case 0:
- this_->debug_idx++;
- this_->str=attr->u.str=g_strdup_printf("overall: %d (limit %d)",tracking_value(tr, this_->curr, this_->coord, &lpnt, INT_MAX/2, -1), tr->offroad_limit_pref);
- return 1;
- case 1:
- this_->debug_idx++;
- c=&this_->curr->street->c[this_->coord];
- value=tracking_value(tr, this_->curr, this_->coord, &lpnt, INT_MAX/2, 1);
- this_->str=attr->u.str=g_strdup_printf("distance: (0x%x,0x%x) from (0x%x,0x%x)-(0x%x,0x%x) at (0x%x,0x%x) %d",
- tr->curr_in.x, tr->curr_in.y,
- c[0].x, c[0].y, c[1].x, c[1].y,
- lpnt.x, lpnt.y, value);
- return 1;
- case 2:
- this_->debug_idx++;
- this_->str=attr->u.str=g_strdup_printf("angle: %d to %d (flags %d) %d",
- tr->curr_angle, this_->curr->angle[this_->coord], this_->curr->street->flags & 3,
- tracking_value(tr, this_->curr, this_->coord, &lpnt, INT_MAX/2, 2));
- return 1;
- case 3:
- this_->debug_idx++;
- this_->str=attr->u.str=g_strdup_printf("connected: %d", tracking_value(tr, this_->curr, this_->coord, &lpnt, INT_MAX/2, 4));
- return 1;
- case 4:
- this_->debug_idx++;
- this_->str=attr->u.str=g_strdup_printf("no_stop: %d", tracking_value(tr, this_->curr, this_->coord, &lpnt, INT_MAX/2, 8));
- return 1;
- case 5:
- this_->debug_idx++;
- this_->str=attr->u.str=g_strdup_printf("route: %d", tracking_value(tr, this_->curr, this_->coord, &lpnt, INT_MAX/2, 16));
- return 1;
- case 6:
- this_->debug_idx++;
- this_->str=attr->u.str=g_strdup_printf("overspeed: %d", tracking_value(tr, this_->curr, this_->coord, &lpnt, INT_MAX/2, 32));
- return 1;
- case 7:
- this_->debug_idx++;
- this_->str=attr->u.str=g_strdup_printf("tunnel: %d", tracking_value(tr, this_->curr, this_->coord, &lpnt, INT_MAX/2, 64));
- return 1;
- case 8:
- this_->debug_idx++;
- this_->str=attr->u.str=g_strdup_printf("line %p", this_->curr);
- return 1;
- default:
- this_->attr_next=attr_none;
- return 0;
- }
- case attr_any:
- while (this_->attr_next != attr_none) {
- if (tracking_map_item_attr_get(priv_data, this_->attr_next, attr))
- return 1;
- }
- return 0;
- default:
- attr->type=attr_none;
- return 0;
- }
-}
-
-static struct item_methods tracking_map_item_methods = {
- tracking_map_item_coord_rewind,
- tracking_map_item_coord_get,
- tracking_map_item_attr_rewind,
- tracking_map_item_attr_get,
-};
-
-
-static void
-tracking_map_destroy(struct map_priv *priv)
-{
- g_free(priv);
-}
-
-static void
-tracking_map_rect_init(struct map_rect_priv *priv)
-{
- priv->next=priv->tracking->lines;
- priv->curr=NULL;
- priv->coord=0;
- priv->item.id_lo=0;
- priv->item.id_hi=0;
-}
-
-static struct map_rect_priv *
-tracking_map_rect_new(struct map_priv *priv, struct map_selection *sel)
-{
- struct tracking *tracking=priv->tracking;
- struct map_rect_priv *ret=g_new0(struct map_rect_priv, 1);
- ret->tracking=tracking;
- tracking_map_rect_init(ret);
- ret->item.meth=&tracking_map_item_methods;
- ret->item.priv_data=ret;
- ret->item.type=type_tracking_100;
- return ret;
-}
-
-static void
-tracking_map_rect_destroy(struct map_rect_priv *priv)
-{
- g_free(priv);
-}
-
-static struct item *
-tracking_map_get_item(struct map_rect_priv *priv)
-{
- struct item *ret=&priv->item;
- int value;
- struct coord lpnt;
-
- if (!priv->next)
- return NULL;
- if (! priv->curr || priv->coord + 2 >= priv->curr->street->count) {
- priv->curr=priv->next;
- priv->next=priv->curr->next;
- priv->coord=0;
- priv->item.id_lo=0;
- priv->item.id_hi++;
- } else {
- priv->coord++;
- priv->item.id_lo++;
- }
- value=tracking_value(priv->tracking, priv->curr, priv->coord, &lpnt, INT_MAX/2, -1);
- if (value < 64)
- priv->item.type=type_tracking_100;
- else if (value < 128)
- priv->item.type=type_tracking_90;
- else if (value < 256)
- priv->item.type=type_tracking_80;
- else if (value < 512)
- priv->item.type=type_tracking_70;
- else if (value < 1024)
- priv->item.type=type_tracking_60;
- else if (value < 2048)
- priv->item.type=type_tracking_50;
- else if (value < 4096)
- priv->item.type=type_tracking_40;
- else if (value < 8192)
- priv->item.type=type_tracking_30;
- else if (value < 16384)
- priv->item.type=type_tracking_20;
- else if (value < 32768)
- priv->item.type=type_tracking_10;
- else
- priv->item.type=type_tracking_0;
- dbg(lvl_debug,"item %d %d points\n", priv->coord, priv->curr->street->count);
- tracking_map_item_coord_rewind(priv);
- tracking_map_item_attr_rewind(priv);
- return ret;
-}
-
-static struct item *
-tracking_map_get_item_byid(struct map_rect_priv *priv, int id_hi, int id_lo)
-{
- struct item *ret;
- tracking_map_rect_init(priv);
- while ((ret=tracking_map_get_item(priv))) {
- if (ret->id_hi == id_hi && ret->id_lo == id_lo)
- return ret;
- }
- return NULL;
-}
-
-static struct map_methods tracking_map_meth = {
- projection_mg,
- "utf-8",
- tracking_map_destroy,
- tracking_map_rect_new,
- tracking_map_rect_destroy,
- tracking_map_get_item,
- tracking_map_get_item_byid,
- NULL,
- NULL,
- NULL,
-};
-
-static struct map_priv *
-tracking_map_new(struct map_methods *meth, struct attr **attrs, struct callback_list *cbl)
-{
- struct map_priv *ret;
- struct attr *tracking_attr;
-
- tracking_attr=attr_search(attrs, NULL, attr_trackingo);
- if (! tracking_attr)
- return NULL;
- ret=g_new0(struct map_priv, 1);
- *meth=tracking_map_meth;
- ret->tracking=tracking_attr->u.tracking;
-
- return ret;
-}
-
-
-void
-tracking_init(void)
-{
- plugin_register_category_map("tracking", tracking_map_new);
-}
diff --git a/navit/track.h b/navit/track.h
deleted file mode 100644
index 928ef4b00..000000000
--- a/navit/track.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_TRACK_H
-#define NAVIT_TRACK_H
-#include <time.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
-/* prototypes */
-enum attr_type;
-enum projection;
-struct attr;
-struct attr_iter;
-struct coord;
-struct item;
-struct map;
-struct mapset;
-struct route;
-struct street_data;
-struct tracking;
-struct vehicle;
-struct vehicleprofile;
-int tracking_get_angle(struct tracking *tr);
-struct coord *tracking_get_pos(struct tracking *tr);
-int tracking_get_street_direction(struct tracking *tr);
-int tracking_get_segment_pos(struct tracking *tr);
-struct street_data *tracking_get_street_data(struct tracking *tr);
-int tracking_get_attr(struct tracking *_this, enum attr_type type, struct attr *attr, struct attr_iter *attr_iter);
-struct item *tracking_get_current_item(struct tracking *_this);
-int *tracking_get_current_flags(struct tracking *_this);
-void tracking_flush(struct tracking *tr);
-void tracking_update(struct tracking *tr, struct vehicle *v, struct vehicleprofile *vehicleprofile, enum projection pro);
-int tracking_set_attr(struct tracking *tr, struct attr *attr);
-struct tracking *tracking_new(struct attr *parent, struct attr **attrs);
-void tracking_set_mapset(struct tracking *this_, struct mapset *ms);
-void tracking_set_route(struct tracking *this_, struct route *rt);
-void tracking_destroy(struct tracking *tr);
-struct map *tracking_get_map(struct tracking *this_);
-int tracking_add_attr(struct tracking *this_, struct attr *attr);
-int tracking_remove_attr(struct tracking *this_, struct attr *attr);
-struct tracking *tracking_ref(struct tracking *this_);
-void tracking_unref(struct tracking *this_);
-void tracking_init(void);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/transform.c b/navit/transform.c
deleted file mode 100644
index 1c6eeae67..000000000
--- a/navit/transform.c
+++ /dev/null
@@ -1,1624 +0,0 @@
-/**
- * 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.
- */
-
-#define _USE_MATH_DEFINES 1
-#include <assert.h>
-#include <stdio.h>
-#include <math.h>
-#include <limits.h>
-#include <glib.h>
-#include <string.h>
-#include <stdlib.h>
-#include "config.h"
-#include "coord.h"
-#include "debug.h"
-#include "item.h"
-#include "map.h"
-#include "transform.h"
-#include "projection.h"
-#include "point.h"
-
-/** @file
- *
- * Coordinate transformations and projections.
- */
-
-/**
- * @brief Bitshift to apply during coordinate transformation.
- *
- * This bitshift is applied (left shift) during coordinate transformation (and later reversed).
- * The transformation is performed with integer arithmetic, and this shift reduces rounding
- * errors when converting floating point numbers to integers, particularly because some input
- * values are fairly small (for example, the entries in the transformation matrix, <tt>struct
- * transformation</tt>).
- *
- * This works because the transformations involve only multiplications, so the shift can be
- * applied to one factor and removed from the result.
- *
- * The value is a compromise; if it is too small, rounding errors increase, if it is too large,
- * signed integer calculations will overflow at high zoom levels (which is undefined behavior).
- *
- * @see transformation
- */
-#define POST_SHIFT 5
-
-/**
- * @brief The parameters needed to transform a map for display.
- */
-struct transformation {
- int yaw; /* Rotation angle */
- int pitch;
- int ddd; /* 3d mode/isometric view active? (0/1) */
- int m00,m01,m02; /* 3d transformation matrix */
- int m10,m11,m12;
- int m20,m21,m22;
- int xscale,yscale,wscale;
- int xscale3d,yscale3d,wscale3d;
-#ifdef ENABLE_ROLL
- int roll;
- int hog;
-#endif
- navit_float im00,im01,im02; /* inverse 3d transformation matrix */
- navit_float im10,im11,im12;
- navit_float im20,im21,im22;
- struct map_selection *map_sel;
- struct map_selection *screen_sel;
- struct point screen_center;
- int screen_dist;
- int offx,offy,offz;
- int znear,zfar;
- struct coord map_center; /* Center of source rectangle */
- enum projection pro;
- navit_float scale; /* Scale factor */
- int scale_shift;
- int order;
- int order_base;
-};
-
-#ifdef ENABLE_ROLL
-#define HOG(t) ((t).hog)
-#else
-#define HOG(t) 0
-#endif
-
-static void
-transform_set_screen_dist(struct transformation *t, int dist)
-{
- t->screen_dist=dist;
- t->xscale3d=dist;
- t->yscale3d=dist;
- t->wscale3d=dist << POST_SHIFT;
-}
-
-static void
-transform_setup_matrix(struct transformation *t)
-{
- navit_float det;
- navit_float fac;
- navit_float yawc=navit_cos(-M_PI*t->yaw/180);
- navit_float yaws=navit_sin(-M_PI*t->yaw/180);
- navit_float pitchc=navit_cos(-M_PI*t->pitch/180);
- navit_float pitchs=navit_sin(-M_PI*t->pitch/180);
-#ifdef ENABLE_ROLL
- navit_float rollc=navit_cos(M_PI*t->roll/180);
- navit_float rolls=navit_sin(M_PI*t->roll/180);
-#else
- navit_float rollc=1;
- navit_float rolls=0;
-#endif
-
- int scale=t->scale;
- int order_dir=-1;
-
- dbg(lvl_debug,"yaw=%d pitch=%d center=0x%x,0x%x\n", t->yaw, t->pitch, t->map_center.x, t->map_center.y);
- t->znear=1 << POST_SHIFT;
- t->zfar=300*t->znear;
- t->scale_shift=0;
- t->order=t->order_base;
- if (t->scale >= 1) {
- scale=t->scale;
- } else {
- scale=1.0/t->scale;
- order_dir=1;
- }
- while (scale > 1) {
- if (order_dir < 0)
- t->scale_shift++;
- t->order+=order_dir;
- scale >>= 1;
- }
- fac=(1 << POST_SHIFT) * (1 << t->scale_shift) / t->scale;
- dbg(lvl_debug,"scale_shift=%d order=%d scale=%f fac=%f\n", t->scale_shift, t->order,t->scale,fac);
-
- t->m00=rollc*yawc*fac;
- t->m01=rollc*yaws*fac;
- t->m02=-rolls*fac;
- t->m10=(pitchs*rolls*yawc-pitchc*yaws)*(-fac);
- t->m11=(pitchs*rolls*yaws+pitchc*yawc)*(-fac);
- t->m12=pitchs*rollc*(-fac);
- t->m20=(pitchc*rolls*yawc+pitchs*yaws)*fac;
- t->m21=(pitchc*rolls*yaws-pitchs*yawc)*fac;
- t->m22=pitchc*rollc*fac;
-
- t->offx=t->screen_center.x;
- t->offy=t->screen_center.y;
- if (t->pitch) {
- t->ddd=1;
- t->offz=t->screen_dist;
- dbg(lvl_debug,"near %d far %d\n",t->znear,t->zfar);
- t->xscale=t->xscale3d;
- t->yscale=t->yscale3d;
- t->wscale=t->wscale3d;
- } else {
- t->ddd=0;
- t->offz=0;
- t->xscale=1;
- t->yscale=1;
- t->wscale=1;
- }
- det=(navit_float)t->m00*(navit_float)t->m11*(navit_float)t->m22+
- (navit_float)t->m01*(navit_float)t->m12*(navit_float)t->m20+
- (navit_float)t->m02*(navit_float)t->m10*(navit_float)t->m21-
- (navit_float)t->m02*(navit_float)t->m11*(navit_float)t->m20-
- (navit_float)t->m01*(navit_float)t->m10*(navit_float)t->m22-
- (navit_float)t->m00*(navit_float)t->m12*(navit_float)t->m21;
-
- t->im00=(t->m11*t->m22-t->m12*t->m21)/det;
- t->im01=(t->m02*t->m21-t->m01*t->m22)/det;
- t->im02=(t->m01*t->m12-t->m02*t->m11)/det;
- t->im10=(t->m12*t->m20-t->m10*t->m22)/det;
- t->im11=(t->m00*t->m22-t->m02*t->m20)/det;
- t->im12=(t->m02*t->m10-t->m00*t->m12)/det;
- t->im20=(t->m10*t->m21-t->m11*t->m20)/det;
- t->im21=(t->m01*t->m20-t->m00*t->m21)/det;
- t->im22=(t->m00*t->m11-t->m01*t->m10)/det;
-}
-
-struct transformation *
-transform_new(struct pcoord *center, int scale, int yaw)
-{
- struct transformation *this_;
-
- this_=g_new0(struct transformation, 1);
- transform_set_screen_dist(this_, 100);
- this_->order_base=14;
- this_->pro=center->pro;
- this_->map_center.x=center->x;
- this_->map_center.y=center->y;
- this_->scale=scale/16.0;
- transform_set_yaw(this_, yaw);
- return this_;
-}
-
-int
-transform_get_hog(struct transformation *this_)
-{
- return HOG(*this_);
-}
-
-void
-transform_set_hog(struct transformation *this_, int hog)
-{
-#ifdef ENABLE_ROLL
- this_->hog=hog;
-#else
- dbg(lvl_error,"not supported\n");
-#endif
-
-}
-
-int
-transform_get_attr(struct transformation *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- switch (type) {
-#ifdef ENABLE_ROLL
- case attr_hog:
- attr->u.num=this_->hog;
- break;
-#endif
- default:
- return 0;
- }
- attr->type=type;
- return 1;
-}
-
-int
-transform_set_attr(struct transformation *this_, struct attr *attr)
-{
- switch (attr->type) {
-#ifdef ENABLE_ROLL
- case attr_hog:
- this_->hog=attr->u.num;
- return 1;
-#endif
- default:
- return 0;
- }
-}
-
-int
-transformation_get_order_base(struct transformation *this_)
-{
- return this_->order_base;
-}
-
-void
-transform_set_order_base(struct transformation *this_, int order_base)
-{
- this_->order_base=order_base;
-}
-
-
-struct transformation *
-transform_dup(struct transformation *t)
-{
- struct transformation *ret=g_new0(struct transformation, 1);
- *ret=*t;
- ret->map_sel=map_selection_dup(t->map_sel);
- ret->screen_sel=map_selection_dup(t->screen_sel);
- return ret;
-}
-
-static const navit_float gar2geo_units = 360.0/(1<<24);
-static const navit_float geo2gar_units = 1/(360.0/(1<<24));
-
-void
-transform_to_geo(enum projection pro, struct coord *c, struct coord_geo *g)
-{
- int x,y,northern,zone;
- switch (pro) {
- case projection_mg:
- g->lng=c->x/6371000.0/M_PI*180;
- g->lat=navit_atan(exp(c->y/6371000.0))/M_PI*360-90;
- break;
- case projection_garmin:
- g->lng=c->x*gar2geo_units;
- g->lat=c->y*gar2geo_units;
- break;
- case projection_utm:
- x=c->x;
- y=c->y;
- northern=y >= 0;
- if (!northern) {
- y+=10000000;
- }
- zone=(x/1000000);
- x=x%1000000;
- transform_utm_to_geo(x, y, zone, northern, g);
- break;
- default:
- break;
- }
-}
-
-void
-transform_from_geo(enum projection pro, struct coord_geo *g, struct coord *c)
-{
- switch (pro) {
- case projection_mg:
- c->x=g->lng*6371000.0*M_PI/180;
- c->y=log(navit_tan(M_PI_4+g->lat*M_PI/360))*6371000.0;
- break;
- case projection_garmin:
- c->x=g->lng*geo2gar_units;
- c->y=g->lat*geo2gar_units;
- break;
- default:
- break;
- }
-}
-
-void
-transform_from_to_count(struct coord *cfrom, enum projection from, struct coord *cto, enum projection to, int count)
-{
- struct coord_geo g;
- int i;
-
- for (i = 0 ; i < count ; i++) {
- transform_to_geo(from, cfrom, &g);
- transform_from_geo(to, &g, cto);
- cfrom++;
- cto++;
- }
-}
-
-void
-transform_from_to(struct coord *cfrom, enum projection from, struct coord *cto, enum projection to)
-{
- struct coord_geo g;
- transform_to_geo(from, cfrom, &g);
- transform_from_geo(to, &g, cto);
-}
-
-
-/**
- * @brief Transforms geodetic to Cartesian coordinates.
- *
- * This transforms geodetic coordinates (consisting of latitude and longitude) into ECEF Cartesian
- * coordinates.
- *
- * @param geo The WGS84 coordinates to convert
- * @param a Semi-minor axis of the ellipsoid
- * @param b Semi-minor axis of the ellipsoid
- * @param cart Points to a structure that will receive the Cartesian coordinates
- */
-void
-transform_geo_to_cart(struct coord_geo *geo, navit_float a, navit_float b, struct coord_geo_cart *cart)
-{
- navit_float n,ee=1-b*b/(a*a);
- n = a/sqrtf(1-ee*navit_sin(geo->lat)*navit_sin(geo->lat));
- cart->x=n*navit_cos(geo->lat)*navit_cos(geo->lng);
- cart->y=n*navit_cos(geo->lat)*navit_sin(geo->lng);
- cart->z=n*(1-ee)*navit_sin(geo->lat);
-}
-
-
-/**
- * @brief Transforms Cartesian to geodetic coordinates.
- *
- * This transforms ECEF Cartesian coordinates into geodetic coordinates, consisting of latitude and
- * longitude.
- *
- * @param cart The Cartesian coordinates
- * @param a Semi-minor axis of the ellipsoid
- * @param b Semi-minor axis of the ellipsoid
- * @param geo Points to a structure that will receive the geodetic coordinates
- */
-void
-transform_cart_to_geo(struct coord_geo_cart *cart, navit_float a, navit_float b, struct coord_geo *geo)
-{
- navit_float lat,lati,n,ee=1-b*b/(a*a), lng = navit_tan(cart->y/cart->x);
-
- lat = navit_tan(cart->z / navit_sqrt((cart->x * cart->x) + (cart->y * cart->y)));
- do
- {
- lati = lat;
-
- n = a / navit_sqrt(1-ee*navit_sin(lat)*navit_sin(lat));
- lat = navit_atan((cart->z + ee * n * navit_sin(lat)) / navit_sqrt(cart->x * cart->x + cart->y * cart->y));
- }
- while (fabs(lat - lati) >= 0.000000000000001);
-
- geo->lng=lng/M_PI*180;
- geo->lat=lat/M_PI*180;
-}
-
-
-/**
- * @brief Converts UTM coords to lat/long.
- *
- * Equations from USGS Bulletin 1532.
- *
- * @author Chuck Gantz- chuck.gantz@globalstar.com
- */
-void
-transform_utm_to_geo(const double UTMEasting, const double UTMNorthing, int ZoneNumber, int NorthernHemisphere, struct coord_geo *geo)
-{
-//East Longitudes are positive, West longitudes are negative.
-//North latitudes are positive, South latitudes are negative
-//Lat and Long are in decimal degrees.
-
- double Lat, Long;
- double k0 = 0.99960000000000004;
- double a = 6378137;
- double eccSquared = 0.0066943799999999998;
- double eccPrimeSquared;
- double e1 = (1-sqrt(1-eccSquared))/(1+sqrt(1-eccSquared));
- double N1, T1, C1, R1, D, M;
- double LongOrigin;
- double mu, phi1Rad;
- double x, y;
- double rad2deg = 180/M_PI;
-
- x = UTMEasting - 500000.0; //remove 500,000 meter offset for longitude
- y = UTMNorthing;
-
- if (!NorthernHemisphere) {
- y -= 10000000.0;//remove 10,000,000 meter offset used for southern hemisphere
- }
-
- LongOrigin = (ZoneNumber - 1)*6 - 180 + 3; //+3 puts origin in middle of zone
-
- eccPrimeSquared = (eccSquared)/(1-eccSquared);
-
- M = y / k0;
- mu = M/(a*(1-eccSquared/4-3*eccSquared*eccSquared/64-5*eccSquared*eccSquared*eccSquared/256));
- phi1Rad = mu + (3*e1/2-27*e1*e1*e1/32)*sin(2*mu)
- + (21*e1*e1/16-55*e1*e1*e1*e1/32)*sin(4*mu)
- +(151*e1*e1*e1/96)*sin(6*mu);
-
- N1 = a/sqrt(1-eccSquared*sin(phi1Rad)*sin(phi1Rad));
- T1 = tan(phi1Rad)*tan(phi1Rad);
- C1 = eccPrimeSquared*cos(phi1Rad)*cos(phi1Rad);
- R1 = a*(1-eccSquared)/pow(1-eccSquared*sin(phi1Rad)*sin(phi1Rad), 1.5);
- D = x/(N1*k0);
-
- Lat = phi1Rad - (N1*tan(phi1Rad)/R1)*(D*D/2-(5+3*T1+10*C1-4*C1*C1-9*eccPrimeSquared)*D*D*D*D/24
- +(61+90*T1+298*C1+45*T1*T1-252*eccPrimeSquared-3*C1*C1)*D*D*D*D*D*D/720);
- Lat = Lat * rad2deg;
-
- Long = (D-(1+2*T1+C1)*D*D*D/6+(5-2*C1+28*T1-3*C1*C1+8*eccPrimeSquared+24*T1*T1)
- *D*D*D*D*D/120)/cos(phi1Rad);
- Long = LongOrigin + Long * rad2deg;
-
- geo->lat=Lat;
- geo->lng=Long;
-}
-
-static struct coord
-transform_correct_projection(struct transformation *t, enum projection required_projection, struct coord c)
-{
- struct coord result;
- struct coord_geo g;
- if (required_projection == t->pro) {
- result=c;
- } else {
- transform_to_geo(required_projection, &c, &g);
- transform_from_geo(t->pro, &g, &result);
- }
- return result;
-}
-
-static struct coord
-transform_shift_by_center_and_scale(struct transformation *t, struct coord c)
-{
- struct coord result;
- result.x = c.x - t->map_center.x;
- result.y = c.y - t->map_center.y;
- result.x >>= t->scale_shift;
- result.y >>= t->scale_shift;
- return result;
-}
-
-struct coord_3d {
- int x;
- int y;
- int z;
-};
-
-
-static struct coord_3d
-transform_rotate(struct transformation *t, struct coord c)
-{
- struct coord_3d result;
- result.x=c.x*t->m00+c.y*t->m01+HOG(*t)*t->m02;
- result.y=c.x*t->m10+c.y*t->m11+HOG(*t)*t->m12;
- result.z=(c.x*t->m20+c.y*t->m21+HOG(*t)*t->m22);
- result.z+=t->offz << POST_SHIFT;
- dbg(lvl_debug, "result: (%d,%d,%d)\n", result.x,result.y,result.z);
- return result;
-}
-
-static struct coord_3d
-transform_z_clip(struct coord_3d c, struct coord_3d c_old, int zlimit)
-{
- struct coord_3d result;
- float clip_factor = ((float)zlimit-c.z)/(c_old.z-c.z);
- dbg(lvl_debug,"in (%d,%d,%d) - (%d,%d,%d)\n", c.x,c.y,c.z, c_old.x,c_old.y,c_old.z);
- result.x=c.x+(c_old.x-c.x)*clip_factor;
- result.y=c.y+(c_old.y-c.y)*clip_factor;
- result.z=zlimit;
- dbg(lvl_debug,"clip result: (%d,%d,%d)\n", result.x, result.y, result.z);
- return result;
-}
-
-static struct point
-transform_project_onto_view_plane(struct transformation *t, struct coord_3d c)
-{
- struct point result;
-#if 0
- dbg(lvl_debug,"z=%d\n",c.z);
-#endif
- result.x = (long long)c.x*t->xscale/c.z;
- result.y = (long long)c.y*t->yscale/c.z;
- return result;
-}
-
-static int
-transform_points_too_close(struct point screen_point, struct point screen_point_old, int mindist)
-{
- if (!mindist){
- return 0;
- }
- // approximation of Euclidean distance
- return (abs(screen_point.x - screen_point_old.x) +
- abs(screen_point.y - screen_point_old.y)) < mindist;
-}
-
-struct z_clip_result{
- struct coord_3d clipped_coord;
- int visible;
- int process_coord_again;
- int skip_coord;
-};
-
-static struct z_clip_result
-transform_z_clip_if_necessary(struct coord_3d coord, int zlimit, struct z_clip_result clip_result_old)
-{
- int visibility_changed;
- struct z_clip_result clip_result={{0,0}, 0, 0, 0};
- clip_result.visible=(coord.z < zlimit ? 0:1);
- visibility_changed=(clip_result_old.visible != -1)&&(clip_result.visible != clip_result_old.visible);
- if (visibility_changed) {
- clip_result.clipped_coord=transform_z_clip(coord, clip_result_old.clipped_coord, zlimit);
- } else {
- clip_result.clipped_coord=coord;
- }
- if (clip_result.visible && visibility_changed){
- // line was clipped, but current point
- // is visible -> process it again
- clip_result.process_coord_again=1;
- }else if (!clip_result.visible && !visibility_changed){
- clip_result.skip_coord=1;
- }
- return clip_result;
-}
-
-int
-transform(struct transformation *t, enum projection required_projection, struct coord *input,
- struct point *result, int count, int mindist, int width, int *width_result)
-{
- struct coord projected_coord, shifted_coord;
- struct coord_3d rotated_coord;
- struct point screen_point;
- int zlimit=t->znear;
- struct z_clip_result clip_result, clip_result_old={{0,0}, -1, 0, 0};
- int i,result_idx = 0,result_idx_last=0;
- dbg(lvl_debug,"count=%d\n", count);
- for (i=0; i < count; i++) {
- dbg(lvl_debug, "input coord %d: (%d, %d)\n", i, input[i].x, input[i].y);
-#if 0 /* doesn't work as wanted */
- if (i && input[i].x == input[0].x && input[i].y == input[0].y && result_idx && !width_result) {
- result[result_idx++]=result[0];
- continue;
- }
-#endif
- projected_coord = transform_correct_projection(t, required_projection, input[i]);
- shifted_coord = transform_shift_by_center_and_scale(t, projected_coord);
- rotated_coord = transform_rotate(t, shifted_coord);
-
- if (t->ddd) {
- clip_result=transform_z_clip_if_necessary(rotated_coord, zlimit, clip_result_old);
- clip_result_old=clip_result;
- if(clip_result.process_coord_again){
- i--;
- } else if (clip_result.skip_coord){
- continue;
- }
-#if 0
- clip_result.clipped_coord.z=2000000;
-#endif
- screen_point = transform_project_onto_view_plane(t, clip_result.clipped_coord);
- } else {
- screen_point.x = rotated_coord.x>>POST_SHIFT;
- screen_point.y = rotated_coord.y>>POST_SHIFT;
- }
- screen_point.x+=t->offx;
- screen_point.y+=t->offy;
- dbg(lvl_debug,"result: (%d, %d)\n", screen_point.x, screen_point.y);
-
- if (i != 0 && i != count-1 &&
- (input[i+1].x != input[0].x || input[i+1].y != input[0].y)) {
- if (transform_points_too_close(screen_point, result[result_idx_last], mindist)){
- continue;
- }
- }
- result[result_idx]=screen_point;
- if (width_result) {
- if (t->ddd) {
- dbg(lvl_debug,"width %d * %d / %d\n",width,t->wscale,clip_result.clipped_coord.z);
- width_result[result_idx]=width*t->wscale/clip_result.clipped_coord.z;
- } else
- width_result[result_idx]=width;
- }
- result_idx_last=result_idx;
- result_idx++;
- }
- return result_idx;
-}
-
-static void
-transform_apply_inverse_matrix(struct transformation *t, struct coord_geo_cart *in, struct coord_geo_cart *out)
-{
- out->x=in->x*t->im00+in->y*t->im01+in->z*t->im02;
- out->y=in->x*t->im10+in->y*t->im11+in->z*t->im12;
- out->z=in->x*t->im20+in->y*t->im21+in->z*t->im22;
-}
-
-static int
-transform_zplane_intersection(struct coord_geo_cart *p1, struct coord_geo_cart *p2, navit_float z, struct coord_geo_cart *result)
-{
- navit_float dividend=z-p1->z;
- navit_float divisor=p2->z-p1->z;
- navit_float q;
- if (!divisor) {
- if (dividend)
- return 0; /* no intersection */
- else
- return 3; /* identical planes */
- }
- q=dividend/divisor;
- result->x=p1->x+q*(p2->x-p1->x);
- result->y=p1->y+q*(p2->y-p1->y);
- result->z=z;
- if (q >= 0 && q <= 1)
- return 1; /* intersection within [p1,p2] */
- return 2; /* intersection without [p1,p2] */
-}
-
-static void
-transform_screen_to_3d(struct transformation *t, struct point *p, navit_float z, struct coord_geo_cart *cg)
-{
- double xc,yc;
- double offz=t->offz << POST_SHIFT;
- xc=p->x - t->offx;
- yc=p->y - t->offy;
- cg->x=xc*z/t->xscale;
- cg->y=yc*z/t->yscale;
- cg->z=z-offz;
-}
-
-static int
-transform_reverse_near_far(struct transformation *t, struct point *p, struct coord *c, int near, int far)
-{
- double xc,yc;
- dbg(lvl_debug,"%d,%d\n",p->x,p->y);
- if (t->ddd) {
- struct coord_geo_cart nearc,farc,nears,fars,intersection;
- transform_screen_to_3d(t, p, near, &nearc);
- transform_screen_to_3d(t, p, far, &farc);
- transform_apply_inverse_matrix(t, &nearc, &nears);
- transform_apply_inverse_matrix(t, &farc, &fars);
- if (transform_zplane_intersection(&nears, &fars, HOG(*t), &intersection) != 1)
- return 0;
- xc=intersection.x;
- yc=intersection.y;
- } else {
- double xcn,ycn;
- xcn=p->x - t->offx;
- ycn=p->y - t->offy;
- xc=(xcn*t->im00+ycn*t->im01)*(1 << POST_SHIFT);
- yc=(xcn*t->im10+ycn*t->im11)*(1 << POST_SHIFT);
- }
- c->x=xc*(1 << t->scale_shift)+t->map_center.x;
- c->y=yc*(1 << t->scale_shift)+t->map_center.y;
- return 1;
-}
-
-int
-transform_reverse(struct transformation *t, struct point *p, struct coord *c)
-{
- return transform_reverse_near_far(t, p, c, t->znear, t->zfar);
-}
-
-double
-transform_pixels_to_map_distance(struct transformation *transformation, int pixels)
-{
- struct point line_in_map_center[2];
- struct coord c[2];
- struct point screen_center=transformation->screen_center;
- // Generally, the scale will not be the same across the map
- // (for example with Mercator projection), so calculate the
- // conversion in the screen center for a reasonable average value.
- line_in_map_center[0].x=screen_center.x-pixels/2;
- line_in_map_center[1].x=screen_center.x+pixels/2;
- line_in_map_center[0].y=screen_center.y;
- line_in_map_center[1].y=screen_center.y;
- transform_reverse(transformation, &line_in_map_center[0], &c[0]);
- transform_reverse(transformation, &line_in_map_center[1], &c[1]);
- return transform_distance(transform_get_projection(transformation), &c[0], &c[1]);
-}
-
-enum projection
-transform_get_projection(struct transformation *this_)
-{
- return this_->pro;
-}
-
-void
-transform_set_projection(struct transformation *this_, enum projection pro)
-{
- this_->pro=pro;
-}
-
-static int
-min4(int v1,int v2, int v3, int v4)
-{
- int res=v1;
- if (v2 < res)
- res=v2;
- if (v3 < res)
- res=v3;
- if (v4 < res)
- res=v4;
- return res;
-}
-
-static int
-max4(int v1,int v2, int v3, int v4)
-{
- int res=v1;
- if (v2 > res)
- res=v2;
- if (v3 > res)
- res=v3;
- if (v4 > res)
- res=v4;
- return res;
-}
-
-struct map_selection *
-transform_get_selection(struct transformation *this_, enum projection pro, int order)
-{
-
- struct map_selection *ret,*curri,*curro;
- struct coord_geo g;
-
- ret=map_selection_dup(this_->map_sel);
- curri=this_->map_sel;
- curro=ret;
- while (curri) {
- if (this_->pro != pro) {
- transform_to_geo(this_->pro, &curri->u.c_rect.lu, &g);
- transform_from_geo(pro, &g, &curro->u.c_rect.lu);
- dbg(lvl_debug,"%f,%f", g.lat, g.lng);
- transform_to_geo(this_->pro, &curri->u.c_rect.rl, &g);
- transform_from_geo(pro, &g, &curro->u.c_rect.rl);
- dbg(lvl_debug,": - %f,%f\n", g.lat, g.lng);
- }
- dbg(lvl_debug,"transform rect for %d is %d,%d - %d,%d\n", pro, curro->u.c_rect.lu.x, curro->u.c_rect.lu.y, curro->u.c_rect.rl.x, curro->u.c_rect.rl.y);
- curro->order+=order;
-#if 0
- curro->u.c_rect.lu.x-=500;
- curro->u.c_rect.lu.y+=500;
- curro->u.c_rect.rl.x+=500;
- curro->u.c_rect.rl.y-=500;
-#endif
- curro->range=item_range_all;
- curri=curri->next;
- curro=curro->next;
- }
- return ret;
-}
-
-struct coord *
-transform_center(struct transformation *this_)
-{
- return &this_->map_center;
-}
-
-struct coord *
-transform_get_center(struct transformation *this_)
-{
- return &this_->map_center;
-}
-
-void
-transform_set_center(struct transformation *this_, struct coord *c)
-{
- this_->map_center=*c;
-}
-
-
-void
-transform_set_yaw(struct transformation *t,int yaw)
-{
- t->yaw=yaw;
- transform_setup_matrix(t);
-}
-
-int
-transform_get_yaw(struct transformation *this_)
-{
- return this_->yaw;
-}
-
-void
-transform_set_pitch(struct transformation *this_,int pitch)
-{
- this_->pitch=pitch;
- transform_setup_matrix(this_);
-}
-int
-transform_get_pitch(struct transformation *this_)
-{
- return this_->pitch;
-}
-
-void
-transform_set_roll(struct transformation *this_,int roll)
-{
-#ifdef ENABLE_ROLL
- this_->roll=roll;
- transform_setup_matrix(this_);
-#else
- dbg(lvl_error,"not supported\n");
-#endif
-}
-
-int
-transform_get_roll(struct transformation *this_)
-{
-#ifdef ENABLE_ROLL
- return this_->roll;
-#else
- return 0;
-#endif
-}
-
-void
-transform_set_distance(struct transformation *this_,int distance)
-{
- transform_set_screen_dist(this_, distance);
- transform_setup_matrix(this_);
-}
-
-int
-transform_get_distance(struct transformation *this_)
-{
- return this_->screen_dist;
-}
-
-void
-transform_set_scales(struct transformation *this_, int xscale, int yscale, int wscale)
-{
- this_->xscale3d=xscale;
- this_->yscale3d=yscale;
- this_->wscale3d=wscale;
-}
-
-void
-transform_set_screen_selection(struct transformation *t, struct map_selection *sel)
-{
- map_selection_destroy(t->screen_sel);
- t->screen_sel=map_selection_dup(sel);
- if (sel) {
- t->screen_center.x=(sel->u.p_rect.rl.x-sel->u.p_rect.lu.x)/2;
- t->screen_center.y=(sel->u.p_rect.rl.y-sel->u.p_rect.lu.y)/2;
- transform_setup_matrix(t);
- }
-}
-
-void
-transform_set_screen_center(struct transformation *t, struct point *p)
-{
- t->screen_center=*p;
-}
-
-void
-transform_get_size(struct transformation *t, int *width, int *height)
-{
- struct point_rect *r;
- if (t->screen_sel) {
- r=&t->screen_sel->u.p_rect;
- *width=r->rl.x-r->lu.x;
- *height=r->rl.y-r->lu.y;
- }
-}
-
-void
-transform_setup_source_rect(struct transformation *t)
-{
- int i;
- struct coord screen[4];
- struct point screen_pnt[4];
- struct point_rect *pr;
- struct map_selection *ms,*msm,*next,**msm_last;
- ms=t->map_sel;
- while (ms) {
- next=ms->next;
- g_free(ms);
- ms=next;
- }
- t->map_sel=NULL;
- msm_last=&t->map_sel;
- ms=t->screen_sel;
- while (ms) {
- msm=g_new0(struct map_selection, 1);
- *msm=*ms;
- pr=&ms->u.p_rect;
- screen_pnt[0].x=pr->lu.x; /* left upper */
- screen_pnt[0].y=pr->lu.y;
- screen_pnt[1].x=pr->rl.x; /* right upper */
- screen_pnt[1].y=pr->lu.y;
- screen_pnt[2].x=pr->rl.x; /* right lower */
- screen_pnt[2].y=pr->rl.y;
- screen_pnt[3].x=pr->lu.x; /* left lower */
- screen_pnt[3].y=pr->rl.y;
- if (t->ddd) {
- struct coord_geo_cart tmp,cg[8];
- struct coord c;
- int valid=0;
- unsigned char edgenodes[]={
- 0,1,
- 1,2,
- 2,3,
- 3,0,
- 4,5,
- 5,6,
- 6,7,
- 7,4,
- 0,4,
- 1,5,
- 2,6,
- 3,7};
- for (i = 0 ; i < 8 ; i++) {
- transform_screen_to_3d(t, &screen_pnt[i%4], (i >= 4 ? t->zfar:t->znear), &tmp);
- transform_apply_inverse_matrix(t, &tmp, &cg[i]);
- }
- msm->u.c_rect.lu.x=0;
- msm->u.c_rect.lu.y=0;
- msm->u.c_rect.rl.x=0;
- msm->u.c_rect.rl.y=0;
- for (i = 0 ; i < 12 ; i++) {
- if (transform_zplane_intersection(&cg[edgenodes[i*2]], &cg[edgenodes[i*2+1]], HOG(*t), &tmp) == 1) {
- c.x=tmp.x*(1 << t->scale_shift)+t->map_center.x;
- c.y=tmp.y*(1 << t->scale_shift)+t->map_center.y;
- dbg(lvl_debug,"intersection with edge %d at 0x%x,0x%x\n",i,c.x,c.y);
- if (valid)
- coord_rect_extend(&msm->u.c_rect, &c);
- else {
- msm->u.c_rect.lu=c;
- msm->u.c_rect.rl=c;
- valid=1;
- }
- dbg(lvl_debug,"rect 0x%x,0x%x - 0x%x,0x%x\n",msm->u.c_rect.lu.x,msm->u.c_rect.lu.y,msm->u.c_rect.rl.x,msm->u.c_rect.rl.y);
- }
- }
- } else {
- for (i = 0 ; i < 4 ; i++) {
- transform_reverse(t, &screen_pnt[i], &screen[i]);
- dbg(lvl_debug,"map(%d) %d,%d=0x%x,0x%x\n", i,screen_pnt[i].x, screen_pnt[i].y, screen[i].x, screen[i].y);
- }
- msm->u.c_rect.lu.x=min4(screen[0].x,screen[1].x,screen[2].x,screen[3].x);
- msm->u.c_rect.rl.x=max4(screen[0].x,screen[1].x,screen[2].x,screen[3].x);
- msm->u.c_rect.rl.y=min4(screen[0].y,screen[1].y,screen[2].y,screen[3].y);
- msm->u.c_rect.lu.y=max4(screen[0].y,screen[1].y,screen[2].y,screen[3].y);
- }
- dbg(lvl_debug,"%dx%d\n", msm->u.c_rect.rl.x-msm->u.c_rect.lu.x,
- msm->u.c_rect.lu.y-msm->u.c_rect.rl.y);
- *msm_last=msm;
- msm_last=&msm->next;
- ms=ms->next;
- }
-}
-
-long
-transform_get_scale(struct transformation *t)
-{
- return (int)(t->scale*16);
-}
-
-void
-transform_set_scale(struct transformation *t, long scale)
-{
- t->scale=scale/16.0;
- transform_setup_matrix(t);
-}
-
-
-int
-transform_get_order(struct transformation *t)
-{
- dbg(lvl_debug,"order %d\n", t->order);
- return t->order;
-}
-
-
-
-#define TWOPI (M_PI*2)
-#define GC2RAD(c) ((c) * TWOPI/(1<<24))
-#define minf(a,b) ((a) < (b) ? (a) : (b))
-
-static double
-transform_distance_garmin(struct coord *c1, struct coord *c2)
-{
-#ifdef USE_HALVESINE
- static const int earth_radius = 6371*1000; //m change accordingly
-// static const int earth_radius = 3960; //miles
-
-//Point 1 cords
- navit_float lat1 = GC2RAD(c1->y);
- navit_float long1 = GC2RAD(c1->x);
-
-//Point 2 cords
- navit_float lat2 = GC2RAD(c2->y);
- navit_float long2 = GC2RAD(c2->x);
-
-//Haversine Formula
- navit_float dlong = long2-long1;
- navit_float dlat = lat2-lat1;
-
- navit_float sinlat = navit_sin(dlat/2);
- navit_float sinlong = navit_sin(dlong/2);
-
- navit_float a=(sinlat*sinlat)+navit_cos(lat1)*navit_cos(lat2)*(sinlong*sinlong);
- navit_float c=2*navit_asin(minf(1,navit_sqrt(a)));
-#ifdef AVOID_FLOAT
- return round(earth_radius*c);
-#else
- return earth_radius*c;
-#endif
-#else
-#define GMETER 2.3887499999999999
- navit_float dx,dy;
- dx=c1->x-c2->x;
- dy=c1->y-c2->y;
- return navit_sqrt(dx*dx+dy*dy)*GMETER;
-#undef GMETER
-#endif
-}
-
-double
-transform_scale(int y)
-{
- struct coord c;
- struct coord_geo g;
- c.x=0;
- c.y=y;
- transform_to_geo(projection_mg, &c, &g);
- return 1/navit_cos(g.lat/180*M_PI);
-}
-
-#ifdef AVOID_FLOAT
-static int
-tab_sqrt[]={14142,13379,12806,12364,12018,11741,11517,11333,11180,11051,10943,10850,10770,10701,10640,10587,10540,10499,10462,10429,10400,10373,10349,10327,10307,10289,10273,10257,10243,10231,10219,10208};
-
-static int tab_int_step = 0x20000;
-static int tab_int_scale[]={10000,10002,10008,10019,10033,10052,10076,10103,10135,10171,10212,10257,10306,10359,10417,10479,10546,10617,10693,10773,10858,10947,11041,11140,11243,11352,11465,11582,11705,11833,11965,12103,12246,12394,12547,12706,12870,13039,13214,13395,13581,13773,13971,14174,14384,14600,14822,15050,15285,15526,15774,16028,16289,16557,16832,17114,17404,17700,18005,18316,18636,18964,19299,19643,19995,20355,20724,21102,21489,21885,22290,22705,23129,23563,24007,24461,24926,25401,25886,26383,26891};
-
-int transform_int_scale(int y)
-{
- int i,size = sizeof(tab_int_scale)/sizeof(int);
- if (y < 0)
- y=-y;
- i=y/tab_int_step;
- if (i < size-1)
- return tab_int_scale[i]+((tab_int_scale[i+1]-tab_int_scale[i])*(y-i*tab_int_step))/tab_int_step;
- return tab_int_scale[size-1];
-}
-#endif
-
-double
-transform_distance(enum projection pro, struct coord *c1, struct coord *c2)
-{
- if (pro == projection_mg) {
-#ifndef AVOID_FLOAT
- double dx,dy,scale=transform_scale((c1->y+c2->y)/2);
- dx=c1->x-c2->x;
- dy=c1->y-c2->y;
- return sqrt(dx*dx+dy*dy)/scale;
-#else
- int dx,dy,f,scale=transform_int_scale((c1->y+c2->y)/2);
- dx=c1->x-c2->x;
- dy=c1->y-c2->y;
- if (dx < 0)
- dx=-dx;
- if (dy < 0)
- dy=-dy;
- while (dx > 20000 || dy > 20000) {
- dx/=10;
- dy/=10;
- scale/=10;
- }
- if (! dy)
- return dx*10000/scale;
- if (! dx)
- return dy*10000/scale;
- if (dx > dy) {
- f=dx*8/dy-8;
- if (f >= 32)
- return dx*10000/scale;
- return dx*tab_sqrt[f]/scale;
- } else {
- f=dy*8/dx-8;
- if (f >= 32)
- return dy*10000/scale;
- return dy*tab_sqrt[f]/scale;
- }
-#endif
- } else if (pro == projection_garmin) {
- return transform_distance_garmin(c1, c2);
- } else {
- dbg(lvl_error,"Unknown projection: %d\n", pro);
- return 0;
- }
-}
-
-void
-transform_project(enum projection pro, struct coord *c, int distance, int angle, struct coord *res)
-{
- double scale;
- switch (pro) {
- case projection_mg:
- scale=transform_scale(c->y);
- res->x=c->x+distance*sin(angle*M_PI/180)*scale;
- res->y=c->y+distance*cos(angle*M_PI/180)*scale;
- break;
- default:
- dbg(lvl_error,"Unsupported projection: %d\n", pro);
- return;
- }
-
-}
-
-
-double
-transform_polyline_length(enum projection pro, struct coord *c, int count)
-{
- double ret=0;
- int i;
-
- for (i = 0 ; i < count-1 ; i++)
- ret+=transform_distance(pro, &c[i], &c[i+1]);
- return ret;
-}
-
-static int
-transform_overflow_possible_if_squared(int count, ...) {
- va_list ap;
- int i, value, result = 0;
-
- va_start (ap, count);
- for (i = 0; i < count; i++) {
- value = va_arg (ap, int);
- if (abs(value)>32767) {
- result = 1;
- }
- }
- va_end (ap);
- return result;
-}
-
-int
-transform_distance_sq(struct coord *c1, struct coord *c2)
-{
- int dx=c1->x-c2->x;
- int dy=c1->y-c2->y;
-
- if (transform_overflow_possible_if_squared(2, dx, dy))
- return INT_MAX;
- else
- return dx*dx+dy*dy;
-}
-
-navit_float
-transform_distance_sq_float(struct coord *c1, struct coord *c2)
-{
- int dx=c1->x-c2->x;
- int dy=c1->y-c2->y;
- return (navit_float)dx*dx+dy*dy;
-}
-
-int
-transform_distance_sq_pc(struct pcoord *c1, struct pcoord *c2)
-{
- struct coord p1,p2;
- p1.x = c1->x; p1.y = c1->y;
- p2.x = c2->x; p2.y = c2->y;
- return transform_distance_sq(&p1, &p2);
-}
-
-int
-transform_distance_line_sq(struct coord *l0, struct coord *l1, struct coord *ref, struct coord *lpnt)
-{
- int vx,vy,wx,wy;
- int c1,c2;
- int climit=1000000;
- struct coord l;
-
- vx=l1->x-l0->x;
- vy=l1->y-l0->y;
- wx=ref->x-l0->x;
- wy=ref->y-l0->y;
-
- if (transform_overflow_possible_if_squared(4, vx, vy, wx, wy)) {
- return INT_MAX;
- }
-
- c1=vx*wx+vy*wy;
- if ( c1 <= 0 ) {
- if (lpnt)
- *lpnt=*l0;
- return transform_distance_sq(l0, ref);
- }
- c2=vx*vx+vy*vy;
- if ( c2 <= c1 ) {
- if (lpnt)
- *lpnt=*l1;
- return transform_distance_sq(l1, ref);
- }
- while (c1 > climit || c2 > climit) {
- c1/=256;
- c2/=256;
- }
- l.x=l0->x+vx*c1/c2;
- l.y=l0->y+vy*c1/c2;
- if (lpnt)
- *lpnt=l;
- return transform_distance_sq(&l, ref);
-}
-
-navit_float
-transform_distance_line_sq_float(struct coord *l0, struct coord *l1, struct coord *ref, struct coord *lpnt)
-{
- navit_float vx,vy,wx,wy;
- navit_float c1,c2;
- struct coord l;
-
- vx=l1->x-l0->x;
- vy=l1->y-l0->y;
- wx=ref->x-l0->x;
- wy=ref->y-l0->y;
-
- c1=vx*wx+vy*wy;
- if ( c1 <= 0 ) {
- if (lpnt)
- *lpnt=*l0;
- return transform_distance_sq_float(l0, ref);
- }
- c2=vx*vx+vy*vy;
- if ( c2 <= c1 ) {
- if (lpnt)
- *lpnt=*l1;
- return transform_distance_sq_float(l1, ref);
- }
- l.x=l0->x+vx*c1/c2;
- l.y=l0->y+vy*c1/c2;
- if (lpnt)
- *lpnt=l;
- return transform_distance_sq_float(&l, ref);
-}
-
-int
-transform_distance_polyline_sq(struct coord *c, int count, struct coord *ref, struct coord *lpnt, int *pos)
-{
- int i,dist,distn;
- struct coord lp;
- if (count < 2)
- return INT_MAX;
- if (pos)
- *pos=0;
- dist=transform_distance_line_sq(&c[0], &c[1], ref, lpnt);
- for (i=2 ; i < count ; i++) {
- distn=transform_distance_line_sq(&c[i-1], &c[i], ref, &lp);
- if (distn < dist) {
- dist=distn;
- if (lpnt)
- *lpnt=lp;
- if (pos)
- *pos=i-1;
- }
- }
- return dist;
-}
-
-int
-transform_douglas_peucker(struct coord *in, int count, int dist_sq, struct coord *out)
-{
- int ret=0;
- int i,d,dmax=0, idx=0;
- for (i = 1; i < count-2 ; i++) {
- d=transform_distance_line_sq(&in[0], &in[count-1], &in[i], NULL);
- if (d > dmax) {
- idx=i;
- dmax=d;
- }
- }
- if (dmax > dist_sq) {
- ret=transform_douglas_peucker(in, idx, dist_sq, out)-1;
- ret+=transform_douglas_peucker(in+idx, count-idx, dist_sq, out+ret);
- } else {
- if (count > 0)
- out[ret++]=in[0];
- if (count > 1)
- out[ret++]=in[count-1];
- }
- return ret;
-}
-
-int
-transform_douglas_peucker_float(struct coord *in, int count, navit_float dist_sq, struct coord *out)
-{
- int ret=0;
- int i,idx=0;
- navit_float d,dmax=0;
- for (i = 1; i < count-2 ; i++) {
- d=transform_distance_line_sq_float(&in[0], &in[count-1], &in[i], NULL);
- if (d > dmax) {
- idx=i;
- dmax=d;
- }
- }
- if (dmax > dist_sq) {
- ret=transform_douglas_peucker_float(in, idx, dist_sq, out)-1;
- ret+=transform_douglas_peucker_float(in+idx, count-idx, dist_sq, out+ret);
- } else {
- if (count > 0)
- out[ret++]=in[0];
- if (count > 1)
- out[ret++]=in[count-1];
- }
- return ret;
-}
-
-
-void
-transform_print_deg(double deg)
-{
- printf("%2.0f:%2.0f:%2.4f", floor(deg), fmod(deg*60,60), fmod(deg*3600,60));
-}
-
-#ifdef AVOID_FLOAT
-static int tab_atan[]={0,262,524,787,1051,1317,1584,1853,2126,2401,2679,2962,3249,3541,3839,4142,4452,4770,5095,5430,5774,6128,6494,6873,7265,7673,8098,8541,9004,9490,10000,10538};
-
-static int
-atan2_int_lookup(int val)
-{
- int len=sizeof(tab_atan)/sizeof(int);
- int i=len/2;
- int p=i-1;
- for (;;) {
- i>>=1;
- if (val < tab_atan[p])
- p-=i;
- else
- if (val < tab_atan[p+1])
- return p+(p>>1);
- else
- p+=i;
- }
-}
-
-static int
-atan2_int(int dx, int dy)
-{
- int mul=1,add=0,ret;
- if (! dx) {
- return dy < 0 ? 180 : 0;
- }
- if (! dy) {
- return dx < 0 ? -90 : 90;
- }
- if (dx < 0) {
- dx=-dx;
- mul=-1;
- }
- if (dy < 0) {
- dy=-dy;
- add=180*mul;
- mul*=-1;
- }
- while (dx > 20000 || dy > 20000) {
- dx/=10;
- dy/=10;
- }
- if (dx > dy) {
- ret=90-atan2_int_lookup(dy*10000/dx);
- } else {
- ret=atan2_int_lookup(dx*10000/dy);
- }
- return ret*mul+add;
-}
-#endif
-
-/**
- * @brief Gets the bearing from one point to another
- *
- * @param c1 The first coordinate
- * @param c2 The second coordinate
- * @param dir The direction: if it is -1, the bearing from c2 to c1 is returned, else the bearing from c1 to c2
- *
- * @return The bearing in degrees, {@code 0 <= result < 360}.
- */
-int
-transform_get_angle_delta(struct coord *c1, struct coord *c2, int dir)
-{
- int dx=c2->x-c1->x;
- int dy=c2->y-c1->y;
-#ifndef AVOID_FLOAT
- double angle;
- angle=atan2(dx,dy);
- angle*=180/M_PI;
-#else
- int angle;
- angle=atan2_int(dx,dy);
-#endif
- if (dir == -1)
- angle=angle-180;
- if (angle < 0)
- angle+=360;
- return angle;
-}
-
-int
-transform_within_border(struct transformation *this_, struct point *p, int border)
-{
- struct map_selection *ms=this_->screen_sel;
- while (ms) {
- struct point_rect *r=&ms->u.p_rect;
- if (p->x >= r->lu.x+border && p->x <= r->rl.x-border &&
- p->y >= r->lu.y+border && p->y <= r->rl.y-border)
- return 1;
- ms=ms->next;
- }
- return 0;
-}
-
-int
-transform_within_dist_point(struct coord *ref, struct coord *c, int dist)
-{
- if (c->x-dist > ref->x)
- return 0;
- if (c->x+dist < ref->x)
- return 0;
- if (c->y-dist > ref->y)
- return 0;
- if (c->y+dist < ref->y)
- return 0;
- if ((c->x-ref->x)*(c->x-ref->x) + (c->y-ref->y)*(c->y-ref->y) <= dist*dist)
- return 1;
- return 0;
-}
-
-int
-transform_within_dist_line(struct coord *ref, struct coord *c0, struct coord *c1, int dist)
-{
- int vx,vy,wx,wy;
- int n1,n2;
- struct coord lc;
-
- if (c0->x < c1->x) {
- if (c0->x-dist > ref->x)
- return 0;
- if (c1->x+dist < ref->x)
- return 0;
- } else {
- if (c1->x-dist > ref->x)
- return 0;
- if (c0->x+dist < ref->x)
- return 0;
- }
- if (c0->y < c1->y) {
- if (c0->y-dist > ref->y)
- return 0;
- if (c1->y+dist < ref->y)
- return 0;
- } else {
- if (c1->y-dist > ref->y)
- return 0;
- if (c0->y+dist < ref->y)
- return 0;
- }
- vx=c1->x-c0->x;
- vy=c1->y-c0->y;
- wx=ref->x-c0->x;
- wy=ref->y-c0->y;
-
- n1=vx*wx+vy*wy;
- if ( n1 <= 0 )
- return transform_within_dist_point(ref, c0, dist);
- n2=vx*vx+vy*vy;
- if ( n2 <= n1 )
- return transform_within_dist_point(ref, c1, dist);
-
- lc.x=c0->x+vx*n1/n2;
- lc.y=c0->y+vy*n1/n2;
- return transform_within_dist_point(ref, &lc, dist);
-}
-
-int
-transform_within_dist_polyline(struct coord *ref, struct coord *c, int count, int close, int dist)
-{
- int i;
- for (i = 0 ; i < count-1 ; i++) {
- if (transform_within_dist_line(ref,c+i,c+i+1,dist)) {
- return 1;
- }
- }
- if (close)
- return (transform_within_dist_line(ref,c,c+count-1,dist));
- return 0;
-}
-
-int
-transform_within_dist_polygon(struct coord *ref, struct coord *c, int count, int dist)
-{
- int i, j, ci = 0;
- for (i = 0, j = count-1; i < count; j = i++) {
- if ((((c[i].y <= ref->y) && ( ref->y < c[j].y )) ||
- ((c[j].y <= ref->y) && ( ref->y < c[i].y))) &&
- (ref->x < (c[j].x - c[i].x) * (ref->y - c[i].y) / (c[j].y - c[i].y) + c[i].x))
- ci = !ci;
- }
- if (! ci) {
- if (dist)
- return transform_within_dist_polyline(ref, c, count, dist, 1);
- else
- return 0;
- }
- return 1;
-}
-
-int
-transform_within_dist_item(struct coord *ref, enum item_type type, struct coord *c, int count, int dist)
-{
- if (type < type_line)
- return transform_within_dist_point(ref, c, dist);
- if (type < type_area)
- return transform_within_dist_polyline(ref, c, count, 0, dist);
- return transform_within_dist_polygon(ref, c, count, dist);
-}
-
-void
-transform_copy(struct transformation *src, struct transformation *dst)
-{
- memcpy(dst, src, sizeof(*src));
-}
-
-void
-transform_destroy(struct transformation *t)
-{
- map_selection_destroy(t->map_sel);
- map_selection_destroy(t->screen_sel);
- g_free(t);
-}
-
-
-/*
-Note: there are many mathematically equivalent ways to express these formulas. As usual, not all of them are computationally equivalent.
-
-L = latitude in radians (positive north)
-Lo = longitude in radians (positive east)
-E = easting (meters)
-N = northing (meters)
-
-For the sphere
-
-E = r Lo
-N = r ln [ tan (pi/4 + L/2) ]
-
-where
-
-r = radius of the sphere (meters)
-ln() is the natural logarithm
-
-For the ellipsoid
-
-E = a Lo
-N = a * ln ( tan (pi/4 + L/2) * ( (1 - e * sin (L)) / (1 + e * sin (L))) ** (e/2) )
-
-
- e
- -
- pi L 1 - e sin(L) 2
- = a ln( tan( ---- + ---) (--------------) )
- 4 2 1 + e sin(L)
-
-
-where
-
-a = the length of the semi-major axis of the ellipsoid (meters)
-e = the first eccentricity of the ellipsoid
-
-
-*/
-
-
diff --git a/navit/transform.h b/navit/transform.h
deleted file mode 100644
index e58e136d5..000000000
--- a/navit/transform.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_TRANSFORM_H
-#define NAVIT_TRANSFORM_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include "coord.h"
-
-/* prototypes */
-enum attr_type;
-enum item_type;
-enum map_datum;
-enum projection;
-struct attr;
-struct attr_iter;
-struct coord;
-struct coord_geo;
-struct coord_geo_cart;
-struct map_selection;
-struct pcoord;
-struct point;
-struct transformation;
-struct transformation *transform_new(struct pcoord *center, int scale, int yaw);
-int transform_get_hog(struct transformation *this_);
-void transform_set_hog(struct transformation *this_, int hog);
-int transform_get_attr(struct transformation *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int transform_set_attr(struct transformation *this_, struct attr *attr);
-int transformation_get_order_base(struct transformation *this_);
-void transform_set_order_base(struct transformation *this_, int order_base);
-struct transformation *transform_dup(struct transformation *t);
-void transform_to_geo(enum projection pro, struct coord *c, struct coord_geo *g);
-void transform_from_geo(enum projection pro, struct coord_geo *g, struct coord *c);
-void transform_from_to_count(struct coord *cfrom, enum projection from, struct coord *cto, enum projection to, int count);
-void transform_from_to(struct coord *cfrom, enum projection from, struct coord *cto, enum projection to);
-void transform_geo_to_cart(struct coord_geo *geo, navit_float a, navit_float b, struct coord_geo_cart *cart);
-void transform_cart_to_geo(struct coord_geo_cart *cart, navit_float a, navit_float b, struct coord_geo *geo);
-void transform_utm_to_geo(const double UTMEasting, const double UTMNorthing, int ZoneNumber, int NorthernHemisphere, struct coord_geo *geo);
-void transform_datum(struct coord_geo *from, enum map_datum from_datum, struct coord_geo *to, enum map_datum to_datum);
-int transform(struct transformation *t, enum projection pro, struct coord *c, struct point *p, int count, int mindist, int width, int *width_return);
-int transform_reverse(struct transformation *t, struct point *p, struct coord *c);
-double transform_pixels_to_map_distance(struct transformation *transformation, int pixels);
-enum projection transform_get_projection(struct transformation *this_);
-void transform_set_projection(struct transformation *this_, enum projection pro);
-struct map_selection *transform_get_selection(struct transformation *this_, enum projection pro, int order);
-struct coord *transform_center(struct transformation *this_);
-struct coord *transform_get_center(struct transformation *this_);
-void transform_set_center(struct transformation *this_, struct coord *c);
-void transform_set_yaw(struct transformation *t, int yaw);
-int transform_get_yaw(struct transformation *this_);
-void transform_set_pitch(struct transformation *this_, int pitch);
-int transform_get_pitch(struct transformation *this_);
-void transform_set_roll(struct transformation *this_, int roll);
-int transform_get_roll(struct transformation *this_);
-void transform_set_distance(struct transformation *this_, int distance);
-int transform_get_distance(struct transformation *this_);
-void transform_set_scales(struct transformation *this_, int xscale, int yscale, int wscale);
-void transform_set_screen_selection(struct transformation *t, struct map_selection *sel);
-void transform_set_screen_center(struct transformation *t, struct point *p);
-void transform_get_size(struct transformation *t, int *width, int *height);
-void transform_setup(struct transformation *t, struct pcoord *c, int scale, int yaw);
-void transform_setup_source_rect(struct transformation *t);
-long transform_get_scale(struct transformation *t);
-void transform_set_scale(struct transformation *t, long scale);
-int transform_get_order(struct transformation *t);
-double transform_scale(int y);
-double transform_distance(enum projection pro, struct coord *c1, struct coord *c2);
-void transform_project(enum projection pro, struct coord *c, int distance, int angle, struct coord *res);
-double transform_polyline_length(enum projection pro, struct coord *c, int count);
-int transform_distance_sq(struct coord *c1, struct coord *c2);
-navit_float transform_distance_sq_float(struct coord *c1, struct coord *c2);
-int transform_distance_sq_pc(struct pcoord *c1, struct pcoord *c2);
-int transform_distance_line_sq(struct coord *l0, struct coord *l1, struct coord *ref, struct coord *lpnt);
-navit_float transform_distance_line_sq_float(struct coord *l0, struct coord *l1, struct coord *ref, struct coord *lpnt);
-int transform_distance_polyline_sq(struct coord *c, int count, struct coord *ref, struct coord *lpnt, int *pos);
-int transform_douglas_peucker(struct coord *in, int count, int dist_sq, struct coord *out);
-int transform_douglas_peucker_float(struct coord *in, int count, navit_float dist_sq, struct coord *out);
-void transform_print_deg(double deg);
-int transform_get_angle_delta(struct coord *c1, struct coord *c2, int dir);
-int transform_within_border(struct transformation *this_, struct point *p, int border);
-int transform_within_dist_point(struct coord *ref, struct coord *c, int dist);
-int transform_within_dist_line(struct coord *ref, struct coord *c0, struct coord *c1, int dist);
-int transform_within_dist_polyline(struct coord *ref, struct coord *c, int count, int close, int dist);
-int transform_within_dist_polygon(struct coord *ref, struct coord *c, int count, int dist);
-int transform_within_dist_item(struct coord *ref, enum item_type type, struct coord *c, int count, int dist);
-void transform_copy(struct transformation *src, struct transformation *dst);
-void transform_destroy(struct transformation *t);
-/* end of prototypes */
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/types.h b/navit/types.h
deleted file mode 100644
index b91e01bd8..000000000
--- a/navit/types.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_TYPES_H
-#define NAVIT_TYPES_H
-#include <stdint.h>
-
-typedef int8_t s8;
-typedef uint8_t u8;
-typedef int16_t s16;
-typedef uint16_t u16;
-typedef int32_t s32;
-typedef uint32_t u32;
-
-#ifdef HAVE_API_WIN32_BASE
-#define ULONGLONG_FMT "%I64u"
-#define LONGLONG_FMT "%I64d"
-#define LONGLONG_HEX_FMT "%I64x"
-#else
-#define ULONGLONG_FMT "%llu"
-#define LONGLONG_FMT "%lld"
-#define LONGLONG_HEX_FMT "%llx"
-#endif
-
-
-#endif
diff --git a/navit/util.c b/navit/util.c
deleted file mode 100644
index 2cceae460..000000000
--- a/navit/util.c
+++ /dev/null
@@ -1,739 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include <ctype.h>
-#include <stdarg.h>
-#include <time.h>
-#include <limits.h>
-#include <string.h>
-#include <stdio.h>
-
-#ifdef _POSIX_C_SOURCE
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#endif
-#ifdef _MSC_VER
-typedef int ssize_t ;
-#endif
-#include "util.h"
-#include "debug.h"
-#include "config.h"
-
-void
-strtoupper(char *dest, const char *src)
-{
- while (*src)
- *dest++=toupper(*src++);
- *dest='\0';
-}
-
-void
-strtolower(char *dest, const char *src)
-{
- while (*src)
- *dest++=tolower(*src++);
- *dest='\0';
-}
-
-int
-navit_utf8_strcasecmp(const char *s1, const char *s2)
-{
- char *s1_folded,*s2_folded;
- int cmpres;
- s1_folded=g_utf8_casefold(s1,-1);
- s2_folded=g_utf8_casefold(s2,-1);
- cmpres=strcmp(s1_folded,s2_folded);
- dbg(lvl_debug,"Compared %s with %s, got %d\n",s1_folded,s2_folded,cmpres);
- g_free(s1_folded);
- g_free(s2_folded);
- return cmpres;
-}
-
-static void
-hash_callback(gpointer key, gpointer value, gpointer user_data)
-{
- GList **l=user_data;
- *l=g_list_prepend(*l, value);
-}
-
-GList *
-g_hash_to_list(GHashTable *h)
-{
- GList *ret=NULL;
- g_hash_table_foreach(h, hash_callback, &ret);
-
- return ret;
-}
-
-static void
-hash_callback_key(gpointer key, gpointer value, gpointer user_data)
-{
- GList **l=user_data;
- *l=g_list_prepend(*l, key);
-}
-
-GList *
-g_hash_to_list_keys(GHashTable *h)
-{
- GList *ret=NULL;
- g_hash_table_foreach(h, hash_callback_key, &ret);
-
- return ret;
-}
-
-gchar *
-g_strconcat_printf(gchar *buffer, gchar *fmt, ...)
-{
- gchar *str,*ret;
- va_list ap;
-
- va_start(ap, fmt);
- str=g_strdup_vprintf(fmt, ap);
- va_end(ap);
- if (! buffer)
- return str;
- ret=g_strconcat(buffer, str, NULL);
- g_free(buffer);
- g_free(str);
- return ret;
-}
-
-#ifndef HAVE_GLIB
-int g_utf8_strlen_force_link(gchar *buffer, int max);
-int
-g_utf8_strlen_force_link(gchar *buffer, int max)
-{
- return g_utf8_strlen(buffer, max);
-}
-#endif
-
-#if defined(_WIN32) || defined(__CEGCC__)
-#include <windows.h>
-#include <sys/types.h>
-#endif
-
-#if defined(_WIN32) || defined(__CEGCC__) || defined (__APPLE__) || defined(HAVE_API_ANDROID)
-char *stristr(const char *String, const char *Pattern)
-{
- char *pptr, *sptr, *start;
-
- for (start = (char *)String; *start != (int)NULL; start++)
- {
- /* find start of pattern in string */
- for ( ; ((*start!=(int)NULL) && (toupper(*start) != toupper(*Pattern))); start++)
- ;
- if ((int)NULL == *start)
- return NULL;
-
- pptr = (char *)Pattern;
- sptr = (char *)start;
-
- while (toupper(*sptr) == toupper(*pptr))
- {
- sptr++;
- pptr++;
-
- /* if end of pattern then pattern was found */
-
- if ((int)NULL == *pptr)
- return (start);
- }
- }
- return NULL;
-}
-
-#ifndef SIZE_MAX
-# define SIZE_MAX ((size_t) -1)
-#endif
-#ifndef SSIZE_MAX
-# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
-#endif
-#if !HAVE_FLOCKFILE
-# undef flockfile
-# define flockfile(x) ((void) 0)
-#endif
-#if !HAVE_FUNLOCKFILE
-# undef funlockfile
-# define funlockfile(x) ((void) 0)
-#endif
-
-/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */
-#ifndef EOVERFLOW
-# define EOVERFLOW E2BIG
-#endif
-
-
-#ifndef HAVE_GETDELIM
-/**
- * @brief Reads the part of a file up to a delimiter to a string.
- * <p>
- * Read up to (and including) a DELIMITER from FP into *LINEPTR (and NUL-terminate it).
- *
- * @param lineptr Pointer to a pointer returned from malloc (or NULL), pointing to a buffer. It is
- * realloc'ed as necessary and will receive the data read.
- * @param n Size of the buffer.
- *
- * @return Number of characters read (not including the null terminator), or -1 on error or EOF.
-*/
-ssize_t
-getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
-{
- int result;
- size_t cur_len = 0;
-
- if (lineptr == NULL || n == NULL || fp == NULL)
- {
- return -1;
- }
-
- flockfile (fp);
-
- if (*lineptr == NULL || *n == 0)
- {
- *n = 120;
- *lineptr = (char *) realloc (*lineptr, *n);
- if (*lineptr == NULL)
- {
- result = -1;
- goto unlock_return;
- }
- }
-
- for (;;)
- {
- int i;
-
- i = getc (fp);
- if (i == EOF)
- {
- result = -1;
- break;
- }
-
- /* Make enough space for len+1 (for final NUL) bytes. */
- if (cur_len + 1 >= *n)
- {
- size_t needed_max=SIZE_MAX;
- size_t needed = 2 * *n + 1; /* Be generous. */
- char *new_lineptr;
- if (needed_max < needed)
- needed = needed_max;
- if (cur_len + 1 >= needed)
- {
- result = -1;
- goto unlock_return;
- }
-
- new_lineptr = (char *) realloc (*lineptr, needed);
- if (new_lineptr == NULL)
- {
- result = -1;
- goto unlock_return;
- }
-
- *lineptr = new_lineptr;
- *n = needed;
- }
-
- (*lineptr)[cur_len] = i;
- cur_len++;
-
- if (i == delimiter)
- break;
- }
- (*lineptr)[cur_len] = '\0';
- result = cur_len ? cur_len : result;
-
- unlock_return:
- funlockfile (fp); /* doesn't set errno */
-
- return result;
-}
-#endif
-
-#ifndef HAVE_GETLINE
-ssize_t
-getline (char **lineptr, size_t *n, FILE *stream)
-{
- return getdelim (lineptr, n, '\n', stream);
-}
-#endif
-
-#if defined(_UNICODE)
-wchar_t* newSysString(const char *toconvert)
-{
- int newstrlen = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, toconvert, -1, 0, 0);
- wchar_t *newstring = g_new(wchar_t,newstrlen);
- MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, toconvert, -1, newstring, newstrlen) ;
- return newstring;
-}
-#else
-char * newSysString(const char *toconvert)
-{
- return g_strdup(toconvert);
-}
-#endif
-#endif
-
-#if defined(_MSC_VER) || (!defined(HAVE_GETTIMEOFDAY) && defined(HAVE_API_WIN32_BASE))
-/**
- * Impements a simple incomplete version of gettimeofday. Only usefull for messuring
- * time spans, not the real time of day.
- */
-int gettimeofday(struct timeval *time, void *local)
-{
- int milliseconds = GetTickCount();
-
- time->tv_sec = milliseconds/1000;
- time->tv_usec = (milliseconds - (time->tv_sec * 1000)) * 1000;
-
- return 0;
-}
-#endif
-/**
- * @brief Converts an ISO 8601-style time string into epoch time.
- *
- * @param iso8601 Time in ISO 8601 format.
- *
- * @return The number of seconds elapsed since January 1, 1970, 00:00:00 UTC.
- */
-unsigned int
-iso8601_to_secs(char *iso8601)
-{
- int a,b,d,val[6],i=0;
- char *start=iso8601,*pos=iso8601;
- while (*pos && i < 6) {
- if (*pos < '0' || *pos > '9') {
- val[i++]=atoi(start);
- pos++;
- start=pos;
- }
- if(*pos)
- pos++;
- }
-
- a=val[0]/100;
- b=2-a+a/4;
-
- if (val[1] < 2) {
- val[0]--;
- val[1]+=12;
- }
-
- d=1461*(val[0]+4716)/4+306001*(val[1]+1)/10000+val[2]+b-2442112;
-
- return ((d*24+val[3])*60+val[4])*60+val[5];
-}
-
-/**
- * @brief Outputs local system time in ISO 8601 format.
- *
- * @return Time in ISO 8601 format
- */
-char *
-current_to_iso8601(void)
-{
- char *timep=NULL;
-#ifdef HAVE_API_WIN32_BASE
- SYSTEMTIME ST;
- GetSystemTime(&ST);
- timep=g_strdup_printf("%d-%02d-%02dT%02d:%02d:%02dZ",ST.wYear,ST.wMonth,ST.wDay,ST.wHour,ST.wMinute,ST.wSecond);
-#else
- char buffer[32];
- time_t tnow;
- struct tm *tm;
- tnow = time(0);
- tm = gmtime(&tnow);
- if (tm) {
- strftime(buffer, sizeof(buffer), "%Y-%m-%dT%TZ", tm);
- timep=g_strdup(buffer);
- }
-#endif
- return timep;
-}
-
-
-struct spawn_process_info {
-#ifdef HAVE_API_WIN32_BASE
- PROCESS_INFORMATION pr;
-#else
- pid_t pid; // = -1 if non-blocking spawn isn't supported
- int status; // exit status if non-blocking spawn isn't supported
-#endif
-};
-
-
-/**
- * Escape and quote string for shell
- *
- * @param in arg string to escape
- * @returns escaped string
- */
-char *
-shell_escape(char *arg)
-{
- char *r;
- int arglen=strlen(arg);
- int i,j,rlen;
-#ifdef HAVE_API_WIN32_BASE
- {
- int bscount=0;
- rlen=arglen+3;
- r=g_new(char,rlen);
- r[0]='"';
- for(i=0,j=1;i<arglen;i++) {
- if(arg[i]=='\\') {
- bscount++;
- if(i==(arglen-1)) {
- // Most special case - last char is
- // backslash. We can't escape it inside
- // quoted string due to Win unescaping
- // rules so quote should be closed
- // before backslashes and these
- // backslashes shouldn't be doubled
- rlen+=bscount;
- r=g_realloc(r,rlen);
- r[j++]='"';
- memset(r+j,'\\',bscount);
- j+=bscount;
- }
- } else {
- //Any preceeding backslashes will be doubled.
- bscount*=2;
- // Double quote needs to be preceeded by
- // at least one backslash
- if(arg[i]=='"')
- bscount++;
- if(bscount>0) {
- rlen+=bscount;
- r=g_realloc(r,rlen);
- memset(r+j,'\\',bscount);
- j+=bscount;
- bscount=0;
- }
- r[j++]=arg[i];
- if(i==(arglen-1)) {
- r[j++]='"';
- }
- }
- }
- r[j++]=0;
- }
-#else
- {
- // Will use hard quoting for the whole string
- // and replace each singular quote found with a '\'' sequence.
- rlen=arglen+3;
- r=g_new(char,rlen);
- r[0]='\'';
- for(i=0,j=1;i<arglen;i++) {
- if(arg[i]=='\'') {
- rlen+=3;
- r=g_realloc(r,rlen);
- g_strlcpy(r+j,"'\\''",rlen-j);
- } else {
- r[j++]=arg[i];
- }
- }
- r[j++]='\'';
- r[j++]=0;
- }
-#endif
- return r;
-}
-
-#ifndef _POSIX_C_SOURCE
-static char*
-spawn_process_compose_cmdline(char **argv)
-{
- int i,j;
- char *cmdline=shell_escape(argv[0]);
- for(i=1,j=strlen(cmdline);argv[i];i++) {
- char *arg=shell_escape(argv[i]);
- int arglen=strlen(arg);
- cmdline[j]=' ';
- cmdline=g_realloc(cmdline,j+1+arglen+1);
- memcpy(cmdline+j+1,arg,arglen+1);
- g_free(arg);
- j=j+1+arglen;
- }
- return cmdline;
-}
-#endif
-
-#ifdef _POSIX_C_SOURCE
-
-#if 0 /* def _POSIX_THREADS */
-#define spawn_process_sigmask(how,set,old) pthread_sigmask(how,set,old)
-#else
-#define spawn_process_sigmask(how,set,old) sigprocmask(how,set,old)
-#endif
-
-GList *spawn_process_children=NULL;
-
-#endif
-
-
-/**
- * Call external program
- *
- * @param in argv NULL terminated list of parameters,
- * zeroeth argument is program name
- * @returns 0 - success, >0 - return code, -1 - error
- */
-struct spawn_process_info*
-spawn_process(char **argv)
-{
- struct spawn_process_info*r=g_new(struct spawn_process_info,1);
-#ifdef _POSIX_C_SOURCE
- {
- pid_t pid;
-
- sigset_t set, old;
- dbg(lvl_debug,"spawning process for '%s'\n", argv[0]);
- sigemptyset(&set);
- sigaddset(&set,SIGCHLD);
- spawn_process_sigmask(SIG_BLOCK,&set,&old);
- pid=fork();
- if(pid==0) {
- execvp(argv[0], argv);
- /*Shouldn't reach here*/
- exit(1);
- } else if(pid>0) {
- r->status=-1;
- r->pid=pid;
- spawn_process_children=g_list_prepend(spawn_process_children,r);
- } else {
- dbg(lvl_error,"fork() returned error.");
- g_free(r);
- r=NULL;
- }
- spawn_process_sigmask(SIG_SETMASK,&old,NULL);
- return r;
- }
-#else
-#ifdef HAVE_API_WIN32_BASE
- {
- char *cmdline;
- DWORD dwRet;
-
- // For [desktop] Windows it's adviceable not to use
- // first CreateProcess parameter because PATH is not used
- // if it is defined.
- //
- // On WinCE 6.0 I was unable to launch anything
- // without first CreateProcess parameter, also it seems that
- // no WinCE program has support for quoted strings in arguments.
- // So...
-#ifdef HAVE_API_WIN32_CE
- LPWSTR cmd,args;
- cmdline=g_strjoinv(" ",argv+1);
- args=newSysString(cmdline);
- cmd = newSysString(argv[0]);
- dwRet=CreateProcess(cmd, args, NULL, NULL, 0, 0, NULL, NULL, NULL, &(r->pr));
- dbg(lvl_debug, "CreateProcess(%s,%s), PID=%i\n",argv[0],cmdline,r->pr.dwProcessId);
- g_free(cmd);
-#else
- TCHAR* args;
- STARTUPINFO startupInfo;
- memset(&startupInfo, 0, sizeof(startupInfo));
- startupInfo.cb = sizeof(startupInfo);
- cmdline=spawn_process_compose_cmdline(argv);
- args=newSysString(cmdline);
- dwRet=CreateProcess(NULL, args, NULL, NULL, 0, 0, NULL, NULL, &startupInfo, &(r->pr));
- dbg(lvl_debug, "CreateProcess(%s), PID=%i\n",cmdline,r->pr.dwProcessId);
-#endif
- g_free(cmdline);
- g_free(args);
- return r;
- }
-#else
- {
- char *cmdline=spawn_process_compose_cmdline(argv);
- int status;
- dbg(lvl_error,"Unblocked spawn_process isn't availiable on this platform.\n");
- status=system(cmdline);
- g_free(cmdline);
- r->status=status;
- r->pid=0;
- return r;
- }
-#endif
-#endif
-}
-
-/**
- * Check external program status
- *
- * @param in *pi pointer to spawn_process_info structure
- * @param in block =0 do not block =1 block until child terminated
- * @returns -1 - still running, >=0 program exited,
- * =255 trminated abnormally or wasn't run at all.
- *
- */
-int spawn_process_check_status(struct spawn_process_info *pi, int block)
-{
- if(pi==NULL) {
- dbg(lvl_error,"Trying to get process status of NULL, assuming process is terminated.\n");
- return 255;
- }
-#ifdef HAVE_API_WIN32_BASE
- {int failcount=0;
- while(1){
- DWORD dw;
- if(GetExitCodeProcess(pi->pr.hProcess,&dw)) {
- if(dw!=STILL_ACTIVE) {
- return dw;
- break;
- }
- } else {
- dbg(lvl_error,"GetExitCodeProcess failed. Assuming the process is terminated.");
- return 255;
- }
- if(!block)
- return -1;
-
- dw=WaitForSingleObject(pi->pr.hProcess,INFINITE);
- if(dw==WAIT_FAILED && failcount++==1) {
- dbg(lvl_error,"WaitForSingleObject failed twice. Assuming the process is terminated.");
- return 0;
- break;
- }
- }
- }
-#else
-#ifdef _POSIX_C_SOURCE
- if(pi->status!=-1) {
- return pi->status;
- }
- while(1) {
- int status;
- pid_t w=waitpid(pi->pid,&status,block?0:WNOHANG);
- if(w>0) {
- if(WIFEXITED(status))
- pi->status=WEXITSTATUS(status);
- return pi->status;
- if(WIFSTOPPED(status)) {
- dbg(lvl_debug,"child is stopped by %i signal\n",WSTOPSIG(status));
- } else if (WIFSIGNALED(status)) {
- dbg(lvl_debug,"child terminated by signal %i\n",WEXITSTATUS(status));
- pi->status=255;
- return 255;
- }
- if(!block)
- return -1;
- } else if(w==0) {
- if(!block)
- return -1;
- } else {
- if(pi->status!=-1) // Signal handler has changed pi->status while in this function
- return pi->status;
- dbg(lvl_error,"waitpid() indicated error, reporting process termination.\n");
- return 255;
- }
- }
-#else
- dbg(lvl_error, "Non-blocking spawn_process isn't availiable for this platform, repoting process exit status.\n");
- return pi->status;
-#endif
-#endif
-}
-
-void spawn_process_info_free(struct spawn_process_info *pi)
-{
- if(pi==NULL)
- return;
-#ifdef HAVE_API_WIN32_BASE
- CloseHandle(pi->pr.hProcess);
- CloseHandle(pi->pr.hThread);
-#endif
-#ifdef _POSIX_C_SOURCE
- {
- sigset_t set, old;
- sigemptyset(&set);
- sigaddset(&set,SIGCHLD);
- spawn_process_sigmask(SIG_BLOCK,&set,&old);
- spawn_process_children=g_list_remove(spawn_process_children,pi);
- spawn_process_sigmask(SIG_SETMASK,&old,NULL);
- }
-#endif
- g_free(pi);
-}
-
-#ifdef _POSIX_C_SOURCE
-static void spawn_process_sigchld(int sig)
-{
- int status;
- pid_t pid;
- while ((pid=waitpid(-1, &status, WNOHANG)) > 0) {
- GList *el=g_list_first(spawn_process_children);
- while(el) {
- struct spawn_process_info *p=el->data;
- if(p->pid==pid) {
- p->status=status;
- }
- el=g_list_next(el);
- }
- }
-}
-#endif
-
-void spawn_process_init()
-{
-#ifdef _POSIX_C_SOURCE
- struct sigaction act;
- act.sa_handler=spawn_process_sigchld;
- act.sa_flags=0;
- sigemptyset(&act.sa_mask);
- sigaction(SIGCHLD, &act, NULL);
-#endif
- return;
-}
-
-/** Get printable compass direction from an angle. */
-void
-get_compass_direction(char *buffer, int angle, int mode)
-{
- angle=angle%360;
- switch (mode) {
- case 0:
- sprintf(buffer,"%d",angle);
- break;
- case 1:
- if (angle < 69 || angle > 291)
- *buffer++='N';
- if (angle > 111 && angle < 249)
- *buffer++='S';
- if (angle > 22 && angle < 158)
- *buffer++='E';
- if (angle > 202 && angle < 338)
- *buffer++='W';
- *buffer++='\0';
- break;
- case 2:
- angle=(angle+15)/30;
- if (! angle)
- angle=12;
- sprintf(buffer,"%d H", angle);
- break;
- }
-}
diff --git a/navit/util.h b/navit/util.h
deleted file mode 100644
index b7b60b533..000000000
--- a/navit/util.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_types_H
-#define NAVIT_types_H
-
-#include <ctype.h>
-#include "config.h"
-
-void strtoupper(char *dest, const char *src);
-void strtolower(char *dest, const char *src);
-int navit_utf8_strcasecmp(const char *s1, const char *s2);
-GList * g_hash_to_list(GHashTable *h);
-GList * g_hash_to_list_keys(GHashTable *h);
-gchar * g_strconcat_printf(gchar *buffer, gchar *fmt, ...);
-#if defined(_WIN32) || defined(__CEGCC__) || defined (__APPLE__) || defined(HAVE_API_ANDROID)
-#if defined(_UNICODE)
-wchar_t* newSysString(const char *toconvert);
-#else
-char * newSysString(const char *toconvert);
-#endif
-#endif
-unsigned int iso8601_to_secs(char *iso8601);
-char * current_to_iso8601(void);
-
-#if defined(_MSC_VER) || (!defined(HAVE_GETTIMEOFDAY) && defined(HAVE_API_WIN32_BASE))
-
-#include <winsock.h>
-
-int gettimeofday(struct timeval *time, void *);
-
-#endif
-
-struct spawn_process_info;
-char * shell_escape(char *arg);
-struct spawn_process_info* spawn_process(char **argv);
-int spawn_process_check_status(struct spawn_process_info *pi,int block);
-
-void spawn_process_info_free(struct spawn_process_info *pi);
-void spawn_process_init(void);
-
-#endif
-
-void get_compass_direction(char *buffer, int angle, int mode);
diff --git a/navit/vehicle.c b/navit/vehicle.c
deleted file mode 100644
index 33cecb0e9..000000000
--- a/navit/vehicle.c
+++ /dev/null
@@ -1,750 +0,0 @@
-/*
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2009 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.
- */
-
-/** @file vehicle.c
- * @brief Generic components of the vehicle object.
- *
- * This file implements the generic vehicle interface, i.e. everything which is
- * not specific to a single data source.
- *
- * @author Navit Team
- * @date 2005-2014
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <glib.h>
-#include <time.h>
-#include "config.h"
-#include "debug.h"
-#include "coord.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "log.h"
-#include "plugin.h"
-#include "transform.h"
-#include "util.h"
-#include "event.h"
-#include "coord.h"
-#include "transform.h"
-#include "projection.h"
-#include "point.h"
-#include "graphics.h"
-#include "callback.h"
-#include "color.h"
-#include "layout.h"
-#include "vehicle.h"
-#include "navit_nls.h"
-
-struct vehicle {
- NAVIT_OBJECT
- struct vehicle_methods meth;
- struct vehicle_priv *priv;
- struct callback_list *cbl;
- struct log *nmea_log, *gpx_log;
- char *gpx_desc;
-
- // cursor
- struct cursor *cursor;
- int cursor_fixed;
- struct callback *animate_callback;
- struct event_timeout *animate_timer;
- struct point cursor_pnt;
- struct graphics *gra;
- struct graphics_gc *bg;
- struct transformation *trans;
- int angle;
- int speed;
- int sequence;
- GHashTable *log_to_cb;
-};
-
-struct object_func vehicle_func;
-
-static void vehicle_set_default_name(struct vehicle *this);
-static void vehicle_draw_do(struct vehicle *this_);
-static void vehicle_log_nmea(struct vehicle *this_, struct log *log);
-static void vehicle_log_gpx(struct vehicle *this_, struct log *log);
-static void vehicle_log_textfile(struct vehicle *this_, struct log *log);
-static void vehicle_log_binfile(struct vehicle *this_, struct log *log);
-static int vehicle_add_log(struct vehicle *this_, struct log *log);
-
-
-
-/**
- * @brief Creates a new vehicle
- *
- * @param parent
- * @param attrs Points to a null-terminated array of pointers to the attributes
- * for the new vehicle type.
- *
- * @return The newly created vehicle object
- */
-struct vehicle *
-vehicle_new(struct attr *parent, struct attr **attrs)
-{
- struct vehicle *this_;
- struct attr *source;
- struct vehicle_priv *(*vehicletype_new) (struct vehicle_methods *
- meth,
- struct callback_list *
- cbl,
- struct attr ** attrs);
- char *type, *colon;
- struct pcoord center;
-
- dbg(lvl_debug, "enter\n");
- source = attr_search(attrs, NULL, attr_source);
- if (!source) {
- dbg(lvl_error, "incomplete vehicle definition: missing attribute 'source'\n");
- return NULL;
- }
-
- type = g_strdup(source->u.str);
- colon = strchr(type, ':');
- if (colon)
- *colon = '\0';
- dbg(lvl_debug, "source='%s' type='%s'\n", source->u.str, type);
-
- vehicletype_new = plugin_get_category_vehicle(type);
- if (!vehicletype_new) {
- dbg(lvl_error, "invalid source '%s': unknown type '%s'\n", source->u.str, type);
- g_free(type);
- return NULL;
- }
- g_free(type);
- this_ = g_new0(struct vehicle, 1);
- this_->func=&vehicle_func;
- navit_object_ref((struct navit_object *)this_);
- this_->cbl = callback_list_new();
- this_->priv = vehicletype_new(&this_->meth, this_->cbl, attrs);
- if (!this_->priv) {
- dbg(lvl_error, "vehicletype_new failed\n");
- callback_list_destroy(this_->cbl);
- g_free(this_);
- return NULL;
- }
- this_->attrs=attr_list_dup(attrs);
-
- center.pro=projection_screen;
- center.x=0;
- center.y=0;
- this_->trans=transform_new(&center, 16, 0);
- vehicle_set_default_name(this_);
-
- dbg(lvl_debug, "leave\n");
- this_->log_to_cb=g_hash_table_new(NULL,NULL);
- return this_;
-}
-
-/**
- * @brief Destroys a vehicle
- *
- * @param this_ The vehicle to destroy
- */
-void
-vehicle_destroy(struct vehicle *this_)
-{
- dbg(lvl_debug,"enter\n");
- if (this_->animate_callback) {
- callback_destroy(this_->animate_callback);
- event_remove_timeout(this_->animate_timer);
- }
- transform_destroy(this_->trans);
- this_->meth.destroy(this_->priv);
- callback_list_destroy(this_->cbl);
- attr_list_free(this_->attrs);
- if (this_->bg)
- graphics_gc_destroy(this_->bg);
- if (this_->gra)
- graphics_free(this_->gra);
- g_free(this_);
-}
-
-/**
- * Creates an attribute iterator to be used with vehicles
- */
-struct attr_iter *
-vehicle_attr_iter_new(void)
-{
- return (struct attr_iter *)g_new0(void *,1);
-}
-
-/**
- * Destroys a vehicle attribute iterator
- *
- * @param iter a vehicle attr_iter
- */
-void
-vehicle_attr_iter_destroy(struct attr_iter *iter)
-{
- g_free(iter);
-}
-
-
-
-/**
- * Generic get function
- *
- * @param this_ Pointer to a vehicle structure
- * @param type The attribute type to look for
- * @param attr Pointer to a {@code struct attr} to store the attribute
- * @param iter A vehicle attr_iter. This is only used for generic attributes; for attributes specific to the vehicle object it is ignored.
- * @return True for success, false for failure
- */
-int
-vehicle_get_attr(struct vehicle *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- int ret;
- if (type == attr_log_gpx_desc) {
- attr->u.str = this_->gpx_desc;
- return 1;
- }
- if (this_->meth.position_attr_get) {
- ret=this_->meth.position_attr_get(this_->priv, type, attr);
- if (ret)
- return ret;
- }
- return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
-}
-
-/**
- * Generic set function
- *
- * @param this_ A vehicle
- * @param attr The attribute to set
- * @return False on success, true on failure
- */
-int
-vehicle_set_attr(struct vehicle *this_, struct attr *attr)
-{
- int ret=1;
- if (attr->type == attr_log_gpx_desc) {
- g_free(this_->gpx_desc);
- this_->gpx_desc = g_strdup(attr->u.str);
- } else if (this_->meth.set_attr)
- ret=this_->meth.set_attr(this_->priv, attr);
- /* attr_profilename probably is never used by vehicle itself but it's used to control the
- routing engine. So any vehicle should allow to set and read it. */
- if(attr->type == attr_profilename)
- ret=1;
- if (ret == 1 && attr->type != attr_navit && attr->type != attr_pdl_gps_update)
- this_->attrs=attr_generic_set_attr(this_->attrs, attr);
- return ret != 0;
-}
-
-/**
- * Generic add function
- *
- * @param this_ A vehicle
- * @param attr The attribute to add
- *
- * @return true if the attribute was added, false if not.
- */
-int
-vehicle_add_attr(struct vehicle *this_, struct attr *attr)
-{
- int ret=1;
- switch (attr->type) {
- case attr_callback:
- callback_list_add(this_->cbl, attr->u.callback);
- break;
- case attr_log:
- ret=vehicle_add_log(this_, attr->u.log);
- break;
- // currently supporting oldstyle cursor config.
- case attr_cursor:
- this_->cursor_fixed=1;
- vehicle_set_cursor(this_, attr->u.cursor, 1);
- break;
- default:
- break;
- }
- if (ret)
- this_->attrs=attr_generic_add_attr(this_->attrs, attr);
- return ret;
-}
-
-/**
- * @brief Generic remove function.
- *
- * Used to remove a callback from the vehicle.
- * @param this_ A vehicle
- * @param attr
- */
-int
-vehicle_remove_attr(struct vehicle *this_, struct attr *attr)
-{
- struct callback *cb;
- switch (attr->type) {
- case attr_callback:
- callback_list_remove(this_->cbl, attr->u.callback);
- break;
- case attr_log:
- cb=g_hash_table_lookup(this_->log_to_cb, attr->u.log);
- if (!cb)
- return 0;
- g_hash_table_remove(this_->log_to_cb, attr->u.log);
- callback_list_remove(this_->cbl, cb);
- break;
- default:
- this_->attrs=attr_generic_remove_attr(this_->attrs, attr);
- return 0;
- }
- return 1;
-}
-
-
-
-/**
- * Sets the cursor of a vehicle.
- *
- * @param this_ A vehicle
- * @param cursor A cursor
- * @author Ralph Sennhauser (10/2009)
- */
-void
-vehicle_set_cursor(struct vehicle *this_, struct cursor *cursor, int overwrite)
-{
- struct point sc;
- if (this_->cursor_fixed && !overwrite)
- return;
- if (this_->animate_callback) {
- event_remove_timeout(this_->animate_timer);
- this_->animate_timer=NULL; // dangling pointer! prevent double freeing.
- callback_destroy(this_->animate_callback);
- this_->animate_callback=NULL; // dangling pointer! prevent double freeing.
- }
- if (cursor && cursor->interval) {
- this_->animate_callback=callback_new_2(callback_cast(vehicle_draw_do), this_, 0);
- this_->animate_timer=event_add_timeout(cursor->interval, 1, this_->animate_callback);
- }
-
- if (cursor && this_->gra && this_->cursor) {
- this_->cursor_pnt.x+=(this_->cursor->w - cursor->w)/2;
- this_->cursor_pnt.y+=(this_->cursor->h - cursor->h)/2;
- graphics_overlay_resize(this_->gra, &this_->cursor_pnt, cursor->w, cursor->h, 0);
- }
-
- if (cursor) {
- sc.x=cursor->w/2;
- sc.y=cursor->h/2;
- if (!this_->cursor && this_->gra)
- graphics_overlay_disable(this_->gra, 0);
- } else {
- sc.x=sc.y=0;
- if (this_->cursor && this_->gra)
- graphics_overlay_disable(this_->gra, 1);
- }
- transform_set_screen_center(this_->trans, &sc);
-
- this_->cursor=cursor;
-}
-
-/**
- * Draws a vehicle on top of a graphics.
- *
- * @param this_ The vehicle
- * @param gra The graphics
- * @param pnt Screen coordinates of the vehicle.
- * @param angle The angle relative to the map.
- * @param speed The speed of the vehicle.
- */
-void
-vehicle_draw(struct vehicle *this_, struct graphics *gra, struct point *pnt, int angle, int speed)
-{
- if (angle < 0)
- angle+=360;
- dbg(lvl_debug,"enter this=%p gra=%p pnt=%p dir=%d speed=%d\n", this_, gra, pnt, angle, speed);
- dbg(lvl_debug,"point %d,%d\n", pnt->x, pnt->y);
- this_->cursor_pnt=*pnt;
- this_->angle=angle;
- this_->speed=speed;
- if (!this_->cursor)
- return;
- this_->cursor_pnt.x-=this_->cursor->w/2;
- this_->cursor_pnt.y-=this_->cursor->h/2;
- if (!this_->gra) {
- struct color c;
- this_->gra=graphics_overlay_new(gra, &this_->cursor_pnt, this_->cursor->w, this_->cursor->h, 0);
- if (this_->gra) {
- graphics_init(this_->gra);
- this_->bg=graphics_gc_new(this_->gra);
- c.r=0; c.g=0; c.b=0; c.a=0;
- graphics_gc_set_foreground(this_->bg, &c);
- graphics_background_gc(this_->gra, this_->bg);
- }
- }
- vehicle_draw_do(this_);
-}
-
-int
-vehicle_get_cursor_data(struct vehicle *this, struct point *pnt, int *angle, int *speed)
-{
- *pnt=this->cursor_pnt;
- *angle=this->angle;
- *speed=this->speed;
- return 1;
-}
-
-static void vehicle_set_default_name(struct vehicle *this_)
-{
- struct attr default_name;
- if (!attr_search(this_->attrs, NULL, attr_name)) {
- default_name.type=attr_name;
- // Safe cast: attr_generic_set_attr does not modify its parameter.
- default_name.u.str=(char*)_("Unnamed vehicle");
- this_->attrs=attr_generic_set_attr(this_->attrs, &default_name);
- dbg(lvl_error, "Incomplete vehicle definition: missing attribute 'name'. Default name set.\n");
- }
-}
-
-
-static void
-vehicle_draw_do(struct vehicle *this_)
-{
- struct point p;
- struct cursor *cursor=this_->cursor;
- int speed=this_->speed;
- int angle=this_->angle;
- int sequence=this_->sequence;
- struct attr **attr;
- char *label=NULL;
- int match=0;
-
- if (!this_->cursor || !this_->cursor->attrs || !this_->gra)
- return;
-
- attr=this_->attrs;
- while (attr && *attr) {
- if ((*attr)->type == attr_name)
- label=(*attr)->u.str;
- attr++;
- }
- transform_set_yaw(this_->trans, -this_->angle);
- graphics_draw_mode(this_->gra, draw_mode_begin);
- p.x=0;
- p.y=0;
- graphics_draw_rectangle(this_->gra, this_->bg, &p, cursor->w, cursor->h);
- attr=cursor->attrs;
- while (*attr) {
- if ((*attr)->type == attr_itemgra) {
- struct itemgra *itm=(*attr)->u.itemgra;
- dbg(lvl_debug,"speed %d-%d %d\n", itm->speed_range.min, itm->speed_range.max, speed);
- if (speed >= itm->speed_range.min && speed <= itm->speed_range.max &&
- angle >= itm->angle_range.min && angle <= itm->angle_range.max &&
- sequence >= itm->sequence_range.min && sequence <= itm->sequence_range.max) {
- graphics_draw_itemgra(this_->gra, itm, this_->trans, label);
- }
- if (sequence < itm->sequence_range.max)
- match=1;
- }
- ++attr;
- }
- graphics_draw_drag(this_->gra, &this_->cursor_pnt);
- graphics_draw_mode(this_->gra, draw_mode_end);
- if (this_->animate_callback) {
- ++this_->sequence;
- if (cursor->sequence_range && cursor->sequence_range->max < this_->sequence)
- this_->sequence=cursor->sequence_range->min;
- if (! match && ! cursor->sequence_range)
- this_->sequence=0;
- }
-}
-
-/**
- * @brief Writes to an NMEA log.
- *
- * @param this_ The vehicle supplying data
- * @param log The log to write to
- */
-static void
-vehicle_log_nmea(struct vehicle *this_, struct log *log)
-{
- struct attr pos_attr;
- if (!this_->meth.position_attr_get)
- return;
- if (!this_->meth.position_attr_get(this_->priv, attr_position_nmea, &pos_attr))
- return;
- log_write(log, pos_attr.u.str, strlen(pos_attr.u.str), 0);
-}
-
-/**
- * Add a tag to the extensions section of a GPX trackpoint.
- *
- * @param tag The tag to add
- * @param logstr Pointer to a pointer to a string to be inserted into the log.
- * When calling this function, {@code *logstr} must point to the substring into which the new tag is
- * to be inserted. If {@code *logstr} is NULL, a new string will be created for the extensions section.
- * Upon returning, {@code *logstr} will point to the new string with the additional tag inserted.
- */
-void
-vehicle_log_gpx_add_tag(char *tag, char **logstr)
-{
- char *ext_start="\t<extensions>\n";
- char *ext_end="\t</extensions>\n";
- char *trkpt_end="</trkpt>";
- char *start=NULL,*end=NULL;
- if (!*logstr) {
- start=g_strdup(ext_start);
- end=g_strdup(ext_end);
- } else {
- char *str=strstr(*logstr, ext_start);
- int len;
- if (str) {
- len=str-*logstr+strlen(ext_start);
- start=g_strdup(*logstr);
- start[len]='\0';
- end=g_strdup(str+strlen(ext_start));
- } else {
- str=strstr(*logstr, trkpt_end);
- len=str-*logstr;
- end=g_strdup_printf("%s%s",ext_end,str);
- str=g_strdup(*logstr);
- str[len]='\0';
- start=g_strdup_printf("%s%s",str,ext_start);
- g_free(str);
- }
- }
- *logstr=g_strdup_printf("%s%s%s",start,tag,end);
- g_free(start);
- g_free(end);
-}
-
-/**
- * @brief Writes a trackpoint to a GPX log.
- *
- * @param this_ The vehicle supplying data
- * @param log The log to write to
- */
-static void
-vehicle_log_gpx(struct vehicle *this_, struct log *log)
-{
- struct attr attr,*attrp, fix_attr;
- enum attr_type *attr_types;
- char *logstr;
- char *extensions="\t<extensions>\n";
-
- if (!this_->meth.position_attr_get)
- return;
- if (log_get_attr(log, attr_attr_types, &attr, NULL))
- attr_types=attr.u.attr_types;
- else
- attr_types=NULL;
- if (this_->meth.position_attr_get(this_->priv, attr_position_fix_type, &fix_attr)) {
- if ( fix_attr.u.num == 0 )
- return;
- }
- if (!this_->meth.position_attr_get(this_->priv, attr_position_coord_geo, &attr))
- return;
- logstr=g_strdup_printf("<trkpt lat=\"%f\" lon=\"%f\">\n",attr.u.coord_geo->lat,attr.u.coord_geo->lng);
- if (attr_types && attr_types_contains_default(attr_types, attr_position_time_iso8601, 0)) {
- if (this_->meth.position_attr_get(this_->priv, attr_position_time_iso8601, &attr)) {
- logstr=g_strconcat_printf(logstr,"\t<time>%s</time>\n",attr.u.str);
- } else {
- char *timep = current_to_iso8601();
- logstr=g_strconcat_printf(logstr,"\t<time>%s</time>\n",timep);
- g_free(timep);
- }
- }
- if (this_->gpx_desc) {
- logstr=g_strconcat_printf(logstr,"\t<desc>%s</desc>\n",this_->gpx_desc);
- g_free(this_->gpx_desc);
- this_->gpx_desc = NULL;
- }
- if (attr_types_contains_default(attr_types, attr_position_height,0) && this_->meth.position_attr_get(this_->priv, attr_position_height, &attr))
- logstr=g_strconcat_printf(logstr,"\t<ele>%.6f</ele>\n",*attr.u.numd);
- // <magvar> magnetic variation in degrees; we might use position_magnetic_direction and position_direction to figure it out
- // <geoidheight> Height (in meters) of geoid (mean sea level) above WGS84 earth ellipsoid. As defined in NMEA GGA message (field 11, which vehicle_wince.c ignores)
- // <name> GPS name (arbitrary)
- // <cmt> comment
- // <src> Source of data
- // <link> Link to additional information (URL)
- // <sym> Text of GPS symbol name
- // <type> Type (classification)
- // <fix> Type of GPS fix {'none'|'2d'|'3d'|'dgps'|'pps'}, leave out if unknown. Similar to position_fix_type but more detailed.
- if (attr_types_contains_default(attr_types, attr_position_sats_used,0) && this_->meth.position_attr_get(this_->priv, attr_position_sats_used, &attr))
- logstr=g_strconcat_printf(logstr,"\t<sat>%d</sat>\n",attr.u.num);
- if (attr_types_contains_default(attr_types, attr_position_hdop,0) && this_->meth.position_attr_get(this_->priv, attr_position_hdop, &attr))
- logstr=g_strconcat_printf(logstr,"\t<hdop>%.6f</hdop>\n",*attr.u.numd);
- // <vdop>, <pdop> Vertical and position dilution of precision, no corresponding attribute
- if (attr_types_contains_default(attr_types, attr_position_direction,0) && this_->meth.position_attr_get(this_->priv, attr_position_direction, &attr))
- logstr=g_strconcat_printf(logstr,"\t<course>%.1f</course>\n",*attr.u.numd);
- if (attr_types_contains_default(attr_types, attr_position_speed, 0) && this_->meth.position_attr_get(this_->priv, attr_position_speed, &attr))
- logstr=g_strconcat_printf(logstr,"\t<speed>%.2f</speed>\n",(*attr.u.numd / 3.6));
- if (attr_types_contains_default(attr_types, attr_profilename, 0) && (attrp=attr_search(this_->attrs, NULL, attr_profilename))) {
- logstr=g_strconcat_printf(logstr,"%s\t\t<navit:profilename>%s</navit:profilename>\n",extensions,attrp->u.str);
- extensions="";
- }
- if (attr_types_contains_default(attr_types, attr_position_radius, 0) && this_->meth.position_attr_get(this_->priv, attr_position_radius, &attr)) {
- logstr=g_strconcat_printf(logstr,"%s\t\t<navit:radius>%.2f</navit:radius>\n",extensions,*attr.u.numd);
- extensions="";
- }
- if (!strcmp(extensions,"")) {
- logstr=g_strconcat_printf(logstr,"\t</extensions>\n");
- }
- logstr=g_strconcat_printf(logstr,"</trkpt>\n");
- callback_list_call_attr_1(this_->cbl, attr_log_gpx, &logstr);
- log_write(log, logstr, strlen(logstr), 0);
- g_free(logstr);
-}
-
-/**
- * @brief Writes to a text log.
- *
- * @param this_ The vehicle supplying data
- * @param log The log to write to
- */
-static void
-vehicle_log_textfile(struct vehicle *this_, struct log *log)
-{
- struct attr pos_attr,fix_attr;
- char *logstr;
- if (!this_->meth.position_attr_get)
- return;
- if (this_->meth.position_attr_get(this_->priv, attr_position_fix_type, &fix_attr)) {
- if (fix_attr.u.num == 0)
- return;
- }
- if (!this_->meth.position_attr_get(this_->priv, attr_position_coord_geo, &pos_attr))
- return;
- logstr=g_strdup_printf("%f %f type=trackpoint\n", pos_attr.u.coord_geo->lng, pos_attr.u.coord_geo->lat);
- callback_list_call_attr_1(this_->cbl, attr_log_textfile, &logstr);
- log_write(log, logstr, strlen(logstr), 0);
-}
-
-/**
- * @brief Writes to a binary log.
- *
- * @param this_ The vehicle supplying data
- * @param log The log to write to
- */
-static void
-vehicle_log_binfile(struct vehicle *this_, struct log *log)
-{
- struct attr pos_attr, fix_attr;
- int *buffer;
- int *buffer_new;
- int len,limit=1024,done=0,radius=25;
- struct coord c;
- enum log_flags flags;
-
- if (!this_->meth.position_attr_get)
- return;
- if (this_->meth.position_attr_get(this_->priv, attr_position_fix_type, &fix_attr)) {
- if (fix_attr.u.num == 0)
- return;
- }
- if (!this_->meth.position_attr_get(this_->priv, attr_position_coord_geo, &pos_attr))
- return;
- transform_from_geo(projection_mg, pos_attr.u.coord_geo, &c);
- if (!c.x || !c.y)
- return;
- while (!done) {
- buffer=log_get_buffer(log, &len);
- if (! buffer || !len) {
- buffer_new=g_malloc(5*sizeof(int));
- buffer_new[0]=2;
- buffer_new[1]=type_track;
- buffer_new[2]=0;
- } else {
- buffer_new=g_malloc((buffer[0]+3)*sizeof(int));
- memcpy(buffer_new, buffer, (buffer[0]+1)*sizeof(int));
- }
- dbg(lvl_debug,"c=0x%x,0x%x\n",c.x,c.y);
- buffer_new[buffer_new[0]+1]=c.x;
- buffer_new[buffer_new[0]+2]=c.y;
- buffer_new[0]+=2;
- buffer_new[2]+=2;
- if (buffer_new[2] > limit) {
- int count=buffer_new[2]/2;
- struct coord *out=g_alloca(sizeof(struct coord)*(count));
- struct coord *in=(struct coord *)(buffer_new+3);
- int count_out=transform_douglas_peucker(in, count, radius, out);
- memcpy(in, out, count_out*2*sizeof(int));
- buffer_new[0]+=(count_out-count)*2;
- buffer_new[2]+=(count_out-count)*2;
- flags=log_flag_replace_buffer|log_flag_force_flush|log_flag_truncate;
- } else {
- flags=log_flag_replace_buffer|log_flag_keep_pointer|log_flag_keep_buffer|log_flag_force_flush;
- done=1;
- }
- log_write(log, (char *)buffer_new, (buffer_new[0]+1)*sizeof(int), flags);
- }
-}
-
-/**
- * @brief Registers a new log to receive data.
- *
- * @param this_ The vehicle supplying data
- * @param log The log to write to
- *
- * @return False if the log is of an unknown type, true otherwise (including when {@code attr_type} is missing).
- */
-static int
-vehicle_add_log(struct vehicle *this_, struct log *log)
-{
- struct callback *cb;
- struct attr type_attr;
- if (!log_get_attr(log, attr_type, &type_attr, NULL))
- return 1;
-
- if (!strcmp(type_attr.u.str, "nmea")) {
- cb=callback_new_attr_2(callback_cast(vehicle_log_nmea), attr_position_coord_geo, this_, log);
- } else if (!strcmp(type_attr.u.str, "gpx")) {
- char *header = "<?xml version='1.0' encoding='UTF-8'?>\n"
- "<gpx version='1.1' creator='Navit http://navit.sourceforge.net'\n"
- " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n"
- " xmlns:navit='http://www.navit-project.org/schema/navit'\n"
- " xmlns='http://www.topografix.com/GPX/1/1'\n"
- " xsi:schemaLocation='http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd'>\n"
- "<trk>\n"
- "<trkseg>\n";
- char *trailer = "</trkseg>\n</trk>\n</gpx>\n";
- log_set_header(log, header, strlen(header));
- log_set_trailer(log, trailer, strlen(trailer));
- cb=callback_new_attr_2(callback_cast(vehicle_log_gpx), attr_position_coord_geo, this_, log);
- } else if (!strcmp(type_attr.u.str, "textfile")) {
- char *header = "type=track\n";
- log_set_header(log, header, strlen(header));
- cb=callback_new_attr_2(callback_cast(vehicle_log_textfile), attr_position_coord_geo, this_, log);
- } else if (!strcmp(type_attr.u.str, "binfile")) {
- cb=callback_new_attr_2(callback_cast(vehicle_log_binfile), attr_position_coord_geo, this_, log);
- } else
- return 0;
- g_hash_table_insert(this_->log_to_cb, log, cb);
- callback_list_add(this_->cbl, cb);
- return 1;
-}
-
-struct object_func vehicle_func = {
- attr_vehicle,
- (object_func_new)vehicle_new,
- (object_func_get_attr)vehicle_get_attr,
- (object_func_iter_new)vehicle_attr_iter_new,
- (object_func_iter_destroy)vehicle_attr_iter_destroy,
- (object_func_set_attr)vehicle_set_attr,
- (object_func_add_attr)vehicle_add_attr,
- (object_func_remove_attr)vehicle_remove_attr,
- (object_func_init)NULL,
- (object_func_destroy)vehicle_destroy,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
diff --git a/navit/vehicle.h b/navit/vehicle.h
deleted file mode 100644
index 54cc15771..000000000
--- a/navit/vehicle.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2009 Navit Team
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_VEHICLE_H
-#define NAVIT_VEHICLE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct point;
-struct vehicle_priv;
-
-struct vehicle_methods {
- void (*destroy)(struct vehicle_priv *priv);
- int (*position_attr_get)(struct vehicle_priv *priv, enum attr_type type, struct attr *attr);
- int (*set_attr)(struct vehicle_priv *priv, struct attr *attr);
-};
-
-/* prototypes */
-enum attr_type;
-struct attr;
-struct attr_iter;
-struct cursor;
-struct graphics;
-struct point;
-struct vehicle;
-struct vehicle *vehicle_new(struct attr *parent, struct attr **attrs);
-void vehicle_destroy(struct vehicle *this_);
-struct attr_iter *vehicle_attr_iter_new(void);
-void vehicle_attr_iter_destroy(struct attr_iter *iter);
-int vehicle_get_attr(struct vehicle *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int vehicle_set_attr(struct vehicle *this_, struct attr *attr);
-int vehicle_add_attr(struct vehicle *this_, struct attr *attr);
-int vehicle_remove_attr(struct vehicle *this_, struct attr *attr);
-void vehicle_set_cursor(struct vehicle *this_, struct cursor *cursor, int overwrite);
-void vehicle_draw(struct vehicle *this_, struct graphics *gra, struct point *pnt, int angle, int speed);
-int vehicle_get_cursor_data(struct vehicle *this_, struct point *pnt, int *angle, int *speed);
-void vehicle_log_gpx_add_tag(char *tag, char **logstr);
-struct vehicle * vehicle_ref(struct vehicle *this_);
-void vehicle_unref(struct vehicle *this_);
-/* end of prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/navit/vehicle/android/CMakeLists.txt b/navit/vehicle/android/CMakeLists.txt
deleted file mode 100644
index e7b19ebba..000000000
--- a/navit/vehicle/android/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(vehicle_android vehicle_android.c)
diff --git a/navit/vehicle/android/vehicle_android.c b/navit/vehicle/android/vehicle_android.c
deleted file mode 100644
index 89882d048..000000000
--- a/navit/vehicle/android/vehicle_android.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/** @file vehicle_android.c
- * @brief android 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 <config.h>
-#include <string.h>
-#include <glib.h>
-#include <math.h>
-#include <time.h>
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-#include "coord.h"
-#include "item.h"
-#include "android.h"
-#include "vehicle.h"
-
-struct vehicle_priv {
- struct callback_list *cbl;
- struct coord_geo geo; /**< The last known position of the vehicle **/
- double speed; /**< Speed in km/h **/
- double direction; /**< Bearing in degrees **/
- double height; /**< Elevation in meters **/
- double radius; /**< Position accuracy in meters **/
- int fix_type; /**< Type of last fix (1 = valid, 0 = invalid) **/
- time_t fix_time; /**< Timestamp of last fix (not used) **/
- char fixiso8601[128]; /**< Timestamp of last fix in ISO 8601 format **/
- int sats; /**< Number of satellites in view **/
- int sats_used; /**< Number of satellites used in fix **/
- int valid; /**< Whether the vehicle coordinates in {@code geo} are valid **/
- struct attr ** attrs;
- struct callback *pcb; /**< The callback function for position updates **/
- struct callback *scb; /**< The callback function for status updates **/
- struct callback *fcb; /**< The callback function for fix status updates **/
- jclass NavitVehicleClass; /**< The {@code NavitVehicle} class **/
- jobject NavitVehicle; /**< An instance of {@code NavitVehicle} **/
- jclass LocationClass; /**< Android's {@code Location} class **/
- jmethodID Location_getLatitude, Location_getLongitude, Location_getSpeed, Location_getBearing, Location_getAltitude, Location_getTime, Location_getAccuracy;
-};
-
-/**
- * @brief Free the android_vehicle
- *
- * @param priv vehicle_priv structure for the vehicle
- * @returns nothing
- */
-static void
-vehicle_android_destroy(struct vehicle_priv *priv)
-{
- dbg(lvl_debug,"enter\n");
- g_free(priv);
-}
-
-/**
- * @brief Retrieves a vehicle attribute.
- *
- * @param priv vehicle_priv structure for the vehicle
- * @param type The attribute type to retrieve
- * @param attr Points to an attr structure that will receive the attribute data
- * @returns True for success, false for failure
- */
-static int
-vehicle_android_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- dbg(lvl_debug,"enter %s\n",attr_to_name(type));
- switch (type) {
- 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->valid == attr_position_valid_invalid)
- return 0;
- break;
- case attr_position_time_iso8601:
- attr->u.str=priv->fixiso8601;
- break;
- case attr_position_valid:
- attr->u.num = priv->valid;
- break;
- default:
- return 0;
- }
- dbg(lvl_debug,"ok\n");
- attr->type = type;
- return 1;
-}
-
-struct vehicle_methods vehicle_android_methods = {
- vehicle_android_destroy,
- vehicle_android_position_attr_get,
-};
-
-/**
- * @brief Called when a new position has been reported
- *
- * This function is called by {@code NavitLocationListener} upon receiving a new {@code Location}.
- *
- * @param v The {@code struct_vehicle_priv} for the vehicle
- * @param location A {@code Location} object describing the new position
- */
-static void
-vehicle_android_position_callback(struct vehicle_priv *v, jobject location) {
- time_t tnow;
- struct tm *tm;
- dbg(lvl_debug,"enter\n");
-
- v->geo.lat = (*jnienv)->CallDoubleMethod(jnienv, location, v->Location_getLatitude);
- v->geo.lng = (*jnienv)->CallDoubleMethod(jnienv, location, v->Location_getLongitude);
- v->speed = (*jnienv)->CallFloatMethod(jnienv, location, v->Location_getSpeed)*3.6;
- v->direction = (*jnienv)->CallFloatMethod(jnienv, location, v->Location_getBearing);
- v->height = (*jnienv)->CallDoubleMethod(jnienv, location, v->Location_getAltitude);
- v->radius = (*jnienv)->CallFloatMethod(jnienv, location, v->Location_getAccuracy);
- tnow=(*jnienv)->CallLongMethod(jnienv, location, v->Location_getTime)/1000;
- tm = gmtime(&tnow);
- strftime(v->fixiso8601, sizeof(v->fixiso8601), "%Y-%m-%dT%TZ", tm);
- dbg(lvl_debug,"lat %f lon %f time %s\n",v->geo.lat,v->geo.lng,v->fixiso8601);
- if (v->valid != attr_position_valid_valid) {
- v->valid = attr_position_valid_valid;
- callback_list_call_attr_0(v->cbl, attr_position_valid);
- }
- callback_list_call_attr_0(v->cbl, attr_position_coord_geo);
-}
-
-/**
- * @brief Called when a new GPS status has been reported
- *
- * This function is called by {@code NavitLocationListener} upon receiving a new {@code GpsStatus}.
- *
- * Note that {@code sats_used} should not be used to determine whether the vehicle's position is valid:
- * some devices report non-zero numbers even when they do not have a fix. Position validity should be
- * determined in {@code vehicle_android_fix_callback} (an invalid fix type means we have lost the fix)
- * and {@code vehicle_android_position_callback} (receiving a position means we have a fix).
- *
- * @param v The {@code struct_vehicle_priv} for the vehicle
- * @param sats_in_view The number of satellites in view
- * @param sats_used The number of satellites currently used to determine the position
- */
-static void
-vehicle_android_status_callback(struct vehicle_priv *v, int sats_in_view, int sats_used) {
- if (v->sats != sats_in_view) {
- v->sats = sats_in_view;
- callback_list_call_attr_0(v->cbl, attr_position_qual);
- }
- if (v->sats_used != sats_used) {
- v->sats_used = sats_used;
- callback_list_call_attr_0(v->cbl, attr_position_sats_used);
- }
-}
-
-/**
- * @brief Called when a change in GPS fix status has been reported
- *
- * This function is called by {@code NavitLocationListener} upon receiving a new {@code android.location.GPS_FIX_CHANGE} broadcast.
- *
- * @param v The {@code struct_vehicle_priv} for the vehicle
- * @param fix_type The fix type (1 = valid, 0 = invalid)
- */
-static void
-vehicle_android_fix_callback(struct vehicle_priv *v, int fix_type) {
- if (v->fix_type != fix_type) {
- v->fix_type = fix_type;
- callback_list_call_attr_0(v->cbl, attr_position_fix_type);
- if (!fix_type && (v->valid == attr_position_valid_valid)) {
- v->valid = attr_position_valid_extrapolated_time;
- callback_list_call_attr_0(v->cbl, attr_position_valid);
- }
- }
-}
-
-/**
- * @brief Initializes an Android vehicle
- *
- * @return True on success, false on failure
- */
-static int
-vehicle_android_init(struct vehicle_priv *ret)
-{
- jmethodID cid;
-
- if (!android_find_class_global("android/location/Location", &ret->LocationClass))
- return 0;
- if (!android_find_method(ret->LocationClass, "getLatitude", "()D", &ret->Location_getLatitude))
- return 0;
- if (!android_find_method(ret->LocationClass, "getLongitude", "()D", &ret->Location_getLongitude))
- return 0;
- if (!android_find_method(ret->LocationClass, "getSpeed", "()F", &ret->Location_getSpeed))
- return 0;
- if (!android_find_method(ret->LocationClass, "getBearing", "()F", &ret->Location_getBearing))
- return 0;
- if (!android_find_method(ret->LocationClass, "getAltitude", "()D", &ret->Location_getAltitude))
- return 0;
- if (!android_find_method(ret->LocationClass, "getTime", "()J", &ret->Location_getTime))
- return 0;
- if (!android_find_method(ret->LocationClass, "getAccuracy", "()F", &ret->Location_getAccuracy))
- return 0;
- if (!android_find_class_global("org/navitproject/navit/NavitVehicle", &ret->NavitVehicleClass))
- return 0;
- dbg(lvl_debug,"at 3\n");
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitVehicleClass, "<init>", "(Landroid/content/Context;III)V");
- if (cid == NULL) {
- dbg(lvl_error,"no method found\n");
- return 0; /* exception thrown */
- }
- dbg(lvl_debug, "at 4 android_activity=%p\n", android_activity);
- ret->NavitVehicle=(*jnienv)->NewObject(jnienv, ret->NavitVehicleClass, cid, android_activity,
- (int) ret->pcb, (int) ret->scb, (int) ret->fcb);
- dbg(lvl_debug,"result=%p\n",ret->NavitVehicle);
- if (!ret->NavitVehicle)
- return 0;
- if (ret->NavitVehicle)
- ret->NavitVehicle = (*jnienv)->NewGlobalRef(jnienv, ret->NavitVehicle);
-
- return 1;
-}
-
-/**
- * @brief Create android_vehicle
- *
- * @param meth
- * @param cbl
- * @param attrs
- * @returns vehicle_priv
- */
-static struct vehicle_priv *
-vehicle_android_new_android(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;
- ret->pcb = callback_new_1(callback_cast(vehicle_android_position_callback), ret);
- ret->scb = callback_new_1(callback_cast(vehicle_android_status_callback), ret);
- ret->fcb = callback_new_1(callback_cast(vehicle_android_fix_callback), ret);
- ret->valid = attr_position_valid_invalid;
- ret->sats = 0;
- ret->sats_used = 0;
- *meth = vehicle_android_methods;
- vehicle_android_init(ret);
- dbg(lvl_debug, "return\n");
- return ret;
-}
-
-/**
- * @brief register vehicle_android
- *
- * @returns nothing
- */
-void
-plugin_init(void)
-{
- dbg(lvl_debug, "enter\n");
- plugin_register_category_vehicle("android", vehicle_android_new_android);
-}
diff --git a/navit/vehicle/demo/CMakeLists.txt b/navit/vehicle/demo/CMakeLists.txt
deleted file mode 100644
index e7f57f902..000000000
--- a/navit/vehicle/demo/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(vehicle_demo vehicle_demo.c)
diff --git a/navit/vehicle/demo/vehicle_demo.c b/navit/vehicle/demo/vehicle_demo.c
deleted file mode 100644
index 4a47c1476..000000000
--- a/navit/vehicle/demo/vehicle_demo.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/**
- * 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 <string.h>
-#include <math.h>
-#include "config.h"
-#include "debug.h"
-#include "coord.h"
-#include "item.h"
-#include "navit.h"
-#include "map.h"
-#include "route.h"
-#include "callback.h"
-#include "transform.h"
-#include "plugin.h"
-#include "vehicle.h"
-#include "event.h"
-#include "util.h"
-
-struct vehicle_priv {
- int interval;
- int position_set;
- struct callback_list *cbl;
- struct navit *navit;
- struct route *route;
- struct coord_geo geo;
- struct coord last;
- double config_speed;
- double speed;
- double direction;
- struct callback *timer_callback;
- struct event_timeout *timer;
- char *timep;
- char *nmea;
- enum attr_position_valid valid; /**< Whether the vehicle has valid position data **/
-
-};
-
-static void
-vehicle_demo_destroy(struct vehicle_priv *priv)
-{
- if (priv->timer)
- event_remove_timeout(priv->timer);
- callback_destroy(priv->timer_callback);
- g_free(priv->timep);
- g_free(priv);
-}
-
-static void
-nmea_chksum(char *nmea)
-{
- int i;
- if (nmea && strlen(nmea) > 3) {
- unsigned char csum=0;
- for (i = 1 ; i < strlen(nmea)-4 ; i++)
- csum^=(unsigned char)(nmea[i]);
- sprintf(nmea+strlen(nmea)-3,"%02X\n",csum);
- }
-}
-
-static int
-vehicle_demo_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- char ns='N',ew='E',*timep,*rmc,*gga;
- int hr,min,sec,year,mon,day;
- double lat,lng;
- switch (type) {
- case attr_position_speed:
- attr->u.numd = &priv->speed;
- break;
- case attr_position_direction:
- attr->u.numd = &priv->direction;
- break;
- case attr_position_coord_geo:
- attr->u.coord_geo = &priv->geo;
- break;
- case attr_position_time_iso8601:
- g_free(priv->timep);
- priv->timep=current_to_iso8601();
- attr->u.str=priv->timep;
- break;
- case attr_position_fix_type:
- attr->u.num = 2;
- break;
- case attr_position_sats_used:
- attr->u.num = 9;
- break;
- case attr_position_nmea:
- lat=priv->geo.lat;
- if (lat < 0) {
- lat=-lat;
- ns='S';
- }
- lng=priv->geo.lng;
- if (lng < 0) {
- lng=-lng;
- ew='W';
- }
- timep=current_to_iso8601();
- sscanf(timep,"%d-%d-%dT%d:%d:%d",&year,&mon,&day,&hr,&min,&sec);
- g_free(timep);
- gga=g_strdup_printf("$GPGGA,%02d%02d%02d,%02.0f%07.4f,%c,%03.0f%07.4f,%c,1,08,2.5,0,M,,,,0000* \n",hr,min,sec,floor(lat),(lat-floor(lat))*60.0,ns,floor(lng),(lng-floor(lng))*60,ew);
- nmea_chksum(gga);
- rmc=g_strdup_printf("$GPRMC,%02d%02d%02d,A,%02.0f%07.4f,%c,%03.0f%07.4f,%c,%3.1f,%3.1f,%02d%02d%02d,,* \n",hr,min,sec,floor(lat),(lat-floor(lat))*60.0,ns,floor(lng),(lng-floor(lng))*60,ew,priv->speed/1.852,(double)priv->direction,day,mon,year%100);
- nmea_chksum(rmc);
- g_free(priv->nmea);
- priv->nmea=g_strdup_printf("%s%s",gga,rmc);
- g_free(gga);
- g_free(rmc);
- attr->u.str=priv->nmea;
- break;
- case attr_position_valid:
- attr->u.num=priv->valid;
- break;
- default:
- return 0;
- }
- attr->type = type;
- return 1;
-}
-
-static int
-vehicle_demo_set_attr_do(struct vehicle_priv *priv, struct attr *attr)
-{
- switch(attr->type) {
- case attr_navit:
- priv->navit = attr->u.navit;
- break;
- case attr_route:
- priv->route = attr->u.route;
- break;
- case attr_speed:
- priv->config_speed=attr->u.num;
- break;
- case attr_interval:
- priv->interval=attr->u.num;
- if (priv->timer)
- event_remove_timeout(priv->timer);
- priv->timer=event_add_timeout(priv->interval, 1, priv->timer_callback);
- break;
- case attr_position_coord_geo:
- priv->geo=*(attr->u.coord_geo);
- if (priv->valid != attr_position_valid_valid) {
- priv->valid = attr_position_valid_valid;
- callback_list_call_attr_0(priv->cbl, attr_position_valid);
- }
- priv->position_set=1;
- dbg(lvl_debug,"position_set %f %f\n", priv->geo.lat, priv->geo.lng);
- break;
- case attr_profilename:
- case attr_source:
- case attr_name:
- case attr_follow:
- case attr_active:
- // Ignore; used by Navit's infrastructure, but not relevant for this vehicle.
- break;
- default:
- dbg(lvl_error,"unsupported attribute %s\n",attr_to_name(attr->type));
- return 0;
- }
- return 1;
-}
-
-static int
-vehicle_demo_set_attr(struct vehicle_priv *priv, struct attr *attr)
-{
- return vehicle_demo_set_attr_do(priv, attr);
-}
-
-struct vehicle_methods vehicle_demo_methods = {
- vehicle_demo_destroy,
- vehicle_demo_position_attr_get,
- vehicle_demo_set_attr,
-};
-
-static void
-vehicle_demo_timer(struct vehicle_priv *priv)
-{
- struct coord c, c2, pos, ci;
- int slen, len, dx, dy;
- struct route *route=NULL;
- struct map *route_map=NULL;
- struct map_rect *mr=NULL;
- struct item *item=NULL;
-
- len = (priv->config_speed * priv->interval / 1000)/ 3.6;
- dbg(lvl_debug, "###### Entering simulation loop\n");
- if (!priv->config_speed)
- return;
- if (priv->route)
- route=priv->route;
- else if (priv->navit)
- route=navit_get_route(priv->navit);
- if (route)
- route_map=route_get_map(route);
- if (route_map)
- mr=map_rect_new(route_map, NULL);
- if (mr)
- item=map_rect_get_item(mr);
- if (item && item->type == type_route_start)
- item=map_rect_get_item(mr);
- while(item && item->type!=type_street_route)
- item=map_rect_get_item(mr);
- if (item && item_coord_get(item, &pos, 1)) {
- priv->position_set=0;
- dbg(lvl_debug, "current pos=0x%x,0x%x\n", pos.x, pos.y);
- dbg(lvl_debug, "last pos=0x%x,0x%x\n", priv->last.x, priv->last.y);
- if (priv->last.x == pos.x && priv->last.y == pos.y) {
- dbg(lvl_warning, "endless loop\n");
- }
- priv->last = pos;
- while (item && priv->config_speed) {
- if (!item_coord_get(item, &c, 1)) {
- item=map_rect_get_item(mr);
- continue;
- }
- dbg(lvl_debug, "next pos=0x%x,0x%x\n", c.x, c.y);
- slen = transform_distance(projection_mg, &pos, &c);
- dbg(lvl_debug, "len=%d slen=%d\n", len, slen);
- if (slen < len) {
- len -= slen;
- pos = c;
- } else {
- if (item_coord_get(item, &c2, 1) || map_rect_get_item(mr)) {
- dx = c.x - pos.x;
- dy = c.y - pos.y;
- ci.x = pos.x + dx * len / slen;
- ci.y = pos.y + dy * len / slen;
- priv->direction =
- transform_get_angle_delta(&pos, &c, 0);
- priv->speed=priv->config_speed;
- } else {
- ci.x = pos.x;
- ci.y = pos.y;
- priv->speed=0;
- dbg(lvl_debug,"destination reached\n");
- }
- dbg(lvl_debug, "ci=0x%x,0x%x\n", ci.x, ci.y);
- transform_to_geo(projection_mg, &ci,
- &priv->geo);
- if (priv->valid != attr_position_valid_valid) {
- priv->valid = attr_position_valid_valid;
- callback_list_call_attr_0(priv->cbl, attr_position_valid);
- }
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
- break;
- }
- }
- } else {
- if (priv->position_set)
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
- }
- if (mr)
- map_rect_destroy(mr);
-}
-
-
-
-static struct vehicle_priv *
-vehicle_demo_new(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;
- ret->interval=1000;
- ret->config_speed=40;
- ret->timer_callback=callback_new_1(callback_cast(vehicle_demo_timer), ret);
- ret->valid = attr_position_valid_invalid;
- *meth = vehicle_demo_methods;
- while (attrs && *attrs)
- vehicle_demo_set_attr_do(ret, *attrs++);
- if (!ret->timer)
- ret->timer=event_add_timeout(ret->interval, 1, ret->timer_callback);
- return ret;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug, "enter\n");
- plugin_register_category_vehicle("demo", vehicle_demo_new);
-}
diff --git a/navit/vehicle/file/CMakeLists.txt b/navit/vehicle/file/CMakeLists.txt
deleted file mode 100644
index 764f412f8..000000000
--- a/navit/vehicle/file/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-module_add_library(vehicle_file vehicle_file.c)
-set (vehicle_pipe_TYPE ${vehicle_file_TYPE})
-set (vehicle_serial_TYPE ${vehicle_file_TYPE})
-set (vehicle_socket_TYPE ${vehicle_file_TYPE})
-module_add_library(vehicle_pipe vehicle_pipe.c)
-module_add_library(vehicle_serial vehicle_serial.c)
-module_add_library(vehicle_socket vehicle_socket.c)
diff --git a/navit/vehicle/file/vehicle_file.c b/navit/vehicle/file/vehicle_file.c
deleted file mode 100644
index 10bce942b..000000000
--- a/navit/vehicle/file/vehicle_file.c
+++ /dev/null
@@ -1,1054 +0,0 @@
-/**
- * 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 "config.h"
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <string.h>
-#include <glib.h>
-#include <sys/stat.h>
-#ifdef _WIN32
- #include <serial_io.h>
-#else
-#include <termios.h>
-#endif
-#include <math.h>
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-#include "coord.h"
-#include "item.h"
-#include "event.h"
-#include "vehicle.h"
-#include "file.h"
-#ifdef HAVE_SOCKET
-#include <stdlib.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#endif
-#ifdef HAVE_WINSOCK
-#include <winsock2.h>
-int inet_aton(const char *cp, struct in_addr *inp);
-
-int inet_aton(const char *cp, struct in_addr *inp)
-{
- unsigned long addr = inet_addr(cp);
- inp->S_un.S_addr = addr;
- return addr!=-1;
-}
-#endif
-
-static void vehicle_file_disable_watch(struct vehicle_priv *priv);
-static void vehicle_file_enable_watch(struct vehicle_priv *priv);
-static int vehicle_file_parse(struct vehicle_priv *priv, char *buffer);
-static int vehicle_file_open(struct vehicle_priv *priv);
-static void vehicle_file_close(struct vehicle_priv *priv);
-
-
-enum file_type {
- file_type_pipe = 1, file_type_device, file_type_file, file_type_socket, file_type_serial
-};
-
-static int buffer_size = 1024;
-
-struct gps_sat {
- int prn;
- int elevation;
- int azimuth;
- int snr;
-};
-
-
-struct vehicle_priv {
- char *source;
- struct callback_list *cbl;
- int fd;
- struct callback *cb,*cbt;
- char *buffer;
- int buffer_pos;
- char *nmea_data;
- char *nmea_data_buf;
-
- struct coord_geo geo;
- double speed;
- double direction;
- double height;
- double hdop;
- double vdop;
- char fixtime[20];
- int fixyear;
- int fixmonth;
- int fixday;
- int status;
- int sats_used;
- int sats_visible;
- int sats_signal;
- int time;
- int on_eof;
-#ifdef _WIN32
- int no_data_count;
- struct event_timeout * timeout;
- struct callback *timeout_callback;
-#endif
- enum file_type file_type;
- FILE *file;
- struct event_watch *watch;
- speed_t baudrate;
- struct attr ** attrs;
- char fixiso8601[128];
- int checksum_ignore;
- int magnetic_direction;
- int current_count;
- struct gps_sat current[24];
- int next_count;
- struct gps_sat next[24];
- struct item sat_item;
- int valid;
- char *statefile;
- int process_statefile;
-};
-
-//***************************************************************************
-/** @fn static int vehicle_win32_serial_track(struct vehicle_priv *priv)
-*****************************************************************************
-* @b Description: Callback of the plugin
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-*****************************************************************************
-* @return always 1
-*****************************************************************************
-**/
-#ifdef _WIN32
-static int vehicle_win32_serial_track(struct vehicle_priv *priv)
-{
- static char buffer[2048] = {0,};
- static int current_index = 0;
- const int chunk_size = 1024;
- int rc = 0;
- int dwBytes;
-
- dbg(lvl_debug, "enter, *priv='%x', priv->source='%s'\n", priv, priv->source);
-
- if ( priv->no_data_count > 5 )
- {
- vehicle_file_close( priv );
- priv->no_data_count = 0;
- vehicle_file_open( priv );
- vehicle_file_enable_watch(priv);
- }
-
- //if ( priv->fd <= 0 )
- //{
- // vehicle_file_open( priv );
- //}
-
- if ( current_index >= ( sizeof( buffer ) - chunk_size ) )
- {
- // discard
- current_index = 0;
- memset( buffer, 0 , sizeof( buffer ) );
- }
-
- dwBytes = serial_io_read( priv->fd, &buffer[ current_index ], chunk_size );
- if ( dwBytes > 0 )
- {
- char* return_pos = NULL;
- current_index += dwBytes;
-
- while ( ( return_pos = strchr( buffer, '\n' ) ) != NULL )
- {
- char return_buffer[1024];
- int bytes_to_copy = return_pos - buffer + 1;
- memcpy( return_buffer, buffer, bytes_to_copy );
- return_buffer[ bytes_to_copy + 1 ] = '\0';
- return_buffer[ bytes_to_copy ] = '\0';
-
- // printf( "received %d : '%s' bytes to copy\n", bytes_to_copy, return_buffer );
- rc += vehicle_file_parse( priv, return_buffer );
-
- current_index -= bytes_to_copy;
- memmove( buffer, &buffer[ bytes_to_copy ] , sizeof( buffer ) - bytes_to_copy );
- }
- if (rc) {
- priv->no_data_count = 0;
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
- if (rc > 1)
- dbg(lvl_error, "Can not keep with gps data delay is %d seconds\n", rc - 1);
-
- }
- }
- else
- {
- priv->no_data_count++;
- }
- dbg(lvl_info, "leave, return '1', priv->no_data_count='%d'\n", priv->no_data_count);
- return 1;
-}
-#endif
-
-//***************************************************************************
-/** @fn static int vehicle_file_open(struct vehicle_priv *priv)
-*****************************************************************************
-* @b Description: open dialogue with the GPS
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-*****************************************************************************
-* @return 1 if ok
-* 0 if error
-*****************************************************************************
-**/
-static int
-vehicle_file_open(struct vehicle_priv *priv)
-{
- char *name;
-#ifndef _WIN32
- struct termios tio;
-#else
- #define O_NDELAY 0
-#endif
-
- name = priv->source + 5;
- if (!strncmp(priv->source, "file:", 5)) {
- priv->fd = open(name, O_RDONLY | O_NDELAY);
- if (priv->fd < 0)
- return 0;
- if (file_is_reg(name)) {
- priv->file_type = file_type_file;
- }
-#ifndef _WIN32
- else {
- tcgetattr(priv->fd, &tio);
- cfmakeraw(&tio);
- cfsetispeed(&tio, priv->baudrate);
- cfsetospeed(&tio, priv->baudrate);
- tio.c_cc[VMIN] = 0;
- tio.c_cc[VTIME] = 200;
- tcsetattr(priv->fd, TCSANOW, &tio);
- priv->file_type = file_type_device;
- }
- } else if (!strncmp(priv->source,"pipe:", 5)) {
- priv->file = popen(name, "r");
- if (!priv->file)
- return 0;
- priv->fd = fileno(priv->file);
- priv->file_type = file_type_pipe;
-#endif //!_WIN32
-#if defined(HAVE_SOCKET) || defined(HAVE_WINSOCK)
- } else if (!strncmp(priv->source,"socket:", 7)) {
- #ifdef _WIN32
- WSADATA wsi;
- WSAStartup(0x00020002,&wsi);
- #endif
- char *p,*s=g_strdup(priv->source+7);
- struct sockaddr_in sin;
- p=strchr(s,':');
- if (!p) {
- dbg(lvl_error,"port number missing in %s\n",s);
- g_free(s);
- return 0;
- }
- *p++='\0';
- sin.sin_family=AF_INET;
- sin.sin_port=ntohs(atoi(p));
- if (!inet_aton(s, &sin.sin_addr)) {
- dbg(lvl_error,"failed to parse %s\n",s);
- g_free(s);
- return 0;
- }
- priv->fd = socket(PF_INET, SOCK_STREAM, 0);
- if (priv->fd != -1) {
- if (connect(priv->fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
- dbg(lvl_error,"failed to connect to %s:%s\n",s,p);
- g_free(s);
- return 0;
- }
- }
- p=strchr(p,':');
- if (p) {
- p++;
- write(priv->fd, p, strlen(p));
- }
- priv->file_type = file_type_socket;
-#endif //HAVE_SOCKET
- } else if (!strncmp(priv->source,"serial:",7)) {
-#ifdef _WIN32
- char* raw_setting_str = g_strdup( priv->source );
-
- char* strport = strchr(raw_setting_str, ':' );
- char* strsettings = strchr(raw_setting_str, ' ' );
-
- if ( strport && strsettings )
- {
- strport++;
- *strsettings = '\0';
- strsettings++;
-
- priv->fd=serial_io_init( strport, strsettings );
- }
- g_free( raw_setting_str );
- priv->file_type = file_type_serial;
- // Add the callback
- dbg(lvl_info, "Add the callback ...\n", priv->source);
- priv->timeout_callback=callback_new_1(callback_cast(vehicle_win32_serial_track), priv);
-#else
- //TODO - add linux serial
-#endif //!_WIN32
- }
- return(priv->fd != -1);
-}
-
-//***************************************************************************
-/** @fn static void vehicle_file_close(struct vehicle_priv *priv)
-*****************************************************************************
-* @b Description: close dialogue with the GPS
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-*****************************************************************************
-**/
-static void
-vehicle_file_close(struct vehicle_priv *priv)
-{
- dbg(lvl_debug, "enter, priv->fd='%d'\n", priv->fd);
- vehicle_file_disable_watch(priv);
-#ifdef _WIN32
- if(priv->file_type == file_type_serial)
- {
- if (priv->timeout_callback) {
- callback_destroy(priv->timeout_callback);
- priv->timeout_callback=NULL; // dangling pointer! prevent double freeing.
- }
- serial_io_shutdown( priv->fd );
- }
- else
-#endif
- {
- if (priv->file) {
-#ifndef _MSC_VER
- pclose(priv->file);
-#endif /* _MSC_VER */
- }
- else if (priv->fd >= 0) {
- close(priv->fd);
- }
- priv->file = NULL;
- priv->fd = -1;
- }
-}
-
-//***************************************************************************
-/** @fn static int vehicle_file_enable_watch_timer(struct vehicle_priv *priv)
-*****************************************************************************
-* @b Description: Enable watch timer to get GPS data
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-*****************************************************************************
-* @return always 0
-*****************************************************************************
-**/
-static int
-vehicle_file_enable_watch_timer(struct vehicle_priv *priv)
-{
- dbg(lvl_debug, "enter\n");
- vehicle_file_enable_watch(priv);
-
- return FALSE;
-}
-
-
-//***************************************************************************
-/** @fn static int vehicle_file_parse( struct vehicle_priv *priv,
-* char *buffer)
-*****************************************************************************
-* @b Description: Parse the buffer
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-* @param buffer : data buffer (null terminated)
-*****************************************************************************
-* @return 1 if The GPRMC Sentence is found
-* 0 if not found
-*****************************************************************************
-**/
-static int
-vehicle_file_parse(struct vehicle_priv *priv, char *buffer)
-{
- char *nmea_data_buf, *p, *item[32];
- double lat, lng;
- int i, j, bcsum;
- int len = strlen(buffer);
- unsigned char csum = 0;
- int valid=0;
- int ret = 0;
-
- dbg(lvl_info, "enter: buffer='%s'\n", buffer);
- for (;;) {
- if (len < 4) {
- dbg(lvl_error, "'%s' too short\n", buffer);
- return ret;
- }
- if (buffer[len - 1] == '\r' || buffer[len - 1] == '\n') {
- buffer[--len] = '\0';
- if (buffer[len - 1] == '\r')
- buffer[--len] = '\0';
- } else
- break;
- }
- if (buffer[0] != '$') {
- dbg(lvl_error, "no leading $ in '%s'\n", buffer);
- return ret;
- }
- if (buffer[len - 3] != '*') {
- dbg(lvl_error, "no *XX in '%s'\n", buffer);
- return ret;
- }
- for (i = 1; i < len - 3; i++) {
- csum ^= (unsigned char) (buffer[i]);
- }
- if (!sscanf(buffer + len - 2, "%x", &bcsum) && priv->checksum_ignore != 2) {
- dbg(lvl_error, "no checksum in '%s'\n", buffer);
- return ret;
- }
- if (bcsum != csum && priv->checksum_ignore == 0) {
- dbg(lvl_error, "wrong checksum in '%s was %x should be %x'\n", buffer,bcsum,csum);
- return ret;
- }
-
- if (!priv->nmea_data_buf || strlen(priv->nmea_data_buf) < 65536) {
- nmea_data_buf=g_strconcat(priv->nmea_data_buf ? priv->nmea_data_buf : "", buffer, "\n", NULL);
- g_free(priv->nmea_data_buf);
- priv->nmea_data_buf=nmea_data_buf;
- } else {
- dbg(lvl_error, "nmea buffer overflow (len %zu), discarding '%s'\n", priv->nmea_data_buf?strlen(priv->nmea_data_buf):-1,buffer);
- }
- i = 0;
- p = buffer;
- while (i < 31) {
- item[i++] = p;
- while (*p && *p != ',')
- p++;
- if (!*p)
- break;
- *p++ = '\0';
- }
-
- if (!strncmp(&buffer[3], "GGA", 3)) {
- /* 1 1111
- 0 1 2 3 4 5 6 7 8 9 0 1234
- $GPGGA,184424.505,4924.2811,N,01107.8846,E,1,05,2.5,408.6,M,,,,0000*0C
- UTC of Fix[1],Latitude[2],N/S[3],Longitude[4],E/W[5],Quality(0=inv,1=gps,2=dgps)[6],Satelites used[7],
- HDOP[8],Altitude[9],"M"[10],height of geoid[11], "M"[12], time since dgps update[13], dgps ref station [14]
- */
- if (*item[2] && *item[3] && *item[4] && *item[5]) {
- lat = g_ascii_strtod(item[2], NULL);
- priv->geo.lat = floor(lat / 100);
- lat -= priv->geo.lat * 100;
- priv->geo.lat += lat / 60;
-
- if (!g_ascii_strcasecmp(item[3],"S"))
- priv->geo.lat=-priv->geo.lat;
-
- lng = g_ascii_strtod(item[4], NULL);
- priv->geo.lng = floor(lng / 100);
- lng -= priv->geo.lng * 100;
- priv->geo.lng += lng / 60;
-
- if (!g_ascii_strcasecmp(item[5],"W"))
- priv->geo.lng=-priv->geo.lng;
- priv->valid=attr_position_valid_valid;
-
- dbg(lvl_info, "latitude '%2.4f' longitude %2.4f\n", priv->geo.lat, priv->geo.lng);
-
- } else
- priv->valid=attr_position_valid_invalid;
- if (*item[6])
- sscanf(item[6], "%d", &priv->status);
- if (*item[7])
- sscanf(item[7], "%d", &priv->sats_used);
- if (*item[8])
- sscanf(item[8], "%lf", &priv->hdop);
- if (*item[1])
- strncpy(priv->fixtime, item[1], sizeof(priv->fixtime));
- if (*item[9])
- sscanf(item[9], "%lf", &priv->height);
-
- g_free(priv->nmea_data);
- priv->nmea_data=priv->nmea_data_buf;
- priv->nmea_data_buf=NULL;
- if (priv->file_type == file_type_file) {
- if (priv->watch) {
- vehicle_file_disable_watch(priv);
- event_add_timeout(priv->time, 0, priv->cbt);
- }
- }
- }
- if (!strncmp(&buffer[3], "VTG", 3)) {
- /* 0 1 2 34 5 6 7 8
- $GPVTG,143.58,T,,M,0.26,N,0.5,K*6A
- Course Over Ground Degrees True[1],"T"[2],Course Over Ground Degrees Magnetic[3],"M"[4],
- Speed in Knots[5],"N"[6],"Speed in KM/H"[7],"K"[8]
- */
- if (item[1] && item[7])
- valid = 1;
- if (i >= 10 && (*item[9] == 'A' || *item[9] == 'D'))
- valid = 1;
- if (valid) {
- priv->direction = g_ascii_strtod( item[1], NULL );
- priv->speed = g_ascii_strtod( item[7], NULL );
- dbg(lvl_info,"direction %lf, speed %2.1lf\n", priv->direction, priv->speed);
- }
- }
- if (!strncmp(&buffer[3], "RMC", 3)) {
- /* 1 1
- 0 1 2 3 4 5 6 7 8 9 0 1
- $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
- Time[1],Active/Void[2],lat[3],N/S[4],long[5],W/E[6],speed in knots[7],track angle[8],date[9],
- magnetic variation[10],magnetic variation direction[11]
- */
- if (*item[2] == 'A')
- valid = 1;
- if (i >= 13 && (*item[12] == 'A' || *item[12] == 'D'))
- valid = 1;
- if (valid) {
- priv->direction = g_ascii_strtod( item[8], NULL );
- priv->speed = g_ascii_strtod( item[7], NULL );
- priv->speed *= 1.852;
- sscanf(item[9], "%02d%02d%02d",
- &priv->fixday,
- &priv->fixmonth,
- &priv->fixyear);
- priv->fixyear += 2000;
- }
- ret = 1;
- }
- if (!strncmp(buffer, "$GPGSV", 6) && i >= 4) {
- /*
- 0 GSV Satellites in view
- 1 2 Number of sentences for full data
- 2 1 sentence 1 of 2
- 3 08 Number of satellites in view
-
- 4 01 Satellite PRN number
- 5 40 Elevation, degrees
- 6 083 Azimuth, degrees
- 7 46 SNR - higher is better
- for up to 4 satellites per sentence
- *75 the checksum data, always begins with *
- */
- if (item[3]) {
- sscanf(item[3], "%d", &priv->sats_visible);
- }
- j=4;
- while (j+4 <= i && priv->current_count < 24) {
- struct gps_sat *sat=&priv->next[priv->next_count++];
- sat->prn=atoi(item[j]);
- sat->elevation=atoi(item[j+1]);
- sat->azimuth=atoi(item[j+2]);
- sat->snr=atoi(item[j+3]);
- j+=4;
- }
- if (!strcmp(item[1], item[2])) {
- priv->sats_signal=0;
- for (i = 0 ; i < priv->next_count ; i++) {
- priv->current[i]=priv->next[i];
- if (priv->current[i].snr)
- priv->sats_signal++;
- }
- priv->current_count=priv->next_count;
- priv->next_count=0;
- }
- }
- if (!strncmp(&buffer[3], "ZDA", 3)) {
- /*
- 0 1 2 3 4 5 6
- $GPZDA,hhmmss.ss,dd,mm,yyyy,xx,yy*CC
- hhmmss HrMinSec(UTC)
- dd,mm,yyy Day,Month,Year
- xx local zone hours -13..13
- yy local zone minutes 0..59
- */
- if (item[1] && item[2] && item[3] && item[4]) {
- strncpy(priv->fixtime, item[1], strlen(priv->fixtime));
- priv->fixday = atoi(item[2]);
- priv->fixmonth = atoi(item[3]);
- priv->fixyear = atoi(item[4]);
- }
- }
- if (!strncmp(buffer, "$IISMD", 6)) {
- /*
- 0 1 2 3 4
- $IISMD,dir,press,height,temp*CC"
- dir Direction (0-359)
- press Pressure (hpa, i.e. 1032)
- height Barometric height above ground (meter)
- temp Temperature (Degree Celsius)
- */
- if (item[1]) {
- priv->magnetic_direction = g_ascii_strtod( item[1], NULL );
- dbg(lvl_debug,"magnetic %d\n", priv->magnetic_direction);
- }
- }
- return ret;
-}
-
-//***************************************************************************
-/** @fn static void vehicle_file_io(struct vehicle_priv *priv)
-*****************************************************************************
-* @b Description: function to get data from GPS
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-*****************************************************************************
-* @remarks
-*****************************************************************************
-**/
-static void
-vehicle_file_io(struct vehicle_priv *priv)
-{
- int size, rc = 0;
- char *str, *tok;
- dbg(lvl_debug, "vehicle_file_io : enter\n");
-
- if (priv->process_statefile) {
- unsigned char *data;
- priv->process_statefile=0;
- if (file_get_contents(priv->statefile, &data, &size)) {
- if (size > buffer_size)
- size=buffer_size;
- memcpy(priv->buffer, data, size);
- priv->buffer_pos=0;
- g_free(data);
- } else
- return;
- } else {
- size = read(priv->fd, priv->buffer + priv->buffer_pos, buffer_size - priv->buffer_pos - 1);
- }
- if (size <= 0) {
- switch (priv->on_eof) {
- case 0:
- vehicle_file_close(priv);
- vehicle_file_open(priv);
- break;
- case 1:
- vehicle_file_disable_watch(priv);
- break;
- case 2:
- exit(0);
- break;
- }
- return;
- }
- priv->buffer_pos += size;
- priv->buffer[priv->buffer_pos] = '\0';
- dbg(lvl_debug, "size=%d pos=%d buffer='%s'\n", size,
- priv->buffer_pos, priv->buffer);
- str = priv->buffer;
- while ((tok = strchr(str, '\n'))) {
- *tok++ = '\0';
- dbg(lvl_debug, "line='%s'\n", str);
- rc +=vehicle_file_parse(priv, str);
- str = tok;
- if (priv->file_type == file_type_file && rc)
- break;
- }
-
- if (str != priv->buffer) {
- size = priv->buffer + priv->buffer_pos - str;
- memmove(priv->buffer, str, size + 1);
- priv->buffer_pos = size;
- dbg(lvl_debug, "now pos=%d buffer='%s'\n",
- priv->buffer_pos, priv->buffer);
- } else if (priv->buffer_pos == buffer_size - 1) {
- dbg(lvl_debug,
- "Overflow. Most likely wrong baud rate or no nmea protocol\n");
- priv->buffer_pos = 0;
- }
- if (rc)
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
-}
-
-//***************************************************************************
-/** @fn static void vehicle_file_enable_watch(struct vehicle_priv *priv)
-*****************************************************************************
-* @b Description: Enable watch
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-*****************************************************************************
-**/
-static void
-vehicle_file_enable_watch(struct vehicle_priv *priv)
-{
- dbg(lvl_debug, "enter\n");
-#ifdef _WIN32
- // add an event : don't use glib timers and g_timeout_add
- if (priv->file_type == file_type_serial)
- {
- if (priv->timeout_callback != NULL)
- priv->timeout = event_add_timeout(500, 1, priv->timeout_callback);
- else
- dbg(lvl_warning, "error : watch not enabled : priv->timeout_callback is null\n"); }
- else
-#endif
- {
- if (! priv->watch)
- priv->watch = event_add_watch(priv->fd, event_watch_cond_read, priv->cb);
- }
-}
-
-//***************************************************************************
-/** @fn static void vehicle_file_disable_watch(struct vehicle_priv *priv)
-*****************************************************************************
-* @b Description: Disable watch
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-*****************************************************************************
-**/
-static void
-vehicle_file_disable_watch(struct vehicle_priv *priv)
-{
- dbg(lvl_debug, "vehicle_file_disable_watch : enter\n");
-#ifdef _WIN32
- if(priv->file_type == file_type_serial)
- {
- if (priv->timeout) {
- event_remove_timeout(priv->timeout);
- priv->timeout=NULL; // dangling pointer! prevent double freeing.
- }
- }
- else
-#endif //!_WIN32
- {
- if (priv->watch)
- event_remove_watch(priv->watch);
- priv->watch = NULL;
- }
-}
-
-//***************************************************************************
-/** @fn static void vehicle_priv vehicle_file_destroy(struct vehicle_priv *priv)
-*****************************************************************************
-* @b Description: Function called to uninitialize the plugin
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-*****************************************************************************
-* @remarks private data is freed by this function (g_free)
-*****************************************************************************
-**/
-static void
-vehicle_file_destroy(struct vehicle_priv *priv)
-{
- if (priv->statefile && priv->nmea_data) {
- struct attr readwrite={attr_readwrite};
- struct attr create={attr_create};
- struct attr *attrs[]={&readwrite,&create,NULL};
- struct file *f;
- readwrite.u.num=1;
- create.u.num=1;
- f=file_create(priv->statefile, attrs);
- if (f) {
- file_data_write(f, 0, strlen(priv->nmea_data), priv->nmea_data);
- file_fsync(f);
- file_destroy(f);
- }
- }
- vehicle_file_close(priv);
- callback_destroy(priv->cb);
- callback_destroy(priv->cbt);
- if (priv->statefile)
- g_free(priv->statefile);
- if (priv->source)
- g_free(priv->source);
- if (priv->buffer)
- g_free(priv->buffer);
- g_free(priv);
-}
-
-//***************************************************************************
-/** @fn static int vehicle_file_position_attr_get(struct vehicle_priv *priv,
-* enum attr_type type,
-* struct attr *attr)
-*****************************************************************************
-* @b Description: Function called to get attribute
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-* @param type : attribute type called
-* @param attr : structure to return the attribute value
-*****************************************************************************
-* @return 1 if ok
-* 0 for unkown or invalid attribute
-*****************************************************************************
-**/
-static int
-vehicle_file_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- switch (type) {
- case attr_position_fix_type:
- attr->u.num = priv->status;
- 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_magnetic_direction:
- attr->u.num = priv->magnetic_direction;
- break;
- case attr_position_hdop:
- attr->u.numd = &priv->hdop;
- break;
- case attr_position_qual:
- attr->u.num = priv->sats_visible;
- break;
- case attr_position_sats_signal:
- attr->u.num = priv->sats_signal;
- break;
- case attr_position_sats_used:
- attr->u.num = priv->sats_used;
- break;
- case attr_position_coord_geo:
- attr->u.coord_geo = &priv->geo;
- break;
- case attr_position_nmea:
- attr->u.str=priv->nmea_data;
- if (! attr->u.str)
- return 0;
- break;
- case attr_position_time_iso8601:
- if (!priv->fixyear || !priv->fixtime[0])
- return 0;
- sprintf(priv->fixiso8601, "%04d-%02d-%02dT%.2s:%.2s:%sZ",
- priv->fixyear, priv->fixmonth, priv->fixday,
- priv->fixtime, (priv->fixtime+2), (priv->fixtime+4));
- attr->u.str=priv->fixiso8601;
- break;
- case attr_position_sat_item:
- dbg(lvl_debug,"at here\n");
- priv->sat_item.id_lo++;
- if (priv->sat_item.id_lo > priv->current_count) {
- priv->sat_item.id_lo=0;
- return 0;
- }
- attr->u.item=&priv->sat_item;
- break;
- case attr_position_valid:
- attr->u.num=priv->valid;
- break;
- default:
- return 0;
- }
- if (type != attr_position_sat_item)
- priv->sat_item.id_lo=0;
- attr->type = type;
- return 1;
-}
-
-//***************************************************************************
-/** @fn static int vehicle_file_sat_attr_get(struct vehicle_priv *priv,
-* enum attr_type type,
-* struct attr *attr)
-*****************************************************************************
-* @b Description: Function called to get satellite attribute
-*****************************************************************************
-* @param priv : pointer on the private data of the plugin
-* @param type : attribute type called
-* @param attr : structure to return the attribute value
-*****************************************************************************
-* @return 1 if ok
-* 0 for unkown attribute
-*****************************************************************************
-**/
-static int
-vehicle_file_sat_attr_get(void *priv_data, enum attr_type type, struct attr *attr)
-{
- struct gps_sat *sat;
- struct vehicle_priv *priv=priv_data;
- if (priv->sat_item.id_lo < 1)
- return 0;
- if (priv->sat_item.id_lo > priv->current_count)
- return 0;
- sat=&priv->current[priv->sat_item.id_lo-1];
- switch (type) {
- case attr_sat_prn:
- attr->u.num=sat->prn;
- break;
- case attr_sat_elevation:
- attr->u.num=sat->elevation;
- break;
- case attr_sat_azimuth:
- attr->u.num=sat->azimuth;
- break;
- case attr_sat_snr:
- attr->u.num=sat->snr;
- break;
- default:
- return 0;
- }
- attr->type = type;
- return 1;
-}
-
-static struct item_methods vehicle_file_sat_methods = {
- NULL,
- NULL,
- NULL,
- vehicle_file_sat_attr_get,
-};
-
-static struct vehicle_methods vehicle_file_methods = {
- vehicle_file_destroy,
- vehicle_file_position_attr_get,
-};
-
-//***************************************************************************
-/** @fn static struct vehicle_priv * vehicle_file_new_file(
-* struct vehicle_methods *meth,
-* struct callback_list *cbl,
-* struct attr **attrs)
-*****************************************************************************
-* @b Description: Function called to initialize the plugin
-*****************************************************************************
-* @param meth : ?
-* @param cbl : ?
-* @param attrs : ?
-*****************************************************************************
-* @return pointer on the private data of the plugin
-*****************************************************************************
-* @remarks private data is allocated by this function (g_new0)
-*****************************************************************************
-**/
-static struct vehicle_priv *
-vehicle_file_new_file(struct vehicle_methods
- *meth, struct callback_list
- *cbl, struct attr **attrs)
-{
- struct vehicle_priv *ret;
- struct attr *source;
- struct attr *time;
- struct attr *on_eof;
- struct attr *baudrate;
- struct attr *checksum_ignore;
- struct attr *state_file;
-
- dbg(lvl_debug, "enter\n");
-
- source = attr_search(attrs, NULL, attr_source);
- if(source == NULL){
- dbg(lvl_error,"Missing source attribute");
- return NULL;
- }
- ret = g_new0(struct vehicle_priv, 1); // allocate and initialize to 0
- ret->fd = -1;
- ret->cbl = cbl;
- ret->source = g_strdup(source->u.str);
- ret->buffer = g_malloc(buffer_size);
- ret->time=1000;
- ret->baudrate=B4800;
- state_file=attr_search(attrs, NULL, attr_state_file);
- if (state_file)
- ret->statefile=g_strdup(state_file->u.str);
- time = attr_search(attrs, NULL, attr_time);
- if (time)
- ret->time=time->u.num;
- baudrate = attr_search(attrs, NULL, attr_baudrate);
- if (baudrate) {
- switch (baudrate->u.num) {
- case 4800:
- ret->baudrate=B4800;
- break;
- case 9600:
- ret->baudrate=B9600;
- break;
- case 19200:
- ret->baudrate=B19200;
- break;
-#ifdef B38400
- case 38400:
- ret->baudrate=B38400;
- break;
-#endif
-#ifdef B57600
- case 57600:
- ret->baudrate=B57600;
- break;
-#endif
-#ifdef B115200
- case 115200:
- ret->baudrate=B115200;
- break;
-#endif
- }
- }
- checksum_ignore = attr_search(attrs, NULL, attr_checksum_ignore);
- if (checksum_ignore)
- ret->checksum_ignore=checksum_ignore->u.num;
- ret->attrs = attrs;
- on_eof = attr_search(attrs, NULL, attr_on_eof);
- if (on_eof && !g_ascii_strcasecmp(on_eof->u.str, "stop"))
- ret->on_eof=1;
- if (on_eof && !g_ascii_strcasecmp(on_eof->u.str, "exit"))
- ret->on_eof=2;
- dbg(lvl_debug,"on_eof=%d\n", ret->on_eof);
- *meth = vehicle_file_methods;
- ret->cb=callback_new_1(callback_cast(vehicle_file_io), ret);
- ret->cbt=callback_new_1(callback_cast(vehicle_file_enable_watch_timer), ret);
- if (ret->statefile && file_exists(ret->statefile)) {
- ret->process_statefile=1;
- event_add_timeout(1000, 0, ret->cb);
- }
- ret->sat_item.type=type_position_sat;
- ret->sat_item.id_hi=ret->sat_item.id_lo=0;
- ret->sat_item.priv_data=ret;
- ret->sat_item.meth=&vehicle_file_sat_methods;
-#ifdef _WIN32
- ret->no_data_count = 0;
-#endif
-
- dbg(lvl_debug, "vehicle_file_new_file:open\n");
- if (!vehicle_file_open(ret)) {
- dbg(lvl_error, "Failed to open '%s'\n", ret->source);
- }
-
- vehicle_file_enable_watch(ret);
- // vehicle_file_destroy(ret);
- // return NULL;
- dbg(lvl_debug, "leave\n");
- return ret;
-}
-
-//***************************************************************************
-/** @fn void plugin_init(void)
-*****************************************************************************
-* @b Description: Initialisation of vehicle_file plugin
-*****************************************************************************
-**/
-void plugin_init(void)
-{
- dbg(lvl_debug, "vehicle_file:plugin_init:enter\n");
- plugin_register_category_vehicle("file", vehicle_file_new_file);
- plugin_register_category_vehicle("pipe", vehicle_file_new_file);
- plugin_register_category_vehicle("socket", vehicle_file_new_file);
- plugin_register_category_vehicle("serial", vehicle_file_new_file);
-}
diff --git a/navit/vehicle/file/vehicle_pipe.c b/navit/vehicle/file/vehicle_pipe.c
deleted file mode 100644
index 420390d4e..000000000
--- a/navit/vehicle/file/vehicle_pipe.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 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 "config.h"
-#include "plugin.h"
-
-void
-plugin_init(void)
-{
- plugin_get_category_vehicle("file");
-}
diff --git a/navit/vehicle/file/vehicle_serial.c b/navit/vehicle/file/vehicle_serial.c
deleted file mode 100644
index 420390d4e..000000000
--- a/navit/vehicle/file/vehicle_serial.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 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 "config.h"
-#include "plugin.h"
-
-void
-plugin_init(void)
-{
- plugin_get_category_vehicle("file");
-}
diff --git a/navit/vehicle/file/vehicle_socket.c b/navit/vehicle/file/vehicle_socket.c
deleted file mode 100644
index 420390d4e..000000000
--- a/navit/vehicle/file/vehicle_socket.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * 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 "config.h"
-#include "plugin.h"
-
-void
-plugin_init(void)
-{
- plugin_get_category_vehicle("file");
-}
diff --git a/navit/vehicle/gpsd/CMakeLists.txt b/navit/vehicle/gpsd/CMakeLists.txt
deleted file mode 100644
index 091df2f71..000000000
--- a/navit/vehicle/gpsd/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-module_add_library(vehicle_gpsd vehicle_gpsd.c)
-if (LIBGPS19_FOUND)
- set_property(
- TARGET vehicle_gpsd
- APPEND PROPERTY COMPILE_DEFINITIONS HAVE_LIBGPS19=1
- )
-endif (LIBGPS19_FOUND)
-
diff --git a/navit/vehicle/gpsd/vehicle_gpsd.c b/navit/vehicle/gpsd/vehicle_gpsd.c
deleted file mode 100644
index a8c29cd97..000000000
--- a/navit/vehicle/gpsd/vehicle_gpsd.c
+++ /dev/null
@@ -1,475 +0,0 @@
-/**
- * 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 <config.h>
-#include <gps.h>
-#include <string.h>
-#include <glib.h>
-#include <math.h>
-#ifdef HAVE_GPSBT
-#include <gpsbt.h>
-#include <errno.h>
-#endif
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-#include "coord.h"
-#include "item.h"
-#include "vehicle.h"
-#include "event.h"
-#include "types.h"
-
-static struct vehicle_priv {
- char *source;
- char *gpsd_query;
- struct callback_list *cbl;
- struct callback *cb, *cbt;
- struct event_watch *evwatch;
- guint retry_interval;
- struct gps_data_t *gps;
- struct coord_geo geo;
- double speed;
- double direction;
- double height;
- double hdop;
- int status;
- int fix_type;
- time_t fix_time;
- int sats;
- int sats_signal;
- int sats_used;
- char *nmea_data;
- char *nmea_data_buf;
- struct event_timeout *retry_timer2;
- struct attr ** attrs;
- char fixiso8601[128];
-#ifdef HAVE_GPSBT
- gpsbt_t context;
-#endif
-} *vehicle_last;
-
-#define DEFAULT_RETRY_INTERVAL 10 // seconds
-#define MIN_RETRY_INTERVAL 1 // seconds
-
-static void vehicle_gpsd_io(struct vehicle_priv *priv);
-
-static void
-#ifdef HAVE_LIBGPS19
-vehicle_gpsd_callback(struct gps_data_t *data, const char *buf, size_t len)
-#else
-vehicle_gpsd_callback(struct gps_data_t *data, const char *buf, size_t len,
- int level)
-#endif
-{
- char *pos,*nmea_data_buf;
- int i=0,sats_signal=0;
-
- struct vehicle_priv *priv = vehicle_last;
- if( len > 0 && buf[0] == '$' ) {
- char buffer[len+2];
- buffer[len+1]='\0';
- memcpy(buffer, buf, len);
- pos=strchr(buffer,'\n');
- if(!pos) {
- pos=strchr(buffer,'\r');
- }
- if (pos) {
- *pos ='\n';
- *++pos='\0';
- if (!priv->nmea_data_buf || strlen(priv->nmea_data_buf) < 65536) {
- nmea_data_buf=g_strconcat(priv->nmea_data_buf ? priv->nmea_data_buf : "", buffer, NULL);
- g_free(priv->nmea_data_buf);
- priv->nmea_data_buf=nmea_data_buf;
- } else {
- dbg(lvl_error, "nmea buffer overflow, discarding '%s'\n", buffer);
- }
- }
- }
- dbg(lvl_debug,"data->set="LONGLONG_HEX_FMT"\n", (unsigned long long)data->set);
- if (data->set & SPEED_SET) {
- priv->speed = data->fix.speed * 3.6;
- if(!isnan(data->fix.speed))
- callback_list_call_attr_0(priv->cbl, attr_position_speed);
- data->set &= ~SPEED_SET;
- }
- if (data->set & TRACK_SET) {
- priv->direction = data->fix.track;
- data->set &= ~TRACK_SET;
- }
- if (data->set & ALTITUDE_SET) {
- priv->height = data->fix.altitude;
- data->set &= ~ALTITUDE_SET;
- }
- if (data->set & SATELLITE_SET) {
-// We cannot rely on GPSD_API_MAJOR_VERSION here because it was not
-// incremented for this change :-(.
-#ifdef HAVE_LIBGPS19
- if(data->satellites_visible > 0) {
-#else
- if(data->satellites > 0) {
-#endif
- sats_signal=0;
-#ifdef HAVE_LIBGPS19
- for( i=0;i<data->satellites_visible;i++) {
-#else
- for( i=0;i<data->satellites;i++) {
-#endif
-#if GPSD_API_MAJOR_VERSION >= 6
- if (data->skyview[i].ss > 0)
-#else
- if (data->ss[i] > 0)
-#endif
- sats_signal++;
- }
- }
-#ifdef HAVE_LIBGPS19
- if (priv->sats_used != data->satellites_used || priv->sats != data->satellites_visible || priv->sats_signal != sats_signal ) {
-#else
- if (priv->sats_used != data->satellites_used || priv->sats != data->satellites || priv->sats_signal != sats_signal ) {
-#endif
- priv->sats_used = data->satellites_used;
-#ifdef HAVE_LIBGPS19
- priv->sats = data->satellites_visible;
-#else
- priv->sats = data->satellites;
-#endif
- priv->sats_signal = sats_signal;
- callback_list_call_attr_0(priv->cbl, attr_position_sats);
- }
- data->set &= ~SATELLITE_SET;
- }
- if (data->set & STATUS_SET) {
- priv->status = data->status;
- data->set &= ~STATUS_SET;
- }
- if (data->set & MODE_SET) {
- priv->fix_type = data->fix.mode - 1;
- data->set &= ~MODE_SET;
- }
- if (data->set & TIME_SET) {
- priv->fix_time = data->fix.time;
- data->set &= ~TIME_SET;
- }
-#ifdef HAVE_LIBGPS19
- if (data->set & DOP_SET) {
- dbg(lvl_debug, "pdop : %g\n", data->dop.pdop);
- priv->hdop = data->dop.pdop;
- data->set &= ~DOP_SET;
-#else
- if (data->set & PDOP_SET) {
- dbg(lvl_debug, "pdop : %g\n", data->pdop);
- priv->hdop = data->hdop;
- data->set &= ~PDOP_SET;
-#endif
- }
- if (data->set & LATLON_SET) {
- priv->geo.lat = data->fix.latitude;
- priv->geo.lng = data->fix.longitude;
- dbg(lvl_debug,"lat=%f lng=%f\n", priv->geo.lat, priv->geo.lng);
- g_free(priv->nmea_data);
- priv->nmea_data=priv->nmea_data_buf;
- priv->nmea_data_buf=NULL;
- data->set &= ~LATLON_SET;
- }
- // If data->fix.speed is NAN, then the drawing gets jumpy.
- if (! isnan(data->fix.speed) && priv->fix_type > 0) {
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
- }
- dbg(lvl_info,"speed ok\n");
-}
-
-/**
- * Attempt to open the gps device.
- * Return FALSE if retry not required
- * Return TRUE to try again
- */
-static int
-vehicle_gpsd_try_open(struct vehicle_priv *priv)
-{
- char *source = g_strdup(priv->source);
- char *colon = index(source + 7, ':');
- char *port=NULL;
- if (colon) {
- *colon = '\0';
- port=colon+1;
- }
- dbg(lvl_debug,"Trying to connect to %s:%s\n",source+7,port?port:"default");
-
-#if GPSD_API_MAJOR_VERSION >= 5
- /* gps_open returns 0 on success */
- if (gps_open(source + 7, port, priv->gps)) {
-#else
- priv->gps = gps_open(source + 7, port);
- if(!priv->gps) {
-#endif
- dbg(lvl_error,"gps_open failed for '%s'. Retrying in %d seconds. Have you started gpsd?\n", priv->source, priv->retry_interval);
- g_free(source);
- return TRUE;
- }
- g_free(source);
-
-#ifdef HAVE_LIBGPS19
- if (strchr(priv->gpsd_query,'r'))
- gps_stream(priv->gps, WATCH_ENABLE|WATCH_NMEA|WATCH_JSON, NULL);
- else
- gps_stream(priv->gps, WATCH_ENABLE|WATCH_JSON, NULL);
-#else
- gps_query(priv->gps, priv->gpsd_query);
-#endif
-
-#if GPSD_API_MAJOR_VERSION < 5
- gps_set_raw_hook(priv->gps, vehicle_gpsd_callback);
-#endif
- priv->cb = callback_new_1(callback_cast(vehicle_gpsd_io), priv);
- priv->cbt = callback_new_1(callback_cast(vehicle_gpsd_try_open), priv);
- priv->evwatch = event_add_watch(priv->gps->gps_fd, event_watch_cond_read, priv->cb);
- if (!priv->gps->gps_fd) {
- dbg(lvl_error,"Warning: gps_fd is 0, most likely you have used a gps.h incompatible to libgps");
- }
- dbg(lvl_debug,"Connected to gpsd fd=%d evwatch=%p\n", priv->gps->gps_fd, priv->evwatch);
- event_remove_timeout(priv->retry_timer2);
- priv->retry_timer2=NULL;
- return FALSE;
-}
-
-/**
- * Open a connection to gpsd. Will re-try the connection if it fails
- */
-static void
-vehicle_gpsd_open(struct vehicle_priv *priv)
-{
-#ifdef HAVE_GPSBT
- char errstr[256] = "";
- /* We need to start gpsd (via gpsbt) first. */
- errno = 0;
- memset(&priv->context, 0, sizeof(gpsbt_t));
- if(gpsbt_start(NULL, 0, 0, 0, errstr, sizeof(errstr),
- 0, &priv->context) < 0) {
- dbg(lvl_error,"Error connecting to GPS with gpsbt: (%d) %s (%s)\n",
- errno, strerror(errno), errstr);
- }
- sleep(1); /* give gpsd time to start */
- dbg(lvl_debug,"gpsbt_start: completed\n");
-#endif
- priv->retry_timer2=NULL;
- if (vehicle_gpsd_try_open(priv))
- priv->retry_timer2=event_add_timeout(priv->retry_interval*1000, 1, priv->cbt);
-}
-
-static void
-vehicle_gpsd_close(struct vehicle_priv *priv)
-{
-#ifdef HAVE_GPSBT
- int err;
-#endif
-
- if (priv->retry_timer2) {
- event_remove_timeout(priv->retry_timer2);
- priv->retry_timer2=NULL;
- }
- if (priv->evwatch) {
- event_remove_watch(priv->evwatch);
- priv->evwatch = NULL;
- }
- if (priv->cb) {
- callback_destroy(priv->cb);
- priv->cb = NULL;
- }
- if (priv->cbt) {
- callback_destroy(priv->cbt);
- priv->cbt = NULL;
- }
- if (priv->gps) {
- gps_close(priv->gps);
-#if GPSD_API_MAJOR_VERSION >= 5
- g_free(priv->gps);
-#endif
- priv->gps = NULL;
- }
-#ifdef HAVE_GPSBT
- err = gpsbt_stop(&priv->context);
- if (err < 0) {
- dbg(lvl_error,"Error %d while gpsbt_stop", err);
- }
- dbg(lvl_debug,"gpsbt_stop: completed, (%d)",err);
-#endif
-}
-
-static void
-vehicle_gpsd_io(struct vehicle_priv *priv)
-{
- dbg(lvl_debug, "enter\n");
- if (priv->gps) {
- vehicle_last = priv;
-#if GPSD_API_MAJOR_VERSION >= 5
- int read_result;
- /* Read until EOF, in case we are lagging behind.
- * No point in processing old GPS reports. */
- while((read_result=gps_read(priv->gps))>0);
- if(read_result==-1) {
- dbg(lvl_error,"gps_poll failed\n");
- vehicle_gpsd_close(priv);
- vehicle_gpsd_open(priv);
- }
- else {
- const char *buf;
- buf = gps_data(priv->gps);
- vehicle_gpsd_callback(priv->gps,buf,strlen(buf));
- }
-#else
- if (gps_poll(priv->gps)) {
- dbg(lvl_error,"gps_poll failed\n");
- vehicle_gpsd_close(priv);
- vehicle_gpsd_open(priv);
- }
-#endif
- }
-}
-
-static void
-vehicle_gpsd_destroy(struct vehicle_priv *priv)
-{
- vehicle_gpsd_close(priv);
- if (priv->source)
- g_free(priv->source);
- if (priv->gpsd_query)
- g_free(priv->gpsd_query);
-#if GPSD_API_MAJOR_VERSION >= 5
- g_free(priv->gps);
-#endif
- g_free(priv);
-}
-
-static int
-vehicle_gpsd_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- struct attr * active=NULL;
- switch (type) {
- 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_hdop:
- attr->u.numd = &priv->hdop;
- break;
- case attr_position_qual:
- attr->u.num = priv->sats;
- break;
- case attr_position_sats_signal:
- attr->u.num = priv->sats_signal;
- break;
- case attr_position_sats_used:
- attr->u.num = priv->sats_used;
- break;
- case attr_position_coord_geo:
- attr->u.coord_geo = &priv->geo;
- break;
- case attr_position_nmea:
- attr->u.str=priv->nmea_data;
- if (! attr->u.str)
- return 0;
- break;
- case attr_position_time_iso8601:
- {
- struct tm tm;
- if (!priv->fix_time)
- return 0;
- if (gmtime_r(&priv->fix_time, &tm)) {
- strftime(priv->fixiso8601, sizeof(priv->fixiso8601),
- "%Y-%m-%dT%TZ", &tm);
- attr->u.str=priv->fixiso8601;
- } else
- 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;
- }
- attr->type = type;
- return 1;
-}
-
-static struct vehicle_methods vehicle_gpsd_methods = {
- vehicle_gpsd_destroy,
- vehicle_gpsd_position_attr_get,
-};
-
-static struct vehicle_priv *
-vehicle_gpsd_new_gpsd(struct vehicle_methods
- *meth, struct callback_list
- *cbl, struct attr **attrs)
-{
- struct vehicle_priv *ret;
- struct attr *source, *query, *retry_int;
-
- dbg(lvl_debug, "enter\n");
- source = attr_search(attrs, NULL, attr_source);
- ret = g_new0(struct vehicle_priv, 1);
-#if GPSD_API_MAJOR_VERSION >= 5
- ret->gps = g_new0(struct gps_data_t, 1);
-#endif
- ret->source = g_strdup(source->u.str);
- query = attr_search(attrs, NULL, attr_gpsd_query);
- if (query) {
- ret->gpsd_query = g_strconcat(query->u.str, "\n", NULL);
- } else {
- ret->gpsd_query = g_strdup("w+x\n");
- }
- dbg(lvl_debug,"Format string for gpsd_query: %s\n",ret->gpsd_query);
- retry_int = attr_search(attrs, NULL, attr_retry_interval);
- if (retry_int) {
- ret->retry_interval = retry_int->u.num;
- if (ret->retry_interval < MIN_RETRY_INTERVAL) {
- dbg(lvl_error, "Retry interval %d too small, setting to %d\n", ret->retry_interval, MIN_RETRY_INTERVAL);
- ret->retry_interval = MIN_RETRY_INTERVAL;
- }
- } else {
- dbg(lvl_debug, "Retry interval not defined, setting to %d\n", DEFAULT_RETRY_INTERVAL);
- ret->retry_interval = DEFAULT_RETRY_INTERVAL;
- }
- ret->cbl = cbl;
- *meth = vehicle_gpsd_methods;
- ret->attrs = attrs;
- vehicle_gpsd_open(ret);
- return ret;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug, "enter\n");
- plugin_register_category_vehicle("gpsd", vehicle_gpsd_new_gpsd);
-}
diff --git a/navit/vehicle/gpsd_dbus/CMakeLists.txt b/navit/vehicle/gpsd_dbus/CMakeLists.txt
deleted file mode 100644
index 435a987a0..000000000
--- a/navit/vehicle/gpsd_dbus/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-module_add_library(vehicle_gpsd_dbus vehicle_gpsd_dbus.c)
-
diff --git a/navit/vehicle/gpsd_dbus/vehicle_gpsd_dbus.c b/navit/vehicle/gpsd_dbus/vehicle_gpsd_dbus.c
deleted file mode 100644
index fa5eb8780..000000000
--- a/navit/vehicle/gpsd_dbus/vehicle_gpsd_dbus.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/**
- * 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 <config.h>
-#include <string.h>
-#include <glib.h>
-#include <math.h>
-#define DBUS_API_SUBJECT_TO_CHANGE
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
-#include <errno.h>
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-#include "coord.h"
-#include "item.h"
-#include "vehicle.h"
-#include "event.h"
-
-static char *vehicle_gpsd_dbus_prefix="gpsd_dbus:";
-
-struct vehicle_priv {
- char *source;
- char *address;
- int flags;
- struct callback_list *cbl;
- DBusConnection *connection;
- double time, track, speed, altitude;
- time_t fix_time;
- struct coord_geo geo;
- struct attr ** attrs;
- char fixiso8601[128];
-};
-
-static void
-vehicle_gpsd_dbus_close(struct vehicle_priv *priv)
-{
- if (priv->connection)
- dbus_connection_unref(priv->connection);
- priv->connection=NULL;
-}
-
-static DBusHandlerResult
-vehicle_gpsd_dbus_filter(DBusConnection *connection, DBusMessage *message, void *user_data)
-{
- struct vehicle_priv *priv=user_data;
- double time,ept,latitude,longitude,eph,altitude,epv,track,epd,speed,eps,climb,epc;
- int mode;
- char *devname;
-
- if (dbus_message_is_signal(message, "org.gpsd","fix")) {
- dbus_message_get_args (message, NULL,
- DBUS_TYPE_DOUBLE, &time,
- DBUS_TYPE_INT32, &mode,
- DBUS_TYPE_DOUBLE, &ept,
- DBUS_TYPE_DOUBLE, &latitude,
- DBUS_TYPE_DOUBLE, &longitude,
- DBUS_TYPE_DOUBLE, &eph,
- DBUS_TYPE_DOUBLE, &altitude,
- DBUS_TYPE_DOUBLE, &epv,
- DBUS_TYPE_DOUBLE, &track,
- DBUS_TYPE_DOUBLE, &epd,
- DBUS_TYPE_DOUBLE, &speed,
- DBUS_TYPE_DOUBLE, &eps,
- DBUS_TYPE_DOUBLE, &climb,
- DBUS_TYPE_DOUBLE, &epc,
- DBUS_TYPE_STRING, &devname,
- DBUS_TYPE_INVALID);
- if (!isnan(latitude) && !isnan(longitude)) {
- priv->geo.lat=latitude;
- priv->geo.lng=longitude;
- }
- if (!isnan(track))
- priv->track=track;
- if (!isnan(speed))
- priv->speed=speed;
- if (!isnan(altitude))
- priv->altitude=altitude;
- if (time != priv->time || (priv->flags & 1)) {
- priv->time=time;
- priv->fix_time=time;
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
- }
- }
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-static int
-vehicle_gpsd_dbus_open(struct vehicle_priv *priv)
-{
- DBusError error;
-
- dbus_error_init(&error);
- if (priv->address) {
- priv->connection = dbus_connection_open(priv->address, &error);
- } else {
- priv->connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
- }
- if (!priv->connection) {
- dbg(lvl_error,"Failed to open connection to %s message bus: %s\n", priv->address?priv->address:"session",error.message);
- dbus_error_free(&error);
- return 0;
- }
- dbus_connection_setup_with_g_main(priv->connection, NULL);
- dbus_bus_add_match(priv->connection,"type='signal',interface='org.gpsd'",&error);
- dbus_connection_flush(priv->connection);
- if (dbus_error_is_set(&error)) {
- dbg(lvl_error,"Failed to add match to connection: %s\n", error.message);
- vehicle_gpsd_dbus_close(priv);
- return 0;
- }
- if (!dbus_connection_add_filter(priv->connection, vehicle_gpsd_dbus_filter, priv, NULL)) {
- dbg(lvl_error,"Failed to add filter to connection\n");
- vehicle_gpsd_dbus_close(priv);
- return 0;
- }
- return 1;
-}
-
-
-static void
-vehicle_gpsd_dbus_destroy(struct vehicle_priv *priv)
-{
- vehicle_gpsd_dbus_close(priv);
- if (priv->source)
- g_free(priv->source);
- g_free(priv);
-}
-
-static int
-vehicle_gpsd_dbus_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- switch (type) {
- case attr_position_height:
- attr->u.numd = &priv->altitude;
- break;
- case attr_position_speed:
- attr->u.numd = &priv->speed;
- break;
- case attr_position_direction:
- attr->u.numd = &priv->track;
- break;
- case attr_position_coord_geo:
- attr->u.coord_geo = &priv->geo;
- break;
- case attr_position_time_iso8601:
- {
- struct tm tm;
- if (!priv->fix_time)
- return 0;
- if (gmtime_r(&priv->fix_time, &tm)) {
- strftime(priv->fixiso8601, sizeof(priv->fixiso8601),
- "%Y-%m-%dT%TZ", &tm);
- attr->u.str=priv->fixiso8601;
- } else
- return 0;
- }
- break;
- default:
- return 0;
- }
- attr->type = type;
- return 1;
-}
-
-static int
-vehicle_gpsd_dbus_set_attr_do(struct vehicle_priv *priv, struct attr *attr, int init)
-{
- switch (attr->type) {
- case attr_source:
- if (strncmp(vehicle_gpsd_dbus_prefix,attr->u.str,strlen(vehicle_gpsd_dbus_prefix))) {
- dbg(lvl_error,"source must start with '%s'\n", vehicle_gpsd_dbus_prefix);
- return 0;
- }
- g_free(priv->source);
- priv->source=g_strdup(attr->u.str);
- priv->address=priv->source+strlen(vehicle_gpsd_dbus_prefix);
- if (!priv->address[0])
- priv->address=NULL;
- if (!init) {
- vehicle_gpsd_dbus_close(priv);
- vehicle_gpsd_dbus_open(priv);
- }
- return 1;
- case attr_flags:
- priv->flags=attr->u.num;
- return 1;
- default:
- return 0;
- }
-}
-
-static int
-vehicle_gpsd_dbus_set_attr(struct vehicle_priv *priv, struct attr *attr)
-{
- return vehicle_gpsd_dbus_set_attr_do(priv, attr, 0);
-}
-
-static struct vehicle_methods vehicle_gpsd_methods = {
- vehicle_gpsd_dbus_destroy,
- vehicle_gpsd_dbus_position_attr_get,
- vehicle_gpsd_dbus_set_attr,
-};
-
-static struct vehicle_priv *
-vehicle_gpsd_dbus_new(struct vehicle_methods
- *meth, struct callback_list
- *cbl, struct attr **attrs)
-{
- struct vehicle_priv *ret;
-
-
- ret = g_new0(struct vehicle_priv, 1);
- ret->attrs = attrs;
- ret->cbl = cbl;
- *meth = vehicle_gpsd_methods;
- while (*attrs) {
- vehicle_gpsd_dbus_set_attr_do(ret, *attrs, 1);
- attrs++;
- }
- vehicle_gpsd_dbus_open(ret);
- return ret;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug, "enter\n");
- plugin_register_category_vehicle("gpsd_dbus", vehicle_gpsd_dbus_new);
-}
diff --git a/navit/vehicle/gypsy/CMakeLists.txt b/navit/vehicle/gypsy/CMakeLists.txt
deleted file mode 100644
index 78719e288..000000000
--- a/navit/vehicle/gypsy/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-module_add_library(vehicle_gypsy vehicle_gypsy.c)
-
diff --git a/navit/vehicle/gypsy/vehicle_gypsy.c b/navit/vehicle/gypsy/vehicle_gypsy.c
deleted file mode 100644
index 589e53a3f..000000000
--- a/navit/vehicle/gypsy/vehicle_gypsy.c
+++ /dev/null
@@ -1,497 +0,0 @@
-/** @file vehicle_gypsy.c
- * @brief gypsy 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 <config.h>
-#include <gypsy/gypsy-device.h>
-#include <gypsy/gypsy-control.h>
-#include <gypsy/gypsy-course.h>
-#include <gypsy/gypsy-position.h>
-#include <gypsy/gypsy-satellite.h>
-#ifdef USE_BINDING_DBUS
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <sys/types.h>
-#include <unistd.h>
-#endif
-#include <string.h>
-#include <glib.h>
-#include <math.h>
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-#include "coord.h"
-#include "item.h"
-#include "vehicle.h"
-
-static struct vehicle_priv {
- char *source;
- GypsyControl *control;
- GypsyPosition *position;
- GypsyDevice *device;
- GypsyCourse *course;
- GypsySatellite *satellite;
- char *path;
- struct callback_list *cbl;
- guint retry_interval;
- struct coord_geo geo;
- double speed;
- double direction;
- double height;
- int fix_type;
- time_t fix_time;
- char fixiso8601[128];
- int sats;
- int sats_used;
- guint retry_timer;
- struct attr ** attrs;
- int have_cords;
-} *vehicle_last;
-
-#define DEFAULT_RETRY_INTERVAL 10 // seconds
-#define MIN_RETRY_INTERVAL 1 // seconds
-
-/**
- * @brief When the fixstatus has changed, this function get called
- *
- * fixstatus can be one of this:
- * GYPSY_DEVICE_FIX_STATUS_INVALID = 0
- * GYPSY_DEVICE_FIX_STATUS_NONE = 1
- * GYPSY_DEVICE_FIX_STATUS_2D = 2
- * GYPSY_DEVICE_FIX_STATUS_3D = 3
- *
- * Anytime this functions get called, we have to call the global
- * callback.
- *
- * @param device The GypsyDevice
- * @param fixstatus The fisstatus 0, 1, 2 or 3
- * @param userdata
- * @returns nothing
- */
-static void
-vehicle_gypsy_fixstatus_changed(GypsyDevice *device,
- gint fixstatus,
- gpointer userdata)
-{
- struct vehicle_priv *priv = vehicle_last;
-
- if (fixstatus==GYPSY_DEVICE_FIX_STATUS_3D)
- priv->fix_type = 3;
- else if (fixstatus==GYPSY_DEVICE_FIX_STATUS_2D)
- priv->fix_type = 1;
- else
- priv->fix_type = 0;
-
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
-}
-
-/**
- * @brief When the position has changed, this function get called
- *
- * The fields_set can hold:
- * GYPSY_POSITION_FIELDS_NONE = 1 << 0,
- * GYPSY_POSITION_FIELDS_LATITUDE = 1 << 1,
- * GYPSY_POSITION_FIELDS_LONGITUDE = 1 << 2,
- * GYPSY_POSITION_FIELDS_ALTITUDE = 1 << 3
- *
- * If we get any new information, we have to call the global
- * callback.
- *
- * @param position The GypsyPosition
- * @param fields_set Bitmask indicating what field was set
- * @param timestamp the time since Unix Epoch
- * @param latitude
- * @param longitude
- * @param altitude
- * @param userdata
- * @returns nothing
- */
-static void
-vehicle_gypsy_position_changed(GypsyPosition *position,
- GypsyPositionFields fields_set, int timestamp,
- double latitude, double longitude, double altitude,
- gpointer userdata)
-{
- struct vehicle_priv *priv = vehicle_last;
- int cb = FALSE;
-
- if (timestamp > 0)
- priv->fix_time = timestamp;
-
- if (fields_set & GYPSY_POSITION_FIELDS_LATITUDE)
- {
- cb = TRUE;
- priv->geo.lat = latitude;
- }
- if (fields_set & GYPSY_POSITION_FIELDS_LONGITUDE)
- {
- cb = TRUE;
- priv->geo.lng = longitude;
- }
- if (fields_set & GYPSY_POSITION_FIELDS_ALTITUDE)
- {
- cb = TRUE;
- priv->height = altitude;
- }
-
- if (cb)
- {
- priv->have_cords = 1;
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
- }
-}
-
-/**
- * @brief Everytime any Sat-Details are changed, this function get called
- *
- * Going through all Sats, counting those wich are in use.
- *
- * Anytime this functions get called, we have to call the global
- * callback.
- *
- * @param satellite The GypsySatellite
- * @param satellites An GPtrArray wich hold information of all sats
- * @param userdata
- * @returns nothing
- */
-static void
-vehicle_gypsy_satellite_changed(GypsySatellite *satellite,
- GPtrArray *satellites,
- gpointer userdata)
-{
- struct vehicle_priv *priv = vehicle_last;
-
- int i, sats, used=0;
-
- sats = satellites->len;
- for (i = 0; i < sats; i++) {
- GypsySatelliteDetails *details = satellites->pdata[i];
- if (details->in_use)
- used++;
- }
-
- priv->sats_used = used;
- priv->sats = sats;
-
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
-}
-
-/**
- * @brief When the course or speed has changed, this function get called
- *
- * Only speed and direction are used!
- *
- * If we get any new information, we have to call the global
- * callback.
- *
- * @param course The GypsyCourse
- * @param fields Bitmask indicating what field was set
- * @param timestamp the time since Unix Epoch
- * @param speed
- * @param direction
- * @param climb
- * @param userdata
- * @returns nothing
- */
-static void
-vehicle_gypsy_course_changed (GypsyCourse *course,
- GypsyCourseFields fields,
- int timestamp,
- double speed,
- double direction,
- double climb,
- gpointer userdata)
-{
- struct vehicle_priv *priv = vehicle_last;
- int cb = FALSE;
-
- if (fields & GYPSY_COURSE_FIELDS_SPEED)
- {
- priv->speed = speed*3.6;
- cb = TRUE;
- }
- if (fields & GYPSY_COURSE_FIELDS_DIRECTION)
- {
- priv->direction = direction;
- cb = TRUE;
- }
-
- if (cb)
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
-}
-
-/**
- * @brief Attempt to open the gypsy device.
- *
- * Tells gypsy wich functions to call when anything occours.
- *
- * @param data
- * @returns TRUE to try again; FALSE if retry not required
- */
-static gboolean
-vehicle_gypsy_try_open(gpointer *data)
-{
- struct vehicle_priv *priv = (struct vehicle_priv *)data;
- char *source = g_strdup(priv->source);
-
- GError *error = NULL;
-
- g_type_init();
- priv->control = gypsy_control_get_default();
- priv->path = gypsy_control_create(priv->control, source+8, &error);
- if (priv->path == NULL) {
- g_warning ("Error creating gypsy conrtol path for %s: %s", source+8, error->message);
- return TRUE;
- }
-
- priv->position = gypsy_position_new(priv->path);
- g_signal_connect(priv->position, "position-changed", G_CALLBACK (vehicle_gypsy_position_changed), NULL);
-
- priv->satellite = gypsy_satellite_new(priv->path);
- g_signal_connect(priv->satellite, "satellites-changed", G_CALLBACK (vehicle_gypsy_satellite_changed), NULL);
-
- priv->course = gypsy_course_new(priv->path);
- g_signal_connect(priv->course, "course-changed", G_CALLBACK (vehicle_gypsy_course_changed), NULL);
-
- priv->device = gypsy_device_new(priv->path);
- g_signal_connect(priv->device, "fix-status-changed", G_CALLBACK (vehicle_gypsy_fixstatus_changed), NULL);
-
- gypsy_device_start(priv->device, &error);
- if (error != NULL) {
- g_warning ("Error starting gypsy for %s: %s", source+8, error->message);
- return TRUE;
- }
-
- vehicle_last = priv;
- dbg(lvl_debug,"gypsy connected to %d\n", source+8);
- g_free(source);
- return FALSE;
-}
-
-/**
- * @brief Open a connection to gypsy. Will re-try the connection if it fails
- *
- * @param priv
- * @returns nothing
- */
-static void
-vehicle_gypsy_open(struct vehicle_priv *priv)
-{
- priv->retry_timer=0;
- if (vehicle_gypsy_try_open((gpointer *)priv)) {
- priv->retry_timer = g_timeout_add(priv->retry_interval*1000, (GSourceFunc)vehicle_gypsy_try_open, (gpointer *)priv);
- }
-}
-
-/**
- * @brief Stop retry timer; Free alloced memory
- *
- * @param priv
- * @returns nothing
- */
-static void
-vehicle_gypsy_close(struct vehicle_priv *priv)
-{
- if (priv->retry_timer) {
- g_source_remove(priv->retry_timer);
- priv->retry_timer=0;
- }
- if (priv->path)
- g_free(priv->path);
-
- if (priv->position)
- g_free(priv->position);
-
- if (priv->satellite)
- g_free(priv->satellite);
-
- if (priv->course)
- g_free(priv->course);
-
- if (priv->device)
- g_free(priv->device);
-
- if (priv->control)
- g_object_unref(G_OBJECT (priv->control));
-}
-
-/**
- * @brief Free the gypsy_vehicle
- *
- * @param priv
- * @returns nothing
- */
-static void
-vehicle_gypsy_destroy(struct vehicle_priv *priv)
-{
- vehicle_gypsy_close(priv);
- if (priv->source)
- g_free(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_gypsy_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- struct attr * active=NULL;
- switch (type) {
- 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_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_cords)
- return 0;
- break;
- case attr_position_time_iso8601:
- {
- struct tm tm;
- if (!priv->fix_time)
- return 0;
- if (gmtime_r(&priv->fix_time, &tm)) {
- strftime(priv->fixiso8601, sizeof(priv->fixiso8601),
- "%Y-%m-%dT%TZ", &tm);
- attr->u.str=priv->fixiso8601;
- } else
- return 0;
- }
- case attr_active:
- active = attr_search(priv->attrs,NULL,attr_active);
- if(active != NULL && active->u.num == 1)
- return 1;
- else
- return 0;
- break;
-
- default:
- return 0;
- }
- attr->type = type;
- return 1;
-}
-
-struct vehicle_methods vehicle_gypsy_methods = {
- vehicle_gypsy_destroy,
- vehicle_gypsy_position_attr_get,
-};
-
-/**
- * @brief Create gypsy_vehicle
- *
- * @param meth
- * @param cbl
- * @param attrs
- * @returns vehicle_priv
- */
-static struct vehicle_priv *
-vehicle_gypsy_new_gypsy(struct vehicle_methods *meth,
- struct callback_list *cbl,
- struct attr **attrs)
-{
- struct vehicle_priv *ret;
- struct attr *source, *retry_int;
-
-#if defined(USE_BINDING_DBUS) && defined(HAVE_UNISTD_H)
- DBusConnection *conn;
- DBusMessage *message;
- dbus_uint32_t serial,pid=getpid();
- struct attr *destination,*path,*interface,*method;
-
- destination=attr_search(attrs, NULL, attr_dbus_destination);
- path=attr_search(attrs, NULL, attr_dbus_path);
- interface=attr_search(attrs, NULL, attr_dbus_interface);
- method=attr_search(attrs, NULL, attr_dbus_method);
- if (destination && path && interface && method) {
- conn=dbus_bus_get(DBUS_BUS_SESSION, NULL);
- if (conn) {
- message=dbus_message_new_method_call(destination->u.str,path->u.str,interface->u.str,method->u.str);
- dbus_message_append_args(message, DBUS_TYPE_INT32, &pid, DBUS_TYPE_INVALID);
- dbus_connection_send(conn, message, &serial);
- dbus_message_unref(message);
- dbus_connection_unref(conn);
- } else {
- dbg(lvl_error,"failed to connect to session bus\n");
- }
- }
-#endif
- dbg(lvl_debug, "enter\n");
- source = attr_search(attrs, NULL, attr_source);
- ret = g_new0(struct vehicle_priv, 1);
- ret->have_cords = 0;
- ret->source = g_strdup(source->u.str);
- ret->attrs = attrs;
- retry_int = attr_search(attrs, NULL, attr_retry_interval);
- if (retry_int) {
- ret->retry_interval = retry_int->u.num;
- if (ret->retry_interval < MIN_RETRY_INTERVAL) {
- dbg(lvl_error, "Retry interval %d too small, setting to %d\n", ret->retry_interval, MIN_RETRY_INTERVAL);
- ret->retry_interval = MIN_RETRY_INTERVAL;
- }
- } else {
- dbg(lvl_error, "Retry interval not defined, setting to %d\n", DEFAULT_RETRY_INTERVAL);
- ret->retry_interval = DEFAULT_RETRY_INTERVAL;
- }
- ret->cbl = cbl;
- *meth = vehicle_gypsy_methods;
- vehicle_gypsy_open(ret);
- return ret;
-}
-
-/**
- * @brief register vehicle_gypsy
- *
- * @returns nothing
- */
-void
-plugin_init(void)
-{
- dbg(lvl_debug, "enter\n");
- plugin_register_category_vehicle("gypsy", vehicle_gypsy_new_gypsy);
-}
diff --git a/navit/vehicle/iphone/CMakeLists.txt b/navit/vehicle/iphone/CMakeLists.txt
deleted file mode 100644
index b84abb228..000000000
--- a/navit/vehicle/iphone/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-set(vehicle_iphone_LIBS "-framework CoreLocation")
-module_add_library(vehicle_iphone vehicle_iphone.c corelocation.m)
diff --git a/navit/vehicle/iphone/corelocation.h b/navit/vehicle/iphone/corelocation.h
deleted file mode 100644
index 8a3ee8c51..000000000
--- a/navit/vehicle/iphone/corelocation.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * 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.
- */
-#ifndef VEHICLE_IPHONE_CORELOCATION_H
-#define VEHICLE_IPHONE_CORELOCATION_H
-
-typedef void(*FT_LOCATION_CB)(void *, double , double , double , double, char *, double);
-void corelocation_update(double lat,
- double lng,
- double dir,
- double spd,
- char * time,
- double radius);
-void corelocation_init(void * pv_arg, FT_LOCATION_CB pf_cb);
-void corelocation_exit(void);
-
-#ifdef VEHICLE_IPHONE_OBJC
-#import <CoreLocation/CoreLocation.h>
-
-
-@interface corelocation : NSObject <CLLocationManagerDelegate> {
- CLLocationManager *locationManager;
- NSDateFormatter *dateFormatter;
- NSDate* eventDate;
-@public
- FT_LOCATION_CB pf_cb;
- void * pv_arg;
-}
-
-@property (nonatomic, retain) CLLocationManager *locationManager;
-@property (nonatomic, retain) NSDateFormatter *dateFormatter;
-@property (nonatomic, retain) NSDate* eventDate;
-@property (nonatomic) int first;
-@property (nonatomic) void * pv_arg;
-@property (nonatomic) FT_LOCATION_CB pf_cb;
-
-- (void)locationManager:(CLLocationManager *)manager
- didUpdateToLocation:(CLLocation *)newLocation
- fromLocation:(CLLocation *)oldLocation;
-
-- (void)locationManager:(CLLocationManager *)manager
- didFailWithError:(NSError *)error;
-
-@end
-
-#endif
-#endif
diff --git a/navit/vehicle/iphone/corelocation.m b/navit/vehicle/iphone/corelocation.m
deleted file mode 100644
index 5b13c283f..000000000
--- a/navit/vehicle/iphone/corelocation.m
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * 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.
- */
-
-#define VEHICLE_IPHONE_OBJC
-#import "corelocation.h"
-
-#import <Foundation/Foundation.h>
-#import <UIKit/UIKit.h>
-
-/* global location structure */
-corelocation *locationcontroller = NULL;
-
-/** C update procedure */
-void corelocation_update(double lat, double lng, double dir, double spd, char * str_time, double radius) {
- FT_LOCATION_CB pf_cb = locationcontroller->pf_cb;
- void * pv_arg = locationcontroller->pv_arg;
- if(pf_cb) pf_cb(pv_arg, lat, lng, dir, spd, str_time, radius);
-}
-
-/** C init procedure */
-void corelocation_init(void * pv_arg, FT_LOCATION_CB pf_cb) {
- locationcontroller = [[corelocation alloc] init];
-
- /** Save callbacks */
- locationcontroller->pv_arg = pv_arg;
- locationcontroller->pf_cb = pf_cb;
-
- /** Start location process */
- [locationcontroller.locationManager startUpdatingLocation];
-}
-
-/** C exit procedure */
-void corelocation_exit(void) {
- [locationcontroller dealloc];
-}
-
-/** Core location implementation */
-@implementation corelocation
-
-@synthesize locationManager;
-@synthesize dateFormatter;
-@synthesize eventDate;
-@synthesize pv_arg;
-@synthesize pf_cb;
-
-/** Init corelocation */
-- (id) init {
- self = [super init];
- if (self != nil) {
- self.locationManager = [[[CLLocationManager alloc] init] autorelease];
- self.locationManager.distanceFilter = kCLDistanceFilterNone;
- self.locationManager.delegate = self; // send loc updates to myself
- self.pf_cb = NULL;
- self.pv_arg = NULL;
- self.eventDate = [NSDate date];
- self.dateFormatter = [[NSDateFormatter alloc] init];
- [self.dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
- }
- return self;
-}
-
-/** New Data EVENT */
-- (void)locationManager:(CLLocationManager *)manager
-didUpdateToLocation:(CLLocation *)newLocation
-fromLocation:(CLLocation *)oldLocation
-{
- NSLog(@"New Location: %@", [newLocation description]);
- NSString *newDateString = [self.dateFormatter stringFromDate:newLocation.timestamp];
- const char* cString = [newDateString cStringUsingEncoding:NSASCIIStringEncoding];
-
- if(self.pf_cb) {
- self.pf_cb(
- self.pv_arg,
- (double)newLocation.coordinate.latitude,
- (double) newLocation.coordinate.longitude,
- (double) newLocation.course,
- (double) newLocation.speed,
- cString,
- (double) newLocation.horizontalAccuracy
- );
- }
-}
-
-/** Error EVENT */
-- (void)locationManager:(CLLocationManager *)manager
-didFailWithError:(NSError *)error
-{
- NSLog(@"Error: %@", [error description]);
-}
-
-/** Destructor */
-- (void)dealloc {
- [self.locationManager release];
- [super dealloc];
-}
-
-@end
-
diff --git a/navit/vehicle/iphone/vehicle_iphone.c b/navit/vehicle/iphone/vehicle_iphone.c
deleted file mode 100644
index 94fec114a..000000000
--- a/navit/vehicle/iphone/vehicle_iphone.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * 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 <string.h>
-#include "config.h"
-#include "debug.h"
-#include "coord.h"
-#include "item.h"
-#include "navit.h"
-#include "map.h"
-#include "route.h"
-#include "callback.h"
-#include "transform.h"
-#include "plugin.h"
-#include "vehicle.h"
-#include "event.h"
-#include "corelocation.h"
-
-struct vehicle_priv {
- int interval;
- int position_set;
- struct callback_list *cbl;
- struct navit *navit;
- struct coord_geo geo;
- struct coord last;
- double config_speed;
- double speed;
- double direction;
- double radius;
- struct callback *timer_callback;
- struct event_timeout *timer;
- char str_time[200];
-};
-
-static void
-vehicle_iphone_destroy(struct vehicle_priv *priv)
-{
- corelocation_exit();
- g_free(priv);
-}
-
-static int
-vehicle_iphone_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- switch (type) {
- case attr_position_speed:
- attr->u.numd = &priv->speed;
- break;
- case attr_position_direction:
- attr->u.numd = &priv->direction;
- break;
- case attr_position_coord_geo:
- attr->u.coord_geo = &priv->geo;
- break;
- case attr_position_time_iso8601:
- attr->u.str = priv->str_time;
- break;
- case attr_position_radius:
- attr->u.numd = &priv->radius;
- break;
- case attr_position_nmea:
- return 0;
- default:
- return 0;
- }
- attr->type = type;
- return 1;
-}
-
-static int
-vehicle_iphone_set_attr(struct vehicle_priv *priv, struct attr *attr)
-{
- if (attr->type == attr_navit) {
- priv->navit = attr->u.navit;
- return 1;
- }
- return 0;
-}
-
-struct vehicle_methods vehicle_iphone_methods = {
- vehicle_iphone_destroy,
- vehicle_iphone_position_attr_get,
- vehicle_iphone_set_attr,
-};
-
-void
-vehicle_iphone_update(void *arg,
- double lat,
- double lng,
- double dir,
- double spd,
- char * str_time,
- double radius
- )
-{
- struct vehicle_priv * priv = arg;
- priv->geo.lat = lat;
- priv->geo.lng = lng;
- if(dir > 0) priv->direction = dir;
- if(spd > 0) priv->speed = spd*3.6;
- strcpy(priv->str_time, str_time);
- priv->radius = radius;
-
- dbg(lvl_debug,"position_get lat:%f lng:%f (spd:%f dir:%f time:%s)\n", priv->geo.lat, priv->geo.lng, priv->speed, priv->direction, priv->str_time);
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
-}
-
-
-
-static struct vehicle_priv *
-vehicle_iphone_new(struct vehicle_methods
- *meth, struct callback_list
- *cbl, struct attr **attrs)
-{
- struct vehicle_priv *ret;
- struct attr *interval,*speed,*position_coord_geo;
-
- dbg(lvl_debug, "enter\n");
- ret = g_new0(struct vehicle_priv, 1);
- ret->cbl = cbl;
- ret->interval=1000;
- ret->config_speed=40;
- if ((speed=attr_search(attrs, NULL, attr_speed))) {
- ret->config_speed=speed->u.num;
- }
- if ((interval=attr_search(attrs, NULL, attr_interval)))
- ret->interval=interval->u.num;
- if ((position_coord_geo=attr_search(attrs, NULL, attr_position_coord_geo))) {
- ret->geo=*(position_coord_geo->u.coord_geo);
- ret->position_set=1;
- dbg(lvl_debug,"position_set %f %f\n", ret->geo.lat, ret->geo.lng);
- }
- *meth = vehicle_iphone_methods;
- ret->str_time[0] = '\0';
-
- /** Initialize corelocation */
- corelocation_init(ret, vehicle_iphone_update);
-
- return ret;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug, "enter\n");
- plugin_register_category_vehicle("iphone", vehicle_iphone_new);
-}
diff --git a/navit/vehicle/maemo/CMakeLists.txt b/navit/vehicle/maemo/CMakeLists.txt
deleted file mode 100644
index 2e74763dd..000000000
--- a/navit/vehicle/maemo/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-module_add_library(vehicle_maemo vehicle_maemo.c)
-
diff --git a/navit/vehicle/maemo/vehicle_maemo.c b/navit/vehicle/maemo/vehicle_maemo.c
deleted file mode 100644
index d686a6a03..000000000
--- a/navit/vehicle/maemo/vehicle_maemo.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/**
- * 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.
- */
-
-
-/*
- Plugin for new Maemo's liblocation API.
-
- <vehicle source="maemo://any" retry_interval="1"/>
- source cound be on of "any","cwp","acwp","gnss","agnss"
- retry_interval could be one of "1","2","5","10","20","30","60","120" measured in seconds
-*/
-
-#include <config.h>
-#include <string.h>
-#include <glib.h>
-#include <math.h>
-#include <location/location-gps-device.h>
-#include <location/location-gpsd-control.h>
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-#include "coord.h"
-#include "item.h"
-#include "vehicle.h"
-#include "event.h"
-
-static struct vehicle_priv {
- LocationGPSDControl *control;
- LocationGPSDevice *device;
- char *source;
- guint retry_interval;
- struct callback_list *cbl;
- struct attr ** attrs;
- int sats; // satellites_in_view
- int sats_used; //satellites_in_user
- int fix_type; //mode
- struct coord_geo geo; //lattigute&longittude
- double speed; //speed:)
- double direction; //track
- double height; //altitude
- double hdop; //eph
- time_t fix_time; //time
- char fixiso8601[128];
-};
-
-
-static void vehicle_maemo_callback(LocationGPSDevice *device, gpointer user_data) {
- struct vehicle_priv *priv=(struct vehicle_priv*)user_data;
-
- priv->sats=device->satellites_in_view;
- priv->sats_used=device->satellites_in_use;
- callback_list_call_attr_0(priv->cbl, attr_position_sats);
-
- dbg(lvl_debug,"Got update with %u/%u satellites\n",priv->sats_used,priv->sats);
-
- if (device->fix) {
- switch(device->fix->mode) {
- case LOCATION_GPS_DEVICE_MODE_NOT_SEEN:
- case LOCATION_GPS_DEVICE_MODE_NO_FIX:
- priv->fix_type=0;
- break;
- case LOCATION_GPS_DEVICE_MODE_2D:
- case LOCATION_GPS_DEVICE_MODE_3D:
- priv->fix_type=1;
- break;
- }
-
- if (device->fix->fields & LOCATION_GPS_DEVICE_LATLONG_SET) {
- priv->geo.lat=device->fix->latitude;
- priv->geo.lng=device->fix->longitude;
- priv->hdop=device->fix->eph/100;
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
- dbg(lvl_debug,"Position: %f %f with error %f meters\n",priv->geo.lat,priv->geo.lng,priv->hdop);
- }
-
- if (device->fix->fields & LOCATION_GPS_DEVICE_SPEED_SET) {
- priv->speed=device->fix->speed;
- callback_list_call_attr_0(priv->cbl, attr_position_speed);
- dbg(lvl_debug,"Speed: %f\n ",priv->speed);
- }
-
- if (device->fix->fields & LOCATION_GPS_DEVICE_TRACK_SET) {
- priv->direction=device->fix->track;
- dbg(lvl_debug,"Direction: %f\n",priv->direction);
- }
-
- if (device->fix->fields & LOCATION_GPS_DEVICE_TIME_SET) {
- priv->fix_time=device->fix->time;
- dbg(lvl_debug,"Time: %f\n",priv->fix_time);
- }
-
- if (device->fix->fields & LOCATION_GPS_DEVICE_ALTITUDE_SET) {
- priv->height=device->fix->altitude;
- dbg(lvl_debug,"Elevation: %f\n",priv->height);
- }
-
- }
-
- return;
-}
-
-static void vehicle_maemo_error(LocationGPSDControl *control, LocationGPSDControlError error, gpointer user_data)
-{
- switch (error) {
- case LOCATION_ERROR_USER_REJECTED_DIALOG:
- dbg(lvl_error,"User didn't enable requested methods\n");
- break;
- case LOCATION_ERROR_USER_REJECTED_SETTINGS:
- dbg(lvl_error,"User changed settings, which disabled location\n");
- break;
- case LOCATION_ERROR_BT_GPS_NOT_AVAILABLE:
- dbg(lvl_error,"Problems with BT GPS\n");
- break;
- case LOCATION_ERROR_METHOD_NOT_ALLOWED_IN_OFFLINE_MODE:
- dbg(lvl_error,"Requested method is not allowed in offline mode\n");
- break;
- case LOCATION_ERROR_SYSTEM:
- dbg(lvl_error,"System error\n");
- break;
- }
-}
-
-/**
- * Instantiate liblocation objects
- */
-static void
-vehicle_maemo_open(struct vehicle_priv *priv)
-{
-
- priv->control = location_gpsd_control_get_default();
- priv->device = g_object_new(LOCATION_TYPE_GPS_DEVICE, NULL);
-
- if (!strcasecmp(priv->source+8,"cwp")) {
- g_object_set(G_OBJECT(priv->control), "preferred-method", LOCATION_METHOD_CWP, NULL);
- dbg(lvl_debug,"Method set: CWP\n");
- } else if (!strcasecmp(priv->source+8,"acwp")) {
- g_object_set(G_OBJECT(priv->control), "preferred-method", LOCATION_METHOD_ACWP, NULL);
- dbg(lvl_debug,"Method set: ACWP\n");
- } else if (!strcasecmp(priv->source+8,"gnss")) {
- g_object_set(G_OBJECT(priv->control), "preferred-method", LOCATION_METHOD_GNSS, NULL);
- dbg(lvl_debug,"Method set: GNSS\n");
- } else if (!strcasecmp(priv->source+8,"agnss")) {
- g_object_set(G_OBJECT(priv->control), "preferred-method", LOCATION_METHOD_AGNSS, NULL);
- dbg(lvl_debug,"Method set: AGNSS\n");
- } else {
- g_object_set(G_OBJECT(priv->control), "preferred-method", LOCATION_METHOD_USER_SELECTED, NULL);
- dbg(lvl_debug,"Method set: ANY\n");
- }
-
- switch (priv->retry_interval) {
- case 2:
- g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_2S, NULL);
- dbg(lvl_debug,"Interval set: 2s\n");
- break;
- case 5:
- g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_5S, NULL);
- dbg(lvl_debug,"Interval set: 5s\n");
- break;
- case 10:
- g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_10S, NULL);
- dbg(lvl_debug,"Interval set: 10s\n");
- break;
- case 20:
- g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_20S, NULL);
- dbg(lvl_debug,"Interval set: 20s\n");
- break;
- case 30:
- g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_30S, NULL);
- dbg(lvl_debug,"Interval set: 30s\n");
- break;
- case 60:
- g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_60S, NULL);
- dbg(lvl_debug,"Interval set: 60s\n");
- break;
- case 120:
- g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_120S, NULL);
- dbg(lvl_debug,"Interval set: 120s\n");
- break;
- case 1:
- default:
- g_object_set(G_OBJECT(priv->control), "preferred-interval", LOCATION_INTERVAL_1S, NULL);
- dbg(lvl_debug,"Interval set: 1s\n");
- break;
- }
-
- g_signal_connect(priv->device, "changed", G_CALLBACK(vehicle_maemo_callback), priv);
- g_signal_connect(priv->control, "error-verbose", G_CALLBACK(vehicle_maemo_error), priv);
-
- location_gpsd_control_start(priv->control);
-
- return;
-}
-
-static void
-vehicle_maemo_destroy(struct vehicle_priv *priv)
-{
- location_gpsd_control_stop(priv->control);
-
- g_object_unref(priv->device);
- g_object_unref(priv->control);
-
- return;
-}
-
-static int
-vehicle_maemo_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- struct attr * active=NULL;
- switch (type) {
- case attr_position_fix_type:
- dbg(lvl_debug,"Attr requested: position_fix_type\n");
- attr->u.num = priv->fix_type;
- break;
- case attr_position_height:
- dbg(lvl_debug,"Attr requested: position_height\n");
- attr->u.numd = &priv->height;
- break;
- case attr_position_speed:
- dbg(lvl_debug,"Attr requested: position_speed\n");
- attr->u.numd = &priv->speed;
- break;
- case attr_position_direction:
- dbg(lvl_debug,"Attr requested: position_direction\n");
- attr->u.numd = &priv->direction;
- break;
- case attr_position_hdop:
- dbg(lvl_debug,"Attr requested: position_hdop\n");
- attr->u.numd = &priv->hdop;
- break;
- case attr_position_sats:
- dbg(lvl_debug,"Attr requested: position_sats\n");
- attr->u.num = priv->sats;
- break;
- case attr_position_sats_used:
- dbg(lvl_debug,"Attr requested: position_sats_used\n");
- attr->u.num = priv->sats_used;
- break;
- case attr_position_coord_geo:
- dbg(lvl_debug,"Attr requested: position_coord_geo\n");
- attr->u.coord_geo = &priv->geo;
- break;
- case attr_position_time_iso8601:
- {
- struct tm tm;
- dbg(lvl_debug,"Attr requested: position_time_iso8601\n");
- if (!priv->fix_time)
- return 0;
- if (gmtime_r(&priv->fix_time, &tm)) {
- strftime(priv->fixiso8601, sizeof(priv->fixiso8601),
- "%Y-%m-%dT%TZ", &tm);
- attr->u.str=priv->fixiso8601;
- } else
- return 0;
- }
- break;
- case attr_active:
- dbg(lvl_debug,"Attr requested: position_active\n");
- 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;
- }
- attr->type = type;
- return 1;
-}
-
-struct vehicle_methods vehicle_maemo_methods = {
- vehicle_maemo_destroy,
- vehicle_maemo_position_attr_get,
-};
-
-static struct vehicle_priv *
-vehicle_maemo_new_maemo(struct vehicle_methods
- *meth, struct callback_list
- *cbl, struct attr **attrs)
-{
- struct vehicle_priv *ret;
- struct attr *source, *retry_int;
-
- dbg(lvl_debug, "enter\n");
- source = attr_search(attrs, NULL, attr_source);
- ret = g_new0(struct vehicle_priv, 1);
- ret->source = g_strdup(source->u.str);
- retry_int = attr_search(attrs, NULL, attr_retry_interval);
- if (retry_int) {
- ret->retry_interval = retry_int->u.num;
- if (ret->retry_interval !=1 && ret->retry_interval !=2 && ret->retry_interval !=5 && ret->retry_interval !=10 && ret->retry_interval !=20 && ret->retry_interval !=30 && ret->retry_interval !=60 && ret->retry_interval !=120 ) {
- dbg(lvl_error, "Retry interval %d invalid, setting to 1\n", ret->retry_interval,1);
- ret->retry_interval = 1;
- }
- } else {
- ret->retry_interval = 1;
- }
- dbg(lvl_debug,"source: %s, interval: %u\n",ret->source,ret->retry_interval);
- ret->cbl = cbl;
- *meth = vehicle_maemo_methods;
- ret->attrs = attrs;
- vehicle_maemo_open(ret);
- return ret;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug, "enter\n");
- plugin_register_category_vehicle("maemo", vehicle_maemo_new_maemo);
-}
diff --git a/navit/vehicle/null/CMakeLists.txt b/navit/vehicle/null/CMakeLists.txt
deleted file mode 100644
index 7b515acaa..000000000
--- a/navit/vehicle/null/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(vehicle_null vehicle_null.c)
diff --git a/navit/vehicle/null/vehicle_null.c b/navit/vehicle/null/vehicle_null.c
deleted file mode 100644
index 643945c71..000000000
--- a/navit/vehicle/null/vehicle_null.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/** @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 <config.h>
-#include <string.h>
-#include <glib.h>
-#include <math.h>
-#include <time.h>
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-#include "coord.h"
-#include "item.h"
-#include "vehicle.h"
-
-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;
-};
-
-/**
- * @brief Free the null_vehicle
- *
- * @param priv
- * @returns nothing
- */
-static void
-vehicle_null_destroy(struct vehicle_priv *priv)
-{
- dbg(lvl_debug,"enter\n");
- 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_null_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- dbg(lvl_debug,"enter %s\n",attr_to_name(type));
- switch (type) {
-#if 0
- case attr_position_fix_type:
- attr->u.num = priv->fix_type;
- break;
-#endif
- 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;
-
-#if 0
- case attr_position_qual:
- attr->u.num = priv->sats;
- break;
- case attr_position_sats_used:
- attr->u.num = priv->sats_used;
- break;
-#endif
- case attr_position_coord_geo:
- attr->u.coord_geo = &priv->geo;
- if (!priv->have_coords)
- return 0;
- break;
- case attr_position_time_iso8601:
- attr->u.str=priv->fixiso8601;
- break;
- default:
- return 0;
- }
- dbg(lvl_debug,"ok\n");
- attr->type = type;
- return 1;
-}
-
-static int
-vehicle_null_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_null_destroy,
- vehicle_null_position_attr_get,
- vehicle_null_set_attr,
-};
-
-/**
- * @brief Create null_vehicle
- *
- * @param meth
- * @param cbl
- * @param attrs
- * @returns vehicle_priv
- */
-static struct vehicle_priv *
-vehicle_null_new_null(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;
- 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("null", vehicle_null_new_null);
-}
diff --git a/navit/vehicle/qt5/CMakeLists.txt b/navit/vehicle/qt5/CMakeLists.txt
deleted file mode 100644
index 411d9d6ee..000000000
--- a/navit/vehicle/qt5/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-# 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
deleted file mode 100644
index 2a2b6f5cf..000000000
--- a/navit/vehicle/qt5/vehicle_qt5.cpp
+++ /dev/null
@@ -1,296 +0,0 @@
-/** @file vehicle_null.c
- * @brief null uses dbus signals
- *
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2017 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
- */
-// style with: clang-format -style=WebKit -i *
-
-extern "C" {
-#include "config.h"
-#include "item.h" /* needs to be first as attr.h depends on it */
-
-#include "attr.h"
-#include "coord.h"
-#include "debug.h"
-#include "plugin.h"
-#include "vehicle.h"
-}
-#include <glib.h>
-#include <math.h>
-#include <string.h>
-#include <time.h>
-
-#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
deleted file mode 100644
index 5e3729795..000000000
--- a/navit/vehicle/qt5/vehicle_qt5.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/** @file vehicle_null.c
- * @brief null uses dbus signals
- *
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2017 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
- */
-// style with: clang-format -style=WebKit -i *
-
-#ifndef __vehicle_qt5_h
-#define __vehicle_qt5_h
-
-#include <QGeoPositionInfoSource>
-#include <QGeoSatelliteInfoSource>
-#include <QObject>
-#include <QStringList>
-extern "C" {
-#include "item.h" /* needs to be on to as attr.h depends on it */
-
-#include "attr.h"
-#include "callback.h"
-#include "coord.h"
-}
-
-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
diff --git a/navit/vehicle/webos/CMakeLists.txt b/navit/vehicle/webos/CMakeLists.txt
deleted file mode 100644
index 9cbdbcec0..000000000
--- a/navit/vehicle/webos/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(vehicle_webos vehicle_webos.c)
diff --git a/navit/vehicle/webos/bluetooth.c b/navit/vehicle/webos/bluetooth.c
deleted file mode 100644
index 343d2ec5c..000000000
--- a/navit/vehicle/webos/bluetooth.c
+++ /dev/null
@@ -1,690 +0,0 @@
-/* vim: sw=3 ts=3
- * */
-
-#include <config.h>
-#include <string.h>
-#include <glib.h>
-#include <math.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <PDL.h>
-#include <SDL.h>
-#include "debug.h"
-#include "callback.h"
-#include "event.h"
-#include "cJSON.h"
-#include "vehicle_webos.h"
-#include "bluetooth.h"
-
-static int buffer_size = 128;
-static void vehicle_webos_spp_init_read(struct vehicle_priv *priv, unsigned int length);
-
-/********************************************************************/
-
-static void
-mlPDL_ServiceCall_callback(struct callback_list *cbl, char *service, char *parameters/*, struct callback *fail_cb*/)
-{
- PDL_Err err;
- dbg(lvl_debug,"PDL_ServiceCall(%s) parameters(%s)\n",service,parameters);
- err = PDL_ServiceCall(service, parameters);
- if (err != PDL_NOERROR) {
- dbg(lvl_error,"PDL_ServiceCall to (%s) with (%s) failed with (%d): (%s)\n", service, parameters, err, PDL_GetError());
- }
-
- callback_list_destroy(cbl);
- g_free(service);
- g_free(parameters);
-}
-
-static void
-mlPDL_ServiceCall(const char *service, const char *parameters/*, struct callback *fail_cb = NULL*/)
-{
- struct callback *cb = NULL;
- struct callback_list *cbl = NULL;
-
- char *service2 = g_strdup(service);
- char *parameters2 = g_strdup(parameters);
-
- cbl = callback_list_new();
- cb = callback_new_3(callback_cast(mlPDL_ServiceCall_callback),cbl,service2,parameters2);
-
- callback_list_add(cbl, cb);
-
-dbg(lvl_debug,"event_call_callback(%p)\n",cbl);
- event_call_callback(cbl);
-}
-
-/********************************************************************/
-
-static void
-mlPDL_ServiceCallWithCallback_callback(struct callback_list *cbl,
- char *service,
- char *parameters,
- PDL_ServiceCallbackFunc callback,
- void *user,
- PDL_bool removeAfterResponse)
-{
- PDL_Err err;
- dbg(lvl_debug,"PDL_ServiceCallWithCallback(%s) parameters(%s)\n",service,parameters);
- err = PDL_ServiceCallWithCallback(service, parameters, callback, user, removeAfterResponse);
- if (err != PDL_NOERROR) {
- dbg(lvl_error,"PDL_ServiceCallWithCallback to (%s) with (%s) failed with (%d): (%s)\n", service, parameters, err, PDL_GetError());
- }
-
- callback_list_destroy(cbl);
- g_free(service);
- g_free(parameters);
-}
-
-static void
-mlPDL_ServiceCallWithCallback(const char *service,
- const char *parameters,
- PDL_ServiceCallbackFunc callback,
- void *user,
- PDL_bool removeAfterResponse)
-{
- struct callback *cb = NULL;
- struct callback_list *cbl = NULL;
-
- char *service2 = g_strdup(service);
- char *parameters2 = g_strdup(parameters);
-
- cbl = callback_list_new();
- cb = callback_new_args(callback_cast(mlPDL_ServiceCallWithCallback_callback),6,cbl,service2,parameters2,callback,user,removeAfterResponse);
-
- callback_list_add(cbl, cb);
-
- dbg(lvl_debug,"event_call_callback(%p)\n",cbl);
- event_call_callback(cbl);
-}
-
-/********************************************************************/
-
-static void
-vehicle_webos_init_pdl_locationtracking_callback(struct vehicle_priv *priv, struct callback_list *cbl, int param)
-{
- PDL_Err err;
-
- priv->gps_type = param ? GPS_TYPE_INT: GPS_TYPE_NONE;
-
- dbg(lvl_debug,"Calling PDL_EnableLocationTracking(%i)\n",param);
- err = PDL_EnableLocationTracking(param);
-
- if (err != PDL_NOERROR) {
- dbg(lvl_error,"PDL_EnableLocationTracking failed with (%d): (%s)\n", err, PDL_GetError());
-// vehicle_webos_close(priv);
-// return 0;
- }
-
- callback_list_destroy(cbl);
-}
-
-static void
-vehicle_webos_init_pdl_locationtracking(struct vehicle_priv *priv, int param)
-{
- struct callback *cb = NULL;
- struct callback_list *cbl = NULL;
-
- cbl = callback_list_new();
- cb = callback_new_3(callback_cast(vehicle_webos_init_pdl_locationtracking_callback),priv,cbl,param);
-
- callback_list_add(cbl, cb);
-
- event_call_callback(cbl);
-}
-
-/********************************************************************/
-
-static int
-vehicle_webos_parse_nmea(struct vehicle_priv *priv, char *buffer)
-{
- char *nmea_data_buf, *p, *item[32];
- double lat, lng;
- int i, bcsum;
- int len = strlen(buffer);
- unsigned char csum = 0;
- int valid=0;
- int ret = 0;
-
- dbg(lvl_info, "enter: buffer='%s'\n", buffer);
- for (;;) {
- if (len < 4) {
- dbg(lvl_error, "'%s' too short\n", buffer);
- return ret;
- }
- if (buffer[len - 1] == '\r' || buffer[len - 1] == '\n') {
- buffer[--len] = '\0';
- if (buffer[len - 1] == '\r')
- buffer[--len] = '\0';
- } else
- break;
- }
- if (buffer[0] != '$') {
- dbg(lvl_error, "no leading $ in '%s'\n", buffer);
- return ret;
- }
- if (buffer[len - 3] != '*') {
- dbg(lvl_error, "no *XX in '%s'\n", buffer);
- return ret;
- }
- for (i = 1; i < len - 3; i++) {
- csum ^= (unsigned char) (buffer[i]);
- }
- if (!sscanf(buffer + len - 2, "%x", &bcsum) /*&& priv->checksum_ignore != 2*/) {
- dbg(lvl_error, "no checksum in '%s'\n", buffer);
- return ret;
- }
- if (bcsum != csum /*&& priv->checksum_ignore == 0*/) {
- dbg(lvl_error, "wrong checksum in '%s was %x should be %x'\n", buffer,bcsum,csum);
- return ret;
- }
-
- if (!priv->nmea_data_buf || strlen(priv->nmea_data_buf) < 65536) {
- nmea_data_buf=g_strconcat(priv->nmea_data_buf ? priv->nmea_data_buf : "", buffer, "\n", NULL);
- g_free(priv->nmea_data_buf);
- priv->nmea_data_buf=nmea_data_buf;
- } else {
- dbg(lvl_error, "nmea buffer overflow, discarding '%s'\n", buffer);
- }
- i = 0;
- p = buffer;
- while (i < 31) {
- item[i++] = p;
- while (*p && *p != ',')
- p++;
- if (!*p)
- break;
- *p++ = '\0';
- }
-
-// if (buffer[0] == '$') {
-// struct timeval tv;
-// gettimeofday(&tv,NULL);
-
- priv->delta = 0; // (unsigned int)difftime(tv.tv_sec, priv->fix_time);
-// priv->fix_time = tv.tv_sec;
-// dbg(lvl_info,"delta(%i)\n",priv->delta);
-// }
-
- if (!strncmp(&buffer[3], "GGA", 3)) {
- /* 1 1111
- 0 1 2 3 4 5 6 7 8 9 0 1234
- $GPGGA,184424.505,4924.2811,N,01107.8846,E,1,05,2.5,408.6,M,,,,0000*0C
- UTC of Fix[1],Latitude[2],N/S[3],Longitude[4],E/W[5],Quality(0=inv,1=gps,2=dgps)[6],Satelites used[7],
- HDOP[8],Altitude[9],"M"[10],height of geoid[11], "M"[12], time since dgps update[13], dgps ref station [14]
- */
- if (*item[2] && *item[3] && *item[4] && *item[5]) {
- lat = g_ascii_strtod(item[2], NULL);
- priv->geo.lat = floor(lat / 100);
- lat -= priv->geo.lat * 100;
- priv->geo.lat += lat / 60;
-
- if (!g_strcasecmp(item[3],"S"))
- priv->geo.lat=-priv->geo.lat;
-
- lng = g_ascii_strtod(item[4], NULL);
- priv->geo.lng = floor(lng / 100);
- lng -= priv->geo.lng * 100;
- priv->geo.lng += lng / 60;
-
- if (!g_strcasecmp(item[5],"W"))
- priv->geo.lng=-priv->geo.lng;
- priv->valid=attr_position_valid_valid;
- dbg(lvl_info, "latitude '%2.4f' longitude %2.4f\n", priv->geo.lat, priv->geo.lng);
-
- } else
- priv->valid=attr_position_valid_invalid;
- if (*item[6])
- sscanf(item[6], "%d", &priv->status);
- if (*item[7])
- sscanf(item[7], "%d", &priv->sats_used);
- if (*item[8])
- sscanf(item[8], "%lf", &priv->hdop);
- if (*item[1]) {
- struct tm tm;
- strptime(item[1],"%H%M%S",&tm);
- priv->fix_time = mktime(&tm);
- }
-
- if (*item[9])
- sscanf(item[9], "%lf", &priv->altitude);
-
- g_free(priv->nmea_data);
- priv->nmea_data=priv->nmea_data_buf;
- priv->nmea_data_buf=NULL;
-#if 0
- if (priv->file_type == file_type_file) {
- if (priv->watch) {
- vehicle_file_disable_watch(priv);
- event_add_timeout(priv->time, 0, priv->cbt);
- }
- }
-#endif
- ret = 1;
- }
- if (!strncmp(&buffer[3], "VTG", 3)) {
- /* 0 1 2 34 5 6 7 8
- $GPVTG,143.58,T,,M,0.26,N,0.5,K*6A
- Course Over Ground Degrees True[1],"T"[2],Course Over Ground Degrees Magnetic[3],"M"[4],
- Speed in Knots[5],"N"[6],"Speed in KM/H"[7],"K"[8]
- */
- if (item[1] && item[7])
- valid = 1;
- if (i >= 10 && (*item[9] == 'A' || *item[9] == 'D'))
- valid = 1;
- if (valid) {
- priv->track = g_ascii_strtod( item[1], NULL );
- priv->speed = g_ascii_strtod( item[7], NULL );
- dbg(lvl_info,"direction %lf, speed %2.1lf\n", priv->track, priv->speed);
- }
- }
- if (!strncmp(&buffer[3], "RMC", 3)) {
- /* 1 1
- 0 1 2 3 4 5 6 7 8 9 0 1
- $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
- Time[1],Active/Void[2],lat[3],N/S[4],long[5],W/E[6],speed in knots[7],track angle[8],date[9],
- magnetic variation[10],magnetic variation direction[11]
- */
- if (*item[2] == 'A')
- valid = 1;
- if (i >= 13 && (*item[12] == 'A' || *item[12] == 'D'))
- valid = 1;
- if (valid) {
- priv->track = g_ascii_strtod( item[8], NULL );
- priv->speed = g_ascii_strtod( item[7], NULL );
- priv->speed *= 1.852;
-
- struct tm tm;
- char time[13];
-
- sprintf(time,"%s%s",item[1],item[9]);
-
- strptime(time,"%H%M%S%d%m%y",&tm);
-
- priv->fix_time = mktime(&tm);
-#if 0
- sscanf(item[9], "%02d%02d%02d",
- &priv->fixday,
- &priv->fixmonth,
- &priv->fixyear);
- priv->fixyear += 2000;
-#endif
- }
- ret = 1;
- }
- if (!strncmp(buffer, "$GPGSV", 6) && i >= 4) {
- /*
- 0 GSV Satellites in view
- 1 2 Number of sentences for full data
- 2 1 sentence 1 of 2
- 3 08 Number of satellites in view
-
- 4 01 Satellite PRN number
- 5 40 Elevation, degrees
- 6 083 Azimuth, degrees
- 7 46 SNR - higher is better
- for up to 4 satellites per sentence
- *75 the checksum data, always begins with *
- */
- if (item[3]) {
- sscanf(item[3], "%d", &priv->sats_visible);
- }
-#if 0
- j=4;
- while (j+4 <= i && priv->current_count < 24) {
- struct gps_sat *sat=&priv->next[priv->next_count++];
- sat->prn=atoi(item[j]);
- sat->elevation=atoi(item[j+1]);
- sat->azimuth=atoi(item[j+2]);
- sat->snr=atoi(item[j+3]);
- j+=4;
- }
- if (!strcmp(item[1], item[2])) {
- priv->sats_signal=0;
- for (i = 0 ; i < priv->next_count ; i++) {
- priv->current[i]=priv->next[i];
- if (priv->current[i].snr)
- priv->sats_signal++;
- }
- priv->current_count=priv->next_count;
- priv->next_count=0;
- }
-#endif
- }
-#if 0
- if (!strncmp(&buffer[3], "ZDA", 3)) {
- /*
- 0 1 2 3 4 5 6
- $GPZDA,hhmmss.ss,dd,mm,yyyy,xx,yy*CC
- hhmmss HrMinSec(UTC)
- dd,mm,yyy Day,Month,Year
- xx local zone hours -13..13
- yy local zone minutes 0..59
- */
- if (item[1] && item[2] && item[3] && item[4]) {
- strncpy(priv->fixtime, item[1], strlen(priv->fixtime));
- priv->fixday = atoi(item[2]);
- priv->fixmonth = atoi(item[3]);
- priv->fixyear = atoi(item[4]);
- }
- }
-#endif
- if (!strncmp(buffer, "$IISMD", 6)) {
- /*
- 0 1 2 3 4
- $IISMD,dir,press,height,temp*CC"
- dir Direction (0-359)
- press Pressure (hpa, i.e. 1032)
- height Barometric height above ground (meter)
- temp Temperature (Degree Celsius)
- */
- if (item[1]) {
- priv->magnetic_direction = g_ascii_strtod( item[1], NULL );
- dbg(lvl_debug,"magnetic %d\n", priv->magnetic_direction);
- }
- }
- return ret;
-}
-
-static void
-vehicle_webos_spp_handle_read(PDL_ServiceParameters *params, void *user)
-{
- struct vehicle_priv *priv = user;
- int size, rc = 0;
- char *str, *tok;
-
- //PDL_Err err;
- size = PDL_GetParamInt(params, "dataLength");
- if (size > buffer_size) {
- dbg(lvl_error, "read returned too much data\n");
- return;
- }
-
- char buffer[buffer_size];
-
- PDL_GetParamString(params,"data",buffer,buffer_size);
- dbg(lvl_debug,"data(%s) dataLength(%i)\n",buffer,size);
-
- memmove(priv->buffer + priv->buffer_pos, buffer, size);
-
-
-
- priv->buffer_pos += size;
- priv->buffer[priv->buffer_pos] = '\0';
- dbg(lvl_debug, "size=%d pos=%d buffer='%s'\n", size,
- priv->buffer_pos, priv->buffer);
- str = priv->buffer;
- while ((tok = strchr(str, '\n'))) {
- *tok++ = '\0';
- dbg(lvl_debug, "line='%s'\n", str);
- rc += vehicle_webos_parse_nmea(priv, str);
- str = tok;
-// if (priv->file_type == file_type_file && rc)
-// break;
- }
-
- if (str != priv->buffer) {
- size = priv->buffer + priv->buffer_pos - str;
- memmove(priv->buffer, str, size + 1);
- priv->buffer_pos = size;
- dbg(lvl_debug,"now pos=%d buffer='%s'\n",
- priv->buffer_pos, priv->buffer);
- } else if (priv->buffer_pos == buffer_size - 1) {
- dbg(lvl_error,"Overflow. Most likely wrong baud rate or no nmea protocol\n");
- priv->buffer_pos = 0;
- }
- if (rc) {
- SDL_Event event;
- SDL_UserEvent userevent;
-
- userevent.type = SDL_USEREVENT;
- userevent.code = PDL_GPS_UPDATE;
- userevent.data1 = NULL;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent(&event);
- }
-
- vehicle_webos_spp_init_read(priv, buffer_size - priv->buffer_pos - 1);
-}
-
-static void
-vehicle_webos_spp_init_read(struct vehicle_priv *priv, unsigned int length)
-{
- //PDL_Err err;
- char parameters[128];
-
- snprintf(parameters, sizeof(parameters), "{\"instanceId\":%i, \"dataLength\":%i}", priv->spp_instance_id, length);
- mlPDL_ServiceCallWithCallback("palm://com.palm.service.bluetooth.spp/read",
- parameters,
- (PDL_ServiceCallbackFunc)vehicle_webos_spp_handle_read,
- priv,
- PDL_FALSE
- );
-#if 0
- if (err != PDL_NOERROR) {
- dbg(lvl_error,"PDL_ServiceCall failed with (%d): (%s)\n", err, PDL_GetError());
- vehicle_webos_close(priv);
- return;
- }
-#endif
-}
-
-static void
-vehicle_webos_spp_handle_open(PDL_ServiceParameters *params, void *user)
-{
- struct vehicle_priv *priv = (struct vehicle_priv *)user;
-
- if (!priv->buffer)
- priv->buffer = g_malloc(buffer_size);
-
- dbg(lvl_debug,"instanceId(%i)\n",priv->spp_instance_id);
-
- priv->gps_type = GPS_TYPE_BT;
-
- vehicle_webos_spp_init_read(priv, buffer_size-1);
-}
-
-static void
-vehicle_webos_spp_notify(PDL_ServiceParameters *params, void *user)
-{
- struct vehicle_priv *priv = user;
-
- char notification[128];
- char parameters[128];
-
- const char *params_json = PDL_GetParamJson(params);
- dbg(lvl_info,"params_json(%s)\n", params_json);
-
- if (PDL_ParamExists(params, "errorText")) {
- PDL_GetParamString(params, "errorText", notification, sizeof(notification));
- dbg(lvl_error,"errorText(%s)\n",notification);
- return;
- }
-
- PDL_GetParamString(params, "notification", notification, sizeof(notification));
- notification[sizeof(notification)-1] = '\0';
-
- dbg(lvl_warning,"notification(%s) %i\n",notification,PDL_ParamExists(params, "notification"));
-
- if(strcmp(notification,"notifnservicenames") == 0) {
- int instance_id = PDL_GetParamInt(params, "instanceId");
-
- dbg(lvl_debug,"instanceId(%i)\n", instance_id);
-
- cJSON *root = cJSON_Parse(params_json);
- if (!root) {
- dbg(lvl_error,"parsing json failed\n");
- return;
- }
-
- cJSON *services = cJSON_GetObjectItem(root, "services");
-
- char *service_name = cJSON_GetArrayItem(services, 0)->valuestring;
-
- snprintf(parameters, sizeof(parameters), "{\"instanceId\":%i, \"servicename\":\"%s\"}",instance_id, service_name);
- mlPDL_ServiceCall("palm://com.palm.bluetooth/spp/selectservice", parameters);
-
- cJSON_Delete(root);
- }
- else if(strcmp(notification,"notifnconnected") == 0) {
- if (PDL_GetParamInt(params,"error") == 0) {
- vehicle_webos_init_pdl_locationtracking(priv, 0);
-
- int instance_id = PDL_GetParamInt(params, "instanceId");
- priv->spp_instance_id = instance_id;
- snprintf(parameters, sizeof(parameters), "{\"instanceId\":%i}", instance_id);
- mlPDL_ServiceCallWithCallback("palm://com.palm.service.bluetooth.spp/open",
- parameters,
- (PDL_ServiceCallbackFunc)vehicle_webos_spp_handle_open,
- priv,
- PDL_TRUE);
- }
- else {
- dbg(lvl_error,"notifnconnected error(%i)\n",PDL_GetParamInt(params,"error"));
- }
- }
- else if(strcmp(notification,"notifndisconnected") == 0) {
- priv->gps_type = GPS_TYPE_NONE;
- snprintf(parameters, sizeof(parameters), "{\"instanceId\":%i}",priv->spp_instance_id);
- mlPDL_ServiceCall("palm://com.palm.service.bluetooth.spp/close", parameters);
- priv->spp_instance_id = 0;
- vehicle_webos_init_pdl_locationtracking(priv, 1);
- }
-
-
-}
-
-static void
-vehicle_webos_init_bt_gps(struct vehicle_priv *priv, char *addr)
-{
- char parameters[128];
-
- dbg(lvl_debug,"subscribeNotifications\n");
- mlPDL_ServiceCallWithCallback("palm://com.palm.bluetooth/spp/subscribenotifications",
- "{\"subscribe\":true}",
- (PDL_ServiceCallbackFunc)vehicle_webos_spp_notify,
- priv,
- PDL_FALSE);
-#if 0
- if (err != PDL_NOERROR) {
- dbg(lvl_error,"PDL_ServiceCallWithCallback failed with (%d): (%s)\n", err, PDL_GetError());
- vehicle_webos_close(priv);
- return;
- }
-#endif
-
- snprintf(parameters, sizeof(parameters), "{\"address\":\"%s\"}", addr);
- mlPDL_ServiceCall("palm://com.palm.bluetooth/spp/connect", parameters);
-#if 0
- if (err != PDL_NOERROR) {
- dbg(lvl_error,"PDL_ServiceCall failed with (%d): (%s)\n", err, PDL_GetError());
- vehicle_webos_close(priv);
- return;
- }
-#endif
-
- priv->spp_address = addr;
-}
-
-static void
-vehicle_webos_bt_gap_callback(PDL_ServiceParameters *params, void *param)
-{
- const char *params_json;
- struct vehicle_priv *priv = (struct vehicle_priv *)param;
- char *device_addr = NULL;
- cJSON *root;
-
- dbg(lvl_debug,"enter\n");
-
- PDL_Err err;
- err = PDL_GetParamInt(params, "errorCode");
- if (err != PDL_NOERROR) {
- dbg(lvl_error,"BT GAP Callback errorCode %d\n", err);
- return /*PDL_EOTHER*/;
- }
-
- params_json = PDL_GetParamJson(params);
- dbg(lvl_info,"params_json(%s)\n",params_json);
-
- root = cJSON_Parse(params_json);
- if (!root) {
- dbg(lvl_error,"parsing json failed\n");
- return;
- }
-
- cJSON *trusted_devices = cJSON_GetObjectItem(root, "trusteddevices");
-
- unsigned int i,c = cJSON_GetArraySize(trusted_devices);
- dbg(lvl_debug, "trusted_devices(%i)\n",c);
- for(i=0; i < c && !device_addr; i++) {
- cJSON *device = cJSON_GetArrayItem(trusted_devices,i);
- char *name = cJSON_GetObjectItem(device, "name")->valuestring;
- char *address = cJSON_GetObjectItem(device, "address")->valuestring;
- char *status = cJSON_GetObjectItem(device, "status")->valuestring;
-
- dbg(lvl_debug,"i(%i) name(%s) address(%s) status(%s)\n",i,name,address,status);
-
- if (/*strncmp(status, "connected",9) == 0 && */strstr(name, "GPS") != NULL) {
- dbg(lvl_debug,"choose name(%s) address(%s)\n",name,address);
- device_addr = g_strdup(address);
- break;
- }
- }
-
- cJSON_Delete(root);
-
- if (device_addr) {
- vehicle_webos_init_bt_gps(priv, device_addr);
- }
-
- g_free(device_addr);
-}
-
-int
-vehicle_webos_bt_open(struct vehicle_priv *priv)
-{
- // Try to connect to BT GPS, or use PDL method
-
- dbg(lvl_debug,"enter\n");
-
- PDL_Err err;
- err = PDL_ServiceCallWithCallback("palm://com.palm.bluetooth/gap/gettrusteddevices",
- "{}",
- (PDL_ServiceCallbackFunc)vehicle_webos_bt_gap_callback,
- priv,
- PDL_TRUE);
- if (err != PDL_NOERROR) {
- dbg(lvl_error,"PDL_ServiceCallWithCallback failed with (%d): (%s)\n", err, PDL_GetError());
- vehicle_webos_close(priv);
- return 0;
- }
- return 1;
-}
-
-void
-vehicle_webos_bt_close(struct vehicle_priv *priv)
-{
- dbg(lvl_debug,"XXX\n");
- char parameters[128];
- if (priv->spp_instance_id) {
- snprintf(parameters, sizeof(parameters), "{\"instanceId\":%i}", priv->spp_instance_id);
- PDL_ServiceCall("palm://com.palm.service.bluetooth.spp/close", parameters);
- }
- if (priv->spp_address) {
- snprintf(parameters, sizeof(parameters), "{\"address\":\"%s\"}", priv->spp_address);
- PDL_ServiceCall("palm://com.palm.bluetooth.spp/disconnect", parameters);
- g_free(priv->spp_address);
- priv->spp_address = NULL;
- }
- //g_free(priv->buffer);
- //priv->buffer = NULL;
- // g_free(priv->nmea_data);
- // priv->nmea_data = NULL;
- // g_free(priv->nmea_data_buf);
- // priv->nmea_data_buf = NULL;
-}
-
diff --git a/navit/vehicle/webos/bluetooth.h b/navit/vehicle/webos/bluetooth.h
deleted file mode 100644
index 74fffcf5b..000000000
--- a/navit/vehicle/webos/bluetooth.h
+++ /dev/null
@@ -1,6 +0,0 @@
-
-#include "cJSON.h"
-
-int vehicle_webos_bt_open(struct vehicle_priv *priv);
-void vehicle_webos_bt_close(struct vehicle_priv *priv);
-
diff --git a/navit/vehicle/webos/cJSON.c b/navit/vehicle/webos/cJSON.c
deleted file mode 100644
index 19d3151e2..000000000
--- a/navit/vehicle/webos/cJSON.c
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- Copyright (c) 2009 Dave Gamble
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-*/
-
-/* cJSON */
-/* JSON parser in C. */
-
-#include <string.h>
-#include <stdio.h>
-#include <math.h>
-#include <stdlib.h>
-#include <float.h>
-#include <limits.h>
-#include <ctype.h>
-#include "cJSON.h"
-
-static const char *ep;
-
-const char *cJSON_GetErrorPtr() {return ep;}
-
-static int cJSON_strcasecmp(const char *s1,const char *s2)
-{
- if (!s1) return (s1==s2)?0:1;if (!s2) return 1;
- for(; tolower(*s1) == tolower(*s2); ++s1, ++s2) if(*s1 == 0) return 0;
- return tolower(*(const unsigned char *)s1) - tolower(*(const unsigned char *)s2);
-}
-
-static void *(*cJSON_malloc)(size_t sz) = malloc;
-static void (*cJSON_free)(void *ptr) = free;
-
-static char* cJSON_strdup(const char* str)
-{
- size_t len;
- char* copy;
-
- len = strlen(str) + 1;
- if (!(copy = (char*)cJSON_malloc(len))) return 0;
- memcpy(copy,str,len);
- return copy;
-}
-
-void cJSON_InitHooks(cJSON_Hooks* hooks)
-{
- if (!hooks) { /* Reset hooks */
- cJSON_malloc = malloc;
- cJSON_free = free;
- return;
- }
-
- cJSON_malloc = (hooks->malloc_fn)?hooks->malloc_fn:malloc;
- cJSON_free = (hooks->free_fn)?hooks->free_fn:free;
-}
-
-/* Internal constructor. */
-static cJSON *cJSON_New_Item(void)
-{
- cJSON* node = (cJSON*)cJSON_malloc(sizeof(cJSON));
- if (node) memset(node,0,sizeof(cJSON));
- return node;
-}
-
-/* Delete a cJSON structure. */
-void cJSON_Delete(cJSON *c)
-{
- cJSON *next;
- while (c)
- {
- next=c->next;
- if (!(c->type&cJSON_IsReference) && c->child) cJSON_Delete(c->child);
- if (!(c->type&cJSON_IsReference) && c->valuestring) cJSON_free(c->valuestring);
- if (c->string) cJSON_free(c->string);
- cJSON_free(c);
- c=next;
- }
-}
-
-/* Parse the input text to generate a number, and populate the result into item. */
-static const char *parse_number(cJSON *item,const char *num)
-{
- double n=0,sign=1,scale=0;int subscale=0,signsubscale=1;
-
- /* Could use sscanf for this? */
- if (*num=='-') sign=-1,num++; /* Has sign? */
- if (*num=='0') num++; /* is zero */
- if (*num>='1' && *num<='9') do n=(n*10.0)+(*num++ -'0'); while (*num>='0' && *num<='9'); /* Number? */
- if (*num=='.' && num[1]>='0' && num[1]<='9') {num++; do n=(n*10.0)+(*num++ -'0'),scale--; while (*num>='0' && *num<='9');} /* Fractional part? */
- if (*num=='e' || *num=='E') /* Exponent? */
- { num++;if (*num=='+') num++; else if (*num=='-') signsubscale=-1,num++; /* With sign? */
- while (*num>='0' && *num<='9') subscale=(subscale*10)+(*num++ - '0'); /* Number? */
- }
-
- n=sign*n*pow(10.0,(scale+subscale*signsubscale)); /* number = +/- number.fraction * 10^+/- exponent */
-
- item->valuedouble=n;
- item->valueint=(int)n;
- item->type=cJSON_Number;
- return num;
-}
-
-/* Render the number nicely from the given item into a string. */
-static char *print_number(cJSON *item)
-{
- char *str;
- double d=item->valuedouble;
- if (fabs(((double)item->valueint)-d)<=DBL_EPSILON && d<=INT_MAX && d>=INT_MIN)
- {
- str=(char*)cJSON_malloc(21); /* 2^64+1 can be represented in 21 chars. */
- if (str) sprintf(str,"%d",item->valueint);
- }
- else
- {
- str=(char*)cJSON_malloc(64); /* This is a nice tradeoff. */
- if (str)
- {
- if (fabs(floor(d)-d)<=DBL_EPSILON) sprintf(str,"%.0f",d);
- else if (fabs(d)<1.0e-6 || fabs(d)>1.0e9) sprintf(str,"%e",d);
- else sprintf(str,"%f",d);
- }
- }
- return str;
-}
-
-/* Parse the input text into an unescaped cstring, and populate item. */
-static const unsigned char firstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };
-static const char *parse_string(cJSON *item,const char *str)
-{
- const char *ptr=str+1;char *ptr2;char *out;int len=0;unsigned uc,uc2;
- if (*str!='\"') {ep=str;return 0;} /* not a string! */
-
- while (*ptr!='\"' && *ptr && ++len) if (*ptr++ == '\\') ptr++; /* Skip escaped quotes. */
-
- out=(char*)cJSON_malloc(len+1); /* This is how long we need for the string, roughly. */
- if (!out) return 0;
-
- ptr=str+1;ptr2=out;
- while (*ptr!='\"' && *ptr)
- {
- if (*ptr!='\\') *ptr2++=*ptr++;
- else
- {
- ptr++;
- switch (*ptr)
- {
- case 'b': *ptr2++='\b'; break;
- case 'f': *ptr2++='\f'; break;
- case 'n': *ptr2++='\n'; break;
- case 'r': *ptr2++='\r'; break;
- case 't': *ptr2++='\t'; break;
- case 'u': /* transcode utf16 to utf8. */
- sscanf(ptr+1,"%4x",&uc);ptr+=4; /* get the unicode char. */
-
- if ((uc>=0xDC00 && uc<=0xDFFF) || uc==0) break; // check for invalid.
-
- if (uc>=0xD800 && uc<=0xDBFF) // UTF16 surrogate pairs.
- {
- if (ptr[1]!='\\' || ptr[2]!='u') break; // missing second-half of surrogate.
- sscanf(ptr+3,"%4x",&uc2);ptr+=6;
- if (uc2<0xDC00 || uc2>0xDFFF) break; // invalid second-half of surrogate.
- uc=0x10000 | ((uc&0x3FF)<<10) | (uc2&0x3FF);
- }
-
- len=4;if (uc<0x80) len=1;else if (uc<0x800) len=2;else if (uc<0x10000) len=3; ptr2+=len;
-
- switch (len) {
- case 4: *--ptr2 =((uc | 0x80) & 0xBF); uc >>= 6;
- case 3: *--ptr2 =((uc | 0x80) & 0xBF); uc >>= 6;
- case 2: *--ptr2 =((uc | 0x80) & 0xBF); uc >>= 6;
- case 1: *--ptr2 =(uc | firstByteMark[len]);
- }
- ptr2+=len;
- break;
- default: *ptr2++=*ptr; break;
- }
- ptr++;
- }
- }
- *ptr2=0;
- if (*ptr=='\"') ptr++;
- item->valuestring=out;
- item->type=cJSON_String;
- return ptr;
-}
-
-/* Render the cstring provided to an escaped version that can be printed. */
-static char *print_string_ptr(const char *str)
-{
- const char *ptr;char *ptr2,*out;int len=0;unsigned char token;
-
- if (!str) return cJSON_strdup("");
- ptr=str;while ((token=*ptr) && ++len) {if (strchr("\"\\\b\f\n\r\t",token)) len++; else if (token<32) len+=5;ptr++;}
-
- out=(char*)cJSON_malloc(len+3);
- if (!out) return 0;
-
- ptr2=out;ptr=str;
- *ptr2++='\"';
- while (*ptr)
- {
- if ((unsigned char)*ptr>31 && *ptr!='\"' && *ptr!='\\') *ptr2++=*ptr++;
- else
- {
- *ptr2++='\\';
- switch (token=*ptr++)
- {
- case '\\': *ptr2++='\\'; break;
- case '\"': *ptr2++='\"'; break;
- case '\b': *ptr2++='b'; break;
- case '\f': *ptr2++='f'; break;
- case '\n': *ptr2++='n'; break;
- case '\r': *ptr2++='r'; break;
- case '\t': *ptr2++='t'; break;
- default: sprintf(ptr2,"u%04x",token);ptr2+=5; break; /* escape and print */
- }
- }
- }
- *ptr2++='\"';*ptr2++=0;
- return out;
-}
-/* Invote print_string_ptr (which is useful) on an item. */
-static char *print_string(cJSON *item) {return print_string_ptr(item->valuestring);}
-
-/* Predeclare these prototypes. */
-static const char *parse_value(cJSON *item,const char *value);
-static char *print_value(cJSON *item,int depth,int fmt);
-static const char *parse_array(cJSON *item,const char *value);
-static char *print_array(cJSON *item,int depth,int fmt);
-static const char *parse_object(cJSON *item,const char *value);
-static char *print_object(cJSON *item,int depth,int fmt);
-
-/* Utility to jump whitespace and cr/lf */
-static const char *skip(const char *in) {while (in && *in && (unsigned char)*in<=32) in++; return in;}
-
-/* Parse an object - create a new root, and populate. */
-cJSON *cJSON_Parse(const char *value)
-{
- cJSON *c=cJSON_New_Item();
- ep=0;
- if (!c) return 0; /* memory fail */
-
- if (!parse_value(c,skip(value))) {cJSON_Delete(c);return 0;}
- return c;
-}
-
-/* Render a cJSON item/entity/structure to text. */
-char *cJSON_Print(cJSON *item) {return print_value(item,0,1);}
-char *cJSON_PrintUnformatted(cJSON *item) {return print_value(item,0,0);}
-
-/* Parser core - when encountering text, process appropriately. */
-static const char *parse_value(cJSON *item,const char *value)
-{
- if (!value) return 0; /* Fail on null. */
- if (!strncmp(value,"null",4)) { item->type=cJSON_NULL; return value+4; }
- if (!strncmp(value,"false",5)) { item->type=cJSON_False; return value+5; }
- if (!strncmp(value,"true",4)) { item->type=cJSON_True; item->valueint=1; return value+4; }
- if (*value=='\"') { return parse_string(item,value); }
- if (*value=='-' || (*value>='0' && *value<='9')) { return parse_number(item,value); }
- if (*value=='[') { return parse_array(item,value); }
- if (*value=='{') { return parse_object(item,value); }
-
- ep=value;return 0; /* failure. */
-}
-
-/* Render a value to text. */
-static char *print_value(cJSON *item,int depth,int fmt)
-{
- char *out=0;
- if (!item) return 0;
- switch ((item->type)&255)
- {
- case cJSON_NULL: out=cJSON_strdup("null"); break;
- case cJSON_False: out=cJSON_strdup("false");break;
- case cJSON_True: out=cJSON_strdup("true"); break;
- case cJSON_Number: out=print_number(item);break;
- case cJSON_String: out=print_string(item);break;
- case cJSON_Array: out=print_array(item,depth,fmt);break;
- case cJSON_Object: out=print_object(item,depth,fmt);break;
- }
- return out;
-}
-
-/* Build an array from input text. */
-static const char *parse_array(cJSON *item,const char *value)
-{
- cJSON *child;
- if (*value!='[') {ep=value;return 0;} /* not an array! */
-
- item->type=cJSON_Array;
- value=skip(value+1);
- if (*value==']') return value+1; /* empty array. */
-
- item->child=child=cJSON_New_Item();
- if (!item->child) return 0; /* memory fail */
- value=skip(parse_value(child,skip(value))); /* skip any spacing, get the value. */
- if (!value) return 0;
-
- while (*value==',')
- {
- cJSON *new_item;
- if (!(new_item=cJSON_New_Item())) return 0; /* memory fail */
- child->next=new_item;new_item->prev=child;child=new_item;
- value=skip(parse_value(child,skip(value+1)));
- if (!value) return 0; /* memory fail */
- }
-
- if (*value==']') return value+1; /* end of array */
- ep=value;return 0; /* malformed. */
-}
-
-/* Render an array to text */
-static char *print_array(cJSON *item,int depth,int fmt)
-{
- char **entries;
- char *out=0,*ptr,*ret;int len=5;
- cJSON *child=item->child;
- int numentries=0,i=0,fail=0;
-
- /* How many entries in the array? */
- while (child) numentries++,child=child->next;
- /* Allocate an array to hold the values for each */
- entries=(char**)cJSON_malloc(numentries*sizeof(char*));
- if (!entries) return 0;
- memset(entries,0,numentries*sizeof(char*));
- /* Retrieve all the results: */
- child=item->child;
- while (child && !fail)
- {
- ret=print_value(child,depth+1,fmt);
- entries[i++]=ret;
- if (ret) len+=strlen(ret)+2+(fmt?1:0); else fail=1;
- child=child->next;
- }
-
- /* If we didn't fail, try to malloc the output string */
- if (!fail) out=(char*)cJSON_malloc(len);
- /* If that fails, we fail. */
- if (!out) fail=1;
-
- /* Handle failure. */
- if (fail)
- {
- for (i=0;i<numentries;i++) if (entries[i]) cJSON_free(entries[i]);
- cJSON_free(entries);
- return 0;
- }
-
- /* Compose the output array. */
- *out='[';
- ptr=out+1;*ptr=0;
- for (i=0;i<numentries;i++)
- {
- strcpy(ptr,entries[i]);ptr+=strlen(entries[i]);
- if (i!=numentries-1) {*ptr++=',';if(fmt)*ptr++=' ';*ptr=0;}
- cJSON_free(entries[i]);
- }
- cJSON_free(entries);
- *ptr++=']';*ptr++=0;
- return out;
-}
-
-/* Build an object from the text. */
-static const char *parse_object(cJSON *item,const char *value)
-{
- cJSON *child;
- if (*value!='{') {ep=value;return 0;} /* not an object! */
-
- item->type=cJSON_Object;
- value=skip(value+1);
- if (*value=='}') return value+1; /* empty array. */
-
- item->child=child=cJSON_New_Item();
- if (!item->child) return 0;
- value=skip(parse_string(child,skip(value)));
- if (!value) return 0;
- child->string=child->valuestring;child->valuestring=0;
- if (*value!=':') {ep=value;return 0;} /* fail! */
- value=skip(parse_value(child,skip(value+1))); /* skip any spacing, get the value. */
- if (!value) return 0;
-
- while (*value==',')
- {
- cJSON *new_item;
- if (!(new_item=cJSON_New_Item())) return 0; /* memory fail */
- child->next=new_item;new_item->prev=child;child=new_item;
- value=skip(parse_string(child,skip(value+1)));
- if (!value) return 0;
- child->string=child->valuestring;child->valuestring=0;
- if (*value!=':') {ep=value;return 0;} /* fail! */
- value=skip(parse_value(child,skip(value+1))); /* skip any spacing, get the value. */
- if (!value) return 0;
- }
-
- if (*value=='}') return value+1; /* end of array */
- ep=value;return 0; /* malformed. */
-}
-
-/* Render an object to text. */
-static char *print_object(cJSON *item,int depth,int fmt)
-{
- char **entries=0,**names=0;
- char *out=0,*ptr,*ret,*str;int len=7,i=0,j;
- cJSON *child=item->child;
- int numentries=0,fail=0;
- /* Count the number of entries. */
- while (child) numentries++,child=child->next;
- /* Allocate space for the names and the objects */
- entries=(char**)cJSON_malloc(numentries*sizeof(char*));
- if (!entries) return 0;
- names=(char**)cJSON_malloc(numentries*sizeof(char*));
- if (!names) {cJSON_free(entries);return 0;}
- memset(entries,0,sizeof(char*)*numentries);
- memset(names,0,sizeof(char*)*numentries);
-
- /* Collect all the results into our arrays: */
- child=item->child;depth++;if (fmt) len+=depth;
- while (child)
- {
- names[i]=str=print_string_ptr(child->string);
- entries[i++]=ret=print_value(child,depth,fmt);
- if (str && ret) len+=strlen(ret)+strlen(str)+2+(fmt?2+depth:0); else fail=1;
- child=child->next;
- }
-
- /* Try to allocate the output string */
- if (!fail) out=(char*)cJSON_malloc(len);
- if (!out) fail=1;
-
- /* Handle failure */
- if (fail)
- {
- for (i=0;i<numentries;i++) {if (names[i]) cJSON_free(names[i]);if (entries[i]) cJSON_free(entries[i]);}
- cJSON_free(names);cJSON_free(entries);
- return 0;
- }
-
- /* Compose the output: */
- *out='{';ptr=out+1;if (fmt)*ptr++='\n';*ptr=0;
- for (i=0;i<numentries;i++)
- {
- if (fmt) for (j=0;j<depth;j++) *ptr++='\t';
- strcpy(ptr,names[i]);ptr+=strlen(names[i]);
- *ptr++=':';if (fmt) *ptr++='\t';
- strcpy(ptr,entries[i]);ptr+=strlen(entries[i]);
- if (i!=numentries-1) *ptr++=',';
- if (fmt) *ptr++='\n';*ptr=0;
- cJSON_free(names[i]);cJSON_free(entries[i]);
- }
-
- cJSON_free(names);cJSON_free(entries);
- if (fmt) for (i=0;i<depth-1;i++) *ptr++='\t';
- *ptr++='}';*ptr++=0;
- return out;
-}
-
-/* Get Array size/item / object item. */
-int cJSON_GetArraySize(cJSON *array) {cJSON *c=array->child;int i=0;while(c)i++,c=c->next;return i;}
-cJSON *cJSON_GetArrayItem(cJSON *array,int item) {cJSON *c=array->child; while (c && item>0) item--,c=c->next; return c;}
-cJSON *cJSON_GetObjectItem(cJSON *object,const char *string) {cJSON *c=object->child; while (c && cJSON_strcasecmp(c->string,string)) c=c->next; return c;}
-
-/* Utility for array list handling. */
-static void suffix_object(cJSON *prev,cJSON *item) {prev->next=item;item->prev=prev;}
-/* Utility for handling references. */
-static cJSON *create_reference(cJSON *item) {cJSON *ref=cJSON_New_Item();if (!ref) return 0;memcpy(ref,item,sizeof(cJSON));ref->string=0;ref->type|=cJSON_IsReference;ref->next=ref->prev=0;return ref;}
-
-/* Add item to array/object. */
-void cJSON_AddItemToArray(cJSON *array, cJSON *item) {cJSON *c=array->child;if (!item) return; if (!c) {array->child=item;} else {while (c && c->next) c=c->next; suffix_object(c,item);}}
-void cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item) {if (!item) return; if (item->string) cJSON_free(item->string);item->string=cJSON_strdup(string);cJSON_AddItemToArray(object,item);}
-void cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item) {cJSON_AddItemToArray(array,create_reference(item));}
-void cJSON_AddItemReferenceToObject(cJSON *object,const char *string,cJSON *item) {cJSON_AddItemToObject(object,string,create_reference(item));}
-
-cJSON *cJSON_DetachItemFromArray(cJSON *array,int which) {cJSON *c=array->child;while (c && which>0) c=c->next,which--;if (!c) return 0;
- if (c->prev) c->prev->next=c->next;if (c->next) c->next->prev=c->prev;if (c==array->child) array->child=c->next;c->prev=c->next=0;return c;}
-void cJSON_DeleteItemFromArray(cJSON *array,int which) {cJSON_Delete(cJSON_DetachItemFromArray(array,which));}
-cJSON *cJSON_DetachItemFromObject(cJSON *object,const char *string) {int i=0;cJSON *c=object->child;while (c && cJSON_strcasecmp(c->string,string)) i++,c=c->next;if (c) return cJSON_DetachItemFromArray(object,i);return 0;}
-void cJSON_DeleteItemFromObject(cJSON *object,const char *string) {cJSON_Delete(cJSON_DetachItemFromObject(object,string));}
-
-/* Replace array/object items with new ones. */
-void cJSON_ReplaceItemInArray(cJSON *array,int which,cJSON *newitem) {cJSON *c=array->child;while (c && which>0) c=c->next,which--;if (!c) return;
- newitem->next=c->next;newitem->prev=c->prev;if (newitem->next) newitem->next->prev=newitem;
- if (c==array->child) array->child=newitem; else newitem->prev->next=newitem;c->next=c->prev=0;cJSON_Delete(c);}
-void cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem){int i=0;cJSON *c=object->child;while(c && cJSON_strcasecmp(c->string,string))i++,c=c->next;if(c){newitem->string=cJSON_strdup(string);cJSON_ReplaceItemInArray(object,i,newitem);}}
-
-/* Create basic types: */
-cJSON *cJSON_CreateNull() {cJSON *item=cJSON_New_Item();if(item)item->type=cJSON_NULL;return item;}
-cJSON *cJSON_CreateTrue() {cJSON *item=cJSON_New_Item();if(item)item->type=cJSON_True;return item;}
-cJSON *cJSON_CreateFalse() {cJSON *item=cJSON_New_Item();if(item)item->type=cJSON_False;return item;}
-cJSON *cJSON_CreateBool(int b) {cJSON *item=cJSON_New_Item();if(item)item->type=b?cJSON_True:cJSON_False;return item;}
-cJSON *cJSON_CreateNumber(double num) {cJSON *item=cJSON_New_Item();if(item){item->type=cJSON_Number;item->valuedouble=num;item->valueint=(int)num;}return item;}
-cJSON *cJSON_CreateString(const char *string) {cJSON *item=cJSON_New_Item();if(item){item->type=cJSON_String;item->valuestring=cJSON_strdup(string);}return item;}
-cJSON *cJSON_CreateArray() {cJSON *item=cJSON_New_Item();if(item)item->type=cJSON_Array;return item;}
-cJSON *cJSON_CreateObject() {cJSON *item=cJSON_New_Item();if(item)item->type=cJSON_Object;return item;}
-
-/* Create Arrays: */
-cJSON *cJSON_CreateIntArray(int *numbers,int count) {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;a && i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
-cJSON *cJSON_CreateFloatArray(float *numbers,int count) {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;a && i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
-cJSON *cJSON_CreateDoubleArray(double *numbers,int count) {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;a && i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
-cJSON *cJSON_CreateStringArray(const char **strings,int count) {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;a && i<count;i++){n=cJSON_CreateString(strings[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
diff --git a/navit/vehicle/webos/cJSON.h b/navit/vehicle/webos/cJSON.h
deleted file mode 100644
index 97d529aea..000000000
--- a/navit/vehicle/webos/cJSON.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- Copyright (c) 2009 Dave Gamble
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-*/
-
-#ifndef cJSON__h
-#define cJSON__h
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* cJSON Types: */
-#define cJSON_False 0
-#define cJSON_True 1
-#define cJSON_NULL 2
-#define cJSON_Number 3
-#define cJSON_String 4
-#define cJSON_Array 5
-#define cJSON_Object 6
-
-#define cJSON_IsReference 256
-
-/* The cJSON structure: */
-typedef struct cJSON {
- struct cJSON *next,*prev; /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
- struct cJSON *child; /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
-
- int type; /* The type of the item, as above. */
-
- char *valuestring; /* The item's string, if type==cJSON_String */
- int valueint; /* The item's number, if type==cJSON_Number */
- double valuedouble; /* The item's number, if type==cJSON_Number */
-
- char *string; /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
-} cJSON;
-
-typedef struct cJSON_Hooks {
- void *(*malloc_fn)(size_t sz);
- void (*free_fn)(void *ptr);
-} cJSON_Hooks;
-
-/* Supply malloc, realloc and free functions to cJSON */
-extern void cJSON_InitHooks(cJSON_Hooks* hooks);
-
-
-/* Supply a block of JSON, and this returns a cJSON object you can interrogate. Call cJSON_Delete when finished. */
-extern cJSON *cJSON_Parse(const char *value);
-/* Render a cJSON entity to text for transfer/storage. Free the char* when finished. */
-extern char *cJSON_Print(cJSON *item);
-/* Render a cJSON entity to text for transfer/storage without any formatting. Free the char* when finished. */
-extern char *cJSON_PrintUnformatted(cJSON *item);
-/* Delete a cJSON entity and all subentities. */
-extern void cJSON_Delete(cJSON *c);
-
-/* Returns the number of items in an array (or object). */
-extern int cJSON_GetArraySize(cJSON *array);
-/* Retrieve item number "item" from array "array". Returns NULL if unsuccessful. */
-extern cJSON *cJSON_GetArrayItem(cJSON *array,int item);
-/* Get item "string" from object. Case insensitive. */
-extern cJSON *cJSON_GetObjectItem(cJSON *object,const char *string);
-
-/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
-extern const char *cJSON_GetErrorPtr(void);
-
-/* These calls create a cJSON item of the appropriate type. */
-extern cJSON *cJSON_CreateNull(void);
-extern cJSON *cJSON_CreateTrue(void);
-extern cJSON *cJSON_CreateFalse(void);
-extern cJSON *cJSON_CreateBool(int b);
-extern cJSON *cJSON_CreateNumber(double num);
-extern cJSON *cJSON_CreateString(const char *string);
-extern cJSON *cJSON_CreateArray(void);
-extern cJSON *cJSON_CreateObject(void);
-
-/* These utilities create an Array of count items. */
-extern cJSON *cJSON_CreateIntArray(int *numbers,int count);
-extern cJSON *cJSON_CreateFloatArray(float *numbers,int count);
-extern cJSON *cJSON_CreateDoubleArray(double *numbers,int count);
-extern cJSON *cJSON_CreateStringArray(const char **strings,int count);
-
-/* Append item to the specified array/object. */
-extern void cJSON_AddItemToArray(cJSON *array, cJSON *item);
-extern void cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item);
-/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */
-extern void cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
-extern void cJSON_AddItemReferenceToObject(cJSON *object,const char *string,cJSON *item);
-
-/* Remove/Detatch items from Arrays/Objects. */
-extern cJSON *cJSON_DetachItemFromArray(cJSON *array,int which);
-extern void cJSON_DeleteItemFromArray(cJSON *array,int which);
-extern cJSON *cJSON_DetachItemFromObject(cJSON *object,const char *string);
-extern void cJSON_DeleteItemFromObject(cJSON *object,const char *string);
-
-/* Update array items. */
-extern void cJSON_ReplaceItemInArray(cJSON *array,int which,cJSON *newitem);
-extern void cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
-
-#define cJSON_AddNullToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateNull())
-#define cJSON_AddTrueToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateTrue())
-#define cJSON_AddFalseToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateFalse())
-#define cJSON_AddNumberToObject(object,name,n) cJSON_AddItemToObject(object, name, cJSON_CreateNumber(n))
-#define cJSON_AddStringToObject(object,name,s) cJSON_AddItemToObject(object, name, cJSON_CreateString(s))
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/vehicle/webos/vehicle_webos.c b/navit/vehicle/webos/vehicle_webos.c
deleted file mode 100644
index a5bba4bce..000000000
--- a/navit/vehicle/webos/vehicle_webos.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/**
- * vim: sw=3 ts=3
- *
- * 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 <config.h>
-#include <string.h>
-#include <glib.h>
-#include <math.h>
-#include <errno.h>
-#include <sys/time.h>
-#include <PDL.h>
-#include <SDL.h>
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-#include "coord.h"
-#include "item.h"
-#include "vehicle.h"
-#include "event.h"
-#include "vehicle_webos.h"
-#include "bluetooth.h"
-
-static char *vehicle_webos_prefix="webos:";
-
-/*******************************************************************/
-
-static void
-vehicle_webos_callback(PDL_ServiceParameters *params, void *priv)
-{
- PDL_Location *location;
- SDL_Event event;
- SDL_UserEvent userevent;
- int err;
-
- err = PDL_GetParamInt(params, "errorCode");
- if (err != 0) {
- dbg(lvl_error,"Location Callback errorCode %d\n", err);
- return /*PDL_EOTHER*/;
- }
-
- location = g_new0 (PDL_Location, 1);
-
- location->altitude = PDL_GetParamDouble(params, "altitude");
- location->velocity = PDL_GetParamDouble(params, "velocity");
- location->heading = PDL_GetParamDouble(params, "heading");
- location->horizontalAccuracy = PDL_GetParamDouble(params, "horizAccuracy");
- location->latitude = PDL_GetParamDouble(params, "latitude");
- location->longitude = PDL_GetParamDouble(params, "longitude");
-
- userevent.type = SDL_USEREVENT;
- userevent.code = PDL_GPS_UPDATE;
- userevent.data1 = location;
- userevent.data2 = NULL;
-
- event.type = SDL_USEREVENT;
- event.user = userevent;
-
- SDL_PushEvent(&event);
-
- return /*PDL_NOERROR*/;
-}
-
-static void
-vehicle_webos_gps_update(struct vehicle_priv *priv, PDL_Location *location)
-{
- if(location) { // location may be NULL if called by bluetooth-code. priv is already prefilled there
- struct timeval tv;
- gettimeofday(&tv,NULL);
-
- priv->delta = (int)difftime(tv.tv_sec, priv->fix_time);
- dbg(lvl_info,"delta(%i)\n",priv->delta);
- priv->fix_time = tv.tv_sec;
- priv->geo.lat = location->latitude;
- /* workaround for webOS GPS bug following */
- priv->geo.lng = (priv->pdk_version >= 200 && location->longitude >= -1 && location->longitude <= 1) ?
- -location->longitude : location->longitude;
-
- dbg(lvl_info,"Location: %f %f %f %.12g %.12g +-%fm\n",
- location->altitude,
- location->velocity,
- location->heading,
- priv->geo.lat,
- priv->geo.lng,
- location->horizontalAccuracy);
-
- if (location->altitude != -1)
- priv->altitude = location->altitude;
- if (location->velocity != -1)
- priv->speed = location->velocity * 3.6;
- if (location->heading != -1)
- priv->track = location->heading;
- if (location->horizontalAccuracy != -1)
- priv->radius = location->horizontalAccuracy;
-
- if (priv->pdk_version <= 100)
- g_free(location);
- }
-
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
-}
-
-static void
-vehicle_webos_timeout_callback(struct vehicle_priv *priv)
-{
- struct timeval tv;
- gettimeofday(&tv,NULL);
-
- if (priv->fix_time && priv->delta) {
- int delta = (int)difftime(tv.tv_sec, priv->fix_time);
-
- if (delta >= priv->delta*2) {
- dbg(lvl_warning, "GPS timeout triggered cb(%p) delta(%d)\n", priv->timeout_cb, delta);
-
- priv->delta = -1;
-
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
- }
- }
-}
-
-void
-vehicle_webos_close(struct vehicle_priv *priv)
-{
- event_remove_timeout(priv->ev_timeout);
- priv->ev_timeout = NULL;
-
- callback_destroy(priv->timeout_cb);
-
- if (priv->pdk_version <= 100)
- PDL_UnregisterServiceCallback((PDL_ServiceCallbackFunc)vehicle_webos_callback);
- else {
- PDL_EnableLocationTracking(PDL_FALSE);
- vehicle_webos_bt_close(priv);
- }
-}
-
-static int
-vehicle_webos_open(struct vehicle_priv *priv)
-{
- PDL_Err err;
-
- priv->pdk_version = PDL_GetPDKVersion();
- dbg(lvl_debug,"pdk_version(%d)\n", priv->pdk_version);
-
- if (priv->pdk_version <= 100) {
- // Use Location Service via callback interface
- err = PDL_ServiceCallWithCallback("palm://com.palm.location/startTracking",
- "{subscribe:true}",
- (PDL_ServiceCallbackFunc)vehicle_webos_callback,
- priv,
- PDL_FALSE);
- if (err != PDL_NOERROR) {
- dbg(lvl_error,"PDL_ServiceCallWithCallback failed with (%d): (%s)\n", err, PDL_GetError());
- vehicle_webos_close(priv);
- return 0;
- }
- }
- else {
- PDL_Err err;
- err = PDL_EnableLocationTracking(PDL_TRUE);
- if (err != PDL_NOERROR) {
- dbg(lvl_error,"PDL_EnableLocationTracking failed with (%d): (%s)\n", err, PDL_GetError());
-// vehicle_webos_close(priv);
-// return 0;
- }
-
- priv->gps_type = GPS_TYPE_INT;
-
- if(!vehicle_webos_bt_open(priv))
- return 0;
- }
-
- priv->ev_timeout = event_add_timeout(1000, 1, priv->timeout_cb);
- return 1;
-}
-
-static void
-vehicle_webos_destroy(struct vehicle_priv *priv)
-{
- vehicle_webos_close(priv);
- if (priv->source)
- g_free(priv->source);
- g_free(priv);
-}
-
-static int
-vehicle_webos_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- switch (type) {
- case attr_position_height:
- dbg(lvl_info,"Altitude: %f\n", priv->altitude);
- attr->u.numd = &priv->altitude;
- break;
- case attr_position_speed:
- dbg(lvl_info,"Speed: %f\n", priv->speed);
- attr->u.numd = &priv->speed;
- break;
- case attr_position_direction:
- dbg(lvl_info,"Direction: %f\n", priv->track);
- attr->u.numd = &priv->track;
- break;
- case attr_position_magnetic_direction:
- switch (priv->gps_type) {
- case GPS_TYPE_BT:
- attr->u.num = priv->magnetic_direction;
- break;
- default:
- return 0;
- break;
- }
- break;
- case attr_position_hdop:
- switch (priv->gps_type) {
- case GPS_TYPE_BT:
- attr->u.numd = &priv->hdop;
- break;
- default:
- return 0;
- break;
- }
- break;
- case attr_position_coord_geo:
- dbg(lvl_info,"Coord: %.12g %.12g\n", priv->geo.lat, priv->geo.lng);
- attr->u.coord_geo = &priv->geo;
- break;
- case attr_position_radius:
- dbg(lvl_info,"Radius: %f\n", priv->radius);
- attr->u.numd = &priv->radius;
- 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_info,"Fix Time: %d %s\n", priv->fix_time, priv->fixiso8601);
- }
- else {
- dbg(lvl_info,"Fix Time: %d\n", priv->fix_time);
- return 0;
- }
-
- break;
- case attr_position_fix_type:
- switch (priv->gps_type) {
- case GPS_TYPE_INT:
- if (priv->delta <= 0 || priv->radius == 0.0)
- attr->u.num = 0; // strength = 1
- else if (priv->radius > 20.0)
- attr->u.num = 1; // strength >= 2
- else
- attr->u.num = 2; // strength >= 2
- break;
- case GPS_TYPE_BT:
- attr->u.num = priv->status;
- break;
- default:
- return 0;
- break;
- }
- break;
- case attr_position_sats_used:
- switch (priv->gps_type) {
- case GPS_TYPE_INT:
- if (priv->delta <= 0)
- attr->u.num = 0;
- else if (priv->radius <= 6.0 )
- attr->u.num = 6; // strength = 5
- else if (priv->radius <= 10.0 )
- attr->u.num = 5; // strength = 4
- else if (priv->radius <= 15.0 )
- attr->u.num = 4; // strength = 3
- else
- return 0;
- break;
- case GPS_TYPE_BT:
- attr->u.num = priv->sats_used;
- break;
- default:
- return 0;
- break;
- }
- break;
- default:
- return 0;
- }
- attr->type = type;
- return 1;
-}
-
-static int
-vehicle_webos_set_attr_do(struct vehicle_priv *priv, struct attr *attr, int init)
-{
- switch (attr->type) {
- case attr_source:
- if (strncmp(vehicle_webos_prefix,attr->u.str,strlen(vehicle_webos_prefix))) {
- dbg(lvl_warning,"source must start with '%s'\n", vehicle_webos_prefix);
- return 0;
- }
- g_free(priv->source);
- priv->source=g_strdup(attr->u.str);
- priv->address=priv->source+strlen(vehicle_webos_prefix);
- if (!priv->address[0])
- priv->address=NULL;
- if (!init) {
- vehicle_webos_close(priv);
- vehicle_webos_open(priv);
- }
- return 1;
- case attr_profilename:
- return 1;
- case attr_pdl_gps_update:
- vehicle_webos_gps_update(priv, (PDL_Location *)attr->u.data);
- return 1;
- default:
- return 0;
- }
-}
-
-static int
-vehicle_webos_set_attr(struct vehicle_priv *priv, struct attr *attr)
-{
- return vehicle_webos_set_attr_do(priv, attr, 0);
-}
-
-struct vehicle_methods vehicle_webos_methods = {
- vehicle_webos_destroy,
- vehicle_webos_position_attr_get,
- vehicle_webos_set_attr,
-};
-
-static struct vehicle_priv *
-vehicle_webos_new(struct vehicle_methods
- *meth, struct callback_list
- *cbl, struct attr **attrs)
-{
- struct vehicle_priv *priv;
-
- priv = g_new0(struct vehicle_priv, 1);
- priv->attrs = attrs;
- priv->cbl = cbl;
-
- priv->timeout_cb = callback_new_1(callback_cast(vehicle_webos_timeout_callback), priv);
-
- *meth = vehicle_webos_methods;
- while (*attrs) {
- vehicle_webos_set_attr_do(priv, *attrs, 1);
- attrs++;
- }
-
- vehicle_webos_open(priv);
-
- return priv;
-}
-
-void
-plugin_init(void)
-{
- dbg(lvl_debug, "enter\n");
- plugin_register_category_vehicle("webos", vehicle_webos_new);
-}
-
diff --git a/navit/vehicle/webos/vehicle_webos.h b/navit/vehicle/webos/vehicle_webos.h
deleted file mode 100644
index 4c7973051..000000000
--- a/navit/vehicle/webos/vehicle_webos.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "coord.h"
-
-#define GPS_TYPE_NONE 0
-#define GPS_TYPE_INT 1
-#define GPS_TYPE_BT 2
-
-struct vehicle_priv {
- char *address;
- char *source;
- char *spp_address;
- char *buffer;
- char *nmea_data_buf;
- char *nmea_data;
- char fixiso8601[128];
- double track, speed, altitude, radius;
- double hdop;
- int gps_type;
- int pdk_version;
- int spp_instance_id;
- int buffer_pos;
- int delta;
- int sats_used;
- int sats_visible;
- int magnetic_direction;
- int status;
- int valid;
- time_t fix_time;
- struct attr ** attrs;
- struct callback *event_cb;
- struct callback *timeout_cb;
- struct callback_list *cbl;
- struct coord_geo geo;
- struct event_timeout *ev_timeout;
-};
-
-extern void vehicle_webos_close(struct vehicle_priv *priv);
-
diff --git a/navit/vehicle/wince/CMakeLists.txt b/navit/vehicle/wince/CMakeLists.txt
deleted file mode 100644
index d35904a3e..000000000
--- a/navit/vehicle/wince/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-module_add_library(vehicle_wince vehicle_wince.c)
diff --git a/navit/vehicle/wince/vehicle_wince.c b/navit/vehicle/wince/vehicle_wince.c
deleted file mode 100644
index d43c516f7..000000000
--- a/navit/vehicle/wince/vehicle_wince.c
+++ /dev/null
@@ -1,955 +0,0 @@
-/**
- * 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 <stdio.h>
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <fcntl.h>
-#include <string.h>
-#include <glib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <math.h>
-#include "config.h"
-#include "debug.h"
-#include "callback.h"
-#include "plugin.h"
-#include "coord.h"
-#include "item.h"
-#include "event.h"
-#include "vehicle.h"
-#include <windows.h>
-#include <windowsx.h>
-#include <io.h>
-#include <winioctl.h>
-#include <winbase.h>
-#include <wchar.h>
-#include "support/win32/ConvertUTF.h"
-
-#define SwitchToThread() Sleep(0)
-
-typedef int (WINAPI *PFN_BthSetMode)(DWORD pBthMode);
-typedef int (WINAPI *PFN_BthGetMode)(DWORD* pBthMode);
-
-char *_convert = NULL;
-wchar_t *_wconvert = NULL;
-#define W2A(lpw) (\
- ((LPCSTR)lpw == NULL) ? NULL : (\
- _convert = alloca(wcslen(lpw)+1), wcstombs(_convert, lpw, wcslen(lpw) + 1), _convert) )
-
-#define A2W(lpa) (\
- ((LPCSTR)lpa == NULL) ? NULL : (\
- _wconvert = alloca(strlen(lpa)*2+1), mbstowcs(_wconvert, lpa, strlen(lpa) * 2 + 1), _wconvert) )
-
-static void vehicle_wince_disable_watch(struct vehicle_priv *priv);
-static void vehicle_wince_enable_watch(struct vehicle_priv *priv);
-static int vehicle_wince_parse(struct vehicle_priv *priv, char *buffer);
-static int vehicle_wince_open(struct vehicle_priv *priv);
-static void vehicle_wince_close(struct vehicle_priv *priv);
-
-enum file_type {
- file_type_pipe = 1, file_type_device, file_type_file, file_type_socket
-};
-
-static int buffer_size = 1024;
-
-struct gps_sat {
- int prn;
- int elevation;
- int azimuth;
- int snr;
-};
-
-
-struct vehicle_priv {
- char *source;
- struct callback_list *cbl;
- struct callback_list *priv_cbl;
- int is_running;
- int thread_up;
- int fd;
- HANDLE m_hGPSDevice; // Handle to the device
- HANDLE m_hGPSThread; // Handle to the thread
- DWORD m_dwGPSThread; // Thread id
-
- char *buffer;
- int buffer_pos;
- char *read_buffer;
- int read_buffer_pos;
- char *nmea_data;
- char *nmea_data_buf;
-
- struct coord_geo geo;
- double speed;
- double direction;
- double height;
- double hdop;
- double vdop;
- char fixtime[20];
- int fixyear;
- int fixmonth;
- int fixday;
- int status;
- int sats_used;
- int sats_visible;
- int sats_signal;
- int time;
- int on_eof;
- int baudrate;
- enum file_type file_type;
- struct attr ** attrs;
- char fixiso8601[128];
- int checksum_ignore;
- HMODULE hBthDll;
- PFN_BthSetMode BthSetMode;
- int magnetic_direction;
- int current_count;
- struct gps_sat current[24];
- int next_count;
- struct gps_sat next[24];
- struct item sat_item;
- int valid;
- int has_data;
- GMutex lock;
-};
-
-static void initBth(struct vehicle_priv *priv)
-{
-
- BOOL succeeded = FALSE;
- priv->hBthDll = LoadLibrary(TEXT("bthutil.dll"));
- if ( priv->hBthDll )
- {
- DWORD bthMode;
- PFN_BthGetMode BthGetMode = (PFN_BthGetMode)GetProcAddress(priv->hBthDll, TEXT("BthGetMode") );
-
- if ( BthGetMode && BthGetMode(&bthMode) == ERROR_SUCCESS && bthMode == 0 )
- {
- priv->BthSetMode = (PFN_BthSetMode)GetProcAddress(priv->hBthDll, TEXT("BthSetMode") );
- if( priv->BthSetMode && priv->BthSetMode(1) == ERROR_SUCCESS )
- {
- dbg(lvl_debug, "bluetooth activated\n");
- succeeded = TRUE;
- }
- }
-
- }
- else
- {
- dbg(lvl_error, "Bluetooth library notfound\n");
- }
-
- if ( !succeeded )
- {
-
- dbg(lvl_warning, "Bluetooth already enabled or failed to enable it.\n");
- priv->BthSetMode = NULL;
- if ( priv->hBthDll )
- {
- FreeLibrary(priv->hBthDll);
- }
- }
-}
-
-static int initDevice(struct vehicle_priv *priv)
-{
- COMMTIMEOUTS commTiming;
- HANDLE hGPS;
- if ( priv->m_hGPSDevice )
- CloseHandle(priv->m_hGPSDevice);
-
- if ( priv->file_type == file_type_device )
- {
- dbg(lvl_debug, "Init Device\n");
- /* GPD0 is the control port for the GPS driver */
- hGPS = CreateFile(L"GPD0:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
- if (hGPS != INVALID_HANDLE_VALUE) {
-#ifndef IOCTL_SERVICE_REFRESH
-#define IOCTL_SERVICE_REFRESH 0x4100000C
-#endif
- DeviceIoControl(hGPS,IOCTL_SERVICE_REFRESH,0,0,0,0,0,0);
-#ifndef IOCTL_SERVICE_START
-#define IOCTL_SERVICE_START 0x41000004
-#endif
- DeviceIoControl(hGPS,IOCTL_SERVICE_START,0,0,0,0,0,0);
- CloseHandle(hGPS);
- }
-
- while (priv->is_running &&
- (priv->m_hGPSDevice = CreateFile(A2W(priv->source),
- GENERIC_READ, 0,
- NULL, OPEN_EXISTING, 0, 0)) == INVALID_HANDLE_VALUE)
- {
- Sleep(1000);
- dbg(lvl_debug, "Waiting to connect to %s\n", priv->source);
- }
- GetCommTimeouts (priv->m_hGPSDevice, &commTiming);
- commTiming.ReadIntervalTimeout = 20;
- commTiming.ReadTotalTimeoutMultiplier = 0;
- commTiming.ReadTotalTimeoutConstant = 200;
-
- commTiming.WriteTotalTimeoutMultiplier=5;
- commTiming.WriteTotalTimeoutConstant=5;
- SetCommTimeouts (priv->m_hGPSDevice, &commTiming);
-
- if (priv->baudrate) {
- DCB portState;
- if (!GetCommState(priv->m_hGPSDevice, &portState)) {
- MessageBox (NULL, TEXT ("GetCommState Error"), TEXT (""),
- MB_APPLMODAL|MB_OK);
- priv->thread_up = 0;
- return 0;
- }
- portState.BaudRate = priv->baudrate;
- if (!SetCommState(priv->m_hGPSDevice, &portState)) {
- MessageBox (NULL, TEXT ("SetCommState Error"), TEXT (""),
- MB_APPLMODAL|MB_OK);
- priv->thread_up = 0;
- return 0;
- }
- }
-
- }
- else
- {
- dbg(lvl_debug, "Open File\n");
- priv->m_hGPSDevice = CreateFileW( A2W(priv->source),
- GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);
- if ( priv->m_hGPSDevice == INVALID_HANDLE_VALUE) {
- dbg(lvl_error, "Could not open %s\n", priv->source);
- return 0;
- }
- }
- return 1;
-}
-
-static int read_win32(struct vehicle_priv *priv, char *buffer, size_t size)
-{
- int ret_size;
-
- g_mutex_lock(&priv->lock);
- ret_size = MIN(size,priv->read_buffer_pos);
- priv->has_data = 0;
- memcpy(buffer, priv->read_buffer, ret_size);
-
- memmove(priv->read_buffer, priv->read_buffer + ret_size, buffer_size - ret_size);
- priv->read_buffer_pos -= ret_size;
- g_mutex_unlock(&priv->lock);
- return ret_size;
-}
-
-static DWORD WINAPI wince_reader_thread (LPVOID lParam)
-{
- struct vehicle_priv *priv = lParam;
- char chunk_buffer[3*82];
- BOOL status;
- DWORD bytes_read;
- int waitcounter;
-
- dbg(lvl_debug, "GPS Port:[%s]\n", priv->source);
- priv->thread_up = 1;
-
- if ( !initDevice(priv) ) {
- return -1;
- }
- while (priv->is_running)
- {
- dbg(lvl_debug,"readfile\n");
- waitcounter = 0;
- status = ReadFile(priv->m_hGPSDevice,
- chunk_buffer, sizeof(chunk_buffer),
- &bytes_read, NULL);
-
- if ( !status )
- {
- dbg(lvl_error,"Error reading file/device. Try again.\n");
- initDevice(priv);
- continue;
- }
-
- while ( priv->read_buffer_pos + bytes_read > buffer_size )
- {
- /* TODO (rikky#1#): should use blocking */
- if ( priv->file_type != file_type_file )
- {
- dbg(lvl_debug, "GPS data comes too fast. Have to wait here\n");
- }
-
- Sleep(50);
- waitcounter++;
- if ( waitcounter % 8 == 0 )
- {
- dbg(lvl_debug, "Remind them of the data\n");
- event_call_callback(priv->priv_cbl);
- }
- if(waitcounter % 200 == 0) {
- dbg(lvl_error,"Will main thread ever be ready for the GPS data? Already %d intervals gone.\n",waitcounter);
- }
-
- }
-
- if(waitcounter>2)
- dbg(lvl_debug,"Sent GPS data to the main thread after %d intervals delay.\n",waitcounter);
-
- g_mutex_lock(&priv->lock);
- memcpy(priv->read_buffer + priv->read_buffer_pos , chunk_buffer, bytes_read );
-
- priv->read_buffer_pos += bytes_read;
-
- if ( !priv->has_data )
- {
- event_call_callback(priv->priv_cbl);
- priv->has_data = 1;
- }
-
- g_mutex_unlock(&priv->lock);
- }
- return TRUE;
-}
-
-static int
-vehicle_wince_available_ports(void)
-{
- HKEY hkResult;
- HKEY hkSubResult;
- wchar_t keyname[20];
- wchar_t devicename[100];
- wchar_t devicetype[100];
- int index = 0;
- DWORD regkey_length = sizeof(keyname);
- DWORD regdevtype_length = sizeof(devicetype);
-
- RegOpenKeyEx( HKEY_LOCAL_MACHINE, TEXT("Drivers\\Active"), 0, 0, &hkResult);
- while (RegEnumKeyEx( hkResult, index++, keyname, &regkey_length, NULL, NULL, NULL, NULL) == ERROR_SUCCESS )
- {
- if (RegOpenKeyEx( hkResult, keyname, 0, 0, &hkSubResult) == ERROR_SUCCESS )
- {
- regkey_length = sizeof(keyname);
- if ( RegQueryValueEx( hkSubResult, L"Name", NULL, NULL, (LPBYTE)devicename, &regkey_length) == ERROR_SUCCESS )
- {
- regdevtype_length = sizeof(devicetype);
- if ( RegQueryValueEx( hkSubResult, L"Key", NULL, NULL, (LPBYTE)devicetype, &regdevtype_length) == ERROR_SUCCESS )
- {
- dbg(lvl_debug, "Found device '%s' (%s)\n", W2A(devicename), W2A(devicetype));
- }
- else
- {
- dbg(lvl_debug, "Found device '%s'\n", W2A(devicename));
- }
- }
- RegCloseKey(hkSubResult);
- }
- regkey_length = sizeof(keyname);
- }
-
- RegCloseKey(hkResult);
- return 0;
-}
-
-
-static int
-vehicle_wince_open(struct vehicle_priv *priv)
-{
- char* raw_setting_str;
- char* strport;
- char* strsettings;
-
- dbg(lvl_debug, "enter vehicle_wince_open, priv->source='%s'\n", priv->source);
-
- if (priv->source ) {
-
- if ( strcmp(priv->source, "list") == 0 )
- {
- vehicle_wince_available_ports();
- return 0;
- }
-
- raw_setting_str = g_strdup( priv->source );
- strport = strchr(raw_setting_str, ':' );
- strsettings = strchr(raw_setting_str, ' ' );
-
- if (raw_setting_str && strport&&strsettings ) {
- strport++;
- *strsettings = '\0';
- strsettings++;
-
- dbg(lvl_debug, "serial('%s', '%s')\n", strport, strsettings );
- }
- if (raw_setting_str)
- g_free( raw_setting_str );
- }
- return 1;
-}
-
-static void
-vehicle_wince_close(struct vehicle_priv *priv)
-{
- dbg(lvl_debug,"enter");
-}
-
-static int
-vehicle_wince_parse(struct vehicle_priv *priv, char *buffer)
-{
- char *nmea_data_buf, *p, *item[32];
- double lat, lng;
- int i, j, bcsum;
- int len = strlen(buffer);
- unsigned char csum = 0;
- int valid=0;
- int ret = 0;
-
- dbg(lvl_info, "enter: buffer='%s'\n", buffer);
- for (;;) {
- if (len < 4) {
- dbg(lvl_error, "'%s' too short\n", buffer);
- return ret;
- }
- if (buffer[len - 1] == '\r' || buffer[len - 1] == '\n') {
- buffer[--len] = '\0';
- if (buffer[len - 1] == '\r')
- buffer[--len] = '\0';
- } else
- break;
- }
- if (buffer[0] != '$') {
- dbg(lvl_error, "no leading $ in '%s'\n", buffer);
- return ret;
- }
- if (buffer[len - 3] != '*') {
- dbg(lvl_error, "no *XX in '%s'\n", buffer);
- return ret;
- }
- for (i = 1; i < len - 3; i++) {
- csum ^= (unsigned char) (buffer[i]);
- }
- if (!sscanf(buffer + len - 2, "%x", &bcsum) && priv->checksum_ignore != 2) {
- dbg(lvl_error, "no checksum in '%s'\n", buffer);
- return ret;
- }
- if (bcsum != csum && priv->checksum_ignore == 0) {
- dbg(lvl_error, "wrong checksum in '%s'\n", buffer);
- return ret;
- }
-
- if (!priv->nmea_data_buf || strlen(priv->nmea_data_buf) < 65536) {
- nmea_data_buf=g_strconcat(priv->nmea_data_buf ? priv->nmea_data_buf : "", buffer, "\n", NULL);
- g_free(priv->nmea_data_buf);
- priv->nmea_data_buf=nmea_data_buf;
- } else {
- dbg(lvl_error, "nmea buffer overflow, discarding '%s'\n", buffer);
- }
- i = 0;
- p = buffer;
- while (i < 31) {
- item[i++] = p;
- while (*p && *p != ',')
- p++;
- if (!*p)
- break;
- *p++ = '\0';
- }
-
- if (!strncmp(&buffer[3], "GGA", 3)) {
- /* 1 1111
- 0 1 2 3 4 5 6 7 8 9 0 1234
- $GPGGA,184424.505,4924.2811,N,01107.8846,E,1,05,2.5,408.6,M,,,,0000*0C
- UTC of Fix[1],Latitude[2],N/S[3],Longitude[4],E/W[5],Quality(0=inv,1=gps,2=dgps)[6],Satelites used[7],
- HDOP[8],Altitude[9],"M"[10],height of geoid[11], "M"[12], time since dgps update[13], dgps ref station [14]
- */
- if (*item[2] && *item[3] && *item[4] && *item[5]) {
- lat = g_ascii_strtod(item[2], NULL);
- priv->geo.lat = floor(lat / 100);
- lat -= priv->geo.lat * 100;
- priv->geo.lat += lat / 60;
-
- if (!g_strcasecmp(item[3],"S"))
- priv->geo.lat=-priv->geo.lat;
-
- lng = g_ascii_strtod(item[4], NULL);
- priv->geo.lng = floor(lng / 100);
- lng -= priv->geo.lng * 100;
- priv->geo.lng += lng / 60;
-
- if (!g_strcasecmp(item[5],"W"))
- priv->geo.lng=-priv->geo.lng;
- priv->valid=attr_position_valid_valid;
-
- dbg(lvl_info, "latitude '%2.4f' longitude %2.4f\n", priv->geo.lat, priv->geo.lng);
-
- } else
- priv->valid=attr_position_valid_invalid;
- if (*item[6])
- sscanf(item[6], "%d", &priv->status);
- if (*item[7])
- sscanf(item[7], "%d", &priv->sats_used);
- if (*item[8])
- sscanf(item[8], "%lf", &priv->hdop);
- if (*item[1])
- strncpy(priv->fixtime, item[1], sizeof(priv->fixtime));
- if (*item[9])
- sscanf(item[9], "%lf", &priv->height);
-
- g_free(priv->nmea_data);
- priv->nmea_data=priv->nmea_data_buf;
- priv->nmea_data_buf=NULL;
- }
- if (!strncmp(&buffer[3], "VTG", 3)) {
- /* 0 1 2 34 5 6 7 8
- $GPVTG,143.58,T,,M,0.26,N,0.5,K*6A
- Course Over Ground Degrees True[1],"T"[2],Course Over Ground Degrees Magnetic[3],"M"[4],
- Speed in Knots[5],"N"[6],"Speed in KM/H"[7],"K"[8]
- */
- if (item[1] && item[7])
- valid = 1;
- if (i >= 10 && (*item[9] == 'A' || *item[9] == 'D'))
- valid = 1;
- if (valid) {
- priv->direction = g_ascii_strtod( item[1], NULL );
- priv->speed = g_ascii_strtod( item[7], NULL );
- dbg(lvl_info,"direction %lf, speed %2.1lf\n", priv->direction, priv->speed);
- }
- }
- if (!strncmp(&buffer[3], "RMC", 3)) {
- /* 1 1
- 0 1 2 3 4 5 6 7 8 9 0 1
- $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
- Time[1],Active/Void[2],lat[3],N/S[4],long[5],W/E[6],speed in knots[7],track angle[8],date[9],
- magnetic variation[10],magnetic variation direction[11]
- */
- if (*item[2] == 'A')
- valid = 1;
- if (i >= 13 && (*item[12] == 'A' || *item[12] == 'D'))
- valid = 1;
- if (valid) {
- priv->direction = g_ascii_strtod( item[8], NULL );
- priv->speed = g_ascii_strtod( item[7], NULL );
- priv->speed *= 1.852;
- sscanf(item[9], "%02d%02d%02d",
- &priv->fixday,
- &priv->fixmonth,
- &priv->fixyear);
- priv->fixyear += 2000;
- }
- ret = 1;
- }
- if (!strncmp(buffer, "$GPGSV", 6) && i >= 4) {
- /*
- 0 GSV Satellites in view
- 1 2 Number of sentences for full data
- 2 1 sentence 1 of 2
- 3 08 Number of satellites in view
-
- 4 01 Satellite PRN number
- 5 40 Elevation, degrees
- 6 083 Azimuth, degrees
- 7 46 SNR - higher is better
- for up to 4 satellites per sentence
- *75 the checksum data, always begins with *
- */
- if (item[3]) {
- sscanf(item[3], "%d", &priv->sats_visible);
- }
- j=4;
- while (j+4 <= i && priv->current_count < 24) {
- struct gps_sat *sat=&priv->next[priv->next_count++];
- sat->prn=atoi(item[j]);
- sat->elevation=atoi(item[j+1]);
- sat->azimuth=atoi(item[j+2]);
- sat->snr=atoi(item[j+3]);
- j+=4;
- }
- if (!strcmp(item[1], item[2])) {
- priv->sats_signal=0;
- for (i = 0 ; i < priv->next_count ; i++) {
- priv->current[i]=priv->next[i];
- if (priv->current[i].snr)
- priv->sats_signal++;
- }
- priv->current_count=priv->next_count;
- priv->next_count=0;
- }
- }
- if (!strncmp(&buffer[3], "ZDA", 3)) {
- /*
- 0 1 2 3 4 5 6
- $GPZDA,hhmmss.ss,dd,mm,yyyy,xx,yy*CC
- hhmmss HrMinSec(UTC)
- dd,mm,yyy Day,Month,Year
- xx local zone hours -13..13
- yy local zone minutes 0..59
- */
- if (item[1] && item[2] && item[3] && item[4]) {
- strncpy(priv->fixtime, item[1], strlen(priv->fixtime));
- priv->fixday = atoi(item[2]);
- priv->fixmonth = atoi(item[3]);
- priv->fixyear = atoi(item[4]);
- }
- }
- if (!strncmp(buffer, "$IISMD", 6)) {
- /*
- 0 1 2 3 4
- $IISMD,dir,press,height,temp*CC"
- dir Direction (0-359)
- press Pressure (hpa, i.e. 1032)
- height Barometric height above ground (meter)
- temp Temperature (Degree Celsius)
- */
- if (item[1]) {
- priv->magnetic_direction = g_ascii_strtod( item[1], NULL );
- dbg(lvl_debug,"magnetic %d\n", priv->magnetic_direction);
- }
- }
- return ret;
-}
-
-static void
-vehicle_wince_io(struct vehicle_priv *priv)
-{
- int size, rc = 0;
- char *str, *tok;
-
- dbg(lvl_debug, "vehicle_file_io : enter\n");
-
- size = read_win32(priv, priv->buffer + priv->buffer_pos, buffer_size - priv->buffer_pos - 1);
-
- if (size <= 0) {
- switch (priv->on_eof) {
- case 0:
- vehicle_wince_close(priv);
- vehicle_wince_open(priv);
- break;
- case 1:
- vehicle_wince_disable_watch(priv);
- break;
- case 2:
- exit(0);
- break;
- }
- return;
- }
- priv->buffer_pos += size;
- priv->buffer[priv->buffer_pos] = '\0';
- dbg(lvl_debug, "size=%d pos=%d buffer='%s'\n", size,
- priv->buffer_pos, priv->buffer);
- str = priv->buffer;
- while ((tok = strchr(str, '\n'))) {
- *tok++ = '\0';
- dbg(lvl_debug, "line='%s'\n", str);
- rc +=vehicle_wince_parse(priv, str);
- str = tok;
- if (priv->file_type == file_type_file && rc)
- break;
- }
-
- if (str != priv->buffer) {
- size = priv->buffer + priv->buffer_pos - str;
- memmove(priv->buffer, str, size + 1);
- priv->buffer_pos = size;
- dbg(lvl_info, "now pos=%d buffer='%s'\n",
- priv->buffer_pos, priv->buffer);
- } else if (priv->buffer_pos == buffer_size - 1) {
- dbg(lvl_error,
- "Overflow. Most likely wrong baud rate or no nmea protocol\n");
- priv->buffer_pos = 0;
- }
- if (rc)
- callback_list_call_attr_0(priv->cbl, attr_position_coord_geo);
-}
-
-static void
-vehicle_wince_enable_watch(struct vehicle_priv *priv)
-{
- dbg(lvl_debug, "enter");
- vehicle_wince_disable_watch(priv);
- priv->is_running = 1;
-
- InitializeCriticalSection(&priv->lock);
- priv->m_hGPSThread = CreateThread(NULL, 0, wince_reader_thread,
- priv, 0, &priv->m_dwGPSThread);
-
- if (!priv->m_hGPSThread) {
- priv->is_running = 0;
- // error creating thread
- MessageBox (NULL, TEXT ("Can not create GPS reader thread"), TEXT (""),
- MB_APPLMODAL|MB_OK);
- }
-}
-
-static void
-vehicle_wince_disable_watch(struct vehicle_priv *priv)
-{
- int wait = 5000;
-
- dbg(lvl_debug, "enter");
-
- priv->is_running = 0;
- while (wait-- > 0 && priv->thread_up) {
- SwitchToThread();
- }
- if (priv->m_hGPSThread) {
- // Terminate reader, sorry
- TerminateThread(priv->m_hGPSThread, -1);
- }
-}
-
-
-/**
- * @brief Frees the wince_vehicle
- *
- * @param priv vehicle_priv structure for the vehicle
- */
-static void
-vehicle_wince_destroy(struct vehicle_priv *priv)
-{
- vehicle_wince_disable_watch(priv);
- vehicle_wince_close(priv);
- if (priv->BthSetMode)
- {
- (void)priv->BthSetMode(0);
- FreeLibrary(priv->hBthDll);
- }
- if (priv->source)
- g_free(priv->source);
- if (priv->buffer)
- g_free(priv->buffer);
- if (priv->read_buffer)
- g_free(priv->read_buffer);
- g_free(priv);
-}
-
-/**
- * @brief Retrieves a vehicle attribute.
- *
- * @param priv vehicle_priv structure for the vehicle
- * @param type The attribute type to retrieve
- * @param attr Points to an attr structure that will receive the attribute data
- * @returns True for success, false for failure
- */
-static int
-vehicle_wince_position_attr_get(struct vehicle_priv *priv,
- enum attr_type type, struct attr *attr)
-{
- switch (type) {
- case attr_position_fix_type:
- attr->u.num = priv->status;
- 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_magnetic_direction:
- attr->u.num = priv->magnetic_direction;
- break;
- case attr_position_hdop:
- attr->u.numd = &priv->hdop;
- break;
- case attr_position_qual:
- attr->u.num = priv->sats_visible;
- break;
- case attr_position_sats_signal:
- attr->u.num = priv->sats_signal;
- break;
- case attr_position_sats_used:
- attr->u.num = priv->sats_used;
- break;
- case attr_position_coord_geo:
- attr->u.coord_geo = &priv->geo;
- break;
- case attr_position_nmea:
- attr->u.str=priv->nmea_data;
- if (! attr->u.str)
- return 0;
- break;
- case attr_position_time_iso8601:
- if (!priv->fixyear || !priv->fixtime[0])
- return 0;
- sprintf(priv->fixiso8601, "%04d-%02d-%02dT%.2s:%.2s:%sZ",
- priv->fixyear, priv->fixmonth, priv->fixday,
- priv->fixtime, (priv->fixtime+2), (priv->fixtime+4));
- attr->u.str=priv->fixiso8601;
- break;
- case attr_position_sat_item:
- dbg(lvl_debug,"at here\n");
- priv->sat_item.id_lo++;
- if (priv->sat_item.id_lo > priv->current_count) {
- priv->sat_item.id_lo=0;
- return 0;
- }
- attr->u.item=&priv->sat_item;
- break;
- case attr_position_valid:
- attr->u.num=priv->valid;
- break;
- default:
- return 0;
- }
- if (type != attr_position_sat_item)
- priv->sat_item.id_lo=0;
- attr->type = type;
- return 1;
-}
-
-static int
-vehicle_wince_sat_attr_get(void *priv_data, enum attr_type type, struct attr *attr)
-{
- struct vehicle_priv *priv=priv_data;
- struct gps_sat *sat;
-
- if (priv->sat_item.id_lo < 1)
- return 0;
- if (priv->sat_item.id_lo > priv->current_count)
- return 0;
- sat=&priv->current[priv->sat_item.id_lo-1];
- switch (type) {
- case attr_sat_prn:
- attr->u.num=sat->prn;
- break;
- case attr_sat_elevation:
- attr->u.num=sat->elevation;
- break;
- case attr_sat_azimuth:
- attr->u.num=sat->azimuth;
- break;
- case attr_sat_snr:
- attr->u.num=sat->snr;
- break;
- default:
- return 0;
- }
- attr->type = type;
- return 1;
-}
-
-static struct item_methods vehicle_wince_sat_methods = {
- NULL,
- NULL,
- NULL,
- vehicle_wince_sat_attr_get,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-struct vehicle_methods vehicle_wince_methods = {
- vehicle_wince_destroy,
- vehicle_wince_position_attr_get,
- NULL,
-};
-
-/**
- * @brief Creates a new wince_vehicle
- *
- * @param meth
- * @param cbl
- * @param attrs
- * @returns vehicle_priv
- */
-static struct vehicle_priv *
-vehicle_wince_new(struct vehicle_methods
- *meth, struct callback_list
- *cbl, struct attr **attrs)
-{
- struct vehicle_priv *ret;
- struct attr *source;
- struct attr *time;
- struct attr *on_eof;
- struct attr *baudrate;
- struct attr *checksum_ignore;
- struct attr *handle_bluetooth;
- char *cp;
-
- dbg(lvl_debug, "enter\n");
- source = attr_search(attrs, NULL, attr_source);
- ret = g_new0(struct vehicle_priv, 1);
- ret->fd = -1;
- ret->cbl = cbl;
-
- ret->file_type = file_type_device;
- cp = strchr(source->u.str,':');
- if (cp)
- {
- if ( strncmp(source->u.str, "file", 4) == 0 )
- ret->file_type = file_type_file;
- cp++;
- }
- else
- cp = source->u.str;
- ret->source = g_strdup(cp);
- ret->buffer = g_malloc(buffer_size);
- ret->time=1000;
- ret->baudrate=0; // do not change the rate if not configured
-
- time = attr_search(attrs, NULL, attr_time);
- if (time)
- ret->time=time->u.num;
- baudrate = attr_search(attrs, NULL, attr_baudrate);
- if (baudrate) {
- ret->baudrate = baudrate->u.num;
- }
- checksum_ignore = attr_search(attrs, NULL, attr_checksum_ignore);
- if (checksum_ignore)
- ret->checksum_ignore=checksum_ignore->u.num;
- ret->attrs = attrs;
- on_eof = attr_search(attrs, NULL, attr_on_eof);
- if (on_eof && !g_strcasecmp(on_eof->u.str, "stop"))
- ret->on_eof=1;
- if (on_eof && !g_strcasecmp(on_eof->u.str, "exit"))
- ret->on_eof=2;
- dbg(lvl_debug,"on_eof=%d\n", ret->on_eof);
- *meth = vehicle_wince_methods;
- ret->priv_cbl = callback_list_new();
- callback_list_add(ret->priv_cbl, callback_new_1(callback_cast(vehicle_wince_io), ret));
- ret->sat_item.type=type_position_sat;
- ret->sat_item.id_hi=ret->sat_item.id_lo=0;
- ret->sat_item.priv_data=ret;
- ret->sat_item.meth=&vehicle_wince_sat_methods;
-
- ret->read_buffer = g_malloc(buffer_size);
-
- handle_bluetooth = attr_search(attrs, NULL, attr_bluetooth);
- if ( handle_bluetooth && handle_bluetooth->u.num == 1 )
- initBth(ret);
-
- if (vehicle_wince_open(ret)) {
- vehicle_wince_enable_watch(ret);
- return ret;
- }
- dbg(lvl_error, "Failed to open '%s'\n", ret->source);
- vehicle_wince_destroy(ret);
- return NULL;
-}
-
-/**
- * @brief Registers the vehicle_wince plugin
- */
-void
-plugin_init(void)
-{
- dbg(lvl_debug, "enter\n");
- plugin_register_category_vehicle("wince", vehicle_wince_new);
- plugin_register_category_vehicle("file", vehicle_wince_new);
-}
diff --git a/navit/vehicleprofile.c b/navit/vehicleprofile.c
deleted file mode 100644
index 9da721d26..000000000
--- a/navit/vehicleprofile.c
+++ /dev/null
@@ -1,324 +0,0 @@
-/**
- * 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 <stdlib.h>
-#include <glib.h>
-#include <string.h>
-#include "debug.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "roadprofile.h"
-#include "vehicleprofile.h"
-#include "callback.h"
-
-static void
-vehicleprofile_set_attr_do(struct vehicleprofile *this_, struct attr *attr)
-{
- dbg(lvl_debug,"%s:%ld\n", attr_to_name(attr->type), attr->u.num);
- switch (attr->type) {
- case attr_flags:
- this_->flags=attr->u.num;
- break;
- case attr_flags_forward_mask:
- this_->flags_forward_mask=attr->u.num;
- break;
- case attr_flags_reverse_mask:
- this_->flags_reverse_mask=attr->u.num;
- break;
- case attr_maxspeed_handling:
- this_->maxspeed_handling=attr->u.num;
- break;
- case attr_route_mode:
- this_->mode=attr->u.num;
- break;
- case attr_name:
- if(this_->name)
- g_free(this_->name);
- /* previously used strdupn not available on win32 */
- this_->name = g_strdup(attr->u.str);
- break;
- case attr_route_depth:
- if(this_->route_depth)
- g_free(this_->route_depth);
- this_->route_depth = g_strdup(attr->u.str);
- break;
- case attr_vehicle_axle_weight:
- this_->axle_weight=attr->u.num;
- break;
- case attr_vehicle_dangerous_goods:
- this_->dangerous_goods=attr->u.num;
- break;
- case attr_vehicle_height:
- this_->height=attr->u.num;
- break;
- case attr_vehicle_length:
- this_->length=attr->u.num;
- break;
- case attr_vehicle_weight:
- this_->weight=attr->u.num;
- break;
- case attr_vehicle_width:
- this_->width=attr->u.num;
- break;
- case attr_static_speed:
- this_->static_speed=attr->u.num;
- break;
- case attr_static_distance:
- this_->static_distance=attr->u.num;
- break;
- case attr_through_traffic_penalty:
- this_->through_traffic_penalty=attr->u.num;
- break;
- case attr_turn_around_penalty:
- this_->turn_around_penalty=attr->u.num;
- break;
- case attr_turn_around_penalty2:
- this_->turn_around_penalty2=attr->u.num;
- break;
- default:
- break;
- }
-}
-
-static void
-vehicleprofile_free_hash_item(gpointer key, gpointer value, gpointer user_data)
-{
- struct navit_object *obj=value;
- obj->func->unref(obj);
-}
-
-static void
-vehicleprofile_free_hash(struct vehicleprofile *this_)
-{
- if (this_->roadprofile_hash) {
- g_hash_table_foreach(this_->roadprofile_hash, vehicleprofile_free_hash_item, NULL);
- g_hash_table_destroy(this_->roadprofile_hash);
- }
-}
-
-static void
-vehicleprofile_clear(struct vehicleprofile *this_)
-{
- this_->mode=0;
- this_->flags_forward_mask=0;
- this_->flags_reverse_mask=0;
- this_->flags=0;
- this_->maxspeed_handling = maxspeed_enforce;
- this_->static_speed=0;
- this_->static_distance=0;
- g_free(this_->name);
- this_->name=NULL;
- g_free(this_->route_depth);
- this_->route_depth=NULL;
- this_->dangerous_goods=0;
- this_->length=-1;
- this_->width=-1;
- this_->height=-1;
- this_->weight=-1;
- this_->axle_weight=-1;
- this_->through_traffic_penalty=9000;
- vehicleprofile_free_hash(this_);
- this_->roadprofile_hash=g_hash_table_new(NULL, NULL);
-}
-
-static void
-vehicleprofile_apply_roadprofile(struct vehicleprofile *this_, struct navit_object *rp, int is_option)
-{
- struct attr item_types_attr;
- if (rp->func->get_attr(rp, attr_item_types, &item_types_attr, NULL)) {
- enum item_type *types=item_types_attr.u.item_types;
- while (*types != type_none) {
- struct navit_object *oldrp;
- /* Maptool won't place any access flags for roads which don't have default access flags set. Warn user. */
- if(!item_get_default_flags(*types))
- dbg(lvl_error,"On '%s' roads used in '%s' vehicleprofile access restrictions are ignored. You might even be directed to drive in wrong direction on a one-way road. "
- "Please define default access flags for above road type to item.c and rebuild the map.\n", item_to_name(*types), this_->name);
- oldrp=g_hash_table_lookup(this_->roadprofile_hash, (void *)(long)(*types));
- if (is_option && oldrp) {
- struct navit_object *newrp;
- struct attr_iter *iter=rp->func->iter_new(NULL);
- struct attr attr;
- dbg(lvl_debug,"patching roadprofile\n");
- newrp=oldrp->func->dup(oldrp);
- while (rp->func->get_attr(rp, attr_any, &attr, iter))
- newrp->func->set_attr(newrp, &attr);
- oldrp->func->iter_destroy(iter);
- oldrp->func->unref(oldrp);
- g_hash_table_insert(this_->roadprofile_hash, (void *)(long)(*types), newrp);
- } else {
- if (oldrp)
- oldrp->func->unref(oldrp);
- g_hash_table_insert(this_->roadprofile_hash, (void *)(long)(*types), rp->func->ref(rp));
- }
- types++;
- }
- }
-}
-
-static void
-vehicleprofile_apply_attrs(struct vehicleprofile *this_, struct navit_object *obj, int is_option)
-{
- struct attr attr;
- struct attr_iter *iter=obj->func->iter_new(NULL);
- while (obj->func->get_attr(obj, attr_any, &attr, iter)) {
- dbg(lvl_debug,"%s\n",attr_to_name(attr.type));
- if (attr.type == attr_roadprofile)
- vehicleprofile_apply_roadprofile(this_, attr.u.navit_object, is_option);
- else if (attr.type != attr_profile_option)
- vehicleprofile_set_attr_do(this_, &attr);
- }
- obj->func->iter_destroy(iter);
-}
-
-static void
-vehicleprofile_debug_roadprofile(gpointer key, gpointer value, gpointer user_data)
-{
- struct roadprofile *rp=value;
- dbg(lvl_debug,"type %s avg %d weight %d max %d\n",item_to_name((int)(long)key),rp->speed,rp->route_weight,rp->maxspeed);
-}
-
-static void
-vehicleprofile_update(struct vehicleprofile *this_)
-{
- struct attr_iter *iter=vehicleprofile_attr_iter_new();
- struct attr profile_option;
- dbg(lvl_debug,"enter\n");
- vehicleprofile_clear(this_);
- vehicleprofile_apply_attrs(this_, (struct navit_object *)this_, 0);
- while (vehicleprofile_get_attr(this_, attr_profile_option, &profile_option, iter)) {
- struct attr active, name;
- if (!profile_option.u.navit_object->func->get_attr(profile_option.u.navit_object, attr_active, &active, NULL))
- active.u.num=0;
- if (profile_option.u.navit_object->func->get_attr(profile_option.u.navit_object, attr_name, &name, NULL))
- dbg(lvl_debug,"%p %s %ld\n",profile_option.u.navit_object,name.u.str,active.u.num);
- if (active.u.num)
- vehicleprofile_apply_attrs(this_, profile_option.u.navit_object, 1);
- }
- vehicleprofile_attr_iter_destroy(iter);
- dbg(lvl_debug,"result l %d w %d h %d wg %d awg %d pen %d\n",this_->length,this_->width,this_->height,this_->weight,this_->axle_weight,this_->through_traffic_penalty);
- dbg(lvl_debug,"m %d fwd 0x%x rev 0x%x flags 0x%x max %d stsp %d stdst %d dg %d\n",this_->mode,this_->flags_forward_mask,this_->flags_reverse_mask, this_->flags, this_->maxspeed_handling, this_->static_speed, this_->static_distance, this_->dangerous_goods);
- g_hash_table_foreach(this_->roadprofile_hash, vehicleprofile_debug_roadprofile, NULL);
-
-}
-
-
-struct vehicleprofile *
-vehicleprofile_new(struct attr *parent, struct attr **attrs)
-{
- struct vehicleprofile *this_;
- struct attr **attr, *type_attr;
- if (! (type_attr=attr_search(attrs, NULL, attr_name))) {
- return NULL;
- }
- this_=g_new0(struct vehicleprofile, 1);
- this_->func=&vehicleprofile_func;
- navit_object_ref((struct navit_object *)this_);
- this_->attrs=attr_list_dup(attrs);
- this_->active_callback.type=attr_callback;
- this_->active_callback.u.callback=callback_new_attr_1(callback_cast(vehicleprofile_update), attr_active, this_);
- vehicleprofile_clear(this_);
- for (attr=attrs;*attr; attr++)
- vehicleprofile_set_attr_do(this_, *attr);
- return this_;
-}
-
-struct attr_iter *
-vehicleprofile_attr_iter_new(void)
-{
- return (struct attr_iter *)g_new0(void *,1);
-}
-
-void
-vehicleprofile_attr_iter_destroy(struct attr_iter *iter)
-{
- g_free(iter);
-}
-
-
-int
-vehicleprofile_get_attr(struct vehicleprofile *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
-}
-
-int
-vehicleprofile_set_attr(struct vehicleprofile *this_, struct attr *attr)
-{
- vehicleprofile_set_attr_do(this_, attr);
- this_->attrs=attr_generic_set_attr(this_->attrs, attr);
- return 1;
-}
-
-int
-vehicleprofile_add_attr(struct vehicleprofile *this_, struct attr *attr)
-{
- this_->attrs=attr_generic_add_attr(this_->attrs, attr);
- switch (attr->type) {
- case attr_roadprofile:
- vehicleprofile_apply_roadprofile(this_, attr->u.navit_object, 0);
- break;
- case attr_profile_option:
- attr->u.navit_object->func->add_attr(attr->u.navit_object, &this_->active_callback);
- break;
- default:
- break;
- }
- return 1;
-}
-
-int
-vehicleprofile_remove_attr(struct vehicleprofile *this_, struct attr *attr)
-{
- this_->attrs=attr_generic_remove_attr(this_->attrs, attr);
- return 1;
-}
-
-struct roadprofile *
-vehicleprofile_get_roadprofile(struct vehicleprofile *this_, enum item_type type)
-{
- return g_hash_table_lookup(this_->roadprofile_hash, (void *)(long)type);
-}
-
-char *
-vehicleprofile_get_name(struct vehicleprofile *this_)
-{
- return this_->name;
-}
-
-static void
-vehicleprofile_init(struct vehicleprofile *this_)
-{
- vehicleprofile_update(this_);
-}
-
-struct object_func vehicleprofile_func = {
- attr_vehicleprofile,
- (object_func_new)vehicleprofile_new,
- (object_func_get_attr)vehicleprofile_get_attr,
- (object_func_iter_new)vehicleprofile_attr_iter_new,
- (object_func_iter_destroy)vehicleprofile_attr_iter_destroy,
- (object_func_set_attr)vehicleprofile_set_attr,
- (object_func_add_attr)vehicleprofile_add_attr,
- (object_func_remove_attr)vehicleprofile_remove_attr,
- (object_func_init)vehicleprofile_init,
- (object_func_destroy)NULL,
- (object_func_dup)NULL,
- (object_func_ref)navit_object_ref,
- (object_func_unref)navit_object_unref,
-};
diff --git a/navit/vehicleprofile.h b/navit/vehicleprofile.h
deleted file mode 100644
index 4e1b6a340..000000000
--- a/navit/vehicleprofile.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * 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.
- */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-enum maxspeed_handling {
- maxspeed_enforce = 0, /*!< Always enforce maxspeed of segment */
- maxspeed_restrict = 1, /*!< Enforce maxspeed of segment only if it restricts the speed */
- maxspeed_ignore = 2, /*!< Ignore maxspeed of segment, always use {@code route_weight} of road profile */
-};
-
-
-struct vehicleprofile {
- NAVIT_OBJECT
- int mode; /**< 0 = Auto, 1 = On-Road, 2 = Off-Road */
- int flags_forward_mask; /**< Flags mask for moving in positive direction */
- int flags_reverse_mask; /**< Flags mask for moving in reverse direction */
- int flags; /**< Required flags to move through a segment */
- int maxspeed_handling; /**< How to handle maxspeed of segment, see {@code enum maxspeed_handling} */
- int static_speed; /**< Maximum speed of vehicle to consider it stationary */
- int static_distance; /**< Maximum distance of previous position of vehicle to consider it stationary */
- char *name; /**< the vehicle profile name */
- char *route_depth; /**< the route depth attribute */
- int width; /**< Width of the vehicle in cm */
- int height; /**< Height of the vehicle in cm */
- int length; /**< Length of the vehicle in cm */
- int weight; /**< Weight of the vehicle in kg */
- int axle_weight; /**< Axle Weight of the vehicle in kg */
- int dangerous_goods; /**< Flags of dangerous goods present */
- int through_traffic_penalty; /**< Penalty when driving on a through traffic limited road */
- GHashTable *roadprofile_hash;
- struct attr active_callback;
- int turn_around_penalty; /**< Penalty when turning around */
- int turn_around_penalty2; /**< Penalty when turning around, for planned turn arounds */
-};
-
-struct vehicleprofile * vehicleprofile_new(struct attr *parent, struct attr **attrs);
-struct attr_iter *vehicleprofile_attr_iter_new(void);
-void vehicleprofile_attr_iter_destroy(struct attr_iter *iter);
-int vehicleprofile_get_attr(struct vehicleprofile *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-int vehicleprofile_set_attr(struct vehicleprofile *this_, struct attr *attr);
-int vehicleprofile_add_attr(struct vehicleprofile *this_, struct attr *attr);
-int vehicleprofile_remove_attr(struct vehicleprofile *this_, struct attr *attr);
-struct roadprofile * vehicleprofile_get_roadprofile(struct vehicleprofile *this_, enum item_type type);
-
-//! Returns the vehicle profile's name.
-char * vehicleprofile_get_name(struct vehicleprofile *this_);
-#ifdef __cplusplus
-}
-#endif
diff --git a/navit/version.h.in b/navit/version.h.in
deleted file mode 100644
index 3c39d0e1f..000000000
--- a/navit/version.h.in
+++ /dev/null
@@ -1,2 +0,0 @@
-#cmakedefine GIT_VERSION "@GIT_VERSION@"
-#cmakedefine NAVIT_VARIANT "@NAVIT_VARIANT@"
diff --git a/navit/window.h b/navit/window.h
deleted file mode 100644
index 706bea798..000000000
--- a/navit/window.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2009 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.
- */
-
-/**
- * Describes the Navit application window or equivalent.
- */
-struct window {
- void *priv; /**< Private data of the graphics implementation */
- int (*fullscreen)(struct window *win, int on); /**< Method to toggle fullscreen mode */
- void (*disable_suspend)(struct window *win); /**< Method to disable suspend mode or screen savers */
-};
diff --git a/navit/xmlconfig.c b/navit/xmlconfig.c
deleted file mode 100644
index 36f7965cc..000000000
--- a/navit/xmlconfig.c
+++ /dev/null
@@ -1,1390 +0,0 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2009 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.
- */
-
-/* see http://library.gnome.org/devel/glib/stable/glib-Simple-XML-Subset-Parser.html
- * for details on how the xml file parser works.
- */
-
-#include <stdlib.h>
-#include <glib.h>
-#include <glib/gprintf.h>
-#include <string.h>
-#include <ctype.h>
-#include "debug.h"
-#include "file.h"
-#include "coord.h"
-#include "item.h"
-#include "xmlconfig.h"
-#include "layout.h"
-#include "mapset.h"
-#include "projection.h"
-#include "map.h"
-#include "navigation.h"
-#include "navit.h"
-#include "plugin.h"
-#include "route.h"
-#include "speech.h"
-#include "track.h"
-#include "vehicle.h"
-#include "point.h"
-#include "graphics.h"
-#include "gui.h"
-#include "osd.h"
-#include "log.h"
-#include "announcement.h"
-#include "vehicleprofile.h"
-#include "callback.h"
-#include "config_.h"
-
-#if (defined __MINGW32__) || (defined _MSC_VER)
-/* This only works if a is a string constant, i.e. "name" */
-#define unsetenv(a) putenv(a "=")
-#endif
-
-struct xistate {
- struct xistate *parent;
- struct xistate *child;
- const gchar *element;
- const gchar **attribute_names;
- const gchar **attribute_values;
-};
-
-struct xmldocument {
- const gchar *href;
- const gchar *xpointer;
- gpointer user_data;
- struct xistate *first;
- struct xistate *last;
- int active;
- int level;
-};
-
-
-struct xmlstate {
- const gchar **attribute_names;
- const gchar **attribute_values;
- struct xmlstate *parent;
- struct attr element_attr;
- const gchar *element;
- xmlerror **error;
- struct element_func *func;
- struct object_func *object_func;
- struct xmldocument *document;
-};
-
-
-struct attr_fixme {
- char *element;
- char **attr_fixme;
-};
-
-static struct attr ** convert_to_attrs(struct xmlstate *state, struct attr_fixme *fixme)
-{
- const gchar **attribute_name=state->attribute_names;
- const gchar **attribute_value=state->attribute_values;
- const gchar *name;
- int count=0;
- struct attr **ret;
- static int fixme_count;
-
- while (*attribute_name) {
- count++;
- attribute_name++;
- }
- ret=g_new(struct attr *, count+1);
- attribute_name=state->attribute_names;
- count=0;
- while (*attribute_name) {
- name=*attribute_name;
- if (fixme) {
- char **attr_fixme=fixme->attr_fixme;
- while (attr_fixme[0]) {
- if (! strcmp(name, attr_fixme[0])) {
- name=attr_fixme[1];
- if (fixme_count++ < 10)
- dbg(lvl_error,"Please change attribute '%s' to '%s' in <%s />\n", attr_fixme[0], attr_fixme[1], fixme->element);
- break;
- }
- attr_fixme+=2;
- }
- }
- ret[count]=attr_new_from_text(name,*attribute_value);
- if (ret[count])
- count++;
- else if (strcmp(*attribute_name,"enabled") && strcmp(*attribute_name,"xmlns:xi"))
- dbg(lvl_error,"failed to create attribute '%s' with value '%s'\n", *attribute_name,*attribute_value);
- attribute_name++;
- attribute_value++;
- }
- ret[count]=NULL;
- dbg(lvl_debug,"ret=%p\n", ret);
- return ret;
-}
-
-
-static const char * find_attribute(struct xmlstate *state, const char *attribute, int required)
-{
- const gchar **attribute_name=state->attribute_names;
- const gchar **attribute_value=state->attribute_values;
- while(*attribute_name) {
- if(! g_ascii_strcasecmp(attribute,*attribute_name))
- return *attribute_value;
- attribute_name++;
- attribute_value++;
- }
- if (required)
- g_set_error(state->error,G_MARKUP_ERROR,G_MARKUP_ERROR_INVALID_CONTENT, "element '%s' is missing attribute '%s'", state->element, attribute);
- return NULL;
-}
-
-static int
-find_boolean(struct xmlstate *state, const char *attribute, int deflt, int required)
-{
- const char *value;
-
- value=find_attribute(state, attribute, required);
- if (! value)
- return deflt;
- if (g_ascii_strcasecmp(value,"no") && g_ascii_strcasecmp(value,"0") && g_ascii_strcasecmp(value,"false"))
- return 1;
- return 0;
-}
-
-/**
- * * Convert a string number to int
- * *
- * * @param val the string value to convert
- * * @returns int value of converted string
- * */
-static int
-convert_number(const char *val)
-{
- if (val)
- return g_ascii_strtoull(val,NULL,0);
- else
- return 0;
-}
-
-static int
-xmlconfig_announce(struct xmlstate *state)
-{
- const char *type,*value;
- char key[32];
- int level[3];
- int i;
- enum item_type itype;
- char *tok, *type_str, *str;
-
- type=find_attribute(state, "type", 1);
- if (! type)
- return 0;
- for (i = 0 ; i < 3 ; i++) {
- sprintf(key,"level%d", i);
- value=find_attribute(state, key, 0);
- if (value)
- level[i]=convert_number(value);
- else
- level[i]=-1;
- }
- type_str=g_strdup(type);
- str=type_str;
- while ((tok=strtok(str, ","))) {
- itype=item_from_name(tok);
- if (itype!=type_none) {
- navigation_set_announce(state->parent->element_attr.u.data, itype, level);
- } else {
- dbg(lvl_error, "Invalid type for announcement: %s\n",tok);
- }
- str=NULL;
- }
- g_free(type_str);
- return 1;
-}
-/**
- * * Define the elements in our config
- * *
- * */
-
-#define NEW(x) (void *(*)(struct attr *, struct attr **))(x)
-#define GET(x) (int (*)(void *, enum attr_type type, struct attr *attr, struct attr_iter *iter))(x)
-#define ITERN(x) (struct attr_iter * (*)(void *))(x)
-#define ITERD(x) (void (*)(struct attr_iter *iter))(x)
-#define SET(x) (int (*)(void *, struct attr *attr))(x)
-#define ADD(x) (int (*)(void *, struct attr *attr))(x)
-#define REMOVE(x) (int (*)(void *, struct attr *attr))(x)
-#define INIT(x) (int (*)(void *))(x)
-#define DESTROY(x) (void (*)(void *))(x)
-
-static struct object_func object_funcs[] = {
- { attr_announcement,NEW(announcement_new), GET(announcement_get_attr), NULL, NULL, SET(announcement_set_attr), ADD(announcement_add_attr) },
- { attr_arrows, NEW(arrows_new)},
- { attr_circle, NEW(circle_new), NULL, NULL, NULL, NULL, ADD(element_add_attr)},
- { attr_coord, NEW(coord_new_from_attrs)},
- { attr_cursor, NEW(cursor_new), NULL, NULL, NULL, NULL, ADD(cursor_add_attr)},
- { attr_debug, NEW(debug_new)},
- { attr_graphics, NEW(graphics_new), GET(graphics_get_attr)},
- { attr_gui, NEW(gui_new), GET(gui_get_attr), NULL, NULL, SET(gui_set_attr), ADD(gui_add_attr)},
- { attr_icon, NEW(icon_new), NULL, NULL, NULL, NULL, ADD(element_add_attr)},
- { attr_image, NEW(image_new)},
- { attr_itemgra, NEW(itemgra_new), NULL, NULL, NULL, NULL, ADD(itemgra_add_attr)},
- { attr_plugins, NEW(plugins_new), NULL, NULL, NULL, NULL, NULL, NULL, INIT(plugins_init)},
- { attr_plugin, NEW(plugin_new)},
- { attr_polygon, NEW(polygon_new), NULL, NULL, NULL, NULL, ADD(element_add_attr)},
- { attr_polyline, NEW(polyline_new), NULL, NULL, NULL, NULL, ADD(element_add_attr)},
- { attr_text, NEW(text_new)},
-};
-
-struct object_func *
-object_func_lookup(enum attr_type type)
-{
- int i;
- switch (type) {
- case attr_config:
- return &config_func;
- case attr_layer:
- return &layer_func;
- case attr_layout:
- return &layout_func;
- case attr_log:
- return &log_func;
- case attr_map:
- return &map_func;
- case attr_maps:
- return &maps_func;
- case attr_mapset:
- return &mapset_func;
- case attr_navigation:
- return &navigation_func;
- case attr_navit:
- return &navit_func;
- case attr_profile_option:
- return &profile_option_func;
- case attr_roadprofile:
- return &roadprofile_func;
- case attr_route:
- return &route_func;
- case attr_script:
- return &script_func;
- case attr_osd:
- return &osd_func;
- case attr_trackingo:
- return &tracking_func;
- case attr_speech:
- return &speech_func;
- case attr_vehicle:
- return &vehicle_func;
- case attr_vehicleprofile:
- return &vehicleprofile_func;
- default:
- for (i = 0 ; i < sizeof(object_funcs)/sizeof(struct object_func); i++) {
- if (object_funcs[i].type == type)
- return &object_funcs[i];
- }
- return NULL;
- }
-}
-
-struct element_func {
- char *name;
- char *parent;
- int (*func)(struct xmlstate *state);
- enum attr_type type;
-};
-struct element_func *elements;
-
-static char *attr_fixme_itemgra[]={
- "type","item_types",
- NULL,NULL,
-};
-
-static char *attr_fixme_text[]={
- "label_size","text_size",
- NULL,NULL,
-};
-
-static char *attr_fixme_circle[]={
- "label_size","text_size",
- NULL,NULL,
-};
-
-static struct attr_fixme attr_fixmes[]={
- {"item",attr_fixme_itemgra},
- {"itemgra",attr_fixme_itemgra},
- {"text",attr_fixme_text},
- {"label",attr_fixme_text},
- {"circle",attr_fixme_circle},
- {NULL,NULL},
-};
-
-
-static char *element_fixmes[]={
- "item","itemgra",
- "label","text",
- NULL,NULL,
-};
-
-static void initStatic(void) {
- elements=g_new0(struct element_func,44); //43 is a number of elements + ending NULL element
-
- elements[0].name="config";
- elements[0].parent=NULL;
- elements[0].func=NULL;
- elements[0].type=attr_config;
-
- elements[1].name="announce";
- elements[1].parent="navigation";
- elements[1].func=xmlconfig_announce;
-
- elements[2].name="speech";
- elements[2].parent="navit";
- elements[2].func=NULL;
- elements[2].type=attr_speech;
-
- elements[3].name="tracking";
- elements[3].parent="navit";
- elements[3].func=NULL;
- elements[3].type=attr_trackingo;
-
- elements[4].name="route";
- elements[4].parent="navit";
- elements[4].func=NULL;
- elements[4].type=attr_route;
-
- elements[5].name="mapset";
- elements[5].parent="navit";
- elements[5].func=NULL;
- elements[5].type=attr_mapset;
-
- elements[6].name="map";
- elements[6].parent="mapset";
- elements[6].func=NULL;
- elements[6].type=attr_map;
-
- elements[7].name="debug";
- elements[7].parent="config";
- elements[7].func=NULL;
- elements[7].type=attr_debug;
-
- elements[8].name="osd";
- elements[8].parent="navit";
- elements[8].func=NULL;
- elements[8].type=attr_osd;
-
- elements[9].name="navigation";
- elements[9].parent="navit";
- elements[9].func=NULL;
- elements[9].type=attr_navigation;
-
- elements[10].name="navit";
- elements[10].parent="config";
- elements[10].func=NULL;
- elements[10].type=attr_navit;
-
- elements[11].name="graphics";
- elements[11].parent="navit";
- elements[11].func=NULL;
- elements[11].type=attr_graphics;
-
- elements[12].name="gui";
- elements[12].parent="navit";
- elements[12].func=NULL;
- elements[12].type=attr_gui;
-
- elements[13].name="layout";
- elements[13].parent="navit";
- elements[13].func=NULL;
- elements[13].type=attr_layout;
-
- elements[14].name="cursor";
- elements[14].parent="layout";
- elements[14].func=NULL;
- elements[14].type=attr_cursor;
-
- elements[15].name="layer";
- elements[15].parent="layout";
- elements[15].func=NULL;
- elements[15].type=attr_layer;
-
- elements[16].name="itemgra";
- elements[16].parent="layer";
- elements[16].func=NULL;
- elements[16].type=attr_itemgra;
-
- elements[17].name="circle";
- elements[17].parent="itemgra";
- elements[17].func=NULL;
- elements[17].type=attr_circle;
-
- elements[18].name="coord";
- elements[18].parent="circle";
- elements[18].func=NULL;
- elements[18].type=attr_coord;
-
- elements[19].name="icon";
- elements[19].parent="itemgra";
- elements[19].func=NULL;
- elements[19].type=attr_icon;
-
- elements[20].name="coord";
- elements[20].parent="icon";
- elements[20].func=NULL;
- elements[20].type=attr_coord;
-
- elements[21].name="image";
- elements[21].parent="itemgra";
- elements[21].func=NULL;
- elements[21].type=attr_image;
-
- elements[22].name="text";
- elements[22].parent="itemgra";
- elements[22].func=NULL;
- elements[22].type=attr_text;
-
- elements[23].name="polygon";
- elements[23].parent="itemgra";
- elements[23].func=NULL;
- elements[23].type=attr_polygon;
-
- elements[24].name="coord";
- elements[24].parent="polygon";
- elements[24].func=NULL;
- elements[24].type=attr_coord;
-
- elements[25].name="polyline";
- elements[25].parent="itemgra";
- elements[25].func=NULL;
- elements[25].type=attr_polyline;
-
- elements[26].name="coord";
- elements[26].parent="polyline";
- elements[26].func=NULL;
- elements[26].type=attr_coord;
-
- elements[27].name="arrows";
- elements[27].parent="itemgra";
- elements[27].func=NULL;
- elements[27].type=attr_arrows;
-
- elements[28].name="vehicle";
- elements[28].parent="navit";
- elements[28].func=NULL;
- elements[28].type=attr_vehicle;
-
- elements[29].name="vehicleprofile";
- elements[29].parent="navit";
- elements[29].func=NULL;
- elements[29].type=attr_vehicleprofile;
-
- elements[30].name="roadprofile";
- elements[30].parent="vehicleprofile";
- elements[30].func=NULL;
- elements[30].type=attr_roadprofile;
-
- elements[31].name="announcement";
- elements[31].parent="roadprofile";
- elements[31].func=NULL;
- elements[31].type=attr_announcement;
-
- elements[32].name="cursor";
- elements[32].parent="vehicle";
- elements[32].func=NULL;
- elements[32].type=attr_cursor;
-
- elements[33].name="itemgra";
- elements[33].parent="cursor";
- elements[33].func=NULL;
- elements[33].type=attr_itemgra;
-
- elements[34].name="log";
- elements[34].parent="vehicle";
- elements[34].func=NULL;
- elements[34].type=attr_log;
-
- elements[35].name="log";
- elements[35].parent="navit";
- elements[35].func=NULL;
- elements[35].type=attr_log;
-
- elements[36].name="plugins";
- elements[36].parent="config";
- elements[36].func=NULL;
- elements[36].type=attr_plugins;
-
- elements[37].name="plugin";
- elements[37].parent="plugins";
- elements[37].func=NULL;
- elements[37].type=attr_plugin;
-
- elements[38].name="maps";
- elements[38].parent="mapset";
- elements[38].func=NULL;
- elements[38].type=attr_maps;
-
- elements[39].name="layer";
- elements[39].parent="navit";
- elements[39].func=NULL;
- elements[39].type=attr_layer;
-
- elements[40].name="profile_option";
- elements[40].parent="vehicleprofile";
- elements[40].func=NULL;
- elements[40].type=attr_profile_option;
-
- elements[41].name="roadprofile";
- elements[41].parent="profile_option";
- elements[41].func=NULL;
- elements[41].type=attr_roadprofile;
-
- elements[42].name="script";
- elements[42].parent="navit";
- elements[42].func=NULL;
- elements[42].type=attr_script;
-}
-
-/**
- * * Parse the opening tag of a config element
- * *
- * * @param context document parse context
- * * @param element_name the current tag name
- * * @param attribute_names ptr to return the set of attribute names
- * * @param attribute_values ptr return the set of attribute values
- * * @param user_data ptr to xmlstate structure
- * * @param error ptr return error context
- * * @returns nothing
- * */
-
-static void
-start_element(xml_context *context,
- const gchar *element_name,
- const gchar **attribute_names,
- const gchar **attribute_values,
- gpointer user_data,
- xmlerror **error)
-{
- struct xmlstate *new=NULL, **parent = user_data;
- struct element_func *e=elements,*func=NULL;
- struct attr_fixme *attr_fixme=attr_fixmes;
- char **element_fixme=element_fixmes;
- int found=0;
- static int fixme_count;
- const char *parent_name=NULL;
- char *s,*sep="",*possible_parents;
- struct attr *parent_attr;
- dbg(lvl_info,"name='%s' parent='%s'\n", element_name, *parent ? (*parent)->element:NULL);
-
- if (!strcmp(element_name,"xml"))
- return;
- /* determine if we have to fix any attributes */
- while (attr_fixme[0].element) {
- if (!strcmp(element_name,attr_fixme[0].element))
- break;
- attr_fixme++;
- }
- if (!attr_fixme[0].element)
- attr_fixme=NULL;
-
- /* tell user to fix deprecated element names */
- while (element_fixme[0]) {
- if (!strcmp(element_name,element_fixme[0])) {
- element_name=element_fixme[1];
- if (fixme_count++ < 10)
- dbg(lvl_error,"Please change <%s /> to <%s /> in config file\n", element_fixme[0], element_fixme[1]);
- }
- element_fixme+=2;
- }
- /* validate that this element is valid
- * and that the element has a valid parent */
- possible_parents=g_strdup("");
- if (*parent)
- parent_name=(*parent)->element;
- while (e->name) {
- if (!g_ascii_strcasecmp(element_name, e->name)) {
- found=1;
- s=g_strconcat(possible_parents,sep,e->parent,NULL);
- g_free(possible_parents);
- possible_parents=s;
- sep=",";
- if ((parent_name && e->parent && !g_ascii_strcasecmp(parent_name, e->parent)) ||
- (!parent_name && !e->parent))
- func=e;
- }
- e++;
- }
- if (! found) {
- g_set_error(error,G_MARKUP_ERROR,G_MARKUP_ERROR_UNKNOWN_ELEMENT,
- "Unknown element '%s'", element_name);
- g_free(possible_parents);
- return;
- }
- if (! func) {
- g_set_error(error,G_MARKUP_ERROR,G_MARKUP_ERROR_INVALID_CONTENT,
- "Element '%s' within unexpected context '%s'. Expected '%s'%s",
- element_name, parent_name, possible_parents, ! strcmp(possible_parents, "config") ? "\nPlease add <config> </config> tags at the beginning/end of your navit.xml": "");
- g_free(possible_parents);
- return;
- }
- g_free(possible_parents);
-
- new=g_new(struct xmlstate, 1);
- new->attribute_names=attribute_names;
- new->attribute_values=attribute_values;
- new->parent=*parent;
- new->element_attr.u.data=NULL;
- new->element=element_name;
- new->error=error;
- new->func=func;
- new->object_func=NULL;
- *parent=new;
- if (!find_boolean(new, "enabled", 1, 0))
- return;
- if (new->parent && !new->parent->element_attr.u.data)
- return;
- if (func->func) {
- if (!func->func(new)) {
- return;
- }
- } else {
- struct attr **attrs;
-
- new->object_func=object_func_lookup(func->type);
- if (! new->object_func)
- return;
- attrs=convert_to_attrs(new,attr_fixme);
- new->element_attr.type=attr_none;
- if (!new->parent || new->parent->element_attr.type == attr_none)
- parent_attr=NULL;
- else
- parent_attr=&new->parent->element_attr;
- new->element_attr.u.data = new->object_func->create(parent_attr, attrs);
- if (! new->element_attr.u.data)
- return;
- new->element_attr.type=attr_from_name(element_name);
- if (new->element_attr.type == attr_none)
- dbg(lvl_error,"failed to create object of type '%s'\n", element_name);
- if (new->element_attr.type == attr_tracking)
- new->element_attr.type=attr_trackingo;
- if (new->parent && new->parent->object_func && new->parent->object_func->add_attr)
- new->parent->object_func->add_attr(new->parent->element_attr.u.data, &new->element_attr);
- }
- return;
-}
-
-
-/* Called for close tags </foo> */
-static void
-end_element (xml_context *context,
- const gchar *element_name,
- gpointer user_data,
- xmlerror **error)
-{
- struct xmlstate *curr, **state = user_data;
-
- if (!strcmp(element_name,"xml"))
- return;
- dbg(lvl_info,"name='%s'\n", element_name);
- curr=*state;
- if (curr->object_func && curr->object_func->init)
- curr->object_func->init(curr->element_attr.u.data);
- if (curr->object_func && curr->object_func->unref)
- curr->object_func->unref(curr->element_attr.u.data);
- *state=curr->parent;
- g_free(curr);
-}
-
-static gboolean parse_file(struct xmldocument *document, xmlerror **error);
-
-static void
-xinclude(xml_context *context, const gchar **attribute_names, const gchar **attribute_values, struct xmldocument *doc_old, xmlerror **error)
-{
- struct xmldocument doc_new;
- struct file_wordexp *we;
- int i,count;
- const char *href=NULL;
- char **we_files;
-
- if (doc_old->level >= 16) {
- g_set_error(error,G_MARKUP_ERROR,G_MARKUP_ERROR_INVALID_CONTENT, "xi:include recursion too deep");
- return;
- }
- memset(&doc_new, 0, sizeof(doc_new));
- i=0;
- while (attribute_names[i]) {
- if(!g_ascii_strcasecmp("href", attribute_names[i])) {
- if (!href)
- href=attribute_values[i];
- else {
- g_set_error(error,G_MARKUP_ERROR,G_MARKUP_ERROR_INVALID_CONTENT, "xi:include has more than one href");
- return;
- }
- } else if(!g_ascii_strcasecmp("xpointer", attribute_names[i])) {
- if (!doc_new.xpointer)
- doc_new.xpointer=attribute_values[i];
- else {
- g_set_error(error,G_MARKUP_ERROR,G_MARKUP_ERROR_INVALID_CONTENT, "xi:include has more than one xpointer");
- return;
- }
- } else {
- g_set_error(error,G_MARKUP_ERROR,G_MARKUP_ERROR_INVALID_CONTENT, "xi:include has invalid attributes");
- return;
- }
- i++;
- }
- if (!doc_new.xpointer && !href) {
- g_set_error(error,G_MARKUP_ERROR,G_MARKUP_ERROR_INVALID_CONTENT, "xi:include has neither href nor xpointer");
- return;
- }
- doc_new.level=doc_old->level+1;
- doc_new.user_data=doc_old->user_data;
- if (! href) {
- dbg(lvl_debug,"no href, using '%s'\n", doc_old->href);
- doc_new.href=doc_old->href;
- if (file_exists(doc_new.href)) {
- parse_file(&doc_new, error);
- } else {
- dbg(lvl_error,"Unable to include %s\n",doc_new.href);
- }
- } else {
- dbg(lvl_debug,"expanding '%s'\n", href);
- we=file_wordexp_new(href);
- we_files=file_wordexp_get_array(we);
- count=file_wordexp_get_count(we);
- dbg(lvl_debug,"%d results\n", count);
- if (file_exists(we_files[0])) {
- for (i = 0 ; i < count ; i++) {
- dbg(lvl_debug,"result[%d]='%s'\n", i, we_files[i]);
- doc_new.href=we_files[i];
- parse_file(&doc_new, error);
- }
- } else {
- dbg(lvl_error,"Unable to include %s\n",we_files[0]);
- }
- file_wordexp_destroy(we);
-
- }
-
-}
-static int
-strncmp_len(const char *s1, int s1len, const char *s2)
-{
- int ret;
-#if 0
- char c[s1len+1];
- strncpy(c, s1, s1len);
- c[s1len]='\0';
- dbg(lvl_debug,"'%s' vs '%s'\n", c, s2);
-#endif
-
- ret=strncmp(s1, s2, s1len);
- if (ret)
- return ret;
- return strlen(s2)-s1len;
-}
-
-static int
-xpointer_value(const char *test, int len, struct xistate *elem, const char **out, int out_len)
-{
- int i,ret=0;
- if (len <= 0 || out_len <= 0) {
- return 0;
- }
- if (!(strncmp_len(test,len,"name(.)"))) {
- out[0]=elem->element;
- return 1;
- }
- if (test[0] == '@') {
- i=0;
- while (elem->attribute_names[i] && out_len > 0) {
- if (!strncmp_len(test+1,len-1,elem->attribute_names[i])) {
- out[ret++]=elem->attribute_values[i];
- out_len--;
- }
- i++;
- }
- return ret;
- }
- return 0;
-}
-
-static int
-xpointer_test(const char *test, int len, struct xistate *elem)
-{
- int eq,i,count,vlen,cond_req=1,cond=0;
- char c;
- const char *tmp[16];
-#if 0
- char test2[len+1];
-
- strncpy(test2, test, len);
- test2[len]='\0';
- dbg(lvl_debug,"%s\n", test2);
-#endif
- if (!len)
- return 0;
- c=test[len-1];
- if (c != '\'' && c != '"')
- return 0;
- eq=strcspn(test, "=");
- if (eq >= len || test[eq+1] != c)
- return 0;
- vlen=eq;
- if (eq > 0 && test[eq-1] == '!') {
- cond_req=0;
- vlen--;
- }
- count=xpointer_value(test,vlen,elem,tmp,16);
- for (i = 0 ; i < count ; i++) {
- if (!strncmp_len(test+eq+2,len-eq-3, tmp[i]))
- cond=1;
- }
- if (cond == cond_req)
- return 1;
- return 0;
-}
-
-static int
-xpointer_element_match(const char *xpointer, int len, struct xistate *elem)
-{
- int start,tlen;
- start=strcspn(xpointer, "[");
- if (start > len)
- start=len;
- if (strncmp_len(xpointer, start, elem->element) && (start != 1 || xpointer[0] != '*'))
- return 0;
- if (start == len)
- return 1;
- if (xpointer[len-1] != ']')
- return 0;
- for (;;) {
- start++;
- tlen=strcspn(xpointer+start,"]");
- if (start + tlen > len)
- return 1;
- if (!xpointer_test(xpointer+start, tlen, elem))
- return 0;
- start+=tlen+1;
- }
-}
-
-static int
-xpointer_xpointer_match(const char *xpointer, int len, struct xistate *first)
-{
- const char *c;
- int s;
- dbg(lvl_info,"%s\n", xpointer);
- if (xpointer[0] != '/')
- return 0;
- c=xpointer+1;
- len--;
- do {
- s=strcspn(c, "/");
- if (s > len)
- s=len;
- if (! xpointer_element_match(c, s, first))
- return 0;
- first=first->child;
- c+=s+1;
- len-=s+1;
- } while (len > 0 && first);
- if (len > 0)
- return 0;
- return 1;
-}
-
-static int
-xpointer_match(const char *xpointer, struct xistate *first)
-{
- char *prefix="xpointer(";
- int len;
- if (! xpointer)
- return 1;
- len=strlen(xpointer);
- if (strncmp(xpointer,prefix,strlen(prefix)))
- return 0;
- if (xpointer[len-1] != ')')
- return 0;
- return xpointer_xpointer_match(xpointer+strlen(prefix), len-strlen(prefix)-1, first);
-
-}
-
-static void
-xi_start_element(xml_context *context,
- const gchar *element_name,
- const gchar **attribute_names,
- const gchar **attribute_values,
- gpointer user_data,
- xmlerror **error)
-{
- struct xmldocument *doc=user_data;
- struct xistate *xistate;
- int i,count=0;
- while (attribute_names[count++*XML_ATTR_DISTANCE]);
- xistate=g_new0(struct xistate, 1);
- xistate->element=element_name;
- xistate->attribute_names=g_new0(const char *, count);
- xistate->attribute_values=g_new0(const char *, count);
- for (i = 0 ; i < count ; i++) {
- if (attribute_names[i*XML_ATTR_DISTANCE] && attribute_values[i*XML_ATTR_DISTANCE]) {
- xistate->attribute_names[i]=g_strdup(attribute_names[i*XML_ATTR_DISTANCE]);
- xistate->attribute_values[i]=g_strdup(attribute_values[i*XML_ATTR_DISTANCE]);
- }
- }
- xistate->parent=doc->last;
-
- if (doc->last) {
- doc->last->child=xistate;
- } else
- doc->first=xistate;
- doc->last=xistate;
- if (doc->active > 0 || xpointer_match(doc->xpointer, doc->first)) {
- if(!g_ascii_strcasecmp("xi:include", element_name)) {
- xinclude(context, xistate->attribute_names, xistate->attribute_values, doc, error);
- return;
- }
- start_element(context, element_name, xistate->attribute_names, xistate->attribute_values, doc->user_data, error);
- doc->active++;
- }
-
-}
-/**
- * * Reached closing tag of a config element
- * *
- * * @param context
- * * @param element name
- * * @param user_data ptr to xmldocument
- * * @param error ptr to struct for error information
- * * @returns nothing
- * */
-
-static void
-xi_end_element (xml_context *context,
- const gchar *element_name,
- gpointer user_data,
- xmlerror **error)
-{
- struct xmldocument *doc=user_data;
- struct xistate *xistate=doc->last;
- int i=0;
- doc->last=doc->last->parent;
- if (! doc->last)
- doc->first=NULL;
- else
- doc->last->child=NULL;
- if (doc->active > 0) {
- if(!g_ascii_strcasecmp("xi:include", element_name)) {
- return;
- }
- end_element(context, element_name, doc->user_data, error);
- doc->active--;
- }
- while (xistate->attribute_names[i]) {
- g_free((char *)(xistate->attribute_names[i]));
- g_free((char *)(xistate->attribute_values[i]));
- i++;
- }
- g_free(xistate->attribute_names);
- g_free(xistate->attribute_values);
- g_free(xistate);
-}
-
-/* Called for character data */
-/* text is not nul-terminated */
-static void
-xi_text (xml_context *context,
- const gchar *text,
- gsize text_len,
- gpointer user_data,
- xmlerror **error)
-{
- struct xmldocument *doc=user_data;
- int i;
- if (doc->active) {
- for (i = 0 ; i < text_len ; i++) {
- if (!isspace(text[i])) {
- struct xmldocument *doc=user_data;
- struct xmlstate *curr, **state = doc->user_data;
- struct attr attr;
- char *text_dup = malloc(text_len+1);
-
- curr=*state;
- strncpy(text_dup, text, text_len);
- text_dup[text_len]='\0';
- attr.type=attr_xml_text;
- attr.u.str=text_dup;
- if (curr->object_func && curr->object_func->add_attr && curr->element_attr.u.data)
- curr->object_func->add_attr(curr->element_attr.u.data, &attr);
- free(text_dup);
- return;
- }
- }
- }
-}
-
-#if USE_EZXML
-static void
-parse_node_text(ezxml_t node, void *data, void (*start)(void *, const char *, const char **, const char **, void *, void *),
- void (*end)(void *, const char *, void *, void *),
- void (*text)(void *, const char *, int, void *, void *))
-{
- while (node) {
- if (start)
- start(NULL, node->name, (const char **)node->attr, (const char **)(node->attr+1), data, NULL);
- if (text && node->txt)
- text(NULL, node->txt, strlen(node->txt), data, NULL);
- if (node->child)
- parse_node_text(node->child, data, start, end, text);
- if (end)
- end(NULL, node->name, data, NULL);
- node=node->ordered;
- }
-}
-#endif
-
-void
-xml_parse_text(const char *document, void *data,
- void (*start)(xml_context *, const char *, const char **, const char **, void *, GError **),
- void (*end)(xml_context *, const char *, void *, GError **),
- void (*text)(xml_context *, const char *, gsize, void *, GError **)) {
-#if !USE_EZXML
- GMarkupParser parser = { start, end, text, NULL, NULL};
- xml_context *context;
- gboolean result;
-
- context = g_markup_parse_context_new (&parser, 0, data, NULL);
- if (!document){
- dbg(lvl_error, "FATAL: No XML data supplied (looks like incorrect configuration for internal GUI).\n");
- exit(1);
- }
- result = g_markup_parse_context_parse (context, document, strlen(document), NULL);
- if (!result){
- dbg(lvl_error, "FATAL: Cannot parse data as XML: '%s'\n", document);
- exit(1);
- }
- g_markup_parse_context_free (context);
-#else
- char *str=g_strdup(document);
- ezxml_t root = ezxml_parse_str(str, strlen(str));
- if (!root)
- return;
- parse_node_text(root, data, start, end, text);
- ezxml_free(root);
- g_free(str);
-#endif
-}
-
-
-#if !USE_EZXML
-
-static const GMarkupParser parser = {
- xi_start_element,
- xi_end_element,
- xi_text,
- NULL,
- NULL
-};
-/**
- * * Parse the contents of the configuration file
- * *
- * * @param document struct holding info about the config file
- * * @param error info on any errors detected
- * * @returns boolean TRUE or FALSE
- * */
-
-static gboolean
-parse_file(struct xmldocument *document, xmlerror **error)
-{
- xml_context *context;
- gchar *contents, *message;
- gsize len;
- gint line, chr;
- gboolean result;
- char *xmldir,*newxmldir,*xmlfile,*newxmlfile,*sep;
-
- dbg(lvl_debug,"enter filename='%s'\n", document->href);
-#if GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 12
-#define G_MARKUP_TREAT_CDATA_AS_TEXT 0
-#endif
- context = g_markup_parse_context_new (&parser, G_MARKUP_TREAT_CDATA_AS_TEXT, document, NULL);
-
- if (!g_file_get_contents (document->href, &contents, &len, error)) {
- g_markup_parse_context_free (context);
- return FALSE;
- }
- xmldir=getenv("XMLDIR");
- xmlfile=getenv("XMLFILE");
- newxmlfile=g_strdup(document->href);
- newxmldir=g_strdup(document->href);
- if ((sep=strrchr(newxmldir,'/')))
- *sep='\0';
- else {
- g_free(newxmldir);
- newxmldir=g_strdup(".");
- }
- setenv("XMLDIR",newxmldir,1);
- setenv("XMLFILE",newxmlfile,1);
- document->active=document->xpointer ? 0:1;
- document->first=NULL;
- document->last=NULL;
- result = g_markup_parse_context_parse (context, contents, len, error);
- if (!result && error && *error) {
- g_markup_parse_context_get_position(context, &line, &chr);
- message=g_strdup_printf("%s at line %d, char %d\n", (*error)->message, line, chr);
- g_free((*error)->message);
- (*error)->message=message;
- }
- g_markup_parse_context_free (context);
- g_free (contents);
- if (xmldir)
- setenv("XMLDIR",xmldir,1);
- else
- unsetenv("XMLDIR");
- if (xmlfile)
- setenv("XMLFILE",xmlfile,1);
- else
- unsetenv("XMLFILE");
- g_free(newxmldir);
- g_free(newxmlfile);
- dbg(lvl_debug,"return %d\n", result);
-
- return result;
-}
-#else
-static void
-parse_node(struct xmldocument *document, ezxml_t node)
-{
- while (node) {
- xi_start_element(NULL,node->name, node->attr, node->attr+1, document, NULL);
- if (node->txt)
- xi_text(NULL,node->txt,strlen(node->txt),document,NULL);
- if (node->child)
- parse_node(document, node->child);
- xi_end_element (NULL,node->name,document,NULL);
- node=node->ordered;
- }
-}
-
-static gboolean
-parse_file(struct xmldocument *document, xmlerror **error)
-{
- FILE *f;
- ezxml_t root;
-
- f=fopen(document->href,"rb");
- if (!f)
- return FALSE;
- root = ezxml_parse_fp(f);
- fclose(f);
- if (!root)
- return FALSE;
- document->active=document->xpointer ? 0:1;
- document->first=NULL;
- document->last=NULL;
-
- parse_node(document, root);
-
- return TRUE;
-}
-#endif
-
-/**
- * * Load and parse the master config file
- * *
- * * @param filename FQFN of the file
- * * @param error ptr to error details, if any
- * * @returns boolean TRUE or FALSE (if error detected)
- * */
-
-gboolean config_load(const char *filename, xmlerror **error)
-{
- struct xmldocument document;
- struct xmlstate *curr=NULL;
- gboolean result;
-
- attr_create_hash();
- item_create_hash();
- initStatic();
-
- dbg(lvl_debug,"enter filename='%s'\n", filename);
- memset(&document, 0, sizeof(document));
- document.href=filename;
- document.user_data=&curr;
- result=parse_file(&document, error);
- if (result && curr) {
- g_set_error(error,G_MARKUP_ERROR,G_MARKUP_ERROR_PARSE, "element '%s' not closed", curr->element);
- result=FALSE;
- }
- attr_destroy_hash();
- item_destroy_hash();
- dbg(lvl_debug,"return %d\n", result);
- return result;
-}
-
-int
-navit_object_set_methods(void *in, int in_size, void *out, int out_size)
-{
- int ret,size=out_size;
- if (out_size > in_size) {
- ret=-1;
- size=in_size;
- memset((char *)out+in_size, 0, out_size-in_size);
- } else if (in_size == out_size)
- ret=0;
- else
- ret=1;
- memcpy(out, in, size);
- return ret;
-}
-
-struct navit_object *
-navit_object_new(struct attr **attrs, struct object_func *func, int size)
-{
- struct navit_object *ret=g_malloc0(size);
- ret->func=func;
- ret->attrs=attr_list_dup(attrs);
- navit_object_ref(ret);
- return ret;
-}
-
-struct navit_object *
-navit_object_ref(struct navit_object *obj)
-{
- obj->refcount++;
- dbg(lvl_debug,"refcount %s %p %d\n",attr_to_name(obj->func->type),obj,obj->refcount);
- return obj;
-}
-
-void
-navit_object_unref(struct navit_object *obj)
-{
- if (obj) {
- obj->refcount--;
- dbg(lvl_debug,"refcount %s %p %d\n",attr_to_name(obj->func->type),obj,obj->refcount);
- if (obj->refcount <= 0 && obj->func && obj->func->destroy)
- obj->func->destroy(obj);
- }
-}
-
-struct attr_iter {
- void *last;
-};
-
-struct attr_iter *
-navit_object_attr_iter_new(void)
-{
- return g_new0(struct attr_iter, 1);
-}
-
-void
-navit_object_attr_iter_destroy(struct attr_iter *iter)
-{
- g_free(iter);
-}
-
-/**
- * @brief Generic get function
- *
- * This function searches an attribute list for an attribute of a given type and stores it in the {@code attr}
- * parameter. Internally it calls
- * {@link attr_generic_get_attr(struct attr **, struct attr **, enum attr_type, struct attr *, struct attr_iter *)}
- * to retrieve the attribute; see its documentation for details.
- * <p>
- * Searching for attr_any or attr_any_xml is supported.
- * <p>
- * An iterator can be specified to get multiple attributes of the same type:
- * The first call will return the first match; each subsequent call
- * with the same iterator will return the next match. If no more matching
- * attributes are found in either of them, false is returned.
- *
- * @param obj The object to return an attribute for. This can be any Navit object type, but the parameter should
- * be cast to {@code struct navit_object *} to avoid compiler warnings.
- * @param type The attribute type to search for. Searching for {@code attr_any} or {@code attr_any_xml} is
- * possible.
- * @param attr Points to a {@code struct attr} which will receive the attribute
- * @param iter An iterator to receive multiple attributes of the same type with subsequent calls. If {@code NULL},
- * the first matching attribute will be retrieved.
- *
- * @return True if a matching attribute was found, false if not.
- */
-int
-navit_object_get_attr(struct navit_object *obj, enum attr_type type, struct attr *attr, struct attr_iter *iter)
-{
- return attr_generic_get_attr(obj->attrs, NULL, type, attr, iter);
-}
-
-void
-navit_object_callbacks(struct navit_object *obj, struct attr *attr)
-{
- if (obj->attrs && obj->attrs[0] && obj->attrs[0]->type == attr_callback_list)
- callback_list_call_attr_2(obj->attrs[0]->u.callback_list, attr->type, attr->u.data, 0);
-}
-
-int
-navit_object_set_attr(struct navit_object *obj, struct attr *attr)
-{
- dbg(lvl_debug, "enter, obj=%p, attr=%p (%s)\n", obj, attr, attr_to_name(attr->type));
- obj->attrs=attr_generic_set_attr(obj->attrs, attr);
- navit_object_callbacks(obj, attr);
- return 1;
-}
-
-int
-navit_object_add_attr(struct navit_object *obj, struct attr *attr)
-{
- dbg(lvl_debug, "enter, obj=%p, attr=%p (%s)\n", obj, attr, attr_to_name(attr->type));
- if (attr->type == attr_callback) {
- struct callback_list *cbl;
- if (obj->attrs && obj->attrs[0] && obj->attrs[0]->type == attr_callback_list)
- cbl=obj->attrs[0]->u.callback_list;
- else {
- struct attr attr;
- cbl=callback_list_new();
- attr.type=attr_callback_list;
- attr.u.callback_list=cbl;
- obj->attrs=attr_generic_prepend_attr(obj->attrs, &attr);
- }
- callback_list_add(cbl, attr->u.callback);
- return 1;
- }
- obj->attrs=attr_generic_add_attr(obj->attrs, attr);
- if (obj->attrs && obj->attrs[0] && obj->attrs[0]->type == attr_callback_list)
- callback_list_call_attr_2(obj->attrs[0]->u.callback_list, attr->type, attr->u.data, 1);
- return 1;
-}
-
-int
-navit_object_remove_attr(struct navit_object *obj, struct attr *attr)
-{
- if (attr->type == attr_callback) {
- if (obj->attrs && obj->attrs[0] && obj->attrs[0]->type == attr_callback_list) {
- callback_list_remove(obj->attrs[0]->u.callback_list, attr->u.callback);
- return 1;
- } else
- return 0;
- }
- obj->attrs=attr_generic_remove_attr(obj->attrs, attr);
- if (obj->attrs && obj->attrs[0] && obj->attrs[0]->type == attr_callback_list)
- callback_list_call_attr_2(obj->attrs[0]->u.callback_list, attr->type, attr->u.data, -1);
- return 1;
-}
-
-void
-navit_object_destroy(struct navit_object *obj)
-{
- attr_list_free(obj->attrs);
- g_free(obj);
-}
diff --git a/navit/xmlconfig.h b/navit/xmlconfig.h
deleted file mode 100644
index 2a2600473..000000000
--- a/navit/xmlconfig.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef NAVIT_XMLCONFIG_H
-#define NAVIT_XMLCONFIG_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "config.h"
-
-#ifndef USE_EZXML
-#ifdef HAVE_GLIB
-#define USE_EZXML 0
-#else
-#define USE_EZXML 1
-#endif
-#endif
-
-#if !USE_EZXML
-#define XML_ATTR_DISTANCE 1
-typedef GMarkupParseContext xml_context;
-#else
-#include "ezxml.h"
-#define XML_ATTR_DISTANCE 2
-#undef G_MARKUP_ERROR
-#undef G_MARKUP_ERROR_INVALID_CONTENT
-#undef G_MARKUP_ERROR_PARSE
-#undef G_MARKUP_ERROR_UNKNOWN_ELEMENT
-#define G_MARKUP_ERROR 0
-#define G_MARKUP_ERROR_INVALID_CONTENT 0
-#define G_MARKUP_ERROR_PARSE 0
-#define G_MARKUP_ERROR_UNKNOWN_ELEMENT 0
-typedef void * xml_context;
-#endif
-
-typedef void *(*object_func_new)(struct attr *parent, struct attr **attrs);
-typedef int (*object_func_get_attr)(void *, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-typedef struct attr_iter *(*object_func_iter_new)(void *);
-typedef void (*object_func_iter_destroy)(struct attr_iter *);
-typedef int (*object_func_set_attr)(void *, struct attr *attr);
-typedef int (*object_func_add_attr)(void *, struct attr *attr);
-typedef int (*object_func_remove_attr)(void *, struct attr *attr);
-typedef int (*object_func_init)(void *);
-typedef void (*object_func_destroy)(void *);
-typedef void *(*object_func_dup)(void *);
-typedef void *(*object_func_ref)(void *);
-typedef void *(*object_func_unref)(void *);
-
-
-struct object_func {
- enum attr_type type;
- void *(*create)(struct attr *parent, struct attr **attrs);
- int (*get_attr)(void *, enum attr_type type, struct attr *attr, struct attr_iter *iter);
- struct attr_iter *(*iter_new)(void *);
- void (*iter_destroy)(struct attr_iter *);
- int (*set_attr)(void *, struct attr *attr);
- int (*add_attr)(void *, struct attr *attr);
- int (*remove_attr)(void *, struct attr *attr);
- int (*init)(void *);
- void (*destroy)(void *);
- void *(*dup)(void *);
- void *(*ref)(void *);
- void *(*unref)(void *);
-};
-
-extern struct object_func map_func, mapset_func, navit_func, osd_func, tracking_func, vehicle_func, maps_func, layout_func, roadprofile_func, vehicleprofile_func, layer_func, config_func, profile_option_func, script_func, log_func, speech_func, navigation_func, route_func;
-
-#define HAS_OBJECT_FUNC(x) ((x) == attr_map || (x) == attr_mapset || (x) == attr_navit || (x) == attr_osd || (x) == attr_trackingo || (x) == attr_vehicle || (x) == attr_maps || (x) == attr_layout || (x) == attr_roadprofile || (x) == attr_vehicleprofile || (x) == attr_layer || (x) == attr_config || (x) == attr_profile_option || (x) == attr_script || (x) == attr_log || (x) == attr_speech || (x) == attr_navigation || (x) == attr_route)
-
-#define NAVIT_OBJECT struct object_func *func; int refcount; struct attr **attrs;
-struct navit_object {
- NAVIT_OBJECT
-};
-
-int navit_object_set_methods(void *in, int in_size, void *out, int out_size);
-struct navit_object *navit_object_new(struct attr **attrs, struct object_func *func, int size);
-struct navit_object *navit_object_ref(struct navit_object *obj);
-void navit_object_unref(struct navit_object *obj);
-struct attr_iter * navit_object_attr_iter_new(void);
-void navit_object_attr_iter_destroy(struct attr_iter *iter);
-int navit_object_get_attr(struct navit_object *obj, enum attr_type type, struct attr *attr, struct attr_iter *iter);
-void navit_object_callbacks(struct navit_object *obj, struct attr *attr);
-int navit_object_set_attr(struct navit_object *obj, struct attr *attr);
-int navit_object_add_attr(struct navit_object *obj, struct attr *attr);
-int navit_object_remove_attr(struct navit_object *obj, struct attr *attr);
-void navit_object_destroy(struct navit_object *obj);
-
-typedef GError xmlerror;
-
-/* prototypes */
-enum attr_type;
-struct object_func *object_func_lookup(enum attr_type type);
-void xml_parse_text(const char *document, void *data, void (*start)(xml_context *, const char *, const char **, const char **, void *, GError **), void (*end)(xml_context *, const char *, void *, GError **), void (*text)(xml_context*, const char *, gsize, void *, GError **));
-gboolean config_load(const char *filename, xmlerror **error);
-//static void xinclude(GMarkupParseContext *context, const gchar **attribute_names, const gchar **attribute_values, struct xmldocument *doc_old, xmlerror **error);
-
-/* end of prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/navit/xslt/README-new-files.txt b/navit/xslt/README-new-files.txt
deleted file mode 100644
index 4997ac1c4..000000000
--- a/navit/xslt/README-new-files.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-If you add new XSLT files to this directory (or delete existing files),
-you need to re-run cmake, otherwise changes to these files will not be
-picked up by cmake.
diff --git a/navit/xslt/android.xslt b/navit/xslt/android.xslt
deleted file mode 100644
index 68e731be0..000000000
--- a/navit/xslt/android.xslt
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:param name="OSD_SIZE" select="1.33"/>
- <xsl:param name="ICON_SMALL" select="32"/>
- <xsl:param name="ICON_MEDIUM" select="32"/>
- <xsl:param name="ICON_BIG" select="64"/>
- <xsl:param name="OSD_USE_OVERLAY">yes</xsl:param>
-
- <xsl:output method="xml" doctype-system="navit.dtd" cdata-section-elements="gui"/>
- <xsl:include href="default_plugins.xslt"/>
- <xsl:include href="map_sdcard_navitmap_bin.xslt"/>
- <xsl:include href="osd_minimum.xslt"/>
- <xsl:include href="osd_android.xslt"/>
- <xsl:include href="cursor_scale.xslt"/>
- <xsl:template match="/config/plugins/plugin[1]" priority="100">
- <plugin path="$NAVIT_PREFIX/lib/lib*.so" ondemand="yes"/>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="$NAVIT_PREFIX/lib/libgraphics_android.so" ondemand="no"/>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="$NAVIT_PREFIX/lib/libvehicle_android.so" ondemand="no"/>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="$NAVIT_PREFIX/lib/libspeech_android.so" ondemand="no"/>
- <xsl:text>&#x0A; </xsl:text>
- <xsl:next-match/>
- </xsl:template>
- <xsl:template match="/config/navit/graphics">
- <graphics type="android" />
- </xsl:template>
- <xsl:template match="/config/navit/gui[2]">
- <xsl:copy>
- <xsl:copy-of select="@*[not(name()='font_size')]"/>
- <xsl:attribute name="font_size"><xsl:value-of select="round(185*number($OSD_SIZE))"/></xsl:attribute>
- <xsl:attribute name="icon_xs"><xsl:value-of select="number($ICON_SMALL)"/></xsl:attribute>
- <xsl:attribute name="icon_s"><xsl:value-of select="number($ICON_MEDIUM)"/></xsl:attribute>
- <xsl:attribute name="icon_l"><xsl:value-of select="number($ICON_BIG)"/></xsl:attribute>
- <xsl:attribute name="spacing"><xsl:value-of select="round(2*number($OSD_SIZE))"/></xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/gui[2]/text()">
- <xsl:value-of select="replace(/config/navit/gui[2]/text(),
- '&lt;a name=''Tools''>&lt;text>Tools&lt;/text>','&lt;a name=''Tools''>&lt;text>Tools&lt;/text>
- &lt;img src=''gui_maps'' onclick=''navit.graphics.map_download_dialog();''>&lt;text>Map download&lt;/text>&lt;/img>
- &lt;img src=''gui_rules'' onclick=''navit.graphics.set_map_location();''>&lt;text>Set map location&lt;/text>&lt;/img>
- &lt;img src=''gui_rules'' onclick=''navit.graphics.backup_restore_dialog();''>&lt;text>Backup / Restore&lt;/text>&lt;/img>')"/>
- </xsl:template>
-
- <xsl:template match="/config/navit[1]">
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="zoom">32</xsl:attribute>
- <xsl:attribute name="autozoom_active">1</xsl:attribute>
- <xsl:attribute name="timeout">86400</xsl:attribute>
- <xsl:attribute name="drag_bitmap">1</xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/vehicle[1]">
- <xsl:copy><xsl:copy-of select="@*[not(name()='gpsd_query')]"/>
- <xsl:attribute name="source">android:</xsl:attribute>
- <xsl:attribute name="follow">1</xsl:attribute>
- <xsl:apply-templates/></xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/speech">
- <xsl:copy>
- <xsl:copy-of select="@*[not(name()='data')]"/>
- <xsl:attribute name="type">android</xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/layout/layer/itemgra/child::*">
- <xsl:copy>
- <xsl:copy-of select="@*[not(name()='text_size') and not(name()='width') and not(name()='radius') and not(name()='w') and not(name()='h') and not(name()='x') and not(name()='y') and not(name()='dash')]"/>
- <xsl:if test="@text_size">
- <xsl:attribute name="text_size"><xsl:value-of select="round(number(@text_size)*number($OSD_SIZE))"/></xsl:attribute>
- </xsl:if>
- <xsl:if test="@width">
- <xsl:attribute name="width"><xsl:value-of select="round(number(@width)*number($OSD_SIZE))"/></xsl:attribute>
- </xsl:if>
- <xsl:if test="@radius">
- <xsl:attribute name="radius"><xsl:value-of select="round(number(@radius)*number($OSD_SIZE))"/></xsl:attribute>
- </xsl:if>
- <xsl:if test="name()='icon'">
- <xsl:attribute name="w"><xsl:value-of select="$ICON_SMALL"/></xsl:attribute>
- <xsl:attribute name="h"><xsl:value-of select="$ICON_SMALL"/></xsl:attribute>
- </xsl:if>
- <xsl:if test="@w and not(name()='icon')">
- <xsl:attribute name="w"><xsl:value-of select="round(number(@w)*number($OSD_SIZE))"/></xsl:attribute>
- </xsl:if>
- <xsl:if test="@h and not(name()='icon')">
- <xsl:attribute name="h"><xsl:value-of select="round(number(@h)*number($OSD_SIZE))"/></xsl:attribute>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:if test="@x">
- <xsl:attribute name="x"><xsl:value-of select="round(number(@x)*number($OSD_SIZE))"/></xsl:attribute>
- </xsl:if>
- <xsl:if test="@y">
- <xsl:attribute name="y"><xsl:value-of select="round(number(@y)*number($OSD_SIZE))"/></xsl:attribute>
- </xsl:if>
- <xsl:if test="@offset">
- <xsl:attribute name="offset"><xsl:value-of select="round(number(@offset)*number($OSD_SIZE))"/></xsl:attribute>
- </xsl:if>
- <xsl:if test="@dash">
- <xsl:attribute name="dash">
- <xsl:for-each select="tokenize(@dash,',')">
- <xsl:value-of select="round(number(.)*number($OSD_SIZE))"/>
- <xsl:if test="not(position() eq last())"><xsl:text>,</xsl:text></xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- </xsl:if>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/layout">
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:if test="@name='Car'">
- <xsl:attribute name="active">1</xsl:attribute>
- </xsl:if>
- <xsl:if test="number($OSD_SIZE)>3">
- <xsl:attribute name="order_delta">-2</xsl:attribute>
- </xsl:if>
- <xsl:if test="number($OSD_SIZE)>1.4 and 3>=number($OSD_SIZE)">
- <xsl:attribute name="order_delta">-1</xsl:attribute>
- </xsl:if>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="@*|node()">
- <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/binding_dbus.xslt b/navit/xslt/binding_dbus.xslt
deleted file mode 100644
index 60c0a1af9..000000000
--- a/navit/xslt/binding_dbus.xslt
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/plugins/plugin[contains(@path,'libbinding_dbus.')]">
- <xsl:copy><xsl:copy-of select="@*"/><xsl:attribute name="active">yes</xsl:attribute><xsl:apply-templates/></xsl:copy>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/cursor_scale.xslt b/navit/xslt/cursor_scale.xslt
deleted file mode 100644
index c4eeda322..000000000
--- a/navit/xslt/cursor_scale.xslt
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/navit/layout/cursor">
- <xsl:param name="OLD_W"><xsl:value-of select="@w"/></xsl:param>
- <xsl:param name="OLD_H"><xsl:value-of select="@h"/></xsl:param>
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="w"><xsl:value-of select="round($OLD_W*number($OSD_SIZE))"/></xsl:attribute>
- <xsl:attribute name="h"><xsl:value-of select="round($OLD_H*number($OSD_SIZE))"/></xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/layout/cursor/itemgra/circle">
- <xsl:param name="OLD_RADIUS"><xsl:value-of select="@radius"/></xsl:param>
- <xsl:param name="OLD_WIDTH"><xsl:value-of select="@width"/></xsl:param>
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="radius"><xsl:value-of select="round($OLD_RADIUS*number($OSD_SIZE))"/></xsl:attribute>
- <xsl:attribute name="width"><xsl:value-of select="round($OLD_WIDTH*number($OSD_SIZE))"/></xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/layout/cursor/itemgra/polyline">
- <xsl:param name="OLD_WIDTH"><xsl:value-of select="@width"/></xsl:param>
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="width"><xsl:value-of select="round($OLD_WIDTH*number($OSD_SIZE))"/></xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/layout/cursor/itemgra/*/coord">
- <xsl:param name="OLD_X"><xsl:value-of select="@x"/></xsl:param>
- <xsl:param name="OLD_Y"><xsl:value-of select="@y"/></xsl:param>
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="x"><xsl:value-of select="round(number($OLD_X)*number($OSD_SIZE))"/></xsl:attribute>
- <xsl:attribute name="y"><xsl:value-of select="round(number($OLD_Y)*number($OSD_SIZE))"/></xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/default_plugins.xslt b/navit/xslt/default_plugins.xslt
deleted file mode 100644
index 14e33b859..000000000
--- a/navit/xslt/default_plugins.xslt
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/plugins/plugin[1]" priority="1" >
- <plugin path="$NAVIT_PREFIX/lib/libgui_internal.so" ondemand="no"/>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="$NAVIT_PREFIX/lib/libmap_textfile.so" ondemand="no"/>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="$NAVIT_PREFIX/lib/libmap_binfile.so" ondemand="no"/>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="$NAVIT_PREFIX/lib/libosd_core.so" ondemand="no"/>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="/data/data/org.navitproject.navitfp1/lib/libauto*.so" ondemand="no"/>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="/data/data/org.navitproject.navitfp2/lib/libauto*.so" ondemand="no"/>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="/data/data/org.navitproject.navitfp3/lib/libauto*.so" ondemand="no"/>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="/data/data/org.navitproject.navitfp4/lib/libauto*.so" ondemand="no"/>
- </xsl:template>
- <xsl:template match="/config/plugins/plugin"/>
-</xsl:transform>
diff --git a/navit/xslt/gui_gtk.xslt b/navit/xslt/gui_gtk.xslt
deleted file mode 100644
index 012e1c8d0..000000000
--- a/navit/xslt/gui_gtk.xslt
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:output method="xml" doctype-system="navit.dtd" cdata-section-elements="gui"/>
- <xsl:template match="/config/navit/graphics">
- <graphics type="gtk_drawing_area" />
- </xsl:template>
- <xsl:template match="/config/navit/gui[@type!='gtk']">
- <xsl:copy><xsl:copy-of select="@*"/><xsl:attribute name="enabled">no</xsl:attribute></xsl:copy>
- <xsl:copy><xsl:copy-of select="node()"/></xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/gui[@type='gtk']">
- <xsl:copy><xsl:copy-of select="@*"/><xsl:attribute name="enabled">yes</xsl:attribute></xsl:copy>
- <xsl:copy><xsl:copy-of select="node()"/></xsl:copy>
- </xsl:template>
- <xsl:template match="@*|node()"><xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy></xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/iphone.xslt b/navit/xslt/iphone.xslt
deleted file mode 100644
index 1e9540503..000000000
--- a/navit/xslt/iphone.xslt
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:param name="OSD_SIZE" select="1.33"/>
- <xsl:param name="ICON_SMALL" select="32"/>
- <xsl:param name="ICON_MEDIUM" select="32"/>
- <xsl:param name="ICON_BIG" select="64"/>
- <xsl:param name="OSD_USE_OVERLAY">yes</xsl:param>
-
- <xsl:output method="xml" doctype-system="navit.dtd" cdata-section-elements="gui"/>
- <xsl:include href="osd_minimum.xslt"/>
- <xsl:template match="/config/navit/graphics">
- <graphics type="cocoa" />
- </xsl:template>
- <xsl:template match="/config/navit[1]">
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="timeout">86400</xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/vehicle[1]">
- <xsl:copy><xsl:copy-of select="@*[not(name()='gpsd_query')]"/>
- <xsl:attribute name="source">iphone:</xsl:attribute>
- <xsl:attribute name="follow">1</xsl:attribute>
- <xsl:apply-templates/></xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/speech">
- <xsl:copy>
- <xsl:copy-of select="@*[not(name()='data')]"/>
- <xsl:attribute name="type">iphone</xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/mapset/xi:include">
- <map type="binfile" enabled="yes" data="/var/mobile/navit/navitmap.bin" />
- <map type="binfile" enabled="yes" data="../Documents/navitmap.bin" />
- </xsl:template>
- <xsl:template match="@*|node()">
- <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/map_sdcard_navitmap_bin.xslt b/navit/xslt/map_sdcard_navitmap_bin.xslt
deleted file mode 100644
index ac8835b7d..000000000
--- a/navit/xslt/map_sdcard_navitmap_bin.xslt
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/navit/mapset/xi:include">
- <maps type="binfile" data="$NAVIT_USER_DATADIR/*.bin" />
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/map_secondary_sdcard_navitmap_bin.xslt b/navit/xslt/map_secondary_sdcard_navitmap_bin.xslt
deleted file mode 100644
index 4d97649de..000000000
--- a/navit/xslt/map_secondary_sdcard_navitmap_bin.xslt
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/navit/mapset/xi:include">
- <map type="binfile" enabled="yes" data="/sdcard/navit/navitmap.bin" />
- <xsl:text>&#x0A; </xsl:text>
- <map type="binfile" enabled="yes" data="/sdcard/navit/navitmap_002.bin" />
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/navit_drag_bitmap.xslt b/navit/xslt/navit_drag_bitmap.xslt
deleted file mode 100644
index 12b036a85..000000000
--- a/navit/xslt/navit_drag_bitmap.xslt
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/navit">
- <xsl:copy><xsl:copy-of select="@*"/><xsl:attribute name="drag_bitmap">yes</xsl:attribute><xsl:apply-templates/></xsl:copy>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/null.xslt b/navit/xslt/null.xslt
deleted file mode 100644
index 8b9e82057..000000000
--- a/navit/xslt/null.xslt
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:output method="xml" doctype-system="navit.dtd" cdata-section-elements="gui"/>
- <xsl:template match="@*|node()"><xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy></xsl:template>
-</xsl:transform>
-
diff --git a/navit/xslt/openmoko.xslt b/navit/xslt/openmoko.xslt
deleted file mode 100644
index 2de3c0aab..000000000
--- a/navit/xslt/openmoko.xslt
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:output method="xml" doctype-system="navit.dtd" cdata-section-elements="gui"/>
- <xsl:include href="navit_drag_bitmap.xslt"/>
- <xsl:include href="osd_enable_zoom.xslt"/>
- <xsl:template match="@*|node()"><xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy></xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/osd_android.xslt b/navit/xslt/osd_android.xslt
deleted file mode 100644
index a15d4f34d..000000000
--- a/navit/xslt/osd_android.xslt
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/navit/osd[last()]">
- <xsl:copy><xsl:copy-of select="@*|node()"/></xsl:copy>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="button" src="gui_android_menu_{number($ICON_BIG)}_{number($ICON_BIG)}.png" command="graphics.menu()" x="{round(-60*number($OSD_SIZE))}" y="{round(48*number($OSD_SIZE))}" enable_expression="!has_menu_button" use_overlay="yes"/>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/osd_enable_zoom.xslt b/navit/xslt/osd_enable_zoom.xslt
deleted file mode 100644
index 56eda1cbb..000000000
--- a/navit/xslt/osd_enable_zoom.xslt
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/navit/osd[@type='button'][@command='zoom_in()' or @command='zoom_out()']">
- <xsl:copy><xsl:copy-of select="@*"/><xsl:attribute name="enabled">yes</xsl:attribute><xsl:apply-templates/></xsl:copy>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/osd_minimum.xslt b/navit/xslt/osd_minimum.xslt
deleted file mode 100644
index 5c9c8a0b3..000000000
--- a/navit/xslt/osd_minimum.xslt
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/navit/osd[1]">
- <xsl:param name="NEXT_TURN_SIZE"><xsl:value-of select="round(12*number($OSD_SIZE)+number($ICON_BIG))"/></xsl:param>
- <xsl:param name="NEXT_TURN_TEXT_HIGHT"><xsl:value-of select="round(20*number($OSD_SIZE))"/></xsl:param>
- <xsl:param name="OSD_USE_OVERLAY"><xsl:value-of select="$OSD_USE_OVERLAY='yes' or $OSD_USE_OVERLAY='true' or $OSD_USE_OVERLAY='1'"/></xsl:param>
-
- <osd type="compass" enabled="yes" x="{round(-60*number($OSD_SIZE))}" y="{round(-80*number($OSD_SIZE))}" w="{round(60*number($OSD_SIZE))}" h="{round(80*number($OSD_SIZE))}" font_size="{round(200*number($OSD_SIZE))}" enable_expression="vehicle.position_valid"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="text" label="${{navigation.item.destination_length[named]}}\n${{navigation.item.destination_time[arrival]}}" x="{round(-60*number($OSD_SIZE))}" y="0" w="{round(60*number($OSD_SIZE))}" h="{round(40*number($OSD_SIZE))}" font_size="{round(200*number($OSD_SIZE))}" enable_expression="navigation.nav_status>=3"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="navigation_status" x="0" y="{-($NEXT_TURN_SIZE+$NEXT_TURN_TEXT_HIGHT)}" w="{$NEXT_TURN_SIZE+$NEXT_TURN_TEXT_HIGHT}" h="{$NEXT_TURN_SIZE+$NEXT_TURN_TEXT_HIGHT}" icon_src="%s_wh_{$ICON_BIG}_{$ICON_BIG}.png" enable_expression="navigation.nav_status==-1 || navigation.nav_status==1 || navigation.nav_status==2"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="navigation_next_turn" x="0" y="{-($NEXT_TURN_SIZE+$NEXT_TURN_TEXT_HIGHT)}" w="{$NEXT_TURN_SIZE+$NEXT_TURN_TEXT_HIGHT}" h="{$NEXT_TURN_SIZE}" icon_src="%s_wh_{$ICON_BIG}_{$ICON_BIG}.png" enable_expression="navigation.nav_status>=3"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="text" label="${{navigation.item[1].length[named]}}" x="0" y="{-$NEXT_TURN_TEXT_HIGHT}" w="{$NEXT_TURN_SIZE+$NEXT_TURN_TEXT_HIGHT}" h="{$NEXT_TURN_TEXT_HIGHT}" font_size="{round(200*number($OSD_SIZE))}" enable_expression="navigation.nav_status>=3"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="button" src="gui_zoom_manual_{number($ICON_BIG)}_{number($ICON_BIG)}.png" command="autozoom_active=0" x="0" y="0" osd_configuration="1" use_overlay="{$OSD_USE_OVERLAY}" enable_expression="autozoom_active!=0"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="button" src="gui_zoom_auto_{number($ICON_BIG)}_{number($ICON_BIG)}.png" command="autozoom_active=1" x="0" y="0" osd_configuration="1" use_overlay="{$OSD_USE_OVERLAY}" enable_expression="autozoom_active==0"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="button" src="gui_zoom_in_{number($ICON_BIG)}_{number($ICON_BIG)}.png" command="zoom_in()" x="0" y="{round(number($ICON_BIG)+8*number($OSD_SIZE))}" osd_configuration="1" use_overlay="{$OSD_USE_OVERLAY}"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="button" src="gui_zoom_out_{number($ICON_BIG)}_{number($ICON_BIG)}.png" command="zoom_out()" x="0" y="{round(2*(number($ICON_BIG)+8*number($OSD_SIZE)))}" osd_configuration="1" use_overlay="{$OSD_USE_OVERLAY}"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="cmd_interface" update_period="1" command="pitch=autozoom_active==0?pitch:(follow>1?0:20);orientation=autozoom_active==0?orientation:(follow>1?0:-1)" x="-1" y="-1" w="1" h="1"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd type="button" src="cursor_{number($ICON_BIG)}_{number($ICON_BIG)}.png" command="follow=0;set_center_cursor()" x="{round(number($ICON_BIG)+8*number($OSD_SIZE))}" y="0" enable_expression="follow>1" use_overlay="{$OSD_USE_OVERLAY}"/>
- <xsl:text>&#x0A; </xsl:text>
- <xsl:copy><xsl:copy-of select="@*|node()"/></xsl:copy>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/pedestrian.xslt b/navit/xslt/pedestrian.xslt
deleted file mode 100644
index 65ff99bd2..000000000
--- a/navit/xslt/pedestrian.xslt
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:output method="xml" doctype-system="navit.dtd" cdata-section-elements="gui"/>
- <xsl:template match="/config/navit">
- <xsl:copy><xsl:copy-of select="@*"/><xsl:attribute name="osd_configuration">1</xsl:attribute><xsl:apply-templates/></xsl:copy>
- </xsl:template>
- <xsl:template match="/config/navit/osd[1]">
- <osd type="auxmap" w="160" h="120" x="0" y="0" osd_configuration="2"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd enabled="yes" type="text" label="${{navigation.item.street_name}}" x="0" y="-40" w="480" h="40" font_size="266" osd_configuration="2"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd enabled="yes" type="button" x="-96" y="0" command="gui.menu()" src="menu.png" osd_configuration="2"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd enabled="yes" type="button" x="-192" y="0" command="pedestrian_rocket()" src="rocket.png" osd_configuration="2"/>
- <xsl:text>&#x0A; </xsl:text>
- <xsl:copy><xsl:copy-of select="@*|node()"/></xsl:copy>
- </xsl:template>
- <xsl:template match="@*|node()"><xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy></xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/pedestrian_button.xslt b/navit/xslt/pedestrian_button.xslt
deleted file mode 100644
index df6ec6078..000000000
--- a/navit/xslt/pedestrian_button.xslt
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:output method="xml" doctype-system="navit.dtd" cdata-section-elements="gui"/>
- <xsl:template match="/config/navit/gui[@type='internal']">
- <xsl:copy><xsl:copy-of select="@*"/>
- <xsl:value-of select="substring-before(text(),'&lt;/html&gt;')"/>
- <xsl:text>
- <![CDATA[
- <a name='Plugins'>
- <img src='gui_settings' onclick='plugin=new plugin(path="/data/data/org.navitproject.navit/lib/libplugin_pedestrian.so")'><text>Pedestrian</text></img>
- </a>
- </html>
- ]]>
- </xsl:text>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="@*|node()"><xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy></xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/pedestrian_plugin.xslt b/navit/xslt/pedestrian_plugin.xslt
deleted file mode 100644
index 7eb982653..000000000
--- a/navit/xslt/pedestrian_plugin.xslt
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/plugins/plugin[last()]">
- <xsl:copy><xsl:copy-of select="@*|node()"/></xsl:copy>
- <xsl:text>&#x0A; </xsl:text>
- <plugin path="$NAVIT_PREFIX/lib/libplugin_pedestrian.so" ondemand="no"/>
- </xsl:template>
- <xsl:template match="@*|node()"><xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy></xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/plugin_menu.xslt b/navit/xslt/plugin_menu.xslt
deleted file mode 100644
index 962404376..000000000
--- a/navit/xslt/plugin_menu.xslt
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:output method="xml" doctype-system="navit.dtd" cdata-section-elements="gui"/>
- <xsl:template match="/config/navit/gui[@type='internal']">
- <xsl:copy><xsl:copy-of select="@*"/>
- <xsl:value-of select="substring-before(text(),'&lt;/html&gt;')"/>
- <xsl:text>
- <![CDATA[
- <a name='Main Menu'>
- <a href='#Plugins'>
- <img src='gui_settings'><text>Plugins</text></img>
- </a>
- </a>
- <a name='Plugins'>Plugins</a>
- </html>
- ]]>
- </xsl:text>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="@*|node()"><xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy></xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/sailfish_cursor.xslt b/navit/xslt/sailfish_cursor.xslt
deleted file mode 100644
index 01029638c..000000000
--- a/navit/xslt/sailfish_cursor.xslt
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xi="http://www.w3.org/2001/XInclude">
-
- <xsl:output method="xml" indent="yes" cdata-section-elements="gui" doctype-system="navit.dtd"/>
-
- <!-- Default rule: copy all -->
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="/config/navit/layout[@name='Car' or @name='Car-dark']/cursor">
- <cursor w="57" h="57">
- <xsl:text>&#x0A; </xsl:text>
- <itemgra speed_range="-2">
- <xsl:text>&#x0A; </xsl:text>
- <polyline color="#00BC00" radius="0" width="4">
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="0"/>
- <xsl:text>&#x0A; </xsl:text>
- </polyline>
- <xsl:text>&#x0A; </xsl:text>
- <circle color="#008500" radius="9" width="3">
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="0"/>
- <xsl:text>&#x0A; </xsl:text>
- </circle>
- <xsl:text>&#x0A; </xsl:text>
- <circle color="#00BC00" radius="13" width="3">
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="0"/>
- <xsl:text>&#x0A; </xsl:text>
- </circle>
- <xsl:text>&#x0A; </xsl:text>
- <circle color="#008500" radius="18" width="3">
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="0"/>
- <xsl:text>&#x0A; </xsl:text>
- </circle>
- <xsl:text>&#x0A; </xsl:text>
- </itemgra>
- <xsl:text>&#x0A; </xsl:text>
- <itemgra speed_range="3-">
- <xsl:text>&#x0A; </xsl:text>
- <polygon color="#00000066">
- <xsl:text>&#x0A; </xsl:text>
- <coord x="-21" y="-27"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="12"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="21" y="-27"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="-12"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="-21" y="-27"/>
- <xsl:text>&#x0A; </xsl:text>
- </polygon>
- <xsl:text>&#x0A; </xsl:text>
- <polygon color="#008500">
- <xsl:text>&#x0A; </xsl:text>
- <coord x="-21" y="-18"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="21"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="-3"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="-21" y="-18"/>
- <xsl:text>&#x0A; </xsl:text>
- </polygon>
- <xsl:text>&#x0A; </xsl:text>
- <polygon color="#00BC00">
- <xsl:text>&#x0A; </xsl:text>
- <coord x="21" y="-18"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="21"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="-3"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="21" y="-18"/>
- <xsl:text>&#x0A; </xsl:text>
- </polygon>
- <xsl:text>&#x0A; </xsl:text>
- <polyline color="#008500" width="1">
- <xsl:text>&#x0A; </xsl:text>
- <coord x="-21" y="-18"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="21"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="-3"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="-21" y="-18"/>
- <xsl:text>&#x0A; </xsl:text>
- </polyline>
- <xsl:text>&#x0A; </xsl:text>
- <polyline color="#008500" width="1">
- <xsl:text>&#x0A; </xsl:text>
- <coord x="21" y="-18"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="21"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="0" y="-3"/>
- <xsl:text>&#x0A; </xsl:text>
- <coord x="21" y="-18"/>
- <xsl:text>&#x0A; </xsl:text>
- </polyline>
- <xsl:text>&#x0A; </xsl:text>
- </itemgra>
- <xsl:text>&#x0A; </xsl:text>
- </cursor>
- </xsl:template>
-</xsl:stylesheet>
diff --git a/navit/xslt/sailfish_disable.xslt b/navit/xslt/sailfish_disable.xslt
deleted file mode 100644
index 4f730b00e..000000000
--- a/navit/xslt/sailfish_disable.xslt
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xi="http://www.w3.org/2001/XInclude">
-
- <xsl:output method="xml" indent="yes" cdata-section-elements="gui" doctype-system="navit.dtd"/>
-
- <!-- Default rule: copy all -->
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <!-- Disable all vehicles -->
- <xsl:template match="vehicle">
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:attribute name="enabled">no</xsl:attribute>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
- <!-- Disable all graphics -->
- <xsl:template match="graphics">
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:attribute name="enabled">no</xsl:attribute>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
- <!-- Disable all mapsets -->
- <xsl:template match="mapset">
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:attribute name="enabled">no</xsl:attribute>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
- <!-- Disable all osd -->
- <xsl:template match="osd">
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:attribute name="enabled">no</xsl:attribute>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
- <!-- Disable all speech -->
- <xsl:template match="speech">
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:attribute name="enabled">no</xsl:attribute>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/navit/xslt/sailfish_gui.xslt b/navit/xslt/sailfish_gui.xslt
deleted file mode 100644
index 079699a44..000000000
--- a/navit/xslt/sailfish_gui.xslt
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xi="http://www.w3.org/2001/XInclude">
-
- <xsl:output method="xml" indent="yes" cdata-section-elements="gui" doctype-system="navit.dtd"/>
-
- <!-- Default rule: copy all -->
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="/config/navit">
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:attribute name="drag_bitmap">1</xsl:attribute>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="/config/navit/gui[@type='internal']">
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:attribute name="font_size">350</xsl:attribute>
- <xsl:attribute name="icon_xs">32</xsl:attribute>
- <xsl:attribute name="icon_s">64</xsl:attribute>
- <xsl:attribute name="icon_l">96</xsl:attribute>
- <xsl:attribute name="enabled">yes</xsl:attribute>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/navit/xslt/sailfish_mapset.xslt b/navit/xslt/sailfish_mapset.xslt
deleted file mode 100644
index 2febc81f4..000000000
--- a/navit/xslt/sailfish_mapset.xslt
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xi="http://www.w3.org/2001/XInclude">
-
- <xsl:output method="xml" indent="yes" cdata-section-elements="gui" doctype-system="navit.dtd"/>
-
- <!-- Default rule: copy all -->
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="/config/navit/mapset[1]">
- <mapset enabled="yes">
- <xsl:text>&#x0A; </xsl:text>
- <map type="binfile" enabled="yes" active="no" data="/usr/share/harbour-navit/maps/osm_bbox_11.3,47.9,11.7,48.2.bin"/>
- <xsl:text>&#x0A; </xsl:text>
- <map type="binfile" enabled="yes" data="~/Maps/map.navit.bin"/>
- <xsl:text>&#x0A; </xsl:text>
- <map type="binfile" enabled="yes" active="no" name="map.navit.heightlines.bin" data="~/Maps/map.navit.heightlines.bin"/>
- <xsl:text>&#x0A; </xsl:text>
- </mapset>
- <xsl:text>&#x0A; </xsl:text>
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/navit/xslt/sailfish_osd.xslt b/navit/xslt/sailfish_osd.xslt
deleted file mode 100644
index ca9925a49..000000000
--- a/navit/xslt/sailfish_osd.xslt
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xi="http://www.w3.org/2001/XInclude">
-
- <xsl:output method="xml" indent="yes" cdata-section-elements="gui" doctype-system="navit.dtd"/>
-
- <!-- Default rule: copy all -->
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="/config/navit/osd[1]">
- <osd enabled="yes" type="gps_status" x="0" y="0" w="50" h="50"/>
- <xsl:text>&#x0A; </xsl:text>
- <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"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd enabled="yes" type="text" label="${{vehicle.position_speed}}" x="50" y="0" w="150" h="50" background_color="#00000058" font_size="400"/>
- <xsl:text>&#x0A; </xsl:text>
- <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"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd enabled="yes" type="navigation_next_turn" x="-100" y="0" w="100" h="100" icon_w="90" icon_h="80" background_color="#00000058"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd enabled="yes" type="button" x="-96" y="-96" w="96" h="96" command="zoom_in()" src="zoom_in" use_overlay="true"/>
- <xsl:text>&#x0A; </xsl:text>
- <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"/>
- <xsl:text>&#x0A; </xsl:text>
- <osd enabled="yes" type="button" x="0" y="-96" w="96" h="96" command="zoom_out()" src="zoom_out" use_overlay="true"/>
- <xsl:text>&#x0A; </xsl:text>
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/navit/xslt/sailfish_qt5.xslt b/navit/xslt/sailfish_qt5.xslt
deleted file mode 100644
index 5ee20e2e9..000000000
--- a/navit/xslt/sailfish_qt5.xslt
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xi="http://www.w3.org/2001/XInclude">
-
- <xsl:output method="xml" indent="yes" cdata-section-elements="gui" doctype-system="navit.dtd"/>
-
- <!-- Default rule: copy all -->
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="/config/navit/graphics[1]">
- <graphics type="qt5" qt5_platform="wayland"/>
- <xsl:text>&#x0A; </xsl:text>
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="/config/navit/vehicle[1]">
- <vehicle name="Qt5" profilename="car" enabled="yes" active="1" source="qt5://"/>
- <xsl:text>&#x0A; </xsl:text>
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="/config/navit/speech[1]">
- <speech type="qt5_espeak" cps="15"/>
- <xsl:text>&#x0A; </xsl:text>
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/navit/xslt/sailfish_svg.xslt b/navit/xslt/sailfish_svg.xslt
deleted file mode 100644
index 7203ed34d..000000000
--- a/navit/xslt/sailfish_svg.xslt
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xi="http://www.w3.org/2001/XInclude">
-
- <xsl:output method="xml" indent="yes" cdata-section-elements="gui" doctype-system="navit.dtd"/>
-
- <!-- Default rule: copy all -->
- <xsl:template match="node()|@*">
- <xsl:copy>
- <xsl:apply-templates select="node()|@*"/>
- </xsl:copy>
- </xsl:template>
-
- <!-- Force all png icons to svg and add w and h if not exist -->
- <xsl:template match="icon">
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsl:if test="@src[substring(., string-length()-3)='.png']|@src[substring(., string-length()-3)='.xpm']">
- <xsl:attribute name="src">
- <xsl:value-of select="concat(substring(@src,1, string-length(@src)-3),'svg')"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="not(@h)">
- <xsl:attribute name="h">15</xsl:attribute>
- </xsl:if>
- <xsl:if test="not(@w)">
- <xsl:attribute name="w">15</xsl:attribute>
- </xsl:if>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/navit/xslt/samplemap.xslt b/navit/xslt/samplemap.xslt
deleted file mode 100644
index fddeec5df..000000000
--- a/navit/xslt/samplemap.xslt
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/navit/mapset/xi:include">
- <map type="binfile" data="$NAVIT_SHAREDIR/maps/osm_bbox_11.3,47.9,11.7,48.2.bin" />
- </xsl:template>
-</xsl:transform>
-
diff --git a/navit/xslt/speech_espeak.xslt b/navit/xslt/speech_espeak.xslt
deleted file mode 100644
index b701f76d7..000000000
--- a/navit/xslt/speech_espeak.xslt
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/navit/speech">
- <xsl:copy><xsl:copy-of select="@*[not(name()='data')]"/><xsl:attribute name="type">espeak</xsl:attribute><xsl:apply-templates/></xsl:copy>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/tomtom.xslt b/navit/xslt/tomtom.xslt
deleted file mode 100644
index 3e34d9224..000000000
--- a/navit/xslt/tomtom.xslt
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude" version="1.0">
-
- <xsl:output method="xml" indent="yes" cdata-section-elements="gui" doctype-system="navit.dtd"/>
-
- <xsl:template match="/">
- <xsl:apply-templates select="config"/>
- </xsl:template>
-
- <xsl:template match="config">
- <xsl:copy>
- <xsl:apply-templates select="navit"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="navit">
- <xsl:copy>
- <xsl:attribute name="zoom">32</xsl:attribute>
- <xsl:attribute name="tracking">1</xsl:attribute>
- <xsl:attribute name="orientation">-1</xsl:attribute>
- <xsl:attribute name="autozoom_active">1</xsl:attribute>
- <xsl:attribute name="recent_dest">25</xsl:attribute>
- <graphics type="sdl" w="480" h="272" bpp="16" frame="0" flags="1"/>
- <xsl:copy-of select="gui[@type='internal']"/>
- <osd enabled="yes" type="text" x="80" y="0" w="320" h="40" font_size="360" align="0" label="${{tracking.item.street_name}} ${{tracking.item.street_name_systematic}}" background_color="#00008080"/>
- <osd enabled="yes" type="text" x="80" y="232" w="80" h="40" font_size="360" align="0" label="${{navigation.item[1].length[named]}}" background_color="#00008080"/>
- <osd enabled="yes" type="text" x="160" y="232" w="240" h="40" font_size="360" align="0" label="${{vehicle.position_speed}} / ${{tracking.item.route_speed}}" background_color="#00008080"/>
- <osd enabled="yes" type="text" x="400" y="232" w="80" h="40" font_size="360" align="0" label="${{navigation.item.destination_length[named]}}" background_color="#00008080"/>
- <osd enabled="yes" type="text" x="400" y="192" w="80" h="40" font_size="360" align="0" label="${{navigation.item.destination_time[arrival]}}" background_color="#00008080"/>
- <osd enabled="yes" type="compass" x="400" y="80" w="80" h="112" background_color="#00008080" font_size="300"/>
- <osd enabled="yes" type="gps_status" x="0" y="80" w="80" h="40" background_color="#00008080"/>
- <osd enabled="yes" type="speed_warner" x="0" y="120" w="80" h="72" background_color="#00008080" font_size="300"/>
- <osd enabled="yes" type="navigation_next_turn" x="0" y="192" w="80" h="80" icon_w="48" icon_h="48" icon_src="%s_wh_48_48.png" background_color="#00008080"/>
- <osd enabled="yes" type="button" x="400" y="0" command="zoom_in()" src="tomtom_plus_80_80.png"/>
- <osd enabled="yes" type="button" x="0" y="0" command="zoom_out()" src="tomtom_minus_80_80.png"/>
- <vehicle name="Local GPS" profilename="car" enabled="yes" active="yes" follow="1" source="file:/var/run/gpspipe">
- <!-- 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,position_radius" data="/mnt/sdcard/navit/track_%Y%m%d-%%i.gpx" flush_size="1000" flush_time="30"/>
- </vehicle>
- <vehicle name="Demo" profilename="car" enabled="yes" active="no" follow="1" source="demo://" speed="100"/>
- <xsl:copy-of select="tracking"/>
-
- <xsl:copy-of select="vehicleprofile[@name='car']"/>
- <xsl:copy-of select="vehicleprofile[@name='car_shortest']"/>
- <xsl:copy-of select="vehicleprofile[@name='car_avoid_tolls']"/>
- <xsl:copy-of select="vehicleprofile[@name='bike']"/>
- <xsl:copy-of select="vehicleprofile[@name='pedestrian']"/>
-
- <xsl:copy-of select="route"/>
- <xsl:copy-of select="navigation"/>
-
- <xsl:comment>Use espeak.</xsl:comment>
- <speech type="cmdline" data="/mnt/sdcard/navit/bin/espeakdsp -v en '%s'"/>
-
- <mapset enabled="yes">
- <map type="binfile" enabled="yes" data="$NAVIT_SHAREDIR/maps/*.bin"/>
- </mapset>
- <xsl:copy-of select="layer"/>
- <xsl:copy-of select="layout"/>
- </xsl:copy>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/vehicle_null.xslt b/navit/xslt/vehicle_null.xslt
deleted file mode 100644
index 2e4cc69a0..000000000
--- a/navit/xslt/vehicle_null.xslt
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:template match="/config/navit/vehicle[@name='Local GPS']">
- <xsl:copy><xsl:copy-of select="@*[not(name()='data')]"/><xsl:attribute name="source">null:</xsl:attribute><xsl:apply-templates/></xsl:copy>
- </xsl:template>
-</xsl:transform>
diff --git a/navit/xslt/windows.xslt b/navit/xslt/windows.xslt
deleted file mode 100644
index 989566c83..000000000
--- a/navit/xslt/windows.xslt
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
- <xsl:output method="xml" doctype-system="navit.dtd" cdata-section-elements="gui"/>
- <xsl:include href="samplemap.xslt"/>
- <xsl:include href="osd_enable_zoom.xslt"/>
- <xsl:include href="speech_espeak.xslt"/>
- <xsl:template match="/config/navit/graphics">
- <graphics type="win32" />
- </xsl:template>
- <xsl:template match="@*|node()"><xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy></xsl:template>
-</xsl:transform>
-
diff --git a/navit/zipfile.h b/navit/zipfile.h
deleted file mode 100644
index bb3ed1c56..000000000
--- a/navit/zipfile.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * 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 Library 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 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., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __ZIPFILE_H__
-#define __ZIPFILE_H__
-
-#ifdef HAVE_PRAGMA_PACK
-#pragma pack(push)
-#pragma pack(1)
-#endif
-
-#ifdef __GNUC__
-#define ATTRIBUTE_PACKED __attribute__ ((packed))
-#else
-#define ATTRIBUTE_PACKED
-#endif
-
-#define zip_split_sig 0x08074b50
-#define zip_split_sig_rev 0x504b0708
-
-struct zip_split {
- int zipsplitsig;
-};
-
-#define zip_lfh_sig 0x04034b50
-#define zip_lfh_sig_rev 0x504b0304
-
-
-//! ZIP local file header structure.
-
-//! See the documentation of the ZIP format for the meaning
-//! of these fields.
-struct zip_lfh {
- int ziplocsig; //!< local file header signature
- short zipver; //!< minimum zip spec version needed to extract
- short zipgenfld; //!< general purpose flags
- short zipmthd; //!< compression method
- short ziptime; //!< file modification time
- short zipdate; //!< file modification date
- int zipcrc; //!< CRC-32 checksum
- unsigned int zipsize; //!< file size (after compression)
- unsigned int zipuncmp; //!< file size (uncompressed)
- unsigned short zipfnln; //!< file name length
- unsigned short zipxtraln; //!< extra filed length (unused?)
- char zipname[0]; //!< file name (length as given above)
-} ATTRIBUTE_PACKED;
-
-#define zip_cd_sig 0x02014b50
-#define zip_cd_sig_rev 0x504b0102
-
-//! ZIP central directory structure.
-
-//! See the documentation of the ZIP format for the meaning
-//! of these fields.
-struct zip_cd {
- int zipcensig; //!< central directory signature
- char zipcver; //!< zip spec version of creating software
- char zipcos; //!< os compatibility of the file attribute information
- char zipcvxt; //!< minimum zip spec version needed to extract
- char zipcexos; //!< unused (?)
- short zipcflg; //!< general purpose flag
- short zipcmthd; //!< compression method
- short ziptim; //!< file modification time
- short zipdat; //!< file modification date
- int zipccrc; //!< CRC-32 checksum
- unsigned int zipcsiz; //!< file size (after compression)
- unsigned int zipcunc; //!< file size (uncompressed)
- unsigned short zipcfnl; //!< file name length
- unsigned short zipcxtl; //!< extra field length
- unsigned short zipccml; //!< comment length
- unsigned short zipdsk; //!< disk number of file
- unsigned short zipint; //!< internal attributes
- unsigned int zipext; //!< external attributes
- unsigned int zipofst; //!< offset to start of local file header
- char zipcfn[0]; //!< file name (length as given above)
-} ATTRIBUTE_PACKED;
-
-/**
-* @brief Placeholder value for size field in the central directory if
-* the size is 64bit. See the documentation for the Zip64 Extended
-* Information Extra Field.
-*/
-#define zip_size_64bit_placeholder 0xffffffff
-
-/**
-* @brief Header ID for extra field "ZIP64".
-*/
-#define zip_extra_header_id_zip64 0x0001
-
-//! ZIP extra field structure.
-
-//! See the documentation of the ZIP format for the meaning
-//! of these fields.
-struct zip_cd_ext {
- short tag; //!< extra field header ID
- short size; //!< extra field data size
- unsigned long long zipofst; //!< offset to start of local file header (only valid if the struct is for a ZIP64 extra field)
-} ATTRIBUTE_PACKED;
-
-struct zip_enc {
- short efield_header;
- short efield_size;
- short version;
- char vendor_id1,vendor_id2;
- char encryption_strength;
- short compress_method;
-} ATTRIBUTE_PACKED;
-
-#define zip_eoc_sig 0x6054b50
-#define zip_eoc_sig_rev 0x504b0506
-
-//! ZIP end of central directory structure.
-
-//! See the documentation of the ZIP format for the meaning
-//! of these fields.
-struct zip_eoc {
- int zipesig; /* end of central dir signature */
- unsigned short zipedsk; /* number of this disk */
- unsigned short zipecen; /* number of the disk with the start of the central directory */
- unsigned short zipenum; /* total number of entries in the central directory on this disk */
- unsigned short zipecenn; /* total number of entries in the central directory */
- unsigned int zipecsz; /* size of the central directory */
- unsigned int zipeofst; /* offset of start of central directory with respect to the starting disk number */
- short zipecoml; /* .ZIP file comment length */
- char zipecom[0]; /* .ZIP file comment */
-} ATTRIBUTE_PACKED;
-
-#define zip64_eoc_sig 0x6064b50
-#define zip64_eoc_sig_rev 0x504b0606
-
-struct zip64_eoc {
- int zip64esig; /* zip64 end of central dir signature */
- unsigned long long zip64esize; /* size of zip64 end of central directory record */
- unsigned short zip64ever; /* version made by */
- unsigned short zip64eneed; /* version needed to extract */
- unsigned int zip64edsk; /* number of this disk */
- unsigned int zip64ecen; /* number of the disk with the start of the central directory */
- unsigned long long zip64enum; /* total number of entries in the central directory on this disk */
- unsigned long long zip64ecenn; /* total number of entries in the central directory */
- unsigned long long zip64ecsz; /* size of the central directory */
- unsigned long long zip64eofst; /* offset of start of central directory with respect to the starting disk number */
- char zip64ecom[0]; /* zip64 extensible data sector */
-} ATTRIBUTE_PACKED;
-
-#define zip64_eocl_sig 0x07064b50
-
-struct zip64_eocl {
- int zip64lsig;
- int zip64ldsk;
- long long zip64lofst;
- int zip74lnum;
-} ATTRIBUTE_PACKED;
-
-struct zip_alignment_check {
- int x[sizeof(struct zip_cd) == 46 ? 1:-1];
-};
-
-#ifdef HAVE_PRAGMA_PACK
-#pragma pack(pop)
-#endif
-#endif
diff --git a/html/navitProxy_8h_source.html b/navitProxy_8h_source.html
index 006804756..006804756 100644
--- a/html/navitProxy_8h_source.html
+++ b/navitProxy_8h_source.html
diff --git a/html/navit_8h_source.html b/navit_8h_source.html
index 1c21f0eac..1c21f0eac 100644
--- a/html/navit_8h_source.html
+++ b/navit_8h_source.html
diff --git a/html/navit__lfs_8h_source.html b/navit__lfs_8h_source.html
index 20578c685..20578c685 100644
--- a/html/navit__lfs_8h_source.html
+++ b/navit__lfs_8h_source.html
diff --git a/html/navit__nls_8h_source.html b/navit__nls_8h_source.html
index b64f675da..b64f675da 100644
--- a/html/navit__nls_8h_source.html
+++ b/navit__nls_8h_source.html
diff --git a/html/navtree.css b/navtree.css
index 41a9cb969..41a9cb969 100644
--- a/html/navtree.css
+++ b/navtree.css
diff --git a/html/navtree.js b/navtree.js
index f6842640c..f6842640c 100644
--- a/html/navtree.js
+++ b/navtree.js
diff --git a/html/navtreeindex0.js b/navtreeindex0.js
index c5a8e597b..c5a8e597b 100644
--- a/html/navtreeindex0.js
+++ b/navtreeindex0.js
diff --git a/html/navtreeindex1.js b/navtreeindex1.js
index f4d1897c0..f4d1897c0 100644
--- a/html/navtreeindex1.js
+++ b/navtreeindex1.js
diff --git a/html/navtreeindex10.js b/navtreeindex10.js
index 31a0c3aa2..31a0c3aa2 100644
--- a/html/navtreeindex10.js
+++ b/navtreeindex10.js
diff --git a/html/navtreeindex11.js b/navtreeindex11.js
index 36993011d..36993011d 100644
--- a/html/navtreeindex11.js
+++ b/navtreeindex11.js
diff --git a/html/navtreeindex12.js b/navtreeindex12.js
index 9092c9db7..9092c9db7 100644
--- a/html/navtreeindex12.js
+++ b/navtreeindex12.js
diff --git a/html/navtreeindex13.js b/navtreeindex13.js
index 3d81b3923..3d81b3923 100644
--- a/html/navtreeindex13.js
+++ b/navtreeindex13.js
diff --git a/html/navtreeindex14.js b/navtreeindex14.js
index ba5b2a092..ba5b2a092 100644
--- a/html/navtreeindex14.js
+++ b/navtreeindex14.js
diff --git a/html/navtreeindex15.js b/navtreeindex15.js
index 8161db057..8161db057 100644
--- a/html/navtreeindex15.js
+++ b/navtreeindex15.js
diff --git a/html/navtreeindex16.js b/navtreeindex16.js
index 01e5c62da..01e5c62da 100644
--- a/html/navtreeindex16.js
+++ b/navtreeindex16.js
diff --git a/html/navtreeindex17.js b/navtreeindex17.js
index 396aca908..396aca908 100644
--- a/html/navtreeindex17.js
+++ b/navtreeindex17.js
diff --git a/html/navtreeindex18.js b/navtreeindex18.js
index 024d3250b..024d3250b 100644
--- a/html/navtreeindex18.js
+++ b/navtreeindex18.js
diff --git a/html/navtreeindex19.js b/navtreeindex19.js
index 42aca4f32..42aca4f32 100644
--- a/html/navtreeindex19.js
+++ b/navtreeindex19.js
diff --git a/html/navtreeindex2.js b/navtreeindex2.js
index 89d9505ed..89d9505ed 100644
--- a/html/navtreeindex2.js
+++ b/navtreeindex2.js
diff --git a/html/navtreeindex20.js b/navtreeindex20.js
index d26728b13..d26728b13 100644
--- a/html/navtreeindex20.js
+++ b/navtreeindex20.js
diff --git a/html/navtreeindex21.js b/navtreeindex21.js
index 84155de5b..84155de5b 100644
--- a/html/navtreeindex21.js
+++ b/navtreeindex21.js
diff --git a/html/navtreeindex22.js b/navtreeindex22.js
index f5f2d4da2..f5f2d4da2 100644
--- a/html/navtreeindex22.js
+++ b/navtreeindex22.js
diff --git a/html/navtreeindex23.js b/navtreeindex23.js
index 92d99c3e9..92d99c3e9 100644
--- a/html/navtreeindex23.js
+++ b/navtreeindex23.js
diff --git a/html/navtreeindex24.js b/navtreeindex24.js
index db0ea6993..db0ea6993 100644
--- a/html/navtreeindex24.js
+++ b/navtreeindex24.js
diff --git a/html/navtreeindex25.js b/navtreeindex25.js
index b18815fa6..b18815fa6 100644
--- a/html/navtreeindex25.js
+++ b/navtreeindex25.js
diff --git a/html/navtreeindex26.js b/navtreeindex26.js
index cf612fd4c..cf612fd4c 100644
--- a/html/navtreeindex26.js
+++ b/navtreeindex26.js
diff --git a/html/navtreeindex3.js b/navtreeindex3.js
index a0dc85360..a0dc85360 100644
--- a/html/navtreeindex3.js
+++ b/navtreeindex3.js
diff --git a/html/navtreeindex4.js b/navtreeindex4.js
index 4991bd547..4991bd547 100644
--- a/html/navtreeindex4.js
+++ b/navtreeindex4.js
diff --git a/html/navtreeindex5.js b/navtreeindex5.js
index 887ec11d2..887ec11d2 100644
--- a/html/navtreeindex5.js
+++ b/navtreeindex5.js
diff --git a/html/navtreeindex6.js b/navtreeindex6.js
index b304c71e7..b304c71e7 100644
--- a/html/navtreeindex6.js
+++ b/navtreeindex6.js
diff --git a/html/navtreeindex7.js b/navtreeindex7.js
index e3ae5cc8d..e3ae5cc8d 100644
--- a/html/navtreeindex7.js
+++ b/navtreeindex7.js
diff --git a/html/navtreeindex8.js b/navtreeindex8.js
index e3ea5986c..e3ea5986c 100644
--- a/html/navtreeindex8.js
+++ b/navtreeindex8.js
diff --git a/html/navtreeindex9.js b/navtreeindex9.js
index 51e691666..51e691666 100644
--- a/html/navtreeindex9.js
+++ b/navtreeindex9.js
diff --git a/html/ngqpoint_8h_source.html b/ngqpoint_8h_source.html
index 3aa652a0b..3aa652a0b 100644
--- a/html/ngqpoint_8h_source.html
+++ b/ngqpoint_8h_source.html
diff --git a/html/open.png b/open.png
index 30f75c7ef..30f75c7ef 100644
--- a/html/open.png
+++ b/open.png
Binary files differ
diff --git a/html/os2compat_8h_source.html b/os2compat_8h_source.html
index c6ca5cc5c..c6ca5cc5c 100644
--- a/html/os2compat_8h_source.html
+++ b/os2compat_8h_source.html
diff --git a/html/osd_8h_source.html b/osd_8h_source.html
index 18d0d9751..18d0d9751 100644
--- a/html/osd_8h_source.html
+++ b/osd_8h_source.html
diff --git a/html/osmformat_8pb-c_8h_source.html b/osmformat_8pb-c_8h_source.html
index 5e2640305..5e2640305 100644
--- a/html/osmformat_8pb-c_8h_source.html
+++ b/osmformat_8pb-c_8h_source.html
diff --git a/html/pages.html b/pages.html
index 0e912f049..0e912f049 100644
--- a/html/pages.html
+++ b/pages.html
diff --git a/html/param_8h_source.html b/param_8h_source.html
index a2364997b..a2364997b 100644
--- a/html/param_8h_source.html
+++ b/param_8h_source.html
diff --git a/html/phoneme_8h_source.html b/phoneme_8h_source.html
index 3e97ca547..3e97ca547 100644
--- a/html/phoneme_8h_source.html
+++ b/phoneme_8h_source.html
diff --git a/html/phrase_8h_source.html b/phrase_8h_source.html
index e2a2e32a7..e2a2e32a7 100644
--- a/html/phrase_8h_source.html
+++ b/phrase_8h_source.html
diff --git a/html/plugin_8h_source.html b/plugin_8h_source.html
index a0faee91c..a0faee91c 100644
--- a/html/plugin_8h_source.html
+++ b/plugin_8h_source.html
diff --git a/html/plugin__def_8h_source.html b/plugin__def_8h_source.html
index 9ec257641..9ec257641 100644
--- a/html/plugin__def_8h_source.html
+++ b/plugin__def_8h_source.html
diff --git a/html/plural-exp_8h_source.html b/plural-exp_8h_source.html
index 77cab3fad..77cab3fad 100644
--- a/html/plural-exp_8h_source.html
+++ b/plural-exp_8h_source.html
diff --git a/html/png_8h_source.html b/png_8h_source.html
index bfb30b168..bfb30b168 100644
--- a/html/png_8h_source.html
+++ b/png_8h_source.html
diff --git a/html/pngconf_8h_source.html b/pngconf_8h_source.html
index 38ef6f342..38ef6f342 100644
--- a/html/pngconf_8h_source.html
+++ b/pngconf_8h_source.html
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
deleted file mode 100644
index 1967005b4..000000000
--- a/po/CMakeLists.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-FIND_PROGRAM(XGETTEXT xgettext)
-
-set(POTFILES
- ${PROJECT_SOURCE_DIR}/navit/main.c
- ${PROJECT_SOURCE_DIR}/navit/navigation.c
- ${PROJECT_SOURCE_DIR}/navit/navit.c
- ${PROJECT_SOURCE_DIR}/navit/popup.c
- ${PROJECT_SOURCE_DIR}/navit/country.c
- ${PROJECT_SOURCE_DIR}/navit/start_real.c
- ${PROJECT_SOURCE_DIR}/navit/route.c
- ${PROJECT_SOURCE_DIR}/navit/vehicle.c
- ${PROJECT_SOURCE_DIR}/navit/bookmarks.c
- ${PROJECT_SOURCE_DIR}/navit/gui/gtk/destination.c
- ${PROJECT_SOURCE_DIR}/navit/gui/gtk/gui_gtk_action.c
- ${PROJECT_SOURCE_DIR}/navit/gui/gtk/gui_gtk_poi.c
- ${PROJECT_SOURCE_DIR}/navit/gui/gtk/gui_gtk_statusbar.c
- ${PROJECT_SOURCE_DIR}/navit/gui/internal/gui_internal.c
- ${PROJECT_SOURCE_DIR}/navit/gui/internal/gui_internal_bookmark.c
- ${PROJECT_SOURCE_DIR}/navit/gui/internal/gui_internal_command.c
- ${PROJECT_SOURCE_DIR}/navit/gui/internal/gui_internal_html.c
- ${PROJECT_SOURCE_DIR}/navit/gui/internal/gui_internal_menu.c
- ${PROJECT_SOURCE_DIR}/navit/gui/internal/gui_internal_poi.c
- ${PROJECT_SOURCE_DIR}/navit/gui/internal/gui_internal_search.c
- ${PROJECT_SOURCE_DIR}/navit/gui/internal/gui_internal_widget.c
- ${PROJECT_SOURCE_DIR}/navit/osd/core/osd_core.c
- ${PROJECT_SOURCE_DIR}/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java
- ${PROJECT_SOURCE_DIR}/navit/android/src/org/navitproject/navit/NavitDialogs.java
- ${PROJECT_SOURCE_DIR}/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java
- ${PROJECT_SOURCE_DIR}/navit/android/src/org/navitproject/navit/NavitGraphics.java
- ${PROJECT_SOURCE_DIR}/navit/android/src/org/navitproject/navit/Navit.java
- ${PROJECT_SOURCE_DIR}/navit/android/src/org/navitproject/navit/NavitMapDownloader.java
- ${CMAKE_CURRENT_BINARY_DIR}/navit_shipped.c
- ${CMAKE_CURRENT_BINARY_DIR}/strings_xml.c
-)
-
-# Trick gettext to get translateable strings out of navit_shipped.xml
-
-ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/navit_shipped.c
- DEPENDS ${PROJECT_SOURCE_DIR}/navit/navit_shipped.xml
- COMMAND ${CMAKE_COMMAND} -D SRC=${PROJECT_SOURCE_DIR}/navit/navit_shipped.xml -D DST=${CMAKE_CURRENT_BINARY_DIR}/navit_shipped.c
- -P ${PROJECT_SOURCE_DIR}/cmake/navit_xml_parser.cmake
-)
-
-# Trick gettext to get translateable strings out of android strings.xml
-
-ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/strings_xml.c
- DEPENDS ${PROJECT_SOURCE_DIR}/navit/android/res/values/strings.xml
- COMMAND ${CMAKE_COMMAND} -D SRC=${PROJECT_SOURCE_DIR}/navit/android/res/values/strings.xml -D DST=${CMAKE_CURRENT_BINARY_DIR}/strings_xml.c
- -P ${PROJECT_SOURCE_DIR}/cmake/strings_xml_parser.cmake
-)
-
-
-ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/navit.pot
- DEPENDS ${POTFILES}
- COMMAND ${XGETTEXT} --no-location --default-domain=navit_tmp --add-comments --keyword=_ --keyword=_n --keyword=navit_nls_gettext --keyword=navit_nls_ngettext:1,2 ${POTFILES}
- COMMAND ${CMAKE_COMMAND} -DMATCHES="CHARSET" -DREPLACE="utf-8"
- -DSRC=${CMAKE_CURRENT_BINARY_DIR}/navit_tmp.po -DDST=${CMAKE_CURRENT_BINARY_DIR}/navit.pot
- -P ${PROJECT_SOURCE_DIR}/cmake/replace.cmake
-)
-
-FILE(GLOB POIN_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.po.in")
-
-string(REPLACE ".po.in" "" LANGUAGES "${POIN_FILES}")
-
-foreach (LANG ${LANGUAGES})
- ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/navit.pot ${CMAKE_CURRENT_SOURCE_DIR}/${LANG}.po.in
- COMMAND ${CMAKE_COMMAND} -D SRC=${CMAKE_CURRENT_SOURCE_DIR}/${LANG}.po.in -D DST=${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po.tmp -DPACKAGE_STRING=${PACKAGE_STRING} -P ${PROJECT_SOURCE_DIR}/cmake/navit_po_version.cmake
- COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --no-fuzzy-matching --verbose --quiet -o "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po" "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po.tmp" ${CMAKE_CURRENT_BINARY_DIR}/navit.pot
- COMMAND ${CMAKE_COMMAND} -E remove "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po.tmp"
- )
-endforeach(LANG ${LANGUAGES})
-
-foreach (LANG ${LANGUAGES})
- ADD_CUSTOM_COMMAND(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po
- COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --check --verbose --statistics --output-file="${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo" "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po"
- COMMAND ${CMAKE_COMMAND} -E make_directory "${PROJECT_BINARY_DIR}/locale/${LANG}/LC_MESSAGES"
- 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 ${PACKAGE}.mo)
-endforeach(LANG ${LANGUAGES})
-
-add_custom_target(locales ALL DEPENDS ${MOFILES})
diff --git a/po/af.po.in b/po/af.po.in
deleted file mode 100644
index 04af45fca..000000000
--- a/po/af.po.in
+++ /dev/null
@@ -1,2754 +0,0 @@
-# Afrikaans translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Andre Hugo https://launchpad.net/~cortexhugo
-# KaZeR https://launchpad.net/~kazer
-# Kobus https://launchpad.net/~kobuswolf
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Stephan Wessels https://launchpad.net/~slwessels
-# Wimpie Hall https://launchpad.net/~gotek
-# mdhull https://launchpad.net/~mark-emsafrica
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:57+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Afrikaans <af@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: af\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Loop vanaf bron gids\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "verander '%s' na '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nulste"
-
-msgid "first"
-msgstr "eerste"
-
-msgid "second"
-msgstr "tweede"
-
-msgid "third"
-msgstr "derde"
-
-msgid "fourth"
-msgstr "vierde"
-
-msgid "fifth"
-msgstr "vyfde"
-
-msgid "sixth"
-msgstr "sesde"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nulste uitgang"
-
-msgid "first exit"
-msgstr "eerste uitgang"
-
-msgid "second exit"
-msgstr "tweede uitgang"
-
-msgid "third exit"
-msgstr "derde uitgang"
-
-msgid "fourth exit"
-msgstr "vierde uitgang"
-
-msgid "fifth exit"
-msgstr "vyfde uitgang"
-
-msgid "sixth exit"
-msgstr "sesde uitgang"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "na %d meter"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d, %d kilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "na %d.%d kilometer"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "een kilometer"
-msgstr[1] "%d kilometer"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "na een kilometer"
-msgstr[1] "na %d kilometer"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sin die %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sin die %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sin die %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sin die %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sin die %s in"
-
-msgid "When possible, please turn around"
-msgstr "Draai asseblief om wanneer moontlik"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Volg die pad vir die volgende %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Gaan kortliks in die sirkel in"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Verlaat die sirkel by die %1$s %2$s"
-
-msgid "soon"
-msgstr "kortliks"
-
-msgid "now"
-msgstr "nou"
-
-msgid "then"
-msgstr "dan"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Neem die afrit %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Neem die afrit %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr "by die afrit"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "regs"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "links"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "maklik "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "skerp "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Neem die %1$s pad na %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "na %i paaie"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Draai %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "draai dan om"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Draai om %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "draai dan om"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Draai om %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "dan het jy jou bestemming bereik."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Jy het jou bestemming bereik %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Afrit"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posisie"
-
-msgid "Command"
-msgstr "Bevel"
-
-msgid "Length"
-msgstr "Lengte"
-
-msgid "km"
-msgstr "kilometer"
-
-msgid "m"
-msgstr "meter"
-
-msgid "Time"
-msgstr "Tyd"
-
-msgid "Destination Length"
-msgstr "Bestemming lengte"
-
-msgid "Destination Time"
-msgstr "Bestemming tyd"
-
-msgid "Roadbook"
-msgstr "Padkaart"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Stel as posisie"
-
-msgid "Set as destination"
-msgstr "Stel as bestemming"
-
-msgid "Add as bookmark"
-msgstr "Voeg as boekmerk by"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Skerm koordinaat : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Verenigde Arabiese Emirate"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigue en Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albanië"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenië"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Nederland Antille"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktika"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentinië"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikaanse Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Oostenryk"
-
-#. 036
-msgid "Australia"
-msgstr "Australië"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland Eiland"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaidjan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnië en Herzegowina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesj"
-
-#. 056
-msgid "Belgium"
-msgstr "België"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Boerkina Fasso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgarye"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrein"
-
-#. 108
-msgid "Burundi"
-msgstr "Boeroendi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "St. Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Broenei"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivië"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasilië"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhoetan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouveteiland"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Wit-Rusland"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Cocos- (Keeling) eilande"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, Demokratiese Republiek van die"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Sentraal-Afrikaanse Republiek"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Switserland"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Ivoorkus"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cookeilande"
-
-#. 152
-msgid "Chile"
-msgstr "Chili"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kameroen"
-
-#. 156
-msgid "China"
-msgstr "Sjina"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolombië"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kaap Verdie"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Kerseiland"
-
-#. 196
-msgid "Cyprus"
-msgstr "Siprus"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Tjeggiese Republiek"
-
-#. 276
-msgid "Germany"
-msgstr "Duitsland"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djiboeti"
-
-#. 208
-msgid "Denmark"
-msgstr "Denemarke"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikaanse Republiek"
-
-#. 012
-msgid "Algeria"
-msgstr "Algerië"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Esland"
-
-#. 818
-msgid "Egypt"
-msgstr "Egipte"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Wes-Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spanje"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopië"
-
-#. 246
-msgid "Finland"
-msgstr "Finland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland-eiland (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronesia, Federale state van"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Faroëreilande"
-
-#. 250
-msgid "France"
-msgstr "Frankryk"
-
-#. 266
-msgid "Gabon"
-msgstr "Gaboen"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Verenigde Koninkryk"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgië"
-
-#. 254
-msgid "French Guiana"
-msgstr "Frans-Guyana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambië"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinië"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekwatoriaal-Guinee"
-
-#. 300
-msgid "Greece"
-msgstr "Griekeland"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "South Georgië en die Suid Sandwich Eilande"
-
-#. 320
-msgid "Guatemala"
-msgstr "Gautemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinee-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard Eiland en McDonald Eiland"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroasië"
-
-#. 332
-msgid "Haiti"
-msgstr "Haïti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hongarye"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesië"
-
-#. 372
-msgid "Ireland"
-msgstr "Ierland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Man eiland"
-
-#. 356
-msgid "India"
-msgstr "Indië"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Brits Indiese oseaan gebiede"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran"
-
-#. 352
-msgid "Iceland"
-msgstr "Ysland"
-
-#. 380
-msgid "Italy"
-msgstr "Italië"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordanië"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komoros"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "St. Kitts en Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Noord-Korea"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Suid-Korea"
-
-#. 414
-msgid "Kuwait"
-msgstr "Koeweit"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kaaimanseilande"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "St. Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberië"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litoue"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxenburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Letland"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Marokko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldawië"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "St. Martin"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshall-eilande"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Masedonië"
-
-#. 466
-msgid "Mali"
-msgstr "Malie"
-
-#. 104
-msgid "Myanmar"
-msgstr "Mianmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolië"
-
-#. 446
-msgid "Macao"
-msgstr "Makao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Noordmarianaeilande"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mouritanië"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldive"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Meksiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Maleisië"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mosambiek"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibië"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nieu-Kaledonië"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk-eiland"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigerië"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Nederland"
-
-#. 578
-msgid "Norway"
-msgstr "Noorweë"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Naoeroe"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nieu-Seeland"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Frans Polinesië"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papoea Nieu-Guinee"
-
-#. 608
-msgid "Philippines"
-msgstr "Filippyne"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Pole"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "St. Pierre en Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn Eilande"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestynse Gebied, Besette"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguaai"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Réunion"
-
-#. 642
-msgid "Romania"
-msgstr "Roemenië"
-
-#. 688
-msgid "Serbia"
-msgstr "Serwië"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Rusland"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saoedi-Arabië"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Solomon-eilande"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelle"
-
-#. 736
-msgid "Sudan"
-msgstr "Soedan"
-
-#. 752
-msgid "Sweden"
-msgstr "Swede"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapoer"
-
-#. 654
-msgid "Saint Helena"
-msgstr "St. Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenië"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard en Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slowakye"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalië"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tomé en Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Sirië"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turkse en Caicos Eilande"
-
-#. 148
-msgid "Chad"
-msgstr "Tsjaad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Franse Suidelike gebiede"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadjikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Oos-Timor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisië"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkye"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad en Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Toewaloe"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzanië"
-
-#. 804
-msgid "Ukraine"
-msgstr "Oekraïne"
-
-#. 800
-msgid "Uganda"
-msgstr "Oeganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Verenigde State Kleiner uitliggende eilande"
-
-#. 840
-msgid "United States"
-msgstr "Vereenigde State"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Oesbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikaan"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "St. Vincent en die Grenadine"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Britse Maagde eilande"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Amerikaanse Maagde eilande"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Viëtnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis- en Futuna-eilande"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Suid-Afrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambië"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Onbekend, voeg is_in merkers by daai stede"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Kaart punt"
-
-msgid "Car"
-msgstr "Kar"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Land"
-
-msgid "Postal"
-msgstr "Pos"
-
-msgid "Town"
-msgstr "Dorp"
-
-msgid "District"
-msgstr "Distrik"
-
-msgid "Street"
-msgstr "Straat"
-
-msgid "Number"
-msgstr "Nommer"
-
-msgid "Enter Destination"
-msgstr "Kies Bestemming"
-
-msgid "Zip Code"
-msgstr "Poskode"
-
-msgid "City"
-msgstr "Stad"
-
-msgid "District/Township"
-msgstr "Distrik/Kontrei"
-
-msgid "Map"
-msgstr "Kaart"
-
-msgid "Bookmark"
-msgstr "Boekmerk"
-
-msgid "Destination"
-msgstr "Bestemming"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Skerm"
-
-msgid "_Route"
-msgstr "Roete"
-
-msgid "_Former Destinations"
-msgstr "Voorige bestemmings"
-
-msgid "_Bookmarks"
-msgstr "Boekmerke"
-
-msgid "_Map"
-msgstr "Kaart"
-
-msgid "_Layout"
-msgstr "Uitleg"
-
-msgid "_Projection"
-msgstr "Skatting"
-
-msgid "_Vehicle"
-msgstr "Voertuig"
-
-msgid "Zoom_Out"
-msgstr "ZoomUit"
-
-msgid "Decrease zoom level"
-msgstr "Verminder zoom vlak"
-
-msgid "Zoom_In"
-msgstr "ZoomIn"
-
-msgid "Increase zoom level"
-msgstr "Vermeerder zoom vlak"
-
-msgid "_Recalculate"
-msgstr "Herbereken"
-
-msgid "Redraw map"
-msgstr "Teken kaart oor"
-
-msgid "_Info"
-msgstr "Inligting"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Toon adres soek skerm"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Stop Navigasie"
-
-msgid "Test"
-msgstr "Toets"
-
-msgid "_Quit"
-msgstr "_Sluit af"
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Koppel aan Pad"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Skakel kaart orientasie na noord of voertuig"
-
-msgid "_Roadbook"
-msgstr "Padkaart"
-
-msgid "Show/hide route description"
-msgstr "Toon/verskuil roete beskrywing"
-
-msgid "_Autozoom"
-msgstr "Outozoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Skakel Aan/af outomatiese zoom vlak verandering"
-
-msgid "_Fullscreen"
-msgstr "Volskerm"
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NO"
-
-msgid "E"
-msgstr "O"
-
-msgid "SE"
-msgstr "SO"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nee"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Roete %4.0fkm %02d:%02d aankomstyd"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Roete 0000km 0+00:00 aankomstyd"
-
-msgid "Help"
-msgstr "Hulp"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Besigtig in blaaier"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Strate"
-
-msgid "House numbers"
-msgstr "Huis Nommers"
-
-msgid "View Attributes"
-msgstr "Besigtig eienskappe"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Belangpunte"
-
-msgid "View on map"
-msgstr "Beloer op kaart"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Sny Boekmerk"
-
-msgid "Copy Bookmark"
-msgstr "Kopieer Boekmerk"
-
-msgid "Rename Bookmark"
-msgstr "Hernoem Boekmerk"
-
-msgid "Paste Bookmark"
-msgstr "Plaas Boekmerk"
-
-msgid "Delete Bookmark"
-msgstr "Verwyder Boekmerk"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Boekmerke"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Voeg Boekmerk Leger by"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Plaas boekmerk"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Boekmerk %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Wys Satelliet Inligting"
-
-msgid " Elevation "
-msgstr " Hoogte "
-
-msgid " Azimuth "
-msgstr " Rigting "
-
-msgid "Show NMEA Data"
-msgstr "Wys NMEA data"
-
-msgid "car"
-msgstr "Motor"
-
-msgid "bike"
-msgstr "Motorfiets"
-
-msgid "pedestrian"
-msgstr "voetganger"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Huidige Profiel: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Verander profiel na: %s"
-
-msgid "Set as active"
-msgstr "Maak aktief"
-
-msgid "Show Satellite status"
-msgstr "Wys satelliet inligting"
-
-msgid "Show NMEA data"
-msgstr "Wys NMEA data"
-
-msgid "Add Bookmark"
-msgstr "Voeg Boekmerk by"
-
-msgid "Rename"
-msgstr "Hernoem"
-
-msgid "About Navit"
-msgstr "Rakende Navit"
-
-#. Authors
-msgid "By"
-msgstr "Skrywers"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "En die hele Navit Span"
-
-msgid "members and contributors."
-msgstr "lede en bydraers"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Voertuig"
-
-msgid "Rules"
-msgstr "Reëls"
-
-msgid "Lock on road"
-msgstr "Koppel aan pad"
-
-msgid "Northing"
-msgstr "Draai kaart noord"
-
-msgid "Map follows Vehicle"
-msgstr "Kaart volg voertuig"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Kaarte"
-
-msgid "Layout"
-msgstr "Uitleg"
-
-msgid "Height Profile"
-msgstr "Hoë profiel"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Roete Beskrywing"
-
-msgid "Show Locale"
-msgstr "Toon Lokalisering"
-
-msgid "Former Destinations"
-msgstr "Voorige bestemmings"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Boodskap"
-
-msgid "Back"
-msgstr "Terug"
-
-msgid "Back to map"
-msgstr "Terug kaart toe"
-
-msgid "Main Menu"
-msgstr "Hoofkieslys"
-
-msgid "House number"
-msgstr "Huis Nommer"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Voertuig posisie"
-
-msgid "Main menu"
-msgstr "Hoofkieslys"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Wys\n"
-"Kaart"
-
-msgid "Settings"
-msgstr "Instellings"
-
-msgid "Tools"
-msgstr "Gereedskap"
-
-msgid "Route"
-msgstr "Roete"
-
-msgid "About"
-msgstr "Rakende"
-
-msgid "Quit"
-msgstr "Verlaat"
-
-msgid "Actions"
-msgstr "Aksies"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Stop\n"
-"Navigasie"
-
-msgid "Display"
-msgstr "Skerm"
-
-msgid "Fullscreen"
-msgstr "Volskerm"
-
-msgid "Window Mode"
-msgstr "Venster Modus"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Beskrywing"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "perd"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "verlaat dan die sirkel by die %1$s %2$s"
diff --git a/po/ar.po.in b/po/ar.po.in
deleted file mode 100644
index 51655456e..000000000
--- a/po/ar.po.in
+++ /dev/null
@@ -1,2769 +0,0 @@
-# Arabic translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Magd Addin M. Almuntaser https://launchpad.net/~ttmtt-team
-# dargirov https://launchpad.net/~dargirov
-# drsaudi https://launchpad.net/~mon7b6
-# metehyi https://launchpad.net/~metehyi
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:57+0000\n"
-"Last-Translator: dargirov <dargirov@mail.ru>\n"
-"Language-Team: Arabic <ar@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
-"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
-"Language: ar\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "جاري التنÙيذ من المجلد المصدر\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "وضع حالة '%s' إلى '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "(الرقم) صÙر"
-
-msgid "first"
-msgstr "الأوّل"
-
-msgid "second"
-msgstr "الثّاني"
-
-msgid "third"
-msgstr "الثّالث"
-
-msgid "fourth"
-msgstr "الرّابع"
-
-msgid "fifth"
-msgstr "الخامس"
-
-msgid "sixth"
-msgstr "السادس"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "المخرج ذو الرقم صÙر"
-
-msgid "first exit"
-msgstr "المخرج الأول"
-
-msgid "second exit"
-msgstr "المخرج الثاني"
-
-msgid "third exit"
-msgstr "المخرج الثالث"
-
-msgid "fourth exit"
-msgstr "المخرج الرابع"
-
-msgid "fifth exit"
-msgstr "المخرج الخامس"
-
-msgid "sixth exit"
-msgstr "المخرج السادس"
-
-#, c-format
-msgid "%d feet"
-msgstr "%dقدم"
-
-#, c-format
-msgid "in %d feet"
-msgstr "بعد %d قدم"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d أميال"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "بعد %d.%d أميال"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "مايل واحد"
-msgstr[1] "%d أميال"
-msgstr[2] "%d أميال"
-msgstr[3] "%d أميال"
-msgstr[4] "%d أميال"
-msgstr[5] "%d أميال"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "بعد مايل واحد"
-msgstr[1] "بعد %d أميال"
-msgstr[2] "بعد %d أميال"
-msgstr[3] "بعد %d أميال"
-msgstr[4] "بعد %d أميال"
-msgstr[5] "بعد %d أميال"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d متر"
-
-#, c-format
-msgid "in %d meters"
-msgstr "بعد %d متر"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d كلم"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "بعد %d%d كلم"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "كلم واحد"
-msgstr[1] "%d كلم"
-msgstr[2] "%d كلم"
-msgstr[3] "%d كلم"
-msgstr[4] "%d كلم"
-msgstr[5] "%d كلم"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "بعد كلم واحد"
-msgstr[1] "بعد %d كلم"
-msgstr[2] "بعد %d كلم"
-msgstr[3] "بعد %d كلم"
-msgstr[4] "بعد %d كلم"
-msgstr[5] "بعد %d كلم"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s إلى داخل الشارع %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sإلى داخل %s%s%s|صÙØ© الذكر"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sإلى داخل %s%s%s|صÙØ© الأنثى"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sإلى داخل %s%s%s|غير محدد الجنس"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s إلى داخل %s"
-
-msgid "When possible, please turn around"
-msgstr "حيث ممكن الرجاء اللÙ"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "تجاه %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "تابع الطريق لل- %s التالية"
-
-msgid "Enter the roundabout soon"
-msgstr "قريباً الدخول إلى المستديرة"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "أخرج من المستديرة عند الــ %1$s %2$s"
-
-msgid "soon"
-msgstr "قريبا"
-
-msgid "now"
-msgstr "الآن"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "إلى اليمين"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "إلى اليسار"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "بسهولة "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "بكل شدة "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "خذ الطريق %1$s إلى ال%2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "بعد %i طرقات"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "حوّل %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "Ùˆ بعدها تكون قد وصلت إلى هدÙÙƒ"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "لقد وصلت إلى هدÙÙƒ %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "خروج"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "الموقع"
-
-msgid "Command"
-msgstr "الأمر"
-
-msgid "Length"
-msgstr "الطول"
-
-msgid "km"
-msgstr "كلم"
-
-msgid "m"
-msgstr "Ù…."
-
-msgid "Time"
-msgstr "الوقت"
-
-msgid "Destination Length"
-msgstr "بÙعد الهدÙ"
-
-msgid "Destination Time"
-msgstr "الوقت ÙÙŠ مكان الوصول"
-
-msgid "Roadbook"
-msgstr "سجل خريطة الطريق"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "النقطة المرحلية %d"
-
-msgid "Visit before..."
-msgstr "تمت زيارته قبل..."
-
-msgid "Set as position"
-msgstr "عين كموقع حالي"
-
-msgid "Set as destination"
-msgstr "عيّن كهدÙ"
-
-msgid "Add as bookmark"
-msgstr "أض٠كعلامة مراجعة"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "الموقع 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "إحداثيات الشاشة :%d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "أندورا"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "الإمارات العربيّة المتّحدة"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Ø£Ùغانستان"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "أنتيغوا وباربودا"
-
-#. 660
-msgid "Anguilla"
-msgstr "أنغويلا"
-
-#. 008
-msgid "Albania"
-msgstr "ألبانيا"
-
-#. 051
-msgid "Armenia"
-msgstr "أرمينيا"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "الأنتيل الهولندية"
-
-#. 024
-msgid "Angola"
-msgstr "أنغولا"
-
-#. 010
-msgid "Antarctica"
-msgstr "أنتاركتيكا"
-
-#. 032
-msgid "Argentina"
-msgstr "الأرجنتين"
-
-#. 016
-msgid "American Samoa"
-msgstr "ساموا الأميركية"
-
-#. 040
-msgid "Austria"
-msgstr "النمسا"
-
-#. 036
-msgid "Australia"
-msgstr "أستراليا"
-
-#. 533
-msgid "Aruba"
-msgstr "أروبا"
-
-#. 248
-msgid "Aland Islands"
-msgstr "جزر أولان"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "أذربيجان"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "البوسنة والهرسك"
-
-#. 052
-msgid "Barbados"
-msgstr "بربادوس"
-
-#. 050
-msgid "Bangladesh"
-msgstr "بنغلادش"
-
-#. 056
-msgid "Belgium"
-msgstr "بلجيكا"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "بوركينا Ùاسو"
-
-#. 100
-msgid "Bulgaria"
-msgstr "بلغاريا"
-
-#. 048
-msgid "Bahrain"
-msgstr "البحرين"
-
-#. 108
-msgid "Burundi"
-msgstr "بوروندي"
-
-#. 204
-msgid "Benin"
-msgstr "البنين"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "سانت بارتيليمي"
-
-#. 060
-msgid "Bermuda"
-msgstr "جزر البرمودا"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "بروناي دار السّلام"
-
-#. 068
-msgid "Bolivia"
-msgstr "بوليÙيا"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "البرازيل"
-
-#. 044
-msgid "Bahamas"
-msgstr "جزر البهاما"
-
-#. 064
-msgid "Bhutan"
-msgstr "بوتان"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "جزيرة بوÙيت"
-
-#. 072
-msgid "Botswana"
-msgstr "بوتسوانا"
-
-#. 112
-msgid "Belarus"
-msgstr "روسيا البيضاء \\ بيلاروس"
-
-#. 084
-msgid "Belize"
-msgstr "بيليز"
-
-#. 124
-msgid "Canada"
-msgstr "كندا"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "جزر الكوكوس (كيلنك)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "جمهورية الكونغو الديمقراطيه"
-
-#. 140
-msgid "Central African Republic"
-msgstr "جمهورية Ø¥Ùريقيا الوسطى"
-
-#. 178
-msgid "Congo"
-msgstr "الكونغو"
-
-#. 756
-msgid "Switzerland"
-msgstr "سويسرا"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "ساحل العاج"
-
-#. 184
-msgid "Cook Islands"
-msgstr "جزر كوك"
-
-#. 152
-msgid "Chile"
-msgstr "تشيلي"
-
-#. 120
-msgid "Cameroon"
-msgstr "الكامرون"
-
-#. 156
-msgid "China"
-msgstr "الصين"
-
-#. 170
-msgid "Colombia"
-msgstr "كولومبيا"
-
-#. 188
-msgid "Costa Rica"
-msgstr "كوستاريكا"
-
-#. 192
-msgid "Cuba"
-msgstr "كوبا"
-
-#. 132
-msgid "Cape Verde"
-msgstr "الرأس الاخضر كاب Ùيردي"
-
-#. 531
-msgid "Curacao"
-msgstr "كوروكاو"
-
-#. 162
-msgid "Christmas Island"
-msgstr "جزر الكريسماس"
-
-#. 196
-msgid "Cyprus"
-msgstr "قبرص"
-
-#. 203
-msgid "Czech Republic"
-msgstr "جمهورية التشيك"
-
-#. 276
-msgid "Germany"
-msgstr "ألمانيا"
-
-#. 262
-msgid "Djibouti"
-msgstr "جيبوتي"
-
-#. 208
-msgid "Denmark"
-msgstr "الدنمارك"
-
-#. 212
-msgid "Dominica"
-msgstr "الدّومينيكا"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "جمهورية الدومينيكان"
-
-#. 012
-msgid "Algeria"
-msgstr "الجزائر"
-
-#. 218
-msgid "Ecuador"
-msgstr "الإكوادور"
-
-#. 233
-msgid "Estonia"
-msgstr "أستونيا"
-
-#. 818
-msgid "Egypt"
-msgstr "جمهورية مصر العربية"
-
-#. 732
-msgid "Western Sahara"
-msgstr "الصحراء الغربية"
-
-#. 232
-msgid "Eritrea"
-msgstr "أريتريا"
-
-#. 724
-msgid "Spain"
-msgstr "إسبانيا"
-
-#. 231
-msgid "Ethiopia"
-msgstr "الحبشة"
-
-#. 246
-msgid "Finland"
-msgstr "Ùنلندا"
-
-#. 242
-msgid "Fiji"
-msgstr "Ùيجي"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "جزر Ùولكلاند (مالÙيناس)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "ميكرونيزيا، ولايات ميكرونيزيا الÙدرالية"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "جزر الÙارو"
-
-#. 250
-msgid "France"
-msgstr "Ùرنسا"
-
-#. 266
-msgid "Gabon"
-msgstr "الغابون"
-
-#. 826
-msgid "United Kingdom"
-msgstr "المملكة المتّحدة"
-
-#. 308
-msgid "Grenada"
-msgstr "غرناطة"
-
-#. 268
-msgid "Georgia"
-msgstr "جورجيا"
-
-#. 254
-msgid "French Guiana"
-msgstr "جويانا الÙرنسية"
-
-#. 831
-msgid "Guernsey"
-msgstr "غويرنسي"
-
-#. 288
-msgid "Ghana"
-msgstr "غانا"
-
-#. 292
-msgid "Gibraltar"
-msgstr "جبل طارق"
-
-#. 304
-msgid "Greenland"
-msgstr "جرينلاندا"
-
-#. 270
-msgid "Gambia"
-msgstr "غامبيا"
-
-#. 324
-msgid "Guinea"
-msgstr "غينيا"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "جوادلوب"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "غينيا الاستوائيه"
-
-#. 300
-msgid "Greece"
-msgstr "اليونان"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "جورجيا الجنوبيّة و جزر ساندويتش الجنوبيّة"
-
-#. 320
-msgid "Guatemala"
-msgstr "جواتيمالا"
-
-#. 316
-msgid "Guam"
-msgstr "غوام"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "غينيا بيساو"
-
-#. 328
-msgid "Guyana"
-msgstr "غيانا"
-
-#. 344
-msgid "Hong Kong"
-msgstr "هونغ كونغ"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "جزيرة هيرد وجزر مَكْدونالد"
-
-#. 340
-msgid "Honduras"
-msgstr "الهوندوراس"
-
-#. 191
-msgid "Croatia"
-msgstr "كرواتيا"
-
-#. 332
-msgid "Haiti"
-msgstr "هايتي"
-
-#. 348
-msgid "Hungary"
-msgstr "المجر (هنغاريا)"
-
-#. 360
-msgid "Indonesia"
-msgstr "إندونيسيا"
-
-#. 372
-msgid "Ireland"
-msgstr "إيرلندا"
-
-#. 376
-msgid "Israel"
-msgstr "Ùلسطين المحتلة"
-
-#. 833
-msgid "Isle of Man"
-msgstr "جزيرة مان"
-
-#. 356
-msgid "India"
-msgstr "الهند"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "مقاطعة المحيط الهندي البريطانيّة"
-
-#. 368
-msgid "Iraq"
-msgstr "العراق"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "إيران، الجمهوريّة الإسلاميّة الإيرانيّة"
-
-#. 352
-msgid "Iceland"
-msgstr "آيسلندا"
-
-#. 380
-msgid "Italy"
-msgstr "إيطاليا"
-
-#. 832
-msgid "Jersey"
-msgstr "جيرسي"
-
-#. 388
-msgid "Jamaica"
-msgstr "جامايكا"
-
-#. 400
-msgid "Jordan"
-msgstr "الأردن"
-
-#. 392
-msgid "Japan"
-msgstr "اليابان"
-
-#. 404
-msgid "Kenya"
-msgstr "كينيا"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "قرغيزستان"
-
-#. 116
-msgid "Cambodia"
-msgstr "كامبوديا"
-
-#. 296
-msgid "Kiribati"
-msgstr "كيريباتي"
-
-#. 174
-msgid "Comoros"
-msgstr "جزر القمر"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "سانت كيتس ونيÙيس"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "كوريا، جمهورية كوريا الشّعبيّة الدّيموقراطيّة"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "كوريا، جمهوريّة كوريا"
-
-#. 414
-msgid "Kuwait"
-msgstr "الكويت"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "جزر الكايمان"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "كازاخستان"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "جمهوريّة لاو الدّيموقراطيّة الشّعبيّة"
-
-#. 422
-msgid "Lebanon"
-msgstr "لبنان"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "سانت لوسيا"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "ليشتنشتاين"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "سريلانكا"
-
-#. 430
-msgid "Liberia"
-msgstr "ليبريا"
-
-#. 426
-msgid "Lesotho"
-msgstr "ليسوتو"
-
-#. 440
-msgid "Lithuania"
-msgstr "ليثوانيا"
-
-#. 442
-msgid "Luxembourg"
-msgstr "اللكسمبورغ"
-
-#. 428
-msgid "Latvia"
-msgstr "لاتÙيا"
-
-#. 434
-msgid "Libya"
-msgstr "ليبيا"
-
-#. 504
-msgid "Morocco"
-msgstr "المغرب"
-
-#. 492
-msgid "Monaco"
-msgstr "موناكو"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "مولدوÙا، جمهوريّة مولدوÙا"
-
-#. 499
-msgid "Montenegro"
-msgstr "المونتنيغرو"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "سانت مارتين (القطاع الÙرنسي)"
-
-#. 450
-msgid "Madagascar"
-msgstr "مدغشقر"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "جزر المارشال"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "مقدونيا"
-
-#. 466
-msgid "Mali"
-msgstr "مالي"
-
-#. 104
-msgid "Myanmar"
-msgstr "مينامار"
-
-#. 496
-msgid "Mongolia"
-msgstr "منغوليا"
-
-#. 446
-msgid "Macao"
-msgstr "ماكاو"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "جزر ماريانا الشّمالية"
-
-#. 474
-msgid "Martinique"
-msgstr "مارتينيك"
-
-#. 478
-msgid "Mauritania"
-msgstr "موريتانيا"
-
-#. 500
-msgid "Montserrat"
-msgstr "مونتسيرات"
-
-#. 470
-msgid "Malta"
-msgstr "مالطة"
-
-#. 480
-msgid "Mauritius"
-msgstr "موريشيوس"
-
-#. 462
-msgid "Maldives"
-msgstr "جزر المالديÙ"
-
-#. 454
-msgid "Malawi"
-msgstr "مالاوي"
-
-#. 484
-msgid "Mexico"
-msgstr "المكسيك"
-
-#. 458
-msgid "Malaysia"
-msgstr "ماليزيا"
-
-#. 508
-msgid "Mozambique"
-msgstr "الموزمبيق"
-
-#. 516
-msgid "Namibia"
-msgstr "ناميبيا"
-
-#. 540
-msgid "New Caledonia"
-msgstr "قلدونيا الجديدة"
-
-#. 562
-msgid "Niger"
-msgstr "النّيجر"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "جزيرة نورÙولك"
-
-#. 566
-msgid "Nigeria"
-msgstr "نيجيريا"
-
-#. 558
-msgid "Nicaragua"
-msgstr "نيكاراغوا"
-
-#. 528
-msgid "Netherlands"
-msgstr "هولندا"
-
-#. 578
-msgid "Norway"
-msgstr "النروج"
-
-#. 524
-msgid "Nepal"
-msgstr "نيبال"
-
-#. 520
-msgid "Nauru"
-msgstr "ناورو"
-
-#. 570
-msgid "Niue"
-msgstr "نيوي"
-
-#. 554
-msgid "New Zealand"
-msgstr "نيوزيلاندا"
-
-#. 512
-msgid "Oman"
-msgstr "عÙمان"
-
-#. 591
-msgid "Panama"
-msgstr "باناما"
-
-#. 604
-msgid "Peru"
-msgstr "البيرو"
-
-#. 258
-msgid "French Polynesia"
-msgstr "بولينيزيا الÙرنسية"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "بابوا غينيا الجديدة"
-
-#. 608
-msgid "Philippines"
-msgstr "الÙلبّين"
-
-#. 586
-msgid "Pakistan"
-msgstr "باكستان"
-
-#. 616
-msgid "Poland"
-msgstr "بولونيا"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "سانت بيير وميكولون"
-
-#. 612
-msgid "Pitcairn"
-msgstr "بتكايرن"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "بورتوريكو"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Ùلسطين المحتلّة، الأراضي الÙلسطينيّة المحتلّة"
-
-#. 620
-msgid "Portugal"
-msgstr "البرتغال"
-
-#. 585
-msgid "Palau"
-msgstr "بالاو"
-
-#. 600
-msgid "Paraguay"
-msgstr "الباراغواي"
-
-#. 634
-msgid "Qatar"
-msgstr "قطر"
-
-#. 638
-msgid "Reunion"
-msgstr "ريونيون"
-
-#. 642
-msgid "Romania"
-msgstr "رومانيا"
-
-#. 688
-msgid "Serbia"
-msgstr "صربيا"
-
-#. 643
-msgid "Russian Federation"
-msgstr "الإتّحاد الروسي"
-
-#. 646
-msgid "Rwanda"
-msgstr "رواندا"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "المملكة العربيّة السّعوديّة"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "جزر سليمان"
-
-#. 690
-msgid "Seychelles"
-msgstr "السّيشل"
-
-#. 736
-msgid "Sudan"
-msgstr "السودان"
-
-#. 752
-msgid "Sweden"
-msgstr "السّويد"
-
-#. 702
-msgid "Singapore"
-msgstr "سنغÙورة"
-
-#. 654
-msgid "Saint Helena"
-msgstr "سانت هيلينا"
-
-#. 705
-msgid "Slovenia"
-msgstr "سلوÙينيا"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "سÙالبارد وجان مايان"
-
-#. 703
-msgid "Slovakia"
-msgstr "سلوÙاكيا"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "سيراليون"
-
-#. 674
-msgid "San Marino"
-msgstr "سان مارينو"
-
-#. 686
-msgid "Senegal"
-msgstr "السنيغال"
-
-#. 706
-msgid "Somalia"
-msgstr "الصّومال"
-
-#. 740
-msgid "Suriname"
-msgstr "سورينام"
-
-#. 728
-msgid "South Sudan"
-msgstr "جنوب السودان"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "ساو تومي وبرينسيبي"
-
-#. 222
-msgid "El Salvador"
-msgstr "السلÙادور"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "الجمهوريّة العربيّة السّوريّة"
-
-#. 748
-msgid "Swaziland"
-msgstr "السّوازيلاند"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "جزر تركس وكايكوس"
-
-#. 148
-msgid "Chad"
-msgstr "التشاد"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "المقاطعات الجنوبية الÙرنسية"
-
-#. 768
-msgid "Togo"
-msgstr "توغو"
-
-#. 764
-msgid "Thailand"
-msgstr "تايلندا"
-
-#. 762
-msgid "Tajikistan"
-msgstr "طاجكستان"
-
-#. 772
-msgid "Tokelau"
-msgstr "توكلو"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "تيمور الشرقية"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "تركمانستان"
-
-#. 788
-msgid "Tunisia"
-msgstr "تونس"
-
-#. 776
-msgid "Tonga"
-msgstr "تونجا"
-
-#. 792
-msgid "Turkey"
-msgstr "تركيا"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "ترينيداد وتوباغو"
-
-#. 798
-msgid "Tuvalu"
-msgstr "توÙالو"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "تايوان، محاÙظة صينية"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "تنزانيا، جمهوريّة تنزانيا المتّحدة"
-
-#. 804
-msgid "Ukraine"
-msgstr "أوكرانيا"
-
-#. 800
-msgid "Uganda"
-msgstr "اوغندا"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "جزر الولايات المتحدة البعيدة الصغيرة"
-
-#. 840
-msgid "United States"
-msgstr "الولايات المتّحدة الأمريكية"
-
-#. 858
-msgid "Uruguay"
-msgstr "الأوروغواي"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "أوزبكستان"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "الكرسي الرسولي (دولة الÙاتيكان)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "سانت Ùنسنت والجرينادينز"
-
-#. 862
-msgid "Venezuela"
-msgstr "Ùنزويلا"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "جزر Ùيرجن البريطانية"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "جزر Ùيرجن ØŒ الولايات المتحدة"
-
-#. 704
-msgid "Viet Nam"
-msgstr "الÙييتنام"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Ùانواتو"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "واليس Ùˆ Ùوتونا"
-
-#. 882
-msgid "Samoa"
-msgstr "ساموا"
-
-#. 887
-msgid "Yemen"
-msgstr "اليمن"
-
-#. 175
-msgid "Mayotte"
-msgstr "مايوت"
-
-#. 710
-msgid "South Africa"
-msgstr "جنوب Ø¥Ùريقيا"
-
-#. 894
-msgid "Zambia"
-msgstr "زامبيا"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "زيمبابوي"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* غير معروÙØŒ أض٠تسميات is_in إلى تلك المدن"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr "شارع غير معروÙ"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr "Ùشلت ÙÙŠ كتابة مل٠علامات القراءة"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "النقطة على الخريطة"
-
-msgid "Car"
-msgstr "سيارة"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "الدولة"
-
-msgid "Postal"
-msgstr "بريدي"
-
-msgid "Town"
-msgstr "البلدة"
-
-msgid "District"
-msgstr "حي"
-
-msgid "Street"
-msgstr "الشارع"
-
-msgid "Number"
-msgstr "الرقم"
-
-msgid "Enter Destination"
-msgstr "أدخل الهدÙ"
-
-msgid "Zip Code"
-msgstr "الرمز البريدي"
-
-msgid "City"
-msgstr "المدينة"
-
-msgid "District/Township"
-msgstr "الحي/البلدة"
-
-msgid "Map"
-msgstr "الخريطة"
-
-msgid "Bookmark"
-msgstr "إشارة مرجعية"
-
-msgid "Destination"
-msgstr "الهدÙ"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "المظهار"
-
-msgid "_Route"
-msgstr "الطريق"
-
-msgid "_Former Destinations"
-msgstr "الأهدا٠السابقة"
-
-msgid "_Bookmarks"
-msgstr "إشارات مرجعية"
-
-msgid "_Map"
-msgstr "الخريطة"
-
-msgid "_Layout"
-msgstr "التصميم"
-
-msgid "_Projection"
-msgstr "الإسقاط"
-
-msgid "_Vehicle"
-msgstr "وسيلة التنقل"
-
-msgid "Zoom_Out"
-msgstr "صغّر الروئية"
-
-msgid "Decrease zoom level"
-msgstr "Ø®Ùض مستوى التكبير"
-
-msgid "Zoom_In"
-msgstr "كبّر الروئية"
-
-msgid "Increase zoom level"
-msgstr "إرÙع مستوى التكبير"
-
-msgid "_Recalculate"
-msgstr "إعادة الحساب"
-
-msgid "Redraw map"
-msgstr "أرسم الخريطو مجددا"
-
-msgid "_Info"
-msgstr "معلومات"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Ø¥Ùتح حوار البحث عن عنوان"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "ق٠الملاحة"
-
-msgid "Test"
-msgstr "اختبار"
-
-msgid "_Quit"
-msgstr "_إنهاء"
-
-msgid "Quit the application"
-msgstr "أنه٠التطبيق"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "إقÙال على الطريق"
-
-msgid "_Keep orientation to the North"
-msgstr "_حاÙظ على الإتجاه شمالا"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "تبديل اتجاه الخريطة إلى الشمال أو إلى السيارة"
-
-msgid "_Roadbook"
-msgstr "سجل خريطة الطريق"
-
-msgid "Show/hide route description"
-msgstr "أعرض/خبئ وص٠الطريق"
-
-msgid "_Autozoom"
-msgstr "تكبير/تصغير تلقائي"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Ùعل\\عطل تغيير مستوى التقريب تلقائياً"
-
-msgid "_Fullscreen"
-msgstr "ملء الشاشة"
-
-msgid "Data"
-msgstr "المعطيات"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "Ø´."
-
-msgid "NE"
-msgstr "Ø´. Ø´."
-
-msgid "E"
-msgstr "Ø´."
-
-msgid "SE"
-msgstr "ج. ش."
-
-msgid "S"
-msgstr "ج."
-
-msgid "SW"
-msgstr "ج. غ."
-
-msgid "W"
-msgstr "غ."
-
-msgid "NW"
-msgstr "ش. غ."
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "لا"
-
-msgid "2D"
-msgstr "ثنائي الأبعاد"
-
-msgid "3D"
-msgstr "ثلاثي الأبعاد"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Route %4.0fكلم %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "الطريك 0000كلم 0+00:00 ETA"
-
-msgid "Help"
-msgstr "المساعدة"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "أعرض ÙÙŠ المتصÙØ­"
-
-msgid "Item type"
-msgstr "نوع العنصر"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "الشوارع"
-
-msgid "House numbers"
-msgstr "أرقام المنازل"
-
-msgid "View Attributes"
-msgstr "أعرض الصÙات"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "مواقع ذات أهمية"
-
-msgid "View on map"
-msgstr "أعرض على الخريطة"
-
-msgid "Remove search results from the map"
-msgstr "أحذ٠نتائج البحث من الخريطة"
-
-msgid "Show results on the map"
-msgstr "أعرض النتائج على الخريطة"
-
-msgid "Cut Bookmark"
-msgstr "قص العلامة"
-
-msgid "Copy Bookmark"
-msgstr "انسخ علامة القرائة"
-
-msgid "Rename Bookmark"
-msgstr "إعادة تسمية العلامة"
-
-msgid "Paste Bookmark"
-msgstr "لصق العلامة"
-
-msgid "Delete Bookmark"
-msgstr "إحذ٠العلامة"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "إشارات مرجعية"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr "احذ٠المجلد"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "إضاÙØ© علامة على المجلد"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "لصق العلامة"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "علّم %s كإشارة مرجعية"
-
-#, c-format
-msgid "Download %s"
-msgstr "تنزيل %s"
-
-msgid "Map Download"
-msgstr "تنزيل الخريطة"
-
-msgid "Active"
-msgstr "Ùعال"
-
-msgid "Download Enabled"
-msgstr "التنزيل Ùعال"
-
-msgid "Download completely"
-msgstr "نزّل كاملا"
-
-msgid "Show Satellite Status"
-msgstr "أعرض حالة القمر الإسطناعي"
-
-msgid " Elevation "
-msgstr " الإرتÙاع "
-
-msgid " Azimuth "
-msgstr " السمت "
-
-msgid "Show NMEA Data"
-msgstr "أعرض المعطيات NMEA"
-
-msgid "car"
-msgstr "سيارة"
-
-msgid "bike"
-msgstr "دراجة"
-
-msgid "pedestrian"
-msgstr "مشاة"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "التعري٠الحالي: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "غيّر التعري٠إلى: %s"
-
-msgid "Set as active"
-msgstr "عيّن كــÙعلي"
-
-msgid "Show Satellite status"
-msgstr "أعرض حالة القمر الإسطناعي"
-
-msgid "Show NMEA data"
-msgstr "أعرض المعطيات NMEA"
-
-msgid "Add Bookmark"
-msgstr "أض٠إشارة مرجعية"
-
-msgid "Rename"
-msgstr "إعادة التسمية"
-
-msgid "About Navit"
-msgstr "عن Navit"
-
-#. Authors
-msgid "By"
-msgstr "حسب الكÙتاب"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "وجميع Ùريق Navit"
-
-msgid "members and contributors."
-msgstr "الأعضاء والمساهمين ."
-
-msgid "Waypoints"
-msgstr "نقاط المراحل"
-
-msgid "Enter Coordinates"
-msgstr "أدخل الإحداثيات"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr "أدخل الإحداثيات، مثلا:"
-
-msgid "Vehicle"
-msgstr "وسيلة التنقل"
-
-msgid "Rules"
-msgstr "القواعد"
-
-msgid "Lock on road"
-msgstr "إقÙال على الطريق"
-
-msgid "Northing"
-msgstr "شمالي دائم"
-
-msgid "Map follows Vehicle"
-msgstr "الخريطة تتبع وسيلة التنقل"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "الخرائط"
-
-msgid "Layout"
-msgstr "التصميم"
-
-msgid "Height Profile"
-msgstr "لمحة عن الإرتÙاع"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "وص٠الطريق"
-
-msgid "Show Locale"
-msgstr "أعرض المحليات"
-
-msgid "Former Destinations"
-msgstr "الأهدا٠السابقة"
-
-msgid "- No former destinations available -"
-msgstr "- لا يوجد إتجاهات متوÙرة -"
-
-msgid "Message"
-msgstr "الرسالة"
-
-msgid "Back"
-msgstr "السابق"
-
-msgid "Back to map"
-msgstr "إرجع إلى الخريطة"
-
-msgid "Main Menu"
-msgstr "اللائحة الرئيسية"
-
-msgid "House number"
-msgstr "رقم المنزل"
-
-msgid "Next"
-msgstr "التالي"
-
-msgid "Prev"
-msgstr "السابق"
-
-msgid "Return to route!"
-msgstr "إرجع إلى الطريق!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "إنتبه ! آلة تصوير"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "ألرجاء Ø®Ùض سرعتك"
-
-msgid "partial match"
-msgstr "تطابق جزئي"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "إبحث"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "البلدات"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "الخرائط المنزلة"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "الطريق إلى هنا"
-
-msgid "Cancel"
-msgstr "إلغاء"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "كامل القرة الأرضية"
-
-msgid "Africa"
-msgstr "Ø¥Ùريقيا"
-
-msgid "Canary Islands"
-msgstr "جزر الكناري"
-
-msgid "Asia"
-msgstr "آسيا"
-
-msgid "Korea"
-msgstr "كوريا"
-
-msgid "Taiwan"
-msgstr "تايوان"
-
-msgid "UAE+Other"
-msgstr "الإمارت العرية المتحدة و أخرى"
-
-msgid "Oceania"
-msgstr "أوقيانيا"
-
-msgid "Tasmania"
-msgstr "تسمانيا"
-
-msgid "Victoria"
-msgstr "Ùيكتوريا"
-
-msgid "New South Wales"
-msgstr "نيو ساوث ويلز"
-
-msgid "Europe"
-msgstr "أوروبا"
-
-msgid "Western Europe"
-msgstr "أوروبا الغربية"
-
-msgid "Azores"
-msgstr "جزر الأزور"
-
-msgid "BeNeLux"
-msgstr "بلجيكا هولاندة اللكسمبرغ"
-
-msgid "Alsace"
-msgstr "الألزاس"
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr "الوسط"
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr "كورسيكا"
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr "عاصمة Ùرنسا Ùˆ ضواحيها"
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr "بيكاردي"
-
-msgid "Poitou-Charentes"
-msgstr "بواتو شارانت"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr "رون-جبال الألب"
-
-msgid "Baden-Wuerttemberg"
-msgstr "بادن Ùورتمبيرغ"
-
-msgid "Bayern"
-msgstr "باÙاريا"
-
-msgid "Mittelfranken"
-msgstr "Ùرانكن الوسطى"
-
-msgid "Niederbayern"
-msgstr "باÙاريا السÙلى"
-
-msgid "Oberbayern"
-msgstr "باÙاريا العليا"
-
-msgid "Oberfranken"
-msgstr "Ùرانكن العليا"
-
-msgid "Oberpfalz"
-msgstr "بÙالز العليا"
-
-msgid "Schwaben"
-msgstr "Ø´Ùابن"
-
-msgid "Unterfranken"
-msgstr "Ùرانكن السÙلى"
-
-msgid "Berlin"
-msgstr "برلين"
-
-msgid "Brandenburg"
-msgstr "براندنبورغ"
-
-msgid "Bremen"
-msgstr "بريمن"
-
-msgid "Hamburg"
-msgstr "هامبرغ"
-
-msgid "Hessen"
-msgstr "هسن"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "مكليمبورغ-Ùوربومرن"
-
-msgid "Niedersachsen"
-msgstr "نيدرزاكسن"
-
-msgid "Nordrhein-westfalen"
-msgstr "نوردراين-ÙيستÙالن"
-
-msgid "Rheinland-Pfalz"
-msgstr "راينلاند-بÙالز"
-
-msgid "Saarland"
-msgstr "زارلاند"
-
-msgid "Sachsen-Anhalt"
-msgstr "زاكسن-أنهلت"
-
-msgid "Sachsen"
-msgstr "ساكسونيا"
-
-msgid "Schleswig-Holstein"
-msgstr "شليسÙيغ - هولشتاين"
-
-msgid "Thueringen"
-msgstr "تورينغن"
-
-msgid "Mallorca"
-msgstr "مايوركا"
-
-msgid "Galicia"
-msgstr "غاليسيا"
-
-msgid "Scandinavia"
-msgstr "سكنديناÙيا"
-
-msgid "England"
-msgstr "بريطانيا"
-
-msgid "Buckinghamshire"
-msgstr "باكينجهامشير"
-
-msgid "Cambridgeshire"
-msgstr "كامبريدجشاير"
-
-msgid "Cumbria"
-msgstr "كمبريا"
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr "هيريÙوردشاير"
-
-msgid "Kent"
-msgstr "كنت"
-
-msgid "Lancashire"
-msgstr "لانكشاير"
-
-msgid "Leicestershire"
-msgstr "لايسسترشاير"
-
-msgid "Norfolk"
-msgstr "نورÙولك"
-
-msgid "Nottinghamshire"
-msgstr "نوتينغمشاير"
-
-msgid "Oxfordshire"
-msgstr "أوكسÙوردشاير"
-
-msgid "Shropshire"
-msgstr "شروبشاير"
-
-msgid "Somerset"
-msgstr "سومرست"
-
-msgid "South yorkshire"
-msgstr "يوركشاير الجنوبية"
-
-msgid "Suffolk"
-msgstr "سوÙولك"
-
-msgid "Surrey"
-msgstr "سورّي"
-
-msgid "Wiltshire"
-msgstr "ويلتشايرر"
-
-msgid "Scotland"
-msgstr "أسكتلندا"
-
-msgid "Wales"
-msgstr "ويلز"
-
-msgid "Crete"
-msgstr "كريتا"
-
-msgid "North America"
-msgstr "أمريكا الشمالية"
-
-msgid "Alaska"
-msgstr "ألاسكا"
-
-msgid "Hawaii"
-msgstr "هاواي"
-
-msgid "USA"
-msgstr "الوﻻيات المتحدة الامريكية"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (بدون ألاسكا و هاواي)"
-
-msgid "Midwest"
-msgstr "وسط الغرب"
-
-msgid "Michigan"
-msgstr "ميشيغان"
-
-msgid "Ohio"
-msgstr "أوهايو"
-
-msgid "Northeast"
-msgstr "الشمال الشرقي"
-
-msgid "Massachusetts"
-msgstr "ماساتشوستس"
-
-msgid "Vermont"
-msgstr "Ùيرمونت"
-
-msgid "Pacific"
-msgstr "المحيط الهادئ"
-
-msgid "South"
-msgstr "الجنوب"
-
-msgid "Arkansas"
-msgstr "أركنساس"
-
-msgid "District of Columbia"
-msgstr "مقاطعة كولومبيا"
-
-msgid "Florida"
-msgstr "Ùلوريدا"
-
-msgid "Louisiana"
-msgstr "لويزيانا"
-
-msgid "Maryland"
-msgstr "ميريلاند"
-
-msgid "Mississippi"
-msgstr "ميسيسيبي"
-
-msgid "Oklahoma"
-msgstr "أوكلاهوما"
-
-msgid "Texas"
-msgstr "تكساس"
-
-msgid "Virginia"
-msgstr "Ùرجينيا"
-
-msgid "West Virginia"
-msgstr "غرب Ùيرجينيا"
-
-msgid "West"
-msgstr "الغرب"
-
-msgid "Arizona"
-msgstr "أريزونا"
-
-msgid "California"
-msgstr "كاليÙورنيا"
-
-msgid "Colorado"
-msgstr "كولورادو"
-
-msgid "Idaho"
-msgstr "إداهو"
-
-msgid "Montana"
-msgstr "مونتانا"
-
-msgid "New Mexico"
-msgstr "نيو مكسيكو"
-
-msgid "Nevada"
-msgstr "نيÙادا"
-
-msgid "Oregon"
-msgstr "أوريغون"
-
-msgid "Utah"
-msgstr "يوتاه"
-
-msgid "Washington State"
-msgstr "ولاية واشنطن"
-
-msgid "South+Middle America"
-msgstr "جنوب و وسط امريكا"
-
-msgid "Guyane Francaise"
-msgstr "غويانا الÙرنسية"
-
-msgid "downloading"
-msgstr "ÙŠÙنزّل"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "جاهز"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "لا يوجد مجال Ùارغ كاÙÙŠ"
-
-msgid "Error downloading map!"
-msgstr "خطأ أثناء تنزيل الخريطة!"
-
-msgid "Error writing map!"
-msgstr "خطأ عند كتابة الخريطة!"
-
-msgid "Map download aborted!"
-msgstr "تم إجهاض عملية التنزيل للخريطة !"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "زمن الوصول المتوقع"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "تنزيل الخريطة"
-
-msgid "Vehicle Position"
-msgstr "موقع وسيلة التنقل"
-
-msgid "Main menu"
-msgstr "اللائحة الرئيسية"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"أعرض\n"
-"الخريطة"
-
-msgid "Settings"
-msgstr "الإعدادات"
-
-msgid "Tools"
-msgstr "العدة"
-
-msgid "Route"
-msgstr "الطريق"
-
-msgid "About"
-msgstr "حوْل"
-
-msgid "Quit"
-msgstr "أخرج"
-
-msgid "Actions"
-msgstr "Ø£Ùعال"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"الأهداÙ\n"
-"السابقة"
-
-msgid "Coordinates"
-msgstr "الإحداثيات"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr "Ù‚ÙÙ‘"
-
-msgid "Display"
-msgstr "المظهار"
-
-msgid "Fullscreen"
-msgstr "ملء الشاشة"
-
-msgid "Window Mode"
-msgstr "نمط الناÙذة"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "الوصÙ"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr "حالة القمر الأصطناعي"
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "خيل/Ùرس"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "نعم"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "ناÙيت بدء التشغيل"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "مرحبا بك على ناÙيت"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "مواÙÙ‚"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "المعلومات الإضاÙية"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "تقريب"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "تبعيد"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "نزل الخرائط"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "أخرج من ناÙيت"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "النسخ الاحتياطي والاستعادة"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "حذ٠هذه الخريطة ؟"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "جاري التنزيل:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "خطأ عند تنزيل الخريطة."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "تم إجهاض عملية تنزيل الخريطة"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "الخرائط المحتوية على الموقع الحالي"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "البحث عن عنوان"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "أدخل الهدÙ"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "جاري البحث..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "لم يعثر على العنوان"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "جاري الحصول على نتائج البحث"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "جاري تحميل نتائج البحث"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "لم يتم العثور على نتائج"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "لم يتم إدخال أي نص"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "جاري تعيين الإتجاه إلى:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "اختر Ùعلاَ"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "الرجاء إدخال رقيقة أس دي"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "جاري النسخ الإحتياطي"
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "جاري الإستعادة"
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Ùشل النسخ الإحتياطي"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "لم يعثر على نسخ إحتياطي"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Ùشلت ÙÙŠ الإستعادة"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "اكتمل النسخ الإحتياطي بنجاح"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "لم يعثر على النسخة الإحطياتية"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "إختر النسخ الإحتياطي"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Ø­Ùظ احتياطي"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "استعادة"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "ثم أخرج من المستديرة عند الــ%1$s %2$s"
diff --git a/po/ast.po.in b/po/ast.po.in
deleted file mode 100644
index 02fe9cb07..000000000
--- a/po/ast.po.in
+++ /dev/null
@@ -1,2748 +0,0 @@
-# Asturian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Xuacu Saturio https://launchpad.net/~xuacusk8
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:57+0000\n"
-"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
-"Language-Team: Asturian <ast@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: ast\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Executando dende'l direutoriu fonte.\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "Conseñando '%s' como '%s'.\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "cero-ésimu"
-
-msgid "first"
-msgstr "primeru"
-
-msgid "second"
-msgstr "segundu"
-
-msgid "third"
-msgstr "terceru"
-
-msgid "fourth"
-msgstr "cuartu"
-
-msgid "fifth"
-msgstr "quintu"
-
-msgid "sixth"
-msgstr "sestu"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "cero-ésima salida"
-
-msgid "first exit"
-msgstr "primera salida"
-
-msgid "second exit"
-msgstr "segunda salida"
-
-msgid "third exit"
-msgstr "tercera salida"
-
-msgid "fourth exit"
-msgstr "cuarta salida"
-
-msgid "fifth exit"
-msgstr "quinta salida"
-
-msgid "sixth exit"
-msgstr "sesta salida"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metros"
-
-#, c-format
-msgid "in %d meters"
-msgstr "en %d metros"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d,%d quilómetros"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "en %d,%d quilómetros"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "un quilómetru"
-msgstr[1] "%d quilómetros"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "nun quilómetru"
-msgstr[1] "en %d quilómetros"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "pal enllaz"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s pa la cai %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s pal %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s pa la %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s pal %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s pa la %s"
-
-msgid "When possible, please turn around"
-msgstr "Cuando seya posible, de la vuelta"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Siga pela carretera los siguientes %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Entre ceo na rotonda"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Dexe la rotonda pola %1$s %2$s"
-
-msgid "soon"
-msgstr "aína"
-
-msgid "now"
-msgstr "agora"
-
-msgid "then"
-msgstr "llueu"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Tome la salida %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "drecha"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "izquierda"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "selemente "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "enforma "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Tome la carretera %1$s dica %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "tres %i carreteres"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Xire %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "llueu de la vuelta"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "De la vuelta %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "llueu de la vuelta"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "De la vuelta %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "siga"
-
-msgid "then you have reached your destination."
-msgstr "entós llegará al destín."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Llegó al destín %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Salida"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posición"
-
-msgid "Command"
-msgstr "Comandu"
-
-msgid "Length"
-msgstr "Llonxitú"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tiempu"
-
-msgid "Destination Length"
-msgstr "Distancia del destín"
-
-msgid "Destination Time"
-msgstr "Tiempu a destín"
-
-msgid "Roadbook"
-msgstr "Llibru de ruta"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Conseñar como posición"
-
-msgid "Set as destination"
-msgstr "Conseñar como destín"
-
-msgid "Add as bookmark"
-msgstr "Amestar marcador"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Puntu 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Coord. pantalla : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Emiratos Ãrabes Unidos"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistán"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua y Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguila"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antilles Holandeses"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antártida"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Americana"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Islles Aland"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaiyán"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Bélgica"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrein"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "San Bartolomé"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudas"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhután"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Islla Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorrusia"
-
-#. 084
-msgid "Belize"
-msgstr "Belice"
-
-#. 124
-msgid "Canada"
-msgstr "Canadá"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Islles Cocos (Keeling)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, República Democrática del"
-
-#. 140
-msgid "Central African Republic"
-msgstr "República Centroafricana"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Suiza"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Costa de Marfil"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Islles Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Camerún"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cabo Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Islla Christmas"
-
-#. 196
-msgid "Cyprus"
-msgstr "Chipre"
-
-#. 203
-msgid "Czech Republic"
-msgstr "República Checa"
-
-#. 276
-msgid "Germany"
-msgstr "Alemania"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Dinamarca"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "República Dominicana"
-
-#. 012
-msgid "Algeria"
-msgstr "Argelia"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Exiptu"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sáhara Occidental"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "España"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopía"
-
-#. 246
-msgid "Finland"
-msgstr "Finlandia"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiyi"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Islles Falkland (Malvines)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronesia, Estaos Federaos de"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Islles Feroe"
-
-#. 250
-msgid "France"
-msgstr "Francia"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabón"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Reinu Xuníu"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Xeorxia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guyana Francesa"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Xibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenlandia"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guinea Ecuatorial"
-
-#. 300
-msgid "Greece"
-msgstr "Grecia"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Islles Georgia del Sur y Sandwich del sur"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Islla Heard ya Islles McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croacia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haití"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungría"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Islla de Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Territoriu Oceánicu de la India Británica"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraq"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Irán, República Islámica de"
-
-#. 352
-msgid "Iceland"
-msgstr "Islandia"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Xordania"
-
-#. 392
-msgid "Japan"
-msgstr "Xapón"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirguistán"
-
-#. 116
-msgid "Cambodia"
-msgstr "Camboya"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comores"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts y Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Corea, República Popular Democrática de"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Corea, República de"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Islles Caimán"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstán"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos, República Popular Democrática de"
-
-#. 422
-msgid "Lebanon"
-msgstr "Líbano"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Santa Llucía"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lituania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburgo"
-
-#. 428
-msgid "Latvia"
-msgstr "Letonia"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Marruecos"
-
-#. 492
-msgid "Monaco"
-msgstr "Mónaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavia, República de"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (Parte Francesa)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Islles Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedonia, antigua República Yugoslava de"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Islles Marianes del Norte"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinica"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauricio"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldives"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "México"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malasia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nueva Caledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Níger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Islla Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Holanda"
-
-#. 578
-msgid "Norway"
-msgstr "Noruega"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nueva Zelanda"
-
-#. 512
-msgid "Oman"
-msgstr "Omán"
-
-#. 591
-msgid "Panama"
-msgstr "Panamá"
-
-#. 604
-msgid "Peru"
-msgstr "Perú"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinesia Francesa"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papúa Nueva Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipines"
-
-#. 586
-msgid "Pakistan"
-msgstr "Paquistán"
-
-#. 616
-msgid "Poland"
-msgstr "Polonia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre y Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestina, Territoriu Ocupáu"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunión"
-
-#. 642
-msgid "Romania"
-msgstr "Rumanía"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Federación Rusa"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arabia Saudí"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Islles Sólomon"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudán"
-
-#. 752
-msgid "Sweden"
-msgstr "Suecia"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Santa Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Eslovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard y Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Eslovaquia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leona"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Santo Tomé y Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "República Ãrabe de Siria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Suazilandia"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Islles Caicos y Turks"
-
-#. 148
-msgid "Chad"
-msgstr "Chad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Territorios Franceses del Sur"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tailandia"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tayikistán"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor Oriental"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistán"
-
-#. 788
-msgid "Tunisia"
-msgstr "Túnez"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turquía"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad y Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, Provincia de China"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania, República Xunía de"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ucrania"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Islles Perifériques Menores d'Estaos Xuníos"
-
-#. 840
-msgid "United States"
-msgstr "Estaos Xuníos"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbequistán"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Santa Sede (Ciudá Estáu del Vaticanu)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "San Vicente y les Granadines"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Islles Vírxenes, Britániques"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Islles Vírxenes, EE.XX."
-
-#. 704
-msgid "Viet Nam"
-msgstr "Viet Nam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis y Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Sudáfrica"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabue"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Desconocíes, amestar etiquetes is_in a eses ciudaes"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Puntu del mapa"
-
-msgid "Car"
-msgstr "Coche"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "País"
-
-msgid "Postal"
-msgstr "Postal"
-
-msgid "Town"
-msgstr "Ciudá"
-
-msgid "District"
-msgstr "Distritu"
-
-msgid "Street"
-msgstr "Cai"
-
-msgid "Number"
-msgstr "Númberu"
-
-msgid "Enter Destination"
-msgstr "Escribir destín"
-
-msgid "Zip Code"
-msgstr "Códigu postal"
-
-msgid "City"
-msgstr "Ciudá"
-
-msgid "District/Township"
-msgstr "Distritu/Barriu"
-
-msgid "Map"
-msgstr "Mapa"
-
-msgid "Bookmark"
-msgstr "Marcador"
-
-msgid "Destination"
-msgstr "Destín"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Amosar"
-
-msgid "_Route"
-msgstr "Ruta"
-
-msgid "_Former Destinations"
-msgstr "Destinos anteriores"
-
-msgid "_Bookmarks"
-msgstr "Marcadores"
-
-msgid "_Map"
-msgstr "Mapa"
-
-msgid "_Layout"
-msgstr "Disposición"
-
-msgid "_Projection"
-msgstr "Proyeición"
-
-msgid "_Vehicle"
-msgstr "Vehiculu"
-
-msgid "Zoom_Out"
-msgstr "Amenorgar"
-
-msgid "Decrease zoom level"
-msgstr "Amenorgar el nivel d'ampliación"
-
-msgid "Zoom_In"
-msgstr "Aumentar"
-
-msgid "Increase zoom level"
-msgstr "Aumentar el nivel d'ampliación"
-
-msgid "_Recalculate"
-msgstr "Recalcular"
-
-msgid "Redraw map"
-msgstr "Redibuxar el mapa"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Abre'l diálogu de guetar direición"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Parar navegación"
-
-msgid "Test"
-msgstr "Probar"
-
-msgid "_Quit"
-msgstr "_Colar"
-
-msgid "Quit the application"
-msgstr "Colar de l'aplicación"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Arcoxar carretera"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Conmuta la orientación del mapa al norte o al vehículu"
-
-msgid "_Roadbook"
-msgstr "Llibru de ruta"
-
-msgid "Show/hide route description"
-msgstr "Amosar/anubrir la descripción de la ruta"
-
-msgid "_Autozoom"
-msgstr "Autozoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Activar/desactivar el cambéu automáticu del nivel d'ampliación"
-
-msgid "_Fullscreen"
-msgstr "Pantalla completa"
-
-msgid "Data"
-msgstr "Datos"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SO"
-
-msgid "W"
-msgstr "O"
-
-msgid "NW"
-msgstr "NO"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Non"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Ruta %4.0fkm %02d:%02d TED"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Ruta 0000km 0+00:00 TED"
-
-msgid "Help"
-msgstr "Aida"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Ver nel navegador"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Cais"
-
-msgid "House numbers"
-msgstr "Númberos de portal"
-
-msgid "View Attributes"
-msgstr "Ver atributos"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "PDIs"
-
-msgid "View on map"
-msgstr "Ver nel mapa"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Cortar marcador"
-
-msgid "Copy Bookmark"
-msgstr "Copiar marcador"
-
-msgid "Rename Bookmark"
-msgstr "Renomar marcador"
-
-msgid "Paste Bookmark"
-msgstr "Apegar marcador"
-
-msgid "Delete Bookmark"
-msgstr "Desaniciar marcador"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Marcadores"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Amestar carpeta de marcadores"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Apegar marcador"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Marcador %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Amosar estáu de satélite"
-
-msgid " Elevation "
-msgstr " Altor "
-
-msgid " Azimuth "
-msgstr " Azimut "
-
-msgid "Show NMEA Data"
-msgstr "Amosar datos NMEA"
-
-msgid "car"
-msgstr "coche"
-
-msgid "bike"
-msgstr "bici"
-
-msgid "pedestrian"
-msgstr "peatón"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Perfil actual: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Camudar perfil a: %s"
-
-msgid "Set as active"
-msgstr "Conseñar como activo"
-
-msgid "Show Satellite status"
-msgstr "Amosar estáu de satélite"
-
-msgid "Show NMEA data"
-msgstr "Amosar datos NMEA"
-
-msgid "Add Bookmark"
-msgstr "Amestar marcador"
-
-msgid "Rename"
-msgstr "Renomar"
-
-msgid "About Navit"
-msgstr "Tocante a Navit"
-
-#. Authors
-msgid "By"
-msgstr "Por"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Y tou l'equipu de Navit"
-
-msgid "members and contributors."
-msgstr "miembros y collaboradores."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Vehiculu"
-
-msgid "Rules"
-msgstr "Regles"
-
-msgid "Lock on road"
-msgstr "Arcoxar a carretera"
-
-msgid "Northing"
-msgstr "Llatitú"
-
-msgid "Map follows Vehicle"
-msgstr "El mapa sigue al vehículu"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Mapes"
-
-msgid "Layout"
-msgstr "Disposición"
-
-msgid "Height Profile"
-msgstr "Perfil d'altures"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Descripción de ruta"
-
-msgid "Show Locale"
-msgstr "Amosar local"
-
-msgid "Former Destinations"
-msgstr "Destinos anteriores"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Mensax"
-
-msgid "Back"
-msgstr "Atrás"
-
-msgid "Back to map"
-msgstr "Tornar al mapa"
-
-msgid "Main Menu"
-msgstr "Menú principal"
-
-msgid "House number"
-msgstr "Númberu de portal"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Posición del vehículu"
-
-msgid "Main menu"
-msgstr "Menú principal"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Ver\n"
-"Mapa"
-
-msgid "Settings"
-msgstr "Axustes"
-
-msgid "Tools"
-msgstr "Ferramientes"
-
-msgid "Route"
-msgstr "Ruta"
-
-msgid "About"
-msgstr "Tocante a"
-
-msgid "Quit"
-msgstr "Colar"
-
-msgid "Actions"
-msgstr "Aiciones"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Parar\n"
-"Navegación"
-
-msgid "Display"
-msgstr "Amosar"
-
-msgid "Fullscreen"
-msgstr "Pantalla completa"
-
-msgid "Window Mode"
-msgstr "Mou ventana"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Descripción"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "caballu"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "llueu dexe la rotonda pola %1$s %2$s"
diff --git a/po/be.po.in b/po/be.po.in
deleted file mode 100644
index 561f630f7..000000000
--- a/po/be.po.in
+++ /dev/null
@@ -1,2743 +0,0 @@
-# Belarusian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Anatoli Putseyeu https://launchpad.net/~st-shadow-by
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:57+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Belarusian <be@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"Language: be\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr "першы"
-
-msgid "second"
-msgstr "другі"
-
-msgid "third"
-msgstr "Ñ‚Ñ€Ñці"
-
-msgid "fourth"
-msgstr "чацьверты"
-
-msgid "fifth"
-msgstr "пÑÑ‚Ñ‹"
-
-msgid "sixth"
-msgstr "шоÑÑ‚Ñ‹"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "першы выхад"
-
-msgid "second exit"
-msgstr "другі выхад"
-
-msgid "third exit"
-msgstr "Ñ‚Ñ€Ñці выхад"
-
-msgid "fourth exit"
-msgstr "чацвёрты выхад"
-
-msgid "fifth exit"
-msgstr "пÑÑ‚Ñ‹ выхад"
-
-msgid "sixth exit"
-msgstr "шоÑÑ‚Ñ‹ выхад"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d метраў"
-
-#, c-format
-msgid "in %d meters"
-msgstr "праз %d метраў"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d кіламетраў"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "праз %d.%d кіламетраў"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d кіламетр"
-msgstr[1] "%d кіламетраў"
-msgstr[2] "%d кіламетраў"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr "РазвÑрніцеÑÑ, калі будзе магчымаÑць"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "Ñкора"
-
-msgid "now"
-msgstr "зараз"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "направа"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "налева"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "мацней "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "РазвÑрніцеÑÑ %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "РазвÑрніцеÑÑ %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Выхад"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "РазмÑшчÑнне"
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr "ПрацÑглаÑць"
-
-msgid "km"
-msgstr "км"
-
-msgid "m"
-msgstr "м"
-
-msgid "Time"
-msgstr "ЧаÑ"
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr "Дадаць Ñк закладку"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr "Ðндора"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Ð—Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ ÐрабÑÐºÑ–Ñ Ð­Ð¼Ñ–Ñ€Ð°Ñ‚Ñ‹"
-
-#. 004
-msgid "Afghanistan"
-msgstr "ÐфганіÑтан"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Ðнтыгуа Ñ– Барбуда"
-
-#. 660
-msgid "Anguilla"
-msgstr "ÐнгільÑ"
-
-#. 008
-msgid "Albania"
-msgstr "ÐлбаніÑ"
-
-#. 051
-msgid "Armenia"
-msgstr "ÐрменіÑ"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "ÐідÑрландÑÐºÑ–Ñ ÐнтыльÑÐºÑ–Ñ Ð°Ñтравы"
-
-#. 024
-msgid "Angola"
-msgstr "Ðнгола"
-
-#. 010
-msgid "Antarctica"
-msgstr "Ðнтарктыда"
-
-#. 032
-msgid "Argentina"
-msgstr "Ðргенціна"
-
-#. 016
-msgid "American Samoa"
-msgstr "УÑходнÑе Самоа"
-
-#. 040
-msgid "Austria"
-msgstr "ÐÑžÑтрыÑ"
-
-#. 036
-msgid "Australia"
-msgstr "ÐÑžÑтраліÑ"
-
-#. 533
-msgid "Aruba"
-msgstr "Ðруба"
-
-#. 248
-msgid "Aland Islands"
-msgstr "ÐландÑÐºÑ–Ñ Ð°Ñтравы"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Ðзербайджан"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "БоÑÐ½Ñ–Ñ Ñ– Герцагавіна"
-
-#. 052
-msgid "Barbados"
-msgstr "БарбадаÑ"
-
-#. 050
-msgid "Bangladesh"
-msgstr "БангладÑш"
-
-#. 056
-msgid "Belgium"
-msgstr "БельгіÑ"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Буркіна ФаÑо"
-
-#. 100
-msgid "Bulgaria"
-msgstr "БалгарыÑ"
-
-#. 048
-msgid "Bahrain"
-msgstr "БахрÑйн"
-
-#. 108
-msgid "Burundi"
-msgstr "Бурундзі"
-
-#. 204
-msgid "Benin"
-msgstr "Бенін"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "СÑнт-Бартелеми"
-
-#. 060
-msgid "Bermuda"
-msgstr "БÑÑ€Ð¼ÑƒÐ´Ð·ÐºÑ–Ñ Ð°Ñтравы"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "БрунÑй ДаруÑÑалам"
-
-#. 068
-msgid "Bolivia"
-msgstr "БалівіÑ"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "БразіліÑ"
-
-#. 044
-msgid "Bahamas"
-msgstr "БагамÑÐºÑ–Ñ Ð°Ñтравы"
-
-#. 064
-msgid "Bhutan"
-msgstr "Бутан"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "ВоÑтраў Буве"
-
-#. 072
-msgid "Botswana"
-msgstr "БатÑвана"
-
-#. 112
-msgid "Belarus"
-msgstr "БеларуÑÑŒ"
-
-#. 084
-msgid "Belize"
-msgstr "БÑліз"
-
-#. 124
-msgid "Canada"
-msgstr "Канада"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "КакоÑÐ°Ð²Ñ‹Ñ (Кілінг) аÑтравы"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "ДÑÐ¼Ð°ÐºÑ€Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ñ Ð ÑÑпубліка Конга"
-
-#. 140
-msgid "Central African Republic"
-msgstr "ЦÑнтральнаафрыканÑÐºÐ°Ñ Ð ÑÑпубліка"
-
-#. 178
-msgid "Congo"
-msgstr "Конга"
-
-#. 756
-msgid "Switzerland"
-msgstr "ШвейцарыÑ"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Кот д'Івуар"
-
-#. 184
-msgid "Cook Islands"
-msgstr "ÐÑтравы Кука"
-
-#. 152
-msgid "Chile"
-msgstr "Чылі"
-
-#. 120
-msgid "Cameroon"
-msgstr "Камерун"
-
-#. 156
-msgid "China"
-msgstr "Кітай"
-
-#. 170
-msgid "Colombia"
-msgstr "КалумбіÑ"
-
-#. 188
-msgid "Costa Rica"
-msgstr "КоÑта Рыка"
-
-#. 192
-msgid "Cuba"
-msgstr "Куба"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Каба Ð’ÑрдÑ"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "ВоÑтраў РаÑтва"
-
-#. 196
-msgid "Cyprus"
-msgstr "Кіпр"
-
-#. 203
-msgid "Czech Republic"
-msgstr "ЧÑшÑÐºÐ°Ñ Ñ€ÑÑпубліка"
-
-#. 276
-msgid "Germany"
-msgstr "ГерманіÑ"
-
-#. 262
-msgid "Djibouti"
-msgstr "Джыбуці"
-
-#. 208
-msgid "Denmark"
-msgstr "ДаніÑ"
-
-#. 212
-msgid "Dominica"
-msgstr "Дамініка"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "ДамініканÑÐºÐ°Ñ Ð ÑÑпубліка"
-
-#. 012
-msgid "Algeria"
-msgstr "Ðлжыр"
-
-#. 218
-msgid "Ecuador"
-msgstr "Эквадор"
-
-#. 233
-msgid "Estonia"
-msgstr "ЭÑтоніÑ"
-
-#. 818
-msgid "Egypt"
-msgstr "Егіпет"
-
-#. 732
-msgid "Western Sahara"
-msgstr "ЗаходнÑÑ Ð¡Ð°Ñ…Ð°Ñ€Ð°"
-
-#. 232
-msgid "Eritrea"
-msgstr "ЭрытрÑÑ"
-
-#. 724
-msgid "Spain"
-msgstr "ІÑпаніÑ"
-
-#. 231
-msgid "Ethiopia"
-msgstr "ЭфіопіÑ"
-
-#. 246
-msgid "Finland"
-msgstr "ФінлÑндыÑ"
-
-#. 242
-msgid "Fiji"
-msgstr "Фіджы"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Ð¤Ð°Ð»ÑŒÐºÐ»ÐµÐ½Ð´Ð·ÐºÑ–Ñ (МальвінÑкіÑ) аÑтравы"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "ФÑдÑÑ€Ð°Ñ‚Ñ‹ÑžÐ½Ñ‹Ñ Ð¨Ñ‚Ð°Ñ‚Ñ‹ МікранÑзіі"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "ФарÑÑ€ÑÐºÑ–Ñ Ð°Ñтравы"
-
-#. 250
-msgid "France"
-msgstr "ФранцыÑ"
-
-#. 266
-msgid "Gabon"
-msgstr "Габон"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Ð’ÑлікабрытаніÑ"
-
-#. 308
-msgid "Grenada"
-msgstr "ГрÑнада"
-
-#. 268
-msgid "Georgia"
-msgstr "ГрузіÑ"
-
-#. 254
-msgid "French Guiana"
-msgstr "ФранцузÑÐºÐ°Ñ Ð“Ð²Ñ–Ñна"
-
-#. 831
-msgid "Guernsey"
-msgstr "ГернÑÑ–"
-
-#. 288
-msgid "Ghana"
-msgstr "Гана"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Гібралтар"
-
-#. 304
-msgid "Greenland"
-msgstr "ГрÑнландыÑ"
-
-#. 270
-msgid "Gambia"
-msgstr "ГамбіÑ"
-
-#. 324
-msgid "Guinea"
-msgstr "ГвінеÑ"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "ГвадÑлупа"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "ЭкватарыÑÐ»ÑŒÐ½Ð°Ñ Ð“Ð²Ñ–Ð½ÐµÑ"
-
-#. 300
-msgid "Greece"
-msgstr "ГрÑцыÑ"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "ÐŸÐ°ÑžÐ´Ð½Ñ‘Ð²Ð°Ñ Ð”Ð¶Ð¾Ñ€Ð´Ð¶Ñ‹Ñ Ñ– ÐŸÐ°ÑžÐ´Ð½Ñ‘Ð²Ñ‹Ñ Ð¡ÑÐ½Ð´Ð²Ñ–Ñ‡Ð°Ð²Ñ‹Ñ Ð²Ñ‹Ñпы"
-
-#. 320
-msgid "Guatemala"
-msgstr "ГватÑмала"
-
-#. 316
-msgid "Guam"
-msgstr "Гуам"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "ГвінеÑ-БіÑаў"
-
-#. 328
-msgid "Guyana"
-msgstr "ГаÑна"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Ганконг"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "ВоÑтраў Херд Ñ– аÑтравы МакДональд"
-
-#. 340
-msgid "Honduras"
-msgstr "ГандураÑ"
-
-#. 191
-msgid "Croatia"
-msgstr "ХарватыÑ"
-
-#. 332
-msgid "Haiti"
-msgstr "Гаіці"
-
-#. 348
-msgid "Hungary"
-msgstr "ВенгрыÑ"
-
-#. 360
-msgid "Indonesia"
-msgstr "ІнданÑзіÑ"
-
-#. 372
-msgid "Ireland"
-msgstr "ІрландыÑ"
-
-#. 376
-msgid "Israel"
-msgstr "Ізраіль"
-
-#. 833
-msgid "Isle of Man"
-msgstr "ВоÑтраў ÐœÑн"
-
-#. 356
-msgid "India"
-msgstr "ІндыÑ"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "БрытанÑÐºÐ°Ñ Ñ‚ÑÑ€Ñ‹Ñ‚Ð¾Ñ€Ñ‹Ñ Ñž ІндыйÑкім акіÑне"
-
-#. 368
-msgid "Iraq"
-msgstr "Ірак"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "ІÑламÑÐºÐ°Ñ Ð ÑÑпубліка Іран"
-
-#. 352
-msgid "Iceland"
-msgstr "ІÑландыÑ"
-
-#. 380
-msgid "Italy"
-msgstr "ІталіÑ"
-
-#. 832
-msgid "Jersey"
-msgstr "ДжÑÑ€ÑÑ–"
-
-#. 388
-msgid "Jamaica"
-msgstr "Ямайка"
-
-#. 400
-msgid "Jordan"
-msgstr "ІарданіÑ"
-
-#. 392
-msgid "Japan"
-msgstr "ЯпоніÑ"
-
-#. 404
-msgid "Kenya"
-msgstr "КеніÑ"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "КыргыÑтан"
-
-#. 116
-msgid "Cambodia"
-msgstr "Камбоджа"
-
-#. 296
-msgid "Kiribati"
-msgstr "Кірыбаці"
-
-#. 174
-msgid "Comoros"
-msgstr "КаморÑÐºÑ–Ñ Ð°Ñтравы"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "СÑнт-ÐšÑ–Ñ‚Ñ Ñ– ÐÑвіÑ"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "КарÑйÑÐºÐ°Ñ Ðародна-ДÑÐ¼Ð°ÐºÑ€Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ñ Ð ÑÑпубліка"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "РÑÑпубліка КарÑÑ"
-
-#. 414
-msgid "Kuwait"
-msgstr "Кувейт"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Кайманавы аÑтравы"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "КазахÑтан"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "ЛаоÑÐºÐ°Ñ Ðародна-ДÑÐ¼Ð°ÐºÑ€Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ñ Ð ÑÑпубліка"
-
-#. 422
-msgid "Lebanon"
-msgstr "Ліван"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "СÑнт-ЛюÑÑ–Ñ"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "ЛіхтÑнштайн"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Шры-Ланка"
-
-#. 430
-msgid "Liberia"
-msgstr "ЛіберыÑ"
-
-#. 426
-msgid "Lesotho"
-msgstr "ЛеÑота"
-
-#. 440
-msgid "Lithuania"
-msgstr "Літва"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ЛюкÑембург"
-
-#. 428
-msgid "Latvia"
-msgstr "ЛатвіÑ"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Марока"
-
-#. 492
-msgid "Monaco"
-msgstr "Манака"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Малдова, РÑÑпубліка"
-
-#. 499
-msgid "Montenegro"
-msgstr "ЧарнагорыÑ"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "СÑнт-Марцін (французÑÐºÐ°Ñ Ñ‡Ð°Ñтка)"
-
-#. 450
-msgid "Madagascar"
-msgstr "МадагаÑкар"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Маршалавы аÑтравы"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "МакедоніÑ, Ð±Ñ‹Ð»Ð°Ñ Ð®Ð³Ð°ÑлаўÑÐºÐ°Ñ Ñ€ÑÑпубліка"
-
-#. 466
-msgid "Mali"
-msgstr "Малі"
-
-#. 104
-msgid "Myanmar"
-msgstr "Ðœ'Ñнма"
-
-#. 496
-msgid "Mongolia"
-msgstr "МанголіÑ"
-
-#. 446
-msgid "Macao"
-msgstr "Макао"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "ÐŸÐ°ÑžÐ½Ð¾Ñ‡Ð½Ñ‹Ñ ÐœÐ°Ñ€Ñ‹ÑнÑÐºÑ–Ñ Ð°Ñтравы"
-
-#. 474
-msgid "Martinique"
-msgstr "Марцініка"
-
-#. 478
-msgid "Mauritania"
-msgstr "МаўрытаніÑ"
-
-#. 500
-msgid "Montserrat"
-msgstr "МанÑÑрат"
-
-#. 470
-msgid "Malta"
-msgstr "Мальта"
-
-#. 480
-msgid "Mauritius"
-msgstr "Маўрыкій"
-
-#. 462
-msgid "Maldives"
-msgstr "МальдыўÑÐºÑ–Ñ Ð°Ñтравы"
-
-#. 454
-msgid "Malawi"
-msgstr "Малаві"
-
-#. 484
-msgid "Mexico"
-msgstr "МекÑіка"
-
-#. 458
-msgid "Malaysia"
-msgstr "МалайзіÑ"
-
-#. 508
-msgid "Mozambique"
-msgstr "Мазамбік"
-
-#. 516
-msgid "Namibia"
-msgstr "ÐамібіÑ"
-
-#. 540
-msgid "New Caledonia"
-msgstr "ÐÐ¾Ð²Ð°Ñ ÐšÐ°Ð»ÐµÐ´Ð¾Ð½Ñ–Ñ"
-
-#. 562
-msgid "Niger"
-msgstr "Ðігер"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "ВоÑтраў Ðорфалк"
-
-#. 566
-msgid "Nigeria"
-msgstr "ÐігерыÑ"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Ðікарагуа"
-
-#. 528
-msgid "Netherlands"
-msgstr "ÐідÑрланды"
-
-#. 578
-msgid "Norway"
-msgstr "ÐарвегіÑ"
-
-#. 524
-msgid "Nepal"
-msgstr "ÐÑпал"
-
-#. 520
-msgid "Nauru"
-msgstr "Ðауру"
-
-#. 570
-msgid "Niue"
-msgstr "Ðіуе"
-
-#. 554
-msgid "New Zealand"
-msgstr "ÐÐ¾Ð²Ð°Ñ Ð—ÐµÐ»Ð°Ð½Ð´Ñ‹Ñ"
-
-#. 512
-msgid "Oman"
-msgstr "Ðман"
-
-#. 591
-msgid "Panama"
-msgstr "Панама"
-
-#. 604
-msgid "Peru"
-msgstr "Перу"
-
-#. 258
-msgid "French Polynesia"
-msgstr "ФранцузÑÐºÐ°Ñ ÐŸÐ°Ð»Ñ–Ð½ÐµÐ·Ñ–Ñ"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Папуа–ÐÐ¾Ð²Ð°Ñ Ð“Ð²Ñ–Ð½ÑÑ"
-
-#. 608
-msgid "Philippines"
-msgstr "Філіпіны"
-
-#. 586
-msgid "Pakistan"
-msgstr "ПакіÑтан"
-
-#. 616
-msgid "Poland"
-msgstr "Польшча"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "СÑнт-П'ер Ñ– Мікелон"
-
-#. 612
-msgid "Pitcairn"
-msgstr "ПіткÑрн"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "ПуÑрта Рыка"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "ПалеÑтынÑÐºÐ°Ñ Ñ‚ÑрыторыÑ, акупаванаÑ"
-
-#. 620
-msgid "Portugal"
-msgstr "ПартугаліÑ"
-
-#. 585
-msgid "Palau"
-msgstr "Палау"
-
-#. 600
-msgid "Paraguay"
-msgstr "Парагвай"
-
-#. 634
-msgid "Qatar"
-msgstr "Катар"
-
-#. 638
-msgid "Reunion"
-msgstr "РÑюньён"
-
-#. 642
-msgid "Romania"
-msgstr "РумыніÑ"
-
-#. 688
-msgid "Serbia"
-msgstr "СербіÑ"
-
-#. 643
-msgid "Russian Federation"
-msgstr "РаÑійÑÐºÐ°Ñ Ð¤ÐµÐ´ÑрацыÑ"
-
-#. 646
-msgid "Rwanda"
-msgstr "Руанда"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "СаудаўÑÐºÐ°Ñ ÐравіÑ"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Саламонавы ÐÑтравы"
-
-#. 690
-msgid "Seychelles"
-msgstr "СейшÑльÑÐºÑ–Ñ Ð°Ñтравы"
-
-#. 736
-msgid "Sudan"
-msgstr "Судан"
-
-#. 752
-msgid "Sweden"
-msgstr "ШвецыÑ"
-
-#. 702
-msgid "Singapore"
-msgstr "Сінгапур"
-
-#. 654
-msgid "Saint Helena"
-msgstr "ВоÑтраў СвÑтой Елены"
-
-#. 705
-msgid "Slovenia"
-msgstr "СлавеніÑ"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "ШпіцбÑрген Ñ– Ян-Майен"
-
-#. 703
-msgid "Slovakia"
-msgstr "СлавакіÑ"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Сьера-ЛеонÑ"
-
-#. 674
-msgid "San Marino"
-msgstr "Сан-Марына"
-
-#. 686
-msgid "Senegal"
-msgstr "Сенегал"
-
-#. 706
-msgid "Somalia"
-msgstr "Самалі"
-
-#. 740
-msgid "Suriname"
-msgstr "Сурынам"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Сан-Томе Ñ– ПрынÑыпі"
-
-#. 222
-msgid "El Salvador"
-msgstr "Сальвадор"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "СірыйÑÐºÐ°Ñ ÐрабÑÐºÐ°Ñ Ð ÑÑпубліка"
-
-#. 748
-msgid "Swaziland"
-msgstr "Свазіленд"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "ÐÑтравы ТÑÑ€ÐºÑ Ñ– КайкаÑ"
-
-#. 148
-msgid "Chad"
-msgstr "Чад"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "ФранцузÑÐºÑ–Ñ ÐŸÐ°ÑžÐ´Ð½Ñ‘Ð²Ñ‹Ñ Ð¢Ñрыторыі"
-
-#. 768
-msgid "Togo"
-msgstr "Тога"
-
-#. 764
-msgid "Thailand"
-msgstr "Тайланд"
-
-#. 762
-msgid "Tajikistan"
-msgstr "ТаджыкіÑтан"
-
-#. 772
-msgid "Tokelau"
-msgstr "Такелаў"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Тымор-ЛеÑÑ‚Ñ"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "ТуркменіÑтан"
-
-#. 788
-msgid "Tunisia"
-msgstr "ТуніÑ"
-
-#. 776
-msgid "Tonga"
-msgstr "Тонга"
-
-#. 792
-msgid "Turkey"
-msgstr "ТурцыÑ"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Трынідад і Табага"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Тувалу"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "КітайÑÐºÐ°Ñ Ð¿Ñ€Ð°Ð²Ñ–Ð½Ñ†Ñ‹Ñ Ð¢Ð°Ð¹Ð²Ð°Ð½ÑŒ"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Ð—Ð»ÑƒÑ‡Ð°Ð½Ð°Ñ Ð ÑÑпубліка ТанзаніÑ"
-
-#. 804
-msgid "Ukraine"
-msgstr "Украіна"
-
-#. 800
-msgid "Uganda"
-msgstr "Уганда"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Ð—Ð½ÐµÑˆÐ½Ñ–Ñ ÐœÐ°Ð»Ñ‹Ñ ÐÑтравы (ЗШÐ)"
-
-#. 840
-msgid "United States"
-msgstr "Ð—Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ Ð¨Ñ‚Ð°Ñ‚Ñ‹ Ðмерыкі"
-
-#. 858
-msgid "Uruguay"
-msgstr "Уругвай"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "УзбекіÑтан"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Ватыкан (ПапÑкі ПаÑад)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "СÑнт-ВінÑÑнт Ñ– ГрÑнадзіны"
-
-#. 862
-msgid "Venezuela"
-msgstr "ВенеÑуÑла"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "ВіргінÑÐºÑ–Ñ Ð°Ñтравы (БрытаніÑ)"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "ВіргінÑÐºÑ–Ñ Ð°Ñтравы (ЗШÐ)"
-
-#. 704
-msgid "Viet Nam"
-msgstr "В'етнам"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Вануату"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "ÐÑтравы Ð£Ð¾Ð»Ñ–Ñ Ñ– Футуна"
-
-#. 882
-msgid "Samoa"
-msgstr "Самоа"
-
-#. 887
-msgid "Yemen"
-msgstr "Емен"
-
-#. 175
-msgid "Mayotte"
-msgstr "Маёта"
-
-#. 710
-msgid "South Africa"
-msgstr "Паўднёва-ÐфрыканÑÐºÐ°Ñ Ð ÑÑпубліка"
-
-#. 894
-msgid "Zambia"
-msgstr "ЗамбіÑ"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "ЗімбабвÑ"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "ÐевÑдома, дадайце is_in Ñ‚Ñгі да гÑÑ‚Ñ‹Ñ… гарадоў"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr "Ðўтамабіль"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Краіна"
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr "Горад"
-
-msgid "District"
-msgstr "Раён"
-
-msgid "Street"
-msgstr "Вуліца"
-
-msgid "Number"
-msgstr "Ðумар"
-
-msgid "Enter Destination"
-msgstr "УвÑдзіце пункт прызначÑннÑ"
-
-msgid "Zip Code"
-msgstr "Паштовы індÑкÑ"
-
-msgid "City"
-msgstr "Горад"
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr "Карта"
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr "ПрызначÑнне"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr "Праверка"
-
-msgid "_Quit"
-msgstr "_Quit"
-
-msgid "Quit the application"
-msgstr "Выхад з даÑтаÑаваньнÑ"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr "ДадзеныÑ"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ðе"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr "Даведка"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Вуліцы"
-
-msgid "House numbers"
-msgstr "Ðумары дамоў"
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr "ПраглÑдзець на мапе"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr "Перайменаваць закладку"
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr "Выдаліць закладку"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Закладкі"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Паказаць ÑÑ‚Ð°Ñ‚ÑƒÑ Ñпадарожнікаў"
-
-msgid " Elevation "
-msgstr " Ð’Ñ‹ÑˆÑ‹Ð½Ñ "
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr "Паказаць Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ NMEA"
-
-msgid "car"
-msgstr "аўтамабіль"
-
-msgid "bike"
-msgstr "велаÑіпед"
-
-msgid "pedestrian"
-msgstr "пешаход"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "БÑгучы профіль: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "ЗмÑніць профіль: %s"
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr "Дадаць закладку"
-
-msgid "Rename"
-msgstr "Перайменаваць"
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr "Правілы"
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Мапы"
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Паведамленне"
-
-msgid "Back"
-msgstr "Ðазад"
-
-msgid "Back to map"
-msgstr "Ðазад на мапу"
-
-msgid "Main Menu"
-msgstr "Галоўнае меню"
-
-msgid "House number"
-msgstr "Ðумар дому"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr "Ðалады"
-
-msgid "Tools"
-msgstr "ІнÑтрументы"
-
-msgid "Route"
-msgstr "ШлÑÑ…"
-
-msgid "About"
-msgstr "Ðб праграме"
-
-msgid "Quit"
-msgstr "ВыйÑці"
-
-msgid "Actions"
-msgstr "ДзеÑнні"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr "ПоўнаÑкранны Ñ€Ñжым"
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "ÐпіÑанне"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/bg.po.in b/po/bg.po.in
deleted file mode 100644
index 9da4a8820..000000000
--- a/po/bg.po.in
+++ /dev/null
@@ -1,2743 +0,0 @@
-# Bulgarian translations for navit
-# Copyright (C) 2006-2015 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Alex Stanev https://launchpad.net/~realender
-# Alexander Atanasov https://launchpad.net/~aatanasov
-# Anton Todorov https://launchpad.net/~antod
-# Lyudmil Bonev https://launchpad.net/~bonev-j
-# MalamiR https://launchpad.net/~mamut-killer
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:57+0000\n"
-"Last-Translator: Alex Stanev <alex@stanev.org>\n"
-"Language-Team: Bulgarian <bg@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: bg\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "нулев"
-
-msgid "first"
-msgstr "първи"
-
-msgid "second"
-msgstr "втори"
-
-msgid "third"
-msgstr "трети"
-
-msgid "fourth"
-msgstr "четвърти"
-
-msgid "fifth"
-msgstr "пети"
-
-msgid "sixth"
-msgstr "шеÑти"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "нÑма изход"
-
-msgid "first exit"
-msgstr "Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´"
-
-msgid "second exit"
-msgstr "Ð²Ñ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´"
-
-msgid "third exit"
-msgstr "Ñ‚Ñ€ÐµÑ‚Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´"
-
-msgid "fourth exit"
-msgstr "Ñ‡ÐµÑ‚Ð²ÑŠÑ€Ñ‚Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´"
-
-msgid "fifth exit"
-msgstr "Ð¿ÐµÑ‚Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´"
-
-msgid "sixth exit"
-msgstr "шеÑÑ‚Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d метра"
-
-#, c-format
-msgid "in %d meters"
-msgstr "Ñлед %d метра"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d километра"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "Ñлед %d.%d километра"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "един километър"
-msgstr[1] "%d километра"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "Ñлед един километър"
-msgstr[1] "Ñлед %d километра"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "на рампата"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sпо улица %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sпо улица %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sпо улица %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sпо улица %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr "Когато е възможно обърнете"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Следвайте Ð¿ÑŠÑ‚Ñ Ð¿Ñ€ÐµÐ· Ñледващите %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Скоро навлизате в кръгово"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Ðавлизате в кръгово %s"
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Излезте от кръговото на %1$s %2$s"
-
-msgid "soon"
-msgstr "Ñкоро"
-
-msgid "now"
-msgstr "Ñега"
-
-msgid "then"
-msgstr "Ñлед това"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "надÑÑно"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "налÑво"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "леко "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "Ñилно "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Тръгнете по %1$s път към %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "Ñлед %i преÑечки"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Завийте %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "Ñлед това обърнете"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Обърнете %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "Ñлед това обърнете"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Обърнете %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "Ñлед това приÑтигате на меÑтоназначението"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "ДоÑтигнахте до целта %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Изход"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "ПозициÑ"
-
-msgid "Command"
-msgstr "Команда"
-
-msgid "Length"
-msgstr "Дължина"
-
-msgid "km"
-msgstr "км"
-
-msgid "m"
-msgstr "м"
-
-msgid "Time"
-msgstr "Време"
-
-msgid "Destination Length"
-msgstr "РазÑтоÑние до целта"
-
-msgid "Destination Time"
-msgstr "Време до целта"
-
-msgid "Roadbook"
-msgstr "Пътна книга"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "УÑтановете като позициÑ"
-
-msgid "Set as destination"
-msgstr "Задай като цел"
-
-msgid "Add as bookmark"
-msgstr "Добави като Отметка"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Точка 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Координати на екрана: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Ðндора"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Обединени ÐрабÑки ЕмирÑтва"
-
-#. 004
-msgid "Afghanistan"
-msgstr "ÐфганиÑтан"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Ðнтигуа и Барбуда"
-
-#. 660
-msgid "Anguilla"
-msgstr "Ðнгуила"
-
-#. 008
-msgid "Albania"
-msgstr "ÐлбаниÑ"
-
-#. 051
-msgid "Armenia"
-msgstr "ÐрмениÑ"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "ХоландÑки Ðнтили"
-
-#. 024
-msgid "Angola"
-msgstr "Ðнгола"
-
-#. 010
-msgid "Antarctica"
-msgstr "Ðнтарктика"
-
-#. 032
-msgid "Argentina"
-msgstr "Ðржентина"
-
-#. 016
-msgid "American Samoa"
-msgstr "ÐмериканÑка Самоа"
-
-#. 040
-msgid "Austria"
-msgstr "ÐвÑтриÑ"
-
-#. 036
-msgid "Australia"
-msgstr "ÐвÑтралиÑ"
-
-#. 533
-msgid "Aruba"
-msgstr "Ðруба"
-
-#. 248
-msgid "Aland Islands"
-msgstr "ÐйландÑки ОÑтрови"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Ðзърбайджан"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "БоÑна и Херцеговина"
-
-#. 052
-msgid "Barbados"
-msgstr "БарбадоÑ"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#. 056
-msgid "Belgium"
-msgstr "БелгиÑ"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Буркина ФаÑо"
-
-#. 100
-msgid "Bulgaria"
-msgstr "БългариÑ"
-
-#. 048
-msgid "Bahrain"
-msgstr "Бахрейн"
-
-#. 108
-msgid "Burundi"
-msgstr "Бурунди"
-
-#. 204
-msgid "Benin"
-msgstr "Бенин"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Сен Бартелми"
-
-#. 060
-msgid "Bermuda"
-msgstr "БермудÑки оÑтрови"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Бруней"
-
-#. 068
-msgid "Bolivia"
-msgstr "БоливиÑ"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "БразилиÑ"
-
-#. 044
-msgid "Bahamas"
-msgstr "БахамÑки оÑтрови"
-
-#. 064
-msgid "Bhutan"
-msgstr "Бутан"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "ОÑтров Буве"
-
-#. 072
-msgid "Botswana"
-msgstr "БотÑвана"
-
-#. 112
-msgid "Belarus"
-msgstr "БеларуÑ"
-
-#. 084
-msgid "Belize"
-msgstr "Белийз"
-
-#. 124
-msgid "Canada"
-msgstr "Канада"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "КокоÑови ОÑтрови"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Демократична Република Конго"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Централна ÐфриканÑка Република"
-
-#. 178
-msgid "Congo"
-msgstr "Конго"
-
-#. 756
-msgid "Switzerland"
-msgstr "ШвейцариÑ"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Кот Д'Ивоар"
-
-#. 184
-msgid "Cook Islands"
-msgstr "ОÑтрови Кук"
-
-#. 152
-msgid "Chile"
-msgstr "Чили"
-
-#. 120
-msgid "Cameroon"
-msgstr "Камерун"
-
-#. 156
-msgid "China"
-msgstr "Китай"
-
-#. 170
-msgid "Colombia"
-msgstr "КолумбиÑ"
-
-#. 188
-msgid "Costa Rica"
-msgstr "КоÑта Рика"
-
-#. 192
-msgid "Cuba"
-msgstr "Куба"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Кейп Верде"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Коледни оÑтрови"
-
-#. 196
-msgid "Cyprus"
-msgstr "Кипър"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Чешка република"
-
-#. 276
-msgid "Germany"
-msgstr "ГерманиÑ"
-
-#. 262
-msgid "Djibouti"
-msgstr "Джибути"
-
-#. 208
-msgid "Denmark"
-msgstr "ДаниÑ"
-
-#. 212
-msgid "Dominica"
-msgstr "Доминика"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "ДоминиканÑка Република"
-
-#. 012
-msgid "Algeria"
-msgstr "Ðлжир"
-
-#. 218
-msgid "Ecuador"
-msgstr "Еквадор"
-
-#. 233
-msgid "Estonia"
-msgstr "ЕÑтониÑ"
-
-#. 818
-msgid "Egypt"
-msgstr "Египет"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Западна Сахара"
-
-#. 232
-msgid "Eritrea"
-msgstr "ЕритреÑ"
-
-#. 724
-msgid "Spain"
-msgstr "ИÑпаниÑ"
-
-#. 231
-msgid "Ethiopia"
-msgstr "ЕтиопиÑ"
-
-#. 246
-msgid "Finland"
-msgstr "ФинландиÑ"
-
-#. 242
-msgid "Fiji"
-msgstr "Фиджи"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "ФолклендÑки ОÑтрови (Малвини)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "МикронезиÑ, Обединени щати"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "ОÑтрови Фаро"
-
-#. 250
-msgid "France"
-msgstr "ФранциÑ"
-
-#. 266
-msgid "Gabon"
-msgstr "Габон"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Обединеното КралÑтво"
-
-#. 308
-msgid "Grenada"
-msgstr "Гренада"
-
-#. 268
-msgid "Georgia"
-msgstr "ГрузиÑ"
-
-#. 254
-msgid "French Guiana"
-msgstr "ФренÑка Гвиана"
-
-#. 831
-msgid "Guernsey"
-msgstr "ГърнÑи"
-
-#. 288
-msgid "Ghana"
-msgstr "Гана"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Гибралтар"
-
-#. 304
-msgid "Greenland"
-msgstr "ГренландиÑ"
-
-#. 270
-msgid "Gambia"
-msgstr "ГамбиÑ"
-
-#. 324
-msgid "Guinea"
-msgstr "ГвинеÑ"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Гваделупа"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Екваториална ГвинеÑ"
-
-#. 300
-msgid "Greece"
-msgstr "ГърциÑ"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Южна Ð”Ð¶Ð¾Ñ€Ð´Ð¶Ð¸Ñ Ð¸ Южни Сандвичеви оÑтрови"
-
-#. 320
-msgid "Guatemala"
-msgstr "Гватемала"
-
-#. 316
-msgid "Guam"
-msgstr "Гуам"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "ГвинеÑ-БиÑау"
-
-#. 328
-msgid "Guyana"
-msgstr "ГаÑна"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Хонг Конг"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "ОÑтрови Хърд и МакДоналд"
-
-#. 340
-msgid "Honduras"
-msgstr "ХондураÑ"
-
-#. 191
-msgid "Croatia"
-msgstr "ХърватÑка"
-
-#. 332
-msgid "Haiti"
-msgstr "Хаити"
-
-#. 348
-msgid "Hungary"
-msgstr "УнгариÑ"
-
-#. 360
-msgid "Indonesia"
-msgstr "ИндонезиÑ"
-
-#. 372
-msgid "Ireland"
-msgstr "ИрландиÑ"
-
-#. 376
-msgid "Israel"
-msgstr "Израел"
-
-#. 833
-msgid "Isle of Man"
-msgstr "ОÑтров Ман"
-
-#. 356
-msgid "India"
-msgstr "ИндиÑ"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "БританÑка Ñ‚ÐµÑ€Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð² ИндийÑÐºÐ¸Ñ Ð¾ÐºÐµÐ°Ð½"
-
-#. 368
-msgid "Iraq"
-msgstr "Ирак"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Иран, ИÑлÑмÑка република"
-
-#. 352
-msgid "Iceland"
-msgstr "ИÑландиÑ"
-
-#. 380
-msgid "Italy"
-msgstr "ИталиÑ"
-
-#. 832
-msgid "Jersey"
-msgstr "ДжърÑи (оÑтров)"
-
-#. 388
-msgid "Jamaica"
-msgstr "Ямайка"
-
-#. 400
-msgid "Jordan"
-msgstr "ЙорданиÑ"
-
-#. 392
-msgid "Japan"
-msgstr "ЯпониÑ"
-
-#. 404
-msgid "Kenya"
-msgstr "КениÑ"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "КиргизÑтан"
-
-#. 116
-msgid "Cambodia"
-msgstr "Камбоджа"
-
-#. 296
-msgid "Kiribati"
-msgstr "Кирибати"
-
-#. 174
-msgid "Comoros"
-msgstr "Комори"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Сейнт ÐšÐ¸Ñ‚Ñ Ð¸ ÐевиÑ"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "КореÑ, Демократична народна република"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "КореÑ, Република"
-
-#. 414
-msgid "Kuwait"
-msgstr "Кувейт"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Кайманови оÑтрови"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "КазахÑтан"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "ЛаоÑка народнодемократична република"
-
-#. 422
-msgid "Lebanon"
-msgstr "Ливан"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Сейнт ЛуÑиÑ"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Лихтенщайн"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Шри Ланка"
-
-#. 430
-msgid "Liberia"
-msgstr "ЛибериÑ"
-
-#. 426
-msgid "Lesotho"
-msgstr "ЛеÑото"
-
-#. 440
-msgid "Lithuania"
-msgstr "Литва"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ЛюкÑембург"
-
-#. 428
-msgid "Latvia"
-msgstr "ЛатвиÑ"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Мароко"
-
-#. 492
-msgid "Monaco"
-msgstr "Монако"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Молдова, Република"
-
-#. 499
-msgid "Montenegro"
-msgstr "Черна гора"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Свети Мартин (френÑка чаÑÑ‚)"
-
-#. 450
-msgid "Madagascar"
-msgstr "МадагаÑкар"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Маршалови оÑтрови"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "МакедониÑ, Бивша ЮгоÑлавÑка Република"
-
-#. 466
-msgid "Mali"
-msgstr "Мали"
-
-#. 104
-msgid "Myanmar"
-msgstr "МианмарÑкиÑÑ‚ Ñъюз"
-
-#. 496
-msgid "Mongolia"
-msgstr "МонголиÑ"
-
-#. 446
-msgid "Macao"
-msgstr "Макао"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Северни МарианÑки оÑтрови"
-
-#. 474
-msgid "Martinique"
-msgstr "Мартиника"
-
-#. 478
-msgid "Mauritania"
-msgstr "МавританиÑ"
-
-#. 500
-msgid "Montserrat"
-msgstr "МонÑерат"
-
-#. 470
-msgid "Malta"
-msgstr "Малта"
-
-#. 480
-msgid "Mauritius"
-msgstr "Мавриций"
-
-#. 462
-msgid "Maldives"
-msgstr "МалдивÑки оÑтрови"
-
-#. 454
-msgid "Malawi"
-msgstr "Малави"
-
-#. 484
-msgid "Mexico"
-msgstr "МекÑико"
-
-#. 458
-msgid "Malaysia"
-msgstr "МалайзиÑ"
-
-#. 508
-msgid "Mozambique"
-msgstr "Мозамбик"
-
-#. 516
-msgid "Namibia"
-msgstr "ÐамибиÑ"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Ðова КаледониÑ"
-
-#. 562
-msgid "Niger"
-msgstr "Ðигер"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "ОÑтров Ðорфолк"
-
-#. 566
-msgid "Nigeria"
-msgstr "ÐигериÑ"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Ðикарагуа"
-
-#. 528
-msgid "Netherlands"
-msgstr "КралÑтво ХоландиÑ"
-
-#. 578
-msgid "Norway"
-msgstr "КралÑтво ÐорвегиÑ"
-
-#. 524
-msgid "Nepal"
-msgstr "Ðепал"
-
-#. 520
-msgid "Nauru"
-msgstr "Ðауру"
-
-#. 570
-msgid "Niue"
-msgstr "Ðиуе"
-
-#. 554
-msgid "New Zealand"
-msgstr "Ðова ЗеландиÑ"
-
-#. 512
-msgid "Oman"
-msgstr "Оман"
-
-#. 591
-msgid "Panama"
-msgstr "Панама"
-
-#. 604
-msgid "Peru"
-msgstr "Перу"
-
-#. 258
-msgid "French Polynesia"
-msgstr "ФренÑка ПолинезиÑ"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Папуа Ðова ГвинеÑ"
-
-#. 608
-msgid "Philippines"
-msgstr "Филипини"
-
-#. 586
-msgid "Pakistan"
-msgstr "ПакиÑтан"
-
-#. 616
-msgid "Poland"
-msgstr "Полша"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Свети Пиер и Микелон"
-
-#. 612
-msgid "Pitcairn"
-msgstr "ОÑтрови Питкерн"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Пуерто Рико"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "ПалеÑтинÑка териториÑ, Окупирана"
-
-#. 620
-msgid "Portugal"
-msgstr "ПортугалиÑ"
-
-#. 585
-msgid "Palau"
-msgstr "Палау"
-
-#. 600
-msgid "Paraguay"
-msgstr "Парагвай"
-
-#. 634
-msgid "Qatar"
-msgstr "Катар"
-
-#. 638
-msgid "Reunion"
-msgstr "Реюнион"
-
-#. 642
-msgid "Romania"
-msgstr "РумъниÑ"
-
-#. 688
-msgid "Serbia"
-msgstr "СърбиÑ"
-
-#. 643
-msgid "Russian Federation"
-msgstr "РуÑка ФедерациÑ"
-
-#. 646
-msgid "Rwanda"
-msgstr "Руанда"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "СаудитÑка ÐрабиÑ"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Соломонови оÑтрови"
-
-#. 690
-msgid "Seychelles"
-msgstr "СейшелÑки о-ви"
-
-#. 736
-msgid "Sudan"
-msgstr "Судан"
-
-#. 752
-msgid "Sweden"
-msgstr "ШвециÑ"
-
-#. 702
-msgid "Singapore"
-msgstr "Сингапур"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Света Елена"
-
-#. 705
-msgid "Slovenia"
-msgstr "СловениÑ"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Шпицберген и Ян Майен"
-
-#. 703
-msgid "Slovakia"
-msgstr "СловакиÑ"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Сиера Леоне"
-
-#. 674
-msgid "San Marino"
-msgstr "Сан Марино"
-
-#. 686
-msgid "Senegal"
-msgstr "Сенегал"
-
-#. 706
-msgid "Somalia"
-msgstr "СомалиÑ"
-
-#. 740
-msgid "Suriname"
-msgstr "Суринам"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Сао Томе и ПринÑипи"
-
-#. 222
-msgid "El Salvador"
-msgstr "Ел Салвадор"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "СирийÑка ÐрабÑка Република"
-
-#. 748
-msgid "Swaziland"
-msgstr "Свазиленд"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "ОÑтрови Тюрк и КайкоÑ"
-
-#. 148
-msgid "Chad"
-msgstr "Чад"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "ФренÑки Южни Територии"
-
-#. 768
-msgid "Togo"
-msgstr "Того"
-
-#. 764
-msgid "Thailand"
-msgstr "Тайланд"
-
-#. 762
-msgid "Tajikistan"
-msgstr "ТаджикиÑтан"
-
-#. 772
-msgid "Tokelau"
-msgstr "Токелау"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Източен Тимор"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "ТуркмениÑтан"
-
-#. 788
-msgid "Tunisia"
-msgstr "ТуниÑ"
-
-#. 776
-msgid "Tonga"
-msgstr "Тонга"
-
-#. 792
-msgid "Turkey"
-msgstr "ТурциÑ"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Тринидад и Тобаго"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Тувалу"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Тайван, КитайÑка провинциÑ"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "ТанзаниÑ, Обединена република"
-
-#. 804
-msgid "Ukraine"
-msgstr "Украйна"
-
-#. 800
-msgid "Uganda"
-msgstr "Уганда"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Малки далечни оÑтрови на СÐЩ"
-
-#. 840
-msgid "United States"
-msgstr "Съединени ÐмерканÑки Щати"
-
-#. 858
-msgid "Uruguay"
-msgstr "Уругвай"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "УзбекиÑтан"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Ватикана"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Сейнт ВинÑънт и Гренадини"
-
-#. 862
-msgid "Venezuela"
-msgstr "Венецуела"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "БританÑки ВирджинÑки оÑтрови"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "ÐмериканÑки ВирджинÑки оÑтрови"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Виетнам"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Вануату"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Ð£Ð¾Ð»Ð¸Ñ Ð¸ Футуна"
-
-#. 882
-msgid "Samoa"
-msgstr "Самоа"
-
-#. 887
-msgid "Yemen"
-msgstr "Йемен"
-
-#. 175
-msgid "Mayotte"
-msgstr "Майот"
-
-#. 710
-msgid "South Africa"
-msgstr "Република Южна Ðфрика"
-
-#. 894
-msgid "Zambia"
-msgstr "ЗамбиÑ"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Зимбабве"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* ÐеизвеÑтен, добавете is_in оÑм тагове за тези градове"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Точка на карта"
-
-msgid "Car"
-msgstr "Ðвтомобил"
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr "Държава"
-
-msgid "Postal"
-msgstr "ПощенÑки"
-
-msgid "Town"
-msgstr "Град"
-
-msgid "District"
-msgstr "Окръг"
-
-msgid "Street"
-msgstr "Улица"
-
-msgid "Number"
-msgstr "Ðомер"
-
-msgid "Enter Destination"
-msgstr "Въведете моÑтоназначение"
-
-msgid "Zip Code"
-msgstr "ПощенÑки код"
-
-msgid "City"
-msgstr "Град"
-
-msgid "District/Township"
-msgstr "Община"
-
-msgid "Map"
-msgstr "Карта"
-
-msgid "Bookmark"
-msgstr "Отметка"
-
-msgid "Destination"
-msgstr "МеÑтоназначение"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Показване"
-
-msgid "_Route"
-msgstr "Маршрут"
-
-msgid "_Former Destinations"
-msgstr "Предишни МеÑтоназначениÑ"
-
-msgid "_Bookmarks"
-msgstr "Отметки"
-
-msgid "_Map"
-msgstr "Карта"
-
-msgid "_Layout"
-msgstr "Изглед"
-
-msgid "_Projection"
-msgstr "ПроекциÑ"
-
-msgid "_Vehicle"
-msgstr "Превозно ÑредÑтво"
-
-msgid "Zoom_Out"
-msgstr "Отдалечи"
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr "Приближи"
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr "ПреизчиÑлÑване"
-
-msgid "Redraw map"
-msgstr "ОпреÑни картата"
-
-msgid "_Info"
-msgstr "ИнформациÑ"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "ÐžÑ‚Ð²Ð°Ñ€Ñ Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ† ТърÑене на адреÑ"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Спри ÐавигациÑта"
-
-msgid "Test"
-msgstr "ТеÑÑ‚"
-
-msgid "_Quit"
-msgstr "_Изход"
-
-msgid "Quit the application"
-msgstr "Изход от приложението"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Придържай към пътÑ"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr "Пътна книга"
-
-msgid "Show/hide route description"
-msgstr "Покажи/Ñкрий детайлите на маршрута"
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Разреши/забрани ÑмÑната на нивото на увеличение"
-
-msgid "_Fullscreen"
-msgstr "ЦÑл екран"
-
-msgid "Data"
-msgstr "Данни"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "С"
-
-msgid "NE"
-msgstr "СИ"
-
-msgid "E"
-msgstr "И"
-
-msgid "SE"
-msgstr "ЮИ"
-
-msgid "S"
-msgstr "Ю"
-
-msgid "SW"
-msgstr "ЮЗ"
-
-msgid "W"
-msgstr "З"
-
-msgid "NW"
-msgstr "СЗ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Маршрут %4.0fкм %02d:%02d ОВП"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Маршрут 0000fкм 0+00:00 ОВП"
-
-msgid "Help"
-msgstr "Помощ"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Виж в Браузър"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Улици"
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr "Виж Ðтрибутите"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr "Виж на картата"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Отметки"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Отметка %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Покажи СъÑтоÑние на Сателити"
-
-msgid " Elevation "
-msgstr " ВиÑочина "
-
-msgid " Azimuth "
-msgstr " Ðзимут "
-
-msgid "Show NMEA Data"
-msgstr "Покажи NMEA Данни"
-
-msgid "car"
-msgstr "автомобил"
-
-msgid "bike"
-msgstr "колело"
-
-msgid "pedestrian"
-msgstr "пешеходец"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Текущ профил: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Смени профил на: %s"
-
-msgid "Set as active"
-msgstr "Укажи като активен"
-
-msgid "Show Satellite status"
-msgstr "Покажи ÑÑŠÑтоÑние на Сателити"
-
-msgid "Show NMEA data"
-msgstr "Покажи NMEA Данни"
-
-msgid "Add Bookmark"
-msgstr "Добави отметка"
-
-msgid "Rename"
-msgstr "Преименувай"
-
-msgid "About Navit"
-msgstr "За Navit"
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Превозно ÑредÑтво"
-
-msgid "Rules"
-msgstr "Правила"
-
-msgid "Lock on road"
-msgstr "Показвай на пътÑ"
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr "Картата Ñледва Ðвтомобила"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Карти"
-
-msgid "Layout"
-msgstr "Изглед"
-
-msgid "Height Profile"
-msgstr "ВиÑочинен профил"
-
-msgid "Route Description"
-msgstr "ОпиÑание на маршрута"
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr "Предишни МеÑтоназначениÑ"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Съобщение"
-
-msgid "Back"
-msgstr "Ðазад"
-
-msgid "Back to map"
-msgstr "Обратно към картата"
-
-msgid "Main Menu"
-msgstr "ОÑновно меню"
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð½Ð° автомобил"
-
-msgid "Main menu"
-msgstr "Главно меню"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Покажи\n"
-"Картата"
-
-msgid "Settings"
-msgstr "ÐаÑтройки"
-
-msgid "Tools"
-msgstr "ИнÑтрументи"
-
-msgid "Route"
-msgstr "Маршрут"
-
-msgid "About"
-msgstr "ОтноÑно"
-
-msgid "Quit"
-msgstr "Излез"
-
-msgid "Actions"
-msgstr "ДейÑтвиÑ"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Спри\n"
-"ÐавигациÑта"
-
-msgid "Display"
-msgstr "Показване"
-
-msgid "Fullscreen"
-msgstr "ЦÑл екран"
-
-msgid "Window Mode"
-msgstr "Режим Прозорец"
-
-msgid "Description"
-msgstr "ОпиÑание"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "кон"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "Ñлед това излезте от кръговото на %1$s %2$s"
diff --git a/po/bs.po.in b/po/bs.po.in
deleted file mode 100644
index c6c8e8506..000000000
--- a/po/bs.po.in
+++ /dev/null
@@ -1,2744 +0,0 @@
-# Bosnian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Kenan https://launchpad.net/~kahrickenan
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:57+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Bosnian <bs@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"Language: bs\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "postavke '%s' do '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nulti"
-
-msgid "first"
-msgstr "prvi"
-
-msgid "second"
-msgstr "drugi"
-
-msgid "third"
-msgstr "treći"
-
-msgid "fourth"
-msgstr "Äetvrti"
-
-msgid "fifth"
-msgstr "peti"
-
-msgid "sixth"
-msgstr "Å¡esti"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nulti postojeći"
-
-msgid "first exit"
-msgstr "prvi izlaz"
-
-msgid "second exit"
-msgstr "drugi izlaz"
-
-msgid "third exit"
-msgstr "treći izlaz"
-
-msgid "fourth exit"
-msgstr "Äetveti izlaz"
-
-msgid "fifth exit"
-msgstr "peti izlaz"
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metara"
-
-#, c-format
-msgid "in %d meters"
-msgstr "u %d metara"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometara"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "u %d.%d kilometara"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d kilometar"
-msgstr[1] "%d kilometara"
-msgstr[2] "%d kilometara"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "u %d kilometru"
-msgstr[1] "u %d kilometara"
-msgstr[2] "u %d kilometara"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "u rampu"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr ""
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Izlaz"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/ca.po.in b/po/ca.po.in
deleted file mode 100644
index 4c41bcd79..000000000
--- a/po/ca.po.in
+++ /dev/null
@@ -1,2759 +0,0 @@
-# Catalan translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Ferran Roig https://launchpad.net/~ferro9
-# Frans https://launchpad.net/~francesc-galbany
-# Joan Montané https://launchpad.net/~jmontane
-# KaZeR https://launchpad.net/~kazer
-# Marc Coll Carrillo https://launchpad.net/~marc-coll-carrillo
-# Sergi Gomis https://launchpad.net/~paloky3
-# Xavier Barnada https://launchpad.net/~xbarnada
-# beamspot https://launchpad.net/~benrouravkg
-# juliwoodbcn https://launchpad.net/~julianlozano
-# kualsevol https://launchpad.net/~ojuanv
-# pataquets https://launchpad.net/~pataquets
-# peremayol@gmail.com https://launchpad.net/~peremayol
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-01-01 20:32+0000\n"
-"Last-Translator: pataquets <Unknown>\n"
-"Language-Team: Catalan <ca@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: ca\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "S'està executant des del directori arrel\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "s'està establint '%s' a '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zeroèssim"
-
-msgid "first"
-msgstr "primera"
-
-msgid "second"
-msgstr "segona"
-
-msgid "third"
-msgstr "tercera"
-
-msgid "fourth"
-msgstr "quarta"
-
-msgid "fifth"
-msgstr "cinquena"
-
-msgid "sixth"
-msgstr "sisena"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "sortida zero"
-
-msgid "first exit"
-msgstr "primera sortida"
-
-msgid "second exit"
-msgstr "segona sortida"
-
-msgid "third exit"
-msgstr "tercera sortida"
-
-msgid "fourth exit"
-msgstr "quarta sortida"
-
-msgid "fifth exit"
-msgstr "cinquena sortida"
-
-msgid "sixth exit"
-msgstr "sisena sortida"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d peus"
-
-#, c-format
-msgid "in %d feet"
-msgstr "en %d peus"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d milles"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "en %d.%d milles"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "una milla"
-msgstr[1] "%d milles"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "en una milla"
-msgstr[1] "en %d milles"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metres"
-
-#, c-format
-msgid "in %d meters"
-msgstr "d'aquí a %d metres"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d,%d quilòmetres"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "d'aquí a %d,%d quilòmetres"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "un quilòmetre"
-msgstr[1] "%d quilòmetres"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "d'aquí a un quilòmetre"
-msgstr[1] "d'aquí a %d quilòmetres"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sal carrer %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sal %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sa la %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sa %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%scap a la %s"
-
-msgid "When possible, please turn around"
-msgstr "Quan sigui possible, doneu mitja volta"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "cap a %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Seguiu per la carretera durant els propers %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Entreu a la rotonda vinent"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Entreu a la rotonda %s"
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Deixeu la rotonda a la %1$s %2$s"
-
-msgid "soon"
-msgstr "aviat"
-
-msgid "now"
-msgstr "ara"
-
-msgid "then"
-msgstr "aleshores"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr "a l'esquerra"
-
-msgid "on your right"
-msgstr "a la dreta"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Preneu la sortida %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Preneu la sortida %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "a l'intersecció"
-
-msgid "at exit"
-msgstr "a la sortida"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "després continueu tot recte%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "Continueu tot recte %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "després manteniu-vos a la dreta%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "Manteniu-vos a la dreta %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "dreta"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "esquerra"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "fàcilment "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "fortament "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Preneu el %1$s carrer a la %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "després de %i carrers"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Gireu %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "després, doneu mitja volta"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Doneu mitja volta %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "després, doneu mitja volta"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Doneu mitja volta %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "seguiu"
-
-msgid "then you have reached your destination."
-msgstr "aleshores heu arribat a destí"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Heu arribat a la destinació %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Intersecció"
-
-msgid "Exit"
-msgstr "Sortida"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posició"
-
-msgid "Command"
-msgstr "Ordre"
-
-msgid "Length"
-msgstr "Durada"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Temps"
-
-msgid "Destination Length"
-msgstr "Distància fins a destinació"
-
-msgid "Destination Time"
-msgstr "Temps fins a destinació"
-
-msgid "Roadbook"
-msgstr "Full de ruta"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr "Visitar abans..."
-
-msgid "Set as position"
-msgstr "Estableix com a posició"
-
-msgid "Set as destination"
-msgstr "Estableix com a destinació"
-
-msgid "Add as bookmark"
-msgstr "Afegeix a les adreces d'interès"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Coordenades de pantalla : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Unió dels Emirats Àrabs"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua i Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albània"
-
-#. 051
-msgid "Armenia"
-msgstr "Armènia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antilles Holandeses"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antàrtida"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Americana"
-
-#. 040
-msgid "Austria"
-msgstr "Àustria"
-
-#. 036
-msgid "Australia"
-msgstr "Austràlia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Illes Aland"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaitjan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bòsnia i Hercegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Bèlgica"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgària"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benín"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthélemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Illes Bermudes"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolívia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahames"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Illa Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorússia"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canadà"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Illes Cocos (Keeling)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, República Democràtica del"
-
-#. 140
-msgid "Central African Republic"
-msgstr "República Centreafricana"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Suïssa"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Costa d'Ivori"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Illes Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Xile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Camerun"
-
-#. 156
-msgid "China"
-msgstr "Xina"
-
-#. 170
-msgid "Colombia"
-msgstr "Colòmbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cap Verd"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Illa Christmas"
-
-#. 196
-msgid "Cyprus"
-msgstr "Xipre"
-
-#. 203
-msgid "Czech Republic"
-msgstr "República Txeca"
-
-#. 276
-msgid "Germany"
-msgstr "Alemanya"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Dinamarca"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "República Dominicana"
-
-#. 012
-msgid "Algeria"
-msgstr "Algèria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Equador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estònia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egipte"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sàhara Occidental"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Espanya"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiòpia"
-
-#. 246
-msgid "Finland"
-msgstr "Finlàndia"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Illes Malvines"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronèsia, Estats Federats de"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Illes Fèroe"
-
-#. 250
-msgid "France"
-msgstr "França"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Regne Unit"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Geòrgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guaiana Francesa"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenlàndia"
-
-#. 270
-msgid "Gambia"
-msgstr "Gàmbia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guinea Equatorial"
-
-#. 300
-msgid "Greece"
-msgstr "Grècia"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Illes Geòrgia del Sud i Sandwich del Sud"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Illa Heard i Illes McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Hondures"
-
-#. 191
-msgid "Croatia"
-msgstr "Croàcia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haití"
-
-#. 348
-msgid "Hungary"
-msgstr "Hongria"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonèsia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Illa de Man"
-
-#. 356
-msgid "India"
-msgstr "Ãndia"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Territori britànic de l'oceà Ãndic"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraq"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran"
-
-#. 352
-msgid "Iceland"
-msgstr "Islàndia"
-
-#. 380
-msgid "Italy"
-msgstr "Itàlia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamàica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordània"
-
-#. 392
-msgid "Japan"
-msgstr "Japó"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirguizistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambodja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comores"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts i Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Corea del Nord"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Corea del Sud"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Illes Caiman"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Líban"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Libèria"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lituània"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Letònia"
-
-#. 434
-msgid "Libya"
-msgstr "Líbia"
-
-#. 504
-msgid "Morocco"
-msgstr "Marroc"
-
-#. 492
-msgid "Monaco"
-msgstr "Mònaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldàvia"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint-Martin (zona francesa)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Illes Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedònia"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongòlia"
-
-#. 446
-msgid "Macao"
-msgstr "Macau"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Illes Marianes del nord"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinica"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritània"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Maurici"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldives"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mèxic"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malàisia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Moçambic"
-
-#. 516
-msgid "Namibia"
-msgstr "Namíbia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nova Caledònia"
-
-#. 562
-msgid "Niger"
-msgstr "Níger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Illa Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigèria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Països Baixos"
-
-#. 578
-msgid "Norway"
-msgstr "Noruega"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nova Zelanda"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panamà"
-
-#. 604
-msgid "Peru"
-msgstr "Perú"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinèsia francesa"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nova Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipines"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polònia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre i Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestina (territori ocupat)"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguai"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Illa de la Reunió"
-
-#. 642
-msgid "Romania"
-msgstr "Romania"
-
-#. 688
-msgid "Serbia"
-msgstr "Sèrbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Rússia"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Aràbia Saudita"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Illes Salomó"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Suècia"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Santa Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Eslovènia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard i Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Eslovàquia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somàlia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr "Sudan del Sud"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "São Tomé i Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Síria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swazilàndia"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Illes Turks i Caicos"
-
-#. 148
-msgid "Chad"
-msgstr "Txad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Territoris francesos del sud"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tailàndia"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadjikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor Oriental"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunísia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turquia"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinitat i Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzània"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ucraïna"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Illes perifèriques menors dels Estats Units"
-
-#. 840
-msgid "United States"
-msgstr "Estats Units d'Amèrica"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguai"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Ciutat del Vaticà"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent i les Grenadines"
-
-#. 862
-msgid "Venezuela"
-msgstr "Veneçuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Illes Verges Britàniques"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Illes Verges Nord-americanes"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis i Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Iemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Sud-àfrica"
-
-#. 894
-msgid "Zambia"
-msgstr "Zàmbia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Desconegut, afegiu etiquetes is_in a aquestes ciutats"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "No s'ha trobat l'arxiu de configuració navit.xml, navit.xml.local\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Usant l'arxiu de configuració '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Vehicle sense nom"
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Punt del mapa"
-
-msgid "Car"
-msgstr "Cotxe"
-
-msgid "Iso2"
-msgstr "iso2"
-
-msgid "Iso3"
-msgstr "iso3"
-
-msgid "Country"
-msgstr "Estat"
-
-msgid "Postal"
-msgstr "Codi postal"
-
-msgid "Town"
-msgstr "Població"
-
-msgid "District"
-msgstr "Districte"
-
-msgid "Street"
-msgstr "Adreça"
-
-msgid "Number"
-msgstr "Número"
-
-msgid "Enter Destination"
-msgstr "Introduïu una destinació"
-
-msgid "Zip Code"
-msgstr "Codi postal"
-
-msgid "City"
-msgstr "Ciutat"
-
-msgid "District/Township"
-msgstr "Districte/Municipi"
-
-msgid "Map"
-msgstr "Mapa"
-
-msgid "Bookmark"
-msgstr "Adreça d'interès"
-
-msgid "Destination"
-msgstr "Destinació"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Pantalla"
-
-msgid "_Route"
-msgstr "Ruta"
-
-msgid "_Former Destinations"
-msgstr "Destinacions anteriors"
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr "Mapa"
-
-msgid "_Layout"
-msgstr "Disposició"
-
-msgid "_Projection"
-msgstr "Projecció"
-
-msgid "_Vehicle"
-msgstr "Vehicle"
-
-msgid "Zoom_Out"
-msgstr "Allunya"
-
-msgid "Decrease zoom level"
-msgstr "Allunya el zoom"
-
-msgid "Zoom_In"
-msgstr "Apropa"
-
-msgid "Increase zoom level"
-msgstr "Apropa el zoom"
-
-msgid "_Recalculate"
-msgstr "Recalcula"
-
-msgid "Redraw map"
-msgstr "Torna a dibuixar el mapa"
-
-msgid "_Info"
-msgstr "Informació"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Obre el diàleg de cercar adreces"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Atura la navegació"
-
-msgid "Test"
-msgstr "Prova"
-
-msgid "_Quit"
-msgstr "_Surt"
-
-msgid "Quit the application"
-msgstr "Surt de l'aplicació"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Alterna l'orientació del mapa cap al nord o cap al vehicle"
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr "Mostra/amaga la descripció de la ruta"
-
-msgid "_Autozoom"
-msgstr "Zoom automàtic"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Activar/desactivar zoom automàtic"
-
-msgid "_Fullscreen"
-msgstr "Pantalla completa"
-
-msgid "Data"
-msgstr "Dades"
-
-msgid "Pharmacy"
-msgstr "Farmàcia"
-
-msgid "Restaurant"
-msgstr "Restaurant"
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr "Hotel"
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr "Hospital"
-
-msgid "Cinema"
-msgstr "Cinema"
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr "Comissaria de Policia"
-
-msgid "Justice"
-msgstr "Jutjats"
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr "Seleccioneu una categoria"
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SO"
-
-msgid "W"
-msgstr "O"
-
-msgid "NW"
-msgstr "NO"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "No"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Ruta %4.0fkm %02d:%02d TEA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Ruta 0000km 0+00:00 TEA"
-
-msgid "Help"
-msgstr "Ajuda"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Visualitza al navegador"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Carrers"
-
-msgid "House numbers"
-msgstr "Números de casa/portal"
-
-msgid "View Attributes"
-msgstr "Visualitza els atributs"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Punts d'interès"
-
-msgid "View on map"
-msgstr "Visualitza al mapa"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Retalla el punt"
-
-msgid "Copy Bookmark"
-msgstr "Copia el punt"
-
-msgid "Rename Bookmark"
-msgstr "Canvia el nom de l'adreça d'interès"
-
-msgid "Paste Bookmark"
-msgstr "Enganxa el punt"
-
-msgid "Delete Bookmark"
-msgstr "Elimina l'adreça d'interès"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Adreces d'interés"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Afegeix carpeta de punts"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Enganxa el punt"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Afegeix %s a les adreces d'interès"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Mostra l'estat del satèl·lit"
-
-msgid " Elevation "
-msgstr " Elevació "
-
-msgid " Azimuth "
-msgstr " Azimut "
-
-msgid "Show NMEA Data"
-msgstr "Mostra les dades NMEA"
-
-msgid "car"
-msgstr "cotxe"
-
-msgid "bike"
-msgstr "bicicleta"
-
-msgid "pedestrian"
-msgstr "vianant"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Perfil actual: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Canvia el perfil a: %s"
-
-msgid "Set as active"
-msgstr "Habilita"
-
-msgid "Show Satellite status"
-msgstr "Mostra l'estat del satèl·lit"
-
-msgid "Show NMEA data"
-msgstr "Mostra les dades NMEA"
-
-msgid "Add Bookmark"
-msgstr "Afegeix a les adreces d'interès"
-
-msgid "Rename"
-msgstr "Reanomena"
-
-msgid "About Navit"
-msgstr "Quant a Navit"
-
-#. Authors
-msgid "By"
-msgstr "Per"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "I tots els membres i col·laboradors"
-
-msgid "members and contributors."
-msgstr "de l'equip del Navit."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Vehicle"
-
-msgid "Rules"
-msgstr "Regles"
-
-msgid "Lock on road"
-msgstr "Centra't a la carretera"
-
-msgid "Northing"
-msgstr "Orientació sempre al nord"
-
-msgid "Map follows Vehicle"
-msgstr "El mapa segueix el vehicle"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Mapes"
-
-msgid "Layout"
-msgstr "Disposició"
-
-msgid "Height Profile"
-msgstr "Perfil d'alçada"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Descripció de la ruta"
-
-msgid "Show Locale"
-msgstr "Mostra la localitat"
-
-msgid "Former Destinations"
-msgstr "Destinacions anteriors"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Missatge"
-
-msgid "Back"
-msgstr "Enrere"
-
-msgid "Back to map"
-msgstr "Torna al mapa"
-
-msgid "Main Menu"
-msgstr "Menú principal"
-
-msgid "House number"
-msgstr "Número de casa/portal"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Posició del vehicle"
-
-msgid "Main menu"
-msgstr "Menú principal"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Mostra\n"
-"Mapa"
-
-msgid "Settings"
-msgstr "Configuració"
-
-msgid "Tools"
-msgstr "Eines"
-
-msgid "Route"
-msgstr "Ruta"
-
-msgid "About"
-msgstr "Quant a..."
-
-msgid "Quit"
-msgstr "Surt"
-
-msgid "Actions"
-msgstr "Accions"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Atura la\n"
-"Navegació"
-
-msgid "Display"
-msgstr "Pantalla"
-
-msgid "Fullscreen"
-msgstr "Pantalla completa"
-
-msgid "Window Mode"
-msgstr "Mode de la finestra"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Descripció"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "cavall"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "aleshores deixeu la rotonda a la %1$s %2$s"
diff --git a/po/ckb.po.in b/po/ckb.po.in
deleted file mode 100644
index ab8a5a1eb..000000000
--- a/po/ckb.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# Kurdish (Sorani) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# kosar https://launchpad.net/~kosar-belana
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2013-06-22 23:00+0000\n"
-"Last-Translator: kosar <kosar.belana@gmail.com>\n"
-"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: ckb\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr "یەكەم"
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr ""
-
-msgid "fifth"
-msgstr ""
-
-msgid "sixth"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr ""
-
-msgid "second exit"
-msgstr ""
-
-msgid "third exit"
-msgstr ""
-
-msgid "fourth exit"
-msgstr ""
-
-msgid "fifth exit"
-msgstr ""
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr ""
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/cs.po.in b/po/cs.po.in
deleted file mode 100644
index ab05a9c48..000000000
--- a/po/cs.po.in
+++ /dev/null
@@ -1,2787 +0,0 @@
-# Čeština translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# 72ka https://launchpad.net/~2hp
-# Aleš Janda https://launchpad.net/~kyblicek
-# Ivan Kološ https://launchpad.net/~ivan-kolos
-# Jakuje https://launchpad.net/~jakuje
-# MMlosh https://launchpad.net/~mmlosh
-# Marc0 https://launchpad.net/~z-ubuntuone-y
-# Mike Crash https://launchpad.net/~mike-mikecrash
-# Pavel Borecki https://launchpad.net/~pavel-borecki
-# T.lama https://launchpad.net/~klacl
-# Tomas Kukol https://launchpad.net/~tomas-kukol
-# Vaclav Cerny https://launchpad.net/~vatoz
-# Vladimír Burian https://launchpad.net/~vburian
-# Vojtěch Látal https://launchpad.net/~vojtik
-# stritek https://launchpad.net/~stritek
-# talmik https://launchpad.net/~mikatom
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-07-12 16:13+0000\n"
-"Last-Translator: Pavel Borecki <Unknown>\n"
-"Language-Team: Čeština\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"Language: cs\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Běží ze zdrojového adresáře\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "nastavuji '%s' na '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nultý"
-
-msgid "first"
-msgstr "první"
-
-msgid "second"
-msgstr "druhý"
-
-msgid "third"
-msgstr "třetí"
-
-msgid "fourth"
-msgstr "Ätvrtý"
-
-msgid "fifth"
-msgstr "pátý"
-
-msgid "sixth"
-msgstr "šestý"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nultý výjezd"
-
-msgid "first exit"
-msgstr "první výjezd"
-
-msgid "second exit"
-msgstr "druhý výjezd"
-
-msgid "third exit"
-msgstr "třetí výjezd"
-
-msgid "fourth exit"
-msgstr "Ätvrtý výjezd"
-
-msgid "fifth exit"
-msgstr "pátý výjezd"
-
-msgid "sixth exit"
-msgstr "šestý výjezd"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d stop"
-
-#, c-format
-msgid "in %d feet"
-msgstr "za %d stop"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d mílí"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "za %d.%d mílí"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "%d míle"
-msgstr[1] "%d míle"
-msgstr[2] "%d mílí"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "za %d míli"
-msgstr[1] "za %d míle"
-msgstr[2] "za %d mílí"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metrů"
-
-#, c-format
-msgid "in %d meters"
-msgstr "za %d metrů"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometrů"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "za %d.%d kilometrů"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d kilometr"
-msgstr[1] "%d kilometry"
-msgstr[2] "%d kilometrů"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "za %d kilometr"
-msgstr[1] "za %d kilometry"
-msgstr[2] "za %d kilometrů"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$sna %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$sna %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$sna %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$sna %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$sna %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "na pÅ™ivadeÄ"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sdo %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sdo %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sdo %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sdo %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sna %s"
-
-msgid "When possible, please turn around"
-msgstr "Až to bude možné, otoÄte se"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "PokraÄujte po cestÄ› dalších %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Brzy najeÄte na kruhový objezd"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr "poté vjeÄte na kruhový objezd"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "SjeÄte na %1$s %2$s"
-
-msgid "soon"
-msgstr "brzy"
-
-msgid "now"
-msgstr "nyní"
-
-msgid "then"
-msgstr "pak"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr "na levé straně"
-
-msgid "on your right"
-msgstr "na pravé straně"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Opusťte komunikaci na sjezdu %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Opusťte komunikaci na sjezdu %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr "na konci"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "poté pokraÄujte přímo %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "poté se držte vpravo%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "poté se držte vlevo%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "vpravo"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "vlevo"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "mírně "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "ostře "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "poté jeÄte %1$s silnici %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "JeÄte na %1$s silnici %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "za %i silnice"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "ZaboÄte %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "poté se otoÄte"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "OtoÄte se %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "poté se otoÄte"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "OtoÄte se %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "pak budete v cíli."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "%s dorazíte do cíle"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "UkonÄit"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Poloha"
-
-msgid "Command"
-msgstr "Příkaz"
-
-msgid "Length"
-msgstr "Délka"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "ÄŒas"
-
-msgid "Destination Length"
-msgstr "Cílová vzdálenost"
-
-msgid "Destination Time"
-msgstr "Čas dojezdu do cíle"
-
-msgid "Roadbook"
-msgstr "Itinerář"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Bod trasy %d"
-
-msgid "Visit before..."
-msgstr "Navštívit nejdříve..."
-
-msgid "Set as position"
-msgstr "Použít jako pozici"
-
-msgid "Set as destination"
-msgstr "Použít jako cíl"
-
-msgid "Add as bookmark"
-msgstr "Přidat jako záložku"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Bod 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Souřadnice obrazovky: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Spojené arabské emiráty"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghánistán"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua a Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albánie"
-
-#. 051
-msgid "Armenia"
-msgstr "Arménie"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Nizozemské Antily"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktida"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Americká Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Rakousko"
-
-#. 036
-msgid "Australia"
-msgstr "Austrálie"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ã…landy"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Ãzerbájdžán"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna a Hercegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladéš"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgie"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulharsko"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrajn"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Svatý Bartoloměj"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudy"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunej"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolívie"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Svatý Eustach a Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brazílie"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamy"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhútán"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvetův ostrov"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bělorusko"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosové (Keelingovy) ostrovy"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, demokratická republika"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Středoafrická republika"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Švýcarsko"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Pobřeží slonoviny"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cookovy ostrovy"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Čína"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbie"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kostarika"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kapverdy"
-
-#. 531
-msgid "Curacao"
-msgstr "Curacao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "VánoÄní ostrov"
-
-#. 196
-msgid "Cyprus"
-msgstr "Kypr"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Česká republika"
-
-#. 276
-msgid "Germany"
-msgstr "Německo"
-
-#. 262
-msgid "Djibouti"
-msgstr "Džibutsko"
-
-#. 208
-msgid "Denmark"
-msgstr "Dánsko"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikánská republika"
-
-#. 012
-msgid "Algeria"
-msgstr "Alžírsko"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvádor"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonsko"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypt"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Západní Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Španělsko"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopie"
-
-#. 246
-msgid "Finland"
-msgstr "Finsko"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidži"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandy (Malvíny)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronésie, federativní státy"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Faerské ostrovy"
-
-#. 250
-msgid "France"
-msgstr "Francie"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Spojené království"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Gruzie"
-
-#. 254
-msgid "French Guiana"
-msgstr "Francouzská Guyana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grónsko"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambie"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Rovníková Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Řecko"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Jižní Georgie a Jižní Sandwichovy ostrovy"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hongkong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heardův a McDonaldovy ostrovy"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Chorvatsko"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "MaÄarsko"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonésie"
-
-#. 372
-msgid "Ireland"
-msgstr "Irsko"
-
-#. 376
-msgid "Israel"
-msgstr "Izrael"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Ostrov Man"
-
-#. 356
-msgid "India"
-msgstr "Indie"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Britské indickooceánské území"
-
-#. 368
-msgid "Iraq"
-msgstr "Irák"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Ãrán, islámská republika"
-
-#. 352
-msgid "Iceland"
-msgstr "Island"
-
-#. 380
-msgid "Italy"
-msgstr "Itálie"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamajka"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordánsko"
-
-#. 392
-msgid "Japan"
-msgstr "Japonsko"
-
-#. 404
-msgid "Kenya"
-msgstr "Keňa"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstán"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komory"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Svatý Kryštof a Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korejská lidově demokratická republika"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korejská republika"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuvajt"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kajmanské ostrovy"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazachstán"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laoská lidově demokratická republika"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Svatá Lucie"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Lichtenštejnsko"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Srí Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Libérie"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litva"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Lucembursko"
-
-#. 428
-msgid "Latvia"
-msgstr "Lotyšsko"
-
-#. 434
-msgid "Libya"
-msgstr "Libye"
-
-#. 504
-msgid "Morocco"
-msgstr "Maroko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavská republika"
-
-#. 499
-msgid "Montenegro"
-msgstr "Černá Hora"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Svatý Martin (francouzská Äást)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshallovy ostrovy"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedonie, bývalá jugoslávská republika"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolsko"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Severní Mariany"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinik"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritánie"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauricius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maledivy"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malajsie"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mosambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibie"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nová Kaledonie"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolkský ostrov"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigérie"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Nizozemsko"
-
-#. 578
-msgid "Norway"
-msgstr "Norsko"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepál"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nový Zéland"
-
-#. 512
-msgid "Oman"
-msgstr "Omán"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Francouzská Polynésie"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nová Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipíny"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pákistán"
-
-#. 616
-msgid "Poland"
-msgstr "Polsko"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Svatý Pierre a Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairnovy ostrovy"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Portoriko"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestinské území, okupované"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugalsko"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Réunion"
-
-#. 642
-msgid "Romania"
-msgstr "Rumunsko"
-
-#. 688
-msgid "Serbia"
-msgstr "Srbsko"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Ruská federace"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saúdská Arábie"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Å alamounovy ostrovy"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychely"
-
-#. 736
-msgid "Sudan"
-msgstr "Súdán"
-
-#. 752
-msgid "Sweden"
-msgstr "Švédsko"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Svatá Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovinsko"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Å picberky a Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovensko"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somálsko"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr "Jižní Súdán"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Svatý Tomáš a Princův ostrov"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salvádor"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Svatý Martin (nizozemská Äást)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrská arabská republika"
-
-#. 748
-msgid "Swaziland"
-msgstr "Svazijsko"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Ostrovy Turks a Caicos"
-
-#. 148
-msgid "Chad"
-msgstr "ÄŒad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Francouzská jižní a antarktická území"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thajsko"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tádžikistán"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Východní Timor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistán"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisko"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turecko"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad a Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Tchaj-wan, provincie Číny"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzanie, sjednocená republika"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukrajina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Drobné odlehlé ostrovy Spojených států"
-
-#. 840
-msgid "United States"
-msgstr "Spojené státy"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistán"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Svatý stolec (Vatikánský městský stát)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Svatý Vincenc a Grenadiny"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Britské Panenské ostrovy"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Americké Panenské ostrovy"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu (Nové Hebridy)"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis a Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Jihoafrická republika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambie"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Není známo, přidejte is_in atributy do těchto měst"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Nenalezen konfiguraÄní soubor navit.xml a navit.xml.local\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Chyba pÅ™i zpracování konfiguraÄního souboru '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Používáte konfiguraÄní soubor '% s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Chyba: Nenalezena žádná konfigurace v konfiguraÄním souboru '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Interní selhání inicializace, konÄím. Zkontrolujte pÅ™edchozí chybové "
-"zprávy.\n"
-
-msgid "unknown street"
-msgstr "neznámá ulice"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Nepojmenované vozidlo"
-
-msgid "Failed to write bookmarks file"
-msgstr "Nepodařilo se zapsat do souboru s záložkama"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Bod na mapÄ›"
-
-msgid "Car"
-msgstr "Automobil"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "ZemÄ›"
-
-msgid "Postal"
-msgstr "Poštovní"
-
-msgid "Town"
-msgstr "Město"
-
-msgid "District"
-msgstr "Kraj/Okres"
-
-msgid "Street"
-msgstr "Ulice"
-
-msgid "Number"
-msgstr "Číslo"
-
-msgid "Enter Destination"
-msgstr "Zadejte cíl"
-
-msgid "Zip Code"
-msgstr "PSČ"
-
-msgid "City"
-msgstr "Město"
-
-msgid "District/Township"
-msgstr "Kraj/Okres"
-
-msgid "Map"
-msgstr "Mapa"
-
-msgid "Bookmark"
-msgstr "Záložka"
-
-msgid "Destination"
-msgstr "Cíl"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Zobrazit"
-
-msgid "_Route"
-msgstr "Trasa"
-
-msgid "_Former Destinations"
-msgstr "Minulé cíle"
-
-msgid "_Bookmarks"
-msgstr "Záložky"
-
-msgid "_Map"
-msgstr "Mapa"
-
-msgid "_Layout"
-msgstr "Rozvržení"
-
-msgid "_Projection"
-msgstr "Projekce"
-
-msgid "_Vehicle"
-msgstr "Vozidlo"
-
-msgid "Zoom_Out"
-msgstr "Zmenšit"
-
-msgid "Decrease zoom level"
-msgstr "Zmenší zvětšení"
-
-msgid "Zoom_In"
-msgstr "Zvětšit"
-
-msgid "Increase zoom level"
-msgstr "Zvýší zvětšení"
-
-msgid "_Recalculate"
-msgstr "PÅ™epoÄítat"
-
-msgid "Redraw map"
-msgstr "Překreslí mapu"
-
-msgid "_Info"
-msgstr "Informace"
-
-msgid "Set _destination"
-msgstr "Nastavit _cíl"
-
-msgid "Opens address search dialog"
-msgstr "Otevře vyhledávání adres"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr "Otevře dialog vyhledávání POI"
-
-msgid "_Stop Navigation"
-msgstr "Přestat navigovat"
-
-msgid "Test"
-msgstr "Vyzkoušet"
-
-msgid "_Quit"
-msgstr "_Konec"
-
-msgid "Quit the application"
-msgstr "Zavře aplikaci"
-
-msgid "Show position _cursor"
-msgstr "Zobrazit pozici _kurzoru"
-
-msgid "_Lock on Road"
-msgstr "Jet jen po silnici"
-
-msgid "_Keep orientation to the North"
-msgstr "_Orientovat na sever"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Přepíná orientaci mapy podle směru vozidla nebo severu"
-
-msgid "_Roadbook"
-msgstr "Itinerář"
-
-msgid "Show/hide route description"
-msgstr "Zobrazí/skryje popis cesty"
-
-msgid "_Autozoom"
-msgstr "Autozoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Povolí/zakáže automatické změny úrovně zoomu"
-
-msgid "_Fullscreen"
-msgstr "Celá obrazovka"
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr "Lékárna"
-
-msgid "Restaurant"
-msgstr "Restaurace"
-
-msgid "Restaurant. Fast food"
-msgstr "Restaurace. Rychlé obÄerstvení"
-
-msgid "Hotel"
-msgstr "Hotel"
-
-msgid "Car parking"
-msgstr "Parkoviště"
-
-msgid "Fuel station"
-msgstr "Čerpací stanice"
-
-msgid "Bank"
-msgstr "Banka"
-
-msgid "Hospital"
-msgstr "Nemocnice"
-
-msgid "Cinema"
-msgstr "Kino"
-
-msgid "Train station"
-msgstr "Vlaková stanice"
-
-msgid "School"
-msgstr "Å kola"
-
-msgid "Police"
-msgstr "Policie"
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr "Taxi"
-
-msgid "Shopping"
-msgstr "Nakupování"
-
-msgid "Distance from screen center (km)"
-msgstr "Vzdálenost od středu mapy (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Nastav cíl na %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "Posuň mapu na %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "Nastav další zastavení na %ld, %ld \n"
-
-msgid "POI search"
-msgstr "Vyhledávání POI"
-
-msgid "Select a category"
-msgstr "Vyberte kategorii"
-
-msgid "Select a distance to look for (km)"
-msgstr "Vyberte vzdálenost ve které hledat (km)"
-
-msgid "Select a POI"
-msgstr "Vyberte POI"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Kategorie"
-
-msgid "Direction"
-msgstr "Směr"
-
-msgid "Distance(m)"
-msgstr "Vzdálenost (m)"
-
-msgid "Name"
-msgstr "Název"
-
-msgid "Visit Before"
-msgstr "Navštívit před"
-
-msgid "N"
-msgstr "S"
-
-msgid "NE"
-msgstr "SV"
-
-msgid "E"
-msgstr "V"
-
-msgid "SE"
-msgstr "JV"
-
-msgid "S"
-msgstr "J"
-
-msgid "SW"
-msgstr "JZ"
-
-msgid "W"
-msgstr "Z"
-
-msgid "NW"
-msgstr "SZ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ne"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Trasa %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Trasa 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Nápověda"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Bod trasy %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Vyberte bod trasy pro vložení nového před něho"
-
-msgid "View in Browser"
-msgstr "Zobrazit v prohlížeÄi"
-
-msgid "Item type"
-msgstr "Typ položky"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Ulice"
-
-msgid "House numbers"
-msgstr "Čísla domů"
-
-msgid "View Attributes"
-msgstr "Zobrazit atributy"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Nastavit jako polohu (a deaktivovat vozidlo)"
-
-msgid "POIs"
-msgstr "Body zájmu"
-
-msgid "View on map"
-msgstr "Zobrazit na mapÄ›"
-
-msgid "Remove search results from the map"
-msgstr "Odstranit výsledky hledání z mapy"
-
-msgid "Show results on the map"
-msgstr "Zobrazit výsledky na mapě"
-
-msgid "Cut Bookmark"
-msgstr "Vyjmout záložku"
-
-msgid "Copy Bookmark"
-msgstr "Kopírovat záložku"
-
-msgid "Rename Bookmark"
-msgstr "Přejmenovat záložku"
-
-msgid "Paste Bookmark"
-msgstr "Vložit záložku"
-
-msgid "Delete Bookmark"
-msgstr "Smazat záložku"
-
-msgid "Delete waypoint"
-msgstr "Smazat bod trasy"
-
-msgid "Bookmarks"
-msgstr "Záložky"
-
-msgid "Bookmarks as waypoints"
-msgstr "Záložky jako body trasy"
-
-msgid "Save waypoints"
-msgstr "Uložit body trasy"
-
-msgid "Replace with waypoints"
-msgstr "Nahradit body na trase"
-
-msgid "Delete Folder"
-msgstr "Smazat složku"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Přidat složku záložek"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Vložit záložku"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Záložka %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Stáhnout %s"
-
-msgid "Map Download"
-msgstr "Mapa ke stažení"
-
-msgid "Active"
-msgstr "Aktivní"
-
-msgid "Download Enabled"
-msgstr "Stahování povoleno"
-
-msgid "Download completely"
-msgstr "Stáhnuto kompletní"
-
-msgid "Show Satellite Status"
-msgstr "Ukázat stav satelitu"
-
-msgid " Elevation "
-msgstr " Převýšení "
-
-msgid " Azimuth "
-msgstr " Azimut "
-
-msgid "Show NMEA Data"
-msgstr "Ukázat NMEA data"
-
-msgid "car"
-msgstr "auto"
-
-msgid "bike"
-msgstr "kolo"
-
-msgid "pedestrian"
-msgstr "chodec"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Aktuální profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Změnit profil na: %s"
-
-msgid "Set as active"
-msgstr "Nastavit jako aktivní"
-
-msgid "Show Satellite status"
-msgstr "Ukázat stav satelitu"
-
-msgid "Show NMEA data"
-msgstr "Ukázat NMEA data"
-
-msgid "Add Bookmark"
-msgstr "PÅ™idat znaÄku"
-
-msgid "Rename"
-msgstr "Přejmenovat"
-
-msgid "About Navit"
-msgstr "O Navitu"
-
-#. Authors
-msgid "By"
-msgstr "Od"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "A další z Navit týmu"
-
-msgid "members and contributors."
-msgstr "Älenové a pÅ™ispívající"
-
-msgid "Waypoints"
-msgstr "Body trasy"
-
-msgid "Enter Coordinates"
-msgstr "Zadejte souřadnice"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Zeměpisná délka a šířka"
-
-msgid "Enter coordinates, for example:"
-msgstr "Zadejte souřadnice, například:"
-
-msgid "Vehicle"
-msgstr "Vozidlo"
-
-msgid "Rules"
-msgstr "Pravidla"
-
-msgid "Lock on road"
-msgstr "Uchytit na cestu"
-
-msgid "Northing"
-msgstr "SevernÄ›"
-
-msgid "Map follows Vehicle"
-msgstr "Mapa sleduje vozidlo"
-
-msgid "Plan with Waypoints"
-msgstr "Plán s bodama trasy"
-
-msgid "Maps"
-msgstr "Mapy"
-
-msgid "Layout"
-msgstr "Rozvržení"
-
-msgid "Height Profile"
-msgstr "Výškový profil"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Popis trasy"
-
-msgid "Show Locale"
-msgstr "Zobrazit jazyk"
-
-msgid "Former Destinations"
-msgstr "Minulé cíle"
-
-msgid "- No former destinations available -"
-msgstr "- Minulé cíle nejsou dostupné -"
-
-msgid "Message"
-msgstr "Zpráva"
-
-msgid "Back"
-msgstr "Zpět"
-
-msgid "Back to map"
-msgstr "Zpět na mapu"
-
-msgid "Main Menu"
-msgstr "Hlavní nabídka"
-
-msgid "House number"
-msgstr "Číslo domu"
-
-msgid "Next"
-msgstr "Další"
-
-msgid "Prev"
-msgstr "Předchozí"
-
-msgid "Return to route!"
-msgstr "Vraťte se na komunikaci!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Pozor! Kamera!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Zpomalte"
-
-msgid "partial match"
-msgstr "ČásteÄná shoda"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Vyhledat"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Města"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Mapová data (c) přispěvatelé OpenStreetMap, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "Stažené mapy"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"Omlouváme se, ale na systému Android tato aplikace v souÄasnosti nepodporuje "
-"mapy vÄ›tší, než 3,8 GiB – vyberte takovou, která nepÅ™ekraÄuje tuto hranici."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Cestovat sem"
-
-msgid "Cancel"
-msgstr "Storno"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "Celá planeta"
-
-msgid "Africa"
-msgstr "Afrika"
-
-msgid "Canary Islands"
-msgstr "Kanárské ostrovy"
-
-msgid "Asia"
-msgstr "Asie"
-
-msgid "Korea"
-msgstr "Korea"
-
-msgid "Taiwan"
-msgstr "Taiwan"
-
-msgid "UAE+Other"
-msgstr "Spojené arabské emiráty+ostatní"
-
-msgid "Oceania"
-msgstr "Oceánie"
-
-msgid "Tasmania"
-msgstr "Tasmánie"
-
-msgid "Victoria"
-msgstr "Viktorie"
-
-msgid "New South Wales"
-msgstr "Nový Jižní Wales"
-
-msgid "Europe"
-msgstr "Evropa"
-
-msgid "Western Europe"
-msgstr "Západní Evropa"
-
-msgid "Azores"
-msgstr "Azory"
-
-msgid "BeNeLux"
-msgstr "Benelux"
-
-msgid "Alsace"
-msgstr "Alsasko"
-
-msgid "Aquitaine"
-msgstr "Akvitánie"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Dolní Normandie"
-
-msgid "Bourgogne"
-msgstr "Burgundsko"
-
-msgid "Bretagne"
-msgstr "Bretaň"
-
-msgid "Centre"
-msgstr "Střed"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardennes"
-
-msgid "Corse"
-msgstr "Korsika"
-
-msgid "Franche-Comte"
-msgstr "Franche-Comté"
-
-msgid "Haute-Normandie"
-msgstr "Horní Normandie"
-
-msgid "Ile-de-France"
-msgstr "Ile-de-France"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc-Roussillon"
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lotrinsko"
-
-msgid "Midi-Pyrenees"
-msgstr "Jižní Pyreneje"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-pas-de-Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Pays-de-la-Loire"
-
-msgid "Picardie"
-msgstr "Pikardie"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provensálsko-Alpy-Azurové pobřeží"
-
-msgid "Rhone-Alpes"
-msgstr "Rhone-Alpy"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Württembersko"
-
-msgid "Bayern"
-msgstr "Bavorsko"
-
-msgid "Mittelfranken"
-msgstr "Střední Franky"
-
-msgid "Niederbayern"
-msgstr "Dolní Bavorsko"
-
-msgid "Oberbayern"
-msgstr "Horní Bavorsko"
-
-msgid "Oberfranken"
-msgstr "Horní Franky"
-
-msgid "Oberpfalz"
-msgstr "Horní Falcko"
-
-msgid "Schwaben"
-msgstr "Švábsko"
-
-msgid "Unterfranken"
-msgstr "Dolní Franky"
-
-msgid "Berlin"
-msgstr "Berlín"
-
-msgid "Brandenburg"
-msgstr "Braniborsko"
-
-msgid "Bremen"
-msgstr "Brémy"
-
-msgid "Hamburg"
-msgstr "Hamburg"
-
-msgid "Hessen"
-msgstr "Hessensko"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Meklenbursko-Pomořansko"
-
-msgid "Niedersachsen"
-msgstr "Dolní Sasko"
-
-msgid "Nordrhein-westfalen"
-msgstr "Severní Porýní-Vestfálsko"
-
-msgid "Rheinland-Pfalz"
-msgstr "Porýnsko-Falcko"
-
-msgid "Saarland"
-msgstr "Sársko"
-
-msgid "Sachsen-Anhalt"
-msgstr "Sasko-Anhaltsko"
-
-msgid "Sachsen"
-msgstr "Sasko"
-
-msgid "Schleswig-Holstein"
-msgstr "Šlesvicko-Holštýnsko"
-
-msgid "Thueringen"
-msgstr "Thueringen"
-
-msgid "Mallorca"
-msgstr "Mallorca"
-
-msgid "Galicia"
-msgstr "Galície"
-
-msgid "Scandinavia"
-msgstr "Skandinávie"
-
-msgid "England"
-msgstr "Anglie"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "Východní Yorkshire a Hull"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "Jižní Yorkshire"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Skotsko"
-
-msgid "Wales"
-msgstr "Wales"
-
-msgid "Crete"
-msgstr "Kréta"
-
-msgid "North America"
-msgstr "Severní Amerika"
-
-msgid "Alaska"
-msgstr "Aljaška"
-
-msgid "Hawaii"
-msgstr "Havaj"
-
-msgid "USA"
-msgstr "USA"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (mimo Aljašky a Havaje)"
-
-msgid "Midwest"
-msgstr "Středozápad"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Severovýchod"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Tichý oceán"
-
-msgid "South"
-msgstr "Jih"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "Washington D.C."
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Louisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virginie"
-
-msgid "West Virginia"
-msgstr "Západní Virginie"
-
-msgid "West"
-msgstr "Západ"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "Kalifornie"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "Nové Mexico"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Stát Washington"
-
-msgid "South+Middle America"
-msgstr "Jižní a Střední Amerika"
-
-msgid "Guyane Francaise"
-msgstr "Francouzská Guyana"
-
-msgid "downloading"
-msgstr "stahování…"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "mapa připravena"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Není dostatek volného místa"
-
-msgid "Error downloading map!"
-msgstr "Chyba při stahování mapy!"
-
-msgid "Error writing map!"
-msgstr "Chyba při zápisu mapy!"
-
-msgid "Map download aborted!"
-msgstr "Stahování mapy přerušeno!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Zbývající Äas"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Mapa ke stažení"
-
-msgid "Vehicle Position"
-msgstr "Poloha vozidla"
-
-msgid "Main menu"
-msgstr "Hlavní nabídka"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Zobrazit\n"
-"mapu"
-
-msgid "Settings"
-msgstr "Nastavení"
-
-msgid "Tools"
-msgstr "Nástroje"
-
-msgid "Route"
-msgstr "Trasa"
-
-msgid "About"
-msgstr "O aplikaci"
-
-msgid "Quit"
-msgstr "UkonÄit"
-
-msgid "Actions"
-msgstr "Akce"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Minulé\n"
-"cíle"
-
-msgid "Coordinates"
-msgstr "Souřadnice"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"UkonÄit\n"
-"navigaci"
-
-msgid "Display"
-msgstr "Zobrazit"
-
-msgid "Fullscreen"
-msgstr "Celá obrazovka"
-
-msgid "Window Mode"
-msgstr "V oknÄ›"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Popis"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Zrušit minulý \n"
-"bod trasy"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Zrušit příští \n"
-" bod trasy"
-
-msgid "Satellite Status"
-msgstr "Stav satelitu"
-
-msgid "NMEA Data"
-msgstr "NMEA údaje"
-
-msgid "car_shortest"
-msgstr "auto nejkratší"
-
-msgid "car_avoid_tolls"
-msgstr "auto bez mýtného"
-
-msgid "car_pedantic"
-msgstr "auto puntiÄkářské"
-
-msgid "horse"
-msgstr "kůň"
-
-msgid "Truck"
-msgstr "Nákladní vůz"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Ano"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Startuje Navit"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit je spuštěný"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Vítejte v Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Děkujeme za instalaci Navit!\n"
-"\n"
-"Pro zaÄátek, vyberte \"Stáhnout mapy\" z menu pro stažení map. Poznámka: "
-"Velikost souboru map mohou být velké (>50MB) - wifi připojení je "
-"doporuÄeno.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap a přispěvovatelé\n"
-"\n"
-"Užijte si Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Další informace"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Přiblížit"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Oddálit"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Stáhnout mapy"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Přepnout Body zájmu (POIs = Points of Interest)"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "UkonÄit Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Zálohovat / Obnovit"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Smazat tuto mapu?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Stahování:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Chyba při stahování map."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Stahování map přerušeno"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Žádné umístění. Zkuste znovu po opravě umístění."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Mapy obsahující nynější umístění"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Hledat dle adresy"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Zadejte cíl"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Shoda Äástí adresy"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Vyhledávání…"
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Adresa nebyla nalezena"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Výsledky hledání"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "NaÄítání výsledku vyhledávání"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Výsledky nenalezeny."
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Nebyl zadán žádný text"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Nastavování cíle na:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Vyberte akci"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Vložte SD kartu"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Zálohování…"
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Obnovování…"
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Nezdařilo se vytvořit adresář pro zálohu"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Záloha se nezdařila"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Záloha nenalezena"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Obnova se nezdařila"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Záloha byla úspěšná"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Obnova byla úspěšná.\n"
-"Restartujte prosím Navit."
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Záloha nenalezena"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Obnova selhala"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Vyberte zálohu"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Zálohování"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Obnova"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr "Chybí data systémového pÅ™evodníku textu na Å™eÄ"
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "pak sjeÄte na %1$s %2$s"
diff --git a/po/cy.po.in b/po/cy.po.in
deleted file mode 100644
index 9171574a7..000000000
--- a/po/cy.po.in
+++ /dev/null
@@ -1,2744 +0,0 @@
-# Welsh translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Padi Phillips https://launchpad.net/~padi
-# Simon Hewison https://launchpad.net/~simon-hewison-6
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-06-14 23:55+0000\n"
-"Last-Translator: Padi Phillips <Unknown>\n"
-"Language-Team: Welsh <cy@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
-"2 : 3;\n"
-"Language: cy\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr ""
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr ""
-
-msgid "fifth"
-msgstr ""
-
-msgid "sixth"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "allanfa gyntaf"
-
-msgid "second exit"
-msgstr "allanfa ail"
-
-msgid "third exit"
-msgstr "allanfa trydydd"
-
-msgid "fourth exit"
-msgstr "allanfa pedwerydd"
-
-msgid "fifth exit"
-msgstr "allanfa pumed"
-
-msgid "sixth exit"
-msgstr "allanfa chweched"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d troedfedd"
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "un cilometr"
-msgstr[1] "%d cilometr"
-msgstr[2] "%d cilometr"
-msgstr[3] "%d cilometr"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Dilynwch yr heol am y %s nesaf"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "yn fuan"
-
-msgid "now"
-msgstr "nawr"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "yn cryf "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Allanfa"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/da.po.in b/po/da.po.in
deleted file mode 100644
index 2bd2cee87..000000000
--- a/po/da.po.in
+++ /dev/null
@@ -1,2766 +0,0 @@
-# Danish translation for Navit translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Esben Aaberg https://launchpad.net/~esben-aaberg
-# Fennek https://launchpad.net/~ng-fennek
-# Glenn https://launchpad.net/~glenn-mh-dk
-# Glenn Sommer https://launchpad.net/~glemsom
-# Jørgen Elgaard Larsen https://launchpad.net/~jel-elgaard
-# Kennet https://launchpad.net/~kharpsoe
-# Lasse Luttermann https://launchpad.net/~lasse-luttermann
-# Mads Konradsen https://launchpad.net/~mads-hk
-# Ole Carlsen https://launchpad.net/~ole-carlsen-web
-# Tomas Groth https://launchpad.net/~tomasgroth
-# Uffe Kjems https://launchpad.net/~uffekjems
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-01-29 16:53+0000\n"
-"Last-Translator: Esben Aaberg <esben_aaberg@yahoo.com>\n"
-"Language-Team: Glenn Sommer <glemsom@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: da\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Kører fra kildekode mappen\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "sætter '%s' til '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nulte"
-
-msgid "first"
-msgstr "første"
-
-msgid "second"
-msgstr "anden"
-
-msgid "third"
-msgstr "tredje"
-
-msgid "fourth"
-msgstr "fjerde"
-
-msgid "fifth"
-msgstr "femte"
-
-msgid "sixth"
-msgstr "sjette"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nulte afkørsel"
-
-msgid "first exit"
-msgstr "første afkørsel"
-
-msgid "second exit"
-msgstr "anden afkørsel"
-
-msgid "third exit"
-msgstr "tredje afkørsel"
-
-msgid "fourth exit"
-msgstr "fjerde afkørsel"
-
-msgid "fifth exit"
-msgstr "femte afkørsel"
-
-msgid "sixth exit"
-msgstr "sjette afkørsel"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d fod"
-
-#, c-format
-msgid "in %d feet"
-msgstr "om %d fod"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "om %d meter"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "om %d.%d kilometer"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "én kilometer"
-msgstr[1] "%d kilometer"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "om én kilometer"
-msgstr[1] "om %d kilometer"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "op på rampen"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sind i %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sind i %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sind i %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sind i %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sind i %s"
-
-msgid "When possible, please turn around"
-msgstr "NÃ¥r muligt, vend venligst om"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Følg vejen de næste %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Kør snart ind i rundkørslen"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Kør ind i rundkørslen %s"
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Forlad rundkørslen ved den %1$s %2$s"
-
-msgid "soon"
-msgstr "snart"
-
-msgid "now"
-msgstr "nu"
-
-msgid "then"
-msgstr "så"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Tag den afkørslen %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Tag den afkørslen %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "højre"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "venstre"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "blødt "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "skarpt "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Tag den %1$s vej til %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "efter %i veje"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Drej %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "vend så om"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Vend om %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "vend så om"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Vend om %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "følg"
-
-msgid "then you have reached your destination."
-msgstr "og så ankommer du til din destination"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Du er fremme ved destinationen %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Motorvejskryds"
-
-msgid "Exit"
-msgstr "Afkørsel"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Position"
-
-msgid "Command"
-msgstr "Kommando"
-
-msgid "Length"
-msgstr "Længde"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tid"
-
-msgid "Destination Length"
-msgstr "Længde til destinationen"
-
-msgid "Destination Time"
-msgstr "Tid til destinationen"
-
-msgid "Roadbook"
-msgstr "Vejbog"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Sæt som position"
-
-msgid "Set as destination"
-msgstr "Sæt som destination"
-
-msgid "Add as bookmark"
-msgstr "Tilføj som bogmærke"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Skærm koordinater %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Forenede Arabiske Emirater"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua og Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albanien"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenien"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Nederlandske Antiller"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktis"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikansk Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Østrig"
-
-#. 036
-msgid "Australia"
-msgstr "Australien"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ålands Øerne"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Aserbajdsjan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnien-Hercegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgien"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgarien"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "St Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasilien"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvetøen"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Hviderusland"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Cocosøerne (Keelingøerne)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, Den Demokratiske Republik"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Centralafrikanske Republik"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Schweiz"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Elfenbenskysten"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cook-øerne"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Cameroun"
-
-#. 156
-msgid "China"
-msgstr "Kina"
-
-#. 170
-msgid "Colombia"
-msgstr "Columbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kap Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Christmas Island (Indiske Ocean)"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cypern"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Tjekkiet"
-
-#. 276
-msgid "Germany"
-msgstr "Tyskland"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danmark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikanske Republik"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeriet"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estland"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypten"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Vestsahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spanien"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopien"
-
-#. 246
-msgid "Finland"
-msgstr "Finland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandsøerne"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronesien, de forenede stater af"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Færøerne"
-
-#. 250
-msgid "France"
-msgstr "Frankrig"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Storbritannien"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgien"
-
-#. 254
-msgid "French Guiana"
-msgstr "Fransk Guyana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grønland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ækvatorialguinea"
-
-#. 300
-msgid "Greece"
-msgstr "Grækenland"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Sydgeorgien og Sydsandwichøerne"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard-øen og McDonald-øerne"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatien"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Ungarn"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesien"
-
-#. 372
-msgid "Ireland"
-msgstr "Irland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isle of Man"
-
-#. 356
-msgid "India"
-msgstr "Indien"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Det britiske territorium i Indiske Ocean"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Den Islamiske Republik"
-
-#. 352
-msgid "Iceland"
-msgstr "Island"
-
-#. 380
-msgid "Italy"
-msgstr "Italien"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordan"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgisistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambodja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comorerne"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Sankt Kitts og Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea, Den Demokratiske Folkerepublik"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea, Republikken"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Cayman-øerne"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kasakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litauen"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxembourg"
-
-#. 428
-msgid "Latvia"
-msgstr "Letland"
-
-#. 434
-msgid "Libya"
-msgstr "Libyen"
-
-#. 504
-msgid "Morocco"
-msgstr "Marokko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova, Republikken"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Sankt Marin (Fransk del)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshall-øerne"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedonien, Den Tidligere Jugoslaviske Republik"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar (Burma)"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongoliet"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Nordmarianerne"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauretanien"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldiverne"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexico"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Ny Kaledonien"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk-øen"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Holland"
-
-#. 578
-msgid "Norway"
-msgstr "Norge"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "New Zealand"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Fransk Polynesien"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua New Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filippinerne"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polen"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Sankt Pierre og Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palæstinensiske Territorie, Det Besatte"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Romænien"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbien"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Rusland"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi-Arabien"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Salomon-øerne"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychellerne"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Sverige"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Sankt Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenien"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard og Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakiet"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "São Tomé og Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Den arabiske republik Syrien"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks- og Caicosøerne"
-
-#. 148
-msgid "Chad"
-msgstr "Tchad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Fransk sydlige territorier"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunesien"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Tyrkiet"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad og Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, Den Kinesiske Provins"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania, Den Forenede Republik"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "USA, mindre omliggende øer"
-
-#. 840
-msgid "United States"
-msgstr "USA"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Usbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikanstaten"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Sankt Vincent og Grenadinerne"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Britiske jomfruøer"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Amerikanske Jomfruøer"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis og Futunaøerne"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Sydafrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Ukendt, tilføj is_in mærke til disse byer"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Kort punkt"
-
-msgid "Car"
-msgstr "Bil"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Land"
-
-msgid "Postal"
-msgstr "Post"
-
-msgid "Town"
-msgstr "By"
-
-msgid "District"
-msgstr "Område"
-
-msgid "Street"
-msgstr "Gade"
-
-msgid "Number"
-msgstr "Nummer"
-
-msgid "Enter Destination"
-msgstr "Indtast destination"
-
-msgid "Zip Code"
-msgstr "Postnummer"
-
-msgid "City"
-msgstr "By"
-
-msgid "District/Township"
-msgstr "Distrikt"
-
-msgid "Map"
-msgstr "Kort"
-
-msgid "Bookmark"
-msgstr "Bogmærke"
-
-msgid "Destination"
-msgstr "Destination"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Vis"
-
-msgid "_Route"
-msgstr "Rute"
-
-msgid "_Former Destinations"
-msgstr "Tidligere destinationer"
-
-msgid "_Bookmarks"
-msgstr "Bogmærker"
-
-msgid "_Map"
-msgstr "Kort"
-
-msgid "_Layout"
-msgstr "Layout"
-
-msgid "_Projection"
-msgstr "Visning"
-
-msgid "_Vehicle"
-msgstr "Køretøj"
-
-msgid "Zoom_Out"
-msgstr "Zoom ud"
-
-msgid "Decrease zoom level"
-msgstr "Sænk zoom niveau"
-
-msgid "Zoom_In"
-msgstr "Zoom ind"
-
-msgid "Increase zoom level"
-msgstr "Øg zoom niveau"
-
-msgid "_Recalculate"
-msgstr "Genberegn"
-
-msgid "Redraw map"
-msgstr "Gentegn kort"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Åbner adressesøgning"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Stop Navigation"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Afslut"
-
-msgid "Quit the application"
-msgstr "Afslut programmet"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Stop Navigation"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Skifter kort-orientering mellem nord og følg køretøjet"
-
-msgid "_Roadbook"
-msgstr "Vejbog"
-
-msgid "Show/hide route description"
-msgstr "Vis/gem rute-beskrivelse"
-
-msgid "_Autozoom"
-msgstr "Autozoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Aktivér/deaktivér automatisk zoom niveauændring"
-
-msgid "_Fullscreen"
-msgstr "Fuldskærm"
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr "Apotek"
-
-msgid "Restaurant"
-msgstr "Restaurant"
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr "Hotel"
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr "Tankstation"
-
-msgid "Bank"
-msgstr "Bank"
-
-msgid "Hospital"
-msgstr "Hospital"
-
-msgid "Cinema"
-msgstr "Biograf"
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr "Skole"
-
-msgid "Police"
-msgstr "Politi"
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr "Vælg en kategori"
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Kategori"
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr "Navn"
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NØ"
-
-msgid "E"
-msgstr "Ø"
-
-msgid "SE"
-msgstr "SØ"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SV"
-
-msgid "W"
-msgstr "V"
-
-msgid "NW"
-msgstr "NV"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nej"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Rute %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Rute 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Hjælp"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Vis i Browser"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Gader"
-
-msgid "House numbers"
-msgstr "Hus numre"
-
-msgid "View Attributes"
-msgstr "Vis attributter"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "POI"
-
-msgid "View on map"
-msgstr "Vis på kort"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Klip bogmærke"
-
-msgid "Copy Bookmark"
-msgstr "Kopiér bogmærke"
-
-msgid "Rename Bookmark"
-msgstr "Omdøb bogmærke"
-
-msgid "Paste Bookmark"
-msgstr "Indsæt bogmærke"
-
-msgid "Delete Bookmark"
-msgstr "Slet bogmærke"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Bogmærker"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Tilføj bogmærkemappe"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Indsæt bogmærke"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Bogmærke %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Vis satellit status"
-
-msgid " Elevation "
-msgstr " højde "
-
-msgid " Azimuth "
-msgstr " azimut "
-
-msgid "Show NMEA Data"
-msgstr "Vis NMEA data"
-
-msgid "car"
-msgstr "Bil"
-
-msgid "bike"
-msgstr "cykel"
-
-msgid "pedestrian"
-msgstr "fodgænger"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Aktuel profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Skift profil til: %s"
-
-msgid "Set as active"
-msgstr "Sæt til aktiv"
-
-msgid "Show Satellite status"
-msgstr "Vis satellit status"
-
-msgid "Show NMEA data"
-msgstr "Vis NMEA data"
-
-msgid "Add Bookmark"
-msgstr "Tilføj Bogmærke"
-
-msgid "Rename"
-msgstr "Omdøb"
-
-msgid "About Navit"
-msgstr "Om Navit"
-
-#. Authors
-msgid "By"
-msgstr "Af"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Og hele Navit-holdets"
-
-msgid "members and contributors."
-msgstr "medlemmer og bidragsydere."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Køretøj"
-
-msgid "Rules"
-msgstr "Regler"
-
-msgid "Lock on road"
-msgstr "LÃ¥s til vej"
-
-msgid "Northing"
-msgstr "mod nord"
-
-msgid "Map follows Vehicle"
-msgstr "Kort følger køretøj"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Kort"
-
-msgid "Layout"
-msgstr "Layout"
-
-msgid "Height Profile"
-msgstr "Lodret profil"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Route Beskrivelse"
-
-msgid "Show Locale"
-msgstr "Vis Lokale"
-
-msgid "Former Destinations"
-msgstr "Tidligere destinationer"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Meddelelse"
-
-msgid "Back"
-msgstr "Tilbage"
-
-msgid "Back to map"
-msgstr "Tilbage til kort"
-
-msgid "Main Menu"
-msgstr "Hovedmenu"
-
-msgid "House number"
-msgstr "Husnummer"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Køretøjsposition"
-
-msgid "Main menu"
-msgstr "Hovedmenu"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Vis\n"
-"Kort"
-
-msgid "Settings"
-msgstr "Indstillinger"
-
-msgid "Tools"
-msgstr "Værktøj"
-
-msgid "Route"
-msgstr "Rute"
-
-msgid "About"
-msgstr "Om"
-
-msgid "Quit"
-msgstr "Luk"
-
-msgid "Actions"
-msgstr "Funktioner"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Stop\n"
-"Navigation"
-
-msgid "Display"
-msgstr "Vis"
-
-msgid "Fullscreen"
-msgstr "Fuldskærm"
-
-msgid "Window Mode"
-msgstr "Vinduestilstand"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Beskrivelse"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "hest"
-
-msgid "Truck"
-msgstr "Lastbil"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "forlad så rundkørslen ved den %1$s %2$s"
-
-#, c-format
-#~ msgid "in %d m"
-#~ msgstr "om %d m"
-
-#, c-format
-#~ msgid "%d m"
-#~ msgstr "%d m"
diff --git a/po/de.po.in b/po/de.po.in
deleted file mode 100644
index 7ff0ba0e6..000000000
--- a/po/de.po.in
+++ /dev/null
@@ -1,2845 +0,0 @@
-# German translations for navit
-# 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
-# Artem Anufrij https://launchpad.net/~artem-anufrij
-# Bernhard Reiter https://launchpad.net/~ockham-razor
-# Christian Moll https://launchpad.net/~christian-chrmoll
-# Clemens Kiener https://launchpad.net/~clemens-kiener
-# Dennis Gohert https://launchpad.net/~info-degoist
-# Ettore Atalan https://launchpad.net/~atalanttore
-# Fred https://launchpad.net/~jelk
-# Fume https://launchpad.net/~fume
-# KaZeR https://launchpad.net/~kazer
-# Kamikaaze https://launchpad.net/~kamikaazewiesel
-# Keruskerfuerst https://launchpad.net/~arminmohring
-# Konsti K. https://launchpad.net/~konstantin-koehring
-# Lars Hennig https://launchpad.net/~elhennig
-# Lukas Bögelein https://launchpad.net/~lukas-boegelein
-# MUrks https://launchpad.net/~tabstop
-# Manuel Hohmann https://launchpad.net/~mhohmann
-# Mathias Klein https://launchpad.net/~ma-klein
-# Paulodile https://launchpad.net/~stuff4tschaka
-# Roadrunner IN https://launchpad.net/~online
-# Robotaxi https://launchpad.net/~robotaxi
-# 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
-# everyone https://launchpad.net/~anonymus1338
-# lopho https://launchpad.net/~lopho
-# metehyi https://launchpad.net/~metehyi
-# singesang https://launchpad.net/~singesang
-# spaetz https://launchpad.net/~spaetz
-# vsandre https://launchpad.net/~riedel-andre
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \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"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: de\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Aus dem Quellverzeichnis starten\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "setze '%s' auf '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nullte"
-
-msgid "first"
-msgstr "erste"
-
-msgid "second"
-msgstr "zweite"
-
-msgid "third"
-msgstr "dritte"
-
-msgid "fourth"
-msgstr "vierte"
-
-msgid "fifth"
-msgstr "fünfte"
-
-msgid "sixth"
-msgstr "sechste"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nullten Ausfahrt"
-
-msgid "first exit"
-msgstr "ersten Ausfahrt"
-
-msgid "second exit"
-msgstr "zweiten Ausfahrt"
-
-msgid "third exit"
-msgstr "dritten Ausfahrt"
-
-msgid "fourth exit"
-msgstr "vierten Ausfahrt"
-
-msgid "fifth exit"
-msgstr "fünften Ausfahrt"
-
-msgid "sixth exit"
-msgstr "sechsten Ausfahrt"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d Fuss"
-
-#, c-format
-msgid "in %d feet"
-msgstr "In %d Fuss"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d,%d Meilen"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "in %d,%d Meilen"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "eine Meile"
-msgstr[1] "%d Meilen"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "In einer Meile"
-msgstr[1] "In %d Meilen"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d Meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "In %d Metern"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d,%d Kilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "In %d,%d Kilometern"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "einen Kilometer"
-msgstr[1] "%d Kilometer"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "In einem Kilometer"
-msgstr[1] "In %d Kilometern"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$sauf die %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$sauf die Straße %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$sauf den %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$sauf die %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$sauf das %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "auf die Auffahrt"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sauf die Straße %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sauf den %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sauf die %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sauf das %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sauf die %s"
-
-#
-msgid "When possible, please turn around"
-msgstr "Wenn möglich, bitte wenden"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "Richtung %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Dem Straßenverlauf %s folgen"
-
-msgid "Enter the roundabout soon"
-msgstr "Demnächst in den Kreisverkehr einfahren"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "%s in den Kreisverkehr einfahren"
-
-msgid "then enter the roundabout"
-msgstr "dann in den Kreisverkehr einfahren"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Verlassen Sie den Kreisverkehr an der %1$s %2$s"
-
-msgid "soon"
-msgstr "Demnächst"
-
-msgid "now"
-msgstr "Jetzt"
-
-msgid "then"
-msgstr "dann"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "dann%1$s auffahren"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Fahren Sie %1$s%2$s auf"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "dann%1$s auffahren"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Fahren Sie %1$s%2$s auf"
-
-msgid "on your left"
-msgstr "links"
-
-msgid "on your right"
-msgstr "rechts"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "%3$s nehmen Sie %2$s die Ausfahrt %1$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "%2$s nehmen Sie %1$s die Ausfahrt %3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "am Autobahnknoten"
-
-msgid "at exit"
-msgstr "an der Ausfahrt"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "dann%1$s geradeaus fahren"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "%1$s%2$s geradeaus fahren%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "dann rechts halten%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "%1$s rechts halten%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "dann links halten%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "%1$s links halten%2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "rechts"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "links"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "leicht "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "scharf "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "dann die %1$s Straße %2$s abbiegen"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Die %1$s Straße %2$s abbiegen"
-
-#, c-format
-msgid "after %i roads"
-msgstr "nach %i Straßen"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "%3$s %1$s%2$s abbiegen%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "dann wenden"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Wenden Sie %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "dann wenden"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Wenden Sie %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "folgen"
-
-msgid "then you have reached your destination."
-msgstr "dann haben Sie Ihr Ziel erreicht."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "%s haben Sie Ihr Ziel erreicht"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Autobahnknoten"
-
-msgid "Exit"
-msgstr "Ausfahrt"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Standort"
-
-msgid "Command"
-msgstr "Anweisung"
-
-msgid "Length"
-msgstr "Länge"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Zeit"
-
-msgid "Destination Length"
-msgstr "Verbleibende Strecke zum Ziel"
-
-msgid "Destination Time"
-msgstr "Fahrzeit zum Ziel"
-
-msgid "Roadbook"
-msgstr "Wegbeschreibung"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Wegpunkt %d"
-
-msgid "Visit before..."
-msgstr "Als Wegpunkt setzen vor..."
-
-msgid "Set as position"
-msgstr "Als Standort setzen"
-
-msgid "Set as destination"
-msgstr "Als Ziel setzen"
-
-msgid "Add as bookmark"
-msgstr "Als Lesezeichen aufnehmen"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Bildschirm %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Vereinigte Arabische Emirate"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua und Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albanien"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenien"
-
-#
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Niederländische Antillen"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktis"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentinien"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikanisch-Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Österreich"
-
-#. 036
-msgid "Australia"
-msgstr "Australien"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ã…land"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Aserbaidschan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnien und Herzegowina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesch"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgien"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgarien"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint-Barthélemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivien"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Sint Eustatius und Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brasilien"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvetinsel"
-
-#. 072
-msgid "Botswana"
-msgstr "Botsuana"
-
-#. 112
-msgid "Belarus"
-msgstr "Weißrussland"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosinseln"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, Demokratische Republik"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Zentralafrikanische Republik"
-
-#. 178
-msgid "Congo"
-msgstr "Republik Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Schweiz"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Elfenbeinküste"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cookinseln"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "China, Volksrepublik"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbien"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kapverdische Inseln"
-
-#. 531
-msgid "Curacao"
-msgstr "Curaçao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Weihnachtsinsel"
-
-#. 196
-msgid "Cyprus"
-msgstr "Zypern"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Tschechische Republik"
-
-#. 276
-msgid "Germany"
-msgstr "Deutschland"
-
-#. 262
-msgid "Djibouti"
-msgstr "Dschibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Dänemark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikanische Republik"
-
-#. 012
-msgid "Algeria"
-msgstr "Algerien"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estland"
-
-#. 818
-msgid "Egypt"
-msgstr "Ägypten"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Westsahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spanien"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Äthiopien"
-
-#. 246
-msgid "Finland"
-msgstr "Finnland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidschi"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandinseln"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronesien"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Färöer"
-
-#. 250
-msgid "France"
-msgstr "Frankreich"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabun"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Vereinigtes Königreich"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgien"
-
-#. 254
-msgid "French Guiana"
-msgstr "Französisch-Guayana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grönland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Äquatorialguinea"
-
-#. 300
-msgid "Greece"
-msgstr "Griechenland"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Südgeorgien und die Südlichen Sandwichinseln"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hongkong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard- und McDonald-Inseln"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatien"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Ungarn"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesien"
-
-#. 372
-msgid "Ireland"
-msgstr "Irland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Insel Man"
-
-#. 356
-msgid "India"
-msgstr "Indien"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Britisches Territorium im Indischen Ozean"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Islamische Republik"
-
-#. 352
-msgid "Iceland"
-msgstr "Island"
-
-#. 380
-msgid "Italy"
-msgstr "Italien"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordanien"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgisistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodscha"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komoren"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "St. Kitts und Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea, Demokratische Volksrepublik"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Südkorea"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kaimaninseln"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kasachstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos, Demokratische Volksrepublik"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "St. Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litauen"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Lettland"
-
-#. 434
-msgid "Libya"
-msgstr "Lybien"
-
-#. 504
-msgid "Morocco"
-msgstr "Marokko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldawien"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint-Martin (franz. Teil)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshallinseln"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Mazedonien, ehem. jugoslawische Republik"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Burma"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolei"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Nördliche Marianen"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauretanien"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Malediven"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mosambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Neukaledonien"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolkinsel"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Niederlande"
-
-#. 578
-msgid "Norway"
-msgstr "Norwegen"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Neuseeland"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Französisch-Polynesien"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua-Neuguinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Philippinen"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polen"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint-Pierre und Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairninseln"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palästinensische Autonomiegebiete"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Réunion"
-
-#. 642
-msgid "Romania"
-msgstr "Rumänien"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbien"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Russische Föderation"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi-Arabien"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Salomonen"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychellen"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Schweden"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "St. Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slowenien"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard und Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slowakei"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr "Südsudan"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "São Tomé und Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sint Maarten (niederl. Teil)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrien, Arabische Republik"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swasiland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks- und Caicosinseln"
-
-#. 148
-msgid "Chad"
-msgstr "Tschad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Französische Süd- und Antarktisgebiete"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadschikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Osttimor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunesien"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Türkei"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad und Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Republik China"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tansania, Vereinigte Republik"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "United States Minor Outlying Islands"
-
-#. 840
-msgid "United States"
-msgstr "Vereinigte Staaten von Amerika"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Usbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikanstadt"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "St. Vincent und die Grenadinen"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Britische Jungferninseln"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Amerikanische Jungferninseln"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis und Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Südafrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Sambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Simbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "*Unbekannt, füge Etikett \"ist in\" zu diesen Städten hinzu"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-"navit Verwendung:\n"
-"navit [Option] [configfile]\n"
-"\t-c <Datei>: benutze <Datei> als Konfigurationsdatei, anstatt der "
-"Standardkonfigurationsdatei.\n"
-"\t-d <n>: setze den globalen debug-level auf <n> (0=Fehler, 1=Warnung, "
-"2=Info, 3=Debug).\n"
-"\tEinstellungen der Konfigurationsdatei werden weiterhin gültig sein, wenn "
-"sie einen höheren Wert angeben.\n"
-"\t-h: zeige diesen Hilfetext und beende.\n"
-"\t-v: zeige die Version und beende.\n"
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Keine Konfigurations-Datei navit.xml oder navit.xml.local gefunden\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Fehler beim Parsen der Konfigurations-Datei '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Benutze Konfigurations-Datei '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Fehler: Keine Konfiguration in der Datei '%s' gefunden\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Interne Initialisierung fehlgeschlagen, Programm wird beendet. Frühere "
-"Fehler beachten.\n"
-
-msgid "unknown street"
-msgstr "unbekannte Straße"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Namenloses Fahrzeug"
-
-msgid "Failed to write bookmarks file"
-msgstr "Lesezeichen-Datei konnte nicht geschrieben werden"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Kartenpunkt"
-
-msgid "Car"
-msgstr "Auto"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Land"
-
-#
-msgid "Postal"
-msgstr "PLZ"
-
-msgid "Town"
-msgstr "Ort"
-
-msgid "District"
-msgstr "Gegend"
-
-msgid "Street"
-msgstr "Straße"
-
-msgid "Number"
-msgstr "Nummer"
-
-msgid "Enter Destination"
-msgstr "Reiseziel eingeben"
-
-msgid "Zip Code"
-msgstr "Postleitzahl"
-
-msgid "City"
-msgstr "Stadt"
-
-msgid "District/Township"
-msgstr "Ortsteil/Gemeinde"
-
-msgid "Map"
-msgstr "Karte"
-
-msgid "Bookmark"
-msgstr "Lesezeichen"
-
-msgid "Destination"
-msgstr "Reiseziel"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "_Anzeige"
-
-msgid "_Route"
-msgstr "_Route"
-
-msgid "_Former Destinations"
-msgstr "_Vorherige Ziele"
-
-msgid "_Bookmarks"
-msgstr "_Lesezeichen"
-
-msgid "_Map"
-msgstr "_Karte"
-
-msgid "_Layout"
-msgstr "_Erscheinungsbild"
-
-msgid "_Projection"
-msgstr "_Projektion"
-
-msgid "_Vehicle"
-msgstr "_Fahrzeug"
-
-msgid "Zoom_Out"
-msgstr "Ver_kleinern"
-
-msgid "Decrease zoom level"
-msgstr "Verkleinern"
-
-msgid "Zoom_In"
-msgstr "Ver_größern"
-
-msgid "Increase zoom level"
-msgstr "Vergrößern"
-
-msgid "_Recalculate"
-msgstr "_Neu berechnen"
-
-msgid "Redraw map"
-msgstr "Karte neuzeichnen"
-
-msgid "_Info"
-msgstr "_Info"
-
-msgid "Set _destination"
-msgstr "Als _Ziel setzen"
-
-msgid "Opens address search dialog"
-msgstr "Öffnet Adresssuche-Dialog"
-
-msgid "_POI search"
-msgstr "_POI Suche"
-
-msgid "Opens POI search dialog"
-msgstr "Öffnet POI Suche"
-
-msgid "_Stop Navigation"
-msgstr "Navigation be_enden"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Beenden"
-
-msgid "Quit the application"
-msgstr "Die Anwendung beenden"
-
-msgid "Show position _cursor"
-msgstr "Positions_marke zeigen"
-
-msgid "_Lock on Road"
-msgstr "Auf Straße _zeigen"
-
-msgid "_Keep orientation to the North"
-msgstr "_Nordorientierung"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-"Die Kartenorientierung zwischen Norden und Fahrzeugausrichtung wechseln"
-
-msgid "_Roadbook"
-msgstr "_Wegbeschreibung"
-
-msgid "Show/hide route description"
-msgstr "Routenbeschreibung anzeigen/schließen"
-
-msgid "_Autozoom"
-msgstr "_automatischer Zoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Automatischen Zoom einschalten/ausschalten"
-
-msgid "_Fullscreen"
-msgstr "_Vollbild"
-
-msgid "Data"
-msgstr "Daten"
-
-msgid "Pharmacy"
-msgstr "Apotheke"
-
-msgid "Restaurant"
-msgstr "Restaurant"
-
-msgid "Restaurant. Fast food"
-msgstr "Fast-Food Restaurant"
-
-msgid "Hotel"
-msgstr "Hotel"
-
-msgid "Car parking"
-msgstr "Parkplatz"
-
-msgid "Fuel station"
-msgstr "Tankstelle"
-
-msgid "Bank"
-msgstr "Bank"
-
-msgid "Hospital"
-msgstr "Krankenhaus"
-
-msgid "Cinema"
-msgstr "Kino"
-
-msgid "Train station"
-msgstr "Bahnhof"
-
-msgid "School"
-msgstr "Schule"
-
-msgid "Police"
-msgstr "Polizei"
-
-msgid "Justice"
-msgstr "Gericht"
-
-msgid "Taxi"
-msgstr "Taxi"
-
-msgid "Shopping"
-msgstr "Einkaufen"
-
-msgid "Distance from screen center (km)"
-msgstr "Entfernung vom Bildschirmmittelpunkt (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "POI %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Setze Ziel auf %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "Setze Karte auf %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "Setze nächsten Besuch auf %ld, %ld \n"
-
-msgid "POI search"
-msgstr "POI Suche"
-
-msgid "Select a category"
-msgstr "Eine Kategorie auswählen"
-
-msgid "Select a distance to look for (km)"
-msgstr "Wählen Sie eine Suchdistanz (km)"
-
-msgid "Select a POI"
-msgstr "Wählen Sie ein POI"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Kategorie"
-
-msgid "Direction"
-msgstr "Richtung"
-
-msgid "Distance(m)"
-msgstr "Entfernung (m)"
-
-msgid "Name"
-msgstr "Bezeichnung"
-
-msgid "Visit Before"
-msgstr "vorherige Ziele"
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NO"
-
-msgid "E"
-msgstr "O"
-
-msgid "SE"
-msgstr "SO"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nein"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Route %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Route 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Hilfe"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Wegpunkt %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Auswählen, wovor der Wegpunkt eingefügt werden soll"
-
-msgid "View in Browser"
-msgstr "Im Browser anzeigen"
-
-msgid "Item type"
-msgstr "Elementtyp"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Straßen"
-
-msgid "House numbers"
-msgstr "Hausnummern"
-
-msgid "View Attributes"
-msgstr "Attribute anzeigen"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Als Position setzen (und Fahrzeug deaktivieren)"
-
-msgid "POIs"
-msgstr "Interessante Kartenpunkte"
-
-msgid "View on map"
-msgstr "Auf der Karte zeigen"
-
-msgid "Remove search results from the map"
-msgstr "Suchergebnisse aus Karte löschen"
-
-msgid "Show results on the map"
-msgstr "Ergebnisse in Karte anzeigen"
-
-msgid "Cut Bookmark"
-msgstr "Lesezeichen ausschneiden"
-
-msgid "Copy Bookmark"
-msgstr "Lesezeichen kopieren"
-
-msgid "Rename Bookmark"
-msgstr "Lesezeichen umbenennen"
-
-msgid "Paste Bookmark"
-msgstr "Lesezeichen einfügen"
-
-msgid "Delete Bookmark"
-msgstr "Lesezeichen löschen"
-
-msgid "Delete waypoint"
-msgstr "Wegpunkt löschen"
-
-msgid "Bookmarks"
-msgstr "Lesezeichen"
-
-msgid "Bookmarks as waypoints"
-msgstr "Lesezeichen als Wegpunkte"
-
-msgid "Save waypoints"
-msgstr "Wegpunkte abspeichern"
-
-msgid "Replace with waypoints"
-msgstr "Durch Wegpunkte ersetzen"
-
-msgid "Delete Folder"
-msgstr "Ordner löschen"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Lesezeichen-Ordner hinzufügen"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Lesezeichen einfügen"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Lesezeichen %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "%s herunterladen"
-
-msgid "Map Download"
-msgstr "Kartendownload"
-
-msgid "Active"
-msgstr "Aktiv"
-
-msgid "Download Enabled"
-msgstr "Download aktiviert"
-
-msgid "Download completely"
-msgstr "Komplett herunterladen"
-
-msgid "Show Satellite Status"
-msgstr "Satellitenstatus anzeigen"
-
-msgid " Elevation "
-msgstr " Höhe "
-
-msgid " Azimuth "
-msgstr " Längengrad "
-
-msgid "Show NMEA Data"
-msgstr "zeige NMEA Daten"
-
-msgid "car"
-msgstr "Auto"
-
-msgid "bike"
-msgstr "Fahrrad"
-
-msgid "pedestrian"
-msgstr "Fußgänger"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Aktuelles Profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Profil ändern nach: %s"
-
-msgid "Set as active"
-msgstr "Als Aktiv setzen"
-
-msgid "Show Satellite status"
-msgstr "Satellitenstatus anzeigen"
-
-msgid "Show NMEA data"
-msgstr "NMEA Daten anzeigen"
-
-msgid "Add Bookmark"
-msgstr "Lesezeichen hinzufügen"
-
-msgid "Rename"
-msgstr "Umbenennen"
-
-msgid "About Navit"
-msgstr "Ãœber Navit"
-
-#. Authors
-msgid "By"
-msgstr "Von"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Und das ganze Navit Team"
-
-msgid "members and contributors."
-msgstr "Mitglieder und Mitarbeiter"
-
-msgid "Waypoints"
-msgstr "Wegpunkte"
-
-msgid "Enter Coordinates"
-msgstr "Koordinaten eingeben"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Breitengrad Längengrad"
-
-msgid "Enter coordinates, for example:"
-msgstr "Koordinaten eingeben, z.B.:"
-
-msgid "Vehicle"
-msgstr "Fahrzeug"
-
-msgid "Rules"
-msgstr "Regeln"
-
-msgid "Lock on road"
-msgstr "Auf Straße zeigen"
-
-msgid "Northing"
-msgstr "Einnorden"
-
-msgid "Map follows Vehicle"
-msgstr "Karte folgt Fahrzeug"
-
-msgid "Plan with Waypoints"
-msgstr "Planung mit Wegpunkten"
-
-msgid "Maps"
-msgstr "Karten"
-
-msgid "Layout"
-msgstr "Erscheinungsbild"
-
-msgid "Height Profile"
-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 "Die Route muss mindestens zwei Höhenlinien kreuzen"
-
-msgid "Route Description"
-msgstr "Wegbeschreibung"
-
-msgid "Show Locale"
-msgstr "Lokalisierung anzeigen"
-
-msgid "Former Destinations"
-msgstr "Vorherige Ziele"
-
-msgid "- No former destinations available -"
-msgstr "- Keine vorherigen Ziele -"
-
-msgid "Message"
-msgstr "Benachrichtigung"
-
-msgid "Back"
-msgstr "Zurück"
-
-msgid "Back to map"
-msgstr "Zurück zur Karte"
-
-msgid "Main Menu"
-msgstr "Hauptmenü"
-
-msgid "House number"
-msgstr "Hausnummer"
-
-msgid "Next"
-msgstr "Vor"
-
-msgid "Prev"
-msgstr "Zurück"
-
-msgid "Return to route!"
-msgstr "Zurück zur Route!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Achtung Blitzer!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Bitte Geschwindigkeit verringern"
-
-msgid "partial match"
-msgstr "ungefähr"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Suche"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Städte"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Kartendaten (c) von OpenStreetMap unter ODbL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-"Der Speicherpfad für die Karte ist nicht verfügbar.\n"
-"Setzen Sie eine SD Karte ein und starten Sie Navit erneut\n"
-"oder wählen Sie einen anderen Pfad aus."
-
-msgid "Downloaded maps"
-msgstr "Heruntergeladene Karten"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"Entschuldigung. Derzeit untestützen wir auf Android keine Karten die größer "
-"als 3,8Gigabyte sind. Bitte wählen Sie eine kleinere Karte aus."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Ziel setzen"
-
-msgid "Cancel"
-msgstr "Abbrechen"
-
-msgid "filenamePath"
-msgstr "Dateipfad"
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-"Karten-Speicherort ist %s\n"
-"Starten Sie Navit erneut."
-
-msgid "Whole Planet"
-msgstr "Ganze Welt"
-
-msgid "Africa"
-msgstr "Afrika"
-
-msgid "Canary Islands"
-msgstr "Kanarische Inseln"
-
-msgid "Asia"
-msgstr "Asien"
-
-msgid "Korea"
-msgstr "Korea"
-
-msgid "Taiwan"
-msgstr "Taiwan"
-
-msgid "UAE+Other"
-msgstr "Vereinigte Arabische Emirate+weitere"
-
-msgid "Oceania"
-msgstr "Ozeanien"
-
-msgid "Tasmania"
-msgstr "Tasmanien"
-
-msgid "Victoria"
-msgstr "Victoria"
-
-msgid "New South Wales"
-msgstr "New South Wales"
-
-msgid "Europe"
-msgstr "Europa"
-
-msgid "Western Europe"
-msgstr "West-Europa"
-
-msgid "Azores"
-msgstr "Azoren"
-
-msgid "BeNeLux"
-msgstr "Beneluxländer"
-
-msgid "Alsace"
-msgstr "Elsass"
-
-msgid "Aquitaine"
-msgstr "Aquitanien"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Basse-Normandie"
-
-msgid "Bourgogne"
-msgstr "Burgund"
-
-msgid "Bretagne"
-msgstr "Bretagne"
-
-msgid "Centre"
-msgstr "Centre"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardenne"
-
-msgid "Corse"
-msgstr "Korsika"
-
-msgid "Franche-Comte"
-msgstr "Freie Grafschaft"
-
-msgid "Haute-Normandie"
-msgstr "Haute Normandie"
-
-msgid "Ile-de-France"
-msgstr "Ile-de-France"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc-Roussillon"
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lothringen"
-
-msgid "Midi-Pyrenees"
-msgstr "Midi-Pyrenäen"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-pas-de-Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Pays-de-la-Loire"
-
-msgid "Picardie"
-msgstr "Picardie"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provence-Alpes-Cote-d-Azur"
-
-msgid "Rhone-Alpes"
-msgstr "Rhone-Alpen"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Württemberg"
-
-msgid "Bayern"
-msgstr "Bayern"
-
-msgid "Mittelfranken"
-msgstr "Mittelfranken"
-
-msgid "Niederbayern"
-msgstr "Niederbayern"
-
-msgid "Oberbayern"
-msgstr "Oberbayern"
-
-msgid "Oberfranken"
-msgstr "Oberfranken"
-
-msgid "Oberpfalz"
-msgstr "Oberpfalz"
-
-msgid "Schwaben"
-msgstr "Schwaben"
-
-msgid "Unterfranken"
-msgstr "Unterfranken"
-
-msgid "Berlin"
-msgstr "Berlin"
-
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-msgid "Bremen"
-msgstr "Bremen"
-
-msgid "Hamburg"
-msgstr "Hamburg"
-
-msgid "Hessen"
-msgstr "Hessen"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Mecklenburg-Vorpommern"
-
-msgid "Niedersachsen"
-msgstr "Niedersachsen"
-
-msgid "Nordrhein-westfalen"
-msgstr "Nordrhein-Westfalen"
-
-msgid "Rheinland-Pfalz"
-msgstr "Rheinland-Pfalz"
-
-msgid "Saarland"
-msgstr "Saarland"
-
-msgid "Sachsen-Anhalt"
-msgstr "Sachsen-Anhalt"
-
-msgid "Sachsen"
-msgstr "Sachsen"
-
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-msgid "Thueringen"
-msgstr "Thüringen"
-
-msgid "Mallorca"
-msgstr "Mallorca"
-
-msgid "Galicia"
-msgstr "Galicien"
-
-msgid "Scandinavia"
-msgstr "Skandinavien"
-
-msgid "England"
-msgstr "England"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "East Yorkshire und Hull"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "South yorkshire"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Schottland"
-
-msgid "Wales"
-msgstr "Wales"
-
-msgid "Crete"
-msgstr "Kreta"
-
-msgid "North America"
-msgstr "Nordamerika"
-
-msgid "Alaska"
-msgstr "Alaska"
-
-msgid "Hawaii"
-msgstr "Hawaii"
-
-msgid "USA"
-msgstr "USA"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (außer Alaska und Hawaii)"
-
-msgid "Midwest"
-msgstr "Mittlerer Westen"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Nordosten"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Pazifik"
-
-msgid "South"
-msgstr "Süd"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "District of Columbia"
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Louisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virginia"
-
-msgid "West Virginia"
-msgstr "West Virginia"
-
-msgid "West"
-msgstr "West"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "Kalifornien"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "New Mexico"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Washington State"
-
-msgid "South+Middle America"
-msgstr "Süd+Mittel-Amerika"
-
-msgid "Guyane Francaise"
-msgstr "Französisch-Guayana"
-
-msgid "downloading"
-msgstr "wird heruntergeladen"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "Fertig in"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-"Der eingestellte Speicherort für das Kartenmaterial ist nicht verfügbar."
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Nicht genug freier Speicher"
-
-msgid "Error downloading map!"
-msgstr "Fehler beim Kartendownload"
-
-msgid "Error writing map!"
-msgstr "Fehler beim speichern der Karte!"
-
-msgid "Map download aborted!"
-msgstr "Kartendownload abgebrochen!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Fertig in"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Kartendownload"
-
-msgid "Vehicle Position"
-msgstr "Fahrzeugposition"
-
-msgid "Main menu"
-msgstr "Hauptmenü"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Karte\n"
-"anzeigen"
-
-msgid "Settings"
-msgstr "Einstellungen"
-
-msgid "Tools"
-msgstr "Werkzeuge"
-
-msgid "Route"
-msgstr "Route"
-
-msgid "About"
-msgstr "Ãœber"
-
-msgid "Quit"
-msgstr "Beenden"
-
-msgid "Actions"
-msgstr "Aktionen"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Vorherige\n"
-"Ziele"
-
-msgid "Coordinates"
-msgstr "Koordinaten"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Navigation\n"
-"beenden"
-
-msgid "Display"
-msgstr "Darstellung"
-
-msgid "Fullscreen"
-msgstr "Vollbildmodus"
-
-msgid "Window Mode"
-msgstr "Fenstermodus"
-
-msgid "Layers"
-msgstr "Ebenen"
-
-msgid "Description"
-msgstr "Beschreibung"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Letzten Wegpunkt\n"
-"entfernen"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Nächsten Wegpunkt\n"
-"entfernen"
-
-msgid "Satellite Status"
-msgstr "Satellitenstatus"
-
-msgid "NMEA Data"
-msgstr "NMEA Daten"
-
-msgid "car_shortest"
-msgstr "Auto kürzeste"
-
-msgid "car_avoid_tolls"
-msgstr "Auto ohne Maut"
-
-msgid "car_pedantic"
-msgstr "Auto genau"
-
-msgid "horse"
-msgstr "Pferd"
-
-msgid "Truck"
-msgstr "LKW"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Ja"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit gestartet"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit läuft"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Willkommen bei Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Vielen Dank für die Installation von Navit!\n"
-"\n"
-"Bitte zuerst im Menu \"Karten herunterladen\" auswählen und eine Karte für "
-"die gewünschte Region herunterladen. Die Kartendatei ist sehr groß, bitte "
-"Flatrate oder ähnliches aktivieren!\n"
-"\n"
-"Kartendaten: (c) OpenStreetMap contributors\n"
-"\n"
-"Viel Spaß mit Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Mehr Infos"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Vergrößern"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Verkleinern"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Karten herunterladen"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "POI ein/aus"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Navit beenden"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Sichern / Wiederherstellen"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr "Kartenort festlegen"
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Diese Karte löschen?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Laden:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Fehler beim Kartendownload"
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Download der Karte abgebrochen"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Position noch nicht bekannt."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Karten passend zur aktuellen Position"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Adresse suchen"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Ziel eingeben"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Ungefähr"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Suche läuft..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Keine Adresse gefunden"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "lade Suchergebnisse"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Lädt Suchergebnisse"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Suche liefert kein Ergebnis!"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Keine Eingabe"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Neues Fahrziel:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Bitte auswählen"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Bitte eine SD Karte einlegen"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Sichern..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Wiederherstellung läuft …"
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Sicherungsverzeichnis konnte nicht erstellt werden"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Sicherung fehlgeschlagen"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Keine Sicherung gefunden"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Fehler beim Wiederherstellen"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Sicherung erfolgreich"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Sicherung Erfolgreich\n"
-"Navit bitte neustarten"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Backup nicht gefunden"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Wiederherstellen fehlgeschlagen"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Backup auswählen"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Sichern"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Wiederherstellen"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr "System-Sprachausgabedaten sind nicht verfügbar"
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-"Navit kann jede text-to-speech Engine nutzen, die installiert ist. Die "
-"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"
-
-#, c-format
-#~ msgid "in %d m"
-#~ msgstr "in %d m"
-
-#, c-format
-#~ msgid "%d m"
-#~ msgstr "%d m"
diff --git a/po/de_CH.po.in b/po/de_CH.po.in
deleted file mode 100644
index d30c18584..000000000
--- a/po/de_CH.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# German (Switzerland) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2010-05-18 08:49+0000\n"
-"Last-Translator: \n"
-"Language-Team: German (Switzerland) <de_CH@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: de_CH\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr ""
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr ""
-
-msgid "fifth"
-msgstr ""
-
-msgid "sixth"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr ""
-
-msgid "second exit"
-msgstr ""
-
-msgid "third exit"
-msgstr ""
-
-msgid "fourth exit"
-msgstr ""
-
-msgid "fifth exit"
-msgstr ""
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr ""
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/el.po.in b/po/el.po.in
deleted file mode 100644
index 9da1b8087..000000000
--- a/po/el.po.in
+++ /dev/null
@@ -1,2752 +0,0 @@
-# Greek translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Roadrunner IN https://launchpad.net/~online
-# aitolos https://launchpad.net/~yang-hellug
-# alichani https://launchpad.net/~alichani
-# okiroi https://launchpad.net/~g-theodoroy
-# vassilis https://launchpad.net/~kagemarou
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:57+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Greek <el@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: el\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "ΛειτουÏγία από τον πηγαίο κατάλογο\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "ÏÏθμιση '%s' στο'%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "Ï„Ïέχουσα"
-
-msgid "first"
-msgstr "Ï€Ïώτος"
-
-msgid "second"
-msgstr "δεÏτεÏος"
-
-msgid "third"
-msgstr "Ï„Ïίτη"
-
-msgid "fourth"
-msgstr "τέταÏτος"
-
-msgid "fifth"
-msgstr "πέμπτος"
-
-msgid "sixth"
-msgstr "έκτος"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "Ï„Ïέχουσα έξοδο"
-
-msgid "first exit"
-msgstr "Ï€Ïώτη έξοδο"
-
-msgid "second exit"
-msgstr "δεÏτεÏη έξοδο"
-
-msgid "third exit"
-msgstr "Ï„Ïίτη έξοδο"
-
-msgid "fourth exit"
-msgstr "τέταÏτη έξοδο"
-
-msgid "fifth exit"
-msgstr "πέμπτη έξοδο"
-
-msgid "sixth exit"
-msgstr "έκτη έξοδο"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d πόδια"
-
-#, c-format
-msgid "in %d feet"
-msgstr "σε %d πόδια"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d μίλια"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "σε %d.%d μίλια"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "ένα μίλι"
-msgstr[1] "%d μίλια"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "σε ένα μίλι"
-msgstr[1] "σε %d μίλια"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d μέτÏα"
-
-#, c-format
-msgid "in %d meters"
-msgstr "σε %d μέτÏα"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d χιλιόμετÏα"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "σε %d %d χιλιόμετÏα"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "Ένα χιλιόμετÏο"
-msgstr[1] "%d χιλιόμετÏα"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "σε ένα χιλιόμετÏο"
-msgstr[1] "σε %d χιλιόμετÏα"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "στη Ïάμπα"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sστην οδό %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sστον %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sστην %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sστο %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sστην %s"
-
-msgid "When possible, please turn around"
-msgstr "Όταν είναι δυνατόν, κάνε αναστÏοφή"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Ακολουθήστε το δÏόμο για τα επόμενα %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Μπές στη κυκλική ποÏεία άμεσα"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Εξοδος απο την κυκλική ποÏεία στην %1$s %2$s"
-
-msgid "soon"
-msgstr "σÏντομα"
-
-msgid "now"
-msgstr "Ï„ÏŽÏα"
-
-msgid "then"
-msgstr "και"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "δεξιά"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "αÏιστεÏά"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "ελαφÏά "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "κλειστά "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "ΠάÏτε τον %1$s δÏόμο για το %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "μετά από %i δÏόμους"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "ΣτÏίψτε %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "και κάνε αναστÏοφή"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Κάνε αναστÏοφή %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "και κάνε αναστÏοφή"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Κάνε αναστÏοφή %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "τότε έχετε φτάσει στον Ï€ÏοοÏισμό σας."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Φτάσατε στον Ï€ÏοοÏισμό σας %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Εξοδος"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Θέση"
-
-msgid "Command"
-msgstr "Εντολή"
-
-msgid "Length"
-msgstr "Μήκος"
-
-msgid "km"
-msgstr "χλμ"
-
-msgid "m"
-msgstr "μ"
-
-msgid "Time"
-msgstr "ΧÏόνος"
-
-msgid "Destination Length"
-msgstr "Απόσταση ΠÏοοÏισμοÏ"
-
-msgid "Destination Time"
-msgstr "ΧÏόνος που απομένει"
-
-msgid "Roadbook"
-msgstr "Οδηγίες ΔιαδÏομής"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "ΟÏισμός ως αφετηÏία"
-
-msgid "Set as destination"
-msgstr "ΟÏισμός ως Ï€ÏοοÏισμός"
-
-msgid "Add as bookmark"
-msgstr "ΠÏοσθήκη ως σελιδοδείκτης"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Σημείο 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Συντεταγμένες οθόνης : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "ΑνδόÏα"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Ηνωμένα ΑÏαβικά ΕμιÏάτα"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Αφγανιστάν"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Αντίγκουα και ΜπαÏμποÏντα"
-
-#. 660
-msgid "Anguilla"
-msgstr "Ανγκίλα"
-
-#. 008
-msgid "Albania"
-msgstr "Αλβανία"
-
-#. 051
-msgid "Armenia"
-msgstr "ΑÏμενία"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Ολλανδικές Αντίλλες"
-
-#. 024
-msgid "Angola"
-msgstr "Ανγκόλα"
-
-#. 010
-msgid "Antarctica"
-msgstr "ΑνταÏκτική"
-
-#. 032
-msgid "Argentina"
-msgstr "ΑÏγεντινή"
-
-#. 016
-msgid "American Samoa"
-msgstr "ΑμεÏικανική Σαμόα"
-
-#. 040
-msgid "Austria"
-msgstr "ΑυστÏία"
-
-#. 036
-msgid "Australia"
-msgstr "ΑυστÏαλία"
-
-#. 533
-msgid "Aruba"
-msgstr "ΑÏοÏμπα"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Îήσοι Όλαντ"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "ΑζεÏμπαϊτζάν"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Βοσνία-ΕÏζεγοβίνη"
-
-#. 052
-msgid "Barbados"
-msgstr "ΜπαÏμπέιντος"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Μπαγκλαντές"
-
-#. 056
-msgid "Belgium"
-msgstr "Βέλγιο"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "ΜπουÏκίνα Φάσο"
-
-#. 100
-msgid "Bulgaria"
-msgstr "ΒουλγαÏία"
-
-#. 048
-msgid "Bahrain"
-msgstr "ΜπαχÏέιν"
-
-#. 108
-msgid "Burundi"
-msgstr "ΜπουÏουντί"
-
-#. 204
-msgid "Benin"
-msgstr "Μπενίν"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Αγιος ΒαÏθολομαίος"
-
-#. 060
-msgid "Bermuda"
-msgstr "ΒεÏμοÏδες"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "ΜπÏουνέι ÎταÏουσαλάμ"
-
-#. 068
-msgid "Bolivia"
-msgstr "Βολιβία"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Î’Ïαζιλία"
-
-#. 044
-msgid "Bahamas"
-msgstr "Μπαχάμες"
-
-#. 064
-msgid "Bhutan"
-msgstr "Μπουτάν"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Îήσος Μπουβέ"
-
-#. 072
-msgid "Botswana"
-msgstr "Μποτσουάνα"
-
-#. 112
-msgid "Belarus"
-msgstr "ΛευκοÏωσία"
-
-#. 084
-msgid "Belize"
-msgstr "Μπελίζ"
-
-#. 124
-msgid "Canada"
-msgstr "Καναδάς"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Îήσοι Κόκος (Κήλινγκ)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "ΔημοκÏατία του Κονγκό"
-
-#. 140
-msgid "Central African Republic"
-msgstr "ΔημοκÏατία ΚεντÏικής ΑφÏικής"
-
-#. 178
-msgid "Congo"
-msgstr "Κονγκό"
-
-#. 756
-msgid "Switzerland"
-msgstr "Ελβετία"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Ακτή ΕλεφαντοστοÏ"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Îήσοι Κουκ"
-
-#. 152
-msgid "Chile"
-msgstr "Χιλή"
-
-#. 120
-msgid "Cameroon"
-msgstr "ΚαμεÏοÏν"
-
-#. 156
-msgid "China"
-msgstr "Κίνα"
-
-#. 170
-msgid "Colombia"
-msgstr "Κολομβία"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Κόστα Ρίκα"
-
-#. 192
-msgid "Cuba"
-msgstr "ΚοÏβα"
-
-#. 132
-msgid "Cape Verde"
-msgstr "ΠÏάσινο ΑκÏωτήÏιο"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Îήσοι ΧÏιστουγέννων"
-
-#. 196
-msgid "Cyprus"
-msgstr "ΚÏÏ€Ïος"
-
-#. 203
-msgid "Czech Republic"
-msgstr "ΔημοκÏατία της Τσεχίας"
-
-#. 276
-msgid "Germany"
-msgstr "ΓεÏμανία"
-
-#. 262
-msgid "Djibouti"
-msgstr "Τζιμπουτί"
-
-#. 208
-msgid "Denmark"
-msgstr "Δανία"
-
-#. 212
-msgid "Dominica"
-msgstr "Îτομίνικα"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Δομινικανή ΔημοκÏατία"
-
-#. 012
-msgid "Algeria"
-msgstr "ΑλγεÏία"
-
-#. 218
-msgid "Ecuador"
-msgstr "ΕκουαδόÏ"
-
-#. 233
-msgid "Estonia"
-msgstr "Εσθονία"
-
-#. 818
-msgid "Egypt"
-msgstr "Αίγυπτος"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Δυτική ΣαχάÏα"
-
-#. 232
-msgid "Eritrea"
-msgstr "ΕÏυθÏαία"
-
-#. 724
-msgid "Spain"
-msgstr "Ισπανία"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Αιθιοπία"
-
-#. 246
-msgid "Finland"
-msgstr "Φινλανδία"
-
-#. 242
-msgid "Fiji"
-msgstr "Îησιά Φίτζι"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Îήσοι Φώκλαντ (Μαλβίνες)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "ΜικÏονησία, Ομόσπονδες Πολιτείες της"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Îήσοι ΦεÏόε"
-
-#. 250
-msgid "France"
-msgstr "Γαλλία"
-
-#. 266
-msgid "Gabon"
-msgstr "Γκαμπόν"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Ηνωμένο Βασίλειο"
-
-#. 308
-msgid "Grenada"
-msgstr "ΓÏενάδα"
-
-#. 268
-msgid "Georgia"
-msgstr "ΓεωÏγία"
-
-#. 254
-msgid "French Guiana"
-msgstr "Γαλλική Γουινέα"
-
-#. 831
-msgid "Guernsey"
-msgstr "Îήσος Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Γκάνα"
-
-#. 292
-msgid "Gibraltar"
-msgstr "ΓιβÏαλτάÏ"
-
-#. 304
-msgid "Greenland"
-msgstr "ΓÏοιλανδία"
-
-#. 270
-msgid "Gambia"
-msgstr "Γκάμπια"
-
-#. 324
-msgid "Guinea"
-msgstr "Γουινέα"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "ΓουαδελοÏπη"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "ΙσημεÏινή Γουινέα"
-
-#. 300
-msgid "Greece"
-msgstr "Ελλάδα"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Îότια ΤζόÏτζια και Îότιοι νήσοι Σάντουιτς"
-
-#. 320
-msgid "Guatemala"
-msgstr "Γουατεμάλα"
-
-#. 316
-msgid "Guam"
-msgstr "Γκουάμ"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Γουινέα-Μπισσάου"
-
-#. 328
-msgid "Guyana"
-msgstr "Γουιάνα"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Χονγκ Κονγκ"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Îήσος ΧεÏντ και Îήσοι ΜακÎτόναλντ"
-
-#. 340
-msgid "Honduras"
-msgstr "ΟνδοÏÏα"
-
-#. 191
-msgid "Croatia"
-msgstr "ΚÏοατία"
-
-#. 332
-msgid "Haiti"
-msgstr "Αϊτή"
-
-#. 348
-msgid "Hungary"
-msgstr "ΟυγγαÏία"
-
-#. 360
-msgid "Indonesia"
-msgstr "Ινδονησία"
-
-#. 372
-msgid "Ireland"
-msgstr "ΙÏλανδία"
-
-#. 376
-msgid "Israel"
-msgstr "ΙσÏαήλ"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Αϊλ οφ Μαν"
-
-#. 356
-msgid "India"
-msgstr "Ινδία"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Î’Ïετανικά Εδάφη Î™Î½Î´Î¹ÎºÎ¿Ï Î©ÎºÎµÎ±Î½Î¿Ï"
-
-#. 368
-msgid "Iraq"
-msgstr "ΙÏάκ"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Ισλαμική ΔημοκÏατία του ΙÏάν"
-
-#. 352
-msgid "Iceland"
-msgstr "Ισλανδία"
-
-#. 380
-msgid "Italy"
-msgstr "Ιταλία"
-
-#. 832
-msgid "Jersey"
-msgstr "ΤζέÏσεϋ"
-
-#. 388
-msgid "Jamaica"
-msgstr "Τζαμάικα"
-
-#. 400
-msgid "Jordan"
-msgstr "ΙοÏδανία"
-
-#. 392
-msgid "Japan"
-msgstr "Ιαπωνία"
-
-#. 404
-msgid "Kenya"
-msgstr "Κένυα"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "ΚιÏγκιστάν"
-
-#. 116
-msgid "Cambodia"
-msgstr "Καμπότζη"
-
-#. 296
-msgid "Kiribati"
-msgstr "ΚιÏιμπάτι"
-
-#. 174
-msgid "Comoros"
-msgstr "ΚομόÏες"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Σαιντ Κίτς και Îέβις"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "ΚοÏέα, Λαϊκη ΔημοκÏατία της"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "ΚοÏέα, ΔημοκÏατία της"
-
-#. 414
-msgid "Kuwait"
-msgstr "Κουβέιτ"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Îήσοι Κέυμαν"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Καζακστάν"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Λαϊκή ΔημοκÏατία του Λάος"
-
-#. 422
-msgid "Lebanon"
-msgstr "Λίβανος"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Αγία Λουκία"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Λίχτενσταϊν"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "ΣÏι Λάνκα"
-
-#. 430
-msgid "Liberia"
-msgstr "ΛιβεÏία"
-
-#. 426
-msgid "Lesotho"
-msgstr "Λεσότο"
-
-#. 440
-msgid "Lithuania"
-msgstr "Λιθουανία"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ΛουξεμβοÏÏγο"
-
-#. 428
-msgid "Latvia"
-msgstr "Λεττονία"
-
-#. 434
-msgid "Libya"
-msgstr "ΛιβÏη"
-
-#. 504
-msgid "Morocco"
-msgstr "ΜαÏόκο"
-
-#. 492
-msgid "Monaco"
-msgstr "Μονακό"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "ΔημοκÏατία της Μολδαβίας"
-
-#. 499
-msgid "Montenegro"
-msgstr "ΜαυÏοβοÏνιο"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Άγιος ΜαÏτίνος (Γαλλικό τμήμα)"
-
-#. 450
-msgid "Madagascar"
-msgstr "ΜαδαγασκάÏη"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Îήσοι ΜάÏσαλ"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Π.Γ.Δ.Μ."
-
-#. 466
-msgid "Mali"
-msgstr "Μάλι"
-
-#. 104
-msgid "Myanmar"
-msgstr "ΜιανμάÏ"
-
-#. 496
-msgid "Mongolia"
-msgstr "Μογγολία"
-
-#. 446
-msgid "Macao"
-msgstr "Μακάο"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Îήσοι Î’ÏŒÏειες ΜαÏιάνες"
-
-#. 474
-msgid "Martinique"
-msgstr "ΜαÏτινίκα"
-
-#. 478
-msgid "Mauritania"
-msgstr "ΜαυÏιτανία"
-
-#. 500
-msgid "Montserrat"
-msgstr "ΜοντσεÏάτ"
-
-#. 470
-msgid "Malta"
-msgstr "Μάλτα"
-
-#. 480
-msgid "Mauritius"
-msgstr "ΜαυÏίκιος"
-
-#. 462
-msgid "Maldives"
-msgstr "Μαλδίβες"
-
-#. 454
-msgid "Malawi"
-msgstr "Μαλάουι"
-
-#. 484
-msgid "Mexico"
-msgstr "Μεξικό"
-
-#. 458
-msgid "Malaysia"
-msgstr "Μαλαισία"
-
-#. 508
-msgid "Mozambique"
-msgstr "Μοζαμβίκη"
-
-#. 516
-msgid "Namibia"
-msgstr "Îαμίμπια"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Îέα Καληδονία"
-
-#. 562
-msgid "Niger"
-msgstr "ÎίγηÏας"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Îήσοι ÎÏŒÏφολκ"
-
-#. 566
-msgid "Nigeria"
-msgstr "ÎιγηÏία"
-
-#. 558
-msgid "Nicaragua"
-msgstr "ÎικαÏάγουα"
-
-#. 528
-msgid "Netherlands"
-msgstr "Ολλανδία"
-
-#. 578
-msgid "Norway"
-msgstr "ÎοÏβηγία"
-
-#. 524
-msgid "Nepal"
-msgstr "Îεπάλ"
-
-#. 520
-msgid "Nauru"
-msgstr "ÎαουÏοÏ"
-
-#. 570
-msgid "Niue"
-msgstr "ÎιοÏε"
-
-#. 554
-msgid "New Zealand"
-msgstr "Îέα Ζηλανδία"
-
-#. 512
-msgid "Oman"
-msgstr "Ομάν"
-
-#. 591
-msgid "Panama"
-msgstr "Παναμάς"
-
-#. 604
-msgid "Peru"
-msgstr "ΠεÏοÏ"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Γαλλική Πολυνησία"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "ΠαποÏα-Îέα Γουινέα"
-
-#. 608
-msgid "Philippines"
-msgstr "Φιλιππίνες"
-
-#. 586
-msgid "Pakistan"
-msgstr "Πακιστάν"
-
-#. 616
-msgid "Poland"
-msgstr "Πολωνία"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Σεν Î Î¹ÎµÏ ÎºÎ±Î¹ Μικελόν"
-
-#. 612
-msgid "Pitcairn"
-msgstr "ΠίτκεÏν"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "ΠόÏτο Ρίκο"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Κατεχόμενα Παλαιστινιακά Εδάφη"
-
-#. 620
-msgid "Portugal"
-msgstr "ΠοÏτογαλία"
-
-#. 585
-msgid "Palau"
-msgstr "Παλάου"
-
-#. 600
-msgid "Paraguay"
-msgstr "ΠαÏαγουάη"
-
-#. 634
-msgid "Qatar"
-msgstr "ΚατάÏ"
-
-#. 638
-msgid "Reunion"
-msgstr "Ρεουνιόν"
-
-#. 642
-msgid "Romania"
-msgstr "Ρουμανία"
-
-#. 688
-msgid "Serbia"
-msgstr "ΣεÏβία"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Ρωσική Ομοσπονδία"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ρουάντα"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Σαουδική ΑÏαβία"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Îήσοι Σολομώντος"
-
-#. 690
-msgid "Seychelles"
-msgstr "Σεϋχέλλες"
-
-#. 736
-msgid "Sudan"
-msgstr "Σουδάν"
-
-#. 752
-msgid "Sweden"
-msgstr "Σουηδία"
-
-#. 702
-msgid "Singapore"
-msgstr "ΣινγκαποÏÏη"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Îήσος Αγίας Ελένης"
-
-#. 705
-msgid "Slovenia"
-msgstr "Σλοβενία"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Îήσοι ΣβάλμπαÏντ και Γιαν Μάγιεν"
-
-#. 703
-msgid "Slovakia"
-msgstr "Σλοβακία"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "ΣιέÏα Λεόνε"
-
-#. 674
-msgid "San Marino"
-msgstr "Άγιος ΜαÏίνος"
-
-#. 686
-msgid "Senegal"
-msgstr "Σενεγάλη"
-
-#. 706
-msgid "Somalia"
-msgstr "Σομαλία"
-
-#. 740
-msgid "Suriname"
-msgstr "ΣουÏινάμ"
-
-#. 728
-msgid "South Sudan"
-msgstr "Îότιο Σουδάν"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome και Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "Ελ ΣαλβαδόÏ"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "ΑÏαβική ΔημοκÏατία της ΣυÏίας"
-
-#. 748
-msgid "Swaziland"
-msgstr "Σουαζιλάνδη"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Îήσοι ΤοÏÏκς και ΚαÎκος"
-
-#. 148
-msgid "Chad"
-msgstr "Τσαντ"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Γαλλικές Îότιες ΠεÏιοχές"
-
-#. 768
-msgid "Togo"
-msgstr "Τόγκο"
-
-#. 764
-msgid "Thailand"
-msgstr "Ταϊλάνδη"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Τατζικιστάν"
-
-#. 772
-msgid "Tokelau"
-msgstr "Τοκελάου"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "ΤιμόÏ-Λέστε"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "ΤουÏκμενιστάν"
-
-#. 788
-msgid "Tunisia"
-msgstr "Τυνησία"
-
-#. 776
-msgid "Tonga"
-msgstr "Τόνγκα"
-
-#. 792
-msgid "Turkey"
-msgstr "ΤουÏκία"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "ΤÏίνινταντ και Τομπάγκο"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Τουβάλου"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Ταϊβάν, ΕπαÏχία της Κίνας"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Τανζανία, Ενωμένη ΔημοκÏατία της"
-
-#. 804
-msgid "Ukraine"
-msgstr "ΟυκÏανία"
-
-#. 800
-msgid "Uganda"
-msgstr "Ουγκάντα"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "ΑπομακÏυσμένες Îησίδες των Ηνωμένων Πολιτειών"
-
-#. 840
-msgid "United States"
-msgstr "Ηνωμένες Πολιτείες της ΑμεÏικής"
-
-#. 858
-msgid "Uruguay"
-msgstr "ΟυÏουγουάη"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Ουζμπεκιστάν"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Αγία ΈδÏα (ΚÏάτος της Πόλης του ΒατικανοÏ)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Άγιος Βικέντιος και ΓÏεναδίνες"
-
-#. 862
-msgid "Venezuela"
-msgstr "Βενεζουέλα"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "ΠαÏθένοι Îήσοι, Î’Ïετανικές"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "ΠαÏθένοι Îήσοι, Η.Π.A."
-
-#. 704
-msgid "Viet Nam"
-msgstr "Βιετνάμ"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Βανουάτου"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Îήσοι Γουόλις και ΦουτοÏνα"
-
-#. 882
-msgid "Samoa"
-msgstr "Σαμόα"
-
-#. 887
-msgid "Yemen"
-msgstr "Υεμένη"
-
-#. 175
-msgid "Mayotte"
-msgstr "Μαγιότ"
-
-#. 710
-msgid "South Africa"
-msgstr "Îότιος ΑφÏική"
-
-#. 894
-msgid "Zambia"
-msgstr "Ζάμπια"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Ζιμπάμπουε"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Άγνωστη, Ï€Ïοσθέστε ετικέτες is_in σε αυτές τις πόλεις"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr "άγνωστος δÏόμος"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Σημείο ΧάÏτη"
-
-msgid "Car"
-msgstr "Αυτοκίνητο"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "ΧώÏα"
-
-msgid "Postal"
-msgstr "ΤαχυδÏομική"
-
-msgid "Town"
-msgstr "Πόλη"
-
-msgid "District"
-msgstr "ΕπαÏχία"
-
-msgid "Street"
-msgstr "Οδός"
-
-msgid "Number"
-msgstr "ΑÏιθμός"
-
-msgid "Enter Destination"
-msgstr "Εισάγετε Ï€ÏοοÏισμό"
-
-msgid "Zip Code"
-msgstr "Ταχ. Κώδικας"
-
-msgid "City"
-msgstr "Πόλη"
-
-msgid "District/Township"
-msgstr "ΕπαÏχία/Οικισμός"
-
-msgid "Map"
-msgstr "ΧάÏτης"
-
-msgid "Bookmark"
-msgstr "Σελιδοδείκτης"
-
-msgid "Destination"
-msgstr "ΠÏοοÏισμός"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "ΠÏοβολή"
-
-msgid "_Route"
-msgstr "ΔιαδÏομή"
-
-msgid "_Former Destinations"
-msgstr "ΠÏογενέστεÏες διαδÏομές"
-
-msgid "_Bookmarks"
-msgstr "Σελιδοδείκτες"
-
-msgid "_Map"
-msgstr "ΧάÏτης"
-
-msgid "_Layout"
-msgstr "Διάταξη"
-
-msgid "_Projection"
-msgstr "ΠÏοβολή :"
-
-msgid "_Vehicle"
-msgstr "Όχημα"
-
-msgid "Zoom_Out"
-msgstr "ΣμίκÏυνση"
-
-msgid "Decrease zoom level"
-msgstr "Μείωση κλίμακας εστίασης"
-
-msgid "Zoom_In"
-msgstr "Μεγέθυνση"
-
-msgid "Increase zoom level"
-msgstr "Αυξηση κλίμακας εστίασης"
-
-msgid "_Recalculate"
-msgstr "Επαναϋπολογισμός"
-
-msgid "Redraw map"
-msgstr "Επανασχεδίαση χάÏτη"
-
-msgid "_Info"
-msgstr "ΠληÏοφοÏίες"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Ανοιγμα διαλόγου αναζήτησης διεÏθυνσης"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Διακοπή πλοήγησης"
-
-msgid "Test"
-msgstr "Δοκιμή"
-
-msgid "_Quit"
-msgstr "_Έξοδος"
-
-msgid "Quit the application"
-msgstr "Έξοδος από την εφαÏμογή"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Κλείδωμα στο δÏόμο"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Εναλάσει το Ï€Ïοσανατολισμό του χάÏτη στο βοÏά ή στο αυτοκίνητο"
-
-msgid "_Roadbook"
-msgstr "Οδηγίες ΔιαδÏομής"
-
-msgid "Show/hide route description"
-msgstr "Εμφάνιση/απόκÏυψη πεÏιγÏαφής δÏομολογίου"
-
-msgid "_Autozoom"
-msgstr "Αυτόματο Ζουμ"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "(Απ)ενεÏγοποίηση αυτόματης αλλαγής εστίασης"
-
-msgid "_Fullscreen"
-msgstr "ΠλήÏης Οθόνη"
-
-msgid "Data"
-msgstr "Δεδομένα"
-
-msgid "Pharmacy"
-msgstr "ΦαÏμακείο"
-
-msgid "Restaurant"
-msgstr "ΕστιατόÏιο"
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr "Ξενοδοχείο"
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr "Βενζινάδικο"
-
-msgid "Bank"
-msgstr "ΤÏάπεζα"
-
-msgid "Hospital"
-msgstr "Îοσοκομείο"
-
-msgid "Cinema"
-msgstr "ΚινηματογÏάφος"
-
-msgid "Train station"
-msgstr "Σταθμός Ï„Ïένου"
-
-msgid "School"
-msgstr "Σχολείο"
-
-msgid "Police"
-msgstr "Αστυνομία"
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr "Ταξί"
-
-msgid "Shopping"
-msgstr "ΑγοÏές"
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr "Επιλέξτε μια κατηγοÏία"
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "Î’"
-
-msgid "NE"
-msgstr "ΒΑ"
-
-msgid "E"
-msgstr "Α"
-
-msgid "SE"
-msgstr "ÎΑ"
-
-msgid "S"
-msgstr "Î"
-
-msgid "SW"
-msgstr "ÎΔ"
-
-msgid "W"
-msgstr "Δ"
-
-msgid "NW"
-msgstr "ΒΔ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Όχι"
-
-msgid "2D"
-msgstr "2Δ"
-
-msgid "3D"
-msgstr "3Δ"
-
-msgid "OT"
-msgstr "ΟΤ"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "ΔιαδÏομή %4.0fχλμ ΧÏόνος που απομένει %02d:%02d"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "ΔιαδÏομή 0000χλμ ΧÏόνος που απομένει 0+00:00"
-
-msgid "Help"
-msgstr "Βοήθεια"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Επισκόπηση σε ΦυλλομετÏητή"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Οδοί"
-
-msgid "House numbers"
-msgstr "ΑÏιθμοί σπιτιών"
-
-msgid "View Attributes"
-msgstr "ΠÏοβολή Ιδιοτήτων"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Σημεία ΕνδιαφέÏοντος"
-
-msgid "View on map"
-msgstr "ΠÏοβολή στο χάÏτη"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Αποκοπή Σελιδοδείκτη"
-
-msgid "Copy Bookmark"
-msgstr "ΑντιγÏαφή Σελιδοδείκτη"
-
-msgid "Rename Bookmark"
-msgstr "Μετονομασία Σελιδοδείκτη"
-
-msgid "Paste Bookmark"
-msgstr "Επικόληση Σελιδοδείκτη"
-
-msgid "Delete Bookmark"
-msgstr "ΔιαγÏαφή Σελιδοδείκτη"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Σελιδοδείκτες"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "ΠÏόσθεση φακέλου Σελιδοδείκτη"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Επικόληση σελιδοδείκτη"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Σελιδοδείκτης %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Εμφάνιση Κατάστασης ΔοÏυφόÏων"
-
-msgid " Elevation "
-msgstr " ΥψόμετÏο "
-
-msgid " Azimuth "
-msgstr " ΑζιμοÏθιο "
-
-msgid "Show NMEA Data"
-msgstr "Εμφάνιση Δεδομένων ÎΜΕΑ"
-
-msgid "car"
-msgstr "αυτοκίνητο"
-
-msgid "bike"
-msgstr "ποδήλατο"
-
-msgid "pedestrian"
-msgstr "Πεζός"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "ΤÏέχον Ï€Ïοφίλ: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Αλλαγή Ï€Ïοφίλ σε: %s"
-
-msgid "Set as active"
-msgstr "ΚαθοÏισμός ως ενεÏγό"
-
-msgid "Show Satellite status"
-msgstr "Εμφάνιση Κατάστασης ΔοÏυφόÏων"
-
-msgid "Show NMEA data"
-msgstr "Εμφάνιση δεδομένων ÎΜΕΑ"
-
-msgid "Add Bookmark"
-msgstr "ΠÏοσθήκη σελιδοδείκτη"
-
-msgid "Rename"
-msgstr "Μετονομασία"
-
-msgid "About Navit"
-msgstr "ΠεÏί του Navit"
-
-#. Authors
-msgid "By"
-msgstr "Από"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Και όλη την ομάδα του Navit"
-
-msgid "members and contributors."
-msgstr "μέλη και συνεισφέÏοντες"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Όχημα"
-
-msgid "Rules"
-msgstr "Κανόνες"
-
-msgid "Lock on road"
-msgstr "Κλείδωμα στο δÏόμο"
-
-msgid "Northing"
-msgstr "ΧάÏτης στο βοÏÏά"
-
-msgid "Map follows Vehicle"
-msgstr "Ο χάÏτης ακολουθεί το Όχημα"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "ΧάÏτες"
-
-msgid "Layout"
-msgstr "Διάταξη"
-
-msgid "Height Profile"
-msgstr "Ύψος Ï€Ïοφίλ"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "ΠεÏιγÏαφή ΔιαδÏομής"
-
-msgid "Show Locale"
-msgstr "Eμφάνιση Εντοπιότητας"
-
-msgid "Former Destinations"
-msgstr "ΠÏογενέστεÏες διαδÏομές"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Μήνυμα"
-
-msgid "Back"
-msgstr "ΠÏοηγ."
-
-msgid "Back to map"
-msgstr "Πίσω στο χάÏτη"
-
-msgid "Main Menu"
-msgstr "ΚÏÏιο ΜενοÏ"
-
-msgid "House number"
-msgstr "ΑÏιθμός σπιτιοÏ"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Θέση Οχήματος"
-
-msgid "Main menu"
-msgstr "ΚÏÏιο ΜενοÏ"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Εμφάνιση\n"
-"ΧάÏτη"
-
-msgid "Settings"
-msgstr "Ρυθμίσεις"
-
-msgid "Tools"
-msgstr "ΕÏγαλεία"
-
-msgid "Route"
-msgstr "ΔιαδÏομή"
-
-msgid "About"
-msgstr "ΠεÏί"
-
-msgid "Quit"
-msgstr "Έξοδος"
-
-msgid "Actions"
-msgstr "ΕνέÏγειες"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr "Διακοπή"
-
-msgid "Display"
-msgstr "ΠÏοβολή"
-
-msgid "Fullscreen"
-msgstr "ΠλήÏης Οθόνη"
-
-msgid "Window Mode"
-msgstr "ΛειτουÏγία παÏαθÏÏων"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "ΠεÏιγÏαφή"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "άλογο"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "και βγείτε απο την κυκλική ποÏεία στην %1$s %2$s"
diff --git a/po/en.po.in b/po/en.po.in
deleted file mode 100644
index ca337896c..000000000
--- a/po/en.po.in
+++ /dev/null
@@ -1,2736 +0,0 @@
-# English translations for navit
-# Copyright (C) 2006-2015 The Navit Team
-# This file is distributed under the same license as the navit package.
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-03 02:23+0200\n"
-"PO-Revision-Date: 2015-05-14 13:03+0200\n"
-"Last-Translator: Michael von Glasow <michael@vonglasow.com>\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Running from source directory\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "setting '%s' to '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zeroth"
-
-msgid "first"
-msgstr "first"
-
-msgid "second"
-msgstr "second"
-
-msgid "third"
-msgstr "third"
-
-msgid "fourth"
-msgstr "fourth"
-
-msgid "fifth"
-msgstr "fifth"
-
-msgid "sixth"
-msgstr "sixth"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "zeroth exit"
-
-msgid "first exit"
-msgstr "first exit"
-
-msgid "second exit"
-msgstr "second exit"
-
-msgid "third exit"
-msgstr "third exit"
-
-msgid "fourth exit"
-msgstr "fourth exit"
-
-msgid "fifth exit"
-msgstr "fifth exit"
-
-msgid "sixth exit"
-msgstr "sixth exit"
-
-#, c-format
-msgid "%d m"
-msgstr "%d m"
-
-#, c-format
-msgid "in %d m"
-msgstr "in %d m"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meters"
-
-#, c-format
-msgid "in %d meters"
-msgstr "in %d meters"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometers"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "in %d.%d kilometers"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "one kilometer"
-msgstr[1] "%d kilometers"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "in one kilometer"
-msgstr[1] "in %d kilometers"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "onto the motorway ramp"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sinto the %s"
-
-msgid "When possible, please turn around"
-msgstr "When possible, please turn around"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Follow the road for the next %s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "then leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "soon"
-
-msgid "now"
-msgstr "now"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "then merge%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Merge %1$s%2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "then merge%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Merge %1$s%2$s"
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "right"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "left"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "easily "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "strongly "
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Take the %1$s road to the %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "after %i roads"
-
-#. cave: no else - may come from 'if (skip_roads)' above !
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Turn %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "then make a U-turn"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Make a U-turn %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "then make a U-turn"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Make a U-turn %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give usefull info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "then you have reached your destination."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "You have reached your destination %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Interchange"
-
-msgid "Exit"
-msgstr "Exit"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill);
-#. gui_internal_widget_append(wb, w);
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill);
-#. gui_internal_widget_append(w, we);
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/en_AU.po.in b/po/en_AU.po.in
deleted file mode 100644
index 50842f620..000000000
--- a/po/en_AU.po.in
+++ /dev/null
@@ -1,2746 +0,0 @@
-# English (Australia) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Athol Mullen https://launchpad.net/~athol-mullen
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:57+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: English (Australia) <en_AU@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: en_AU\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Running from source directory\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "setting '%s' to '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zeroth"
-
-msgid "first"
-msgstr "first"
-
-msgid "second"
-msgstr "second"
-
-msgid "third"
-msgstr "third"
-
-msgid "fourth"
-msgstr "fourth"
-
-msgid "fifth"
-msgstr "fifth"
-
-msgid "sixth"
-msgstr "sixth"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "zeroth exit"
-
-msgid "first exit"
-msgstr "first exit"
-
-msgid "second exit"
-msgstr "second exit"
-
-msgid "third exit"
-msgstr "third exit"
-
-msgid "fourth exit"
-msgstr "fourth exit"
-
-msgid "fifth exit"
-msgstr "fifth exit"
-
-msgid "sixth exit"
-msgstr "sixth exit"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metres"
-
-#, c-format
-msgid "in %d meters"
-msgstr "in %d metres"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometres"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "in %d.%d kilometres"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "one kilometre"
-msgstr[1] "%d kilometres"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "in one kilometre"
-msgstr[1] "in %d kilometres"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "onto the motorway ramp"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sinto the %s"
-
-msgid "When possible, please turn around"
-msgstr "When possible, please turn around"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Follow the road for the next %s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "soon"
-
-msgid "now"
-msgstr "now"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "then merge%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Merge %1$s%2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "then merge%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Merge %1$s%2$s"
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "right"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "left"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "easily "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "strongly "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Take the %1$s road to the %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "after %i roads"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Turn %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "then make a U-turn"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Make a U-turn %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "then make a U-turn"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Make a U-turn %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "then you will have reached your destination"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "You have reached your destination %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Interchange"
-
-msgid "Exit"
-msgstr "Exit"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Position"
-
-msgid "Command"
-msgstr "Command"
-
-msgid "Length"
-msgstr "Length"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Time"
-
-msgid "Destination Length"
-msgstr "Destination Length"
-
-msgid "Destination Time"
-msgstr "Destination Time"
-
-msgid "Roadbook"
-msgstr "Roadbook"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Set as position"
-
-msgid "Set as destination"
-msgstr "Set as destination"
-
-msgid "Add as bookmark"
-msgstr "Add as bookmark"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Point 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Screen coord : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "United Arab Emirates"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua and Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Netherlands Antilles"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarctica"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "American Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland Islands"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia and Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgium"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brazil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvet Island"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Belarus"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Cocos (Keeling) Islands"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, Democratic Republic of the"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Central African Republic"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Switzerland"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Cote d'Ivoire (Ivory Coast)"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cook Islands"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Cameroon"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cape Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Christmas Island"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cyprus"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Czech Republic"
-
-#. 276
-msgid "Germany"
-msgstr "Germany"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Denmark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominican Republic"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypt"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Western Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spain"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Ethiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland Islands (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronesia, Federated States of"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Faroe Islands"
-
-#. 250
-msgid "France"
-msgstr "France"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "United Kingdom"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "French Guiana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Greenland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Equatorial Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Greece"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "South Georgia and the South Sandwich Islands"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard Island and McDonald Islands"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croatia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungary"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Ireland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isle of Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "British Indian Ocean Territory"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraq"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Islamic Republic of"
-
-#. 352
-msgid "Iceland"
-msgstr "Iceland"
-
-#. 380
-msgid "Italy"
-msgstr "Italy"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordan"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambodia"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comoros"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts and Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea, Democratic People's Republic of"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea, Republic of"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Cayman Islands"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Lao People's Democratic Republic"
-
-#. 422
-msgid "Lebanon"
-msgstr "Lebanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lithuania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxembourg"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvia"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Morocco"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova, Republic of"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (French part)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshall Islands"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedonia, the former Yugoslav Republic of"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Northern Mariana Islands"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldives"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexico"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "New Caledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk Island"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Netherlands"
-
-#. 578
-msgid "Norway"
-msgstr "Norway"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "New Zealand"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "French Polynesia"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua New Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Philippines"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Poland"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre and Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestinian Territory, Occupied"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Romania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Russian Federation"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi Arabia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Solomon Islands"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Sweden"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Saint Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard and Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome and Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrian Arab Republic"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks and Caicos Islands"
-
-#. 148
-msgid "Chad"
-msgstr "Chad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "French Southern Territories"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkey"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad and Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, Province of China"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania, United Republic of"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "United States Minor Outlying Islands"
-
-#. 840
-msgid "United States"
-msgstr "United States"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Holy See (Vatican City State)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent and the Grenadines"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Virgin Islands, British"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Virgin Islands, U.S."
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis and Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "South Africa"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Unknown, add is_in tags to those cities"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Map Point"
-
-msgid "Car"
-msgstr "Car"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Country"
-
-msgid "Postal"
-msgstr "Postal"
-
-msgid "Town"
-msgstr "Town"
-
-msgid "District"
-msgstr "District"
-
-msgid "Street"
-msgstr "Street"
-
-msgid "Number"
-msgstr "Number"
-
-msgid "Enter Destination"
-msgstr "Enter Destination"
-
-msgid "Zip Code"
-msgstr "Post Code"
-
-msgid "City"
-msgstr "City"
-
-msgid "District/Township"
-msgstr "District/Township"
-
-msgid "Map"
-msgstr "Map"
-
-msgid "Bookmark"
-msgstr "Bookmark"
-
-msgid "Destination"
-msgstr "Destination"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Display"
-
-msgid "_Route"
-msgstr "Route"
-
-msgid "_Former Destinations"
-msgstr "Former Destinations"
-
-msgid "_Bookmarks"
-msgstr "Bookmarks"
-
-msgid "_Map"
-msgstr "Map"
-
-msgid "_Layout"
-msgstr "Layout"
-
-msgid "_Projection"
-msgstr "Projection"
-
-msgid "_Vehicle"
-msgstr "Vehicle"
-
-msgid "Zoom_Out"
-msgstr "ZoomOut"
-
-msgid "Decrease zoom level"
-msgstr "Decrease zoom level"
-
-msgid "Zoom_In"
-msgstr "ZoomIn"
-
-msgid "Increase zoom level"
-msgstr "Increase zoom level"
-
-msgid "_Recalculate"
-msgstr "Recalculate"
-
-msgid "Redraw map"
-msgstr "Redraw map"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr "Set destination"
-
-msgid "Opens address search dialog"
-msgstr "Opens address search dialogue"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Stop Navigation"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Quit"
-
-msgid "Quit the application"
-msgstr "Quit the application"
-
-msgid "Show position _cursor"
-msgstr "Show position cursor"
-
-msgid "_Lock on Road"
-msgstr "Lock on Road"
-
-msgid "_Keep orientation to the North"
-msgstr "Keep orientation to the North"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Switches map orientation to the north or the vehicle"
-
-msgid "_Roadbook"
-msgstr "Roadbook"
-
-msgid "Show/hide route description"
-msgstr "Show/hide route description"
-
-msgid "_Autozoom"
-msgstr "AutoZoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Enable/disable automatic zoom level changing"
-
-msgid "_Fullscreen"
-msgstr "FullScreen"
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "No"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Route %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Route 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Help"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "View in Browser"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Streets"
-
-msgid "House numbers"
-msgstr "House numbers"
-
-msgid "View Attributes"
-msgstr "View Attributes"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "POIs"
-
-msgid "View on map"
-msgstr "View on map"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Cut Bookmark"
-
-msgid "Copy Bookmark"
-msgstr "Copy Bookmark"
-
-msgid "Rename Bookmark"
-msgstr "Rename Bookmark"
-
-msgid "Paste Bookmark"
-msgstr "Paste Bookmark"
-
-msgid "Delete Bookmark"
-msgstr "Delete Bookmark"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Bookmarks"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Add Bookmark folder"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Paste bookmark"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Bookmark %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Show Satellite Status"
-
-msgid " Elevation "
-msgstr " Elevation "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "Show NMEA Data"
-
-msgid "car"
-msgstr "car"
-
-msgid "bike"
-msgstr "bike"
-
-msgid "pedestrian"
-msgstr "pedestrian"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Current profile: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Change profile to: %s"
-
-msgid "Set as active"
-msgstr "Set as active"
-
-msgid "Show Satellite status"
-msgstr "Show Satellite status"
-
-msgid "Show NMEA data"
-msgstr "Show NMEA data"
-
-msgid "Add Bookmark"
-msgstr "Add Bookmark"
-
-msgid "Rename"
-msgstr "Rename"
-
-msgid "About Navit"
-msgstr "About Navit"
-
-#. Authors
-msgid "By"
-msgstr "By"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "And all the Navit Team"
-
-msgid "members and contributors."
-msgstr "members and contributors."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Vehicle"
-
-msgid "Rules"
-msgstr "Rules"
-
-msgid "Lock on road"
-msgstr "Lock on road"
-
-msgid "Northing"
-msgstr "Northing"
-
-msgid "Map follows Vehicle"
-msgstr "Map follows vehicle"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Maps"
-
-msgid "Layout"
-msgstr "Layout"
-
-msgid "Height Profile"
-msgstr "Height Profile"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Route Description"
-
-msgid "Show Locale"
-msgstr "Show Locale"
-
-msgid "Former Destinations"
-msgstr "Former Destinations"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Message"
-
-msgid "Back"
-msgstr "Back"
-
-msgid "Back to map"
-msgstr "Back to map"
-
-msgid "Main Menu"
-msgstr "Main Menu"
-
-msgid "House number"
-msgstr "House number"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Vehicle Position"
-
-msgid "Main menu"
-msgstr "Main menu"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Show\n"
-"Map"
-
-msgid "Settings"
-msgstr "Settings"
-
-msgid "Tools"
-msgstr "Tools"
-
-msgid "Route"
-msgstr "Route"
-
-msgid "About"
-msgstr "About"
-
-msgid "Quit"
-msgstr "Quit"
-
-msgid "Actions"
-msgstr "Actions"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Stop\n"
-"Navigation"
-
-msgid "Display"
-msgstr "Display"
-
-msgid "Fullscreen"
-msgstr "FullScreen"
-
-msgid "Window Mode"
-msgstr "Window Mode"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Description"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "horse"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/en_CA.po.in b/po/en_CA.po.in
deleted file mode 100644
index fa624bc71..000000000
--- a/po/en_CA.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# English (Canada) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Frank Bax https://launchpad.net/~drw06g0w-qaens-52bk9e55
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:57+0000\n"
-"Last-Translator: Frank Bax <frank@bax.on.ca>\n"
-"Language-Team: English (Canada) <en_CA@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: en_CA\n"
-
-msgid "Running from source directory\n"
-msgstr "Running from source directory\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "setting '%s' to '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zeroth"
-
-msgid "first"
-msgstr "first"
-
-msgid "second"
-msgstr "second"
-
-msgid "third"
-msgstr "third"
-
-msgid "fourth"
-msgstr "fourth"
-
-msgid "fifth"
-msgstr "fifth"
-
-msgid "sixth"
-msgstr "sixth"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "zeroth exit"
-
-msgid "first exit"
-msgstr "first exit"
-
-msgid "second exit"
-msgstr "second exit"
-
-msgid "third exit"
-msgstr "third exit"
-
-msgid "fourth exit"
-msgstr "fourth exit"
-
-msgid "fifth exit"
-msgstr "fifth exit"
-
-msgid "sixth exit"
-msgstr "sixth exit"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meters"
-
-#, c-format
-msgid "in %d meters"
-msgstr "in %d meters"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometres"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "in %d.%d kilometres"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "one kilometre"
-msgstr[1] "%d kilometres"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "in one kilometre"
-msgstr[1] "in %d kilometres"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "onto the motorway ramp"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sinto the %s"
-
-msgid "When possible, please turn around"
-msgstr "When possible, please turn around"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Follow the road for the next %s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "soon"
-
-msgid "now"
-msgstr "now"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "then merge%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Merge %1$s%2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "then merge%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Merge %1$s%2$s"
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "right"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "left"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "easily "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "strongly "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Take the %1$s road to the %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "after %i roads"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Turn %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "then make a U-turn"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Make a U-turn %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "then make a U-turn"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Make a U-turn %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "then you have reached your destination."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "You have reached your destination %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Interchange"
-
-msgid "Exit"
-msgstr "Exit"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Position"
-
-msgid "Command"
-msgstr "Command"
-
-msgid "Length"
-msgstr "Length"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Time"
-
-msgid "Destination Length"
-msgstr "Destination Length"
-
-msgid "Destination Time"
-msgstr "Destination Time"
-
-msgid "Roadbook"
-msgstr "Roadbook"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Set as position"
-
-msgid "Set as destination"
-msgstr "Set as destination"
-
-msgid "Add as bookmark"
-msgstr "Add as bookmark"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Point 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Screen coord : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "United Arab Emirates"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua and Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Netherlands Antilles"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarctica"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "American Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland Islands"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia and Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgium"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brazil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvet Island"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Belarus"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Cocos (Keeling) Islands"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, Democratic Republic of the"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Central African Republic"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Switzerland"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Cote d'Ivoire (Ivory Coast)"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cook Islands"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Cameroon"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cape Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Christmas Island"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cyprus"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Czech Republic"
-
-#. 276
-msgid "Germany"
-msgstr "Germany"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Denmark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominican Republic"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypt"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Western Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spain"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Ethiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland Islands (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronesia, Federated States of"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Faroe Islands"
-
-#. 250
-msgid "France"
-msgstr "France"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "United Kingdom"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "French Guiana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Greenland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Equatorial Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Greece"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "South Georgia and the South Sandwich Islands"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard Island and McDonald Islands"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croatia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungary"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Ireland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isle of Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "British Indian Ocean Territory"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraq"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Islamic Republic of"
-
-#. 352
-msgid "Iceland"
-msgstr "Iceland"
-
-#. 380
-msgid "Italy"
-msgstr "Italy"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordan"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambodia"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comoros"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts and Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea, Democratic People's Republic of"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea, Republic of"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Cayman Islands"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Lao People's Democratic Republic"
-
-#. 422
-msgid "Lebanon"
-msgstr "Lebanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lithuania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxembourg"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvia"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Morocco"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova, Republic of"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (French part)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshall Islands"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedonia, the former Yugoslav Republic of"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Northern Mariana Islands"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldives"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexico"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "New Caledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk Island"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Netherlands"
-
-#. 578
-msgid "Norway"
-msgstr "Norway"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "New Zealand"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "French Polynesia"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua New Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Philippines"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Poland"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre and Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestinian Territory, Occupied"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Romania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Russian Federation"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi Arabia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Solomon Islands"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Sweden"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Saint Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard and Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome and Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrian Arab Republic"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks and Caicos Islands"
-
-#. 148
-msgid "Chad"
-msgstr "Chad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "French Southern Territories"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkey"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad and Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, Province of China"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania, United Republic of"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "United States Minor Outlying Islands"
-
-#. 840
-msgid "United States"
-msgstr "United States"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Holy See (Vatican City State)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent and the Grenadines"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Virgin Islands, British"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Virgin Islands, U.S."
-
-#. 704
-msgid "Viet Nam"
-msgstr "Viet Nam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis and Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "South Africa"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Unknown, add is_in tags to those cities"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Map Point"
-
-msgid "Car"
-msgstr "Car"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Country"
-
-msgid "Postal"
-msgstr "Postal"
-
-msgid "Town"
-msgstr "Town"
-
-msgid "District"
-msgstr "District"
-
-msgid "Street"
-msgstr "Street"
-
-msgid "Number"
-msgstr "Number"
-
-msgid "Enter Destination"
-msgstr "Enter Destination"
-
-msgid "Zip Code"
-msgstr "Postal Code"
-
-msgid "City"
-msgstr "City"
-
-msgid "District/Township"
-msgstr "District/Township"
-
-msgid "Map"
-msgstr "Map"
-
-msgid "Bookmark"
-msgstr "Bookmark"
-
-msgid "Destination"
-msgstr "Destination"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr "Decrease zoom level"
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr "Increase zoom level"
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr "Redraw map"
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Opens address search dialog"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Quit"
-
-msgid "Quit the application"
-msgstr "Quit the application"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Switches map orientation to the north or the vehicle"
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr "Show/hide route description"
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Enable/disable automatic zoom level changing"
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "No"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Route %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Route 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Help"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "View in Browser"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Streets"
-
-msgid "House numbers"
-msgstr "House numbers"
-
-msgid "View Attributes"
-msgstr "View Attributes"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "POIs"
-
-msgid "View on map"
-msgstr "View on map"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Cut Bookmark"
-
-msgid "Copy Bookmark"
-msgstr "Copy Bookmark"
-
-msgid "Rename Bookmark"
-msgstr "Rename Bookmark"
-
-msgid "Paste Bookmark"
-msgstr "Paste Bookmark"
-
-msgid "Delete Bookmark"
-msgstr "Delete Bookmark"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Bookmarks"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Add Bookmark folder"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Paste bookmark"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Bookmark %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Show Satellite Status"
-
-msgid " Elevation "
-msgstr " Elevation "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "Show NMEA Data"
-
-msgid "car"
-msgstr "car"
-
-msgid "bike"
-msgstr "bike"
-
-msgid "pedestrian"
-msgstr "pedestrian"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Current profile: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Change profile to: %s"
-
-msgid "Set as active"
-msgstr "Set as active"
-
-msgid "Show Satellite status"
-msgstr "Show Satellite status"
-
-msgid "Show NMEA data"
-msgstr "Show NMEA data"
-
-msgid "Add Bookmark"
-msgstr "Add Bookmark"
-
-msgid "Rename"
-msgstr "Rename"
-
-msgid "About Navit"
-msgstr "About Navit"
-
-#. Authors
-msgid "By"
-msgstr "By"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "And all the Navit Team"
-
-msgid "members and contributors."
-msgstr "members and contributors."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Vehicle"
-
-msgid "Rules"
-msgstr "Rules"
-
-msgid "Lock on road"
-msgstr "Lock on road"
-
-msgid "Northing"
-msgstr "Northing"
-
-msgid "Map follows Vehicle"
-msgstr "Map follows Vehicle"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Maps"
-
-msgid "Layout"
-msgstr "Layout"
-
-msgid "Height Profile"
-msgstr "Height Profile"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Route Description"
-
-msgid "Show Locale"
-msgstr "Show Locale"
-
-msgid "Former Destinations"
-msgstr "Former Destinations"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Message"
-
-msgid "Back"
-msgstr "Back"
-
-msgid "Back to map"
-msgstr "Back to map"
-
-msgid "Main Menu"
-msgstr "Main Menu"
-
-msgid "House number"
-msgstr "House number"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Vehicle Position"
-
-msgid "Main menu"
-msgstr "Main menu"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr "Show"
-
-msgid "Settings"
-msgstr "Settings"
-
-msgid "Tools"
-msgstr "Tools"
-
-msgid "Route"
-msgstr "Route"
-
-msgid "About"
-msgstr "About"
-
-msgid "Quit"
-msgstr "Quit"
-
-msgid "Actions"
-msgstr "Actions"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr "Stop"
-
-msgid "Display"
-msgstr "Display"
-
-msgid "Fullscreen"
-msgstr "Fullscreen"
-
-msgid "Window Mode"
-msgstr "Window Mode"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Description"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "horse"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/en_GB.po.in b/po/en_GB.po.in
deleted file mode 100644
index fec19d509..000000000
--- a/po/en_GB.po.in
+++ /dev/null
@@ -1,2788 +0,0 @@
-# English (United Kingdom) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Andi Chandler https://launchpad.net/~bing
-# Jeff Bailes https://launchpad.net/~thepizzaking
-# Kaustav Das Modak https://launchpad.net/~kaustav-dasmodak
-# Matthew Gall https://launchpad.net/~matthewgall
-# Roadrunner IN https://launchpad.net/~online
-# Stephen Irons https://launchpad.net/~stephen-irons
-# half_monkey https://launchpad.net/~d-r-williams-01
-# jan https://launchpad.net/~jandegr1
-# lopho https://launchpad.net/~lopho
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-02-17 14:43+0000\n"
-"Last-Translator: Andi Chandler <Unknown>\n"
-"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: en_GB\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Running from source directory\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "setting '%s' to '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zeroth"
-
-msgid "first"
-msgstr "first"
-
-msgid "second"
-msgstr "second"
-
-msgid "third"
-msgstr "third"
-
-msgid "fourth"
-msgstr "fourth"
-
-msgid "fifth"
-msgstr "fifth"
-
-msgid "sixth"
-msgstr "sixth"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "zeroth exit"
-
-msgid "first exit"
-msgstr "first exit"
-
-msgid "second exit"
-msgstr "second exit"
-
-msgid "third exit"
-msgstr "third exit"
-
-msgid "fourth exit"
-msgstr "fourth exit"
-
-msgid "fifth exit"
-msgstr "fifth exit"
-
-msgid "sixth exit"
-msgstr "sixth exit"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d feet"
-
-#, c-format
-msgid "in %d feet"
-msgstr "in %d feet"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d miles"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "in %d.%d miles"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "one mile"
-msgstr[1] "%d miles"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "in one mile"
-msgstr[1] "in %d miles"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metres"
-
-#, c-format
-msgid "in %d meters"
-msgstr "in %d metres"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometres"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "in %d.%d kilometres"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "one kilometre"
-msgstr[1] "%d kilometres"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "in one kilometre"
-msgstr[1] "in %d kilometres"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$sonto the %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$sonto %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "onto the slip road"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sinto %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sonto the %s"
-
-msgid "When possible, please turn around"
-msgstr "When possible, please turn around"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "towards %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Follow the road for the next %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Enter the roundabout soon"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Enter the roundabout %s"
-
-msgid "then enter the roundabout"
-msgstr "then enter the roundabout"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Leave the roundabout at the %1$s %2$s"
-
-msgid "soon"
-msgstr "soon"
-
-msgid "now"
-msgstr "now"
-
-msgid "then"
-msgstr "then"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "then merge%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Merge %1$s%2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "then merge%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Merge %1$s%2$s"
-
-msgid "on your left"
-msgstr "on your left"
-
-msgid "on your right"
-msgstr "on your right"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Take exit %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Take the exit %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "at interchange"
-
-msgid "at exit"
-msgstr "at exit"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "then continue straight%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "Continue straight %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "then keep right%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "Keep right %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "then keep left%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "Keep left %1$s%2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "right"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "left"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "slightly "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "strongly "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "then take the %1$s road to the %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Take the %1$s road to the %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "after %i roads"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Turn %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "then make a U-turn"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Make a U-turn %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "then make a U-turn"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Make a U-turn %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "follow"
-
-msgid "then you have reached your destination."
-msgstr "then you have reached your destination"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "You have reached your destination %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Interchange"
-
-msgid "Exit"
-msgstr "Exit"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Position"
-
-msgid "Command"
-msgstr "Command"
-
-msgid "Length"
-msgstr "Length"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Time"
-
-msgid "Destination Length"
-msgstr "Destination Length"
-
-msgid "Destination Time"
-msgstr "Destination Time"
-
-msgid "Roadbook"
-msgstr "Roadbook"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Waypoint %d"
-
-msgid "Visit before..."
-msgstr "Visit before..."
-
-msgid "Set as position"
-msgstr "Set as position"
-
-msgid "Set as destination"
-msgstr "Set as destination"
-
-msgid "Add as bookmark"
-msgstr "Add as bookmark"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Point 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Screen coord : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "United Arab Emirates"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua and Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Netherlands Antilles"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarctica"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "American Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland Islands"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia and Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgium"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Sint Eustatius and Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brazil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvet Island"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Belarus"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Cocos (Keeling) Islands"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, Democratic Republic of the"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Central African Republic"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Switzerland"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Cote d'Ivoire"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cook Islands"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Cameroon"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cape Verde"
-
-#. 531
-msgid "Curacao"
-msgstr "Curacao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Christmas Island"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cyprus"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Czech Republic"
-
-#. 276
-msgid "Germany"
-msgstr "Germany"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Denmark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominican Republic"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypt"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Western Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spain"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Ethiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland Islands (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronesia, Federated States of"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Faroe Islands"
-
-#. 250
-msgid "France"
-msgstr "France"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "United Kingdom"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "French Guiana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Greenland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Equatorial Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Greece"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "South Georgia and the South Sandwich Islands"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard Island and McDonald Islands"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croatia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungary"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Ireland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isle of Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "British Indian Ocean Territory"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraq"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Islamic Republic of"
-
-#. 352
-msgid "Iceland"
-msgstr "Iceland"
-
-#. 380
-msgid "Italy"
-msgstr "Italy"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordan"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambodia"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comoros"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts and Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea, Democratic People's Republic of"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea, Republic of"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Cayman Islands"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Lao People's Democratic Republic"
-
-#. 422
-msgid "Lebanon"
-msgstr "Lebanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lithuania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxembourg"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvia"
-
-#. 434
-msgid "Libya"
-msgstr "Libya"
-
-#. 504
-msgid "Morocco"
-msgstr "Morocco"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova, Republic of"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (French part)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshall Islands"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedonia, the former Yugoslav Republic of"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Northern Mariana Islands"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldives"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexico"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "New Caledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk Island"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Netherlands"
-
-#. 578
-msgid "Norway"
-msgstr "Norway"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "New Zealand"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "French Polynesia"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua New Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Philippines"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Poland"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre and Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestinian Territory, Occupied"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Romania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Russian Federation"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi Arabia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Solomon Islands"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Sweden"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Saint Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard and Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr "South Sudan"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome and Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sint Maarten (Dutch part)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrian Arab Republic"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks and Caicos Islands"
-
-#. 148
-msgid "Chad"
-msgstr "Chad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "French Southern Territories"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkey"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad and Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, Province of China"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania, United Republic of"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "United States Minor Outlying Islands"
-
-#. 840
-msgid "United States"
-msgstr "United States"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Holy See (Vatican City State)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent and the Grenadines"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Virgin Islands, British"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Virgin Islands, U.S."
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis and Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "South Africa"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Unknown, add is_in tags to those cities"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "No config file navit.xml, navit.xml.local found\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Error parsing config file '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Using config file '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Error: No configuration found in config file '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Internal initialisation failed, exiting. Check previous error messages.\n"
-
-msgid "unknown street"
-msgstr "unknown street"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Unnamed vehicle"
-
-msgid "Failed to write bookmarks file"
-msgstr "Failed to write bookmarks file"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Map Point"
-
-msgid "Car"
-msgstr "Car"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Country"
-
-msgid "Postal"
-msgstr "Postal"
-
-msgid "Town"
-msgstr "Town"
-
-msgid "District"
-msgstr "District"
-
-msgid "Street"
-msgstr "Street"
-
-msgid "Number"
-msgstr "Number"
-
-msgid "Enter Destination"
-msgstr "Enter Destination"
-
-msgid "Zip Code"
-msgstr "Post Code"
-
-msgid "City"
-msgstr "City"
-
-msgid "District/Township"
-msgstr "District/Township"
-
-msgid "Map"
-msgstr "Map"
-
-msgid "Bookmark"
-msgstr "Bookmark"
-
-msgid "Destination"
-msgstr "Destination"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Display"
-
-msgid "_Route"
-msgstr "Route"
-
-msgid "_Former Destinations"
-msgstr "Former Destinations"
-
-msgid "_Bookmarks"
-msgstr "Bookmarks"
-
-msgid "_Map"
-msgstr "Map"
-
-msgid "_Layout"
-msgstr "Layout"
-
-msgid "_Projection"
-msgstr "Projection"
-
-msgid "_Vehicle"
-msgstr "Vehicle"
-
-msgid "Zoom_Out"
-msgstr "ZoomOut"
-
-msgid "Decrease zoom level"
-msgstr "Decrease zoom level"
-
-msgid "Zoom_In"
-msgstr "ZoomIn"
-
-msgid "Increase zoom level"
-msgstr "Increase zoom level"
-
-msgid "_Recalculate"
-msgstr "Recalculate"
-
-msgid "Redraw map"
-msgstr "Redraw map"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr "Set _destination"
-
-msgid "Opens address search dialog"
-msgstr "Opens address search dialogue"
-
-msgid "_POI search"
-msgstr "_POI search"
-
-msgid "Opens POI search dialog"
-msgstr "Opens POI search dialogue"
-
-msgid "_Stop Navigation"
-msgstr "Stop navigation"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Quit"
-
-msgid "Quit the application"
-msgstr "Quit the application"
-
-msgid "Show position _cursor"
-msgstr "Show position _cursor"
-
-msgid "_Lock on Road"
-msgstr "Lock on road"
-
-msgid "_Keep orientation to the North"
-msgstr "_Keep orientation to the North"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Switches map orientation to the north or the vehicle"
-
-msgid "_Roadbook"
-msgstr "Roadbook"
-
-msgid "Show/hide route description"
-msgstr "Show/hide route description"
-
-msgid "_Autozoom"
-msgstr "Autozoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Enable/disable automatic zoom level changing"
-
-msgid "_Fullscreen"
-msgstr "Fullscreen"
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr "Pharmacy"
-
-msgid "Restaurant"
-msgstr "Restaurant"
-
-msgid "Restaurant. Fast food"
-msgstr "Restaurant. Fast food"
-
-msgid "Hotel"
-msgstr "Hotel"
-
-msgid "Car parking"
-msgstr "Car parking"
-
-msgid "Fuel station"
-msgstr "Fuel station"
-
-msgid "Bank"
-msgstr "Bank"
-
-msgid "Hospital"
-msgstr "Hospital"
-
-msgid "Cinema"
-msgstr "Cinema"
-
-msgid "Train station"
-msgstr "Railway station"
-
-msgid "School"
-msgstr "School"
-
-msgid "Police"
-msgstr "Police"
-
-msgid "Justice"
-msgstr "Justice"
-
-msgid "Taxi"
-msgstr "Taxi"
-
-msgid "Shopping"
-msgstr "Shopping"
-
-msgid "Distance from screen center (km)"
-msgstr "Distance from screen centre (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "POI %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Set destination to %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "Set map to %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "Set next visit to %ld, %ld \n"
-
-msgid "POI search"
-msgstr "POI search"
-
-msgid "Select a category"
-msgstr "Select a category"
-
-msgid "Select a distance to look for (km)"
-msgstr "Select a distance to look for (km)"
-
-msgid "Select a POI"
-msgstr "Select a POI"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Category"
-
-msgid "Direction"
-msgstr "Direction"
-
-msgid "Distance(m)"
-msgstr "Distance(m)"
-
-msgid "Name"
-msgstr "Name"
-
-msgid "Visit Before"
-msgstr "Visit Before"
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "No"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "QT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Route %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Route 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Help"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Waypoint %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Select waypoint to insert the new one before"
-
-msgid "View in Browser"
-msgstr "View in browser"
-
-msgid "Item type"
-msgstr "Item type"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Streets"
-
-msgid "House numbers"
-msgstr "House numbers"
-
-msgid "View Attributes"
-msgstr "View attributes"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Set as position (and deactivate vehicle)"
-
-msgid "POIs"
-msgstr "POIs"
-
-msgid "View on map"
-msgstr "View on map"
-
-msgid "Remove search results from the map"
-msgstr "Remove search results from the map"
-
-msgid "Show results on the map"
-msgstr "Show results on the map"
-
-msgid "Cut Bookmark"
-msgstr "Cut bookmark"
-
-msgid "Copy Bookmark"
-msgstr "Copy bookmark"
-
-msgid "Rename Bookmark"
-msgstr "Rename bookmark"
-
-msgid "Paste Bookmark"
-msgstr "Paste bookmark"
-
-msgid "Delete Bookmark"
-msgstr "Delete bookmark"
-
-msgid "Delete waypoint"
-msgstr "Delete waypoint"
-
-msgid "Bookmarks"
-msgstr "Bookmarks"
-
-msgid "Bookmarks as waypoints"
-msgstr "Bookmarks as waypoints"
-
-msgid "Save waypoints"
-msgstr "Save waypoints"
-
-msgid "Replace with waypoints"
-msgstr "Replace with waypoints"
-
-msgid "Delete Folder"
-msgstr "Delete Folder"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Add bookmark folder"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Paste bookmark"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Bookmark %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Download %s"
-
-msgid "Map Download"
-msgstr "Map Download"
-
-msgid "Active"
-msgstr "Active"
-
-msgid "Download Enabled"
-msgstr "Download Enabled"
-
-msgid "Download completely"
-msgstr "Download completely"
-
-msgid "Show Satellite Status"
-msgstr "Show satellite status"
-
-msgid " Elevation "
-msgstr " Elevation "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "Show NMEA data"
-
-msgid "car"
-msgstr "car"
-
-msgid "bike"
-msgstr "bike"
-
-msgid "pedestrian"
-msgstr "pedestrian"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Current profile: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Change profile to: %s"
-
-msgid "Set as active"
-msgstr "Set as active"
-
-msgid "Show Satellite status"
-msgstr "Show satellite status"
-
-msgid "Show NMEA data"
-msgstr "Show NMEA data"
-
-msgid "Add Bookmark"
-msgstr "Add bookmark"
-
-msgid "Rename"
-msgstr "Rename"
-
-msgid "About Navit"
-msgstr "About Navit"
-
-#. Authors
-msgid "By"
-msgstr "By"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "And all the Navit Team"
-
-msgid "members and contributors."
-msgstr "members and contributors."
-
-msgid "Waypoints"
-msgstr "Waypoints"
-
-msgid "Enter Coordinates"
-msgstr "Enter Coordinates"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Latitude Longitude"
-
-msgid "Enter coordinates, for example:"
-msgstr "Enter coordinates, for example:"
-
-msgid "Vehicle"
-msgstr "Vehicle"
-
-msgid "Rules"
-msgstr "Rules"
-
-msgid "Lock on road"
-msgstr "Lock on road"
-
-msgid "Northing"
-msgstr "Orient map North"
-
-msgid "Map follows Vehicle"
-msgstr "Map follows vehicle"
-
-msgid "Plan with Waypoints"
-msgstr "Plan with Waypoints"
-
-msgid "Maps"
-msgstr "Maps"
-
-msgid "Layout"
-msgstr "Layout"
-
-msgid "Height Profile"
-msgstr "Height Profile"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Route Description"
-
-msgid "Show Locale"
-msgstr "Show Locale"
-
-msgid "Former Destinations"
-msgstr "Former Destinations"
-
-msgid "- No former destinations available -"
-msgstr "- No former destinations available -"
-
-msgid "Message"
-msgstr "Message"
-
-msgid "Back"
-msgstr "Back"
-
-msgid "Back to map"
-msgstr "Back to map"
-
-msgid "Main Menu"
-msgstr "Main Menu"
-
-msgid "House number"
-msgstr "House number"
-
-msgid "Next"
-msgstr "Next"
-
-msgid "Prev"
-msgstr "Prev"
-
-msgid "Return to route!"
-msgstr "Return to route!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Look out! Camera!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Please decrease your speed"
-
-msgid "partial match"
-msgstr "partial match"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Search"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Towns"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Map data (c) OpenStreetMap contributors, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-
-msgid "Downloaded maps"
-msgstr "Downloaded maps"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Route to here"
-
-msgid "Cancel"
-msgstr "Cancel"
-
-msgid "filenamePath"
-msgstr "filenamePath"
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-
-msgid "Whole Planet"
-msgstr "Whole Planet"
-
-msgid "Africa"
-msgstr "Africa"
-
-msgid "Canary Islands"
-msgstr "Canary Islands"
-
-msgid "Asia"
-msgstr "Asia"
-
-msgid "Korea"
-msgstr "Korea"
-
-msgid "Taiwan"
-msgstr "Taiwan"
-
-msgid "UAE+Other"
-msgstr "UAE+Other"
-
-msgid "Oceania"
-msgstr "Oceania"
-
-msgid "Tasmania"
-msgstr "Tasmania"
-
-msgid "Victoria"
-msgstr "Victoria"
-
-msgid "New South Wales"
-msgstr "New South Wales"
-
-msgid "Europe"
-msgstr "Europe"
-
-msgid "Western Europe"
-msgstr "Western Europe"
-
-msgid "Azores"
-msgstr "Azores"
-
-msgid "BeNeLux"
-msgstr "BeNeLux"
-
-msgid "Alsace"
-msgstr "Alsace"
-
-msgid "Aquitaine"
-msgstr "Aquitaine"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Basse-Normandie"
-
-msgid "Bourgogne"
-msgstr "Bourgogne"
-
-msgid "Bretagne"
-msgstr "Bretagne"
-
-msgid "Centre"
-msgstr "Centre"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardenne"
-
-msgid "Corse"
-msgstr "Corse"
-
-msgid "Franche-Comte"
-msgstr "Franche-Comte"
-
-msgid "Haute-Normandie"
-msgstr "Haute-Normandie"
-
-msgid "Ile-de-France"
-msgstr "Ile-de-France"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc-Roussillon"
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lorraine"
-
-msgid "Midi-Pyrenees"
-msgstr "Midi-Pyrenees"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-pas-de-Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Pays-de-la-Loire"
-
-msgid "Picardie"
-msgstr "Picardie"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provence-Alpes-Cote-d-Azur"
-
-msgid "Rhone-Alpes"
-msgstr "Rhone-Alpes"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-msgid "Bayern"
-msgstr "Bayern"
-
-msgid "Mittelfranken"
-msgstr "Mittelfranken"
-
-msgid "Niederbayern"
-msgstr "Niederbayern"
-
-msgid "Oberbayern"
-msgstr "Oberbayern"
-
-msgid "Oberfranken"
-msgstr "Oberfranken"
-
-msgid "Oberpfalz"
-msgstr "Oberpfalz"
-
-msgid "Schwaben"
-msgstr "Schwaben"
-
-msgid "Unterfranken"
-msgstr "Unterfranken"
-
-msgid "Berlin"
-msgstr "Berlin"
-
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-msgid "Bremen"
-msgstr "Bremen"
-
-msgid "Hamburg"
-msgstr "Hamburg"
-
-msgid "Hessen"
-msgstr "Hessen"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Mecklenburg-Vorpommern"
-
-msgid "Niedersachsen"
-msgstr "Niedersachsen"
-
-msgid "Nordrhein-westfalen"
-msgstr "Nordrhein-westfalen"
-
-msgid "Rheinland-Pfalz"
-msgstr "Rheinland-Pfalz"
-
-msgid "Saarland"
-msgstr "Saarland"
-
-msgid "Sachsen-Anhalt"
-msgstr "Sachsen-Anhalt"
-
-msgid "Sachsen"
-msgstr "Sachsen"
-
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-msgid "Thueringen"
-msgstr "Thueringen"
-
-msgid "Mallorca"
-msgstr "Mallorca"
-
-msgid "Galicia"
-msgstr "Galicia"
-
-msgid "Scandinavia"
-msgstr "Scandinavia"
-
-msgid "England"
-msgstr "England"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "East Yorkshire with Hull"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "South Yorkshire"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Scotland"
-
-msgid "Wales"
-msgstr "Wales"
-
-msgid "Crete"
-msgstr "Crete"
-
-msgid "North America"
-msgstr "North America"
-
-msgid "Alaska"
-msgstr "Alaska"
-
-msgid "Hawaii"
-msgstr "Hawaii"
-
-msgid "USA"
-msgstr "USA"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (except Alaska and Hawaii)"
-
-msgid "Midwest"
-msgstr "Midwest"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Northeast"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Pacific"
-
-msgid "South"
-msgstr "South"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "District of Columbia"
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Louisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virginia"
-
-msgid "West Virginia"
-msgstr "West Virginia"
-
-msgid "West"
-msgstr "West"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "California"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "New Mexico"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Washington State"
-
-msgid "South+Middle America"
-msgstr "South+Middle America"
-
-msgid "Guyane Francaise"
-msgstr "Guyane Francaise"
-
-msgid "downloading"
-msgstr "downloading"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "ready"
-
-msgid "Media selected for map storage is not available"
-msgstr "Media selected for map storage is not available"
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Not enough free space"
-
-msgid "Error downloading map!"
-msgstr "Error downloading map!"
-
-msgid "Error writing map!"
-msgstr "Error writing map!"
-
-msgid "Map download aborted!"
-msgstr "Map download aborted!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "ETA"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Map download"
-
-msgid "Vehicle Position"
-msgstr "Vehicle Position"
-
-msgid "Main menu"
-msgstr "Main Menu"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr "Show Map"
-
-msgid "Settings"
-msgstr "Settings"
-
-msgid "Tools"
-msgstr "Tools"
-
-msgid "Route"
-msgstr "Route"
-
-msgid "About"
-msgstr "About"
-
-msgid "Quit"
-msgstr "Quit"
-
-msgid "Actions"
-msgstr "Actions"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Former\n"
-"Destinations"
-
-msgid "Coordinates"
-msgstr "Coordinates"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr "Stop"
-
-msgid "Display"
-msgstr "Display"
-
-msgid "Fullscreen"
-msgstr "Fullscreen"
-
-msgid "Window Mode"
-msgstr "Window Mode"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Description"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Drop last \n"
-"Waypoint"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Drop next \n"
-"Waypoint"
-
-msgid "Satellite Status"
-msgstr "Satellite Status"
-
-msgid "NMEA Data"
-msgstr "NMEA Data"
-
-msgid "car_shortest"
-msgstr "car_shortest"
-
-msgid "car_avoid_tolls"
-msgstr "car_avoid_tolls"
-
-msgid "car_pedantic"
-msgstr "car_pedantic"
-
-msgid "horse"
-msgstr "horse"
-
-msgid "Truck"
-msgstr "Truck"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Yes"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit started"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit running"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Welcome to Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map file size may be large (>50MB) - a WiFi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "More info"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Zoom in"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Zoom out"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Download maps"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Toggle POIs"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Exit Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Backup / Restore"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr "Set map location"
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Delete this map?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Downloading:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Error downloading map."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Map download aborted"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "No location. Reopen after location fix."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Maps containing current location"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Address search"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Enter destination"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Match partial address"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Searching..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Address not found"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Getting search results"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Loading search results"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "No results found"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "No text entered"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Setting destination to:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Choose an action"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Please insert an SD Card"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Backing up..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Restoring..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Failed to create backup directory"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Backup failed"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "No backup found"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Failed to restore"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Backup successful"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Restore Successful\n"
-"Please restart Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Backup not found"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Restore failed"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Select backup"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Backup"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Restore"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr "System text to speech engine data is missing"
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-"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?"
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "then leave the roundabout at the %1$s %2$s"
diff --git a/po/eo.po.in b/po/eo.po.in
deleted file mode 100644
index 62a0a7128..000000000
--- a/po/eo.po.in
+++ /dev/null
@@ -1,2752 +0,0 @@
-# Esperanto translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Lucas Larson https://launchpad.net/~lucaslarson
-# Michael Moroni https://launchpad.net/~airon90
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# OlivierWeb https://launchpad.net/~olivierweb
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Esperanto <eo@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: eo\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Rulanta el fontdosierujo\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "agordanta '%s' kiel '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nula"
-
-msgid "first"
-msgstr "unua"
-
-msgid "second"
-msgstr "dua"
-
-msgid "third"
-msgstr "tria"
-
-msgid "fourth"
-msgstr "kvara"
-
-msgid "fifth"
-msgstr "kvina"
-
-msgid "sixth"
-msgstr "sesa"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nula eliro"
-
-msgid "first exit"
-msgstr "unua eliro"
-
-msgid "second exit"
-msgstr "dua eliro"
-
-msgid "third exit"
-msgstr "tria eliro"
-
-msgid "fourth exit"
-msgstr "kvara eliro"
-
-msgid "fifth exit"
-msgstr "kvina eliro"
-
-msgid "sixth exit"
-msgstr "sesa eliro"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metroj"
-
-#, c-format
-msgid "in %d meters"
-msgstr "en %d metrojn"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometrojn"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "en %d.%d kilometrojn"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "unu kilometro"
-msgstr[1] "%d kilometroj"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "en unu kilometron"
-msgstr[1] "en %d kilometrojn"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "al la ramplon"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sal la %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sal la %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sal la %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sal la %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sal la %s"
-
-msgid "When possible, please turn around"
-msgstr "Kiam eble, bonvole ĉirkaŭturnu"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Sekvu la straton Äis la sekva %s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Lasu la trafikcirklon ĉe la %1$s %2$s"
-
-msgid "soon"
-msgstr "baldaÅ­"
-
-msgid "now"
-msgstr "nun"
-
-msgid "then"
-msgstr "do"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "dekstren"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "maldekstren"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "facile "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "forte "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Turnu %2$s ĉe la strato %1$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "post %i stratoj"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Turnu %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "do ĉirkaŭturnu"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Ĉirkaŭturnu %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "do ĉirkaŭturnu"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Ĉirkaŭturnu %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "sekvu"
-
-msgid "then you have reached your destination."
-msgstr "do vi atingis la celon"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Vi atingis la celon %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Eliro"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Pozicio"
-
-msgid "Command"
-msgstr "Komando"
-
-msgid "Length"
-msgstr "Longo"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Horo"
-
-msgid "Destination Length"
-msgstr "Distanco de celo"
-
-msgid "Destination Time"
-msgstr "Tempo por celo"
-
-msgid "Roadbook"
-msgstr "Vojprotokolo"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Agordi kiel pozicio"
-
-msgid "Set as destination"
-msgstr "Agordi kiel celo"
-
-msgid "Add as bookmark"
-msgstr "Aldoni kiel legosigno"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkto 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Ekrankoordinatoj : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andoro"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "UnuiÄintaj Arabaj Emirlandoj"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganio"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigvo-Barbudo"
-
-#. 660
-msgid "Anguilla"
-msgstr "Angvilo"
-
-#. 008
-msgid "Albania"
-msgstr "Albanio"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenio"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Nederlandaj antiloj"
-
-#. 024
-msgid "Angola"
-msgstr "Angolo"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarkto"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentino"
-
-#. 016
-msgid "American Samoa"
-msgstr "Usona Samoo"
-
-#. 040
-msgid "Austria"
-msgstr "AÅ­strio"
-
-#. 036
-msgid "Australia"
-msgstr "AÅ­stralio"
-
-#. 533
-msgid "Aruba"
-msgstr "Arubo"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Alando"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "AzerbajÄano"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnio kaj Hercegovino"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbado"
-
-#. 050
-msgid "Bangladesh"
-msgstr "BangladeÅo"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgio"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkino"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgario"
-
-#. 048
-msgid "Bahrain"
-msgstr "Barejno"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundio"
-
-#. 204
-msgid "Benin"
-msgstr "Benino"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Sankta Bartolomeo"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudo"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunejo"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivio"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brazilo"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamoj"
-
-#. 064
-msgid "Bhutan"
-msgstr "Butano"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Buvet-insulo"
-
-#. 072
-msgid "Botswana"
-msgstr "Bocvano"
-
-#. 112
-msgid "Belarus"
-msgstr "Belorusio"
-
-#. 084
-msgid "Belize"
-msgstr "Belizo"
-
-#. 124
-msgid "Canada"
-msgstr "Kanado"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosinsuloj"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, Demokratia Respubliko de"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Centr-Afrika Respubliko"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Svislando"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Ebur-Bordo"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Kukinsuloj"
-
-#. 152
-msgid "Chile"
-msgstr "Ĉilio"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerunio"
-
-#. 156
-msgid "China"
-msgstr "Ĉinio"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolombio"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kostariko"
-
-#. 192
-msgid "Cuba"
-msgstr "Kubo"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kabo-Verdo"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Kristnaskinsulo"
-
-#. 196
-msgid "Cyprus"
-msgstr "Kipro"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Ĉeĥio"
-
-#. 276
-msgid "Germany"
-msgstr "Germanio"
-
-#. 262
-msgid "Djibouti"
-msgstr "Äœibutio"
-
-#. 208
-msgid "Denmark"
-msgstr "Danio"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominiko"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Domingo"
-
-#. 012
-msgid "Algeria"
-msgstr "AlÄerio"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvadoro"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonio"
-
-#. 818
-msgid "Egypt"
-msgstr "Egiptio"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Okcidenta Saharo"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritreo"
-
-#. 724
-msgid "Spain"
-msgstr "Hispanio"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopio"
-
-#. 246
-msgid "Finland"
-msgstr "Finnlando"
-
-#. 242
-msgid "Fiji"
-msgstr "FiÄioj"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Insuloj Falklandoj-Malvinoj"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronezio, Federaciaj Åœtatoj de"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Ferooj"
-
-#. 250
-msgid "France"
-msgstr "Francio"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabono"
-
-#. 826
-msgid "United Kingdom"
-msgstr "UnuiÄinta ReÄlando"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenado"
-
-#. 268
-msgid "Georgia"
-msgstr "Kartvelio"
-
-#. 254
-msgid "French Guiana"
-msgstr "Franca Gviano"
-
-#. 831
-msgid "Guernsey"
-msgstr "Gernezejo"
-
-#. 288
-msgid "Ghana"
-msgstr "Ganao"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Äœibraltaro"
-
-#. 304
-msgid "Greenland"
-msgstr "Gronlando"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambio"
-
-#. 324
-msgid "Guinea"
-msgstr "Gvineo"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Gvadelupo"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekvatora Gvineo"
-
-#. 300
-msgid "Greece"
-msgstr "Grekio"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Sud-Georgio kaj Sud-Sandviĉinsuloj"
-
-#. 320
-msgid "Guatemala"
-msgstr "Gvatemalo"
-
-#. 316
-msgid "Guam"
-msgstr "Gvamo"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Gvineo-BisaÅ­o"
-
-#. 328
-msgid "Guyana"
-msgstr "Gujano"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Honkongo"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Herda kaj Makdonaldaj insuloj"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduro"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatio"
-
-#. 332
-msgid "Haiti"
-msgstr "Haitio"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungario"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonezio"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlando"
-
-#. 376
-msgid "Israel"
-msgstr "Israelo"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Manksinsulo"
-
-#. 356
-msgid "India"
-msgstr "Barato"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Brita Hindoceana Teritorio"
-
-#. 368
-msgid "Iraq"
-msgstr "Irako"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Irano, Islama Respubliko"
-
-#. 352
-msgid "Iceland"
-msgstr "Islando"
-
-#. 380
-msgid "Italy"
-msgstr "Italio"
-
-#. 832
-msgid "Jersey"
-msgstr "Ä´erzejo"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamajko"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordanio"
-
-#. 392
-msgid "Japan"
-msgstr "Japanio"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenjo"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgizio"
-
-#. 116
-msgid "Cambodia"
-msgstr "KamboÄo"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribato"
-
-#. 174
-msgid "Comoros"
-msgstr "Komoroj"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Sankta Kristoforo kaj Neviso"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Koreio, Demokrata Popola Respubliko de"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Koreio, Respubliko de"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuvajto"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kajmana Insularo"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazaĥio"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laoso, Popola Demokrata Respubliko de"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libano"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Sankta Lucio"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "LiÄ¥tenÅtejno"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri-Lanko"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberio"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litovio"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luksemburgo"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvio"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Maroko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavio, Respubliko de"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Sankta-Marteno (franca parto)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskaro"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "MarÅala Insularo"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedonio, eksa Jugoslava Respubliko de"
-
-#. 466
-msgid "Mali"
-msgstr "Malio"
-
-#. 104
-msgid "Myanmar"
-msgstr "Birmo"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolio"
-
-#. 446
-msgid "Macao"
-msgstr "Makao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Nord-Marianoj"
-
-#. 474
-msgid "Martinique"
-msgstr "Martiniko"
-
-#. 478
-msgid "Mauritania"
-msgstr "MaÅ­ritanio"
-
-#. 500
-msgid "Montserrat"
-msgstr "Moncerato"
-
-#. 470
-msgid "Malta"
-msgstr "Malto"
-
-#. 480
-msgid "Mauritius"
-msgstr "MaÅ­ricio"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldivoj"
-
-#. 454
-msgid "Malawi"
-msgstr "Malavio"
-
-#. 484
-msgid "Mexico"
-msgstr "Meksiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malajzio"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambiko"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibio"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nov-Kaledonio"
-
-#. 562
-msgid "Niger"
-msgstr "NiÄero"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolkinsulo"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigerio"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragvo"
-
-#. 528
-msgid "Netherlands"
-msgstr "Nederlando"
-
-#. 578
-msgid "Norway"
-msgstr "Norvegio"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepalo"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauro"
-
-#. 570
-msgid "Niue"
-msgstr "Niuo"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nov-Zelando"
-
-#. 512
-msgid "Oman"
-msgstr "Omano"
-
-#. 591
-msgid "Panama"
-msgstr "Panamo"
-
-#. 604
-msgid "Peru"
-msgstr "Peruo"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Franca Polinezio"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papuo-Nov-Gvineo"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipinoj"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistano"
-
-#. 616
-msgid "Poland"
-msgstr "Pollando"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Sankta-Piero kaj Mikelono"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitkarna Insularo"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Porto-Riko"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestinaj teritorioj, Okupita"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugalio"
-
-#. 585
-msgid "Palau"
-msgstr "PalaÅ­o"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paragvajo"
-
-#. 634
-msgid "Qatar"
-msgstr "Kataro"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunio"
-
-#. 642
-msgid "Romania"
-msgstr "Rumanio"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbio"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Rusa Federacio"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruando"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Sauda Arabio"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Salomonoj"
-
-#. 690
-msgid "Seychelles"
-msgstr "SejÅeloj"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudano"
-
-#. 752
-msgid "Sweden"
-msgstr "Svedio"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapuro"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Sankta Heleno"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenio"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbardo kaj Jan-Majen-insulo"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakio"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Siera-Leono"
-
-#. 674
-msgid "San Marino"
-msgstr "San-Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegalio"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalio"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinamo"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao-Tomeo kaj Principeo"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salvadoro"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Sirio, Araba Respubliko de"
-
-#. 748
-msgid "Swaziland"
-msgstr "Svazilando"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turkoj kaj Kajkoj"
-
-#. 148
-msgid "Chad"
-msgstr "Ĉado"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Francaj Sudaj Teritorioj"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tajlando"
-
-#. 762
-msgid "Tajikistan"
-msgstr "TaÄikio"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelao"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Orienta Timoro"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenio"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunizio"
-
-#. 776
-msgid "Tonga"
-msgstr "Tongo"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkio"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidado kaj Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalo"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Tajvano, Provinco de Ĉinio"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzanio, UnuiÄinta Respubliko de"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukrainio"
-
-#. 800
-msgid "Uganda"
-msgstr "Ugando"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Usonaj Malgrandaj Insuloj"
-
-#. 840
-msgid "United States"
-msgstr "Usono"
-
-#. 858
-msgid "Uruguay"
-msgstr "Urugvajo"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekio"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Sankta SeÄo (Vatikano)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Sankta Vincento kaj la Grenadinoj"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuelo"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Virgulininsuloj, Britaj"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Virgulininsuloj, Usonaj"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vjetnamio"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatuo"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Valiso kaj Futuno"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoo"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemeno"
-
-#. 175
-msgid "Mayotte"
-msgstr "Majoto"
-
-#. 710
-msgid "South Africa"
-msgstr "Sud-Afriko"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambio"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabvo"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Nekonata, aldonu etikedon is_in al ĉi tiuj urboj"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Punktoj de mapoj"
-
-msgid "Car"
-msgstr "AÅ­tomobilo"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Lando"
-
-msgid "Postal"
-msgstr "PoÅta"
-
-msgid "Town"
-msgstr "Urbeto"
-
-msgid "District"
-msgstr "Distrikto"
-
-msgid "Street"
-msgstr "Vojo"
-
-msgid "Number"
-msgstr "Numero"
-
-msgid "Enter Destination"
-msgstr "Enigu celon"
-
-msgid "Zip Code"
-msgstr "ZIP-kodo"
-
-msgid "City"
-msgstr "Urbo"
-
-msgid "District/Township"
-msgstr "Distrikto/Urbaro"
-
-msgid "Map"
-msgstr "Mapo"
-
-msgid "Bookmark"
-msgstr "Legosigno"
-
-msgid "Destination"
-msgstr "Celo"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr "Legosignoj"
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr "Malaltigi pligrandigon"
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr "Altigi pligrandigon"
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr "Redesegni mapon"
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Ĝi malfermas dialogon por serĉi adreson"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr "Testi"
-
-msgid "_Quit"
-msgstr "Ĉ_esigi"
-
-msgid "Quit the application"
-msgstr "Ĉesigi la aplikaĵon"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Åœalti orientiÄon de mapoj al nordo aÅ­ al vehiklo"
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr "Montri/kaÅi la priskribon de irvojo"
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Åœalti aÅ­tomata ÅanÄo de nivelo de grandigo"
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr "Datumoj"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NOr"
-
-msgid "E"
-msgstr "Or"
-
-msgid "SE"
-msgstr "SOr"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SOk"
-
-msgid "W"
-msgstr "Ok"
-
-msgid "NW"
-msgstr "NOk"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ne"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "Alia"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Irvojo %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Irvojo 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Helpo"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Vidi en retumilo"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Vojoj"
-
-msgid "House numbers"
-msgstr "Domnumeroj"
-
-msgid "View Attributes"
-msgstr "Vidi ecojn"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "PDI"
-
-msgid "View on map"
-msgstr "Vidi en mapo"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Eltondi legosignon"
-
-msgid "Copy Bookmark"
-msgstr "Kopii legosignon"
-
-msgid "Rename Bookmark"
-msgstr "Alinomigi legosignon"
-
-msgid "Paste Bookmark"
-msgstr "Alglui legosignon"
-
-msgid "Delete Bookmark"
-msgstr "Forigi legosignon"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Legosignoj"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Aldoni legosignujon"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Alglui legosignon"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Legosigni %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Montri staton de satelitoj"
-
-msgid " Elevation "
-msgstr " Altitudo "
-
-msgid " Azimuth "
-msgstr " Azimuto "
-
-msgid "Show NMEA Data"
-msgstr "Montri NMEA-datumojn"
-
-msgid "car"
-msgstr "aÅ­to"
-
-msgid "bike"
-msgstr "biciklo"
-
-msgid "pedestrian"
-msgstr "piediranto"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Aktuala profilo: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "ÅœanÄi profilo al: %s"
-
-msgid "Set as active"
-msgstr "Agordi kiel aktiva"
-
-msgid "Show Satellite status"
-msgstr "Montri staton de satelitoj"
-
-msgid "Show NMEA data"
-msgstr "Montri NMEA-datumojn"
-
-msgid "Add Bookmark"
-msgstr "Aldoni legosignon"
-
-msgid "Rename"
-msgstr "Alinomigi"
-
-msgid "About Navit"
-msgstr "Pri Navit"
-
-#. Authors
-msgid "By"
-msgstr "De"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "kaj la tuta Navit-skipo"
-
-msgid "members and contributors."
-msgstr "anoj kaj kontribuantoj."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Vehiklo"
-
-msgid "Rules"
-msgstr "Reguloj"
-
-msgid "Lock on road"
-msgstr "Åœlosi al vojo"
-
-msgid "Northing"
-msgstr "Nordado"
-
-msgid "Map follows Vehicle"
-msgstr "Mapo sekvas vehiklon"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Mapoj"
-
-msgid "Layout"
-msgstr "AranÄo"
-
-msgid "Height Profile"
-msgstr "Altimetrio"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Priskribo de irvojo"
-
-msgid "Show Locale"
-msgstr "Montri lokaĵaron"
-
-msgid "Former Destinations"
-msgstr "Eksaj celoj"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "MesaÄo"
-
-msgid "Back"
-msgstr "MalantaÅ­en"
-
-msgid "Back to map"
-msgstr "Reen al mapo"
-
-msgid "Main Menu"
-msgstr "Ĉefa menuo"
-
-msgid "House number"
-msgstr "Domnumero"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Pozicio de vehiklo"
-
-msgid "Main menu"
-msgstr "Ĉefa menuo"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Montri\n"
-"mapon"
-
-msgid "Settings"
-msgstr "Agordoj"
-
-msgid "Tools"
-msgstr "Iloj"
-
-msgid "Route"
-msgstr "Irvojo"
-
-msgid "About"
-msgstr "Pri"
-
-msgid "Quit"
-msgstr "Eliri"
-
-msgid "Actions"
-msgstr "Agoj"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Haltigi\n"
-"navigadon"
-
-msgid "Display"
-msgstr "Montri"
-
-msgid "Fullscreen"
-msgstr "Tutekrane"
-
-msgid "Window Mode"
-msgstr "Fenestra reÄimo"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Priskribo"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "ĉevalo"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "do lasu la trafikcirklon ĉe la %1$s %2$s"
diff --git a/po/es.po.in b/po/es.po.in
deleted file mode 100644
index 4946a6233..000000000
--- a/po/es.po.in
+++ /dev/null
@@ -1,2794 +0,0 @@
-# Spanish translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Benjamín Valero Espinosa https://launchpad.net/~benjavalero
-# David A Páez https://launchpad.net/~orlsend
-# DiegoJ https://launchpad.net/~diegojromerolopez
-# Emilio Gomez Fernandez https://launchpad.net/~egofer
-# Feder Sáiz https://launchpad.net/~federsaiz-deactivatedaccount
-# Inaki Saez https://launchpad.net/~inaki-saez
-# Jonay https://launchpad.net/~jonay-santana
-# KaZeR https://launchpad.net/~kazer
-# Kenneth Belitzky https://launchpad.net/~r-kenny
-# Luis Alejandro Rangel Sánchez https://launchpad.net/~xlarsx
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Paco Molinero https://launchpad.net/~franciscomol
-# Ricardo Jurado https://launchpad.net/~ricky131313
-# agerio https://launchpad.net/~agerio
-# iceman75 https://launchpad.net/~javier-orejarena
-# juliwoodbcn https://launchpad.net/~julianlozano
-# marZiano https://launchpad.net/~m3marte
-# pataquets https://launchpad.net/~pataquets
-# singesang https://launchpad.net/~singesang
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-06-21 22:51+0000\n"
-"Last-Translator: Kenneth Belitzky <kenny@belitzky.com>\n"
-"Language-Team: Chris Eubank <cteubank@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: es\n"
-
-msgid "Running from source directory\n"
-msgstr "Ejecutando desde el directorio fuente\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "configurando '%s' a '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "cero"
-
-msgid "first"
-msgstr "primera"
-
-msgid "second"
-msgstr "segunda"
-
-msgid "third"
-msgstr "tercera"
-
-msgid "fourth"
-msgstr "cuarta"
-
-msgid "fifth"
-msgstr "quinta"
-
-msgid "sixth"
-msgstr "sexta"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "salida cero"
-
-msgid "first exit"
-msgstr "primera salida"
-
-msgid "second exit"
-msgstr "segunda salida"
-
-msgid "third exit"
-msgstr "tercera salida"
-
-msgid "fourth exit"
-msgstr "cuarta salida"
-
-msgid "fifth exit"
-msgstr "quinta salida"
-
-msgid "sixth exit"
-msgstr "sexta salida"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d pies"
-
-#, c-format
-msgid "in %d feet"
-msgstr "en %d pies"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d,%d millas"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "en %d,%d millas"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "una milla"
-msgstr[1] "%d millas"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "en una milla"
-msgstr[1] "en %d millas"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metros"
-
-#, c-format
-msgid "in %d meters"
-msgstr "en %d metros"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d,%d kilómetros"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "en %d,%d kilómetros"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "un kilómetro"
-msgstr[1] "%d kilómetros"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "en un kilómetro"
-msgstr[1] "en %d kilómetros"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$sen la %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$sen la carretera %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$sen el %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$sen la %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$sen la carretera %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "en el carril de entrada"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sen la calle %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sen el %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sen la %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sen la calle %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sen la %s"
-
-msgid "When possible, please turn around"
-msgstr "Dé la vuelta cuando sea posible"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "hacia %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Continúe en esta carretera durante %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Entre en la próxima rotonda"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Entrar en la rotonda de %s"
-
-msgid "then enter the roundabout"
-msgstr "luego entrar en la rotonda"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Salga de la rotonda por la %1$s %2$s"
-
-msgid "soon"
-msgstr "próximamente"
-
-msgid "now"
-msgstr "ahora"
-
-msgid "then"
-msgstr "luego"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "luego entre%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Entre%2$s %1$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "luego entre%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Entre%2$s %1$s"
-
-msgid "on your left"
-msgstr "a la izquierda"
-
-msgid "on your right"
-msgstr "a la derecha"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Tome la salida %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Tome la salida %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "al enlace"
-
-msgid "at exit"
-msgstr "a la salida"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "luego continúe todo recto%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "Continúe todo recto %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "luego manténgase por la derecha%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "Manténgase por la derecha %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "luego manténgase por la izquierda%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "Manténgase por la izquierda %1$s%2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "a la derecha"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "a la izquierda"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "ligeramente "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "bruscamente "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "luego tomar la carretera de %1$s a la %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Tome la %1$s carretera %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "después de %i carreteras"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Gire %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "luego dé la vuelta"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Dé la vuelta %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "luego dé la vuelta"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Dé la vuelta %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "continúe"
-
-msgid "then you have reached your destination."
-msgstr "entonces ha llegado a su destino."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Ha llegado a su destino %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Enlace"
-
-msgid "Exit"
-msgstr "Salida"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posición"
-
-msgid "Command"
-msgstr "Orden"
-
-msgid "Length"
-msgstr "Longitud"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tiempo"
-
-msgid "Destination Length"
-msgstr "Distancia a destino"
-
-msgid "Destination Time"
-msgstr "Tiempo a destino"
-
-msgid "Roadbook"
-msgstr "Guía"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Punto de paso %d"
-
-msgid "Visit before..."
-msgstr "Visitar antes"
-
-msgid "Set as position"
-msgstr "Definir como origen"
-
-msgid "Set as destination"
-msgstr "Definir como destino"
-
-msgid "Add as bookmark"
-msgstr "Agregar como favorito"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punto 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Coordenadas de pantalla : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Emiratos Ãrabes Unidos"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistán"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua y Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguila"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antillas Holandesas"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antártida"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Americana"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Islas de Ã…land"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaiyán"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Bélgica"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrein"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benín"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "San Bartolomé"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudas"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, San Eustaquio y Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brasil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bután"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Isla Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botsuana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorrusia"
-
-#. 084
-msgid "Belize"
-msgstr "Belice"
-
-#. 124
-msgid "Canada"
-msgstr "Canadá"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Islas de Cocos (Keeling)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, República Democrática del"
-
-#. 140
-msgid "Central African Republic"
-msgstr "República Centroafricana"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Suiza"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Costa de Marfil"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Islas Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Camerún"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cabo Verde"
-
-#. 531
-msgid "Curacao"
-msgstr "Curaçao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Isla Natividad"
-
-#. 196
-msgid "Cyprus"
-msgstr "Chipre"
-
-#. 203
-msgid "Czech Republic"
-msgstr "República Checa"
-
-#. 276
-msgid "Germany"
-msgstr "Alemania"
-
-#. 262
-msgid "Djibouti"
-msgstr "República de Yibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Dinamarca"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "República Dominicana"
-
-#. 012
-msgid "Algeria"
-msgstr "Argelia"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egipto"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara Occidental"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "España"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopía"
-
-#. 246
-msgid "Finland"
-msgstr "Finlandia"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiyi"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Islas Malvinas"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Estados Federados de Micronesia"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Islas Feroe"
-
-#. 250
-msgid "France"
-msgstr "Francia"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabón"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Reino Unido"
-
-#. 308
-msgid "Grenada"
-msgstr "Granada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guayana Francesa"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernesey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenlandia"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guinea Ecuatorial"
-
-#. 300
-msgid "Greece"
-msgstr "Grecia"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Islas Georgias del Sur y Sandwich del Sur"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guayana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Islas Heard y McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croacia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungría"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isla de Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Territorio Británico en el Océano Indico"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Irán"
-
-#. 352
-msgid "Iceland"
-msgstr "Islandia"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordania"
-
-#. 392
-msgid "Japan"
-msgstr "Japón"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirguistán"
-
-#. 116
-msgid "Cambodia"
-msgstr "Camboya"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comoras"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "San Cristóbal y Nieves"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Corea, República Democrática Popular de"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Corea, República de"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Islas Caimán"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazajstán"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "República Democrática Popular Lao"
-
-#. 422
-msgid "Lebanon"
-msgstr "Líbano"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Santa Lucía"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lituania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburgo"
-
-#. 428
-msgid "Latvia"
-msgstr "Letonia"
-
-#. 434
-msgid "Libya"
-msgstr "Libia"
-
-#. 504
-msgid "Morocco"
-msgstr "Marruecos"
-
-#. 492
-msgid "Monaco"
-msgstr "Mónaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavia, República de"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "San Martín (zona francesa)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Islas Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Antigua República Yugoslava de Macedonia"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Islas Marianas del Norte"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinica"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauricio"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldivas"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "México"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malasia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nueva Caledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Níger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Isla Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Países Bajos"
-
-#. 578
-msgid "Norway"
-msgstr "Noruega"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nueva Zelanda"
-
-#. 512
-msgid "Oman"
-msgstr "Omán"
-
-#. 591
-msgid "Panama"
-msgstr "Panamá"
-
-#. 604
-msgid "Peru"
-msgstr "Perú"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinesia Francesa"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papúa Nueva Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipinas"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistán"
-
-#. 616
-msgid "Poland"
-msgstr "Polonia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "San Pedro y Miquelón"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Territorio Palestino Ocupado"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Catar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunión"
-
-#. 642
-msgid "Romania"
-msgstr "Rumania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Federación de Rusia"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arabia Saudita"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Islas Salomón"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudán"
-
-#. 752
-msgid "Sweden"
-msgstr "Suecia"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Santa Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Eslovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard y Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Eslovaquia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leona"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr "Sudán del Sur"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Santo Tomé y Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "San Martín (parte holandesa)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "República Ãrabe de Siria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Suazilandia"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Islas Turcas y Caicos"
-
-#. 148
-msgid "Chad"
-msgstr "Chad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Territorios Australes Franceses"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tailandia"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tayikistán"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor Oriental"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistán"
-
-#. 788
-msgid "Tunisia"
-msgstr "Túnez"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turquía"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad y Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwán, Provincia de China"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania, República Unida de"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ucrania"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Islas Ultramarinas Menores de los Estados Unidos"
-
-#. 840
-msgid "United States"
-msgstr "Estados Unidos"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistán"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Santa Sede (Ciudad Estado del Vaticano)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "San Vicente y las Granadinas"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Islas Vírgenes, Británicas"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Islas Vírgenes, EE.UU."
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis y Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Sudáfrica"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabue"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Desconocido, añadir etiquetas is_in a estas ciudades"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-"No hay fichero de configuración navit.xml, encontrado navit.xml.local\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Error cargando el fichero de configuración '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Usando el fichero de configuración '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Inicialización interna fallida, saliendo. Compruebe mensajes previos de "
-"error\n"
-
-msgid "unknown street"
-msgstr "calle desconocida"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Vehículo sin nombre"
-
-msgid "Failed to write bookmarks file"
-msgstr "Error al escribir el fichero de marcadores"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Punto del Mapa"
-
-msgid "Car"
-msgstr "Coche"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "País"
-
-msgid "Postal"
-msgstr "Postal"
-
-msgid "Town"
-msgstr "Pueblo"
-
-msgid "District"
-msgstr "Distrito"
-
-msgid "Street"
-msgstr "Calle"
-
-msgid "Number"
-msgstr "Número"
-
-msgid "Enter Destination"
-msgstr "Introducir destino"
-
-msgid "Zip Code"
-msgstr "Código postal"
-
-msgid "City"
-msgstr "Ciudad"
-
-msgid "District/Township"
-msgstr "Distrito"
-
-msgid "Map"
-msgstr "Mapa"
-
-msgid "Bookmark"
-msgstr "Marcador"
-
-msgid "Destination"
-msgstr "Destino"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "_Visualizar"
-
-msgid "_Route"
-msgstr "_Ruta"
-
-msgid "_Former Destinations"
-msgstr "Destinos _anteriores"
-
-msgid "_Bookmarks"
-msgstr "_Favoritos"
-
-msgid "_Map"
-msgstr "_Mapa"
-
-msgid "_Layout"
-msgstr "D_iseño"
-
-msgid "_Projection"
-msgstr "_Proyección"
-
-msgid "_Vehicle"
-msgstr "_Vehículo"
-
-msgid "Zoom_Out"
-msgstr "A_lejar"
-
-msgid "Decrease zoom level"
-msgstr "Reducir el nivel de zoom"
-
-msgid "Zoom_In"
-msgstr "A_umentar"
-
-msgid "Increase zoom level"
-msgstr "Aumentar el nivel de zoom"
-
-msgid "_Recalculate"
-msgstr "_Recalcular"
-
-msgid "Redraw map"
-msgstr "Redibujar mapa"
-
-msgid "_Info"
-msgstr "_Información"
-
-msgid "Set _destination"
-msgstr "_Fijar destino"
-
-msgid "Opens address search dialog"
-msgstr "Abre el dialogo de busqueda de dirección"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr "Abre la búsqueda de puntos de interés"
-
-msgid "_Stop Navigation"
-msgstr "_Detener navegación"
-
-msgid "Test"
-msgstr "Prueba"
-
-msgid "_Quit"
-msgstr "_Salir"
-
-msgid "Quit the application"
-msgstr "Salir de la aplicación"
-
-msgid "Show position _cursor"
-msgstr "_Mostrar posición del cursor"
-
-msgid "_Lock on Road"
-msgstr "_Bloqueo en la ruta"
-
-msgid "_Keep orientation to the North"
-msgstr "Mantener _orientación al Norte"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Cambia la orientación del mapa entre el norte y el vehículo"
-
-msgid "_Roadbook"
-msgstr "Guía"
-
-msgid "Show/hide route description"
-msgstr "Mostrar/ocultar descripción de la ruta"
-
-msgid "_Autozoom"
-msgstr "_Autoampliar"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Activa/desactiva nivel de zoom automático"
-
-msgid "_Fullscreen"
-msgstr "Pantalla completa"
-
-msgid "Data"
-msgstr "Datos"
-
-msgid "Pharmacy"
-msgstr "Farmacia"
-
-msgid "Restaurant"
-msgstr "Restaurante"
-
-msgid "Restaurant. Fast food"
-msgstr "Restaurante. Comida rápida"
-
-msgid "Hotel"
-msgstr "Hotel"
-
-msgid "Car parking"
-msgstr "Estacionamiento"
-
-msgid "Fuel station"
-msgstr "Estación de Combustibles"
-
-msgid "Bank"
-msgstr "Banco"
-
-msgid "Hospital"
-msgstr "Hospital"
-
-msgid "Cinema"
-msgstr "Cine"
-
-msgid "Train station"
-msgstr "Estación de trenes"
-
-msgid "School"
-msgstr "Escuela"
-
-msgid "Police"
-msgstr "Policía"
-
-msgid "Justice"
-msgstr "Juzgado"
-
-msgid "Taxi"
-msgstr "Taxi"
-
-msgid "Shopping"
-msgstr "Shopping"
-
-msgid "Distance from screen center (km)"
-msgstr "Distancia del centro de la pantalla (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "POI %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Cambiar destino a %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "Cambiar mapa a % ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "Conjunto siguiente visita a %ld, %ld \n"
-
-msgid "POI search"
-msgstr "Búsqueda de puntos de interés"
-
-msgid "Select a category"
-msgstr "Elige una categoría"
-
-msgid "Select a distance to look for (km)"
-msgstr "Seleccione una distancia para buscar (km)"
-
-msgid "Select a POI"
-msgstr "Seleccionar un POI"
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr "Categoría"
-
-msgid "Direction"
-msgstr "Dirección"
-
-msgid "Distance(m)"
-msgstr "Distancia(m)"
-
-msgid "Name"
-msgstr "Nombre"
-
-msgid "Visit Before"
-msgstr "Visita Antes"
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SO"
-
-msgid "W"
-msgstr "O"
-
-msgid "NW"
-msgstr "NO"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "No"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Ruta %4.0fkm %02d:%02d TEL"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Ruta 0000km 0+00:00 TEL"
-
-msgid "Help"
-msgstr "Ayuda"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Punto de destino %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Escoja el punto de destino para insertar antes el nuevo"
-
-msgid "View in Browser"
-msgstr "Ver en el navegador"
-
-msgid "Item type"
-msgstr "Tipo de objeto"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Calles"
-
-msgid "House numbers"
-msgstr "Números de portal"
-
-msgid "View Attributes"
-msgstr "Ver atributos"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Definir como origen (y desactivar el vehículo)"
-
-msgid "POIs"
-msgstr "PDIs"
-
-msgid "View on map"
-msgstr "Ver en el mapa"
-
-msgid "Remove search results from the map"
-msgstr "Quitar los resultados de búsqueda del mapa"
-
-msgid "Show results on the map"
-msgstr "Mostrar los resultados en el mapa"
-
-msgid "Cut Bookmark"
-msgstr "Cortar marcador"
-
-msgid "Copy Bookmark"
-msgstr "Copiar marcador"
-
-msgid "Rename Bookmark"
-msgstr "Renombrar marcador"
-
-msgid "Paste Bookmark"
-msgstr "Pegar marcador"
-
-msgid "Delete Bookmark"
-msgstr "Eliminar marcador"
-
-msgid "Delete waypoint"
-msgstr "Borrar punto de paso"
-
-msgid "Bookmarks"
-msgstr "Favoritos"
-
-msgid "Bookmarks as waypoints"
-msgstr "Marcadores como puntos de ruta"
-
-msgid "Save waypoints"
-msgstr "Guardar puntos de ruta"
-
-msgid "Replace with waypoints"
-msgstr "Sustituir con puntos de paso"
-
-msgid "Delete Folder"
-msgstr "Borrar carpeta"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Añadir carpeta de marcadores"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Pegar marcador"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Marcador %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Descargar %s"
-
-msgid "Map Download"
-msgstr "Descargar mapa"
-
-msgid "Active"
-msgstr "Activo"
-
-msgid "Download Enabled"
-msgstr "Derscaga activada"
-
-msgid "Download completely"
-msgstr "Descargar completo"
-
-msgid "Show Satellite Status"
-msgstr "Mostrar estado de satélite"
-
-msgid " Elevation "
-msgstr " Elevación "
-
-msgid " Azimuth "
-msgstr " Azimut "
-
-msgid "Show NMEA Data"
-msgstr "Mostar datos NMEA"
-
-msgid "car"
-msgstr "Coche"
-
-msgid "bike"
-msgstr "bicicleta"
-
-msgid "pedestrian"
-msgstr "peatón"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Perfil actual: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Cambiar perfil a: %s"
-
-msgid "Set as active"
-msgstr "Establecer como activo"
-
-msgid "Show Satellite status"
-msgstr "Mostrar estado de satélite"
-
-msgid "Show NMEA data"
-msgstr "Mostar datos NMEA"
-
-msgid "Add Bookmark"
-msgstr "Añadir marcador"
-
-msgid "Rename"
-msgstr "Renombrar"
-
-msgid "About Navit"
-msgstr "Acerca de Navit"
-
-#. Authors
-msgid "By"
-msgstr "Por"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Y todo el equipo de Navit"
-
-msgid "members and contributors."
-msgstr "miembros y colaboradores"
-
-msgid "Waypoints"
-msgstr "Puntos de paso"
-
-msgid "Enter Coordinates"
-msgstr "Introduzca coordenadas"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Latitud Longitud"
-
-msgid "Enter coordinates, for example:"
-msgstr "Introduzca coordenadas, por ejemplo:"
-
-msgid "Vehicle"
-msgstr "Vehículo"
-
-msgid "Rules"
-msgstr "Reglas"
-
-msgid "Lock on road"
-msgstr "Bloqueo en la ruta"
-
-msgid "Northing"
-msgstr "Hacia el Norte"
-
-msgid "Map follows Vehicle"
-msgstr "El mapa sigue al vehículo"
-
-msgid "Plan with Waypoints"
-msgstr "Plan con puntos de ruta"
-
-msgid "Maps"
-msgstr "Mapas"
-
-msgid "Layout"
-msgstr "Diseño"
-
-msgid "Height Profile"
-msgstr "Perfil de altura"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Descripción de ruta"
-
-msgid "Show Locale"
-msgstr "Mostrar locale"
-
-msgid "Former Destinations"
-msgstr "Destinos anteriores"
-
-msgid "- No former destinations available -"
-msgstr "- No hay destinos anteriores -"
-
-msgid "Message"
-msgstr "Mensaje"
-
-msgid "Back"
-msgstr "Atrás"
-
-msgid "Back to map"
-msgstr "Volver al mapa"
-
-msgid "Main Menu"
-msgstr "Menú principal"
-
-msgid "House number"
-msgstr "Número de portal"
-
-msgid "Next"
-msgstr "Siguiente"
-
-msgid "Prev"
-msgstr "Anterior"
-
-msgid "Return to route!"
-msgstr "Vuelva a la ruta"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "¡Atención! Radar"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Por favor, disminuya su velocidad"
-
-msgid "partial match"
-msgstr "Coincidencia parcial"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Búsqueda"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Ciudades"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Datos de Mapa (c) contribuyentes de OpenStreetMap, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-"Ubicación actual del mapa %s no se encuentra disponible\n"
-"Por favor reiniciar Navit después de conectar una tarjeta SD o seleccione "
-"una ubicación del mapa diferente."
-
-msgid "Downloaded maps"
-msgstr "Mapas descargados"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"Lo sentimos, actualmente no permitimos mapas por encima de 3,8 G en Android, "
-"por favor, seleccione una versión más pequeña."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Ruta hasta aquí"
-
-msgid "Cancel"
-msgstr "Cancelar"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-"Nueva ubicación cambiada a %s\n"
-"Reinicie Navit para aplicar los cambios."
-
-msgid "Whole Planet"
-msgstr "Todo el Planeta"
-
-msgid "Africa"
-msgstr "Ãfrica"
-
-msgid "Canary Islands"
-msgstr "Islas Canarias"
-
-msgid "Asia"
-msgstr "Asia"
-
-msgid "Korea"
-msgstr "Corea"
-
-msgid "Taiwan"
-msgstr "Taiwán"
-
-msgid "UAE+Other"
-msgstr "Emiratos Ãrabes Unidos + Otros"
-
-msgid "Oceania"
-msgstr "Oceanía"
-
-msgid "Tasmania"
-msgstr "Tasmania"
-
-msgid "Victoria"
-msgstr "Victoria"
-
-msgid "New South Wales"
-msgstr "Nueva Gales del Sur"
-
-msgid "Europe"
-msgstr "Europa"
-
-msgid "Western Europe"
-msgstr "Europa Occidental"
-
-msgid "Azores"
-msgstr "Azores"
-
-msgid "BeNeLux"
-msgstr "Benelux"
-
-msgid "Alsace"
-msgstr "Alsacia"
-
-msgid "Aquitaine"
-msgstr "Aquitania"
-
-msgid "Auvergne"
-msgstr "Auvernia"
-
-msgid "Basse-Normandie"
-msgstr "Baja Normandía"
-
-msgid "Bourgogne"
-msgstr "Borgoña"
-
-msgid "Bretagne"
-msgstr "Bretaña"
-
-msgid "Centre"
-msgstr "Centro"
-
-msgid "Champagne-Ardenne"
-msgstr "Champaña - Ardenas"
-
-msgid "Corse"
-msgstr "Córcega"
-
-msgid "Franche-Comte"
-msgstr "Franco Condado"
-
-msgid "Haute-Normandie"
-msgstr "Alta Normandía"
-
-msgid "Ile-de-France"
-msgstr "Isla de Francia"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc - Rosellón"
-
-msgid "Limousin"
-msgstr "Limusina"
-
-msgid "Lorraine"
-msgstr "Lorena"
-
-msgid "Midi-Pyrenees"
-msgstr "Midi - Pirineos"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Paso Norte de Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Países del Loira"
-
-msgid "Picardie"
-msgstr "Paradía"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Alpes - Costa Azul"
-
-msgid "Rhone-Alpes"
-msgstr "Rhone - Alpes"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-msgid "Bayern"
-msgstr "Baviera"
-
-msgid "Mittelfranken"
-msgstr "Franconia Media"
-
-msgid "Niederbayern"
-msgstr "Baja Baviera"
-
-msgid "Oberbayern"
-msgstr "Alta Baviera"
-
-msgid "Oberfranken"
-msgstr "Alta Franconia"
-
-msgid "Oberpfalz"
-msgstr "Alto Palatinado"
-
-msgid "Schwaben"
-msgstr "Schawben"
-
-msgid "Unterfranken"
-msgstr "Baja Franconia"
-
-msgid "Berlin"
-msgstr "Berlín"
-
-msgid "Brandenburg"
-msgstr "Brandenburgo"
-
-msgid "Bremen"
-msgstr "Bremen"
-
-msgid "Hamburg"
-msgstr "Hamburgo"
-
-msgid "Hessen"
-msgstr "Hessen"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Mecklemburgo-Pomerania"
-
-msgid "Niedersachsen"
-msgstr "Niedersachsen"
-
-msgid "Nordrhein-westfalen"
-msgstr "Renania del Norte-Westfalia"
-
-msgid "Rheinland-Pfalz"
-msgstr "Renania del Norte-Westfalia"
-
-msgid "Saarland"
-msgstr "Sarre"
-
-msgid "Sachsen-Anhalt"
-msgstr "Sajonia-Anhalt"
-
-msgid "Sachsen"
-msgstr "Sachsen"
-
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-msgid "Thueringen"
-msgstr "Turingia"
-
-msgid "Mallorca"
-msgstr "Mallorca"
-
-msgid "Galicia"
-msgstr "Galicia"
-
-msgid "Scandinavia"
-msgstr "Escandinavia"
-
-msgid "England"
-msgstr "Inglaterra"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "Yorkshire Este con Hull"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "Yorkshire Sur"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Escocia"
-
-msgid "Wales"
-msgstr "Gales"
-
-msgid "Crete"
-msgstr "Creta"
-
-msgid "North America"
-msgstr "Norteamérica"
-
-msgid "Alaska"
-msgstr "Alaska"
-
-msgid "Hawaii"
-msgstr "Hawái"
-
-msgid "USA"
-msgstr "Estados Unidos de Norteamérica"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (excepto Alaska y Hawái)"
-
-msgid "Midwest"
-msgstr "Medio-Oeste"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Noreste"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Pacífico"
-
-msgid "South"
-msgstr "Sur"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "Distrito de Columbia"
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Luisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Tejas"
-
-msgid "Virginia"
-msgstr "Virginia"
-
-msgid "West Virginia"
-msgstr "Virginia Occidental"
-
-msgid "West"
-msgstr "Oeste"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "California"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "Nuevo Méjico"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregón"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Estado de Washington"
-
-msgid "South+Middle America"
-msgstr "Suramérica + Centroamérica"
-
-msgid "Guyane Francaise"
-msgstr "Guayana Francesa"
-
-msgid "downloading"
-msgstr "descargando"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "listo"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-"Los medios de comunicación seleccionados para el almacenamiento del mapa no "
-"está disponible"
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "No hay suficiente espacio libre"
-
-msgid "Error downloading map!"
-msgstr "Error al descargar el mapa"
-
-msgid "Error writing map!"
-msgstr "Error al guardar el mapa"
-
-msgid "Map download aborted!"
-msgstr "Descarga del mapa interrumpida"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Tiempo estimado"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Mapa descargado"
-
-msgid "Vehicle Position"
-msgstr "Posición del vehículo"
-
-msgid "Main menu"
-msgstr "Menú principal"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Mostrar\n"
-"Mapa"
-
-msgid "Settings"
-msgstr "Configuración"
-
-msgid "Tools"
-msgstr "Herramientas"
-
-msgid "Route"
-msgstr "Ruta"
-
-msgid "About"
-msgstr "Acerca de"
-
-msgid "Quit"
-msgstr "Salir"
-
-msgid "Actions"
-msgstr "Acciones"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Destinos\n"
-"anteriores"
-
-msgid "Coordinates"
-msgstr "Coordenadas"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Parar\n"
-"Navegación"
-
-msgid "Display"
-msgstr "Visualizar"
-
-msgid "Fullscreen"
-msgstr "Pantalla completa"
-
-msgid "Window Mode"
-msgstr "Modo ventana"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Descripción"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Quitar último \n"
-"Punto de ruta"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Quitar el siguiente \n"
-"Punto de ruta"
-
-msgid "Satellite Status"
-msgstr "Estado Satélites"
-
-msgid "NMEA Data"
-msgstr "Datos NMEA"
-
-msgid "car_shortest"
-msgstr "automovil_ruta_mas_corta"
-
-msgid "car_avoid_tolls"
-msgstr "automovil_evitar_peajes"
-
-msgid "car_pedantic"
-msgstr "Carro_sabelotodo"
-
-msgid "horse"
-msgstr "caballo"
-
-msgid "Truck"
-msgstr "Camión"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Sí"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Iniciado Navit"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit ejecutándose"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Bienvenido a Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Gracias por instalar Navit!\n"
-"\n"
-"Para iniciar, seleccione \"Descarga de mapas\" del menú para descargar un "
-"mapa. Nota: El tamaño del mapa puede ser grande (>50 MB) - se recomienda una "
-"conexión Wi-Fi.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Disfruta de Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Más información"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Ampliar"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Reducir"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Descargar mapas"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Alternar POIs"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Salir de Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Respaldar / Restaurar"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr "Establecer ubicación en mapa"
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "¿Borrar este mapa?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Descargando:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Error descargando mapa"
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Descarga de mapa interrumpida"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Sin localización. Reabra tras fijar localización."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Mapas que contienen localización actual"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Búsqueda por dirección"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Introduzca destino"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Coincidencia parcial en la dirección"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Buscando…"
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Dirección no encontrada"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Resultados de la búsqueda"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Cargando resultados de la búsqueda"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Sin resultados"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "No se introdujo texto"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Configurando destino a:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Elija una acción"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Por favor, introduzca una tarjeta SD"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Creando copia de seguridad"
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Recuperando..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Error al crear directorio de respaldo"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "La copia de seguridad falló"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "No se ha encontrado copia de seguridad"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Fallo al restaurar"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Copia de seguridad realizada"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Restaurado con éxito\n"
-"Por favor, reinicie Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Copia de seguridad no encontrada"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Restauración fallida"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Seleccione copia de seguridad"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Copia de seguridad"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Restaurar"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "después salga de la rotonda por la %1$s %2$s"
diff --git a/po/et.po.in b/po/et.po.in
deleted file mode 100644
index 23781e008..000000000
--- a/po/et.po.in
+++ /dev/null
@@ -1,2770 +0,0 @@
-# Estonian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Andres Kaaber https://launchpad.net/~imapi
-# Jalakas https://launchpad.net/~jalakas
-# Manuel Hohmann https://launchpad.net/~mhohmann
-# lyyser https://launchpad.net/~lyyser
-# thucar https://launchpad.net/~rait
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-12-22 07:09+0000\n"
-"Last-Translator: Manuel Hohmann <mhohmann@physnet.uni-hamburg.de>\n"
-"Language-Team: Estonian <et@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: et\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Lähtekataloogist käivitamine\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "määran '%s'-i '%s'-ks\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nullis"
-
-msgid "first"
-msgstr "esimene"
-
-msgid "second"
-msgstr "teine"
-
-msgid "third"
-msgstr "kolmas"
-
-msgid "fourth"
-msgstr "neljas"
-
-msgid "fifth"
-msgstr "viies"
-
-msgid "sixth"
-msgstr "kuues"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nullindast mahasõidust"
-
-msgid "first exit"
-msgstr "esimesest mahasõidust"
-
-msgid "second exit"
-msgstr "teisest mahasõidust"
-
-msgid "third exit"
-msgstr "kolmandast mahasõidust"
-
-msgid "fourth exit"
-msgstr "neljandast mahasõidust"
-
-msgid "fifth exit"
-msgstr "viiendast mahasõidust"
-
-msgid "sixth exit"
-msgstr "kuuendast mahasõidust"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d jalga"
-
-#, c-format
-msgid "in %d feet"
-msgstr "%d jala pärast"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d miili"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "%d.%d miili pärast"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "üks miil"
-msgstr[1] "%d miili"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "ühe miili pärast"
-msgstr[1] "%d miili pärast"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meetrit"
-
-#, c-format
-msgid "in %d meters"
-msgstr "%d meetri pärast"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilomeetrit"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d.%d kilomeetri pärast"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "üks kilomeeter"
-msgstr[1] "%d kilomeetrit"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "ühe kilomeetri pärast"
-msgstr[1] "%d kilomeetri pärast"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "kaldteele"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s %s%s%s tänavale"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s %s%s%s tänavale"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s %s%s%s tänavale"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s %s%s%s tänavale"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%steele %s"
-
-msgid "When possible, please turn around"
-msgstr "Kui võimalik, palun pööra ümber"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Mööda teed järgmised %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Sõida varsti ringteele"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Sõida ringteele %s"
-
-msgid "then enter the roundabout"
-msgstr "siis sõida ringteele"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Lahku ringteelt %1$s %2$s"
-
-msgid "soon"
-msgstr "varsti"
-
-msgid "now"
-msgstr "nüüd"
-
-msgid "then"
-msgstr "siis"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr "vasakul pool"
-
-msgid "on your right"
-msgstr "paremal pool"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "paremale"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "vasakule"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "laugelt "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "järsult "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Vali %1$s tee, mis viib %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "pärast %i teed"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Pööra %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "siis pööra ümber"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Pööra ümber %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "siis pööra ümber"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Pööra ümber %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "siis oled jõudnud sihtpunkti."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Sa oled jõudnud sihtpunkti %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Mahasõit"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Asukoht"
-
-msgid "Command"
-msgstr "Käsklus"
-
-msgid "Length"
-msgstr "Pikkus"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Aeg"
-
-msgid "Destination Length"
-msgstr "Sihtkoha kaugus"
-
-msgid "Destination Time"
-msgstr "Kohalejõudmise aeg"
-
-msgid "Roadbook"
-msgstr "Teekonna raamat"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Teekonnapunkt %d"
-
-msgid "Visit before..."
-msgstr "Külasta enne..."
-
-msgid "Set as position"
-msgstr "Määra asukohaks"
-
-msgid "Set as destination"
-msgstr "Määra sihtpunktiks"
-
-msgid "Add as bookmark"
-msgstr "Lisa järjehoidjasse"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Ekraani koordinaadid: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Araabia Ãœhendemiraadid"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistaan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua ja Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albaania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armeenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Hollandi Antillid"
-
-#. 024
-msgid "Angola"
-msgstr "Angoola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktika"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentiina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Ameerika Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Austraalia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Alandi saared"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaidžaan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia ja Hertsegoviina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgia"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrein"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benini"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Boliivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Sint Eustatius ja Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brasiilia"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahama saared"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouveti saar"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Valgevene"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kookosesaared"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo Demokraatlik Vabariik"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Kesk-Aafrika Vabariik"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Å veits"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Elevandiluu rannik"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cooki saared"
-
-#. 152
-msgid "Chile"
-msgstr "TÅ¡iili"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Hiina"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Roheneeme saared"
-
-#. 531
-msgid "Curacao"
-msgstr "Curacao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Jõulusaar"
-
-#. 196
-msgid "Cyprus"
-msgstr "Küpros"
-
-#. 203
-msgid "Czech Republic"
-msgstr "TÅ¡ehhi Vabariik"
-
-#. 276
-msgid "Germany"
-msgstr "Saksamaa"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Taani"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikaani Vabariik"
-
-#. 012
-msgid "Algeria"
-msgstr "Alžeeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvador"
-
-#. 233
-msgid "Estonia"
-msgstr "Eesti"
-
-#. 818
-msgid "Egypt"
-msgstr "Egiptus"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Lääne-Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Hispaania"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etioopia"
-
-#. 246
-msgid "Finland"
-msgstr "Soome"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidži"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandi (Malviini) saared"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikroneesia Liiduriigid"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Fääri saared"
-
-#. 250
-msgid "France"
-msgstr "Prantsusmaa"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Suurbritannia"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Prantsuse Guajaana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Gröönimaa"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekvatoriaal-Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Kreeka"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Lõuna-Georgia ja Lõuna-Sandwichi saared"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guajaana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heardi ja McDonaldi saarte ala"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduuras"
-
-#. 191
-msgid "Croatia"
-msgstr "Horvaatia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Ungari"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indoneesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Iirimaa"
-
-#. 376
-msgid "Israel"
-msgstr "Iisrael"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Man'i saar"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Briti India ookeani territoorium"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iraani Islamivabariik"
-
-#. 352
-msgid "Iceland"
-msgstr "Island"
-
-#. 380
-msgid "Italy"
-msgstr "Itaalia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordaania"
-
-#. 392
-msgid "Japan"
-msgstr "Jaapan"
-
-#. 404
-msgid "Kenya"
-msgstr "Keenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kõrgõstan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komoorid"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "St. Kitts ja Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea Rahvademokraatlik Vabariik"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea Vabariik"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuveit"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kaimani saared"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kasashtan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laose Demokraatlik Rahvavabariik"
-
-#. 422
-msgid "Lebanon"
-msgstr "Liibanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Santa Lucía"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Libeeria"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Leedu"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luksemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Läti"
-
-#. 434
-msgid "Libya"
-msgstr "Liibüa"
-
-#. 504
-msgid "Morocco"
-msgstr "Maroko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova Vabariik"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "St. Martin (Prantsuse osa)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshalli saared"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedoonia, endine Jugoslaavia vabariik"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongoolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Põhja-Mariaani saared"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Marutaania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldiivid"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mehhiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaisia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mosambiik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namiibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Uus Kaledoonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolki saar"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaraagua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Holland"
-
-#. 578
-msgid "Norway"
-msgstr "Norra"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepaal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Uus-Meremaa"
-
-#. 512
-msgid "Oman"
-msgstr "Omaan"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peruu"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Prantsuse Polüneesia"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Paapua Uus-Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipiinid"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Poola"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "St. Pierre and Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestiina okupeeritud ala"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguai"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Rumeenia"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Venemaa"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi Araabia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Saalomoni saared"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seišellid"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudaan"
-
-#. 752
-msgid "Sweden"
-msgstr "Rootsi"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "St. Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Sloveenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard ja Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakkia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somaalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr "Lõuna-Sudaan"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome ja Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sint Maarten (Hollandi osa)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Süüria Araabia Vabariik"
-
-#. 748
-msgid "Swaziland"
-msgstr "Svaasimaa"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks ja Caicose saared"
-
-#. 148
-msgid "Chad"
-msgstr "TÅ¡aad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Prantsuse Lõunaalad"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tai"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadžikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Ida-Timor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tuneesia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Türgi"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad ja Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tansaania Ãœhendvabariik"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Ãœhendriikide hajasaared"
-
-#. 840
-msgid "United States"
-msgstr "USA"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguai"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Usbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Püha Tool (Vatikan)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "St. Vincent ja Grenadines"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venetsueela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Neitsisaared, Briti"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Neitsisaared, USA"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis ja Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jeemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Lõuna-Aafrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Tundmatu, lisa \"is_in\" märge neile linnadele"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Ei leidnud konfiguratsioonifaile navit.xml, navit.xml.local\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Viga seadistusfaili lugemisel '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Kasutame seadistusfaili: '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Programmi käivitamine ebaõnnestus. Programmist väljutakse. Kontrolli "
-"eelnevaid veateateid.\n"
-
-msgid "unknown street"
-msgstr "nimetu tänav"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Nimetu sõiduk"
-
-msgid "Failed to write bookmarks file"
-msgstr "Järjehoidjate faili kirjutamine ebaõnnestus"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Kaardipunkt"
-
-msgid "Car"
-msgstr "Auto"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Riik"
-
-msgid "Postal"
-msgstr "Postiindeks"
-
-msgid "Town"
-msgstr "Asula"
-
-msgid "District"
-msgstr "Linnaosa"
-
-msgid "Street"
-msgstr "Tänav"
-
-msgid "Number"
-msgstr "Number"
-
-msgid "Enter Destination"
-msgstr "Sisesta sihtpunkt"
-
-msgid "Zip Code"
-msgstr "Postiindeks"
-
-msgid "City"
-msgstr "Linn"
-
-msgid "District/Township"
-msgstr "Linnaosa"
-
-msgid "Map"
-msgstr "Kaart"
-
-msgid "Bookmark"
-msgstr "Järjehoidja"
-
-msgid "Destination"
-msgstr "Sihtpunkt"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "_Kuva"
-
-msgid "_Route"
-msgstr "_Teekond"
-
-msgid "_Former Destinations"
-msgstr "_Eelmine sihtkoht"
-
-msgid "_Bookmarks"
-msgstr "_Järjehoidjad"
-
-msgid "_Map"
-msgstr "_Kaart"
-
-msgid "_Layout"
-msgstr "_Paigutus"
-
-msgid "_Projection"
-msgstr "_Projektsioon"
-
-msgid "_Vehicle"
-msgstr "_Liiklusvahend"
-
-msgid "Zoom_Out"
-msgstr "Vähenda"
-
-msgid "Decrease zoom level"
-msgstr "Suurendustaseme vähendamine"
-
-msgid "Zoom_In"
-msgstr "Suurenda"
-
-msgid "Increase zoom level"
-msgstr "Suurendustaseme tõstmine"
-
-msgid "_Recalculate"
-msgstr "Arvuta uuesti"
-
-msgid "Redraw map"
-msgstr "Kaardi uuestijoonistamine"
-
-msgid "_Info"
-msgstr "_Teave"
-
-msgid "Set _destination"
-msgstr "Sihtpunkti _määramine"
-
-msgid "Opens address search dialog"
-msgstr "Ava aadressiotsingu aken"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "_Peata navigeerimine"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Välju"
-
-msgid "Quit the application"
-msgstr "Rakenduse sulgemine"
-
-msgid "Show position _cursor"
-msgstr "Positsiooni_kursori näitamine"
-
-msgid "_Lock on Road"
-msgstr "_Lukusta tee peale"
-
-msgid "_Keep orientation to the North"
-msgstr "_Hoia põhjasuunda orienteerituna"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Vahetab kaardi suuna põhjasuunda või sõiduki järgi"
-
-msgid "_Roadbook"
-msgstr "_Teekonna raamat"
-
-msgid "Show/hide route description"
-msgstr "Näita/peida teekonna kirjeldust"
-
-msgid "_Autozoom"
-msgstr "_Automaatne suurendus"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Luba/keela automaatne suurenduse muutmine"
-
-msgid "_Fullscreen"
-msgstr "_Täisekraan"
-
-msgid "Data"
-msgstr "Andmed"
-
-msgid "Pharmacy"
-msgstr "Apteek"
-
-msgid "Restaurant"
-msgstr "Restoran"
-
-msgid "Restaurant. Fast food"
-msgstr "Restoran. Kiirtoit"
-
-msgid "Hotel"
-msgstr "Hotell"
-
-msgid "Car parking"
-msgstr "Autoparkla"
-
-msgid "Fuel station"
-msgstr "Bensiinijaam"
-
-msgid "Bank"
-msgstr "Pank"
-
-msgid "Hospital"
-msgstr "Haigla"
-
-msgid "Cinema"
-msgstr "Kino"
-
-msgid "Train station"
-msgstr "Raudteejaam"
-
-msgid "School"
-msgstr "Kool"
-
-msgid "Police"
-msgstr "Politsei"
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr "Takso"
-
-msgid "Shopping"
-msgstr "kauplus"
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr "POI otsing"
-
-msgid "Select a category"
-msgstr "Vali kategooria"
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr "Vali POI"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Kategooria"
-
-msgid "Direction"
-msgstr "Suund"
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr "Nimi"
-
-msgid "Visit Before"
-msgstr "Külasta enne"
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nr"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Teekond %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Teekond 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Abiinfo"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Teekonnapunkt %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Vali teekonnapunkt, mille ette salvestada"
-
-msgid "View in Browser"
-msgstr "Näita brauseris"
-
-msgid "Item type"
-msgstr "Tüüp"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Tänavad"
-
-msgid "House numbers"
-msgstr "Maja numbrid"
-
-msgid "View Attributes"
-msgstr "Näita omadusi"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Määra asukohaks (ja deaktiveeri sõiduk)"
-
-msgid "POIs"
-msgstr "Huvipunktid"
-
-msgid "View on map"
-msgstr "Näita kaardil"
-
-msgid "Remove search results from the map"
-msgstr "Eemalda otsingutulemused kaardilt"
-
-msgid "Show results on the map"
-msgstr "Näita tulemusi kaardil"
-
-msgid "Cut Bookmark"
-msgstr "Lõika järjehoidja"
-
-msgid "Copy Bookmark"
-msgstr "Kopeeri järjehoidja"
-
-msgid "Rename Bookmark"
-msgstr "Järjehoidja ümbernimetamine"
-
-msgid "Paste Bookmark"
-msgstr "Aseta järjehoidja"
-
-msgid "Delete Bookmark"
-msgstr "Kustuta järjehoidja"
-
-msgid "Delete waypoint"
-msgstr "Kustuta teekonnapunkt"
-
-msgid "Bookmarks"
-msgstr "Järjehoidjad"
-
-msgid "Bookmarks as waypoints"
-msgstr "Järjehoidjad teekonnapunktidena"
-
-msgid "Save waypoints"
-msgstr "Teekonnapunktide salvestamine"
-
-msgid "Replace with waypoints"
-msgstr "Asenda teekonnapunktidega"
-
-msgid "Delete Folder"
-msgstr "Kustuta kaust"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Lisa järjehoidja kaust"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Aseta järjehoidja"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Järjehoidja %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Lae alla %s"
-
-msgid "Map Download"
-msgstr "Kaardi allalaadimine"
-
-msgid "Active"
-msgstr "Aktiivne"
-
-msgid "Download Enabled"
-msgstr "Allalaadimine lubatud"
-
-msgid "Download completely"
-msgstr "Lae täielikult alla"
-
-msgid "Show Satellite Status"
-msgstr "Näita satelliidi andmeid"
-
-msgid " Elevation "
-msgstr " Kõrgus "
-
-msgid " Azimuth "
-msgstr " Asimuut "
-
-msgid "Show NMEA Data"
-msgstr "Näita NMEA andmeid"
-
-msgid "car"
-msgstr "Auto"
-
-msgid "bike"
-msgstr "Jalgratas"
-
-msgid "pedestrian"
-msgstr "Jalakäija"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Praegune profiil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Muuda profiili: %s"
-
-msgid "Set as active"
-msgstr "Määra aktiivseks"
-
-msgid "Show Satellite status"
-msgstr "Näita"
-
-msgid "Show NMEA data"
-msgstr "Näita NMEA andmeid"
-
-msgid "Add Bookmark"
-msgstr "Lisa järjehoidja"
-
-msgid "Rename"
-msgstr "Ãœmbernimetamine"
-
-msgid "About Navit"
-msgstr "Programmist Navit"
-
-#. Authors
-msgid "By"
-msgstr "Autorid"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Ja kogu Navit meeskond"
-
-msgid "members and contributors."
-msgstr "liikmed ja kaasautorid."
-
-msgid "Waypoints"
-msgstr "Teekonnapunktid"
-
-msgid "Enter Coordinates"
-msgstr "Sisesta koordinaadid"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Laiuskraad Pikkuskraad"
-
-msgid "Enter coordinates, for example:"
-msgstr "Sisesta koordinaadid, näiteks:"
-
-msgid "Vehicle"
-msgstr "Liiklusvahend"
-
-msgid "Rules"
-msgstr "Reeglid"
-
-msgid "Lock on road"
-msgstr "Lukusta teele"
-
-msgid "Northing"
-msgstr "Põhjasuund"
-
-msgid "Map follows Vehicle"
-msgstr "Kaart järgib sõidukit"
-
-msgid "Plan with Waypoints"
-msgstr "Plaan koos teekonnapunktidega"
-
-msgid "Maps"
-msgstr "Kaardid"
-
-msgid "Layout"
-msgstr "Paigutus"
-
-msgid "Height Profile"
-msgstr "Kõrgusprofiil"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Teekonna kirjeldus"
-
-msgid "Show Locale"
-msgstr "Lokaadi näitamine"
-
-msgid "Former Destinations"
-msgstr "Eelmised sihtpunktid"
-
-msgid "- No former destinations available -"
-msgstr "- Endiseid sihtkohti pole saadaval -"
-
-msgid "Message"
-msgstr "Sõnum"
-
-msgid "Back"
-msgstr "Tagasi"
-
-msgid "Back to map"
-msgstr "Tagasi kaardile"
-
-msgid "Main Menu"
-msgstr "Põhimenüü"
-
-msgid "House number"
-msgstr "Maja number"
-
-msgid "Next"
-msgstr "Järgmine"
-
-msgid "Prev"
-msgstr "Eeelm."
-
-msgid "Return to route!"
-msgstr "Mine tagasi teele!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Ettevaatust! Kaamera!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Palun vähenda kiirust!"
-
-msgid "partial match"
-msgstr "osaline kattuvus"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Otsing"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Linnad"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Kaardi andmed (c) OpenStreetMap kaasautorid, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "Allalaetud kaardid"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Teekond siia"
-
-msgid "Cancel"
-msgstr "Keeldu"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "Kogu planeet"
-
-msgid "Africa"
-msgstr "Aafrika"
-
-msgid "Canary Islands"
-msgstr "Kannari saared"
-
-msgid "Asia"
-msgstr "Aasia"
-
-msgid "Korea"
-msgstr "Korea"
-
-msgid "Taiwan"
-msgstr "Taivan"
-
-msgid "UAE+Other"
-msgstr "Araabia Ãœhendemiraadid + muud"
-
-msgid "Oceania"
-msgstr "Okeaania"
-
-msgid "Tasmania"
-msgstr "Tasmaania"
-
-msgid "Victoria"
-msgstr "Victoria"
-
-msgid "New South Wales"
-msgstr "Uus-Lõuna-Wales"
-
-msgid "Europe"
-msgstr "Euroopa"
-
-msgid "Western Europe"
-msgstr "Lääne Euroopa"
-
-msgid "Azores"
-msgstr "Assoorid"
-
-msgid "BeNeLux"
-msgstr "BeNeLux"
-
-msgid "Alsace"
-msgstr "Alsace"
-
-msgid "Aquitaine"
-msgstr "Akvitaania"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Basse-Normandie"
-
-msgid "Bourgogne"
-msgstr "Burgundia"
-
-msgid "Bretagne"
-msgstr "Bretagne"
-
-msgid "Centre"
-msgstr "Keskdepartemang"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardenne"
-
-msgid "Corse"
-msgstr "Korsika"
-
-msgid "Franche-Comte"
-msgstr "Franche-Comte"
-
-msgid "Haute-Normandie"
-msgstr "Haute-Normandie"
-
-msgid "Ile-de-France"
-msgstr "Ile-de-France"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc-Roussillon"
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lorraine"
-
-msgid "Midi-Pyrenees"
-msgstr "Midi-Pyrenees"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-pas-de-Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Pays-de-la-Loire"
-
-msgid "Picardie"
-msgstr "Picardie"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provence-Alpes-Cote-d-Azur"
-
-msgid "Rhone-Alpes"
-msgstr "Rhone-Alpes"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-msgid "Bayern"
-msgstr "Bayern"
-
-msgid "Mittelfranken"
-msgstr "Kesk-Frangimaa"
-
-msgid "Niederbayern"
-msgstr "Niederbayern"
-
-msgid "Oberbayern"
-msgstr "Oberbayern"
-
-msgid "Oberfranken"
-msgstr "Oberfranken"
-
-msgid "Oberpfalz"
-msgstr "Oberpfalz"
-
-msgid "Schwaben"
-msgstr "Schwaben"
-
-msgid "Unterfranken"
-msgstr "Unterfranken"
-
-msgid "Berlin"
-msgstr "Berliin"
-
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-msgid "Bremen"
-msgstr "Bremen"
-
-msgid "Hamburg"
-msgstr "Hamburg"
-
-msgid "Hessen"
-msgstr "Hessen"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Mecklenburg-Vorpommern"
-
-msgid "Niedersachsen"
-msgstr "Niedersachsen"
-
-msgid "Nordrhein-westfalen"
-msgstr "Nordrhein-westfalen"
-
-msgid "Rheinland-Pfalz"
-msgstr "Rheinland-Pfalz"
-
-msgid "Saarland"
-msgstr "Saarimaa"
-
-msgid "Sachsen-Anhalt"
-msgstr "Sachsen-Anhalt"
-
-msgid "Sachsen"
-msgstr "Sachsen"
-
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-msgid "Thueringen"
-msgstr "Thueringen"
-
-msgid "Mallorca"
-msgstr "Mallorca"
-
-msgid "Galicia"
-msgstr "Galicia"
-
-msgid "Scandinavia"
-msgstr "Skandinaavia"
-
-msgid "England"
-msgstr "Inglismaa"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "Ida Yorkshire koos põhjaga"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "Lõuna-Yorkshire"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Å otimaa"
-
-msgid "Wales"
-msgstr "Wales"
-
-msgid "Crete"
-msgstr "Kreeta"
-
-msgid "North America"
-msgstr "Põhja-Ameerika"
-
-msgid "Alaska"
-msgstr "Alaska"
-
-msgid "Hawaii"
-msgstr "Havai"
-
-msgid "USA"
-msgstr "USA"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (välja arvatud Alaska ja Hawaii)"
-
-msgid "Midwest"
-msgstr "Kesklääs"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Kirre"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Vaikne ookean"
-
-msgid "South"
-msgstr "Lõuna"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "Columbia ringkond"
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Louisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virginia"
-
-msgid "West Virginia"
-msgstr "Lääne-Virginia"
-
-msgid "West"
-msgstr "Lääs"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "California"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "New Mexico"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Washingtoni osariik"
-
-msgid "South+Middle America"
-msgstr "Lõuna+Kesk-Ameerika"
-
-msgid "Guyane Francaise"
-msgstr "Prantsuse Guajaana"
-
-msgid "downloading"
-msgstr "allalaadimine"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "valmis"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Pole piisavalt vaba ruumi!"
-
-msgid "Error downloading map!"
-msgstr "Viga kaardi allalaadimisel!"
-
-msgid "Error writing map!"
-msgstr "Viga kaardi kirjutamisel!"
-
-msgid "Map download aborted!"
-msgstr "Kaardi allaladimine katkestatud!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "ETA"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Kaardi allaladimine"
-
-msgid "Vehicle Position"
-msgstr "Sõiduki asukoht"
-
-msgid "Main menu"
-msgstr "Põhimenüü"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Näita\n"
-"Kaarti"
-
-msgid "Settings"
-msgstr "Seaded"
-
-msgid "Tools"
-msgstr "Tööriistad"
-
-msgid "Route"
-msgstr "Teekond"
-
-msgid "About"
-msgstr "Programmist"
-
-msgid "Quit"
-msgstr "Välju"
-
-msgid "Actions"
-msgstr "Tegevused"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Eelnevad\n"
-"Sihtpunktid"
-
-msgid "Coordinates"
-msgstr "Koordinaadid"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Peata\n"
-"Navigeerimine"
-
-msgid "Display"
-msgstr "Ekraan"
-
-msgid "Fullscreen"
-msgstr "Täisekraan"
-
-msgid "Window Mode"
-msgstr "Aknarežiim"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Kirjeldus"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Eemalda eelmine\n"
-"teekonnapunkt"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Eemalda järgmine\n"
-"teekonnapunkt"
-
-msgid "Satellite Status"
-msgstr "Satelliidi olek"
-
-msgid "NMEA Data"
-msgstr "NMEA Andmed"
-
-msgid "car_shortest"
-msgstr "Auto - Lühim tee"
-
-msgid "car_avoid_tolls"
-msgstr "Auto - Tollide vältimine"
-
-msgid "car_pedantic"
-msgstr "Auto - Pedantne"
-
-msgid "horse"
-msgstr "Hobune"
-
-msgid "Truck"
-msgstr "Veok"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Jah"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit käivitaud"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit töötab"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Teretulemast Navitit kasutama"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Täname, et paigaldasid programmi Navit!\n"
-"\n"
-"Alustuseks saate kaarte alla laadida menüüst \"Kaartide allalaadimine\". "
-"Märkus: kaardi fail võib olla suur (>50 MB) - WiFi ühendus on soovitatav.\n"
-"\n"
-"Kaardiandmed: (c) OpenStreetMap kaasautorid\n"
-"\n"
-"Naudi programmi kasutamist!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "Olgu"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Rohkem infot"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Suurenda"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Vähenda"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Kaartide allalaadimine"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Huvipunktide lülitamine"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Välju Navitist"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Loo varukoopia/taasta"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Kustuta see kaart?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Allalaadimine:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Viga kaardi allalaadimisel."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Kaardi allalaadimine katkestatud."
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Asukohta pole. Ava uuest pärast asukoha parandust."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Kaart sisaldab praegust asukohta"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Aadressiotsing"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Sisesta sihtkoht"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Sobita osaline aadress"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Otsimine ..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Aadressi ei leitud"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Otsingutulemuste hankimine"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Otsingutulemuste laadimine"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Tulemusi ei leitud"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Teksti pole sisestatud"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Sihtkohaks määramine:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Vali tegevus"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Palun sisesta SD kaart"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Varundamine..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Taastamine..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Varukoopia kausta loomine ebaõnnestus"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Varundamine ebaõnnestus"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Varukoopiat ei leitud"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Taastamine ebaõnnestus"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Varundamine õnnestus"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Taastamine oli edukas\n"
-"Palun taaskäivita Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Varukoopiat ei leitud"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Taastamine ebaõnnestus"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Vali varukoopia"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Varundamine"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Taasta"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "siis lahku ringteelt %1$s %2$s"
diff --git a/po/eu.po.in b/po/eu.po.in
deleted file mode 100644
index d0de74d5d..000000000
--- a/po/eu.po.in
+++ /dev/null
@@ -1,2749 +0,0 @@
-# Basque translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Inaki Saez https://launchpad.net/~inaki-saez
-# mikel https://launchpad.net/~mikel85
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: Inaki Saez <Inaki.Saez@gmail.com>\n"
-"Language-Team: Basque <eu@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: eu\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Iturburu direktoriotik ari\\n\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "'%s' '%s'ra ezartzen\\n\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zero"
-
-msgid "first"
-msgstr "lehen"
-
-msgid "second"
-msgstr "bigarren"
-
-msgid "third"
-msgstr "hirugarren"
-
-msgid "fourth"
-msgstr "laugarren"
-
-msgid "fifth"
-msgstr "boskarren"
-
-msgid "sixth"
-msgstr "seigarren"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "zerogarren irteera"
-
-msgid "first exit"
-msgstr "lehenengo irteera"
-
-msgid "second exit"
-msgstr "bigarren irteera"
-
-msgid "third exit"
-msgstr "hirugarren irteera"
-
-msgid "fourth exit"
-msgstr "laugarren irteera"
-
-msgid "fifth exit"
-msgstr "boskarren"
-
-msgid "sixth exit"
-msgstr "seigarren irteera"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metro"
-
-#, c-format
-msgid "in %d meters"
-msgstr "%d metrotan"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d,%d kilometro"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d,%d kilometrotan"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "kilometro bat"
-msgstr[1] "%d kilometro"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "kilometro batean"
-msgstr[1] "%d kilometrotan"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "maldan"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s %s %s %s kalean"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s %s%s%s-an"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s %s%s%s-an"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s %s%s%s-en"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s %s-an"
-
-msgid "When possible, please turn around"
-msgstr "Ahal duzunean eman itzulia, mesedez"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Jarraitu bidean urrengo %s-arte"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Irten errotondatik %1$s-ean %2$s"
-
-msgid "soon"
-msgstr "hurrengotan"
-
-msgid "now"
-msgstr "orain"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "eskuina"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "ezkerra"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "pizka bat "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "gogorki "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Hartu %1$s bidea %2$s-ean"
-
-#, c-format
-msgid "after %i roads"
-msgstr "%i bideen ondoren"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Biratu %1$s%2$s-ra %3$s%4$s-tan"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "dagoeneko helburura iritsi zara"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "%s helburura iritsi zara"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Irteera"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "kokalekua"
-
-msgid "Command"
-msgstr "Agindua"
-
-msgid "Length"
-msgstr "Luzera"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Denbora"
-
-msgid "Destination Length"
-msgstr "Helbururaino urruntasuna"
-
-msgid "Destination Time"
-msgstr "Helbururaino denbora"
-
-msgid "Roadbook"
-msgstr "Gida"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Kolekua finkatu"
-
-msgid "Set as destination"
-msgstr "Heburuz hautatu"
-
-msgid "Add as bookmark"
-msgstr "Nahikotzat gehitu"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Puntu 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Pantaila koordenatuak: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Arabiar Emirerri Batuak"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua eta Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Angila"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Herbeheren Antillak"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antartika"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikar Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland uharteak"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia-Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgika"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "San Bartolome"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Bruneiko Sultanerria"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvet Uhartea"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorrusia"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Cocos (Keeling) Uharteak"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongoko Errepublika Demokratikoa"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Ertafrikar Errepublika"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Suitza"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Bolikosta"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cook uharteak"
-
-#. 152
-msgid "Chile"
-msgstr "Txile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Txina"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolonbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cabo Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Christmas Uhartea"
-
-#. 196
-msgid "Cyprus"
-msgstr "Txipre"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Txekiar Errepublika"
-
-#. 276
-msgid "Germany"
-msgstr "Alemania"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danimarka"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikar Errepublika"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egipto"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Mendebaldeko Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Espainia"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finlandia"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Malvinak Uharteak (Falkland Uharteak)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronesiako Estatu Federatuak"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Faroe Uharteak"
-
-#. 250
-msgid "France"
-msgstr "Frantzia"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Erresuma Batua"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guayana Frantsesa"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenlandia"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Ginea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekuatore Ginea"
-
-#. 300
-msgid "Greece"
-msgstr "Grezia"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Hegoaldeko Georgia eta Hegoaldeko Sandwich Uharteak"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Ginea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guayana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard Uhartea eta McDonald Uharteak"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroazia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungaria"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Man Uhartea"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Indiako Ozeanoko Britainiar Lurraldea"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Errepublika Islamikoa"
-
-#. 352
-msgid "Iceland"
-msgstr "Islandia"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordania"
-
-#. 392
-msgid "Japan"
-msgstr "Japonia"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgizistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kanbodia"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komoroak"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts eta Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea, Herri-errepublika Demokratikoa (Ipar Korea)"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea, Errepublika (Hego Korea)"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kaiman Uharteak"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos Herri Errepublika Demokratikoa"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libano"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Santa Luzia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lituania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxenburgo"
-
-#. 428
-msgid "Latvia"
-msgstr "Letonia"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Maroko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavia, errepublika"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (Frantziar zatia)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshall Uharteak"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Mazedonia, Antzineko Jugoslabiar Errepublika"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Makao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Ipar Mariana Uharteak"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinika"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Maurizio"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldibak"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malasia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambike"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Kaledonia Berria"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk Uhartea"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Herbehereak"
-
-#. 578
-msgid "Norway"
-msgstr "Norvegia"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Zelanda Berria"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinesia Frantsesa"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Ginea Berria"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipinak"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polonia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre eta Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestinar Lurralde Okupatuak"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguai"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Errumania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Errusiako Federazioa"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi Arabia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Solomon Uharteak"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelleak"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Suedia"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Santa Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Eslovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard eta Jan Mayen Uharteak"
-
-#. 703
-msgid "Slovakia"
-msgstr "Eslovakia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leona"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome eta Printze"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Siriako Arabiar Errepublika"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swazilandia"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turk eta Caico uharteak"
-
-#. 148
-msgid "Chad"
-msgstr "Txad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Hegoaldeko Lurralde Frantsesak"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tailandia"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Ekialdeko Timor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkia"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad eta Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, Txinako Errepublika"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzaniako Errepublika Batua"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Estatu Batuetako Itsas Bestaldeko Uharte Txikiak"
-
-#. 840
-msgid "United States"
-msgstr "Estatu Batuak"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguai"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikanoko hiria"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent eta Grenadinak"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Birgina Uharteak, Britainarrak"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Birjina Uharteak, A.E.B."
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis eta Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Hegoafrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Ezezaguna, gehitu -en_dago etiketak hiri hauentzat"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Mapako puntua"
-
-msgid "Car"
-msgstr "Berebila"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Herrialdea"
-
-msgid "Postal"
-msgstr "Posta"
-
-msgid "Town"
-msgstr "Herria"
-
-msgid "District"
-msgstr "Barrutia"
-
-msgid "Street"
-msgstr "Kalea"
-
-msgid "Number"
-msgstr "Zenbakia"
-
-msgid "Enter Destination"
-msgstr "Sartu helburua"
-
-msgid "Zip Code"
-msgstr "Posta-kodea"
-
-msgid "City"
-msgstr "Hiria"
-
-msgid "District/Township"
-msgstr "Auzoa"
-
-msgid "Map"
-msgstr "Mapa"
-
-msgid "Bookmark"
-msgstr "Gogokoa"
-
-msgid "Destination"
-msgstr "Helburua"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Bistaratzea"
-
-msgid "_Route"
-msgstr "Ibilbidea"
-
-msgid "_Former Destinations"
-msgstr "Aurreko Helburuak"
-
-msgid "_Bookmarks"
-msgstr "Gogokoak"
-
-msgid "_Map"
-msgstr "Mapa"
-
-msgid "_Layout"
-msgstr "Antolaketa"
-
-msgid "_Projection"
-msgstr "Proiekzioa"
-
-msgid "_Vehicle"
-msgstr "Ibilgailua"
-
-msgid "Zoom_Out"
-msgstr "Hurrundu"
-
-msgid "Decrease zoom level"
-msgstr "Txikitu zooma"
-
-msgid "Zoom_In"
-msgstr "Hurbildu"
-
-msgid "Increase zoom level"
-msgstr "Handitu zooma"
-
-msgid "_Recalculate"
-msgstr "Birkalkulatu"
-
-msgid "Redraw map"
-msgstr "Mapa Birmargotu"
-
-msgid "_Info"
-msgstr "Datuak"
-
-msgid "Set _destination"
-msgstr "Helburua ezarri"
-
-msgid "Opens address search dialog"
-msgstr "Ireki helbidea bilatzeko lehioa"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Nabigazioa Gelditu"
-
-msgid "Test"
-msgstr "Saiatu"
-
-msgid "_Quit"
-msgstr "_Irten"
-
-msgid "Quit the application"
-msgstr "Irten programatik"
-
-msgid "Show position _cursor"
-msgstr "Erakutsi kurtsore kokalekua"
-
-msgid "_Lock on Road"
-msgstr "Bidean oztopoa"
-
-msgid "_Keep orientation to the North"
-msgstr "Iparralderantz begira"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Maparen norabidea iparralde edo berebilaren artean aldatu"
-
-msgid "_Roadbook"
-msgstr "Gida"
-
-msgid "Show/hide route description"
-msgstr "Erakutsi/ezkutatu hibilbidearen berri"
-
-msgid "_Autozoom"
-msgstr "Autohanditu"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Zoom automatikoa onartu/debekatu"
-
-msgid "_Fullscreen"
-msgstr "Pantaila osoa"
-
-msgid "Data"
-msgstr "Datuak"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "I"
-
-msgid "NE"
-msgstr "IE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "HE"
-
-msgid "S"
-msgstr "H"
-
-msgid "SW"
-msgstr "HM"
-
-msgid "W"
-msgstr "M"
-
-msgid "NW"
-msgstr "IM"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ez"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Ibilide %4.0fkm %02d:%02d EDI"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Ibilbide 0000km 0+00:00 EDI"
-
-msgid "Help"
-msgstr "Laguntza"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Ikusi nabigatzailean"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Kaleak"
-
-msgid "House numbers"
-msgstr "Etxebizitza zenbakiak"
-
-msgid "View Attributes"
-msgstr "Atributoak erakutsi"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "PIak"
-
-msgid "View on map"
-msgstr "Mapan Ikusi"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Moztu Gogokoa"
-
-msgid "Copy Bookmark"
-msgstr "Kopiatu Gogokoa"
-
-msgid "Rename Bookmark"
-msgstr "Gogokoa berrizendatu"
-
-msgid "Paste Bookmark"
-msgstr "Itsatsi Gogokoa"
-
-msgid "Delete Bookmark"
-msgstr "Ezabatu Gogokoa"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Gogokoak"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Gehitu Gogokoen direktorioa"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Itsatsi gogokoa"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "%s marka"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Sateliteen egoera erakutsi"
-
-msgid " Elevation "
-msgstr " Garaiera "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "NMEA datuak erakutsi"
-
-msgid "car"
-msgstr "berebila"
-
-msgid "bike"
-msgstr "bizikleta"
-
-msgid "pedestrian"
-msgstr "oinezkoa"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Oraingo profila: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Profila aldatu: %s-ra"
-
-msgid "Set as active"
-msgstr "Lanean ezarri"
-
-msgid "Show Satellite status"
-msgstr "Sateliteen egoera erakutsi"
-
-msgid "Show NMEA data"
-msgstr "NMEA datuak erakutsi"
-
-msgid "Add Bookmark"
-msgstr "Gogokoa gehitu"
-
-msgid "Rename"
-msgstr "Izena aldatu"
-
-msgid "About Navit"
-msgstr "Naviti buruz"
-
-#. Authors
-msgid "By"
-msgstr "Egileak"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Eta Navit talde osoa"
-
-msgid "members and contributors."
-msgstr "partaide eta laguntzaileak."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Ibilgailua"
-
-msgid "Rules"
-msgstr "Arauak"
-
-msgid "Lock on road"
-msgstr "Bidean oztopoa"
-
-msgid "Northing"
-msgstr "Iparrerantz"
-
-msgid "Map follows Vehicle"
-msgstr "Mapak ibilgailua jarraitzen du"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Mapak"
-
-msgid "Layout"
-msgstr "Antolaketa"
-
-msgid "Height Profile"
-msgstr "Garaiera ikusi"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Ibilbidearen nondik-norakoa"
-
-msgid "Show Locale"
-msgstr "Locale erakutsi"
-
-msgid "Former Destinations"
-msgstr "Aurreko Helburuak"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Mezua"
-
-msgid "Back"
-msgstr "Atzera"
-
-msgid "Back to map"
-msgstr "Mapara itzuli"
-
-msgid "Main Menu"
-msgstr "Menu nagusia"
-
-msgid "House number"
-msgstr "Etxebizitza zenbakia"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Berebilaren kokalekua"
-
-msgid "Main menu"
-msgstr "Menu nagusia"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Mapa\n"
-"Erakutsi"
-
-msgid "Settings"
-msgstr "Ezarpenak"
-
-msgid "Tools"
-msgstr "Tresnak"
-
-msgid "Route"
-msgstr "Ibilbidea"
-
-msgid "About"
-msgstr "Honi buruz"
-
-msgid "Quit"
-msgstr "Irten"
-
-msgid "Actions"
-msgstr "Ekintzak"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Nabigazioa\n"
-"Gelditu"
-
-msgid "Display"
-msgstr "Bistaratzea"
-
-msgid "Fullscreen"
-msgstr "Pantaila osoa"
-
-msgid "Window Mode"
-msgstr "Lehio modua"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Zehazketa"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "zaldia"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "gero, irten errotondatik %1$s-ean %2$s"
diff --git a/po/fa.po.in b/po/fa.po.in
deleted file mode 100644
index 96767686f..000000000
--- a/po/fa.po.in
+++ /dev/null
@@ -1,2741 +0,0 @@
-# Persian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# reza ghasemirad https://launchpad.net/~regh778
-# the_cephalex https://launchpad.net/~ali-rashidi
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Persian <fa@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: fa\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr "نخست"
-
-msgid "second"
-msgstr "دوم"
-
-msgid "third"
-msgstr "سوم"
-
-msgid "fourth"
-msgstr "چهارم"
-
-msgid "fifth"
-msgstr "پنجم"
-
-msgid "sixth"
-msgstr "ششم"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "Ù‡Ùتم"
-
-msgid "first exit"
-msgstr "نخستین راه"
-
-msgid "second exit"
-msgstr "دومین راه"
-
-msgid "third exit"
-msgstr "سومین راه"
-
-msgid "fourth exit"
-msgstr "چهارمین راه"
-
-msgid "fifth exit"
-msgstr "پنحمین راه"
-
-msgid "sixth exit"
-msgstr "ششمین راه"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr "%d Ùوت"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d متر"
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "به سوی شیب"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr "هنگامیکه توانستید برگردید."
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr "به زودی به ÙÙ„Ú©Ù‡ بروید"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "به زودی"
-
-msgid "now"
-msgstr "اکنون"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "راست"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "Ú†Ù¾"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "به آسانی "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "به سختی "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "سپس شما به خواستگاه خود رسیده اید."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "بیرون"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "جایگاه"
-
-msgid "Command"
-msgstr "دستور"
-
-msgid "Length"
-msgstr "درازا"
-
-msgid "km"
-msgstr "کیلومتر"
-
-msgid "m"
-msgstr "متر"
-
-msgid "Time"
-msgstr "زمان"
-
-msgid "Destination Length"
-msgstr "درازای خواستگاه"
-
-msgid "Destination Time"
-msgstr "زمان خواستگاه"
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "تنظیم جایگاه"
-
-msgid "Set as destination"
-msgstr "تنظیم برای خواستگاه"
-
-msgid "Add as bookmark"
-msgstr "اÙزودن به Ùهرست"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "امارات متحده‌ی عربی"
-
-#. 004
-msgid "Afghanistan"
-msgstr "اÙغانستان"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "اَنتیگا و باربودا"
-
-#. 660
-msgid "Anguilla"
-msgstr "آنگولا"
-
-#. 008
-msgid "Albania"
-msgstr "آلبانی"
-
-#. 051
-msgid "Armenia"
-msgstr "ارمنستان"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "آنتیل هلند"
-
-#. 024
-msgid "Angola"
-msgstr "آنگولا"
-
-#. 010
-msgid "Antarctica"
-msgstr "آنتارکتیکا"
-
-#. 032
-msgid "Argentina"
-msgstr "آرژانتین"
-
-#. 016
-msgid "American Samoa"
-msgstr "سومای امریکا"
-
-#. 040
-msgid "Austria"
-msgstr "اتریش"
-
-#. 036
-msgid "Australia"
-msgstr "استرالیا"
-
-#. 533
-msgid "Aruba"
-msgstr "آروبا"
-
-#. 248
-msgid "Aland Islands"
-msgstr "جزایر الند"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "آذربایجان"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "بوسنی و هرزگوین"
-
-#. 052
-msgid "Barbados"
-msgstr "بارابادوس"
-
-#. 050
-msgid "Bangladesh"
-msgstr "بنگلادش"
-
-#. 056
-msgid "Belgium"
-msgstr "بلژیک"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "بورکیناÙاسو"
-
-#. 100
-msgid "Bulgaria"
-msgstr "بلغارستان"
-
-#. 048
-msgid "Bahrain"
-msgstr "بحرین"
-
-#. 108
-msgid "Burundi"
-msgstr "بوروندی"
-
-#. 204
-msgid "Benin"
-msgstr "بنین"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "سن بارتلمی"
-
-#. 060
-msgid "Bermuda"
-msgstr "برمودا"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "برونئی دارالسلام"
-
-#. 068
-msgid "Bolivia"
-msgstr "بولیوی"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "برزیل"
-
-#. 044
-msgid "Bahamas"
-msgstr "باهاماس"
-
-#. 064
-msgid "Bhutan"
-msgstr "بوتان"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "جزیره‌ی بووت"
-
-#. 072
-msgid "Botswana"
-msgstr "بوتسوانا"
-
-#. 112
-msgid "Belarus"
-msgstr "بلاروس"
-
-#. 084
-msgid "Belize"
-msgstr "بلیز"
-
-#. 124
-msgid "Canada"
-msgstr "کانادا"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "جزایر کوکوس"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "کنگو، جمهوری دموکراتیک"
-
-#. 140
-msgid "Central African Republic"
-msgstr "جمهوری اÙریقای مرکزی"
-
-#. 178
-msgid "Congo"
-msgstr "کونگو"
-
-#. 756
-msgid "Switzerland"
-msgstr "سوئیس"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "ساحل عاج"
-
-#. 184
-msgid "Cook Islands"
-msgstr "جزایر کوک"
-
-#. 152
-msgid "Chile"
-msgstr "شیلی"
-
-#. 120
-msgid "Cameroon"
-msgstr "کامرون"
-
-#. 156
-msgid "China"
-msgstr "چین"
-
-#. 170
-msgid "Colombia"
-msgstr "کلمبیا"
-
-#. 188
-msgid "Costa Rica"
-msgstr "کاستاریکا"
-
-#. 192
-msgid "Cuba"
-msgstr "کوبا"
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr "قبرس"
-
-#. 203
-msgid "Czech Republic"
-msgstr "جمهوری چک"
-
-#. 276
-msgid "Germany"
-msgstr "آلمان"
-
-#. 262
-msgid "Djibouti"
-msgstr "جیبوتی"
-
-#. 208
-msgid "Denmark"
-msgstr "دانمارک"
-
-#. 212
-msgid "Dominica"
-msgstr "دومینیکا"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "جمهوری دومنیکن"
-
-#. 012
-msgid "Algeria"
-msgstr "الجزایر"
-
-#. 218
-msgid "Ecuador"
-msgstr "اکوادور"
-
-#. 233
-msgid "Estonia"
-msgstr "استونی"
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/fi.po.in b/po/fi.po.in
deleted file mode 100644
index 5662696a4..000000000
--- a/po/fi.po.in
+++ /dev/null
@@ -1,2755 +0,0 @@
-# Finnish translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Eero https://launchpad.net/~eero+launchpad
-# Elias Julkunen https://launchpad.net/~eliasj
-# Jiri Grönroos https://launchpad.net/~jiri-gronroos
-# Mikko Virkkilä https://launchpad.net/~virkkila
-# Ossi Berg https://launchpad.net/~fso-polonez
-# Roadrunner IN https://launchpad.net/~online
-# Timo Jyrinki https://launchpad.net/~timo-jyrinki
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: Timo Jyrinki <Unknown>\n"
-"Language-Team: Ossi Berg <o.berg@mail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: fi\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Ajetaan lähdehakemistosta\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "asetetaan '%s' arvoon '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nollas"
-
-msgid "first"
-msgstr "ensimmäinen"
-
-msgid "second"
-msgstr "toinen"
-
-msgid "third"
-msgstr "kolmas"
-
-msgid "fourth"
-msgstr "neljäs"
-
-msgid "fifth"
-msgstr "viides"
-
-msgid "sixth"
-msgstr "kuudes"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nollannesta liittymästä"
-
-msgid "first exit"
-msgstr "ensimmäisestä liittymästä"
-
-msgid "second exit"
-msgstr "toisesta liittymästä"
-
-msgid "third exit"
-msgstr "kolmannesta liittymästä"
-
-msgid "fourth exit"
-msgstr "neljännestä liittymästä"
-
-msgid "fifth exit"
-msgstr "viidennestä liittymästä"
-
-msgid "sixth exit"
-msgstr "kuudennesta liittymästä"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metriä"
-
-#, c-format
-msgid "in %d meters"
-msgstr "%d metrin päästä"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometriä"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d,%d kilometrin päästä"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "yksi kilometri"
-msgstr[1] "%d kilometriä"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "Yhden kilometrin päästä"
-msgstr[1] "%d kilometrin päästä"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "rampille"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%skadulle %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%skadulle %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%skadulle %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%skadulle %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%stielle %s"
-
-msgid "When possible, please turn around"
-msgstr "Kun mahdollista, tee u-käännös"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Seuraa tätä tietä %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Liity liikenneympyrään pian"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "pian"
-
-msgid "now"
-msgstr "nyt"
-
-msgid "then"
-msgstr "sitten"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "oikealle"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "vasemmalle"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "loivasti "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "jyrkästi "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Valitse %1$s tie suuntaan %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "%i tien jälkeen"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Käänny %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "tee sitten u-käännös"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Tee u-käännös %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "tee sitten u-käännös"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Tee u-käännös %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "sitten olet perillä."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Olet saavuttanut kohteesi %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Poistumistie"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Sijainti"
-
-msgid "Command"
-msgstr "Komento"
-
-msgid "Length"
-msgstr "Pituus"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Aika"
-
-msgid "Destination Length"
-msgstr "Kohde"
-
-msgid "Destination Time"
-msgstr "Kohde"
-
-msgid "Roadbook"
-msgstr "Ohjeistaja"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Aseta sijainniksi"
-
-msgid "Set as destination"
-msgstr "Aseta kohteeksi"
-
-msgid "Add as bookmark"
-msgstr "Lisää kirjanmerkiksi"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Piste 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Ruutu %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Yhdistyneet Arabiemiirikunnat"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua ja Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Alankomaiden Antillit"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Etelänapamanner"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentiina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikan Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Itävalta"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ahvenanmaa"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaizan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia ja Hertsegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgia"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasilia"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamasaaret"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvet'n saari"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Valko-Venäjä"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kookossaaret (Keeling-saaret)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongon tasavalta"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Keski-Afrikan tasavalta"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Sveitsi"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Norsunluurannikko"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cook-saaret"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Kiina"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kap Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Joulusaari"
-
-#. 196
-msgid "Cyprus"
-msgstr "Kypros"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Tsekin tasavalta"
-
-#. 276
-msgid "Germany"
-msgstr "Saksa"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Tanska"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikaaninen tasavalta"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Viro"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypti"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Länsi-Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Espanja"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Suomi"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidzi"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland-saaret (Malvinas-saaret)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronesian liittovaltio"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Färsaaret"
-
-#. 250
-msgid "France"
-msgstr "Ranska"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Iso-Britannia"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Ranskan Guinea"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grönlanti"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Päiväntasaajan Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Kreikka"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Etelä-Georgia ja Eteläiset Sandwichsaaret"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heardin saari ja McDonaldin saaret"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Unkari"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanti"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Mansaari"
-
-#. 356
-msgid "India"
-msgstr "Intia"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Brittiläinen Intian valtameren alue"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iranin islamilainen tasavalta"
-
-#. 352
-msgid "Iceland"
-msgstr "Islanti"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordania"
-
-#. 392
-msgid "Japan"
-msgstr "Japani"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodza"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komorit"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts ja Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Pohjois-Korea"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Etelä-Korea"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Caymansaaret"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laosin demokraattinen tasavalta"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Lichtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Liettua"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvia"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Marokko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint-Martin (Ranskan osa)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshallinsaaret"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Entinen Jugoslavian tasavalta Makedonia"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Pohjois-Mariaanit"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Malediivit"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Meksiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malesia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mosambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Uusi-Kaledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolkinsaaret"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Alankomaat"
-
-#. 578
-msgid "Norway"
-msgstr "Norja"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Uusi-Seelanti"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Ranskan Polynesia"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Uusi-Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filippiinit"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Puola"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre ja Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestiinalaisalueet, miehitetyt"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugali"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Romania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Venäjä"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi-Arabia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Salomonsaaret"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychellit"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Ruotsi"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Saint Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard ja Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome ja Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syyrian arabitasavalta"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swazimaa"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks- ja Caicossaaret"
-
-#. 148
-msgid "Chad"
-msgstr "TÅ¡ad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Ranskan eteläiset alueet"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thaimaa"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadzikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Itä-Timor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkki"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad ja Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, Kiinan maakunta"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tansania, yhdistynyt tasavalta"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Yhdysvaltojen Tyynenmeren erillissaaret"
-
-#. 840
-msgid "United States"
-msgstr "Yhdysvallat"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikaanivaltio (Pyhä Istuin)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent ja Grenadiinit"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Neitsytsaaret, brittiläiset"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Neitsytsaaret, Yhdysvaltojen"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis- ja Futunasaaret"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Etelä-Afrikka"
-
-#. 894
-msgid "Zambia"
-msgstr "Sambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Tuntematon, lisätä is_in koodit näistä kaupungeista"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Karttapiste"
-
-msgid "Car"
-msgstr "Auto"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Maa"
-
-#
-msgid "Postal"
-msgstr "Postinumero"
-
-msgid "Town"
-msgstr "Paikkakunta"
-
-#
-msgid "District"
-msgstr "Alue"
-
-msgid "Street"
-msgstr "Katu"
-
-msgid "Number"
-msgstr "Numero"
-
-#
-msgid "Enter Destination"
-msgstr "Anna kohde"
-
-msgid "Zip Code"
-msgstr "Postinumero"
-
-msgid "City"
-msgstr "Kaupunki"
-
-msgid "District/Township"
-msgstr "Maakunta"
-
-msgid "Map"
-msgstr "Kartta"
-
-msgid "Bookmark"
-msgstr "Kirjanmerkki"
-
-msgid "Destination"
-msgstr "Kohde"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Näyttö"
-
-msgid "_Route"
-msgstr "Reitti"
-
-msgid "_Former Destinations"
-msgstr "Aiemmat kohteet"
-
-msgid "_Bookmarks"
-msgstr "Kirjanmerkit"
-
-msgid "_Map"
-msgstr "Kartta"
-
-msgid "_Layout"
-msgstr "Pohja"
-
-msgid "_Projection"
-msgstr "Projektio"
-
-msgid "_Vehicle"
-msgstr "Kulkuneuvo"
-
-msgid "Zoom_Out"
-msgstr "Loitonna"
-
-msgid "Decrease zoom level"
-msgstr "Loitonna"
-
-msgid "Zoom_In"
-msgstr "Lähennä"
-
-msgid "Increase zoom level"
-msgstr "Lähennä"
-
-msgid "_Recalculate"
-msgstr "Laske uudelleen"
-
-msgid "Redraw map"
-msgstr "Piirrä kartta uudelleen"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Avaa osoitehaun ikkunan"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Lopeta navigointi"
-
-msgid "Test"
-msgstr "Testi"
-
-msgid "_Quit"
-msgstr "Sulje"
-
-msgid "Quit the application"
-msgstr "Lopeta sovellus"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Lukitse tiehen"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Vaihtaa kartan asentoa pohjoisen ja kulkuvälineen suunnan välillä"
-
-msgid "_Roadbook"
-msgstr "Ohjeistaja"
-
-msgid "Show/hide route description"
-msgstr "Näytä/piillota reitin kuvaus"
-
-msgid "_Autozoom"
-msgstr "Autom. suurennus"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-"Ota automaattinen lähennystason muuttaminen käyttöön tai pois käytöstä"
-
-msgid "_Fullscreen"
-msgstr "Koko ruutu"
-
-msgid "Data"
-msgstr "Tieto"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ei"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Reitti %4.0fkm, arvioitu aika %02d:%02d"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Reitti 0000km, arvioitu aika 0+00:00"
-
-msgid "Help"
-msgstr "Ohje"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Näytä selaimessa"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Kadut"
-
-msgid "House numbers"
-msgstr "Talojen numerot"
-
-msgid "View Attributes"
-msgstr "Näytä ominaisuudet"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "POIt"
-
-msgid "View on map"
-msgstr "Näytä kartalla"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Leikkaa kirjanmerkki"
-
-msgid "Copy Bookmark"
-msgstr "Kopioi kirjanmerkki"
-
-msgid "Rename Bookmark"
-msgstr "Nimeä kirjanmerkki uudelleen"
-
-msgid "Paste Bookmark"
-msgstr "Liitä kirjanmerkki"
-
-msgid "Delete Bookmark"
-msgstr "Poista kirjanmerkki"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Kirjanmerkit"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Lisää kirjanmerkkikansio"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Liitä kirjanmerkki"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Tee kirjanmerkki %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Näytä satelliittien tila"
-
-msgid " Elevation "
-msgstr " Korkeus "
-
-msgid " Azimuth "
-msgstr " Atsimuutti "
-
-msgid "Show NMEA Data"
-msgstr "Näytä NMEA-tiedot"
-
-msgid "car"
-msgstr "auto"
-
-msgid "bike"
-msgstr "Pyörän"
-
-msgid "pedestrian"
-msgstr "jalankulkijoiden"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Nykyinen profiili: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Muuta profiilin: %s"
-
-msgid "Set as active"
-msgstr "Aseta aktiiviseksi"
-
-msgid "Show Satellite status"
-msgstr "Näytä satelliittien tila"
-
-msgid "Show NMEA data"
-msgstr "Näytä NMEA-tiedot"
-
-msgid "Add Bookmark"
-msgstr "Lisää kirjanmerkki"
-
-msgid "Rename"
-msgstr "Nimeä uudelleen"
-
-msgid "About Navit"
-msgstr "Tietoja - Navit"
-
-#. Authors
-msgid "By"
-msgstr "Tekijä"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "sekä koko Navit-tiimi"
-
-msgid "members and contributors."
-msgstr "jäsenet ja osallistujat."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Kulkuneuvo"
-
-msgid "Rules"
-msgstr "Säännöt"
-
-msgid "Lock on road"
-msgstr "Lukitse tiehen"
-
-msgid "Northing"
-msgstr "Pohjoinen ylhäällä"
-
-msgid "Map follows Vehicle"
-msgstr "Kartta seuraa ajoneuvoa"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Kartat"
-
-msgid "Layout"
-msgstr "Pohja"
-
-msgid "Height Profile"
-msgstr "Korkeusprofiili"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Reitin kuvaus"
-
-msgid "Show Locale"
-msgstr "Näytä maa-asetusto"
-
-msgid "Former Destinations"
-msgstr "Aiemmat kohteet"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Viesti"
-
-msgid "Back"
-msgstr "Takaisin"
-
-msgid "Back to map"
-msgstr "Takaisin karttaan"
-
-msgid "Main Menu"
-msgstr "Päävalikko"
-
-msgid "House number"
-msgstr "Talon numero"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Ajoneuvon sijainti"
-
-msgid "Main menu"
-msgstr "Päävalikko"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Näytä\n"
-"kartta"
-
-msgid "Settings"
-msgstr "Asetukset"
-
-msgid "Tools"
-msgstr "Työkalut"
-
-msgid "Route"
-msgstr "Reitti"
-
-msgid "About"
-msgstr "Tietoja"
-
-msgid "Quit"
-msgstr "Lopeta"
-
-msgid "Actions"
-msgstr "Toiminnat"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Lopeta\n"
-"Suunnistus"
-
-msgid "Display"
-msgstr "Näyttö"
-
-msgid "Fullscreen"
-msgstr "Koko ruutu"
-
-msgid "Window Mode"
-msgstr "Ikkunatila"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Kuvaus"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "hevonen"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/fil.po.in b/po/fil.po.in
deleted file mode 100644
index a882e9f6d..000000000
--- a/po/fil.po.in
+++ /dev/null
@@ -1,2743 +0,0 @@
-# Filipino translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# chito https://launchpad.net/~cnuarin
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: chito <cnuarin@gmail.com>\n"
-"Language-Team: Filipino <fil@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"Language: fil\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr ""
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr "pang-apat"
-
-msgid "fifth"
-msgstr "pang-lima"
-
-msgid "sixth"
-msgstr "pang-anim"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "unang labasan"
-
-msgid "second exit"
-msgstr "pangalawang labasan"
-
-msgid "third exit"
-msgstr "pangatlong labasan"
-
-msgid "fourth exit"
-msgstr "pang-apat na labasan"
-
-msgid "fifth exit"
-msgstr "panglimang labasan"
-
-msgid "sixth exit"
-msgstr "pang-anim na labasan"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometro"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d.%d kilometro"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] "%d kilometro"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "sa loob ng isang kilometro"
-msgstr[1] "sa loob ng %d kilometro"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s sa kalyeng %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s sa kalyeng %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s sa kalyeng %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s sa kalyeng %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr "Kung maari ay bumalik"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Sundan ang kalye sa susunod na %s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Lisanin ang rotonda sa may %1$s %2$s"
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr "ngayon na"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "kanan"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "Kaliwa"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "ng marahan "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Labasan"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "pagkatapos ay lumabas sa rotonda sa may %1$s %2$s"
diff --git a/po/fo.po.in b/po/fo.po.in
deleted file mode 100644
index f713a82aa..000000000
--- a/po/fo.po.in
+++ /dev/null
@@ -1,2745 +0,0 @@
-# Faroese translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Cyberish https://launchpad.net/~cyberish
-# Gunleif Joensen https://launchpad.net/~gunleif
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: Cyberish <kajsten@gmail.com>\n"
-"Language-Team: Faroese <fo@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: fo\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Koyrur frá keldumappuni\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "setur '%s' til '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nullta"
-
-msgid "first"
-msgstr "fyrsti"
-
-msgid "second"
-msgstr "annar"
-
-msgid "third"
-msgstr "triði"
-
-msgid "fourth"
-msgstr "fjórði"
-
-msgid "fifth"
-msgstr "fimti"
-
-msgid "sixth"
-msgstr "sætti"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "sjeyndi"
-
-msgid "first exit"
-msgstr "fyrsta avkoyring"
-
-msgid "second exit"
-msgstr "onnur avkoyring"
-
-msgid "third exit"
-msgstr "triða avkoyring"
-
-msgid "fourth exit"
-msgstr "fjórða avkoyring"
-
-msgid "fifth exit"
-msgstr "fimta avkoyring"
-
-msgid "sixth exit"
-msgstr "sætta avkoyring"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metrar"
-
-#, c-format
-msgid "in %d meters"
-msgstr "um %d metrar"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometrar"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "um %d.%d kilometrar"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "ein kilometur"
-msgstr[1] "%d kilometrar"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "um ein kilometur"
-msgstr[1] "um %d kilometrar"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "uppá rampuna"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sinná gøtuna %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sinná %s%s%sur"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sinná %s%s%sa"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sinná %s%s%si"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sinná %s"
-
-msgid "When possible, please turn around"
-msgstr "Vend um skótast tilber"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "fylg vegnum tær næstu %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Um lítið bil verður koyrt inní rundkoyringina"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Far so út úr rundkoyring við %1$s %2$s"
-
-msgid "soon"
-msgstr "skjótt"
-
-msgid "now"
-msgstr "nú"
-
-msgid "then"
-msgstr "so"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "Høgra"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "Vinstra"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "lætt "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "knapt "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "tak tann %1$s vegin til %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "eftir %i vegir"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "dreya %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "vend so um"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Vend um %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "vend so um"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Vend um %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "tá hevur tú nátt tínum ferðamáli"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Tú hevur nátt tínum ferðamáli %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Avkoyring"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Stað"
-
-msgid "Command"
-msgstr "Boð"
-
-msgid "Length"
-msgstr "Longd"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tíð"
-
-msgid "Destination Length"
-msgstr "Longd til ferðamál"
-
-msgid "Destination Time"
-msgstr "Tíð til málið"
-
-msgid "Roadbook"
-msgstr "Vegbók"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Set sum stað"
-
-msgid "Set as destination"
-msgstr "Set sum ferðamál"
-
-msgid "Add as bookmark"
-msgstr "legg til sum bókamerkið"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "SKíggja krosspunkt : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Sameindu Arabisku Emuraturnar"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua og Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Netherlands Antilles"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktis"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikanskt Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Eysturríki"
-
-#. 036
-msgid "Australia"
-msgstr "Avstralia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ãland"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Aserbajdsjan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnien-Hercegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesj"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgia"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Barain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasilia"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamasoyggjar"
-
-#. 064
-msgid "Bhutan"
-msgstr "Butan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvet oyggjin"
-
-#. 072
-msgid "Botswana"
-msgstr "Botsvana"
-
-#. 112
-msgid "Belarus"
-msgstr "Hvítarussland"
-
-#. 084
-msgid "Belize"
-msgstr "Belis"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosøyggjarnar"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, tann demokratiska lýðveldið"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Miðafrikalýðveldið"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Sveis"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Fílabeinsstrondin"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cookoyggjarnar"
-
-#. 152
-msgid "Chile"
-msgstr "Kili"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Kina"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kosta Rika"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Grønhøvdaoyggjarnar"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Jólaoyggjin"
-
-#. 196
-msgid "Cyprus"
-msgstr "Kýpros"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Kekkia"
-
-#. 276
-msgid "Germany"
-msgstr "Týskland"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danmørk"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Domingo lýðveldið"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estland"
-
-#. 818
-msgid "Egypt"
-msgstr "Egyptaland"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Vestur Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spania"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finnland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandsoyggjarnar"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronesia, tær sameindu statirnir av"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Føroyar"
-
-#. 250
-msgid "France"
-msgstr "Frakland"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Stórabretland"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Fransk Guinea"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grønland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekvator Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Grikkaland"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Suður Georgia og Suður Sandwich oyggjarnar"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Gujana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard- og McDonald-oyggjarnar"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Ungarn"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Ãrland"
-
-#. 376
-msgid "Israel"
-msgstr "Ãsrael"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isle of Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Bretskt-indiska sjóøki"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Islamiska lýveldi av"
-
-#. 352
-msgid "Iceland"
-msgstr "Ãsland"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jameika"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordan"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenja"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgisia"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komorooyggjarnar"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts og Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea, Tað Demokratiska Folkalýveldi"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea, Lýveldi"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuvait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Cayman oyggjarnar"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kasakstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lusia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liktenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litava"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luksemborg"
-
-#. 428
-msgid "Latvia"
-msgstr "Lettland"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Marokko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldovia, Lýveldi"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (Franski parturin)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshalloyggjarnar"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedonia, tað fyrrverandi Jugoslaviska Lýveldi"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar (Burma)"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Norður Mariana oyggjarnar"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Móritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Móritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldivuoyggjarnar"
-
-#. 454
-msgid "Malawi"
-msgstr "Malavi"
-
-#. 484
-msgid "Mexico"
-msgstr "Meksiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Maleisia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mosambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Ný Kaledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk oyggjin"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Niðurlond"
-
-#. 578
-msgid "Norway"
-msgstr "Noreg"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Ný Sæland"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Perú"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Fransk Polynesien"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nýguinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipsoyggjar"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Pólland"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint-Pierre og Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn oyggjar"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestina"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguei"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion oyggin"
-
-#. 642
-msgid "Romania"
-msgstr "Rumenia"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Russland"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi-Arábia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Sálomonoyggjarnar"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seyskelloyggjarnar"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Svøríki"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapor"
-
-#. 654
-msgid "Saint Helena"
-msgstr "St. Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard og Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome og Prinsipi"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Sýria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Svasiland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks og Caicos oyggjarnar"
-
-#. 148
-msgid "Chad"
-msgstr "Kjad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Fraklands suður øki"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadsjikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunesia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkaland"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad og Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taivan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tansania, Sameinda lýveldi av"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukreina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "USA umkringliggjandi oyggjar"
-
-#. 840
-msgid "United States"
-msgstr "Sambandsríki Amerika"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguei"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Usbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikanríkið"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vinsent og Grenadinoyggjar"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venesuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "jomfrúðoyggjarnar, Bretsku"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "jomfrúðoyggjarnar, U.S"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis- og Futunaoyggjarnar"
-
-#. 882
-msgid "Samoa"
-msgstr "Sámoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotta"
-
-#. 710
-msgid "South Africa"
-msgstr "Suðurafrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Sambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Simbabvi"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Ókent, knýt is_in tag til hasar býirnar"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Kort Punkt"
-
-msgid "Car"
-msgstr "Bilur"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Land"
-
-msgid "Postal"
-msgstr "Adressa"
-
-msgid "Town"
-msgstr "Bygd"
-
-msgid "District"
-msgstr "Distrikt"
-
-msgid "Street"
-msgstr "Gøta"
-
-msgid "Number"
-msgstr "Nummar"
-
-msgid "Enter Destination"
-msgstr "Slá inn ferðamál"
-
-msgid "Zip Code"
-msgstr "Postnr."
-
-msgid "City"
-msgstr "Býur"
-
-msgid "District/Township"
-msgstr "Distrikt/Kommuna"
-
-msgid "Map"
-msgstr "Kort"
-
-msgid "Bookmark"
-msgstr "Bókamerki"
-
-msgid "Destination"
-msgstr "Ferðamál"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Skíggji"
-
-msgid "_Route"
-msgstr "Ruta"
-
-msgid "_Former Destinations"
-msgstr "Gomul Ferðamál"
-
-msgid "_Bookmarks"
-msgstr "Bókamerki"
-
-msgid "_Map"
-msgstr "Kort"
-
-msgid "_Layout"
-msgstr "Snið"
-
-msgid "_Projection"
-msgstr "Sýning"
-
-msgid "_Vehicle"
-msgstr "Akfar"
-
-msgid "Zoom_Out"
-msgstr "ZoomOut"
-
-msgid "Decrease zoom level"
-msgstr "Lækka zoom stig"
-
-msgid "Zoom_In"
-msgstr "ZoomIn"
-
-msgid "Increase zoom level"
-msgstr "hækka zoom stig"
-
-msgid "_Recalculate"
-msgstr "Umrokna"
-
-msgid "Redraw map"
-msgstr "Endurtekna kort"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Opnar bústaðar leiting"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Stegga Navigering"
-
-msgid "Test"
-msgstr "Roynd"
-
-msgid "_Quit"
-msgstr "_Gevst"
-
-msgid "Quit the application"
-msgstr "Lat forrit aftur"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Læs til veg"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr "Vegbók"
-
-msgid "Show/hide route description"
-msgstr "Sýn/fjal leiða frágreiðing"
-
-msgid "_Autozoom"
-msgstr "Sjálvvirkið zoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Gilda/ógilda sjálvvirkandi broyting av surristig"
-
-msgid "_Fullscreen"
-msgstr "Fullur skermur"
-
-msgid "Data"
-msgstr "Dáta"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SV"
-
-msgid "W"
-msgstr "V"
-
-msgid "NW"
-msgstr "NV"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nei"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Ruta %4.0fkm %02d:%02d Tíðarmeting"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Ruta 0000km 0+00:00 Tíðarmeting"
-
-msgid "Help"
-msgstr "Hjálp"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Vís í kagara"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Gøtur"
-
-msgid "House numbers"
-msgstr "Húsanummur"
-
-msgid "View Attributes"
-msgstr "Vís eginleikar"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Ãhugaverd støð"
-
-msgid "View on map"
-msgstr "Vís á mappu"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Klipp bókamerki"
-
-msgid "Copy Bookmark"
-msgstr "Avrita bókamerki"
-
-msgid "Rename Bookmark"
-msgstr "Nýnevn bókamerki"
-
-msgid "Paste Bookmark"
-msgstr "Klistra bókamerki"
-
-msgid "Delete Bookmark"
-msgstr "Strika bókamerki"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Bókamerki"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Legg bókamerkjamappu afturat"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Klistra bókamerki"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Bókamerk %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Vís Satilit Støðu"
-
-msgid " Elevation "
-msgstr " Hædd "
-
-msgid " Azimuth "
-msgstr " Breidd "
-
-msgid "Show NMEA Data"
-msgstr "Vís NMEA Dáta"
-
-msgid "car"
-msgstr "bilur"
-
-msgid "bike"
-msgstr "Súkla"
-
-msgid "pedestrian"
-msgstr "fótgangari"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Núverandi profilur %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Broyt profil til: %s"
-
-msgid "Set as active"
-msgstr "Set sum virkið"
-
-msgid "Show Satellite status"
-msgstr "Vís Satelit støðu"
-
-msgid "Show NMEA data"
-msgstr "Vís NMEA dáta"
-
-msgid "Add Bookmark"
-msgstr "Legg bókamerki afturat"
-
-msgid "Rename"
-msgstr "Nýnevna"
-
-msgid "About Navit"
-msgstr "Um Navit"
-
-#. Authors
-msgid "By"
-msgstr "Av"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Og alt Navit liðið"
-
-msgid "members and contributors."
-msgstr "limir og stuðulsveitarir"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Akfar"
-
-msgid "Rules"
-msgstr "Reglur"
-
-msgid "Lock on road"
-msgstr "Læs til veg"
-
-msgid "Northing"
-msgstr "Mót norðan"
-
-msgid "Map follows Vehicle"
-msgstr "Kort fylgur akfari"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Kort"
-
-msgid "Layout"
-msgstr "Snið"
-
-msgid "Height Profile"
-msgstr "Hæddar profilur"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Rutulýsing"
-
-msgid "Show Locale"
-msgstr "Staðarlýsing"
-
-msgid "Former Destinations"
-msgstr "Gomul Ferðamál"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Boð"
-
-msgid "Back"
-msgstr "Aftur"
-
-msgid "Back to map"
-msgstr "Aftur til kort"
-
-msgid "Main Menu"
-msgstr "Høvuðsvalmynd"
-
-msgid "House number"
-msgstr "Húsanummur"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Akfars stað"
-
-msgid "Main menu"
-msgstr "Høvuðsvalmynd"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr "Vís Kort"
-
-msgid "Settings"
-msgstr "Setingar"
-
-msgid "Tools"
-msgstr "Tól"
-
-msgid "Route"
-msgstr "Ruta"
-
-msgid "About"
-msgstr "Um"
-
-msgid "Quit"
-msgstr "Enda"
-
-msgid "Actions"
-msgstr "Gerðir"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr "Enda navigering"
-
-msgid "Display"
-msgstr "Skíggji"
-
-msgid "Fullscreen"
-msgstr "Fullur skermur"
-
-msgid "Window Mode"
-msgstr "Vindeyga støða"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Frágreiðing"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "hestur"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "far so út úr rundkoyring við %1$s %2$s"
diff --git a/po/fr.po.in b/po/fr.po.in
deleted file mode 100644
index 5300b85d2..000000000
--- a/po/fr.po.in
+++ /dev/null
@@ -1,2822 +0,0 @@
-# French (fr) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Arnaud https://launchpad.net/~arnaud-lemeur
-# Breizh_Punisher https://launchpad.net/~lemeura
-# Deuchnord https://launchpad.net/~jerome-logiciels-id
-# Elodie https://launchpad.net/~elodie
-# Fred https://launchpad.net/~frederi1
-# Fred https://launchpad.net/~jelk
-# Gaël Ecorchard https://launchpad.net/~galou-breizh
-# Jean-Marc https://launchpad.net/~m-balthazar
-# Jérôme BLUM https://launchpad.net/~jblum
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Roadrunner IN https://launchpad.net/~online
-# Thibault Lemaitre https://launchpad.net/~thibault.lemaitre
-# Thjazi https://launchpad.net/~pa2l
-# alexb38 https://launchpad.net/~alexb38
-# alfred002 https://launchpad.net/~alfred002
-# boism https://launchpad.net/~boism
-# cyp https://launchpad.net/~cyprien-d
-# mercier133 https://launchpad.net/~mercierdamien
-# metehyi https://launchpad.net/~metehyi
-# pierre https://launchpad.net/~pmghost4
-# quent57 https://launchpad.net/~quent57
-# tuxi https://launchpad.net/~tux-i
-# yannick56 https://launchpad.net/~yleny
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-09-29 12:45+0000\n"
-"Last-Translator: Fred <frederi1@gmail.com>\n"
-"Language-Team: KaZeR <kazer@altern.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"Language: fr\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Éxecution depuis le dossier d'origine\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "Paramètre « %s » changé en « %s »\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "prochaine"
-
-msgid "first"
-msgstr "première"
-
-msgid "second"
-msgstr "deuxième"
-
-msgid "third"
-msgstr "troisième"
-
-msgid "fourth"
-msgstr "quatrième"
-
-msgid "fifth"
-msgstr "cinquième"
-
-msgid "sixth"
-msgstr "sixième"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "prochaine sortie"
-
-msgid "first exit"
-msgstr "première sortie"
-
-msgid "second exit"
-msgstr "deuxième sortie"
-
-msgid "third exit"
-msgstr "troisième sortie"
-
-msgid "fourth exit"
-msgstr "quatrième sortie"
-
-msgid "fifth exit"
-msgstr "cinquième sortie"
-
-msgid "sixth exit"
-msgstr "sixième sortie"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d pieds"
-
-#, c-format
-msgid "in %d feet"
-msgstr "dans %d pieds"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d miles"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "dans %d.%d miles"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "un mile"
-msgstr[1] "%d miles"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "dans un mile"
-msgstr[1] "dans %d miles"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d mètres"
-
-#, c-format
-msgid "in %d meters"
-msgstr "dans %d mètres"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d kilomètres %d"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "dans %d kilomètres %d"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "un kilomètre"
-msgstr[1] "%d kilomètres"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "dans un kilomètre"
-msgstr[1] "dans %d kilomètres"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$svers %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$svers %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$svers le %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$svers la %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$svers l'%2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "et prendre la bretelle"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%ssur %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%ssur le %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%ssur la %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%ssur l'%s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%svers la %s"
-
-msgid "When possible, please turn around"
-msgstr "Dès que possible, faites demi-tour"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "vers %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Suivez la route sur %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Préparez vous à vous engager dans le rond-point"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "%s Entrez dans le rond-point"
-
-msgid "then enter the roundabout"
-msgstr "puis engagez-vous dans le rond-point"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Sortez du rond-point à la %1$s %2$s"
-
-msgid "soon"
-msgstr "bientôt"
-
-msgid "now"
-msgstr "maintenant"
-
-msgid "then"
-msgstr "puis"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "Puis prendre à droite %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "%1$s prendre à droite %2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "Puis prendre à gauche %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "%1$s prendre à gauche %2$s"
-
-msgid "on your left"
-msgstr "sur votre gauche"
-
-msgid "on your right"
-msgstr "sur votre droite"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Prenez la sortie %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Prenez la sortie %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "à l'èchangeur"
-
-msgid "at exit"
-msgstr "à la sortie"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "puis continuez tout droit %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "%1$s continuez tout droit %2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "puis restez sur les voies de droite %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "%1$s Restez sur les voies de droite %2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "puis restez sur les voies de gauche %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "%1$s Restez sur les voies de gauche %2$s%3$s"
-
-# tournez à droite
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "à droite"
-
-# tournez à gauche
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "à gauche"
-
-# utilisé pour les changements de voie pour les sorties?
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "légèrement "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "fortement "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "puis prenez la %1$s route à %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Empreintez la %1$s rue en direction de %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "après %i rues"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "%3$s, tournez %1$s%2$s %4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "puis faites demi-tour"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Faites demi-tour %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "puis faites demi-tour"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Faites demi-tour %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "suivre"
-
-msgid "then you have reached your destination."
-msgstr "puis vous arriverez à destination"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Vous êtes arrivé à destination %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Echangeur"
-
-msgid "Exit"
-msgstr "Sortie"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Position"
-
-msgid "Command"
-msgstr "Commande"
-
-msgid "Length"
-msgstr "Distance"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Durée"
-
-msgid "Destination Length"
-msgstr "Distance à parcourir"
-
-msgid "Destination Time"
-msgstr "Temps de parcours"
-
-msgid "Roadbook"
-msgstr "Carnet de route"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Etape %d"
-
-msgid "Visit before..."
-msgstr "Visiter d'abord..."
-
-msgid "Set as position"
-msgstr "Définir comme position"
-
-msgid "Set as destination"
-msgstr "Définir comme destination"
-
-msgid "Add as bookmark"
-msgstr "Ajouter aux favoris"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Point 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Coord. à l'écran : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorre"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Émirats Arabes Unis"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua et Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguille"
-
-#. 008
-msgid "Albania"
-msgstr "Albanie"
-
-#. 051
-msgid "Armenia"
-msgstr "Arménie"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antilles néerlandaises"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarctique"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentine"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa américaines"
-
-#. 040
-msgid "Austria"
-msgstr "Autriche"
-
-#. 036
-msgid "Australia"
-msgstr "Australie"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Åland, îles"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaïdjan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnie Herzégovine"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbades"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bengladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgique"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgarie"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahreïn"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudes"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivie"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Saint-Eustache et Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brésil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhoutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "ÃŽles Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Biélorussie"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "ÃŽles Cocos"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Répulique démocratique du Congo"
-
-#. 140
-msgid "Central African Republic"
-msgstr "République Centrafricaine"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Suisse"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Côte d'Ivoire"
-
-#. 184
-msgid "Cook Islands"
-msgstr "ÃŽles Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chili"
-
-#. 120
-msgid "Cameroon"
-msgstr "Cameroun"
-
-#. 156
-msgid "China"
-msgstr "Chine"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombie"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cap Vert"
-
-#. 531
-msgid "Curacao"
-msgstr "Curaçao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "ÃŽle Christmas"
-
-#. 196
-msgid "Cyprus"
-msgstr "Chypre"
-
-#. 203
-msgid "Czech Republic"
-msgstr "République Tchèque"
-
-#. 276
-msgid "Germany"
-msgstr "Allemagne"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danemark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominique"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "République Dominicaine"
-
-#. 012
-msgid "Algeria"
-msgstr "Algérie"
-
-#. 218
-msgid "Ecuador"
-msgstr "Équateur"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonie"
-
-#. 818
-msgid "Egypt"
-msgstr "Égypte"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara occidental"
-
-#. 232
-msgid "Eritrea"
-msgstr "Erythrée"
-
-#. 724
-msgid "Spain"
-msgstr "Espagne"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Ethiopie"
-
-#. 246
-msgid "Finland"
-msgstr "Finlande"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "ÃŽles Malouines"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronésie, États fédérés de"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Îles Féroé"
-
-#. 250
-msgid "France"
-msgstr "France"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Royaume-Uni"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenade"
-
-#. 268
-msgid "Georgia"
-msgstr "Géorgie"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guyanne française"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambie"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinée"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guinée équatoriale"
-
-#. 300
-msgid "Greece"
-msgstr "Grèce"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Géorgie du Sud et Îles Sandwich du Sud"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinée-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyane"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "ÃŽles Heard-et-McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croatie"
-
-#. 332
-msgid "Haiti"
-msgstr "Haïti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hongrie"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonésie"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlande"
-
-#. 376
-msgid "Israel"
-msgstr "Israël"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Ile de Man"
-
-#. 356
-msgid "India"
-msgstr "Inde"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Territoire britannique de l'océan Indien"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, République islamique d'"
-
-#. 352
-msgid "Iceland"
-msgstr "Islande"
-
-#. 380
-msgid "Italy"
-msgstr "Italie"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaïque"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordanie"
-
-#. 392
-msgid "Japan"
-msgstr "Japon"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirghizstan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambodge"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comores"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint-Christophe-et-Niévès"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Corée, République populaire démocratique de"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Corée, République de"
-
-#. 414
-msgid "Kuwait"
-msgstr "Koweït"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "ÃŽles Cayman"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Liban"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Sainte-Lucie"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Libéria"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lithuanie"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxembourg"
-
-#. 428
-msgid "Latvia"
-msgstr "Lettonie"
-
-#. 434
-msgid "Libya"
-msgstr "Libye"
-
-#. 504
-msgid "Morocco"
-msgstr "Maroc"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova, République de"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "ÃŽles Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macédoine"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolie"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "ÃŽles Mariannes du Nord"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritanie"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malte"
-
-#. 480
-msgid "Mauritius"
-msgstr "ÃŽle Maurice"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldives"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexique"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaisie"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibie"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nouvelle Calédonie"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "ÃŽle Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Pays-Bas"
-
-#. 578
-msgid "Norway"
-msgstr "Norvège"
-
-#. 524
-msgid "Nepal"
-msgstr "Népal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nouvelle-Zélande"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Pérou"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polynésie Française"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papouasie-Nouvelle-Guinée"
-
-#. 608
-msgid "Philippines"
-msgstr "Philippines"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Pologne"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint-Pierre-et-Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "ÃŽles Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Territoire palestinien, occupé"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Réunion"
-
-#. 642
-msgid "Romania"
-msgstr "Roumanie"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbie"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Russie"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arabie Saoudite"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "ÃŽles Salomon"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Soudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Suède"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapour"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Sainte Hélène"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovénie"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard et Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovaquie"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "Saint-Marin"
-
-#. 686
-msgid "Senegal"
-msgstr "Sénégal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalie"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr "Soudan du Sud"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tomé-et-Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Saint-Martin (partie néerlandaise)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrie"
-
-#. 748
-msgid "Swaziland"
-msgstr "Souaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Îles Turques et Caïques"
-
-#. 148
-msgid "Chad"
-msgstr "Tchad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Terres australes françaises"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailande"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisie"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turquie"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinité et Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taïwan, province de Chine"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzanie, République unie de"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Îles mineures éloignées des États-Unis"
-
-#. 840
-msgid "United States"
-msgstr "États-Unis"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Ouzbékistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Saint-Siège (état de la cité du Vatican)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint-Vincent-et-les Grenadines"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "ÃŽles Vierges britanniques"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Îles Vierges des États-Unis"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Viêt Nam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis et Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yémen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Afrique du Sud"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambie"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "Inconnu, ajoutez des étiquettes d'is_in à ces villes"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-"comment utiliser navit:\n"
-"navit [options] [fichier de configuration]\n"
-"\t-c <fichier>: utiliser <fichier> pour la configuration, à la place du "
-"fichier par défaut.\n"
-"\t-d <n>: configure la verbosité de déboggage à <n> (0=erreur, "
-"1=avertissement, 2=info, 3=debug).\n"
-"\tLes réglages du fichier de configuration s'appliqueront toujours si la "
-"valeur est plus élevée.\n"
-"\t-h: affiche cette aide et quitte.\n"
-"\t-v: affiche la version et quitte.\n"
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Pas de fichier de configuration navit.xml, navit.xml.local trouvé\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "erreur d'analyse du fichier de configuration '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "utilisation du fichier '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Erreur: Configuration non trouvée dans le fichier '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"initialisation interne échouée, arrêt de l'exécution. Vérifiez les messages "
-"d'erreurs précédents.\n"
-
-msgid "unknown street"
-msgstr "rue inconnue"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Véhicule sans nom"
-
-msgid "Failed to write bookmarks file"
-msgstr "Échec lors de l'écriture du fichier des favoris"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Point sur la carte"
-
-msgid "Car"
-msgstr "Voiture"
-
-msgid "Iso2"
-msgstr "iso2"
-
-msgid "Iso3"
-msgstr "iso3"
-
-msgid "Country"
-msgstr "Pays"
-
-msgid "Postal"
-msgstr "Code postal"
-
-msgid "Town"
-msgstr "Ville"
-
-msgid "District"
-msgstr "Quartier"
-
-msgid "Street"
-msgstr "Rue"
-
-msgid "Number"
-msgstr "Numéro"
-
-msgid "Enter Destination"
-msgstr "Entrez une destination"
-
-msgid "Zip Code"
-msgstr "Code postal"
-
-msgid "City"
-msgstr "Ville"
-
-msgid "District/Township"
-msgstr "Canton"
-
-msgid "Map"
-msgstr "Carte"
-
-msgid "Bookmark"
-msgstr "Favoris"
-
-msgid "Destination"
-msgstr "Destination"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Affichage"
-
-msgid "_Route"
-msgstr "Itinéraire"
-
-msgid "_Former Destinations"
-msgstr "Destinations précédentes"
-
-msgid "_Bookmarks"
-msgstr "Favoris"
-
-msgid "_Map"
-msgstr "Carte"
-
-msgid "_Layout"
-msgstr "Thème"
-
-msgid "_Projection"
-msgstr "Projection"
-
-msgid "_Vehicle"
-msgstr "Véhicule"
-
-msgid "Zoom_Out"
-msgstr "Zoom arrière"
-
-msgid "Decrease zoom level"
-msgstr "Réduire le zoom"
-
-msgid "Zoom_In"
-msgstr "Zoom avant"
-
-msgid "Increase zoom level"
-msgstr "Augmenter le zoom"
-
-msgid "_Recalculate"
-msgstr "Recalcul de l'itinéraire"
-
-msgid "Redraw map"
-msgstr "Redessiner la carte"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr "Fixer _destination"
-
-msgid "Opens address search dialog"
-msgstr "Ouvrir la fenêtre de recherche d'adresse"
-
-msgid "_POI search"
-msgstr "recherche de points d'intérêt"
-
-msgid "Opens POI search dialog"
-msgstr "Ouvrir la recherche des points d'intérêts"
-
-msgid "_Stop Navigation"
-msgstr "Annuler le trajet"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Quitter"
-
-msgid "Quit the application"
-msgstr "Quitter l'application"
-
-msgid "Show position _cursor"
-msgstr "Montrer la position _curseur"
-
-msgid "_Lock on Road"
-msgstr "Coller à la route"
-
-msgid "_Keep orientation to the North"
-msgstr "Garder l'orientation au Nord"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Changer l'orientation de la carte pour nord ou véhicule"
-
-msgid "_Roadbook"
-msgstr "Carnet de route"
-
-msgid "Show/hide route description"
-msgstr "Montrer/Masquer la description de la route"
-
-msgid "_Autozoom"
-msgstr "Zoom automatique"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Activer/désactiver le changement automatique du zoom"
-
-msgid "_Fullscreen"
-msgstr "Plein écran"
-
-msgid "Data"
-msgstr "Données"
-
-msgid "Pharmacy"
-msgstr "Pharmacie"
-
-msgid "Restaurant"
-msgstr "Restaurant"
-
-msgid "Restaurant. Fast food"
-msgstr "Restauration rapide"
-
-msgid "Hotel"
-msgstr "Hôtel"
-
-msgid "Car parking"
-msgstr "Parking"
-
-msgid "Fuel station"
-msgstr "Station-service"
-
-msgid "Bank"
-msgstr "Banque"
-
-msgid "Hospital"
-msgstr "Hôpital"
-
-msgid "Cinema"
-msgstr "Cinéma"
-
-msgid "Train station"
-msgstr "Gare"
-
-msgid "School"
-msgstr "École"
-
-msgid "Police"
-msgstr "Poste de police"
-
-msgid "Justice"
-msgstr "Police"
-
-msgid "Taxi"
-msgstr "Taxi"
-
-msgid "Shopping"
-msgstr "Achats"
-
-msgid "Distance from screen center (km)"
-msgstr "Distance du centre de l'écran (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "Point d'intérêt %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Définir la destination vers %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "sélectionner la carte de %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "Définir la prochaine visite à %ld, %ld \n"
-
-msgid "POI search"
-msgstr "recherche de point d'intérêt"
-
-msgid "Select a category"
-msgstr "Sélectionnez une catégorie"
-
-msgid "Select a distance to look for (km)"
-msgstr "Sélectionnez une distance à chercher (km)"
-
-msgid "Select a POI"
-msgstr "Sélectionnez un point d'intérêt"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Catégorie"
-
-msgid "Direction"
-msgstr "Direction"
-
-msgid "Distance(m)"
-msgstr "Distance (m)"
-
-msgid "Name"
-msgstr "Nom"
-
-msgid "Visit Before"
-msgstr "Visitez avant"
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SO"
-
-msgid "W"
-msgstr "O"
-
-msgid "NW"
-msgstr "NO"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Non"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "Autre"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Trajet restant %4.0f km heure d'arrivée estimée %02d:%02d"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Trajet 0000 km temps estimé 0+00:00"
-
-msgid "Help"
-msgstr "Aide"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Étape %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Sélectionner l'étape avant laquelle insérer"
-
-msgid "View in Browser"
-msgstr "Voir dans le navigateur"
-
-msgid "Item type"
-msgstr "Type d'objet"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Rues"
-
-msgid "House numbers"
-msgstr "Numéros de maison"
-
-msgid "View Attributes"
-msgstr "Voir les attributs"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Définir comme position (et désactiver véhicule)"
-
-msgid "POIs"
-msgstr "Points d'intérêt"
-
-msgid "View on map"
-msgstr "Voir sur la carte"
-
-msgid "Remove search results from the map"
-msgstr "Supprimer les résultats de la carte"
-
-msgid "Show results on the map"
-msgstr "Montrer les résultats sur la carte"
-
-msgid "Cut Bookmark"
-msgstr "Couper le signet"
-
-msgid "Copy Bookmark"
-msgstr "Copier le signet"
-
-msgid "Rename Bookmark"
-msgstr "Renommer le signet"
-
-msgid "Paste Bookmark"
-msgstr "Insérer le signet"
-
-msgid "Delete Bookmark"
-msgstr "Supprimer le signet"
-
-msgid "Delete waypoint"
-msgstr "Supprimer l'étape"
-
-msgid "Bookmarks"
-msgstr "Favoris"
-
-msgid "Bookmarks as waypoints"
-msgstr "Favoris comme points de passage"
-
-msgid "Save waypoints"
-msgstr "Sauvegarder les points de passage"
-
-msgid "Replace with waypoints"
-msgstr "Remplacer par des étapes"
-
-msgid "Delete Folder"
-msgstr "Supprimer le dossier"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Ajouter un dossier de signets"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Insérer le signet"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Ajouter %s aux favoris"
-
-#, c-format
-msgid "Download %s"
-msgstr "Télécharger %s"
-
-msgid "Map Download"
-msgstr "Télécharger la carte"
-
-msgid "Active"
-msgstr "Actif"
-
-msgid "Download Enabled"
-msgstr "Téléchargement activé"
-
-msgid "Download completely"
-msgstr "Télécharger completement"
-
-msgid "Show Satellite Status"
-msgstr "Afficher les infos satellite"
-
-msgid " Elevation "
-msgstr " Elévation "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "Afficher les données NMEA"
-
-msgid "car"
-msgstr "voiture"
-
-msgid "bike"
-msgstr "vélo"
-
-msgid "pedestrian"
-msgstr "piéton"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Profil actuel : %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Définir le profil à : %s"
-
-msgid "Set as active"
-msgstr "Activer"
-
-msgid "Show Satellite status"
-msgstr "Afficher les infos satellite"
-
-msgid "Show NMEA data"
-msgstr "Afficher les données NMEA"
-
-msgid "Add Bookmark"
-msgstr "Ajouter au favoris"
-
-msgid "Rename"
-msgstr "Renommer"
-
-msgid "About Navit"
-msgstr "A propos de Navit"
-
-#. Authors
-msgid "By"
-msgstr "par"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Et tous les membres du projet Navit"
-
-msgid "members and contributors."
-msgstr "membres et contributeurs"
-
-msgid "Waypoints"
-msgstr "Étapes"
-
-msgid "Enter Coordinates"
-msgstr "Saisissez les coordonnées"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Latitude Longitude"
-
-msgid "Enter coordinates, for example:"
-msgstr "Saisissez les coordonnées, par exemple :"
-
-msgid "Vehicle"
-msgstr "Véhicule"
-
-msgid "Rules"
-msgstr "Règles"
-
-msgid "Lock on road"
-msgstr "Coller à la route"
-
-msgid "Northing"
-msgstr "Orientation toujours au Nord"
-
-msgid "Map follows Vehicle"
-msgstr "La carte suit le véhicule"
-
-msgid "Plan with Waypoints"
-msgstr "Définir avec points de passage"
-
-msgid "Maps"
-msgstr "Cartes"
-
-msgid "Layout"
-msgstr "Thème"
-
-msgid "Height Profile"
-msgstr "Profil de hauteur"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-"Veuillez installer la carte *.heightlines.bin pour afficher le nivellement."
-
-msgid "The route must cross at least 2 heightlines"
-msgstr "La route doit au minimum passer par deux lignes de niveau"
-
-msgid "Route Description"
-msgstr "Description de la route"
-
-msgid "Show Locale"
-msgstr "Afficher la locale"
-
-msgid "Former Destinations"
-msgstr "Destinations précédentes"
-
-msgid "- No former destinations available -"
-msgstr "- Pas de destinations précedentes -"
-
-msgid "Message"
-msgstr "Message"
-
-msgid "Back"
-msgstr "Retour"
-
-msgid "Back to map"
-msgstr "Retourner à la carte"
-
-msgid "Main Menu"
-msgstr "Menu principal"
-
-msgid "House number"
-msgstr "Numéro de maison"
-
-msgid "Next"
-msgstr "Suivant"
-
-msgid "Prev"
-msgstr "Précédent"
-
-msgid "Return to route!"
-msgstr "Retournez sur la route"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Attention ! Contrôle radar !"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Veuillez ralentir"
-
-msgid "partial match"
-msgstr "correspondance partielle"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Chercher"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Villes"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Données cartographiques (c) OpenStreetMap contributors, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-"L'emplacement de carte %s n'est pas disponible\n"
-"Veuillez redémarrer Navit après avoir branché une carte SD ou selectionné en "
-"emplacement de carte différent."
-
-msgid "Downloaded maps"
-msgstr "Cartes téléchargées"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"Désolé, nous ne supportons pas les cartes de plus de 3.8GB sur Android, "
-"merci de sélectionner une carte plus petite."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Conduire ici"
-
-msgid "Cancel"
-msgstr "Annuler"
-
-msgid "filenamePath"
-msgstr "emplacementFichier"
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr "redémarrer Navit pour appliquer les modifications"
-
-msgid "Whole Planet"
-msgstr "Terre entière"
-
-msgid "Africa"
-msgstr "Afrique"
-
-msgid "Canary Islands"
-msgstr "ÃŽles Canaries"
-
-msgid "Asia"
-msgstr "Asie"
-
-msgid "Korea"
-msgstr "Corée"
-
-msgid "Taiwan"
-msgstr "Taïwan"
-
-msgid "UAE+Other"
-msgstr "EAU+Autres"
-
-msgid "Oceania"
-msgstr "Océanie"
-
-msgid "Tasmania"
-msgstr "Tasmanie"
-
-msgid "Victoria"
-msgstr "Victoria"
-
-msgid "New South Wales"
-msgstr "Nouvelle-Galles du Sud"
-
-msgid "Europe"
-msgstr "Europe"
-
-msgid "Western Europe"
-msgstr "Europe de l'Ouest"
-
-msgid "Azores"
-msgstr "Açores"
-
-msgid "BeNeLux"
-msgstr "BeNeLux"
-
-msgid "Alsace"
-msgstr "Alsace"
-
-msgid "Aquitaine"
-msgstr "Aquitaine"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Basse-Normandie"
-
-msgid "Bourgogne"
-msgstr "Bourgogne"
-
-msgid "Bretagne"
-msgstr "Bretagne"
-
-msgid "Centre"
-msgstr "Centre"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardenne"
-
-msgid "Corse"
-msgstr "Corse"
-
-msgid "Franche-Comte"
-msgstr "Franche-Comté"
-
-msgid "Haute-Normandie"
-msgstr "Haute-Normandie"
-
-msgid "Ile-de-France"
-msgstr "ÃŽle-de-France"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc-Roussillon"
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lorraine"
-
-msgid "Midi-Pyrenees"
-msgstr "Midi-Pyrénées"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-Pas-de-Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Pays-de-la-Loire"
-
-msgid "Picardie"
-msgstr "Picardie"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provence-Alpes-Côte d'Azur"
-
-msgid "Rhone-Alpes"
-msgstr "Rhône-Alpes"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Bade-Wurtemberg"
-
-msgid "Bayern"
-msgstr "Bavière"
-
-msgid "Mittelfranken"
-msgstr "Moyenne-Franconie"
-
-msgid "Niederbayern"
-msgstr "Basse-Bavière"
-
-msgid "Oberbayern"
-msgstr "Basse-Bavière"
-
-msgid "Oberfranken"
-msgstr "Haute-Franconie"
-
-msgid "Oberpfalz"
-msgstr "Haut-Palatinat"
-
-msgid "Schwaben"
-msgstr "Souabe"
-
-msgid "Unterfranken"
-msgstr "Basse-Franconie"
-
-msgid "Berlin"
-msgstr "Berlin"
-
-msgid "Brandenburg"
-msgstr "Brandebourg"
-
-msgid "Bremen"
-msgstr "Brême"
-
-msgid "Hamburg"
-msgstr "Hambourg"
-
-msgid "Hessen"
-msgstr "Hesse"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Mecklembourg-Poméranie occidentale"
-
-msgid "Niedersachsen"
-msgstr "Basse-Saxe"
-
-msgid "Nordrhein-westfalen"
-msgstr "Rhénanie-du-Nord - Westphalie"
-
-msgid "Rheinland-Pfalz"
-msgstr "Rhénanie-Palatinat"
-
-msgid "Saarland"
-msgstr "Sarre"
-
-msgid "Sachsen-Anhalt"
-msgstr "Saxe-Anhalt"
-
-msgid "Sachsen"
-msgstr "Saxe"
-
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-msgid "Thueringen"
-msgstr "Thuringe"
-
-msgid "Mallorca"
-msgstr "Majorque"
-
-msgid "Galicia"
-msgstr "Galice"
-
-msgid "Scandinavia"
-msgstr "Scandinavie"
-
-msgid "England"
-msgstr "Angleterre"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbrie"
-
-msgid "East yorkshire with hull"
-msgstr "Hull & Yorkshire de l'Est"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "Yorkshire de l'Ouest"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Écosse"
-
-msgid "Wales"
-msgstr "Pays de Galles"
-
-msgid "Crete"
-msgstr "Crète"
-
-msgid "North America"
-msgstr "Amérique du Nord"
-
-msgid "Alaska"
-msgstr "Alaska"
-
-msgid "Hawaii"
-msgstr "Hawaï"
-
-msgid "USA"
-msgstr "États-Unis"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (sans Alaska et Hawaï)"
-
-msgid "Midwest"
-msgstr "Midwest"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Nord-Est"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Pacifique"
-
-msgid "South"
-msgstr "Sud"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "District de Columbia"
-
-msgid "Florida"
-msgstr "Floride"
-
-msgid "Louisiana"
-msgstr "Louisiane"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virginie"
-
-msgid "West Virginia"
-msgstr "Virginie-Occidentale"
-
-msgid "West"
-msgstr "Ouest"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "Californie"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "Nouveau-Mexique"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "État de Washington"
-
-msgid "South+Middle America"
-msgstr "Amérique (Centrale et Sud)"
-
-msgid "Guyane Francaise"
-msgstr "Guyane Française"
-
-msgid "downloading"
-msgstr "transfert en cours"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "prêt"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-"Le support sélectionné pour le stockage de la carte n'est pas disponible"
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Pas assez d'espace libre"
-
-msgid "Error downloading map!"
-msgstr "Erreur de téléchargement de carte !"
-
-msgid "Error writing map!"
-msgstr "Erreur d'écriture de carte !"
-
-msgid "Map download aborted!"
-msgstr "Téléchargement de carte abondonné !"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Temps restant"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Carte téléchargement"
-
-msgid "Vehicle Position"
-msgstr "Position du véhicule"
-
-msgid "Main menu"
-msgstr "Menu principal"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Afficher\n"
-"la carte"
-
-msgid "Settings"
-msgstr "Configuration"
-
-msgid "Tools"
-msgstr "Outils"
-
-msgid "Route"
-msgstr "Itinéraire"
-
-msgid "About"
-msgstr "À propos"
-
-msgid "Quit"
-msgstr "Quitter"
-
-msgid "Actions"
-msgstr "Actions"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Destinations\n"
-"précédentes"
-
-msgid "Coordinates"
-msgstr "Coordonnées"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Arrêter\n"
-"la navigation"
-
-msgid "Display"
-msgstr "Affichage"
-
-msgid "Fullscreen"
-msgstr "Plein écran"
-
-msgid "Window Mode"
-msgstr "Mode fenêtré"
-
-msgid "Layers"
-msgstr "Couches"
-
-msgid "Description"
-msgstr "Description"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Sauter le dernier \n"
-"Point de passage"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Sauter le prochain \n"
-"point de passage"
-
-msgid "Satellite Status"
-msgstr "Etat des satellites"
-
-msgid "NMEA Data"
-msgstr "Données NMEA"
-
-msgid "car_shortest"
-msgstr "voiture _le plus court"
-
-msgid "car_avoid_tolls"
-msgstr "voiture _sans péage"
-
-msgid "car_pedantic"
-msgstr "voiture_detaillée"
-
-msgid "horse"
-msgstr "cheval"
-
-msgid "Truck"
-msgstr "Camion"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Oui"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit commencé"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit exécute"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Bienvenue chez Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Nous vous remercions d'avoir installé Navit!\n"
-"\n"
-"Pour commencer, sélectionnez \"Télécharger des cartes\" du menu et "
-"télechargez une carte de votre région. Les cartes sont volumineuses, donc il "
-"est préférable d'avoir une connection internet illimitée!\n"
-"\n"
-"Cartes: (c) OpenStreetMap contributors\n"
-"\n"
-"Amusez-vous avec Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Plus d'infos"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Zoom-avant"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Zoom-arrière"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Télécharger des cartes"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Basculer POIs"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Quittez Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Sauvegarde / Restauration"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr "sélectionner le chemin de la carte"
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Supprimer cette carte?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Télécharger:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Erreur de téléchargement carte"
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Carte télécharger avortée"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Pas de géolocalisation. Relancez après obtention d'un signal GPS"
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Cartes couvrant la position actuelle"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Cherchez adresse"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Entrez votre destination"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Correspondance partielle"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Recherche..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Adresse introuvable"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Obtenir des résultats de recherche"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Chargement des résultats de recherche"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Aucun résultat trouvé"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Aucun texte entré"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Destination fixée à:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Choisir une action"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Veuillez insérer une carte SD"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Sauvegarde..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Restauration..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Impossible de créer le dossier de sauvegarde"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Échec de la sauvegarde"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Pas de sauvegarde trouvée"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Échec de la restauration"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Sauvegarde terminée avec succès"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Restauration réussie\n"
-"Veuillez redémarrer Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Sauvegarde introuvable"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Échec de la restauration"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Sélectionner la sauvegarde"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Sauvegarder"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Restaurer"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr "Les données du moteur de parole système sont manquantes"
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-"Navit peut utiliser n'importe quel système de parole disponible sur votre "
-"appareil. Le système actuellement sélectionné indique qu'il ne peut pas "
-"parler dans votre langue. Devons nous demander au système d'afficher le menu "
-"de téléchargement des voix?"
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "puis sortez du rond-point à la %1$s %2$s"
-
-#, c-format
-#~ msgid "in %d m"
-#~ msgstr "dans %d m"
-
-#, c-format
-#~ msgid "%d m"
-#~ msgstr "%d m"
diff --git a/po/fr_CH.po.in b/po/fr_CH.po.in
deleted file mode 100644
index 68d798ee5..000000000
--- a/po/fr_CH.po.in
+++ /dev/null
@@ -1,2752 +0,0 @@
-# French/Switzerland translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: KaZeR <kazer@altern.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"Language: fr_CH\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Execution depuis le dossier d'origine\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "'%s' mis à '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zéroième"
-
-msgid "first"
-msgstr "première"
-
-msgid "second"
-msgstr "deuxième"
-
-msgid "third"
-msgstr "troisième"
-
-msgid "fourth"
-msgstr "quatrième"
-
-msgid "fifth"
-msgstr "cinquième"
-
-msgid "sixth"
-msgstr "sixième"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "la zéroième sortie"
-
-msgid "first exit"
-msgstr "la première sortie"
-
-msgid "second exit"
-msgstr "la deuxième sortie"
-
-msgid "third exit"
-msgstr "la troisième sortie"
-
-msgid "fourth exit"
-msgstr "la quatrième sortie"
-
-msgid "fifth exit"
-msgstr "la cinquième sortie"
-
-msgid "sixth exit"
-msgstr "la sixième sortie"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d mètres"
-
-#, c-format
-msgid "in %d meters"
-msgstr "dans %d mètres"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilomètres"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "dans %d.%d kilomètres"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "un kilomètre"
-msgstr[1] "%d kilomètres"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "dans un kilomètre"
-msgstr[1] "dans %d kilomètres"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$svers %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$svers %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$svers le %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$svers la %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$svers l'%2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "vers la bretelle"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%ssur %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%ssur le %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%ssur la %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%ssur l'%s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%svers la %s"
-
-msgid "When possible, please turn around"
-msgstr "Dès que possible, faites demi-tour"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "vers %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Suivez la route sur %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Préparez vous à vous engager dans le rond-point"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Sortez du rond-point à la %1$s %2$s"
-
-msgid "soon"
-msgstr "bientôt"
-
-msgid "now"
-msgstr "maintenant"
-
-msgid "then"
-msgstr "puis"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Prenez la sortie %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Prenez la sortie %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "à l'èchangeur"
-
-msgid "at exit"
-msgstr "à la sortie"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-# tournez à droite
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "à droite"
-
-# tournez à gauche
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "à gauche"
-
-# utilisé pour les changements de voie pour les sorties?
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "légèrement "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "fortement "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Prenez la %1$s route vers la %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "après %i rues"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "puis faites demi-tour"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Faites demi-tour %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "puis faites demi-tour"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Faites demi-tour %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "suivez"
-
-msgid "then you have reached your destination."
-msgstr "ensuite vous serez à destination"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Vous êtes arrivé à destination %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Echangeur"
-
-msgid "Exit"
-msgstr "Sortie"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Position"
-
-msgid "Command"
-msgstr "Commande"
-
-msgid "Length"
-msgstr "Distance"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Durée"
-
-msgid "Destination Length"
-msgstr "Distance à parcourir"
-
-msgid "Destination Time"
-msgstr "Temps de parcours"
-
-msgid "Roadbook"
-msgstr "Carnet de route"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Définir comme position"
-
-msgid "Set as destination"
-msgstr "Définir comme destination"
-
-msgid "Add as bookmark"
-msgstr "Ajouter aux favoris"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Point 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Coord. à l'écran : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorre"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Émirats Arabes Unis"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua et Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguille"
-
-#. 008
-msgid "Albania"
-msgstr "Albanie"
-
-#. 051
-msgid "Armenia"
-msgstr "Arménie"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antilles Néérlandaises"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarctique"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentine"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa américaines"
-
-#. 040
-msgid "Austria"
-msgstr "Autriche"
-
-#. 036
-msgid "Australia"
-msgstr "Australie"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Åland, îles"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaïdjan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnie Herzégovine"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbades"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bengladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgique"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgarie"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahreïn"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudes"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivie"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brésil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhoutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "ÃŽles Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Biélorussie"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Iles Cocos"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Répulique démocratique du Congo"
-
-#. 140
-msgid "Central African Republic"
-msgstr "République Centrafricaine"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Suisse"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Cote d'Ivoire"
-
-#. 184
-msgid "Cook Islands"
-msgstr "ÃŽles Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chili"
-
-#. 120
-msgid "Cameroon"
-msgstr "Cameroun"
-
-#. 156
-msgid "China"
-msgstr "Chine"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombie"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cap Vert"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "ÃŽle Christmas"
-
-#. 196
-msgid "Cyprus"
-msgstr "Chypre"
-
-#. 203
-msgid "Czech Republic"
-msgstr "République Tchèque"
-
-#. 276
-msgid "Germany"
-msgstr "Allemagne"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danemark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominique"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "République Dominicaine"
-
-#. 012
-msgid "Algeria"
-msgstr "Algérie"
-
-#. 218
-msgid "Ecuador"
-msgstr "Equateur"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonie"
-
-#. 818
-msgid "Egypt"
-msgstr "Égypte"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara occidental"
-
-#. 232
-msgid "Eritrea"
-msgstr "Erythrée"
-
-#. 724
-msgid "Spain"
-msgstr "Espagne"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Ethiopie"
-
-#. 246
-msgid "Finland"
-msgstr "Finlande"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Les Malouines (les Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronésie, États fédérés de"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "ÃŽles Feroe"
-
-#. 250
-msgid "France"
-msgstr "France"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Royaume-Uni"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenade"
-
-#. 268
-msgid "Georgia"
-msgstr "Géorgie"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guyanne française"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambie"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinée"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guinée équatoriale"
-
-#. 300
-msgid "Greece"
-msgstr "Grèce"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Géorgie du Sud et Îles Sandwich du Sud"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinée-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyane"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong-kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard, ÃŽle et McDonald, ÃŽles"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croatie"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hongrie"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonésie"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlande"
-
-#. 376
-msgid "Israel"
-msgstr "Israël"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Ile de Man"
-
-#. 356
-msgid "India"
-msgstr "Inde"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Océan Indien, Territoire britannique de l'"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, République islamique d'"
-
-#. 352
-msgid "Iceland"
-msgstr "Islande"
-
-#. 380
-msgid "Italy"
-msgstr "Italie"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaique"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordanie"
-
-#. 392
-msgid "Japan"
-msgstr "Japon"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirghizstan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambodge"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comores, Les"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts et Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Corée, République populaire démocratique de"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Corée, République de"
-
-#. 414
-msgid "Kuwait"
-msgstr "Koweït"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "ÃŽles Cayman"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Liban"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Sainte-Lucie"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Libéria"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lithuanie"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxembourg"
-
-#. 428
-msgid "Latvia"
-msgstr "Lettonie"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Maroc"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova, République de"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "ÃŽles Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macédoine"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolie"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "ÃŽles Mariannes du Nord"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritanie"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malte"
-
-#. 480
-msgid "Mauritius"
-msgstr "Iles Maurice"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldives"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexique"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaisie"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibie"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nouvelle Calédonie"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "ÃŽle Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Pays-Bas"
-
-#. 578
-msgid "Norway"
-msgstr "Norvège"
-
-#. 524
-msgid "Nepal"
-msgstr "Népal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nouvelle-Zélande"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Pérou"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polynésie Française"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papouasie-Nouvelle-Guinée"
-
-#. 608
-msgid "Philippines"
-msgstr "Philippines"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Pologne"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint-Pierre-et-Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "ÃŽles Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestine"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Réunion"
-
-#. 642
-msgid "Romania"
-msgstr "Roumanie"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbie"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Russie"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arabie Saoudite"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "ÃŽles Solomon"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Suède"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapour"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Sainte Hélène"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovènie"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard et île Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovaquie"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "Saint-Marin"
-
-#. 686
-msgid "Senegal"
-msgstr "Sénégal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalie"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tomé-et-Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrie"
-
-#. 748
-msgid "Swaziland"
-msgstr "Souaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Îles Turques et Caïques"
-
-#. 148
-msgid "Chad"
-msgstr "Tchad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Terres australes françaises"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailande"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisie"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turquie"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinité et Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, province de la Chine"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzanie, République unie de"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Îles périphériques mineures des Etats-Unis"
-
-#. 840
-msgid "United States"
-msgstr "États-Unis"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Ouzbékistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Saint-Siège (état de la cité du Vatican)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint-Vincent-et-les Grenadines"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "ÃŽles Vierges britanniques"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Îles Vierges des États-Unis"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Viêt Nam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis et Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Afrique du Sud"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambie"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "Inconnu, ajoutez des étiquettes d'is_in à ces villes"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Point sur la carte"
-
-msgid "Car"
-msgstr "Voiture"
-
-msgid "Iso2"
-msgstr "iso2"
-
-msgid "Iso3"
-msgstr "iso3"
-
-msgid "Country"
-msgstr "Pays"
-
-msgid "Postal"
-msgstr "Code postal"
-
-msgid "Town"
-msgstr "Ville"
-
-msgid "District"
-msgstr "Quartier"
-
-msgid "Street"
-msgstr "Rue"
-
-msgid "Number"
-msgstr "Numéro"
-
-msgid "Enter Destination"
-msgstr "Entrez une destination"
-
-msgid "Zip Code"
-msgstr "Code postal"
-
-msgid "City"
-msgstr "Ville"
-
-msgid "District/Township"
-msgstr "Canton"
-
-msgid "Map"
-msgstr "Carte"
-
-msgid "Bookmark"
-msgstr "Favoris"
-
-msgid "Destination"
-msgstr "Destination"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Affichage"
-
-msgid "_Route"
-msgstr "Itinéraire"
-
-msgid "_Former Destinations"
-msgstr "Destinations précédentes"
-
-msgid "_Bookmarks"
-msgstr "Favoris"
-
-msgid "_Map"
-msgstr "Carte"
-
-msgid "_Layout"
-msgstr "Thème"
-
-msgid "_Projection"
-msgstr "Projection"
-
-msgid "_Vehicle"
-msgstr "Véhicule"
-
-msgid "Zoom_Out"
-msgstr "Zoom arrière"
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr "Zoom avant"
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr "Recalculer"
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Annuler le trajet"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Quitter"
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Coller à la route"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr "Carnet de route"
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr "Zoom automatique"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "Plein écran"
-
-msgid "Data"
-msgstr "Données"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SO"
-
-msgid "W"
-msgstr "O"
-
-msgid "NW"
-msgstr "NO"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Non"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "Autre"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Trajet restant %4.0f km heure d'arrivée estimée %02d:%02d"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Trajet 0000 km temps estimé 0+00:00"
-
-msgid "Help"
-msgstr "Aide"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Voir dans le navigateur"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Rues"
-
-msgid "House numbers"
-msgstr "Numéros de maison"
-
-msgid "View Attributes"
-msgstr "Voir les attributs"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Points d'intérêt"
-
-msgid "View on map"
-msgstr "Voir sur la carte"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Favoris"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Ajouter %s aux favoris"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Afficher les infos satellite"
-
-msgid " Elevation "
-msgstr " Elévation "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "Afficher les données NMEA"
-
-msgid "car"
-msgstr "voiture"
-
-msgid "bike"
-msgstr "vélo"
-
-msgid "pedestrian"
-msgstr "piéton"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Profil actuel : %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Définir le profil à : %s"
-
-msgid "Set as active"
-msgstr "Activer"
-
-msgid "Show Satellite status"
-msgstr "Afficher les infos satellite"
-
-msgid "Show NMEA data"
-msgstr "Afficher les données NMEA"
-
-msgid "Add Bookmark"
-msgstr "Ajouter au favoris"
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr "A propos de Navit"
-
-#. Authors
-msgid "By"
-msgstr "Développé par"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Et tous les membres du projet Navit"
-
-msgid "members and contributors."
-msgstr "membres et contributeurs"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Véhicule"
-
-msgid "Rules"
-msgstr "Règles"
-
-msgid "Lock on road"
-msgstr "Coller à la route"
-
-msgid "Northing"
-msgstr "Orientation toujours au Nord"
-
-msgid "Map follows Vehicle"
-msgstr "La carte suit le véhicule"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Cartes"
-
-msgid "Layout"
-msgstr "Thème"
-
-msgid "Height Profile"
-msgstr "Profil de hauteur"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Description de la route"
-
-msgid "Show Locale"
-msgstr "Afficher la locale"
-
-msgid "Former Destinations"
-msgstr "Destinations précédentes"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Message"
-
-msgid "Back"
-msgstr "Retour"
-
-msgid "Back to map"
-msgstr "Retourner à la carte"
-
-msgid "Main Menu"
-msgstr "Menu principal"
-
-msgid "House number"
-msgstr "Numéro de maison"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Position du véhicule"
-
-msgid "Main menu"
-msgstr "Menu principal"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Afficher\n"
-"la carte"
-
-msgid "Settings"
-msgstr "Configuration"
-
-msgid "Tools"
-msgstr "Outils"
-
-msgid "Route"
-msgstr "Itinéraire"
-
-msgid "About"
-msgstr "À propos"
-
-msgid "Quit"
-msgstr "Quitter"
-
-msgid "Actions"
-msgstr "Actions"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Arrêter\n"
-"La navigation"
-
-msgid "Display"
-msgstr "Affichage"
-
-msgid "Fullscreen"
-msgstr "Plein écran"
-
-msgid "Window Mode"
-msgstr "Mode fenêtré"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Description"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "cheval"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "puis sortez du rond-point à la %1$s %2$s"
diff --git a/po/fy.po.in b/po/fy.po.in
deleted file mode 100644
index 5b3e798cb..000000000
--- a/po/fy.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# Frisian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# 205 https://launchpad.net/~205-z
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2011-08-12 12:18+0000\n"
-"Last-Translator: 205 <Unknown>\n"
-"Language-Team: Frisian <fy@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: fy\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr "Earste"
-
-msgid "second"
-msgstr "twadde"
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr "fjirde"
-
-msgid "fifth"
-msgstr "fyfde"
-
-msgid "sixth"
-msgstr "sechste"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr ""
-
-msgid "second exit"
-msgstr ""
-
-msgid "third exit"
-msgstr ""
-
-msgid "fourth exit"
-msgstr ""
-
-msgid "fifth exit"
-msgstr ""
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr ""
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "hynder"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/gl.po.in b/po/gl.po.in
deleted file mode 100644
index e4cb41cd6..000000000
--- a/po/gl.po.in
+++ /dev/null
@@ -1,2749 +0,0 @@
-# Galician translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Iván Pérez https://launchpad.net/~ivan.perez-keera.es
-# Miguel Anxo Bouzada https://launchpad.net/~mbouzada
-# Xosé https://launchpad.net/~ubuntu-galizaweb
-# andreout https://launchpad.net/~andre-outeiro
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: andreout <andre@outeiro.com>\n"
-"Language-Team: Galician <gl@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: gl\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Executando desde o directorio fonte.\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "Establecendo '%s' a '%s'.\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "cero-ésimo"
-
-msgid "first"
-msgstr "primeiro"
-
-msgid "second"
-msgstr "segundo"
-
-msgid "third"
-msgstr "terceiro"
-
-msgid "fourth"
-msgstr "cuarto"
-
-msgid "fifth"
-msgstr "quinto"
-
-msgid "sixth"
-msgstr "sexto"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "cero-ésimo"
-
-msgid "first exit"
-msgstr "primeria saída"
-
-msgid "second exit"
-msgstr "segunda saída"
-
-msgid "third exit"
-msgstr "terceria saída"
-
-msgid "fourth exit"
-msgstr "cuarta saída"
-
-msgid "fifth exit"
-msgstr "quinta saída"
-
-msgid "sixth exit"
-msgstr "sexta saída"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metros"
-
-#, c-format
-msgid "in %d meters"
-msgstr "en %d metros"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d quilómetros"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "en %d.%d quilómetros"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "un quilómetro"
-msgstr[1] "%d quilómetros"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "nun quilómetro"
-msgstr[1] "en %d quilómetros"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "na rampa"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s na rúa %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s no %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s na %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s no %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s na %s"
-
-msgid "When possible, please turn around"
-msgstr "Cando sexa posible, dea a volta"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Siga a estrada durante os próximos %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Métase pronto na rotonda"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Saia da rotonda pola %1$s %2$s"
-
-msgid "soon"
-msgstr "cedo"
-
-msgid "now"
-msgstr "agora"
-
-msgid "then"
-msgstr "logo"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Tome a saida %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Tome a saida %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "á dereita"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "á esquerda"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "suavemente "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "bruscamente "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Tome a estrada %1$s cara o %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "despois de %i estradas"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Xire %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "logo dea a volta"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Dea a volta %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "logo dea a volta"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Dea a volta %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "despois xa chega ao seu destino"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Chegou ao seu destino %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Saída"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posición"
-
-msgid "Command"
-msgstr "Orde"
-
-msgid "Length"
-msgstr "Duración"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tempo"
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Definir como posición"
-
-msgid "Set as destination"
-msgstr "Definir como destino"
-
-msgid "Add as bookmark"
-msgstr "Engadir como marcador"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punto 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Emiratos Ãrabes Unidos"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistán"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antiga e Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguila"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antillas Holandesas"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antártida"
-
-#. 032
-msgid "Argentina"
-msgstr "Arxentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Americana"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Illas Aland"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Acerbaixán"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia e Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Bélxica"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burquina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr "Barein"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "San Bartolomeu"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bután"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Illa Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorusia"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canadá"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Illas Cocos (Keeling)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, República Democrática do"
-
-#. 140
-msgid "Central African Republic"
-msgstr "República Centroafricana"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Suíza"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Costa do Marfín"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Illas Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Camerún"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cabo Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Illa de Nadal"
-
-#. 196
-msgid "Cyprus"
-msgstr "Chipre"
-
-#. 203
-msgid "Czech Republic"
-msgstr "República Checa"
-
-#. 276
-msgid "Germany"
-msgstr "Alemaña"
-
-#. 262
-msgid "Djibouti"
-msgstr "Xibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Dinamarca"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "República Dominicana"
-
-#. 012
-msgid "Algeria"
-msgstr "Alxeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Exipto"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara Occidental"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "España"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopía"
-
-#. 246
-msgid "Finland"
-msgstr "Finlandia"
-
-#. 242
-msgid "Fiji"
-msgstr "Fixi"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Illas Falkland (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronesia, Estados Federados de"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Illas Feroe"
-
-#. 250
-msgid "France"
-msgstr "Franza"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabón"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Reino Unido"
-
-#. 308
-msgid "Grenada"
-msgstr "Granada"
-
-#. 268
-msgid "Georgia"
-msgstr "Xeorxia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guaiana Francesa"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Gana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Xibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenlandia"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guiné"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guiné Ecuatorial"
-
-#. 300
-msgid "Greece"
-msgstr "Grecia"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Xeorxia do Sul e Illas Sandwich do Sul"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guiné-Bisau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guaiana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Illa Heard e Illas McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croacia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haití"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungría"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Illa de Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Territorio Británico do Océano Ãndico"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraq"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Irán, República Islámica de"
-
-#. 352
-msgid "Iceland"
-msgstr "Islandia"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Xamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Xordania"
-
-#. 392
-msgid "Japan"
-msgstr "Xapón"
-
-#. 404
-msgid "Kenya"
-msgstr "Quenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Quirguicistán"
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr "Comoros"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts e Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Corea, República Democrática Popular de"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Corea, República de"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Illas Caimán"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Casaquistán"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "República Democrática Popular de Lao"
-
-#. 422
-msgid "Lebanon"
-msgstr "Líbano"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Santa Lucía"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lituania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburgo"
-
-#. 428
-msgid "Latvia"
-msgstr "Letonia"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Marrocos"
-
-#. 492
-msgid "Monaco"
-msgstr "Mónaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavia, República de"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "San Martiño (parte francesa)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Illas Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedonia, antiga República Iugoslava de"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macau"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Illas Marianas do Norte"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinica"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauricio"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldivas"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "México"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malasia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nova Caledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Níxer"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Illa de Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nixeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Países Baixos"
-
-#. 578
-msgid "Norway"
-msgstr "Noruega"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nova Celanda"
-
-#. 512
-msgid "Oman"
-msgstr "Omán"
-
-#. 591
-msgid "Panama"
-msgstr "Panamá"
-
-#. 604
-msgid "Peru"
-msgstr "Perú"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinesia Francesa"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papúa Nova Guiné"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipinas"
-
-#. 586
-msgid "Pakistan"
-msgstr "Paquistán"
-
-#. 616
-msgid "Poland"
-msgstr "Polonia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "San Pedro e Miguelón"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Porto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Territorios Palestinos, Ocupados"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguai"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunión"
-
-#. 642
-msgid "Romania"
-msgstr "Rumanía"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Federación Rusa"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arabia Saudí"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Illas Salomón"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudán"
-
-#. 752
-msgid "Sweden"
-msgstr "Suecia"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Santa Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Eslovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard e Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Eslovaquia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Serra Leoa"
-
-#. 674
-msgid "San Marino"
-msgstr "San Mariño"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "São Tomé e Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "República Ãrabe Siria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Suazilandia"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Illas Turks e Caicos"
-
-#. 148
-msgid "Chad"
-msgstr "Chad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Territorios Franceses do Sur"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tailandia"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Taxiquistán"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turcomenistán"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunicia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turquía"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trindade e Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, Provincia de China"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "República Unida de Tanzania"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ucraína"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Illas Exteriores Menores dos Estados Unidos da América"
-
-#. 840
-msgid "United States"
-msgstr "Estados Unidos de América"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguai"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbequistán"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Santa Sé (Estado da Cidade do Vaticano)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "San Vicente e as Granadinas"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Illas Virxes, Británicas"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Illas Virxes, EE.UU."
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis e Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Iemen"
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr "Sudáfrica"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr "Coche"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "País"
-
-msgid "Postal"
-msgstr "Postal"
-
-msgid "Town"
-msgstr "Vila"
-
-msgid "District"
-msgstr "Distrito"
-
-msgid "Street"
-msgstr "Rúa"
-
-msgid "Number"
-msgstr "Número"
-
-msgid "Enter Destination"
-msgstr "Introduza o destino"
-
-msgid "Zip Code"
-msgstr "Código postal"
-
-msgid "City"
-msgstr "Cidade"
-
-msgid "District/Township"
-msgstr "Concello"
-
-msgid "Map"
-msgstr "Mapa"
-
-msgid "Bookmark"
-msgstr "Marcador"
-
-msgid "Destination"
-msgstr "Destino"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr "Diminuír a ampliación"
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr "Aumentar a ampliación"
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr "Redebuxar o mapa"
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr "Probar"
-
-msgid "_Quit"
-msgstr "_Saír"
-
-msgid "Quit the application"
-msgstr "Saír do aplicativo"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr "Datos"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr "NL"
-
-msgid "E"
-msgstr "L"
-
-msgid "SE"
-msgstr "SL"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SO"
-
-msgid "W"
-msgstr "O"
-
-msgid "NW"
-msgstr "NO"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Non"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr "Axuda"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Ver no navegador"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Rúas"
-
-msgid "House numbers"
-msgstr "Números de portal"
-
-msgid "View Attributes"
-msgstr "Ver os atributos"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "POI"
-
-msgid "View on map"
-msgstr "Ver no mapa"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr "Mudar o nome do marcador"
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr "Borrar o marcador"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Marcadores"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Marcador %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Mostrar o estado do satélite"
-
-msgid " Elevation "
-msgstr " Elevación "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr "coche"
-
-msgid "bike"
-msgstr "bicicleta"
-
-msgid "pedestrian"
-msgstr "peón"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Perfil actual: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Alterar o perfil para: %s"
-
-msgid "Set as active"
-msgstr "Definir como activo"
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr "Engadir un marcador"
-
-msgid "Rename"
-msgstr "Mudar o nome"
-
-msgid "About Navit"
-msgstr "Acerca do Navit"
-
-#. Authors
-msgid "By"
-msgstr "Por"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Vehículo"
-
-msgid "Rules"
-msgstr "Regras"
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Mapas"
-
-msgid "Layout"
-msgstr "Disposición"
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr "Destinos anteriores"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Mensaxe"
-
-msgid "Back"
-msgstr "Recuar"
-
-msgid "Back to map"
-msgstr "Voltar ao mapa"
-
-msgid "Main Menu"
-msgstr "Menú principal"
-
-msgid "House number"
-msgstr "Número de casa"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr "Roteiro"
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr "Saír"
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Parar a\n"
-"navegación"
-
-msgid "Display"
-msgstr "Visualizar"
-
-msgid "Fullscreen"
-msgstr "Pantalla completa"
-
-msgid "Window Mode"
-msgstr "Modo de xanela"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Descrición"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "cabalo"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "logo saia da rotonda pola %1$s %2$s"
diff --git a/po/he.po.in b/po/he.po.in
deleted file mode 100644
index 2fb3df1eb..000000000
--- a/po/he.po.in
+++ /dev/null
@@ -1,2752 +0,0 @@
-# Hebrew translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Evgeniy Ginzburg https://launchpad.net/~nad-oby
-# KaZeR https://launchpad.net/~kazer
-# Nadav https://launchpad.net/~nadavz
-# Yaron https://launchpad.net/~sh-yaron
-# rintintin https://launchpad.net/~yonatanhak-gmail
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
-"Language-Team: Hebrew <he@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: he\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "מופעל מתיקיית המקור\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "הגדרת '%s' ל־'%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "×‘×ž×§×•× ×”Ö¾0"
-
-msgid "first"
-msgstr "ר×שון"
-
-msgid "second"
-msgstr "שני"
-
-msgid "third"
-msgstr "שלישי"
-
-msgid "fourth"
-msgstr "רביעי"
-
-msgid "fifth"
-msgstr "חמישי"
-
-msgid "sixth"
-msgstr "שישי"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "היצי××” ×”-0"
-
-msgid "first exit"
-msgstr "היצי××” הר×שונה"
-
-msgid "second exit"
-msgstr "היצי××” השנייה"
-
-msgid "third exit"
-msgstr "היצי××” השלישית"
-
-msgid "fourth exit"
-msgstr "היצי××” הרביעית"
-
-msgid "fifth exit"
-msgstr "היצי××” החמישית"
-
-msgid "sixth exit"
-msgstr "היצי××” השישית"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d רגל"
-
-#, c-format
-msgid "in %d feet"
-msgstr "בעוד %d רגל"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d מיילי×"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "בעוד %d.%d מיילי×"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "מייל ×חד"
-msgstr[1] "%d מיילי×"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "בעוד מייל ×חד"
-msgstr[1] "בעוד %d מייל×"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d מטרי×"
-
-#, c-format
-msgid "in %d meters"
-msgstr "בעוד %d מטרי×"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d קילומטרי×"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "בעוד %d.%d קילומטרי×"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "קילומטר ×חד"
-msgstr[1] "%d קילומטרי×"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "בעוד קילומטר ×חד"
-msgstr[1] "בעוד %d קילומטרי×"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "×ל הרמפה"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s ×ל רחוב %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s ×ל רחוב %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s ×ל רחוב %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s ×ל רחוב %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s×ל תוך ×”%s"
-
-msgid "When possible, please turn around"
-msgstr "כשית×פשר לך, פנה חזרה"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "המשך בדרך זו למשך %s"
-
-msgid "Enter the roundabout soon"
-msgstr "הכנס לכיכר הקרובה"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "×¦× ×ž×”×›×™×›×¨ ב%1$s %2$s"
-
-msgid "soon"
-msgstr "בקרוב"
-
-msgid "now"
-msgstr "כעת"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "ימינה"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "שמ×לה"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "מעט "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "בצורה חדה "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "קח ×ת הכביש ×”%1$s ×ל %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "ל×חר %i כבישי×"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "פנה %1$s %2$s %4$s %3$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "ו××– הגעת ליעד."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "הגעת ליעדך %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "יצי××”"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "מיקו×"
-
-msgid "Command"
-msgstr "פקודה"
-
-msgid "Length"
-msgstr "×ורך"
-
-msgid "km"
-msgstr "ק\"מ"
-
-msgid "m"
-msgstr "מ'"
-
-msgid "Time"
-msgstr "זמן"
-
-msgid "Destination Length"
-msgstr "מרחק ליעד"
-
-msgid "Destination Time"
-msgstr "זמן ליעד"
-
-msgid "Roadbook"
-msgstr "הור×ות נסיעה"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "קבע ×›×ž×™×§×•× × ×•×›×—×™"
-
-msgid "Set as destination"
-msgstr "קבע כיעד"
-
-msgid "Add as bookmark"
-msgstr "צור סימניה ×œ×ž×§×•× ×–×”"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "נקודה 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "קו×ורדינטת מסך: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "×נדורה"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "×יחוד ×”×מירויות הערביות"
-
-#. 004
-msgid "Afghanistan"
-msgstr "×פגניסטן"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "×נטיגו××” וברבודה"
-
-#. 660
-msgid "Anguilla"
-msgstr "×נגווילה"
-
-#. 008
-msgid "Albania"
-msgstr "×לבניה"
-
-#. 051
-msgid "Armenia"
-msgstr "×רמניה"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "×”×× ×˜×™×œ×™× ×”×”×•×œ× ×“×™×™×"
-
-#. 024
-msgid "Angola"
-msgstr "×נגולה"
-
-#. 010
-msgid "Antarctica"
-msgstr "×נט×רקטיקה"
-
-#. 032
-msgid "Argentina"
-msgstr "×רגנטינה"
-
-#. 016
-msgid "American Samoa"
-msgstr "סמו××” ×”×מריק×ית"
-
-#. 040
-msgid "Austria"
-msgstr "×וסטריה"
-
-#. 036
-msgid "Australia"
-msgstr "×וסטרליה"
-
-#. 533
-msgid "Aruba"
-msgstr "×רובה"
-
-#. 248
-msgid "Aland Islands"
-msgstr "××™×™ ×ל×נדה"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "×זרבייג'×ן"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "בוסניה והרצגובינה"
-
-#. 052
-msgid "Barbados"
-msgstr "ברבדוס"
-
-#. 050
-msgid "Bangladesh"
-msgstr "בנגלדש"
-
-#. 056
-msgid "Belgium"
-msgstr "בלגיה"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "בורקינה פ×סו"
-
-#. 100
-msgid "Bulgaria"
-msgstr "בולגריה"
-
-#. 048
-msgid "Bahrain"
-msgstr "בחריין"
-
-#. 108
-msgid "Burundi"
-msgstr "בורונדי"
-
-#. 204
-msgid "Benin"
-msgstr "בנין"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "סנט ברתלמי"
-
-#. 060
-msgid "Bermuda"
-msgstr "ברמודה"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "סולטנות ברוניי"
-
-#. 068
-msgid "Bolivia"
-msgstr "בוליביה"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "ברזיל"
-
-#. 044
-msgid "Bahamas"
-msgstr "××™×™ בה×מה"
-
-#. 064
-msgid "Bhutan"
-msgstr "בהוט×ן"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "××™ בובט"
-
-#. 072
-msgid "Botswana"
-msgstr "בוטסו×× ×”"
-
-#. 112
-msgid "Belarus"
-msgstr "בלרוס"
-
-#. 084
-msgid "Belize"
-msgstr "בליז"
-
-#. 124
-msgid "Canada"
-msgstr "קנדה"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "××™×™ קוקוס (קילינג)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "הרפובליקה הדמוקרטית של קונגו"
-
-#. 140
-msgid "Central African Republic"
-msgstr "רפובליקת מרכז ×פריקה"
-
-#. 178
-msgid "Congo"
-msgstr "קונגו"
-
-#. 756
-msgid "Switzerland"
-msgstr "שוויץ"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "חוף השנהב"
-
-#. 184
-msgid "Cook Islands"
-msgstr "××™×™ קוק"
-
-#. 152
-msgid "Chile"
-msgstr "צ'ילה"
-
-#. 120
-msgid "Cameroon"
-msgstr "קמרון"
-
-#. 156
-msgid "China"
-msgstr "סין"
-
-#. 170
-msgid "Colombia"
-msgstr "קולומביה"
-
-#. 188
-msgid "Costa Rica"
-msgstr "קוסטה ריקה"
-
-#. 192
-msgid "Cuba"
-msgstr "קובה"
-
-#. 132
-msgid "Cape Verde"
-msgstr "קייפ ורדה"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "××™ כריסמס"
-
-#. 196
-msgid "Cyprus"
-msgstr "קפריסין"
-
-#. 203
-msgid "Czech Republic"
-msgstr "צ'כיה"
-
-#. 276
-msgid "Germany"
-msgstr "גרמניה"
-
-#. 262
-msgid "Djibouti"
-msgstr "ג'יבוטי"
-
-#. 208
-msgid "Denmark"
-msgstr "דנמרק"
-
-#. 212
-msgid "Dominica"
-msgstr "דומיניקה"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "הרפובליקה הדומיניקנית"
-
-#. 012
-msgid "Algeria"
-msgstr "×לג'יריה"
-
-#. 218
-msgid "Ecuador"
-msgstr "×קוודור"
-
-#. 233
-msgid "Estonia"
-msgstr "×סטוניה"
-
-#. 818
-msgid "Egypt"
-msgstr "מצרי×"
-
-#. 732
-msgid "Western Sahara"
-msgstr "סהרה המערבית"
-
-#. 232
-msgid "Eritrea"
-msgstr "×ריתרי××”"
-
-#. 724
-msgid "Spain"
-msgstr "ספרד"
-
-#. 231
-msgid "Ethiopia"
-msgstr "×תיופיה"
-
-#. 246
-msgid "Finland"
-msgstr "פינלנד"
-
-#. 242
-msgid "Fiji"
-msgstr "פיג'י"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "××™×™ פוקלנד"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "מיקרונזיה"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "××™×™ פ×רו"
-
-#. 250
-msgid "France"
-msgstr "צרפת"
-
-#. 266
-msgid "Gabon"
-msgstr "גבון"
-
-#. 826
-msgid "United Kingdom"
-msgstr "×נגליה"
-
-#. 308
-msgid "Grenada"
-msgstr "גרנדה"
-
-#. 268
-msgid "Georgia"
-msgstr "×’×ורגיה"
-
-#. 254
-msgid "French Guiana"
-msgstr "×’×™×× ×” הצרפתית"
-
-#. 831
-msgid "Guernsey"
-msgstr "גרנזי"
-
-#. 288
-msgid "Ghana"
-msgstr "×’×× ×”"
-
-#. 292
-msgid "Gibraltar"
-msgstr "גיברלטר"
-
-#. 304
-msgid "Greenland"
-msgstr "גרינלנד"
-
-#. 270
-msgid "Gambia"
-msgstr "גמביה"
-
-#. 324
-msgid "Guinea"
-msgstr "×’×™× ××”"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "גוו×דלופ"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "×’×™× ××” המשוונית"
-
-#. 300
-msgid "Greece"
-msgstr "יוון"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "××™×™ ×’'ורג'×™×” הדרומית ו××™×™ סנדוויץ' הדרומיי×"
-
-#. 320
-msgid "Guatemala"
-msgstr "גו×טמלה"
-
-#. 316
-msgid "Guam"
-msgstr "גו××"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "×’×™× ×™××” ביס×ו"
-
-#. 328
-msgid "Guyana"
-msgstr "×’×™×× ×”"
-
-#. 344
-msgid "Hong Kong"
-msgstr "הונג קונג"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "×”××™ הרד ו××™×™ מקדונלד"
-
-#. 340
-msgid "Honduras"
-msgstr "הונדורס"
-
-#. 191
-msgid "Croatia"
-msgstr "קרו×טיה"
-
-#. 332
-msgid "Haiti"
-msgstr "×”×יטי"
-
-#. 348
-msgid "Hungary"
-msgstr "הונגריה"
-
-#. 360
-msgid "Indonesia"
-msgstr "×ינדונזיה"
-
-#. 372
-msgid "Ireland"
-msgstr "×ירלנד"
-
-#. 376
-msgid "Israel"
-msgstr "ישר×ל"
-
-#. 833
-msgid "Isle of Man"
-msgstr "×”××™ מ×ן"
-
-#. 356
-msgid "India"
-msgstr "הודו"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "הטריטוריה הבריטית ב×וקיינוס ההודי"
-
-#. 368
-msgid "Iraq"
-msgstr "עיר×ק"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "×ירן"
-
-#. 352
-msgid "Iceland"
-msgstr "×יסלנד"
-
-#. 380
-msgid "Italy"
-msgstr "×יטליה"
-
-#. 832
-msgid "Jersey"
-msgstr "ג'רסי"
-
-#. 388
-msgid "Jamaica"
-msgstr "ג'מייקה"
-
-#. 400
-msgid "Jordan"
-msgstr "ירדן"
-
-#. 392
-msgid "Japan"
-msgstr "יפן"
-
-#. 404
-msgid "Kenya"
-msgstr "קניה"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "קירגיסטן"
-
-#. 116
-msgid "Cambodia"
-msgstr "קמבודיה"
-
-#. 296
-msgid "Kiribati"
-msgstr "קיריב×טי"
-
-#. 174
-msgid "Comoros"
-msgstr "××™×™ קומורו"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "סנט קיטס ונוויס"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "קורי××” הצפונית"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "קורי××” הדרומית"
-
-#. 414
-msgid "Kuwait"
-msgstr "כווית"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "××™×™ קיימן"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "קזחסטן"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "ל×וס"
-
-#. 422
-msgid "Lebanon"
-msgstr "לבנון"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "סנט לוסיה"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "ליכטנשטיין"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "סרי לנקה"
-
-#. 430
-msgid "Liberia"
-msgstr "ליבריה"
-
-#. 426
-msgid "Lesotho"
-msgstr "לסוטו"
-
-#. 440
-msgid "Lithuania"
-msgstr "ליט×"
-
-#. 442
-msgid "Luxembourg"
-msgstr "לוקסמבורג"
-
-#. 428
-msgid "Latvia"
-msgstr "לטביה"
-
-#. 434
-msgid "Libya"
-msgstr "לוב"
-
-#. 504
-msgid "Morocco"
-msgstr "מרוקו"
-
-#. 492
-msgid "Monaco"
-msgstr "מונקו"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "מולדובה"
-
-#. 499
-msgid "Montenegro"
-msgstr "מונטנגרו"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "סנט מרטיו (החלק הצרפתי)"
-
-#. 450
-msgid "Madagascar"
-msgstr "מדגסקר"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "××™×™ מרשל"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "מקדוניה"
-
-#. 466
-msgid "Mali"
-msgstr "מ×לי"
-
-#. 104
-msgid "Myanmar"
-msgstr "מי×נמר"
-
-#. 496
-msgid "Mongolia"
-msgstr "מונגוליה"
-
-#. 446
-msgid "Macao"
-msgstr "מק×ו"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "××™×™ מרי×× ×” הצפוניי×"
-
-#. 474
-msgid "Martinique"
-msgstr "מרטיניק"
-
-#. 478
-msgid "Mauritania"
-msgstr "מ×וריטניה"
-
-#. 500
-msgid "Montserrat"
-msgstr "מונטסר×ט"
-
-#. 470
-msgid "Malta"
-msgstr "מלטה"
-
-#. 480
-msgid "Mauritius"
-msgstr "מ×וריציוס"
-
-#. 462
-msgid "Maldives"
-msgstr "×”××™×™× ×”×ž×œ×“×™×‘×™×™×"
-
-#. 454
-msgid "Malawi"
-msgstr "מל×ווי"
-
-#. 484
-msgid "Mexico"
-msgstr "מקסיקו"
-
-#. 458
-msgid "Malaysia"
-msgstr "מלזיה"
-
-#. 508
-msgid "Mozambique"
-msgstr "מוזמביק"
-
-#. 516
-msgid "Namibia"
-msgstr "נמיביה"
-
-#. 540
-msgid "New Caledonia"
-msgstr "קלדוניה החדשה"
-
-#. 562
-msgid "Niger"
-msgstr "ניז'ר"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "×”××™ נורפוק"
-
-#. 566
-msgid "Nigeria"
-msgstr "ניגריה"
-
-#. 558
-msgid "Nicaragua"
-msgstr "ניקרגו××”"
-
-#. 528
-msgid "Netherlands"
-msgstr "הולנד"
-
-#. 578
-msgid "Norway"
-msgstr "נורבגיה"
-
-#. 524
-msgid "Nepal"
-msgstr "נפ×ל"
-
-#. 520
-msgid "Nauru"
-msgstr "× ×ורו"
-
-#. 570
-msgid "Niue"
-msgstr "ניו××”"
-
-#. 554
-msgid "New Zealand"
-msgstr "ניו-זילנד"
-
-#. 512
-msgid "Oman"
-msgstr "עומן"
-
-#. 591
-msgid "Panama"
-msgstr "פנמה"
-
-#. 604
-msgid "Peru"
-msgstr "פרו"
-
-#. 258
-msgid "French Polynesia"
-msgstr "פולינזיה הצרפתית"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "פפו××” ×’×™× ××” החדשה"
-
-#. 608
-msgid "Philippines"
-msgstr "הפיליפיני×"
-
-#. 586
-msgid "Pakistan"
-msgstr "פקיסטן"
-
-#. 616
-msgid "Poland"
-msgstr "פולין"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "סנט פייר ומיקלון"
-
-#. 612
-msgid "Pitcairn"
-msgstr "פיטקרן"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "פורטו ריקו"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "פלסטין"
-
-#. 620
-msgid "Portugal"
-msgstr "פורטוגל"
-
-#. 585
-msgid "Palau"
-msgstr "פל×ו"
-
-#. 600
-msgid "Paraguay"
-msgstr "פר×גוו××™"
-
-#. 634
-msgid "Qatar"
-msgstr "קט×ר"
-
-#. 638
-msgid "Reunion"
-msgstr "ריוניון"
-
-#. 642
-msgid "Romania"
-msgstr "רומניה"
-
-#. 688
-msgid "Serbia"
-msgstr "סרביה"
-
-#. 643
-msgid "Russian Federation"
-msgstr "רוסיה"
-
-#. 646
-msgid "Rwanda"
-msgstr "רו×נדה"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "ערב הסעודית"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "××™×™ שלמה"
-
-#. 690
-msgid "Seychelles"
-msgstr "××™×™ סיישל"
-
-#. 736
-msgid "Sudan"
-msgstr "סודן"
-
-#. 752
-msgid "Sweden"
-msgstr "שבדיה"
-
-#. 702
-msgid "Singapore"
-msgstr "סינגפור"
-
-#. 654
-msgid "Saint Helena"
-msgstr "סנט הלנה"
-
-#. 705
-msgid "Slovenia"
-msgstr "סלובניה"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "סוולבר×ד וי×ן מ×יין"
-
-#. 703
-msgid "Slovakia"
-msgstr "סלובקיה"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "סיירה לי×ונה"
-
-#. 674
-msgid "San Marino"
-msgstr "סן מרינו"
-
-#. 686
-msgid "Senegal"
-msgstr "סנגל"
-
-#. 706
-msgid "Somalia"
-msgstr "סומליה"
-
-#. 740
-msgid "Suriname"
-msgstr "סורינ××"
-
-#. 728
-msgid "South Sudan"
-msgstr "×“×¨×•× ×¡×•×“×Ÿ"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "ס×ו תומה ופרינסיפה"
-
-#. 222
-msgid "El Salvador"
-msgstr "×ל סלוודור"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "סוריה"
-
-#. 748
-msgid "Swaziland"
-msgstr "סווזילנד"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "××™×™ טורקס וק×יקוס"
-
-#. 148
-msgid "Chad"
-msgstr "צ'×ד"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "הטריטוריות ×”×“×¨×•× ×¦×¨×¤×ª×™×•×ª"
-
-#. 768
-msgid "Togo"
-msgstr "טוגו"
-
-#. 764
-msgid "Thailand"
-msgstr "ת×ילנד"
-
-#. 762
-msgid "Tajikistan"
-msgstr "טג'יקיסטן"
-
-#. 772
-msgid "Tokelau"
-msgstr "טוקל×ו"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "טימור מזרח"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "טורקמניסטן"
-
-#. 788
-msgid "Tunisia"
-msgstr "טוניסיה"
-
-#. 776
-msgid "Tonga"
-msgstr "טונגה"
-
-#. 792
-msgid "Turkey"
-msgstr "טורקיה"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "טרינידד וטובגו"
-
-#. 798
-msgid "Tuvalu"
-msgstr "טובלו"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "ט×יוו×ן"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "טנזניה"
-
-#. 804
-msgid "Ukraine"
-msgstr "×וקר××™× ×”"
-
-#. 800
-msgid "Uganda"
-msgstr "×וגנדה"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "××™×™× ×ž×–×¢×¨×™×™× ×•×ž×¨×•×—×§×™× ×”×©×™×™×›×™× ×œ×רה\"ב"
-
-#. 840
-msgid "United States"
-msgstr "×רצות הברית"
-
-#. 858
-msgid "Uruguay"
-msgstr "×ורוגוו××™"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "×וזבקיסטן"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "וותיקן"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "סנט וינסנט והגרנדיני×"
-
-#. 862
-msgid "Venezuela"
-msgstr "ונצו×לה"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "××™×™ הבתולה (בריטיי×)"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "××™×™ הבתולה (×רה\"ב)"
-
-#. 704
-msgid "Viet Nam"
-msgstr "וייטנ××"
-
-#. 548
-msgid "Vanuatu"
-msgstr "ונו×טו"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "ו×ליס ופוטונה"
-
-#. 882
-msgid "Samoa"
-msgstr "סמו××”"
-
-#. 887
-msgid "Yemen"
-msgstr "תימן"
-
-#. 175
-msgid "Mayotte"
-msgstr "מיוט"
-
-#. 710
-msgid "South Africa"
-msgstr "×“×¨×•× ×פריקה"
-
-#. 894
-msgid "Zambia"
-msgstr "זמביה"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "זימבבו××”"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "*×œ× ×™×“×•×¢,הוסף תגי is_in ×œ×¢×¨×™× ×לו"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "נקודה במפה"
-
-msgid "Car"
-msgstr "מכונית"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "×רץ"
-
-msgid "Postal"
-msgstr "דו×ר"
-
-msgid "Town"
-msgstr "עיירה"
-
-msgid "District"
-msgstr "מחוז"
-
-msgid "Street"
-msgstr "רחוב"
-
-msgid "Number"
-msgstr "מס'"
-
-msgid "Enter Destination"
-msgstr "הכנס יעד"
-
-msgid "Zip Code"
-msgstr "מיקוד"
-
-msgid "City"
-msgstr "עיר"
-
-msgid "District/Township"
-msgstr "מחוז/×יזור העיר"
-
-msgid "Map"
-msgstr "מפה"
-
-msgid "Bookmark"
-msgstr "סימניה"
-
-msgid "Destination"
-msgstr "יעד"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "תצוגה"
-
-msgid "_Route"
-msgstr "מסלול"
-
-msgid "_Former Destinations"
-msgstr "×™×¢×“×™× ×§×•×“×ž×™×"
-
-msgid "_Bookmarks"
-msgstr "סימניות"
-
-msgid "_Map"
-msgstr "מפה"
-
-msgid "_Layout"
-msgstr "מערך"
-
-msgid "_Projection"
-msgstr "תכנון"
-
-msgid "_Vehicle"
-msgstr "רכב (ׂGPS)"
-
-msgid "Zoom_Out"
-msgstr "התרחק"
-
-msgid "Decrease zoom level"
-msgstr "התרחקות"
-
-msgid "Zoom_In"
-msgstr "התקרב"
-
-msgid "Increase zoom level"
-msgstr "התקרבות"
-
-msgid "_Recalculate"
-msgstr "חשב מחדש"
-
-msgid "Redraw map"
-msgstr "צייר מפה מחדש"
-
-msgid "_Info"
-msgstr "מידע"
-
-msgid "Set _destination"
-msgstr "הגדרת י_עד"
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "עצור ניווט"
-
-msgid "Test"
-msgstr "בדיקה"
-
-msgid "_Quit"
-msgstr "_יצי××”"
-
-msgid "Quit the application"
-msgstr "סגור יישו×"
-
-msgid "Show position _cursor"
-msgstr "הצגת _סמן המיקו×"
-
-msgid "_Lock on Road"
-msgstr "הנעל על הדרך"
-
-msgid "_Keep orientation to the North"
-msgstr "קיבוע הכיוון ל_צפון"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "החלפת כיווניות המפה לצפון ×ו לפי כיוון הרכב"
-
-msgid "_Roadbook"
-msgstr "הור×ות נסיעה"
-
-msgid "Show/hide route description"
-msgstr "הצגה/הסתרה של תי×ור המסלול"
-
-msgid "_Autozoom"
-msgstr "×–×•× ×וטומטי"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "הפעלה/נטרול של שינוי ×וטומטי של רמת תקריב"
-
-msgid "_Fullscreen"
-msgstr "מסך מל×"
-
-msgid "Data"
-msgstr "מידע"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "צ'"
-
-msgid "NE"
-msgstr "צפון מזרח"
-
-msgid "E"
-msgstr "מז'"
-
-msgid "SE"
-msgstr "×“×¨×•× ×ž×–×¨×—"
-
-msgid "S"
-msgstr "ד'"
-
-msgid "SW"
-msgstr "×“×¨×•× ×ž×¢×¨×‘"
-
-msgid "W"
-msgstr "מע'"
-
-msgid "NW"
-msgstr "צפון מערב"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "ל×"
-
-msgid "2D"
-msgstr "דו-מימד"
-
-msgid "3D"
-msgstr "תלת מימד"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "נש×רו עוד %4.0f ק\"מ, זמן ×”×’×¢×” משוער %02d:%02d"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "מסלול 0000ק\"מ 0+00:00 זמן הגעה משוער"
-
-msgid "Help"
-msgstr "עזרה"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "צפה בדפדפן ×ינטרנט"
-
-msgid "Item type"
-msgstr "סוג הפריט"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "רחובות"
-
-msgid "House numbers"
-msgstr "מספרי בתי×"
-
-msgid "View Attributes"
-msgstr "צפה בתכונות"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "הגדרה ×›×ž×™×§×•× (ונטרול הרכב)"
-
-msgid "POIs"
-msgstr "נ\"צ"
-
-msgid "View on map"
-msgstr "צפה במפה"
-
-msgid "Remove search results from the map"
-msgstr "הסרת תוצ×ות החיפוש מהמפה"
-
-msgid "Show results on the map"
-msgstr "הצגת תוצ×ות במפה"
-
-msgid "Cut Bookmark"
-msgstr "גזור סימניה"
-
-msgid "Copy Bookmark"
-msgstr "העתק סימניה"
-
-msgid "Rename Bookmark"
-msgstr "שנה ×©× ×¡×™×ž× ×™×™×”"
-
-msgid "Paste Bookmark"
-msgstr "הדבק סימניה"
-
-msgid "Delete Bookmark"
-msgstr "מחק סימניה"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "סימניות"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr "מחיקת תיקייה"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "הוספת תיקיית סימניות"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "הדבק סימניה"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "סימנייה %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr "הורדת מפה"
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "הצגת מצב הלווייני×"
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr "הצגת נתוני NMEA"
-
-msgid "car"
-msgstr "מכונית"
-
-msgid "bike"
-msgstr "×ופניי×"
-
-msgid "pedestrian"
-msgstr "הולך רגל"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "פרופיל נוכחי: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "שנה ×ת הפרופיל ל: %s"
-
-msgid "Set as active"
-msgstr "הגדרה כפעיל"
-
-msgid "Show Satellite status"
-msgstr "הצגת מצב הלווייני×"
-
-msgid "Show NMEA data"
-msgstr "הצגת נתוני NMEA"
-
-msgid "Add Bookmark"
-msgstr "הוסף סימניה"
-
-msgid "Rename"
-msgstr "עריכת ש×"
-
-msgid "About Navit"
-msgstr "×ודות Navit"
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "וכל הצוות של Navit"
-
-msgid "members and contributors."
-msgstr "×—×‘×¨×™× ×•×ª×•×¨×ž×™×."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr "× × ×œ×”×–×™×Ÿ נקודות ציון"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "רכב (ׂGPS)"
-
-msgid "Rules"
-msgstr "כללי×"
-
-msgid "Lock on road"
-msgstr "נעול על הדרך"
-
-msgid "Northing"
-msgstr "הצפנה"
-
-msgid "Map follows Vehicle"
-msgstr "מפה עוקבת ×חר הרכב"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "מפות"
-
-msgid "Layout"
-msgstr "מערך"
-
-msgid "Height Profile"
-msgstr "פרופיל גובה"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr "×™×¢×“×™× ×§×•×“×ž×™×"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "הודעה"
-
-msgid "Back"
-msgstr "חזרה"
-
-msgid "Back to map"
-msgstr "חזור למפה"
-
-msgid "Main Menu"
-msgstr "תפריט ר×שי"
-
-msgid "House number"
-msgstr "מספר בית"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "×ž×™×§×•× ×¨×›×‘"
-
-msgid "Main menu"
-msgstr "תפריט ר×שי"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"הצגת\n"
-"מפה"
-
-msgid "Settings"
-msgstr "הגדרות"
-
-msgid "Tools"
-msgstr "כלי×"
-
-msgid "Route"
-msgstr "מסלול"
-
-msgid "About"
-msgstr "×ודות"
-
-msgid "Quit"
-msgstr "יצי××”"
-
-msgid "Actions"
-msgstr "פעולות"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"עצור\n"
-"ניווט"
-
-msgid "Display"
-msgstr "תצוגה"
-
-msgid "Fullscreen"
-msgstr "מסך מל×"
-
-msgid "Window Mode"
-msgstr "מצב חלון"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "תי×ור"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "×חר כך ×¦× ×ž×”×›×™×›×¨ ב%1$s %2$s"
diff --git a/po/hi.po.in b/po/hi.po.in
deleted file mode 100644
index ba0d20e10..000000000
--- a/po/hi.po.in
+++ /dev/null
@@ -1,2745 +0,0 @@
-# Hindi translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# desh deep https://launchpad.net/~singhdeepdesh
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Hindi <hi@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: hi\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr ""
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr ""
-
-msgid "fifth"
-msgstr ""
-
-msgid "sixth"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "pehla nikas"
-
-msgid "second exit"
-msgstr "dusra nikas"
-
-msgid "third exit"
-msgstr "teesra nikas"
-
-msgid "fourth exit"
-msgstr "chautha nikas"
-
-msgid "fifth exit"
-msgstr "panchwa nikas"
-
-msgid "sixth exit"
-msgstr "chatha nikas"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meters"
-
-#, c-format
-msgid "in %d meters"
-msgstr "%d meters mein"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometero mein"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d.%d kilometero mein"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "ek kilometer"
-msgstr[1] "%d kilometero"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "ek kilometer mein"
-msgstr[1] "%d kilometero mein"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "dhalan mein"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%ssheher mein %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%ssheher mein %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%ssheher mein %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%ssheher mein %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr "जब संभव हो, कृपया चारों ओर मोड़"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "अगले%s के लिठसड़क का पालन करें"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "%1$s %2$s के राउंडअबाउट छोड़ें"
-
-msgid "soon"
-msgstr "जलà¥à¤¦à¥€"
-
-msgid "now"
-msgstr "अब"
-
-msgid "then"
-msgstr "तो"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "दायाà¤"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "बांया"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "आसानी से "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "दृढ़ता से "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "%1$s %2$s के लिठसड़क ले लो"
-
-#, c-format
-msgid "after %i roads"
-msgstr "%i के बाद सड़कों"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "तो चारों ओर मोड़"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "चारों ओर मोड़ %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "तो चारों ओर मोड़"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "चारों ओर मोड़ %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Nikas"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "तो %1$s %2$s के राउंडअबाउट छोड़"
diff --git a/po/hr.po.in b/po/hr.po.in
deleted file mode 100644
index c39cad97e..000000000
--- a/po/hr.po.in
+++ /dev/null
@@ -1,2754 +0,0 @@
-# Croatian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Marjan Vrban https://launchpad.net/~mvrban
-# gogo https://launchpad.net/~trebelnik-stefina
-# klajo https://launchpad.net/~klaudio
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: gogo <trebelnik2@gmail.com>\n"
-"Language-Team: Croatian <hr@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"Language: hr\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Starta iz izvorne mape\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "postavka '%s' na '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nulti"
-
-msgid "first"
-msgstr "prvi"
-
-msgid "second"
-msgstr "drugi"
-
-msgid "third"
-msgstr "treći"
-
-msgid "fourth"
-msgstr "Äetvrti"
-
-msgid "fifth"
-msgstr "peti"
-
-msgid "sixth"
-msgstr "Å¡esti"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nulti izlaz"
-
-msgid "first exit"
-msgstr "prvi izlaz"
-
-msgid "second exit"
-msgstr "drugi izlaz"
-
-msgid "third exit"
-msgstr "treći izlaz"
-
-msgid "fourth exit"
-msgstr "Äetvrti izlaz"
-
-msgid "fifth exit"
-msgstr "peti izlaz"
-
-msgid "sixth exit"
-msgstr "Å¡esti izlaz"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metara"
-
-#, c-format
-msgid "in %d meters"
-msgstr "za %d metara"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometara"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "za %d.%d kilometara"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d kilometar"
-msgstr[1] "%d kilometara"
-msgstr[2] "%d kilometara"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "za %d kilometar"
-msgstr[1] "za %d kilometara"
-msgstr[2] "za %d kilometara"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "na rampu"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%su ulicu %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%su %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%su %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%su %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%su %s"
-
-msgid "When possible, please turn around"
-msgstr "Ako je moguće okrenite se"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Pratite cestu za idući %s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Napustite kružni tok na %1$s %2$s"
-
-msgid "soon"
-msgstr "uskoro"
-
-msgid "now"
-msgstr "sada"
-
-msgid "then"
-msgstr "onda"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "desno"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "lijevo"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "jednostavno "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "teško "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Vozite cestom %1$s do %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "nakon %i ceste"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Krenite %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "onda okrenite se"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Okrenite se %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "onda okrenite se"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Okrenite se %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "nakon toga ste stigli do cilja"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Stigli ste na cilj %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Izlaz"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Pozicija"
-
-msgid "Command"
-msgstr "Naredba"
-
-msgid "Length"
-msgstr "Dužina"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Vrijeme"
-
-msgid "Destination Length"
-msgstr "Duljina odredišta"
-
-msgid "Destination Time"
-msgstr "Vrijeme dolaska"
-
-msgid "Roadbook"
-msgstr "Cestovni dnevnik"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Namjestite poziciju"
-
-msgid "Set as destination"
-msgstr "Namjestite odredište"
-
-msgid "Add as bookmark"
-msgstr "Dodajte zabilješku"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "ToÄka 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Koordinate ekrana : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andora"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Ujedinjeni Arapski Emirati"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua i Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguila"
-
-#. 008
-msgid "Albania"
-msgstr "Albanija"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenija"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Nizozemski Antili"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktika"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "AmeriÄki Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austrija"
-
-#. 036
-msgid "Australia"
-msgstr "Australija"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Alandski otoci"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbejdžan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna i Hercegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladeš"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgija"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bugarska"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrein"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Sveti Bartolomej"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunej Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivija"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brazil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Butan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Otok Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Bocvana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bjelorusija"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosovi (Keeling) otoci"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Demokratska republika Kongo"
-
-#. 140
-msgid "Central African Republic"
-msgstr "SrednjoafriÄka Republika"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Å vicarska"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Obala Bjelokosti"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cookovi otoci"
-
-#. 152
-msgid "Chile"
-msgstr "ÄŒile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Kina"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbija"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kostarika"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Zelenortski otoci"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Božićni otoci"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cipar"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Češka Republika"
-
-#. 276
-msgid "Germany"
-msgstr "NjemaÄka"
-
-#. 262
-msgid "Djibouti"
-msgstr "Džibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danska"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikanska Republika"
-
-#. 012
-msgid "Algeria"
-msgstr "Alžir"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonija"
-
-#. 818
-msgid "Egypt"
-msgstr "Egipat"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Zapadna Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritreja"
-
-#. 724
-msgid "Spain"
-msgstr "Å panjolska"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopija"
-
-#. 246
-msgid "Finland"
-msgstr "Finska"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidži"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandski otoci (Malvini)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronezija"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "OtoÄje Faroe"
-
-#. 250
-msgid "France"
-msgstr "Francuska"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Velika Britanija"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Gruzija"
-
-#. 254
-msgid "French Guiana"
-msgstr "Francuska Gvajana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Gana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grenland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambija"
-
-#. 324
-msgid "Guinea"
-msgstr "Gvineja"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Gvadalupa"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekvatorska Gvineja"
-
-#. 300
-msgid "Greece"
-msgstr "GrÄka"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Južna Georgija i Južno Sandwich OtoÄje"
-
-#. 320
-msgid "Guatemala"
-msgstr "Gvatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Gvineja-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Gvajana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Otok Heard i MacDonaldovi otoci"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Hrvatska"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Mađarska"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonezija"
-
-#. 372
-msgid "Ireland"
-msgstr "Irska"
-
-#. 376
-msgid "Israel"
-msgstr "Izrael"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isle of Man"
-
-#. 356
-msgid "India"
-msgstr "Indija"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Britanski Teritorij Indijskog Oceana"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran"
-
-#. 352
-msgid "Iceland"
-msgstr "Island"
-
-#. 380
-msgid "Italy"
-msgstr "Italija"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamajka"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordan"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenija"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komori"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Sveti Kitts i Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Sjeverna Koreja"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Južna Koreja"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuvajt"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kajmanski otoci"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazahstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Sveta Lucija"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Lihtenštajn"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberija"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litva"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luksemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvija"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Maroko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova"
-
-#. 499
-msgid "Montenegro"
-msgstr "Crna Gora"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (francuski dio)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Maršalovi otoci"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedonija"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Mjanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolija"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Sjeverno Marijansko OtoÄje"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritanija"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauricijus"
-
-#. 462
-msgid "Maldives"
-msgstr "Maledivi"
-
-#. 454
-msgid "Malawi"
-msgstr "Malavi"
-
-#. 484
-msgid "Mexico"
-msgstr "Meksiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malezija"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibija"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nova Kaledonija"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk OtoÄje"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigerija"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragva"
-
-#. 528
-msgid "Netherlands"
-msgstr "Nizozemska"
-
-#. 578
-msgid "Norway"
-msgstr "Norveška"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Novi Zeland"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Francuska Polinezija"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nova Gvineja"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipini"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Poljska"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre i Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Porto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestina"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paragvaj"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Rumunjska"
-
-#. 688
-msgid "Serbia"
-msgstr "Srbija"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Ruska Federacija"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudijska Arabija"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Solomonski otoci"
-
-#. 690
-msgid "Seychelles"
-msgstr "Sejšeli"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Å vedska"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Sveta Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenija"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard i Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "SlovaÄka"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalija"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sv. Toma i Princip"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Sirijska Arapska Republika"
-
-#. 748
-msgid "Swaziland"
-msgstr "Svazi"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks i Caicos OtoÄje"
-
-#. 148
-msgid "Chad"
-msgstr "ÄŒad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Francuski Južni Teritoriji"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tajland"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadžikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "IstoÄni TImor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunis"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turska"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad i Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Kineska Pokrajina Tajvan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzanija"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukrajina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Sjedinjene države jezera Minor Outlying"
-
-#. 840
-msgid "United States"
-msgstr "Sjedinjene države"
-
-#. 858
-msgid "Uruguay"
-msgstr "Urugvaj"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikan (država Vatikanskog grada)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Sveti Vincent i Grenadini"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venecuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "DjeviÄansko OtoÄje"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "DjeviÄansko otoÄje, SAD"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vijetnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis i Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Majote"
-
-#. 710
-msgid "South Africa"
-msgstr "Južna Afrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambija"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabve"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Nepoznato, dodajte is_in oznake za te gradove"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "ToÄka karte"
-
-msgid "Car"
-msgstr "Auto"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Država"
-
-msgid "Postal"
-msgstr "Poštanski"
-
-msgid "Town"
-msgstr "Grad"
-
-msgid "District"
-msgstr "PodruÄje"
-
-msgid "Street"
-msgstr "Ulica"
-
-msgid "Number"
-msgstr "Broj"
-
-msgid "Enter Destination"
-msgstr "Ubacite odredište"
-
-msgid "Zip Code"
-msgstr "Poštanski broj"
-
-msgid "City"
-msgstr "Grad"
-
-msgid "District/Township"
-msgstr "okrug/gradsko podruÄje"
-
-msgid "Map"
-msgstr "Karta"
-
-msgid "Bookmark"
-msgstr "Oznaka"
-
-msgid "Destination"
-msgstr "Odredište"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Ekran"
-
-msgid "_Route"
-msgstr "Ruta"
-
-msgid "_Former Destinations"
-msgstr "Nekadašnji odredište"
-
-msgid "_Bookmarks"
-msgstr "Oznake"
-
-msgid "_Map"
-msgstr "Karta"
-
-msgid "_Layout"
-msgstr "Izgled"
-
-msgid "_Projection"
-msgstr "Projekcija"
-
-msgid "_Vehicle"
-msgstr "Vozilo"
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr "Smanji nivo zooma"
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr "Povećaj nivo zooma"
-
-msgid "_Recalculate"
-msgstr "Ponovno izraÄunaj"
-
-msgid "Redraw map"
-msgstr "Ponovo nacrtaj kartu"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Otvara dijalog za pretragu adresa"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Stop navigaciju"
-
-msgid "Test"
-msgstr "Provjera"
-
-msgid "_Quit"
-msgstr "_Izlaz"
-
-msgid "Quit the application"
-msgstr "Izlaz iz aplikacije"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Mijenja orjentaciju karte prema sjeveru ili vozilu"
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr "Pokaži/sakrij opis rute"
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Omogući/onemogući automatski zoom"
-
-msgid "_Fullscreen"
-msgstr "_Cijeli zaslon"
-
-msgid "Data"
-msgstr "Podaci"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "S"
-
-msgid "NE"
-msgstr "SI"
-
-msgid "E"
-msgstr "I"
-
-msgid "SE"
-msgstr "JI"
-
-msgid "S"
-msgstr "J"
-
-msgid "SW"
-msgstr "JZ"
-
-msgid "W"
-msgstr "Z"
-
-msgid "NW"
-msgstr "SZ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ne"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Ruta %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Ruta 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Pomoć"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Vidi u pregledniku"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Ulice"
-
-msgid "House numbers"
-msgstr "kućni broja"
-
-msgid "View Attributes"
-msgstr "Vidi detalje"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "POIs"
-
-msgid "View on map"
-msgstr "Gledaj na kartu"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Izreži zabilješku"
-
-msgid "Copy Bookmark"
-msgstr "Kopiraj zabilješku"
-
-msgid "Rename Bookmark"
-msgstr "Preimenuj zabilješku"
-
-msgid "Paste Bookmark"
-msgstr "Zalijepi zabilješku"
-
-msgid "Delete Bookmark"
-msgstr "Obriši zabilješku"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Oznake"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Dodaj mapu zabilješki"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Zalijepi zabilješku"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Zabilješka %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Pokaži status satelita"
-
-msgid " Elevation "
-msgstr " Nadmorska visina "
-
-msgid " Azimuth "
-msgstr " Azimut "
-
-msgid "Show NMEA Data"
-msgstr "Pokaži NMEA podatke"
-
-msgid "car"
-msgstr "auto"
-
-msgid "bike"
-msgstr "biciklo"
-
-msgid "pedestrian"
-msgstr "pješak"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Trenutni profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Mijenjaj profil na: %s"
-
-msgid "Set as active"
-msgstr "Odredi kao aktivno"
-
-msgid "Show Satellite status"
-msgstr "Pokaži status satelita"
-
-msgid "Show NMEA data"
-msgstr "Pokaži NMEA podatke"
-
-msgid "Add Bookmark"
-msgstr "Dodaj oznaku"
-
-msgid "Rename"
-msgstr "Preimenuj"
-
-msgid "About Navit"
-msgstr "Sve od Navit"
-
-#. Authors
-msgid "By"
-msgstr "Od"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "I sav Navit tim"
-
-msgid "members and contributors."
-msgstr "Älanovi i doprinositelji"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Vozilo"
-
-msgid "Rules"
-msgstr "Pravila"
-
-msgid "Lock on road"
-msgstr "Drži na cesti"
-
-msgid "Northing"
-msgstr "Sjevereno"
-
-msgid "Map follows Vehicle"
-msgstr "Karta prati vozilo"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Karte"
-
-msgid "Layout"
-msgstr "Izgled"
-
-msgid "Height Profile"
-msgstr "Visinski profil"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Opis rute"
-
-msgid "Show Locale"
-msgstr "Pokaži mjesto"
-
-msgid "Former Destinations"
-msgstr "Nekadašnji odredište"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Poruka"
-
-msgid "Back"
-msgstr "Natrag"
-
-msgid "Back to map"
-msgstr "Vrati kartu"
-
-msgid "Main Menu"
-msgstr "Glavni meni"
-
-msgid "House number"
-msgstr "Kućni broj"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Pozicija vozila"
-
-msgid "Main menu"
-msgstr "Glavni izbornik"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Pokaži\n"
-"kartu"
-
-msgid "Settings"
-msgstr "Postavke"
-
-msgid "Tools"
-msgstr "Alati"
-
-msgid "Route"
-msgstr "Ruta"
-
-msgid "About"
-msgstr "O programu"
-
-msgid "Quit"
-msgstr "Izlaz"
-
-msgid "Actions"
-msgstr "Akcije"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Stop\n"
-"navigaciju"
-
-msgid "Display"
-msgstr "Ekran"
-
-msgid "Fullscreen"
-msgstr "Cijeli ekran"
-
-msgid "Window Mode"
-msgstr "Prozorski naÄin"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Opis"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "konj"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "onda napustite kružni tok na %1$s %2$s"
diff --git a/po/hu.po.in b/po/hu.po.in
deleted file mode 100644
index c4ec926a7..000000000
--- a/po/hu.po.in
+++ /dev/null
@@ -1,2778 +0,0 @@
-# Hungarian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Bernath Marci https://launchpad.net/~bernath-marci
-# György Balló https://launchpad.net/~ballogy
-# KaZeR https://launchpad.net/~kazer
-# Nagy Attila https://launchpad.net/~tylla-at-launchpad-net
-# WintermuteHun https://launchpad.net/~wintermute-valodi
-# dandor https://launchpad.net/~dandorfs
-# kalmarzs https://launchpad.net/~kalmarzs
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-01-04 19:56+0000\n"
-"Last-Translator: Nagy Attila <tylla_at_launchpad.net@tylla.hu>\n"
-"Language-Team: Hungarian <hu@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: hu\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Futtatás a forráskönyvtárból\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "'%s' beállítása erre: '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nulladik"
-
-msgid "first"
-msgstr "első"
-
-msgid "second"
-msgstr "második"
-
-msgid "third"
-msgstr "harmadik"
-
-msgid "fourth"
-msgstr "negyedik"
-
-msgid "fifth"
-msgstr "ötödik"
-
-msgid "sixth"
-msgstr "hatodik"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nulladik kijáraton"
-
-msgid "first exit"
-msgstr "első kijáraton"
-
-msgid "second exit"
-msgstr "második kijáraton"
-
-msgid "third exit"
-msgstr "harmadik kijáraton"
-
-msgid "fourth exit"
-msgstr "negyedik kijáraton"
-
-msgid "fifth exit"
-msgstr "ötödik kijáraton"
-
-msgid "sixth exit"
-msgstr "hatodik kijáraton"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d láb"
-
-#, c-format
-msgid "in %d feet"
-msgstr "%d láb múlva"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d mérföld"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "%d.%d mérföld múlva"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "egy mérföld"
-msgstr[1] "%d mérföld"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "egy mérföld múlva"
-msgstr[1] "%d mérföld múlva"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d méter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "%d méter után"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d,%d kilométer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d,%d kilométer után"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "egy kilométer"
-msgstr[1] "%d kilométer"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "egy kilométer után"
-msgstr[1] "%d kilométer után"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "a felhajtóra"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sa(z) %s%s%s utcába"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sa(z) %s%s%s útra"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sa(z) %s%s%s útra"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sa(z) %s%s%s útra"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%shajtson rá a(z) %s útra"
-
-msgid "When possible, please turn around"
-msgstr "Amint lehet, fordujon meg"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "%s irányába"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Haladjon az úton a következő %sig"
-
-msgid "Enter the roundabout soon"
-msgstr "Hajtson be a körforgalomba hamarosan."
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Hajtson be a körforgalomba %s múlva"
-
-msgid "then enter the roundabout"
-msgstr "majd hajtson be a körforgalomba"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Hagyja el a körforgalmat a(z) %1$s %2$s"
-
-msgid "soon"
-msgstr "hamarosan"
-
-msgid "now"
-msgstr "most"
-
-msgid "then"
-msgstr "aztán"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "%3$s múlva hajtson ki %2$s a %1$s kihajtón"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "%2$s múlva hajtson ki %1$s %3$s irányába"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "a csomópontnál"
-
-msgid "at exit"
-msgstr "a kijáratnál"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "jobbra"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "balra"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "enyhén "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "élesen "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "A(z) %1$s útnál forduljon %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "%i út után"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Forduljon %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "aztán fordujon meg"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Fordujon meg %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "aztán fordujon meg"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Fordujon meg %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "majd eléri az úticélját."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Elérte az úticélját: %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Kijárat"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Pozíció"
-
-msgid "Command"
-msgstr "Utasítás"
-
-msgid "Length"
-msgstr "Hossz"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Idő"
-
-msgid "Destination Length"
-msgstr "Távolság a céltól"
-
-msgid "Destination Time"
-msgstr "Menetidő"
-
-msgid "Roadbook"
-msgstr "Útikalauz"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Útvonalpont %d"
-
-msgid "Visit before..."
-msgstr "Meglátogatás ez előtt..."
-
-msgid "Set as position"
-msgstr "Beállítás pozícióként"
-
-msgid "Set as destination"
-msgstr "Beállítás úticélként"
-
-msgid "Add as bookmark"
-msgstr "Hozzáadás a könyvjelzőkhöz"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Pont 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Képernyő koordinátái: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Egyesült Arab Emirátusok"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganisztán"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua és Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Angola"
-
-#. 008
-msgid "Albania"
-msgstr "Albánia"
-
-#. 051
-msgid "Armenia"
-msgstr "Örményország"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Holland Antillák"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktisz"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentína"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikai Szamoa"
-
-#. 040
-msgid "Austria"
-msgstr "Ausztria"
-
-#. 036
-msgid "Australia"
-msgstr "Ausztrália"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland-sziget"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbajdzsán"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosznia és Hercegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Banglades"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgium"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgária"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudák"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Szultanátus"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolívia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Karib tengeri Bonaire, Sint Eustatius és Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brazília"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamák"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhután"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvet-sziget"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Fehéroroszország"
-
-#. 084
-msgid "Belize"
-msgstr "Belizé"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Cocos (Keeling) -szigetek"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongói Demokratikus Köztársaság"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Közép-afrikai Köztársaság"
-
-#. 178
-msgid "Congo"
-msgstr "Kongó"
-
-#. 756
-msgid "Switzerland"
-msgstr "Svájc"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Elefántcsontpart"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cook-szigetek"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Kína"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Zöldfoki-szigetek"
-
-#. 531
-msgid "Curacao"
-msgstr "Curacao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Karácsony-szigetek"
-
-#. 196
-msgid "Cyprus"
-msgstr "Ciprus"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Csehország"
-
-#. 276
-msgid "Germany"
-msgstr "Németország"
-
-#. 262
-msgid "Djibouti"
-msgstr "Dzsibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Dánia"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikai Köztársaság"
-
-#. 012
-msgid "Algeria"
-msgstr "Algéria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Észtország"
-
-#. 818
-msgid "Egypt"
-msgstr "Egyiptom"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Nyugat-Szahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spanyolország"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiópia"
-
-#. 246
-msgid "Finland"
-msgstr "Finnország"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidzsi-szigetek"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland-szigetek"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronéz Ãllamszövetség"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Feröer-szigetek"
-
-#. 250
-msgid "France"
-msgstr "Franciaország"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Egyesült Királyság"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Grúzia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Francia Guyana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghána"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltár"
-
-#. 304
-msgid "Greenland"
-msgstr "Grönland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Egyenlítői Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Görögország"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Dél-Georgia és Déli-Sandwich-szigetek"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hongkong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard-sziget és McDonald-szigetek"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Horvátország"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Magyarország"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonézia"
-
-#. 372
-msgid "Ireland"
-msgstr "Ãrország"
-
-#. 376
-msgid "Israel"
-msgstr "Izrael"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Man sziget"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Brit Indiai Óceáni Terület"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Irán"
-
-#. 352
-msgid "Iceland"
-msgstr "Izland"
-
-#. 380
-msgid "Italy"
-msgstr "Olaszország"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordánia"
-
-#. 392
-msgid "Japan"
-msgstr "Japán"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgizisztán"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodzsa"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comore-szigetek"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "St. Kitts és Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Koreai Demokratikus Népköztársaság"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Koreai Köztársaság"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuvait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kajmán-szigetek"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazahsztán"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laoszi Demokratikus Népköztársaság"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "St. Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Libéria"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litvánia"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Lettország"
-
-#. 434
-msgid "Libya"
-msgstr "Líbia"
-
-#. 504
-msgid "Morocco"
-msgstr "Marokkó"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldáv Köztársaság"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegró"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (francia oldal)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaszkár"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marsall-szigetek"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedónia, korábban Jugoszláv Köztársaság"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongólia"
-
-#. 446
-msgid "Macao"
-msgstr "Makaó"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Északi Mariana-szigetek"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritánia"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Málta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldív-szigetek"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexikó"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malajzia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namíbia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Új-Kaledónia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk-sziget"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigéria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Hollandia"
-
-#. 578
-msgid "Norway"
-msgstr "Norvégia"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepál"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Új-Zéland"
-
-#. 512
-msgid "Oman"
-msgstr "Omán"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Francia Polinézia"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Pápua Új-Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Fülöp-szigetek"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakisztán"
-
-#. 616
-msgid "Poland"
-msgstr "Lengyelország"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint-Pierre és Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn-szigetek"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palesztin Megszállt Területek"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugália"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Réunion"
-
-#. 642
-msgid "Romania"
-msgstr "Románia"
-
-#. 688
-msgid "Serbia"
-msgstr "Szerbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Orosz Föderáció"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Szaúd-Arábia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Salamon-szigetek"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles-szigetek"
-
-#. 736
-msgid "Sudan"
-msgstr "Szudán"
-
-#. 752
-msgid "Sweden"
-msgstr "Svédország"
-
-#. 702
-msgid "Singapore"
-msgstr "Szingapúr"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Szent Ilona"
-
-#. 705
-msgid "Slovenia"
-msgstr "Szlovénia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard-szigetek és Jan Mayen-sziget"
-
-#. 703
-msgid "Slovakia"
-msgstr "Szlovákia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Szenegál"
-
-#. 706
-msgid "Somalia"
-msgstr "Szomália"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr "Dél-Szudán"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "São Tomé és Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sint Maarten (Holland rész)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Szíriai Arab Köztársaság"
-
-#. 748
-msgid "Swaziland"
-msgstr "Szváziföld"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks és Caicos-szigetek"
-
-#. 148
-msgid "Chad"
-msgstr "Csád"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Francia déli területek"
-
-#. 768
-msgid "Togo"
-msgstr "Togó"
-
-#. 764
-msgid "Thailand"
-msgstr "Thaiföld"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadzsikisztán"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau-szigetek"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Kelet-Timor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Türkmenisztán"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunézia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Törökország"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad és Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Tajvan, Kínai Tartomány"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzániai Egyesült Köztársaság"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukrajna"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Amerikai Csendes-óceáni-szigetek"
-
-#. 840
-msgid "United States"
-msgstr "Egyesült Ãllamok"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Üzbegisztán"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikán"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent és a Grenadines-szigetek"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Virgin-szigetek (brit)"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Virgin-szigetek (USA)"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnám"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis és Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Szamoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Dél-Afrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabve"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "*Ismeretlen, is_in címkék hozzáadása ezekhez a városokhoz"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-"navit használata:\n"
-"navit [opciók] [konfigurációs fájl]\n"
-"\t-c <fájl>: a <fájl> használata konfigurációs fájlként az alapértelmezett "
-"helyett\n"
-"\t-d <n>: a globális hibakeresési kimenet szintjét <n>-re állítja (0=hiba, "
-"1=figyelmeztetés, 2=információ, 3=hibakeresés)\n"
-"\tA konfigurációs állománybeli beállítások ennek ellenére érvényre jutnak "
-"amennyiben nagyobb értéket állítanak be.\n"
-"\t-h: jelen használati információ megjelenítése és kilépés.\n"
-"\t-v: verzióinformáció megjelenítése és kilépés.\n"
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Nem található konfigurációs állomány (navit.xml, navit.xml.local)\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "A konfigurációs állomány '%s' elemzése közben hiba történt: %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "A következő konfigurációs állomány használata: %s\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Hiba: Nem található konfigurációs beállítás a fájlban '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Belső inicializálás sikertelen, kilépés. Ellenőrizze az előző "
-"hibaüzeneteket.\n"
-
-msgid "unknown street"
-msgstr "ismeretlen utca"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Névtelen jármű"
-
-msgid "Failed to write bookmarks file"
-msgstr "Hiba történt a könyvjelző állomány írása közben"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Térképpont"
-
-msgid "Car"
-msgstr "Autó"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Ország"
-
-msgid "Postal"
-msgstr "Ir. szám"
-
-msgid "Town"
-msgstr "Város"
-
-msgid "District"
-msgstr "Kerület"
-
-msgid "Street"
-msgstr "Utca"
-
-msgid "Number"
-msgstr "Házszám"
-
-msgid "Enter Destination"
-msgstr "Úticél megadása"
-
-msgid "Zip Code"
-msgstr "Irányítószám"
-
-msgid "City"
-msgstr "Város"
-
-msgid "District/Township"
-msgstr "Kerület/Környék"
-
-msgid "Map"
-msgstr "Térkép"
-
-msgid "Bookmark"
-msgstr "Könyvjelző"
-
-msgid "Destination"
-msgstr "Úticél"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Megjelenítés"
-
-msgid "_Route"
-msgstr "Útvonal"
-
-msgid "_Former Destinations"
-msgstr "Korábbi úticélok"
-
-msgid "_Bookmarks"
-msgstr "Könyvjelzők"
-
-msgid "_Map"
-msgstr "Térkép"
-
-msgid "_Layout"
-msgstr "Elrendezés"
-
-msgid "_Projection"
-msgstr "Vetület"
-
-msgid "_Vehicle"
-msgstr "Jármű"
-
-msgid "Zoom_Out"
-msgstr "Távolítás"
-
-msgid "Decrease zoom level"
-msgstr "Távolítás"
-
-msgid "Zoom_In"
-msgstr "Közelítés"
-
-msgid "Increase zoom level"
-msgstr "Közelítés"
-
-msgid "_Recalculate"
-msgstr "Újratervezés"
-
-msgid "Redraw map"
-msgstr "Térkép újrarajzolása"
-
-msgid "_Info"
-msgstr "Információk"
-
-msgid "Set _destination"
-msgstr "Cél beállítása"
-
-msgid "Opens address search dialog"
-msgstr "Címkeresés"
-
-msgid "_POI search"
-msgstr "_POI keresés"
-
-msgid "Opens POI search dialog"
-msgstr "POI keresés megnyitása"
-
-msgid "_Stop Navigation"
-msgstr "Navigálás vége"
-
-msgid "Test"
-msgstr "Teszt"
-
-msgid "_Quit"
-msgstr "_Kilépés"
-
-msgid "Quit the application"
-msgstr "Kilépés az alkalmazásból"
-
-msgid "Show position _cursor"
-msgstr "Helyzetjelző megjelenítése"
-
-msgid "_Lock on Road"
-msgstr "Rögzítés az úthoz"
-
-msgid "_Keep orientation to the North"
-msgstr "A tájolás észak felé tartása"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Térkép rögzítése északra vagy a jármű irányához"
-
-msgid "_Roadbook"
-msgstr "Útikalauz"
-
-msgid "Show/hide route description"
-msgstr "Útvonal leírás megjelenítése/elrejtése"
-
-msgid "_Autozoom"
-msgstr "Ráközelítés"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Automatikus közelítés engedélyezése/tiltása"
-
-msgid "_Fullscreen"
-msgstr "Teljes képernyő"
-
-msgid "Data"
-msgstr "Adat"
-
-msgid "Pharmacy"
-msgstr "Gyógyszertár"
-
-msgid "Restaurant"
-msgstr "Étterem"
-
-msgid "Restaurant. Fast food"
-msgstr "Étterem. Gyorsétterem"
-
-msgid "Hotel"
-msgstr "Szálloda"
-
-msgid "Car parking"
-msgstr "Parkoló"
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr "Bank"
-
-msgid "Hospital"
-msgstr "Kórház"
-
-msgid "Cinema"
-msgstr "Mozi"
-
-msgid "Train station"
-msgstr "Vasútállomás"
-
-msgid "School"
-msgstr "Iskola"
-
-msgid "Police"
-msgstr "Rendőrség"
-
-msgid "Justice"
-msgstr "Bíróság"
-
-msgid "Taxi"
-msgstr "Taxi"
-
-msgid "Shopping"
-msgstr "Bevásárlás"
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr "POI keresés"
-
-msgid "Select a category"
-msgstr "Válasszon egy kategóriát"
-
-msgid "Select a distance to look for (km)"
-msgstr "Válasszon keresési távolságot (km)"
-
-msgid "Select a POI"
-msgstr "POI kiválasztása"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Kategória"
-
-msgid "Direction"
-msgstr "Irány"
-
-msgid "Distance(m)"
-msgstr "Távolság (km)"
-
-msgid "Name"
-msgstr "Név:"
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "É"
-
-msgid "NE"
-msgstr "ÉK"
-
-msgid "E"
-msgstr "K"
-
-msgid "SE"
-msgstr "DK"
-
-msgid "S"
-msgstr "D"
-
-msgid "SW"
-msgstr "DNy"
-
-msgid "W"
-msgstr "Ny"
-
-msgid "NW"
-msgstr "ÉNy"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nincs"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Útvonal hossza: %4.0fkm, becsült menetidő: %02d:%02d"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Útvonal hossza 0000km, becsült menetidő: 0+00:00"
-
-msgid "Help"
-msgstr "Súgó"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Útvonalpont %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Válassza ki az útvonalpontot amely elé beszúrja az újat"
-
-msgid "View in Browser"
-msgstr "Megtekintés böngészőben"
-
-msgid "Item type"
-msgstr "Elem típusa"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Utcák"
-
-msgid "House numbers"
-msgstr "Házszámok"
-
-msgid "View Attributes"
-msgstr "Attribútumok megjelenítése"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Beállítás pozícióként (és jármű kikapcsolása)"
-
-msgid "POIs"
-msgstr "POI-k"
-
-msgid "View on map"
-msgstr "Megtekintés térképen"
-
-msgid "Remove search results from the map"
-msgstr "Keresési találatok eltávolítása a térképről"
-
-msgid "Show results on the map"
-msgstr "Keresési találatok mutatása a térképen"
-
-msgid "Cut Bookmark"
-msgstr "Könyvjelző kivágása"
-
-msgid "Copy Bookmark"
-msgstr "Könyvjelző másolása"
-
-msgid "Rename Bookmark"
-msgstr "Könyvjelző átnevezése"
-
-msgid "Paste Bookmark"
-msgstr "Könyvjelző beillesztése"
-
-msgid "Delete Bookmark"
-msgstr "Könyvjelző törlése"
-
-msgid "Delete waypoint"
-msgstr "Útvonalpont törlése"
-
-msgid "Bookmarks"
-msgstr "Könyvjelzők"
-
-msgid "Bookmarks as waypoints"
-msgstr "Könyvjelzők mint útvonalpontok"
-
-msgid "Save waypoints"
-msgstr "Útvonalpontok mentése"
-
-msgid "Replace with waypoints"
-msgstr "Helyettesítés útvonalpontokkal"
-
-msgid "Delete Folder"
-msgstr "Mappa törlése"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Könyvjelző mappa létrehozása"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Könyvjelző beillesztése"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "%s hozzáadása a könyvjelzőkhöz"
-
-#, c-format
-msgid "Download %s"
-msgstr "Letöltés %s"
-
-msgid "Map Download"
-msgstr "Térkép letöltés"
-
-msgid "Active"
-msgstr "Aktív"
-
-msgid "Download Enabled"
-msgstr "Letöltés engedélyezve"
-
-msgid "Download completely"
-msgstr "Teljes letöltés"
-
-msgid "Show Satellite Status"
-msgstr "Műhold státusz"
-
-msgid " Elevation "
-msgstr " Magasság "
-
-msgid " Azimuth "
-msgstr " Irány "
-
-msgid "Show NMEA Data"
-msgstr "NMEA adatok"
-
-msgid "car"
-msgstr "autós"
-
-msgid "bike"
-msgstr "kerékpáros"
-
-msgid "pedestrian"
-msgstr "gyalogos"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Jelenlegi profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Profil módosítása erre: %s"
-
-msgid "Set as active"
-msgstr "Aktívra állítás"
-
-msgid "Show Satellite status"
-msgstr "Műhold státusz"
-
-msgid "Show NMEA data"
-msgstr "NMEA adatok"
-
-msgid "Add Bookmark"
-msgstr "Könyvjelző hozzáadása"
-
-msgid "Rename"
-msgstr "Ãtnevezés"
-
-msgid "About Navit"
-msgstr "A Navit névjegye"
-
-#. Authors
-msgid "By"
-msgstr "Készítők"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "És az egész Navit Team"
-
-msgid "members and contributors."
-msgstr "tagok és hozzájárulók"
-
-msgid "Waypoints"
-msgstr "Útvonalpontok"
-
-msgid "Enter Coordinates"
-msgstr "Koordináták megadása"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr "Koordináták megadása, pl:"
-
-msgid "Vehicle"
-msgstr "Jármű"
-
-msgid "Rules"
-msgstr "Szabályok"
-
-msgid "Lock on road"
-msgstr "Rögzítés az úthoz"
-
-msgid "Northing"
-msgstr "Észak felé"
-
-msgid "Map follows Vehicle"
-msgstr "A térkép követi a járművet"
-
-msgid "Plan with Waypoints"
-msgstr "Tervezés útvonalpontokkal"
-
-msgid "Maps"
-msgstr "Térképek"
-
-msgid "Layout"
-msgstr "Elrendezés"
-
-msgid "Height Profile"
-msgstr "Magassági profil"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Útvonalleírás"
-
-msgid "Show Locale"
-msgstr "Hely megjelenítése"
-
-msgid "Former Destinations"
-msgstr "Korábbi úticélok"
-
-msgid "- No former destinations available -"
-msgstr "- Nincsenek előző célpontok -"
-
-msgid "Message"
-msgstr "Ãœzenet"
-
-msgid "Back"
-msgstr "Vissza"
-
-msgid "Back to map"
-msgstr "Vissza a térképhez"
-
-msgid "Main Menu"
-msgstr "Főmenü"
-
-msgid "House number"
-msgstr "Házszám"
-
-msgid "Next"
-msgstr "Következő"
-
-msgid "Prev"
-msgstr "Előző"
-
-msgid "Return to route!"
-msgstr "Vissza az útvonalra!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Vigyázz, kamera!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Lassíts!"
-
-msgid "partial match"
-msgstr "részleges egyezés"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Keres"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Városok"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Térkép adatok (c) OpenStreeMap közreműködők, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "Letöltött térképek"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"Jelenleg Androidon a 3.8GB-nál nagyobb térképek nem támogatottak, kérem "
-"válasszon egy kisebbet."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Útvonal ide"
-
-msgid "Cancel"
-msgstr "Mégse"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "Teljes bolygó"
-
-msgid "Africa"
-msgstr "Afrika"
-
-msgid "Canary Islands"
-msgstr "Kanári-szigetek"
-
-msgid "Asia"
-msgstr "Ãzsia"
-
-msgid "Korea"
-msgstr "Korea"
-
-msgid "Taiwan"
-msgstr "Tajvan"
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr "Óceánia"
-
-msgid "Tasmania"
-msgstr "Tasmánia"
-
-msgid "Victoria"
-msgstr "Viktória"
-
-msgid "New South Wales"
-msgstr "Új-Dél-Wales"
-
-msgid "Europe"
-msgstr "Európa"
-
-msgid "Western Europe"
-msgstr "Nyugat-Európa"
-
-msgid "Azores"
-msgstr "Azori-szigetek"
-
-msgid "BeNeLux"
-msgstr "BeneLux"
-
-msgid "Alsace"
-msgstr "Elzász"
-
-msgid "Aquitaine"
-msgstr "Aquitania"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Alsó-Normandia"
-
-msgid "Bourgogne"
-msgstr "Burgundia"
-
-msgid "Bretagne"
-msgstr "Bretagne"
-
-msgid "Centre"
-msgstr "Közép"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardenne"
-
-msgid "Corse"
-msgstr "Korzika"
-
-msgid "Franche-Comte"
-msgstr "Franche-Comté"
-
-msgid "Haute-Normandie"
-msgstr "Felső-Normandia"
-
-msgid "Ile-de-France"
-msgstr "Ile-de-France"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc-Roussillon"
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lotaringia"
-
-msgid "Midi-Pyrenees"
-msgstr "Midi-Pyrenees"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-pas-de-Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Pays-de-la-Loire"
-
-msgid "Picardie"
-msgstr "Pikárdia"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provence-Alpes-Cote-d-Azur"
-
-msgid "Rhone-Alpes"
-msgstr "Rhone-Alpes"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Württemberg"
-
-msgid "Bayern"
-msgstr "Bajorország"
-
-msgid "Mittelfranken"
-msgstr "Közép-Frankföld"
-
-msgid "Niederbayern"
-msgstr "Niederbayern"
-
-msgid "Oberbayern"
-msgstr "Felső-Bajorország"
-
-msgid "Oberfranken"
-msgstr "Felső-Frankföld"
-
-msgid "Oberpfalz"
-msgstr "Felső-Pfalz"
-
-msgid "Schwaben"
-msgstr "Svábföld"
-
-msgid "Unterfranken"
-msgstr "Alsó-Frankföld"
-
-msgid "Berlin"
-msgstr "Berlin"
-
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-msgid "Bremen"
-msgstr "Bréma"
-
-msgid "Hamburg"
-msgstr "Hamburg"
-
-msgid "Hessen"
-msgstr "Hessen"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Mecklenburg-Előpomeránia"
-
-msgid "Niedersachsen"
-msgstr "Alsó-Szászország"
-
-msgid "Nordrhein-westfalen"
-msgstr "Észak-Rajna-Vesztfália"
-
-msgid "Rheinland-Pfalz"
-msgstr "Rajna-vidék-Pfalz"
-
-msgid "Saarland"
-msgstr "Saar-vidék"
-
-msgid "Sachsen-Anhalt"
-msgstr "Szász-Anhalt"
-
-msgid "Sachsen"
-msgstr "Szászország"
-
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-msgid "Thueringen"
-msgstr "Türingia"
-
-msgid "Mallorca"
-msgstr "Mallorca"
-
-msgid "Galicia"
-msgstr "Galicia"
-
-msgid "Scandinavia"
-msgstr "Skandinávia"
-
-msgid "England"
-msgstr "Anglia"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "East Yorkshire, Hull"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "South yorkshire"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Skócia"
-
-msgid "Wales"
-msgstr "Wales"
-
-msgid "Crete"
-msgstr "Kréta"
-
-msgid "North America"
-msgstr "Észak-Amerika"
-
-msgid "Alaska"
-msgstr "Alaszka"
-
-msgid "Hawaii"
-msgstr "Hawaii"
-
-msgid "USA"
-msgstr "Amerikai Egyesült Ãllamok"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (kivéve Alaszka és Hawaii)"
-
-msgid "Midwest"
-msgstr "Midwest"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr "Dél"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "District of Columbia"
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Louisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virginia"
-
-msgid "West Virginia"
-msgstr "Nyugat-Virginia"
-
-msgid "West"
-msgstr "Nyugat"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "California"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "New Mexico"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Washington Ãllam"
-
-msgid "South+Middle America"
-msgstr "Dél és Közép-Amerika"
-
-msgid "Guyane Francaise"
-msgstr "Francia Guyana"
-
-msgid "downloading"
-msgstr "letöltés"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "kész"
-
-msgid "Media selected for map storage is not available"
-msgstr "A térkép tárolására kijelölt hordozó nem elérhető"
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Kevés a szabad terület"
-
-msgid "Error downloading map!"
-msgstr "Hiba térképletöltés közben!"
-
-msgid "Error writing map!"
-msgstr "Hiba a térkép mentése közben!"
-
-msgid "Map download aborted!"
-msgstr "Térképletöltés megszakítva!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Becsült hátralévő idő"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Térképletöltés"
-
-msgid "Vehicle Position"
-msgstr "Jármű helyzete"
-
-msgid "Main menu"
-msgstr "Főmenü"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Térkép\n"
-"megjelenítése"
-
-msgid "Settings"
-msgstr "Beállítások"
-
-msgid "Tools"
-msgstr "Eszközök"
-
-msgid "Route"
-msgstr "Útvonal"
-
-msgid "About"
-msgstr "Névjegy"
-
-msgid "Quit"
-msgstr "Kilépés"
-
-msgid "Actions"
-msgstr "Műveletek"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr "Koordináták"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Navigáció\n"
-"leállítása"
-
-msgid "Display"
-msgstr "Megjelenítés"
-
-msgid "Fullscreen"
-msgstr "Teljes képernyő"
-
-msgid "Window Mode"
-msgstr "Ablak mód"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Leírás"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr "Műhold állapot"
-
-msgid "NMEA Data"
-msgstr "NMEA adat"
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "ló"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Igen"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit elindult"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit fut"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Üdvözli önt a Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Köszönjük hogy feltelepítette a Navit-ot!\n"
-"\n"
-"Kezdésnek válassza a \"Térképletöltés\"-t a menüből térkép letöltéséhez. "
-"Megj: a térkép mérete nagy lehet (> 50 MB) - WiFi kapcsolat javasolt.\n"
-"\n"
-"Térképadatok: (c) OpenStreeMap közreműködők\n"
-"\n"
-"Használja élvezettel, Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "További információ"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Nagyítás"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Kicsinyítés"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Térképletöltés"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "POIk ki/bekapcsolása"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Kilépés"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Mentés / Visszaállítás"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Töröljük ezt a térképet?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Letöltés:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Hiba történt a térképletöltés közben."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Térképletöltés megszabítva"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Nincs helymeghatározás. Indítsa újra sikeres helymeghatározás után."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Térképek az aktuális helyzettel"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Címkeresés"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Célbevitel"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Cím részleges egyezés"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Keresés..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Cím nem található"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Keresési találatok lekérése"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Keresési találatok betöltése"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Nincs találat"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Nincs keresési kifejezés"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Cél beállítása:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Válasszon műveletet."
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Kérem helyezzen be egy SD kártyát"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Biztonsági mentés..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Visszaállítás..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Nem sikerült a biztonsági mentés könyvtárát létrehozni"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "A mentés sikertelen"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Nem található biztonsági mentés"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Sikertelen visszaállítás"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "A mentés sikeres"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Visszaállítás sikeres\n"
-"Kérem indítsa újra a Navit-ot"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Biztonsági mentés nem található"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "A visszaállítás sikertelen"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Biztonsági mentés kiválasztása"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Biztonsági mentés"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Visszaállítás"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "majd hagyja el a körforgalmat a(z) %1$s %2$s"
diff --git a/po/id.po.in b/po/id.po.in
deleted file mode 100644
index 302b11212..000000000
--- a/po/id.po.in
+++ /dev/null
@@ -1,2751 +0,0 @@
-# Indonesian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Joel-apobae.com https://launchpad.net/~amanda2000
-# KaZeR https://launchpad.net/~kazer
-# M Bambang I https://launchpad.net/~mbi-lawang
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Steve Kartantya https://launchpad.net/~jack-haz
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:58+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Indonesian <id@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: id\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "penataan '%s' ke '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "ke nol"
-
-msgid "first"
-msgstr "pertama"
-
-msgid "second"
-msgstr "kedua"
-
-msgid "third"
-msgstr "ketiga"
-
-msgid "fourth"
-msgstr "keempat"
-
-msgid "fifth"
-msgstr "kelima"
-
-msgid "sixth"
-msgstr "keenam"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "exit pertama"
-
-msgid "second exit"
-msgstr "exit kedua"
-
-msgid "third exit"
-msgstr "exit ketiga"
-
-msgid "fourth exit"
-msgstr "exit keempat"
-
-msgid "fifth exit"
-msgstr "exit kelima"
-
-msgid "sixth exit"
-msgstr "exit keenam"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "dalam %d meter"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "dalam %d.%d kilometer"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "dalam %d kilometer"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "menuju jalur yang melandai"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%smenuju ke %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%smenuju ke %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%smenuju ke %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%smenuju ke %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%smenuju ke %s"
-
-msgid "When possible, please turn around"
-msgstr "Bila memungkinkan, balik arah"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "ikuti jalan untuk ke tujuan berikutnya %s"
-
-msgid "Enter the roundabout soon"
-msgstr "segera memasuki bundaran"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Tinggalkan bundaran pada %1$s %2$s"
-
-msgid "soon"
-msgstr "segera"
-
-msgid "now"
-msgstr "saat ini"
-
-msgid "then"
-msgstr "kemudian"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "kanan"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "Kiri"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "dengan mudah "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "Sangat "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Ambil %1$s jalan ke %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "setelah %i jalan"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Beloklah %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "kemudian balik arah"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Balik arah %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "kemudian balik arah"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Balik arah %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "kini anda telah sampai pada tujuan"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "anda telah sampai pada tujuan %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Keluar"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posisi"
-
-msgid "Command"
-msgstr "Perintah"
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr "Jarak ke tujuan"
-
-msgid "Destination Time"
-msgstr "Waktu di tujuan"
-
-msgid "Roadbook"
-msgstr "Panduan perjalanan"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Tetapkan sebagai posisi"
-
-msgid "Set as destination"
-msgstr "Tetapkan sebagai tujuan"
-
-msgid "Add as bookmark"
-msgstr "Tambahkan sebagai penunjuk"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Titik 0X%x 0X%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Koordinat dilayar :%d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Uni Emirat Arab"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua dan Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antilles Belanda"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antartika"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "American Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Kepulauan Aland"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia dan Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgia"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasilia"
-
-#. 044
-msgid "Bahamas"
-msgstr "Kepulauan Bahama"
-
-#. 064
-msgid "Bhutan"
-msgstr "Butan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Pulau Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Belarusia"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kepulauan Cocos (Keeling)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Republik Demokrat Kongo"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Republik Afrika Tengah"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Swiss"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Pantai Gading"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Kepulauan Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chili"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kosta Rika"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Tanjung Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Pulau Christmas"
-
-#. 196
-msgid "Cyprus"
-msgstr "Siprus"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Republik Ceko"
-
-#. 276
-msgid "Germany"
-msgstr "Jerman"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Denmark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Republik Dominikan"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Mesir"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara Barat"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spanyol"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Ethiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finlandia"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Kepulauan Fakland (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Kepulauan Faroe"
-
-#. 250
-msgid "France"
-msgstr "Perancis"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Inggris"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guiana Perancis"
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Jibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Greenland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr "Yunani"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Pulau Heard dan Kepulauan McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hongaria"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlandia"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Republik Islam Iran"
-
-#. 352
-msgid "Iceland"
-msgstr "Islandia"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordania"
-
-#. 392
-msgid "Japan"
-msgstr "Jepang"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kamboja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komoro"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea Utara"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea Selatan"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kepulauan Cayman"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr "Lebanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Santa Lusia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lithuania"
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr "Latvia"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Maroko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Republik Moldova"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Kepulauan Mashall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Makao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldives"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexico"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Kaledonia Baru"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Pulau Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Belanda"
-
-#. 578
-msgid "Norway"
-msgstr "Norwegia"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr "Selandia Baru"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr "Philipina"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polandia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguai"
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr "Romania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Federasi Rusia"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arab Saudi"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Kepulauan Salomon"
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Swedia"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapura"
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Republik Arab Siria"
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr "Chad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turki"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad dan Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr "Amerika Serikat"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguai"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikan"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr "Viet Nam"
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yaman"
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr "Afika Selatan"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Letak pada peta"
-
-msgid "Car"
-msgstr "Mibil"
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr "Negara"
-
-msgid "Postal"
-msgstr "Pos"
-
-msgid "Town"
-msgstr "Kota"
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr "Jalan"
-
-msgid "Number"
-msgstr "Nomer"
-
-msgid "Enter Destination"
-msgstr "Masukan Tujuan"
-
-msgid "Zip Code"
-msgstr "kode Pos"
-
-msgid "City"
-msgstr "kota"
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr "Peta"
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr "Tujuan"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Tampilan"
-
-msgid "_Route"
-msgstr "Rute"
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr "Peta"
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr "Proyeksi"
-
-msgid "_Vehicle"
-msgstr "Kendaraan"
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr "Menghitung ulang"
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr "Informasi"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Navigasi berhenti"
-
-msgid "Test"
-msgstr "Tes"
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr "Panduan perjalanan"
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr "AutoZoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "Layar penuh"
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "Utara"
-
-msgid "NE"
-msgstr "Timur Laut"
-
-msgid "E"
-msgstr "Timur"
-
-msgid "SE"
-msgstr "Tenggara"
-
-msgid "S"
-msgstr "Selatan"
-
-msgid "SW"
-msgstr "Barat Daya"
-
-msgid "W"
-msgstr "Barat"
-
-msgid "NW"
-msgstr "Barat Laut"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Tidak"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Rute %4.0fkm %02d:%02d Perkiraan waktu kedatangan"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Rute 0000km 0+00:00 Perkiraan waktu kedatangan"
-
-msgid "Help"
-msgstr "Bantuan"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "jalan"
-
-msgid "House numbers"
-msgstr "Nomor Rumah"
-
-msgid "View Attributes"
-msgstr "Lihat atribut"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "POIs"
-
-msgid "View on map"
-msgstr "Lihat pada peta"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Hapus penanda"
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Penanda %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Status Satelit"
-
-msgid " Elevation "
-msgstr " Elevasi "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "Data NMEA"
-
-msgid "car"
-msgstr "mobil"
-
-msgid "bike"
-msgstr "sepeda"
-
-msgid "pedestrian"
-msgstr "pejalan kaki"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Profil saat ini: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr "Diaktifkan"
-
-msgid "Show Satellite status"
-msgstr "Status Satelit"
-
-msgid "Show NMEA data"
-msgstr "Data NMEA"
-
-msgid "Add Bookmark"
-msgstr "Tambah Penanda"
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr "Tentang Navit"
-
-#. Authors
-msgid "By"
-msgstr "Oleh"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Dan seluruh anggota tim Navit"
-
-msgid "members and contributors."
-msgstr "para anggota dan kontributor"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Kendaraan"
-
-msgid "Rules"
-msgstr "Aturan - aturan"
-
-msgid "Lock on road"
-msgstr "Kunci pada jalan"
-
-msgid "Northing"
-msgstr "Keutara"
-
-msgid "Map follows Vehicle"
-msgstr "Peta mengikuti kendaraan"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Peta - peta"
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr "Profil ketinggian"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Deskripsi rute"
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Pesan"
-
-msgid "Back"
-msgstr "Kembali"
-
-msgid "Back to map"
-msgstr "Kembali ke Peta"
-
-msgid "Main Menu"
-msgstr "Menu Utama"
-
-msgid "House number"
-msgstr "Nomer rumah"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Posisi kendaraan"
-
-msgid "Main menu"
-msgstr "Menu Utama"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Tampilan\n"
-"Map"
-
-msgid "Settings"
-msgstr "Pengaturan"
-
-msgid "Tools"
-msgstr "Peralatan"
-
-msgid "Route"
-msgstr "Rute"
-
-msgid "About"
-msgstr "Tentang"
-
-msgid "Quit"
-msgstr "Berhenti"
-
-msgid "Actions"
-msgstr "Tindakan-tindakan"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Navigasi\n"
-"Berhenti"
-
-msgid "Display"
-msgstr "Tampilan"
-
-msgid "Fullscreen"
-msgstr "Layar penuh"
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Deskripsi"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "kuda"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "kemudian tinggalkan bundaran pada %1$s %2$s"
diff --git a/po/it.po.in b/po/it.po.in
deleted file mode 100644
index c2c557d7e..000000000
--- a/po/it.po.in
+++ /dev/null
@@ -1,2783 +0,0 @@
-# Italian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# AndreaCr https://launchpad.net/~andij-cr
-# Davide Gobbi https://launchpad.net/~hobbie
-# Marco Ciampa https://launchpad.net/~ciampix
-# Marco Lazzaroni https://launchpad.net/~marcolazzaroni
-# Matteo Zaffo &#x27;80 https://launchpad.net/~zaffo80
-# MeltingShell https://launchpad.net/~meltingshell
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Michele Olivo https://launchpad.net/~micheleolivo
-# Niccolo Rigacci https://launchpad.net/~niccolo
-# Stefano Angeleri https://launchpad.net/~weltall
-# Stemby https://launchpad.net/~carlo-stemberger
-# amedeo https://launchpad.net/~amedeo-lanza
-# b3784098 https://launchpad.net/~b3784098
-# ernia https://launchpad.net/~ernia
-# giardia https://launchpad.net/~fabriziosm
-# jackyes https://launchpad.net/~jackthebest
-# tomas https://launchpad.net/~tracks-tomyt
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-06-17 19:33+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Italiano\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: it\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Esecuzione dalla cartella di compilazione\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "impostazione di '%s' a '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zero"
-
-msgid "first"
-msgstr "primo"
-
-msgid "second"
-msgstr "secondo"
-
-msgid "third"
-msgstr "terzo"
-
-msgid "fourth"
-msgstr "quarto"
-
-msgid "fifth"
-msgstr "quinto"
-
-msgid "sixth"
-msgstr "sesto"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "Uscita zero"
-
-msgid "first exit"
-msgstr "prima uscita"
-
-msgid "second exit"
-msgstr "seconda uscita"
-
-msgid "third exit"
-msgstr "terza uscita"
-
-msgid "fourth exit"
-msgstr "quarta uscita"
-
-msgid "fifth exit"
-msgstr "quinta uscita"
-
-msgid "sixth exit"
-msgstr "sesta uscita"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d piedi"
-
-#, c-format
-msgid "in %d feet"
-msgstr "tra %d piedi"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d miglia"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "tra %d.%d miglia"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "un miglio"
-msgstr[1] "%d miglia"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "tra un miglio"
-msgstr[1] "tra %d miglia"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metri"
-
-#, c-format
-msgid "in %d meters"
-msgstr "tra %d metri"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d chilometri"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "tra %d,%d chilometri"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "un chilometro"
-msgstr[1] "%d chilometri"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "tra un chilometro"
-msgstr[1] "tra %d chilometri"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$ssulla %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$ssulla strada %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$ssul %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$ssulla %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$ssulla strada %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "nella rampa"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sin %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sin %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sin %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sin %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sin %s"
-
-msgid "When possible, please turn around"
-msgstr "Appena possibile, invertire il senso di marcia"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "verso %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Seguire la strada per i prossimi %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Tra poco si entrerà in rotonda"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Alla rotonda prendere la %1$s %2$s"
-
-msgid "soon"
-msgstr "tra poco"
-
-msgid "now"
-msgstr "adesso"
-
-msgid "then"
-msgstr "poi"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "poi entrare%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Entrare %1$s%2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "poi entrare%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Entrare %1$s%2$s"
-
-msgid "on your left"
-msgstr "a sinistra"
-
-msgid "on your right"
-msgstr "a destra"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Prendere l'uscita %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Prendere l'uscita %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "all'intersezione"
-
-msgid "at exit"
-msgstr "all'uscita"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "poi procedere dritto%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "Procedere dritto %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "poi tenere la destra%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "Tenere la destra %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "poi tenere la sinistra%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "Tenere la sinistra %1$s%2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "destra"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "sinistra"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "leggermente "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "decisamente "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "poi prendere la %1$s strada a %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Prendere la %1$s strada a %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "tra %i strade"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Svoltare %1$s %2$s %3$s %4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "poi invertire il senso di marcia"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Invertire il senso di marcia %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "poi invertire il senso di marcia"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Invertire il senso di marcia %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "seguire"
-
-msgid "then you have reached your destination."
-msgstr "poi sarete arrivati a destinazione"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Siete arrivati a destinazione %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Intersezione"
-
-msgid "Exit"
-msgstr "Uscita"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posizione"
-
-msgid "Command"
-msgstr "Indicazione"
-
-msgid "Length"
-msgstr "Distanza"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tempo"
-
-msgid "Destination Length"
-msgstr "Distanza all'arrivo"
-
-msgid "Destination Time"
-msgstr "Orario di arrivo"
-
-msgid "Roadbook"
-msgstr "Quaderno di viaggio"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Waypoint %d"
-
-msgid "Visit before..."
-msgstr "Visitare prima..."
-
-msgid "Set as position"
-msgstr "Imposta come posizione"
-
-msgid "Set as destination"
-msgstr "Imposta come destinazione"
-
-msgid "Add as bookmark"
-msgstr "Aggiungi come segnalibro"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punto 0x%x, 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Coordinate schermo: %d, %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Emirati Arabi Uniti"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua e Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antille olandesi"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antartide"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Americane"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Isole Ã…land"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaigian"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia - Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgio"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint-Barthélemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Sint Eustatius e Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brasile"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Isola Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorussia"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Isole Cocos"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, Repubblica Democratica del"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Repubblica Centrafricana"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Svizzera"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Costa d'Avorio"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Isole Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Cile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Camerun"
-
-#. 156
-msgid "China"
-msgstr "Cina"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Capo Verde"
-
-#. 531
-msgid "Curacao"
-msgstr "Curaçao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Isola di Natale"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cipro"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Repubblica Ceca"
-
-#. 276
-msgid "Germany"
-msgstr "Germania"
-
-#. 262
-msgid "Djibouti"
-msgstr "Gibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danimarca"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Repubblica Dominicana"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egitto"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara Occidentale"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spagna"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finlandia"
-
-#. 242
-msgid "Fiji"
-msgstr "Figi"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Isole Falkland (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Stati Federati di Micronesia"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Isole Fær Øer"
-
-#. 250
-msgid "France"
-msgstr "Francia"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Regno Unito"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guyana Francese"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibilterra"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenlandia"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalupa"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guinea Equatoriale"
-
-#. 300
-msgid "Greece"
-msgstr "Grecia"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Georgia del Sud e Isole delle Sandwich meridionali"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Isole Heard e McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croazia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Ungheria"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Israele"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isola di Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Territorio Britannico dell'Oceano Indiano"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraq"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Repubblica Islamica dell'"
-
-#. 352
-msgid "Iceland"
-msgstr "Islanda"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Giamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Giordania"
-
-#. 392
-msgid "Japan"
-msgstr "Giappone"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirghizistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambogia"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comore"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts e Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Corea, Repubblica Democratica Popolare di"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Corea, Repubblica di"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Isole Cayman"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakistan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos, Repubblica popolare democratica del"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libano"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Santa Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lituania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Lussemburgo"
-
-#. 428
-msgid "Latvia"
-msgstr "Lettonia"
-
-#. 434
-msgid "Libya"
-msgstr "Libia"
-
-#. 504
-msgid "Morocco"
-msgstr "Marocco"
-
-#. 492
-msgid "Monaco"
-msgstr "Principato di Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavia"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint-Martin (parte francese)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Isole Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Repubblica di Macedonia"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Isole Marianne Settentrionali"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinica"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldive"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Messico"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malesia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambico"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nuova Caledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Isola Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Olanda"
-
-#. 578
-msgid "Norway"
-msgstr "Norvegia"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nuova Zelanda"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Perù"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinesia francese"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nuova Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filippine"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polonia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint-Pierre e Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Isole Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Porto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestina"
-
-#. 620
-msgid "Portugal"
-msgstr "Portogallo"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Isola della Riunione"
-
-#. 642
-msgid "Romania"
-msgstr "Romania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Federazione Russa"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arabia Saudita"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Isole Salomone"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Svezia"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Sant'Elena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard e Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovacchia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr "Sudan del Sud"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "São Tomé e Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sint Maarten (parte danese)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Siria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks e Caicos"
-
-#. 148
-msgid "Chad"
-msgstr "Ciad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Terre Australi e Antartiche Francesi"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailandia"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tagikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor Est"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turchia"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad e Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ucraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Isole minori esterne degli Stati Uniti"
-
-#. 840
-msgid "United States"
-msgstr "Stati Uniti"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Città del Vaticano"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent e Grenadine"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Isole Vergini britanniche"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Isole Vergini americane"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis e Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Sudafrica"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Sconosciuto, aggiungi tag is_in a quelle città"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-"Non è stato trovato alcun file di configurazione navit.xml, navit.xml.local\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Errore nel parsing del file di configurazione '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Usando il file di configurazione '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Errore: Nessuna configurazione trovata nel file config '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Inizializzazione interna fallita, uscendo. Controlla i messaggi di errore "
-"precedenti.\n"
-
-msgid "unknown street"
-msgstr "strada sconosciuta"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Veicolo senza nome"
-
-msgid "Failed to write bookmarks file"
-msgstr "Fallita scrittura file luogo preferito"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Punto sulla mappa"
-
-msgid "Car"
-msgstr "Automobile"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Nazione"
-
-msgid "Postal"
-msgstr "Postale"
-
-msgid "Town"
-msgstr "Centro abitato"
-
-msgid "District"
-msgstr "Regione"
-
-msgid "Street"
-msgstr "Via"
-
-msgid "Number"
-msgstr "Numero"
-
-msgid "Enter Destination"
-msgstr "Inserire la destinazione"
-
-msgid "Zip Code"
-msgstr "C.A.P."
-
-msgid "City"
-msgstr "Città"
-
-msgid "District/Township"
-msgstr "Regione/provincia"
-
-msgid "Map"
-msgstr "Mappa"
-
-msgid "Bookmark"
-msgstr "Posto"
-
-msgid "Destination"
-msgstr "Destinazione"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Visualizza"
-
-msgid "_Route"
-msgstr "Percorso"
-
-msgid "_Former Destinations"
-msgstr "Destinazioni precedenti"
-
-msgid "_Bookmarks"
-msgstr "_Luoghi preferiti"
-
-msgid "_Map"
-msgstr "Mappa"
-
-msgid "_Layout"
-msgstr "Layout"
-
-msgid "_Projection"
-msgstr "Proiezione"
-
-msgid "_Vehicle"
-msgstr "Veicolo"
-
-msgid "Zoom_Out"
-msgstr "Zoom -"
-
-msgid "Decrease zoom level"
-msgstr "Riduci zoom"
-
-msgid "Zoom_In"
-msgstr "Zoom +"
-
-msgid "Increase zoom level"
-msgstr "Aumenta zoom"
-
-msgid "_Recalculate"
-msgstr "Ricalcola"
-
-msgid "Redraw map"
-msgstr "Ridisegna la mappa"
-
-msgid "_Info"
-msgstr "Informazioni"
-
-msgid "Set _destination"
-msgstr "Imposta_destinazione"
-
-msgid "Opens address search dialog"
-msgstr "Apri la finestra di ricerca indirizzo"
-
-msgid "_POI search"
-msgstr "_Ricerca POI"
-
-msgid "Opens POI search dialog"
-msgstr "Apri la finestra di ricerca POI"
-
-msgid "_Stop Navigation"
-msgstr "Interrompi la navigazione"
-
-msgid "Test"
-msgstr "Prova"
-
-msgid "_Quit"
-msgstr "_Esci"
-
-msgid "Quit the application"
-msgstr "Esci dal programma"
-
-msgid "Show position _cursor"
-msgstr "Mostra posizione_cursore"
-
-msgid "_Lock on Road"
-msgstr "Prosegui su questa strada"
-
-msgid "_Keep orientation to the North"
-msgstr "_Mantieni orientamento verso Nord"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-"Cambia l'orientamento della mappa tra il nord e la direzione del veicolo"
-
-msgid "_Roadbook"
-msgstr "Quaderno di viaggio"
-
-msgid "Show/hide route description"
-msgstr "Visualizza/Nascondi la decrizione del percorso"
-
-msgid "_Autozoom"
-msgstr "Zoom automatico"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Abilita/disabilita il cambiamento automatico del livello di zoom"
-
-msgid "_Fullscreen"
-msgstr "Schermo intero"
-
-msgid "Data"
-msgstr "Dati"
-
-msgid "Pharmacy"
-msgstr "Farmacia"
-
-msgid "Restaurant"
-msgstr "Ristorante"
-
-msgid "Restaurant. Fast food"
-msgstr "Ristorante. Fast food"
-
-msgid "Hotel"
-msgstr "Albergo"
-
-msgid "Car parking"
-msgstr "Parcheggio per auto"
-
-msgid "Fuel station"
-msgstr "Benzinaio"
-
-msgid "Bank"
-msgstr "Banca"
-
-msgid "Hospital"
-msgstr "Ospedale"
-
-msgid "Cinema"
-msgstr "Cinema"
-
-msgid "Train station"
-msgstr "Stazione ferroviaria"
-
-msgid "School"
-msgstr "Scuola"
-
-msgid "Police"
-msgstr "Polizia"
-
-msgid "Justice"
-msgstr "Tribunale"
-
-msgid "Taxi"
-msgstr "Taxi"
-
-msgid "Shopping"
-msgstr "Negozi"
-
-msgid "Distance from screen center (km)"
-msgstr "Distanza dal centro dello schermo (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "POI %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Imposta la destinazione a %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "Imposta la mappa a %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "Imposta la prossima tappa a %ld, %ld \n"
-
-msgid "POI search"
-msgstr "Ricerca POI"
-
-msgid "Select a category"
-msgstr "Selezionare una categoria"
-
-msgid "Select a distance to look for (km)"
-msgstr "Selezionare la distanza in cui cercare (km)"
-
-msgid "Select a POI"
-msgstr "Selezionare un POI"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Categoria"
-
-msgid "Direction"
-msgstr "Direzione"
-
-msgid "Distance(m)"
-msgstr "Distanza (m)"
-
-msgid "Name"
-msgstr "Nome"
-
-msgid "Visit Before"
-msgstr "Visita prima"
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SO"
-
-msgid "W"
-msgstr "O"
-
-msgid "NW"
-msgstr "NO"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "No"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Percorso %4.0f km, %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Percorso 0000 km, 00:00 ETA"
-
-msgid "Help"
-msgstr "Aiuto"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Waypoint %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Selezionare waypoint per inserire il nuovo prima"
-
-msgid "View in Browser"
-msgstr "Visualizza nel browser"
-
-msgid "Item type"
-msgstr "Tipo elemento"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Strade"
-
-msgid "House numbers"
-msgstr "Numeri civici"
-
-msgid "View Attributes"
-msgstr "Visualizza attributi"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Impostare come posizione (e disattivare veicolo)"
-
-msgid "POIs"
-msgstr "Punti d'interesse"
-
-msgid "View on map"
-msgstr "Visualizza sulla mappa"
-
-msgid "Remove search results from the map"
-msgstr "Elimina i risultati della ricerca dalla mappa"
-
-msgid "Show results on the map"
-msgstr "Mostra risultati sulla mappa"
-
-msgid "Cut Bookmark"
-msgstr "Taglia posto"
-
-msgid "Copy Bookmark"
-msgstr "Copia posto"
-
-msgid "Rename Bookmark"
-msgstr "Rinomina posto"
-
-msgid "Paste Bookmark"
-msgstr "Incolla posto"
-
-msgid "Delete Bookmark"
-msgstr "Cancella posto"
-
-msgid "Delete waypoint"
-msgstr "Cancella waypoint"
-
-msgid "Bookmarks"
-msgstr "Luoghi preferiti"
-
-msgid "Bookmarks as waypoints"
-msgstr "Luoghi preferiti come waypoints"
-
-msgid "Save waypoints"
-msgstr "Salva waypoints"
-
-msgid "Replace with waypoints"
-msgstr "Rimpiazza con waypoint"
-
-msgid "Delete Folder"
-msgstr "Elimina Cartella"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Aggiungere una cartella di posti"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Incolla posto"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Posto %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Scarica %s"
-
-msgid "Map Download"
-msgstr "Scarica Mappa"
-
-msgid "Active"
-msgstr "Attivo"
-
-msgid "Download Enabled"
-msgstr "Scaricamento abilitato"
-
-msgid "Download completely"
-msgstr "Scarica completamente"
-
-msgid "Show Satellite Status"
-msgstr "Mostra stato satellite"
-
-msgid " Elevation "
-msgstr " Elevazione "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "Mostra dati NMEA"
-
-msgid "car"
-msgstr "Automobile"
-
-msgid "bike"
-msgstr "Bicicletta"
-
-msgid "pedestrian"
-msgstr "Pedone"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Profilo corrente: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Cambia profilo con: %s"
-
-msgid "Set as active"
-msgstr "Imposta come attivo"
-
-msgid "Show Satellite status"
-msgstr "Mostra stato satellite"
-
-msgid "Show NMEA data"
-msgstr "Mostra dati NMEA"
-
-msgid "Add Bookmark"
-msgstr "Aggiungere un posto"
-
-msgid "Rename"
-msgstr "Rinomina"
-
-msgid "About Navit"
-msgstr "Info su Navit"
-
-#. Authors
-msgid "By"
-msgstr "di"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "e tutta la squadra Navit"
-
-msgid "members and contributors."
-msgstr "membri e contributori."
-
-msgid "Waypoints"
-msgstr "Waypoints"
-
-msgid "Enter Coordinates"
-msgstr "Inserire Coordinate"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Latitudine Longitudine"
-
-msgid "Enter coordinates, for example:"
-msgstr "Inserire coordinate, ad esempio:"
-
-msgid "Vehicle"
-msgstr "Veicolo"
-
-msgid "Rules"
-msgstr "Regole"
-
-msgid "Lock on road"
-msgstr "Blocca sulla strada"
-
-msgid "Northing"
-msgstr "Visione verso nord"
-
-msgid "Map follows Vehicle"
-msgstr "La mappa segue il veicolo"
-
-msgid "Plan with Waypoints"
-msgstr "Pianifica con Waypoints"
-
-msgid "Maps"
-msgstr "Mappe"
-
-msgid "Layout"
-msgstr "Layout"
-
-msgid "Height Profile"
-msgstr "Altimetria"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Descrizione del percorso"
-
-msgid "Show Locale"
-msgstr "Mostra la localizzazione"
-
-msgid "Former Destinations"
-msgstr "Destinazioni precedenti"
-
-msgid "- No former destinations available -"
-msgstr "-Nessuna destinazione precedente disponibile-"
-
-msgid "Message"
-msgstr "Messaggio"
-
-msgid "Back"
-msgstr "Indietro"
-
-msgid "Back to map"
-msgstr "Torna alla mappa"
-
-msgid "Main Menu"
-msgstr "Menù principale"
-
-msgid "House number"
-msgstr "Numero civico"
-
-msgid "Next"
-msgstr "Successivo"
-
-msgid "Prev"
-msgstr "Precedente"
-
-msgid "Return to route!"
-msgstr "Ritornare sul percorso!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Attenzione! Autovelox!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Prego rallenta"
-
-msgid "partial match"
-msgstr "corrispondemza parziale"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Cerca"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Paesini"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Dati Mappa (c) Contributori OpenStreetMap, licenza ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "Mappe scaricate"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Percorso per questo punto"
-
-msgid "Cancel"
-msgstr "Annulla"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "Intero Pianeta"
-
-msgid "Africa"
-msgstr "Africa"
-
-msgid "Canary Islands"
-msgstr "Isole Canarie"
-
-msgid "Asia"
-msgstr "Asia"
-
-msgid "Korea"
-msgstr "Corea"
-
-msgid "Taiwan"
-msgstr "Taiwan"
-
-msgid "UAE+Other"
-msgstr "Emirati Arabi Uniti+altro"
-
-msgid "Oceania"
-msgstr "Oceania"
-
-msgid "Tasmania"
-msgstr "Tasmania"
-
-msgid "Victoria"
-msgstr "Victoria"
-
-msgid "New South Wales"
-msgstr "Nuovo Galles del Sud"
-
-msgid "Europe"
-msgstr "Europa"
-
-msgid "Western Europe"
-msgstr "Europa occidentale"
-
-msgid "Azores"
-msgstr "Azzorre"
-
-msgid "BeNeLux"
-msgstr "BeNeLux"
-
-msgid "Alsace"
-msgstr "Alsazia"
-
-msgid "Aquitaine"
-msgstr "Aquitania"
-
-msgid "Auvergne"
-msgstr "Alvernia"
-
-msgid "Basse-Normandie"
-msgstr "Bassa Normandia"
-
-msgid "Bourgogne"
-msgstr "Borgogna"
-
-msgid "Bretagne"
-msgstr "Bretagna"
-
-msgid "Centre"
-msgstr "Centro"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardenne"
-
-msgid "Corse"
-msgstr "Corsica"
-
-msgid "Franche-Comte"
-msgstr "Franca Contea"
-
-msgid "Haute-Normandie"
-msgstr "Alta Normandia"
-
-msgid "Ile-de-France"
-msgstr "Ile-de-France"
-
-msgid "Languedoc-Roussillon"
-msgstr "Linguadoca-Rossiglione"
-
-msgid "Limousin"
-msgstr "Limosino"
-
-msgid "Lorraine"
-msgstr "Lorena"
-
-msgid "Midi-Pyrenees"
-msgstr "Midi-Pirenei"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-Passo di Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Paesi della Loira"
-
-msgid "Picardie"
-msgstr "Picardia"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provenza-Alpi-Costa Azzurra"
-
-msgid "Rhone-Alpes"
-msgstr "Rodano-Alpi"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-msgid "Bayern"
-msgstr "Baviera"
-
-msgid "Mittelfranken"
-msgstr "Media Franconia"
-
-msgid "Niederbayern"
-msgstr "Bassa Baviera"
-
-msgid "Oberbayern"
-msgstr "Alta Baviera"
-
-msgid "Oberfranken"
-msgstr "Alta Franconia"
-
-msgid "Oberpfalz"
-msgstr "Alto Palatinato"
-
-msgid "Schwaben"
-msgstr "Svevia"
-
-msgid "Unterfranken"
-msgstr "Bassa Franconia"
-
-msgid "Berlin"
-msgstr "Berlino"
-
-msgid "Brandenburg"
-msgstr "Brandeburgo"
-
-msgid "Bremen"
-msgstr "Brema"
-
-msgid "Hamburg"
-msgstr "Amburgo"
-
-msgid "Hessen"
-msgstr "Assia"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Meclemburgo-Pomerania Anteriore"
-
-msgid "Niedersachsen"
-msgstr "Bassa Sassonia"
-
-msgid "Nordrhein-westfalen"
-msgstr "Renania Settentrionale-Vestfalia"
-
-msgid "Rheinland-Pfalz"
-msgstr "Renania-Palatinato"
-
-msgid "Saarland"
-msgstr "Saarland"
-
-msgid "Sachsen-Anhalt"
-msgstr "Sassonia-Anhalt"
-
-msgid "Sachsen"
-msgstr "Sassonia"
-
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-msgid "Thueringen"
-msgstr "Turingia"
-
-msgid "Mallorca"
-msgstr "Maiorca"
-
-msgid "Galicia"
-msgstr "Galizia"
-
-msgid "Scandinavia"
-msgstr "Scandinavia"
-
-msgid "England"
-msgstr "Inghilterra"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "East yorkshire with hull"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "South yorkshire"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Scozia"
-
-msgid "Wales"
-msgstr "Galles"
-
-msgid "Crete"
-msgstr "Creta"
-
-msgid "North America"
-msgstr "America del Nord"
-
-msgid "Alaska"
-msgstr "Alaska"
-
-msgid "Hawaii"
-msgstr "Hawaii"
-
-msgid "USA"
-msgstr "Stati Uniti d'America"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (eccetto Alaska e Hawaii)"
-
-msgid "Midwest"
-msgstr "Stati Uniti medio occidentali"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Stati Uniti d'America nord-orientali"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Pacific"
-
-msgid "South"
-msgstr "Stati Uniti d'America meridionali"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "District of Columbia"
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Louisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virginia"
-
-msgid "West Virginia"
-msgstr "Virginia Occidentale"
-
-msgid "West"
-msgstr "Stati Uniti d'America occidentali"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "California"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "Nuovo Messico"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Washington (stato)"
-
-msgid "South+Middle America"
-msgstr "America Centrale"
-
-msgid "Guyane Francaise"
-msgstr "Guyana francese"
-
-msgid "downloading"
-msgstr "download in corso"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "pronto"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Spazio libero non sufficiente"
-
-msgid "Error downloading map!"
-msgstr "Errore nello scaricamento della mappa!"
-
-msgid "Error writing map!"
-msgstr "Errore nel salvataggio della mappa!"
-
-msgid "Map download aborted!"
-msgstr "Scaricamento mappa annullato!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Tempo stimato"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Scaricamento mappa"
-
-msgid "Vehicle Position"
-msgstr "Posizione del veicolo"
-
-msgid "Main menu"
-msgstr "Menù principale"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Mostra\n"
-"Mappa"
-
-msgid "Settings"
-msgstr "Impostazioni"
-
-msgid "Tools"
-msgstr "Strumenti"
-
-msgid "Route"
-msgstr "Percorso"
-
-msgid "About"
-msgstr "Info"
-
-msgid "Quit"
-msgstr "Esci"
-
-msgid "Actions"
-msgstr "Azioni"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Destinazioni\n"
-"precedenti"
-
-msgid "Coordinates"
-msgstr "Coordinate"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr "Stop"
-
-msgid "Display"
-msgstr "Visualizza"
-
-msgid "Fullscreen"
-msgstr "Schermo intero"
-
-msgid "Window Mode"
-msgstr "Modalità finestra"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Descrizione"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Togli l'ultimo \n"
-"Waypoint"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Togli il prossimo \n"
-"Waypoint"
-
-msgid "Satellite Status"
-msgstr "Stato dei Satelliti"
-
-msgid "NMEA Data"
-msgstr "Dati NMEA"
-
-msgid "car_shortest"
-msgstr "Automobile (strada più corta)"
-
-msgid "car_avoid_tolls"
-msgstr "Automobile (evita pedaggi)"
-
-msgid "car_pedantic"
-msgstr "Automobile (include strade minori)"
-
-msgid "horse"
-msgstr "Cavallo"
-
-msgid "Truck"
-msgstr "Mezzi pesanti/Camion"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Si"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit partito"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit in funzione"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Benvenuti in Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Grazie per aver installato Navit!\n"
-"\n"
-"Per iniziare, seleziona \"Scarica mappe\" dal menu per scaricare una mappa. "
-"Nota: Il file scaricato potrebbe essere grande (>50MB) - si consiglia una "
-"connessione wifi.\n"
-"\n"
-"Dati mappe: (c) Contributori OpenStreetMap\n"
-"\n"
-"Divertiti con Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Maggiori informazioni"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Ingrandisci"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Riduci"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Scarica mappe"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Mostra/nascondi POI"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Esci da Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Backup / Ripristino"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Cancellare questa mappa?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Download in corso:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Errore nello scaricamento della mappa"
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Scaricamento mappa annullato"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Nessuna posizione. Riaprire dopo il fix della posizione."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Mappe contenenti la posizione attuale"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Cerca indirizzo"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Inserisci destinazione"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Confronta indirizzo parziale"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Ricerca in corso..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Indirizzo non trovato"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Recupero risultati ricerca"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Caricamento risultati ricerca"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Nessun risultato trovato"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Non è stato immesso alcun testo"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Imposto destinazione su:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Scegliere un'azione"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Per favore inserire una memory card SD"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Backup in corso..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Ripristino in corso..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Creazione directory di backup fallita"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Backup fallito"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Nessun Backup trovato"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Ripristino fallito"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Backup avvenuto con successo"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Ripristino avvenuto con successo\n"
-"Per favore riavviare Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Backup non trovato"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Ripristino fallito"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Selezionare il backup"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Backup"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Ripristino"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "e alla rotonda prendere la %1$s %2$s"
diff --git a/po/ja.po.in b/po/ja.po.in
deleted file mode 100644
index 66ce52328..000000000
--- a/po/ja.po.in
+++ /dev/null
@@ -1,2741 +0,0 @@
-# Japanese translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# MontBlanc https://launchpad.net/~osm-gatinho
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2013-09-28 01:43+0000\n"
-"Last-Translator: KaZeR <Unknown>\n"
-"Language-Team: Japanese <ja@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: ja\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr ""
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr ""
-
-msgid "fifth"
-msgstr ""
-
-msgid "sixth"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr ""
-
-msgid "second exit"
-msgstr ""
-
-msgid "third exit"
-msgstr ""
-
-msgid "fourth exit"
-msgstr ""
-
-msgid "fifth exit"
-msgstr ""
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d メートル"
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "ã¾ã‚‚ãªã"
-
-msgid "now"
-msgstr "今"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "å³"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "å·¦"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "目的地ã®%sã«ã¤ãã¾ã—ãŸ"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr "コマンド"
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "ç¾åœ¨åœ°ã¨ã—ã¦è¨­å®š"
-
-msgid "Set as destination"
-msgstr "目的地ã¨ã—ã¦è¨­å®š"
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr "アンドラ"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "アラブ首長国連邦"
-
-#. 004
-msgid "Afghanistan"
-msgstr "アフガニスタン"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "アンティグア・ãƒãƒ¼ãƒ–ーダ"
-
-#. 660
-msgid "Anguilla"
-msgstr "アンギラ"
-
-#. 008
-msgid "Albania"
-msgstr "アルãƒãƒ‹ã‚¢"
-
-#. 051
-msgid "Armenia"
-msgstr "アルメニア"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "オランダ領アンティル"
-
-#. 024
-msgid "Angola"
-msgstr "アンゴラ"
-
-#. 010
-msgid "Antarctica"
-msgstr "å—極"
-
-#. 032
-msgid "Argentina"
-msgstr "アルゼンãƒãƒ³"
-
-#. 016
-msgid "American Samoa"
-msgstr "アメリカ領サモア"
-
-#. 040
-msgid "Austria"
-msgstr "オーストリア"
-
-#. 036
-msgid "Australia"
-msgstr "オーストラリア"
-
-#. 533
-msgid "Aruba"
-msgstr "アルãƒ"
-
-#. 248
-msgid "Aland Islands"
-msgstr "オーランド諸島"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "アゼルãƒã‚¤ã‚¸ãƒ£ãƒ³"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "ボスニア・ヘルツェゴビナ"
-
-#. 052
-msgid "Barbados"
-msgstr "ãƒãƒ«ãƒãƒ‰ã‚¹"
-
-#. 050
-msgid "Bangladesh"
-msgstr "ãƒãƒ³ã‚°ãƒ©ãƒ‡ã‚·ãƒ¥"
-
-#. 056
-msgid "Belgium"
-msgstr "ベルギー"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "ブルキナファソ"
-
-#. 100
-msgid "Bulgaria"
-msgstr "ブルガリア"
-
-#. 048
-msgid "Bahrain"
-msgstr "ãƒãƒ¼ãƒ¬ãƒ¼ãƒ³"
-
-#. 108
-msgid "Burundi"
-msgstr "ブルンジ"
-
-#. 204
-msgid "Benin"
-msgstr "ベナン"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr "ãƒãƒŸãƒ¥ãƒ¼ãƒ€è«¸å³¶"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "ブルãƒã‚¤ãƒ»ãƒ€ãƒ«ã‚µãƒ©ãƒ¼ãƒ "
-
-#. 068
-msgid "Bolivia"
-msgstr "ボリビア"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "ブラジル"
-
-#. 044
-msgid "Bahamas"
-msgstr "ãƒãƒãƒž"
-
-#. 064
-msgid "Bhutan"
-msgstr "ブータン"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "ブーベ島"
-
-#. 072
-msgid "Botswana"
-msgstr "ボツワナ"
-
-#. 112
-msgid "Belarus"
-msgstr "ベラルーシ"
-
-#. 084
-msgid "Belize"
-msgstr "ベリーズ"
-
-#. 124
-msgid "Canada"
-msgstr "カナダ"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "ココス (キーリング) 諸島"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "コンゴ民主共和国"
-
-#. 140
-msgid "Central African Republic"
-msgstr "中央アフリカ共和国"
-
-#. 178
-msgid "Congo"
-msgstr "コンゴ"
-
-#. 756
-msgid "Switzerland"
-msgstr "スイス"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "コートジボアール"
-
-#. 184
-msgid "Cook Islands"
-msgstr "クック諸島"
-
-#. 152
-msgid "Chile"
-msgstr "ãƒãƒª"
-
-#. 120
-msgid "Cameroon"
-msgstr "カメルーン"
-
-#. 156
-msgid "China"
-msgstr "中国"
-
-#. 170
-msgid "Colombia"
-msgstr "コロンビア"
-
-#. 188
-msgid "Costa Rica"
-msgstr "コスタリカ"
-
-#. 192
-msgid "Cuba"
-msgstr "キューãƒ"
-
-#. 132
-msgid "Cape Verde"
-msgstr "カーボベルデ"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "クリスマス島"
-
-#. 196
-msgid "Cyprus"
-msgstr "キプロス"
-
-#. 203
-msgid "Czech Republic"
-msgstr "ãƒã‚§ã‚³å…±å’Œå›½"
-
-#. 276
-msgid "Germany"
-msgstr "ドイツ"
-
-#. 262
-msgid "Djibouti"
-msgstr "ジブãƒ"
-
-#. 208
-msgid "Denmark"
-msgstr "デンマーク"
-
-#. 212
-msgid "Dominica"
-msgstr "ドミニカ"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "ドミニカ共和国"
-
-#. 012
-msgid "Algeria"
-msgstr "アルジェリア"
-
-#. 218
-msgid "Ecuador"
-msgstr "エクアドル"
-
-#. 233
-msgid "Estonia"
-msgstr "エストニア"
-
-#. 818
-msgid "Egypt"
-msgstr "エジプト"
-
-#. 732
-msgid "Western Sahara"
-msgstr "西サãƒãƒ©"
-
-#. 232
-msgid "Eritrea"
-msgstr "エリトリア"
-
-#. 724
-msgid "Spain"
-msgstr "スペイン"
-
-#. 231
-msgid "Ethiopia"
-msgstr "エãƒã‚ªãƒ”ã‚¢"
-
-#. 246
-msgid "Finland"
-msgstr "フィンランド"
-
-#. 242
-msgid "Fiji"
-msgstr "フィジー"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "フォークランド諸島 (マルビナス)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "ミクロãƒã‚·ã‚¢é€£é‚¦é‚¦å›½"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "フェロー諸島"
-
-#. 250
-msgid "France"
-msgstr "フランス"
-
-#. 266
-msgid "Gabon"
-msgstr "ガボン"
-
-#. 826
-msgid "United Kingdom"
-msgstr "イギリス"
-
-#. 308
-msgid "Grenada"
-msgstr "グレナダ"
-
-#. 268
-msgid "Georgia"
-msgstr "グルジア"
-
-#. 254
-msgid "French Guiana"
-msgstr "フランス領ギアナ"
-
-#. 831
-msgid "Guernsey"
-msgstr "ガーンジー島"
-
-#. 288
-msgid "Ghana"
-msgstr "ガーナ"
-
-#. 292
-msgid "Gibraltar"
-msgstr "ジブラルタル"
-
-#. 304
-msgid "Greenland"
-msgstr "グリーンランド"
-
-#. 270
-msgid "Gambia"
-msgstr "ガンビア"
-
-#. 324
-msgid "Guinea"
-msgstr "ギニア"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "グアドループ島"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "赤é“ギニア"
-
-#. 300
-msgid "Greece"
-msgstr "ギリシャ"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "å—ジョージア島・å—サンドイッãƒè«¸å³¶"
-
-#. 320
-msgid "Guatemala"
-msgstr "グアテマラ"
-
-#. 316
-msgid "Guam"
-msgstr "グアム"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "ギニアビサウ"
-
-#. 328
-msgid "Guyana"
-msgstr "ガイアナ"
-
-#. 344
-msgid "Hong Kong"
-msgstr "香港"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "ãƒãƒ¼ãƒ‰å³¶ã¨ãƒžã‚¯ãƒ‰ãƒŠãƒ«ãƒ‰è«¸å³¶"
-
-#. 340
-msgid "Honduras"
-msgstr "ホンジュラス"
-
-#. 191
-msgid "Croatia"
-msgstr "クロアãƒã‚¢"
-
-#. 332
-msgid "Haiti"
-msgstr "ãƒã‚¤ãƒ"
-
-#. 348
-msgid "Hungary"
-msgstr "ãƒãƒ³ã‚¬ãƒªãƒ¼"
-
-#. 360
-msgid "Indonesia"
-msgstr "インドãƒã‚·ã‚¢"
-
-#. 372
-msgid "Ireland"
-msgstr "アイルランド"
-
-#. 376
-msgid "Israel"
-msgstr "イスラエル"
-
-#. 833
-msgid "Isle of Man"
-msgstr "マン島"
-
-#. 356
-msgid "India"
-msgstr "インド"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "イギリス領インド洋地域"
-
-#. 368
-msgid "Iraq"
-msgstr "イラク"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "イラン・イスラム共和国"
-
-#. 352
-msgid "Iceland"
-msgstr "アイスランド"
-
-#. 380
-msgid "Italy"
-msgstr "イタリア"
-
-#. 832
-msgid "Jersey"
-msgstr "ジャージー島"
-
-#. 388
-msgid "Jamaica"
-msgstr "ジャマイカ"
-
-#. 400
-msgid "Jordan"
-msgstr "ヨルダン"
-
-#. 392
-msgid "Japan"
-msgstr "日本"
-
-#. 404
-msgid "Kenya"
-msgstr "ケニア"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "キルギス"
-
-#. 116
-msgid "Cambodia"
-msgstr "カンボジア"
-
-#. 296
-msgid "Kiribati"
-msgstr "キリãƒã‚¹å…±å’Œå›½"
-
-#. 174
-msgid "Comoros"
-msgstr "コモロ"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "æœé®®æ°‘主主義人民共和国"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "大韓民国 (韓国)"
-
-#. 414
-msgid "Kuwait"
-msgstr "クウェート"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "ケイマン諸島"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "カザフスタン"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "ラオス人民民主共和国"
-
-#. 422
-msgid "Lebanon"
-msgstr "レãƒãƒŽãƒ³"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "セントルシア"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "リヒテンシュタイン"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "スリランカ"
-
-#. 430
-msgid "Liberia"
-msgstr "リベリア"
-
-#. 426
-msgid "Lesotho"
-msgstr "レソト"
-
-#. 440
-msgid "Lithuania"
-msgstr "リトアニア"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ルクセンブルク"
-
-#. 428
-msgid "Latvia"
-msgstr "ラトビア"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "モロッコ"
-
-#. 492
-msgid "Monaco"
-msgstr "モナコ"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "モルドãƒå…±å’Œå›½"
-
-#. 499
-msgid "Montenegro"
-msgstr "モンテãƒã‚°ãƒ­"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr "マダガスカル"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "マーシャル諸島"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr "マリ"
-
-#. 104
-msgid "Myanmar"
-msgstr "ミャンマー"
-
-#. 496
-msgid "Mongolia"
-msgstr "モンゴル"
-
-#. 446
-msgid "Macao"
-msgstr "マカオ"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "北マリアナ諸島連邦"
-
-#. 474
-msgid "Martinique"
-msgstr "マルティニク"
-
-#. 478
-msgid "Mauritania"
-msgstr "モーリタニア"
-
-#. 500
-msgid "Montserrat"
-msgstr "モントセラト"
-
-#. 470
-msgid "Malta"
-msgstr "マルタ"
-
-#. 480
-msgid "Mauritius"
-msgstr "モーリシャス"
-
-#. 462
-msgid "Maldives"
-msgstr "モルディブ"
-
-#. 454
-msgid "Malawi"
-msgstr "マラウイ"
-
-#. 484
-msgid "Mexico"
-msgstr "メキシコ"
-
-#. 458
-msgid "Malaysia"
-msgstr "マレーシア"
-
-#. 508
-msgid "Mozambique"
-msgstr "モザンビーク"
-
-#. 516
-msgid "Namibia"
-msgstr "ナミビア"
-
-#. 540
-msgid "New Caledonia"
-msgstr "ニューカレドニア"
-
-#. 562
-msgid "Niger"
-msgstr "ニジェール"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "ノーフォーク島"
-
-#. 566
-msgid "Nigeria"
-msgstr "ナイジェリア"
-
-#. 558
-msgid "Nicaragua"
-msgstr "ニカラグア"
-
-#. 528
-msgid "Netherlands"
-msgstr "オランダ"
-
-#. 578
-msgid "Norway"
-msgstr "ノルウェー"
-
-#. 524
-msgid "Nepal"
-msgstr "ãƒãƒ‘ール"
-
-#. 520
-msgid "Nauru"
-msgstr "ナウル語"
-
-#. 570
-msgid "Niue"
-msgstr "ニウエ"
-
-#. 554
-msgid "New Zealand"
-msgstr "ニュージーランド"
-
-#. 512
-msgid "Oman"
-msgstr "オマーン"
-
-#. 591
-msgid "Panama"
-msgstr "パナマ"
-
-#. 604
-msgid "Peru"
-msgstr "ペルー"
-
-#. 258
-msgid "French Polynesia"
-msgstr "フランス領ãƒãƒªãƒã‚·ã‚¢"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "パプアニューギニア"
-
-#. 608
-msgid "Philippines"
-msgstr "フィリピン"
-
-#. 586
-msgid "Pakistan"
-msgstr "パキスタン"
-
-#. 616
-msgid "Poland"
-msgstr "ãƒãƒ¼ãƒ©ãƒ³ãƒ‰"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "サンピエールエミクロン"
-
-#. 612
-msgid "Pitcairn"
-msgstr "ピトケルン"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "プエルトリコ"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "パレスãƒãƒŠå é ˜åœ°åŒº"
-
-#. 620
-msgid "Portugal"
-msgstr "ãƒãƒ«ãƒˆã‚¬ãƒ«"
-
-#. 585
-msgid "Palau"
-msgstr "パラオ"
-
-#. 600
-msgid "Paraguay"
-msgstr "パラグアイ"
-
-#. 634
-msgid "Qatar"
-msgstr "カタール"
-
-#. 638
-msgid "Reunion"
-msgstr "レユニオン"
-
-#. 642
-msgid "Romania"
-msgstr "ルーマニア"
-
-#. 688
-msgid "Serbia"
-msgstr "セルビア"
-
-#. 643
-msgid "Russian Federation"
-msgstr "ロシア連邦"
-
-#. 646
-msgid "Rwanda"
-msgstr "ルワンダ"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "サウジアラビア"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "ソロモン諸島"
-
-#. 690
-msgid "Seychelles"
-msgstr "セーシェル"
-
-#. 736
-msgid "Sudan"
-msgstr "スーダン"
-
-#. 752
-msgid "Sweden"
-msgstr "スウェーデン"
-
-#. 702
-msgid "Singapore"
-msgstr "シンガãƒãƒ¼ãƒ«"
-
-#. 654
-msgid "Saint Helena"
-msgstr "セントヘレナ"
-
-#. 705
-msgid "Slovenia"
-msgstr "スロベニア"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr "スロãƒã‚­ã‚¢"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "シエラレオãƒ"
-
-#. 674
-msgid "San Marino"
-msgstr "サンマリノ"
-
-#. 686
-msgid "Senegal"
-msgstr "ã‚»ãƒã‚¬ãƒ«"
-
-#. 706
-msgid "Somalia"
-msgstr "ソマリア"
-
-#. 740
-msgid "Suriname"
-msgstr "スリナム"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "サントメ・プリンシペ"
-
-#. 222
-msgid "El Salvador"
-msgstr "エルサルãƒãƒ‰ãƒ«"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "シリアアラブ共和国"
-
-#. 748
-msgid "Swaziland"
-msgstr "スワジランド"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "タークス諸島・カイコス諸島"
-
-#. 148
-msgid "Chad"
-msgstr "ãƒãƒ£ãƒ‰"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "ä»é ˜æ¥µå—諸島"
-
-#. 768
-msgid "Togo"
-msgstr "トーゴ"
-
-#. 764
-msgid "Thailand"
-msgstr "タイ"
-
-#. 762
-msgid "Tajikistan"
-msgstr "タジキスタン"
-
-#. 772
-msgid "Tokelau"
-msgstr "トケラウ"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "æ±ãƒ†ã‚£ãƒ¢ãƒ¼ãƒ«"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "トルクメニスタン"
-
-#. 788
-msgid "Tunisia"
-msgstr "ãƒãƒ¥ãƒ‹ã‚¸ã‚¢"
-
-#. 776
-msgid "Tonga"
-msgstr "トンガ"
-
-#. 792
-msgid "Turkey"
-msgstr "トルコ"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "トリニダード・トãƒã‚´"
-
-#. 798
-msgid "Tuvalu"
-msgstr "ツãƒãƒ«"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "タニザニア連åˆå…±å’Œå›½"
-
-#. 804
-msgid "Ukraine"
-msgstr "ウクライナ"
-
-#. 800
-msgid "Uganda"
-msgstr "ウガンダ"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "åˆè¡†å›½é ˜æœ‰å°é›¢å³¶"
-
-#. 840
-msgid "United States"
-msgstr "アメリカåˆè¡†å›½"
-
-#. 858
-msgid "Uruguay"
-msgstr "ウルグアイ"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "ウズベキスタン"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr "ベãƒã‚ºã‚¨ãƒ©"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "イギリス領ヴァージン諸島"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "アメリカ領ヴァージン諸島"
-
-#. 704
-msgid "Viet Nam"
-msgstr "ベトナム"
-
-#. 548
-msgid "Vanuatu"
-msgstr "ãƒãƒŒã‚¢ãƒ„"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr "サモア"
-
-#. 887
-msgid "Yemen"
-msgstr "イエメン"
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr "å—アフリカ"
-
-#. 894
-msgid "Zambia"
-msgstr "ザンビア"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "ジンãƒãƒ–エ"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr "国"
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr "目的地を入力"
-
-msgid "Zip Code"
-msgstr "郵便番å·"
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr "地図"
-
-msgid "Bookmark"
-msgstr "ブックマーク"
-
-msgid "Destination"
-msgstr "目的地"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr "ルート"
-
-msgid "_Former Destinations"
-msgstr "å‰ã®ç›®çš„地"
-
-msgid "_Bookmarks"
-msgstr "ブックマーク"
-
-msgid "_Map"
-msgstr "地図"
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr "ズームアウト"
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr "ズームイン"
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr "å†è¨ˆç®—"
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "案内中止"
-
-msgid "Test"
-msgstr "テスト"
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "全画é¢è¡¨ç¤º"
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "北"
-
-msgid "NE"
-msgstr "北æ±"
-
-msgid "E"
-msgstr "æ±"
-
-msgid "SE"
-msgstr "å—æ±"
-
-msgid "S"
-msgstr "å—"
-
-msgid "SW"
-msgstr "å—西"
-
-msgid "W"
-msgstr "西"
-
-msgid "NW"
-msgstr "北西"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "ブックマーク"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr "å‰ã®ç›®çš„地"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr "ルート"
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr "全画é¢è¡¨ç¤º"
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/jv.po.in b/po/jv.po.in
deleted file mode 100644
index 500c5c750..000000000
--- a/po/jv.po.in
+++ /dev/null
@@ -1,2745 +0,0 @@
-# Javanese translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Leonardus Priyo Handono https://launchpad.net/~leonardus-ymail
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:59+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Javanese <jv@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 0;\n"
-"Language: jv\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "now"
-msgstr "saiki"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr ""
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr ""
-
-msgid "fifth"
-msgstr ""
-
-msgid "sixth"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "metu kapisan"
-
-msgid "second exit"
-msgstr "metu kapindho"
-
-msgid "third exit"
-msgstr "metu katelu"
-
-msgid "fourth exit"
-msgstr "metu kapapat"
-
-msgid "fifth exit"
-msgstr "metu kalimo"
-
-msgid "sixth exit"
-msgstr "metu kaenem"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] "ing %d kilometer"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s ing dalan %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s ing dalan %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s ing dalan %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s ing dalan %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sing dalan %s"
-
-msgid "When possible, please turn around"
-msgstr "Yen biso, mutero"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Tetep ing dalan iki nganti %s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Metu soko puteran ing cawang kaping %1$s %2$s"
-
-msgid "soon"
-msgstr "sedhelo maneh"
-
-msgid "then"
-msgstr "terus"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "nengen"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "ngiwa"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "kanthi gampang "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Jupuk dalan kaping %1$s ing %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "sakwise %i dalan"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "terus panjenengan tekan tujuan"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Metu"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "dunung"
-
-msgid "Command"
-msgstr "perintah"
-
-msgid "Length"
-msgstr "Amba"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Wektu"
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr "Wektu tekan tujuan"
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr "Dadekno tujuan"
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Titik 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Koordinat layar : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua lan Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Londo"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antartika"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Amerika"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Pulo Aland"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia lan Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgia"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Santo Bartolomeus"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brazil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahama"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Belarusia"
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr "Republik Afrika Tengah"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Swiss"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr "Chili"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Cina"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kosta Rika"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Pulau Natal"
-
-#. 196
-msgid "Cyprus"
-msgstr "Siprus"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Republik Czech"
-
-#. 276
-msgid "Germany"
-msgstr "Jerman"
-
-#. 262
-msgid "Djibouti"
-msgstr "Jibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Denmark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Republik Dominika"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Mesir"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara Kulon"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spanyol"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Ethiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finlandia"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr "Perancis"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroasia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungaria"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlandia"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Republik Islam Iran"
-
-#. 352
-msgid "Iceland"
-msgstr "Islandia"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "Yordania"
-
-#. 392
-msgid "Japan"
-msgstr "Jepang"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "terus metu soko puteran ing cawang kaping %1$s %2$s"
diff --git a/po/kk.po.in b/po/kk.po.in
deleted file mode 100644
index 7f48773a4..000000000
--- a/po/kk.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# Kazakh translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2010-02-24 19:32+0000\n"
-"Last-Translator: \n"
-"Language-Team: Kazakh <kk@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: kk\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr ""
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr ""
-
-msgid "fifth"
-msgstr ""
-
-msgid "sixth"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr ""
-
-msgid "second exit"
-msgstr ""
-
-msgid "third exit"
-msgstr ""
-
-msgid "fourth exit"
-msgstr ""
-
-msgid "fifth exit"
-msgstr ""
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr ""
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/kn.po.in b/po/kn.po.in
deleted file mode 100644
index 7a1b13a20..000000000
--- a/po/kn.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# Kannada translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Mahesh Venom https://launchpad.net/~mahesh-venom-73
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2014-06-21 16:42+0000\n"
-"Last-Translator: Mahesh Venom <mahesh.venom.73@gmail.com>\n"
-"Language-Team: Kannada <kn@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: kn\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr "ಮೊದಲ"
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr ""
-
-msgid "fifth"
-msgstr ""
-
-msgid "sixth"
-msgstr "Aarane"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr ""
-
-msgid "second exit"
-msgstr ""
-
-msgid "third exit"
-msgstr ""
-
-msgid "fourth exit"
-msgstr ""
-
-msgid "fifth exit"
-msgstr ""
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr ""
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/ko.po.in b/po/ko.po.in
deleted file mode 100644
index 4c908aa68..000000000
--- a/po/ko.po.in
+++ /dev/null
@@ -1,2736 +0,0 @@
-# Korean translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Seungjun, Lee https://launchpad.net/~cybercorean
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 21:39+0000\n"
-"Last-Translator: KaZeR <Unknown>\n"
-"Language-Team: Korean <ko@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: ko\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr "첫번째"
-
-msgid "second"
-msgstr "ë‘번째"
-
-msgid "third"
-msgstr "세번째"
-
-msgid "fourth"
-msgstr "네번째"
-
-msgid "fifth"
-msgstr "다섯번째"
-
-msgid "sixth"
-msgstr "여섯번재"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "첫번째 출구"
-
-msgid "second exit"
-msgstr "ë‘번째 출구"
-
-msgid "third exit"
-msgstr "세번째 출구"
-
-msgid "fourth exit"
-msgstr "네번째 출구"
-
-msgid "fifth exit"
-msgstr "다섯번째 출구"
-
-msgid "sixth exit"
-msgstr "여섯번째 출구"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d 피트"
-
-#, c-format
-msgid "in %d feet"
-msgstr "%d 피트 후ì—"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d 마ì¼"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "%d.%d ë§ˆì¼ í›„ì—"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "%d 마ì¼"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "%d ë§ˆì¼ í›„ì—"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d 미터"
-
-#, c-format
-msgid "in %d meters"
-msgstr "%d 미터 후ì—"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d 킬로미터"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d.%d 킬로미터 후ì—"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d 킬로미터"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "%d 킬로미터 후ì—"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s %s 방향으로"
-
-msgid "When possible, please turn around"
-msgstr "가능하면 유턴하세요"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "ë‹¤ìŒ %s 까지 ì§ì§„하세요"
-
-msgid "Enter the roundabout soon"
-msgstr "ë¡œíƒ€ë¦¬ì— ê³§ 진입합니다"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "%s ë¡œíƒ€ë¦¬ì— ì§„ìž…í•©ë‹ˆë‹¤"
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "곧"
-
-msgid "now"
-msgstr "지금"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "ìš°"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "좌"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "약간 "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "í¬ê²Œ "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "%1$s 번째 출구ì—ì„œ %2$s ë¡œ 나가세요"
-
-#, c-format
-msgid "after %i roads"
-msgstr "%i ë„ë¡œ ì´í›„ì—"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "%3$s%4$s %1$s%2$s 회전 하세요"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "목ì ì§€ì— ë„착하였습니다."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "%s 목ì ì§€ì— ë„착합니다"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr "명령"
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "지ì ìœ¼ë¡œì„¤ì •"
-
-msgid "Set as destination"
-msgstr "목ì ì§€ë¡œì„¤ì •"
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr "안ë„ë¼"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "ì•„ëžì—미리트연방"
-
-#. 004
-msgid "Afghanistan"
-msgstr "아프가니스탄"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "앤티가 바부다"
-
-#. 660
-msgid "Anguilla"
-msgstr "안길ë¼"
-
-#. 008
-msgid "Albania"
-msgstr "알바니아"
-
-#. 051
-msgid "Armenia"
-msgstr "아르메니아"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "앤틸러스제ë„"
-
-#. 024
-msgid "Angola"
-msgstr "앙골ë¼"
-
-#. 010
-msgid "Antarctica"
-msgstr "남극"
-
-#. 032
-msgid "Argentina"
-msgstr "아르헨티나"
-
-#. 016
-msgid "American Samoa"
-msgstr "아메리칸사모아"
-
-#. 040
-msgid "Austria"
-msgstr "오스트리아"
-
-#. 036
-msgid "Australia"
-msgstr "오스트레ì¼ë¦¬ì•„"
-
-#. 533
-msgid "Aruba"
-msgstr "아루바"
-
-#. 248
-msgid "Aland Islands"
-msgstr "올란드제ë„"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "아제르바ì´ìž”"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "보스니아・헤르체고비나"
-
-#. 052
-msgid "Barbados"
-msgstr "바베ì´ë„스"
-
-#. 050
-msgid "Bangladesh"
-msgstr "방글ë¼ë°ì‹œ"
-
-#. 056
-msgid "Belgium"
-msgstr "벨기ì—"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "부르키나파소"
-
-#. 100
-msgid "Bulgaria"
-msgstr "불가리아"
-
-#. 048
-msgid "Bahrain"
-msgstr "바레ì¸"
-
-#. 108
-msgid "Burundi"
-msgstr "부룬디"
-
-#. 204
-msgid "Benin"
-msgstr "베닌"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr "버뮤다제ë„"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "브루나ì´"
-
-#. 068
-msgid "Bolivia"
-msgstr "볼리비아"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "브ë¼ì§ˆ"
-
-#. 044
-msgid "Bahamas"
-msgstr "바하마"
-
-#. 064
-msgid "Bhutan"
-msgstr "부탄"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "부베섬島"
-
-#. 072
-msgid "Botswana"
-msgstr "보츠와나"
-
-#. 112
-msgid "Belarus"
-msgstr "벨ë¼ë£¨ìŠ¤"
-
-#. 084
-msgid "Belize"
-msgstr "벨리즈"
-
-#. 124
-msgid "Canada"
-msgstr "ìºë‚˜ë‹¤"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "코코아 (킬ë§) ì œë„"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "콩고민주공화국"
-
-#. 140
-msgid "Central African Republic"
-msgstr "중앙아프리카공화국"
-
-#. 178
-msgid "Congo"
-msgstr "콩고"
-
-#. 756
-msgid "Switzerland"
-msgstr "스위스"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "코트디부아르"
-
-#. 184
-msgid "Cook Islands"
-msgstr "ì¿¡ì œë„"
-
-#. 152
-msgid "Chile"
-msgstr "ì¹ ë ˆ"
-
-#. 120
-msgid "Cameroon"
-msgstr "카메룬"
-
-#. 156
-msgid "China"
-msgstr "중국"
-
-#. 170
-msgid "Colombia"
-msgstr "콜롬비아"
-
-#. 188
-msgid "Costa Rica"
-msgstr "코스타리카"
-
-#. 192
-msgid "Cuba"
-msgstr "ì¿ ë°”"
-
-#. 132
-msgid "Cape Verde"
-msgstr "카보베르ë°"
-
-#. 531
-msgid "Curacao"
-msgstr "퀴ë¼ì†Œ"
-
-#. 162
-msgid "Christmas Island"
-msgstr "í¬ë¦¬ìŠ¤ë§ˆìŠ¤ì„¬"
-
-#. 196
-msgid "Cyprus"
-msgstr "키프로스"
-
-#. 203
-msgid "Czech Republic"
-msgstr "체코공화국"
-
-#. 276
-msgid "Germany"
-msgstr "ë…ì¼"
-
-#. 262
-msgid "Djibouti"
-msgstr "지부티"
-
-#. 208
-msgid "Denmark"
-msgstr "ë´ë§ˆí¬"
-
-#. 212
-msgid "Dominica"
-msgstr "ë„미니카"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "ë„미니카공화국"
-
-#. 012
-msgid "Algeria"
-msgstr "알제리"
-
-#. 218
-msgid "Ecuador"
-msgstr "ì—ì½°ë„르"
-
-#. 233
-msgid "Estonia"
-msgstr "ì—스토니아"
-
-#. 818
-msgid "Egypt"
-msgstr "ì´ì§‘트"
-
-#. 732
-msgid "Western Sahara"
-msgstr "서사하ë¼"
-
-#. 232
-msgid "Eritrea"
-msgstr "ì—리트레아"
-
-#. 724
-msgid "Spain"
-msgstr "스페ì¸"
-
-#. 231
-msgid "Ethiopia"
-msgstr "ì—티오피아"
-
-#. 246
-msgid "Finland"
-msgstr "핀란드"
-
-#. 242
-msgid "Fiji"
-msgstr "피지"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "í¬í´ëžœë“œì œë„ (ë§ë¹„나스)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "미í¬ë¡œë„¤ì‹œì•„ì—°ë°©êµ­"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "파로제ë„"
-
-#. 250
-msgid "France"
-msgstr "프랑스"
-
-#. 266
-msgid "Gabon"
-msgstr "가봉"
-
-#. 826
-msgid "United Kingdom"
-msgstr "ì˜êµ­"
-
-#. 308
-msgid "Grenada"
-msgstr "그레나다"
-
-#. 268
-msgid "Georgia"
-msgstr "조지아"
-
-#. 254
-msgid "French Guiana"
-msgstr "프랑스령기아나"
-
-#. 831
-msgid "Guernsey"
-msgstr "건지섬"
-
-#. 288
-msgid "Ghana"
-msgstr "가나"
-
-#. 292
-msgid "Gibraltar"
-msgstr "지브롤터"
-
-#. 304
-msgid "Greenland"
-msgstr "그린란드"
-
-#. 270
-msgid "Gambia"
-msgstr "ê°ë¹„ì•„"
-
-#. 324
-msgid "Guinea"
-msgstr "기니"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "과달루페섬"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "ì ë„기니"
-
-#. 300
-msgid "Greece"
-msgstr "그리스"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "남조지아섬・남샌드위치제ë„"
-
-#. 320
-msgid "Guatemala"
-msgstr "과테ë§ë¼"
-
-#. 316
-msgid "Guam"
-msgstr "괌"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "기니비소"
-
-#. 328
-msgid "Guyana"
-msgstr "ê°€ì´ì•„나"
-
-#. 344
-msgid "Hong Kong"
-msgstr "í™ì½©"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "허드맥ë„날드제ë„"
-
-#. 340
-msgid "Honduras"
-msgstr "온ë‘ë¼ìŠ¤"
-
-#. 191
-msgid "Croatia"
-msgstr "í¬ë¡œì•„í‹°ì•„"
-
-#. 332
-msgid "Haiti"
-msgstr "ì•„ì´í‹°"
-
-#. 348
-msgid "Hungary"
-msgstr "í—가리"
-
-#. 360
-msgid "Indonesia"
-msgstr "ì¸ë„네시아"
-
-#. 372
-msgid "Ireland"
-msgstr "ì•„ì¼ëžœë“œ"
-
-#. 376
-msgid "Israel"
-msgstr "ì´ìŠ¤ë¼ì—˜"
-
-#. 833
-msgid "Isle of Man"
-msgstr "맨섬"
-
-#. 356
-msgid "India"
-msgstr "ì¸ë„"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "ì˜êµ­ë ¹ì¸ë„양지역"
-
-#. 368
-msgid "Iraq"
-msgstr "ì´ë¼í¬"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "ì´ëž€ê³µí™”êµ­"
-
-#. 352
-msgid "Iceland"
-msgstr "ì•„ì´ìŠ¬ëž€ë“œ"
-
-#. 380
-msgid "Italy"
-msgstr "ì´íƒˆë¦¬ì•„"
-
-#. 832
-msgid "Jersey"
-msgstr "저지섬"
-
-#. 388
-msgid "Jamaica"
-msgstr "ìžë©”ì´ì¹´"
-
-#. 400
-msgid "Jordan"
-msgstr "요르단"
-
-#. 392
-msgid "Japan"
-msgstr "ì¼ë³¸"
-
-#. 404
-msgid "Kenya"
-msgstr "ì¼€ëƒ"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "키르기스탄"
-
-#. 116
-msgid "Cambodia"
-msgstr "캄보디아"
-
-#. 296
-msgid "Kiribati"
-msgstr "키리바시"
-
-#. 174
-msgid "Comoros"
-msgstr "코모로"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "조선민주주ì˜ì¸ë¯¼ê³µí™”êµ­"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "대한민국"
-
-#. 414
-msgid "Kuwait"
-msgstr "쿠웨ì´íŠ¸"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "ì¹´ì´ë§Œì œë„"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "ì¹´ìží스탄"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "ë¼ì˜¤ìŠ¤ì¸ë¯¼ë¯¼ì£¼ê³µí™”êµ­"
-
-#. 422
-msgid "Lebanon"
-msgstr "레바논"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "세ì¸íŠ¸ë£¨ì‹œì•„"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "리히í…슈타ì¸"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "스리랑카"
-
-#. 430
-msgid "Liberia"
-msgstr "ë¼ì´ë² ë¦¬ì•„"
-
-#. 426
-msgid "Lesotho"
-msgstr "레소토"
-
-#. 440
-msgid "Lithuania"
-msgstr "리투아니아"
-
-#. 442
-msgid "Luxembourg"
-msgstr "룩셈부르í¬"
-
-#. 428
-msgid "Latvia"
-msgstr "ë¼íŠ¸ë¹„ì•„"
-
-#. 434
-msgid "Libya"
-msgstr "리비아"
-
-#. 504
-msgid "Morocco"
-msgstr "모로코"
-
-#. 492
-msgid "Monaco"
-msgstr "모나코"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "몰ë„바공화국"
-
-#. 499
-msgid "Montenegro"
-msgstr "몬테네그로"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr "마다가스카르"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "마셜제ë„"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "마케ë„니아"
-
-#. 466
-msgid "Mali"
-msgstr "ë§ë¦¬"
-
-#. 104
-msgid "Myanmar"
-msgstr "미얀마"
-
-#. 496
-msgid "Mongolia"
-msgstr "몽골"
-
-#. 446
-msgid "Macao"
-msgstr "마카오"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "ë¶ë§ˆë¦¬ì•„나제ë„"
-
-#. 474
-msgid "Martinique"
-msgstr "마르티니í¬"
-
-#. 478
-msgid "Mauritania"
-msgstr "모리타니아"
-
-#. 500
-msgid "Montserrat"
-msgstr "몬세ë¼íŠ¸"
-
-#. 470
-msgid "Malta"
-msgstr "ë§íƒ€"
-
-#. 480
-msgid "Mauritius"
-msgstr "모리셔스"
-
-#. 462
-msgid "Maldives"
-msgstr "몰디브"
-
-#. 454
-msgid "Malawi"
-msgstr "ë§ë¼ìœ„"
-
-#. 484
-msgid "Mexico"
-msgstr "멕시코"
-
-#. 458
-msgid "Malaysia"
-msgstr "ë§ë ˆì´ì§€ì•„"
-
-#. 508
-msgid "Mozambique"
-msgstr "모잠비í¬"
-
-#. 516
-msgid "Namibia"
-msgstr "나미비다"
-
-#. 540
-msgid "New Caledonia"
-msgstr "뉴칼레ë„니아"
-
-#. 562
-msgid "Niger"
-msgstr "니제르"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "ë…¸í¬í¬ì„¬"
-
-#. 566
-msgid "Nigeria"
-msgstr "나ì´ì§€ë¦¬ì•„"
-
-#. 558
-msgid "Nicaragua"
-msgstr "니카ë¼ê³¼"
-
-#. 528
-msgid "Netherlands"
-msgstr "네ëœëž€ë“œ"
-
-#. 578
-msgid "Norway"
-msgstr "노르웨ì´"
-
-#. 524
-msgid "Nepal"
-msgstr "네팔"
-
-#. 520
-msgid "Nauru"
-msgstr "나우루"
-
-#. 570
-msgid "Niue"
-msgstr "니우ì—"
-
-#. 554
-msgid "New Zealand"
-msgstr "뉴질랜드"
-
-#. 512
-msgid "Oman"
-msgstr "오만"
-
-#. 591
-msgid "Panama"
-msgstr "파나마"
-
-#. 604
-msgid "Peru"
-msgstr "페루"
-
-#. 258
-msgid "French Polynesia"
-msgstr "프랑스령í´ë¦¬ë„¤ì‹œì•„"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "파푸아뉴기니"
-
-#. 608
-msgid "Philippines"
-msgstr "필리핀"
-
-#. 586
-msgid "Pakistan"
-msgstr "파키스탄"
-
-#. 616
-msgid "Poland"
-msgstr "í´ëž€ë“œ"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "ìƒí”¼ì—르미í´ë¡±"
-
-#. 612
-msgid "Pitcairn"
-msgstr "í•ì¼€ì–¸ì œë„"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "푸ì—르토리코"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "팔레스타ì¸ì˜í† "
-
-#. 620
-msgid "Portugal"
-msgstr "í¬ë¥´íˆ¬ê°ˆ"
-
-#. 585
-msgid "Palau"
-msgstr "팔ë¼ìš°"
-
-#. 600
-msgid "Paraguay"
-msgstr "파ë¼ê³¼ì´"
-
-#. 634
-msgid "Qatar"
-msgstr "카타르"
-
-#. 638
-msgid "Reunion"
-msgstr "레위니옹"
-
-#. 642
-msgid "Romania"
-msgstr "루마니아"
-
-#. 688
-msgid "Serbia"
-msgstr "세르비아"
-
-#. 643
-msgid "Russian Federation"
-msgstr "러시아연방"
-
-#. 646
-msgid "Rwanda"
-msgstr "르완다"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "사우디아ë¼ë¹„ì•„"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "솔로몬제ë„"
-
-#. 690
-msgid "Seychelles"
-msgstr "세ì´ì…¸"
-
-#. 736
-msgid "Sudan"
-msgstr "수단"
-
-#. 752
-msgid "Sweden"
-msgstr "스웨ë´"
-
-#. 702
-msgid "Singapore"
-msgstr "싱가í¬ë¥´"
-
-#. 654
-msgid "Saint Helena"
-msgstr "세ì¸íŠ¸í—¬ë ˆë‚˜"
-
-#. 705
-msgid "Slovenia"
-msgstr "슬로베니아"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "스발바르얀마옌"
-
-#. 703
-msgid "Slovakia"
-msgstr "슬로바키아"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "ì‹œì—ë¼ë¦¬ì˜¨"
-
-#. 674
-msgid "San Marino"
-msgstr "산마리노"
-
-#. 686
-msgid "Senegal"
-msgstr "세네갈"
-
-#. 706
-msgid "Somalia"
-msgstr "소ë§ë¦¬ì•„"
-
-#. 740
-msgid "Suriname"
-msgstr "수리남"
-
-#. 728
-msgid "South Sudan"
-msgstr "남수단"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "ìƒíˆ¬ë©”・프린시페"
-
-#. 222
-msgid "El Salvador"
-msgstr "엘살바ë„르"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "신트마르턴 (네ëœëž€ë“œ)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "시리아"
-
-#. 748
-msgid "Swaziland"
-msgstr "스와질란드"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "터커스케ì´ì»¤ìŠ¤ì œë„"
-
-#. 148
-msgid "Chad"
-msgstr "차드"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "프랑스령남부와남극지역"
-
-#. 768
-msgid "Togo"
-msgstr "토고"
-
-#. 764
-msgid "Thailand"
-msgstr "태국"
-
-#. 762
-msgid "Tajikistan"
-msgstr "타지키스탄"
-
-#. 772
-msgid "Tokelau"
-msgstr "토켈ë¼ìš°"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "ë™í‹°ëª¨ë¥´"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "투르í¬ë©”니스탄"
-
-#. 788
-msgid "Tunisia"
-msgstr "튀니지"
-
-#. 776
-msgid "Tonga"
-msgstr "통가"
-
-#. 792
-msgid "Turkey"
-msgstr "터키"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "트리니다드・토바고"
-
-#. 798
-msgid "Tuvalu"
-msgstr "투발루"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "대만"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "탄ìžë‹ˆì•„연합공화국"
-
-#. 804
-msgid "Ukraine"
-msgstr "ìš°í¬ë¼ì´ë‚˜"
-
-#. 800
-msgid "Uganda"
-msgstr "우간다"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "미국령군소제ë„"
-
-#. 840
-msgid "United States"
-msgstr "미국"
-
-#. 858
-msgid "Uruguay"
-msgstr "우루과ì´"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "우즈베키스탄"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr "베네수엘ë¼"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "ì˜êµ­ë ¹ë²„진제ë„"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "미국령버진제ë„"
-
-#. 704
-msgid "Viet Nam"
-msgstr "베트남"
-
-#. 548
-msgid "Vanuatu"
-msgstr "바누아투"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr "사모아"
-
-#. 887
-msgid "Yemen"
-msgstr "예멘"
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr "남아프리카"
-
-#. 894
-msgid "Zambia"
-msgstr "잠비아"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "ì§ë°”브웨"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr "나ë¼"
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr "마ì„"
-
-msgid "District"
-msgstr "지역"
-
-msgid "Street"
-msgstr "거리"
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr "목ì ì§€ìž…ë ¥"
-
-msgid "Zip Code"
-msgstr "우편번호"
-
-msgid "City"
-msgstr "ë„ì‹œ"
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr "지ë„"
-
-msgid "Bookmark"
-msgstr "ë¶ë§ˆí¬"
-
-msgid "Destination"
-msgstr "목ì ì§€"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr "경로"
-
-msgid "_Former Destinations"
-msgstr "ì´ì „목ì ì§€"
-
-msgid "_Bookmarks"
-msgstr "ë¶ë§ˆí¬"
-
-msgid "_Map"
-msgstr "지ë„"
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr "줌아웃"
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr "줌ì¸"
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr "재계산"
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "안내중지"
-
-msgid "Test"
-msgstr "테스트"
-
-msgid "_Quit"
-msgstr "종료"
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "전체화면"
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "ë¶"
-
-msgid "NE"
-msgstr "ë³µë™"
-
-msgid "E"
-msgstr "ë™"
-
-msgid "SE"
-msgstr "남ë™"
-
-msgid "S"
-msgstr "남"
-
-msgid "SW"
-msgstr "남서"
-
-msgid "W"
-msgstr "서"
-
-msgid "NW"
-msgstr "ë¶ì„œ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "경유지 %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "ë¶ë§ˆí¬"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr "ì´ì „목ì ì§€"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr "경로"
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr "전체화면"
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/ku.po.in b/po/ku.po.in
deleted file mode 100644
index 22f79bbea..000000000
--- a/po/ku.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# Kurdish translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# kosar https://launchpad.net/~kosar-belana
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2013-06-22 22:57+0000\n"
-"Last-Translator: kosar <kosar.belana@gmail.com>\n"
-"Language-Team: Kurdish <ku@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: ku\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr "یەكەم"
-
-msgid "second"
-msgstr "دووەم"
-
-msgid "third"
-msgstr "سێیەم"
-
-msgid "fourth"
-msgstr "چوارەم"
-
-msgid "fifth"
-msgstr "پێنجەم"
-
-msgid "sixth"
-msgstr "Ø´Û•Ø´Û•Ù…"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr ""
-
-msgid "second exit"
-msgstr ""
-
-msgid "third exit"
-msgstr ""
-
-msgid "fourth exit"
-msgstr ""
-
-msgid "fifth exit"
-msgstr ""
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d كیلۆمەتر"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr "ئێستا"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "ڕاست"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "Ú†Û•Ù¾"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/lb.po.in b/po/lb.po.in
deleted file mode 100644
index a8e5450db..000000000
--- a/po/lb.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# Luxembourgish translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# MaXaM https://launchpad.net/~maxschaal
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:59+0000\n"
-"Last-Translator: MaXaM <maxschaal@yahoo.de>\n"
-"Language-Team: Luxembourgish <lb@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: lb\n"
-
-msgid "Running from source directory\n"
-msgstr "Aus dem Quellverzeechnis starten\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "setz '%s' op '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nullt"
-
-msgid "first"
-msgstr "éischt"
-
-msgid "second"
-msgstr "Zweet"
-
-msgid "third"
-msgstr "drett"
-
-msgid "fourth"
-msgstr "véiert"
-
-msgid "fifth"
-msgstr "fëneft"
-
-msgid "sixth"
-msgstr "sechst"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nullt Ausfahrt"
-
-msgid "first exit"
-msgstr "Éischt Ausfahrt"
-
-msgid "second exit"
-msgstr "Zweet Ausfahrt"
-
-msgid "third exit"
-msgstr "Drett Ausfahrt"
-
-msgid "fourth exit"
-msgstr "veiert Ausfahrt"
-
-msgid "fifth exit"
-msgstr "feneft Ausfahrt"
-
-msgid "sixth exit"
-msgstr "sechst Ausfahrt"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d Meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "An %d Meter"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d,%d Kilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "An %d,%d Kilometer"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "Een Kilometer"
-msgstr[1] "%d Kilometer"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "An engem Kilometer"
-msgstr[1] "An %d Kilometer"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$sop d' %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$sop d' Stross %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$sop den %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$sop d' %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$sop d' %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "op d' Opfahrt"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sop d' Stross %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sop den %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sop d' %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sop d' %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sop d' %s"
-
-msgid "When possible, please turn around"
-msgstr "Wann meiglech, wannechglift dreinen"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr ""
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "riets"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "lenks"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "liicht "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "schaarf "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Dreinen %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Dreinen %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Verdeeler"
-
-msgid "Exit"
-msgstr "Ausfaart"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/lt.po.in b/po/lt.po.in
deleted file mode 100644
index b1c4a4e68..000000000
--- a/po/lt.po.in
+++ /dev/null
@@ -1,2777 +0,0 @@
-# Lithuanian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Aidas Kasparas https://launchpad.net/~a-kasparas
-# KaZeR https://launchpad.net/~kazer
-# Mantas KriauÄiÅ«nas https://launchpad.net/~mantas
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Rytis Ūsalis https://launchpad.net/~rytis-usalis
-# laimonas https://launchpad.net/~laimonas-mockus
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-06-17 20:36+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Lithuanian <lt@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"(n%100<10 || n%100>=20) ? 1 : 2;\n"
-"Language: lt\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Paleidžiama pradiniame aplanke\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "nustatau iš '%s' į '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nulinis"
-
-msgid "first"
-msgstr "pirmas"
-
-msgid "second"
-msgstr "antras"
-
-msgid "third"
-msgstr "treÄias"
-
-msgid "fourth"
-msgstr "ketvirtas"
-
-msgid "fifth"
-msgstr "penktas"
-
-msgid "sixth"
-msgstr "šeštas"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nulinis išvažiavimas"
-
-msgid "first exit"
-msgstr "pirmas išvažiavimas"
-
-msgid "second exit"
-msgstr "antras išvažiavimas"
-
-msgid "third exit"
-msgstr "treÄias iÅ¡važiavimas"
-
-msgid "fourth exit"
-msgstr "ketvirtas išvažiavimas"
-
-msgid "fifth exit"
-msgstr "penktas išvažiavimas"
-
-msgid "sixth exit"
-msgstr "šeštas išvažiavimas"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d pÄ—dos"
-
-#, c-format
-msgid "in %d feet"
-msgstr "už %d pėdų"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d mylios"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "už %d.%d mylių"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "%d mylia"
-msgstr[1] "%d mylios"
-msgstr[2] "%d mylių"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "už %d mylios"
-msgstr[1] "už %d mylių"
-msgstr[2] "už %d mylių"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metrai"
-
-#, c-format
-msgid "in %d meters"
-msgstr "už %d metrų"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d km."
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "už %d.%d kilometrų"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d kilometras"
-msgstr[1] "%d kilometrai"
-msgstr[2] "%d kilometrai"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "už %d kilometro"
-msgstr[1] "už %d kilometrų"
-msgstr[2] "už %d kilometrų"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$sį %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$sį %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$sį %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$sį %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$sį %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "į rampą"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sį %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sį %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sį %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sį %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sį %s"
-
-msgid "When possible, please turn around"
-msgstr "Kai įmanoma, apsisukite"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "link %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "LaikykitÄ—s kelio sekanÄius %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Netrukus įsukite į žiedą"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Įsukite į žiedą %s"
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Išsukite iš žiedo %1$s išvažiavime %2$s"
-
-msgid "soon"
-msgstr "netrukus"
-
-msgid "now"
-msgstr "dabar"
-
-msgid "then"
-msgstr "tada"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "tada užvažiuokite už%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Užvažiuokite už%1$s%2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "tada užvažiuokite už%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Užvažiuokite už%1$s%2$s"
-
-msgid "on your left"
-msgstr "kairÄ—je"
-
-msgid "on your right"
-msgstr "dešinėje"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Išvažiuokite per išvažiavimą %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Išvažiuokite per išvažiavimą %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "sankryžoje"
-
-msgid "at exit"
-msgstr "išvažiavime"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "tada laikykitės dešinės%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "Laikykitės dešinės %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "tada laikykitÄ—s kairÄ—s%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "LaikykitÄ—s kairÄ—s %1$s%2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "dešinėn"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "kairÄ—n"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "lengvai "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "stipriai "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "tada važiuokite %1$s keliu į %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Važiuokite %1$s keliu į %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "už %i kelių"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Pasukite %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "tada apsisukite"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Apsisukite %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "tada apsisukite"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Apsisukite %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "laikykitÄ—s kelio"
-
-msgid "then you have reached your destination."
-msgstr "tada jūs pasiekėte kelionės tikslą."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "JÅ«s pasiekÄ—te tikslÄ… %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Sankryža"
-
-msgid "Exit"
-msgstr "Išvažiavimas"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Pozicija"
-
-msgid "Command"
-msgstr "Komanda"
-
-msgid "Length"
-msgstr "Ilgis"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Laikas"
-
-msgid "Destination Length"
-msgstr "Atvykimo ilgis"
-
-msgid "Destination Time"
-msgstr "Atvykimo laikas"
-
-msgid "Roadbook"
-msgstr "KelionÄ—s knyga"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr "Lankyti prieš..."
-
-msgid "Set as position"
-msgstr "Nustatyti pozicijÄ…"
-
-msgid "Set as destination"
-msgstr "Nustatyti tikslÄ…"
-
-msgid "Add as bookmark"
-msgstr "Pridėti žymę"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Taškas 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Ekrano koordinatÄ—s : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andora"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Jungtiniai Arabų Emyratai"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistanas"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigva ir Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Angilija"
-
-#. 008
-msgid "Albania"
-msgstr "Albanija"
-
-#. 051
-msgid "Armenia"
-msgstr "ArmÄ—nija"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Olandijos Antilai"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktida"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikos Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austrija"
-
-#. 036
-msgid "Australia"
-msgstr "Australija"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Alandų salos"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaidžanas"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnija ir Hercegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbadosas"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladešas"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgija"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Fasas"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgarija"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahreinas"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundis"
-
-#. 204
-msgid "Benin"
-msgstr "Beninas"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Å vento Baltramiejaus sala"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "BrunÄ—jaus Darusalamas"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivija"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brazilija"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamos"
-
-#. 064
-msgid "Bhutan"
-msgstr "Butanas"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "BuvÄ— sala"
-
-#. 072
-msgid "Botswana"
-msgstr "Botsvana"
-
-#. 112
-msgid "Belarus"
-msgstr "Gudija"
-
-#. 084
-msgid "Belize"
-msgstr "Belizas"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosų (Keelingo) salos"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo DemokratinÄ— Respublika"
-
-#. 140
-msgid "Central African Republic"
-msgstr "CentrinÄ—s Afrikos Respublika"
-
-#. 178
-msgid "Congo"
-msgstr "Kongas"
-
-#. 756
-msgid "Switzerland"
-msgstr "Å veicarija"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Dramblio Kaulo Krantas"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Kuko salos"
-
-#. 152
-msgid "Chile"
-msgstr "ÄŒilÄ—"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerūnas"
-
-#. 156
-msgid "China"
-msgstr "Kinija"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbija"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kosta Rika"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Žaliasis Kyšulys"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Kalėdų sala"
-
-#. 196
-msgid "Cyprus"
-msgstr "Kipras"
-
-#. 203
-msgid "Czech Republic"
-msgstr "ÄŒekija"
-
-#. 276
-msgid "Germany"
-msgstr "Vokietija"
-
-#. 262
-msgid "Djibouti"
-msgstr "Džibutis"
-
-#. 208
-msgid "Denmark"
-msgstr "Danija"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikos Respublika"
-
-#. 012
-msgid "Algeria"
-msgstr "Alžyras"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvadoras"
-
-#. 233
-msgid "Estonia"
-msgstr "Estija"
-
-#. 818
-msgid "Egypt"
-msgstr "Egiptas"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Vakarų Sachara"
-
-#. 232
-msgid "Eritrea"
-msgstr "EritrÄ—ja"
-
-#. 724
-msgid "Spain"
-msgstr "Ispanija"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopija"
-
-#. 246
-msgid "Finland"
-msgstr "Suomija"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidžis"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklando (Malvinų) salos"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronezijos FederacinÄ—s Valstijos"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Farerų salos"
-
-#. 250
-msgid "France"
-msgstr "Prancūzija"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabonas"
-
-#. 826
-msgid "United Kingdom"
-msgstr "JungtinÄ— KaralystÄ—"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Gruzija"
-
-#. 254
-msgid "French Guiana"
-msgstr "Prancūzijos Gviana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsis"
-
-#. 288
-msgid "Ghana"
-msgstr "Gana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltaras"
-
-#. 304
-msgid "Greenland"
-msgstr "Grenlandija"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambija"
-
-#. 324
-msgid "Guinea"
-msgstr "GvinÄ—ja"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Gvadelupa"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Pusiaujo GvinÄ—ja"
-
-#. 300
-msgid "Greece"
-msgstr "Graikija"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Pietų Georgijos ir Pietų Sandwicho salos"
-
-#. 320
-msgid "Guatemala"
-msgstr "Gvatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guamas"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Bisau-GvinÄ—ja"
-
-#. 328
-msgid "Guyana"
-msgstr "Gajana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Honk Kongas"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heardo ir McDonaldo salos"
-
-#. 340
-msgid "Honduras"
-msgstr "Hondūras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatija"
-
-#. 332
-msgid "Haiti"
-msgstr "Haitis"
-
-#. 348
-msgid "Hungary"
-msgstr "Vengrija"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonezija"
-
-#. 372
-msgid "Ireland"
-msgstr "Airija"
-
-#. 376
-msgid "Israel"
-msgstr "Izraelis"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Meno sala"
-
-#. 356
-msgid "India"
-msgstr "Indija"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Indijos vandenyno britų sritis"
-
-#. 368
-msgid "Iraq"
-msgstr "Irakas"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iranas"
-
-#. 352
-msgid "Iceland"
-msgstr "Islandija"
-
-#. 380
-msgid "Italy"
-msgstr "Italija"
-
-#. 832
-msgid "Jersey"
-msgstr "Džersis"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordanas"
-
-#. 392
-msgid "Japan"
-msgstr "Japonija"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenija"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgizija"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribatis"
-
-#. 174
-msgid "Comoros"
-msgstr "Komorai"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Sent Kitsas ir Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "KorÄ—jos DemokratinÄ— Respublika"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "KorÄ—jos Respublika"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuveitas"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kaimanų salos"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazachija"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laosas"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanas"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Å ventoji Liucija"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Lichtenšteinas"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Å ri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberija"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotas"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lietuva"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Liuksemburgas"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvija"
-
-#. 434
-msgid "Libya"
-msgstr "Libija"
-
-#. 504
-msgid "Morocco"
-msgstr "Marokas"
-
-#. 492
-msgid "Monaco"
-msgstr "Monakas"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova"
-
-#. 499
-msgid "Montenegro"
-msgstr "Juodkalnija"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "San Martenas (Prancūzijos dalis)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskaras"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Maršalo salos"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedonija"
-
-#. 466
-msgid "Mali"
-msgstr "Malis"
-
-#. 104
-msgid "Myanmar"
-msgstr "Mianmaras"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolija"
-
-#. 446
-msgid "Macao"
-msgstr "Makao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Šiaurės Marianų salos"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinika"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritanija"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserratas"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauricijus"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldyvai"
-
-#. 454
-msgid "Malawi"
-msgstr "Malavis"
-
-#. 484
-msgid "Mexico"
-msgstr "Meksika"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaizija"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambikas"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibija"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Naujoji Kaledonija"
-
-#. 562
-msgid "Niger"
-msgstr "Nigeris"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolko sala"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigerija"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragva"
-
-#. 528
-msgid "Netherlands"
-msgstr "Nyderlandai"
-
-#. 578
-msgid "Norway"
-msgstr "Norvegija"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepalas"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "NiujÄ—"
-
-#. 554
-msgid "New Zealand"
-msgstr "Naujoji Zelandija"
-
-#. 512
-msgid "Oman"
-msgstr "Omanas"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Prancūzijos Polinezija"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Naujoji GvinÄ—ja"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipinai"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistanas"
-
-#. 616
-msgid "Poland"
-msgstr "Lenkija"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Sen Pjeras ir Mikelonas"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitkernas"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Riko"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Okupuota Palestinos teritorija"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugalija"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paragvajus"
-
-#. 634
-msgid "Qatar"
-msgstr "Kataras"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunionas"
-
-#. 642
-msgid "Romania"
-msgstr "Rumunija"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbija"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Rusijos Federacija"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudo Arabija"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Saliamono salos"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seišeliai"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudanas"
-
-#. 752
-msgid "Sweden"
-msgstr "Å vedija"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapūras"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Å ventoji Elena"
-
-#. 705
-msgid "Slovenia"
-msgstr "SlovÄ—nija"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbardo ir Jan Majen salos"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakija"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Siera LeonÄ—"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marinas"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegalas"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalis"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinamas"
-
-#. 728
-msgid "South Sudan"
-msgstr "Pietų Sudanas"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "San TomÄ— ir PrinsipÄ—"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salvadoras"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Sirijos Arabų Respublika"
-
-#. 748
-msgid "Swaziland"
-msgstr "Svazilendas"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turkso ir Caicoso salos"
-
-#. 148
-msgid "Chad"
-msgstr "ÄŒadas"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Prancūzijos Pietų sritys"
-
-#. 768
-msgid "Togo"
-msgstr "Togas"
-
-#. 764
-msgid "Thailand"
-msgstr "Tailandas"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadžikija"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Rytų Timoras"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "TurkmÄ—nija"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisas"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkija"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidadas ir Tobagas"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taivanas, Kinijos provincija"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzanija"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "JAV mažosios aplinkinės salos"
-
-#. 840
-msgid "United States"
-msgstr "JAV"
-
-#. 858
-msgid "Uruguay"
-msgstr "Urugvajus"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekija"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Å ventasis Sostas (Vatikano Miesto ValstybÄ—)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Sent Vinsentas ir Grenadinai"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venesuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Mergelių salos, Jungtinė Karalystė"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Mergelių salos, JAV"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnamas"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallisas ir Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemenas"
-
-#. 175
-msgid "Mayotte"
-msgstr "Majotas"
-
-#. 710
-msgid "South Africa"
-msgstr "Pietų Afrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambija"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "ZimbabvÄ—"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Nežinomas, pridėti is_in žodžius į šiuos miestus"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Konfiguracijos failai navit.xml, navit.xml.local nerasti\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Klaida konfiguracijos faile '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Naudojamas konfigÅ«racijos failas „%sâ€\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Klaida: Konfigūracija nerasta faile '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Vidinis inicializavimas nepavyko, baigiame darbą. Žiūrėkite prieš tai "
-"pateiktas klaidas.\n"
-
-msgid "unknown street"
-msgstr "nežinoma gatvė"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "BevardÄ— transporto priemonÄ—"
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Vieta žemėlapyje"
-
-msgid "Car"
-msgstr "Automobilis"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Å alis:"
-
-msgid "Postal"
-msgstr "Pašto"
-
-msgid "Town"
-msgstr "Miestas"
-
-msgid "District"
-msgstr "Rajonas"
-
-msgid "Street"
-msgstr "GatvÄ—:"
-
-msgid "Number"
-msgstr "Numeris"
-
-msgid "Enter Destination"
-msgstr "Įveskite kelionės tikslą"
-
-msgid "Zip Code"
-msgstr "Pašto kodas"
-
-msgid "City"
-msgstr "Miestas"
-
-msgid "District/Township"
-msgstr "Rajonas/miestas"
-
-msgid "Map"
-msgstr "Žemėlapis"
-
-msgid "Bookmark"
-msgstr "Pažymėti"
-
-msgid "Destination"
-msgstr "KelionÄ—s tikslas"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Rodyti"
-
-msgid "_Route"
-msgstr "Parinkti keliÄ…"
-
-msgid "_Former Destinations"
-msgstr "Ankstesni tikslai"
-
-msgid "_Bookmarks"
-msgstr "Adresynas"
-
-msgid "_Map"
-msgstr "Žemėlapis"
-
-msgid "_Layout"
-msgstr "IÅ¡dÄ—stymas"
-
-msgid "_Projection"
-msgstr "Projekcija"
-
-msgid "_Vehicle"
-msgstr "Transporto priemonÄ—"
-
-msgid "Zoom_Out"
-msgstr "Sumažinti"
-
-msgid "Decrease zoom level"
-msgstr "Sumažinti mastelį"
-
-msgid "Zoom_In"
-msgstr "Padidinti"
-
-msgid "Increase zoom level"
-msgstr "Padidinti mastelį"
-
-msgid "_Recalculate"
-msgstr "PerskaiÄiuoti"
-
-msgid "Redraw map"
-msgstr "Perpiešti žemėlapį"
-
-msgid "_Info"
-msgstr "Informacija"
-
-msgid "Set _destination"
-msgstr "Nustatyti _tikslÄ…"
-
-msgid "Opens address search dialog"
-msgstr "Atidaro adreso paieškos dialogą"
-
-msgid "_POI search"
-msgstr "Lankytinų vietų paieška"
-
-msgid "Opens POI search dialog"
-msgstr "Atidaro lankytinų vietų paieškos dialogą"
-
-msgid "_Stop Navigation"
-msgstr "Stabdyti navigacijÄ…"
-
-msgid "Test"
-msgstr "Bandymas"
-
-msgid "_Quit"
-msgstr "_IÅ¡eiti"
-
-msgid "Quit the application"
-msgstr "Uždaryti programą"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Sekti keliÄ…"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Perjungia žemėlapio orientaciją į šiaurę arba į judėjimo kryptį."
-
-msgid "_Roadbook"
-msgstr "KelionÄ—s knyga"
-
-msgid "Show/hide route description"
-msgstr "Rodyti/slėpti maršruto aprašymą"
-
-msgid "_Autozoom"
-msgstr "Automatinis didinimas"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Įjungia/išjungia automatinį mastelio keitimą"
-
-msgid "_Fullscreen"
-msgstr "Visas ekranas"
-
-msgid "Data"
-msgstr "Duomenys"
-
-msgid "Pharmacy"
-msgstr "VaistinÄ—"
-
-msgid "Restaurant"
-msgstr "Restoranas"
-
-msgid "Restaurant. Fast food"
-msgstr "Valgykla. Greitas maistas"
-
-msgid "Hotel"
-msgstr "Viešbutis"
-
-msgid "Car parking"
-msgstr "Stovėjimo aikštelė"
-
-msgid "Fuel station"
-msgstr "DegalinÄ—"
-
-msgid "Bank"
-msgstr "Bankas"
-
-msgid "Hospital"
-msgstr "LigoninÄ—"
-
-msgid "Cinema"
-msgstr "Kino teatras"
-
-msgid "Train station"
-msgstr "Geležinkelio stotis"
-
-msgid "School"
-msgstr "Mokykla"
-
-msgid "Police"
-msgstr "Policija"
-
-msgid "Justice"
-msgstr "Teismas"
-
-msgid "Taxi"
-msgstr "Taksi"
-
-msgid "Shopping"
-msgstr "ParduotuvÄ—"
-
-msgid "Distance from screen center (km)"
-msgstr "Atstumas nuo ekrano vidaus (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "Lankytina vieta %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Nustatyti tikslą į %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "Nustatyti žemėlapį į %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr "Lankytinų vietų paieška"
-
-msgid "Select a category"
-msgstr "Pasirinkite kategorijÄ…"
-
-msgid "Select a distance to look for (km)"
-msgstr "Išrinkite atstumą, kuriame ieškoti (km)"
-
-msgid "Select a POI"
-msgstr "IÅ¡rinkite lankytinÄ… vietÄ…"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Kategorija"
-
-msgid "Direction"
-msgstr "Kryptis"
-
-msgid "Distance(m)"
-msgstr "Atstumas (m)"
-
-msgid "Name"
-msgstr "Vardas"
-
-msgid "Visit Before"
-msgstr "Aplankyi prieš"
-
-msgid "N"
-msgstr "Å "
-
-msgid "NE"
-msgstr "Å R"
-
-msgid "E"
-msgstr "R"
-
-msgid "SE"
-msgstr "PR"
-
-msgid "S"
-msgstr "P"
-
-msgid "SW"
-msgstr "PV"
-
-msgid "W"
-msgstr "V"
-
-msgid "NW"
-msgstr "Å V"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ne"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Liko kelio %4.0fkm %02d:%02d atvykimo laikas"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Liko kelio 0000km 0+00:00 atvykimo laikas"
-
-msgid "Help"
-msgstr "Žinynas"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Peržiūrėti naršyklėje"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "GatvÄ—s"
-
-msgid "House numbers"
-msgstr "Namų numeriai"
-
-msgid "View Attributes"
-msgstr "Rodyti savybes"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Nustatyti poziciją (išjungdamas transporto priemonę)"
-
-msgid "POIs"
-msgstr "Lankytinos vietos"
-
-msgid "View on map"
-msgstr "Rodyti žemėlapyje"
-
-msgid "Remove search results from the map"
-msgstr "Pašalinti paieškos rezultatas nuo žemėlapio"
-
-msgid "Show results on the map"
-msgstr "Rodyti rezultatus žemelapyje"
-
-msgid "Cut Bookmark"
-msgstr "Iškirpti žymą"
-
-msgid "Copy Bookmark"
-msgstr "Kopijuoti žymą"
-
-msgid "Rename Bookmark"
-msgstr "Pervadinti žymą"
-
-msgid "Paste Bookmark"
-msgstr "Įterpti žymą"
-
-msgid "Delete Bookmark"
-msgstr "Pašalinti žymą"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Adresynas"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr "Pašalinti katalogą"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Pridėti žymų aplanką"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Įterpti žymą"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Pasižymėti %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Atsisiųsti %s"
-
-msgid "Map Download"
-msgstr "Žemėlapio parsiuntimas"
-
-msgid "Active"
-msgstr "Aktyvus"
-
-msgid "Download Enabled"
-msgstr "Parsiuntimas leidžiamas"
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Parodyti palydovų būseną"
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr "Rodyti NMEA duomenis"
-
-msgid "car"
-msgstr "automobilis"
-
-msgid "bike"
-msgstr "dviratis"
-
-msgid "pedestrian"
-msgstr "pÄ—stysis"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Dabartinis profilis: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Keisti profilį į: %s"
-
-msgid "Set as active"
-msgstr "Aktyvuoti"
-
-msgid "Show Satellite status"
-msgstr "Parodyti palydovų būseną"
-
-msgid "Show NMEA data"
-msgstr "Parodyti NMEA duomenis"
-
-msgid "Add Bookmark"
-msgstr "Pridėti žymą"
-
-msgid "Rename"
-msgstr "Pervadinti"
-
-msgid "About Navit"
-msgstr "Apie Navit"
-
-#. Authors
-msgid "By"
-msgstr "Sukūrė"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Ir visa Navit komanda"
-
-msgid "members and contributors."
-msgstr "nariai ir pagalbininkai."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr "Įvėskite koordinates"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Platuma Ilguma"
-
-msgid "Enter coordinates, for example:"
-msgstr "Įvėskitė koordinates, pvz.:"
-
-msgid "Vehicle"
-msgstr "Transporto priemonÄ—"
-
-msgid "Rules"
-msgstr "TaisyklÄ—s"
-
-msgid "Lock on road"
-msgstr "Sekti keliÄ…"
-
-msgid "Northing"
-msgstr "Ä® Å¡iaurÄ™"
-
-msgid "Map follows Vehicle"
-msgstr "Sekti transporto priemonÄ™"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Žemėlapiai"
-
-msgid "Layout"
-msgstr "IÅ¡dÄ—stymas"
-
-msgid "Height Profile"
-msgstr "AukÅ¡Äio profilis"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Maršruto aprašymas"
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr "Ankstesni tikslai"
-
-msgid "- No former destinations available -"
-msgstr "- Nėra ankstesnių tikslų -"
-
-msgid "Message"
-msgstr "Žinutė"
-
-msgid "Back"
-msgstr "Grįžti"
-
-msgid "Back to map"
-msgstr "Grįžti į žemėlapį"
-
-msgid "Main Menu"
-msgstr "Pagrindinis meniu"
-
-msgid "House number"
-msgstr "Namo numeris"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr "Grįžti į maršrutą!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "DÄ—mesio! Kamera!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Prašom sumažinti greitį"
-
-msgid "partial match"
-msgstr "dalinis sutapimas"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Paieška"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Miestai"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Žemėlapio duomenys (c) OpenStreetMap pagalbininkai, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "Atsisiųsti žemėlapiai"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"Atleiskite, bet šiuo metu didesni nei 3,8GB žemėlapiai Androide nepalaikomi, "
-"pasirinkite mažesnį žemėlapį."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "MarÅ¡rutas iki Äia"
-
-msgid "Cancel"
-msgstr "Atšaukti"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-"Nauja vieta nustatyta į %s\n"
-"Perstartuokite Navit, kad pakeitimai įsigaliotų."
-
-msgid "Whole Planet"
-msgstr "Visa planeta"
-
-msgid "Africa"
-msgstr "Afrika"
-
-msgid "Canary Islands"
-msgstr "Kanarų salos"
-
-msgid "Asia"
-msgstr "Azija"
-
-msgid "Korea"
-msgstr "KorÄ—ja"
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr "Okeanija"
-
-msgid "Tasmania"
-msgstr "Tasmanija"
-
-msgid "Victoria"
-msgstr "Viktorija"
-
-msgid "New South Wales"
-msgstr "Naujasis Pietų Velsas"
-
-msgid "Europe"
-msgstr "Europa"
-
-msgid "Western Europe"
-msgstr "Vakarų Europa"
-
-msgid "Azores"
-msgstr "Azorai"
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr "BretanÄ—"
-
-msgid "Centre"
-msgstr "Centras"
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr "Bavarija"
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr "Berlynas"
-
-msgid "Brandenburg"
-msgstr "Brandenburgas"
-
-msgid "Bremen"
-msgstr "BrÄ—menas"
-
-msgid "Hamburg"
-msgstr "Hamburgas"
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr "Maljorka"
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr "Skandinavija"
-
-msgid "England"
-msgstr "Anglija"
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr "Kambrija"
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr "Eseksas"
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr "Kentas"
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr "Norfolkas"
-
-msgid "Nottinghamshire"
-msgstr "Notingemšyras"
-
-msgid "Oxfordshire"
-msgstr "Oksfordšyras"
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr "Å kotija"
-
-msgid "Wales"
-msgstr "Velsas"
-
-msgid "Crete"
-msgstr "Kreta"
-
-msgid "North America"
-msgstr "Å iaurÄ—s Amerika"
-
-msgid "Alaska"
-msgstr "Aliaska"
-
-msgid "Hawaii"
-msgstr "Havajai"
-
-msgid "USA"
-msgstr "JAV"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (išskyrus Aliaską ir Havajus)"
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr "MiÄiganas"
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr "Arkanzasas"
-
-msgid "District of Columbia"
-msgstr "Kolumbijos apygarda"
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Luiziana"
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr "MisisipÄ—"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Teksasas"
-
-msgid "Virginia"
-msgstr "Virdžinija"
-
-msgid "West Virginia"
-msgstr "Vakarų Virdžinija"
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "Kalifornija"
-
-msgid "Colorado"
-msgstr "Koloradas"
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "Naujoji Meksika"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregonas"
-
-msgid "Utah"
-msgstr "Juta"
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr "Prancūzų gvinėja"
-
-msgid "downloading"
-msgstr "siunÄiama"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Nepakanka laisvos vietos"
-
-msgid "Error downloading map!"
-msgstr "Klaida parsiunÄiant žemÄ—lapį!"
-
-msgid "Error writing map!"
-msgstr "Klaida įrašant žemėlapį!"
-
-msgid "Map download aborted!"
-msgstr "Žemėlapio parsiuntimas nutrauktas!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Liko laiko"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Transporto priemonÄ—s vieta"
-
-msgid "Main menu"
-msgstr "Pagrindinis meniu"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Rodyti\n"
-"žemėlapį"
-
-msgid "Settings"
-msgstr "Parinktys"
-
-msgid "Tools"
-msgstr "Įrankiai"
-
-msgid "Route"
-msgstr "Parinkti keliÄ…"
-
-msgid "About"
-msgstr "Apie"
-
-msgid "Quit"
-msgstr "IÅ¡eiti"
-
-msgid "Actions"
-msgstr "Veiksmai"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Ankstesni\n"
-"tikslai"
-
-msgid "Coordinates"
-msgstr "KoordinatÄ—s"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Stabdyti\n"
-"navigacijÄ…"
-
-msgid "Display"
-msgstr "Rodyti"
-
-msgid "Fullscreen"
-msgstr "Visas ekranas"
-
-msgid "Window Mode"
-msgstr "Langų režimas"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Aprašas"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr "Palydovų būsena"
-
-msgid "NMEA Data"
-msgstr "NMEA duomenys"
-
-msgid "car_shortest"
-msgstr "Automobilis (trumpiausias maršrutas)"
-
-msgid "car_avoid_tolls"
-msgstr "D"
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "arklys"
-
-msgid "Truck"
-msgstr "Sunkvežimis"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Taip"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Veikia Navit"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Sveikiname paleidus Navit navigacijÄ…"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"DÄ—kui, kad suinstaliavote Navit!\n"
-"\n"
-"Pradėkite pasirinkdami „Parsiųsti žemėlapius“ pagrindiniame meniu. Dėmesio: "
-"Žemėlapių failai gali būti dideli (>50MB) -- rekomenduojame naudoti WiFi "
-"ryšį.\n"
-"\n"
-"Žemėlapių duomenys: (c) OpenStreetMap pagalbininkai\n"
-"\n"
-"SÄ—kmÄ—s naudojant Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "Gerai"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Daugiau informacijos"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Padidinti"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Sumažinti"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Atsisiųsti žemėlapius"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Rodyti/slÄ—pti lankytinas vietas"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Išeiti iš Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "AtsarginÄ— kopija / Atstatymas"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Pašalinti šį žemėlapį?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "SiunÄiama:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Klaida parsiunÄiant žemÄ—lapį."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Žemėlapio parsiuntimas nutrauktas"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Adresų paieška"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Įveskite tikslą"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Dalinis adreso sutapimas"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Ieškoma..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Adresas nerastas"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Gaunami paieškos rezultatai"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Įkeliami paieškos rezultatai"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Nieko nerasta"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Neįrašėte jokio teksto"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Pasirinkite veiksmÄ…"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Įdėkite SD kortelę (laikmeną)"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Daroma atsarginÄ— kopija..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Atkuriama..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Nepavyko padaryti atsarginÄ—s kopijos"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Nerasta atsarginių kopijų"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Nepavyko atstatyti"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "AtsarginÄ— kopija padaryta"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Atstatymas pavyko\n"
-"Paleiskite Navit iš naujo"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "AtsarginÄ— kopija neaptikta"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Atstatymas nepavyko"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Pasirinkite atsarginÄ™ kopijÄ…"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Atstatyti atasrginÄ™ kopijÄ…"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "tada išsukite iš žiedo %1$s išvažiavime %2$s"
diff --git a/po/lv.po.in b/po/lv.po.in
deleted file mode 100644
index 8f729a8ca..000000000
--- a/po/lv.po.in
+++ /dev/null
@@ -1,2775 +0,0 @@
-# Latvian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Janis https://launchpad.net/~janis-zl
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Stendec https://launchpad.net/~stendec
-# sieks https://launchpad.net/~sieks
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:59+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Latvian <lv@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
-"Language: lv\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Darbojas no saknes mapes\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "iestata '%s' uz '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nultais"
-
-msgid "first"
-msgstr "pirmais"
-
-msgid "second"
-msgstr "otrais"
-
-msgid "third"
-msgstr "trešais"
-
-msgid "fourth"
-msgstr "ceturtais"
-
-msgid "fifth"
-msgstr "piektais"
-
-msgid "sixth"
-msgstr "sestais"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nultÄ izeja"
-
-msgid "first exit"
-msgstr "pirmÄ izeja"
-
-msgid "second exit"
-msgstr "otrÄ izeja"
-
-msgid "third exit"
-msgstr "treÅ¡Ä izeja"
-
-msgid "fourth exit"
-msgstr "ceturtÄ izeja"
-
-msgid "fifth exit"
-msgstr "piektÄ izeja"
-
-msgid "sixth exit"
-msgstr "sestÄ izeja"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d pēdas"
-
-#, c-format
-msgid "in %d feet"
-msgstr "pÄ“c %d pÄ“dÄm"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d jūdzes"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "pēc %d.%d jūdzēm"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "%d jūdze"
-msgstr[1] "%d jūdzes"
-msgstr[2] "%d jūdzes"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "pēc %d jūdzes"
-msgstr[1] "pēc %d jūdzēm"
-msgstr[2] "pēc %d jūdzēm"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metri"
-
-#, c-format
-msgid "in %d meters"
-msgstr "pēc %d metriem"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometri"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "pēc %d.%d kilometr(a,iem"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d kilometru"
-msgstr[1] "%d kilometrus"
-msgstr[2] "%d kilometri"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "pēc %d kilometra"
-msgstr[1] "pēc %d kilometriem"
-msgstr[2] "pēc %d kilometriem"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "uz uzbrauktuves"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%suz %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%suz %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%suz %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%suz %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "Uz %spagriezties pa %s"
-
-msgid "When possible, please turn around"
-msgstr "Kad iespējams apgriezieties"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Turpiniet pa šo ceļu %s"
-
-msgid "Enter the roundabout soon"
-msgstr "DrÄ«zumÄ uzbraukt uz apļa"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Nobraukt no apļa pa %1$s %2$s"
-
-msgid "soon"
-msgstr "drīz"
-
-msgid "now"
-msgstr "tagad"
-
-msgid "then"
-msgstr "pēc tam"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr "nobrauktuvē"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "pa labi"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "pa kreisi"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "nedaudz "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "strauji "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Pagriežaties %1$s ceÄ¼Ä pa %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "pēc %i ceļiem"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Pagriezties %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "pēc tam apgriezieties"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Apgriezieties %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "pēc tam apgriezieties"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Apgriezieties %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "turpiniet"
-
-msgid "then you have reached your destination."
-msgstr "tad Jūs sasniegsiet glamērķi"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Jūs esat sasniedzis galamērķi %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Nobrauktuve"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Pozīcija"
-
-msgid "Command"
-msgstr "Komanda"
-
-msgid "Length"
-msgstr "Garums"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Laiks"
-
-msgid "Destination Length"
-msgstr "Ceļš līdz galamērķim"
-
-msgid "Destination Time"
-msgstr "IeraÅ¡anÄs laiks"
-
-msgid "Roadbook"
-msgstr "Ceļa grÄmata"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Pieturvieta %d"
-
-msgid "Visit before..."
-msgstr "Doties caur..."
-
-msgid "Set as position"
-msgstr "UzstÄdÄ«t kÄ atraÅ¡anos"
-
-msgid "Set as destination"
-msgstr "IestatÄ«t kÄ galamÄ“Ä·i"
-
-msgid "Add as bookmark"
-msgstr "Pievienot grÄmatzÄ«mi"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkts 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "EkrÄna koordinÄtas: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andora"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Apvienotie ArÄbu EmirÄti"
-
-#. 004
-msgid "Afghanistan"
-msgstr "AfganistÄna"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigva un Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguila"
-
-#. 008
-msgid "Albania"
-msgstr "AlbÄnija"
-
-#. 051
-msgid "Armenia"
-msgstr "Armēnija"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Nīderlandes Antiļu salas"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktīda"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentīna"
-
-#. 016
-msgid "American Samoa"
-msgstr "Austrumsamoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austrija"
-
-#. 036
-msgid "Australia"
-msgstr "AustrÄlija"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ä€landu salas"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "AzerbaidžÄna"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnija un Hercogovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbadosa"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladeša"
-
-#. 056
-msgid "Belgium"
-msgstr "Beļģija"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "BulgÄrija"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahreina"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benina"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "SvÄ“tÄ Bartalameja sala"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Bruneja Darusalama"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolīvija"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brazīlija"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "ButÄna"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Buvē Sala"
-
-#. 072
-msgid "Botswana"
-msgstr "BotsvÄna"
-
-#. 112
-msgid "Belarus"
-msgstr "Baltkrievija"
-
-#. 084
-msgid "Belize"
-msgstr "Beliza"
-
-#. 124
-msgid "Canada"
-msgstr "KanÄda"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosu (KÄ«linga) salas"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo DemokrÄtiskÄ Republika"
-
-#. 140
-msgid "Central African Republic"
-msgstr "CentrÄlÄfrikas Republika"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Å veice"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "KotdivuÄra (Ziloņkaula krasts)"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Kuka salas"
-
-#. 152
-msgid "Chile"
-msgstr "Čīle"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerūna"
-
-#. 156
-msgid "China"
-msgstr "Ķīna"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbija"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kostarika"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kaboverde"
-
-#. 531
-msgid "Curacao"
-msgstr "Kurakao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Ziemsvētku Sala"
-
-#. 196
-msgid "Cyprus"
-msgstr "Kipra"
-
-#. 203
-msgid "Czech Republic"
-msgstr "ÄŒehijas Republika"
-
-#. 276
-msgid "Germany"
-msgstr "VÄcija"
-
-#. 262
-msgid "Djibouti"
-msgstr "Džibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "DÄnija"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "DominikÄnas Republika"
-
-#. 012
-msgid "Algeria"
-msgstr "Alžīrija"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvadora"
-
-#. 233
-msgid "Estonia"
-msgstr "Igaunija"
-
-#. 818
-msgid "Egypt"
-msgstr "Ä’Ä£ipte"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Rietumu SahÄra"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritreja"
-
-#. 724
-msgid "Spain"
-msgstr "SpÄnija"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopija"
-
-#. 246
-msgid "Finland"
-msgstr "Somija"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidži"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Folklenda (Malvinu) salas"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "MikronÄ“zijas FederatÄ«vÄs Valstis"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "FÄ“ru salas"
-
-#. 250
-msgid "France"
-msgstr "Francija"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabona"
-
-#. 826
-msgid "United Kingdom"
-msgstr "LielbritÄnija"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Gruzija"
-
-#. 254
-msgid "French Guiana"
-msgstr "FranÄu GviÄna"
-
-#. 831
-msgid "Guernsey"
-msgstr "GÄ“rnsija"
-
-#. 288
-msgid "Ghana"
-msgstr "Gana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "GibraltÄrs"
-
-#. 304
-msgid "Greenland"
-msgstr "Grenlande"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambija"
-
-#. 324
-msgid "Guinea"
-msgstr "Gvineja"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Gvadelupa"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "EkvatoriÄlÄ Gvineja"
-
-#. 300
-msgid "Greece"
-msgstr "GrieÄ·ija"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Dienviddžordžija un DienvidsendviÄu salas"
-
-#. 320
-msgid "Guatemala"
-msgstr "Gvatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guama"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Gvineja-Bisau"
-
-#. 328
-msgid "Guyana"
-msgstr "GajÄna"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Honkonga"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "HÄ“rda un Makdonalda salas"
-
-#. 340
-msgid "Honduras"
-msgstr "Hondurasa"
-
-#. 191
-msgid "Croatia"
-msgstr "HorvÄtija"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "UngÄrija"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonēzija"
-
-#. 372
-msgid "Ireland"
-msgstr "Īrija"
-
-#. 376
-msgid "Israel"
-msgstr "Izraēla"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Menas sala"
-
-#. 356
-msgid "India"
-msgstr "Indija"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Indijas OkeÄna Britu Teritorija"
-
-#. 368
-msgid "Iraq"
-msgstr "IrÄka"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "IrÄna"
-
-#. 352
-msgid "Iceland"
-msgstr "Īslande"
-
-#. 380
-msgid "Italy"
-msgstr "ItÄlija"
-
-#. 832
-msgid "Jersey"
-msgstr "Džersija"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "JordÄna"
-
-#. 392
-msgid "Japan"
-msgstr "JapÄna"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenija"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "KirgizstÄna"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komoras"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Sentkitsa un Nevisa"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Ziemeļkoreja"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Dienvidkoreja"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuveita"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kaimanu Salas"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "KazahstÄna"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laosa"
-
-#. 422
-msgid "Lebanon"
-msgstr "LibÄna"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Sentlūsija"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Lihtenšteina"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Å rilanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Libērija"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lietuva"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luksemburga"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvija"
-
-#. 434
-msgid "Libya"
-msgstr "LÄ«bija"
-
-#. 504
-msgid "Morocco"
-msgstr "Maroka"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova"
-
-#. 499
-msgid "Montenegro"
-msgstr "Melnkalne"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Senmartēna"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskara"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "MÄrÅ¡ala salas"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "MaÄ·edonija"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Mjanma"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolija"
-
-#. 446
-msgid "Macao"
-msgstr "Makao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Ziemeļu Marianas salas"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinika"
-
-#. 478
-msgid "Mauritania"
-msgstr "MauritÄnija"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserata"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Maurīcija"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldīvu salas"
-
-#. 454
-msgid "Malawi"
-msgstr "MalÄvija"
-
-#. 484
-msgid "Mexico"
-msgstr "Meksika"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaizija"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambika"
-
-#. 516
-msgid "Namibia"
-msgstr "Namībija"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Jaunkaledonija"
-
-#. 562
-msgid "Niger"
-msgstr "Nigēra"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolkas sala"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigērija"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragva"
-
-#. 528
-msgid "Netherlands"
-msgstr "NÄ«derlande"
-
-#. 578
-msgid "Norway"
-msgstr "Norvēģija"
-
-#. 524
-msgid "Nepal"
-msgstr "NepÄla"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Jaunzēlande"
-
-#. 512
-msgid "Oman"
-msgstr "OmÄna"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "FranÄu PolinÄ“zija"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Jaungvineja"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipīnas"
-
-#. 586
-msgid "Pakistan"
-msgstr "PakistÄna"
-
-#. 616
-msgid "Poland"
-msgstr "Polija"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Senpjēra un Mikelona"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitkērna"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Porto Riko"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestīna"
-
-#. 620
-msgid "Portugal"
-msgstr "PortugÄle"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paragvaja"
-
-#. 634
-msgid "Qatar"
-msgstr "Katara"
-
-#. 638
-msgid "Reunion"
-msgstr "Reinjona"
-
-#. 642
-msgid "Romania"
-msgstr "RumÄnija"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbija"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Krievija"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "SaÅ«da ArÄbija"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "ZÄlamana salas"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seišelas"
-
-#. 736
-msgid "Sudan"
-msgstr "SudÄna"
-
-#. 752
-msgid "Sweden"
-msgstr "Zviedrija"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapūra"
-
-#. 654
-msgid "Saint Helena"
-msgstr "SvÄ“tÄs HelÄ“nas Sala"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovēnija"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "SvalbÄra un Jana Majena sala"
-
-#. 703
-msgid "Slovakia"
-msgstr "SlovÄkija"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sjerraleone"
-
-#. 674
-msgid "San Marino"
-msgstr "Sanmarīno"
-
-#. 686
-msgid "Senegal"
-msgstr "SenegÄla"
-
-#. 706
-msgid "Somalia"
-msgstr "SomÄlija"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinama"
-
-#. 728
-msgid "South Sudan"
-msgstr "DienvidsudÄna"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Santome un Prinsipi"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salvadora"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sintmartēna"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "SÄ«rija"
-
-#. 748
-msgid "Swaziland"
-msgstr "Svazilenda"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "TÄ“rksas un Kaikosas"
-
-#. 148
-msgid "Chad"
-msgstr "ÄŒada"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Francijas Dienvidjūru Zemes"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Taizeme"
-
-#. 762
-msgid "Tajikistan"
-msgstr "TadžikistÄna"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Austrumtimora"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "TurkmenistÄna"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisija"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turcija"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidada un Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "TaivÄna"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "TanzÄnija"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "ASV MazÄs AizjÅ«ras Salas"
-
-#. 840
-msgid "United States"
-msgstr "SavienotÄs Valstis"
-
-#. 858
-msgid "Uruguay"
-msgstr "Urugvaja"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "UzbekistÄna"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "VatikÄns"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Sentvinsenta un Grenadīnas"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venecuēla"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Virdžīnas Salas, Britu"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Virdžīnu salas, ASV"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vjetnama"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Volisa un Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemena"
-
-#. 175
-msgid "Mayotte"
-msgstr "Majota"
-
-#. 710
-msgid "South Africa"
-msgstr "DienvidÄfrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambija"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabve"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* NezinÄms, pievienot is_in tagus Å¡Ä«m pilsÄ“tÄm"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Nav atrasti konfigurÄcijas faili - navit.xml, navit.xml.local\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Kļūdu analīzes iestatijumu fails '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Izmanto '%s' iestatījumu failu\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"IekÅ¡Ä“jÄ inicializÄcija neizdevÄs, beidzÄ“. Skatiet iepriekÅ¡Ä“jos kļūdu "
-"ziņojumus.\n"
-
-msgid "unknown street"
-msgstr "nezinÄma iela"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Nosnosaukts transporta līdzeklis"
-
-msgid "Failed to write bookmarks file"
-msgstr "NeizdevÄs atjauninÄt grÄmatzÄ«mju failu"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Punkts uz Kartes"
-
-msgid "Car"
-msgstr "Automašīna"
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr "Valsts"
-
-msgid "Postal"
-msgstr "Pasta"
-
-msgid "Town"
-msgstr "Pilsēta"
-
-msgid "District"
-msgstr "Rajons"
-
-msgid "Street"
-msgstr "Iela"
-
-msgid "Number"
-msgstr "Numurs"
-
-msgid "Enter Destination"
-msgstr "Izvēlies galamērķi"
-
-msgid "Zip Code"
-msgstr "Pasta indekss"
-
-msgid "City"
-msgstr "Pilsēta"
-
-msgid "District/Township"
-msgstr "Rajons/PÄrvaldes rajons"
-
-msgid "Map"
-msgstr "Karte"
-
-msgid "Bookmark"
-msgstr "GrÄmatzÄ«me"
-
-msgid "Destination"
-msgstr "Galamērķis"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "_EkrÄns"
-
-msgid "_Route"
-msgstr "_Maršruts"
-
-msgid "_Former Destinations"
-msgstr "_Nesenais Galamērķis"
-
-msgid "_Bookmarks"
-msgstr "_GrÄmatzÄ«mes"
-
-msgid "_Map"
-msgstr "_Karte"
-
-msgid "_Layout"
-msgstr "_IzklÄjums"
-
-msgid "_Projection"
-msgstr "_Projekcija"
-
-msgid "_Vehicle"
-msgstr "_Transporta līdzeklis"
-
-msgid "Zoom_Out"
-msgstr "_AttÄlinÄt"
-
-msgid "Decrease zoom level"
-msgstr "SamazinÄt tuvinÄjumu"
-
-msgid "Zoom_In"
-msgstr "_PietuviÄt"
-
-msgid "Increase zoom level"
-msgstr "PalielinÄt tuvinÄjumu"
-
-msgid "_Recalculate"
-msgstr "_PÄrrÄ“Ä·inÄt"
-
-msgid "Redraw map"
-msgstr "PÄrzÄ«mÄ“t karti"
-
-msgid "_Info"
-msgstr "_InformÄcija"
-
-msgid "Set _destination"
-msgstr "Iestatīt _galamēķi"
-
-msgid "Opens address search dialog"
-msgstr "Atvērt adreses meklēšanas dialogu"
-
-msgid "_POI search"
-msgstr "I_P neklēšana"
-
-msgid "Opens POI search dialog"
-msgstr "Atver IP meklēšanas dialogu"
-
-msgid "_Stop Navigation"
-msgstr "_ApturÄ“t NavigÄciju"
-
-msgid "Test"
-msgstr "Tests"
-
-msgid "_Quit"
-msgstr "_Iziet"
-
-msgid "Quit the application"
-msgstr "Iziet no aplikÄcijas"
-
-msgid "Show position _cursor"
-msgstr "RÄdÄ«t atraÅ¡anÄs _kursoru"
-
-msgid "_Lock on Road"
-msgstr "_Piesaistīt Ceļam"
-
-msgid "_Keep orientation to the North"
-msgstr "_SaglabÄt orientÄciju uz Ziemeļiem"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "MainÄ«t kartes orientÄciju uz ziemeļiem vai transportlÄ«dzekli"
-
-msgid "_Roadbook"
-msgstr "_CeļagrÄmata"
-
-msgid "Show/hide route description"
-msgstr "RÄdÄ«t/slÄ“pt marÅ¡ruta aprakstu"
-
-msgid "_Autozoom"
-msgstr "_AutotÄlummiņa"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "IeslÄ“gt/izslÄ“gt automÄtisku tÄlummaiņu"
-
-msgid "_Fullscreen"
-msgstr "_PilnekrÄns"
-
-msgid "Data"
-msgstr "Dati"
-
-msgid "Pharmacy"
-msgstr "FarmÄcija"
-
-msgid "Restaurant"
-msgstr "RestorÄns"
-
-msgid "Restaurant. Fast food"
-msgstr "RestorÄns. Bistro"
-
-msgid "Hotel"
-msgstr "Viesnīca"
-
-msgid "Car parking"
-msgstr "Auto novietne"
-
-msgid "Fuel station"
-msgstr "Benzīntanks"
-
-msgid "Bank"
-msgstr "Banka"
-
-msgid "Hospital"
-msgstr "Slimnīca"
-
-msgid "Cinema"
-msgstr "Kino"
-
-msgid "Train station"
-msgstr "Vilcienu stacija"
-
-msgid "School"
-msgstr "Skola"
-
-msgid "Police"
-msgstr "Policija"
-
-msgid "Justice"
-msgstr "Tiesībsargi"
-
-msgid "Taxi"
-msgstr "Taksometrs"
-
-msgid "Shopping"
-msgstr "IepirkÅ¡anÄs"
-
-msgid "Distance from screen center (km)"
-msgstr "AttÄlums no ekrÄna centra (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "IP %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Iestatīt galamērķi - %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "Iestatīt karti %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "IestatÄ«t nÄkamo apmeklÄ“jumu %ld, %ld \n"
-
-msgid "POI search"
-msgstr "IP meklēšana"
-
-msgid "Select a category"
-msgstr "Izvēlieties kategoriju"
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr "Izvēlaties IP"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Kategorija"
-
-msgid "Direction"
-msgstr "NorÄdes"
-
-msgid "Distance(m)"
-msgstr "AttÄlums (m)"
-
-msgid "Name"
-msgstr "VÄrds"
-
-msgid "Visit Before"
-msgstr "Apmeklēt vispirms"
-
-msgid "N"
-msgstr "Z"
-
-msgid "NE"
-msgstr "ZA"
-
-msgid "E"
-msgstr "A"
-
-msgid "SE"
-msgstr "DA"
-
-msgid "S"
-msgstr "D"
-
-msgid "SW"
-msgstr "DR"
-
-msgid "W"
-msgstr "R"
-
-msgid "NW"
-msgstr "ZR"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "NÄ“"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Ceļš %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Ceļš 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Palīdzība"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Pieturpunkti %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "IzvÄ“laties pieturpunktu lai ievietotu kÄ jaunu"
-
-msgid "View in Browser"
-msgstr "RÄdÄ«t pÄrlÅ«kÄ"
-
-msgid "Item type"
-msgstr "Vienības veids"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Ielas"
-
-msgid "House numbers"
-msgstr "MÄjas numuri"
-
-msgid "View Attributes"
-msgstr "RÄdÄ«t AtribÅ«tus"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "IestatÄ«t kÄ atraÅ¡anos (un atspÄ“jot Tr. LÄ«dzekli)"
-
-msgid "POIs"
-msgstr "IP"
-
-msgid "View on map"
-msgstr "Apskatīties kartē"
-
-msgid "Remove search results from the map"
-msgstr "Noņem meklÄ“tos rezultÄtus no kartes"
-
-msgid "Show results on the map"
-msgstr "RÄdÄ«t rezultÄtus uz kartes"
-
-msgid "Cut Bookmark"
-msgstr "izgriezt grÄmatzÄ«mi"
-
-msgid "Copy Bookmark"
-msgstr "KopÄ“t grÄmatzÄ«mi"
-
-msgid "Rename Bookmark"
-msgstr "PÄrdÄ“vÄ“t grÄmatzÄ«mi"
-
-msgid "Paste Bookmark"
-msgstr "IelÄ«mÄ“t grÄmatzÄ«mi"
-
-msgid "Delete Bookmark"
-msgstr "DzÄ“st grÄmatzÄ«mi"
-
-msgid "Delete waypoint"
-msgstr "Dzēst pieturvietu"
-
-msgid "Bookmarks"
-msgstr "GrÄmatzÄ«mes"
-
-msgid "Bookmarks as waypoints"
-msgstr "GrÄmatzÄ«mes kÄ pieturvietas"
-
-msgid "Save waypoints"
-msgstr "SaglabÄt pieturvietas"
-
-msgid "Replace with waypoints"
-msgstr "Aizvietot ar pieturvietÄm"
-
-msgid "Delete Folder"
-msgstr "Dzēst mapi"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Pievienot grÄmatzÄ«mju mapi"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "IelÄ«mÄ“t grÄmatzÄ«mi"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "GrÄmatzÄ«mes %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "LejuplÄdÄ“ %s"
-
-msgid "Map Download"
-msgstr "KarÅ¡u lejuplÄde"
-
-msgid "Active"
-msgstr "Aktīvs"
-
-msgid "Download Enabled"
-msgstr "LejupielÄde aktivizÄ“ta"
-
-msgid "Download completely"
-msgstr "LejupielÄde pabeigta"
-
-msgid "Show Satellite Status"
-msgstr "RÄdit satelÄ«tu informÄciju"
-
-msgid " Elevation "
-msgstr " Augstums "
-
-msgid " Azimuth "
-msgstr " Azimuts "
-
-msgid "Show NMEA Data"
-msgstr "RÄdit NMEA informÄciju"
-
-msgid "car"
-msgstr "auto"
-
-msgid "bike"
-msgstr "velosipēds"
-
-msgid "pedestrian"
-msgstr "gÄjÄ“js"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Pašreizējais profils: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Mainīt profilu uz: %s"
-
-msgid "Set as active"
-msgstr "IestatÄ«t kÄ aktÄ«vu"
-
-msgid "Show Satellite status"
-msgstr "RÄdÄ«t saelÄ«tu statusu"
-
-msgid "Show NMEA data"
-msgstr "RÄdÄ«t NMEA datus"
-
-msgid "Add Bookmark"
-msgstr "Pievienot grÄmatzÄ«mi"
-
-msgid "Rename"
-msgstr "PÄrsaukt"
-
-msgid "About Navit"
-msgstr "Par Navit"
-
-#. Authors
-msgid "By"
-msgstr "Autori:"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Un visa Navit komanda"
-
-msgid "members and contributors."
-msgstr "biedri un atbalstÄ«tÄji"
-
-msgid "Waypoints"
-msgstr "Pieturpunkti"
-
-msgid "Enter Coordinates"
-msgstr "Ievadiet KoordinÄtes"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr "Ievadiet koordinÄtes, piemÄ“ram:"
-
-msgid "Vehicle"
-msgstr "Transportlīdzeklis"
-
-msgid "Rules"
-msgstr "Noteikumi"
-
-msgid "Lock on road"
-msgstr "Piesaistīt ceļam"
-
-msgid "Northing"
-msgstr "Uz ziemeīem"
-
-msgid "Map follows Vehicle"
-msgstr "Karte seko mašīnai"
-
-msgid "Plan with Waypoints"
-msgstr "PlÄnot ar pieturvietÄm"
-
-msgid "Maps"
-msgstr "Kartes"
-
-msgid "Layout"
-msgstr "IzklÄjums"
-
-msgid "Height Profile"
-msgstr "Augstuma profils"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Maršruta apraksts"
-
-msgid "Show Locale"
-msgstr "RÄdÄ«t LokÄles"
-
-msgid "Former Destinations"
-msgstr "Nesenie galamērķi"
-
-msgid "- No former destinations available -"
-msgstr "- Nav neseno galamērķu -"
-
-msgid "Message"
-msgstr "Ziņa"
-
-msgid "Back"
-msgstr "Atpakaļ"
-
-msgid "Back to map"
-msgstr "Atpakaļ uz karti"
-
-msgid "Main Menu"
-msgstr "GalvenÄ izvÄ“lne"
-
-msgid "House number"
-msgstr "MÄjas numurs"
-
-msgid "Next"
-msgstr "NÄkamais"
-
-msgid "Prev"
-msgstr "Iepriekšējais"
-
-msgid "Return to route!"
-msgstr "Atgriezties uz ceļa!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Uzmanību! Kamera!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "LÅ«dzu samaziet atrÄmu"
-
-msgid "partial match"
-msgstr "daļēja sakritība"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Meklēt"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Pilsētas"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Karte (c) OpenStreetMap contributors, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "LejuplÄdÄ“tÄs kartes"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Ceļš uz šejieni"
-
-msgid "Cancel"
-msgstr "Atcelt"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "Visa Planēta"
-
-msgid "Africa"
-msgstr "Ä€frika"
-
-msgid "Canary Islands"
-msgstr "KanÄriju salas"
-
-msgid "Asia"
-msgstr "Ä€zija"
-
-msgid "Korea"
-msgstr "Koreja"
-
-msgid "Taiwan"
-msgstr "TaivÄna"
-
-msgid "UAE+Other"
-msgstr "AAE+Citi"
-
-msgid "Oceania"
-msgstr "OkeÄnija"
-
-msgid "Tasmania"
-msgstr "TasmÄnija"
-
-msgid "Victoria"
-msgstr "Viktorija"
-
-msgid "New South Wales"
-msgstr "JaunÄ Dienvidvelsa"
-
-msgid "Europe"
-msgstr "Eiropa"
-
-msgid "Western Europe"
-msgstr "Rietumeiropa"
-
-msgid "Azores"
-msgstr "Azoru salas"
-
-msgid "BeNeLux"
-msgstr "Beneluksa"
-
-msgid "Alsace"
-msgstr "Alsace"
-
-msgid "Aquitaine"
-msgstr "AkvitÄna"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Basse-Normandija"
-
-msgid "Bourgogne"
-msgstr "Bourgogne"
-
-msgid "Bretagne"
-msgstr "BritÄnija"
-
-msgid "Centre"
-msgstr "Centrs"
-
-msgid "Champagne-Ardenne"
-msgstr "Å ampanja-Ardene"
-
-msgid "Corse"
-msgstr "Korse"
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr "Limuzīns"
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr "Bajerna"
-
-msgid "Mittelfranken"
-msgstr "Mitelfarkena"
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr "Å vÄbene"
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr "Berlīne"
-
-msgid "Brandenburg"
-msgstr "Brandenburga"
-
-msgid "Bremen"
-msgstr "Brēmene"
-
-msgid "Hamburg"
-msgstr "Hamburga"
-
-msgid "Hessen"
-msgstr "Hessene"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr "Maljorka"
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr "SkandinÄvija"
-
-msgid "England"
-msgstr "Anglija"
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr "Kembridžšīra"
-
-msgid "Cumbria"
-msgstr "Kumbrija"
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr "Eseksa"
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr "Kenta"
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr "Norfolka"
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr "Oksfordšīre"
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr "Somerseta"
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr "Skotija"
-
-msgid "Wales"
-msgstr "Velsa"
-
-msgid "Crete"
-msgstr "Krēta"
-
-msgid "North America"
-msgstr "Ziemeļamerika"
-
-msgid "Alaska"
-msgstr "Aļaska"
-
-msgid "Hawaii"
-msgstr "Havaju salas"
-
-msgid "USA"
-msgstr "ASV"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (izņemt Aļasku un Havajas)"
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr "MiÄigana"
-
-msgid "Ohio"
-msgstr "Ohaio"
-
-msgid "Northeast"
-msgstr "Ziemeļaustrumu"
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr "Vermonta"
-
-msgid "Pacific"
-msgstr "Klusais okeÄns"
-
-msgid "South"
-msgstr "Dienvidi"
-
-msgid "Arkansas"
-msgstr "Arkanzasa"
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Luiziana"
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr "Misisipi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Teksasa"
-
-msgid "Virginia"
-msgstr "Virdžīnija"
-
-msgid "West Virginia"
-msgstr "Rietumvirdžīnija"
-
-msgid "West"
-msgstr "Rietumi"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "Kalifornija"
-
-msgid "Colorado"
-msgstr "Kolorado"
-
-msgid "Idaho"
-msgstr "Aidaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregona"
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr "lejupielÄdÄ“"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "gatavs"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Nav brīvas vietas"
-
-msgid "Error downloading map!"
-msgstr "Kļūda lejuplÄdÄ“jot karti!"
-
-msgid "Error writing map!"
-msgstr "Kļūda rakstot karti!"
-
-msgid "Map download aborted!"
-msgstr "Kartes lejupielÄde atcelta!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Atlikušais laiks"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Kartes lejuplÄde"
-
-msgid "Vehicle Position"
-msgstr "Mašinas pozīcija"
-
-msgid "Main menu"
-msgstr "GalvenÄ izvÄ“lne"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"RÄdÄ«t\n"
-"Karti"
-
-msgid "Settings"
-msgstr "Iestatījumi"
-
-msgid "Tools"
-msgstr "RÄ«ki"
-
-msgid "Route"
-msgstr "Maršruts"
-
-msgid "About"
-msgstr "Par"
-
-msgid "Quit"
-msgstr "Iziet"
-
-msgid "Actions"
-msgstr "Darbības"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Nesenie\n"
-"Galamērķi"
-
-msgid "Coordinates"
-msgstr "KoordinÄtas"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Apturēt\n"
-"Navigaciju"
-
-msgid "Display"
-msgstr "EkrÄns"
-
-msgid "Fullscreen"
-msgstr "PilnekrÄns"
-
-msgid "Window Mode"
-msgstr "Loga režīms"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Apraksts"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Atcelt pēdējo \n"
-"Pieturvietu"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Atcelt nÄkamo \n"
-"Pieturvietu"
-
-msgid "Satellite Status"
-msgstr "Satalītu status"
-
-msgid "NMEA Data"
-msgstr "NMEA Dati"
-
-msgid "car_shortest"
-msgstr "Auto - ÄtrÄkais ceļš"
-
-msgid "car_avoid_tolls"
-msgstr "Auto - izvairīties no maksas ceļiem"
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "zirgs"
-
-msgid "Truck"
-msgstr "Kravas automašīna"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "JÄ"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit sÄknÄ“ts"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit darbojas"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "SveicinÄti Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Paldies ka instalÄ“jÄt Navit!\n"
-"\n"
-"Lai sÄktu, izvÄ“laties \"LejuplÄdÄ“t kartes\" no izvÄ“lnes, lai lejuplÄdÄ“tu "
-"kartes. PiezÄ«me: KarÅ¡u izmÄ“rs var bÅ«t lilÄks par (>50MB) - wifi savienojums "
-"ir rekomendēts.\n"
-"\n"
-"Karšu dati: (c) OpenStreetMap contributors\n"
-"\n"
-"Lai noder!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "Labi"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "VairÄk informÄcijas"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "TuvinÄt"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "TÄlinÄt"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "LejuplÄdÄ“t kartes"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Iespējot IP"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Iziet no Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Rezerves kopija/Atjaunot"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Dzēst šo karti?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "LejuplÄdÄ“:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Kļūda lejuplÄdÄ“jot karti."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Kartes lejupielÄde atcelta"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Nav atraÅ¡aÄs vietas. Atvriet vÄ“lreiz kad noteikta taraÅ¡anÄs vieta"
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Kartes satur pasÅ—eizÄ“jo atraÅ¡anÄs vietu"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Meklēt adresi"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Ievadiet galamērķi"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Daļēja adreses sakritība"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Meklē..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Adrese nav atrasta"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Saņem meklÄ“Å¡anas rezultÄtus"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "IelÄdÄ“ meklÄ“Å¡anas rezultÄtus"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Nekas nav atrasts"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Nav ivadīts teksts"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Iestata galamērķi:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Izvēlaties darbību"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Ievietojiet SD karti"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Rezerves kopēšana..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Atjauno..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "NeizdevÄs izveidot rezerves kopijas mapi"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Rezerves kopÄ“Å¡ana neizdevÄs"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Rezerves kopija nav atrsta"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "NeizdevÄs atjunot"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Rezerves kopēšana veiksmīga"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Atjaunošana veiksmīga\n"
-"LÅ«dzu pÄrstartÄ“jiet Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Rezerves kopija nav atrasta"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "AtjaunoÅ¡ana neizdevÄs"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Izvēlaties rezerves kopiju"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Rezerves kopija"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Atjaunot"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "pēc tam izbraukt no apļa pa %1$s %2$s"
diff --git a/po/mk.po.in b/po/mk.po.in
deleted file mode 100644
index d51a99fb3..000000000
--- a/po/mk.po.in
+++ /dev/null
@@ -1,2755 +0,0 @@
-# Macedonian (mk) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Dejan Angelov https://launchpad.net/~dejanangelov
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Naum Spaseski https://launchpad.net/~naum-spaseski-gmail
-# Robert Mileski https://launchpad.net/~mileski
-# goran.cvetkovski https://launchpad.net/~goran-cvetkovski
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:59+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Macedonian <mk@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-"Language: mk\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Работи од оÑновниот директориум\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "Ñмени '%s' во '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "нулти"
-
-msgid "first"
-msgstr "прв"
-
-msgid "second"
-msgstr "втор"
-
-msgid "third"
-msgstr "трет"
-
-msgid "fourth"
-msgstr "четврт"
-
-msgid "fifth"
-msgstr "петти"
-
-msgid "sixth"
-msgstr "шеÑти"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "нема излез"
-
-msgid "first exit"
-msgstr "прв излез"
-
-msgid "second exit"
-msgstr "втор излез"
-
-msgid "third exit"
-msgstr "трет излез"
-
-msgid "fourth exit"
-msgstr "четврт излез"
-
-msgid "fifth exit"
-msgstr "петти излез"
-
-msgid "sixth exit"
-msgstr "шеÑти излез"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d Ñтапки"
-
-#, c-format
-msgid "in %d feet"
-msgstr "за %d Ñтапки"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d милји"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "за %d.%d милји"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] "%d милји"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] "за %d милји"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d метри"
-
-#, c-format
-msgid "in %d meters"
-msgstr "поÑле %d метра"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d километри"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "поÑле %d.%d километри"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d километри"
-msgstr[1] "%d километри"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "поÑле %d километри"
-msgstr[1] "поÑле %d километри"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "на рампа"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sна %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sна %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sна %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sна %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sна %s"
-
-msgid "When possible, please turn around"
-msgstr "Кога можете, Ñвртете"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Следете го патот Ñледните %s"
-
-msgid "Enter the roundabout soon"
-msgstr "ÐаÑкоро влегувате во кружен тек"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Излегувате од кружен тек на %1$s %2$s"
-
-msgid "soon"
-msgstr "наÑкоро"
-
-msgid "now"
-msgstr "Ñега"
-
-msgid "then"
-msgstr "тогаш"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "на деÑно"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "на лево"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "леÑно "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "Ñилно "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Продолжи по %1$s патот до %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "поÑле %i патишта"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Свртете %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "тогаш Ñвртете"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Свртете %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "тогаш Ñвртете"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Свртете %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "потоа приÑтигате на одредиштето."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Стигнавте на целта %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Излез"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "ПозициÑ"
-
-msgid "Command"
-msgstr "Програма"
-
-msgid "Length"
-msgstr "Length"
-
-msgid "km"
-msgstr "км"
-
-msgid "m"
-msgstr "м"
-
-msgid "Time"
-msgstr "Време"
-
-msgid "Destination Length"
-msgstr "РаÑтојание до целта"
-
-msgid "Destination Time"
-msgstr "Време до целта"
-
-msgid "Roadbook"
-msgstr "Патна книга"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr "ПоÑети пред..."
-
-msgid "Set as position"
-msgstr "Зададете како позиција"
-
-msgid "Set as destination"
-msgstr "Зададете како цел"
-
-msgid "Add as bookmark"
-msgstr "Додадете како меÑто"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Точка 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Координати на екранот: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Ðндора"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Обединети ÐрапÑки Емирати"
-
-#. 004
-msgid "Afghanistan"
-msgstr "ÐвганиÑтан"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Ðнтигва и Барбуда"
-
-#. 660
-msgid "Anguilla"
-msgstr "Ðнгила"
-
-#. 008
-msgid "Albania"
-msgstr "Ðлбанија"
-
-#. 051
-msgid "Armenia"
-msgstr "Ерменија"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "ХоландÑки Ðнтили"
-
-#. 024
-msgid "Angola"
-msgstr "Ðнгола"
-
-#. 010
-msgid "Antarctica"
-msgstr "Ðнтарктика"
-
-#. 032
-msgid "Argentina"
-msgstr "Ðргентина"
-
-#. 016
-msgid "American Samoa"
-msgstr "ÐмериканÑка Самоа"
-
-#. 040
-msgid "Austria"
-msgstr "ÐвÑтрија"
-
-#. 036
-msgid "Australia"
-msgstr "ÐвÑтралија"
-
-#. 533
-msgid "Aruba"
-msgstr "Ðруба"
-
-#. 248
-msgid "Aland Islands"
-msgstr "ÐландÑки оÑтрови"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Ðзербејџан"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "БоÑна и Херцеговина"
-
-#. 052
-msgid "Barbados"
-msgstr "БарбадоÑ"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#. 056
-msgid "Belgium"
-msgstr "Белгија"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Буркина ФаÑо"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Бугарија"
-
-#. 048
-msgid "Bahrain"
-msgstr "Бахреин"
-
-#. 108
-msgid "Burundi"
-msgstr "Бурунди"
-
-#. 204
-msgid "Benin"
-msgstr "Бенин"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Свети Бартоломеј"
-
-#. 060
-msgid "Bermuda"
-msgstr "Бермуда"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Брунеи Дар ÐµÑ Ð¡Ð°Ð»Ð°Ð¼"
-
-#. 068
-msgid "Bolivia"
-msgstr "Боливија"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Бониаре, Св. ЕуÑÑ‚Ð°Ñ‚Ð¸ÑƒÑ Ð¸ Саба"
-
-#. 076
-msgid "Brazil"
-msgstr "Бразил"
-
-#. 044
-msgid "Bahamas"
-msgstr "Бахами"
-
-#. 064
-msgid "Bhutan"
-msgstr "Бутан"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "ОÑтров Буве"
-
-#. 072
-msgid "Botswana"
-msgstr "Боцвана"
-
-#. 112
-msgid "Belarus"
-msgstr "БелоруÑија"
-
-#. 084
-msgid "Belize"
-msgstr "Белизе"
-
-#. 124
-msgid "Canada"
-msgstr "Канада"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "КокоÑови (Килинг) оÑтрови"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Конго, ДемократÑка Република"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Централна ÐфриканÑка Република"
-
-#. 178
-msgid "Congo"
-msgstr "Конго"
-
-#. 756
-msgid "Switzerland"
-msgstr "Швајцарија"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Брегот на Слоновата коÑка"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Кук оÑтрови"
-
-#. 152
-msgid "Chile"
-msgstr "Чиле"
-
-#. 120
-msgid "Cameroon"
-msgstr "Камерун"
-
-#. 156
-msgid "China"
-msgstr "Кина"
-
-#. 170
-msgid "Colombia"
-msgstr "Колумбија"
-
-#. 188
-msgid "Costa Rica"
-msgstr "КоÑтарика"
-
-#. 192
-msgid "Cuba"
-msgstr "Куба"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Кејп Верде"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "ВелигденÑки ОÑтрови"
-
-#. 196
-msgid "Cyprus"
-msgstr "Кипар"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Чешка Република"
-
-#. 276
-msgid "Germany"
-msgstr "Германија"
-
-#. 262
-msgid "Djibouti"
-msgstr "Ðибути"
-
-#. 208
-msgid "Denmark"
-msgstr "ДанÑка"
-
-#. 212
-msgid "Dominica"
-msgstr "Доминика"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "ДоминиканÑка Република"
-
-#. 012
-msgid "Algeria"
-msgstr "Ðлжир"
-
-#. 218
-msgid "Ecuador"
-msgstr "Еквадор"
-
-#. 233
-msgid "Estonia"
-msgstr "ЕÑтонија"
-
-#. 818
-msgid "Egypt"
-msgstr "Египет"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Западна Сахара"
-
-#. 232
-msgid "Eritrea"
-msgstr "Еритреја"
-
-#. 724
-msgid "Spain"
-msgstr "Шпанија"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Етиопија"
-
-#. 246
-msgid "Finland"
-msgstr "ФинÑка"
-
-#. 242
-msgid "Fiji"
-msgstr "Фиџи"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "ФокландÑки ОÑтрови (Малвини)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Микронезија, Федеративни Држави на"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "ФарÑки ОÑтрови"
-
-#. 250
-msgid "France"
-msgstr "Франција"
-
-#. 266
-msgid "Gabon"
-msgstr "Габон"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Обединето КралÑтво"
-
-#. 308
-msgid "Grenada"
-msgstr "Гренада"
-
-#. 268
-msgid "Georgia"
-msgstr "Грузија"
-
-#. 254
-msgid "French Guiana"
-msgstr "ФранцуÑка Гвинеја"
-
-#. 831
-msgid "Guernsey"
-msgstr "Гернзи"
-
-#. 288
-msgid "Ghana"
-msgstr "Гана"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Гибралтар"
-
-#. 304
-msgid "Greenland"
-msgstr "Гренланд"
-
-#. 270
-msgid "Gambia"
-msgstr "Гамбија"
-
-#. 324
-msgid "Guinea"
-msgstr "Гвинеја"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Гваделупе"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Екваторијална Гвинеја"
-
-#. 300
-msgid "Greece"
-msgstr "Грција"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Јужна Ðорџија и Јужните Сендвич оÑтрови"
-
-#. 320
-msgid "Guatemala"
-msgstr "Гватемала"
-
-#. 316
-msgid "Guam"
-msgstr "Гуам"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Гвинеја БиÑао"
-
-#. 328
-msgid "Guyana"
-msgstr "Гвајана"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Хонг Конг"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Херд оÑтрови и Мекдоналд оÑтрови"
-
-#. 340
-msgid "Honduras"
-msgstr "ХондураÑ"
-
-#. 191
-msgid "Croatia"
-msgstr "ХрватÑка"
-
-#. 332
-msgid "Haiti"
-msgstr "Хаити"
-
-#. 348
-msgid "Hungary"
-msgstr "Унгарија"
-
-#. 360
-msgid "Indonesia"
-msgstr "Индонезија"
-
-#. 372
-msgid "Ireland"
-msgstr "ИрÑка"
-
-#. 376
-msgid "Israel"
-msgstr "Израел"
-
-#. 833
-msgid "Isle of Man"
-msgstr "ОÑтровот Ман"
-
-#. 356
-msgid "India"
-msgstr "Индија"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "БританÑка територија на ИндиÑки океан"
-
-#. 368
-msgid "Iraq"
-msgstr "Ирак"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Иран, ИÑламÑка Република"
-
-#. 352
-msgid "Iceland"
-msgstr "ИÑланд"
-
-#. 380
-msgid "Italy"
-msgstr "Италија"
-
-#. 832
-msgid "Jersey"
-msgstr "ÐерÑи"
-
-#. 388
-msgid "Jamaica"
-msgstr "Јамајка"
-
-#. 400
-msgid "Jordan"
-msgstr "Јордан"
-
-#. 392
-msgid "Japan"
-msgstr "Јапонија"
-
-#. 404
-msgid "Kenya"
-msgstr "Кенија"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "КиргиÑтан"
-
-#. 116
-msgid "Cambodia"
-msgstr "Камбоџа"
-
-#. 296
-msgid "Kiribati"
-msgstr "Кирибати"
-
-#. 174
-msgid "Comoros"
-msgstr "КоморÑки оÑтрови"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Свети ÐšÐ¸Ñ‚Ñ Ð¸ ÐевиÑ"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Кореја, ДемократÑка Ðародна Република"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Кореја, Република"
-
-#. 414
-msgid "Kuwait"
-msgstr "Кувајт"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "КајманÑки ОÑтрови"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "КазахÑтан"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Ðародна ДемократÑка Република Лао"
-
-#. 422
-msgid "Lebanon"
-msgstr "Либан"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Света ЛуÑија"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Лихтенштајн"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Шри Ланка"
-
-#. 430
-msgid "Liberia"
-msgstr "Либерија"
-
-#. 426
-msgid "Lesotho"
-msgstr "ЛеÑото"
-
-#. 440
-msgid "Lithuania"
-msgstr "Литванија"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ЛукÑембург"
-
-#. 428
-msgid "Latvia"
-msgstr "Латвија"
-
-#. 434
-msgid "Libya"
-msgstr "Либија"
-
-#. 504
-msgid "Morocco"
-msgstr "Мароко"
-
-#. 492
-msgid "Monaco"
-msgstr "Монако"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Молдавија, Република"
-
-#. 499
-msgid "Montenegro"
-msgstr "Црна Гора"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Свети Мартин (ФранцуÑки дел)"
-
-#. 450
-msgid "Madagascar"
-msgstr "МадагаÑкар"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Маршалови ОÑтрови"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Македонија"
-
-#. 466
-msgid "Mali"
-msgstr "Мали"
-
-#. 104
-msgid "Myanmar"
-msgstr "Мијанмар"
-
-#. 496
-msgid "Mongolia"
-msgstr "Монголија"
-
-#. 446
-msgid "Macao"
-msgstr "Макао"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Северни МаријанÑки оÑтрови"
-
-#. 474
-msgid "Martinique"
-msgstr "Мартиник"
-
-#. 478
-msgid "Mauritania"
-msgstr "Мавританија"
-
-#. 500
-msgid "Montserrat"
-msgstr "МонтÑерат"
-
-#. 470
-msgid "Malta"
-msgstr "Малта"
-
-#. 480
-msgid "Mauritius"
-msgstr "МаврициуÑ"
-
-#. 462
-msgid "Maldives"
-msgstr "Малдиви"
-
-#. 454
-msgid "Malawi"
-msgstr "Малави"
-
-#. 484
-msgid "Mexico"
-msgstr "МекÑико"
-
-#. 458
-msgid "Malaysia"
-msgstr "Малезија"
-
-#. 508
-msgid "Mozambique"
-msgstr "Мозамбик"
-
-#. 516
-msgid "Namibia"
-msgstr "Ðамибија"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Ðова Каледонија"
-
-#. 562
-msgid "Niger"
-msgstr "Ðигер"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Ðорфолк, ОÑтров"
-
-#. 566
-msgid "Nigeria"
-msgstr "Ðигерија"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Ðикарагва"
-
-#. 528
-msgid "Netherlands"
-msgstr "Холандија"
-
-#. 578
-msgid "Norway"
-msgstr "Ðорвешка"
-
-#. 524
-msgid "Nepal"
-msgstr "Ðепал"
-
-#. 520
-msgid "Nauru"
-msgstr "Ðауру"
-
-#. 570
-msgid "Niue"
-msgstr "Ðиуе"
-
-#. 554
-msgid "New Zealand"
-msgstr "Ðов Зеланд"
-
-#. 512
-msgid "Oman"
-msgstr "Оман"
-
-#. 591
-msgid "Panama"
-msgstr "Панама"
-
-#. 604
-msgid "Peru"
-msgstr "Перу"
-
-#. 258
-msgid "French Polynesia"
-msgstr "ФранцуÑка Полинезија"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Папуа Ðова Гвинеја"
-
-#. 608
-msgid "Philippines"
-msgstr "Филипини"
-
-#. 586
-msgid "Pakistan"
-msgstr "ПакиÑтан"
-
-#. 616
-msgid "Poland"
-msgstr "ПолÑка"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Свети Пјер и Микелон"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Питкерн"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Порто Рико"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "ПалеÑтинÑка територија, Окупирана"
-
-#. 620
-msgid "Portugal"
-msgstr "Португалија"
-
-#. 585
-msgid "Palau"
-msgstr "Палау"
-
-#. 600
-msgid "Paraguay"
-msgstr "Парагвај"
-
-#. 634
-msgid "Qatar"
-msgstr "Катар"
-
-#. 638
-msgid "Reunion"
-msgstr "Реунион"
-
-#. 642
-msgid "Romania"
-msgstr "Романија"
-
-#. 688
-msgid "Serbia"
-msgstr "Србија"
-
-#. 643
-msgid "Russian Federation"
-msgstr "РуÑка федерација"
-
-#. 646
-msgid "Rwanda"
-msgstr "Руанда"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "СаудиÑка Ðрабија"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "СоломонÑки ОÑтрови"
-
-#. 690
-msgid "Seychelles"
-msgstr "Сејшели"
-
-#. 736
-msgid "Sudan"
-msgstr "Судан"
-
-#. 752
-msgid "Sweden"
-msgstr "ШведÑка"
-
-#. 702
-msgid "Singapore"
-msgstr "Сингапур"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Света Елена"
-
-#. 705
-msgid "Slovenia"
-msgstr "Словенија"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Свалбард и Жан Мајен"
-
-#. 703
-msgid "Slovakia"
-msgstr "Словачка"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Сиера Леоне"
-
-#. 674
-msgid "San Marino"
-msgstr "Сан Марино"
-
-#. 686
-msgid "Senegal"
-msgstr "Сенегал"
-
-#. 706
-msgid "Somalia"
-msgstr "Сомалија"
-
-#. 740
-msgid "Suriname"
-msgstr "Суринам"
-
-#. 728
-msgid "South Sudan"
-msgstr "Јужен Ñудан"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Сао Томе и Принципе"
-
-#. 222
-msgid "El Salvador"
-msgstr "Ел Салвадор"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Свети Мартин (ХоландиÑки дел)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "СиријÑка ÐрапÑка Република"
-
-#. 748
-msgid "Swaziland"
-msgstr "Свазиленд"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "ОÑтрови Турк и КаикоÑ"
-
-#. 148
-msgid "Chad"
-msgstr "Чад"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "ФранцуÑки Јужни Територии"
-
-#. 768
-msgid "Togo"
-msgstr "Того"
-
-#. 764
-msgid "Thailand"
-msgstr "Тајланд"
-
-#. 762
-msgid "Tajikistan"
-msgstr "ТаџикиÑтан"
-
-#. 772
-msgid "Tokelau"
-msgstr "Токелау"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Тимор-ИÑточен"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "ТуркмениÑтан"
-
-#. 788
-msgid "Tunisia"
-msgstr "ТуниÑ"
-
-#. 776
-msgid "Tonga"
-msgstr "Тонга"
-
-#. 792
-msgid "Turkey"
-msgstr "Турција"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Тринидад и Тобаго"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Тувалу"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Тајван, КинеÑка провинција"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Танзанија, Обединета Република"
-
-#. 804
-msgid "Ukraine"
-msgstr "Украина"
-
-#. 800
-msgid "Uganda"
-msgstr "Уганда"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Соединетите Држави, Мали додатни оÑтрови на"
-
-#. 840
-msgid "United States"
-msgstr "Соединетите ÐмериканÑки Држави"
-
-#. 858
-msgid "Uruguay"
-msgstr "Уругвај"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "УзбекиÑтан"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Светата Столица (Ватикан, Град - Држава)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Свети ВинÑент и Гренадините"
-
-#. 862
-msgid "Venezuela"
-msgstr "Венецуела"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "ДевÑтвени ОÑтрови, БританÑки"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "ДевÑтвени ОÑтрови, СÐД"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Виетнам"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Вануату"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Ð’Ð°Ð»Ð¸Ñ Ð¸ Футуна"
-
-#. 882
-msgid "Samoa"
-msgstr "Самоа"
-
-#. 887
-msgid "Yemen"
-msgstr "Јемен"
-
-#. 175
-msgid "Mayotte"
-msgstr "Мајоти"
-
-#. 710
-msgid "South Africa"
-msgstr "Јужна Ðфрика"
-
-#. 894
-msgid "Zambia"
-msgstr "Замбија"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Зимбабве"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Ðепознато, додадете is_in тагови за овие градови"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-"Ðе е пронајден документ за конфигурација navit.xml, navit.xml.local\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Грешка при читањето на документот за конфигурирање '%s':%s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "КориÑти документ за конфигурирање '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Внатрешното иницирање не уÑпеа, иÑклучувам. Проверете ги предходните пораки "
-"за грешки.\n"
-
-msgid "unknown street"
-msgstr "непозната улица"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Ðеименувано возило"
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Точка на карта"
-
-msgid "Car"
-msgstr "Ðвтомобил"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Држава"
-
-msgid "Postal"
-msgstr "ПоштенÑка"
-
-msgid "Town"
-msgstr "Град"
-
-msgid "District"
-msgstr "ОблаÑÑ‚"
-
-msgid "Street"
-msgstr "Улица"
-
-msgid "Number"
-msgstr "Број"
-
-msgid "Enter Destination"
-msgstr "ВнеÑете одредиште"
-
-msgid "Zip Code"
-msgstr "ПоштенÑки број"
-
-msgid "City"
-msgstr "Град"
-
-msgid "District/Township"
-msgstr "Општина"
-
-msgid "Map"
-msgstr "Карта"
-
-msgid "Bookmark"
-msgstr "Омилено меÑто"
-
-msgid "Destination"
-msgstr "Одредиште"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Екран"
-
-msgid "_Route"
-msgstr "Рута"
-
-msgid "_Former Destinations"
-msgstr "Претходни одредишта"
-
-msgid "_Bookmarks"
-msgstr "Омилени меÑта"
-
-msgid "_Map"
-msgstr "Карта"
-
-msgid "_Layout"
-msgstr "Изглед"
-
-msgid "_Projection"
-msgstr "Проекција"
-
-msgid "_Vehicle"
-msgstr "Возило"
-
-msgid "Zoom_Out"
-msgstr "Ðамали"
-
-msgid "Decrease zoom level"
-msgstr "Ðамали го зум нивото"
-
-msgid "Zoom_In"
-msgstr "Зголеми"
-
-msgid "Increase zoom level"
-msgstr "Зголеми го зум нивото"
-
-msgid "_Recalculate"
-msgstr "Повторно преÑметај"
-
-msgid "Redraw map"
-msgstr "Прецртај ја мапата"
-
-msgid "_Info"
-msgstr "Инфо"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Го отвара прозорот за барање на адреÑа"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Запирање на навигација"
-
-msgid "Test"
-msgstr "ТеÑÑ‚"
-
-msgid "_Quit"
-msgstr "_Заврши"
-
-msgid "Quit the application"
-msgstr "Затвори ја апликацијата"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Придржувај Ñе до патот"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr "Патна книга"
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr "Ðвто-зголемување"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "Ðа цел екран"
-
-msgid "Data"
-msgstr "Податоци"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "С"
-
-msgid "NE"
-msgstr "СИ"
-
-msgid "E"
-msgstr "И"
-
-msgid "SE"
-msgstr "ЈИ"
-
-msgid "S"
-msgstr "Ј"
-
-msgid "SW"
-msgstr "ЈЗ"
-
-msgid "W"
-msgstr "З"
-
-msgid "NW"
-msgstr "СЗ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ðе"
-
-msgid "2D"
-msgstr "2Д"
-
-msgid "3D"
-msgstr "3Д"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Рута %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Рута 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Помош"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Види во пребарувач"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Улици"
-
-msgid "House numbers"
-msgstr "Куќни броеви"
-
-msgid "View Attributes"
-msgstr "Види атрибути"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "ИнтереÑни точки"
-
-msgid "View on map"
-msgstr "Види на карта"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "ОтÑечи обележувач"
-
-msgid "Copy Bookmark"
-msgstr "Копирај обележувач"
-
-msgid "Rename Bookmark"
-msgstr "Преименувај обележувач"
-
-msgid "Paste Bookmark"
-msgstr "Вметни обележувач"
-
-msgid "Delete Bookmark"
-msgstr "Избриши обележувач"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Омилени меÑта"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Вметни обележувач"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "ИнтереÑно меÑто %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Покажи ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° Ñателитите"
-
-msgid " Elevation "
-msgstr " Елевација "
-
-msgid " Azimuth "
-msgstr " Ðзимут "
-
-msgid "Show NMEA Data"
-msgstr "Покажи NMEA податоци"
-
-msgid "car"
-msgstr "автомобил"
-
-msgid "bike"
-msgstr "велоÑипед"
-
-msgid "pedestrian"
-msgstr "пешак"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Тековен профил: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Смени профил во: %s"
-
-msgid "Set as active"
-msgstr "ПоÑтави како активен"
-
-msgid "Show Satellite status"
-msgstr "Покажи ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° Ñателитите"
-
-msgid "Show NMEA data"
-msgstr "Покажи NMEA податоци"
-
-msgid "Add Bookmark"
-msgstr "Додај обележувач"
-
-msgid "Rename"
-msgstr "Преименувај"
-
-msgid "About Navit"
-msgstr "За Navit"
-
-#. Authors
-msgid "By"
-msgstr "Од"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "И целиот Navit тим"
-
-msgid "members and contributors."
-msgstr "членови и придонеÑувачи"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Возило"
-
-msgid "Rules"
-msgstr "Правила"
-
-msgid "Lock on road"
-msgstr "Придржувај Ñе на патот"
-
-msgid "Northing"
-msgstr "Северен правец"
-
-msgid "Map follows Vehicle"
-msgstr "Картата го Ñледи возилото"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Изгледи"
-
-msgid "Layout"
-msgstr "Изглед"
-
-msgid "Height Profile"
-msgstr "ВиÑинÑки профил"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "ОбјаÑнување за патот"
-
-msgid "Show Locale"
-msgstr "Прикажи јазично подеÑување"
-
-msgid "Former Destinations"
-msgstr "Претходни одредишта"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Порака"
-
-msgid "Back"
-msgstr "Ðазад"
-
-msgid "Back to map"
-msgstr "Врати Ñе на картата"
-
-msgid "Main Menu"
-msgstr "Главно мени"
-
-msgid "House number"
-msgstr "Куќен број"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Позиција на возило"
-
-msgid "Main menu"
-msgstr "Главно мени"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Покажи ја\n"
-"Картата"
-
-msgid "Settings"
-msgstr "ПоÑтавувања"
-
-msgid "Tools"
-msgstr "Ðлатки"
-
-msgid "Route"
-msgstr "Рута"
-
-msgid "About"
-msgstr "За"
-
-msgid "Quit"
-msgstr "Ðапушти"
-
-msgid "Actions"
-msgstr "Ðкции"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Сопри ја\n"
-"Ðавигацијата"
-
-msgid "Display"
-msgstr "Екран"
-
-msgid "Fullscreen"
-msgstr "Ðа цел екран"
-
-msgid "Window Mode"
-msgstr "Работи во прозорец"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "ОпиÑ"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "коњ"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "потоа излегувате од кружен тек на %1$s %2$s"
diff --git a/po/ml.po.in b/po/ml.po.in
deleted file mode 100644
index 3658437a3..000000000
--- a/po/ml.po.in
+++ /dev/null
@@ -1,2766 +0,0 @@
-# Malayalam translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Faju https://launchpad.net/~gotoarunk
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Sunil K https://launchpad.net/~sunilk
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:59+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Malayalam <ml@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: ml\n"
-
-msgid "Running from source directory\n"
-msgstr "സോരàµâ€à´¸àµ ഡൈരകàµà´Ÿà´±à´¿à´¯à´¿à´²àµ നിനàµà´¨àµà´‚ à´ªàµà´°à´µà´°àµà´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "'%s'-നെ '%s' ആയി à´•àµà´°à´®àµ€à´•à´°à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "പൂജàµà´¯à´‚"
-
-msgid "first"
-msgstr "à´’à´¨àµà´¨à´¾à´®à´¤àµà´¤àµ‡"
-
-msgid "second"
-msgstr "à´°à´£àµà´Ÿà´¾à´®à´¤àµà´¤àµ†"
-
-msgid "third"
-msgstr "മൂനàµà´¨à´¾à´®à´¤àµà´¤àµ†"
-
-msgid "fourth"
-msgstr "നാലാമതàµà´¤àµ†"
-
-msgid "fifth"
-msgstr "à´…à´žàµà´šà´¾à´®à´¤àµà´¤àµ†"
-
-msgid "sixth"
-msgstr "ആറാമതàµà´¤àµ†"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "പൂജàµà´¯à´‚ വഴി"
-
-msgid "first exit"
-msgstr "à´’à´¨àµà´¨à´¾à´®à´¤àµà´¤àµ‡ വഴി"
-
-msgid "second exit"
-msgstr "à´°à´£àµà´Ÿà´¾à´®à´¤àµà´¤àµ‡ വഴി"
-
-msgid "third exit"
-msgstr "മൂനàµà´¨à´¾à´®à´¤àµà´¤àµ† വഴി"
-
-msgid "fourth exit"
-msgstr "നാലമതàµà´¤àµ‡ വഴി"
-
-msgid "fifth exit"
-msgstr "à´…à´žàµà´šà´¾à´®à´¤àµà´¤àµ† വഴി"
-
-msgid "sixth exit"
-msgstr "ആറാമതàµà´¤àµ† വഴി"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d à´…à´Ÿà´¿"
-
-#, c-format
-msgid "in %d feet"
-msgstr "%d അടിയിലàµâ€"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d മൈലàµâ€"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "%d.%d മൈലിലàµâ€"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "ഒരൠമൈലàµâ€"
-msgstr[1] "%d മൈലàµâ€"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "ഒരൠമൈലിലàµâ€"
-msgstr[1] "%d മൈലിലàµâ€"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d മീറàµà´±à´°àµâ€"
-
-#, c-format
-msgid "in %d meters"
-msgstr "%d മീറàµà´±à´±à´¿à´²àµâ€"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d കിലോമീറàµà´±à´°àµâ€"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d.%d കിലോമീറàµà´±à´±à´¿à´²àµâ€"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "ഒരൠകിലോമീറàµà´±à´°àµâ€"
-msgstr[1] "%d കിലോമീറàµà´±à´°àµâ€"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "ഒരൠകിലോമീറàµà´±à´±à´¿à´²àµâ€"
-msgstr[1] "%d കിലോമീറàµà´±à´±à´¿à´²àµâ€"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sà´•à´´à´¿à´žàµà´žàµ %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sà´•à´´à´¿à´žàµà´žàµ %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sà´•à´´à´¿à´žàµà´žàµ %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sà´•à´´à´¿à´žàµà´žàµ %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s-à´²àµâ€ %s -ലേകàµà´•àµ തിരിയàµà´•"
-
-msgid "When possible, please turn around"
-msgstr "സാധികàµà´•àµà´¨àµà´¨à´¿à´Ÿà´¤àµà´¤àµ വചàµà´šàµ,തിരിചàµà´šàµ പോവàµà´•"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "à´ˆ വഴിയിലàµà´Ÿàµ† à´…à´Ÿàµà´¤àµà´¤ %s പോവàµà´•"
-
-msgid "Enter the roundabout soon"
-msgstr "റൗണàµà´Ÿà´¾à´¨à´¯à´¿à´²àµ‡à´•àµà´•àµ ഉടനെ കയറàµà´•"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "%1$s-ലൂടെ റൗണàµà´Ÿà´¾à´¨à´¯à´¿à´²àµâ€ നിനàµà´¨àµà´‚ à´ªàµà´±à´¤àµà´¤àµ പോവàµà´•à´¾ %2$s"
-
-msgid "soon"
-msgstr "à´…à´²àµà´ªà´¸à´®à´¯à´¤àµà´¤à´¿à´¨àµà´³àµà´³à´¿à´²àµâ€"
-
-msgid "now"
-msgstr "ഇപàµà´ªàµ‹à´³àµâ€"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "വലതàµà´¤àµ‹à´Ÿàµà´Ÿàµ"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "ഇടതàµà´¤àµ‹à´Ÿàµà´Ÿàµ"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "ചെറàµà´¤à´¾à´¯àµ "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "നനàµà´¨à´¾à´¯à´¿ "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "%2$s %1$s-മതàµà´¤àµ† പാത à´Žà´Ÿàµà´•àµà´•àµà´•"
-
-#, c-format
-msgid "after %i roads"
-msgstr "%i വഴികൾകàµà´•àµ ശേഷം"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "%4$s ലേകàµà´•àµ %3$s %2$s %1$s തിരിയàµà´•"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "à´…à´ªàµà´ªàµ‹à´³àµâ€ നിങàµà´™à´³àµâ€ ലകàµà´·àµà´¯à´¤àµà´¤à´¿à´²àµ†à´¤àµà´¤àµà´‚"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "നിങàµà´™à´³àµâ€ %s ലകàµà´·àµà´¯à´¤àµà´¤à´¿à´²àµ†à´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "à´ªàµà´±à´¤àµà´¤àµ‡à´•àµà´•àµ"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "à´¸àµà´¥à´¾à´¨à´‚"
-
-msgid "Command"
-msgstr "നിരàµâ€à´¦àµà´¦àµ‡à´¶à´‚"
-
-msgid "Length"
-msgstr "ദൂരം"
-
-msgid "km"
-msgstr "കിലോമീറàµà´±àµ†à´°àµâ€"
-
-msgid "m"
-msgstr "മീറàµà´±à´°àµâ€"
-
-msgid "Time"
-msgstr "സമയം"
-
-msgid "Destination Length"
-msgstr "ലകàµà´·àµà´¯à´¤àµà´¤à´¿à´²àµ‡à´•àµà´•àµà´³àµà´³ ദൂരം"
-
-msgid "Destination Time"
-msgstr "ലകàµà´·àµà´¯à´¤àµà´¤à´¿à´²àµ‡à´•àµà´•àµà´³àµà´³ സമയം"
-
-msgid "Roadbook"
-msgstr "ഭൂപട à´ªàµà´¸àµà´¤à´•à´‚"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "%d വഴിതàµà´¤à´¿à´°à´¿à´µàµ"
-
-msgid "Visit before..."
-msgstr "à´®àµà´¨àµà´ªàµ† സനàµà´¦à´°àµâ€à´¶à´¿à´•àµà´•àµà´• ..."
-
-msgid "Set as position"
-msgstr "à´¸àµà´¥à´¾à´¨à´®à´¾à´¯à´¿ നിശàµà´šà´¯à´¿à´•àµà´•àµà´•"
-
-msgid "Set as destination"
-msgstr "ഉദàµà´¦à´¿à´·àµà´Ÿà´¸àµà´¥à´¾à´¨à´®à´¾à´¯à´¿ ഉറപàµà´ªà´¿à´•àµà´•àµà´•"
-
-msgid "Add as bookmark"
-msgstr "à´¬àµà´•àµà´•àµà´®à´¾à´°àµâ€à´•àµ ചെയàµà´¯àµà´•"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "à´¸àµà´¥à´¾à´¨à´‚ 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "à´¸àµà´•àµà´°àµ€à´¨àµ à´¸àµà´¥à´¾à´¨à´‚ %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "à´…à´¨àµâ€à´¡àµ‹à´±à´¾"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "à´¯àµà´£àµˆà´±àµà´±à´¡àµ അറബൠഎമിറേറàµà´±àµà´¸àµ"
-
-#. 004
-msgid "Afghanistan"
-msgstr "à´…à´«àµà´—ാനിസàµà´¥à´¾à´¨àµâ€"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "ആനàµà´±à´¿à´—àµà´µà´¾ ബാരàµâ€à´¬àµà´¡"
-
-#. 660
-msgid "Anguilla"
-msgstr "ആനàµâ€à´—àµà´µà´¿à´²"
-
-#. 008
-msgid "Albania"
-msgstr "à´…à´²àµâ€à´¬àµ‡à´¨à´¿à´¯"
-
-#. 051
-msgid "Armenia"
-msgstr "à´…à´°àµâ€à´®àµ‡à´¨à´¿à´¯"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "നെതരàµâ€à´²à´¨àµâ€à´¡àµà´¸àµ ആനàµà´±à´¿à´²à´¸àµ"
-
-#. 024
-msgid "Angola"
-msgstr "അംഗോളാ"
-
-#. 010
-msgid "Antarctica"
-msgstr "à´…à´¨àµà´±à´¾à´°àµâ€à´Ÿàµà´Ÿà´¿à´•àµà´•"
-
-#. 032
-msgid "Argentina"
-msgstr "à´…à´°àµâ€à´œà´¨àµà´±àµ€à´¨"
-
-#. 016
-msgid "American Samoa"
-msgstr "അമേരികàµà´•à´¨àµâ€ സമോവ"
-
-#. 040
-msgid "Austria"
-msgstr "à´“à´¸àµà´Ÿàµà´°à´¿à´¯à´¾"
-
-#. 036
-msgid "Australia"
-msgstr "à´“à´¸àµà´Ÿàµà´°àµ‡à´²à´¿à´¯"
-
-#. 533
-msgid "Aruba"
-msgstr "അറൂബ"
-
-#. 248
-msgid "Aland Islands"
-msgstr "ആലനàµà´¡àµ ദീപàµà´•à´³àµâ€"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "അസ‌രàµâ€à´¬àµˆà´œà´¾à´¨àµâ€"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "ബോസàµà´¨à´¿à´¯-ഹെരàµâ€à´¸àµ†à´—ോവിന"
-
-#. 052
-msgid "Barbados"
-msgstr "ബാരàµâ€à´¬à´¡àµ‹à´¸àµ"
-
-#. 050
-msgid "Bangladesh"
-msgstr "ബംഗàµà´²à´¾à´¦àµ‡à´¶àµ"
-
-#. 056
-msgid "Belgium"
-msgstr "ബെൽജിയം"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "ബർകàµà´•à´¿à´¨à´¾ ഫാസോ"
-
-#. 100
-msgid "Bulgaria"
-msgstr "ബളàµâ€à´—േറിയ"
-
-#. 048
-msgid "Bahrain"
-msgstr "ബഹറിനàµâ€"
-
-#. 108
-msgid "Burundi"
-msgstr "ബറàµà´£àµà´Ÿà´¿"
-
-#. 204
-msgid "Benin"
-msgstr "ബെനിനàµâ€"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "സെനàµà´±àµ ബരàµâ€à´¤àµ†à´²àµ†à´®à´¿"
-
-#. 060
-msgid "Bermuda"
-msgstr "ബെർമàµà´¡"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "à´¬àµà´°àµ‚ണെയൠദാറàµà´¸àµà´¸à´²à´¾à´‚"
-
-#. 068
-msgid "Bolivia"
-msgstr "ബൊളീവിയ"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "ബോനെയരàµ, സെനàµà´±àµ à´Žà´·àµà´Ÿà´¾à´¤àµà´¯àµ‚സൠസാബ"
-
-#. 076
-msgid "Brazil"
-msgstr "à´¬àµà´°à´¸àµ€àµ½"
-
-#. 044
-msgid "Bahamas"
-msgstr "ബഹാമാസàµ"
-
-#. 064
-msgid "Bhutan"
-msgstr "ഭൂടàµà´Ÿà´¾à´¨àµâ€"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "ബൌവെ à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 072
-msgid "Botswana"
-msgstr "ബോടàµà´¸àµà´µà´¾à´¨"
-
-#. 112
-msgid "Belarus"
-msgstr "ബെലാറസàµ"
-
-#. 084
-msgid "Belize"
-msgstr "ബെലീസàµ"
-
-#. 124
-msgid "Canada"
-msgstr "കാനഡ"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "കോകàµà´•àµ‹à´¸àµ (കീലിങàµ) à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "കോങàµà´•àµ‹ ( ഡിമോകàµà´°à´¾à´±àµà´±à´¿à´•àµà´•àµ റിപബàµà´²à´¿à´•àµà´•àµ )"
-
-#. 140
-msgid "Central African Republic"
-msgstr "മദàµà´§àµà´¯ ആഫàµà´°à´¿à´•àµà´•àµ» റിപàµà´ªà´¬àµà´²à´¿à´•àµà´•àµ"
-
-#. 178
-msgid "Congo"
-msgstr "കോംഗോ"
-
-#. 756
-msgid "Switzerland"
-msgstr "à´¸àµà´µà´¿à´±àµà´±àµà´¸â€Œà´°àµâ€à´²à´¾à´¨àµâ€à´¡àµ"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "കോടàµà´Ÿàµ‡ ഡെലàµâ€â€à´µàµ‹à´¯à´¿à´°àµâ€"
-
-#. 184
-msgid "Cook Islands"
-msgstr "à´•àµà´•àµà´•àµ à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 152
-msgid "Chile"
-msgstr "ചിലി"
-
-#. 120
-msgid "Cameroon"
-msgstr "കാമറൂൺ"
-
-#. 156
-msgid "China"
-msgstr "ചൈന"
-
-#. 170
-msgid "Colombia"
-msgstr "കൊളംബിയ‌"
-
-#. 188
-msgid "Costa Rica"
-msgstr "കോസàµà´±àµà´± റീകàµà´•"
-
-#. 192
-msgid "Cuba"
-msgstr "à´•àµà´¯àµ‚à´¬"
-
-#. 132
-msgid "Cape Verde"
-msgstr "കേപൠവെരàµâ€à´¡àµ†"
-
-#. 531
-msgid "Curacao"
-msgstr "à´•àµà´±à´•àµà´•à´¾à´µàµŠ"
-
-#. 162
-msgid "Christmas Island"
-msgstr "à´•àµà´°à´¿à´¸àµà´¤àµà´®à´¸àµ à´¦àµà´µàµ€à´ªàµ"
-
-#. 196
-msgid "Cyprus"
-msgstr "സൈപàµà´°à´¸àµà´¸àµ"
-
-#. 203
-msgid "Czech Republic"
-msgstr "ചെകàµà´•àµâ€Œ റിപàµà´ªà´¬àµà´²à´¿à´•àµà´•àµâ€Œ"
-
-#. 276
-msgid "Germany"
-msgstr "ജരàµâ€à´®à´¨à´¿"
-
-#. 262
-msgid "Djibouti"
-msgstr "ജിബൂടàµà´Ÿà´¿"
-
-#. 208
-msgid "Denmark"
-msgstr "ഡെനàµà´®à´¾àµ¼à´•àµà´•àµ"
-
-#. 212
-msgid "Dominica"
-msgstr "‌ഡൊമിനികàµà´•"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "‌ഡൊമിനികàµà´•à´¨àµâ€ റിപബàµà´²à´¿à´•àµà´•àµ"
-
-#. 012
-msgid "Algeria"
-msgstr "à´…à´³àµâ€à´œàµ€à´°à´¿à´¯"
-
-#. 218
-msgid "Ecuador"
-msgstr "ഇകàµà´µà´¡àµ‹à´°àµâ€"
-
-#. 233
-msgid "Estonia"
-msgstr "à´Žà´¸àµà´±àµà´±àµ‹à´£à´¿à´¯"
-
-#. 818
-msgid "Egypt"
-msgstr "ഈജിപàµà´¤àµ"
-
-#. 732
-msgid "Western Sahara"
-msgstr "പശàµà´šà´¿à´® സഹാറ"
-
-#. 232
-msgid "Eritrea"
-msgstr "എറിടàµà´°à´¿à´¯"
-
-#. 724
-msgid "Spain"
-msgstr "à´¸àµà´ªàµ†à´¯à´¿à´¨àµâ€"
-
-#. 231
-msgid "Ethiopia"
-msgstr "à´Žà´¤àµà´¯àµ‹à´ªàµà´¯"
-
-#. 246
-msgid "Finland"
-msgstr "à´«à´¿à´¨àµâ€à´²à´¾à´¨àµà´±àµ"
-
-#. 242
-msgid "Fiji"
-msgstr "ഫിജി"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "ഫാകàµâ€à´²à´¾à´¨àµà´¡àµ à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€ (മാളàµâ€à´µà´¿à´¨à´¾à´¸àµ)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "മൈകàµà´°àµ‹à´¨àµ‡à´·àµà´¯"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "ഫാറോ à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 250
-msgid "France"
-msgstr "à´«àµà´°à´¾à´¨àµâ€à´¸àµ"
-
-#. 266
-msgid "Gabon"
-msgstr "ഗാബോണàµâ€"
-
-#. 826
-msgid "United Kingdom"
-msgstr "à´¯àµà´£àµˆà´±àµà´±à´¡àµ à´•à´¿à´™àµà´¡à´‚"
-
-#. 308
-msgid "Grenada"
-msgstr "à´—àµà´°à´¨à´¡"
-
-#. 268
-msgid "Georgia"
-msgstr "ജോരàµâ€à´œà´¿à´¯"
-
-#. 254
-msgid "French Guiana"
-msgstr "à´«àµà´°à´žàµà´šàµ ഗയാന"
-
-#. 831
-msgid "Guernsey"
-msgstr "ജേണàµâ€à´¸à´¿"
-
-#. 288
-msgid "Ghana"
-msgstr "ഘാന"
-
-#. 292
-msgid "Gibraltar"
-msgstr "ജിബàµà´°à´¾à´³àµâ€à´Ÿàµà´Ÿà´°àµâ€"
-
-#. 304
-msgid "Greenland"
-msgstr "à´—àµà´°àµ€à´¨àµâ€à´²à´¾à´¨àµâ€à´¡àµ"
-
-#. 270
-msgid "Gambia"
-msgstr "ഗാംബിയ"
-
-#. 324
-msgid "Guinea"
-msgstr "ഗിനിയ"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "à´—àµà´µà´¾à´¡àµ†à´²àµ‹à´ªàµ"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "ഇകàµà´µà´±àµà´±àµ‹à´±à´¿à´¯à´²àµâ€ ഗിനിയ"
-
-#. 300
-msgid "Greece"
-msgstr "à´—àµà´°àµ€à´¸àµ"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "തെകàµà´•à´¨àµâ€ ജോരàµâ€à´œà´¿à´¯ തെകàµà´•à´¨àµâ€ സാനàµâ€à´¡àµâ€Œà´µà´¿à´šàµà´šàµ à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 320
-msgid "Guatemala"
-msgstr "à´—àµà´µà´¾à´Ÿàµà´Ÿà´¿à´®à´¾à´²"
-
-#. 316
-msgid "Guam"
-msgstr "à´—àµà´µà´¾à´‚"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "ഗിനിയ-ബിസàµà´¸à´¾à´µàµ"
-
-#. 328
-msgid "Guyana"
-msgstr "ഗയാന"
-
-#. 344
-msgid "Hong Kong"
-msgstr "ഹോങàµà´•àµ‹à´™àµ"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "ഹെരàµâ€à´¡àµ à´¦àµà´µàµ€à´ªàµà´‚ മകàµà´¡àµŠà´£à´¾à´³àµâ€à´¡àµ à´¦àµà´µàµ€à´ªàµà´•à´³àµà´‚"
-
-#. 340
-msgid "Honduras"
-msgstr "ഹോണàµà´Ÿàµà´±à´¾à´¸àµ"
-
-#. 191
-msgid "Croatia"
-msgstr "à´•àµà´°àµ‹à´¯àµ‡à´·àµà´¯"
-
-#. 332
-msgid "Haiti"
-msgstr "ഹെയàµâ€Œà´¤à´¿"
-
-#. 348
-msgid "Hungary"
-msgstr "ഹംഗറി"
-
-#. 360
-msgid "Indonesia"
-msgstr "ഇനàµà´¤àµ‹à´¨àµ‡à´·àµà´¯"
-
-#. 372
-msgid "Ireland"
-msgstr "അയർലണàµà´Ÿàµ"
-
-#. 376
-msgid "Israel"
-msgstr "ഇസàµà´°à´¯àµ‡àµ½"
-
-#. 833
-msgid "Isle of Man"
-msgstr "à´à´²àµâ€ ഓഫൠമാനàµâ€"
-
-#. 356
-msgid "India"
-msgstr "ഇനàµà´¤àµà´¯"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "à´¬àµà´°à´¿à´Ÿàµà´Ÿàµ€à´·àµ ഇനàµà´¤àµà´¯à´¨àµâ€ à´“à´·àµà´¯à´¨àµâ€ ടെറിടàµà´Ÿà´±à´¿"
-
-#. 368
-msgid "Iraq"
-msgstr "ഇറാഖàµâ€Œ"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "ഇറാനàµâ€, ഇസàµà´²à´¾à´®à´¿à´•àµ റിപàµà´ªà´¬àµà´²à´¿à´•àµ à´“à´«àµ"
-
-#. 352
-msgid "Iceland"
-msgstr "à´à´¸àµâ€Œà´²à´¾à´¨àµà´±àµ"
-
-#. 380
-msgid "Italy"
-msgstr "ഇറàµà´±à´²à´¿â€Œ"
-
-#. 832
-msgid "Jersey"
-msgstr "ജേരàµâ€à´¸à´¿"
-
-#. 388
-msgid "Jamaica"
-msgstr "ജമൈകàµà´•"
-
-#. 400
-msgid "Jordan"
-msgstr "ജോരàµâ€à´¦à´¾à´¨àµâ€"
-
-#. 392
-msgid "Japan"
-msgstr "ജപàµà´ªà´¾àµ»"
-
-#. 404
-msgid "Kenya"
-msgstr "കെനിയ"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "കിർഗàµà´—à´¿à´¸àµà´¥à´¾àµ»"
-
-#. 116
-msgid "Cambodia"
-msgstr "à´•à´®àµà´ªàµ‹à´¡à´¿à´¯"
-
-#. 296
-msgid "Kiribati"
-msgstr "കിരിബാറàµà´±à´¿"
-
-#. 174
-msgid "Comoros"
-msgstr "കൊമോറോസàµ"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "സെയിനàµà´±àµ à´•à´¿à´±àµà´±àµà´¸àµà´‚ നെവിസàµà´‚"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "ഉതàµà´¤à´° കൊറിയ"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "ദകàµà´·à´¿à´£ കൊറിയ"
-
-#. 414
-msgid "Kuwait"
-msgstr "à´•àµà´µàµˆà´±àµà´±àµâ€Œ"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "കേയàµà´®à´¾à´¨àµâ€ à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "കസാഖിസàµà´¥à´¾à´¨àµâ€"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "ലാവോസàµ"
-
-#. 422
-msgid "Lebanon"
-msgstr "ലെബനനàµâ€"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "സെയàµà´¨àµà´±àµ ലൂസിയ"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "ലീചàµà´šàµ†à´¨àµâ€à´¸àµà´±àµà´±àµ€à´¨àµâ€"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "à´¶àµà´°àµ€à´²à´™àµà´•"
-
-#. 430
-msgid "Liberia"
-msgstr "ലൈബീരിയ"
-
-#. 426
-msgid "Lesotho"
-msgstr "ലെസോതàµà´¤àµ‹"
-
-#. 440
-msgid "Lithuania"
-msgstr "ലിതàµà´µà´¾à´¨à´¿à´¯"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ലകàµà´¸à´‚ബർഗàµ"
-
-#. 428
-msgid "Latvia"
-msgstr "ലാതàµâ€Œà´µà´¿à´¯"
-
-#. 434
-msgid "Libya"
-msgstr "ലിബിയ"
-
-#. 504
-msgid "Morocco"
-msgstr "മൊറോകàµà´•àµ‹"
-
-#. 492
-msgid "Monaco"
-msgstr "മൊണാകàµà´•àµ‹"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "മോളàµâ€à´¡àµ‹à´µ"
-
-#. 499
-msgid "Montenegro"
-msgstr "മോണàµà´Ÿà´¿à´¨àµ†à´—àµà´°àµ‹"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "സെയിനàµà´±àµ മാരàµâ€à´Ÿàµà´Ÿà´¿à´¨àµâ€ (à´«àµà´°à´žàµà´šàµ ഭാഗം)"
-
-#. 450
-msgid "Madagascar"
-msgstr "മഡഗാസàµà´•à´°àµâ€"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "മാരàµâ€à´·à´²àµâ€ à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "മാസിഡോണിയ (പഴയ യൂകൊസàµà´³à´¾à´µà´¿à´¯)"
-
-#. 466
-msgid "Mali"
-msgstr "മാലി"
-
-#. 104
-msgid "Myanmar"
-msgstr "à´®àµà´¯à´¾à´¨àµâ€à´®à´°àµâ€"
-
-#. 496
-msgid "Mongolia"
-msgstr "മംഗോളിയ"
-
-#. 446
-msgid "Macao"
-msgstr "മാകàµà´•à´¾à´µàµ‹"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "വടകàµà´•à´¨àµâ€ മരിയാന à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 474
-msgid "Martinique"
-msgstr "മാരàµà´Ÿàµà´Ÿà´¿à´¨à´¿à´•àµà´•àµ"
-
-#. 478
-msgid "Mauritania"
-msgstr "മൌറിറàµà´±à´¾à´¨à´¿à´¯"
-
-#. 500
-msgid "Montserrat"
-msgstr "മോണàµà´Ÿàµà´¸àµ†à´±à´¾à´±àµà´±àµ"
-
-#. 470
-msgid "Malta"
-msgstr "മാളàµâ€à´Ÿàµà´Ÿ"
-
-#. 480
-msgid "Mauritius"
-msgstr "മൗറീഷàµà´¯à´¸àµ"
-
-#. 462
-msgid "Maldives"
-msgstr "മാലിദàµà´µàµ€à´ªàµ"
-
-#. 454
-msgid "Malawi"
-msgstr "മലാവി"
-
-#. 484
-msgid "Mexico"
-msgstr "മെകàµà´¸à´¿à´•àµà´•àµ‹"
-
-#. 458
-msgid "Malaysia"
-msgstr "മലേഷàµà´¯"
-
-#. 508
-msgid "Mozambique"
-msgstr "മൊസാംബികàµà´•àµ"
-
-#. 516
-msgid "Namibia"
-msgstr "നമീബിയ"
-
-#. 540
-msgid "New Caledonia"
-msgstr "à´¨àµà´¯àµ‚ കാലിഡോണിയാ"
-
-#. 562
-msgid "Niger"
-msgstr "നൈജരàµâ€"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "നോരàµâ€à´«àµ‹à´•àµà´•àµ à´¦àµà´µàµ€à´ªàµàµ"
-
-#. 566
-msgid "Nigeria"
-msgstr "നൈജീരിയ"
-
-#. 558
-msgid "Nicaragua"
-msgstr "നികàµà´•à´°à´¾à´—àµà´µ"
-
-#. 528
-msgid "Netherlands"
-msgstr "നെതരàµâ€à´²à´¾à´¨àµà´±àµà´¸àµ ( ഹോളണàµà´Ÿàµ )"
-
-#. 578
-msgid "Norway"
-msgstr "നോർവെ"
-
-#. 524
-msgid "Nepal"
-msgstr "നേപàµà´ªà´¾à´³àµâ€"
-
-#. 520
-msgid "Nauru"
-msgstr "നൌറàµ"
-
-#. 570
-msgid "Niue"
-msgstr "നിയൂ"
-
-#. 554
-msgid "New Zealand"
-msgstr "à´¨àµà´¯àµ‚സീലൻഡàµ"
-
-#. 512
-msgid "Oman"
-msgstr "ഒമാനàµâ€"
-
-#. 591
-msgid "Panama"
-msgstr "പനാമ"
-
-#. 604
-msgid "Peru"
-msgstr "പെറàµ"
-
-#. 258
-msgid "French Polynesia"
-msgstr "à´«àµà´°à´žàµà´šàµ പോളിനേഷàµà´¯"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "പപàµà´µ à´¨àµà´¯àµ‚ ഗിനിയ"
-
-#. 608
-msgid "Philippines"
-msgstr "ഫിലിപàµà´ªàµ€à´¨àµâ€à´¸àµ"
-
-#. 586
-msgid "Pakistan"
-msgstr "പാകàµà´•à´¿à´¸àµà´¥à´¾à´¨àµâ€"
-
-#. 616
-msgid "Poland"
-msgstr "പോളണàµà´Ÿàµ"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "സെയിനàµà´±àµ പിയറി ആനàµâ€à´¡àµ മികàµà´µà´¿à´²à´£àµâ€"
-
-#. 612
-msgid "Pitcairn"
-msgstr "പിറàµà´±àµà´•àµ†à´¯à´¿à´¨àµâ€"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "à´ªàµà´¯àµ‚à´°àµâ€à´Ÿàµà´Ÿàµ‹ റികോ"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "പാലസàµà´¤àµ€à´¨àµâ€"
-
-#. 620
-msgid "Portugal"
-msgstr "പോ‌രàµâ€à´šàµà´šàµà´—à´²àµâ€"
-
-#. 585
-msgid "Palau"
-msgstr "പലാവàµ"
-
-#. 600
-msgid "Paraguay"
-msgstr "പരാഗàµà´µàµ†"
-
-#. 634
-msgid "Qatar"
-msgstr "à´–à´¤àµà´¤â€Œà´°àµâ€â€"
-
-#. 638
-msgid "Reunion"
-msgstr "റീയൂണിയനàµâ€"
-
-#. 642
-msgid "Romania"
-msgstr "റൊമേനിയ"
-
-#. 688
-msgid "Serbia"
-msgstr "സെർബിയ"
-
-#. 643
-msgid "Russian Federation"
-msgstr "റഷàµà´¯à´¨àµâ€ ഫെഡറേഷനàµâ€"
-
-#. 646
-msgid "Rwanda"
-msgstr "à´±àµà´µà´¾à´£àµà´Ÿ"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "സൗദി അറേബàµà´¯"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "സോളമൻ à´¦àµà´µàµ€à´ªàµà´•àµ¾"
-
-#. 690
-msgid "Seychelles"
-msgstr "സെയàµâ€Œà´·àµ†àµ½à´¸àµ"
-
-#. 736
-msgid "Sudan"
-msgstr "à´¸àµà´¡à´¾àµ»"
-
-#. 752
-msgid "Sweden"
-msgstr "à´¸àµà´µàµ€à´¡àµ»"
-
-#. 702
-msgid "Singapore"
-msgstr "സിംഗപàµà´ªàµ‚ർ"
-
-#. 654
-msgid "Saint Helena"
-msgstr "സെയിനàµà´±àµ ഹെലേന"
-
-#. 705
-msgid "Slovenia"
-msgstr "à´¸àµà´²àµ‹à´µàµ‡à´¨à´¿à´¯"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "à´¸àµà´µà´¾à´²àµâ€à´¬à´¾à´°àµâ€à´¡àµà´‚ ജാനàµâ€ മായെനàµà´‚"
-
-#. 703
-msgid "Slovakia"
-msgstr "à´¸àµà´²àµ‹à´µà´¾à´•àµà´•àµà´¯"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "സിയറ ലിയോണàµâ€"
-
-#. 674
-msgid "San Marino"
-msgstr "സാനàµâ€ മരീനൊ"
-
-#. 686
-msgid "Senegal"
-msgstr "സെനഗലàµâ€"
-
-#. 706
-msgid "Somalia"
-msgstr "സോമാലിയ"
-
-#. 740
-msgid "Suriname"
-msgstr "à´¸àµà´°à´¿à´¨à´¾à´‚"
-
-#. 728
-msgid "South Sudan"
-msgstr "തെകàµà´•à´¨àµâ€ à´¸àµà´¡à´¾à´¨àµâ€"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "സാവോ ടോമàµà´‚ à´ªàµà´°à´¿à´¨àµâ€à´¸à´¿à´ªàµà´ªà´¿à´¯àµà´‚"
-
-#. 222
-msgid "El Salvador"
-msgstr "എൽ സാൽവദോർ"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "സെനàµà´±àµ മാരàµâ€à´Ÿàµà´Ÿà´¿à´¨àµâ€ (à´¡à´šàµà´šàµ)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "സിറിയനàµâ€ അറബൠറിപàµà´ªà´¬àµà´²à´¿à´•àµ"
-
-#. 748
-msgid "Swaziland"
-msgstr "à´¸àµà´µà´¾à´¸à´¿à´²à´¾à´¨àµà´±àµ"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "ടർകàµà´¸àµ-കൈകോസൠദàµà´µàµ€à´ªàµà´•àµ¾"
-
-#. 148
-msgid "Chad"
-msgstr "ഛാഡàµ"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "à´«àµà´°à´žàµà´šàµ തെകàµà´•à´¨àµâ€ à´ªàµà´°à´¦àµ‡à´¶à´™àµà´™à´³àµâ€"
-
-#. 768
-msgid "Togo"
-msgstr "ടോഗോ"
-
-#. 764
-msgid "Thailand"
-msgstr "തായàµâ€Œà´²à´¾à´¨àµà´±àµ"
-
-#. 762
-msgid "Tajikistan"
-msgstr "താജികàµà´•à´¿à´¸àµà´¥à´¾à´¨àµâ€"
-
-#. 772
-msgid "Tokelau"
-msgstr "ടോകàµâ€Œà´²à´µàµ"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "ടിമോരàµâ€-ലെസàµà´¤àµà´¤àµ‡"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "à´¤àµà´°àµâ€à´•àµâ€Œà´®àµ‡à´¨à´¿à´¸àµà´¥à´¾à´¨àµâ€"
-
-#. 788
-msgid "Tunisia"
-msgstr "à´Ÿàµà´£àµ€à´·àµà´¯"
-
-#. 776
-msgid "Tonga"
-msgstr "ടോംഗ"
-
-#. 792
-msgid "Turkey"
-msgstr "à´¤àµàµ¼à´•àµà´•à´¿"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "à´Ÿàµà´°à´¿à´¨à´¿à´¡à´¾à´¡àµà´‚ ടൊബാഗോയàµà´‚"
-
-#. 798
-msgid "Tuvalu"
-msgstr "à´Ÿàµà´µà´¾à´²àµ"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "തായàµâ€Œà´µà´¾à´¨àµâ€"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "ടാനàµâ€à´¸à´¾à´¨à´¿à´¯"
-
-#. 804
-msgid "Ukraine"
-msgstr "à´¯àµà´•àµà´°àµ†à´¯à´¿àµ»"
-
-#. 800
-msgid "Uganda"
-msgstr "ഉഗാണàµà´Ÿ"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "à´¯àµà´£àµˆà´±àµà´±à´¡àµ à´¸àµà´±àµà´±àµ‡à´±àµà´±àµà´¸à´¿à´²àµ† à´ªàµà´±à´¤àµà´¤àµàµ à´•à´¿à´Ÿà´•àµà´•àµà´¨àµà´¨ ചെറിയ à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 840
-msgid "United States"
-msgstr "ആമേരികàµà´•à´¨àµâ€ à´à´•àµà´¯à´¨à´¾à´Ÿàµà´•à´³àµâ€"
-
-#. 858
-msgid "Uruguay"
-msgstr "ഉറàµà´—àµà´µàµ‡"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "ഉസàµà´¬àµ†à´•àµà´•à´¿à´¸àµà´¥à´¾àµ»"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "വതàµà´¤à´¿à´•àµà´•à´¾à´¨àµâ€"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "സെയിനàµà´±àµ വിനàµà´¸à´¨àµà´±àµà´‚ à´—àµà´°à´¨à´¡àµˆà´¨àµà´¸àµà´‚"
-
-#. 862
-msgid "Venezuela"
-msgstr "വെനിസàµà´µàµ‡à´²"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "à´¬àµà´°à´¿à´Ÿàµà´Ÿàµ€à´·àµ വിരàµâ€à´œà´¿à´¨àµâ€ à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "à´¯àµ.à´Žà´¸àµ. വിരàµâ€à´œà´¿à´¨àµâ€ à´¦àµà´µàµ€à´ªàµà´•à´³àµâ€"
-
-#. 704
-msgid "Viet Nam"
-msgstr "വിയറàµà´±àµà´¨à´¾à´‚"
-
-#. 548
-msgid "Vanuatu"
-msgstr "വാനàµà´µà´¾à´Ÿàµà´Ÿàµ"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "വോളിസൠആനàµà´±àµ à´«àµà´Ÿàµà´Ÿà´¾à´¨"
-
-#. 882
-msgid "Samoa"
-msgstr "സമോവ"
-
-#. 887
-msgid "Yemen"
-msgstr "യെമൻ"
-
-#. 175
-msgid "Mayotte"
-msgstr "മയോടàµà´Ÿàµ†"
-
-#. 710
-msgid "South Africa"
-msgstr "ദകàµà´·à´¿à´£à´¾à´«àµà´°à´¿à´•àµà´•â€Œ"
-
-#. 894
-msgid "Zambia"
-msgstr "സാംബിയ"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "സിംബാബàµâ€Œà´µàµ†"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* അറിയിലàµà´², ദയവായി is_in ടാഗൠസിറàµà´±à´¿à´•à´³à´¿à´²àµâ€ ചേരàµâ€à´•àµà´•àµà´•"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "കോണàµâ€à´«à´¿à´—റേഷനàµâ€ ഫയലàµà´•à´³àµâ€ (navit.xml, navit.xml.local) കാണàµà´¨àµà´¨à´¿à´²àµà´²\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "'%s': %s കോണàµâ€à´«à´¿à´—റേഷനàµâ€ ഫയലàµâ€ വായികàµà´•à´¤àµà´¤à´¿à´²àµà´² \\n\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "%s കോണàµâ€à´«à´¿à´—റേഷനàµâ€ ഫയലàµâ€ ഉപയോഗികàµà´•àµà´¨àµà´¨àµ.\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "'%s' കോണàµâ€à´«à´¿à´—റേഷനàµâ€ ഫയലിലàµâ€ വിവരങàµà´™à´³àµâ€ ലഭàµà´¯à´®à´²àµà´²\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"പിഴവൠസംഭവിചàµà´šàµ. നിരàµâ€à´¤àµà´¤àµà´¨àµà´¨àµ. ദയവായൠമàµà´¨àµ സനàµà´¦àµ‡à´¶à´™àµà´™à´³àµâ€ പരിശോധികàµà´•àµà´•\n"
-
-msgid "unknown street"
-msgstr "പേരിലàµà´²à´¾à´¤àµà´¤ തെരàµà´µàµ"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "പേരിലàµà´²à´¾à´¤àµà´¤ വാഹനം"
-
-msgid "Failed to write bookmarks file"
-msgstr "ബൂകàµà´•àµà´®à´¾à´°àµâ€à´•àµà´•àµ à´Žà´´àµà´¤à´¾à´¨àµâ€ പറàµà´±àµà´¨àµà´¨à´¿à´²àµà´²à´¾"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "ഭൂപടസàµà´¥à´¾à´¨à´‚"
-
-msgid "Car"
-msgstr "കാരàµâ€"
-
-msgid "Iso2"
-msgstr "ഠഎസൠഓ 2 (ISO2)"
-
-msgid "Iso3"
-msgstr "à´. à´Žà´¸àµ. à´’ 3"
-
-msgid "Country"
-msgstr "രാജàµà´¯à´‚"
-
-msgid "Postal"
-msgstr "തപാലàµâ€"
-
-msgid "Town"
-msgstr "പടàµà´Ÿà´£à´‚"
-
-msgid "District"
-msgstr "ജിലàµà´²"
-
-msgid "Street"
-msgstr "തെരàµà´µàµ"
-
-msgid "Number"
-msgstr "à´…à´•àµà´•à´‚"
-
-msgid "Enter Destination"
-msgstr "ഉദàµà´¦à´¿à´·àµà´Ÿà´¸àµà´¥à´¾à´¨à´‚ ചേരàµâ€à´•àµà´•àµà´•"
-
-msgid "Zip Code"
-msgstr "പിനàµâ€ കോഡàµ"
-
-msgid "City"
-msgstr "നഗരം"
-
-msgid "District/Township"
-msgstr "ജിലàµà´²/ടൗണàµà´·à´¿à´ªàµà´ªàµ"
-
-msgid "Map"
-msgstr "മാപàµà´ªàµ"
-
-msgid "Bookmark"
-msgstr "സൂചിതസàµà´¥à´¾à´¨à´‚(bookmark)"
-
-msgid "Destination"
-msgstr "ലകàµà´·àµà´¯à´¸àµà´¥à´¾à´¨à´‚"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "à´ªàµà´°à´¦à´°àµâ€à´¶à´¨à´‚"
-
-msgid "_Route"
-msgstr "വഴി"
-
-msgid "_Former Destinations"
-msgstr "à´®àµà´¨àµâ€ ഉദàµà´¦à´¿à´·àµà´Ÿ à´¸àµà´¥à´¾à´¨à´™àµà´™à´³àµâ€"
-
-msgid "_Bookmarks"
-msgstr "_à´“à´°àµâ€à´®àµà´®à´•àµà´•àµà´±à´¿à´ªàµà´ªàµà´•à´³àµâ€"
-
-msgid "_Map"
-msgstr "_ഭൂപടം"
-
-msgid "_Layout"
-msgstr "_à´•àµà´°à´®àµ€à´•à´°à´£à´‚"
-
-msgid "_Projection"
-msgstr "_à´ªàµà´°àµŠà´œà´•àµà´·à´¨àµâ€"
-
-msgid "_Vehicle"
-msgstr "‌‌‌_വാഹനം"
-
-msgid "Zoom_Out"
-msgstr "ചെറàµà´¤à´¾à´•àµà´•àµà´•"
-
-msgid "Decrease zoom level"
-msgstr "ചെറàµà´¤à´¾à´•àµà´•àµà´•"
-
-msgid "Zoom_In"
-msgstr "വലàµà´¤à´¾à´•àµà´•àµà´•"
-
-msgid "Increase zoom level"
-msgstr "വലàµà´¤à´¾à´•àµà´•àµà´•"
-
-msgid "_Recalculate"
-msgstr "_വീണàµà´Ÿàµà´‚ കണകàµà´•à´¾à´•àµà´•àµà´•"
-
-msgid "Redraw map"
-msgstr "മാപൠവീണàµà´Ÿàµà´‚ വരകàµà´•àµà´•"
-
-msgid "_Info"
-msgstr "വിവരം (_I)"
-
-msgid "Set _destination"
-msgstr "ലകàµà´·àµà´¯à´¸àµà´¥à´¾à´¨à´‚ ഉറപàµà´ªà´¿à´•àµà´•àµà´•"
-
-msgid "Opens address search dialog"
-msgstr "മേലàµâ€à´µà´¿à´²à´¾à´¸à´‚ തിരയാനàµâ€ à´¤àµà´±à´•àµà´•àµà´•"
-
-msgid "_POI search"
-msgstr "_à´¸àµà´¥à´²à´™àµà´™à´³àµâ€ തിരയàµà´•"
-
-msgid "Opens POI search dialog"
-msgstr "à´¸àµà´¥à´²à´™àµà´™à´³àµâ€ തിരയാനàµà´³àµà´³ താളàµâ€ à´¤àµà´±à´•àµà´•àµà´•"
-
-msgid "_Stop Navigation"
-msgstr "_വഴികാടàµà´Ÿà´¿ നിറàµà´¤àµà´¤àµà´•"
-
-msgid "Test"
-msgstr "പരീകàµà´·à´£à´‚"
-
-msgid "_Quit"
-msgstr "à´ªàµà´±à´¤àµà´¤àµ à´•à´Ÿà´•àµà´•àµà´•"
-
-msgid "Quit the application"
-msgstr "നാവിറàµà´±à´¿à´²àµâ€ നിനàµà´¨àµ à´ªàµà´±à´¤àµà´¤àµ പോവàµà´•"
-
-msgid "Show position _cursor"
-msgstr "à´¸àµà´¥à´¾à´¨à´‚ കാണികàµà´•àµà´•"
-
-msgid "_Lock on Road"
-msgstr "വീഥിയിലàµâ€ നിറàµà´¤àµà´¤àµà´•"
-
-msgid "_Keep orientation to the North"
-msgstr "വടകàµà´•àµ‹à´Ÿàµà´Ÿàµ ദരàµâ€à´¶à´¨à´‚"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "വടകàµà´•àµ‹à´Ÿàµà´Ÿàµ ദരàµâ€à´¶à´¨à´‚/സഞàµà´šà´¾à´° ദിശ"
-
-msgid "_Roadbook"
-msgstr "_ഭൂപടപàµà´¸àµà´¤à´•à´‚"
-
-msgid "Show/hide route description"
-msgstr "വഴി വിവരണം കാണികàµà´•àµà´•/മറകàµà´•àµà´•"
-
-msgid "_Autozoom"
-msgstr "ശരിയായ വലിപàµà´ªà´‚ തനàµà´¨à´¤àµà´¤à´¾à´¨àµâ€ കണകàµà´•à´¾à´•àµà´•àµà´•"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "തനàµà´¨à´¤àµà´¤à´¾à´¨àµâ€ വലിപàµà´ªà´‚ à´…à´¨àµà´µà´¦à´¿à´•àµà´•àµà´•/നിരസികàµà´•àµà´•"
-
-msgid "_Fullscreen"
-msgstr "à´¸àµà´•àµà´°àµ€à´¨àµâ€ പൂരàµâ€à´£àµà´£ വലിപàµà´ªà´¤àµà´¤à´¿à´²àµâ€ (_F)"
-
-msgid "Data"
-msgstr "വിവരങàµà´™à´³àµâ€"
-
-msgid "Pharmacy"
-msgstr "മരàµà´¨àµà´¨àµ à´•à´Ÿ"
-
-msgid "Restaurant"
-msgstr "ഹോടàµà´Ÿà´²àµâ€"
-
-msgid "Restaurant. Fast food"
-msgstr "തടàµà´Ÿàµà´•à´Ÿ"
-
-msgid "Hotel"
-msgstr "ഹോടàµà´Ÿà´²àµâ€"
-
-msgid "Car parking"
-msgstr "കാരàµâ€ പാരàµâ€à´•àµà´•à´¿à´™àµà´™àµ"
-
-msgid "Fuel station"
-msgstr "പെടàµà´°àµ‹à´³àµâ€ പമàµà´ªàµ"
-
-msgid "Bank"
-msgstr "ബാങàµà´•àµ"
-
-msgid "Hospital"
-msgstr "ആശàµà´ªà´¤àµà´°à´¿"
-
-msgid "Cinema"
-msgstr "സിനിമ തിയറàµà´±à´°àµâ€"
-
-msgid "Train station"
-msgstr "റയിലàµâ€à´µàµ† à´¸àµà´Ÿàµ‡à´·à´¨àµâ€"
-
-msgid "School"
-msgstr "à´¸àµà´•àµ‚à´³àµâ€"
-
-msgid "Police"
-msgstr "പോലീസൠസàµà´Ÿàµ‡à´·à´¨àµâ€"
-
-msgid "Justice"
-msgstr "കോടതി"
-
-msgid "Taxi"
-msgstr "ടാകàµà´¸à´¿ à´¸àµà´±àµà´±à´¾à´¨àµà´±àµ"
-
-msgid "Shopping"
-msgstr "à´•à´šàµà´šà´µà´Ÿà´¸àµà´¥à´¾à´ªà´¨à´‚"
-
-msgid "Distance from screen center (km)"
-msgstr "à´¸àµà´•àµà´°àµ€à´¨à´¿à´¨àµà´±àµ† നടàµà´µà´¿à´²àµâ€ നിനàµà´¨àµà´³àµà´³ ദൂരം (à´•à´¿. മി. )"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "പി. à´“. à´ (ഇഷàµà´Ÿà´ªàµ†à´Ÿàµà´Ÿ à´¸àµà´¥à´²à´™àµà´™à´³àµâ€) %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "%ld, %ld ലകàµà´·àµà´¯à´¸àµà´¥à´¾à´¨à´®à´¾à´•àµà´•àµà´• \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "%ld, %ld -നെ മാപàµà´ªà´¿à´²àµâ€ à´•àµà´°à´®àµ€à´•à´°à´¿à´•àµà´•àµà´• \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "%ld, %ld നെ à´…à´Ÿàµà´¤àµà´¤ ലകàµà´·àµà´¯à´®à´¾à´•àµà´•àµà´• \n"
-
-msgid "POI search"
-msgstr "à´¸àµà´¥à´²à´™àµà´™à´³àµâ€ (POI) തിരയàµà´•"
-
-msgid "Select a category"
-msgstr "ഒരൠവിഭാഗം തെരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•"
-
-msgid "Select a distance to look for (km)"
-msgstr "ഇതàµà´° ദൂരതàµà´¤à´¿à´¨àµà´³àµà´³à´¿à´²àµâ€ തെരയàµà´•"
-
-msgid "Select a POI"
-msgstr "à´¸àµà´¥à´²à´™àµà´™à´³àµâ€ (POI) തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "വിഭാഗങàµà´™à´³àµâ€"
-
-msgid "Direction"
-msgstr "ദിശ"
-
-msgid "Distance(m)"
-msgstr "ദൂരം"
-
-msgid "Name"
-msgstr "പേരàµàµ"
-
-msgid "Visit Before"
-msgstr "ഉദàµà´¦à´¿à´·àµà´Ÿà´¸àµà´¥à´¾à´¨à´¤àµà´¤à´¿à´¨àµ à´®àµà´¨àµà´ªàµ സനàµà´¦à´°àµâ€à´¶à´¿à´•àµà´•àµà´•"
-
-msgid "N"
-msgstr "വടകàµà´•àµ (N)"
-
-msgid "NE"
-msgstr "വടകàµà´•àµà´•à´¿à´´à´•àµà´•àµàµ"
-
-msgid "E"
-msgstr "à´•à´¿à´´à´•àµà´•àµ (E)"
-
-msgid "SE"
-msgstr "തെകàµà´•àµà´•à´¿à´´à´•àµà´•àµàµ"
-
-msgid "S"
-msgstr "തെകàµà´•àµ (S)"
-
-msgid "SW"
-msgstr "തെകàµà´•àµà´ªà´Ÿà´¿à´žàµà´žà´¾à´±àµàµ"
-
-msgid "W"
-msgstr "പടിഞàµà´žà´¾à´±àµ (W)"
-
-msgid "NW"
-msgstr "വടകàµà´•àµà´ªà´Ÿà´¿à´žàµà´žà´¾à´±àµàµ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "വേണàµà´Ÿ"
-
-msgid "2D"
-msgstr "à´¦àµà´µà´¿à´®à´¾à´¨à´‚"
-
-msgid "3D"
-msgstr "à´¤àµà´°à´¿à´®à´¾à´¨à´‚"
-
-msgid "OT"
-msgstr "à´“ à´±àµà´±à´¿"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "%4.0f à´•à´¿.മി ദൂരം %02d:%02d സമയതàµà´¤àµ à´Žà´¤àµà´¤àµà´‚"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "0000km ദൂരം 0+00:00 സമയതàµà´¤àµ à´Žà´¤àµà´¤àµà´‚"
-
-msgid "Help"
-msgstr "സഹായം"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "%s വഴിതàµà´¤à´¿à´°à´¿à´µàµ"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "à´ªàµà´¤à´¿à´¯à´µà´´à´¿à´¤à´¿à´°à´¿à´µà´¿à´¨àµà´±àµ† à´¸àµà´¥à´¾à´¨à´‚ (à´®àµà´¨àµà´ªà´¿à´²àµâ€)"
-
-msgid "View in Browser"
-msgstr "à´¬àµà´°àµŒà´¸à´°à´¿à´²àµâ€ കാണàµà´•"
-
-msgid "Item type"
-msgstr "ഇന വിവരം"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "തെരàµà´µàµ"
-
-msgid "House numbers"
-msgstr "വീടàµà´Ÿàµ നമàµà´ªà´°àµâ€"
-
-msgid "View Attributes"
-msgstr "ആടàµà´°à´¿à´¬àµà´¯àµ‚à´Ÿàµà´Ÿàµà´•à´³àµâ€"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "à´¸àµà´¥à´¾à´¨à´®à´¾à´¯àµ à´•àµà´°à´®àµ€à´•à´°à´¿à´•àµà´•àµà´• (വാഹനം നിരàµâ€à´œàµ€à´µà´®à´¾à´•àµà´•àµà´•)"
-
-msgid "POIs"
-msgstr "à´¸àµà´¥à´²à´™àµà´™à´³àµâ€ (POIs)"
-
-msgid "View on map"
-msgstr "ഭൂപടതàµà´¤à´¿à´²àµâ€ കാണàµà´•"
-
-msgid "Remove search results from the map"
-msgstr "ഭൂപടതàµà´¤à´¿à´²àµâ€ നിനàµà´¨àµà´‚ തെരചàµà´šà´¿à´²àµâ€ ഫലങàµà´™à´³àµâ€ കളയàµà´•"
-
-msgid "Show results on the map"
-msgstr "തിരചàµà´šà´¿à´²àµâ€ ഫലങàµà´™à´³àµâ€ ഭൂപടതàµà´¤à´¿à´²àµâ€ കാണികàµà´•àµà´•"
-
-msgid "Cut Bookmark"
-msgstr "à´¬àµà´•àµà´•àµà´®à´¾à´°àµâ€à´•àµà´•àµ à´•à´Ÿàµà´Ÿàµ ചെയàµà´¯àµà´•"
-
-msgid "Copy Bookmark"
-msgstr "à´¬àµà´•àµà´•àµà´®à´¾à´°àµâ€à´•àµà´•àµ à´•à´Ÿàµà´Ÿàµ ചെയàµà´¯àµà´•"
-
-msgid "Rename Bookmark"
-msgstr "അടയാളകàµà´•àµà´±à´¿à´ªàµà´ªà´¿à´¨àµà´±àµ† പേരàµàµ മാറàµà´±àµà´•"
-
-msgid "Paste Bookmark"
-msgstr "à´¬àµà´•àµà´•àµà´®à´¾à´°àµâ€à´•àµà´•àµ പേസàµà´±àµà´±àµ ചെയàµà´¯àµà´•"
-
-msgid "Delete Bookmark"
-msgstr "അടയാളകàµà´•àµà´±à´¿à´ªàµà´ªàµ നീകàµà´•à´‚ ചെയàµà´¯àµà´•"
-
-msgid "Delete waypoint"
-msgstr "വഴിതàµà´¤à´¿à´°à´¿à´µàµ കളയàµà´•"
-
-msgid "Bookmarks"
-msgstr "അടയാളകàµà´•àµà´±à´¿à´ªàµà´ªàµà´•à´³àµâ€"
-
-msgid "Bookmarks as waypoints"
-msgstr "വഴിതിരിവായി à´¬àµà´•àµà´•àµà´®à´¾à´°àµâ€à´•àµà´•àµ ചെയàµà´¯àµà´•"
-
-msgid "Save waypoints"
-msgstr "വഴിതിരിവൠസൂകàµà´·à´¿à´šàµà´šàµ വകàµà´•àµà´•"
-
-msgid "Replace with waypoints"
-msgstr "വഴിതàµà´¤à´¿à´°à´¿à´µàµà´ªà´¯àµ‹à´—à´¿à´šàµà´šàµ മാറàµà´±àµà´•"
-
-msgid "Delete Folder"
-msgstr "ഫോളàµâ€à´¡à´°àµâ€ വെടàµà´Ÿà´¿ മാറàµà´±àµà´•"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "à´¬àµà´•àµà´•àµà´®à´¾à´°àµâ€à´•àµà´•àµ ഫോളàµâ€à´¡à´°àµâ€ ചേരàµâ€à´•àµà´•àµà´•"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "à´¬àµà´•àµà´•àµà´®à´¾à´°àµâ€à´•àµà´•àµ പേസàµà´±àµà´±àµ ചെയàµà´¯àµà´•"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "അടയാളകàµà´•àµà´±à´¿à´ªàµà´ªàµà´•à´³àµâ€ %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "%s ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¯àµà´•"
-
-msgid "Map Download"
-msgstr "ഭൂപടം ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¯àµà´•"
-
-msgid "Active"
-msgstr "സജàµà´œà´®à´¾à´£àµ"
-
-msgid "Download Enabled"
-msgstr "ഡൗണàµâ€à´²àµ‹à´¡àµ à´…à´¨àµà´µà´¦à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-msgid "Download completely"
-msgstr "à´®àµà´´àµà´µà´¨àµâ€ ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¯àµà´•"
-
-msgid "Show Satellite Status"
-msgstr "ഉപഗàµà´°à´¹ നിലവാരം കാണികàµà´•àµà´•"
-
-msgid " Elevation "
-msgstr " ഉയരം "
-
-msgid " Azimuth "
-msgstr " ഉയരം "
-
-msgid "Show NMEA Data"
-msgstr "NMEA വിവരം കാണàµà´•"
-
-msgid "car"
-msgstr "കാരàµâ€"
-
-msgid "bike"
-msgstr "ബൈകàµà´•àµ"
-
-msgid "pedestrian"
-msgstr "കാലàµâ€à´¨à´Ÿà´¯à´¾à´¤àµà´°à´•àµà´•à´¾à´°à´¨àµâ€"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "നിലവിലെ à´ªàµà´°àµ‹à´«àµˆà´²àµâ€ : %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "%s ലേകàµà´•àµ à´ªàµà´°àµŠà´«àµˆà´²àµâ€ മാറàµà´±àµà´•"
-
-msgid "Set as active"
-msgstr "സജീവമാകàµà´•àµà´•"
-
-msgid "Show Satellite status"
-msgstr "ഉപഗàµà´°à´¹ നിലവാരം കാണികàµà´•àµà´•"
-
-msgid "Show NMEA data"
-msgstr "à´Žà´¨àµâ€. à´Žà´‚. à´‡. à´ (NMEA) വിവരങàµà´™à´³àµâ€"
-
-msgid "Add Bookmark"
-msgstr "അടയാളകàµà´•àµà´±à´¿à´ªàµà´ªàµàµ ചേരàµâ€à´•àµà´•àµà´•"
-
-msgid "Rename"
-msgstr "പേരàµàµ മാറàµà´±àµà´•"
-
-msgid "About Navit"
-msgstr "നാവിറàµà´±à´¿à´¨àµ† à´•àµà´±à´¿à´šàµà´šàµ"
-
-#. Authors
-msgid "By"
-msgstr "à´Žà´´àµà´¤àµà´¤àµà´•à´¾à´°àµâ€"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "നാവിറàµà´±à´¿à´¨àµà´±àµ† ടീം"
-
-msgid "members and contributors."
-msgstr "à´…à´‚à´—à´™àµà´™à´³àµâ€, സഹകാരികാളàµâ€"
-
-msgid "Waypoints"
-msgstr "വഴിതàµà´¤à´¿à´°à´¿à´µàµà´•à´³àµâ€"
-
-msgid "Enter Coordinates"
-msgstr "കോഓരàµâ€à´¡à´¿à´¨àµ‡à´±àµà´±àµà´•à´³àµâ€ ചേരàµâ€à´•àµà´•àµà´•"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "à´…à´•àµà´·à´¾à´‚ശം രേകാംശം"
-
-msgid "Enter coordinates, for example:"
-msgstr "കോഓരàµâ€à´¡à´¿à´¨àµ‡à´±àµà´±àµà´•à´³àµâ€ ചേരàµâ€à´•àµà´•àµà´•, ഉദാഹരണം"
-
-msgid "Vehicle"
-msgstr "വാഹനം"
-
-msgid "Rules"
-msgstr "നിയമങàµà´™à´³àµâ€"
-
-msgid "Lock on road"
-msgstr "പാതയിലàµâ€ തനàµà´¨àµ† നിരàµâ€à´¤àµà´¤àµà´•"
-
-msgid "Northing"
-msgstr "വടകàµà´•àµ‹à´Ÿàµà´Ÿàµ ദരàµâ€à´¶à´¨à´‚"
-
-msgid "Map follows Vehicle"
-msgstr "വാഹനതàµà´¤àµ‹à´ŸàµŠà´ªàµà´ªà´‚ സഞàµà´šà´°à´¿à´•àµà´•àµà´•"
-
-msgid "Plan with Waypoints"
-msgstr "വഴിതàµà´¤à´¿à´°à´¿à´µàµà´•à´³àµ‹à´Ÿàµ† à´ªàµà´³à´¾à´¨àµâ€ ചെയàµà´¯àµà´•"
-
-msgid "Maps"
-msgstr "ഭൂപടങàµà´™à´³àµâ€"
-
-msgid "Layout"
-msgstr "വിനàµà´¯à´¾à´¸à´‚"
-
-msgid "Height Profile"
-msgstr "ഉയര വിവരങàµà´™à´³àµâ€"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "പാത വിവരണം"
-
-msgid "Show Locale"
-msgstr "ഭാഷ വിവരം"
-
-msgid "Former Destinations"
-msgstr "à´®àµà´¨àµâ€ ലകàµà´·àµà´¯à´¸àµà´¥à´¾à´¨à´™àµà´™à´³àµâ€"
-
-msgid "- No former destinations available -"
-msgstr "- à´®àµà´¨àµâ€ ലകàµà´·àµà´¯à´¸àµà´¥à´¾à´¨à´™àµà´™à´³àµâ€ സജàµà´œàµ€à´•à´°à´¿à´šàµà´šà´¿à´Ÿàµà´Ÿà´¿à´²àµà´² -"
-
-msgid "Message"
-msgstr "സനàµà´¦àµ‡à´¶à´‚"
-
-msgid "Back"
-msgstr "പിനàµà´¨àµ‹à´Ÿàµà´Ÿàµ"
-
-msgid "Back to map"
-msgstr "ഭൂപടതàµà´¤à´¿à´²àµ‹à´Ÿàµà´Ÿàµ തിരിചàµà´šàµ പോവàµà´•"
-
-msgid "Main Menu"
-msgstr "à´ªàµà´°à´§à´¾à´¨ പടàµà´Ÿà´¿à´•"
-
-msgid "House number"
-msgstr "വീടàµà´Ÿàµ നംബരàµâ€"
-
-msgid "Next"
-msgstr "à´…à´Ÿàµà´¤àµà´¤à´¤àµ"
-
-msgid "Prev"
-msgstr "à´ªàµà´±à´•àµ‹à´Ÿàµà´Ÿàµ"
-
-msgid "Return to route!"
-msgstr "പാതയിലോടàµà´Ÿàµ തിരിചàµà´šàµ പോവàµà´•"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "à´¸àµà´ªàµ€à´¡àµ à´•àµà´¯à´¾à´®à´± : à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "ദയവായി വേഗത à´•àµà´±à´•àµà´•àµà´•"
-
-msgid "partial match"
-msgstr "ഭാഗിക പൊരàµà´¤àµà´¤à´‚"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "തിരയàµà´•"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "പടàµà´Ÿà´£à´™àµà´™à´³àµâ€"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "ഭൂപട വിവരങàµà´™à´³àµâ€ (3) à´“à´ªàµà´ªà´£àµâ€à´¸àµà´±àµà´±àµà´°àµ€à´±àµà´±àµ മാപàµ"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¤ ഭൂപടങàµà´™à´³àµâ€"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "ഇവിടെ വരെയàµà´³àµà´³ വഴി കാടàµà´Ÿàµà´•"
-
-msgid "Cancel"
-msgstr "റദàµà´¦à´¾à´•àµà´•àµà´•"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "ഭൂലോകം à´®àµà´´àµà´µà´¨àµâ€"
-
-msgid "Africa"
-msgstr "ആഫàµà´°à´¿à´•àµà´•"
-
-msgid "Canary Islands"
-msgstr "കാനറി à´à´²à´¨àµâ€à´¡àµà´•à´³àµâ€"
-
-msgid "Asia"
-msgstr "à´à´·àµà´¯"
-
-msgid "Korea"
-msgstr "കൊറിയ"
-
-msgid "Taiwan"
-msgstr "തായàµâ€Œà´µà´¾àµ»"
-
-msgid "UAE+Other"
-msgstr "യൂ ഠഈ"
-
-msgid "Oceania"
-msgstr "à´“à´·àµà´¯à´¾à´¨à´¿à´¯"
-
-msgid "Tasmania"
-msgstr "ടാസàµà´®à´¾à´¨à´¿à´¯"
-
-msgid "Victoria"
-msgstr "വികàµà´Ÿàµ‹à´±à´¿à´¯"
-
-msgid "New South Wales"
-msgstr "à´¨àµà´¯àµ‚ സൌതàµà´¤àµ വേയിലàµâ€à´¸àµ"
-
-msgid "Europe"
-msgstr "യൂറോപàµà´ªàµ"
-
-msgid "Western Europe"
-msgstr "പടിഞàµà´žà´¾à´±à´¨àµâ€ യൂറോപàµà´ªàµ"
-
-msgid "Azores"
-msgstr "ആസൊറെസàµ"
-
-msgid "BeNeLux"
-msgstr "ബെനെലകàµà´¸àµ"
-
-msgid "Alsace"
-msgstr "à´…à´²àµâ€à´¸àµ‡à´¸àµ"
-
-msgid "Aquitaine"
-msgstr "à´…à´•àµà´µà´¿à´±àµà´±à´¯à´¿à´¨àµâ€"
-
-msgid "Auvergne"
-msgstr "ഓവെരàµâ€à´£àµ†"
-
-msgid "Basse-Normandie"
-msgstr "ബസàµà´¸àµ†-നോരàµâ€à´®à´¨àµà´¡à´¿"
-
-msgid "Bourgogne"
-msgstr "à´¬àµà´°àµâ€à´—ോണേ"
-
-msgid "Bretagne"
-msgstr "à´¬àµà´°àµ†à´Ÿàµà´Ÿà´¾à´¨àµ†"
-
-msgid "Centre"
-msgstr "നടàµà´µà´¿à´²àµâ€"
-
-msgid "Champagne-Ardenne"
-msgstr "ഷാംപേനàµ-ആരàµà´¡àµ†à´¨àµà´¨àµ†"
-
-msgid "Corse"
-msgstr "കോരàµâ€à´¸àµ"
-
-msgid "Franche-Comte"
-msgstr "à´«àµà´°àµ†à´žàµà´šàµ - കോമàµà´¤àµ†"
-
-msgid "Haute-Normandie"
-msgstr "ഹോടെ- നോരàµâ€à´®à´¨àµà´¡à´¿"
-
-msgid "Ile-de-France"
-msgstr "à´à´²àµâ€-ഡെ-à´«àµà´°à´¨àµâ€à´¸àµ"
-
-msgid "Languedoc-Roussillon"
-msgstr "ലാങàµà´™àµà´¯àµà´¡àµ‹à´•àµ - റോസàµà´¸à´¿à´²àµà´²à´¨àµâ€"
-
-msgid "Limousin"
-msgstr "ലിമോസിനàµâ€"
-
-msgid "Lorraine"
-msgstr "ലൊറൈനàµâ€"
-
-msgid "Midi-Pyrenees"
-msgstr "മിഡി-പൈറെനàµà´¨àµ€à´¸àµ - à´«àµà´°à´¾à´¨àµâ€à´¸àµ"
-
-msgid "Nord-pas-de-Calais"
-msgstr "നോഡàµ-പാസàµ-ഡെ-കലായിസàµ"
-
-msgid "Pays-de-la-Loire"
-msgstr "പെയàµà´¸àµ-ഡെ-à´²-ലോയàµà´°àµâ€"
-
-msgid "Picardie"
-msgstr "പികàµà´•à´¾à´°àµâ€à´¡àµ€"
-
-msgid "Poitou-Charentes"
-msgstr "പോയിറàµà´±àµ‚-à´šà´°à´¨àµà´±à´¿à´¸àµ"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "കോടെ-ഡെ-à´…à´¸àµà´°àµâ€"
-
-msgid "Rhone-Alpes"
-msgstr "റോണെ - ആലàµà´ªàµà´¸àµ (ലിയോണàµâ€) à´«àµà´°à´¾à´¨àµâ€à´¸àµ"
-
-msgid "Baden-Wuerttemberg"
-msgstr "ബഡേനàµâ€ - വറàµà´±à´¨àµà´¬à´°àµâ€à´—ൠ- à´«àµà´°à´¾à´¨àµâ€à´¸àµ"
-
-msgid "Bayern"
-msgstr "ബയെണàµ"
-
-msgid "Mittelfranken"
-msgstr "മിറàµà´±à´²àµâ€à´«àµà´°à´¾à´™àµà´•àµ†à´¨àµâ€"
-
-msgid "Niederbayern"
-msgstr "നീഡെരàµâ€à´¬à´¯àµ‡à´°àµâ€à´£àµ"
-
-msgid "Oberbayern"
-msgstr "ഓബെരàµà´¬à´¯àµ†à´£àµ"
-
-msgid "Oberfranken"
-msgstr "ഓബെരàµâ€à´«àµà´°à´¾à´™àµà´•àµ†à´¨àµâ€"
-
-msgid "Oberpfalz"
-msgstr "ഓബെരàµâ€à´«à´¾à´²àµâ€à´¸àµ"
-
-msgid "Schwaben"
-msgstr "à´·àµà´µà´¬àµ†à´¨àµâ€"
-
-msgid "Unterfranken"
-msgstr "à´…à´¨àµà´±àµ†à´°àµà´«àµà´°à´¾à´™àµà´•àµ†à´¨àµâ€"
-
-msgid "Berlin"
-msgstr "ബെരàµâ€à´²à´¿à´¨àµâ€"
-
-msgid "Brandenburg"
-msgstr "à´¬àµà´°à´¾à´£àµà´Ÿà´¨àµâ€à´¬à´°àµâ€à´—àµ"
-
-msgid "Bremen"
-msgstr "à´¬àµà´°àµ†à´®àµ†à´¨àµâ€"
-
-msgid "Hamburg"
-msgstr "ഹാംബരàµâ€à´—àµ"
-
-msgid "Hessen"
-msgstr "ഹെസàµà´¸àµ†à´¨àµâ€"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "മെകലനàµà´¬à´°àµâ€à´—àµ-വൊരàµà´ªàµ‹à´®àµà´®àµ†à´¨àµâ€"
-
-msgid "Niedersachsen"
-msgstr "നീദെരàµâ€à´¸à´¾à´šàµà´¸àµ†à´¨àµâ€"
-
-msgid "Nordrhein-westfalen"
-msgstr "നോരàµà´¦àµ€à´¨àµ-വെസàµà´±àµà´±àµà´«à´¾à´³à´¨àµâ€"
-
-msgid "Rheinland-Pfalz"
-msgstr "റീനàµâ€à´²à´¾à´¨àµà´±àµ -ഫാലàµà´¸àµ"
-
-msgid "Saarland"
-msgstr "സാരàµâ€à´²à´¾à´¨àµà´±àµ"
-
-msgid "Sachsen-Anhalt"
-msgstr "സാചàµà´¸àµ†à´¨àµâ€-ആനàµâ€à´¹à´¾à´²àµà´Ÿàµ"
-
-msgid "Sachsen"
-msgstr "സാഷേനàµâ€"
-
-msgid "Schleswig-Holstein"
-msgstr "ഷെലàµâ€à´¸àµà´µà´¿à´—àµ-ഹോളàµâ€à´¸àµà´±àµà´±àµ€à´¨àµâ€"
-
-msgid "Thueringen"
-msgstr "à´¤àµà´°à´¿à´™àµà´™àµà´œàµ†à´¨àµâ€"
-
-msgid "Mallorca"
-msgstr "മലàµà´²àµŠà´°àµâ€à´•àµà´•à´¾"
-
-msgid "Galicia"
-msgstr "ഗലീസàµà´¯"
-
-msgid "Scandinavia"
-msgstr "à´¸àµà´•à´¾à´¨àµà´¡à´¿à´¨àµ‡à´µà´¿à´¯"
-
-msgid "England"
-msgstr "ഇംഗàµà´²à´¨àµà´¡àµ"
-
-msgid "Buckinghamshire"
-msgstr "ബകàµà´•à´¿à´™àµà´¹à´¾à´‚ഷയരàµâ€"
-
-msgid "Cambridgeshire"
-msgstr "കേംബàµà´°à´¿à´¡àµà´œàµà´·à´¯à´°àµâ€"
-
-msgid "Cumbria"
-msgstr "à´•à´‚à´¬àµà´°àµ€à´¯ - ഇംഗàµà´²à´£àµà´Ÿàµ"
-
-msgid "East yorkshire with hull"
-msgstr "à´•à´¿à´´à´•àµà´•à´¨àµâ€ യോരàµâ€à´•àµà´•àµà´·àµ†à´¯à´°àµâ€"
-
-msgid "Essex"
-msgstr "à´Žà´¸àµà´¸àµ†à´•àµà´¸àµ"
-
-msgid "Herefordshire"
-msgstr "ഹെരàµâ€à´«àµ‹à´°àµâ€à´¡àµà´·à´¯à´°àµâ€"
-
-msgid "Kent"
-msgstr "കെനàµà´±àµ"
-
-msgid "Lancashire"
-msgstr "ലാങàµà´•à´¾à´·à´¯à´°àµâ€"
-
-msgid "Leicestershire"
-msgstr "ലീസസàµà´±àµà´±à´°àµâ€à´·à´¯à´°àµâ€"
-
-msgid "Norfolk"
-msgstr "നോരàµâ€à´«àµ‹à´•àµà´•àµ"
-
-msgid "Nottinghamshire"
-msgstr "നോടàµà´Ÿà´¿à´™àµà´¹à´¾à´‚ഷയരàµâ€"
-
-msgid "Oxfordshire"
-msgstr "à´“à´•àµà´¸àµâ€Œà´«àµ‹à´°àµâ€à´¡àµà´·à´¯à´°àµâ€"
-
-msgid "Shropshire"
-msgstr "à´·àµà´°àµ‹à´ªàµà´ªàµà´·à´¯à´°àµâ€"
-
-msgid "Somerset"
-msgstr "സോമരàµâ€à´¸àµ†à´±àµà´±àµ"
-
-msgid "South yorkshire"
-msgstr "തെകàµà´•à´¨àµâ€ യോരàµâ€à´•àµà´•àµà´·àµ†à´¯à´°àµâ€"
-
-msgid "Suffolk"
-msgstr "സഫോകàµà´•àµ"
-
-msgid "Surrey"
-msgstr "സറàµâ€Œà´±àµ‡"
-
-msgid "Wiltshire"
-msgstr "വിലàµâ€à´±àµà´±àµà´·àµ†à´¯à´°àµâ€"
-
-msgid "Scotland"
-msgstr "à´¸àµà´•àµ‹à´Ÿàµà´Ÿàµâ€Œà´²à´¨àµà´±àµ"
-
-msgid "Wales"
-msgstr "വെയിലàµâ€à´¸àµ"
-
-msgid "Crete"
-msgstr "à´•àµà´°àµ€à´±àµà´±àµ"
-
-msgid "North America"
-msgstr "വടകàµà´•àµ‡ അമേരികàµà´•"
-
-msgid "Alaska"
-msgstr "അലാസàµà´•"
-
-msgid "Hawaii"
-msgstr "ഹവായàµ"
-
-msgid "USA"
-msgstr "അമേരികàµà´•à´¨àµâ€ à´à´•àµà´¯à´¨à´¾à´Ÿàµà´•à´³àµâ€"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (ആലസàµà´•à´¾à´¯àµà´‚ ഹവായിയàµà´‚ à´’à´´àµà´•àµ†"
-
-msgid "Midwest"
-msgstr "മിഡàµ-വെസàµà´Ÿàµ (അമേരികàµà´•)"
-
-msgid "Michigan"
-msgstr "മിഷിഗനàµâ€"
-
-msgid "Ohio"
-msgstr "ഓഹായോ"
-
-msgid "Northeast"
-msgstr "വടകàµà´•àµà´•à´¿à´´à´•àµà´•àµàµ"
-
-msgid "Massachusetts"
-msgstr "മാസàµà´¸à´¾à´šàµà´šàµà´¸àµ†à´±àµà´±àµà´¸àµ"
-
-msgid "Vermont"
-msgstr "വെരàµâ€à´®àµ‹à´£àµà´Ÿàµ"
-
-msgid "Pacific"
-msgstr "പസഫികàµ"
-
-msgid "South"
-msgstr "തെകàµà´•àµ"
-
-msgid "Arkansas"
-msgstr "à´…à´°àµâ€à´•àµà´•à´¨àµâ€à´¸à´¾à´¸àµ"
-
-msgid "District of Columbia"
-msgstr "à´¡à´¿à´¸àµà´Ÿàµà´°à´¿à´•àµà´±àµà´±àµ ഓഫൠകൊളംബിയ"
-
-msgid "Florida"
-msgstr "à´«àµà´²àµ‹à´±à´¿à´¡"
-
-msgid "Louisiana"
-msgstr "ലൂസിയാനാ"
-
-msgid "Maryland"
-msgstr "മേരീലാനàµà´±àµ"
-
-msgid "Mississippi"
-msgstr "മിസàµà´¸à´¿à´¸àµà´¸à´¿à´ªàµà´ªà´¿"
-
-msgid "Oklahoma"
-msgstr "à´“à´•àµà´•àµà´²à´¹à´¾à´®"
-
-msgid "Texas"
-msgstr "ടെകàµà´¸à´¾à´¸àµ"
-
-msgid "Virginia"
-msgstr "വിരàµâ€à´œàµ€à´¨à´¿à´¯"
-
-msgid "West Virginia"
-msgstr "വെസàµà´±àµà´±àµ വിരàµâ€à´œàµ€à´¨à´¿à´¯"
-
-msgid "West"
-msgstr "പടിഞàµà´žà´¾à´±àµ"
-
-msgid "Arizona"
-msgstr "അരിസോണ"
-
-msgid "California"
-msgstr "കാലിഫോരàµâ€à´£à´¿à´¯"
-
-msgid "Colorado"
-msgstr "കൊളറാഡോ"
-
-msgid "Idaho"
-msgstr "ഇഡാഹോ"
-
-msgid "Montana"
-msgstr "മൊണàµà´Ÿà´¾à´¨"
-
-msgid "New Mexico"
-msgstr "à´¨àµà´¯àµ‚ മെകàµà´¸à´¿à´•àµà´•àµ‹"
-
-msgid "Nevada"
-msgstr "നെവാഡ"
-
-msgid "Oregon"
-msgstr "ഒറിഗണàµâ€"
-
-msgid "Utah"
-msgstr "യൂടàµà´Ÿ"
-
-msgid "Washington State"
-msgstr "വാഷിംഗàµà´Ÿà´£àµâ€"
-
-msgid "South+Middle America"
-msgstr "തെകàµà´•àµ-മധàµà´¯ അമേരികàµà´•"
-
-msgid "Guyane Francaise"
-msgstr "à´«àµà´°àµ†à´¨àµà´œàµ ഗയാന"
-
-msgid "downloading"
-msgstr "ഡൌണàµâ€à´²àµ‹à´¡àµâ€Œ ചെയàµà´¤àµà´•àµŠà´£àµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "തയàµà´¯à´¾à´°àµâ€"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "ആവശàµà´¯à´¤àµà´¤à´¿à´¨àµ à´¸àµà´¥à´²à´®à´¿à´²àµà´²à´¾"
-
-msgid "Error downloading map!"
-msgstr "ഭൂപടം ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¤à´ªàµà´ªàµ‹à´³àµâ€ തെറàµà´±à´¿à´ªàµà´ªàµ‹à´¯àµ !"
-
-msgid "Error writing map!"
-msgstr "ഫയലàµâ€ (ഭൂപടം) à´Žà´´àµà´¤à´¾à´¨àµâ€ à´¸àµà´¥à´²à´®à´¿à´²àµà´²à´¾"
-
-msgid "Map download aborted!"
-msgstr "ഭൂപടം ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ നിറàµà´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "ഉദàµà´¦à´¿à´·àµà´Ÿà´¸à´®à´¯à´‚"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "ഭൂപടം ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¯àµà´•"
-
-msgid "Vehicle Position"
-msgstr "വാഹന à´¸àµà´¥à´¾à´¨à´‚"
-
-msgid "Main menu"
-msgstr "à´ªàµà´°à´§à´¾à´¨à´µà´¿à´µà´°à´ªà´Ÿàµà´Ÿà´¿à´•"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"ഭൂപടം\n"
-"കാണികàµà´•àµà´•"
-
-msgid "Settings"
-msgstr "സജàµà´œàµ€à´•à´°à´£à´™àµà´™à´³àµâ€"
-
-msgid "Tools"
-msgstr "ഉപകരണങàµà´™à´³àµâ€"
-
-msgid "Route"
-msgstr "മാരàµâ€à´—à´‚"
-
-msgid "About"
-msgstr "വിവരണം"
-
-msgid "Quit"
-msgstr "à´ªàµà´±à´¤àµà´¤àµ à´•à´Ÿà´•àµà´•àµà´•"
-
-msgid "Actions"
-msgstr "à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•à´³àµâ€"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"à´®àµà´¨àµâ€\n"
-"ലകàµà´·àµà´¯à´™àµà´™à´³àµâ€"
-
-msgid "Coordinates"
-msgstr "കോരàµâ€à´¡à´¿à´¨àµ‡à´±àµà´±àµà´•à´³àµâ€"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"വഴികാടàµà´Ÿà´¿\n"
-"നിരàµâ€à´¤àµà´¤àµà´•"
-
-msgid "Display"
-msgstr "à´ªàµà´°à´¦à´°àµâ€à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•"
-
-msgid "Fullscreen"
-msgstr "à´®àµà´´àµà´µà´¨àµâ€ തിരശàµà´¶àµ€à´²"
-
-msgid "Window Mode"
-msgstr "വിനàµà´±àµŠ മോഡàµ"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "വിവരണം"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"ആവസാന വഴിതàµà´¤à´¿à´°à´¿à´µàµ\n"
-"à´Žà´Ÿàµà´¤àµà´¤àµ കളയàµà´•"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"à´…à´Ÿàµà´¤àµà´¤ വഴിതàµà´¤à´¿à´°à´¿à´µàµ\n"
-"à´Žà´Ÿàµà´¤àµà´¤àµ കളയàµà´•"
-
-msgid "Satellite Status"
-msgstr "ഉപഗàµà´°à´¹à´¸àµà´¥à´¿à´¤à´¿"
-
-msgid "NMEA Data"
-msgstr "à´Žà´¨àµ.à´Žà´‚.à´‡.à´Ž വിവരങàµà´™à´³àµâ€"
-
-msgid "car_shortest"
-msgstr "കാരàµâ€ - à´•àµà´±à´žàµà´ž ദൂരം"
-
-msgid "car_avoid_tolls"
-msgstr "കാരàµâ€ ടോളàµâ€-ഒഴിവാകàµà´•àµà´•"
-
-msgid "car_pedantic"
-msgstr "കാരàµâ€ (പെഡാനàµà´±à´¿à´•àµà´•àµ മോഡàµ)"
-
-msgid "horse"
-msgstr "à´•àµà´¤à´¿à´°"
-
-msgid "Truck"
-msgstr "ലോറി"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "ശരി"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "നാവിറàµà´±àµ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´‚ à´¤àµà´Ÿà´™àµà´™à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "നാവിറàµà´±àµ à´“à´Ÿà´¿à´•àµà´•àµŠà´£àµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "നാവിറàµà´±à´¿à´²àµ‡à´•àµà´•àµ à´¸àµà´µà´¾à´—തം"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"നാവിറàµà´±àµ ഉപയോഗികàµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµ നനàµà´¨àµ€\n"
-"\n"
-"à´¤àµà´Ÿà´™àµà´™àµà´µà´¾à´¨àµâ€ നാവിറàµà´±àµ മെനàµà´µà´¿à´²àµâ€ നിനàµà´¨àµà´‚ ഭൂപടം ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¯à´¾à´¨àµà´³àµà´³ à´“à´ªàµà´·àµà´¨àµâ€ "
-"തെരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•, (ഫയലàµâ€ വളരെ വലàµà´¤à´¾à´¯à´¤à´¿à´¨à´¾à´²àµâ€ വൈഫൈ \n"
-"\n"
-"കണകàµà´·à´¨àµâ€ ഉപയോഗികàµà´•àµà´¨àµà´¨à´¤àµ ഉചിതമായിരികàµà´•àµà´‚)\n"
-"\n"
-"മാപൠ(c) ഓപണàµâ€à´¸àµà´±àµà´±àµà´°àµ€à´±àµà´±àµà´®à´¾à´ªàµ സഹകാരികളàµâ€.\n"
-"\n"
-"Enjoy Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "ശരി"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "കൂടàµà´¤à´²àµâ€ വിവരങàµà´™à´³àµâ€"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "വലàµà´¤à´¾à´•àµà´•àµà´•"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "ചെറàµà´¤à´¾à´•àµà´•àµà´•"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "ഭൂപടങàµà´™à´³àµâ€ ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¯àµà´•"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "à´ªàµà´°à´§à´¾à´¨à´¸àµà´¥à´²à´™àµà´™à´³àµâ€ കാണികàµà´•àµà´•"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "നാവിറàµà´±à´¿à´²àµâ€ നിനàµà´¨àµà´‚ à´ªàµà´±à´¤àµà´¤àµ പോവàµà´•"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "സൂകàµà´·à´¿à´•àµà´•àµà´•/à´ªàµà´¨à´¸àµà´¥à´¾à´ªà´¿à´•àµà´•àµà´•"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "à´ˆ ഭൂപടം മായിചàµà´šàµ കളയàµà´•"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¤àµ കൊണàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "ഭൂപടം ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പിഴവൠസംഭവിചàµà´šàµ"
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "ഭൂപടം ഡൗണàµâ€à´²àµ‹à´¡àµ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ അവസാനിപàµà´ªà´¿à´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "à´¸àµà´¥à´¾à´¨à´‚ അറിയിലàµà´². à´¸àµà´¥à´¾à´¨à´‚ ഉറപàµà´ªà´¿à´š ശേഷം വീണàµà´Ÿàµà´‚ വരàµà´•"
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "നിലവിലെ à´¸àµà´¥à´¾à´¨à´®àµà´³àµà´³ ഭൂപടം"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "മേലàµâ€à´µà´¿à´²à´¾à´¸à´‚ തെരയàµà´•"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "ഉദàµà´¦à´¿à´·àµà´Ÿà´¸àµà´¥à´¾à´¨à´‚ ചേരàµâ€à´•àµà´•àµà´•"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "ഭാഗിക ചേരàµâ€à´šàµà´šà´¯àµà´³àµà´³ മേലàµâ€à´µà´¿à´²à´¾à´¸à´‚"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "തെരഞàµà´žàµà´•àµŠà´£àµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "മേലàµâ€à´µà´¿à´²à´¾à´¸à´‚ à´•à´£àµà´Ÿàµà´ªà´¿à´Ÿà´¿à´•àµà´•à´¾à´¨à´¾à´¯à´¿à´²àµà´²"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "തെരഞàµà´žàµà´•àµŠà´£àµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "തെരചàµà´šà´¿à´²à´¿à´¨àµà´±àµ† ഫലങàµà´™à´³àµâ€ അവതരിപàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "ഫലമൊനàµà´¨àµà´‚ ലഭàµà´¯à´®à´¾à´¯à´¿à´²àµà´²"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "വാകàµà´•àµà´•à´³àµâ€ തനàµà´¨à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "ഉദàµà´¦à´¿à´·àµà´Ÿà´¸àµà´¥à´¾à´¨à´‚ ഉരപàµà´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ :"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•à´³àµâ€ തെരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "ഓരൠഎസàµ. à´¡à´¿. (SD) കാരàµâ€à´¡àµ ഇടàµà´•"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "ബാകàµà´•à´ªàµà´ªàµ കോപി à´Žà´Ÿàµà´¤àµà´¤àµà´•àµŠà´£àµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "à´ªàµà´¨à´¸àµà´¥à´¾à´ªà´¿à´šàµà´šàµ കൊണàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "ബാകàµà´•à´ªàµà´ªàµ ഡൈറകàµà´Ÿà´±à´¿ ഉണàµà´Ÿà´¾à´•àµà´•à´¾à´¨àµâ€ സാധികàµà´•àµà´¨àµà´¨à´¿à´²àµà´²"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "വിവരങàµà´™à´³àµâ€ ശരിയായി പകരàµâ€à´¤àµà´¤à´¾à´¨àµâ€ à´•à´´à´¿à´žàµà´žà´¿à´²àµà´²"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "പകരàµâ€à´ªàµà´ªàµŠà´¨àµà´¨àµà´‚ കാണàµà´®à´¾à´¨à´¿à´²àµà´²"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "à´ªàµà´¨à´¸àµà´¥à´¾à´ªà´¨à´‚ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "വിവരങàµà´™à´³àµâ€ à´¸àµà´°à´•àµà´·à´¿à´¤à´®à´¾à´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr "പകരàµâ€à´ªàµà´ªàµ വിജയകരമായി à´ªàµà´¨à´¸àµà´¥à´¾à´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "പകരàµâ€à´ªàµà´ªàµŠà´¨àµà´¨àµà´‚ കാണàµà´®à´¾à´¨à´¿à´²àµà´²"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "à´ªàµà´¨à´¸àµà´¥à´¾à´ªà´¨à´‚ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "പകരàµâ€à´ªàµà´ªàµ തെരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "പകരàµâ€à´ªàµà´ªàµ സൂകàµà´·à´¿à´•àµà´•àµà´•"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•àµà´•"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "%1$s- à´²àµâ€ റൗണàµà´Ÿà´¾à´¨à´¯à´¿à´²àµâ€ നിനàµà´¨àµà´‚ à´ªàµà´±à´¤àµà´¤àµ‹à´Ÿàµà´Ÿàµ പോവàµà´• %2$s"
diff --git a/po/mn.po.in b/po/mn.po.in
deleted file mode 100644
index d9c7c7fff..000000000
--- a/po/mn.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# Mongolian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Enkhbold https://launchpad.net/~enkhbold-baatar
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-03-11 06:11+0000\n"
-"Last-Translator: Enkhbold <enkhbold_baatar@yahoo.com>\n"
-"Language-Team: Mongolian <mn@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: mn\n"
-
-msgid "Running from source directory\n"
-msgstr "Эх байгаа ÑÐ°Ð½Ð³Ð°Ð°Ñ Ð½ÑŒ ажиллуулах\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "Тохиргоо '%s' to '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "зеротх"
-
-msgid "first"
-msgstr "Ñхний"
-
-msgid "second"
-msgstr "2 дахь"
-
-msgid "third"
-msgstr "3 дахь"
-
-msgid "fourth"
-msgstr "4 дÑÑ…"
-
-msgid "fifth"
-msgstr "5 дÑÑ…"
-
-msgid "sixth"
-msgstr "6 дÑÑ…"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "зеротх гарах"
-
-msgid "first exit"
-msgstr ""
-
-msgid "second exit"
-msgstr ""
-
-msgid "third exit"
-msgstr ""
-
-msgid "fourth exit"
-msgstr ""
-
-msgid "fifth exit"
-msgstr ""
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr ""
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/mr.po.in b/po/mr.po.in
deleted file mode 100644
index 69acbd449..000000000
--- a/po/mr.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# Marathi translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# nagesh https://launchpad.net/~nageshpachorkar
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2013-02-18 10:23+0000\n"
-"Last-Translator: nagesh <nageshpachorkar@gmail.com>\n"
-"Language-Team: Marathi <mr@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: mr\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "'%s' पासून '%s' सेट करतोय\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "शà¥à¤¨à¥à¤¯à¤µà¤¾"
-
-msgid "first"
-msgstr "पहिला"
-
-msgid "second"
-msgstr "दà¥à¤¸à¤°à¤¾"
-
-msgid "third"
-msgstr "तिसरा"
-
-msgid "fourth"
-msgstr "चौथा"
-
-msgid "fifth"
-msgstr "पाचवा"
-
-msgid "sixth"
-msgstr "सहावा"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "शà¥à¤¨à¥à¤¯à¤µà¤¾ बाहेर जाणà¥à¤¯à¤¾à¤šà¤¾ मारà¥à¤—"
-
-msgid "first exit"
-msgstr "पहिला बाहेर जाणà¥à¤¯à¤¾à¤šà¤¾ मारà¥à¤—"
-
-msgid "second exit"
-msgstr "दà¥à¤¸à¤°à¤¾ बाहेर जाणà¥à¤¯à¤¾à¤šà¤¾ मारà¥à¤—"
-
-msgid "third exit"
-msgstr "तिसरा बाहेर जाणà¥à¤¯à¤¾à¤šà¤¾ मारà¥à¤—"
-
-msgid "fourth exit"
-msgstr "चौथा बाहेर जाणà¥à¤¯à¤¾à¤šà¤¾ मारà¥à¤—"
-
-msgid "fifth exit"
-msgstr "पाचवा बाहेर जाणà¥à¤¯à¤¾à¤šà¤¾ मारà¥à¤—"
-
-msgid "sixth exit"
-msgstr "सहावा बाहेर जाणà¥à¤¯à¤¾à¤šà¤¾ मारà¥à¤—"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr ""
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr ""
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/nb.po.in b/po/nb.po.in
deleted file mode 100644
index 04b4436e0..000000000
--- a/po/nb.po.in
+++ /dev/null
@@ -1,2756 +0,0 @@
-# Norwegian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Kenneth Langdalen https://launchpad.net/~spam-klnetworks
-# Kurt Nielsen https://launchpad.net/~kurtn-penguins
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Skippern https://launchpad.net/~gay-today
-# Svein Jakobsen https://launchpad.net/~svein-jakobsen
-# Thor H. Johansen https://launchpad.net/~thorhajo
-# burner https://launchpad.net/~bendik-xplore
-# kingu https://launchpad.net/~comradekingu
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-11-20 19:22+0000\n"
-"Last-Translator: Svein Jakobsen <svein.jakobsen@gmail.com>\n"
-"Language-Team: Bendik Brenne <bendik@xplore.nu>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: nb\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Kjører fra kildemappen\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "setter '%s' til '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nullte"
-
-msgid "first"
-msgstr "første"
-
-msgid "second"
-msgstr "andre"
-
-msgid "third"
-msgstr "tredje"
-
-msgid "fourth"
-msgstr "fjerde"
-
-msgid "fifth"
-msgstr "femte"
-
-msgid "sixth"
-msgstr "sjette"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nullte avkjørsel"
-
-msgid "first exit"
-msgstr "første avkjøring"
-
-msgid "second exit"
-msgstr "andre avkjøring"
-
-msgid "third exit"
-msgstr "tredje avkjøring"
-
-msgid "fourth exit"
-msgstr "fjerde avkjøring"
-
-msgid "fifth exit"
-msgstr "femte avkjøring"
-
-msgid "sixth exit"
-msgstr "sjette avkjøring"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d fot"
-
-#, c-format
-msgid "in %d feet"
-msgstr "om %d fot"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "engelsk mil"
-msgstr[1] "%d engelske mil"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "om ei mil"
-msgstr[1] "om %d engelske mil"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "om %d meter"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "om %d,%d kilometer"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "en kilometer"
-msgstr[1] "%d kilometer"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "om en kilometer"
-msgstr[1] "om %d kilometer"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "ut på akselerasjonsfeltet"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sinn på gaten %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sinn på %s%s%sen"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sinn på %s%s%sa"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sin på %s%s%set"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sinn på %s"
-
-msgid "When possible, please turn around"
-msgstr "Snu når det er mulig"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "mot %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Følg veien de neste %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Kjør inn i rundkjøringen snart"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Kjør inn i rundkjøringen %s"
-
-msgid "then enter the roundabout"
-msgstr "kjør inn i rundkjøringen"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Forlat rundkjøringen ut %1$s %2$s"
-
-msgid "soon"
-msgstr "snart"
-
-msgid "now"
-msgstr "nå"
-
-msgid "then"
-msgstr "så"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "flett sp%1$s|høyre"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Flett %1$s%2$s|høyre"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "flett så%1$s|venstre"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Flett %1$s%2$s|venstre"
-
-msgid "on your left"
-msgstr "på venstresiden"
-
-msgid "on your right"
-msgstr "på høyresiden"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "avkjøring"
-
-msgid "at exit"
-msgstr "Ved utgang"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "høyre"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "venstre"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "slakt "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "skarpt "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "ta deretter %1$s til %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Ta den %1$s veien mot %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "etter %i avkjøringer"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Sving %1$s til %2$s om %3$s %4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "snu så"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Snu %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "snu så"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Snu %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "følg"
-
-msgid "then you have reached your destination."
-msgstr "så har du nådd ditt reisemål."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Du har nådd ditt reisemål %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Avkjørsel"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posisjon"
-
-msgid "Command"
-msgstr "Instruks"
-
-msgid "Length"
-msgstr "Avstand"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tid"
-
-msgid "Destination Length"
-msgstr "Avstand til målet"
-
-msgid "Destination Time"
-msgstr "Tid til målet"
-
-msgid "Roadbook"
-msgstr "Kjørebok"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Sett som posisjon"
-
-msgid "Set as destination"
-msgstr "Sett som reisemål"
-
-msgid "Add as bookmark"
-msgstr "Legg til som bokmerke"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Skjermkoordinat: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "De forente arabiske emirater"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua og Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "De nederlandske Antillene"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktis"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikansk Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Østerrike"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ã…land"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia and Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgia"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvetøya"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Hviterussland"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosøyene"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, Den demokratiske republikken"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Den sentralafrikanske republikk"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Sveits"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Elfenbenskysten"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cookøyene"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Kina"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kapp Verde"
-
-#. 531
-msgid "Curacao"
-msgstr "Curacao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Christmasøya"
-
-#. 196
-msgid "Cyprus"
-msgstr "Kypros"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Tsjekkia"
-
-#. 276
-msgid "Germany"
-msgstr "Tyskland"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danmark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Den dominikanske republikk"
-
-#. 012
-msgid "Algeria"
-msgstr "Algerie"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estland"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypt"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Vest-Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spania"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandsøyene (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronesia"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Færøyene"
-
-#. 250
-msgid "France"
-msgstr "Frankrike"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Storbritannia"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Fransk Guyana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grønland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekvatorial-Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Hellas"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Sør-Georgia og Sør-Sandwichøyene"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard- og McDonald-øyene"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Ungarn"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Det britiske territoriet i Indiahavet"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran"
-
-#. 352
-msgid "Iceland"
-msgstr "Island"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordan"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgisistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodsja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komorene"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts og Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Nord-Korea"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Sør-Korea"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Caymanøyene"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litauen"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxembourg"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvia"
-
-#. 434
-msgid "Libya"
-msgstr "Libya"
-
-#. 504
-msgid "Morocco"
-msgstr "Marokko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (Fransk del)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshalløyene"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedonia"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Burma"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Nord-Marianene"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauretania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldivene"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexico"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mosambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Ny-Caledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolkøya"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Nederland"
-
-#. 578
-msgid "Norway"
-msgstr "Norge"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "New Zealand"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Fransk Polynesia"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Ny-Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filippinene"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polen"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint-Pierre og Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairnøyene"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestina"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Romania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Russland"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi-Arabia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Salomonøyene"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychellene"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Sverige"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Saint Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard og Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr "Sør-Sudan"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "São Tomé og Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Saint Martin (Nederlandsk del)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks- og Caicosøyene"
-
-#. 148
-msgid "Chad"
-msgstr "Tsjad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "De franske sørterritorier"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadsjikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Øst-Timor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Tyrkia"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad og Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "USAs ytre småøyer"
-
-#. 840
-msgid "United States"
-msgstr "USA"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Usbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikanstaten"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent og Grenadinene"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Jomfruøyene (Storbritannia)"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Jomfruøyene (USA)"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis- og Futunaøyene"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Sør-Afrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "Ukjent, legg is_in-tagger til de byene."
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr "Ukjent adresse"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Kartpunkt"
-
-msgid "Car"
-msgstr "Bil"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Land"
-
-msgid "Postal"
-msgstr "Post"
-
-msgid "Town"
-msgstr "Sted"
-
-msgid "District"
-msgstr "Distrikt/Kommune"
-
-msgid "Street"
-msgstr "Gate"
-
-msgid "Number"
-msgstr "Nummer"
-
-msgid "Enter Destination"
-msgstr "Oppgi reisemålet"
-
-msgid "Zip Code"
-msgstr "Postnummer"
-
-msgid "City"
-msgstr "Sted"
-
-msgid "District/Township"
-msgstr "Distrikt/Kommune"
-
-msgid "Map"
-msgstr "Kart"
-
-msgid "Bookmark"
-msgstr "Bokmerke"
-
-msgid "Destination"
-msgstr "Reisemål"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Visning"
-
-msgid "_Route"
-msgstr "Rute"
-
-msgid "_Former Destinations"
-msgstr "Tidligere reisemål"
-
-msgid "_Bookmarks"
-msgstr "Bokmerker"
-
-msgid "_Map"
-msgstr "Kart"
-
-msgid "_Layout"
-msgstr "Utseende"
-
-msgid "_Projection"
-msgstr "Projeksjon"
-
-msgid "_Vehicle"
-msgstr "Kjøretøy"
-
-msgid "Zoom_Out"
-msgstr "Zoom ut"
-
-msgid "Decrease zoom level"
-msgstr "Zoom inn"
-
-msgid "Zoom_In"
-msgstr "Zoom inn"
-
-msgid "Increase zoom level"
-msgstr "Zoom ut"
-
-msgid "_Recalculate"
-msgstr "Omberegn"
-
-msgid "Redraw map"
-msgstr "Tegn kartet på nytt"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Åpne søkedialog for adresser"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Stopp navigasjon"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Avslutt"
-
-msgid "Quit the application"
-msgstr "Avslutt applikasjonen"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "LÃ¥s til vei"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Bytt kartorientering mellom nord eller kjøretøy"
-
-msgid "_Roadbook"
-msgstr "Kjørebok"
-
-msgid "Show/hide route description"
-msgstr "Vis/Sjul rutebeskrivelse"
-
-msgid "_Autozoom"
-msgstr "Auto-zoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "Fullskjerm"
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr "Apotek"
-
-msgid "Restaurant"
-msgstr "Restaurant"
-
-msgid "Restaurant. Fast food"
-msgstr "Restaurant / Gatekjøkken"
-
-msgid "Hotel"
-msgstr "Hotell"
-
-msgid "Car parking"
-msgstr "Parkering"
-
-msgid "Fuel station"
-msgstr "Bensinstasjon"
-
-msgid "Bank"
-msgstr "Bank"
-
-msgid "Hospital"
-msgstr "Sykehus"
-
-msgid "Cinema"
-msgstr "Kino"
-
-msgid "Train station"
-msgstr "Togstasjon"
-
-msgid "School"
-msgstr "Skole"
-
-msgid "Police"
-msgstr "Politi"
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr "Drosje"
-
-msgid "Shopping"
-msgstr "Handleområde"
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr "Velg en kategori"
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Kategori."
-
-msgid "Direction"
-msgstr "Retning"
-
-msgid "Distance(m)"
-msgstr "Avstand"
-
-msgid "Name"
-msgstr "Navn"
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NØ"
-
-msgid "E"
-msgstr "Ø"
-
-msgid "SE"
-msgstr "SØ"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SV"
-
-msgid "W"
-msgstr "V"
-
-msgid "NW"
-msgstr "NV"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nei"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Rute %4.0fkm %02d:%02d estimert tid"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Rute 0000km 0+00:00 estimert tid"
-
-msgid "Help"
-msgstr "Hjelp"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Vis i browser"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Gater"
-
-msgid "House numbers"
-msgstr "Husnummer"
-
-msgid "View Attributes"
-msgstr "Vis attributter"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Landemerker"
-
-msgid "View on map"
-msgstr "Vis på kart"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Klipp bokmerke"
-
-msgid "Copy Bookmark"
-msgstr "Kopier bokmerke"
-
-msgid "Rename Bookmark"
-msgstr "Endre navn på bokmerke"
-
-msgid "Paste Bookmark"
-msgstr "Lim inn bokmerke"
-
-msgid "Delete Bookmark"
-msgstr "Slett bokmerke"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Bokmerker"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr "Slett mappe"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Legg til bokmerke mappe"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Lim inn bokmerke"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Bokmerk %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Last ned %s"
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr "Aktiv"
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Vis satelittstatus"
-
-msgid " Elevation "
-msgstr " Høyde over havet "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "Vis NMEA-data"
-
-msgid "car"
-msgstr "bil"
-
-msgid "bike"
-msgstr "sykkel"
-
-msgid "pedestrian"
-msgstr "fotgjenger"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Aktiv profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Bytt profil: %s"
-
-msgid "Set as active"
-msgstr "Sett som aktiv"
-
-msgid "Show Satellite status"
-msgstr "Vis satelittstatus"
-
-msgid "Show NMEA data"
-msgstr "Vis NMEA-data"
-
-msgid "Add Bookmark"
-msgstr "Legg til bokmerke"
-
-msgid "Rename"
-msgstr "Bytt navn"
-
-msgid "About Navit"
-msgstr "Om Navit"
-
-#. Authors
-msgid "By"
-msgstr "Av"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Og alle i Navit teamet"
-
-msgid "members and contributors."
-msgstr "medlemmer og bidragsytere."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Kjøretøy"
-
-msgid "Rules"
-msgstr "Regler"
-
-msgid "Lock on road"
-msgstr "LÃ¥s til vei"
-
-msgid "Northing"
-msgstr "Hold nord oppover"
-
-msgid "Map follows Vehicle"
-msgstr "Kart følger kjøretøy"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Kart"
-
-msgid "Layout"
-msgstr "Utseende"
-
-msgid "Height Profile"
-msgstr "Høydeprofil"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Rutebeskrivelse"
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr "Tidligere reisemål"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Melding"
-
-msgid "Back"
-msgstr "Tilbake"
-
-msgid "Back to map"
-msgstr "Tilbake til kart"
-
-msgid "Main Menu"
-msgstr "Hovedmeny"
-
-msgid "House number"
-msgstr "Husnummer"
-
-msgid "Next"
-msgstr "Neste."
-
-msgid "Prev"
-msgstr "Forrige"
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Søk"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr "Avbryt."
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr "Afrika"
-
-msgid "Canary Islands"
-msgstr "Kanariøyene"
-
-msgid "Asia"
-msgstr "Asia"
-
-msgid "Korea"
-msgstr "Korea"
-
-msgid "Taiwan"
-msgstr "Taiwan"
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr "Oceania"
-
-msgid "Tasmania"
-msgstr "Tasmania"
-
-msgid "Victoria"
-msgstr "Victoria"
-
-msgid "New South Wales"
-msgstr "New South Wales"
-
-msgid "Europe"
-msgstr "Europa"
-
-msgid "Western Europe"
-msgstr "Vest-Europa"
-
-msgid "Azores"
-msgstr "Azorene"
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr "Alsace"
-
-msgid "Aquitaine"
-msgstr "Aquitaine"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr "Bourgogne"
-
-msgid "Bretagne"
-msgstr "Bretagne"
-
-msgid "Centre"
-msgstr "Midtstill"
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr "Corse"
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lorraine"
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr "Picardie"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr "Mittelfranken"
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr "Berlin"
-
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-msgid "Bremen"
-msgstr "Bremen"
-
-msgid "Hamburg"
-msgstr "Hamburg"
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr "Saarland"
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr "Skandinavia"
-
-msgid "England"
-msgstr "England"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Skottland"
-
-msgid "Wales"
-msgstr "Wales"
-
-msgid "Crete"
-msgstr "Kreta"
-
-msgid "North America"
-msgstr "Nord-Amerika"
-
-msgid "Alaska"
-msgstr "Alaska"
-
-msgid "Hawaii"
-msgstr "Hawaii"
-
-msgid "USA"
-msgstr "USA"
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Nordøst"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Stillehavet"
-
-msgid "South"
-msgstr "Sør"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "District of Columbia"
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Louisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virginia"
-
-msgid "West Virginia"
-msgstr "West Virginia"
-
-msgid "West"
-msgstr "Vest"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "California"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "New Mexico"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr "laster ned"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "klar"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr "Feil under nedlastning av kart!"
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Beregnet sluttid"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Kjøretøysposisjon"
-
-msgid "Main menu"
-msgstr "Hovedmeny"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Vis\n"
-"kart"
-
-msgid "Settings"
-msgstr "Innstillinger"
-
-msgid "Tools"
-msgstr "Verktøy"
-
-msgid "Route"
-msgstr "Rute"
-
-msgid "About"
-msgstr "Om"
-
-msgid "Quit"
-msgstr "Avslutt"
-
-msgid "Actions"
-msgstr "Handlinger"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr "Koordinater"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Stopp\n"
-"navigasjon"
-
-msgid "Display"
-msgstr "Visning"
-
-msgid "Fullscreen"
-msgstr "Fullskjerm"
-
-msgid "Window Mode"
-msgstr "Vindusmodus"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Beskrivelse"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "hest"
-
-msgid "Truck"
-msgstr "Lastebil"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Ja."
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Zoom inn"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Zoom ut"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Søker ..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Fant ingen resultater"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Velg en handling"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Sikkerhetskopierer..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Gjenoppretter..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Sikkerhetskopiering feilet"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Ta sikkerhetskopi"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Gjenopprett"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "forlat så rundkjøringen ut %1$s %2$s"
diff --git a/po/nds.po.in b/po/nds.po.in
deleted file mode 100644
index 76b176302..000000000
--- a/po/nds.po.in
+++ /dev/null
@@ -1,2756 +0,0 @@
-# German, Low translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Christian Moll https://launchpad.net/~christian-chrmoll
-# KaZeR https://launchpad.net/~kazer
-# Lars Hennig https://launchpad.net/~elhennig
-# Marc0 https://launchpad.net/~z-ubuntuone-y
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Roadrunner IN https://launchpad.net/~online
-# Roschkor https://launchpad.net/~bound-one2000
-# everyone https://launchpad.net/~anonymus1338
-# fred husche https://launchpad.net/~paidmailacc
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-04-03 18:48+0000\n"
-"Last-Translator: Marc0 <ubuntuone@hidden-primary.net>\n"
-"Language-Team: German, Low <nds@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: nds\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Aus dem Quellverzeichins starten\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "%s zu %s setzen\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "diese"
-
-msgid "first"
-msgstr "erste"
-
-msgid "second"
-msgstr "zweite"
-
-msgid "third"
-msgstr "dritte"
-
-msgid "fourth"
-msgstr "vierte"
-
-msgid "fifth"
-msgstr "fünfte"
-
-msgid "sixth"
-msgstr "sechste"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "diese Ausfahrt"
-
-msgid "first exit"
-msgstr "erste Ausfahrt"
-
-msgid "second exit"
-msgstr "zweite Ausfahrt"
-
-msgid "third exit"
-msgstr "dritte Ausfahrt"
-
-msgid "fourth exit"
-msgstr "vierte Ausfahrt"
-
-msgid "fifth exit"
-msgstr "fünfte Ausfahrt"
-
-msgid "sixth exit"
-msgstr "sechste Ausfahrt"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d Fuss"
-
-#, c-format
-msgid "in %d feet"
-msgstr "in %d Fuss"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d,%d Meilen"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "in %d,%d Meilen"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "eine Meile"
-msgstr[1] "%d Meilen"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "in einer Meile"
-msgstr[1] "in %d Meilen"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d Meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "in %d Metern"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d Kilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "in %d %d Kilometern"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "ein Kilometer"
-msgstr[1] "%d Kilometer"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "in einem Kilometer"
-msgstr[1] "in %d Kilometern"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "auf die Auffahrt"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sin die Straße %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sin den %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sin die %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sin das %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sin die %s"
-
-msgid "When possible, please turn around"
-msgstr "Wenn möglich, bitte wenden"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Der Straße %s folgen"
-
-msgid "Enter the roundabout soon"
-msgstr "In Kürze in den Kreisverkehr einfahren"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Den Kreisverkehr an der %1$s %2$s verlassen"
-
-msgid "soon"
-msgstr "in Kürze"
-
-msgid "now"
-msgstr "jetzt"
-
-msgid "then"
-msgstr "dann"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "Rechts"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "links"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "einfach "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "straf "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Die %1$s Straße zur %2$s nehmen"
-
-#, c-format
-msgid "after %i roads"
-msgstr "nach %i Straßen"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "In %3$s %1$s%2$s %4$s abbiegen"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "Dann haben Sie Ihr Ziel erreicht"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Sie haben Ihr Ziel erreicht %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Ausfahrt"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Position"
-
-msgid "Command"
-msgstr "Kommando"
-
-msgid "Length"
-msgstr "Länge"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Zeit"
-
-msgid "Destination Length"
-msgstr "Fahrstrecke"
-
-msgid "Destination Time"
-msgstr "Fahrzeit"
-
-msgid "Roadbook"
-msgstr "Straßenatlas"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Als Position setzen"
-
-msgid "Set as destination"
-msgstr "Als Ziel setzen"
-
-msgid "Add as bookmark"
-msgstr "Als Lesezeichen hinzufügen"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Koordinaten der Anzeige: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Vereinigte Arabische Emirate"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua und Barbados"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albanien"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenien"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Niederländische Antillen"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktis"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentinien"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikanisch Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Österreich"
-
-#. 036
-msgid "Australia"
-msgstr "Australien"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ã…land"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Aserbaidschan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnien und Herzegowina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesch"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgien"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgarien"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Sankt Bartholomäus"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivien"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasilien"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Insel Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Weißrussland"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokos Inseln"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Demokratische Republik Kongo"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Zentralafrikanische Republik"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Schweiz"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Elfenbeinküste"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Insel Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbien"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kap Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Weihnachtsinsel"
-
-#. 196
-msgid "Cyprus"
-msgstr "Zypern"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Tschechische Republik"
-
-#. 276
-msgid "Germany"
-msgstr "Deutschland"
-
-#. 262
-msgid "Djibouti"
-msgstr "Dschibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Dänemark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikanische Republik"
-
-#. 012
-msgid "Algeria"
-msgstr "Algerien"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estland"
-
-#. 818
-msgid "Egypt"
-msgstr "Ägypten"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Westsahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spanien"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Äthiopien"
-
-#. 246
-msgid "Finland"
-msgstr "Finnland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidschi"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland Inseln"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronesien"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Färöer Inseln"
-
-#. 250
-msgid "France"
-msgstr "Frankreich"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabun"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Vereinigtes Königreich"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgien"
-
-#. 254
-msgid "French Guiana"
-msgstr "Französisch Guyana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grönland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Äquatorial Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Griechenland"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Südgeorgien und die Südlichen Sandwichinseln"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard Insel und die McDonaldinseln"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatien"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Ungarn"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesien"
-
-#. 372
-msgid "Ireland"
-msgstr "Irland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isle of Man"
-
-#. 356
-msgid "India"
-msgstr "Indien"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Britisches Territorium im Indischen Ozean"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran"
-
-#. 352
-msgid "Iceland"
-msgstr "Island"
-
-#. 380
-msgid "Italy"
-msgstr "Italien"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordanien"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgisien"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodscha"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komoren"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "St. Kitts und Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Nordkorea"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Südkorea"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kaiman-Inseln"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kasachstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "St. Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litauen"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Lettland"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Marokko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Republik Moldau"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "St. Martin"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshallinseln"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Mazedonien"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolei"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Nord Mariannen Inseln"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauretanien"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Malediven"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mosambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Neukaledonien"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolkinsel"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Niederlande"
-
-#. 578
-msgid "Norway"
-msgstr "Norwegen"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Neuseeland"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Französisch Polynesien"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Neu Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Phillippinen"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polen"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "St.-Pierre und Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairninseln"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palästina"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Rumänien"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbien"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Russland"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi Arabien"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Salomonen"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychellen"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Schweden"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "St. Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slowenien"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard und Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slowakei"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome and Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrien"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swasiland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks- und Caicosinseln"
-
-#. 148
-msgid "Chad"
-msgstr "Tschad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Französische Süd- und Antarktisgebiete"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadschikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Osttimor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunesien"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Türkei"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad und Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tansania"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Amerikanisch-Ozeanien"
-
-#. 840
-msgid "United States"
-msgstr "USA"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Usbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikanstadt"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "St. Vincent und die Grenadinen"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Britische Jungferninseln"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Amerikanische Jungferninseln"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis und Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Südafrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Sambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Simbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Unbekannt, fügen sie is_in Tags zu diesen Städten hinzu"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Kartenpunkt"
-
-msgid "Car"
-msgstr "Auto"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Land"
-
-msgid "Postal"
-msgstr "Postanschrift"
-
-msgid "Town"
-msgstr "Stadt"
-
-msgid "District"
-msgstr "Bezirk"
-
-msgid "Street"
-msgstr "Straße"
-
-msgid "Number"
-msgstr "Nummer"
-
-msgid "Enter Destination"
-msgstr "Reiseziel eingeben"
-
-msgid "Zip Code"
-msgstr "Postleitzahl"
-
-msgid "City"
-msgstr "Stadt"
-
-msgid "District/Township"
-msgstr "Ortsteil/Gemeinde"
-
-msgid "Map"
-msgstr "Karte"
-
-msgid "Bookmark"
-msgstr "Lesezeichen"
-
-msgid "Destination"
-msgstr "Reiseziel"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Anzeige"
-
-msgid "_Route"
-msgstr "Route"
-
-msgid "_Former Destinations"
-msgstr "Vorherige Ziele"
-
-msgid "_Bookmarks"
-msgstr "Lesezeichen"
-
-msgid "_Map"
-msgstr "Karte"
-
-msgid "_Layout"
-msgstr "Erscheinungsbild"
-
-msgid "_Projection"
-msgstr "Darstellung"
-
-msgid "_Vehicle"
-msgstr "Fahrzeug"
-
-msgid "Zoom_Out"
-msgstr "Verkleinern"
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr "Vergrößern"
-
-msgid "Increase zoom level"
-msgstr "näher zoomen"
-
-msgid "_Recalculate"
-msgstr "Neu berechnen"
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr "Information"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Navigation beenden"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Beenden"
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Auf Straße zeigen"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr "Straßenatlas"
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr "automatischer Zoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "Vollbild"
-
-msgid "Data"
-msgstr "Daten"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NO"
-
-msgid "E"
-msgstr "O"
-
-msgid "SE"
-msgstr "SO"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nein"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Route %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Route 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Hilfe"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Im Browser anzeigen"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Straßen"
-
-msgid "House numbers"
-msgstr "Hausnummern"
-
-msgid "View Attributes"
-msgstr "Attribute anzeigen"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "POI"
-
-msgid "View on map"
-msgstr "Auf der Karte zeigen"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Lesezeichen ausschneiden"
-
-msgid "Copy Bookmark"
-msgstr "Lesezeichen kopieren"
-
-msgid "Rename Bookmark"
-msgstr "Lesezeichen umbenennen"
-
-msgid "Paste Bookmark"
-msgstr "Lesezeichen einfügen"
-
-msgid "Delete Bookmark"
-msgstr "Lesezeichen löschen"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Lesezeichen"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Lesezeichen einfügen"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Lesezeichen %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Satellitenstatus anzeigen"
-
-msgid " Elevation "
-msgstr " Höhe "
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr "zeige NMEA Daten"
-
-msgid "car"
-msgstr "Auto"
-
-msgid "bike"
-msgstr "Riejwiel"
-
-msgid "pedestrian"
-msgstr "Voetganger"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Aktuelles Profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Profil wechseln nach: %s"
-
-msgid "Set as active"
-msgstr "Als Aktiv setzen"
-
-msgid "Show Satellite status"
-msgstr "Satellitenstatus anzeigen"
-
-msgid "Show NMEA data"
-msgstr "NMEA Daten anzeigen"
-
-msgid "Add Bookmark"
-msgstr "Lesezeichen hinzufügen"
-
-msgid "Rename"
-msgstr "Umbenennen"
-
-msgid "About Navit"
-msgstr "Ãœber Navit"
-
-#. Authors
-msgid "By"
-msgstr "Von"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Und dem gesamten Navit-Team"
-
-msgid "members and contributors."
-msgstr "Mitglieder und Beitragende"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Fahrzeug"
-
-msgid "Rules"
-msgstr "Regeln"
-
-msgid "Lock on road"
-msgstr "Auf Straße zeigen"
-
-msgid "Northing"
-msgstr "Einnorden"
-
-msgid "Map follows Vehicle"
-msgstr "Karte folgt Fahrzeug"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Karten"
-
-msgid "Layout"
-msgstr "Erscheinungsbild"
-
-msgid "Height Profile"
-msgstr "Höhenprofil"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Routenbeschreibung"
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr "Vorherige Ziele"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Nachricht"
-
-msgid "Back"
-msgstr "Zurück"
-
-msgid "Back to map"
-msgstr "Zurück zur Karte"
-
-msgid "Main Menu"
-msgstr "Hauptmenü"
-
-msgid "House number"
-msgstr "Huisnummer"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Fahrzeugposition"
-
-msgid "Main menu"
-msgstr "Hauptmenü"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Karte\n"
-"anzeigen"
-
-msgid "Settings"
-msgstr "Einstellungen"
-
-msgid "Tools"
-msgstr "Werkzeuge"
-
-msgid "Route"
-msgstr "Route"
-
-msgid "About"
-msgstr "Ãœber"
-
-msgid "Quit"
-msgstr "Beenden"
-
-msgid "Actions"
-msgstr "Aktionen"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Navigation\n"
-"beenden"
-
-msgid "Display"
-msgstr "Anzeige"
-
-msgid "Fullscreen"
-msgstr "Vollbild"
-
-msgid "Window Mode"
-msgstr "Fenstermodus"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Beschreibung"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "Pferd"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "dann den Kreisverkehr an der %1$s %2$s verlassen"
diff --git a/po/nl.po.in b/po/nl.po.in
deleted file mode 100644
index 92f587b6d..000000000
--- a/po/nl.po.in
+++ /dev/null
@@ -1,2797 +0,0 @@
-# Dutch translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Bert de Bruijn https://launchpad.net/~lpdebruijn
-# Christ van Willegen https://launchpad.net/~cvwillegen+launchpad
-# Christopher https://launchpad.net/~cstandaert
-# Ed Kapitein https://launchpad.net/~ed-kapitein
-# Frenzel https://launchpad.net/~f-heinen-nl
-# Guus https://launchpad.net/~gsnijders
-# Hieronymousch https://launchpad.net/~jeroen-leptonics
-# Jeffrey Rongen https://launchpad.net/~jeffrey-rongen
-# KaZeR https://launchpad.net/~kazer
-# Roadrunner IN https://launchpad.net/~online
-# Sander Deryckere https://launchpad.net/~sanderd17
-# Sybren Stüvel https://launchpad.net/~sybren-stuvel
-# Willem Sonke https://launchpad.net/~willem-sonke
-# bafplus https://launchpad.net/~bart-cockheyt
-# jan https://launchpad.net/~jandegr1
-# rob https://launchpad.net/~rvdb
-# wb9688 https://launchpad.net/~wb9688
-# worldcitizen https://launchpad.net/~joop-boonen
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-05-04 15:48+0000\n"
-"Last-Translator: wb9688 <Unknown>\n"
-"Language-Team: afaber\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: nl\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "soon"
-msgstr "straks"
-
-msgid "Running from source directory\n"
-msgstr "Gestart vanuit de bronmap\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "'%s' instellen als '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nulde"
-
-msgid "first"
-msgstr "eerste"
-
-msgid "second"
-msgstr "tweede"
-
-msgid "third"
-msgstr "derde"
-
-msgid "fourth"
-msgstr "vierde"
-
-msgid "fifth"
-msgstr "vijfde"
-
-msgid "sixth"
-msgstr "zesde"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nulde afrit"
-
-msgid "first exit"
-msgstr "eerste afslag"
-
-msgid "second exit"
-msgstr "tweede afslag"
-
-msgid "third exit"
-msgstr "derde afslag"
-
-msgid "fourth exit"
-msgstr "vierde afslag"
-
-msgid "fifth exit"
-msgstr "vijfde afslag"
-
-msgid "sixth exit"
-msgstr "zesde afslag"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d voet"
-
-#, c-format
-msgid "in %d feet"
-msgstr "na %d voet"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d. mijl"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "na %d.%d mijl"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "%d mijl"
-msgstr[1] "%d mijl"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "na %d mijl"
-msgstr[1] "na %d mijl"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "na %d meter"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "na %d,%d kilometer"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "één kilometer"
-msgstr[1] "%d kilometer"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "na één kilometer"
-msgstr[1] "na %d kilometer"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$sde %2$s%3$s%4$s op"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$s de %2$s op"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$s de %2$s op"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$s de %2$s op"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$s de %2$s op"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "naar de oprit"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sde %s%s%s in"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sde %s%s%s in"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sde %s%s%s in"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sde %s%s%s in"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%snaar de %s"
-
-msgid "When possible, please turn around"
-msgstr "Indien mogelijk omkeren"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "richting %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Volg de weg gedurende %s"
-
-msgid "Enter the roundabout soon"
-msgstr "straks de rotonde oprijden"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "%s de rotonde oprijden"
-
-msgid "then enter the roundabout"
-msgstr "daarna rij de rotonde op"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Verlaat de rotonde bij de %1$s %2$s"
-
-msgid "now"
-msgstr "nu"
-
-msgid "then"
-msgstr "daarna"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "daarna rechts invoegen%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "%1$s rechts invoegen%2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "daarna links invoegen%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "%1$s links invoegen%2$s"
-
-msgid "on your left"
-msgstr "links"
-
-msgid "on your right"
-msgstr "rechts"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "neem afslag %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "neem de afslag %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "bij"
-
-msgid "at exit"
-msgstr "bij aflsag"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "daarna ga rechtdoor%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "%1$s ga rechtdoor %2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "daarna rechts aanhouden%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "%1$s rechts aanhouden %2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "daarna links aanhouden%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "%1$s links aanhouden %2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "rechts"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "links"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "flauw "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "scherp "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "neem daarna de %1$s straat naar %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Neem de %1$s straat naar %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "na %i wegen"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Ga %3$s %1$s naar %2$s %4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "daarna maak linksomkeer"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "%1$s linksomkeren"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "daarna rechtsomkeren"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "%1$s rechtsomkeren"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "volg"
-
-msgid "then you have reached your destination."
-msgstr "daarna heeft u uw bestemming bereikt."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Bestemming %s bereikt"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Knooppunt"
-
-msgid "Exit"
-msgstr "Afslag"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Positie"
-
-msgid "Command"
-msgstr "Opdracht"
-
-msgid "Length"
-msgstr "Afstand"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tijd"
-
-msgid "Destination Length"
-msgstr "Afstand"
-
-msgid "Destination Time"
-msgstr "Aankomsttijd"
-
-msgid "Roadbook"
-msgstr "route beschrijving"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "route punt %d"
-
-msgid "Visit before..."
-msgstr "bezoek voor"
-
-msgid "Set as position"
-msgstr "Als positie instellen"
-
-msgid "Set as destination"
-msgstr "Als bestemming instellen"
-
-msgid "Add as bookmark"
-msgstr "Opnemen als favoriet"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Schermcoörd: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Verenigde Arabische Emiraten"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua en Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albanië"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenië"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Nederlandse Antillen"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarctica"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentinië"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Oostenrijk"
-
-#. 036
-msgid "Australia"
-msgstr "Australië"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland Eilanden"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbeidzjan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnië en Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "België"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgarije"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrein"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint-Barthélemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Sint Eustatius en Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brazilië"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahama's"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvet eiland"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Wit-Rusland"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Cocoseilanden"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo-Kinshasa"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Centraal Afrikaanse Republiek"
-
-#. 178
-msgid "Congo"
-msgstr "Congo-Brazzaville"
-
-#. 756
-msgid "Switzerland"
-msgstr "Zwitserland"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Ivoorkust"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cookeilanden"
-
-#. 152
-msgid "Chile"
-msgstr "Chili"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kameroen"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kaap Verdië"
-
-#. 531
-msgid "Curacao"
-msgstr "Curacao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Kersteiland"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cyprus"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Tsjechië"
-
-#. 276
-msgid "Germany"
-msgstr "Duitsland"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Denemarken"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominicaanse Republiek"
-
-#. 012
-msgid "Algeria"
-msgstr "Algerije"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estland"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypte"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Westsahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spanje"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Ethiopië"
-
-#. 246
-msgid "Finland"
-msgstr "Finland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland Eilanden"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronesië"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Färöer"
-
-#. 250
-msgid "France"
-msgstr "Frankrijk"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Verenigd Koninkrijk"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgië"
-
-#. 254
-msgid "French Guiana"
-msgstr "Frans Guyana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinee"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Equitoriaal Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Griekenland"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Zuid Georgia en de zuidelijke Sandwich eilanden"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinee-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard en McDonald eilanden"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatië"
-
-#. 332
-msgid "Haiti"
-msgstr "Haïti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hongarije"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesië"
-
-#. 372
-msgid "Ireland"
-msgstr "Ierland"
-
-#. 376
-msgid "Israel"
-msgstr "Israël"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Eiland Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Brits Territorium in de Indische Oceaan"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran"
-
-#. 352
-msgid "Iceland"
-msgstr "IJsland"
-
-#. 380
-msgid "Italy"
-msgstr "Italië"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordanie"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgizië"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambodja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comoren"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts en Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "ZuidKorea"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Noord-Korea"
-
-#. 414
-msgid "Kuwait"
-msgstr "Koeweit"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Caymaneilanden"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazachstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Lichtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litouwen"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Letland"
-
-#. 434
-msgid "Libya"
-msgstr "Libië"
-
-#. 504
-msgid "Morocco"
-msgstr "Marokko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavië"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Sint-Maarten (Franse Antillen)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshall eilanden"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedonië"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolië"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Noordelijke Marianen"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauretanië"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldiven"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexico"
-
-#. 458
-msgid "Malaysia"
-msgstr "Maleisië"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibië"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nieuw Caledonië"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "NIcaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Nederland"
-
-#. 578
-msgid "Norway"
-msgstr "Noorwegen"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nieuw Zeeland"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Frans Polynesië"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papoea-Nieuw-Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipijnen"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polen"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint-Pierre en Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairneilanden"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestijns Gebied, Bezet"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Réunion"
-
-#. 642
-msgid "Romania"
-msgstr "Roemenië"
-
-#. 688
-msgid "Serbia"
-msgstr "Servië"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Rusland"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi-Arabië"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Salomonseilanden"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychellen"
-
-#. 736
-msgid "Sudan"
-msgstr "Soedan"
-
-#. 752
-msgid "Sweden"
-msgstr "Zweden"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Sint-Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenië"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Spitsbergen en Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slowakije"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Siërra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalië"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr "Zuid-Soedan"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tomé en Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sint Maarten (Nederlands deel)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrië"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swasiland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks- en Caicoseilanden"
-
-#. 148
-msgid "Chad"
-msgstr "Tjaad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Franse Zuidelijke en Antarctische Gebieden"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadzjikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau-eilanden"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Oost-Timor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunesië"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkije"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad en Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania"
-
-#. 804
-msgid "Ukraine"
-msgstr "Oekraïne"
-
-#. 800
-msgid "Uganda"
-msgstr "Oeganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Kleine Pacifische eilanden van de Verenigde Staten"
-
-#. 840
-msgid "United States"
-msgstr "Verenigde Staten"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Oezbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vaticaanstad"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent en de Grenadines"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Britse Maagdeneilanden"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Maagdeneilanden, USA"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis en Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Zuid-Afrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Onbekend, voeg een is_in-label toe aan deze steden"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Geen configuratiebestand navit.xml of navit.xml.local gevonden\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Foutieve waarde in het configuratie bestand '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Gebruikte configuratie bestand: '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Fout: Geen configuratie gevonden in configuratiebestand '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Interne initialisatie is mislukt, programma wordt afgesloten. Controleer de "
-"vorafgaande foutmeldingen.\n"
-
-msgid "unknown street"
-msgstr "onbekende weg"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "naamloos voertuig"
-
-msgid "Failed to write bookmarks file"
-msgstr "opslaan van het bladwijzer bestand is mislukt."
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Punt op de kaart"
-
-msgid "Car"
-msgstr "Auto"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Land"
-
-#
-msgid "Postal"
-msgstr "Postcode"
-
-msgid "Town"
-msgstr "Plaats"
-
-#
-msgid "District"
-msgstr "District"
-
-msgid "Street"
-msgstr "Straat"
-
-msgid "Number"
-msgstr "Nummer"
-
-msgid "Enter Destination"
-msgstr "voer bestemming in"
-
-msgid "Zip Code"
-msgstr "Postcode"
-
-msgid "City"
-msgstr "Stad"
-
-msgid "District/Township"
-msgstr "Gebied"
-
-msgid "Map"
-msgstr "Kaart"
-
-msgid "Bookmark"
-msgstr "Favoriet"
-
-msgid "Destination"
-msgstr "Bestemming"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Display"
-
-msgid "_Route"
-msgstr "Route"
-
-msgid "_Former Destinations"
-msgstr "Vorige bestemmingen"
-
-msgid "_Bookmarks"
-msgstr "Favorieten"
-
-msgid "_Map"
-msgstr "Kaart"
-
-msgid "_Layout"
-msgstr "Opmaak"
-
-msgid "_Projection"
-msgstr "Projectie"
-
-msgid "_Vehicle"
-msgstr "Voertuig"
-
-msgid "Zoom_Out"
-msgstr "Verkleinen"
-
-msgid "Decrease zoom level"
-msgstr "Zoomniveau verlagen"
-
-msgid "Zoom_In"
-msgstr "Vergroten"
-
-msgid "Increase zoom level"
-msgstr "Zoomniveau vehogen"
-
-msgid "_Recalculate"
-msgstr "Herberekenen"
-
-msgid "Redraw map"
-msgstr "Ververs kaart"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr "stel bestemming in"
-
-msgid "Opens address search dialog"
-msgstr "Opent het venster om adressen te zoeken"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr "POI zoekscherm openen"
-
-msgid "_Stop Navigation"
-msgstr "Stop navigatie"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Afsluiten"
-
-msgid "Quit the application"
-msgstr "Het programma afsluiten"
-
-msgid "Show position _cursor"
-msgstr "laat positie zien"
-
-msgid "_Lock on Road"
-msgstr "Huidige locatie altijd op de weg"
-
-msgid "_Keep orientation to the North"
-msgstr "houd het kaart noorden boven"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Schakelt kaartoriëntatie naar het noorden of het voertuig"
-
-msgid "_Roadbook"
-msgstr "route beschrijving"
-
-msgid "Show/hide route description"
-msgstr "Routebeschrijving tonen/verbergen"
-
-msgid "_Autozoom"
-msgstr "Autozoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Aan-/uitzetten van het automatisch veranderen van het zoomniveau"
-
-msgid "_Fullscreen"
-msgstr "Beeldvullend"
-
-msgid "Data"
-msgstr "Gegevens"
-
-msgid "Pharmacy"
-msgstr "Apotheek"
-
-msgid "Restaurant"
-msgstr "Restaurant"
-
-msgid "Restaurant. Fast food"
-msgstr "Fastfoodrestaurant"
-
-msgid "Hotel"
-msgstr "Hotel"
-
-msgid "Car parking"
-msgstr "parking"
-
-msgid "Fuel station"
-msgstr "Tankstation"
-
-msgid "Bank"
-msgstr "Bank"
-
-msgid "Hospital"
-msgstr "Ziekenhuis"
-
-msgid "Cinema"
-msgstr "Bioscoop"
-
-msgid "Train station"
-msgstr "Treinstation"
-
-msgid "School"
-msgstr "School"
-
-msgid "Police"
-msgstr "Politie"
-
-msgid "Justice"
-msgstr "gerechtshof"
-
-msgid "Taxi"
-msgstr "Taxi"
-
-msgid "Shopping"
-msgstr "Winkelen"
-
-msgid "Distance from screen center (km)"
-msgstr "Afstand vanaf schem midden (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "POI %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr "POI zoeken"
-
-msgid "Select a category"
-msgstr "Kies een categorie"
-
-msgid "Select a distance to look for (km)"
-msgstr "Zoekafstand kiezen (km)"
-
-msgid "Select a POI"
-msgstr "POI selecteren"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Categorie"
-
-msgid "Direction"
-msgstr "Richting"
-
-msgid "Distance(m)"
-msgstr "Afstand(m)"
-
-msgid "Name"
-msgstr "Naam"
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NO"
-
-msgid "E"
-msgstr "O"
-
-msgid "SE"
-msgstr "ZO"
-
-msgid "S"
-msgstr "Z"
-
-msgid "SW"
-msgstr "ZW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nee"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Route %4.0fkm %02d:%02d Aankomsttijd"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Route 0000km 0+00:00 Aankomsttijd"
-
-msgid "Help"
-msgstr "Hulp"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "route punt %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "selecteer een routepunt om in te voegen voor de nieuwe"
-
-msgid "View in Browser"
-msgstr "Bekijk in browser"
-
-msgid "Item type"
-msgstr "Item type"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Straten"
-
-msgid "House numbers"
-msgstr "Huisnummers"
-
-msgid "View Attributes"
-msgstr "Bekijk eigenschappen"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "zet positie en deactiveer voertuig"
-
-msgid "POIs"
-msgstr "Nuttige punten"
-
-msgid "View on map"
-msgstr "Bekijk op de kaart"
-
-msgid "Remove search results from the map"
-msgstr "Verwijder zoek resultaten van de kaart"
-
-msgid "Show results on the map"
-msgstr "laat de resultaten op de kaart zien"
-
-msgid "Cut Bookmark"
-msgstr "Favoriet knippen"
-
-msgid "Copy Bookmark"
-msgstr "Favoriet kopiëren"
-
-msgid "Rename Bookmark"
-msgstr "Favoriet hernoemen"
-
-msgid "Paste Bookmark"
-msgstr "Plak Favoriet"
-
-msgid "Delete Bookmark"
-msgstr "Verwijder favoriet"
-
-msgid "Delete waypoint"
-msgstr "verwijder route punt"
-
-msgid "Bookmarks"
-msgstr "Favorieten"
-
-msgid "Bookmarks as waypoints"
-msgstr "Favoriet(en) als routepunten"
-
-msgid "Save waypoints"
-msgstr "sla op als favoriet"
-
-msgid "Replace with waypoints"
-msgstr "vervang door route punten"
-
-msgid "Delete Folder"
-msgstr "Map verwijderen"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Favorietenmap toevoegen"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Plak favoriet"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Favoriet %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Download %s"
-
-msgid "Map Download"
-msgstr "Kaart downloaden"
-
-msgid "Active"
-msgstr "Actief"
-
-msgid "Download Enabled"
-msgstr "Download ingeschakeld"
-
-msgid "Download completely"
-msgstr "in zijn geheel ophalen"
-
-msgid "Show Satellite Status"
-msgstr "Satellietstatus weergeven"
-
-msgid " Elevation "
-msgstr " Hoogte "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "NMEA-gegevens weergeven"
-
-msgid "car"
-msgstr "auto"
-
-msgid "bike"
-msgstr "fiets"
-
-msgid "pedestrian"
-msgstr "voetganger"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Huidig profiel: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Profiel veranderen naar: % s"
-
-msgid "Set as active"
-msgstr "Activeren"
-
-msgid "Show Satellite status"
-msgstr "Satellietstatus weergeven"
-
-msgid "Show NMEA data"
-msgstr "Toon NMEA-gegevens"
-
-msgid "Add Bookmark"
-msgstr "Favoriet toevoegen"
-
-msgid "Rename"
-msgstr "Hernoem"
-
-msgid "About Navit"
-msgstr "Over Navit"
-
-#. Authors
-msgid "By"
-msgstr "Door"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "En het hele Navit Team"
-
-msgid "members and contributors."
-msgstr "leden en bijdragers"
-
-msgid "Waypoints"
-msgstr "route punten"
-
-msgid "Enter Coordinates"
-msgstr "voer coordinaten in"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Breedtegraad Lengtegraad"
-
-msgid "Enter coordinates, for example:"
-msgstr "voer coordinaat in, bijvorbeeld:"
-
-msgid "Vehicle"
-msgstr "Voertuig"
-
-msgid "Rules"
-msgstr "Voorschrift"
-
-msgid "Lock on road"
-msgstr "Op weg houden"
-
-msgid "Northing"
-msgstr "Noord boven"
-
-msgid "Map follows Vehicle"
-msgstr "Kaart volgt voertuig"
-
-msgid "Plan with Waypoints"
-msgstr "Plan met route punten"
-
-msgid "Maps"
-msgstr "Kaarten"
-
-msgid "Layout"
-msgstr "Opmaak"
-
-msgid "Height Profile"
-msgstr "Hoogteprofiel"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Routebeschrijving"
-
-msgid "Show Locale"
-msgstr "Toon taal"
-
-msgid "Former Destinations"
-msgstr "Vorige bestemmingen"
-
-msgid "- No former destinations available -"
-msgstr "- Geen vorige bestemmingen -"
-
-msgid "Message"
-msgstr "Boodschap"
-
-msgid "Back"
-msgstr "Terug"
-
-msgid "Back to map"
-msgstr "Terug naar de kaart"
-
-msgid "Main Menu"
-msgstr "Hoofdmenu"
-
-msgid "House number"
-msgstr "Huisnummer"
-
-msgid "Next"
-msgstr "Volgende"
-
-msgid "Prev"
-msgstr "Vorige"
-
-msgid "Return to route!"
-msgstr "Terugkeren naar route!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Pas op! Camera!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Verminder snelheid"
-
-msgid "partial match"
-msgstr "gedeeltelijke overeenkomst"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Zoek"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Steden"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "kaart gegevens (c) OpenStreetMap contributeurs, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-"Huidige locatie %s voor opslag van de kaart is niet beschikbaar.\n"
-"Herstart Navit na dat U een SD kaart heeft geplaatst of een andere\n"
-"locatie voor opslag heeft gekozen."
-
-msgid "Downloaded maps"
-msgstr "Gedownloade kaarten"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"Kaarten gorter dan 3,8GB zijn momenteel niet ondersteund op Android.\r\n"
-"Kies a.u.b. een kleinere kaart."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "route hiernaartoe"
-
-msgid "Cancel"
-msgstr "Annuleer"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-"%s is als nieuwe locatie ingesteld.\n"
-"Herstart a.u.b. Navit om de wijzigingen door te voeren."
-
-msgid "Whole Planet"
-msgstr "de hele aarde"
-
-msgid "Africa"
-msgstr "Afrika"
-
-msgid "Canary Islands"
-msgstr "Canarische Eilanden"
-
-msgid "Asia"
-msgstr "Azië"
-
-msgid "Korea"
-msgstr "Korea"
-
-msgid "Taiwan"
-msgstr "Taiwan"
-
-msgid "UAE+Other"
-msgstr "Verenigde Arabische Emiraten + andere"
-
-msgid "Oceania"
-msgstr "Oceanië"
-
-msgid "Tasmania"
-msgstr "Tasmanië"
-
-msgid "Victoria"
-msgstr "Victoria"
-
-msgid "New South Wales"
-msgstr "Nieuw-Zuid-Wales"
-
-msgid "Europe"
-msgstr "Europa"
-
-msgid "Western Europe"
-msgstr "West-Europa"
-
-msgid "Azores"
-msgstr "Azoren"
-
-msgid "BeNeLux"
-msgstr "Benelux"
-
-msgid "Alsace"
-msgstr "Elzas"
-
-msgid "Aquitaine"
-msgstr "Aquitanië"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Basse-Normandie"
-
-msgid "Bourgogne"
-msgstr "Bourgondië"
-
-msgid "Bretagne"
-msgstr "Bretagne"
-
-msgid "Centre"
-msgstr "Midden-Frankrijk"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardenne"
-
-msgid "Corse"
-msgstr "Corsica"
-
-msgid "Franche-Comte"
-msgstr "Franche-Comté"
-
-msgid "Haute-Normandie"
-msgstr "Haute-Normandie"
-
-msgid "Ile-de-France"
-msgstr "ÃŽle-de-France"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc-Roussillon"
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lotharingen"
-
-msgid "Midi-Pyrenees"
-msgstr "Midi-Pyrénées"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-Pas-de-Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Pays de la Loire"
-
-msgid "Picardie"
-msgstr "Picardië"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provence-Alpes-Côte d'Azur"
-
-msgid "Rhone-Alpes"
-msgstr "Rhône-Alpes"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Württemberg"
-
-msgid "Bayern"
-msgstr "Beieren"
-
-msgid "Mittelfranken"
-msgstr "Mittelfranken"
-
-msgid "Niederbayern"
-msgstr "Niederbayern"
-
-msgid "Oberbayern"
-msgstr "Oberbayern"
-
-msgid "Oberfranken"
-msgstr "Oberfranken"
-
-msgid "Oberpfalz"
-msgstr "Oberpfalz"
-
-msgid "Schwaben"
-msgstr "Schwaben"
-
-msgid "Unterfranken"
-msgstr "Unterfranken"
-
-msgid "Berlin"
-msgstr "Berlijn"
-
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-msgid "Bremen"
-msgstr "Bremen"
-
-msgid "Hamburg"
-msgstr "Hamburg"
-
-msgid "Hessen"
-msgstr "Hessen"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Mecklenburg-Voor-Pommeren"
-
-msgid "Niedersachsen"
-msgstr "Nedersaksen"
-
-msgid "Nordrhein-westfalen"
-msgstr "Noordrijn-Westfalen"
-
-msgid "Rheinland-Pfalz"
-msgstr "Rijnland-Palts"
-
-msgid "Saarland"
-msgstr "Saarland"
-
-msgid "Sachsen-Anhalt"
-msgstr "Saksen-Anhalt"
-
-msgid "Sachsen"
-msgstr "Saksen"
-
-msgid "Schleswig-Holstein"
-msgstr "Sleeswijk-Holstein"
-
-msgid "Thueringen"
-msgstr "Thüringen"
-
-msgid "Mallorca"
-msgstr "Mallorca"
-
-msgid "Galicia"
-msgstr "Galicië"
-
-msgid "Scandinavia"
-msgstr "Scandinavië"
-
-msgid "England"
-msgstr "Engeland"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "East Yorkshire en Hull"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "South Yorkshire"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Schotland"
-
-msgid "Wales"
-msgstr "Wales"
-
-msgid "Crete"
-msgstr "Kreta"
-
-msgid "North America"
-msgstr "Noord-Amerika"
-
-msgid "Alaska"
-msgstr "Alaska"
-
-msgid "Hawaii"
-msgstr "Hawaï"
-
-msgid "USA"
-msgstr "VS"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (behalve Alaska en Hawaï)"
-
-msgid "Midwest"
-msgstr "Midwest"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Northeast"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Pacific"
-
-msgid "South"
-msgstr "South"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "District Columbia"
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Louisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virginia"
-
-msgid "West Virginia"
-msgstr "West Virginia"
-
-msgid "West"
-msgstr "West"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "Californië"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "Nieuw-Mexico"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Washington State"
-
-msgid "South+Middle America"
-msgstr "Zuid- en Midden-Amerika"
-
-msgid "Guyane Francaise"
-msgstr "Frans Guyana"
-
-msgid "downloading"
-msgstr "aan het downloaden"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "klaar"
-
-msgid "Media selected for map storage is not available"
-msgstr "De gekozen locatie voor opslag van de kaarten is niet beschikbaar."
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Niet genoeg vrije ruimte"
-
-msgid "Error downloading map!"
-msgstr "Kaart downloaden mislukt!"
-
-msgid "Error writing map!"
-msgstr "Wegschrijven van kaart mislukt!"
-
-msgid "Map download aborted!"
-msgstr "Kaart-download afgebroken!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Resterende tijd"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Kaart downloaden"
-
-msgid "Vehicle Position"
-msgstr "Voertuigpositie"
-
-msgid "Main menu"
-msgstr "Hoofdmenu"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Kaart\n"
-"Weergeven"
-
-msgid "Settings"
-msgstr "Instellingen"
-
-msgid "Tools"
-msgstr "Gereedschappen"
-
-msgid "Route"
-msgstr "Route"
-
-msgid "About"
-msgstr "Info"
-
-msgid "Quit"
-msgstr "Afsluiten"
-
-msgid "Actions"
-msgstr "Navigatieopties"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Vorige\n"
-"bestemmingen"
-
-msgid "Coordinates"
-msgstr "Coördinaten"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Stop\n"
-"navigatie"
-
-msgid "Display"
-msgstr "Display"
-
-msgid "Fullscreen"
-msgstr "Beeldvullend"
-
-msgid "Window Mode"
-msgstr "Venstermodus"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Beschrijving"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Laatste routepunt \n"
-"verwijderen"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Volgende routepunt \n"
-"verwijderen"
-
-msgid "Satellite Status"
-msgstr "GPS-status"
-
-msgid "NMEA Data"
-msgstr "NMEA-gegevens"
-
-msgid "car_shortest"
-msgstr "auto_kortste_weg"
-
-msgid "car_avoid_tolls"
-msgstr "auto_vermijd_tolwegen"
-
-msgid "car_pedantic"
-msgstr "auto (incl. kleine wegen)"
-
-msgid "horse"
-msgstr "paard"
-
-msgid "Truck"
-msgstr "Vrachtwagen"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Ja"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit gestart"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit actief"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Welkom bij Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Dank u voor het installeren van Navit!\n"
-"\n"
-"Om te beginnen, selecteer \"Download kaarten\" uit het menu en download een "
-"kaart van je regio. De kaarten zijn groot, dus is het aangeraden om een "
-"ongelimiteerde internetverbinding te hebben!\n"
-"\n"
-"Kaartendata: (c) OpenStreetMap contributors\n"
-"\n"
-"Nog veel plezier met Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Meer info"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Zoom in"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Zoom uit"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Download kaarten"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Schakel POIs"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Verlaat Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Back-up maken / terugzetten"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr "Kaart locatie kiezen"
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Verwijder deze kaart?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Downloading:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Fout met kaart downloaden"
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Kaart downloaden afgebroken"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Geen locatie. Heropen nadat er een locatie-fix is."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Kaarten die de huidige locatie bevatten"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Zoek een adres"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Uwe bestemming"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "gedeelte van adres"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Zoeken..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Adres niet gevonden"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Zoekresultaten krijgen"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Zoekresultaten laden"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Geen resultaten gevonden"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Geen tekst ingevoerd"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Bestemming ingesteld:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Kies een actie"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Voer een SD-kaart in"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Back-up maken..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Terugzetten..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Aanmaken back-up-map mislukt"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Back-up mislukt"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Geen back-up gevonden"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Terugzetten mislukt"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Back-up succesvol"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"De back-up is succesvol teruggezet.\n"
-"Herstart nu Navit."
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Back-up niet gevonden"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Terugzetten mislukt"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Selecteer een back-up"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Back-up"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Terugzetten"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr "geen tekst naar spraak aanwezig"
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-"Navit kan elke tekst naar spraak-engine geïnstalleerd op uw apparaat "
-"gebruiken. De momenteel geselecteerde engine meldt dat het niet in uw taal "
-"kan spreken. Wil U de spraak download dialoog van Uw toestel starten?"
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "daarna de rotonde verlaten bij de %1$s %2$s"
diff --git a/po/nn.po.in b/po/nn.po.in
deleted file mode 100644
index b4d4c66e5..000000000
--- a/po/nn.po.in
+++ /dev/null
@@ -1,2746 +0,0 @@
-# Norwegian Nynorsk translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Skippern https://launchpad.net/~gay-today
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 03:59+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: nn\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nullte"
-
-msgid "first"
-msgstr "fyrste"
-
-msgid "second"
-msgstr "andre"
-
-msgid "third"
-msgstr "tredje"
-
-msgid "fourth"
-msgstr "fjerde"
-
-msgid "fifth"
-msgstr "femte"
-
-msgid "sixth"
-msgstr "sjette"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nullte avkjøyring"
-
-msgid "first exit"
-msgstr "første avkjøyring"
-
-msgid "second exit"
-msgstr "andre avkjøyring"
-
-msgid "third exit"
-msgstr "tredje avkjøyring"
-
-msgid "fourth exit"
-msgstr "fjerde avkjøyring"
-
-msgid "fifth exit"
-msgstr "femte avkjøyring"
-
-msgid "sixth exit"
-msgstr "sjette avkjøyring"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "om %d meter"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "om %d,%d kilometer"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "ein kilometer"
-msgstr[1] "%d kilometer"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "om ein kilometer"
-msgstr[1] "om %d kilometer"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sinn på %s"
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "snart"
-
-msgid "now"
-msgstr "no"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "høgre"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "venstre"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "slakt "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "krapt "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Ta den %1$s vegen mot %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Avkjøyring"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posisjon"
-
-msgid "Command"
-msgstr "Kommando"
-
-msgid "Length"
-msgstr "Avstand"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Dei sameinte arabiske emirata"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua og Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Dei nederlandske Antillane"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktika"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikansk Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austerrike"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ã…land"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Aserbadjan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgia"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvetøya"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Kviterussland"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosøyane"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, Den demokratiske republikken"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Den sentralafrikanske republikken"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo-Brazzaville"
-
-#. 756
-msgid "Switzerland"
-msgstr "Sveits"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Elfenbeinskysten"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cookøyane"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Kina"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kapp Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Juløya"
-
-#. 196
-msgid "Cyprus"
-msgstr "Kypros"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Tsjekkiske republikk"
-
-#. 276
-msgid "Germany"
-msgstr "Tyskland"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danmark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Den dominikanske republikken"
-
-#. 012
-msgid "Algeria"
-msgstr "Algerie"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estland"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypt"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Vest-Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spania"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finnland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandsøyane"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronesiaføderasjonen"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Færøyane"
-
-#. 250
-msgid "France"
-msgstr "Frankrike"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Storbritannia"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Fransk Guyana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grønnland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadelope"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekvatorial-Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Hellas"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Sør-Georgia og Sør-Sandwichøyane"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard- og McDonaldøyane"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatsia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Ungarn"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Britiske territorier i det indiske hav"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Den islamske republikk"
-
-#. 352
-msgid "Iceland"
-msgstr "Island"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordan"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodsja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komorane"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "St. Kitts og Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea, Den demokratiske folkerepublikk"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Sør-Korea"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kayman-øyane"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kasakstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "St. Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litauen"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvia"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Marokko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (Fransk del)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshalløyane"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedonia"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Nord-Marianane"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinik"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldivane"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexico"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mosambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Ny-Kaledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolkøya"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Nederland"
-
-#. 578
-msgid "Norway"
-msgstr "Noreg"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Ny-Zealand"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Fransk Polynesia"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Ny-Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Fillipinane"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polen"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint-Pierre og Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairnøyane"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestina"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Romania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Russland"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi-Arabia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Salomonøyane"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychellane"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Sverige"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "St. Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard og Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome og Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks- og Caicosøyane"
-
-#. 148
-msgid "Chad"
-msgstr "Tsjad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Dei franske sørterritoria"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadsjikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Aust-Timor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunis"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Tyrkia"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad og Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Mindre utenforliggende øyar til USA"
-
-#. 840
-msgid "United States"
-msgstr "Dei forenede statar"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Usbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikanstaten"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "St. Vincent og Grenadinane"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Jomfruøyane (Storbritannia)"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Jomfruøyane (USA)"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis- og Futunaøyane"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Sør-Afrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "Ukjend, legg is_in-tagger til dei byane."
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr "Bil"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Land"
-
-msgid "Postal"
-msgstr "Post"
-
-msgid "Town"
-msgstr "Sted"
-
-msgid "District"
-msgstr "Distrikt/Kommune"
-
-msgid "Street"
-msgstr "Gate"
-
-msgid "Number"
-msgstr "Tal"
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr "Postnummer"
-
-msgid "City"
-msgstr "Sted"
-
-msgid "District/Township"
-msgstr "Distrikt/Kommune"
-
-msgid "Map"
-msgstr "Kart"
-
-msgid "Bookmark"
-msgstr "Bokmerke"
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Visning"
-
-msgid "_Route"
-msgstr "Rute"
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr "Bokmerker"
-
-msgid "_Map"
-msgstr "Kart"
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr "Projeksjon"
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr "Zoom ut"
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr "Zoom inn"
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr "Berekne på nytt"
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr "Opplysningar"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Stopp navigasjon"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "LÃ¥s til veg"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr "Auto-zoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "Heile skjermen"
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NØ"
-
-msgid "E"
-msgstr "Ø"
-
-msgid "SE"
-msgstr "SØ"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SV"
-
-msgid "W"
-msgstr "V"
-
-msgid "NW"
-msgstr "NV"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nei"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr "Hjelp"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Vegar"
-
-msgid "House numbers"
-msgstr "Husnummer"
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Bokmerker"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Bokmerk %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Vis satelittstatus"
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr "Vis NMEA-data"
-
-msgid "car"
-msgstr "bil"
-
-msgid "bike"
-msgstr "sykkel"
-
-msgid "pedestrian"
-msgstr "fotgjengar"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr "Vis satelittstatus"
-
-msgid "Show NMEA data"
-msgstr "Vis NMEA-data"
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr "Reglar"
-
-msgid "Lock on road"
-msgstr "LÃ¥s til veg"
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Kart"
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr "Høgdeprofil"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Melding"
-
-msgid "Back"
-msgstr "Tilbake"
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr "Hovudmenyen"
-
-msgid "House number"
-msgstr "Husnummer"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr "Hovudmeny"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Vis\n"
-"kart"
-
-msgid "Settings"
-msgstr "Innstillingar"
-
-msgid "Tools"
-msgstr "Verkty"
-
-msgid "Route"
-msgstr "Rute"
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr "Avslutt"
-
-msgid "Actions"
-msgstr "Handlingar"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Stopp\n"
-"navigasjon"
-
-msgid "Display"
-msgstr "Visning"
-
-msgid "Fullscreen"
-msgstr "Heile skjermen"
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Beskriving"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/pl.po.in b/po/pl.po.in
deleted file mode 100644
index cd4bf9dd5..000000000
--- a/po/pl.po.in
+++ /dev/null
@@ -1,2788 +0,0 @@
-# Polish translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Bartosz Kaszubowski https://launchpad.net/~simek
-# DarkAlexis https://launchpad.net/~alex-ludyga
-# Jarosław Ogrodnik https://launchpad.net/~goz
-# Jurek https://launchpad.net/~jorgosw
-# KaZeR https://launchpad.net/~kazer
-# Marcin Ostajewski (panszpik) https://launchpad.net/~panszpik
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Mineque https://launchpad.net/~mineque
-# Patryk &quot;LeadMan&quot; Benderz https://launchpad.net/~leadman
-# S0Cool https://launchpad.net/~mareksok
-# TSr https://launchpad.net/~tsr
-# Wojtek https://launchpad.net/~wojtek-pol
-# skrzat https://launchpad.net/~skrzat
-# Åukasz Semler https://launchpad.net/~lukasz-semler
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-03-29 21:43+0000\n"
-"Last-Translator: Jurek <jorgosw@gmail.com>\n"
-"Language-Team: Translators\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2;\n"
-"Language: pl\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Uruchamiam z katalogu źródłowego\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "ustawiam '%s' na '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zerowy"
-
-msgid "first"
-msgstr "pierwszy"
-
-msgid "second"
-msgstr "drugi"
-
-msgid "third"
-msgstr "trzeci"
-
-msgid "fourth"
-msgstr "czwarty"
-
-msgid "fifth"
-msgstr "piÄ…ty"
-
-msgid "sixth"
-msgstr "szósty"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "zerowym wyjeździe"
-
-msgid "first exit"
-msgstr "pierwszym wyjeździe"
-
-msgid "second exit"
-msgstr "drugim wyjeździe"
-
-msgid "third exit"
-msgstr "trzecim wyjeździe"
-
-msgid "fourth exit"
-msgstr "czwartym wyjeździe"
-
-msgid "fifth exit"
-msgstr "piątym wyjeździe"
-
-msgid "sixth exit"
-msgstr "szóstym wyjeździe"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d stopa"
-
-#, c-format
-msgid "in %d feet"
-msgstr "za %d stóp"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d mil"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "za %d.%d mil"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "jedna mila"
-msgstr[1] "%d mile"
-msgstr[2] "%d mil"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "za jednÄ… milÄ™"
-msgstr[1] "za %d mile"
-msgstr[2] "za %d mil"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metrów"
-
-#, c-format
-msgid "in %d meters"
-msgstr "za %d metrów"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometrów"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "za %d.%d kilometrów"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "jeden kilometr"
-msgstr[1] "%d kilometry"
-msgstr[2] "%d kilometrów"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "za jeden kilometr"
-msgstr[1] "za %d kilometry"
-msgstr[2] "za %d kilometrów"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "na wjazd"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sw %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sw %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sw %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sw %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s do %s"
-
-msgid "When possible, please turn around"
-msgstr "Zawróc, gdy będzie to możliwe"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Jedź tą drogą do następnego %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Wjazd na rondo wkrótce"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Wjedź na rondo za %s"
-
-msgid "then enter the roundabout"
-msgstr "wtedy wjedź na rondo"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Zjedź z ronda na %1$s %2$s"
-
-msgid "soon"
-msgstr "wkrótce"
-
-msgid "now"
-msgstr "teraz"
-
-msgid "then"
-msgstr "następnie"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr "po twojej lewej"
-
-msgid "on your right"
-msgstr "po twojej prawej"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "na skrzyżowaniu"
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "i kontynuuj prosto%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "Kontynuuj prosto %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "i trzymaj siÄ™ prawej%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "Trzymaj siÄ™ prawej %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "i trzymaj siÄ™ lewej %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "Trzymaj siÄ™ lewej %1$s%2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "w prawo"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "w lewo"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "lekko "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "silnie "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Jedź drogą %1$s do %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "po drodze %i"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Skręć %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "następnie zawróc"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Zawróc %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "następnie zawróc"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Zawróc %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "następnie dojechałeś do celu."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Dotarłeś do celu %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Węzeł"
-
-msgid "Exit"
-msgstr "Zjazd"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Położenie"
-
-msgid "Command"
-msgstr "Polecenie"
-
-msgid "Length"
-msgstr "Odległość"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Czas"
-
-msgid "Destination Length"
-msgstr "Odległość do celu"
-
-msgid "Destination Time"
-msgstr "Czas do celu"
-
-msgid "Roadbook"
-msgstr "Szczegóły trasy"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Punkt trasy %d"
-
-msgid "Visit before..."
-msgstr "Odwiedź najpierw..."
-
-msgid "Set as position"
-msgstr "Ustaw jako pozycjÄ™"
-
-msgid "Set as destination"
-msgstr "Ustaw jako cel"
-
-msgid "Add as bookmark"
-msgstr "Dodaj jako zakładkę"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Współrzędne ekranu: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andora"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Zjednoczone Emiraty Arabskie"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua i Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antyle Holenderskie"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktyka"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentyna"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Amerykańskie"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Wyspy Alandzkie"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbejdżan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bośnia i Hercegowina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesz"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgia"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bułgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrajn"
-
-#. 108
-msgid "Burundi"
-msgstr "Republika Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint-Barthélemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudy"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Państwo Brunei Siedziba Pokoju"
-
-#. 068
-msgid "Bolivia"
-msgstr "Boliwia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Sint Eustatius i Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brazylia"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamy"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Wyspa Bouveta"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Białoruś"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Wyspy Kokosowe (Keelinga)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Demokratyczna Republika Konga"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Republika Åšrodkowej Afryki"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Szwajcaria"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Wybrzeże Kości Słoniowej"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Wyspy Cook'a"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Chiny"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kostaryka"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Republika Zielonego PrzylÄ…dka"
-
-#. 531
-msgid "Curacao"
-msgstr "Curacao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Wyspy Bożego Narodzenia"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cypr"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Republika Czeska"
-
-#. 276
-msgid "Germany"
-msgstr "Niemcy"
-
-#. 262
-msgid "Djibouti"
-msgstr "Dżibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Dania"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Republika Dominikańska"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekwador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egipt"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Zachodnia Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Erytrea"
-
-#. 724
-msgid "Spain"
-msgstr "Hiszpania"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finlandia"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidżi"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandy (Malwiny)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronezja"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Wyspy Faroe"
-
-#. 250
-msgid "France"
-msgstr "Francja"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Wielka Brytania"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Gujana Francuska"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grenlandia"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Gwinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Gwadelupa"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Gwinea Równikowa"
-
-#. 300
-msgid "Greece"
-msgstr "Grecja"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Wyspy Południowa Georgia i Sandwich Południowy"
-
-#. 320
-msgid "Guatemala"
-msgstr "Gwatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Gwinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Gujana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Wyspa Heard i Wyspy McDonalda"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Chorwacja"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Węgry"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonezja"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlandia"
-
-#. 376
-msgid "Israel"
-msgstr "Izrael"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Wyspa Man"
-
-#. 356
-msgid "India"
-msgstr "Indie"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Brytyjskie Terytorium Oceanu Indyjskiego"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran"
-
-#. 352
-msgid "Iceland"
-msgstr "Islandia"
-
-#. 380
-msgid "Italy"
-msgstr "WÅ‚ochy"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamajka"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordania"
-
-#. 392
-msgid "Japan"
-msgstr "Japonia"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodża"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komory"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts i Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea Północna"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea Południowa"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwejt"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kajmany"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazachstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos, Laotańska Republika Ludowo-Demokratyczna"
-
-#. 422
-msgid "Lebanon"
-msgstr "Liban"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Lichtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litwa"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luksemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Åotwa"
-
-#. 434
-msgid "Libya"
-msgstr "Libia"
-
-#. 504
-msgid "Morocco"
-msgstr "Maroko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Mołdawia"
-
-#. 499
-msgid "Montenegro"
-msgstr "Czarnogóra"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (część francuska)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Wyspy Marshalla"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Republika Macedonii"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "ZwiÄ…zek Myanmar (Birma)"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Makau"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Mariany Północne"
-
-#. 474
-msgid "Martinique"
-msgstr "Martynika"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauretania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Malediwy"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Meksyk"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malezja"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nowa Kaledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Wyspa Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Holandia"
-
-#. 578
-msgid "Norway"
-msgstr "Norwegia"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nowa Zelandia"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinezja Francuska"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nowa Gwinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipiny"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polska"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre i Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Portoryko"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Terytorium Palestyńskie, okupowane"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugalia"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paragwaj"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Rumunia"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Federacja Rosyjska"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arabia Saudyjska"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Wyspy Salomona"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seszele"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Szwecja"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Święta Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "SÅ‚owenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard i Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "SÅ‚owacja"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr "Sudan Południowy"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Wyspy Świętego Tomasza i Książęca"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salwador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sint Maarten (część holenderska)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syryjska Republika Arabska"
-
-#. 748
-msgid "Swaziland"
-msgstr "Suazi"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Wyspy Turks i Caicos"
-
-#. 148
-msgid "Chad"
-msgstr "Czad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Francuskie Terytoria Południowe"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tajlandia"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadżykistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor Wschodni"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunezja"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turcja"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trynidad i Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Tajwan, Republika Chińska"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania, Zjednoczona Republika"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Dalekie Wyspy Mniejsze Stanów Zjednoczonych"
-
-#. 840
-msgid "United States"
-msgstr "Stany Zjednoczone"
-
-#. 858
-msgid "Uruguay"
-msgstr "Urugwaj"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Watykan"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent i Grenadyny"
-
-#. 862
-msgid "Venezuela"
-msgstr "Wenezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Brytyjskie Wyspy Dziewicze"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Wyspy Dziewicze Stanów Zjednoczonych"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Wietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis i Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Majotta"
-
-#. 710
-msgid "South Africa"
-msgstr "Republika Południowej Afryki"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Nieznane, dodaj is w tagach dla tych miast"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Brak pliku konfiguracji navit.xml, znaleziony navit.xml.local\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "BÅ‚Ä…d przetworzenia pliku config '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Użycie pliku konfiguracji '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "BÅ‚Ä…d: Brak konfiguracji w pliku '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Nieudana wewnętrzna inicjalizacja, wychodzenie. Sprawdź poprzednie "
-"komunikaty błędu.\n"
-
-msgid "unknown street"
-msgstr "nieznana ulica"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Nienazwany pojazd"
-
-msgid "Failed to write bookmarks file"
-msgstr "Nieudany zapis pliku zakładek"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Punkt na mapie"
-
-msgid "Car"
-msgstr "Samochód"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Państwo"
-
-msgid "Postal"
-msgstr "Kod Pocztowy"
-
-msgid "Town"
-msgstr "Miasto"
-
-msgid "District"
-msgstr "Dzielnica"
-
-msgid "Street"
-msgstr "Ulica"
-
-msgid "Number"
-msgstr "Numer"
-
-msgid "Enter Destination"
-msgstr "Podaj cel"
-
-msgid "Zip Code"
-msgstr "Kod Pocztowy"
-
-msgid "City"
-msgstr "Miasto"
-
-msgid "District/Township"
-msgstr "Dzielnica/Okręg miejski"
-
-msgid "Map"
-msgstr "Mapa"
-
-msgid "Bookmark"
-msgstr "Zakładka"
-
-msgid "Destination"
-msgstr "Cel"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "_Wyświetl"
-
-msgid "_Route"
-msgstr "_Trasa"
-
-msgid "_Former Destinations"
-msgstr "_Poprzednie cele"
-
-msgid "_Bookmarks"
-msgstr "_Zakładki"
-
-msgid "_Map"
-msgstr "_Mapa"
-
-msgid "_Layout"
-msgstr "_Układ kolorów"
-
-msgid "_Projection"
-msgstr "_Odwzorowanie"
-
-msgid "_Vehicle"
-msgstr "_Pojazd"
-
-msgid "Zoom_Out"
-msgstr "Oddal"
-
-msgid "Decrease zoom level"
-msgstr "Zmniejsz poziom powiększenia"
-
-msgid "Zoom_In"
-msgstr "Zbliż"
-
-msgid "Increase zoom level"
-msgstr "Zwiększ poziom powiększenia"
-
-msgid "_Recalculate"
-msgstr "_Oblicz ponownie"
-
-msgid "Redraw map"
-msgstr "Przerysuj mapÄ™"
-
-msgid "_Info"
-msgstr "_Info"
-
-msgid "Set _destination"
-msgstr "Ustaw _cel"
-
-msgid "Opens address search dialog"
-msgstr "Otwórz okno dialogowe wyszukiwania adresu"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "_Zatrzymaj nawigacjÄ™"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Zakończ"
-
-msgid "Quit the application"
-msgstr "Wyjście z aplikacji"
-
-msgid "Show position _cursor"
-msgstr "Pokaż pozycję _kursora"
-
-msgid "_Lock on Road"
-msgstr "_Trzymaj siÄ™ drogi"
-
-msgid "_Keep orientation to the North"
-msgstr "_Zachowaj orientację na Północ"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Przełącz orientację mapy na północ lub pojazd"
-
-msgid "_Roadbook"
-msgstr "_Szczegóły trasy"
-
-msgid "Show/hide route description"
-msgstr "Pokaż/ukryj opis drogi"
-
-msgid "_Autozoom"
-msgstr "_Automatyczne przybliżenie"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Włącz/wyłącz automatyczną zmianę poziomu powiększenia"
-
-msgid "_Fullscreen"
-msgstr "_Pełny ekran"
-
-msgid "Data"
-msgstr "Dane"
-
-msgid "Pharmacy"
-msgstr "Apteka"
-
-msgid "Restaurant"
-msgstr "Restauracja"
-
-msgid "Restaurant. Fast food"
-msgstr "Restauracja. Fast food"
-
-msgid "Hotel"
-msgstr "Hotel"
-
-msgid "Car parking"
-msgstr "Parking"
-
-msgid "Fuel station"
-msgstr "Stacja benzynowa"
-
-msgid "Bank"
-msgstr "Bank"
-
-msgid "Hospital"
-msgstr "Szpital"
-
-msgid "Cinema"
-msgstr "Kino"
-
-msgid "Train station"
-msgstr "Stacja kolejowa"
-
-msgid "School"
-msgstr "Szkoła"
-
-msgid "Police"
-msgstr "Posterunek policji"
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr "Postój taksówek"
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr "Wybierz kategoriÄ™"
-
-msgid "Select a distance to look for (km)"
-msgstr "Wybierz zakres poszukiwań (km)"
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Kategoria"
-
-msgid "Direction"
-msgstr "Kierunek"
-
-msgid "Distance(m)"
-msgstr "Dystans(m)"
-
-msgid "Name"
-msgstr "Nazwa"
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nie"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Trasa %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Trasa 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Pomoc"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Punkt trasy %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Wybierz punkt trasy aby wstawić przed nowy"
-
-msgid "View in Browser"
-msgstr "Zobacz w przeglÄ…darce"
-
-msgid "Item type"
-msgstr "Typ pozycji"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Ulice"
-
-msgid "House numbers"
-msgstr "Numery domów"
-
-msgid "View Attributes"
-msgstr "Zobacz właściwości"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Ustaw jako pozycjÄ™ (i deaktywuj pojazd)"
-
-msgid "POIs"
-msgstr "Użyteczne miejsca"
-
-msgid "View on map"
-msgstr "Zobacz na mapie"
-
-msgid "Remove search results from the map"
-msgstr "Usuń wyniki wyszukiwania z mapy"
-
-msgid "Show results on the map"
-msgstr "Pokaż wyniki na mapie"
-
-msgid "Cut Bookmark"
-msgstr "Wytnij zakładkę"
-
-msgid "Copy Bookmark"
-msgstr "Kopiuj zakładkę"
-
-msgid "Rename Bookmark"
-msgstr "Zmień nazwę zakładki"
-
-msgid "Paste Bookmark"
-msgstr "Wklej zakładkę"
-
-msgid "Delete Bookmark"
-msgstr "Usuń zakładkę"
-
-msgid "Delete waypoint"
-msgstr "Usuń punkt trasy"
-
-msgid "Bookmarks"
-msgstr "Zakładki"
-
-msgid "Bookmarks as waypoints"
-msgstr "Zakładki jako punkty trasy"
-
-msgid "Save waypoints"
-msgstr "Zapisz punkty trasy"
-
-msgid "Replace with waypoints"
-msgstr "Zamień punktami trasy"
-
-msgid "Delete Folder"
-msgstr "Usuń Katalog"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Dodaj folder zakładek"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Wklej zakładkę"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Zakładka %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Pobieranie %s"
-
-msgid "Map Download"
-msgstr "Pobieranie Mapy"
-
-msgid "Active"
-msgstr "Aktywny"
-
-msgid "Download Enabled"
-msgstr "WÅ‚Ä…czone pobieranie"
-
-msgid "Download completely"
-msgstr "Pobieranie kompletne"
-
-msgid "Show Satellite Status"
-msgstr "Pokaż status satelitów"
-
-msgid " Elevation "
-msgstr " Wysokość n.p.m. "
-
-msgid " Azimuth "
-msgstr " Azymut "
-
-msgid "Show NMEA Data"
-msgstr "Pokaż dane NMEA"
-
-msgid "car"
-msgstr "auto"
-
-msgid "bike"
-msgstr "motor"
-
-msgid "pedestrian"
-msgstr "pieszy"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Aktualny profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Zmień profil na: %s"
-
-msgid "Set as active"
-msgstr "Ustaw jako aktywny"
-
-msgid "Show Satellite status"
-msgstr "Pokaż status satelitów"
-
-msgid "Show NMEA data"
-msgstr "Pokaż dane NMEA"
-
-msgid "Add Bookmark"
-msgstr "Dodaj zakładkę"
-
-msgid "Rename"
-msgstr "Zmień nazwę"
-
-msgid "About Navit"
-msgstr "O Navit"
-
-#. Authors
-msgid "By"
-msgstr "Przez"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "I cały zespół Navit"
-
-msgid "members and contributors."
-msgstr "członkowie oraz współtwórcy."
-
-msgid "Waypoints"
-msgstr "Punkty trasy"
-
-msgid "Enter Coordinates"
-msgstr "Wprowadź współrzędne"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr "Wprowadź współrzędne, na przykład:"
-
-msgid "Vehicle"
-msgstr "Pojazd"
-
-msgid "Rules"
-msgstr "Reguły"
-
-msgid "Lock on road"
-msgstr "Trzymaj siÄ™ drogi"
-
-msgid "Northing"
-msgstr "Północ zawsze na górze"
-
-msgid "Map follows Vehicle"
-msgstr "Wyśrodkuj mapę"
-
-msgid "Plan with Waypoints"
-msgstr "Plan z punktami trasy"
-
-msgid "Maps"
-msgstr "Mapy"
-
-msgid "Layout"
-msgstr "Układ kolorów"
-
-msgid "Height Profile"
-msgstr "Profil wysokości"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Opis trasy"
-
-msgid "Show Locale"
-msgstr "Pokaż ustawienia regionalne"
-
-msgid "Former Destinations"
-msgstr "Poprzednie cele"
-
-msgid "- No former destinations available -"
-msgstr "- Brak dostępnych poprzednich celów -"
-
-msgid "Message"
-msgstr "Wiadomość"
-
-msgid "Back"
-msgstr "Wróć"
-
-msgid "Back to map"
-msgstr "Wróć do mapy"
-
-msgid "Main Menu"
-msgstr "Menu główne"
-
-msgid "House number"
-msgstr "Numer domu"
-
-msgid "Next"
-msgstr "Następny"
-
-msgid "Prev"
-msgstr "Poprzedni"
-
-msgid "Return to route!"
-msgstr "Powróć do drogi!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Uważaj! Radar!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Proszę zmniejszyć szybkość"
-
-msgid "partial match"
-msgstr "częściowe dopasowanie"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Wyszukaj"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Miasta"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Dane Mapy (c) OpenStreetMap contributors, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "Pobrane Mapy"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"Przepraszamy, aktualnie nie wspieramy map większych niż 3,8Gb na Androidzie, "
-"proszę wybrać mniejszą."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Prowadź z tąd"
-
-msgid "Cancel"
-msgstr "Anuluj"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-"Nowa lokalizacja ustawiona jako %s\n"
-"Uruchom ponownie aplikację Navit, aby zmiany zostały zastosowane."
-
-msgid "Whole Planet"
-msgstr "Cały Ś"
-
-msgid "Africa"
-msgstr "Afryka"
-
-msgid "Canary Islands"
-msgstr "Wyspy Kanaryjskie"
-
-msgid "Asia"
-msgstr "Azja"
-
-msgid "Korea"
-msgstr "Korea"
-
-msgid "Taiwan"
-msgstr "Tajwan"
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr "Oceania"
-
-msgid "Tasmania"
-msgstr "Tasmania"
-
-msgid "Victoria"
-msgstr "Wiktoria"
-
-msgid "New South Wales"
-msgstr "Nowa Południowa Walia"
-
-msgid "Europe"
-msgstr "Europa"
-
-msgid "Western Europe"
-msgstr "Europa Zachodnia"
-
-msgid "Azores"
-msgstr "Azores"
-
-msgid "BeNeLux"
-msgstr "Benelux"
-
-msgid "Alsace"
-msgstr "Alaska"
-
-msgid "Aquitaine"
-msgstr "Akwitania"
-
-msgid "Auvergne"
-msgstr "Owernia"
-
-msgid "Basse-Normandie"
-msgstr "Dolna Normandia"
-
-msgid "Bourgogne"
-msgstr "Burgundia"
-
-msgid "Bretagne"
-msgstr "Bretania"
-
-msgid "Centre"
-msgstr "Åšrodek"
-
-msgid "Champagne-Ardenne"
-msgstr "Szampania-Ardeny"
-
-msgid "Corse"
-msgstr "Korsyka"
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr "Górna Normandia"
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr "Langwedocja-Roussillon"
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr "Lotaryngia"
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr "Pikardia"
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr "Bawaria"
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr "Szwabia"
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr "Berlin"
-
-msgid "Brandenburg"
-msgstr "Brandenburgia"
-
-msgid "Bremen"
-msgstr "Brema (Bremen)"
-
-msgid "Hamburg"
-msgstr "Hamburg"
-
-msgid "Hessen"
-msgstr "Hesja"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Meklemburgia-Pomorze Przednie"
-
-msgid "Niedersachsen"
-msgstr "Dolna Saksonia"
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr "Nadrenia-Palatynat"
-
-msgid "Saarland"
-msgstr "Saara"
-
-msgid "Sachsen-Anhalt"
-msgstr "Saksonia-Anhalt"
-
-msgid "Sachsen"
-msgstr "Saksonia"
-
-msgid "Schleswig-Holstein"
-msgstr "Szlezwik-Holsztyn"
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr "Galicja"
-
-msgid "Scandinavia"
-msgstr "Skandynawia"
-
-msgid "England"
-msgstr "Anglia"
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr "Kumbria"
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr "Szkocja"
-
-msgid "Wales"
-msgstr "Walia"
-
-msgid "Crete"
-msgstr "Kreta"
-
-msgid "North America"
-msgstr "Ameryka Północna"
-
-msgid "Alaska"
-msgstr "Alaska"
-
-msgid "Hawaii"
-msgstr "Hawaje"
-
-msgid "USA"
-msgstr "Stany Zjednoczone Ameryki"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (z wyjÄ…tkiem Alaski i Hawaji)"
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Północny wschód"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Pacyfik"
-
-msgid "South"
-msgstr "Południe"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "Dystrykt Kolumbii"
-
-msgid "Florida"
-msgstr "Floryda"
-
-msgid "Louisiana"
-msgstr "Luizjana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Wirginia"
-
-msgid "West Virginia"
-msgstr "Zachodnia Wirginia"
-
-msgid "West"
-msgstr "Zachód"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "Kalifornia"
-
-msgid "Colorado"
-msgstr "Kolorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "Nowy Meksyk (New Mexico)"
-
-msgid "Nevada"
-msgstr "Newada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Stan Waszyngton"
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr "Gujana Francuska"
-
-msgid "downloading"
-msgstr "Pobieranie"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "gotowe"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Za mało wolnego miejsca"
-
-msgid "Error downloading map!"
-msgstr "BÅ‚Ä…d przy pobieraniu map"
-
-msgid "Error writing map!"
-msgstr "BÅ‚ad przy zapisywaniu mapy!"
-
-msgid "Map download aborted!"
-msgstr "Pobieranie mapy anulowane!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Pozostało"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Pobierz mape"
-
-msgid "Vehicle Position"
-msgstr "Pozycja pojazdu"
-
-msgid "Main menu"
-msgstr "Menu główne"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Pokaż\n"
-"mapÄ™"
-
-msgid "Settings"
-msgstr "Ustawienia"
-
-msgid "Tools"
-msgstr "Narzędzia"
-
-msgid "Route"
-msgstr "Trasa"
-
-msgid "About"
-msgstr "O"
-
-msgid "Quit"
-msgstr "Zakończ"
-
-msgid "Actions"
-msgstr "Akcje"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Poprzednie\n"
-"Cele"
-
-msgid "Coordinates"
-msgstr "Współrzędne"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Przerwij\n"
-"nawigacjÄ™"
-
-msgid "Display"
-msgstr "Pokaż"
-
-msgid "Fullscreen"
-msgstr "Pełny ekran"
-
-msgid "Window Mode"
-msgstr "Tryb Widoku"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Opis"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Opuść ostatni \n"
-"Punkt trasy"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Opuść następny \n"
-"Punkt trasy"
-
-msgid "Satellite Status"
-msgstr "Status satelity"
-
-msgid "NMEA Data"
-msgstr "Dane NMEA"
-
-msgid "car_shortest"
-msgstr "samochód_najkrótsza"
-
-msgid "car_avoid_tolls"
-msgstr "samochód_unikanie_opłat"
-
-msgid "car_pedantic"
-msgstr "samochód _pedantyczny"
-
-msgid "horse"
-msgstr "koń"
-
-msgid "Truck"
-msgstr "Ciężarówka"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Tak"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit wystartował"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit uruchomiony"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Witaj w Navit :)"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Dziękujemy za instalacje Navit!\n"
-"\n"
-"Aby rozpocząć, wybierz \"Pobierz Mapy\" z menu aby pobrać mapę. Uwaga: Mapa "
-"może być duża (>50MB) - połączenie WIFI zalecane.\n"
-"\n"
-"Dane Mapy: (c) OpenStreetMap contributors\n"
-"\n"
-"Życzymy miłego użytkowania!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Więcej informacji"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Przybliż (+)"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Oddal (-)"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Pobierz Mapy"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Wyjdź z Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Zarchiwizuj / Przywróć"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Skasować tą mape?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Pobieram:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "BÅ‚Ä…d przy pobieraniu mapy."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Pobieranie mapy anulowane"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Mapy zawierajÄ…ce obecnÄ… lokalizacje"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Wyszukiwanie Adresu"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Podaj punkt docelowy"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Częściowe dopasowanie adresu"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Wyszukiwanie..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Adres nie znaleziony"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Pobieranie wyników wyszukiwania"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Åadowanie wyników wyszukiwania"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Brak wyników"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Nie wpisano tekstu"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Ustawiam punkt docelowy na:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Wybierz akcje"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Prosze włożyć karte SD"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Tworzenie kopii zapasowej..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Przywracanie..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "BÅ‚ad przy tworzeniu folderu kopii zapasowej"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Kopia zapasowa nie została wykonana"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Nie znaleziono kopii zapasowej"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "BÅ‚Ä…d przy przywracaniu"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Kopia zapasowa wykonana"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Przywracanie wykonano pomyślnie\n"
-"Prosze zrestartować Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Nie znaleziono kopii zapasowej"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Przywracanie zakończyło się niepowodzeniem"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Wybierz kopiie zapasowÄ…"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Kopia zapasowa"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Przywróć"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "następnie zjedź z ronda na %1$s %2$s"
diff --git a/po/pms.po.in b/po/pms.po.in
deleted file mode 100644
index e52ac59fb..000000000
--- a/po/pms.po.in
+++ /dev/null
@@ -1,2739 +0,0 @@
-# Piemontese translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Simone Briatore https://launchpad.net/~simone-bri
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:00+0000\n"
-"Last-Translator: Simone Briatore <simone.bri@alice.it>\n"
-"Language-Team: Piemontese <pms@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: pms\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr "a prima"
-
-msgid "second"
-msgstr "a sgunda"
-
-msgid "third"
-msgstr "a tersa"
-
-msgid "fourth"
-msgstr "a quarta"
-
-msgid "fifth"
-msgstr "a quinta"
-
-msgid "sixth"
-msgstr "a sescia"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "prima surtia"
-
-msgid "second exit"
-msgstr "sgunda surtia"
-
-msgid "third exit"
-msgstr "tersa surtia"
-
-msgid "fourth exit"
-msgstr "quarta surtia"
-
-msgid "fifth exit"
-msgstr "quinta surtia"
-
-msgid "sixth exit"
-msgstr "sescia surtia"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d chilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "tra %d.%d chilometer"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "in tla rampa"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr ""
-
-msgid "now"
-msgstr ""
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Surtia"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/pt.po.in b/po/pt.po.in
deleted file mode 100644
index 418c05136..000000000
--- a/po/pt.po.in
+++ /dev/null
@@ -1,2826 +0,0 @@
-# Portuguese translations for navit
-# 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:
-# CaioNavas https://launchpad.net/~webmaster-caiomnavas
-# Carla Pita https://launchpad.net/~carla-pita
-# Diogo Lavareda https://launchpad.net/~diogolavareda
-# Ivo Xavier https://launchpad.net/~ivoxavier
-# Joel Patrão https://launchpad.net/~jpatrao
-# João Pirralha https://launchpad.net/~joaopirralha
-# Rui Correia https://launchpad.net/~rds-correia
-# Skippern https://launchpad.net/~gay-today
-# Sérgio Marques https://launchpad.net/~sergio+marques
-# Tiago Silva https://launchpad.net/~tiagosilva
-# TopoLusitania https://launchpad.net/~topolusitania
-# brukutu https://launchpad.net/~brukutu99
-# eSkiSo https://launchpad.net/~wise-gdr
-# lezurdis https://launchpad.net/~f-dos-santos
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2017-06-26 15:54+0000\n"
-"Last-Translator: João Pirralha <joaopirralha@gmail.com>\n"
-"Language-Team: Portuguese <pt@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: pt\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Executando do diretório de origem\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "definindo %s para %s\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zero"
-
-msgid "first"
-msgstr "primeira"
-
-msgid "second"
-msgstr "segunda"
-
-msgid "third"
-msgstr "terceira"
-
-msgid "fourth"
-msgstr "quarta"
-
-msgid "fifth"
-msgstr "quinta"
-
-msgid "sixth"
-msgstr "sexta"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "saída zero"
-
-msgid "first exit"
-msgstr "primeira saída"
-
-msgid "second exit"
-msgstr "segunda saída"
-
-msgid "third exit"
-msgstr "terceira saída"
-
-msgid "fourth exit"
-msgstr "quarta saída"
-
-msgid "fifth exit"
-msgstr "quinta saída"
-
-msgid "sixth exit"
-msgstr "sexta saída"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d pés"
-
-#, c-format
-msgid "in %d feet"
-msgstr "em %d pés"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d milhas"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "em %d.%d milhas"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "uma milha"
-msgstr[1] "%d milhas"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "em uma milha"
-msgstr[1] "em %d milhas"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metros"
-
-#, c-format
-msgid "in %d meters"
-msgstr "em %d metros"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d quilómetro"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "em %d.%d quilómetros"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "um quilómetro"
-msgstr[1] "%d quilómetros"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "em um quilómetro"
-msgstr[1] "em %d quilómetros"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$spara %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$spara %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$spara o %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$spara a %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$spara %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "no acesso à auto-estrada"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sem %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sno %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sna %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sem %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sna %s"
-
-msgid "When possible, please turn around"
-msgstr "Quando for possível, inverta o sentido de marcha"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "rumo a %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Siga a estrada para a próxima %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Entre na próxima rotunda"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Entre na rotunda %s"
-
-msgid "then enter the roundabout"
-msgstr "e entre na rotunda"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Saia da rotunda na %1$s %2$s"
-
-msgid "soon"
-msgstr "logo"
-
-msgid "now"
-msgstr "agora"
-
-msgid "then"
-msgstr "e depois"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "e juntar à direita%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Juntar à direita %1$s%2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "e juntar à esquerda%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Juntar à esquerda %1$s%2$s"
-
-msgid "on your left"
-msgstr "à sua esquerda"
-
-msgid "on your right"
-msgstr "à sua direita"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Saia %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Saia na saída %1$s %2$s%3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "no trevo"
-
-msgid "at exit"
-msgstr "na saída"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "e avance%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "Avance %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "e continue à direita%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "Continue à direita %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "e continue à esquerda%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "Continue à esquerda %1$s%2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "à direita"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "à esquerda"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "ligeiramente "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "apertadamente "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "depois apanhe a %1$s estrada para %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Apanhe a %1$s estrada para a %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "depois de %i estradas"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Vire %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "e dê meia-volta à esquerda"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Dê meia-volta à esquerda %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "e dê meia-volta à direita"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Dê meia-volta à direita %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "siga"
-
-msgid "then you have reached your destination."
-msgstr "depois chegou ao seu destino."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Chega ao seu destino %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Trevo"
-
-msgid "Exit"
-msgstr "Saída"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posição"
-
-msgid "Command"
-msgstr "Instrução"
-
-msgid "Length"
-msgstr "Distância"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Duração"
-
-msgid "Destination Length"
-msgstr "Distância ao destino"
-
-msgid "Destination Time"
-msgstr "Duração até ao destino"
-
-msgid "Roadbook"
-msgstr "Descrição da rota"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Ponto %d"
-
-msgid "Visit before..."
-msgstr "Visitar antes de..."
-
-msgid "Set as position"
-msgstr "Definir como posição"
-
-msgid "Set as destination"
-msgstr "Definir como destino"
-
-msgid "Add as bookmark"
-msgstr "Adicionar como marcador"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Ponto 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Coordenadas: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Emirados Ãrabes Unidos"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afeganistão"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antígua e Barbados"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilha"
-
-#. 008
-msgid "Albania"
-msgstr "Albânia"
-
-#. 051
-msgid "Armenia"
-msgstr "Arménia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antilhas Holandesas"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antártida"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Americana"
-
-#. 040
-msgid "Austria"
-msgstr "Ãustria"
-
-#. 036
-msgid "Australia"
-msgstr "Austrália"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ilhas Aland"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbeijão"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bósnia e Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Bélgica"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgária"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benim"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "São Bartolomeu"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudas"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolívia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Sint Eustatius e Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brasil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Butão"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Ilha Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botsuana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorrússia"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canadá"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Ilhas Cocos"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "República Democrática do Congo"
-
-#. 140
-msgid "Central African Republic"
-msgstr "República Centro Africana"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Suíça"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Costa do Marfim"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Ilhas Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Camarões"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Colômbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cabo Verde"
-
-#. 531
-msgid "Curacao"
-msgstr "Coração"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Ilha Natal"
-
-#. 196
-msgid "Cyprus"
-msgstr "Chipre"
-
-#. 203
-msgid "Czech Republic"
-msgstr "República Checa"
-
-#. 276
-msgid "Germany"
-msgstr "Alemanha"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Dinamarca"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "República Dominicana"
-
-#. 012
-msgid "Algeria"
-msgstr "Argélia"
-
-#. 218
-msgid "Ecuador"
-msgstr "Equador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estónia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egito"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara Ocidental"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritreia"
-
-#. 724
-msgid "Spain"
-msgstr "Espanha"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiópia"
-
-#. 246
-msgid "Finland"
-msgstr "Finlândia"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Ilhas Falkland (Maldinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Estados Federados da Micronésia"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Ilhas Faroé"
-
-#. 250
-msgid "France"
-msgstr "França"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabão"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Reino Unido"
-
-#. 308
-msgid "Grenada"
-msgstr "Granada"
-
-#. 268
-msgid "Georgia"
-msgstr "Geórgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guiana Francesa"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernesei"
-
-#. 288
-msgid "Ghana"
-msgstr "Gana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Gronelândia"
-
-#. 270
-msgid "Gambia"
-msgstr "Gâmbia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guiné"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guiné Equatorial"
-
-#. 300
-msgid "Greece"
-msgstr "Grécia"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Geórgia do Sul e Ilhas Sandwich do Sul"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guiné Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guiana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Ilha Heard e Ilhas McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croácia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungria"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonésia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Ilha de Man"
-
-#. 356
-msgid "India"
-msgstr "Ãndia"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Território Britânico do Oceano Ãndico"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraque"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "República Islâmica do Irão"
-
-#. 352
-msgid "Iceland"
-msgstr "Islândia"
-
-#. 380
-msgid "Italy"
-msgstr "Itália"
-
-#. 832
-msgid "Jersey"
-msgstr "Jérsia"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordânia"
-
-#. 392
-msgid "Japan"
-msgstr "Japão"
-
-#. 404
-msgid "Kenya"
-msgstr "Quénia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Quirgistão"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambodja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comoros"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "São Cristóvão e Neves"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "República Popular Democrática da Coreia"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "República da Coreia"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Ilhas Caimão"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazaquistão"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Républica Democrática Popular do Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Líbano"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Santa Lúcia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Libéria"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lituânia"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburgo"
-
-#. 428
-msgid "Latvia"
-msgstr "Letónia"
-
-#. 434
-msgid "Libya"
-msgstr "Líbia"
-
-#. 504
-msgid "Morocco"
-msgstr "Marrocos"
-
-#. 492
-msgid "Monaco"
-msgstr "Mónaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "República da Moldávia"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "São Martim (Território Francês)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagáscar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Ilhas Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedónia"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Birmânia"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongólia"
-
-#. 446
-msgid "Macao"
-msgstr "Macau"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Ilhas Marianas do Norte"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinica"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritânia"
-
-#. 500
-msgid "Montserrat"
-msgstr "Monserrate"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Maurícias"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldivas"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "México"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malásia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Moçambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namíbia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nova Caledónia"
-
-#. 562
-msgid "Niger"
-msgstr "Níger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Ilha Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigéria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicarágua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Holanda"
-
-#. 578
-msgid "Norway"
-msgstr "Noruega"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nova Zelândia"
-
-#. 512
-msgid "Oman"
-msgstr "Omã"
-
-#. 591
-msgid "Panama"
-msgstr "Panamá"
-
-#. 604
-msgid "Peru"
-msgstr "Perú"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinésia Francesa"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nova Guiné"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipinas"
-
-#. 586
-msgid "Pakistan"
-msgstr "Paquistão"
-
-#. 616
-msgid "Poland"
-msgstr "Polónia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre e Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Porto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Territórios Palestinos, Ocupados"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguai"
-
-#. 634
-msgid "Qatar"
-msgstr "Catar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunião"
-
-#. 642
-msgid "Romania"
-msgstr "Roménia"
-
-#. 688
-msgid "Serbia"
-msgstr "Sérvia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Federação Russa"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arábia Saudita"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Ilhas Salomão"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudão"
-
-#. 752
-msgid "Sweden"
-msgstr "Suécia"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapura"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Santa Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Eslovénia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard e Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Eslováquia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Serra Leoa"
-
-#. 674
-msgid "San Marino"
-msgstr "São Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somália"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr "Sudão do Sul"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "São Tomé e Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sint Maarten (Território Holandês)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "República Ãrabe da Síria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Suazilândia"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Ilhas Turcas e Caicos"
-
-#. 148
-msgid "Chad"
-msgstr "Chade"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Territórios Franceses do Sul"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tailândia"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajiquistão"
-
-#. 772
-msgid "Tokelau"
-msgstr "Toquelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turquemenistão"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunísia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turquia"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidade e Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, Província da China"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "República Unida da Tânzania"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ucrânia"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Ilhas Menores Exteriores dos Estados Unidos"
-
-#. 840
-msgid "United States"
-msgstr "Estados Unidos da América"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguai"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbequistão"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Santa Sé (Estado Cidade do Vaticano)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "São Vicente e Grenadinas"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Ilhas Virgens Britânicas"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Ilhas Virgens Americanas"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietname"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis e Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Iémen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Maiote"
-
-#. 710
-msgid "South Africa"
-msgstr "Africa do Sul"
-
-#. 894
-msgid "Zambia"
-msgstr "Zâmbia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabué"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Desconhecido, adicione tags \"is_in\" para estas cidades"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-"Utilização do Navit:\n"
-"navit [opções] [ficheiro de configuração]\n"
-"\t-c <ficheiro>: usar <ficheiro> como ficheiro de configuração, em vez de "
-"usar o ficheiro pré-definido.\n"
-"\t-d <n>: define o nível global de saída de depuração para <n> (0=erro, "
-"1=aviso, 2=informação, 3=depuração).\n"
-"\tDefinições do ficheiro de configuração irão ter efeito mesmo quando "
-"definiram um nível superior.\n"
-"\t-h: imprimir esta informação de utilização e sair.\n"
-"\t-v: imprimir a versão e sair.\n"
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-"Ficheiros de configuração navit.xml, navit.xml.local não encontrados\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Erro ao processar o ficheiro '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Utilizando o ficheiro '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-"Erro: Nenhuma configuração encontrada no ficheiro de configuração '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr "Erro ao iniciar a aplicação. Verifique as mensagens de erro.\n"
-
-msgid "unknown street"
-msgstr "rua desconhecida"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Veículo sem nome"
-
-msgid "Failed to write bookmarks file"
-msgstr "Erro ao escrever os marcadores"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Ponto do mapa"
-
-msgid "Car"
-msgstr "Carro"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "País"
-
-msgid "Postal"
-msgstr "Postal"
-
-msgid "Town"
-msgstr "Cidade"
-
-msgid "District"
-msgstr "Distrito"
-
-msgid "Street"
-msgstr "Rua"
-
-msgid "Number"
-msgstr "Número"
-
-msgid "Enter Destination"
-msgstr "Introduza o destino"
-
-msgid "Zip Code"
-msgstr "Código postal"
-
-msgid "City"
-msgstr "Cidade"
-
-msgid "District/Township"
-msgstr "Distrito/Concelho"
-
-msgid "Map"
-msgstr "Mapa"
-
-msgid "Bookmark"
-msgstr "Marcador"
-
-msgid "Destination"
-msgstr "Destino"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "_Exibir"
-
-msgid "_Route"
-msgstr "_Rota"
-
-msgid "_Former Destinations"
-msgstr "Destinos _anteriores"
-
-msgid "_Bookmarks"
-msgstr "_Marcadores"
-
-msgid "_Map"
-msgstr "_Mapa"
-
-msgid "_Layout"
-msgstr "_Esquema"
-
-msgid "_Projection"
-msgstr "_Projeção"
-
-msgid "_Vehicle"
-msgstr "_Veículo"
-
-msgid "Zoom_Out"
-msgstr "_Reduzir"
-
-msgid "Decrease zoom level"
-msgstr "Diminuir nível de ampliação"
-
-msgid "Zoom_In"
-msgstr "_Ampliar"
-
-msgid "Increase zoom level"
-msgstr "Aumentar nível de ampliação"
-
-msgid "_Recalculate"
-msgstr "_Recalcular"
-
-msgid "Redraw map"
-msgstr "Redesenhar mapa"
-
-msgid "_Info"
-msgstr "_Informação"
-
-msgid "Set _destination"
-msgstr "_Definir destino"
-
-msgid "Opens address search dialog"
-msgstr "Abre o diálogo de procura de destino"
-
-msgid "_POI search"
-msgstr "_Pesquisar POI"
-
-msgid "Opens POI search dialog"
-msgstr "Abre o diálogo de pesquisa de POI"
-
-msgid "_Stop Navigation"
-msgstr "Parar _navegação"
-
-msgid "Test"
-msgstr "Teste"
-
-msgid "_Quit"
-msgstr "_Sair"
-
-msgid "Quit the application"
-msgstr "Sair da aplicação"
-
-msgid "Show position _cursor"
-msgstr "Mostrar _cursor de posição"
-
-msgid "_Lock on Road"
-msgstr "_Bloqueio na estrada"
-
-msgid "_Keep orientation to the North"
-msgstr "Manter orientação ao _norte"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Muda a orientação do mapa para o norte ou para o veículo"
-
-msgid "_Roadbook"
-msgstr "_Descrição da rota"
-
-msgid "Show/hide route description"
-msgstr "Mostrar/ocultar descrição da rota"
-
-msgid "_Autozoom"
-msgstr "_Tamanho automático"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Ativar/desativar tamanho automático da ampliação"
-
-msgid "_Fullscreen"
-msgstr "_Ecrã completo"
-
-msgid "Data"
-msgstr "Dados"
-
-msgid "Pharmacy"
-msgstr "Farmácia"
-
-msgid "Restaurant"
-msgstr "Restaurante"
-
-msgid "Restaurant. Fast food"
-msgstr "Restaurante. Comida rápida"
-
-msgid "Hotel"
-msgstr "Hotel"
-
-msgid "Car parking"
-msgstr "Estacionamento para carros"
-
-msgid "Fuel station"
-msgstr "Posto de abastecimento"
-
-msgid "Bank"
-msgstr "Banco"
-
-msgid "Hospital"
-msgstr "Hospital"
-
-msgid "Cinema"
-msgstr "Cinema"
-
-msgid "Train station"
-msgstr "Estação de comboios"
-
-msgid "School"
-msgstr "Escola"
-
-msgid "Police"
-msgstr "Polícia"
-
-msgid "Justice"
-msgstr "Justiça"
-
-msgid "Taxi"
-msgstr "Táxi"
-
-msgid "Shopping"
-msgstr "Compras"
-
-msgid "Distance from screen center (km)"
-msgstr "Distância ao centro do ecrã (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "POI %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Definir destino para %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "Definir mapa para %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "Definir próxima visita para %ld, %ld \n"
-
-msgid "POI search"
-msgstr "Pesquisar POIs"
-
-msgid "Select a category"
-msgstr "Selecione uma categoria"
-
-msgid "Select a distance to look for (km)"
-msgstr "Selecione a distância a pesquisar (km)"
-
-msgid "Select a POI"
-msgstr "Selecione um POI"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Categoria"
-
-msgid "Direction"
-msgstr "Direção"
-
-msgid "Distance(m)"
-msgstr "Distância (m)"
-
-msgid "Name"
-msgstr "Nome"
-
-msgid "Visit Before"
-msgstr "Visitar antes"
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SO"
-
-msgid "W"
-msgstr "O"
-
-msgid "NW"
-msgstr "NO"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Não"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Rota %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Rota 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Ajuda"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Ponto %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Selecione o ponto a inserir ao anterior"
-
-msgid "View in Browser"
-msgstr "Ver no navegador"
-
-msgid "Item type"
-msgstr "Tipo de item"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Ruas"
-
-msgid "House numbers"
-msgstr "Números da casa"
-
-msgid "View Attributes"
-msgstr "Atributos de vista"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Definir como posição (desativar veículo)"
-
-msgid "POIs"
-msgstr "POIs"
-
-msgid "View on map"
-msgstr "Ver no mapa"
-
-msgid "Remove search results from the map"
-msgstr "Remover resultados do mapa"
-
-msgid "Show results on the map"
-msgstr "Mostrar resultados no mapa"
-
-msgid "Cut Bookmark"
-msgstr "Cortar marcador"
-
-msgid "Copy Bookmark"
-msgstr "Copiar marcador"
-
-msgid "Rename Bookmark"
-msgstr "Mudar nome do marcador"
-
-msgid "Paste Bookmark"
-msgstr "Colar marcador"
-
-msgid "Delete Bookmark"
-msgstr "Eliminar marcador"
-
-msgid "Delete waypoint"
-msgstr "Eliminar ponto"
-
-msgid "Bookmarks"
-msgstr "Marcadores"
-
-msgid "Bookmarks as waypoints"
-msgstr "Marcadores como pontos"
-
-msgid "Save waypoints"
-msgstr "Gravar ponto"
-
-msgid "Replace with waypoints"
-msgstr "Substituir por pontos"
-
-msgid "Delete Folder"
-msgstr "Eliminar pasta"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Adicionar pasta de marcadores"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Colar marcador"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Marcador %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Transferir %s"
-
-msgid "Map Download"
-msgstr "Transferência de mapas"
-
-msgid "Active"
-msgstr "Ativo"
-
-msgid "Download Enabled"
-msgstr "Transferência ativa"
-
-msgid "Download completely"
-msgstr "Transferência terminada"
-
-msgid "Show Satellite Status"
-msgstr "Mostrar estado do satélite"
-
-msgid " Elevation "
-msgstr " Elevação "
-
-msgid " Azimuth "
-msgstr " Azimute "
-
-msgid "Show NMEA Data"
-msgstr "Mostrar Dados NMEA"
-
-msgid "car"
-msgstr "carro"
-
-msgid "bike"
-msgstr "bicicleta"
-
-msgid "pedestrian"
-msgstr "pé"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Perfil atual: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Alterar perfil para: %s"
-
-msgid "Set as active"
-msgstr "Definir como ativo"
-
-msgid "Show Satellite status"
-msgstr "Mostrar estado do satélite"
-
-msgid "Show NMEA data"
-msgstr "Mostrar dados NMEA"
-
-msgid "Add Bookmark"
-msgstr "Adicionar marcador"
-
-msgid "Rename"
-msgstr "Mudar nome"
-
-msgid "About Navit"
-msgstr "Sobre o Navit"
-
-#. Authors
-msgid "By"
-msgstr "De"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "E toda a equipa do Navit"
-
-msgid "members and contributors."
-msgstr "membros e contribuidores."
-
-msgid "Waypoints"
-msgstr "Pontos"
-
-msgid "Enter Coordinates"
-msgstr "Introduzir coordenadas"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Latitude Longitude"
-
-msgid "Enter coordinates, for example:"
-msgstr "Introduza as coordenadas, por exemplo:"
-
-msgid "Vehicle"
-msgstr "Veículo"
-
-msgid "Rules"
-msgstr "Regras"
-
-msgid "Lock on road"
-msgstr "Bloqueio na estrada"
-
-msgid "Northing"
-msgstr "Para Norte"
-
-msgid "Map follows Vehicle"
-msgstr "Mapa segue veículo"
-
-msgid "Plan with Waypoints"
-msgstr "Plano com pontos"
-
-msgid "Maps"
-msgstr "Mapas"
-
-msgid "Layout"
-msgstr "Esquema"
-
-msgid "Height Profile"
-msgstr "Perfil de altitude"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-"por favor instale um mapa *.heightlines.bin para fornecer dados de elevação"
-
-msgid "The route must cross at least 2 heightlines"
-msgstr "A rota deve cruzar pelo menos 2 linhas de altura"
-
-msgid "Route Description"
-msgstr "Descrição da rota"
-
-msgid "Show Locale"
-msgstr "Exibir região e idioma"
-
-msgid "Network info"
-msgstr "Informação da rede"
-
-msgid "Former Destinations"
-msgstr "Destinos anteriores"
-
-msgid "- No former destinations available -"
-msgstr "- Não existem destinos anteriores -"
-
-msgid "Message"
-msgstr "Mensagem"
-
-msgid "Back"
-msgstr "Recuar"
-
-msgid "Back to map"
-msgstr "Voltar ao mapa"
-
-msgid "Main Menu"
-msgstr "Menu principal"
-
-msgid "House number"
-msgstr "Número de porta"
-
-msgid "Next"
-msgstr "Próximo"
-
-msgid "Prev"
-msgstr "Anterior"
-
-msgid "Return to route!"
-msgstr "Volte à sua rota!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Atenção! Radar!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Diminua a velocidade"
-
-msgid "partial match"
-msgstr "ocorrência parcial"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Procura"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Cidades"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Dados do mapa (c) Colaboradores OpenStreetMap, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-"A atual localização do mapa %s não está disponível\n"
-"Por favor reinicie o Navit após introduzir um cartão SD ou selecionar uma "
-"localização do mapa diferente."
-
-msgid "Downloaded maps"
-msgstr "Mapas transferidos"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"Infelizmente não suportamos mapas maiores que 3.8G no Android, por favor "
-"selecione um mais pequeno."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Rota para aqui"
-
-msgid "Cancel"
-msgstr "Cancelar"
-
-msgid "filenamePath"
-msgstr "nomedoficheiroCaminho"
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-"Nova localização definida para %s\n"
-"Reinicie o Navit para aplicar as alterações."
-
-msgid "Whole Planet"
-msgstr "Planeta"
-
-msgid "Africa"
-msgstr "Ãfrica"
-
-msgid "Canary Islands"
-msgstr "Ilhas Canárias"
-
-msgid "Asia"
-msgstr "Ãsia"
-
-msgid "Korea"
-msgstr "Coreia"
-
-msgid "Taiwan"
-msgstr "Taiwan"
-
-msgid "UAE+Other"
-msgstr "EAU e outros"
-
-msgid "Oceania"
-msgstr "Oceania"
-
-msgid "Tasmania"
-msgstr "Tasmânia"
-
-msgid "Victoria"
-msgstr "Vitória"
-
-msgid "New South Wales"
-msgstr "Nova Gales do Sul"
-
-msgid "Europe"
-msgstr "Europa"
-
-msgid "Western Europe"
-msgstr "Europa Ocidental"
-
-msgid "Azores"
-msgstr "Açores"
-
-msgid "BeNeLux"
-msgstr "BeNeLux"
-
-msgid "Alsace"
-msgstr "Alsácia"
-
-msgid "Aquitaine"
-msgstr "Aquitaine"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Normandia"
-
-msgid "Bourgogne"
-msgstr "Burgonha"
-
-msgid "Bretagne"
-msgstr "Bretanha"
-
-msgid "Centre"
-msgstr "Centro"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardenne"
-
-msgid "Corse"
-msgstr "Córsega"
-
-msgid "Franche-Comte"
-msgstr "Franche-Comte"
-
-msgid "Haute-Normandie"
-msgstr "Alta Normandia"
-
-msgid "Ile-de-France"
-msgstr "Ilha de França"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc-Roussillon"
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lorraine"
-
-msgid "Midi-Pyrenees"
-msgstr "Midi-Pyrenees"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-pas-de-Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Pays-de-la-Loire"
-
-msgid "Picardie"
-msgstr "Picardie"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provença-Alpes-Cote-d-Azur"
-
-msgid "Rhone-Alpes"
-msgstr "Rhone-Alpes"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-msgid "Bayern"
-msgstr "Bayern"
-
-msgid "Mittelfranken"
-msgstr "Mittelfranken"
-
-msgid "Niederbayern"
-msgstr "Niederbayern"
-
-msgid "Oberbayern"
-msgstr "Oberbayern"
-
-msgid "Oberfranken"
-msgstr "Oberfranken"
-
-msgid "Oberpfalz"
-msgstr "Oberpfalz"
-
-msgid "Schwaben"
-msgstr "Schwaben"
-
-msgid "Unterfranken"
-msgstr "Unterfranken"
-
-msgid "Berlin"
-msgstr "Berlim"
-
-msgid "Brandenburg"
-msgstr "Brandenburgo"
-
-msgid "Bremen"
-msgstr "Bremen"
-
-msgid "Hamburg"
-msgstr "Hamburgo"
-
-msgid "Hessen"
-msgstr "Hessen"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Mecklenburg-Vorpommern"
-
-msgid "Niedersachsen"
-msgstr "Niedersachsen"
-
-msgid "Nordrhein-westfalen"
-msgstr "Nordrhein-westfalen"
-
-msgid "Rheinland-Pfalz"
-msgstr "Rheinland-Pfalz"
-
-msgid "Saarland"
-msgstr "Saarland"
-
-msgid "Sachsen-Anhalt"
-msgstr "Sachsen-Anhalt"
-
-msgid "Sachsen"
-msgstr "Sachsen"
-
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-msgid "Thueringen"
-msgstr "Thueringen"
-
-msgid "Mallorca"
-msgstr "Maiorca"
-
-msgid "Galicia"
-msgstr "Galiza"
-
-msgid "Scandinavia"
-msgstr "Escandinávia"
-
-msgid "England"
-msgstr "Inglaterra"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "Yorkshire do Sul com hull"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "Yorkshire do Sul"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Escócia"
-
-msgid "Wales"
-msgstr "Gales"
-
-msgid "Crete"
-msgstr "Creta"
-
-msgid "North America"
-msgstr "América do Norte"
-
-msgid "Alaska"
-msgstr "Alasca"
-
-msgid "Hawaii"
-msgstr "Havai"
-
-msgid "USA"
-msgstr "EUA"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (exceto Alasca e Havai)"
-
-msgid "Midwest"
-msgstr "Midwest"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Nordeste"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Pacífico"
-
-msgid "South"
-msgstr "Sul"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "Distrito de Columbia"
-
-msgid "Florida"
-msgstr "Flórida"
-
-msgid "Louisiana"
-msgstr "Louisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virgínia"
-
-msgid "West Virginia"
-msgstr "Virginia Ocidental"
-
-msgid "West"
-msgstr "Oeste"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "Califórnia"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "Novo México"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Washington"
-
-msgid "South+Middle America"
-msgstr "América Central e América do Sul"
-
-msgid "Guyane Francaise"
-msgstr "Guiana Francesa"
-
-msgid "downloading"
-msgstr "a transferir"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "pronto"
-
-msgid "Media selected for map storage is not available"
-msgstr "A unidade selecionada para armazenar mapas não está dispoível"
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Não existe espaço suficiente"
-
-msgid "Error downloading map!"
-msgstr "Erro ao transferir o mapa!"
-
-msgid "Error writing map!"
-msgstr "Erro ao escrever o mapa!"
-
-msgid "Map download aborted!"
-msgstr "Transferência interrompida!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Duração estimada"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Transferência do mapa"
-
-msgid "Vehicle Position"
-msgstr "Posição do veículo"
-
-msgid "Main menu"
-msgstr "Menu principal"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Mostrar\n"
-"mapa"
-
-msgid "Settings"
-msgstr "Definições"
-
-msgid "Tools"
-msgstr "Ferramentas"
-
-msgid "Route"
-msgstr "Rota"
-
-msgid "About"
-msgstr "Sobre"
-
-msgid "Quit"
-msgstr "Sair"
-
-msgid "Actions"
-msgstr "Ações"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Destinos\n"
-"anteriores"
-
-msgid "Coordinates"
-msgstr "Coordenadas"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Parar\n"
-"navegação"
-
-msgid "Display"
-msgstr "Visualização"
-
-msgid "Fullscreen"
-msgstr "Ecrã completo"
-
-msgid "Window Mode"
-msgstr "Modo de janela"
-
-msgid "Auto zoom"
-msgstr "Ampliação automática"
-
-msgid "Manual zoom"
-msgstr "Ampliação manual"
-
-msgid "Layers"
-msgstr "Camadas"
-
-msgid "Zoom to route"
-msgstr "Ampliar para a rota"
-
-msgid "Description"
-msgstr "Descrição"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Descartar\n"
-"ponto anterior"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Descartar\n"
-"próximo ponto"
-
-msgid "Satellite Status"
-msgstr "Estado do satélite"
-
-msgid "NMEA Data"
-msgstr "Dados NMEA"
-
-msgid "car_shortest"
-msgstr "carro_mais_curto"
-
-msgid "car_avoid_tolls"
-msgstr "carro_evitar_portagens"
-
-msgid "car_pedantic"
-msgstr "carro_pedante"
-
-msgid "horse"
-msgstr "cavalo"
-
-msgid "Truck"
-msgstr "Camião"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Sim"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit iniciado"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit em execução"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Bem-vindo ao Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Obrigado por instalar o Navit!\n"
-"\n"
-"Para começar, selecione \"Transferir mapas\" no menu para transferir um "
-"mapa. Nota: o tamanho do ficheiro de mapa pode ser bastante grande (>50MB) - "
-"recomenda-se a utilização de uma rede wifi.\n"
-"\n"
-"Dados do mapa: (c) colaboradores OpenStreetMap\n"
-"\n"
-"Esperamos que goste do Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "Sim"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Mais informações"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Ampliar"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Reduzir"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Transferir mapas"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Ativar POIs"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Sair"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Cópia seg. / Restauro"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr "Definir localização do mapa"
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Eliminar mapa?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "A transferir:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Erro ao transferir o mapa."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Transferência cancelada"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-"Localização indisponível. Abra novamente após determinar a localização."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Mapas que contêm a posição atual"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Procura de endereço"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Introduza o destino"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Ocorrências parciais"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "A procurar..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Endereço não encontrado"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "A obter resultados"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Carregando resultados"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Nenhum resultado encontrado"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Nenhum texto introduzido"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Definir destino para:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Escolha uma ação"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Por favor insira um cartão SD"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "A criar cópia de segurança..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "A restaurar..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Falha ao criar o diretório da cópia de segurança"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "A cópia de segurança falhou"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Nenhuma cópia de segurança encontrada"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Falha ao restaurar"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Cópia de segurança efetuada com sucesso"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Restauro efetuado\n"
-"Reinicie o Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Cópia de segurança não encontrada"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Erro ao restaurar"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Escolha a cópia de segurança"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Cópia de segurança"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Restauro"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr "Dados do motor de síntese de voz em falta no sistema"
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-"O Navit pode usar qualquer motor de síntese de voz no dispositivo. O motor "
-"atualmente selecionado reporta não suportar o seu idioma. Pedir ao sistema "
-"para exibir o diálogo de transferência de voz?"
-
-#. 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 ""
-"O Navit necessita de permissão para aceder ao GPS e ler o mapa.\n"
-"Se mudar de ideias por favor reinicie o Navit e conceda estas permissões."
-
-#. Android resource: @strings/permissions_info_box_title
-msgid "One or more ungranted permissions"
-msgstr "Uma ou mais permissões não concedidas"
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "e saia da rotunda na %1$s %2$s"
diff --git a/po/pt_BR.po.in b/po/pt_BR.po.in
deleted file mode 100644
index 3c4d5c6d7..000000000
--- a/po/pt_BR.po.in
+++ /dev/null
@@ -1,2785 +0,0 @@
-# Brazilian Portuguese translations for navit
-# Copyright (C) 2006-2015 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Carla Pita https://launchpad.net/~carla-pita
-# Francois Thunus https://launchpad.net/~thunus
-# Gustavo Guidorizzi https://launchpad.net/~gguido
-# Helder Santana https://launchpad.net/~helder-bs-santana
-# Jairo Roberto Duarte https://launchpad.net/~jairo58
-# Julio Alexander Sieg https://launchpad.net/~julio-sieg
-# Leonardo Hamada https://launchpad.net/~leonardohamada
-# Luzemário https://launchpad.net/~luzemario
-# Matheus Cavalcante https://launchpad.net/~suetamac
-# Píndaro GBarbosa https://launchpad.net/~diecavallax
-# Rafael Nossal https://launchpad.net/~rafaelnossal
-# Roger https://launchpad.net/~rogerio-souza
-# Skippern https://launchpad.net/~gay-today
-# guilherme https://launchpad.net/~guidicavalcanti
-# hvera https://launchpad.net/~hamilton-listas
-# paulohm https://launchpad.net/~paulohm
-# pingflood https://launchpad.net/~pingflood
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-27 11:44+0000\n"
-"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
-"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"Language: pt_BR\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Executando do diretório de origem\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "ajustando de '%s' para '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zero"
-
-msgid "first"
-msgstr "primeira"
-
-msgid "second"
-msgstr "segunda"
-
-msgid "third"
-msgstr "terceira"
-
-msgid "fourth"
-msgstr "quarta"
-
-msgid "fifth"
-msgstr "quinta"
-
-msgid "sixth"
-msgstr "sexta"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "saída zero"
-
-msgid "first exit"
-msgstr "primeira saída"
-
-msgid "second exit"
-msgstr "segunda saída"
-
-msgid "third exit"
-msgstr "terceira saída"
-
-msgid "fourth exit"
-msgstr "quarta saída"
-
-msgid "fifth exit"
-msgstr "quinta saída"
-
-msgid "sixth exit"
-msgstr "sexta saída"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d pés"
-
-#, c-format
-msgid "in %d feet"
-msgstr "em %d pés"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d milhas"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "em %d.%d milhas"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "uma milha"
-msgstr[1] "%d milhas"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "em uma milha"
-msgstr[1] "em %d milhas"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metros"
-
-#, c-format
-msgid "in %d meters"
-msgstr "em %d metros"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d quilômetros"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "em %d.%d quilômetros"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "um quilômetro"
-msgstr[1] "%d quilômetros"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "em um quilômetro"
-msgstr[1] "em %d quilômetros"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$sno %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "na rampa"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sna %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sno %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sna %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sem %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sna %s"
-
-msgid "When possible, please turn around"
-msgstr "Quando possível, favor retornar"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "em direção a %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Continue na via por %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Entre na rotatória em seguida"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Entre na rotatória %s"
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Deixe a rotatória na %1$s %2$s"
-
-msgid "soon"
-msgstr "em breve"
-
-msgid "now"
-msgstr "agora"
-
-msgid "then"
-msgstr "em seguida"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "em seguida vire a %1$s|esquerda"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Vire a %1$s%2$s|esquerda"
-
-msgid "on your left"
-msgstr "à sua esquerda"
-
-msgid "on your right"
-msgstr "à sua direita"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Pegue a saída %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Pegue a saída %1$s %2$s %3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "no cruzamento"
-
-msgid "at exit"
-msgstr "na saída"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "em seguinda, siga%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "Siga %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "então mantenha a direita%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "Mantenha a direita %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "então mantenha a esquerda%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "Mantenha a esquerda %1$s%2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "à direita"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "à esquerda"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "levemente "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "fortemente "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Pegue a %1$s via para a %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "após %i vias"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Vire a %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "então faça o retorno"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Faça o retorno a esquerda %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "então faça o retorno a direita"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Faça o retorno a direita %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "siga por"
-
-msgid "then you have reached your destination."
-msgstr "então você chegará ao destino."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Você chegará ao destino %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Trevo"
-
-msgid "Exit"
-msgstr "Saída"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Posição"
-
-msgid "Command"
-msgstr "Comando"
-
-msgid "Length"
-msgstr "Distância"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tempo"
-
-msgid "Destination Length"
-msgstr "Distância até o Destino"
-
-msgid "Destination Time"
-msgstr "Tempo até o Destino"
-
-msgid "Roadbook"
-msgstr "Guia de estrada"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Ponto %d"
-
-msgid "Visit before..."
-msgstr "Adicionar à rota"
-
-msgid "Set as position"
-msgstr "Definir como posição"
-
-msgid "Set as destination"
-msgstr "Definir como destino"
-
-msgid "Add as bookmark"
-msgstr "Adicionar como favorito"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Ponto 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Coordenada na tela : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Emirados Ãrabes Unidos"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afeganistão"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antígua e Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albânia"
-
-#. 051
-msgid "Armenia"
-msgstr "Armênia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antilhas Holandesas"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antártida"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Americana"
-
-#. 040
-msgid "Austria"
-msgstr "Ãustria"
-
-#. 036
-msgid "Australia"
-msgstr "Austrália"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ilhas Aland"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaijão"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bósnia e Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Bélgica"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgária"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrein"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "São Bartolomeu"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolívia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, São Eustácio e Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brasil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Butão"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Ilha Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorrússia"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canadá"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Ilhas Cocos (Keeling)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "República Democrática do Congo"
-
-#. 140
-msgid "Central African Republic"
-msgstr "República Centro-Africana"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Suíça"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Costa do Marfim"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Ilhas Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Camarões"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Colômbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cabo Verde"
-
-#. 531
-msgid "Curacao"
-msgstr "Curaçau"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Ilha Christmas"
-
-#. 196
-msgid "Cyprus"
-msgstr "Chipre"
-
-#. 203
-msgid "Czech Republic"
-msgstr "República Tcheca"
-
-#. 276
-msgid "Germany"
-msgstr "Alemanha"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Dinamarca"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "República Dominicana"
-
-#. 012
-msgid "Algeria"
-msgstr "Argélia"
-
-#. 218
-msgid "Ecuador"
-msgstr "Equador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estônia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egito"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Saara Ocidental"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritréia"
-
-#. 724
-msgid "Spain"
-msgstr "Espanha"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiópia"
-
-#. 246
-msgid "Finland"
-msgstr "Finlândia"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Ilhas Falkland (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronésia"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Ilhas Faroé"
-
-#. 250
-msgid "France"
-msgstr "França"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabão"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Reino Unido"
-
-#. 308
-msgid "Grenada"
-msgstr "Granada"
-
-#. 268
-msgid "Georgia"
-msgstr "Geórgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guiana Francesa"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Gana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groelândia"
-
-#. 270
-msgid "Gambia"
-msgstr "Gâmbia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guiné"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guiné Equatorial"
-
-#. 300
-msgid "Greece"
-msgstr "Grécia"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Ilhas Geórgia e Sanduíche do Sul"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guiné-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guiana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Ilha Heard e Ilhas McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croácia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungria"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonésia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Ilha de Man"
-
-#. 356
-msgid "India"
-msgstr "Ãndia"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Território Britânico do Oceano Ãndico"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraque"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Irã"
-
-#. 352
-msgid "Iceland"
-msgstr "Islândia"
-
-#. 380
-msgid "Italy"
-msgstr "Itália"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordânia"
-
-#. 392
-msgid "Japan"
-msgstr "Japão"
-
-#. 404
-msgid "Kenya"
-msgstr "Quênia"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Quirguistão"
-
-#. 116
-msgid "Cambodia"
-msgstr "Camboja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comores"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "São Cristóvão e Névis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Coréia do Norte"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Coréia do Sul"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Ilhas Caiman"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Cazaquistão"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Líbano"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Santa Lúcia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Siri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Libéria"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lituânia"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburgo"
-
-#. 428
-msgid "Latvia"
-msgstr "Letônia"
-
-#. 434
-msgid "Libya"
-msgstr "Líbia"
-
-#. 504
-msgid "Morocco"
-msgstr "Marrocos"
-
-#. 492
-msgid "Monaco"
-msgstr "Mônaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldávia"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "São Martin (parte francesa)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Ilhas Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedônia"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Mianmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongólia"
-
-#. 446
-msgid "Macao"
-msgstr "Macau"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Ilhas Marianas do Norte"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinica"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritânia"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Ilhas Maurício"
-
-#. 462
-msgid "Maldives"
-msgstr "Ilhas Maldivas"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "México"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malásia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Moçambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namíbia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nova Caledônia"
-
-#. 562
-msgid "Niger"
-msgstr "Níger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Ilha Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigéria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicarágua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Holanda"
-
-#. 578
-msgid "Norway"
-msgstr "Noruega"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Naurú"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nova Zelândia"
-
-#. 512
-msgid "Oman"
-msgstr "Omã"
-
-#. 591
-msgid "Panama"
-msgstr "Panamá"
-
-#. 604
-msgid "Peru"
-msgstr "Perú"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinésia francesa"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nova Guiné"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipinas"
-
-#. 586
-msgid "Pakistan"
-msgstr "Paquistão"
-
-#. 616
-msgid "Poland"
-msgstr "Polônia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "São Pedro e Miquelão"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Porto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestina"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguai"
-
-#. 634
-msgid "Qatar"
-msgstr "Catar"
-
-#. 638
-msgid "Reunion"
-msgstr "Ilhas Reunião"
-
-#. 642
-msgid "Romania"
-msgstr "Romênia"
-
-#. 688
-msgid "Serbia"
-msgstr "Sérvia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Rússia"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arábia Saudita"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Ilhas Salomão"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seicheles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudão"
-
-#. 752
-msgid "Sweden"
-msgstr "Suécia"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapura"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Santa Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Eslovênia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard e Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Eslováquia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Serra Leoa"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somália"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr "Sudão do Sul"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "São Tomé e Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "São Martinho"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Síria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Suazilândia"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Ilhas Turcas e Caicos"
-
-#. 148
-msgid "Chad"
-msgstr "Chade"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Territórios Franceses do Sul"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tailândia"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajiquistão"
-
-#. 772
-msgid "Tokelau"
-msgstr "Toquelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turcomenistão"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunísia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turquia"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad e Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzânia"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ucrânia"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Ilhas Menores Distantes dos Estados Unidos"
-
-#. 840
-msgid "United States"
-msgstr "Estados Unidos"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguai"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbequistão"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vaticano"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "São Vicente e Granadinas"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Ilhas Virgens Britânicas"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Ilhas Virgens (Estados Unidos)"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnã"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis e Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Iêmen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Ãfrica do Sul"
-
-#. 894
-msgid "Zambia"
-msgstr "Zâmbia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbábue"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Desconhecido, adicione tags \"is_in\" para essas cidades"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-"empregado no navit:\n"
-"navit [opções] [arquivo de configuração]\n"
-"\t-c <arquivo>: uso <arquivo> como arquivo de configuração, em vez de usar "
-"arquivo padrão.\n"
-"\t-d <n>: definir o nível de saída de depuração global para <n> (0=erro, "
-"1=aviso, 2=info, 3=depuração).\n"
-"\tConfigurações de arquivo de configuração ainda terão efeito quando "
-"montados num nível superior.\n"
-"\t-h: imprimir esta informação de utilização e sair.\n"
-"\t-v: imprimir a versão e sair.\n"
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-"Nenhum arquivo de configuração navit.xml, navit.xml.local foi encontrado\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Erro ao analizar o arquivo de configuração '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Utilizando arquivo de configuração '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Erro: Nenhuma configuração encontrada no arquivo '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Inicialização interna falhou, finalizando. Verifique mensagens de erro "
-"anteriores.\n"
-
-msgid "unknown street"
-msgstr "rua desconhecida"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Veículo sem nome"
-
-msgid "Failed to write bookmarks file"
-msgstr "Falha ao gravar o arquivo de favoritos"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Ponto no Mapa"
-
-msgid "Car"
-msgstr "Carro"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "País"
-
-msgid "Postal"
-msgstr "Postal"
-
-msgid "Town"
-msgstr "Cidade"
-
-msgid "District"
-msgstr "Distrito"
-
-msgid "Street"
-msgstr "Rua"
-
-msgid "Number"
-msgstr "Número"
-
-msgid "Enter Destination"
-msgstr "Digite o destino"
-
-msgid "Zip Code"
-msgstr "CEP"
-
-msgid "City"
-msgstr "Cidade"
-
-msgid "District/Township"
-msgstr "Distrito/Comunidade"
-
-msgid "Map"
-msgstr "Mapa"
-
-msgid "Bookmark"
-msgstr "Favorito"
-
-msgid "Destination"
-msgstr "Destino"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "E_xibição"
-
-msgid "_Route"
-msgstr "Ro_ta"
-
-msgid "_Former Destinations"
-msgstr "Destinos _Anteriores"
-
-msgid "_Bookmarks"
-msgstr "Mar_cadores"
-
-msgid "_Map"
-msgstr "_Mapa"
-
-msgid "_Layout"
-msgstr "Dis_posição"
-
-msgid "_Projection"
-msgstr "Pro_jeção"
-
-msgid "_Vehicle"
-msgstr "_Veículo"
-
-msgid "Zoom_Out"
-msgstr "A_fastar"
-
-msgid "Decrease zoom level"
-msgstr "Diminuir o nível de aproximação"
-
-msgid "Zoom_In"
-msgstr "Aproximar"
-
-msgid "Increase zoom level"
-msgstr "Aumentar o nível de aproximação"
-
-msgid "_Recalculate"
-msgstr "_Recalcular"
-
-msgid "Redraw map"
-msgstr "Redesenhar mapa"
-
-msgid "_Info"
-msgstr "_lnformação"
-
-msgid "Set _destination"
-msgstr "Estabelecer _destino"
-
-msgid "Opens address search dialog"
-msgstr "Abre a busca de endereço"
-
-msgid "_POI search"
-msgstr "_Pesquisar POI"
-
-msgid "Opens POI search dialog"
-msgstr "Abre a busca de POIs"
-
-msgid "_Stop Navigation"
-msgstr "_Cessar a Navegação"
-
-msgid "Test"
-msgstr "Teste"
-
-msgid "_Quit"
-msgstr "_Sair"
-
-msgid "Quit the application"
-msgstr "Sair da aplicação"
-
-msgid "Show position _cursor"
-msgstr "Mostrar a posição _cursor"
-
-msgid "_Lock on Road"
-msgstr "_Bloqueio na estrada"
-
-msgid "_Keep orientation to the North"
-msgstr "_Manter orientação para o Norte"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Muda a orientação do mapa para o norte ou o veículo"
-
-msgid "_Roadbook"
-msgstr "_Guia de estrada"
-
-msgid "Show/hide route description"
-msgstr "Mostrar/ocultar descrição da rota"
-
-msgid "_Autozoom"
-msgstr "Aproximação Automática"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Ativar/desativar a mudança automática do nível de aproximação"
-
-msgid "_Fullscreen"
-msgstr "Tela _Cheia"
-
-msgid "Data"
-msgstr "Dados"
-
-msgid "Pharmacy"
-msgstr "Farmácia"
-
-msgid "Restaurant"
-msgstr "Restaurante"
-
-msgid "Restaurant. Fast food"
-msgstr "Restaurante Fast Food"
-
-msgid "Hotel"
-msgstr "Hotel"
-
-msgid "Car parking"
-msgstr "Estacionamento"
-
-msgid "Fuel station"
-msgstr "Posto de combustível"
-
-msgid "Bank"
-msgstr "Banco"
-
-msgid "Hospital"
-msgstr "Hospital"
-
-msgid "Cinema"
-msgstr "Cinema"
-
-msgid "Train station"
-msgstr "Estação de trem"
-
-msgid "School"
-msgstr "Escola"
-
-msgid "Police"
-msgstr "Polícia"
-
-msgid "Justice"
-msgstr "Justiça"
-
-msgid "Taxi"
-msgstr "Táxi"
-
-msgid "Shopping"
-msgstr "Comprando"
-
-msgid "Distance from screen center (km)"
-msgstr "Distância do centro da tela (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "POI %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Definir destino para %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "Definir mapa para o %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "Definir próxima parada parao %ld, %ld \n"
-
-msgid "POI search"
-msgstr "Pesquisar POI"
-
-msgid "Select a category"
-msgstr "Selecione uma categoria"
-
-msgid "Select a distance to look for (km)"
-msgstr "Selecione a distância para pesquisar (km)"
-
-msgid "Select a POI"
-msgstr "Selecione um POI"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Categori­a"
-
-msgid "Direction"
-msgstr "Direção"
-
-msgid "Distance(m)"
-msgstr "Distância (m)"
-
-msgid "Name"
-msgstr "Nome"
-
-msgid "Visit Before"
-msgstr "Visitar Antes"
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "L"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SO"
-
-msgid "W"
-msgstr "O"
-
-msgid "NW"
-msgstr "NO"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Não"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Rota %4.0fkm TEC %02d:%02d"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Rota 0000km TEC 0+00:00"
-
-msgid "Help"
-msgstr "Ajuda"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Ponto %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Selecione o ponto para inserir o novo antes"
-
-msgid "View in Browser"
-msgstr "Ver no Navegador"
-
-msgid "Item type"
-msgstr "Tipo do item"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Ruas"
-
-msgid "House numbers"
-msgstr "Números das casas"
-
-msgid "View Attributes"
-msgstr "Ver Atributos"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Definir como posição (e desativar veículo)"
-
-msgid "POIs"
-msgstr "Pontos de Interesse"
-
-msgid "View on map"
-msgstr "Ver no mapa"
-
-msgid "Remove search results from the map"
-msgstr "Remover resultados da pesquisa do mapa"
-
-msgid "Show results on the map"
-msgstr "Exibir resultados no mapa"
-
-msgid "Cut Bookmark"
-msgstr "Recortar Favorito"
-
-msgid "Copy Bookmark"
-msgstr "Copiar Favorito"
-
-msgid "Rename Bookmark"
-msgstr "Renomear Favorito"
-
-msgid "Paste Bookmark"
-msgstr "Colar Favorito"
-
-msgid "Delete Bookmark"
-msgstr "Apagar Favorito"
-
-msgid "Delete waypoint"
-msgstr "Apagar ponto"
-
-msgid "Bookmarks"
-msgstr "Favoritos"
-
-msgid "Bookmarks as waypoints"
-msgstr "Favoritos como pontos"
-
-msgid "Save waypoints"
-msgstr "Salvar pontos"
-
-msgid "Replace with waypoints"
-msgstr "Substituir com pontos"
-
-msgid "Delete Folder"
-msgstr "Excluir pasta"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Adicionar pasta de Favoritos"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Colar favorito"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Favorito %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Baixar %s"
-
-msgid "Map Download"
-msgstr "Baixar Mapa"
-
-msgid "Active"
-msgstr "Ativo"
-
-msgid "Download Enabled"
-msgstr "Habilitado para Baixar"
-
-msgid "Download completely"
-msgstr "Baixe completamente"
-
-msgid "Show Satellite Status"
-msgstr "Mostrar Estado do Satélite"
-
-msgid " Elevation "
-msgstr " Elevação "
-
-msgid " Azimuth "
-msgstr " Azimute "
-
-msgid "Show NMEA Data"
-msgstr "Mostrar Dados NMEA"
-
-msgid "car"
-msgstr "carro"
-
-msgid "bike"
-msgstr "bicicleta"
-
-msgid "pedestrian"
-msgstr "pedestre"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Perfil atual: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Alterar perfil para: %s"
-
-msgid "Set as active"
-msgstr "Definir como ativo"
-
-msgid "Show Satellite status"
-msgstr "Mostrar estado do Satélite"
-
-msgid "Show NMEA data"
-msgstr "Mostrar dados NMEA"
-
-msgid "Add Bookmark"
-msgstr "Adicionar Favorito"
-
-msgid "Rename"
-msgstr "Renomear"
-
-msgid "About Navit"
-msgstr "Sobre Navit"
-
-#. Authors
-msgid "By"
-msgstr "Por"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "E toda a equipe Navit"
-
-msgid "members and contributors."
-msgstr "membros e colaboradores."
-
-msgid "Waypoints"
-msgstr "Pontos da via"
-
-msgid "Enter Coordinates"
-msgstr "Digite as coordenadas"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Latitude Longitude"
-
-msgid "Enter coordinates, for example:"
-msgstr "Digite as coordenadas, por exemplo:"
-
-msgid "Vehicle"
-msgstr "Veículo"
-
-msgid "Rules"
-msgstr "Regulamento"
-
-msgid "Lock on road"
-msgstr "Bloqueio na estrada"
-
-msgid "Northing"
-msgstr "Ao Norte"
-
-msgid "Map follows Vehicle"
-msgstr "Mapa segue Veículo"
-
-msgid "Plan with Waypoints"
-msgstr "Planeje com pontos"
-
-msgid "Maps"
-msgstr "Mapas"
-
-msgid "Layout"
-msgstr "Layout"
-
-msgid "Height Profile"
-msgstr "Perfil de Altitude"
-
-msgid "Route Description"
-msgstr "Descrição da Rota"
-
-msgid "Show Locale"
-msgstr "Inf. Regionais"
-
-msgid "Former Destinations"
-msgstr "Destinos Anteriores"
-
-msgid "- No former destinations available -"
-msgstr "- Destinos anteriores indisponíveis -"
-
-msgid "Message"
-msgstr "Mensagem"
-
-msgid "Back"
-msgstr "Voltar"
-
-msgid "Back to map"
-msgstr "Voltar ao mapa"
-
-msgid "Main Menu"
-msgstr "Menu Principal"
-
-msgid "House number"
-msgstr "Número da casa"
-
-msgid "Next"
-msgstr "Próximo"
-
-msgid "Prev"
-msgstr "Anterior"
-
-msgid "Return to route!"
-msgstr "Retorne para a rota!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Cuidado! Radar!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Por favor, reduza a velocidade"
-
-msgid "partial match"
-msgstr "resultado parcial"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Pesquisar"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Cidades"
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Rota até aqui"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Dados do mapa (c) colaboradores OpenStreetMap, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "Mapas baixados"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-msgid "Cancel"
-msgstr "Cancelar"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "Todo o Planeta"
-
-msgid "Africa"
-msgstr "Ãfrica"
-
-msgid "Canary Islands"
-msgstr "Ilhas Canárias"
-
-msgid "Asia"
-msgstr "Ãsia"
-
-msgid "Korea"
-msgstr "Coréia"
-
-msgid "Taiwan"
-msgstr "Taiwan"
-
-msgid "UAE+Other"
-msgstr "UAE + Outros"
-
-msgid "Oceania"
-msgstr "Oceania"
-
-msgid "Tasmania"
-msgstr "Tasmânia"
-
-msgid "Victoria"
-msgstr "Vitória"
-
-msgid "New South Wales"
-msgstr "Nova Gales do Sul"
-
-msgid "Europe"
-msgstr "Europa"
-
-msgid "Western Europe"
-msgstr "Europa Ocidental"
-
-msgid "Azores"
-msgstr "Açores"
-
-msgid "BeNeLux"
-msgstr "Países Baixos"
-
-msgid "Alsace"
-msgstr "Alsácia"
-
-msgid "Aquitaine"
-msgstr "Aquitânia"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Baixa-Normandia"
-
-msgid "Bourgogne"
-msgstr "Borgonha"
-
-msgid "Bretagne"
-msgstr "Bretanha"
-
-msgid "Centre"
-msgstr "Centro"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardenne"
-
-msgid "Corse"
-msgstr "Córsega"
-
-msgid "Franche-Comte"
-msgstr "Franche-Comte"
-
-msgid "Haute-Normandie"
-msgstr "Alta-Normandia"
-
-msgid "Ile-de-France"
-msgstr "Ile-deFrance"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc-Roussillon"
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lorena"
-
-msgid "Midi-Pyrenees"
-msgstr "Médio Pirineus"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-pas-de-Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "País do Loire"
-
-msgid "Picardie"
-msgstr "Picardia"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provença-Alpes-Costa Azul"
-
-msgid "Rhone-Alpes"
-msgstr "Rhone-Alpes"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Baden-Wuerttemberg"
-
-msgid "Bayern"
-msgstr "Bayern"
-
-msgid "Mittelfranken"
-msgstr "Mittelfranken"
-
-msgid "Niederbayern"
-msgstr "Baixa Bavária"
-
-msgid "Oberbayern"
-msgstr "Alta Bavária"
-
-msgid "Oberfranken"
-msgstr "Alta Franconia"
-
-msgid "Oberpfalz"
-msgstr "Alto Palatinado"
-
-msgid "Schwaben"
-msgstr "Suábia"
-
-msgid "Unterfranken"
-msgstr "Baixa Francônia"
-
-msgid "Berlin"
-msgstr "Berlim"
-
-msgid "Brandenburg"
-msgstr "Brandenburg"
-
-msgid "Bremen"
-msgstr "Bremen"
-
-msgid "Hamburg"
-msgstr "Hamburgo"
-
-msgid "Hessen"
-msgstr "Hesse"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Mecklenburgo-Pomerânia Ocidental"
-
-msgid "Niedersachsen"
-msgstr "Baixa Saxônia"
-
-msgid "Nordrhein-westfalen"
-msgstr "Renânia do Norte-Vestfália"
-
-msgid "Rheinland-Pfalz"
-msgstr "Renânia-Palatinado"
-
-msgid "Saarland"
-msgstr "Sarre"
-
-msgid "Sachsen-Anhalt"
-msgstr "Saxônia-Anhalt"
-
-msgid "Sachsen"
-msgstr "Saxônia"
-
-msgid "Schleswig-Holstein"
-msgstr "Schleswig-Holstein"
-
-msgid "Thueringen"
-msgstr "Turíngia"
-
-msgid "Mallorca"
-msgstr "Maiorca"
-
-msgid "Galicia"
-msgstr "Galicia"
-
-msgid "Scandinavia"
-msgstr "Escandinávia"
-
-msgid "England"
-msgstr "Inglaterra"
-
-msgid "Buckinghamshire"
-msgstr "Condado de Buckingham"
-
-msgid "Cambridgeshire"
-msgstr "Condado de Cambridge"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "Condado de York a leste do Hull"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Condado de Hereford"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "condado de Lanca"
-
-msgid "Leicestershire"
-msgstr "Condado de Leichester"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Condado de Nottinham"
-
-msgid "Oxfordshire"
-msgstr "Condado de Oxford"
-
-msgid "Shropshire"
-msgstr "Condado de Shrop"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "Condado York do Sul"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "condado de Wilt"
-
-msgid "Scotland"
-msgstr "Escócia"
-
-msgid "Wales"
-msgstr "País de Gales"
-
-msgid "Crete"
-msgstr "Creta"
-
-msgid "North America"
-msgstr "América do Norte"
-
-msgid "Alaska"
-msgstr "Alasca"
-
-msgid "Hawaii"
-msgstr "Havaí"
-
-msgid "USA"
-msgstr "EUA"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (exceto Alasca e Havaí)"
-
-msgid "Midwest"
-msgstr "Meio Oeste"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Nordeste"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Pacífico"
-
-msgid "South"
-msgstr "Sul"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "Distrito de Columbia"
-
-msgid "Florida"
-msgstr "Flórida"
-
-msgid "Louisiana"
-msgstr "Luisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virginia"
-
-msgid "West Virginia"
-msgstr "Virgínia Ocidental"
-
-msgid "West"
-msgstr "Oeste"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "Califórnia"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "Novo México"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Washington"
-
-msgid "South+Middle America"
-msgstr "Sul + América Central"
-
-msgid "Guyane Francaise"
-msgstr "Guiana Francesa"
-
-msgid "downloading"
-msgstr "baixando"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "pronto"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Não há espaço livre suficiente"
-
-msgid "Error downloading map!"
-msgstr "Erro ao baixar o mapa!"
-
-msgid "Error writing map!"
-msgstr "Erro escrevendo mapa!"
-
-msgid "Map download aborted!"
-msgstr "Baixa do mapa abortada!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "ETA"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Baixa do mapa"
-
-msgid "Vehicle Position"
-msgstr "Posição do Veículo"
-
-msgid "Main menu"
-msgstr "Menu principal"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Mostrar\n"
-"Mapa"
-
-msgid "Settings"
-msgstr "Configurações"
-
-msgid "Tools"
-msgstr "Ferramentas"
-
-msgid "Route"
-msgstr "Rota"
-
-msgid "About"
-msgstr "Sobre"
-
-msgid "Quit"
-msgstr "Sair"
-
-msgid "Actions"
-msgstr "Ações"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Destinos\n"
-"Anteriores"
-
-msgid "Coordinates"
-msgstr "Coordenadas"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Parar\n"
-"Navegação"
-
-msgid "Display"
-msgstr "Exibição"
-
-msgid "Fullscreen"
-msgstr "Tela cheia"
-
-msgid "Window Mode"
-msgstr "Modo de Janela"
-
-msgid "Description"
-msgstr "Descrição"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Remover último\n"
-"Ponto"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Remover próximo\n"
-"Ponto"
-
-msgid "Satellite Status"
-msgstr "Estado do Satélite"
-
-msgid "NMEA Data"
-msgstr "Dados NMEA"
-
-msgid "car_shortest"
-msgstr "carro_pequeno"
-
-msgid "car_avoid_tolls"
-msgstr "Evitar pedágios"
-
-msgid "car_pedantic"
-msgstr "detalhe do carro"
-
-msgid "horse"
-msgstr "cavalo"
-
-msgid "Truck"
-msgstr "Caminhão"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Sim"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit iniciou"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit rodando"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Bem-vindo ao Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Obrigado por instalar Navit!\n"
-"\n"
-"Para começar, selecione \"Importar mapas\" no menu para fazer o download de "
-"um mapa. Nota: O tamanho do arquivo do mapa pode ser grande (> 50MB) - uma "
-"conexão Wi-Fi é recomendada.\n"
-"\n"
-"Mapdata: (c) contribuidores OpenStreetMap\n"
-"\n"
-"Desfrute do Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Mais informações"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Aumentar zoom"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Diminuir zoom"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Baixar mapas"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Alternar POIs"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Sair do Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Backup / Restauração"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Excluir este mapa?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Baixando:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Erro ao baixar mapa."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Baixa do mapa abortada"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Nenhum local. Reabrir após corrigir localização"
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Mapas contendo localização atual"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Pesquisar endereço"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Digite o destino"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Combine endereço parcial"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Procurando..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Endereço não encontrado"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Obtendo resultados de busca"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Carregando resultados da busca"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Nenhum resultado encontrado"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Nenhum texto digitado"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Definir destino para:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Escolha uma ação"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Por favor insira um cartão SD"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Cópia de Segurança em andamento..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Restaurando ..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Falha ao criar o diretório da cópia de segurança"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Cópia de segurança falhou"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Não encontrou a cópia de segurança"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Falha ao restaurar"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Cópia de segurança bem-sucedida"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Restauração bem-sucedida\n"
-"Por favor, reinicie Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Cópia de segurança não encontrada"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Falha na restauração"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Selecione a cópia de segurança"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Cópia de segurança"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Restaurar"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "então deixe a rotatória na %1$s %2$s"
diff --git a/po/ro.po.in b/po/ro.po.in
deleted file mode 100644
index 28ac5f311..000000000
--- a/po/ro.po.in
+++ /dev/null
@@ -1,2760 +0,0 @@
-# Romanian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Ciprian https://launchpad.net/~c1pr1ancip
-# Eddy Petrisor https://launchpad.net/~eddy-petrisor-gmail
-# KaZeR https://launchpad.net/~kazer
-# Lucian Adrian Grijincu https://launchpad.net/~lucian.grijincu
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Nostriel https://launchpad.net/~nostriel
-# Ursache Dogariu Daniel https://launchpad.net/~danniel
-# dodobird https://launchpad.net/~dorinnirod
-# fasiol https://launchpad.net/~fasiol2
-# igorashu https://launchpad.net/~ionut-soare
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:00+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Romanian <ro@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
-"== 0) && (n != 0))) ? 2: 1));\n"
-"Language: ro\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Rulează din directorul sursă\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "se setează „%s†ca „%sâ€\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zero"
-
-msgid "first"
-msgstr "prima"
-
-msgid "second"
-msgstr "a doua"
-
-msgid "third"
-msgstr "a treia"
-
-msgid "fourth"
-msgstr "a patra"
-
-msgid "fifth"
-msgstr "a cincea"
-
-msgid "sixth"
-msgstr "a șasea"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "ieșirea zero"
-
-msgid "first exit"
-msgstr "prima ieșire"
-
-msgid "second exit"
-msgstr "a doua ieșire"
-
-msgid "third exit"
-msgstr "a treia ieșire"
-
-msgid "fourth exit"
-msgstr "a patra ieșire"
-
-msgid "fifth exit"
-msgstr "a cincea ieșire"
-
-msgid "sixth exit"
-msgstr "a șasea ieșire"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metri"
-
-#, c-format
-msgid "in %d meters"
-msgstr "în %d metri"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometri"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "în %d.%d kilometri"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "un kilometru"
-msgstr[1] "%d kilometri"
-msgstr[2] "%d de kilometri"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "într-un kilometru"
-msgstr[1] "în %d kilometri"
-msgstr[2] "în %d de kilometri"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "pe rampă"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%spe %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%spe %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%spe %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%spe %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sspre %s"
-
-msgid "When possible, please turn around"
-msgstr "Când este posibil, întoarceţi"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Urmați drumul pentru încă %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Intrați în curând în giratoriu"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Intrați în giratoriu %s"
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Ieșiți din giratoriu la %1$s %2$s"
-
-msgid "soon"
-msgstr "curând"
-
-msgid "now"
-msgstr "acum"
-
-msgid "then"
-msgstr "apoi"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "la dreapta"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "la stânga"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "uÅŸor "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "strâns "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Virați %2s pe %1s stradă"
-
-#, c-format
-msgid "after %i roads"
-msgstr "după %i străzi"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Virați %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "apoi întoarceţi"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Întoarceţi %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "apoi întoarceţi"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Întoarceţi %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "apoi ajungeți la destinație."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Ați ajuns la destinație %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Nod"
-
-msgid "Exit"
-msgstr "Ieșire"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Poziție"
-
-msgid "Command"
-msgstr "Comandă"
-
-msgid "Length"
-msgstr "Lungime"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Timp"
-
-msgid "Destination Length"
-msgstr "Lungimea până la destinaţie"
-
-msgid "Destination Time"
-msgstr "Timpul până la destinaţie"
-
-msgid "Roadbook"
-msgstr "Drum blocat"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Configurează ca poziție"
-
-msgid "Set as destination"
-msgstr "Configurează ca destinație"
-
-msgid "Add as bookmark"
-msgstr "Adaugă la semnele de carte"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punctul 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Coordonate ecran : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andora"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Emiratele Arabe Unite"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua ÅŸi Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antilele Olandeze"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarctica"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Americană"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland Islands"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia și Herțegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "BangladeÈ™"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgia"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrein"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Sfântul Bartolomeu"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermude"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brazilia"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Butan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Insula Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorusia"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Insulele Cocos (Keeling)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, Republica Democrată"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Republica Centrafricană"
-
-#. 178
-msgid "Congo"
-msgstr "Congo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Elveția"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Coasta de Azur"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Insulele Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Camerun"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Columbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Capul Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Insula Crăciunului"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cipru"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Republica Cehă"
-
-#. 276
-msgid "Germany"
-msgstr "Germania"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danemarca"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Republica Dominicană"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Egipt"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara de Vest"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritreea"
-
-#. 724
-msgid "Spain"
-msgstr "Spania"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Finlanda"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Insulele Falkland (Malvine)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronesia, Statele Federale ale"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Insulele Feroe"
-
-#. 250
-msgid "France"
-msgstr "Franţa"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Regatul Unit al Marii Britanii"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "Guiana Franceză"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Groenlanda"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guineea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalupa"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guineea Ecuatorială"
-
-#. 300
-msgid "Greece"
-msgstr "Grecia"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Georgia de Sud ÅŸi Insulele Sudice Sandwich"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guineea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guiana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Insulele Heard ÅŸi McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croaţia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Ungaria"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonezia"
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Insula Omului"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Teritoriul Britanic al Oceanului Indian"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Republica Islamică"
-
-#. 352
-msgid "Iceland"
-msgstr "Islanda"
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Iordan"
-
-#. 392
-msgid "Japan"
-msgstr "Japonia"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirghistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Cambogia"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comoros"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts ÅŸi Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Republica Democrată Poapulară Coreea"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Republica Coreea"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuweit"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Insulele Caiman"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazahstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Republica Populară Democrată Lao"
-
-#. 422
-msgid "Lebanon"
-msgstr "Liban"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Sfânta Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lituania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Letonia"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Maroc"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Republica Moldovă"
-
-#. 499
-msgid "Montenegro"
-msgstr "Muntenegru"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Sfântul Martin (partea franceză)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Insulele Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Fosta Republică Iugoslavă Macedonia"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Insulele Mariane de Nord"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinica"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritania"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldive"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexic"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaezia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambic"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Noua Caledonie"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Insula Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Olanda"
-
-#. 578
-msgid "Norway"
-msgstr "Norvegia"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Noua Zeelandă"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinezia Franceză"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Noua Guinee"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipine"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polonia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Sfântul Pierre şi Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Teritoriile Palestiniene, Ocupate"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugalia"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "România"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Federaţia Rusă"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arabia Saudită"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Insulele Solomon"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Suedia"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Saint Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Insulele Svalbard ÅŸi Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovacia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome și Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Republica Araba Siria"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Insulele Turks ÅŸi Caicos"
-
-#. 148
-msgid "Chad"
-msgstr "Ciad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Teritoriile Franceze de Sud"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tailanda"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timorul de Est"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turcia"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad ÅŸi Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Provincia Chineză Taiwan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Republica Unită Tanzania"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ucraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Insulele de Coasta ale Statelor Unite"
-
-#. 840
-msgid "United States"
-msgstr "Statele Unite"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatican (OraÅŸul Stat Vatican)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent ÅŸi Grenadin"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Insulele Virgine (Britanice)"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Insulele Virgine (SUA)"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis ÅŸi Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Africa de Sud"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Necunoscut, adaugă eticheta is_in tags acestor orașe"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Locație pe hartă"
-
-msgid "Car"
-msgstr "Maşină"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Ţară"
-
-msgid "Postal"
-msgstr "PoÅŸtal"
-
-msgid "Town"
-msgstr "OraÅŸ"
-
-msgid "District"
-msgstr "Cartier"
-
-msgid "Street"
-msgstr "Stradă"
-
-msgid "Number"
-msgstr "Număr"
-
-msgid "Enter Destination"
-msgstr "Introduceți destinaţia"
-
-msgid "Zip Code"
-msgstr "Cod poștal"
-
-msgid "City"
-msgstr "OraÈ™"
-
-msgid "District/Township"
-msgstr "District/Reședință"
-
-msgid "Map"
-msgstr "Hartă"
-
-msgid "Bookmark"
-msgstr "Semn de carte"
-
-msgid "Destination"
-msgstr "Destinaţie"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Ecran"
-
-msgid "_Route"
-msgstr "Traseu"
-
-msgid "_Former Destinations"
-msgstr "Destinații anterioare"
-
-msgid "_Bookmarks"
-msgstr "Semne de carte"
-
-msgid "_Map"
-msgstr "Hartă"
-
-msgid "_Layout"
-msgstr "Dispunere"
-
-msgid "_Projection"
-msgstr "Proiecție"
-
-msgid "_Vehicle"
-msgstr "Vehicul"
-
-msgid "Zoom_Out"
-msgstr "Depărtează"
-
-msgid "Decrease zoom level"
-msgstr "Scade nivelul de zoom"
-
-msgid "Zoom_In"
-msgstr "Apropie"
-
-msgid "Increase zoom level"
-msgstr "Creste nivelul de zoom"
-
-msgid "_Recalculate"
-msgstr "Recalculează"
-
-msgid "Redraw map"
-msgstr "Reînnoieste harta"
-
-msgid "_Info"
-msgstr "Informații"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Deschide căutare adresa"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Oprește navigarea"
-
-msgid "Test"
-msgstr "Testează"
-
-msgid "_Quit"
-msgstr "_Ieșire"
-
-msgid "Quit the application"
-msgstr "Ieşire din aplicaţie"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Fixează strada"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Schimbă orientarea hărtii spre nord sau la vehicul"
-
-msgid "_Roadbook"
-msgstr "Drum blocat"
-
-msgid "Show/hide route description"
-msgstr "Arată/ascunde descrierea rutei"
-
-msgid "_Autozoom"
-msgstr "Autozoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Activare/Dezactivare a schimbarii automate al zoomului"
-
-msgid "_Fullscreen"
-msgstr "Pe tot ecranul"
-
-msgid "Data"
-msgstr "Date"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SV"
-
-msgid "W"
-msgstr "V"
-
-msgid "NW"
-msgstr "NV"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nu"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "Glob"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Rută %4.0f km sosire estimată %02d:%02d"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Rută 0000 km sosire estimată 0+00:00"
-
-msgid "Help"
-msgstr "Ajutor"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Arată în navigator"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Străzi"
-
-msgid "House numbers"
-msgstr "Numere case"
-
-msgid "View Attributes"
-msgstr "Arată atributele"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Puncte de interes"
-
-msgid "View on map"
-msgstr "Arată pe hartă"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Taie semnul de carte"
-
-msgid "Copy Bookmark"
-msgstr "Copiază semnul de carte"
-
-msgid "Rename Bookmark"
-msgstr "Redenumește semnul de carte"
-
-msgid "Paste Bookmark"
-msgstr "Lipește semnul de carte"
-
-msgid "Delete Bookmark"
-msgstr "Șterge semnul de carte"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Semne de carte"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Adaugă director pentru semne de carte"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Lipește semn de carte"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "%s ca semn de carte"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Arată starea sateliților"
-
-msgid " Elevation "
-msgstr " Înălţime "
-
-msgid " Azimuth "
-msgstr " Azimut "
-
-msgid "Show NMEA Data"
-msgstr "Arată datele NMEA"
-
-msgid "car"
-msgstr "mașină"
-
-msgid "bike"
-msgstr "bicicletă"
-
-msgid "pedestrian"
-msgstr "pieton"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Profil curent: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Schimbă profilul la: %s"
-
-msgid "Set as active"
-msgstr "Activează"
-
-msgid "Show Satellite status"
-msgstr "Arată starea sateliților"
-
-msgid "Show NMEA data"
-msgstr "Arată datele NMEA"
-
-msgid "Add Bookmark"
-msgstr "Adaugă semn de carte"
-
-msgid "Rename"
-msgstr "Redenumește"
-
-msgid "About Navit"
-msgstr "Despre Navit"
-
-#. Authors
-msgid "By"
-msgstr "De"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Și întreaga echipă Navit"
-
-msgid "members and contributors."
-msgstr "membri și colaboratori."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Vehicul"
-
-msgid "Rules"
-msgstr "Reguli"
-
-msgid "Lock on road"
-msgstr "Fixează strada"
-
-msgid "Northing"
-msgstr "Nimic"
-
-msgid "Map follows Vehicle"
-msgstr "Harta urmează vehiculul"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Hărți"
-
-msgid "Layout"
-msgstr "Dispunere"
-
-msgid "Height Profile"
-msgstr "Profil înălțime"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Descrerea traseului"
-
-msgid "Show Locale"
-msgstr "Setări regionale"
-
-msgid "Former Destinations"
-msgstr "Destinații anterioare"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Mesaj"
-
-msgid "Back"
-msgstr "ÃŽnapoi"
-
-msgid "Back to map"
-msgstr "Înapoi la hartă"
-
-msgid "Main Menu"
-msgstr "Meniu principal"
-
-msgid "House number"
-msgstr "Număr casă"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Poziția vehiculului"
-
-msgid "Main menu"
-msgstr "Meniu principal"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Afișează\n"
-"hartă"
-
-msgid "Settings"
-msgstr "Configurații"
-
-msgid "Tools"
-msgstr "Unelte"
-
-msgid "Route"
-msgstr "Traseu"
-
-msgid "About"
-msgstr "Despre"
-
-msgid "Quit"
-msgstr "Ieși"
-
-msgid "Actions"
-msgstr "Acțiuni"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Oprește\n"
-"navigația"
-
-msgid "Display"
-msgstr "Ecran"
-
-msgid "Fullscreen"
-msgstr "Pe tot ecranul"
-
-msgid "Window Mode"
-msgstr "Mod „fereastrăâ€"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Descriere"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "cal"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "apoi ieșiți din giratoriu la %1$s %2$s"
diff --git a/po/ru.po.in b/po/ru.po.in
deleted file mode 100644
index 0f1944e1d..000000000
--- a/po/ru.po.in
+++ /dev/null
@@ -1,2804 +0,0 @@
-# Russian (ru) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Alexey Reztsov https://launchpad.net/~ariafan
-# Artem Anufrij https://launchpad.net/~artem-anufrij
-# Artiom https://launchpad.net/~ar-molchanov
-# AsstZD https://launchpad.net/~eskaer-spamsink
-# Budim https://launchpad.net/~budmitry
-# Denis Chapligin https://launchpad.net/~akashihi
-# Evgeny Kabinov https://launchpad.net/~ekabinov
-# KaZeR https://launchpad.net/~kazer
-# Lupin de mid https://launchpad.net/~lupin-de-mid
-# Nick Gorbunov https://launchpad.net/~intsurfer
-# Nkolay Parukhin https://launchpad.net/~parukhin
-# Roadrunner IN https://launchpad.net/~online
-# Sergey Sedov https://launchpad.net/~serg-sedov
-# Sergey Shilov https://launchpad.net/~sss-s-s-s
-# Takuto https://launchpad.net/~takutoatmorgue
-# Usul https://launchpad.net/~usul1
-# cmdrhenner https://launchpad.net/~cmdrhenner
-# jmb_kz https://launchpad.net/~jmb-kz
-# kisaa https://launchpad.net/~alex-kisaa
-# kisaa https://launchpad.net/~kisaa-mail
-# tryagain https://launchpad.net/~mdankov
-# Павел https://launchpad.net/~pavel-sgn
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-07-11 21:09+0000\n"
-"Last-Translator: tryagain <mdankov@yandex.ru>\n"
-"Language-Team: Rustam T. Usmanov\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"Language: ru\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "ЗапуÑк в иÑходном каталоге\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "уÑтановка '%s' в '%s'\\n\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "нулевую"
-
-msgid "first"
-msgstr "первую"
-
-msgid "second"
-msgstr "вторую"
-
-msgid "third"
-msgstr "третью"
-
-msgid "fourth"
-msgstr "четвёртый"
-
-msgid "fifth"
-msgstr "пÑтую"
-
-msgid "sixth"
-msgstr "шеÑтую"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "нулевой Ñъезд"
-
-msgid "first exit"
-msgstr "первый Ñъезд"
-
-msgid "second exit"
-msgstr "второй Ñъезд"
-
-msgid "third exit"
-msgstr "третий Ñъезд"
-
-msgid "fourth exit"
-msgstr "четвёртый Ñъезд"
-
-msgid "fifth exit"
-msgstr "пÑтый Ñъезд"
-
-msgid "sixth exit"
-msgstr "шеÑтой Ñъезд"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d футов"
-
-#, c-format
-msgid "in %d feet"
-msgstr "через %d футов"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d,%d миль"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "через %d,%d миль"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "%d милÑ"
-msgstr[1] "%d мили"
-msgstr[2] "%d миль"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "через %d милю"
-msgstr[1] "через %d мили"
-msgstr[2] "через %d миль"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d метров"
-
-#, c-format
-msgid "in %d meters"
-msgstr "через %d метров"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d,%d километров"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "через %d,%d километров"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d километр"
-msgstr[1] "%d километра"
-msgstr[2] "%d километров"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "через %d километр"
-msgstr[1] "через %d километра"
-msgstr[2] "через %d километров"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$s на траÑÑу %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$s на траÑÑу %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$s на траÑÑу %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$s на траÑÑу %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$s на траÑÑу %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "на рампу"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s, цель - %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s, цель - %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s, цель - %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s, цель - %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s, цель - %s"
-
-msgid "When possible, please turn around"
-msgstr "РазвернитеÑÑŒ, пожалуйÑта, еÑли Ñто возможно"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "по указателю %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "ДвигайтеÑÑŒ по дороге Ñледующие %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Скоро круговое движение"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "%s круговое движение"
-
-msgid "then enter the roundabout"
-msgstr "затем круговое движение"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Круговое движение, %1$s %2$s"
-
-msgid "soon"
-msgstr "Ñкоро"
-
-msgid "now"
-msgstr "ÑейчаÑ"
-
-msgid "then"
-msgstr "поÑле чего"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "затем выезд вправо %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "%1$s выезд вправо %2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "затем выезжайте влево %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "%1$s выезд влево %2$s"
-
-msgid "on your left"
-msgstr "влево"
-
-msgid "on your right"
-msgstr "вправо"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "%3$s Ñъезжайте %2$s %1$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "%2$s Ñъезжайте %1$s %3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "на развÑзке"
-
-msgid "at exit"
-msgstr "на Ñъезде"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "затем проезжайте развилку прÑмо %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "%1$s проезжайте развилку прÑмо %2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "затем возмите правее%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "%1$s возмите правее %2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "затем возмите левее%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "%1$s возмите левее %2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "направо"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "налево"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "немного "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "круто "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "затем выезжайте на дорогу %1$s в направлении %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Выезжайте на %1$s дорогу в направлении %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "поÑле %i дорог"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "%3$s Ñверните %1$s%2$s %4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "затем развернитеÑÑŒ влево"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "%1$s разворот налево"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "затем развернитеÑÑŒ вправо"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "%1$s разворот направо"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "Ñледуйте"
-
-msgid "then you have reached your destination."
-msgstr "поÑле чего вы прибудете в пункт назначениÑ"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Ð’Ñ‹ прибыли в пункт Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "РазвÑзка"
-
-msgid "Exit"
-msgstr "Съезд"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "ПозициÑ"
-
-msgid "Command"
-msgstr "Команда"
-
-msgid "Length"
-msgstr "Длина"
-
-msgid "km"
-msgstr "км"
-
-msgid "m"
-msgstr "м"
-
-msgid "Time"
-msgstr "ВремÑ"
-
-msgid "Destination Length"
-msgstr "ДиÑÑ‚Ð°Ð½Ñ†Ð¸Ñ Ð´Ð¾ пункта назначениÑ"
-
-msgid "Destination Time"
-msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð´Ð¾ пункта назначениÑ"
-
-msgid "Roadbook"
-msgstr "Дорожный Ñправочник"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Точка %d"
-
-msgid "Visit before..."
-msgstr "Заехать перед..."
-
-msgid "Set as position"
-msgstr "УÑтановить как пункт отправлениÑ"
-
-msgid "Set as destination"
-msgstr "УÑтановить как пункт назначениÑ"
-
-msgid "Add as bookmark"
-msgstr "Добавить закладку"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Точка 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Экран %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Ðндорра"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Объединенные ÐрабÑкие Эмираты"
-
-#. 004
-msgid "Afghanistan"
-msgstr "ÐфганиÑтан"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Ðнтигуа и Барбуда"
-
-#. 660
-msgid "Anguilla"
-msgstr "ÐнгильÑ"
-
-#. 008
-msgid "Albania"
-msgstr "ÐлбаниÑ"
-
-#. 051
-msgid "Armenia"
-msgstr "ÐрмениÑ"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "ÐнтильÑкие (ÐидерланÑкие) оÑтрова"
-
-#. 024
-msgid "Angola"
-msgstr "Ðнгола"
-
-#. 010
-msgid "Antarctica"
-msgstr "Ðнтарктика"
-
-#. 032
-msgid "Argentina"
-msgstr "Ðргентина"
-
-#. 016
-msgid "American Samoa"
-msgstr "Ðмерик. Самоа"
-
-#. 040
-msgid "Austria"
-msgstr "ÐвÑтриÑ"
-
-#. 036
-msgid "Australia"
-msgstr "ÐвÑтралиÑ"
-
-#. 533
-msgid "Aruba"
-msgstr "Ðруба"
-
-#. 248
-msgid "Aland Islands"
-msgstr "ФарерÑкие ОÑтрова"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Ðзербайджан"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "БоÑÐ½Ð¸Ñ Ð¸ Герцеговина"
-
-#. 052
-msgid "Barbados"
-msgstr "БарбадоÑ"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#. 056
-msgid "Belgium"
-msgstr "БельгиÑ"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Буркина-ФаÑо"
-
-#. 100
-msgid "Bulgaria"
-msgstr "БолгариÑ"
-
-#. 048
-msgid "Bahrain"
-msgstr "Бахрейн"
-
-#. 108
-msgid "Burundi"
-msgstr "Бурунди"
-
-#. 204
-msgid "Benin"
-msgstr "Бенин"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Сен-Бартелемей"
-
-#. 060
-msgid "Bermuda"
-msgstr "БермудÑкие оÑтрова"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Бруней ДаруÑÑалам"
-
-#. 068
-msgid "Bolivia"
-msgstr "БоливиÑ"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "БонÑйр, Синт-ЭÑÑ‚Ð°Ñ‚Ð¸ÑƒÑ Ð¸ Саба"
-
-#. 076
-msgid "Brazil"
-msgstr "БразилиÑ"
-
-#. 044
-msgid "Bahamas"
-msgstr "Багамы"
-
-#. 064
-msgid "Bhutan"
-msgstr "Бутан"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "ОÑтров Буве"
-
-#. 072
-msgid "Botswana"
-msgstr "БотÑвана"
-
-#. 112
-msgid "Belarus"
-msgstr "БелоруÑÑиÑ"
-
-#. 084
-msgid "Belize"
-msgstr "Белиз"
-
-#. 124
-msgid "Canada"
-msgstr "Канада"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "КокоÑовые (Килинг) оÑтрова"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Конго, ДемократичеÑÐºÐ°Ñ Ð ÐµÑпублика"
-
-#. 140
-msgid "Central African Republic"
-msgstr "ЦентральноафриканÑÐºÐ°Ñ Ð ÐµÑпублика"
-
-#. 178
-msgid "Congo"
-msgstr "Конго"
-
-#. 756
-msgid "Switzerland"
-msgstr "ШвейцариÑ"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Кот-д'Ивуар"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Кука ОÑтрова"
-
-#. 152
-msgid "Chile"
-msgstr "Чили"
-
-#. 120
-msgid "Cameroon"
-msgstr "Камерун"
-
-#. 156
-msgid "China"
-msgstr "Китай"
-
-#. 170
-msgid "Colombia"
-msgstr "КолумбиÑ"
-
-#. 188
-msgid "Costa Rica"
-msgstr "КоÑта-Рика"
-
-#. 192
-msgid "Cuba"
-msgstr "Куба"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Кабо-Верде"
-
-#. 531
-msgid "Curacao"
-msgstr "КюраÑао"
-
-#. 162
-msgid "Christmas Island"
-msgstr "ОÑтров РождеÑтва"
-
-#. 196
-msgid "Cyprus"
-msgstr "Кипр"
-
-#. 203
-msgid "Czech Republic"
-msgstr "ЧешÑÐºÐ°Ñ Ð ÐµÑпублика"
-
-#. 276
-msgid "Germany"
-msgstr "ГерманиÑ"
-
-#. 262
-msgid "Djibouti"
-msgstr "Джибути"
-
-#. 208
-msgid "Denmark"
-msgstr "ДаниÑ"
-
-#. 212
-msgid "Dominica"
-msgstr "Доминика"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "ДоминиканÑÐºÐ°Ñ Ð ÐµÑпублика"
-
-#. 012
-msgid "Algeria"
-msgstr "Ðлжир"
-
-#. 218
-msgid "Ecuador"
-msgstr "Эквадор"
-
-#. 233
-msgid "Estonia"
-msgstr "ЭÑтониÑ"
-
-#. 818
-msgid "Egypt"
-msgstr "Египет"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Ð—Ð°Ð¿Ð°Ð´Ð½Ð°Ñ Ð¡Ð°Ñ…Ð°Ñ€Ð°"
-
-#. 232
-msgid "Eritrea"
-msgstr "ЭритреÑ"
-
-#. 724
-msgid "Spain"
-msgstr "ИÑпаниÑ"
-
-#. 231
-msgid "Ethiopia"
-msgstr "ЭфиопиÑ"
-
-#. 246
-msgid "Finland"
-msgstr "ФинлÑндиÑ"
-
-#. 242
-msgid "Fiji"
-msgstr "Фиджи"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "ФолклендÑкие (МальвинÑкие) оÑтрова"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "МикронÑзиÑ, Федеративные Штаты"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "ФарерÑкие ОÑтрова"
-
-#. 250
-msgid "France"
-msgstr "ФранциÑ"
-
-#. 266
-msgid "Gabon"
-msgstr "Габон"
-
-#. 826
-msgid "United Kingdom"
-msgstr "ВеликобританиÑ"
-
-#. 308
-msgid "Grenada"
-msgstr "Гренада"
-
-#. 268
-msgid "Georgia"
-msgstr "ГрузиÑ"
-
-#. 254
-msgid "French Guiana"
-msgstr "ФранцузÑÐºÐ°Ñ Ð“Ð²Ð¸Ð°Ð½Ð°"
-
-#. 831
-msgid "Guernsey"
-msgstr "ГернÑи"
-
-#. 288
-msgid "Ghana"
-msgstr "Гана"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Гибралтар"
-
-#. 304
-msgid "Greenland"
-msgstr "ГренландиÑ"
-
-#. 270
-msgid "Gambia"
-msgstr "ГамбиÑ"
-
-#. 324
-msgid "Guinea"
-msgstr "ГвинеÑ"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Гваделупа"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ð­ÐºÐ²Ð°Ñ‚Ð¾Ñ€Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð“Ð²Ð¸Ð½ÐµÑ"
-
-#. 300
-msgid "Greece"
-msgstr "ГрециÑ"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Ð®Ð¶Ð½Ð°Ñ Ð“ÐµÐ¾Ñ€Ð³Ð¸Ñ Ð¸ Южные Сандвичевы ОÑтрова"
-
-#. 320
-msgid "Guatemala"
-msgstr "Гватемала"
-
-#. 316
-msgid "Guam"
-msgstr "Гуам"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "ГвинеÑ-БиÑау"
-
-#. 328
-msgid "Guyana"
-msgstr "Гайана"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Гонконг"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "ОÑтрова Херд и Макдональд"
-
-#. 340
-msgid "Honduras"
-msgstr "ГондураÑ"
-
-#. 191
-msgid "Croatia"
-msgstr "ХорватиÑ"
-
-#. 332
-msgid "Haiti"
-msgstr "Гаити"
-
-#. 348
-msgid "Hungary"
-msgstr "ВенгриÑ"
-
-#. 360
-msgid "Indonesia"
-msgstr "ИндонезиÑ"
-
-#. 372
-msgid "Ireland"
-msgstr "ИрландиÑ"
-
-#. 376
-msgid "Israel"
-msgstr "Израиль"
-
-#. 833
-msgid "Isle of Man"
-msgstr "ОÑтров ÐœÑн"
-
-#. 356
-msgid "India"
-msgstr "ИндиÑ"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "БританÑÐºÐ°Ñ Ñ‚ÐµÑ€Ñ€Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð² ИндийÑком океане"
-
-#. 368
-msgid "Iraq"
-msgstr "Ирак"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Иран, ИÑламÑÐºÐ°Ñ Ð ÐµÑпублика"
-
-#. 352
-msgid "Iceland"
-msgstr "ИÑландиÑ"
-
-#. 380
-msgid "Italy"
-msgstr "ИталиÑ"
-
-#. 832
-msgid "Jersey"
-msgstr "ДжерÑи"
-
-#. 388
-msgid "Jamaica"
-msgstr "Ямайка"
-
-#. 400
-msgid "Jordan"
-msgstr "ИорданиÑ"
-
-#. 392
-msgid "Japan"
-msgstr "ЯпониÑ"
-
-#. 404
-msgid "Kenya"
-msgstr "КениÑ"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "КыргызÑтан"
-
-#. 116
-msgid "Cambodia"
-msgstr "Камбоджа"
-
-#. 296
-msgid "Kiribati"
-msgstr "Кирибати"
-
-#. 174
-msgid "Comoros"
-msgstr "КоморÑкие ОÑтрова"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Сент-ÐšÐ¸Ñ‚Ñ Ð¸ ÐевиÑ"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "КореÑ, ÐÐ°Ñ€Ð¾Ð´Ð½Ð°Ñ Ð”ÐµÐ¼Ð¾ÐºÑ€Ð°Ñ‚Ð¸Ñ‡ÐµÑÐºÐ°Ñ Ð ÐµÑпублика"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "КореÑ, РеÑпублика"
-
-#. 414
-msgid "Kuwait"
-msgstr "Кувейт"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Каймановы оÑтрова"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "КазахÑтан"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "ЛаоÑ, Ðародно-ДемократичеÑÐºÐ°Ñ Ð ÐµÑпублика"
-
-#. 422
-msgid "Lebanon"
-msgstr "Ливан"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Сент-ЛюÑиÑ"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Лихтенштейн"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Шри-Ланка"
-
-#. 430
-msgid "Liberia"
-msgstr "ЛибериÑ"
-
-#. 426
-msgid "Lesotho"
-msgstr "ЛеÑото"
-
-#. 440
-msgid "Lithuania"
-msgstr "Литва"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ЛюкÑембург"
-
-#. 428
-msgid "Latvia"
-msgstr "ЛатвиÑ"
-
-#. 434
-msgid "Libya"
-msgstr "ЛивиÑ"
-
-#. 504
-msgid "Morocco"
-msgstr "Марокко"
-
-#. 492
-msgid "Monaco"
-msgstr "Монако"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "МолдовиÑ, РеÑпублика"
-
-#. 499
-msgid "Montenegro"
-msgstr "ЧерногориÑ"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Сен-Мартин (Ð¤Ñ€Ð°Ð½Ñ†ÑƒÐ·ÐºÐ°Ñ Ñ‡Ð°ÑÑ‚ÑŒ)"
-
-#. 450
-msgid "Madagascar"
-msgstr "МадагаÑкар"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Маршалловы ОÑтрова"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "МакедониÑ, Ð±Ñ‹Ð²ÑˆÐ°Ñ Ñ€ÐµÑпублика ЮгоÑлавии"
-
-#. 466
-msgid "Mali"
-msgstr "Мали"
-
-#. 104
-msgid "Myanmar"
-msgstr "МьÑнма"
-
-#. 496
-msgid "Mongolia"
-msgstr "МонголиÑ"
-
-#. 446
-msgid "Macao"
-msgstr "Мокао"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Северные МарианÑкие ОÑтрова"
-
-#. 474
-msgid "Martinique"
-msgstr "Мартиника"
-
-#. 478
-msgid "Mauritania"
-msgstr "МавританиÑ"
-
-#. 500
-msgid "Montserrat"
-msgstr "МонтÑеррат"
-
-#. 470
-msgid "Malta"
-msgstr "Мальта"
-
-#. 480
-msgid "Mauritius"
-msgstr "Маврикий"
-
-#. 462
-msgid "Maldives"
-msgstr "Мальдивы"
-
-#. 454
-msgid "Malawi"
-msgstr "Малави"
-
-#. 484
-msgid "Mexico"
-msgstr "МекÑика"
-
-#. 458
-msgid "Malaysia"
-msgstr "МалайзиÑ"
-
-#. 508
-msgid "Mozambique"
-msgstr "Мозамбик"
-
-#. 516
-msgid "Namibia"
-msgstr "ÐамибиÑ"
-
-#. 540
-msgid "New Caledonia"
-msgstr "ÐÐ¾Ð²Ð°Ñ ÐšÐ°Ð»ÐµÐ´Ð¾Ð½Ð¸Ñ"
-
-#. 562
-msgid "Niger"
-msgstr "Ðигер"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Ðорфолк ОÑтров"
-
-#. 566
-msgid "Nigeria"
-msgstr "ÐигериÑ"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Ðикарагуа"
-
-#. 528
-msgid "Netherlands"
-msgstr "Ðидерланды"
-
-#. 578
-msgid "Norway"
-msgstr "ÐорвегиÑ"
-
-#. 524
-msgid "Nepal"
-msgstr "Ðепал"
-
-#. 520
-msgid "Nauru"
-msgstr "Ðауру"
-
-#. 570
-msgid "Niue"
-msgstr "ÐиуÑ"
-
-#. 554
-msgid "New Zealand"
-msgstr "ÐÐ¾Ð²Ð°Ñ Ð—ÐµÐ»Ð°Ð½Ð´Ð¸Ñ"
-
-#. 512
-msgid "Oman"
-msgstr "Оман"
-
-#. 591
-msgid "Panama"
-msgstr "Панама"
-
-#. 604
-msgid "Peru"
-msgstr "Перу"
-
-#. 258
-msgid "French Polynesia"
-msgstr "ФранцузÑÐºÐ°Ñ ÐŸÐ¾Ð»Ð¸Ð½ÐµÐ·Ð¸Ñ"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Папуа - ÐÐ¾Ð²Ð°Ñ Ð“Ð²Ð¸Ð½ÐµÑ"
-
-#. 608
-msgid "Philippines"
-msgstr "Филиппины"
-
-#. 586
-msgid "Pakistan"
-msgstr "ПакиÑтан"
-
-#. 616
-msgid "Poland"
-msgstr "Польша"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Сен-Пьер и Микелон"
-
-#. 612
-msgid "Pitcairn"
-msgstr "ПиткÑрн"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "ПуÑрто Рико"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "ПалеÑтина"
-
-#. 620
-msgid "Portugal"
-msgstr "ПортугалиÑ"
-
-#. 585
-msgid "Palau"
-msgstr "Палау"
-
-#. 600
-msgid "Paraguay"
-msgstr "Парагвай"
-
-#. 634
-msgid "Qatar"
-msgstr "Катар"
-
-#. 638
-msgid "Reunion"
-msgstr "Реюньон"
-
-#. 642
-msgid "Romania"
-msgstr "РумыниÑ"
-
-#. 688
-msgid "Serbia"
-msgstr "СербиÑ"
-
-#. 643
-msgid "Russian Federation"
-msgstr "РоÑÑийÑÐºÐ°Ñ Ð¤ÐµÐ´ÐµÑ€Ð°Ñ†Ð¸Ñ"
-
-#. 646
-msgid "Rwanda"
-msgstr "Руанда"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "СаудовÑÐºÐ°Ñ ÐравиÑ"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Соломоновы ОÑтрова"
-
-#. 690
-msgid "Seychelles"
-msgstr "СейшельÑкие ОÑтрова"
-
-#. 736
-msgid "Sudan"
-msgstr "Судан"
-
-#. 752
-msgid "Sweden"
-msgstr "ШвециÑ"
-
-#. 702
-msgid "Singapore"
-msgstr "Сингапур"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Сент-Хелен"
-
-#. 705
-msgid "Slovenia"
-msgstr "СловениÑ"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Свальбард и Ян Майен"
-
-#. 703
-msgid "Slovakia"
-msgstr "СловакиÑ"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Сьерра-Леоне"
-
-#. 674
-msgid "San Marino"
-msgstr "Сан-Марино"
-
-#. 686
-msgid "Senegal"
-msgstr "Сенегал"
-
-#. 706
-msgid "Somalia"
-msgstr "Сомали"
-
-#. 740
-msgid "Suriname"
-msgstr "Суринам"
-
-#. 728
-msgid "South Sudan"
-msgstr "Южный Судан"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Сан-Томе и ПринÑипи"
-
-#. 222
-msgid "El Salvador"
-msgstr "Сальвадор"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Синт-Мартен (Ðидерланды)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "СирийÑÐºÐ°Ñ ÐрабÑÐºÐ°Ñ Ð ÐµÑпублика"
-
-#. 748
-msgid "Swaziland"
-msgstr "Свазиленд"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Ð¢Ñ‘Ñ€ÐºÑ Ð¸ КайкоÑ"
-
-#. 148
-msgid "Chad"
-msgstr "Чад"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "ФранцузÑкие Южные территории"
-
-#. 768
-msgid "Togo"
-msgstr "Того"
-
-#. 764
-msgid "Thailand"
-msgstr "Таиланд"
-
-#. 762
-msgid "Tajikistan"
-msgstr "ТаджикиÑтан"
-
-#. 772
-msgid "Tokelau"
-msgstr "Токелау"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "ВоÑточный Тимор"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "ТуркмениÑтан"
-
-#. 788
-msgid "Tunisia"
-msgstr "ТуниÑ"
-
-#. 776
-msgid "Tonga"
-msgstr "Тонга"
-
-#. 792
-msgid "Turkey"
-msgstr "ТурциÑ"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Тринидад и Тобаго"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Тувалу"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Тайвань, ÐŸÑ€Ð¾Ð²Ð¸Ð½Ñ†Ð¸Ñ ÐšÐ¸Ñ‚Ð°Ñ"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "ТанзиÑ, ÐžÐ±ÑŠÐµÐ´ÐµÐ½ÐµÐ½Ð½Ð°Ñ Ð ÐµÑпублика"
-
-#. 804
-msgid "Ukraine"
-msgstr "Украина"
-
-#. 800
-msgid "Uganda"
-msgstr "Уганда"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Внешние Малые ОÑтрова Соединённых Штатов"
-
-#. 840
-msgid "United States"
-msgstr "СШÐ"
-
-#. 858
-msgid "Uruguay"
-msgstr "Уругвай"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "УзбекиÑтан"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Ватикан"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Сент-ВинÑент и Гренадины"
-
-#. 862
-msgid "Venezuela"
-msgstr "ВенеÑуÑла"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "ВиргинÑкие ОÑтрова, БританиÑ"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "ВиргинÑкие ОÑтрова, СШÐ"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Вьетнам"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Вануату"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Ð£Ð¾Ð»Ð»Ð¸Ñ Ð¸ Футуна"
-
-#. 882
-msgid "Samoa"
-msgstr "Самоа"
-
-#. 887
-msgid "Yemen"
-msgstr "Йемен"
-
-#. 175
-msgid "Mayotte"
-msgstr "Майотта"
-
-#. 710
-msgid "South Africa"
-msgstr "Ð®Ð¶Ð½Ð°Ñ Ðфрика"
-
-#. 894
-msgid "Zambia"
-msgstr "ЗамбиÑ"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Зимбабве"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* ÐеизвеÑтный, Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° городов добавьте теги is_in"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Ðе найдено ни одного файла наÑтроек: navit.xml, navit.xml.local\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Ошибка в файле наÑтройки '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "ИÑпользуетÑÑ Ñ„Ð°Ð¹Ð» наÑтроек '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Ошибка: ОтÑутÑтвует ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð² файле '%s'\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Ошибка инициализации, выход из программы. Проверьте предыдущие ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± "
-"ошибках.\n"
-
-msgid "unknown street"
-msgstr "неизвеÑÑ‚Ð½Ð°Ñ ÑƒÐ»Ð¸Ñ†Ð°"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Ðеизв. транÑпорт"
-
-msgid "Failed to write bookmarks file"
-msgstr "Ðе удалоÑÑŒ Ñохранить файл закладок"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Точка на карте"
-
-msgid "Car"
-msgstr "Ðвто"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Страна"
-
-msgid "Postal"
-msgstr "ИндекÑ"
-
-msgid "Town"
-msgstr "Город"
-
-msgid "District"
-msgstr "Район"
-
-msgid "Street"
-msgstr "Улица"
-
-msgid "Number"
-msgstr "Ðомер"
-
-msgid "Enter Destination"
-msgstr "Введите пункт назначениÑ"
-
-msgid "Zip Code"
-msgstr "ИндекÑ"
-
-msgid "City"
-msgstr "Город"
-
-msgid "District/Township"
-msgstr "Район"
-
-msgid "Map"
-msgstr "Карта"
-
-msgid "Bookmark"
-msgstr "Закладка"
-
-msgid "Destination"
-msgstr "Пункт назначениÑ"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "ДиÑплей"
-
-msgid "_Route"
-msgstr "Маршрут"
-
-msgid "_Former Destinations"
-msgstr "Старые маршруты"
-
-msgid "_Bookmarks"
-msgstr "Закладки"
-
-msgid "_Map"
-msgstr "Карта"
-
-msgid "_Layout"
-msgstr "Схема"
-
-msgid "_Projection"
-msgstr "ПроекциÑ"
-
-msgid "_Vehicle"
-msgstr "Т/Ñ"
-
-msgid "Zoom_Out"
-msgstr "Уменьшить"
-
-msgid "Decrease zoom level"
-msgstr "Уменьшить маÑштаб"
-
-msgid "Zoom_In"
-msgstr "Увеличить"
-
-msgid "Increase zoom level"
-msgstr "Увеличить маÑштаб"
-
-msgid "_Recalculate"
-msgstr "ПереÑчитать"
-
-msgid "Redraw map"
-msgstr "Обновить карту"
-
-msgid "_Info"
-msgstr "ИнформациÑ"
-
-msgid "Set _destination"
-msgstr "УÑтановить пункт назначениÑ"
-
-msgid "Opens address search dialog"
-msgstr "Диалог поиÑка по адреÑу"
-
-msgid "_POI search"
-msgstr "ПоиÑк _POI"
-
-msgid "Opens POI search dialog"
-msgstr "Открыть диалог поиÑка точек интереÑа"
-
-msgid "_Stop Navigation"
-msgstr "ОÑтановить навигацию"
-
-msgid "Test"
-msgstr "ТеÑÑ‚"
-
-msgid "_Quit"
-msgstr "_Выход"
-
-msgid "Quit the application"
-msgstr "Выйти из программы"
-
-msgid "Show position _cursor"
-msgstr "Показать/Ñкрыть отметку текущей позиции"
-
-msgid "_Lock on Road"
-msgstr "Заблокировать дорогу"
-
-msgid "_Keep orientation to the North"
-msgstr "Ориентировать карту на Ñевер"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Переключить ориентацию карты на Ñевер или по ходу движениÑ"
-
-msgid "_Roadbook"
-msgstr "Дорожный Ñправочник"
-
-msgid "Show/hide route description"
-msgstr "Показать опиÑание маршрута"
-
-msgid "_Autozoom"
-msgstr "ÐвтомаÑштабирование"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Включить/выключить автоматичеÑкое маÑштабирование"
-
-msgid "_Fullscreen"
-msgstr "Во веÑÑŒ Ñкран"
-
-msgid "Data"
-msgstr "Данные"
-
-msgid "Pharmacy"
-msgstr "Ðптека"
-
-msgid "Restaurant"
-msgstr "РеÑторан"
-
-msgid "Restaurant. Fast food"
-msgstr "РеÑторан. ФаÑтфуд"
-
-msgid "Hotel"
-msgstr "ГоÑтиница"
-
-msgid "Car parking"
-msgstr "СтоÑнка"
-
-msgid "Fuel station"
-msgstr "Ð—Ð°Ð¿Ñ€Ð°Ð²Ð¾Ñ‡Ð½Ð°Ñ ÑтанциÑ"
-
-msgid "Bank"
-msgstr "Банк"
-
-msgid "Hospital"
-msgstr "Больница"
-
-msgid "Cinema"
-msgstr "Кинотеатр"
-
-msgid "Train station"
-msgstr "Ð–ÐµÐ»ÐµÐ·Ð½Ð¾Ð´Ð¾Ñ€Ð¾Ð¶Ð½Ð°Ñ ÑтанциÑ"
-
-msgid "School"
-msgstr "Школа"
-
-msgid "Police"
-msgstr "ПолициÑ"
-
-msgid "Justice"
-msgstr "Суды"
-
-msgid "Taxi"
-msgstr "ТакÑи"
-
-msgid "Shopping"
-msgstr "Магазин"
-
-msgid "Distance from screen center (km)"
-msgstr "РаÑÑтоÑние от центра Ñкрана (км)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr "ПоиÑк POI"
-
-msgid "Select a category"
-msgstr "Выберите категорию"
-
-msgid "Select a distance to look for (km)"
-msgstr "Выберите раÑÑтоÑние Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка (км)"
-
-msgid "Select a POI"
-msgstr "Выберите POI"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "КатегориÑ"
-
-msgid "Direction"
-msgstr "Ðаправление"
-
-msgid "Distance(m)"
-msgstr "РаÑÑтоÑние (м)"
-
-msgid "Name"
-msgstr "Ðазвание"
-
-msgid "Visit Before"
-msgstr "Заехать перед..."
-
-msgid "N"
-msgstr "С"
-
-msgid "NE"
-msgstr "СВ"
-
-msgid "E"
-msgstr "Ð’"
-
-msgid "SE"
-msgstr "ЮВ"
-
-msgid "S"
-msgstr "Ю"
-
-msgid "SW"
-msgstr "ЮЗ"
-
-msgid "W"
-msgstr "З"
-
-msgid "NW"
-msgstr "СЗ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ðет"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "Другой"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Маршрут %4.0fкм %02d:%02d РВП"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Маршрут 0000км 0+00:00 РВП"
-
-msgid "Help"
-msgstr "Справка"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Точка %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Выберите точку, перед которой вÑтавить новую"
-
-msgid "View in Browser"
-msgstr "ПроÑмотреть в браузере"
-
-msgid "Item type"
-msgstr "Тип объекта"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Улицы"
-
-msgid "House numbers"
-msgstr "Ðомера домов"
-
-msgid "View Attributes"
-msgstr "ПроÑмотреть Ðтрибуты"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Задать как текущую позицию и деактивировать ТС"
-
-msgid "POIs"
-msgstr "POIs"
-
-msgid "View on map"
-msgstr "Показать на карте"
-
-msgid "Remove search results from the map"
-msgstr "Удалить результаты поиÑка Ñ ÐºÐ°Ñ€Ñ‚Ñ‹"
-
-msgid "Show results on the map"
-msgstr "Показать результаты поиÑка на карте"
-
-msgid "Cut Bookmark"
-msgstr "Вырезать закладку"
-
-msgid "Copy Bookmark"
-msgstr "Скопировать закладку"
-
-msgid "Rename Bookmark"
-msgstr "Переименовать закладку"
-
-msgid "Paste Bookmark"
-msgstr "Ð’Ñтавить закладку"
-
-msgid "Delete Bookmark"
-msgstr "Удалить закладку"
-
-msgid "Delete waypoint"
-msgstr "Удалить маршрутную точку"
-
-msgid "Bookmarks"
-msgstr "Закладки"
-
-msgid "Bookmarks as waypoints"
-msgstr "Маршрут по закладкам"
-
-msgid "Save waypoints"
-msgstr "Сохранить маршрутные точки"
-
-msgid "Replace with waypoints"
-msgstr "Заменить маршрутными точками"
-
-msgid "Delete Folder"
-msgstr "Удалить папку"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Добавить папку закладок"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Ð’Ñтавить закладку"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Закладка %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Загрузка %s"
-
-msgid "Map Download"
-msgstr "Загрузка карты"
-
-msgid "Active"
-msgstr "Ðктивна"
-
-msgid "Download Enabled"
-msgstr "Загрузка разрешена"
-
-msgid "Download completely"
-msgstr "Загрузить полноÑтью"
-
-msgid "Show Satellite Status"
-msgstr "Показать СоÑтоÑние Спутников"
-
-msgid " Elevation "
-msgstr " Ð’Ñ‹Ñота "
-
-msgid " Azimuth "
-msgstr " Ðзимут "
-
-msgid "Show NMEA Data"
-msgstr "Показать Данные NMEA"
-
-msgid "car"
-msgstr "машина"
-
-msgid "bike"
-msgstr "велоÑипед"
-
-msgid "pedestrian"
-msgstr "пешеход"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Текущий профиль: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Сменить профиль на: %s"
-
-msgid "Set as active"
-msgstr "Сделать активным"
-
-msgid "Show Satellite status"
-msgstr "Показать ÑоÑтоÑние Спутников"
-
-msgid "Show NMEA data"
-msgstr "Показать данные NMEA"
-
-msgid "Add Bookmark"
-msgstr "Добавить закладку"
-
-msgid "Rename"
-msgstr "Переименовать"
-
-msgid "About Navit"
-msgstr "О Navit"
-
-#. Authors
-msgid "By"
-msgstr "Ðвторы:"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "И вÑе учаÑтники команды Navit"
-
-msgid "members and contributors."
-msgstr "и лица внеÑшие вклад"
-
-msgid "Waypoints"
-msgstr "Маршрутные точки"
-
-msgid "Enter Coordinates"
-msgstr "Введите координаты"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Широта Долгота"
-
-msgid "Enter coordinates, for example:"
-msgstr "Введите координаты, например:"
-
-msgid "Vehicle"
-msgstr "Т/Ñ"
-
-msgid "Rules"
-msgstr "Правила"
-
-msgid "Lock on road"
-msgstr "ПридерживатьÑÑ Ð´Ð¾Ñ€Ð¾Ð³Ð¸"
-
-msgid "Northing"
-msgstr "на Ñевер"
-
-msgid "Map follows Vehicle"
-msgstr "Карта Ñледует за машиной"
-
-msgid "Plan with Waypoints"
-msgstr "МножеÑтво точек назначениÑ"
-
-msgid "Maps"
-msgstr "Карты"
-
-msgid "Layout"
-msgstr "Схема"
-
-msgid "Height Profile"
-msgstr "Профиль выÑот"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "ОпиÑание маршрута"
-
-msgid "Show Locale"
-msgstr "Проверить локализацию"
-
-msgid "Former Destinations"
-msgstr "Старые маршруты"
-
-msgid "- No former destinations available -"
-msgstr "- Ðет Ñтарых маршрутов -"
-
-msgid "Message"
-msgstr "Сообщение"
-
-msgid "Back"
-msgstr "Ðазад"
-
-msgid "Back to map"
-msgstr "Ðазад к карте"
-
-msgid "Main Menu"
-msgstr "Главное меню"
-
-msgid "House number"
-msgstr "Ðомер дома"
-
-msgid "Next"
-msgstr "Далее"
-
-msgid "Prev"
-msgstr "Ðазад"
-
-msgid "Return to route!"
-msgstr "ВозвращайтеÑÑŒ на маршрут!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Внимание! Камера!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Снизьте ÑкороÑÑ‚ÑŒ, пожалуйÑта"
-
-msgid "partial match"
-msgstr "неÑтрогое ÑоответÑтвие"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "ПоиÑк"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Города"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Данные карты (c) учаÑтники OpenStreetMap, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-"Папка %s, Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÐºÐ°Ñ€Ñ‚, недоÑтупна.\n"
-"ПожалуйÑта, перезагрузите Navit поÑле Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ SD карты, или выберите "
-"другую папку."
-
-msgid "Downloaded maps"
-msgstr "Загруженные карты"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-"К Ñожалению, карты Ñвыше 3.8 Гб не поддерживаютÑÑ Ð² Android верÑии. Выберите "
-"другую карту."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Ехать Ñюда"
-
-msgid "Cancel"
-msgstr "Отмена"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-"Выбрана папка %s\n"
-"ПерезапуÑтите Navit Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹."
-
-msgid "Whole Planet"
-msgstr "Ð’ÑÑ Ð¿Ð»Ð°Ð½ÐµÑ‚Ð°"
-
-msgid "Africa"
-msgstr "Ðфрика"
-
-msgid "Canary Islands"
-msgstr "КанарÑкие оÑтрова"
-
-msgid "Asia"
-msgstr "ÐзиÑ"
-
-msgid "Korea"
-msgstr "КореÑ"
-
-msgid "Taiwan"
-msgstr "Тайвань"
-
-msgid "UAE+Other"
-msgstr "ОÐЭ и прилегающие"
-
-msgid "Oceania"
-msgstr "ОкеаниÑ"
-
-msgid "Tasmania"
-msgstr "ТаÑманиÑ"
-
-msgid "Victoria"
-msgstr "ВикториÑ"
-
-msgid "New South Wales"
-msgstr "Ðовый Южный УÑльÑ"
-
-msgid "Europe"
-msgstr "Европа"
-
-msgid "Western Europe"
-msgstr "Ð—Ð°Ð¿Ð°Ð´Ð½Ð°Ñ Ð•Ð²Ñ€Ð¾Ð¿Ð°"
-
-msgid "Azores"
-msgstr "ÐзорÑкие о-ва"
-
-msgid "BeNeLux"
-msgstr "Страны БенелюкÑа"
-
-msgid "Alsace"
-msgstr "ЭльзаÑ"
-
-msgid "Aquitaine"
-msgstr "ÐквитаниÑ"
-
-msgid "Auvergne"
-msgstr "Овернь"
-
-msgid "Basse-Normandie"
-msgstr "ÐижнÑÑ ÐормандиÑ"
-
-msgid "Bourgogne"
-msgstr "БургундиÑ"
-
-msgid "Bretagne"
-msgstr "Бретань"
-
-msgid "Centre"
-msgstr "Центр"
-
-msgid "Champagne-Ardenne"
-msgstr "Шампань — Ðрденны"
-
-msgid "Corse"
-msgstr "КорÑика"
-
-msgid "Franche-Comte"
-msgstr "Франш-Конте"
-
-msgid "Haute-Normandie"
-msgstr "ВерхнÑÑ ÐормандиÑ"
-
-msgid "Ile-de-France"
-msgstr "Иль-де-ФранÑ"
-
-msgid "Languedoc-Roussillon"
-msgstr "Лангедок — РуÑÑильон"
-
-msgid "Limousin"
-msgstr "Лимузен"
-
-msgid "Lorraine"
-msgstr "ЛотарингиÑ"
-
-msgid "Midi-Pyrenees"
-msgstr "Юг — Пиренеи"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Ðор — Па-де-Кале"
-
-msgid "Pays-de-la-Loire"
-msgstr "Пеи-де-ла-Луар"
-
-msgid "Picardie"
-msgstr "ПикардиÑ"
-
-msgid "Poitou-Charentes"
-msgstr "Пуату-Шарант"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "ÐŸÑ€Ð¾Ð²Ð°Ð½Ñ â€” Ðльпы — Лазурный берег"
-
-msgid "Rhone-Alpes"
-msgstr "Рона — Ðльпы"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Баден-Вюртемберг"
-
-msgid "Bayern"
-msgstr "БавариÑ"
-
-msgid "Mittelfranken"
-msgstr "СреднÑÑ Ð¤Ñ€Ð°Ð½ÐºÐ¾Ð½Ð¸Ñ"
-
-msgid "Niederbayern"
-msgstr "ÐижнÑÑ Ð‘Ð°Ð²Ð°Ñ€Ð¸Ñ"
-
-msgid "Oberbayern"
-msgstr "ВерхнÑÑ Ð‘Ð°Ð²Ð°Ñ€Ð¸Ñ"
-
-msgid "Oberfranken"
-msgstr "ВерхнÑÑ Ð¤Ñ€Ð°Ð½ÐºÐ¾Ð½Ð¸Ñ"
-
-msgid "Oberpfalz"
-msgstr "Верхний Пфальц"
-
-msgid "Schwaben"
-msgstr "ШвабиÑ"
-
-msgid "Unterfranken"
-msgstr "ÐижнÑÑ Ð¤Ñ€Ð°Ð½ÐºÐ¾Ð½Ð¸Ñ"
-
-msgid "Berlin"
-msgstr "Берлин"
-
-msgid "Brandenburg"
-msgstr "Бранденбург"
-
-msgid "Bremen"
-msgstr "Бремен"
-
-msgid "Hamburg"
-msgstr "Гамбург"
-
-msgid "Hessen"
-msgstr "ГеÑÑен"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Мекленбург-ПереднÑÑ ÐŸÐ¾Ð¼ÐµÑ€Ð°Ð½Ð¸Ñ"
-
-msgid "Niedersachsen"
-msgstr "ÐижнÑÑ Ð¡Ð°ÐºÑониÑ"
-
-msgid "Nordrhein-westfalen"
-msgstr "Северный Рейн-ВеÑтфалиÑ"
-
-msgid "Rheinland-Pfalz"
-msgstr "Рейнланд-Пфальц"
-
-msgid "Saarland"
-msgstr "Саар"
-
-msgid "Sachsen-Anhalt"
-msgstr "СакÑониÑ-Ðнхальт"
-
-msgid "Sachsen"
-msgstr "СакÑониÑ"
-
-msgid "Schleswig-Holstein"
-msgstr "Шлезвиг-Гольштейн"
-
-msgid "Thueringen"
-msgstr "ТюрингиÑ"
-
-msgid "Mallorca"
-msgstr "Мальорка"
-
-msgid "Galicia"
-msgstr "ГалиÑиÑ"
-
-msgid "Scandinavia"
-msgstr "СкандинавиÑ"
-
-msgid "England"
-msgstr "ÐнглиÑ"
-
-msgid "Buckinghamshire"
-msgstr "Бакингемшир"
-
-msgid "Cambridgeshire"
-msgstr "Кембриджшир"
-
-msgid "Cumbria"
-msgstr "КамбриÑ"
-
-msgid "East yorkshire with hull"
-msgstr "ВоÑточный Йоркшир и Халл"
-
-msgid "Essex"
-msgstr "ЭÑÑекÑ"
-
-msgid "Herefordshire"
-msgstr "Херефордшир"
-
-msgid "Kent"
-msgstr "Кент"
-
-msgid "Lancashire"
-msgstr "Ланкашир"
-
-msgid "Leicestershire"
-msgstr "ЛеÑтершир"
-
-msgid "Norfolk"
-msgstr "Ðорфолк"
-
-msgid "Nottinghamshire"
-msgstr "Ðоттингемшир"
-
-msgid "Oxfordshire"
-msgstr "ОкÑфордшир"
-
-msgid "Shropshire"
-msgstr "Шропшир"
-
-msgid "Somerset"
-msgstr "СомерÑет"
-
-msgid "South yorkshire"
-msgstr "Южный Йоркшир"
-
-msgid "Suffolk"
-msgstr "Саффолк"
-
-msgid "Surrey"
-msgstr "Суррей"
-
-msgid "Wiltshire"
-msgstr "Уилтшир"
-
-msgid "Scotland"
-msgstr "ШотландиÑ"
-
-msgid "Wales"
-msgstr "УÑльÑ"
-
-msgid "Crete"
-msgstr "Крит"
-
-msgid "North America"
-msgstr "Ð¡ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ðмерика"
-
-msgid "Alaska"
-msgstr "ÐлÑÑка"
-
-msgid "Hawaii"
-msgstr "Гавайи"
-
-msgid "USA"
-msgstr "СШÐ"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (кроме ÐлÑÑки и ГавайÑких о-вов)"
-
-msgid "Midwest"
-msgstr "Средний Запад"
-
-msgid "Michigan"
-msgstr "Мичиган"
-
-msgid "Ohio"
-msgstr "Охайо"
-
-msgid "Northeast"
-msgstr "Северо-воÑток"
-
-msgid "Massachusetts"
-msgstr "МаÑÑачуÑетÑ"
-
-msgid "Vermont"
-msgstr "Вермонт"
-
-msgid "Pacific"
-msgstr "ТихоокеанÑкое побережье"
-
-msgid "South"
-msgstr "Юг"
-
-msgid "Arkansas"
-msgstr "ÐрканзаÑ"
-
-msgid "District of Columbia"
-msgstr "Округ КолумбиÑ"
-
-msgid "Florida"
-msgstr "Флорида"
-
-msgid "Louisiana"
-msgstr "Луизиана"
-
-msgid "Maryland"
-msgstr "ÐœÑриленд"
-
-msgid "Mississippi"
-msgstr "МиÑÑиÑипи"
-
-msgid "Oklahoma"
-msgstr "Оклахома"
-
-msgid "Texas"
-msgstr "ТехаÑ"
-
-msgid "Virginia"
-msgstr "ВирджиниÑ"
-
-msgid "West Virginia"
-msgstr "Ð—Ð°Ð¿Ð°Ð´Ð½Ð°Ñ Ð’Ð¸Ñ€Ð´Ð¶Ð¸Ð½Ð¸Ñ"
-
-msgid "West"
-msgstr "Запад"
-
-msgid "Arizona"
-msgstr "Ðризона"
-
-msgid "California"
-msgstr "КалифорниÑ"
-
-msgid "Colorado"
-msgstr "Колорадо"
-
-msgid "Idaho"
-msgstr "Ðйдахо"
-
-msgid "Montana"
-msgstr "Монтана"
-
-msgid "New Mexico"
-msgstr "Ðью-МекÑико"
-
-msgid "Nevada"
-msgstr "Ðевада"
-
-msgid "Oregon"
-msgstr "Орегон"
-
-msgid "Utah"
-msgstr "Юта"
-
-msgid "Washington State"
-msgstr "штат Вашингтон"
-
-msgid "South+Middle America"
-msgstr "Ð®Ð¶Ð½Ð°Ñ Ð¸ Ñ†ÐµÐ½Ñ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ðмерика"
-
-msgid "Guyane Francaise"
-msgstr "ФранцузÑÐºÐ°Ñ Ð“Ð²Ð¸Ð°Ð½Ð°"
-
-msgid "downloading"
-msgstr "загружаем"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "готово"
-
-msgid "Media selected for map storage is not available"
-msgstr "УÑтройÑтво Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÐºÐ°Ñ€Ñ‚ недоÑтупно."
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Ðе доÑтаточно меÑта"
-
-msgid "Error downloading map!"
-msgstr "Ошибка загрузки карты!"
-
-msgid "Error writing map!"
-msgstr "Ошибка запиÑи карты!"
-
-msgid "Map download aborted!"
-msgstr "Загрузка карты отменена!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "ОÑталоÑÑŒ"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Загрузка карты"
-
-msgid "Vehicle Position"
-msgstr "МеÑтоположение автомобилÑ"
-
-msgid "Main menu"
-msgstr "Главное меню"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Показать\n"
-"Карту"
-
-msgid "Settings"
-msgstr "ÐаÑтройки"
-
-msgid "Tools"
-msgstr "ИнÑтрументы"
-
-msgid "Route"
-msgstr "Маршрут"
-
-msgid "About"
-msgstr "О программе"
-
-msgid "Quit"
-msgstr "Выход"
-
-msgid "Actions"
-msgstr "Команды"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Старые\n"
-"маршруты"
-
-msgid "Coordinates"
-msgstr "Координаты"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Прекращение\n"
-"навигации"
-
-msgid "Display"
-msgstr "ДиÑплей"
-
-msgid "Fullscreen"
-msgstr "Во веÑÑŒ Ñкран"
-
-msgid "Window Mode"
-msgstr "Режим окна"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "ОпиÑание"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Удалить поÑледнюю \n"
-"точку"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Удалить Ñледующую \n"
-"точку"
-
-msgid "Satellite Status"
-msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñпутников"
-
-msgid "NMEA Data"
-msgstr "Данные NMEA"
-
-msgid "car_shortest"
-msgstr "машина (кратчайший путь)"
-
-msgid "car_avoid_tolls"
-msgstr "машина (избегать платных дорог)"
-
-msgid "car_pedantic"
-msgstr "машина (педантичный)"
-
-msgid "horse"
-msgstr "лошадь"
-
-msgid "Truck"
-msgstr "Грузовик"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Да"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit запущен"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit работает"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Добро пожаловать в Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"СпаÑибо за уÑтановку Navit!\n"
-"\n"
-"Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°, выберите \"Загрузить карты\" из меню Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ карт. "
-"Примечание: файл карты может быть очень большим (>50MB) - рекомендуетÑÑ "
-"иÑпользовать подключениеWi-Fi.\n"
-"\n"
-"КартографичеÑкие данные: (c) учаÑтники OpenStreetMap\n"
-"\n"
-"ПриÑтного Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "ОК"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Приблизить"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Отдалить"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Загрузить карты"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Вкл/выкл POI"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Выйти из Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Копировать / ВоÑÑтановить"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr "Выбрать папку Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÐºÐ°Ñ€Ñ‚"
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Удалить Ñту карту?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Скачиваем:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Ошибка при загрузке карты"
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Загрузка карты отменена"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Ðет данных GPS. Повторите позже."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Карты, включающие текущее меÑтоположение"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "ÐдреÑный поиÑк"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Введите назначение"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Разрешить неполное Ñовпадение"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Ищем..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "ÐÐ´Ñ€ÐµÑ Ð½Ðµ найден"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Получение результатов поиÑка"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Загрузка результатов поиÑка"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Ðичего не найдено"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "ТекÑÑ‚ не введен"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "УÑтанавливаем точку Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½Ð°:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Выберите дейÑтвие"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Ð’Ñтавьте SD карту"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "СохранÑем..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "ВоÑÑтанавливаем..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Ошибка при Ñоздании папки Ð´Ð»Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¾Ð¹ копии"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Ошибка при резервном копировании"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Резервные копии не найдены"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Ошибка при воÑÑтановлении"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Резервное копирование уÑпешно завершено"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"ВоÑÑтановление завершено\n"
-"ПерезапуÑтите Navit, пожалуйÑта"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Резервные копии не найдены"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Ошибка при воÑÑтановлении"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Выберите резервную копию"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Резервное копирование"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "ВоÑÑтановление из копии"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr "Ð’ ÑиÑтеме отÑутÑтвуют нобходимые голоÑовые наÑтройки"
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-"Navit может иÑпользовать любое уÑтановленное в ÑиÑтеме приложение "
-"Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑта в речь. Выбранное ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ñообщает о "
-"невозможноÑти работы на выбранном Ñзыке. ПопроÑим ÑиÑтему показать диалог "
-"загрузки голоÑовых данных?"
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "затем %2$s Ñъезжайте Ñ ÐºÑ€ÑƒÐ³Ð° на %1$s"
diff --git a/po/sc.po.in b/po/sc.po.in
deleted file mode 100644
index 4c3fffbe6..000000000
--- a/po/sc.po.in
+++ /dev/null
@@ -1,2748 +0,0 @@
-# Sardinian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Rex Sanna https://launchpad.net/~rex-sanna
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:00+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Sardinian <sc@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n!=1;\n"
-"Language: sc\n"
-
-msgid "Running from source directory\n"
-msgstr "Leghende dae sos sorgentese\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "imposto '%s' a '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "Nemmoso"
-
-msgid "first"
-msgstr ""
-
-msgid "second"
-msgstr "secundu"
-
-msgid "third"
-msgstr "terzu"
-
-msgid "fourth"
-msgstr "quartu"
-
-msgid "fifth"
-msgstr "quintu"
-
-msgid "sixth"
-msgstr "sestu"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "prima essia"
-
-msgid "second exit"
-msgstr "secunda essia"
-
-msgid "third exit"
-msgstr "terza essia"
-
-msgid "fourth exit"
-msgstr "quarta essia"
-
-msgid "fifth exit"
-msgstr "quinta essia"
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metroso"
-
-#, c-format
-msgid "in %d meters"
-msgstr "in %d metroso"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d, %d chilometroso"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "in %d, %d chilometroso"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "unu chilometru"
-msgstr[1] "%d chilometroso"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "in unu chilometru"
-msgstr[1] "in %d chilometroso"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "in sa rampa"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sin s\\'istrada %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sin su %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sin sa %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sin su %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sin sa %s"
-
-msgid "When possible, please turn around"
-msgstr "Commente possibile torra in daesecusu"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Sichi s'istrada fintzasa a %s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Lassa sa rotatoria a %1$s %2$s"
-
-msgid "soon"
-msgstr "prestu"
-
-msgid "now"
-msgstr "como"
-
-msgid "then"
-msgstr "tando"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "destra"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "manca"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "fatzilmente "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "fortemente "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Pica sa %1$s istrada a %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "dopu %i istradasa"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Zira %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "tando torra in daesecusu"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Torra in daesecusu %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "tando torra in daesecusu"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Torra in daesecusu %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "sichi"
-
-msgid "then you have reached your destination."
-msgstr "tando ses arribbau"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Ses arribbau a %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Essi"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Positzione"
-
-msgid "Command"
-msgstr "Comandu"
-
-msgid "Length"
-msgstr "Longaria"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tempu"
-
-msgid "Destination Length"
-msgstr "Longaria de destinazione"
-
-msgid "Destination Time"
-msgstr "Tempu de destinazione"
-
-msgid "Roadbook"
-msgstr "Libru de istradasa"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Issepera positzione"
-
-msgid "Set as destination"
-msgstr "Sintza commente destinatzione"
-
-msgid "Add as bookmark"
-msgstr "Sinza commente importante"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punta 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Coordinadasa ischermu: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Emiratoso Araboso"
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr "Arghentina"
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr "Belgiu"
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Santu Bartolomeu"
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasile"
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Isolasa Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorussia"
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Congo, Repubblica Democratica"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Repubblica Centrale Africana"
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr "Svitzera"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Casta de Avoriu"
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr "Cile"
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr "Cina"
-
-#. 170
-msgid "Colombia"
-msgstr "Columbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr "Capu Virde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr "Cipro"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Repubblica Ceca"
-
-#. 276
-msgid "Germany"
-msgstr "Germania"
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr "Danimarca"
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Repubblica Domenicana"
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr "Egittu"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara Ovest"
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr "Ispagna"
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr "Finlandia"
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr "Francia"
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr "Inghilterra"
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr "Croatzia"
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr "Ungheria"
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr "Irlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Israele"
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Repubblica Islamica"
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanu"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Santa Luchia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr "Lituania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Lussemburgo"
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Marocco"
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Isolasa Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedonia, Repubblica Yugoslava"
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr "Maldive"
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr "Messico"
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambicu"
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nova Caledonia"
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr "Nova Zelanda"
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr "Peru'"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Polinesia Frantzese"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr "Filippine"
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr "Polonia"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr "Portogallo"
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr "Federatzione Russa"
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Arabia Saudita"
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr "Svetzia"
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovacchia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Repubblica Araba de Siria"
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Territorioso Sud Franzesese"
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr "Tailandia"
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr "Turchia"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr "Sud Africa"
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Inconnottu, pone sa tag is_in in custas zittadese"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Puntu in sa Mappa"
-
-msgid "Car"
-msgstr "Macchina"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Paese"
-
-msgid "Postal"
-msgstr "Posta"
-
-msgid "Town"
-msgstr "Bidda"
-
-msgid "District"
-msgstr "Bichinau"
-
-msgid "Street"
-msgstr "Istrada"
-
-msgid "Number"
-msgstr "Numeru"
-
-msgid "Enter Destination"
-msgstr "Issepera destinatzione"
-
-msgid "Zip Code"
-msgstr "CAP"
-
-msgid "City"
-msgstr "Cittade"
-
-msgid "District/Township"
-msgstr "Bichinau/Municipiu"
-
-msgid "Map"
-msgstr "Mappa"
-
-msgid "Bookmark"
-msgstr "Sintzau"
-
-msgid "Destination"
-msgstr "Destinatzione"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr "Fala su livellu de zoom"
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr "Artzia su livellu de zoom"
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr "Torra a mustrare"
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Apperi sa bentana pro chircare istradasa"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "_Essi"
-
-msgid "Quit the application"
-msgstr "Essi s'applicatzione"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Pone su nord in daennantisi"
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr "Pone/Doga sa descrizione de s'istrada"
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Usa/Doga su zoom automaticu"
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SO"
-
-msgid "W"
-msgstr "O"
-
-msgid "NW"
-msgstr "NO"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nono"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Istrada %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Istrada 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Azzudu"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Bie in su Browser"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Istradasa"
-
-msgid "House numbers"
-msgstr "Numeroso Civicoso"
-
-msgid "View Attributes"
-msgstr "Leghe Attributoso"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "POIs"
-
-msgid "View on map"
-msgstr "Pompia in sa Mappa"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Moghe"
-
-msgid "Copy Bookmark"
-msgstr "Copia"
-
-msgid "Rename Bookmark"
-msgstr "Torra a nominare"
-
-msgid "Paste Bookmark"
-msgstr "Incolla"
-
-msgid "Delete Bookmark"
-msgstr "Doga"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Locoso Importantese"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Pone tra sos importantese"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Pone inoche"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Importante: %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Pompia s'istatu de su satellite"
-
-msgid " Elevation "
-msgstr " Artaria "
-
-msgid " Azimuth "
-msgstr " Azimuth "
-
-msgid "Show NMEA Data"
-msgstr "Pompia NMEA Data"
-
-msgid "car"
-msgstr "Macchina"
-
-msgid "bike"
-msgstr "Bicicletteda"
-
-msgid "pedestrian"
-msgstr "A pedese"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Profilu currente: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Cambia profilu a: %s"
-
-msgid "Set as active"
-msgstr "Sintza Attivu"
-
-msgid "Show Satellite status"
-msgstr "Pompia s'istatu de su satellite"
-
-msgid "Show NMEA data"
-msgstr "Pompia NMEA data"
-
-msgid "Add Bookmark"
-msgstr "Sintza Importante"
-
-msgid "Rename"
-msgstr "Torra a lu nominare"
-
-msgid "About Navit"
-msgstr "Itte Navit??"
-
-#. Authors
-msgid "By"
-msgstr "De"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "E tottu su Navit Team"
-
-msgid "members and contributors."
-msgstr "zente nostra e azzudantese"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Veicolu"
-
-msgid "Rules"
-msgstr "Regulasa"
-
-msgid "Lock on road"
-msgstr "Pompia in s'istrada"
-
-msgid "Northing"
-msgstr "Versu Nord"
-
-msgid "Map follows Vehicle"
-msgstr "Sa mappa ti sichiti"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Mappa"
-
-msgid "Layout"
-msgstr "Impaghinadura"
-
-msgid "Height Profile"
-msgstr "Profilu de Pesu"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Descritzione de s'istrada"
-
-msgid "Show Locale"
-msgstr "Mustra limba"
-
-msgid "Former Destinations"
-msgstr "Destinatzionese"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Imperiu"
-
-msgid "Back"
-msgstr "Torra"
-
-msgid "Back to map"
-msgstr "Torra a sa Mappa"
-
-msgid "Main Menu"
-msgstr "Menu Printzipale"
-
-msgid "House number"
-msgstr "Numeru Civicu"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Positzione de su Veicolu"
-
-msgid "Main menu"
-msgstr "Menu Printzipale"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Mustra\n"
-"Mappa"
-
-msgid "Settings"
-msgstr "Impostatzionese"
-
-msgid "Tools"
-msgstr "Istrumentoso"
-
-msgid "Route"
-msgstr "Viatzu"
-
-msgid "About"
-msgstr "Itte?"
-
-msgid "Quit"
-msgstr "Essi"
-
-msgid "Actions"
-msgstr "Atzionese"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Firma\n"
-"Navigatzione"
-
-msgid "Display"
-msgstr "Aparèntzia"
-
-msgid "Fullscreen"
-msgstr "A tottu ischermu"
-
-msgid "Window Mode"
-msgstr "Modalidade Bentanedda"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Descritzione"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "A cavaddu"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "tando lassa sa rotatoria a %1$s %2$s"
diff --git a/po/si.po.in b/po/si.po.in
deleted file mode 100644
index 890eb0644..000000000
--- a/po/si.po.in
+++ /dev/null
@@ -1,2747 +0,0 @@
-# Sinhalese translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# සපුමල් බණ්ඩà·à¶» https://launchpad.net/~sapumalbandaraucsc
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:00+0000\n"
-"Last-Translator: සපුමල් බණ්ඩà·à¶» <sapumalbandaraucsc@gmail.com>\n"
-"Language-Team: Sinhalese <si@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: si\n"
-
-msgid "Running from source directory\n"
-msgstr "මූල ඩිරෙක්ටරියෙන් විචලනය වේ\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "'%s' ලෙස '%s' සිටුවීම\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "à·à·”න්â€à¶ºà·€à¶±"
-
-msgid "first"
-msgstr "පළමු"
-
-msgid "second"
-msgstr "තත්පරය"
-
-msgid "third"
-msgstr "තෙවන"
-
-msgid "fourth"
-msgstr "සිව්වන"
-
-msgid "fifth"
-msgstr "පස්වන"
-
-msgid "sixth"
-msgstr "සයවන"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "à·à·”න්â€à¶ºà·€à¶± පිටවුම"
-
-msgid "first exit"
-msgstr "පළමු පිටවුම"
-
-msgid "second exit"
-msgstr "දෙවන පිටවුම"
-
-msgid "third exit"
-msgstr "තෙවන පිටවුම"
-
-msgid "fourth exit"
-msgstr "සිව්වන පිටවුම"
-
-msgid "fifth exit"
-msgstr "පස්වන පිටවුම"
-
-msgid "sixth exit"
-msgstr "සයවන පිටවුම"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "මීටර %d"
-
-#, c-format
-msgid "in %d meters"
-msgstr "මීටර %d කින්"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "කිල෠මීටර %d.%d"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "කිල෠මීටර %d.%d කින්"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "කිල෠මීටරයයි"
-msgstr[1] "කිල෠මීටර %d"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "කිල෠මීටරයකින්"
-msgstr[1] "කිල෠මීටර %d කින්"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "රà·à¶¸à·Šà¶´à¶º තුළට"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s %s %s %s තුළට"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s %s %s %s තුළට"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s %s %s %s තුළට"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s %s %s %s තුළට"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s %s තුළට"
-
-msgid "When possible, please turn around"
-msgstr "à·„à·à¶šà·’යà·à·€ ඇතිවිට දී, කරුණà·à¶šà¶» à·„à·à¶»à·™à¶±à·Šà¶±."
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "මීළඟ %s දක්ව෠මà·à¶»à·Šà¶œà¶º හඹà·à¶ºà¶±à·Šà¶±."
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "%1$s %2$s හිදී වටරවුමෙන් ඉවත්වන්න."
-
-msgid "soon"
-msgstr "ලඟදීම"
-
-msgid "now"
-msgstr "දà·à¶±à·Š"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "දකුණ"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "වම"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "පහසුවෙන් "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "à·à¶šà·Šà¶­à·’මත් ලෙස "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "ගන්න %1$s මà·à¶»à·Šà¶œà¶º %2$s ට"
-
-#, c-format
-msgid "after %i roads"
-msgstr "මà·à¶»à·Šà¶œ %i පසු"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "%1$s%2$s %3$s%4$s හරවන්න"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "එවිට ඔබ ඔබේ ගමනà·à¶±à·Šà¶­à¶ºà¶§ ළඟ෠වී ඇත."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "ඔබ ඔබේ ගමනà·à¶±à·Šà¶­à¶º වන %s ට ළඟ෠වී ඇත."
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "පිටවුම"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "ස්ථà·à¶±à¶º"
-
-msgid "Command"
-msgstr "විධà·à¶±à¶º"
-
-msgid "Length"
-msgstr "දිග"
-
-msgid "km"
-msgstr "කිල෠මිටර"
-
-msgid "m"
-msgstr "මි."
-
-msgid "Time"
-msgstr "වේලà·à·€"
-
-msgid "Destination Length"
-msgstr "ගමනà·à¶±à·Šà¶­à¶ºà¶§ දුර"
-
-msgid "Destination Time"
-msgstr "ගමනà·à¶±à·Šà¶­à¶ºà¶§ කà·à¶½à¶º"
-
-msgid "Roadbook"
-msgstr "මà·à¶»à·Šà¶œ පොත"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "ස්ථà·à¶±à¶º ලෙස සිටුවන්න"
-
-msgid "Set as destination"
-msgstr "ගමනà·à¶±à·Šà¶­à¶º ලෙස සිටුවන්න"
-
-msgid "Add as bookmark"
-msgstr "පිටුසනක් ලෙස ඈඳන්න"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "පොයින්ට් 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "තිර ඛණ්ඩà·à¶‚ක : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "ඇන්ඩොර්රà·"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "එක්සත් අරà·à¶¶à·’ එමිර් රà·à¶¢à·Šâ€à¶ºà¶º"
-
-#. 004
-msgid "Afghanistan"
-msgstr "ඇෆ්ගනිස්ථà·à¶±à¶º"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "ඇන්ටිගුව෠සහ බà·à¶»à·Šà¶¶à¶©à·"
-
-#. 660
-msgid "Anguilla"
-msgstr "ඇන්ගියුලà·à·€"
-
-#. 008
-msgid "Albania"
-msgstr "ඇල්බෙනියà·à·€"
-
-#. 051
-msgid "Armenia"
-msgstr "අර්මෙනියà·à·€"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "නෙදර්ලන්ත ඇන්ටිලීස්"
-
-#. 024
-msgid "Angola"
-msgstr "ඇන්ගà·à¶½à·à·€"
-
-#. 010
-msgid "Antarctica"
-msgstr "ඇන්ටà·à¶šà·Šà¶§à·’කà·à·€"
-
-#. 032
-msgid "Argentina"
-msgstr "ආජන්ටිනà·à·€"
-
-#. 016
-msgid "American Samoa"
-msgstr "ඇමරිකà·à¶±à·” à·ƒà·à¶¸à·à·€à·"
-
-#. 040
-msgid "Austria"
-msgstr "ඔස්ට්â€à¶»à·’යà·à·€"
-
-#. 036
-msgid "Australia"
-msgstr "ඔස්ට්â€à¶»à·šà¶½à·’යà·à·€"
-
-#. 533
-msgid "Aruba"
-msgstr "අරුබà·à·€"
-
-#. 248
-msgid "Aland Islands"
-msgstr "අලෑන්ඩ් දූපත්"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "අසර්බයිජà·à¶±à¶º"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "බොස්නියà·à·€ සහ හෙසෙගවිනà·"
-
-#. 052
-msgid "Barbados"
-msgstr "බà·à¶¶à¶©à·à·ƒà¶º"
-
-#. 050
-msgid "Bangladesh"
-msgstr "බංග්ලà·à¶¯à·šà·à¶º"
-
-#. 056
-msgid "Belgium"
-msgstr "බෙල්ජියම"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "බර්කින෠ෆà·à·ƒà·"
-
-#. 100
-msgid "Bulgaria"
-msgstr "බල්ගේරියà·à·€"
-
-#. 048
-msgid "Bahrain"
-msgstr "බහරේනය"
-
-#. 108
-msgid "Burundi"
-msgstr "බුරුන්ඩි"
-
-#. 204
-msgid "Benin"
-msgstr "බෙනින්"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "à·ƒà·à¶±à·Šà¶­ බà·à¶­à¶½à·™à¶¸à·šà¶º"
-
-#. 060
-msgid "Bermuda"
-msgstr "බර්මියුඩà·à·€"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "බෘනà·à¶ºà·’ දරුස්සලà·à¶¸à·Š"
-
-#. 068
-msgid "Bolivia"
-msgstr "බොලීවියà·à·€"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "බ්â€à¶»à·ƒà·“ලය"
-
-#. 044
-msgid "Bahamas"
-msgstr "බහමà·à·ƒà·Š"
-
-#. 064
-msgid "Bhutan"
-msgstr "භුතà·à¶±à¶º"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "බොවෙ දිවයින"
-
-#. 072
-msgid "Botswana"
-msgstr "බොට්ස්වà·à¶±à·"
-
-#. 112
-msgid "Belarus"
-msgstr "බෙලරුසය"
-
-#. 084
-msgid "Belize"
-msgstr "බෙලිසිය"
-
-#. 124
-msgid "Canada"
-msgstr "කà·à¶±à¶©à·à·€"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "කොකà·à·€à· (කීලිං) දූපත්"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "කොංගà·à·€, ප්â€à¶»à¶¢à·à¶­à·à¶±à·Šà¶­à·Šâ€à¶»à·’ක සමූහà·à¶«à·Šà¶©à·”à·€"
-
-#. 140
-msgid "Central African Republic"
-msgstr "මධ්â€à¶ºà¶¸ අප්â€à¶»à·’කà·à¶±à·” ජනරජය"
-
-#. 178
-msgid "Congo"
-msgstr "කොන්ගà·à·€"
-
-#. 756
-msgid "Switzerland"
-msgstr "ස්විට්සර්ලන්තය"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "කොට් ඩි'ඉවොයර්"
-
-#. 184
-msgid "Cook Islands"
-msgstr "කුක් දූපත්"
-
-#. 152
-msgid "Chile"
-msgstr "චිලී"
-
-#. 120
-msgid "Cameroon"
-msgstr "කà·à¶¸à¶»à·–න්"
-
-#. 156
-msgid "China"
-msgstr "චීනය"
-
-#. 170
-msgid "Colombia"
-msgstr "කොලොම්බියà·à·€"
-
-#. 188
-msgid "Costa Rica"
-msgstr "කොස්ට රිකà·"
-
-#. 192
-msgid "Cuba"
-msgstr "කියුබà·à·€"
-
-#. 132
-msgid "Cape Verde"
-msgstr "කේප් තුඩුව"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "ක්â€à¶»à·’ස්ම්ස් දූපත"
-
-#. 196
-msgid "Cyprus"
-msgstr "සයිප්â€à¶»à·ƒà¶º"
-
-#. 203
-msgid "Czech Republic"
-msgstr "චෙක් ජනරජය"
-
-#. 276
-msgid "Germany"
-msgstr "ජර්මනිය"
-
-#. 262
-msgid "Djibouti"
-msgstr "ජිබුටි"
-
-#. 208
-msgid "Denmark"
-msgstr "ඩෙන්මà·à¶šà¶º"
-
-#. 212
-msgid "Dominica"
-msgstr "ඩොමිනිකà·à·€"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "ඩොමිනිකන් ජනරජය"
-
-#. 012
-msgid "Algeria"
-msgstr "ඇල්ජීරියà·à·€"
-
-#. 218
-msgid "Ecuador"
-msgstr "ඉක්වදà·à¶»à¶º"
-
-#. 233
-msgid "Estonia"
-msgstr "එස්ටà·à¶±à·’යà·à·€"
-
-#. 818
-msgid "Egypt"
-msgstr "ඊජිප්තුව"
-
-#. 732
-msgid "Western Sahara"
-msgstr "බටහිර සහරà·"
-
-#. 232
-msgid "Eritrea"
-msgstr "එරිත්â€à¶»à·’යà·à·€"
-
-#. 724
-msgid "Spain"
-msgstr "ස්පà·à¶¤à·Šà¶¤à¶º"
-
-#. 231
-msgid "Ethiopia"
-msgstr "ඉතියà·à¶´à·’යà·à·€"
-
-#. 246
-msgid "Finland"
-msgstr "පින්ලන්තය"
-
-#. 242
-msgid "Fiji"
-msgstr "ෆීජි"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "à·†à·à¶šà·Šà¶½à¶±à·Šà¶©à·Š දූපත් (මල්විනà·à·ƒà·Š)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "මයික්â€à¶»à·œà¶±à·“සියà·à¶±à·” සමූහà·à¶«à·Šà¶©à·”à·€"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "à·†à·à¶»à·à¶ºà·’ දූපත්"
-
-#. 250
-msgid "France"
-msgstr "ප්â€à¶»à¶‚à·à¶º"
-
-#. 266
-msgid "Gabon"
-msgstr "ගà·à¶¶à·à¶±à¶º"
-
-#. 826
-msgid "United Kingdom"
-msgstr "එක්සත් රà·à¶¢à¶°à·à¶±à·’ය"
-
-#. 308
-msgid "Grenada"
-msgstr "ග්â€à¶»à·™à¶±à·à¶©à·"
-
-#. 268
-msgid "Georgia"
-msgstr "ජොර්ජියà·à·€"
-
-#. 254
-msgid "French Guiana"
-msgstr "ප්â€à¶»à¶‚෠ගයනà·à·€"
-
-#. 831
-msgid "Guernsey"
-msgstr "ගුවන්සි"
-
-#. 288
-msgid "Ghana"
-msgstr "à¶à·à¶±à·à·€"
-
-#. 292
-msgid "Gibraltar"
-msgstr "ජිබ්â€à¶»à·œà¶½à·Šà¶§à·"
-
-#. 304
-msgid "Greenland"
-msgstr "ග්â€à¶»à·“න්ලන්තය"
-
-#. 270
-msgid "Gambia"
-msgstr "ගà·à¶¸à·Šà¶¶à·’යà·à·€"
-
-#. 324
-msgid "Guinea"
-msgstr "ගිනියà·"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "â€à¶œà·à¶©à·’ලà·à¶´à·Š"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "එක්වටà·à¶»à·’යල් ගිනියà·"
-
-#. 300
-msgid "Greece"
-msgstr "ග්â€à¶»à·“සිය"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "දකුණු ජොර්ජියà·à·€ සහ දකුණු à·ƒà·à¶±à·Šà·€à·’ච් දූපත්"
-
-#. 320
-msgid "Guatemala"
-msgstr "ගà·à¶­à¶¸à·à¶½à·à·€"
-
-#. 316
-msgid "Guam"
-msgstr "ගුවà·à¶¸à·Š"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "ගිනි - බිසව්"
-
-#. 328
-msgid "Guyana"
-msgstr "ගුයà·à¶±à·"
-
-#. 344
-msgid "Hong Kong"
-msgstr "හොං කොං"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "හර්ඩ් දූපත සහ මà·à¶šà·Šà¶©à·œà¶±à¶½à·Šà¶©à·Š දූපත්"
-
-#. 340
-msgid "Honduras"
-msgstr "හොන්ඩුරà·à·ƒà·Š"
-
-#. 191
-msgid "Croatia"
-msgstr "ක්â€à¶»à·œà¶’ෂියà·à·€"
-
-#. 332
-msgid "Haiti"
-msgstr "හයිටි"
-
-#. 348
-msgid "Hungary"
-msgstr "හංගේරියà·à·€"
-
-#. 360
-msgid "Indonesia"
-msgstr "ඉන්දුනීසියà·à·€"
-
-#. 372
-msgid "Ireland"
-msgstr "අයර්ලන්තය"
-
-#. 376
-msgid "Israel"
-msgstr "ඊà·à·Šâ€à¶»à·à¶ºà¶½à¶º"
-
-#. 833
-msgid "Isle of Man"
-msgstr "අයිල් ඔෆ් මෑන්"
-
-#. 356
-msgid "India"
-msgstr "ඉන්දියà·à·€"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "බ්â€à¶»à·’තà·à¶±à·Šâ€à¶ºà¶ºà·š ඉන්දියà·à¶±à·” à·ƒà·à¶œà¶» බල ප්â€à¶»à¶¯à·šà·à¶º"
-
-#. 368
-msgid "Iraq"
-msgstr "ඉරà·à¶šà¶º"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "ඉරà·à¶± ඉස්ලà·à¶¸à·“ය ජනරජය"
-
-#. 352
-msgid "Iceland"
-msgstr "අයිස්ලන්තය"
-
-#. 380
-msgid "Italy"
-msgstr "ඉතà·à¶½à·’ය"
-
-#. 832
-msgid "Jersey"
-msgstr "ජර්සි"
-
-#. 388
-msgid "Jamaica"
-msgstr "ජà·à¶¸à·™à¶ºà·’කà·à·€"
-
-#. 400
-msgid "Jordan"
-msgstr "ජොර්දà·à¶±à¶º"
-
-#. 392
-msgid "Japan"
-msgstr "ජපà·à¶±à¶º"
-
-#. 404
-msgid "Kenya"
-msgstr "කෙන්යà·à·€"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "කිර්ගිස්තà·à¶±à¶º"
-
-#. 116
-msgid "Cambodia"
-msgstr "කà·à¶¸à·Šà¶¶à·à¶¢à·’යà·à·€"
-
-#. 296
-msgid "Kiribati"
-msgstr "කිරිබටි"
-
-#. 174
-msgid "Comoros"
-msgstr "කොමොරොස්"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "à·à·à¶±à·Šà¶­ කිට්ස් සහ නෙවිස්"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "කොරියà·à¶±à·” ප්â€à¶»à¶¢à·à¶­à·à¶±à·Šà¶­à·Šâ€à¶»à·’ක ජනරජය"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "කොරියà·à¶±à·” ජනරජය"
-
-#. 414
-msgid "Kuwait"
-msgstr "කුවේටය"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "කේමන් දූපත්"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "කසකස්තà·à¶±à¶º"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "ලà·à¶• ප්â€à¶»à¶¢à·à¶­à·à¶±à·Šà¶­à·Šâ€à¶»à·’ක ජනරජය"
-
-#. 422
-msgid "Lebanon"
-msgstr "ලෙබනනය"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "à·à·à¶±à·Šà¶­ ලුසියà·"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "ලීච්ටෙන්ස්ටයින්"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "à·à·Šâ€à¶»à·“ ලංකà·à·€"
-
-#. 430
-msgid "Liberia"
-msgstr "ලයිබීරියà·à·€"
-
-#. 426
-msgid "Lesotho"
-msgstr "ලෙසතà·à·€"
-
-#. 440
-msgid "Lithuania"
-msgstr "ලිතුවේනියà·à·€"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ලක්සම්බර්ග්"
-
-#. 428
-msgid "Latvia"
-msgstr "ලà·à¶§à·Šà·€à·’යà·à·€"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "මොරොක්කà·à·€"
-
-#. 492
-msgid "Monaco"
-msgstr "මොනකà·à·€"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "මà·à¶½à·Šà¶©à·à·€à· ජනරජය"
-
-#. 499
-msgid "Montenegro"
-msgstr "මොන්ටෙන්ග්â€à¶»à·à·€"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "à·ƒà·à¶±à·Šà¶­ මà·à¶§à·’න් ( ප්â€à¶»à¶‚෠කොටස )"
-
-#. 450
-msgid "Madagascar"
-msgstr "මà·à¶©à¶œà·ƒà·Šà¶šà¶»à¶º"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "මà·à·‚ල් දූපත්"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "මà·à·ƒà·’ඩà·à¶±à·’යà·à·€ ( පෙර යුගà·à·ƒà·Šà¶½à·à·€à·’යනු ජනරජය )"
-
-#. 466
-msgid "Mali"
-msgstr "මà·à¶½à·’"
-
-#. 104
-msgid "Myanmar"
-msgstr "මියන්මà·à¶»à¶º"
-
-#. 496
-msgid "Mongolia"
-msgstr "මොංගà·à¶½à·’යà·à·€"
-
-#. 446
-msgid "Macao"
-msgstr "මà·à¶šà·"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "උතුරු මරියà·à¶±à· දූපත්"
-
-#. 474
-msgid "Martinique"
-msgstr "මà·à¶§à·’නික්"
-
-#. 478
-msgid "Mauritania"
-msgstr "මවුරිටේනියà·"
-
-#. 500
-msgid "Montserrat"
-msgstr "මොන්ට්සෙරට්"
-
-#. 470
-msgid "Malta"
-msgstr "මොල්ටà·à·€"
-
-#. 480
-msgid "Mauritius"
-msgstr "මොරිෂස්"
-
-#. 462
-msgid "Maldives"
-msgstr "මà·à¶½à¶¯à·’වයින"
-
-#. 454
-msgid "Malawi"
-msgstr "මලà·à·€à·“"
-
-#. 484
-msgid "Mexico"
-msgstr "මෙක්සිකà·à·€"
-
-#. 458
-msgid "Malaysia"
-msgstr "මà·à¶½à·šà·ƒà·’යà·à·€"
-
-#. 508
-msgid "Mozambique"
-msgstr "මොසà·à¶¸à·Šà¶¶à·’ක්"
-
-#. 516
-msgid "Namibia"
-msgstr "නà·à¶¸à·“බියà·à·€"
-
-#. 540
-msgid "New Caledonia"
-msgstr "නිව් සෙලිඩà·à¶±à·’යà·à·€"
-
-#. 562
-msgid "Niger"
-msgstr "නයිජර්"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "නà·à·†à·à¶šà·Š දූපත"
-
-#. 566
-msgid "Nigeria"
-msgstr "නයිජීරියà·à·€"
-
-#. 558
-msgid "Nicaragua"
-msgstr "නිකරගුවà·à·€"
-
-#. 528
-msgid "Netherlands"
-msgstr "නෙදර්ලන්තය"
-
-#. 578
-msgid "Norway"
-msgstr "නà·à¶»à·Šà·€à·š"
-
-#. 524
-msgid "Nepal"
-msgstr "නේපà·à¶½à¶º"
-
-#. 520
-msgid "Nauru"
-msgstr "නà·à·€à·”රු"
-
-#. 570
-msgid "Niue"
-msgstr "නිඌ"
-
-#. 554
-msgid "New Zealand"
-msgstr "නවසීලන්තය"
-
-#. 512
-msgid "Oman"
-msgstr "ඕමà·à¶±à¶º"
-
-#. 591
-msgid "Panama"
-msgstr "පà·à¶±à¶¸à·à·€"
-
-#. 604
-msgid "Peru"
-msgstr "පේරු"
-
-#. 258
-msgid "French Polynesia"
-msgstr "ප්â€à¶»à¶‚෠පොලිනීසියà·à·€"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "පà·à¶´à·”ව෠නිව් ගිනියà·à·€"
-
-#. 608
-msgid "Philippines"
-msgstr "පිලිපීනය"
-
-#. 586
-msgid "Pakistan"
-msgstr "පකිස්තà·à¶±à¶º"
-
-#. 616
-msgid "Poland"
-msgstr "පà·à¶½à¶±à·Šà¶­à¶º"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "à·ƒà·à¶±à·Šà¶­ පියරෙ ඇන්ඩ් මà·à¶šà·Šâ€à¶½à¶±à·Š"
-
-#. 612
-msgid "Pitcairn"
-msgstr "පිට්කෙයà·à¶±à·Š"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "පà·à¶§à·œ රිකà·"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "පලස්තීනියà·à¶±à·” බල ප්â€à¶»à¶¯à·šà·à¶º, සන්තක"
-
-#. 620
-msgid "Portugal"
-msgstr "පෘතුගà·à¶½à¶º"
-
-#. 585
-msgid "Palau"
-msgstr "පà·à·€à·”ලු"
-
-#. 600
-msgid "Paraguay"
-msgstr "පà·à¶»à¶œà·”වේ"
-
-#. 634
-msgid "Qatar"
-msgstr "කටà·à¶»à¶º"
-
-#. 638
-msgid "Reunion"
-msgstr "රියුනියන්"
-
-#. 642
-msgid "Romania"
-msgstr "රොමේනියà·à·€"
-
-#. 688
-msgid "Serbia"
-msgstr "සර්බියà·à·€"
-
-#. 643
-msgid "Russian Federation"
-msgstr "රුසියà·à¶±à·” සමූහà·à¶«à·Šà¶©à·”à·€"
-
-#. 646
-msgid "Rwanda"
-msgstr "ර්වන්ඩà·"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "සවුදි අරà·à¶¶à·’ය"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "සොලමන් දූපත්"
-
-#. 690
-msgid "Seychelles"
-msgstr "සී à·à·™à¶½à·Šà·ƒà·Š"
-
-#. 736
-msgid "Sudan"
-msgstr "සුඩà·à¶±à¶º"
-
-#. 752
-msgid "Sweden"
-msgstr "ස්වීඩනය"
-
-#. 702
-msgid "Singapore"
-msgstr "සිංගප්පූරුව"
-
-#. 654
-msgid "Saint Helena"
-msgstr "à·ƒà·à¶±à·Šà¶­ හෙලේනà·"
-
-#. 705
-msgid "Slovenia"
-msgstr "ස්ලà·à·€à·šà¶±à·’යà·"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "ස්වල්බà·à¶©à·Š සහ ජන් මයෙන්"
-
-#. 703
-msgid "Slovakia"
-msgstr "ස්ලà·à·€à·à¶šà·’යà·à·€"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "සියෙර෠ලියොන්"
-
-#. 674
-msgid "San Marino"
-msgstr "à·ƒà·à¶±à·Š මරීනà·"
-
-#. 686
-msgid "Senegal"
-msgstr "සෙනගà·à¶½à¶º"
-
-#. 706
-msgid "Somalia"
-msgstr "à·ƒà·à¶¸à·à¶½à·’යà·à·€"
-
-#. 740
-msgid "Suriname"
-msgstr "සුරිනේම්"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "à·ƒà·à¶• ටොමේ සහ ප්â€à¶»à·’න්සිපේ"
-
-#. 222
-msgid "El Salvador"
-msgstr "එල් à·ƒà·à¶½à·Šà·€à¶¯à·à¶»à¶º"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "සිරියà·à¶±à·” අරà·à¶¶à·’ ජනරජය"
-
-#. 748
-msgid "Swaziland"
-msgstr "ස්වà·à·ƒà·’ලන්තය"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "ටර්ක්ස් සහ කයිකොස් දූපත්"
-
-#. 148
-msgid "Chad"
-msgstr "චà·à¶©à·Š"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "ප්â€à¶»à¶‚෠දකුණු බලප්â€à¶»à¶¯à·šà·à¶º"
-
-#. 768
-msgid "Togo"
-msgstr "ටà·à¶œà·à·€"
-
-#. 764
-msgid "Thailand"
-msgstr "තà·à¶ºà·’ලන්තය"
-
-#. 762
-msgid "Tajikistan"
-msgstr "ටජිකිස්තà·à¶±à¶º"
-
-#. 772
-msgid "Tokelau"
-msgstr "ටොකෙලà·à·€"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "ටිමà·à¶»à·Š-ලෙස්ටේ"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "ටර්ක්මනිස්ථà·à¶±à·Š"
-
-#. 788
-msgid "Tunisia"
-msgstr "ටියුනීසියà·à·€"
-
-#. 776
-msgid "Tonga"
-msgstr "ටොන්ගà·"
-
-#. 792
-msgid "Turkey"
-msgstr "තුර්කිය"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "ට්â€à¶»à·’නිඩෑඩ් සහ ටොබේගà·"
-
-#. 798
-msgid "Tuvalu"
-msgstr "ටුවà·à¶½à·”"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "තà·à¶ºà·’à·€à·à¶±à¶º, චීන පළà·à¶­"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "ටà·à¶±à·Šà·ƒà·à¶±à·’ය෠එක්සත් ජනරජය"
-
-#. 804
-msgid "Ukraine"
-msgstr "යුක්රේනය"
-
-#. 800
-msgid "Uganda"
-msgstr "උගන්ඩà·à·€"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "එක්සත් ජනපදයේ දුරින් පිහිටි කුඩ෠දූපත්"
-
-#. 840
-msgid "United States"
-msgstr "එක්සත් ජනපදය"
-
-#. 858
-msgid "Uruguay"
-msgstr "උරුගුවේ"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "උස්බකිස්තà·à¶±à¶º"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "à·à·”ද්ධ වූ බà·à¶½à·“ම ( වතිකà·à¶±à·” නගර ජනපදය )"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "à·ƒà·à¶±à·Šà¶­ වින්සන්ට් සහ ද ග්â€à¶»à·’නà·à¶©à·’න්ස්"
-
-#. 862
-msgid "Venezuela"
-msgstr "වෙනිසියුලà·à·€"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "වර්ජින් දූපත්, බ්â€à¶»à·’තà·à¶±à·Šâ€à¶ºà¶º"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "වර්ජින් දූපත්, එ.ජ."
-
-#. 704
-msgid "Viet Nam"
-msgstr "වියට්නà·à¶¸à¶º"
-
-#. 548
-msgid "Vanuatu"
-msgstr "à·€à·à¶±à·à¶§à·”"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "à·€à·à¶½à·’ස් සහ ෆුටුනà·"
-
-#. 882
-msgid "Samoa"
-msgstr "à·ƒà·à¶¸à·à·€à·"
-
-#. 887
-msgid "Yemen"
-msgstr "යේමනය"
-
-#. 175
-msgid "Mayotte"
-msgstr "මයà·"
-
-#. 710
-msgid "South Africa"
-msgstr "දකුණු අප්â€à¶»à·’කà·à·€"
-
-#. 894
-msgid "Zambia"
-msgstr "à·ƒà·à¶¸à·Šà¶¶à·’යà·à·€"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "සිම්බà·à¶¶à·Šà·€à·š"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "*නොදන්නà·, යි_යේ ලේබල එම නගර වලට ඈඳන්න"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "සිතියමේ පොයින්ට්"
-
-msgid "Car"
-msgstr "මà·à¶§à¶»à·Š රථය"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "රට"
-
-msgid "Postal"
-msgstr "තà·à¶´à·à¶½à·Š"
-
-msgid "Town"
-msgstr "සුළු නගරය"
-
-msgid "District"
-msgstr "දිස්ත්â€à¶»à·’ක්කය"
-
-msgid "Street"
-msgstr "වීදිය"
-
-msgid "Number"
-msgstr "අංකය"
-
-msgid "Enter Destination"
-msgstr "ගමනà·à¶±à·Šà¶­à¶º ඇතුල් කරන්න"
-
-msgid "Zip Code"
-msgstr "තà·à¶´à·à¶½à·Š අංකය"
-
-msgid "City"
-msgstr "නගරය"
-
-msgid "District/Township"
-msgstr "දිස්ත්â€à¶»à·’ක්කය/සුළු නගරභà·à·€à¶º"
-
-msgid "Map"
-msgstr "සිතියම"
-
-msgid "Bookmark"
-msgstr "පිටුසන"
-
-msgid "Destination"
-msgstr "ගමනà·à¶±à·Šà¶­à¶º"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr "විà·à·à¶½à¶± මට්ටම අඩුකරන්න"
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr "විà·à·à¶½à¶± මට්ටම à·€à·à¶©à·’කරන්න"
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr "නà·à·€à¶­ සිතියම අඳින්න"
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "ලිපින සෙවුම් සංවà·à¶¯à¶º විවෘත කරයි"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr "පිරික්සුම"
-
-msgid "_Quit"
-msgstr "_ඉවත් වෙන්න"
-
-msgid "Quit the application"
-msgstr "යෙදුමෙන් ඉවත් වෙන්න"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "සිතියම් දිà·à·à¶±à¶­à·’ය උතුරට à·„à· à·€à·à·„නයට විචලනය කරයි"
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr "පෙන්වන්න/සඟවන්න රවුට් විස්තරය"
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "සක්â€à¶»à·“ය/ අක්â€à¶»à·“ය කරන්න ස්වයංක්â€à¶»à·“ය විà·à·à¶½à¶± මට්ටම් වෙනස"
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr "දත්ත"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "උ"
-
-msgid "NE"
-msgstr "උ නà·"
-
-msgid "E"
-msgstr "නà·"
-
-msgid "SE"
-msgstr "ද නà·"
-
-msgid "S"
-msgstr "ද"
-
-msgid "SW"
-msgstr "ද බ"
-
-msgid "W"
-msgstr "බ"
-
-msgid "NW"
-msgstr "උ බ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "නà·à¶­"
-
-msgid "2D"
-msgstr "ද්විමà·à¶±"
-
-msgid "3D"
-msgstr "ත්â€à¶»à·’මà·à¶±"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "රවුට් කරන්න %4.0f කි.මී. %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "රවුට් කරන්න 0000 කි.මී. 0+00:00 ETA"
-
-msgid "Help"
-msgstr "සහà·à¶º"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "බ්â€à¶»à·€à·”සරයේ දක්වන්න"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "වීදි"
-
-msgid "House numbers"
-msgstr "ගෘහ අංක"
-
-msgid "View Attributes"
-msgstr "උප ලක්ෂණ දක්වන්න"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "POIs"
-
-msgid "View on map"
-msgstr "සිතියමේ දක්වන්න"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "පිටුසන කපන්න"
-
-msgid "Copy Bookmark"
-msgstr "පිටුසන පිටපත් කරන්න"
-
-msgid "Rename Bookmark"
-msgstr "පිටුසන ප්â€à¶»à¶­à·’නà·à¶¸ කරන්න"
-
-msgid "Paste Bookmark"
-msgstr "පිටුසන අලවන්න"
-
-msgid "Delete Bookmark"
-msgstr "පිටුසන මකන්න"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "පිටුසන්"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "පිටුසන් à·†à·à¶½à·Šà¶©à¶»à¶º ඈඳන්න"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "පිටුසන අලවන්න"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "පිටුසන් කරන්න %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "චන්ද්â€à¶»à·’ක෠තත්වය පෙන්වන්න"
-
-msgid " Elevation "
-msgstr " උන්නතිය "
-
-msgid " Azimuth "
-msgstr " දිගංà·à¶º "
-
-msgid "Show NMEA Data"
-msgstr "NMEA දත්ත පෙන්වන්න"
-
-msgid "car"
-msgstr "මà·à¶§à¶»à·Š රථය"
-
-msgid "bike"
-msgstr "යතුරු පà·à¶¯à·’ය"
-
-msgid "pedestrian"
-msgstr "පදික"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "දà·à¶±à·Š පවත්න෠පà·à¶­à·’කඩ: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "පà·à¶­à·’කඩ වෙනස් කරන්න : %s"
-
-msgid "Set as active"
-msgstr "ක්â€à¶»à·’යà·à¶šà·à¶»à·“ ලෙස සිටුවන්න"
-
-msgid "Show Satellite status"
-msgstr "චන්ද්â€à¶»à·’ක෠තත්වය පෙන්වන්න"
-
-msgid "Show NMEA data"
-msgstr "NMEA දත්ත පෙන්වන්න"
-
-msgid "Add Bookmark"
-msgstr "පිටුසනක් ඈඳන්න"
-
-msgid "Rename"
-msgstr "නම වෙනස් කරන්න"
-
-msgid "About Navit"
-msgstr "Navit පිළිබඳව"
-
-#. Authors
-msgid "By"
-msgstr "කර්තෘ:"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Navit කණ්ඩà·à¶ºà¶¸à·š සියලුම දෙනà·"
-
-msgid "members and contributors."
-msgstr "à·ƒà·à¶¸à·à¶¢à·’කයන් සහ දà·à¶ºà¶šà¶ºà¶±à·Š"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "à·€à·à·„නය"
-
-msgid "Rules"
-msgstr "නීති"
-
-msgid "Lock on road"
-msgstr "මà·à¶»à·Šà¶œà¶º අගුළුලන්න"
-
-msgid "Northing"
-msgstr "උතුරු දිà·à·à¶œà¶­"
-
-msgid "Map follows Vehicle"
-msgstr "සිතියම à·€à·à·„නය අනුගමනය කරයි"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "සිතියම්"
-
-msgid "Layout"
-msgstr "පිරිසà·à¶½à·ƒà·”ම"
-
-msgid "Height Profile"
-msgstr "උසේ පà·à¶­à·’පෙනුම"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "රවුට් විස්තරය"
-
-msgid "Show Locale"
-msgstr "පෙදෙසිය පෙන්වන්න"
-
-msgid "Former Destinations"
-msgstr "පූර්ව ගමනà·à¶±à·Šà¶­"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "පණිවිඩය"
-
-msgid "Back"
-msgstr "ආපසු"
-
-msgid "Back to map"
-msgstr "ආපසු සිතියමට"
-
-msgid "Main Menu"
-msgstr "ප්â€à¶»à¶°à·à¶± මෙනුව"
-
-msgid "House number"
-msgstr "ගෘහ අංකය"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "à·€à·à·„නයේ පිහිටීම"
-
-msgid "Main menu"
-msgstr "ප්â€à¶»à¶°à·à¶± මෙනුව"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"පෙන්වන්න\n"
-"මෙනුව"
-
-msgid "Settings"
-msgstr "සිටුවීම්"
-
-msgid "Tools"
-msgstr "මෙවලම්"
-
-msgid "Route"
-msgstr "රවුට්"
-
-msgid "About"
-msgstr "පිළිබඳව"
-
-msgid "Quit"
-msgstr "ඉවත්වන්න"
-
-msgid "Actions"
-msgstr "ක්â€à¶»à·’යà·"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"සංචà·à¶½à¶±à¶º\n"
-"නවත්වන්න"
-
-msgid "Display"
-msgstr "සංදර්à·à¶šà¶º"
-
-msgid "Fullscreen"
-msgstr "මුළු තිරය"
-
-msgid "Window Mode"
-msgstr "කවුළු ප්â€à¶»à¶šà·à¶»à¶º"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "විස්තරය"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "අà·à·Šà·€"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "එවිට %1$s %2$s හිදී වටරවුමෙන් ඉවත්වන්න."
diff --git a/po/sk.po.in b/po/sk.po.in
deleted file mode 100644
index b11a80e2e..000000000
--- a/po/sk.po.in
+++ /dev/null
@@ -1,2779 +0,0 @@
-# Slovak translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Eduard DRUSA https://launchpad.net/~ventyl86
-# František Horínek https://launchpad.net/~frantisekhorinek
-# GizmoSK https://launchpad.net/~gizmosk
-# KaZeR https://launchpad.net/~kazer
-# Miroslav ÄŽurian https://launchpad.net/~aasami
-# helix84 https://launchpad.net/~helix84
-# kayle.sk https://launchpad.net/~kayle.sk
-# laznik https://launchpad.net/~orders-strings
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:00+0000\n"
-"Last-Translator: GizmoSK <gizmosk@gmail.com>\n"
-"Language-Team: SlovenÄina\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
-"Language: sk\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Beží zo zdrojového adresára\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "nastavuje sa „%s“ na „%s“\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nultý"
-
-msgid "first"
-msgstr "prvý"
-
-msgid "second"
-msgstr "druhý"
-
-msgid "third"
-msgstr "tretí"
-
-msgid "fourth"
-msgstr "štvrtý"
-
-msgid "fifth"
-msgstr "piaty"
-
-msgid "sixth"
-msgstr "Å¡iesty"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "nultý výjazd"
-
-msgid "first exit"
-msgstr "prvý výjazd"
-
-msgid "second exit"
-msgstr "druhý výjazd"
-
-msgid "third exit"
-msgstr "tretí výjazd"
-
-msgid "fourth exit"
-msgstr "štvrtý výjazd"
-
-msgid "fifth exit"
-msgstr "piaty výjazd"
-
-msgid "sixth exit"
-msgstr "šiesty výjazd"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d stôp"
-
-#, c-format
-msgid "in %d feet"
-msgstr "o %d stôp"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d míľ"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "o %d.%d míľ"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "%d míľa"
-msgstr[1] "%d míle"
-msgstr[2] "%d míľ"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "o %d míľu"
-msgstr[1] "o %d míle"
-msgstr[2] "o %d míľ"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metrov"
-
-#, c-format
-msgid "in %d meters"
-msgstr "o %d metrov"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometrov"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "o %d.%d kilometrov"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d kilometrov"
-msgstr[1] "jeden kilometer"
-msgstr[2] "%d kilometre"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "o %d kilometrov"
-msgstr[1] "o jeden kilometer"
-msgstr[2] "o %d kilometre"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "na privádzaÄ"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sdo %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sdo %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sdo %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sdo %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s na %s"
-
-msgid "When possible, please turn around"
-msgstr "Ak to bude možné, prosím, otoÄte sa"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "PokraÄujte naÄalej po ceste %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Vstúpte do kruhového objazdu onedlho"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Opustite kruhový objazd na %1$s %2$s"
-
-msgid "soon"
-msgstr "onedlho"
-
-msgid "now"
-msgstr "teraz"
-
-msgid "then"
-msgstr "potom"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "vpravo"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "vľavo"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "mierne "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "prudko "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "ChoÄte %1$s cestou na %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "po %i cestách"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "OdboÄte %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "potom otoÄte sa"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "OtoÄte sa %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "potom otoÄte sa"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "OtoÄte sa %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "potom dosiahnete svoj cieľ cesty"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Dorazili ste do svojho cieľa %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Križovatka"
-
-msgid "Exit"
-msgstr "Výjazd"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Pozícia"
-
-msgid "Command"
-msgstr "Príkaz"
-
-msgid "Length"
-msgstr "Dĺžka"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "ÄŒas"
-
-msgid "Destination Length"
-msgstr "Cieľová vzdialenosť"
-
-msgid "Destination Time"
-msgstr "Čas k cieľu"
-
-msgid "Roadbook"
-msgstr "Plán trasy"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Bod trasy %d"
-
-msgid "Visit before..."
-msgstr "Predtým navštíviť..."
-
-msgid "Set as position"
-msgstr "Nastaviť ako pozíciu"
-
-msgid "Set as destination"
-msgstr "Nastaviť ako cieľ"
-
-msgid "Add as bookmark"
-msgstr "Pridať ako záložku"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Bod 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Súradnice obrazovky: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Spojené arabské emiráty"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua a Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albánsko"
-
-#. 051
-msgid "Armenia"
-msgstr "Arménsko"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Holandské Antily"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktída"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentína"
-
-#. 016
-msgid "American Samoa"
-msgstr "Americká Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Rakúsko"
-
-#. 036
-msgid "Australia"
-msgstr "Austrália"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Alandy"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbajdžan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna a Hercegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladéž"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgicko"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulharsko"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrajn"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Svátý Bartolomej"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudy"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunejský Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolívia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Sint Eustatius and Saba"
-
-#. 076
-msgid "Brazil"
-msgstr "Brazília"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamy"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bután"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvetov ostrov"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Bielorusko"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosové (Keeling) ostrovy"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Konžská demokratická republika"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Stredoafrická republika"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Å vajÄiarsko"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Pobrežie slonoviny"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cookove ostrovy"
-
-#. 152
-msgid "Chile"
-msgstr "ÄŒile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Čína"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kostarika"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cape Verde"
-
-#. 531
-msgid "Curacao"
-msgstr "Curacao"
-
-#. 162
-msgid "Christmas Island"
-msgstr "VianoÄné ostrovy"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cyprus"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Česká republika"
-
-#. 276
-msgid "Germany"
-msgstr "Nemecko"
-
-#. 262
-msgid "Djibouti"
-msgstr "Džibutsko"
-
-#. 208
-msgid "Denmark"
-msgstr "Dánsko"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikánska republika"
-
-#. 012
-msgid "Algeria"
-msgstr "Alžírsko"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvádor"
-
-#. 233
-msgid "Estonia"
-msgstr "Estónsko"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypt"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Západná Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Å panielsko"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiópia"
-
-#. 246
-msgid "Finland"
-msgstr "Fínsko"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidži"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkandské ostrovy (Malvíny)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronézske federatívne štáty"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Faerské ostrovy"
-
-#. 250
-msgid "France"
-msgstr "Francúzsko"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Spojené kráľovstvo"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Gruzínsko"
-
-#. 254
-msgid "French Guiana"
-msgstr "Francúzska Guiana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltár"
-
-#. 304
-msgid "Greenland"
-msgstr "Grónsko"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Rovníková Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Grécko"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Južná Georgia a Južné Sandwitchové ostrovy"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heardov a McDonaldove ostrovy"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Chorvátsko"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "MaÄarsko"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonézia"
-
-#. 372
-msgid "Ireland"
-msgstr "Ãrsko"
-
-#. 376
-msgid "Israel"
-msgstr "Izrael"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Ostrov Man"
-
-#. 356
-msgid "India"
-msgstr "India"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Britské teritórium Indického oceánu"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iránska islamská republika"
-
-#. 352
-msgid "Iceland"
-msgstr "Island"
-
-#. 380
-msgid "Italy"
-msgstr "Taliansko"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamajka"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordánsko"
-
-#. 392
-msgid "Japan"
-msgstr "Japonsko"
-
-#. 404
-msgid "Kenya"
-msgstr "Keňa"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgistán"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komory"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Svätý Krištof a Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Kórejská ľudovodemokratická republika"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Kórejská republika"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuvajt"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kajmanské ostrovy"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazachstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Laoská ľudovodemokratická republika"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Svätá Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Lichtenštajnsko"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Srí Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Libéria"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litva"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxembursko"
-
-#. 428
-msgid "Latvia"
-msgstr "Lotyšsko"
-
-#. 434
-msgid "Libya"
-msgstr "Líbya"
-
-#. 504
-msgid "Morocco"
-msgstr "Maroko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavská republika"
-
-#. 499
-msgid "Montenegro"
-msgstr "ÄŒierna hora"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Svátý martin (Francúzska ÄasÅ¥)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Maršalové ostrovy"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedónsko"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Mjanmarsko"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolsko"
-
-#. 446
-msgid "Macao"
-msgstr "Makao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Severné Mariány"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinik"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauretánia"
-
-#. 500
-msgid "Montserrat"
-msgstr "Monserat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauricius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maledivy"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malajzia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namíbia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nová Kaledónia"
-
-#. 562
-msgid "Niger"
-msgstr "Nigér"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Ostrov Norfolk"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigéria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Holandsko"
-
-#. 578
-msgid "Norway"
-msgstr "Nórsko"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepál"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nový Zéland"
-
-#. 512
-msgid "Oman"
-msgstr "Omán"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Francúzska Polynézia"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nová Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipíny"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistán"
-
-#. 616
-msgid "Poland"
-msgstr "Poľsko"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Svätý Piere a Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Portoriko"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestínske územie, okupované"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugalsko"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguaj"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Réunion"
-
-#. 642
-msgid "Romania"
-msgstr "Rumunsko"
-
-#. 688
-msgid "Serbia"
-msgstr "Srbsko"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Ruská federácia"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudská Arábia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Šalamúnove Ostrovy"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelské ostrovy"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudán"
-
-#. 752
-msgid "Sweden"
-msgstr "Švédsko"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapúr"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Svätá Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovinsko"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Å picbergy a Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovenská republika"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Maríno"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somálsko"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr "Južný Sudán"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Svatý Tomáš"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salvádor"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sint Maarten (holandská ÄasÅ¥)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Sýrska arabská republika"
-
-#. 748
-msgid "Swaziland"
-msgstr "Svazijsko"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turkské a kaikoské ostrovy"
-
-#. 148
-msgid "Chad"
-msgstr "ÄŒad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Francúzske južné a antarktické územia"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thajsko"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadžikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkménsko"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisko"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turecko"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad a Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, provincia Číny"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzánijská zjednotená republika"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukrajina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Spojené štáty drobných odľahlých ostrovov"
-
-#. 840
-msgid "United States"
-msgstr "Spojené štáty americké"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguaj"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Svätá stolica (Vatikánsky mestský štát)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Svätý Vincent a Grenadíny"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Panenské ostrovy, Britské"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Panenské ostrovy, Americké"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis a Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Juhoafrická republika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Neznáme, pridajte is_in tag v týchto mestách."
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-"NenaÅ¡iel sa žiaden z konfiguraÄných súborov navit.xml, navit.xml.local\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "Chyba parsovania konfiguraÄného súboru '%s': %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "Používa sa konfiguraÄný súbor '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Vnútorná inicializácia zlyhala, ukonÄujem. Skontrolujte predchádzajúce "
-"chybové hlásenia.\n"
-
-msgid "unknown street"
-msgstr "neznáma ulica"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Nepomenované vozidlo"
-
-msgid "Failed to write bookmarks file"
-msgstr "Zápis zlyhal"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Bod na mape"
-
-msgid "Car"
-msgstr "Vozidlo"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Krajina"
-
-msgid "Postal"
-msgstr "PSČ"
-
-msgid "Town"
-msgstr "Mesto"
-
-msgid "District"
-msgstr "Kraj"
-
-msgid "Street"
-msgstr "Ulica"
-
-msgid "Number"
-msgstr "Číslo"
-
-msgid "Enter Destination"
-msgstr "UveÄte cieľ"
-
-msgid "Zip Code"
-msgstr "PSČ"
-
-msgid "City"
-msgstr "Mesto"
-
-msgid "District/Township"
-msgstr "Kraj/Okres"
-
-msgid "Map"
-msgstr "Mapa"
-
-msgid "Bookmark"
-msgstr "Záložka"
-
-msgid "Destination"
-msgstr "Cieľ"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Displej"
-
-msgid "_Route"
-msgstr "Trasa"
-
-msgid "_Former Destinations"
-msgstr "Predošlé cieľe"
-
-msgid "_Bookmarks"
-msgstr "Záložky"
-
-msgid "_Map"
-msgstr "Mapa"
-
-msgid "_Layout"
-msgstr "ZnaÄenie"
-
-msgid "_Projection"
-msgstr "Projekcia"
-
-msgid "_Vehicle"
-msgstr "Vozidlo"
-
-msgid "Zoom_Out"
-msgstr "Oddialiť"
-
-msgid "Decrease zoom level"
-msgstr "Oddialiť"
-
-msgid "Zoom_In"
-msgstr "Priblížiť"
-
-msgid "Increase zoom level"
-msgstr "Priblížiť"
-
-msgid "_Recalculate"
-msgstr "PrepoÄítaÅ¥"
-
-msgid "Redraw map"
-msgstr "Prekresliť mapu"
-
-msgid "_Info"
-msgstr "Informácie"
-
-msgid "Set _destination"
-msgstr "Nastaviť _destination"
-
-msgid "Opens address search dialog"
-msgstr "Otvorí dialóg hľadania adresy"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Zastaviť navigáciu"
-
-msgid "Test"
-msgstr "Otestovať"
-
-msgid "_Quit"
-msgstr "_Koniec"
-
-msgid "Quit the application"
-msgstr "UkonÄiÅ¥ aplikáciu"
-
-msgid "Show position _cursor"
-msgstr "Zobraziť pozíciu _cursor"
-
-msgid "_Lock on Road"
-msgstr "Uzamknúť na cesty"
-
-msgid "_Keep orientation to the North"
-msgstr "_Keep orientáciu na sever"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Prepína medzi severom na vrchu a smerom jazdy na vrchu"
-
-msgid "_Roadbook"
-msgstr "Plán trasy"
-
-msgid "Show/hide route description"
-msgstr "Zobraziť / skryť popis trasy"
-
-msgid "_Autozoom"
-msgstr "Automatické zväÄÅ¡enie"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Povoliť / zakázať automatickú zmenu priblíženia"
-
-msgid "_Fullscreen"
-msgstr "Celá obrazovka"
-
-msgid "Data"
-msgstr "Dáta"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "S"
-
-msgid "NE"
-msgstr "SV"
-
-msgid "E"
-msgstr "V"
-
-msgid "SE"
-msgstr "JV"
-
-msgid "S"
-msgstr "J"
-
-msgid "SW"
-msgstr "JZ"
-
-msgid "W"
-msgstr "Z"
-
-msgid "NW"
-msgstr "SZ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nie"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Cesta %4.0fkm Äas %02d:%02d"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Cesta 0000km Äas 0+00:00"
-
-msgid "Help"
-msgstr "Pomoc"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Bod trasy %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Zvoľte bod trasy pred ktorý sa vloží nový"
-
-msgid "View in Browser"
-msgstr "ZobraziÅ¥ v prehliadaÄi"
-
-msgid "Item type"
-msgstr "Typ položky"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Ulice"
-
-msgid "House numbers"
-msgstr "Čísla domov"
-
-msgid "View Attributes"
-msgstr "Zobraziť atribúty"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "Nastaviť ako pozíciu (a deaktivovať vozidlo)"
-
-msgid "POIs"
-msgstr "POI"
-
-msgid "View on map"
-msgstr "Zobraziť na mape"
-
-msgid "Remove search results from the map"
-msgstr "Odstrániť výsledky vyhľadávania z mapy"
-
-msgid "Show results on the map"
-msgstr "Zobraziť výsledky vyhľadávania na mape"
-
-msgid "Cut Bookmark"
-msgstr "Vystrihnúť záložku"
-
-msgid "Copy Bookmark"
-msgstr "Kopírovať záložku"
-
-msgid "Rename Bookmark"
-msgstr "Premenovať záložku"
-
-msgid "Paste Bookmark"
-msgstr "Vložiť záložku"
-
-msgid "Delete Bookmark"
-msgstr "Odstrániť záložku"
-
-msgid "Delete waypoint"
-msgstr "Zmazať bod trasy"
-
-msgid "Bookmarks"
-msgstr "Záložky"
-
-msgid "Bookmarks as waypoints"
-msgstr "Záložky ako body trasy"
-
-msgid "Save waypoints"
-msgstr "Uložiť body trasy"
-
-msgid "Replace with waypoints"
-msgstr "Nahradiť bodmi trasy"
-
-msgid "Delete Folder"
-msgstr "Odstrániť zdresár"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "PridaÅ¥ prieÄinok pre záložky"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Vložiť záložku"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Záložka %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "SÅ¥ahujem %s"
-
-msgid "Map Download"
-msgstr "Stiahnutie máp"
-
-msgid "Active"
-msgstr "Aktívny"
-
-msgid "Download Enabled"
-msgstr "Sťahovanie povolené"
-
-msgid "Download completely"
-msgstr "SÅ¥ahovanie dokonÄené"
-
-msgid "Show Satellite Status"
-msgstr "Zobraziť stav satelitov"
-
-msgid " Elevation "
-msgstr " Prevýšenie "
-
-msgid " Azimuth "
-msgstr " Azimut "
-
-msgid "Show NMEA Data"
-msgstr "Zobraziť NMEA data"
-
-msgid "car"
-msgstr "auto"
-
-msgid "bike"
-msgstr "bicykel"
-
-msgid "pedestrian"
-msgstr "chodec"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Aktuálny profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Zmeniť profil na: %s"
-
-msgid "Set as active"
-msgstr "Nastaviť ako aktívny"
-
-msgid "Show Satellite status"
-msgstr "Zobraziť stav satelitov"
-
-msgid "Show NMEA data"
-msgstr "Zobraziť NMEA data"
-
-msgid "Add Bookmark"
-msgstr "Pridať záložku"
-
-msgid "Rename"
-msgstr "Premenovať"
-
-msgid "About Navit"
-msgstr "O Navite"
-
-#. Authors
-msgid "By"
-msgstr "Od"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "A vÅ¡etci Älenovia týmu Navitu"
-
-msgid "members and contributors."
-msgstr "Älenovia a prispievatelia"
-
-msgid "Waypoints"
-msgstr "Body trasy"
-
-msgid "Enter Coordinates"
-msgstr "Vložte súradnice"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr "Vložte súradnice, napríklad:"
-
-msgid "Vehicle"
-msgstr "Vozidlo"
-
-msgid "Rules"
-msgstr "Pravidlá"
-
-msgid "Lock on road"
-msgstr "Prichytiť k ceste"
-
-msgid "Northing"
-msgstr "Sever vždy hore"
-
-msgid "Map follows Vehicle"
-msgstr "Mapa sleduje vozidlo"
-
-msgid "Plan with Waypoints"
-msgstr "Plánovať s bodmi trasy"
-
-msgid "Maps"
-msgstr "Mapy"
-
-msgid "Layout"
-msgstr "ZnaÄenie"
-
-msgid "Height Profile"
-msgstr "Výškovy Profil"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Popis trasy"
-
-msgid "Show Locale"
-msgstr "Zobraziť jazyk"
-
-msgid "Former Destinations"
-msgstr "Predošlé cieľe"
-
-msgid "- No former destinations available -"
-msgstr "- Nie sú k dispozícii žiadne predchádzajúce destinácie -"
-
-msgid "Message"
-msgstr "Správa"
-
-msgid "Back"
-msgstr "Späť"
-
-msgid "Back to map"
-msgstr "Späť na mapu"
-
-msgid "Main Menu"
-msgstr "Hlavné menu"
-
-msgid "House number"
-msgstr "Číslo domu"
-
-msgid "Next"
-msgstr "ÄŽalej"
-
-msgid "Prev"
-msgstr "späť"
-
-msgid "Return to route!"
-msgstr "Návrat k trase!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Pozor! Radar!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Znížte rýchlosť proím"
-
-msgid "partial match"
-msgstr "ÄiastoÄná zhoda"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Hľadať"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Mestá"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Mapové dáta (c) OpenStreetMap contributors, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "Stiahnuté mapy"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Trasovať tu"
-
-msgid "Cancel"
-msgstr "Zrušiť"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "Celá zemeguľa"
-
-msgid "Africa"
-msgstr "Afrika"
-
-msgid "Canary Islands"
-msgstr "Kanárske ostrovy"
-
-msgid "Asia"
-msgstr "Ãzia"
-
-msgid "Korea"
-msgstr "Kórea"
-
-msgid "Taiwan"
-msgstr "Taiwan"
-
-msgid "UAE+Other"
-msgstr "UAE+Iné"
-
-msgid "Oceania"
-msgstr "Oceánia"
-
-msgid "Tasmania"
-msgstr "Tazmánia"
-
-msgid "Victoria"
-msgstr "Viktória"
-
-msgid "New South Wales"
-msgstr "Nový Južný Wales"
-
-msgid "Europe"
-msgstr "Európa"
-
-msgid "Western Europe"
-msgstr "Západná Európa"
-
-msgid "Azores"
-msgstr "Azory"
-
-msgid "BeNeLux"
-msgstr "Benelux"
-
-msgid "Alsace"
-msgstr "Alsasko"
-
-msgid "Aquitaine"
-msgstr "Akvitánsko"
-
-msgid "Auvergne"
-msgstr "Auvergne"
-
-msgid "Basse-Normandie"
-msgstr "Basse-Normandia"
-
-msgid "Bourgogne"
-msgstr "Burgundsko"
-
-msgid "Bretagne"
-msgstr "Bretónsko"
-
-msgid "Centre"
-msgstr "Vycentrovať"
-
-msgid "Champagne-Ardenne"
-msgstr "Champagne-Ardenne"
-
-msgid "Corse"
-msgstr "Corse"
-
-msgid "Franche-Comte"
-msgstr "Franche-Comte"
-
-msgid "Haute-Normandie"
-msgstr "Haute-Normandia"
-
-msgid "Ile-de-France"
-msgstr "Ile-de-France"
-
-msgid "Languedoc-Roussillon"
-msgstr "Languedoc-Roussillon"
-
-msgid "Limousin"
-msgstr "Limousin"
-
-msgid "Lorraine"
-msgstr "Lotrinsko"
-
-msgid "Midi-Pyrenees"
-msgstr "Midi-Pyrenees"
-
-msgid "Nord-pas-de-Calais"
-msgstr "Nord-pas-de-Calais"
-
-msgid "Pays-de-la-Loire"
-msgstr "Pays-de-la-Loire"
-
-msgid "Picardie"
-msgstr "Pikardia"
-
-msgid "Poitou-Charentes"
-msgstr "Poitou-Charentes"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "Provence-Alpes-Cote-d-Azur"
-
-msgid "Rhone-Alpes"
-msgstr "Rhone-Alpes"
-
-msgid "Baden-Wuerttemberg"
-msgstr "Bádensko-Württembersko"
-
-msgid "Bayern"
-msgstr "Bavorsko"
-
-msgid "Mittelfranken"
-msgstr "Mittelfranken"
-
-msgid "Niederbayern"
-msgstr "Niederbayern"
-
-msgid "Oberbayern"
-msgstr "Oberbayern"
-
-msgid "Oberfranken"
-msgstr "Oberfranken"
-
-msgid "Oberpfalz"
-msgstr "Oberpfalz"
-
-msgid "Schwaben"
-msgstr "Schwaben"
-
-msgid "Unterfranken"
-msgstr "Unterfranken"
-
-msgid "Berlin"
-msgstr "Berlín"
-
-msgid "Brandenburg"
-msgstr "Brandenbursko"
-
-msgid "Bremen"
-msgstr "Brémy"
-
-msgid "Hamburg"
-msgstr "Hamburg"
-
-msgid "Hessen"
-msgstr "Hesensko"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "Mecklenburg-Vorpommern"
-
-msgid "Niedersachsen"
-msgstr "Dolné Sasko"
-
-msgid "Nordrhein-westfalen"
-msgstr "Nordrhein-westfalen"
-
-msgid "Rheinland-Pfalz"
-msgstr "Porýnie-Falcko"
-
-msgid "Saarland"
-msgstr "Sársko"
-
-msgid "Sachsen-Anhalt"
-msgstr "Sasko-Anhaltsko"
-
-msgid "Sachsen"
-msgstr "Sasko"
-
-msgid "Schleswig-Holstein"
-msgstr "Šlezvicko-Holštajnsko"
-
-msgid "Thueringen"
-msgstr "Durínsko"
-
-msgid "Mallorca"
-msgstr "Malorka"
-
-msgid "Galicia"
-msgstr "Galícia"
-
-msgid "Scandinavia"
-msgstr "Škandinávia"
-
-msgid "England"
-msgstr "Anglicko"
-
-msgid "Buckinghamshire"
-msgstr "Buckinghamshire"
-
-msgid "Cambridgeshire"
-msgstr "Cambridgeshire"
-
-msgid "Cumbria"
-msgstr "Cumbria"
-
-msgid "East yorkshire with hull"
-msgstr "East yorkshire with hull"
-
-msgid "Essex"
-msgstr "Essex"
-
-msgid "Herefordshire"
-msgstr "Herefordshire"
-
-msgid "Kent"
-msgstr "Kent"
-
-msgid "Lancashire"
-msgstr "Lancashire"
-
-msgid "Leicestershire"
-msgstr "Leicestershire"
-
-msgid "Norfolk"
-msgstr "Norfolk"
-
-msgid "Nottinghamshire"
-msgstr "Nottinghamshire"
-
-msgid "Oxfordshire"
-msgstr "Oxfordshire"
-
-msgid "Shropshire"
-msgstr "Shropshire"
-
-msgid "Somerset"
-msgstr "Somerset"
-
-msgid "South yorkshire"
-msgstr "Južný yorkshire"
-
-msgid "Suffolk"
-msgstr "Suffolk"
-
-msgid "Surrey"
-msgstr "Surrey"
-
-msgid "Wiltshire"
-msgstr "Wiltshire"
-
-msgid "Scotland"
-msgstr "Škótsko"
-
-msgid "Wales"
-msgstr "Wales"
-
-msgid "Crete"
-msgstr "Kréta"
-
-msgid "North America"
-msgstr "Severná Amerika"
-
-msgid "Alaska"
-msgstr "Alijaška"
-
-msgid "Hawaii"
-msgstr "Havaj"
-
-msgid "USA"
-msgstr "USA"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (okrem Alijašky a Havaja)"
-
-msgid "Midwest"
-msgstr "Stredný západ"
-
-msgid "Michigan"
-msgstr "Michigan"
-
-msgid "Ohio"
-msgstr "Ohio"
-
-msgid "Northeast"
-msgstr "Severovýchod"
-
-msgid "Massachusetts"
-msgstr "Massachusetts"
-
-msgid "Vermont"
-msgstr "Vermont"
-
-msgid "Pacific"
-msgstr "Pacifik"
-
-msgid "South"
-msgstr "Juh"
-
-msgid "Arkansas"
-msgstr "Arkansas"
-
-msgid "District of Columbia"
-msgstr "Oblasť Columbia"
-
-msgid "Florida"
-msgstr "Florida"
-
-msgid "Louisiana"
-msgstr "Louisiana"
-
-msgid "Maryland"
-msgstr "Maryland"
-
-msgid "Mississippi"
-msgstr "Mississippi"
-
-msgid "Oklahoma"
-msgstr "Oklahoma"
-
-msgid "Texas"
-msgstr "Texas"
-
-msgid "Virginia"
-msgstr "Virgínia"
-
-msgid "West Virginia"
-msgstr "Západná Virgínia"
-
-msgid "West"
-msgstr "Západ"
-
-msgid "Arizona"
-msgstr "Arizona"
-
-msgid "California"
-msgstr "Kalifornia"
-
-msgid "Colorado"
-msgstr "Colorado"
-
-msgid "Idaho"
-msgstr "Idaho"
-
-msgid "Montana"
-msgstr "Montana"
-
-msgid "New Mexico"
-msgstr "Nové Mexiko"
-
-msgid "Nevada"
-msgstr "Nevada"
-
-msgid "Oregon"
-msgstr "Oregon"
-
-msgid "Utah"
-msgstr "Utah"
-
-msgid "Washington State"
-msgstr "Štát Washington"
-
-msgid "South+Middle America"
-msgstr "Južná + Stredná Amerika"
-
-msgid "Guyane Francaise"
-msgstr "Guyane Francaise"
-
-msgid "downloading"
-msgstr "SÅ¥ahuje sa"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "pripravený"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Nedostatok voľného miesta"
-
-msgid "Error downloading map!"
-msgstr "Chyba poÄas sÅ¥ahovania mapy!"
-
-msgid "Error writing map!"
-msgstr "Chyba pri zápise mapy!"
-
-msgid "Map download aborted!"
-msgstr "Sťahovanie mapy prerušené!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Zostáva"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Sťahovanie máp"
-
-msgid "Vehicle Position"
-msgstr "Pozícia vozidla"
-
-msgid "Main menu"
-msgstr "Hlavné menu"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Zobraziť\n"
-"mapu"
-
-msgid "Settings"
-msgstr "Nastavenia"
-
-msgid "Tools"
-msgstr "Nástroje"
-
-msgid "Route"
-msgstr "Trasa"
-
-msgid "About"
-msgstr "O programe"
-
-msgid "Quit"
-msgstr "Koniec"
-
-msgid "Actions"
-msgstr "Akcie"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Bývalé\n"
-"Ciele"
-
-msgid "Coordinates"
-msgstr "Súradnice"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Zastaviť\n"
-"navigáciu"
-
-msgid "Display"
-msgstr "Displej"
-
-msgid "Fullscreen"
-msgstr "Celá obrazovka"
-
-msgid "Window Mode"
-msgstr "V okne"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Popis"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Vložiť posledný\n"
-"bod trasy"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Vložiť nasledujúci\n"
-"bod trasy"
-
-msgid "Satellite Status"
-msgstr "Stav satelitov"
-
-msgid "NMEA Data"
-msgstr "Dáta NMEA"
-
-msgid "car_shortest"
-msgstr "car_shortest"
-
-msgid "car_avoid_tolls"
-msgstr "car_avoid_tolls"
-
-msgid "car_pedantic"
-msgstr "car_pedantic"
-
-msgid "horse"
-msgstr "kôň"
-
-msgid "Truck"
-msgstr "Kamión"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Ãno"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit spustený"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit beží"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Vitajte v Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Ďakujem, že ste si nainštalovali Navit!\n"
-"\n"
-"Pre zaÄatie zvoľte z hlavného menu \"StiahnuÅ¥ mapy\" pre stiahnutie máp . "
-"Poznámka: VeľkosÅ¥ mapy môže byÅ¥ väÄÅ¡ia (>50MB) - a odporúÄa sa wifi "
-"pripojenie.\n"
-"\n"
-"Mapové dáta: (c) OpenStreetMap contributors\n"
-"\n"
-"Užívajte Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Viac informácií"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Priblížiť"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Oddialiť"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Sťahovanie máp"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Prepnúť body záujmu"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "UkonÄiÅ¥ Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Záloha / Obnova"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Zmazať túto mapu?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "SÅ¥ahovanie:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Chyba sťahovania mapy"
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Sťahovanie mapy prerušené"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Bez lokácie. Po opravení lokácia otvorte znova."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Mapy obsahujúce aktuálnu polohu"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Vyhľadávanie adresy"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Vložte cieľ"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Zhoda ÄiastoÄnej adresy"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Vyhľadávam..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Adresa nenájdená"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Získavam výsledky vyhľadávania"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Nahrávam výsledky vyhľadávania"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "NiÄ nenájdené"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Nevložený žiaden text"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Nastaviť cieľ do:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Zvoľte akciu"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Vložte prosím SD kartu"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Zálohujem..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Obnovujem..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Vytvorenie záložného adresára zlyhalo"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Zálohovanie zlyhalo"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Záloha nenájdená"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Obnova zlyhala"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Obnova úspešná"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Obnova úspešná\n"
-"Reštartujte Navit prosím"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Záloha nenájdená"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Obnova zlyhala"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Zvoľte zálohu"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Záloha"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Obnova"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "potom opustite kruhový objazd na %1$s %2$s"
diff --git a/po/sl.po.in b/po/sl.po.in
deleted file mode 100644
index 703178d83..000000000
--- a/po/sl.po.in
+++ /dev/null
@@ -1,2748 +0,0 @@
-# Slovenian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Gregor Koporec https://launchpad.net/~gregork8
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Å tefan Baebler https://launchpad.net/~stefanba
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:00+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Slovenian <sl@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
-"n%100==4 ? 3 : 0);\n"
-"Language: sl\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Zagon iz mape z izvorno kodo\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "nastavljam '%s' na '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "niÄt"
-
-msgid "first"
-msgstr "prv"
-
-msgid "second"
-msgstr "drug"
-
-msgid "third"
-msgstr "tretj"
-
-msgid "fourth"
-msgstr "Äetrt"
-
-msgid "fifth"
-msgstr "pet"
-
-msgid "sixth"
-msgstr "Å¡est"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "niÄti izhod"
-
-msgid "first exit"
-msgstr "prvi izhod"
-
-msgid "second exit"
-msgstr "drugi izhod"
-
-msgid "third exit"
-msgstr "tretji izhod"
-
-msgid "fourth exit"
-msgstr "Äetrti izhod"
-
-msgid "fifth exit"
-msgstr "peti izhod"
-
-msgid "sixth exit"
-msgstr "Å¡esti izhod"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metrov"
-
-#, c-format
-msgid "in %d meters"
-msgstr "ÄŒez %d metrov"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d,%d kilometrov"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "ÄŒez %d.%d kilometov"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d kilometrov"
-msgstr[1] "%d kilometer"
-msgstr[2] "%d kilometra"
-msgstr[3] "%d kilometri"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "ÄŒez %d kilometrov"
-msgstr[1] "ÄŒez %d kilometer"
-msgstr[2] "ÄŒez %d kilometra"
-msgstr[3] "ÄŒez %d kilometre"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sna %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sna %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sna %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sna %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sna %s"
-
-msgid "When possible, please turn around"
-msgstr "Obrnite Äim bo to mogoÄe"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Ostanite na tej cesti naslednjih %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Kmalu zapeljite v krožiÅ¡Äe"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "kmalu"
-
-msgid "now"
-msgstr "sedaj"
-
-msgid "then"
-msgstr "nato"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "desno"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "levo"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "rahlo "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "ostro "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Zavijte na %2$s v %1$so cesto"
-
-#, c-format
-msgid "after %i roads"
-msgstr "Äez %i cest"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "%3$s zavijte %1$s%2$s %4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "nato obrnite Äim"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Obrnite Äim %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "nato obrnite Äim"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Obrnite Äim %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "in ste na cilju."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "%s ste na cilju"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Razcep"
-
-msgid "Exit"
-msgstr "Odcep"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Položaj"
-
-msgid "Command"
-msgstr "Navodilo"
-
-msgid "Length"
-msgstr "Razdalja"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "ÄŒas"
-
-msgid "Destination Length"
-msgstr "Razdalja do cilja"
-
-msgid "Destination Time"
-msgstr "ÄŒas do cilja"
-
-msgid "Roadbook"
-msgstr "NaÄrt poti"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Nastavi kot položaj"
-
-msgid "Set as destination"
-msgstr "Nastavi kot cilj"
-
-msgid "Add as bookmark"
-msgstr "Dodaj zaznamek"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "ToÄka 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Koordinate zaslona: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andora"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Združeni arabski emirati"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigva in Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Angvila"
-
-#. 008
-msgid "Albania"
-msgstr "Albanija"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenija"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Nizozemski Antili"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktika"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Ameriška Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Avstrija"
-
-#. 036
-msgid "Australia"
-msgstr "Avstralija"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland Islands"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbajdžan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna in Hercegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladeš"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgija"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bolgarija"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrajn"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermudi"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunej"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivija"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brazilija"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahami"
-
-#. 064
-msgid "Bhutan"
-msgstr "Butan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvetov otok"
-
-#. 072
-msgid "Botswana"
-msgstr "Bocvana"
-
-#. 112
-msgid "Belarus"
-msgstr "Belorusija"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosovi otoki"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, DemokratiÄna Republika"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Srednjeafriška Republika"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Å vica"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "SlonokoÅ¡Äena obala"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cookovi otoki"
-
-#. 152
-msgid "Chile"
-msgstr "ÄŒile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Kitajska"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolumbija"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kostarika"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Zelenortski otoki"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "BožiÄni otok"
-
-#. 196
-msgid "Cyprus"
-msgstr "Ciper"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Češka"
-
-#. 276
-msgid "Germany"
-msgstr "NemÄija"
-
-#. 262
-msgid "Djibouti"
-msgstr "Džibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danska"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominika"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikanska republika"
-
-#. 012
-msgid "Algeria"
-msgstr "Alžirija"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonija"
-
-#. 818
-msgid "Egypt"
-msgstr "Egipt"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Zahodna Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritreja"
-
-#. 724
-msgid "Spain"
-msgstr "Å panija"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopija"
-
-#. 246
-msgid "Finland"
-msgstr "Finska"
-
-#. 242
-msgid "Fiji"
-msgstr "Fidži"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandski otoki"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronezija"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Ferski otoki"
-
-#. 250
-msgid "France"
-msgstr "Francija"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Združeno kraljestvo"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Gruzija"
-
-#. 254
-msgid "French Guiana"
-msgstr "Francoska Gvajana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Gana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grenlandija"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambija"
-
-#. 324
-msgid "Guinea"
-msgstr "Gvineja"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Gvadelup"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekvatorialna Gvineja"
-
-#. 300
-msgid "Greece"
-msgstr "GrÄija"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Južna Georgia in Južni Sandwichevi otoki"
-
-#. 320
-msgid "Guatemala"
-msgstr "Gvatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Gvineja-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Gvajana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Otoki Heard in McDonald"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Hrvaška"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Madžarska"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonezija"
-
-#. 372
-msgid "Ireland"
-msgstr "Irska"
-
-#. 376
-msgid "Israel"
-msgstr "Izrael"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Otok Man"
-
-#. 356
-msgid "India"
-msgstr "Indija"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Britansko ozemlje v Indijskem oceanu"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran"
-
-#. 352
-msgid "Iceland"
-msgstr "Islandija"
-
-#. 380
-msgid "Italy"
-msgstr "Italija"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamajka"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordanija"
-
-#. 392
-msgid "Japan"
-msgstr "Japonska"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenija"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgizistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komori"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts in Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Severna Koreja"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Južna Koreja"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuvajt"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Kajmanski otoki"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazahstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "LaoÅ¡ka ljudska demokratiÄna republika"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Å rilanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberija"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litva"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luksemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvija"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Maroko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavija"
-
-#. 499
-msgid "Montenegro"
-msgstr "ÄŒrna Gora"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (Francoski del)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshallovi otoki"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedonija"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Mjanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolija"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Severni Marianski otoki"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinik"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mavretanija"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mavricij"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldivi"
-
-#. 454
-msgid "Malawi"
-msgstr "Malavi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mehika"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malezija"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibija"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nova Kaledonija"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolški otok"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigerija"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragva"
-
-#. 528
-msgid "Netherlands"
-msgstr "Nizozemska"
-
-#. 578
-msgid "Norway"
-msgstr "Norveška"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nova Zelandija"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Francoska Polinezija"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nova Gvineja"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipini"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Poljska"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre in Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Portoriko"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestinsko ozemlje, okupirano"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugalska"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paragvaj"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Romunija"
-
-#. 688
-msgid "Serbia"
-msgstr "Srbija"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Ruska federacija"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudska Arabija"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Solomonovi otoki"
-
-#. 690
-msgid "Seychelles"
-msgstr "Sejšeli"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Å vedska"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Sveta Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenija"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard in Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovaška"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalija"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome in Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Sirska arabska republika"
-
-#. 748
-msgid "Swaziland"
-msgstr "Svazi"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks in Caicoški otoki"
-
-#. 148
-msgid "Chad"
-msgstr "ÄŒad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Francoska južna ozemlja"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tajska"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadžikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Vzhodni Timor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunizija"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "TurÄija"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad in Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Tajvan, provinca Kitajske"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzanija"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukrajina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "manjši otoki Združenih držav Amerike"
-
-#. 840
-msgid "United States"
-msgstr "Združene države Amerike"
-
-#. 858
-msgid "Uruguay"
-msgstr "Urugvaj"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Sveti sedež (Vatikanska mestna država)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent in Grenadini"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Britanski Deviški otoki"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Ameriški Deviški otoki"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis in Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Južnoafriška Republika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambija"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabve"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "*Neznan dodatek v oznakah za ta mesta"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr "Avto"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Država"
-
-msgid "Postal"
-msgstr "Pošta"
-
-msgid "Town"
-msgstr "Mesto"
-
-msgid "District"
-msgstr "Regija"
-
-msgid "Street"
-msgstr "Ulica"
-
-msgid "Number"
-msgstr "Å tevilka"
-
-msgid "Enter Destination"
-msgstr "Vpišite cilj"
-
-msgid "Zip Code"
-msgstr "Poštna številka"
-
-msgid "City"
-msgstr "Mesto"
-
-msgid "District/Township"
-msgstr "Regija"
-
-msgid "Map"
-msgstr "Zemljevid"
-
-msgid "Bookmark"
-msgstr "Zaznamek"
-
-msgid "Destination"
-msgstr "Cilj"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Prikaz"
-
-msgid "_Route"
-msgstr "NaÄrt poti"
-
-msgid "_Former Destinations"
-msgstr "Prejšnji cilji"
-
-msgid "_Bookmarks"
-msgstr "Zaznamki"
-
-msgid "_Map"
-msgstr "Zemljevid"
-
-msgid "_Layout"
-msgstr "Razporeditev"
-
-msgid "_Projection"
-msgstr "Projekcija"
-
-msgid "_Vehicle"
-msgstr "Vozilo"
-
-msgid "Zoom_Out"
-msgstr "Pomanjšava"
-
-msgid "Decrease zoom level"
-msgstr "ZmanjÅ¡aj stopnjo poveÄave"
-
-msgid "Zoom_In"
-msgstr "PoveÄava"
-
-msgid "Increase zoom level"
-msgstr "PoveÄaj stopnjo poveÄave"
-
-msgid "_Recalculate"
-msgstr "PreraÄunaj"
-
-msgid "Redraw map"
-msgstr "Osveži zemljevid"
-
-msgid "_Info"
-msgstr "Podrobnosti"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Odpre dialog za iskanje naslova"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Ustavi navigacijo"
-
-msgid "Test"
-msgstr "Preizkus"
-
-msgid "_Quit"
-msgstr "_Izhod"
-
-msgid "Quit the application"
-msgstr "KonÄaj program"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Ostani na cesti"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr "NaÄrt poti"
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "Celozaslonski naÄin"
-
-msgid "Data"
-msgstr "Podatki"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "S"
-
-msgid "NE"
-msgstr "SV"
-
-msgid "E"
-msgstr "V"
-
-msgid "SE"
-msgstr "JV"
-
-msgid "S"
-msgstr "J"
-
-msgid "SW"
-msgstr "JZ"
-
-msgid "W"
-msgstr "Z"
-
-msgid "NW"
-msgstr "SZ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ne"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "NaÄrt poti %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "NaÄrt poti 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Prikaz v brskalniku"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Ceste"
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr "Prikaz lastnosti"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr "Prikaz na zemljevidu"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Zaznamki"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Zaznamuj %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Vozilo"
-
-msgid "Rules"
-msgstr "Pravila"
-
-msgid "Lock on road"
-msgstr "Prikleni na cesto"
-
-msgid "Northing"
-msgstr "Sever zgoraj"
-
-msgid "Map follows Vehicle"
-msgstr "Zemljevid sledi vozilu"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Zemljevidi"
-
-msgid "Layout"
-msgstr "Razporeditev"
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr "Prejšnji cilji"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr "Nazaj na zemljevid"
-
-msgid "Main Menu"
-msgstr "Glavni meni"
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Položaj vozila"
-
-msgid "Main menu"
-msgstr "Glavni meni"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr "Nastavitve"
-
-msgid "Tools"
-msgstr "Orodja"
-
-msgid "Route"
-msgstr "NaÄrt poti"
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr "Izhod"
-
-msgid "Actions"
-msgstr "Dejanja"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr "Prikaz"
-
-msgid "Fullscreen"
-msgstr "Celozaslonski naÄin"
-
-msgid "Window Mode"
-msgstr "Okenski naÄin"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/sq.po.in b/po/sq.po.in
deleted file mode 100644
index 58850e77b..000000000
--- a/po/sq.po.in
+++ /dev/null
@@ -1,2742 +0,0 @@
-# Albanian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Denis Ju https://launchpad.net/~deblenden
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"PO-Revision-Date: 2015-08-16 18:51+0000\n"
-"Last-Translator: Denis Ju <Unknown>\n"
-"Language-Team: Albanian <sq@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-
-msgid "Running from source directory\n"
-msgstr "Fillo nga lista preardhëse\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "vendos '%s' tek '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "zerim"
-
-msgid "first"
-msgstr "i pari"
-
-msgid "second"
-msgstr "i dyti"
-
-msgid "third"
-msgstr "i treti"
-
-msgid "fourth"
-msgstr "i katërti"
-
-msgid "fifth"
-msgstr "i pesti"
-
-msgid "sixth"
-msgstr "i gjashti"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "dalje e zeruar"
-
-msgid "first exit"
-msgstr "dalja e parë"
-
-msgid "second exit"
-msgstr "dalja e dytë"
-
-msgid "third exit"
-msgstr "dalja e tretë"
-
-msgid "fourth exit"
-msgstr "dalja e katërt"
-
-msgid "fifth exit"
-msgstr "dalja e pestë"
-
-msgid "sixth exit"
-msgstr "dalja e gjashtë"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d këmbë"
-
-#, c-format
-msgid "in %d feet"
-msgstr "në %d këmbë"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d milje"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "në %d.%d milje"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "një milje"
-msgstr[1] "%d milje"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "në një milje"
-msgstr[1] "në %d milje"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metra"
-
-#, c-format
-msgid "in %d meters"
-msgstr "në %d metra"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometra"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "në %d.%d kilometra"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "një kilometër"
-msgstr[1] "%d kilometra"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "në një kilometër"
-msgstr[1] "në %d kilometra"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$smbi tek %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$smbi %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$smbi %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$smbi %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$smbi %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "mbi hyrjen e autostradës"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%snë %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%snë %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%snë %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%snë %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%snë %s"
-
-msgid "When possible, please turn around"
-msgstr "Nqs është e mundur, ju lutem kthehuni mbrapsht"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "në drejtim të %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Ndjekni rrugën për tjetrën %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Hyni në rrethrrotullim së shpejti"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "Hyni në rrethrrotullimin %s"
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Dilni nga rrethrrotullimi tek %1$s %2$s"
-
-msgid "soon"
-msgstr "së shpejti"
-
-msgid "now"
-msgstr "tani"
-
-msgid "then"
-msgstr "pastaj"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "pastaj futuni%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "Udhëtoni tek %1$s%2$s"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "pastaj udhëtoni tek%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "Udhëtoni tek %1$s%2$s"
-
-msgid "on your left"
-msgstr "në të majtën"
-
-msgid "on your right"
-msgstr "në të djathtën"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "Merrni daljen %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "Merrni daljen %1$s %2$s %3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "tek ndërrimi i autostradës"
-
-msgid "at exit"
-msgstr "në dalje"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "pastaj udhëtoni drejt%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "Vazhdoni drejt %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "pastaj mbani krahun e djathtë%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "Mbani krahun e djathtë %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "pastaj mbani krahun e majtë%1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "Mbani krahun e majtë%1$s%2$s%3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "djathtas"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "majtas"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "lehtë "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "fuqishëm "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Merrni rrugën %1$s për tek rruga %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "pas rrugës %i"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Kthehuni %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "pastaj bëni një U-kthim"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Bëni një U-kthim %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "pastaj bëni një U-kthim"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Bëni një U-kthim %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "ndiqni"
-
-msgid "then you have reached your destination."
-msgstr "pastaj ju keni arritur pikëmbërritjen"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Ju e keni arritur pikëmbërritjen tuaj %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Dalje"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Vendndodhja"
-
-msgid "Command"
-msgstr "Komanda"
-
-msgid "Length"
-msgstr "Zgjatja"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Koha"
-
-msgid "Destination Length"
-msgstr "Gjatësia deri në arritje"
-
-msgid "Destination Time"
-msgstr "Kohëzgjatja deri në arritje"
-
-msgid "Roadbook"
-msgstr "Përshkrimi i rrugës"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Pikëzim rruge %d"
-
-msgid "Visit before..."
-msgstr "Vendos si pikëzim rruge ..."
-
-msgid "Set as position"
-msgstr "Vendosni si pozicion"
-
-msgid "Set as destination"
-msgstr "Vendosni si vendarritje"
-
-msgid "Add as bookmark"
-msgstr "Shtoni një shenjim"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Pikë 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Koordinatat e ekranit %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andora"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Emiratet e Bashkuara Arabe"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua dhe Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguila"
-
-#. 008
-msgid "Albania"
-msgstr "Shqipëri"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Antilet Hollandeze"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktidë"
-
-#. 032
-msgid "Argentina"
-msgstr "Argjentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Samoa Amerikane"
-
-#. 040
-msgid "Austria"
-msgstr "Austri"
-
-#. 036
-msgid "Australia"
-msgstr "Australi"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ishujt Aland"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaixhan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnjë-Hercegovinë"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgjikë"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bullgari"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrein"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint-Barthélemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei Darussalam"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivi"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "Bonaire, Sint Eustatius dhe Saba"
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "pastaj dilni nga rrethrrotullimi tek %1$s %2$s"
diff --git a/po/sr.po.in b/po/sr.po.in
deleted file mode 100644
index 00ec61b1d..000000000
--- a/po/sr.po.in
+++ /dev/null
@@ -1,2778 +0,0 @@
-# Serbian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Ivan Janjić https://launchpad.net/~milandd
-# KaZeR https://launchpad.net/~kazer
-# Slobodan Simić https://launchpad.net/~slsimic
-# momcilo https://launchpad.net/~momcilo-majic
-# МироÑлав Ðиколић https://launchpad.net/~lipek
-# Саша Петровић https://launchpad.net/~salepetronije
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:00+0000\n"
-"Last-Translator: Саша Петровић <salepetronije@gmail.com>\n"
-"Language-Team: ÑрпÑки <xfce4@xfce4.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"Language: \n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Покренут из изворне фаÑцикле\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "поÑтављам вредноÑÑ‚ '%s' на '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "нулти"
-
-msgid "first"
-msgstr "прво"
-
-msgid "second"
-msgstr "друго"
-
-msgid "third"
-msgstr "треће"
-
-msgid "fourth"
-msgstr "четврто"
-
-msgid "fifth"
-msgstr "пето"
-
-msgid "sixth"
-msgstr "шеÑто"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "нулти излаз"
-
-msgid "first exit"
-msgstr "први излаз"
-
-msgid "second exit"
-msgstr "други излаз"
-
-msgid "third exit"
-msgstr "трећи излаз"
-
-msgid "fourth exit"
-msgstr "четврти излаз"
-
-msgid "fifth exit"
-msgstr "пети излаз"
-
-msgid "sixth exit"
-msgstr "шеÑти излаз"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d Ñтопа"
-
-#, c-format
-msgid "in %d feet"
-msgstr "за %d Ñтопе"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d миља"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "за %d.%d миља"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "%d миља"
-msgstr[1] "%d миље"
-msgstr[2] "%d миља"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "кроз %d миља"
-msgstr[1] "кроз %d миље"
-msgstr[2] "кроз %d миља"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d метара"
-
-#, c-format
-msgid "in %d meters"
-msgstr "за %d метара"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d километара"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "за %d.%d километара"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d километара"
-msgstr[1] "%d километара"
-msgstr[2] "%d километара"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "за %d километара"
-msgstr[1] "за %d километара"
-msgstr[2] "за %d километара"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "на нагибу"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sу %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sу %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sу %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sу %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sна %s"
-
-msgid "When possible, please turn around"
-msgstr "Када буде могуће, променити Ñмер"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Прати пут до Ñледећег %s"
-
-msgid "Enter the roundabout soon"
-msgstr "УÑкоро прелазак на обилазницу"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Ðапуштање обилазнице за %1$s %2$s"
-
-msgid "soon"
-msgstr "уÑкоро"
-
-msgid "now"
-msgstr "Ñад"
-
-msgid "then"
-msgstr "потом"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "деÑно"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "лево"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "лако "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "јако "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Прати %1$s пут до %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "поÑле %i путева"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Скрени %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "потом променити Ñмер"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Променити Ñмер %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "потом променити Ñмер"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Променити Ñмер %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "потом Ñте Ñтигли на Ñвоје одредиште."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Стигли Ñте на одредиште %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Излаз"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Положај"
-
-msgid "Command"
-msgstr "Ðаредба"
-
-msgid "Length"
-msgstr "Дужина"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Време"
-
-msgid "Destination Length"
-msgstr "Одредишна дужина"
-
-msgid "Destination Time"
-msgstr "Одредишно време"
-
-msgid "Roadbook"
-msgstr "План пута"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "Пролазна тачка %d"
-
-msgid "Visit before..."
-msgstr "ПоÑети пре..."
-
-msgid "Set as position"
-msgstr "ПоÑтави као положај"
-
-msgid "Set as destination"
-msgstr "ПоÑтави као одредиште"
-
-msgid "Add as bookmark"
-msgstr "Додај као забелешку"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Тачка 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "ЕкранÑке координате: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Ðндора"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Уједињени ÐрапÑки Емирати"
-
-#. 004
-msgid "Afghanistan"
-msgstr "ÐвганиÑтан"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Ðнтигва и Барбуда"
-
-#. 660
-msgid "Anguilla"
-msgstr "Ðнгвила"
-
-#. 008
-msgid "Albania"
-msgstr "Ðлбанија"
-
-#. 051
-msgid "Armenia"
-msgstr "Јерменија"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "ХоландÑки Ðнтили"
-
-#. 024
-msgid "Angola"
-msgstr "Ðнгола"
-
-#. 010
-msgid "Antarctica"
-msgstr "Ðнтарктик"
-
-#. 032
-msgid "Argentina"
-msgstr "Ðргентина"
-
-#. 016
-msgid "American Samoa"
-msgstr "Ðмеричка Самоа"
-
-#. 040
-msgid "Austria"
-msgstr "ÐуÑтрија"
-
-#. 036
-msgid "Australia"
-msgstr "ÐуÑтралија"
-
-#. 533
-msgid "Aruba"
-msgstr "Ðруба"
-
-#. 248
-msgid "Aland Islands"
-msgstr "ОландÑка оÑтрва"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Ðзербејџан"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "БоÑна и Херцеговина"
-
-#. 052
-msgid "Barbados"
-msgstr "БарбадоÑ"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#. 056
-msgid "Belgium"
-msgstr "Белгија"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Буркина ФаÑо"
-
-#. 100
-msgid "Bulgaria"
-msgstr "БугарÑка"
-
-#. 048
-msgid "Bahrain"
-msgstr "Бахреин"
-
-#. 108
-msgid "Burundi"
-msgstr "Бурунди"
-
-#. 204
-msgid "Benin"
-msgstr "Бенин"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Свети Бартоломеј"
-
-#. 060
-msgid "Bermuda"
-msgstr "Бермуди"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Брунеј"
-
-#. 068
-msgid "Bolivia"
-msgstr "Боливија"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Бразил"
-
-#. 044
-msgid "Bahamas"
-msgstr "Бахами"
-
-#. 064
-msgid "Bhutan"
-msgstr "Бутан"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Бувеова оÑтрва"
-
-#. 072
-msgid "Botswana"
-msgstr "Боцвана"
-
-#. 112
-msgid "Belarus"
-msgstr "БелоруÑија"
-
-#. 084
-msgid "Belize"
-msgstr "Белизе"
-
-#. 124
-msgid "Canada"
-msgstr "Канада"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosova ostrva"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "ДемократÑка република Конго"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Централноафричка Република"
-
-#. 178
-msgid "Congo"
-msgstr "Конго"
-
-#. 756
-msgid "Switzerland"
-msgstr "ШвајцарÑка"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Обала Слоноваче"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Кукова оÑтрва"
-
-#. 152
-msgid "Chile"
-msgstr "Чиле"
-
-#. 120
-msgid "Cameroon"
-msgstr "Камерун"
-
-#. 156
-msgid "China"
-msgstr "Кина"
-
-#. 170
-msgid "Colombia"
-msgstr "Колумбија"
-
-#. 188
-msgid "Costa Rica"
-msgstr "КоÑтарика"
-
-#. 192
-msgid "Cuba"
-msgstr "Куба"
-
-#. 132
-msgid "Cape Verde"
-msgstr "ЗеленортÑка оÑтрва"
-
-#. 531
-msgid "Curacao"
-msgstr "Куракао"
-
-#. 162
-msgid "Christmas Island"
-msgstr "Божићна оÑтрва"
-
-#. 196
-msgid "Cyprus"
-msgstr "Кипар"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Чешка"
-
-#. 276
-msgid "Germany"
-msgstr "Ðемачка"
-
-#. 262
-msgid "Djibouti"
-msgstr "Ðибути"
-
-#. 208
-msgid "Denmark"
-msgstr "ДанÑка"
-
-#. 212
-msgid "Dominica"
-msgstr "Доминика"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "ДоминиканÑка Република"
-
-#. 012
-msgid "Algeria"
-msgstr "Ðлжир"
-
-#. 218
-msgid "Ecuador"
-msgstr "Еквадор"
-
-#. 233
-msgid "Estonia"
-msgstr "ЕÑтонија"
-
-#. 818
-msgid "Egypt"
-msgstr "Египат"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Западна Сахара"
-
-#. 232
-msgid "Eritrea"
-msgstr "Еритреја"
-
-#. 724
-msgid "Spain"
-msgstr "Шпанија"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Етиопија"
-
-#. 246
-msgid "Finland"
-msgstr "ФинÑка"
-
-#. 242
-msgid "Fiji"
-msgstr "Фиџи"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "ФокландÑка оÑтрва (Малвини)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Микронезија, Федеративне државе"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "ФарÑка оÑтрва"
-
-#. 250
-msgid "France"
-msgstr "ФранцуÑка"
-
-#. 266
-msgid "Gabon"
-msgstr "Габон"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Уједињено краљевÑтво"
-
-#. 308
-msgid "Grenada"
-msgstr "Гренада"
-
-#. 268
-msgid "Georgia"
-msgstr "Грузија"
-
-#. 254
-msgid "French Guiana"
-msgstr "ФранцуÑка Гвајана"
-
-#. 831
-msgid "Guernsey"
-msgstr "Генрзи"
-
-#. 288
-msgid "Ghana"
-msgstr "Гана"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Гибралтар"
-
-#. 304
-msgid "Greenland"
-msgstr "Гренланд"
-
-#. 270
-msgid "Gambia"
-msgstr "Гамбија"
-
-#. 324
-msgid "Guinea"
-msgstr "Гвинеја"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Гваделуп"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Екваторијална Гвинеја"
-
-#. 300
-msgid "Greece"
-msgstr "Грчка"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Јужна Ðорџија и Јужна Сендвичка оÑтрва"
-
-#. 320
-msgid "Guatemala"
-msgstr "Гватемала"
-
-#. 316
-msgid "Guam"
-msgstr "Гуам"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Гвинеја БиÑао"
-
-#. 328
-msgid "Guyana"
-msgstr "Гвајана"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Хонг Конг"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Херд оÑтрво и Мекдоналд оÑтрва"
-
-#. 340
-msgid "Honduras"
-msgstr "ХондураÑ"
-
-#. 191
-msgid "Croatia"
-msgstr "ХрватÑка"
-
-#. 332
-msgid "Haiti"
-msgstr "Хаити"
-
-#. 348
-msgid "Hungary"
-msgstr "МађарÑка"
-
-#. 360
-msgid "Indonesia"
-msgstr "Индонезија"
-
-#. 372
-msgid "Ireland"
-msgstr "ИрÑка"
-
-#. 376
-msgid "Israel"
-msgstr "Израел"
-
-#. 833
-msgid "Isle of Man"
-msgstr "ОÑтрво Ман"
-
-#. 356
-msgid "India"
-msgstr "Индија"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "БританÑка ИндијÑка ОкеанÑка Територија"
-
-#. 368
-msgid "Iraq"
-msgstr "Ирак"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Иран, ИÑламÑка Република"
-
-#. 352
-msgid "Iceland"
-msgstr "ИÑланд"
-
-#. 380
-msgid "Italy"
-msgstr "Италија"
-
-#. 832
-msgid "Jersey"
-msgstr "ÐерÑи"
-
-#. 388
-msgid "Jamaica"
-msgstr "Јамајка"
-
-#. 400
-msgid "Jordan"
-msgstr "Јордан"
-
-#. 392
-msgid "Japan"
-msgstr "Јапан"
-
-#. 404
-msgid "Kenya"
-msgstr "Кенија"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "КиргиÑтан"
-
-#. 116
-msgid "Cambodia"
-msgstr "Камбоџа"
-
-#. 296
-msgid "Kiribati"
-msgstr "Кирибати"
-
-#. 174
-msgid "Comoros"
-msgstr "Комори"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Свети ÐšÐ¸Ñ‚Ñ Ð¸ ÐевиÑ"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Кореја, ДемократÑка Ðародна Република"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Република Кореја"
-
-#. 414
-msgid "Kuwait"
-msgstr "Кувајт"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "КајманÑка оÑтрва"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "КазахÑтан"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "ЛаоÑ"
-
-#. 422
-msgid "Lebanon"
-msgstr "Либан"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Света Луција"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Лихтенштајн"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Шри Ланка"
-
-#. 430
-msgid "Liberia"
-msgstr "Либерија"
-
-#. 426
-msgid "Lesotho"
-msgstr "ЛеÑото"
-
-#. 440
-msgid "Lithuania"
-msgstr "Литванија"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ЛукÑембург"
-
-#. 428
-msgid "Latvia"
-msgstr "Летонија"
-
-#. 434
-msgid "Libya"
-msgstr "Либија"
-
-#. 504
-msgid "Morocco"
-msgstr "Мароко"
-
-#. 492
-msgid "Monaco"
-msgstr "Монако"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Молдавија, Република"
-
-#. 499
-msgid "Montenegro"
-msgstr "Црна Гора"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Свети Мартин (француÑки део)"
-
-#. 450
-msgid "Madagascar"
-msgstr "МадагаÑкар"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "МаршалÑка оÑтрва"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Македонија"
-
-#. 466
-msgid "Mali"
-msgstr "Мали"
-
-#. 104
-msgid "Myanmar"
-msgstr "Мијанмар"
-
-#. 496
-msgid "Mongolia"
-msgstr "Монголија"
-
-#. 446
-msgid "Macao"
-msgstr "Макао"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Северна МаријанÑка оÑтрва"
-
-#. 474
-msgid "Martinique"
-msgstr "Мартиник"
-
-#. 478
-msgid "Mauritania"
-msgstr "Мауританија"
-
-#. 500
-msgid "Montserrat"
-msgstr "МонÑерат"
-
-#. 470
-msgid "Malta"
-msgstr "Малта"
-
-#. 480
-msgid "Mauritius"
-msgstr "МаурицијуÑ"
-
-#. 462
-msgid "Maldives"
-msgstr "Малдиви"
-
-#. 454
-msgid "Malawi"
-msgstr "Малави"
-
-#. 484
-msgid "Mexico"
-msgstr "МекÑико"
-
-#. 458
-msgid "Malaysia"
-msgstr "Малезија"
-
-#. 508
-msgid "Mozambique"
-msgstr "Мозамбик"
-
-#. 516
-msgid "Namibia"
-msgstr "Ðамибија"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Ðова Каледонија"
-
-#. 562
-msgid "Niger"
-msgstr "Ðигер"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "ОÑтрво Ðорфок"
-
-#. 566
-msgid "Nigeria"
-msgstr "Ðигерија"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Ðикарагва"
-
-#. 528
-msgid "Netherlands"
-msgstr "Холандија"
-
-#. 578
-msgid "Norway"
-msgstr "Ðорвешка"
-
-#. 524
-msgid "Nepal"
-msgstr "Ðепал"
-
-#. 520
-msgid "Nauru"
-msgstr "Ðауру"
-
-#. 570
-msgid "Niue"
-msgstr "Ðијуе"
-
-#. 554
-msgid "New Zealand"
-msgstr "Ðови Зеланд"
-
-#. 512
-msgid "Oman"
-msgstr "Оман"
-
-#. 591
-msgid "Panama"
-msgstr "Панама"
-
-#. 604
-msgid "Peru"
-msgstr "Перу"
-
-#. 258
-msgid "French Polynesia"
-msgstr "ФранцуÑка Полинезија"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Папуа Ðова Гвинеја"
-
-#. 608
-msgid "Philippines"
-msgstr "Филипини"
-
-#. 586
-msgid "Pakistan"
-msgstr "ПакиÑтан"
-
-#. 616
-msgid "Poland"
-msgstr "ПољÑка"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Свети Пјер и Микелон"
-
-#. 612
-msgid "Pitcairn"
-msgstr "ОÑтрва Питкерн"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Порторико"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "ПалеÑтинÑка Територија, Окупирана"
-
-#. 620
-msgid "Portugal"
-msgstr "Португал"
-
-#. 585
-msgid "Palau"
-msgstr "Палау"
-
-#. 600
-msgid "Paraguay"
-msgstr "Парагвај"
-
-#. 634
-msgid "Qatar"
-msgstr "Катар"
-
-#. 638
-msgid "Reunion"
-msgstr "Реинион"
-
-#. 642
-msgid "Romania"
-msgstr "Румунија"
-
-#. 688
-msgid "Serbia"
-msgstr "Србија"
-
-#. 643
-msgid "Russian Federation"
-msgstr "РуÑка федерација"
-
-#. 646
-msgid "Rwanda"
-msgstr "Руанда"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "СаудијÑка Ðрабија"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "СоломонÑка оÑтрва"
-
-#. 690
-msgid "Seychelles"
-msgstr "Сејшели"
-
-#. 736
-msgid "Sudan"
-msgstr "Судан"
-
-#. 752
-msgid "Sweden"
-msgstr "ШведÑка"
-
-#. 702
-msgid "Singapore"
-msgstr "Сингапур"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Света Јелена"
-
-#. 705
-msgid "Slovenia"
-msgstr "Словенија"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Свалбард и Јан Мајен"
-
-#. 703
-msgid "Slovakia"
-msgstr "Словачка"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Сијера Леоне"
-
-#. 674
-msgid "San Marino"
-msgstr "Сан Марино"
-
-#. 686
-msgid "Senegal"
-msgstr "Сенегал"
-
-#. 706
-msgid "Somalia"
-msgstr "Сомалија"
-
-#. 740
-msgid "Suriname"
-msgstr "Суринам"
-
-#. 728
-msgid "South Sudan"
-msgstr "Јужни Судан"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Сао Томе и Принципе"
-
-#. 222
-msgid "El Salvador"
-msgstr "Салвадор"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Свети Мартин (ХоландÑки део)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "СиријÑка арапÑка република"
-
-#. 748
-msgid "Swaziland"
-msgstr "Свазиленд"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Ð¢ÑƒÑ€ÐºÑ Ð¸ КајкоÑ"
-
-#. 148
-msgid "Chad"
-msgstr "Чад"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "ФранцуÑке jужне tериторије"
-
-#. 768
-msgid "Togo"
-msgstr "Того"
-
-#. 764
-msgid "Thailand"
-msgstr "Тајланд"
-
-#. 762
-msgid "Tajikistan"
-msgstr "ТаџикиÑтан"
-
-#. 772
-msgid "Tokelau"
-msgstr "Токелау"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "ИÑточни Тимор"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "ТуркмениÑтан"
-
-#. 788
-msgid "Tunisia"
-msgstr "ТуниÑ"
-
-#. 776
-msgid "Tonga"
-msgstr "Тонга"
-
-#. 792
-msgid "Turkey"
-msgstr "ТурÑка"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Тринидад и Тобаго"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Тувалу"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Тајван, КинеÑка Провинција"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Танзанија, Уједињена република"
-
-#. 804
-msgid "Ukraine"
-msgstr "Украјна"
-
-#. 800
-msgid "Uganda"
-msgstr "Уганда"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Спољна ивична оÑтрва СÐД"
-
-#. 840
-msgid "United States"
-msgstr "Sjedinjene AmeriÄke Države"
-
-#. 858
-msgid "Uruguay"
-msgstr "Уругвај"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "УзбекиÑтан"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Ватикан"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Свети ВинÑент и Гренадини"
-
-#. 862
-msgid "Venezuela"
-msgstr "Венецуела"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "ДевичанÑка оÑтрва, БританÑка"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "ДевичанÑка оÑтрва, СÐД"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Вијетнам"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Вануату"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Ð’Ð°Ð»Ð¸Ñ Ð¸ Футуна"
-
-#. 882
-msgid "Samoa"
-msgstr "Самоа"
-
-#. 887
-msgid "Yemen"
-msgstr "Јемен"
-
-#. 175
-msgid "Mayotte"
-msgstr "Мајот"
-
-#. 710
-msgid "South Africa"
-msgstr "Јужноафричка република"
-
-#. 894
-msgid "Zambia"
-msgstr "Замбија"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Зимбабве"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Ðепознато, додатак је у is_in ознакама ових градова"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-"Ðема датотеке подешавања navit.xml, navit.xml.ÑопÑтвени је пронађен\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-"ДеÑила Ñе грешка приликом рашчлањивања датотеке подешавања „%s“: %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "КориÑтим датотеку подешавања „%s“\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "ГРЕШКÐ: ÐиÑу пронађене поÑтавке у датотеци подешавања „%s“\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-"Ðије уÑпело унутрашње покретање, излазим. Проверите претходне поруке "
-"грешака.\n"
-
-msgid "unknown street"
-msgstr "непозната улица"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "Ðеимановано возила"
-
-msgid "Failed to write bookmarks file"
-msgstr "ÐиÑам уÑпео да пишем у датотеци забелешки"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Тачка на карти"
-
-msgid "Car"
-msgstr "Кола"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Држава"
-
-msgid "Postal"
-msgstr "ПоштанÑки"
-
-msgid "Town"
-msgstr "Град"
-
-msgid "District"
-msgstr "Општина"
-
-msgid "Street"
-msgstr "Улица"
-
-msgid "Number"
-msgstr "Број"
-
-msgid "Enter Destination"
-msgstr "УнеÑите одредиште"
-
-msgid "Zip Code"
-msgstr "ПоштанÑки број"
-
-msgid "City"
-msgstr "Град"
-
-msgid "District/Township"
-msgstr "Општрина/Град"
-
-msgid "Map"
-msgstr "Карта"
-
-msgid "Bookmark"
-msgstr "Обележивач"
-
-msgid "Destination"
-msgstr "Одредиште"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Приказ"
-
-msgid "_Route"
-msgstr "рута"
-
-msgid "_Former Destinations"
-msgstr "Претходна одредишта"
-
-msgid "_Bookmarks"
-msgstr "Обележивачи"
-
-msgid "_Map"
-msgstr "_Карта"
-
-msgid "_Layout"
-msgstr "РаÑпоред"
-
-msgid "_Projection"
-msgstr "Пројекција"
-
-msgid "_Vehicle"
-msgstr "Возило"
-
-msgid "Zoom_Out"
-msgstr "Умањи"
-
-msgid "Decrease zoom level"
-msgstr "Умањите ниво увећања"
-
-msgid "Zoom_In"
-msgstr "Увећај"
-
-msgid "Increase zoom level"
-msgstr "Увећајте ниво увећања"
-
-msgid "_Recalculate"
-msgstr "Прерачунај"
-
-msgid "Redraw map"
-msgstr "ОÑвежи карту"
-
-msgid "_Info"
-msgstr "Подаци"
-
-msgid "Set _destination"
-msgstr "ПоÑтави _одредиште"
-
-msgid "Opens address search dialog"
-msgstr "Отвара дијалог претраге адреÑе"
-
-msgid "_POI search"
-msgstr "Претрага занимљивих тачака_"
-
-msgid "Opens POI search dialog"
-msgstr "Отвори прозор претраге занимљивих тачака"
-
-msgid "_Stop Navigation"
-msgstr "ЗауÑтави навигацију"
-
-msgid "Test"
-msgstr "Проба"
-
-msgid "_Quit"
-msgstr "_Изађи"
-
-msgid "Quit the application"
-msgstr "Изађите из програма"
-
-msgid "Show position _cursor"
-msgstr "Прикажи _показивач положаја"
-
-msgid "_Lock on Road"
-msgstr "Прати пут"
-
-msgid "_Keep orientation to the North"
-msgstr "_Држи уÑмерење према Ñеверу"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Пребацује уÑмерење карте на Ñевер или на правац возила"
-
-msgid "_Roadbook"
-msgstr "План пута"
-
-msgid "Show/hide route description"
-msgstr "Прикажи/Ñакриј Ð¾Ð¿Ð¸Ñ Ñ€ÑƒÑ‚Ðµ"
-
-msgid "_Autozoom"
-msgstr "ÐутоматÑки увећавање"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Укључи/иÑкључи аутоматÑко увећање"
-
-msgid "_Fullscreen"
-msgstr "Цео екран"
-
-msgid "Data"
-msgstr "Подаци"
-
-msgid "Pharmacy"
-msgstr "Ðпотека"
-
-msgid "Restaurant"
-msgstr "Одмориште"
-
-msgid "Restaurant. Fast food"
-msgstr "Одмориште. Брза храна"
-
-msgid "Hotel"
-msgstr "Хотел"
-
-msgid "Car parking"
-msgstr "Паркинг"
-
-msgid "Fuel station"
-msgstr "БензинÑка пумпа"
-
-msgid "Bank"
-msgstr "Банка"
-
-msgid "Hospital"
-msgstr "Болница"
-
-msgid "Cinema"
-msgstr "БиоÑкоп"
-
-msgid "Train station"
-msgstr "Возна Ñтаница"
-
-msgid "School"
-msgstr "Школа"
-
-msgid "Police"
-msgstr "Полиција"
-
-msgid "Justice"
-msgstr "Суд"
-
-msgid "Taxi"
-msgstr "ТакÑи"
-
-msgid "Shopping"
-msgstr "Куповина"
-
-msgid "Distance from screen center (km)"
-msgstr "РаÑтојање од Ñредишта екрана (km)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "Занимљива тачка %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "ПоÑтави одредиште на %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "ПоÑтави карту на %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "ПоÑтави Ñледећу поÑету на %ld, %ld \n"
-
-msgid "POI search"
-msgstr "Претрага занимљивих тачака"
-
-msgid "Select a category"
-msgstr "Изаберите врÑту"
-
-msgid "Select a distance to look for (km)"
-msgstr "Изаберите даљину претраге (km)"
-
-msgid "Select a POI"
-msgstr "Изаберите занимљиву тачку"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Ð’Ñ€Ñта"
-
-msgid "Direction"
-msgstr "Правац"
-
-msgid "Distance(m)"
-msgstr "РаÑтојање(m)"
-
-msgid "Name"
-msgstr "Име"
-
-msgid "Visit Before"
-msgstr "ПоÑети пре"
-
-msgid "N"
-msgstr "С"
-
-msgid "NE"
-msgstr "СИ"
-
-msgid "E"
-msgstr "И"
-
-msgid "SE"
-msgstr "ЈИ"
-
-msgid "S"
-msgstr "Ј"
-
-msgid "SW"
-msgstr "ЈЗ"
-
-msgid "W"
-msgstr "З"
-
-msgid "NW"
-msgstr "СЗ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ðе"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3Д"
-
-msgid "OT"
-msgstr "ОТ"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Рута %4.0fкм %02d:%02d ПВД"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Рута 0000км 0+00:00 ПВД"
-
-msgid "Help"
-msgstr "Помоћ"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "Пролазна тачка %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr "Изаберите пролазну тачку за ÑƒÐ½Ð¾Ñ Ð¿Ñ€Ðµ претходне"
-
-msgid "View in Browser"
-msgstr "Погледај у претраживачу"
-
-msgid "Item type"
-msgstr "Ð’Ñ€Ñта Ñтавке"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Улице"
-
-msgid "House numbers"
-msgstr "Кућни бројеви"
-
-msgid "View Attributes"
-msgstr "Преглед оÑобина"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "ПоÑтави као положај (и иÑкључи возило)"
-
-msgid "POIs"
-msgstr "Тачке интереÑовања"
-
-msgid "View on map"
-msgstr "Погледај на карти"
-
-msgid "Remove search results from the map"
-msgstr "Уклони излазе из претраге Ñа карте"
-
-msgid "Show results on the map"
-msgstr "Прикажи излазе претраге на карти"
-
-msgid "Cut Bookmark"
-msgstr "ИÑеци обележивач"
-
-msgid "Copy Bookmark"
-msgstr "Умножи обележивач"
-
-msgid "Rename Bookmark"
-msgstr "Преименуј обележивач"
-
-msgid "Paste Bookmark"
-msgstr "Прилепи обележивач"
-
-msgid "Delete Bookmark"
-msgstr "Обриши обележивач"
-
-msgid "Delete waypoint"
-msgstr "Избриши пролазну тачку"
-
-msgid "Bookmarks"
-msgstr "Обележивачи"
-
-msgid "Bookmarks as waypoints"
-msgstr "Обележивачи као пролазне тачке"
-
-msgid "Save waypoints"
-msgstr "Сачувај пролазне тачке"
-
-msgid "Replace with waypoints"
-msgstr "Замени пролазним тачкама"
-
-msgid "Delete Folder"
-msgstr "Избриши фаÑциклу"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Додај фаÑциклу Ñа обележивачима"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Прилепи обележивач"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Обележи %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "Преузми %s"
-
-msgid "Map Download"
-msgstr "Преузимање карте"
-
-msgid "Active"
-msgstr "Радно"
-
-msgid "Download Enabled"
-msgstr "Преузимање је омогућено"
-
-msgid "Download completely"
-msgstr "Преузми потпуно"
-
-msgid "Show Satellite Status"
-msgstr "Прикажи Ñтање Ñателита"
-
-msgid " Elevation "
-msgstr " ВиÑина "
-
-msgid " Azimuth "
-msgstr " Ðзимут "
-
-msgid "Show NMEA Data"
-msgstr "Приказ NMEA података"
-
-msgid "car"
-msgstr "кола"
-
-msgid "bike"
-msgstr "бицикл"
-
-msgid "pedestrian"
-msgstr "пешак"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Тренутни профил: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Примени профил: %s"
-
-msgid "Set as active"
-msgstr "Примени као активан"
-
-msgid "Show Satellite status"
-msgstr "Прикажи Ñтање Ñателита"
-
-msgid "Show NMEA data"
-msgstr "Прикажи NMEA податке"
-
-msgid "Add Bookmark"
-msgstr "Додавање обележивача"
-
-msgid "Rename"
-msgstr "Преименуј"
-
-msgid "About Navit"
-msgstr "О програму Ðавит"
-
-#. Authors
-msgid "By"
-msgstr "Од"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "И цео Navit тим"
-
-msgid "members and contributors."
-msgstr "чланови и доприноÑиоци"
-
-msgid "Waypoints"
-msgstr "Пролазне тачке"
-
-msgid "Enter Coordinates"
-msgstr "УнеÑите координате"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "ГеографÑка ширина и дужина"
-
-msgid "Enter coordinates, for example:"
-msgstr "УнеÑите координате, на пример:"
-
-msgid "Vehicle"
-msgstr "Возило"
-
-msgid "Rules"
-msgstr "Правила"
-
-msgid "Lock on road"
-msgstr "Прати пут"
-
-msgid "Northing"
-msgstr "Управљање по Ñеверу"
-
-msgid "Map follows Vehicle"
-msgstr "Карта прати возило"
-
-msgid "Plan with Waypoints"
-msgstr "Планирање уз помоћ пролазних тачака"
-
-msgid "Maps"
-msgstr "Карте"
-
-msgid "Layout"
-msgstr "РаÑпоред"
-
-msgid "Height Profile"
-msgstr "ВиÑинÑки профил"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "ÐžÐ¿Ð¸Ñ Ð¿ÑƒÑ‚Ð°ÑšÐµ"
-
-msgid "Show Locale"
-msgstr "Прикажи име превода"
-
-msgid "Former Destinations"
-msgstr "Претходна одредишта"
-
-msgid "- No former destinations available -"
-msgstr "- ÐиÑу доÑтупна претходна одредишта -"
-
-msgid "Message"
-msgstr "Порука"
-
-msgid "Back"
-msgstr "Ðазад"
-
-msgid "Back to map"
-msgstr "Ðазад на карту"
-
-msgid "Main Menu"
-msgstr "Главни мени"
-
-msgid "House number"
-msgstr "Кућни број"
-
-msgid "Next"
-msgstr "Следеће"
-
-msgid "Prev"
-msgstr "Претходно"
-
-msgid "Return to route!"
-msgstr "Врати Ñе на путању!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Пажња! Камера!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Молим, Ñмањите брзину"
-
-msgid "partial match"
-msgstr "делимично поклапање"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Претражи"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "Градове"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Подаци карте (c) доприноÑиоци Отворене карте улица, ОДБЛ"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "Преузете карте"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "Путања довде"
-
-msgid "Cancel"
-msgstr "Откажи"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "Читава планета"
-
-msgid "Africa"
-msgstr "Ðфрика"
-
-msgid "Canary Islands"
-msgstr "КанарÑка ОÑтрва"
-
-msgid "Asia"
-msgstr "Ðзија"
-
-msgid "Korea"
-msgstr "Кореја"
-
-msgid "Taiwan"
-msgstr "Тајван"
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr "Океанија"
-
-msgid "Tasmania"
-msgstr "ТаÑманија"
-
-msgid "Victoria"
-msgstr "Викторија"
-
-msgid "New South Wales"
-msgstr "Ðови Јужни ВелÑ"
-
-msgid "Europe"
-msgstr "Европа"
-
-msgid "Western Europe"
-msgstr "Западна Европа"
-
-msgid "Azores"
-msgstr "Ðзори"
-
-msgid "BeNeLux"
-msgstr "БенелукÑ"
-
-msgid "Alsace"
-msgstr "ÐлзаÑ"
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr "Бретања"
-
-msgid "Centre"
-msgstr "Средиште"
-
-msgid "Champagne-Ardenne"
-msgstr "Шампањ-Ðрден"
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr "Лорена"
-
-msgid "Midi-Pyrenees"
-msgstr "Средњи Пиринеји"
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr "Берлин"
-
-msgid "Brandenburg"
-msgstr "Бранденбург"
-
-msgid "Bremen"
-msgstr "Бремен"
-
-msgid "Hamburg"
-msgstr "Хамбург"
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr "Сарланд"
-
-msgid "Sachsen-Anhalt"
-msgstr "СакÑонија-Ðнхалт"
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr "Галиција"
-
-msgid "Scandinavia"
-msgstr "Скандинавија"
-
-msgid "England"
-msgstr "ЕнглеÑка"
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr "ЕÑекÑ"
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr "Кент"
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr "Ðорфолк"
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr "СомерÑет"
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr "ШкотÑка"
-
-msgid "Wales"
-msgstr "ВелÑ"
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr "Северна Ðмерика"
-
-msgid "Alaska"
-msgstr "ÐљаÑка"
-
-msgid "Hawaii"
-msgstr "Хаваји"
-
-msgid "USA"
-msgstr "СÐД"
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr "Мичиген"
-
-msgid "Ohio"
-msgstr "Охајо"
-
-msgid "Northeast"
-msgstr "СевероиÑток"
-
-msgid "Massachusetts"
-msgstr "МаÑачуÑец"
-
-msgid "Vermont"
-msgstr "Вермонт"
-
-msgid "Pacific"
-msgstr "Пацифик"
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr "ÐрканзаÑ"
-
-msgid "District of Columbia"
-msgstr "КолумбијÑки округ"
-
-msgid "Florida"
-msgstr "Флорида"
-
-msgid "Louisiana"
-msgstr "Луизијана"
-
-msgid "Maryland"
-msgstr "Мериленд"
-
-msgid "Mississippi"
-msgstr "МиÑиÑипи"
-
-msgid "Oklahoma"
-msgstr "Оклахома"
-
-msgid "Texas"
-msgstr "ТекÑаÑ"
-
-msgid "Virginia"
-msgstr "Вирџинија"
-
-msgid "West Virginia"
-msgstr "Западна Вирџинија"
-
-msgid "West"
-msgstr "Запад"
-
-msgid "Arizona"
-msgstr "Ðризона"
-
-msgid "California"
-msgstr "Калифорнија"
-
-msgid "Colorado"
-msgstr "Колорадо"
-
-msgid "Idaho"
-msgstr "Ðјдахо"
-
-msgid "Montana"
-msgstr "Монтана"
-
-msgid "New Mexico"
-msgstr "Ðови МекÑико"
-
-msgid "Nevada"
-msgstr "Ðевада"
-
-msgid "Oregon"
-msgstr "Орегон"
-
-msgid "Utah"
-msgstr "Јута"
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr "преузимање"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "Ñпремно"
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Ðема довољно раÑположивог проÑтора"
-
-msgid "Error downloading map!"
-msgstr "ДеÑила Ñе грешка приликом преузимања карте!"
-
-msgid "Error writing map!"
-msgstr "ДеÑила Ñе грешка при упиÑу карте!"
-
-msgid "Map download aborted!"
-msgstr "Преузимање карте је прекинуто!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Преузимање карте"
-
-msgid "Vehicle Position"
-msgstr "Позиција возила"
-
-msgid "Main menu"
-msgstr "Главни мени"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Прикажи\n"
-"карту"
-
-msgid "Settings"
-msgstr "Подешавања"
-
-msgid "Tools"
-msgstr "Ðлати"
-
-msgid "Route"
-msgstr "рута"
-
-msgid "About"
-msgstr "O"
-
-msgid "Quit"
-msgstr "Заврши"
-
-msgid "Actions"
-msgstr "ПоÑтупци"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"Претходна\n"
-"одредишта"
-
-msgid "Coordinates"
-msgstr "Координате"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"ЗауÑтави\n"
-"навигацију"
-
-msgid "Display"
-msgstr "Приказ"
-
-msgid "Fullscreen"
-msgstr "Цео екран"
-
-msgid "Window Mode"
-msgstr "Режим прозора"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "ОпиÑ"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"Одбаци поÑледњу\n"
-"пролазну тачку"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"Одбаци Ñледећу\n"
-"пролазну тачку"
-
-msgid "Satellite Status"
-msgstr "Стање Ñателита"
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr "најкраћим_колима"
-
-msgid "car_avoid_tolls"
-msgstr "алати_избегавања_колима"
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "коњ"
-
-msgid "Truck"
-msgstr "Камион"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Да"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Ðавит је покренут"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Ðавит је покренут"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Добродошли у Ðавит"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Хвала што уградиÑте Ðавит!\n"
-"\n"
-"За почетак, изаберите „Преузмите карте“ из изборника ради преузимања карте. "
-"Примедба: Карта може бити велика (>50MB) - бежична веза је препоручена.\n"
-"\n"
-"Подаци о картама: доприноÑиоци (c) OpenStreetMap-а\n"
-"\n"
-"Уживајте у Ðавиту!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "У реду"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Још података"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Приближи"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Удаљи"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Преузми карте"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "Прекидач употребе занимљивих тачака"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Изађи из Ðавита"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "ОÑтава / повратак Ñа ње"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Да ли избриÑати ову карту?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Преузимам:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "ДеÑила Ñе грешка при преузимању карте."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Преузимање карте је отказано"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Ðема положаја. Отварам поново по иÑправци положаја."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Карте које Ñадрже тренутни положај"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Претрага адреÑа"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "УнеÑите одредиште"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "Упореди непотпуну адреÑу"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Претрага..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Ðије пронађена адреÑа"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Добављам излазе претраге"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Учитавам излазе претраге"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Ðема излаза претраге"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Ðема унетог текÑта"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "ПоÑтављам одредиште на:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Изаберите радњу"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Молим, утакните СД картицу"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Чувам у оÑтаву..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Враћам из оÑтаве..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "ÐиÑам уÑпео да образујем фаÑциклу оÑтаве"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Чување у оÑтаву није уÑпело"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "ÐиÑам пронашао оÑтаву"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "ÐиÑам уÑпео да вратим податке из оÑтаве"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Чување у оÑтаву је уÑпешно"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Враћање из оÑтаве је уÑпешно\n"
-"Молим, поново покрените Ðавит"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Ðије пронађена оÑтава"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Ðије уÑпео повраћај из оÑтаве"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Изаберите податке за повраћај"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "ОÑтава"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "Поврати"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "потом напутÑтите обилазницу на %1$s %2$s"
diff --git a/po/sv.po.in b/po/sv.po.in
deleted file mode 100644
index 8a4a292c4..000000000
--- a/po/sv.po.in
+++ /dev/null
@@ -1,2746 +0,0 @@
-# Swedish translations for navit
-# Copyright (C) 2006-2015 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Erik Lundin https://launchpad.net/~erik-lundin
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Mikael Olofsson https://launchpad.net/~michlos
-# Mikko Virkkilä https://launchpad.net/~virkkila
-# Squall Leonhart https://launchpad.net/~webmaster-square-one
-# nairobie https://launchpad.net/~samuel-ostman
-# pipe https://launchpad.net/~pipatron
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:00+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Swedish <sv@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: sv\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Körs från källkodsbiblioteket\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "sätter '%s' till '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "nollte"
-
-msgid "first"
-msgstr "första"
-
-msgid "second"
-msgstr "andra"
-
-msgid "third"
-msgstr "tredje"
-
-msgid "fourth"
-msgstr "fjärde"
-
-msgid "fifth"
-msgstr "femte"
-
-msgid "sixth"
-msgstr "sjätte"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "ingen avfart"
-
-msgid "first exit"
-msgstr "första avfarten"
-
-msgid "second exit"
-msgstr "andra avfarten"
-
-msgid "third exit"
-msgstr "tredje avfarten"
-
-msgid "fourth exit"
-msgstr "fjärde avfarten"
-
-msgid "fifth exit"
-msgstr "femte avfarten"
-
-msgid "sixth exit"
-msgstr "sjätte avfarten"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d meter"
-
-#, c-format
-msgid "in %d meters"
-msgstr "om %d meter"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d,%d kilometer"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "om %d,%d kilometer"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "en kilometer"
-msgstr[1] "%d kilometer"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "om en kilometer"
-msgstr[1] "om %d kilometer"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "ut på påfarten"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sin på %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sin på %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sin på %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sin på %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sut på %s"
-
-msgid "When possible, please turn around"
-msgstr "Vänd när det går"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Följ vägen i %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Kör snart in i rondellen"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Kör ut ur rondellen mot %1$s %2$s"
-
-msgid "soon"
-msgstr "snart"
-
-msgid "now"
-msgstr "nu"
-
-msgid "then"
-msgstr "sedan"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "höger"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "vänster"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "lätt "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "tvärt "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Ta %1$s vägen mot %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "efter %i vägar"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Sväng %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "vänd sedan"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "Vänd %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "vänd sedan"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "Vänd %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "följ"
-
-msgid "then you have reached your destination."
-msgstr "sedan har du nått din destination."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Du har nått din destination %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Korsning"
-
-msgid "Exit"
-msgstr "Avfart"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Position"
-
-msgid "Command"
-msgstr "Kommando"
-
-msgid "Length"
-msgstr "Sträcka"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Tid"
-
-msgid "Destination Length"
-msgstr "Sträcka kvar"
-
-msgid "Destination Time"
-msgstr "Restid"
-
-msgid "Roadbook"
-msgstr "Vägbok"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Ange som position"
-
-msgid "Set as destination"
-msgstr "Ange som destination"
-
-msgid "Add as bookmark"
-msgstr "Lägg till som bokmärke"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Punkt 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Skärm koordinat : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Förenade Arabemiraten"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua och Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albanien"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenien"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Nederländska Antillerna"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktis"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikanska Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Österrike"
-
-#. 036
-msgid "Australia"
-msgstr "Australien"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Ã…land"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbajdzjan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnien-Hercegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Belgien"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgarien"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint-Barthélemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Brunei"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brasilien"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvetön"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Vitryssland"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kokosöarna"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo, Demokratiska republiken"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Centralafrikanska republiken"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Schweiz"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Elfenbenskusten"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cooköarna"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Kina"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Kap Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Julön"
-
-#. 196
-msgid "Cyprus"
-msgstr "Cypern"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Tjeckien"
-
-#. 276
-msgid "Germany"
-msgstr "Tyskland"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danmark"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominikanska republiken"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeriet"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estland"
-
-#. 818
-msgid "Egypt"
-msgstr "Egypten"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Västsahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Spanien"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etiopien"
-
-#. 246
-msgid "Finland"
-msgstr "Finland"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falklandsöarna"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronesien, federala staterna"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Färöarna"
-
-#. 250
-msgid "France"
-msgstr "Frankrike"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Storbritannien"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgien"
-
-#. 254
-msgid "French Guiana"
-msgstr "Franska Guyana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Grönland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekvatorialguinea"
-
-#. 300
-msgid "Greece"
-msgstr "Grekland"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Sydgeorgien och Sydsandwichöarna"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard- och McDonaldsöarna"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Kroatien"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Ungern"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesien"
-
-#. 372
-msgid "Ireland"
-msgstr "Irland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isle of Man"
-
-#. 356
-msgid "India"
-msgstr "Indien"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Brittiska territoriet i Indiska Oceanen"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, islamiska republiken"
-
-#. 352
-msgid "Iceland"
-msgstr "Island"
-
-#. 380
-msgid "Italy"
-msgstr "Italien"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordanien"
-
-#. 392
-msgid "Japan"
-msgstr "Japan"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kirgizistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kambodja"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komorerna"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts och Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea, demokratiska folkrepubliken"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea, Republiken"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Caymanöarna"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Demokratiska folkrepubliken Laos"
-
-#. 422
-msgid "Lebanon"
-msgstr "Libanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litauen"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Lettland"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Marocko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldavien, republiken"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (Franksa delen)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshallöarna"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedonien, republiken"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Burma (Myanmar)"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongoliet"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Nordmarianerna"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauretanien"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldiverna"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexiko"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Moçambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Nya Kaledonien"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolkön"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Nederländerna"
-
-#. 578
-msgid "Norway"
-msgstr "Norge"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Nya Zeeland"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Franska Polynesien"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Nya Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Filippinerna"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polen"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre och Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestinska självstyret"
-
-#. 620
-msgid "Portugal"
-msgstr "Portugal"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Rumänien"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbien"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Ryssland"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudiarabien"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Salomonöarna"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychellerna"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Sverige"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Sankta Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenien"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard och Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakien"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "São Tomé och Príncipe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrien"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks- och Caicosöarna"
-
-#. 148
-msgid "Chad"
-msgstr "Tchad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Franska sydterritorierna"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thailand"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tadzjikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Östtimor"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisien"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Turkiet"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad och Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Taiwan, provins i Kina"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Förenta staternas avlägset belägna öar"
-
-#. 840
-msgid "United States"
-msgstr "USA"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikanstaten"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent och Grenadinerna"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Jungfruöarna, brittiska"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Jungfruöarna, amerikanska"
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis och Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Jemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Sydafrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Okänt, lägg till is_in-taggar till dessa städer"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Kartpunkt"
-
-msgid "Car"
-msgstr "Bil"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Land"
-
-msgid "Postal"
-msgstr "Post"
-
-msgid "Town"
-msgstr "Stad"
-
-msgid "District"
-msgstr "Distrikt"
-
-msgid "Street"
-msgstr "Gata"
-
-msgid "Number"
-msgstr "Nummer"
-
-msgid "Enter Destination"
-msgstr "Ange destination"
-
-msgid "Zip Code"
-msgstr "Postnummer"
-
-msgid "City"
-msgstr "Stad"
-
-msgid "District/Township"
-msgstr "Distrikt"
-
-msgid "Map"
-msgstr "Karta"
-
-msgid "Bookmark"
-msgstr "Bokmärke"
-
-msgid "Destination"
-msgstr "Destination"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Visa"
-
-msgid "_Route"
-msgstr "Rutt"
-
-msgid "_Former Destinations"
-msgstr "Tidigare destinationer"
-
-msgid "_Bookmarks"
-msgstr "Bokmärken"
-
-msgid "_Map"
-msgstr "Karta"
-
-msgid "_Layout"
-msgstr "Layout"
-
-msgid "_Projection"
-msgstr "Projektion"
-
-msgid "_Vehicle"
-msgstr "Fordon"
-
-msgid "Zoom_Out"
-msgstr "Zooma ut"
-
-msgid "Decrease zoom level"
-msgstr "Zooma ut"
-
-msgid "Zoom_In"
-msgstr "Zooma in"
-
-msgid "Increase zoom level"
-msgstr "Zooma in"
-
-msgid "_Recalculate"
-msgstr "Gör ny beräkning"
-
-msgid "Redraw map"
-msgstr "Rita om kartan"
-
-msgid "_Info"
-msgstr "Info"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Öppna adressökning"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Avsluta navigering"
-
-msgid "Test"
-msgstr "Testa"
-
-msgid "_Quit"
-msgstr "_Avsluta"
-
-msgid "Quit the application"
-msgstr "Avsluta programmet"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Lås till vägen"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Växlar orientering mot norr eller enligt rörelse"
-
-msgid "_Roadbook"
-msgstr "Vägbok"
-
-msgid "Show/hide route description"
-msgstr "Visa/dölj vägbeskrivning"
-
-msgid "_Autozoom"
-msgstr "Autozoom"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Växla automatisk zoomnivå"
-
-msgid "_Fullscreen"
-msgstr "Helskärm"
-
-msgid "Data"
-msgstr "Data"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NÖ"
-
-msgid "E"
-msgstr "Ö"
-
-msgid "SE"
-msgstr "SÖ"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SV"
-
-msgid "W"
-msgstr "V"
-
-msgid "NW"
-msgstr "NV"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Nej"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Rutt %4.0fkm %02d:%02d Ankomsttid"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Rutt 0000km 0+00:00 Ankomsttid"
-
-msgid "Help"
-msgstr "Hjälp"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Visa i webbläsare"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Gator"
-
-msgid "House numbers"
-msgstr "Husnummer"
-
-msgid "View Attributes"
-msgstr "Visa attribut"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Intressepunkter"
-
-msgid "View on map"
-msgstr "Visa på karta"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Klipp ut bokmärke"
-
-msgid "Copy Bookmark"
-msgstr "Kopiera bokmärke"
-
-msgid "Rename Bookmark"
-msgstr "Byt namn på bokmärke"
-
-msgid "Paste Bookmark"
-msgstr "Klistra in bokmärke"
-
-msgid "Delete Bookmark"
-msgstr "Ta bort bokmärke"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Bokmärken"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Lägg till bokmärkesmapp"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Klistra in bokmärke"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Bokmärk %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Visa satellitstatus"
-
-msgid " Elevation "
-msgstr " Höjd "
-
-msgid " Azimuth "
-msgstr " Riktning "
-
-msgid "Show NMEA Data"
-msgstr "Visa NMEA-data"
-
-msgid "car"
-msgstr "bil"
-
-msgid "bike"
-msgstr "cykel"
-
-msgid "pedestrian"
-msgstr "fotgängare"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Aktuell profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Byt profil till: %s"
-
-msgid "Set as active"
-msgstr "Sätt som aktiv"
-
-msgid "Show Satellite status"
-msgstr "Visa satellitstatus"
-
-msgid "Show NMEA data"
-msgstr "Visa NMEA-data"
-
-msgid "Add Bookmark"
-msgstr "Lägg till bokmärke"
-
-msgid "Rename"
-msgstr "Byt namn"
-
-msgid "About Navit"
-msgstr "Om Navit"
-
-#. Authors
-msgid "By"
-msgstr "Av"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Och alla bakom Navit"
-
-msgid "members and contributors."
-msgstr "medlemmar och alla som bidragit."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Fordon"
-
-msgid "Rules"
-msgstr "Regler"
-
-msgid "Lock on road"
-msgstr "Lås till väg"
-
-msgid "Northing"
-msgstr "Håll norr uppåt"
-
-msgid "Map follows Vehicle"
-msgstr "Kartan följer fordonet"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Kartor"
-
-msgid "Layout"
-msgstr "Layout"
-
-msgid "Height Profile"
-msgstr "Höjdprofil"
-
-msgid "Route Description"
-msgstr "Vägbeskrivning"
-
-msgid "Show Locale"
-msgstr "Visa språk"
-
-msgid "Former Destinations"
-msgstr "Tidigare destinationer"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Meddelande"
-
-msgid "Back"
-msgstr "Tillbaka"
-
-msgid "Back to map"
-msgstr "Tillbaka till kartan"
-
-msgid "Main Menu"
-msgstr "Huvudmeny"
-
-msgid "House number"
-msgstr "Husnummer"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Fordonsposition"
-
-msgid "Main menu"
-msgstr "Huvudmeny"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Visa\n"
-"Karta"
-
-msgid "Settings"
-msgstr "Inställningar"
-
-msgid "Tools"
-msgstr "Verktyg"
-
-msgid "Route"
-msgstr "Rutt"
-
-msgid "About"
-msgstr "Om"
-
-msgid "Quit"
-msgstr "Avsluta"
-
-msgid "Actions"
-msgstr "Åtgärder"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Stoppa\n"
-"Navigering"
-
-msgid "Display"
-msgstr "Visa"
-
-msgid "Fullscreen"
-msgstr "Helskärm"
-
-msgid "Window Mode"
-msgstr "Fönsterläge"
-
-msgid "Description"
-msgstr "Beskrivning"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "häst"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "kör sedan ut ur rondellen mot %1$s %2$s"
diff --git a/po/sw.po.in b/po/sw.po.in
deleted file mode 100644
index d1fe07e31..000000000
--- a/po/sw.po.in
+++ /dev/null
@@ -1,2745 +0,0 @@
-# Swahili translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# HinzundKunz https://launchpad.net/~martin-tlustos
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:00+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Swahili <sw@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: sw\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "ya sifuri"
-
-msgid "first"
-msgstr "ya kwanza"
-
-msgid "second"
-msgstr "ya pili"
-
-msgid "third"
-msgstr "ya tatu"
-
-msgid "fourth"
-msgstr "ya nne"
-
-msgid "fifth"
-msgstr "ya tano"
-
-msgid "sixth"
-msgstr "ya sita"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "exit ya kwanza"
-
-msgid "second exit"
-msgstr "exit ya pili"
-
-msgid "third exit"
-msgstr "exit ya tatu"
-
-msgid "fourth exit"
-msgstr "exit ya nne"
-
-msgid "fifth exit"
-msgstr "exit ya tano"
-
-msgid "sixth exit"
-msgstr "exit ya sita"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "mita %d"
-
-#, c-format
-msgid "in %d meters"
-msgstr "baada ya mita %d"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "kilomita %d.%d"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "baada ya kilomita %d.%d"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "kilomita %d"
-msgstr[1] "kilomita %d"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "baada ya kilomita %d"
-msgstr[1] "baada ya kilomita %d"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%skufuata %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%skufuata %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%skufuata %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%skufuata %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%skufuata %s"
-
-msgid "When possible, please turn around"
-msgstr "Geuka na kurudi nyuma inapowezekana"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Buata barabara kwa %s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Toka kutoka kwenye kipilefti kwenye %1$s %2$s"
-
-msgid "soon"
-msgstr "karibuni"
-
-msgid "now"
-msgstr "sasa"
-
-msgid "then"
-msgstr "halafu"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "kulia"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "kushoto"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "fuata %1$s hadi %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "baada ya barabara %i"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "piga kona %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "halafu utakuwa umefika"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "umelifikia lengo lako %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Ondoka"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "ulipo"
-
-msgid "Command"
-msgstr "Amri"
-
-msgid "Length"
-msgstr "Urefu"
-
-msgid "km"
-msgstr "kilomita"
-
-msgid "m"
-msgstr "mita"
-
-msgid "Time"
-msgstr "Muda"
-
-msgid "Destination Length"
-msgstr "umbali mpaka lengo"
-
-msgid "Destination Time"
-msgstr "saa ya kufika"
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "ndipo ulipo"
-
-msgid "Set as destination"
-msgstr "chagua kama lengo"
-
-msgid "Add as bookmark"
-msgstr "hifadhi kama bookmark"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Muungano wa Falme za Nchi za Kiarabu"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistani"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr "Antaktika"
-
-#. 032
-msgid "Argentina"
-msgstr "Ajentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "Marekani ya Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr "Viziwa vya Alandi"
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia na Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr "Ubelgiji"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr "Visiwa vya Bahama"
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Kisiwa cha Bouvet"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Kisiwa cha Cocos (Keeling)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr "Jamhuri ya Afrika ya Kati"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "Uswisi"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "China"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kosta Rika"
-
-#. 192
-msgid "Cuba"
-msgstr "Kuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Kisiwa cha Christmas"
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr "Jamhuri ya Czech"
-
-#. 276
-msgid "Germany"
-msgstr "Ujerumani"
-
-#. 262
-msgid "Djibouti"
-msgstr "Jibuti"
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Jamhuri ya Dominikan"
-
-#. 012
-msgid "Algeria"
-msgstr "Aljeria"
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr "Misri"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Sahara ya magharibi"
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr "Uhispania"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Ethiopia"
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr "Ufaransa"
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr "Uingereza"
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Guinea ya Ikweta"
-
-#. 300
-msgid "Greece"
-msgstr "Ugiriki"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungaria"
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr "Uhindi"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Uingereza katika Bahari Hindi"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraki"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr "Italia"
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr "Ujapani"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr "Kampuchea"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Visiwa vya Komoro"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Korea ya Kaskazini"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Korea ya Kusini"
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr "Lebanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luksemburg"
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Moroko"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Meksiko"
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr "Msumbiji"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr "Uholanzi"
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "eneo kwenye ramani"
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr "Wilaya"
-
-msgid "Street"
-msgstr "mtaa"
-
-msgid "Number"
-msgstr "Namba"
-
-msgid "Enter Destination"
-msgstr "andika lengo"
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr "Mji"
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr "ramani"
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr "lengo"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr "chora ramani kwa upya"
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "fungua pa kutafutia lengo"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr "jaribisha"
-
-msgid "_Quit"
-msgstr "funga"
-
-msgid "Quit the application"
-msgstr "funga app"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr "onyesha orodha ya maelekezo"
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "njia %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr "Msaada"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "barabara"
-
-msgid "House numbers"
-msgstr "namba za nyumba"
-
-msgid "View Attributes"
-msgstr "angalia sifa"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr "angalia kwenye ramani"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "onyesha mawasiliano ya gps"
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr "gari"
-
-msgid "bike"
-msgstr "baiskeli"
-
-msgid "pedestrian"
-msgstr "mtembeaji"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "mbinu inayotumiwa: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "badilisha mbinu kwenda %s"
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr "onyesha mawasiliano ya gps"
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr "Badilisha jina"
-
-msgid "About Navit"
-msgstr "kuhusu navit"
-
-#. Authors
-msgid "By"
-msgstr "kwa"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "na timu yote ya navit"
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "gari"
-
-msgid "Rules"
-msgstr "kanuni"
-
-msgid "Lock on road"
-msgstr "fungisha kwenye barabara"
-
-msgid "Northing"
-msgstr "angalia kaskazini"
-
-msgid "Map follows Vehicle"
-msgstr "ramani inafuata kisafirisho"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "ramani"
-
-msgid "Layout"
-msgstr "Mpangilio"
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "maelekezo ya njia"
-
-msgid "Show Locale"
-msgstr "onyesha lugha"
-
-msgid "Former Destinations"
-msgstr "malengo yaliyopita"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Ujumbe"
-
-msgid "Back"
-msgstr "Nyuma"
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr "menyu kuu"
-
-msgid "House number"
-msgstr "namba ya nyumba"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "mahali pa kisafirisho"
-
-msgid "Main menu"
-msgstr "menyu kuu"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr "onyesha ramani"
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr "vifaa"
-
-msgid "Route"
-msgstr "njia"
-
-msgid "About"
-msgstr "Kuhusu"
-
-msgid "Quit"
-msgstr "Aga"
-
-msgid "Actions"
-msgstr "Vitendo"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr "simamisha kuelekeza"
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr "Skrini-yote"
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Ufafanuzi"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "farasi"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "halafu toka kutoka kwenye kipilefti kwenye %1$s %2$s"
diff --git a/po/ta.po.in b/po/ta.po.in
deleted file mode 100644
index 74ba7a104..000000000
--- a/po/ta.po.in
+++ /dev/null
@@ -1,2741 +0,0 @@
-# Tamil translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Dinesh Ramalingam https://launchpad.net/~dinodinu+navit
-# Rajiv Subrahmanyam https://launchpad.net/~rajiv-public
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2013-09-04 00:29+0000\n"
-"Last-Translator: Dinesh Ramalingam <Unknown>\n"
-"Language-Team: Tamil <ta@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: ta\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "'%s', '%s' ஆக மாறà¯à®±à®ªà®Ÿà¯à®•à®¿à®©à¯à®±à®¤à¯\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr "à®®à¯à®¤à®²à¯"
-
-msgid "second"
-msgstr "இரணà¯à®Ÿà®¾à®µà®¤à¯"
-
-msgid "third"
-msgstr "மூனà¯à®±à®¾à®µà®¤à¯"
-
-msgid "fourth"
-msgstr "நானà¯à®•à®¾à®µà®¤à¯"
-
-msgid "fifth"
-msgstr "à®à®¨à¯à®¤à®¾à®µà®¤à¯"
-
-msgid "sixth"
-msgstr "ஆறாவதà¯"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr "à®®à¯à®¤à®²à¯ வெளியேறà¯à®±à®®à¯"
-
-msgid "second exit"
-msgstr "இரணà¯à®Ÿà®¾à®µà®¤à¯ வெளியேறà¯à®±à®®à¯"
-
-msgid "third exit"
-msgstr "மூனà¯à®±à®¾à®µà®¤à¯ வெளியேறà¯à®±à®®à¯"
-
-msgid "fourth exit"
-msgstr "நானà¯à®•à®¾à®µà®¤à¯ வெளியேறà¯à®±à®®à¯"
-
-msgid "fifth exit"
-msgstr "à®à®¨à¯à®¤à®¾à®µà®¤à¯ வெளியேறà¯à®±à®®à¯"
-
-msgid "sixth exit"
-msgstr "à®à®¨à¯à®¤à®¾à®µà®¤à¯ வெளியேறà¯à®±à®®à¯"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d மீடà¯à®Ÿà®°à¯à®•à®³à¯"
-
-#, c-format
-msgid "in %d meters"
-msgstr "%d மீடà¯à®Ÿà®°à¯à®•à¯à®•à¯à®³à¯"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d கிலோமீடà¯à®Ÿà®°à¯à®•à®³à¯."
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d.%d கிலோமீடà¯à®Ÿà®°à¯à®•à¯à®•à¯à®³à¯"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "ஒர௠கிலோமீடà¯à®Ÿà®°à¯"
-msgstr[1] "%d கிலோமீடà¯à®Ÿà®°à¯à®•à®³à¯"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "ஒர௠கிலோமீடà¯à®Ÿà®°à¯à®•à¯à®•à¯à®³à¯"
-msgstr[1] "%d கிலோமீடà¯à®Ÿà®°à¯à®•à®³à¯à®•à¯à®•à¯à®³à¯"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "%s கà¯à®•à¯ இதே தெரà¯à®µà®¿à®²à¯ செலà¯à®²à®µà¯à®®à¯"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "சீகà¯à®•à®¿à®°à®®à®¾à®•"
-
-msgid "now"
-msgstr "இபà¯à®ªà¯Šà®´à¯à®¤à¯"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr ""
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr ""
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "இயலà¯à®ªà®¾à®• "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr ""
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr ""
-
-msgid "Length"
-msgstr ""
-
-msgid "km"
-msgstr ""
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr ""
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr ""
-
-#. 784
-msgid "United Arab Emirates"
-msgstr ""
-
-#. 004
-msgid "Afghanistan"
-msgstr ""
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr ""
-
-#. 051
-msgid "Armenia"
-msgstr ""
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr ""
-
-#. 010
-msgid "Antarctica"
-msgstr ""
-
-#. 032
-msgid "Argentina"
-msgstr ""
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr ""
-
-#. 056
-msgid "Belgium"
-msgstr ""
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr ""
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr ""
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr ""
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr ""
-
-#. 044
-msgid "Bahamas"
-msgstr ""
-
-#. 064
-msgid "Bhutan"
-msgstr ""
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr ""
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr ""
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr ""
-
-#. 178
-msgid "Congo"
-msgstr ""
-
-#. 756
-msgid "Switzerland"
-msgstr ""
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr ""
-
-#. 120
-msgid "Cameroon"
-msgstr ""
-
-#. 156
-msgid "China"
-msgstr ""
-
-#. 170
-msgid "Colombia"
-msgstr ""
-
-#. 188
-msgid "Costa Rica"
-msgstr ""
-
-#. 192
-msgid "Cuba"
-msgstr ""
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr ""
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr ""
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr ""
-
-#. 212
-msgid "Dominica"
-msgstr ""
-
-#. 214
-msgid "Dominican Republic"
-msgstr ""
-
-#. 012
-msgid "Algeria"
-msgstr ""
-
-#. 218
-msgid "Ecuador"
-msgstr ""
-
-#. 233
-msgid "Estonia"
-msgstr ""
-
-#. 818
-msgid "Egypt"
-msgstr ""
-
-#. 732
-msgid "Western Sahara"
-msgstr ""
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr ""
-
-#. 231
-msgid "Ethiopia"
-msgstr ""
-
-#. 246
-msgid "Finland"
-msgstr ""
-
-#. 242
-msgid "Fiji"
-msgstr ""
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr ""
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr ""
-
-#. 254
-msgid "French Guiana"
-msgstr ""
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr ""
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr ""
-
-#. 270
-msgid "Gambia"
-msgstr ""
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr ""
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr ""
-
-#. 344
-msgid "Hong Kong"
-msgstr ""
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr ""
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr ""
-
-#. 360
-msgid "Indonesia"
-msgstr ""
-
-#. 372
-msgid "Ireland"
-msgstr ""
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr ""
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr ""
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr ""
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr ""
-
-#. 400
-msgid "Jordan"
-msgstr ""
-
-#. 392
-msgid "Japan"
-msgstr ""
-
-#. 404
-msgid "Kenya"
-msgstr ""
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr ""
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr ""
-
-#. 136
-msgid "Cayman Islands"
-msgstr ""
-
-#. 398
-msgid "Kazakhstan"
-msgstr ""
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr ""
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr ""
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr ""
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr ""
-
-#. 492
-msgid "Monaco"
-msgstr ""
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr ""
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr ""
-
-#. 496
-msgid "Mongolia"
-msgstr ""
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr ""
-
-#. 480
-msgid "Mauritius"
-msgstr ""
-
-#. 462
-msgid "Maldives"
-msgstr ""
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr ""
-
-#. 458
-msgid "Malaysia"
-msgstr ""
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr ""
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr ""
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr ""
-
-#. 524
-msgid "Nepal"
-msgstr ""
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr ""
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr ""
-
-#. 604
-msgid "Peru"
-msgstr ""
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr ""
-
-#. 586
-msgid "Pakistan"
-msgstr ""
-
-#. 616
-msgid "Poland"
-msgstr ""
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr ""
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr ""
-
-#. 634
-msgid "Qatar"
-msgstr ""
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr ""
-
-#. 688
-msgid "Serbia"
-msgstr ""
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr ""
-
-#. 682
-msgid "Saudi Arabia"
-msgstr ""
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr ""
-
-#. 752
-msgid "Sweden"
-msgstr ""
-
-#. 702
-msgid "Singapore"
-msgstr ""
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr ""
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr ""
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr ""
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr ""
-
-#. 764
-msgid "Thailand"
-msgstr ""
-
-#. 762
-msgid "Tajikistan"
-msgstr ""
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr ""
-
-#. 800
-msgid "Uganda"
-msgstr ""
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr ""
-
-#. 858
-msgid "Uruguay"
-msgstr ""
-
-#. 860
-msgid "Uzbekistan"
-msgstr ""
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr ""
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr ""
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr ""
-
-#. 894
-msgid "Zambia"
-msgstr ""
-
-#. 716
-msgid "Zimbabwe"
-msgstr ""
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr ""
-
-msgid "Postal"
-msgstr ""
-
-msgid "Town"
-msgstr ""
-
-msgid "District"
-msgstr ""
-
-msgid "Street"
-msgstr ""
-
-msgid "Number"
-msgstr ""
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr ""
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr ""
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr ""
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr ""
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr ""
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr ""
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr ""
-
-msgid "Data"
-msgstr ""
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr ""
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr ""
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr ""
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/te.po.in b/po/te.po.in
deleted file mode 100644
index eb412a536..000000000
--- a/po/te.po.in
+++ /dev/null
@@ -1,2741 +0,0 @@
-# Telugu translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# వీవెనౠhttps://launchpad.net/~veeven
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2013-09-27 21:48+0000\n"
-"Last-Translator: KaZeR <Unknown>\n"
-"Language-Team: Telugu <te@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: te\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr ""
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr ""
-
-msgid "fifth"
-msgstr ""
-
-msgid "sixth"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr ""
-
-msgid "second exit"
-msgstr ""
-
-msgid "third exit"
-msgstr ""
-
-msgid "fourth exit"
-msgstr ""
-
-msgid "fifth exit"
-msgstr ""
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d మీటరà±à°²à±"
-
-#, c-format
-msgid "in %d meters"
-msgstr ""
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "à°’à°• కిలోమీటరà±"
-msgstr[1] "%d కిలోమీటరà±à°²à±"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] ""
-msgstr[1] ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr ""
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr ""
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "à°¤à±à°µà°°à°²à±‹"
-
-msgid "now"
-msgstr "ఇపà±à°ªà±à°¡à±"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "à°•à±à°¡à°¿"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "à°Žà°¡à°®"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "తేలికగా "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "మీరౠమీ à°—à°®à±à°¯à°¸à±à°¥à°¾à°¨à°‚ %s చేరారà±"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr ""
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr "ఆదేశం"
-
-msgid "Length"
-msgstr "పొడవà±"
-
-msgid "km"
-msgstr "కిమీ"
-
-msgid "m"
-msgstr ""
-
-msgid "Time"
-msgstr "సమయం"
-
-msgid "Destination Length"
-msgstr ""
-
-msgid "Destination Time"
-msgstr ""
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr ""
-
-msgid "Set as destination"
-msgstr ""
-
-msgid "Add as bookmark"
-msgstr ""
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr ""
-
-#. 020
-msgid "Andorra"
-msgstr "అండోరా"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "à°¯à±à°¨à±ˆà°Ÿà±†à°¡à± అరబౠఎమిరేటà±à°¸à±"
-
-#. 004
-msgid "Afghanistan"
-msgstr "ఆఫà±à°˜à°¨à°¿à°¸à±à°¤à°¾à°¨à±"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr ""
-
-#. 660
-msgid "Anguilla"
-msgstr ""
-
-#. 008
-msgid "Albania"
-msgstr "à°…à°²à±à°¬à±‡à°¨à°¿à°¯à°¾"
-
-#. 051
-msgid "Armenia"
-msgstr "à°…à°°à±à°®à±‡à°¨à°¿à°¯à°¾"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr ""
-
-#. 024
-msgid "Angola"
-msgstr "అంగోలా"
-
-#. 010
-msgid "Antarctica"
-msgstr "అంటారà±à°•à°¿à°Ÿà°¿à°•à°¾"
-
-#. 032
-msgid "Argentina"
-msgstr "à°…à°°à±à°œà±†à°‚టీనా"
-
-#. 016
-msgid "American Samoa"
-msgstr ""
-
-#. 040
-msgid "Austria"
-msgstr ""
-
-#. 036
-msgid "Australia"
-msgstr ""
-
-#. 533
-msgid "Aruba"
-msgstr ""
-
-#. 248
-msgid "Aland Islands"
-msgstr ""
-
-#. 031
-msgid "Azerbaijan"
-msgstr ""
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr ""
-
-#. 052
-msgid "Barbados"
-msgstr ""
-
-#. 050
-msgid "Bangladesh"
-msgstr "బంగà±à°²à°¾à°¦à±‡à°¶à±"
-
-#. 056
-msgid "Belgium"
-msgstr "బెలà±à°œà°¿à°¯à°‚"
-
-#. 854
-msgid "Burkina Faso"
-msgstr ""
-
-#. 100
-msgid "Bulgaria"
-msgstr "బలà±à°—ేరియా"
-
-#. 048
-msgid "Bahrain"
-msgstr ""
-
-#. 108
-msgid "Burundi"
-msgstr ""
-
-#. 204
-msgid "Benin"
-msgstr ""
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr "బెరà±à°®à±à°¡à°¾"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr ""
-
-#. 068
-msgid "Bolivia"
-msgstr "బొలీవియా"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "à°¬à±à°°à±†à°œà°¿à°²à±"
-
-#. 044
-msgid "Bahamas"
-msgstr "బహమాసà±"
-
-#. 064
-msgid "Bhutan"
-msgstr "భూటానà±"
-
-#. 074
-msgid "Bouvet Island"
-msgstr ""
-
-#. 072
-msgid "Botswana"
-msgstr ""
-
-#. 112
-msgid "Belarus"
-msgstr "బెలారసà±"
-
-#. 084
-msgid "Belize"
-msgstr ""
-
-#. 124
-msgid "Canada"
-msgstr "కెనడా"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr ""
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr "మధà±à°¯ ఆఫà±à°°à°¿à°•à°¨à± రిపబà±à°²à°¿à°•à±"
-
-#. 178
-msgid "Congo"
-msgstr "కాంగో"
-
-#. 756
-msgid "Switzerland"
-msgstr "à°¸à±à°µà°¿à°Ÿà±à°œà°°à±à°²à°¾à°‚à°¡à±"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr ""
-
-#. 184
-msgid "Cook Islands"
-msgstr ""
-
-#. 152
-msgid "Chile"
-msgstr "చిలీ"
-
-#. 120
-msgid "Cameroon"
-msgstr "కామెరూనà±"
-
-#. 156
-msgid "China"
-msgstr "చైనా"
-
-#. 170
-msgid "Colombia"
-msgstr "కొలంబియా"
-
-#. 188
-msgid "Costa Rica"
-msgstr "కోసà±à°Ÿà°¾à°°à°¿à°•à°¾"
-
-#. 192
-msgid "Cuba"
-msgstr "à°•à±à°¯à±‚బా"
-
-#. 132
-msgid "Cape Verde"
-msgstr ""
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr ""
-
-#. 196
-msgid "Cyprus"
-msgstr "సైపà±à°°à°¸à±"
-
-#. 203
-msgid "Czech Republic"
-msgstr ""
-
-#. 276
-msgid "Germany"
-msgstr "జరà±à°®à°¨à±€"
-
-#. 262
-msgid "Djibouti"
-msgstr ""
-
-#. 208
-msgid "Denmark"
-msgstr "డెనà±à°®à°¾à°°à±à°•à±"
-
-#. 212
-msgid "Dominica"
-msgstr "డొమినికా"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "డొమినికనౠరిపబà±à°²à°¿à°•à±"
-
-#. 012
-msgid "Algeria"
-msgstr "à°…à°²à±à°œà±€à°°à°¿à°¯à°¾"
-
-#. 218
-msgid "Ecuador"
-msgstr "ఈకà±à°µà°¿à°¡à°¾à°°à±"
-
-#. 233
-msgid "Estonia"
-msgstr "à°Žà°¸à±à°Ÿà±‹à°¨à°¿à°¯à°¾"
-
-#. 818
-msgid "Egypt"
-msgstr "ఈజిపà±à°Ÿà±"
-
-#. 732
-msgid "Western Sahara"
-msgstr "పశà±à°šà°¿à°® సహారా"
-
-#. 232
-msgid "Eritrea"
-msgstr ""
-
-#. 724
-msgid "Spain"
-msgstr "à°¸à±à°ªà±†à°¯à°¿à°¨à±"
-
-#. 231
-msgid "Ethiopia"
-msgstr "ఇథియోపియా"
-
-#. 246
-msgid "Finland"
-msgstr "à°«à°¿à°¨à±à°²à°¾à°‚à°¡à±"
-
-#. 242
-msgid "Fiji"
-msgstr "ఫిజీ"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr ""
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr ""
-
-#. 234
-msgid "Faroe Islands"
-msgstr ""
-
-#. 250
-msgid "France"
-msgstr "à°«à±à°°à°¾à°¨à±à°¸à±"
-
-#. 266
-msgid "Gabon"
-msgstr ""
-
-#. 826
-msgid "United Kingdom"
-msgstr ""
-
-#. 308
-msgid "Grenada"
-msgstr ""
-
-#. 268
-msgid "Georgia"
-msgstr "జారà±à°œà°¿à°¯à°¾"
-
-#. 254
-msgid "French Guiana"
-msgstr "à°«à±à°°à±†à°‚చౠగయానా"
-
-#. 831
-msgid "Guernsey"
-msgstr ""
-
-#. 288
-msgid "Ghana"
-msgstr "ఘనా"
-
-#. 292
-msgid "Gibraltar"
-msgstr ""
-
-#. 304
-msgid "Greenland"
-msgstr "à°—à±à°°à±€à°¨à±â€Œà°²à°¾à°‚à°¡à±"
-
-#. 270
-msgid "Gambia"
-msgstr "జాంబియా"
-
-#. 324
-msgid "Guinea"
-msgstr ""
-
-#. 312
-msgid "Guadeloupe"
-msgstr ""
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr ""
-
-#. 300
-msgid "Greece"
-msgstr "à°—à±à°°à±€à°¸à±"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr ""
-
-#. 320
-msgid "Guatemala"
-msgstr ""
-
-#. 316
-msgid "Guam"
-msgstr ""
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr ""
-
-#. 328
-msgid "Guyana"
-msgstr "గయానా"
-
-#. 344
-msgid "Hong Kong"
-msgstr "హాంకాంగà±"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr ""
-
-#. 340
-msgid "Honduras"
-msgstr ""
-
-#. 191
-msgid "Croatia"
-msgstr "à°•à±à°°à±‹à°¯à±‡à°·à°¿à°¯à°¾"
-
-#. 332
-msgid "Haiti"
-msgstr ""
-
-#. 348
-msgid "Hungary"
-msgstr "హంగరీ"
-
-#. 360
-msgid "Indonesia"
-msgstr "ఇండోనేషియా"
-
-#. 372
-msgid "Ireland"
-msgstr "à°à°°à±à°²à°¾à°‚à°¡à±"
-
-#. 376
-msgid "Israel"
-msgstr ""
-
-#. 833
-msgid "Isle of Man"
-msgstr ""
-
-#. 356
-msgid "India"
-msgstr "భారతదేశం"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr ""
-
-#. 368
-msgid "Iraq"
-msgstr "ఇరాకà±"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr ""
-
-#. 380
-msgid "Italy"
-msgstr "ఇటలీ"
-
-#. 832
-msgid "Jersey"
-msgstr ""
-
-#. 388
-msgid "Jamaica"
-msgstr "జమైకా"
-
-#. 400
-msgid "Jordan"
-msgstr "జోరà±à°¡à°¾à°¨à±"
-
-#. 392
-msgid "Japan"
-msgstr "జపానà±"
-
-#. 404
-msgid "Kenya"
-msgstr "కెనà±à°¯à°¾"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr ""
-
-#. 116
-msgid "Cambodia"
-msgstr "కాంబోడియా"
-
-#. 296
-msgid "Kiribati"
-msgstr ""
-
-#. 174
-msgid "Comoros"
-msgstr ""
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr ""
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr ""
-
-#. 410
-msgid "Korea, Republic of"
-msgstr ""
-
-#. 414
-msgid "Kuwait"
-msgstr "à°•à±à°µà±ˆà°Ÿà±"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "కేమనౠదీవà±à°²à±"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "కజకిసà±à°¤à°¾à°¨à±"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr ""
-
-#. 422
-msgid "Lebanon"
-msgstr "లెబనానà±"
-
-#. 662
-msgid "Saint Lucia"
-msgstr ""
-
-#. 438
-msgid "Liechtenstein"
-msgstr ""
-
-#. 144
-msgid "Sri Lanka"
-msgstr "à°¶à±à°°à±€à°²à°‚à°•"
-
-#. 430
-msgid "Liberia"
-msgstr ""
-
-#. 426
-msgid "Lesotho"
-msgstr ""
-
-#. 440
-msgid "Lithuania"
-msgstr ""
-
-#. 442
-msgid "Luxembourg"
-msgstr ""
-
-#. 428
-msgid "Latvia"
-msgstr "లాతà±à°µà°¿à°¯à°¾"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "మొరాకో"
-
-#. 492
-msgid "Monaco"
-msgstr "మొనాకో"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr ""
-
-#. 499
-msgid "Montenegro"
-msgstr ""
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr ""
-
-#. 450
-msgid "Madagascar"
-msgstr "మడగాసà±à°•à°°à±"
-
-#. 584
-msgid "Marshall Islands"
-msgstr ""
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr ""
-
-#. 104
-msgid "Myanmar"
-msgstr "మియనà±à°®à°¾à°°à±"
-
-#. 496
-msgid "Mongolia"
-msgstr "మంగోలియా"
-
-#. 446
-msgid "Macao"
-msgstr ""
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr ""
-
-#. 474
-msgid "Martinique"
-msgstr ""
-
-#. 478
-msgid "Mauritania"
-msgstr ""
-
-#. 500
-msgid "Montserrat"
-msgstr ""
-
-#. 470
-msgid "Malta"
-msgstr "మాలà±à°Ÿà°¾"
-
-#. 480
-msgid "Mauritius"
-msgstr "మారిషసà±"
-
-#. 462
-msgid "Maldives"
-msgstr "మాలà±à°¦à±€à°µà±à°²à±"
-
-#. 454
-msgid "Malawi"
-msgstr ""
-
-#. 484
-msgid "Mexico"
-msgstr "మెకà±à°¸à°¿à°•à±‹"
-
-#. 458
-msgid "Malaysia"
-msgstr "మలేషియా"
-
-#. 508
-msgid "Mozambique"
-msgstr ""
-
-#. 516
-msgid "Namibia"
-msgstr "నమీబియా"
-
-#. 540
-msgid "New Caledonia"
-msgstr ""
-
-#. 562
-msgid "Niger"
-msgstr ""
-
-#. 574
-msgid "Norfolk Island"
-msgstr ""
-
-#. 566
-msgid "Nigeria"
-msgstr "నైజీరియా"
-
-#. 558
-msgid "Nicaragua"
-msgstr ""
-
-#. 528
-msgid "Netherlands"
-msgstr ""
-
-#. 578
-msgid "Norway"
-msgstr "నారà±à°µà±‡"
-
-#. 524
-msgid "Nepal"
-msgstr "నేపాలà±"
-
-#. 520
-msgid "Nauru"
-msgstr ""
-
-#. 570
-msgid "Niue"
-msgstr ""
-
-#. 554
-msgid "New Zealand"
-msgstr "à°¨à±à°¯à±‚జిలాండà±"
-
-#. 512
-msgid "Oman"
-msgstr ""
-
-#. 591
-msgid "Panama"
-msgstr "పనామా"
-
-#. 604
-msgid "Peru"
-msgstr "పెరూ"
-
-#. 258
-msgid "French Polynesia"
-msgstr ""
-
-#. 598
-msgid "Papua New Guinea"
-msgstr ""
-
-#. 608
-msgid "Philippines"
-msgstr "ఫిలిపà±à°«à±€à°¨à±à°¸à±"
-
-#. 586
-msgid "Pakistan"
-msgstr "పాకిసà±à°¤à°¾à°¨à±"
-
-#. 616
-msgid "Poland"
-msgstr "పోలాండà±"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr ""
-
-#. 612
-msgid "Pitcairn"
-msgstr ""
-
-#. 630
-msgid "Puerto Rico"
-msgstr ""
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr ""
-
-#. 620
-msgid "Portugal"
-msgstr "పోరà±à°šà±à°—à°²à±"
-
-#. 585
-msgid "Palau"
-msgstr ""
-
-#. 600
-msgid "Paraguay"
-msgstr "పరాగà±à°µà±‡"
-
-#. 634
-msgid "Qatar"
-msgstr "ఖతారà±"
-
-#. 638
-msgid "Reunion"
-msgstr ""
-
-#. 642
-msgid "Romania"
-msgstr "రొమేనియా"
-
-#. 688
-msgid "Serbia"
-msgstr "సెరà±à°¬à°¿à°¯à°¾"
-
-#. 643
-msgid "Russian Federation"
-msgstr ""
-
-#. 646
-msgid "Rwanda"
-msgstr "à°°à±à°µà°¾à°‚à°¡à°¾"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "సౌది అరేబియా"
-
-#. 090
-msgid "Solomon Islands"
-msgstr ""
-
-#. 690
-msgid "Seychelles"
-msgstr ""
-
-#. 736
-msgid "Sudan"
-msgstr "సూడానà±"
-
-#. 752
-msgid "Sweden"
-msgstr "à°¸à±à°µà±€à°¡à°¨à±"
-
-#. 702
-msgid "Singapore"
-msgstr "సింగపూరà±"
-
-#. 654
-msgid "Saint Helena"
-msgstr ""
-
-#. 705
-msgid "Slovenia"
-msgstr ""
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr ""
-
-#. 703
-msgid "Slovakia"
-msgstr "à°¸à±à°²à±Šà°µà±‡à°•à°¿à°¯à°¾"
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr ""
-
-#. 686
-msgid "Senegal"
-msgstr ""
-
-#. 706
-msgid "Somalia"
-msgstr "సోమాలియా"
-
-#. 740
-msgid "Suriname"
-msgstr ""
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr ""
-
-#. 222
-msgid "El Salvador"
-msgstr ""
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr ""
-
-#. 748
-msgid "Swaziland"
-msgstr "à°¸à±à°µà°¾à°œà°¿à°²à°¾à°‚à°¡à±"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr ""
-
-#. 148
-msgid "Chad"
-msgstr ""
-
-#. 260
-msgid "French Southern Territories"
-msgstr ""
-
-#. 768
-msgid "Togo"
-msgstr "టోగో"
-
-#. 764
-msgid "Thailand"
-msgstr "థాయిలాండà±"
-
-#. 762
-msgid "Tajikistan"
-msgstr "తజకిసà±à°¤à°¾à°¨à±"
-
-#. 772
-msgid "Tokelau"
-msgstr ""
-
-#. 626
-msgid "Timor-Leste"
-msgstr ""
-
-#. 795
-msgid "Turkmenistan"
-msgstr ""
-
-#. 788
-msgid "Tunisia"
-msgstr ""
-
-#. 776
-msgid "Tonga"
-msgstr ""
-
-#. 792
-msgid "Turkey"
-msgstr ""
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr ""
-
-#. 798
-msgid "Tuvalu"
-msgstr ""
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr ""
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr ""
-
-#. 804
-msgid "Ukraine"
-msgstr "ఉకà±à°°à±‡à°¯à°¿à°¨à±"
-
-#. 800
-msgid "Uganda"
-msgstr "ఉగాండా"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr ""
-
-#. 840
-msgid "United States"
-msgstr "à°¯à±à°¨à±ˆà°Ÿà±†à°¡à± à°¸à±à°Ÿà±‡à°Ÿà±à°¸à± ఆఫౠఅమెరికా"
-
-#. 858
-msgid "Uruguay"
-msgstr "ఉరూగà±à°µà±‡"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "ఉజà±à°¬à±†à°•à°¿à°¸à±à°¤à°¾à°¨à±"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr ""
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr ""
-
-#. 862
-msgid "Venezuela"
-msgstr "వెనిజà±à°²à°¾"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr ""
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr ""
-
-#. 704
-msgid "Viet Nam"
-msgstr "వియతà±à°¨à°¾à°‚"
-
-#. 548
-msgid "Vanuatu"
-msgstr ""
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr ""
-
-#. 882
-msgid "Samoa"
-msgstr ""
-
-#. 887
-msgid "Yemen"
-msgstr ""
-
-#. 175
-msgid "Mayotte"
-msgstr ""
-
-#. 710
-msgid "South Africa"
-msgstr "దకà±à°·à°¿à°£ ఆఫà±à°°à°¿à°•à°¾"
-
-#. 894
-msgid "Zambia"
-msgstr "జాంబియా"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "జింబాబà±à°µà±‡"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr ""
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr "దేశం"
-
-msgid "Postal"
-msgstr "తపాలా"
-
-msgid "Town"
-msgstr "పటà±à°Ÿà°£à°‚"
-
-msgid "District"
-msgstr "జిలà±à°²à°¾"
-
-msgid "Street"
-msgstr "వీధి"
-
-msgid "Number"
-msgstr "సంఖà±à°¯"
-
-msgid "Enter Destination"
-msgstr ""
-
-msgid "Zip Code"
-msgstr ""
-
-msgid "City"
-msgstr "నగరం"
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr "పటం"
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr "à°—à°®à±à°¯à°‚"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr ""
-
-msgid "_Route"
-msgstr ""
-
-msgid "_Former Destinations"
-msgstr ""
-
-msgid "_Bookmarks"
-msgstr "పేజీకలà±"
-
-msgid "_Map"
-msgstr "పటం"
-
-msgid "_Layout"
-msgstr "కూరà±à°ªà±"
-
-msgid "_Projection"
-msgstr ""
-
-msgid "_Vehicle"
-msgstr "వాహనం"
-
-msgid "Zoom_Out"
-msgstr ""
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr ""
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr "సమాచారం"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr ""
-
-msgid "Test"
-msgstr "పరీకà±à°·"
-
-msgid "_Quit"
-msgstr ""
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "నిండౠతెర"
-
-msgid "Data"
-msgstr "దతà±à°¤à°¾à°‚శం"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr ""
-
-msgid "NE"
-msgstr ""
-
-msgid "E"
-msgstr ""
-
-msgid "SE"
-msgstr ""
-
-msgid "S"
-msgstr ""
-
-msgid "SW"
-msgstr ""
-
-msgid "W"
-msgstr ""
-
-msgid "NW"
-msgstr ""
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr ""
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr ""
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "పేజీకలà±"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "వాహనం"
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr ""
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr "కూరà±à°ªà±"
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr ""
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr ""
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr ""
-
-msgid "Fullscreen"
-msgstr "నిండౠతెర"
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/th.po.in b/po/th.po.in
deleted file mode 100644
index 58ac0335d..000000000
--- a/po/th.po.in
+++ /dev/null
@@ -1,2738 +0,0 @@
-# Thai translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# mansv68 https://launchpad.net/~mansv68
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:01+0000\n"
-"Last-Translator: mansv68 <mansv68@yahoo.co.th>\n"
-"Language-Team: Thai <th@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: th\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "à¸à¸³à¸«à¸™à¸” '%s' ถึง '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr ""
-
-msgid "first"
-msgstr ""
-
-msgid "second"
-msgstr ""
-
-msgid "third"
-msgstr ""
-
-msgid "fourth"
-msgstr ""
-
-msgid "fifth"
-msgstr ""
-
-msgid "sixth"
-msgstr ""
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr ""
-
-msgid "first exit"
-msgstr ""
-
-msgid "second exit"
-msgstr ""
-
-msgid "third exit"
-msgstr ""
-
-msgid "fourth exit"
-msgstr ""
-
-msgid "fifth exit"
-msgstr ""
-
-msgid "sixth exit"
-msgstr ""
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d เมตร"
-
-#, c-format
-msgid "in %d meters"
-msgstr "อีภ%d เมตร"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "อีภ%d.%d à¸à¸´à¹‚ลเมตร"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d à¸à¸´à¹‚ลเมตร"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "อีภ%d à¸à¸´à¹‚ลเมตร"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sเข้าสู่ถนน %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sเข้าสู่ %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sเข้าสู %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sเข้าสู่ %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr ""
-
-msgid "When possible, please turn around"
-msgstr "ถ้าเป็นไปได้ ให้à¸à¸¥à¸±à¸šà¸£à¸–"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "ตรงไปตามถนน à¹à¸¥à¹‰à¸§ %s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr ""
-
-msgid "soon"
-msgstr "ในไม่ช้า"
-
-msgid "now"
-msgstr "เดี๋ยวนี้"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "ขวา"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "ซ้าย"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr ""
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "อย่างเคร่งคัด "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "after %i roads"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "คุณได้ถึงที่หมายà¹à¸¥à¹‰à¸§ %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "ทางออà¸"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr ""
-
-msgid "Command"
-msgstr "คำสั่ง"
-
-msgid "Length"
-msgstr "ความยาว"
-
-msgid "km"
-msgstr "à¸à¸¡."
-
-msgid "m"
-msgstr "เมตร"
-
-msgid "Time"
-msgstr "เวลา"
-
-msgid "Destination Length"
-msgstr "ระยะทาง ถึงที่หมาย"
-
-msgid "Destination Time"
-msgstr "เวลา ถึงที่หมาย"
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "à¸à¸³à¸«à¸™à¸”ตำà¹à¸«à¸™à¹ˆà¸‡"
-
-msgid "Set as destination"
-msgstr "à¸à¸³à¸«à¸™à¸”เป็นที่หมาย"
-
-msgid "Add as bookmark"
-msgstr "เพิ่มใน บุà¸à¸¡à¸²à¸£à¹Œà¸"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "จุด 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "พิà¸à¸±à¸”หน้าจอ : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "à¹à¸­à¸™à¹‚ดรา"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "สหรัà¸à¸­à¸²à¸«à¸£à¸±à¸šà¸­à¸µà¸¡à¸´à¹€à¸£à¸•à¸ªà¹Œ"
-
-#. 004
-msgid "Afghanistan"
-msgstr "อาฟà¸à¸²à¸™à¸´à¸ªà¸–าน"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "อันทิà¸à¸±à¸§ à¹à¸¥à¸° บาร์บูดา"
-
-#. 660
-msgid "Anguilla"
-msgstr "à¹à¸­à¸‡à¸à¸µà¸¥à¸²"
-
-#. 008
-msgid "Albania"
-msgstr "อัลเบเนีย"
-
-#. 051
-msgid "Armenia"
-msgstr "อาร์เมเนีย"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "เนเธอร์à¹à¸¥à¸™à¸”์ à¹à¸­à¸™à¸—ิลีส"
-
-#. 024
-msgid "Angola"
-msgstr "à¹à¸­à¸‡à¹‚à¸à¸¥à¸²"
-
-#. 010
-msgid "Antarctica"
-msgstr "à¹à¸­à¸™à¸•à¸²à¸£à¹Œà¸à¸•à¸´à¸à¸²"
-
-#. 032
-msgid "Argentina"
-msgstr "อาร์เจนตินา"
-
-#. 016
-msgid "American Samoa"
-msgstr "อเมริà¸à¸±à¸™ ซามัว"
-
-#. 040
-msgid "Austria"
-msgstr "ออสเตรีย"
-
-#. 036
-msgid "Australia"
-msgstr "ออสเตรเลีย"
-
-#. 533
-msgid "Aruba"
-msgstr "อรูบา"
-
-#. 248
-msgid "Aland Islands"
-msgstr "เà¸à¸²à¸° เอà¹à¸¥à¸™à¸”์"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "อาร์เซอร์ไบจัน"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "บอสเนียà¹à¸¥à¸°à¹€à¸®à¸­à¸£à¹Œà¹€à¸‹à¹‚à¸à¸§à¸´à¸™à¸²"
-
-#. 052
-msgid "Barbados"
-msgstr "บาร์บาดอส"
-
-#. 050
-msgid "Bangladesh"
-msgstr "บังคลาเทศ"
-
-#. 056
-msgid "Belgium"
-msgstr "เบลเยียม"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "เบอร์à¸à¸´à¸™à¸²à¸Ÿà¸²à¹‚ซ"
-
-#. 100
-msgid "Bulgaria"
-msgstr "บัลà¹à¸à¹€à¸£à¸µà¸¢"
-
-#. 048
-msgid "Bahrain"
-msgstr "บาห์เรียน"
-
-#. 108
-msgid "Burundi"
-msgstr "บูรันดิ"
-
-#. 204
-msgid "Benin"
-msgstr "เบนิน"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr ""
-
-#. 060
-msgid "Bermuda"
-msgstr "เบอร์มิวดา"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "บรูไนดูรัสซาลาม"
-
-#. 068
-msgid "Bolivia"
-msgstr "โบลิเวีย"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "บราซิล"
-
-#. 044
-msgid "Bahamas"
-msgstr "บาฮามา"
-
-#. 064
-msgid "Bhutan"
-msgstr "ภูà¸à¸²à¸™"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "เà¸à¸²à¸°à¸šà¸¹à¹€à¸§à¸•à¹Œ"
-
-#. 072
-msgid "Botswana"
-msgstr "บอทสวานา"
-
-#. 112
-msgid "Belarus"
-msgstr "เบลารุส"
-
-#. 084
-msgid "Belize"
-msgstr "เบลไลซ์"
-
-#. 124
-msgid "Canada"
-msgstr "à¹à¸„นาดา"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "หมู่เà¸à¸²à¸°à¹‚คโคส (คีลิง)"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#. 140
-msgid "Central African Republic"
-msgstr "สาธารณรัà¸à¸­à¸±à¸Ÿà¸£à¸´à¸à¸²à¸à¸¥à¸²à¸‡"
-
-#. 178
-msgid "Congo"
-msgstr "คองโà¸"
-
-#. 756
-msgid "Switzerland"
-msgstr "สวิสเซอร์à¹à¸¥à¸™à¸”์"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "โà¸à¸•à¸”ิวัวร์"
-
-#. 184
-msgid "Cook Islands"
-msgstr "หมู่เà¸à¸²à¸°à¸„ุ้à¸"
-
-#. 152
-msgid "Chile"
-msgstr "ชิลี"
-
-#. 120
-msgid "Cameroon"
-msgstr "คาเมรูน"
-
-#. 156
-msgid "China"
-msgstr "จีน"
-
-#. 170
-msgid "Colombia"
-msgstr "โคลัมเบีย"
-
-#. 188
-msgid "Costa Rica"
-msgstr "คอสตาริà¸à¸²"
-
-#. 192
-msgid "Cuba"
-msgstr "คิวบา"
-
-#. 132
-msgid "Cape Verde"
-msgstr "à¹à¸«à¸¥à¸¡à¹€à¸§à¸­à¸£à¹Œà¸”ี"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "เà¸à¸²à¸°à¸„ริสต์มาส"
-
-#. 196
-msgid "Cyprus"
-msgstr "ไซปรัส"
-
-#. 203
-msgid "Czech Republic"
-msgstr "สาธารณรัà¸à¹€à¸Šà¸„"
-
-#. 276
-msgid "Germany"
-msgstr "เยอรมันนี"
-
-#. 262
-msgid "Djibouti"
-msgstr "จิบูติ"
-
-#. 208
-msgid "Denmark"
-msgstr "เดนมาร์à¸"
-
-#. 212
-msgid "Dominica"
-msgstr "โดมินาà¸à¸±à¸™"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "สาธารณรัà¸à¹‚ดมินิà¸à¸±à¸™"
-
-#. 012
-msgid "Algeria"
-msgstr "อัลจีเรีย"
-
-#. 218
-msgid "Ecuador"
-msgstr "เอà¸à¸§à¸²à¸”อร์"
-
-#. 233
-msgid "Estonia"
-msgstr "เอสโทเนีย"
-
-#. 818
-msgid "Egypt"
-msgstr "อียิปต์"
-
-#. 732
-msgid "Western Sahara"
-msgstr "ซาฮาร่าตะวันตà¸"
-
-#. 232
-msgid "Eritrea"
-msgstr "เอริเทรีย"
-
-#. 724
-msgid "Spain"
-msgstr "สเปน"
-
-#. 231
-msgid "Ethiopia"
-msgstr "เอธิโอเปีย"
-
-#. 246
-msgid "Finland"
-msgstr "ฟินà¹à¸¥à¸™à¸”์"
-
-#. 242
-msgid "Fiji"
-msgstr "ฟิจิ"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "หมู่เà¸à¸²à¸°à¸Ÿà¸­à¸¥à¹Œà¸à¹à¸¥à¸™à¸”์ (มาลบีนาส)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "ไมโครนีเซีย"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "หมู่เà¸à¸²à¸°à¹à¸Ÿà¹‚ร"
-
-#. 250
-msgid "France"
-msgstr "à¸à¸£à¸±à¹ˆà¸‡à¹€à¸¨à¸ª"
-
-#. 266
-msgid "Gabon"
-msgstr "à¸à¸²à¸šà¸­à¸™"
-
-#. 826
-msgid "United Kingdom"
-msgstr "อังà¸à¸¤à¸©"
-
-#. 308
-msgid "Grenada"
-msgstr "เà¸à¸£à¸™à¸²à¸”า"
-
-#. 268
-msgid "Georgia"
-msgstr "จอร์เจีย"
-
-#. 254
-msgid "French Guiana"
-msgstr "เฟรนช์เà¸à¸µà¸¢à¸™à¸²"
-
-#. 831
-msgid "Guernsey"
-msgstr "เà¸à¸´à¸£à¹Œà¸™à¸‹à¸µà¸¢à¹Œ"
-
-#. 288
-msgid "Ghana"
-msgstr "à¸à¸²à¸™à¸²"
-
-#. 292
-msgid "Gibraltar"
-msgstr "ยิบรอลตา"
-
-#. 304
-msgid "Greenland"
-msgstr "à¸à¸£à¸µà¸™à¹à¸¥à¸™à¸”์"
-
-#. 270
-msgid "Gambia"
-msgstr "à¹à¸à¸¡à¹€à¸šà¸µà¸¢"
-
-#. 324
-msgid "Guinea"
-msgstr "à¸à¸´à¸™à¸µ"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "à¸à¸§à¸²à¹€à¸”อลูป"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "à¸à¸´à¸™à¸µ ตรงเส้นศูนย์สูตร"
-
-#. 300
-msgid "Greece"
-msgstr "à¸à¸£à¸µà¸‹"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "เà¸à¸²à¸°à¹€à¸‹à¸²à¸—์จอร์เจียà¹à¸¥à¸°à¸«à¸¡à¸¹à¹ˆà¹€à¸à¸²à¸°à¹€à¸‹à¸²à¸—์à¹à¸‹à¸™à¸”์วิช"
-
-#. 320
-msgid "Guatemala"
-msgstr "à¸à¸±à¸§à¹€à¸•à¸¡à¸²à¸¥à¸²"
-
-#. 316
-msgid "Guam"
-msgstr "à¸à¸§à¸¡"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "à¸à¸´à¸™à¸µ - บิสซอ"
-
-#. 328
-msgid "Guyana"
-msgstr "à¸à¸¹à¸¢à¸²à¸™à¹ˆà¸²"
-
-#. 344
-msgid "Hong Kong"
-msgstr "ฮ่องà¸à¸‡"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "เà¸à¸²à¸°à¹€à¸®à¸´à¸£à¹Œà¸”à¹à¸¥à¸°à¸«à¸¡à¸¹à¹ˆà¹€à¸à¸²à¸°à¹à¸¡à¸à¸”อนัลด์"
-
-#. 340
-msgid "Honduras"
-msgstr "ฮอนดูรัส"
-
-#. 191
-msgid "Croatia"
-msgstr "โครเอเธีย"
-
-#. 332
-msgid "Haiti"
-msgstr "ไฮติ"
-
-#. 348
-msgid "Hungary"
-msgstr "ฮังà¸à¸²à¸£à¸µ"
-
-#. 360
-msgid "Indonesia"
-msgstr "อินโดนีเซีย"
-
-#. 372
-msgid "Ireland"
-msgstr "ไอร์à¹à¸¥à¸™à¸”์"
-
-#. 376
-msgid "Israel"
-msgstr "อิสราเอล"
-
-#. 833
-msgid "Isle of Man"
-msgstr "เà¸à¸²à¸°à¹à¸¡à¸™"
-
-#. 356
-msgid "India"
-msgstr "อินเดีย"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "บริติชอินเดียนโอเชียนเทร์ริทอรี"
-
-#. 368
-msgid "Iraq"
-msgstr "อิรัà¸"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr ""
-
-#. 352
-msgid "Iceland"
-msgstr "ไอซ์à¹à¸¥à¸™à¸”์"
-
-#. 380
-msgid "Italy"
-msgstr "อิตาลี"
-
-#. 832
-msgid "Jersey"
-msgstr "เจอร์ซีย์"
-
-#. 388
-msgid "Jamaica"
-msgstr "จาไมà¸à¹‰à¸²"
-
-#. 400
-msgid "Jordan"
-msgstr "จอร์à¹à¸”น"
-
-#. 392
-msgid "Japan"
-msgstr "à¸à¸µà¹ˆà¸›à¹ˆà¸¸à¸™"
-
-#. 404
-msgid "Kenya"
-msgstr "เคนยา"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "คีร์à¸à¸µà¸‹à¸ªà¸–าน"
-
-#. 116
-msgid "Cambodia"
-msgstr "à¸à¸±à¸¡à¸žà¸¹à¸Šà¸²"
-
-#. 296
-msgid "Kiribati"
-msgstr "คิริบาติ"
-
-#. 174
-msgid "Comoros"
-msgstr "โคโมรอส"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "เซนต์คิตส์à¹à¸¥à¸°à¹€à¸™à¸§à¸´à¸ª"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "เà¸à¸²à¸«à¸¥à¸µà¹€à¸«à¸™à¸·à¸­"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "เà¸à¸²à¸«à¸¥à¸µà¹ƒà¸•à¹‰"
-
-#. 414
-msgid "Kuwait"
-msgstr "คูเวต"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "หมู่เà¸à¸²à¸°à¹€à¸„ย์à¹à¸¡à¸™"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "คาซัคสถาน"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "สาธารณรัà¸à¸›à¸£à¸°à¸Šà¸²à¸˜à¸´à¸›à¹„ตยประชาชนลาว"
-
-#. 422
-msgid "Lebanon"
-msgstr "เลบานอน"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "เซนต์ลูเซีย"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "ลิชเทนสไตน์"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "ศรีลังà¸à¸²"
-
-#. 430
-msgid "Liberia"
-msgstr "ไลบีเรีย"
-
-#. 426
-msgid "Lesotho"
-msgstr "เลโซโต"
-
-#. 440
-msgid "Lithuania"
-msgstr "ลิธัวเนีย"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ลัà¸à¹€à¸‹à¸¡à¹€à¸šà¸­à¸£à¹Œà¸"
-
-#. 428
-msgid "Latvia"
-msgstr "ลัธเวีย"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "โมร็อคโค"
-
-#. 492
-msgid "Monaco"
-msgstr "โมนาโค"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "มอลโดวา, สาธารณรัà¸"
-
-#. 499
-msgid "Montenegro"
-msgstr "มอนเตเนโà¸à¸£"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "à¹à¸‹à¸‡à¸¡à¸²à¸£à¹Œà¹à¸•à¸‡ (ส่วนของà¸à¸£à¸±à¹ˆà¸‡à¹€à¸¨à¸ª)"
-
-#. 450
-msgid "Madagascar"
-msgstr "มาดาà¸à¸±à¸ªà¸à¸²"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "หมู่เà¸à¸²à¸°à¸¡à¸²à¹à¸Šà¸¥"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr ""
-
-#. 466
-msgid "Mali"
-msgstr "มาลี"
-
-#. 104
-msgid "Myanmar"
-msgstr "พม่า"
-
-#. 496
-msgid "Mongolia"
-msgstr "มองโà¸à¹€à¸¥à¸µà¸¢"
-
-#. 446
-msgid "Macao"
-msgstr "มาเà¸à¹Šà¸²"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "หมู่เà¸à¸²à¸°à¸¡à¸²à¹€à¸£à¸µà¸¢à¸™à¹ˆà¹€à¸«à¸™à¸·à¸­"
-
-#. 474
-msgid "Martinique"
-msgstr "มาทินิค"
-
-#. 478
-msgid "Mauritania"
-msgstr "มอริทาเนีย"
-
-#. 500
-msgid "Montserrat"
-msgstr "มอนต์เซอร์รัท"
-
-#. 470
-msgid "Malta"
-msgstr "มอลตา"
-
-#. 480
-msgid "Mauritius"
-msgstr "มอริเชียส"
-
-#. 462
-msgid "Maldives"
-msgstr "มัลดิฟ"
-
-#. 454
-msgid "Malawi"
-msgstr "มาลาวี"
-
-#. 484
-msgid "Mexico"
-msgstr "เม็à¸à¸‹à¸´à¹‚à¸"
-
-#. 458
-msgid "Malaysia"
-msgstr "มาเลเซีย"
-
-#. 508
-msgid "Mozambique"
-msgstr "โมà¹à¸‹à¸¡à¸šà¸´à¸"
-
-#. 516
-msgid "Namibia"
-msgstr "นามิเบีย"
-
-#. 540
-msgid "New Caledonia"
-msgstr "นิวคาเลโดเนีย"
-
-#. 562
-msgid "Niger"
-msgstr "ไนเจอร์"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "เà¸à¸²à¸°à¸™à¸­à¸£à¹Œà¸Ÿà¸­à¸¥à¹Œà¸„"
-
-#. 566
-msgid "Nigeria"
-msgstr "ไนจีเรีย"
-
-#. 558
-msgid "Nicaragua"
-msgstr "นิคาราà¸à¸±à¸§"
-
-#. 528
-msgid "Netherlands"
-msgstr "เนเธอร์à¹à¸¥à¸™à¸”์"
-
-#. 578
-msgid "Norway"
-msgstr "นอร์เวย์"
-
-#. 524
-msgid "Nepal"
-msgstr "เนปาล"
-
-#. 520
-msgid "Nauru"
-msgstr "นาวรู"
-
-#. 570
-msgid "Niue"
-msgstr "นิอุเอ"
-
-#. 554
-msgid "New Zealand"
-msgstr "นิวซีà¹à¸¥à¸™à¸”์"
-
-#. 512
-msgid "Oman"
-msgstr "โอมาน"
-
-#. 591
-msgid "Panama"
-msgstr "ปานามา"
-
-#. 604
-msgid "Peru"
-msgstr "เปรู"
-
-#. 258
-msgid "French Polynesia"
-msgstr "à¸à¸£à¸±à¹ˆà¸‡à¹€à¸¨à¸ªà¹‚พลีนีเซีย"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "ปาปัวนิวà¸à¸´à¸™à¸µ"
-
-#. 608
-msgid "Philippines"
-msgstr "ฟิลิปปินส์"
-
-#. 586
-msgid "Pakistan"
-msgstr "ปาà¸à¸µà¸ªà¸–าน"
-
-#. 616
-msgid "Poland"
-msgstr "โปà¹à¸¥à¸™à¸”์"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "à¹à¸‹à¸‡à¸›à¸µà¹à¸¢à¸£à¹Œà¹à¸¥à¸°à¸¡à¸µà¹€à¸à¸­à¸¥à¸‡"
-
-#. 612
-msgid "Pitcairn"
-msgstr "พิตà¹à¸„ร์น"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "เปอร์โตริโà¸"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "ปาเลสไตน์, ดินà¹à¸”นยึดครอง"
-
-#. 620
-msgid "Portugal"
-msgstr "โปรตุเà¸à¸ª"
-
-#. 585
-msgid "Palau"
-msgstr "เà¸à¸²à¸°à¸žà¸²à¹€à¸¥à¸²"
-
-#. 600
-msgid "Paraguay"
-msgstr "ปาราà¸à¸§à¸±à¸¢"
-
-#. 634
-msgid "Qatar"
-msgstr "à¸à¸²à¸•à¸²à¸£à¹Œ"
-
-#. 638
-msgid "Reunion"
-msgstr "รียูเนียน"
-
-#. 642
-msgid "Romania"
-msgstr "โรมาเนีย"
-
-#. 688
-msgid "Serbia"
-msgstr "เซอร์เบีย"
-
-#. 643
-msgid "Russian Federation"
-msgstr "สมาพันธรัà¸à¸£à¸±à¸ªà¹€à¸‹à¸µà¸¢"
-
-#. 646
-msgid "Rwanda"
-msgstr "รวันด้า"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "ซาอุดิอาระเบีย"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "หมู่เà¸à¸²à¸°à¹‚ซโลมอน"
-
-#. 690
-msgid "Seychelles"
-msgstr "ซีเชลล์"
-
-#. 736
-msgid "Sudan"
-msgstr "ซูดาน"
-
-#. 752
-msgid "Sweden"
-msgstr "สวีเดน"
-
-#. 702
-msgid "Singapore"
-msgstr "สิงคโปร์"
-
-#. 654
-msgid "Saint Helena"
-msgstr "เซนต์เฮเลนา"
-
-#. 705
-msgid "Slovenia"
-msgstr "สโลเวเนีย"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "สฟาลบาร์ à¹à¸¥à¸° ยานไมเอน"
-
-#. 703
-msgid "Slovakia"
-msgstr "สโลวาเà¸à¸µà¸¢"
-
-#. 694
-msgid "Sierra Leone"
-msgstr ""
-
-#. 674
-msgid "San Marino"
-msgstr "ซานมาริโน"
-
-#. 686
-msgid "Senegal"
-msgstr "เซนีà¸à¸±à¸¥"
-
-#. 706
-msgid "Somalia"
-msgstr "โซมาเลีย"
-
-#. 740
-msgid "Suriname"
-msgstr "ซูรีนามิ"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "ซาวโทม à¹à¸¥à¸° พรินซิป"
-
-#. 222
-msgid "El Salvador"
-msgstr "เอลซัลวาดอร์"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "สาธารณรัà¸à¸­à¸²à¸«à¸£à¸±à¸šà¸‹à¸µà¹€à¸£à¸µà¸¢"
-
-#. 748
-msgid "Swaziland"
-msgstr "สวาซิà¹à¸¥à¸™à¸”์"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "เà¸à¸²à¸°à¸”ติร์à¸à¹à¸¥à¸°à¹€à¸„คอส"
-
-#. 148
-msgid "Chad"
-msgstr "ชาด"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "เฟรนช์เซาเทิร์นเทร์ริทอรีส์"
-
-#. 768
-msgid "Togo"
-msgstr "โตโà¸"
-
-#. 764
-msgid "Thailand"
-msgstr "ราชอาณาจัà¸à¸£à¹„ทย"
-
-#. 762
-msgid "Tajikistan"
-msgstr "ธาจีà¸à¸´à¸ªà¸–าน"
-
-#. 772
-msgid "Tokelau"
-msgstr "โตเà¸à¹€à¸¥à¸²"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "ติมอร์ตะวันออà¸"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "เตอร์à¸à¹€à¸¡à¸™à¸´à¸ªà¸–าน"
-
-#. 788
-msgid "Tunisia"
-msgstr "ตูนีเซีย"
-
-#. 776
-msgid "Tonga"
-msgstr "ตองà¸à¹‰à¸²"
-
-#. 792
-msgid "Turkey"
-msgstr "ตุรà¸à¸µ"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "ตรีนิà¹à¸”ดà¹à¸¥à¸°à¹‚ทบาโà¸"
-
-#. 798
-msgid "Tuvalu"
-msgstr "ตูวาลู"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "ไต้หวัน, จังหวัดของจีน"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "à¹à¸—นซาเนีย, สหสาธารณรัà¸"
-
-#. 804
-msgid "Ukraine"
-msgstr "ยูเครน"
-
-#. 800
-msgid "Uganda"
-msgstr "ยูà¸à¸±à¸™à¸”า"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "เà¸à¸²à¸°à¹€à¸¥à¹‡à¸à¸£à¸­à¸šà¸™à¸­à¸à¸‚องสหรัà¸à¸­à¹€à¸¡à¸£à¸´à¸à¸²"
-
-#. 840
-msgid "United States"
-msgstr "สหรัà¸"
-
-#. 858
-msgid "Uruguay"
-msgstr "อุรุà¸à¸§à¸±à¸¢"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "อุซเบà¸à¸´à¸ªà¸–าน"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "นครรัà¸à¸§à¸²à¸•à¸´à¸à¸±à¸™"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "เซนต์วินเซนต์à¹à¸¥à¸°à¹€à¸à¸£à¸™à¸²à¸”ีนส์"
-
-#. 862
-msgid "Venezuela"
-msgstr "เวเนซุเอลา"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "หมู่เà¸à¸²à¸°à¸šà¸£à¸´à¸•à¸´à¸Šà¹€à¸§à¸­à¸£à¹Œà¸ˆà¸´à¸™"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "หมู่เà¸à¸²à¸°à¹€à¸§à¸­à¸£à¹Œà¸ˆà¸´à¸™à¸‚องสหรัà¸à¸­à¹€à¸¡à¸£à¸´à¸à¸²"
-
-#. 704
-msgid "Viet Nam"
-msgstr "เวียตนาม"
-
-#. 548
-msgid "Vanuatu"
-msgstr "à¹à¸§à¸™à¸±à¸§à¸•à¸¹"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "หมู่เà¸à¸²à¸°à¸§à¸²à¸¥à¸¥à¸´à¸ªà¹à¸¥à¸°à¸«à¸¡à¸¹à¹ˆà¹€à¸à¸²à¸°à¸Ÿà¸¹à¸•à¸¹à¸™à¸²"
-
-#. 882
-msgid "Samoa"
-msgstr "ซามัว"
-
-#. 887
-msgid "Yemen"
-msgstr "เยเมน"
-
-#. 175
-msgid "Mayotte"
-msgstr "เมโยเต้"
-
-#. 710
-msgid "South Africa"
-msgstr "à¹à¸­à¸Ÿà¸£à¸´à¸à¸²à¹ƒà¸•à¹‰"
-
-#. 894
-msgid "Zambia"
-msgstr "à¹à¸‹à¸¡à¹€à¸šà¸µà¸¢"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "ซิมบับเว"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr "รถยนต์"
-
-msgid "Iso2"
-msgstr "ISO2"
-
-msgid "Iso3"
-msgstr "ISO3"
-
-msgid "Country"
-msgstr "ประเทศ"
-
-msgid "Postal"
-msgstr "ไปรษณีย์"
-
-msgid "Town"
-msgstr "เมือง"
-
-msgid "District"
-msgstr "เขต"
-
-msgid "Street"
-msgstr "ถนน"
-
-msgid "Number"
-msgstr "หมายเลข"
-
-msgid "Enter Destination"
-msgstr "à¸à¸³à¸«à¸™à¸” ที่หมาย"
-
-msgid "Zip Code"
-msgstr "รหัสไปรษณีย์"
-
-msgid "City"
-msgstr "เมือง"
-
-msgid "District/Township"
-msgstr ""
-
-msgid "Map"
-msgstr "à¹à¸œà¸™à¸—ี่"
-
-msgid "Bookmark"
-msgstr ""
-
-msgid "Destination"
-msgstr "จุดหมาย"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "à¹à¸ªà¸”ง"
-
-msgid "_Route"
-msgstr "เส้นทาง"
-
-msgid "_Former Destinations"
-msgstr "à¸à¹ˆà¸­à¸™à¸–ึง ที่หมาย"
-
-msgid "_Bookmarks"
-msgstr "บุ๊à¸à¸¡à¸²à¸£à¹Œà¸"
-
-msgid "_Map"
-msgstr "à¹à¸œà¸™à¸—ี่"
-
-msgid "_Layout"
-msgstr "à¸à¸²à¸£à¸ˆà¸±à¸”เรียง"
-
-msgid "_Projection"
-msgstr "à¸à¸²à¸£à¸‰à¸²à¸¢à¹à¸œà¸™à¸—ี่"
-
-msgid "_Vehicle"
-msgstr "ยานพาหนะ"
-
-msgid "Zoom_Out"
-msgstr "ขยายออà¸"
-
-msgid "Decrease zoom level"
-msgstr ""
-
-msgid "Zoom_In"
-msgstr "ขยายเข้า"
-
-msgid "Increase zoom level"
-msgstr ""
-
-msgid "_Recalculate"
-msgstr "คำนวนใหม่"
-
-msgid "Redraw map"
-msgstr ""
-
-msgid "_Info"
-msgstr "ข้อมูล"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "หยุดà¸à¸²à¸£à¸™à¸³à¸—าง"
-
-msgid "Test"
-msgstr "ทดสอบ"
-
-msgid "_Quit"
-msgstr "_ออà¸à¸ˆà¸²à¸à¹‚ปรà¹à¸à¸£à¸¡"
-
-msgid "Quit the application"
-msgstr ""
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr ""
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr ""
-
-msgid "_Fullscreen"
-msgstr "à¹à¸ªà¸”งผลเต็มจอภาพ"
-
-msgid "Data"
-msgstr "ข้อมูล"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "เหนือ"
-
-msgid "NE"
-msgstr "ตะวันออà¸à¹€à¸‰à¸µà¸¢à¸‡à¹€à¸«à¸™à¸·à¸­"
-
-msgid "E"
-msgstr "ตะวันออà¸"
-
-msgid "SE"
-msgstr "ตะวันออà¸à¹€à¸‰à¸µà¸¢à¸‡à¹ƒà¸•à¹‰"
-
-msgid "S"
-msgstr "ใต้"
-
-msgid "SW"
-msgstr "ตะวันตà¸à¹€à¸‰à¸µà¸¢à¸‡à¹ƒà¸•à¹‰"
-
-msgid "W"
-msgstr "ตะวันตà¸"
-
-msgid "NW"
-msgstr "ตะวันออà¸à¹€à¸‰à¸µà¸¢à¸‡à¹€à¸«à¸™à¸·à¸­"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr ""
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "เส้นทาง %4.0f à¸à¸¡. %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "เส้นทาง 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr ""
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr ""
-
-msgid "House numbers"
-msgstr ""
-
-msgid "View Attributes"
-msgstr ""
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr ""
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr ""
-
-msgid "Copy Bookmark"
-msgstr ""
-
-msgid "Rename Bookmark"
-msgstr ""
-
-msgid "Paste Bookmark"
-msgstr ""
-
-msgid "Delete Bookmark"
-msgstr ""
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "บุ๊à¸à¸¡à¸²à¸£à¹Œà¸"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr ""
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr ""
-
-#, c-format
-msgid "Bookmark %s"
-msgstr ""
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr ""
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr ""
-
-msgid "Show NMEA Data"
-msgstr ""
-
-msgid "car"
-msgstr ""
-
-msgid "bike"
-msgstr ""
-
-msgid "pedestrian"
-msgstr ""
-
-#, c-format
-msgid "Current profile: %s"
-msgstr ""
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr ""
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr ""
-
-msgid "Show NMEA data"
-msgstr ""
-
-msgid "Add Bookmark"
-msgstr ""
-
-msgid "Rename"
-msgstr ""
-
-msgid "About Navit"
-msgstr ""
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "ยานพาหนะ"
-
-msgid "Rules"
-msgstr ""
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr "ทางทิศเหนือ"
-
-msgid "Map follows Vehicle"
-msgstr ""
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr ""
-
-msgid "Layout"
-msgstr "à¸à¸²à¸£à¸ˆà¸±à¸”เรียง"
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr ""
-
-msgid "Show Locale"
-msgstr ""
-
-msgid "Former Destinations"
-msgstr "à¸à¹ˆà¸­à¸™à¸–ึง ที่หมาย"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr ""
-
-msgid "Back"
-msgstr ""
-
-msgid "Back to map"
-msgstr ""
-
-msgid "Main Menu"
-msgstr ""
-
-msgid "House number"
-msgstr ""
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr ""
-
-msgid "Main menu"
-msgstr ""
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Tools"
-msgstr ""
-
-msgid "Route"
-msgstr "เส้นทาง"
-
-msgid "About"
-msgstr ""
-
-msgid "Quit"
-msgstr ""
-
-msgid "Actions"
-msgstr ""
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-
-msgid "Display"
-msgstr "à¹à¸ªà¸”ง"
-
-msgid "Fullscreen"
-msgstr "à¹à¸ªà¸”งผลเต็มจอภาพ"
-
-msgid "Window Mode"
-msgstr ""
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr ""
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr ""
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
diff --git a/po/tr.po.in b/po/tr.po.in
deleted file mode 100644
index 1802c15a9..000000000
--- a/po/tr.po.in
+++ /dev/null
@@ -1,2780 +0,0 @@
-# Turkish (tr) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Abesis https://launchpad.net/~izzetaykutkocak
-# Angel Spy https://launchpad.net/~dilara.ekinci
-# Bawer Yekta https://launchpad.net/~e-peyam
-# Bekir DURAK https://launchpad.net/~bekir-durak
-# Koray Löker https://launchpad.net/~loker
-# Kudret EMRE https://launchpad.net/~kudretemre
-# ViZiT https://launchpad.net/~vizit
-# dentist76 https://launchpad.net/~pilatin
-# eMVP https://launchpad.net/~ercan-i
-# seqizz (gurkanGur) https://launchpad.net/~seqizz
-# tinyos https://launchpad.net/~eygu-mindikoglu
-# Åžahin Alp TaÅŸkaya https://launchpad.net/~sahin
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:01+0000\n"
-"Last-Translator: Kudret EMRE <kudretemre@hotmail.com>\n"
-"Language-Team: Turkish <tr@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: tr\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Kaynak klasörden çalıştırılıyor\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "'%s' , '%s' değerine ayarlanıyor\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "sıfırıncı"
-
-msgid "first"
-msgstr "birinci"
-
-msgid "second"
-msgstr "ikinci"
-
-msgid "third"
-msgstr "üçüncü"
-
-msgid "fourth"
-msgstr "dördüncü"
-
-msgid "fifth"
-msgstr "beÅŸinci"
-
-msgid "sixth"
-msgstr "altıncı"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "sıfırıncı çıkış"
-
-msgid "first exit"
-msgstr "ilk çıkış"
-
-msgid "second exit"
-msgstr "ikinci çıkış"
-
-msgid "third exit"
-msgstr "üçüncü çıkış"
-
-msgid "fourth exit"
-msgstr "dördüncü çıkış"
-
-msgid "fifth exit"
-msgstr "beşinci çıkış"
-
-msgid "sixth exit"
-msgstr "altıncı çıkış"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d feet"
-
-#, c-format
-msgid "in %d feet"
-msgstr "%d feet içinde"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d.%d mil"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "%d.%d mil içinde"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "bir mil"
-msgstr[1] "%d mil"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "bir mil içinde"
-msgstr[1] "%d mil içinde"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d metre"
-
-#, c-format
-msgid "in %d meters"
-msgstr "%d metrede"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d kilometre"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d.%d kilometrede"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d kilometre"
-msgstr[1] "%d kilometre"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "%d kilometrede"
-msgstr[1] "%d kilometrede"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "rampada"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%scaddesine %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%scaddesine %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%scaddesine %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%scaddesine %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s%s yoluna"
-
-msgid "When possible, please turn around"
-msgstr "Müsait olduğunda lütfen yönünü değiştir"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Gelecek %s için yolu takip et"
-
-msgid "Enter the roundabout soon"
-msgstr "Yakındaki kavşağa girin"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "%1$s'de kavşaktan çıkın %2$s"
-
-msgid "soon"
-msgstr "yakında"
-
-msgid "now"
-msgstr "ÅŸimdi"
-
-msgid "then"
-msgstr "sonra"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr "solunuzda"
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "kesiÅŸiminde"
-
-msgid "at exit"
-msgstr "çıkışta"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "SaÄŸa"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "Sola"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "kolayca "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "sertçe "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "%1$s yolunda %2$s yönüne dönün"
-
-#, c-format
-msgid "after %i roads"
-msgstr "%i yol sonra"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Dönüş %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "takip edin"
-
-msgid "then you have reached your destination."
-msgstr "ardından hedefinize ulaşacaksınız"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Hedefinize ulaştınız, %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "KesiÅŸim"
-
-msgid "Exit"
-msgstr "Çıkış"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Konum"
-
-msgid "Command"
-msgstr "Komut"
-
-msgid "Length"
-msgstr "Uzaklık"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Zaman"
-
-msgid "Destination Length"
-msgstr "Hedef Uzaklığı"
-
-msgid "Destination Time"
-msgstr "Varış Zamanı"
-
-msgid "Roadbook"
-msgstr "Yol Haritası"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Pozisyon olarak ayarla"
-
-msgid "Set as destination"
-msgstr "Hedef olarak ayarla"
-
-msgid "Add as bookmark"
-msgstr "Yer imi olarak ayarla"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Nokta 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Ekran koordinatları :%d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "BirleÅŸik Arap Emirlikleri"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua ve Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Angola"
-
-#. 008
-msgid "Albania"
-msgstr "Arnavutluk"
-
-#. 051
-msgid "Armenia"
-msgstr "Ermenistan"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Hollanda Antilleri"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarktika"
-
-#. 032
-msgid "Argentina"
-msgstr "Arjantin"
-
-#. 016
-msgid "American Samoa"
-msgstr "Amerikan Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Avusturya"
-
-#. 036
-msgid "Australia"
-msgstr "Avustralya"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland Adaları"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbeycan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna Hersek"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "BangladeÅŸ"
-
-#. 056
-msgid "Belgium"
-msgstr "Belçika"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaristan"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahreyn"
-
-#. 108
-msgid "Burundi"
-msgstr "Brundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Bruney"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivya"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brezilya"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamalar"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Bouvet Adası"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Beyaz Rusya"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Kanada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Cocos (Keeling) Adaları"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo Demokratik Cumhuriyeti"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Merkezi Afrika Cumhuriyeti"
-
-#. 178
-msgid "Congo"
-msgstr "Kongo"
-
-#. 756
-msgid "Switzerland"
-msgstr "İsviçre"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Cote d'Ivoire"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Cook Adaları"
-
-#. 152
-msgid "Chile"
-msgstr "Åžili"
-
-#. 120
-msgid "Cameroon"
-msgstr "Kamerun"
-
-#. 156
-msgid "China"
-msgstr "Çin"
-
-#. 170
-msgid "Colombia"
-msgstr "Kolombiya"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Kosta Rika"
-
-#. 192
-msgid "Cuba"
-msgstr "Küba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cape Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Christmas Island"
-
-#. 196
-msgid "Cyprus"
-msgstr "Kıbrıs"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Çek Cumhuriyeti"
-
-#. 276
-msgid "Germany"
-msgstr "Almanya"
-
-#. 262
-msgid "Djibouti"
-msgstr "Cibuti"
-
-#. 208
-msgid "Denmark"
-msgstr "Danimarka"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominik"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominik Cumhuriyeti"
-
-#. 012
-msgid "Algeria"
-msgstr "Cezayir"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ekvator"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonya"
-
-#. 818
-msgid "Egypt"
-msgstr "Mısır"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Batı Sahra"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritre"
-
-#. 724
-msgid "Spain"
-msgstr "Ä°spanya"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Etyopya"
-
-#. 246
-msgid "Finland"
-msgstr "Finlandiya"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland Adaları (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Mikronezya, Federe Devletleri"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Faroe Adaları"
-
-#. 250
-msgid "France"
-msgstr "Fransa"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Birleşik Krallık"
-
-#. 308
-msgid "Grenada"
-msgstr "Granada"
-
-#. 268
-msgid "Georgia"
-msgstr "Gürcistan"
-
-#. 254
-msgid "French Guiana"
-msgstr "Fransız Guyanası"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Gana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Cebelitarık"
-
-#. 304
-msgid "Greenland"
-msgstr "Grönland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambiya"
-
-#. 324
-msgid "Guinea"
-msgstr "Gine"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadalup"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Ekvator Ginesi"
-
-#. 300
-msgid "Greece"
-msgstr "Yunanistan"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Güney Gürcistan ve Güney Sandoviç Adaları"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Gine-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hong Kong"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard Adası ve McDonald Adaları"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Hırvatistan"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Macaristan"
-
-#. 360
-msgid "Indonesia"
-msgstr "Endonezya"
-
-#. 372
-msgid "Ireland"
-msgstr "Ä°rlanda"
-
-#. 376
-msgid "Israel"
-msgstr "Ä°srail"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Man adası"
-
-#. 356
-msgid "India"
-msgstr "Hindistan"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "Hint Okyanusu İngiliz Bölgesi"
-
-#. 368
-msgid "Iraq"
-msgstr "Irak"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "İran, İslâm Cumhuriyeti"
-
-#. 352
-msgid "Iceland"
-msgstr "Ä°zlanda"
-
-#. 380
-msgid "Italy"
-msgstr "Ä°talya"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaika"
-
-#. 400
-msgid "Jordan"
-msgstr "Ürdün"
-
-#. 392
-msgid "Japan"
-msgstr "Japonya"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kırgızistan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Kamboçya"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Komoros"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Sen Kitts ve Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Kore, Demokratik Halk Cumhuriyeti"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Kore Cumhuriyeti"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuveyt"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Seyman Adaları"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakistan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Lao, Demokratik Halk Cumhuriyeti"
-
-#. 422
-msgid "Lebanon"
-msgstr "Lübnan"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Sen Lusia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "LihtenÅŸtayn"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberya"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesoto"
-
-#. 440
-msgid "Lithuania"
-msgstr "Litvanya"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Lüksemburg"
-
-#. 428
-msgid "Latvia"
-msgstr "Letonya"
-
-#. 434
-msgid "Libya"
-msgstr "Libya"
-
-#. 504
-msgid "Morocco"
-msgstr "Fas"
-
-#. 492
-msgid "Monaco"
-msgstr "Monako"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova Cumhuriyeti"
-
-#. 499
-msgid "Montenegro"
-msgstr "KaradaÄŸ"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Sen Martin (Fransız kısmı)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagaskar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Marshall Adaları"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Makedonya"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "MoÄŸolistan"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Northern Mariana Adaları"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinik"
-
-#. 478
-msgid "Mauritania"
-msgstr "Moritanya"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldivler"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Meksika"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malezya"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambik"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibiya"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Yeni Kaledonya"
-
-#. 562
-msgid "Niger"
-msgstr "Nijer"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk Adası"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nijerya"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nikaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Hollanda"
-
-#. 578
-msgid "Norway"
-msgstr "Norveç"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "Yeni Zelanda"
-
-#. 512
-msgid "Oman"
-msgstr "Umman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Fransız Polinezyası"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua Yeni Gine"
-
-#. 608
-msgid "Philippines"
-msgstr "Filipinler"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Polonya"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre ve Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Porto Riko"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Filistin Özerk Bölgesi"
-
-#. 620
-msgid "Portugal"
-msgstr "Portekiz"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Katar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Romanya"
-
-#. 688
-msgid "Serbia"
-msgstr "Sırbistan"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Rusya Federasyonu"
-
-#. 646
-msgid "Rwanda"
-msgstr "Ruanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Suudi Arabistan"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Solomon Adaları"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seyşel Adaları"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "İsveç"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapur"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Saint Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenya"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard ve Jan Mayen Adaları"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakya"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somali"
-
-#. 740
-msgid "Suriname"
-msgstr "Surinam"
-
-#. 728
-msgid "South Sudan"
-msgstr "Güney Sudan"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome ve Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "Sint Maarten (Hollanda bölümü)"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Suriye"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks ve Kaykos Adaları"
-
-#. 148
-msgid "Chad"
-msgstr "Çad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Güney Fransa Bölgeleri"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Tayland"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tacikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Türkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunus"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Türkiye"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad ve Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Tayvan, Çin Eyaleti"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzanya, BirleÅŸik Cumhuriyeti"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukrayna"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Küçük Birleşik Devletler adaları"
-
-#. 840
-msgid "United States"
-msgstr "BirleÅŸik Devletler"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Özbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikan"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Sen Vinsınt ve Granadalar"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Virgin Adaları, İngiliz"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Virgin Adaları, A.B.D."
-
-#. 704
-msgid "Viet Nam"
-msgstr "Vietnam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis ve Futuna Adaları"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "Güney Afrika"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambiya"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabve"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* tanınmıyor, bu yerleşime bir etiket ekleyin"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-"navit kullanımı:\n"
-"navit [seçenekler] [yapılandırma dosyası]\n"
-"\t-c <dosya>: <dosya> argümanını varsayılan dosyayı kullanmak yerine "
-"yapılandırma dosyası olarak kullanabilirsiniz.\n"
-"\t-d <n>: hata ayıklama seviyesini ayarlayın <n> (0=hata, 1=uyarı, 2=bilgi, "
-"3=hata ayıklama).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: bu kullanım bilgisini göster ve çık.\n"
-"\t-v: sürümü göster ve çık.\n"
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "Hiçbir navit.xml, navit.xml.locak yapılandırma dosyası bulunamadı\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "'%s' yapılandırma dosyası kullanılıyor\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "Hata: '%s' yapılandırma dosyasında hiçbir yapılandırma bulunamadı\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr "bilinmeyen sokak"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "İsimsiz araç"
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Harita Noktası"
-
-msgid "Car"
-msgstr "Araç"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Isa3"
-
-msgid "Country"
-msgstr "Ãœlke"
-
-msgid "Postal"
-msgstr "Posta"
-
-msgid "Town"
-msgstr "Åžehir"
-
-msgid "District"
-msgstr "Bölge"
-
-msgid "Street"
-msgstr "Cadde"
-
-msgid "Number"
-msgstr "Numara"
-
-msgid "Enter Destination"
-msgstr "Hedefi Giriniz"
-
-msgid "Zip Code"
-msgstr "Zip Kodu"
-
-msgid "City"
-msgstr "Åžehir"
-
-msgid "District/Township"
-msgstr "Bölge/Mahal"
-
-msgid "Map"
-msgstr "Harita"
-
-msgid "Bookmark"
-msgstr "Yer imi"
-
-msgid "Destination"
-msgstr "Hedef"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Görüntüle"
-
-msgid "_Route"
-msgstr "Rota"
-
-msgid "_Former Destinations"
-msgstr "önceki istikamet"
-
-msgid "_Bookmarks"
-msgstr "Yer Ä°mleri"
-
-msgid "_Map"
-msgstr "Harita"
-
-msgid "_Layout"
-msgstr "YerleÅŸim"
-
-msgid "_Projection"
-msgstr "İzdüşüm"
-
-msgid "_Vehicle"
-msgstr "Araç"
-
-msgid "Zoom_Out"
-msgstr "Uzaklaştır"
-
-msgid "Decrease zoom level"
-msgstr "Uzaklaştır"
-
-msgid "Zoom_In"
-msgstr "Yakınlaştır"
-
-msgid "Increase zoom level"
-msgstr "Yakınlaştır"
-
-msgid "_Recalculate"
-msgstr "Yeniden hesapla"
-
-msgid "Redraw map"
-msgstr "Haritayı tekrar çiz"
-
-msgid "_Info"
-msgstr "Bilgi"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Adres aramayı açar"
-
-msgid "_POI search"
-msgstr "_POI arama"
-
-msgid "Opens POI search dialog"
-msgstr "POI arama penceresini açar"
-
-msgid "_Stop Navigation"
-msgstr "Dolaşmayı Durdur"
-
-msgid "Test"
-msgstr "Test"
-
-msgid "_Quit"
-msgstr "Çı_kış"
-
-msgid "Quit the application"
-msgstr "Uygulamadan çık"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Kapalı yol"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr ""
-
-msgid "_Roadbook"
-msgstr "Yol Haritası"
-
-msgid "Show/hide route description"
-msgstr "Rota tanımını Göster/Gizle"
-
-msgid "_Autozoom"
-msgstr "Oto-yaklaÅŸ"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Otomatik yakınlaştırmayı açar/kapatır"
-
-msgid "_Fullscreen"
-msgstr "Tam Ekran"
-
-msgid "Data"
-msgstr "Veri"
-
-msgid "Pharmacy"
-msgstr "Eczane"
-
-msgid "Restaurant"
-msgstr "Restoran"
-
-msgid "Restaurant. Fast food"
-msgstr "Restoran. Hazır gıda"
-
-msgid "Hotel"
-msgstr "Otel"
-
-msgid "Car parking"
-msgstr "Otopark"
-
-msgid "Fuel station"
-msgstr "Akaryakıt istasyonu"
-
-msgid "Bank"
-msgstr "Banka"
-
-msgid "Hospital"
-msgstr "Hastane"
-
-msgid "Cinema"
-msgstr "Sinema"
-
-msgid "Train station"
-msgstr "Tren istasyonu"
-
-msgid "School"
-msgstr "Okul"
-
-msgid "Police"
-msgstr "Polis"
-
-msgid "Justice"
-msgstr "Adaley Sarayı"
-
-msgid "Taxi"
-msgstr "Taksi"
-
-msgid "Shopping"
-msgstr "Alışveriş"
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "POI %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "Hedefi buraya ayarla %ld, %ld \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "Haritayı buraya ayarla %ld, %ld \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr "POI arama"
-
-msgid "Select a category"
-msgstr "Bir kategori seç"
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr "Bir POI se."
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "Kategori"
-
-msgid "Direction"
-msgstr "Yön"
-
-msgid "Distance(m)"
-msgstr "Mesafe(m)"
-
-msgid "Name"
-msgstr "Ä°sim"
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "K"
-
-msgid "NE"
-msgstr "KD"
-
-msgid "E"
-msgstr "D"
-
-msgid "SE"
-msgstr "GD"
-
-msgid "S"
-msgstr "G"
-
-msgid "SW"
-msgstr "GB"
-
-msgid "W"
-msgstr "B"
-
-msgid "NW"
-msgstr "Kuzey-Batı"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Hayır"
-
-msgid "2D"
-msgstr "2B"
-
-msgid "3D"
-msgstr "3B"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Rota %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Rota 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Yardım"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Tarayıcıda Bak"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Sokaklar"
-
-msgid "House numbers"
-msgstr "Ev numaraları"
-
-msgid "View Attributes"
-msgstr "Özniteliklere Bak"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "İlgi Noktaları"
-
-msgid "View on map"
-msgstr "Haritada bak"
-
-msgid "Remove search results from the map"
-msgstr "Arama sonuçlarını haritadan sil"
-
-msgid "Show results on the map"
-msgstr "Sonuçları haritada göster"
-
-msgid "Cut Bookmark"
-msgstr "Yer Ä°mini Kes"
-
-msgid "Copy Bookmark"
-msgstr "Yer Ä°mini Kopyala"
-
-msgid "Rename Bookmark"
-msgstr "Yer İmini Yeniden Adlandır"
-
-msgid "Paste Bookmark"
-msgstr "Yer İmini Yapıştır"
-
-msgid "Delete Bookmark"
-msgstr "Yer Ä°mini Sil"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Yer Ä°mleri"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr "Dizini Sil"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Yer İmi Klasörünü Ekle"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Yer imini yapıştır"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Yerimi ata %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "%s Ä°ndir"
-
-msgid "Map Download"
-msgstr "Harita Ä°ndirme"
-
-msgid "Active"
-msgstr "Etkin"
-
-msgid "Download Enabled"
-msgstr "Ä°ndirme EtkinleÅŸtirildi"
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Uydu durumunu göster"
-
-msgid " Elevation "
-msgstr " Yükseklik "
-
-msgid " Azimuth "
-msgstr " Azimut "
-
-msgid "Show NMEA Data"
-msgstr "NMEA verisi göster"
-
-msgid "car"
-msgstr "araba"
-
-msgid "bike"
-msgstr "bisiklet"
-
-msgid "pedestrian"
-msgstr "yaya"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Geçerli profil: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Yeni profil: %s"
-
-msgid "Set as active"
-msgstr "Etkin olarak ata"
-
-msgid "Show Satellite status"
-msgstr "Uydu durumunuı göster"
-
-msgid "Show NMEA data"
-msgstr "NMEA verisi göster"
-
-msgid "Add Bookmark"
-msgstr "Yer Ä°mi Ekle"
-
-msgid "Rename"
-msgstr "Yeniden Ä°simlendir"
-
-msgid "About Navit"
-msgstr "Navit Hakkında"
-
-#. Authors
-msgid "By"
-msgstr "Yazar"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Ve tüm Navit takımı"
-
-msgid "members and contributors."
-msgstr "üyeler ve katkıda bulunanlar."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr "Koordinat Gir"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "Enlem Boylam"
-
-msgid "Enter coordinates, for example:"
-msgstr "Koordinat gir, örneğin:"
-
-msgid "Vehicle"
-msgstr "Araç"
-
-msgid "Rules"
-msgstr "Kurallar"
-
-msgid "Lock on road"
-msgstr "Yola Kilitlen"
-
-msgid "Northing"
-msgstr "Kuzey mesafesi"
-
-msgid "Map follows Vehicle"
-msgstr "Harita aracı takip etsin"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Haritalar"
-
-msgid "Layout"
-msgstr "YerleÅŸim"
-
-msgid "Height Profile"
-msgstr "Yükseklik Profili"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Rota Açıklaması"
-
-msgid "Show Locale"
-msgstr "Yerel Ayarlar"
-
-msgid "Former Destinations"
-msgstr "önceki istikamet"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Mesaj"
-
-msgid "Back"
-msgstr "Geri"
-
-msgid "Back to map"
-msgstr "Haritaya dön"
-
-msgid "Main Menu"
-msgstr "Ana Menü"
-
-msgid "House number"
-msgstr "Ev no:"
-
-msgid "Next"
-msgstr "Ä°leri"
-
-msgid "Prev"
-msgstr "Geri"
-
-msgid "Return to route!"
-msgstr "Rotaya dön!"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "Dikkat! Kamera!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "Lütfen hızınızı düşürünüz"
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "Ara"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "Harita verisi (c) OpenStreetMap destekçileri, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-"Geçerli harita konumu %s kullanılabilir değil\n"
-"Lütfen bir SD kart taktıktan sonra Navit'i yeniden başlatın veya başka bir "
-"harita konumu seçin."
-
-msgid "Downloaded maps"
-msgstr "Ä°ndirilen haritalar"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr "Ä°ptal"
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr "Tüm Dünya"
-
-msgid "Africa"
-msgstr "Afrika"
-
-msgid "Canary Islands"
-msgstr "Kanarya Adaları"
-
-msgid "Asia"
-msgstr "Asya"
-
-msgid "Korea"
-msgstr "Kore"
-
-msgid "Taiwan"
-msgstr "Tayvan"
-
-msgid "UAE+Other"
-msgstr "UAE+DiÄŸer"
-
-msgid "Oceania"
-msgstr "Okyanusya"
-
-msgid "Tasmania"
-msgstr "Tazmanya"
-
-msgid "Victoria"
-msgstr "Viktoria"
-
-msgid "New South Wales"
-msgstr "Yeni Güney Galler"
-
-msgid "Europe"
-msgstr "Avrupa"
-
-msgid "Western Europe"
-msgstr "Batı Avrupa"
-
-msgid "Azores"
-msgstr "Azorlar"
-
-msgid "BeNeLux"
-msgstr "BeNeLux"
-
-msgid "Alsace"
-msgstr "Alsas"
-
-msgid "Aquitaine"
-msgstr "Akitanya"
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr "Aşağı Normandiya"
-
-msgid "Bourgogne"
-msgstr "Burgonya"
-
-msgid "Bretagne"
-msgstr "Britanya"
-
-msgid "Centre"
-msgstr "Merkez"
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr "Korsika"
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr "Yukarı Normandiya"
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr "Aşağı Bavyera"
-
-msgid "Oberbayern"
-msgstr "Yukarı Bavyera"
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr "Berlin"
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr "Bremen"
-
-msgid "Hamburg"
-msgstr "Hamburg"
-
-msgid "Hessen"
-msgstr "Hesse"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr "Aşağı Saksonya"
-
-msgid "Nordrhein-westfalen"
-msgstr "Kuzey Ren-Vestfalya"
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr "Saksonya"
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr "Galiçya"
-
-msgid "Scandinavia"
-msgstr "Ä°skandinavya"
-
-msgid "England"
-msgstr "Ä°ngiltere"
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr "İskoçya"
-
-msgid "Wales"
-msgstr "Galler"
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr "Kuzey Amerika"
-
-msgid "Alaska"
-msgstr "Alaska"
-
-msgid "Hawaii"
-msgstr "Hawaii"
-
-msgid "USA"
-msgstr "ABD"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (Alaska ve Hawaii hariç)"
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr "KuzeydoÄŸu"
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr "Güney"
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr "Teksas"
-
-msgid "Virginia"
-msgstr "Virjinya"
-
-msgid "West Virginia"
-msgstr "Batı Virjinya"
-
-msgid "West"
-msgstr "Batı"
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr "Kaliforniya"
-
-msgid "Colorado"
-msgstr "Kolorado"
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr "Güney+Orta Amerika"
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr "indiriliyor"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "hazır"
-
-msgid "Media selected for map storage is not available"
-msgstr "Harita saklama için seçilen ortam kullanılabilir değil"
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "Yeterli boÅŸ alan yok"
-
-msgid "Error downloading map!"
-msgstr "Harita indirirken hata oluÅŸtu!"
-
-msgid "Error writing map!"
-msgstr "Harita yazılırken hata oluştu!"
-
-msgid "Map download aborted!"
-msgstr "Harita indirmesi iptal edildi!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "Kalan Süre"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "Harita indirme"
-
-msgid "Vehicle Position"
-msgstr "Araç Konumu"
-
-msgid "Main menu"
-msgstr "Ana menü"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr "Haritayı Göster"
-
-msgid "Settings"
-msgstr "Ayarlar"
-
-msgid "Tools"
-msgstr "Araçlar"
-
-msgid "Route"
-msgstr "Rota"
-
-msgid "About"
-msgstr "Hakkında"
-
-msgid "Quit"
-msgstr "Çık"
-
-msgid "Actions"
-msgstr "Eylemler"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr "Koordinatlar"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Navigasyonu\n"
-"Durdur"
-
-msgid "Display"
-msgstr "Görüntüle"
-
-msgid "Fullscreen"
-msgstr "Tam Ekran"
-
-msgid "Window Mode"
-msgstr "Pencere Modu"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Açıklama"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr "Uydu Durumu"
-
-msgid "NMEA Data"
-msgstr "NMEA Verisi"
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "at"
-
-msgid "Truck"
-msgstr "Kamyon"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "Evet"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit başladı"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit çalışıyor"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "Navit'e HoÅŸgeldiniz"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"Navit'i yüklediğiniz için teşekkürler!\n"
-"\n"
-"Başlamak için menüden \"Harita indir\"i seçin. Not: Harita dosya boyutu "
-"büyük olabilir (>50MB) - kablosuz bağlantı önerilir.\n"
-"\n"
-"Harita verisi: (c) OpenStreetMap destekçileri\n"
-"\n"
-"Navit keyfini çıkarın!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "Tamam"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "Daha fazla bilgi"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "Yaklaştır"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "Uzaklaştır"
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "Harita indir"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "Navit'ten Çık"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "Yedekle / Geri Yükle"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr "Harita konumunu ayarla"
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "Bu harita silinsin mi?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "Ä°ndiriliyor:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "Harita indirilirken hata oluÅŸtu."
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "Harita indirmesi iptal edildi"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "Konum yok. Konum alındıktan sonra tekrar açın."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "Geçerli konumu içeren haritalar"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "Adres arama"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "Hedef girin"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "Arıyor..."
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "Adres bulunamadı"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "Arama sonuçları alınıyor"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "Arama sonuçları yükleniyor"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "Hiçbir sonuç bulunamadı"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "Hiçbir metin girilmedi"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "Hedef buraya ayarlanıyor:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "Bir eylem seçin"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "Lütfen bir SD Kart takın"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "Yedekleniyor..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "Geri yükleniyor..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "Yedekleme dizini oluşturulamadı"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "Yedekleme başarısız"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Hiçbir yedek bulunamadı"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Geri yükleme başarısız"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Yedekleme başarılı"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Geri yükleme başarılı\n"
-"Lütfen Navit'i yeniden başlatın"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Yedek bulunamadı"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Geri yükleme başarısız"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Yedek seçin"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Yedekle"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "ardından %1$s'de kavşaktan çıkın %2$s"
diff --git a/po/uk.po.in b/po/uk.po.in
deleted file mode 100644
index 787e71327..000000000
--- a/po/uk.po.in
+++ /dev/null
@@ -1,2758 +0,0 @@
-# Ukrainian translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Anton https://launchpad.net/~goooglist
-# KaZeR https://launchpad.net/~kazer
-# Knedlyk https://launchpad.net/~yupadmin
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# andygol https://launchpad.net/~andygol
-# serg_stetsuk https://launchpad.net/~serg-stetsuk
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2016-12-17 00:03+0000\n"
-"Last-Translator: Anton <Unknown>\n"
-"Language-Team: Ukrainian <uk@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"Language: uk\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "ЗапуÑк з початкового каталогу\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "наÑтройка '%s' до '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "нульовий"
-
-msgid "first"
-msgstr "перший"
-
-msgid "second"
-msgstr "другий"
-
-msgid "third"
-msgstr "третій"
-
-msgid "fourth"
-msgstr "четвертий"
-
-msgid "fifth"
-msgstr "п’Ñтий"
-
-msgid "sixth"
-msgstr "шоÑтий"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "нульовий виїзд"
-
-msgid "first exit"
-msgstr "перший виїзд"
-
-msgid "second exit"
-msgstr "другий виїзд"
-
-msgid "third exit"
-msgstr "третій виїзд"
-
-msgid "fourth exit"
-msgstr "четвертий виїзд"
-
-msgid "fifth exit"
-msgstr "п’Ñтий виїзд"
-
-msgid "sixth exit"
-msgstr "шоÑтий виїзд"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d метрів"
-
-#, c-format
-msgid "in %d meters"
-msgstr "за %d метрів"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d кілометрів"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "за %d.%d кілометрів"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d кілометр"
-msgstr[1] "%d кілометри"
-msgstr[2] "%d кілометрів"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "за %d кілометр"
-msgstr[1] "за %d кілометри"
-msgstr[2] "за %d кілометрів"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "з'їзд на"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sна %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sна %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sна %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sна %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sв %s"
-
-msgid "When possible, please turn around"
-msgstr "Якщо це можливо, то розвернітьÑÑ"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "Їдьте дорогою наÑтупні %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Скоро виїзд на дорогу з кільцевим рухом"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Виїдьте з ÐºÑ–Ð»ÑŒÑ†Ñ Ñ‡ÐµÑ€ÐµÐ· %1$s %2$s"
-
-msgid "soon"
-msgstr "Ñкоро"
-
-msgid "now"
-msgstr "зараз"
-
-msgid "then"
-msgstr "тоді"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "праворуч"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "ліворуч"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "легко "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "круто "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "З’їдьте на дорогу %1$s до %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "піÑÐ»Ñ %i дороги"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Поверніть на %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "тоді то розвернітьÑÑ"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "То розвернітьÑÑ %1$s"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "тоді то розвернітьÑÑ"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "То розвернітьÑÑ %1$s"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "Ñ– тоді Ви прибудете в міÑце призначеннÑ."
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Ви доÑÑгли міÑÑ†Ñ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "Розв'Ñзка"
-
-msgid "Exit"
-msgstr "Виїзд"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "ПозиціÑ"
-
-msgid "Command"
-msgstr "Команда"
-
-msgid "Length"
-msgstr "Довжина"
-
-msgid "km"
-msgstr "км"
-
-msgid "m"
-msgstr "м"
-
-msgid "Time"
-msgstr "ЧаÑ"
-
-msgid "Destination Length"
-msgstr "ВідÑтань до міÑÑ†Ñ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ"
-
-msgid "Destination Time"
-msgstr "Ð§Ð°Ñ Ð´Ð¾ міÑÑ†Ñ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ"
-
-msgid "Roadbook"
-msgstr "ÐÑ‚Ð»Ð°Ñ Ð´Ð¾Ñ€Ñ–Ð³"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Ð’Ñтановити Ñк початкове положеннÑ"
-
-msgid "Set as destination"
-msgstr "Ð’Ñтановити Ñк міÑце призначеннÑ"
-
-msgid "Add as bookmark"
-msgstr "Додати Ñк закладку"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Точка 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Координати екрану: %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Ðндора"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Об’єднані ÐрабÑькі Емірати"
-
-#. 004
-msgid "Afghanistan"
-msgstr "ÐфганіÑтан"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Ðнтигуа Ñ– Барбуда"
-
-#. 660
-msgid "Anguilla"
-msgstr "ÐнгільÑ"
-
-#. 008
-msgid "Albania"
-msgstr "ÐлбаніÑ"
-
-#. 051
-msgid "Armenia"
-msgstr "ВірменіÑ"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "ÐнтильÑькі оÑтрови (Ðідерланди)"
-
-#. 024
-msgid "Angola"
-msgstr "Ðнгола"
-
-#. 010
-msgid "Antarctica"
-msgstr "Ðнтарктика"
-
-#. 032
-msgid "Argentina"
-msgstr "Ðргентина"
-
-#. 016
-msgid "American Samoa"
-msgstr "ÐмериканÑьке Самоа"
-
-#. 040
-msgid "Austria"
-msgstr "ÐвÑтріÑ"
-
-#. 036
-msgid "Australia"
-msgstr "ÐвÑтраліÑ"
-
-#. 533
-msgid "Aruba"
-msgstr "Ðруба"
-
-#. 248
-msgid "Aland Islands"
-msgstr "ÐландÑькі оÑтрови"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Ðзербайджан"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "БоÑÐ½Ñ–Ñ Ñ– Герцеговина"
-
-#. 052
-msgid "Barbados"
-msgstr "БарбадоÑ"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#. 056
-msgid "Belgium"
-msgstr "БельгіÑ"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Буркіна ФаÑо"
-
-#. 100
-msgid "Bulgaria"
-msgstr "БолгаріÑ"
-
-#. 048
-msgid "Bahrain"
-msgstr "Бахрейн"
-
-#. 108
-msgid "Burundi"
-msgstr "Бурунді"
-
-#. 204
-msgid "Benin"
-msgstr "Бенін"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Сен Бартельмі"
-
-#. 060
-msgid "Bermuda"
-msgstr "БермудÑькі оÑтрови"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Бруней-ДаруÑÑалам"
-
-#. 068
-msgid "Bolivia"
-msgstr "БолівіÑ"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "БразіліÑ"
-
-#. 044
-msgid "Bahamas"
-msgstr "БагамÑькі оÑтрови"
-
-#. 064
-msgid "Bhutan"
-msgstr "Бутан"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "ОÑтрів Буве"
-
-#. 072
-msgid "Botswana"
-msgstr "БотÑвана"
-
-#. 112
-msgid "Belarus"
-msgstr "БілоруÑÑŒ"
-
-#. 084
-msgid "Belize"
-msgstr "Беліз"
-
-#. 124
-msgid "Canada"
-msgstr "Канада"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "КокоÑові оÑтрови"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Конго, Демократична РеÑпубліка"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Центрально-ÐфриканÑька РеÑпубліка"
-
-#. 178
-msgid "Congo"
-msgstr "Конго"
-
-#. 756
-msgid "Switzerland"
-msgstr "ШвейцаріÑ"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "Кот д’Івуар"
-
-#. 184
-msgid "Cook Islands"
-msgstr "ОÑтрови Кука"
-
-#. 152
-msgid "Chile"
-msgstr "Чілі"
-
-#. 120
-msgid "Cameroon"
-msgstr "Камерун"
-
-#. 156
-msgid "China"
-msgstr "Китай"
-
-#. 170
-msgid "Colombia"
-msgstr "КолумбіÑ"
-
-#. 188
-msgid "Costa Rica"
-msgstr "КоÑта Ріка"
-
-#. 192
-msgid "Cuba"
-msgstr "Куба"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Кабо-Верде"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "ОÑтрів Різдва"
-
-#. 196
-msgid "Cyprus"
-msgstr "Кіпр"
-
-#. 203
-msgid "Czech Republic"
-msgstr "ЧеÑька РеÑпубліка"
-
-#. 276
-msgid "Germany"
-msgstr "Ðімеччина"
-
-#. 262
-msgid "Djibouti"
-msgstr "Джибуті"
-
-#. 208
-msgid "Denmark"
-msgstr "ДаніÑ"
-
-#. 212
-msgid "Dominica"
-msgstr "Домініка"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "ДомініканÑька реÑпубліка"
-
-#. 012
-msgid "Algeria"
-msgstr "Ðлжир"
-
-#. 218
-msgid "Ecuador"
-msgstr "Еквадор"
-
-#. 233
-msgid "Estonia"
-msgstr "ЕÑтоніÑ"
-
-#. 818
-msgid "Egypt"
-msgstr "Єгипет"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Західна Сахара"
-
-#. 232
-msgid "Eritrea"
-msgstr "ЕритреÑ"
-
-#. 724
-msgid "Spain"
-msgstr "ІÑпаніÑ"
-
-#. 231
-msgid "Ethiopia"
-msgstr "ЕфіопіÑ"
-
-#. 246
-msgid "Finland"
-msgstr "ФінлÑндіÑ"
-
-#. 242
-msgid "Fiji"
-msgstr "Фіджі"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "ФолклендÑькі оÑтрови (БританіÑ)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "МікронезіÑ, федеративні штати"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "ФарерÑькі оÑтрови"
-
-#. 250
-msgid "France"
-msgstr "ФранціÑ"
-
-#. 266
-msgid "Gabon"
-msgstr "Габон"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Об’єднане КоролівÑтво (ВеликобританіÑ)"
-
-#. 308
-msgid "Grenada"
-msgstr "Гренада"
-
-#. 268
-msgid "Georgia"
-msgstr "ГрузіÑ"
-
-#. 254
-msgid "French Guiana"
-msgstr "Французька Гвіана"
-
-#. 831
-msgid "Guernsey"
-msgstr "ГернÑÑ–"
-
-#. 288
-msgid "Ghana"
-msgstr "Гана"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Гібралтар"
-
-#. 304
-msgid "Greenland"
-msgstr "ГренландіÑ"
-
-#. 270
-msgid "Gambia"
-msgstr "ГамбіÑ"
-
-#. 324
-msgid "Guinea"
-msgstr "ГвінеÑ"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Гваделупа"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Екваторіальна ГвінеÑ"
-
-#. 300
-msgid "Greece"
-msgstr "ГреціÑ"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Південна Ð”Ð¶Ð¾Ñ€Ð´Ð¶Ñ–Ñ Ñ‚Ð° Південні Сандвічеві ОÑтрови"
-
-#. 320
-msgid "Guatemala"
-msgstr "Гватемала"
-
-#. 316
-msgid "Guam"
-msgstr "Гуам"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "ГвінеÑ-БіÑÑау"
-
-#. 328
-msgid "Guyana"
-msgstr "Гайана"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Гонконг"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "ОÑтрів Херд Ñ– ОÑтрови Макдональд"
-
-#. 340
-msgid "Honduras"
-msgstr "ГондураÑ"
-
-#. 191
-msgid "Croatia"
-msgstr "ХорватіÑ"
-
-#. 332
-msgid "Haiti"
-msgstr "Гаїті"
-
-#. 348
-msgid "Hungary"
-msgstr "Угорщина"
-
-#. 360
-msgid "Indonesia"
-msgstr "ІндонезіÑ"
-
-#. 372
-msgid "Ireland"
-msgstr "ІрландіÑ"
-
-#. 376
-msgid "Israel"
-msgstr "Ізраїль"
-
-#. 833
-msgid "Isle of Man"
-msgstr "ОÑтрів Мен"
-
-#. 356
-msgid "India"
-msgstr "ІндіÑ"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "БританÑькі території у ІндійÑькому океані"
-
-#. 368
-msgid "Iraq"
-msgstr "Ірак"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Іран, ІÑламÑька РеÑпубліка"
-
-#. 352
-msgid "Iceland"
-msgstr "ІÑландіÑ"
-
-#. 380
-msgid "Italy"
-msgstr "ІталіÑ"
-
-#. 832
-msgid "Jersey"
-msgstr "ДжерÑÑ–"
-
-#. 388
-msgid "Jamaica"
-msgstr "Ямайка"
-
-#. 400
-msgid "Jordan"
-msgstr "ЙорданіÑ"
-
-#. 392
-msgid "Japan"
-msgstr "ЯпоніÑ"
-
-#. 404
-msgid "Kenya"
-msgstr "КеніÑ"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "КиргизÑтан"
-
-#. 116
-msgid "Cambodia"
-msgstr "Камбоджа"
-
-#. 296
-msgid "Kiribati"
-msgstr "Кірибаті"
-
-#. 174
-msgid "Comoros"
-msgstr "КоморÑькі оÑтрови"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Сент-ÐšÑ–Ñ‚Ñ‚Ñ Ñ– ÐевіÑ"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "КореÑ, Демократична РеÑпубліка"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "КореÑ, РеÑпубліка"
-
-#. 414
-msgid "Kuwait"
-msgstr "Кувейт"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Кайманові оÑтрови"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "КазахÑтан"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "ЛаоÑька Ðародно-Демократична РеÑпубліка"
-
-#. 422
-msgid "Lebanon"
-msgstr "Ліван"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Санта ЛючіÑ"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Ліхтенштейн"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Шрі Ланка"
-
-#. 430
-msgid "Liberia"
-msgstr "ЛіберіÑ"
-
-#. 426
-msgid "Lesotho"
-msgstr "ЛеÑото"
-
-#. 440
-msgid "Lithuania"
-msgstr "Литва"
-
-#. 442
-msgid "Luxembourg"
-msgstr "ЛюкÑембург"
-
-#. 428
-msgid "Latvia"
-msgstr "ЛатвіÑ"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Марокко"
-
-#. 492
-msgid "Monaco"
-msgstr "Монако"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "РеÑпубліка Молдова"
-
-#. 499
-msgid "Montenegro"
-msgstr "ЧорногоріÑ"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Сен-Мартен (французька чаÑтина)"
-
-#. 450
-msgid "Madagascar"
-msgstr "МадагаÑкар"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Маршаллові ОÑтрови"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "МакедоніÑ, ÐºÐ¾Ð»Ð¸ÑˆÐ½Ñ Ñ€ÐµÑпубліка ЮгоÑлавії"
-
-#. 466
-msgid "Mali"
-msgstr "Малі"
-
-#. 104
-msgid "Myanmar"
-msgstr "Ðœ'Ñнма"
-
-#. 496
-msgid "Mongolia"
-msgstr "МонголіÑ"
-
-#. 446
-msgid "Macao"
-msgstr "Макао"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Північні МаріанÑькі ОÑтрови"
-
-#. 474
-msgid "Martinique"
-msgstr "Мартиніка"
-
-#. 478
-msgid "Mauritania"
-msgstr "МавританіÑ"
-
-#. 500
-msgid "Montserrat"
-msgstr "МонтÑеррат"
-
-#. 470
-msgid "Malta"
-msgstr "Мальта"
-
-#. 480
-msgid "Mauritius"
-msgstr "Маврикій"
-
-#. 462
-msgid "Maldives"
-msgstr "Мальдиви"
-
-#. 454
-msgid "Malawi"
-msgstr "Малаві"
-
-#. 484
-msgid "Mexico"
-msgstr "МекÑика"
-
-#. 458
-msgid "Malaysia"
-msgstr "МалайзіÑ"
-
-#. 508
-msgid "Mozambique"
-msgstr "Мозамбік"
-
-#. 516
-msgid "Namibia"
-msgstr "ÐамібіÑ"
-
-#. 540
-msgid "New Caledonia"
-msgstr "Ðова КаледоніÑ"
-
-#. 562
-msgid "Niger"
-msgstr "Ðігер"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "ÐорфолкÑькі оÑтрови"
-
-#. 566
-msgid "Nigeria"
-msgstr "ÐігеріÑ"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Ðікарагуа"
-
-#. 528
-msgid "Netherlands"
-msgstr "Ðідерланди"
-
-#. 578
-msgid "Norway"
-msgstr "ÐорвегіÑ"
-
-#. 524
-msgid "Nepal"
-msgstr "Ðепал"
-
-#. 520
-msgid "Nauru"
-msgstr "Ðауру"
-
-#. 570
-msgid "Niue"
-msgstr "Ðіуе"
-
-#. 554
-msgid "New Zealand"
-msgstr "Ðова ЗеландіÑ"
-
-#. 512
-msgid "Oman"
-msgstr "Оман"
-
-#. 591
-msgid "Panama"
-msgstr "Панама"
-
-#. 604
-msgid "Peru"
-msgstr "Перу"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Французька ПолінезіÑ"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Папуа Ðова ГвінеÑ"
-
-#. 608
-msgid "Philippines"
-msgstr "Філіппіни"
-
-#. 586
-msgid "Pakistan"
-msgstr "ПакиÑтан"
-
-#. 616
-msgid "Poland"
-msgstr "Польща"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Сен-П'єр і Мікелон"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Піткерн"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Пуерто Ріко"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Окуповані ПалеÑтинÑькі Території"
-
-#. 620
-msgid "Portugal"
-msgstr "ПортугаліÑ"
-
-#. 585
-msgid "Palau"
-msgstr "Палау"
-
-#. 600
-msgid "Paraguay"
-msgstr "Парагвай"
-
-#. 634
-msgid "Qatar"
-msgstr "Катар"
-
-#. 638
-msgid "Reunion"
-msgstr "Реюньйон"
-
-#. 642
-msgid "Romania"
-msgstr "РумуніÑ"
-
-#. 688
-msgid "Serbia"
-msgstr "СербіÑ"
-
-#. 643
-msgid "Russian Federation"
-msgstr "РоÑійÑька ФедераціÑ"
-
-#. 646
-msgid "Rwanda"
-msgstr "Руанда"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "СаудівÑька ÐравіÑ"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Соломонові оÑтрови"
-
-#. 690
-msgid "Seychelles"
-msgstr "СейшельÑькі оÑтрови"
-
-#. 736
-msgid "Sudan"
-msgstr "Судан"
-
-#. 752
-msgid "Sweden"
-msgstr "ШвеціÑ"
-
-#. 702
-msgid "Singapore"
-msgstr "Сингапур"
-
-#. 654
-msgid "Saint Helena"
-msgstr "ОÑтрів СвÑтої Єлени"
-
-#. 705
-msgid "Slovenia"
-msgstr "СловеніÑ"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "ОÑтрови Свальбард та Ян-Маєн"
-
-#. 703
-msgid "Slovakia"
-msgstr "Словаччина"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Сьєрра-Леоне"
-
-#. 674
-msgid "San Marino"
-msgstr "Сан Маріно"
-
-#. 686
-msgid "Senegal"
-msgstr "Сенегал"
-
-#. 706
-msgid "Somalia"
-msgstr "Сомалі"
-
-#. 740
-msgid "Suriname"
-msgstr "Сурінам"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Сан-Томе Ñ– ПринÑипі"
-
-#. 222
-msgid "El Salvador"
-msgstr "Сальвадор"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "СирійÑька ÐрабÑька РеÑпубліка"
-
-#. 748
-msgid "Swaziland"
-msgstr "Свазиленд"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "ОÑтрови Ð¢ÐµÑ€ÐºÑ Ñ– КайкоÑ"
-
-#. 148
-msgid "Chad"
-msgstr "Чад"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Французькі Південні Території"
-
-#. 768
-msgid "Togo"
-msgstr "Того"
-
-#. 764
-msgid "Thailand"
-msgstr "Таїланд"
-
-#. 762
-msgid "Tajikistan"
-msgstr "ТаджикіÑтан"
-
-#. 772
-msgid "Tokelau"
-msgstr "Токелау"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Східний Тімор"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "ТуркменіÑтан"
-
-#. 788
-msgid "Tunisia"
-msgstr "ТунізіÑ"
-
-#. 776
-msgid "Tonga"
-msgstr "Тонга"
-
-#. 792
-msgid "Turkey"
-msgstr "Туреччина"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Тринідад і Тобаго"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Тувалу"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Иайвань, Ð¿Ñ€Ð¾Ð²Ñ–Ð½Ñ†Ñ–Ñ ÐšÐ¸Ñ‚Ð°ÑŽ"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "ТанзаніÑ, Об’єднана РеÑпубліка"
-
-#. 804
-msgid "Ukraine"
-msgstr "Україна"
-
-#. 800
-msgid "Uganda"
-msgstr "Уганда"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "Сполучені Штати Малих Віддалених ОÑтровів"
-
-#. 840
-msgid "United States"
-msgstr "Сполучені Штати Ðмерики"
-
-#. 858
-msgid "Uruguay"
-msgstr "Уругвай"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "УзбекіÑтан"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "СвÑтий ПреÑтіл (Ватикан, МіÑто-Держава)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Сент-ВінÑент Ñ– Гренадини"
-
-#. 862
-msgid "Venezuela"
-msgstr "ВенеÑуела"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "ВіргінÑькі оÑтрови (БританіÑ)"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "ВіргінÑькі оÑтрови (СШÐ)"
-
-#. 704
-msgid "Viet Nam"
-msgstr "В’єтнам"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Вануату"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Ð£Ð¾Ð»Ð»Ñ–Ñ Ñ– Футуна"
-
-#. 882
-msgid "Samoa"
-msgstr "Самоа"
-
-#. 887
-msgid "Yemen"
-msgstr "Йемен"
-
-#. 175
-msgid "Mayotte"
-msgstr "Майотта"
-
-#. 710
-msgid "South Africa"
-msgstr "Південна Ðфрика"
-
-#. 894
-msgid "Zambia"
-msgstr "ЗамбіÑ"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Зімбабве"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "Ðовідомо, додайте is_in теґ до цих міÑÑ‚"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Точка на карті"
-
-msgid "Car"
-msgstr "Машина"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Країна"
-
-msgid "Postal"
-msgstr "Поштова адреÑа"
-
-msgid "Town"
-msgstr "МіÑто"
-
-msgid "District"
-msgstr "Округ"
-
-msgid "Street"
-msgstr "ВулицÑ"
-
-msgid "Number"
-msgstr "Ðомер"
-
-msgid "Enter Destination"
-msgstr "Введіть пункт призначеннÑ"
-
-msgid "Zip Code"
-msgstr "Поштовий індекÑ"
-
-msgid "City"
-msgstr "МіÑто"
-
-msgid "District/Township"
-msgstr "Округ/Селище"
-
-msgid "Map"
-msgstr "Карта"
-
-msgid "Bookmark"
-msgstr "Закладка"
-
-msgid "Destination"
-msgstr "Пункт призначеннÑ"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Показати"
-
-msgid "_Route"
-msgstr "Дорога"
-
-msgid "_Former Destinations"
-msgstr "Минулий пункт призначеннÑ"
-
-msgid "_Bookmarks"
-msgstr "Закладки"
-
-msgid "_Map"
-msgstr "Карта"
-
-msgid "_Layout"
-msgstr "Розкладка"
-
-msgid "_Projection"
-msgstr "ПроекціÑ"
-
-msgid "_Vehicle"
-msgstr "ТранÑпортний заÑіб"
-
-msgid "Zoom_Out"
-msgstr "Зменшити"
-
-msgid "Decrease zoom level"
-msgstr "Зменшити маÑштаб"
-
-msgid "Zoom_In"
-msgstr "Збільшити"
-
-msgid "Increase zoom level"
-msgstr "Збільшити маÑштаб"
-
-msgid "_Recalculate"
-msgstr "Перерахувати"
-
-msgid "Redraw map"
-msgstr "Оновити мапу"
-
-msgid "_Info"
-msgstr "ІнформаціÑ"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Відкриває діалог пошуку адреÑи"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Зупинити навігацію"
-
-msgid "Test"
-msgstr "ТеÑÑ‚"
-
-msgid "_Quit"
-msgstr "_Вийти"
-
-msgid "Quit the application"
-msgstr "Вийти з програми"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "ТриматиÑÑ Ð´Ð¾Ñ€Ð¾Ð³Ð¸"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Переключає орієнтацію мапи на північ або по ходу руху"
-
-msgid "_Roadbook"
-msgstr "ÐÑ‚Ð»Ð°Ñ Ð´Ð¾Ñ€Ñ–Ð³"
-
-msgid "Show/hide route description"
-msgstr "Показати/Ñховати Ð¾Ð¿Ð¸Ñ Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ñƒ"
-
-msgid "_Autozoom"
-msgstr "Ðвторозмір"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Ввімкнути/вимкнути автоматичне маÑштабуваннÑ"
-
-msgid "_Fullscreen"
-msgstr "Ðа веÑÑŒ екран"
-
-msgid "Data"
-msgstr "Дата"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "Пн"
-
-msgid "NE"
-msgstr "ПнСх"
-
-msgid "E"
-msgstr "Сх"
-
-msgid "SE"
-msgstr "ПдСх"
-
-msgid "S"
-msgstr "Пд"
-
-msgid "SW"
-msgstr "ПдЗ"
-
-msgid "W"
-msgstr "З"
-
-msgid "NW"
-msgstr "ПнЗ"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "â„–"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "Інший"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Дорога %4.0fкм %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Дорога 0000км 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Допомога"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Показати в переглÑдачі"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Вулиці"
-
-msgid "House numbers"
-msgstr "Ðомери будинків"
-
-msgid "View Attributes"
-msgstr "Показати атрибути"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ об’єкти"
-
-msgid "View on map"
-msgstr "Показати на карті"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Вирізати закладку"
-
-msgid "Copy Bookmark"
-msgstr "Копіювати закладку"
-
-msgid "Rename Bookmark"
-msgstr "Перейменувати закладку"
-
-msgid "Paste Bookmark"
-msgstr "Ð’Ñтавити закладку"
-
-msgid "Delete Bookmark"
-msgstr "Вилучити закладку"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Закладки"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Додати папку закладок"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Ð’Ñтавити закладку"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Закладка %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Показати ÑÑ‚Ð°Ñ‚ÑƒÑ Ñупутника"
-
-msgid " Elevation "
-msgstr " ВиÑота "
-
-msgid " Azimuth "
-msgstr " Ðзимут "
-
-msgid "Show NMEA Data"
-msgstr "Показати дані NMEA"
-
-msgid "car"
-msgstr "автомобіль"
-
-msgid "bike"
-msgstr "велоÑипед"
-
-msgid "pedestrian"
-msgstr "пішохід"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Поточний профіль: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Змінити профіль на: %s"
-
-msgid "Set as active"
-msgstr "Ð’Ñтановити активним"
-
-msgid "Show Satellite status"
-msgstr "Показати ÑÑ‚Ð°Ñ‚ÑƒÑ Ñупутника"
-
-msgid "Show NMEA data"
-msgstr "Показати дані NMEA"
-
-msgid "Add Bookmark"
-msgstr "Додати закладку"
-
-msgid "Rename"
-msgstr "Перейменувати"
-
-msgid "About Navit"
-msgstr "Про Navit"
-
-#. Authors
-msgid "By"
-msgstr "від"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Ð’Ñе про Navit Team"
-
-msgid "members and contributors."
-msgstr "члени та учаÑникі."
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "ТранÑпортний заÑіб"
-
-msgid "Rules"
-msgstr "Правила"
-
-msgid "Lock on road"
-msgstr "ТриматиÑÑ Ð´Ð¾Ñ€Ð¾Ð³Ð¸"
-
-msgid "Northing"
-msgstr "Північніше"
-
-msgid "Map follows Vehicle"
-msgstr "Карта Ñлідує за транÑпортним заÑобом"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Карти"
-
-msgid "Layout"
-msgstr "Розкладка"
-
-msgid "Height Profile"
-msgstr "Профіль виÑот"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "ÐžÐ¿Ð¸Ñ Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ñƒ"
-
-msgid "Show Locale"
-msgstr "Перевірити локалізацію"
-
-msgid "Former Destinations"
-msgstr "Минулий пункт призначеннÑ"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "ПовідомленнÑ"
-
-msgid "Back"
-msgstr "Ðазад"
-
-msgid "Back to map"
-msgstr "ПовернутиÑÑ Ð´Ð¾ карти"
-
-msgid "Main Menu"
-msgstr "Головне меню"
-
-msgid "House number"
-msgstr "Ðомер будинку"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ñ‚Ñ€Ð°Ð½Ñпорту"
-
-msgid "Main menu"
-msgstr "Головне меню"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"Показати\n"
-"Карту"
-
-msgid "Settings"
-msgstr "ÐаÑтройки"
-
-msgid "Tools"
-msgstr "ІнÑтрументи"
-
-msgid "Route"
-msgstr "Дорога"
-
-msgid "About"
-msgstr "Про програму..."
-
-msgid "Quit"
-msgstr "Вийти"
-
-msgid "Actions"
-msgstr "ДіÑ"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"Зупинити\n"
-"Ðавігацію"
-
-msgid "Display"
-msgstr "Показати"
-
-msgid "Fullscreen"
-msgstr "Ðа веÑÑŒ екран"
-
-msgid "Window Mode"
-msgstr "Режим вікна"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "ОпиÑ"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "кінь"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "Резервної копії не знайдено"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "Помилка відновленнÑ"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "Ð’Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð´Ð°Ð»Ðµ"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"Ð’Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð´Ð°Ð»Ðµ. \n"
-"Будь лаÑка, перезавантажте Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "Резервної копії не знайдено"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "Ð’Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½ÐµÐ²Ð´Ð°Ð»Ðµ"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "Оберіть резервну копію"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "Резервна копіÑ"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "ВідновленнÑ"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "тоді виїдьте з ÐºÑ–Ð»ÑŒÑ†Ñ Ñ‡ÐµÑ€ÐµÐ· %1$s %2$s"
diff --git a/po/ur.po.in b/po/ur.po.in
deleted file mode 100644
index e1ffb4b51..000000000
--- a/po/ur.po.in
+++ /dev/null
@@ -1,2751 +0,0 @@
-# Urdu translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Waqar Ahmed https://launchpad.net/~waqar-17a
-# asghar https://launchpad.net/~asghar144
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-10-10 13:42+0000\n"
-"Last-Translator: Waqar Ahmed <waqar.17a@gmail.com>\n"
-"Language-Team: Urdu <ur@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"Language: ur\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "سورس ڈایرکٹری سے چلا ر ÛÛ’ Ûیں\n"
-
-msgid "first"
-msgstr "Ù¾Ûلا"
-
-msgid "second"
-msgstr "دوسرا"
-
-msgid "third"
-msgstr "تیسرا"
-
-msgid "fourth"
-msgstr "چوتھا"
-
-msgid "fifth"
-msgstr "پانچواں"
-
-msgid "sixth"
-msgstr "چھٹا"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "صÙر سے خارج"
-
-msgid "first exit"
-msgstr "Ù¾Ûلا اخراج"
-
-msgid "second exit"
-msgstr "دوسرا اخراج"
-
-msgid "third exit"
-msgstr "تیسرا اخراج"
-
-msgid "fourth exit"
-msgstr "چوتھا اخراج"
-
-msgid "fifth exit"
-msgstr "پانچواں اخراج"
-
-msgid "sixth exit"
-msgstr "چھٹا اخراج"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d میٹر"
-
-#, c-format
-msgid "in %d meters"
-msgstr "%d میٹر میں"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d کلومیٹر"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "%d.%d کلومیٹر میں"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%sپر %s"
-
-msgid "When possible, please turn around"
-msgstr "جب ممکن ÛÙˆ گھومیں"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "دایئں"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "بایئں"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "آسانی سے "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "سختی سے "
-
-msgid "Set as destination"
-msgstr "بطور منزل انتخاب"
-
-msgid "Enter Destination"
-msgstr "منزل داخل کریں"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Ùعال/غیر Ùعال کریں زوم Ú©ÛŒ خود کار تبدیلی"
-
-msgid " Elevation "
-msgstr " ارتÙاع "
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Ù…ÙˆØ¬ÙˆØ¯Û Ù¾Ø±ÙˆÙائل: %s"
-
-msgid "Add Bookmark"
-msgstr "بک مارک میں شامل"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "ترتیب '%s' سے '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "صÙر سے"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "ایک کلومیٹر"
-msgstr[1] "%d کلومیٹر"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "ایک کلومیٹر میں"
-msgstr[1] "%d کلومیٹر میں"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "ڈھلان میں"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%sمیں سے %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%sمیں سے %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%sمیں سے %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%sمیں سے %s%s%s"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "%s تک سڑک کے مطابق جایئں"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "گول چوراÛÛ’ Ú©Ùˆ %1$s %2$s Ù¾Û’ Ú†Ú¾ÙˆÚ‘ دیں"
-
-msgid "soon"
-msgstr "جلد ÛÛŒ"
-
-msgid "now"
-msgstr "اب"
-
-msgid "then"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "سڑک تک %1$s سے %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "%i سڑکوں کے بعد"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "%1$s%2$s %3$s%4$s گومیں"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "پھر آپ اپنی منزل Ù¾Û Ù¾ÛÙ†Ú† جایئں Ú¯Û’"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "آپ اپنی منزل %s Ù¾Û’ Ù¾ÛÙ†Ú† کئے Ûیں"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "اخراج"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "مقام"
-
-msgid "Command"
-msgstr "کمانڈ"
-
-msgid "Length"
-msgstr "لمبایئ"
-
-msgid "km"
-msgstr "کلومیٹر"
-
-msgid "m"
-msgstr "میٹر"
-
-msgid "Time"
-msgstr "وقت"
-
-msgid "Destination Length"
-msgstr "منزل تک دوری"
-
-msgid "Destination Time"
-msgstr "منزل تک وقت"
-
-msgid "Roadbook"
-msgstr "روڈ بک"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "بطور Ù…ÙˆØ¬ÙˆØ¯Û Ù…Ù‚Ø§Ù… انتخاب"
-
-msgid "Add as bookmark"
-msgstr "بک مارک میں محÙوظ کریں"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "0x%x 0x%x مقام"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "سکرین کورڈینیٹ : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "اندوررا"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "Ù…ØªØ­Ø¯Û Ø¹Ø±Ø¨ امارات"
-
-#. 004
-msgid "Afghanistan"
-msgstr "اÙغانستان"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "انٹگووا اور باربوڈا"
-
-#. 660
-msgid "Anguilla"
-msgstr "انگویلا"
-
-#. 008
-msgid "Albania"
-msgstr "البانیا"
-
-#. 051
-msgid "Armenia"
-msgstr "ارمینیا"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "نیدرلینڈز انٹیلس"
-
-#. 024
-msgid "Angola"
-msgstr "انگولا"
-
-#. 010
-msgid "Antarctica"
-msgstr "انٹارٹیکا"
-
-#. 032
-msgid "Argentina"
-msgstr "ارجنٹینا"
-
-#. 016
-msgid "American Samoa"
-msgstr "امیریکن ساموا"
-
-#. 040
-msgid "Austria"
-msgstr "آسٹریا"
-
-#. 036
-msgid "Australia"
-msgstr "آسٹریلیا"
-
-#. 533
-msgid "Aruba"
-msgstr "آروبا"
-
-#. 248
-msgid "Aland Islands"
-msgstr "آلینڈ آئسلینڈ"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "آذر بائجان"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "بوسنیا حرذےگوینیا"
-
-#. 052
-msgid "Barbados"
-msgstr "باربادوس"
-
-#. 050
-msgid "Bangladesh"
-msgstr "بنگلادیش"
-
-#. 056
-msgid "Belgium"
-msgstr "بلجیئم"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "برکینا Ùازو"
-
-#. 100
-msgid "Bulgaria"
-msgstr "بلغاریÛ"
-
-#. 048
-msgid "Bahrain"
-msgstr "بحرین"
-
-#. 108
-msgid "Burundi"
-msgstr "برنڈی"
-
-#. 204
-msgid "Benin"
-msgstr "بینن"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "سینٹ باتھیلیمی"
-
-#. 060
-msgid "Bermuda"
-msgstr "برمودا"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "برونائی دارالسلام"
-
-#. 068
-msgid "Bolivia"
-msgstr "بولیویا"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "برازیل"
-
-#. 044
-msgid "Bahamas"
-msgstr "بھاماس"
-
-#. 064
-msgid "Bhutan"
-msgstr "بھوٹان"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "بووٹ آئیسلیڈ"
-
-#. 072
-msgid "Botswana"
-msgstr "بوٹسوانا"
-
-#. 112
-msgid "Belarus"
-msgstr "بیلارس"
-
-#. 084
-msgid "Belize"
-msgstr "بلیذ"
-
-#. 124
-msgid "Canada"
-msgstr "کینیڈا"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "کوکوس آئیسلینڈز"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "کونگو ڈیموکریٹک"
-
-#. 140
-msgid "Central African Republic"
-msgstr "مرکزی جمÛÙˆØ±ÛŒÛ Ø§ÙریقÛ"
-
-#. 178
-msgid "Congo"
-msgstr "کونگو"
-
-#. 756
-msgid "Switzerland"
-msgstr "سوئیزرلینڈ"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "کوٹے ڈلوویر"
-
-#. 184
-msgid "Cook Islands"
-msgstr "کک آئیسلینڈ"
-
-#. 152
-msgid "Chile"
-msgstr "چیلی"
-
-#. 120
-msgid "Cameroon"
-msgstr "کامیرون"
-
-#. 156
-msgid "China"
-msgstr "چین"
-
-#. 170
-msgid "Colombia"
-msgstr "کولمبیا"
-
-#. 188
-msgid "Costa Rica"
-msgstr "کوسٹا ریکا"
-
-#. 192
-msgid "Cuba"
-msgstr "کیوبا"
-
-#. 132
-msgid "Cape Verde"
-msgstr "کاپے ویردے"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "کرسمس آئیسلینڈ"
-
-#. 196
-msgid "Cyprus"
-msgstr "سائپرس"
-
-#. 203
-msgid "Czech Republic"
-msgstr "چیک ریپبلک"
-
-#. 276
-msgid "Germany"
-msgstr "جرمن"
-
-#. 262
-msgid "Djibouti"
-msgstr "ڈیجیبوٹی"
-
-#. 208
-msgid "Denmark"
-msgstr "ڈنمارک"
-
-#. 212
-msgid "Dominica"
-msgstr "ڈومینیکا"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "ڈومینیکن ریپبلک"
-
-#. 012
-msgid "Algeria"
-msgstr "الجیریا"
-
-#. 218
-msgid "Ecuador"
-msgstr "ایکواڈور"
-
-#. 233
-msgid "Estonia"
-msgstr "استونیا"
-
-#. 818
-msgid "Egypt"
-msgstr "مصر"
-
-#. 732
-msgid "Western Sahara"
-msgstr "مغربی سحارا"
-
-#. 232
-msgid "Eritrea"
-msgstr "اریٹیریا"
-
-#. 724
-msgid "Spain"
-msgstr "سپین"
-
-#. 231
-msgid "Ethiopia"
-msgstr "ایتھوپیا"
-
-#. 246
-msgid "Finland"
-msgstr "Ùنلینڈ"
-
-#. 242
-msgid "Fiji"
-msgstr "Ùیجی"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Ùیکلینڈ آئیسلینڈ"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "میکرونیسیا Ùیڈرل سٹیٹ"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Ùاروے آئیسلینڈز"
-
-#. 250
-msgid "France"
-msgstr "Ùرانس"
-
-#. 266
-msgid "Gabon"
-msgstr "گابون"
-
-#. 826
-msgid "United Kingdom"
-msgstr "برطانیا"
-
-#. 308
-msgid "Grenada"
-msgstr "گریناڈا"
-
-#. 268
-msgid "Georgia"
-msgstr "جورجیا"
-
-#. 254
-msgid "French Guiana"
-msgstr "Ùرینچ گویانا"
-
-#. 831
-msgid "Guernsey"
-msgstr "گویرنسے"
-
-#. 288
-msgid "Ghana"
-msgstr "گھانا"
-
-#. 292
-msgid "Gibraltar"
-msgstr "جبرالٹر"
-
-#. 304
-msgid "Greenland"
-msgstr "گرینلینڈ"
-
-#. 270
-msgid "Gambia"
-msgstr "گامبیا"
-
-#. 324
-msgid "Guinea"
-msgstr "گوینیا"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "گوادیلوپے"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "ایکواٹوریال گوینا"
-
-#. 300
-msgid "Greece"
-msgstr "یونان"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "جنوبی جورجیا اور جنوبی سنڈوچ آئیسلینڈ"
-
-#. 320
-msgid "Guatemala"
-msgstr "گوئٹیمالا"
-
-#. 316
-msgid "Guam"
-msgstr "گوام"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "گواینیا-بیسساو"
-
-#. 328
-msgid "Guyana"
-msgstr "گویانا"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Ûانگ کانگ"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "ھیرڈ آئیسلینڈ اور میکڈونلڈ آئیسلینڈس"
-
-#. 340
-msgid "Honduras"
-msgstr "حونڈورس"
-
-#. 191
-msgid "Croatia"
-msgstr "کروشیا"
-
-#. 332
-msgid "Haiti"
-msgstr "حایٹی"
-
-#. 348
-msgid "Hungary"
-msgstr "ھنگری"
-
-#. 360
-msgid "Indonesia"
-msgstr "انڈونیشیا"
-
-#. 372
-msgid "Ireland"
-msgstr "آئرلینڈ"
-
-#. 376
-msgid "Israel"
-msgstr "اسرائیل"
-
-#. 833
-msgid "Isle of Man"
-msgstr "ایسلے آ٠مین"
-
-#. 356
-msgid "India"
-msgstr "Ûندوستان"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "برٹش انڈین اوشین ٹریٹوری"
-
-#. 368
-msgid "Iraq"
-msgstr "عراق"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "ایران ØŒ اسلامی جمÛوریÛ"
-
-#. 352
-msgid "Iceland"
-msgstr "آئیسلینڈ"
-
-#. 380
-msgid "Italy"
-msgstr "اٹلی"
-
-#. 832
-msgid "Jersey"
-msgstr "جرسی"
-
-#. 388
-msgid "Jamaica"
-msgstr "جامائیکا"
-
-#. 400
-msgid "Jordan"
-msgstr "اردن"
-
-#. 392
-msgid "Japan"
-msgstr "جاپان"
-
-#. 404
-msgid "Kenya"
-msgstr "کینیا"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "کرگزستان"
-
-#. 116
-msgid "Cambodia"
-msgstr "کمبوڈیا"
-
-#. 296
-msgid "Kiribati"
-msgstr "کیریباٹی"
-
-#. 174
-msgid "Comoros"
-msgstr "کوموروس"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "سینٹ کٹس اور نوس"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "کوریا ، ڈیموکریٹک"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "کوریا، عوامی"
-
-#. 414
-msgid "Kuwait"
-msgstr "کویت"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "کایمین آئیسلینڈز"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "کزاکستان"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "لاو عوامی جمÛوری ڈیموکریٹک"
-
-#. 422
-msgid "Lebanon"
-msgstr "لبنان"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "سینٹ لوچیا"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "لیخٹنسخٹین"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "سری لنکا"
-
-#. 430
-msgid "Liberia"
-msgstr "لیبیریا"
-
-#. 426
-msgid "Lesotho"
-msgstr "لیسودو"
-
-#. 440
-msgid "Lithuania"
-msgstr "لیتھوانیا"
-
-#. 442
-msgid "Luxembourg"
-msgstr "لیسمبرگ"
-
-#. 428
-msgid "Latvia"
-msgstr "لاتویا"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "مراکش"
-
-#. 492
-msgid "Monaco"
-msgstr "موناکو"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "مولدوا، عوامی"
-
-#. 499
-msgid "Montenegro"
-msgstr "مونٹے نیگرو"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "سینٹ مارٹن Ùرانسیسی حصÛ"
-
-#. 450
-msgid "Madagascar"
-msgstr "ماڈاگاسکر"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "مارشل آئیسلینڈ"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "ماچیدونیا"
-
-#. 466
-msgid "Mali"
-msgstr "مالی"
-
-#. 104
-msgid "Myanmar"
-msgstr "میانمار"
-
-#. 496
-msgid "Mongolia"
-msgstr "مونگولیا"
-
-#. 446
-msgid "Macao"
-msgstr "ماکاؤ"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "شمالی ماریانا آئیسلینڈز"
-
-#. 474
-msgid "Martinique"
-msgstr "مارٹینیقئے"
-
-#. 478
-msgid "Mauritania"
-msgstr "ماوریتانیا"
-
-#. 500
-msgid "Montserrat"
-msgstr "ماؤنٹسیراٹ"
-
-#. 470
-msgid "Malta"
-msgstr "مالٹا"
-
-#. 480
-msgid "Mauritius"
-msgstr "ماؤریٹیوس"
-
-#. 462
-msgid "Maldives"
-msgstr "مالدیپ"
-
-#. 454
-msgid "Malawi"
-msgstr "مالاوی"
-
-#. 484
-msgid "Mexico"
-msgstr "میکسیکو"
-
-#. 458
-msgid "Malaysia"
-msgstr "مالائیشیا"
-
-#. 508
-msgid "Mozambique"
-msgstr "موزمبیک"
-
-#. 516
-msgid "Namibia"
-msgstr "نمیبیا"
-
-#. 540
-msgid "New Caledonia"
-msgstr "نیو کالیدونیا"
-
-#. 562
-msgid "Niger"
-msgstr "نیگر"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "نورÙÙˆÚ© آئیسلینڈ"
-
-#. 566
-msgid "Nigeria"
-msgstr "نائجیریا"
-
-#. 558
-msgid "Nicaragua"
-msgstr "نکاراگوا"
-
-#. 528
-msgid "Netherlands"
-msgstr "Ûالینڈ"
-
-#. 578
-msgid "Norway"
-msgstr "ناروے"
-
-#. 524
-msgid "Nepal"
-msgstr "نیپال"
-
-#. 520
-msgid "Nauru"
-msgstr "ناؤرو"
-
-#. 570
-msgid "Niue"
-msgstr "نیوئے"
-
-#. 554
-msgid "New Zealand"
-msgstr "نیوزیلینڈ"
-
-#. 512
-msgid "Oman"
-msgstr "عمان"
-
-#. 591
-msgid "Panama"
-msgstr "پاناما"
-
-#. 604
-msgid "Peru"
-msgstr "پیرو"
-
-#. 258
-msgid "French Polynesia"
-msgstr "Ùرنچ پولینسیا"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "پاپوا نیو گویبیا"
-
-#. 608
-msgid "Philippines"
-msgstr "Ùلپائن"
-
-#. 586
-msgid "Pakistan"
-msgstr "پاکستان"
-
-#. 616
-msgid "Poland"
-msgstr "پولینڈ"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "سینٹ پیعرر اور میقوئےلون"
-
-#. 612
-msgid "Pitcairn"
-msgstr "پٹکائرن"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "پوئرٹو ریکو"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Ùلسطین"
-
-#. 620
-msgid "Portugal"
-msgstr "پرتگال"
-
-#. 585
-msgid "Palau"
-msgstr "پالاؤ"
-
-#. 600
-msgid "Paraguay"
-msgstr "پیراگوائے"
-
-#. 634
-msgid "Qatar"
-msgstr "قطر"
-
-#. 638
-msgid "Reunion"
-msgstr "ریونین"
-
-#. 642
-msgid "Romania"
-msgstr "رومانیا"
-
-#. 688
-msgid "Serbia"
-msgstr "سربیا"
-
-#. 643
-msgid "Russian Federation"
-msgstr "روس"
-
-#. 646
-msgid "Rwanda"
-msgstr "روانڈا"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "سعودی عرب"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "سولومون آئیسلینڈز"
-
-#. 690
-msgid "Seychelles"
-msgstr "سعیچیلز"
-
-#. 736
-msgid "Sudan"
-msgstr "سوڈان"
-
-#. 752
-msgid "Sweden"
-msgstr "سویڈن"
-
-#. 702
-msgid "Singapore"
-msgstr "سنگاپور"
-
-#. 654
-msgid "Saint Helena"
-msgstr "سیٹ حیلنا"
-
-#. 705
-msgid "Slovenia"
-msgstr "سلوینیا"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "سویلبرڈ اور جان میان"
-
-#. 703
-msgid "Slovakia"
-msgstr "سلواکیÛ"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "سیعرا لیعون"
-
-#. 674
-msgid "San Marino"
-msgstr "سان مارینو"
-
-#. 686
-msgid "Senegal"
-msgstr "سینیگال"
-
-#. 706
-msgid "Somalia"
-msgstr "صومالیÛ"
-
-#. 740
-msgid "Suriname"
-msgstr "سرینیم"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "ساو ٹوم اور پرینسپ"
-
-#. 222
-msgid "El Salvador"
-msgstr "ال سالواڈور"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "ال سالواڈور"
-
-#. 748
-msgid "Swaziland"
-msgstr "سوازیلینڈ"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "ٹرکس اور کایکس آئیسلینڈز"
-
-#. 148
-msgid "Chad"
-msgstr "چاڈ"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "Ùرینچ جنوبی Ø¹Ù„Ø§Ù‚Û Ø¬Ø§Øª"
-
-#. 768
-msgid "Togo"
-msgstr "ٹوگو"
-
-#. 764
-msgid "Thailand"
-msgstr "تھائی لینڈ"
-
-#. 762
-msgid "Tajikistan"
-msgstr "تاجکستان"
-
-#. 772
-msgid "Tokelau"
-msgstr "ٹوکلاؤ"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "ٹیمور-لیسٹے"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "ترکمانستان"
-
-#. 788
-msgid "Tunisia"
-msgstr "تونس"
-
-#. 776
-msgid "Tonga"
-msgstr "ٹونگا"
-
-#. 792
-msgid "Turkey"
-msgstr "ترکی"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "ٹرینیداد اور ٹوباگو"
-
-#. 798
-msgid "Tuvalu"
-msgstr "ٹوالا"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "تائیوان Ú†Ø§Ø¦ÛŒÙ†Û Ú©Ø§ صوبÛ"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "تنزانیÛØŒ عوامی متحدÛ"
-
-#. 804
-msgid "Ukraine"
-msgstr "یوکرائن"
-
-#. 800
-msgid "Uganda"
-msgstr "یوگنڈا"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "یونائیٹد سٹیٹ مائنر آوٹلیئنگ آئیسلینڈز"
-
-#. 840
-msgid "United States"
-msgstr "امریکÛ"
-
-#. 858
-msgid "Uruguay"
-msgstr "اوروگوائے"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "ازبکستان"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "مقدس Ø´Ûر (ویٹیکن سٹی)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "سینٹ ونسنٹ اور گریناڈنز"
-
-#. 862
-msgid "Venezuela"
-msgstr "ونزویلا"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "ورجن آئیسلینڈ، برطانیÛ"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "ورجن آئیسلینڈ، امریکÛ"
-
-#. 704
-msgid "Viet Nam"
-msgstr "ویت نام"
-
-#. 548
-msgid "Vanuatu"
-msgstr "وانوعاتو"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "والیز اور Ùوٹونا"
-
-#. 882
-msgid "Samoa"
-msgstr "ساموا"
-
-#. 887
-msgid "Yemen"
-msgstr "یمن"
-
-#. 175
-msgid "Mayotte"
-msgstr "مائیوٹے"
-
-#. 710
-msgid "South Africa"
-msgstr "جنوبی اÙریقÛ"
-
-#. 894
-msgid "Zambia"
-msgstr "زمبیا"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "زمبابوے"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* نامعلوم Ø´Ûروں کیلیئے"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Ù†Ù‚Ø´Û Ú©Ø§ نقطÛ"
-
-msgid "Car"
-msgstr "کار"
-
-msgid "Iso2"
-msgstr "اسو 2"
-
-msgid "Iso3"
-msgstr "اسو 3"
-
-msgid "Country"
-msgstr "ملک"
-
-msgid "Postal"
-msgstr "ڈاک"
-
-msgid "Town"
-msgstr "ٹاؤن"
-
-msgid "District"
-msgstr "ضلع"
-
-msgid "Street"
-msgstr "سڑک"
-
-msgid "Number"
-msgstr "نمبر"
-
-msgid "Zip Code"
-msgstr "زپ کوڈ"
-
-msgid "City"
-msgstr "Ø´Ûر"
-
-msgid "District/Township"
-msgstr "ضلع/قصبÛ"
-
-msgid "Map"
-msgstr "نقشÛ"
-
-msgid "Bookmark"
-msgstr "بک مارک"
-
-msgid "Destination"
-msgstr "منزل"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "ڈسپلئے"
-
-msgid "_Route"
-msgstr "راستÛ"
-
-msgid "_Former Destinations"
-msgstr "Ø³Ø§Ø¨Ù‚Û Ù…Ù†Ø§Ø²Ù„"
-
-msgid "_Bookmarks"
-msgstr "بک مارکس"
-
-msgid "_Map"
-msgstr "نقشÛ"
-
-msgid "_Layout"
-msgstr "بناوٹ"
-
-msgid "_Projection"
-msgstr "پروجیکشن"
-
-msgid "_Vehicle"
-msgstr "گاڑی"
-
-msgid "Zoom_Out"
-msgstr "چھوٹا کریں"
-
-msgid "Decrease zoom level"
-msgstr "زوم لیول کم کریں"
-
-msgid "Zoom_In"
-msgstr "بڑا کریں"
-
-msgid "Increase zoom level"
-msgstr "زوم لیول بڑÛائیں"
-
-msgid "_Recalculate"
-msgstr "Ø¯ÙˆØ¨Ø§Ø±Û Ø­Ø³Ø§Ø¨"
-
-msgid "Redraw map"
-msgstr "Ù†Ù‚Ø´Û Ø¯ÙˆØ¨Ø§Ø±Û Ø¨Ù†Ø§Ø¦ÛŒÚº"
-
-msgid "_Info"
-msgstr "معلومات"
-
-msgid "Set _destination"
-msgstr "منزل منتخب کریں"
-
-msgid "Opens address search dialog"
-msgstr "Ù¾ØªÛ ØªÙ„Ø§Ø´ والا Ø®Ø§Ù†Û Ú©Ú¾ÙˆÙ„ÛŒÚº"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "نیویگیشن بند کریں"
-
-msgid "Test"
-msgstr "ٹیسٹ"
-
-msgid "_Quit"
-msgstr "_بند"
-
-msgid "Quit the application"
-msgstr "پروگرام بند کریں"
-
-msgid "Show position _cursor"
-msgstr "کرسر کا مقام دکھائیں"
-
-msgid "_Lock on Road"
-msgstr "سڑک پر گرÙت"
-
-msgid "_Keep orientation to the North"
-msgstr "قطب نما کو شمال کی طر٠رکھیں"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "قطب نما کو شمال یا گاڑی کی طر٠کریں"
-
-msgid "_Roadbook"
-msgstr "روڈ بک"
-
-msgid "Show/hide route description"
-msgstr "دکھیں/Ù†Û Ø¯ÛŒÚ©Ú¾ÛŒÚº سÙر Ú©ÛŒ تÙصیل"
-
-msgid "_Autozoom"
-msgstr "خودکار زوم"
-
-msgid "_Fullscreen"
-msgstr "پوری سکرین"
-
-msgid "Data"
-msgstr "ڈیٹا"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "شمال"
-
-msgid "NE"
-msgstr "شمال مشرق"
-
-msgid "E"
-msgstr "مشرق"
-
-msgid "SE"
-msgstr "جنوب مشرق"
-
-msgid "S"
-msgstr "جنوب"
-
-msgid "SW"
-msgstr "جنوب مغرب"
-
-msgid "W"
-msgstr "مغرب"
-
-msgid "NW"
-msgstr "شمال مغرب"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Ù†Ûیں"
-
-msgid "2D"
-msgstr "2ڈی"
-
-msgid "3D"
-msgstr "3ڈی"
-
-msgid "OT"
-msgstr "او ٹی"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Route %4.0fكلومیٹر %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "سÙر 0000 کلومیٹر 0+00:00 ETA"
-
-msgid "Help"
-msgstr "مدد"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "براؤزر میں دیکھیں"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "سڑکیں"
-
-msgid "House numbers"
-msgstr "مکان نمبر"
-
-msgid "View Attributes"
-msgstr "خصوصیات دیکھں"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Ù¾Ø³Ù†Ø¯ÛŒØ¯Û Ø¬Ú¯Ûیں"
-
-msgid "View on map"
-msgstr "Ù†Ù‚Ø´Û Ù¾Û Ø¯ÛŒÚ©Ú¾ÛŒÚº"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "بک مارک کو کاٹیں"
-
-msgid "Copy Bookmark"
-msgstr "بک مارک کو کاپی کریں"
-
-msgid "Rename Bookmark"
-msgstr "بک مارک کا نام تبدیل کریں"
-
-msgid "Paste Bookmark"
-msgstr "بک مارک پیسٹ کریں"
-
-msgid "Delete Bookmark"
-msgstr "ڈیلیٹ بک مارک"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "بک مارکس"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "بک مارک Ùولڈر میں شامل"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "بک مارک پیسٹ کریں"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "بک مارک %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "سٹلائٹ کی حالت دیکھیں"
-
-msgid " Azimuth "
-msgstr " سمت "
-
-msgid "Show NMEA Data"
-msgstr "NMEA ڈیٹا دیکھیں"
-
-msgid "car"
-msgstr "کار"
-
-msgid "bike"
-msgstr "سائیکل"
-
-msgid "pedestrian"
-msgstr "پیدل"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "پروÙائل Ú©Ùˆ :%s میں بدلیں"
-
-msgid "Set as active"
-msgstr "Ùعال کریں"
-
-msgid "Show Satellite status"
-msgstr "سٹلائٹ کی حالت دیکھیں"
-
-msgid "Show NMEA data"
-msgstr "NMEA ڈیٹا دیکھیں"
-
-msgid "Rename"
-msgstr "تبدیل نام"
-
-msgid "About Navit"
-msgstr "ناوٹ کے مطعلق"
-
-#. Authors
-msgid "By"
-msgstr "بنانے والے"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "اور ناوٹ کی ساری ٹیم"
-
-msgid "members and contributors."
-msgstr "ممبر اور Ø­ØµÛ Ø¯Ø§Ø±"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "گاڑی"
-
-msgid "Rules"
-msgstr "قوانین"
-
-msgid "Lock on road"
-msgstr "سڑک Ù¾Û Ù…Ø±Ú©ÙˆØ²"
-
-msgid "Northing"
-msgstr "شمالی سمت"
-
-msgid "Map follows Vehicle"
-msgstr "Ù†Ù‚Ø´Û Ú¯Ø§Ú‘ÛŒ کا تعاقب کرے"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "نقشے"
-
-msgid "Layout"
-msgstr "بناوٹ"
-
-msgid "Height Profile"
-msgstr "اونچائی Ú©ÛŒ پروÙائل"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "سÙر Ú©ÛŒ تÙصیل"
-
-msgid "Show Locale"
-msgstr "مقامی دیکھیں"
-
-msgid "Former Destinations"
-msgstr "Ø³Ø§Ø¨Ù‚Û Ù…Ù†Ø§Ø²Ù„"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "پیغام"
-
-msgid "Back"
-msgstr "واپس"
-
-msgid "Back to map"
-msgstr "Ù†Ù‚Ø´Û Ù¾Û ÙˆØ§Ù¾Ø³"
-
-msgid "Main Menu"
-msgstr "مین مینو"
-
-msgid "House number"
-msgstr "مکان نمبر"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "گاڑی کی حالت"
-
-msgid "Main menu"
-msgstr "مین مینو"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"دیکھیں\n"
-"نقشÛ"
-
-msgid "Settings"
-msgstr "تراتیب"
-
-msgid "Tools"
-msgstr "Ûتھیار"
-
-msgid "Route"
-msgstr "راستÛ"
-
-msgid "About"
-msgstr "متعلق"
-
-msgid "Quit"
-msgstr "بند"
-
-msgid "Actions"
-msgstr "ایکشن"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"روکیں\n"
-"نیویگیشن"
-
-msgid "Display"
-msgstr "ڈسپلئے"
-
-msgid "Fullscreen"
-msgstr "پوری سکرین"
-
-msgid "Window Mode"
-msgstr "ونڈو موڈ"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "تÙصیل"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "گھوڑا"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "پھر گول چوراÛÛ’ Ú©Ùˆ %1$s %2$s Ù¾Û’ Ú†Ú¾ÙˆÚ‘ دیں"
diff --git a/po/vi.po.in b/po/vi.po.in
deleted file mode 100644
index 54ec62618..000000000
--- a/po/vi.po.in
+++ /dev/null
@@ -1,2744 +0,0 @@
-# Vietnamese translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Hoàng Äá»— Can Trá»±c https://launchpad.net/~truc294
-# Le Viet Thanh https://launchpad.net/~lethanhx2k
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:01+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Vietnamese <vi@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: vi\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "Äang chạy từ thÆ° mục nguồn\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "thiết lập '%s' đến '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "Thứ 0"
-
-msgid "first"
-msgstr "thứ nhắt"
-
-msgid "second"
-msgstr "giây"
-
-msgid "third"
-msgstr "thứ ba"
-
-msgid "fourth"
-msgstr "thứ tư"
-
-msgid "fifth"
-msgstr "thứ năm"
-
-msgid "sixth"
-msgstr "thứ sáu"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "Thoát thứ 0"
-
-msgid "first exit"
-msgstr "Thoát thứ 1"
-
-msgid "second exit"
-msgstr "Thoát thứ 2"
-
-msgid "third exit"
-msgstr "Thoát thứ 3"
-
-msgid "fourth exit"
-msgstr "Thoát thứ 4"
-
-msgid "fifth exit"
-msgstr "Thoát thứ 5"
-
-msgid "sixth exit"
-msgstr "Thoát thứ 6"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d mét"
-
-#, c-format
-msgid "in %d meters"
-msgstr "trong %d mét"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d cây số"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "trong %d.%d km"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d km"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "trong %d km"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "vào dốc"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%svào %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%svào %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%svào %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%svào %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%svào %s"
-
-msgid "When possible, please turn around"
-msgstr "Khi có thể, hãy quay vòng"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "ÄÆ°á»ng tiếp theo %s"
-
-msgid "Enter the roundabout soon"
-msgstr "Sắp tới chỗ vòng"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "Ra khá»i Ä‘Æ°á»ng vòng tại %1$s %2$s"
-
-msgid "soon"
-msgstr "ngay"
-
-msgid "now"
-msgstr "bây giá»"
-
-msgid "then"
-msgstr "sau đó"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "phải"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "trái"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "dễ dàng "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "mạnh "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "Có %1$s Ä‘Æ°á»ng đến %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "sau %i Ä‘Æ°á»ng"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "Rẽ %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "sau đó bạn tới điểm đích"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "Bạn vừa tới điểm đích: %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "Thoát"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "Vị trí"
-
-msgid "Command"
-msgstr "Lệnh"
-
-msgid "Length"
-msgstr "Chiá»u dài"
-
-msgid "km"
-msgstr "km"
-
-msgid "m"
-msgstr "m"
-
-msgid "Time"
-msgstr "Thá»i gian"
-
-msgid "Destination Length"
-msgstr "Chiá»u dài tá»›i"
-
-msgid "Destination Time"
-msgstr "Thá»i gian tá»›i"
-
-msgid "Roadbook"
-msgstr "Roadbook"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "Thiết lập thành vị trí"
-
-msgid "Set as destination"
-msgstr "Thiết lập thành điểm tới"
-
-msgid "Add as bookmark"
-msgstr "Thêm thành Bookmark"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "Äiểm 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "Tá»a Ä‘á»™ : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "Andorra"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "United Arab Emirates"
-
-#. 004
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "Antigua and Barbuda"
-
-#. 660
-msgid "Anguilla"
-msgstr "Anguilla"
-
-#. 008
-msgid "Albania"
-msgstr "Albania"
-
-#. 051
-msgid "Armenia"
-msgstr "Armenia"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "Netherlands Antilles"
-
-#. 024
-msgid "Angola"
-msgstr "Angola"
-
-#. 010
-msgid "Antarctica"
-msgstr "Antarctica"
-
-#. 032
-msgid "Argentina"
-msgstr "Argentina"
-
-#. 016
-msgid "American Samoa"
-msgstr "American Samoa"
-
-#. 040
-msgid "Austria"
-msgstr "Austria"
-
-#. 036
-msgid "Australia"
-msgstr "Australia"
-
-#. 533
-msgid "Aruba"
-msgstr "Aruba"
-
-#. 248
-msgid "Aland Islands"
-msgstr "Aland Islands"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia and Herzegovina"
-
-#. 052
-msgid "Barbados"
-msgstr "Barbados"
-
-#. 050
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#. 056
-msgid "Belgium"
-msgstr "Bỉ"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "Burkina Faso"
-
-#. 100
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#. 048
-msgid "Bahrain"
-msgstr "Bahrain"
-
-#. 108
-msgid "Burundi"
-msgstr "Burundi"
-
-#. 204
-msgid "Benin"
-msgstr "Benin"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "Saint Barthelemy"
-
-#. 060
-msgid "Bermuda"
-msgstr "Bermuda"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "Bru nây"
-
-#. 068
-msgid "Bolivia"
-msgstr "Bolivia"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "Brazil"
-
-#. 044
-msgid "Bahamas"
-msgstr "Bahamas"
-
-#. 064
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "Äảo Bu-vê"
-
-#. 072
-msgid "Botswana"
-msgstr "Botswana"
-
-#. 112
-msgid "Belarus"
-msgstr "Belarus"
-
-#. 084
-msgid "Belize"
-msgstr "Belize"
-
-#. 124
-msgid "Canada"
-msgstr "Canada"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "Cocos (Keeling) Islands"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "Cộng Hoà Dân Chủ Công-gô"
-
-#. 140
-msgid "Central African Republic"
-msgstr "Cộng Hoà Trung Phi"
-
-#. 178
-msgid "Congo"
-msgstr "Công-gô"
-
-#. 756
-msgid "Switzerland"
-msgstr "Thụy Sĩ"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "BỠbiển ngà"
-
-#. 184
-msgid "Cook Islands"
-msgstr "Quần đảo Cook"
-
-#. 152
-msgid "Chile"
-msgstr "Chile"
-
-#. 120
-msgid "Cameroon"
-msgstr "Cameroon"
-
-#. 156
-msgid "China"
-msgstr "Trung Quốc"
-
-#. 170
-msgid "Colombia"
-msgstr "Colombia"
-
-#. 188
-msgid "Costa Rica"
-msgstr "Costa Rica"
-
-#. 192
-msgid "Cuba"
-msgstr "Cuba"
-
-#. 132
-msgid "Cape Verde"
-msgstr "Cape Verde"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "Äảo Christmas"
-
-#. 196
-msgid "Cyprus"
-msgstr "Äảo Síp"
-
-#. 203
-msgid "Czech Republic"
-msgstr "Cộng hoà Séc"
-
-#. 276
-msgid "Germany"
-msgstr "Äức"
-
-#. 262
-msgid "Djibouti"
-msgstr "Djibouti"
-
-#. 208
-msgid "Denmark"
-msgstr "Äan Mạch"
-
-#. 212
-msgid "Dominica"
-msgstr "Dominica"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "Dominican Republic"
-
-#. 012
-msgid "Algeria"
-msgstr "Algeria"
-
-#. 218
-msgid "Ecuador"
-msgstr "Ecuador"
-
-#. 233
-msgid "Estonia"
-msgstr "Estonia"
-
-#. 818
-msgid "Egypt"
-msgstr "Ai Cập"
-
-#. 732
-msgid "Western Sahara"
-msgstr "Tây Sahara"
-
-#. 232
-msgid "Eritrea"
-msgstr "Eritrea"
-
-#. 724
-msgid "Spain"
-msgstr "Tây Ban Nha"
-
-#. 231
-msgid "Ethiopia"
-msgstr "Ethiopia"
-
-#. 246
-msgid "Finland"
-msgstr "Phần Lan"
-
-#. 242
-msgid "Fiji"
-msgstr "Fiji"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "Falkland Islands (Malvinas)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "Micronesia, Federated States of"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "Faroe Islands"
-
-#. 250
-msgid "France"
-msgstr "Pháp"
-
-#. 266
-msgid "Gabon"
-msgstr "Gabon"
-
-#. 826
-msgid "United Kingdom"
-msgstr "Vương quốc Anh"
-
-#. 308
-msgid "Grenada"
-msgstr "Grenada"
-
-#. 268
-msgid "Georgia"
-msgstr "Georgia"
-
-#. 254
-msgid "French Guiana"
-msgstr "French Guiana"
-
-#. 831
-msgid "Guernsey"
-msgstr "Guernsey"
-
-#. 288
-msgid "Ghana"
-msgstr "Ghana"
-
-#. 292
-msgid "Gibraltar"
-msgstr "Gibraltar"
-
-#. 304
-msgid "Greenland"
-msgstr "Greenland"
-
-#. 270
-msgid "Gambia"
-msgstr "Gambia"
-
-#. 324
-msgid "Guinea"
-msgstr "Guinea"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "Guadeloupe"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "Equatorial Guinea"
-
-#. 300
-msgid "Greece"
-msgstr "Hy Lạp"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "South Georgia and the South Sandwich Islands"
-
-#. 320
-msgid "Guatemala"
-msgstr "Guatemala"
-
-#. 316
-msgid "Guam"
-msgstr "Guam"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
-
-#. 328
-msgid "Guyana"
-msgstr "Guyana"
-
-#. 344
-msgid "Hong Kong"
-msgstr "Hồng Kông"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "Heard Island and McDonald Islands"
-
-#. 340
-msgid "Honduras"
-msgstr "Honduras"
-
-#. 191
-msgid "Croatia"
-msgstr "Croatia"
-
-#. 332
-msgid "Haiti"
-msgstr "Haiti"
-
-#. 348
-msgid "Hungary"
-msgstr "Hungary"
-
-#. 360
-msgid "Indonesia"
-msgstr "Indonesia"
-
-#. 372
-msgid "Ireland"
-msgstr "Ireland"
-
-#. 376
-msgid "Israel"
-msgstr "Israel"
-
-#. 833
-msgid "Isle of Man"
-msgstr "Isle of Man"
-
-#. 356
-msgid "India"
-msgstr "Ấn Äá»™"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "British Indian Ocean Territory"
-
-#. 368
-msgid "Iraq"
-msgstr "Iraq"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "Iran, Islamic Republic of"
-
-#. 352
-msgid "Iceland"
-msgstr "Iceland"
-
-#. 380
-msgid "Italy"
-msgstr "Ã"
-
-#. 832
-msgid "Jersey"
-msgstr "Jersey"
-
-#. 388
-msgid "Jamaica"
-msgstr "Jamaica"
-
-#. 400
-msgid "Jordan"
-msgstr "Jordan"
-
-#. 392
-msgid "Japan"
-msgstr "Nhật bản"
-
-#. 404
-msgid "Kenya"
-msgstr "Kenya"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstan"
-
-#. 116
-msgid "Cambodia"
-msgstr "Campuchia"
-
-#. 296
-msgid "Kiribati"
-msgstr "Kiribati"
-
-#. 174
-msgid "Comoros"
-msgstr "Comoros"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "Saint Kitts and Nevis"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "Bắc Triá»u Tiên"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "Hàn quốc"
-
-#. 414
-msgid "Kuwait"
-msgstr "Kuwait"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "Quần đảo Cayman"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "Kazakhstan"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "Cộng hoà Nhân dân Dân chủ Lào"
-
-#. 422
-msgid "Lebanon"
-msgstr "Lebanon"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "Saint Lucia"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "Liechtenstein"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#. 430
-msgid "Liberia"
-msgstr "Liberia"
-
-#. 426
-msgid "Lesotho"
-msgstr "Lesotho"
-
-#. 440
-msgid "Lithuania"
-msgstr "Lithuania"
-
-#. 442
-msgid "Luxembourg"
-msgstr "Luxembourg"
-
-#. 428
-msgid "Latvia"
-msgstr "Latvia"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "Morocco"
-
-#. 492
-msgid "Monaco"
-msgstr "Monaco"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "Moldova, Republic of"
-
-#. 499
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "Saint Martin (French part)"
-
-#. 450
-msgid "Madagascar"
-msgstr "Madagascar"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "Quần đảo Marshall"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "Macedonia, the former Yugoslav Republic of"
-
-#. 466
-msgid "Mali"
-msgstr "Mali"
-
-#. 104
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#. 496
-msgid "Mongolia"
-msgstr "Mông Cổ"
-
-#. 446
-msgid "Macao"
-msgstr "Macao"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "Northern Mariana Islands"
-
-#. 474
-msgid "Martinique"
-msgstr "Martinique"
-
-#. 478
-msgid "Mauritania"
-msgstr "Mauritania"
-
-#. 500
-msgid "Montserrat"
-msgstr "Montserrat"
-
-#. 470
-msgid "Malta"
-msgstr "Malta"
-
-#. 480
-msgid "Mauritius"
-msgstr "Mauritius"
-
-#. 462
-msgid "Maldives"
-msgstr "Maldives"
-
-#. 454
-msgid "Malawi"
-msgstr "Malawi"
-
-#. 484
-msgid "Mexico"
-msgstr "Mexico"
-
-#. 458
-msgid "Malaysia"
-msgstr "Malaysia"
-
-#. 508
-msgid "Mozambique"
-msgstr "Mozambique"
-
-#. 516
-msgid "Namibia"
-msgstr "Namibia"
-
-#. 540
-msgid "New Caledonia"
-msgstr "New Caledonia"
-
-#. 562
-msgid "Niger"
-msgstr "Niger"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "Norfolk Island"
-
-#. 566
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#. 558
-msgid "Nicaragua"
-msgstr "Nicaragua"
-
-#. 528
-msgid "Netherlands"
-msgstr "Hà Lan"
-
-#. 578
-msgid "Norway"
-msgstr "Na Uy"
-
-#. 524
-msgid "Nepal"
-msgstr "Nepal"
-
-#. 520
-msgid "Nauru"
-msgstr "Nauru"
-
-#. 570
-msgid "Niue"
-msgstr "Niue"
-
-#. 554
-msgid "New Zealand"
-msgstr "New Zealand"
-
-#. 512
-msgid "Oman"
-msgstr "Oman"
-
-#. 591
-msgid "Panama"
-msgstr "Panama"
-
-#. 604
-msgid "Peru"
-msgstr "Peru"
-
-#. 258
-msgid "French Polynesia"
-msgstr "French Polynesia"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "Papua New Guinea"
-
-#. 608
-msgid "Philippines"
-msgstr "Philippines"
-
-#. 586
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#. 616
-msgid "Poland"
-msgstr "Poland"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "Saint Pierre and Miquelon"
-
-#. 612
-msgid "Pitcairn"
-msgstr "Pitcairn"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "Puerto Rico"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "Palestinian Territory, Occupied"
-
-#. 620
-msgid "Portugal"
-msgstr "Bồ Äào Nha"
-
-#. 585
-msgid "Palau"
-msgstr "Palau"
-
-#. 600
-msgid "Paraguay"
-msgstr "Paraguay"
-
-#. 634
-msgid "Qatar"
-msgstr "Qatar"
-
-#. 638
-msgid "Reunion"
-msgstr "Reunion"
-
-#. 642
-msgid "Romania"
-msgstr "Romania"
-
-#. 688
-msgid "Serbia"
-msgstr "Serbia"
-
-#. 643
-msgid "Russian Federation"
-msgstr "Liên bang Nga"
-
-#. 646
-msgid "Rwanda"
-msgstr "Rwanda"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "Saudi Arabia"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "Quần đảo Solomon"
-
-#. 690
-msgid "Seychelles"
-msgstr "Seychelles"
-
-#. 736
-msgid "Sudan"
-msgstr "Sudan"
-
-#. 752
-msgid "Sweden"
-msgstr "Thụy Äiển"
-
-#. 702
-msgid "Singapore"
-msgstr "Singapore"
-
-#. 654
-msgid "Saint Helena"
-msgstr "Saint Helena"
-
-#. 705
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "Svalbard and Jan Mayen"
-
-#. 703
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "Sierra Leone"
-
-#. 674
-msgid "San Marino"
-msgstr "San Marino"
-
-#. 686
-msgid "Senegal"
-msgstr "Senegal"
-
-#. 706
-msgid "Somalia"
-msgstr "Somalia"
-
-#. 740
-msgid "Suriname"
-msgstr "Suriname"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "Sao Tome and Principe"
-
-#. 222
-msgid "El Salvador"
-msgstr "El Salvador"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "Syrian Arab Republic"
-
-#. 748
-msgid "Swaziland"
-msgstr "Swaziland"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "Turks and Caicos Islands"
-
-#. 148
-msgid "Chad"
-msgstr "Chad"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "French Southern Territories"
-
-#. 768
-msgid "Togo"
-msgstr "Togo"
-
-#. 764
-msgid "Thailand"
-msgstr "Thái Lan"
-
-#. 762
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#. 772
-msgid "Tokelau"
-msgstr "Tokelau"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "Timor-Leste"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#. 788
-msgid "Tunisia"
-msgstr "Tunisia"
-
-#. 776
-msgid "Tonga"
-msgstr "Tonga"
-
-#. 792
-msgid "Turkey"
-msgstr "Thổ nhĩ kỳ"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "Trinidad and Tobago"
-
-#. 798
-msgid "Tuvalu"
-msgstr "Tuvalu"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "Äài loan"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "Tanzania, United Republic of"
-
-#. 804
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#. 800
-msgid "Uganda"
-msgstr "Uganda"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "United States Minor Outlying Islands"
-
-#. 840
-msgid "United States"
-msgstr "Mỹ"
-
-#. 858
-msgid "Uruguay"
-msgstr "Uruguay"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "Holy See (Vatican City State)"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "Saint Vincent and the Grenadines"
-
-#. 862
-msgid "Venezuela"
-msgstr "Venezuela"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "Virgin Islands, British"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "Virgin Islands, U.S."
-
-#. 704
-msgid "Viet Nam"
-msgstr "Việt Nam"
-
-#. 548
-msgid "Vanuatu"
-msgstr "Vanuatu"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "Wallis and Futuna"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa"
-
-#. 887
-msgid "Yemen"
-msgstr "Yemen"
-
-#. 175
-msgid "Mayotte"
-msgstr "Mayotte"
-
-#. 710
-msgid "South Africa"
-msgstr "South Africa"
-
-#. 894
-msgid "Zambia"
-msgstr "Zambia"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "Zimbabwe"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* Không xác định, gán thẻ \"is_in\" cho những thành phố đó"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "Map Point"
-
-msgid "Car"
-msgstr "Ô tô"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "Quốc gia"
-
-msgid "Postal"
-msgstr "Bưu điện"
-
-msgid "Town"
-msgstr "Thị trấn"
-
-msgid "District"
-msgstr "Huyện"
-
-msgid "Street"
-msgstr "Phố"
-
-msgid "Number"
-msgstr "Số"
-
-msgid "Enter Destination"
-msgstr "Nhập nơi đến"
-
-msgid "Zip Code"
-msgstr "Mã bưu điện"
-
-msgid "City"
-msgstr "Thành phố"
-
-msgid "District/Township"
-msgstr "Huyện/Thị trấn nhá»"
-
-msgid "Map"
-msgstr "Bản đồ"
-
-msgid "Bookmark"
-msgstr "Äánh dấu"
-
-msgid "Destination"
-msgstr "Äiểm đến"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "Hiển thị"
-
-msgid "_Route"
-msgstr "Tuyến"
-
-msgid "_Former Destinations"
-msgstr "Äiểm đến trÆ°á»›c"
-
-msgid "_Bookmarks"
-msgstr "Äánh dấu"
-
-msgid "_Map"
-msgstr "Bản đồ"
-
-msgid "_Layout"
-msgstr "Layout"
-
-msgid "_Projection"
-msgstr "Phép chiếu"
-
-msgid "_Vehicle"
-msgstr "Phương tiện"
-
-msgid "Zoom_Out"
-msgstr "Thu nhá»"
-
-msgid "Decrease zoom level"
-msgstr "Giảm độ phóng đại"
-
-msgid "Zoom_In"
-msgstr "Phóng to"
-
-msgid "Increase zoom level"
-msgstr "Tăng độ phóng đại"
-
-msgid "_Recalculate"
-msgstr "Tính lại"
-
-msgid "Redraw map"
-msgstr "Vẽ lại bản đồ"
-
-msgid "_Info"
-msgstr "Thông tin"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "Mở hộp thoại tìm địa chỉ"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "Dừng dẫn Ä‘Æ°á»ng"
-
-msgid "Test"
-msgstr "Kiểm tra"
-
-msgid "_Quit"
-msgstr "_Thoát"
-
-msgid "Quit the application"
-msgstr "Thoát ứng dụng"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "Bám vào Ä‘Æ°á»ng"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "Hiển thị hướng của bản đồ theo hướng bắc hay hướng của phương tiện"
-
-msgid "_Roadbook"
-msgstr "Roadbook"
-
-msgid "Show/hide route description"
-msgstr "Hiển thị/ẩn mô tả vỠhành trình"
-
-msgid "_Autozoom"
-msgstr "Tự động thu phóng"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "Bật/tắt tự động thay đổi độ phóng đại"
-
-msgid "_Fullscreen"
-msgstr "Toàn màn hình"
-
-msgid "Data"
-msgstr "Dữ liệu"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "Bắc"
-
-msgid "NE"
-msgstr "Äông Bắc"
-
-msgid "E"
-msgstr "Äông"
-
-msgid "SE"
-msgstr "Äông Nam"
-
-msgid "S"
-msgstr "Nam"
-
-msgid "SW"
-msgstr "Tây Nam"
-
-msgid "W"
-msgstr "Tây"
-
-msgid "NW"
-msgstr "Tây Bắc"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "Không"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "Tuyến %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "Tuyến 0000km 0+00:00 ETA"
-
-msgid "Help"
-msgstr "Trợ giúp"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "Xem trong trình duyệt"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "Phố"
-
-msgid "House numbers"
-msgstr "Số nhà"
-
-msgid "View Attributes"
-msgstr "Xem thuộc tính"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "Äiểm hữu ích (POI)"
-
-msgid "View on map"
-msgstr "Xem trên bản đồ"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "Cắt điểm đánh dấu (bookmark)"
-
-msgid "Copy Bookmark"
-msgstr "Sao chép điểm đánh dấu (bookmark)"
-
-msgid "Rename Bookmark"
-msgstr "Äổi tên Ä‘iểm đánh dấu (bookmark)"
-
-msgid "Paste Bookmark"
-msgstr "Dán điểm đánh dấu (bookmark) từ bộ nhớ"
-
-msgid "Delete Bookmark"
-msgstr "Xóa điểm đánh dấu (bookmark)"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "Äánh dấu"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "Thêm thư mục điểm đánh dấu (Bookmark)"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "Dán điểm đánh dấu (bookmark) từ bộ nhớ"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "Äánh dấu %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "Xem thông tin vệ tinh"
-
-msgid " Elevation "
-msgstr " Cao Ä‘á»™ "
-
-msgid " Azimuth "
-msgstr " Góc phương vị "
-
-msgid "Show NMEA Data"
-msgstr "Xem dữ liệu dạng NMEA"
-
-msgid "car"
-msgstr "ôtô"
-
-msgid "bike"
-msgstr "gắn máy"
-
-msgid "pedestrian"
-msgstr "khách bộ hành"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "Hồ sơ hiện hành: %s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "Äổi thành hồ sÆ¡: %s"
-
-msgid "Set as active"
-msgstr "Kích hoạt"
-
-msgid "Show Satellite status"
-msgstr "Xem thông tin vệ tinh"
-
-msgid "Show NMEA data"
-msgstr "Xem dữ liệu dạng NMEA"
-
-msgid "Add Bookmark"
-msgstr "Thêm điểm đánh dấu (bookmark)"
-
-msgid "Rename"
-msgstr "Äổi tên"
-
-msgid "About Navit"
-msgstr "Vá» Navit"
-
-#. Authors
-msgid "By"
-msgstr "Bởi"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "Và toàn thể Äá»™i NgÅ© Navit"
-
-msgid "members and contributors."
-msgstr "thành viên và những ngÆ°á»i đóng góp"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "Phương tiện"
-
-msgid "Rules"
-msgstr "Quy tắc"
-
-msgid "Lock on road"
-msgstr "Bám vào Ä‘Æ°á»ng"
-
-msgid "Northing"
-msgstr "Hướng Bắc"
-
-msgid "Map follows Vehicle"
-msgstr "Dịch bản đồ theo phương tiện khi di chuyển"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "Bản đồ"
-
-msgid "Layout"
-msgstr "Layout"
-
-msgid "Height Profile"
-msgstr "Thông tin chiá»u cao"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "Mô tả hành trình"
-
-msgid "Show Locale"
-msgstr "Hiển thị hệ ngôn ngữ"
-
-msgid "Former Destinations"
-msgstr "Äiểm đến trÆ°á»›c"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "Thông điệp"
-
-msgid "Back"
-msgstr "Quay lại"
-
-msgid "Back to map"
-msgstr "Quay lại bản đồ"
-
-msgid "Main Menu"
-msgstr "Trình đơn chính"
-
-msgid "House number"
-msgstr "Số nhà"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "Vị trí phương tiện"
-
-msgid "Main menu"
-msgstr "Trình đơn chính"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr "Xem bản đồ"
-
-msgid "Settings"
-msgstr "Thiết lập"
-
-msgid "Tools"
-msgstr "Công cụ"
-
-msgid "Route"
-msgstr "Tuyến"
-
-msgid "About"
-msgstr "Vá»"
-
-msgid "Quit"
-msgstr "Thoát"
-
-msgid "Actions"
-msgstr "Thao tác"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr "Dừng dẫn Ä‘Æ°á»ng"
-
-msgid "Display"
-msgstr "Hiển thị"
-
-msgid "Fullscreen"
-msgstr "Toàn màn hình"
-
-msgid "Window Mode"
-msgstr "Chế độ cửa sổ"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "Mô tả"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "ngá»±a"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "sau đó ra khá»i Ä‘Æ°á»ng vòng tại %1$s %2$s"
diff --git a/po/zh_CN.po.in b/po/zh_CN.po.in
deleted file mode 100644
index 44f5e1cc3..000000000
--- a/po/zh_CN.po.in
+++ /dev/null
@@ -1,2748 +0,0 @@
-# Simplified Chinese translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# Feng Chao https://launchpad.net/~chaofeng
-# Kakurady Drakenar https://launchpad.net/~kakurady
-# Kyle https://launchpad.net/~kylelover
-# Kyle WANG https://launchpad.net/~osfans
-# Lele Long https://launchpad.net/~schemacs
-# Li Jin https://launchpad.net/~lijin
-# kelvin https://launchpad.net/~kelvinz
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:01+0000\n"
-"Last-Translator: Kyle WANG <waxaca@163.com>\n"
-"Language-Team: Simplified Chinese <zh_CN@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: zh_CN\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr "从根目录执行\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "'%s' 设置为 '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "第零个"
-
-msgid "first"
-msgstr "第一个"
-
-msgid "second"
-msgstr "第二个"
-
-msgid "third"
-msgstr "第三个"
-
-msgid "fourth"
-msgstr "第四个"
-
-msgid "fifth"
-msgstr "第五个"
-
-msgid "sixth"
-msgstr "第六个"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "第零个退出"
-
-msgid "first exit"
-msgstr "第一个退出"
-
-msgid "second exit"
-msgstr "第二个退出"
-
-msgid "third exit"
-msgstr "第三个退出"
-
-msgid "fourth exit"
-msgstr "第四个退出"
-
-msgid "fifth exit"
-msgstr "第五个退出"
-
-msgid "sixth exit"
-msgstr "第六个退出"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%dç±³"
-
-#, c-format
-msgid "in %d meters"
-msgstr "è·ç¦»%dç±³"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%dåƒç±³"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "è·ç¦»%d.%dåƒç±³"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%dåƒç±³"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "è·ç¦»%dåƒç±³"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "进入å¡é“"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s到达 %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s到达 %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s到达 %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s到达 %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s到达 %s"
-
-msgid "When possible, please turn around"
-msgstr "当é‡åˆ°è·¯å£çš„时候,请转弯"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "沿路继续行驶%s"
-
-msgid "Enter the roundabout soon"
-msgstr "ä¸ä¹…将进入环形交å‰è·¯å£"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "还有%1$s %2$s就将驶离环形区"
-
-msgid "soon"
-msgstr "ä¸ä¹…"
-
-msgid "now"
-msgstr "现在"
-
-msgid "then"
-msgstr "然åŽ"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "å³"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "å·¦"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "缓 "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "急转 "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "å¯ä»¥ç»ç”±é“è·¯ %1$s 到 %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "之åŽæœ‰ %i æ¡é“è·¯"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "è½¬å‘ %1$s%2$s %3$s%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "然åŽä½ å°±åˆ°è¾¾æ‚¨çš„目的地"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "您已ç»æŠµè¾¾æ‚¨çš„目的地 %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "交æµé“"
-
-msgid "Exit"
-msgstr "退出"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "ä½ç½®"
-
-msgid "Command"
-msgstr "命令"
-
-msgid "Length"
-msgstr "长度"
-
-msgid "km"
-msgstr "åƒç±³"
-
-msgid "m"
-msgstr "ç±³"
-
-msgid "Time"
-msgstr "时间"
-
-msgid "Destination Length"
-msgstr "目的地è·ç¦»"
-
-msgid "Destination Time"
-msgstr "è·ç›®çš„地时间"
-
-msgid "Roadbook"
-msgstr "路线指å—"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "设置为起始ä½ç½®"
-
-msgid "Set as destination"
-msgstr "设置为目的地"
-
-msgid "Add as bookmark"
-msgstr "添加为书签"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "ä½ç½® 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "å±å¹•å标:%d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "安é“å°”"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "阿拉伯è”åˆé…‹é•¿å›½"
-
-#. 004
-msgid "Afghanistan"
-msgstr "阿富汗"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "安æ瓜和巴布达"
-
-#. 660
-msgid "Anguilla"
-msgstr "安圭拉"
-
-#. 008
-msgid "Albania"
-msgstr "阿尔巴尼亚"
-
-#. 051
-msgid "Armenia"
-msgstr "亚美尼亚"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "è·å…°å®‰åœ°åˆ—æ–¯"
-
-#. 024
-msgid "Angola"
-msgstr "安哥拉"
-
-#. 010
-msgid "Antarctica"
-msgstr "å—æžæ´²"
-
-#. 032
-msgid "Argentina"
-msgstr "阿根廷"
-
-#. 016
-msgid "American Samoa"
-msgstr "美属è¨æ‘©äºš"
-
-#. 040
-msgid "Austria"
-msgstr "奥地利"
-
-#. 036
-msgid "Australia"
-msgstr "澳大利亚"
-
-#. 533
-msgid "Aruba"
-msgstr "阿é²å·´å²›"
-
-#. 248
-msgid "Aland Islands"
-msgstr "奥兰群岛"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "阿塞拜疆"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "波黑"
-
-#. 052
-msgid "Barbados"
-msgstr "巴巴多斯"
-
-#. 050
-msgid "Bangladesh"
-msgstr "孟加拉国"
-
-#. 056
-msgid "Belgium"
-msgstr "比利时"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "布基纳法索"
-
-#. 100
-msgid "Bulgaria"
-msgstr "ä¿åŠ åˆ©äºš"
-
-#. 048
-msgid "Bahrain"
-msgstr "å·´æž—"
-
-#. 108
-msgid "Burundi"
-msgstr "布隆迪"
-
-#. 204
-msgid "Benin"
-msgstr "è´å®"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "圣巴泰勒米岛"
-
-#. 060
-msgid "Bermuda"
-msgstr "百慕大群岛"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "文莱达é²è¨å…°å›½"
-
-#. 068
-msgid "Bolivia"
-msgstr "玻利维亚"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "巴西"
-
-#. 044
-msgid "Bahamas"
-msgstr "巴哈马群岛"
-
-#. 064
-msgid "Bhutan"
-msgstr "ä¸ä¸¹"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "布维岛"
-
-#. 072
-msgid "Botswana"
-msgstr "åšèŒ¨ç“¦é‚£"
-
-#. 112
-msgid "Belarus"
-msgstr "白俄罗斯"
-
-#. 084
-msgid "Belize"
-msgstr "伯利兹"
-
-#. 124
-msgid "Canada"
-msgstr "加拿大"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "科科斯群岛"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "刚果"
-
-#. 140
-msgid "Central African Republic"
-msgstr "中éžå…±å’Œå›½"
-
-#. 178
-msgid "Congo"
-msgstr "刚果"
-
-#. 756
-msgid "Switzerland"
-msgstr "瑞士"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "科特迪瓦"
-
-#. 184
-msgid "Cook Islands"
-msgstr "库克群岛"
-
-#. 152
-msgid "Chile"
-msgstr "智利"
-
-#. 120
-msgid "Cameroon"
-msgstr "喀麦隆"
-
-#. 156
-msgid "China"
-msgstr "中国"
-
-#. 170
-msgid "Colombia"
-msgstr "哥伦比亚"
-
-#. 188
-msgid "Costa Rica"
-msgstr "哥斯达黎加"
-
-#. 192
-msgid "Cuba"
-msgstr "å¤å·´"
-
-#. 132
-msgid "Cape Verde"
-msgstr "佛得角"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "圣诞岛"
-
-#. 196
-msgid "Cyprus"
-msgstr "塞浦路斯"
-
-#. 203
-msgid "Czech Republic"
-msgstr "æ·å…‹"
-
-#. 276
-msgid "Germany"
-msgstr "德国"
-
-#. 262
-msgid "Djibouti"
-msgstr "å‰å¸ƒæ"
-
-#. 208
-msgid "Denmark"
-msgstr "丹麦"
-
-#. 212
-msgid "Dominica"
-msgstr "多米尼克"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "多米尼亚共和国"
-
-#. 012
-msgid "Algeria"
-msgstr "阿尔åŠåˆ©äºš"
-
-#. 218
-msgid "Ecuador"
-msgstr "厄瓜多尔"
-
-#. 233
-msgid "Estonia"
-msgstr "爱沙尼亚"
-
-#. 818
-msgid "Egypt"
-msgstr "埃åŠ"
-
-#. 732
-msgid "Western Sahara"
-msgstr "西è¨å“ˆæ‹‰"
-
-#. 232
-msgid "Eritrea"
-msgstr "厄立特里亚"
-
-#. 724
-msgid "Spain"
-msgstr "西ç­ç‰™"
-
-#. 231
-msgid "Ethiopia"
-msgstr "埃塞é¢æ¯”亚"
-
-#. 246
-msgid "Finland"
-msgstr "芬兰"
-
-#. 242
-msgid "Fiji"
-msgstr "æ–济"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "弗克兰群岛"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "密克罗尼西亚è”邦"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "法罗群岛"
-
-#. 250
-msgid "France"
-msgstr "法国"
-
-#. 266
-msgid "Gabon"
-msgstr "加蓬"
-
-#. 826
-msgid "United Kingdom"
-msgstr "英国"
-
-#. 308
-msgid "Grenada"
-msgstr "格林纳达岛"
-
-#. 268
-msgid "Georgia"
-msgstr "æ ¼é²å‰äºš"
-
-#. 254
-msgid "French Guiana"
-msgstr "法属圭亚那"
-
-#. 831
-msgid "Guernsey"
-msgstr "æ ¼æ©è¥¿å²›"
-
-#. 288
-msgid "Ghana"
-msgstr "加纳"
-
-#. 292
-msgid "Gibraltar"
-msgstr "直布罗陀"
-
-#. 304
-msgid "Greenland"
-msgstr "格陵兰岛"
-
-#. 270
-msgid "Gambia"
-msgstr "冈比亚"
-
-#. 324
-msgid "Guinea"
-msgstr "几内亚"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "瓜德罗普岛"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "赤é“几内亚"
-
-#. 300
-msgid "Greece"
-msgstr "希腊"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "å—乔治亚岛和å—桑德韦奇岛"
-
-#. 320
-msgid "Guatemala"
-msgstr "å±åœ°é©¬æ‹‰"
-
-#. 316
-msgid "Guam"
-msgstr "关岛"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "几内亚比ç»å…±å’Œå›½"
-
-#. 328
-msgid "Guyana"
-msgstr "盖亚那"
-
-#. 344
-msgid "Hong Kong"
-msgstr "香港"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "赫德和麦克å”纳群岛"
-
-#. 340
-msgid "Honduras"
-msgstr "洪都拉斯"
-
-#. 191
-msgid "Croatia"
-msgstr "克罗地亚"
-
-#. 332
-msgid "Haiti"
-msgstr "海地"
-
-#. 348
-msgid "Hungary"
-msgstr "匈牙利"
-
-#. 360
-msgid "Indonesia"
-msgstr "å°åº¦å°¼è¥¿äºš"
-
-#. 372
-msgid "Ireland"
-msgstr "爱尔兰"
-
-#. 376
-msgid "Israel"
-msgstr "以色列"
-
-#. 833
-msgid "Isle of Man"
-msgstr "马æ©å²›"
-
-#. 356
-msgid "India"
-msgstr "å°åº¦"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "英属å°åº¦æ´‹é¢†åœ°"
-
-#. 368
-msgid "Iraq"
-msgstr "伊拉克"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "伊朗伊斯兰共和国"
-
-#. 352
-msgid "Iceland"
-msgstr "冰岛"
-
-#. 380
-msgid "Italy"
-msgstr "æ„大利"
-
-#. 832
-msgid "Jersey"
-msgstr "泽西岛"
-
-#. 388
-msgid "Jamaica"
-msgstr "牙买加"
-
-#. 400
-msgid "Jordan"
-msgstr "约旦"
-
-#. 392
-msgid "Japan"
-msgstr "日本"
-
-#. 404
-msgid "Kenya"
-msgstr "肯尼亚"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "å‰å°”å‰æ–¯æ–¯å¦"
-
-#. 116
-msgid "Cambodia"
-msgstr "柬埔寨"
-
-#. 296
-msgid "Kiribati"
-msgstr "基里巴斯"
-
-#. 174
-msgid "Comoros"
-msgstr "科摩罗"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "圣基茨和尼维斯"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "æœé²œ"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "韩国"
-
-#. 414
-msgid "Kuwait"
-msgstr "科å¨ç‰¹"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "开曼群岛"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "哈è¨å…‹æ–¯å¦"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "è€æŒäººæ°‘民主共和国"
-
-#. 422
-msgid "Lebanon"
-msgstr "黎巴嫩"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "圣å¢è¥¿äºš"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "列支敦士登"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "斯里兰å¡"
-
-#. 430
-msgid "Liberia"
-msgstr "利比里亚"
-
-#. 426
-msgid "Lesotho"
-msgstr "莱索托"
-
-#. 440
-msgid "Lithuania"
-msgstr "立陶宛"
-
-#. 442
-msgid "Luxembourg"
-msgstr "å¢æ£®å ¡"
-
-#. 428
-msgid "Latvia"
-msgstr "拉脱维亚"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "摩洛哥"
-
-#. 492
-msgid "Monaco"
-msgstr "摩纳哥"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "摩尔多瓦共和国"
-
-#. 499
-msgid "Montenegro"
-msgstr "黑山"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "圣马ä¸"
-
-#. 450
-msgid "Madagascar"
-msgstr "马达加斯加"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "马ç»å°”群岛"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "马其顿"
-
-#. 466
-msgid "Mali"
-msgstr "马里"
-
-#. 104
-msgid "Myanmar"
-msgstr "缅甸"
-
-#. 496
-msgid "Mongolia"
-msgstr "è’™å¤"
-
-#. 446
-msgid "Macao"
-msgstr "澳门"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "北马里亚纳群岛"
-
-#. 474
-msgid "Martinique"
-msgstr "马æ尼克"
-
-#. 478
-msgid "Mauritania"
-msgstr "毛里塔尼亚"
-
-#. 500
-msgid "Montserrat"
-msgstr "蒙特è¨æ‹‰ç‰¹å²›"
-
-#. 470
-msgid "Malta"
-msgstr "马尔他"
-
-#. 480
-msgid "Mauritius"
-msgstr "毛里求斯"
-
-#. 462
-msgid "Maldives"
-msgstr "马尔代夫"
-
-#. 454
-msgid "Malawi"
-msgstr "马拉å¨"
-
-#. 484
-msgid "Mexico"
-msgstr "墨西哥"
-
-#. 458
-msgid "Malaysia"
-msgstr "马æ¥è¥¿äºš"
-
-#. 508
-msgid "Mozambique"
-msgstr "莫桑比克"
-
-#. 516
-msgid "Namibia"
-msgstr "纳米比亚"
-
-#. 540
-msgid "New Caledonia"
-msgstr "新喀里多尼亚"
-
-#. 562
-msgid "Niger"
-msgstr "尼日尔"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "诺ç¦å…‹å²›"
-
-#. 566
-msgid "Nigeria"
-msgstr "尼日利亚"
-
-#. 558
-msgid "Nicaragua"
-msgstr "尼加拉瓜"
-
-#. 528
-msgid "Netherlands"
-msgstr "è·å…°"
-
-#. 578
-msgid "Norway"
-msgstr "挪å¨"
-
-#. 524
-msgid "Nepal"
-msgstr "尼泊尔"
-
-#. 520
-msgid "Nauru"
-msgstr "ç‘™é²"
-
-#. 570
-msgid "Niue"
-msgstr "纽埃岛"
-
-#. 554
-msgid "New Zealand"
-msgstr "新西兰"
-
-#. 512
-msgid "Oman"
-msgstr "阿曼"
-
-#. 591
-msgid "Panama"
-msgstr "巴拿马"
-
-#. 604
-msgid "Peru"
-msgstr "秘é²"
-
-#. 258
-msgid "French Polynesia"
-msgstr "法属波利尼西亚"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "巴布亚新几内亚"
-
-#. 608
-msgid "Philippines"
-msgstr "è²å¾‹å®¾"
-
-#. 586
-msgid "Pakistan"
-msgstr "巴基斯å¦"
-
-#. 616
-msgid "Poland"
-msgstr "波兰"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "圣皮埃尔和密克隆"
-
-#. 612
-msgid "Pitcairn"
-msgstr "皮特凯æ©"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "波多黎å„"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "å·´å‹’æ–¯å¦é¢†åœŸè¢«å é¢†"
-
-#. 620
-msgid "Portugal"
-msgstr "è‘¡è„牙"
-
-#. 585
-msgid "Palau"
-msgstr "帕劳"
-
-#. 600
-msgid "Paraguay"
-msgstr "巴拉圭"
-
-#. 634
-msgid "Qatar"
-msgstr "å¡å¡”å°”"
-
-#. 638
-msgid "Reunion"
-msgstr "法属留尼旺岛"
-
-#. 642
-msgid "Romania"
-msgstr "罗马尼亚"
-
-#. 688
-msgid "Serbia"
-msgstr "塞尔维亚"
-
-#. 643
-msgid "Russian Federation"
-msgstr "ä¿„ç½—æ–¯è”邦"
-
-#. 646
-msgid "Rwanda"
-msgstr "å¢æ—ºè¾¾"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "沙特阿拉伯"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "所罗门群岛"
-
-#. 690
-msgid "Seychelles"
-msgstr "塞舌尔"
-
-#. 736
-msgid "Sudan"
-msgstr "è‹ä¸¹"
-
-#. 752
-msgid "Sweden"
-msgstr "ç‘žå…¸"
-
-#. 702
-msgid "Singapore"
-msgstr "新加å¡"
-
-#. 654
-msgid "Saint Helena"
-msgstr "圣赫勒拿"
-
-#. 705
-msgid "Slovenia"
-msgstr "斯洛文尼亚"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "斯瓦尔巴群岛"
-
-#. 703
-msgid "Slovakia"
-msgstr "斯洛ä¼å…‹"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "塞拉利昂"
-
-#. 674
-msgid "San Marino"
-msgstr "圣马力诺"
-
-#. 686
-msgid "Senegal"
-msgstr "塞内加尔"
-
-#. 706
-msgid "Somalia"
-msgstr "索马里"
-
-#. 740
-msgid "Suriname"
-msgstr "è‹é‡Œå—"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "圣多美åŠæ™®æž—西比"
-
-#. 222
-msgid "El Salvador"
-msgstr "è¨å°”瓦多"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "阿拉伯å™åˆ©äºšå…±å’Œå›½"
-
-#. 748
-msgid "Swaziland"
-msgstr "æ–¯å¨å£«å…°"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "特克斯和凯科斯群岛"
-
-#. 148
-msgid "Chad"
-msgstr "ä¹å¾—"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "法属å—部å é¢†åœ°"
-
-#. 768
-msgid "Togo"
-msgstr "多哥"
-
-#. 764
-msgid "Thailand"
-msgstr "泰国"
-
-#. 762
-msgid "Tajikistan"
-msgstr "å¡”å‰å…‹æ–¯å¦"
-
-#. 772
-msgid "Tokelau"
-msgstr "托克劳"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "东å¸æ±¶"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "土库曼斯å¦"
-
-#. 788
-msgid "Tunisia"
-msgstr "çªå°¼æ–¯"
-
-#. 776
-msgid "Tonga"
-msgstr "汤加"
-
-#. 792
-msgid "Turkey"
-msgstr "土耳其"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "特立尼达和多巴哥"
-
-#. 798
-msgid "Tuvalu"
-msgstr "图瓦å¢"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "å°æ¹¾ï¼ˆä¸­å›½ï¼‰"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "å¦æ¡‘尼亚è”åˆå…±å’Œå›½"
-
-#. 804
-msgid "Ukraine"
-msgstr "乌克兰"
-
-#. 800
-msgid "Uganda"
-msgstr "乌干达"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "美国本土外å°å²›å±¿"
-
-#. 840
-msgid "United States"
-msgstr "美国"
-
-#. 858
-msgid "Uruguay"
-msgstr "乌拉圭"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "乌兹别克斯å¦"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "圣座"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "圣文森特和格林纳ä¸æ–¯"
-
-#. 862
-msgid "Venezuela"
-msgstr "委内瑞拉"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "英属维京群岛"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "美属维京群岛"
-
-#. 704
-msgid "Viet Nam"
-msgstr "越å—"
-
-#. 548
-msgid "Vanuatu"
-msgstr "瓦努阿图"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "瓦利斯和富图纳群岛"
-
-#. 882
-msgid "Samoa"
-msgstr "è¨æ‘©äºšç¾¤å²›"
-
-#. 887
-msgid "Yemen"
-msgstr "也门"
-
-#. 175
-msgid "Mayotte"
-msgstr "马约特岛"
-
-#. 710
-msgid "South Africa"
-msgstr "å—éž"
-
-#. 894
-msgid "Zambia"
-msgstr "赞比亚"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "津巴布韦"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* 未知,添加标签"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "地图ä½ç½®ç‚¹"
-
-msgid "Car"
-msgstr "汽车"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "国家"
-
-msgid "Postal"
-msgstr "邮编"
-
-msgid "Town"
-msgstr "区/镇"
-
-msgid "District"
-msgstr "城区"
-
-msgid "Street"
-msgstr "街区"
-
-msgid "Number"
-msgstr "门牌å·"
-
-msgid "Enter Destination"
-msgstr "进入目标区域"
-
-msgid "Zip Code"
-msgstr "区å·ï¼ˆé‚®ç¼–)"
-
-msgid "City"
-msgstr "城市"
-
-msgid "District/Township"
-msgstr "市区/区镇"
-
-msgid "Map"
-msgstr "地图"
-
-msgid "Bookmark"
-msgstr "书签"
-
-msgid "Destination"
-msgstr "目的地"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "显示"
-
-msgid "_Route"
-msgstr "路线"
-
-msgid "_Former Destinations"
-msgstr "å‰ä¸€ç›®çš„地"
-
-msgid "_Bookmarks"
-msgstr "书签"
-
-msgid "_Map"
-msgstr "地图"
-
-msgid "_Layout"
-msgstr "布局"
-
-msgid "_Projection"
-msgstr "规划"
-
-msgid "_Vehicle"
-msgstr "车辆"
-
-msgid "Zoom_Out"
-msgstr "缩å°"
-
-msgid "Decrease zoom level"
-msgstr "å‡å°æ”¾å¤§çº§åˆ«"
-
-msgid "Zoom_In"
-msgstr "放大"
-
-msgid "Increase zoom level"
-msgstr "增加放大级别"
-
-msgid "_Recalculate"
-msgstr "é‡æ–°è®¡ç®—"
-
-msgid "Redraw map"
-msgstr "é‡ç»˜åœ°å›¾"
-
-msgid "_Info"
-msgstr "ä¿¡æ¯"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr "打开地å€æœç´¢å¯¹è¯æ¡†"
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "åœæ­¢å¯¼èˆª"
-
-msgid "Test"
-msgstr "测试"
-
-msgid "_Quit"
-msgstr "退出(_Q)"
-
-msgid "Quit the application"
-msgstr "退出应用程åº"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr "é”定路线"
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "切æ¢åœ°å›¾å‘上指北或å‰è¿›æ–¹å‘"
-
-msgid "_Roadbook"
-msgstr "路线指å—"
-
-msgid "Show/hide route description"
-msgstr "显示/éšè—路线æè¿°"
-
-msgid "_Autozoom"
-msgstr "自动缩放"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "å¯ç”¨/ç¦ç”¨ 自动改å˜æ”¾å¤§çº§åˆ«"
-
-msgid "_Fullscreen"
-msgstr "å…¨å±"
-
-msgid "Data"
-msgstr "æ•°æ®"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "北"
-
-msgid "NE"
-msgstr "东北"
-
-msgid "E"
-msgstr "东"
-
-msgid "SE"
-msgstr "东å—"
-
-msgid "S"
-msgstr "å—"
-
-msgid "SW"
-msgstr "西å—"
-
-msgid "W"
-msgstr "西"
-
-msgid "NW"
-msgstr "西北"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "å¦"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "路线 %4.0fåƒç±³ %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "路线 0000åƒç±³ 0+00:00 ETA"
-
-msgid "Help"
-msgstr "帮助"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "在æµè§ˆå™¨ä¸­æŸ¥çœ‹"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "è¡—é“"
-
-msgid "House numbers"
-msgstr "ç¼–å·"
-
-msgid "View Attributes"
-msgstr "查看属性"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr "您å¯èƒ½æ„Ÿå…´è¶£çš„ä½ç½®"
-
-msgid "View on map"
-msgstr "在地图中查看"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "剪切标签"
-
-msgid "Copy Bookmark"
-msgstr "å¤åˆ¶æ ‡ç­¾"
-
-msgid "Rename Bookmark"
-msgstr "é‡å‘½å标签"
-
-msgid "Paste Bookmark"
-msgstr "粘帖标签"
-
-msgid "Delete Bookmark"
-msgstr "删除标签"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "书签"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "添加书签文件夹"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "粘帖标签"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "书签 %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "显示å«æ˜ŸçŠ¶æ€"
-
-msgid " Elevation "
-msgstr " æµ·æ‹” "
-
-msgid " Azimuth "
-msgstr " 地平ç»åº¦ "
-
-msgid "Show NMEA Data"
-msgstr "显示NMEAæ•°æ®"
-
-msgid "car"
-msgstr "汽车"
-
-msgid "bike"
-msgstr "自行车"
-
-msgid "pedestrian"
-msgstr "步行"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "当å‰è®¾å®šï¼š%s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "更改设定到: %s"
-
-msgid "Set as active"
-msgstr "ä¿å­˜ç”Ÿæ•ˆ"
-
-msgid "Show Satellite status"
-msgstr "显示å«æ˜ŸçŠ¶æ€"
-
-msgid "Show NMEA data"
-msgstr "显示NMEAæ•°æ®"
-
-msgid "Add Bookmark"
-msgstr "增加书签"
-
-msgid "Rename"
-msgstr "é‡å‘½å"
-
-msgid "About Navit"
-msgstr "关于Navit"
-
-#. Authors
-msgid "By"
-msgstr "作者"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "和整个的Navit组"
-
-msgid "members and contributors."
-msgstr "æˆå‘˜å’Œè´¡çŒ®è€…"
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "车辆"
-
-msgid "Rules"
-msgstr "规则"
-
-msgid "Lock on road"
-msgstr "é”定路线"
-
-msgid "Northing"
-msgstr "总指å‘北"
-
-msgid "Map follows Vehicle"
-msgstr "éšè½¦æ˜¾ç¤ºåœ°å›¾"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "地图"
-
-msgid "Layout"
-msgstr "布局"
-
-msgid "Height Profile"
-msgstr "高度设定"
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "到目的地的路线"
-
-msgid "Show Locale"
-msgstr "显示本地"
-
-msgid "Former Destinations"
-msgstr "å‰ä¸€ç›®çš„地"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "ä¿¡æ¯"
-
-msgid "Back"
-msgstr "返回"
-
-msgid "Back to map"
-msgstr "返回到地图"
-
-msgid "Main Menu"
-msgstr "主èœå•"
-
-msgid "House number"
-msgstr "房屋编å·ï¼ˆé—¨ç‰Œå·ï¼‰"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "车辆ä½ç½®"
-
-msgid "Main menu"
-msgstr "主èœå•"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr "显示地图"
-
-msgid "Settings"
-msgstr "设置"
-
-msgid "Tools"
-msgstr "工具"
-
-msgid "Route"
-msgstr "路线"
-
-msgid "About"
-msgstr "关于"
-
-msgid "Quit"
-msgstr "退出"
-
-msgid "Actions"
-msgstr "动作"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr "åœæ­¢å¯¼èˆª"
-
-msgid "Display"
-msgstr "显示"
-
-msgid "Fullscreen"
-msgstr "å…¨å±"
-
-msgid "Window Mode"
-msgstr "窗å£æ¨¡å¼"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "æè¿°"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "骑马"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "然åŽåœ¨%1$s %2$s处驶出环形区"
diff --git a/po/zh_HK.po.in b/po/zh_HK.po.in
deleted file mode 100644
index 49fb73c01..000000000
--- a/po/zh_HK.po.in
+++ /dev/null
@@ -1,2750 +0,0 @@
-# Chinese (Hong Kong) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# KaZeR https://launchpad.net/~kazer
-# Kyle https://launchpad.net/~kylelover
-# Michael von Glasow https://launchpad.net/~michael-vonglasow
-# Walter Cheuk https://launchpad.net/~wwycheuk
-# icefirewu https://launchpad.net/~icefirewu
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit 0.5.0\n"
-"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2015-07-19 04:01+0000\n"
-"Last-Translator: Michael von Glasow <Unknown>\n"
-"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Language: zh_HK\n"
-"X-Report-Errors: https://translations.launchpad.net/navit/trunk/+pots/navit\n"
-
-msgid "Running from source directory\n"
-msgstr ""
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "將「%sã€è¨­ç‚ºã€Œ%sã€\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "附近"
-
-msgid "first"
-msgstr "第一æ¢"
-
-msgid "second"
-msgstr "第二æ¢"
-
-msgid "third"
-msgstr "第三æ¢"
-
-msgid "fourth"
-msgstr "第四æ¢"
-
-msgid "fifth"
-msgstr "第五æ¢"
-
-msgid "sixth"
-msgstr "第六æ¢"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "附近出å£"
-
-msgid "first exit"
-msgstr "第一個出å£"
-
-msgid "second exit"
-msgstr "第二個出å£"
-
-msgid "third exit"
-msgstr "第三個出å£"
-
-msgid "fourth exit"
-msgstr "第四個出å£"
-
-msgid "fifth exit"
-msgstr "第五個出å£"
-
-msgid "sixth exit"
-msgstr "第六個出å£"
-
-#, c-format
-msgid "%d feet"
-msgstr ""
-
-#, c-format
-msgid "in %d feet"
-msgstr ""
-
-#, c-format
-msgid "%d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr ""
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] ""
-msgstr[1] ""
-
-#, c-format
-msgid "%d meters"
-msgstr "%d ç±³"
-
-#, c-format
-msgid "in %d meters"
-msgstr "在 %d 米內"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d.%d åƒç±³"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "在 %d.%d åƒç±³å…§"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d åƒç±³"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "在 %d åƒç±³å…§"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr ""
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr ""
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "進入斜路"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s進入 %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s進入 %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s進入 %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s進入 %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s進入 %s"
-
-msgid "When possible, please turn around"
-msgstr "如å¯ä»¥è«‹æŽ‰é ­"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr ""
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "直走到下一个%s"
-
-msgid "Enter the roundabout soon"
-msgstr ""
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr ""
-
-msgid "then enter the roundabout"
-msgstr ""
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "在 %1$s %2$s 離開迴旋處"
-
-msgid "soon"
-msgstr "å³å°‡"
-
-msgid "now"
-msgstr "ç¾åœ¨"
-
-msgid "then"
-msgstr "然後"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr ""
-
-msgid "on your left"
-msgstr ""
-
-msgid "on your right"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr ""
-
-msgid "at exit"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr ""
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr ""
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "å³"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "å·¦"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "ç®€å• "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "大力轉 "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr ""
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "å– %1$s 路往%2$sæ–¹å‘"
-
-#, c-format
-msgid "after %i roads"
-msgstr "%i æ¢è·¯ä¹‹å¾Œ"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "%1$s转å‘%2$s %3$s至%4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr ""
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr ""
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr ""
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr ""
-
-msgid "then you have reached your destination."
-msgstr "然後會到é”目的地"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "已到é”目的地 %s"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr ""
-
-msgid "Exit"
-msgstr "退出"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "ä½ç½®"
-
-msgid "Command"
-msgstr "指令"
-
-msgid "Length"
-msgstr "長度"
-
-msgid "km"
-msgstr "公里"
-
-msgid "m"
-msgstr "ç±³"
-
-msgid "Time"
-msgstr "時間"
-
-msgid "Destination Length"
-msgstr "抵达终点è·ç¦»"
-
-msgid "Destination Time"
-msgstr "抵达终点时间"
-
-msgid "Roadbook"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %d"
-msgstr ""
-
-msgid "Visit before..."
-msgstr ""
-
-msgid "Set as position"
-msgstr "设置您所在ä½ç½®"
-
-msgid "Set as destination"
-msgstr "设置目的地地å€"
-
-msgid "Add as bookmark"
-msgstr "添加书签"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr ""
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "螢幕座標 : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "安é“爾"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "阿è¯é…‹"
-
-#. 004
-msgid "Afghanistan"
-msgstr "阿富汗"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "安æ瓜和巴布é”"
-
-#. 660
-msgid "Anguilla"
-msgstr "安圭拉"
-
-#. 008
-msgid "Albania"
-msgstr "阿爾巴尼亞"
-
-#. 051
-msgid "Armenia"
-msgstr "亞美尼亞"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "è·å±¬å®‰çš„列斯羣島"
-
-#. 024
-msgid "Angola"
-msgstr "安哥拉"
-
-#. 010
-msgid "Antarctica"
-msgstr "å—極洲"
-
-#. 032
-msgid "Argentina"
-msgstr "阿根廷"
-
-#. 016
-msgid "American Samoa"
-msgstr "美屬薩摩亞"
-
-#. 040
-msgid "Austria"
-msgstr "奧地利"
-
-#. 036
-msgid "Australia"
-msgstr "澳大利亞"
-
-#. 533
-msgid "Aruba"
-msgstr "阿盧巴島"
-
-#. 248
-msgid "Aland Islands"
-msgstr "亞蘭羣島"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "阿塞拜疆"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "波斯尼亞"
-
-#. 052
-msgid "Barbados"
-msgstr "巴巴多斯"
-
-#. 050
-msgid "Bangladesh"
-msgstr "孟加拉"
-
-#. 056
-msgid "Belgium"
-msgstr "比利時"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "布基ç´æ³•ç´¢"
-
-#. 100
-msgid "Bulgaria"
-msgstr "ä¿åŠ åˆ©äºž"
-
-#. 048
-msgid "Bahrain"
-msgstr "å·´æž—"
-
-#. 108
-msgid "Burundi"
-msgstr "蒲隆地"
-
-#. 204
-msgid "Benin"
-msgstr "è²å¯§"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "è–巴泰勒米島"
-
-#. 060
-msgid "Bermuda"
-msgstr "百慕é”"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "汶èŠ"
-
-#. 068
-msgid "Bolivia"
-msgstr "玻利維亞"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr ""
-
-#. 076
-msgid "Brazil"
-msgstr "巴西"
-
-#. 044
-msgid "Bahamas"
-msgstr "巴哈馬"
-
-#. 064
-msgid "Bhutan"
-msgstr "ä¸ä¸¹"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "鮑å¨ç‰¹å³¶"
-
-#. 072
-msgid "Botswana"
-msgstr "åšèŒ¨ç“¦ç´"
-
-#. 112
-msgid "Belarus"
-msgstr "白俄羅斯"
-
-#. 084
-msgid "Belize"
-msgstr "伯利茲"
-
-#. 124
-msgid "Canada"
-msgstr "加拿大"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "å¯å¯æ–¯(基林)羣島"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "剛果民主共和國"
-
-#. 140
-msgid "Central African Republic"
-msgstr "中éžå…±å’Œåœ‹"
-
-#. 178
-msgid "Congo"
-msgstr "剛果"
-
-#. 756
-msgid "Switzerland"
-msgstr "瑞士"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "象牙海岸"
-
-#. 184
-msgid "Cook Islands"
-msgstr "庫克羣島"
-
-#. 152
-msgid "Chile"
-msgstr "智利"
-
-#. 120
-msgid "Cameroon"
-msgstr "喀麥隆"
-
-#. 156
-msgid "China"
-msgstr "中國"
-
-#. 170
-msgid "Colombia"
-msgstr "哥倫比亞"
-
-#. 188
-msgid "Costa Rica"
-msgstr "哥斯é”黎加"
-
-#. 192
-msgid "Cuba"
-msgstr "å¤å·´"
-
-#. 132
-msgid "Cape Verde"
-msgstr "佛得角"
-
-#. 531
-msgid "Curacao"
-msgstr ""
-
-#. 162
-msgid "Christmas Island"
-msgstr "è–誕島"
-
-#. 196
-msgid "Cyprus"
-msgstr "塞浦路斯"
-
-#. 203
-msgid "Czech Republic"
-msgstr "æ·å…‹å…±å’Œåœ‹"
-
-#. 276
-msgid "Germany"
-msgstr "德國"
-
-#. 262
-msgid "Djibouti"
-msgstr "å‰å¸ƒæ"
-
-#. 208
-msgid "Denmark"
-msgstr "丹麥"
-
-#. 212
-msgid "Dominica"
-msgstr "多米尼克"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "多明尼加"
-
-#. 012
-msgid "Algeria"
-msgstr "阿爾åŠåˆ©äºž"
-
-#. 218
-msgid "Ecuador"
-msgstr "厄瓜多爾"
-
-#. 233
-msgid "Estonia"
-msgstr "爱尔沙尼亚"
-
-#. 818
-msgid "Egypt"
-msgstr "埃åŠ"
-
-#. 732
-msgid "Western Sahara"
-msgstr "西撒哈拉"
-
-#. 232
-msgid "Eritrea"
-msgstr "厄立特里亞"
-
-#. 724
-msgid "Spain"
-msgstr "西ç­ç‰™"
-
-#. 231
-msgid "Ethiopia"
-msgstr "埃塞俄比亞"
-
-#. 246
-msgid "Finland"
-msgstr "芬蘭"
-
-#. 242
-msgid "Fiji"
-msgstr "æ–濟群島"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "ç¦å…‹è˜­ç¾£å³¶"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "密克羅尼西亞è¯é‚¦"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "法羅羣島"
-
-#. 250
-msgid "France"
-msgstr "法國"
-
-#. 266
-msgid "Gabon"
-msgstr "加彭"
-
-#. 826
-msgid "United Kingdom"
-msgstr "英國"
-
-#. 308
-msgid "Grenada"
-msgstr "格林纳达"
-
-#. 268
-msgid "Georgia"
-msgstr "喬治亞州"
-
-#. 254
-msgid "French Guiana"
-msgstr "法屬圭亞那"
-
-#. 831
-msgid "Guernsey"
-msgstr "æ ¹æ¯"
-
-#. 288
-msgid "Ghana"
-msgstr "加ç´"
-
-#. 292
-msgid "Gibraltar"
-msgstr "直布羅陀"
-
-#. 304
-msgid "Greenland"
-msgstr "格陵蘭"
-
-#. 270
-msgid "Gambia"
-msgstr "岡比亞"
-
-#. 324
-msgid "Guinea"
-msgstr "几内亚"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "瓜德魯普島"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "赤é“畿內亞"
-
-#. 300
-msgid "Greece"
-msgstr "希腊"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "å—喬治亞島和å—æ¡‘å¨å¥‡ç¾£å³¶"
-
-#. 320
-msgid "Guatemala"
-msgstr "å±åœ°é¦¬æ‹‰"
-
-#. 316
-msgid "Guam"
-msgstr "關島"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "畿內亞比索"
-
-#. 328
-msgid "Guyana"
-msgstr "圭亞那"
-
-#. 344
-msgid "Hong Kong"
-msgstr "香港"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "赫德島與麥當勞群島"
-
-#. 340
-msgid "Honduras"
-msgstr "洪都拉斯"
-
-#. 191
-msgid "Croatia"
-msgstr "克羅地亞"
-
-#. 332
-msgid "Haiti"
-msgstr "海地"
-
-#. 348
-msgid "Hungary"
-msgstr "匈牙利"
-
-#. 360
-msgid "Indonesia"
-msgstr "å°å°¼"
-
-#. 372
-msgid "Ireland"
-msgstr "愛爾蘭"
-
-#. 376
-msgid "Israel"
-msgstr "以色列"
-
-#. 833
-msgid "Isle of Man"
-msgstr "曼島"
-
-#. 356
-msgid "India"
-msgstr "å°åº¦"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "英屬å°åº¦æ´‹åœ°å€"
-
-#. 368
-msgid "Iraq"
-msgstr "伊拉克"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "伊朗"
-
-#. 352
-msgid "Iceland"
-msgstr "冰島"
-
-#. 380
-msgid "Italy"
-msgstr "æ„大利"
-
-#. 832
-msgid "Jersey"
-msgstr "澤西島"
-
-#. 388
-msgid "Jamaica"
-msgstr "牙買加"
-
-#. 400
-msgid "Jordan"
-msgstr "ç´„æ—¦"
-
-#. 392
-msgid "Japan"
-msgstr "日本"
-
-#. 404
-msgid "Kenya"
-msgstr "肯尼亞"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "å‰çˆ¾å‰æ–¯"
-
-#. 116
-msgid "Cambodia"
-msgstr "柬埔寨"
-
-#. 296
-msgid "Kiribati"
-msgstr "基里巴斯"
-
-#. 174
-msgid "Comoros"
-msgstr "科摩羅"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "è–基茨和尼維斯聯邦"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "北æœé²œ"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "å—韓"
-
-#. 414
-msgid "Kuwait"
-msgstr "科å¨ç‰¹"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "開曼羣島"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "哈薩克"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "è€æ’¾"
-
-#. 422
-msgid "Lebanon"
-msgstr "黎巴嫩"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "è–盧西亞"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "列支敦士登"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "斯里蘭å¡"
-
-#. 430
-msgid "Liberia"
-msgstr "利比里亞"
-
-#. 426
-msgid "Lesotho"
-msgstr "èŠç´¢æ‰˜"
-
-#. 440
-msgid "Lithuania"
-msgstr "立陶宛"
-
-#. 442
-msgid "Luxembourg"
-msgstr "å¢æ£®å ¡"
-
-#. 428
-msgid "Latvia"
-msgstr "拉脫維亞"
-
-#. 434
-msgid "Libya"
-msgstr ""
-
-#. 504
-msgid "Morocco"
-msgstr "摩洛哥"
-
-#. 492
-msgid "Monaco"
-msgstr "æ‘©ç´å“¥"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "摩爾多瓦"
-
-#. 499
-msgid "Montenegro"
-msgstr "黑山"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "法屬è–馬田"
-
-#. 450
-msgid "Madagascar"
-msgstr "馬é”加斯加"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "馬紹爾羣島"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "馬其頓"
-
-#. 466
-msgid "Mali"
-msgstr "馬里"
-
-#. 104
-msgid "Myanmar"
-msgstr "緬甸"
-
-#. 496
-msgid "Mongolia"
-msgstr "è’™å¤"
-
-#. 446
-msgid "Macao"
-msgstr "澳門"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "北馬里亞ç´ç¾£å³¶"
-
-#. 474
-msgid "Martinique"
-msgstr "法屬馬ä¸å°¼å…‹"
-
-#. 478
-msgid "Mauritania"
-msgstr "毛里塔尼亞"
-
-#. 500
-msgid "Montserrat"
-msgstr "蒙的塞拉特"
-
-#. 470
-msgid "Malta"
-msgstr "馬耳他"
-
-#. 480
-msgid "Mauritius"
-msgstr "毛里求斯"
-
-#. 462
-msgid "Maldives"
-msgstr "马尔代夫"
-
-#. 454
-msgid "Malawi"
-msgstr "馬拉維"
-
-#. 484
-msgid "Mexico"
-msgstr "墨西哥"
-
-#. 458
-msgid "Malaysia"
-msgstr "马來西亚"
-
-#. 508
-msgid "Mozambique"
-msgstr "莫三鼻給"
-
-#. 516
-msgid "Namibia"
-msgstr "纳米比亚"
-
-#. 540
-msgid "New Caledonia"
-msgstr "新喀里多尼亞"
-
-#. 562
-msgid "Niger"
-msgstr "尼日尔"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "諾ç¦å…‹ç¾£å³¶"
-
-#. 566
-msgid "Nigeria"
-msgstr "尼日利亚"
-
-#. 558
-msgid "Nicaragua"
-msgstr "尼加拉瓜"
-
-#. 528
-msgid "Netherlands"
-msgstr "è·å…°"
-
-#. 578
-msgid "Norway"
-msgstr "挪å¨"
-
-#. 524
-msgid "Nepal"
-msgstr "尼泊尔"
-
-#. 520
-msgid "Nauru"
-msgstr "瑙魯"
-
-#. 570
-msgid "Niue"
-msgstr "ç´å¨å³¶"
-
-#. 554
-msgid "New Zealand"
-msgstr "新西兰"
-
-#. 512
-msgid "Oman"
-msgstr "阿曼"
-
-#. 591
-msgid "Panama"
-msgstr "巴拿馬"
-
-#. 604
-msgid "Peru"
-msgstr "秘魯"
-
-#. 258
-msgid "French Polynesia"
-msgstr "法屬玻利尼西亞"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "巴布亞新畿內亞"
-
-#. 608
-msgid "Philippines"
-msgstr "è²å¾‹è³“"
-
-#. 586
-msgid "Pakistan"
-msgstr "巴基斯å¦"
-
-#. 616
-msgid "Poland"
-msgstr "波兰"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "è–皮耶與密克隆羣島"
-
-#. 612
-msgid "Pitcairn"
-msgstr "皮特康島"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "波多黎å„"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "å·´å‹’æ–¯å¦"
-
-#. 620
-msgid "Portugal"
-msgstr "è‘¡è„牙"
-
-#. 585
-msgid "Palau"
-msgstr "帛ç‰ç¾£å³¶"
-
-#. 600
-msgid "Paraguay"
-msgstr "巴拉圭"
-
-#. 634
-msgid "Qatar"
-msgstr "å¡å¡”å°”"
-
-#. 638
-msgid "Reunion"
-msgstr "留尼旺"
-
-#. 642
-msgid "Romania"
-msgstr "罗马尼亚"
-
-#. 688
-msgid "Serbia"
-msgstr "塞尔维亚"
-
-#. 643
-msgid "Russian Federation"
-msgstr "ä¿„ç½—æ–¯"
-
-#. 646
-msgid "Rwanda"
-msgstr "å¢æ—ºè¾¾"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "沙特阿拉伯"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "所罗门群島"
-
-#. 690
-msgid "Seychelles"
-msgstr "塞舌爾"
-
-#. 736
-msgid "Sudan"
-msgstr "è‹ä¸¹"
-
-#. 752
-msgid "Sweden"
-msgstr "ç‘žå…¸"
-
-#. 702
-msgid "Singapore"
-msgstr "新加å¡"
-
-#. 654
-msgid "Saint Helena"
-msgstr "è–海倫娜島"
-
-#. 705
-msgid "Slovenia"
-msgstr "斯洛文尼亞"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "斯瓦爾巴特和æšé¦¬å»¶å³¶"
-
-#. 703
-msgid "Slovakia"
-msgstr "斯洛ä¼å…‹"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "塞拉利昂"
-
-#. 674
-msgid "San Marino"
-msgstr "è–馬力諾"
-
-#. 686
-msgid "Senegal"
-msgstr "塞內加爾"
-
-#. 706
-msgid "Somalia"
-msgstr "索馬里"
-
-#. 740
-msgid "Suriname"
-msgstr "蘇里å—"
-
-#. 728
-msgid "South Sudan"
-msgstr ""
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "è–多美和普林西比"
-
-#. 222
-msgid "El Salvador"
-msgstr "薩爾瓦多"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr ""
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "æ•åˆ©äºž"
-
-#. 748
-msgid "Swaziland"
-msgstr "æ–¯å¨å£«å…°"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "特克斯和凱科斯羣島"
-
-#. 148
-msgid "Chad"
-msgstr "ä¹å¾—"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "法屬å—方領土"
-
-#. 768
-msgid "Togo"
-msgstr "多哥"
-
-#. 764
-msgid "Thailand"
-msgstr "泰國"
-
-#. 762
-msgid "Tajikistan"
-msgstr "å¡”å‰å…‹æ–¯å¦"
-
-#. 772
-msgid "Tokelau"
-msgstr "托克勞羣島"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "æ±å¸æ±¶"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "土庫曼"
-
-#. 788
-msgid "Tunisia"
-msgstr "çªå°¼æ–¯"
-
-#. 776
-msgid "Tonga"
-msgstr "汤加"
-
-#. 792
-msgid "Turkey"
-msgstr "土耳其"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "åƒé‡Œé”"
-
-#. 798
-msgid "Tuvalu"
-msgstr "圖瓦盧"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "å°æ¹¾"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "å¦æ¡‘尼亞"
-
-#. 804
-msgid "Ukraine"
-msgstr "乌克兰"
-
-#. 800
-msgid "Uganda"
-msgstr "乌干达"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "美屬邊疆羣島"
-
-#. 840
-msgid "United States"
-msgstr "美國"
-
-#. 858
-msgid "Uruguay"
-msgstr "乌拉圭"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "乌兹别克斯å¦"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "梵蒂岡"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "è–文森特和格林ç´ä¸æ–¯"
-
-#. 862
-msgid "Venezuela"
-msgstr "委內瑞拉"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "處女羣島 (英屬)"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "處女羣島 (美屬)"
-
-#. 704
-msgid "Viet Nam"
-msgstr "越å—"
-
-#. 548
-msgid "Vanuatu"
-msgstr "瓦努阿圖"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "瓦利斯åŠå¯Œåœ–ç´ç¾£å³¶"
-
-#. 882
-msgid "Samoa"
-msgstr "Samoa (薩摩亞)"
-
-#. 887
-msgid "Yemen"
-msgstr "也门"
-
-#. 175
-msgid "Mayotte"
-msgstr "馬約特"
-
-#. 710
-msgid "South Africa"
-msgstr "å—éž"
-
-#. 894
-msgid "Zambia"
-msgstr "赞比亚"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "津巴布韦"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr ""
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr ""
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr ""
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr ""
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr ""
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr ""
-
-msgid "unknown street"
-msgstr ""
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr ""
-
-msgid "Failed to write bookmarks file"
-msgstr ""
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr ""
-
-msgid "Car"
-msgstr "汽車"
-
-msgid "Iso2"
-msgstr ""
-
-msgid "Iso3"
-msgstr ""
-
-msgid "Country"
-msgstr "国家"
-
-msgid "Postal"
-msgstr "郵éžå€è™Ÿ"
-
-msgid "Town"
-msgstr "城镇"
-
-msgid "District"
-msgstr "行政区"
-
-msgid "Street"
-msgstr "è¡—"
-
-msgid "Number"
-msgstr "å·"
-
-msgid "Enter Destination"
-msgstr "输入目的地"
-
-msgid "Zip Code"
-msgstr "邮政编ç "
-
-msgid "City"
-msgstr "城市"
-
-msgid "District/Township"
-msgstr "å€ï¼éŽ®ï¼é„‰"
-
-msgid "Map"
-msgstr "地圖"
-
-msgid "Bookmark"
-msgstr "书签"
-
-msgid "Destination"
-msgstr "目的地"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "显示"
-
-msgid "_Route"
-msgstr "è·¯"
-
-msgid "_Former Destinations"
-msgstr "å‰ä¸€ä¸ªç›®çš„地"
-
-msgid "_Bookmarks"
-msgstr ""
-
-msgid "_Map"
-msgstr ""
-
-msgid "_Layout"
-msgstr ""
-
-msgid "_Projection"
-msgstr "投影"
-
-msgid "_Vehicle"
-msgstr "机动车"
-
-msgid "Zoom_Out"
-msgstr "放大"
-
-msgid "Decrease zoom level"
-msgstr "減少放大層次"
-
-msgid "Zoom_In"
-msgstr "缩å°"
-
-msgid "Increase zoom level"
-msgstr "增加放大層次"
-
-msgid "_Recalculate"
-msgstr ""
-
-msgid "Redraw map"
-msgstr "é‡ç•«åœ°åœ–"
-
-msgid "_Info"
-msgstr "ä¿¡æ¯"
-
-msgid "Set _destination"
-msgstr ""
-
-msgid "Opens address search dialog"
-msgstr ""
-
-msgid "_POI search"
-msgstr ""
-
-msgid "Opens POI search dialog"
-msgstr ""
-
-msgid "_Stop Navigation"
-msgstr "åœæ­¢æµè§ˆ"
-
-msgid "Test"
-msgstr "测试"
-
-msgid "_Quit"
-msgstr "退出"
-
-msgid "Quit the application"
-msgstr "çµæŸé€™å€‹ç¨‹å¼"
-
-msgid "Show position _cursor"
-msgstr ""
-
-msgid "_Lock on Road"
-msgstr ""
-
-msgid "_Keep orientation to the North"
-msgstr ""
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "將地圖å‘ç€åŒ—é¢æˆ–車輛å‰é€²æ–¹å‘"
-
-msgid "_Roadbook"
-msgstr ""
-
-msgid "Show/hide route description"
-msgstr "顯示或隱è—路線說明"
-
-msgid "_Autozoom"
-msgstr ""
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "啟用或åœç”¨è‡ªå‹•æ”¾å¤§"
-
-msgid "_Fullscreen"
-msgstr "å…¨å±"
-
-msgid "Data"
-msgstr "資料"
-
-msgid "Pharmacy"
-msgstr ""
-
-msgid "Restaurant"
-msgstr ""
-
-msgid "Restaurant. Fast food"
-msgstr ""
-
-msgid "Hotel"
-msgstr ""
-
-msgid "Car parking"
-msgstr ""
-
-msgid "Fuel station"
-msgstr ""
-
-msgid "Bank"
-msgstr ""
-
-msgid "Hospital"
-msgstr ""
-
-msgid "Cinema"
-msgstr ""
-
-msgid "Train station"
-msgstr ""
-
-msgid "School"
-msgstr ""
-
-msgid "Police"
-msgstr ""
-
-msgid "Justice"
-msgstr ""
-
-msgid "Taxi"
-msgstr ""
-
-msgid "Shopping"
-msgstr ""
-
-msgid "Distance from screen center (km)"
-msgstr ""
-
-#, c-format
-msgid "POI %s. %s"
-msgstr ""
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr ""
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr ""
-
-msgid "POI search"
-msgstr ""
-
-msgid "Select a category"
-msgstr ""
-
-msgid "Select a distance to look for (km)"
-msgstr ""
-
-msgid "Select a POI"
-msgstr ""
-
-msgid " "
-msgstr ""
-
-msgid "Category"
-msgstr ""
-
-msgid "Direction"
-msgstr ""
-
-msgid "Distance(m)"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Visit Before"
-msgstr ""
-
-msgid "N"
-msgstr "北"
-
-msgid "NE"
-msgstr "北å东(东北)"
-
-msgid "E"
-msgstr "æ±"
-
-msgid "SE"
-msgstr "å—å东(东å—)"
-
-msgid "S"
-msgstr "å—"
-
-msgid "SW"
-msgstr "å—å西(西å—)"
-
-msgid "W"
-msgstr "西"
-
-msgid "NW"
-msgstr "北å西"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "å¦"
-
-msgid "2D"
-msgstr ""
-
-msgid "3D"
-msgstr ""
-
-msgid "OT"
-msgstr ""
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "路線 %4.0fåƒç±³ %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "路線 0000åƒç±³ 0+00:00 ETA"
-
-msgid "Help"
-msgstr ""
-
-#, c-format
-msgid "Waypoint %s"
-msgstr ""
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "æ–¼ç€è¦½å™¨æª¢è¦–"
-
-msgid "Item type"
-msgstr ""
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "è¡—é“"
-
-msgid "House numbers"
-msgstr "門牌號"
-
-msgid "View Attributes"
-msgstr "檢視屬性"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr ""
-
-msgid "POIs"
-msgstr ""
-
-msgid "View on map"
-msgstr "於地圖檢視"
-
-msgid "Remove search results from the map"
-msgstr ""
-
-msgid "Show results on the map"
-msgstr ""
-
-msgid "Cut Bookmark"
-msgstr "剪下書籤"
-
-msgid "Copy Bookmark"
-msgstr "複製書籤"
-
-msgid "Rename Bookmark"
-msgstr "更改書籤å稱"
-
-msgid "Paste Bookmark"
-msgstr "貼上書籤"
-
-msgid "Delete Bookmark"
-msgstr "刪除書籤"
-
-msgid "Delete waypoint"
-msgstr ""
-
-msgid "Bookmarks"
-msgstr "書籤"
-
-msgid "Bookmarks as waypoints"
-msgstr ""
-
-msgid "Save waypoints"
-msgstr ""
-
-msgid "Replace with waypoints"
-msgstr ""
-
-msgid "Delete Folder"
-msgstr ""
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "添加書籤夾"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "貼上書籤"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "書籤 %s"
-
-#, c-format
-msgid "Download %s"
-msgstr ""
-
-msgid "Map Download"
-msgstr ""
-
-msgid "Active"
-msgstr ""
-
-msgid "Download Enabled"
-msgstr ""
-
-msgid "Download completely"
-msgstr ""
-
-msgid "Show Satellite Status"
-msgstr "顯示衛星狀æ³"
-
-msgid " Elevation "
-msgstr ""
-
-msgid " Azimuth "
-msgstr " æ–¹ä½è§’ "
-
-msgid "Show NMEA Data"
-msgstr "顯示 NMEA 資料"
-
-msgid "car"
-msgstr "汽車"
-
-msgid "bike"
-msgstr "單車"
-
-msgid "pedestrian"
-msgstr "行人"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "當å‰è¨­å®šçµ„åˆï¼š%s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "將設定組åˆæ”¹ç‚ºï¼š%s"
-
-msgid "Set as active"
-msgstr ""
-
-msgid "Show Satellite status"
-msgstr "顯示衛星狀æ³"
-
-msgid "Show NMEA data"
-msgstr "顯示 NMEA 資料"
-
-msgid "Add Bookmark"
-msgstr "添加書籤"
-
-msgid "Rename"
-msgstr "改å"
-
-msgid "About Navit"
-msgstr "關於 Navit"
-
-#. Authors
-msgid "By"
-msgstr ""
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr ""
-
-msgid "members and contributors."
-msgstr ""
-
-msgid "Waypoints"
-msgstr ""
-
-msgid "Enter Coordinates"
-msgstr ""
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr ""
-
-msgid "Enter coordinates, for example:"
-msgstr ""
-
-msgid "Vehicle"
-msgstr "机动车"
-
-msgid "Rules"
-msgstr "è¦å‰‡"
-
-msgid "Lock on road"
-msgstr ""
-
-msgid "Northing"
-msgstr "å‘北"
-
-msgid "Map follows Vehicle"
-msgstr "地圖跟隨車輛å‰é€²æ–¹å‘"
-
-msgid "Plan with Waypoints"
-msgstr ""
-
-msgid "Maps"
-msgstr "地圖"
-
-msgid "Layout"
-msgstr ""
-
-msgid "Height Profile"
-msgstr ""
-
-msgid "please install a map *.heightlines.bin to provide elevationdata"
-msgstr ""
-
-msgid "The route must cross at least 2 heightlines"
-msgstr ""
-
-msgid "Route Description"
-msgstr "路線說明"
-
-msgid "Show Locale"
-msgstr "顯示地å€"
-
-msgid "Former Destinations"
-msgstr "å‰ä¸€ä¸ªç›®çš„地"
-
-msgid "- No former destinations available -"
-msgstr ""
-
-msgid "Message"
-msgstr "訊æ¯"
-
-msgid "Back"
-msgstr "返回"
-
-msgid "Back to map"
-msgstr "返回地圖"
-
-msgid "Main Menu"
-msgstr "主é¸å–®"
-
-msgid "House number"
-msgstr "屋號"
-
-msgid "Next"
-msgstr ""
-
-msgid "Prev"
-msgstr ""
-
-msgid "Return to route!"
-msgstr ""
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr ""
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr ""
-
-msgid "partial match"
-msgstr ""
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr ""
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr ""
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr ""
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr ""
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr ""
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "filenamePath"
-msgstr ""
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-
-msgid "Whole Planet"
-msgstr ""
-
-msgid "Africa"
-msgstr ""
-
-msgid "Canary Islands"
-msgstr ""
-
-msgid "Asia"
-msgstr ""
-
-msgid "Korea"
-msgstr ""
-
-msgid "Taiwan"
-msgstr ""
-
-msgid "UAE+Other"
-msgstr ""
-
-msgid "Oceania"
-msgstr ""
-
-msgid "Tasmania"
-msgstr ""
-
-msgid "Victoria"
-msgstr ""
-
-msgid "New South Wales"
-msgstr ""
-
-msgid "Europe"
-msgstr ""
-
-msgid "Western Europe"
-msgstr ""
-
-msgid "Azores"
-msgstr ""
-
-msgid "BeNeLux"
-msgstr ""
-
-msgid "Alsace"
-msgstr ""
-
-msgid "Aquitaine"
-msgstr ""
-
-msgid "Auvergne"
-msgstr ""
-
-msgid "Basse-Normandie"
-msgstr ""
-
-msgid "Bourgogne"
-msgstr ""
-
-msgid "Bretagne"
-msgstr ""
-
-msgid "Centre"
-msgstr ""
-
-msgid "Champagne-Ardenne"
-msgstr ""
-
-msgid "Corse"
-msgstr ""
-
-msgid "Franche-Comte"
-msgstr ""
-
-msgid "Haute-Normandie"
-msgstr ""
-
-msgid "Ile-de-France"
-msgstr ""
-
-msgid "Languedoc-Roussillon"
-msgstr ""
-
-msgid "Limousin"
-msgstr ""
-
-msgid "Lorraine"
-msgstr ""
-
-msgid "Midi-Pyrenees"
-msgstr ""
-
-msgid "Nord-pas-de-Calais"
-msgstr ""
-
-msgid "Pays-de-la-Loire"
-msgstr ""
-
-msgid "Picardie"
-msgstr ""
-
-msgid "Poitou-Charentes"
-msgstr ""
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr ""
-
-msgid "Rhone-Alpes"
-msgstr ""
-
-msgid "Baden-Wuerttemberg"
-msgstr ""
-
-msgid "Bayern"
-msgstr ""
-
-msgid "Mittelfranken"
-msgstr ""
-
-msgid "Niederbayern"
-msgstr ""
-
-msgid "Oberbayern"
-msgstr ""
-
-msgid "Oberfranken"
-msgstr ""
-
-msgid "Oberpfalz"
-msgstr ""
-
-msgid "Schwaben"
-msgstr ""
-
-msgid "Unterfranken"
-msgstr ""
-
-msgid "Berlin"
-msgstr ""
-
-msgid "Brandenburg"
-msgstr ""
-
-msgid "Bremen"
-msgstr ""
-
-msgid "Hamburg"
-msgstr ""
-
-msgid "Hessen"
-msgstr ""
-
-msgid "Mecklenburg-Vorpommern"
-msgstr ""
-
-msgid "Niedersachsen"
-msgstr ""
-
-msgid "Nordrhein-westfalen"
-msgstr ""
-
-msgid "Rheinland-Pfalz"
-msgstr ""
-
-msgid "Saarland"
-msgstr ""
-
-msgid "Sachsen-Anhalt"
-msgstr ""
-
-msgid "Sachsen"
-msgstr ""
-
-msgid "Schleswig-Holstein"
-msgstr ""
-
-msgid "Thueringen"
-msgstr ""
-
-msgid "Mallorca"
-msgstr ""
-
-msgid "Galicia"
-msgstr ""
-
-msgid "Scandinavia"
-msgstr ""
-
-msgid "England"
-msgstr ""
-
-msgid "Buckinghamshire"
-msgstr ""
-
-msgid "Cambridgeshire"
-msgstr ""
-
-msgid "Cumbria"
-msgstr ""
-
-msgid "East yorkshire with hull"
-msgstr ""
-
-msgid "Essex"
-msgstr ""
-
-msgid "Herefordshire"
-msgstr ""
-
-msgid "Kent"
-msgstr ""
-
-msgid "Lancashire"
-msgstr ""
-
-msgid "Leicestershire"
-msgstr ""
-
-msgid "Norfolk"
-msgstr ""
-
-msgid "Nottinghamshire"
-msgstr ""
-
-msgid "Oxfordshire"
-msgstr ""
-
-msgid "Shropshire"
-msgstr ""
-
-msgid "Somerset"
-msgstr ""
-
-msgid "South yorkshire"
-msgstr ""
-
-msgid "Suffolk"
-msgstr ""
-
-msgid "Surrey"
-msgstr ""
-
-msgid "Wiltshire"
-msgstr ""
-
-msgid "Scotland"
-msgstr ""
-
-msgid "Wales"
-msgstr ""
-
-msgid "Crete"
-msgstr ""
-
-msgid "North America"
-msgstr ""
-
-msgid "Alaska"
-msgstr ""
-
-msgid "Hawaii"
-msgstr ""
-
-msgid "USA"
-msgstr ""
-
-msgid " (except Alaska and Hawaii)"
-msgstr ""
-
-msgid "Midwest"
-msgstr ""
-
-msgid "Michigan"
-msgstr ""
-
-msgid "Ohio"
-msgstr ""
-
-msgid "Northeast"
-msgstr ""
-
-msgid "Massachusetts"
-msgstr ""
-
-msgid "Vermont"
-msgstr ""
-
-msgid "Pacific"
-msgstr ""
-
-msgid "South"
-msgstr ""
-
-msgid "Arkansas"
-msgstr ""
-
-msgid "District of Columbia"
-msgstr ""
-
-msgid "Florida"
-msgstr ""
-
-msgid "Louisiana"
-msgstr ""
-
-msgid "Maryland"
-msgstr ""
-
-msgid "Mississippi"
-msgstr ""
-
-msgid "Oklahoma"
-msgstr ""
-
-msgid "Texas"
-msgstr ""
-
-msgid "Virginia"
-msgstr ""
-
-msgid "West Virginia"
-msgstr ""
-
-msgid "West"
-msgstr ""
-
-msgid "Arizona"
-msgstr ""
-
-msgid "California"
-msgstr ""
-
-msgid "Colorado"
-msgstr ""
-
-msgid "Idaho"
-msgstr ""
-
-msgid "Montana"
-msgstr ""
-
-msgid "New Mexico"
-msgstr ""
-
-msgid "Nevada"
-msgstr ""
-
-msgid "Oregon"
-msgstr ""
-
-msgid "Utah"
-msgstr ""
-
-msgid "Washington State"
-msgstr ""
-
-msgid "South+Middle America"
-msgstr ""
-
-msgid "Guyane Francaise"
-msgstr ""
-
-msgid "downloading"
-msgstr ""
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr ""
-
-msgid "Media selected for map storage is not available"
-msgstr ""
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr ""
-
-msgid "Error downloading map!"
-msgstr ""
-
-msgid "Error writing map!"
-msgstr ""
-
-msgid "Map download aborted!"
-msgstr ""
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr ""
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr ""
-
-msgid "Vehicle Position"
-msgstr "車輛ä½ç½®"
-
-msgid "Main menu"
-msgstr "主é¸å–®"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"顯示\n"
-"地圖"
-
-msgid "Settings"
-msgstr "設定"
-
-msgid "Tools"
-msgstr "工具"
-
-msgid "Route"
-msgstr "è·¯"
-
-msgid "About"
-msgstr "關於"
-
-msgid "Quit"
-msgstr "çµæŸ"
-
-msgid "Actions"
-msgstr "行動"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-
-msgid "Coordinates"
-msgstr ""
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"åœæ­¢\n"
-"導航"
-
-msgid "Display"
-msgstr "显示"
-
-msgid "Fullscreen"
-msgstr "å…¨å±"
-
-msgid "Window Mode"
-msgstr "視窗模å¼"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "說明"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-
-msgid "Satellite Status"
-msgstr ""
-
-msgid "NMEA Data"
-msgstr ""
-
-msgid "car_shortest"
-msgstr ""
-
-msgid "car_avoid_tolls"
-msgstr ""
-
-msgid "car_pedantic"
-msgstr ""
-
-msgid "horse"
-msgstr "馬"
-
-msgid "Truck"
-msgstr ""
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr ""
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr ""
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr ""
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr ""
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr ""
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr ""
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr ""
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr ""
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr ""
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr ""
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr ""
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr ""
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr ""
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr ""
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr ""
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr ""
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr ""
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr ""
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr ""
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr ""
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr ""
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr ""
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr ""
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr ""
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr ""
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr ""
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr ""
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr ""
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr ""
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr ""
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr ""
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr ""
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr ""
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr ""
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr ""
-
-#, c-format
-#~ msgid "then leave the roundabout at the %1$s %2$s"
-#~ msgstr "然後在 %1$s %2$s 離開迴旋處"
diff --git a/po/zh_TW.po.in b/po/zh_TW.po.in
deleted file mode 100644
index bd136f1e8..000000000
--- a/po/zh_TW.po.in
+++ /dev/null
@@ -1,2756 +0,0 @@
-# Chinese (Traditional) translations for navit
-# Copyright (C) 2006-2016 The Navit Team
-# This file is distributed under the same license as the navit package.
-# Many thanks to the contributors of this translation:
-# icefirewu https://launchpad.net/~icefirewu
-
-msgid ""
-msgstr ""
-"Project-Id-Version: navit\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"PO-Revision-Date: 2016-09-12 15:23+0000\n"
-"Last-Translator: icefirewu <icefirewu@gmail.com>\n"
-"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-msgid "Running from source directory\n"
-msgstr "自æºç›®éŒ„執行\n"
-
-#, c-format
-msgid "setting '%s' to '%s'\n"
-msgstr "將 '%s' 設為 '%s'\n"
-
-#. TRANSLATORS: the following counts refer to streets
-msgid "zeroth"
-msgstr "第零æ¢"
-
-msgid "first"
-msgstr "第一æ¢"
-
-msgid "second"
-msgstr "第二æ¢"
-
-msgid "third"
-msgstr "第三æ¢"
-
-msgid "fourth"
-msgstr "第四æ¢"
-
-msgid "fifth"
-msgstr "第五æ¢"
-
-msgid "sixth"
-msgstr "第六æ¢"
-
-#. TRANSLATORS: the following counts refer to roundabout exits
-msgid "zeroth exit"
-msgstr "第零æ¢å‡ºå£"
-
-msgid "first exit"
-msgstr "第一æ¢å‡ºå£"
-
-msgid "second exit"
-msgstr "第二æ¢å‡ºå£"
-
-msgid "third exit"
-msgstr "第三æ¢å‡ºå£"
-
-msgid "fourth exit"
-msgstr "第四æ¢å‡ºå£"
-
-msgid "fifth exit"
-msgstr "第五æ¢å‡ºå£"
-
-msgid "sixth exit"
-msgstr "第六æ¢å‡ºå£"
-
-#, c-format
-msgid "%d feet"
-msgstr "%d 英尺"
-
-#, c-format
-msgid "in %d feet"
-msgstr "在 %d 英尺"
-
-#, c-format
-msgid "%d.%d miles"
-msgstr "%d 點 %d 英里"
-
-#, c-format
-msgid "in %d.%d miles"
-msgstr "在 %d 點 %d 英里"
-
-#, c-format
-msgid "one mile"
-msgid_plural "%d miles"
-msgstr[0] "%d 英里"
-
-#, c-format
-msgid "in one mile"
-msgid_plural "in %d miles"
-msgstr[0] "在 %d 英里"
-
-#, c-format
-msgid "%d meters"
-msgstr "%d 公尺"
-
-#, c-format
-msgid "in %d meters"
-msgstr "在 %d 公尺"
-
-#, c-format
-msgid "%d.%d kilometers"
-msgstr "%d 點 %d 公里"
-
-#, c-format
-msgid "in %d.%d kilometers"
-msgstr "在 %d 點 %d 公里"
-
-#, c-format
-msgid "one kilometer"
-msgid_plural "%d kilometers"
-msgstr[0] "%d 公里"
-
-#, c-format
-msgid "in one kilometer"
-msgid_plural "in %d kilometers"
-msgstr[0] "在 %d 公里"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Systematic Street Name 3: Separator (Space if required), 4: Street Name
-#, c-format
-msgid "%1$sonto the %2$s%3$s%4$s"
-msgstr "%1$s å¾€ %2$s%3$s%4$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name
-#, c-format
-msgid "%1$sonto %2$s"
-msgstr "%1$s å¾€ %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|masculine form"
-msgstr "%1$s å¾€ %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|feminine form"
-msgstr "%1$s å¾€ %2$s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%1$sonto %2$s|neuter form"
-msgstr "%1$s å¾€ %2$s"
-
-#. TRANSLATORS: motorway ramp refers to the slip road for entering a motorway.
-msgid "onto the motorway ramp"
-msgstr "往交æµé“åŒé“"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name
-#, c-format
-msgid "%sinto %s%s%s"
-msgstr "%s å¾€ %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Masculine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|masculine form"
-msgstr "%s å¾€ %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Feminine form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|feminine form"
-msgstr "%s å¾€ %s%s%s"
-
-#. TRANSLATORS: Arguments: 1: Prefix (Space if required) 2: Street Name 3: Separator (Space if required), 4: Systematic Street Name. Neuter form. The stuff after | doesn't have to be included
-#, c-format
-msgid "%sinto %s%s%s|neuter form"
-msgstr "%s å¾€ %s%s%s"
-
-#. TRANSLATORS: gives the name of the next road to turn into (into the E17)
-#, c-format
-msgid "%sinto the %s"
-msgstr "%s å¾€ %s"
-
-msgid "When possible, please turn around"
-msgstr "請盡å¯èƒ½è¿´è½‰"
-
-#. TRANSLATORS: the argument is the destination to follow
-#, c-format
-msgid "towards %s"
-msgstr "æœå‘ %s"
-
-#, c-format
-msgid "Follow the road for the next %s"
-msgstr "沿著路到下一個 %s"
-
-msgid "Enter the roundabout soon"
-msgstr "å³å°‡é€²å…¥åœ“ç’°"
-
-#. TRANSLATORS: %s is the distance to the roundabout
-#, c-format
-msgid "Enter the roundabout %s"
-msgstr "在 %s 進入圓環"
-
-msgid "then enter the roundabout"
-msgstr "然後進入圓環"
-
-#. TRANSLATORS: first arg. is the manieth exit, second arg. is the destination to follow
-#, c-format
-msgid "Leave the roundabout at the %1$s %2$s"
-msgstr "於 %1$s 脫離圓環 %2$s"
-
-msgid "soon"
-msgstr "å³å°‡"
-
-msgid "now"
-msgstr "ç«‹å³"
-
-msgid "then"
-msgstr "然後"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|right"
-msgstr "然後匯入å³æ–¹è»Šé“ %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Right merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|right"
-msgstr "%1$s é  %2$s 行駛"
-
-#. TRANSLATORS: the arg. is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "then merge%1$s|left"
-msgstr "然後并入左線 %1$s 行駛"
-
-#. TRANSLATORS: the first arg. is distance, the second is the phrase 'onto ...'. Left merge, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Merge %1$s%2$s|left"
-msgstr "在 %1$s 併入%2$s 線行駛 |left"
-
-msgid "on your left"
-msgstr "切入å³ç·š"
-
-msgid "on your right"
-msgstr "切入左線"
-
-#. TRANSLATORS: the first arg. is exit ref and/or name, the second is the direction of exit and the third is distance
-#, c-format
-msgid "Take exit %1$s %2$s %3$s"
-msgstr "下 %1$s %2$s %3$s"
-
-#. TRANSLATORS: the first arg. is the direction of exit, the second is distance, the third is destination
-#, c-format
-msgid "Take the exit %1$s %2$s%3$s"
-msgstr "%2$s é  %1$s 下 %3$s"
-
-#. TRANSLATORS: as in "Keep right at interchange 42 Greenmond-West"
-msgid "at interchange"
-msgstr "於交æµé“處"
-
-msgid "at exit"
-msgstr "於出å£è™•"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then continue straight%1$s"
-msgstr "ç„¶å¾Œç¹¼çºŒæœ %1$s ç›´è¡Œ"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Continue straight %1$s%2$s%3$s"
-msgstr "繼續直行 %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep right%1$s"
-msgstr "然後繼續é å³ %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep right %1$s%2$s%3$s"
-msgstr "繼續é å³ %1$s%2$s%3$s"
-
-#. TRANSLATORS: the arg. is where to do the maneuver
-#, c-format
-msgid "then keep left%1$s"
-msgstr "然後繼續é å·¦ %1$s"
-
-#. TRANSLATORS: the first arg. is distance, the second is where to do the maneuver, the third is destination
-#, c-format
-msgid "Keep left %1$s%2$s%3$s"
-msgstr "在 %1$s 繼續é å·¦ 下 %2$s å¾€ %3$s"
-
-#. TRANSLATORS: "right" as in "turn right"
-msgid "right"
-msgstr "å³"
-
-#. TRANSLATORS: "left" as in "turn left"
-msgid "left"
-msgstr "å·¦"
-
-#. TRANSLATORS: as in "turn easily right"
-msgid "easily "
-msgstr "å¾® "
-
-#. TRANSLATORS: as in "turn strongly right"
-msgid "strongly "
-msgstr "急 "
-
-#, c-format
-msgid "then take the %1$s road to the %2$s"
-msgstr "然後進入 %1$s 往 %2$s"
-
-#, c-format
-msgid "Take the %1$s road to the %2$s"
-msgstr "進入 %1$s 往 %2$s"
-
-#, c-format
-msgid "after %i roads"
-msgstr "ç¶“éŽ %i è·¯"
-
-#. TRANSLATORS: the first arg. is strength, the second is direction, the third is distance, the fourth is destination
-#, c-format
-msgid "Turn %1$s%2$s %3$s%4$s"
-msgstr "%3$s å‘ %2$s %1$s 轉 %4$s"
-
-#. TRANSLATORS: Left U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|left"
-msgstr "然後左迴轉"
-
-#. TRANSLATORS: the arg. is distance. Left U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|left"
-msgstr "%1$s 左迴轉"
-
-#. TRANSLATORS: Right U-turn, the stuff after | doesn't have to be included.
-msgid "then make a U-turn|right"
-msgstr "然後å³è¿´è½‰"
-
-#. TRANSLATORS: the arg. is distance. Right U-turn, the stuff after | doesn't have to be included.
-#, c-format
-msgid "Make a U-turn %1$s|right"
-msgstr "%1$s å³è¿´è½‰"
-
-#. An empty placeholder that we can use in the future for
-#. * some motorway commands that are now suppressed but we
-#. * can in some cases make it say here :
-#. * 'follow destination blabla' without any further driving instructions,
-#. * in cases where relevant destination info is available.
-#. * Even if there is no driving command to be announced, in some cases
-#. * there is an overhead roadsign in preparation of an upcoming road-split,
-#. * and then we can give useful info to the driver.
-#. *
-#. * UNTESTED !
-#. *
-#.
-msgid "follow"
-msgstr "沿著"
-
-msgid "then you have reached your destination."
-msgstr "然後你將抵é”目的地"
-
-#. TRANSLATORS: the arg. is distance
-#, c-format
-msgid "You have reached your destination %s"
-msgstr "%s 你將抵é”目的地"
-
-#. TRANSLATORS: Exit as a noun, as in "Exit 43 Greenmound-East"
-msgid "Interchange"
-msgstr "交æµé“"
-
-msgid "Exit"
-msgstr "出å£"
-
-#. Android resource: @strings/position_popup_title
-msgid "Position"
-msgstr "ä½ç½®"
-
-msgid "Command"
-msgstr "指令"
-
-msgid "Length"
-msgstr "è·é›¢"
-
-msgid "km"
-msgstr "公里"
-
-msgid "m"
-msgstr "公尺"
-
-msgid "Time"
-msgstr "時間"
-
-msgid "Destination Length"
-msgstr "抵é”è·é›¢"
-
-msgid "Destination Time"
-msgstr "抵é”時間"
-
-msgid "Roadbook"
-msgstr "Roadbook"
-
-#, c-format
-msgid "Waypoint %d"
-msgstr "航點 %d"
-
-msgid "Visit before..."
-msgstr "歷經"
-
-msgid "Set as position"
-msgstr "設為起點"
-
-msgid "Set as destination"
-msgstr "設為目的地"
-
-msgid "Add as bookmark"
-msgstr "增為書籤"
-
-#, c-format
-msgid "Point 0x%x 0x%x"
-msgstr "點 0x%x 0x%x"
-
-#, c-format
-msgid "Screen coord : %d %d"
-msgstr "螢幕座標 : %d %d"
-
-#. 020
-msgid "Andorra"
-msgstr "安é“爾"
-
-#. 784
-msgid "United Arab Emirates"
-msgstr "阿拉伯è¯åˆå¤§å…¬åœ‹"
-
-#. 004
-msgid "Afghanistan"
-msgstr "阿富汗"
-
-#. 028
-msgid "Antigua and Barbuda"
-msgstr "安æ瓜和巴布é”"
-
-#. 660
-msgid "Anguilla"
-msgstr "英屬安圭拉"
-
-#. 008
-msgid "Albania"
-msgstr "阿爾巴尼亞"
-
-#. 051
-msgid "Armenia"
-msgstr "亞美尼亞"
-
-#. 530
-msgid "Netherlands Antilles"
-msgstr "è·å±¬å®‰åœ°åˆ—斯群島"
-
-#. 024
-msgid "Angola"
-msgstr "安哥拉"
-
-#. 010
-msgid "Antarctica"
-msgstr "å—極洲"
-
-#. 032
-msgid "Argentina"
-msgstr "阿根廷"
-
-#. 016
-msgid "American Samoa"
-msgstr "美屬薩摩亞"
-
-#. 040
-msgid "Austria"
-msgstr "奧地利"
-
-#. 036
-msgid "Australia"
-msgstr "澳洲"
-
-#. 533
-msgid "Aruba"
-msgstr "阿é²å·´"
-
-#. 248
-msgid "Aland Islands"
-msgstr "奧蘭群島"
-
-#. 031
-msgid "Azerbaijan"
-msgstr "亞塞拜然"
-
-#. 070
-msgid "Bosnia and Herzegovina"
-msgstr "波士尼亞與赫塞哥維ç´"
-
-#. 052
-msgid "Barbados"
-msgstr "å·´è²å¤š"
-
-#. 050
-msgid "Bangladesh"
-msgstr "孟加拉"
-
-#. 056
-msgid "Belgium"
-msgstr "比利時"
-
-#. 854
-msgid "Burkina Faso"
-msgstr "布å‰ç´æ³•ç´¢"
-
-#. 100
-msgid "Bulgaria"
-msgstr "ä¿åŠ åˆ©äºž"
-
-#. 048
-msgid "Bahrain"
-msgstr "å·´æž—"
-
-#. 108
-msgid "Burundi"
-msgstr "蒲隆地"
-
-#. 204
-msgid "Benin"
-msgstr "è²å—"
-
-#. 652
-msgid "Saint Barthelemy"
-msgstr "è–巴托洛繆"
-
-#. 060
-msgid "Bermuda"
-msgstr "百慕é”群島"
-
-#. 096
-msgid "Brunei Darussalam"
-msgstr "汶èŠ"
-
-#. 068
-msgid "Bolivia"
-msgstr "玻利維亞"
-
-#. 535
-msgid "Bonaire, Sint Eustatius and Saba"
-msgstr "è·è˜­åŠ å‹’比å€"
-
-#. 076
-msgid "Brazil"
-msgstr "巴西"
-
-#. 044
-msgid "Bahamas"
-msgstr "巴哈馬群島"
-
-#. 064
-msgid "Bhutan"
-msgstr "ä¸ä¸¹"
-
-#. 074
-msgid "Bouvet Island"
-msgstr "布å¨å³¶"
-
-#. 072
-msgid "Botswana"
-msgstr "波札那"
-
-#. 112
-msgid "Belarus"
-msgstr "白俄羅斯"
-
-#. 084
-msgid "Belize"
-msgstr "è²é‡Œæ–¯"
-
-#. 124
-msgid "Canada"
-msgstr "加拿大"
-
-#. 166
-msgid "Cocos (Keeling) Islands"
-msgstr "科科斯 (基林) 群島"
-
-#. 180
-msgid "Congo, Democratic Republic of the"
-msgstr "剛果民主共和國"
-
-#. 140
-msgid "Central African Republic"
-msgstr "中éžå…±å’Œåœ‹"
-
-#. 178
-msgid "Congo"
-msgstr "剛果共和國"
-
-#. 756
-msgid "Switzerland"
-msgstr "瑞士"
-
-#. 384
-msgid "Cote d'Ivoire"
-msgstr "象牙海岸"
-
-#. 184
-msgid "Cook Islands"
-msgstr "庫克群島"
-
-#. 152
-msgid "Chile"
-msgstr "智利"
-
-#. 120
-msgid "Cameroon"
-msgstr "喀麥隆"
-
-#. 156
-msgid "China"
-msgstr "中國"
-
-#. 170
-msgid "Colombia"
-msgstr "哥倫比亞"
-
-#. 188
-msgid "Costa Rica"
-msgstr "哥斯大黎加"
-
-#. 192
-msgid "Cuba"
-msgstr "å¤å·´"
-
-#. 132
-msgid "Cape Verde"
-msgstr "維德角"
-
-#. 531
-msgid "Curacao"
-msgstr "å¤æ‹‰ç´¢"
-
-#. 162
-msgid "Christmas Island"
-msgstr "è–誕島"
-
-#. 196
-msgid "Cyprus"
-msgstr "賽普勒斯"
-
-#. 203
-msgid "Czech Republic"
-msgstr "æ·å…‹"
-
-#. 276
-msgid "Germany"
-msgstr "德國"
-
-#. 262
-msgid "Djibouti"
-msgstr "å‰å¸ƒåœ°"
-
-#. 208
-msgid "Denmark"
-msgstr "丹麥"
-
-#. 212
-msgid "Dominica"
-msgstr "多米尼克"
-
-#. 214
-msgid "Dominican Republic"
-msgstr "多明尼加"
-
-#. 012
-msgid "Algeria"
-msgstr "阿爾åŠåˆ©äºž"
-
-#. 218
-msgid "Ecuador"
-msgstr "厄瓜多"
-
-#. 233
-msgid "Estonia"
-msgstr "愛沙尼亞"
-
-#. 818
-msgid "Egypt"
-msgstr "埃åŠ"
-
-#. 732
-msgid "Western Sahara"
-msgstr "西撒哈拉"
-
-#. 232
-msgid "Eritrea"
-msgstr "厄利垂亞"
-
-#. 724
-msgid "Spain"
-msgstr "西ç­ç‰™"
-
-#. 231
-msgid "Ethiopia"
-msgstr "衣索披亞"
-
-#. 246
-msgid "Finland"
-msgstr "芬蘭"
-
-#. 242
-msgid "Fiji"
-msgstr "æ–æ¿Ÿ"
-
-#. 238
-msgid "Falkland Islands (Malvinas)"
-msgstr "ç¦å…‹è˜­ç¾¤å³¶ (馬爾維ç´æ–¯)"
-
-#. 583
-msgid "Micronesia, Federated States of"
-msgstr "密克羅尼西亞è¯é‚¦"
-
-#. 234
-msgid "Faroe Islands"
-msgstr "法羅群島"
-
-#. 250
-msgid "France"
-msgstr "法國"
-
-#. 266
-msgid "Gabon"
-msgstr "加彭"
-
-#. 826
-msgid "United Kingdom"
-msgstr "英國"
-
-#. 308
-msgid "Grenada"
-msgstr "格瑞那é”"
-
-#. 268
-msgid "Georgia"
-msgstr "喬治亞州"
-
-#. 254
-msgid "French Guiana"
-msgstr "法屬圭亞那"
-
-#. 831
-msgid "Guernsey"
-msgstr "耿西"
-
-#. 288
-msgid "Ghana"
-msgstr "迦ç´"
-
-#. 292
-msgid "Gibraltar"
-msgstr "直布羅陀"
-
-#. 304
-msgid "Greenland"
-msgstr "格陵蘭"
-
-#. 270
-msgid "Gambia"
-msgstr "甘比亞"
-
-#. 324
-msgid "Guinea"
-msgstr "幾內亞"
-
-#. 312
-msgid "Guadeloupe"
-msgstr "瓜德羅普"
-
-#. 226
-msgid "Equatorial Guinea"
-msgstr "赤é“幾內亞"
-
-#. 300
-msgid "Greece"
-msgstr "希臘"
-
-#. 239
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "å—喬治亞åŠå—æ¡‘å¨å¥‡ç¾¤å³¶"
-
-#. 320
-msgid "Guatemala"
-msgstr "瓜地馬拉"
-
-#. 316
-msgid "Guam"
-msgstr "關島"
-
-#. 624
-msgid "Guinea-Bissau"
-msgstr "幾內亞比索"
-
-#. 328
-msgid "Guyana"
-msgstr "蓋亞那"
-
-#. 344
-msgid "Hong Kong"
-msgstr "香港"
-
-#. 334
-msgid "Heard Island and McDonald Islands"
-msgstr "赫德åŠéº¥ç•¶å‹žç¾¤å³¶"
-
-#. 340
-msgid "Honduras"
-msgstr "å®éƒ½æ‹‰æ–¯"
-
-#. 191
-msgid "Croatia"
-msgstr "克羅埃西亞"
-
-#. 332
-msgid "Haiti"
-msgstr "海地"
-
-#. 348
-msgid "Hungary"
-msgstr "匈牙利"
-
-#. 360
-msgid "Indonesia"
-msgstr "å°å°¼"
-
-#. 372
-msgid "Ireland"
-msgstr "愛爾蘭"
-
-#. 376
-msgid "Israel"
-msgstr "以色列"
-
-#. 833
-msgid "Isle of Man"
-msgstr "英屬曼島"
-
-#. 356
-msgid "India"
-msgstr "å°åº¦"
-
-#. 086
-msgid "British Indian Ocean Territory"
-msgstr "英屬å°åº¦æ´‹åœ°å€"
-
-#. 368
-msgid "Iraq"
-msgstr "伊拉克"
-
-#. 364
-msgid "Iran, Islamic Republic of"
-msgstr "伊朗"
-
-#. 352
-msgid "Iceland"
-msgstr "冰島"
-
-#. 380
-msgid "Italy"
-msgstr "義大利"
-
-#. 832
-msgid "Jersey"
-msgstr "澤西島"
-
-#. 388
-msgid "Jamaica"
-msgstr "牙買加"
-
-#. 400
-msgid "Jordan"
-msgstr "ç´„æ—¦"
-
-#. 392
-msgid "Japan"
-msgstr "日本"
-
-#. 404
-msgid "Kenya"
-msgstr "肯亞"
-
-#. 417
-msgid "Kyrgyzstan"
-msgstr "å‰çˆ¾å‰æ–¯"
-
-#. 116
-msgid "Cambodia"
-msgstr "柬埔寨"
-
-#. 296
-msgid "Kiribati"
-msgstr "å‰é‡Œå·´æ–¯"
-
-#. 174
-msgid "Comoros"
-msgstr "葛摩"
-
-#. 659
-msgid "Saint Kitts and Nevis"
-msgstr "è–克里斯多ç¦èˆ‡å°¼ç¶­æ–¯è¯é‚¦"
-
-#. 408
-msgid "Korea, Democratic People's Republic of"
-msgstr "北韓"
-
-#. 410
-msgid "Korea, Republic of"
-msgstr "å—韓"
-
-#. 414
-msgid "Kuwait"
-msgstr "科å¨ç‰¹"
-
-#. 136
-msgid "Cayman Islands"
-msgstr "開曼群島"
-
-#. 398
-msgid "Kazakhstan"
-msgstr "哈薩克"
-
-#. 418
-msgid "Lao People's Democratic Republic"
-msgstr "寮國"
-
-#. 422
-msgid "Lebanon"
-msgstr "黎巴嫩"
-
-#. 662
-msgid "Saint Lucia"
-msgstr "è–露西亞"
-
-#. 438
-msgid "Liechtenstein"
-msgstr "列支敦斯登"
-
-#. 144
-msgid "Sri Lanka"
-msgstr "斯里蘭å¡"
-
-#. 430
-msgid "Liberia"
-msgstr "賴比瑞亞"
-
-#. 426
-msgid "Lesotho"
-msgstr "賴索托"
-
-#. 440
-msgid "Lithuania"
-msgstr "立陶宛"
-
-#. 442
-msgid "Luxembourg"
-msgstr "盧森堡"
-
-#. 428
-msgid "Latvia"
-msgstr "拉脫維亞"
-
-#. 434
-msgid "Libya"
-msgstr "利比亞"
-
-#. 504
-msgid "Morocco"
-msgstr "摩洛哥"
-
-#. 492
-msgid "Monaco"
-msgstr "æ‘©ç´å“¥"
-
-#. 498
-msgid "Moldova, Republic of"
-msgstr "摩爾多瓦"
-
-#. 499
-msgid "Montenegro"
-msgstr "蒙特內哥羅"
-
-#. 663
-msgid "Saint Martin (French part)"
-msgstr "法屬è–馬ä¸"
-
-#. 450
-msgid "Madagascar"
-msgstr "馬é”加斯加"
-
-#. 584
-msgid "Marshall Islands"
-msgstr "馬紹爾群島"
-
-#. 807
-msgid "Macedonia, the former Yugoslav Republic of"
-msgstr "馬其頓"
-
-#. 466
-msgid "Mali"
-msgstr "馬利"
-
-#. 104
-msgid "Myanmar"
-msgstr "緬甸"
-
-#. 496
-msgid "Mongolia"
-msgstr "è’™å¤"
-
-#. 446
-msgid "Macao"
-msgstr "澳門"
-
-#. 580
-msgid "Northern Mariana Islands"
-msgstr "北馬里安ç´ç¾¤å³¶"
-
-#. 474
-msgid "Martinique"
-msgstr "法屬馬ä¸å°¼å…‹"
-
-#. 478
-msgid "Mauritania"
-msgstr "茅利塔尼亞"
-
-#. 500
-msgid "Montserrat"
-msgstr "蒙特塞拉特"
-
-#. 470
-msgid "Malta"
-msgstr "馬爾他"
-
-#. 480
-msgid "Mauritius"
-msgstr "模里西斯"
-
-#. 462
-msgid "Maldives"
-msgstr "馬爾地夫"
-
-#. 454
-msgid "Malawi"
-msgstr "馬拉å¨"
-
-#. 484
-msgid "Mexico"
-msgstr "墨西哥"
-
-#. 458
-msgid "Malaysia"
-msgstr "馬來西亞"
-
-#. 508
-msgid "Mozambique"
-msgstr "莫三比克"
-
-#. 516
-msgid "Namibia"
-msgstr "ç´ç±³æ¯”亞"
-
-#. 540
-msgid "New Caledonia"
-msgstr "新喀里多尼亞"
-
-#. 562
-msgid "Niger"
-msgstr "尼日"
-
-#. 574
-msgid "Norfolk Island"
-msgstr "諾ç¦å…‹å³¶"
-
-#. 566
-msgid "Nigeria"
-msgstr "奈åŠåˆ©äºž"
-
-#. 558
-msgid "Nicaragua"
-msgstr "尼加拉瓜"
-
-#. 528
-msgid "Netherlands"
-msgstr "è·è˜­"
-
-#. 578
-msgid "Norway"
-msgstr "挪å¨"
-
-#. 524
-msgid "Nepal"
-msgstr "尼泊爾"
-
-#. 520
-msgid "Nauru"
-msgstr "諾魯"
-
-#. 570
-msgid "Niue"
-msgstr "ç´åŸƒ"
-
-#. 554
-msgid "New Zealand"
-msgstr "ç´è¥¿è˜­"
-
-#. 512
-msgid "Oman"
-msgstr "阿曼"
-
-#. 591
-msgid "Panama"
-msgstr "巴拿馬"
-
-#. 604
-msgid "Peru"
-msgstr "秘魯"
-
-#. 258
-msgid "French Polynesia"
-msgstr "法屬玻里尼西亞"
-
-#. 598
-msgid "Papua New Guinea"
-msgstr "巴布亞ç´å¹¾å…§äºž"
-
-#. 608
-msgid "Philippines"
-msgstr "è²å¾‹è³“"
-
-#. 586
-msgid "Pakistan"
-msgstr "巴基斯å¦"
-
-#. 616
-msgid "Poland"
-msgstr "波蘭"
-
-#. 666
-msgid "Saint Pierre and Miquelon"
-msgstr "è–皮耶與密克隆群島"
-
-#. 612
-msgid "Pitcairn"
-msgstr "皮特肯群島"
-
-#. 630
-msgid "Puerto Rico"
-msgstr "波多黎å„"
-
-#. 275
-msgid "Palestinian Territory, Occupied"
-msgstr "å·´å‹’æ–¯å¦"
-
-#. 620
-msgid "Portugal"
-msgstr "è‘¡è„牙"
-
-#. 585
-msgid "Palau"
-msgstr "帛ç‰"
-
-#. 600
-msgid "Paraguay"
-msgstr "巴拉圭"
-
-#. 634
-msgid "Qatar"
-msgstr "å¡é”"
-
-#. 638
-msgid "Reunion"
-msgstr "留尼旺"
-
-#. 642
-msgid "Romania"
-msgstr "羅馬尼亞"
-
-#. 688
-msgid "Serbia"
-msgstr "塞爾維亞"
-
-#. 643
-msgid "Russian Federation"
-msgstr "ä¿„ç¾…æ–¯"
-
-#. 646
-msgid "Rwanda"
-msgstr "盧安é”"
-
-#. 682
-msgid "Saudi Arabia"
-msgstr "æ²™çƒåœ°é˜¿æ‹‰ä¼¯"
-
-#. 090
-msgid "Solomon Islands"
-msgstr "索羅門群島"
-
-#. 690
-msgid "Seychelles"
-msgstr "塞席爾"
-
-#. 736
-msgid "Sudan"
-msgstr "蘇丹"
-
-#. 752
-msgid "Sweden"
-msgstr "ç‘žå…¸"
-
-#. 702
-msgid "Singapore"
-msgstr "新加å¡"
-
-#. 654
-msgid "Saint Helena"
-msgstr "è–赫勒那島"
-
-#. 705
-msgid "Slovenia"
-msgstr "斯洛維尼亞"
-
-#. 744
-msgid "Svalbard and Jan Mayen"
-msgstr "斯瓦巴和æšé¦¬å»¶"
-
-#. 703
-msgid "Slovakia"
-msgstr "斯洛ä¼å…‹"
-
-#. 694
-msgid "Sierra Leone"
-msgstr "ç…å­å±±"
-
-#. 674
-msgid "San Marino"
-msgstr "è–馬利諾"
-
-#. 686
-msgid "Senegal"
-msgstr "塞內加爾"
-
-#. 706
-msgid "Somalia"
-msgstr "索馬利亞"
-
-#. 740
-msgid "Suriname"
-msgstr "蘇利å—"
-
-#. 728
-msgid "South Sudan"
-msgstr "å—蘇丹"
-
-#. 678
-msgid "Sao Tome and Principe"
-msgstr "è–多美普林西比"
-
-#. 222
-msgid "El Salvador"
-msgstr "薩爾瓦多"
-
-#. 534
-msgid "Sint Maarten (Dutch part)"
-msgstr "è·å±¬è–馬ä¸"
-
-#. 760
-msgid "Syrian Arab Republic"
-msgstr "敘利亞"
-
-#. 748
-msgid "Swaziland"
-msgstr "å²ç“¦æ¿Ÿè˜­"
-
-#. 796
-msgid "Turks and Caicos Islands"
-msgstr "土克凱å¯ç¾¤å³¶"
-
-#. 148
-msgid "Chad"
-msgstr "查德"
-
-#. 260
-msgid "French Southern Territories"
-msgstr "法屬å—部和å—極領地"
-
-#. 768
-msgid "Togo"
-msgstr "多哥"
-
-#. 764
-msgid "Thailand"
-msgstr "泰國"
-
-#. 762
-msgid "Tajikistan"
-msgstr "å¡”å‰å…‹"
-
-#. 772
-msgid "Tokelau"
-msgstr "托克勞"
-
-#. 626
-msgid "Timor-Leste"
-msgstr "æ±å¸æ±¶"
-
-#. 795
-msgid "Turkmenistan"
-msgstr "土庫曼"
-
-#. 788
-msgid "Tunisia"
-msgstr "çªå°¼è¥¿äºž"
-
-#. 776
-msgid "Tonga"
-msgstr "æ±åŠ "
-
-#. 792
-msgid "Turkey"
-msgstr "土耳其"
-
-#. 780
-msgid "Trinidad and Tobago"
-msgstr "åƒé‡Œé”åŠæ‰˜å·´å“¥"
-
-#. 798
-msgid "Tuvalu"
-msgstr "å瓦魯"
-
-#. 158
-msgid "Taiwan, Province of China"
-msgstr "臺ç£çœ"
-
-#. 834
-msgid "Tanzania, United Republic of"
-msgstr "å¦å°šå°¼äºž"
-
-#. 804
-msgid "Ukraine"
-msgstr "çƒå…‹è˜­"
-
-#. 800
-msgid "Uganda"
-msgstr "çƒå¹²é”"
-
-#. 581
-msgid "United States Minor Outlying Islands"
-msgstr "美國本土以外å°å³¶å¶¼"
-
-#. 840
-msgid "United States"
-msgstr "美國"
-
-#. 858
-msgid "Uruguay"
-msgstr "çƒæ‹‰åœ­"
-
-#. 860
-msgid "Uzbekistan"
-msgstr "çƒèŒ²åˆ¥å…‹"
-
-#. 336
-msgid "Holy See (Vatican City State)"
-msgstr "梵蒂岡"
-
-#. 670
-msgid "Saint Vincent and the Grenadines"
-msgstr "è–文森åŠæ ¼ç‘žé‚£ä¸"
-
-#. 862
-msgid "Venezuela"
-msgstr "委內瑞拉"
-
-#. 092
-msgid "Virgin Islands, British"
-msgstr "英屬維京群島"
-
-#. 850
-msgid "Virgin Islands, U.S."
-msgstr "美屬維京群島"
-
-#. 704
-msgid "Viet Nam"
-msgstr "越å—"
-
-#. 548
-msgid "Vanuatu"
-msgstr "è¬é‚£æœ"
-
-#. 876
-msgid "Wallis and Futuna"
-msgstr "瓦利斯和富圖ç´ç¾¤å³¶"
-
-#. 882
-msgid "Samoa"
-msgstr "薩摩亞"
-
-#. 887
-msgid "Yemen"
-msgstr "葉門"
-
-#. 175
-msgid "Mayotte"
-msgstr "馬約特"
-
-#. 710
-msgid "South Africa"
-msgstr "å—éž"
-
-#. 894
-msgid "Zambia"
-msgstr "尚比亞"
-
-#. 716
-msgid "Zimbabwe"
-msgstr "辛巴å¨"
-
-msgid "* Unknown, add is_in tags to those cities"
-msgstr "* 未知, 於這些城市新增 is_in 標籤"
-
-msgid ""
-"navit usage:\n"
-"navit [options] [configfile]\n"
-"\t-c <file>: use <file> as config file, instead of using the default file.\n"
-"\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, "
-"2=info, 3=debug).\n"
-"\tSettings from config file will still take effect where they set a higher "
-"level.\n"
-"\t-h: print this usage info and exit.\n"
-"\t-v: print the version and exit.\n"
-msgstr ""
-"navit 用法:\n"
-"navit [é¸é …] [設定檔]\n"
-"\t-c <檔å>: å–代é è¨­æª”, 使用 <檔å> 為設定檔.\n"
-"\t-d <n>: 全域除錯輸出等級設為 <n> (0=錯誤, 1=警告, 2=訊æ¯, 3=除錯).\n"
-"\t設定檔內之設定若等級較高則以為準.\n"
-"\t-h: 顯示用法資訊後åœæ­¢.\n"
-"\t-v: 顯示版本資訊後åœæ­¢.\n"
-
-#. We have not found an existing config file from all possibilities
-msgid "No config file navit.xml, navit.xml.local found\n"
-msgstr "設定檔 navit.xml, navit.xml.local 未發ç¾\n"
-
-#, c-format
-msgid "Error parsing config file '%s': %s\n"
-msgstr "設定檔 '%s' 解讀錯誤 : %s\n"
-
-#, c-format
-msgid "Using config file '%s'\n"
-msgstr "採用設定檔 '%s'\n"
-
-#, c-format
-msgid "Error: No configuration found in config file '%s'\n"
-msgstr "錯誤: 設定檔 '%s' 內無設定\n"
-
-msgid ""
-"Internal initialization failed, exiting. Check previous error messages.\n"
-msgstr "通用åˆå§‹åŒ–失敗, 正在脫出. 檢查之å‰çš„錯誤訊æ¯.\n"
-
-msgid "unknown street"
-msgstr "未知街é“"
-
-#. Safe cast: attr_generic_set_attr does not modify its parameter.
-msgid "Unnamed vehicle"
-msgstr "ç„¡å車輛"
-
-msgid "Failed to write bookmarks file"
-msgstr "寫入書籤檔失敗"
-
-#. Strings from navit_shipped.xml
-msgid "Map Point"
-msgstr "地圖點"
-
-msgid "Car"
-msgstr "汽車"
-
-msgid "Iso2"
-msgstr "Iso2"
-
-msgid "Iso3"
-msgstr "Iso3"
-
-msgid "Country"
-msgstr "國家/地å€"
-
-msgid "Postal"
-msgstr "郵éžå€è™Ÿ"
-
-msgid "Town"
-msgstr "鄉/鎮"
-
-msgid "District"
-msgstr "å€"
-
-msgid "Street"
-msgstr "è·¯/è¡—"
-
-msgid "Number"
-msgstr "門牌號碼"
-
-msgid "Enter Destination"
-msgstr "輸入目的地"
-
-msgid "Zip Code"
-msgstr "郵éžå€è™Ÿ"
-
-msgid "City"
-msgstr "縣市"
-
-msgid "District/Township"
-msgstr "市å€/鄉鎮"
-
-msgid "Map"
-msgstr "地圖"
-
-msgid "Bookmark"
-msgstr "書籤"
-
-msgid "Destination"
-msgstr "目的地"
-
-#. TRANSLATORS: These texts are for menu items in GTK GUI. The _ indicates the mnemonic key (=underlined character) for this menu item. Please place the _ before a suitable character in the translation (or omit it if no mnemonic key is desired).
-msgid "_Display"
-msgstr "_顯示"
-
-msgid "_Route"
-msgstr "_路徑"
-
-msgid "_Former Destinations"
-msgstr "_歷來目的地"
-
-msgid "_Bookmarks"
-msgstr "_書籤"
-
-msgid "_Map"
-msgstr "_圖資"
-
-msgid "_Layout"
-msgstr "_ç•«é¢é…ç½®"
-
-msgid "_Projection"
-msgstr "_è¦åŠƒ"
-
-msgid "_Vehicle"
-msgstr "_車輛"
-
-msgid "Zoom_Out"
-msgstr "拉é "
-
-msgid "Decrease zoom level"
-msgstr "é™ä½Žç¸®æ”¾ç­‰ç´š"
-
-msgid "Zoom_In"
-msgstr "拉近"
-
-msgid "Increase zoom level"
-msgstr "æ高縮放等級"
-
-msgid "_Recalculate"
-msgstr "_é‡æ–°è¨ˆç®—"
-
-msgid "Redraw map"
-msgstr "地圖é‡ç¹ª"
-
-msgid "_Info"
-msgstr "_資訊"
-
-msgid "Set _destination"
-msgstr "設定_目的地"
-
-msgid "Opens address search dialog"
-msgstr "開啟地å€æœå°‹ä»‹é¢"
-
-msgid "_POI search"
-msgstr "_趣點æœå°‹"
-
-msgid "Opens POI search dialog"
-msgstr "開啟趣點æœå°‹ä»‹é¢"
-
-msgid "_Stop Navigation"
-msgstr "_åœæ­¢å°Žèˆª"
-
-msgid "Test"
-msgstr "測試"
-
-msgid "_Quit"
-msgstr "_退出"
-
-msgid "Quit the application"
-msgstr "çµæŸæœ¬ç¨‹å¼"
-
-msgid "Show position _cursor"
-msgstr "_顯示游標"
-
-msgid "_Lock on Road"
-msgstr "_鎖定é“è·¯"
-
-msgid "_Keep orientation to the North"
-msgstr "_ä¿æŒåœ°åœ–æœåŒ—"
-
-msgid "Switches map orientation to the north or the vehicle"
-msgstr "切æ›åœ°åœ–固定æœåŒ—或隨車轉"
-
-msgid "_Roadbook"
-msgstr "_Roadbook"
-
-msgid "Show/hide route description"
-msgstr "顯示/éš±è— è·¯å¾‘æ•˜è¿°"
-
-msgid "_Autozoom"
-msgstr "_自動縮放"
-
-msgid "Enable/disable automatic zoom level changing"
-msgstr "啟用/åœç”¨ 自動縮放"
-
-msgid "_Fullscreen"
-msgstr "_全螢幕"
-
-msgid "Data"
-msgstr "數據"
-
-msgid "Pharmacy"
-msgstr "藥局"
-
-msgid "Restaurant"
-msgstr "é¤å»³"
-
-msgid "Restaurant. Fast food"
-msgstr "速食店"
-
-msgid "Hotel"
-msgstr "旅館"
-
-msgid "Car parking"
-msgstr "åœè»Šå ´"
-
-msgid "Fuel station"
-msgstr "加油站"
-
-msgid "Bank"
-msgstr "銀行"
-
-msgid "Hospital"
-msgstr "醫院"
-
-msgid "Cinema"
-msgstr "電影院"
-
-msgid "Train station"
-msgstr "ç«è»Šç«™"
-
-msgid "School"
-msgstr "學校"
-
-msgid "Police"
-msgstr "警局"
-
-msgid "Justice"
-msgstr "法院"
-
-msgid "Taxi"
-msgstr "計程車"
-
-msgid "Shopping"
-msgstr "購物處"
-
-msgid "Distance from screen center (km)"
-msgstr "è·èž¢å¹•ä¸­å¿ƒçš„è·é›¢ (公里)"
-
-#, c-format
-msgid "POI %s. %s"
-msgstr "趣點 %s. %s"
-
-#, c-format
-msgid "Set destination to %ld, %ld \n"
-msgstr "將 %ld, %ld 設為目的地 \n"
-
-#, c-format
-msgid "Set map to %ld, %ld \n"
-msgstr "將 %ld, %ld 設為地圖 \n"
-
-#, c-format
-msgid "Set next visit to %ld, %ld \n"
-msgstr "è¨­å®šæŽ¥ä¸‹ä¾†ç¶“éŽ %ld, %ld \n"
-
-msgid "POI search"
-msgstr "趣點æœå°‹"
-
-msgid "Select a category"
-msgstr "é¸å–類別"
-
-msgid "Select a distance to look for (km)"
-msgstr "é¸æ“‡æœå°‹ç¯„åœ (公里)"
-
-msgid "Select a POI"
-msgstr "擇一趣點"
-
-msgid " "
-msgstr " "
-
-msgid "Category"
-msgstr "類別"
-
-msgid "Direction"
-msgstr "æ–¹å‘"
-
-msgid "Distance(m)"
-msgstr "è·é›¢(公尺)"
-
-msgid "Name"
-msgstr "å稱"
-
-msgid "Visit Before"
-msgstr "歷經"
-
-msgid "N"
-msgstr "N"
-
-msgid "NE"
-msgstr "NE"
-
-msgid "E"
-msgstr "E"
-
-msgid "SE"
-msgstr "SE"
-
-msgid "S"
-msgstr "S"
-
-msgid "SW"
-msgstr "SW"
-
-msgid "W"
-msgstr "W"
-
-msgid "NW"
-msgstr "NW"
-
-#. Android resource: @strings/no
-msgid "No"
-msgstr "å¦"
-
-msgid "2D"
-msgstr "2D"
-
-msgid "3D"
-msgstr "3D"
-
-msgid "OT"
-msgstr "OT"
-
-#, c-format
-msgid "Route %4.0fkm %02d:%02d ETA"
-msgstr "路徑 %4.0fkm %02d:%02d ETA"
-
-msgid "Route 0000km 0+00:00 ETA"
-msgstr "路徑 0000公里 0+00:00 ETA"
-
-msgid "Help"
-msgstr "幫助"
-
-#, c-format
-msgid "Waypoint %s"
-msgstr "航點 %s"
-
-msgid "Select waypoint to insert the new one before"
-msgstr ""
-
-msgid "View in Browser"
-msgstr "列表顯示"
-
-msgid "Item type"
-msgstr "物件類型"
-
-#. Android resource: @strings/address_search_streets
-msgid "Streets"
-msgstr "è¡—é“"
-
-msgid "House numbers"
-msgstr "門牌號碼"
-
-msgid "View Attributes"
-msgstr "顯示屬性"
-
-msgid "Set as position (and deactivate vehicle)"
-msgstr "設為起點"
-
-msgid "POIs"
-msgstr "趣點"
-
-msgid "View on map"
-msgstr "於地圖上顯示"
-
-msgid "Remove search results from the map"
-msgstr "於地圖上移除æœå°‹çµæžœ"
-
-msgid "Show results on the map"
-msgstr "於地圖上顯示çµæžœ"
-
-msgid "Cut Bookmark"
-msgstr "剪下書籤"
-
-msgid "Copy Bookmark"
-msgstr "複製書籤"
-
-msgid "Rename Bookmark"
-msgstr "書籤改å"
-
-msgid "Paste Bookmark"
-msgstr "貼上書籤"
-
-msgid "Delete Bookmark"
-msgstr "刪除書籤"
-
-msgid "Delete waypoint"
-msgstr "刪除航點"
-
-msgid "Bookmarks"
-msgstr "書籤"
-
-msgid "Bookmarks as waypoints"
-msgstr "標記為航點"
-
-msgid "Save waypoints"
-msgstr "儲存這些航點"
-
-msgid "Replace with waypoints"
-msgstr "ç½®æ›èˆªé»ž"
-
-msgid "Delete Folder"
-msgstr "刪除目錄"
-
-#. Adds the Bookmark folders
-msgid "Add Bookmark folder"
-msgstr "新增書籤目錄"
-
-#. Pastes the Bookmark
-msgid "Paste bookmark"
-msgstr "貼上書籤"
-
-#, c-format
-msgid "Bookmark %s"
-msgstr "書籤 %s"
-
-#, c-format
-msgid "Download %s"
-msgstr "下載 %s"
-
-msgid "Map Download"
-msgstr "下載地圖"
-
-msgid "Active"
-msgstr "動作"
-
-msgid "Download Enabled"
-msgstr "å…許下載"
-
-msgid "Download completely"
-msgstr "下載完畢"
-
-msgid "Show Satellite Status"
-msgstr "顯示衛星狀態"
-
-msgid " Elevation "
-msgstr " æµ·æ‹” "
-
-msgid " Azimuth "
-msgstr " 仰角 "
-
-msgid "Show NMEA Data"
-msgstr "顯示GPSå”定資料"
-
-msgid "car"
-msgstr "汽車"
-
-msgid "bike"
-msgstr "æ©Ÿè¸è»Š"
-
-msgid "pedestrian"
-msgstr "步行"
-
-#, c-format
-msgid "Current profile: %s"
-msgstr "ç¾ç”¨è¨­å®šæª”:%s"
-
-#, c-format
-msgid "Change profile to: %s"
-msgstr "改用設定檔:%s"
-
-msgid "Set as active"
-msgstr "設為啟用"
-
-msgid "Show Satellite status"
-msgstr "顯示衛星狀態"
-
-msgid "Show NMEA data"
-msgstr "顯示GPSå”定資料"
-
-msgid "Add Bookmark"
-msgstr "加入書籤"
-
-msgid "Rename"
-msgstr "改å"
-
-msgid "About Navit"
-msgstr "關於 Navit"
-
-#. Authors
-msgid "By"
-msgstr "ç”±"
-
-#. Contributors
-msgid "And all the Navit Team"
-msgstr "åŠ Navit 團隊全體"
-
-msgid "members and contributors."
-msgstr "æˆå“¡åŠå”力者們"
-
-msgid "Waypoints"
-msgstr "航點"
-
-msgid "Enter Coordinates"
-msgstr "輸入座標"
-
-#.
-#. w=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill)
-#. gui_internal_widget_append(wb, w)
-#.
-#. we=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|flags_fill)
-#. gui_internal_widget_append(w, we)
-msgid "Latitude Longitude"
-msgstr "經緯"
-
-msgid "Enter coordinates, for example:"
-msgstr "輸入座標, 例如:"
-
-msgid "Vehicle"
-msgstr "車輛"
-
-msgid "Rules"
-msgstr "è¦å‰‡"
-
-msgid "Lock on road"
-msgstr "鎖定é“è·¯"
-
-msgid "Northing"
-msgstr "ä¿æŒæœåŒ—"
-
-msgid "Map follows Vehicle"
-msgstr "圖隨車轉"
-
-msgid "Plan with Waypoints"
-msgstr "ä¾é€™äº›èˆªé»žè¦åŠƒè·¯å¾‘"
-
-msgid "Maps"
-msgstr "圖資"
-
-msgid "Layout"
-msgstr "版é¢ä½ˆå±€"
-
-msgid "Height Profile"
-msgstr "高度資料"
-
-msgid "Route Description"
-msgstr "路徑敘述"
-
-msgid "Show Locale"
-msgstr "顯示語言環境"
-
-msgid "Former Destinations"
-msgstr "歷來目的地"
-
-msgid "- No former destinations available -"
-msgstr "- 無歷來目的地 -"
-
-msgid "Message"
-msgstr "訊æ¯"
-
-msgid "Back"
-msgstr "返回"
-
-msgid "Back to map"
-msgstr "回到地圖"
-
-msgid "Main Menu"
-msgstr "主é¸å–®"
-
-msgid "House number"
-msgstr "門牌號碼"
-
-msgid "Next"
-msgstr "下一é "
-
-msgid "Prev"
-msgstr "å‰ä¸€é "
-
-msgid "Return to route!"
-msgstr "回導航路徑"
-
-#. warning told
-msgid "Look out! Camera!"
-msgstr "注æ„! æ‹ç…§!"
-
-#. warning told
-msgid "Please decrease your speed"
-msgstr "請減速"
-
-msgid "partial match"
-msgstr "局部符åˆ"
-
-#. Android resource: @strings/address_search_button
-msgid "Search"
-msgstr "æœå°‹"
-
-#. Android resource: @strings/address_search_towns
-msgid "Towns"
-msgstr "鄉鎮市å€"
-
-msgid "Map data (c) OpenStreetMap contributors, ODBL"
-msgstr "圖資 (c) OpenStreetMap 創作群, ODBL"
-
-msgid ""
-"Current map location %s is not available\n"
-"Please restart Navit after you attach an SD card or select a different map "
-"location."
-msgstr ""
-
-msgid "Downloaded maps"
-msgstr "下載地圖"
-
-msgid ""
-"Sorry, we currently do not support maps above 3.8G on Android, please select "
-"a smaller one."
-msgstr "抱歉, 我們ç¾ä»Šæ–¼å®‰å“系統上ä¸æ”¯æ´å¤§æ–¼3.8G的圖資, è«‹å¦é¸ä¸€å€‹è¼ƒå°çš„."
-
-#. Android resource: @strings/position_popup_drive_here
-msgid "Route to here"
-msgstr "導航至此"
-
-msgid "Cancel"
-msgstr "å–消"
-
-msgid "filenamePath"
-msgstr "檔å路徑"
-
-msgid ""
-"New location set to %s\n"
-"Restart Navit to apply the changes."
-msgstr ""
-"é‡æ–°å®šä½è‡³ %s\n"
-"套用變更請é‡å•Ÿ Navit ."
-
-msgid "Whole Planet"
-msgstr "å…¨çƒ"
-
-msgid "Africa"
-msgstr "éžæ´²"
-
-msgid "Canary Islands"
-msgstr "加那利群島"
-
-msgid "Asia"
-msgstr "亞洲"
-
-msgid "Korea"
-msgstr "å—韓"
-
-msgid "Taiwan"
-msgstr "臺ç£"
-
-msgid "UAE+Other"
-msgstr "阿拉伯è¯åˆå¤§å…¬åœ‹+其他"
-
-msgid "Oceania"
-msgstr "大洋洲"
-
-msgid "Tasmania"
-msgstr "塔斯馬尼亞"
-
-msgid "Victoria"
-msgstr "維多利亞"
-
-msgid "New South Wales"
-msgstr "æ–°å—å¨çˆ¾æ–¯"
-
-msgid "Europe"
-msgstr "æ­æ´²"
-
-msgid "Western Europe"
-msgstr "西æ­"
-
-msgid "Azores"
-msgstr "亞速爾群島"
-
-msgid "BeNeLux"
-msgstr "比è·ç›§è¯ç›Ÿ"
-
-msgid "Alsace"
-msgstr "亞爾薩斯"
-
-msgid "Aquitaine"
-msgstr "亞奎丹"
-
-msgid "Auvergne"
-msgstr "奧文尼"
-
-msgid "Basse-Normandie"
-msgstr "下諾曼第"
-
-msgid "Bourgogne"
-msgstr "勃艮第"
-
-msgid "Bretagne"
-msgstr "布列塔尼"
-
-msgid "Centre"
-msgstr "中央å€"
-
-msgid "Champagne-Ardenne"
-msgstr "香檳-阿登"
-
-msgid "Corse"
-msgstr "科西嘉"
-
-msgid "Franche-Comte"
-msgstr "法蘭çª-康堤"
-
-msgid "Haute-Normandie"
-msgstr "上諾曼第"
-
-msgid "Ile-de-France"
-msgstr "法蘭西島"
-
-msgid "Languedoc-Roussillon"
-msgstr "朗格多克-魯西永"
-
-msgid "Limousin"
-msgstr "利木森"
-
-msgid "Lorraine"
-msgstr "洛林"
-
-msgid "Midi-Pyrenees"
-msgstr "å—部-庇里牛斯"
-
-msgid "Nord-pas-de-Calais"
-msgstr "北部-加來海峽"
-
-msgid "Pays-de-la-Loire"
-msgstr "羅亞爾河地å€"
-
-msgid "Picardie"
-msgstr "çš®å¡ç¬¬å€"
-
-msgid "Poitou-Charentes"
-msgstr "普瓦圖-å¤æœ—å¾·å€"
-
-msgid "Provence-Alpes-Cote-d-Azur"
-msgstr "普羅旺斯-阿爾å‘æ–¯-è—色海岸å€"
-
-msgid "Rhone-Alpes"
-msgstr "隆河-阿爾å‘æ–¯å€"
-
-msgid "Baden-Wuerttemberg"
-msgstr "巴登-符登堡邦"
-
-msgid "Bayern"
-msgstr "æ‹œä»"
-
-msgid "Mittelfranken"
-msgstr "中法蘭克尼亞"
-
-msgid "Niederbayern"
-msgstr "下巴ä¼åˆ©äºž"
-
-msgid "Oberbayern"
-msgstr "上巴ä¼åˆ©äºž"
-
-msgid "Oberfranken"
-msgstr "上法蘭克尼亞"
-
-msgid "Oberpfalz"
-msgstr "上法爾茲"
-
-msgid "Schwaben"
-msgstr "士瓦本"
-
-msgid "Unterfranken"
-msgstr "下法蘭克尼亞"
-
-msgid "Berlin"
-msgstr "æŸæž—"
-
-msgid "Brandenburg"
-msgstr "布蘭登堡"
-
-msgid "Bremen"
-msgstr "ä¸ä¾†æ¢…"
-
-msgid "Hamburg"
-msgstr "漢堡"
-
-msgid "Hessen"
-msgstr "黑森"
-
-msgid "Mecklenburg-Vorpommern"
-msgstr "梅克倫堡-å‰æ³¢èŽ«ç‘ž"
-
-msgid "Niedersachsen"
-msgstr "下薩克森"
-
-msgid "Nordrhein-westfalen"
-msgstr "北èŠèŒµ-西ä¼åˆ©äºž"
-
-msgid "Rheinland-Pfalz"
-msgstr "èŠèŒµè˜­-普法茲"
-
-msgid "Saarland"
-msgstr "薩爾蘭"
-
-msgid "Sachsen-Anhalt"
-msgstr "薩克森-安哈特"
-
-msgid "Sachsen"
-msgstr "薩克森"
-
-msgid "Schleswig-Holstein"
-msgstr "什列斯å¨-好斯敦"
-
-msgid "Thueringen"
-msgstr "圖林根"
-
-msgid "Mallorca"
-msgstr "馬約å¡"
-
-msgid "Galicia"
-msgstr "加利西亞"
-
-msgid "Scandinavia"
-msgstr "斯堪地那維亞"
-
-msgid "England"
-msgstr "英格蘭"
-
-msgid "Buckinghamshire"
-msgstr "白金漢郡"
-
-msgid "Cambridgeshire"
-msgstr "åŠæ©‹éƒ¡"
-
-msgid "Cumbria"
-msgstr "åŽå¸ƒé‡Œäºžéƒ¡"
-
-msgid "East yorkshire with hull"
-msgstr "æ±ç´„克郡åŠèµ«çˆ¾"
-
-msgid "Essex"
-msgstr "艾塞克斯郡"
-
-msgid "Herefordshire"
-msgstr "禧ç¦éƒ¡"
-
-msgid "Kent"
-msgstr "肯特郡"
-
-msgid "Lancashire"
-msgstr "蘭開å¤éƒ¡"
-
-msgid "Leicestershire"
-msgstr "èŠæ–¯ç‰¹éƒ¡"
-
-msgid "Norfolk"
-msgstr "諾ç¦å…‹éƒ¡"
-
-msgid "Nottinghamshire"
-msgstr "諾ä¸æ¼¢éƒ¡"
-
-msgid "Oxfordshire"
-msgstr "牛津郡"
-
-msgid "Shropshire"
-msgstr "施洛普郡"
-
-msgid "Somerset"
-msgstr "索美塞特郡"
-
-msgid "South yorkshire"
-msgstr "å—約克郡"
-
-msgid "Suffolk"
-msgstr "è–©ç¦å…‹éƒ¡"
-
-msgid "Surrey"
-msgstr "薩里"
-
-msgid "Wiltshire"
-msgstr "å¨çˆ¾ç‰¹éƒ¡"
-
-msgid "Scotland"
-msgstr "蘇格蘭"
-
-msgid "Wales"
-msgstr "å¨çˆ¾æ–¯"
-
-msgid "Crete"
-msgstr "克里特"
-
-msgid "North America"
-msgstr "北美"
-
-msgid "Alaska"
-msgstr "阿拉斯加"
-
-msgid "Hawaii"
-msgstr "å¤å¨å¤·"
-
-msgid "USA"
-msgstr "美國"
-
-msgid " (except Alaska and Hawaii)"
-msgstr " (阿拉斯加åŠå¤å¨å¤·é™¤å¤–)"
-
-msgid "Midwest"
-msgstr "中西部"
-
-msgid "Michigan"
-msgstr "密西根"
-
-msgid "Ohio"
-msgstr "俄亥俄"
-
-msgid "Northeast"
-msgstr "æ±åŒ—"
-
-msgid "Massachusetts"
-msgstr "麻塞諸塞"
-
-msgid "Vermont"
-msgstr "佛蒙特"
-
-msgid "Pacific"
-msgstr "太平洋"
-
-msgid "South"
-msgstr "å—"
-
-msgid "Arkansas"
-msgstr "阿肯色"
-
-msgid "District of Columbia"
-msgstr "哥倫比亞特å€"
-
-msgid "Florida"
-msgstr "佛羅里é”"
-
-msgid "Louisiana"
-msgstr "路易斯安那"
-
-msgid "Maryland"
-msgstr "馬里蘭"
-
-msgid "Mississippi"
-msgstr "密西西比"
-
-msgid "Oklahoma"
-msgstr "奧克拉è·é¦¬"
-
-msgid "Texas"
-msgstr "å¾·å…‹è–©æ–¯"
-
-msgid "Virginia"
-msgstr "維å‰å°¼äºž"
-
-msgid "West Virginia"
-msgstr "西維å‰å°¼äºž"
-
-msgid "West"
-msgstr "西"
-
-msgid "Arizona"
-msgstr "亞利桑那"
-
-msgid "California"
-msgstr "加利ç¦å°¼äºž"
-
-msgid "Colorado"
-msgstr "科羅拉多"
-
-msgid "Idaho"
-msgstr "æ„›é”è·"
-
-msgid "Montana"
-msgstr "蒙大拿"
-
-msgid "New Mexico"
-msgstr "新墨西哥"
-
-msgid "Nevada"
-msgstr "å…§è¯é”"
-
-msgid "Oregon"
-msgstr "奧勒岡"
-
-msgid "Utah"
-msgstr "猶他"
-
-msgid "Washington State"
-msgstr "è¯ç››é “å·ž"
-
-msgid "South+Middle America"
-msgstr "中å—美洲"
-
-msgid "Guyane Francaise"
-msgstr "法屬圭亞那"
-
-msgid "downloading"
-msgstr "下載中"
-
-#. Android resource: @strings/map_download_ready
-msgid "ready"
-msgstr "就緒"
-
-msgid "Media selected for map storage is not available"
-msgstr "儲存空間ä¸è¶³ä»¥ä¸‹è¼‰å·²é¸è³‡æº"
-
-#. Android resource: @strings/map_download_not_enough_free_space
-msgid "Not enough free space"
-msgstr "空間ä¸è¶³"
-
-msgid "Error downloading map!"
-msgstr "下載地圖發生錯誤!"
-
-msgid "Error writing map!"
-msgstr "寫入地圖發生錯誤!"
-
-msgid "Map download aborted!"
-msgstr "中止下載地圖!"
-
-#. Android resource: @strings/map_download_eta
-msgid "ETA"
-msgstr "ETA"
-
-#. Android resource: @strings/map_download_title
-msgid "Map download"
-msgstr "下載地圖"
-
-msgid "Vehicle Position"
-msgstr "車輛ä½ç½®"
-
-msgid "Main menu"
-msgstr "主é¸å–®"
-
-msgid ""
-"Show\n"
-"Map"
-msgstr ""
-"顯示\n"
-"地圖"
-
-msgid "Settings"
-msgstr "設定值"
-
-msgid "Tools"
-msgstr "工具箱"
-
-msgid "Route"
-msgstr "路徑"
-
-msgid "About"
-msgstr "關於"
-
-msgid "Quit"
-msgstr "退出"
-
-msgid "Actions"
-msgstr "行動"
-
-msgid ""
-"Former\n"
-"Destinations"
-msgstr ""
-"歷來的\n"
-"目的地"
-
-msgid "Coordinates"
-msgstr "座標"
-
-msgid ""
-"Stop\n"
-"Navigation"
-msgstr ""
-"åœæ­¢\n"
-"導航"
-
-msgid "Display"
-msgstr "顯示"
-
-msgid "Fullscreen"
-msgstr "全螢幕"
-
-msgid "Window Mode"
-msgstr "視窗模å¼"
-
-msgid "Layers"
-msgstr ""
-
-msgid "Description"
-msgstr "備註"
-
-msgid ""
-"Drop last \n"
-"Waypoint"
-msgstr ""
-"æ¨æ£„å‰ä¸€\n"
-"航點"
-
-msgid ""
-"Drop next \n"
-"Waypoint"
-msgstr ""
-"æ¨æ£„次一\n"
-"航點"
-
-msgid "Satellite Status"
-msgstr "衛星狀態"
-
-msgid "NMEA Data"
-msgstr "GPSå”定資料"
-
-msgid "car_shortest"
-msgstr "汽車_最短路徑"
-
-msgid "car_avoid_tolls"
-msgstr "汽車_é¿ä»˜è²»è·¯å¾‘"
-
-msgid "car_pedantic"
-msgstr "步行"
-
-msgid "horse"
-msgstr "馬"
-
-msgid "Truck"
-msgstr "å¡è»Š"
-
-#. Strings from android/res/values/strings.xml
-#. Android resource: @strings/yes
-msgid "Yes"
-msgstr "確定"
-
-#. Android resource: @strings/notification_ticker
-msgid "Navit started"
-msgstr "Navit å•Ÿå‹•"
-
-#. Android resource: @strings/notification_event_default
-msgid "Navit running"
-msgstr "Navit 執行中"
-
-#. Android resource: @strings/initial_info_box_title
-msgid "Welcome to Navit"
-msgstr "歡迎使用 Navit"
-
-#. Android resource: @strings/initial_info_box_message
-msgid ""
-"Thank you for installing Navit!\n"
-"\n"
-"To start, select \"Download maps\" from the menu to download a map. Note: "
-"The map filesize may be large (>50MB) - a wifi connection is recommended.\n"
-"\n"
-"Mapdata: (c) OpenStreetMap contributors\n"
-"\n"
-"Enjoy Navit!"
-msgstr ""
-"æ„Ÿè¬æ‚¨å®‰è£ Navit!\n"
-"\n"
-"剛開始, 從é¸å–®é¸æ“‡ \"下載圖資\" 來下載地圖. 注æ„: 地圖檔å¯èƒ½å¾ˆå¤§ (>50MB) - 建議使用 wifi 網路連線.\n"
-"\n"
-"圖資: (c) OpenStreetMap 建構群\n"
-"\n"
-"請享用 Navit!"
-
-#. Android resource: @strings/initial_info_box_OK
-msgid "OK"
-msgstr "OK"
-
-#. Android resource: @strings/initial_info_box_more_info
-msgid "More info"
-msgstr "更多資訊"
-
-#. Android resource: @strings/optionsmenu_zoom_in
-msgid "Zoom in"
-msgstr "拉近"
-
-#. Android resource: @strings/optionsmenu_zoom_out
-msgid "Zoom out"
-msgstr "拉é "
-
-#. Android resource: @strings/optionsmenu_download_maps
-msgid "Download maps"
-msgstr "下載圖資"
-
-#. Android resource: @strings/optionsmenu_toggle_poi
-msgid "Toggle POIs"
-msgstr "切æ›è¶£é»ž"
-
-#. Android resource: @strings/optionsmenu_exit_navit
-msgid "Exit Navit"
-msgstr "離開 Navit"
-
-#. Android resource: @strings/optionsmenu_backup_restore
-msgid "Backup / Restore"
-msgstr "備份/回復"
-
-#. Android resource: @strings/optionsmenu_set_map_location
-msgid "Set map location"
-msgstr "設定地圖å€åŸŸ"
-
-#. Android resource: @strings/map_delete
-msgid "Delete this map?"
-msgstr "刪除此圖資?"
-
-#. Android resource: @strings/map_download_downloading
-msgid "Downloading:"
-msgstr "下載中:"
-
-#. Android resource: @strings/map_download_download_error
-msgid "Error downloading map."
-msgstr "圖資下載錯誤"
-
-#. Android resource: @strings/map_download_download_aborted
-msgid "Map download aborted"
-msgstr "已中止地圖下載"
-
-#. Android resource: @strings/map_no_fix
-msgid "No location. Reopen after location fix."
-msgstr "圖資ä¸å«ç¾åœ¨ä½ç½®. 修正後é‡å•Ÿ."
-
-#. Android resource: @strings/maps_for_current_location
-msgid "Maps containing current location"
-msgstr "圖資å«ç¾åœ¨ä½ç½®"
-
-#. Android resource: @strings/address_search_title
-msgid "Address search"
-msgstr "地å€æœå°‹"
-
-#. Android resource: @strings/address_enter_destination
-msgid "Enter destination"
-msgstr "輸入目的地"
-
-#. Android resource: @strings/address_partial_match
-msgid "Match partial address"
-msgstr "符åˆéƒ¨åˆ†åœ°å€"
-
-#. Android resource: @strings/address_search_searching
-msgid "Searching..."
-msgstr "æœå°‹ä¸­â€¦"
-
-#. Android resource: @strings/address_search_not_found
-msgid "Address not found"
-msgstr "查無地å€"
-
-#. Android resource: @strings/address_search_getting_results
-msgid "Getting search results"
-msgstr "å–å¾—æœå°‹çµæžœ"
-
-#. Android resource: @strings/address_search_loading_results
-msgid "Loading search results"
-msgstr "載入æœå°‹çµæžœ"
-
-#. Android resource: @strings/address_search_no_results
-msgid "No results found"
-msgstr "æœå°‹ç„¡çµæžœ"
-
-#. Android resource: @strings/address_search_no_text_entered
-msgid "No text entered"
-msgstr "未éµå…¥æ–‡å­—"
-
-#. Android resource: @strings/address_search_set_destination
-msgid "Setting destination to:"
-msgstr "將目的地設為:"
-
-#. Android resource: @strings/choose_an_action
-msgid "Choose an action"
-msgstr "é¸æ“‡å‹•ä½œ"
-
-#. Android resource: @strings/please_insert_an_sd_card
-msgid "Please insert an SD Card"
-msgstr "è«‹æ’å…¥SDå¡"
-
-#. Android resource: @strings/backing_up
-msgid "Backing up..."
-msgstr "正在備份..."
-
-#. Android resource: @strings/restoring
-msgid "Restoring..."
-msgstr "正在還原..."
-
-#. Android resource: @strings/failed_to_create_backup_directory
-msgid "Failed to create backup directory"
-msgstr "建立備份檔目錄失敗"
-
-#. Android resource: @strings/backup_failed
-msgid "Backup failed"
-msgstr "備份失敗"
-
-#. Android resource: @strings/no_backup_found
-msgid "No backup found"
-msgstr "未找到備份"
-
-#. Android resource: @strings/failed_to_restore
-msgid "Failed to restore"
-msgstr "回復失敗"
-
-#. Android resource: @strings/backup_successful
-msgid "Backup successful"
-msgstr "備份æˆåŠŸ"
-
-#. Android resource: @strings/restore_successful_please_restart_navit
-msgid ""
-"Restore Successful\n"
-"Please restart Navit"
-msgstr ""
-"回復æˆåŠŸ\n"
-"è«‹é‡å•Ÿ Navit"
-
-#. Android resource: @strings/backup_not_found
-msgid "Backup not found"
-msgstr "未找到備份"
-
-#. Android resource: @strings/restore_failed
-msgid "Restore failed"
-msgstr "回復失敗"
-
-#. Android resource: @strings/select_backup
-msgid "Select backup"
-msgstr "é¸æ“‡å‚™ä»½"
-
-#. Android resource: @strings/backup
-msgid "Backup"
-msgstr "備份"
-
-#. Android resource: @strings/restore
-msgid "Restore"
-msgstr "回復"
-
-#. Android resource: @strings/TTS_title_data_missing
-msgid "System text to speech engine data is missing"
-msgstr "系統文轉音引擎資料éºå¤±"
-
-#. Android resource: @strings/TTS_qery_install_data
-msgid ""
-"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?"
-msgstr "Navit å¯ä½¿ç”¨æ‰€æœ‰å·²å®‰è£ä¹‹æ–‡è½‰éŸ³å¼•æ“Ž. ç¾åœ¨é¸å®šçš„引擎表示無法ä¾ç…§æ‚¨çš„語言發音. è¦é¡¯ç¤ºèªžéŸ³ä¸‹è¼‰å°è©±æ¡†å—Ž?"
diff --git a/html/point_8h_source.html b/point_8h_source.html
index c5281b94d..c5281b94d 100644
--- a/html/point_8h_source.html
+++ b/point_8h_source.html
diff --git a/html/popup_8h_source.html b/popup_8h_source.html
index 71e26f79b..71e26f79b 100644
--- a/html/popup_8h_source.html
+++ b/popup_8h_source.html
diff --git a/html/portaudio18_8h_source.html b/portaudio18_8h_source.html
index 2cc8b467b..2cc8b467b 100644
--- a/html/portaudio18_8h_source.html
+++ b/portaudio18_8h_source.html
diff --git a/html/portaudio19_8h.html b/portaudio19_8h.html
index d5e1eaaf5..d5e1eaaf5 100644
--- a/html/portaudio19_8h.html
+++ b/portaudio19_8h.html
diff --git a/html/portaudio19_8h.js b/portaudio19_8h.js
index 04edd753e..04edd753e 100644
--- a/html/portaudio19_8h.js
+++ b/portaudio19_8h.js
diff --git a/html/portaudio19_8h_source.html b/portaudio19_8h_source.html
index 8a17f8951..8a17f8951 100644
--- a/html/portaudio19_8h_source.html
+++ b/portaudio19_8h_source.html
diff --git a/html/portaudio_8h_source.html b/portaudio_8h_source.html
index e23806ddc..e23806ddc 100644
--- a/html/portaudio_8h_source.html
+++ b/portaudio_8h_source.html
diff --git a/html/printf-args_8h_source.html b/printf-args_8h_source.html
index 9b9c0521f..9b9c0521f 100644
--- a/html/printf-args_8h_source.html
+++ b/printf-args_8h_source.html
diff --git a/html/printf-parse_8h_source.html b/printf-parse_8h_source.html
index d35a5cacc..d35a5cacc 100644
--- a/html/printf-parse_8h_source.html
+++ b/printf-parse_8h_source.html
diff --git a/html/process_8h_source.html b/process_8h_source.html
index 6aef83fbd..6aef83fbd 100644
--- a/html/process_8h_source.html
+++ b/process_8h_source.html
diff --git a/html/profile_8h_source.html b/profile_8h_source.html
index 66d11b2af..66d11b2af 100644
--- a/html/profile_8h_source.html
+++ b/profile_8h_source.html
diff --git a/html/projection_8h_source.html b/projection_8h_source.html
index 2c2ddf4ff..2c2ddf4ff 100644
--- a/html/projection_8h_source.html
+++ b/projection_8h_source.html
diff --git a/html/protobuf-c-private_8h_source.html b/protobuf-c-private_8h_source.html
index 447323791..447323791 100644
--- a/html/protobuf-c-private_8h_source.html
+++ b/protobuf-c-private_8h_source.html
diff --git a/html/protobuf-c_8h_source.html b/protobuf-c_8h_source.html
index 8a5e118f8..8a5e118f8 100644
--- a/html/protobuf-c_8h_source.html
+++ b/protobuf-c_8h_source.html
diff --git a/html/qml_2proxy_8h_source.html b/qml_2proxy_8h_source.html
index cd3a5c7a4..cd3a5c7a4 100644
--- a/html/qml_2proxy_8h_source.html
+++ b/qml_2proxy_8h_source.html
diff --git a/html/qml__bookmark_8h_source.html b/qml__bookmark_8h_source.html
index 0e18f093b..0e18f093b 100644
--- a/html/qml__bookmark_8h_source.html
+++ b/qml__bookmark_8h_source.html
diff --git a/html/qml__map_8h_source.html b/qml__map_8h_source.html
index 12cdb6e3e..12cdb6e3e 100644
--- a/html/qml__map_8h_source.html
+++ b/qml__map_8h_source.html
diff --git a/html/qml__poi_8h_source.html b/qml__poi_8h_source.html
index 09028825f..09028825f 100644
--- a/html/qml__poi_8h_source.html
+++ b/qml__poi_8h_source.html
diff --git a/html/qml__search_8h_source.html b/qml__search_8h_source.html
index 4bed2f0e2..4bed2f0e2 100644
--- a/html/qml__search_8h_source.html
+++ b/qml__search_8h_source.html
diff --git a/html/qml__vehicle_8h_source.html b/qml__vehicle_8h_source.html
index 4c871fb30..4c871fb30 100644
--- a/html/qml__vehicle_8h_source.html
+++ b/qml__vehicle_8h_source.html
diff --git a/html/qt5__qml_2proxy_8h_source.html b/qt5__qml_2proxy_8h_source.html
index 26d58bdfb..26d58bdfb 100644
--- a/html/qt5__qml_2proxy_8h_source.html
+++ b/qt5__qml_2proxy_8h_source.html
diff --git a/html/quadtree_8h_source.html b/quadtree_8h_source.html
index 7cf6e6993..7cf6e6993 100644
--- a/html/quadtree_8h_source.html
+++ b/quadtree_8h_source.html
diff --git a/html/raster_8h_source.html b/raster_8h_source.html
index 439e97727..439e97727 100644
--- a/html/raster_8h_source.html
+++ b/raster_8h_source.html
diff --git a/html/relocatable_8h_source.html b/relocatable_8h_source.html
index a9dcd6775..a9dcd6775 100644
--- a/html/relocatable_8h_source.html
+++ b/relocatable_8h_source.html
diff --git a/html/resize.js b/resize.js
index 304fcb6ba..304fcb6ba 100644
--- a/html/resize.js
+++ b/resize.js
diff --git a/html/roadprofile_8h_source.html b/roadprofile_8h_source.html
index 7c34823cc..7c34823cc 100644
--- a/html/roadprofile_8h_source.html
+++ b/roadprofile_8h_source.html
diff --git a/html/routeProxy_8h_source.html b/routeProxy_8h_source.html
index 5916278e3..5916278e3 100644
--- a/html/routeProxy_8h_source.html
+++ b/routeProxy_8h_source.html
diff --git a/html/route_8c.html b/route_8c.html
index 089a37353..089a37353 100644
--- a/html/route_8c.html
+++ b/route_8c.html
diff --git a/html/route_8c.js b/route_8c.js
index 91e18e157..91e18e157 100644
--- a/html/route_8c.js
+++ b/route_8c.js
diff --git a/html/route_8h.html b/route_8h.html
index edfd9dad4..edfd9dad4 100644
--- a/html/route_8h.html
+++ b/route_8h.html
diff --git a/html/route_8h.js b/route_8h.js
index 9cdc4c0b6..9cdc4c0b6 100644
--- a/html/route_8h.js
+++ b/route_8h.js
diff --git a/html/route_8h_source.html b/route_8h_source.html
index 93873a7ae..93873a7ae 100644
--- a/html/route_8h_source.html
+++ b/route_8h_source.html
diff --git a/html/searchProxy_8h_source.html b/searchProxy_8h_source.html
index b38716c13..b38716c13 100644
--- a/html/searchProxy_8h_source.html
+++ b/searchProxy_8h_source.html
diff --git a/html/search_8h_source.html b/search_8h_source.html
index c0e98f96e..c0e98f96e 100644
--- a/html/search_8h_source.html
+++ b/search_8h_source.html
diff --git a/html/search__houseno__interpol_8h_source.html b/search__houseno__interpol_8h_source.html
index 591618860..591618860 100644
--- a/html/search__houseno__interpol_8h_source.html
+++ b/search__houseno__interpol_8h_source.html
diff --git a/html/serial__io_8h_source.html b/serial__io_8h_source.html
index 357b383f2..357b383f2 100644
--- a/html/serial__io_8h_source.html
+++ b/serial__io_8h_source.html
diff --git a/html/shapefil_8h_source.html b/shapefil_8h_source.html
index 7ebe1fbed..7ebe1fbed 100644
--- a/html/shapefil_8h_source.html
+++ b/shapefil_8h_source.html
diff --git a/html/signal_8h_source.html b/signal_8h_source.html
index 13238dda2..13238dda2 100644
--- a/html/signal_8h_source.html
+++ b/signal_8h_source.html
diff --git a/html/sintab_8h_source.html b/sintab_8h_source.html
index 6d1f3eed3..6d1f3eed3 100644
--- a/html/sintab_8h_source.html
+++ b/sintab_8h_source.html
diff --git a/html/speak__lib_8h_source.html b/speak__lib_8h_source.html
index effcd9f68..effcd9f68 100644
--- a/html/speak__lib_8h_source.html
+++ b/speak__lib_8h_source.html
diff --git a/html/speech_8h_source.html b/speech_8h_source.html
index 45c036480..45c036480 100644
--- a/html/speech_8h_source.html
+++ b/speech_8h_source.html
diff --git a/html/start__real_8h_source.html b/start__real_8h_source.html
index d4a9e505a..d4a9e505a 100644
--- a/html/start__real_8h_source.html
+++ b/start__real_8h_source.html
diff --git a/html/stat_8h_source.html b/stat_8h_source.html
index f7fa50e5b..f7fa50e5b 100644
--- a/html/stat_8h_source.html
+++ b/stat_8h_source.html
diff --git a/html/stdint_8h_source.html b/stdint_8h_source.html
index 591f72c02..591f72c02 100644
--- a/html/stdint_8h_source.html
+++ b/stdint_8h_source.html
diff --git a/html/structACCENTS.html b/structACCENTS.html
index 2d2b91961..2d2b91961 100644
--- a/html/structACCENTS.html
+++ b/structACCENTS.html
diff --git a/html/structACCENTS.js b/structACCENTS.js
index 17566857b..17566857b 100644
--- a/html/structACCENTS.js
+++ b/structACCENTS.js
diff --git a/html/structAllocator.html b/structAllocator.html
index 915adff28..915adff28 100644
--- a/html/structAllocator.html
+++ b/structAllocator.html
diff --git a/html/structAllocator.js b/structAllocator.js
index abc0a7d62..abc0a7d62 100644
--- a/html/structAllocator.js
+++ b/structAllocator.js
diff --git a/html/structCHANGEPH.html b/structCHANGEPH.html
index 62339a034..62339a034 100644
--- a/html/structCHANGEPH.html
+++ b/structCHANGEPH.html
diff --git a/html/structCHANGEPH.js b/structCHANGEPH.js
index c737a1d0e..c737a1d0e 100644
--- a/html/structCHANGEPH.js
+++ b/structCHANGEPH.js
diff --git a/html/structDBFInfo.html b/structDBFInfo.html
index 7fe2c3385..7fe2c3385 100644
--- a/html/structDBFInfo.html
+++ b/structDBFInfo.html
diff --git a/html/structDBFInfo.js b/structDBFInfo.js
index 2e2babeb5..2e2babeb5 100644
--- a/html/structDBFInfo.js
+++ b/structDBFInfo.js
diff --git a/html/structEMESS.html b/structEMESS.html
index 36033348e..36033348e 100644
--- a/html/structEMESS.html
+++ b/structEMESS.html
diff --git a/html/structEMESS.js b/structEMESS.js
index 24ca3d499..24ca3d499 100644
--- a/html/structEMESS.js
+++ b/structEMESS.js
diff --git a/html/structInstanceData.html b/structInstanceData.html
index 91f14908c..91f14908c 100644
--- a/html/structInstanceData.html
+++ b/structInstanceData.html
diff --git a/html/structInstanceData.js b/structInstanceData.js
index 8c87b21ef..8c87b21ef 100644
--- a/html/structInstanceData.js
+++ b/structInstanceData.js
diff --git a/html/structLANGUAGE__OPTIONS.html b/structLANGUAGE__OPTIONS.html
index 7d119694b..7d119694b 100644
--- a/html/structLANGUAGE__OPTIONS.html
+++ b/structLANGUAGE__OPTIONS.html
diff --git a/html/structLANGUAGE__OPTIONS.js b/structLANGUAGE__OPTIONS.js
index f82835d3d..f82835d3d 100644
--- a/html/structLANGUAGE__OPTIONS.js
+++ b/structLANGUAGE__OPTIONS.js
diff --git a/html/structMBROLA__TAB.html b/structMBROLA__TAB.html
index e636f84af..e636f84af 100644
--- a/html/structMBROLA__TAB.html
+++ b/structMBROLA__TAB.html
diff --git a/html/structMBROLA__TAB.js b/structMBROLA__TAB.js
index 8aa623857..8aa623857 100644
--- a/html/structMBROLA__TAB.js
+++ b/structMBROLA__TAB.js
diff --git a/html/structMNEM__TAB.html b/structMNEM__TAB.html
index f6902e06f..f6902e06f 100644
--- a/html/structMNEM__TAB.html
+++ b/structMNEM__TAB.html
diff --git a/html/structMNEM__TAB.js b/structMNEM__TAB.js
index beba414de..beba414de 100644
--- a/html/structMNEM__TAB.js
+++ b/structMNEM__TAB.js
diff --git a/html/structMagazine.html b/structMagazine.html
index 2a42e07a5..2a42e07a5 100644
--- a/html/structMagazine.html
+++ b/structMagazine.html
diff --git a/html/structMagazine.js b/structMagazine.js
index f4fa830e2..f4fa830e2 100644
--- a/html/structMagazine.js
+++ b/structMagazine.js
diff --git a/html/structMatchRecord.html b/structMatchRecord.html
index 36cf8f460..36cf8f460 100644
--- a/html/structMatchRecord.html
+++ b/structMatchRecord.html
diff --git a/html/structMatchRecord.js b/structMatchRecord.js
index d6d0047e3..d6d0047e3 100644
--- a/html/structMatchRecord.js
+++ b/structMatchRecord.js
diff --git a/html/structNavitObject.html b/structNavitObject.html
index 4c499feca..4c499feca 100644
--- a/html/structNavitObject.html
+++ b/structNavitObject.html
diff --git a/html/structNavitObject.js b/structNavitObject.js
index 490124991..490124991 100644
--- a/html/structNavitObject.js
+++ b/structNavitObject.js
diff --git a/html/structPARAM__STACK.html b/structPARAM__STACK.html
index faee29b2c..faee29b2c 100644
--- a/html/structPARAM__STACK.html
+++ b/structPARAM__STACK.html
diff --git a/html/structPARAM__STACK.js b/structPARAM__STACK.js
index c337f04c7..c337f04c7 100644
--- a/html/structPARAM__STACK.js
+++ b/structPARAM__STACK.js
diff --git a/html/structPHONEME__LIST.html b/structPHONEME__LIST.html
index 75d9cc793..75d9cc793 100644
--- a/html/structPHONEME__LIST.html
+++ b/structPHONEME__LIST.html
diff --git a/html/structPHONEME__LIST.js b/structPHONEME__LIST.js
index ce86c5317..ce86c5317 100644
--- a/html/structPHONEME__LIST.js
+++ b/structPHONEME__LIST.js
diff --git a/html/structPHONEME__LIST2.html b/structPHONEME__LIST2.html
index a26747fdd..a26747fdd 100644
--- a/html/structPHONEME__LIST2.html
+++ b/structPHONEME__LIST2.html
diff --git a/html/structPHONEME__LIST2.js b/structPHONEME__LIST2.js
index 4848d585a..4848d585a 100644
--- a/html/structPHONEME__LIST2.js
+++ b/structPHONEME__LIST2.js
diff --git a/html/structPHONEME__TAB.html b/structPHONEME__TAB.html
index 3d36896ba..3d36896ba 100644
--- a/html/structPHONEME__TAB.html
+++ b/structPHONEME__TAB.html
diff --git a/html/structPHONEME__TAB.js b/structPHONEME__TAB.js
index 53af9379d..53af9379d 100644
--- a/html/structPHONEME__TAB.js
+++ b/structPHONEME__TAB.js
diff --git a/html/structPHONEME__TAB__LIST.html b/structPHONEME__TAB__LIST.html
index d9a4ab8b5..d9a4ab8b5 100644
--- a/html/structPHONEME__TAB__LIST.html
+++ b/structPHONEME__TAB__LIST.html
diff --git a/html/structPHONEME__TAB__LIST.js b/structPHONEME__TAB__LIST.js
index 7f8c6060e..7f8c6060e 100644
--- a/html/structPHONEME__TAB__LIST.js
+++ b/structPHONEME__TAB__LIST.js
diff --git a/html/structPaDeviceInfo.html b/structPaDeviceInfo.html
index bdfd3e871..bdfd3e871 100644
--- a/html/structPaDeviceInfo.html
+++ b/structPaDeviceInfo.html
diff --git a/html/structPaDeviceInfo.js b/structPaDeviceInfo.js
index 6fb56d430..6fb56d430 100644
--- a/html/structPaDeviceInfo.js
+++ b/structPaDeviceInfo.js
diff --git a/html/structPaHostApiInfo.html b/structPaHostApiInfo.html
index 133cc51c2..133cc51c2 100644
--- a/html/structPaHostApiInfo.html
+++ b/structPaHostApiInfo.html
diff --git a/html/structPaHostApiInfo.js b/structPaHostApiInfo.js
index a6db0b483..a6db0b483 100644
--- a/html/structPaHostApiInfo.js
+++ b/structPaHostApiInfo.js
diff --git a/html/structPaHostErrorInfo.html b/structPaHostErrorInfo.html
index d17149b13..d17149b13 100644
--- a/html/structPaHostErrorInfo.html
+++ b/structPaHostErrorInfo.html
diff --git a/html/structPaHostErrorInfo.js b/structPaHostErrorInfo.js
index e6ca6d49d..e6ca6d49d 100644
--- a/html/structPaHostErrorInfo.js
+++ b/structPaHostErrorInfo.js
diff --git a/html/structPaStreamCallbackTimeInfo.html b/structPaStreamCallbackTimeInfo.html
index a653aa6f4..a653aa6f4 100644
--- a/html/structPaStreamCallbackTimeInfo.html
+++ b/structPaStreamCallbackTimeInfo.html
diff --git a/html/structPaStreamCallbackTimeInfo.js b/structPaStreamCallbackTimeInfo.js
index 101b8c2e5..101b8c2e5 100644
--- a/html/structPaStreamCallbackTimeInfo.js
+++ b/structPaStreamCallbackTimeInfo.js
diff --git a/html/structPaStreamInfo.html b/structPaStreamInfo.html
index c76fc9d3a..c76fc9d3a 100644
--- a/html/structPaStreamInfo.html
+++ b/structPaStreamInfo.html
diff --git a/html/structPaStreamInfo.js b/structPaStreamInfo.js
index 136d7e874..136d7e874 100644
--- a/html/structPaStreamInfo.js
+++ b/structPaStreamInfo.js
diff --git a/html/structPaStreamParameters.html b/structPaStreamParameters.html
index 419cf54ae..419cf54ae 100644
--- a/html/structPaStreamParameters.html
+++ b/structPaStreamParameters.html
diff --git a/html/structPaStreamParameters.js b/structPaStreamParameters.js
index fc40fb5ec..fc40fb5ec 100644
--- a/html/structPaStreamParameters.js
+++ b/structPaStreamParameters.js
diff --git a/html/structREPLACE__PHONEMES.html b/structREPLACE__PHONEMES.html
index c9424f01a..c9424f01a 100644
--- a/html/structREPLACE__PHONEMES.html
+++ b/structREPLACE__PHONEMES.html
diff --git a/html/structREPLACE__PHONEMES.js b/structREPLACE__PHONEMES.js
index edac2f7d2..edac2f7d2 100644
--- a/html/structREPLACE__PHONEMES.js
+++ b/structREPLACE__PHONEMES.js
diff --git a/html/structRESONATOR.html b/structRESONATOR.html
index dc85417a6..dc85417a6 100644
--- a/html/structRESONATOR.html
+++ b/structRESONATOR.html
diff --git a/html/structRESONATOR.js b/structRESONATOR.js
index 848da309e..848da309e 100644
--- a/html/structRESONATOR.js
+++ b/structRESONATOR.js
diff --git a/html/structRGROUP.html b/structRGROUP.html
index 3471a2bd8..3471a2bd8 100644
--- a/html/structRGROUP.html
+++ b/structRGROUP.html
diff --git a/html/structRGROUP.js b/structRGROUP.js
index e212f9425..e212f9425 100644
--- a/html/structRGROUP.js
+++ b/structRGROUP.js
diff --git a/html/structRealIter.html b/structRealIter.html
index 9541d7fcb..9541d7fcb 100644
--- a/html/structRealIter.html
+++ b/structRealIter.html
diff --git a/html/structRealIter.js b/structRealIter.js
index c14a649dd..c14a649dd 100644
--- a/html/structRealIter.js
+++ b/structRealIter.js
diff --git a/html/structSAHooks.html b/structSAHooks.html
index a3a0d18e7..a3a0d18e7 100644
--- a/html/structSAHooks.html
+++ b/structSAHooks.html
diff --git a/html/structSAHooks.js b/structSAHooks.js
index 006e4ece5..006e4ece5 100644
--- a/html/structSAHooks.js
+++ b/structSAHooks.js
diff --git a/html/structSHPDiskTreeInfo.html b/structSHPDiskTreeInfo.html
index 08dfc6236..08dfc6236 100644
--- a/html/structSHPDiskTreeInfo.html
+++ b/structSHPDiskTreeInfo.html
diff --git a/html/structSHPDiskTreeInfo.js b/structSHPDiskTreeInfo.js
index 3d58b5946..3d58b5946 100644
--- a/html/structSHPDiskTreeInfo.js
+++ b/structSHPDiskTreeInfo.js
diff --git a/html/structSHPInfo.html b/structSHPInfo.html
index af7f5f95c..af7f5f95c 100644
--- a/html/structSHPInfo.html
+++ b/structSHPInfo.html
diff --git a/html/structSHPInfo.js b/structSHPInfo.js
index ed2c98d8d..ed2c98d8d 100644
--- a/html/structSHPInfo.js
+++ b/structSHPInfo.js
diff --git a/html/structSHPTree.html b/structSHPTree.html
index 47d865b10..47d865b10 100644
--- a/html/structSHPTree.html
+++ b/structSHPTree.html
diff --git a/html/structSHPTree.js b/structSHPTree.js
index 0cfa8cd1f..0cfa8cd1f 100644
--- a/html/structSHPTree.js
+++ b/structSHPTree.js
diff --git a/html/structSOUND__ICON.html b/structSOUND__ICON.html
index b2f3e81e5..b2f3e81e5 100644
--- a/html/structSOUND__ICON.html
+++ b/structSOUND__ICON.html
diff --git a/html/structSOUND__ICON.js b/structSOUND__ICON.js
index 9e2c28d2f..9e2c28d2f 100644
--- a/html/structSOUND__ICON.js
+++ b/structSOUND__ICON.js
diff --git a/html/structSPECT__SEQ.html b/structSPECT__SEQ.html
index 3d8e04677..3d8e04677 100644
--- a/html/structSPECT__SEQ.html
+++ b/structSPECT__SEQ.html
diff --git a/html/structSPECT__SEQ.js b/structSPECT__SEQ.js
index a95847c34..a95847c34 100644
--- a/html/structSPECT__SEQ.js
+++ b/structSPECT__SEQ.js
diff --git a/html/structSPECT__SEQK.html b/structSPECT__SEQK.html
index 17ce88f98..17ce88f98 100644
--- a/html/structSPECT__SEQK.html
+++ b/structSPECT__SEQK.html
diff --git a/html/structSPECT__SEQK.js b/structSPECT__SEQK.js
index 2757f2e03..2757f2e03 100644
--- a/html/structSPECT__SEQK.js
+++ b/structSPECT__SEQK.js
diff --git a/html/structSPEED__FACTORS.html b/structSPEED__FACTORS.html
index 0b3e05b90..0b3e05b90 100644
--- a/html/structSPEED__FACTORS.html
+++ b/structSPEED__FACTORS.html
diff --git a/html/structSPEED__FACTORS.js b/structSPEED__FACTORS.js
index 997018935..997018935 100644
--- a/html/structSPEED__FACTORS.js
+++ b/structSPEED__FACTORS.js
diff --git a/html/structSSML__STACK.html b/structSSML__STACK.html
index 5c7afe9d1..5c7afe9d1 100644
--- a/html/structSSML__STACK.html
+++ b/structSSML__STACK.html
diff --git a/html/structSSML__STACK.js b/structSSML__STACK.js
index 0c1ad9b08..0c1ad9b08 100644
--- a/html/structSSML__STACK.js
+++ b/structSSML__STACK.js
diff --git a/html/structSYLLABLE.html b/structSYLLABLE.html
index 7756d4458..7756d4458 100644
--- a/html/structSYLLABLE.html
+++ b/structSYLLABLE.html
diff --git a/html/structSYLLABLE.js b/structSYLLABLE.js
index 1d7d83930..1d7d83930 100644
--- a/html/structSYLLABLE.js
+++ b/structSYLLABLE.js
diff --git a/html/structSliceConfig.html b/structSliceConfig.html
index 86c3943d5..86c3943d5 100644
--- a/html/structSliceConfig.html
+++ b/structSliceConfig.html
diff --git a/html/structSliceConfig.js b/structSliceConfig.js
index e9c7a3372..e9c7a3372 100644
--- a/html/structSliceConfig.js
+++ b/structSliceConfig.js
diff --git a/html/structSmcBranch.html b/structSmcBranch.html
index d65796fe9..d65796fe9 100644
--- a/html/structSmcBranch.html
+++ b/structSmcBranch.html
diff --git a/html/structSmcBranch.js b/structSmcBranch.js
index b68077cb2..b68077cb2 100644
--- a/html/structSmcBranch.js
+++ b/structSmcBranch.js
diff --git a/html/structSmcEntry.html b/structSmcEntry.html
index 801f8fd76..801f8fd76 100644
--- a/html/structSmcEntry.html
+++ b/structSmcEntry.html
diff --git a/html/structSmcEntry.js b/structSmcEntry.js
index 58a742785..58a742785 100644
--- a/html/structSmcEntry.js
+++ b/structSmcEntry.js
diff --git a/html/structTONE__HEAD.html b/structTONE__HEAD.html
index 51b60105c..51b60105c 100644
--- a/html/structTONE__HEAD.html
+++ b/structTONE__HEAD.html
diff --git a/html/structTONE__HEAD.js b/structTONE__HEAD.js
index 9f8b087a6..9f8b087a6 100644
--- a/html/structTONE__HEAD.js
+++ b/structTONE__HEAD.js
diff --git a/html/structTONE__NUCLEUS.html b/structTONE__NUCLEUS.html
index bfa1a285f..bfa1a285f 100644
--- a/html/structTONE__NUCLEUS.html
+++ b/structTONE__NUCLEUS.html
diff --git a/html/structTONE__NUCLEUS.js b/structTONE__NUCLEUS.js
index 178ce699d..178ce699d 100644
--- a/html/structTONE__NUCLEUS.js
+++ b/structTONE__NUCLEUS.js
diff --git a/html/structThreadMemory.html b/structThreadMemory.html
index c91fe3697..c91fe3697 100644
--- a/html/structThreadMemory.html
+++ b/structThreadMemory.html
diff --git a/html/structThreadMemory.js b/structThreadMemory.js
index 47cf1534a..47cf1534a 100644
--- a/html/structThreadMemory.js
+++ b/structThreadMemory.js
diff --git a/html/structTranslator.html b/structTranslator.html
index 73fdb7cb3..73fdb7cb3 100644
--- a/html/structTranslator.html
+++ b/structTranslator.html
diff --git a/html/structTranslator.js b/structTranslator.js
index 409078c12..409078c12 100644
--- a/html/structTranslator.js
+++ b/structTranslator.js
diff --git a/html/structWGEN__DATA.html b/structWGEN__DATA.html
index bd737e95a..bd737e95a 100644
--- a/html/structWGEN__DATA.html
+++ b/structWGEN__DATA.html
diff --git a/html/structWGEN__DATA.js b/structWGEN__DATA.js
index fff81f265..fff81f265 100644
--- a/html/structWGEN__DATA.js
+++ b/structWGEN__DATA.js
diff --git a/html/structWORD__TAB.html b/structWORD__TAB.html
index 335c39ca5..335c39ca5 100644
--- a/html/structWORD__TAB.html
+++ b/structWORD__TAB.html
diff --git a/html/structWORD__TAB.js b/structWORD__TAB.js
index a97ef956d..a97ef956d 100644
--- a/html/structWORD__TAB.js
+++ b/structWORD__TAB.js
diff --git a/html/structXPM2BMP__TAG.html b/structXPM2BMP__TAG.html
index 0c5941ada..0c5941ada 100644
--- a/html/structXPM2BMP__TAG.html
+++ b/structXPM2BMP__TAG.html
diff --git a/html/structXPM2BMP__TAG.js b/structXPM2BMP__TAG.js
index 1b7afeda7..1b7afeda7 100644
--- a/html/structXPM2BMP__TAG.js
+++ b/structXPM2BMP__TAG.js
diff --git a/html/structXPMCOLORENTRY__TAG.html b/structXPMCOLORENTRY__TAG.html
index 9f8c43014..9f8c43014 100644
--- a/html/structXPMCOLORENTRY__TAG.html
+++ b/structXPMCOLORENTRY__TAG.html
diff --git a/html/structXPMCOLORENTRY__TAG.js b/structXPMCOLORENTRY__TAG.js
index bea3f8384..bea3f8384 100644
--- a/html/structXPMCOLORENTRY__TAG.js
+++ b/structXPMCOLORENTRY__TAG.js
diff --git a/html/struct__ChunkLink.html b/struct__ChunkLink.html
index b6b206eea..b6b206eea 100644
--- a/html/struct__ChunkLink.html
+++ b/struct__ChunkLink.html
diff --git a/html/struct__ChunkLink.js b/struct__ChunkLink.js
index b7e8a6dab..b7e8a6dab 100644
--- a/html/struct__ChunkLink.js
+++ b/struct__ChunkLink.js
diff --git a/html/struct__GDebugKey.html b/struct__GDebugKey.html
index 328008e04..328008e04 100644
--- a/html/struct__GDebugKey.html
+++ b/struct__GDebugKey.html
diff --git a/html/struct__GDebugKey.js b/struct__GDebugKey.js
index 995541093..995541093 100644
--- a/html/struct__GDebugKey.js
+++ b/struct__GDebugKey.js
diff --git a/html/struct__GError.html b/struct__GError.html
index 50ccea60c..50ccea60c 100644
--- a/html/struct__GError.html
+++ b/struct__GError.html
diff --git a/html/struct__GError.js b/struct__GError.js
index adc192b4f..adc192b4f 100644
--- a/html/struct__GError.js
+++ b/struct__GError.js
diff --git a/html/struct__GHashNode.html b/struct__GHashNode.html
index a320a1873..a320a1873 100644
--- a/html/struct__GHashNode.html
+++ b/struct__GHashNode.html
diff --git a/html/struct__GHashNode.js b/struct__GHashNode.js
index 8e452a567..8e452a567 100644
--- a/html/struct__GHashNode.js
+++ b/struct__GHashNode.js
diff --git a/html/struct__GHashTable.html b/struct__GHashTable.html
index 88a374c51..88a374c51 100644
--- a/html/struct__GHashTable.html
+++ b/struct__GHashTable.html
diff --git a/html/struct__GHashTable.js b/struct__GHashTable.js
index f3f01ef17..f3f01ef17 100644
--- a/html/struct__GHashTable.js
+++ b/struct__GHashTable.js
diff --git a/html/struct__GHashTableIter.html b/struct__GHashTableIter.html
index 680e7636a..680e7636a 100644
--- a/html/struct__GHashTableIter.html
+++ b/struct__GHashTableIter.html
diff --git a/html/struct__GHashTableIter.js b/struct__GHashTableIter.js
index 1713413b6..1713413b6 100644
--- a/html/struct__GHashTableIter.js
+++ b/struct__GHashTableIter.js
diff --git a/html/struct__GList.html b/struct__GList.html
index ae908d6f1..ae908d6f1 100644
--- a/html/struct__GList.html
+++ b/struct__GList.html
diff --git a/html/struct__GList.js b/struct__GList.js
index 6b8f31d70..6b8f31d70 100644
--- a/html/struct__GList.js
+++ b/struct__GList.js
diff --git a/html/struct__GMemChunk.html b/struct__GMemChunk.html
index 1db44bd4b..1db44bd4b 100644
--- a/html/struct__GMemChunk.html
+++ b/struct__GMemChunk.html
diff --git a/html/struct__GMemChunk.js b/struct__GMemChunk.js
index 2195e4358..2195e4358 100644
--- a/html/struct__GMemChunk.js
+++ b/struct__GMemChunk.js
diff --git a/html/struct__GMemVTable.html b/struct__GMemVTable.html
index aef6de574..aef6de574 100644
--- a/html/struct__GMemVTable.html
+++ b/struct__GMemVTable.html
diff --git a/html/struct__GMemVTable.js b/struct__GMemVTable.js
index b8d0c7829..b8d0c7829 100644
--- a/html/struct__GMemVTable.js
+++ b/struct__GMemVTable.js
diff --git a/html/struct__GSList.html b/struct__GSList.html
index f3571370d..f3571370d 100644
--- a/html/struct__GSList.html
+++ b/struct__GSList.html
diff --git a/html/struct__GSList.js b/struct__GSList.js
index 0666c5f8d..0666c5f8d 100644
--- a/html/struct__GSList.js
+++ b/struct__GSList.js
diff --git a/html/struct__GTimeVal.html b/struct__GTimeVal.html
index a583ed044..a583ed044 100644
--- a/html/struct__GTimeVal.html
+++ b/struct__GTimeVal.html
diff --git a/html/struct__GTimeVal.js b/struct__GTimeVal.js
index 611c30fd8..611c30fd8 100644
--- a/html/struct__GTimeVal.js
+++ b/struct__GTimeVal.js
diff --git a/html/struct__GTrashStack.html b/struct__GTrashStack.html
index b3e4cedf8..b3e4cedf8 100644
--- a/html/struct__GTrashStack.html
+++ b/struct__GTrashStack.html
diff --git a/html/struct__GTrashStack.js b/struct__GTrashStack.js
index f0ce80324..f0ce80324 100644
--- a/html/struct__GTrashStack.js
+++ b/struct__GTrashStack.js
diff --git a/html/struct__OSMPBF____Blob.html b/struct__OSMPBF____Blob.html
index c9e028322..c9e028322 100644
--- a/html/struct__OSMPBF____Blob.html
+++ b/struct__OSMPBF____Blob.html
diff --git a/html/struct__OSMPBF____Blob.js b/struct__OSMPBF____Blob.js
index 09f346051..09f346051 100644
--- a/html/struct__OSMPBF____Blob.js
+++ b/struct__OSMPBF____Blob.js
diff --git a/html/struct__OSMPBF____BlobHeader.html b/struct__OSMPBF____BlobHeader.html
index 29112a55e..29112a55e 100644
--- a/html/struct__OSMPBF____BlobHeader.html
+++ b/struct__OSMPBF____BlobHeader.html
diff --git a/html/struct__OSMPBF____BlobHeader.js b/struct__OSMPBF____BlobHeader.js
index cf81d4fe7..cf81d4fe7 100644
--- a/html/struct__OSMPBF____BlobHeader.js
+++ b/struct__OSMPBF____BlobHeader.js
diff --git a/html/struct__OSMPBF____ChangeSet.html b/struct__OSMPBF____ChangeSet.html
index 9c8182243..9c8182243 100644
--- a/html/struct__OSMPBF____ChangeSet.html
+++ b/struct__OSMPBF____ChangeSet.html
diff --git a/html/struct__OSMPBF____ChangeSet.js b/struct__OSMPBF____ChangeSet.js
index cde80bb44..cde80bb44 100644
--- a/html/struct__OSMPBF____ChangeSet.js
+++ b/struct__OSMPBF____ChangeSet.js
diff --git a/html/struct__OSMPBF____DenseInfo.html b/struct__OSMPBF____DenseInfo.html
index af63eb64e..af63eb64e 100644
--- a/html/struct__OSMPBF____DenseInfo.html
+++ b/struct__OSMPBF____DenseInfo.html
diff --git a/html/struct__OSMPBF____DenseInfo.js b/struct__OSMPBF____DenseInfo.js
index 76a6b26ba..76a6b26ba 100644
--- a/html/struct__OSMPBF____DenseInfo.js
+++ b/struct__OSMPBF____DenseInfo.js
diff --git a/html/struct__OSMPBF____DenseNodes.html b/struct__OSMPBF____DenseNodes.html
index 5d55e2eca..5d55e2eca 100644
--- a/html/struct__OSMPBF____DenseNodes.html
+++ b/struct__OSMPBF____DenseNodes.html
diff --git a/html/struct__OSMPBF____DenseNodes.js b/struct__OSMPBF____DenseNodes.js
index 87ad881b5..87ad881b5 100644
--- a/html/struct__OSMPBF____DenseNodes.js
+++ b/struct__OSMPBF____DenseNodes.js
diff --git a/html/struct__OSMPBF____HeaderBBox.html b/struct__OSMPBF____HeaderBBox.html
index 4cd8bd4d9..4cd8bd4d9 100644
--- a/html/struct__OSMPBF____HeaderBBox.html
+++ b/struct__OSMPBF____HeaderBBox.html
diff --git a/html/struct__OSMPBF____HeaderBBox.js b/struct__OSMPBF____HeaderBBox.js
index 12ee89502..12ee89502 100644
--- a/html/struct__OSMPBF____HeaderBBox.js
+++ b/struct__OSMPBF____HeaderBBox.js
diff --git a/html/struct__OSMPBF____HeaderBlock.html b/struct__OSMPBF____HeaderBlock.html
index dcca3160c..dcca3160c 100644
--- a/html/struct__OSMPBF____HeaderBlock.html
+++ b/struct__OSMPBF____HeaderBlock.html
diff --git a/html/struct__OSMPBF____HeaderBlock.js b/struct__OSMPBF____HeaderBlock.js
index 7dd137e75..7dd137e75 100644
--- a/html/struct__OSMPBF____HeaderBlock.js
+++ b/struct__OSMPBF____HeaderBlock.js
diff --git a/html/struct__OSMPBF____Info.html b/struct__OSMPBF____Info.html
index 64a1565d0..64a1565d0 100644
--- a/html/struct__OSMPBF____Info.html
+++ b/struct__OSMPBF____Info.html
diff --git a/html/struct__OSMPBF____Info.js b/struct__OSMPBF____Info.js
index bbcb9bd25..bbcb9bd25 100644
--- a/html/struct__OSMPBF____Info.js
+++ b/struct__OSMPBF____Info.js
diff --git a/html/struct__OSMPBF____Node.html b/struct__OSMPBF____Node.html
index ed3ae9464..ed3ae9464 100644
--- a/html/struct__OSMPBF____Node.html
+++ b/struct__OSMPBF____Node.html
diff --git a/html/struct__OSMPBF____Node.js b/struct__OSMPBF____Node.js
index 6e6abc311..6e6abc311 100644
--- a/html/struct__OSMPBF____Node.js
+++ b/struct__OSMPBF____Node.js
diff --git a/html/struct__OSMPBF____PrimitiveBlock.html b/struct__OSMPBF____PrimitiveBlock.html
index 149147e5e..149147e5e 100644
--- a/html/struct__OSMPBF____PrimitiveBlock.html
+++ b/struct__OSMPBF____PrimitiveBlock.html
diff --git a/html/struct__OSMPBF____PrimitiveBlock.js b/struct__OSMPBF____PrimitiveBlock.js
index c7b507e35..c7b507e35 100644
--- a/html/struct__OSMPBF____PrimitiveBlock.js
+++ b/struct__OSMPBF____PrimitiveBlock.js
diff --git a/html/struct__OSMPBF____PrimitiveGroup.html b/struct__OSMPBF____PrimitiveGroup.html
index 496dca11c..496dca11c 100644
--- a/html/struct__OSMPBF____PrimitiveGroup.html
+++ b/struct__OSMPBF____PrimitiveGroup.html
diff --git a/html/struct__OSMPBF____PrimitiveGroup.js b/struct__OSMPBF____PrimitiveGroup.js
index 6eb4bf3bb..6eb4bf3bb 100644
--- a/html/struct__OSMPBF____PrimitiveGroup.js
+++ b/struct__OSMPBF____PrimitiveGroup.js
diff --git a/html/struct__OSMPBF____Relation.html b/struct__OSMPBF____Relation.html
index eb28ffb73..eb28ffb73 100644
--- a/html/struct__OSMPBF____Relation.html
+++ b/struct__OSMPBF____Relation.html
diff --git a/html/struct__OSMPBF____Relation.js b/struct__OSMPBF____Relation.js
index ac3ae692e..ac3ae692e 100644
--- a/html/struct__OSMPBF____Relation.js
+++ b/struct__OSMPBF____Relation.js
diff --git a/html/struct__OSMPBF____StringTable.html b/struct__OSMPBF____StringTable.html
index a9ba19b3a..a9ba19b3a 100644
--- a/html/struct__OSMPBF____StringTable.html
+++ b/struct__OSMPBF____StringTable.html
diff --git a/html/struct__OSMPBF____StringTable.js b/struct__OSMPBF____StringTable.js
index 2fce106d8..2fce106d8 100644
--- a/html/struct__OSMPBF____StringTable.js
+++ b/struct__OSMPBF____StringTable.js
diff --git a/html/struct__OSMPBF____Way.html b/struct__OSMPBF____Way.html
index 65744008d..65744008d 100644
--- a/html/struct__OSMPBF____Way.html
+++ b/struct__OSMPBF____Way.html
diff --git a/html/struct__OSMPBF____Way.js b/struct__OSMPBF____Way.js
index 1a6d8c139..1a6d8c139 100644
--- a/html/struct__OSMPBF____Way.js
+++ b/struct__OSMPBF____Way.js
diff --git a/html/struct__ProtobufCAllocator.html b/struct__ProtobufCAllocator.html
index 8d8ed2ffd..8d8ed2ffd 100644
--- a/html/struct__ProtobufCAllocator.html
+++ b/struct__ProtobufCAllocator.html
diff --git a/html/struct__ProtobufCAllocator.js b/struct__ProtobufCAllocator.js
index 32b4cb38e..32b4cb38e 100644
--- a/html/struct__ProtobufCAllocator.js
+++ b/struct__ProtobufCAllocator.js
diff --git a/html/struct__ProtobufCBinaryData.html b/struct__ProtobufCBinaryData.html
index 92b690165..92b690165 100644
--- a/html/struct__ProtobufCBinaryData.html
+++ b/struct__ProtobufCBinaryData.html
diff --git a/html/struct__ProtobufCBinaryData.js b/struct__ProtobufCBinaryData.js
index 2dde33b28..2dde33b28 100644
--- a/html/struct__ProtobufCBinaryData.js
+++ b/struct__ProtobufCBinaryData.js
diff --git a/html/struct__ProtobufCBuffer.html b/struct__ProtobufCBuffer.html
index f3e006810..f3e006810 100644
--- a/html/struct__ProtobufCBuffer.html
+++ b/struct__ProtobufCBuffer.html
diff --git a/html/struct__ProtobufCBuffer.js b/struct__ProtobufCBuffer.js
index 97d8218ae..97d8218ae 100644
--- a/html/struct__ProtobufCBuffer.js
+++ b/struct__ProtobufCBuffer.js
diff --git a/html/struct__ProtobufCBufferSimple.html b/struct__ProtobufCBufferSimple.html
index 4b5e6e686..4b5e6e686 100644
--- a/html/struct__ProtobufCBufferSimple.html
+++ b/struct__ProtobufCBufferSimple.html
diff --git a/html/struct__ProtobufCBufferSimple.js b/struct__ProtobufCBufferSimple.js
index be8b099b3..be8b099b3 100644
--- a/html/struct__ProtobufCBufferSimple.js
+++ b/struct__ProtobufCBufferSimple.js
diff --git a/html/struct__ProtobufCEnumDescriptor.html b/struct__ProtobufCEnumDescriptor.html
index 812ab1a7e..812ab1a7e 100644
--- a/html/struct__ProtobufCEnumDescriptor.html
+++ b/struct__ProtobufCEnumDescriptor.html
diff --git a/html/struct__ProtobufCEnumDescriptor.js b/struct__ProtobufCEnumDescriptor.js
index 0a34998b5..0a34998b5 100644
--- a/html/struct__ProtobufCEnumDescriptor.js
+++ b/struct__ProtobufCEnumDescriptor.js
diff --git a/html/struct__ProtobufCEnumValue.html b/struct__ProtobufCEnumValue.html
index 53486b757..53486b757 100644
--- a/html/struct__ProtobufCEnumValue.html
+++ b/struct__ProtobufCEnumValue.html
diff --git a/html/struct__ProtobufCEnumValue.js b/struct__ProtobufCEnumValue.js
index 0df6e3244..0df6e3244 100644
--- a/html/struct__ProtobufCEnumValue.js
+++ b/struct__ProtobufCEnumValue.js
diff --git a/html/struct__ProtobufCEnumValueIndex.html b/struct__ProtobufCEnumValueIndex.html
index 398546475..398546475 100644
--- a/html/struct__ProtobufCEnumValueIndex.html
+++ b/struct__ProtobufCEnumValueIndex.html
diff --git a/html/struct__ProtobufCEnumValueIndex.js b/struct__ProtobufCEnumValueIndex.js
index baad1e6e0..baad1e6e0 100644
--- a/html/struct__ProtobufCEnumValueIndex.js
+++ b/struct__ProtobufCEnumValueIndex.js
diff --git a/html/struct__ProtobufCFieldDescriptor.html b/struct__ProtobufCFieldDescriptor.html
index 673b09634..673b09634 100644
--- a/html/struct__ProtobufCFieldDescriptor.html
+++ b/struct__ProtobufCFieldDescriptor.html
diff --git a/html/struct__ProtobufCFieldDescriptor.js b/struct__ProtobufCFieldDescriptor.js
index baf3e0331..baf3e0331 100644
--- a/html/struct__ProtobufCFieldDescriptor.js
+++ b/struct__ProtobufCFieldDescriptor.js
diff --git a/html/struct__ProtobufCIntRange.html b/struct__ProtobufCIntRange.html
index b0ac87481..b0ac87481 100644
--- a/html/struct__ProtobufCIntRange.html
+++ b/struct__ProtobufCIntRange.html
diff --git a/html/struct__ProtobufCIntRange.js b/struct__ProtobufCIntRange.js
index 937511d53..937511d53 100644
--- a/html/struct__ProtobufCIntRange.js
+++ b/struct__ProtobufCIntRange.js
diff --git a/html/struct__ProtobufCMessage.html b/struct__ProtobufCMessage.html
index d0de08730..d0de08730 100644
--- a/html/struct__ProtobufCMessage.html
+++ b/struct__ProtobufCMessage.html
diff --git a/html/struct__ProtobufCMessage.js b/struct__ProtobufCMessage.js
index aed7e4145..aed7e4145 100644
--- a/html/struct__ProtobufCMessage.js
+++ b/struct__ProtobufCMessage.js
diff --git a/html/struct__ProtobufCMessageDescriptor.html b/struct__ProtobufCMessageDescriptor.html
index d74984646..d74984646 100644
--- a/html/struct__ProtobufCMessageDescriptor.html
+++ b/struct__ProtobufCMessageDescriptor.html
diff --git a/html/struct__ProtobufCMessageDescriptor.js b/struct__ProtobufCMessageDescriptor.js
index 561d0f612..561d0f612 100644
--- a/html/struct__ProtobufCMessageDescriptor.js
+++ b/struct__ProtobufCMessageDescriptor.js
diff --git a/html/struct__ProtobufCMessageUnknownField.html b/struct__ProtobufCMessageUnknownField.html
index 4dddbec74..4dddbec74 100644
--- a/html/struct__ProtobufCMessageUnknownField.html
+++ b/struct__ProtobufCMessageUnknownField.html
diff --git a/html/struct__ProtobufCMessageUnknownField.js b/struct__ProtobufCMessageUnknownField.js
index 8b4df5c21..8b4df5c21 100644
--- a/html/struct__ProtobufCMessageUnknownField.js
+++ b/struct__ProtobufCMessageUnknownField.js
diff --git a/html/struct__ProtobufCMethodDescriptor.html b/struct__ProtobufCMethodDescriptor.html
index b7fba0fd0..b7fba0fd0 100644
--- a/html/struct__ProtobufCMethodDescriptor.html
+++ b/struct__ProtobufCMethodDescriptor.html
diff --git a/html/struct__ProtobufCMethodDescriptor.js b/struct__ProtobufCMethodDescriptor.js
index 0210959fa..0210959fa 100644
--- a/html/struct__ProtobufCMethodDescriptor.js
+++ b/struct__ProtobufCMethodDescriptor.js
diff --git a/html/struct__ProtobufCService.html b/struct__ProtobufCService.html
index c8ce4659b..c8ce4659b 100644
--- a/html/struct__ProtobufCService.html
+++ b/struct__ProtobufCService.html
diff --git a/html/struct__ProtobufCService.js b/struct__ProtobufCService.js
index 3062d0ac5..3062d0ac5 100644
--- a/html/struct__ProtobufCService.js
+++ b/struct__ProtobufCService.js
diff --git a/html/struct__ProtobufCServiceDescriptor.html b/struct__ProtobufCServiceDescriptor.html
index a40eaa0d0..a40eaa0d0 100644
--- a/html/struct__ProtobufCServiceDescriptor.html
+++ b/struct__ProtobufCServiceDescriptor.html
diff --git a/html/struct__ProtobufCServiceDescriptor.js b/struct__ProtobufCServiceDescriptor.js
index 802c3426c..802c3426c 100644
--- a/html/struct__ProtobufCServiceDescriptor.js
+++ b/struct__ProtobufCServiceDescriptor.js
diff --git a/html/struct__ScannedMember.html b/struct__ScannedMember.html
index 87f70680c..87f70680c 100644
--- a/html/struct__ScannedMember.html
+++ b/struct__ScannedMember.html
diff --git a/html/struct__ScannedMember.js b/struct__ScannedMember.js
index 8566611bd..8566611bd 100644
--- a/html/struct__ScannedMember.js
+++ b/struct__ScannedMember.js
diff --git a/html/struct__SlabInfo.html b/struct__SlabInfo.html
index 78a62175f..78a62175f 100644
--- a/html/struct__SlabInfo.html
+++ b/struct__SlabInfo.html
diff --git a/html/struct__SlabInfo.js b/struct__SlabInfo.js
index a5d21ce1f..a5d21ce1f 100644
--- a/html/struct__SlabInfo.js
+++ b/struct__SlabInfo.js
diff --git a/html/struct__VIDEO__POWER__MANAGEMENT.html b/struct__VIDEO__POWER__MANAGEMENT.html
index d77132848..d77132848 100644
--- a/html/struct__VIDEO__POWER__MANAGEMENT.html
+++ b/struct__VIDEO__POWER__MANAGEMENT.html
diff --git a/html/struct__VIDEO__POWER__MANAGEMENT.js b/struct__VIDEO__POWER__MANAGEMENT.js
index d06ecb2a2..d06ecb2a2 100644
--- a/html/struct__VIDEO__POWER__MANAGEMENT.js
+++ b/struct__VIDEO__POWER__MANAGEMENT.js
diff --git a/html/struct__finddata__t.html b/struct__finddata__t.html
index cd770b3a9..cd770b3a9 100644
--- a/html/struct__finddata__t.html
+++ b/struct__finddata__t.html
diff --git a/html/struct__finddata__t.js b/struct__finddata__t.js
index 4c7633149..4c7633149 100644
--- a/html/struct__finddata__t.js
+++ b/struct__finddata__t.js
diff --git a/html/struct__finddatai64__t.html b/struct__finddatai64__t.html
index 50b06ca44..50b06ca44 100644
--- a/html/struct__finddatai64__t.html
+++ b/struct__finddatai64__t.html
diff --git a/html/struct__finddatai64__t.js b/struct__finddatai64__t.js
index 5df85be35..5df85be35 100644
--- a/html/struct__finddatai64__t.js
+++ b/struct__finddatai64__t.js
diff --git a/html/struct__stat.html b/struct__stat.html
index 4066367bb..4066367bb 100644
--- a/html/struct__stat.html
+++ b/struct__stat.html
diff --git a/html/struct__stat.js b/struct__stat.js
index bbc949a78..bbc949a78 100644
--- a/html/struct__stat.js
+++ b/struct__stat.js
diff --git a/html/struct__wfinddata__t.html b/struct__wfinddata__t.html
index cbdf3b8f8..cbdf3b8f8 100644
--- a/html/struct__wfinddata__t.html
+++ b/struct__wfinddata__t.html
diff --git a/html/struct__wfinddata__t.js b/struct__wfinddata__t.js
index 2e784ac34..2e784ac34 100644
--- a/html/struct__wfinddata__t.js
+++ b/struct__wfinddata__t.js
diff --git a/html/struct__wfinddatai64__t.html b/struct__wfinddatai64__t.html
index eca30d19e..eca30d19e 100644
--- a/html/struct__wfinddatai64__t.html
+++ b/struct__wfinddatai64__t.html
diff --git a/html/struct__wfinddatai64__t.js b/struct__wfinddatai64__t.js
index 67150308b..67150308b 100644
--- a/html/struct__wfinddatai64__t.js
+++ b/struct__wfinddatai64__t.js
diff --git a/html/structaction__cb__data.html b/structaction__cb__data.html
index 9afbd88a0..9afbd88a0 100644
--- a/html/structaction__cb__data.html
+++ b/structaction__cb__data.html
diff --git a/html/structaction__cb__data.js b/structaction__cb__data.js
index e0eae6383..e0eae6383 100644
--- a/html/structaction__cb__data.js
+++ b/structaction__cb__data.js
diff --git a/html/structalias__map.html b/structalias__map.html
index 00d5e6ac1..00d5e6ac1 100644
--- a/html/structalias__map.html
+++ b/structalias__map.html
diff --git a/html/structalias__map.js b/structalias__map.js
index d47ffa3b0..d47ffa3b0 100644
--- a/html/structalias__map.js
+++ b/structalias__map.js
diff --git a/html/structandroid__search__priv.html b/structandroid__search__priv.html
index aac6f8cb5..aac6f8cb5 100644
--- a/html/structandroid__search__priv.html
+++ b/structandroid__search__priv.html
diff --git a/html/structandroid__search__priv.js b/structandroid__search__priv.js
index a83dcf078..a83dcf078 100644
--- a/html/structandroid__search__priv.js
+++ b/structandroid__search__priv.js
diff --git a/html/structannouncement.html b/structannouncement.html
index 7ec92cf8a..7ec92cf8a 100644
--- a/html/structannouncement.html
+++ b/structannouncement.html
diff --git a/html/structannouncement.js b/structannouncement.js
index 9f77e7ab2..9f77e7ab2 100644
--- a/html/structannouncement.js
+++ b/structannouncement.js
diff --git a/html/structargument.html b/structargument.html
index a2848675e..a2848675e 100644
--- a/html/structargument.html
+++ b/structargument.html
diff --git a/html/structargument.js b/structargument.js
index 4ffafdab9..4ffafdab9 100644
--- a/html/structargument.js
+++ b/structargument.js
diff --git a/html/structarguments.html b/structarguments.html
index 61595dd0f..61595dd0f 100644
--- a/html/structarguments.html
+++ b/structarguments.html
diff --git a/html/structarguments.js b/structarguments.js
index a0c6f399f..a0c6f399f 100644
--- a/html/structarguments.js
+++ b/structarguments.js
diff --git a/html/structassociated__street.html b/structassociated__street.html
index a590c7199..a590c7199 100644
--- a/html/structassociated__street.html
+++ b/structassociated__street.html
diff --git a/html/structassociated__street.js b/structassociated__street.js
index 00dd9c408..00dd9c408 100644
--- a/html/structassociated__street.js
+++ b/structassociated__street.js
diff --git a/html/structattr.html b/structattr.html
index 344f15b9d..344f15b9d 100644
--- a/html/structattr.html
+++ b/structattr.html
diff --git a/html/structattr.js b/structattr.js
index 7d32c21cf..7d32c21cf 100644
--- a/html/structattr.js
+++ b/structattr.js
diff --git a/html/structattrObject.html b/structattrObject.html
index 7889ddff3..7889ddff3 100644
--- a/html/structattrObject.html
+++ b/structattrObject.html
diff --git a/html/structattrObject.js b/structattrObject.js
index b4f58d559..b4f58d559 100644
--- a/html/structattrObject.js
+++ b/structattrObject.js
diff --git a/html/structattr__bin.html b/structattr__bin.html
index 443de5407..443de5407 100644
--- a/html/structattr__bin.html
+++ b/structattr__bin.html
diff --git a/html/structattr__bin.js b/structattr__bin.js
index f68d9bb51..f68d9bb51 100644
--- a/html/structattr__bin.js
+++ b/structattr__bin.js
diff --git a/html/structattr__fixme.html b/structattr__fixme.html
index 72c418424..72c418424 100644
--- a/html/structattr__fixme.html
+++ b/structattr__fixme.html
diff --git a/html/structattr__fixme.js b/structattr__fixme.js
index 6f186d3cf..6f186d3cf 100644
--- a/html/structattr__fixme.js
+++ b/structattr__fixme.js
diff --git a/html/structattr__iter.html b/structattr__iter.html
index 02537532b..02537532b 100644
--- a/html/structattr__iter.html
+++ b/structattr__iter.html
diff --git a/html/structattr__iter.js b/structattr__iter.js
index 04542aab5..04542aab5 100644
--- a/html/structattr__iter.js
+++ b/structattr__iter.js
diff --git a/html/structattr__mapping.html b/structattr__mapping.html
index a11455a3a..a11455a3a 100644
--- a/html/structattr__mapping.html
+++ b/structattr__mapping.html
diff --git a/html/structattr__mapping.js b/structattr__mapping.js
index 7aa05412d..7aa05412d 100644
--- a/html/structattr__mapping.js
+++ b/structattr__mapping.js
diff --git a/html/structattr__name.html b/structattr__name.html
index 3040fef03..3040fef03 100644
--- a/html/structattr__name.html
+++ b/structattr__name.html
diff --git a/html/structattr__name.js b/structattr__name.js
index 082ff4c31..082ff4c31 100644
--- a/html/structattr__name.js
+++ b/structattr__name.js
diff --git a/html/structaux__tile.html b/structaux__tile.html
index d3006d028..d3006d028 100644
--- a/html/structaux__tile.html
+++ b/structaux__tile.html
diff --git a/html/structaux__tile.js b/structaux__tile.js
index 87a31a9d8..87a31a9d8 100644
--- a/html/structaux__tile.js
+++ b/structaux__tile.js
diff --git a/html/structauxmap.html b/structauxmap.html
index 4873b9d9e..4873b9d9e 100644
--- a/html/structauxmap.html
+++ b/structauxmap.html
diff --git a/html/structauxmap.js b/structauxmap.js
index ed4cd9e3d..ed4cd9e3d 100644
--- a/html/structauxmap.js
+++ b/structauxmap.js
diff --git a/html/structbinding.html b/structbinding.html
index 3e8939897..3e8939897 100644
--- a/html/structbinding.html
+++ b/structbinding.html
diff --git a/html/structbinding.js b/structbinding.js
index cff811a9c..cff811a9c 100644
--- a/html/structbinding.js
+++ b/structbinding.js
diff --git a/html/structbinfile__hash__entry.html b/structbinfile__hash__entry.html
index 0afb0d45a..0afb0d45a 100644
--- a/html/structbinfile__hash__entry.html
+++ b/structbinfile__hash__entry.html
diff --git a/html/structbinfile__hash__entry.js b/structbinfile__hash__entry.js
index e967f7889..e967f7889 100644
--- a/html/structbinfile__hash__entry.js
+++ b/structbinfile__hash__entry.js
diff --git a/html/structblock.html b/structblock.html
index 715b9d029..715b9d029 100644
--- a/html/structblock.html
+++ b/structblock.html
diff --git a/html/structblock.js b/structblock.js
index 97e6fb49f..97e6fb49f 100644
--- a/html/structblock.js
+++ b/structblock.js
diff --git a/html/structblock__bt__priv.html b/structblock__bt__priv.html
index 8a7f74b79..8a7f74b79 100644
--- a/html/structblock__bt__priv.html
+++ b/structblock__bt__priv.html
diff --git a/html/structblock__bt__priv.js b/structblock__bt__priv.js
index 65c19a224..65c19a224 100644
--- a/html/structblock__bt__priv.js
+++ b/structblock__bt__priv.js
diff --git a/html/structblock__data.html b/structblock__data.html
index 7c31ffb80..7c31ffb80 100644
--- a/html/structblock__data.html
+++ b/structblock__data.html
diff --git a/html/structblock__data.js b/structblock__data.js
index ba9a9da9d..ba9a9da9d 100644
--- a/html/structblock__data.js
+++ b/structblock__data.js
diff --git a/html/structblock__index.html b/structblock__index.html
index f17d2f872..f17d2f872 100644
--- a/html/structblock__index.html
+++ b/structblock__index.html
diff --git a/html/structblock__index.js b/structblock__index.js
index 156a63c54..156a63c54 100644
--- a/html/structblock__index.js
+++ b/structblock__index.js
diff --git a/html/structblock__index__item.html b/structblock__index__item.html
index 4df8c04d1..4df8c04d1 100644
--- a/html/structblock__index__item.html
+++ b/structblock__index__item.html
diff --git a/html/structblock__index__item.js b/structblock__index__item.js
index 0432999e5..0432999e5 100644
--- a/html/structblock__index__item.js
+++ b/structblock__index__item.js
diff --git a/html/structblock__list.html b/structblock__list.html
index 435958e13..435958e13 100644
--- a/html/structblock__list.html
+++ b/structblock__list.html
diff --git a/html/structblock__list.js b/structblock__list.js
index 809110eaf..809110eaf 100644
--- a/html/structblock__list.js
+++ b/structblock__list.js
diff --git a/html/structblock__offset.html b/structblock__offset.html
index 9e649759e..9e649759e 100644
--- a/html/structblock__offset.html
+++ b/structblock__offset.html
diff --git a/html/structblock__offset.js b/structblock__offset.js
index 671a31f13..671a31f13 100644
--- a/html/structblock__offset.js
+++ b/structblock__offset.js
diff --git a/html/structblock__priv.html b/structblock__priv.html
index c64e4b0bb..c64e4b0bb 100644
--- a/html/structblock__priv.html
+++ b/structblock__priv.html
diff --git a/html/structblock__priv.js b/structblock__priv.js
index 13c2c57a5..13c2c57a5 100644
--- a/html/structblock__priv.js
+++ b/structblock__priv.js
diff --git a/html/structbookmark__item__priv.html b/structbookmark__item__priv.html
index 38ef83471..38ef83471 100644
--- a/html/structbookmark__item__priv.html
+++ b/structbookmark__item__priv.html
diff --git a/html/structbookmark__item__priv.js b/structbookmark__item__priv.js
index 02b45d3a5..02b45d3a5 100644
--- a/html/structbookmark__item__priv.js
+++ b/structbookmark__item__priv.js
diff --git a/html/structbookmarks.html b/structbookmarks.html
index 3723f32b3..3723f32b3 100644
--- a/html/structbookmarks.html
+++ b/structbookmarks.html
diff --git a/html/structbookmarks.js b/structbookmarks.js
index 1dd299ee0..1dd299ee0 100644
--- a/html/structbookmarks.js
+++ b/structbookmarks.js
diff --git a/html/structboundary.html b/structboundary.html
index 215152307..215152307 100644
--- a/html/structboundary.html
+++ b/structboundary.html
diff --git a/html/structboundary.js b/structboundary.js
index 5cd257182..5cd257182 100644
--- a/html/structboundary.js
+++ b/structboundary.js
diff --git a/html/structbuffer.html b/structbuffer.html
index e966cba70..e966cba70 100644
--- a/html/structbuffer.html
+++ b/structbuffer.html
diff --git a/html/structbuffer.js b/structbuffer.js
index 526d3dd10..526d3dd10 100644
--- a/html/structbuffer.js
+++ b/structbuffer.js
diff --git a/html/structcJSON.html b/structcJSON.html
index dd8ef1adb..dd8ef1adb 100644
--- a/html/structcJSON.html
+++ b/structcJSON.html
diff --git a/html/structcJSON.js b/structcJSON.js
index e4f90675a..e4f90675a 100644
--- a/html/structcJSON.js
+++ b/structcJSON.js
diff --git a/html/structcJSON__Hooks.html b/structcJSON__Hooks.html
index dbd0962fd..dbd0962fd 100644
--- a/html/structcJSON__Hooks.html
+++ b/structcJSON__Hooks.html
diff --git a/html/structcJSON__Hooks.js b/structcJSON__Hooks.js
index d199b1766..d199b1766 100644
--- a/html/structcJSON__Hooks.js
+++ b/structcJSON__Hooks.js
diff --git a/html/structcache.html b/structcache.html
index 28bb7781c..28bb7781c 100644
--- a/html/structcache.html
+++ b/structcache.html
diff --git a/html/structcache.js b/structcache.js
index c748e4cb2..c748e4cb2 100644
--- a/html/structcache.js
+++ b/structcache.js
diff --git a/html/structcache__entry.html b/structcache__entry.html
index 7399794ae..7399794ae 100644
--- a/html/structcache__entry.html
+++ b/structcache__entry.html
diff --git a/html/structcache__entry.js b/structcache__entry.js
index 6bb6ccfcd..6bb6ccfcd 100644
--- a/html/structcache__entry.js
+++ b/structcache__entry.js
diff --git a/html/structcache__entry__list.html b/structcache__entry__list.html
index f7090b64a..f7090b64a 100644
--- a/html/structcache__entry__list.html
+++ b/structcache__entry__list.html
diff --git a/html/structcache__entry__list.js b/structcache__entry__list.js
index fefc977ce..fefc977ce 100644
--- a/html/structcache__entry__list.js
+++ b/structcache__entry__list.js
diff --git a/html/structcallback.html b/structcallback.html
index 12a5e20a4..12a5e20a4 100644
--- a/html/structcallback.html
+++ b/structcallback.html
diff --git a/html/structcallback.js b/structcallback.js
index 0826695e8..0826695e8 100644
--- a/html/structcallback.js
+++ b/structcallback.js
diff --git a/html/structcallback__list.html b/structcallback__list.html
index b119e48df..b119e48df 100644
--- a/html/structcallback__list.html
+++ b/structcallback__list.html
diff --git a/html/structcallback__list.js b/structcallback__list.js
index 984593bdd..984593bdd 100644
--- a/html/structcallback__list.js
+++ b/structcallback__list.js
diff --git a/html/structcb__hw__state__trail.html b/structcb__hw__state__trail.html
index 9fd173c0b..9fd173c0b 100644
--- a/html/structcb__hw__state__trail.html
+++ b/structcb__hw__state__trail.html
diff --git a/html/structcb__hw__state__trail.js b/structcb__hw__state__trail.js
index 9d97739bb..9d97739bb 100644
--- a/html/structcb__hw__state__trail.js
+++ b/structcb__hw__state__trail.js
diff --git a/html/structcdf__data.html b/structcdf__data.html
index 0d7dd4a3d..0d7dd4a3d 100644
--- a/html/structcdf__data.html
+++ b/structcdf__data.html
diff --git a/html/structcdf__data.js b/structcdf__data.js
index 3a51bedbf..3a51bedbf 100644
--- a/html/structcdf__data.js
+++ b/structcdf__data.js
diff --git a/html/structcdf__speed.html b/structcdf__speed.html
index 496ddedc0..496ddedc0 100644
--- a/html/structcdf__speed.html
+++ b/structcdf__speed.html
diff --git a/html/structcdf__speed.js b/structcdf__speed.js
index 82f40af4c..82f40af4c 100644
--- a/html/structcdf__speed.js
+++ b/structcdf__speed.js
diff --git a/html/structch__edge.html b/structch__edge.html
index ad3b47819..ad3b47819 100644
--- a/html/structch__edge.html
+++ b/structch__edge.html
diff --git a/html/structch__edge.js b/structch__edge.js
index 6657df4df..6657df4df 100644
--- a/html/structch__edge.js
+++ b/structch__edge.js
diff --git a/html/structchar__directive.html b/structchar__directive.html
index b3015ff81..b3015ff81 100644
--- a/html/structchar__directive.html
+++ b/structchar__directive.html
diff --git a/html/structchar__directive.js b/structchar__directive.js
index d366da5d7..d366da5d7 100644
--- a/html/structchar__directive.js
+++ b/structchar__directive.js
diff --git a/html/structchar__directives.html b/structchar__directives.html
index 4dbb0c729..4dbb0c729 100644
--- a/html/structchar__directives.html
+++ b/structchar__directives.html
diff --git a/html/structchar__directives.js b/structchar__directives.js
index e25be8382..e25be8382 100644
--- a/html/structchar__directives.js
+++ b/structchar__directives.js
diff --git a/html/structcircle.html b/structcircle.html
index 0cced6ab5..0cced6ab5 100644
--- a/html/structcircle.html
+++ b/structcircle.html
diff --git a/html/structcircle.js b/structcircle.js
index d1a6399c2..d1a6399c2 100644
--- a/html/structcircle.js
+++ b/structcircle.js
diff --git a/html/structcmd__interface.html b/structcmd__interface.html
index daf5f9f9b..daf5f9f9b 100644
--- a/html/structcmd__interface.html
+++ b/structcmd__interface.html
diff --git a/html/structcmd__interface.js b/structcmd__interface.js
index 0fd24b456..0fd24b456 100644
--- a/html/structcmd__interface.js
+++ b/structcmd__interface.js
diff --git a/html/structcoastline__tile.html b/structcoastline__tile.html
index e4134c831..e4134c831 100644
--- a/html/structcoastline__tile.html
+++ b/structcoastline__tile.html
diff --git a/html/structcoastline__tile.js b/structcoastline__tile.js
index 6b6e78877..6b6e78877 100644
--- a/html/structcoastline__tile.js
+++ b/structcoastline__tile.js
diff --git a/html/structcoastline__tile__data.html b/structcoastline__tile__data.html
index edb4f9850..edb4f9850 100644
--- a/html/structcoastline__tile__data.html
+++ b/structcoastline__tile__data.html
diff --git a/html/structcoastline__tile__data.js b/structcoastline__tile__data.js
index e38db8964..e38db8964 100644
--- a/html/structcoastline__tile__data.js
+++ b/structcoastline__tile__data.js
diff --git a/html/structcode.html b/structcode.html
index 8b4dd3e43..8b4dd3e43 100644
--- a/html/structcode.html
+++ b/structcode.html
diff --git a/html/structcode.js b/structcode.js
index 91c46b351..91c46b351 100644
--- a/html/structcode.js
+++ b/structcode.js
diff --git a/html/structcolor.html b/structcolor.html
index 8e4392d18..8e4392d18 100644
--- a/html/structcolor.html
+++ b/structcolor.html
diff --git a/html/structcolor.js b/structcolor.js
index ddf388125..ddf388125 100644
--- a/html/structcolor.js
+++ b/structcolor.js
diff --git a/html/structcommand__saved.html b/structcommand__saved.html
index f651b40ee..f651b40ee 100644
--- a/html/structcommand__saved.html
+++ b/structcommand__saved.html
diff --git a/html/structcommand__saved.js b/structcommand__saved.js
index a196652fd..a196652fd 100644
--- a/html/structcommand__saved.js
+++ b/structcommand__saved.js
diff --git a/html/structcommand__saved__cb.html b/structcommand__saved__cb.html
index 9aed1a58f..9aed1a58f 100644
--- a/html/structcommand__saved__cb.html
+++ b/structcommand__saved__cb.html
diff --git a/html/structcommand__saved__cb.js b/structcommand__saved__cb.js
index db77c3ff6..db77c3ff6 100644
--- a/html/structcommand__saved__cb.js
+++ b/structcommand__saved__cb.js
diff --git a/html/structcommand__table.html b/structcommand__table.html
index c901386a0..c901386a0 100644
--- a/html/structcommand__table.html
+++ b/structcommand__table.html
diff --git a/html/structcommand__table.js b/structcommand__table.js
index 9da33c7cf..9da33c7cf 100644
--- a/html/structcommand__table.js
+++ b/structcommand__table.js
diff --git a/html/structcompass.html b/structcompass.html
index b94b71673..b94b71673 100644
--- a/html/structcompass.html
+++ b/structcompass.html
diff --git a/html/structcompass.js b/structcompass.js
index cb6cd1b68..cb6cd1b68 100644
--- a/html/structcompass.js
+++ b/structcompass.js
diff --git a/html/structconfig.html b/structconfig.html
index 3332289ca..3332289ca 100644
--- a/html/structconfig.html
+++ b/structconfig.html
diff --git a/html/structconfigObject.html b/structconfigObject.html
index 7fffe2593..7fffe2593 100644
--- a/html/structconfigObject.html
+++ b/structconfigObject.html
diff --git a/html/structcontext.html b/structcontext.html
index 7fbd400df..7fbd400df 100644
--- a/html/structcontext.html
+++ b/structcontext.html
diff --git a/html/structcontext.js b/structcontext.js
index ebc03bbef..ebc03bbef 100644
--- a/html/structcontext.js
+++ b/structcontext.js
diff --git a/html/structcontour.html b/structcontour.html
index e3ab49abc..e3ab49abc 100644
--- a/html/structcontour.html
+++ b/structcontour.html
diff --git a/html/structcontour.js b/structcontour.js
index 84dce573c..84dce573c 100644
--- a/html/structcontour.js
+++ b/structcontour.js
diff --git a/html/structcoord.html b/structcoord.html
index 6253c4caf..6253c4caf 100644
--- a/html/structcoord.html
+++ b/structcoord.html
diff --git a/html/structcoord.js b/structcoord.js
index 0e17f971c..0e17f971c 100644
--- a/html/structcoord.js
+++ b/structcoord.js
diff --git a/html/structcoordObject.html b/structcoordObject.html
index 8dfea1a02..8dfea1a02 100644
--- a/html/structcoordObject.html
+++ b/structcoordObject.html
diff --git a/html/structcoordObject.js b/structcoordObject.js
index 8e1643e49..8e1643e49 100644
--- a/html/structcoordObject.js
+++ b/structcoordObject.js
diff --git a/html/structcoord__3d.html b/structcoord__3d.html
index 48ebf30e6..48ebf30e6 100644
--- a/html/structcoord__3d.html
+++ b/structcoord__3d.html
diff --git a/html/structcoord__3d.js b/structcoord__3d.js
index 348cf3eba..348cf3eba 100644
--- a/html/structcoord__3d.js
+++ b/structcoord__3d.js
diff --git a/html/structcoord__d.html b/structcoord__d.html
index d830ae27e..d830ae27e 100644
--- a/html/structcoord__d.html
+++ b/structcoord__d.html
diff --git a/html/structcoord__d.js b/structcoord__d.js
index 411c346eb..411c346eb 100644
--- a/html/structcoord__d.js
+++ b/structcoord__d.js
diff --git a/html/structcoord__geo.html b/structcoord__geo.html
index 643de4f17..643de4f17 100644
--- a/html/structcoord__geo.html
+++ b/structcoord__geo.html
diff --git a/html/structcoord__geo.js b/structcoord__geo.js
index 3b656845f..3b656845f 100644
--- a/html/structcoord__geo.js
+++ b/structcoord__geo.js
diff --git a/html/structcoord__geo__cart.html b/structcoord__geo__cart.html
index 56d330738..56d330738 100644
--- a/html/structcoord__geo__cart.html
+++ b/structcoord__geo__cart.html
diff --git a/html/structcoord__geo__cart.js b/structcoord__geo__cart.js
index b2bb5548b..b2bb5548b 100644
--- a/html/structcoord__geo__cart.js
+++ b/structcoord__geo__cart.js
diff --git a/html/structcoord__rect.html b/structcoord__rect.html
index 8ac30e097..8ac30e097 100644
--- a/html/structcoord__rect.html
+++ b/structcoord__rect.html
diff --git a/html/structcoord__rect.js b/structcoord__rect.js
index da84df2ad..da84df2ad 100644
--- a/html/structcoord__rect.js
+++ b/structcoord__rect.js
diff --git a/html/structcoord__rectObject.html b/structcoord__rectObject.html
index 9a470c5a7..9a470c5a7 100644
--- a/html/structcoord__rectObject.html
+++ b/structcoord__rectObject.html
diff --git a/html/structcoord__rectObject.js b/structcoord__rectObject.js
index ebe78499a..ebe78499a 100644
--- a/html/structcoord__rectObject.js
+++ b/structcoord__rectObject.js
diff --git a/html/structcountry.html b/structcountry.html
index e54e3556a..e54e3556a 100644
--- a/html/structcountry.html
+++ b/structcountry.html
diff --git a/html/structcountry.js b/structcountry.js
index 3830a0fc5..3830a0fc5 100644
--- a/html/structcountry.js
+++ b/structcountry.js
diff --git a/html/structcountry__search.html b/structcountry__search.html
index a305b5dd7..a305b5dd7 100644
--- a/html/structcountry__search.html
+++ b/structcountry__search.html
diff --git a/html/structcountry__search.js b/structcountry__search.js
index 2a70efb77..2a70efb77 100644
--- a/html/structcountry__search.js
+++ b/structcountry__search.js
diff --git a/html/structcountry__table.html b/structcountry__table.html
index 08ae2fea9..08ae2fea9 100644
--- a/html/structcountry__table.html
+++ b/structcountry__table.html
diff --git a/html/structcountry__table.js b/structcountry__table.js
index 717dd1011..717dd1011 100644
--- a/html/structcountry__table.js
+++ b/structcountry__table.js
diff --git a/html/structcursor.html b/structcursor.html
index 093d7de4b..093d7de4b 100644
--- a/html/structcursor.html
+++ b/structcursor.html
diff --git a/html/structcursor.js b/structcursor.js
index 875d71365..875d71365 100644
--- a/html/structcursor.js
+++ b/structcursor.js
diff --git a/html/structdata__window.html b/structdata__window.html
index 2fb29f3fa..2fb29f3fa 100644
--- a/html/structdata__window.html
+++ b/structdata__window.html
diff --git a/html/structdata__window.js b/structdata__window.js
index 0afb939b8..0afb939b8 100644
--- a/html/structdata__window.js
+++ b/structdata__window.js
diff --git a/html/structdatawindow.html b/structdatawindow.html
index abf8bc0e7..abf8bc0e7 100644
--- a/html/structdatawindow.html
+++ b/structdatawindow.html
diff --git a/html/structdatawindow.js b/structdatawindow.js
index 7a6c30744..7a6c30744 100644
--- a/html/structdatawindow.js
+++ b/structdatawindow.js
diff --git a/html/structdatawindow__methods.html b/structdatawindow__methods.html
index d7db5fc3b..d7db5fc3b 100644
--- a/html/structdatawindow__methods.html
+++ b/structdatawindow__methods.html
diff --git a/html/structdatawindow__methods.js b/structdatawindow__methods.js
index 1b328216a..1b328216a 100644
--- a/html/structdatawindow__methods.js
+++ b/structdatawindow__methods.js
diff --git a/html/structdatawindow__priv.html b/structdatawindow__priv.html
index c4cf9e66f..c4cf9e66f 100644
--- a/html/structdatawindow__priv.html
+++ b/structdatawindow__priv.html
diff --git a/html/structdatawindow__priv.js b/structdatawindow__priv.js
index a3a2e411c..a3a2e411c 100644
--- a/html/structdatawindow__priv.js
+++ b/structdatawindow__priv.js
diff --git a/html/structdb__config.html b/structdb__config.html
index acdf1dd51..acdf1dd51 100644
--- a/html/structdb__config.html
+++ b/structdb__config.html
diff --git a/html/structdb__config.js b/structdb__config.js
index 05ef0156f..05ef0156f 100644
--- a/html/structdb__config.js
+++ b/structdb__config.js
diff --git a/html/structdbus__callback.html b/structdbus__callback.html
index d8d242664..d8d242664 100644
--- a/html/structdbus__callback.html
+++ b/structdbus__callback.html
diff --git a/html/structdbus__callback.js b/structdbus__callback.js
index 7394a42a2..7394a42a2 100644
--- a/html/structdbus__callback.js
+++ b/structdbus__callback.js
diff --git a/html/structdbus__method.html b/structdbus__method.html
index 0fc2df8d7..0fc2df8d7 100644
--- a/html/structdbus__method.html
+++ b/structdbus__method.html
diff --git a/html/structdbus__method.js b/structdbus__method.js
index 61bbdbee9..61bbdbee9 100644
--- a/html/structdbus__method.js
+++ b/structdbus__method.js
diff --git a/html/structdefault__flags.html b/structdefault__flags.html
index e6569cbe4..e6569cbe4 100644
--- a/html/structdefault__flags.html
+++ b/structdefault__flags.html
diff --git a/html/structdefault__flags.js b/structdefault__flags.js
index 1bf48d5fa..1bf48d5fa 100644
--- a/html/structdefault__flags.js
+++ b/structdefault__flags.js
diff --git a/html/structdiagram__point.html b/structdiagram__point.html
index e11949f71..e11949f71 100644
--- a/html/structdiagram__point.html
+++ b/structdiagram__point.html
diff --git a/html/structdiagram__point.js b/structdiagram__point.js
index ec1f8168f..ec1f8168f 100644
--- a/html/structdiagram__point.js
+++ b/structdiagram__point.js
diff --git a/html/structdisplay__context.html b/structdisplay__context.html
index a821034c2..a821034c2 100644
--- a/html/structdisplay__context.html
+++ b/structdisplay__context.html
diff --git a/html/structdisplay__context.js b/structdisplay__context.js
index 126e37065..126e37065 100644
--- a/html/structdisplay__context.js
+++ b/structdisplay__context.js
diff --git a/html/structdisplayitem.html b/structdisplayitem.html
index c71f783dc..c71f783dc 100644
--- a/html/structdisplayitem.html
+++ b/structdisplayitem.html
diff --git a/html/structdisplayitem.js b/structdisplayitem.js
index 7d825265a..7d825265a 100644
--- a/html/structdisplayitem.js
+++ b/structdisplayitem.js
diff --git a/html/structdisplaylist.html b/structdisplaylist.html
index 56d4ba6e0..56d4ba6e0 100644
--- a/html/structdisplaylist.html
+++ b/structdisplaylist.html
diff --git a/html/structdisplaylist.js b/structdisplaylist.js
index d6d78311c..d6d78311c 100644
--- a/html/structdisplaylist.js
+++ b/structdisplaylist.js
diff --git a/html/structdisplaylist__handle.html b/structdisplaylist__handle.html
index 9f9027512..9f9027512 100644
--- a/html/structdisplaylist__handle.html
+++ b/structdisplaylist__handle.html
diff --git a/html/structdisplaylist__handle.js b/structdisplaylist__handle.js
index 9e1815828..9e1815828 100644
--- a/html/structdisplaylist__handle.js
+++ b/structdisplaylist__handle.js
diff --git a/html/structdisplaylist__icon__cache.html b/structdisplaylist__icon__cache.html
index 8d900a58c..8d900a58c 100644
--- a/html/structdisplaylist__icon__cache.html
+++ b/structdisplaylist__icon__cache.html
diff --git a/html/structdisplaylist__icon__cache.js b/structdisplaylist__icon__cache.js
index 4d634a591..4d634a591 100644
--- a/html/structdisplaylist__icon__cache.js
+++ b/structdisplaylist__icon__cache.js
diff --git a/html/structdiv__flags__map.html b/structdiv__flags__map.html
index 350110c24..350110c24 100644
--- a/html/structdiv__flags__map.html
+++ b/structdiv__flags__map.html
diff --git a/html/structdiv__flags__map.js b/structdiv__flags__map.js
index bf368327d..bf368327d 100644
--- a/html/structdiv__flags__map.js
+++ b/structdiv__flags__map.js
diff --git a/html/structdraw__info.html b/structdraw__info.html
index 7ea4d6e70..7ea4d6e70 100644
--- a/html/structdraw__info.html
+++ b/structdraw__info.html
diff --git a/html/structdraw__info.js b/structdraw__info.js
index 9f58bb40e..9f58bb40e 100644
--- a/html/structdraw__info.js
+++ b/structdraw__info.js
diff --git a/html/structdraw__polyline__context.html b/structdraw__polyline__context.html
index b3186bc91..b3186bc91 100644
--- a/html/structdraw__polyline__context.html
+++ b/structdraw__polyline__context.html
diff --git a/html/structdraw__polyline__context.js b/structdraw__polyline__context.js
index 5b367998f..5b367998f 100644
--- a/html/structdraw__polyline__context.js
+++ b/structdraw__polyline__context.js
diff --git a/html/structdraw__polyline__shape.html b/structdraw__polyline__shape.html
index f5fda8821..f5fda8821 100644
--- a/html/structdraw__polyline__shape.html
+++ b/structdraw__polyline__shape.html
diff --git a/html/structdraw__polyline__shape.js b/structdraw__polyline__shape.js
index 3053d666f..3053d666f 100644
--- a/html/structdraw__polyline__shape.js
+++ b/structdraw__polyline__shape.js
diff --git a/html/structduplicate.html b/structduplicate.html
index 3351e8344..3351e8344 100644
--- a/html/structduplicate.html
+++ b/structduplicate.html
diff --git a/html/structduplicate.js b/structduplicate.js
index 7b547b1d7..7b547b1d7 100644
--- a/html/structduplicate.js
+++ b/structduplicate.js
diff --git a/html/structedge.html b/structedge.html
index 7b7215ee5..7b7215ee5 100644
--- a/html/structedge.html
+++ b/structedge.html
diff --git a/html/structedge.js b/structedge.js
index d2128f9df..d2128f9df 100644
--- a/html/structedge.js
+++ b/structedge.js
diff --git a/html/structedge__hash__item.html b/structedge__hash__item.html
index 372e2fd70..372e2fd70 100644
--- a/html/structedge__hash__item.html
+++ b/structedge__hash__item.html
diff --git a/html/structedge__hash__item.js b/structedge__hash__item.js
index e9f36c547..e9f36c547 100644
--- a/html/structedge__hash__item.js
+++ b/structedge__hash__item.js
diff --git a/html/structelement.html b/structelement.html
index edbabb388..edbabb388 100644
--- a/html/structelement.html
+++ b/structelement.html
diff --git a/html/structelement.js b/structelement.js
index 9e124fb20..9e124fb20 100644
--- a/html/structelement.js
+++ b/structelement.js
diff --git a/html/structelement__func.html b/structelement__func.html
index ba1c581a3..ba1c581a3 100644
--- a/html/structelement__func.html
+++ b/structelement__func.html
diff --git a/html/structelement__func.js b/structelement__func.js
index 196c93070..196c93070 100644
--- a/html/structelement__func.js
+++ b/structelement__func.js
diff --git a/html/structespeak__EVENT.html b/structespeak__EVENT.html
index f7fffee18..f7fffee18 100644
--- a/html/structespeak__EVENT.html
+++ b/structespeak__EVENT.html
diff --git a/html/structespeak__EVENT.js b/structespeak__EVENT.js
index 1a5e3ab2a..1a5e3ab2a 100644
--- a/html/structespeak__EVENT.js
+++ b/structespeak__EVENT.js
diff --git a/html/structespeak__VOICE.html b/structespeak__VOICE.html
index f9b4ef826..f9b4ef826 100644
--- a/html/structespeak__VOICE.html
+++ b/structespeak__VOICE.html
diff --git a/html/structespeak__VOICE.js b/structespeak__VOICE.js
index 4c49bb100..4c49bb100 100644
--- a/html/structespeak__VOICE.js
+++ b/structespeak__VOICE.js
diff --git a/html/structevent__idle.html b/structevent__idle.html
index 054833d6c..054833d6c 100644
--- a/html/structevent__idle.html
+++ b/structevent__idle.html
diff --git a/html/structevent__idle.js b/structevent__idle.js
index 9680d379c..9680d379c 100644
--- a/html/structevent__idle.js
+++ b/structevent__idle.js
diff --git a/html/structevent__methods.html b/structevent__methods.html
index a7c9693c6..a7c9693c6 100644
--- a/html/structevent__methods.html
+++ b/structevent__methods.html
diff --git a/html/structevent__methods.js b/structevent__methods.js
index 2b7c5299e..2b7c5299e 100644
--- a/html/structevent__methods.js
+++ b/structevent__methods.js
diff --git a/html/structevent__priv.html b/structevent__priv.html
index 2cbf1cb94..2cbf1cb94 100644
--- a/html/structevent__priv.html
+++ b/structevent__priv.html
diff --git a/html/structevent__priv.js b/structevent__priv.js
index ec46e3672..ec46e3672 100644
--- a/html/structevent__priv.js
+++ b/structevent__priv.js
diff --git a/html/structevent__timeout.html b/structevent__timeout.html
index 491651f79..491651f79 100644
--- a/html/structevent__timeout.html
+++ b/structevent__timeout.html
diff --git a/html/structevent__timeout.js b/structevent__timeout.js
index bd12b2ed9..bd12b2ed9 100644
--- a/html/structevent__timeout.js
+++ b/structevent__timeout.js
diff --git a/html/structevent__watch.html b/structevent__watch.html
index 39fcd9874..39fcd9874 100644
--- a/html/structevent__watch.html
+++ b/structevent__watch.html
diff --git a/html/structevent__watch.js b/structevent__watch.js
index ec31ef264..ec31ef264 100644
--- a/html/structevent__watch.js
+++ b/structevent__watch.js
diff --git a/html/structexpression.html b/structexpression.html
index e11f4d322..e11f4d322 100644
--- a/html/structexpression.html
+++ b/structexpression.html
diff --git a/html/structexpression.js b/structexpression.js
index 7a5e32a16..7a5e32a16 100644
--- a/html/structexpression.js
+++ b/structexpression.js
diff --git a/html/structezxml.html b/structezxml.html
index dc29132c7..dc29132c7 100644
--- a/html/structezxml.html
+++ b/structezxml.html
diff --git a/html/structezxml.js b/structezxml.js
index d060c5457..d060c5457 100644
--- a/html/structezxml.js
+++ b/structezxml.js
diff --git a/html/structezxml__root.html b/structezxml__root.html
index 0d6aff400..0d6aff400 100644
--- a/html/structezxml__root.html
+++ b/structezxml__root.html
diff --git a/html/structezxml__root.js b/structezxml__root.js
index 75c1b71c3..75c1b71c3 100644
--- a/html/structezxml__root.js
+++ b/structezxml__root.js
diff --git a/html/structfat__block.html b/structfat__block.html
index 45923d3f5..45923d3f5 100644
--- a/html/structfat__block.html
+++ b/structfat__block.html
diff --git a/html/structfat__block.js b/structfat__block.js
index cb6531623..cb6531623 100644
--- a/html/structfat__block.js
+++ b/structfat__block.js
diff --git a/html/structfibheap.html b/structfibheap.html
index 915f5d04a..915f5d04a 100644
--- a/html/structfibheap.html
+++ b/structfibheap.html
diff --git a/html/structfibheap.js b/structfibheap.js
index a64125abf..a64125abf 100644
--- a/html/structfibheap.js
+++ b/structfibheap.js
diff --git a/html/structfibheap__el.html b/structfibheap__el.html
index 8977abfb3..8977abfb3 100644
--- a/html/structfibheap__el.html
+++ b/structfibheap__el.html
diff --git a/html/structfibheap__el.js b/structfibheap__el.js
index e7407d6b1..e7407d6b1 100644
--- a/html/structfibheap__el.js
+++ b/structfibheap__el.js
diff --git a/html/structfile.html b/structfile.html
index 38abd633a..38abd633a 100644
--- a/html/structfile.html
+++ b/structfile.html
diff --git a/html/structfile.js b/structfile.js
index a56cd1477..a56cd1477 100644
--- a/html/structfile.js
+++ b/structfile.js
diff --git a/html/structfile__cache__id.html b/structfile__cache__id.html
index 2c94a2253..2c94a2253 100644
--- a/html/structfile__cache__id.html
+++ b/structfile__cache__id.html
diff --git a/html/structfile__cache__id.js b/structfile__cache__id.js
index 1e70fbbc7..1e70fbbc7 100644
--- a/html/structfile__cache__id.js
+++ b/structfile__cache__id.js
diff --git a/html/structfile__header.html b/structfile__header.html
index fe112edc2..fe112edc2 100644
--- a/html/structfile__header.html
+++ b/structfile__header.html
diff --git a/html/structfile__header.js b/structfile__header.js
index 8ca0a1e7b..8ca0a1e7b 100644
--- a/html/structfile__header.js
+++ b/structfile__header.js
diff --git a/html/structfile__wordexp.html b/structfile__wordexp.html
index af0aa227b..af0aa227b 100644
--- a/html/structfile__wordexp.html
+++ b/structfile__wordexp.html
diff --git a/html/structfile__wordexp.js b/structfile__wordexp.js
index bac6b7e3e..bac6b7e3e 100644
--- a/html/structfile__wordexp.js
+++ b/structfile__wordexp.js
diff --git a/html/structfiles__relation__processing.html b/structfiles__relation__processing.html
index 0a6263cb2..0a6263cb2 100644
--- a/html/structfiles__relation__processing.html
+++ b/structfiles__relation__processing.html
diff --git a/html/structfiles__relation__processing.js b/structfiles__relation__processing.js
index 2ae532115..2ae532115 100644
--- a/html/structfiles__relation__processing.js
+++ b/structfiles__relation__processing.js
diff --git a/html/structfilter.html b/structfilter.html
index bab505d62..bab505d62 100644
--- a/html/structfilter.html
+++ b/structfilter.html
diff --git a/html/structfilter.js b/structfilter.js
index 46b4a1b40..46b4a1b40 100644
--- a/html/structfilter.js
+++ b/structfilter.js
diff --git a/html/structfilter__entry.html b/structfilter__entry.html
index 130bc06ca..130bc06ca 100644
--- a/html/structfilter__entry.html
+++ b/structfilter__entry.html
diff --git a/html/structfilter__entry.js b/structfilter__entry.js
index 60922c51d..60922c51d 100644
--- a/html/structfilter__entry.js
+++ b/structfilter__entry.js
diff --git a/html/structfont__freetype__font.html b/structfont__freetype__font.html
index 3497b66f2..3497b66f2 100644
--- a/html/structfont__freetype__font.html
+++ b/structfont__freetype__font.html
diff --git a/html/structfont__freetype__font.js b/structfont__freetype__font.js
index 3df2e59d8..3df2e59d8 100644
--- a/html/structfont__freetype__font.js
+++ b/structfont__freetype__font.js
diff --git a/html/structfont__freetype__glyph.html b/structfont__freetype__glyph.html
index 3360d850d..3360d850d 100644
--- a/html/structfont__freetype__glyph.html
+++ b/structfont__freetype__glyph.html
diff --git a/html/structfont__freetype__glyph.js b/structfont__freetype__glyph.js
index 243f4ccd3..243f4ccd3 100644
--- a/html/structfont__freetype__glyph.js
+++ b/structfont__freetype__glyph.js
diff --git a/html/structfont__freetype__methods.html b/structfont__freetype__methods.html
index 4208364bb..4208364bb 100644
--- a/html/structfont__freetype__methods.html
+++ b/structfont__freetype__methods.html
diff --git a/html/structfont__freetype__methods.js b/structfont__freetype__methods.js
index 5069459e2..5069459e2 100644
--- a/html/structfont__freetype__methods.js
+++ b/structfont__freetype__methods.js
diff --git a/html/structfont__freetype__text.html b/structfont__freetype__text.html
index ffcbe3ff9..ffcbe3ff9 100644
--- a/html/structfont__freetype__text.html
+++ b/structfont__freetype__text.html
diff --git a/html/structfont__freetype__text.js b/structfont__freetype__text.js
index ab8d52448..ab8d52448 100644
--- a/html/structfont__freetype__text.js
+++ b/structfont__freetype__text.js
diff --git a/html/structfont__priv.html b/structfont__priv.html
index d40fdba76..d40fdba76 100644
--- a/html/structfont__priv.html
+++ b/structfont__priv.html
diff --git a/html/structfont__priv.js b/structfont__priv.js
index b492072ac..b492072ac 100644
--- a/html/structfont__priv.js
+++ b/structfont__priv.js
diff --git a/html/structform.html b/structform.html
index ded3a5981..ded3a5981 100644
--- a/html/structform.html
+++ b/structform.html
diff --git a/html/structform.js b/structform.js
index a4c4dd697..a4c4dd697 100644
--- a/html/structform.js
+++ b/structform.js
diff --git a/html/structformer__destination.html b/structformer__destination.html
index 5731f1c5e..5731f1c5e 100644
--- a/html/structformer__destination.html
+++ b/structformer__destination.html
diff --git a/html/structformer__destination.js b/structformer__destination.js
index 6afbb33fd..6afbb33fd 100644
--- a/html/structformer__destination.js
+++ b/structformer__destination.js
diff --git a/html/structframe__t.html b/structframe__t.html
index 6edd7d2ad..6edd7d2ad 100644
--- a/html/structframe__t.html
+++ b/structframe__t.html
diff --git a/html/structframe__t.js b/structframe__t.js
index d7d865f93..d7d865f93 100644
--- a/html/structframe__t.js
+++ b/structframe__t.js
diff --git a/html/structframe__t2.html b/structframe__t2.html
index c819c146a..c819c146a 100644
--- a/html/structframe__t2.html
+++ b/structframe__t2.html
diff --git a/html/structframe__t2.js b/structframe__t2.js
index eb81d7b16..eb81d7b16 100644
--- a/html/structframe__t2.js
+++ b/structframe__t2.js
diff --git a/html/structframeref__t.html b/structframeref__t.html
index 01722f9c8..01722f9c8 100644
--- a/html/structframeref__t.html
+++ b/structframeref__t.html
diff --git a/html/structframeref__t.js b/structframeref__t.js
index db4ca6ecf..db4ca6ecf 100644
--- a/html/structframeref__t.js
+++ b/structframeref__t.js
diff --git a/html/structg2sattr.html b/structg2sattr.html
index d1f3acedb..d1f3acedb 100644
--- a/html/structg2sattr.html
+++ b/structg2sattr.html
diff --git a/html/structg2sattr.js b/structg2sattr.js
index 6816025e9..6816025e9 100644
--- a/html/structg2sattr.js
+++ b/structg2sattr.js
diff --git a/html/structg2scolumns.html b/structg2scolumns.html
index 51c72fdce..51c72fdce 100644
--- a/html/structg2scolumns.html
+++ b/structg2scolumns.html
diff --git a/html/structg2scolumns.js b/structg2scolumns.js
index 1f2a4476d..1f2a4476d 100644
--- a/html/structg2scolumns.js
+++ b/structg2scolumns.js
diff --git a/html/structg2sprop.html b/structg2sprop.html
index b630b648e..b630b648e 100644
--- a/html/structg2sprop.html
+++ b/structg2sprop.html
diff --git a/html/structg2sprop.js b/structg2sprop.js
index fb0ee1f9f..fb0ee1f9f 100644
--- a/html/structg2sprop.js
+++ b/structg2sprop.js
diff --git a/html/structg2sstats.html b/structg2sstats.html
index ac927270d..ac927270d 100644
--- a/html/structg2sstats.html
+++ b/structg2sstats.html
diff --git a/html/structg2sstats.js b/structg2sstats.js
index 7da5e4234..7da5e4234 100644
--- a/html/structg2sstats.js
+++ b/structg2sstats.js
diff --git a/html/structgar2nav__conv.html b/structgar2nav__conv.html
index 4efcc6c70..4efcc6c70 100644
--- a/html/structgar2nav__conv.html
+++ b/structgar2nav__conv.html
diff --git a/html/structgar2nav__conv.js b/structgar2nav__conv.js
index 131110f7e..131110f7e 100644
--- a/html/structgar2nav__conv.js
+++ b/structgar2nav__conv.js
diff --git a/html/structgar2navit.html b/structgar2navit.html
index fafa19c9b..fafa19c9b 100644
--- a/html/structgar2navit.html
+++ b/structgar2navit.html
diff --git a/html/structgar2navit.js b/structgar2navit.js
index 497dd3048..497dd3048 100644
--- a/html/structgar2navit.js
+++ b/structgar2navit.js
diff --git a/html/structgeodesic.html b/structgeodesic.html
index baacc4c03..baacc4c03 100644
--- a/html/structgeodesic.html
+++ b/structgeodesic.html
diff --git a/html/structgeodesic.js b/structgeodesic.js
index cdf0dadc8..cdf0dadc8 100644
--- a/html/structgeodesic.js
+++ b/structgeodesic.js
diff --git a/html/structgeom__poly__segment.html b/structgeom__poly__segment.html
index e3b185116..e3b185116 100644
--- a/html/structgeom__poly__segment.html
+++ b/structgeom__poly__segment.html
diff --git a/html/structgeom__poly__segment.js b/structgeom__poly__segment.js
index 28f195399..28f195399 100644
--- a/html/structgeom__poly__segment.js
+++ b/structgeom__poly__segment.js
diff --git a/html/structglob__t.html b/structglob__t.html
index e18023f1a..e18023f1a 100644
--- a/html/structglob__t.html
+++ b/structglob__t.html
diff --git a/html/structglob__t.js b/structglob__t.js
index 3b20aabab..3b20aabab 100644
--- a/html/structglob__t.js
+++ b/structglob__t.js
diff --git a/html/structgps__sat.html b/structgps__sat.html
index d0d1c57c8..d0d1c57c8 100644
--- a/html/structgps__sat.html
+++ b/structgps__sat.html
diff --git a/html/structgps__sat.js b/structgps__sat.js
index 9185c73a3..9185c73a3 100644
--- a/html/structgps__sat.js
+++ b/structgps__sat.js
diff --git a/html/structgps__status.html b/structgps__status.html
index a8fcefcfe..a8fcefcfe 100644
--- a/html/structgps__status.html
+++ b/structgps__status.html
diff --git a/html/structgps__status.js b/structgps__status.js
index 359c1b547..359c1b547 100644
--- a/html/structgps__status.js
+++ b/structgps__status.js
diff --git a/html/structgraphics.html b/structgraphics.html
index 8e47d7776..8e47d7776 100644
--- a/html/structgraphics.html
+++ b/structgraphics.html
diff --git a/html/structgraphics.js b/structgraphics.js
index b3259e561..b3259e561 100644
--- a/html/structgraphics.js
+++ b/structgraphics.js
diff --git a/html/structgraphics__data__image.html b/structgraphics__data__image.html
index b2b8ff852..b2b8ff852 100644
--- a/html/structgraphics__data__image.html
+++ b/structgraphics__data__image.html
diff --git a/html/structgraphics__data__image.js b/structgraphics__data__image.js
index 2447cb76f..2447cb76f 100644
--- a/html/structgraphics__data__image.js
+++ b/structgraphics__data__image.js
diff --git a/html/structgraphics__font.html b/structgraphics__font.html
index e5c3c1a5f..e5c3c1a5f 100644
--- a/html/structgraphics__font.html
+++ b/structgraphics__font.html
diff --git a/html/structgraphics__font.js b/structgraphics__font.js
index 6bc133ff0..6bc133ff0 100644
--- a/html/structgraphics__font.js
+++ b/structgraphics__font.js
diff --git a/html/structgraphics__font__methods.html b/structgraphics__font__methods.html
index ca31e33b4..ca31e33b4 100644
--- a/html/structgraphics__font__methods.html
+++ b/structgraphics__font__methods.html
diff --git a/html/structgraphics__font__methods.js b/structgraphics__font__methods.js
index 1a21f4ded..1a21f4ded 100644
--- a/html/structgraphics__font__methods.js
+++ b/structgraphics__font__methods.js
diff --git a/html/structgraphics__font__priv.html b/structgraphics__font__priv.html
index c91509dec..c91509dec 100644
--- a/html/structgraphics__font__priv.html
+++ b/structgraphics__font__priv.html
diff --git a/html/structgraphics__font__priv.js b/structgraphics__font__priv.js
index d73bda965..d73bda965 100644
--- a/html/structgraphics__font__priv.js
+++ b/structgraphics__font__priv.js
diff --git a/html/structgraphics__gc.html b/structgraphics__gc.html
index 229e25508..229e25508 100644
--- a/html/structgraphics__gc.html
+++ b/structgraphics__gc.html
diff --git a/html/structgraphics__gc.js b/structgraphics__gc.js
index 04e447a21..04e447a21 100644
--- a/html/structgraphics__gc.js
+++ b/structgraphics__gc.js
diff --git a/html/structgraphics__gc__methods.html b/structgraphics__gc__methods.html
index 91f0a83f4..91f0a83f4 100644
--- a/html/structgraphics__gc__methods.html
+++ b/structgraphics__gc__methods.html
diff --git a/html/structgraphics__gc__methods.js b/structgraphics__gc__methods.js
index 8596ba11b..8596ba11b 100644
--- a/html/structgraphics__gc__methods.js
+++ b/structgraphics__gc__methods.js
diff --git a/html/structgraphics__gc__priv.html b/structgraphics__gc__priv.html
index 1111ee13b..1111ee13b 100644
--- a/html/structgraphics__gc__priv.html
+++ b/structgraphics__gc__priv.html
diff --git a/html/structgraphics__gc__priv.js b/structgraphics__gc__priv.js
index a9d497e66..a9d497e66 100644
--- a/html/structgraphics__gc__priv.js
+++ b/structgraphics__gc__priv.js
diff --git a/html/structgraphics__image.html b/structgraphics__image.html
index ddb7c54c8..ddb7c54c8 100644
--- a/html/structgraphics__image.html
+++ b/structgraphics__image.html
diff --git a/html/structgraphics__image.js b/structgraphics__image.js
index 0666b5eb2..0666b5eb2 100644
--- a/html/structgraphics__image.js
+++ b/structgraphics__image.js
diff --git a/html/structgraphics__image__buffer.html b/structgraphics__image__buffer.html
index 6eb3099e2..6eb3099e2 100644
--- a/html/structgraphics__image__buffer.html
+++ b/structgraphics__image__buffer.html
diff --git a/html/structgraphics__image__buffer.js b/structgraphics__image__buffer.js
index 26a067f78..26a067f78 100644
--- a/html/structgraphics__image__buffer.js
+++ b/structgraphics__image__buffer.js
diff --git a/html/structgraphics__image__methods.html b/structgraphics__image__methods.html
index 76132eb03..76132eb03 100644
--- a/html/structgraphics__image__methods.html
+++ b/structgraphics__image__methods.html
diff --git a/html/structgraphics__image__methods.js b/structgraphics__image__methods.js
index 9b7072c63..9b7072c63 100644
--- a/html/structgraphics__image__methods.js
+++ b/structgraphics__image__methods.js
diff --git a/html/structgraphics__image__priv.html b/structgraphics__image__priv.html
index 9a07c4128..9a07c4128 100644
--- a/html/structgraphics__image__priv.html
+++ b/structgraphics__image__priv.html
diff --git a/html/structgraphics__image__priv.js b/structgraphics__image__priv.js
index 19f3f15b1..19f3f15b1 100644
--- a/html/structgraphics__image__priv.js
+++ b/structgraphics__image__priv.js
diff --git a/html/structgraphics__keyboard.html b/structgraphics__keyboard.html
index 6a5753bd6..6a5753bd6 100644
--- a/html/structgraphics__keyboard.html
+++ b/structgraphics__keyboard.html
diff --git a/html/structgraphics__keyboard.js b/structgraphics__keyboard.js
index 589d205c5..589d205c5 100644
--- a/html/structgraphics__keyboard.js
+++ b/structgraphics__keyboard.js
diff --git a/html/structgraphics__methods.html b/structgraphics__methods.html
index 5c11627de..5c11627de 100644
--- a/html/structgraphics__methods.html
+++ b/structgraphics__methods.html
diff --git a/html/structgraphics__methods.js b/structgraphics__methods.js
index 965fa33d5..965fa33d5 100644
--- a/html/structgraphics__methods.js
+++ b/structgraphics__methods.js
diff --git a/html/structgraphics__opengl__platform.html b/structgraphics__opengl__platform.html
index bcceea50d..bcceea50d 100644
--- a/html/structgraphics__opengl__platform.html
+++ b/structgraphics__opengl__platform.html
diff --git a/html/structgraphics__opengl__platform.js b/structgraphics__opengl__platform.js
index 777e97dc6..777e97dc6 100644
--- a/html/structgraphics__opengl__platform.js
+++ b/structgraphics__opengl__platform.js
diff --git a/html/structgraphics__opengl__platform__methods.html b/structgraphics__opengl__platform__methods.html
index 572d9fc5f..572d9fc5f 100644
--- a/html/structgraphics__opengl__platform__methods.html
+++ b/structgraphics__opengl__platform__methods.html
diff --git a/html/structgraphics__opengl__platform__methods.js b/structgraphics__opengl__platform__methods.js
index eda1c0bf9..eda1c0bf9 100644
--- a/html/structgraphics__opengl__platform__methods.js
+++ b/structgraphics__opengl__platform__methods.js
diff --git a/html/structgraphics__opengl__window__system.html b/structgraphics__opengl__window__system.html
index c1005f86f..c1005f86f 100644
--- a/html/structgraphics__opengl__window__system.html
+++ b/structgraphics__opengl__window__system.html
diff --git a/html/structgraphics__opengl__window__system.js b/structgraphics__opengl__window__system.js
index 09bd66eca..09bd66eca 100644
--- a/html/structgraphics__opengl__window__system.js
+++ b/structgraphics__opengl__window__system.js
diff --git a/html/structgraphics__opengl__window__system__methods.html b/structgraphics__opengl__window__system__methods.html
index 09b2a63d5..09b2a63d5 100644
--- a/html/structgraphics__opengl__window__system__methods.html
+++ b/structgraphics__opengl__window__system__methods.html
diff --git a/html/structgraphics__opengl__window__system__methods.js b/structgraphics__opengl__window__system__methods.js
index 692731f11..692731f11 100644
--- a/html/structgraphics__opengl__window__system__methods.js
+++ b/structgraphics__opengl__window__system__methods.js
diff --git a/html/structgraphics__priv.html b/structgraphics__priv.html
index 30373dfe9..30373dfe9 100644
--- a/html/structgraphics__priv.html
+++ b/structgraphics__priv.html
diff --git a/html/structgraphics__priv.js b/structgraphics__priv.js
index dbf254447..dbf254447 100644
--- a/html/structgraphics__priv.js
+++ b/structgraphics__priv.js
diff --git a/html/structgscale.html b/structgscale.html
index 89e10e6c1..89e10e6c1 100644
--- a/html/structgscale.html
+++ b/structgscale.html
diff --git a/html/structgscale.js b/structgscale.js
index 7baf01371..7baf01371 100644
--- a/html/structgscale.js
+++ b/structgscale.js
diff --git a/html/structgui.html b/structgui.html
index 7310ba358..7310ba358 100644
--- a/html/structgui.html
+++ b/structgui.html
diff --git a/html/structgui.js b/structgui.js
index 5b67f4446..5b67f4446 100644
--- a/html/structgui.js
+++ b/structgui.js
diff --git a/html/structgui__config__settings.html b/structgui__config__settings.html
index 1ef529e7a..1ef529e7a 100644
--- a/html/structgui__config__settings.html
+++ b/structgui__config__settings.html
diff --git a/html/structgui__config__settings.js b/structgui__config__settings.js
index 63452f3aa..63452f3aa 100644
--- a/html/structgui__config__settings.js
+++ b/structgui__config__settings.js
diff --git a/html/structgui__internal__data.html b/structgui__internal__data.html
index c4998645c..c4998645c 100644
--- a/html/structgui__internal__data.html
+++ b/structgui__internal__data.html
diff --git a/html/structgui__internal__data.js b/structgui__internal__data.js
index 465ce589d..465ce589d 100644
--- a/html/structgui__internal__data.js
+++ b/structgui__internal__data.js
diff --git a/html/structgui__internal__keyb__mode.html b/structgui__internal__keyb__mode.html
index 950ce35d4..950ce35d4 100644
--- a/html/structgui__internal__keyb__mode.html
+++ b/structgui__internal__keyb__mode.html
diff --git a/html/structgui__internal__keyb__mode.js b/structgui__internal__keyb__mode.js
index 31a49abd4..31a49abd4 100644
--- a/html/structgui__internal__keyb__mode.js
+++ b/structgui__internal__keyb__mode.js
diff --git a/html/structgui__internal__methods.html b/structgui__internal__methods.html
index d9b09959d..d9b09959d 100644
--- a/html/structgui__internal__methods.html
+++ b/structgui__internal__methods.html
diff --git a/html/structgui__internal__methods.js b/structgui__internal__methods.js
index b2d67fa87..b2d67fa87 100644
--- a/html/structgui__internal__methods.js
+++ b/structgui__internal__methods.js
diff --git a/html/structgui__internal__widget__methods.html b/structgui__internal__widget__methods.html
index 07496115d..07496115d 100644
--- a/html/structgui__internal__widget__methods.html
+++ b/structgui__internal__widget__methods.html
diff --git a/html/structgui__internal__widget__methods.js b/structgui__internal__widget__methods.js
index 537c86dc0..537c86dc0 100644
--- a/html/structgui__internal__widget__methods.js
+++ b/structgui__internal__widget__methods.js
diff --git a/html/structgui__menu__info.html b/structgui__menu__info.html
index d42913e9e..d42913e9e 100644
--- a/html/structgui__menu__info.html
+++ b/structgui__menu__info.html
diff --git a/html/structgui__menu__info.js b/structgui__menu__info.js
index 1f5a6484e..1f5a6484e 100644
--- a/html/structgui__menu__info.js
+++ b/structgui__menu__info.js
diff --git a/html/structgui__methods.html b/structgui__methods.html
index a6e8bb8fb..a6e8bb8fb 100644
--- a/html/structgui__methods.html
+++ b/structgui__methods.html
diff --git a/html/structgui__methods.js b/structgui__methods.js
index 3cf30b5b4..3cf30b5b4 100644
--- a/html/structgui__methods.js
+++ b/structgui__methods.js
diff --git a/html/structgui__priv.html b/structgui__priv.html
index 3a5b1721d..3a5b1721d 100644
--- a/html/structgui__priv.html
+++ b/structgui__priv.html
diff --git a/html/structgui__priv.js b/structgui__priv.js
index 2a79b9fe3..2a79b9fe3 100644
--- a/html/structgui__priv.js
+++ b/structgui__priv.js
diff --git a/html/structgui__priv_1_1gesture__elem.html b/structgui__priv_1_1gesture__elem.html
index e2eab8075..e2eab8075 100644
--- a/html/structgui__priv_1_1gesture__elem.html
+++ b/structgui__priv_1_1gesture__elem.html
diff --git a/html/structgui__priv_1_1gesture__elem.js b/structgui__priv_1_1gesture__elem.js
index e29febe67..e29febe67 100644
--- a/html/structgui__priv_1_1gesture__elem.js
+++ b/structgui__priv_1_1gesture__elem.js
diff --git a/html/structgui__priv_1_1html.html b/structgui__priv_1_1html.html
index fd913ce41..fd913ce41 100644
--- a/html/structgui__priv_1_1html.html
+++ b/structgui__priv_1_1html.html
diff --git a/html/structgui__priv_1_1html.js b/structgui__priv_1_1html.js
index 6981aec5f..6981aec5f 100644
--- a/html/structgui__priv_1_1html.js
+++ b/structgui__priv_1_1html.js
diff --git a/html/structgz__header__s.html b/structgz__header__s.html
index bfb0bd5ba..bfb0bd5ba 100644
--- a/html/structgz__header__s.html
+++ b/structgz__header__s.html
diff --git a/html/structgz__header__s.js b/structgz__header__s.js
index 0acc2aa5b..0acc2aa5b 100644
--- a/html/structgz__header__s.js
+++ b/structgz__header__s.js
diff --git a/html/structhash__entry.html b/structhash__entry.html
index 9f4dc134a..9f4dc134a 100644
--- a/html/structhash__entry.html
+++ b/structhash__entry.html
diff --git a/html/structhash__entry.js b/structhash__entry.js
index a176cb3ad..a176cb3ad 100644
--- a/html/structhash__entry.js
+++ b/structhash__entry.js
diff --git a/html/structheightline.html b/structheightline.html
index bf04d1814..bf04d1814 100644
--- a/html/structheightline.html
+++ b/structheightline.html
diff --git a/html/structheightline.js b/structheightline.js
index 733917233..733917233 100644
--- a/html/structheightline.js
+++ b/structheightline.js
diff --git a/html/structhn__interpol__attr.html b/structhn__interpol__attr.html
index c0a7d5714..c0a7d5714 100644
--- a/html/structhn__interpol__attr.html
+++ b/structhn__interpol__attr.html
diff --git a/html/structhn__interpol__attr.js b/structhn__interpol__attr.js
index f9c020c04..f9c020c04 100644
--- a/html/structhn__interpol__attr.js
+++ b/structhn__interpol__attr.js
diff --git a/html/structhouse__number__interpolation.html b/structhouse__number__interpolation.html
index 8fd3fdd61..8fd3fdd61 100644
--- a/html/structhouse__number__interpolation.html
+++ b/structhouse__number__interpolation.html
diff --git a/html/structhouse__number__interpolation.js b/structhouse__number__interpolation.js
index 76c56bc65..76c56bc65 100644
--- a/html/structhouse__number__interpolation.js
+++ b/structhouse__number__interpolation.js
diff --git a/html/structhousenumber.html b/structhousenumber.html
index a8b066f0e..a8b066f0e 100644
--- a/html/structhousenumber.html
+++ b/structhousenumber.html
diff --git a/html/structhousenumber.js b/structhousenumber.js
index fcc0bf195..fcc0bf195 100644
--- a/html/structhousenumber.js
+++ b/structhousenumber.js
diff --git a/html/structhtml__tag__map.html b/structhtml__tag__map.html
index cbe5420f4..cbe5420f4 100644
--- a/html/structhtml__tag__map.html
+++ b/structhtml__tag__map.html
diff --git a/html/structhtml__tag__map.js b/structhtml__tag__map.js
index 5337eeab0..5337eeab0 100644
--- a/html/structhtml__tag__map.js
+++ b/structhtml__tag__map.js
diff --git a/html/structidle__task.html b/structidle__task.html
index 70b2c26b2..70b2c26b2 100644
--- a/html/structidle__task.html
+++ b/structidle__task.html
diff --git a/html/structidle__task.js b/structidle__task.js
index 176ef879b..176ef879b 100644
--- a/html/structidle__task.js
+++ b/structidle__task.js
diff --git a/html/structimg__header.html b/structimg__header.html
index f9636cfeb..f9636cfeb 100644
--- a/html/structimg__header.html
+++ b/structimg__header.html
diff --git a/html/structimg__header.js b/structimg__header.js
index 596638879..596638879 100644
--- a/html/structimg__header.js
+++ b/structimg__header.js
diff --git a/html/structinflate__state.html b/structinflate__state.html
index 8373f3aca..8373f3aca 100644
--- a/html/structinflate__state.html
+++ b/structinflate__state.html
diff --git a/html/structinflate__state.js b/structinflate__state.js
index c553c4301..c553c4301 100644
--- a/html/structinflate__state.js
+++ b/structinflate__state.js
diff --git a/html/structinternal__state.html b/structinternal__state.html
index a222bfbc1..a222bfbc1 100644
--- a/html/structinternal__state.html
+++ b/structinternal__state.html
diff --git a/html/structinternal__state.js b/structinternal__state.js
index 1558abe69..1558abe69 100644
--- a/html/structinternal__state.js
+++ b/structinternal__state.js
diff --git a/html/structitem.html b/structitem.html
index 3d6c5997a..3d6c5997a 100644
--- a/html/structitem.html
+++ b/structitem.html
diff --git a/html/structitem.js b/structitem.js
index 32be2b044..32be2b044 100644
--- a/html/structitem.js
+++ b/structitem.js
diff --git a/html/structitem__bin.html b/structitem__bin.html
index d66c4b1b2..d66c4b1b2 100644
--- a/html/structitem__bin.html
+++ b/structitem__bin.html
diff --git a/html/structitem__bin.js b/structitem__bin.js
index 49029c618..49029c618 100644
--- a/html/structitem__bin.js
+++ b/structitem__bin.js
diff --git a/html/structitem__bin__sink.html b/structitem__bin__sink.html
index cf9cae806..cf9cae806 100644
--- a/html/structitem__bin__sink.html
+++ b/structitem__bin__sink.html
diff --git a/html/structitem__bin__sink.js b/structitem__bin__sink.js
index 4c8a417b7..4c8a417b7 100644
--- a/html/structitem__bin__sink.js
+++ b/structitem__bin__sink.js
diff --git a/html/structitem__bin__sink__func.html b/structitem__bin__sink__func.html
index 5512200da..5512200da 100644
--- a/html/structitem__bin__sink__func.html
+++ b/structitem__bin__sink__func.html
diff --git a/html/structitem__bin__sink__func.js b/structitem__bin__sink__func.js
index 234bc26fb..234bc26fb 100644
--- a/html/structitem__bin__sink__func.js
+++ b/structitem__bin__sink__func.js
diff --git a/html/structitem__data.html b/structitem__data.html
index f8728043e..f8728043e 100644
--- a/html/structitem__data.html
+++ b/structitem__data.html
diff --git a/html/structitem__data.js b/structitem__data.js
index 9dfe095c3..9dfe095c3 100644
--- a/html/structitem__data.js
+++ b/structitem__data.js
diff --git a/html/structitem__hash.html b/structitem__hash.html
index ae96f13bb..ae96f13bb 100644
--- a/html/structitem__hash.html
+++ b/structitem__hash.html
diff --git a/html/structitem__hash.js b/structitem__hash.js
index 05eb644be..05eb644be 100644
--- a/html/structitem__hash.js
+++ b/structitem__hash.js
diff --git a/html/structitem__id.html b/structitem__id.html
index 44cedc1b1..44cedc1b1 100644
--- a/html/structitem__id.html
+++ b/structitem__id.html
diff --git a/html/structitem__id.js b/structitem__id.js
index 0f64c6640..0f64c6640 100644
--- a/html/structitem__id.js
+++ b/structitem__id.js
diff --git a/html/structitem__methods.html b/structitem__methods.html
index 2da549d58..2da549d58 100644
--- a/html/structitem__methods.html
+++ b/structitem__methods.html
diff --git a/html/structitem__methods.js b/structitem__methods.js
index 4889c6e72..4889c6e72 100644
--- a/html/structitem__methods.js
+++ b/structitem__methods.js
diff --git a/html/structitem__name.html b/structitem__name.html
index f9a75e970..f9a75e970 100644
--- a/html/structitem__name.html
+++ b/structitem__name.html
diff --git a/html/structitem__name.js b/structitem__name.js
index e0832e497..e0832e497 100644
--- a/html/structitem__name.js
+++ b/structitem__name.js
diff --git a/html/structitem__priv.html b/structitem__priv.html
index 75c48c71a..75c48c71a 100644
--- a/html/structitem__priv.html
+++ b/structitem__priv.html
diff --git a/html/structitem__priv.js b/structitem__priv.js
index 99534fab3..99534fab3 100644
--- a/html/structitem__priv.js
+++ b/structitem__priv.js
diff --git a/html/structitem__range.html b/structitem__range.html
index a21a88ac0..a21a88ac0 100644
--- a/html/structitem__range.html
+++ b/structitem__range.html
diff --git a/html/structitem__range.js b/structitem__range.js
index fccd03675..fccd03675 100644
--- a/html/structitem__range.js
+++ b/structitem__range.js
diff --git a/html/structitemgra.html b/structitemgra.html
index 5391f40e7..5391f40e7 100644
--- a/html/structitemgra.html
+++ b/structitemgra.html
diff --git a/html/structitemgra.js b/structitemgra.js
index 770e8652a..770e8652a 100644
--- a/html/structitemgra.js
+++ b/structitemgra.js
diff --git a/html/structj1850.html b/structj1850.html
index 3476e43d2..3476e43d2 100644
--- a/html/structj1850.html
+++ b/structj1850.html
diff --git a/html/structj1850.js b/structj1850.js
index e052e5581..e052e5581 100644
--- a/html/structj1850.js
+++ b/structj1850.js
diff --git a/html/structjni__object.html b/structjni__object.html
index 9d2510aa1..9d2510aa1 100644
--- a/html/structjni__object.html
+++ b/structjni__object.html
diff --git a/html/structjni__object.js b/structjni__object.js
index c23dd1cc1..c23dd1cc1 100644
--- a/html/structjni__object.js
+++ b/structjni__object.js
diff --git a/html/structkeywtab__t.html b/structkeywtab__t.html
index 2eef5b240..2eef5b240 100644
--- a/html/structkeywtab__t.html
+++ b/structkeywtab__t.html
diff --git a/html/structkeywtab__t.js b/structkeywtab__t.js
index 21c83cf9e..21c83cf9e 100644
--- a/html/structkeywtab__t.js
+++ b/structkeywtab__t.js
diff --git a/html/structklatt__frame__t.html b/structklatt__frame__t.html
index 86911adec..86911adec 100644
--- a/html/structklatt__frame__t.html
+++ b/structklatt__frame__t.html
diff --git a/html/structklatt__frame__t.js b/structklatt__frame__t.js
index b21a398a6..b21a398a6 100644
--- a/html/structklatt__frame__t.js
+++ b/structklatt__frame__t.js
diff --git a/html/structklatt__global__t.html b/structklatt__global__t.html
index 5f21ad73d..5f21ad73d 100644
--- a/html/structklatt__global__t.html
+++ b/structklatt__global__t.html
diff --git a/html/structklatt__global__t.js b/structklatt__global__t.js
index 43199fe20..43199fe20 100644
--- a/html/structklatt__global__t.js
+++ b/structklatt__global__t.js
diff --git a/html/structklatt__peaks__t.html b/structklatt__peaks__t.html
index eeee1c25a..eeee1c25a 100644
--- a/html/structklatt__peaks__t.html
+++ b/structklatt__peaks__t.html
diff --git a/html/structklatt__peaks__t.js b/structklatt__peaks__t.js
index 181ff86f3..181ff86f3 100644
--- a/html/structklatt__peaks__t.js
+++ b/structklatt__peaks__t.js
diff --git a/html/structknown__translation__t.html b/structknown__translation__t.html
index c1ec0300e..c1ec0300e 100644
--- a/html/structknown__translation__t.html
+++ b/structknown__translation__t.html
diff --git a/html/structknown__translation__t.js b/structknown__translation__t.js
index 240c8573c..240c8573c 100644
--- a/html/structknown__translation__t.js
+++ b/structknown__translation__t.js
diff --git a/html/structlabel__data.html b/structlabel__data.html
index a2bc935cf..a2bc935cf 100644
--- a/html/structlabel__data.html
+++ b/structlabel__data.html
diff --git a/html/structlabel__data.js b/structlabel__data.js
index 851811d3d..851811d3d 100644
--- a/html/structlabel__data.js
+++ b/structlabel__data.js
diff --git a/html/structlabel__data__offset.html b/structlabel__data__offset.html
index 30d328906..30d328906 100644
--- a/html/structlabel__data__offset.html
+++ b/structlabel__data__offset.html
diff --git a/html/structlabel__data__offset.js b/structlabel__data__offset.js
index 9ebdc892a..9ebdc892a 100644
--- a/html/structlabel__data__offset.js
+++ b/structlabel__data__offset.js
diff --git a/html/structlabel__header.html b/structlabel__header.html
index 86b5ccafc..86b5ccafc 100644
--- a/html/structlabel__header.html
+++ b/structlabel__header.html
diff --git a/html/structlabel__header.js b/structlabel__header.js
index a59bc2913..a59bc2913 100644
--- a/html/structlabel__header.js
+++ b/structlabel__header.js
diff --git a/html/structlayer.html b/structlayer.html
index ee9d64255..ee9d64255 100644
--- a/html/structlayer.html
+++ b/structlayer.html
diff --git a/html/structlayer.js b/structlayer.js
index 916eab580..916eab580 100644
--- a/html/structlayer.js
+++ b/structlayer.js
diff --git a/html/structlayout.html b/structlayout.html
index e9f8e7ef4..e9f8e7ef4 100644
--- a/html/structlayout.html
+++ b/structlayout.html
diff --git a/html/structlayout.js b/structlayout.js
index c49f97f4e..c49f97f4e 100644
--- a/html/structlayout.js
+++ b/structlayout.js
diff --git a/html/structlconv.html b/structlconv.html
index 3f24c87d3..3f24c87d3 100644
--- a/html/structlconv.html
+++ b/structlconv.html
diff --git a/html/structlconv.js b/structlconv.js
index d17b6ee93..d17b6ee93 100644
--- a/html/structlconv.js
+++ b/structlconv.js
diff --git a/html/structlevel.html b/structlevel.html
index 3dc3bfed1..3dc3bfed1 100644
--- a/html/structlevel.html
+++ b/structlevel.html
diff --git a/html/structlevel.js b/structlevel.js
index 4ad9c428e..4ad9c428e 100644
--- a/html/structlevel.js
+++ b/structlevel.js
diff --git a/html/structloaded__domain.html b/structloaded__domain.html
index b0900ff03..b0900ff03 100644
--- a/html/structloaded__domain.html
+++ b/structloaded__domain.html
diff --git a/html/structloaded__domain.js b/structloaded__domain.js
index a7630e24f..a7630e24f 100644
--- a/html/structloaded__domain.js
+++ b/structloaded__domain.js
diff --git a/html/structloaded__l10nfile.html b/structloaded__l10nfile.html
index c79b69852..c79b69852 100644
--- a/html/structloaded__l10nfile.html
+++ b/structloaded__l10nfile.html
diff --git a/html/structloaded__l10nfile.js b/structloaded__l10nfile.js
index c8c634e13..c8c634e13 100644
--- a/html/structloaded__l10nfile.js
+++ b/structloaded__l10nfile.js
diff --git a/html/structlog.html b/structlog.html
index 4af585f0d..4af585f0d 100644
--- a/html/structlog.html
+++ b/structlog.html
diff --git a/html/structlog.js b/structlog.js
index 858fd3e06..858fd3e06 100644
--- a/html/structlog.js
+++ b/structlog.js
diff --git a/html/structlog__data.html b/structlog__data.html
index e1bd3139e..e1bd3139e 100644
--- a/html/structlog__data.html
+++ b/structlog__data.html
diff --git a/html/structlog__data.js b/structlog__data.js
index 8e4e74ae3..8e4e74ae3 100644
--- a/html/structlog__data.js
+++ b/structlog__data.js
diff --git a/html/structlongest__match.html b/structlongest__match.html
index 844926ff7..844926ff7 100644
--- a/html/structlongest__match.html
+++ b/structlongest__match.html
diff --git a/html/structlongest__match.js b/structlongest__match.js
index 7e44a767b..7e44a767b 100644
--- a/html/structlongest__match.js
+++ b/structlongest__match.js
diff --git a/html/structlongest__match__list.html b/structlongest__match__list.html
index 565052ed3..565052ed3 100644
--- a/html/structlongest__match__list.html
+++ b/structlongest__match__list.html
diff --git a/html/structlongest__match__list.js b/structlongest__match__list.js
index 883fd5b7d..883fd5b7d 100644
--- a/html/structlongest__match__list.js
+++ b/structlongest__match__list.js
diff --git a/html/structlongest__match__list__item.html b/structlongest__match__list__item.html
index 7c2493ef4..7c2493ef4 100644
--- a/html/structlongest__match__list__item.html
+++ b/structlongest__match__list__item.html
diff --git a/html/structlongest__match__list__item.js b/structlongest__match__list__item.js
index eacddecd5..eacddecd5 100644
--- a/html/structlongest__match__list__item.js
+++ b/structlongest__match__list__item.js
diff --git a/html/structmalloc__head.html b/structmalloc__head.html
index dd8408728..dd8408728 100644
--- a/html/structmalloc__head.html
+++ b/structmalloc__head.html
diff --git a/html/structmalloc__head.js b/structmalloc__head.js
index 471b6fd7d..471b6fd7d 100644
--- a/html/structmalloc__head.js
+++ b/structmalloc__head.js
diff --git a/html/structmalloc__tail.html b/structmalloc__tail.html
index 07119673d..07119673d 100644
--- a/html/structmalloc__tail.html
+++ b/structmalloc__tail.html
diff --git a/html/structmalloc__tail.js b/structmalloc__tail.js
index 430abfd21..430abfd21 100644
--- a/html/structmalloc__tail.js
+++ b/structmalloc__tail.js
diff --git a/html/structmap.html b/structmap.html
index 7458e1344..7458e1344 100644
--- a/html/structmap.html
+++ b/structmap.html
diff --git a/html/structmap.js b/structmap.js
index a3ee193ce..a3ee193ce 100644
--- a/html/structmap.js
+++ b/structmap.js
diff --git a/html/structmapObject.html b/structmapObject.html
index 30f82a73e..30f82a73e 100644
--- a/html/structmapObject.html
+++ b/structmapObject.html
diff --git a/html/structmapObject.js b/structmapObject.js
index 194c360af..194c360af 100644
--- a/html/structmapObject.js
+++ b/structmapObject.js
diff --git a/html/structmap__data.html b/structmap__data.html
index 5472da6f8..5472da6f8 100644
--- a/html/structmap__data.html
+++ b/structmap__data.html
diff --git a/html/structmap__data.js b/structmap__data.js
index 08c61412e..08c61412e 100644
--- a/html/structmap__data.js
+++ b/structmap__data.js
diff --git a/html/structmap__download.html b/structmap__download.html
index 1a9c00a82..1a9c00a82 100644
--- a/html/structmap__download.html
+++ b/structmap__download.html
diff --git a/html/structmap__download.js b/structmap__download.js
index d4d2d7633..d4d2d7633 100644
--- a/html/structmap__download.js
+++ b/structmap__download.js
diff --git a/html/structmap__methods.html b/structmap__methods.html
index e5cfbcb3f..e5cfbcb3f 100644
--- a/html/structmap__methods.html
+++ b/structmap__methods.html
diff --git a/html/structmap__methods.js b/structmap__methods.js
index dd9eae85a..dd9eae85a 100644
--- a/html/structmap__methods.js
+++ b/structmap__methods.js
diff --git a/html/structmap__priv.html b/structmap__priv.html
index 5509c7e2b..5509c7e2b 100644
--- a/html/structmap__priv.html
+++ b/structmap__priv.html
diff --git a/html/structmap__priv.js b/structmap__priv.js
index d550f2293..d550f2293 100644
--- a/html/structmap__priv.js
+++ b/structmap__priv.js
diff --git a/html/structmap__rect.html b/structmap__rect.html
index 98ade58c4..98ade58c4 100644
--- a/html/structmap__rect.html
+++ b/structmap__rect.html
diff --git a/html/structmap__rect.js b/structmap__rect.js
index b72a4d3a8..b72a4d3a8 100644
--- a/html/structmap__rect.js
+++ b/structmap__rect.js
diff --git a/html/structmap__rectObject.html b/structmap__rectObject.html
index e81587cd8..e81587cd8 100644
--- a/html/structmap__rectObject.html
+++ b/structmap__rectObject.html
diff --git a/html/structmap__rectObject.js b/structmap__rectObject.js
index 328e9ba19..328e9ba19 100644
--- a/html/structmap__rectObject.js
+++ b/structmap__rectObject.js
diff --git a/html/structmap__rect__priv.html b/structmap__rect__priv.html
index c78868c59..c78868c59 100644
--- a/html/structmap__rect__priv.html
+++ b/structmap__rect__priv.html
diff --git a/html/structmap__rect__priv.js b/structmap__rect__priv.js
index 6388c372a..6388c372a 100644
--- a/html/structmap__rect__priv.js
+++ b/structmap__rect__priv.js
diff --git a/html/structmap__search.html b/structmap__search.html
index a181a449e..a181a449e 100644
--- a/html/structmap__search.html
+++ b/structmap__search.html
diff --git a/html/structmap__search.js b/structmap__search.js
index 68429a002..68429a002 100644
--- a/html/structmap__search.js
+++ b/structmap__search.js
diff --git a/html/structmap__search__priv.html b/structmap__search__priv.html
index 85f1a8499..85f1a8499 100644
--- a/html/structmap__search__priv.html
+++ b/structmap__search__priv.html
diff --git a/html/structmap__search__priv.js b/structmap__search__priv.js
index 85a5252a3..85a5252a3 100644
--- a/html/structmap__search__priv.js
+++ b/structmap__search__priv.js
diff --git a/html/structmap__selection.html b/structmap__selection.html
index 845ad886e..845ad886e 100644
--- a/html/structmap__selection.html
+++ b/structmap__selection.html
diff --git a/html/structmap__selection.js b/structmap__selection.js
index 3c3d0bae8..3c3d0bae8 100644
--- a/html/structmap__selection.js
+++ b/structmap__selection.js
diff --git a/html/structmapset.html b/structmapset.html
index a82d39273..a82d39273 100644
--- a/html/structmapset.html
+++ b/structmapset.html
diff --git a/html/structmapset.js b/structmapset.js
index ed2e798d9..ed2e798d9 100644
--- a/html/structmapset.js
+++ b/structmapset.js
diff --git a/html/structmapsetObject.html b/structmapsetObject.html
index db27f6002..db27f6002 100644
--- a/html/structmapsetObject.html
+++ b/structmapsetObject.html
diff --git a/html/structmapsetObject.js b/structmapsetObject.js
index 310995c7c..310995c7c 100644
--- a/html/structmapsetObject.js
+++ b/structmapsetObject.js
diff --git a/html/structmapset__handle.html b/structmapset__handle.html
index b37167299..b37167299 100644
--- a/html/structmapset__handle.html
+++ b/structmapset__handle.html
diff --git a/html/structmapset__handle.js b/structmapset__handle.js
index e18f3b53b..e18f3b53b 100644
--- a/html/structmapset__handle.js
+++ b/structmapset__handle.js
diff --git a/html/structmapset__search.html b/structmapset__search.html
index 60bd7b3d8..60bd7b3d8 100644
--- a/html/structmapset__search.html
+++ b/structmapset__search.html
diff --git a/html/structmapset__search.js b/structmapset__search.js
index c48087b17..c48087b17 100644
--- a/html/structmapset__search.js
+++ b/structmapset__search.js
diff --git a/html/structmaptool__force__64.html b/structmaptool__force__64.html
index cde83f3dc..cde83f3dc 100644
--- a/html/structmaptool__force__64.html
+++ b/structmaptool__force__64.html
diff --git a/html/structmaptool__force__64.js b/structmaptool__force__64.js
index 2e5bf3ede..2e5bf3ede 100644
--- a/html/structmaptool__force__64.js
+++ b/structmaptool__force__64.js
diff --git a/html/structmaptool__osm.html b/structmaptool__osm.html
index e56eef269..e56eef269 100644
--- a/html/structmaptool__osm.html
+++ b/structmaptool__osm.html
diff --git a/html/structmaptool__osm.js b/structmaptool__osm.js
index b754db8bb..b754db8bb 100644
--- a/html/structmaptool__osm.js
+++ b/structmaptool__osm.js
diff --git a/html/structmaptool__params.html b/structmaptool__params.html
index 472fd8e4f..472fd8e4f 100644
--- a/html/structmaptool__params.html
+++ b/structmaptool__params.html
diff --git a/html/structmaptool__params.js b/structmaptool__params.js
index b3dfe6efc..b3dfe6efc 100644
--- a/html/structmaptool__params.js
+++ b/structmaptool__params.js
diff --git a/html/structmaptype.html b/structmaptype.html
index aa2686543..aa2686543 100644
--- a/html/structmaptype.html
+++ b/structmaptype.html
diff --git a/html/structmaptype.js b/structmaptype.js
index 5e702230c..5e702230c 100644
--- a/html/structmaptype.js
+++ b/structmaptype.js
diff --git a/html/structmarker.html b/structmarker.html
index 0bf7f68ef..0bf7f68ef 100644
--- a/html/structmarker.html
+++ b/structmarker.html
diff --git a/html/structmarker.js b/structmarker.js
index 11b2feb45..11b2feb45 100644
--- a/html/structmarker.js
+++ b/structmarker.js
diff --git a/html/structmbrolib__parameter.html b/structmbrolib__parameter.html
index 73b212e53..73b212e53 100644
--- a/html/structmbrolib__parameter.html
+++ b/structmbrolib__parameter.html
diff --git a/html/structmbrolib__parameter.js b/structmbrolib__parameter.js
index 84d399f96..84d399f96 100644
--- a/html/structmbrolib__parameter.js
+++ b/structmbrolib__parameter.js
diff --git a/html/structmbrolib__voice.html b/structmbrolib__voice.html
index 49e06bf1a..49e06bf1a 100644
--- a/html/structmbrolib__voice.html
+++ b/structmbrolib__voice.html
diff --git a/html/structmbrolib__voice.js b/structmbrolib__voice.js
index f8e17c617..f8e17c617 100644
--- a/html/structmbrolib__voice.js
+++ b/structmbrolib__voice.js
diff --git a/html/structmenu.html b/structmenu.html
index 267178bec..267178bec 100644
--- a/html/structmenu.html
+++ b/structmenu.html
diff --git a/html/structmenu.js b/structmenu.js
index 4e1bb3b3d..4e1bb3b3d 100644
--- a/html/structmenu.js
+++ b/structmenu.js
diff --git a/html/structmenu__data.html b/structmenu__data.html
index 13d1fec3a..13d1fec3a 100644
--- a/html/structmenu__data.html
+++ b/structmenu__data.html
diff --git a/html/structmenu__data.js b/structmenu__data.js
index f4d7f0e72..f4d7f0e72 100644
--- a/html/structmenu__data.js
+++ b/structmenu__data.js
diff --git a/html/structmenu__methods.html b/structmenu__methods.html
index 163fa26b0..163fa26b0 100644
--- a/html/structmenu__methods.html
+++ b/structmenu__methods.html
diff --git a/html/structmenu__methods.js b/structmenu__methods.js
index d4608c6a7..d4608c6a7 100644
--- a/html/structmenu__methods.js
+++ b/structmenu__methods.js
diff --git a/html/structmenu__priv.html b/structmenu__priv.html
index e6664c6c3..e6664c6c3 100644
--- a/html/structmenu__priv.html
+++ b/structmenu__priv.html
diff --git a/html/structmenu__priv.js b/structmenu__priv.js
index 7d520fef1..7d520fef1 100644
--- a/html/structmenu__priv.js
+++ b/structmenu__priv.js
diff --git a/html/structmessage.html b/structmessage.html
index c814b1f12..c814b1f12 100644
--- a/html/structmessage.html
+++ b/structmessage.html
diff --git a/html/structmessage.js b/structmessage.js
index 1f3d57507..1f3d57507 100644
--- a/html/structmessage.js
+++ b/structmessage.js
diff --git a/html/structmessagelist.html b/structmessagelist.html
index 04b2785bd..04b2785bd 100644
--- a/html/structmessagelist.html
+++ b/structmessagelist.html
diff --git a/html/structmessagelist.js b/structmessagelist.js
index ee93f37c8..ee93f37c8 100644
--- a/html/structmessagelist.js
+++ b/structmessagelist.js
diff --git a/html/structmo__file__header.html b/structmo__file__header.html
index 32e510076..32e510076 100644
--- a/html/structmo__file__header.html
+++ b/structmo__file__header.html
diff --git a/html/structmo__file__header.js b/structmo__file__header.js
index 1e36a0bcc..1e36a0bcc 100644
--- a/html/structmo__file__header.js
+++ b/structmo__file__header.js
diff --git a/html/structmouse__event__queue__element.html b/structmouse__event__queue__element.html
index fcf2d0ae2..fcf2d0ae2 100644
--- a/html/structmouse__event__queue__element.html
+++ b/structmouse__event__queue__element.html
diff --git a/html/structmouse__event__queue__element.js b/structmouse__event__queue__element.js
index af431ff63..af431ff63 100644
--- a/html/structmouse__event__queue__element.js
+++ b/structmouse__event__queue__element.js
diff --git a/html/structnav__next__turn.html b/structnav__next__turn.html
index 2fc5efc6f..2fc5efc6f 100644
--- a/html/structnav__next__turn.html
+++ b/structnav__next__turn.html
diff --git a/html/structnav__next__turn.js b/structnav__next__turn.js
index 627b4bbbe..627b4bbbe 100644
--- a/html/structnav__next__turn.js
+++ b/structnav__next__turn.js
diff --git a/html/structnav__toggle__announcer.html b/structnav__toggle__announcer.html
index ceb95c054..ceb95c054 100644
--- a/html/structnav__toggle__announcer.html
+++ b/structnav__toggle__announcer.html
diff --git a/html/structnav__toggle__announcer.js b/structnav__toggle__announcer.js
index 891c7b2e3..891c7b2e3 100644
--- a/html/structnav__toggle__announcer.js
+++ b/structnav__toggle__announcer.js
diff --git a/html/structnavigation.html b/structnavigation.html
index 8990c0450..8990c0450 100644
--- a/html/structnavigation.html
+++ b/structnavigation.html
diff --git a/html/structnavigation.js b/structnavigation.js
index 819dfd794..819dfd794 100644
--- a/html/structnavigation.js
+++ b/structnavigation.js
diff --git a/html/structnavigationObject.html b/structnavigationObject.html
index 974d0018f..974d0018f 100644
--- a/html/structnavigationObject.html
+++ b/structnavigationObject.html
diff --git a/html/structnavigationObject.js b/structnavigationObject.js
index 4e089ae78..4e089ae78 100644
--- a/html/structnavigationObject.js
+++ b/structnavigationObject.js
diff --git a/html/structnavigation__command.html b/structnavigation__command.html
index 737f11866..737f11866 100644
--- a/html/structnavigation__command.html
+++ b/structnavigation__command.html
diff --git a/html/structnavigation__command.js b/structnavigation__command.js
index 4a809b7d6..4a809b7d6 100644
--- a/html/structnavigation__command.js
+++ b/structnavigation__command.js
diff --git a/html/structnavigation__itm.html b/structnavigation__itm.html
index 6ab2036f0..6ab2036f0 100644
--- a/html/structnavigation__itm.html
+++ b/structnavigation__itm.html
diff --git a/html/structnavigation__itm.js b/structnavigation__itm.js
index 73c3c2add..73c3c2add 100644
--- a/html/structnavigation__itm.js
+++ b/structnavigation__itm.js
diff --git a/html/structnavigation__maneuver.html b/structnavigation__maneuver.html
index 99c381ad2..99c381ad2 100644
--- a/html/structnavigation__maneuver.html
+++ b/structnavigation__maneuver.html
diff --git a/html/structnavigation__maneuver.js b/structnavigation__maneuver.js
index 3fd32abe4..3fd32abe4 100644
--- a/html/structnavigation__maneuver.js
+++ b/structnavigation__maneuver.js
diff --git a/html/structnavigation__status.html b/structnavigation__status.html
index a8b1c9c15..a8b1c9c15 100644
--- a/html/structnavigation__status.html
+++ b/structnavigation__status.html
diff --git a/html/structnavigation__status.js b/structnavigation__status.js
index f944756b5..f944756b5 100644
--- a/html/structnavigation__status.js
+++ b/structnavigation__status.js
diff --git a/html/structnavigation__way.html b/structnavigation__way.html
index 00f280f3a..00f280f3a 100644
--- a/html/structnavigation__way.html
+++ b/structnavigation__way.html
diff --git a/html/structnavigation__way.js b/structnavigation__way.js
index 80487f504..80487f504 100644
--- a/html/structnavigation__way.js
+++ b/structnavigation__way.js
diff --git a/html/structnavit.html b/structnavit.html
index 9341d8504..9341d8504 100644
--- a/html/structnavit.html
+++ b/structnavit.html
diff --git a/html/structnavit.js b/structnavit.js
index 930db264c..930db264c 100644
--- a/html/structnavit.js
+++ b/structnavit.js
diff --git a/html/structnavitObject.html b/structnavitObject.html
index 6757ea7a2..6757ea7a2 100644
--- a/html/structnavitObject.html
+++ b/structnavitObject.html
diff --git a/html/structnavitObject.js b/structnavitObject.js
index e9d61ae3d..e9d61ae3d 100644
--- a/html/structnavitObject.js
+++ b/structnavitObject.js
diff --git a/html/structnavit__binding__w32__msg.html b/structnavit__binding__w32__msg.html
index 440f11072..440f11072 100644
--- a/html/structnavit__binding__w32__msg.html
+++ b/structnavit__binding__w32__msg.html
diff --git a/html/structnavit__binding__w32__msg.js b/structnavit__binding__w32__msg.js
index 949429062..949429062 100644
--- a/html/structnavit__binding__w32__msg.js
+++ b/structnavit__binding__w32__msg.js
diff --git a/html/structnavit__object.html b/structnavit__object.html
index c0803f25f..c0803f25f 100644
--- a/html/structnavit__object.html
+++ b/structnavit__object.html
diff --git a/html/structnavit__vehicle.html b/structnavit__vehicle.html
index ed1b8a8c8..ed1b8a8c8 100644
--- a/html/structnavit__vehicle.html
+++ b/structnavit__vehicle.html
diff --git a/html/structnavit__vehicle.js b/structnavit__vehicle.js
index 75f3575ba..75f3575ba 100644
--- a/html/structnavit__vehicle.js
+++ b/structnavit__vehicle.js
diff --git a/html/structnewnode.html b/structnewnode.html
index 91d8ee2d8..91d8ee2d8 100644
--- a/html/structnewnode.html
+++ b/structnewnode.html
diff --git a/html/structnewnode.js b/structnewnode.js
index 50e9c6676..50e9c6676 100644
--- a/html/structnewnode.js
+++ b/structnewnode.js
diff --git a/html/structnl2gl__t.html b/structnl2gl__t.html
index c7e939ba4..c7e939ba4 100644
--- a/html/structnl2gl__t.html
+++ b/structnl2gl__t.html
diff --git a/html/structnl2gl__t.js b/structnl2gl__t.js
index 125d155e8..125d155e8 100644
--- a/html/structnl2gl__t.js
+++ b/structnl2gl__t.js
diff --git a/html/structnode.html b/structnode.html
index 94a5aa161..94a5aa161 100644
--- a/html/structnode.html
+++ b/structnode.html
diff --git a/html/structnode.js b/structnode.js
index e204a5941..e204a5941 100644
--- a/html/structnode.js
+++ b/structnode.js
diff --git a/html/structnode__item.html b/structnode__item.html
index b6abc1e5e..b6abc1e5e 100644
--- a/html/structnode__item.html
+++ b/structnode__item.html
diff --git a/html/structnode__item.js b/structnode__item.js
index 7d4803a5e..7d4803a5e 100644
--- a/html/structnode__item.js
+++ b/structnode__item.js
diff --git a/html/structnotify__priv.html b/structnotify__priv.html
index 5e281c723..5e281c723 100644
--- a/html/structnotify__priv.html
+++ b/structnotify__priv.html
diff --git a/html/structnotify__priv.js b/structnotify__priv.js
index f05d42ba1..f05d42ba1 100644
--- a/html/structnotify__priv.js
+++ b/structnotify__priv.js
diff --git a/html/structo5m.html b/structo5m.html
index 6aaec79d8..6aaec79d8 100644
--- a/html/structo5m.html
+++ b/structo5m.html
diff --git a/html/structo5m.js b/structo5m.js
index 4f93a3437..4f93a3437 100644
--- a/html/structo5m.js
+++ b/structo5m.js
diff --git a/html/structobject__func.html b/structobject__func.html
index 5956fdab5..5956fdab5 100644
--- a/html/structobject__func.html
+++ b/structobject__func.html
diff --git a/html/structobject__func.js b/structobject__func.js
index 61a874472..61a874472 100644
--- a/html/structobject__func.js
+++ b/structobject__func.js
diff --git a/html/structodometer.html b/structodometer.html
index 5144ca5a0..5144ca5a0 100644
--- a/html/structodometer.html
+++ b/structodometer.html
diff --git a/html/structodometer.js b/structodometer.js
index 583785f39..583785f39 100644
--- a/html/structodometer.js
+++ b/structodometer.js
diff --git a/html/structoffset__len.html b/structoffset__len.html
index 2de111295..2de111295 100644
--- a/html/structoffset__len.html
+++ b/structoffset__len.html
diff --git a/html/structoffset__len.js b/structoffset__len.js
index a4f38fad3..a4f38fad3 100644
--- a/html/structoffset__len.js
+++ b/structoffset__len.js
diff --git a/html/structoption.html b/structoption.html
index 8c274961a..8c274961a 100644
--- a/html/structoption.html
+++ b/structoption.html
diff --git a/html/structoption.js b/structoption.js
index e612bc24a..e612bc24a 100644
--- a/html/structoption.js
+++ b/structoption.js
diff --git a/html/structosd.html b/structosd.html
index 822e2dc5d..822e2dc5d 100644
--- a/html/structosd.html
+++ b/structosd.html
diff --git a/html/structosd.js b/structosd.js
index ceedc3fde..ceedc3fde 100644
--- a/html/structosd.js
+++ b/structosd.js
diff --git a/html/structosd__button.html b/structosd__button.html
index 438edeefd..438edeefd 100644
--- a/html/structosd__button.html
+++ b/structosd__button.html
diff --git a/html/structosd__button.js b/structosd__button.js
index df59b4575..df59b4575 100644
--- a/html/structosd__button.js
+++ b/structosd__button.js
diff --git a/html/structosd__item.html b/structosd__item.html
index 1fda452d1..1fda452d1 100644
--- a/html/structosd__item.html
+++ b/structosd__item.html
diff --git a/html/structosd__item.js b/structosd__item.js
index c21932dc5..c21932dc5 100644
--- a/html/structosd__item.js
+++ b/structosd__item.js
diff --git a/html/structosd__item__methods.html b/structosd__item__methods.html
index 6232cfb0c..6232cfb0c 100644
--- a/html/structosd__item__methods.html
+++ b/structosd__item__methods.html
diff --git a/html/structosd__item__methods.js b/structosd__item__methods.js
index 537e8e45c..537e8e45c 100644
--- a/html/structosd__item__methods.js
+++ b/structosd__item__methods.js
diff --git a/html/structosd__methods.html b/structosd__methods.html
index bace9416d..bace9416d 100644
--- a/html/structosd__methods.html
+++ b/structosd__methods.html
diff --git a/html/structosd__methods.js b/structosd__methods.js
index 1fe3ac051..1fe3ac051 100644
--- a/html/structosd__methods.js
+++ b/structosd__methods.js
diff --git a/html/structosd__priv__common.html b/structosd__priv__common.html
index bb86bc0f5..bb86bc0f5 100644
--- a/html/structosd__priv__common.html
+++ b/structosd__priv__common.html
diff --git a/html/structosd__priv__common.js b/structosd__priv__common.js
index 4460c24ec..4460c24ec 100644
--- a/html/structosd__priv__common.js
+++ b/structosd__priv__common.js
diff --git a/html/structosd__scale.html b/structosd__scale.html
index 0c4dd5475..0c4dd5475 100644
--- a/html/structosd__scale.html
+++ b/structosd__scale.html
diff --git a/html/structosd__scale.js b/structosd__scale.js
index 0d235c26a..0d235c26a 100644
--- a/html/structosd__scale.js
+++ b/structosd__scale.js
diff --git a/html/structosd__speed__cam.html b/structosd__speed__cam.html
index 49485904f..49485904f 100644
--- a/html/structosd__speed__cam.html
+++ b/structosd__speed__cam.html
diff --git a/html/structosd__speed__cam.js b/structosd__speed__cam.js
index e606af2c4..e606af2c4 100644
--- a/html/structosd__speed__cam.js
+++ b/structosd__speed__cam.js
diff --git a/html/structosd__speed__cam__entry.html b/structosd__speed__cam__entry.html
index 8637393b0..8637393b0 100644
--- a/html/structosd__speed__cam__entry.html
+++ b/structosd__speed__cam__entry.html
diff --git a/html/structosd__speed__cam__entry.js b/structosd__speed__cam__entry.js
index ebf0b6bf3..ebf0b6bf3 100644
--- a/html/structosd__speed__cam__entry.js
+++ b/structosd__speed__cam__entry.js
diff --git a/html/structosd__speed__warner.html b/structosd__speed__warner.html
index 80d33b1fa..80d33b1fa 100644
--- a/html/structosd__speed__warner.html
+++ b/structosd__speed__warner.html
diff --git a/html/structosd__speed__warner.js b/structosd__speed__warner.js
index 8417de02f..8417de02f 100644
--- a/html/structosd__speed__warner.js
+++ b/structosd__speed__warner.js
diff --git a/html/structosd__text.html b/structosd__text.html
index 375e25323..375e25323 100644
--- a/html/structosd__text.html
+++ b/structosd__text.html
diff --git a/html/structosd__text.js b/structosd__text.js
index 5fab8ca47..5fab8ca47 100644
--- a/html/structosd__text.js
+++ b/structosd__text.js
diff --git a/html/structosd__text__item.html b/structosd__text__item.html
index 3d775fb20..3d775fb20 100644
--- a/html/structosd__text__item.html
+++ b/structosd__text__item.html
diff --git a/html/structosd__text__item.js b/structosd__text__item.js
index 73e6795a2..73e6795a2 100644
--- a/html/structosd__text__item.js
+++ b/structosd__text__item.js
diff --git a/html/structosm__protobufdb__context.html b/structosm__protobufdb__context.html
index 3c331e1af..3c331e1af 100644
--- a/html/structosm__protobufdb__context.html
+++ b/structosm__protobufdb__context.html
diff --git a/html/structosm__protobufdb__context.js b/structosm__protobufdb__context.js
index 1a8fe7606..1a8fe7606 100644
--- a/html/structosm__protobufdb__context.js
+++ b/structosm__protobufdb__context.js
diff --git a/html/structpadding.html b/structpadding.html
index fcd14fe5c..fcd14fe5c 100644
--- a/html/structpadding.html
+++ b/structpadding.html
diff --git a/html/structpadding.js b/structpadding.js
index 10bfaa26a..10bfaa26a 100644
--- a/html/structpadding.js
+++ b/structpadding.js
diff --git a/html/structparam__list.html b/structparam__list.html
index 5cb80f492..5cb80f492 100644
--- a/html/structparam__list.html
+++ b/structparam__list.html
diff --git a/html/structparam__list.js b/structparam__list.js
index 0a9075474..0a9075474 100644
--- a/html/structparam__list.js
+++ b/structparam__list.js
diff --git a/html/structparent.html b/structparent.html
index 7759ce880..7759ce880 100644
--- a/html/structparent.html
+++ b/structparent.html
diff --git a/html/structparent.js b/structparent.js
index e19b4748f..e19b4748f 100644
--- a/html/structparent.js
+++ b/structparent.js
diff --git a/html/structparse__args.html b/structparse__args.html
index a1763c985..a1763c985 100644
--- a/html/structparse__args.html
+++ b/structparse__args.html
diff --git a/html/structparse__args.js b/structparse__args.js
index e8ef4c739..e8ef4c739 100644
--- a/html/structparse__args.js
+++ b/structparse__args.js
diff --git a/html/structparsedata.html b/structparsedata.html
index cd9a3b421..cd9a3b421 100644
--- a/html/structparsedata.html
+++ b/structparsedata.html
diff --git a/html/structparsedata.js b/structparsedata.js
index 3c5c9d5fe..3c5c9d5fe 100644
--- a/html/structparsedata.js
+++ b/structparsedata.js
diff --git a/html/structpathattr.html b/structpathattr.html
index d781ff98d..d781ff98d 100644
--- a/html/structpathattr.html
+++ b/structpathattr.html
diff --git a/html/structpathattr.js b/structpathattr.js
index 3a0cb6405..3a0cb6405 100644
--- a/html/structpathattr.js
+++ b/structpathattr.js
diff --git a/html/structpcoord.html b/structpcoord.html
index bb473c3e7..bb473c3e7 100644
--- a/html/structpcoord.html
+++ b/structpcoord.html
diff --git a/html/structpcoord.js b/structpcoord.js
index f5c3e72f1..f5c3e72f1 100644
--- a/html/structpcoord.js
+++ b/structpcoord.js
diff --git a/html/structpcoordObject.html b/structpcoordObject.html
index b72d5b716..b72d5b716 100644
--- a/html/structpcoordObject.html
+++ b/structpcoordObject.html
diff --git a/html/structpcoordObject.js b/structpcoordObject.js
index dbe3682a4..dbe3682a4 100644
--- a/html/structpcoordObject.js
+++ b/structpcoordObject.js
diff --git a/html/structpedestrian.html b/structpedestrian.html
index cf0f60de0..cf0f60de0 100644
--- a/html/structpedestrian.html
+++ b/structpedestrian.html
diff --git a/html/structpedestrian.js b/structpedestrian.js
index 495472741..495472741 100644
--- a/html/structpedestrian.js
+++ b/structpedestrian.js
diff --git a/html/structphrase.html b/structphrase.html
index 979c10a8d..979c10a8d 100644
--- a/html/structphrase.html
+++ b/structphrase.html
diff --git a/html/structphrase.js b/structphrase.js
index 976f56ba9..976f56ba9 100644
--- a/html/structphrase.js
+++ b/structphrase.js
diff --git a/html/structplugin.html b/structplugin.html
index 712a84c42..712a84c42 100644
--- a/html/structplugin.html
+++ b/structplugin.html
diff --git a/html/structplugin.js b/structplugin.js
index 4e775950c..4e775950c 100644
--- a/html/structplugin.js
+++ b/structplugin.js
diff --git a/html/structplugins.html b/structplugins.html
index 5ed6c3409..5ed6c3409 100644
--- a/html/structplugins.html
+++ b/structplugins.html
diff --git a/html/structplugins.js b/structplugins.js
index b6d86ebcb..b6d86ebcb 100644
--- a/html/structplugins.js
+++ b/structplugins.js
diff --git a/html/structpng__color__16__struct.html b/structpng__color__16__struct.html
index 8967b5a81..8967b5a81 100644
--- a/html/structpng__color__16__struct.html
+++ b/structpng__color__16__struct.html
diff --git a/html/structpng__color__16__struct.js b/structpng__color__16__struct.js
index 9ae995c4e..9ae995c4e 100644
--- a/html/structpng__color__16__struct.js
+++ b/structpng__color__16__struct.js
diff --git a/html/structpng__color__8__struct.html b/structpng__color__8__struct.html
index 98a9e7a97..98a9e7a97 100644
--- a/html/structpng__color__8__struct.html
+++ b/structpng__color__8__struct.html
diff --git a/html/structpng__color__8__struct.js b/structpng__color__8__struct.js
index a4571e322..a4571e322 100644
--- a/html/structpng__color__8__struct.js
+++ b/structpng__color__8__struct.js
diff --git a/html/structpng__color__struct.html b/structpng__color__struct.html
index 2713241b1..2713241b1 100644
--- a/html/structpng__color__struct.html
+++ b/structpng__color__struct.html
diff --git a/html/structpng__color__struct.js b/structpng__color__struct.js
index 3ea600607..3ea600607 100644
--- a/html/structpng__color__struct.js
+++ b/structpng__color__struct.js
diff --git a/html/structpng__dsort__struct.html b/structpng__dsort__struct.html
index b6adf8f6d..b6adf8f6d 100644
--- a/html/structpng__dsort__struct.html
+++ b/structpng__dsort__struct.html
diff --git a/html/structpng__dsort__struct.js b/structpng__dsort__struct.js
index 8a3c8d12e..8a3c8d12e 100644
--- a/html/structpng__dsort__struct.js
+++ b/structpng__dsort__struct.js
diff --git a/html/structpng__info__struct.html b/structpng__info__struct.html
index 9d4a84a51..9d4a84a51 100644
--- a/html/structpng__info__struct.html
+++ b/structpng__info__struct.html
diff --git a/html/structpng__info__struct.js b/structpng__info__struct.js
index 3ce544278..3ce544278 100644
--- a/html/structpng__info__struct.js
+++ b/structpng__info__struct.js
diff --git a/html/structpng__row__info__struct.html b/structpng__row__info__struct.html
index 4f069513a..4f069513a 100644
--- a/html/structpng__row__info__struct.html
+++ b/structpng__row__info__struct.html
diff --git a/html/structpng__row__info__struct.js b/structpng__row__info__struct.js
index e92d1279a..e92d1279a 100644
--- a/html/structpng__row__info__struct.js
+++ b/structpng__row__info__struct.js
diff --git a/html/structpng__sPLT__entry__struct.html b/structpng__sPLT__entry__struct.html
index 66e7ad0bf..66e7ad0bf 100644
--- a/html/structpng__sPLT__entry__struct.html
+++ b/structpng__sPLT__entry__struct.html
diff --git a/html/structpng__sPLT__entry__struct.js b/structpng__sPLT__entry__struct.js
index bee4753db..bee4753db 100644
--- a/html/structpng__sPLT__entry__struct.js
+++ b/structpng__sPLT__entry__struct.js
diff --git a/html/structpng__sPLT__struct.html b/structpng__sPLT__struct.html
index 1322abab9..1322abab9 100644
--- a/html/structpng__sPLT__struct.html
+++ b/structpng__sPLT__struct.html
diff --git a/html/structpng__sPLT__struct.js b/structpng__sPLT__struct.js
index ca29480d1..ca29480d1 100644
--- a/html/structpng__sPLT__struct.js
+++ b/structpng__sPLT__struct.js
diff --git a/html/structpng__struct__def.html b/structpng__struct__def.html
index 3753780bf..3753780bf 100644
--- a/html/structpng__struct__def.html
+++ b/structpng__struct__def.html
diff --git a/html/structpng__struct__def.js b/structpng__struct__def.js
index 1ad8e990c..1ad8e990c 100644
--- a/html/structpng__struct__def.js
+++ b/structpng__struct__def.js
diff --git a/html/structpng__text__struct.html b/structpng__text__struct.html
index 78c2bf312..78c2bf312 100644
--- a/html/structpng__text__struct.html
+++ b/structpng__text__struct.html
diff --git a/html/structpng__text__struct.js b/structpng__text__struct.js
index 57e534c21..57e534c21 100644
--- a/html/structpng__text__struct.js
+++ b/structpng__text__struct.js
diff --git a/html/structpng__time__struct.html b/structpng__time__struct.html
index 34656ae5c..34656ae5c 100644
--- a/html/structpng__time__struct.html
+++ b/structpng__time__struct.html
diff --git a/html/structpng__time__struct.js b/structpng__time__struct.js
index 450244a3c..450244a3c 100644
--- a/html/structpng__time__struct.js
+++ b/structpng__time__struct.js
diff --git a/html/structpng__unknown__chunk__t.html b/structpng__unknown__chunk__t.html
index 849c4c372..849c4c372 100644
--- a/html/structpng__unknown__chunk__t.html
+++ b/structpng__unknown__chunk__t.html
diff --git a/html/structpng__unknown__chunk__t.js b/structpng__unknown__chunk__t.js
index 313ec26e8..313ec26e8 100644
--- a/html/structpng__unknown__chunk__t.js
+++ b/structpng__unknown__chunk__t.js
diff --git a/html/structpoi__param.html b/structpoi__param.html
index efd81cd39..efd81cd39 100644
--- a/html/structpoi__param.html
+++ b/structpoi__param.html
diff --git a/html/structpoi__param.js b/structpoi__param.js
index 3d29fb4b6..3d29fb4b6 100644
--- a/html/structpoi__param.js
+++ b/structpoi__param.js
diff --git a/html/structpoint.html b/structpoint.html
index dc501f9b7..dc501f9b7 100644
--- a/html/structpoint.html
+++ b/structpoint.html
diff --git a/html/structpoint.js b/structpoint.js
index 525a78b0c..525a78b0c 100644
--- a/html/structpoint.js
+++ b/structpoint.js
diff --git a/html/structpoint__rect.html b/structpoint__rect.html
index 25f97e483..25f97e483 100644
--- a/html/structpoint__rect.html
+++ b/structpoint__rect.html
diff --git a/html/structpoint__rect.js b/structpoint__rect.js
index 657d85177..657d85177 100644
--- a/html/structpoint__rect.js
+++ b/structpoint__rect.js
diff --git a/html/structpoly__priv.html b/structpoly__priv.html
index 39facac09..39facac09 100644
--- a/html/structpoly__priv.html
+++ b/structpoly__priv.html
diff --git a/html/structpoly__priv.js b/structpoly__priv.js
index 288cc73e5..288cc73e5 100644
--- a/html/structpoly__priv.js
+++ b/structpoly__priv.js
diff --git a/html/structpopulation__table.html b/structpopulation__table.html
index 609d6100f..609d6100f 100644
--- a/html/structpopulation__table.html
+++ b/structpopulation__table.html
diff --git a/html/structpopulation__table.js b/structpopulation__table.js
index 842f6611b..842f6611b 100644
--- a/html/structpopulation__table.js
+++ b/structpopulation__table.js
diff --git a/html/structprocess__relation__member__func__priv.html b/structprocess__relation__member__func__priv.html
index 4d97185a8..4d97185a8 100644
--- a/html/structprocess__relation__member__func__priv.html
+++ b/structprocess__relation__member__func__priv.html
diff --git a/html/structprocess__relation__member__func__priv.js b/structprocess__relation__member__func__priv.js
index 4c669db3b..4c669db3b 100644
--- a/html/structprocess__relation__member__func__priv.js
+++ b/structprocess__relation__member__func__priv.js
diff --git a/html/structprofile__option.html b/structprofile__option.html
index 883166e20..883166e20 100644
--- a/html/structprofile__option.html
+++ b/structprofile__option.html
diff --git a/html/structprojection__name.html b/structprojection__name.html
index da3022c04..da3022c04 100644
--- a/html/structprojection__name.html
+++ b/structprojection__name.html
diff --git a/html/structprojection__name.js b/structprojection__name.js
index 3a0289c3e..3a0289c3e 100644
--- a/html/structprojection__name.js
+++ b/structprojection__name.js
diff --git a/html/structquadtree__data.html b/structquadtree__data.html
index 4de5f693c..4de5f693c 100644
--- a/html/structquadtree__data.html
+++ b/structquadtree__data.html
diff --git a/html/structquadtree__data.js b/structquadtree__data.js
index 4761f4848..4761f4848 100644
--- a/html/structquadtree__data.js
+++ b/structquadtree__data.js
diff --git a/html/structquadtree__item.html b/structquadtree__item.html
index eb1bccb7c..eb1bccb7c 100644
--- a/html/structquadtree__item.html
+++ b/structquadtree__item.html
diff --git a/html/structquadtree__item.js b/structquadtree__item.js
index de1cae2a6..de1cae2a6 100644
--- a/html/structquadtree__item.js
+++ b/structquadtree__item.js
diff --git a/html/structquadtree__iter.html b/structquadtree__iter.html
index 1f9577c8b..1f9577c8b 100644
--- a/html/structquadtree__iter.html
+++ b/structquadtree__iter.html
diff --git a/html/structquadtree__iter.js b/structquadtree__iter.js
index 30b640617..30b640617 100644
--- a/html/structquadtree__iter.js
+++ b/structquadtree__iter.js
diff --git a/html/structquadtree__iter__node.html b/structquadtree__iter__node.html
index ef8ee485a..ef8ee485a 100644
--- a/html/structquadtree__iter__node.html
+++ b/structquadtree__iter__node.html
diff --git a/html/structquadtree__iter__node.js b/structquadtree__iter__node.js
index 8063ba5e8..8063ba5e8 100644
--- a/html/structquadtree__iter__node.js
+++ b/structquadtree__iter__node.js
diff --git a/html/structquadtree__node.html b/structquadtree__node.html
index 3195897d2..3195897d2 100644
--- a/html/structquadtree__node.html
+++ b/structquadtree__node.html
diff --git a/html/structquadtree__node.js b/structquadtree__node.js
index 631cf1b82..631cf1b82 100644
--- a/html/structquadtree__node.js
+++ b/structquadtree__node.js
diff --git a/html/structrange.html b/structrange.html
index 4834ac94e..4834ac94e 100644
--- a/html/structrange.html
+++ b/structrange.html
diff --git a/html/structrange.js b/structrange.js
index 953090948..953090948 100644
--- a/html/structrange.js
+++ b/structrange.js
diff --git a/html/structrect.html b/structrect.html
index 8cdc5fa2a..8cdc5fa2a 100644
--- a/html/structrect.html
+++ b/structrect.html
diff --git a/html/structrect.js b/structrect.js
index c5d8dda84..c5d8dda84 100644
--- a/html/structrect.js
+++ b/structrect.js
diff --git a/html/structregion__header.html b/structregion__header.html
index 737fa3e37..737fa3e37 100644
--- a/html/structregion__header.html
+++ b/structregion__header.html
diff --git a/html/structregion__header.js b/structregion__header.js
index ccd072e3b..ccd072e3b 100644
--- a/html/structregion__header.js
+++ b/structregion__header.js
diff --git a/html/structrelation__member.html b/structrelation__member.html
index ef599b20f..ef599b20f 100644
--- a/html/structrelation__member.html
+++ b/structrelation__member.html
diff --git a/html/structrelation__member.js b/structrelation__member.js
index c79e5d91a..c79e5d91a 100644
--- a/html/structrelation__member.js
+++ b/structrelation__member.js
diff --git a/html/structrelations.html b/structrelations.html
index 9b0b16149..9b0b16149 100644
--- a/html/structrelations.html
+++ b/structrelations.html
diff --git a/html/structrelations.js b/structrelations.js
index 5a3eae1e0..5a3eae1e0 100644
--- a/html/structrelations.js
+++ b/structrelations.js
diff --git a/html/structrelations__func.html b/structrelations__func.html
index d09562695..d09562695 100644
--- a/html/structrelations__func.html
+++ b/structrelations__func.html
diff --git a/html/structrelations__func.js b/structrelations__func.js
index acf98a6a8..acf98a6a8 100644
--- a/html/structrelations__func.js
+++ b/structrelations__func.js
diff --git a/html/structrelations__member.html b/structrelations__member.html
index 6dd1bce98..6dd1bce98 100644
--- a/html/structrelations__member.html
+++ b/structrelations__member.html
diff --git a/html/structrelations__member.js b/structrelations__member.js
index 32a74b37f..32a74b37f 100644
--- a/html/structrelations__member.js
+++ b/structrelations__member.js
diff --git a/html/structresonator__t.html b/structresonator__t.html
index 7c6ef8313..7c6ef8313 100644
--- a/html/structresonator__t.html
+++ b/structresonator__t.html
diff --git a/html/structresonator__t.js b/structresonator__t.js
index b5f5b6647..b5f5b6647 100644
--- a/html/structresonator__t.js
+++ b/structresonator__t.js
diff --git a/html/structresult.html b/structresult.html
index a3e0c3a47..a3e0c3a47 100644
--- a/html/structresult.html
+++ b/structresult.html
diff --git a/html/structresult.js b/structresult.js
index 9cf541a60..9cf541a60 100644
--- a/html/structresult.js
+++ b/structresult.js
diff --git a/html/structresult__list.html b/structresult__list.html
index bb215382c..bb215382c 100644
--- a/html/structresult__list.html
+++ b/structresult__list.html
diff --git a/html/structresult__list.js b/structresult__list.js
index a1779fd0b..a1779fd0b 100644
--- a/html/structresult__list.js
+++ b/structresult__list.js
diff --git a/html/structrgn__point.html b/structrgn__point.html
index 27216f7ce..27216f7ce 100644
--- a/html/structrgn__point.html
+++ b/structrgn__point.html
diff --git a/html/structrgn__point.js b/structrgn__point.js
index 061898991..061898991 100644
--- a/html/structrgn__point.js
+++ b/structrgn__point.js
diff --git a/html/structrgn__poly.html b/structrgn__poly.html
index b7a06d859..b7a06d859 100644
--- a/html/structrgn__poly.html
+++ b/structrgn__poly.html
diff --git a/html/structrgn__poly.js b/structrgn__poly.js
index ac290e52d..ac290e52d 100644
--- a/html/structrgn__poly.js
+++ b/structrgn__poly.js
diff --git a/html/structroadprofile.html b/structroadprofile.html
index 0c9a19213..0c9a19213 100644
--- a/html/structroadprofile.html
+++ b/structroadprofile.html
diff --git a/html/structroadprofile.js b/structroadprofile.js
index 10a898646..10a898646 100644
--- a/html/structroadprofile.js
+++ b/structroadprofile.js
diff --git a/html/structrocket.html b/structrocket.html
index 504d59e9e..504d59e9e 100644
--- a/html/structrocket.html
+++ b/structrocket.html
diff --git a/html/structrocket.js b/structrocket.js
index 11130146a..11130146a 100644
--- a/html/structrocket.js
+++ b/structrocket.js
diff --git a/html/structroute.html b/structroute.html
index 722611fb7..722611fb7 100644
--- a/html/structroute.html
+++ b/structroute.html
diff --git a/html/structroute.js b/structroute.js
index 6431195b4..6431195b4 100644
--- a/html/structroute.js
+++ b/structroute.js
diff --git a/html/structrouteObject.html b/structrouteObject.html
index 2a99cecab..2a99cecab 100644
--- a/html/structrouteObject.html
+++ b/structrouteObject.html
diff --git a/html/structrouteObject.js b/structrouteObject.js
index 17b44c8a0..17b44c8a0 100644
--- a/html/structrouteObject.js
+++ b/structrouteObject.js
diff --git a/html/structroute__crossing.html b/structroute__crossing.html
index c95d0670d..c95d0670d 100644
--- a/html/structroute__crossing.html
+++ b/structroute__crossing.html
diff --git a/html/structroute__crossing.js b/structroute__crossing.js
index 4c400c699..4c400c699 100644
--- a/html/structroute__crossing.js
+++ b/structroute__crossing.js
diff --git a/html/structroute__crossings.html b/structroute__crossings.html
index ceef8599e..ceef8599e 100644
--- a/html/structroute__crossings.html
+++ b/structroute__crossings.html
diff --git a/html/structroute__crossings.js b/structroute__crossings.js
index c36ef94c9..c36ef94c9 100644
--- a/html/structroute__crossings.js
+++ b/structroute__crossings.js
diff --git a/html/structroute__data.html b/structroute__data.html
index add57d29d..add57d29d 100644
--- a/html/structroute__data.html
+++ b/structroute__data.html
diff --git a/html/structroute__data.js b/structroute__data.js
index 65359871c..65359871c 100644
--- a/html/structroute__data.js
+++ b/structroute__data.js
diff --git a/html/structroute__graph.html b/structroute__graph.html
index ca9fb0fc0..ca9fb0fc0 100644
--- a/html/structroute__graph.html
+++ b/structroute__graph.html
diff --git a/html/structroute__graph.js b/structroute__graph.js
index d86a275a1..d86a275a1 100644
--- a/html/structroute__graph.js
+++ b/structroute__graph.js
diff --git a/html/structroute__graph__point.html b/structroute__graph__point.html
index eec4bcc40..eec4bcc40 100644
--- a/html/structroute__graph__point.html
+++ b/structroute__graph__point.html
diff --git a/html/structroute__graph__point.js b/structroute__graph__point.js
index c84a38308..c84a38308 100644
--- a/html/structroute__graph__point.js
+++ b/structroute__graph__point.js
diff --git a/html/structroute__graph__point__iterator.html b/structroute__graph__point__iterator.html
index 9d1be579e..9d1be579e 100644
--- a/html/structroute__graph__point__iterator.html
+++ b/structroute__graph__point__iterator.html
diff --git a/html/structroute__graph__point__iterator.js b/structroute__graph__point__iterator.js
index c883faee7..c883faee7 100644
--- a/html/structroute__graph__point__iterator.js
+++ b/structroute__graph__point__iterator.js
diff --git a/html/structroute__graph__segment.html b/structroute__graph__segment.html
index 17caeef67..17caeef67 100644
--- a/html/structroute__graph__segment.html
+++ b/structroute__graph__segment.html
diff --git a/html/structroute__graph__segment.js b/structroute__graph__segment.js
index 6518a3a0f..6518a3a0f 100644
--- a/html/structroute__graph__segment.js
+++ b/structroute__graph__segment.js
diff --git a/html/structroute__graph__segment__data.html b/structroute__graph__segment__data.html
index 39c03fbe0..39c03fbe0 100644
--- a/html/structroute__graph__segment__data.html
+++ b/structroute__graph__segment__data.html
diff --git a/html/structroute__graph__segment__data.js b/structroute__graph__segment__data.js
index 900db1134..900db1134 100644
--- a/html/structroute__graph__segment__data.js
+++ b/structroute__graph__segment__data.js
diff --git a/html/structroute__guard.html b/structroute__guard.html
index 27e59ec39..27e59ec39 100644
--- a/html/structroute__guard.html
+++ b/structroute__guard.html
diff --git a/html/structroute__guard.js b/structroute__guard.js
index 960f0010c..960f0010c 100644
--- a/html/structroute__guard.js
+++ b/structroute__guard.js
diff --git a/html/structroute__info.html b/structroute__info.html
index 656066b69..656066b69 100644
--- a/html/structroute__info.html
+++ b/structroute__info.html
diff --git a/html/structroute__info.js b/structroute__info.js
index 7ade020fe..7ade020fe 100644
--- a/html/structroute__info.js
+++ b/structroute__info.js
diff --git a/html/structroute__path.html b/structroute__path.html
index 7c626bc15..7c626bc15 100644
--- a/html/structroute__path.html
+++ b/structroute__path.html
diff --git a/html/structroute__path.js b/structroute__path.js
index 0579adbb4..0579adbb4 100644
--- a/html/structroute__path.js
+++ b/structroute__path.js
diff --git a/html/structroute__path__segment.html b/structroute__path__segment.html
index 594f616a0..594f616a0 100644
--- a/html/structroute__path__segment.html
+++ b/structroute__path__segment.html
diff --git a/html/structroute__path__segment.js b/structroute__path__segment.js
index 7a5153e66..7a5153e66 100644
--- a/html/structroute__path__segment.js
+++ b/structroute__path__segment.js
diff --git a/html/structroute__segment__data.html b/structroute__segment__data.html
index 6bd6e1092..6bd6e1092 100644
--- a/html/structroute__segment__data.html
+++ b/structroute__segment__data.html
diff --git a/html/structroute__segment__data.js b/structroute__segment__data.js
index fd3476228..fd3476228 100644
--- a/html/structroute__segment__data.js
+++ b/structroute__segment__data.js
diff --git a/html/structroute__traffic__distortion.html b/structroute__traffic__distortion.html
index 0cfbcd9fb..0cfbcd9fb 100644
--- a/html/structroute__traffic__distortion.html
+++ b/structroute__traffic__distortion.html
diff --git a/html/structroute__traffic__distortion.js b/structroute__traffic__distortion.js
index 3eece7950..3eece7950 100644
--- a/html/structroute__traffic__distortion.js
+++ b/structroute__traffic__distortion.js
diff --git a/html/structscript.html b/structscript.html
index fdacfe3cf..fdacfe3cf 100644
--- a/html/structscript.html
+++ b/structscript.html
diff --git a/html/structscript.js b/structscript.js
index 56e22ebac..56e22ebac 100644
--- a/html/structscript.js
+++ b/structscript.js
diff --git a/html/structscroll__buttons.html b/structscroll__buttons.html
index bb9d20f91..bb9d20f91 100644
--- a/html/structscroll__buttons.html
+++ b/structscroll__buttons.html
diff --git a/html/structscroll__buttons.js b/structscroll__buttons.js
index a3c6a333c..a3c6a333c 100644
--- a/html/structscroll__buttons.js
+++ b/structscroll__buttons.js
diff --git a/html/structsearch__list.html b/structsearch__list.html
index 69c4a843b..69c4a843b 100644
--- a/html/structsearch__list.html
+++ b/structsearch__list.html
diff --git a/html/structsearch__list.js b/structsearch__list.js
index 7932c237a..7932c237a 100644
--- a/html/structsearch__list.js
+++ b/structsearch__list.js
diff --git a/html/structsearch__list__common.html b/structsearch__list__common.html
index ff6a35e42..ff6a35e42 100644
--- a/html/structsearch__list__common.html
+++ b/structsearch__list__common.html
diff --git a/html/structsearch__list__common.js b/structsearch__list__common.js
index 13f6b227b..13f6b227b 100644
--- a/html/structsearch__list__common.js
+++ b/structsearch__list__common.js
diff --git a/html/structsearch__list__country.html b/structsearch__list__country.html
index 27c0bb055..27c0bb055 100644
--- a/html/structsearch__list__country.html
+++ b/structsearch__list__country.html
diff --git a/html/structsearch__list__country.js b/structsearch__list__country.js
index 3f0212d5d..3f0212d5d 100644
--- a/html/structsearch__list__country.js
+++ b/structsearch__list__country.js
diff --git a/html/structsearch__list__house__number.html b/structsearch__list__house__number.html
index acab7ffcb..acab7ffcb 100644
--- a/html/structsearch__list__house__number.html
+++ b/structsearch__list__house__number.html
diff --git a/html/structsearch__list__house__number.js b/structsearch__list__house__number.js
index b98e606c5..b98e606c5 100644
--- a/html/structsearch__list__house__number.js
+++ b/structsearch__list__house__number.js
diff --git a/html/structsearch__list__level.html b/structsearch__list__level.html
index 0c78815e7..0c78815e7 100644
--- a/html/structsearch__list__level.html
+++ b/structsearch__list__level.html
diff --git a/html/structsearch__list__level.js b/structsearch__list__level.js
index b650bca72..b650bca72 100644
--- a/html/structsearch__list__level.js
+++ b/structsearch__list__level.js
diff --git a/html/structsearch__list__result.html b/structsearch__list__result.html
index 4ca6d4589..4ca6d4589 100644
--- a/html/structsearch__list__result.html
+++ b/structsearch__list__result.html
diff --git a/html/structsearch__list__result.js b/structsearch__list__result.js
index 1dcbc4d96..1dcbc4d96 100644
--- a/html/structsearch__list__result.js
+++ b/structsearch__list__result.js
diff --git a/html/structsearch__list__street.html b/structsearch__list__street.html
index 3603ea2ef..3603ea2ef 100644
--- a/html/structsearch__list__street.html
+++ b/structsearch__list__street.html
diff --git a/html/structsearch__list__street.js b/structsearch__list__street.js
index a6f21694d..a6f21694d 100644
--- a/html/structsearch__list__street.js
+++ b/structsearch__list__street.js
diff --git a/html/structsearch__list__town.html b/structsearch__list__town.html
index ef72d71eb..ef72d71eb 100644
--- a/html/structsearch__list__town.html
+++ b/structsearch__list__town.html
diff --git a/html/structsearch__list__town.js b/structsearch__list__town.js
index 098e8c525..098e8c525 100644
--- a/html/structsearch__list__town.js
+++ b/structsearch__list__town.js
diff --git a/html/structselector.html b/structselector.html
index 70714bfce..70714bfce 100644
--- a/html/structselector.html
+++ b/structselector.html
diff --git a/html/structselector.js b/structselector.js
index 0b3a1127f..0b3a1127f 100644
--- a/html/structselector.js
+++ b/structselector.js
diff --git a/html/structshape__tree__node.html b/structshape__tree__node.html
index f2583d952..f2583d952 100644
--- a/html/structshape__tree__node.html
+++ b/structshape__tree__node.html
diff --git a/html/structshape__tree__node.js b/structshape__tree__node.js
index 8e9da098d..8e9da098d 100644
--- a/html/structshape__tree__node.js
+++ b/structshape__tree__node.js
diff --git a/html/structshmem__header.html b/structshmem__header.html
index d4106c8b6..d4106c8b6 100644
--- a/html/structshmem__header.html
+++ b/structshmem__header.html
diff --git a/html/structshmem__header.js b/structshmem__header.js
index b1c6049d7..b1c6049d7 100644
--- a/html/structshmem__header.js
+++ b/structshmem__header.js
diff --git a/html/structsize__weight__limit.html b/structsize__weight__limit.html
index 31c55fbe9..31c55fbe9 100644
--- a/html/structsize__weight__limit.html
+++ b/structsize__weight__limit.html
diff --git a/html/structsize__weight__limit.js b/structsize__weight__limit.js
index aeb53366f..aeb53366f 100644
--- a/html/structsize__weight__limit.js
+++ b/structsize__weight__limit.js
diff --git a/html/structspawn__process__info.html b/structspawn__process__info.html
index 8b410ffdb..8b410ffdb 100644
--- a/html/structspawn__process__info.html
+++ b/structspawn__process__info.html
diff --git a/html/structspawn__process__info.js b/structspawn__process__info.js
index ad41c10ad..ad41c10ad 100644
--- a/html/structspawn__process__info.js
+++ b/structspawn__process__info.js
diff --git a/html/structspeech.html b/structspeech.html
index abfaf2494..abfaf2494 100644
--- a/html/structspeech.html
+++ b/structspeech.html
diff --git a/html/structspeech.js b/structspeech.js
index c9a85f490..c9a85f490 100644
--- a/html/structspeech.js
+++ b/structspeech.js
diff --git a/html/structspeech__methods.html b/structspeech__methods.html
index c3d5405a5..c3d5405a5 100644
--- a/html/structspeech__methods.html
+++ b/structspeech__methods.html
diff --git a/html/structspeech__methods.js b/structspeech__methods.js
index 3051137b8..3051137b8 100644
--- a/html/structspeech__methods.js
+++ b/structspeech__methods.js
diff --git a/html/structspeech__priv.html b/structspeech__priv.html
index eb30d34e7..eb30d34e7 100644
--- a/html/structspeech__priv.html
+++ b/structspeech__priv.html
diff --git a/html/structspeech__priv.js b/structspeech__priv.js
index ceb8eae50..ceb8eae50 100644
--- a/html/structspeech__priv.js
+++ b/structspeech__priv.js
diff --git a/html/structstat.html b/structstat.html
index d2a566068..d2a566068 100644
--- a/html/structstat.html
+++ b/structstat.html
diff --git a/html/structstat.js b/structstat.js
index ba457fe6d..ba457fe6d 100644
--- a/html/structstat.js
+++ b/structstat.js
diff --git a/html/structstat__file__info__t.html b/structstat__file__info__t.html
index 7f76db466..7f76db466 100644
--- a/html/structstat__file__info__t.html
+++ b/structstat__file__info__t.html
diff --git a/html/structstat__file__info__t.js b/structstat__file__info__t.js
index 02ea81c6b..02ea81c6b 100644
--- a/html/structstat__file__info__t.js
+++ b/structstat__file__info__t.js
diff --git a/html/structstatusbar__priv.html b/structstatusbar__priv.html
index db3b4d363..db3b4d363 100644
--- a/html/structstatusbar__priv.html
+++ b/structstatusbar__priv.html
diff --git a/html/structstatusbar__priv.js b/structstatusbar__priv.js
index 93f6eb39e..93f6eb39e 100644
--- a/html/structstatusbar__priv.js
+++ b/structstatusbar__priv.js
diff --git a/html/structstopwatch.html b/structstopwatch.html
index fb30d58a8..fb30d58a8 100644
--- a/html/structstopwatch.html
+++ b/structstopwatch.html
diff --git a/html/structstopwatch.js b/structstopwatch.js
index 6d9d7be5e..6d9d7be5e 100644
--- a/html/structstopwatch.js
+++ b/structstopwatch.js
diff --git a/html/structstreet__data.html b/structstreet__data.html
index e91e48fb2..e91e48fb2 100644
--- a/html/structstreet__data.html
+++ b/structstreet__data.html
diff --git a/html/structstreet__data.js b/structstreet__data.js
index d339a406a..d339a406a 100644
--- a/html/structstreet__data.js
+++ b/structstreet__data.js
diff --git a/html/structstreet__destination.html b/structstreet__destination.html
index ba91eadbb..ba91eadbb 100644
--- a/html/structstreet__destination.html
+++ b/structstreet__destination.html
diff --git a/html/structstreet__destination.js b/structstreet__destination.js
index d183bceea..d183bceea 100644
--- a/html/structstreet__destination.js
+++ b/structstreet__destination.js
diff --git a/html/structstreet__header.html b/structstreet__header.html
index 1eb609a30..1eb609a30 100644
--- a/html/structstreet__header.html
+++ b/structstreet__header.html
diff --git a/html/structstreet__header.js b/structstreet__header.js
index 8d8e04a60..8d8e04a60 100644
--- a/html/structstreet__header.js
+++ b/structstreet__header.js
diff --git a/html/structstreet__header__type.html b/structstreet__header__type.html
index 7c79559ec..7c79559ec 100644
--- a/html/structstreet__header__type.html
+++ b/structstreet__header__type.html
diff --git a/html/structstreet__header__type.js b/structstreet__header__type.js
index 657c494a9..657c494a9 100644
--- a/html/structstreet__header__type.js
+++ b/structstreet__header__type.js
diff --git a/html/structstreet__name.html b/structstreet__name.html
index 31759f297..31759f297 100644
--- a/html/structstreet__name.html
+++ b/structstreet__name.html
diff --git a/html/structstreet__name.js b/structstreet__name.js
index 565a1c168..565a1c168 100644
--- a/html/structstreet__name.js
+++ b/structstreet__name.js
diff --git a/html/structstreet__name__index.html b/structstreet__name__index.html
index bce521a97..bce521a97 100644
--- a/html/structstreet__name__index.html
+++ b/structstreet__name__index.html
diff --git a/html/structstreet__name__index.js b/structstreet__name__index.js
index 21a0ad388..21a0ad388 100644
--- a/html/structstreet__name__index.js
+++ b/structstreet__name__index.js
diff --git a/html/structstreet__name__number.html b/structstreet__name__number.html
index abf62f690..abf62f690 100644
--- a/html/structstreet__name__number.html
+++ b/structstreet__name__number.html
diff --git a/html/structstreet__name__number.js b/structstreet__name__number.js
index 98806da5c..98806da5c 100644
--- a/html/structstreet__name__number.js
+++ b/structstreet__name__number.js
diff --git a/html/structstreet__name__numbers.html b/structstreet__name__numbers.html
index 0d0792d89..0d0792d89 100644
--- a/html/structstreet__name__numbers.html
+++ b/structstreet__name__numbers.html
diff --git a/html/structstreet__name__numbers.js b/structstreet__name__numbers.js
index a41a2a896..a41a2a896 100644
--- a/html/structstreet__name__numbers.js
+++ b/structstreet__name__numbers.js
diff --git a/html/structstreet__name__segment.html b/structstreet__name__segment.html
index e92a09215..e92a09215 100644
--- a/html/structstreet__name__segment.html
+++ b/structstreet__name__segment.html
diff --git a/html/structstreet__name__segment.js b/structstreet__name__segment.js
index b90e4060f..b90e4060f 100644
--- a/html/structstreet__name__segment.js
+++ b/structstreet__name__segment.js
diff --git a/html/structstreet__priv.html b/structstreet__priv.html
index 34dd0dba4..34dd0dba4 100644
--- a/html/structstreet__priv.html
+++ b/structstreet__priv.html
diff --git a/html/structstreet__priv.js b/structstreet__priv.js
index 0ff7ec456..0ff7ec456 100644
--- a/html/structstreet__priv.js
+++ b/structstreet__priv.js
diff --git a/html/structstreet__str.html b/structstreet__str.html
index 0ef94884d..0ef94884d 100644
--- a/html/structstreet__str.html
+++ b/structstreet__str.html
diff --git a/html/structstreet__str.js b/structstreet__str.js
index 27aa3fa32..27aa3fa32 100644
--- a/html/structstreet__str.js
+++ b/structstreet__str.js
diff --git a/html/structstreet__type.html b/structstreet__type.html
index 610ef9486..610ef9486 100644
--- a/html/structstreet__type.html
+++ b/structstreet__type.html
diff --git a/html/structstreet__type.js b/structstreet__type.js
index 3525eb7ac..3525eb7ac 100644
--- a/html/structstreet__type.js
+++ b/structstreet__type.js
diff --git a/html/structstring__desc.html b/structstring__desc.html
index 74640a09d..74640a09d 100644
--- a/html/structstring__desc.html
+++ b/structstring__desc.html
diff --git a/html/structstring__desc.js b/structstring__desc.js
index a40a3833c..a40a3833c 100644
--- a/html/structstring__desc.js
+++ b/structstring__desc.js
diff --git a/html/structsubdivision.html b/structsubdivision.html
index 32923a9f2..32923a9f2 100644
--- a/html/structsubdivision.html
+++ b/structsubdivision.html
diff --git a/html/structsubdivision.js b/structsubdivision.js
index cc19471ff..cc19471ff 100644
--- a/html/structsubdivision.js
+++ b/structsubdivision.js
diff --git a/html/structsuffix.html b/structsuffix.html
index 4da019d24..4da019d24 100644
--- a/html/structsuffix.html
+++ b/structsuffix.html
diff --git a/html/structsuffix.js b/structsuffix.js
index 6287fd81b..6287fd81b 100644
--- a/html/structsuffix.js
+++ b/structsuffix.js
diff --git a/html/structsysdep__segment.html b/structsysdep__segment.html
index 692927f89..692927f89 100644
--- a/html/structsysdep__segment.html
+++ b/structsysdep__segment.html
diff --git a/html/structsysdep__segment.js b/structsysdep__segment.js
index 4b242208d..4b242208d 100644
--- a/html/structsysdep__segment.js
+++ b/structsysdep__segment.js
diff --git a/html/structsysdep__string.html b/structsysdep__string.html
index 5be5377ae..5be5377ae 100644
--- a/html/structsysdep__string.html
+++ b/structsysdep__string.html
diff --git a/html/structsysdep__string.js b/structsysdep__string.js
index ae34a5697..ae34a5697 100644
--- a/html/structsysdep__string.js
+++ b/structsysdep__string.js
diff --git a/html/structsysdep__string_1_1segment__pair.html b/structsysdep__string_1_1segment__pair.html
index f10eb7695..f10eb7695 100644
--- a/html/structsysdep__string_1_1segment__pair.html
+++ b/structsysdep__string_1_1segment__pair.html
diff --git a/html/structsysdep__string_1_1segment__pair.js b/structsysdep__string_1_1segment__pair.js
index 818b3ec06..818b3ec06 100644
--- a/html/structsysdep__string_1_1segment__pair.js
+++ b/structsysdep__string_1_1segment__pair.js
diff --git a/html/structsysdep__string__desc.html b/structsysdep__string__desc.html
index 819f8cc28..819f8cc28 100644
--- a/html/structsysdep__string__desc.html
+++ b/structsysdep__string__desc.html
diff --git a/html/structsysdep__string__desc.js b/structsysdep__string__desc.js
index afe9b942f..afe9b942f 100644
--- a/html/structsysdep__string__desc.js
+++ b/structsysdep__string__desc.js
diff --git a/html/structt__espeak__character.html b/structt__espeak__character.html
index ceca03429..ceca03429 100644
--- a/html/structt__espeak__character.html
+++ b/structt__espeak__character.html
diff --git a/html/structt__espeak__character.js b/structt__espeak__character.js
index 978e3e050..978e3e050 100644
--- a/html/structt__espeak__character.js
+++ b/structt__espeak__character.js
diff --git a/html/structt__espeak__command.html b/structt__espeak__command.html
index 02b0d82bc..02b0d82bc 100644
--- a/html/structt__espeak__command.html
+++ b/structt__espeak__command.html
diff --git a/html/structt__espeak__command.js b/structt__espeak__command.js
index 4c4a0efe2..4c4a0efe2 100644
--- a/html/structt__espeak__command.js
+++ b/structt__espeak__command.js
diff --git a/html/structt__espeak__key.html b/structt__espeak__key.html
index 6621a127c..6621a127c 100644
--- a/html/structt__espeak__key.html
+++ b/structt__espeak__key.html
diff --git a/html/structt__espeak__key.js b/structt__espeak__key.js
index 4abc97296..4abc97296 100644
--- a/html/structt__espeak__key.js
+++ b/structt__espeak__key.js
diff --git a/html/structt__espeak__mark.html b/structt__espeak__mark.html
index 4aa565503..4aa565503 100644
--- a/html/structt__espeak__mark.html
+++ b/structt__espeak__mark.html
diff --git a/html/structt__espeak__mark.js b/structt__espeak__mark.js
index b26f05fee..b26f05fee 100644
--- a/html/structt__espeak__mark.js
+++ b/structt__espeak__mark.js
diff --git a/html/structt__espeak__parameter.html b/structt__espeak__parameter.html
index 934595c0a..934595c0a 100644
--- a/html/structt__espeak__parameter.html
+++ b/structt__espeak__parameter.html
diff --git a/html/structt__espeak__parameter.js b/structt__espeak__parameter.js
index bbb402b47..bbb402b47 100644
--- a/html/structt__espeak__parameter.js
+++ b/structt__espeak__parameter.js
diff --git a/html/structt__espeak__terminated__msg.html b/structt__espeak__terminated__msg.html
index b517618bd..b517618bd 100644
--- a/html/structt__espeak__terminated__msg.html
+++ b/structt__espeak__terminated__msg.html
diff --git a/html/structt__espeak__terminated__msg.js b/structt__espeak__terminated__msg.js
index bf09406dd..bf09406dd 100644
--- a/html/structt__espeak__terminated__msg.js
+++ b/structt__espeak__terminated__msg.js
diff --git a/html/structt__espeak__text.html b/structt__espeak__text.html
index c8d3ec557..c8d3ec557 100644
--- a/html/structt__espeak__text.html
+++ b/structt__espeak__text.html
diff --git a/html/structt__espeak__text.js b/structt__espeak__text.js
index 31c40c5b0..31c40c5b0 100644
--- a/html/structt__espeak__text.js
+++ b/structt__espeak__text.js
diff --git a/html/structtable__column__desc.html b/structtable__column__desc.html
index 18de997ee..18de997ee 100644
--- a/html/structtable__column__desc.html
+++ b/structtable__column__desc.html
diff --git a/html/structtable__column__desc.js b/structtable__column__desc.js
index f06fe5dfc..f06fe5dfc 100644
--- a/html/structtable__column__desc.js
+++ b/structtable__column__desc.js
diff --git a/html/structtable__data.html b/structtable__data.html
index 539066bc3..539066bc3 100644
--- a/html/structtable__data.html
+++ b/structtable__data.html
diff --git a/html/structtable__data.js b/structtable__data.js
index d95ae4bd8..d95ae4bd8 100644
--- a/html/structtable__data.js
+++ b/structtable__data.js
diff --git a/html/structtagSHPObject.html b/structtagSHPObject.html
index 6aef15b23..6aef15b23 100644
--- a/html/structtagSHPObject.html
+++ b/structtagSHPObject.html
diff --git a/html/structtagSHPObject.js b/structtagSHPObject.js
index b62e5058c..b62e5058c 100644
--- a/html/structtagSHPObject.js
+++ b/structtagSHPObject.js
diff --git a/html/structtcoord.html b/structtcoord.html
index e56779b75..e56779b75 100644
--- a/html/structtcoord.html
+++ b/structtcoord.html
diff --git a/html/structtcoord.js b/structtcoord.js
index e80be6483..e80be6483 100644
--- a/html/structtcoord.js
+++ b/structtcoord.js
diff --git a/html/structtemplateObject.html b/structtemplateObject.html
index c5bab6fcb..c5bab6fcb 100644
--- a/html/structtemplateObject.html
+++ b/structtemplateObject.html
diff --git a/html/structtemplateObject.js b/structtemplateObject.js
index 43b981174..43b981174 100644
--- a/html/structtemplateObject.js
+++ b/structtemplateObject.js
diff --git a/html/structtile.html b/structtile.html
index c9f0f2784..c9f0f2784 100644
--- a/html/structtile.html
+++ b/structtile.html
diff --git a/html/structtile.js b/structtile.js
index 30b2d00b4..30b2d00b4 100644
--- a/html/structtile.js
+++ b/structtile.js
diff --git a/html/structtile__data.html b/structtile__data.html
index 973b01c29..973b01c29 100644
--- a/html/structtile__data.html
+++ b/structtile__data.html
diff --git a/html/structtile__data.js b/structtile__data.js
index c5b8c564c..c5b8c564c 100644
--- a/html/structtile__data.js
+++ b/structtile__data.js
diff --git a/html/structtile__head.html b/structtile__head.html
index e81d37d75..e81d37d75 100644
--- a/html/structtile__head.html
+++ b/structtile__head.html
diff --git a/html/structtile__head.js b/structtile__head.js
index 24b8fcb4a..24b8fcb4a 100644
--- a/html/structtile__head.js
+++ b/structtile__head.js
diff --git a/html/structtile__info.html b/structtile__info.html
index 404b99c7c..404b99c7c 100644
--- a/html/structtile__info.html
+++ b/structtile__info.html
diff --git a/html/structtile__info.js b/structtile__info.js
index 8743bb01f..8743bb01f 100644
--- a/html/structtile__info.js
+++ b/structtile__info.js
diff --git a/html/structtile__parameter.html b/structtile__parameter.html
index a7017e533..a7017e533 100644
--- a/html/structtile__parameter.html
+++ b/structtile__parameter.html
diff --git a/html/structtile__parameter.js b/structtile__parameter.js
index 347ea4c86..347ea4c86 100644
--- a/html/structtile__parameter.js
+++ b/structtile__parameter.js
diff --git a/html/structtilt__data.html b/structtilt__data.html
index 1834a83ce..1834a83ce 100644
--- a/html/structtilt__data.html
+++ b/structtilt__data.html
diff --git a/html/structtilt__data.js b/structtilt__data.js
index 39c084f15..39c084f15 100644
--- a/html/structtilt__data.js
+++ b/structtilt__data.js
diff --git a/html/structtimestamp.html b/structtimestamp.html
index 296876749..296876749 100644
--- a/html/structtimestamp.html
+++ b/structtimestamp.html
diff --git a/html/structtimestamp.js b/structtimestamp.js
index 08368d413..08368d413 100644
--- a/html/structtimestamp.js
+++ b/structtimestamp.js
diff --git a/html/structtimeval.html b/structtimeval.html
index b64fb692a..b64fb692a 100644
--- a/html/structtimeval.html
+++ b/structtimeval.html
diff --git a/html/structtimeval.js b/structtimeval.js
index f83d986dd..f83d986dd 100644
--- a/html/structtimeval.js
+++ b/structtimeval.js
diff --git a/html/structtimezone.html b/structtimezone.html
index a2cbaab76..a2cbaab76 100644
--- a/html/structtimezone.html
+++ b/structtimezone.html
diff --git a/html/structtimezone.js b/structtimezone.js
index 784268c6f..784268c6f 100644
--- a/html/structtimezone.js
+++ b/structtimezone.js
diff --git a/html/structtown__country.html b/structtown__country.html
index 50b7d3c93..50b7d3c93 100644
--- a/html/structtown__country.html
+++ b/structtown__country.html
diff --git a/html/structtown__country.js b/structtown__country.js
index 62ed769bb..62ed769bb 100644
--- a/html/structtown__country.js
+++ b/structtown__country.js
diff --git a/html/structtown__priv.html b/structtown__priv.html
index 5d4b7d56c..5d4b7d56c 100644
--- a/html/structtown__priv.html
+++ b/structtown__priv.html
diff --git a/html/structtown__priv.js b/structtown__priv.js
index 16bbebf73..16bbebf73 100644
--- a/html/structtown__priv.js
+++ b/structtown__priv.js
diff --git a/html/structtracking.html b/structtracking.html
index 0bd91bc7f..0bd91bc7f 100644
--- a/html/structtracking.html
+++ b/structtracking.html
diff --git a/html/structtracking.js b/structtracking.js
index b7d91478d..b7d91478d 100644
--- a/html/structtracking.js
+++ b/structtracking.js
diff --git a/html/structtracking__line.html b/structtracking__line.html
index 9dbe0f427..9dbe0f427 100644
--- a/html/structtracking__line.html
+++ b/structtracking__line.html
diff --git a/html/structtracking__line.js b/structtracking__line.js
index 5d0b3b5e7..5d0b3b5e7 100644
--- a/html/structtracking__line.js
+++ b/structtracking__line.js
diff --git a/html/structtransformation.html b/structtransformation.html
index f7bce51a5..f7bce51a5 100644
--- a/html/structtransformation.html
+++ b/structtransformation.html
diff --git a/html/structtransformation.js b/structtransformation.js
index e78db5b9f..e78db5b9f 100644
--- a/html/structtransformation.js
+++ b/structtransformation.js
diff --git a/html/structtree__hdr.html b/structtree__hdr.html
index b3c5a217a..b3c5a217a 100644
--- a/html/structtree__hdr.html
+++ b/structtree__hdr.html
diff --git a/html/structtree__hdr.js b/structtree__hdr.js
index 75a61e499..75a61e499 100644
--- a/html/structtree__hdr.js
+++ b/structtree__hdr.js
diff --git a/html/structtree__hdr__h.html b/structtree__hdr__h.html
index 659a56a4a..659a56a4a 100644
--- a/html/structtree__hdr__h.html
+++ b/structtree__hdr__h.html
diff --git a/html/structtree__hdr__h.js b/structtree__hdr__h.js
index a2a4168b3..a2a4168b3 100644
--- a/html/structtree__hdr__h.js
+++ b/structtree__hdr__h.js
diff --git a/html/structtree__hdr__v.html b/structtree__hdr__v.html
index 96daaa8c4..96daaa8c4 100644
--- a/html/structtree__hdr__v.html
+++ b/structtree__hdr__v.html
diff --git a/html/structtree__hdr__v.js b/structtree__hdr__v.js
index 3186c11c9..3186c11c9 100644
--- a/html/structtree__hdr__v.js
+++ b/structtree__hdr__v.js
diff --git a/html/structtree__header.html b/structtree__header.html
index 2cae33f72..2cae33f72 100644
--- a/html/structtree__header.html
+++ b/structtree__header.html
diff --git a/html/structtree__header.js b/structtree__header.js
index 3d97dc642..3d97dc642 100644
--- a/html/structtree__header.js
+++ b/structtree__header.js
diff --git a/html/structtree__leaf__h.html b/structtree__leaf__h.html
index 27aa85ff2..27aa85ff2 100644
--- a/html/structtree__leaf__h.html
+++ b/structtree__leaf__h.html
diff --git a/html/structtree__leaf__h.js b/structtree__leaf__h.js
index bdea6b574..bdea6b574 100644
--- a/html/structtree__leaf__h.js
+++ b/structtree__leaf__h.js
diff --git a/html/structtree__leaf__v.html b/structtree__leaf__v.html
index 021303ff7..021303ff7 100644
--- a/html/structtree__leaf__v.html
+++ b/structtree__leaf__v.html
diff --git a/html/structtree__leaf__v.js b/structtree__leaf__v.js
index e482ab958..e482ab958 100644
--- a/html/structtree__leaf__v.js
+++ b/structtree__leaf__v.js
diff --git a/html/structtree__search.html b/structtree__search.html
index c9ebf0a06..c9ebf0a06 100644
--- a/html/structtree__search.html
+++ b/structtree__search.html
diff --git a/html/structtree__search.js b/structtree__search.js
index 038c77a11..038c77a11 100644
--- a/html/structtree__search.js
+++ b/structtree__search.js
diff --git a/html/structtree__search__node.html b/structtree__search__node.html
index 33ff73b32..33ff73b32 100644
--- a/html/structtree__search__node.html
+++ b/structtree__search__node.html
diff --git a/html/structtree__search__node.js b/structtree__search__node.js
index d4063e5d3..d4063e5d3 100644
--- a/html/structtree__search__node.js
+++ b/structtree__search__node.js
diff --git a/html/structtriple.html b/structtriple.html
index 2e4326cb1..2e4326cb1 100644
--- a/html/structtriple.html
+++ b/structtriple.html
diff --git a/html/structtriple.js b/structtriple.js
index e35686c68..e35686c68 100644
--- a/html/structtriple.js
+++ b/structtriple.js
diff --git a/html/structturn__restriction.html b/structturn__restriction.html
index 433954a29..433954a29 100644
--- a/html/structturn__restriction.html
+++ b/structturn__restriction.html
diff --git a/html/structturn__restriction.js b/structturn__restriction.js
index 6f377d2cf..6f377d2cf 100644
--- a/html/structturn__restriction.js
+++ b/structturn__restriction.js
diff --git a/html/structvehicle.html b/structvehicle.html
index 7899a1ebc..7899a1ebc 100644
--- a/html/structvehicle.html
+++ b/structvehicle.html
diff --git a/html/structvehicle.js b/structvehicle.js
index 22e6c4a17..22e6c4a17 100644
--- a/html/structvehicle.js
+++ b/structvehicle.js
diff --git a/html/structvehicle__and__profilename.html b/structvehicle__and__profilename.html
index ea9ffbe93..ea9ffbe93 100644
--- a/html/structvehicle__and__profilename.html
+++ b/structvehicle__and__profilename.html
diff --git a/html/structvehicle__and__profilename.js b/structvehicle__and__profilename.js
index 1d9100931..1d9100931 100644
--- a/html/structvehicle__and__profilename.js
+++ b/structvehicle__and__profilename.js
diff --git a/html/structvehicle__methods.html b/structvehicle__methods.html
index abdac6133..abdac6133 100644
--- a/html/structvehicle__methods.html
+++ b/structvehicle__methods.html
diff --git a/html/structvehicle__methods.js b/structvehicle__methods.js
index 2e01d9328..2e01d9328 100644
--- a/html/structvehicle__methods.js
+++ b/structvehicle__methods.js
diff --git a/html/structvehicle__priv.html b/structvehicle__priv.html
index a14807e87..a14807e87 100644
--- a/html/structvehicle__priv.html
+++ b/structvehicle__priv.html
diff --git a/html/structvehicle__priv.js b/structvehicle__priv.js
index a0ebf0113..a0ebf0113 100644
--- a/html/structvehicle__priv.js
+++ b/structvehicle__priv.js
diff --git a/html/structvehicleprofile.html b/structvehicleprofile.html
index 7075eb39a..7075eb39a 100644
--- a/html/structvehicleprofile.html
+++ b/structvehicleprofile.html
diff --git a/html/structvehicleprofile.js b/structvehicleprofile.js
index 418f07f7d..418f07f7d 100644
--- a/html/structvehicleprofile.js
+++ b/structvehicleprofile.js
diff --git a/html/structvoice__t.html b/structvoice__t.html
index 259948b26..259948b26 100644
--- a/html/structvoice__t.html
+++ b/structvoice__t.html
diff --git a/html/structvoice__t.js b/structvoice__t.js
index 922715f34..922715f34 100644
--- a/html/structvoice__t.js
+++ b/structvoice__t.js
diff --git a/html/structvolume.html b/structvolume.html
index ef5a5b0ec..ef5a5b0ec 100644
--- a/html/structvolume.html
+++ b/structvolume.html
diff --git a/html/structvolume.js b/structvolume.js
index fd724ba4a..fd724ba4a 100644
--- a/html/structvolume.js
+++ b/structvolume.js
diff --git a/html/structwavegen__peaks__t.html b/structwavegen__peaks__t.html
index 398c93b09..398c93b09 100644
--- a/html/structwavegen__peaks__t.html
+++ b/structwavegen__peaks__t.html
diff --git a/html/structwavegen__peaks__t.js b/structwavegen__peaks__t.js
index 1bbdde077..1bbdde077 100644
--- a/html/structwavegen__peaks__t.js
+++ b/structwavegen__peaks__t.js
diff --git a/html/structwchar__t__directive.html b/structwchar__t__directive.html
index 7d35e3ce5..7d35e3ce5 100644
--- a/html/structwchar__t__directive.html
+++ b/structwchar__t__directive.html
diff --git a/html/structwchar__t__directive.js b/structwchar__t__directive.js
index 0a2f61b58..0a2f61b58 100644
--- a/html/structwchar__t__directive.js
+++ b/structwchar__t__directive.js
diff --git a/html/structwchar__t__directives.html b/structwchar__t__directives.html
index 64f19ae53..64f19ae53 100644
--- a/html/structwchar__t__directives.html
+++ b/structwchar__t__directives.html
diff --git a/html/structwchar__t__directives.js b/structwchar__t__directives.js
index 6b9967d6e..6b9967d6e 100644
--- a/html/structwchar__t__directives.js
+++ b/structwchar__t__directives.js
diff --git a/html/structwidget.html b/structwidget.html
index 020b05600..020b05600 100644
--- a/html/structwidget.html
+++ b/structwidget.html
diff --git a/html/structwidget.js b/structwidget.js
index 03dc8f333..03dc8f333 100644
--- a/html/structwidget.js
+++ b/structwidget.js
diff --git a/html/structwin32__binding__private.html b/structwin32__binding__private.html
index 0e34913df..0e34913df 100644
--- a/html/structwin32__binding__private.html
+++ b/structwin32__binding__private.html
diff --git a/html/structwin32__binding__private.js b/structwin32__binding__private.js
index 3a5258e56..3a5258e56 100644
--- a/html/structwin32__binding__private.js
+++ b/structwin32__binding__private.js
diff --git a/html/structwindow.html b/structwindow.html
index af4d6e5f9..af4d6e5f9 100644
--- a/html/structwindow.html
+++ b/structwindow.html
diff --git a/html/structwindow.js b/structwindow.js
index ae44f3388..ae44f3388 100644
--- a/html/structwindow.js
+++ b/structwindow.js
diff --git a/html/structwindow__data.html b/structwindow__data.html
index 61d2f7da9..61d2f7da9 100644
--- a/html/structwindow__data.html
+++ b/structwindow__data.html
diff --git a/html/structwindow__data.js b/structwindow__data.js
index f193ba6d7..f193ba6d7 100644
--- a/html/structwindow__data.js
+++ b/structwindow__data.js
diff --git a/html/structwindow__priv.html b/structwindow__priv.html
index fc739152c..fc739152c 100644
--- a/html/structwindow__priv.html
+++ b/structwindow__priv.html
diff --git a/html/structwindow__priv.js b/structwindow__priv.js
index b8ac7de92..b8ac7de92 100644
--- a/html/structwindow__priv.js
+++ b/structwindow__priv.js
diff --git a/html/structwordexp__t.html b/structwordexp__t.html
index e137a4907..e137a4907 100644
--- a/html/structwordexp__t.html
+++ b/structwordexp__t.html
diff --git a/html/structwordexp__t.js b/structwordexp__t.js
index 8049094f9..8049094f9 100644
--- a/html/structwordexp__t.js
+++ b/structwordexp__t.js
diff --git a/html/structwpoint.html b/structwpoint.html
index 33df00f98..33df00f98 100644
--- a/html/structwpoint.html
+++ b/structwpoint.html
diff --git a/html/structwpoint.js b/structwpoint.js
index 28aa81fa2..28aa81fa2 100644
--- a/html/structwpoint.js
+++ b/structwpoint.js
diff --git a/html/structxistate.html b/structxistate.html
index 3086377a3..3086377a3 100644
--- a/html/structxistate.html
+++ b/structxistate.html
diff --git a/html/structxistate.js b/structxistate.js
index 9bd227a51..9bd227a51 100644
--- a/html/structxistate.js
+++ b/structxistate.js
diff --git a/html/structxmldocument.html b/structxmldocument.html
index deb9e5e56..deb9e5e56 100644
--- a/html/structxmldocument.html
+++ b/structxmldocument.html
diff --git a/html/structxmldocument.js b/structxmldocument.js
index 95ef2ab2a..95ef2ab2a 100644
--- a/html/structxmldocument.js
+++ b/structxmldocument.js
diff --git a/html/structxmlstate.html b/structxmlstate.html
index ee98fa0f5..ee98fa0f5 100644
--- a/html/structxmlstate.html
+++ b/structxmlstate.html
diff --git a/html/structxmlstate.js b/structxmlstate.js
index c95f7ae69..c95f7ae69 100644
--- a/html/structxmlstate.js
+++ b/structxmlstate.js
diff --git a/html/structz__clip__result.html b/structz__clip__result.html
index 8e0260874..8e0260874 100644
--- a/html/structz__clip__result.html
+++ b/structz__clip__result.html
diff --git a/html/structz__clip__result.js b/structz__clip__result.js
index 702a6d1f5..702a6d1f5 100644
--- a/html/structz__clip__result.js
+++ b/structz__clip__result.js
diff --git a/html/structz__stream__s.html b/structz__stream__s.html
index f40c96f1a..f40c96f1a 100644
--- a/html/structz__stream__s.html
+++ b/structz__stream__s.html
diff --git a/html/structz__stream__s.js b/structz__stream__s.js
index d63e03424..d63e03424 100644
--- a/html/structz__stream__s.js
+++ b/structz__stream__s.js
diff --git a/html/structzip64__eoc.html b/structzip64__eoc.html
index 24b52b1a5..24b52b1a5 100644
--- a/html/structzip64__eoc.html
+++ b/structzip64__eoc.html
diff --git a/html/structzip64__eoc.js b/structzip64__eoc.js
index 48b69e075..48b69e075 100644
--- a/html/structzip64__eoc.js
+++ b/structzip64__eoc.js
diff --git a/html/structzip64__eocl.html b/structzip64__eocl.html
index 9fafbe3b5..9fafbe3b5 100644
--- a/html/structzip64__eocl.html
+++ b/structzip64__eocl.html
diff --git a/html/structzip64__eocl.js b/structzip64__eocl.js
index bf574d5be..bf574d5be 100644
--- a/html/structzip64__eocl.js
+++ b/structzip64__eocl.js
diff --git a/html/structzip__alignment__check.html b/structzip__alignment__check.html
index 4baf1b226..4baf1b226 100644
--- a/html/structzip__alignment__check.html
+++ b/structzip__alignment__check.html
diff --git a/html/structzip__alignment__check.js b/structzip__alignment__check.js
index 7d22dfd56..7d22dfd56 100644
--- a/html/structzip__alignment__check.js
+++ b/structzip__alignment__check.js
diff --git a/html/structzip__cd.html b/structzip__cd.html
index 6bdb52fdb..6bdb52fdb 100644
--- a/html/structzip__cd.html
+++ b/structzip__cd.html
diff --git a/html/structzip__cd.js b/structzip__cd.js
index d1132fad0..d1132fad0 100644
--- a/html/structzip__cd.js
+++ b/structzip__cd.js
diff --git a/html/structzip__cd__ext.html b/structzip__cd__ext.html
index 9b6fa0abb..9b6fa0abb 100644
--- a/html/structzip__cd__ext.html
+++ b/structzip__cd__ext.html
diff --git a/html/structzip__cd__ext.js b/structzip__cd__ext.js
index 679228997..679228997 100644
--- a/html/structzip__cd__ext.js
+++ b/structzip__cd__ext.js
diff --git a/html/structzip__enc.html b/structzip__enc.html
index 08628ead5..08628ead5 100644
--- a/html/structzip__enc.html
+++ b/structzip__enc.html
diff --git a/html/structzip__enc.js b/structzip__enc.js
index dd3e3bfc6..dd3e3bfc6 100644
--- a/html/structzip__enc.js
+++ b/structzip__enc.js
diff --git a/html/structzip__eoc.html b/structzip__eoc.html
index c0e961de0..c0e961de0 100644
--- a/html/structzip__eoc.html
+++ b/structzip__eoc.html
diff --git a/html/structzip__eoc.js b/structzip__eoc.js
index 85ed18752..85ed18752 100644
--- a/html/structzip__eoc.js
+++ b/structzip__eoc.js
diff --git a/html/structzip__info.html b/structzip__info.html
index f590a05ff..f590a05ff 100644
--- a/html/structzip__info.html
+++ b/structzip__info.html
diff --git a/html/structzip__info.js b/structzip__info.js
index 784eb5c8f..784eb5c8f 100644
--- a/html/structzip__info.js
+++ b/structzip__info.js
diff --git a/html/structzip__lfh.html b/structzip__lfh.html
index 1b3132279..1b3132279 100644
--- a/html/structzip__lfh.html
+++ b/structzip__lfh.html
diff --git a/html/structzip__lfh.js b/structzip__lfh.js
index 38fe9fd8f..38fe9fd8f 100644
--- a/html/structzip__lfh.js
+++ b/structzip__lfh.js
diff --git a/html/structzip__split.html b/structzip__split.html
index d2601f7f8..d2601f7f8 100644
--- a/html/structzip__split.html
+++ b/structzip__split.html
diff --git a/html/structzip__split.js b/structzip__split.js
index 091aaa7a7..091aaa7a7 100644
--- a/html/structzip__split.js
+++ b/structzip__split.js
diff --git a/html/sunriset_8h_source.html b/sunriset_8h_source.html
index f7fd37647..f7fd37647 100644
--- a/html/sunriset_8h_source.html
+++ b/sunriset_8h_source.html
diff --git a/html/support_2espeak_2debug_8h_source.html b/support_2espeak_2debug_8h_source.html
index 9726b2eff..9726b2eff 100644
--- a/html/support_2espeak_2debug_8h_source.html
+++ b/support_2espeak_2debug_8h_source.html
diff --git a/html/support_2espeak_2event_8h_source.html b/support_2espeak_2event_8h_source.html
index 09901f2d6..09901f2d6 100644
--- a/html/support_2espeak_2event_8h_source.html
+++ b/support_2espeak_2event_8h_source.html
diff --git a/html/support_2espeak_2speech_8h_source.html b/support_2espeak_2speech_8h_source.html
index 7dad6fc6a..7dad6fc6a 100644
--- a/html/support_2espeak_2speech_8h_source.html
+++ b/support_2espeak_2speech_8h_source.html
diff --git a/html/support_2libc_2sys_2types_8h_source.html b/support_2libc_2sys_2types_8h_source.html
index a5b3673f8..a5b3673f8 100644
--- a/html/support_2libc_2sys_2types_8h_source.html
+++ b/support_2libc_2sys_2types_8h_source.html
diff --git a/html/sync_off.png b/sync_off.png
index 3b443fc62..3b443fc62 100644
--- a/html/sync_off.png
+++ b/sync_off.png
Binary files differ
diff --git a/html/sync_on.png b/sync_on.png
index e08320fb6..e08320fb6 100644
--- a/html/sync_on.png
+++ b/sync_on.png
Binary files differ
diff --git a/html/synthesize_8h_source.html b/synthesize_8h_source.html
index 805b55191..805b55191 100644
--- a/html/synthesize_8h_source.html
+++ b/synthesize_8h_source.html
diff --git a/html/tab_a.png b/tab_a.png
index 3b725c41c..3b725c41c 100644
--- a/html/tab_a.png
+++ b/tab_a.png
Binary files differ
diff --git a/html/tab_b.png b/tab_b.png
index e2b4a8638..e2b4a8638 100644
--- a/html/tab_b.png
+++ b/tab_b.png
Binary files differ
diff --git a/html/tab_h.png b/tab_h.png
index fd5cb7054..fd5cb7054 100644
--- a/html/tab_h.png
+++ b/tab_h.png
Binary files differ
diff --git a/html/tab_s.png b/tab_s.png
index ab478c95b..ab478c95b 100644
--- a/html/tab_s.png
+++ b/tab_s.png
Binary files differ
diff --git a/html/tabs.css b/tabs.css
index 9cf578f23..9cf578f23 100644
--- a/html/tabs.css
+++ b/tabs.css
diff --git a/html/textfile_8h_source.html b/textfile_8h_source.html
index e896e5289..e896e5289 100644
--- a/html/textfile_8h_source.html
+++ b/textfile_8h_source.html
diff --git a/html/time_8h_source.html b/time_8h_source.html
index 0c16b5ab3..0c16b5ab3 100644
--- a/html/time_8h_source.html
+++ b/time_8h_source.html
diff --git a/html/timeutil_8h_source.html b/timeutil_8h_source.html
index 9e213c016..9e213c016 100644
--- a/html/timeutil_8h_source.html
+++ b/timeutil_8h_source.html
diff --git a/html/todo.html b/todo.html
index 1ed6d877c..1ed6d877c 100644
--- a/html/todo.html
+++ b/todo.html
diff --git a/html/track_8h_source.html b/track_8h_source.html
index 3995b6959..3995b6959 100644
--- a/html/track_8h_source.html
+++ b/track_8h_source.html
diff --git a/html/transform_8c.html b/transform_8c.html
index 45519312b..45519312b 100644
--- a/html/transform_8c.html
+++ b/transform_8c.html
diff --git a/html/transform_8c.js b/transform_8c.js
index e7c7a816e..e7c7a816e 100644
--- a/html/transform_8c.js
+++ b/transform_8c.js
diff --git a/html/transform_8h_source.html b/transform_8h_source.html
index e27b58d9f..e27b58d9f 100644
--- a/html/transform_8h_source.html
+++ b/transform_8h_source.html
diff --git a/html/translate_8h_source.html b/translate_8h_source.html
index 68dcb55b1..68dcb55b1 100644
--- a/html/translate_8h_source.html
+++ b/translate_8h_source.html
diff --git a/html/types_8h_source.html b/types_8h_source.html
index a0f3fff9d..a0f3fff9d 100644
--- a/html/types_8h_source.html
+++ b/types_8h_source.html
diff --git a/html/union__GDoubleIEEE754.html b/union__GDoubleIEEE754.html
index 9c58dbe8d..9c58dbe8d 100644
--- a/html/union__GDoubleIEEE754.html
+++ b/union__GDoubleIEEE754.html
diff --git a/html/union__GDoubleIEEE754.js b/union__GDoubleIEEE754.js
index 2fd6ca2bb..2fd6ca2bb 100644
--- a/html/union__GDoubleIEEE754.js
+++ b/union__GDoubleIEEE754.js
diff --git a/html/union__GFloatIEEE754.html b/union__GFloatIEEE754.html
index 044c628b7..044c628b7 100644
--- a/html/union__GFloatIEEE754.html
+++ b/union__GFloatIEEE754.html
diff --git a/html/union__GFloatIEEE754.js b/union__GFloatIEEE754.js
index 079b12de8..079b12de8 100644
--- a/html/union__GFloatIEEE754.js
+++ b/union__GFloatIEEE754.js
diff --git a/html/union__GSystemThread.html b/union__GSystemThread.html
index 82b0c4ec9..82b0c4ec9 100644
--- a/html/union__GSystemThread.html
+++ b/union__GSystemThread.html
diff --git a/html/union__GSystemThread.js b/union__GSystemThread.js
index 8f7828ceb..8f7828ceb 100644
--- a/html/union__GSystemThread.js
+++ b/union__GSystemThread.js
diff --git a/html/uniont__espeak__command_1_1command.html b/uniont__espeak__command_1_1command.html
index c4fd9eb12..c4fd9eb12 100644
--- a/html/uniont__espeak__command_1_1command.html
+++ b/uniont__espeak__command_1_1command.html
diff --git a/html/uniont__espeak__command_1_1command.js b/uniont__espeak__command_1_1command.js
index 20d753a31..20d753a31 100644
--- a/html/uniont__espeak__command_1_1command.js
+++ b/uniont__espeak__command_1_1command.js
diff --git a/html/unionyyalloc.html b/unionyyalloc.html
index 23213a957..23213a957 100644
--- a/html/unionyyalloc.html
+++ b/unionyyalloc.html
diff --git a/html/unionyyalloc.js b/unionyyalloc.js
index 5361817bb..5361817bb 100644
--- a/html/unionyyalloc.js
+++ b/unionyyalloc.js
diff --git a/html/unionyystype.html b/unionyystype.html
index 042af074c..042af074c 100644
--- a/html/unionyystype.html
+++ b/unionyystype.html
diff --git a/html/unionyystype.js b/unionyystype.js
index 87cb7fd70..87cb7fd70 100644
--- a/html/unionyystype.js
+++ b/unionyystype.js
diff --git a/html/unistd_8h_source.html b/unistd_8h_source.html
index 170f6a2d9..170f6a2d9 100644
--- a/html/unistd_8h_source.html
+++ b/unistd_8h_source.html
diff --git a/html/util_8h_source.html b/util_8h_source.html
index e94ed14eb..e94ed14eb 100644
--- a/html/util_8h_source.html
+++ b/util_8h_source.html
diff --git a/html/vasnprintf_8h_source.html b/vasnprintf_8h_source.html
index e373773cd..e373773cd 100644
--- a/html/vasnprintf_8h_source.html
+++ b/vasnprintf_8h_source.html
diff --git a/html/vasnwprintf_8h_source.html b/vasnwprintf_8h_source.html
index 5ebbec576..5ebbec576 100644
--- a/html/vasnwprintf_8h_source.html
+++ b/vasnwprintf_8h_source.html
diff --git a/html/vehicleProxy_8h_source.html b/vehicleProxy_8h_source.html
index f01e0dfc7..f01e0dfc7 100644
--- a/html/vehicleProxy_8h_source.html
+++ b/vehicleProxy_8h_source.html
diff --git a/html/vehicle_8c.html b/vehicle_8c.html
index 98304da8e..98304da8e 100644
--- a/html/vehicle_8c.html
+++ b/vehicle_8c.html
diff --git a/html/vehicle_8c.js b/vehicle_8c.js
index fbccdea15..fbccdea15 100644
--- a/html/vehicle_8c.js
+++ b/vehicle_8c.js
diff --git a/html/vehicle_8h_source.html b/vehicle_8h_source.html
index 483cca062..483cca062 100644
--- a/html/vehicle_8h_source.html
+++ b/vehicle_8h_source.html
diff --git a/html/vehicle__android_8c.html b/vehicle__android_8c.html
index 3197c38a7..3197c38a7 100644
--- a/html/vehicle__android_8c.html
+++ b/vehicle__android_8c.html
diff --git a/html/vehicle__android_8c.js b/vehicle__android_8c.js
index 9bc76013c..9bc76013c 100644
--- a/html/vehicle__android_8c.js
+++ b/vehicle__android_8c.js
diff --git a/html/vehicle__gypsy_8c.html b/vehicle__gypsy_8c.html
index 6f7c41956..6f7c41956 100644
--- a/html/vehicle__gypsy_8c.html
+++ b/vehicle__gypsy_8c.html
diff --git a/html/vehicle__gypsy_8c.js b/vehicle__gypsy_8c.js
index 843211fbf..843211fbf 100644
--- a/html/vehicle__gypsy_8c.js
+++ b/vehicle__gypsy_8c.js
diff --git a/html/vehicle__null_8c.html b/vehicle__null_8c.html
index 5fa1f94a4..5fa1f94a4 100644
--- a/html/vehicle__null_8c.html
+++ b/vehicle__null_8c.html
diff --git a/html/vehicle__null_8c.js b/vehicle__null_8c.js
index 90e5ce7aa..90e5ce7aa 100644
--- a/html/vehicle__null_8c.js
+++ b/vehicle__null_8c.js
diff --git a/html/vehicle__qt5_8h_source.html b/vehicle__qt5_8h_source.html
index 2bba4b1c3..2bba4b1c3 100644
--- a/html/vehicle__qt5_8h_source.html
+++ b/vehicle__qt5_8h_source.html
diff --git a/html/vehicle__webos_8h_source.html b/vehicle__webos_8h_source.html
index 9d9c57ae6..9d9c57ae6 100644
--- a/html/vehicle__webos_8h_source.html
+++ b/vehicle__webos_8h_source.html
diff --git a/html/vehicleprofile_8h_source.html b/vehicleprofile_8h_source.html
index f99a5bed6..f99a5bed6 100644
--- a/html/vehicleprofile_8h_source.html
+++ b/vehicleprofile_8h_source.html
diff --git a/html/voice_8h_source.html b/voice_8h_source.html
index a2b0668ee..a2b0668ee 100644
--- a/html/voice_8h_source.html
+++ b/voice_8h_source.html
diff --git a/html/wave_8h_source.html b/wave_8h_source.html
index bff7ac483..bff7ac483 100644
--- a/html/wave_8h_source.html
+++ b/wave_8h_source.html
diff --git a/html/win32__gui__notify_8h_source.html b/win32__gui__notify_8h_source.html
index 89546aa11..89546aa11 100644
--- a/html/win32__gui__notify_8h_source.html
+++ b/win32__gui__notify_8h_source.html
diff --git a/html/window_8h_source.html b/window_8h_source.html
index 5e22d23c8..5e22d23c8 100644
--- a/html/window_8h_source.html
+++ b/window_8h_source.html
diff --git a/html/wordexp_8h_source.html b/wordexp_8h_source.html
index 5da6578b6..5da6578b6 100644
--- a/html/wordexp_8h_source.html
+++ b/wordexp_8h_source.html
diff --git a/html/wprintf-parse_8h_source.html b/wprintf-parse_8h_source.html
index 1d81573d4..1d81573d4 100644
--- a/html/wprintf-parse_8h_source.html
+++ b/wprintf-parse_8h_source.html
diff --git a/html/xmlconfig_8h_source.html b/xmlconfig_8h_source.html
index ea41724be..ea41724be 100644
--- a/html/xmlconfig_8h_source.html
+++ b/xmlconfig_8h_source.html
diff --git a/html/xpm2bmp_8h_source.html b/xpm2bmp_8h_source.html
index 710759c6f..710759c6f 100644
--- a/html/xpm2bmp_8h_source.html
+++ b/xpm2bmp_8h_source.html
diff --git a/html/xsize_8h_source.html b/xsize_8h_source.html
index 5200d8db3..5200d8db3 100644
--- a/html/xsize_8h_source.html
+++ b/xsize_8h_source.html
diff --git a/html/zconf_8h_source.html b/zconf_8h_source.html
index b7b21999f..b7b21999f 100644
--- a/html/zconf_8h_source.html
+++ b/zconf_8h_source.html
diff --git a/html/zipfile_8h_source.html b/zipfile_8h_source.html
index cbfe51dbc..cbfe51dbc 100644
--- a/html/zipfile_8h_source.html
+++ b/zipfile_8h_source.html
diff --git a/html/zlib_8h_source.html b/zlib_8h_source.html
index ca9fe0542..ca9fe0542 100644
--- a/html/zlib_8h_source.html
+++ b/zlib_8h_source.html
diff --git a/html/zutil_8h_source.html b/zutil_8h_source.html
index c41adf2ce..c41adf2ce 100644
--- a/html/zutil_8h_source.html
+++ b/zutil_8h_source.html